oracle_test_d21.elf: file format elf32-littlearm Sections: Idx Name Size VMA LMA File off Algn 0 .text 0002b158 00000000 00000000 00010000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .ARM.exidx 00000008 0002b158 0002b158 0003b158 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .relocate 000000d4 20000000 0002b160 00040000 2**2 CONTENTS, ALLOC, LOAD, CODE 3 .bss 00004dbc 200000d8 0002b238 000400d4 2**3 ALLOC 4 .stack 00002004 20004e94 0002fff4 000400d4 2**0 ALLOC 5 .ARM.attributes 00000028 00000000 00000000 000400d4 2**0 CONTENTS, READONLY 6 .comment 00000059 00000000 00000000 000400fc 2**0 CONTENTS, READONLY 7 .debug_info 0009bb94 00000000 00000000 00040155 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_abbrev 0000cd1f 00000000 00000000 000dbce9 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_aranges 00001a48 00000000 00000000 000e8a08 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_ranges 000036a8 00000000 00000000 000ea450 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_macro 00027531 00000000 00000000 000edaf8 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_line 00035960 00000000 00000000 00115029 2**0 CONTENTS, READONLY, DEBUGGING 13 .debug_str 000a0c98 00000000 00000000 0014a989 2**0 CONTENTS, READONLY, DEBUGGING 14 .debug_frame 00005168 00000000 00000000 001eb624 2**2 CONTENTS, READONLY, DEBUGGING 15 .debug_loc 000449b9 00000000 00000000 001f078c 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 : /********************** * GLOBAL FUNCTIONS **********************/ void _lv_gc_clear_roots(void) { 0: 98 6e 00 20 a5 16 00 00 a1 16 00 00 a1 16 00 00 .n. ............ ... #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: a1 16 00 00 00 00 00 00 00 00 00 00 a1 16 00 00 ................ 3c: 59 01 00 00 a1 16 00 00 a1 16 00 00 a1 16 00 00 Y............... 4c: a1 16 00 00 a1 16 00 00 a1 16 00 00 a1 16 00 00 ................ 5c: a1 16 00 00 a1 16 00 00 71 0d 00 00 81 0d 00 00 ........q....... } 6c: 91 0d 00 00 a1 0d 00 00 b1 0d 00 00 c1 0d 00 00 ................ 7c: a1 16 00 00 a1 16 00 00 a1 16 00 00 a1 16 00 00 ................ 8c: a1 16 00 00 a1 16 00 00 a1 16 00 00 a1 16 00 00 ................ 9c: a1 16 00 00 a1 16 00 00 a1 16 00 00 a1 16 00 00 ................ ac: a1 16 00 00 00 00 00 00 ........ 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: 200000d8 .word 0x200000d8 d4: 00000000 .word 0x00000000 d8: 0002b160 .word 0x0002b160 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: 200000dc .word 0x200000dc 108: 0002b160 .word 0x0002b160 10c: 0002b160 .word 0x0002b160 110: 00000000 .word 0x00000000 00000114 : #include "p_usart.h" #include "lvgl.h" static volatile uint64_t sys_time = 0; char sys_time_str[P_SYS_TIME_STR_MAX_LEN]; void p_time_init(void) { 114: b510 push {r4, lr} memset(sys_time_str, '\0', P_SYS_TIME_STR_MAX_LEN); 116: 2240 movs r2, #64 ; 0x40 118: 2100 movs r1, #0 11a: 480a ldr r0, [pc, #40] ; (144 ) 11c: 4b0a ldr r3, [pc, #40] ; (148 ) 11e: 4798 blx r3 // Configure SysTick to trigger every millisecond using the CPU Clock SysTick->CTRL = 0; // Disable SysTick 120: 4a0a ldr r2, [pc, #40] ; (14c ) 122: 2000 movs r0, #0 124: 6010 str r0, [r2, #0] SysTick->LOAD = 7999UL; // Set reload register for 1mS interrupts 126: 4b0a ldr r3, [pc, #40] ; (150 ) 128: 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))) | 12a: 4c0a ldr r4, [pc, #40] ; (154 ) 12c: 6a23 ldr r3, [r4, #32] 12e: 021b lsls r3, r3, #8 130: 0a1b lsrs r3, r3, #8 132: 21c0 movs r1, #192 ; 0xc0 134: 0609 lsls r1, r1, #24 136: 430b orrs r3, r1 138: 6223 str r3, [r4, #32] NVIC_SetPriority(SysTick_IRQn, 3); // Set interrupt priority to least urgency SysTick->VAL = 0; // Reset the SysTick counter value 13a: 6090 str r0, [r2, #8] SysTick->CTRL = 0x00000007; // Enable SysTick, Enable SysTick Exceptions, Use CPU Clock 13c: 2307 movs r3, #7 13e: 6013 str r3, [r2, #0] NVIC_EnableIRQ(SysTick_IRQn); // Enable SysTick Interrupt } 140: bd10 pop {r4, pc} 142: 46c0 nop ; (mov r8, r8) 144: 20004cb0 .word 0x20004cb0 148: 0001c671 .word 0x0001c671 14c: e000e010 .word 0xe000e010 150: 00001f3f .word 0x00001f3f 154: e000ed00 .word 0xe000ed00 00000158 : void SysTick_Handler(void) { 158: b570 push {r4, r5, r6, lr} sys_time++; 15a: 4906 ldr r1, [pc, #24] ; (174 ) 15c: 680a ldr r2, [r1, #0] 15e: 684b ldr r3, [r1, #4] 160: 2401 movs r4, #1 162: 2500 movs r5, #0 164: 1912 adds r2, r2, r4 166: 416b adcs r3, r5 168: 600a str r2, [r1, #0] 16a: 604b str r3, [r1, #4] lv_tick_inc(1); 16c: 2001 movs r0, #1 16e: 4b02 ldr r3, [pc, #8] ; (178 ) 170: 4798 blx r3 } 172: bd70 pop {r4, r5, r6, pc} 174: 200000f8 .word 0x200000f8 178: 00010edd .word 0x00010edd 0000017c : const char* p_get_time_str(void) { 17c: b5f0 push {r4, r5, r6, r7, lr} 17e: 46de mov lr, fp 180: 464f mov r7, r9 182: 4646 mov r6, r8 184: b5c0 push {r6, r7, lr} 186: b086 sub sp, #24 uint16_t millis = sys_time % 1000; 188: 4b21 ldr r3, [pc, #132] ; (210 ) 18a: 681e ldr r6, [r3, #0] 18c: 685f ldr r7, [r3, #4] // remove millis portion uint32_t current_time = sys_time / 1000; 18e: 6818 ldr r0, [r3, #0] 190: 6859 ldr r1, [r3, #4] 192: 4b20 ldr r3, [pc, #128] ; (214 ) 194: 469b mov fp, r3 196: 22fa movs r2, #250 ; 0xfa 198: 0092 lsls r2, r2, #2 19a: 2300 movs r3, #0 19c: 47d8 blx fp 19e: 0004 movs r4, r0 uint8_t hour = ((current_time % 86400UL) / 3600); // 86400 seconds per day uint8_t minute = ((current_time % 3600) / 60); uint8_t _sec = (current_time % 60); memset(sys_time_str, '\0', P_SYS_TIME_STR_MAX_LEN); 1a0: 2240 movs r2, #64 ; 0x40 1a2: 2100 movs r1, #0 1a4: 481c ldr r0, [pc, #112] ; (218 ) 1a6: 4b1d ldr r3, [pc, #116] ; (21c ) 1a8: 4798 blx r3 uint8_t hour = ((current_time % 86400UL) / 3600); // 86400 seconds per day 1aa: 4b1d ldr r3, [pc, #116] ; (220 ) 1ac: 4699 mov r9, r3 1ae: 491d ldr r1, [pc, #116] ; (224 ) 1b0: 9405 str r4, [sp, #20] 1b2: 0020 movs r0, r4 1b4: 4798 blx r3 1b6: 0008 movs r0, r1 1b8: 4d1b ldr r5, [pc, #108] ; (228 ) 1ba: 21e1 movs r1, #225 ; 0xe1 1bc: 0109 lsls r1, r1, #4 1be: 47a8 blx r5 snprintf(sys_time_str, P_SYS_TIME_STR_MAX_LEN, "[%02u:%02u:%02u:%03u]", 1c0: 24ff movs r4, #255 ; 0xff 1c2: 4020 ands r0, r4 1c4: 4680 mov r8, r0 uint16_t millis = sys_time % 1000; 1c6: 22fa movs r2, #250 ; 0xfa 1c8: 0092 lsls r2, r2, #2 1ca: 2300 movs r3, #0 1cc: 0030 movs r0, r6 1ce: 0039 movs r1, r7 1d0: 47d8 blx fp snprintf(sys_time_str, P_SYS_TIME_STR_MAX_LEN, "[%02u:%02u:%02u:%03u]", 1d2: b292 uxth r2, r2 1d4: 9202 str r2, [sp, #8] uint8_t _sec = (current_time % 60); 1d6: 213c movs r1, #60 ; 0x3c 1d8: 9e05 ldr r6, [sp, #20] 1da: 0030 movs r0, r6 1dc: 47c8 blx r9 snprintf(sys_time_str, P_SYS_TIME_STR_MAX_LEN, "[%02u:%02u:%02u:%03u]", 1de: 4021 ands r1, r4 1e0: 9101 str r1, [sp, #4] uint8_t minute = ((current_time % 3600) / 60); 1e2: 21e1 movs r1, #225 ; 0xe1 1e4: 0109 lsls r1, r1, #4 1e6: 0030 movs r0, r6 1e8: 47c8 blx r9 1ea: 0008 movs r0, r1 1ec: 213c movs r1, #60 ; 0x3c 1ee: 47a8 blx r5 snprintf(sys_time_str, P_SYS_TIME_STR_MAX_LEN, "[%02u:%02u:%02u:%03u]", 1f0: 4004 ands r4, r0 1f2: 9400 str r4, [sp, #0] 1f4: 4643 mov r3, r8 1f6: 4a0d ldr r2, [pc, #52] ; (22c ) 1f8: 2140 movs r1, #64 ; 0x40 1fa: 4807 ldr r0, [pc, #28] ; (218 ) 1fc: 4c0c ldr r4, [pc, #48] ; (230 ) 1fe: 47a0 blx r4 hour, minute, _sec, millis); return sys_time_str; } 200: 4805 ldr r0, [pc, #20] ; (218 ) 202: b006 add sp, #24 204: bc1c pop {r2, r3, r4} 206: 4690 mov r8, r2 208: 4699 mov r9, r3 20a: 46a3 mov fp, r4 20c: bdf0 pop {r4, r5, r6, r7, pc} 20e: 46c0 nop ; (mov r8, r8) 210: 200000f8 .word 0x200000f8 214: 0001c391 .word 0x0001c391 218: 20004cb0 .word 0x20004cb0 21c: 0001c671 .word 0x0001c671 220: 0001c1b1 .word 0x0001c1b1 224: 00015180 .word 0x00015180 228: 0001c0a5 .word 0x0001c0a5 22c: 0001cf4c .word 0x0001cf4c 230: 0001c681 .word 0x0001c681 00000234 : #include "hornet.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) { 234: b530 push {r4, r5, lr} 236: b08d sub sp, #52 ; 0x34 system_init(); 238: 4b22 ldr r3, [pc, #136] ; (2c4 ) 23a: 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(); 23c: 2201 movs r2, #1 23e: 4b22 ldr r3, [pc, #136] ; (2c8 ) 240: 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"); 242: f3bf 8f5f dmb sy __ASM volatile ("cpsie i" : : : "memory"); 246: b662 cpsie i system_interrupt_enable_global(); p_usart_init(); 248: 4b20 ldr r3, [pc, #128] ; (2cc ) 24a: 4798 blx r3 p_i2c_init(); 24c: 4b20 ldr r3, [pc, #128] ; (2d0 ) 24e: 4798 blx r3 p_gpio_init(); 250: 4b20 ldr r3, [pc, #128] ; (2d4 ) 252: 4798 blx r3 p_time_init(); 254: 4b20 ldr r3, [pc, #128] ; (2d8 ) 256: 4798 blx r3 lv_init(); 258: 4b20 ldr r3, [pc, #128] ; (2dc ) 25a: 4798 blx r3 ssd1963_init(); 25c: 4b20 ldr r3, [pc, #128] ; (2e0 ) 25e: 4798 blx r3 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ 260: 4c20 ldr r4, [pc, #128] ; (2e4 ) 262: 2396 movs r3, #150 ; 0x96 264: 015b lsls r3, r3, #5 266: 2200 movs r2, #0 268: 491f ldr r1, [pc, #124] ; (2e8 ) 26a: 0020 movs r0, r4 26c: 4d1f ldr r5, [pc, #124] ; (2ec ) 26e: 47a8 blx r5 lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ 270: a801 add r0, sp, #4 272: 4b1f ldr r3, [pc, #124] ; (2f0 ) 274: 4798 blx r3 disp_drv.flush_cb = ssd1963_flush; /*Set your driver function*/ 276: 4b1f ldr r3, [pc, #124] ; (2f4 ) 278: 9304 str r3, [sp, #16] disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/ 27a: 9402 str r4, [sp, #8] lv_disp_drv_register(&disp_drv); /*Finally register the driver*/ 27c: a801 add r0, sp, #4 27e: 4b1e ldr r3, [pc, #120] ; (2f8 ) 280: 4798 blx r3 lv_obj_t* scr = lv_disp_get_scr_act(NULL); 282: 2000 movs r0, #0 284: 4b1d ldr r3, [pc, #116] ; (2fc ) 286: 4798 blx r3 288: 0004 movs r4, r0 lv_obj_t* hornet_image = lv_img_create(scr, NULL); 28a: 2100 movs r1, #0 28c: 4b1c ldr r3, [pc, #112] ; (300 ) 28e: 4798 blx r3 290: 0005 movs r5, r0 lv_img_set_src(hornet_image, &hornet); 292: 491c ldr r1, [pc, #112] ; (304 ) 294: 4b1c ldr r3, [pc, #112] ; (308 ) 296: 4798 blx r3 lv_obj_set_pos(hornet_image, 0, 0); 298: 2200 movs r2, #0 29a: 2100 movs r1, #0 29c: 0028 movs r0, r5 29e: 4d1b ldr r5, [pc, #108] ; (30c ) 2a0: 47a8 blx r5 lv_obj_t* random_text = lv_label_create(scr, NULL); 2a2: 2100 movs r1, #0 2a4: 0020 movs r0, r4 2a6: 4b1a ldr r3, [pc, #104] ; (310 ) 2a8: 4798 blx r3 2aa: 0004 movs r4, r0 lv_obj_set_pos(random_text, 90, 35); 2ac: 2223 movs r2, #35 ; 0x23 2ae: 215a movs r1, #90 ; 0x5a 2b0: 47a8 blx r5 lv_label_set_text(random_text, "Hello World"); 2b2: 4918 ldr r1, [pc, #96] ; (314 ) 2b4: 0020 movs r0, r4 2b6: 4b18 ldr r3, [pc, #96] ; (318 ) 2b8: 4798 blx r3 p_debug_start_service(); 2ba: 4b18 ldr r3, [pc, #96] ; (31c ) 2bc: 4798 blx r3 } 2be: b00d add sp, #52 ; 0x34 2c0: bd30 pop {r4, r5, pc} 2c2: 46c0 nop ; (mov r8, r8) 2c4: 00001675 .word 0x00001675 2c8: 2000000c .word 0x2000000c 2cc: 0001bf35 .word 0x0001bf35 2d0: 0001bec5 .word 0x0001bec5 2d4: 0001bdfd .word 0x0001bdfd 2d8: 00000115 .word 0x00000115 2dc: 00001d65 .word 0x00001d65 2e0: 0001af51 .word 0x0001af51 2e4: 20002680 .word 0x20002680 2e8: 20000100 .word 0x20000100 2ec: 00010c01 .word 0x00010c01 2f0: 00010b9d .word 0x00010b9d 2f4: 0001badd .word 0x0001badd 2f8: 00010c21 .word 0x00010c21 2fc: 00001845 .word 0x00001845 300: 0001955d .word 0x0001955d 304: 0001cf64 .word 0x0001cf64 308: 000192c9 .word 0x000192c9 30c: 00002979 .word 0x00002979 310: 0001a8c5 .word 0x0001a8c5 314: 000254cc .word 0x000254cc 318: 0001a59d .word 0x0001a59d 31c: 0001c079 .word 0x0001c079 00000320 : void oracle_service(void) { 320: b510 push {r4, lr} delay_ms(1); 322: 2000 movs r0, #0 324: 4b08 ldr r3, [pc, #32] ; (348 ) 326: 4798 blx r3 328: 0002 movs r2, r0 32a: 2300 movs r3, #0 32c: 4807 ldr r0, [pc, #28] ; (34c ) 32e: 2100 movs r1, #0 330: 1880 adds r0, r0, r2 332: 4159 adcs r1, r3 334: 4a06 ldr r2, [pc, #24] ; (350 ) 336: 2300 movs r3, #0 338: 4c06 ldr r4, [pc, #24] ; (354 ) 33a: 47a0 blx r4 33c: 4b06 ldr r3, [pc, #24] ; (358 ) 33e: 4798 blx r3 lv_task_handler(); 340: 4b06 ldr r3, [pc, #24] ; (35c ) 342: 4798 blx r3 344: bd10 pop {r4, pc} 346: 46c0 nop ; (mov r8, r8) 348: 000013fd .word 0x000013fd 34c: 00001b57 .word 0x00001b57 350: 00001b58 .word 0x00001b58 354: 0001c391 .word 0x0001c391 358: 20000001 .word 0x20000001 35c: 000136a1 .word 0x000136a1 00000360 : /** * \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) { 360: b5f0 push {r4, r5, r6, r7, lr} 362: 46de mov lr, fp 364: 4657 mov r7, sl 366: 464e mov r6, r9 368: 4645 mov r5, r8 36a: b5e0 push {r5, r6, r7, lr} 36c: b087 sub sp, #28 36e: 4680 mov r8, r0 370: 9104 str r1, [sp, #16] 372: 0016 movs r6, r2 374: 001f movs r7, r3 int32_t i; uint64_t q = 0, r = 0, bit_shift; 376: 2200 movs r2, #0 378: 2300 movs r3, #0 37a: 2100 movs r1, #0 37c: 468b mov fp, r1 for (i = 63; i >= 0; i--) { 37e: 243f movs r4, #63 ; 0x3f bit_shift = (uint64_t)1 << i; 380: 2001 movs r0, #1 382: 0021 movs r1, r4 384: 9600 str r6, [sp, #0] 386: 9701 str r7, [sp, #4] 388: 465c mov r4, fp 38a: 9403 str r4, [sp, #12] 38c: 4644 mov r4, r8 38e: 9405 str r4, [sp, #20] 390: e013 b.n 3ba 392: 2420 movs r4, #32 394: 1a64 subs r4, r4, r1 396: 0005 movs r5, r0 398: 40e5 lsrs r5, r4 39a: 46a8 mov r8, r5 39c: e014 b.n 3c8 if (n & bit_shift) { r |= 0x01; } if (r >= d) { r = r - d; 39e: 9c00 ldr r4, [sp, #0] 3a0: 9d01 ldr r5, [sp, #4] 3a2: 1b12 subs r2, r2, r4 3a4: 41ab sbcs r3, r5 q |= bit_shift; 3a6: 465c mov r4, fp 3a8: 464d mov r5, r9 3aa: 432c orrs r4, r5 3ac: 46a3 mov fp, r4 3ae: 9c03 ldr r4, [sp, #12] 3b0: 4645 mov r5, r8 3b2: 432c orrs r4, r5 3b4: 9403 str r4, [sp, #12] for (i = 63; i >= 0; i--) { 3b6: 3901 subs r1, #1 3b8: d325 bcc.n 406 bit_shift = (uint64_t)1 << i; 3ba: 2420 movs r4, #32 3bc: 4264 negs r4, r4 3be: 190c adds r4, r1, r4 3c0: d4e7 bmi.n 392 3c2: 0005 movs r5, r0 3c4: 40a5 lsls r5, r4 3c6: 46a8 mov r8, r5 3c8: 0004 movs r4, r0 3ca: 408c lsls r4, r1 3cc: 46a1 mov r9, r4 r = r << 1; 3ce: 1892 adds r2, r2, r2 3d0: 415b adcs r3, r3 3d2: 0014 movs r4, r2 3d4: 001d movs r5, r3 if (n & bit_shift) { 3d6: 9e05 ldr r6, [sp, #20] 3d8: 464f mov r7, r9 3da: 403e ands r6, r7 3dc: 46b4 mov ip, r6 3de: 9e04 ldr r6, [sp, #16] 3e0: 4647 mov r7, r8 3e2: 403e ands r6, r7 3e4: 46b2 mov sl, r6 3e6: 4666 mov r6, ip 3e8: 4657 mov r7, sl 3ea: 433e orrs r6, r7 3ec: d003 beq.n 3f6 r |= 0x01; 3ee: 0006 movs r6, r0 3f0: 4326 orrs r6, r4 3f2: 0032 movs r2, r6 3f4: 002b movs r3, r5 if (r >= d) { 3f6: 9c00 ldr r4, [sp, #0] 3f8: 9d01 ldr r5, [sp, #4] 3fa: 429d cmp r5, r3 3fc: d8db bhi.n 3b6 3fe: d1ce bne.n 39e 400: 4294 cmp r4, r2 402: d8d8 bhi.n 3b6 404: e7cb b.n 39e 406: 9b03 ldr r3, [sp, #12] } } return q; } 408: 4658 mov r0, fp 40a: 0019 movs r1, r3 40c: b007 add sp, #28 40e: bc3c pop {r2, r3, r4, r5} 410: 4690 mov r8, r2 412: 4699 mov r9, r3 414: 46a2 mov sl, r4 416: 46ab mov fp, r5 418: bdf0 pop {r4, r5, r6, r7, pc} 0000041a <_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) { 41a: 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)) { 41c: 0849 lsrs r1, r1, #1 /* Return with error code */ return STATUS_ERR_BAUDRATE_UNAVAILABLE; 41e: 2340 movs r3, #64 ; 0x40 420: 2400 movs r4, #0 if (baudrate > (external_clock / 2)) { 422: 4281 cmp r1, r0 424: d202 bcs.n 42c <_sercom_get_sync_baud_val+0x12> return STATUS_ERR_BAUDRATE_UNAVAILABLE; } else { *baudvalue = baud_calculated; return STATUS_OK; } } 426: 0018 movs r0, r3 428: bd10 pop {r4, pc} baud_calculated++; 42a: 001c movs r4, r3 clock_value = clock_value - baudrate; 42c: 1a09 subs r1, r1, r0 baud_calculated++; 42e: 1c63 adds r3, r4, #1 430: b29b uxth r3, r3 while (clock_value >= baudrate) { 432: 4288 cmp r0, r1 434: d9f9 bls.n 42a <_sercom_get_sync_baud_val+0x10> return STATUS_ERR_BAUDRATE_UNAVAILABLE; 436: 2340 movs r3, #64 ; 0x40 if (baud_calculated > 0xFF) { 438: 2cff cmp r4, #255 ; 0xff 43a: d8f4 bhi.n 426 <_sercom_get_sync_baud_val+0xc> *baudvalue = baud_calculated; 43c: 8014 strh r4, [r2, #0] return STATUS_OK; 43e: 2300 movs r3, #0 440: e7f1 b.n 426 <_sercom_get_sync_baud_val+0xc> ... 00000444 <_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) { 444: b5f0 push {r4, r5, r6, r7, lr} 446: b083 sub sp, #12 448: 000f movs r7, r1 44a: 0016 movs r6, r2 44c: aa08 add r2, sp, #32 44e: 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) { 450: 0004 movs r4, r0 452: 434c muls r4, r1 /* Return with error code */ return STATUS_ERR_BAUDRATE_UNAVAILABLE; 454: 2240 movs r2, #64 ; 0x40 if ((baudrate * sample_num) > peripheral_clock) { 456: 42bc cmp r4, r7 458: d902 bls.n 460 <_sercom_get_async_baud_val+0x1c> baud_calculated = baud_int | (baud_fp << 13); } *baudval = baud_calculated; return STATUS_OK; } 45a: 0010 movs r0, r2 45c: b003 add sp, #12 45e: bdf0 pop {r4, r5, r6, r7, pc} if(mode == SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC) { 460: 2b00 cmp r3, #0 462: d114 bne.n 48e <_sercom_get_async_baud_val+0x4a> temp1 = ((sample_num * (uint64_t)baudrate) << SHIFT); 464: 0002 movs r2, r0 466: 0008 movs r0, r1 468: 2100 movs r1, #0 46a: 4c19 ldr r4, [pc, #100] ; (4d0 <_sercom_get_async_baud_val+0x8c>) 46c: 47a0 blx r4 46e: 0001 movs r1, r0 ratio = long_division(temp1, peripheral_clock); 470: 003a movs r2, r7 472: 2300 movs r3, #0 474: 2000 movs r0, #0 476: 4c17 ldr r4, [pc, #92] ; (4d4 <_sercom_get_async_baud_val+0x90>) 478: 47a0 blx r4 scale = ((uint64_t)1 << SHIFT) - ratio; 47a: 2200 movs r2, #0 47c: 2301 movs r3, #1 47e: 1a12 subs r2, r2, r0 480: 418b sbcs r3, r1 baud_calculated = (65536 * scale) >> SHIFT; 482: 0c12 lsrs r2, r2, #16 484: 041b lsls r3, r3, #16 486: 431a orrs r2, r3 *baudval = baud_calculated; 488: 8032 strh r2, [r6, #0] return STATUS_OK; 48a: 2200 movs r2, #0 48c: e7e5 b.n 45a <_sercom_get_async_baud_val+0x16> uint64_t baud_calculated = 0; 48e: 2200 movs r2, #0 } else if(mode == SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL) { 490: 2b01 cmp r3, #1 492: d1f9 bne.n 488 <_sercom_get_async_baud_val+0x44> temp1 = ((uint64_t)baudrate * sample_num); 494: 000a movs r2, r1 496: 2300 movs r3, #0 498: 2100 movs r1, #0 49a: 4c0d ldr r4, [pc, #52] ; (4d0 <_sercom_get_async_baud_val+0x8c>) 49c: 47a0 blx r4 49e: 0002 movs r2, r0 4a0: 000b movs r3, r1 4a2: 9200 str r2, [sp, #0] 4a4: 9301 str r3, [sp, #4] baud_int = long_division( peripheral_clock, temp1); 4a6: 0038 movs r0, r7 4a8: 2100 movs r1, #0 4aa: 4c0a ldr r4, [pc, #40] ; (4d4 <_sercom_get_async_baud_val+0x90>) 4ac: 47a0 blx r4 4ae: 0005 movs r5, r0 if(baud_int > BAUD_INT_MAX) { 4b0: 2380 movs r3, #128 ; 0x80 4b2: 019b lsls r3, r3, #6 return STATUS_ERR_BAUDRATE_UNAVAILABLE; 4b4: 2240 movs r2, #64 ; 0x40 if(baud_int > BAUD_INT_MAX) { 4b6: 4298 cmp r0, r3 4b8: d8cf bhi.n 45a <_sercom_get_async_baud_val+0x16> temp1 = long_division( 8 * (uint64_t)peripheral_clock, temp1); 4ba: 0f79 lsrs r1, r7, #29 4bc: 00f8 lsls r0, r7, #3 4be: 9a00 ldr r2, [sp, #0] 4c0: 9b01 ldr r3, [sp, #4] 4c2: 47a0 blx r4 baud_fp = temp1 - 8 * baud_int; 4c4: 00ea lsls r2, r5, #3 4c6: 1a82 subs r2, r0, r2 baud_calculated = baud_int | (baud_fp << 13); 4c8: b2d2 uxtb r2, r2 4ca: 0352 lsls r2, r2, #13 4cc: 432a orrs r2, r5 4ce: e7db b.n 488 <_sercom_get_async_baud_val+0x44> 4d0: 0001c3d1 .word 0x0001c3d1 4d4: 00000361 .word 0x00000361 000004d8 : * forced. */ enum status_code sercom_set_gclk_generator( const enum gclk_generator generator_source, const bool force_change) { 4d8: b510 push {r4, lr} 4da: b082 sub sp, #8 4dc: 0004 movs r4, r0 /* Check if valid option */ if (!_sercom_config.generator_is_set || force_change) { 4de: 4b0e ldr r3, [pc, #56] ; (518 ) 4e0: 781b ldrb r3, [r3, #0] 4e2: 2b00 cmp r3, #0 4e4: d007 beq.n 4f6 4e6: 2900 cmp r1, #0 4e8: d105 bne.n 4f6 /* 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) { 4ea: 4b0b ldr r3, [pc, #44] ; (518 ) 4ec: 785b ldrb r3, [r3, #1] 4ee: 4283 cmp r3, r0 4f0: d010 beq.n 514 /* Return status OK if same config */ return STATUS_OK; } /* Return invalid config to already initialized GCLK */ return STATUS_ERR_ALREADY_INITIALIZED; 4f2: 201d movs r0, #29 4f4: e00c b.n 510 gclk_chan_conf.source_generator = generator_source; 4f6: a901 add r1, sp, #4 4f8: 700c strb r4, [r1, #0] system_gclk_chan_set_config(SERCOM_GCLK_ID, &gclk_chan_conf); 4fa: 2013 movs r0, #19 4fc: 4b07 ldr r3, [pc, #28] ; (51c ) 4fe: 4798 blx r3 system_gclk_chan_enable(SERCOM_GCLK_ID); 500: 2013 movs r0, #19 502: 4b07 ldr r3, [pc, #28] ; (520 ) 504: 4798 blx r3 _sercom_config.generator_source = generator_source; 506: 4b04 ldr r3, [pc, #16] ; (518 ) 508: 705c strb r4, [r3, #1] _sercom_config.generator_is_set = true; 50a: 2201 movs r2, #1 50c: 701a strb r2, [r3, #0] return STATUS_OK; 50e: 2000 movs r0, #0 } 510: b002 add sp, #8 512: bd10 pop {r4, pc} return STATUS_OK; 514: 2000 movs r0, #0 516: e7fb b.n 510 518: 200026a4 .word 0x200026a4 51c: 00001515 .word 0x00001515 520: 00001489 .word 0x00001489 00000524 <_sercom_get_default_pad>: */ uint32_t _sercom_get_default_pad( Sercom *const sercom_module, const uint8_t pad) { switch ((uintptr_t)sercom_module) { 524: 4b40 ldr r3, [pc, #256] ; (628 <_sercom_get_default_pad+0x104>) 526: 4298 cmp r0, r3 528: d031 beq.n 58e <_sercom_get_default_pad+0x6a> 52a: d90a bls.n 542 <_sercom_get_default_pad+0x1e> 52c: 4b3f ldr r3, [pc, #252] ; (62c <_sercom_get_default_pad+0x108>) 52e: 4298 cmp r0, r3 530: d04d beq.n 5ce <_sercom_get_default_pad+0xaa> 532: 4b3f ldr r3, [pc, #252] ; (630 <_sercom_get_default_pad+0x10c>) 534: 4298 cmp r0, r3 536: d05a beq.n 5ee <_sercom_get_default_pad+0xca> 538: 4b3e ldr r3, [pc, #248] ; (634 <_sercom_get_default_pad+0x110>) 53a: 4298 cmp r0, r3 53c: d037 beq.n 5ae <_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; 53e: 2000 movs r0, #0 } 540: 4770 bx lr switch ((uintptr_t)sercom_module) { 542: 4b3d ldr r3, [pc, #244] ; (638 <_sercom_get_default_pad+0x114>) 544: 4298 cmp r0, r3 546: d00c beq.n 562 <_sercom_get_default_pad+0x3e> 548: 4b3c ldr r3, [pc, #240] ; (63c <_sercom_get_default_pad+0x118>) 54a: 4298 cmp r0, r3 54c: d1f7 bne.n 53e <_sercom_get_default_pad+0x1a> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 54e: 2901 cmp r1, #1 550: d017 beq.n 582 <_sercom_get_default_pad+0x5e> 552: 2900 cmp r1, #0 554: d05d beq.n 612 <_sercom_get_default_pad+0xee> 556: 2902 cmp r1, #2 558: d015 beq.n 586 <_sercom_get_default_pad+0x62> 55a: 2903 cmp r1, #3 55c: d015 beq.n 58a <_sercom_get_default_pad+0x66> return 0; 55e: 2000 movs r0, #0 560: e7ee b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 562: 2901 cmp r1, #1 564: d007 beq.n 576 <_sercom_get_default_pad+0x52> 566: 2900 cmp r1, #0 568: d051 beq.n 60e <_sercom_get_default_pad+0xea> 56a: 2902 cmp r1, #2 56c: d005 beq.n 57a <_sercom_get_default_pad+0x56> 56e: 2903 cmp r1, #3 570: d005 beq.n 57e <_sercom_get_default_pad+0x5a> return 0; 572: 2000 movs r0, #0 574: e7e4 b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 576: 4832 ldr r0, [pc, #200] ; (640 <_sercom_get_default_pad+0x11c>) 578: e7e2 b.n 540 <_sercom_get_default_pad+0x1c> 57a: 4832 ldr r0, [pc, #200] ; (644 <_sercom_get_default_pad+0x120>) 57c: e7e0 b.n 540 <_sercom_get_default_pad+0x1c> 57e: 4832 ldr r0, [pc, #200] ; (648 <_sercom_get_default_pad+0x124>) 580: e7de b.n 540 <_sercom_get_default_pad+0x1c> 582: 4832 ldr r0, [pc, #200] ; (64c <_sercom_get_default_pad+0x128>) 584: e7dc b.n 540 <_sercom_get_default_pad+0x1c> 586: 4832 ldr r0, [pc, #200] ; (650 <_sercom_get_default_pad+0x12c>) 588: e7da b.n 540 <_sercom_get_default_pad+0x1c> 58a: 4832 ldr r0, [pc, #200] ; (654 <_sercom_get_default_pad+0x130>) 58c: e7d8 b.n 540 <_sercom_get_default_pad+0x1c> 58e: 2901 cmp r1, #1 590: d007 beq.n 5a2 <_sercom_get_default_pad+0x7e> 592: 2900 cmp r1, #0 594: d03f beq.n 616 <_sercom_get_default_pad+0xf2> 596: 2902 cmp r1, #2 598: d005 beq.n 5a6 <_sercom_get_default_pad+0x82> 59a: 2903 cmp r1, #3 59c: d005 beq.n 5aa <_sercom_get_default_pad+0x86> return 0; 59e: 2000 movs r0, #0 5a0: e7ce b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 5a2: 482d ldr r0, [pc, #180] ; (658 <_sercom_get_default_pad+0x134>) 5a4: e7cc b.n 540 <_sercom_get_default_pad+0x1c> 5a6: 482d ldr r0, [pc, #180] ; (65c <_sercom_get_default_pad+0x138>) 5a8: e7ca b.n 540 <_sercom_get_default_pad+0x1c> 5aa: 482d ldr r0, [pc, #180] ; (660 <_sercom_get_default_pad+0x13c>) 5ac: e7c8 b.n 540 <_sercom_get_default_pad+0x1c> 5ae: 2901 cmp r1, #1 5b0: d007 beq.n 5c2 <_sercom_get_default_pad+0x9e> 5b2: 2900 cmp r1, #0 5b4: d031 beq.n 61a <_sercom_get_default_pad+0xf6> 5b6: 2902 cmp r1, #2 5b8: d005 beq.n 5c6 <_sercom_get_default_pad+0xa2> 5ba: 2903 cmp r1, #3 5bc: d005 beq.n 5ca <_sercom_get_default_pad+0xa6> return 0; 5be: 2000 movs r0, #0 5c0: e7be b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 5c2: 4828 ldr r0, [pc, #160] ; (664 <_sercom_get_default_pad+0x140>) 5c4: e7bc b.n 540 <_sercom_get_default_pad+0x1c> 5c6: 4828 ldr r0, [pc, #160] ; (668 <_sercom_get_default_pad+0x144>) 5c8: e7ba b.n 540 <_sercom_get_default_pad+0x1c> 5ca: 4828 ldr r0, [pc, #160] ; (66c <_sercom_get_default_pad+0x148>) 5cc: e7b8 b.n 540 <_sercom_get_default_pad+0x1c> 5ce: 2901 cmp r1, #1 5d0: d007 beq.n 5e2 <_sercom_get_default_pad+0xbe> 5d2: 2900 cmp r1, #0 5d4: d023 beq.n 61e <_sercom_get_default_pad+0xfa> 5d6: 2902 cmp r1, #2 5d8: d005 beq.n 5e6 <_sercom_get_default_pad+0xc2> 5da: 2903 cmp r1, #3 5dc: d005 beq.n 5ea <_sercom_get_default_pad+0xc6> return 0; 5de: 2000 movs r0, #0 5e0: e7ae b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 5e2: 4823 ldr r0, [pc, #140] ; (670 <_sercom_get_default_pad+0x14c>) 5e4: e7ac b.n 540 <_sercom_get_default_pad+0x1c> 5e6: 4823 ldr r0, [pc, #140] ; (674 <_sercom_get_default_pad+0x150>) 5e8: e7aa b.n 540 <_sercom_get_default_pad+0x1c> 5ea: 4823 ldr r0, [pc, #140] ; (678 <_sercom_get_default_pad+0x154>) 5ec: e7a8 b.n 540 <_sercom_get_default_pad+0x1c> 5ee: 2901 cmp r1, #1 5f0: d007 beq.n 602 <_sercom_get_default_pad+0xde> 5f2: 2900 cmp r1, #0 5f4: d015 beq.n 622 <_sercom_get_default_pad+0xfe> 5f6: 2902 cmp r1, #2 5f8: d005 beq.n 606 <_sercom_get_default_pad+0xe2> 5fa: 2903 cmp r1, #3 5fc: d005 beq.n 60a <_sercom_get_default_pad+0xe6> return 0; 5fe: 2000 movs r0, #0 600: e79e b.n 540 <_sercom_get_default_pad+0x1c> MREPEAT(SERCOM_INST_NUM, _SERCOM_PAD_DEFAULTS_CASE, pad) 602: 481e ldr r0, [pc, #120] ; (67c <_sercom_get_default_pad+0x158>) 604: e79c b.n 540 <_sercom_get_default_pad+0x1c> 606: 481e ldr r0, [pc, #120] ; (680 <_sercom_get_default_pad+0x15c>) 608: e79a b.n 540 <_sercom_get_default_pad+0x1c> 60a: 481e ldr r0, [pc, #120] ; (684 <_sercom_get_default_pad+0x160>) 60c: e798 b.n 540 <_sercom_get_default_pad+0x1c> 60e: 481e ldr r0, [pc, #120] ; (688 <_sercom_get_default_pad+0x164>) 610: e796 b.n 540 <_sercom_get_default_pad+0x1c> 612: 2003 movs r0, #3 614: e794 b.n 540 <_sercom_get_default_pad+0x1c> 616: 481d ldr r0, [pc, #116] ; (68c <_sercom_get_default_pad+0x168>) 618: e792 b.n 540 <_sercom_get_default_pad+0x1c> 61a: 481d ldr r0, [pc, #116] ; (690 <_sercom_get_default_pad+0x16c>) 61c: e790 b.n 540 <_sercom_get_default_pad+0x1c> 61e: 481d ldr r0, [pc, #116] ; (694 <_sercom_get_default_pad+0x170>) 620: e78e b.n 540 <_sercom_get_default_pad+0x1c> 622: 481d ldr r0, [pc, #116] ; (698 <_sercom_get_default_pad+0x174>) 624: e78c b.n 540 <_sercom_get_default_pad+0x1c> 626: 46c0 nop ; (mov r8, r8) 628: 42001000 .word 0x42001000 62c: 42001800 .word 0x42001800 630: 42001c00 .word 0x42001c00 634: 42001400 .word 0x42001400 638: 42000800 .word 0x42000800 63c: 42000c00 .word 0x42000c00 640: 00050003 .word 0x00050003 644: 00060003 .word 0x00060003 648: 00070003 .word 0x00070003 64c: 00010003 .word 0x00010003 650: 001e0003 .word 0x001e0003 654: 001f0003 .word 0x001f0003 658: 00090003 .word 0x00090003 65c: 000a0003 .word 0x000a0003 660: 000b0003 .word 0x000b0003 664: 00110003 .word 0x00110003 668: 00120003 .word 0x00120003 66c: 00130003 .word 0x00130003 670: 000d0003 .word 0x000d0003 674: 000e0003 .word 0x000e0003 678: 000f0003 .word 0x000f0003 67c: 00170003 .word 0x00170003 680: 00180003 .word 0x00180003 684: 00190003 .word 0x00190003 688: 00040003 .word 0x00040003 68c: 00080003 .word 0x00080003 690: 00100003 .word 0x00100003 694: 000c0003 .word 0x000c0003 698: 00160003 .word 0x00160003 0000069c <_sercom_get_sercom_inst_index>: * * \return Index of given instance. */ uint8_t _sercom_get_sercom_inst_index( Sercom *const sercom_instance) { 69c: b530 push {r4, r5, lr} 69e: b087 sub sp, #28 /* Save all available SERCOM instances for compare */ Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; 6a0: 4b0b ldr r3, [pc, #44] ; (6d0 <_sercom_get_sercom_inst_index+0x34>) 6a2: 466a mov r2, sp 6a4: cb32 ldmia r3!, {r1, r4, r5} 6a6: c232 stmia r2!, {r1, r4, r5} 6a8: cb32 ldmia r3!, {r1, r4, r5} 6aa: 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]) { 6ac: 9b00 ldr r3, [sp, #0] 6ae: 4283 cmp r3, r0 6b0: d00b beq.n 6ca <_sercom_get_sercom_inst_index+0x2e> 6b2: 2301 movs r3, #1 6b4: 009a lsls r2, r3, #2 6b6: 4669 mov r1, sp 6b8: 5852 ldr r2, [r2, r1] 6ba: 4282 cmp r2, r0 6bc: d006 beq.n 6cc <_sercom_get_sercom_inst_index+0x30> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 6be: 3301 adds r3, #1 6c0: 2b06 cmp r3, #6 6c2: d1f7 bne.n 6b4 <_sercom_get_sercom_inst_index+0x18> } } /* Invalid data given */ Assert(false); return 0; 6c4: 2000 movs r0, #0 } 6c6: b007 add sp, #28 6c8: bd30 pop {r4, r5, pc} for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { 6ca: 2300 movs r3, #0 return i; 6cc: b2d8 uxtb r0, r3 6ce: e7fa b.n 6c6 <_sercom_get_sercom_inst_index+0x2a> 6d0: 000254d8 .word 0x000254d8 000006d4 : */ enum status_code usart_init( struct usart_module *const module, Sercom *const hw, const struct usart_config *const config) { 6d4: b5f0 push {r4, r5, r6, r7, lr} 6d6: 46de mov lr, fp 6d8: 4657 mov r7, sl 6da: 464e mov r6, r9 6dc: 4645 mov r5, r8 6de: b5e0 push {r5, r6, r7, lr} 6e0: b091 sub sp, #68 ; 0x44 6e2: 0005 movs r5, r0 6e4: 000c movs r4, r1 6e6: 0016 movs r6, r2 Assert(config); enum status_code status_code = STATUS_OK; /* Assign module pointer to software instance struct */ module->hw = hw; 6e8: 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); 6ea: 0008 movs r0, r1 6ec: 4bba ldr r3, [pc, #744] ; (9d8 ) 6ee: 4798 blx r3 6f0: 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) { 6f2: 6823 ldr r3, [r4, #0] /* The module is busy resetting itself */ return STATUS_BUSY; 6f4: 2005 movs r0, #5 if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_SWRST) { 6f6: 07db lsls r3, r3, #31 6f8: d506 bpl.n 708 _sercom_set_handler(instance_index, _usart_interrupt_handler); _sercom_instances[instance_index] = module; #endif return status_code; } 6fa: b011 add sp, #68 ; 0x44 6fc: bc3c pop {r2, r3, r4, r5} 6fe: 4690 mov r8, r2 700: 4699 mov r9, r3 702: 46a2 mov sl, r4 704: 46ab mov fp, r5 706: bdf0 pop {r4, r5, r6, r7, pc} if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_ENABLE) { 708: 6823 ldr r3, [r4, #0] return STATUS_ERR_DENIED; 70a: 3017 adds r0, #23 if (usart_hw->CTRLA.reg & SERCOM_USART_CTRLA_ENABLE) { 70c: 079b lsls r3, r3, #30 70e: d4f4 bmi.n 6fa case SYSTEM_CLOCK_APB_APBB: PM->APBBMASK.reg |= mask; break; case SYSTEM_CLOCK_APB_APBC: PM->APBCMASK.reg |= mask; 710: 49b2 ldr r1, [pc, #712] ; (9dc ) 712: 6a08 ldr r0, [r1, #32] pm_index = sercom_index + PM_APBCMASK_SERCOM0_Pos; 714: 1c97 adds r7, r2, #2 system_apb_clock_set_mask(SYSTEM_CLOCK_APB_APBC, 1 << pm_index); 716: 2301 movs r3, #1 718: 40bb lsls r3, r7 71a: 4303 orrs r3, r0 71c: 620b str r3, [r1, #32] gclk_chan_conf.source_generator = config->generator_source; 71e: a90f add r1, sp, #60 ; 0x3c 720: 272d movs r7, #45 ; 0x2d 722: 5df3 ldrb r3, [r6, r7] 724: 700b strb r3, [r1, #0] gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; 726: 3214 adds r2, #20 system_gclk_chan_set_config(gclk_index, &gclk_chan_conf); 728: b2d3 uxtb r3, r2 72a: 9302 str r3, [sp, #8] 72c: 0018 movs r0, r3 72e: 4bac ldr r3, [pc, #688] ; (9e0 ) 730: 4798 blx r3 system_gclk_chan_enable(gclk_index); 732: 9802 ldr r0, [sp, #8] 734: 4bab ldr r3, [pc, #684] ; (9e4 ) 736: 4798 blx r3 sercom_set_gclk_generator(config->generator_source, false); 738: 5df0 ldrb r0, [r6, r7] 73a: 2100 movs r1, #0 73c: 4baa ldr r3, [pc, #680] ; (9e8 ) 73e: 4798 blx r3 module->character_size = config->character_size; 740: 7af3 ldrb r3, [r6, #11] 742: 716b strb r3, [r5, #5] module->receiver_enabled = config->receiver_enable; 744: 2324 movs r3, #36 ; 0x24 746: 5cf3 ldrb r3, [r6, r3] 748: 71ab strb r3, [r5, #6] module->transmitter_enabled = config->transmitter_enable; 74a: 2325 movs r3, #37 ; 0x25 74c: 5cf3 ldrb r3, [r6, r3] 74e: 71eb strb r3, [r5, #7] module->lin_slave_enabled = config->lin_slave_enable; 750: 7ef3 ldrb r3, [r6, #27] 752: 722b strb r3, [r5, #8] module->start_frame_detection_enabled = config->start_frame_detection_enable; 754: 7f33 ldrb r3, [r6, #28] 756: 726b strb r3, [r5, #9] SercomUsart *const usart_hw = &(module->hw->USART); 758: 682b ldr r3, [r5, #0] 75a: 4698 mov r8, r3 uint32_t sercom_index = _sercom_get_sercom_inst_index(module->hw); 75c: 0018 movs r0, r3 75e: 4b9e ldr r3, [pc, #632] ; (9d8 ) 760: 4798 blx r3 gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; 762: 3014 adds r0, #20 uint16_t baud = 0; 764: 2200 movs r2, #0 766: 230e movs r3, #14 768: a906 add r1, sp, #24 76a: 468c mov ip, r1 76c: 4463 add r3, ip 76e: 801a strh r2, [r3, #0] switch (config->sample_rate) { 770: 8a32 ldrh r2, [r6, #16] 772: 9202 str r2, [sp, #8] 774: 2380 movs r3, #128 ; 0x80 776: 01db lsls r3, r3, #7 778: 429a cmp r2, r3 77a: d100 bne.n 77e 77c: e09a b.n 8b4 77e: d90f bls.n 7a0 780: 23c0 movs r3, #192 ; 0xc0 782: 01db lsls r3, r3, #7 784: 9a02 ldr r2, [sp, #8] 786: 429a cmp r2, r3 788: d100 bne.n 78c 78a: e08e b.n 8aa 78c: 2380 movs r3, #128 ; 0x80 78e: 021b lsls r3, r3, #8 790: 429a cmp r2, r3 792: d000 beq.n 796 794: e11b b.n 9ce sample_num = SERCOM_ASYNC_SAMPLE_NUM_3; 796: 2303 movs r3, #3 798: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 79a: 2300 movs r3, #0 79c: 9307 str r3, [sp, #28] 79e: e008 b.n 7b2 switch (config->sample_rate) { 7a0: 2380 movs r3, #128 ; 0x80 7a2: 019b lsls r3, r3, #6 7a4: 429a cmp r2, r3 7a6: d000 beq.n 7aa 7a8: e111 b.n 9ce sample_num = SERCOM_ASYNC_SAMPLE_NUM_16; 7aa: 2310 movs r3, #16 7ac: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL; 7ae: 3b0f subs r3, #15 7b0: 9307 str r3, [sp, #28] ctrla = (uint32_t)config->data_order | 7b2: 6833 ldr r3, [r6, #0] 7b4: 9305 str r3, [sp, #20] (uint32_t)config->mux_setting | 7b6: 68f3 ldr r3, [r6, #12] 7b8: 469b mov fp, r3 config->sample_adjustment | 7ba: 6973 ldr r3, [r6, #20] 7bc: 9303 str r3, [sp, #12] (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 7be: 7e33 ldrb r3, [r6, #24] 7c0: 9304 str r3, [sp, #16] (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 7c2: 2326 movs r3, #38 ; 0x26 7c4: 5cf3 ldrb r3, [r6, r3] 7c6: 469a mov sl, r3 transfer_mode = (uint32_t)config->transfer_mode; 7c8: 6873 ldr r3, [r6, #4] 7ca: 4699 mov r9, r3 switch (transfer_mode) 7cc: 2b00 cmp r3, #0 7ce: d100 bne.n 7d2 7d0: e09c b.n 90c 7d2: 2380 movs r3, #128 ; 0x80 7d4: 055b lsls r3, r3, #21 7d6: 4599 cmp r9, r3 7d8: d100 bne.n 7dc 7da: e080 b.n 8de if(config->encoding_format_enable) { 7dc: 7e73 ldrb r3, [r6, #25] 7de: 2b00 cmp r3, #0 7e0: d002 beq.n 7e8 usart_hw->RXPL.reg = config->receive_pulse_length; 7e2: 7eb3 ldrb r3, [r6, #26] 7e4: 4642 mov r2, r8 7e6: 7393 strb r3, [r2, #14] usart_hw->BAUD.reg = baud; 7e8: 230e movs r3, #14 7ea: aa06 add r2, sp, #24 7ec: 4694 mov ip, r2 7ee: 4463 add r3, ip 7f0: 881b ldrh r3, [r3, #0] 7f2: 4642 mov r2, r8 7f4: 8193 strh r3, [r2, #12] ctrla |= transfer_mode; 7f6: 9b05 ldr r3, [sp, #20] 7f8: 465a mov r2, fp 7fa: 4313 orrs r3, r2 7fc: 9a03 ldr r2, [sp, #12] 7fe: 4313 orrs r3, r2 800: 464a mov r2, r9 802: 4313 orrs r3, r2 804: 9f02 ldr r7, [sp, #8] 806: 431f orrs r7, r3 (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 808: 9b04 ldr r3, [sp, #16] 80a: 021b lsls r3, r3, #8 ctrla |= transfer_mode; 80c: 431f orrs r7, r3 (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 80e: 4653 mov r3, sl 810: 075b lsls r3, r3, #29 ctrla |= transfer_mode; 812: 431f orrs r7, r3 if (config->use_external_clock == false) { 814: 2327 movs r3, #39 ; 0x27 816: 5cf3 ldrb r3, [r6, r3] 818: 2b00 cmp r3, #0 81a: d101 bne.n 820 ctrla |= SERCOM_USART_CTRLA_MODE(0x1); 81c: 3304 adds r3, #4 81e: 431f orrs r7, r3 (config->encoding_format_enable << SERCOM_USART_CTRLB_ENC_Pos) | 820: 7e73 ldrb r3, [r6, #25] 822: 029b lsls r3, r3, #10 (config->start_frame_detection_enable << SERCOM_USART_CTRLB_SFDE_Pos) | 824: 7f32 ldrb r2, [r6, #28] 826: 0252 lsls r2, r2, #9 (config->encoding_format_enable << SERCOM_USART_CTRLB_ENC_Pos) | 828: 4313 orrs r3, r2 (config->collision_detection_enable << SERCOM_USART_CTRLB_COLDEN_Pos) | 82a: 7f72 ldrb r2, [r6, #29] 82c: 0212 lsls r2, r2, #8 (config->start_frame_detection_enable << SERCOM_USART_CTRLB_SFDE_Pos) | 82e: 4313 orrs r3, r2 (config->receiver_enable << SERCOM_USART_CTRLB_RXEN_Pos) | 830: 2224 movs r2, #36 ; 0x24 832: 5cb2 ldrb r2, [r6, r2] 834: 0452 lsls r2, r2, #17 (config->collision_detection_enable << SERCOM_USART_CTRLB_COLDEN_Pos) | 836: 4313 orrs r3, r2 (config->transmitter_enable << SERCOM_USART_CTRLB_TXEN_Pos); 838: 2225 movs r2, #37 ; 0x25 83a: 5cb2 ldrb r2, [r6, r2] 83c: 0412 lsls r2, r2, #16 (config->receiver_enable << SERCOM_USART_CTRLB_RXEN_Pos) | 83e: 4313 orrs r3, r2 ctrlb |= (uint32_t)config->character_size; 840: 7ab1 ldrb r1, [r6, #10] 842: 7af2 ldrb r2, [r6, #11] 844: 4311 orrs r1, r2 846: 4319 orrs r1, r3 if (config->parity != USART_PARITY_NONE) { 848: 8933 ldrh r3, [r6, #8] 84a: 2bff cmp r3, #255 ; 0xff 84c: d100 bne.n 850 84e: e081 b.n 954 ctrla |= SERCOM_USART_CTRLA_FORM(1); 850: 2280 movs r2, #128 ; 0x80 852: 0452 lsls r2, r2, #17 854: 4317 orrs r7, r2 ctrlb |= config->parity; 856: 4319 orrs r1, r3 if (config->run_in_standby || system_is_debugger_present()) { 858: 232c movs r3, #44 ; 0x2c 85a: 5cf3 ldrb r3, [r6, r3] 85c: 2b00 cmp r3, #0 85e: d103 bne.n 868 * \retval false Debugger is not connected to the system * */ static inline bool system_is_debugger_present(void) { return DSU->STATUSB.reg & DSU_STATUSB_DBGPRES; 860: 4b62 ldr r3, [pc, #392] ; (9ec ) 862: 789b ldrb r3, [r3, #2] 864: 079b lsls r3, r3, #30 866: d501 bpl.n 86c ctrla |= SERCOM_USART_CTRLA_RUNSTDBY; 868: 2380 movs r3, #128 ; 0x80 86a: 431f orrs r7, r3 { /* Sanity check arguments */ Assert(module); Assert(module->hw); SercomUsart *const usart_hw = &(module->hw->USART); 86c: 682a ldr r2, [r5, #0] #ifdef FEATURE_USART_SYNC_SCHEME_V2 return (usart_hw->SYNCBUSY.reg); 86e: 69d3 ldr r3, [r2, #28] const struct usart_module *const module) { /* Sanity check */ Assert(module); while (usart_is_syncing(module)) { 870: 2b00 cmp r3, #0 872: d1fc bne.n 86e usart_hw->CTRLB.reg = ctrlb; 874: 4643 mov r3, r8 876: 6059 str r1, [r3, #4] SercomUsart *const usart_hw = &(module->hw->USART); 878: 682a ldr r2, [r5, #0] return (usart_hw->SYNCBUSY.reg); 87a: 69d3 ldr r3, [r2, #28] while (usart_is_syncing(module)) { 87c: 2b00 cmp r3, #0 87e: d1fc bne.n 87a usart_hw->CTRLA.reg = ctrla; 880: 4643 mov r3, r8 882: 601f str r7, [r3, #0] { /* Sanity check arguments */ Assert(config); /* Default configuration values */ config->mux_position = SYSTEM_PINMUX_GPIO; 884: ab0e add r3, sp, #56 ; 0x38 886: 2280 movs r2, #128 ; 0x80 888: 701a strb r2, [r3, #0] config->direction = SYSTEM_PINMUX_PIN_DIR_INPUT; 88a: 2200 movs r2, #0 88c: 705a strb r2, [r3, #1] config->input_pull = SYSTEM_PINMUX_PIN_PULL_UP; config->powersave = false; 88e: 70da strb r2, [r3, #3] pin_conf.input_pull = SYSTEM_PINMUX_PIN_PULL_NONE; 890: 709a strb r2, [r3, #2] uint32_t pad_pinmuxes[] = { 892: 6b33 ldr r3, [r6, #48] ; 0x30 894: 930a str r3, [sp, #40] ; 0x28 896: 6b73 ldr r3, [r6, #52] ; 0x34 898: 930b str r3, [sp, #44] ; 0x2c 89a: 6bb3 ldr r3, [r6, #56] ; 0x38 89c: 930c str r3, [sp, #48] ; 0x30 89e: 6bf3 ldr r3, [r6, #60] ; 0x3c 8a0: 9302 str r3, [sp, #8] 8a2: 930d str r3, [sp, #52] ; 0x34 8a4: 2700 movs r7, #0 uint32_t current_pinmux = pad_pinmuxes[pad]; 8a6: ae0a add r6, sp, #40 ; 0x28 8a8: e063 b.n 972 sample_num = SERCOM_ASYNC_SAMPLE_NUM_8; 8aa: 2308 movs r3, #8 8ac: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_FRACTIONAL; 8ae: 3b07 subs r3, #7 8b0: 9307 str r3, [sp, #28] 8b2: e77e b.n 7b2 ctrla = (uint32_t)config->data_order | 8b4: 6833 ldr r3, [r6, #0] 8b6: 9305 str r3, [sp, #20] (uint32_t)config->mux_setting | 8b8: 68f3 ldr r3, [r6, #12] 8ba: 469b mov fp, r3 config->sample_adjustment | 8bc: 6973 ldr r3, [r6, #20] 8be: 9303 str r3, [sp, #12] (config->immediate_buffer_overflow_notification << SERCOM_USART_CTRLA_IBON_Pos) | 8c0: 7e33 ldrb r3, [r6, #24] 8c2: 9304 str r3, [sp, #16] (config->clock_polarity_inverted << SERCOM_USART_CTRLA_CPOL_Pos); 8c4: 2326 movs r3, #38 ; 0x26 8c6: 5cf3 ldrb r3, [r6, r3] 8c8: 469a mov sl, r3 transfer_mode = (uint32_t)config->transfer_mode; 8ca: 6873 ldr r3, [r6, #4] 8cc: 4699 mov r9, r3 switch (transfer_mode) 8ce: 2b00 cmp r3, #0 8d0: d018 beq.n 904 8d2: 2380 movs r3, #128 ; 0x80 8d4: 055b lsls r3, r3, #21 8d6: 4599 cmp r9, r3 8d8: d001 beq.n 8de enum status_code status_code = STATUS_OK; 8da: 2000 movs r0, #0 8dc: e025 b.n 92a if (!config->use_external_clock) { 8de: 2327 movs r3, #39 ; 0x27 8e0: 5cf3 ldrb r3, [r6, r3] 8e2: 2b00 cmp r3, #0 8e4: d000 beq.n 8e8 8e6: e779 b.n 7dc status_code = _sercom_get_sync_baud_val(config->baudrate, 8e8: 6a33 ldr r3, [r6, #32] 8ea: 001f movs r7, r3 8ec: b2c0 uxtb r0, r0 8ee: 4b40 ldr r3, [pc, #256] ; (9f0 ) 8f0: 4798 blx r3 8f2: 0001 movs r1, r0 8f4: 220e movs r2, #14 8f6: ab06 add r3, sp, #24 8f8: 469c mov ip, r3 8fa: 4462 add r2, ip 8fc: 0038 movs r0, r7 8fe: 4b3d ldr r3, [pc, #244] ; (9f4 ) 900: 4798 blx r3 902: e012 b.n 92a sample_num = SERCOM_ASYNC_SAMPLE_NUM_8; 904: 2308 movs r3, #8 906: 9306 str r3, [sp, #24] mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 908: 2300 movs r3, #0 90a: 9307 str r3, [sp, #28] if (config->use_external_clock) { 90c: 2327 movs r3, #39 ; 0x27 90e: 5cf3 ldrb r3, [r6, r3] 910: 2b00 cmp r3, #0 912: d00e beq.n 932 status_code = 914: 9b06 ldr r3, [sp, #24] 916: 9300 str r3, [sp, #0] 918: 9b07 ldr r3, [sp, #28] 91a: 220e movs r2, #14 91c: a906 add r1, sp, #24 91e: 468c mov ip, r1 920: 4462 add r2, ip 922: 6ab1 ldr r1, [r6, #40] ; 0x28 924: 6a30 ldr r0, [r6, #32] 926: 4f34 ldr r7, [pc, #208] ; (9f8 ) 928: 47b8 blx r7 if (status_code != STATUS_OK) { 92a: 2800 cmp r0, #0 92c: d000 beq.n 930 92e: e6e4 b.n 6fa 930: e754 b.n 7dc _sercom_get_async_baud_val(config->baudrate, 932: 6a33 ldr r3, [r6, #32] 934: 001f movs r7, r3 936: b2c0 uxtb r0, r0 938: 4b2d ldr r3, [pc, #180] ; (9f0 ) 93a: 4798 blx r3 93c: 0001 movs r1, r0 status_code = 93e: 9b06 ldr r3, [sp, #24] 940: 9300 str r3, [sp, #0] 942: 9b07 ldr r3, [sp, #28] 944: 220e movs r2, #14 946: a806 add r0, sp, #24 948: 4684 mov ip, r0 94a: 4462 add r2, ip 94c: 0038 movs r0, r7 94e: 4f2a ldr r7, [pc, #168] ; (9f8 ) 950: 47b8 blx r7 952: e7ea b.n 92a if(config->lin_slave_enable) { 954: 7ef3 ldrb r3, [r6, #27] 956: 2b00 cmp r3, #0 958: d100 bne.n 95c 95a: e77d b.n 858 ctrla |= SERCOM_USART_CTRLA_FORM(0x4); 95c: 2380 movs r3, #128 ; 0x80 95e: 04db lsls r3, r3, #19 960: 431f orrs r7, r3 962: e779 b.n 858 current_pinmux = _sercom_get_default_pad(hw, pad); 964: 0020 movs r0, r4 966: 4b25 ldr r3, [pc, #148] ; (9fc ) 968: 4798 blx r3 96a: e007 b.n 97c 96c: 3701 adds r7, #1 for (uint8_t pad = 0; pad < 4; pad++) { 96e: 2f04 cmp r7, #4 970: d00d beq.n 98e 972: b2f9 uxtb r1, r7 uint32_t current_pinmux = pad_pinmuxes[pad]; 974: 00bb lsls r3, r7, #2 976: 5998 ldr r0, [r3, r6] if (current_pinmux == PINMUX_DEFAULT) { 978: 2800 cmp r0, #0 97a: d0f3 beq.n 964 if (current_pinmux != PINMUX_UNUSED) { 97c: 1c43 adds r3, r0, #1 97e: d0f5 beq.n 96c pin_conf.mux_position = current_pinmux & 0xFFFF; 980: a90e add r1, sp, #56 ; 0x38 982: 7008 strb r0, [r1, #0] system_pinmux_pin_set_config(current_pinmux >> 16, &pin_conf); 984: 0c00 lsrs r0, r0, #16 986: b2c0 uxtb r0, r0 988: 4b1d ldr r3, [pc, #116] ; (a00 ) 98a: 4798 blx r3 98c: e7ee b.n 96c module->callback[i] = NULL; 98e: 2300 movs r3, #0 990: 60eb str r3, [r5, #12] 992: 612b str r3, [r5, #16] 994: 616b str r3, [r5, #20] 996: 61ab str r3, [r5, #24] 998: 61eb str r3, [r5, #28] 99a: 622b str r3, [r5, #32] module->tx_buffer_ptr = NULL; 99c: 62ab str r3, [r5, #40] ; 0x28 module->rx_buffer_ptr = NULL; 99e: 626b str r3, [r5, #36] ; 0x24 module->remaining_tx_buffer_length = 0x0000; 9a0: 2200 movs r2, #0 9a2: 85eb strh r3, [r5, #46] ; 0x2e module->remaining_rx_buffer_length = 0x0000; 9a4: 85ab strh r3, [r5, #44] ; 0x2c module->callback_reg_mask = 0x00; 9a6: 3330 adds r3, #48 ; 0x30 9a8: 54ea strb r2, [r5, r3] module->callback_enable_mask = 0x00; 9aa: 3301 adds r3, #1 9ac: 54ea strb r2, [r5, r3] module->rx_status = STATUS_OK; 9ae: 3301 adds r3, #1 9b0: 54ea strb r2, [r5, r3] module->tx_status = STATUS_OK; 9b2: 3301 adds r3, #1 9b4: 54ea strb r2, [r5, r3] uint8_t instance_index = _sercom_get_sercom_inst_index(module->hw); 9b6: 6828 ldr r0, [r5, #0] 9b8: 4b07 ldr r3, [pc, #28] ; (9d8 ) 9ba: 4798 blx r3 9bc: 0004 movs r4, r0 _sercom_set_handler(instance_index, _usart_interrupt_handler); 9be: 4911 ldr r1, [pc, #68] ; (a04 ) 9c0: 4b11 ldr r3, [pc, #68] ; (a08 ) 9c2: 4798 blx r3 _sercom_instances[instance_index] = module; 9c4: 00a4 lsls r4, r4, #2 9c6: 4b11 ldr r3, [pc, #68] ; (a0c ) 9c8: 50e5 str r5, [r4, r3] return status_code; 9ca: 2000 movs r0, #0 9cc: e695 b.n 6fa enum sercom_asynchronous_sample_num sample_num = SERCOM_ASYNC_SAMPLE_NUM_16; 9ce: 2310 movs r3, #16 9d0: 9306 str r3, [sp, #24] enum sercom_asynchronous_operation_mode mode = SERCOM_ASYNC_OPERATION_MODE_ARITHMETIC; 9d2: 2300 movs r3, #0 9d4: 9307 str r3, [sp, #28] 9d6: e6ec b.n 7b2 9d8: 0000069d .word 0x0000069d 9dc: 40000400 .word 0x40000400 9e0: 00001515 .word 0x00001515 9e4: 00001489 .word 0x00001489 9e8: 000004d9 .word 0x000004d9 9ec: 41002000 .word 0x41002000 9f0: 00001531 .word 0x00001531 9f4: 0000041b .word 0x0000041b 9f8: 00000445 .word 0x00000445 9fc: 00000525 .word 0x00000525 a00: 0000160d .word 0x0000160d a04: 00000b6d .word 0x00000b6d a08: 00000d05 .word 0x00000d05 a0c: 20004cf0 .word 0x20004cf0 00000a10 : /* 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)) { a10: 79c2 ldrb r2, [r0, #7] return STATUS_ERR_DENIED; a12: 231c movs r3, #28 if (!(module->transmitter_enabled)) { a14: 2a00 cmp r2, #0 a16: d101 bne.n a1c while (!(usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)) { /* Wait until data is sent */ } return STATUS_OK; } a18: 0018 movs r0, r3 a1a: 4770 bx lr if (module->remaining_tx_buffer_length > 0) { a1c: 8dc2 ldrh r2, [r0, #46] ; 0x2e a1e: b292 uxth r2, r2 return STATUS_BUSY; a20: 3b17 subs r3, #23 if (module->remaining_tx_buffer_length > 0) { a22: 2a00 cmp r2, #0 a24: d1f8 bne.n a18 SercomUsart *const usart_hw = &(module->hw->USART); a26: 6802 ldr r2, [r0, #0] usart_hw->DATA.reg = tx_data; a28: 8511 strh r1, [r2, #40] ; 0x28 while (!(usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)) { a2a: 2102 movs r1, #2 a2c: 7e13 ldrb r3, [r2, #24] a2e: 420b tst r3, r1 a30: d0fc beq.n a2c return STATUS_OK; a32: 2300 movs r3, #0 a34: e7f0 b.n a18 ... 00000a38 : */ enum status_code usart_write_buffer_wait( struct usart_module *const module, const uint8_t *tx_data, uint16_t length) { a38: b5f0 push {r4, r5, r6, r7, lr} a3a: 46ce mov lr, r9 a3c: 4647 mov r7, r8 a3e: b580 push {r7, lr} a40: b083 sub sp, #12 a42: 0005 movs r5, r0 a44: 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; a46: 2017 movs r0, #23 if (length == 0) { a48: 2a00 cmp r2, #0 a4a: d104 bne.n a56 return STATUS_ERR_TIMEOUT; } } return STATUS_OK; } a4c: b003 add sp, #12 a4e: bc0c pop {r2, r3} a50: 4690 mov r8, r2 a52: 4699 mov r9, r3 a54: bdf0 pop {r4, r5, r6, r7, pc} if (!(module->transmitter_enabled)) { a56: 79eb ldrb r3, [r5, #7] return STATUS_ERR_DENIED; a58: 3005 adds r0, #5 if (!(module->transmitter_enabled)) { a5a: 2b00 cmp r3, #0 a5c: d0f6 beq.n a4c SercomUsart *const usart_hw = &(module->hw->USART); a5e: 682c ldr r4, [r5, #0] while (length--) { a60: 3a01 subs r2, #1 a62: b293 uxth r3, r2 a64: 4699 mov r9, r3 a66: 2600 movs r6, #0 if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) { a68: 2701 movs r7, #1 while (length--) { a6a: 4b20 ldr r3, [pc, #128] ; (aec ) a6c: 4698 mov r8, r3 a6e: e011 b.n a94 uint16_t data_to_send = tx_data[tx_pos++]; a70: 1c73 adds r3, r6, #1 a72: b29b uxth r3, r3 a74: 9a01 ldr r2, [sp, #4] a76: 5d91 ldrb r1, [r2, r6] if (module->character_size == USART_CHARACTER_SIZE_9BIT) { a78: 796a ldrb r2, [r5, #5] a7a: 2a01 cmp r2, #1 a7c: d017 beq.n aae uint16_t data_to_send = tx_data[tx_pos++]; a7e: b289 uxth r1, r1 a80: 001e movs r6, r3 usart_write_wait(module, data_to_send); a82: 0028 movs r0, r5 a84: 4b1a ldr r3, [pc, #104] ; (af0 ) a86: 4798 blx r3 while (length--) { a88: 464b mov r3, r9 a8a: 3b01 subs r3, #1 a8c: b29b uxth r3, r3 a8e: 4699 mov r9, r3 a90: 4543 cmp r3, r8 a92: d013 beq.n abc if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_DRE) { a94: 7e23 ldrb r3, [r4, #24] a96: 423b tst r3, r7 a98: d1ea bne.n a70 a9a: 4b14 ldr r3, [pc, #80] ; (aec ) a9c: 7e22 ldrb r2, [r4, #24] a9e: 423a tst r2, r7 aa0: d1e6 bne.n a70 } else if (i == USART_TIMEOUT) { aa2: 2b01 cmp r3, #1 aa4: d019 beq.n ada aa6: 3b01 subs r3, #1 for (uint32_t i = 0; i <= USART_TIMEOUT; i++) { aa8: 2b00 cmp r3, #0 aaa: d1f7 bne.n a9c aac: e7e0 b.n a70 data_to_send |= (tx_data[tx_pos++] << 8); aae: 3602 adds r6, #2 ab0: b2b6 uxth r6, r6 ab2: 9a01 ldr r2, [sp, #4] ab4: 5cd3 ldrb r3, [r2, r3] ab6: 021b lsls r3, r3, #8 ab8: 4319 orrs r1, r3 aba: e7e2 b.n a82 if (usart_hw->INTFLAG.reg & SERCOM_USART_INTFLAG_TXC) { abc: 7e23 ldrb r3, [r4, #24] abe: 079b lsls r3, r3, #30 ac0: d40d bmi.n ade ac2: 4b0a ldr r3, [pc, #40] ; (aec ) ac4: 2102 movs r1, #2 ac6: 7e22 ldrb r2, [r4, #24] ac8: 420a tst r2, r1 aca: d10a bne.n ae2 } else if (i == USART_TIMEOUT) { acc: 2b01 cmp r3, #1 ace: d00a beq.n ae6 ad0: 3b01 subs r3, #1 for (uint32_t i = 0; i <= USART_TIMEOUT; i++) { ad2: 2b00 cmp r3, #0 ad4: d1f7 bne.n ac6 return STATUS_OK; ad6: 2000 movs r0, #0 ad8: e7b8 b.n a4c return STATUS_ERR_TIMEOUT; ada: 2012 movs r0, #18 adc: e7b6 b.n a4c return STATUS_OK; ade: 2000 movs r0, #0 ae0: e7b4 b.n a4c ae2: 2000 movs r0, #0 ae4: e7b2 b.n a4c return STATUS_ERR_TIMEOUT; ae6: 2012 movs r0, #18 ae8: e7b0 b.n a4c aea: 46c0 nop ; (mov r8, r8) aec: 0000ffff .word 0x0000ffff af0: 00000a11 .word 0x00000a11 00000af4 <_usart_read_buffer>: */ enum status_code _usart_read_buffer( struct usart_module *const module, uint8_t *rx_data, uint16_t length) { af4: b5f8 push {r3, r4, r5, r6, r7, lr} af6: 0004 movs r4, r0 af8: 000d movs r5, r1 afa: 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); afc: 6807 ldr r7, [r0, #0] cpu_irq_enter_critical(); afe: 4b0f ldr r3, [pc, #60] ; (b3c <_usart_read_buffer+0x48>) b00: 4798 blx r3 system_interrupt_enter_critical_section(); /* Check if the USART receiver is busy */ if (module->remaining_rx_buffer_length > 0) { b02: 8da3 ldrh r3, [r4, #44] ; 0x2c b04: b29b uxth r3, r3 b06: 2b00 cmp r3, #0 b08: d003 beq.n b12 <_usart_read_buffer+0x1e> cpu_irq_leave_critical(); b0a: 4b0d ldr r3, [pc, #52] ; (b40 <_usart_read_buffer+0x4c>) b0c: 4798 blx r3 system_interrupt_leave_critical_section(); return STATUS_BUSY; b0e: 2005 movs r0, #5 usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXS; } #endif return STATUS_OK; } b10: bdf8 pop {r3, r4, r5, r6, r7, pc} module->remaining_rx_buffer_length = length; b12: 85a6 strh r6, [r4, #44] ; 0x2c b14: 4b0a ldr r3, [pc, #40] ; (b40 <_usart_read_buffer+0x4c>) b16: 4798 blx r3 module->rx_buffer_ptr = rx_data; b18: 6265 str r5, [r4, #36] ; 0x24 module->rx_status = STATUS_BUSY; b1a: 2205 movs r2, #5 b1c: 2332 movs r3, #50 ; 0x32 b1e: 54e2 strb r2, [r4, r3] usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXC; b20: 3b2e subs r3, #46 ; 0x2e b22: 75bb strb r3, [r7, #22] if(module->lin_slave_enabled) { b24: 7a23 ldrb r3, [r4, #8] b26: 2b00 cmp r3, #0 b28: d001 beq.n b2e <_usart_read_buffer+0x3a> usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXBRK; b2a: 2320 movs r3, #32 b2c: 75bb strb r3, [r7, #22] if(module->start_frame_detection_enabled) { b2e: 7a63 ldrb r3, [r4, #9] return STATUS_OK; b30: 2000 movs r0, #0 if(module->start_frame_detection_enabled) { b32: 2b00 cmp r3, #0 b34: d0ec beq.n b10 <_usart_read_buffer+0x1c> usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_RXS; b36: 2308 movs r3, #8 b38: 75bb strb r3, [r7, #22] b3a: e7e9 b.n b10 <_usart_read_buffer+0x1c> b3c: 00000dd1 .word 0x00000dd1 b40: 00000e11 .word 0x00000e11 00000b44 : /* Sanity check arguments */ Assert(module); Assert(callback_func); /* Register callback function */ module->callback[callback_type] = callback_func; b44: 1c93 adds r3, r2, #2 b46: 009b lsls r3, r3, #2 b48: 18c3 adds r3, r0, r3 b4a: 6059 str r1, [r3, #4] /* Set the bit corresponding to the callback_type */ module->callback_reg_mask |= (1 << callback_type); b4c: 2130 movs r1, #48 ; 0x30 b4e: 2301 movs r3, #1 b50: 4093 lsls r3, r2 b52: 001a movs r2, r3 b54: 5c43 ldrb r3, [r0, r1] b56: 4313 orrs r3, r2 b58: 5443 strb r3, [r0, r1] } b5a: 4770 bx lr 00000b5c : * \retval STATUS_BUSY If operation was not completed */ enum status_code usart_read_job( struct usart_module *const module, uint16_t *const rx_data) { b5c: 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); b5e: 2201 movs r2, #1 b60: 4b01 ldr r3, [pc, #4] ; (b68 ) b62: 4798 blx r3 } b64: bd10 pop {r4, pc} b66: 46c0 nop ; (mov r8, r8) b68: 00000af5 .word 0x00000af5 00000b6c <_usart_interrupt_handler>: * \param[in] instance ID of the SERCOM instance calling the interrupt * handler. */ void _usart_interrupt_handler( uint8_t instance) { b6c: 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 b6e: 0080 lsls r0, r0, #2 b70: 4b62 ldr r3, [pc, #392] ; (cfc <_usart_interrupt_handler+0x190>) b72: 58c5 ldr r5, [r0, r3] = (struct usart_module *)_sercom_instances[instance]; /* Pointer to the hardware module instance */ SercomUsart *const usart_hw = &(module->hw->USART); b74: 682c ldr r4, [r5, #0] return (usart_hw->SYNCBUSY.reg); b76: 69e3 ldr r3, [r4, #28] while (usart_is_syncing(module)) { b78: 2b00 cmp r3, #0 b7a: d1fc bne.n b76 <_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; b7c: 7e23 ldrb r3, [r4, #24] interrupt_status &= usart_hw->INTENSET.reg; b7e: 7da6 ldrb r6, [r4, #22] b80: 401e ands r6, r3 callback_status = module->callback_reg_mask & b82: 2330 movs r3, #48 ; 0x30 b84: 5ceb ldrb r3, [r5, r3] b86: 2231 movs r2, #49 ; 0x31 b88: 5caf ldrb r7, [r5, r2] b8a: 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) { b8c: 07f3 lsls r3, r6, #31 b8e: d522 bpl.n bd6 <_usart_interrupt_handler+0x6a> if (module->remaining_tx_buffer_length) { b90: 8deb ldrh r3, [r5, #46] ; 0x2e b92: b29b uxth r3, r3 b94: 2b00 cmp r3, #0 b96: d01c beq.n bd2 <_usart_interrupt_handler+0x66> /* Write value will be at least 8-bits long */ uint16_t data_to_send = *(module->tx_buffer_ptr); b98: 6aaa ldr r2, [r5, #40] ; 0x28 b9a: 7813 ldrb r3, [r2, #0] b9c: b2db uxtb r3, r3 /* Increment 8-bit pointer */ (module->tx_buffer_ptr)++; b9e: 1c51 adds r1, r2, #1 ba0: 62a9 str r1, [r5, #40] ; 0x28 if (module->character_size == USART_CHARACTER_SIZE_9BIT) { ba2: 7969 ldrb r1, [r5, #5] ba4: 2901 cmp r1, #1 ba6: d00e beq.n bc6 <_usart_interrupt_handler+0x5a> uint16_t data_to_send = *(module->tx_buffer_ptr); ba8: 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); baa: 05db lsls r3, r3, #23 bac: 0ddb lsrs r3, r3, #23 bae: 8523 strh r3, [r4, #40] ; 0x28 if (--(module->remaining_tx_buffer_length) == 0) { bb0: 8deb ldrh r3, [r5, #46] ; 0x2e bb2: 3b01 subs r3, #1 bb4: b29b uxth r3, r3 bb6: 85eb strh r3, [r5, #46] ; 0x2e bb8: 2b00 cmp r3, #0 bba: d10c bne.n bd6 <_usart_interrupt_handler+0x6a> /* Disable the Data Register Empty Interrupt */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_DRE; bbc: 3301 adds r3, #1 bbe: 7523 strb r3, [r4, #20] /* Enable Transmission Complete interrupt */ usart_hw->INTENSET.reg = SERCOM_USART_INTFLAG_TXC; bc0: 3301 adds r3, #1 bc2: 75a3 strb r3, [r4, #22] bc4: e007 b.n bd6 <_usart_interrupt_handler+0x6a> data_to_send |= (*(module->tx_buffer_ptr) << 8); bc6: 7851 ldrb r1, [r2, #1] bc8: 0209 lsls r1, r1, #8 bca: 430b orrs r3, r1 (module->tx_buffer_ptr)++; bcc: 3202 adds r2, #2 bce: 62aa str r2, [r5, #40] ; 0x28 bd0: e7eb b.n baa <_usart_interrupt_handler+0x3e> } } else { usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_DRE; bd2: 2301 movs r3, #1 bd4: 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) { bd6: 07b3 lsls r3, r6, #30 bd8: d506 bpl.n be8 <_usart_interrupt_handler+0x7c> /* Disable TX Complete Interrupt, and set STATUS_OK */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_TXC; bda: 2302 movs r3, #2 bdc: 7523 strb r3, [r4, #20] module->tx_status = STATUS_OK; bde: 2200 movs r2, #0 be0: 3331 adds r3, #49 ; 0x31 be2: 54ea strb r2, [r5, r3] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_BUFFER_TRANSMITTED)) { be4: 07fb lsls r3, r7, #31 be6: d41a bmi.n c1e <_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) { be8: 0773 lsls r3, r6, #29 bea: d565 bpl.n cb8 <_usart_interrupt_handler+0x14c> if (module->remaining_rx_buffer_length) { bec: 8dab ldrh r3, [r5, #44] ; 0x2c bee: b29b uxth r3, r3 bf0: 2b00 cmp r3, #0 bf2: d05f beq.n cb4 <_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); bf4: 8b63 ldrh r3, [r4, #26] bf6: b2db uxtb r3, r3 #if !SAMD20 /* CTS status should not be considered as an error */ if(error_code & SERCOM_USART_STATUS_CTS) { bf8: 071a lsls r2, r3, #28 bfa: d414 bmi.n c26 <_usart_interrupt_handler+0xba> error_code = (uint8_t)(usart_hw->STATUS.reg & SERCOM_USART_STATUS_MASK); bfc: 223f movs r2, #63 ; 0x3f bfe: 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) { c00: 2b00 cmp r3, #0 c02: d034 beq.n c6e <_usart_interrupt_handler+0x102> /* Check which error occurred */ if (error_code & SERCOM_USART_STATUS_FERR) { c04: 079a lsls r2, r3, #30 c06: d511 bpl.n c2c <_usart_interrupt_handler+0xc0> /* Store the error code and clear flag by writing 1 to it */ module->rx_status = STATUS_ERR_BAD_FORMAT; c08: 221a movs r2, #26 c0a: 2332 movs r3, #50 ; 0x32 c0c: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_FERR; c0e: 3b30 subs r3, #48 ; 0x30 c10: 8363 strh r3, [r4, #26] usart_hw->STATUS.reg = SERCOM_USART_STATUS_COLL; } #endif /* Run callback if registered and enabled */ if (callback_status c12: 077b lsls r3, r7, #29 c14: d550 bpl.n cb8 <_usart_interrupt_handler+0x14c> & (1 << USART_CALLBACK_ERROR)) { (*(module->callback[USART_CALLBACK_ERROR]))(module); c16: 0028 movs r0, r5 c18: 696b ldr r3, [r5, #20] c1a: 4798 blx r3 c1c: e04c b.n cb8 <_usart_interrupt_handler+0x14c> (*(module->callback[USART_CALLBACK_BUFFER_TRANSMITTED]))(module); c1e: 0028 movs r0, r5 c20: 68eb ldr r3, [r5, #12] c22: 4798 blx r3 c24: e7e0 b.n be8 <_usart_interrupt_handler+0x7c> error_code &= ~SERCOM_USART_STATUS_CTS; c26: 2237 movs r2, #55 ; 0x37 c28: 4013 ands r3, r2 c2a: e7e9 b.n c00 <_usart_interrupt_handler+0x94> } else if (error_code & SERCOM_USART_STATUS_BUFOVF) { c2c: 075a lsls r2, r3, #29 c2e: d505 bpl.n c3c <_usart_interrupt_handler+0xd0> module->rx_status = STATUS_ERR_OVERFLOW; c30: 221e movs r2, #30 c32: 2332 movs r3, #50 ; 0x32 c34: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_BUFOVF; c36: 3b2e subs r3, #46 ; 0x2e c38: 8363 strh r3, [r4, #26] c3a: e7ea b.n c12 <_usart_interrupt_handler+0xa6> } else if (error_code & SERCOM_USART_STATUS_PERR) { c3c: 07da lsls r2, r3, #31 c3e: d505 bpl.n c4c <_usart_interrupt_handler+0xe0> module->rx_status = STATUS_ERR_BAD_DATA; c40: 2213 movs r2, #19 c42: 2332 movs r3, #50 ; 0x32 c44: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_PERR; c46: 3b31 subs r3, #49 ; 0x31 c48: 8363 strh r3, [r4, #26] c4a: e7e2 b.n c12 <_usart_interrupt_handler+0xa6> else if (error_code & SERCOM_USART_STATUS_ISF) { c4c: 06da lsls r2, r3, #27 c4e: d505 bpl.n c5c <_usart_interrupt_handler+0xf0> module->rx_status = STATUS_ERR_PROTOCOL; c50: 2242 movs r2, #66 ; 0x42 c52: 2332 movs r3, #50 ; 0x32 c54: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_ISF; c56: 3b22 subs r3, #34 ; 0x22 c58: 8363 strh r3, [r4, #26] c5a: e7da b.n c12 <_usart_interrupt_handler+0xa6> else if (error_code & SERCOM_USART_STATUS_COLL) { c5c: 2220 movs r2, #32 c5e: 421a tst r2, r3 c60: d0d7 beq.n c12 <_usart_interrupt_handler+0xa6> module->rx_status = STATUS_ERR_PACKET_COLLISION; c62: 3221 adds r2, #33 ; 0x21 c64: 2332 movs r3, #50 ; 0x32 c66: 54ea strb r2, [r5, r3] usart_hw->STATUS.reg = SERCOM_USART_STATUS_COLL; c68: 3b12 subs r3, #18 c6a: 8363 strh r3, [r4, #26] c6c: e7d1 b.n c12 <_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); c6e: 8d23 ldrh r3, [r4, #40] ; 0x28 c70: 05db lsls r3, r3, #23 c72: 0ddb lsrs r3, r3, #23 /* Read value will be at least 8-bits long */ *(module->rx_buffer_ptr) = received_data; c74: b2da uxtb r2, r3 c76: 6a69 ldr r1, [r5, #36] ; 0x24 c78: 700a strb r2, [r1, #0] /* Increment 8-bit pointer */ module->rx_buffer_ptr += 1; c7a: 6a6a ldr r2, [r5, #36] ; 0x24 c7c: 1c51 adds r1, r2, #1 c7e: 6269 str r1, [r5, #36] ; 0x24 if (module->character_size == USART_CHARACTER_SIZE_9BIT) { c80: 7969 ldrb r1, [r5, #5] c82: 2901 cmp r1, #1 c84: d010 beq.n ca8 <_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) { c86: 8dab ldrh r3, [r5, #44] ; 0x2c c88: 3b01 subs r3, #1 c8a: b29b uxth r3, r3 c8c: 85ab strh r3, [r5, #44] ; 0x2c c8e: 2b00 cmp r3, #0 c90: d112 bne.n cb8 <_usart_interrupt_handler+0x14c> /* Disable RX Complete Interrupt, * and set STATUS_OK */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_RXC; c92: 3304 adds r3, #4 c94: 7523 strb r3, [r4, #20] module->rx_status = STATUS_OK; c96: 2200 movs r2, #0 c98: 332e adds r3, #46 ; 0x2e c9a: 54ea strb r2, [r5, r3] /* Run callback if registered and enabled */ if (callback_status c9c: 07bb lsls r3, r7, #30 c9e: d50b bpl.n cb8 <_usart_interrupt_handler+0x14c> & (1 << USART_CALLBACK_BUFFER_RECEIVED)) { (*(module->callback[USART_CALLBACK_BUFFER_RECEIVED]))(module); ca0: 0028 movs r0, r5 ca2: 692b ldr r3, [r5, #16] ca4: 4798 blx r3 ca6: e007 b.n cb8 <_usart_interrupt_handler+0x14c> *(module->rx_buffer_ptr) = (received_data >> 8); ca8: 0a1b lsrs r3, r3, #8 caa: 7053 strb r3, [r2, #1] module->rx_buffer_ptr += 1; cac: 6a6b ldr r3, [r5, #36] ; 0x24 cae: 3301 adds r3, #1 cb0: 626b str r3, [r5, #36] ; 0x24 cb2: e7e8 b.n c86 <_usart_interrupt_handler+0x11a> } } } } else { /* This should not happen. Disable Receive Complete interrupt. */ usart_hw->INTENCLR.reg = SERCOM_USART_INTFLAG_RXC; cb4: 2304 movs r3, #4 cb6: 7523 strb r3, [r4, #20] } } #ifdef FEATURE_USART_HARDWARE_FLOW_CONTROL if (interrupt_status & SERCOM_USART_INTFLAG_CTSIC) { cb8: 06f3 lsls r3, r6, #27 cba: d504 bpl.n cc6 <_usart_interrupt_handler+0x15a> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_CTSIC; cbc: 2310 movs r3, #16 cbe: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_CTSIC; cc0: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_CTS_INPUT_CHANGE)) { cc2: 06fb lsls r3, r7, #27 cc4: d40e bmi.n ce4 <_usart_interrupt_handler+0x178> } } #endif #ifdef FEATURE_USART_LIN_SLAVE if (interrupt_status & SERCOM_USART_INTFLAG_RXBRK) { cc6: 06b3 lsls r3, r6, #26 cc8: d504 bpl.n cd4 <_usart_interrupt_handler+0x168> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_RXBRK; cca: 2320 movs r3, #32 ccc: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_RXBRK; cce: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_BREAK_RECEIVED)) { cd0: 073b lsls r3, r7, #28 cd2: d40b bmi.n cec <_usart_interrupt_handler+0x180> } } #endif #ifdef FEATURE_USART_START_FRAME_DECTION if (interrupt_status & SERCOM_USART_INTFLAG_RXS) { cd4: 0733 lsls r3, r6, #28 cd6: d504 bpl.n ce2 <_usart_interrupt_handler+0x176> /* Disable interrupts */ usart_hw->INTENCLR.reg = SERCOM_USART_INTENCLR_RXS; cd8: 2308 movs r3, #8 cda: 7523 strb r3, [r4, #20] /* Clear interrupt flag */ usart_hw->INTFLAG.reg = SERCOM_USART_INTFLAG_RXS; cdc: 7623 strb r3, [r4, #24] /* Run callback if registered and enabled */ if (callback_status & (1 << USART_CALLBACK_START_RECEIVED)) { cde: 06bb lsls r3, r7, #26 ce0: d408 bmi.n cf4 <_usart_interrupt_handler+0x188> (*(module->callback[USART_CALLBACK_START_RECEIVED]))(module); } } #endif } ce2: bdf8 pop {r3, r4, r5, r6, r7, pc} (*(module->callback[USART_CALLBACK_CTS_INPUT_CHANGE]))(module); ce4: 0028 movs r0, r5 ce6: 69eb ldr r3, [r5, #28] ce8: 4798 blx r3 cea: e7ec b.n cc6 <_usart_interrupt_handler+0x15a> (*(module->callback[USART_CALLBACK_BREAK_RECEIVED]))(module); cec: 0028 movs r0, r5 cee: 69ab ldr r3, [r5, #24] cf0: 4798 blx r3 cf2: e7ef b.n cd4 <_usart_interrupt_handler+0x168> (*(module->callback[USART_CALLBACK_START_RECEIVED]))(module); cf4: 6a2b ldr r3, [r5, #32] cf6: 0028 movs r0, r5 cf8: 4798 blx r3 } cfa: e7f2 b.n ce2 <_usart_interrupt_handler+0x176> cfc: 20004cf0 .word 0x20004cf0 00000d00 <_sercom_default_handler>: */ static void _sercom_default_handler( const uint8_t instance) { Assert(false); } d00: 4770 bx lr ... 00000d04 <_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) { d04: b5f0 push {r4, r5, r6, r7, lr} /* Initialize handlers with default handler and device instances with 0 */ if (_handler_table_initialized == false) { d06: 4b0a ldr r3, [pc, #40] ; (d30 <_sercom_set_handler+0x2c>) d08: 781b ldrb r3, [r3, #0] d0a: 2b00 cmp r3, #0 d0c: d10c bne.n d28 <_sercom_set_handler+0x24> for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { _sercom_interrupt_handlers[i] = &_sercom_default_handler; d0e: 4f09 ldr r7, [pc, #36] ; (d34 <_sercom_set_handler+0x30>) d10: 4e09 ldr r6, [pc, #36] ; (d38 <_sercom_set_handler+0x34>) _sercom_instances[i] = NULL; d12: 4d0a ldr r5, [pc, #40] ; (d3c <_sercom_set_handler+0x38>) d14: 2400 movs r4, #0 _sercom_interrupt_handlers[i] = &_sercom_default_handler; d16: 51de str r6, [r3, r7] _sercom_instances[i] = NULL; d18: 195a adds r2, r3, r5 d1a: 6014 str r4, [r2, #0] d1c: 3304 adds r3, #4 for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { d1e: 2b18 cmp r3, #24 d20: d1f9 bne.n d16 <_sercom_set_handler+0x12> } _handler_table_initialized = true; d22: 2201 movs r2, #1 d24: 4b02 ldr r3, [pc, #8] ; (d30 <_sercom_set_handler+0x2c>) d26: 701a strb r2, [r3, #0] } /* Save interrupt handler */ _sercom_interrupt_handlers[instance] = interrupt_handler; d28: 0080 lsls r0, r0, #2 d2a: 4b02 ldr r3, [pc, #8] ; (d34 <_sercom_set_handler+0x30>) d2c: 50c1 str r1, [r0, r3] } d2e: bdf0 pop {r4, r5, r6, r7, pc} d30: 200026a6 .word 0x200026a6 d34: 200026a8 .word 0x200026a8 d38: 00000d01 .word 0x00000d01 d3c: 20004cf0 .word 0x20004cf0 00000d40 <_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) { d40: b500 push {lr} d42: b083 sub sp, #12 const uint8_t sercom_int_vectors[SERCOM_INST_NUM] = d44: 2309 movs r3, #9 d46: 466a mov r2, sp d48: 7013 strb r3, [r2, #0] d4a: 3301 adds r3, #1 d4c: 7053 strb r3, [r2, #1] d4e: 3301 adds r3, #1 d50: 7093 strb r3, [r2, #2] d52: 3301 adds r3, #1 d54: 70d3 strb r3, [r2, #3] d56: 3301 adds r3, #1 d58: 7113 strb r3, [r2, #4] d5a: 3301 adds r3, #1 d5c: 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); d5e: 4b03 ldr r3, [pc, #12] ; (d6c <_sercom_get_interrupt_vector+0x2c>) d60: 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]; d62: 466b mov r3, sp d64: 5618 ldrsb r0, [r3, r0] } d66: b003 add sp, #12 d68: bd00 pop {pc} d6a: 46c0 nop ; (mov r8, r8) d6c: 0000069d .word 0x0000069d 00000d70 : /** Auto-generate a set of interrupt handlers for each SERCOM in the device */ MREPEAT(SERCOM_INST_NUM, _SERCOM_INTERRUPT_HANDLER, ~) d70: b510 push {r4, lr} d72: 4b02 ldr r3, [pc, #8] ; (d7c ) d74: 681b ldr r3, [r3, #0] d76: 2000 movs r0, #0 d78: 4798 blx r3 d7a: bd10 pop {r4, pc} d7c: 200026a8 .word 0x200026a8 00000d80 : d80: b510 push {r4, lr} d82: 4b02 ldr r3, [pc, #8] ; (d8c ) d84: 685b ldr r3, [r3, #4] d86: 2001 movs r0, #1 d88: 4798 blx r3 d8a: bd10 pop {r4, pc} d8c: 200026a8 .word 0x200026a8 00000d90 : d90: b510 push {r4, lr} d92: 4b02 ldr r3, [pc, #8] ; (d9c ) d94: 689b ldr r3, [r3, #8] d96: 2002 movs r0, #2 d98: 4798 blx r3 d9a: bd10 pop {r4, pc} d9c: 200026a8 .word 0x200026a8 00000da0 : da0: b510 push {r4, lr} da2: 4b02 ldr r3, [pc, #8] ; (dac ) da4: 68db ldr r3, [r3, #12] da6: 2003 movs r0, #3 da8: 4798 blx r3 daa: bd10 pop {r4, pc} dac: 200026a8 .word 0x200026a8 00000db0 : db0: b510 push {r4, lr} db2: 4b02 ldr r3, [pc, #8] ; (dbc ) db4: 691b ldr r3, [r3, #16] db6: 2004 movs r0, #4 db8: 4798 blx r3 dba: bd10 pop {r4, pc} dbc: 200026a8 .word 0x200026a8 00000dc0 : dc0: b510 push {r4, lr} dc2: 4b02 ldr r3, [pc, #8] ; (dcc ) dc4: 695b ldr r3, [r3, #20] dc6: 2005 movs r0, #5 dc8: 4798 blx r3 dca: bd10 pop {r4, pc} dcc: 200026a8 .word 0x200026a8 00000dd0 : volatile bool g_interrupt_enabled = true; #endif void cpu_irq_enter_critical(void) { if (cpu_irq_critical_section_counter == 0) { dd0: 4b0c ldr r3, [pc, #48] ; (e04 ) dd2: 681b ldr r3, [r3, #0] dd4: 2b00 cmp r3, #0 dd6: d106 bne.n de6 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); dd8: f3ef 8310 mrs r3, PRIMASK if (cpu_irq_is_enabled()) { ddc: 2b00 cmp r3, #0 dde: d007 beq.n df0 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; de0: 2200 movs r2, #0 de2: 4b09 ldr r3, [pc, #36] ; (e08 ) de4: 701a strb r2, [r3, #0] } } cpu_irq_critical_section_counter++; de6: 4a07 ldr r2, [pc, #28] ; (e04 ) de8: 6813 ldr r3, [r2, #0] dea: 3301 adds r3, #1 dec: 6013 str r3, [r2, #0] } dee: 4770 bx lr __ASM volatile ("cpsid i" : : : "memory"); df0: b672 cpsid i __ASM volatile ("dmb 0xF":::"memory"); df2: f3bf 8f5f dmb sy cpu_irq_disable(); df6: 2200 movs r2, #0 df8: 4b04 ldr r3, [pc, #16] ; (e0c ) dfa: 701a strb r2, [r3, #0] cpu_irq_prev_interrupt_state = true; dfc: 3201 adds r2, #1 dfe: 4b02 ldr r3, [pc, #8] ; (e08 ) e00: 701a strb r2, [r3, #0] e02: e7f0 b.n de6 e04: 200026c0 .word 0x200026c0 e08: 200026c4 .word 0x200026c4 e0c: 2000000c .word 0x2000000c 00000e10 : 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--; e10: 4b08 ldr r3, [pc, #32] ; (e34 ) e12: 681a ldr r2, [r3, #0] e14: 3a01 subs r2, #1 e16: 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)) { e18: 681b ldr r3, [r3, #0] e1a: 2b00 cmp r3, #0 e1c: d109 bne.n e32 e1e: 4b06 ldr r3, [pc, #24] ; (e38 ) e20: 781b ldrb r3, [r3, #0] e22: 2b00 cmp r3, #0 e24: d005 beq.n e32 cpu_irq_enable(); e26: 2201 movs r2, #1 e28: 4b04 ldr r3, [pc, #16] ; (e3c ) e2a: 701a strb r2, [r3, #0] e2c: f3bf 8f5f dmb sy __ASM volatile ("cpsie i" : : : "memory"); e30: b662 cpsie i } } e32: 4770 bx lr e34: 200026c0 .word 0x200026c0 e38: 200026c4 .word 0x200026c4 e3c: 2000000c .word 0x2000000c 00000e40 : void board_init(void); # pragma weak board_init=system_board_init #endif void system_board_init(void) { e40: b5f0 push {r4, r5, r6, r7, lr} e42: 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; e44: ac01 add r4, sp, #4 e46: 2501 movs r5, #1 e48: 7065 strb r5, [r4, #1] config->powersave = false; e4a: 2700 movs r7, #0 e4c: 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; e4e: 7025 strb r5, [r4, #0] port_pin_set_config(LED_0_PIN, &pin_conf); e50: 0021 movs r1, r4 e52: 203e movs r0, #62 ; 0x3e e54: 4e06 ldr r6, [pc, #24] ; (e70 ) e56: 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; e58: 2280 movs r2, #128 ; 0x80 e5a: 05d2 lsls r2, r2, #23 e5c: 4b05 ldr r3, [pc, #20] ; (e74 ) e5e: 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; e60: 7027 strb r7, [r4, #0] pin_conf.input_pull = PORT_PIN_PULL_UP; e62: 7065 strb r5, [r4, #1] port_pin_set_config(BUTTON_0_PIN, &pin_conf); e64: 0021 movs r1, r4 e66: 200f movs r0, #15 e68: 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 } e6a: b003 add sp, #12 e6c: bdf0 pop {r4, r5, r6, r7, pc} e6e: 46c0 nop ; (mov r8, r8) e70: 00000e79 .word 0x00000e79 e74: 41004480 .word 0x41004480 00000e78 : * \param[in] config Configuration settings for the pin */ void port_pin_set_config( const uint8_t gpio_pin, const struct port_config *const config) { e78: b500 push {lr} e7a: b083 sub sp, #12 config->mux_position = SYSTEM_PINMUX_GPIO; e7c: ab01 add r3, sp, #4 e7e: 2280 movs r2, #128 ; 0x80 e80: 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; e82: 780a ldrb r2, [r1, #0] e84: 705a strb r2, [r3, #1] pinmux_config.input_pull = (enum system_pinmux_pin_pull)config->input_pull; e86: 784a ldrb r2, [r1, #1] e88: 709a strb r2, [r3, #2] pinmux_config.powersave = config->powersave; e8a: 788a ldrb r2, [r1, #2] e8c: 70da strb r2, [r3, #3] system_pinmux_pin_set_config(gpio_pin, &pinmux_config); e8e: 0019 movs r1, r3 e90: 4b01 ldr r3, [pc, #4] ; (e98 ) e92: 4798 blx r3 } e94: b003 add sp, #12 e96: bd00 pop {pc} e98: 0000160d .word 0x0000160d 00000e9c : */ void port_group_set_config( PortGroup *const port, const uint32_t mask, const struct port_config *const config) { e9c: b510 push {r4, lr} e9e: b082 sub sp, #8 ea0: ab01 add r3, sp, #4 ea2: 2480 movs r4, #128 ; 0x80 ea4: 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; ea6: 7814 ldrb r4, [r2, #0] ea8: 705c strb r4, [r3, #1] pinmux_config.input_pull = (enum system_pinmux_pin_pull)config->input_pull; eaa: 7854 ldrb r4, [r2, #1] eac: 709c strb r4, [r3, #2] pinmux_config.powersave = config->powersave; eae: 7892 ldrb r2, [r2, #2] eb0: 70da strb r2, [r3, #3] system_pinmux_group_set_config(port, mask, &pinmux_config); eb2: 001a movs r2, r3 eb4: 4b01 ldr r3, [pc, #4] ; (ebc ) eb6: 4798 blx r3 } eb8: b002 add sp, #8 eba: bd10 pop {r4, pc} ebc: 0000163d .word 0x0000163d 00000ec0 : * * \returns Frequency of the given clock source, in Hz. */ uint32_t system_clock_source_get_hz( const enum system_clock_source clock_source) { ec0: b510 push {r4, lr} switch (clock_source) { ec2: 2808 cmp r0, #8 ec4: d803 bhi.n ece ec6: 0080 lsls r0, r0, #2 ec8: 4b1c ldr r3, [pc, #112] ; (f3c ) eca: 581b ldr r3, [r3, r0] ecc: 469f mov pc, r3 return _system_clock_inst.dpll.frequency; #endif default: return 0; ece: 2000 movs r0, #0 ed0: e032 b.n f38 return _system_clock_inst.xosc.frequency; ed2: 4b1b ldr r3, [pc, #108] ; (f40 ) ed4: 6918 ldr r0, [r3, #16] ed6: e02f b.n f38 return 8000000UL >> SYSCTRL->OSC8M.bit.PRESC; ed8: 4b1a ldr r3, [pc, #104] ; (f44 ) eda: 6a1b ldr r3, [r3, #32] edc: 059b lsls r3, r3, #22 ede: 0f9b lsrs r3, r3, #30 ee0: 4819 ldr r0, [pc, #100] ; (f48 ) ee2: 40d8 lsrs r0, r3 ee4: e028 b.n f38 return _system_clock_inst.xosc32k.frequency; ee6: 4b16 ldr r3, [pc, #88] ; (f40 ) ee8: 6958 ldr r0, [r3, #20] eea: e025 b.n f38 if (!(_system_clock_inst.dfll.control & SYSCTRL_DFLLCTRL_ENABLE)) eec: 4b14 ldr r3, [pc, #80] ; (f40 ) eee: 681b ldr r3, [r3, #0] return 0; ef0: 2000 movs r0, #0 if (!(_system_clock_inst.dfll.control & SYSCTRL_DFLLCTRL_ENABLE)) ef2: 079b lsls r3, r3, #30 ef4: d520 bpl.n f38 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { ef6: 4913 ldr r1, [pc, #76] ; (f44 ) ef8: 2210 movs r2, #16 efa: 68cb ldr r3, [r1, #12] efc: 421a tst r2, r3 efe: d0fc beq.n efa switch(_system_clock_inst.dfll.control & f00: 4b0f ldr r3, [pc, #60] ; (f40 ) f02: 681a ldr r2, [r3, #0] f04: 2324 movs r3, #36 ; 0x24 f06: 4013 ands r3, r2 f08: 2b04 cmp r3, #4 f0a: d001 beq.n f10 return 48000000UL; f0c: 480f ldr r0, [pc, #60] ; (f4c ) f0e: e013 b.n f38 return system_gclk_chan_get_hz(SYSCTRL_GCLK_ID_DFLL48) * f10: 2000 movs r0, #0 f12: 4b0f ldr r3, [pc, #60] ; (f50 ) f14: 4798 blx r3 (_system_clock_inst.dfll.mul & 0xffff); f16: 4b0a ldr r3, [pc, #40] ; (f40 ) f18: 689b ldr r3, [r3, #8] f1a: 041b lsls r3, r3, #16 f1c: 0c1b lsrs r3, r3, #16 return system_gclk_chan_get_hz(SYSCTRL_GCLK_ID_DFLL48) * f1e: 4358 muls r0, r3 f20: e00a b.n f38 if (!(SYSCTRL->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_ENABLE)) { f22: 2350 movs r3, #80 ; 0x50 f24: 4a07 ldr r2, [pc, #28] ; (f44 ) f26: 5cd3 ldrb r3, [r2, r3] return 0; f28: 2000 movs r0, #0 if (!(SYSCTRL->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_ENABLE)) { f2a: 075b lsls r3, r3, #29 f2c: d504 bpl.n f38 return _system_clock_inst.dpll.frequency; f2e: 4b04 ldr r3, [pc, #16] ; (f40 ) f30: 68d8 ldr r0, [r3, #12] f32: e001 b.n f38 return 32768UL; f34: 2080 movs r0, #128 ; 0x80 f36: 0200 lsls r0, r0, #8 } } f38: bd10 pop {r4, pc} f3a: 46c0 nop ; (mov r8, r8) f3c: 000254f0 .word 0x000254f0 f40: 200026c8 .word 0x200026c8 f44: 40000800 .word 0x40000800 f48: 007a1200 .word 0x007a1200 f4c: 02dc6c00 .word 0x02dc6c00 f50: 00001531 .word 0x00001531 00000f54 : * * \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) { f54: b570 push {r4, r5, r6, lr} SYSCTRL_OSC8M_Type temp = SYSCTRL->OSC8M; f56: 490c ldr r1, [pc, #48] ; (f88 ) f58: 6a0b ldr r3, [r1, #32] /* Use temporary struct to reduce register access */ temp.bit.PRESC = config->prescaler; f5a: 7804 ldrb r4, [r0, #0] temp.bit.ONDEMAND = config->on_demand; f5c: 7885 ldrb r5, [r0, #2] temp.bit.RUNSTDBY = config->run_in_standby; SYSCTRL->OSC8M = temp; f5e: 7840 ldrb r0, [r0, #1] f60: 2201 movs r2, #1 f62: 4010 ands r0, r2 f64: 0180 lsls r0, r0, #6 f66: 2640 movs r6, #64 ; 0x40 f68: 43b3 bics r3, r6 f6a: 4303 orrs r3, r0 f6c: 402a ands r2, r5 f6e: 01d2 lsls r2, r2, #7 f70: 2080 movs r0, #128 ; 0x80 f72: 4383 bics r3, r0 f74: 4313 orrs r3, r2 f76: 2203 movs r2, #3 f78: 4022 ands r2, r4 f7a: 0212 lsls r2, r2, #8 f7c: 4803 ldr r0, [pc, #12] ; (f8c ) f7e: 4003 ands r3, r0 f80: 4313 orrs r3, r2 f82: 620b str r3, [r1, #32] } f84: bd70 pop {r4, r5, r6, pc} f86: 46c0 nop ; (mov r8, r8) f88: 40000800 .word 0x40000800 f8c: fffffcff .word 0xfffffcff 00000f90 : * * \param[in] config XOSC32K configuration structure containing the new config */ void system_clock_source_xosc32k_set_config( struct system_clock_source_xosc32k_config *const config) { f90: b5f0 push {r4, r5, r6, r7, lr} f92: 46de mov lr, fp f94: 4657 mov r7, sl f96: 464e mov r6, r9 f98: 4645 mov r5, r8 f9a: b5e0 push {r5, r6, r7, lr} f9c: 0001 movs r1, r0 SYSCTRL_XOSC32K_Type temp = SYSCTRL->XOSC32K; f9e: 4b26 ldr r3, [pc, #152] ; (1038 ) fa0: 469b mov fp, r3 fa2: 8a9b ldrh r3, [r3, #20] temp.bit.STARTUP = config->startup_time; fa4: 7845 ldrb r5, [r0, #1] if (config->external_clock == SYSTEM_CLOCK_EXTERNAL_CRYSTAL) { fa6: 7800 ldrb r0, [r0, #0] fa8: 4242 negs r2, r0 faa: 4142 adcs r2, r0 fac: 4691 mov r9, r2 temp.bit.XTALEN = 1; } else { temp.bit.XTALEN = 0; } temp.bit.AAMPEN = config->auto_gain_control; fae: 7888 ldrb r0, [r1, #2] temp.bit.EN1K = config->enable_1khz_output; fb0: 78ca ldrb r2, [r1, #3] fb2: 4694 mov ip, r2 temp.bit.EN32K = config->enable_32khz_output; fb4: 790a ldrb r2, [r1, #4] fb6: 4690 mov r8, r2 temp.bit.ONDEMAND = config->on_demand; fb8: 7b4e ldrb r6, [r1, #13] temp.bit.RUNSTDBY = config->run_in_standby; fba: 7b0f ldrb r7, [r1, #12] temp.bit.WRTLOCK = config->write_once; fbc: 7b8c ldrb r4, [r1, #14] /* Cache the new frequency in case the user needs to check the current * operating frequency later */ _system_clock_inst.xosc32k.frequency = config->frequency; fbe: 688a ldr r2, [r1, #8] fc0: 491e ldr r1, [pc, #120] ; (103c ) fc2: 614a str r2, [r1, #20] SYSCTRL->XOSC32K = temp; fc4: 2101 movs r1, #1 fc6: 464a mov r2, r9 fc8: 0092 lsls r2, r2, #2 fca: 4691 mov r9, r2 fcc: 2204 movs r2, #4 fce: 4393 bics r3, r2 fd0: 464a mov r2, r9 fd2: 4313 orrs r3, r2 fd4: 4642 mov r2, r8 fd6: 400a ands r2, r1 fd8: 00d2 lsls r2, r2, #3 fda: 4690 mov r8, r2 fdc: 2208 movs r2, #8 fde: 4393 bics r3, r2 fe0: 4642 mov r2, r8 fe2: 4313 orrs r3, r2 fe4: 4662 mov r2, ip fe6: 400a ands r2, r1 fe8: 0112 lsls r2, r2, #4 fea: 4694 mov ip, r2 fec: 2210 movs r2, #16 fee: 4393 bics r3, r2 ff0: 4662 mov r2, ip ff2: 4313 orrs r3, r2 ff4: 4008 ands r0, r1 ff6: 0140 lsls r0, r0, #5 ff8: 2220 movs r2, #32 ffa: 4393 bics r3, r2 ffc: 4303 orrs r3, r0 ffe: 400f ands r7, r1 1000: 01bf lsls r7, r7, #6 1002: 2040 movs r0, #64 ; 0x40 1004: 4383 bics r3, r0 1006: 433b orrs r3, r7 1008: 400e ands r6, r1 100a: 01f6 lsls r6, r6, #7 100c: 3040 adds r0, #64 ; 0x40 100e: 4383 bics r3, r0 1010: 4333 orrs r3, r6 1012: 3879 subs r0, #121 ; 0x79 1014: 4005 ands r5, r0 1016: 022d lsls r5, r5, #8 1018: 4809 ldr r0, [pc, #36] ; (1040 ) 101a: 4003 ands r3, r0 101c: 432b orrs r3, r5 101e: 4021 ands r1, r4 1020: 0309 lsls r1, r1, #12 1022: 4808 ldr r0, [pc, #32] ; (1044 ) 1024: 4003 ands r3, r0 1026: 430b orrs r3, r1 1028: 465a mov r2, fp 102a: 8293 strh r3, [r2, #20] } 102c: bc3c pop {r2, r3, r4, r5} 102e: 4690 mov r8, r2 1030: 4699 mov r9, r3 1032: 46a2 mov sl, r4 1034: 46ab mov fp, r5 1036: bdf0 pop {r4, r5, r6, r7, pc} 1038: 40000800 .word 0x40000800 103c: 200026c8 .word 0x200026c8 1040: fffff8ff .word 0xfffff8ff 1044: ffffefff .word 0xffffefff 00001048 : * * \param[in] config DFLL configuration structure containing the new config */ void system_clock_source_dfll_set_config( struct system_clock_source_dfll_config *const config) { 1048: b510 push {r4, lr} _system_clock_inst.dfll.val = SYSCTRL_DFLLVAL_COARSE(config->coarse_value) | 104a: 7a03 ldrb r3, [r0, #8] 104c: 069b lsls r3, r3, #26 104e: 0c1b lsrs r3, r3, #16 SYSCTRL_DFLLVAL_FINE(config->fine_value); 1050: 8942 ldrh r2, [r0, #10] 1052: 0592 lsls r2, r2, #22 1054: 0d92 lsrs r2, r2, #22 SYSCTRL_DFLLVAL_COARSE(config->coarse_value) | 1056: 4313 orrs r3, r2 _system_clock_inst.dfll.val = 1058: 4918 ldr r1, [pc, #96] ; (10bc ) 105a: 604b str r3, [r1, #4] _system_clock_inst.dfll.control = (uint32_t)config->wakeup_lock | 105c: 7983 ldrb r3, [r0, #6] 105e: 79c2 ldrb r2, [r0, #7] 1060: 4313 orrs r3, r2 (uint32_t)config->stable_tracking | (uint32_t)config->quick_lock | 1062: 8842 ldrh r2, [r0, #2] 1064: 8884 ldrh r4, [r0, #4] 1066: 4322 orrs r2, r4 1068: 4313 orrs r3, r2 (uint32_t)config->chill_cycle | ((uint32_t)config->on_demand << SYSCTRL_DFLLCTRL_ONDEMAND_Pos); 106a: 7842 ldrb r2, [r0, #1] 106c: 01d2 lsls r2, r2, #7 (uint32_t)config->chill_cycle | 106e: 4313 orrs r3, r2 _system_clock_inst.dfll.control = 1070: 600b str r3, [r1, #0] if (config->loop_mode == SYSTEM_CLOCK_DFLL_LOOP_MODE_CLOSED) { 1072: 7803 ldrb r3, [r0, #0] 1074: 2b04 cmp r3, #4 1076: d011 beq.n 109c SYSCTRL_DFLLMUL_MUL(config->multiply_factor); /* Enable the closed loop mode */ _system_clock_inst.dfll.control |= config->loop_mode; } if (config->loop_mode == SYSTEM_CLOCK_DFLL_LOOP_MODE_USB_RECOVERY) { 1078: 2b20 cmp r3, #32 107a: d10e bne.n 109a _system_clock_inst.dfll.mul = SYSCTRL_DFLLMUL_CSTEP(config->coarse_max_step) | 107c: 7b03 ldrb r3, [r0, #12] 107e: 069b lsls r3, r3, #26 SYSCTRL_DFLLMUL_FSTEP(config->fine_max_step) | SYSCTRL_DFLLMUL_MUL(config->multiply_factor); 1080: 8a02 ldrh r2, [r0, #16] SYSCTRL_DFLLMUL_FSTEP(config->fine_max_step) | 1082: 4313 orrs r3, r2 1084: 89c2 ldrh r2, [r0, #14] 1086: 0412 lsls r2, r2, #16 1088: 490d ldr r1, [pc, #52] ; (10c0 ) 108a: 400a ands r2, r1 108c: 4313 orrs r3, r2 _system_clock_inst.dfll.mul = 108e: 4a0b ldr r2, [pc, #44] ; (10bc ) 1090: 6093 str r3, [r2, #8] /* Enable the USB recovery mode */ _system_clock_inst.dfll.control |= config->loop_mode | 1092: 6811 ldr r1, [r2, #0] 1094: 4b0b ldr r3, [pc, #44] ; (10c4 ) 1096: 430b orrs r3, r1 1098: 6013 str r3, [r2, #0] SYSCTRL_DFLLCTRL_MODE | SYSCTRL_DFLLCTRL_BPLCKC; } } 109a: bd10 pop {r4, pc} SYSCTRL_DFLLMUL_CSTEP(config->coarse_max_step) | 109c: 7b03 ldrb r3, [r0, #12] 109e: 069b lsls r3, r3, #26 SYSCTRL_DFLLMUL_MUL(config->multiply_factor); 10a0: 8a02 ldrh r2, [r0, #16] SYSCTRL_DFLLMUL_FSTEP(config->fine_max_step) | 10a2: 4313 orrs r3, r2 10a4: 89c2 ldrh r2, [r0, #14] 10a6: 0412 lsls r2, r2, #16 10a8: 4905 ldr r1, [pc, #20] ; (10c0 ) 10aa: 400a ands r2, r1 10ac: 4313 orrs r3, r2 _system_clock_inst.dfll.mul = 10ae: 4a03 ldr r2, [pc, #12] ; (10bc ) 10b0: 6093 str r3, [r2, #8] _system_clock_inst.dfll.control |= config->loop_mode; 10b2: 6813 ldr r3, [r2, #0] 10b4: 2104 movs r1, #4 10b6: 430b orrs r3, r1 10b8: 6013 str r3, [r2, #0] 10ba: e7ee b.n 109a 10bc: 200026c8 .word 0x200026c8 10c0: 03ff0000 .word 0x03ff0000 10c4: 00000424 .word 0x00000424 000010c8 : * device */ enum status_code system_clock_source_enable( const enum system_clock_source clock_source) { switch (clock_source) { 10c8: 2808 cmp r0, #8 10ca: d803 bhi.n 10d4 10cc: 0080 lsls r0, r0, #2 10ce: 4b25 ldr r3, [pc, #148] ; (1164 ) 10d0: 581b ldr r3, [r3, r0] 10d2: 469f mov pc, r3 /* Always enabled */ return STATUS_OK; default: Assert(false); return STATUS_ERR_INVALID_ARG; 10d4: 2017 movs r0, #23 10d6: e044 b.n 1162 SYSCTRL->OSC8M.reg |= SYSCTRL_OSC8M_ENABLE; 10d8: 4a23 ldr r2, [pc, #140] ; (1168 ) 10da: 6a13 ldr r3, [r2, #32] 10dc: 2102 movs r1, #2 10de: 430b orrs r3, r1 10e0: 6213 str r3, [r2, #32] return STATUS_OK; 10e2: 2000 movs r0, #0 10e4: e03d b.n 1162 SYSCTRL->OSC32K.reg |= SYSCTRL_OSC32K_ENABLE; 10e6: 4a20 ldr r2, [pc, #128] ; (1168 ) 10e8: 6993 ldr r3, [r2, #24] 10ea: 2102 movs r1, #2 10ec: 430b orrs r3, r1 10ee: 6193 str r3, [r2, #24] } return STATUS_OK; 10f0: 2000 movs r0, #0 break; 10f2: e036 b.n 1162 SYSCTRL->XOSC.reg |= SYSCTRL_XOSC_ENABLE; 10f4: 4a1c ldr r2, [pc, #112] ; (1168 ) 10f6: 8a13 ldrh r3, [r2, #16] 10f8: 2102 movs r1, #2 10fa: 430b orrs r3, r1 10fc: 8213 strh r3, [r2, #16] return STATUS_OK; 10fe: 2000 movs r0, #0 break; 1100: e02f b.n 1162 SYSCTRL->XOSC32K.reg |= SYSCTRL_XOSC32K_ENABLE; 1102: 4a19 ldr r2, [pc, #100] ; (1168 ) 1104: 8a93 ldrh r3, [r2, #20] 1106: 2102 movs r1, #2 1108: 430b orrs r3, r1 110a: 8293 strh r3, [r2, #20] return STATUS_OK; 110c: 2000 movs r0, #0 break; 110e: e028 b.n 1162 _system_clock_inst.dfll.control |= SYSCTRL_DFLLCTRL_ENABLE; 1110: 4916 ldr r1, [pc, #88] ; (116c ) 1112: 680b ldr r3, [r1, #0] 1114: 2202 movs r2, #2 1116: 4313 orrs r3, r2 1118: 600b str r3, [r1, #0] SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_ENABLE; 111a: 4b13 ldr r3, [pc, #76] ; (1168 ) 111c: 849a strh r2, [r3, #36] ; 0x24 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { 111e: 0019 movs r1, r3 1120: 320e adds r2, #14 1122: 68cb ldr r3, [r1, #12] 1124: 421a tst r2, r3 1126: d0fc beq.n 1122 SYSCTRL->DFLLMUL.reg = _system_clock_inst.dfll.mul; 1128: 4a10 ldr r2, [pc, #64] ; (116c ) 112a: 6891 ldr r1, [r2, #8] 112c: 4b0e ldr r3, [pc, #56] ; (1168 ) 112e: 62d9 str r1, [r3, #44] ; 0x2c SYSCTRL->DFLLVAL.reg = _system_clock_inst.dfll.val; 1130: 6852 ldr r2, [r2, #4] 1132: 629a str r2, [r3, #40] ; 0x28 SYSCTRL->DFLLCTRL.reg = 0; 1134: 2200 movs r2, #0 1136: 849a strh r2, [r3, #36] ; 0x24 while (!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)) { 1138: 0019 movs r1, r3 113a: 3210 adds r2, #16 113c: 68cb ldr r3, [r1, #12] 113e: 421a tst r2, r3 1140: d0fc beq.n 113c SYSCTRL->DFLLCTRL.reg = _system_clock_inst.dfll.control; 1142: 4b0a ldr r3, [pc, #40] ; (116c ) 1144: 681b ldr r3, [r3, #0] 1146: b29b uxth r3, r3 1148: 4a07 ldr r2, [pc, #28] ; (1168 ) 114a: 8493 strh r3, [r2, #36] ; 0x24 return STATUS_OK; 114c: 2000 movs r0, #0 114e: e008 b.n 1162 SYSCTRL->DPLLCTRLA.reg |= SYSCTRL_DPLLCTRLA_ENABLE; 1150: 4905 ldr r1, [pc, #20] ; (1168 ) 1152: 2244 movs r2, #68 ; 0x44 1154: 5c8b ldrb r3, [r1, r2] 1156: 2002 movs r0, #2 1158: 4303 orrs r3, r0 115a: 548b strb r3, [r1, r2] return STATUS_OK; 115c: 2000 movs r0, #0 break; 115e: e000 b.n 1162 return STATUS_OK; 1160: 2000 movs r0, #0 } 1162: 4770 bx lr 1164: 00025514 .word 0x00025514 1168: 40000800 .word 0x40000800 116c: 200026c8 .word 0x200026c8 00001170 : * \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) { 1170: b5f0 push {r4, r5, r6, r7, lr} 1172: b08f sub sp, #60 ; 0x3c /* 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 | 1174: 22c2 movs r2, #194 ; 0xc2 1176: 00d2 lsls r2, r2, #3 1178: 4b4a ldr r3, [pc, #296] ; (12a4 ) 117a: 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; 117c: 4a4a ldr r2, [pc, #296] ; (12a8 ) 117e: 6853 ldr r3, [r2, #4] 1180: 211e movs r1, #30 1182: 438b bics r3, r1 1184: 391a subs r1, #26 1186: 430b orrs r3, r1 1188: 6053 str r3, [r2, #4] gclk_conf.source_generator = GCLK_GENERATOR_2; 118a: 2202 movs r2, #2 118c: ab01 add r3, sp, #4 118e: 701a strb r2, [r3, #0] for (gclk_id = 0; gclk_id < GCLK_NUM; gclk_id++) { 1190: 2400 movs r4, #0 system_gclk_chan_set_config(gclk_id, &gclk_conf); 1192: 4d46 ldr r5, [pc, #280] ; (12ac ) 1194: b2e0 uxtb r0, r4 1196: a901 add r1, sp, #4 1198: 47a8 blx r5 for (gclk_id = 0; gclk_id < GCLK_NUM; gclk_id++) { 119a: 3401 adds r4, #1 119c: 2c25 cmp r4, #37 ; 0x25 119e: d1f9 bne.n 1194 config->external_clock = SYSTEM_CLOCK_EXTERNAL_CRYSTAL; 11a0: a80a add r0, sp, #40 ; 0x28 11a2: 2300 movs r3, #0 11a4: 7003 strb r3, [r0, #0] config->frequency = 32768UL; 11a6: 2280 movs r2, #128 ; 0x80 11a8: 0212 lsls r2, r2, #8 11aa: 6082 str r2, [r0, #8] config->enable_1khz_output = false; 11ac: 70c3 strb r3, [r0, #3] config->enable_32khz_output = true; 11ae: 2201 movs r2, #1 11b0: 7102 strb r2, [r0, #4] config->write_once = false; 11b2: 7383 strb r3, [r0, #14] struct system_clock_source_xosc32k_config xosc32k_conf; system_clock_source_xosc32k_get_config_defaults(&xosc32k_conf); xosc32k_conf.frequency = 32768UL; xosc32k_conf.external_clock = CONF_CLOCK_XOSC32K_EXTERNAL_CRYSTAL; xosc32k_conf.startup_time = CONF_CLOCK_XOSC32K_STARTUP_TIME; 11b4: 2103 movs r1, #3 11b6: 7041 strb r1, [r0, #1] xosc32k_conf.auto_gain_control = CONF_CLOCK_XOSC32K_AUTO_AMPLITUDE_CONTROL; 11b8: 7082 strb r2, [r0, #2] xosc32k_conf.enable_1khz_output = CONF_CLOCK_XOSC32K_ENABLE_1KHZ_OUPUT; xosc32k_conf.enable_32khz_output = CONF_CLOCK_XOSC32K_ENABLE_32KHZ_OUTPUT; xosc32k_conf.on_demand = false; 11ba: 7343 strb r3, [r0, #13] xosc32k_conf.run_in_standby = CONF_CLOCK_XOSC32K_RUN_IN_STANDBY; 11bc: 7302 strb r2, [r0, #12] system_clock_source_xosc32k_set_config(&xosc32k_conf); 11be: 4b3c ldr r3, [pc, #240] ; (12b0 ) 11c0: 4798 blx r3 system_clock_source_enable(SYSTEM_CLOCK_SOURCE_XOSC32K); 11c2: 2005 movs r0, #5 11c4: 4b3b ldr r3, [pc, #236] ; (12b4 ) 11c6: 4798 blx r3 return ((SYSCTRL->PCLKSR.reg & mask) == mask); 11c8: 4936 ldr r1, [pc, #216] ; (12a4 ) 11ca: 2202 movs r2, #2 11cc: 68cb ldr r3, [r1, #12] while(!system_clock_source_is_ready(SYSTEM_CLOCK_SOURCE_XOSC32K)); 11ce: 421a tst r2, r3 11d0: d0fc beq.n 11cc if (CONF_CLOCK_XOSC32K_ON_DEMAND) { SYSCTRL->XOSC32K.bit.ONDEMAND = 1; 11d2: 4a34 ldr r2, [pc, #208] ; (12a4 ) 11d4: 8a93 ldrh r3, [r2, #20] 11d6: 2180 movs r1, #128 ; 0x80 11d8: 430b orrs r3, r1 11da: 8293 strh r3, [r2, #20] config->quick_lock = SYSTEM_CLOCK_DFLL_QUICK_LOCK_ENABLE; 11dc: ab05 add r3, sp, #20 11de: 2100 movs r1, #0 11e0: 2200 movs r2, #0 11e2: 8059 strh r1, [r3, #2] config->chill_cycle = SYSTEM_CLOCK_DFLL_CHILL_CYCLE_ENABLE; 11e4: 8099 strh r1, [r3, #4] config->wakeup_lock = SYSTEM_CLOCK_DFLL_WAKEUP_LOCK_KEEP; 11e6: 719a strb r2, [r3, #6] config->stable_tracking = SYSTEM_CLOCK_DFLL_STABLE_TRACKING_TRACK_AFTER_LOCK; 11e8: 71da strb r2, [r3, #7] config->fine_value = 0xff / 4; /* Midpoint */ 11ea: 313f adds r1, #63 ; 0x3f 11ec: 8159 strh r1, [r3, #10] /* DFLL Config (Open and Closed Loop) */ #if CONF_CLOCK_DFLL_ENABLE == true struct system_clock_source_dfll_config dfll_conf; system_clock_source_dfll_get_config_defaults(&dfll_conf); dfll_conf.loop_mode = CONF_CLOCK_DFLL_LOOP_MODE; 11ee: 393b subs r1, #59 ; 0x3b 11f0: 7019 strb r1, [r3, #0] dfll_conf.on_demand = false; 11f2: 705a strb r2, [r3, #1] /* Using DFLL48M COARSE CAL value from NVM Software Calibration Area Mapping in DFLL.COARSE helps to output a frequency close to 48 MHz.*/ #define NVM_DFLL_COARSE_POS 58 /* DFLL48M Coarse calibration value bit position.*/ #define NVM_DFLL_COARSE_SIZE 6 /* DFLL48M Coarse calibration value bit size.*/ uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP4) 11f4: 4b30 ldr r3, [pc, #192] ; (12b8 ) 11f6: 681b ldr r3, [r3, #0] 11f8: 0e9b lsrs r3, r3, #26 + (NVM_DFLL_COARSE_POS / 32)) >> (NVM_DFLL_COARSE_POS % 32)) & ((1 << NVM_DFLL_COARSE_SIZE) - 1); /* In some revision chip, the coarse calibration value is not correct. */ if (coarse == 0x3f) { 11fa: 2b3f cmp r3, #63 ; 0x3f 11fc: d04f beq.n 129e coarse = 0x1f; } dfll_conf.coarse_value = coarse; 11fe: a805 add r0, sp, #20 1200: 7203 strb r3, [r0, #8] # else dfll_conf.chill_cycle = SYSTEM_CLOCK_DFLL_CHILL_CYCLE_DISABLE; # endif if (CONF_CLOCK_DFLL_LOOP_MODE == SYSTEM_CLOCK_DFLL_LOOP_MODE_CLOSED) { dfll_conf.multiply_factor = CONF_CLOCK_DFLL_MULTIPLY_FACTOR; 1202: 4b2e ldr r3, [pc, #184] ; (12bc ) 1204: 8203 strh r3, [r0, #16] } dfll_conf.coarse_max_step = CONF_CLOCK_DFLL_MAX_COARSE_STEP_SIZE; 1206: 2307 movs r3, #7 1208: 7303 strb r3, [r0, #12] dfll_conf.fine_max_step = CONF_CLOCK_DFLL_MAX_FINE_STEP_SIZE; 120a: 3338 adds r3, #56 ; 0x38 120c: 81c3 strh r3, [r0, #14] dfll_conf.chill_cycle = SYSTEM_CLOCK_DFLL_CHILL_CYCLE_DISABLE; dfll_conf.multiply_factor = 48000; } system_clock_source_dfll_set_config(&dfll_conf); 120e: 4b2c ldr r3, [pc, #176] ; (12c0 ) 1210: 4798 blx r3 config->run_in_standby = false; 1212: a804 add r0, sp, #16 1214: 2500 movs r5, #0 1216: 7045 strb r5, [r0, #1] /* 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; 1218: 7005 strb r5, [r0, #0] osc8m_conf.on_demand = CONF_CLOCK_OSC8M_ON_DEMAND; 121a: 7085 strb r5, [r0, #2] osc8m_conf.run_in_standby = CONF_CLOCK_OSC8M_RUN_IN_STANDBY; system_clock_source_osc8m_set_config(&osc8m_conf); 121c: 4b29 ldr r3, [pc, #164] ; (12c4 ) 121e: 4798 blx r3 system_clock_source_enable(SYSTEM_CLOCK_SOURCE_OSC8M); 1220: 2006 movs r0, #6 1222: 4f24 ldr r7, [pc, #144] ; (12b4 ) 1224: 47b8 blx r7 /* GCLK */ #if CONF_CLOCK_CONFIGURE_GCLK == true system_gclk_init(); 1226: 4b28 ldr r3, [pc, #160] ; (12c8 ) 1228: 4798 blx r3 { /* Sanity check arguments */ Assert(config); /* Default configuration values */ config->division_factor = 1; 122a: ac01 add r4, sp, #4 122c: 2601 movs r6, #1 122e: 9602 str r6, [sp, #8] config->high_when_disabled = false; 1230: 7065 strb r5, [r4, #1] config->source_clock = GCLK_SOURCE_OSC48M; #else config->source_clock = GCLK_SOURCE_OSC8M; #endif config->run_in_standby = false; config->output_enable = false; 1232: 7265 strb r5, [r4, #9] /* Configure all GCLK generators except for the main generator, which * is configured later after all other clock systems are set up */ MREPEAT(GCLK_GEN_NUM, _CONF_CLOCK_GCLK_CONFIG_NONMAIN, ~); 1234: 2305 movs r3, #5 1236: 7023 strb r3, [r4, #0] 1238: 7226 strb r6, [r4, #8] 123a: 0021 movs r1, r4 123c: 2001 movs r0, #1 123e: 4b23 ldr r3, [pc, #140] ; (12cc ) 1240: 4798 blx r3 1242: 2001 movs r0, #1 1244: 4b22 ldr r3, [pc, #136] ; (12d0 ) 1246: 4798 blx r3 /* Enable DFLL reference clock if in closed loop mode */ if (CONF_CLOCK_DFLL_LOOP_MODE == SYSTEM_CLOCK_DFLL_LOOP_MODE_CLOSED) { struct system_gclk_chan_config dfll_gclk_chan_conf; system_gclk_chan_get_config_defaults(&dfll_gclk_chan_conf); dfll_gclk_chan_conf.source_generator = CONF_CLOCK_DFLL_SOURCE_GCLK_GENERATOR; 1248: 7026 strb r6, [r4, #0] system_gclk_chan_set_config(SYSCTRL_GCLK_ID_DFLL48, &dfll_gclk_chan_conf); 124a: 0021 movs r1, r4 124c: 2000 movs r0, #0 124e: 4b17 ldr r3, [pc, #92] ; (12ac ) 1250: 4798 blx r3 system_gclk_chan_enable(SYSCTRL_GCLK_ID_DFLL48); 1252: 2000 movs r0, #0 1254: 4b1f ldr r3, [pc, #124] ; (12d4 ) 1256: 4798 blx r3 #endif /* DFLL Enable (Open and Closed Loop) */ #if CONF_CLOCK_DFLL_ENABLE == true system_clock_source_enable(SYSTEM_CLOCK_SOURCE_DFLL); 1258: 2007 movs r0, #7 125a: 47b8 blx r7 return ((SYSCTRL->PCLKSR.reg & mask) == mask); 125c: 4911 ldr r1, [pc, #68] ; (12a4 ) 125e: 22d0 movs r2, #208 ; 0xd0 1260: 68cb ldr r3, [r1, #12] 1262: 4013 ands r3, r2 while(!system_clock_source_is_ready(SYSTEM_CLOCK_SOURCE_DFLL)); 1264: 2bd0 cmp r3, #208 ; 0xd0 1266: d1fb bne.n 1260 if (CONF_CLOCK_DFLL_ON_DEMAND) { SYSCTRL->DFLLCTRL.bit.ONDEMAND = 1; 1268: 4a0e ldr r2, [pc, #56] ; (12a4 ) 126a: 8c93 ldrh r3, [r2, #36] ; 0x24 126c: 2180 movs r1, #128 ; 0x80 126e: 430b orrs r3, r1 1270: 8493 strh r3, [r2, #36] ; 0x24 PM->CPUSEL.reg = (uint32_t)divider; 1272: 4a19 ldr r2, [pc, #100] ; (12d8 ) 1274: 2300 movs r3, #0 1276: 7213 strb r3, [r2, #8] PM->APBASEL.reg = (uint32_t)divider; 1278: 7253 strb r3, [r2, #9] PM->APBBSEL.reg = (uint32_t)divider; 127a: 7293 strb r3, [r2, #10] PM->APBCSEL.reg = (uint32_t)divider; 127c: 72d3 strb r3, [r2, #11] config->division_factor = 1; 127e: a901 add r1, sp, #4 1280: 2201 movs r2, #1 1282: 604a str r2, [r1, #4] config->high_when_disabled = false; 1284: 704b strb r3, [r1, #1] config->run_in_standby = false; 1286: 720b strb r3, [r1, #8] config->output_enable = false; 1288: 724b strb r3, [r1, #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, ~); 128a: 3307 adds r3, #7 128c: 700b strb r3, [r1, #0] 128e: 2000 movs r0, #0 1290: 4b0e ldr r3, [pc, #56] ; (12cc ) 1292: 4798 blx r3 1294: 2000 movs r0, #0 1296: 4b0e ldr r3, [pc, #56] ; (12d0 ) 1298: 4798 blx r3 #endif } 129a: b00f add sp, #60 ; 0x3c 129c: bdf0 pop {r4, r5, r6, r7, pc} coarse = 0x1f; 129e: 3b20 subs r3, #32 12a0: e7ad b.n 11fe 12a2: 46c0 nop ; (mov r8, r8) 12a4: 40000800 .word 0x40000800 12a8: 41004000 .word 0x41004000 12ac: 00001515 .word 0x00001515 12b0: 00000f91 .word 0x00000f91 12b4: 000010c9 .word 0x000010c9 12b8: 00806024 .word 0x00806024 12bc: 000005b9 .word 0x000005b9 12c0: 00001049 .word 0x00001049 12c4: 00000f55 .word 0x00000f55 12c8: 000012dd .word 0x000012dd 12cc: 00001301 .word 0x00001301 12d0: 000013b9 .word 0x000013b9 12d4: 00001489 .word 0x00001489 12d8: 40000400 .word 0x40000400 000012dc : PM->APBAMASK.reg |= mask; 12dc: 4a06 ldr r2, [pc, #24] ; (12f8 ) 12de: 6993 ldr r3, [r2, #24] 12e0: 2108 movs r1, #8 12e2: 430b orrs r3, r1 12e4: 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; 12e6: 2201 movs r2, #1 12e8: 4b04 ldr r3, [pc, #16] ; (12fc ) 12ea: 701a strb r2, [r3, #0] while (GCLK->CTRL.reg & GCLK_CTRL_SWRST) { 12ec: 0019 movs r1, r3 12ee: 780b ldrb r3, [r1, #0] 12f0: 4213 tst r3, r2 12f2: d1fc bne.n 12ee /* Wait for reset to complete */ } } 12f4: 4770 bx lr 12f6: 46c0 nop ; (mov r8, r8) 12f8: 40000400 .word 0x40000400 12fc: 40000c00 .word 0x40000c00 00001300 : * \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) { 1300: b570 push {r4, r5, r6, lr} 1302: 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); 1304: 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; 1306: 780d ldrb r5, [r1, #0] 1308: 022d lsls r5, r5, #8 130a: 4305 orrs r5, r0 /* Configure the clock to be either high or low when disabled */ if (config->high_when_disabled) { 130c: 784b ldrb r3, [r1, #1] 130e: 2b00 cmp r3, #0 1310: d002 beq.n 1318 new_genctrl_config |= GCLK_GENCTRL_OOV; 1312: 2380 movs r3, #128 ; 0x80 1314: 02db lsls r3, r3, #11 1316: 431d orrs r5, r3 } /* Configure if the clock output to I/O pin should be enabled. */ if (config->output_enable) { 1318: 7a4b ldrb r3, [r1, #9] 131a: 2b00 cmp r3, #0 131c: d002 beq.n 1324 new_genctrl_config |= GCLK_GENCTRL_OE; 131e: 2380 movs r3, #128 ; 0x80 1320: 031b lsls r3, r3, #12 1322: 431d orrs r5, r3 } /* Set division factor */ if (config->division_factor > 1) { 1324: 6848 ldr r0, [r1, #4] 1326: 2801 cmp r0, #1 1328: d910 bls.n 134c /* Check if division is a power of two */ if (((config->division_factor & (config->division_factor - 1)) == 0)) { 132a: 1e43 subs r3, r0, #1 132c: 4218 tst r0, r3 132e: d134 bne.n 139a * register */ uint32_t div2_count = 0; uint32_t mask; for (mask = (1UL << 1); mask < config->division_factor; 1330: 2802 cmp r0, #2 1332: d930 bls.n 1396 1334: 2302 movs r3, #2 1336: 2200 movs r2, #0 mask <<= 1) { div2_count++; 1338: 3201 adds r2, #1 mask <<= 1) { 133a: 005b lsls r3, r3, #1 for (mask = (1UL << 1); mask < config->division_factor; 133c: 4298 cmp r0, r3 133e: d8fb bhi.n 1338 } /* Set binary divider power of 2 division factor */ new_gendiv_config |= div2_count << GCLK_GENDIV_DIV_Pos; 1340: 0212 lsls r2, r2, #8 1342: 4332 orrs r2, r6 1344: 0014 movs r4, r2 new_genctrl_config |= GCLK_GENCTRL_DIVSEL; 1346: 2380 movs r3, #128 ; 0x80 1348: 035b lsls r3, r3, #13 134a: 431d orrs r5, r3 } } /* Enable or disable the clock in standby mode */ if (config->run_in_standby) { 134c: 7a0b ldrb r3, [r1, #8] 134e: 2b00 cmp r3, #0 1350: d002 beq.n 1358 new_genctrl_config |= GCLK_GENCTRL_RUNSTDBY; 1352: 2380 movs r3, #128 ; 0x80 1354: 039b lsls r3, r3, #14 1356: 431d orrs r5, r3 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1358: 4a13 ldr r2, [pc, #76] ; (13a8 ) 135a: 7853 ldrb r3, [r2, #1] } while (system_gclk_is_syncing()) { 135c: b25b sxtb r3, r3 135e: 2b00 cmp r3, #0 1360: dbfb blt.n 135a cpu_irq_enter_critical(); 1362: 4b12 ldr r3, [pc, #72] ; (13ac ) 1364: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the correct generator */ *((uint8_t*)&GCLK->GENDIV.reg) = generator; 1366: 4b12 ldr r3, [pc, #72] ; (13b0 ) 1368: 701e strb r6, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 136a: 4a0f ldr r2, [pc, #60] ; (13a8 ) 136c: 7853 ldrb r3, [r2, #1] /* Write the new generator configuration */ while (system_gclk_is_syncing()) { 136e: b25b sxtb r3, r3 1370: 2b00 cmp r3, #0 1372: dbfb blt.n 136c /* Wait for synchronization */ }; GCLK->GENDIV.reg = new_gendiv_config; 1374: 4b0c ldr r3, [pc, #48] ; (13a8 ) 1376: 609c str r4, [r3, #8] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1378: 001a movs r2, r3 137a: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 137c: b25b sxtb r3, r3 137e: 2b00 cmp r3, #0 1380: dbfb blt.n 137a /* Wait for synchronization */ }; GCLK->GENCTRL.reg = new_genctrl_config | (GCLK->GENCTRL.reg & GCLK_GENCTRL_GENEN); 1382: 4a09 ldr r2, [pc, #36] ; (13a8 ) 1384: 6853 ldr r3, [r2, #4] 1386: 2180 movs r1, #128 ; 0x80 1388: 0249 lsls r1, r1, #9 138a: 400b ands r3, r1 138c: 431d orrs r5, r3 138e: 6055 str r5, [r2, #4] cpu_irq_leave_critical(); 1390: 4b08 ldr r3, [pc, #32] ; (13b4 ) 1392: 4798 blx r3 system_interrupt_leave_critical_section(); } 1394: bd70 pop {r4, r5, r6, pc} for (mask = (1UL << 1); mask < config->division_factor; 1396: 2200 movs r2, #0 1398: e7d2 b.n 1340 (config->division_factor) << GCLK_GENDIV_DIV_Pos; 139a: 0204 lsls r4, r0, #8 new_gendiv_config |= 139c: 4334 orrs r4, r6 new_genctrl_config |= GCLK_GENCTRL_IDC; 139e: 2380 movs r3, #128 ; 0x80 13a0: 029b lsls r3, r3, #10 13a2: 431d orrs r5, r3 13a4: e7d2 b.n 134c 13a6: 46c0 nop ; (mov r8, r8) 13a8: 40000c00 .word 0x40000c00 13ac: 00000dd1 .word 0x00000dd1 13b0: 40000c08 .word 0x40000c08 13b4: 00000e11 .word 0x00000e11 000013b8 : * * \param[in] generator Generic Clock Generator index to enable */ void system_gclk_gen_enable( const uint8_t generator) { 13b8: b510 push {r4, lr} 13ba: 0004 movs r4, r0 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 13bc: 4a0b ldr r2, [pc, #44] ; (13ec ) 13be: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 13c0: b25b sxtb r3, r3 13c2: 2b00 cmp r3, #0 13c4: dbfb blt.n 13be cpu_irq_enter_critical(); 13c6: 4b0a ldr r3, [pc, #40] ; (13f0 ) 13c8: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the requested generator */ *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 13ca: 4b0a ldr r3, [pc, #40] ; (13f4 ) 13cc: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 13ce: 4a07 ldr r2, [pc, #28] ; (13ec ) 13d0: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 13d2: b25b sxtb r3, r3 13d4: 2b00 cmp r3, #0 13d6: dbfb blt.n 13d0 /* Wait for synchronization */ }; /* Enable generator */ GCLK->GENCTRL.reg |= GCLK_GENCTRL_GENEN; 13d8: 4a04 ldr r2, [pc, #16] ; (13ec ) 13da: 6851 ldr r1, [r2, #4] 13dc: 2380 movs r3, #128 ; 0x80 13de: 025b lsls r3, r3, #9 13e0: 430b orrs r3, r1 13e2: 6053 str r3, [r2, #4] cpu_irq_leave_critical(); 13e4: 4b04 ldr r3, [pc, #16] ; (13f8 ) 13e6: 4798 blx r3 system_interrupt_leave_critical_section(); } 13e8: bd10 pop {r4, pc} 13ea: 46c0 nop ; (mov r8, r8) 13ec: 40000c00 .word 0x40000c00 13f0: 00000dd1 .word 0x00000dd1 13f4: 40000c04 .word 0x40000c04 13f8: 00000e11 .word 0x00000e11 000013fc : * * \return The frequency of the generic clock generator, in Hz. */ uint32_t system_gclk_gen_get_hz( const uint8_t generator) { 13fc: b570 push {r4, r5, r6, lr} 13fe: 0004 movs r4, r0 if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1400: 4a1a ldr r2, [pc, #104] ; (146c ) 1402: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 1404: b25b sxtb r3, r3 1406: 2b00 cmp r3, #0 1408: dbfb blt.n 1402 cpu_irq_enter_critical(); 140a: 4b19 ldr r3, [pc, #100] ; (1470 ) 140c: 4798 blx r3 }; system_interrupt_enter_critical_section(); /* Select the appropriate generator */ *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 140e: 4b19 ldr r3, [pc, #100] ; (1474 ) 1410: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1412: 4a16 ldr r2, [pc, #88] ; (146c ) 1414: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 1416: b25b sxtb r3, r3 1418: 2b00 cmp r3, #0 141a: dbfb blt.n 1414 /* 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); 141c: 4e13 ldr r6, [pc, #76] ; (146c ) 141e: 6870 ldr r0, [r6, #4] 1420: 04c0 lsls r0, r0, #19 1422: 0ec0 lsrs r0, r0, #27 uint32_t gen_input_hz = system_clock_source_get_hz( 1424: 4b14 ldr r3, [pc, #80] ; (1478 ) 1426: 4798 blx r3 1428: 0005 movs r5, r0 *((uint8_t*)&GCLK->GENCTRL.reg) = generator; 142a: 4b12 ldr r3, [pc, #72] ; (1474 ) 142c: 701c strb r4, [r3, #0] uint8_t divsel = GCLK->GENCTRL.bit.DIVSEL; 142e: 6876 ldr r6, [r6, #4] 1430: 02f6 lsls r6, r6, #11 1432: 0ff6 lsrs r6, r6, #31 /* Select the appropriate generator division register */ *((uint8_t*)&GCLK->GENDIV.reg) = generator; 1434: 4b11 ldr r3, [pc, #68] ; (147c ) 1436: 701c strb r4, [r3, #0] if (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY){ 1438: 4a0c ldr r2, [pc, #48] ; (146c ) 143a: 7853 ldrb r3, [r2, #1] while (system_gclk_is_syncing()) { 143c: b25b sxtb r3, r3 143e: 2b00 cmp r3, #0 1440: dbfb blt.n 143a /* Wait for synchronization */ }; uint32_t divider = GCLK->GENDIV.bit.DIV; 1442: 4b0a ldr r3, [pc, #40] ; (146c ) 1444: 689c ldr r4, [r3, #8] 1446: 0224 lsls r4, r4, #8 1448: 0c24 lsrs r4, r4, #16 cpu_irq_leave_critical(); 144a: 4b0d ldr r3, [pc, #52] ; (1480 ) 144c: 4798 blx r3 system_interrupt_leave_critical_section(); /* Check if the generator is using fractional or binary division */ if (!divsel && divider > 1) { 144e: 2e00 cmp r6, #0 1450: d107 bne.n 1462 1452: 2c01 cmp r4, #1 1454: d907 bls.n 1466 gen_input_hz /= divider; 1456: 0021 movs r1, r4 1458: 0028 movs r0, r5 145a: 4b0a ldr r3, [pc, #40] ; (1484 ) 145c: 4798 blx r3 145e: 0005 movs r5, r0 1460: e001 b.n 1466 } else if (divsel) { gen_input_hz >>= (divider+1); 1462: 3401 adds r4, #1 1464: 40e5 lsrs r5, r4 } return gen_input_hz; } 1466: 0028 movs r0, r5 1468: bd70 pop {r4, r5, r6, pc} 146a: 46c0 nop ; (mov r8, r8) 146c: 40000c00 .word 0x40000c00 1470: 00000dd1 .word 0x00000dd1 1474: 40000c04 .word 0x40000c04 1478: 00000ec1 .word 0x00000ec1 147c: 40000c08 .word 0x40000c08 1480: 00000e11 .word 0x00000e11 1484: 0001c0a5 .word 0x0001c0a5 00001488 : * * \param[in] channel Generic Clock channel to enable */ void system_gclk_chan_enable( const uint8_t channel) { 1488: b510 push {r4, lr} 148a: 0004 movs r4, r0 cpu_irq_enter_critical(); 148c: 4b06 ldr r3, [pc, #24] ; (14a8 ) 148e: 4798 blx r3 system_interrupt_enter_critical_section(); /* Select the requested generator channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 1490: 4b06 ldr r3, [pc, #24] ; (14ac ) 1492: 701c strb r4, [r3, #0] /* Enable the generic clock */ GCLK->CLKCTRL.reg |= GCLK_CLKCTRL_CLKEN; 1494: 4a06 ldr r2, [pc, #24] ; (14b0 ) 1496: 8853 ldrh r3, [r2, #2] 1498: 2180 movs r1, #128 ; 0x80 149a: 01c9 lsls r1, r1, #7 149c: 430b orrs r3, r1 149e: 8053 strh r3, [r2, #2] cpu_irq_leave_critical(); 14a0: 4b04 ldr r3, [pc, #16] ; (14b4 ) 14a2: 4798 blx r3 system_interrupt_leave_critical_section(); } 14a4: bd10 pop {r4, pc} 14a6: 46c0 nop ; (mov r8, r8) 14a8: 00000dd1 .word 0x00000dd1 14ac: 40000c02 .word 0x40000c02 14b0: 40000c00 .word 0x40000c00 14b4: 00000e11 .word 0x00000e11 000014b8 : * * \param[in] channel Generic Clock channel to disable */ void system_gclk_chan_disable( const uint8_t channel) { 14b8: b510 push {r4, lr} 14ba: 0004 movs r4, r0 cpu_irq_enter_critical(); 14bc: 4b0f ldr r3, [pc, #60] ; (14fc ) 14be: 4798 blx r3 system_interrupt_enter_critical_section(); /* Select the requested generator channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 14c0: 4b0f ldr r3, [pc, #60] ; (1500 ) 14c2: 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; 14c4: 4a0f ldr r2, [pc, #60] ; (1504 ) 14c6: 8853 ldrh r3, [r2, #2] 14c8: 051b lsls r3, r3, #20 14ca: 0f18 lsrs r0, r3, #28 GCLK->CLKCTRL.bit.GEN = 0; 14cc: 8853 ldrh r3, [r2, #2] 14ce: 490e ldr r1, [pc, #56] ; (1508 ) 14d0: 400b ands r3, r1 14d2: 8053 strh r3, [r2, #2] /* Disable the generic clock */ GCLK->CLKCTRL.reg &= ~GCLK_CLKCTRL_CLKEN; 14d4: 8853 ldrh r3, [r2, #2] 14d6: 490d ldr r1, [pc, #52] ; (150c ) 14d8: 400b ands r3, r1 14da: 8053 strh r3, [r2, #2] while (GCLK->CLKCTRL.reg & GCLK_CLKCTRL_CLKEN) { 14dc: 0011 movs r1, r2 14de: 2280 movs r2, #128 ; 0x80 14e0: 01d2 lsls r2, r2, #7 14e2: 884b ldrh r3, [r1, #2] 14e4: 4213 tst r3, r2 14e6: d1fc bne.n 14e2 /* Wait for clock to become disabled */ } /* Restore previous configured clock generator */ GCLK->CLKCTRL.bit.GEN = prev_gen_id; 14e8: 4906 ldr r1, [pc, #24] ; (1504 ) 14ea: 884a ldrh r2, [r1, #2] 14ec: 0203 lsls r3, r0, #8 14ee: 4806 ldr r0, [pc, #24] ; (1508 ) 14f0: 4002 ands r2, r0 14f2: 4313 orrs r3, r2 14f4: 804b strh r3, [r1, #2] cpu_irq_leave_critical(); 14f6: 4b06 ldr r3, [pc, #24] ; (1510 ) 14f8: 4798 blx r3 system_interrupt_leave_critical_section(); } 14fa: bd10 pop {r4, pc} 14fc: 00000dd1 .word 0x00000dd1 1500: 40000c02 .word 0x40000c02 1504: 40000c00 .word 0x40000c00 1508: fffff0ff .word 0xfffff0ff 150c: ffffbfff .word 0xffffbfff 1510: 00000e11 .word 0x00000e11 00001514 : { 1514: b510 push {r4, lr} new_clkctrl_config |= config->source_generator << GCLK_CLKCTRL_GEN_Pos; 1516: 780c ldrb r4, [r1, #0] 1518: 0224 lsls r4, r4, #8 151a: 4304 orrs r4, r0 system_gclk_chan_disable(channel); 151c: 4b02 ldr r3, [pc, #8] ; (1528 ) 151e: 4798 blx r3 GCLK->CLKCTRL.reg = new_clkctrl_config; 1520: b2a4 uxth r4, r4 1522: 4b02 ldr r3, [pc, #8] ; (152c ) 1524: 805c strh r4, [r3, #2] } 1526: bd10 pop {r4, pc} 1528: 000014b9 .word 0x000014b9 152c: 40000c00 .word 0x40000c00 00001530 : * * \return The frequency of the generic clock channel, in Hz. */ uint32_t system_gclk_chan_get_hz( const uint8_t channel) { 1530: b510 push {r4, lr} 1532: 0004 movs r4, r0 cpu_irq_enter_critical(); 1534: 4b06 ldr r3, [pc, #24] ; (1550 ) 1536: 4798 blx r3 uint8_t gen_id; system_interrupt_enter_critical_section(); /* Select the requested generic clock channel */ *((uint8_t*)&GCLK->CLKCTRL.reg) = channel; 1538: 4b06 ldr r3, [pc, #24] ; (1554 ) 153a: 701c strb r4, [r3, #0] gen_id = GCLK->CLKCTRL.bit.GEN; 153c: 4b06 ldr r3, [pc, #24] ; (1558 ) 153e: 885c ldrh r4, [r3, #2] 1540: 0524 lsls r4, r4, #20 1542: 0f24 lsrs r4, r4, #28 cpu_irq_leave_critical(); 1544: 4b05 ldr r3, [pc, #20] ; (155c ) 1546: 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); 1548: 0020 movs r0, r4 154a: 4b05 ldr r3, [pc, #20] ; (1560 ) 154c: 4798 blx r3 } 154e: bd10 pop {r4, pc} 1550: 00000dd1 .word 0x00000dd1 1554: 40000c02 .word 0x40000c02 1558: 40000c00 .word 0x40000c00 155c: 00000e11 .word 0x00000e11 1560: 000013fd .word 0x000013fd 00001564 <_system_pinmux_config>: */ static void _system_pinmux_config( PortGroup *const port, const uint32_t pin_mask, const struct system_pinmux_config *const config) { 1564: 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) { 1566: 78d3 ldrb r3, [r2, #3] 1568: 2b00 cmp r3, #0 156a: d135 bne.n 15d8 <_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) { 156c: 7813 ldrb r3, [r2, #0] 156e: 2b80 cmp r3, #128 ; 0x80 1570: d029 beq.n 15c6 <_system_pinmux_config+0x62> pin_cfg |= PORT_WRCONFIG_PMUXEN; pin_cfg |= (config->mux_position << PORT_WRCONFIG_PMUX_Pos); 1572: 061b lsls r3, r3, #24 1574: 2480 movs r4, #128 ; 0x80 1576: 0264 lsls r4, r4, #9 1578: 4323 orrs r3, r4 } /* Check if the user has requested that the input buffer be enabled */ if ((config->direction == SYSTEM_PINMUX_PIN_DIR_INPUT) || 157a: 7854 ldrb r4, [r2, #1] 157c: 2502 movs r5, #2 157e: 43ac bics r4, r5 1580: d106 bne.n 1590 <_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) { 1582: 7894 ldrb r4, [r2, #2] 1584: 2c00 cmp r4, #0 1586: d120 bne.n 15ca <_system_pinmux_config+0x66> pin_cfg |= PORT_WRCONFIG_INEN; 1588: 2480 movs r4, #128 ; 0x80 158a: 02a4 lsls r4, r4, #10 158c: 4323 orrs r3, r4 pin_cfg |= PORT_WRCONFIG_PULLEN; } /* Clear the port DIR bits to disable the output buffer */ port->DIRCLR.reg = pin_mask; 158e: 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) || 1590: 7854 ldrb r4, [r2, #1] 1592: 3c01 subs r4, #1 1594: 2c01 cmp r4, #1 1596: d91c bls.n 15d2 <_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); 1598: 040d lsls r5, r1, #16 159a: 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; 159c: 24a0 movs r4, #160 ; 0xa0 159e: 05e4 lsls r4, r4, #23 15a0: 432c orrs r4, r5 15a2: 431c orrs r4, r3 = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 15a4: 6284 str r4, [r0, #40] ; 0x28 uint32_t upper_pin_mask = (pin_mask >> 16); 15a6: 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 | 15a8: 24d0 movs r4, #208 ; 0xd0 15aa: 0624 lsls r4, r4, #24 15ac: 432c orrs r4, r5 15ae: 431c orrs r4, r3 = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 15b0: 6284 str r4, [r0, #40] ; 0x28 PORT_WRCONFIG_HWSEL; if(!config->powersave) { 15b2: 78d4 ldrb r4, [r2, #3] 15b4: 2c00 cmp r4, #0 15b6: d122 bne.n 15fe <_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) { 15b8: 035b lsls r3, r3, #13 15ba: d51c bpl.n 15f6 <_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) { 15bc: 7893 ldrb r3, [r2, #2] 15be: 2b01 cmp r3, #1 15c0: d01e beq.n 1600 <_system_pinmux_config+0x9c> port->OUTSET.reg = pin_mask; } else { port->OUTCLR.reg = pin_mask; 15c2: 6141 str r1, [r0, #20] 15c4: e017 b.n 15f6 <_system_pinmux_config+0x92> uint32_t pin_cfg = 0; 15c6: 2300 movs r3, #0 15c8: e7d7 b.n 157a <_system_pinmux_config+0x16> pin_cfg |= PORT_WRCONFIG_PULLEN; 15ca: 24c0 movs r4, #192 ; 0xc0 15cc: 02e4 lsls r4, r4, #11 15ce: 4323 orrs r3, r4 15d0: e7dd b.n 158e <_system_pinmux_config+0x2a> pin_cfg &= ~PORT_WRCONFIG_PULLEN; 15d2: 4c0d ldr r4, [pc, #52] ; (1608 <_system_pinmux_config+0xa4>) 15d4: 4023 ands r3, r4 15d6: e7df b.n 1598 <_system_pinmux_config+0x34> port->DIRCLR.reg = pin_mask; 15d8: 6041 str r1, [r0, #4] uint32_t lower_pin_mask = (pin_mask & 0xFFFF); 15da: 040c lsls r4, r1, #16 15dc: 0c24 lsrs r4, r4, #16 pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; 15de: 23a0 movs r3, #160 ; 0xa0 15e0: 05db lsls r3, r3, #23 15e2: 4323 orrs r3, r4 = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 15e4: 6283 str r3, [r0, #40] ; 0x28 uint32_t upper_pin_mask = (pin_mask >> 16); 15e6: 0c0c lsrs r4, r1, #16 pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | 15e8: 23d0 movs r3, #208 ; 0xd0 15ea: 061b lsls r3, r3, #24 15ec: 4323 orrs r3, r4 = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) | 15ee: 6283 str r3, [r0, #40] ; 0x28 if(!config->powersave) { 15f0: 78d3 ldrb r3, [r2, #3] 15f2: 2b00 cmp r3, #0 15f4: d103 bne.n 15fe <_system_pinmux_config+0x9a> } } /* Check if the user has requested that the output buffer be enabled */ if ((config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT) || 15f6: 7853 ldrb r3, [r2, #1] 15f8: 3b01 subs r3, #1 15fa: 2b01 cmp r3, #1 15fc: d902 bls.n 1604 <_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; } } } 15fe: bd30 pop {r4, r5, pc} port->OUTSET.reg = pin_mask; 1600: 6181 str r1, [r0, #24] 1602: e7f8 b.n 15f6 <_system_pinmux_config+0x92> port->DIRSET.reg = pin_mask; 1604: 6081 str r1, [r0, #8] } 1606: e7fa b.n 15fe <_system_pinmux_config+0x9a> 1608: fffbffff .word 0xfffbffff 0000160c : * \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) { 160c: b510 push {r4, lr} 160e: 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) { 1610: 09c1 lsrs r1, r0, #7 return &(ports[port_index]->Group[group_index]); } else { Assert(false); return NULL; 1612: 2300 movs r3, #0 if (port_index < PORT_INST_NUM) { 1614: 2900 cmp r1, #0 1616: d104 bne.n 1622 return &(ports[port_index]->Group[group_index]); 1618: 0943 lsrs r3, r0, #5 161a: 01db lsls r3, r3, #7 161c: 4905 ldr r1, [pc, #20] ; (1634 ) 161e: 468c mov ip, r1 1620: 4463 add r3, ip PortGroup *const port = system_pinmux_get_group_from_gpio_pin(gpio_pin); uint32_t pin_mask = (1UL << (gpio_pin % 32)); 1622: 241f movs r4, #31 1624: 4020 ands r0, r4 1626: 2101 movs r1, #1 1628: 4081 lsls r1, r0 _system_pinmux_config(port, pin_mask, config); 162a: 0018 movs r0, r3 162c: 4b02 ldr r3, [pc, #8] ; (1638 ) 162e: 4798 blx r3 } 1630: bd10 pop {r4, pc} 1632: 46c0 nop ; (mov r8, r8) 1634: 41004400 .word 0x41004400 1638: 00001565 .word 0x00001565 0000163c : */ void system_pinmux_group_set_config( PortGroup *const port, const uint32_t mask, const struct system_pinmux_config *const config) { 163c: b5f0 push {r4, r5, r6, r7, lr} 163e: b083 sub sp, #12 1640: 9000 str r0, [sp, #0] 1642: 000e movs r6, r1 1644: 9201 str r2, [sp, #4] Assert(port); for (int i = 0; i < 32; i++) { 1646: 2400 movs r4, #0 if (mask & (1UL << i)) { 1648: 2701 movs r7, #1 _system_pinmux_config(port, (1UL << i), config); 164a: 4d08 ldr r5, [pc, #32] ; (166c ) 164c: e002 b.n 1654 for (int i = 0; i < 32; i++) { 164e: 3401 adds r4, #1 1650: 2c20 cmp r4, #32 1652: d009 beq.n 1668 if (mask & (1UL << i)) { 1654: 0033 movs r3, r6 1656: 40e3 lsrs r3, r4 1658: 421f tst r7, r3 165a: d0f8 beq.n 164e _system_pinmux_config(port, (1UL << i), config); 165c: 9a01 ldr r2, [sp, #4] 165e: 0039 movs r1, r7 1660: 40a1 lsls r1, r4 1662: 9800 ldr r0, [sp, #0] 1664: 47a8 blx r5 1666: e7f2 b.n 164e } } } 1668: b003 add sp, #12 166a: bdf0 pop {r4, r5, r6, r7, pc} 166c: 00001565 .word 0x00001565 00001670 <_system_dummy_init>: */ void _system_dummy_init(void); void _system_dummy_init(void) { return; } 1670: 4770 bx lr ... 00001674 : * - 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) { 1674: b510 push {r4, lr} /* Configure GCLK and clock sources according to conf_clocks.h */ system_clock_init(); 1676: 4b05 ldr r3, [pc, #20] ; (168c ) 1678: 4798 blx r3 /* Initialize board hardware */ system_board_init(); 167a: 4b05 ldr r3, [pc, #20] ; (1690 ) 167c: 4798 blx r3 /* Initialize EVSYS hardware */ _system_events_init(); 167e: 4b05 ldr r3, [pc, #20] ; (1694 ) 1680: 4798 blx r3 /* Initialize External hardware */ _system_extint_init(); 1682: 4b05 ldr r3, [pc, #20] ; (1698 ) 1684: 4798 blx r3 /* Initialize DIVAS hardware */ _system_divas_init(); 1686: 4b05 ldr r3, [pc, #20] ; (169c ) 1688: 4798 blx r3 } 168a: bd10 pop {r4, pc} 168c: 00001171 .word 0x00001171 1690: 00000e41 .word 0x00000e41 1694: 00001671 .word 0x00001671 1698: 00001671 .word 0x00001671 169c: 00001671 .word 0x00001671 000016a0 : /** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { 16a0: e7fe b.n 16a0 ... 000016a4 : { 16a4: b5f8 push {r3, r4, r5, r6, r7, lr} if (pSrc != pDest) { 16a6: 4a2a ldr r2, [pc, #168] ; (1750 ) 16a8: 4b2a ldr r3, [pc, #168] ; (1754 ) 16aa: 429a cmp r2, r3 16ac: d011 beq.n 16d2 for (; pDest < &_erelocate;) { 16ae: 001a movs r2, r3 16b0: 4b29 ldr r3, [pc, #164] ; (1758 ) 16b2: 429a cmp r2, r3 16b4: d20d bcs.n 16d2 16b6: 4a29 ldr r2, [pc, #164] ; (175c ) 16b8: 3303 adds r3, #3 16ba: 1a9b subs r3, r3, r2 16bc: 089b lsrs r3, r3, #2 16be: 3301 adds r3, #1 16c0: 009b lsls r3, r3, #2 16c2: 2200 movs r2, #0 *pDest++ = *pSrc++; 16c4: 4823 ldr r0, [pc, #140] ; (1754 ) 16c6: 4922 ldr r1, [pc, #136] ; (1750 ) 16c8: 588c ldr r4, [r1, r2] 16ca: 5084 str r4, [r0, r2] 16cc: 3204 adds r2, #4 for (; pDest < &_erelocate;) { 16ce: 429a cmp r2, r3 16d0: d1fa bne.n 16c8 for (pDest = &_szero; pDest < &_ezero;) { 16d2: 4a23 ldr r2, [pc, #140] ; (1760 ) 16d4: 4b23 ldr r3, [pc, #140] ; (1764 ) 16d6: 429a cmp r2, r3 16d8: d20a bcs.n 16f0 16da: 43d3 mvns r3, r2 16dc: 4921 ldr r1, [pc, #132] ; (1764 ) 16de: 185b adds r3, r3, r1 16e0: 2103 movs r1, #3 16e2: 438b bics r3, r1 16e4: 3304 adds r3, #4 16e6: 189b adds r3, r3, r2 *pDest++ = 0; 16e8: 2100 movs r1, #0 16ea: c202 stmia r2!, {r1} for (pDest = &_szero; pDest < &_ezero;) { 16ec: 4293 cmp r3, r2 16ee: d1fc bne.n 16ea SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); 16f0: 4a1d ldr r2, [pc, #116] ; (1768 ) 16f2: 21ff movs r1, #255 ; 0xff 16f4: 4b1d ldr r3, [pc, #116] ; (176c ) 16f6: 438b bics r3, r1 16f8: 6093 str r3, [r2, #8] SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; 16fa: 39fd subs r1, #253 ; 0xfd 16fc: 2390 movs r3, #144 ; 0x90 16fe: 005b lsls r3, r3, #1 1700: 4a1b ldr r2, [pc, #108] ; (1770 ) 1702: 50d1 str r1, [r2, r3] USB->DEVICE.QOSCTRL.bit.CQOS = 2; 1704: 4a1b ldr r2, [pc, #108] ; (1774 ) 1706: 78d3 ldrb r3, [r2, #3] 1708: 2503 movs r5, #3 170a: 43ab bics r3, r5 170c: 2402 movs r4, #2 170e: 4323 orrs r3, r4 1710: 70d3 strb r3, [r2, #3] USB->DEVICE.QOSCTRL.bit.DQOS = 2; 1712: 78d3 ldrb r3, [r2, #3] 1714: 270c movs r7, #12 1716: 43bb bics r3, r7 1718: 2608 movs r6, #8 171a: 4333 orrs r3, r6 171c: 70d3 strb r3, [r2, #3] DMAC->QOSCTRL.bit.DQOS = 2; 171e: 4b16 ldr r3, [pc, #88] ; (1778 ) 1720: 7b98 ldrb r0, [r3, #14] 1722: 2230 movs r2, #48 ; 0x30 1724: 4390 bics r0, r2 1726: 2220 movs r2, #32 1728: 4310 orrs r0, r2 172a: 7398 strb r0, [r3, #14] DMAC->QOSCTRL.bit.FQOS = 2; 172c: 7b99 ldrb r1, [r3, #14] 172e: 43b9 bics r1, r7 1730: 4331 orrs r1, r6 1732: 7399 strb r1, [r3, #14] DMAC->QOSCTRL.bit.WRBQOS = 2; 1734: 7b9a ldrb r2, [r3, #14] 1736: 43aa bics r2, r5 1738: 4322 orrs r2, r4 173a: 739a strb r2, [r3, #14] NVMCTRL->CTRLB.bit.MANW = 1; 173c: 4a0f ldr r2, [pc, #60] ; (177c ) 173e: 6853 ldr r3, [r2, #4] 1740: 2180 movs r1, #128 ; 0x80 1742: 430b orrs r3, r1 1744: 6053 str r3, [r2, #4] __libc_init_array(); 1746: 4b0e ldr r3, [pc, #56] ; (1780 ) 1748: 4798 blx r3 main(); 174a: 4b0e ldr r3, [pc, #56] ; (1784 ) 174c: 4798 blx r3 174e: e7fe b.n 174e 1750: 0002b160 .word 0x0002b160 1754: 20000000 .word 0x20000000 1758: 200000d4 .word 0x200000d4 175c: 20000004 .word 0x20000004 1760: 200000d8 .word 0x200000d8 1764: 20004e94 .word 0x20004e94 1768: e000ed00 .word 0xe000ed00 176c: 00000000 .word 0x00000000 1770: 41007000 .word 0x41007000 1774: 41005000 .word 0x41005000 1778: 41004800 .word 0x41004800 177c: 41004000 .word 0x41004000 1780: 0001c5f9 .word 0x0001c5f9 1784: 0001c091 .word 0x0001c091 00001788 <_sbrk>: extern void _exit(int status); extern void _kill(int pid, int sig); extern int _getpid(void); extern caddr_t _sbrk(int incr) { 1788: 0003 movs r3, r0 static unsigned char *heap = NULL; unsigned char *prev_heap; if (heap == NULL) { 178a: 4a06 ldr r2, [pc, #24] ; (17a4 <_sbrk+0x1c>) 178c: 6812 ldr r2, [r2, #0] 178e: 2a00 cmp r2, #0 1790: d004 beq.n 179c <_sbrk+0x14> heap = (unsigned char *)&_end; } prev_heap = heap; 1792: 4a04 ldr r2, [pc, #16] ; (17a4 <_sbrk+0x1c>) 1794: 6810 ldr r0, [r2, #0] heap += incr; 1796: 18c3 adds r3, r0, r3 1798: 6013 str r3, [r2, #0] return (caddr_t) prev_heap; } 179a: 4770 bx lr heap = (unsigned char *)&_end; 179c: 4902 ldr r1, [pc, #8] ; (17a8 <_sbrk+0x20>) 179e: 4a01 ldr r2, [pc, #4] ; (17a4 <_sbrk+0x1c>) 17a0: 6011 str r1, [r2, #0] 17a2: e7f6 b.n 1792 <_sbrk+0xa> 17a4: 200026e0 .word 0x200026e0 17a8: 20006e98 .word 0x20006e98 000017ac : * GLOBAL FUNCTIONS **********************/ bool lv_debug_check_null(const void * p) { if(p) return true; 17ac: 1e43 subs r3, r0, #1 17ae: 4198 sbcs r0, r3 17b0: b2c0 uxtb r0, r0 return false; } 17b2: 4770 bx lr 000017b4 : 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) { 17b4: b570 push {r4, r5, r6, lr} 17b6: b0c2 sub sp, #264 ; 0x108 17b8: 0004 movs r4, r0 17ba: 0015 movs r5, r2 static const char hex[] = "0123456789ABCDEF"; size_t msg_len = strlen(msg); 17bc: 4b1b ldr r3, [pc, #108] ; (182c ) 17be: 4798 blx r3 17c0: 0006 movs r6, r0 uint32_t value_len = sizeof(unsigned long int); if(msg_len < 230) { 17c2: 28e5 cmp r0, #229 ; 0xe5 17c4: d829 bhi.n 181a char buf[255]; char * bufp = buf; /*Add the function name*/ _lv_memcpy(bufp, msg, msg_len); 17c6: 0002 movs r2, r0 17c8: 0021 movs r1, r4 17ca: a802 add r0, sp, #8 17cc: 4b18 ldr r3, [pc, #96] ; (1830 ) 17ce: 4798 blx r3 bufp += msg_len; 17d0: ab02 add r3, sp, #8 17d2: 1998 adds r0, r3, r6 /*Add value in hey*/ *bufp = ' '; 17d4: 2320 movs r3, #32 17d6: 7003 strb r3, [r0, #0] bufp ++; *bufp = '('; 17d8: 3308 adds r3, #8 17da: 7043 strb r3, [r0, #1] bufp ++; *bufp = '0'; 17dc: 3308 adds r3, #8 17de: 7083 strb r3, [r0, #2] bufp ++; *bufp = 'x'; 17e0: 3348 adds r3, #72 ; 0x48 17e2: 70c3 strb r3, [r0, #3] bufp ++; 17e4: 1d04 adds r4, r0, #4 17e6: 3b5c subs r3, #92 ; 0x5c int8_t i; for(i = value_len * 2 - 1; i >= 0; i--) { uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; *bufp = hex[x]; 17e8: 4e12 ldr r6, [pc, #72] ; (1834 ) uint8_t x = (unsigned long int)((unsigned long int)value >> (i * 4)) & 0xF; 17ea: 220f movs r2, #15 17ec: 0029 movs r1, r5 17ee: 40d9 lsrs r1, r3 *bufp = hex[x]; 17f0: 4011 ands r1, r2 17f2: 5c71 ldrb r1, [r6, r1] 17f4: 7021 strb r1, [r4, #0] bufp++; 17f6: 3401 adds r4, #1 17f8: 3b04 subs r3, #4 for(i = value_len * 2 - 1; i >= 0; i--) { 17fa: 1d19 adds r1, r3, #4 17fc: d1f6 bne.n 17ec } *bufp = ')'; 17fe: 332d adds r3, #45 ; 0x2d 1800: 7303 strb r3, [r0, #12] bufp ++; *bufp = '\0'; 1802: 2300 movs r3, #0 1804: 7343 strb r3, [r0, #13] LV_LOG_ERROR(buf); 1806: ab02 add r3, sp, #8 1808: 9300 str r3, [sp, #0] 180a: 4b0b ldr r3, [pc, #44] ; (1838 ) 180c: 22bc movs r2, #188 ; 0xbc 180e: 490b ldr r1, [pc, #44] ; (183c ) 1810: 2003 movs r0, #3 1812: 4c0b ldr r4, [pc, #44] ; (1840 ) 1814: 47a0 blx r4 } else { LV_LOG_ERROR(msg); } } 1816: b042 add sp, #264 ; 0x108 1818: bd70 pop {r4, r5, r6, pc} LV_LOG_ERROR(msg); 181a: 9400 str r4, [sp, #0] 181c: 4b06 ldr r3, [pc, #24] ; (1838 ) 181e: 22bf movs r2, #191 ; 0xbf 1820: 4906 ldr r1, [pc, #24] ; (183c ) 1822: 2003 movs r0, #3 1824: 4c06 ldr r4, [pc, #24] ; (1840 ) 1826: 47a0 blx r4 } 1828: e7f5 b.n 1816 182a: 46c0 nop ; (mov r8, r8) 182c: 0001c709 .word 0x0001c709 1830: 00012545 .word 0x00012545 1834: 0002554c .word 0x0002554c 1838: 00025538 .word 0x00025538 183c: 00025560 .word 0x00025560 1840: 00012159 .word 0x00012159 00001844 : * @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) { 1844: b510 push {r4, lr} 1846: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 1848: 2800 cmp r0, #0 184a: d002 beq.n 1852 if(!disp) { LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); return NULL; } return disp->act_scr; 184c: 6bc0 ldr r0, [r0, #60] ; 0x3c } 184e: b002 add sp, #8 1850: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 1852: 4b07 ldr r3, [pc, #28] ; (1870 ) 1854: 4798 blx r3 if(!disp) { 1856: 2800 cmp r0, #0 1858: d1f8 bne.n 184c LV_LOG_WARN("lv_scr_act: no display registered to get its act. screen"); 185a: 4b06 ldr r3, [pc, #24] ; (1874 ) 185c: 9300 str r3, [sp, #0] 185e: 4b06 ldr r3, [pc, #24] ; (1878 ) 1860: 222e movs r2, #46 ; 0x2e 1862: 4906 ldr r1, [pc, #24] ; (187c ) 1864: 3002 adds r0, #2 1866: 4c06 ldr r4, [pc, #24] ; (1880 ) 1868: 47a0 blx r4 return NULL; 186a: 2000 movs r0, #0 186c: e7ef b.n 184e 186e: 46c0 nop ; (mov r8, r8) 1870: 00010d75 .word 0x00010d75 1874: 00025760 .word 0x00025760 1878: 00025670 .word 0x00025670 187c: 0002572c .word 0x0002572c 1880: 00012159 .word 0x00012159 00001884 : * 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) { 1884: b510 push {r4, lr} 1886: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 1888: 2800 cmp r0, #0 188a: d002 beq.n 1892 if(!disp) { LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); return NULL; } return disp->top_layer; 188c: 6c00 ldr r0, [r0, #64] ; 0x40 } 188e: b002 add sp, #8 1890: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 1892: 4b07 ldr r3, [pc, #28] ; (18b0 ) 1894: 4798 blx r3 if(!disp) { 1896: 2800 cmp r0, #0 1898: d1f8 bne.n 188c LV_LOG_WARN("lv_layer_top: no display registered to get its top layer"); 189a: 4b06 ldr r3, [pc, #24] ; (18b4 ) 189c: 9300 str r3, [sp, #0] 189e: 4b06 ldr r3, [pc, #24] ; (18b8 ) 18a0: 224b movs r2, #75 ; 0x4b 18a2: 4906 ldr r1, [pc, #24] ; (18bc ) 18a4: 3002 adds r0, #2 18a6: 4c06 ldr r4, [pc, #24] ; (18c0 ) 18a8: 47a0 blx r4 return NULL; 18aa: 2000 movs r0, #0 18ac: e7ef b.n 188e 18ae: 46c0 nop ; (mov r8, r8) 18b0: 00010d75 .word 0x00010d75 18b4: 000256f0 .word 0x000256f0 18b8: 00025684 .word 0x00025684 18bc: 0002572c .word 0x0002572c 18c0: 00012159 .word 0x00012159 000018c4 : * 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) { 18c4: b510 push {r4, lr} 18c6: b082 sub sp, #8 if(!disp) disp = lv_disp_get_default(); 18c8: 2800 cmp r0, #0 18ca: d002 beq.n 18d2 if(!disp) { LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); return NULL; } return disp->sys_layer; 18cc: 6c40 ldr r0, [r0, #68] ; 0x44 } 18ce: b002 add sp, #8 18d0: bd10 pop {r4, pc} if(!disp) disp = lv_disp_get_default(); 18d2: 4b07 ldr r3, [pc, #28] ; (18f0 ) 18d4: 4798 blx r3 if(!disp) { 18d6: 2800 cmp r0, #0 18d8: d1f8 bne.n 18cc LV_LOG_WARN("lv_layer_sys: no display registered to get its sys. layer"); 18da: 4b06 ldr r3, [pc, #24] ; (18f4 ) 18dc: 9300 str r3, [sp, #0] 18de: 4b06 ldr r3, [pc, #24] ; (18f8 ) 18e0: 225c movs r2, #92 ; 0x5c 18e2: 4906 ldr r1, [pc, #24] ; (18fc ) 18e4: 3002 adds r0, #2 18e6: 4c06 ldr r4, [pc, #24] ; (1900 ) 18e8: 47a0 blx r4 return NULL; 18ea: 2000 movs r0, #0 18ec: e7ef b.n 18ce 18ee: 46c0 nop ; (mov r8, r8) 18f0: 00010d75 .word 0x00010d75 18f4: 000256b4 .word 0x000256b4 18f8: 0002569c .word 0x0002569c 18fc: 0002572c .word 0x0002572c 1900: 00012159 .word 0x00012159 00001904 : if(group->focus_cb) group->focus_cb(group); } static void obj_to_foreground(lv_obj_t * obj) { 1904: 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) { 1906: 2800 cmp r0, #0 1908: d011 beq.n 192e 190a: 2500 movs r5, #0 if(i->top != 0) last_top = i; 190c: 2734 movs r7, #52 ; 0x34 190e: 2620 movs r6, #32 i = lv_obj_get_parent(i); 1910: 4c07 ldr r4, [pc, #28] ; (1930 ) 1912: e002 b.n 191a 1914: 47a0 blx r4 while(i != NULL) { 1916: 2800 cmp r0, #0 1918: d004 beq.n 1924 if(i->top != 0) last_top = i; 191a: 5dc3 ldrb r3, [r0, r7] 191c: 421e tst r6, r3 191e: d0f9 beq.n 1914 1920: 0005 movs r5, r0 1922: e7f7 b.n 1914 } if(last_top != NULL) { 1924: 2d00 cmp r5, #0 1926: d002 beq.n 192e /*Move the last_top object to the foreground*/ lv_obj_move_foreground(last_top); 1928: 0028 movs r0, r5 192a: 4b02 ldr r3, [pc, #8] ; (1934 ) 192c: 4798 blx r3 } } 192e: bdf8 pop {r3, r4, r5, r6, r7, pc} 1930: 000021a5 .word 0x000021a5 1934: 000028ed .word 0x000028ed 00001938 : { 1938: b5f8 push {r3, r4, r5, r6, r7, lr} 193a: 46de mov lr, fp 193c: 4657 mov r7, sl 193e: 464e mov r6, r9 1940: 4645 mov r5, r8 1942: b5e0 push {r5, r6, r7, lr} 1944: 0006 movs r6, r0 1946: 468a mov sl, r1 1948: 4690 mov r8, r2 if(group->frozen) return; 194a: 7d03 ldrb r3, [r0, #20] 194c: 07db lsls r3, r3, #31 194e: d43c bmi.n 19ca lv_obj_t ** obj_next = group->obj_focus; 1950: 68c4 ldr r4, [r0, #12] bool can_begin = true; 1952: 2301 movs r3, #1 1954: 4699 mov r9, r3 lv_obj_t ** obj_sentinel = NULL; 1956: 2500 movs r5, #0 if(!lv_obj_get_hidden(*obj_next)) break; 1958: 4f32 ldr r7, [pc, #200] ; (1a24 ) if(group->wrap || obj_sentinel == NULL) { 195a: 330f adds r3, #15 195c: 469b mov fp, r3 195e: e015 b.n 198c 1960: 7d33 ldrb r3, [r6, #20] 1962: 465a mov r2, fp 1964: 421a tst r2, r3 1966: d101 bne.n 196c 1968: 2d00 cmp r5, #0 196a: d12e bne.n 19ca if(!can_begin) return; 196c: 464b mov r3, r9 196e: 2b00 cmp r3, #0 1970: d02b beq.n 19ca obj_next = begin(&group->obj_ll); 1972: 0030 movs r0, r6 1974: 47d0 blx sl 1976: 0004 movs r4, r0 if(obj_sentinel == NULL) { 1978: 2d00 cmp r5, #0 197a: d04c beq.n 1a16 can_begin = false; 197c: 2300 movs r3, #0 197e: 4699 mov r9, r3 if(obj_next == NULL) continue; 1980: 2c00 cmp r4, #0 1982: d003 beq.n 198c if(!lv_obj_get_hidden(*obj_next)) break; 1984: 6820 ldr r0, [r4, #0] 1986: 47b8 blx r7 1988: 2800 cmp r0, #0 198a: d00c beq.n 19a6 if(obj_next == NULL) { 198c: 2c00 cmp r4, #0 198e: d0e7 beq.n 1960 if(obj_sentinel == NULL) { 1990: 2d00 cmp r5, #0 1992: d006 beq.n 19a2 obj_next = move(&group->obj_ll, obj_next); 1994: 0021 movs r1, r4 1996: 0030 movs r0, r6 1998: 47c0 blx r8 199a: 0004 movs r4, r0 if(obj_next == obj_sentinel) return; 199c: 42a8 cmp r0, r5 199e: d1ef bne.n 1980 19a0: e013 b.n 19ca 19a2: 0025 movs r5, r4 19a4: e7f6 b.n 1994 if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ 19a6: 68f3 ldr r3, [r6, #12] 19a8: 42a3 cmp r3, r4 19aa: d00e beq.n 19ca if(group->obj_focus) { 19ac: 2b00 cmp r3, #0 19ae: d016 beq.n 19de (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 19b0: 6818 ldr r0, [r3, #0] 19b2: 69c3 ldr r3, [r0, #28] 19b4: 2200 movs r2, #0 19b6: 2117 movs r1, #23 19b8: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); 19ba: 68f3 ldr r3, [r6, #12] 19bc: 6818 ldr r0, [r3, #0] 19be: 2200 movs r2, #0 19c0: 210e movs r1, #14 19c2: 4b19 ldr r3, [pc, #100] ; (1a28 ) 19c4: 4798 blx r3 if(res != LV_RES_OK) return; 19c6: 2801 cmp r0, #1 19c8: d005 beq.n 19d6 } 19ca: bc3c pop {r2, r3, r4, r5} 19cc: 4690 mov r8, r2 19ce: 4699 mov r9, r3 19d0: 46a2 mov sl, r4 19d2: 46ab mov fp, r5 19d4: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_obj_invalidate(*group->obj_focus); 19d6: 68f3 ldr r3, [r6, #12] 19d8: 6818 ldr r0, [r3, #0] 19da: 4b14 ldr r3, [pc, #80] ; (1a2c ) 19dc: 4798 blx r3 group->obj_focus = obj_next; 19de: 60f4 str r4, [r6, #12] (*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_FOCUS, NULL); 19e0: 6820 ldr r0, [r4, #0] 19e2: 69c3 ldr r3, [r0, #28] 19e4: 2200 movs r2, #0 19e6: 2116 movs r1, #22 19e8: 4798 blx r3 lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); 19ea: 68f3 ldr r3, [r6, #12] 19ec: 6818 ldr r0, [r3, #0] 19ee: 2200 movs r2, #0 19f0: 210d movs r1, #13 19f2: 4b0d ldr r3, [pc, #52] ; (1a28 ) 19f4: 4798 blx r3 if(res != LV_RES_OK) return; 19f6: 2801 cmp r0, #1 19f8: d1e7 bne.n 19ca obj_to_foreground(*group->obj_focus); 19fa: 68f3 ldr r3, [r6, #12] 19fc: 6818 ldr r0, [r3, #0] 19fe: 4b0c ldr r3, [pc, #48] ; (1a30 ) 1a00: 4798 blx r3 lv_obj_invalidate(*group->obj_focus); 1a02: 68f3 ldr r3, [r6, #12] 1a04: 6818 ldr r0, [r3, #0] 1a06: 4b09 ldr r3, [pc, #36] ; (1a2c ) 1a08: 4798 blx r3 if(group->focus_cb) group->focus_cb(group); 1a0a: 6933 ldr r3, [r6, #16] 1a0c: 2b00 cmp r3, #0 1a0e: d0dc beq.n 19ca 1a10: 0030 movs r0, r6 1a12: 4798 blx r3 1a14: e7d9 b.n 19ca if(obj_sentinel == NULL) return; /*Group is empty*/ 1a16: 2800 cmp r0, #0 1a18: d0d7 beq.n 19ca obj_next = begin(&group->obj_ll); 1a1a: 0005 movs r5, r0 can_begin = false; 1a1c: 2300 movs r3, #0 1a1e: 4699 mov r9, r3 1a20: e7b0 b.n 1984 1a22: 46c0 nop ; (mov r8, r8) 1a24: 00002701 .word 0x00002701 1a28: 00001fdd .word 0x00001fdd 1a2c: 00002869 .word 0x00002869 1a30: 00001905 .word 0x00001905 00001a34 <_lv_group_init>: { 1a34: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_group_ll), sizeof(lv_group_t)); 1a36: 2118 movs r1, #24 1a38: 4801 ldr r0, [pc, #4] ; (1a40 <_lv_group_init+0xc>) 1a3a: 4b02 ldr r3, [pc, #8] ; (1a44 <_lv_group_init+0x10>) 1a3c: 4798 blx r3 } 1a3e: bd10 pop {r4, pc} 1a40: 20004e74 .word 0x20004e74 1a44: 00011dd1 .word 0x00011dd1 00001a48 : { 1a48: b510 push {r4, lr} focus_next_core(group, _lv_ll_get_head, _lv_ll_get_next); 1a4a: 4a02 ldr r2, [pc, #8] ; (1a54 ) 1a4c: 4902 ldr r1, [pc, #8] ; (1a58 ) 1a4e: 4b03 ldr r3, [pc, #12] ; (1a5c ) 1a50: 4798 blx r3 } 1a52: bd10 pop {r4, pc} 1a54: 00011e9d .word 0x00011e9d 1a58: 00011e85 .word 0x00011e85 1a5c: 00001939 .word 0x00001939 00001a60 : { 1a60: b510 push {r4, lr} focus_next_core(group, _lv_ll_get_tail, _lv_ll_get_prev); 1a62: 4a02 ldr r2, [pc, #8] ; (1a6c ) 1a64: 4902 ldr r1, [pc, #8] ; (1a70 ) 1a66: 4b03 ldr r3, [pc, #12] ; (1a74 ) 1a68: 4798 blx r3 } 1a6a: bd10 pop {r4, pc} 1a6c: 00011ec5 .word 0x00011ec5 1a70: 00011e91 .word 0x00011e91 1a74: 00001939 .word 0x00001939 00001a78 : { 1a78: b570 push {r4, r5, r6, lr} 1a7a: 0004 movs r4, r0 uint8_t temp_wrap = g->wrap; 1a7c: 7d03 ldrb r3, [r0, #20] 1a7e: 06dd lsls r5, r3, #27 1a80: 0fed lsrs r5, r5, #31 g->wrap = 1; 1a82: 2210 movs r2, #16 1a84: 4313 orrs r3, r2 1a86: 7503 strb r3, [r0, #20] if(g->refocus_policy == LV_GROUP_REFOCUS_POLICY_NEXT) 1a88: 071b lsls r3, r3, #28 1a8a: d508 bpl.n 1a9e lv_group_focus_prev(g); 1a8c: 4b05 ldr r3, [pc, #20] ; (1aa4 ) 1a8e: 4798 blx r3 g->wrap = temp_wrap; 1a90: 012d lsls r5, r5, #4 1a92: 7d23 ldrb r3, [r4, #20] 1a94: 2210 movs r2, #16 1a96: 4393 bics r3, r2 1a98: 432b orrs r3, r5 1a9a: 7523 strb r3, [r4, #20] } 1a9c: bd70 pop {r4, r5, r6, pc} lv_group_focus_next(g); 1a9e: 4b02 ldr r3, [pc, #8] ; (1aa8 ) 1aa0: 4798 blx r3 1aa2: e7f5 b.n 1a90 1aa4: 00001a61 .word 0x00001a61 1aa8: 00001a49 .word 0x00001a49 00001aac : { 1aac: b5f0 push {r4, r5, r6, r7, lr} 1aae: b083 sub sp, #12 1ab0: 0005 movs r5, r0 1ab2: 000c movs r4, r1 if(group == NULL) return; 1ab4: 2800 cmp r0, #0 1ab6: d018 beq.n 1aea _LV_LL_READ(group->obj_ll, obj_i) { 1ab8: 0006 movs r6, r0 1aba: 4b27 ldr r3, [pc, #156] ; (1b58 ) 1abc: 4798 blx r3 1abe: 2800 cmp r0, #0 1ac0: d015 beq.n 1aee if((*obj_i) == obj) { 1ac2: 6803 ldr r3, [r0, #0] 1ac4: 429c cmp r4, r3 1ac6: d008 beq.n 1ada _LV_LL_READ(group->obj_ll, obj_i) { 1ac8: 4f24 ldr r7, [pc, #144] ; (1b5c ) 1aca: 0001 movs r1, r0 1acc: 0030 movs r0, r6 1ace: 47b8 blx r7 1ad0: 2800 cmp r0, #0 1ad2: d00c beq.n 1aee if((*obj_i) == obj) { 1ad4: 6803 ldr r3, [r0, #0] 1ad6: 42a3 cmp r3, r4 1ad8: d1f7 bne.n 1aca LV_LOG_INFO("lv_group_add_obj: the object is already added to this group"); 1ada: 4b21 ldr r3, [pc, #132] ; (1b60 ) 1adc: 9300 str r3, [sp, #0] 1ade: 4b21 ldr r3, [pc, #132] ; (1b64 ) 1ae0: 2275 movs r2, #117 ; 0x75 1ae2: 4921 ldr r1, [pc, #132] ; (1b68 ) 1ae4: 2001 movs r0, #1 1ae6: 4c21 ldr r4, [pc, #132] ; (1b6c ) 1ae8: 47a0 blx r4 } 1aea: b003 add sp, #12 1aec: bdf0 pop {r4, r5, r6, r7, pc} if(obj->group_p) { 1aee: 6ba3 ldr r3, [r4, #56] ; 0x38 1af0: 2b00 cmp r3, #0 1af2: d00f beq.n 1b14 if(lv_obj_is_focused(obj)) { 1af4: 0020 movs r0, r4 1af6: 4b1e ldr r3, [pc, #120] ; (1b70 ) 1af8: 4798 blx r3 1afa: 2800 cmp r0, #0 1afc: d00a beq.n 1b14 lv_group_refocus(obj->group_p); 1afe: 6ba0 ldr r0, [r4, #56] ; 0x38 1b00: 4b1c ldr r3, [pc, #112] ; (1b74 ) 1b02: 4798 blx r3 LV_LOG_INFO("lv_group_add_obj: assign object to an other group"); 1b04: 4b1c ldr r3, [pc, #112] ; (1b78 ) 1b06: 9300 str r3, [sp, #0] 1b08: 4b16 ldr r3, [pc, #88] ; (1b64 ) 1b0a: 227f movs r2, #127 ; 0x7f 1b0c: 4916 ldr r1, [pc, #88] ; (1b68 ) 1b0e: 2001 movs r0, #1 1b10: 4e16 ldr r6, [pc, #88] ; (1b6c ) 1b12: 47b0 blx r6 obj->group_p = group; 1b14: 63a5 str r5, [r4, #56] ; 0x38 lv_obj_t ** next = _lv_ll_ins_tail(&group->obj_ll); 1b16: 0028 movs r0, r5 1b18: 4b18 ldr r3, [pc, #96] ; (1b7c ) 1b1a: 4798 blx r3 1b1c: 0006 movs r6, r0 LV_ASSERT_MEM(next); 1b1e: 4b18 ldr r3, [pc, #96] ; (1b80 ) 1b20: 4798 blx r3 1b22: 2800 cmp r0, #0 1b24: d00b beq.n 1b3e if(next == NULL) return; 1b26: 2e00 cmp r6, #0 1b28: d0df beq.n 1aea *next = obj; 1b2a: 6034 str r4, [r6, #0] if(_lv_ll_get_head(&group->obj_ll) == next) { 1b2c: 0028 movs r0, r5 1b2e: 4b0a ldr r3, [pc, #40] ; (1b58 ) 1b30: 4798 blx r3 1b32: 4286 cmp r6, r0 1b34: d1d9 bne.n 1aea lv_group_refocus(group); 1b36: 0028 movs r0, r5 1b38: 4b0e ldr r3, [pc, #56] ; (1b74 ) 1b3a: 4798 blx r3 1b3c: e7d5 b.n 1aea LV_ASSERT_MEM(next); 1b3e: 4b09 ldr r3, [pc, #36] ; (1b64 ) 1b40: 9300 str r3, [sp, #0] 1b42: 2285 movs r2, #133 ; 0x85 1b44: 4908 ldr r1, [pc, #32] ; (1b68 ) 1b46: 3003 adds r0, #3 1b48: 4c08 ldr r4, [pc, #32] ; (1b6c ) 1b4a: 47a0 blx r4 1b4c: 0032 movs r2, r6 1b4e: 2300 movs r3, #0 1b50: 480c ldr r0, [pc, #48] ; (1b84 ) 1b52: 490d ldr r1, [pc, #52] ; (1b88 ) 1b54: 4788 blx r1 1b56: e7fe b.n 1b56 1b58: 00011e85 .word 0x00011e85 1b5c: 00011e9d .word 0x00011e9d 1b60: 000257b0 .word 0x000257b0 1b64: 0002579c .word 0x0002579c 1b68: 00025820 .word 0x00025820 1b6c: 00012159 .word 0x00012159 1b70: 0000463d .word 0x0000463d 1b74: 00001a79 .word 0x00001a79 1b78: 000257ec .word 0x000257ec 1b7c: 00011e35 .word 0x00011e35 1b80: 000017ad .word 0x000017ad 1b84: 00025854 .word 0x00025854 1b88: 000017b5 .word 0x000017b5 00001b8c : { 1b8c: b5f0 push {r4, r5, r6, r7, lr} 1b8e: b083 sub sp, #12 1b90: 0005 movs r5, r0 lv_group_t * g = obj->group_p; 1b92: 6b86 ldr r6, [r0, #56] ; 0x38 if(g == NULL) return; 1b94: 2e00 cmp r6, #0 1b96: d020 beq.n 1bda if(g->obj_focus == NULL) return; /*Just to be sure (Not possible if there is at least one object in the group)*/ 1b98: 68f3 ldr r3, [r6, #12] 1b9a: 2b00 cmp r3, #0 1b9c: d01d beq.n 1bda if(*g->obj_focus == obj) { 1b9e: 681b ldr r3, [r3, #0] 1ba0: 4298 cmp r0, r3 1ba2: d01c beq.n 1bde _LV_LL_READ(g->obj_ll, i) { 1ba4: 9601 str r6, [sp, #4] 1ba6: 0030 movs r0, r6 1ba8: 4b1e ldr r3, [pc, #120] ; (1c24 ) 1baa: 4798 blx r3 1bac: 1e04 subs r4, r0, #0 1bae: d014 beq.n 1bda if(*i == obj) { 1bb0: 6803 ldr r3, [r0, #0] 1bb2: 429d cmp r5, r3 1bb4: d008 beq.n 1bc8 _LV_LL_READ(g->obj_ll, i) { 1bb6: 4f1c ldr r7, [pc, #112] ; (1c28 ) 1bb8: 0021 movs r1, r4 1bba: 9801 ldr r0, [sp, #4] 1bbc: 47b8 blx r7 1bbe: 1e04 subs r4, r0, #0 1bc0: d00b beq.n 1bda if(*i == obj) { 1bc2: 6823 ldr r3, [r4, #0] 1bc4: 429d cmp r5, r3 1bc6: d1f7 bne.n 1bb8 _lv_ll_remove(&g->obj_ll, i); 1bc8: 0021 movs r1, r4 1bca: 0030 movs r0, r6 1bcc: 4b17 ldr r3, [pc, #92] ; (1c2c ) 1bce: 4798 blx r3 lv_mem_free(i); 1bd0: 0020 movs r0, r4 1bd2: 4b17 ldr r3, [pc, #92] ; (1c30 ) 1bd4: 4798 blx r3 obj->group_p = NULL; 1bd6: 2300 movs r3, #0 1bd8: 63ab str r3, [r5, #56] ; 0x38 } 1bda: b003 add sp, #12 1bdc: bdf0 pop {r4, r5, r6, r7, pc} if(g->frozen) g->frozen = 0; 1bde: 7d33 ldrb r3, [r6, #20] 1be0: 07db lsls r3, r3, #31 1be2: d503 bpl.n 1bec 1be4: 7d33 ldrb r3, [r6, #20] 1be6: 2201 movs r2, #1 1be8: 4393 bics r3, r2 1bea: 7533 strb r3, [r6, #20] if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 1bec: 0030 movs r0, r6 1bee: 4b0d ldr r3, [pc, #52] ; (1c24 ) 1bf0: 4798 blx r3 1bf2: 68f3 ldr r3, [r6, #12] 1bf4: 4298 cmp r0, r3 1bf6: d009 beq.n 1c0c lv_group_refocus(g); 1bf8: 0030 movs r0, r6 1bfa: 4b0e ldr r3, [pc, #56] ; (1c34 ) 1bfc: 4798 blx r3 if(*g->obj_focus == obj) { 1bfe: 68f3 ldr r3, [r6, #12] 1c00: 681b ldr r3, [r3, #0] 1c02: 429d cmp r5, r3 1c04: d1ce bne.n 1ba4 g->obj_focus = NULL; 1c06: 2300 movs r3, #0 1c08: 60f3 str r3, [r6, #12] 1c0a: e7cb b.n 1ba4 if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { 1c0c: 0030 movs r0, r6 1c0e: 4b0a ldr r3, [pc, #40] ; (1c38 ) 1c10: 4798 blx r3 1c12: 68f3 ldr r3, [r6, #12] 1c14: 4298 cmp r0, r3 1c16: d1ef bne.n 1bf8 (*g->obj_focus)->signal_cb(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); 1c18: 6800 ldr r0, [r0, #0] 1c1a: 69c3 ldr r3, [r0, #28] 1c1c: 2200 movs r2, #0 1c1e: 2117 movs r1, #23 1c20: 4798 blx r3 1c22: e7ec b.n 1bfe 1c24: 00011e85 .word 0x00011e85 1c28: 00011e9d .word 0x00011e9d 1c2c: 00011f6d .word 0x00011f6d 1c30: 000123c9 .word 0x000123c9 1c34: 00001a79 .word 0x00001a79 1c38: 00011e91 .word 0x00011e91 00001c3c : if(!group) return NULL; 1c3c: 2800 cmp r0, #0 1c3e: d004 beq.n 1c4a if(group->obj_focus == NULL) return NULL; 1c40: 68c3 ldr r3, [r0, #12] 1c42: 2b00 cmp r3, #0 1c44: d003 beq.n 1c4e return *group->obj_focus; 1c46: 6818 ldr r0, [r3, #0] } 1c48: 4770 bx lr if(!group) return NULL; 1c4a: 2000 movs r0, #0 1c4c: e7fc b.n 1c48 if(group->obj_focus == NULL) return NULL; 1c4e: 2000 movs r0, #0 1c50: e7fa b.n 1c48 00001c52 : if(!group) return false; 1c52: 2800 cmp r0, #0 1c54: d003 beq.n 1c5e return group->editing ? true : false; 1c56: 7d00 ldrb r0, [r0, #20] 1c58: 0780 lsls r0, r0, #30 1c5a: 0fc0 lsrs r0, r0, #31 } 1c5c: 4770 bx lr if(!group) return false; 1c5e: 2000 movs r0, #0 1c60: e7fc b.n 1c5c ... 00001c64 : * @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; 1c64: 4b01 ldr r3, [pc, #4] ; (1c6c ) 1c66: 6818 ldr r0, [r3, #0] } 1c68: 4770 bx lr 1c6a: 46c0 nop ; (mov r8, r8) 1c6c: 200026e4 .word 0x200026e4 00001c70 : * 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) { 1c70: b5f8 push {r3, r4, r5, r6, r7, lr} 1c72: 000c movs r4, r1 if(indev) { 1c74: 2800 cmp r0, #0 1c76: d015 beq.n 1ca4 indev->proc.reset_query = 1; 1c78: 2250 movs r2, #80 ; 0x50 1c7a: 5c83 ldrb r3, [r0, r2] 1c7c: 2102 movs r1, #2 1c7e: 430b orrs r3, r1 1c80: 5483 strb r3, [r0, r2] if(indev_act == indev) indev_obj_act = NULL; 1c82: 4b18 ldr r3, [pc, #96] ; (1ce4 ) 1c84: 681b ldr r3, [r3, #0] 1c86: 4298 cmp r0, r3 1c88: d005 beq.n 1c96 if(obj == NULL || indev->proc.types.pointer.last_pressed == obj) { 1c8a: 2c00 cmp r4, #0 1c8c: d007 beq.n 1c9e 1c8e: 6bc3 ldr r3, [r0, #60] ; 0x3c 1c90: 429c cmp r4, r3 1c92: d004 beq.n 1c9e i->proc.types.pointer.last_pressed = NULL; } i = lv_indev_get_next(i); } } } 1c94: bdf8 pop {r3, r4, r5, r6, r7, pc} if(indev_act == indev) indev_obj_act = NULL; 1c96: 2200 movs r2, #0 1c98: 4b13 ldr r3, [pc, #76] ; (1ce8 ) 1c9a: 601a str r2, [r3, #0] 1c9c: e7f5 b.n 1c8a indev->proc.types.pointer.last_pressed = NULL; 1c9e: 2300 movs r3, #0 1ca0: 63c3 str r3, [r0, #60] ; 0x3c 1ca2: e7f7 b.n 1c94 lv_indev_t * i = lv_indev_get_next(NULL); 1ca4: 2000 movs r0, #0 1ca6: 4b11 ldr r3, [pc, #68] ; (1cec ) 1ca8: 4798 blx r3 while(i) { 1caa: 2800 cmp r0, #0 1cac: d0f2 beq.n 1c94 if(indev_act == i) indev_obj_act = NULL; 1cae: 4f0d ldr r7, [pc, #52] ; (1ce4 ) 1cb0: 4d0d ldr r5, [pc, #52] ; (1ce8 ) i = lv_indev_get_next(i); 1cb2: 4e0e ldr r6, [pc, #56] ; (1cec ) 1cb4: e007 b.n 1cc6 if(indev_act == i) indev_obj_act = NULL; 1cb6: 2300 movs r3, #0 1cb8: 602b str r3, [r5, #0] 1cba: e00c b.n 1cd6 i->proc.types.pointer.last_pressed = NULL; 1cbc: 2300 movs r3, #0 1cbe: 63c3 str r3, [r0, #60] ; 0x3c i = lv_indev_get_next(i); 1cc0: 47b0 blx r6 while(i) { 1cc2: 2800 cmp r0, #0 1cc4: d0e6 beq.n 1c94 i->proc.reset_query = 1; 1cc6: 2250 movs r2, #80 ; 0x50 1cc8: 5c83 ldrb r3, [r0, r2] 1cca: 2102 movs r1, #2 1ccc: 430b orrs r3, r1 1cce: 5483 strb r3, [r0, r2] if(indev_act == i) indev_obj_act = NULL; 1cd0: 683b ldr r3, [r7, #0] 1cd2: 4283 cmp r3, r0 1cd4: d0ef beq.n 1cb6 if(obj == NULL || i->proc.types.pointer.last_pressed == obj) { 1cd6: 2c00 cmp r4, #0 1cd8: d0f0 beq.n 1cbc 1cda: 6bc3 ldr r3, [r0, #60] ; 0x3c 1cdc: 429c cmp r4, r3 1cde: d1ef bne.n 1cc0 1ce0: e7ec b.n 1cbc 1ce2: 46c0 nop ; (mov r8, r8) 1ce4: 200026e4 .word 0x200026e4 1ce8: 200026e8 .word 0x200026e8 1cec: 00010eb9 .word 0x00010eb9 00001cf0 <_lv_indev_init>: { 1cf0: b510 push {r4, lr} lv_indev_reset(NULL, NULL); /*Reset all input devices*/ 1cf2: 2100 movs r1, #0 1cf4: 2000 movs r0, #0 1cf6: 4b01 ldr r3, [pc, #4] ; (1cfc <_lv_indev_init+0xc>) 1cf8: 4798 blx r3 } 1cfa: bd10 pop {r4, pc} 1cfc: 00001c71 .word 0x00001c71 00001d00 : * Gets a pointer to the currently active object in the currently processed input device. * @return pointer to currently active object or NULL if no active object */ lv_obj_t * lv_indev_get_obj_act(void) { return indev_obj_act; 1d00: 4b01 ldr r3, [pc, #4] ; (1d08 ) 1d02: 6818 ldr r0, [r3, #0] } 1d04: 4770 bx lr 1d06: 46c0 nop ; (mov r8, r8) 1d08: 200026e8 .word 0x200026e8 00001d0c : * @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) { 1d0c: b5f0 push {r4, r5, r6, r7, lr} 1d0e: b085 sub sp, #20 1d10: 000d movs r5, r1 1d12: 9102 str r1, [sp, #8] 1d14: 0016 movs r6, r2 1d16: 9203 str r2, [sp, #12] lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 1d18: 1d03 adds r3, r0, #4 1d1a: 9301 str r3, [sp, #4] 1d1c: 0018 movs r0, r3 1d1e: 4b0f ldr r3, [pc, #60] ; (1d5c ) 1d20: 4798 blx r3 1d22: 1e04 subs r4, r0, #0 1d24: d018 beq.n 1d58 i->coords.x1 += x_diff; 1d26: b2ad uxth r5, r5 i->coords.y1 += y_diff; 1d28: b2b7 uxth r7, r6 _LV_LL_READ(obj->child_ll, i) { 1d2a: 4e0d ldr r6, [pc, #52] ; (1d60 ) i->coords.x1 += x_diff; 1d2c: 8a23 ldrh r3, [r4, #16] 1d2e: 18eb adds r3, r5, r3 1d30: 8223 strh r3, [r4, #16] i->coords.y1 += y_diff; 1d32: 8a63 ldrh r3, [r4, #18] 1d34: 18fb adds r3, r7, r3 1d36: 8263 strh r3, [r4, #18] i->coords.x2 += x_diff; 1d38: 8aa3 ldrh r3, [r4, #20] 1d3a: 18eb adds r3, r5, r3 1d3c: 82a3 strh r3, [r4, #20] i->coords.y2 += y_diff; 1d3e: 8ae3 ldrh r3, [r4, #22] 1d40: 18fb adds r3, r7, r3 1d42: 82e3 strh r3, [r4, #22] refresh_children_position(i, x_diff, y_diff); 1d44: 9a03 ldr r2, [sp, #12] 1d46: 9902 ldr r1, [sp, #8] 1d48: 0020 movs r0, r4 1d4a: f7ff ffdf bl 1d0c _LV_LL_READ(obj->child_ll, i) { 1d4e: 0021 movs r1, r4 1d50: 9801 ldr r0, [sp, #4] 1d52: 47b0 blx r6 1d54: 1e04 subs r4, r0, #0 1d56: d1e9 bne.n 1d2c } } 1d58: b005 add sp, #20 1d5a: bdf0 pop {r4, r5, r6, r7, pc} 1d5c: 00011e85 .word 0x00011e85 1d60: 00011e9d .word 0x00011e9d 00001d64 : { 1d64: b530 push {r4, r5, lr} 1d66: b085 sub sp, #20 if(lv_initialized) { 1d68: 4b21 ldr r3, [pc, #132] ; (1df0 ) 1d6a: 781b ldrb r3, [r3, #0] 1d6c: 2b00 cmp r3, #0 1d6e: d136 bne.n 1dde _lv_mem_init(); 1d70: 4b20 ldr r3, [pc, #128] ; (1df4 ) 1d72: 4798 blx r3 _lv_task_core_init(); 1d74: 4b20 ldr r3, [pc, #128] ; (1df8 ) 1d76: 4798 blx r3 _lv_fs_init(); 1d78: 4b20 ldr r3, [pc, #128] ; (1dfc ) 1d7a: 4798 blx r3 _lv_anim_core_init(); 1d7c: 4b20 ldr r3, [pc, #128] ; (1e00 ) 1d7e: 4798 blx r3 _lv_group_init(); 1d80: 4b20 ldr r3, [pc, #128] ; (1e04 ) 1d82: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_obj_style_trans_ll), sizeof(lv_style_trans_t)); 1d84: 2110 movs r1, #16 1d86: 4820 ldr r0, [pc, #128] ; (1e08 ) 1d88: 4c20 ldr r4, [pc, #128] ; (1e0c ) 1d8a: 47a0 blx r4 lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_THEME_DEFAULT_COLOR_PRIMARY, LV_THEME_DEFAULT_COLOR_SECONDARY, 1d8c: 4b20 ldr r3, [pc, #128] ; (1e10 ) 1d8e: 9302 str r3, [sp, #8] 1d90: 9301 str r3, [sp, #4] 1d92: 9300 str r3, [sp, #0] 1d94: 2202 movs r2, #2 1d96: 211f movs r1, #31 1d98: 481e ldr r0, [pc, #120] ; (1e14 ) 1d9a: 8800 ldrh r0, [r0, #0] 1d9c: 4d1e ldr r5, [pc, #120] ; (1e18 ) 1d9e: 47a8 blx r5 lv_theme_set_act(th); 1da0: 4b1e ldr r3, [pc, #120] ; (1e1c ) 1da2: 4798 blx r3 _lv_refr_init(); 1da4: 4b1e ldr r3, [pc, #120] ; (1e20 ) 1da6: 4798 blx r3 _lv_ll_init(&LV_GC_ROOT(_lv_disp_ll), sizeof(lv_disp_t)); 1da8: 21b8 movs r1, #184 ; 0xb8 1daa: 0049 lsls r1, r1, #1 1dac: 481d ldr r0, [pc, #116] ; (1e24 ) 1dae: 47a0 blx r4 _lv_ll_init(&LV_GC_ROOT(_lv_indev_ll), sizeof(lv_indev_t)); 1db0: 2160 movs r1, #96 ; 0x60 1db2: 481d ldr r0, [pc, #116] ; (1e28 ) 1db4: 47a0 blx r4 _lv_indev_init(); 1db6: 4b1d ldr r3, [pc, #116] ; (1e2c ) 1db8: 4798 blx r3 _lv_img_decoder_init(); 1dba: 4b1d ldr r3, [pc, #116] ; (1e30 ) 1dbc: 4798 blx r3 lv_img_cache_set_size(LV_IMG_CACHE_DEF_SIZE); 1dbe: 2001 movs r0, #1 1dc0: 4b1c ldr r3, [pc, #112] ; (1e34 ) 1dc2: 4798 blx r3 lv_initialized = true; 1dc4: 2201 movs r2, #1 1dc6: 4b0a ldr r3, [pc, #40] ; (1df0 ) 1dc8: 701a strb r2, [r3, #0] LV_LOG_INFO("lv_init ready"); 1dca: 4b1b ldr r3, [pc, #108] ; (1e38 ) 1dcc: 9300 str r3, [sp, #0] 1dce: 4b1b ldr r3, [pc, #108] ; (1e3c ) 1dd0: 32a1 adds r2, #161 ; 0xa1 1dd2: 491b ldr r1, [pc, #108] ; (1e40 ) 1dd4: 2001 movs r0, #1 1dd6: 4c1b ldr r4, [pc, #108] ; (1e44 ) 1dd8: 47a0 blx r4 } 1dda: b005 add sp, #20 1ddc: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_init: already inited"); 1dde: 4b1a ldr r3, [pc, #104] ; (1e48 ) 1de0: 9300 str r3, [sp, #0] 1de2: 4b16 ldr r3, [pc, #88] ; (1e3c ) 1de4: 2278 movs r2, #120 ; 0x78 1de6: 4916 ldr r1, [pc, #88] ; (1e40 ) 1de8: 2002 movs r0, #2 1dea: 4c16 ldr r4, [pc, #88] ; (1e44 ) 1dec: 47a0 blx r4 return; 1dee: e7f4 b.n 1dda 1df0: 200026f4 .word 0x200026f4 1df4: 000122b5 .word 0x000122b5 1df8: 000134a5 .word 0x000134a5 1dfc: 00011b45 .word 0x00011b45 1e00: 00011165 .word 0x00011165 1e04: 00001a35 .word 0x00001a35 1e08: 20004dc4 .word 0x20004dc4 1e0c: 00011dd1 .word 0x00011dd1 1e10: 20000030 .word 0x20000030 1e14: 00025862 .word 0x00025862 1e18: 0001690d .word 0x0001690d 1e1c: 000140cd .word 0x000140cd 1e20: 0000547d .word 0x0000547d 1e24: 20004d20 .word 0x20004d20 1e28: 20004d14 .word 0x20004d14 1e2c: 00001cf1 .word 0x00001cf1 1e30: 0000fded .word 0x0000fded 1e34: 0000f19d .word 0x0000f19d 1e38: 00025c74 .word 0x00025c74 1e3c: 000258bc .word 0x000258bc 1e40: 00025c2c .word 0x00025c2c 1e44: 00012159 .word 0x00012159 1e48: 00025c5c .word 0x00025c5c 00001e4c : { 1e4c: b530 push {r4, r5, lr} 1e4e: b083 sub sp, #12 1e50: 0004 movs r4, r0 1e52: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e54: 4b0c ldr r3, [pc, #48] ; (1e88 ) 1e56: 4798 blx r3 1e58: 2800 cmp r0, #0 1e5a: d008 beq.n 1e6e obj->adv_hittest = en == false ? 0 : 1; 1e5c: 2234 movs r2, #52 ; 0x34 1e5e: 01ed lsls r5, r5, #7 1e60: 5ca1 ldrb r1, [r4, r2] 1e62: 237f movs r3, #127 ; 0x7f 1e64: 400b ands r3, r1 1e66: 432b orrs r3, r5 1e68: 54a3 strb r3, [r4, r2] } 1e6a: b003 add sp, #12 1e6c: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1e6e: 4b07 ldr r3, [pc, #28] ; (1e8c ) 1e70: 9300 str r3, [sp, #0] 1e72: 4a07 ldr r2, [pc, #28] ; (1e90 ) 1e74: 4907 ldr r1, [pc, #28] ; (1e94 ) 1e76: 3003 adds r0, #3 1e78: 4d07 ldr r5, [pc, #28] ; (1e98 ) 1e7a: 47a8 blx r5 1e7c: 0022 movs r2, r4 1e7e: 2300 movs r3, #0 1e80: 4806 ldr r0, [pc, #24] ; (1e9c ) 1e82: 4907 ldr r1, [pc, #28] ; (1ea0 ) 1e84: 4788 blx r1 1e86: e7fe b.n 1e86 1e88: 000017ad .word 0x000017ad 1e8c: 000259dc .word 0x000259dc 1e90: 00000594 .word 0x00000594 1e94: 00025c2c .word 0x00025c2c 1e98: 00012159 .word 0x00012159 1e9c: 00025d20 .word 0x00025d20 1ea0: 000017b5 .word 0x000017b5 00001ea4 : { 1ea4: b530 push {r4, r5, lr} 1ea6: b083 sub sp, #12 1ea8: 0004 movs r4, r0 1eaa: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1eac: 4b0d ldr r3, [pc, #52] ; (1ee4 ) 1eae: 4798 blx r3 1eb0: 2800 cmp r0, #0 1eb2: d009 beq.n 1ec8 obj->click = (en == true ? 1 : 0); 1eb4: 2234 movs r2, #52 ; 0x34 1eb6: 2301 movs r3, #1 1eb8: 401d ands r5, r3 1eba: 5ca3 ldrb r3, [r4, r2] 1ebc: 2001 movs r0, #1 1ebe: 4383 bics r3, r0 1ec0: 432b orrs r3, r5 1ec2: 54a3 strb r3, [r4, r2] } 1ec4: b003 add sp, #12 1ec6: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1ec8: 4b07 ldr r3, [pc, #28] ; (1ee8 ) 1eca: 9300 str r3, [sp, #0] 1ecc: 22b4 movs r2, #180 ; 0xb4 1ece: 00d2 lsls r2, r2, #3 1ed0: 4906 ldr r1, [pc, #24] ; (1eec ) 1ed2: 3003 adds r0, #3 1ed4: 4d06 ldr r5, [pc, #24] ; (1ef0 ) 1ed6: 47a8 blx r5 1ed8: 0022 movs r2, r4 1eda: 2300 movs r3, #0 1edc: 4805 ldr r0, [pc, #20] ; (1ef4 ) 1ede: 4906 ldr r1, [pc, #24] ; (1ef8 ) 1ee0: 4788 blx r1 1ee2: e7fe b.n 1ee2 1ee4: 000017ad .word 0x000017ad 1ee8: 000259f4 .word 0x000259f4 1eec: 00025c2c .word 0x00025c2c 1ef0: 00012159 .word 0x00012159 1ef4: 00025d20 .word 0x00025d20 1ef8: 000017b5 .word 0x000017b5 00001efc : { 1efc: b5f0 push {r4, r5, r6, r7, lr} 1efe: b089 sub sp, #36 ; 0x24 1f00: 0007 movs r7, r0 1f02: 000c movs r4, r1 1f04: 9203 str r2, [sp, #12] 1f06: 001e movs r6, r3 if(obj != NULL) { 1f08: 2900 cmp r1, #0 1f0a: d004 beq.n 1f16 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f0c: 0008 movs r0, r1 1f0e: 4b29 ldr r3, [pc, #164] ; (1fb4 ) 1f10: 4798 blx r3 1f12: 2800 cmp r0, #0 1f14: d03c beq.n 1f90 event_temp_data.obj = obj; 1f16: ab05 add r3, sp, #20 1f18: 9405 str r4, [sp, #20] event_temp_data.deleted = false; 1f1a: 2200 movs r2, #0 1f1c: 711a strb r2, [r3, #4] event_temp_data.prev = NULL; 1f1e: 9207 str r2, [sp, #28] if(event_temp_data_head) { 1f20: 4b25 ldr r3, [pc, #148] ; (1fb8 ) 1f22: 681b ldr r3, [r3, #0] 1f24: 2b00 cmp r3, #0 1f26: d000 beq.n 1f2a event_temp_data.prev = event_temp_data_head; 1f28: 9307 str r3, [sp, #28] event_temp_data_head = &event_temp_data; 1f2a: aa05 add r2, sp, #20 1f2c: 4b22 ldr r3, [pc, #136] ; (1fb8 ) 1f2e: 601a str r2, [r3, #0] const void * event_act_data_save = event_act_data; 1f30: 4b22 ldr r3, [pc, #136] ; (1fbc ) 1f32: 681d ldr r5, [r3, #0] event_act_data = data; 1f34: 601e str r6, [r3, #0] lv_indev_t * indev_act = lv_indev_get_act(); 1f36: 4b22 ldr r3, [pc, #136] ; (1fc0 ) 1f38: 4798 blx r3 if(indev_act) { 1f3a: 2800 cmp r0, #0 1f3c: d004 beq.n 1f48 if(indev_act->driver.feedback_cb) indev_act->driver.feedback_cb(&indev_act->driver, event); 1f3e: 6883 ldr r3, [r0, #8] 1f40: 2b00 cmp r3, #0 1f42: d001 beq.n 1f48 1f44: 9903 ldr r1, [sp, #12] 1f46: 4798 blx r3 if(event_xcb) event_xcb(obj, event); 1f48: 2f00 cmp r7, #0 1f4a: d002 beq.n 1f52 1f4c: 9903 ldr r1, [sp, #12] 1f4e: 0020 movs r0, r4 1f50: 47b8 blx r7 event_act_data = event_act_data_save; 1f52: 4b1a ldr r3, [pc, #104] ; (1fbc ) 1f54: 601d str r5, [r3, #0] event_temp_data_head = event_temp_data_head->prev; 1f56: 4b18 ldr r3, [pc, #96] ; (1fb8 ) 1f58: 681a ldr r2, [r3, #0] 1f5a: 6892 ldr r2, [r2, #8] 1f5c: 601a str r2, [r3, #0] if(event_temp_data.deleted) { 1f5e: ab05 add r3, sp, #20 1f60: 791b ldrb r3, [r3, #4] return LV_RES_INV; 1f62: 2000 movs r0, #0 if(event_temp_data.deleted) { 1f64: 2b00 cmp r3, #0 1f66: d111 bne.n 1f8c if(obj) { 1f68: 2c00 cmp r4, #0 1f6a: d01f beq.n 1fac if(obj->parent_event && obj->parent) { 1f6c: 3334 adds r3, #52 ; 0x34 1f6e: 5ce3 ldrb r3, [r4, r3] return LV_RES_OK; 1f70: 3001 adds r0, #1 if(obj->parent_event && obj->parent) { 1f72: 065b lsls r3, r3, #25 1f74: d50a bpl.n 1f8c 1f76: 6820 ldr r0, [r4, #0] 1f78: 2800 cmp r0, #0 1f7a: d019 beq.n 1fb0 lv_res_t res = lv_event_send(obj->parent, event, data); 1f7c: 0032 movs r2, r6 1f7e: 9903 ldr r1, [sp, #12] 1f80: 4b10 ldr r3, [pc, #64] ; (1fc4 ) 1f82: 4798 blx r3 if(res != LV_RES_OK) { 1f84: 3801 subs r0, #1 1f86: 4242 negs r2, r0 1f88: 4142 adcs r2, r0 return LV_RES_INV; 1f8a: b2d0 uxtb r0, r2 } 1f8c: b009 add sp, #36 ; 0x24 1f8e: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1f90: 4b0d ldr r3, [pc, #52] ; (1fc8 ) 1f92: 9300 str r3, [sp, #0] 1f94: 22db movs r2, #219 ; 0xdb 1f96: 00d2 lsls r2, r2, #3 1f98: 490c ldr r1, [pc, #48] ; (1fcc ) 1f9a: 3003 adds r0, #3 1f9c: 4d0c ldr r5, [pc, #48] ; (1fd0 ) 1f9e: 47a8 blx r5 1fa0: 0022 movs r2, r4 1fa2: 2300 movs r3, #0 1fa4: 480b ldr r0, [pc, #44] ; (1fd4 ) 1fa6: 490c ldr r1, [pc, #48] ; (1fd8 ) 1fa8: 4788 blx r1 1faa: e7fe b.n 1faa return LV_RES_OK; 1fac: 2001 movs r0, #1 1fae: e7ed b.n 1f8c 1fb0: 2001 movs r0, #1 1fb2: e7eb b.n 1f8c 1fb4: 000017ad .word 0x000017ad 1fb8: 200026f0 .word 0x200026f0 1fbc: 200026ec .word 0x200026ec 1fc0: 00001c65 .word 0x00001c65 1fc4: 00001fdd .word 0x00001fdd 1fc8: 00025a54 .word 0x00025a54 1fcc: 00025c2c .word 0x00025c2c 1fd0: 00012159 .word 0x00012159 1fd4: 00025d20 .word 0x00025d20 1fd8: 000017b5 .word 0x000017b5 00001fdc : { 1fdc: b570 push {r4, r5, r6, lr} 1fde: b082 sub sp, #8 1fe0: 0004 movs r4, r0 1fe2: 000d movs r5, r1 1fe4: 0016 movs r6, r2 if(obj == NULL) return LV_RES_OK; 1fe6: 2800 cmp r0, #0 1fe8: d018 beq.n 201c LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 1fea: 4b0d ldr r3, [pc, #52] ; (2020 ) 1fec: 4798 blx r3 1fee: 2800 cmp r0, #0 1ff0: d10c bne.n 200c 1ff2: 4b0c ldr r3, [pc, #48] ; (2024 ) 1ff4: 9300 str r3, [sp, #0] 1ff6: 4a0c ldr r2, [pc, #48] ; (2028 ) 1ff8: 490c ldr r1, [pc, #48] ; (202c ) 1ffa: 3003 adds r0, #3 1ffc: 4d0c ldr r5, [pc, #48] ; (2030 ) 1ffe: 47a8 blx r5 2000: 0022 movs r2, r4 2002: 2300 movs r3, #0 2004: 480b ldr r0, [pc, #44] ; (2034 ) 2006: 490c ldr r1, [pc, #48] ; (2038 ) 2008: 4788 blx r1 200a: e7fe b.n 200a res = lv_event_send_func(obj->event_cb, obj, event, data); 200c: 69a0 ldr r0, [r4, #24] 200e: 0033 movs r3, r6 2010: 002a movs r2, r5 2012: 0021 movs r1, r4 2014: 4c09 ldr r4, [pc, #36] ; (203c ) 2016: 47a0 blx r4 } 2018: b002 add sp, #8 201a: bd70 pop {r4, r5, r6, pc} if(obj == NULL) return LV_RES_OK; 201c: 2001 movs r0, #1 201e: e7fb b.n 2018 2020: 000017ad .word 0x000017ad 2024: 00025a44 .word 0x00025a44 2028: 000006c4 .word 0x000006c4 202c: 00025c2c .word 0x00025c2c 2030: 00012159 .word 0x00012159 2034: 00025d20 .word 0x00025d20 2038: 000017b5 .word 0x000017b5 203c: 00001efd .word 0x00001efd 00002040 : { 2040: b530 push {r4, r5, lr} 2042: b083 sub sp, #12 2044: 0004 movs r4, r0 2046: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2048: 4b09 ldr r3, [pc, #36] ; (2070 ) 204a: 4798 blx r3 204c: 2800 cmp r0, #0 204e: d002 beq.n 2056 obj->signal_cb = signal_cb; 2050: 61e5 str r5, [r4, #28] } 2052: b003 add sp, #12 2054: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2056: 4b07 ldr r3, [pc, #28] ; (2074 ) 2058: 9300 str r3, [sp, #0] 205a: 4a07 ldr r2, [pc, #28] ; (2078 ) 205c: 4907 ldr r1, [pc, #28] ; (207c ) 205e: 3003 adds r0, #3 2060: 4d07 ldr r5, [pc, #28] ; (2080 ) 2062: 47a8 blx r5 2064: 0022 movs r2, r4 2066: 2300 movs r3, #0 2068: 4806 ldr r0, [pc, #24] ; (2084 ) 206a: 4907 ldr r1, [pc, #28] ; (2088 ) 206c: 4788 blx r1 206e: e7fe b.n 206e 2070: 000017ad .word 0x000017ad 2074: 00025a68 .word 0x00025a68 2078: 0000071b .word 0x0000071b 207c: 00025c2c .word 0x00025c2c 2080: 00012159 .word 0x00012159 2084: 00025d20 .word 0x00025d20 2088: 000017b5 .word 0x000017b5 0000208c : { 208c: b510 push {r4, lr} if(obj == NULL) return LV_RES_OK; 208e: 2800 cmp r0, #0 2090: d004 beq.n 209c if(obj->signal_cb) res = obj->signal_cb(obj, signal, param); 2092: 69c3 ldr r3, [r0, #28] 2094: 2b00 cmp r3, #0 2096: d003 beq.n 20a0 2098: 4798 blx r3 } 209a: bd10 pop {r4, pc} if(obj == NULL) return LV_RES_OK; 209c: 2001 movs r0, #1 209e: e7fc b.n 209a lv_res_t res = LV_RES_OK; 20a0: 2001 movs r0, #1 20a2: e7fa b.n 209a 000020a4 : { 20a4: b530 push {r4, r5, lr} 20a6: b083 sub sp, #12 20a8: 0004 movs r4, r0 20aa: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20ac: 4b09 ldr r3, [pc, #36] ; (20d4 ) 20ae: 4798 blx r3 20b0: 2800 cmp r0, #0 20b2: d002 beq.n 20ba obj->design_cb = design_cb; 20b4: 6225 str r5, [r4, #32] } 20b6: b003 add sp, #12 20b8: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20ba: 4b07 ldr r3, [pc, #28] ; (20d8 ) 20bc: 9300 str r3, [sp, #0] 20be: 4a07 ldr r2, [pc, #28] ; (20dc ) 20c0: 4907 ldr r1, [pc, #28] ; (20e0 ) 20c2: 3003 adds r0, #3 20c4: 4d07 ldr r5, [pc, #28] ; (20e4 ) 20c6: 47a8 blx r5 20c8: 0022 movs r2, r4 20ca: 2300 movs r3, #0 20cc: 4806 ldr r0, [pc, #24] ; (20e8 ) 20ce: 4907 ldr r1, [pc, #28] ; (20ec ) 20d0: 4788 blx r1 20d2: e7fe b.n 20d2 20d4: 000017ad .word 0x000017ad 20d8: 00025a80 .word 0x00025a80 20dc: 00000737 .word 0x00000737 20e0: 00025c2c .word 0x00025c2c 20e4: 00012159 .word 0x00012159 20e8: 00025d20 .word 0x00025d20 20ec: 000017b5 .word 0x000017b5 000020f0 : { 20f0: b530 push {r4, r5, lr} 20f2: b083 sub sp, #12 20f4: 0004 movs r4, r0 20f6: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 20f8: 4b0c ldr r3, [pc, #48] ; (212c ) 20fa: 4798 blx r3 20fc: 2800 cmp r0, #0 20fe: d10c bne.n 211a 2100: 4b0b ldr r3, [pc, #44] ; (2130 ) 2102: 9300 str r3, [sp, #0] 2104: 4a0b ldr r2, [pc, #44] ; (2134 ) 2106: 490c ldr r1, [pc, #48] ; (2138 ) 2108: 3003 adds r0, #3 210a: 4d0c ldr r5, [pc, #48] ; (213c ) 210c: 47a8 blx r5 210e: 0022 movs r2, r4 2110: 2300 movs r3, #0 2112: 480b ldr r0, [pc, #44] ; (2140 ) 2114: 490b ldr r1, [pc, #44] ; (2144 ) 2116: 4788 blx r1 2118: e7fe b.n 2118 void * new_ext = lv_mem_realloc(obj->ext_attr, ext_size); 211a: 0029 movs r1, r5 211c: 6a60 ldr r0, [r4, #36] ; 0x24 211e: 4b0a ldr r3, [pc, #40] ; (2148 ) 2120: 4798 blx r3 if(new_ext == NULL) return NULL; 2122: 2800 cmp r0, #0 2124: d000 beq.n 2128 obj->ext_attr = new_ext; 2126: 6260 str r0, [r4, #36] ; 0x24 } 2128: b003 add sp, #12 212a: bd30 pop {r4, r5, pc} 212c: 000017ad .word 0x000017ad 2130: 00025a98 .word 0x00025a98 2134: 00000749 .word 0x00000749 2138: 00025c2c .word 0x00025c2c 213c: 00012159 .word 0x00012159 2140: 00025d20 .word 0x00025d20 2144: 000017b5 .word 0x000017b5 2148: 000126fd .word 0x000126fd 0000214c : { 214c: b530 push {r4, r5, lr} 214e: b083 sub sp, #12 2150: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2152: 4b0d ldr r3, [pc, #52] ; (2188 ) 2154: 4798 blx r3 2156: 2800 cmp r0, #0 2158: d10c bne.n 2174 215a: 4b0c ldr r3, [pc, #48] ; (218c ) 215c: 9300 str r3, [sp, #0] 215e: 4a0c ldr r2, [pc, #48] ; (2190 ) 2160: 490c ldr r1, [pc, #48] ; (2194 ) 2162: 3003 adds r0, #3 2164: 4d0c ldr r5, [pc, #48] ; (2198 ) 2166: 47a8 blx r5 2168: 0022 movs r2, r4 216a: 2300 movs r3, #0 216c: 480b ldr r0, [pc, #44] ; (219c ) 216e: 490c ldr r1, [pc, #48] ; (21a0 ) 2170: 4788 blx r1 2172: e7fe b.n 2172 obj->ext_draw_pad = 0; 2174: 2300 movs r3, #0 2176: 8663 strh r3, [r4, #50] ; 0x32 obj->signal_cb(obj, LV_SIGNAL_REFR_EXT_DRAW_PAD, NULL); 2178: 69e3 ldr r3, [r4, #28] 217a: 2200 movs r2, #0 217c: 2106 movs r1, #6 217e: 0020 movs r0, r4 2180: 4798 blx r3 } 2182: b003 add sp, #12 2184: bd30 pop {r4, r5, pc} 2186: 46c0 nop ; (mov r8, r8) 2188: 000017ad .word 0x000017ad 218c: 00025ab4 .word 0x00025ab4 2190: 00000759 .word 0x00000759 2194: 00025c2c .word 0x00025c2c 2198: 00012159 .word 0x00012159 219c: 00025d20 .word 0x00025d20 21a0: 000017b5 .word 0x000017b5 000021a4 : { 21a4: b530 push {r4, r5, lr} 21a6: b083 sub sp, #12 21a8: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 21aa: 4b0a ldr r3, [pc, #40] ; (21d4 ) 21ac: 4798 blx r3 21ae: 2800 cmp r0, #0 21b0: d002 beq.n 21b8 return obj->parent; 21b2: 6820 ldr r0, [r4, #0] } 21b4: b003 add sp, #12 21b6: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 21b8: 4b07 ldr r3, [pc, #28] ; (21d8 ) 21ba: 9300 str r3, [sp, #0] 21bc: 4a07 ldr r2, [pc, #28] ; (21dc ) 21be: 4908 ldr r1, [pc, #32] ; (21e0 ) 21c0: 3003 adds r0, #3 21c2: 4d08 ldr r5, [pc, #32] ; (21e4 ) 21c4: 47a8 blx r5 21c6: 0022 movs r2, r4 21c8: 2300 movs r3, #0 21ca: 4807 ldr r0, [pc, #28] ; (21e8 ) 21cc: 4907 ldr r1, [pc, #28] ; (21ec ) 21ce: 4788 blx r1 21d0: e7fe b.n 21d0 21d2: 46c0 nop ; (mov r8, r8) 21d4: 000017ad .word 0x000017ad 21d8: 00025af4 .word 0x00025af4 21dc: 0000079f .word 0x0000079f 21e0: 00025c2c .word 0x00025c2c 21e4: 00012159 .word 0x00012159 21e8: 00025d20 .word 0x00025d20 21ec: 000017b5 .word 0x000017b5 000021f0 : { 21f0: b530 push {r4, r5, lr} 21f2: b083 sub sp, #12 21f4: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 21f6: 4b0d ldr r3, [pc, #52] ; (222c ) 21f8: 4798 blx r3 21fa: 2800 cmp r0, #0 21fc: d001 beq.n 2202 par = lv_obj_get_parent(act_p); 21fe: 4d0c ldr r5, [pc, #48] ; (2230 ) 2200: e00d b.n 221e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2202: 4b0c ldr r3, [pc, #48] ; (2234 ) 2204: 9300 str r3, [sp, #0] 2206: 4a0c ldr r2, [pc, #48] ; (2238 ) 2208: 490c ldr r1, [pc, #48] ; (223c ) 220a: 3003 adds r0, #3 220c: 4d0c ldr r5, [pc, #48] ; (2240 ) 220e: 47a8 blx r5 2210: 0022 movs r2, r4 2212: 2300 movs r3, #0 2214: 480b ldr r0, [pc, #44] ; (2244 ) 2216: 490c ldr r1, [pc, #48] ; (2248 ) 2218: 4788 blx r1 221a: e7fe b.n 221a par = lv_obj_get_parent(act_p); 221c: 0004 movs r4, r0 221e: 0020 movs r0, r4 2220: 47a8 blx r5 } while(par != NULL); 2222: 2800 cmp r0, #0 2224: d1fa bne.n 221c } 2226: 0020 movs r0, r4 2228: b003 add sp, #12 222a: bd30 pop {r4, r5, pc} 222c: 000017ad .word 0x000017ad 2230: 000021a5 .word 0x000021a5 2234: 00025ad0 .word 0x00025ad0 2238: 0000076b .word 0x0000076b 223c: 00025c2c .word 0x00025c2c 2240: 00012159 .word 0x00012159 2244: 00025d20 .word 0x00025d20 2248: 000017b5 .word 0x000017b5 0000224c : { 224c: b5f0 push {r4, r5, r6, r7, lr} 224e: 46c6 mov lr, r8 2250: b500 push {lr} 2252: b082 sub sp, #8 2254: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2256: 4b23 ldr r3, [pc, #140] ; (22e4 ) 2258: 4798 blx r3 225a: 2800 cmp r0, #0 225c: d00f beq.n 227e if(obj->parent == NULL) 225e: 6823 ldr r3, [r4, #0] 2260: 2b00 cmp r3, #0 2262: d003 beq.n 226c scr = lv_obj_get_screen(obj); /*get the screen of `obj`*/ 2264: 0020 movs r0, r4 2266: 4b20 ldr r3, [pc, #128] ; (22e8 ) 2268: 4798 blx r3 226a: 0004 movs r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 226c: 481f ldr r0, [pc, #124] ; (22ec ) 226e: 4b20 ldr r3, [pc, #128] ; (22f0 ) 2270: 4798 blx r3 2272: 1e07 subs r7, r0, #0 2274: d02a beq.n 22cc _LV_LL_READ(d->scr_ll, s) { 2276: 4b1e ldr r3, [pc, #120] ; (22f0 ) 2278: 4698 mov r8, r3 227a: 4e1e ldr r6, [pc, #120] ; (22f4 ) 227c: e012 b.n 22a4 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 227e: 4b1e ldr r3, [pc, #120] ; (22f8 ) 2280: 9300 str r3, [sp, #0] 2282: 4a1e ldr r2, [pc, #120] ; (22fc ) 2284: 491e ldr r1, [pc, #120] ; (2300 ) 2286: 3003 adds r0, #3 2288: 4d1e ldr r5, [pc, #120] ; (2304 ) 228a: 47a8 blx r5 228c: 0022 movs r2, r4 228e: 2300 movs r3, #0 2290: 481d ldr r0, [pc, #116] ; (2308 ) 2292: 491e ldr r1, [pc, #120] ; (230c ) 2294: 4788 blx r1 2296: e7fe b.n 2296 _LV_LL_READ(LV_GC_ROOT(_lv_disp_ll), d) { 2298: 0039 movs r1, r7 229a: 4814 ldr r0, [pc, #80] ; (22ec ) 229c: 4b15 ldr r3, [pc, #84] ; (22f4 ) 229e: 4798 blx r3 22a0: 1e07 subs r7, r0, #0 22a2: d013 beq.n 22cc _LV_LL_READ(d->scr_ll, s) { 22a4: 003d movs r5, r7 22a6: 3530 adds r5, #48 ; 0x30 22a8: 0028 movs r0, r5 22aa: 47c0 blx r8 22ac: 2800 cmp r0, #0 22ae: d0f3 beq.n 2298 if(s == scr) return d; 22b0: 4284 cmp r4, r0 22b2: d006 beq.n 22c2 _LV_LL_READ(d->scr_ll, s) { 22b4: 0001 movs r1, r0 22b6: 0028 movs r0, r5 22b8: 47b0 blx r6 22ba: 2800 cmp r0, #0 22bc: d0ec beq.n 2298 if(s == scr) return d; 22be: 4284 cmp r4, r0 22c0: d1f8 bne.n 22b4 } 22c2: 0038 movs r0, r7 22c4: b002 add sp, #8 22c6: bc04 pop {r2} 22c8: 4690 mov r8, r2 22ca: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("lv_scr_get_disp: screen not found") 22cc: 4b10 ldr r3, [pc, #64] ; (2310 ) 22ce: 9300 str r3, [sp, #0] 22d0: 4b09 ldr r3, [pc, #36] ; (22f8 ) 22d2: 22f2 movs r2, #242 ; 0xf2 22d4: 00d2 lsls r2, r2, #3 22d6: 490a ldr r1, [pc, #40] ; (2300 ) 22d8: 2002 movs r0, #2 22da: 4c0a ldr r4, [pc, #40] ; (2304 ) 22dc: 47a0 blx r4 return NULL; 22de: 2700 movs r7, #0 22e0: e7ef b.n 22c2 22e2: 46c0 nop ; (mov r8, r8) 22e4: 000017ad .word 0x000017ad 22e8: 000021f1 .word 0x000021f1 22ec: 20004d20 .word 0x20004d20 22f0: 00011e85 .word 0x00011e85 22f4: 00011e9d .word 0x00011e9d 22f8: 00025ae4 .word 0x00025ae4 22fc: 0000077f .word 0x0000077f 2300: 00025c2c .word 0x00025c2c 2304: 00012159 .word 0x00012159 2308: 00025d20 .word 0x00025d20 230c: 000017b5 .word 0x000017b5 2310: 00025d30 .word 0x00025d30 00002314 : { 2314: b530 push {r4, r5, lr} 2316: b083 sub sp, #12 2318: 0004 movs r4, r0 231a: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 231c: 4b0e ldr r3, [pc, #56] ; (2358 ) 231e: 4798 blx r3 2320: 2800 cmp r0, #0 2322: d007 beq.n 2334 if(child == NULL) { 2324: 2d00 cmp r5, #0 2326: d012 beq.n 234e result = _lv_ll_get_next(&obj->child_ll, child); 2328: 1d20 adds r0, r4, #4 232a: 0029 movs r1, r5 232c: 4b0b ldr r3, [pc, #44] ; (235c ) 232e: 4798 blx r3 } 2330: b003 add sp, #12 2332: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2334: 4b0a ldr r3, [pc, #40] ; (2360 ) 2336: 9300 str r3, [sp, #0] 2338: 4a0a ldr r2, [pc, #40] ; (2364 ) 233a: 490b ldr r1, [pc, #44] ; (2368 ) 233c: 3003 adds r0, #3 233e: 4d0b ldr r5, [pc, #44] ; (236c ) 2340: 47a8 blx r5 2342: 0022 movs r2, r4 2344: 2300 movs r3, #0 2346: 480a ldr r0, [pc, #40] ; (2370 ) 2348: 490a ldr r1, [pc, #40] ; (2374 ) 234a: 4788 blx r1 234c: e7fe b.n 234c result = _lv_ll_get_head(&obj->child_ll); 234e: 1d20 adds r0, r4, #4 2350: 4b09 ldr r3, [pc, #36] ; (2378 ) 2352: 4798 blx r3 2354: e7ec b.n 2330 2356: 46c0 nop ; (mov r8, r8) 2358: 000017ad .word 0x000017ad 235c: 00011e9d .word 0x00011e9d 2360: 00025b08 .word 0x00025b08 2364: 000007ad .word 0x000007ad 2368: 00025c2c .word 0x00025c2c 236c: 00012159 .word 0x00012159 2370: 00025d20 .word 0x00025d20 2374: 000017b5 .word 0x000017b5 2378: 00011e85 .word 0x00011e85 0000237c : { 237c: b530 push {r4, r5, lr} 237e: b083 sub sp, #12 2380: 0004 movs r4, r0 2382: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2384: 4b0d ldr r3, [pc, #52] ; (23bc ) 2386: 4798 blx r3 2388: 2800 cmp r0, #0 238a: d00a beq.n 23a2 238c: 0020 movs r0, r4 238e: 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; 2390: 3410 adds r4, #16 while(len) { *d8 = *s8; 2392: 7821 ldrb r1, [r4, #0] 2394: 7029 strb r1, [r5, #0] d8++; 2396: 3501 adds r5, #1 s8++; 2398: 3401 adds r4, #1 while(len) { 239a: 42a0 cmp r0, r4 239c: d1f9 bne.n 2392 } 239e: b003 add sp, #12 23a0: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 23a2: 4b07 ldr r3, [pc, #28] ; (23c0 ) 23a4: 9300 str r3, [sp, #0] 23a6: 4a07 ldr r2, [pc, #28] ; (23c4 ) 23a8: 4907 ldr r1, [pc, #28] ; (23c8 ) 23aa: 3003 adds r0, #3 23ac: 4d07 ldr r5, [pc, #28] ; (23cc ) 23ae: 47a8 blx r5 23b0: 0022 movs r2, r4 23b2: 2300 movs r3, #0 23b4: 4806 ldr r0, [pc, #24] ; (23d0 ) 23b6: 4907 ldr r1, [pc, #28] ; (23d4 ) 23b8: 4788 blx r1 23ba: e7fe b.n 23ba 23bc: 000017ad .word 0x000017ad 23c0: 00025b1c .word 0x00025b1c 23c4: 00000801 .word 0x00000801 23c8: 00025c2c .word 0x00025c2c 23cc: 00012159 .word 0x00012159 23d0: 00025d20 .word 0x00025d20 23d4: 000017b5 .word 0x000017b5 000023d8 : { 23d8: b530 push {r4, r5, lr} 23da: b083 sub sp, #12 23dc: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 23de: 4b0f ldr r3, [pc, #60] ; (241c ) 23e0: 4798 blx r3 23e2: 2800 cmp r0, #0 23e4: d10c bne.n 2400 23e6: 4b0e ldr r3, [pc, #56] ; (2420 ) 23e8: 9300 str r3, [sp, #0] 23ea: 4a0e ldr r2, [pc, #56] ; (2424 ) 23ec: 490e ldr r1, [pc, #56] ; (2428 ) 23ee: 3003 adds r0, #3 23f0: 4d0e ldr r5, [pc, #56] ; (242c ) 23f2: 47a8 blx r5 23f4: 0022 movs r2, r4 23f6: 2300 movs r3, #0 23f8: 480d ldr r0, [pc, #52] ; (2430 ) 23fa: 490e ldr r1, [pc, #56] ; (2434 ) 23fc: 4788 blx r1 23fe: e7fe b.n 23fe lv_obj_t * parent = lv_obj_get_parent(obj); 2400: 0020 movs r0, r4 2402: 4b0d ldr r3, [pc, #52] ; (2438 ) 2404: 4798 blx r3 if(parent) { 2406: 2800 cmp r0, #0 2408: d005 beq.n 2416 rel_x = obj->coords.x1 - parent->coords.x1; 240a: 8a23 ldrh r3, [r4, #16] 240c: 8a00 ldrh r0, [r0, #16] 240e: 1a18 subs r0, r3, r0 2410: b200 sxth r0, r0 } 2412: b003 add sp, #12 2414: bd30 pop {r4, r5, pc} rel_x = obj->coords.x1; 2416: 2310 movs r3, #16 2418: 5ee0 ldrsh r0, [r4, r3] 241a: e7fa b.n 2412 241c: 000017ad .word 0x000017ad 2420: 00025b30 .word 0x00025b30 2424: 00000822 .word 0x00000822 2428: 00025c2c .word 0x00025c2c 242c: 00012159 .word 0x00012159 2430: 00025d20 .word 0x00025d20 2434: 000017b5 .word 0x000017b5 2438: 000021a5 .word 0x000021a5 0000243c : { 243c: b530 push {r4, r5, lr} 243e: b083 sub sp, #12 2440: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2442: 4b0f ldr r3, [pc, #60] ; (2480 ) 2444: 4798 blx r3 2446: 2800 cmp r0, #0 2448: d10c bne.n 2464 244a: 4b0e ldr r3, [pc, #56] ; (2484 ) 244c: 9300 str r3, [sp, #0] 244e: 4a0e ldr r2, [pc, #56] ; (2488 ) 2450: 490e ldr r1, [pc, #56] ; (248c ) 2452: 3003 adds r0, #3 2454: 4d0e ldr r5, [pc, #56] ; (2490 ) 2456: 47a8 blx r5 2458: 0022 movs r2, r4 245a: 2300 movs r3, #0 245c: 480d ldr r0, [pc, #52] ; (2494 ) 245e: 490e ldr r1, [pc, #56] ; (2498 ) 2460: 4788 blx r1 2462: e7fe b.n 2462 lv_obj_t * parent = lv_obj_get_parent(obj); 2464: 0020 movs r0, r4 2466: 4b0d ldr r3, [pc, #52] ; (249c ) 2468: 4798 blx r3 if(parent) { 246a: 2800 cmp r0, #0 246c: d005 beq.n 247a rel_y = obj->coords.y1 - parent->coords.y1; 246e: 8a63 ldrh r3, [r4, #18] 2470: 8a40 ldrh r0, [r0, #18] 2472: 1a18 subs r0, r3, r0 2474: b200 sxth r0, r0 } 2476: b003 add sp, #12 2478: bd30 pop {r4, r5, pc} rel_y = obj->coords.y1; 247a: 2312 movs r3, #18 247c: 5ee0 ldrsh r0, [r4, r3] 247e: e7fa b.n 2476 2480: 000017ad .word 0x000017ad 2484: 00025b40 .word 0x00025b40 2488: 00000836 .word 0x00000836 248c: 00025c2c .word 0x00025c2c 2490: 00012159 .word 0x00012159 2494: 00025d20 .word 0x00025d20 2498: 000017b5 .word 0x000017b5 249c: 000021a5 .word 0x000021a5 000024a0 : { 24a0: b530 push {r4, r5, lr} 24a2: b083 sub sp, #12 24a4: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 24a6: 4b0c ldr r3, [pc, #48] ; (24d8 ) 24a8: 4798 blx r3 24aa: 2800 cmp r0, #0 24ac: d006 beq.n 24bc * @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); 24ae: 8aa0 ldrh r0, [r4, #20] 24b0: 3001 adds r0, #1 24b2: 8a23 ldrh r3, [r4, #16] 24b4: 1ac0 subs r0, r0, r3 return lv_area_get_width(&obj->coords); 24b6: b200 sxth r0, r0 } 24b8: b003 add sp, #12 24ba: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 24bc: 4b07 ldr r3, [pc, #28] ; (24dc ) 24be: 9300 str r3, [sp, #0] 24c0: 4a07 ldr r2, [pc, #28] ; (24e0 ) 24c2: 4908 ldr r1, [pc, #32] ; (24e4 ) 24c4: 3003 adds r0, #3 24c6: 4d08 ldr r5, [pc, #32] ; (24e8 ) 24c8: 47a8 blx r5 24ca: 0022 movs r2, r4 24cc: 2300 movs r3, #0 24ce: 4807 ldr r0, [pc, #28] ; (24ec ) 24d0: 4907 ldr r1, [pc, #28] ; (24f0 ) 24d2: 4788 blx r1 24d4: e7fe b.n 24d4 24d6: 46c0 nop ; (mov r8, r8) 24d8: 000017ad .word 0x000017ad 24dc: 00025b50 .word 0x00025b50 24e0: 0000084a .word 0x0000084a 24e4: 00025c2c .word 0x00025c2c 24e8: 00012159 .word 0x00012159 24ec: 00025d20 .word 0x00025d20 24f0: 000017b5 .word 0x000017b5 000024f4 : { 24f4: b530 push {r4, r5, lr} 24f6: b083 sub sp, #12 24f8: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 24fa: 4b0c ldr r3, [pc, #48] ; (252c ) 24fc: 4798 blx r3 24fe: 2800 cmp r0, #0 2500: d006 beq.n 2510 * @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); 2502: 8ae0 ldrh r0, [r4, #22] 2504: 3001 adds r0, #1 2506: 8a63 ldrh r3, [r4, #18] 2508: 1ac0 subs r0, r0, r3 return lv_area_get_height(&obj->coords); 250a: b200 sxth r0, r0 } 250c: b003 add sp, #12 250e: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2510: 4b07 ldr r3, [pc, #28] ; (2530 ) 2512: 9300 str r3, [sp, #0] 2514: 4a07 ldr r2, [pc, #28] ; (2534 ) 2516: 4908 ldr r1, [pc, #32] ; (2538 ) 2518: 3003 adds r0, #3 251a: 4d08 ldr r5, [pc, #32] ; (253c ) 251c: 47a8 blx r5 251e: 0022 movs r2, r4 2520: 2300 movs r3, #0 2522: 4807 ldr r0, [pc, #28] ; (2540 ) 2524: 4907 ldr r1, [pc, #28] ; (2544 ) 2526: 4788 blx r1 2528: e7fe b.n 2528 252a: 46c0 nop ; (mov r8, r8) 252c: 000017ad .word 0x000017ad 2530: 00025b64 .word 0x00025b64 2534: 00000856 .word 0x00000856 2538: 00025c2c .word 0x00025c2c 253c: 00012159 .word 0x00012159 2540: 00025d20 .word 0x00025d20 2544: 000017b5 .word 0x000017b5 00002548 : { 2548: b500 push {lr} 254a: b083 sub sp, #12 if(part == LV_OBJ_PART_MAIN) return &((lv_obj_t *)obj)->style_list; 254c: 2900 cmp r1, #0 254e: d102 bne.n 2556 2550: 3028 adds r0, #40 ; 0x28 } 2552: b003 add sp, #12 2554: bd00 pop {pc} info.part = part; 2556: 466b mov r3, sp 2558: 7019 strb r1, [r3, #0] info.result = NULL; 255a: 2300 movs r3, #0 255c: 9301 str r3, [sp, #4] res = lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STYLE, &info); 255e: 466a mov r2, sp 2560: 2108 movs r1, #8 2562: 4b04 ldr r3, [pc, #16] ; (2574 ) 2564: 4798 blx r3 if(res != LV_RES_OK) return NULL; 2566: 2801 cmp r0, #1 2568: d101 bne.n 256e return info.result; 256a: 9801 ldr r0, [sp, #4] 256c: e7f1 b.n 2552 if(res != LV_RES_OK) return NULL; 256e: 2000 movs r0, #0 2570: e7ef b.n 2552 2572: 46c0 nop ; (mov r8, r8) 2574: 0000208d .word 0x0000208d 00002578 : * @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) { 2578: b5f0 push {r4, r5, r6, r7, lr} 257a: 46de mov lr, fp 257c: 4657 mov r7, sl 257e: 4646 mov r6, r8 2580: b5c0 push {r6, r7, lr} 2582: 4680 mov r8, r0 2584: 468a mov sl, r1 2586: 4693 mov fp, r2 2588: 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)); 258a: 481d ldr r0, [pc, #116] ; (2600 ) 258c: 4b1d ldr r3, [pc, #116] ; (2604 ) 258e: 4798 blx r3 2590: 1e04 subs r4, r0, #0 while(tr != NULL) { 2592: d02f beq.n 25f4 if(tr == tr_limit) break; 2594: 42b0 cmp r0, r6 2596: d02d beq.n 25f4 /*'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); 2598: 4f1b ldr r7, [pc, #108] ; (2608 ) 259a: e00a b.n 25b2 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 259c: 88a3 ldrh r3, [r4, #4] 259e: 455b cmp r3, fp 25a0: d015 beq.n 25ce 25a2: 465b mov r3, fp 25a4: 2bff cmp r3, #255 ; 0xff 25a6: d012 beq.n 25ce while(tr != NULL) { 25a8: 2d00 cmp r5, #0 25aa: d023 beq.n 25f4 25ac: 002c movs r4, r5 if(tr == tr_limit) break; 25ae: 42ae cmp r6, r5 25b0: d020 beq.n 25f4 tr_prev = _lv_ll_get_prev(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 25b2: 0021 movs r1, r4 25b4: 4812 ldr r0, [pc, #72] ; (2600 ) 25b6: 47b8 blx r7 25b8: 0005 movs r5, r0 if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) { 25ba: 6820 ldr r0, [r4, #0] 25bc: 4540 cmp r0, r8 25be: d1f3 bne.n 25a8 25c0: 79a1 ldrb r1, [r4, #6] 25c2: 4551 cmp r1, sl 25c4: d0ea beq.n 259c 25c6: 4653 mov r3, sl 25c8: 2bff cmp r3, #255 ; 0xff 25ca: d1ed bne.n 25a8 25cc: e7e6 b.n 259c /* 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); 25ce: 4b0f ldr r3, [pc, #60] ; (260c ) 25d0: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 25d2: 4b0f ldr r3, [pc, #60] ; (2610 ) 25d4: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 25d6: 88a1 ldrh r1, [r4, #4] 25d8: 4b0e ldr r3, [pc, #56] ; (2614 ) 25da: 4798 blx r3 lv_anim_del(tr, NULL); 25dc: 2100 movs r1, #0 25de: 0020 movs r0, r4 25e0: 4b0d ldr r3, [pc, #52] ; (2618 ) 25e2: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr); 25e4: 0021 movs r1, r4 25e6: 4806 ldr r0, [pc, #24] ; (2600 ) 25e8: 4b0c ldr r3, [pc, #48] ; (261c ) 25ea: 4798 blx r3 lv_mem_free(tr); 25ec: 0020 movs r0, r4 25ee: 4b0c ldr r3, [pc, #48] ; (2620 ) 25f0: 4798 blx r3 25f2: e7d9 b.n 25a8 } tr = tr_prev; } } 25f4: bc1c pop {r2, r3, r4} 25f6: 4690 mov r8, r2 25f8: 469a mov sl, r3 25fa: 46a3 mov fp, r4 25fc: bdf0 pop {r4, r5, r6, r7, pc} 25fe: 46c0 nop ; (mov r8, r8) 2600: 20004dc4 .word 0x20004dc4 2604: 00011e91 .word 0x00011e91 2608: 00011ec5 .word 0x00011ec5 260c: 00002549 .word 0x00002549 2610: 00006965 .word 0x00006965 2614: 00005e89 .word 0x00005e89 2618: 000111fd .word 0x000111fd 261c: 00011f6d .word 0x00011f6d 2620: 000123c9 .word 0x000123c9 00002624 : { 2624: b530 push {r4, r5, lr} 2626: b083 sub sp, #12 2628: 0004 movs r4, r0 262a: 000d movs r5, r1 lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part); 262c: 4b0b ldr r3, [pc, #44] ; (265c ) 262e: 4798 blx r3 if(style_dsc == NULL) { 2630: 2800 cmp r0, #0 2632: d009 beq.n 2648 _lv_style_list_reset(style_dsc); 2634: 4b0a ldr r3, [pc, #40] ; (2660 ) 2636: 4798 blx r3 trans_del(obj, part, 0xFF, NULL); 2638: 2300 movs r3, #0 263a: 22ff movs r2, #255 ; 0xff 263c: 0029 movs r1, r5 263e: 0020 movs r0, r4 2640: 4c08 ldr r4, [pc, #32] ; (2664 ) 2642: 47a0 blx r4 } 2644: b003 add sp, #12 2646: bd30 pop {r4, r5, pc} LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`"); 2648: 4b07 ldr r3, [pc, #28] ; (2668 ) 264a: 9300 str r3, [sp, #0] 264c: 4b07 ldr r3, [pc, #28] ; (266c ) 264e: 4a08 ldr r2, [pc, #32] ; (2670 ) 2650: 4908 ldr r1, [pc, #32] ; (2674 ) 2652: 3002 adds r0, #2 2654: 4c08 ldr r4, [pc, #32] ; (2678 ) 2656: 47a0 blx r4 return; 2658: e7f4 b.n 2644 265a: 46c0 nop ; (mov r8, r8) 265c: 00002549 .word 0x00002549 2660: 00006975 .word 0x00006975 2664: 00002579 .word 0x00002579 2668: 00025c84 .word 0x00025c84 266c: 000259ac .word 0x000259ac 2670: 00000492 .word 0x00000492 2674: 00025c2c .word 0x00025c2c 2678: 00012159 .word 0x00012159 0000267c : tr->prop = prop_tmp; } static void trans_anim_ready_cb(lv_anim_t * a) { 267c: b5f8 push {r3, r4, r5, r6, r7, lr} lv_style_trans_t * tr = a->var; 267e: 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) { 2680: 4817 ldr r0, [pc, #92] ; (26e0 ) 2682: 4b18 ldr r3, [pc, #96] ; (26e4 ) 2684: 4798 blx r3 2686: 2800 cmp r0, #0 2688: d020 beq.n 26cc 268a: 2600 movs r6, #0 268c: 4d14 ldr r5, [pc, #80] ; (26e0 ) 268e: 4f16 ldr r7, [pc, #88] ; (26e8 ) 2690: e004 b.n 269c 2692: 0001 movs r1, r0 2694: 0028 movs r0, r5 2696: 47b8 blx r7 2698: 2800 cmp r0, #0 269a: d00d beq.n 26b8 if(tr_i != tr && tr_i->obj == tr->obj && tr_i->part == tr->part && tr_i->prop == tr->prop) { 269c: 4284 cmp r4, r0 269e: d0f8 beq.n 2692 26a0: 6803 ldr r3, [r0, #0] 26a2: 6822 ldr r2, [r4, #0] 26a4: 4293 cmp r3, r2 26a6: d1f4 bne.n 2692 26a8: 6843 ldr r3, [r0, #4] 26aa: 021b lsls r3, r3, #8 26ac: 6862 ldr r2, [r4, #4] 26ae: 0212 lsls r2, r2, #8 26b0: 429a cmp r2, r3 26b2: d1ee bne.n 2692 running = true; 26b4: 2601 movs r6, #1 26b6: e7ec b.n 2692 } } if(!running) { 26b8: 2e00 cmp r6, #0 26ba: d007 beq.n 26cc 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); 26bc: 0021 movs r1, r4 26be: 4808 ldr r0, [pc, #32] ; (26e0 ) 26c0: 4b0a ldr r3, [pc, #40] ; (26ec ) 26c2: 4798 blx r3 lv_mem_free(tr); 26c4: 0020 movs r0, r4 26c6: 4b0a ldr r3, [pc, #40] ; (26f0 ) 26c8: 4798 blx r3 } 26ca: bdf8 pop {r3, r4, r5, r6, r7, pc} lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 26cc: 79a1 ldrb r1, [r4, #6] 26ce: 6820 ldr r0, [r4, #0] 26d0: 4b08 ldr r3, [pc, #32] ; (26f4 ) 26d2: 4798 blx r3 lv_style_t * style_trans = _lv_style_list_get_transition_style(list); 26d4: 4b08 ldr r3, [pc, #32] ; (26f8 ) 26d6: 4798 blx r3 lv_style_remove_prop(style_trans, tr->prop); 26d8: 88a1 ldrh r1, [r4, #4] 26da: 4b08 ldr r3, [pc, #32] ; (26fc ) 26dc: 4798 blx r3 26de: e7ed b.n 26bc 26e0: 20004dc4 .word 0x20004dc4 26e4: 00011e85 .word 0x00011e85 26e8: 00011e9d .word 0x00011e9d 26ec: 00011f6d .word 0x00011f6d 26f0: 000123c9 .word 0x000123c9 26f4: 00002549 .word 0x00002549 26f8: 00006965 .word 0x00006965 26fc: 00005e89 .word 0x00005e89 00002700 : { 2700: b530 push {r4, r5, lr} 2702: b083 sub sp, #12 2704: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2706: 4b0b ldr r3, [pc, #44] ; (2734 ) 2708: 4798 blx r3 270a: 2800 cmp r0, #0 270c: d005 beq.n 271a return obj->hidden == 0 ? false : true; 270e: 2334 movs r3, #52 ; 0x34 2710: 5ce0 ldrb r0, [r4, r3] 2712: 06c0 lsls r0, r0, #27 2714: 0fc0 lsrs r0, r0, #31 } 2716: b003 add sp, #12 2718: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 271a: 4b07 ldr r3, [pc, #28] ; (2738 ) 271c: 9300 str r3, [sp, #0] 271e: 4a07 ldr r2, [pc, #28] ; (273c ) 2720: 4907 ldr r1, [pc, #28] ; (2740 ) 2722: 3003 adds r0, #3 2724: 4d07 ldr r5, [pc, #28] ; (2744 ) 2726: 47a8 blx r5 2728: 0022 movs r2, r4 272a: 2300 movs r3, #0 272c: 4806 ldr r0, [pc, #24] ; (2748 ) 272e: 4907 ldr r1, [pc, #28] ; (274c ) 2730: 4788 blx r1 2732: e7fe b.n 2732 2734: 000017ad .word 0x000017ad 2738: 00025b78 .word 0x00025b78 273c: 00000a41 .word 0x00000a41 2740: 00025c2c .word 0x00025c2c 2744: 00012159 .word 0x00012159 2748: 00025d20 .word 0x00025d20 274c: 000017b5 .word 0x000017b5 00002750 : { 2750: b5f0 push {r4, r5, r6, r7, lr} 2752: b087 sub sp, #28 2754: 0004 movs r4, r0 2756: 000e movs r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2758: 4b34 ldr r3, [pc, #208] ; (282c ) 275a: 4798 blx r3 275c: 2800 cmp r0, #0 275e: d10d bne.n 277c 2760: 4b33 ldr r3, [pc, #204] ; (2830 ) 2762: 9300 str r3, [sp, #0] 2764: 22f0 movs r2, #240 ; 0xf0 2766: 0052 lsls r2, r2, #1 2768: 4932 ldr r1, [pc, #200] ; (2834 ) 276a: 3003 adds r0, #3 276c: 4d32 ldr r5, [pc, #200] ; (2838 ) 276e: 47a8 blx r5 2770: 0022 movs r2, r4 2772: 2300 movs r3, #0 2774: 4831 ldr r0, [pc, #196] ; (283c ) 2776: 4932 ldr r1, [pc, #200] ; (2840 ) 2778: 4788 blx r1 277a: e7fe b.n 277a if(lv_obj_get_hidden(obj)) return; 277c: 0020 movs r0, r4 277e: 4b31 ldr r3, [pc, #196] ; (2844 ) 2780: 4798 blx r3 2782: 2800 cmp r0, #0 2784: d001 beq.n 278a } 2786: b007 add sp, #28 2788: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_t * obj_scr = lv_obj_get_screen(obj); 278a: 0020 movs r0, r4 278c: 4b2e ldr r3, [pc, #184] ; (2848 ) 278e: 4798 blx r3 2790: 0007 movs r7, r0 lv_disp_t * disp = lv_obj_get_disp(obj_scr); 2792: 4b2e ldr r3, [pc, #184] ; (284c ) 2794: 4798 blx r3 2796: 0005 movs r5, r0 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 2798: 4b2d ldr r3, [pc, #180] ; (2850 ) 279a: 4798 blx r3 279c: 4287 cmp r7, r0 279e: d009 beq.n 27b4 27a0: 0028 movs r0, r5 27a2: 4b2c ldr r3, [pc, #176] ; (2854 ) 27a4: 4798 blx r3 27a6: 4287 cmp r7, r0 27a8: d004 beq.n 27b4 obj_scr == lv_disp_get_layer_sys(disp)) { 27aa: 0028 movs r0, r5 27ac: 4b2a ldr r3, [pc, #168] ; (2858 ) 27ae: 4798 blx r3 if(obj_scr == lv_disp_get_scr_act(disp) || obj_scr == lv_disp_get_layer_top(disp) || 27b0: 4287 cmp r7, r0 27b2: d1e8 bne.n 2786 lv_coord_t ext_size = obj->ext_draw_pad; 27b4: 2232 movs r2, #50 ; 0x32 27b6: 5ea3 ldrsh r3, [r4, r2] lv_area_copy(&obj_coords, &obj->coords); 27b8: 0020 movs r0, r4 27ba: 3010 adds r0, #16 27bc: 2200 movs r2, #0 *d8 = *s8; 27be: a902 add r1, sp, #8 27c0: 5c87 ldrb r7, [r0, r2] 27c2: 5457 strb r7, [r2, r1] 27c4: 3201 adds r2, #1 while(len) { 27c6: 2a08 cmp r2, #8 27c8: d1fa bne.n 27c0 obj_coords.x1 -= ext_size; 27ca: b29b uxth r3, r3 27cc: aa02 add r2, sp, #8 27ce: 8811 ldrh r1, [r2, #0] 27d0: 1ac9 subs r1, r1, r3 27d2: 8011 strh r1, [r2, #0] obj_coords.y1 -= ext_size; 27d4: 8851 ldrh r1, [r2, #2] 27d6: 1ac9 subs r1, r1, r3 27d8: 8051 strh r1, [r2, #2] obj_coords.x2 += ext_size; 27da: 8891 ldrh r1, [r2, #4] 27dc: 1859 adds r1, r3, r1 27de: 8091 strh r1, [r2, #4] obj_coords.y2 += ext_size; 27e0: 88d1 ldrh r1, [r2, #6] 27e2: 185b adds r3, r3, r1 27e4: 80d3 strh r3, [r2, #6] is_common = _lv_area_intersect(&area_trunc, area, &obj_coords); 27e6: 0031 movs r1, r6 27e8: a804 add r0, sp, #16 27ea: 4b1c ldr r3, [pc, #112] ; (285c ) 27ec: 4798 blx r3 if(is_common == false) return; /*The area is not on the object*/ 27ee: 2800 cmp r0, #0 27f0: d0c9 beq.n 2786 lv_obj_t * par = lv_obj_get_parent(obj); 27f2: 0020 movs r0, r4 27f4: 4b1a ldr r3, [pc, #104] ; (2860 ) 27f6: 4798 blx r3 27f8: 1e04 subs r4, r0, #0 while(par != NULL) { 27fa: d011 beq.n 2820 is_common = _lv_area_intersect(&area_trunc, &area_trunc, &par->coords); 27fc: 4e17 ldr r6, [pc, #92] ; (285c ) 27fe: 0022 movs r2, r4 2800: 3210 adds r2, #16 2802: a904 add r1, sp, #16 2804: 0008 movs r0, r1 2806: 47b0 blx r6 if(is_common == false) break; /*If no common parts with parent break;*/ 2808: 2800 cmp r0, #0 280a: d0bc beq.n 2786 if(lv_obj_get_hidden(par)) return; /*If the parent is hidden then the child is hidden and won't be drawn*/ 280c: 0020 movs r0, r4 280e: 4b0d ldr r3, [pc, #52] ; (2844 ) 2810: 4798 blx r3 2812: 2800 cmp r0, #0 2814: d1b7 bne.n 2786 par = lv_obj_get_parent(par); 2816: 0020 movs r0, r4 2818: 4b11 ldr r3, [pc, #68] ; (2860 ) 281a: 4798 blx r3 281c: 1e04 subs r4, r0, #0 while(par != NULL) { 281e: d1ee bne.n 27fe if(is_common) _lv_inv_area(disp, &area_trunc); 2820: a904 add r1, sp, #16 2822: 0028 movs r0, r5 2824: 4b0f ldr r3, [pc, #60] ; (2864 ) 2826: 4798 blx r3 2828: e7ad b.n 2786 282a: 46c0 nop ; (mov r8, r8) 282c: 000017ad .word 0x000017ad 2830: 000258e0 .word 0x000258e0 2834: 00025c2c .word 0x00025c2c 2838: 00012159 .word 0x00012159 283c: 00025d20 .word 0x00025d20 2840: 000017b5 .word 0x000017b5 2844: 00002701 .word 0x00002701 2848: 000021f1 .word 0x000021f1 284c: 0000224d .word 0x0000224d 2850: 00001845 .word 0x00001845 2854: 00001885 .word 0x00001885 2858: 000018c5 .word 0x000018c5 285c: 0001140b .word 0x0001140b 2860: 000021a5 .word 0x000021a5 2864: 00005481 .word 0x00005481 00002868 : { 2868: b530 push {r4, r5, lr} 286a: b085 sub sp, #20 286c: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 286e: 4b17 ldr r3, [pc, #92] ; (28cc ) 2870: 4798 blx r3 2872: 2800 cmp r0, #0 2874: d01d beq.n 28b2 lv_coord_t ext_size = obj->ext_draw_pad; 2876: 2332 movs r3, #50 ; 0x32 2878: 5ee2 ldrsh r2, [r4, r3] lv_area_copy(&obj_coords, &obj->coords); 287a: 0025 movs r5, r4 287c: 3510 adds r5, #16 287e: 2300 movs r3, #0 *d8 = *s8; 2880: a802 add r0, sp, #8 2882: 5ce9 ldrb r1, [r5, r3] 2884: 5419 strb r1, [r3, r0] 2886: 3301 adds r3, #1 while(len) { 2888: 2b08 cmp r3, #8 288a: d1fa bne.n 2882 obj_coords.x1 -= ext_size; 288c: b293 uxth r3, r2 288e: a902 add r1, sp, #8 2890: 880a ldrh r2, [r1, #0] 2892: 1ad2 subs r2, r2, r3 2894: 800a strh r2, [r1, #0] obj_coords.y1 -= ext_size; 2896: 884a ldrh r2, [r1, #2] 2898: 1ad2 subs r2, r2, r3 289a: 804a strh r2, [r1, #2] obj_coords.x2 += ext_size; 289c: 888a ldrh r2, [r1, #4] 289e: 189a adds r2, r3, r2 28a0: 808a strh r2, [r1, #4] obj_coords.y2 += ext_size; 28a2: 88ca ldrh r2, [r1, #6] 28a4: 189b adds r3, r3, r2 28a6: 80cb strh r3, [r1, #6] lv_obj_invalidate_area(obj, &obj_coords); 28a8: 0020 movs r0, r4 28aa: 4b09 ldr r3, [pc, #36] ; (28d0 ) 28ac: 4798 blx r3 } 28ae: b005 add sp, #20 28b0: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28b2: 4b08 ldr r3, [pc, #32] ; (28d4 ) 28b4: 9300 str r3, [sp, #0] 28b6: 4a08 ldr r2, [pc, #32] ; (28d8 ) 28b8: 4908 ldr r1, [pc, #32] ; (28dc ) 28ba: 3003 adds r0, #3 28bc: 4d08 ldr r5, [pc, #32] ; (28e0 ) 28be: 47a8 blx r5 28c0: 0022 movs r2, r4 28c2: 2300 movs r3, #0 28c4: 4807 ldr r0, [pc, #28] ; (28e4 ) 28c6: 4908 ldr r1, [pc, #32] ; (28e8 ) 28c8: 4788 blx r1 28ca: e7fe b.n 28ca 28cc: 000017ad .word 0x000017ad 28d0: 00002751 .word 0x00002751 28d4: 000258f8 .word 0x000258f8 28d8: 0000020d .word 0x0000020d 28dc: 00025c2c .word 0x00025c2c 28e0: 00012159 .word 0x00012159 28e4: 00025d20 .word 0x00025d20 28e8: 000017b5 .word 0x000017b5 000028ec : { 28ec: b5f0 push {r4, r5, r6, r7, lr} 28ee: b083 sub sp, #12 28f0: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 28f2: 4b16 ldr r3, [pc, #88] ; (294c ) 28f4: 4798 blx r3 28f6: 2800 cmp r0, #0 28f8: d10c bne.n 2914 28fa: 4b15 ldr r3, [pc, #84] ; (2950 ) 28fc: 9300 str r3, [sp, #0] 28fe: 4a15 ldr r2, [pc, #84] ; (2954 ) 2900: 4915 ldr r1, [pc, #84] ; (2958 ) 2902: 3003 adds r0, #3 2904: 4d15 ldr r5, [pc, #84] ; (295c ) 2906: 47a8 blx r5 2908: 0022 movs r2, r4 290a: 2300 movs r3, #0 290c: 4814 ldr r0, [pc, #80] ; (2960 ) 290e: 4915 ldr r1, [pc, #84] ; (2964 ) 2910: 4788 blx r1 2912: e7fe b.n 2912 lv_obj_t * parent = lv_obj_get_parent(obj); 2914: 0020 movs r0, r4 2916: 4b14 ldr r3, [pc, #80] ; (2968 ) 2918: 4798 blx r3 291a: 0005 movs r5, r0 if(_lv_ll_get_head(&parent->child_ll) == obj) return; 291c: 1d06 adds r6, r0, #4 291e: 0030 movs r0, r6 2920: 4b12 ldr r3, [pc, #72] ; (296c ) 2922: 4798 blx r3 2924: 4284 cmp r4, r0 2926: d00f beq.n 2948 lv_obj_invalidate(parent); 2928: 0028 movs r0, r5 292a: 4f11 ldr r7, [pc, #68] ; (2970 ) 292c: 47b8 blx r7 _lv_ll_chg_list(&parent->child_ll, &parent->child_ll, obj, true); 292e: 2301 movs r3, #1 2930: 0022 movs r2, r4 2932: 0031 movs r1, r6 2934: 0030 movs r0, r6 2936: 4e0f ldr r6, [pc, #60] ; (2974 ) 2938: 47b0 blx r6 parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, obj); 293a: 0022 movs r2, r4 293c: 2101 movs r1, #1 293e: 0028 movs r0, r5 2940: 69eb ldr r3, [r5, #28] 2942: 4798 blx r3 lv_obj_invalidate(parent); 2944: 0028 movs r0, r5 2946: 47b8 blx r7 } 2948: b003 add sp, #12 294a: bdf0 pop {r4, r5, r6, r7, pc} 294c: 000017ad .word 0x000017ad 2950: 0002590c .word 0x0002590c 2954: 00000262 .word 0x00000262 2958: 00025c2c .word 0x00025c2c 295c: 00012159 .word 0x00012159 2960: 00025d20 .word 0x00025d20 2964: 000017b5 .word 0x000017b5 2968: 000021a5 .word 0x000021a5 296c: 00011e85 .word 0x00011e85 2970: 00002869 .word 0x00002869 2974: 00011ffd .word 0x00011ffd 00002978 : { 2978: b5f0 push {r4, r5, r6, r7, lr} 297a: 46d6 mov lr, sl 297c: 464f mov r7, r9 297e: 4646 mov r6, r8 2980: b5c0 push {r6, r7, lr} 2982: b084 sub sp, #16 2984: 0004 movs r4, r0 2986: 000d movs r5, r1 2988: 0017 movs r7, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 298a: 4b2e ldr r3, [pc, #184] ; (2a44 ) 298c: 4798 blx r3 298e: 2800 cmp r0, #0 2990: d041 beq.n 2a16 lv_obj_t * par = obj->parent; 2992: 6826 ldr r6, [r4, #0] if(par == NULL) { 2994: 2e00 cmp r6, #0 2996: d04b beq.n 2a30 diff.x = x - obj->coords.x1; 2998: 8a33 ldrh r3, [r6, #16] 299a: 8a22 ldrh r2, [r4, #16] 299c: 1a9b subs r3, r3, r2 299e: 195b adds r3, r3, r5 29a0: b29b uxth r3, r3 29a2: 469a mov sl, r3 29a4: b21b sxth r3, r3 29a6: 4698 mov r8, r3 diff.y = y - obj->coords.y1; 29a8: 8a75 ldrh r5, [r6, #18] 29aa: 8a63 ldrh r3, [r4, #18] 29ac: 1aed subs r5, r5, r3 29ae: 19ed adds r5, r5, r7 29b0: b2ad uxth r5, r5 29b2: b22b sxth r3, r5 29b4: 4699 mov r9, r3 if(diff.x == 0 && diff.y == 0) return; 29b6: 4643 mov r3, r8 29b8: 2b00 cmp r3, #0 29ba: d102 bne.n 29c2 29bc: 464b mov r3, r9 29be: 2b00 cmp r3, #0 29c0: d023 beq.n 2a0a lv_obj_invalidate(obj); 29c2: 0020 movs r0, r4 29c4: 4f20 ldr r7, [pc, #128] ; (2a48 ) 29c6: 47b8 blx r7 lv_obj_get_coords(obj, &ori); 29c8: a902 add r1, sp, #8 29ca: 0020 movs r0, r4 29cc: 4b1f ldr r3, [pc, #124] ; (2a4c ) 29ce: 4798 blx r3 obj->coords.x1 += diff.x; 29d0: 8a23 ldrh r3, [r4, #16] 29d2: 4453 add r3, sl 29d4: 8223 strh r3, [r4, #16] obj->coords.y1 += diff.y; 29d6: 8a63 ldrh r3, [r4, #18] 29d8: 18eb adds r3, r5, r3 29da: 8263 strh r3, [r4, #18] obj->coords.x2 += diff.x; 29dc: 8aa3 ldrh r3, [r4, #20] 29de: 4453 add r3, sl 29e0: 82a3 strh r3, [r4, #20] obj->coords.y2 += diff.y; 29e2: 8ae3 ldrh r3, [r4, #22] 29e4: 18ed adds r5, r5, r3 29e6: 82e5 strh r5, [r4, #22] refresh_children_position(obj, diff.x, diff.y); 29e8: 464a mov r2, r9 29ea: 4641 mov r1, r8 29ec: 0020 movs r0, r4 29ee: 4b18 ldr r3, [pc, #96] ; (2a50 ) 29f0: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 29f2: aa02 add r2, sp, #8 29f4: 2102 movs r1, #2 29f6: 0020 movs r0, r4 29f8: 69e3 ldr r3, [r4, #28] 29fa: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 29fc: 69f3 ldr r3, [r6, #28] 29fe: 0022 movs r2, r4 2a00: 2101 movs r1, #1 2a02: 0030 movs r0, r6 2a04: 4798 blx r3 lv_obj_invalidate(obj); 2a06: 0020 movs r0, r4 2a08: 47b8 blx r7 } 2a0a: b004 add sp, #16 2a0c: bc1c pop {r2, r3, r4} 2a0e: 4690 mov r8, r2 2a10: 4699 mov r9, r3 2a12: 46a2 mov sl, r4 2a14: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a16: 4b0f ldr r3, [pc, #60] ; (2a54 ) 2a18: 9300 str r3, [sp, #0] 2a1a: 4a0f ldr r2, [pc, #60] ; (2a58 ) 2a1c: 490f ldr r1, [pc, #60] ; (2a5c ) 2a1e: 3003 adds r0, #3 2a20: 4d0f ldr r5, [pc, #60] ; (2a60 ) 2a22: 47a8 blx r5 2a24: 0022 movs r2, r4 2a26: 2300 movs r3, #0 2a28: 480e ldr r0, [pc, #56] ; (2a64 ) 2a2a: 490f ldr r1, [pc, #60] ; (2a68 ) 2a2c: 4788 blx r1 2a2e: e7fe b.n 2a2e LV_LOG_WARN("lv_obj_set_pos: not changing position of screen object"); 2a30: 4b0e ldr r3, [pc, #56] ; (2a6c ) 2a32: 9300 str r3, [sp, #0] 2a34: 4b07 ldr r3, [pc, #28] ; (2a54 ) 2a36: 22a7 movs r2, #167 ; 0xa7 2a38: 0092 lsls r2, r2, #2 2a3a: 4908 ldr r1, [pc, #32] ; (2a5c ) 2a3c: 2002 movs r0, #2 2a3e: 4c08 ldr r4, [pc, #32] ; (2a60 ) 2a40: 47a0 blx r4 return; 2a42: e7e2 b.n 2a0a 2a44: 000017ad .word 0x000017ad 2a48: 00002869 .word 0x00002869 2a4c: 0000237d .word 0x0000237d 2a50: 00001d0d .word 0x00001d0d 2a54: 00025924 .word 0x00025924 2a58: 00000296 .word 0x00000296 2a5c: 00025c2c .word 0x00025c2c 2a60: 00012159 .word 0x00012159 2a64: 00025d20 .word 0x00025d20 2a68: 000017b5 .word 0x000017b5 2a6c: 00025d54 .word 0x00025d54 00002a70 : { 2a70: b530 push {r4, r5, lr} 2a72: b083 sub sp, #12 2a74: 0004 movs r4, r0 2a76: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2a78: 4b0d ldr r3, [pc, #52] ; (2ab0 ) 2a7a: 4798 blx r3 2a7c: 2800 cmp r0, #0 2a7e: d10d bne.n 2a9c 2a80: 4b0c ldr r3, [pc, #48] ; (2ab4 ) 2a82: 9300 str r3, [sp, #0] 2a84: 22b3 movs r2, #179 ; 0xb3 2a86: 0092 lsls r2, r2, #2 2a88: 490b ldr r1, [pc, #44] ; (2ab8 ) 2a8a: 3003 adds r0, #3 2a8c: 4d0b ldr r5, [pc, #44] ; (2abc ) 2a8e: 47a8 blx r5 2a90: 0022 movs r2, r4 2a92: 2300 movs r3, #0 2a94: 480a ldr r0, [pc, #40] ; (2ac0 ) 2a96: 490b ldr r1, [pc, #44] ; (2ac4 ) 2a98: 4788 blx r1 2a9a: e7fe b.n 2a9a lv_obj_set_pos(obj, x, lv_obj_get_y(obj)); 2a9c: 0020 movs r0, r4 2a9e: 4b0a ldr r3, [pc, #40] ; (2ac8 ) 2aa0: 4798 blx r3 2aa2: 0002 movs r2, r0 2aa4: 0029 movs r1, r5 2aa6: 0020 movs r0, r4 2aa8: 4b08 ldr r3, [pc, #32] ; (2acc ) 2aaa: 4798 blx r3 } 2aac: b003 add sp, #12 2aae: bd30 pop {r4, r5, pc} 2ab0: 000017ad .word 0x000017ad 2ab4: 00025934 .word 0x00025934 2ab8: 00025c2c .word 0x00025c2c 2abc: 00012159 .word 0x00012159 2ac0: 00025d20 .word 0x00025d20 2ac4: 000017b5 .word 0x000017b5 2ac8: 0000243d .word 0x0000243d 2acc: 00002979 .word 0x00002979 00002ad0 : { 2ad0: b530 push {r4, r5, lr} 2ad2: b083 sub sp, #12 2ad4: 0004 movs r4, r0 2ad6: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2ad8: 4b0d ldr r3, [pc, #52] ; (2b10 ) 2ada: 4798 blx r3 2adc: 2800 cmp r0, #0 2ade: d10d bne.n 2afc 2ae0: 4b0c ldr r3, [pc, #48] ; (2b14 ) 2ae2: 9300 str r3, [sp, #0] 2ae4: 22b6 movs r2, #182 ; 0xb6 2ae6: 0092 lsls r2, r2, #2 2ae8: 490b ldr r1, [pc, #44] ; (2b18 ) 2aea: 3003 adds r0, #3 2aec: 4d0b ldr r5, [pc, #44] ; (2b1c ) 2aee: 47a8 blx r5 2af0: 0022 movs r2, r4 2af2: 2300 movs r3, #0 2af4: 480a ldr r0, [pc, #40] ; (2b20 ) 2af6: 490b ldr r1, [pc, #44] ; (2b24 ) 2af8: 4788 blx r1 2afa: e7fe b.n 2afa lv_obj_set_pos(obj, lv_obj_get_x(obj), y); 2afc: 0020 movs r0, r4 2afe: 4b0a ldr r3, [pc, #40] ; (2b28 ) 2b00: 4798 blx r3 2b02: 0001 movs r1, r0 2b04: 002a movs r2, r5 2b06: 0020 movs r0, r4 2b08: 4b08 ldr r3, [pc, #32] ; (2b2c ) 2b0a: 4798 blx r3 } 2b0c: b003 add sp, #12 2b0e: bd30 pop {r4, r5, pc} 2b10: 000017ad .word 0x000017ad 2b14: 00025944 .word 0x00025944 2b18: 00025c2c .word 0x00025c2c 2b1c: 00012159 .word 0x00012159 2b20: 00025d20 .word 0x00025d20 2b24: 000017b5 .word 0x000017b5 2b28: 000023d9 .word 0x000023d9 2b2c: 00002979 .word 0x00002979 00002b30 : { 2b30: b5f0 push {r4, r5, r6, r7, lr} 2b32: 46d6 mov lr, sl 2b34: 464f mov r7, r9 2b36: 4646 mov r6, r8 2b38: b5c0 push {r6, r7, lr} 2b3a: b086 sub sp, #24 2b3c: 0004 movs r4, r0 2b3e: 000f movs r7, r1 2b40: 9203 str r2, [sp, #12] 2b42: 4699 mov r9, r3 2b44: ab0e add r3, sp, #56 ; 0x38 2b46: 2200 movs r2, #0 2b48: 5e9a ldrsh r2, [r3, r2] 2b4a: 4690 mov r8, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2b4c: 4b2d ldr r3, [pc, #180] ; (2c04 ) 2b4e: 4798 blx r3 2b50: 2800 cmp r0, #0 2b52: d10c bne.n 2b6e 2b54: 4b2c ldr r3, [pc, #176] ; (2c08 ) 2b56: 9300 str r3, [sp, #0] 2b58: 4a2c ldr r2, [pc, #176] ; (2c0c ) 2b5a: 492d ldr r1, [pc, #180] ; (2c10 ) 2b5c: 3003 adds r0, #3 2b5e: 4d2d ldr r5, [pc, #180] ; (2c14 ) 2b60: 47a8 blx r5 2b62: 0022 movs r2, r4 2b64: 2300 movs r3, #0 2b66: 482c ldr r0, [pc, #176] ; (2c18 ) 2b68: 492c ldr r1, [pc, #176] ; (2c1c ) 2b6a: 4788 blx r1 2b6c: e7fe b.n 2b6c if(base == NULL) base = lv_obj_get_parent(obj); 2b6e: 2f00 cmp r7, #0 2b70: d011 beq.n 2b96 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2b72: 0038 movs r0, r7 2b74: 4b23 ldr r3, [pc, #140] ; (2c04 ) 2b76: 4798 blx r3 2b78: 2800 cmp r0, #0 2b7a: d111 bne.n 2ba0 2b7c: 4b22 ldr r3, [pc, #136] ; (2c08 ) 2b7e: 9300 str r3, [sp, #0] 2b80: 4a27 ldr r2, [pc, #156] ; (2c20 ) 2b82: 4923 ldr r1, [pc, #140] ; (2c10 ) 2b84: 3003 adds r0, #3 2b86: 4c23 ldr r4, [pc, #140] ; (2c14 ) 2b88: 47a0 blx r4 2b8a: 003a movs r2, r7 2b8c: 2300 movs r3, #0 2b8e: 4822 ldr r0, [pc, #136] ; (2c18 ) 2b90: 4922 ldr r1, [pc, #136] ; (2c1c ) 2b92: 4788 blx r1 2b94: e7fe b.n 2b94 if(base == NULL) base = lv_obj_get_parent(obj); 2b96: 0020 movs r0, r4 2b98: 4b22 ldr r3, [pc, #136] ; (2c24 ) 2b9a: 4798 blx r3 2b9c: 0007 movs r7, r0 2b9e: e7e8 b.n 2b72 _lv_area_align(&base->coords, &obj->coords, align, &new_pos); 2ba0: ad05 add r5, sp, #20 2ba2: 0021 movs r1, r4 2ba4: 3110 adds r1, #16 2ba6: 0038 movs r0, r7 2ba8: 3010 adds r0, #16 2baa: 002b movs r3, r5 2bac: 9a03 ldr r2, [sp, #12] 2bae: 4e1e ldr r6, [pc, #120] ; (2c28 ) 2bb0: 47b0 blx r6 lv_obj_t * par = lv_obj_get_parent(obj); 2bb2: 0020 movs r0, r4 2bb4: 4b1b ldr r3, [pc, #108] ; (2c24 ) 2bb6: 4798 blx r3 lv_coord_t par_abs_y = par->coords.y1; 2bb8: 2212 movs r2, #18 2bba: 5e83 ldrsh r3, [r0, r2] new_pos.y += y_ofs; 2bbc: 886a ldrh r2, [r5, #2] 2bbe: 4442 add r2, r8 new_pos.x += x_ofs; 2bc0: 8829 ldrh r1, [r5, #0] 2bc2: 4449 add r1, r9 new_pos.x -= par_abs_x; 2bc4: 8a00 ldrh r0, [r0, #16] 2bc6: 1a09 subs r1, r1, r0 2bc8: b209 sxth r1, r1 2bca: 8029 strh r1, [r5, #0] new_pos.y -= par_abs_y; 2bcc: 1ad2 subs r2, r2, r3 2bce: b212 sxth r2, r2 2bd0: 806a strh r2, [r5, #2] lv_obj_set_pos(obj, new_pos.x, new_pos.y); 2bd2: 0020 movs r0, r4 2bd4: 4b15 ldr r3, [pc, #84] ; (2c2c ) 2bd6: 4798 blx r3 obj->realign.align = align; 2bd8: 2348 movs r3, #72 ; 0x48 2bda: 466a mov r2, sp 2bdc: 7b12 ldrb r2, [r2, #12] 2bde: 54e2 strb r2, [r4, r3] obj->realign.xofs = x_ofs; 2be0: 3b04 subs r3, #4 2be2: 464a mov r2, r9 2be4: 52e2 strh r2, [r4, r3] obj->realign.yofs = y_ofs; 2be6: 3302 adds r3, #2 2be8: 4642 mov r2, r8 2bea: 52e2 strh r2, [r4, r3] obj->realign.base = base; 2bec: 6427 str r7, [r4, #64] ; 0x40 obj->realign.origo_align = 0; 2bee: 2249 movs r2, #73 ; 0x49 2bf0: 5ca3 ldrb r3, [r4, r2] 2bf2: 2102 movs r1, #2 2bf4: 438b bics r3, r1 2bf6: 54a3 strb r3, [r4, r2] } 2bf8: b006 add sp, #24 2bfa: bc1c pop {r2, r3, r4} 2bfc: 4690 mov r8, r2 2bfe: 4699 mov r9, r3 2c00: 46a2 mov sl, r4 2c02: bdf0 pop {r4, r5, r6, r7, pc} 2c04: 000017ad .word 0x000017ad 2c08: 00025978 .word 0x00025978 2c0c: 0000036d .word 0x0000036d 2c10: 00025c2c .word 0x00025c2c 2c14: 00012159 .word 0x00012159 2c18: 00025d20 .word 0x00025d20 2c1c: 000017b5 .word 0x000017b5 2c20: 00000371 .word 0x00000371 2c24: 000021a5 .word 0x000021a5 2c28: 0001173d .word 0x0001173d 2c2c: 00002979 .word 0x00002979 00002c30 : { 2c30: b5f0 push {r4, r5, r6, r7, lr} 2c32: 46de mov lr, fp 2c34: 4657 mov r7, sl 2c36: 464e mov r6, r9 2c38: 4645 mov r5, r8 2c3a: b5e0 push {r5, r6, r7, lr} 2c3c: b085 sub sp, #20 2c3e: 4680 mov r8, r0 2c40: 9103 str r1, [sp, #12] 2c42: 4692 mov sl, r2 2c44: 4699 mov r9, r3 2c46: ab0e add r3, sp, #56 ; 0x38 2c48: 2200 movs r2, #0 2c4a: 5e9b ldrsh r3, [r3, r2] 2c4c: 469b mov fp, r3 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2c4e: 4ba8 ldr r3, [pc, #672] ; (2ef0 ) 2c50: 4798 blx r3 2c52: 2800 cmp r0, #0 2c54: d10c bne.n 2c70 2c56: 4ba7 ldr r3, [pc, #668] ; (2ef4 ) 2c58: 9300 str r3, [sp, #0] 2c5a: 4aa7 ldr r2, [pc, #668] ; (2ef8 ) 2c5c: 49a7 ldr r1, [pc, #668] ; (2efc ) 2c5e: 3003 adds r0, #3 2c60: 4ca7 ldr r4, [pc, #668] ; (2f00 ) 2c62: 47a0 blx r4 2c64: 4642 mov r2, r8 2c66: 2300 movs r3, #0 2c68: 48a6 ldr r0, [pc, #664] ; (2f04 ) 2c6a: 49a7 ldr r1, [pc, #668] ; (2f08 ) 2c6c: 4788 blx r1 2c6e: e7fe b.n 2c6e lv_coord_t new_x = lv_obj_get_x(obj); 2c70: 4640 mov r0, r8 2c72: 4ba6 ldr r3, [pc, #664] ; (2f0c ) 2c74: 4798 blx r3 2c76: 0005 movs r5, r0 lv_coord_t new_y = lv_obj_get_y(obj); 2c78: 4640 mov r0, r8 2c7a: 4ba5 ldr r3, [pc, #660] ; (2f10 ) 2c7c: 4798 blx r3 2c7e: 0004 movs r4, r0 lv_coord_t obj_w_half = lv_obj_get_width(obj) / 2; 2c80: 4640 mov r0, r8 2c82: 4ba4 ldr r3, [pc, #656] ; (2f14 ) 2c84: 4798 blx r3 2c86: 0fc3 lsrs r3, r0, #31 2c88: 181b adds r3, r3, r0 2c8a: 105b asrs r3, r3, #1 2c8c: b21e sxth r6, r3 lv_coord_t obj_h_half = lv_obj_get_height(obj) / 2; 2c8e: 4640 mov r0, r8 2c90: 4ba1 ldr r3, [pc, #644] ; (2f18 ) 2c92: 4798 blx r3 2c94: 0fc7 lsrs r7, r0, #31 2c96: 183f adds r7, r7, r0 2c98: 107f asrs r7, r7, #1 2c9a: b23f sxth r7, r7 if(base == NULL) { 2c9c: 9b03 ldr r3, [sp, #12] 2c9e: 2b00 cmp r3, #0 2ca0: d00b beq.n 2cba LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2ca2: 9803 ldr r0, [sp, #12] 2ca4: 4b92 ldr r3, [pc, #584] ; (2ef0 ) 2ca6: 4798 blx r3 2ca8: 2800 cmp r0, #0 2caa: d00b beq.n 2cc4 switch(align) { 2cac: 4653 mov r3, sl 2cae: 2b14 cmp r3, #20 2cb0: d826 bhi.n 2d00 2cb2: 009b lsls r3, r3, #2 2cb4: 4a99 ldr r2, [pc, #612] ; (2f1c ) 2cb6: 58d3 ldr r3, [r2, r3] 2cb8: 469f mov pc, r3 base = lv_obj_get_parent(obj); 2cba: 4640 mov r0, r8 2cbc: 4b98 ldr r3, [pc, #608] ; (2f20 ) 2cbe: 4798 blx r3 2cc0: 9003 str r0, [sp, #12] 2cc2: e7ee b.n 2ca2 LV_ASSERT_OBJ(base, LV_OBJX_NAME); 2cc4: 4b8b ldr r3, [pc, #556] ; (2ef4 ) 2cc6: 9300 str r3, [sp, #0] 2cc8: 4a96 ldr r2, [pc, #600] ; (2f24 ) 2cca: 498c ldr r1, [pc, #560] ; (2efc ) 2ccc: 3003 adds r0, #3 2cce: 4c8c ldr r4, [pc, #560] ; (2f00 ) 2cd0: 47a0 blx r4 2cd2: 9a03 ldr r2, [sp, #12] 2cd4: 2300 movs r3, #0 2cd6: 488b ldr r0, [pc, #556] ; (2f04 ) 2cd8: 498b ldr r1, [pc, #556] ; (2f08 ) 2cda: 4788 blx r1 2cdc: e7fe b.n 2cdc new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2cde: 9c03 ldr r4, [sp, #12] 2ce0: 0020 movs r0, r4 2ce2: 4b8c ldr r3, [pc, #560] ; (2f14 ) 2ce4: 4798 blx r3 2ce6: 0fc5 lsrs r5, r0, #31 2ce8: 182d adds r5, r5, r0 2cea: 106d asrs r5, r5, #1 2cec: 1bad subs r5, r5, r6 2cee: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2cf0: 0020 movs r0, r4 2cf2: 4b89 ldr r3, [pc, #548] ; (2f18 ) 2cf4: 4798 blx r3 2cf6: 0fc4 lsrs r4, r0, #31 2cf8: 1824 adds r4, r4, r0 2cfa: 1064 asrs r4, r4, #1 2cfc: 1be4 subs r4, r4, r7 2cfe: b224 sxth r4, r4 lv_obj_t * par = lv_obj_get_parent(obj); 2d00: 4640 mov r0, r8 2d02: 4b87 ldr r3, [pc, #540] ; (2f20 ) 2d04: 4798 blx r3 new_x += x_ofs + base_abs_x; 2d06: 9a03 ldr r2, [sp, #12] 2d08: 8a13 ldrh r3, [r2, #16] 2d0a: 444b add r3, r9 2d0c: 195d adds r5, r3, r5 new_x -= par_abs_x; 2d0e: 8a01 ldrh r1, [r0, #16] 2d10: 1a69 subs r1, r5, r1 new_y += y_ofs + base_abs_y; 2d12: 0015 movs r5, r2 2d14: 8a52 ldrh r2, [r2, #18] 2d16: 445a add r2, fp 2d18: 1912 adds r2, r2, r4 new_y -= par_abs_y; 2d1a: 8a44 ldrh r4, [r0, #18] 2d1c: 1b12 subs r2, r2, r4 lv_obj_set_pos(obj, new_x, new_y); 2d1e: b212 sxth r2, r2 2d20: b209 sxth r1, r1 2d22: 4640 mov r0, r8 2d24: 4b80 ldr r3, [pc, #512] ; (2f28 ) 2d26: 4798 blx r3 obj->realign.align = align; 2d28: 2348 movs r3, #72 ; 0x48 2d2a: 4642 mov r2, r8 2d2c: 4651 mov r1, sl 2d2e: 54d1 strb r1, [r2, r3] obj->realign.xofs = x_ofs; 2d30: 3b04 subs r3, #4 2d32: 4649 mov r1, r9 2d34: 52d1 strh r1, [r2, r3] obj->realign.yofs = y_ofs; 2d36: 3302 adds r3, #2 2d38: 4659 mov r1, fp 2d3a: 52d1 strh r1, [r2, r3] obj->realign.base = base; 2d3c: 6415 str r5, [r2, #64] ; 0x40 obj->realign.origo_align = 1; 2d3e: 2249 movs r2, #73 ; 0x49 2d40: 4643 mov r3, r8 2d42: 5c9b ldrb r3, [r3, r2] 2d44: 2102 movs r1, #2 2d46: 430b orrs r3, r1 2d48: 4641 mov r1, r8 2d4a: 548b strb r3, [r1, r2] } 2d4c: b005 add sp, #20 2d4e: bc3c pop {r2, r3, r4, r5} 2d50: 4690 mov r8, r2 2d52: 4699 mov r9, r3 2d54: 46a2 mov sl, r4 2d56: 46ab mov fp, r5 2d58: bdf0 pop {r4, r5, r6, r7, pc} new_x = -obj_w_half; 2d5a: 4275 negs r5, r6 2d5c: b22d sxth r5, r5 new_y = -obj_h_half; 2d5e: 427c negs r4, r7 2d60: b224 sxth r4, r4 break; 2d62: e7cd b.n 2d00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2d64: 9803 ldr r0, [sp, #12] 2d66: 4b6b ldr r3, [pc, #428] ; (2f14 ) 2d68: 4798 blx r3 2d6a: 0fc5 lsrs r5, r0, #31 2d6c: 182d adds r5, r5, r0 2d6e: 106d asrs r5, r5, #1 2d70: 1bad subs r5, r5, r6 2d72: b22d sxth r5, r5 new_y = -obj_h_half; 2d74: 427c negs r4, r7 2d76: b224 sxth r4, r4 break; 2d78: e7c2 b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2d7a: 9803 ldr r0, [sp, #12] 2d7c: 4b65 ldr r3, [pc, #404] ; (2f14 ) 2d7e: 4798 blx r3 2d80: 1b85 subs r5, r0, r6 2d82: b22d sxth r5, r5 new_y = -obj_h_half; 2d84: 427c negs r4, r7 2d86: b224 sxth r4, r4 break; 2d88: e7ba b.n 2d00 new_x = -obj_w_half; 2d8a: 4275 negs r5, r6 2d8c: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2d8e: 9803 ldr r0, [sp, #12] 2d90: 4b61 ldr r3, [pc, #388] ; (2f18 ) 2d92: 4798 blx r3 2d94: 1bc4 subs r4, r0, r7 2d96: b224 sxth r4, r4 break; 2d98: e7b2 b.n 2d00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2d9a: 9c03 ldr r4, [sp, #12] 2d9c: 0020 movs r0, r4 2d9e: 4b5d ldr r3, [pc, #372] ; (2f14 ) 2da0: 4798 blx r3 2da2: 0fc5 lsrs r5, r0, #31 2da4: 182d adds r5, r5, r0 2da6: 106d asrs r5, r5, #1 2da8: 1bad subs r5, r5, r6 2daa: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2dac: 0020 movs r0, r4 2dae: 4b5a ldr r3, [pc, #360] ; (2f18 ) 2db0: 4798 blx r3 2db2: 1bc4 subs r4, r0, r7 2db4: b224 sxth r4, r4 break; 2db6: e7a3 b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2db8: 9c03 ldr r4, [sp, #12] 2dba: 0020 movs r0, r4 2dbc: 4b55 ldr r3, [pc, #340] ; (2f14 ) 2dbe: 4798 blx r3 2dc0: 1b85 subs r5, r0, r6 2dc2: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2dc4: 0020 movs r0, r4 2dc6: 4b54 ldr r3, [pc, #336] ; (2f18 ) 2dc8: 4798 blx r3 2dca: 1bc4 subs r4, r0, r7 2dcc: b224 sxth r4, r4 break; 2dce: e797 b.n 2d00 new_x = -obj_w_half; 2dd0: 4275 negs r5, r6 2dd2: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2dd4: 9803 ldr r0, [sp, #12] 2dd6: 4b50 ldr r3, [pc, #320] ; (2f18 ) 2dd8: 4798 blx r3 2dda: 0fc4 lsrs r4, r0, #31 2ddc: 1824 adds r4, r4, r0 2dde: 1064 asrs r4, r4, #1 2de0: 1be4 subs r4, r4, r7 2de2: b224 sxth r4, r4 break; 2de4: e78c b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2de6: 9c03 ldr r4, [sp, #12] 2de8: 0020 movs r0, r4 2dea: 4b4a ldr r3, [pc, #296] ; (2f14 ) 2dec: 4798 blx r3 2dee: 1b85 subs r5, r0, r6 2df0: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2df2: 0020 movs r0, r4 2df4: 4b48 ldr r3, [pc, #288] ; (2f18 ) 2df6: 4798 blx r3 2df8: 0fc4 lsrs r4, r0, #31 2dfa: 1824 adds r4, r4, r0 2dfc: 1064 asrs r4, r4, #1 2dfe: 1be4 subs r4, r4, r7 2e00: b224 sxth r4, r4 break; 2e02: e77d b.n 2d00 new_x = -obj_w_half; 2e04: 4275 negs r5, r6 2e06: b22d sxth r5, r5 new_y = -obj_h_half; 2e08: 427c negs r4, r7 2e0a: b224 sxth r4, r4 break; 2e0c: e778 b.n 2d00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2e0e: 9803 ldr r0, [sp, #12] 2e10: 4b40 ldr r3, [pc, #256] ; (2f14 ) 2e12: 4798 blx r3 2e14: 0fc5 lsrs r5, r0, #31 2e16: 182d adds r5, r5, r0 2e18: 106d asrs r5, r5, #1 2e1a: 1bad subs r5, r5, r6 2e1c: b22d sxth r5, r5 new_y = -obj_h_half; 2e1e: 427c negs r4, r7 2e20: b224 sxth r4, r4 break; 2e22: e76d b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2e24: 9803 ldr r0, [sp, #12] 2e26: 4b3b ldr r3, [pc, #236] ; (2f14 ) 2e28: 4798 blx r3 2e2a: 1b85 subs r5, r0, r6 2e2c: b22d sxth r5, r5 new_y = -obj_h_half; 2e2e: 427c negs r4, r7 2e30: b224 sxth r4, r4 break; 2e32: e765 b.n 2d00 new_x = -obj_w_half; 2e34: 4275 negs r5, r6 2e36: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2e38: 9803 ldr r0, [sp, #12] 2e3a: 4b37 ldr r3, [pc, #220] ; (2f18 ) 2e3c: 4798 blx r3 2e3e: 1bc4 subs r4, r0, r7 2e40: b224 sxth r4, r4 break; 2e42: e75d b.n 2d00 new_x = lv_obj_get_width(base) / 2 - obj_w_half; 2e44: 9c03 ldr r4, [sp, #12] 2e46: 0020 movs r0, r4 2e48: 4b32 ldr r3, [pc, #200] ; (2f14 ) 2e4a: 4798 blx r3 2e4c: 0fc5 lsrs r5, r0, #31 2e4e: 182d adds r5, r5, r0 2e50: 106d asrs r5, r5, #1 2e52: 1bad subs r5, r5, r6 2e54: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2e56: 0020 movs r0, r4 2e58: 4b2f ldr r3, [pc, #188] ; (2f18 ) 2e5a: 4798 blx r3 2e5c: 1bc4 subs r4, r0, r7 2e5e: b224 sxth r4, r4 break; 2e60: e74e b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2e62: 9c03 ldr r4, [sp, #12] 2e64: 0020 movs r0, r4 2e66: 4b2b ldr r3, [pc, #172] ; (2f14 ) 2e68: 4798 blx r3 2e6a: 1b85 subs r5, r0, r6 2e6c: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2e6e: 0020 movs r0, r4 2e70: 4b29 ldr r3, [pc, #164] ; (2f18 ) 2e72: 4798 blx r3 2e74: 1bc4 subs r4, r0, r7 2e76: b224 sxth r4, r4 break; 2e78: e742 b.n 2d00 new_x = -obj_w_half; 2e7a: 4275 negs r5, r6 2e7c: b22d sxth r5, r5 new_y = -obj_h_half; 2e7e: 427c negs r4, r7 2e80: b224 sxth r4, r4 break; 2e82: e73d b.n 2d00 new_x = -obj_w_half; 2e84: 4275 negs r5, r6 2e86: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2e88: 9803 ldr r0, [sp, #12] 2e8a: 4b23 ldr r3, [pc, #140] ; (2f18 ) 2e8c: 4798 blx r3 2e8e: 0fc4 lsrs r4, r0, #31 2e90: 1824 adds r4, r4, r0 2e92: 1064 asrs r4, r4, #1 2e94: 1be4 subs r4, r4, r7 2e96: b224 sxth r4, r4 break; 2e98: e732 b.n 2d00 new_x = -obj_w_half; 2e9a: 4275 negs r5, r6 2e9c: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2e9e: 9803 ldr r0, [sp, #12] 2ea0: 4b1d ldr r3, [pc, #116] ; (2f18 ) 2ea2: 4798 blx r3 2ea4: 1bc4 subs r4, r0, r7 2ea6: b224 sxth r4, r4 break; 2ea8: e72a b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2eaa: 9803 ldr r0, [sp, #12] 2eac: 4b19 ldr r3, [pc, #100] ; (2f14 ) 2eae: 4798 blx r3 2eb0: 1b85 subs r5, r0, r6 2eb2: b22d sxth r5, r5 new_y = -obj_h_half; 2eb4: 427c negs r4, r7 2eb6: b224 sxth r4, r4 break; 2eb8: e722 b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2eba: 9c03 ldr r4, [sp, #12] 2ebc: 0020 movs r0, r4 2ebe: 4b15 ldr r3, [pc, #84] ; (2f14 ) 2ec0: 4798 blx r3 2ec2: 1b85 subs r5, r0, r6 2ec4: b22d sxth r5, r5 new_y = lv_obj_get_height(base) / 2 - obj_h_half; 2ec6: 0020 movs r0, r4 2ec8: 4b13 ldr r3, [pc, #76] ; (2f18 ) 2eca: 4798 blx r3 2ecc: 0fc4 lsrs r4, r0, #31 2ece: 1824 adds r4, r4, r0 2ed0: 1064 asrs r4, r4, #1 2ed2: 1be4 subs r4, r4, r7 2ed4: b224 sxth r4, r4 break; 2ed6: e713 b.n 2d00 new_x = lv_obj_get_width(base) - obj_w_half; 2ed8: 9c03 ldr r4, [sp, #12] 2eda: 0020 movs r0, r4 2edc: 4b0d ldr r3, [pc, #52] ; (2f14 ) 2ede: 4798 blx r3 2ee0: 1b85 subs r5, r0, r6 2ee2: b22d sxth r5, r5 new_y = lv_obj_get_height(base) - obj_h_half; 2ee4: 0020 movs r0, r4 2ee6: 4b0c ldr r3, [pc, #48] ; (2f18 ) 2ee8: 4798 blx r3 2eea: 1bc4 subs r4, r0, r7 2eec: b224 sxth r4, r4 break; 2eee: e707 b.n 2d00 2ef0: 000017ad .word 0x000017ad 2ef4: 00025988 .word 0x00025988 2ef8: 00000395 .word 0x00000395 2efc: 00025c2c .word 0x00025c2c 2f00: 00012159 .word 0x00012159 2f04: 00025d20 .word 0x00025d20 2f08: 000017b5 .word 0x000017b5 2f0c: 000023d9 .word 0x000023d9 2f10: 0000243d .word 0x0000243d 2f14: 000024a1 .word 0x000024a1 2f18: 000024f5 .word 0x000024f5 2f1c: 00025864 .word 0x00025864 2f20: 000021a5 .word 0x000021a5 2f24: 000003a1 .word 0x000003a1 2f28: 00002979 .word 0x00002979 00002f2c : { 2f2c: b530 push {r4, r5, lr} 2f2e: b083 sub sp, #12 2f30: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f32: 4b17 ldr r3, [pc, #92] ; (2f90 ) 2f34: 4798 blx r3 2f36: 2800 cmp r0, #0 2f38: d010 beq.n 2f5c if(obj->realign.origo_align) 2f3a: 2349 movs r3, #73 ; 0x49 2f3c: 5ce3 ldrb r3, [r4, r3] 2f3e: 079b lsls r3, r3, #30 2f40: d519 bpl.n 2f76 lv_obj_align_origo(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2f42: 2344 movs r3, #68 ; 0x44 2f44: 5ee3 ldrsh r3, [r4, r3] 2f46: 2248 movs r2, #72 ; 0x48 2f48: 5ca2 ldrb r2, [r4, r2] 2f4a: 2146 movs r1, #70 ; 0x46 2f4c: 5e61 ldrsh r1, [r4, r1] 2f4e: 9100 str r1, [sp, #0] 2f50: 6c21 ldr r1, [r4, #64] ; 0x40 2f52: 0020 movs r0, r4 2f54: 4c0f ldr r4, [pc, #60] ; (2f94 ) 2f56: 47a0 blx r4 } 2f58: b003 add sp, #12 2f5a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2f5c: 4b0e ldr r3, [pc, #56] ; (2f98 ) 2f5e: 9300 str r3, [sp, #0] 2f60: 4a0e ldr r2, [pc, #56] ; (2f9c ) 2f62: 490f ldr r1, [pc, #60] ; (2fa0 ) 2f64: 3003 adds r0, #3 2f66: 4d0f ldr r5, [pc, #60] ; (2fa4 ) 2f68: 47a8 blx r5 2f6a: 0022 movs r2, r4 2f6c: 2300 movs r3, #0 2f6e: 480e ldr r0, [pc, #56] ; (2fa8 ) 2f70: 490e ldr r1, [pc, #56] ; (2fac ) 2f72: 4788 blx r1 2f74: e7fe b.n 2f74 lv_obj_align(obj, obj->realign.base, obj->realign.align, obj->realign.xofs, obj->realign.yofs); 2f76: 2344 movs r3, #68 ; 0x44 2f78: 5ee3 ldrsh r3, [r4, r3] 2f7a: 2248 movs r2, #72 ; 0x48 2f7c: 5ca2 ldrb r2, [r4, r2] 2f7e: 2146 movs r1, #70 ; 0x46 2f80: 5e61 ldrsh r1, [r4, r1] 2f82: 9100 str r1, [sp, #0] 2f84: 6c21 ldr r1, [r4, #64] ; 0x40 2f86: 0020 movs r0, r4 2f88: 4c09 ldr r4, [pc, #36] ; (2fb0 ) 2f8a: 47a0 blx r4 } 2f8c: e7e4 b.n 2f58 2f8e: 46c0 nop ; (mov r8, r8) 2f90: 000017ad .word 0x000017ad 2f94: 00002c31 .word 0x00002c31 2f98: 0002599c .word 0x0002599c 2f9c: 0000042a .word 0x0000042a 2fa0: 00025c2c .word 0x00025c2c 2fa4: 00012159 .word 0x00012159 2fa8: 00025d20 .word 0x00025d20 2fac: 000017b5 .word 0x000017b5 2fb0: 00002b31 .word 0x00002b31 00002fb4 : { 2fb4: b5f8 push {r3, r4, r5, r6, r7, lr} 2fb6: 0006 movs r6, r0 lv_obj_t * child = lv_obj_get_child(obj, NULL); 2fb8: 2100 movs r1, #0 2fba: 4b0c ldr r3, [pc, #48] ; (2fec ) 2fbc: 4798 blx r3 2fbe: 1e04 subs r4, r0, #0 while(child != NULL) { 2fc0: d012 beq.n 2fe8 lv_obj_invalidate(child); 2fc2: 4d0b ldr r5, [pc, #44] ; (2ff0 ) child = lv_obj_get_child(obj, child); 2fc4: 4f09 ldr r7, [pc, #36] ; (2fec ) lv_obj_invalidate(child); 2fc6: 0020 movs r0, r4 2fc8: 47a8 blx r5 child->signal_cb(child, LV_SIGNAL_STYLE_CHG, NULL); 2fca: 2200 movs r2, #0 2fcc: 2104 movs r1, #4 2fce: 0020 movs r0, r4 2fd0: 69e3 ldr r3, [r4, #28] 2fd2: 4798 blx r3 lv_obj_invalidate(child); 2fd4: 0020 movs r0, r4 2fd6: 47a8 blx r5 refresh_children_style(child); /*Check children too*/ 2fd8: 0020 movs r0, r4 2fda: f7ff ffeb bl 2fb4 child = lv_obj_get_child(obj, child); 2fde: 0021 movs r1, r4 2fe0: 0030 movs r0, r6 2fe2: 47b8 blx r7 2fe4: 1e04 subs r4, r0, #0 while(child != NULL) { 2fe6: d1ee bne.n 2fc6 } 2fe8: bdf8 pop {r3, r4, r5, r6, r7, pc} 2fea: 46c0 nop ; (mov r8, r8) 2fec: 00002315 .word 0x00002315 2ff0: 00002869 .word 0x00002869 00002ff4 : { 2ff4: b530 push {r4, r5, lr} 2ff6: b083 sub sp, #12 2ff8: 0005 movs r5, r0 2ffa: 000c movs r4, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 2ffc: 4b35 ldr r3, [pc, #212] ; (30d4 ) 2ffe: 4798 blx r3 3000: 2800 cmp r0, #0 3002: d013 beq.n 302c switch(prop) { 3004: 2c71 cmp r4, #113 ; 0x71 3006: d846 bhi.n 3096 3008: 2c70 cmp r4, #112 ; 0x70 300a: d222 bcs.n 3052 300c: 2c41 cmp r4, #65 ; 0x41 300e: d81a bhi.n 3046 3010: 2c40 cmp r4, #64 ; 0x40 3012: d21e bcs.n 3052 3014: 2c02 cmp r4, #2 3016: d305 bcc.n 3024 3018: 2c07 cmp r4, #7 301a: d91a bls.n 3052 301c: 0023 movs r3, r4 301e: 3b10 subs r3, #16 3020: 2b08 cmp r3, #8 3022: d916 bls.n 3052 lv_obj_invalidate(obj); 3024: 0028 movs r0, r5 3026: 4b2c ldr r3, [pc, #176] ; (30d8 ) 3028: 4798 blx r3 } 302a: e02f b.n 308c LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 302c: 4b2b ldr r3, [pc, #172] ; (30dc ) 302e: 9300 str r3, [sp, #0] 3030: 4a2b ldr r2, [pc, #172] ; (30e0 ) 3032: 492c ldr r1, [pc, #176] ; (30e4 ) 3034: 3003 adds r0, #3 3036: 4c2c ldr r4, [pc, #176] ; (30e8 ) 3038: 47a0 blx r4 303a: 002a movs r2, r5 303c: 2300 movs r3, #0 303e: 482b ldr r0, [pc, #172] ; (30ec ) 3040: 492b ldr r1, [pc, #172] ; (30f0 ) 3042: 4788 blx r1 3044: e7fe b.n 3044 switch(prop) { 3046: 2c53 cmp r4, #83 ; 0x53 3048: d822 bhi.n 3090 304a: 2c50 cmp r4, #80 ; 0x50 304c: d201 bcs.n 3052 304e: 2c4c cmp r4, #76 ; 0x4c 3050: d1e8 bne.n 3024 lv_obj_invalidate(obj); 3052: 0028 movs r0, r5 3054: 4b20 ldr r3, [pc, #128] ; (30d8 ) 3056: 4798 blx r3 obj->signal_cb(obj, LV_SIGNAL_STYLE_CHG, NULL); 3058: 2200 movs r2, #0 305a: 2104 movs r1, #4 305c: 0028 movs r0, r5 305e: 69eb ldr r3, [r5, #28] 3060: 4798 blx r3 switch(prop) { 3062: 2c15 cmp r4, #21 3064: d30a bcc.n 307c 3066: 2c18 cmp r4, #24 3068: d901 bls.n 306e 306a: 2cff cmp r4, #255 ; 0xff 306c: d106 bne.n 307c if(obj->parent) obj->parent->signal_cb(obj->parent, LV_SIGNAL_CHILD_CHG, NULL); 306e: 6828 ldr r0, [r5, #0] 3070: 2800 cmp r0, #0 3072: d003 beq.n 307c 3074: 69c3 ldr r3, [r0, #28] 3076: 2200 movs r2, #0 3078: 2101 movs r1, #1 307a: 4798 blx r3 lv_obj_invalidate(obj); 307c: 0028 movs r0, r5 307e: 4b16 ldr r3, [pc, #88] ; (30d8 ) 3080: 4798 blx r3 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 3082: 2cff cmp r4, #255 ; 0xff 3084: d021 beq.n 30ca 3086: b224 sxth r4, r4 3088: 2c00 cmp r4, #0 308a: db1e blt.n 30ca } 308c: b003 add sp, #12 308e: bd30 pop {r4, r5, pc} switch(prop) { 3090: 2c5c cmp r4, #92 ; 0x5c 3092: d1c7 bne.n 3024 3094: e7dd b.n 3052 3096: 2c7f cmp r4, #127 ; 0x7f 3098: d90a bls.n 30b0 309a: 4b16 ldr r3, [pc, #88] ; (30f4 ) 309c: 429c cmp r4, r3 309e: d810 bhi.n 30c2 30a0: 4b15 ldr r3, [pc, #84] ; (30f8 ) 30a2: 429c cmp r4, r3 30a4: d2d5 bcs.n 3052 30a6: 2c90 cmp r4, #144 ; 0x90 30a8: d0d3 beq.n 3052 30aa: 2cff cmp r4, #255 ; 0xff 30ac: d1ba bne.n 3024 30ae: e7d0 b.n 3052 30b0: 2c7e cmp r4, #126 ; 0x7e 30b2: d2ce bcs.n 3052 30b4: 2c73 cmp r4, #115 ; 0x73 30b6: d3b5 bcc.n 3024 30b8: 2c75 cmp r4, #117 ; 0x75 30ba: d9ca bls.n 3052 30bc: 2c7c cmp r4, #124 ; 0x7c 30be: d1b1 bne.n 3024 30c0: e7c7 b.n 3052 30c2: 4b0e ldr r3, [pc, #56] ; (30fc ) 30c4: 429c cmp r4, r3 30c6: d1ad bne.n 3024 30c8: e7c3 b.n 3052 if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK)) refresh_children_style(obj); 30ca: 0028 movs r0, r5 30cc: 4b0c ldr r3, [pc, #48] ; (3100 ) 30ce: 4798 blx r3 30d0: e7dc b.n 308c 30d2: 46c0 nop ; (mov r8, r8) 30d4: 000017ad .word 0x000017ad 30d8: 00002869 .word 0x00002869 30dc: 000259c4 .word 0x000259c4 30e0: 0000051d .word 0x0000051d 30e4: 00025c2c .word 0x00025c2c 30e8: 00012159 .word 0x00012159 30ec: 00025d20 .word 0x00025d20 30f0: 000017b5 .word 0x000017b5 30f4: 00008081 .word 0x00008081 30f8: 00008080 .word 0x00008080 30fc: 0000808e .word 0x0000808e 3100: 00002fb5 .word 0x00002fb5 00003104 : { 3104: b510 push {r4, lr} 3106: 0004 movs r4, r0 lv_obj_clean_style_list(obj, part); 3108: 4b03 ldr r3, [pc, #12] ; (3118 ) 310a: 4798 blx r3 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 310c: 21ff movs r1, #255 ; 0xff 310e: 0020 movs r0, r4 3110: 4b02 ldr r3, [pc, #8] ; (311c ) 3112: 4798 blx r3 } 3114: bd10 pop {r4, pc} 3116: 46c0 nop ; (mov r8, r8) 3118: 00002625 .word 0x00002625 311c: 00002ff5 .word 0x00002ff5 00003120 : { 3120: b5f0 push {r4, r5, r6, r7, lr} 3122: 46c6 mov lr, r8 3124: b500 push {lr} 3126: b082 sub sp, #8 3128: 0007 movs r7, r0 312a: 9101 str r1, [sp, #4] for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 312c: 2500 movs r5, #0 lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 312e: 4b21 ldr r3, [pc, #132] ; (31b4 ) 3130: 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; 3132: 2300 movs r3, #0 3134: 9300 str r3, [sp, #0] 3136: e01c b.n 3172 if(list->has_trans && list->skip_trans) id++; 3138: 1c5a adds r2, r3, #1 313a: b2d2 uxtb r2, r2 313c: e00a b.n 3154 if(class == style || style == NULL) { 313e: 42a7 cmp r7, r4 3140: d00f beq.n 3162 3142: 2f00 cmp r7, #0 3144: d00d beq.n 3162 for(ci = 0; ci < dsc->style_cnt; ci++) { 3146: 3301 adds r3, #1 3148: b2db uxtb r3, r3 314a: 428b cmp r3, r1 314c: d00d beq.n 316a 314e: 001a movs r2, r3 3150: 2806 cmp r0, #6 3152: d0f1 beq.n 3138 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 3154: 9c00 ldr r4, [sp, #0] 3156: 428a cmp r2, r1 3158: d2f1 bcs.n 313e return list->style_list[id]; 315a: 0092 lsls r2, r2, #2 315c: 6834 ldr r4, [r6, #0] 315e: 5914 ldr r4, [r2, r4] 3160: e7ed b.n 313e lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 3162: 21ff movs r1, #255 ; 0xff 3164: 9801 ldr r0, [sp, #4] 3166: 4b14 ldr r3, [pc, #80] ; (31b8 ) 3168: 4798 blx r3 for(part_sub = 0; part_sub != _LV_OBJ_PART_REAL_LAST; part_sub++) { 316a: 3501 adds r5, #1 316c: b2ed uxtb r5, r5 316e: 2d40 cmp r5, #64 ; 0x40 3170: d00c beq.n 318c lv_style_list_t * dsc = lv_obj_get_style_list(obj, part_sub); 3172: 0029 movs r1, r5 3174: 9801 ldr r0, [sp, #4] 3176: 47c0 blx r8 3178: 1e06 subs r6, r0, #0 if(dsc == NULL) break; 317a: d007 beq.n 318c for(ci = 0; ci < dsc->style_cnt; ci++) { 317c: 7901 ldrb r1, [r0, #4] 317e: 2900 cmp r1, #0 3180: d0f3 beq.n 316a if(list->has_trans && list->skip_trans) id++; 3182: 7943 ldrb r3, [r0, #5] 3184: 2006 movs r0, #6 3186: 4018 ands r0, r3 3188: 2300 movs r3, #0 318a: e7e0 b.n 314e lv_obj_t * child = lv_obj_get_child(obj, NULL); 318c: 2100 movs r1, #0 318e: 9801 ldr r0, [sp, #4] 3190: 4b0a ldr r3, [pc, #40] ; (31bc ) 3192: 4798 blx r3 3194: 1e04 subs r4, r0, #0 while(child) { 3196: d009 beq.n 31ac child = lv_obj_get_child(obj, child); 3198: 4e08 ldr r6, [pc, #32] ; (31bc ) report_style_mod_core(style, child); 319a: 0021 movs r1, r4 319c: 0038 movs r0, r7 319e: f7ff ffbf bl 3120 child = lv_obj_get_child(obj, child); 31a2: 0021 movs r1, r4 31a4: 9801 ldr r0, [sp, #4] 31a6: 47b0 blx r6 31a8: 1e04 subs r4, r0, #0 while(child) { 31aa: d1f6 bne.n 319a } 31ac: b002 add sp, #8 31ae: bc04 pop {r2} 31b0: 4690 mov r8, r2 31b2: bdf0 pop {r4, r5, r6, r7, pc} 31b4: 00002549 .word 0x00002549 31b8: 00002ff5 .word 0x00002ff5 31bc: 00002315 .word 0x00002315 000031c0 : { 31c0: b5f0 push {r4, r5, r6, r7, lr} 31c2: 46d6 mov lr, sl 31c4: 464f mov r7, r9 31c6: b580 push {r7, lr} 31c8: b083 sub sp, #12 31ca: 9001 str r0, [sp, #4] lv_disp_t * d = lv_disp_get_next(NULL); 31cc: 2000 movs r0, #0 31ce: 4b11 ldr r3, [pc, #68] ; (3214 ) 31d0: 4798 blx r3 31d2: 4681 mov r9, r0 while(d) { 31d4: 2800 cmp r0, #0 31d6: d017 beq.n 3208 _LV_LL_READ(d->scr_ll, i) { 31d8: 4b0f ldr r3, [pc, #60] ; (3218 ) 31da: 469a mov sl, r3 report_style_mod_core(style, i); 31dc: 4f0f ldr r7, [pc, #60] ; (321c ) _LV_LL_READ(d->scr_ll, i) { 31de: 4e10 ldr r6, [pc, #64] ; (3220 ) 31e0: 464d mov r5, r9 31e2: 3530 adds r5, #48 ; 0x30 31e4: 0028 movs r0, r5 31e6: 47d0 blx sl 31e8: 1e04 subs r4, r0, #0 31ea: d007 beq.n 31fc report_style_mod_core(style, i); 31ec: 0021 movs r1, r4 31ee: 9801 ldr r0, [sp, #4] 31f0: 47b8 blx r7 _LV_LL_READ(d->scr_ll, i) { 31f2: 0021 movs r1, r4 31f4: 0028 movs r0, r5 31f6: 47b0 blx r6 31f8: 1e04 subs r4, r0, #0 31fa: d1f7 bne.n 31ec d = lv_disp_get_next(d); 31fc: 4648 mov r0, r9 31fe: 4b05 ldr r3, [pc, #20] ; (3214 ) 3200: 4798 blx r3 3202: 4681 mov r9, r0 while(d) { 3204: 2800 cmp r0, #0 3206: d1eb bne.n 31e0 } 3208: b003 add sp, #12 320a: bc0c pop {r2, r3} 320c: 4691 mov r9, r2 320e: 469a mov sl, r3 3210: bdf0 pop {r4, r5, r6, r7, pc} 3212: 46c0 nop ; (mov r8, r8) 3214: 00010e51 .word 0x00010e51 3218: 00011e85 .word 0x00011e85 321c: 00003121 .word 0x00003121 3220: 00011e9d .word 0x00011e9d 00003224 : { 3224: b5f8 push {r3, r4, r5, r6, r7, lr} 3226: 0004 movs r4, r0 3228: 000d movs r5, r1 lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part); 322a: 7981 ldrb r1, [r0, #6] 322c: 6800 ldr r0, [r0, #0] 322e: 4b3f ldr r3, [pc, #252] ; (332c ) 3230: 4798 blx r3 lv_style_t * style = _lv_style_list_get_transition_style(list); 3232: 4b3f ldr r3, [pc, #252] ; (3330 ) 3234: 4798 blx r3 if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/ 3236: 88a1 ldrh r1, [r4, #4] 3238: 230f movs r3, #15 323a: 400b ands r3, r1 323c: 2b08 cmp r3, #8 323e: dc19 bgt.n 3274 if(v == 0) x = tr->start_value._int; 3240: 2d00 cmp r5, #0 3242: d108 bne.n 3256 3244: 2308 movs r3, #8 3246: 5ee2 ldrsh r2, [r4, r3] _lv_style_set_int(style, tr->prop, x); 3248: 4b3a ldr r3, [pc, #232] ; (3334 ) 324a: 4798 blx r3 lv_obj_refresh_style(tr->obj, tr->prop); 324c: 88a1 ldrh r1, [r4, #4] 324e: 6820 ldr r0, [r4, #0] 3250: 4b39 ldr r3, [pc, #228] ; (3338 ) 3252: 4798 blx r3 } 3254: bdf8 pop {r3, r4, r5, r6, r7, pc} else if(v == 255) x = tr->end_value._int; 3256: 2dff cmp r5, #255 ; 0xff 3258: d009 beq.n 326e else x = tr->start_value._int + ((int32_t)((int32_t)(tr->end_value._int - tr->start_value._int) * v) >> 8); 325a: 2308 movs r3, #8 325c: 5ee6 ldrsh r6, [r4, r3] 325e: 230c movs r3, #12 3260: 5ee2 ldrsh r2, [r4, r3] 3262: 1b92 subs r2, r2, r6 3264: 436a muls r2, r5 3266: 1212 asrs r2, r2, #8 3268: 1992 adds r2, r2, r6 326a: b212 sxth r2, r2 326c: e7ec b.n 3248 else if(v == 255) x = tr->end_value._int; 326e: 230c movs r3, #12 3270: 5ee2 ldrsh r2, [r4, r3] 3272: e7e9 b.n 3248 else if((tr->prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3274: 2b0b cmp r3, #11 3276: dc3c bgt.n 32f2 if(v <= 0) x = tr->start_value._color; 3278: 2d00 cmp r5, #0 327a: dd05 ble.n 3288 else if(v >= 255) x = tr->end_value._color; 327c: 2dfe cmp r5, #254 ; 0xfe 327e: dd05 ble.n 328c 3280: 89a2 ldrh r2, [r4, #12] _lv_style_set_color(style, tr->prop, x); 3282: 4b2e ldr r3, [pc, #184] ; (333c ) 3284: 4798 blx r3 3286: e7e1 b.n 324c if(v <= 0) x = tr->start_value._color; 3288: 8922 ldrh r2, [r4, #8] 328a: e7fa b.n 3282 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))); 328c: b2ed uxtb r5, r5 328e: 22ff movs r2, #255 ; 0xff 3290: 1b52 subs r2, r2, r5 3292: 7b63 ldrb r3, [r4, #13] 3294: 08db lsrs r3, r3, #3 3296: 436b muls r3, r5 3298: 7a66 ldrb r6, [r4, #9] 329a: 08f6 lsrs r6, r6, #3 329c: 4356 muls r6, r2 329e: 199e adds r6, r3, r6 32a0: 0233 lsls r3, r6, #8 32a2: 199b adds r3, r3, r6 32a4: 01db lsls r3, r3, #7 32a6: 199b adds r3, r3, r6 32a8: 011b lsls r3, r3, #4 32aa: 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))); 32ac: 89a7 ldrh r7, [r4, #12] 32ae: 057f lsls r7, r7, #21 32b0: 0ebf lsrs r7, r7, #26 32b2: 436f muls r7, r5 32b4: 8926 ldrh r6, [r4, #8] 32b6: 0576 lsls r6, r6, #21 32b8: 0eb6 lsrs r6, r6, #26 32ba: 4356 muls r6, r2 32bc: 19bf adds r7, r7, r6 32be: 023e lsls r6, r7, #8 32c0: 19f6 adds r6, r6, r7 32c2: 01f6 lsls r6, r6, #7 32c4: 19f6 adds r6, r6, r7 32c6: 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))); 32c8: 7b27 ldrb r7, [r4, #12] 32ca: 06ff lsls r7, r7, #27 32cc: 0eff lsrs r7, r7, #27 32ce: 437d muls r5, r7 32d0: 7a27 ldrb r7, [r4, #8] 32d2: 06ff lsls r7, r7, #27 32d4: 0eff lsrs r7, r7, #27 32d6: 437a muls r2, r7 32d8: 18ad adds r5, r5, r2 32da: 022a lsls r2, r5, #8 32dc: 1952 adds r2, r2, r5 32de: 01d2 lsls r2, r2, #7 32e0: 1952 adds r2, r2, r5 32e2: 0112 lsls r2, r2, #4 32e4: 0eb6 lsrs r6, r6, #26 32e6: 0176 lsls r6, r6, #5 32e8: 0ed2 lsrs r2, r2, #27 32ea: 02db lsls r3, r3, #11 32ec: 4332 orrs r2, r6 32ee: 431a orrs r2, r3 32f0: e7c7 b.n 3282 else if((tr->prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 32f2: 2b0d cmp r3, #13 32f4: dc11 bgt.n 331a if(v <= 0) x = tr->start_value._opa; 32f6: 2d00 cmp r5, #0 32f8: dd05 ble.n 3306 else if(v >= 255) x = tr->end_value._opa; 32fa: 2dfe cmp r5, #254 ; 0xfe 32fc: dd05 ble.n 330a 32fe: 7b22 ldrb r2, [r4, #12] _lv_style_set_opa(style, tr->prop, x); 3300: 4b0f ldr r3, [pc, #60] ; (3340 ) 3302: 4798 blx r3 3304: e7a2 b.n 324c if(v <= 0) x = tr->start_value._opa; 3306: 7a22 ldrb r2, [r4, #8] 3308: e7fa b.n 3300 else x = tr->start_value._opa + (((tr->end_value._opa - tr->start_value._opa) * v) >> 8); 330a: 7a22 ldrb r2, [r4, #8] 330c: 7b23 ldrb r3, [r4, #12] 330e: 1a9b subs r3, r3, r2 3310: 435d muls r5, r3 3312: 122d asrs r5, r5, #8 3314: 1952 adds r2, r2, r5 3316: b2d2 uxtb r2, r2 3318: e7f2 b.n 3300 if(v < 128) x = tr->start_value._ptr; 331a: 2d7f cmp r5, #127 ; 0x7f 331c: dc03 bgt.n 3326 331e: 68a2 ldr r2, [r4, #8] _lv_style_set_ptr(style, tr->prop, x); 3320: 4b08 ldr r3, [pc, #32] ; (3344 ) 3322: 4798 blx r3 3324: e792 b.n 324c else x = tr->end_value._ptr; 3326: 68e2 ldr r2, [r4, #12] 3328: e7fa b.n 3320 332a: 46c0 nop ; (mov r8, r8) 332c: 00002549 .word 0x00002549 3330: 00006965 .word 0x00006965 3334: 00005fad .word 0x00005fad 3338: 00002ff5 .word 0x00002ff5 333c: 00006135 .word 0x00006135 3340: 000062bd .word 0x000062bd 3344: 00006431 .word 0x00006431 00003348 : { 3348: b530 push {r4, r5, lr} 334a: b083 sub sp, #12 334c: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 334e: 4b0a ldr r3, [pc, #40] ; (3378 ) 3350: 4798 blx r3 3352: 2800 cmp r0, #0 3354: d002 beq.n 335c } 3356: 2000 movs r0, #0 3358: b003 add sp, #12 335a: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 335c: 4b07 ldr r3, [pc, #28] ; (337c ) 335e: 9300 str r3, [sp, #0] 3360: 4a07 ldr r2, [pc, #28] ; (3380 ) 3362: 4908 ldr r1, [pc, #32] ; (3384 ) 3364: 3003 adds r0, #3 3366: 4d08 ldr r5, [pc, #32] ; (3388 ) 3368: 47a8 blx r5 336a: 0022 movs r2, r4 336c: 2300 movs r3, #0 336e: 4807 ldr r0, [pc, #28] ; (338c ) 3370: 4907 ldr r1, [pc, #28] ; (3390 ) 3372: 4788 blx r1 3374: e7fe b.n 3374 3376: 46c0 nop ; (mov r8, r8) 3378: 000017ad .word 0x000017ad 337c: 00025b8c .word 0x00025b8c 3380: 00000ab1 .word 0x00000ab1 3384: 00025c2c .word 0x00025c2c 3388: 00012159 .word 0x00012159 338c: 00025d20 .word 0x00025d20 3390: 000017b5 .word 0x000017b5 00003394 : { 3394: b5f0 push {r4, r5, r6, r7, lr} 3396: 46de mov lr, fp 3398: 4657 mov r7, sl 339a: 464e mov r6, r9 339c: 4645 mov r5, r8 339e: b5e0 push {r5, r6, r7, lr} 33a0: b083 sub sp, #12 33a2: 4682 mov sl, r0 33a4: 000d movs r5, r1 if(parent == NULL) { 33a6: 2800 cmp r0, #0 33a8: d011 beq.n 33ce LV_ASSERT_OBJ(parent, LV_OBJX_NAME); 33aa: 4be2 ldr r3, [pc, #904] ; (3734 ) 33ac: 4798 blx r3 33ae: 2800 cmp r0, #0 33b0: d000 beq.n 33b4 33b2: e151 b.n 3658 33b4: 4be0 ldr r3, [pc, #896] ; (3738 ) 33b6: 9300 str r3, [sp, #0] 33b8: 22ed movs r2, #237 ; 0xed 33ba: 49e0 ldr r1, [pc, #896] ; (373c ) 33bc: 3003 adds r0, #3 33be: 4ce0 ldr r4, [pc, #896] ; (3740 ) 33c0: 47a0 blx r4 33c2: 4652 mov r2, sl 33c4: 2300 movs r3, #0 33c6: 48df ldr r0, [pc, #892] ; (3744 ) 33c8: 49df ldr r1, [pc, #892] ; (3748 ) 33ca: 4788 blx r1 33cc: e7fe b.n 33cc lv_disp_t * disp = lv_disp_get_default(); 33ce: 4bdf ldr r3, [pc, #892] ; (374c ) 33d0: 4798 blx r3 if(!disp) { 33d2: 2800 cmp r0, #0 33d4: d109 bne.n 33ea LV_LOG_WARN("lv_obj_create: not display created to so far. No place to assign the new screen"); 33d6: 4bde ldr r3, [pc, #888] ; (3750 ) 33d8: 9300 str r3, [sp, #0] 33da: 4bd7 ldr r3, [pc, #860] ; (3738 ) 33dc: 22cf movs r2, #207 ; 0xcf 33de: 49d7 ldr r1, [pc, #860] ; (373c ) 33e0: 3002 adds r0, #2 33e2: 4cd7 ldr r4, [pc, #860] ; (3740 ) 33e4: 47a0 blx r4 return NULL; 33e6: 4654 mov r4, sl 33e8: e219 b.n 381e new_obj = _lv_ll_ins_head(&disp->scr_ll); 33ea: 3030 adds r0, #48 ; 0x30 33ec: 4bd9 ldr r3, [pc, #868] ; (3754 ) 33ee: 4798 blx r3 33f0: 0004 movs r4, r0 LV_ASSERT_MEM(new_obj); 33f2: 4bd0 ldr r3, [pc, #832] ; (3734 ) 33f4: 4798 blx r3 33f6: 2800 cmp r0, #0 33f8: d10c bne.n 3414 33fa: 4bcf ldr r3, [pc, #828] ; (3738 ) 33fc: 9300 str r3, [sp, #0] 33fe: 22d4 movs r2, #212 ; 0xd4 3400: 49ce ldr r1, [pc, #824] ; (373c ) 3402: 3003 adds r0, #3 3404: 4dce ldr r5, [pc, #824] ; (3740 ) 3406: 47a8 blx r5 3408: 0022 movs r2, r4 340a: 2300 movs r3, #0 340c: 48d2 ldr r0, [pc, #840] ; (3758 ) 340e: 49ce ldr r1, [pc, #824] ; (3748 ) 3410: 4788 blx r1 3412: e7fe b.n 3412 if(new_obj == NULL) return NULL; 3414: 2c00 cmp r4, #0 3416: d100 bne.n 341a 3418: e201 b.n 381e _lv_memset_00(new_obj, sizeof(lv_obj_t)); 341a: 214c movs r1, #76 ; 0x4c 341c: 0020 movs r0, r4 341e: 4bcf ldr r3, [pc, #828] ; (375c ) 3420: 4798 blx r3 new_obj->base_dir = LV_BIDI_DIR_LTR; 3422: 0022 movs r2, r4 3424: 3234 adds r2, #52 ; 0x34 3426: 7853 ldrb r3, [r2, #1] 3428: 2130 movs r1, #48 ; 0x30 342a: 438b bics r3, r1 342c: 7053 strb r3, [r2, #1] new_obj->signal_cb = lv_obj_signal; 342e: 4bcc ldr r3, [pc, #816] ; (3760 ) 3430: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 3432: 4bcc ldr r3, [pc, #816] ; (3764 ) 3434: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3436: 2300 movs r3, #0 3438: 61a3 str r3, [r4, #24] new_obj->coords.x1 = 0; 343a: 8223 strh r3, [r4, #16] new_obj->coords.y1 = 0; 343c: 8263 strh r3, [r4, #18] new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1; 343e: 2000 movs r0, #0 3440: 4bc9 ldr r3, [pc, #804] ; (3768 ) 3442: 4798 blx r3 3444: 3801 subs r0, #1 3446: 82a0 strh r0, [r4, #20] new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1; 3448: 2000 movs r0, #0 344a: 4bc8 ldr r3, [pc, #800] ; (376c ) 344c: 4798 blx r3 344e: 3801 subs r0, #1 3450: 82e0 strh r0, [r4, #22] _lv_ll_init(&(new_obj->child_ll), sizeof(lv_obj_t)); 3452: 1d20 adds r0, r4, #4 3454: 214c movs r1, #76 ; 0x4c 3456: 4bc6 ldr r3, [pc, #792] ; (3770 ) 3458: 4798 blx r3 new_obj->ext_draw_pad = 0; 345a: 2100 movs r1, #0 345c: 2000 movs r0, #0 345e: 8661 strh r1, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = 0; 3460: 2300 movs r3, #0 3462: 2230 movs r2, #48 ; 0x30 3464: 54a0 strb r0, [r4, r2] new_obj->ext_click_pad_ver = 0; 3466: 3201 adds r2, #1 3468: 54a3 strb r3, [r4, r2] new_obj->realign.align = LV_ALIGN_CENTER; 346a: 3217 adds r2, #23 346c: 54a3 strb r3, [r4, r2] new_obj->realign.xofs = 0; 346e: 2344 movs r3, #68 ; 0x44 3470: 52e1 strh r1, [r4, r3] new_obj->realign.yofs = 0; 3472: 3302 adds r3, #2 3474: 52e1 strh r1, [r4, r3] new_obj->realign.base = NULL; 3476: 6421 str r1, [r4, #64] ; 0x40 new_obj->realign.auto_realign = 0; 3478: 3201 adds r2, #1 347a: 5ca3 ldrb r3, [r4, r2] 347c: 2701 movs r7, #1 347e: 43bb bics r3, r7 3480: 54a3 strb r3, [r4, r2] new_obj->group_p = NULL; 3482: 63a1 str r1, [r4, #56] ; 0x38 new_obj->adv_hittest = 0; 3484: 2334 movs r3, #52 ; 0x34 3486: 4698 mov r8, r3 3488: 5ce2 ldrb r2, [r4, r3] new_obj->click = 1; 348a: 334b adds r3, #75 ; 0x4b 348c: 4013 ands r3, r2 348e: 2201 movs r2, #1 3490: 4694 mov ip, r2 3492: 4662 mov r2, ip 3494: 4313 orrs r3, r2 new_obj->drag_throw = 0; 3496: 227d movs r2, #125 ; 0x7d 3498: 4013 ands r3, r2 new_obj->drag_parent = 0; 349a: 3a79 subs r2, #121 ; 0x79 349c: 4393 bics r3, r2 new_obj->drag_dir = LV_DRAG_DIR_BOTH; 349e: 0027 movs r7, r4 34a0: 3734 adds r7, #52 ; 0x34 34a2: 787a ldrb r2, [r7, #1] 34a4: 260e movs r6, #14 34a6: 43b2 bics r2, r6 34a8: 2606 movs r6, #6 34aa: 46b1 mov r9, r6 34ac: 464e mov r6, r9 34ae: 4332 orrs r2, r6 new_obj->hidden = 0; 34b0: 2608 movs r6, #8 34b2: 43b3 bics r3, r6 new_obj->top = 0; 34b4: 3608 adds r6, #8 34b6: 43b3 bics r3, r6 new_obj->protect = LV_PROTECT_NONE; 34b8: 362c adds r6, #44 ; 0x2c 34ba: 55a0 strb r0, [r4, r6] new_obj->parent_event = 0; 34bc: 3e1c subs r6, #28 34be: 43b3 bics r3, r6 34c0: 3620 adds r6, #32 34c2: 43b3 bics r3, r6 34c4: 4646 mov r6, r8 34c6: 55a3 strb r3, [r4, r6] new_obj->gesture_parent = 1; 34c8: 4663 mov r3, ip 34ca: 431a orrs r2, r3 34cc: 707a strb r2, [r7, #1] new_obj->state = LV_STATE_DEFAULT; 34ce: 233d movs r3, #61 ; 0x3d 34d0: 54e0 strb r0, [r4, r3] new_obj->ext_attr = NULL; 34d2: 6261 str r1, [r4, #36] ; 0x24 lv_style_list_init(&new_obj->style_list); 34d4: 3f0c subs r7, #12 34d6: 0038 movs r0, r7 34d8: 4ba6 ldr r3, [pc, #664] ; (3774 ) 34da: 4798 blx r3 if(copy == NULL) { 34dc: 2d00 cmp r5, #0 34de: d100 bne.n 34e2 34e0: e17b b.n 37da lv_style_list_copy(&new_obj->style_list, ©->style_list); 34e2: 0029 movs r1, r5 34e4: 3128 adds r1, #40 ; 0x28 34e6: 0038 movs r0, r7 34e8: 4ba3 ldr r3, [pc, #652] ; (3778 ) 34ea: 4798 blx r3 34ec: 0029 movs r1, r5 34ee: 3118 adds r1, #24 uint8_t * d8 = (uint8_t *)dst; 34f0: 0022 movs r2, r4 34f2: 3210 adds r2, #16 const uint8_t * s8 = (const uint8_t *)src; 34f4: 002b movs r3, r5 34f6: 3310 adds r3, #16 *d8 = *s8; 34f8: 7818 ldrb r0, [r3, #0] 34fa: 7010 strb r0, [r2, #0] d8++; 34fc: 3201 adds r2, #1 s8++; 34fe: 3301 adds r3, #1 while(len) { 3500: 428b cmp r3, r1 3502: d1f9 bne.n 34f8 new_obj->ext_draw_pad = copy->ext_draw_pad; 3504: 2232 movs r2, #50 ; 0x32 3506: 5eab ldrsh r3, [r5, r2] 3508: 8663 strh r3, [r4, #50] ; 0x32 new_obj->ext_click_pad_hor = copy->ext_click_pad_hor; 350a: 2330 movs r3, #48 ; 0x30 350c: 5cea ldrb r2, [r5, r3] 350e: 54e2 strb r2, [r4, r3] new_obj->ext_click_pad_ver = copy->ext_click_pad_ver; 3510: 3301 adds r3, #1 3512: 5cea ldrb r2, [r5, r3] 3514: 54e2 strb r2, [r4, r3] new_obj->realign.align = copy->realign.align; 3516: 3317 adds r3, #23 3518: 5cea ldrb r2, [r5, r3] 351a: 54e2 strb r2, [r4, r3] new_obj->realign.xofs = copy->realign.xofs; 351c: 3b04 subs r3, #4 351e: 5eea ldrsh r2, [r5, r3] 3520: 52e2 strh r2, [r4, r3] new_obj->realign.yofs = copy->realign.yofs; 3522: 3302 adds r3, #2 3524: 5eea ldrsh r2, [r5, r3] 3526: 52e2 strh r2, [r4, r3] new_obj->realign.base = copy->realign.base; 3528: 6c2b ldr r3, [r5, #64] ; 0x40 352a: 6423 str r3, [r4, #64] ; 0x40 new_obj->realign.auto_realign = copy->realign.auto_realign; 352c: 2249 movs r2, #73 ; 0x49 352e: 5ca9 ldrb r1, [r5, r2] 3530: 2301 movs r3, #1 3532: 469b mov fp, r3 3534: 2701 movs r7, #1 3536: 4039 ands r1, r7 3538: 5ca3 ldrb r3, [r4, r2] 353a: 4658 mov r0, fp 353c: 4383 bics r3, r0 353e: 430b orrs r3, r1 3540: 54a3 strb r3, [r4, r2] new_obj->event_cb = copy->event_cb; 3542: 69ab ldr r3, [r5, #24] 3544: 61a3 str r3, [r4, #24] new_obj->adv_hittest = copy->adv_hittest; 3546: 2334 movs r3, #52 ; 0x34 3548: 5cea ldrb r2, [r5, r3] 354a: 09d2 lsrs r2, r2, #7 354c: 01d1 lsls r1, r2, #7 354e: 5ce2 ldrb r2, [r4, r3] 3550: 4694 mov ip, r2 3552: 227f movs r2, #127 ; 0x7f 3554: 4666 mov r6, ip 3556: 4032 ands r2, r6 3558: 430a orrs r2, r1 355a: 54e2 strb r2, [r4, r3] new_obj->click = copy->click; 355c: 5cea ldrb r2, [r5, r3] 355e: 07d2 lsls r2, r2, #31 3560: 0fd2 lsrs r2, r2, #31 3562: 5ce1 ldrb r1, [r4, r3] 3564: 4381 bics r1, r0 3566: 430a orrs r2, r1 3568: 54e2 strb r2, [r4, r3] new_obj->drag = copy->drag; 356a: 5cea ldrb r2, [r5, r3] 356c: 0852 lsrs r2, r2, #1 356e: 403a ands r2, r7 3570: 0052 lsls r2, r2, #1 3572: 5ce1 ldrb r1, [r4, r3] 3574: 2602 movs r6, #2 3576: 43b1 bics r1, r6 3578: 430a orrs r2, r1 357a: 54e2 strb r2, [r4, r3] new_obj->drag_dir = copy->drag_dir; 357c: 2235 movs r2, #53 ; 0x35 357e: 4694 mov ip, r2 3580: 5caa ldrb r2, [r5, r2] 3582: 0021 movs r1, r4 3584: 3134 adds r1, #52 ; 0x34 3586: 360c adds r6, #12 3588: 4016 ands r6, r2 358a: 46b0 mov r8, r6 358c: 784a ldrb r2, [r1, #1] 358e: 260e movs r6, #14 3590: 43b2 bics r2, r6 3592: 4646 mov r6, r8 3594: 4332 orrs r2, r6 3596: 704a strb r2, [r1, #1] new_obj->drag_throw = copy->drag_throw; 3598: 5cea ldrb r2, [r5, r3] 359a: 0892 lsrs r2, r2, #2 359c: 403a ands r2, r7 359e: 0092 lsls r2, r2, #2 35a0: 5ce6 ldrb r6, [r4, r3] 35a2: 46b0 mov r8, r6 35a4: 2604 movs r6, #4 35a6: 46b1 mov r9, r6 35a8: 4646 mov r6, r8 35aa: 4648 mov r0, r9 35ac: 4386 bics r6, r0 35ae: 4332 orrs r2, r6 35b0: 54e2 strb r2, [r4, r3] new_obj->drag_parent = copy->drag_parent; 35b2: 5cea ldrb r2, [r5, r3] 35b4: 08d2 lsrs r2, r2, #3 35b6: 403a ands r2, r7 35b8: 00d2 lsls r2, r2, #3 35ba: 5ce0 ldrb r0, [r4, r3] 35bc: 4680 mov r8, r0 35be: 2008 movs r0, #8 35c0: 4646 mov r6, r8 35c2: 4386 bics r6, r0 35c4: 4332 orrs r2, r6 35c6: 54e2 strb r2, [r4, r3] new_obj->hidden = copy->hidden; 35c8: 5cea ldrb r2, [r5, r3] 35ca: 0912 lsrs r2, r2, #4 35cc: 403a ands r2, r7 35ce: 0112 lsls r2, r2, #4 35d0: 5ce0 ldrb r0, [r4, r3] 35d2: 4680 mov r8, r0 35d4: 2010 movs r0, #16 35d6: 4646 mov r6, r8 35d8: 4386 bics r6, r0 35da: 4332 orrs r2, r6 35dc: 54e2 strb r2, [r4, r3] new_obj->top = copy->top; 35de: 5cea ldrb r2, [r5, r3] 35e0: 0952 lsrs r2, r2, #5 35e2: 403a ands r2, r7 35e4: 0152 lsls r2, r2, #5 35e6: 5ce0 ldrb r0, [r4, r3] 35e8: 4680 mov r8, r0 35ea: 2020 movs r0, #32 35ec: 4646 mov r6, r8 35ee: 4386 bics r6, r0 35f0: 4332 orrs r2, r6 35f2: 54e2 strb r2, [r4, r3] new_obj->parent_event = copy->parent_event; 35f4: 5cea ldrb r2, [r5, r3] 35f6: 0992 lsrs r2, r2, #6 35f8: 403a ands r2, r7 35fa: 0192 lsls r2, r2, #6 35fc: 5ce7 ldrb r7, [r4, r3] 35fe: 2040 movs r0, #64 ; 0x40 3600: 4387 bics r7, r0 3602: 433a orrs r2, r7 3604: 54e2 strb r2, [r4, r3] new_obj->protect = copy->protect; 3606: 3308 adds r3, #8 3608: 5cea ldrb r2, [r5, r3] 360a: 54e2 strb r2, [r4, r3] new_obj->gesture_parent = copy->gesture_parent; 360c: 4663 mov r3, ip 360e: 5ceb ldrb r3, [r5, r3] 3610: 07db lsls r3, r3, #31 3612: 0fdb lsrs r3, r3, #31 3614: 784a ldrb r2, [r1, #1] 3616: 4658 mov r0, fp 3618: 4382 bics r2, r0 361a: 4313 orrs r3, r2 361c: 704b strb r3, [r1, #1] if(copy->group_p != NULL) { 361e: 6ba8 ldr r0, [r5, #56] ; 0x38 3620: 2800 cmp r0, #0 3622: d002 beq.n 362a lv_group_add_obj(copy->group_p, new_obj); 3624: 0021 movs r1, r4 3626: 4b55 ldr r3, [pc, #340] ; (377c ) 3628: 4798 blx r3 if(lv_obj_get_parent(copy) != NULL && parent != NULL) { 362a: 0028 movs r0, r5 362c: 4b54 ldr r3, [pc, #336] ; (3780 ) 362e: 4798 blx r3 3630: 2800 cmp r0, #0 3632: d100 bne.n 3636 3634: e0de b.n 37f4 3636: 4653 mov r3, sl 3638: 2b00 cmp r3, #0 363a: d100 bne.n 363e 363c: e0e6 b.n 380c lv_obj_set_pos(new_obj, lv_obj_get_x(copy), lv_obj_get_y(copy)); 363e: 0028 movs r0, r5 3640: 4b50 ldr r3, [pc, #320] ; (3784 ) 3642: 4798 blx r3 3644: 0007 movs r7, r0 3646: 0028 movs r0, r5 3648: 4b4f ldr r3, [pc, #316] ; (3788 ) 364a: 4798 blx r3 364c: 0002 movs r2, r0 364e: 0039 movs r1, r7 3650: 0020 movs r0, r4 3652: 4b4e ldr r3, [pc, #312] ; (378c ) 3654: 4798 blx r3 3656: e0d0 b.n 37fa new_obj = _lv_ll_ins_head(&parent->child_ll); 3658: 4653 mov r3, sl 365a: 1d18 adds r0, r3, #4 365c: 4b3d ldr r3, [pc, #244] ; (3754 ) 365e: 4798 blx r3 3660: 0004 movs r4, r0 LV_ASSERT_MEM(new_obj); 3662: 4b34 ldr r3, [pc, #208] ; (3734 ) 3664: 4798 blx r3 3666: 2800 cmp r0, #0 3668: d04b beq.n 3702 if(new_obj == NULL) return NULL; 366a: 2c00 cmp r4, #0 366c: d100 bne.n 3670 366e: e0d6 b.n 381e _lv_memset_00(new_obj, sizeof(lv_obj_t)); 3670: 214c movs r1, #76 ; 0x4c 3672: 0020 movs r0, r4 3674: 4b39 ldr r3, [pc, #228] ; (375c ) 3676: 4798 blx r3 new_obj->parent = parent; 3678: 4653 mov r3, sl 367a: 6023 str r3, [r4, #0] new_obj->base_dir = LV_BIDI_DIR_LTR; 367c: 0022 movs r2, r4 367e: 3234 adds r2, #52 ; 0x34 3680: 7853 ldrb r3, [r2, #1] 3682: 2130 movs r1, #48 ; 0x30 3684: 438b bics r3, r1 3686: 7053 strb r3, [r2, #1] new_obj->signal_cb = lv_obj_signal; 3688: 4b35 ldr r3, [pc, #212] ; (3760 ) 368a: 61e3 str r3, [r4, #28] new_obj->design_cb = lv_obj_design; 368c: 4b35 ldr r3, [pc, #212] ; (3764 ) 368e: 6223 str r3, [r4, #32] new_obj->event_cb = NULL; 3690: 2300 movs r3, #0 3692: 61a3 str r3, [r4, #24] new_obj->coords.y1 = parent->coords.y1; 3694: 4653 mov r3, sl 3696: 2212 movs r2, #18 3698: 5e9b ldrsh r3, [r3, r2] 369a: 8263 strh r3, [r4, #18] new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 369c: 4653 mov r3, sl 369e: 8a5f ldrh r7, [r3, #18] 36a0: 2000 movs r0, #0 36a2: 4b3b ldr r3, [pc, #236] ; (3790 ) 36a4: 4798 blx r3 36a6: 2332 movs r3, #50 ; 0x32 36a8: 4343 muls r3, r0 36aa: 3350 adds r3, #80 ; 0x50 36ac: 2240 movs r2, #64 ; 0x40 36ae: 32ff adds r2, #255 ; 0xff 36b0: 2001 movs r0, #1 36b2: 4293 cmp r3, r2 36b4: d832 bhi.n 371c 36b6: 19c0 adds r0, r0, r7 36b8: 82e0 strh r0, [r4, #22] if(lv_obj_get_base_dir(new_obj) == LV_BIDI_DIR_RTL) { 36ba: 0020 movs r0, r4 36bc: 4b35 ldr r3, [pc, #212] ; (3794 ) 36be: 4798 blx r3 36c0: 2801 cmp r0, #1 36c2: d06b beq.n 379c new_obj->coords.x1 = parent->coords.x1; 36c4: 4653 mov r3, sl 36c6: 2210 movs r2, #16 36c8: 5e9b ldrsh r3, [r3, r2] 36ca: 8223 strh r3, [r4, #16] new_obj->coords.x2 = parent->coords.x1 + LV_OBJ_DEF_WIDTH; 36cc: 4653 mov r3, sl 36ce: 8a1f ldrh r7, [r3, #16] 36d0: 2000 movs r0, #0 36d2: 4b2f ldr r3, [pc, #188] ; (3790 ) 36d4: 4798 blx r3 36d6: 2364 movs r3, #100 ; 0x64 36d8: 4343 muls r3, r0 36da: 3350 adds r3, #80 ; 0x50 36dc: 2240 movs r2, #64 ; 0x40 36de: 32ff adds r2, #255 ; 0xff 36e0: 2001 movs r0, #1 36e2: 4293 cmp r3, r2 36e4: d90a bls.n 36fc 36e6: 2000 movs r0, #0 36e8: 4b29 ldr r3, [pc, #164] ; (3790 ) 36ea: 4798 blx r3 36ec: 0003 movs r3, r0 36ee: 2064 movs r0, #100 ; 0x64 36f0: 4358 muls r0, r3 36f2: 3050 adds r0, #80 ; 0x50 36f4: 21a0 movs r1, #160 ; 0xa0 36f6: 4b28 ldr r3, [pc, #160] ; (3798 ) 36f8: 4798 blx r3 36fa: b280 uxth r0, r0 36fc: 19c0 adds r0, r0, r7 36fe: 82a0 strh r0, [r4, #20] 3700: e6a7 b.n 3452 LV_ASSERT_MEM(new_obj); 3702: 4b0d ldr r3, [pc, #52] ; (3738 ) 3704: 9300 str r3, [sp, #0] 3706: 22f0 movs r2, #240 ; 0xf0 3708: 490c ldr r1, [pc, #48] ; (373c ) 370a: 3003 adds r0, #3 370c: 4d0c ldr r5, [pc, #48] ; (3740 ) 370e: 47a8 blx r5 3710: 0022 movs r2, r4 3712: 2300 movs r3, #0 3714: 4810 ldr r0, [pc, #64] ; (3758 ) 3716: 490c ldr r1, [pc, #48] ; (3748 ) 3718: 4788 blx r1 371a: e7fe b.n 371a new_obj->coords.y2 = parent->coords.y1 + LV_OBJ_DEF_HEIGHT; 371c: 2000 movs r0, #0 371e: 4b1c ldr r3, [pc, #112] ; (3790 ) 3720: 4798 blx r3 3722: 0003 movs r3, r0 3724: 2032 movs r0, #50 ; 0x32 3726: 4358 muls r0, r3 3728: 3050 adds r0, #80 ; 0x50 372a: 21a0 movs r1, #160 ; 0xa0 372c: 4b1a ldr r3, [pc, #104] ; (3798 ) 372e: 4798 blx r3 3730: b280 uxth r0, r0 3732: e7c0 b.n 36b6 3734: 000017ad .word 0x000017ad 3738: 000258c4 .word 0x000258c4 373c: 00025c2c .word 0x00025c2c 3740: 00012159 .word 0x00012159 3744: 00025d20 .word 0x00025d20 3748: 000017b5 .word 0x000017b5 374c: 00010d75 .word 0x00010d75 3750: 00025cbc .word 0x00025cbc 3754: 00011de5 .word 0x00011de5 3758: 00025854 .word 0x00025854 375c: 00012975 .word 0x00012975 3760: 00005021 .word 0x00005021 3764: 00004a51 .word 0x00004a51 3768: 00010d81 .word 0x00010d81 376c: 00010da9 .word 0x00010da9 3770: 00011dd1 .word 0x00011dd1 3774: 00005b71 .word 0x00005b71 3778: 000069e5 .word 0x000069e5 377c: 00001aad .word 0x00001aad 3780: 000021a5 .word 0x000021a5 3784: 000023d9 .word 0x000023d9 3788: 0000243d .word 0x0000243d 378c: 00002979 .word 0x00002979 3790: 00010dd1 .word 0x00010dd1 3794: 00003349 .word 0x00003349 3798: 0001c0a5 .word 0x0001c0a5 new_obj->coords.x2 = parent->coords.x2; 379c: 4653 mov r3, sl 379e: 2214 movs r2, #20 37a0: 5e9b ldrsh r3, [r3, r2] 37a2: 82a3 strh r3, [r4, #20] new_obj->coords.x1 = parent->coords.x2 - LV_OBJ_DEF_WIDTH; 37a4: 4653 mov r3, sl 37a6: 8a9f ldrh r7, [r3, #20] 37a8: 2000 movs r0, #0 37aa: 4b21 ldr r3, [pc, #132] ; (3830 ) 37ac: 4798 blx r3 37ae: 2364 movs r3, #100 ; 0x64 37b0: 4343 muls r3, r0 37b2: 3350 adds r3, #80 ; 0x50 37b4: 2240 movs r2, #64 ; 0x40 37b6: 32ff adds r2, #255 ; 0xff 37b8: 2001 movs r0, #1 37ba: 4293 cmp r3, r2 37bc: d90a bls.n 37d4 37be: 2000 movs r0, #0 37c0: 4b1b ldr r3, [pc, #108] ; (3830 ) 37c2: 4798 blx r3 37c4: 0003 movs r3, r0 37c6: 2064 movs r0, #100 ; 0x64 37c8: 4358 muls r0, r3 37ca: 3050 adds r0, #80 ; 0x50 37cc: 21a0 movs r1, #160 ; 0xa0 37ce: 4b19 ldr r3, [pc, #100] ; (3834 ) 37d0: 4798 blx r3 37d2: b280 uxth r0, r0 37d4: 1a38 subs r0, r7, r0 37d6: 8220 strh r0, [r4, #16] 37d8: e63b b.n 3452 if(parent != NULL) lv_theme_apply(new_obj, LV_THEME_OBJ); 37da: 4653 mov r3, sl 37dc: 2b00 cmp r3, #0 37de: d004 beq.n 37ea 37e0: 2102 movs r1, #2 37e2: 0020 movs r0, r4 37e4: 4b14 ldr r3, [pc, #80] ; (3838 ) 37e6: 4798 blx r3 37e8: e007 b.n 37fa else lv_theme_apply(new_obj, LV_THEME_SCR); 37ea: 2101 movs r1, #1 37ec: 0020 movs r0, r4 37ee: 4b12 ldr r3, [pc, #72] ; (3838 ) 37f0: 4798 blx r3 37f2: e00b b.n 380c if(parent != NULL) { 37f4: 4653 mov r3, sl 37f6: 2b00 cmp r3, #0 37f8: d008 beq.n 380c parent->signal_cb(parent, LV_SIGNAL_CHILD_CHG, new_obj); 37fa: 4653 mov r3, sl 37fc: 69db ldr r3, [r3, #28] 37fe: 0022 movs r2, r4 3800: 2101 movs r1, #1 3802: 4650 mov r0, sl 3804: 4798 blx r3 lv_obj_invalidate(new_obj); 3806: 0020 movs r0, r4 3808: 4b0c ldr r3, [pc, #48] ; (383c ) 380a: 4798 blx r3 LV_LOG_INFO("Object create ready"); 380c: 4b0c ldr r3, [pc, #48] ; (3840 ) 380e: 9300 str r3, [sp, #0] 3810: 4b0c ldr r3, [pc, #48] ; (3844 ) 3812: 2288 movs r2, #136 ; 0x88 3814: 32ff adds r2, #255 ; 0xff 3816: 490c ldr r1, [pc, #48] ; (3848 ) 3818: 2001 movs r0, #1 381a: 4d0c ldr r5, [pc, #48] ; (384c ) 381c: 47a8 blx r5 } 381e: 0020 movs r0, r4 3820: b003 add sp, #12 3822: bc3c pop {r2, r3, r4, r5} 3824: 4690 mov r8, r2 3826: 4699 mov r9, r3 3828: 46a2 mov sl, r4 382a: 46ab mov fp, r5 382c: bdf0 pop {r4, r5, r6, r7, pc} 382e: 46c0 nop ; (mov r8, r8) 3830: 00010dd1 .word 0x00010dd1 3834: 0001c0a5 .word 0x0001c0a5 3838: 000140e5 .word 0x000140e5 383c: 00002869 .word 0x00002869 3840: 00025d0c .word 0x00025d0c 3844: 000258c4 .word 0x000258c4 3848: 00025c2c .word 0x00025c2c 384c: 00012159 .word 0x00012159 00003850 : { 3850: b5f0 push {r4, r5, r6, r7, lr} 3852: b085 sub sp, #20 3854: 0004 movs r4, r0 3856: 000d movs r5, r1 3858: 0016 movs r6, r2 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 385a: 4b31 ldr r3, [pc, #196] ; (3920 ) 385c: 4798 blx r3 385e: 2800 cmp r0, #0 3860: d10c bne.n 387c 3862: 4b30 ldr r3, [pc, #192] ; (3924 ) 3864: 9300 str r3, [sp, #0] 3866: 4a30 ldr r2, [pc, #192] ; (3928 ) 3868: 4930 ldr r1, [pc, #192] ; (392c ) 386a: 3003 adds r0, #3 386c: 4d30 ldr r5, [pc, #192] ; (3930 ) 386e: 47a8 blx r5 3870: 0022 movs r2, r4 3872: 2300 movs r3, #0 3874: 482f ldr r0, [pc, #188] ; (3934 ) 3876: 4930 ldr r1, [pc, #192] ; (3938 ) 3878: 4788 blx r1 387a: e7fe b.n 387a if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 387c: 0020 movs r0, r4 387e: 4b2f ldr r3, [pc, #188] ; (393c ) 3880: 4798 blx r3 3882: 42a8 cmp r0, r5 3884: d03b beq.n 38fe lv_obj_invalidate(obj); 3886: 0020 movs r0, r4 3888: 4b2d ldr r3, [pc, #180] ; (3940 ) 388a: 4798 blx r3 lv_obj_get_coords(obj, &ori); 388c: a902 add r1, sp, #8 388e: 0020 movs r0, r4 3890: 4b2c ldr r3, [pc, #176] ; (3944 ) 3892: 4798 blx r3 obj->coords.y2 = obj->coords.y1 + h - 1; 3894: 3e01 subs r6, #1 3896: 8a63 ldrh r3, [r4, #18] 3898: 199e adds r6, r3, r6 389a: 82e6 strh r6, [r4, #22] if(lv_obj_get_base_dir(obj) == LV_BIDI_DIR_RTL) { 389c: 0020 movs r0, r4 389e: 4b2a ldr r3, [pc, #168] ; (3948 ) 38a0: 4798 blx r3 38a2: 2801 cmp r0, #1 38a4: d031 beq.n 390a obj->coords.x2 = obj->coords.x1 + w - 1; 38a6: 3d01 subs r5, #1 38a8: 8a23 ldrh r3, [r4, #16] 38aa: 18ed adds r5, r5, r3 38ac: 82a5 strh r5, [r4, #20] obj->signal_cb(obj, LV_SIGNAL_COORD_CHG, &ori); 38ae: aa02 add r2, sp, #8 38b0: 2102 movs r1, #2 38b2: 0020 movs r0, r4 38b4: 69e3 ldr r3, [r4, #28] 38b6: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 38b8: 0020 movs r0, r4 38ba: 4b24 ldr r3, [pc, #144] ; (394c ) 38bc: 4798 blx r3 if(par != NULL) par->signal_cb(par, LV_SIGNAL_CHILD_CHG, obj); 38be: 2800 cmp r0, #0 38c0: d003 beq.n 38ca 38c2: 69c3 ldr r3, [r0, #28] 38c4: 0022 movs r2, r4 38c6: 2101 movs r1, #1 38c8: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 38ca: 1d26 adds r6, r4, #4 38cc: 0030 movs r0, r6 38ce: 4b20 ldr r3, [pc, #128] ; (3950 ) 38d0: 4798 blx r3 38d2: 1e05 subs r5, r0, #0 38d4: d00a beq.n 38ec 38d6: 4f1f ldr r7, [pc, #124] ; (3954 ) i->signal_cb(i, LV_SIGNAL_PARENT_SIZE_CHG, &ori); 38d8: aa02 add r2, sp, #8 38da: 2103 movs r1, #3 38dc: 0028 movs r0, r5 38de: 69eb ldr r3, [r5, #28] 38e0: 4798 blx r3 _LV_LL_READ(obj->child_ll, i) { 38e2: 0029 movs r1, r5 38e4: 0030 movs r0, r6 38e6: 47b8 blx r7 38e8: 1e05 subs r5, r0, #0 38ea: d1f5 bne.n 38d8 lv_obj_invalidate(obj); 38ec: 0020 movs r0, r4 38ee: 4b14 ldr r3, [pc, #80] ; (3940 ) 38f0: 4798 blx r3 if(obj->realign.auto_realign) lv_obj_realign(obj); 38f2: 2349 movs r3, #73 ; 0x49 38f4: 5ce3 ldrb r3, [r4, r3] 38f6: 07db lsls r3, r3, #31 38f8: d40d bmi.n 3916 } 38fa: b005 add sp, #20 38fc: bdf0 pop {r4, r5, r6, r7, pc} if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) { 38fe: 0020 movs r0, r4 3900: 4b15 ldr r3, [pc, #84] ; (3958 ) 3902: 4798 blx r3 3904: 42b0 cmp r0, r6 3906: d1be bne.n 3886 3908: e7f7 b.n 38fa obj->coords.x1 = obj->coords.x2 - w + 1; 390a: 2301 movs r3, #1 390c: 1b5b subs r3, r3, r5 390e: 8aa5 ldrh r5, [r4, #20] 3910: 18ed adds r5, r5, r3 3912: 8225 strh r5, [r4, #16] 3914: e7cb b.n 38ae if(obj->realign.auto_realign) lv_obj_realign(obj); 3916: 0020 movs r0, r4 3918: 4b10 ldr r3, [pc, #64] ; (395c ) 391a: 4798 blx r3 391c: e7ed b.n 38fa 391e: 46c0 nop ; (mov r8, r8) 3920: 000017ad .word 0x000017ad 3924: 00025954 .word 0x00025954 3928: 000002e5 .word 0x000002e5 392c: 00025c2c .word 0x00025c2c 3930: 00012159 .word 0x00012159 3934: 00025d20 .word 0x00025d20 3938: 000017b5 .word 0x000017b5 393c: 000024a1 .word 0x000024a1 3940: 00002869 .word 0x00002869 3944: 0000237d .word 0x0000237d 3948: 00003349 .word 0x00003349 394c: 000021a5 .word 0x000021a5 3950: 00011e85 .word 0x00011e85 3954: 00011e9d .word 0x00011e9d 3958: 000024f5 .word 0x000024f5 395c: 00002f2d .word 0x00002f2d 00003960 : { 3960: b530 push {r4, r5, lr} 3962: b083 sub sp, #12 3964: 0004 movs r4, r0 3966: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3968: 4b0d ldr r3, [pc, #52] ; (39a0 ) 396a: 4798 blx r3 396c: 2800 cmp r0, #0 396e: d10c bne.n 398a 3970: 4b0c ldr r3, [pc, #48] ; (39a4 ) 3972: 9300 str r3, [sp, #0] 3974: 4a0c ldr r2, [pc, #48] ; (39a8 ) 3976: 490d ldr r1, [pc, #52] ; (39ac ) 3978: 3003 adds r0, #3 397a: 4d0d ldr r5, [pc, #52] ; (39b0 ) 397c: 47a8 blx r5 397e: 0022 movs r2, r4 3980: 2300 movs r3, #0 3982: 480c ldr r0, [pc, #48] ; (39b4 ) 3984: 490c ldr r1, [pc, #48] ; (39b8 ) 3986: 4788 blx r1 3988: e7fe b.n 3988 lv_obj_set_size(obj, lv_obj_get_width(obj), h); 398a: 0020 movs r0, r4 398c: 4b0b ldr r3, [pc, #44] ; (39bc ) 398e: 4798 blx r3 3990: 0001 movs r1, r0 3992: 002a movs r2, r5 3994: 0020 movs r0, r4 3996: 4b0a ldr r3, [pc, #40] ; (39c0 ) 3998: 4798 blx r3 } 399a: b003 add sp, #12 399c: bd30 pop {r4, r5, pc} 399e: 46c0 nop ; (mov r8, r8) 39a0: 000017ad .word 0x000017ad 39a4: 00025964 .word 0x00025964 39a8: 00000327 .word 0x00000327 39ac: 00025c2c .word 0x00025c2c 39b0: 00012159 .word 0x00012159 39b4: 00025d20 .word 0x00025d20 39b8: 000017b5 .word 0x000017b5 39bc: 000024a1 .word 0x000024a1 39c0: 00003851 .word 0x00003851 000039c4 : { 39c4: b530 push {r4, r5, lr} 39c6: b083 sub sp, #12 39c8: 0004 movs r4, r0 39ca: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39cc: 4b0c ldr r3, [pc, #48] ; (3a00 ) 39ce: 4798 blx r3 39d0: 2800 cmp r0, #0 39d2: d007 beq.n 39e4 return (obj->protect & prot) == 0 ? false : true; 39d4: 233c movs r3, #60 ; 0x3c 39d6: 5ce0 ldrb r0, [r4, r3] 39d8: 4028 ands r0, r5 39da: 1e43 subs r3, r0, #1 39dc: 4198 sbcs r0, r3 39de: b2c0 uxtb r0, r0 } 39e0: b003 add sp, #12 39e2: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 39e4: 4b07 ldr r3, [pc, #28] ; (3a04 ) 39e6: 9300 str r3, [sp, #0] 39e8: 4a07 ldr r2, [pc, #28] ; (3a08 ) 39ea: 4908 ldr r1, [pc, #32] ; (3a0c ) 39ec: 3003 adds r0, #3 39ee: 4d08 ldr r5, [pc, #32] ; (3a10 ) 39f0: 47a8 blx r5 39f2: 0022 movs r2, r4 39f4: 2300 movs r3, #0 39f6: 4807 ldr r0, [pc, #28] ; (3a14 ) 39f8: 4907 ldr r1, [pc, #28] ; (3a18 ) 39fa: 4788 blx r1 39fc: e7fe b.n 39fc 39fe: 46c0 nop ; (mov r8, r8) 3a00: 000017ad .word 0x000017ad 3a04: 00025ba0 .word 0x00025ba0 3a08: 00000ad7 .word 0x00000ad7 3a0c: 00025c2c .word 0x00025c2c 3a10: 00012159 .word 0x00012159 3a14: 00025d20 .word 0x00025d20 3a18: 000017b5 .word 0x000017b5 00003a1c : { 3a1c: b570 push {r4, r5, r6, lr} 3a1e: b084 sub sp, #16 3a20: 0005 movs r5, r0 3a22: 000e movs r6, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3a24: 4b10 ldr r3, [pc, #64] ; (3a68 ) 3a26: 4798 blx r3 3a28: 2800 cmp r0, #0 3a2a: d005 beq.n 3a38 if(part < _LV_OBJ_PART_REAL_LAST) return ((lv_obj_t *)obj)->state; 3a2c: 2e3f cmp r6, #63 ; 0x3f 3a2e: d810 bhi.n 3a52 3a30: 233d movs r3, #61 ; 0x3d 3a32: 5ce8 ldrb r0, [r5, r3] } 3a34: b004 add sp, #16 3a36: bd70 pop {r4, r5, r6, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3a38: 4b0c ldr r3, [pc, #48] ; (3a6c ) 3a3a: 9300 str r3, [sp, #0] 3a3c: 4a0c ldr r2, [pc, #48] ; (3a70 ) 3a3e: 490d ldr r1, [pc, #52] ; (3a74 ) 3a40: 3003 adds r0, #3 3a42: 4c0d ldr r4, [pc, #52] ; (3a78 ) 3a44: 47a0 blx r4 3a46: 002a movs r2, r5 3a48: 2300 movs r3, #0 3a4a: 480c ldr r0, [pc, #48] ; (3a7c ) 3a4c: 490c ldr r1, [pc, #48] ; (3a80 ) 3a4e: 4788 blx r1 3a50: e7fe b.n 3a50 info.part = part; 3a52: ac03 add r4, sp, #12 3a54: 7026 strb r6, [r4, #0] info.result = LV_STATE_DEFAULT; 3a56: 2300 movs r3, #0 3a58: 7063 strb r3, [r4, #1] lv_signal_send((lv_obj_t *)obj, LV_SIGNAL_GET_STATE_DSC, &info); 3a5a: 0022 movs r2, r4 3a5c: 2109 movs r1, #9 3a5e: 0028 movs r0, r5 3a60: 4b08 ldr r3, [pc, #32] ; (3a84 ) 3a62: 4798 blx r3 return info.result; 3a64: 7860 ldrb r0, [r4, #1] 3a66: e7e5 b.n 3a34 3a68: 000017ad .word 0x000017ad 3a6c: 00025bb4 .word 0x00025bb4 3a70: 00000ade .word 0x00000ade 3a74: 00025c2c .word 0x00025c2c 3a78: 00012159 .word 0x00012159 3a7c: 00025d20 .word 0x00025d20 3a80: 000017b5 .word 0x000017b5 3a84: 0000208d .word 0x0000208d 00003a88 <_lv_obj_get_style_int>: { 3a88: b5f0 push {r4, r5, r6, r7, lr} 3a8a: 46de mov lr, fp 3a8c: 4657 mov r7, sl 3a8e: 464e mov r6, r9 3a90: b5c0 push {r6, r7, lr} 3a92: b084 sub sp, #16 3a94: 0006 movs r6, r0 3a96: 000d movs r5, r1 3a98: 0017 movs r7, r2 attr.full = prop_ori >> 8; 3a9a: 0a13 lsrs r3, r2, #8 3a9c: 9301 str r3, [sp, #4] while(parent) { 3a9e: 2800 cmp r0, #0 3aa0: d030 beq.n 3b04 <_lv_obj_get_style_int+0x7c> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3aa2: 4b24 ldr r3, [pc, #144] ; (3b34 <_lv_obj_get_style_int+0xac>) 3aa4: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 3aa6: 4b24 ldr r3, [pc, #144] ; (3b38 <_lv_obj_get_style_int+0xb0>) 3aa8: 469a mov sl, r3 res = _lv_style_list_get_int(dsc, prop, &value_act); 3aaa: 4b24 ldr r3, [pc, #144] ; (3b3c <_lv_obj_get_style_int+0xb4>) 3aac: 4699 mov r9, r3 3aae: e00c b.n 3aca <_lv_obj_get_style_int+0x42> if(res == LV_RES_OK) return value_act; 3ab0: ab02 add r3, sp, #8 3ab2: 3306 adds r3, #6 3ab4: 2000 movs r0, #0 3ab6: 5e18 ldrsh r0, [r3, r0] } 3ab8: b004 add sp, #16 3aba: bc1c pop {r2, r3, r4} 3abc: 4691 mov r9, r2 3abe: 469a mov sl, r3 3ac0: 46a3 mov fp, r4 3ac2: bdf0 pop {r4, r5, r6, r7, pc} 3ac4: 2500 movs r5, #0 while(parent) { 3ac6: 2e00 cmp r6, #0 3ac8: d01d beq.n 3b06 <_lv_obj_get_style_int+0x7e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3aca: 0029 movs r1, r5 3acc: 0030 movs r0, r6 3ace: 47d8 blx fp 3ad0: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 3ad2: 0029 movs r1, r5 3ad4: 0030 movs r0, r6 3ad6: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3ad8: 0204 lsls r4, r0, #8 3ada: 193c adds r4, r7, r4 3adc: b2a4 uxth r4, r4 res = _lv_style_list_get_int(dsc, prop, &value_act); 3ade: ab02 add r3, sp, #8 3ae0: 1d9a adds r2, r3, #6 3ae2: 0021 movs r1, r4 3ae4: 9800 ldr r0, [sp, #0] 3ae6: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 3ae8: 2801 cmp r0, #1 3aea: d0e1 beq.n 3ab0 <_lv_obj_get_style_int+0x28> if(attr.bits.inherit == 0) break; 3aec: 466b mov r3, sp 3aee: 791b ldrb r3, [r3, #4] 3af0: b25b sxtb r3, r3 3af2: 2b00 cmp r3, #0 3af4: da07 bge.n 3b06 <_lv_obj_get_style_int+0x7e> if(part != LV_OBJ_PART_MAIN) { 3af6: 2d00 cmp r5, #0 3af8: d1e4 bne.n 3ac4 <_lv_obj_get_style_int+0x3c> parent = lv_obj_get_parent(parent); 3afa: 0030 movs r0, r6 3afc: 4b10 ldr r3, [pc, #64] ; (3b40 <_lv_obj_get_style_int+0xb8>) 3afe: 4798 blx r3 3b00: 0006 movs r6, r0 3b02: e7df b.n 3ac4 <_lv_obj_get_style_int+0x3c> while(parent) { 3b04: 0014 movs r4, r2 switch(prop) { 3b06: 4b0f ldr r3, [pc, #60] ; (3b44 <_lv_obj_get_style_int+0xbc>) 3b08: 401c ands r4, r3 3b0a: 2c22 cmp r4, #34 ; 0x22 3b0c: d010 beq.n 3b30 <_lv_obj_get_style_int+0xa8> 3b0e: d807 bhi.n 3b20 <_lv_obj_get_style_int+0x98> return LV_DPI / 20; 3b10: 2006 movs r0, #6 switch(prop) { 3b12: 2c03 cmp r4, #3 3b14: d0d0 beq.n 3ab8 <_lv_obj_get_style_int+0x30> 3b16: 2c07 cmp r4, #7 3b18: d108 bne.n 3b2c <_lv_obj_get_style_int+0xa4> return LV_IMG_ZOOM_NONE; 3b1a: 2080 movs r0, #128 ; 0x80 3b1c: 0040 lsls r0, r0, #1 3b1e: e7cb b.n 3ab8 <_lv_obj_get_style_int+0x30> return LV_BORDER_SIDE_FULL; 3b20: 200f movs r0, #15 switch(prop) { 3b22: 2c31 cmp r4, #49 ; 0x31 3b24: d0c8 beq.n 3ab8 <_lv_obj_get_style_int+0x30> return LV_DPI / 8; 3b26: 3001 adds r0, #1 switch(prop) { 3b28: 2cc0 cmp r4, #192 ; 0xc0 3b2a: d0c5 beq.n 3ab8 <_lv_obj_get_style_int+0x30> return 0; 3b2c: 2000 movs r0, #0 3b2e: e7c3 b.n 3ab8 <_lv_obj_get_style_int+0x30> return 255; 3b30: 20ff movs r0, #255 ; 0xff 3b32: e7c1 b.n 3ab8 <_lv_obj_get_style_int+0x30> 3b34: 00002549 .word 0x00002549 3b38: 00003a1d .word 0x00003a1d 3b3c: 00006b61 .word 0x00006b61 3b40: 000021a5 .word 0x000021a5 3b44: ffff80ff .word 0xffff80ff 00003b48 <_lv_obj_get_style_color>: { 3b48: b5f0 push {r4, r5, r6, r7, lr} 3b4a: 46de mov lr, fp 3b4c: 4657 mov r7, sl 3b4e: 464e mov r6, r9 3b50: b5c0 push {r6, r7, lr} 3b52: b084 sub sp, #16 3b54: 0006 movs r6, r0 3b56: 000d movs r5, r1 3b58: 0017 movs r7, r2 attr.full = prop_ori >> 8; 3b5a: 0a13 lsrs r3, r2, #8 3b5c: 9301 str r3, [sp, #4] while(parent) { 3b5e: 2800 cmp r0, #0 3b60: d028 beq.n 3bb4 <_lv_obj_get_style_color+0x6c> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3b62: 4b1c ldr r3, [pc, #112] ; (3bd4 <_lv_obj_get_style_color+0x8c>) 3b64: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 3b66: 4b1c ldr r3, [pc, #112] ; (3bd8 <_lv_obj_get_style_color+0x90>) 3b68: 469a mov sl, r3 res = _lv_style_list_get_color(dsc, prop, &value_act); 3b6a: 4b1c ldr r3, [pc, #112] ; (3bdc <_lv_obj_get_style_color+0x94>) 3b6c: 4699 mov r9, r3 3b6e: e005 b.n 3b7c <_lv_obj_get_style_color+0x34> if(res == LV_RES_OK) return value_act; 3b70: ab03 add r3, sp, #12 3b72: 8818 ldrh r0, [r3, #0] 3b74: e025 b.n 3bc2 <_lv_obj_get_style_color+0x7a> 3b76: 2500 movs r5, #0 while(parent) { 3b78: 2e00 cmp r6, #0 3b7a: d01c beq.n 3bb6 <_lv_obj_get_style_color+0x6e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3b7c: 0029 movs r1, r5 3b7e: 0030 movs r0, r6 3b80: 47d8 blx fp 3b82: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 3b84: 0029 movs r1, r5 3b86: 0030 movs r0, r6 3b88: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3b8a: 0204 lsls r4, r0, #8 3b8c: 193c adds r4, r7, r4 3b8e: b2a4 uxth r4, r4 res = _lv_style_list_get_color(dsc, prop, &value_act); 3b90: aa03 add r2, sp, #12 3b92: 0021 movs r1, r4 3b94: 9800 ldr r0, [sp, #0] 3b96: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 3b98: 2801 cmp r0, #1 3b9a: d0e9 beq.n 3b70 <_lv_obj_get_style_color+0x28> if(attr.bits.inherit == 0) break; 3b9c: 466b mov r3, sp 3b9e: 791b ldrb r3, [r3, #4] 3ba0: b25b sxtb r3, r3 3ba2: 2b00 cmp r3, #0 3ba4: da07 bge.n 3bb6 <_lv_obj_get_style_color+0x6e> if(part != LV_OBJ_PART_MAIN) { 3ba6: 2d00 cmp r5, #0 3ba8: d1e5 bne.n 3b76 <_lv_obj_get_style_color+0x2e> parent = lv_obj_get_parent(parent); 3baa: 0030 movs r0, r6 3bac: 4b0c ldr r3, [pc, #48] ; (3be0 <_lv_obj_get_style_color+0x98>) 3bae: 4798 blx r3 3bb0: 0006 movs r6, r0 3bb2: e7e0 b.n 3b76 <_lv_obj_get_style_color+0x2e> while(parent) { 3bb4: 0014 movs r4, r2 switch(prop) { 3bb6: 4b0b ldr r3, [pc, #44] ; (3be4 <_lv_obj_get_style_color+0x9c>) 3bb8: 401c ands r4, r3 3bba: 3c29 subs r4, #41 ; 0x29 return LV_COLOR_BLACK; 3bbc: 2000 movs r0, #0 switch(prop) { 3bbe: 2c01 cmp r4, #1 3bc0: d905 bls.n 3bce <_lv_obj_get_style_color+0x86> } 3bc2: b004 add sp, #16 3bc4: bc1c pop {r2, r3, r4} 3bc6: 4691 mov r9, r2 3bc8: 469a mov sl, r3 3bca: 46a3 mov fp, r4 3bcc: bdf0 pop {r4, r5, r6, r7, pc} return LV_COLOR_WHITE; 3bce: 4b06 ldr r3, [pc, #24] ; (3be8 <_lv_obj_get_style_color+0xa0>) 3bd0: 8818 ldrh r0, [r3, #0] 3bd2: e7f6 b.n 3bc2 <_lv_obj_get_style_color+0x7a> 3bd4: 00002549 .word 0x00002549 3bd8: 00003a1d .word 0x00003a1d 3bdc: 00006c35 .word 0x00006c35 3be0: 000021a5 .word 0x000021a5 3be4: ffff80ff .word 0xffff80ff 3be8: 000258b8 .word 0x000258b8 00003bec <_lv_obj_get_style_opa>: { 3bec: b5f0 push {r4, r5, r6, r7, lr} 3bee: 46de mov lr, fp 3bf0: 4657 mov r7, sl 3bf2: 464e mov r6, r9 3bf4: b5c0 push {r6, r7, lr} 3bf6: b084 sub sp, #16 3bf8: 0006 movs r6, r0 3bfa: 000d movs r5, r1 3bfc: 0017 movs r7, r2 attr.full = prop_ori >> 8; 3bfe: 0a13 lsrs r3, r2, #8 3c00: 9301 str r3, [sp, #4] while(parent) { 3c02: 2800 cmp r0, #0 3c04: d029 beq.n 3c5a <_lv_obj_get_style_opa+0x6e> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3c06: 4b1e ldr r3, [pc, #120] ; (3c80 <_lv_obj_get_style_opa+0x94>) 3c08: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 3c0a: 4b1e ldr r3, [pc, #120] ; (3c84 <_lv_obj_get_style_opa+0x98>) 3c0c: 469a mov sl, r3 res = _lv_style_list_get_opa(dsc, prop, &value_act); 3c0e: 4b1e ldr r3, [pc, #120] ; (3c88 <_lv_obj_get_style_opa+0x9c>) 3c10: 4699 mov r9, r3 3c12: e005 b.n 3c20 <_lv_obj_get_style_opa+0x34> if(res == LV_RES_OK) return value_act; 3c14: ab02 add r3, sp, #8 3c16: 79d8 ldrb r0, [r3, #7] 3c18: e02a b.n 3c70 <_lv_obj_get_style_opa+0x84> 3c1a: 2500 movs r5, #0 while(parent) { 3c1c: 2e00 cmp r6, #0 3c1e: d01d beq.n 3c5c <_lv_obj_get_style_opa+0x70> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3c20: 0029 movs r1, r5 3c22: 0030 movs r0, r6 3c24: 47d8 blx fp 3c26: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 3c28: 0029 movs r1, r5 3c2a: 0030 movs r0, r6 3c2c: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3c2e: 0204 lsls r4, r0, #8 3c30: 193c adds r4, r7, r4 3c32: b2a4 uxth r4, r4 res = _lv_style_list_get_opa(dsc, prop, &value_act); 3c34: ab02 add r3, sp, #8 3c36: 1dda adds r2, r3, #7 3c38: 0021 movs r1, r4 3c3a: 9800 ldr r0, [sp, #0] 3c3c: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 3c3e: 2801 cmp r0, #1 3c40: d0e8 beq.n 3c14 <_lv_obj_get_style_opa+0x28> if(attr.bits.inherit == 0) break; 3c42: 466b mov r3, sp 3c44: 791b ldrb r3, [r3, #4] 3c46: b25b sxtb r3, r3 3c48: 2b00 cmp r3, #0 3c4a: da07 bge.n 3c5c <_lv_obj_get_style_opa+0x70> if(part != LV_OBJ_PART_MAIN) { 3c4c: 2d00 cmp r5, #0 3c4e: d1e4 bne.n 3c1a <_lv_obj_get_style_opa+0x2e> parent = lv_obj_get_parent(parent); 3c50: 0030 movs r0, r6 3c52: 4b0e ldr r3, [pc, #56] ; (3c8c <_lv_obj_get_style_opa+0xa0>) 3c54: 4798 blx r3 3c56: 0006 movs r6, r0 3c58: e7df b.n 3c1a <_lv_obj_get_style_opa+0x2e> while(parent) { 3c5a: 0014 movs r4, r2 switch(prop) { 3c5c: 4b0c ldr r3, [pc, #48] ; (3c90 <_lv_obj_get_style_opa+0xa4>) 3c5e: 401c ands r4, r3 3c60: 2c6d cmp r4, #109 ; 0x6d 3c62: d00b beq.n 3c7c <_lv_obj_get_style_opa+0x90> 3c64: 4b0b ldr r3, [pc, #44] ; (3c94 <_lv_obj_get_style_opa+0xa8>) 3c66: 429c cmp r4, r3 3c68: d008 beq.n 3c7c <_lv_obj_get_style_opa+0x90> 3c6a: 2c2c cmp r4, #44 ; 0x2c 3c6c: d006 beq.n 3c7c <_lv_obj_get_style_opa+0x90> return LV_OPA_COVER; 3c6e: 20ff movs r0, #255 ; 0xff } 3c70: b004 add sp, #16 3c72: bc1c pop {r2, r3, r4} 3c74: 4691 mov r9, r2 3c76: 469a mov sl, r3 3c78: 46a3 mov fp, r4 3c7a: bdf0 pop {r4, r5, r6, r7, pc} return LV_OPA_TRANSP; 3c7c: 2000 movs r0, #0 3c7e: e7f7 b.n 3c70 <_lv_obj_get_style_opa+0x84> 3c80: 00002549 .word 0x00002549 3c84: 00003a1d .word 0x00003a1d 3c88: 00006d01 .word 0x00006d01 3c8c: 000021a5 .word 0x000021a5 3c90: ffff80ff .word 0xffff80ff 3c94: 000080ad .word 0x000080ad 00003c98 <_lv_obj_get_style_ptr>: { 3c98: b5f0 push {r4, r5, r6, r7, lr} 3c9a: 46de mov lr, fp 3c9c: 4657 mov r7, sl 3c9e: 464e mov r6, r9 3ca0: b5c0 push {r6, r7, lr} 3ca2: b084 sub sp, #16 3ca4: 0006 movs r6, r0 3ca6: 000d movs r5, r1 3ca8: 0017 movs r7, r2 attr.full = prop_ori >> 8; 3caa: 0a13 lsrs r3, r2, #8 3cac: 9301 str r3, [sp, #4] while(parent) { 3cae: 2800 cmp r0, #0 3cb0: d02c beq.n 3d0c <_lv_obj_get_style_ptr+0x74> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3cb2: 4b1f ldr r3, [pc, #124] ; (3d30 <_lv_obj_get_style_ptr+0x98>) 3cb4: 469b mov fp, r3 lv_state_t state = lv_obj_get_state(parent, part); 3cb6: 4b1f ldr r3, [pc, #124] ; (3d34 <_lv_obj_get_style_ptr+0x9c>) 3cb8: 469a mov sl, r3 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 3cba: 4b1f ldr r3, [pc, #124] ; (3d38 <_lv_obj_get_style_ptr+0xa0>) 3cbc: 4699 mov r9, r3 3cbe: e009 b.n 3cd4 <_lv_obj_get_style_ptr+0x3c> if(res == LV_RES_OK) return value_act; 3cc0: 9803 ldr r0, [sp, #12] } 3cc2: b004 add sp, #16 3cc4: bc1c pop {r2, r3, r4} 3cc6: 4691 mov r9, r2 3cc8: 469a mov sl, r3 3cca: 46a3 mov fp, r4 3ccc: bdf0 pop {r4, r5, r6, r7, pc} 3cce: 2500 movs r5, #0 while(parent) { 3cd0: 2e00 cmp r6, #0 3cd2: d01c beq.n 3d0e <_lv_obj_get_style_ptr+0x76> lv_style_list_t * dsc = lv_obj_get_style_list(parent, part); 3cd4: 0029 movs r1, r5 3cd6: 0030 movs r0, r6 3cd8: 47d8 blx fp 3cda: 9000 str r0, [sp, #0] lv_state_t state = lv_obj_get_state(parent, part); 3cdc: 0029 movs r1, r5 3cde: 0030 movs r0, r6 3ce0: 47d0 blx sl prop = (uint16_t)prop_ori + ((uint16_t)state << LV_STYLE_STATE_POS); 3ce2: 0204 lsls r4, r0, #8 3ce4: 193c adds r4, r7, r4 3ce6: b2a4 uxth r4, r4 res = _lv_style_list_get_ptr(dsc, prop, &value_act); 3ce8: aa03 add r2, sp, #12 3cea: 0021 movs r1, r4 3cec: 9800 ldr r0, [sp, #0] 3cee: 47c8 blx r9 if(res == LV_RES_OK) return value_act; 3cf0: 2801 cmp r0, #1 3cf2: d0e5 beq.n 3cc0 <_lv_obj_get_style_ptr+0x28> if(attr.bits.inherit == 0) break; 3cf4: 466b mov r3, sp 3cf6: 791b ldrb r3, [r3, #4] 3cf8: b25b sxtb r3, r3 3cfa: 2b00 cmp r3, #0 3cfc: da07 bge.n 3d0e <_lv_obj_get_style_ptr+0x76> if(part != LV_OBJ_PART_MAIN) { 3cfe: 2d00 cmp r5, #0 3d00: d1e5 bne.n 3cce <_lv_obj_get_style_ptr+0x36> parent = lv_obj_get_parent(parent); 3d02: 0030 movs r0, r6 3d04: 4b0d ldr r3, [pc, #52] ; (3d3c <_lv_obj_get_style_ptr+0xa4>) 3d06: 4798 blx r3 3d08: 0006 movs r6, r0 3d0a: e7e0 b.n 3cce <_lv_obj_get_style_ptr+0x36> while(parent) { 3d0c: 0014 movs r4, r2 switch(prop) { 3d0e: 4b0c ldr r3, [pc, #48] ; (3d40 <_lv_obj_get_style_ptr+0xa8>) 3d10: 401c ands r4, r3 3d12: 2cbe cmp r4, #190 ; 0xbe 3d14: d009 beq.n 3d2a <_lv_obj_get_style_ptr+0x92> 3d16: 4b0b ldr r3, [pc, #44] ; (3d44 <_lv_obj_get_style_ptr+0xac>) 3d18: 429c cmp r4, r3 3d1a: d003 beq.n 3d24 <_lv_obj_get_style_ptr+0x8c> 3d1c: 2c7e cmp r4, #126 ; 0x7e 3d1e: d001 beq.n 3d24 <_lv_obj_get_style_ptr+0x8c> return NULL; 3d20: 2000 movs r0, #0 3d22: e7ce b.n 3cc2 <_lv_obj_get_style_ptr+0x2a> return lv_theme_get_font_normal(); 3d24: 4b08 ldr r3, [pc, #32] ; (3d48 <_lv_obj_get_style_ptr+0xb0>) 3d26: 4798 blx r3 3d28: e7cb b.n 3cc2 <_lv_obj_get_style_ptr+0x2a> return &lv_anim_path_def; 3d2a: 4808 ldr r0, [pc, #32] ; (3d4c <_lv_obj_get_style_ptr+0xb4>) 3d2c: e7c9 b.n 3cc2 <_lv_obj_get_style_ptr+0x2a> 3d2e: 46c0 nop ; (mov r8, r8) 3d30: 00002549 .word 0x00002549 3d34: 00003a1d .word 0x00003a1d 3d38: 00006dd5 .word 0x00006dd5 3d3c: 000021a5 .word 0x000021a5 3d40: ffff80ff .word 0xffff80ff 3d44: 0000808e .word 0x0000808e 3d48: 000140d9 .word 0x000140d9 3d4c: 0002a74c .word 0x0002a74c 00003d50 : { 3d50: b570 push {r4, r5, r6, lr} lv_style_trans_t * tr = a->var; 3d52: 6804 ldr r4, [r0, #0] lv_style_property_t prop_tmp = tr->prop; 3d54: 88a5 ldrh r5, [r4, #4] if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3d56: 230f movs r3, #15 3d58: 402b ands r3, r5 3d5a: 2b08 cmp r3, #8 3d5c: dd13 ble.n 3d86 else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3d5e: 2b0b cmp r3, #11 3d60: dd18 ble.n 3d94 else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3d62: 2b0d cmp r3, #13 3d64: dd1d ble.n 3da2 tr->start_value._ptr = _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp); 3d66: 79a1 ldrb r1, [r4, #6] 3d68: 002a movs r2, r5 3d6a: 6820 ldr r0, [r4, #0] 3d6c: 4b10 ldr r3, [pc, #64] ; (3db0 ) 3d6e: 4798 blx r3 3d70: 60a0 str r0, [r4, #8] tr->prop = 0; 3d72: 2300 movs r3, #0 3d74: 80a3 strh r3, [r4, #4] trans_del(tr->obj, tr->part, prop_tmp, tr); 3d76: 79a1 ldrb r1, [r4, #6] 3d78: 0023 movs r3, r4 3d7a: 002a movs r2, r5 3d7c: 6820 ldr r0, [r4, #0] 3d7e: 4e0d ldr r6, [pc, #52] ; (3db4 ) 3d80: 47b0 blx r6 tr->prop = prop_tmp; 3d82: 80a5 strh r5, [r4, #4] } 3d84: bd70 pop {r4, r5, r6, pc} tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp); 3d86: 79a1 ldrb r1, [r4, #6] 3d88: 002a movs r2, r5 3d8a: 6820 ldr r0, [r4, #0] 3d8c: 4b0a ldr r3, [pc, #40] ; (3db8 ) 3d8e: 4798 blx r3 3d90: 8120 strh r0, [r4, #8] 3d92: e7ee b.n 3d72 tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp); 3d94: 79a1 ldrb r1, [r4, #6] 3d96: 002a movs r2, r5 3d98: 6820 ldr r0, [r4, #0] 3d9a: 4b08 ldr r3, [pc, #32] ; (3dbc ) 3d9c: 4798 blx r3 3d9e: 8120 strh r0, [r4, #8] 3da0: e7e7 b.n 3d72 tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp); 3da2: 79a1 ldrb r1, [r4, #6] 3da4: 002a movs r2, r5 3da6: 6820 ldr r0, [r4, #0] 3da8: 4b05 ldr r3, [pc, #20] ; (3dc0 ) 3daa: 4798 blx r3 3dac: 7220 strb r0, [r4, #8] 3dae: e7e0 b.n 3d72 3db0: 00003c99 .word 0x00003c99 3db4: 00002579 .word 0x00002579 3db8: 00003a89 .word 0x00003a89 3dbc: 00003b49 .word 0x00003b49 3dc0: 00003bed .word 0x00003bed 00003dc4 : { 3dc4: b5f0 push {r4, r5, r6, r7, lr} 3dc6: 46de mov lr, fp 3dc8: 4657 mov r7, sl 3dca: 464e mov r6, r9 3dcc: 4645 mov r5, r8 3dce: b5e0 push {r5, r6, r7, lr} 3dd0: b09f sub sp, #124 ; 0x7c 3dd2: 0004 movs r4, r0 3dd4: 468b mov fp, r1 if(obj->state == new_state) return; 3dd6: 233d movs r3, #61 ; 0x3d 3dd8: 5cc3 ldrb r3, [r0, r3] 3dda: 428b cmp r3, r1 3ddc: d100 bne.n 3de0 3dde: e23e b.n 425e LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3de0: 4bd6 ldr r3, [pc, #856] ; (413c ) 3de2: 4798 blx r3 3de4: 2800 cmp r0, #0 3de6: d008 beq.n 3dfa lv_state_t prev_state = obj->state; 3de8: 233d movs r3, #61 ; 0x3d 3dea: 5ce2 ldrb r2, [r4, r3] 3dec: 4691 mov r9, r2 obj->state = new_state; 3dee: 465a mov r2, fp 3df0: 54e2 strb r2, [r4, r3] for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 3df2: 2300 movs r3, #0 3df4: 9302 str r3, [sp, #8] lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3df6: 46ca mov sl, r9 3df8: e1e8 b.n 41cc LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 3dfa: 4bd1 ldr r3, [pc, #836] ; (4140 ) 3dfc: 9300 str r3, [sp, #0] 3dfe: 4ad1 ldr r2, [pc, #836] ; (4144 ) 3e00: 49d1 ldr r1, [pc, #836] ; (4148 ) 3e02: 3003 adds r0, #3 3e04: 4dd1 ldr r5, [pc, #836] ; (414c ) 3e06: 47a8 blx r5 3e08: 0022 movs r2, r4 3e0a: 2300 movs r3, #0 3e0c: 48d0 ldr r0, [pc, #832] ; (4150 ) 3e0e: 49d1 ldr r1, [pc, #836] ; (4154 ) 3e10: 4788 blx r1 3e12: e7fe b.n 3e12 style_list->skip_trans = 1; 3e14: 7973 ldrb r3, [r6, #5] 3e16: 2204 movs r2, #4 3e18: 4313 orrs r3, r2 3e1a: 7173 strb r3, [r6, #5] obj->state = prev_state; 3e1c: 233d movs r3, #61 ; 0x3d 3e1e: 4699 mov r9, r3 3e20: 4652 mov r2, sl 3e22: 54e2 strb r2, [r4, r3] lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); 3e24: 002a movs r2, r5 3e26: 9902 ldr r1, [sp, #8] 3e28: 0020 movs r0, r4 3e2a: 4fcb ldr r7, [pc, #812] ; (4158 ) 3e2c: 47b8 blx r7 3e2e: 9009 str r0, [sp, #36] ; 0x24 obj->state = new_state; 3e30: 464b mov r3, r9 3e32: 465a mov r2, fp 3e34: 54e2 strb r2, [r4, r3] lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); 3e36: 002a movs r2, r5 3e38: 9902 ldr r1, [sp, #8] 3e3a: 0020 movs r0, r4 3e3c: 47b8 blx r7 3e3e: 4680 mov r8, r0 style_list->skip_trans = 0; 3e40: 7973 ldrb r3, [r6, #5] 3e42: 2204 movs r2, #4 3e44: 4393 bics r3, r2 3e46: 7173 strb r3, [r6, #5] if(int1 == int2) return NULL; 3e48: 9b09 ldr r3, [sp, #36] ; 0x24 3e4a: 4283 cmp r3, r0 3e4c: d04b beq.n 3ee6 obj->state = prev_state; 3e4e: 263d movs r6, #61 ; 0x3d 3e50: 4653 mov r3, sl 3e52: 55a3 strb r3, [r4, r6] int1 = _lv_obj_get_style_int(obj, part, prop); 3e54: 002a movs r2, r5 3e56: 9902 ldr r1, [sp, #8] 3e58: 0020 movs r0, r4 3e5a: 4bbf ldr r3, [pc, #764] ; (4158 ) 3e5c: 4798 blx r3 3e5e: 0002 movs r2, r0 3e60: 4681 mov r9, r0 obj->state = new_state; 3e62: 465b mov r3, fp 3e64: 55a3 strb r3, [r4, r6] _lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */ 3e66: 0029 movs r1, r5 3e68: 9803 ldr r0, [sp, #12] 3e6a: 4bbc ldr r3, [pc, #752] ; (415c ) 3e6c: 4798 blx r3 if(prop == LV_STYLE_RADIUS) { 3e6e: 2d01 cmp r5, #1 3e70: d100 bne.n 3e74 3e72: e096 b.n 3fa2 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3e74: 48ba ldr r0, [pc, #744] ; (4160 ) 3e76: 4bbb ldr r3, [pc, #748] ; (4164 ) 3e78: 4798 blx r3 3e7a: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 3e7c: 4baf ldr r3, [pc, #700] ; (413c ) 3e7e: 4798 blx r3 3e80: 2800 cmp r0, #0 3e82: d100 bne.n 3e86 3e84: e0a2 b.n 3fcc if(tr == NULL) return NULL; 3e86: 2e00 cmp r6, #0 3e88: d02d beq.n 3ee6 tr->start_value._int = int1; 3e8a: 464b mov r3, r9 3e8c: 8133 strh r3, [r6, #8] tr->end_value._int = int2; 3e8e: 4643 mov r3, r8 3e90: 81b3 strh r3, [r6, #12] tr->obj = obj; 3e92: 6034 str r4, [r6, #0] tr->prop = props[i]; 3e94: 80b5 strh r5, [r6, #4] tr->part = part; 3e96: 466b mov r3, sp 3e98: 7a1b ldrb r3, [r3, #8] 3e9a: 71b3 strb r3, [r6, #6] lv_anim_init(&a); 3e9c: a80e add r0, sp, #56 ; 0x38 3e9e: 4bb2 ldr r3, [pc, #712] ; (4168 ) 3ea0: 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; 3ea2: 960e str r6, [sp, #56] ; 0x38 * 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; 3ea4: 4bb1 ldr r3, [pc, #708] ; (416c ) 3ea6: 930f str r3, [sp, #60] ; 0x3c * @param a pointer to an initialized `lv_anim_t` variable * @param start_cb a function call when the animation starts */ static inline void lv_anim_set_start_cb(lv_anim_t * a, lv_anim_ready_cb_t start_cb) { a->start_cb = start_cb; 3ea8: 4bb1 ldr r3, [pc, #708] ; (4170 ) 3eaa: 9310 str r3, [sp, #64] ; 0x40 * @param a pointer to an initialized `lv_anim_t` variable * @param ready_cb a function call when the animation is ready */ static inline void lv_anim_set_ready_cb(lv_anim_t * a, lv_anim_ready_cb_t ready_cb) { a->ready_cb = ready_cb; 3eac: 4bb1 ldr r3, [pc, #708] ; (4174 ) 3eae: 9311 str r3, [sp, #68] ; 0x44 a->start = start; 3eb0: 2300 movs r3, #0 3eb2: 9314 str r3, [sp, #80] ; 0x50 a->end = end; 3eb4: 33ff adds r3, #255 ; 0xff 3eb6: 9315 str r3, [sp, #84] ; 0x54 lv_anim_set_time(&a, time); 3eb8: 9b08 ldr r3, [sp, #32] 3eba: 9316 str r3, [sp, #88] ; 0x58 a->act_time = (int32_t)(-delay); 3ebc: 9b07 ldr r3, [sp, #28] 3ebe: 425b negs r3, r3 3ec0: 9317 str r3, [sp, #92] ; 0x5c 3ec2: 9b06 ldr r3, [sp, #24] 3ec4: 0018 movs r0, r3 3ec6: 3008 adds r0, #8 uint8_t * d8 = (uint8_t *)dst; 3ec8: aa12 add r2, sp, #72 ; 0x48 *d8 = *s8; 3eca: 7819 ldrb r1, [r3, #0] 3ecc: 7011 strb r1, [r2, #0] d8++; 3ece: 3201 adds r2, #1 s8++; 3ed0: 3301 adds r3, #1 while(len) { 3ed2: 4283 cmp r3, r0 3ed4: d1f9 bne.n 3eca a.early_apply = 0; 3ed6: a80e add r0, sp, #56 ; 0x38 3ed8: 2236 movs r2, #54 ; 0x36 3eda: 5c83 ldrb r3, [r0, r2] 3edc: 2101 movs r1, #1 3ede: 438b bics r3, r1 3ee0: 5483 strb r3, [r0, r2] lv_anim_start(&a); 3ee2: 4ba5 ldr r3, [pc, #660] ; (4178 ) 3ee4: 4798 blx r3 3ee6: 9b04 ldr r3, [sp, #16] 3ee8: 3302 adds r3, #2 3eea: 9304 str r3, [sp, #16] for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) { 3eec: 2b0c cmp r3, #12 3eee: d100 bne.n 3ef2 3ef0: e166 b.n 41c0 if(props[i] != 0) { 3ef2: ab0b add r3, sp, #44 ; 0x2c 3ef4: 9a04 ldr r2, [sp, #16] 3ef6: 5ad5 ldrh r5, [r2, r3] 3ef8: 2d00 cmp r5, #0 3efa: d0f4 beq.n 3ee6 _lv_style_list_add_trans_style(style_list); 3efc: 9805 ldr r0, [sp, #20] 3efe: 4b9f ldr r3, [pc, #636] ; (417c ) 3f00: 4798 blx r3 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 3f02: 9902 ldr r1, [sp, #8] 3f04: 0020 movs r0, r4 3f06: 4b9e ldr r3, [pc, #632] ; (4180 ) 3f08: 4798 blx r3 3f0a: 0006 movs r6, r0 lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); 3f0c: 4b9d ldr r3, [pc, #628] ; (4184 ) 3f0e: 4798 blx r3 3f10: 9003 str r0, [sp, #12] if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ 3f12: 230f movs r3, #15 3f14: 402b ands r3, r5 3f16: 2b08 cmp r3, #8 3f18: dc00 bgt.n 3f1c 3f1a: e77b b.n 3e14 else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/ 3f1c: 2b0b cmp r3, #11 3f1e: dd63 ble.n 3fe8 else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/ 3f20: 2b0d cmp r3, #13 3f22: dd00 ble.n 3f26 3f24: e0bb b.n 409e style_list->skip_trans = 1; 3f26: 7973 ldrb r3, [r6, #5] 3f28: 2204 movs r2, #4 3f2a: 4313 orrs r3, r2 3f2c: 7173 strb r3, [r6, #5] obj->state = prev_state; 3f2e: 233d movs r3, #61 ; 0x3d 3f30: 4699 mov r9, r3 3f32: 4652 mov r2, sl 3f34: 54e2 strb r2, [r4, r3] lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); 3f36: 002a movs r2, r5 3f38: 9902 ldr r1, [sp, #8] 3f3a: 0020 movs r0, r4 3f3c: 4f92 ldr r7, [pc, #584] ; (4188 ) 3f3e: 47b8 blx r7 3f40: 4680 mov r8, r0 obj->state = new_state; 3f42: 464b mov r3, r9 3f44: 465a mov r2, fp 3f46: 54e2 strb r2, [r4, r3] lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); 3f48: 002a movs r2, r5 3f4a: 9902 ldr r1, [sp, #8] 3f4c: 0020 movs r0, r4 3f4e: 47b8 blx r7 3f50: 0007 movs r7, r0 style_list->skip_trans = 0; 3f52: 7973 ldrb r3, [r6, #5] 3f54: 2204 movs r2, #4 3f56: 4393 bics r3, r2 3f58: 7173 strb r3, [r6, #5] if(o1 == o2) return NULL; 3f5a: 4643 mov r3, r8 3f5c: 4283 cmp r3, r0 3f5e: d0c2 beq.n 3ee6 obj->state = prev_state; 3f60: 263d movs r6, #61 ; 0x3d 3f62: 4653 mov r3, sl 3f64: 55a3 strb r3, [r4, r6] o1 = _lv_obj_get_style_opa(obj, part, prop); 3f66: 002a movs r2, r5 3f68: 9902 ldr r1, [sp, #8] 3f6a: 0020 movs r0, r4 3f6c: 4b86 ldr r3, [pc, #536] ; (4188 ) 3f6e: 4798 blx r3 3f70: 0002 movs r2, r0 3f72: 9009 str r0, [sp, #36] ; 0x24 obj->state = new_state; 3f74: 465b mov r3, fp 3f76: 55a3 strb r3, [r4, r6] _lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */ 3f78: 0029 movs r1, r5 3f7a: 9803 ldr r0, [sp, #12] 3f7c: 4b83 ldr r3, [pc, #524] ; (418c ) 3f7e: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 3f80: 4877 ldr r0, [pc, #476] ; (4160 ) 3f82: 4b78 ldr r3, [pc, #480] ; (4164 ) 3f84: 4798 blx r3 3f86: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 3f88: 4b6c ldr r3, [pc, #432] ; (413c ) 3f8a: 4798 blx r3 3f8c: 2800 cmp r0, #0 3f8e: d079 beq.n 4084 if(tr == NULL) return NULL; 3f90: 2e00 cmp r6, #0 3f92: d0a8 beq.n 3ee6 tr->start_value._opa = o1; 3f94: 466b mov r3, sp 3f96: 2224 movs r2, #36 ; 0x24 3f98: 189b adds r3, r3, r2 3f9a: 781b ldrb r3, [r3, #0] 3f9c: 7233 strb r3, [r6, #8] tr->end_value._opa = o2; 3f9e: 7337 strb r7, [r6, #12] 3fa0: e777 b.n 3e92 if(int1 == LV_RADIUS_CIRCLE || int2 == LV_RADIUS_CIRCLE) { 3fa2: 4b7b ldr r3, [pc, #492] ; (4190 ) 3fa4: 4599 cmp r9, r3 3fa6: d100 bne.n 3faa 3fa8: e160 b.n 426c 3faa: 4598 cmp r8, r3 3fac: d000 beq.n 3fb0 3fae: e761 b.n 3e74 lv_coord_t whalf = lv_obj_get_width(obj) / 2; 3fb0: 0020 movs r0, r4 3fb2: 4f78 ldr r7, [pc, #480] ; (4194 ) 3fb4: 47b8 blx r7 3fb6: 0fc6 lsrs r6, r0, #31 3fb8: 1836 adds r6, r6, r0 3fba: 1076 asrs r6, r6, #1 3fbc: b236 sxth r6, r6 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 3fbe: 0020 movs r0, r4 3fc0: 47b8 blx r7 3fc2: 0fc3 lsrs r3, r0, #31 3fc4: 181b adds r3, r3, r0 3fc6: 105b asrs r3, r3, #1 3fc8: b21b sxth r3, r3 3fca: e167 b.n 429c LV_ASSERT_MEM(tr); 3fcc: 4b72 ldr r3, [pc, #456] ; (4198 ) 3fce: 9300 str r3, [sp, #0] 3fd0: 22eb movs r2, #235 ; 0xeb 3fd2: 0112 lsls r2, r2, #4 3fd4: 495c ldr r1, [pc, #368] ; (4148 ) 3fd6: 3003 adds r0, #3 3fd8: 4c5c ldr r4, [pc, #368] ; (414c ) 3fda: 47a0 blx r4 3fdc: 0032 movs r2, r6 3fde: 2300 movs r3, #0 3fe0: 486e ldr r0, [pc, #440] ; (419c ) 3fe2: 495c ldr r1, [pc, #368] ; (4154 ) 3fe4: 4788 blx r1 3fe6: e7fe b.n 3fe6 style_list->skip_trans = 1; 3fe8: 7973 ldrb r3, [r6, #5] 3fea: 2204 movs r2, #4 3fec: 4313 orrs r3, r2 3fee: 7173 strb r3, [r6, #5] obj->state = prev_state; 3ff0: 233d movs r3, #61 ; 0x3d 3ff2: 4699 mov r9, r3 3ff4: 4652 mov r2, sl 3ff6: 54e2 strb r2, [r4, r3] lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); 3ff8: 002a movs r2, r5 3ffa: 9902 ldr r1, [sp, #8] 3ffc: 0020 movs r0, r4 3ffe: 4b68 ldr r3, [pc, #416] ; (41a0 ) 4000: 4698 mov r8, r3 4002: 4798 blx r3 4004: 1c07 adds r7, r0, #0 obj->state = new_state; 4006: 464b mov r3, r9 4008: 465a mov r2, fp 400a: 54e2 strb r2, [r4, r3] lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); 400c: 002a movs r2, r5 400e: 9902 ldr r1, [sp, #8] 4010: 0020 movs r0, r4 4012: 47c0 blx r8 4014: 466b mov r3, sp 4016: 8498 strh r0, [r3, #36] ; 0x24 style_list->skip_trans = 0; 4018: 7973 ldrb r3, [r6, #5] 401a: 2204 movs r2, #4 401c: 4393 bics r3, r2 401e: 7173 strb r3, [r6, #5] if(c1.full == c2.full) return NULL; 4020: b2bf uxth r7, r7 4022: b283 uxth r3, r0 4024: 429f cmp r7, r3 4026: d100 bne.n 402a 4028: e75d b.n 3ee6 obj->state = prev_state; 402a: 263d movs r6, #61 ; 0x3d 402c: 4653 mov r3, sl 402e: 55a3 strb r3, [r4, r6] c1 = _lv_obj_get_style_color(obj, part, prop); 4030: 002a movs r2, r5 4032: 9902 ldr r1, [sp, #8] 4034: 0020 movs r0, r4 4036: 4b5a ldr r3, [pc, #360] ; (41a0 ) 4038: 4798 blx r3 403a: 1c07 adds r7, r0, #0 obj->state = new_state; 403c: 465b mov r3, fp 403e: 55a3 strb r3, [r4, r6] _lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */ 4040: 1c02 adds r2, r0, #0 4042: 0029 movs r1, r5 4044: 9803 ldr r0, [sp, #12] 4046: 4b57 ldr r3, [pc, #348] ; (41a4 ) 4048: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 404a: 4845 ldr r0, [pc, #276] ; (4160 ) 404c: 4b45 ldr r3, [pc, #276] ; (4164 ) 404e: 4798 blx r3 4050: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 4052: 4b3a ldr r3, [pc, #232] ; (413c ) 4054: 4798 blx r3 4056: 2800 cmp r0, #0 4058: d007 beq.n 406a if(tr == NULL) return NULL; 405a: 2e00 cmp r6, #0 405c: d100 bne.n 4060 405e: e742 b.n 3ee6 tr->start_value._color = c1; 4060: 8137 strh r7, [r6, #8] tr->end_value._color = c2; 4062: 466b mov r3, sp 4064: 8c9b ldrh r3, [r3, #36] ; 0x24 4066: 81b3 strh r3, [r6, #12] 4068: e713 b.n 3e92 LV_ASSERT_MEM(tr); 406a: 4b4b ldr r3, [pc, #300] ; (4198 ) 406c: 9300 str r3, [sp, #0] 406e: 4a4e ldr r2, [pc, #312] ; (41a8 ) 4070: 4935 ldr r1, [pc, #212] ; (4148 ) 4072: 3003 adds r0, #3 4074: 4c35 ldr r4, [pc, #212] ; (414c ) 4076: 47a0 blx r4 4078: 0032 movs r2, r6 407a: 2300 movs r3, #0 407c: 4847 ldr r0, [pc, #284] ; (419c ) 407e: 4935 ldr r1, [pc, #212] ; (4154 ) 4080: 4788 blx r1 4082: e7fe b.n 4082 LV_ASSERT_MEM(tr); 4084: 4b44 ldr r3, [pc, #272] ; (4198 ) 4086: 9300 str r3, [sp, #0] 4088: 4a48 ldr r2, [pc, #288] ; (41ac ) 408a: 492f ldr r1, [pc, #188] ; (4148 ) 408c: 3003 adds r0, #3 408e: 4c2f ldr r4, [pc, #188] ; (414c ) 4090: 47a0 blx r4 4092: 0032 movs r2, r6 4094: 2300 movs r3, #0 4096: 4841 ldr r0, [pc, #260] ; (419c ) 4098: 492e ldr r1, [pc, #184] ; (4154 ) 409a: 4788 blx r1 409c: e7fe b.n 409c obj->state = prev_state; 409e: 233d movs r3, #61 ; 0x3d 40a0: 4699 mov r9, r3 40a2: 4652 mov r2, sl 40a4: 54e2 strb r2, [r4, r3] style_list->skip_trans = 1; 40a6: 7973 ldrb r3, [r6, #5] 40a8: 2204 movs r2, #4 40aa: 4313 orrs r3, r2 40ac: 7173 strb r3, [r6, #5] const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); 40ae: 002a movs r2, r5 40b0: 9902 ldr r1, [sp, #8] 40b2: 0020 movs r0, r4 40b4: 4f3e ldr r7, [pc, #248] ; (41b0 ) 40b6: 47b8 blx r7 40b8: 900a str r0, [sp, #40] ; 0x28 obj->state = new_state; 40ba: 464b mov r3, r9 40bc: 465a mov r2, fp 40be: 54e2 strb r2, [r4, r3] const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); 40c0: 002a movs r2, r5 40c2: 9902 ldr r1, [sp, #8] 40c4: 0020 movs r0, r4 40c6: 47b8 blx r7 40c8: 0007 movs r7, r0 40ca: 900e str r0, [sp, #56] ; 0x38 style_list->skip_trans = 0; 40cc: 7973 ldrb r3, [r6, #5] 40ce: 2204 movs r2, #4 40d0: 4393 bics r3, r2 40d2: 7173 strb r3, [r6, #5] if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; 40d4: a90e add r1, sp, #56 ; 0x38 40d6: a80a add r0, sp, #40 ; 0x28 40d8: 4b36 ldr r3, [pc, #216] ; (41b4 ) 40da: 4798 blx r3 40dc: 2800 cmp r0, #0 40de: d100 bne.n 40e2 40e0: e701 b.n 3ee6 obj->state = prev_state; 40e2: 263d movs r6, #61 ; 0x3d 40e4: 4653 mov r3, sl 40e6: 55a3 strb r3, [r4, r6] p1 = _lv_obj_get_style_ptr(obj, part, prop); 40e8: 002a movs r2, r5 40ea: 9902 ldr r1, [sp, #8] 40ec: 0020 movs r0, r4 40ee: 4b30 ldr r3, [pc, #192] ; (41b0 ) 40f0: 4798 blx r3 40f2: 4681 mov r9, r0 40f4: 900a str r0, [sp, #40] ; 0x28 obj->state = new_state; 40f6: 465b mov r3, fp 40f8: 55a3 strb r3, [r4, r6] _lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */ 40fa: 0002 movs r2, r0 40fc: 0029 movs r1, r5 40fe: 9803 ldr r0, [sp, #12] 4100: 4b2d ldr r3, [pc, #180] ; (41b8 ) 4102: 4798 blx r3 tr = _lv_ll_ins_head(&LV_GC_ROOT(_lv_obj_style_trans_ll)); 4104: 4816 ldr r0, [pc, #88] ; (4160 ) 4106: 4b17 ldr r3, [pc, #92] ; (4164 ) 4108: 4798 blx r3 410a: 0006 movs r6, r0 LV_ASSERT_MEM(tr); 410c: 4b0b ldr r3, [pc, #44] ; (413c ) 410e: 4798 blx r3 4110: 2800 cmp r0, #0 4112: d006 beq.n 4122 if(tr == NULL) return NULL; 4114: 2e00 cmp r6, #0 4116: d100 bne.n 411a 4118: e6e5 b.n 3ee6 tr->start_value._ptr = p1; 411a: 464b mov r3, r9 411c: 60b3 str r3, [r6, #8] tr->end_value._ptr = p2; 411e: 60f7 str r7, [r6, #12] 4120: e6b7 b.n 3e92 LV_ASSERT_MEM(tr); 4122: 4b1d ldr r3, [pc, #116] ; (4198 ) 4124: 9300 str r3, [sp, #0] 4126: 4a25 ldr r2, [pc, #148] ; (41bc ) 4128: 4907 ldr r1, [pc, #28] ; (4148 ) 412a: 3003 adds r0, #3 412c: 4c07 ldr r4, [pc, #28] ; (414c ) 412e: 47a0 blx r4 4130: 0032 movs r2, r6 4132: 2300 movs r3, #0 4134: 4819 ldr r0, [pc, #100] ; (419c ) 4136: 4907 ldr r1, [pc, #28] ; (4154 ) 4138: 4788 blx r1 413a: e7fe b.n 413a 413c: 000017ad .word 0x000017ad 4140: 00025a08 .word 0x00025a08 4144: 00000637 .word 0x00000637 4148: 00025c2c .word 0x00025c2c 414c: 00012159 .word 0x00012159 4150: 00025d20 .word 0x00025d20 4154: 000017b5 .word 0x000017b5 4158: 00003a89 .word 0x00003a89 415c: 00005fad .word 0x00005fad 4160: 20004dc4 .word 0x20004dc4 4164: 00011de5 .word 0x00011de5 4168: 000111b9 .word 0x000111b9 416c: 00003225 .word 0x00003225 4170: 00003d51 .word 0x00003d51 4174: 0000267d .word 0x0000267d 4178: 00011279 .word 0x00011279 417c: 00006aad .word 0x00006aad 4180: 00002549 .word 0x00002549 4184: 00006965 .word 0x00006965 4188: 00003bed .word 0x00003bed 418c: 000062bd .word 0x000062bd 4190: 00007fff .word 0x00007fff 4194: 000024a1 .word 0x000024a1 4198: 00025c1c .word 0x00025c1c 419c: 00025854 .word 0x00025854 41a0: 00003b49 .word 0x00003b49 41a4: 00006135 .word 0x00006135 41a8: 00000ec4 .word 0x00000ec4 41ac: 00000ed9 .word 0x00000ed9 41b0: 00003c99 .word 0x00003c99 41b4: 0001c641 .word 0x0001c641 41b8: 00006431 .word 0x00006431 41bc: 00000eed .word 0x00000eed for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) { 41c0: 9b02 ldr r3, [sp, #8] 41c2: 3301 adds r3, #1 41c4: b2db uxtb r3, r3 41c6: 9302 str r3, [sp, #8] 41c8: 2b40 cmp r3, #64 ; 0x40 41ca: d044 beq.n 4256 lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); 41cc: 9902 ldr r1, [sp, #8] 41ce: 0020 movs r0, r4 41d0: 4b36 ldr r3, [pc, #216] ; (42ac ) 41d2: 4798 blx r3 41d4: 9005 str r0, [sp, #20] if(style_list == NULL) break; /*No more style lists*/ 41d6: 2800 cmp r0, #0 41d8: d03d beq.n 4256 if(style_list->ignore_trans) continue; 41da: 7943 ldrb r3, [r0, #5] 41dc: 071b lsls r3, r3, #28 41de: d4ef bmi.n 41c0 _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) 41e0: 22b0 movs r2, #176 ; 0xb0 41e2: 9e02 ldr r6, [sp, #8] 41e4: 0031 movs r1, r6 41e6: 0020 movs r0, r4 41e8: 4b31 ldr r3, [pc, #196] ; (42b0 ) 41ea: 4798 blx r3 41ec: 9008 str r0, [sp, #32] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 41ee: 22b1 movs r2, #177 ; 0xb1 41f0: 0031 movs r1, r6 41f2: 0020 movs r0, r4 41f4: 4b2e ldr r3, [pc, #184] ; (42b0 ) 41f6: 4798 blx r3 41f8: 9007 str r0, [sp, #28] _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) 41fa: 22be movs r2, #190 ; 0xbe 41fc: 0031 movs r1, r6 41fe: 0020 movs r0, r4 4200: 4b2c ldr r3, [pc, #176] ; (42b4 ) 4202: 4798 blx r3 4204: 9006 str r0, [sp, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t, _int, scalar) 4206: 22b2 movs r2, #178 ; 0xb2 4208: 0031 movs r1, r6 420a: 0020 movs r0, r4 420c: 4b28 ldr r3, [pc, #160] ; (42b0 ) 420e: 4798 blx r3 props[0] = lv_obj_get_style_transition_prop_1(obj, part); 4210: ad0b add r5, sp, #44 ; 0x2c 4212: 8028 strh r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t, _int, scalar) 4214: 22b3 movs r2, #179 ; 0xb3 4216: 0031 movs r1, r6 4218: 0020 movs r0, r4 421a: 4b25 ldr r3, [pc, #148] ; (42b0 ) 421c: 4798 blx r3 props[1] = lv_obj_get_style_transition_prop_2(obj, part); 421e: 8068 strh r0, [r5, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t, _int, scalar) 4220: 22b4 movs r2, #180 ; 0xb4 4222: 0031 movs r1, r6 4224: 0020 movs r0, r4 4226: 4b22 ldr r3, [pc, #136] ; (42b0 ) 4228: 4798 blx r3 props[2] = lv_obj_get_style_transition_prop_3(obj, part); 422a: 80a8 strh r0, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 422c: 22b5 movs r2, #181 ; 0xb5 422e: 0031 movs r1, r6 4230: 0020 movs r0, r4 4232: 4b1f ldr r3, [pc, #124] ; (42b0 ) 4234: 4798 blx r3 props[3] = lv_obj_get_style_transition_prop_4(obj, part); 4236: 80e8 strh r0, [r5, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 4238: 22b6 movs r2, #182 ; 0xb6 423a: 0031 movs r1, r6 423c: 0020 movs r0, r4 423e: 4b1c ldr r3, [pc, #112] ; (42b0 ) 4240: 4798 blx r3 props[4] = lv_obj_get_style_transition_prop_5(obj, part); 4242: 8128 strh r0, [r5, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 4244: 22b7 movs r2, #183 ; 0xb7 4246: 0031 movs r1, r6 4248: 0020 movs r0, r4 424a: 4b19 ldr r3, [pc, #100] ; (42b0 ) 424c: 4798 blx r3 props[5] = lv_obj_get_style_transition_prop_6(obj, part); 424e: 8168 strh r0, [r5, #10] 4250: 2300 movs r3, #0 4252: 9304 str r3, [sp, #16] 4254: e64d b.n 3ef2 lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 4256: 21ff movs r1, #255 ; 0xff 4258: 0020 movs r0, r4 425a: 4b17 ldr r3, [pc, #92] ; (42b8 ) 425c: 4798 blx r3 } 425e: b01f add sp, #124 ; 0x7c 4260: bc3c pop {r2, r3, r4, r5} 4262: 4690 mov r8, r2 4264: 4699 mov r9, r3 4266: 46a2 mov sl, r4 4268: 46ab mov fp, r5 426a: bdf0 pop {r4, r5, r6, r7, pc} lv_coord_t whalf = lv_obj_get_width(obj) / 2; 426c: 0020 movs r0, r4 426e: 4f13 ldr r7, [pc, #76] ; (42bc ) 4270: 47b8 blx r7 4272: 0fc6 lsrs r6, r0, #31 4274: 1836 adds r6, r6, r0 4276: 1076 asrs r6, r6, #1 4278: b236 sxth r6, r6 lv_coord_t hhalf = lv_obj_get_width(obj) / 2; 427a: 0020 movs r0, r4 427c: 47b8 blx r7 427e: 0fc3 lsrs r3, r0, #31 4280: 181b adds r3, r3, r0 4282: 105b asrs r3, r3, #1 4284: b21b sxth r3, r3 if(int1 == LV_RADIUS_CIRCLE) int1 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4286: 1c71 adds r1, r6, #1 4288: 1c5a adds r2, r3, #1 428a: 428a cmp r2, r1 428c: dd00 ble.n 4290 428e: 000a movs r2, r1 4290: b212 sxth r2, r2 4292: 4691 mov r9, r2 if(int2 == LV_RADIUS_CIRCLE) int2 = LV_MATH_MIN(whalf + 1, hhalf + 1); 4294: 4a0a ldr r2, [pc, #40] ; (42c0 ) 4296: 4590 cmp r8, r2 4298: d000 beq.n 429c 429a: e5eb b.n 3e74 429c: 3601 adds r6, #1 429e: 3301 adds r3, #1 42a0: 42b3 cmp r3, r6 42a2: dd00 ble.n 42a6 42a4: 0033 movs r3, r6 42a6: b21b sxth r3, r3 42a8: 4698 mov r8, r3 42aa: e5e3 b.n 3e74 42ac: 00002549 .word 0x00002549 42b0: 00003a89 .word 0x00003a89 42b4: 00003c99 .word 0x00003c99 42b8: 00002ff5 .word 0x00002ff5 42bc: 000024a1 .word 0x000024a1 42c0: 00007fff .word 0x00007fff 000042c4 : { 42c4: b530 push {r4, r5, lr} 42c6: b083 sub sp, #12 42c8: 0004 movs r4, r0 42ca: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 42cc: 4b0d ldr r3, [pc, #52] ; (4304 ) 42ce: 4798 blx r3 42d0: 2800 cmp r0, #0 42d2: d00a beq.n 42ea lv_state_t new_state = obj->state | state; 42d4: 233d movs r3, #61 ; 0x3d 42d6: 5ce3 ldrb r3, [r4, r3] 42d8: 0029 movs r1, r5 42da: 4319 orrs r1, r3 if(obj->state != new_state) { 42dc: 428b cmp r3, r1 42de: d002 beq.n 42e6 lv_obj_set_state(obj, new_state); 42e0: 0020 movs r0, r4 42e2: 4b09 ldr r3, [pc, #36] ; (4308 ) 42e4: 4798 blx r3 } 42e6: b003 add sp, #12 42e8: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 42ea: 4b08 ldr r3, [pc, #32] ; (430c ) 42ec: 9300 str r3, [sp, #0] 42ee: 4a08 ldr r2, [pc, #32] ; (4310 ) 42f0: 4908 ldr r1, [pc, #32] ; (4314 ) 42f2: 3003 adds r0, #3 42f4: 4d08 ldr r5, [pc, #32] ; (4318 ) 42f6: 47a8 blx r5 42f8: 0022 movs r2, r4 42fa: 2300 movs r3, #0 42fc: 4807 ldr r0, [pc, #28] ; (431c ) 42fe: 4908 ldr r1, [pc, #32] ; (4320 ) 4300: 4788 blx r1 4302: e7fe b.n 4302 4304: 000017ad .word 0x000017ad 4308: 00003dc5 .word 0x00003dc5 430c: 00025a1c .word 0x00025a1c 4310: 0000067e .word 0x0000067e 4314: 00025c2c .word 0x00025c2c 4318: 00012159 .word 0x00012159 431c: 00025d20 .word 0x00025d20 4320: 000017b5 .word 0x000017b5 00004324 : { 4324: b530 push {r4, r5, lr} 4326: b083 sub sp, #12 4328: 0004 movs r4, r0 432a: 000d movs r5, r1 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 432c: 4b0d ldr r3, [pc, #52] ; (4364 ) 432e: 4798 blx r3 4330: 2800 cmp r0, #0 4332: d00a beq.n 434a lv_state_t new_state = obj->state & (~state); 4334: 233d movs r3, #61 ; 0x3d 4336: 5ce3 ldrb r3, [r4, r3] 4338: 0019 movs r1, r3 433a: 43a9 bics r1, r5 if(obj->state != new_state) { 433c: 428b cmp r3, r1 433e: d002 beq.n 4346 lv_obj_set_state(obj, new_state); 4340: 0020 movs r0, r4 4342: 4b09 ldr r3, [pc, #36] ; (4368 ) 4344: 4798 blx r3 } 4346: b003 add sp, #12 4348: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 434a: 4b08 ldr r3, [pc, #32] ; (436c ) 434c: 9300 str r3, [sp, #0] 434e: 4a08 ldr r2, [pc, #32] ; (4370 ) 4350: 4908 ldr r1, [pc, #32] ; (4374 ) 4352: 3003 adds r0, #3 4354: 4d08 ldr r5, [pc, #32] ; (4378 ) 4356: 47a8 blx r5 4358: 0022 movs r2, r4 435a: 2300 movs r3, #0 435c: 4807 ldr r0, [pc, #28] ; (437c ) 435e: 4908 ldr r1, [pc, #32] ; (4380 ) 4360: 4788 blx r1 4362: e7fe b.n 4362 4364: 000017ad .word 0x000017ad 4368: 00003dc5 .word 0x00003dc5 436c: 00025a30 .word 0x00025a30 4370: 0000068f .word 0x0000068f 4374: 00025c2c .word 0x00025c2c 4378: 00012159 .word 0x00012159 437c: 00025d20 .word 0x00025d20 4380: 000017b5 .word 0x000017b5 00004384 : { 4384: b530 push {r4, r5, lr} 4386: b083 sub sp, #12 4388: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 438a: 4b0a ldr r3, [pc, #40] ; (43b4 ) 438c: 4798 blx r3 438e: 2800 cmp r0, #0 4390: d002 beq.n 4398 return obj->signal_cb; 4392: 69e0 ldr r0, [r4, #28] } 4394: b003 add sp, #12 4396: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4398: 4b07 ldr r3, [pc, #28] ; (43b8 ) 439a: 9300 str r3, [sp, #0] 439c: 4a07 ldr r2, [pc, #28] ; (43bc ) 439e: 4908 ldr r1, [pc, #32] ; (43c0 ) 43a0: 3003 adds r0, #3 43a2: 4d08 ldr r5, [pc, #32] ; (43c4 ) 43a4: 47a8 blx r5 43a6: 0022 movs r2, r4 43a8: 2300 movs r3, #0 43aa: 4807 ldr r0, [pc, #28] ; (43c8 ) 43ac: 4907 ldr r1, [pc, #28] ; (43cc ) 43ae: 4788 blx r1 43b0: e7fe b.n 43b0 43b2: 46c0 nop ; (mov r8, r8) 43b4: 000017ad .word 0x000017ad 43b8: 00025bc8 .word 0x00025bc8 43bc: 00000af5 .word 0x00000af5 43c0: 00025c2c .word 0x00025c2c 43c4: 00012159 .word 0x00012159 43c8: 00025d20 .word 0x00025d20 43cc: 000017b5 .word 0x000017b5 000043d0 : { 43d0: b530 push {r4, r5, lr} 43d2: b083 sub sp, #12 43d4: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 43d6: 4b0a ldr r3, [pc, #40] ; (4400 ) 43d8: 4798 blx r3 43da: 2800 cmp r0, #0 43dc: d002 beq.n 43e4 return obj->ext_attr; 43de: 6a60 ldr r0, [r4, #36] ; 0x24 } 43e0: b003 add sp, #12 43e2: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 43e4: 4b07 ldr r3, [pc, #28] ; (4404 ) 43e6: 9300 str r3, [sp, #0] 43e8: 4a07 ldr r2, [pc, #28] ; (4408 ) 43ea: 4908 ldr r1, [pc, #32] ; (440c ) 43ec: 3003 adds r0, #3 43ee: 4d08 ldr r5, [pc, #32] ; (4410 ) 43f0: 47a8 blx r5 43f2: 0022 movs r2, r4 43f4: 2300 movs r3, #0 43f6: 4807 ldr r0, [pc, #28] ; (4414 ) 43f8: 4907 ldr r1, [pc, #28] ; (4418 ) 43fa: 4788 blx r1 43fc: e7fe b.n 43fc 43fe: 46c0 nop ; (mov r8, r8) 4400: 000017ad .word 0x000017ad 4404: 00025be0 .word 0x00025be0 4408: 00000b1e .word 0x00000b1e 440c: 00025c2c .word 0x00025c2c 4410: 00012159 .word 0x00012159 4414: 00025d20 .word 0x00025d20 4418: 000017b5 .word 0x000017b5 0000441c : { 441c: b530 push {r4, r5, lr} 441e: b083 sub sp, #12 4420: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4422: 4b0a ldr r3, [pc, #40] ; (444c ) 4424: 4798 blx r3 4426: 2800 cmp r0, #0 4428: d002 beq.n 4430 return obj->group_p; 442a: 6ba0 ldr r0, [r4, #56] ; 0x38 } 442c: b003 add sp, #12 442e: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4430: 4b07 ldr r3, [pc, #28] ; (4450 ) 4432: 9300 str r3, [sp, #0] 4434: 4a07 ldr r2, [pc, #28] ; (4454 ) 4436: 4908 ldr r1, [pc, #32] ; (4458 ) 4438: 3003 adds r0, #3 443a: 4d08 ldr r5, [pc, #32] ; (445c ) 443c: 47a8 blx r5 443e: 0022 movs r2, r4 4440: 2300 movs r3, #0 4442: 4807 ldr r0, [pc, #28] ; (4460 ) 4444: 4907 ldr r1, [pc, #28] ; (4464 ) 4446: 4788 blx r1 4448: e7fe b.n 4448 444a: 46c0 nop ; (mov r8, r8) 444c: 000017ad .word 0x000017ad 4450: 00025bf4 .word 0x00025bf4 4454: 00000b6f .word 0x00000b6f 4458: 00025c2c .word 0x00025c2c 445c: 00012159 .word 0x00012159 4460: 00025d20 .word 0x00025d20 4464: 000017b5 .word 0x000017b5 00004468 : { 4468: b5f0 push {r4, r5, r6, r7, lr} 446a: b083 sub sp, #12 446c: 0005 movs r5, r0 lv_event_send(obj, LV_EVENT_DELETE, NULL); 446e: 2200 movs r2, #0 4470: 2115 movs r1, #21 4472: 4b3e ldr r3, [pc, #248] ; (456c ) 4474: 4798 blx r3 lv_group_t * group = lv_obj_get_group(obj); 4476: 0028 movs r0, r5 4478: 4b3d ldr r3, [pc, #244] ; (4570 ) 447a: 4798 blx r3 447c: 1e07 subs r7, r0, #0 if(group) lv_group_remove_obj(obj); 447e: d002 beq.n 4486 4480: 0028 movs r0, r5 4482: 4b3c ldr r3, [pc, #240] ; (4574 ) 4484: 4798 blx r3 lv_anim_del(obj, NULL); 4486: 2100 movs r1, #0 4488: 0028 movs r0, r5 448a: 4b3b ldr r3, [pc, #236] ; (4578 ) 448c: 4798 blx r3 trans_del(obj, 0xFF, 0xFF, NULL); 448e: 2300 movs r3, #0 4490: 22ff movs r2, #255 ; 0xff 4492: 21ff movs r1, #255 ; 0xff 4494: 0028 movs r0, r5 4496: 4c39 ldr r4, [pc, #228] ; (457c ) 4498: 47a0 blx r4 i = _lv_ll_get_head(&(obj->child_ll)); 449a: 1d2b adds r3, r5, #4 449c: 9301 str r3, [sp, #4] 449e: 0018 movs r0, r3 44a0: 4b37 ldr r3, [pc, #220] ; (4580 ) 44a2: 4798 blx r3 44a4: 1e04 subs r4, r0, #0 while(i != NULL) { 44a6: d00a beq.n 44be i_next = _lv_ll_get_next(&(obj->child_ll), i); 44a8: 4e36 ldr r6, [pc, #216] ; (4584 ) 44aa: 0021 movs r1, r4 44ac: 9801 ldr r0, [sp, #4] 44ae: 47b0 blx r6 44b0: 9000 str r0, [sp, #0] obj_del_core(i); 44b2: 0020 movs r0, r4 44b4: f7ff ffd8 bl 4468 i = i_next; 44b8: 9c00 ldr r4, [sp, #0] while(i != NULL) { 44ba: 2c00 cmp r4, #0 44bc: d1f5 bne.n 44aa #endif static void lv_event_mark_deleted(lv_obj_t * obj) { lv_event_temp_data_t * t = event_temp_data_head; 44be: 4b32 ldr r3, [pc, #200] ; (4588 ) 44c0: 681b ldr r3, [r3, #0] while(t) { 44c2: 2b00 cmp r3, #0 44c4: d009 beq.n 44da if(t->obj == obj) t->deleted = true; 44c6: 2201 movs r2, #1 44c8: e002 b.n 44d0 t = t->prev; 44ca: 689b ldr r3, [r3, #8] while(t) { 44cc: 2b00 cmp r3, #0 44ce: d004 beq.n 44da if(t->obj == obj) t->deleted = true; 44d0: 6819 ldr r1, [r3, #0] 44d2: 428d cmp r5, r1 44d4: d1f9 bne.n 44ca 44d6: 711a strb r2, [r3, #4] 44d8: e7f7 b.n 44ca lv_indev_t * indev = lv_indev_get_next(NULL); 44da: 2000 movs r0, #0 44dc: 4b2b ldr r3, [pc, #172] ; (458c ) 44de: 4798 blx r3 44e0: 1e04 subs r4, r0, #0 while(indev) { 44e2: d022 beq.n 452a lv_indev_reset(indev, obj); 44e4: 4e2a ldr r6, [pc, #168] ; (4590 ) 44e6: e00d b.n 4504 44e8: 0029 movs r1, r5 44ea: 0020 movs r0, r4 44ec: 47b0 blx r6 if(indev->proc.types.pointer.last_pressed == obj) { 44ee: 6be3 ldr r3, [r4, #60] ; 0x3c 44f0: 429d cmp r5, r3 44f2: d00e beq.n 4512 if(indev->group == group && obj == lv_indev_get_obj_act()) { 44f4: 6da3 ldr r3, [r4, #88] ; 0x58 44f6: 429f cmp r7, r3 44f8: d00e beq.n 4518 indev = lv_indev_get_next(indev); 44fa: 0020 movs r0, r4 44fc: 4b23 ldr r3, [pc, #140] ; (458c ) 44fe: 4798 blx r3 4500: 1e04 subs r4, r0, #0 while(indev) { 4502: d012 beq.n 452a if(indev->proc.types.pointer.act_obj == obj || indev->proc.types.pointer.last_obj == obj) { 4504: 6b63 ldr r3, [r4, #52] ; 0x34 4506: 429d cmp r5, r3 4508: d0ee beq.n 44e8 450a: 6ba3 ldr r3, [r4, #56] ; 0x38 450c: 429d cmp r5, r3 450e: d1ee bne.n 44ee 4510: e7ea b.n 44e8 indev->proc.types.pointer.last_pressed = NULL; 4512: 2300 movs r3, #0 4514: 63e3 str r3, [r4, #60] ; 0x3c 4516: e7ed b.n 44f4 if(indev->group == group && obj == lv_indev_get_obj_act()) { 4518: 4b1e ldr r3, [pc, #120] ; (4594 ) 451a: 4798 blx r3 451c: 4285 cmp r5, r0 451e: d1ec bne.n 44fa lv_indev_reset(indev, obj); 4520: 0029 movs r1, r5 4522: 0020 movs r0, r4 4524: 4b1a ldr r3, [pc, #104] ; (4590 ) 4526: 4798 blx r3 4528: e7e7 b.n 44fa obj->signal_cb(obj, LV_SIGNAL_CLEANUP, NULL); 452a: 2200 movs r2, #0 452c: 2100 movs r1, #0 452e: 0028 movs r0, r5 4530: 69eb ldr r3, [r5, #28] 4532: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 4534: 0028 movs r0, r5 4536: 4b18 ldr r3, [pc, #96] ; (4598 ) 4538: 4798 blx r3 if(par == NULL) { /*It is a screen*/ 453a: 2800 cmp r0, #0 453c: d00d beq.n 455a _lv_ll_remove(&(par->child_ll), obj); 453e: 3004 adds r0, #4 4540: 0029 movs r1, r5 4542: 4b16 ldr r3, [pc, #88] ; (459c ) 4544: 4798 blx r3 if(obj->ext_attr != NULL) lv_mem_free(obj->ext_attr); 4546: 6a68 ldr r0, [r5, #36] ; 0x24 4548: 2800 cmp r0, #0 454a: d001 beq.n 4550 454c: 4b14 ldr r3, [pc, #80] ; (45a0 ) 454e: 4798 blx r3 lv_mem_free(obj); /*Free the object itself*/ 4550: 0028 movs r0, r5 4552: 4b13 ldr r3, [pc, #76] ; (45a0 ) 4554: 4798 blx r3 } 4556: b003 add sp, #12 4558: bdf0 pop {r4, r5, r6, r7, pc} lv_disp_t * d = lv_obj_get_disp(obj); 455a: 0028 movs r0, r5 455c: 4b11 ldr r3, [pc, #68] ; (45a4 ) 455e: 4798 blx r3 _lv_ll_remove(&d->scr_ll, obj); 4560: 3030 adds r0, #48 ; 0x30 4562: 0029 movs r1, r5 4564: 4b0d ldr r3, [pc, #52] ; (459c ) 4566: 4798 blx r3 4568: e7ed b.n 4546 456a: 46c0 nop ; (mov r8, r8) 456c: 00001fdd .word 0x00001fdd 4570: 0000441d .word 0x0000441d 4574: 00001b8d .word 0x00001b8d 4578: 000111fd .word 0x000111fd 457c: 00002579 .word 0x00002579 4580: 00011e85 .word 0x00011e85 4584: 00011e9d .word 0x00011e9d 4588: 200026f0 .word 0x200026f0 458c: 00010eb9 .word 0x00010eb9 4590: 00001c71 .word 0x00001c71 4594: 00001d01 .word 0x00001d01 4598: 000021a5 .word 0x000021a5 459c: 00011f6d .word 0x00011f6d 45a0: 000123c9 .word 0x000123c9 45a4: 0000224d .word 0x0000224d 000045a8 : { 45a8: b570 push {r4, r5, r6, lr} 45aa: b082 sub sp, #8 45ac: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 45ae: 4b19 ldr r3, [pc, #100] ; (4614 ) 45b0: 4798 blx r3 45b2: 2800 cmp r0, #0 45b4: d10d bne.n 45d2 45b6: 4b18 ldr r3, [pc, #96] ; (4618 ) 45b8: 9300 str r3, [sp, #0] 45ba: 2294 movs r2, #148 ; 0x94 45bc: 32ff adds r2, #255 ; 0xff 45be: 4917 ldr r1, [pc, #92] ; (461c ) 45c0: 3003 adds r0, #3 45c2: 4d17 ldr r5, [pc, #92] ; (4620 ) 45c4: 47a8 blx r5 45c6: 0022 movs r2, r4 45c8: 2300 movs r3, #0 45ca: 4816 ldr r0, [pc, #88] ; (4624 ) 45cc: 4916 ldr r1, [pc, #88] ; (4628 ) 45ce: 4788 blx r1 45d0: e7fe b.n 45d0 lv_obj_invalidate(obj); 45d2: 0020 movs r0, r4 45d4: 4b15 ldr r3, [pc, #84] ; (462c ) 45d6: 4798 blx r3 lv_obj_t * par = lv_obj_get_parent(obj); 45d8: 0020 movs r0, r4 45da: 4b15 ldr r3, [pc, #84] ; (4630 ) 45dc: 4798 blx r3 45de: 1e05 subs r5, r0, #0 if(par == NULL) { 45e0: d008 beq.n 45f4 obj_del_core(obj); 45e2: 0020 movs r0, r4 45e4: 4b13 ldr r3, [pc, #76] ; (4634 ) 45e6: 4798 blx r3 par->signal_cb(par, LV_SIGNAL_CHILD_CHG, NULL); 45e8: 69eb ldr r3, [r5, #28] 45ea: 2200 movs r2, #0 45ec: 2101 movs r1, #1 45ee: 0028 movs r0, r5 45f0: 4798 blx r3 45f2: e00c b.n 460e disp = lv_obj_get_disp(obj); 45f4: 0020 movs r0, r4 45f6: 4b10 ldr r3, [pc, #64] ; (4638 ) 45f8: 4798 blx r3 45fa: 1e05 subs r5, r0, #0 if(!disp) return LV_RES_INV; /*Shouldn't happen*/ 45fc: d007 beq.n 460e if(disp->act_scr == obj) act_scr_del = true; 45fe: 6bc6 ldr r6, [r0, #60] ; 0x3c obj_del_core(obj); 4600: 0020 movs r0, r4 4602: 4b0c ldr r3, [pc, #48] ; (4634 ) 4604: 4798 blx r3 if(act_scr_del) { 4606: 42b4 cmp r4, r6 4608: d101 bne.n 460e disp->act_scr = NULL; 460a: 2300 movs r3, #0 460c: 63eb str r3, [r5, #60] ; 0x3c } 460e: 2000 movs r0, #0 4610: b002 add sp, #8 4612: bd70 pop {r4, r5, r6, pc} 4614: 000017ad .word 0x000017ad 4618: 000258d4 .word 0x000258d4 461c: 00025c2c .word 0x00025c2c 4620: 00012159 .word 0x00012159 4624: 00025d20 .word 0x00025d20 4628: 000017b5 .word 0x000017b5 462c: 00002869 .word 0x00002869 4630: 000021a5 .word 0x000021a5 4634: 00004469 .word 0x00004469 4638: 0000224d .word 0x0000224d 0000463c : { 463c: b530 push {r4, r5, lr} 463e: b083 sub sp, #12 4640: 0004 movs r4, r0 LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4642: 4b0f ldr r3, [pc, #60] ; (4680 ) 4644: 4798 blx r3 4646: 2800 cmp r0, #0 4648: d00a beq.n 4660 if(obj->group_p) { 464a: 6ba0 ldr r0, [r4, #56] ; 0x38 464c: 2800 cmp r0, #0 464e: d014 beq.n 467a if(lv_group_get_focused(obj->group_p) == obj) return true; 4650: 4b0c ldr r3, [pc, #48] ; (4684 ) 4652: 4798 blx r3 4654: 1a20 subs r0, r4, r0 4656: 4244 negs r4, r0 4658: 4160 adcs r0, r4 465a: b2c0 uxtb r0, r0 } 465c: b003 add sp, #12 465e: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(obj, LV_OBJX_NAME); 4660: 4b09 ldr r3, [pc, #36] ; (4688 ) 4662: 9300 str r3, [sp, #0] 4664: 4a09 ldr r2, [pc, #36] ; (468c ) 4666: 490a ldr r1, [pc, #40] ; (4690 ) 4668: 3003 adds r0, #3 466a: 4d0a ldr r5, [pc, #40] ; (4694 ) 466c: 47a8 blx r5 466e: 0022 movs r2, r4 4670: 2300 movs r3, #0 4672: 4809 ldr r0, [pc, #36] ; (4698 ) 4674: 4909 ldr r1, [pc, #36] ; (469c ) 4676: 4788 blx r1 4678: e7fe b.n 4678 return false; 467a: 2000 movs r0, #0 467c: e7ee b.n 465c 467e: 46c0 nop ; (mov r8, r8) 4680: 000017ad .word 0x000017ad 4684: 00001c3d .word 0x00001c3d 4688: 00025c08 .word 0x00025c08 468c: 00000b7f .word 0x00000b7f 4690: 00025c2c .word 0x00025c2c 4694: 00012159 .word 0x00012159 4698: 00025d20 .word 0x00025d20 469c: 000017b5 .word 0x000017b5 000046a0 : { 46a0: b510 push {r4, lr} 46a2: b082 sub sp, #8 ext_area.x1 = obj->coords.x1 - obj->ext_click_pad_hor; 46a4: 2330 movs r3, #48 ; 0x30 46a6: 5cc3 ldrb r3, [r0, r3] 46a8: 8a02 ldrh r2, [r0, #16] 46aa: 1ad2 subs r2, r2, r3 46ac: 466c mov r4, sp 46ae: 8022 strh r2, [r4, #0] ext_area.x2 = obj->coords.x2 + obj->ext_click_pad_hor; 46b0: 8a82 ldrh r2, [r0, #20] 46b2: 189b adds r3, r3, r2 46b4: 80a3 strh r3, [r4, #4] ext_area.y1 = obj->coords.y1 - obj->ext_click_pad_ver; 46b6: 2331 movs r3, #49 ; 0x31 46b8: 5cc3 ldrb r3, [r0, r3] 46ba: 8a42 ldrh r2, [r0, #18] 46bc: 1ad2 subs r2, r2, r3 46be: 8062 strh r2, [r4, #2] ext_area.y2 = obj->coords.y2 + obj->ext_click_pad_ver; 46c0: 8ac2 ldrh r2, [r0, #22] 46c2: 189b adds r3, r3, r2 46c4: 80e3 strh r3, [r4, #6] if(!_lv_area_is_point_on(&ext_area, point, 0)) { 46c6: 2200 movs r2, #0 46c8: 4668 mov r0, sp 46ca: 4b02 ldr r3, [pc, #8] ; (46d4 ) 46cc: 4798 blx r3 } 46ce: b002 add sp, #8 46d0: bd10 pop {r4, pc} 46d2: 46c0 nop ; (mov r8, r8) 46d4: 000114c5 .word 0x000114c5 000046d8 : { 46d8: b510 push {r4, lr} if(buf->type[i] == NULL) break; 46da: 6803 ldr r3, [r0, #0] 46dc: 2b00 cmp r3, #0 46de: d00d beq.n 46fc 46e0: 1d02 adds r2, r0, #4 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 46e2: 2301 movs r3, #1 if(buf->type[i] == NULL) break; 46e4: 6814 ldr r4, [r2, #0] 46e6: 2c00 cmp r4, #0 46e8: d004 beq.n 46f4 for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 46ea: 3301 adds r3, #1 46ec: b2db uxtb r3, r3 46ee: 3204 adds r2, #4 46f0: 2b07 cmp r3, #7 46f2: d1f7 bne.n 46e4 buf->type[i] = name; 46f4: 009b lsls r3, r3, #2 46f6: 5019 str r1, [r3, r0] } 46f8: 2001 movs r0, #1 46fa: bd10 pop {r4, pc} for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ 46fc: 2300 movs r3, #0 46fe: e7f9 b.n 46f4 00004700 : { 4700: b5f0 push {r4, r5, r6, r7, lr} 4702: 46ce mov lr, r9 4704: b500 push {lr} 4706: b082 sub sp, #8 4708: 0005 movs r5, r0 470a: 000e movs r6, r1 470c: 0014 movs r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 470e: 2201 movs r2, #1 4710: 4bc8 ldr r3, [pc, #800] ; (4a34 ) 4712: 4798 blx r3 draw_dsc->radius = lv_obj_get_style_radius(obj, part); 4714: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4716: 4ac8 ldr r2, [pc, #800] ; (4a38 ) 4718: 0031 movs r1, r6 471a: 0028 movs r0, r5 471c: 4bc7 ldr r3, [pc, #796] ; (4a3c ) 471e: 4798 blx r3 4720: 9001 str r0, [sp, #4] 4722: 0007 movs r7, r0 if(opa_scale <= LV_OPA_MIN) { 4724: 2805 cmp r0, #5 4726: d935 bls.n 4794 if(draw_dsc->bg_opa != LV_OPA_TRANSP) { 4728: 7b23 ldrb r3, [r4, #12] 472a: 2b00 cmp r3, #0 472c: d13f bne.n 47ae if(draw_dsc->border_opa != LV_OPA_TRANSP) { 472e: 7d23 ldrb r3, [r4, #20] 4730: 2b00 cmp r3, #0 4732: d000 beq.n 4736 4734: e06c b.n 4810 if(draw_dsc->outline_opa != LV_OPA_TRANSP) { 4736: 7f23 ldrb r3, [r4, #28] 4738: 2b00 cmp r3, #0 473a: d000 beq.n 473e 473c: e08f b.n 485e if(draw_dsc->pattern_opa != LV_OPA_TRANSP) { 473e: 2336 movs r3, #54 ; 0x36 4740: 5ce3 ldrb r3, [r4, r3] 4742: 2b00 cmp r3, #0 4744: d000 beq.n 4748 4746: e0af b.n 48a8 if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4748: 2328 movs r3, #40 ; 0x28 474a: 5ce3 ldrb r3, [r4, r3] 474c: 2b05 cmp r3, #5 474e: d900 bls.n 4752 4750: e0f7 b.n 4942 if(draw_dsc->value_opa > LV_OPA_MIN) { 4752: 2344 movs r3, #68 ; 0x44 4754: 5ce3 ldrb r3, [r4, r3] 4756: 2b05 cmp r3, #5 4758: d900 bls.n 475c 475a: e123 b.n 49a4 if(opa_scale < LV_OPA_MAX) { 475c: 2ff9 cmp r7, #249 ; 0xf9 475e: d822 bhi.n 47a6 draw_dsc->bg_opa = (uint16_t)((uint16_t)draw_dsc->bg_opa * opa_scale) >> 8; 4760: 466b mov r3, sp 4762: 889b ldrh r3, [r3, #4] 4764: 7b22 ldrb r2, [r4, #12] 4766: 435a muls r2, r3 4768: 0a12 lsrs r2, r2, #8 476a: 7322 strb r2, [r4, #12] draw_dsc->border_opa = (uint16_t)((uint16_t)draw_dsc->border_opa * opa_scale) >> 8; 476c: 7d22 ldrb r2, [r4, #20] 476e: 435a muls r2, r3 4770: 0a12 lsrs r2, r2, #8 4772: 7522 strb r2, [r4, #20] draw_dsc->shadow_opa = (uint16_t)((uint16_t)draw_dsc->shadow_opa * opa_scale) >> 8; 4774: 2128 movs r1, #40 ; 0x28 4776: 5c62 ldrb r2, [r4, r1] 4778: 435a muls r2, r3 477a: 0a12 lsrs r2, r2, #8 477c: 5462 strb r2, [r4, r1] draw_dsc->pattern_opa = (uint16_t)((uint16_t)draw_dsc->pattern_opa * opa_scale) >> 8; 477e: 310e adds r1, #14 4780: 5c62 ldrb r2, [r4, r1] 4782: 435a muls r2, r3 4784: 0a12 lsrs r2, r2, #8 4786: 5462 strb r2, [r4, r1] draw_dsc->value_opa = (uint16_t)((uint16_t)draw_dsc->value_opa * opa_scale) >> 8; 4788: 2244 movs r2, #68 ; 0x44 478a: 5ca7 ldrb r7, [r4, r2] 478c: 435f muls r7, r3 478e: 0a3f lsrs r7, r7, #8 4790: 54a7 strb r7, [r4, r2] 4792: e008 b.n 47a6 draw_dsc->bg_opa = LV_OPA_TRANSP; 4794: 2300 movs r3, #0 4796: 7323 strb r3, [r4, #12] draw_dsc->border_opa = LV_OPA_TRANSP; 4798: 7523 strb r3, [r4, #20] draw_dsc->shadow_opa = LV_OPA_TRANSP; 479a: 2228 movs r2, #40 ; 0x28 479c: 54a3 strb r3, [r4, r2] draw_dsc->pattern_opa = LV_OPA_TRANSP; 479e: 320e adds r2, #14 47a0: 54a3 strb r3, [r4, r2] draw_dsc->value_opa = LV_OPA_TRANSP; 47a2: 320e adds r2, #14 47a4: 54a3 strb r3, [r4, r2] } 47a6: b002 add sp, #8 47a8: bc04 pop {r2} 47aa: 4691 mov r9, r2 47ac: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 47ae: 222c movs r2, #44 ; 0x2c 47b0: 0031 movs r1, r6 47b2: 0028 movs r0, r5 47b4: 4ba1 ldr r3, [pc, #644] ; (4a3c ) 47b6: 4798 blx r3 draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part); 47b8: 7320 strb r0, [r4, #12] if(draw_dsc->bg_opa > LV_OPA_MIN) { 47ba: 2805 cmp r0, #5 47bc: d9b7 bls.n 472e _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 47be: 2229 movs r2, #41 ; 0x29 47c0: 0031 movs r1, r6 47c2: 0028 movs r0, r5 47c4: 4b9e ldr r3, [pc, #632] ; (4a40 ) 47c6: 4798 blx r3 draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part); 47c8: 8060 strh r0, [r4, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t, _int, scalar) 47ca: 2223 movs r2, #35 ; 0x23 47cc: 0031 movs r1, r6 47ce: 0028 movs r0, r5 47d0: 4b98 ldr r3, [pc, #608] ; (4a34 ) 47d2: 4798 blx r3 47d4: b2c0 uxtb r0, r0 draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part); 47d6: 71a0 strb r0, [r4, #6] if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) { 47d8: 2800 cmp r0, #0 47da: d106 bne.n 47ea _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 47dc: 2220 movs r2, #32 47de: 0031 movs r1, r6 47e0: 0028 movs r0, r5 47e2: 4b94 ldr r3, [pc, #592] ; (4a34 ) 47e4: 4798 blx r3 draw_dsc->bg_blend_mode = lv_obj_get_style_bg_blend_mode(obj, part); 47e6: 7360 strb r0, [r4, #13] 47e8: e7a1 b.n 472e _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar) 47ea: 222a movs r2, #42 ; 0x2a 47ec: 0031 movs r1, r6 47ee: 0028 movs r0, r5 47f0: 4b93 ldr r3, [pc, #588] ; (4a40 ) 47f2: 4798 blx r3 draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part); 47f4: 80a0 strh r0, [r4, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t, _int, scalar) 47f6: 2221 movs r2, #33 ; 0x21 47f8: 0031 movs r1, r6 47fa: 0028 movs r0, r5 47fc: 4b8d ldr r3, [pc, #564] ; (4a34 ) 47fe: 4699 mov r9, r3 4800: 4798 blx r3 draw_dsc->bg_main_color_stop = lv_obj_get_style_bg_main_stop(obj, part); 4802: 8120 strh r0, [r4, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t, _int, scalar) 4804: 2222 movs r2, #34 ; 0x22 4806: 0031 movs r1, r6 4808: 0028 movs r0, r5 480a: 47c8 blx r9 draw_dsc->bg_grad_color_stop = lv_obj_get_style_bg_grad_stop(obj, part); 480c: 8160 strh r0, [r4, #10] 480e: e7e5 b.n 47dc _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 4810: 2230 movs r2, #48 ; 0x30 4812: 0031 movs r1, r6 4814: 0028 movs r0, r5 4816: 4b87 ldr r3, [pc, #540] ; (4a34 ) 4818: 4798 blx r3 draw_dsc->border_width = lv_obj_get_style_border_width(obj, part); 481a: 8220 strh r0, [r4, #16] if(draw_dsc->border_width) { 481c: 2800 cmp r0, #0 481e: d100 bne.n 4822 4820: e789 b.n 4736 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 4822: 223c movs r2, #60 ; 0x3c 4824: 0031 movs r1, r6 4826: 0028 movs r0, r5 4828: 4b84 ldr r3, [pc, #528] ; (4a3c ) 482a: 4798 blx r3 draw_dsc->border_opa = lv_obj_get_style_border_opa(obj, part); 482c: 7520 strb r0, [r4, #20] if(draw_dsc->border_opa > LV_OPA_MIN) { 482e: 2805 cmp r0, #5 4830: d806 bhi.n 4840 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 4832: 2232 movs r2, #50 ; 0x32 4834: 0031 movs r1, r6 4836: 0028 movs r0, r5 4838: 4b7e ldr r3, [pc, #504] ; (4a34 ) 483a: 4798 blx r3 draw_dsc->border_blend_mode = lv_obj_get_style_border_blend_mode(obj, part); 483c: 7560 strb r0, [r4, #21] 483e: e77a b.n 4736 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 4840: 2231 movs r2, #49 ; 0x31 4842: 0031 movs r1, r6 4844: 0028 movs r0, r5 4846: 4b7b ldr r3, [pc, #492] ; (4a34 ) 4848: 4798 blx r3 draw_dsc->border_side = lv_obj_get_style_border_side(obj, part); 484a: 23ff movs r3, #255 ; 0xff 484c: 4018 ands r0, r3 484e: 8260 strh r0, [r4, #18] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 4850: 2239 movs r2, #57 ; 0x39 4852: 0031 movs r1, r6 4854: 0028 movs r0, r5 4856: 4b7a ldr r3, [pc, #488] ; (4a40 ) 4858: 4798 blx r3 draw_dsc->border_color = lv_obj_get_style_border_color(obj, part); 485a: 81e0 strh r0, [r4, #14] 485c: e7e9 b.n 4832 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 485e: 2240 movs r2, #64 ; 0x40 4860: 0031 movs r1, r6 4862: 0028 movs r0, r5 4864: 4b73 ldr r3, [pc, #460] ; (4a34 ) 4866: 4798 blx r3 draw_dsc->outline_width = lv_obj_get_style_outline_width(obj, part); 4868: 8320 strh r0, [r4, #24] if(draw_dsc->outline_width) { 486a: 2800 cmp r0, #0 486c: d100 bne.n 4870 486e: e766 b.n 473e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 4870: 224c movs r2, #76 ; 0x4c 4872: 0031 movs r1, r6 4874: 0028 movs r0, r5 4876: 4b71 ldr r3, [pc, #452] ; (4a3c ) 4878: 4798 blx r3 draw_dsc->outline_opa = lv_obj_get_style_outline_opa(obj, part); 487a: 7720 strb r0, [r4, #28] if(draw_dsc->outline_opa > LV_OPA_MIN) { 487c: 2805 cmp r0, #5 487e: d806 bhi.n 488e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t, _int, scalar) 4880: 2242 movs r2, #66 ; 0x42 4882: 0031 movs r1, r6 4884: 0028 movs r0, r5 4886: 4b6b ldr r3, [pc, #428] ; (4a34 ) 4888: 4798 blx r3 draw_dsc->outline_blend_mode = lv_obj_get_style_outline_blend_mode(obj, part); 488a: 7760 strb r0, [r4, #29] 488c: e757 b.n 473e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 488e: 2241 movs r2, #65 ; 0x41 4890: 0031 movs r1, r6 4892: 0028 movs r0, r5 4894: 4b67 ldr r3, [pc, #412] ; (4a34 ) 4896: 4798 blx r3 draw_dsc->outline_pad = lv_obj_get_style_outline_pad(obj, part); 4898: 8360 strh r0, [r4, #26] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 489a: 2249 movs r2, #73 ; 0x49 489c: 0031 movs r1, r6 489e: 0028 movs r0, r5 48a0: 4b67 ldr r3, [pc, #412] ; (4a40 ) 48a2: 4798 blx r3 draw_dsc->outline_color = lv_obj_get_style_outline_color(obj, part); 48a4: 82e0 strh r0, [r4, #22] 48a6: e7eb b.n 4880 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 48a8: 226e movs r2, #110 ; 0x6e 48aa: 0031 movs r1, r6 48ac: 0028 movs r0, r5 48ae: 4b65 ldr r3, [pc, #404] ; (4a44 ) 48b0: 4798 blx r3 draw_dsc->pattern_image = lv_obj_get_style_pattern_image(obj, part); 48b2: 62e0 str r0, [r4, #44] ; 0x2c if(draw_dsc->pattern_image) { 48b4: 2800 cmp r0, #0 48b6: d100 bne.n 48ba 48b8: e746 b.n 4748 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_OPA, pattern_opa, lv_opa_t, _opa, scalar) 48ba: 226c movs r2, #108 ; 0x6c 48bc: 0031 movs r1, r6 48be: 0028 movs r0, r5 48c0: 4b5e ldr r3, [pc, #376] ; (4a3c ) 48c2: 4798 blx r3 draw_dsc->pattern_opa = lv_obj_get_style_pattern_opa(obj, part); 48c4: 2336 movs r3, #54 ; 0x36 48c6: 54e0 strb r0, [r4, r3] if(draw_dsc->pattern_opa > LV_OPA_MIN) { 48c8: 2805 cmp r0, #5 48ca: d800 bhi.n 48ce 48cc: e73c b.n 4748 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t, _opa, scalar) 48ce: 226d movs r2, #109 ; 0x6d 48d0: 0031 movs r1, r6 48d2: 0028 movs r0, r5 48d4: 4b59 ldr r3, [pc, #356] ; (4a3c ) 48d6: 4798 blx r3 draw_dsc->pattern_recolor_opa = lv_obj_get_style_pattern_recolor_opa(obj, part); 48d8: 2337 movs r3, #55 ; 0x37 48da: 54e0 strb r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_REPEAT, pattern_repeat, bool, _int, scalar) 48dc: 2261 movs r2, #97 ; 0x61 48de: 0031 movs r1, r6 48e0: 0028 movs r0, r5 48e2: 4b54 ldr r3, [pc, #336] ; (4a34 ) 48e4: 4798 blx r3 48e6: 0003 movs r3, r0 48e8: 1e58 subs r0, r3, #1 48ea: 4183 sbcs r3, r0 draw_dsc->pattern_repeat = lv_obj_get_style_pattern_repeat(obj, part); 48ec: 2238 movs r2, #56 ; 0x38 48ee: 5ca0 ldrb r0, [r4, r2] 48f0: 2101 movs r1, #1 48f2: 4388 bics r0, r1 48f4: 4318 orrs r0, r3 48f6: 54a0 strb r0, [r4, r2] if(lv_img_src_get_type(draw_dsc->pattern_image) == LV_IMG_SRC_SYMBOL) { 48f8: 6ae0 ldr r0, [r4, #44] ; 0x2c 48fa: 4b53 ldr r3, [pc, #332] ; (4a48 ) 48fc: 4798 blx r3 48fe: 2802 cmp r0, #2 4900: d00b beq.n 491a else if(draw_dsc->pattern_recolor_opa > LV_OPA_MIN) { 4902: 2337 movs r3, #55 ; 0x37 4904: 5ce3 ldrb r3, [r4, r3] 4906: 2b05 cmp r3, #5 4908: d814 bhi.n 4934 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t, _int, scalar) 490a: 2260 movs r2, #96 ; 0x60 490c: 0031 movs r1, r6 490e: 0028 movs r0, r5 4910: 4b48 ldr r3, [pc, #288] ; (4a34 ) 4912: 4798 blx r3 draw_dsc->pattern_blend_mode = lv_obj_get_style_pattern_blend_mode(obj, part); 4914: 2339 movs r3, #57 ; 0x39 4916: 54e0 strb r0, [r4, r3] 4918: e716 b.n 4748 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 491a: 2269 movs r2, #105 ; 0x69 491c: 0031 movs r1, r6 491e: 0028 movs r0, r5 4920: 4b47 ldr r3, [pc, #284] ; (4a40 ) 4922: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 4924: 86a0 strh r0, [r4, #52] ; 0x34 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 4926: 4a49 ldr r2, [pc, #292] ; (4a4c ) 4928: 0031 movs r1, r6 492a: 0028 movs r0, r5 492c: 4b45 ldr r3, [pc, #276] ; (4a44 ) 492e: 4798 blx r3 draw_dsc->pattern_font = lv_obj_get_style_text_font(obj, part); 4930: 6320 str r0, [r4, #48] ; 0x30 4932: e7ea b.n 490a _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 4934: 2269 movs r2, #105 ; 0x69 4936: 0031 movs r1, r6 4938: 0028 movs r0, r5 493a: 4b41 ldr r3, [pc, #260] ; (4a40 ) 493c: 4798 blx r3 draw_dsc->pattern_recolor = lv_obj_get_style_pattern_recolor(obj, part); 493e: 86a0 strh r0, [r4, #52] ; 0x34 4940: e7e3 b.n 490a _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 4942: 2250 movs r2, #80 ; 0x50 4944: 0031 movs r1, r6 4946: 0028 movs r0, r5 4948: 4b3a ldr r3, [pc, #232] ; (4a34 ) 494a: 4798 blx r3 draw_dsc->shadow_width = lv_obj_get_style_shadow_width(obj, part); 494c: 8420 strh r0, [r4, #32] if(draw_dsc->shadow_width) { 494e: 2800 cmp r0, #0 4950: d100 bne.n 4954 4952: e6fe b.n 4752 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 4954: 225c movs r2, #92 ; 0x5c 4956: 0031 movs r1, r6 4958: 0028 movs r0, r5 495a: 4b38 ldr r3, [pc, #224] ; (4a3c ) 495c: 4798 blx r3 draw_dsc->shadow_opa = lv_obj_get_style_shadow_opa(obj, part); 495e: 2328 movs r3, #40 ; 0x28 4960: 54e0 strb r0, [r4, r3] if(draw_dsc->shadow_opa > LV_OPA_MIN) { 4962: 2805 cmp r0, #5 4964: d800 bhi.n 4968 4966: e6f4 b.n 4752 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 4968: 2251 movs r2, #81 ; 0x51 496a: 0031 movs r1, r6 496c: 0028 movs r0, r5 496e: 4b31 ldr r3, [pc, #196] ; (4a34 ) 4970: 4699 mov r9, r3 4972: 4798 blx r3 draw_dsc->shadow_ofs_x = lv_obj_get_style_shadow_ofs_x(obj, part); 4974: 8460 strh r0, [r4, #34] ; 0x22 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4976: 2252 movs r2, #82 ; 0x52 4978: 0031 movs r1, r6 497a: 0028 movs r0, r5 497c: 47c8 blx r9 draw_dsc->shadow_ofs_y = lv_obj_get_style_shadow_ofs_y(obj, part); 497e: 84a0 strh r0, [r4, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 4980: 2253 movs r2, #83 ; 0x53 4982: 0031 movs r1, r6 4984: 0028 movs r0, r5 4986: 47c8 blx r9 draw_dsc->shadow_spread = lv_obj_get_style_shadow_spread(obj, part); 4988: 84e0 strh r0, [r4, #38] ; 0x26 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 498a: 2259 movs r2, #89 ; 0x59 498c: 0031 movs r1, r6 498e: 0028 movs r0, r5 4990: 4b2b ldr r3, [pc, #172] ; (4a40 ) 4992: 4798 blx r3 draw_dsc->shadow_color = lv_obj_get_style_shadow_color(obj, part); 4994: 83e0 strh r0, [r4, #30] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t, _int, scalar) 4996: 2254 movs r2, #84 ; 0x54 4998: 0031 movs r1, r6 499a: 0028 movs r0, r5 499c: 47c8 blx r9 draw_dsc->shadow_blend_mode = lv_obj_get_style_shadow_blend_mode(obj, part); 499e: 2329 movs r3, #41 ; 0x29 49a0: 54e0 strb r0, [r4, r3] 49a2: e6d6 b.n 4752 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 49a4: 227f movs r2, #127 ; 0x7f 49a6: 0031 movs r1, r6 49a8: 0028 movs r0, r5 49aa: 4b26 ldr r3, [pc, #152] ; (4a44 ) 49ac: 4798 blx r3 draw_dsc->value_str = lv_obj_get_style_value_str(obj, part); 49ae: 63e0 str r0, [r4, #60] ; 0x3c if(draw_dsc->value_str) { 49b0: 2800 cmp r0, #0 49b2: d100 bne.n 49b6 49b4: e6d2 b.n 475c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 49b6: 227c movs r2, #124 ; 0x7c 49b8: 0031 movs r1, r6 49ba: 0028 movs r0, r5 49bc: 4b1f ldr r3, [pc, #124] ; (4a3c ) 49be: 4798 blx r3 draw_dsc->value_opa = lv_obj_get_style_value_opa(obj, part); 49c0: 2344 movs r3, #68 ; 0x44 49c2: 54e0 strb r0, [r4, r3] if(draw_dsc->value_opa > LV_OPA_MIN) { 49c4: 2805 cmp r0, #5 49c6: d800 bhi.n 49ca 49c8: e6c8 b.n 475c _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 49ca: 2273 movs r2, #115 ; 0x73 49cc: 0031 movs r1, r6 49ce: 0028 movs r0, r5 49d0: 4b18 ldr r3, [pc, #96] ; (4a34 ) 49d2: 4699 mov r9, r3 49d4: 4798 blx r3 draw_dsc->value_ofs_x = lv_obj_get_style_value_ofs_x(obj, part); 49d6: 2348 movs r3, #72 ; 0x48 49d8: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 49da: 2274 movs r2, #116 ; 0x74 49dc: 0031 movs r1, r6 49de: 0028 movs r0, r5 49e0: 47c8 blx r9 draw_dsc->value_ofs_y = lv_obj_get_style_value_ofs_y(obj, part); 49e2: 234a movs r3, #74 ; 0x4a 49e4: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 49e6: 2279 movs r2, #121 ; 0x79 49e8: 0031 movs r1, r6 49ea: 0028 movs r0, r5 49ec: 4b14 ldr r3, [pc, #80] ; (4a40 ) 49ee: 4798 blx r3 draw_dsc->value_color = lv_obj_get_style_value_color(obj, part); 49f0: 2346 movs r3, #70 ; 0x46 49f2: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 49f4: 227e movs r2, #126 ; 0x7e 49f6: 0031 movs r1, r6 49f8: 0028 movs r0, r5 49fa: 4b12 ldr r3, [pc, #72] ; (4a44 ) 49fc: 4798 blx r3 draw_dsc->value_font = lv_obj_get_style_value_font(obj, part); 49fe: 6420 str r0, [r4, #64] ; 0x40 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 4a00: 2270 movs r2, #112 ; 0x70 4a02: 0031 movs r1, r6 4a04: 0028 movs r0, r5 4a06: 47c8 blx r9 draw_dsc->value_letter_space = lv_obj_get_style_value_letter_space(obj, part); 4a08: 234c movs r3, #76 ; 0x4c 4a0a: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t, _int, scalar) 4a0c: 2271 movs r2, #113 ; 0x71 4a0e: 0031 movs r1, r6 4a10: 0028 movs r0, r5 4a12: 47c8 blx r9 draw_dsc->value_line_space = lv_obj_get_style_value_line_space(obj, part); 4a14: 234e movs r3, #78 ; 0x4e 4a16: 52e0 strh r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 4a18: 2275 movs r2, #117 ; 0x75 4a1a: 0031 movs r1, r6 4a1c: 0028 movs r0, r5 4a1e: 47c8 blx r9 draw_dsc->value_align = lv_obj_get_style_value_align(obj, part); 4a20: 2350 movs r3, #80 ; 0x50 4a22: 54e0 strb r0, [r4, r3] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t, _int, scalar) 4a24: 2272 movs r2, #114 ; 0x72 4a26: 0031 movs r1, r6 4a28: 0028 movs r0, r5 4a2a: 47c8 blx r9 draw_dsc->value_blend_mode = lv_obj_get_style_value_blend_mode(obj, part); 4a2c: 2351 movs r3, #81 ; 0x51 4a2e: 54e0 strb r0, [r4, r3] 4a30: e694 b.n 475c 4a32: 46c0 nop ; (mov r8, r8) 4a34: 00003a89 .word 0x00003a89 4a38: 0000800c .word 0x0000800c 4a3c: 00003bed .word 0x00003bed 4a40: 00003b49 .word 0x00003b49 4a44: 00003c99 .word 0x00003c99 4a48: 00009589 .word 0x00009589 4a4c: 0000808e .word 0x0000808e 00004a50 : { 4a50: b5f0 push {r4, r5, r6, r7, lr} 4a52: b09b sub sp, #108 ; 0x6c 4a54: 0004 movs r4, r0 4a56: 000e movs r6, r1 if(mode == LV_DESIGN_COVER_CHK) { 4a58: 2a02 cmp r2, #2 4a5a: d007 beq.n 4a6c else if(mode == LV_DESIGN_DRAW_MAIN) { 4a5c: 2a00 cmp r2, #0 4a5e: d061 beq.n 4b24 return LV_DESIGN_RES_OK; 4a60: 2000 movs r0, #0 else if(mode == LV_DESIGN_DRAW_POST) { 4a62: 2a01 cmp r2, #1 4a64: d100 bne.n 4a68 4a66: e0b5 b.n 4bd4 } 4a68: b01b add sp, #108 ; 0x6c 4a6a: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 4a6c: 2100 movs r1, #0 4a6e: 4b81 ldr r3, [pc, #516] ; (4c74 ) 4a70: 4798 blx r3 4a72: 0003 movs r3, r0 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) return LV_DESIGN_RES_MASKED; 4a74: 2003 movs r0, #3 4a76: 2b00 cmp r3, #0 4a78: d1f6 bne.n 4a68 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 4a7a: 2201 movs r2, #1 4a7c: 2100 movs r1, #0 4a7e: 0020 movs r0, r4 4a80: 4f7c ldr r7, [pc, #496] ; (4c74 ) 4a82: 47b8 blx r7 4a84: 9001 str r0, [sp, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4a86: 2204 movs r2, #4 4a88: 2100 movs r1, #0 4a8a: 0020 movs r0, r4 4a8c: 47b8 blx r7 4a8e: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4a90: 2205 movs r2, #5 4a92: 2100 movs r1, #0 4a94: 0020 movs r0, r4 4a96: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 4a98: 0027 movs r7, r4 4a9a: 3710 adds r7, #16 4a9c: 2300 movs r3, #0 *d8 = *s8; 4a9e: a905 add r1, sp, #20 4aa0: 5cfa ldrb r2, [r7, r3] 4aa2: 545a strb r2, [r3, r1] 4aa4: 3301 adds r3, #1 while(len) { 4aa6: 2b08 cmp r3, #8 4aa8: d1fa bne.n 4aa0 coords.x1 -= w; 4aaa: b2ad uxth r5, r5 4aac: a905 add r1, sp, #20 4aae: 880b ldrh r3, [r1, #0] 4ab0: 1b5b subs r3, r3, r5 4ab2: 800b strh r3, [r1, #0] coords.x2 += w; 4ab4: 888b ldrh r3, [r1, #4] 4ab6: 18ed adds r5, r5, r3 4ab8: 808d strh r5, [r1, #4] coords.y1 -= h; 4aba: b280 uxth r0, r0 4abc: 884b ldrh r3, [r1, #2] 4abe: 1a1b subs r3, r3, r0 4ac0: 804b strh r3, [r1, #2] coords.y2 += h; 4ac2: 88cb ldrh r3, [r1, #6] 4ac4: 18c0 adds r0, r0, r3 4ac6: 80c8 strh r0, [r1, #6] if(_lv_area_is_in(clip_area, &coords, r) == false) return LV_DESIGN_RES_NOT_COVER; 4ac8: 9a01 ldr r2, [sp, #4] 4aca: 0030 movs r0, r6 4acc: 4b6a ldr r3, [pc, #424] ; (4c78 ) 4ace: 4798 blx r3 4ad0: 0003 movs r3, r0 4ad2: 2002 movs r0, #2 4ad4: 2b00 cmp r3, #0 4ad6: d0c7 beq.n 4a68 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 4ad8: 222c movs r2, #44 ; 0x2c 4ada: 2100 movs r1, #0 4adc: 0020 movs r0, r4 4ade: 4b67 ldr r3, [pc, #412] ; (4c7c ) 4ae0: 4798 blx r3 4ae2: 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; 4ae4: 2002 movs r0, #2 4ae6: 2bf9 cmp r3, #249 ; 0xf9 4ae8: d9be bls.n 4a68 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t, _int, scalar) 4aea: 2220 movs r2, #32 4aec: 2100 movs r1, #0 4aee: 0020 movs r0, r4 4af0: 4b60 ldr r3, [pc, #384] ; (4c74 ) 4af2: 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; 4af4: b2c3 uxtb r3, r0 4af6: 2002 movs r0, #2 4af8: 2b00 cmp r3, #0 4afa: d1b5 bne.n 4a68 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) 4afc: 2232 movs r2, #50 ; 0x32 4afe: 2100 movs r1, #0 4b00: 0020 movs r0, r4 4b02: 4b5c ldr r3, [pc, #368] ; (4c74 ) 4b04: 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; 4b06: b2c3 uxtb r3, r0 4b08: 2002 movs r0, #2 4b0a: 2b00 cmp r3, #0 4b0c: d1ac bne.n 4a68 _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4b0e: 4a5c ldr r2, [pc, #368] ; (4c80 ) 4b10: 2100 movs r1, #0 4b12: 0020 movs r0, r4 4b14: 4b59 ldr r3, [pc, #356] ; (4c7c ) 4b16: 4798 blx r3 return LV_DESIGN_RES_COVER; 4b18: 2300 movs r3, #0 4b1a: 22f9 movs r2, #249 ; 0xf9 4b1c: 4282 cmp r2, r0 4b1e: 415b adcs r3, r3 4b20: 1c58 adds r0, r3, #1 4b22: e7a1 b.n 4a68 lv_draw_rect_dsc_init(&draw_dsc); 4b24: a805 add r0, sp, #20 4b26: 4b57 ldr r3, [pc, #348] ; (4c84 ) 4b28: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 4b2a: 2233 movs r2, #51 ; 0x33 4b2c: 2100 movs r1, #0 4b2e: 0020 movs r0, r4 4b30: 4b50 ldr r3, [pc, #320] ; (4c74 ) 4b32: 4798 blx r3 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 4b34: 2800 cmp r0, #0 4b36: d002 beq.n 4b3e draw_dsc.border_opa = LV_OPA_TRANSP; 4b38: 2200 movs r2, #0 4b3a: ab05 add r3, sp, #20 4b3c: 751a strb r2, [r3, #20] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 4b3e: aa05 add r2, sp, #20 4b40: 2100 movs r1, #0 4b42: 0020 movs r0, r4 4b44: 4b50 ldr r3, [pc, #320] ; (4c88 ) 4b46: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4b48: 2204 movs r2, #4 4b4a: 2100 movs r1, #0 4b4c: 0020 movs r0, r4 4b4e: 4f49 ldr r7, [pc, #292] ; (4c74 ) 4b50: 47b8 blx r7 4b52: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4b54: 2205 movs r2, #5 4b56: 2100 movs r1, #0 4b58: 0020 movs r0, r4 4b5a: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 4b5c: 0027 movs r7, r4 4b5e: 3710 adds r7, #16 4b60: 2300 movs r3, #0 *d8 = *s8; 4b62: a903 add r1, sp, #12 4b64: 5cfa ldrb r2, [r7, r3] 4b66: 545a strb r2, [r3, r1] 4b68: 3301 adds r3, #1 while(len) { 4b6a: 2b08 cmp r3, #8 4b6c: d1fa bne.n 4b64 coords.x1 -= w; 4b6e: b2ad uxth r5, r5 4b70: ab03 add r3, sp, #12 4b72: 881a ldrh r2, [r3, #0] 4b74: 1b52 subs r2, r2, r5 4b76: 801a strh r2, [r3, #0] coords.x2 += w; 4b78: 889a ldrh r2, [r3, #4] 4b7a: 18ad adds r5, r5, r2 4b7c: 809d strh r5, [r3, #4] coords.y1 -= h; 4b7e: b280 uxth r0, r0 4b80: 885a ldrh r2, [r3, #2] 4b82: 1a12 subs r2, r2, r0 4b84: 805a strh r2, [r3, #2] coords.y2 += h; 4b86: 88da ldrh r2, [r3, #6] 4b88: 1880 adds r0, r0, r2 4b8a: 80d8 strh r0, [r3, #6] lv_draw_rect(&coords, clip_area, &draw_dsc); 4b8c: aa05 add r2, sp, #20 4b8e: 0031 movs r1, r6 4b90: 0018 movs r0, r3 4b92: 4b3e ldr r3, [pc, #248] ; (4c8c ) 4b94: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 4b96: 2202 movs r2, #2 4b98: 2100 movs r1, #0 4b9a: 0020 movs r0, r4 4b9c: 4b35 ldr r3, [pc, #212] ; (4c74 ) 4b9e: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 4ba0: 2800 cmp r0, #0 4ba2: d101 bne.n 4ba8 return LV_DESIGN_RES_OK; 4ba4: 2000 movs r0, #0 4ba6: e75f b.n 4a68 lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 4ba8: 201c movs r0, #28 4baa: 4b39 ldr r3, [pc, #228] ; (4c90 ) 4bac: 4798 blx r3 4bae: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 4bb0: 2201 movs r2, #1 4bb2: 2100 movs r1, #0 4bb4: 0020 movs r0, r4 4bb6: 4b2f ldr r3, [pc, #188] ; (4c74 ) 4bb8: 4798 blx r3 4bba: 0002 movs r2, r0 lv_draw_mask_radius_init(mp, &obj->coords, r, false); 4bbc: 2300 movs r3, #0 4bbe: 0039 movs r1, r7 4bc0: 0028 movs r0, r5 4bc2: 4e34 ldr r6, [pc, #208] ; (4c94 ) 4bc4: 47b0 blx r6 lv_draw_mask_add(mp, obj + 8); 4bc6: 2398 movs r3, #152 ; 0x98 4bc8: 009b lsls r3, r3, #2 4bca: 18e1 adds r1, r4, r3 4bcc: 0028 movs r0, r5 4bce: 4b32 ldr r3, [pc, #200] ; (4c98 ) 4bd0: 4798 blx r3 4bd2: e7e7 b.n 4ba4 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 4bd4: 3201 adds r2, #1 4bd6: 2100 movs r1, #0 4bd8: 0020 movs r0, r4 4bda: 4b26 ldr r3, [pc, #152] ; (4c74 ) 4bdc: 4798 blx r3 if(lv_obj_get_style_clip_corner(obj, LV_OBJ_PART_MAIN)) { 4bde: 2800 cmp r0, #0 4be0: d140 bne.n 4c64 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 4be2: 2233 movs r2, #51 ; 0x33 4be4: 2100 movs r1, #0 4be6: 0020 movs r0, r4 4be8: 4b22 ldr r3, [pc, #136] ; (4c74 ) 4bea: 4798 blx r3 4bec: 0003 movs r3, r0 return LV_DESIGN_RES_OK; 4bee: 2000 movs r0, #0 if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { 4bf0: 2b00 cmp r3, #0 4bf2: d100 bne.n 4bf6 4bf4: e738 b.n 4a68 lv_draw_rect_dsc_init(&draw_dsc); 4bf6: ad05 add r5, sp, #20 4bf8: 0028 movs r0, r5 4bfa: 4b22 ldr r3, [pc, #136] ; (4c84 ) 4bfc: 4798 blx r3 draw_dsc.bg_opa = LV_OPA_TRANSP; 4bfe: 2300 movs r3, #0 4c00: 732b strb r3, [r5, #12] draw_dsc.pattern_opa = LV_OPA_TRANSP; 4c02: 2236 movs r2, #54 ; 0x36 4c04: 54ab strb r3, [r5, r2] draw_dsc.shadow_opa = LV_OPA_TRANSP; 4c06: 3a0e subs r2, #14 4c08: 54ab strb r3, [r5, r2] lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); 4c0a: 002a movs r2, r5 4c0c: 2100 movs r1, #0 4c0e: 0020 movs r0, r4 4c10: 4b1d ldr r3, [pc, #116] ; (4c88 ) 4c12: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4c14: 2204 movs r2, #4 4c16: 2100 movs r1, #0 4c18: 0020 movs r0, r4 4c1a: 4f16 ldr r7, [pc, #88] ; (4c74 ) 4c1c: 47b8 blx r7 4c1e: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4c20: 2205 movs r2, #5 4c22: 2100 movs r1, #0 4c24: 0020 movs r0, r4 4c26: 47b8 blx r7 lv_area_copy(&coords, &obj->coords); 4c28: 3410 adds r4, #16 4c2a: 2300 movs r3, #0 *d8 = *s8; 4c2c: a903 add r1, sp, #12 4c2e: 5ce2 ldrb r2, [r4, r3] 4c30: 545a strb r2, [r3, r1] 4c32: 3301 adds r3, #1 while(len) { 4c34: 2b08 cmp r3, #8 4c36: d1fa bne.n 4c2e coords.x1 -= w; 4c38: b2ad uxth r5, r5 4c3a: ab03 add r3, sp, #12 4c3c: 881a ldrh r2, [r3, #0] 4c3e: 1b52 subs r2, r2, r5 4c40: 801a strh r2, [r3, #0] coords.x2 += w; 4c42: 889a ldrh r2, [r3, #4] 4c44: 18ad adds r5, r5, r2 4c46: 809d strh r5, [r3, #4] coords.y1 -= h; 4c48: b280 uxth r0, r0 4c4a: 885a ldrh r2, [r3, #2] 4c4c: 1a12 subs r2, r2, r0 4c4e: 805a strh r2, [r3, #2] coords.y2 += h; 4c50: 88da ldrh r2, [r3, #6] 4c52: 1880 adds r0, r0, r2 4c54: 80d8 strh r0, [r3, #6] lv_draw_rect(&coords, clip_area, &draw_dsc); 4c56: aa05 add r2, sp, #20 4c58: 0031 movs r1, r6 4c5a: 0018 movs r0, r3 4c5c: 4b0b ldr r3, [pc, #44] ; (4c8c ) 4c5e: 4798 blx r3 return LV_DESIGN_RES_OK; 4c60: 2000 movs r0, #0 4c62: e701 b.n 4a68 lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(obj + 8); 4c64: 2398 movs r3, #152 ; 0x98 4c66: 009b lsls r3, r3, #2 4c68: 18e0 adds r0, r4, r3 4c6a: 4b0c ldr r3, [pc, #48] ; (4c9c ) 4c6c: 4798 blx r3 _lv_mem_buf_release(param); 4c6e: 4b0c ldr r3, [pc, #48] ; (4ca0 ) 4c70: 4798 blx r3 4c72: e7b6 b.n 4be2 4c74: 00003a89 .word 0x00003a89 4c78: 00011699 .word 0x00011699 4c7c: 00003bed .word 0x00003bed 4c80: 0000800c .word 0x0000800c 4c84: 0000bfcd .word 0x0000bfcd 4c88: 00004701 .word 0x00004701 4c8c: 0000c071 .word 0x0000c071 4c90: 000127a1 .word 0x000127a1 4c94: 0000bd01 .word 0x0000bd01 4c98: 0000ba75 .word 0x0000ba75 4c9c: 0000bb41 .word 0x0000bb41 4ca0: 00012465 .word 0x00012465 00004ca4 : { 4ca4: b5f8 push {r3, r4, r5, r6, r7, lr} 4ca6: 0005 movs r5, r0 4ca8: 000e movs r6, r1 4caa: 0014 movs r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_OPA, text_opa, lv_opa_t, _opa, scalar) 4cac: 4a21 ldr r2, [pc, #132] ; (4d34 ) 4cae: 4b22 ldr r3, [pc, #136] ; (4d38 ) 4cb0: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_text_opa(obj, part); 4cb2: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 4cb4: 2805 cmp r0, #5 4cb6: d800 bhi.n 4cba } 4cb8: bdf8 pop {r3, r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4cba: 4a20 ldr r2, [pc, #128] ; (4d3c ) 4cbc: 0031 movs r1, r6 4cbe: 0028 movs r0, r5 4cc0: 4b1d ldr r3, [pc, #116] ; (4d38 ) 4cc2: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 4cc4: 28f9 cmp r0, #249 ; 0xf9 4cc6: d803 bhi.n 4cd0 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 4cc8: 7a23 ldrb r3, [r4, #8] 4cca: 4358 muls r0, r3 4ccc: 0a00 lsrs r0, r0, #8 4cce: 7220 strb r0, [r4, #8] if(draw_dsc->opa <= LV_OPA_MIN) return; 4cd0: 7a23 ldrb r3, [r4, #8] 4cd2: 2b05 cmp r3, #5 4cd4: d9f0 bls.n 4cb8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 4cd6: 4a1a ldr r2, [pc, #104] ; (4d40 ) 4cd8: 0031 movs r1, r6 4cda: 0028 movs r0, r5 4cdc: 4b19 ldr r3, [pc, #100] ; (4d44 ) 4cde: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_color(obj, part); 4ce0: 8020 strh r0, [r4, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 4ce2: 4a19 ldr r2, [pc, #100] ; (4d48 ) 4ce4: 0031 movs r1, r6 4ce6: 0028 movs r0, r5 4ce8: 4f18 ldr r7, [pc, #96] ; (4d4c ) 4cea: 47b8 blx r7 draw_dsc->letter_space = lv_obj_get_style_text_letter_space(obj, part); 4cec: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 4cee: 4a18 ldr r2, [pc, #96] ; (4d50 ) 4cf0: 0031 movs r1, r6 4cf2: 0028 movs r0, r5 4cf4: 47b8 blx r7 draw_dsc->line_space = lv_obj_get_style_text_line_space(obj, part); 4cf6: 8160 strh r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_DECOR, text_decor, lv_text_decor_t, _int, scalar) 4cf8: 4a16 ldr r2, [pc, #88] ; (4d54 ) 4cfa: 0031 movs r1, r6 4cfc: 0028 movs r0, r5 4cfe: 47b8 blx r7 draw_dsc->decor = lv_obj_get_style_text_decor(obj, part); 4d00: 7620 strb r0, [r4, #24] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t, _int, scalar) 4d02: 4a15 ldr r2, [pc, #84] ; (4d58 ) 4d04: 0031 movs r1, r6 4d06: 0028 movs r0, r5 4d08: 47b8 blx r7 draw_dsc->blend_mode = lv_obj_get_style_text_blend_mode(obj, part); 4d0a: 7660 strb r0, [r4, #25] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 4d0c: 4a13 ldr r2, [pc, #76] ; (4d5c ) 4d0e: 0031 movs r1, r6 4d10: 0028 movs r0, r5 4d12: 4b13 ldr r3, [pc, #76] ; (4d60 ) 4d14: 4798 blx r3 draw_dsc->font = lv_obj_get_style_text_font(obj, part); 4d16: 6060 str r0, [r4, #4] if(draw_dsc->sel_start != LV_DRAW_LABEL_NO_TXT_SEL && draw_dsc->sel_end != LV_DRAW_LABEL_NO_TXT_SEL) { 4d18: 89e2 ldrh r2, [r4, #14] 4d1a: 4b12 ldr r3, [pc, #72] ; (4d64 ) 4d1c: 429a cmp r2, r3 4d1e: d0cb beq.n 4cb8 4d20: 8a22 ldrh r2, [r4, #16] 4d22: 429a cmp r2, r3 4d24: d0c8 beq.n 4cb8 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar) 4d26: 4a10 ldr r2, [pc, #64] ; (4d68 ) 4d28: 0031 movs r1, r6 4d2a: 0028 movs r0, r5 4d2c: 4b05 ldr r3, [pc, #20] ; (4d44 ) 4d2e: 4798 blx r3 draw_dsc->color = lv_obj_get_style_text_sel_color(obj, part); 4d30: 8020 strh r0, [r4, #0] 4d32: e7c1 b.n 4cb8 4d34: 0000808c .word 0x0000808c 4d38: 00003bed .word 0x00003bed 4d3c: 0000800c .word 0x0000800c 4d40: 00008089 .word 0x00008089 4d44: 00003b49 .word 0x00003b49 4d48: 00008080 .word 0x00008080 4d4c: 00003a89 .word 0x00003a89 4d50: 00008081 .word 0x00008081 4d54: 00008082 .word 0x00008082 4d58: 00008083 .word 0x00008083 4d5c: 0000808e .word 0x0000808e 4d60: 00003c99 .word 0x00003c99 4d64: 0000ffff .word 0x0000ffff 4d68: 0000808a .word 0x0000808a 00004d6c : { 4d6c: b570 push {r4, r5, r6, lr} 4d6e: 0005 movs r5, r0 4d70: 000e movs r6, r1 4d72: 0014 movs r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 4d74: 4a1f ldr r2, [pc, #124] ; (4df4 ) 4d76: 4b20 ldr r3, [pc, #128] ; (4df8 ) 4d78: 4798 blx r3 draw_dsc->opa = lv_obj_get_style_image_opa(obj, part); 4d7a: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 4d7c: 2805 cmp r0, #5 4d7e: d800 bhi.n 4d82 } 4d80: bd70 pop {r4, r5, r6, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(OPA_SCALE, opa_scale, lv_opa_t, _opa, scalar) 4d82: 4a1e ldr r2, [pc, #120] ; (4dfc ) 4d84: 0031 movs r1, r6 4d86: 0028 movs r0, r5 4d88: 4b1b ldr r3, [pc, #108] ; (4df8 ) 4d8a: 4798 blx r3 if(opa_scale < LV_OPA_MAX) { 4d8c: 28f9 cmp r0, #249 ; 0xf9 4d8e: d803 bhi.n 4d98 draw_dsc->opa = (uint16_t)((uint16_t)draw_dsc->opa * opa_scale) >> 8; 4d90: 7823 ldrb r3, [r4, #0] 4d92: 4358 muls r0, r3 4d94: 0a00 lsrs r0, r0, #8 4d96: 7020 strb r0, [r4, #0] if(draw_dsc->opa <= LV_OPA_MIN) return; 4d98: 7823 ldrb r3, [r4, #0] 4d9a: 2b05 cmp r3, #5 4d9c: d9f0 bls.n 4d80 draw_dsc->angle = 0; 4d9e: 2300 movs r3, #0 4da0: 8063 strh r3, [r4, #2] draw_dsc->zoom = LV_IMG_ZOOM_NONE; 4da2: 3301 adds r3, #1 4da4: 33ff adds r3, #255 ; 0xff 4da6: 8123 strh r3, [r4, #8] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 4da8: 8aab ldrh r3, [r5, #20] 4daa: 3301 adds r3, #1 4dac: 8a2a ldrh r2, [r5, #16] 4dae: 1a9b subs r3, r3, r2 draw_dsc->pivot.x = lv_area_get_width(&obj->coords) / 2; 4db0: b21b sxth r3, r3 4db2: 0fda lsrs r2, r3, #31 4db4: 18d3 adds r3, r2, r3 4db6: 105b asrs r3, r3, #1 4db8: 80a3 strh r3, [r4, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 4dba: 8aeb ldrh r3, [r5, #22] 4dbc: 3301 adds r3, #1 4dbe: 8a6a ldrh r2, [r5, #18] 4dc0: 1a9b subs r3, r3, r2 draw_dsc->pivot.y = lv_area_get_height(&obj->coords) / 2; 4dc2: b21b sxth r3, r3 4dc4: 0fda lsrs r2, r3, #31 4dc6: 18d3 adds r3, r2, r3 4dc8: 105b asrs r3, r3, #1 4dca: 80e3 strh r3, [r4, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t, _opa, scalar) 4dcc: 4a0c ldr r2, [pc, #48] ; (4e00 ) 4dce: 0031 movs r1, r6 4dd0: 0028 movs r0, r5 4dd2: 4b09 ldr r3, [pc, #36] ; (4df8 ) 4dd4: 4798 blx r3 draw_dsc->recolor_opa = lv_obj_get_style_image_recolor_opa(obj, part); 4dd6: 72a0 strb r0, [r4, #10] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 4dd8: 4a0a ldr r2, [pc, #40] ; (4e04 ) 4dda: 0031 movs r1, r6 4ddc: 0028 movs r0, r5 4dde: 4b0a ldr r3, [pc, #40] ; (4e08 ) 4de0: 4798 blx r3 draw_dsc->recolor = lv_obj_get_style_image_recolor(obj, part); 4de2: 81a0 strh r0, [r4, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) 4de4: 4a09 ldr r2, [pc, #36] ; (4e0c ) 4de6: 0031 movs r1, r6 4de8: 0028 movs r0, r5 4dea: 4b09 ldr r3, [pc, #36] ; (4e10 ) 4dec: 4798 blx r3 draw_dsc->blend_mode = lv_obj_get_style_image_blend_mode(obj, part); 4dee: 73a0 strb r0, [r4, #14] 4df0: e7c6 b.n 4d80 4df2: 46c0 nop ; (mov r8, r8) 4df4: 000080ac .word 0x000080ac 4df8: 00003bed .word 0x00003bed 4dfc: 0000800c .word 0x0000800c 4e00: 000080ad .word 0x000080ad 4e04: 000080a9 .word 0x000080a9 4e08: 00003b49 .word 0x00003b49 4e0c: 000080a0 .word 0x000080a0 4e10: 00003a89 .word 0x00003a89 00004e14 : { 4e14: b5f0 push {r4, r5, r6, r7, lr} 4e16: 46de mov lr, fp 4e18: 4657 mov r7, sl 4e1a: 464e mov r6, r9 4e1c: b5c0 push {r6, r7, lr} 4e1e: b08a sub sp, #40 ; 0x28 4e20: 0004 movs r4, r0 4e22: 9104 str r1, [sp, #16] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 4e24: 2250 movs r2, #80 ; 0x50 4e26: 4b78 ldr r3, [pc, #480] ; (5008 ) 4e28: 4798 blx r3 4e2a: 0006 movs r6, r0 4e2c: 1e05 subs r5, r0, #0 if(sh_width) { 4e2e: d130 bne.n 4e92 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_STR, value_str, const char *, _ptr, scalar) 4e30: 227f movs r2, #127 ; 0x7f 4e32: 9f04 ldr r7, [sp, #16] 4e34: 0039 movs r1, r7 4e36: 0020 movs r0, r4 4e38: 4b74 ldr r3, [pc, #464] ; (500c ) 4e3a: 4798 blx r3 4e3c: 1e06 subs r6, r0, #0 if(value_str) { 4e3e: d006 beq.n 4e4e _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OPA, value_opa, lv_opa_t, _opa, scalar) 4e40: 227c movs r2, #124 ; 0x7c 4e42: 0039 movs r1, r7 4e44: 0020 movs r0, r4 4e46: 4b72 ldr r3, [pc, #456] ; (5010 ) 4e48: 4798 blx r3 if(value_opa > LV_OPA_MIN) { 4e4a: 2805 cmp r0, #5 4e4c: d850 bhi.n 4ef0 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 4e4e: 2240 movs r2, #64 ; 0x40 4e50: 9904 ldr r1, [sp, #16] 4e52: 0020 movs r0, r4 4e54: 4b6c ldr r3, [pc, #432] ; (5008 ) 4e56: 4798 blx r3 4e58: 1e06 subs r6, r0, #0 if(outline_width) { 4e5a: d000 beq.n 4e5e 4e5c: e0c0 b.n 4fe0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 4e5e: 2204 movs r2, #4 4e60: 9904 ldr r1, [sp, #16] 4e62: 0020 movs r0, r4 4e64: 4f68 ldr r7, [pc, #416] ; (5008 ) 4e66: 47b8 blx r7 4e68: 0006 movs r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 4e6a: 2205 movs r2, #5 4e6c: 9904 ldr r1, [sp, #16] 4e6e: 0020 movs r0, r4 4e70: 47b8 blx r7 lv_coord_t wh = LV_MATH_MAX(w, h); 4e72: 1c03 adds r3, r0, #0 4e74: 42b0 cmp r0, r6 4e76: da00 bge.n 4e7a 4e78: 1c33 adds r3, r6, #0 4e7a: b21a sxth r2, r3 if(wh > 0) s += wh; 4e7c: 2a00 cmp r2, #0 4e7e: dd01 ble.n 4e84 4e80: 18ed adds r5, r5, r3 4e82: b22d sxth r5, r5 } 4e84: 0028 movs r0, r5 4e86: b00a add sp, #40 ; 0x28 4e88: bc1c pop {r2, r3, r4} 4e8a: 4691 mov r9, r2 4e8c: 469a mov sl, r3 4e8e: 46a3 mov fp, r4 4e90: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OPA, shadow_opa, lv_opa_t, _opa, scalar) 4e92: 225c movs r2, #92 ; 0x5c 4e94: 9904 ldr r1, [sp, #16] 4e96: 0020 movs r0, r4 4e98: 4b5d ldr r3, [pc, #372] ; (5010 ) 4e9a: 4798 blx r3 lv_coord_t s = 0; 4e9c: 2500 movs r5, #0 if(sh_opa > LV_OPA_MIN) { 4e9e: 2805 cmp r0, #5 4ea0: d9c6 bls.n 4e30 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 4ea2: 2253 movs r2, #83 ; 0x53 4ea4: 9d04 ldr r5, [sp, #16] 4ea6: 0029 movs r1, r5 4ea8: 0020 movs r0, r4 4eaa: 4f57 ldr r7, [pc, #348] ; (5008 ) 4eac: 47b8 blx r7 sh_width = sh_width / 2; /*THe blur adds only half width*/ 4eae: 0ff3 lsrs r3, r6, #31 4eb0: 199e adds r6, r3, r6 4eb2: 1076 asrs r6, r6, #1 sh_width++; 4eb4: 3601 adds r6, #1 sh_width += lv_obj_get_style_shadow_spread(obj, part); 4eb6: 1836 adds r6, r6, r0 4eb8: b2b6 uxth r6, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t, _int, scalar) 4eba: 2251 movs r2, #81 ; 0x51 4ebc: 9504 str r5, [sp, #16] 4ebe: 0029 movs r1, r5 4ec0: 0020 movs r0, r4 4ec2: 47b8 blx r7 4ec4: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t, _int, scalar) 4ec6: 2252 movs r2, #82 ; 0x52 4ec8: 9904 ldr r1, [sp, #16] 4eca: 0020 movs r0, r4 4ecc: 47b8 blx r7 sh_width += LV_MATH_MAX(LV_MATH_ABS(sh_ofs_x), LV_MATH_ABS(sh_ofs_y)); 4ece: 17ea asrs r2, r5, #31 4ed0: 18ab adds r3, r5, r2 4ed2: 4053 eors r3, r2 4ed4: 17c2 asrs r2, r0, #31 4ed6: 1880 adds r0, r0, r2 4ed8: 4050 eors r0, r2 4eda: 4298 cmp r0, r3 4edc: da00 bge.n 4ee0 4ede: 0018 movs r0, r3 4ee0: 1830 adds r0, r6, r0 s = LV_MATH_MAX(s, sh_width); 4ee2: 1c03 adds r3, r0, #0 4ee4: 0402 lsls r2, r0, #16 4ee6: d401 bmi.n 4eec 4ee8: b21d sxth r5, r3 4eea: e7a1 b.n 4e30 4eec: 2300 movs r3, #0 4eee: e7fb b.n 4ee8 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t, _int, scalar) 4ef0: 2270 movs r2, #112 ; 0x70 4ef2: 9f04 ldr r7, [sp, #16] 4ef4: 0039 movs r1, r7 4ef6: 0020 movs r0, r4 4ef8: 4b43 ldr r3, [pc, #268] ; (5008 ) 4efa: 4699 mov r9, r3 4efc: 4798 blx r3 4efe: 9005 str r0, [sp, #20] 4f00: 2270 movs r2, #112 ; 0x70 4f02: 0039 movs r1, r7 4f04: 0020 movs r0, r4 4f06: 47c8 blx r9 4f08: 4683 mov fp, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 4f0a: 227e movs r2, #126 ; 0x7e 4f0c: 9704 str r7, [sp, #16] 4f0e: 0039 movs r1, r7 4f10: 0020 movs r0, r4 4f12: 4b3e ldr r3, [pc, #248] ; (500c ) 4f14: 4798 blx r3 4f16: 0002 movs r2, r0 _lv_txt_get_size(&txt_size, value_str, font, letter_space, line_space, LV_COORD_MAX, LV_TXT_FLAG_NONE); 4f18: af06 add r7, sp, #24 4f1a: 2100 movs r1, #0 4f1c: 468a mov sl, r1 4f1e: 9102 str r1, [sp, #8] 4f20: 4b3c ldr r3, [pc, #240] ; (5014 ) 4f22: 9301 str r3, [sp, #4] 4f24: 4659 mov r1, fp 4f26: 9100 str r1, [sp, #0] 4f28: 9b05 ldr r3, [sp, #20] 4f2a: 0031 movs r1, r6 4f2c: 0038 movs r0, r7 4f2e: 4e3a ldr r6, [pc, #232] ; (5018 ) 4f30: 47b0 blx r6 value_area.x1 = 0; 4f32: ae08 add r6, sp, #32 4f34: 4653 mov r3, sl 4f36: 8033 strh r3, [r6, #0] value_area.y1 = 0; 4f38: 8073 strh r3, [r6, #2] value_area.x2 = txt_size.x - 1; 4f3a: 883b ldrh r3, [r7, #0] 4f3c: 3b01 subs r3, #1 4f3e: 80b3 strh r3, [r6, #4] value_area.y2 = txt_size.y - 1; 4f40: 887b ldrh r3, [r7, #2] 4f42: 3b01 subs r3, #1 4f44: 80f3 strh r3, [r6, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_ALIGN, value_align, lv_align_t, _int, scalar) 4f46: 2275 movs r2, #117 ; 0x75 4f48: 9f04 ldr r7, [sp, #16] 4f4a: 0039 movs r1, r7 4f4c: 0020 movs r0, r4 4f4e: 47c8 blx r9 4f50: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_X, value_ofs_x, lv_style_int_t, _int, scalar) 4f52: 2273 movs r2, #115 ; 0x73 4f54: 0039 movs r1, r7 4f56: 0020 movs r0, r4 4f58: 47c8 blx r9 4f5a: 4682 mov sl, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t, _int, scalar) 4f5c: 2274 movs r2, #116 ; 0x74 4f5e: 0039 movs r1, r7 4f60: 0020 movs r0, r4 4f62: 47c8 blx r9 4f64: 4681 mov r9, r0 _lv_area_align(&obj->coords, &value_area, align, &p_align); 4f66: aa07 add r2, sp, #28 4f68: 0013 movs r3, r2 4f6a: 466a mov r2, sp 4f6c: 7d12 ldrb r2, [r2, #20] 4f6e: 0020 movs r0, r4 4f70: 3010 adds r0, #16 4f72: 9305 str r3, [sp, #20] 4f74: 0031 movs r1, r6 4f76: 4f29 ldr r7, [pc, #164] ; (501c ) 4f78: 47b8 blx r7 value_area.x1 += p_align.x + xofs; 4f7a: 9a05 ldr r2, [sp, #20] 4f7c: 8813 ldrh r3, [r2, #0] 4f7e: 4453 add r3, sl 4f80: b29b uxth r3, r3 value_area.y1 += p_align.y + yofs; 4f82: 8852 ldrh r2, [r2, #2] 4f84: 444a add r2, r9 4f86: b292 uxth r2, r2 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 4f88: 2010 movs r0, #16 4f8a: 5e21 ldrsh r1, [r4, r0] value_area.x1 += p_align.x + xofs; 4f8c: 8836 ldrh r6, [r6, #0] 4f8e: 199e adds r6, r3, r6 s = LV_MATH_MAX(s, obj->coords.x1 - value_area.x1); 4f90: b236 sxth r6, r6 4f92: 1b8e subs r6, r1, r6 4f94: 42ae cmp r6, r5 4f96: da00 bge.n 4f9a 4f98: 002e movs r6, r5 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 4f9a: 2112 movs r1, #18 4f9c: 5e60 ldrsh r0, [r4, r1] value_area.y1 += p_align.y + yofs; 4f9e: a908 add r1, sp, #32 4fa0: 8849 ldrh r1, [r1, #2] 4fa2: 1851 adds r1, r2, r1 s = LV_MATH_MAX(s, obj->coords.y1 - value_area.y1); 4fa4: b209 sxth r1, r1 4fa6: b236 sxth r6, r6 4fa8: 1a41 subs r1, r0, r1 4faa: 42b1 cmp r1, r6 4fac: da00 bge.n 4fb0 4fae: 0031 movs r1, r6 value_area.x2 += p_align.x + xofs; 4fb0: a808 add r0, sp, #32 4fb2: 8880 ldrh r0, [r0, #4] 4fb4: 181b adds r3, r3, r0 s = LV_MATH_MAX(s, value_area.x2 - obj->coords.x2); 4fb6: b21b sxth r3, r3 4fb8: 2514 movs r5, #20 4fba: 5f60 ldrsh r0, [r4, r5] 4fbc: b209 sxth r1, r1 4fbe: 1a1b subs r3, r3, r0 4fc0: 428b cmp r3, r1 4fc2: da00 bge.n 4fc6 4fc4: 000b movs r3, r1 value_area.y2 += p_align.y + yofs; 4fc6: a908 add r1, sp, #32 4fc8: 88c9 ldrh r1, [r1, #6] 4fca: 1852 adds r2, r2, r1 s = LV_MATH_MAX(s, value_area.y2 - obj->coords.y2); 4fcc: b212 sxth r2, r2 4fce: 2016 movs r0, #22 4fd0: 5e21 ldrsh r1, [r4, r0] 4fd2: b21b sxth r3, r3 4fd4: 1a52 subs r2, r2, r1 4fd6: 429a cmp r2, r3 4fd8: da00 bge.n 4fdc 4fda: 001a movs r2, r3 4fdc: b215 sxth r5, r2 4fde: e736 b.n 4e4e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 4fe0: 224c movs r2, #76 ; 0x4c 4fe2: 9904 ldr r1, [sp, #16] 4fe4: 0020 movs r0, r4 4fe6: 4b0a ldr r3, [pc, #40] ; (5010 ) 4fe8: 4798 blx r3 if(outline_opa > LV_OPA_MIN) { 4fea: 2805 cmp r0, #5 4fec: d800 bhi.n 4ff0 4fee: e736 b.n 4e5e _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 4ff0: 2241 movs r2, #65 ; 0x41 4ff2: 9904 ldr r1, [sp, #16] 4ff4: 0020 movs r0, r4 4ff6: 4b04 ldr r3, [pc, #16] ; (5008 ) 4ff8: 4798 blx r3 s = LV_MATH_MAX(s, outline_pad + outline_width); 4ffa: 1986 adds r6, r0, r6 4ffc: 42ae cmp r6, r5 4ffe: da00 bge.n 5002 5000: 002e movs r6, r5 5002: b235 sxth r5, r6 5004: e72b b.n 4e5e 5006: 46c0 nop ; (mov r8, r8) 5008: 00003a89 .word 0x00003a89 500c: 00003c99 .word 0x00003c99 5010: 00003bed .word 0x00003bed 5014: 00007c18 .word 0x00007c18 5018: 00013f3d .word 0x00013f3d 501c: 0001173d .word 0x0001173d 00005020 : { 5020: b510 push {r4, lr} 5022: 0004 movs r4, r0 if(sign == LV_SIGNAL_GET_STYLE) { 5024: 2908 cmp r1, #8 5026: d01b beq.n 5060 else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 5028: 2907 cmp r1, #7 502a: d024 beq.n 5076 if(sign == LV_SIGNAL_CHILD_CHG) { 502c: 2901 cmp r1, #1 502e: d027 beq.n 5080 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 5030: 2906 cmp r1, #6 5032: d02b beq.n 508c else if(sign == LV_SIGNAL_PARENT_SIZE_CHG) { 5034: 2903 cmp r1, #3 5036: d035 beq.n 50a4 else if(sign == LV_SIGNAL_STYLE_CHG) { 5038: 2904 cmp r1, #4 503a: d03d beq.n 50b8 else if(sign == LV_SIGNAL_PRESSED) { 503c: 290b cmp r1, #11 503e: d03f beq.n 50c0 else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { 5040: 000b movs r3, r1 5042: 3b0d subs r3, #13 5044: 2b01 cmp r3, #1 5046: d940 bls.n 50ca else if(sign == LV_SIGNAL_FOCUS) { 5048: 2916 cmp r1, #22 504a: d043 beq.n 50d4 else if(sign == LV_SIGNAL_DEFOCUS) { 504c: 2917 cmp r1, #23 504e: d057 beq.n 5100 lv_res_t res = LV_RES_OK; 5050: 2001 movs r0, #1 else if(sign == LV_SIGNAL_CLEANUP) { 5052: 2900 cmp r1, #0 5054: d10a bne.n 506c lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 5056: 0020 movs r0, r4 5058: 4b2c ldr r3, [pc, #176] ; (510c ) 505a: 4798 blx r3 lv_res_t res = LV_RES_OK; 505c: 2001 movs r0, #1 505e: e005 b.n 506c if(info->part == LV_OBJ_PART_MAIN) info->result = &obj->style_list; 5060: 7813 ldrb r3, [r2, #0] 5062: 2b00 cmp r3, #0 5064: d103 bne.n 506e 5066: 3428 adds r4, #40 ; 0x28 5068: 6054 str r4, [r2, #4] return LV_RES_OK; 506a: 2001 movs r0, #1 } 506c: bd10 pop {r4, pc} else info->result = NULL; 506e: 2300 movs r3, #0 5070: 6053 str r3, [r2, #4] return LV_RES_OK; 5072: 2001 movs r0, #1 5074: e7fa b.n 506c else if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 5076: 4926 ldr r1, [pc, #152] ; (5110 ) 5078: 0010 movs r0, r2 507a: 4b26 ldr r3, [pc, #152] ; (5114 ) 507c: 4798 blx r3 507e: e7f5 b.n 506c if(lv_obj_is_protected(obj, LV_PROTECT_CHILD_CHG) != false) res = LV_RES_INV; 5080: 4b25 ldr r3, [pc, #148] ; (5118 ) 5082: 4798 blx r3 5084: 2301 movs r3, #1 5086: 4058 eors r0, r3 return LV_RES_OK; 5088: b2c0 uxtb r0, r0 508a: e7ef b.n 506c lv_coord_t d = lv_obj_get_draw_rect_ext_pad_size(obj, LV_OBJ_PART_MAIN); 508c: 2100 movs r1, #0 508e: 4b23 ldr r3, [pc, #140] ; (511c ) 5090: 4798 blx r3 obj->ext_draw_pad = LV_MATH_MAX(obj->ext_draw_pad, d); 5092: 8e63 ldrh r3, [r4, #50] ; 0x32 5094: 1c1a adds r2, r3, #0 5096: b21b sxth r3, r3 5098: 4283 cmp r3, r0 509a: da00 bge.n 509e 509c: 1c02 adds r2, r0, #0 509e: 8662 strh r2, [r4, #50] ; 0x32 lv_res_t res = LV_RES_OK; 50a0: 2001 movs r0, #1 50a2: e7e3 b.n 506c if(obj->realign.auto_realign) { 50a4: 2349 movs r3, #73 ; 0x49 50a6: 5cc3 ldrb r3, [r0, r3] lv_res_t res = LV_RES_OK; 50a8: 2001 movs r0, #1 if(obj->realign.auto_realign) { 50aa: 07db lsls r3, r3, #31 50ac: d5de bpl.n 506c lv_obj_realign(obj); 50ae: 0020 movs r0, r4 50b0: 4b1b ldr r3, [pc, #108] ; (5120 ) 50b2: 4798 blx r3 lv_res_t res = LV_RES_OK; 50b4: 2001 movs r0, #1 50b6: e7d9 b.n 506c lv_obj_refresh_ext_draw_pad(obj); 50b8: 4b1a ldr r3, [pc, #104] ; (5124 ) 50ba: 4798 blx r3 lv_res_t res = LV_RES_OK; 50bc: 2001 movs r0, #1 50be: e7d5 b.n 506c lv_obj_add_state(obj, LV_STATE_PRESSED); 50c0: 3105 adds r1, #5 50c2: 4b19 ldr r3, [pc, #100] ; (5128 ) 50c4: 4798 blx r3 lv_res_t res = LV_RES_OK; 50c6: 2001 movs r0, #1 50c8: e7d0 b.n 506c lv_obj_clear_state(obj, LV_STATE_PRESSED); 50ca: 2110 movs r1, #16 50cc: 4b17 ldr r3, [pc, #92] ; (512c ) 50ce: 4798 blx r3 lv_res_t res = LV_RES_OK; 50d0: 2001 movs r0, #1 50d2: e7cb b.n 506c if(lv_group_get_editing(lv_obj_get_group(obj))) { 50d4: 4b16 ldr r3, [pc, #88] ; (5130 ) 50d6: 4798 blx r3 50d8: 4b16 ldr r3, [pc, #88] ; (5134 ) 50da: 4798 blx r3 50dc: 2800 cmp r0, #0 50de: d005 beq.n 50ec lv_obj_add_state(obj, state); 50e0: 2106 movs r1, #6 50e2: 0020 movs r0, r4 50e4: 4b10 ldr r3, [pc, #64] ; (5128 ) 50e6: 4798 blx r3 lv_res_t res = LV_RES_OK; 50e8: 2001 movs r0, #1 50ea: e7bf b.n 506c lv_obj_add_state(obj, LV_STATE_FOCUSED); 50ec: 2102 movs r1, #2 50ee: 0020 movs r0, r4 50f0: 4b0d ldr r3, [pc, #52] ; (5128 ) 50f2: 4798 blx r3 lv_obj_clear_state(obj, LV_STATE_EDITED); 50f4: 2104 movs r1, #4 50f6: 0020 movs r0, r4 50f8: 4b0c ldr r3, [pc, #48] ; (512c ) 50fa: 4798 blx r3 lv_res_t res = LV_RES_OK; 50fc: 2001 movs r0, #1 50fe: e7b5 b.n 506c lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED); 5100: 3911 subs r1, #17 5102: 4b0a ldr r3, [pc, #40] ; (512c ) 5104: 4798 blx r3 lv_res_t res = LV_RES_OK; 5106: 2001 movs r0, #1 5108: e7b0 b.n 506c 510a: 46c0 nop ; (mov r8, r8) 510c: 00002625 .word 0x00002625 5110: 00025d8c .word 0x00025d8c 5114: 000046d9 .word 0x000046d9 5118: 000039c5 .word 0x000039c5 511c: 00004e15 .word 0x00004e15 5120: 00002f2d .word 0x00002f2d 5124: 0000214d .word 0x0000214d 5128: 000042c5 .word 0x000042c5 512c: 00004325 .word 0x00004325 5130: 0000441d .word 0x0000441d 5134: 00001c53 .word 0x00001c53 00005138 : * @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) { 5138: b5f0 push {r4, r5, r6, r7, lr} 513a: 46ce mov lr, r9 513c: b500 push {lr} 513e: b082 sub sp, #8 5140: 0004 movs r4, r0 5142: 9001 str r0, [sp, #4] 5144: 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) { 5146: 3110 adds r1, #16 5148: 2200 movs r2, #0 514a: 4b1f ldr r3, [pc, #124] ; (51c8 ) 514c: 4798 blx r3 514e: 2800 cmp r0, #0 5150: d027 beq.n 51a2 5152: 2334 movs r3, #52 ; 0x34 5154: 5ceb ldrb r3, [r5, r3] 5156: 06db lsls r3, r3, #27 5158: d425 bmi.n 51a6 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 515a: 6a2b ldr r3, [r5, #32] 515c: 2b00 cmp r3, #0 515e: d028 beq.n 51b2 5160: 2202 movs r2, #2 5162: 0021 movs r1, r4 5164: 0028 movs r0, r5 5166: 4798 blx r3 5168: 4681 mov r9, r0 LV_DESIGN_COVER_CHK) : LV_DESIGN_RES_NOT_COVER; if(design_res == LV_DESIGN_RES_MASKED) return NULL; 516a: 2803 cmp r0, #3 516c: d01d beq.n 51aa lv_obj_t * i; _LV_LL_READ(obj->child_ll, i) { 516e: 1d2e adds r6, r5, #4 5170: 0030 movs r0, r6 5172: 4b16 ldr r3, [pc, #88] ; (51cc ) 5174: 4798 blx r3 5176: 1e04 subs r4, r0, #0 5178: d00b beq.n 5192 517a: 4f15 ldr r7, [pc, #84] ; (51d0 ) found_p = lv_refr_get_top_obj(area_p, i); 517c: 0021 movs r1, r4 517e: 9801 ldr r0, [sp, #4] 5180: f7ff ffda bl 5138 /*If a children is ok then break*/ if(found_p != NULL) { 5184: 2800 cmp r0, #0 5186: d108 bne.n 519a _LV_LL_READ(obj->child_ll, i) { 5188: 0021 movs r1, r4 518a: 0030 movs r0, r6 518c: 47b8 blx r7 518e: 1e04 subs r4, r0, #0 5190: d1f4 bne.n 517c 5192: 2000 movs r0, #0 } } /*If no better children use this object*/ if(found_p == NULL) { if(design_res == LV_DESIGN_RES_COVER) { 5194: 464b mov r3, r9 5196: 2b01 cmp r3, #1 5198: d009 beq.n 51ae } } } return found_p; } 519a: b002 add sp, #8 519c: bc04 pop {r2} 519e: 4691 mov r9, r2 51a0: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_t * found_p = NULL; 51a2: 2000 movs r0, #0 51a4: e7f9 b.n 519a 51a6: 2000 movs r0, #0 51a8: e7f7 b.n 519a if(design_res == LV_DESIGN_RES_MASKED) return NULL; 51aa: 2000 movs r0, #0 51ac: e7f5 b.n 519a found_p = obj; 51ae: 0028 movs r0, r5 51b0: e7f3 b.n 519a _LV_LL_READ(obj->child_ll, i) { 51b2: 1d2e adds r6, r5, #4 51b4: 0030 movs r0, r6 51b6: 4b05 ldr r3, [pc, #20] ; (51cc ) 51b8: 4798 blx r3 51ba: 0004 movs r4, r0 lv_design_res_t design_res = obj->design_cb ? obj->design_cb(obj, area_p, 51bc: 2302 movs r3, #2 51be: 4699 mov r9, r3 _LV_LL_READ(obj->child_ll, i) { 51c0: 2800 cmp r0, #0 51c2: d1da bne.n 517a 51c4: e7e9 b.n 519a 51c6: 46c0 nop ; (mov r8, r8) 51c8: 00011699 .word 0x00011699 51cc: 00011e85 .word 0x00011e85 51d0: 00011e9d .word 0x00011e9d 000051d4 : * 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) { 51d4: b5f0 push {r4, r5, r6, r7, lr} 51d6: 46d6 mov lr, sl 51d8: 464f mov r7, r9 51da: b580 push {r7, lr} 51dc: b08d sub sp, #52 ; 0x34 51de: 0007 movs r7, r0 51e0: 000d movs r5, r1 /*Do not refresh hidden objects*/ if(obj->hidden != 0) return; 51e2: 2334 movs r3, #52 ; 0x34 51e4: 5cc3 ldrb r3, [r0, r3] 51e6: 06db lsls r3, r3, #27 51e8: d504 bpl.n 51f4 } /* 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); } } 51ea: b00d add sp, #52 ; 0x34 51ec: bc0c pop {r2, r3} 51ee: 4691 mov r9, r2 51f0: 469a mov sl, r3 51f2: bdf0 pop {r4, r5, r6, r7, pc} lv_coord_t ext_size = obj->ext_draw_pad; 51f4: 2332 movs r3, #50 ; 0x32 51f6: 5ec6 ldrsh r6, [r0, r3] lv_obj_get_coords(obj, &obj_area); 51f8: ac06 add r4, sp, #24 51fa: 0021 movs r1, r4 51fc: 4b2e ldr r3, [pc, #184] ; (52b8 ) 51fe: 4798 blx r3 obj_area.x1 -= ext_size; 5200: b2b3 uxth r3, r6 5202: 8822 ldrh r2, [r4, #0] 5204: 1ad2 subs r2, r2, r3 5206: 8022 strh r2, [r4, #0] obj_area.y1 -= ext_size; 5208: 8862 ldrh r2, [r4, #2] 520a: 1ad2 subs r2, r2, r3 520c: 8062 strh r2, [r4, #2] obj_area.x2 += ext_size; 520e: 88a2 ldrh r2, [r4, #4] 5210: 189a adds r2, r3, r2 5212: 80a2 strh r2, [r4, #4] obj_area.y2 += ext_size; 5214: 88e2 ldrh r2, [r4, #6] 5216: 189b adds r3, r3, r2 5218: 80e3 strh r3, [r4, #6] union_ok = _lv_area_intersect(&obj_ext_mask, mask_ori_p, &obj_area); 521a: 0022 movs r2, r4 521c: 0029 movs r1, r5 521e: a808 add r0, sp, #32 5220: 4b26 ldr r3, [pc, #152] ; (52bc ) 5222: 4798 blx r3 if(union_ok != false) { 5224: 2800 cmp r0, #0 5226: d0e0 beq.n 51ea if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN); 5228: 6a3b ldr r3, [r7, #32] 522a: 2b00 cmp r3, #0 522c: d003 beq.n 5236 522e: 2200 movs r2, #0 5230: a908 add r1, sp, #32 5232: 0038 movs r0, r7 5234: 4798 blx r3 lv_obj_get_coords(obj, &obj_area); 5236: a906 add r1, sp, #24 5238: 0038 movs r0, r7 523a: 4b1f ldr r3, [pc, #124] ; (52b8 ) 523c: 4798 blx r3 union_ok = _lv_area_intersect(&obj_mask, mask_ori_p, &obj_area); 523e: aa06 add r2, sp, #24 5240: 0029 movs r1, r5 5242: a80a add r0, sp, #40 ; 0x28 5244: 4b1d ldr r3, [pc, #116] ; (52bc ) 5246: 4798 blx r3 if(union_ok != false) { 5248: 2800 cmp r0, #0 524a: d107 bne.n 525c if(obj->design_cb) obj->design_cb(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST); 524c: 6a3b ldr r3, [r7, #32] 524e: 2b00 cmp r3, #0 5250: d0cb beq.n 51ea 5252: 2201 movs r2, #1 5254: a908 add r1, sp, #32 5256: 0038 movs r0, r7 5258: 4798 blx r3 525a: e7c6 b.n 51ea _LV_LL_READ_BACK(obj->child_ll, child_p) { 525c: 1d3b adds r3, r7, #4 525e: 9301 str r3, [sp, #4] 5260: 0018 movs r0, r3 5262: 4b17 ldr r3, [pc, #92] ; (52c0 ) 5264: 4798 blx r3 5266: 1e05 subs r5, r0, #0 5268: d0f0 beq.n 524c lv_obj_get_coords(child_p, &child_area); 526a: 4b13 ldr r3, [pc, #76] ; (52b8 ) 526c: 469a mov sl, r3 union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 526e: 4b13 ldr r3, [pc, #76] ; (52bc ) 5270: 4699 mov r9, r3 _LV_LL_READ_BACK(obj->child_ll, child_p) { 5272: 4e14 ldr r6, [pc, #80] ; (52c4 ) 5274: e004 b.n 5280 5276: 0029 movs r1, r5 5278: 9801 ldr r0, [sp, #4] 527a: 47b0 blx r6 527c: 1e05 subs r5, r0, #0 527e: d0e5 beq.n 524c lv_obj_get_coords(child_p, &child_area); 5280: ac04 add r4, sp, #16 5282: 0021 movs r1, r4 5284: 0028 movs r0, r5 5286: 47d0 blx sl child_area.x1 -= ext_size; 5288: 8e6b ldrh r3, [r5, #50] ; 0x32 528a: 8822 ldrh r2, [r4, #0] 528c: 1ad2 subs r2, r2, r3 528e: 8022 strh r2, [r4, #0] child_area.y1 -= ext_size; 5290: 8862 ldrh r2, [r4, #2] 5292: 1ad2 subs r2, r2, r3 5294: 8062 strh r2, [r4, #2] child_area.x2 += ext_size; 5296: 88a2 ldrh r2, [r4, #4] 5298: 189a adds r2, r3, r2 529a: 80a2 strh r2, [r4, #4] child_area.y2 += ext_size; 529c: 88e2 ldrh r2, [r4, #6] 529e: 189b adds r3, r3, r2 52a0: 80e3 strh r3, [r4, #6] union_ok = _lv_area_intersect(&mask_child, &obj_mask, &child_area); 52a2: 0022 movs r2, r4 52a4: a90a add r1, sp, #40 ; 0x28 52a6: a802 add r0, sp, #8 52a8: 47c8 blx r9 if(union_ok) { 52aa: 2800 cmp r0, #0 52ac: d0e3 beq.n 5276 lv_refr_obj(child_p, &mask_child); 52ae: a902 add r1, sp, #8 52b0: 0028 movs r0, r5 52b2: f7ff ff8f bl 51d4 52b6: e7de b.n 5276 52b8: 0000237d .word 0x0000237d 52bc: 0001140b .word 0x0001140b 52c0: 00011e91 .word 0x00011e91 52c4: 00011ec5 .word 0x00011ec5 000052c8 : { 52c8: b5f0 push {r4, r5, r6, r7, lr} 52ca: 46d6 mov lr, sl 52cc: b500 push {lr} 52ce: b082 sub sp, #8 52d0: 1e04 subs r4, r0, #0 52d2: 9101 str r1, [sp, #4] if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 52d4: d00d beq.n 52f2 lv_refr_obj(top_p, mask_p); 52d6: 9901 ldr r1, [sp, #4] 52d8: 0020 movs r0, r4 52da: 4b1a ldr r3, [pc, #104] ; (5344 ) 52dc: 4798 blx r3 par = lv_obj_get_parent(top_p); 52de: 0020 movs r0, r4 52e0: 4b19 ldr r3, [pc, #100] ; (5348 ) 52e2: 4798 blx r3 52e4: 1e05 subs r5, r0, #0 while(par != NULL) { 52e6: d00a beq.n 52fe lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 52e8: 4b18 ldr r3, [pc, #96] ; (534c ) 52ea: 469a mov sl, r3 lv_refr_obj(i, mask_p); 52ec: 4e15 ldr r6, [pc, #84] ; (5344 ) i = _lv_ll_get_prev(&(par->child_ll), i); 52ee: 001f movs r7, r3 52f0: e010 b.n 5314 if(top_p == NULL) top_p = lv_disp_get_scr_act(disp_refr); 52f2: 4b17 ldr r3, [pc, #92] ; (5350 ) 52f4: 6818 ldr r0, [r3, #0] 52f6: 4b17 ldr r3, [pc, #92] ; (5354 ) 52f8: 4798 blx r3 52fa: 1e04 subs r4, r0, #0 if(top_p == NULL) return; /*Shouldn't happen*/ 52fc: d1eb bne.n 52d6 } 52fe: b002 add sp, #8 5300: bc04 pop {r2} 5302: 4692 mov sl, r2 5304: bdf0 pop {r4, r5, r6, r7, pc} par = lv_obj_get_parent(par); 5306: 0028 movs r0, r5 5308: 4b0f ldr r3, [pc, #60] ; (5348 ) 530a: 4798 blx r3 530c: 002c movs r4, r5 while(par != NULL) { 530e: 2800 cmp r0, #0 5310: d0f5 beq.n 52fe par = lv_obj_get_parent(par); 5312: 0005 movs r5, r0 lv_obj_t * i = _lv_ll_get_prev(&(par->child_ll), border_p); 5314: 1d2b adds r3, r5, #4 5316: 9300 str r3, [sp, #0] 5318: 0021 movs r1, r4 531a: 0018 movs r0, r3 531c: 47d0 blx sl 531e: 1e04 subs r4, r0, #0 while(i != NULL) { 5320: d007 beq.n 5332 lv_refr_obj(i, mask_p); 5322: 9901 ldr r1, [sp, #4] 5324: 0020 movs r0, r4 5326: 47b0 blx r6 i = _lv_ll_get_prev(&(par->child_ll), i); 5328: 0021 movs r1, r4 532a: 9800 ldr r0, [sp, #0] 532c: 47b8 blx r7 532e: 1e04 subs r4, r0, #0 while(i != NULL) { 5330: d1f7 bne.n 5322 if(par->design_cb) par->design_cb(par, mask_p, LV_DESIGN_DRAW_POST); 5332: 6a2b ldr r3, [r5, #32] 5334: 2b00 cmp r3, #0 5336: d0e6 beq.n 5306 5338: 2201 movs r2, #1 533a: 9901 ldr r1, [sp, #4] 533c: 0028 movs r0, r5 533e: 4798 blx r3 5340: e7e1 b.n 5306 5342: 46c0 nop ; (mov r8, r8) 5344: 000051d5 .word 0x000051d5 5348: 000021a5 .word 0x000021a5 534c: 00011ec5 .word 0x00011ec5 5350: 200026f8 .word 0x200026f8 5354: 00001845 .word 0x00001845 00005358 : /** * Flush the content of the VDB */ static void lv_refr_vdb_flush(void) { 5358: b570 push {r4, r5, r6, lr} lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 535a: 4d1c ldr r5, [pc, #112] ; (53cc ) 535c: 6828 ldr r0, [r5, #0] 535e: 4b1c ldr r3, [pc, #112] ; (53d0 ) 5360: 4798 blx r3 5362: 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)) { 5364: 6828 ldr r0, [r5, #0] 5366: 4b1b ldr r3, [pc, #108] ; (53d4 ) 5368: 4798 blx r3 536a: 2800 cmp r0, #0 536c: d10d bne.n 538a while(vdb->flushing) { if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); } } vdb->flushing = 1; 536e: 2301 movs r3, #1 5370: 61a3 str r3, [r4, #24] if(disp_refr->driver.buffer->last_area && disp_refr->driver.buffer->last_part) vdb->flushing_last = 1; 5372: 4b16 ldr r3, [pc, #88] ; (53cc ) 5374: 6818 ldr r0, [r3, #0] 5376: 6843 ldr r3, [r0, #4] 5378: 6a1a ldr r2, [r3, #32] 537a: 07d2 lsls r2, r2, #31 537c: d50f bpl.n 539e 537e: 6a1b ldr r3, [r3, #32] 5380: 079b lsls r3, r3, #30 5382: d50c bpl.n 539e 5384: 2301 movs r3, #1 5386: 61e3 str r3, [r4, #28] 5388: e00b b.n 53a2 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 538a: 4d10 ldr r5, [pc, #64] ; (53cc ) 538c: 6828 ldr r0, [r5, #0] while(vdb->flushing) { 538e: 69a3 ldr r3, [r4, #24] 5390: 2b00 cmp r3, #0 5392: d0ec beq.n 536e if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 5394: 69c3 ldr r3, [r0, #28] 5396: 2b00 cmp r3, #0 5398: d0f9 beq.n 538e 539a: 4798 blx r3 539c: e7f6 b.n 538c else vdb->flushing_last = 0; 539e: 2300 movs r3, #0 53a0: 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); 53a2: 68c3 ldr r3, [r0, #12] 53a4: 2b00 cmp r3, #0 53a6: d003 beq.n 53b0 53a8: 0021 movs r1, r4 53aa: 3110 adds r1, #16 53ac: 68a2 ldr r2, [r4, #8] 53ae: 4798 blx r3 if(vdb->buf1 && vdb->buf2) { 53b0: 6823 ldr r3, [r4, #0] 53b2: 2b00 cmp r3, #0 53b4: d006 beq.n 53c4 53b6: 6862 ldr r2, [r4, #4] 53b8: 2a00 cmp r2, #0 53ba: d003 beq.n 53c4 if(vdb->buf_act == vdb->buf1) 53bc: 68a1 ldr r1, [r4, #8] 53be: 428b cmp r3, r1 53c0: d001 beq.n 53c6 vdb->buf_act = vdb->buf2; else vdb->buf_act = vdb->buf1; 53c2: 60a3 str r3, [r4, #8] } } 53c4: bd70 pop {r4, r5, r6, pc} vdb->buf_act = vdb->buf2; 53c6: 60a2 str r2, [r4, #8] 53c8: e7fc b.n 53c4 53ca: 46c0 nop ; (mov r8, r8) 53cc: 200026f8 .word 0x200026f8 53d0: 00010e75 .word 0x00010e75 53d4: 00010e79 .word 0x00010e79 000053d8 : { 53d8: b570 push {r4, r5, r6, lr} 53da: b082 sub sp, #8 53dc: 0005 movs r5, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 53de: 4e1c ldr r6, [pc, #112] ; (5450 ) 53e0: 6830 ldr r0, [r6, #0] 53e2: 4b1c ldr r3, [pc, #112] ; (5454 ) 53e4: 4798 blx r3 53e6: 0004 movs r4, r0 if(lv_disp_is_double_buf(disp_refr) == false) { 53e8: 6830 ldr r0, [r6, #0] 53ea: 4b1b ldr r3, [pc, #108] ; (5458 ) 53ec: 4798 blx r3 53ee: 2800 cmp r0, #0 53f0: d109 bne.n 5406 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 53f2: 4e17 ldr r6, [pc, #92] ; (5450 ) 53f4: 6830 ldr r0, [r6, #0] while(vdb->flushing) { 53f6: 69a3 ldr r3, [r4, #24] 53f8: 2b00 cmp r3, #0 53fa: d004 beq.n 5406 if(disp_refr->driver.wait_cb) disp_refr->driver.wait_cb(&disp_refr->driver); 53fc: 69c3 ldr r3, [r0, #28] 53fe: 2b00 cmp r3, #0 5400: d0f9 beq.n 53f6 5402: 4798 blx r3 5404: e7f6 b.n 53f4 _lv_area_intersect(&start_mask, area_p, &vdb->area); 5406: 0022 movs r2, r4 5408: 3210 adds r2, #16 540a: 0029 movs r1, r5 540c: 4668 mov r0, sp 540e: 4b13 ldr r3, [pc, #76] ; (545c ) 5410: 4798 blx r3 top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr)); 5412: 4c0f ldr r4, [pc, #60] ; (5450 ) 5414: 6820 ldr r0, [r4, #0] 5416: 4b12 ldr r3, [pc, #72] ; (5460 ) 5418: 4798 blx r3 541a: 0001 movs r1, r0 541c: 4668 mov r0, sp 541e: 4b11 ldr r3, [pc, #68] ; (5464 ) 5420: 4798 blx r3 lv_refr_obj_and_children(top_p, &start_mask); 5422: 4669 mov r1, sp 5424: 4d10 ldr r5, [pc, #64] ; (5468 ) 5426: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask); 5428: 6820 ldr r0, [r4, #0] 542a: 4b10 ldr r3, [pc, #64] ; (546c ) 542c: 4798 blx r3 542e: 4669 mov r1, sp 5430: 47a8 blx r5 lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask); 5432: 6820 ldr r0, [r4, #0] 5434: 4b0e ldr r3, [pc, #56] ; (5470 ) 5436: 4798 blx r3 5438: 4669 mov r1, sp 543a: 47a8 blx r5 if(lv_disp_is_true_double_buf(disp_refr) == false) { 543c: 6820 ldr r0, [r4, #0] 543e: 4b0d ldr r3, [pc, #52] ; (5474 ) 5440: 4798 blx r3 5442: 2800 cmp r0, #0 5444: d001 beq.n 544a } 5446: b002 add sp, #8 5448: bd70 pop {r4, r5, r6, pc} lv_refr_vdb_flush(); 544a: 4b0b ldr r3, [pc, #44] ; (5478 ) 544c: 4798 blx r3 } 544e: e7fa b.n 5446 5450: 200026f8 .word 0x200026f8 5454: 00010e75 .word 0x00010e75 5458: 00010e79 .word 0x00010e79 545c: 0001140b .word 0x0001140b 5460: 00001845 .word 0x00001845 5464: 00005139 .word 0x00005139 5468: 000052c9 .word 0x000052c9 546c: 00001885 .word 0x00001885 5470: 000018c5 .word 0x000018c5 5474: 00010e91 .word 0x00010e91 5478: 00005359 .word 0x00005359 0000547c <_lv_refr_init>: } 547c: 4770 bx lr ... 00005480 <_lv_inv_area>: { 5480: b5f0 push {r4, r5, r6, r7, lr} 5482: b085 sub sp, #20 5484: 0005 movs r5, r0 5486: 000e movs r6, r1 if(!disp) disp = lv_disp_get_default(); 5488: 2800 cmp r0, #0 548a: d057 beq.n 553c <_lv_inv_area+0xbc> if(area_p == NULL) { 548c: 2e00 cmp r6, #0 548e: d05a beq.n 5546 <_lv_inv_area+0xc6> scr_area.x1 = 0; 5490: ac02 add r4, sp, #8 5492: 2300 movs r3, #0 5494: 8023 strh r3, [r4, #0] scr_area.y1 = 0; 5496: 8063 strh r3, [r4, #2] scr_area.x2 = lv_disp_get_hor_res(disp) - 1; 5498: 0028 movs r0, r5 549a: 4b37 ldr r3, [pc, #220] ; (5578 <_lv_inv_area+0xf8>) 549c: 4798 blx r3 549e: 3801 subs r0, #1 54a0: 80a0 strh r0, [r4, #4] scr_area.y2 = lv_disp_get_ver_res(disp) - 1; 54a2: 0028 movs r0, r5 54a4: 4b35 ldr r3, [pc, #212] ; (557c <_lv_inv_area+0xfc>) 54a6: 4798 blx r3 54a8: 3801 subs r0, #1 54aa: 80e0 strh r0, [r4, #6] suc = _lv_area_intersect(&com_area, area_p, &scr_area); 54ac: 0022 movs r2, r4 54ae: 0031 movs r1, r6 54b0: 4668 mov r0, sp 54b2: 4b33 ldr r3, [pc, #204] ; (5580 <_lv_inv_area+0x100>) 54b4: 4798 blx r3 if(suc != false) { 54b6: 2800 cmp r0, #0 54b8: d04b beq.n 5552 <_lv_inv_area+0xd2> if(disp->driver.rounder_cb) disp->driver.rounder_cb(&disp->driver, &com_area); 54ba: 692b ldr r3, [r5, #16] 54bc: 2b00 cmp r3, #0 54be: d002 beq.n 54c6 <_lv_inv_area+0x46> 54c0: 4669 mov r1, sp 54c2: 0028 movs r0, r5 54c4: 4798 blx r3 for(i = 0; i < disp->inv_p; i++) { 54c6: 23b4 movs r3, #180 ; 0xb4 54c8: 005b lsls r3, r3, #1 54ca: 5aeb ldrh r3, [r5, r3] 54cc: 059b lsls r3, r3, #22 54ce: 0d9b lsrs r3, r3, #22 54d0: 2b00 cmp r3, #0 54d2: dd14 ble.n 54fe <_lv_inv_area+0x7e> 54d4: 2100 movs r1, #0 54d6: 2400 movs r4, #0 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 54d8: 4e2a ldr r6, [pc, #168] ; (5584 <_lv_inv_area+0x104>) for(i = 0; i < disp->inv_p; i++) { 54da: 27b4 movs r7, #180 ; 0xb4 54dc: 007f lsls r7, r7, #1 if(_lv_area_is_in(&com_area, &disp->inv_areas[i], 0) != false) return; 54de: 3109 adds r1, #9 54e0: 00c9 lsls r1, r1, #3 54e2: 1869 adds r1, r5, r1 54e4: 2200 movs r2, #0 54e6: 4668 mov r0, sp 54e8: 47b0 blx r6 54ea: 2800 cmp r0, #0 54ec: d131 bne.n 5552 <_lv_inv_area+0xd2> for(i = 0; i < disp->inv_p; i++) { 54ee: 3401 adds r4, #1 54f0: b2a4 uxth r4, r4 54f2: 0021 movs r1, r4 54f4: 5beb ldrh r3, [r5, r7] 54f6: 059b lsls r3, r3, #22 54f8: 0d9b lsrs r3, r3, #22 54fa: 429c cmp r4, r3 54fc: dbef blt.n 54de <_lv_inv_area+0x5e> if(disp->inv_p < LV_INV_BUF_SIZE) { 54fe: 2b1f cmp r3, #31 5500: dc29 bgt.n 5556 <_lv_inv_area+0xd6> lv_area_copy(&disp->inv_areas[disp->inv_p], &com_area); 5502: 3309 adds r3, #9 5504: 00db lsls r3, r3, #3 5506: 18eb adds r3, r5, r3 5508: 2200 movs r2, #0 *d8 = *s8; 550a: 4669 mov r1, sp 550c: 5c51 ldrb r1, [r2, r1] 550e: 5499 strb r1, [r3, r2] 5510: 3201 adds r2, #1 while(len) { 5512: 2a08 cmp r2, #8 5514: d1f9 bne.n 550a <_lv_inv_area+0x8a> disp->inv_p++; 5516: 21b4 movs r1, #180 ; 0xb4 5518: 0049 lsls r1, r1, #1 551a: 5a6b ldrh r3, [r5, r1] 551c: 059a lsls r2, r3, #22 551e: 2080 movs r0, #128 ; 0x80 5520: 03c0 lsls r0, r0, #15 5522: 4684 mov ip, r0 5524: 4462 add r2, ip 5526: 0d92 lsrs r2, r2, #22 5528: 0a9b lsrs r3, r3, #10 552a: 029b lsls r3, r3, #10 552c: 4313 orrs r3, r2 552e: 526b strh r3, [r5, r1] lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO); 5530: 6ae8 ldr r0, [r5, #44] ; 0x2c 5532: 3966 subs r1, #102 ; 0x66 5534: 39ff subs r1, #255 ; 0xff 5536: 4b14 ldr r3, [pc, #80] ; (5588 <_lv_inv_area+0x108>) 5538: 4798 blx r3 553a: e00a b.n 5552 <_lv_inv_area+0xd2> if(!disp) disp = lv_disp_get_default(); 553c: 4b13 ldr r3, [pc, #76] ; (558c <_lv_inv_area+0x10c>) 553e: 4798 blx r3 5540: 1e05 subs r5, r0, #0 if(!disp) return; 5542: d006 beq.n 5552 <_lv_inv_area+0xd2> 5544: e7a2 b.n 548c <_lv_inv_area+0xc> disp->inv_p = 0; 5546: 22b4 movs r2, #180 ; 0xb4 5548: 0052 lsls r2, r2, #1 554a: 5aab ldrh r3, [r5, r2] 554c: 0a9b lsrs r3, r3, #10 554e: 029b lsls r3, r3, #10 5550: 52ab strh r3, [r5, r2] } 5552: b005 add sp, #20 5554: bdf0 pop {r4, r5, r6, r7, pc} disp->inv_p = 0; 5556: 22b4 movs r2, #180 ; 0xb4 5558: 0052 lsls r2, r2, #1 555a: 5aab ldrh r3, [r5, r2] 555c: 0a9b lsrs r3, r3, #10 555e: 029b lsls r3, r3, #10 5560: 52ab strh r3, [r5, r2] lv_area_copy(&disp->inv_areas[disp->inv_p], &scr_area); 5562: 0028 movs r0, r5 5564: 3048 adds r0, #72 ; 0x48 5566: 2300 movs r3, #0 *d8 = *s8; 5568: a902 add r1, sp, #8 556a: 5c5a ldrb r2, [r3, r1] 556c: 54c2 strb r2, [r0, r3] 556e: 3301 adds r3, #1 while(len) { 5570: 2b08 cmp r3, #8 5572: d1fa bne.n 556a <_lv_inv_area+0xea> 5574: e7cf b.n 5516 <_lv_inv_area+0x96> 5576: 46c0 nop ; (mov r8, r8) 5578: 00010d81 .word 0x00010d81 557c: 00010da9 .word 0x00010da9 5580: 0001140b .word 0x0001140b 5584: 00011699 .word 0x00011699 5588: 0001388d .word 0x0001388d 558c: 00010d75 .word 0x00010d75 00005590 <_lv_refr_get_disp_refreshing>: return disp_refr; 5590: 4b01 ldr r3, [pc, #4] ; (5598 <_lv_refr_get_disp_refreshing+0x8>) 5592: 6818 ldr r0, [r3, #0] } 5594: 4770 bx lr 5596: 46c0 nop ; (mov r8, r8) 5598: 200026f8 .word 0x200026f8 0000559c <_lv_disp_refr_task>: { 559c: b5f0 push {r4, r5, r6, r7, lr} 559e: 46de mov lr, fp 55a0: 4657 mov r7, sl 55a2: 464e mov r6, r9 55a4: 4645 mov r5, r8 55a6: b5e0 push {r5, r6, r7, lr} 55a8: b08d sub sp, #52 ; 0x34 55aa: 0005 movs r5, r0 uint32_t start = lv_tick_get(); 55ac: 4bd0 ldr r3, [pc, #832] ; (58f0 <_lv_disp_refr_task+0x354>) 55ae: 4798 blx r3 55b0: 9009 str r0, [sp, #36] ; 0x24 disp_refr = task->user_data; 55b2: 4cd0 ldr r4, [pc, #832] ; (58f4 <_lv_disp_refr_task+0x358>) 55b4: 68eb ldr r3, [r5, #12] 55b6: 6023 str r3, [r4, #0] lv_task_set_prio(task, LV_TASK_PRIO_OFF); 55b8: 2100 movs r1, #0 55ba: 0028 movs r0, r5 55bc: 4bce ldr r3, [pc, #824] ; (58f8 <_lv_disp_refr_task+0x35c>) 55be: 4798 blx r3 if(disp_refr->act_scr == NULL) { 55c0: 6820 ldr r0, [r4, #0] 55c2: 6bc3 ldr r3, [r0, #60] ; 0x3c 55c4: 2b00 cmp r3, #0 55c6: d00e beq.n 55e6 <_lv_disp_refr_task+0x4a> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 55c8: 23b4 movs r3, #180 ; 0xb4 55ca: 005b lsls r3, r3, #1 55cc: 5ac3 ldrh r3, [r0, r3] 55ce: 059b lsls r3, r3, #22 55d0: 2748 movs r7, #72 ; 0x48 55d2: 2600 movs r6, #0 55d4: 2b00 cmp r3, #0 55d6: d100 bne.n 55da <_lv_disp_refr_task+0x3e> 55d8: e29e b.n 5b18 <_lv_disp_refr_task+0x57c> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 55da: 4bc6 ldr r3, [pc, #792] ; (58f4 <_lv_disp_refr_task+0x358>) 55dc: 4698 mov r8, r3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 55de: 4bc7 ldr r3, [pc, #796] ; (58fc <_lv_disp_refr_task+0x360>) 55e0: 469a mov sl, r3 _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 55e2: 46c3 mov fp, r8 55e4: e056 b.n 5694 <_lv_disp_refr_task+0xf8> disp_refr->inv_p = 0; 55e6: 22b4 movs r2, #180 ; 0xb4 55e8: 0052 lsls r2, r2, #1 55ea: 5a83 ldrh r3, [r0, r2] 55ec: 0a9b lsrs r3, r3, #10 55ee: 029b lsls r3, r3, #10 55f0: 5283 strh r3, [r0, r2] return; 55f2: e287 b.n 5b04 <_lv_disp_refr_task+0x568> disp_refr->inv_area_joined[join_from] = 1; 55f4: 192d adds r5, r5, r4 55f6: 3549 adds r5, #73 ; 0x49 55f8: 35ff adds r5, #255 ; 0xff 55fa: 3b07 subs r3, #7 55fc: 702b strb r3, [r5, #0] for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 55fe: 3401 adds r4, #1 5600: 4bbc ldr r3, [pc, #752] ; (58f4 <_lv_disp_refr_task+0x358>) 5602: 6818 ldr r0, [r3, #0] 5604: 23b4 movs r3, #180 ; 0xb4 5606: 005b lsls r3, r3, #1 5608: 5ac3 ldrh r3, [r0, r3] 560a: 059b lsls r3, r3, #22 560c: 0d9b lsrs r3, r3, #22 560e: 429c cmp r4, r3 5610: d235 bcs.n 567e <_lv_disp_refr_task+0xe2> if(disp_refr->inv_area_joined[join_from] != 0 || join_in == join_from) { 5612: 1903 adds r3, r0, r4 5614: 3349 adds r3, #73 ; 0x49 5616: 33ff adds r3, #255 ; 0xff 5618: 781b ldrb r3, [r3, #0] 561a: 2b00 cmp r3, #0 561c: d1ef bne.n 55fe <_lv_disp_refr_task+0x62> 561e: 42a6 cmp r6, r4 5620: d0ed beq.n 55fe <_lv_disp_refr_task+0x62> 5622: 0025 movs r5, r4 5624: 3509 adds r5, #9 5626: 00ed lsls r5, r5, #3 if(_lv_area_is_on(&disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]) == false) { 5628: 1941 adds r1, r0, r5 562a: 19c0 adds r0, r0, r7 562c: 47d0 blx sl 562e: 2800 cmp r0, #0 5630: d0e5 beq.n 55fe <_lv_disp_refr_task+0x62> _lv_area_join(&joined_area, &disp_refr->inv_areas[join_in], &disp_refr->inv_areas[join_from]); 5632: 465b mov r3, fp 5634: 6819 ldr r1, [r3, #0] 5636: 194a adds r2, r1, r5 5638: 19c9 adds r1, r1, r7 563a: a80a add r0, sp, #40 ; 0x28 563c: 4bb0 ldr r3, [pc, #704] ; (5900 <_lv_disp_refr_task+0x364>) 563e: 4798 blx r3 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 5640: a80a add r0, sp, #40 ; 0x28 5642: 4bb0 ldr r3, [pc, #704] ; (5904 <_lv_disp_refr_task+0x368>) 5644: 4699 mov r9, r3 5646: 4798 blx r3 5648: 9003 str r0, [sp, #12] 564a: 465b mov r3, fp 564c: 681b ldr r3, [r3, #0] 564e: 19d8 adds r0, r3, r7 5650: 47c8 blx r9 5652: 9004 str r0, [sp, #16] lv_area_get_size(&disp_refr->inv_areas[join_from]))) { 5654: 465b mov r3, fp 5656: 681b ldr r3, [r3, #0] 5658: 1958 adds r0, r3, r5 565a: 47c8 blx r9 if(lv_area_get_size(&joined_area) < (lv_area_get_size(&disp_refr->inv_areas[join_in]) + 565c: 9b04 ldr r3, [sp, #16] 565e: 469c mov ip, r3 5660: 4460 add r0, ip 5662: 9b03 ldr r3, [sp, #12] 5664: 4283 cmp r3, r0 5666: d2ca bcs.n 55fe <_lv_disp_refr_task+0x62> lv_area_copy(&disp_refr->inv_areas[join_in], &joined_area); 5668: 4ba2 ldr r3, [pc, #648] ; (58f4 <_lv_disp_refr_task+0x358>) 566a: 681d ldr r5, [r3, #0] 566c: 19e8 adds r0, r5, r7 566e: 2300 movs r3, #0 *d8 = *s8; 5670: a90a add r1, sp, #40 ; 0x28 5672: 5c5a ldrb r2, [r3, r1] 5674: 54c2 strb r2, [r0, r3] 5676: 3301 adds r3, #1 while(len) { 5678: 2b08 cmp r3, #8 567a: d1fa bne.n 5672 <_lv_disp_refr_task+0xd6> 567c: e7ba b.n 55f4 <_lv_disp_refr_task+0x58> for(join_in = 0; join_in < disp_refr->inv_p; join_in++) { 567e: 3601 adds r6, #1 5680: 4b9c ldr r3, [pc, #624] ; (58f4 <_lv_disp_refr_task+0x358>) 5682: 6818 ldr r0, [r3, #0] 5684: 23b4 movs r3, #180 ; 0xb4 5686: 005b lsls r3, r3, #1 5688: 5ac3 ldrh r3, [r0, r3] 568a: 059b lsls r3, r3, #22 568c: 0d9b lsrs r3, r3, #22 568e: 3708 adds r7, #8 5690: 429e cmp r6, r3 5692: d20f bcs.n 56b4 <_lv_disp_refr_task+0x118> if(disp_refr->inv_area_joined[join_in] != 0) continue; 5694: 1980 adds r0, r0, r6 5696: 3049 adds r0, #73 ; 0x49 5698: 30ff adds r0, #255 ; 0xff 569a: 7803 ldrb r3, [r0, #0] 569c: 2b00 cmp r3, #0 569e: d1ee bne.n 567e <_lv_disp_refr_task+0xe2> for(join_from = 0; join_from < disp_refr->inv_p; join_from++) { 56a0: 4643 mov r3, r8 56a2: 6818 ldr r0, [r3, #0] 56a4: 23b4 movs r3, #180 ; 0xb4 56a6: 005b lsls r3, r3, #1 56a8: 5ac3 ldrh r3, [r0, r3] 56aa: 059b lsls r3, r3, #22 56ac: d100 bne.n 56b0 <_lv_disp_refr_task+0x114> 56ae: e215 b.n 5adc <_lv_disp_refr_task+0x540> 56b0: 2400 movs r4, #0 56b2: e7ae b.n 5612 <_lv_disp_refr_task+0x76> px_num = 0; 56b4: 2100 movs r1, #0 56b6: 4a94 ldr r2, [pc, #592] ; (5908 <_lv_disp_refr_task+0x36c>) 56b8: 6011 str r1, [r2, #0] if(disp_refr->inv_p == 0) return; 56ba: 22b4 movs r2, #180 ; 0xb4 56bc: 0052 lsls r2, r2, #1 56be: 5a82 ldrh r2, [r0, r2] 56c0: 0592 lsls r2, r2, #22 56c2: d100 bne.n 56c6 <_lv_disp_refr_task+0x12a> 56c4: e212 b.n 5aec <_lv_disp_refr_task+0x550> for(i = disp_refr->inv_p - 1; i >= 0; i--) { 56c6: 001a movs r2, r3 56c8: 3a01 subs r2, #1 56ca: 9207 str r2, [sp, #28] 56cc: d42d bmi.n 572a <_lv_disp_refr_task+0x18e> if(disp_refr->inv_area_joined[i] == 0) { 56ce: 9907 ldr r1, [sp, #28] 56d0: 1842 adds r2, r0, r1 56d2: 3249 adds r2, #73 ; 0x49 56d4: 32ff adds r2, #255 ; 0xff 56d6: 7812 ldrb r2, [r2, #0] 56d8: 2a00 cmp r2, #0 56da: d00d beq.n 56f8 <_lv_disp_refr_task+0x15c> 56dc: 3347 adds r3, #71 ; 0x47 56de: 33ff adds r3, #255 ; 0xff 56e0: 18c3 adds r3, r0, r3 56e2: 000a movs r2, r1 for(i = disp_refr->inv_p - 1; i >= 0; i--) { 56e4: 3a01 subs r2, #1 56e6: d305 bcc.n 56f4 <_lv_disp_refr_task+0x158> 56e8: 3b01 subs r3, #1 if(disp_refr->inv_area_joined[i] == 0) { 56ea: 7859 ldrb r1, [r3, #1] 56ec: 2900 cmp r1, #0 56ee: d1f9 bne.n 56e4 <_lv_disp_refr_task+0x148> 56f0: 9207 str r2, [sp, #28] 56f2: e001 b.n 56f8 <_lv_disp_refr_task+0x15c> int32_t last_i = 0; 56f4: 2300 movs r3, #0 56f6: 9307 str r3, [sp, #28] disp_refr->driver.buffer->last_area = 0; 56f8: 6841 ldr r1, [r0, #4] 56fa: 2320 movs r3, #32 56fc: 5cca ldrb r2, [r1, r3] 56fe: 2401 movs r4, #1 5700: 43a2 bics r2, r4 5702: 54ca strb r2, [r1, r3] disp_refr->driver.buffer->last_part = 0; 5704: 6841 ldr r1, [r0, #4] 5706: 5cca ldrb r2, [r1, r3] 5708: 2002 movs r0, #2 570a: 4382 bics r2, r0 570c: 54ca strb r2, [r1, r3] for(i = 0; i < disp_refr->inv_p; i++) { 570e: 4b79 ldr r3, [pc, #484] ; (58f4 <_lv_disp_refr_task+0x358>) 5710: 681c ldr r4, [r3, #0] 5712: 23b4 movs r3, #180 ; 0xb4 5714: 005b lsls r3, r3, #1 5716: 5ae3 ldrh r3, [r4, r3] 5718: 059b lsls r3, r3, #22 571a: d100 bne.n 571e <_lv_disp_refr_task+0x182> 571c: e1e6 b.n 5aec <_lv_disp_refr_task+0x550> 571e: 2348 movs r3, #72 ; 0x48 5720: 9306 str r3, [sp, #24] 5722: 2300 movs r3, #0 5724: 9304 str r3, [sp, #16] if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5726: 0027 movs r7, r4 5728: e045 b.n 57b6 <_lv_disp_refr_task+0x21a> int32_t last_i = 0; 572a: 2300 movs r3, #0 572c: 9307 str r3, [sp, #28] 572e: e7e3 b.n 56f8 <_lv_disp_refr_task+0x15c> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 5730: 6879 ldr r1, [r7, #4] 5732: 2220 movs r2, #32 5734: 5c8b ldrb r3, [r1, r2] 5736: 2001 movs r0, #1 5738: 4303 orrs r3, r0 573a: 548b strb r3, [r1, r2] 573c: e046 b.n 57cc <_lv_disp_refr_task+0x230> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 573e: 4c6d ldr r4, [pc, #436] ; (58f4 <_lv_disp_refr_task+0x358>) 5740: 6820 ldr r0, [r4, #0] 5742: 4b72 ldr r3, [pc, #456] ; (590c <_lv_disp_refr_task+0x370>) 5744: 4798 blx r3 5746: 0005 movs r5, r0 vdb->area.x1 = 0; 5748: 2600 movs r6, #0 574a: 8206 strh r6, [r0, #16] vdb->area.x2 = lv_disp_get_hor_res(disp_refr) - 1; 574c: 6820 ldr r0, [r4, #0] 574e: 4b70 ldr r3, [pc, #448] ; (5910 <_lv_disp_refr_task+0x374>) 5750: 4798 blx r3 5752: 3801 subs r0, #1 5754: 82a8 strh r0, [r5, #20] vdb->area.y1 = 0; 5756: 826e strh r6, [r5, #18] vdb->area.y2 = lv_disp_get_ver_res(disp_refr) - 1; 5758: 6820 ldr r0, [r4, #0] 575a: 4b6e ldr r3, [pc, #440] ; (5914 <_lv_disp_refr_task+0x378>) 575c: 4798 blx r3 575e: 3801 subs r0, #1 5760: 82e8 strh r0, [r5, #22] disp_refr->driver.buffer->last_part = 1; 5762: 6823 ldr r3, [r4, #0] 5764: 6859 ldr r1, [r3, #4] 5766: 2220 movs r2, #32 5768: 5c8b ldrb r3, [r1, r2] 576a: 2002 movs r0, #2 576c: 4303 orrs r3, r0 576e: 548b strb r3, [r1, r2] lv_refr_area_part(area_p); 5770: 9803 ldr r0, [sp, #12] 5772: 4b69 ldr r3, [pc, #420] ; (5918 <_lv_disp_refr_task+0x37c>) 5774: 4798 blx r3 if(disp_refr->driver.monitor_cb) px_num += lv_area_get_size(&disp_refr->inv_areas[i]); 5776: 4b5f ldr r3, [pc, #380] ; (58f4 <_lv_disp_refr_task+0x358>) 5778: 6818 ldr r0, [r3, #0] 577a: 6983 ldr r3, [r0, #24] 577c: 2b00 cmp r3, #0 577e: d009 beq.n 5794 <_lv_disp_refr_task+0x1f8> 5780: 9b06 ldr r3, [sp, #24] 5782: 469c mov ip, r3 5784: 4460 add r0, ip 5786: 4b5f ldr r3, [pc, #380] ; (5904 <_lv_disp_refr_task+0x368>) 5788: 4798 blx r3 578a: 4b5f ldr r3, [pc, #380] ; (5908 <_lv_disp_refr_task+0x36c>) 578c: 681a ldr r2, [r3, #0] 578e: 4694 mov ip, r2 5790: 4460 add r0, ip 5792: 6018 str r0, [r3, #0] for(i = 0; i < disp_refr->inv_p; i++) { 5794: 9b04 ldr r3, [sp, #16] 5796: 3301 adds r3, #1 5798: 001a movs r2, r3 579a: 9304 str r3, [sp, #16] 579c: 4b55 ldr r3, [pc, #340] ; (58f4 <_lv_disp_refr_task+0x358>) 579e: 681f ldr r7, [r3, #0] 57a0: 9b06 ldr r3, [sp, #24] 57a2: 3308 adds r3, #8 57a4: 9306 str r3, [sp, #24] 57a6: 23b4 movs r3, #180 ; 0xb4 57a8: 005b lsls r3, r3, #1 57aa: 5afb ldrh r3, [r7, r3] 57ac: 059b lsls r3, r3, #22 57ae: 0d9b lsrs r3, r3, #22 57b0: 429a cmp r2, r3 57b2: db00 blt.n 57b6 <_lv_disp_refr_task+0x21a> 57b4: e19a b.n 5aec <_lv_disp_refr_task+0x550> if(disp_refr->inv_area_joined[i] == 0) { 57b6: 9a04 ldr r2, [sp, #16] 57b8: 18bb adds r3, r7, r2 57ba: 3349 adds r3, #73 ; 0x49 57bc: 33ff adds r3, #255 ; 0xff 57be: 781b ldrb r3, [r3, #0] 57c0: 2b00 cmp r3, #0 57c2: d1e7 bne.n 5794 <_lv_disp_refr_task+0x1f8> if(i == last_i) disp_refr->driver.buffer->last_area = 1; 57c4: 9b07 ldr r3, [sp, #28] 57c6: 0019 movs r1, r3 57c8: 4291 cmp r1, r2 57ca: d0b1 beq.n 5730 <_lv_disp_refr_task+0x194> disp_refr->driver.buffer->last_part = 0; 57cc: 6879 ldr r1, [r7, #4] 57ce: 2220 movs r2, #32 57d0: 5c8b ldrb r3, [r1, r2] 57d2: 2002 movs r0, #2 57d4: 4383 bics r3, r0 57d6: 548b strb r3, [r1, r2] lv_refr_area(&disp_refr->inv_areas[i]); 57d8: 9b06 ldr r3, [sp, #24] 57da: 469c mov ip, r3 57dc: 44bc add ip, r7 57de: 4663 mov r3, ip 57e0: 9303 str r3, [sp, #12] if(lv_disp_is_true_double_buf(disp_refr)) { 57e2: 0038 movs r0, r7 57e4: 4b4d ldr r3, [pc, #308] ; (591c <_lv_disp_refr_task+0x380>) 57e6: 4798 blx r3 57e8: 2800 cmp r0, #0 57ea: d1a8 bne.n 573e <_lv_disp_refr_task+0x1a2> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 57ec: 4b41 ldr r3, [pc, #260] ; (58f4 <_lv_disp_refr_task+0x358>) 57ee: 469a mov sl, r3 57f0: 6818 ldr r0, [r3, #0] 57f2: 4b46 ldr r3, [pc, #280] ; (590c <_lv_disp_refr_task+0x370>) 57f4: 4798 blx r3 57f6: 0006 movs r6, r0 57f8: 9b04 ldr r3, [sp, #16] 57fa: 00db lsls r3, r3, #3 57fc: 18ff adds r7, r7, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 57fe: 234c movs r3, #76 ; 0x4c 5800: 5afc ldrh r4, [r7, r3] 5802: 3401 adds r4, #1 5804: 3b04 subs r3, #4 5806: 5afb ldrh r3, [r7, r3] 5808: 1ae4 subs r4, r4, r3 580a: b223 sxth r3, r4 580c: 4698 mov r8, r3 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 580e: 234e movs r3, #78 ; 0x4e 5810: 5efc ldrsh r4, [r7, r3] 5812: 1c65 adds r5, r4, #1 5814: 234a movs r3, #74 ; 0x4a 5816: 5afb ldrh r3, [r7, r3] 5818: 1aed subs r5, r5, r3 581a: 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; 581c: 4653 mov r3, sl 581e: 6818 ldr r0, [r3, #0] 5820: 4b3c ldr r3, [pc, #240] ; (5914 <_lv_disp_refr_task+0x378>) 5822: 4798 blx r3 lv_coord_t y2 = 5824: 4284 cmp r4, r0 5826: da3c bge.n 58a2 <_lv_disp_refr_task+0x306> 5828: 234e movs r3, #78 ; 0x4e 582a: 5efb ldrsh r3, [r7, r3] 582c: 4699 mov r9, r3 int32_t max_row = (uint32_t)vdb->size / w; 582e: 4641 mov r1, r8 5830: 68f0 ldr r0, [r6, #12] 5832: 4b3b ldr r3, [pc, #236] ; (5920 <_lv_disp_refr_task+0x384>) 5834: 4798 blx r3 5836: 46a8 mov r8, r5 5838: 4285 cmp r5, r0 583a: dd00 ble.n 583e <_lv_disp_refr_task+0x2a2> 583c: 4680 mov r8, r0 if(disp_refr->driver.rounder_cb) { 583e: 4b2d ldr r3, [pc, #180] ; (58f4 <_lv_disp_refr_task+0x358>) 5840: 681b ldr r3, [r3, #0] 5842: 691b ldr r3, [r3, #16] 5844: 2b00 cmp r3, #0 5846: d03d beq.n 58c4 <_lv_disp_refr_task+0x328> tmp.x1 = 0; 5848: ab0a add r3, sp, #40 ; 0x28 584a: 2200 movs r2, #0 584c: 801a strh r2, [r3, #0] tmp.x2 = 0; 584e: 809a strh r2, [r3, #4] tmp.y1 = 0; 5850: 805a strh r2, [r3, #2] lv_coord_t h_tmp = max_row; 5852: 4643 mov r3, r8 5854: b21b sxth r3, r3 5856: 469a mov sl, r3 tmp.y2 = h_tmp - 1; 5858: ad0a add r5, sp, #40 ; 0x28 disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 585a: 4b26 ldr r3, [pc, #152] ; (58f4 <_lv_disp_refr_task+0x358>) 585c: 469b mov fp, r3 585e: 4653 mov r3, sl 5860: 46b2 mov sl, r6 5862: 4642 mov r2, r8 5864: 46b8 mov r8, r7 5866: 0017 movs r7, r2 5868: 001e movs r6, r3 586a: 1e74 subs r4, r6, #1 586c: b224 sxth r4, r4 tmp.y2 = h_tmp - 1; 586e: 80ec strh r4, [r5, #6] disp_refr->driver.rounder_cb(&disp_refr->driver, &tmp); 5870: 465b mov r3, fp 5872: 6818 ldr r0, [r3, #0] 5874: 6903 ldr r3, [r0, #16] 5876: 0029 movs r1, r5 5878: 4798 blx r3 587a: 2306 movs r3, #6 587c: 5ee9 ldrsh r1, [r5, r3] 587e: 1c4b adds r3, r1, #1 5880: 886a ldrh r2, [r5, #2] 5882: 1a9b subs r3, r3, r2 if(lv_area_get_height(&tmp) <= max_row) break; 5884: b21b sxth r3, r3 5886: 429f cmp r7, r3 5888: da13 bge.n 58b2 <_lv_disp_refr_task+0x316> h_tmp--; 588a: 1e26 subs r6, r4, #0 } while(h_tmp > 0); 588c: dced bgt.n 586a <_lv_disp_refr_task+0x2ce> LV_LOG_WARN("Can't set VDB height using the round function. (Wrong round_cb or to " 588e: 4b25 ldr r3, [pc, #148] ; (5924 <_lv_disp_refr_task+0x388>) 5890: 9300 str r3, [sp, #0] 5892: 4b25 ldr r3, [pc, #148] ; (5928 <_lv_disp_refr_task+0x38c>) 5894: 22a0 movs r2, #160 ; 0xa0 5896: 32ff adds r2, #255 ; 0xff 5898: 4924 ldr r1, [pc, #144] ; (592c <_lv_disp_refr_task+0x390>) 589a: 2002 movs r0, #2 589c: 4c24 ldr r4, [pc, #144] ; (5930 <_lv_disp_refr_task+0x394>) 589e: 47a0 blx r4 58a0: e769 b.n 5776 <_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; 58a2: 4b14 ldr r3, [pc, #80] ; (58f4 <_lv_disp_refr_task+0x358>) 58a4: 6818 ldr r0, [r3, #0] 58a6: 4b1b ldr r3, [pc, #108] ; (5914 <_lv_disp_refr_task+0x378>) 58a8: 4798 blx r3 58aa: 3801 subs r0, #1 lv_coord_t y2 = 58ac: b203 sxth r3, r0 58ae: 4699 mov r9, r3 58b0: e7bd b.n 582e <_lv_disp_refr_task+0x292> 58b2: 4647 mov r7, r8 58b4: 0033 movs r3, r6 58b6: 4656 mov r6, sl 58b8: 469a mov sl, r3 max_row = tmp.y2 + 1; 58ba: 1c4b adds r3, r1, #1 58bc: 4698 mov r8, r3 if(h_tmp <= 0) { 58be: 4653 mov r3, sl 58c0: 2b00 cmp r3, #0 58c2: dde4 ble.n 588e <_lv_disp_refr_task+0x2f2> for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 58c4: 234a movs r3, #74 ; 0x4a 58c6: 5efc ldrsh r4, [r7, r3] 58c8: 464b mov r3, r9 58ca: 9305 str r3, [sp, #20] 58cc: 4643 mov r3, r8 58ce: 18e3 adds r3, r4, r3 58d0: 3b01 subs r3, #1 58d2: 454b cmp r3, r9 58d4: dc71 bgt.n 59ba <_lv_disp_refr_task+0x41e> vdb->area.y2 = row + max_row - 1; 58d6: 4643 mov r3, r8 58d8: 466a mov r2, sp 58da: 8453 strh r3, [r2, #34] ; 0x22 58dc: 8c53 ldrh r3, [r2, #34] ; 0x22 58de: 469a mov sl, r3 58e0: 2301 movs r3, #1 58e2: 425b negs r3, r3 58e4: 4453 add r3, sl 58e6: 469b mov fp, r3 58e8: 464b mov r3, r9 58ea: 46b9 mov r9, r7 58ec: 001f movs r7, r3 58ee: e02e b.n 594e <_lv_disp_refr_task+0x3b2> 58f0: 00010ef9 .word 0x00010ef9 58f4: 200026f8 .word 0x200026f8 58f8: 0001388d .word 0x0001388d 58fc: 00011655 .word 0x00011655 5900: 00011479 .word 0x00011479 5904: 000113ef .word 0x000113ef 5908: 200026fc .word 0x200026fc 590c: 00010e75 .word 0x00010e75 5910: 00010d81 .word 0x00010d81 5914: 00010da9 .word 0x00010da9 5918: 000053d9 .word 0x000053d9 591c: 00010e91 .word 0x00010e91 5920: 0001c0a5 .word 0x0001c0a5 5924: 00025dd8 .word 0x00025dd8 5928: 00025d94 .word 0x00025d94 592c: 00025da4 .word 0x00025da4 5930: 00012159 .word 0x00012159 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5934: 42af cmp r7, r5 5936: d01c beq.n 5972 <_lv_disp_refr_task+0x3d6> lv_refr_area_part(area_p); 5938: 9803 ldr r0, [sp, #12] 593a: 4b7d ldr r3, [pc, #500] ; (5b30 <_lv_disp_refr_task+0x594>) 593c: 4798 blx r3 593e: 4454 add r4, sl 5940: b224 sxth r4, r4 for(row = area_p->y1; row + max_row - 1 <= y2; row += max_row) { 5942: 4643 mov r3, r8 5944: 18e3 adds r3, r4, r3 5946: 3b01 subs r3, #1 5948: 9a05 ldr r2, [sp, #20] 594a: 4293 cmp r3, r2 594c: dc1a bgt.n 5984 <_lv_disp_refr_task+0x3e8> vdb->area.x1 = area_p->x1; 594e: 2348 movs r3, #72 ; 0x48 5950: 464a mov r2, r9 5952: 5ed3 ldrsh r3, [r2, r3] 5954: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 5956: 234c movs r3, #76 ; 0x4c 5958: 464a mov r2, r9 595a: 5ed3 ldrsh r3, [r2, r3] 595c: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 595e: 8274 strh r4, [r6, #18] 5960: b2a4 uxth r4, r4 5962: 465b mov r3, fp 5964: 18e5 adds r5, r4, r3 5966: b22d sxth r5, r5 vdb->area.y2 = row + max_row - 1; 5968: 82f5 strh r5, [r6, #22] if(vdb->area.y2 > y2) vdb->area.y2 = y2; 596a: 42af cmp r7, r5 596c: dae2 bge.n 5934 <_lv_disp_refr_task+0x398> 596e: 82f7 strh r7, [r6, #22] row_last = vdb->area.y2; 5970: 003d movs r5, r7 if(y2 == row_last) disp_refr->driver.buffer->last_part = 1; 5972: 4b70 ldr r3, [pc, #448] ; (5b34 <_lv_disp_refr_task+0x598>) 5974: 681b ldr r3, [r3, #0] 5976: 6859 ldr r1, [r3, #4] 5978: 2220 movs r2, #32 597a: 5c8b ldrb r3, [r1, r2] 597c: 2002 movs r0, #2 597e: 4303 orrs r3, r0 5980: 548b strb r3, [r1, r2] 5982: e7d9 b.n 5938 <_lv_disp_refr_task+0x39c> 5984: 003b movs r3, r7 5986: 464f mov r7, r9 5988: 4699 mov r9, r3 if(y2 != row_last) { 598a: 45a9 cmp r9, r5 598c: d100 bne.n 5990 <_lv_disp_refr_task+0x3f4> 598e: e6f2 b.n 5776 <_lv_disp_refr_task+0x1da> vdb->area.x1 = area_p->x1; 5990: 2348 movs r3, #72 ; 0x48 5992: 5efb ldrsh r3, [r7, r3] 5994: 8233 strh r3, [r6, #16] vdb->area.x2 = area_p->x2; 5996: 234c movs r3, #76 ; 0x4c 5998: 5efb ldrsh r3, [r7, r3] 599a: 82b3 strh r3, [r6, #20] vdb->area.y1 = row; 599c: 8274 strh r4, [r6, #18] vdb->area.y2 = y2; 599e: 464b mov r3, r9 59a0: 82f3 strh r3, [r6, #22] disp_refr->driver.buffer->last_part = 1; 59a2: 4b64 ldr r3, [pc, #400] ; (5b34 <_lv_disp_refr_task+0x598>) 59a4: 681b ldr r3, [r3, #0] 59a6: 6859 ldr r1, [r3, #4] 59a8: 2220 movs r2, #32 59aa: 5c8b ldrb r3, [r1, r2] 59ac: 2002 movs r0, #2 59ae: 4303 orrs r3, r0 59b0: 548b strb r3, [r1, r2] lv_refr_area_part(area_p); 59b2: 9803 ldr r0, [sp, #12] 59b4: 4b5e ldr r3, [pc, #376] ; (5b30 <_lv_disp_refr_task+0x594>) 59b6: 4798 blx r3 59b8: e6dd b.n 5776 <_lv_disp_refr_task+0x1da> lv_coord_t row_last = 0; 59ba: 2500 movs r5, #0 59bc: e7e5 b.n 598a <_lv_disp_refr_task+0x3ee> if(lv_disp_is_true_double_buf(disp_refr) && disp_refr->driver.set_px_cb == NULL) { 59be: 4b5e ldr r3, [pc, #376] ; (5b38 <_lv_disp_refr_task+0x59c>) 59c0: 4798 blx r3 59c2: 2800 cmp r0, #0 59c4: d004 beq.n 59d0 <_lv_disp_refr_task+0x434> 59c6: 4b5b ldr r3, [pc, #364] ; (5b34 <_lv_disp_refr_task+0x598>) 59c8: 6818 ldr r0, [r3, #0] 59ca: 6943 ldr r3, [r0, #20] 59cc: 2b00 cmp r3, #0 59ce: d01f beq.n 5a10 <_lv_disp_refr_task+0x474> _lv_memset_00(disp_refr->inv_areas, sizeof(disp_refr->inv_areas)); 59d0: 4c58 ldr r4, [pc, #352] ; (5b34 <_lv_disp_refr_task+0x598>) 59d2: 6820 ldr r0, [r4, #0] 59d4: 3048 adds r0, #72 ; 0x48 59d6: 2180 movs r1, #128 ; 0x80 59d8: 0049 lsls r1, r1, #1 59da: 4d58 ldr r5, [pc, #352] ; (5b3c <_lv_disp_refr_task+0x5a0>) 59dc: 47a8 blx r5 _lv_memset_00(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined)); 59de: 6820 ldr r0, [r4, #0] 59e0: 3049 adds r0, #73 ; 0x49 59e2: 30ff adds r0, #255 ; 0xff 59e4: 2120 movs r1, #32 59e6: 47a8 blx r5 disp_refr->inv_p = 0; 59e8: 6821 ldr r1, [r4, #0] 59ea: 22b4 movs r2, #180 ; 0xb4 59ec: 0052 lsls r2, r2, #1 59ee: 5a8b ldrh r3, [r1, r2] 59f0: 0a9b lsrs r3, r3, #10 59f2: 029b lsls r3, r3, #10 59f4: 528b strh r3, [r1, r2] elaps = lv_tick_elaps(start); 59f6: 9809 ldr r0, [sp, #36] ; 0x24 59f8: 4b51 ldr r3, [pc, #324] ; (5b40 <_lv_disp_refr_task+0x5a4>) 59fa: 4798 blx r3 59fc: 0001 movs r1, r0 if(disp_refr->driver.monitor_cb) { 59fe: 6820 ldr r0, [r4, #0] 5a00: 6983 ldr r3, [r0, #24] 5a02: 2b00 cmp r3, #0 5a04: d100 bne.n 5a08 <_lv_disp_refr_task+0x46c> 5a06: e079 b.n 5afc <_lv_disp_refr_task+0x560> disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num); 5a08: 4a4e ldr r2, [pc, #312] ; (5b44 <_lv_disp_refr_task+0x5a8>) 5a0a: 6812 ldr r2, [r2, #0] 5a0c: 4798 blx r3 5a0e: e075 b.n 5afc <_lv_disp_refr_task+0x560> lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr); 5a10: 4b4d ldr r3, [pc, #308] ; (5b48 <_lv_disp_refr_task+0x5ac>) 5a12: 4798 blx r3 5a14: 0004 movs r4, r0 lv_refr_vdb_flush(); 5a16: 4b4d ldr r3, [pc, #308] ; (5b4c <_lv_disp_refr_task+0x5b0>) 5a18: 4798 blx r3 while(vdb->flushing) 5a1a: 69a3 ldr r3, [r4, #24] 5a1c: 2b00 cmp r3, #0 5a1e: d1fc bne.n 5a1a <_lv_disp_refr_task+0x47e> uint8_t * buf_act = (uint8_t *)vdb->buf_act; 5a20: 68a3 ldr r3, [r4, #8] 5a22: 469b mov fp, r3 uint8_t * buf_ina = (uint8_t *)vdb->buf_act == vdb->buf1 ? vdb->buf2 : vdb->buf1; 5a24: 6823 ldr r3, [r4, #0] 5a26: 4699 mov r9, r3 5a28: 459b cmp fp, r3 5a2a: d101 bne.n 5a30 <_lv_disp_refr_task+0x494> 5a2c: 6863 ldr r3, [r4, #4] 5a2e: 4699 mov r9, r3 lv_coord_t hres = lv_disp_get_hor_res(disp_refr); 5a30: 4c40 ldr r4, [pc, #256] ; (5b34 <_lv_disp_refr_task+0x598>) 5a32: 6820 ldr r0, [r4, #0] 5a34: 4b46 ldr r3, [pc, #280] ; (5b50 <_lv_disp_refr_task+0x5b4>) 5a36: 4798 blx r3 5a38: 9003 str r0, [sp, #12] for(a = 0; a < disp_refr->inv_p; a++) { 5a3a: 6823 ldr r3, [r4, #0] 5a3c: 22b4 movs r2, #180 ; 0xb4 5a3e: 0052 lsls r2, r2, #1 5a40: 5a9a ldrh r2, [r3, r2] 5a42: 0592 lsls r2, r2, #22 5a44: d0c4 beq.n 59d0 <_lv_disp_refr_task+0x434> start_offs += hres * sizeof(lv_color_t); 5a46: 0042 lsls r2, r0, #1 5a48: 4692 mov sl, r2 5a4a: 2600 movs r6, #0 for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5a4c: 0035 movs r5, r6 5a4e: e00b b.n 5a68 <_lv_disp_refr_task+0x4cc> for(a = 0; a < disp_refr->inv_p; a++) { 5a50: 3601 adds r6, #1 5a52: b2b6 uxth r6, r6 5a54: 0035 movs r5, r6 5a56: 4b37 ldr r3, [pc, #220] ; (5b34 <_lv_disp_refr_task+0x598>) 5a58: 681b ldr r3, [r3, #0] 5a5a: 22b4 movs r2, #180 ; 0xb4 5a5c: 0052 lsls r2, r2, #1 5a5e: 5a9a ldrh r2, [r3, r2] 5a60: 0592 lsls r2, r2, #22 5a62: 0d92 lsrs r2, r2, #22 5a64: 4296 cmp r6, r2 5a66: dab3 bge.n 59d0 <_lv_disp_refr_task+0x434> if(disp_refr->inv_area_joined[a] == 0) { 5a68: 195a adds r2, r3, r5 5a6a: 3249 adds r2, #73 ; 0x49 5a6c: 32ff adds r2, #255 ; 0xff 5a6e: 7812 ldrb r2, [r2, #0] 5a70: 2a00 cmp r2, #0 5a72: d1ed bne.n 5a50 <_lv_disp_refr_task+0x4b4> 5a74: 00ea lsls r2, r5, #3 5a76: 189b adds r3, r3, r2 (hres * disp_refr->inv_areas[a].y1 + disp_refr->inv_areas[a].x1) * sizeof(lv_color_t); 5a78: 224a movs r2, #74 ; 0x4a 5a7a: 5e9f ldrsh r7, [r3, r2] 5a7c: 2248 movs r2, #72 ; 0x48 5a7e: 5e9a ldrsh r2, [r3, r2] 5a80: 9c03 ldr r4, [sp, #12] 5a82: 437c muls r4, r7 5a84: 18a4 adds r4, r4, r2 uint32_t start_offs = 5a86: 0064 lsls r4, r4, #1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 5a88: 214c movs r1, #76 ; 0x4c 5a8a: 5a5b ldrh r3, [r3, r1] 5a8c: 3301 adds r3, #1 5a8e: 1a9b subs r3, r3, r2 uint32_t line_length = lv_area_get_width(&disp_refr->inv_areas[a]) * sizeof(lv_color_t); 5a90: b21b sxth r3, r3 5a92: 005b lsls r3, r3, #1 5a94: 9304 str r3, [sp, #16] for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5a96: 002b movs r3, r5 5a98: 3309 adds r3, #9 5a9a: 00db lsls r3, r3, #3 5a9c: 4a25 ldr r2, [pc, #148] ; (5b34 <_lv_disp_refr_task+0x598>) 5a9e: 6812 ldr r2, [r2, #0] 5aa0: 9205 str r2, [sp, #20] 5aa2: 4694 mov ip, r2 5aa4: 4463 add r3, ip 5aa6: 2206 movs r2, #6 5aa8: 5e9b ldrsh r3, [r3, r2] 5aaa: 42bb cmp r3, r7 5aac: dbd0 blt.n 5a50 <_lv_disp_refr_task+0x4b4> 5aae: 46a0 mov r8, r4 5ab0: 44d8 add r8, fp 5ab2: 444c add r4, r9 5ab4: 3509 adds r5, #9 5ab6: 00ed lsls r5, r5, #3 _lv_memcpy(buf_act + start_offs, buf_ina + start_offs, line_length); 5ab8: 9a04 ldr r2, [sp, #16] 5aba: 0021 movs r1, r4 5abc: 4640 mov r0, r8 5abe: 4b25 ldr r3, [pc, #148] ; (5b54 <_lv_disp_refr_task+0x5b8>) 5ac0: 4798 blx r3 5ac2: 3701 adds r7, #1 5ac4: b23f sxth r7, r7 5ac6: 44d0 add r8, sl 5ac8: 4454 add r4, sl for(y = disp_refr->inv_areas[a].y1; y <= disp_refr->inv_areas[a].y2; y++) { 5aca: 4b1a ldr r3, [pc, #104] ; (5b34 <_lv_disp_refr_task+0x598>) 5acc: 681b ldr r3, [r3, #0] 5ace: 9305 str r3, [sp, #20] 5ad0: 195b adds r3, r3, r5 5ad2: 2206 movs r2, #6 5ad4: 5e9b ldrsh r3, [r3, r2] 5ad6: 42bb cmp r3, r7 5ad8: daee bge.n 5ab8 <_lv_disp_refr_task+0x51c> 5ada: e7b9 b.n 5a50 <_lv_disp_refr_task+0x4b4> px_num = 0; 5adc: 2200 movs r2, #0 5ade: 4b19 ldr r3, [pc, #100] ; (5b44 <_lv_disp_refr_task+0x5a8>) 5ae0: 601a str r2, [r3, #0] if(disp_refr->inv_p == 0) return; 5ae2: 23b4 movs r3, #180 ; 0xb4 5ae4: 005b lsls r3, r3, #1 5ae6: 5ac3 ldrh r3, [r0, r3] 5ae8: 059b lsls r3, r3, #22 5aea: d112 bne.n 5b12 <_lv_disp_refr_task+0x576> if(disp_refr->inv_p != 0) { 5aec: 4b11 ldr r3, [pc, #68] ; (5b34 <_lv_disp_refr_task+0x598>) 5aee: 6818 ldr r0, [r3, #0] 5af0: 23b4 movs r3, #180 ; 0xb4 5af2: 005b lsls r3, r3, #1 5af4: 5ac3 ldrh r3, [r0, r3] 5af6: 059b lsls r3, r3, #22 5af8: d000 beq.n 5afc <_lv_disp_refr_task+0x560> 5afa: e760 b.n 59be <_lv_disp_refr_task+0x422> _lv_mem_buf_free_all(); 5afc: 4b16 ldr r3, [pc, #88] ; (5b58 <_lv_disp_refr_task+0x5bc>) 5afe: 4798 blx r3 _lv_font_clean_up_fmt_txt(); 5b00: 4b16 ldr r3, [pc, #88] ; (5b5c <_lv_disp_refr_task+0x5c0>) 5b02: 4798 blx r3 } 5b04: b00d add sp, #52 ; 0x34 5b06: bc3c pop {r2, r3, r4, r5} 5b08: 4690 mov r8, r2 5b0a: 4699 mov r9, r3 5b0c: 46a2 mov sl, r4 5b0e: 46ab mov fp, r5 5b10: bdf0 pop {r4, r5, r6, r7, pc} int32_t last_i = 0; 5b12: 2300 movs r3, #0 5b14: 9307 str r3, [sp, #28] 5b16: e5ef b.n 56f8 <_lv_disp_refr_task+0x15c> px_num = 0; 5b18: 2200 movs r2, #0 5b1a: 4b0a ldr r3, [pc, #40] ; (5b44 <_lv_disp_refr_task+0x5a8>) 5b1c: 601a str r2, [r3, #0] if(disp_refr->inv_p == 0) return; 5b1e: 23b4 movs r3, #180 ; 0xb4 5b20: 005b lsls r3, r3, #1 5b22: 5ac3 ldrh r3, [r0, r3] 5b24: 059b lsls r3, r3, #22 5b26: d0e9 beq.n 5afc <_lv_disp_refr_task+0x560> int32_t last_i = 0; 5b28: 2300 movs r3, #0 5b2a: 9307 str r3, [sp, #28] 5b2c: e5e4 b.n 56f8 <_lv_disp_refr_task+0x15c> 5b2e: 46c0 nop ; (mov r8, r8) 5b30: 000053d9 .word 0x000053d9 5b34: 200026f8 .word 0x200026f8 5b38: 00010e91 .word 0x00010e91 5b3c: 00012975 .word 0x00012975 5b40: 00010f15 .word 0x00010f15 5b44: 200026fc .word 0x200026fc 5b48: 00010e75 .word 0x00010e75 5b4c: 00005359 .word 0x00005359 5b50: 00010d81 .word 0x00010d81 5b54: 00012545 .word 0x00012545 5b58: 000124ed .word 0x000124ed 5b5c: 00010b7d .word 0x00010b7d 00005b60 : /** * Initialize a style * @param style pointer to a style to initialize */ void lv_style_init(lv_style_t * style) { 5b60: b510 push {r4, lr} _lv_memset_00(style, sizeof(lv_style_t)); 5b62: 2104 movs r1, #4 5b64: 4b01 ldr r3, [pc, #4] ; (5b6c ) 5b66: 4798 blx r3 #if LV_USE_ASSERT_STYLE style->sentinel = LV_DEBUG_STYLE_SENTINEL_VALUE; #endif } 5b68: bd10 pop {r4, pc} 5b6a: 46c0 nop ; (mov r8, r8) 5b6c: 00012975 .word 0x00012975 00005b70 : /** * Initialize a style list * @param list a style list to initialize */ void lv_style_list_init(lv_style_list_t * list) { 5b70: b510 push {r4, lr} _lv_memset_00(list, sizeof(lv_style_list_t)); 5b72: 2108 movs r1, #8 5b74: 4b01 ldr r3, [pc, #4] ; (5b7c ) 5b76: 4798 blx r3 #if LV_USE_ASSERT_STYLE list->sentinel = LV_DEBUG_STYLE_LIST_SENTINEL_VALUE; #endif } 5b78: bd10 pop {r4, pc} 5b7a: 46c0 nop ; (mov r8, r8) 5b7c: 00012975 .word 0x00012975 00005b80 <_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) { 5b80: b570 push {r4, r5, r6, lr} 5b82: b082 sub sp, #8 5b84: 0004 movs r4, r0 5b86: 000d movs r5, r1 LV_ASSERT_STYLE_LIST(list); LV_ASSERT_STYLE(style); if(list->style_cnt == 0) return; 5b88: 7906 ldrb r6, [r0, #4] 5b8a: 2e00 cmp r6, #0 5b8c: d025 beq.n 5bda <_lv_style_list_remove_style+0x5a> /*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) { 5b8e: 6800 ldr r0, [r0, #0] 5b90: 6803 ldr r3, [r0, #0] 5b92: 4299 cmp r1, r3 5b94: d00c beq.n 5bb0 <_lv_style_list_remove_style+0x30> 5b96: 1d03 adds r3, r0, #4 5b98: 1e72 subs r2, r6, #1 5b9a: b2d2 uxtb r2, r2 5b9c: 3201 adds r2, #1 5b9e: 0092 lsls r2, r2, #2 5ba0: 1882 adds r2, r0, r2 for(i = 0; i < list->style_cnt; i++) { 5ba2: 429a cmp r2, r3 5ba4: d019 beq.n 5bda <_lv_style_list_remove_style+0x5a> 5ba6: 3304 adds r3, #4 if(list->style_list[i] == style) { 5ba8: 1f19 subs r1, r3, #4 5baa: 6809 ldr r1, [r1, #0] 5bac: 42a9 cmp r1, r5 5bae: d1f8 bne.n 5ba2 <_lv_style_list_remove_style+0x22> break; } } if(found == false) return; if(list->style_cnt == 1) { 5bb0: 2e01 cmp r6, #1 5bb2: d014 beq.n 5bde <_lv_style_list_remove_style+0x5e> 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)); 5bb4: 1e71 subs r1, r6, #1 5bb6: 0089 lsls r1, r1, #2 5bb8: 4b21 ldr r3, [pc, #132] ; (5c40 <_lv_style_list_remove_style+0xc0>) 5bba: 4798 blx r3 5bbc: 0006 movs r6, r0 LV_ASSERT_MEM(new_classes); 5bbe: 4b21 ldr r3, [pc, #132] ; (5c44 <_lv_style_list_remove_style+0xc4>) 5bc0: 4798 blx r3 5bc2: 2800 cmp r0, #0 5bc4: d015 beq.n 5bf2 <_lv_style_list_remove_style+0x72> if(new_classes == NULL) { 5bc6: 2e00 cmp r6, #0 5bc8: d021 beq.n 5c0e <_lv_style_list_remove_style+0x8e> 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++) { 5bca: 7921 ldrb r1, [r4, #4] 5bcc: 2200 movs r2, #0 5bce: 2300 movs r3, #0 5bd0: 2900 cmp r1, #0 5bd2: d12b bne.n 5c2c <_lv_style_list_remove_style+0xac> new_classes[j] = list->style_list[i]; j++; } list->style_cnt--; 5bd4: 3901 subs r1, #1 5bd6: 7121 strb r1, [r4, #4] list->style_list = new_classes; 5bd8: 6026 str r6, [r4, #0] } 5bda: b002 add sp, #8 5bdc: bd70 pop {r4, r5, r6, pc} lv_mem_free(list->style_list); 5bde: 4b1a ldr r3, [pc, #104] ; (5c48 <_lv_style_list_remove_style+0xc8>) 5be0: 4798 blx r3 list->style_list = NULL; 5be2: 2300 movs r3, #0 5be4: 6023 str r3, [r4, #0] list->style_cnt = 0; 5be6: 7123 strb r3, [r4, #4] list->has_local = 0; 5be8: 7963 ldrb r3, [r4, #5] 5bea: 2201 movs r2, #1 5bec: 4393 bics r3, r2 5bee: 7163 strb r3, [r4, #5] return; 5bf0: e7f3 b.n 5bda <_lv_style_list_remove_style+0x5a> LV_ASSERT_MEM(new_classes); 5bf2: 4b16 ldr r3, [pc, #88] ; (5c4c <_lv_style_list_remove_style+0xcc>) 5bf4: 9300 str r3, [sp, #0] 5bf6: 2282 movs r2, #130 ; 0x82 5bf8: 0052 lsls r2, r2, #1 5bfa: 4915 ldr r1, [pc, #84] ; (5c50 <_lv_style_list_remove_style+0xd0>) 5bfc: 3003 adds r0, #3 5bfe: 4c15 ldr r4, [pc, #84] ; (5c54 <_lv_style_list_remove_style+0xd4>) 5c00: 47a0 blx r4 5c02: 0032 movs r2, r6 5c04: 2300 movs r3, #0 5c06: 4814 ldr r0, [pc, #80] ; (5c58 <_lv_style_list_remove_style+0xd8>) 5c08: 4914 ldr r1, [pc, #80] ; (5c5c <_lv_style_list_remove_style+0xdc>) 5c0a: 4788 blx r1 5c0c: e7fe b.n 5c0c <_lv_style_list_remove_style+0x8c> LV_LOG_WARN("lv_style_list_remove_style: couldn't reallocate class list"); 5c0e: 4b14 ldr r3, [pc, #80] ; (5c60 <_lv_style_list_remove_style+0xe0>) 5c10: 9300 str r3, [sp, #0] 5c12: 4b0e ldr r3, [pc, #56] ; (5c4c <_lv_style_list_remove_style+0xcc>) 5c14: 2283 movs r2, #131 ; 0x83 5c16: 0052 lsls r2, r2, #1 5c18: 490d ldr r1, [pc, #52] ; (5c50 <_lv_style_list_remove_style+0xd0>) 5c1a: 2002 movs r0, #2 5c1c: 4c0d ldr r4, [pc, #52] ; (5c54 <_lv_style_list_remove_style+0xd4>) 5c1e: 47a0 blx r4 return; 5c20: e7db b.n 5bda <_lv_style_list_remove_style+0x5a> for(i = 0, j = 0; i < list->style_cnt; i++) { 5c22: 3301 adds r3, #1 5c24: b2db uxtb r3, r3 5c26: 7921 ldrb r1, [r4, #4] 5c28: 4299 cmp r1, r3 5c2a: d9d3 bls.n 5bd4 <_lv_style_list_remove_style+0x54> if(list->style_list[i] == style) continue; 5c2c: 0099 lsls r1, r3, #2 5c2e: 6820 ldr r0, [r4, #0] 5c30: 5809 ldr r1, [r1, r0] 5c32: 428d cmp r5, r1 5c34: d0f5 beq.n 5c22 <_lv_style_list_remove_style+0xa2> new_classes[j] = list->style_list[i]; 5c36: 0090 lsls r0, r2, #2 5c38: 5181 str r1, [r0, r6] j++; 5c3a: 3201 adds r2, #1 5c3c: b2d2 uxtb r2, r2 5c3e: e7f0 b.n 5c22 <_lv_style_list_remove_style+0xa2> 5c40: 000126fd .word 0x000126fd 5c44: 000017ad .word 0x000017ad 5c48: 000123c9 .word 0x000123c9 5c4c: 00025e44 .word 0x00025e44 5c50: 00025f58 .word 0x00025f58 5c54: 00012159 .word 0x00012159 5c58: 00025854 .word 0x00025854 5c5c: 000017b5 .word 0x000017b5 5c60: 00025f8c .word 0x00025f8c 00005c64 <_lv_style_list_add_style>: { 5c64: b570 push {r4, r5, r6, lr} 5c66: b082 sub sp, #8 5c68: 0005 movs r5, r0 5c6a: 000c movs r4, r1 if(list == NULL) return; 5c6c: 2800 cmp r0, #0 5c6e: d030 beq.n 5cd2 <_lv_style_list_add_style+0x6e> _lv_style_list_remove_style(list, style); 5c70: 4b27 ldr r3, [pc, #156] ; (5d10 <_lv_style_list_add_style+0xac>) 5c72: 4798 blx r3 if(list->style_cnt == 0) new_classes = lv_mem_alloc(sizeof(lv_style_t *)); 5c74: 792b ldrb r3, [r5, #4] 5c76: 2b00 cmp r3, #0 5c78: d12d bne.n 5cd6 <_lv_style_list_add_style+0x72> 5c7a: 2004 movs r0, #4 5c7c: 4b25 ldr r3, [pc, #148] ; (5d14 <_lv_style_list_add_style+0xb0>) 5c7e: 4798 blx r3 5c80: 0006 movs r6, r0 LV_ASSERT_MEM(new_classes); 5c82: 0030 movs r0, r6 5c84: 4b24 ldr r3, [pc, #144] ; (5d18 <_lv_style_list_add_style+0xb4>) 5c86: 4798 blx r3 5c88: 2800 cmp r0, #0 5c8a: d02b beq.n 5ce4 <_lv_style_list_add_style+0x80> if(new_classes == NULL) { 5c8c: 2e00 cmp r6, #0 5c8e: d036 beq.n 5cfe <_lv_style_list_add_style+0x9a> if(list->has_trans) first_style++; 5c90: 796b ldrb r3, [r5, #5] 5c92: 0859 lsrs r1, r3, #1 5c94: 2201 movs r2, #1 uint8_t first_style = 0; 5c96: 4011 ands r1, r2 if(list->has_local) first_style++; 5c98: 421a tst r2, r3 5c9a: d000 beq.n 5c9e <_lv_style_list_add_style+0x3a> 5c9c: 3101 adds r1, #1 for(i = list->style_cnt; i > first_style; i--) { 5c9e: 792a ldrb r2, [r5, #4] 5ca0: 4291 cmp r1, r2 5ca2: d210 bcs.n 5cc6 <_lv_style_list_add_style+0x62> 5ca4: 4b1d ldr r3, [pc, #116] ; (5d1c <_lv_style_list_add_style+0xb8>) 5ca6: 18d3 adds r3, r2, r3 5ca8: 009b lsls r3, r3, #2 5caa: 18f3 adds r3, r6, r3 5cac: 481c ldr r0, [pc, #112] ; (5d20 <_lv_style_list_add_style+0xbc>) 5cae: 1810 adds r0, r2, r0 5cb0: 3a01 subs r2, #1 5cb2: 1a52 subs r2, r2, r1 5cb4: b2d2 uxtb r2, r2 5cb6: 1a82 subs r2, r0, r2 5cb8: 0092 lsls r2, r2, #2 5cba: 18b2 adds r2, r6, r2 new_classes[i] = new_classes[i - 1]; 5cbc: 6818 ldr r0, [r3, #0] 5cbe: 6058 str r0, [r3, #4] 5cc0: 3b04 subs r3, #4 for(i = list->style_cnt; i > first_style; i--) { 5cc2: 4293 cmp r3, r2 5cc4: d1fa bne.n 5cbc <_lv_style_list_add_style+0x58> new_classes[first_style] = style; 5cc6: 0089 lsls r1, r1, #2 5cc8: 518c str r4, [r1, r6] list->style_cnt++; 5cca: 792b ldrb r3, [r5, #4] 5ccc: 3301 adds r3, #1 5cce: 712b strb r3, [r5, #4] list->style_list = new_classes; 5cd0: 602e str r6, [r5, #0] } 5cd2: b002 add sp, #8 5cd4: bd70 pop {r4, r5, r6, pc} else new_classes = lv_mem_realloc(list->style_list, sizeof(lv_style_t *) * (list->style_cnt + 1)); 5cd6: 3301 adds r3, #1 5cd8: 0099 lsls r1, r3, #2 5cda: 6828 ldr r0, [r5, #0] 5cdc: 4b11 ldr r3, [pc, #68] ; (5d24 <_lv_style_list_add_style+0xc0>) 5cde: 4798 blx r3 5ce0: 0006 movs r6, r0 5ce2: e7ce b.n 5c82 <_lv_style_list_add_style+0x1e> LV_ASSERT_MEM(new_classes); 5ce4: 4b10 ldr r3, [pc, #64] ; (5d28 <_lv_style_list_add_style+0xc4>) 5ce6: 9300 str r3, [sp, #0] 5ce8: 22d0 movs r2, #208 ; 0xd0 5cea: 4910 ldr r1, [pc, #64] ; (5d2c <_lv_style_list_add_style+0xc8>) 5cec: 3003 adds r0, #3 5cee: 4c10 ldr r4, [pc, #64] ; (5d30 <_lv_style_list_add_style+0xcc>) 5cf0: 47a0 blx r4 5cf2: 0032 movs r2, r6 5cf4: 2300 movs r3, #0 5cf6: 480f ldr r0, [pc, #60] ; (5d34 <_lv_style_list_add_style+0xd0>) 5cf8: 490f ldr r1, [pc, #60] ; (5d38 <_lv_style_list_add_style+0xd4>) 5cfa: 4788 blx r1 5cfc: e7fe b.n 5cfc <_lv_style_list_add_style+0x98> LV_LOG_WARN("lv_style_list_add_style: couldn't add the class"); 5cfe: 4b0f ldr r3, [pc, #60] ; (5d3c <_lv_style_list_add_style+0xd8>) 5d00: 9300 str r3, [sp, #0] 5d02: 4b09 ldr r3, [pc, #36] ; (5d28 <_lv_style_list_add_style+0xc4>) 5d04: 22d2 movs r2, #210 ; 0xd2 5d06: 4909 ldr r1, [pc, #36] ; (5d2c <_lv_style_list_add_style+0xc8>) 5d08: 2002 movs r0, #2 5d0a: 4c09 ldr r4, [pc, #36] ; (5d30 <_lv_style_list_add_style+0xcc>) 5d0c: 47a0 blx r4 return; 5d0e: e7e0 b.n 5cd2 <_lv_style_list_add_style+0x6e> 5d10: 00005b81 .word 0x00005b81 5d14: 000122dd .word 0x000122dd 5d18: 000017ad .word 0x000017ad 5d1c: 3fffffff .word 0x3fffffff 5d20: 3ffffffe .word 0x3ffffffe 5d24: 000126fd .word 0x000126fd 5d28: 00025e28 .word 0x00025e28 5d2c: 00025f58 .word 0x00025f58 5d30: 00012159 .word 0x00012159 5d34: 00025854 .word 0x00025854 5d38: 000017b5 .word 0x000017b5 5d3c: 00025ee8 .word 0x00025ee8 00005d40 : * 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) { 5d40: b530 push {r4, r5, lr} 5d42: b083 sub sp, #12 5d44: 0005 movs r5, r0 LV_ASSERT_STYLE_LIST(list); if(list->has_local) return lv_style_list_get_style(list, 0); 5d46: 7942 ldrb r2, [r0, #5] 5d48: 07d3 lsls r3, r2, #31 5d4a: d510 bpl.n 5d6e 5d4c: 2306 movs r3, #6 5d4e: 4013 ands r3, r2 5d50: 3b06 subs r3, #6 5d52: 425a negs r2, r3 5d54: 4153 adcs r3, r2 5d56: b2db uxtb r3, r3 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 5d58: 7902 ldrb r2, [r0, #4] 5d5a: 2a00 cmp r2, #0 5d5c: d033 beq.n 5dc6 5d5e: 429a cmp r2, r3 5d60: d933 bls.n 5dca return list->style_list[id]; 5d62: 6802 ldr r2, [r0, #0] 5d64: 009b lsls r3, r3, #2 5d66: 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; } 5d68: 0020 movs r0, r4 5d6a: b003 add sp, #12 5d6c: bd30 pop {r4, r5, pc} lv_style_t * local_style = lv_mem_alloc(sizeof(lv_style_t)); 5d6e: 2004 movs r0, #4 5d70: 4b17 ldr r3, [pc, #92] ; (5dd0 ) 5d72: 4798 blx r3 5d74: 0004 movs r4, r0 LV_ASSERT_MEM(local_style); 5d76: 4b17 ldr r3, [pc, #92] ; (5dd4 ) 5d78: 4798 blx r3 5d7a: 2800 cmp r0, #0 5d7c: d00d beq.n 5d9a if(local_style == NULL) { 5d7e: 2c00 cmp r4, #0 5d80: d018 beq.n 5db4 lv_style_init(local_style); 5d82: 0020 movs r0, r4 5d84: 4b14 ldr r3, [pc, #80] ; (5dd8 ) 5d86: 4798 blx r3 _lv_style_list_add_style(list, local_style); 5d88: 0021 movs r1, r4 5d8a: 0028 movs r0, r5 5d8c: 4b13 ldr r3, [pc, #76] ; (5ddc ) 5d8e: 4798 blx r3 list->has_local = 1; 5d90: 796b ldrb r3, [r5, #5] 5d92: 2201 movs r2, #1 5d94: 4313 orrs r3, r2 5d96: 716b strb r3, [r5, #5] return local_style; 5d98: e7e6 b.n 5d68 LV_ASSERT_MEM(local_style); 5d9a: 4b11 ldr r3, [pc, #68] ; (5de0 ) 5d9c: 9300 str r3, [sp, #0] 5d9e: 4a11 ldr r2, [pc, #68] ; (5de4 ) 5da0: 4911 ldr r1, [pc, #68] ; (5de8 ) 5da2: 3003 adds r0, #3 5da4: 4d11 ldr r5, [pc, #68] ; (5dec ) 5da6: 47a8 blx r5 5da8: 0022 movs r2, r4 5daa: 2300 movs r3, #0 5dac: 4810 ldr r0, [pc, #64] ; (5df0 ) 5dae: 4911 ldr r1, [pc, #68] ; (5df4 ) 5db0: 4788 blx r1 5db2: e7fe b.n 5db2 LV_LOG_WARN("get_local_style: couldn't create local style"); 5db4: 4b10 ldr r3, [pc, #64] ; (5df8 ) 5db6: 9300 str r3, [sp, #0] 5db8: 4b09 ldr r3, [pc, #36] ; (5de0 ) 5dba: 4a10 ldr r2, [pc, #64] ; (5dfc ) 5dbc: 490a ldr r1, [pc, #40] ; (5de8 ) 5dbe: 2002 movs r0, #2 5dc0: 4d0a ldr r5, [pc, #40] ; (5dec ) 5dc2: 47a8 blx r5 return NULL; 5dc4: e7d0 b.n 5d68 if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 5dc6: 2400 movs r4, #0 5dc8: e7ce b.n 5d68 5dca: 2400 movs r4, #0 5dcc: e7cc b.n 5d68 5dce: 46c0 nop ; (mov r8, r8) 5dd0: 000122dd .word 0x000122dd 5dd4: 000017ad .word 0x000017ad 5dd8: 00005b61 .word 0x00005b61 5ddc: 00005c65 .word 0x00005c65 5de0: 00025ed0 .word 0x00025ed0 5de4: 00000435 .word 0x00000435 5de8: 00025f58 .word 0x00025f58 5dec: 00012159 .word 0x00012159 5df0: 00025854 .word 0x00025854 5df4: 000017b5 .word 0x000017b5 5df8: 00025fc8 .word 0x00025fc8 5dfc: 00000437 .word 0x00000437 00005e00 : { 5e00: b510 push {r4, lr} 5e02: 0004 movs r4, r0 lv_mem_free(style->map); 5e04: 6800 ldr r0, [r0, #0] 5e06: 4b02 ldr r3, [pc, #8] ; (5e10 ) 5e08: 4798 blx r3 style->map = NULL; 5e0a: 2300 movs r3, #0 5e0c: 6023 str r3, [r4, #0] } 5e0e: bd10 pop {r4, pc} 5e10: 000123c9 .word 0x000123c9 00005e14 <_lv_style_get_mem_size>: { 5e14: b510 push {r4, lr} if(style->map == NULL) return 0; 5e16: 6801 ldr r1, [r0, #0] 5e18: 2900 cmp r1, #0 5e1a: d019 beq.n 5e50 <_lv_style_get_mem_size+0x3c> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5e1c: 780b ldrb r3, [r1, #0] 5e1e: 2bff cmp r3, #255 ; 0xff 5e20: d012 beq.n 5e48 <_lv_style_get_mem_size+0x34> 5e22: 2000 movs r0, #0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5e24: 240f movs r4, #15 5e26: e003 b.n 5e30 <_lv_style_get_mem_size+0x1c> i += sizeof(lv_style_property_t); 5e28: 1c90 adds r0, r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5e2a: 5c0b ldrb r3, [r1, r0] 5e2c: 2bff cmp r3, #255 ; 0xff 5e2e: d00c beq.n 5e4a <_lv_style_get_mem_size+0x36> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5e30: 4023 ands r3, r4 5e32: 1c82 adds r2, r0, #2 5e34: 2b08 cmp r3, #8 5e36: ddf7 ble.n 5e28 <_lv_style_get_mem_size+0x14> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5e38: 1c82 adds r2, r0, #2 5e3a: 2b0b cmp r3, #11 5e3c: ddf4 ble.n 5e28 <_lv_style_get_mem_size+0x14> else i += sizeof(const void *); 5e3e: 1d02 adds r2, r0, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 5e40: 2b0d cmp r3, #13 5e42: dcf1 bgt.n 5e28 <_lv_style_get_mem_size+0x14> 5e44: 1c42 adds r2, r0, #1 5e46: e7ef b.n 5e28 <_lv_style_get_mem_size+0x14> while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5e48: 2000 movs r0, #0 return i + sizeof(lv_style_property_t); 5e4a: 3002 adds r0, #2 5e4c: b280 uxth r0, r0 } 5e4e: bd10 pop {r4, pc} if(style->map == NULL) return 0; 5e50: 2000 movs r0, #0 5e52: e7fc b.n 5e4e <_lv_style_get_mem_size+0x3a> 00005e54 : { 5e54: b570 push {r4, r5, r6, lr} 5e56: 0006 movs r6, r0 5e58: 1e0c subs r4, r1, #0 if(style_src == NULL) return; 5e5a: d00d beq.n 5e78 if(style_src->map == NULL) return; 5e5c: 680b ldr r3, [r1, #0] 5e5e: 2b00 cmp r3, #0 5e60: d00a beq.n 5e78 uint16_t size = _lv_style_get_mem_size(style_src); 5e62: 0008 movs r0, r1 5e64: 4b05 ldr r3, [pc, #20] ; (5e7c ) 5e66: 4798 blx r3 5e68: 0005 movs r5, r0 style_dest->map = lv_mem_alloc(size); 5e6a: 4b05 ldr r3, [pc, #20] ; (5e80 ) 5e6c: 4798 blx r3 5e6e: 6030 str r0, [r6, #0] _lv_memcpy(style_dest->map, style_src->map, size); 5e70: 6821 ldr r1, [r4, #0] 5e72: 002a movs r2, r5 5e74: 4b03 ldr r3, [pc, #12] ; (5e84 ) 5e76: 4798 blx r3 } 5e78: bd70 pop {r4, r5, r6, pc} 5e7a: 46c0 nop ; (mov r8, r8) 5e7c: 00005e15 .word 0x00005e15 5e80: 000122dd .word 0x000122dd 5e84: 00012545 .word 0x00012545 00005e88 : { 5e88: b5f0 push {r4, r5, r6, r7, lr} 5e8a: 46de mov lr, fp 5e8c: 4657 mov r7, sl 5e8e: 464e mov r6, r9 5e90: 4645 mov r5, r8 5e92: b5e0 push {r5, r6, r7, lr} 5e94: b085 sub sp, #20 5e96: 1e06 subs r6, r0, #0 5e98: 9103 str r1, [sp, #12] if(style == NULL) return false; 5e9a: d100 bne.n 5e9e 5e9c: e07b b.n 5f96 if(style->map == NULL) return -1; 5e9e: 6800 ldr r0, [r0, #0] 5ea0: 2800 cmp r0, #0 5ea2: d100 bne.n 5ea6 5ea4: e07b b.n 5f9e uint8_t id_to_find = prop & 0xFF; 5ea6: b2cc uxtb r4, r1 attr.full = (prop >> 8) & 0xFF; 5ea8: 0a0b lsrs r3, r1, #8 5eaa: 4698 mov r8, r3 5eac: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5eae: 7803 ldrb r3, [r0, #0] 5eb0: 2bff cmp r3, #255 ; 0xff 5eb2: d04e beq.n 5f52 5eb4: 2201 movs r2, #1 5eb6: 4252 negs r2, r2 5eb8: 9202 str r2, [sp, #8] 5eba: 4693 mov fp, r2 5ebc: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 5ebe: 257f movs r5, #127 ; 0x7f 5ec0: 46aa mov sl, r5 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5ec2: 0649 lsls r1, r1, #25 5ec4: 0e49 lsrs r1, r1, #25 5ec6: 468c mov ip, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5ec8: 3d70 subs r5, #112 ; 0x70 5eca: 46c1 mov r9, r8 5ecc: 46b0 mov r8, r6 5ece: e01c b.n 5f0a attr_i.full = style->map[i + 1]; 5ed0: 1881 adds r1, r0, r2 5ed2: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 5ed4: 464f mov r7, r9 5ed6: 404f eors r7, r1 5ed8: 4656 mov r6, sl 5eda: 423e tst r6, r7 5edc: d00d beq.n 5efa else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5ede: 0649 lsls r1, r1, #25 5ee0: 0e49 lsrs r1, r1, #25 5ee2: 9101 str r1, [sp, #4] 5ee4: 000f movs r7, r1 5ee6: 4666 mov r6, ip 5ee8: 43b7 bics r7, r6 5eea: d110 bne.n 5f0e if(attr_i.bits.state > weight) { 5eec: 4559 cmp r1, fp 5eee: dd0e ble.n 5f0e weight = attr_i.bits.state; 5ef0: b209 sxth r1, r1 5ef2: 468b mov fp, r1 id_guess = i; 5ef4: b211 sxth r1, r2 5ef6: 9102 str r1, [sp, #8] 5ef8: e009 b.n 5f0e 5efa: 4643 mov r3, r8 5efc: 46c8 mov r8, r9 5efe: 001e movs r6, r3 5f00: e015 b.n 5f2e i += sizeof(lv_style_property_t); 5f02: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5f04: 5c83 ldrb r3, [r0, r2] 5f06: 2bff cmp r3, #255 ; 0xff 5f08: d00d beq.n 5f26 if(style->map[i] == id_to_find) { 5f0a: 429c cmp r4, r3 5f0c: d0e0 beq.n 5ed0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5f0e: 402b ands r3, r5 5f10: 1c91 adds r1, r2, #2 5f12: 2b08 cmp r3, #8 5f14: ddf5 ble.n 5f02 else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 5f16: 1c91 adds r1, r2, #2 5f18: 2b0b cmp r3, #11 5f1a: ddf2 ble.n 5f02 else i += sizeof(const void *); 5f1c: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 5f1e: 2b0d cmp r3, #13 5f20: dcef bgt.n 5f02 5f22: 1c51 adds r1, r2, #1 5f24: e7ed b.n 5f02 5f26: 4643 mov r3, r8 5f28: 46c8 mov r8, r9 5f2a: 001e movs r6, r3 return id_guess; 5f2c: 9a02 ldr r2, [sp, #8] if(id >= 0) { 5f2e: 2a00 cmp r2, #0 5f30: db33 blt.n 5f9a attr_found.full = *(style->map + id + 1); 5f32: 0014 movs r4, r2 5f34: 1880 adds r0, r0, r2 if(attr_found.bits.state == attr_goal.bits.state) { 5f36: 7843 ldrb r3, [r0, #1] 5f38: 4642 mov r2, r8 5f3a: 405a eors r2, r3 5f3c: 0013 movs r3, r2 return false; 5f3e: 2000 movs r0, #0 if(attr_found.bits.state == attr_goal.bits.state) { 5f40: 065b lsls r3, r3, #25 5f42: d00a beq.n 5f5a } 5f44: b005 add sp, #20 5f46: bc3c pop {r2, r3, r4, r5} 5f48: 4690 mov r8, r2 5f4a: 4699 mov r9, r3 5f4c: 46a2 mov sl, r4 5f4e: 46ab mov fp, r5 5f50: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 5f52: 2301 movs r3, #1 5f54: 425b negs r3, r3 5f56: 9302 str r3, [sp, #8] 5f58: e7e8 b.n 5f2c uint32_t map_size = _lv_style_get_mem_size(style); 5f5a: 0030 movs r0, r6 5f5c: 4b11 ldr r3, [pc, #68] ; (5fa4 ) 5f5e: 4798 blx r3 if((prop & 0xF) < LV_STYLE_ID_COLOR) prop_size += sizeof(lv_style_int_t); 5f60: 230f movs r3, #15 5f62: 9a03 ldr r2, [sp, #12] 5f64: 4013 ands r3, r2 else if((prop & 0xF) < LV_STYLE_ID_OPA) prop_size += sizeof(lv_color_t); 5f66: 2104 movs r1, #4 5f68: 2b0b cmp r3, #11 5f6a: dd03 ble.n 5f74 else if((prop & 0xF) < LV_STYLE_ID_PTR) prop_size += sizeof(lv_opa_t); 5f6c: 3901 subs r1, #1 5f6e: 2b0d cmp r3, #13 5f70: dd00 ble.n 5f74 else prop_size += sizeof(const void *); 5f72: 3103 adds r1, #3 for(i = id; i < map_size - prop_size; i++) { 5f74: 000d movs r5, r1 5f76: 1a41 subs r1, r0, r1 5f78: 428c cmp r4, r1 5f7a: d206 bcs.n 5f8a style->map[i] = style->map[i + prop_size]; 5f7c: 6833 ldr r3, [r6, #0] 5f7e: 195a adds r2, r3, r5 5f80: 5d12 ldrb r2, [r2, r4] 5f82: 551a strb r2, [r3, r4] for(i = id; i < map_size - prop_size; i++) { 5f84: 3401 adds r4, #1 5f86: 428c cmp r4, r1 5f88: d1f8 bne.n 5f7c style->map = lv_mem_realloc(style->map, map_size - prop_size); 5f8a: 6830 ldr r0, [r6, #0] 5f8c: 4b06 ldr r3, [pc, #24] ; (5fa8 ) 5f8e: 4798 blx r3 5f90: 6030 str r0, [r6, #0] return true; 5f92: 2001 movs r0, #1 5f94: e7d6 b.n 5f44 if(style == NULL) return false; 5f96: 2000 movs r0, #0 5f98: e7d4 b.n 5f44 return false; 5f9a: 2000 movs r0, #0 5f9c: e7d2 b.n 5f44 5f9e: 2000 movs r0, #0 5fa0: e7d0 b.n 5f44 5fa2: 46c0 nop ; (mov r8, r8) 5fa4: 00005e15 .word 0x00005e15 5fa8: 000126fd .word 0x000126fd 00005fac <_lv_style_set_int>: { 5fac: b5f0 push {r4, r5, r6, r7, lr} 5fae: 46de mov lr, fp 5fb0: 4657 mov r7, sl 5fb2: 464e mov r6, r9 5fb4: 4645 mov r5, r8 5fb6: b5e0 push {r5, r6, r7, lr} 5fb8: b089 sub sp, #36 ; 0x24 5fba: 0006 movs r6, r0 5fbc: 230e movs r3, #14 5fbe: a802 add r0, sp, #8 5fc0: 4684 mov ip, r0 5fc2: 4463 add r3, ip 5fc4: 8019 strh r1, [r3, #0] 5fc6: ab05 add r3, sp, #20 5fc8: 801a strh r2, [r3, #0] if(style->map == NULL) return -1; 5fca: 6834 ldr r4, [r6, #0] 5fcc: 2c00 cmp r4, #0 5fce: d058 beq.n 6082 <_lv_style_set_int+0xd6> uint8_t id_to_find = prop & 0xFF; 5fd0: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 5fd2: 0a0b lsrs r3, r1, #8 5fd4: 469a mov sl, r3 5fd6: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 5fd8: 7823 ldrb r3, [r4, #0] 5fda: 2bff cmp r3, #255 ; 0xff 5fdc: d04d beq.n 607a <_lv_style_set_int+0xce> 5fde: 2201 movs r2, #1 5fe0: 4252 negs r2, r2 5fe2: 4690 mov r8, r2 5fe4: 4694 mov ip, r2 5fe6: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 5fe8: 207f movs r0, #127 ; 0x7f 5fea: 4683 mov fp, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 5fec: 0649 lsls r1, r1, #25 5fee: 0e49 lsrs r1, r1, #25 5ff0: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 5ff2: 3870 subs r0, #112 ; 0x70 5ff4: 9604 str r6, [sp, #16] 5ff6: e01a b.n 602e <_lv_style_set_int+0x82> attr_i.full = style->map[i + 1]; 5ff8: 18a1 adds r1, r4, r2 5ffa: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 5ffc: 4656 mov r6, sl 5ffe: 404e eors r6, r1 6000: 465f mov r7, fp 6002: 4237 tst r7, r6 6004: d00d beq.n 6022 <_lv_style_set_int+0x76> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6006: 0649 lsls r1, r1, #25 6008: 0e49 lsrs r1, r1, #25 600a: 9103 str r1, [sp, #12] 600c: 000e movs r6, r1 600e: 464f mov r7, r9 6010: 43be bics r6, r7 6012: d10e bne.n 6032 <_lv_style_set_int+0x86> if(attr_i.bits.state > weight) { 6014: 4561 cmp r1, ip 6016: dd0c ble.n 6032 <_lv_style_set_int+0x86> weight = attr_i.bits.state; 6018: b209 sxth r1, r1 601a: 468c mov ip, r1 id_guess = i; 601c: b211 sxth r1, r2 601e: 4688 mov r8, r1 6020: e007 b.n 6032 <_lv_style_set_int+0x86> 6022: 9e04 ldr r6, [sp, #16] 6024: e013 b.n 604e <_lv_style_set_int+0xa2> i += sizeof(lv_style_property_t); 6026: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6028: 5ca3 ldrb r3, [r4, r2] 602a: 2bff cmp r3, #255 ; 0xff 602c: d00d beq.n 604a <_lv_style_set_int+0x9e> if(style->map[i] == id_to_find) { 602e: 429d cmp r5, r3 6030: d0e2 beq.n 5ff8 <_lv_style_set_int+0x4c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6032: 4003 ands r3, r0 6034: 1c91 adds r1, r2, #2 6036: 2b08 cmp r3, #8 6038: ddf5 ble.n 6026 <_lv_style_set_int+0x7a> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 603a: 1c91 adds r1, r2, #2 603c: 2b0b cmp r3, #11 603e: ddf2 ble.n 6026 <_lv_style_set_int+0x7a> else i += sizeof(const void *); 6040: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6042: 2b0d cmp r3, #13 6044: dcef bgt.n 6026 <_lv_style_set_int+0x7a> 6046: 1c51 adds r1, r2, #1 6048: e7ed b.n 6026 <_lv_style_set_int+0x7a> 604a: 9e04 ldr r6, [sp, #16] return id_guess; 604c: 4642 mov r2, r8 if(id >= 0) { 604e: 2a00 cmp r2, #0 6050: db17 blt.n 6082 <_lv_style_set_int+0xd6> attr_found.full = *(style->map + id + 1); 6052: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6054: 785b ldrb r3, [r3, #1] 6056: 4655 mov r5, sl 6058: 405d eors r5, r3 605a: 066b lsls r3, r5, #25 605c: d111 bne.n 6082 <_lv_style_set_int+0xd6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &value, sizeof(lv_style_int_t)); 605e: 3202 adds r2, #2 6060: 18a4 adds r4, r4, r2 *d8 = *s8; 6062: ab05 add r3, sp, #20 6064: 781a ldrb r2, [r3, #0] 6066: 7022 strb r2, [r4, #0] 6068: 785b ldrb r3, [r3, #1] 606a: 7063 strb r3, [r4, #1] } 606c: b009 add sp, #36 ; 0x24 606e: bc3c pop {r2, r3, r4, r5} 6070: 4690 mov r8, r2 6072: 4699 mov r9, r3 6074: 46a2 mov sl, r4 6076: 46ab mov fp, r5 6078: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 607a: 2301 movs r3, #1 607c: 425b negs r3, r3 607e: 4698 mov r8, r3 6080: e7e4 b.n 604c <_lv_style_set_int+0xa0> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 6082: 22ff movs r2, #255 ; 0xff 6084: 2316 movs r3, #22 6086: a902 add r1, sp, #8 6088: 468c mov ip, r1 608a: 4463 add r3, ip 608c: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 608e: 0030 movs r0, r6 6090: 4b20 ldr r3, [pc, #128] ; (6114 <_lv_style_set_int+0x168>) 6092: 4798 blx r3 if(size == 0) size += end_mark_size; 6094: 2800 cmp r0, #0 6096: d100 bne.n 609a <_lv_style_set_int+0xee> 6098: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_style_int_t); 609a: 3004 adds r0, #4 style->map = lv_mem_realloc(style->map, size); 609c: b285 uxth r5, r0 609e: 0029 movs r1, r5 60a0: 0020 movs r0, r4 60a2: 4b1d ldr r3, [pc, #116] ; (6118 <_lv_style_set_int+0x16c>) 60a4: 4798 blx r3 60a6: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 60a8: 4b1c ldr r3, [pc, #112] ; (611c <_lv_style_set_int+0x170>) 60aa: 4798 blx r3 60ac: 2800 cmp r0, #0 60ae: d022 beq.n 60f6 <_lv_style_set_int+0x14a> if(style == NULL) return; 60b0: 2e00 cmp r6, #0 60b2: d0db beq.n 606c <_lv_style_set_int+0xc0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 60b4: 1fab subs r3, r5, #6 60b6: 6832 ldr r2, [r6, #0] 60b8: 4694 mov ip, r2 60ba: 4463 add r3, ip 60bc: 220e movs r2, #14 60be: a902 add r1, sp, #8 60c0: 468c mov ip, r1 60c2: 4462 add r2, ip 60c4: 7811 ldrb r1, [r2, #0] 60c6: 7019 strb r1, [r3, #0] 60c8: 7852 ldrb r2, [r2, #1] 60ca: 705a strb r2, [r3, #1] 60cc: 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)); 60ce: 6832 ldr r2, [r6, #0] 60d0: 4694 mov ip, r2 60d2: 4463 add r3, ip 60d4: aa05 add r2, sp, #20 60d6: 7811 ldrb r1, [r2, #0] 60d8: 7019 strb r1, [r3, #0] 60da: 7852 ldrb r2, [r2, #1] 60dc: 705a strb r2, [r3, #1] 60de: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 60e0: 6833 ldr r3, [r6, #0] 60e2: 195d adds r5, r3, r5 60e4: 2316 movs r3, #22 60e6: aa02 add r2, sp, #8 60e8: 4694 mov ip, r2 60ea: 4463 add r3, ip 60ec: 781a ldrb r2, [r3, #0] 60ee: 702a strb r2, [r5, #0] 60f0: 785b ldrb r3, [r3, #1] 60f2: 706b strb r3, [r5, #1] 60f4: e7ba b.n 606c <_lv_style_set_int+0xc0> LV_ASSERT_MEM(style->map); 60f6: 4b0a ldr r3, [pc, #40] ; (6120 <_lv_style_set_int+0x174>) 60f8: 9300 str r3, [sp, #0] 60fa: 22c3 movs r2, #195 ; 0xc3 60fc: 0052 lsls r2, r2, #1 60fe: 4909 ldr r1, [pc, #36] ; (6124 <_lv_style_set_int+0x178>) 6100: 3003 adds r0, #3 6102: 4c09 ldr r4, [pc, #36] ; (6128 <_lv_style_set_int+0x17c>) 6104: 47a0 blx r4 6106: 6832 ldr r2, [r6, #0] 6108: 2300 movs r3, #0 610a: 4808 ldr r0, [pc, #32] ; (612c <_lv_style_set_int+0x180>) 610c: 4908 ldr r1, [pc, #32] ; (6130 <_lv_style_set_int+0x184>) 610e: 4788 blx r1 6110: e7fe b.n 6110 <_lv_style_set_int+0x164> 6112: 46c0 nop ; (mov r8, r8) 6114: 00005e15 .word 0x00005e15 6118: 000126fd .word 0x000126fd 611c: 000017ad .word 0x000017ad 6120: 00025e60 .word 0x00025e60 6124: 00025f58 .word 0x00025f58 6128: 00012159 .word 0x00012159 612c: 00025854 .word 0x00025854 6130: 000017b5 .word 0x000017b5 00006134 <_lv_style_set_color>: { 6134: b5f0 push {r4, r5, r6, r7, lr} 6136: 46de mov lr, fp 6138: 4657 mov r7, sl 613a: 464e mov r6, r9 613c: 4645 mov r5, r8 613e: b5e0 push {r5, r6, r7, lr} 6140: b089 sub sp, #36 ; 0x24 6142: 0006 movs r6, r0 6144: ab05 add r3, sp, #20 6146: 801a strh r2, [r3, #0] 6148: 230e movs r3, #14 614a: aa02 add r2, sp, #8 614c: 4694 mov ip, r2 614e: 4463 add r3, ip 6150: 8019 strh r1, [r3, #0] if(style->map == NULL) return -1; 6152: 6804 ldr r4, [r0, #0] 6154: 2c00 cmp r4, #0 6156: d058 beq.n 620a <_lv_style_set_color+0xd6> uint8_t id_to_find = prop & 0xFF; 6158: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 615a: 0a0b lsrs r3, r1, #8 615c: 469a mov sl, r3 615e: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6160: 7823 ldrb r3, [r4, #0] 6162: 2bff cmp r3, #255 ; 0xff 6164: d04d beq.n 6202 <_lv_style_set_color+0xce> 6166: 2201 movs r2, #1 6168: 4252 negs r2, r2 616a: 4690 mov r8, r2 616c: 4694 mov ip, r2 616e: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 6170: 207f movs r0, #127 ; 0x7f 6172: 4683 mov fp, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6174: 0649 lsls r1, r1, #25 6176: 0e49 lsrs r1, r1, #25 6178: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 617a: 3870 subs r0, #112 ; 0x70 617c: 9604 str r6, [sp, #16] 617e: e01a b.n 61b6 <_lv_style_set_color+0x82> attr_i.full = style->map[i + 1]; 6180: 18a1 adds r1, r4, r2 6182: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 6184: 4656 mov r6, sl 6186: 404e eors r6, r1 6188: 465f mov r7, fp 618a: 4237 tst r7, r6 618c: d00d beq.n 61aa <_lv_style_set_color+0x76> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 618e: 0649 lsls r1, r1, #25 6190: 0e49 lsrs r1, r1, #25 6192: 9103 str r1, [sp, #12] 6194: 000e movs r6, r1 6196: 464f mov r7, r9 6198: 43be bics r6, r7 619a: d10e bne.n 61ba <_lv_style_set_color+0x86> if(attr_i.bits.state > weight) { 619c: 4561 cmp r1, ip 619e: dd0c ble.n 61ba <_lv_style_set_color+0x86> weight = attr_i.bits.state; 61a0: b209 sxth r1, r1 61a2: 468c mov ip, r1 id_guess = i; 61a4: b211 sxth r1, r2 61a6: 4688 mov r8, r1 61a8: e007 b.n 61ba <_lv_style_set_color+0x86> 61aa: 9e04 ldr r6, [sp, #16] 61ac: e013 b.n 61d6 <_lv_style_set_color+0xa2> i += sizeof(lv_style_property_t); 61ae: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 61b0: 5ca3 ldrb r3, [r4, r2] 61b2: 2bff cmp r3, #255 ; 0xff 61b4: d00d beq.n 61d2 <_lv_style_set_color+0x9e> if(style->map[i] == id_to_find) { 61b6: 429d cmp r5, r3 61b8: d0e2 beq.n 6180 <_lv_style_set_color+0x4c> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 61ba: 4003 ands r3, r0 61bc: 1c91 adds r1, r2, #2 61be: 2b08 cmp r3, #8 61c0: ddf5 ble.n 61ae <_lv_style_set_color+0x7a> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 61c2: 1c91 adds r1, r2, #2 61c4: 2b0b cmp r3, #11 61c6: ddf2 ble.n 61ae <_lv_style_set_color+0x7a> else i += sizeof(const void *); 61c8: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 61ca: 2b0d cmp r3, #13 61cc: dcef bgt.n 61ae <_lv_style_set_color+0x7a> 61ce: 1c51 adds r1, r2, #1 61d0: e7ed b.n 61ae <_lv_style_set_color+0x7a> 61d2: 9e04 ldr r6, [sp, #16] return id_guess; 61d4: 4642 mov r2, r8 if(id >= 0) { 61d6: 2a00 cmp r2, #0 61d8: db17 blt.n 620a <_lv_style_set_color+0xd6> attr_found.full = *(style->map + id + 1); 61da: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 61dc: 785b ldrb r3, [r3, #1] 61de: 4655 mov r5, sl 61e0: 405d eors r5, r3 61e2: 066b lsls r3, r5, #25 61e4: d111 bne.n 620a <_lv_style_set_color+0xd6> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &color, sizeof(lv_color_t)); 61e6: 3202 adds r2, #2 61e8: 18a4 adds r4, r4, r2 61ea: ab05 add r3, sp, #20 61ec: 781a ldrb r2, [r3, #0] 61ee: 7022 strb r2, [r4, #0] 61f0: 785b ldrb r3, [r3, #1] 61f2: 7063 strb r3, [r4, #1] } 61f4: b009 add sp, #36 ; 0x24 61f6: bc3c pop {r2, r3, r4, r5} 61f8: 4690 mov r8, r2 61fa: 4699 mov r9, r3 61fc: 46a2 mov sl, r4 61fe: 46ab mov fp, r5 6200: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6202: 2301 movs r3, #1 6204: 425b negs r3, r3 6206: 4698 mov r8, r3 6208: e7e4 b.n 61d4 <_lv_style_set_color+0xa0> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 620a: 22ff movs r2, #255 ; 0xff 620c: 2316 movs r3, #22 620e: a902 add r1, sp, #8 6210: 468c mov ip, r1 6212: 4463 add r3, ip 6214: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 6216: 0030 movs r0, r6 6218: 4b20 ldr r3, [pc, #128] ; (629c <_lv_style_set_color+0x168>) 621a: 4798 blx r3 if(size == 0) size += end_mark_size; 621c: 2800 cmp r0, #0 621e: d100 bne.n 6222 <_lv_style_set_color+0xee> 6220: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_color_t); 6222: 3004 adds r0, #4 style->map = lv_mem_realloc(style->map, size); 6224: b285 uxth r5, r0 6226: 0029 movs r1, r5 6228: 0020 movs r0, r4 622a: 4b1d ldr r3, [pc, #116] ; (62a0 <_lv_style_set_color+0x16c>) 622c: 4798 blx r3 622e: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6230: 4b1c ldr r3, [pc, #112] ; (62a4 <_lv_style_set_color+0x170>) 6232: 4798 blx r3 6234: 2800 cmp r0, #0 6236: d022 beq.n 627e <_lv_style_set_color+0x14a> if(style == NULL) return; 6238: 2e00 cmp r6, #0 623a: d0db beq.n 61f4 <_lv_style_set_color+0xc0> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 623c: 1fab subs r3, r5, #6 623e: 6832 ldr r2, [r6, #0] 6240: 4694 mov ip, r2 6242: 4463 add r3, ip 6244: 220e movs r2, #14 6246: a902 add r1, sp, #8 6248: 468c mov ip, r1 624a: 4462 add r2, ip 624c: 7811 ldrb r1, [r2, #0] 624e: 7019 strb r1, [r3, #0] 6250: 7852 ldrb r2, [r2, #1] 6252: 705a strb r2, [r3, #1] 6254: 1f2b subs r3, r5, #4 _lv_memcpy_small(style->map + size - sizeof(lv_color_t) - end_mark_size, &color, sizeof(lv_color_t)); 6256: 6832 ldr r2, [r6, #0] 6258: 4694 mov ip, r2 625a: 4463 add r3, ip 625c: aa05 add r2, sp, #20 625e: 7811 ldrb r1, [r2, #0] 6260: 7019 strb r1, [r3, #0] 6262: 7852 ldrb r2, [r2, #1] 6264: 705a strb r2, [r3, #1] 6266: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6268: 6833 ldr r3, [r6, #0] 626a: 195d adds r5, r3, r5 626c: 2316 movs r3, #22 626e: aa02 add r2, sp, #8 6270: 4694 mov ip, r2 6272: 4463 add r3, ip 6274: 781a ldrb r2, [r3, #0] 6276: 702a strb r2, [r5, #0] 6278: 785b ldrb r3, [r3, #1] 627a: 706b strb r3, [r5, #1] 627c: e7ba b.n 61f4 <_lv_style_set_color+0xc0> LV_ASSERT_MEM(style->map); 627e: 4b0a ldr r3, [pc, #40] ; (62a8 <_lv_style_set_color+0x174>) 6280: 9300 str r3, [sp, #0] 6282: 22b6 movs r2, #182 ; 0xb6 6284: 32ff adds r2, #255 ; 0xff 6286: 4909 ldr r1, [pc, #36] ; (62ac <_lv_style_set_color+0x178>) 6288: 3003 adds r0, #3 628a: 4c09 ldr r4, [pc, #36] ; (62b0 <_lv_style_set_color+0x17c>) 628c: 47a0 blx r4 628e: 6832 ldr r2, [r6, #0] 6290: 2300 movs r3, #0 6292: 4808 ldr r0, [pc, #32] ; (62b4 <_lv_style_set_color+0x180>) 6294: 4908 ldr r1, [pc, #32] ; (62b8 <_lv_style_set_color+0x184>) 6296: 4788 blx r1 6298: e7fe b.n 6298 <_lv_style_set_color+0x164> 629a: 46c0 nop ; (mov r8, r8) 629c: 00005e15 .word 0x00005e15 62a0: 000126fd .word 0x000126fd 62a4: 000017ad .word 0x000017ad 62a8: 00025e74 .word 0x00025e74 62ac: 00025f58 .word 0x00025f58 62b0: 00012159 .word 0x00012159 62b4: 00025854 .word 0x00025854 62b8: 000017b5 .word 0x000017b5 000062bc <_lv_style_set_opa>: { 62bc: b5f0 push {r4, r5, r6, r7, lr} 62be: 46de mov lr, fp 62c0: 4657 mov r7, sl 62c2: 464e mov r6, r9 62c4: 4645 mov r5, r8 62c6: b5e0 push {r5, r6, r7, lr} 62c8: b089 sub sp, #36 ; 0x24 62ca: 0006 movs r6, r0 62cc: 9203 str r2, [sp, #12] 62ce: 230e movs r3, #14 62d0: aa02 add r2, sp, #8 62d2: 4694 mov ip, r2 62d4: 4463 add r3, ip 62d6: 8019 strh r1, [r3, #0] if(style->map == NULL) return -1; 62d8: 6804 ldr r4, [r0, #0] 62da: 2c00 cmp r4, #0 62dc: d055 beq.n 638a <_lv_style_set_opa+0xce> uint8_t id_to_find = prop & 0xFF; 62de: b2c8 uxtb r0, r1 attr.full = (prop >> 8) & 0xFF; 62e0: 0a0b lsrs r3, r1, #8 62e2: 469a mov sl, r3 62e4: 1c19 adds r1, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 62e6: 7823 ldrb r3, [r4, #0] 62e8: 2bff cmp r3, #255 ; 0xff 62ea: d04a beq.n 6382 <_lv_style_set_opa+0xc6> 62ec: 2201 movs r2, #1 62ee: 4252 negs r2, r2 62f0: 4690 mov r8, r2 62f2: 4694 mov ip, r2 62f4: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 62f6: 257f movs r5, #127 ; 0x7f 62f8: 46ab mov fp, r5 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 62fa: 0649 lsls r1, r1, #25 62fc: 0e49 lsrs r1, r1, #25 62fe: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6300: 3d70 subs r5, #112 ; 0x70 6302: 9604 str r6, [sp, #16] 6304: e01a b.n 633c <_lv_style_set_opa+0x80> attr_i.full = style->map[i + 1]; 6306: 18a1 adds r1, r4, r2 6308: 7849 ldrb r1, [r1, #1] if(attr_i.bits.state == attr.bits.state) { 630a: 4656 mov r6, sl 630c: 404e eors r6, r1 630e: 465f mov r7, fp 6310: 4237 tst r7, r6 6312: d00d beq.n 6330 <_lv_style_set_opa+0x74> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6314: 0649 lsls r1, r1, #25 6316: 0e49 lsrs r1, r1, #25 6318: 9102 str r1, [sp, #8] 631a: 000e movs r6, r1 631c: 464f mov r7, r9 631e: 43be bics r6, r7 6320: d10e bne.n 6340 <_lv_style_set_opa+0x84> if(attr_i.bits.state > weight) { 6322: 4561 cmp r1, ip 6324: dd0c ble.n 6340 <_lv_style_set_opa+0x84> weight = attr_i.bits.state; 6326: b209 sxth r1, r1 6328: 468c mov ip, r1 id_guess = i; 632a: b211 sxth r1, r2 632c: 4688 mov r8, r1 632e: e007 b.n 6340 <_lv_style_set_opa+0x84> 6330: 9e04 ldr r6, [sp, #16] 6332: e013 b.n 635c <_lv_style_set_opa+0xa0> i += sizeof(lv_style_property_t); 6334: 1c8a adds r2, r1, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6336: 5ca3 ldrb r3, [r4, r2] 6338: 2bff cmp r3, #255 ; 0xff 633a: d00d beq.n 6358 <_lv_style_set_opa+0x9c> if(style->map[i] == id_to_find) { 633c: 4298 cmp r0, r3 633e: d0e2 beq.n 6306 <_lv_style_set_opa+0x4a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6340: 402b ands r3, r5 6342: 1c91 adds r1, r2, #2 6344: 2b08 cmp r3, #8 6346: ddf5 ble.n 6334 <_lv_style_set_opa+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6348: 1c91 adds r1, r2, #2 634a: 2b0b cmp r3, #11 634c: ddf2 ble.n 6334 <_lv_style_set_opa+0x78> else i += sizeof(const void *); 634e: 1d11 adds r1, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6350: 2b0d cmp r3, #13 6352: dcef bgt.n 6334 <_lv_style_set_opa+0x78> 6354: 1c51 adds r1, r2, #1 6356: e7ed b.n 6334 <_lv_style_set_opa+0x78> 6358: 9e04 ldr r6, [sp, #16] return id_guess; 635a: 4642 mov r2, r8 if(id >= 0) { 635c: 2a00 cmp r2, #0 635e: db14 blt.n 638a <_lv_style_set_opa+0xce> attr_found.full = *(style->map + id + 1); 6360: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 6362: 785b ldrb r3, [r3, #1] 6364: 4650 mov r0, sl 6366: 4058 eors r0, r3 6368: 0643 lsls r3, r0, #25 636a: d10e bne.n 638a <_lv_style_set_opa+0xce> 636c: 18a2 adds r2, r4, r2 636e: 466b mov r3, sp 6370: 7b1b ldrb r3, [r3, #12] 6372: 7093 strb r3, [r2, #2] } 6374: b009 add sp, #36 ; 0x24 6376: bc3c pop {r2, r3, r4, r5} 6378: 4690 mov r8, r2 637a: 4699 mov r9, r3 637c: 46a2 mov sl, r4 637e: 46ab mov fp, r5 6380: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6382: 2301 movs r3, #1 6384: 425b negs r3, r3 6386: 4698 mov r8, r3 6388: e7e7 b.n 635a <_lv_style_set_opa+0x9e> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 638a: 22ff movs r2, #255 ; 0xff 638c: 2316 movs r3, #22 638e: a902 add r1, sp, #8 6390: 468c mov ip, r1 6392: 4463 add r3, ip 6394: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 6396: 0030 movs r0, r6 6398: 4b1d ldr r3, [pc, #116] ; (6410 <_lv_style_set_opa+0x154>) 639a: 4798 blx r3 if(size == 0) size += end_mark_size; 639c: 2800 cmp r0, #0 639e: d100 bne.n 63a2 <_lv_style_set_opa+0xe6> 63a0: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(lv_opa_t); 63a2: 3003 adds r0, #3 style->map = lv_mem_realloc(style->map, size); 63a4: b285 uxth r5, r0 63a6: 0029 movs r1, r5 63a8: 0020 movs r0, r4 63aa: 4b1a ldr r3, [pc, #104] ; (6414 <_lv_style_set_opa+0x158>) 63ac: 4798 blx r3 63ae: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 63b0: 4b19 ldr r3, [pc, #100] ; (6418 <_lv_style_set_opa+0x15c>) 63b2: 4798 blx r3 63b4: 2800 cmp r0, #0 63b6: d01d beq.n 63f4 <_lv_style_set_opa+0x138> if(style == NULL) return; 63b8: 2e00 cmp r6, #0 63ba: d0db beq.n 6374 <_lv_style_set_opa+0xb8> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 63bc: 1f6b subs r3, r5, #5 63be: 6832 ldr r2, [r6, #0] 63c0: 4694 mov ip, r2 63c2: 4463 add r3, ip 63c4: 220e movs r2, #14 63c6: a902 add r1, sp, #8 63c8: 468c mov ip, r1 63ca: 4462 add r2, ip 63cc: 7811 ldrb r1, [r2, #0] 63ce: 7019 strb r1, [r3, #0] 63d0: 7852 ldrb r2, [r2, #1] 63d2: 705a strb r2, [r3, #1] 63d4: 6833 ldr r3, [r6, #0] 63d6: 195b adds r3, r3, r5 63d8: 3b03 subs r3, #3 63da: 466a mov r2, sp 63dc: 7b12 ldrb r2, [r2, #12] 63de: 701a strb r2, [r3, #0] _lv_memcpy_small(style->map + size - sizeof(lv_opa_t) - end_mark_size, &opa, sizeof(lv_opa_t)); 63e0: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 63e2: 6833 ldr r3, [r6, #0] 63e4: 195d adds r5, r3, r5 63e6: 2316 movs r3, #22 63e8: 4463 add r3, ip 63ea: 781a ldrb r2, [r3, #0] 63ec: 702a strb r2, [r5, #0] 63ee: 785b ldrb r3, [r3, #1] 63f0: 706b strb r3, [r5, #1] 63f2: e7bf b.n 6374 <_lv_style_set_opa+0xb8> LV_ASSERT_MEM(style->map); 63f4: 4b09 ldr r3, [pc, #36] ; (641c <_lv_style_set_opa+0x160>) 63f6: 9300 str r3, [sp, #0] 63f8: 22f2 movs r2, #242 ; 0xf2 63fa: 0052 lsls r2, r2, #1 63fc: 4908 ldr r1, [pc, #32] ; (6420 <_lv_style_set_opa+0x164>) 63fe: 3003 adds r0, #3 6400: 4c08 ldr r4, [pc, #32] ; (6424 <_lv_style_set_opa+0x168>) 6402: 47a0 blx r4 6404: 6832 ldr r2, [r6, #0] 6406: 2300 movs r3, #0 6408: 4807 ldr r0, [pc, #28] ; (6428 <_lv_style_set_opa+0x16c>) 640a: 4908 ldr r1, [pc, #32] ; (642c <_lv_style_set_opa+0x170>) 640c: 4788 blx r1 640e: e7fe b.n 640e <_lv_style_set_opa+0x152> 6410: 00005e15 .word 0x00005e15 6414: 000126fd .word 0x000126fd 6418: 000017ad .word 0x000017ad 641c: 00025e88 .word 0x00025e88 6420: 00025f58 .word 0x00025f58 6424: 00012159 .word 0x00012159 6428: 00025854 .word 0x00025854 642c: 000017b5 .word 0x000017b5 00006430 <_lv_style_set_ptr>: { 6430: b5f0 push {r4, r5, r6, r7, lr} 6432: 46de mov lr, fp 6434: 4657 mov r7, sl 6436: 464e mov r6, r9 6438: 4645 mov r5, r8 643a: b5e0 push {r5, r6, r7, lr} 643c: b089 sub sp, #36 ; 0x24 643e: 0006 movs r6, r0 6440: 9204 str r2, [sp, #16] 6442: 230e movs r3, #14 6444: aa02 add r2, sp, #8 6446: 4694 mov ip, r2 6448: 4463 add r3, ip 644a: 8019 strh r1, [r3, #0] if(style->map == NULL) return -1; 644c: 6804 ldr r4, [r0, #0] 644e: 2c00 cmp r4, #0 6450: d05c beq.n 650c <_lv_style_set_ptr+0xdc> uint8_t id_to_find = prop & 0xFF; 6452: b2cd uxtb r5, r1 attr.full = (prop >> 8) & 0xFF; 6454: 0a0b lsrs r3, r1, #8 6456: 469a mov sl, r3 6458: 1c18 adds r0, r3, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 645a: 7823 ldrb r3, [r4, #0] 645c: 2bff cmp r3, #255 ; 0xff 645e: d051 beq.n 6504 <_lv_style_set_ptr+0xd4> 6460: 2201 movs r2, #1 6462: 4252 negs r2, r2 6464: 4690 mov r8, r2 6466: 4694 mov ip, r2 6468: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 646a: 217f movs r1, #127 ; 0x7f 646c: 468b mov fp, r1 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 646e: 0640 lsls r0, r0, #25 6470: 0e41 lsrs r1, r0, #25 6472: 4689 mov r9, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6474: 210f movs r1, #15 6476: 9603 str r6, [sp, #12] 6478: e01a b.n 64b0 <_lv_style_set_ptr+0x80> attr_i.full = style->map[i + 1]; 647a: 18a0 adds r0, r4, r2 647c: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 647e: 4656 mov r6, sl 6480: 4046 eors r6, r0 6482: 465f mov r7, fp 6484: 4237 tst r7, r6 6486: d00d beq.n 64a4 <_lv_style_set_ptr+0x74> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6488: 0640 lsls r0, r0, #25 648a: 0e40 lsrs r0, r0, #25 648c: 9002 str r0, [sp, #8] 648e: 0006 movs r6, r0 6490: 464f mov r7, r9 6492: 43be bics r6, r7 6494: d10e bne.n 64b4 <_lv_style_set_ptr+0x84> if(attr_i.bits.state > weight) { 6496: 4560 cmp r0, ip 6498: dd0c ble.n 64b4 <_lv_style_set_ptr+0x84> weight = attr_i.bits.state; 649a: b200 sxth r0, r0 649c: 4684 mov ip, r0 id_guess = i; 649e: b210 sxth r0, r2 64a0: 4680 mov r8, r0 64a2: e007 b.n 64b4 <_lv_style_set_ptr+0x84> 64a4: 9e03 ldr r6, [sp, #12] 64a6: e013 b.n 64d0 <_lv_style_set_ptr+0xa0> i += sizeof(lv_style_property_t); 64a8: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 64aa: 5ca3 ldrb r3, [r4, r2] 64ac: 2bff cmp r3, #255 ; 0xff 64ae: d00d beq.n 64cc <_lv_style_set_ptr+0x9c> if(style->map[i] == id_to_find) { 64b0: 429d cmp r5, r3 64b2: d0e2 beq.n 647a <_lv_style_set_ptr+0x4a> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 64b4: 400b ands r3, r1 64b6: 1c90 adds r0, r2, #2 64b8: 2b08 cmp r3, #8 64ba: ddf5 ble.n 64a8 <_lv_style_set_ptr+0x78> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 64bc: 1c90 adds r0, r2, #2 64be: 2b0b cmp r3, #11 64c0: ddf2 ble.n 64a8 <_lv_style_set_ptr+0x78> else i += sizeof(const void *); 64c2: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 64c4: 2b0d cmp r3, #13 64c6: dcef bgt.n 64a8 <_lv_style_set_ptr+0x78> 64c8: 1c50 adds r0, r2, #1 64ca: e7ed b.n 64a8 <_lv_style_set_ptr+0x78> 64cc: 9e03 ldr r6, [sp, #12] return id_guess; 64ce: 4642 mov r2, r8 if(id >= 0) { 64d0: 2a00 cmp r2, #0 64d2: db1b blt.n 650c <_lv_style_set_ptr+0xdc> attr_found.full = *(style->map + id + 1); 64d4: 18a3 adds r3, r4, r2 if(attr_found.bits.state == attr_goal.bits.state) { 64d6: 785b ldrb r3, [r3, #1] 64d8: 4655 mov r5, sl 64da: 405d eors r5, r3 64dc: 066b lsls r3, r5, #25 64de: d115 bne.n 650c <_lv_style_set_ptr+0xdc> _lv_memcpy_small(style->map + id + sizeof(lv_style_property_t), &p, sizeof(const void *)); 64e0: 3202 adds r2, #2 64e2: 18a4 adds r4, r4, r2 64e4: ab04 add r3, sp, #16 64e6: 781a ldrb r2, [r3, #0] 64e8: 7022 strb r2, [r4, #0] 64ea: 785a ldrb r2, [r3, #1] 64ec: 7062 strb r2, [r4, #1] 64ee: 789a ldrb r2, [r3, #2] 64f0: 70a2 strb r2, [r4, #2] 64f2: 78db ldrb r3, [r3, #3] 64f4: 70e3 strb r3, [r4, #3] } 64f6: b009 add sp, #36 ; 0x24 64f8: bc3c pop {r2, r3, r4, r5} 64fa: 4690 mov r8, r2 64fc: 4699 mov r9, r3 64fe: 46a2 mov sl, r4 6500: 46ab mov fp, r5 6502: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6504: 2301 movs r3, #1 6506: 425b negs r3, r3 6508: 4698 mov r8, r3 650a: e7e0 b.n 64ce <_lv_style_set_ptr+0x9e> lv_style_property_t end_mark = _LV_STYLE_CLOSEING_PROP; 650c: 22ff movs r2, #255 ; 0xff 650e: 2316 movs r3, #22 6510: a902 add r1, sp, #8 6512: 468c mov ip, r1 6514: 4463 add r3, ip 6516: 801a strh r2, [r3, #0] uint16_t size = _lv_style_get_mem_size(style); 6518: 0030 movs r0, r6 651a: 4b22 ldr r3, [pc, #136] ; (65a4 <_lv_style_set_ptr+0x174>) 651c: 4798 blx r3 if(size == 0) size += end_mark_size; 651e: 2800 cmp r0, #0 6520: d100 bne.n 6524 <_lv_style_set_ptr+0xf4> 6522: 3002 adds r0, #2 size += sizeof(lv_style_property_t) + sizeof(const void *); 6524: 3006 adds r0, #6 style->map = lv_mem_realloc(style->map, size); 6526: b285 uxth r5, r0 6528: 0029 movs r1, r5 652a: 0020 movs r0, r4 652c: 4b1e ldr r3, [pc, #120] ; (65a8 <_lv_style_set_ptr+0x178>) 652e: 4798 blx r3 6530: 6030 str r0, [r6, #0] LV_ASSERT_MEM(style->map); 6532: 4b1e ldr r3, [pc, #120] ; (65ac <_lv_style_set_ptr+0x17c>) 6534: 4798 blx r3 6536: 2800 cmp r0, #0 6538: d027 beq.n 658a <_lv_style_set_ptr+0x15a> if(style == NULL) return; 653a: 2e00 cmp r6, #0 653c: d0db beq.n 64f6 <_lv_style_set_ptr+0xc6> _lv_memcpy_small(style->map + size - new_prop_size - end_mark_size, &prop, sizeof(lv_style_property_t)); 653e: 002b movs r3, r5 6540: 3b08 subs r3, #8 6542: 6832 ldr r2, [r6, #0] 6544: 4694 mov ip, r2 6546: 4463 add r3, ip 6548: 220e movs r2, #14 654a: a902 add r1, sp, #8 654c: 468c mov ip, r1 654e: 4462 add r2, ip 6550: 7811 ldrb r1, [r2, #0] 6552: 7019 strb r1, [r3, #0] 6554: 7852 ldrb r2, [r2, #1] 6556: 705a strb r2, [r3, #1] 6558: 1fab subs r3, r5, #6 _lv_memcpy_small(style->map + size - sizeof(const void *) - end_mark_size, &p, sizeof(const void *)); 655a: 6832 ldr r2, [r6, #0] 655c: 4694 mov ip, r2 655e: 4463 add r3, ip 6560: aa04 add r2, sp, #16 6562: 7811 ldrb r1, [r2, #0] 6564: 7019 strb r1, [r3, #0] 6566: 7851 ldrb r1, [r2, #1] 6568: 7059 strb r1, [r3, #1] 656a: 7891 ldrb r1, [r2, #2] 656c: 7099 strb r1, [r3, #2] 656e: 78d2 ldrb r2, [r2, #3] 6570: 70da strb r2, [r3, #3] 6572: 3d02 subs r5, #2 _lv_memcpy_small(style->map + size - end_mark_size, &end_mark, sizeof(end_mark)); 6574: 6833 ldr r3, [r6, #0] 6576: 195d adds r5, r3, r5 6578: 2316 movs r3, #22 657a: aa02 add r2, sp, #8 657c: 4694 mov ip, r2 657e: 4463 add r3, ip 6580: 781a ldrb r2, [r3, #0] 6582: 702a strb r2, [r5, #0] 6584: 785b ldrb r3, [r3, #1] 6586: 706b strb r3, [r5, #1] 6588: e7b5 b.n 64f6 <_lv_style_set_ptr+0xc6> LV_ASSERT_MEM(style->map); 658a: 4b09 ldr r3, [pc, #36] ; (65b0 <_lv_style_set_ptr+0x180>) 658c: 9300 str r3, [sp, #0] 658e: 4a09 ldr r2, [pc, #36] ; (65b4 <_lv_style_set_ptr+0x184>) 6590: 4909 ldr r1, [pc, #36] ; (65b8 <_lv_style_set_ptr+0x188>) 6592: 3003 adds r0, #3 6594: 4c09 ldr r4, [pc, #36] ; (65bc <_lv_style_set_ptr+0x18c>) 6596: 47a0 blx r4 6598: 6832 ldr r2, [r6, #0] 659a: 2300 movs r3, #0 659c: 4808 ldr r0, [pc, #32] ; (65c0 <_lv_style_set_ptr+0x190>) 659e: 4909 ldr r1, [pc, #36] ; (65c4 <_lv_style_set_ptr+0x194>) 65a0: 4788 blx r1 65a2: e7fe b.n 65a2 <_lv_style_set_ptr+0x172> 65a4: 00005e15 .word 0x00005e15 65a8: 000126fd .word 0x000126fd 65ac: 000017ad .word 0x000017ad 65b0: 00025e9c .word 0x00025e9c 65b4: 00000213 .word 0x00000213 65b8: 00025f58 .word 0x00025f58 65bc: 00012159 .word 0x00012159 65c0: 00025854 .word 0x00025854 65c4: 000017b5 .word 0x000017b5 000065c8 <_lv_style_get_int>: { 65c8: b5f0 push {r4, r5, r6, r7, lr} 65ca: 46de mov lr, fp 65cc: 4657 mov r7, sl 65ce: 464e mov r6, r9 65d0: 4645 mov r5, r8 65d2: b5e0 push {r5, r6, r7, lr} 65d4: b085 sub sp, #20 65d6: 4681 mov r9, r0 65d8: 9203 str r2, [sp, #12] if(style == NULL) return -1; 65da: 2800 cmp r0, #0 65dc: d05b beq.n 6696 <_lv_style_get_int+0xce> if(style->map == NULL) return -1; 65de: 6805 ldr r5, [r0, #0] 65e0: 2d00 cmp r5, #0 65e2: d05b beq.n 669c <_lv_style_get_int+0xd4> uint8_t id_to_find = prop & 0xFF; 65e4: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 65e6: 0a09 lsrs r1, r1, #8 65e8: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 65ea: 782b ldrb r3, [r5, #0] 65ec: 2bff cmp r3, #255 ; 0xff 65ee: d04e beq.n 668e <_lv_style_get_int+0xc6> 65f0: 2201 movs r2, #1 65f2: 4252 negs r2, r2 65f4: 9202 str r2, [sp, #8] 65f6: 4693 mov fp, r2 65f8: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 65fa: 247f movs r4, #127 ; 0x7f 65fc: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 65fe: 0640 lsls r0, r0, #25 6600: 0e40 lsrs r0, r0, #25 6602: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6604: 270f movs r7, #15 6606: 4688 mov r8, r1 6608: e01a b.n 6640 <_lv_style_get_int+0x78> attr_i.full = style->map[i + 1]; 660a: 18a8 adds r0, r5, r2 660c: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 660e: 4644 mov r4, r8 6610: 4044 eors r4, r0 6612: 4651 mov r1, sl 6614: 4221 tst r1, r4 6616: d00d beq.n 6634 <_lv_style_get_int+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6618: 0640 lsls r0, r0, #25 661a: 0e40 lsrs r0, r0, #25 661c: 9001 str r0, [sp, #4] 661e: 0004 movs r4, r0 6620: 4661 mov r1, ip 6622: 438c bics r4, r1 6624: d10e bne.n 6644 <_lv_style_get_int+0x7c> if(attr_i.bits.state > weight) { 6626: 4558 cmp r0, fp 6628: dd0c ble.n 6644 <_lv_style_get_int+0x7c> weight = attr_i.bits.state; 662a: b201 sxth r1, r0 662c: 468b mov fp, r1 id_guess = i; 662e: b211 sxth r1, r2 6630: 9102 str r1, [sp, #8] 6632: e007 b.n 6644 <_lv_style_get_int+0x7c> 6634: 4641 mov r1, r8 6636: e013 b.n 6660 <_lv_style_get_int+0x98> i += sizeof(lv_style_property_t); 6638: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 663a: 5cab ldrb r3, [r5, r2] 663c: 2bff cmp r3, #255 ; 0xff 663e: d00d beq.n 665c <_lv_style_get_int+0x94> if(style->map[i] == id_to_find) { 6640: 429e cmp r6, r3 6642: d0e2 beq.n 660a <_lv_style_get_int+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6644: 403b ands r3, r7 6646: 1c90 adds r0, r2, #2 6648: 2b08 cmp r3, #8 664a: ddf5 ble.n 6638 <_lv_style_get_int+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 664c: 1c90 adds r0, r2, #2 664e: 2b0b cmp r3, #11 6650: ddf2 ble.n 6638 <_lv_style_get_int+0x70> else i += sizeof(const void *); 6652: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6654: 2b0d cmp r3, #13 6656: dcef bgt.n 6638 <_lv_style_get_int+0x70> 6658: 1c50 adds r0, r2, #1 665a: e7ed b.n 6638 <_lv_style_get_int+0x70> 665c: 4641 mov r1, r8 return id_guess; 665e: 9a02 ldr r2, [sp, #8] if(id < 0) { 6660: 2a00 cmp r2, #0 6662: db1e blt.n 66a2 <_lv_style_get_int+0xda> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_style_int_t)); 6664: 1c93 adds r3, r2, #2 6666: 18ed adds r5, r5, r3 6668: 782b ldrb r3, [r5, #0] 666a: 9803 ldr r0, [sp, #12] 666c: 7003 strb r3, [r0, #0] 666e: 786b ldrb r3, [r5, #1] 6670: 7043 strb r3, [r0, #1] attr_act.full = style->map[id + 1]; 6672: 464b mov r3, r9 6674: 681b ldr r3, [r3, #0] 6676: 189a adds r2, r3, r2 6678: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 667a: 0649 lsls r1, r1, #25 667c: 0e49 lsrs r1, r1, #25 667e: 4008 ands r0, r1 } 6680: b005 add sp, #20 6682: bc3c pop {r2, r3, r4, r5} 6684: 4690 mov r8, r2 6686: 4699 mov r9, r3 6688: 46a2 mov sl, r4 668a: 46ab mov fp, r5 668c: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 668e: 2301 movs r3, #1 6690: 425b negs r3, r3 6692: 9302 str r3, [sp, #8] 6694: e7e3 b.n 665e <_lv_style_get_int+0x96> if(style == NULL) return -1; 6696: 2001 movs r0, #1 6698: 4240 negs r0, r0 669a: e7f1 b.n 6680 <_lv_style_get_int+0xb8> if(style->map == NULL) return -1; 669c: 2001 movs r0, #1 669e: 4240 negs r0, r0 66a0: e7ee b.n 6680 <_lv_style_get_int+0xb8> return -1; 66a2: 2001 movs r0, #1 66a4: 4240 negs r0, r0 66a6: e7eb b.n 6680 <_lv_style_get_int+0xb8> 000066a8 <_lv_style_get_opa>: { 66a8: b5f0 push {r4, r5, r6, r7, lr} 66aa: 46de mov lr, fp 66ac: 4657 mov r7, sl 66ae: 464e mov r6, r9 66b0: 4645 mov r5, r8 66b2: b5e0 push {r5, r6, r7, lr} 66b4: b085 sub sp, #20 66b6: 4681 mov r9, r0 66b8: 9203 str r2, [sp, #12] if(style == NULL) return -1; 66ba: 2800 cmp r0, #0 66bc: d058 beq.n 6770 <_lv_style_get_opa+0xc8> if(style->map == NULL) return -1; 66be: 6805 ldr r5, [r0, #0] 66c0: 2d00 cmp r5, #0 66c2: d058 beq.n 6776 <_lv_style_get_opa+0xce> uint8_t id_to_find = prop & 0xFF; 66c4: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 66c6: 0a09 lsrs r1, r1, #8 66c8: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 66ca: 782b ldrb r3, [r5, #0] 66cc: 2bff cmp r3, #255 ; 0xff 66ce: d04b beq.n 6768 <_lv_style_get_opa+0xc0> 66d0: 2201 movs r2, #1 66d2: 4252 negs r2, r2 66d4: 9202 str r2, [sp, #8] 66d6: 4693 mov fp, r2 66d8: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 66da: 247f movs r4, #127 ; 0x7f 66dc: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 66de: 0640 lsls r0, r0, #25 66e0: 0e40 lsrs r0, r0, #25 66e2: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 66e4: 270f movs r7, #15 66e6: 4688 mov r8, r1 66e8: e01a b.n 6720 <_lv_style_get_opa+0x78> attr_i.full = style->map[i + 1]; 66ea: 18a8 adds r0, r5, r2 66ec: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 66ee: 4644 mov r4, r8 66f0: 4044 eors r4, r0 66f2: 4651 mov r1, sl 66f4: 4221 tst r1, r4 66f6: d00d beq.n 6714 <_lv_style_get_opa+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 66f8: 0640 lsls r0, r0, #25 66fa: 0e40 lsrs r0, r0, #25 66fc: 9001 str r0, [sp, #4] 66fe: 0004 movs r4, r0 6700: 4661 mov r1, ip 6702: 438c bics r4, r1 6704: d10e bne.n 6724 <_lv_style_get_opa+0x7c> if(attr_i.bits.state > weight) { 6706: 4558 cmp r0, fp 6708: dd0c ble.n 6724 <_lv_style_get_opa+0x7c> weight = attr_i.bits.state; 670a: b201 sxth r1, r0 670c: 468b mov fp, r1 id_guess = i; 670e: b211 sxth r1, r2 6710: 9102 str r1, [sp, #8] 6712: e007 b.n 6724 <_lv_style_get_opa+0x7c> 6714: 4641 mov r1, r8 6716: e013 b.n 6740 <_lv_style_get_opa+0x98> i += sizeof(lv_style_property_t); 6718: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 671a: 5cab ldrb r3, [r5, r2] 671c: 2bff cmp r3, #255 ; 0xff 671e: d00d beq.n 673c <_lv_style_get_opa+0x94> if(style->map[i] == id_to_find) { 6720: 429e cmp r6, r3 6722: d0e2 beq.n 66ea <_lv_style_get_opa+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 6724: 403b ands r3, r7 6726: 1c90 adds r0, r2, #2 6728: 2b08 cmp r3, #8 672a: ddf5 ble.n 6718 <_lv_style_get_opa+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 672c: 1c90 adds r0, r2, #2 672e: 2b0b cmp r3, #11 6730: ddf2 ble.n 6718 <_lv_style_get_opa+0x70> else i += sizeof(const void *); 6732: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 6734: 2b0d cmp r3, #13 6736: dcef bgt.n 6718 <_lv_style_get_opa+0x70> 6738: 1c50 adds r0, r2, #1 673a: e7ed b.n 6718 <_lv_style_get_opa+0x70> 673c: 4641 mov r1, r8 return id_guess; 673e: 9a02 ldr r2, [sp, #8] if(id < 0) { 6740: 2a00 cmp r2, #0 6742: db1b blt.n 677c <_lv_style_get_opa+0xd4> 6744: 18ad adds r5, r5, r2 6746: 78ab ldrb r3, [r5, #2] 6748: 9803 ldr r0, [sp, #12] 674a: 7003 strb r3, [r0, #0] attr_act.full = style->map[id + 1]; 674c: 464b mov r3, r9 674e: 681b ldr r3, [r3, #0] 6750: 189a adds r2, r3, r2 6752: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 6754: 0649 lsls r1, r1, #25 6756: 0e49 lsrs r1, r1, #25 6758: 4008 ands r0, r1 } 675a: b005 add sp, #20 675c: bc3c pop {r2, r3, r4, r5} 675e: 4690 mov r8, r2 6760: 4699 mov r9, r3 6762: 46a2 mov sl, r4 6764: 46ab mov fp, r5 6766: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6768: 2301 movs r3, #1 676a: 425b negs r3, r3 676c: 9302 str r3, [sp, #8] 676e: e7e6 b.n 673e <_lv_style_get_opa+0x96> if(style == NULL) return -1; 6770: 2001 movs r0, #1 6772: 4240 negs r0, r0 6774: e7f1 b.n 675a <_lv_style_get_opa+0xb2> if(style->map == NULL) return -1; 6776: 2001 movs r0, #1 6778: 4240 negs r0, r0 677a: e7ee b.n 675a <_lv_style_get_opa+0xb2> return -1; 677c: 2001 movs r0, #1 677e: 4240 negs r0, r0 6780: e7eb b.n 675a <_lv_style_get_opa+0xb2> 00006782 <_lv_style_get_color>: { 6782: b5f0 push {r4, r5, r6, r7, lr} 6784: 46de mov lr, fp 6786: 4657 mov r7, sl 6788: 464e mov r6, r9 678a: 4645 mov r5, r8 678c: b5e0 push {r5, r6, r7, lr} 678e: b085 sub sp, #20 6790: 4681 mov r9, r0 6792: 9203 str r2, [sp, #12] if(style == NULL) return -1; 6794: 2800 cmp r0, #0 6796: d05b beq.n 6850 <_lv_style_get_color+0xce> if(style->map == NULL) return -1; 6798: 6805 ldr r5, [r0, #0] 679a: 2d00 cmp r5, #0 679c: d05b beq.n 6856 <_lv_style_get_color+0xd4> uint8_t id_to_find = prop & 0xFF; 679e: b2ce uxtb r6, r1 attr.full = (prop >> 8) & 0xFF; 67a0: 0a09 lsrs r1, r1, #8 67a2: 1c08 adds r0, r1, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 67a4: 782b ldrb r3, [r5, #0] 67a6: 2bff cmp r3, #255 ; 0xff 67a8: d04e beq.n 6848 <_lv_style_get_color+0xc6> 67aa: 2201 movs r2, #1 67ac: 4252 negs r2, r2 67ae: 9202 str r2, [sp, #8] 67b0: 4693 mov fp, r2 67b2: 2200 movs r2, #0 if(attr_i.bits.state == attr.bits.state) { 67b4: 247f movs r4, #127 ; 0x7f 67b6: 46a2 mov sl, r4 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 67b8: 0640 lsls r0, r0, #25 67ba: 0e40 lsrs r0, r0, #25 67bc: 4684 mov ip, r0 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 67be: 270f movs r7, #15 67c0: 4688 mov r8, r1 67c2: e01a b.n 67fa <_lv_style_get_color+0x78> attr_i.full = style->map[i + 1]; 67c4: 18a8 adds r0, r5, r2 67c6: 7840 ldrb r0, [r0, #1] if(attr_i.bits.state == attr.bits.state) { 67c8: 4644 mov r4, r8 67ca: 4044 eors r4, r0 67cc: 4651 mov r1, sl 67ce: 4221 tst r1, r4 67d0: d00d beq.n 67ee <_lv_style_get_color+0x6c> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 67d2: 0640 lsls r0, r0, #25 67d4: 0e40 lsrs r0, r0, #25 67d6: 9001 str r0, [sp, #4] 67d8: 0004 movs r4, r0 67da: 4661 mov r1, ip 67dc: 438c bics r4, r1 67de: d10e bne.n 67fe <_lv_style_get_color+0x7c> if(attr_i.bits.state > weight) { 67e0: 4558 cmp r0, fp 67e2: dd0c ble.n 67fe <_lv_style_get_color+0x7c> weight = attr_i.bits.state; 67e4: b201 sxth r1, r0 67e6: 468b mov fp, r1 id_guess = i; 67e8: b211 sxth r1, r2 67ea: 9102 str r1, [sp, #8] 67ec: e007 b.n 67fe <_lv_style_get_color+0x7c> 67ee: 4641 mov r1, r8 67f0: e013 b.n 681a <_lv_style_get_color+0x98> i += sizeof(lv_style_property_t); 67f2: 1c82 adds r2, r0, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 67f4: 5cab ldrb r3, [r5, r2] 67f6: 2bff cmp r3, #255 ; 0xff 67f8: d00d beq.n 6816 <_lv_style_get_color+0x94> if(style->map[i] == id_to_find) { 67fa: 429e cmp r6, r3 67fc: d0e2 beq.n 67c4 <_lv_style_get_color+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 67fe: 403b ands r3, r7 6800: 1c90 adds r0, r2, #2 6802: 2b08 cmp r3, #8 6804: ddf5 ble.n 67f2 <_lv_style_get_color+0x70> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 6806: 1c90 adds r0, r2, #2 6808: 2b0b cmp r3, #11 680a: ddf2 ble.n 67f2 <_lv_style_get_color+0x70> else i += sizeof(const void *); 680c: 1d10 adds r0, r2, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 680e: 2b0d cmp r3, #13 6810: dcef bgt.n 67f2 <_lv_style_get_color+0x70> 6812: 1c50 adds r0, r2, #1 6814: e7ed b.n 67f2 <_lv_style_get_color+0x70> 6816: 4641 mov r1, r8 return id_guess; 6818: 9a02 ldr r2, [sp, #8] if(id < 0) { 681a: 2a00 cmp r2, #0 681c: db1e blt.n 685c <_lv_style_get_color+0xda> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(lv_color_t)); 681e: 1c93 adds r3, r2, #2 6820: 18ed adds r5, r5, r3 6822: 782b ldrb r3, [r5, #0] 6824: 9803 ldr r0, [sp, #12] 6826: 7003 strb r3, [r0, #0] 6828: 786b ldrb r3, [r5, #1] 682a: 7043 strb r3, [r0, #1] attr_act.full = style->map[id + 1]; 682c: 464b mov r3, r9 682e: 681b ldr r3, [r3, #0] 6830: 189a adds r2, r3, r2 6832: 7850 ldrb r0, [r2, #1] return attr_act.bits.state & attr_goal.bits.state; 6834: 0649 lsls r1, r1, #25 6836: 0e49 lsrs r1, r1, #25 6838: 4008 ands r0, r1 } 683a: b005 add sp, #20 683c: bc3c pop {r2, r3, r4, r5} 683e: 4690 mov r8, r2 6840: 4699 mov r9, r3 6842: 46a2 mov sl, r4 6844: 46ab mov fp, r5 6846: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6848: 2301 movs r3, #1 684a: 425b negs r3, r3 684c: 9302 str r3, [sp, #8] 684e: e7e3 b.n 6818 <_lv_style_get_color+0x96> if(style == NULL) return -1; 6850: 2001 movs r0, #1 6852: 4240 negs r0, r0 6854: e7f1 b.n 683a <_lv_style_get_color+0xb8> if(style->map == NULL) return -1; 6856: 2001 movs r0, #1 6858: 4240 negs r0, r0 685a: e7ee b.n 683a <_lv_style_get_color+0xb8> return -1; 685c: 2001 movs r0, #1 685e: 4240 negs r0, r0 6860: e7eb b.n 683a <_lv_style_get_color+0xb8> 00006862 <_lv_style_get_ptr>: { 6862: b5f0 push {r4, r5, r6, r7, lr} 6864: 46de mov lr, fp 6866: 4657 mov r7, sl 6868: 464e mov r6, r9 686a: 4645 mov r5, r8 686c: b5e0 push {r5, r6, r7, lr} 686e: b085 sub sp, #20 6870: 4681 mov r9, r0 6872: 4693 mov fp, r2 if(style == NULL) return -1; 6874: 2800 cmp r0, #0 6876: d05f beq.n 6938 <_lv_style_get_ptr+0xd6> if(style->map == NULL) return -1; 6878: 6806 ldr r6, [r0, #0] 687a: 2e00 cmp r6, #0 687c: d05f beq.n 693e <_lv_style_get_ptr+0xdc> uint8_t id_to_find = prop & 0xFF; 687e: b2cf uxtb r7, r1 attr.full = (prop >> 8) & 0xFF; 6880: 0a0a lsrs r2, r1, #8 6882: 1c11 adds r1, r2, #0 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 6884: 7833 ldrb r3, [r6, #0] 6886: 2bff cmp r3, #255 ; 0xff 6888: d052 beq.n 6930 <_lv_style_get_ptr+0xce> 688a: 2001 movs r0, #1 688c: 4240 negs r0, r0 688e: 9003 str r0, [sp, #12] 6890: 9002 str r0, [sp, #8] 6892: 2400 movs r4, #0 if(attr_i.bits.state == attr.bits.state) { 6894: 3080 adds r0, #128 ; 0x80 6896: 4682 mov sl, r0 else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 6898: 0649 lsls r1, r1, #25 689a: 0e49 lsrs r1, r1, #25 689c: 468c mov ip, r1 if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 689e: 210f movs r1, #15 68a0: 4690 mov r8, r2 68a2: e01b b.n 68dc <_lv_style_get_ptr+0x7a> attr_i.full = style->map[i + 1]; 68a4: 1932 adds r2, r6, r4 68a6: 7850 ldrb r0, [r2, #1] if(attr_i.bits.state == attr.bits.state) { 68a8: 4642 mov r2, r8 68aa: 4042 eors r2, r0 68ac: 4655 mov r5, sl 68ae: 4215 tst r5, r2 68b0: d00e beq.n 68d0 <_lv_style_get_ptr+0x6e> else if((attr_i.bits.state & (~attr.bits.state)) == 0) { 68b2: 0640 lsls r0, r0, #25 68b4: 0e40 lsrs r0, r0, #25 68b6: 9001 str r0, [sp, #4] 68b8: 0005 movs r5, r0 68ba: 4662 mov r2, ip 68bc: 4395 bics r5, r2 68be: d10f bne.n 68e0 <_lv_style_get_ptr+0x7e> if(attr_i.bits.state > weight) { 68c0: 9a02 ldr r2, [sp, #8] 68c2: 4290 cmp r0, r2 68c4: dd0c ble.n 68e0 <_lv_style_get_ptr+0x7e> weight = attr_i.bits.state; 68c6: b202 sxth r2, r0 68c8: 9202 str r2, [sp, #8] id_guess = i; 68ca: b222 sxth r2, r4 68cc: 9203 str r2, [sp, #12] 68ce: e007 b.n 68e0 <_lv_style_get_ptr+0x7e> 68d0: 4642 mov r2, r8 68d2: e013 b.n 68fc <_lv_style_get_ptr+0x9a> i += sizeof(lv_style_property_t); 68d4: 1c94 adds r4, r2, #2 while(style->map[i] != _LV_STYLE_CLOSEING_PROP) { 68d6: 5d33 ldrb r3, [r6, r4] 68d8: 2bff cmp r3, #255 ; 0xff 68da: d00d beq.n 68f8 <_lv_style_get_ptr+0x96> if(style->map[i] == id_to_find) { 68dc: 429f cmp r7, r3 68de: d0e1 beq.n 68a4 <_lv_style_get_ptr+0x42> if((style->map[i] & 0xF) < LV_STYLE_ID_COLOR) i += sizeof(lv_style_int_t); 68e0: 400b ands r3, r1 68e2: 1ca2 adds r2, r4, #2 68e4: 2b08 cmp r3, #8 68e6: ddf5 ble.n 68d4 <_lv_style_get_ptr+0x72> else if((style->map[i] & 0xF) < LV_STYLE_ID_OPA) i += sizeof(lv_color_t); 68e8: 1ca2 adds r2, r4, #2 68ea: 2b0b cmp r3, #11 68ec: ddf2 ble.n 68d4 <_lv_style_get_ptr+0x72> else i += sizeof(const void *); 68ee: 1d22 adds r2, r4, #4 else if((style->map[i] & 0xF) < LV_STYLE_ID_PTR) i += sizeof(lv_opa_t); 68f0: 2b0d cmp r3, #13 68f2: dcef bgt.n 68d4 <_lv_style_get_ptr+0x72> 68f4: 1c62 adds r2, r4, #1 68f6: e7ed b.n 68d4 <_lv_style_get_ptr+0x72> 68f8: 4642 mov r2, r8 return id_guess; 68fa: 9c03 ldr r4, [sp, #12] if(id < 0) { 68fc: 2c00 cmp r4, #0 68fe: db21 blt.n 6944 <_lv_style_get_ptr+0xe2> _lv_memcpy_small(res, &style->map[id + sizeof(lv_style_property_t)], sizeof(const void *)); 6900: 0020 movs r0, r4 6902: 3402 adds r4, #2 6904: 1936 adds r6, r6, r4 6906: 2300 movs r3, #0 6908: 465c mov r4, fp 690a: 5cf1 ldrb r1, [r6, r3] 690c: 54e1 strb r1, [r4, r3] 690e: 3301 adds r3, #1 while(len) { 6910: 2b04 cmp r3, #4 6912: d1fa bne.n 690a <_lv_style_get_ptr+0xa8> attr_act.full = style->map[id + 1]; 6914: 464b mov r3, r9 6916: 681b ldr r3, [r3, #0] 6918: 181b adds r3, r3, r0 691a: 7858 ldrb r0, [r3, #1] return attr_act.bits.state & attr_goal.bits.state; 691c: 0652 lsls r2, r2, #25 691e: 0e52 lsrs r2, r2, #25 6920: 4010 ands r0, r2 } 6922: b005 add sp, #20 6924: bc3c pop {r2, r3, r4, r5} 6926: 4690 mov r8, r2 6928: 4699 mov r9, r3 692a: 46a2 mov sl, r4 692c: 46ab mov fp, r5 692e: bdf0 pop {r4, r5, r6, r7, pc} int16_t id_guess = -1; 6930: 2301 movs r3, #1 6932: 425b negs r3, r3 6934: 9303 str r3, [sp, #12] 6936: e7e0 b.n 68fa <_lv_style_get_ptr+0x98> if(style == NULL) return -1; 6938: 2001 movs r0, #1 693a: 4240 negs r0, r0 693c: e7f1 b.n 6922 <_lv_style_get_ptr+0xc0> if(style->map == NULL) return -1; 693e: 2001 movs r0, #1 6940: 4240 negs r0, r0 6942: e7ee b.n 6922 <_lv_style_get_ptr+0xc0> return -1; 6944: 2001 movs r0, #1 6946: 4240 negs r0, r0 6948: e7eb b.n 6922 <_lv_style_get_ptr+0xc0> 0000694a : if(!list->has_local) return NULL; 694a: 7943 ldrb r3, [r0, #5] 694c: 07da lsls r2, r3, #31 694e: d507 bpl.n 6960 if(list->has_trans) return list->style_list[1]; 6950: 079b lsls r3, r3, #30 6952: d402 bmi.n 695a else return list->style_list[0]; 6954: 6803 ldr r3, [r0, #0] 6956: 6818 ldr r0, [r3, #0] } 6958: 4770 bx lr if(list->has_trans) return list->style_list[1]; 695a: 6803 ldr r3, [r0, #0] 695c: 6858 ldr r0, [r3, #4] 695e: e7fb b.n 6958 if(!list->has_local) return NULL; 6960: 2000 movs r0, #0 6962: e7f9 b.n 6958 00006964 <_lv_style_list_get_transition_style>: if(!list->has_trans) return NULL; 6964: 7943 ldrb r3, [r0, #5] 6966: 079b lsls r3, r3, #30 6968: d502 bpl.n 6970 <_lv_style_list_get_transition_style+0xc> return list->style_list[0]; 696a: 6803 ldr r3, [r0, #0] 696c: 6818 ldr r0, [r3, #0] } 696e: 4770 bx lr if(!list->has_trans) return NULL; 6970: 2000 movs r0, #0 6972: e7fc b.n 696e <_lv_style_list_get_transition_style+0xa> 00006974 <_lv_style_list_reset>: { 6974: b570 push {r4, r5, r6, lr} 6976: 1e04 subs r4, r0, #0 if(list == NULL) return; 6978: d026 beq.n 69c8 <_lv_style_list_reset+0x54> if(list->has_local) { 697a: 7943 ldrb r3, [r0, #5] 697c: 07db lsls r3, r3, #31 697e: d508 bpl.n 6992 <_lv_style_list_reset+0x1e> lv_style_t * local = lv_style_list_get_local_style(list); 6980: 4b14 ldr r3, [pc, #80] ; (69d4 <_lv_style_list_reset+0x60>) 6982: 4798 blx r3 6984: 1e05 subs r5, r0, #0 if(local) { 6986: d004 beq.n 6992 <_lv_style_list_reset+0x1e> lv_style_reset(local); 6988: 4b13 ldr r3, [pc, #76] ; (69d8 <_lv_style_list_reset+0x64>) 698a: 4798 blx r3 lv_mem_free(local); 698c: 0028 movs r0, r5 698e: 4b13 ldr r3, [pc, #76] ; (69dc <_lv_style_list_reset+0x68>) 6990: 4798 blx r3 if(list->has_trans) { 6992: 7963 ldrb r3, [r4, #5] 6994: 079b lsls r3, r3, #30 6996: d509 bpl.n 69ac <_lv_style_list_reset+0x38> lv_style_t * trans = _lv_style_list_get_transition_style(list); 6998: 0020 movs r0, r4 699a: 4b11 ldr r3, [pc, #68] ; (69e0 <_lv_style_list_reset+0x6c>) 699c: 4798 blx r3 699e: 1e05 subs r5, r0, #0 if(trans) { 69a0: d004 beq.n 69ac <_lv_style_list_reset+0x38> lv_style_reset(trans); 69a2: 4b0d ldr r3, [pc, #52] ; (69d8 <_lv_style_list_reset+0x64>) 69a4: 4798 blx r3 lv_mem_free(trans); 69a6: 0028 movs r0, r5 69a8: 4b0c ldr r3, [pc, #48] ; (69dc <_lv_style_list_reset+0x68>) 69aa: 4798 blx r3 if(list->style_cnt > 0) lv_mem_free(list->style_list); 69ac: 7923 ldrb r3, [r4, #4] 69ae: 2b00 cmp r3, #0 69b0: d10b bne.n 69ca <_lv_style_list_reset+0x56> list->style_list = NULL; 69b2: 2300 movs r3, #0 69b4: 6023 str r3, [r4, #0] list->style_cnt = 0; 69b6: 7123 strb r3, [r4, #4] list->has_local = 0; 69b8: 7963 ldrb r3, [r4, #5] list->has_trans = 0; 69ba: 2201 movs r2, #1 69bc: 4393 bics r3, r2 list->skip_trans = 0; 69be: 3201 adds r2, #1 69c0: 4393 bics r3, r2 69c2: 3202 adds r2, #2 69c4: 4393 bics r3, r2 69c6: 7163 strb r3, [r4, #5] } 69c8: bd70 pop {r4, r5, r6, pc} if(list->style_cnt > 0) lv_mem_free(list->style_list); 69ca: 6820 ldr r0, [r4, #0] 69cc: 4b03 ldr r3, [pc, #12] ; (69dc <_lv_style_list_reset+0x68>) 69ce: 4798 blx r3 69d0: e7ef b.n 69b2 <_lv_style_list_reset+0x3e> 69d2: 46c0 nop ; (mov r8, r8) 69d4: 0000694b .word 0x0000694b 69d8: 00005e01 .word 0x00005e01 69dc: 000123c9 .word 0x000123c9 69e0: 00006965 .word 0x00006965 000069e4 : { 69e4: b570 push {r4, r5, r6, lr} 69e6: 0005 movs r5, r0 69e8: 000c movs r4, r1 _lv_style_list_reset(list_dest); 69ea: 4b2b ldr r3, [pc, #172] ; (6a98 ) 69ec: 4798 blx r3 if(list_src->style_list == NULL) return; 69ee: 6823 ldr r3, [r4, #0] 69f0: 2b00 cmp r3, #0 69f2: d03e beq.n 6a72 if(list_src->has_local == 0) { 69f4: 7963 ldrb r3, [r4, #5] 69f6: 07da lsls r2, r3, #31 69f8: d41f bmi.n 6a3a if(list_src->has_trans) { 69fa: 079b lsls r3, r3, #30 69fc: d510 bpl.n 6a20 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 69fe: 7920 ldrb r0, [r4, #4] 6a00: 3801 subs r0, #1 6a02: 0080 lsls r0, r0, #2 6a04: 4b25 ldr r3, [pc, #148] ; (6a9c ) 6a06: 4798 blx r3 6a08: 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 *)); 6a0a: 7922 ldrb r2, [r4, #4] 6a0c: 3a01 subs r2, #1 6a0e: 0092 lsls r2, r2, #2 6a10: 6823 ldr r3, [r4, #0] 6a12: 1d19 adds r1, r3, #4 6a14: 4b22 ldr r3, [pc, #136] ; (6aa0 ) 6a16: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 6a18: 7923 ldrb r3, [r4, #4] 6a1a: 3b01 subs r3, #1 6a1c: 712b strb r3, [r5, #4] 6a1e: e028 b.n 6a72 list_dest->style_list = lv_mem_alloc(list_src->style_cnt * sizeof(lv_style_t *)); 6a20: 7920 ldrb r0, [r4, #4] 6a22: 0080 lsls r0, r0, #2 6a24: 4b1d ldr r3, [pc, #116] ; (6a9c ) 6a26: 4798 blx r3 6a28: 6028 str r0, [r5, #0] _lv_memcpy(list_dest->style_list, list_src->style_list, list_src->style_cnt * sizeof(lv_style_t *)); 6a2a: 7922 ldrb r2, [r4, #4] 6a2c: 0092 lsls r2, r2, #2 6a2e: 6821 ldr r1, [r4, #0] 6a30: 4b1b ldr r3, [pc, #108] ; (6aa0 ) 6a32: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt; 6a34: 7923 ldrb r3, [r4, #4] 6a36: 712b strb r3, [r5, #4] 6a38: e01b b.n 6a72 if(list_src->has_trans) { 6a3a: 079b lsls r3, r3, #30 6a3c: d51a bpl.n 6a74 list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 2) * sizeof(lv_style_t *)); 6a3e: 7920 ldrb r0, [r4, #4] 6a40: 3802 subs r0, #2 6a42: 0080 lsls r0, r0, #2 6a44: 4b15 ldr r3, [pc, #84] ; (6a9c ) 6a46: 4798 blx r3 6a48: 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 *)); 6a4a: 7922 ldrb r2, [r4, #4] 6a4c: 3a02 subs r2, #2 6a4e: 0092 lsls r2, r2, #2 6a50: 6821 ldr r1, [r4, #0] 6a52: 3108 adds r1, #8 6a54: 4b12 ldr r3, [pc, #72] ; (6aa0 ) 6a56: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 2; 6a58: 7923 ldrb r3, [r4, #4] 6a5a: 3b02 subs r3, #2 6a5c: 712b strb r3, [r5, #4] lv_style_t * local_style = get_alloc_local_style(list_dest); 6a5e: 0028 movs r0, r5 6a60: 4d10 ldr r5, [pc, #64] ; (6aa4 ) 6a62: 47a8 blx r5 6a64: 0006 movs r6, r0 lv_style_copy(local_style, get_alloc_local_style((lv_style_list_t *)list_src)); 6a66: 0020 movs r0, r4 6a68: 47a8 blx r5 6a6a: 0001 movs r1, r0 6a6c: 0030 movs r0, r6 6a6e: 4b0e ldr r3, [pc, #56] ; (6aa8 ) 6a70: 4798 blx r3 } 6a72: bd70 pop {r4, r5, r6, pc} list_dest->style_list = lv_mem_alloc((list_src->style_cnt - 1) * sizeof(lv_style_t *)); 6a74: 7920 ldrb r0, [r4, #4] 6a76: 3801 subs r0, #1 6a78: 0080 lsls r0, r0, #2 6a7a: 4b08 ldr r3, [pc, #32] ; (6a9c ) 6a7c: 4798 blx r3 6a7e: 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 *)); 6a80: 7922 ldrb r2, [r4, #4] 6a82: 3a01 subs r2, #1 6a84: 0092 lsls r2, r2, #2 6a86: 6823 ldr r3, [r4, #0] 6a88: 1d19 adds r1, r3, #4 6a8a: 4b05 ldr r3, [pc, #20] ; (6aa0 ) 6a8c: 4798 blx r3 list_dest->style_cnt = list_src->style_cnt - 1; 6a8e: 7923 ldrb r3, [r4, #4] 6a90: 3b01 subs r3, #1 6a92: 712b strb r3, [r5, #4] 6a94: e7e3 b.n 6a5e 6a96: 46c0 nop ; (mov r8, r8) 6a98: 00006975 .word 0x00006975 6a9c: 000122dd .word 0x000122dd 6aa0: 00012545 .word 0x00012545 6aa4: 00005d41 .word 0x00005d41 6aa8: 00005e55 .word 0x00005e55 00006aac <_lv_style_list_add_trans_style>: { 6aac: b530 push {r4, r5, lr} 6aae: b083 sub sp, #12 6ab0: 0005 movs r5, r0 if(list->has_trans) return _lv_style_list_get_transition_style(list); 6ab2: 7943 ldrb r3, [r0, #5] 6ab4: 079b lsls r3, r3, #30 6ab6: d505 bpl.n 6ac4 <_lv_style_list_add_trans_style+0x18> 6ab8: 4b1c ldr r3, [pc, #112] ; (6b2c <_lv_style_list_add_trans_style+0x80>) 6aba: 4798 blx r3 6abc: 0004 movs r4, r0 } 6abe: 0020 movs r0, r4 6ac0: b003 add sp, #12 6ac2: bd30 pop {r4, r5, pc} lv_style_t * trans_style = lv_mem_alloc(sizeof(lv_style_t)); 6ac4: 2004 movs r0, #4 6ac6: 4b1a ldr r3, [pc, #104] ; (6b30 <_lv_style_list_add_trans_style+0x84>) 6ac8: 4798 blx r3 6aca: 0004 movs r4, r0 LV_ASSERT_MEM(trans_style); 6acc: 4b19 ldr r3, [pc, #100] ; (6b34 <_lv_style_list_add_trans_style+0x88>) 6ace: 4798 blx r3 6ad0: 2800 cmp r0, #0 6ad2: d015 beq.n 6b00 <_lv_style_list_add_trans_style+0x54> if(trans_style == NULL) { 6ad4: 2c00 cmp r4, #0 6ad6: d020 beq.n 6b1a <_lv_style_list_add_trans_style+0x6e> lv_style_init(trans_style); 6ad8: 0020 movs r0, r4 6ada: 4b17 ldr r3, [pc, #92] ; (6b38 <_lv_style_list_add_trans_style+0x8c>) 6adc: 4798 blx r3 _lv_style_list_add_style(list, trans_style); 6ade: 0021 movs r1, r4 6ae0: 0028 movs r0, r5 6ae2: 4b16 ldr r3, [pc, #88] ; (6b3c <_lv_style_list_add_trans_style+0x90>) 6ae4: 4798 blx r3 list->has_trans = 1; 6ae6: 796b ldrb r3, [r5, #5] 6ae8: 2202 movs r2, #2 6aea: 4313 orrs r3, r2 6aec: 716b strb r3, [r5, #5] if(list->has_local) { 6aee: 07db lsls r3, r3, #31 6af0: d5e5 bpl.n 6abe <_lv_style_list_add_trans_style+0x12> lv_style_t * tmp = list->style_list[0]; 6af2: 682b ldr r3, [r5, #0] 6af4: 681a ldr r2, [r3, #0] list->style_list[0] = list->style_list[1]; 6af6: 6859 ldr r1, [r3, #4] 6af8: 6019 str r1, [r3, #0] list->style_list[1] = tmp; 6afa: 682b ldr r3, [r5, #0] 6afc: 605a str r2, [r3, #4] 6afe: e7de b.n 6abe <_lv_style_list_add_trans_style+0x12> LV_ASSERT_MEM(trans_style); 6b00: 4b0f ldr r3, [pc, #60] ; (6b40 <_lv_style_list_add_trans_style+0x94>) 6b02: 9300 str r3, [sp, #0] 6b04: 4a0f ldr r2, [pc, #60] ; (6b44 <_lv_style_list_add_trans_style+0x98>) 6b06: 4910 ldr r1, [pc, #64] ; (6b48 <_lv_style_list_add_trans_style+0x9c>) 6b08: 3003 adds r0, #3 6b0a: 4d10 ldr r5, [pc, #64] ; (6b4c <_lv_style_list_add_trans_style+0xa0>) 6b0c: 47a8 blx r5 6b0e: 0022 movs r2, r4 6b10: 2300 movs r3, #0 6b12: 480f ldr r0, [pc, #60] ; (6b50 <_lv_style_list_add_trans_style+0xa4>) 6b14: 490f ldr r1, [pc, #60] ; (6b54 <_lv_style_list_add_trans_style+0xa8>) 6b16: 4788 blx r1 6b18: e7fe b.n 6b18 <_lv_style_list_add_trans_style+0x6c> LV_LOG_WARN("lv_style_list_add_trans_style: couldn't create transition style"); 6b1a: 4b0f ldr r3, [pc, #60] ; (6b58 <_lv_style_list_add_trans_style+0xac>) 6b1c: 9300 str r3, [sp, #0] 6b1e: 4b08 ldr r3, [pc, #32] ; (6b40 <_lv_style_list_add_trans_style+0x94>) 6b20: 4a0e ldr r2, [pc, #56] ; (6b5c <_lv_style_list_add_trans_style+0xb0>) 6b22: 4909 ldr r1, [pc, #36] ; (6b48 <_lv_style_list_add_trans_style+0x9c>) 6b24: 2002 movs r0, #2 6b26: 4d09 ldr r5, [pc, #36] ; (6b4c <_lv_style_list_add_trans_style+0xa0>) 6b28: 47a8 blx r5 return NULL; 6b2a: e7c8 b.n 6abe <_lv_style_list_add_trans_style+0x12> 6b2c: 00006965 .word 0x00006965 6b30: 000122dd .word 0x000122dd 6b34: 000017ad .word 0x000017ad 6b38: 00005b61 .word 0x00005b61 6b3c: 00005c65 .word 0x00005c65 6b40: 00025eb0 .word 0x00025eb0 6b44: 000002cd .word 0x000002cd 6b48: 00025f58 .word 0x00025f58 6b4c: 00012159 .word 0x00012159 6b50: 00025854 .word 0x00025854 6b54: 000017b5 .word 0x000017b5 6b58: 00025f18 .word 0x00025f18 6b5c: 000002cf .word 0x000002cf 00006b60 <_lv_style_list_get_int>: { 6b60: b5f0 push {r4, r5, r6, r7, lr} 6b62: 46d6 mov lr, sl 6b64: 464f mov r7, r9 6b66: 4646 mov r6, r8 6b68: b5c0 push {r6, r7, lr} 6b6a: b084 sub sp, #16 6b6c: 1e05 subs r5, r0, #0 6b6e: 9101 str r1, [sp, #4] 6b70: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 6b72: d058 beq.n 6c26 <_lv_style_list_get_int+0xc6> if(list->style_list == NULL) return LV_RES_INV; 6b74: 6803 ldr r3, [r0, #0] 6b76: 2b00 cmp r3, #0 6b78: d057 beq.n 6c2a <_lv_style_list_get_int+0xca> int16_t weight_goal = attr.full; 6b7a: 0a0b lsrs r3, r1, #8 6b7c: 4698 mov r8, r3 lv_style_int_t value_act = 0; 6b7e: 2200 movs r2, #0 6b80: ab02 add r3, sp, #8 6b82: 80da strh r2, [r3, #6] for(ci = 0; ci < list->style_cnt; ci++) { 6b84: 7902 ldrb r2, [r0, #4] 6b86: 2a00 cmp r2, #0 6b88: dd42 ble.n 6c10 <_lv_style_list_get_int+0xb0> 6b8a: 2400 movs r4, #0 6b8c: 2601 movs r6, #1 6b8e: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 6b90: 2306 movs r3, #6 6b92: 469a mov sl, r3 int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 6b94: 4f26 ldr r7, [pc, #152] ; (6c30 <_lv_style_list_get_int+0xd0>) 6b96: e016 b.n 6bc6 <_lv_style_list_get_int+0x66> 6b98: 3101 adds r1, #1 6b9a: b2c9 uxtb r1, r1 6b9c: e019 b.n 6bd2 <_lv_style_list_get_int+0x72> *res = value_act; 6b9e: ab02 add r3, sp, #8 6ba0: 3306 adds r3, #6 6ba2: 881b ldrh r3, [r3, #0] 6ba4: 464a mov r2, r9 6ba6: 8013 strh r3, [r2, #0] return LV_RES_OK; 6ba8: 2001 movs r0, #1 6baa: e036 b.n 6c1a <_lv_style_list_get_int+0xba> else if(weight_act > weight) { 6bac: 42b3 cmp r3, r6 6bae: dd05 ble.n 6bbc <_lv_style_list_get_int+0x5c> *res = value_act; 6bb0: ab02 add r3, sp, #8 6bb2: 3306 adds r3, #6 6bb4: 881b ldrh r3, [r3, #0] 6bb6: 464a mov r2, r9 6bb8: 8013 strh r3, [r2, #0] weight = weight_act; 6bba: 0006 movs r6, r0 6bbc: 3401 adds r4, #1 6bbe: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 6bc0: 792a ldrb r2, [r5, #4] 6bc2: 4294 cmp r4, r2 6bc4: da26 bge.n 6c14 <_lv_style_list_get_int+0xb4> lv_style_t * class = lv_style_list_get_style(list, ci); 6bc6: b2e1 uxtb r1, r4 6bc8: 796b ldrb r3, [r5, #5] 6bca: 4650 mov r0, sl 6bcc: 4003 ands r3, r0 6bce: 2b06 cmp r3, #6 6bd0: d0e2 beq.n 6b98 <_lv_style_list_get_int+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 6bd2: 2000 movs r0, #0 6bd4: 2a00 cmp r2, #0 6bd6: d004 beq.n 6be2 <_lv_style_list_get_int+0x82> 6bd8: 4291 cmp r1, r2 6bda: d202 bcs.n 6be2 <_lv_style_list_get_int+0x82> return list->style_list[id]; 6bdc: 0089 lsls r1, r1, #2 6bde: 682b ldr r3, [r5, #0] 6be0: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_int(class, prop, &value_act); 6be2: ab02 add r3, sp, #8 6be4: 1d9a adds r2, r3, #6 6be6: 9901 ldr r1, [sp, #4] 6be8: 47b8 blx r7 6bea: 0003 movs r3, r0 if(weight_act == weight_goal) { 6bec: 4580 cmp r8, r0 6bee: d0d6 beq.n 6b9e <_lv_style_list_get_int+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 6bf0: 796a ldrb r2, [r5, #5] 6bf2: 0791 lsls r1, r2, #30 6bf4: d5da bpl.n 6bac <_lv_style_list_get_int+0x4c> 6bf6: 2800 cmp r0, #0 6bf8: dbd8 blt.n 6bac <_lv_style_list_get_int+0x4c> 6bfa: 2c00 cmp r4, #0 6bfc: d1d6 bne.n 6bac <_lv_style_list_get_int+0x4c> 6bfe: 0752 lsls r2, r2, #29 6c00: d4d4 bmi.n 6bac <_lv_style_list_get_int+0x4c> *res = value_act; 6c02: ab02 add r3, sp, #8 6c04: 3306 adds r3, #6 6c06: 881b ldrh r3, [r3, #0] 6c08: 464a mov r2, r9 6c0a: 8013 strh r3, [r2, #0] return LV_RES_OK; 6c0c: 2001 movs r0, #1 6c0e: e004 b.n 6c1a <_lv_style_list_get_int+0xba> int16_t weight = -1; 6c10: 2601 movs r6, #1 6c12: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 6c14: 43f0 mvns r0, r6 6c16: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 6c18: 0bc0 lsrs r0, r0, #15 } 6c1a: b004 add sp, #16 6c1c: bc1c pop {r2, r3, r4} 6c1e: 4690 mov r8, r2 6c20: 4699 mov r9, r3 6c22: 46a2 mov sl, r4 6c24: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 6c26: 2000 movs r0, #0 6c28: e7f7 b.n 6c1a <_lv_style_list_get_int+0xba> if(list->style_list == NULL) return LV_RES_INV; 6c2a: 2000 movs r0, #0 6c2c: e7f5 b.n 6c1a <_lv_style_list_get_int+0xba> 6c2e: 46c0 nop ; (mov r8, r8) 6c30: 000065c9 .word 0x000065c9 00006c34 <_lv_style_list_get_color>: { 6c34: b5f0 push {r4, r5, r6, r7, lr} 6c36: 46d6 mov lr, sl 6c38: 464f mov r7, r9 6c3a: 4646 mov r6, r8 6c3c: b5c0 push {r6, r7, lr} 6c3e: b084 sub sp, #16 6c40: 1e05 subs r5, r0, #0 6c42: 9101 str r1, [sp, #4] 6c44: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 6c46: d054 beq.n 6cf2 <_lv_style_list_get_color+0xbe> if(list->style_list == NULL) return LV_RES_INV; 6c48: 6803 ldr r3, [r0, #0] 6c4a: 2b00 cmp r3, #0 6c4c: d053 beq.n 6cf6 <_lv_style_list_get_color+0xc2> int16_t weight_goal = attr.full; 6c4e: 0a0b lsrs r3, r1, #8 6c50: 4698 mov r8, r3 lv_color_t value_act = { 0 }; 6c52: 2200 movs r2, #0 6c54: ab03 add r3, sp, #12 6c56: 801a strh r2, [r3, #0] for(ci = 0; ci < list->style_cnt; ci++) { 6c58: 7902 ldrb r2, [r0, #4] 6c5a: 2a00 cmp r2, #0 6c5c: dd3e ble.n 6cdc <_lv_style_list_get_color+0xa8> 6c5e: 2400 movs r4, #0 6c60: 2601 movs r6, #1 6c62: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 6c64: 2306 movs r3, #6 6c66: 469a mov sl, r3 int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 6c68: 4f24 ldr r7, [pc, #144] ; (6cfc <_lv_style_list_get_color+0xc8>) 6c6a: e014 b.n 6c96 <_lv_style_list_get_color+0x62> 6c6c: 3101 adds r1, #1 6c6e: b2c9 uxtb r1, r1 6c70: e017 b.n 6ca2 <_lv_style_list_get_color+0x6e> *res = value_act; 6c72: ab03 add r3, sp, #12 6c74: 881b ldrh r3, [r3, #0] 6c76: 464a mov r2, r9 6c78: 8013 strh r3, [r2, #0] return LV_RES_OK; 6c7a: 2001 movs r0, #1 6c7c: e033 b.n 6ce6 <_lv_style_list_get_color+0xb2> else if(weight_act > weight) { 6c7e: 42b3 cmp r3, r6 6c80: dd04 ble.n 6c8c <_lv_style_list_get_color+0x58> *res = value_act; 6c82: ab03 add r3, sp, #12 6c84: 881b ldrh r3, [r3, #0] 6c86: 464a mov r2, r9 6c88: 8013 strh r3, [r2, #0] weight = weight_act; 6c8a: 0006 movs r6, r0 6c8c: 3401 adds r4, #1 6c8e: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 6c90: 792a ldrb r2, [r5, #4] 6c92: 4294 cmp r4, r2 6c94: da24 bge.n 6ce0 <_lv_style_list_get_color+0xac> lv_style_t * class = lv_style_list_get_style(list, ci); 6c96: b2e1 uxtb r1, r4 6c98: 796b ldrb r3, [r5, #5] 6c9a: 4650 mov r0, sl 6c9c: 4003 ands r3, r0 6c9e: 2b06 cmp r3, #6 6ca0: d0e4 beq.n 6c6c <_lv_style_list_get_color+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 6ca2: 2000 movs r0, #0 6ca4: 2a00 cmp r2, #0 6ca6: d004 beq.n 6cb2 <_lv_style_list_get_color+0x7e> 6ca8: 4291 cmp r1, r2 6caa: d202 bcs.n 6cb2 <_lv_style_list_get_color+0x7e> return list->style_list[id]; 6cac: 0089 lsls r1, r1, #2 6cae: 682b ldr r3, [r5, #0] 6cb0: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_color(class, prop, &value_act); 6cb2: aa03 add r2, sp, #12 6cb4: 9901 ldr r1, [sp, #4] 6cb6: 47b8 blx r7 6cb8: 0003 movs r3, r0 if(weight_act == weight_goal) { 6cba: 4580 cmp r8, r0 6cbc: d0d9 beq.n 6c72 <_lv_style_list_get_color+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 6cbe: 796a ldrb r2, [r5, #5] 6cc0: 0791 lsls r1, r2, #30 6cc2: d5dc bpl.n 6c7e <_lv_style_list_get_color+0x4a> 6cc4: 2800 cmp r0, #0 6cc6: dbda blt.n 6c7e <_lv_style_list_get_color+0x4a> 6cc8: 2c00 cmp r4, #0 6cca: d1d8 bne.n 6c7e <_lv_style_list_get_color+0x4a> 6ccc: 0752 lsls r2, r2, #29 6cce: d4d6 bmi.n 6c7e <_lv_style_list_get_color+0x4a> *res = value_act; 6cd0: ab03 add r3, sp, #12 6cd2: 881b ldrh r3, [r3, #0] 6cd4: 464a mov r2, r9 6cd6: 8013 strh r3, [r2, #0] return LV_RES_OK; 6cd8: 2001 movs r0, #1 6cda: e004 b.n 6ce6 <_lv_style_list_get_color+0xb2> int16_t weight = -1; 6cdc: 2601 movs r6, #1 6cde: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 6ce0: 43f0 mvns r0, r6 6ce2: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 6ce4: 0bc0 lsrs r0, r0, #15 } 6ce6: b004 add sp, #16 6ce8: bc1c pop {r2, r3, r4} 6cea: 4690 mov r8, r2 6cec: 4699 mov r9, r3 6cee: 46a2 mov sl, r4 6cf0: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 6cf2: 2000 movs r0, #0 6cf4: e7f7 b.n 6ce6 <_lv_style_list_get_color+0xb2> if(list->style_list == NULL) return LV_RES_INV; 6cf6: 2000 movs r0, #0 6cf8: e7f5 b.n 6ce6 <_lv_style_list_get_color+0xb2> 6cfa: 46c0 nop ; (mov r8, r8) 6cfc: 00006783 .word 0x00006783 00006d00 <_lv_style_list_get_opa>: { 6d00: b5f0 push {r4, r5, r6, r7, lr} 6d02: 46d6 mov lr, sl 6d04: 464f mov r7, r9 6d06: 4646 mov r6, r8 6d08: b5c0 push {r6, r7, lr} 6d0a: b084 sub sp, #16 6d0c: 1e05 subs r5, r0, #0 6d0e: 9101 str r1, [sp, #4] 6d10: 4691 mov r9, r2 if(list == NULL) return LV_RES_INV; 6d12: d058 beq.n 6dc6 <_lv_style_list_get_opa+0xc6> if(list->style_list == NULL) return LV_RES_INV; 6d14: 6803 ldr r3, [r0, #0] 6d16: 2b00 cmp r3, #0 6d18: d057 beq.n 6dca <_lv_style_list_get_opa+0xca> int16_t weight_goal = attr.full; 6d1a: 0a0b lsrs r3, r1, #8 6d1c: 4698 mov r8, r3 lv_opa_t value_act = LV_OPA_TRANSP; 6d1e: 2200 movs r2, #0 6d20: ab02 add r3, sp, #8 6d22: 71da strb r2, [r3, #7] for(ci = 0; ci < list->style_cnt; ci++) { 6d24: 7902 ldrb r2, [r0, #4] 6d26: 2a00 cmp r2, #0 6d28: dd42 ble.n 6db0 <_lv_style_list_get_opa+0xb0> 6d2a: 2400 movs r4, #0 6d2c: 2601 movs r6, #1 6d2e: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 6d30: 2306 movs r3, #6 6d32: 469a mov sl, r3 int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 6d34: 4f26 ldr r7, [pc, #152] ; (6dd0 <_lv_style_list_get_opa+0xd0>) 6d36: e016 b.n 6d66 <_lv_style_list_get_opa+0x66> 6d38: 3101 adds r1, #1 6d3a: b2c9 uxtb r1, r1 6d3c: e019 b.n 6d72 <_lv_style_list_get_opa+0x72> *res = value_act; 6d3e: ab02 add r3, sp, #8 6d40: 3307 adds r3, #7 6d42: 781b ldrb r3, [r3, #0] 6d44: 464a mov r2, r9 6d46: 7013 strb r3, [r2, #0] return LV_RES_OK; 6d48: 2001 movs r0, #1 6d4a: e036 b.n 6dba <_lv_style_list_get_opa+0xba> else if(weight_act > weight) { 6d4c: 42b3 cmp r3, r6 6d4e: dd05 ble.n 6d5c <_lv_style_list_get_opa+0x5c> *res = value_act; 6d50: ab02 add r3, sp, #8 6d52: 3307 adds r3, #7 6d54: 781b ldrb r3, [r3, #0] 6d56: 464a mov r2, r9 6d58: 7013 strb r3, [r2, #0] weight = weight_act; 6d5a: 0006 movs r6, r0 6d5c: 3401 adds r4, #1 6d5e: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 6d60: 792a ldrb r2, [r5, #4] 6d62: 4294 cmp r4, r2 6d64: da26 bge.n 6db4 <_lv_style_list_get_opa+0xb4> lv_style_t * class = lv_style_list_get_style(list, ci); 6d66: b2e1 uxtb r1, r4 6d68: 796b ldrb r3, [r5, #5] 6d6a: 4650 mov r0, sl 6d6c: 4003 ands r3, r0 6d6e: 2b06 cmp r3, #6 6d70: d0e2 beq.n 6d38 <_lv_style_list_get_opa+0x38> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 6d72: 2000 movs r0, #0 6d74: 2a00 cmp r2, #0 6d76: d004 beq.n 6d82 <_lv_style_list_get_opa+0x82> 6d78: 4291 cmp r1, r2 6d7a: d202 bcs.n 6d82 <_lv_style_list_get_opa+0x82> return list->style_list[id]; 6d7c: 0089 lsls r1, r1, #2 6d7e: 682b ldr r3, [r5, #0] 6d80: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_opa(class, prop, &value_act); 6d82: ab02 add r3, sp, #8 6d84: 1dda adds r2, r3, #7 6d86: 9901 ldr r1, [sp, #4] 6d88: 47b8 blx r7 6d8a: 0003 movs r3, r0 if(weight_act == weight_goal) { 6d8c: 4580 cmp r8, r0 6d8e: d0d6 beq.n 6d3e <_lv_style_list_get_opa+0x3e> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 6d90: 796a ldrb r2, [r5, #5] 6d92: 0791 lsls r1, r2, #30 6d94: d5da bpl.n 6d4c <_lv_style_list_get_opa+0x4c> 6d96: 2800 cmp r0, #0 6d98: dbd8 blt.n 6d4c <_lv_style_list_get_opa+0x4c> 6d9a: 2c00 cmp r4, #0 6d9c: d1d6 bne.n 6d4c <_lv_style_list_get_opa+0x4c> 6d9e: 0752 lsls r2, r2, #29 6da0: d4d4 bmi.n 6d4c <_lv_style_list_get_opa+0x4c> *res = value_act; 6da2: ab02 add r3, sp, #8 6da4: 3307 adds r3, #7 6da6: 781b ldrb r3, [r3, #0] 6da8: 464a mov r2, r9 6daa: 7013 strb r3, [r2, #0] return LV_RES_OK; 6dac: 2001 movs r0, #1 6dae: e004 b.n 6dba <_lv_style_list_get_opa+0xba> int16_t weight = -1; 6db0: 2601 movs r6, #1 6db2: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 6db4: 43f0 mvns r0, r6 6db6: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 6db8: 0bc0 lsrs r0, r0, #15 } 6dba: b004 add sp, #16 6dbc: bc1c pop {r2, r3, r4} 6dbe: 4690 mov r8, r2 6dc0: 4699 mov r9, r3 6dc2: 46a2 mov sl, r4 6dc4: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 6dc6: 2000 movs r0, #0 6dc8: e7f7 b.n 6dba <_lv_style_list_get_opa+0xba> if(list->style_list == NULL) return LV_RES_INV; 6dca: 2000 movs r0, #0 6dcc: e7f5 b.n 6dba <_lv_style_list_get_opa+0xba> 6dce: 46c0 nop ; (mov r8, r8) 6dd0: 000066a9 .word 0x000066a9 00006dd4 <_lv_style_list_get_ptr>: { 6dd4: b5f0 push {r4, r5, r6, r7, lr} 6dd6: 46d6 mov lr, sl 6dd8: 464f mov r7, r9 6dda: 4646 mov r6, r8 6ddc: b5c0 push {r6, r7, lr} 6dde: b084 sub sp, #16 6de0: 0005 movs r5, r0 6de2: 9101 str r1, [sp, #4] 6de4: 0017 movs r7, r2 if(list == NULL) return LV_RES_INV; 6de6: 2800 cmp r0, #0 6de8: d04c beq.n 6e84 <_lv_style_list_get_ptr+0xb0> if(list->style_list == NULL) return LV_RES_INV; 6dea: 6803 ldr r3, [r0, #0] 6dec: 2b00 cmp r3, #0 6dee: d04b beq.n 6e88 <_lv_style_list_get_ptr+0xb4> int16_t weight_goal = attr.full; 6df0: 0a0b lsrs r3, r1, #8 6df2: 4698 mov r8, r3 for(ci = 0; ci < list->style_cnt; ci++) { 6df4: 7902 ldrb r2, [r0, #4] 6df6: 2a00 cmp r2, #0 6df8: dd39 ble.n 6e6e <_lv_style_list_get_ptr+0x9a> 6dfa: 2400 movs r4, #0 6dfc: 2601 movs r6, #1 6dfe: 4276 negs r6, r6 if(list->has_trans && list->skip_trans) id++; 6e00: 2306 movs r3, #6 6e02: 469a mov sl, r3 int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 6e04: 4b21 ldr r3, [pc, #132] ; (6e8c <_lv_style_list_get_ptr+0xb8>) 6e06: 4699 mov r9, r3 6e08: e010 b.n 6e2c <_lv_style_list_get_ptr+0x58> 6e0a: 3101 adds r1, #1 6e0c: b2c9 uxtb r1, r1 6e0e: e013 b.n 6e38 <_lv_style_list_get_ptr+0x64> *res = value_act; 6e10: 9b03 ldr r3, [sp, #12] 6e12: 603b str r3, [r7, #0] return LV_RES_OK; 6e14: 2001 movs r0, #1 6e16: e02f b.n 6e78 <_lv_style_list_get_ptr+0xa4> else if(weight_act > weight) { 6e18: 42b3 cmp r3, r6 6e1a: dd02 ble.n 6e22 <_lv_style_list_get_ptr+0x4e> *res = value_act; 6e1c: 9b03 ldr r3, [sp, #12] 6e1e: 603b str r3, [r7, #0] weight = weight_act; 6e20: 0006 movs r6, r0 6e22: 3401 adds r4, #1 6e24: b224 sxth r4, r4 for(ci = 0; ci < list->style_cnt; ci++) { 6e26: 792a ldrb r2, [r5, #4] 6e28: 4294 cmp r4, r2 6e2a: da22 bge.n 6e72 <_lv_style_list_get_ptr+0x9e> lv_style_t * class = lv_style_list_get_style(list, ci); 6e2c: b2e1 uxtb r1, r4 6e2e: 796b ldrb r3, [r5, #5] 6e30: 4650 mov r0, sl 6e32: 4003 ands r3, r0 6e34: 2b06 cmp r3, #6 6e36: d0e8 beq.n 6e0a <_lv_style_list_get_ptr+0x36> if(list->style_cnt == 0 || id >= list->style_cnt) return NULL; 6e38: 2000 movs r0, #0 6e3a: 2a00 cmp r2, #0 6e3c: d004 beq.n 6e48 <_lv_style_list_get_ptr+0x74> 6e3e: 4291 cmp r1, r2 6e40: d202 bcs.n 6e48 <_lv_style_list_get_ptr+0x74> return list->style_list[id]; 6e42: 0089 lsls r1, r1, #2 6e44: 682b ldr r3, [r5, #0] 6e46: 58c8 ldr r0, [r1, r3] int16_t weight_act = _lv_style_get_ptr(class, prop, &value_act); 6e48: aa03 add r2, sp, #12 6e4a: 9901 ldr r1, [sp, #4] 6e4c: 47c8 blx r9 6e4e: 0003 movs r3, r0 if(weight_act == weight_goal) { 6e50: 4580 cmp r8, r0 6e52: d0dd beq.n 6e10 <_lv_style_list_get_ptr+0x3c> else if(list->has_trans && weight_act >= 0 && ci == 0 && !list->skip_trans) { 6e54: 796a ldrb r2, [r5, #5] 6e56: 0791 lsls r1, r2, #30 6e58: d5de bpl.n 6e18 <_lv_style_list_get_ptr+0x44> 6e5a: 2800 cmp r0, #0 6e5c: dbdc blt.n 6e18 <_lv_style_list_get_ptr+0x44> 6e5e: 2c00 cmp r4, #0 6e60: d1da bne.n 6e18 <_lv_style_list_get_ptr+0x44> 6e62: 0752 lsls r2, r2, #29 6e64: d4d8 bmi.n 6e18 <_lv_style_list_get_ptr+0x44> *res = value_act; 6e66: 9b03 ldr r3, [sp, #12] 6e68: 603b str r3, [r7, #0] return LV_RES_OK; 6e6a: 2001 movs r0, #1 6e6c: e004 b.n 6e78 <_lv_style_list_get_ptr+0xa4> int16_t weight = -1; 6e6e: 2601 movs r6, #1 6e70: 4276 negs r6, r6 if(weight >= 0) return LV_RES_OK; 6e72: 43f0 mvns r0, r6 6e74: b280 uxth r0, r0 if(list == NULL) return LV_RES_INV; 6e76: 0bc0 lsrs r0, r0, #15 } 6e78: b004 add sp, #16 6e7a: bc1c pop {r2, r3, r4} 6e7c: 4690 mov r8, r2 6e7e: 4699 mov r9, r3 6e80: 46a2 mov sl, r4 6e82: bdf0 pop {r4, r5, r6, r7, pc} if(list == NULL) return LV_RES_INV; 6e84: 2000 movs r0, #0 6e86: e7f7 b.n 6e78 <_lv_style_list_get_ptr+0xa4> if(list->style_list == NULL) return LV_RES_INV; 6e88: 2000 movs r0, #0 6e8a: e7f5 b.n 6e78 <_lv_style_list_get_ptr+0xa4> 6e8c: 00006863 .word 0x00006863 00006e90 : } } } static inline lv_color_t color_blend_true_color_additive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 6e90: b5f0 push {r4, r5, r6, r7, lr} 6e92: 1c05 adds r5, r0, #0 6e94: 06cb lsls r3, r1, #27 6e96: 0edb lsrs r3, r3, #27 6e98: 054f lsls r7, r1, #21 6e9a: 0ebf lsrs r7, r7, #26 6e9c: 0409 lsls r1, r1, #16 6e9e: 0ec9 lsrs r1, r1, #27 if(opa <= LV_OPA_MIN) return bg; 6ea0: 2a05 cmp r2, #5 6ea2: d93d bls.n 6f20 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; 6ea4: 0428 lsls r0, r5, #16 6ea6: 0ec0 lsrs r0, r0, #27 6ea8: 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); 6eaa: 281f cmp r0, #31 6eac: d900 bls.n 6eb0 6eae: 201f movs r0, #31 6eb0: 241f movs r4, #31 6eb2: 4004 ands r4, r0 6eb4: 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; 6eb6: 056e lsls r6, r5, #21 6eb8: 0eb6 lsrs r6, r6, #26 6eba: 19f6 adds r6, r6, r7 fg.ch.green = LV_MATH_MIN(tmp, 63); 6ebc: 2e3f cmp r6, #63 ; 0x3f 6ebe: d900 bls.n 6ec2 6ec0: 263f movs r6, #63 ; 0x3f 6ec2: 243f movs r4, #63 ; 0x3f 6ec4: 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; 6ec6: 06ed lsls r5, r5, #27 6ec8: 0eed lsrs r5, r5, #27 6eca: 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); 6ecc: 2d1f cmp r5, #31 6ece: d900 bls.n 6ed2 6ed0: 251f movs r5, #31 6ed2: 241f movs r4, #31 6ed4: 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; 6ed6: 2aff cmp r2, #255 ; 0xff 6ed8: d027 beq.n 6f2a 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))); 6eda: 25ff movs r5, #255 ; 0xff 6edc: 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))); 6ede: 4354 muls r4, r2 6ee0: 436b muls r3, r5 6ee2: 18e3 adds r3, r4, r3 6ee4: 0218 lsls r0, r3, #8 6ee6: 18c0 adds r0, r0, r3 6ee8: 01c0 lsls r0, r0, #7 6eea: 18c0 adds r0, r0, r3 6eec: 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))); 6eee: 4356 muls r6, r2 6ef0: 436f muls r7, r5 6ef2: 19f7 adds r7, r6, r7 6ef4: 023e lsls r6, r7, #8 6ef6: 19f6 adds r6, r6, r7 6ef8: 01f6 lsls r6, r6, #7 6efa: 19f6 adds r6, r6, r7 6efc: 00f6 lsls r6, r6, #3 6efe: 0eb6 lsrs r6, r6, #26 6f00: 0176 lsls r6, r6, #5 6f02: 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))); 6f04: 4663 mov r3, ip 6f06: 435a muls r2, r3 6f08: 4369 muls r1, r5 6f0a: 1852 adds r2, r2, r1 6f0c: 0211 lsls r1, r2, #8 6f0e: 1889 adds r1, r1, r2 6f10: 01c9 lsls r1, r1, #7 6f12: 188a adds r2, r1, r2 6f14: 0dd2 lsrs r2, r2, #23 6f16: b2d2 uxtb r2, r2 6f18: 02d2 lsls r2, r2, #11 6f1a: 4330 orrs r0, r6 6f1c: 4310 orrs r0, r2 return lv_color_mix(fg, bg, opa); } 6f1e: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 6f20: 0178 lsls r0, r7, #5 6f22: 02c9 lsls r1, r1, #11 6f24: 4318 orrs r0, r3 6f26: 4308 orrs r0, r1 6f28: e7f9 b.n 6f1e if(opa == LV_OPA_COVER) return fg; 6f2a: 0170 lsls r0, r6, #5 6f2c: 4663 mov r3, ip 6f2e: 02da lsls r2, r3, #11 6f30: 4320 orrs r0, r4 6f32: 4310 orrs r0, r2 6f34: e7f3 b.n 6f1e 00006f36 : static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_color_t bg, lv_opa_t opa) { 6f36: b5f0 push {r4, r5, r6, r7, lr} 6f38: 46c6 mov lr, r8 6f3a: b500 push {lr} 6f3c: 1c05 adds r5, r0, #0 6f3e: 06c8 lsls r0, r1, #27 6f40: 0ec3 lsrs r3, r0, #27 6f42: 4698 mov r8, r3 6f44: 054f lsls r7, r1, #21 6f46: 0ebf lsrs r7, r7, #26 6f48: 0409 lsls r1, r1, #16 6f4a: 0ec9 lsrs r1, r1, #27 if(opa <= LV_OPA_MIN) return bg; 6f4c: 2a05 cmp r2, #5 6f4e: d941 bls.n 6fd4 int32_t tmp; tmp = bg.ch.red - fg.ch.red; 6f50: 0428 lsls r0, r5, #16 6f52: 0ec0 lsrs r0, r0, #27 6f54: 1a08 subs r0, r1, r0 fg.ch.red = LV_MATH_MAX(tmp, 0); 6f56: 43c3 mvns r3, r0 6f58: 17db asrs r3, r3, #31 6f5a: 4018 ands r0, r3 6f5c: 231f movs r3, #31 6f5e: 4003 ands r3, r0 6f60: 469c mov ip, r3 #if LV_COLOR_16_SWAP == 0 tmp = bg.ch.green - fg.ch.green; 6f62: 056e lsls r6, r5, #21 6f64: 0eb6 lsrs r6, r6, #26 6f66: 1bb8 subs r0, r7, r6 fg.ch.green = LV_MATH_MAX(tmp, 0); 6f68: 43c3 mvns r3, r0 6f6a: 17db asrs r3, r3, #31 6f6c: 4018 ands r0, r3 6f6e: 263f movs r6, #63 ; 0x3f 6f70: 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; 6f72: 06ed lsls r5, r5, #27 6f74: 0eed lsrs r5, r5, #27 6f76: 4643 mov r3, r8 6f78: 1b5d subs r5, r3, r5 fg.ch.blue = LV_MATH_MAX(tmp, 0); 6f7a: 43e8 mvns r0, r5 6f7c: 17c0 asrs r0, r0, #31 6f7e: 4005 ands r5, r0 6f80: 241f movs r4, #31 6f82: 402c ands r4, r5 if(opa == LV_OPA_COVER) return fg; 6f84: 2aff cmp r2, #255 ; 0xff 6f86: d02b beq.n 6fe0 6f88: 25ff movs r5, #255 ; 0xff 6f8a: 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))); 6f8c: 4354 muls r4, r2 6f8e: 4640 mov r0, r8 6f90: 4368 muls r0, r5 6f92: 1824 adds r4, r4, r0 6f94: 0220 lsls r0, r4, #8 6f96: 1900 adds r0, r0, r4 6f98: 01c0 lsls r0, r0, #7 6f9a: 1900 adds r0, r0, r4 6f9c: 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))); 6f9e: 4356 muls r6, r2 6fa0: 436f muls r7, r5 6fa2: 19f7 adds r7, r6, r7 6fa4: 023e lsls r6, r7, #8 6fa6: 19f6 adds r6, r6, r7 6fa8: 01f6 lsls r6, r6, #7 6faa: 19f6 adds r6, r6, r7 6fac: 00f6 lsls r6, r6, #3 6fae: 0eb6 lsrs r6, r6, #26 6fb0: 0176 lsls r6, r6, #5 6fb2: 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))); 6fb4: 4663 mov r3, ip 6fb6: 435a muls r2, r3 6fb8: 4369 muls r1, r5 6fba: 1852 adds r2, r2, r1 6fbc: 0211 lsls r1, r2, #8 6fbe: 1889 adds r1, r1, r2 6fc0: 01c9 lsls r1, r1, #7 6fc2: 188a adds r2, r1, r2 6fc4: 0dd2 lsrs r2, r2, #23 6fc6: b2d2 uxtb r2, r2 6fc8: 02d2 lsls r2, r2, #11 6fca: 4330 orrs r0, r6 6fcc: 4310 orrs r0, r2 return lv_color_mix(fg, bg, opa); } 6fce: bc04 pop {r2} 6fd0: 4690 mov r8, r2 6fd2: bdf0 pop {r4, r5, r6, r7, pc} if(opa <= LV_OPA_MIN) return bg; 6fd4: 0178 lsls r0, r7, #5 6fd6: 02c9 lsls r1, r1, #11 6fd8: 4303 orrs r3, r0 6fda: 0018 movs r0, r3 6fdc: 4308 orrs r0, r1 6fde: e7f6 b.n 6fce if(opa == LV_OPA_COVER) return fg; 6fe0: 0176 lsls r6, r6, #5 6fe2: 4663 mov r3, ip 6fe4: 02d8 lsls r0, r3, #11 6fe6: 4334 orrs r4, r6 6fe8: 4320 orrs r0, r4 6fea: e7f0 b.n 6fce 00006fec <_lv_blend_fill>: { 6fec: b5f0 push {r4, r5, r6, r7, lr} 6fee: 46de mov lr, fp 6ff0: 4657 mov r7, sl 6ff2: 464e mov r6, r9 6ff4: 4645 mov r5, r8 6ff6: b5e0 push {r5, r6, r7, lr} 6ff8: b093 sub sp, #76 ; 0x4c 6ffa: 0004 movs r4, r0 6ffc: 000d movs r5, r1 6ffe: 4669 mov r1, sp 7000: 828a strh r2, [r1, #20] 7002: 9306 str r3, [sp, #24] 7004: ab1c add r3, sp, #112 ; 0x70 7006: 781f ldrb r7, [r3, #0] 7008: ab1d add r3, sp, #116 ; 0x74 700a: 781b ldrb r3, [r3, #0] 700c: 469b mov fp, r3 700e: ab1e add r3, sp, #120 ; 0x78 7010: 781e ldrb r6, [r3, #0] if(opa < LV_OPA_MIN) return; 7012: 465b mov r3, fp 7014: 2b04 cmp r3, #4 7016: d901 bls.n 701c <_lv_blend_fill+0x30> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 7018: 2f00 cmp r7, #0 701a: d106 bne.n 702a <_lv_blend_fill+0x3e> } 701c: b013 add sp, #76 ; 0x4c 701e: bc3c pop {r2, r3, r4, r5} 7020: 4690 mov r8, r2 7022: 4699 mov r9, r3 7024: 46a2 mov sl, r4 7026: 46ab mov fp, r5 7028: bdf0 pop {r4, r5, r6, r7, pc} lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 702a: 4bbf ldr r3, [pc, #764] ; (7328 <_lv_blend_fill+0x33c>) 702c: 4798 blx r3 702e: 4682 mov sl, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7030: 4bbe ldr r3, [pc, #760] ; (732c <_lv_blend_fill+0x340>) 7032: 4798 blx r3 7034: 4680 mov r8, r0 lv_color_t * disp_buf = vdb->buf_act; 7036: 6883 ldr r3, [r0, #8] 7038: 9304 str r3, [sp, #16] is_common = _lv_area_intersect(&draw_area, clip_area, fill_area); 703a: 002a movs r2, r5 703c: 0021 movs r1, r4 703e: a810 add r0, sp, #64 ; 0x40 7040: 4bbb ldr r3, [pc, #748] ; (7330 <_lv_blend_fill+0x344>) 7042: 4798 blx r3 if(!is_common) return; 7044: 2800 cmp r0, #0 7046: d0e9 beq.n 701c <_lv_blend_fill+0x30> draw_area.x1 -= disp_area->x1; 7048: 4643 mov r3, r8 704a: 8a1a ldrh r2, [r3, #16] 704c: ab10 add r3, sp, #64 ; 0x40 704e: 8819 ldrh r1, [r3, #0] 7050: 1a89 subs r1, r1, r2 7052: b289 uxth r1, r1 7054: 910b str r1, [sp, #44] ; 0x2c 7056: 468c mov ip, r1 7058: b208 sxth r0, r1 705a: 900a str r0, [sp, #40] ; 0x28 705c: 8018 strh r0, [r3, #0] draw_area.y1 -= disp_area->y1; 705e: 4640 mov r0, r8 7060: 8a41 ldrh r1, [r0, #18] 7062: 885d ldrh r5, [r3, #2] 7064: 1a6d subs r5, r5, r1 7066: b22d sxth r5, r5 7068: 805d strh r5, [r3, #2] draw_area.x2 -= disp_area->x1; 706a: 8898 ldrh r0, [r3, #4] 706c: 1a80 subs r0, r0, r2 706e: b280 uxth r0, r0 7070: 8098 strh r0, [r3, #4] draw_area.y2 -= disp_area->y1; 7072: 88da ldrh r2, [r3, #6] 7074: 1a52 subs r2, r2, r1 7076: b212 sxth r2, r2 7078: 4691 mov r9, r2 707a: 80da strh r2, [r3, #6] if(mask && disp->driver.antialiasing == 0) 707c: 9a06 ldr r2, [sp, #24] 707e: 2a00 cmp r2, #0 7080: d018 beq.n 70b4 <_lv_blend_fill+0xc8> 7082: 4653 mov r3, sl 7084: 7a1b ldrb r3, [r3, #8] 7086: 07db lsls r3, r3, #31 7088: d414 bmi.n 70b4 <_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); 708a: 1c41 adds r1, r0, #1 708c: 4663 mov r3, ip 708e: 1ac9 subs r1, r1, r3 7090: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 7092: 2900 cmp r1, #0 7094: dd0e ble.n 70b4 <_lv_blend_fill+0xc8> 7096: 0013 movs r3, r2 7098: 4694 mov ip, r2 709a: 4461 add r1, ip 709c: 2480 movs r4, #128 ; 0x80 709e: 9a0a ldr r2, [sp, #40] ; 0x28 70a0: 4694 mov ip, r2 70a2: 781a ldrb r2, [r3, #0] 70a4: 4294 cmp r4, r2 70a6: 4192 sbcs r2, r2 70a8: 701a strb r2, [r3, #0] 70aa: 3301 adds r3, #1 70ac: 428b cmp r3, r1 70ae: d1f8 bne.n 70a2 <_lv_blend_fill+0xb6> 70b0: 4663 mov r3, ip 70b2: 930a str r3, [sp, #40] ; 0x28 if(disp->driver.set_px_cb) { 70b4: 4653 mov r3, sl 70b6: 695b ldr r3, [r3, #20] 70b8: 2b00 cmp r3, #0 70ba: d100 bne.n 70be <_lv_blend_fill+0xd2> 70bc: e08c b.n 71d8 <_lv_blend_fill+0x1ec> 70be: 466b mov r3, sp 70c0: 8a9e ldrh r6, [r3, #20] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 70c2: 4b99 ldr r3, [pc, #612] ; (7328 <_lv_blend_fill+0x33c>) 70c4: 4798 blx r3 70c6: 0005 movs r5, r0 70c8: 4643 mov r3, r8 70ca: 8a9b ldrh r3, [r3, #20] 70cc: 3301 adds r3, #1 70ce: 4642 mov r2, r8 70d0: 8a12 ldrh r2, [r2, #16] 70d2: 1a9b subs r3, r3, r2 70d4: b21b sxth r3, r3 70d6: 9305 str r3, [sp, #20] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 70d8: 2f01 cmp r7, #1 70da: d046 beq.n 716a <_lv_blend_fill+0x17e> const lv_opa_t * mask_tmp = mask - draw_area->x1; 70dc: aa10 add r2, sp, #64 ; 0x40 70de: 2300 movs r3, #0 70e0: 5ed1 ldrsh r1, [r2, r3] 70e2: 9b06 ldr r3, [sp, #24] 70e4: 1a5b subs r3, r3, r1 70e6: 4698 mov r8, r3 70e8: 8893 ldrh r3, [r2, #4] 70ea: 3301 adds r3, #1 70ec: 1a5b subs r3, r3, r1 70ee: b21b sxth r3, r3 70f0: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 70f2: 2102 movs r1, #2 70f4: 5e53 ldrsh r3, [r2, r1] 70f6: 0019 movs r1, r3 70f8: 9307 str r3, [sp, #28] 70fa: 2306 movs r3, #6 70fc: 5ed3 ldrsh r3, [r2, r3] 70fe: 4299 cmp r1, r3 7100: dd00 ble.n 7104 <_lv_blend_fill+0x118> 7102: e78b b.n 701c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 7104: af10 add r7, sp, #64 ; 0x40 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 7106: ab01 add r3, sp, #4 7108: 469a mov sl, r3 710a: 46b1 mov r9, r6 710c: 4646 mov r6, r8 for(x = draw_area->x1; x <= draw_area->x2; x++) { 710e: 2300 movs r3, #0 7110: 5efc ldrsh r4, [r7, r3] 7112: 2204 movs r2, #4 7114: 5ebb ldrsh r3, [r7, r2] 7116: 429c cmp r4, r3 7118: dc1b bgt.n 7152 <_lv_blend_fill+0x166> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 711a: 466b mov r3, sp 711c: 221c movs r2, #28 711e: 5e9b ldrsh r3, [r3, r2] 7120: 4698 mov r8, r3 7122: 9606 str r6, [sp, #24] 7124: b223 sxth r3, r4 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 7126: 9a06 ldr r2, [sp, #24] 7128: 5d12 ldrb r2, [r2, r4] 712a: 4659 mov r1, fp 712c: 434a muls r2, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, 712e: 0a12 lsrs r2, r2, #8 7130: 9202 str r2, [sp, #8] 7132: 4652 mov r2, sl 7134: 4649 mov r1, r9 7136: 8011 strh r1, [r2, #0] 7138: 4642 mov r2, r8 713a: 9200 str r2, [sp, #0] 713c: 9a05 ldr r2, [sp, #20] 713e: 9904 ldr r1, [sp, #16] 7140: 0028 movs r0, r5 7142: 696e ldr r6, [r5, #20] 7144: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7146: 3401 adds r4, #1 7148: 2204 movs r2, #4 714a: 5ebb ldrsh r3, [r7, r2] 714c: 429c cmp r4, r3 714e: dde9 ble.n 7124 <_lv_blend_fill+0x138> 7150: 9e06 ldr r6, [sp, #24] 7152: 9b08 ldr r3, [sp, #32] 7154: 469c mov ip, r3 7156: 4466 add r6, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 7158: 9b07 ldr r3, [sp, #28] 715a: 3301 adds r3, #1 715c: 001a movs r2, r3 715e: 9307 str r3, [sp, #28] 7160: 2106 movs r1, #6 7162: 5e7b ldrsh r3, [r7, r1] 7164: 429a cmp r2, r3 7166: ddd2 ble.n 710e <_lv_blend_fill+0x122> 7168: e758 b.n 701c <_lv_blend_fill+0x30> for(y = draw_area->y1; y <= draw_area->y2; y++) { 716a: ab10 add r3, sp, #64 ; 0x40 716c: 2102 movs r1, #2 716e: 5e5a ldrsh r2, [r3, r1] 7170: 4692 mov sl, r2 7172: 2206 movs r2, #6 7174: 5e9b ldrsh r3, [r3, r2] 7176: 459a cmp sl, r3 7178: dd00 ble.n 717c <_lv_blend_fill+0x190> 717a: e74f b.n 701c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 717c: ac10 add r4, sp, #64 ; 0x40 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 717e: ab01 add r3, sp, #4 7180: 4699 mov r9, r3 7182: 46b0 mov r8, r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7184: 2300 movs r3, #0 7186: 5ee7 ldrsh r7, [r4, r3] 7188: 2204 movs r2, #4 718a: 5ea3 ldrsh r3, [r4, r2] 718c: 429f cmp r7, r3 718e: dc1b bgt.n 71c8 <_lv_blend_fill+0x1dc> disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, color, opa); 7190: 4653 mov r3, sl 7192: b21e sxth r6, r3 7194: 4642 mov r2, r8 7196: 4669 mov r1, sp 7198: 830a strh r2, [r1, #24] 719a: 46b0 mov r8, r6 719c: b23b sxth r3, r7 719e: 465a mov r2, fp 71a0: 9202 str r2, [sp, #8] 71a2: 464a mov r2, r9 71a4: 4669 mov r1, sp 71a6: 8b09 ldrh r1, [r1, #24] 71a8: 8011 strh r1, [r2, #0] 71aa: 4642 mov r2, r8 71ac: 9200 str r2, [sp, #0] 71ae: 9a05 ldr r2, [sp, #20] 71b0: 9904 ldr r1, [sp, #16] 71b2: 0028 movs r0, r5 71b4: 696e ldr r6, [r5, #20] 71b6: 47b0 blx r6 for(x = draw_area->x1; x <= draw_area->x2; x++) { 71b8: 3701 adds r7, #1 71ba: 2204 movs r2, #4 71bc: 5ea3 ldrsh r3, [r4, r2] 71be: 429f cmp r7, r3 71c0: ddec ble.n 719c <_lv_blend_fill+0x1b0> 71c2: 466b mov r3, sp 71c4: 8b1b ldrh r3, [r3, #24] 71c6: 4698 mov r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 71c8: 2301 movs r3, #1 71ca: 469c mov ip, r3 71cc: 44e2 add sl, ip 71ce: 2206 movs r2, #6 71d0: 5ea3 ldrsh r3, [r4, r2] 71d2: 459a cmp sl, r3 71d4: ddd6 ble.n 7184 <_lv_blend_fill+0x198> 71d6: e721 b.n 701c <_lv_blend_fill+0x30> else if(mode == LV_BLEND_MODE_NORMAL) { 71d8: 2e00 cmp r6, #0 71da: d001 beq.n 71e0 <_lv_blend_fill+0x1f4> 71dc: f000 fc27 bl 7a2e <_lv_blend_fill+0xa42> 71e0: 466b mov r3, sp 71e2: 8a9b ldrh r3, [r3, #20] 71e4: 466a mov r2, sp 71e6: 8413 strh r3, [r2, #32] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 71e8: 4b4f ldr r3, [pc, #316] ; (7328 <_lv_blend_fill+0x33c>) 71ea: 4798 blx r3 71ec: 0004 movs r4, r0 71ee: 4643 mov r3, r8 71f0: 8a9d ldrh r5, [r3, #20] 71f2: 3501 adds r5, #1 71f4: 8a1b ldrh r3, [r3, #16] 71f6: 1aed subs r5, r5, r3 71f8: b22d sxth r5, r5 71fa: a810 add r0, sp, #64 ; 0x40 71fc: 2300 movs r3, #0 71fe: 5ec1 ldrsh r1, [r0, r3] 7200: 8883 ldrh r3, [r0, #4] 7202: 3301 adds r3, #1 7204: 1a5b subs r3, r3, r1 7206: b21b sxth r3, r3 7208: 930b str r3, [sp, #44] ; 0x2c int32_t draw_area_w = lv_area_get_width(draw_area); 720a: 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); 720c: 2306 movs r3, #6 720e: 5ec2 ldrsh r2, [r0, r3] 7210: 2302 movs r3, #2 7212: 5ec3 ldrsh r3, [r0, r3] 7214: 1c56 adds r6, r2, #1 7216: 1af6 subs r6, r6, r3 7218: b236 sxth r6, r6 int32_t draw_area_h = lv_area_get_height(draw_area); 721a: 960e str r6, [sp, #56] ; 0x38 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 721c: 930c str r3, [sp, #48] ; 0x30 721e: 436b muls r3, r5 7220: 185b adds r3, r3, r1 7222: 005b lsls r3, r3, #1 7224: 9904 ldr r1, [sp, #16] 7226: 468c mov ip, r1 7228: 4463 add r3, ip 722a: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 722c: 2f01 cmp r7, #1 722e: d01e beq.n 726e <_lv_blend_fill+0x282> if(opa > LV_OPA_MAX) { 7230: 465b mov r3, fp 7232: 2bfa cmp r3, #250 ; 0xfa 7234: d900 bls.n 7238 <_lv_blend_fill+0x24c> 7236: e127 b.n 7488 <_lv_blend_fill+0x49c> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7238: 9b0c ldr r3, [sp, #48] ; 0x30 723a: 4293 cmp r3, r2 723c: dd00 ble.n 7240 <_lv_blend_fill+0x254> 723e: e6ed b.n 701c <_lv_blend_fill+0x30> last_dest_color.full = disp_buf_first[0].full; 7240: 9b07 ldr r3, [sp, #28] 7242: 881a ldrh r2, [r3, #0] 7244: 466b mov r3, sp 7246: 8a99 ldrh r1, [r3, #20] 7248: 040b lsls r3, r1, #16 724a: 0edb lsrs r3, r3, #27 724c: 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))); 724e: 054b lsls r3, r1, #21 7250: 0e9b lsrs r3, r3, #26 7252: 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))); 7254: 06cb lsls r3, r1, #27 7256: 0edb lsrs r3, r3, #27 7258: 469c mov ip, r3 disp_buf_first += disp_w; 725a: 006b lsls r3, r5, #1 725c: 930f str r3, [sp, #60] ; 0x3c 725e: 0013 movs r3, r2 7260: 2600 movs r6, #0 7262: 2000 movs r0, #0 if(opa_tmp == LV_OPA_COVER) last_res_color = color; 7264: b289 uxth r1, r1 7266: 910e str r1, [sp, #56] ; 0x38 7268: 0002 movs r2, r0 726a: 4699 mov r9, r3 726c: e3d0 b.n 7a10 <_lv_blend_fill+0xa24> if(opa > LV_OPA_MAX) { 726e: 465b mov r3, fp 7270: 2bfa cmp r3, #250 ; 0xfa 7272: d924 bls.n 72be <_lv_blend_fill+0x2d2> if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 7274: 6a63 ldr r3, [r4, #36] ; 0x24 7276: 2b00 cmp r3, #0 7278: d004 beq.n 7284 <_lv_blend_fill+0x298> 727a: a810 add r0, sp, #64 ; 0x40 727c: 4b2d ldr r3, [pc, #180] ; (7334 <_lv_blend_fill+0x348>) 727e: 4798 blx r3 7280: 28f0 cmp r0, #240 ; 0xf0 7282: d812 bhi.n 72aa <_lv_blend_fill+0x2be> disp_buf_first += disp_w; 7284: 006d lsls r5, r5, #1 7286: 2400 movs r4, #0 for(y = 0; y < draw_area_h; y++) { 7288: 9b0e ldr r3, [sp, #56] ; 0x38 728a: 2b00 cmp r3, #0 728c: dc00 bgt.n 7290 <_lv_blend_fill+0x2a4> 728e: e6c5 b.n 701c <_lv_blend_fill+0x30> lv_color_fill(disp_buf_first, color, draw_area_w); 7290: 4e29 ldr r6, [pc, #164] ; (7338 <_lv_blend_fill+0x34c>) 7292: 9f07 ldr r7, [sp, #28] 7294: 9a0b ldr r2, [sp, #44] ; 0x2c 7296: 466b mov r3, sp 7298: 8c19 ldrh r1, [r3, #32] 729a: 0038 movs r0, r7 729c: 47b0 blx r6 disp_buf_first += disp_w; 729e: 197f adds r7, r7, r5 for(y = 0; y < draw_area_h; y++) { 72a0: 3401 adds r4, #1 72a2: 9b0e ldr r3, [sp, #56] ; 0x38 72a4: 42a3 cmp r3, r4 72a6: dcf5 bgt.n 7294 <_lv_blend_fill+0x2a8> 72a8: e6b8 b.n 701c <_lv_blend_fill+0x30> disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color); 72aa: 466b mov r3, sp 72ac: 8a9a ldrh r2, [r3, #20] 72ae: 801a strh r2, [r3, #0] 72b0: 6a66 ldr r6, [r4, #36] ; 0x24 72b2: ab10 add r3, sp, #64 ; 0x40 72b4: 002a movs r2, r5 72b6: 9904 ldr r1, [sp, #16] 72b8: 0020 movs r0, r4 72ba: 47b0 blx r6 72bc: e6ae b.n 701c <_lv_blend_fill+0x30> if(disp->driver.gpu_blend_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) { 72be: 6a23 ldr r3, [r4, #32] 72c0: 2b00 cmp r3, #0 72c2: d03d beq.n 7340 <_lv_blend_fill+0x354> 72c4: a810 add r0, sp, #64 ; 0x40 72c6: 4b1b ldr r3, [pc, #108] ; (7334 <_lv_blend_fill+0x348>) 72c8: 4798 blx r3 72ca: 28f0 cmp r0, #240 ; 0xf0 72cc: d938 bls.n 7340 <_lv_blend_fill+0x354> for(x = 0; x < draw_area_w ; x++) blend_buf[x].full = color.full; 72ce: 9b0a ldr r3, [sp, #40] ; 0x28 72d0: 2b00 cmp r3, #0 72d2: dd09 ble.n 72e8 <_lv_blend_fill+0x2fc> 72d4: 466b mov r3, sp 72d6: 8a9e ldrh r6, [r3, #20] 72d8: 4b18 ldr r3, [pc, #96] ; (733c <_lv_blend_fill+0x350>) 72da: 9a0b ldr r2, [sp, #44] ; 0x2c 72dc: 0052 lsls r2, r2, #1 72de: 189a adds r2, r3, r2 72e0: 801e strh r6, [r3, #0] 72e2: 3302 adds r3, #2 72e4: 4293 cmp r3, r2 72e6: d1fb bne.n 72e0 <_lv_blend_fill+0x2f4> for(y = draw_area->y1; y <= draw_area->y2; y++) { 72e8: ab10 add r3, sp, #64 ; 0x40 72ea: 2202 movs r2, #2 72ec: 5e9e ldrsh r6, [r3, r2] 72ee: 2206 movs r2, #6 72f0: 5e9b ldrsh r3, [r3, r2] 72f2: 429e cmp r6, r3 72f4: dd00 ble.n 72f8 <_lv_blend_fill+0x30c> 72f6: e691 b.n 701c <_lv_blend_fill+0x30> disp_buf_first += disp_w; 72f8: 006d lsls r5, r5, #1 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 72fa: 4b10 ldr r3, [pc, #64] ; (733c <_lv_blend_fill+0x350>) 72fc: 4698 mov r8, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 72fe: af10 add r7, sp, #64 ; 0x40 7300: 46aa mov sl, r5 disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, blend_buf, draw_area_w, opa); 7302: 465b mov r3, fp 7304: 9300 str r3, [sp, #0] 7306: 9b0b ldr r3, [sp, #44] ; 0x2c 7308: 4642 mov r2, r8 730a: 9907 ldr r1, [sp, #28] 730c: 4689 mov r9, r1 730e: 0020 movs r0, r4 7310: 6a25 ldr r5, [r4, #32] 7312: 47a8 blx r5 disp_buf_first += disp_w; 7314: 46cc mov ip, r9 7316: 44d4 add ip, sl 7318: 4663 mov r3, ip 731a: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 731c: 3601 adds r6, #1 731e: 2206 movs r2, #6 7320: 5ebb ldrsh r3, [r7, r2] 7322: 429e cmp r6, r3 7324: dded ble.n 7302 <_lv_blend_fill+0x316> 7326: e679 b.n 701c <_lv_blend_fill+0x30> 7328: 00005591 .word 0x00005591 732c: 00010e75 .word 0x00010e75 7330: 0001140b .word 0x0001140b 7334: 000113ef .word 0x000113ef 7338: 00011a31 .word 0x00011a31 733c: 20002700 .word 0x20002700 lv_color_t last_dest_color = LV_COLOR_BLACK; 7340: 2300 movs r3, #0 7342: 466a mov r2, sp 7344: 8313 strh r3, [r2, #24] 7346: 8a92 ldrh r2, [r2, #20] 7348: 06d3 lsls r3, r2, #27 734a: 0edb lsrs r3, r3, #27 734c: 469c mov ip, r3 734e: 1c13 adds r3, r2, #0 7350: 001a movs r2, r3 7352: 0557 lsls r7, r2, #21 7354: 0ebf lsrs r7, r7, #26 7356: 041c lsls r4, r3, #16 7358: 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))); 735a: 465b mov r3, fp 735c: 4363 muls r3, r4 735e: 0218 lsls r0, r3, #8 7360: 18c0 adds r0, r0, r3 7362: 01c0 lsls r0, r0, #7 7364: 18c0 adds r0, r0, r3 7366: 0dc0 lsrs r0, r0, #23 7368: 231f movs r3, #31 736a: 4698 mov r8, r3 736c: 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))); 736e: 465a mov r2, fp 7370: 437a muls r2, r7 7372: 0213 lsls r3, r2, #8 7374: 189b adds r3, r3, r2 7376: 01db lsls r3, r3, #7 7378: 189a adds r2, r3, r2 737a: 00d2 lsls r2, r2, #3 737c: 0e93 lsrs r3, r2, #26 737e: 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))); 7380: 4659 mov r1, fp 7382: 4663 mov r3, ip 7384: 4359 muls r1, r3 7386: 020b lsls r3, r1, #8 7388: 185b adds r3, r3, r1 738a: 01db lsls r3, r3, #7 738c: 1859 adds r1, r3, r1 738e: 0dc9 lsrs r1, r1, #23 7390: 4643 mov r3, r8 7392: 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; 7394: 465b mov r3, fp 7396: 466a mov r2, sp 7398: 8213 strh r3, [r2, #16] 739a: 8a13 ldrh r3, [r2, #16] 739c: 435c muls r4, r3 739e: 9405 str r4, [sp, #20] out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 73a0: 435f muls r7, r3 73a2: 9708 str r7, [sp, #32] out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 73a4: 4664 mov r4, ip 73a6: 435c muls r4, r3 73a8: 9409 str r4, [sp, #36] ; 0x24 lv_opa_t opa_inv = 255 - opa; 73aa: 465b mov r3, fp 73ac: 43df mvns r7, r3 73ae: b2ff uxtb r7, r7 for(y = 0; y < draw_area_h; y++) { 73b0: 9b0e ldr r3, [sp, #56] ; 0x38 73b2: 2b00 cmp r3, #0 73b4: dc00 bgt.n 73b8 <_lv_blend_fill+0x3cc> 73b6: e631 b.n 701c <_lv_blend_fill+0x30> disp_buf_first += disp_w; 73b8: 006b lsls r3, r5, #1 73ba: 930e str r3, [sp, #56] ; 0x38 73bc: 1c73 adds r3, r6, #1 73be: 930d str r3, [sp, #52] ; 0x34 73c0: 9b0b ldr r3, [sp, #44] ; 0x2c 73c2: 005b lsls r3, r3, #1 73c4: 930f str r3, [sp, #60] ; 0x3c 73c6: 2301 movs r3, #1 73c8: 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); 73ca: b2bf uxth r7, r7 73cc: 261f movs r6, #31 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 73ce: 333e adds r3, #62 ; 0x3e 73d0: 930b str r3, [sp, #44] ; 0x2c disp_buf_first[x] = last_res_color; 73d2: 4b63 ldr r3, [pc, #396] ; (7560 <_lv_blend_fill+0x574>) 73d4: 4698 mov r8, r3 73d6: 2307 movs r3, #7 73d8: 4699 mov r9, r3 73da: 4652 mov r2, sl 73dc: e048 b.n 7470 <_lv_blend_fill+0x484> 73de: 782b ldrb r3, [r5, #0] 73e0: 43b3 bics r3, r6 73e2: 430b orrs r3, r1 73e4: 702b strb r3, [r5, #0] 73e6: 9b04 ldr r3, [sp, #16] 73e8: 015b lsls r3, r3, #5 73ea: 882f ldrh r7, [r5, #0] 73ec: 4642 mov r2, r8 73ee: 4017 ands r7, r2 73f0: 433b orrs r3, r7 73f2: 802b strh r3, [r5, #0] 73f4: 00c7 lsls r7, r0, #3 73f6: 0a1b lsrs r3, r3, #8 73f8: 464a mov r2, r9 73fa: 4013 ands r3, r2 73fc: 431f orrs r7, r3 73fe: 706f strb r7, [r5, #1] 7400: 3402 adds r4, #2 for(x = 0; x < draw_area_w; x++) { 7402: 4554 cmp r4, sl 7404: d026 beq.n 7454 <_lv_blend_fill+0x468> if(last_dest_color.full != disp_buf_first[x].full) { 7406: 0025 movs r5, r4 7408: 466b mov r3, sp 740a: 8b1b ldrh r3, [r3, #24] 740c: 8827 ldrh r7, [r4, #0] 740e: 42bb cmp r3, r7 7410: d0e5 beq.n 73de <_lv_blend_fill+0x3f2> last_dest_color = disp_buf_first[x]; 7412: 466b mov r3, sp 7414: 831f strh r7, [r3, #24] LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 7416: 7860 ldrb r0, [r4, #1] 7418: 08c0 lsrs r0, r0, #3 741a: 4663 mov r3, ip 741c: 4358 muls r0, r3 741e: 9b05 ldr r3, [sp, #20] 7420: 469b mov fp, r3 7422: 4458 add r0, fp 7424: 0a00 lsrs r0, r0, #8 7426: 4030 ands r0, r6 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 7428: 057a lsls r2, r7, #21 742a: 0e92 lsrs r2, r2, #26 742c: 4663 mov r3, ip 742e: 435a muls r2, r3 7430: 9b08 ldr r3, [sp, #32] 7432: 469b mov fp, r3 7434: 445a add r2, fp 7436: 0a12 lsrs r2, r2, #8 7438: 9b0b ldr r3, [sp, #44] ; 0x2c 743a: 401a ands r2, r3 743c: 9204 str r2, [sp, #16] LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 743e: 7821 ldrb r1, [r4, #0] 7440: 06c9 lsls r1, r1, #27 7442: 0ec9 lsrs r1, r1, #27 7444: 4663 mov r3, ip 7446: 4359 muls r1, r3 7448: 9b09 ldr r3, [sp, #36] ; 0x24 744a: 469b mov fp, r3 744c: 4459 add r1, fp 744e: 0a09 lsrs r1, r1, #8 7450: 4031 ands r1, r6 7452: e7c4 b.n 73de <_lv_blend_fill+0x3f2> 7454: 9a04 ldr r2, [sp, #16] 7456: 4667 mov r7, ip disp_buf_first += disp_w; 7458: 9b07 ldr r3, [sp, #28] 745a: 9c0e ldr r4, [sp, #56] ; 0x38 745c: 46a4 mov ip, r4 745e: 4463 add r3, ip 7460: 9307 str r3, [sp, #28] 7462: 9b0c ldr r3, [sp, #48] ; 0x30 7464: 3301 adds r3, #1 7466: 930c str r3, [sp, #48] ; 0x30 for(y = 0; y < draw_area_h; y++) { 7468: 9c0d ldr r4, [sp, #52] ; 0x34 746a: 429c cmp r4, r3 746c: d100 bne.n 7470 <_lv_blend_fill+0x484> 746e: e5d5 b.n 701c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w; x++) { 7470: 9b0a ldr r3, [sp, #40] ; 0x28 7472: 2b00 cmp r3, #0 7474: ddf0 ble.n 7458 <_lv_blend_fill+0x46c> 7476: 9b07 ldr r3, [sp, #28] 7478: 001c movs r4, r3 747a: 9d0f ldr r5, [sp, #60] ; 0x3c 747c: 46aa mov sl, r5 747e: 4453 add r3, sl 7480: 9204 str r2, [sp, #16] 7482: 469a mov sl, r3 7484: 46bc mov ip, r7 7486: e7be b.n 7406 <_lv_blend_fill+0x41a> for(y = 0; y < draw_area_h; y++) { 7488: 9b0e ldr r3, [sp, #56] ; 0x38 748a: 2b00 cmp r3, #0 748c: dc00 bgt.n 7490 <_lv_blend_fill+0x4a4> 748e: e5c5 b.n 701c <_lv_blend_fill+0x30> int32_t x_end4 = draw_area_w - 4; 7490: 9b0b ldr r3, [sp, #44] ; 0x2c 7492: 3b04 subs r3, #4 7494: 9305 str r3, [sp, #20] disp_buf_first += disp_w; 7496: 006b lsls r3, r5, #1 7498: 930f str r3, [sp, #60] ; 0x3c 749a: 9b06 ldr r3, [sp, #24] 749c: 9309 str r3, [sp, #36] ; 0x24 749e: 2300 movs r3, #0 74a0: 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))); 74a2: 466b mov r3, sp 74a4: 8c1a ldrh r2, [r3, #32] 74a6: 0417 lsls r7, r2, #16 74a8: 0efb lsrs r3, r7, #27 74aa: 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))); 74ac: 0553 lsls r3, r2, #21 74ae: 0e9b lsrs r3, r3, #26 74b0: 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))); 74b2: 06d3 lsls r3, r2, #27 74b4: 0edb lsrs r3, r3, #27 74b6: 469b mov fp, r3 74b8: e213 b.n 78e2 <_lv_blend_fill+0x8f6> FILL_NORMAL_MASK_PX(x, color) 74ba: 466a mov r2, sp 74bc: 8c12 ldrh r2, [r2, #32] 74be: 8032 strh r2, [r6, #0] 74c0: 3401 adds r4, #1 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 74c2: 3301 adds r3, #1 74c4: 4598 cmp r8, r3 74c6: dc01 bgt.n 74cc <_lv_blend_fill+0x4e0> 74c8: f000 fbf1 bl 7cae <_lv_blend_fill+0xcc2> 74cc: 3602 adds r6, #2 74ce: 07a2 lsls r2, r4, #30 74d0: d03f beq.n 7552 <_lv_blend_fill+0x566> FILL_NORMAL_MASK_PX(x, color) 74d2: 7820 ldrb r0, [r4, #0] 74d4: 2800 cmp r0, #0 74d6: d0f3 beq.n 74c0 <_lv_blend_fill+0x4d4> 74d8: 28ff cmp r0, #255 ; 0xff 74da: d0ee beq.n 74ba <_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))); 74dc: 22ff movs r2, #255 ; 0xff 74de: 1a15 subs r5, r2, r0 74e0: 9f04 ldr r7, [sp, #16] 74e2: 4347 muls r7, r0 74e4: 7871 ldrb r1, [r6, #1] 74e6: 08c9 lsrs r1, r1, #3 74e8: 4369 muls r1, r5 74ea: 187f adds r7, r7, r1 74ec: 023a lsls r2, r7, #8 74ee: 19d2 adds r2, r2, r7 74f0: 01d2 lsls r2, r2, #7 74f2: 19d2 adds r2, r2, r7 74f4: 0dd2 lsrs r2, r2, #23 74f6: 4649 mov r1, r9 74f8: 400a ands r2, r1 74fa: 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))); 74fc: 4657 mov r7, sl 74fe: 4347 muls r7, r0 7500: 8831 ldrh r1, [r6, #0] 7502: 0549 lsls r1, r1, #21 7504: 0e89 lsrs r1, r1, #26 7506: 4369 muls r1, r5 7508: 187f adds r7, r7, r1 750a: 0239 lsls r1, r7, #8 750c: 19c9 adds r1, r1, r7 750e: 01c9 lsls r1, r1, #7 7510: 19c9 adds r1, r1, r7 7512: 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))); 7514: 465f mov r7, fp 7516: 4378 muls r0, r7 7518: 7837 ldrb r7, [r6, #0] 751a: 06fa lsls r2, r7, #27 751c: 0ed2 lsrs r2, r2, #27 751e: 4355 muls r5, r2 7520: 1945 adds r5, r0, r5 7522: 0228 lsls r0, r5, #8 7524: 1940 adds r0, r0, r5 7526: 01c0 lsls r0, r0, #7 7528: 1940 adds r0, r0, r5 752a: 0dc0 lsrs r0, r0, #23 752c: 464a mov r2, r9 752e: 4010 ands r0, r2 7530: 4397 bics r7, r2 7532: 4338 orrs r0, r7 7534: 7030 strb r0, [r6, #0] 7536: 0e89 lsrs r1, r1, #26 7538: 0148 lsls r0, r1, #5 753a: 8831 ldrh r1, [r6, #0] 753c: 4d08 ldr r5, [pc, #32] ; (7560 <_lv_blend_fill+0x574>) 753e: 4029 ands r1, r5 7540: 4301 orrs r1, r0 7542: 8031 strh r1, [r6, #0] 7544: 9a06 ldr r2, [sp, #24] 7546: 00d2 lsls r2, r2, #3 7548: 0549 lsls r1, r1, #21 754a: 0f49 lsrs r1, r1, #29 754c: 430a orrs r2, r1 754e: 7072 strb r2, [r6, #1] 7550: e7b6 b.n 74c0 <_lv_blend_fill+0x4d4> 7552: 0022 movs r2, r4 for(; x <= x_end4; x += 4) { 7554: 9905 ldr r1, [sp, #20] 7556: 4299 cmp r1, r3 7558: db00 blt.n 755c <_lv_blend_fill+0x570> 755a: e3ad b.n 7cb8 <_lv_blend_fill+0xccc> 755c: e15e b.n 781c <_lv_blend_fill+0x830> 755e: 46c0 nop ; (mov r8, r8) 7560: fffff81f .word 0xfffff81f disp_buf_first[x] = color; 7564: 4669 mov r1, sp 7566: 8c09 ldrh r1, [r1, #32] 7568: 8021 strh r1, [r4, #0] disp_buf_first[x + 1] = color; 756a: 8061 strh r1, [r4, #2] disp_buf_first[x + 2] = color; 756c: 80a1 strh r1, [r4, #4] disp_buf_first[x + 3] = color; 756e: 80e1 strh r1, [r4, #6] mask32++; 7570: 3204 adds r2, #4 for(; x <= x_end4; x += 4) { 7572: 3304 adds r3, #4 7574: 3408 adds r4, #8 7576: 9905 ldr r1, [sp, #20] 7578: 4299 cmp r1, r3 757a: da00 bge.n 757e <_lv_blend_fill+0x592> 757c: e149 b.n 7812 <_lv_blend_fill+0x826> if(*mask32) { 757e: 6811 ldr r1, [r2, #0] 7580: 2900 cmp r1, #0 7582: d0f5 beq.n 7570 <_lv_blend_fill+0x584> if((*mask32) == 0xFFFFFFFF) { 7584: 3101 adds r1, #1 7586: d0ed beq.n 7564 <_lv_blend_fill+0x578> FILL_NORMAL_MASK_PX(x, color) 7588: 7815 ldrb r5, [r2, #0] 758a: 2d00 cmp r5, #0 758c: d046 beq.n 761c <_lv_blend_fill+0x630> 758e: 2dff cmp r5, #255 ; 0xff 7590: d100 bne.n 7594 <_lv_blend_fill+0x5a8> 7592: e12e b.n 77f2 <_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))); 7594: 21ff movs r1, #255 ; 0xff 7596: 1b49 subs r1, r1, r5 7598: 468c mov ip, r1 759a: 9804 ldr r0, [sp, #16] 759c: 4368 muls r0, r5 759e: 7861 ldrb r1, [r4, #1] 75a0: 08c9 lsrs r1, r1, #3 75a2: 4666 mov r6, ip 75a4: 4371 muls r1, r6 75a6: 1840 adds r0, r0, r1 75a8: 0201 lsls r1, r0, #8 75aa: 1809 adds r1, r1, r0 75ac: 01c9 lsls r1, r1, #7 75ae: 1809 adds r1, r1, r0 75b0: 0dc9 lsrs r1, r1, #23 75b2: 4039 ands r1, r7 75b4: 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))); 75b6: 0028 movs r0, r5 75b8: 9906 ldr r1, [sp, #24] 75ba: 4348 muls r0, r1 75bc: 4681 mov r9, r0 75be: 8820 ldrh r0, [r4, #0] 75c0: 0540 lsls r0, r0, #21 75c2: 0e80 lsrs r0, r0, #26 75c4: 4370 muls r0, r6 75c6: 4481 add r9, r0 75c8: 4648 mov r0, r9 75ca: 0200 lsls r0, r0, #8 75cc: 4448 add r0, r9 75ce: 01c0 lsls r0, r0, #7 75d0: 4448 add r0, r9 75d2: 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))); 75d4: 465e mov r6, fp 75d6: 4375 muls r5, r6 75d8: 7826 ldrb r6, [r4, #0] 75da: 46b0 mov r8, r6 75dc: 06f6 lsls r6, r6, #27 75de: 0ef6 lsrs r6, r6, #27 75e0: 46b1 mov r9, r6 75e2: 4666 mov r6, ip 75e4: 4649 mov r1, r9 75e6: 434e muls r6, r1 75e8: 46b4 mov ip, r6 75ea: 44ac add ip, r5 75ec: 4661 mov r1, ip 75ee: 020d lsls r5, r1, #8 75f0: 4465 add r5, ip 75f2: 01ed lsls r5, r5, #7 75f4: 4465 add r5, ip 75f6: 0ded lsrs r5, r5, #23 75f8: 403d ands r5, r7 75fa: 4646 mov r6, r8 75fc: 43be bics r6, r7 75fe: 4335 orrs r5, r6 7600: 7025 strb r5, [r4, #0] 7602: 0e80 lsrs r0, r0, #26 7604: 0145 lsls r5, r0, #5 7606: 8820 ldrh r0, [r4, #0] 7608: 49be ldr r1, [pc, #760] ; (7904 <_lv_blend_fill+0x918>) 760a: 4008 ands r0, r1 760c: 4328 orrs r0, r5 760e: 8020 strh r0, [r4, #0] 7610: 4651 mov r1, sl 7612: 00c9 lsls r1, r1, #3 7614: 0540 lsls r0, r0, #21 7616: 0f40 lsrs r0, r0, #29 7618: 4301 orrs r1, r0 761a: 7061 strb r1, [r4, #1] FILL_NORMAL_MASK_PX(x + 1, color) 761c: 7855 ldrb r5, [r2, #1] 761e: 2d00 cmp r5, #0 7620: d04a beq.n 76b8 <_lv_blend_fill+0x6cc> 7622: 2dff cmp r5, #255 ; 0xff 7624: d100 bne.n 7628 <_lv_blend_fill+0x63c> 7626: e0e8 b.n 77fa <_lv_blend_fill+0x80e> 7628: 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))); 762a: 20ff movs r0, #255 ; 0xff 762c: 1b40 subs r0, r0, r5 762e: 4684 mov ip, r0 7630: 9804 ldr r0, [sp, #16] 7632: 4368 muls r0, r5 7634: 4689 mov r9, r1 7636: 78e1 ldrb r1, [r4, #3] 7638: 08c9 lsrs r1, r1, #3 763a: 4666 mov r6, ip 763c: 4371 muls r1, r6 763e: 1840 adds r0, r0, r1 7640: 0201 lsls r1, r0, #8 7642: 1809 adds r1, r1, r0 7644: 01c9 lsls r1, r1, #7 7646: 1809 adds r1, r1, r0 7648: 0dc9 lsrs r1, r1, #23 764a: 4039 ands r1, r7 764c: 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))); 764e: 0028 movs r0, r5 7650: 9e06 ldr r6, [sp, #24] 7652: 4370 muls r0, r6 7654: 4682 mov sl, r0 7656: 8860 ldrh r0, [r4, #2] 7658: 0540 lsls r0, r0, #21 765a: 0e80 lsrs r0, r0, #26 765c: 4666 mov r6, ip 765e: 4370 muls r0, r6 7660: 4482 add sl, r0 7662: 4650 mov r0, sl 7664: 0200 lsls r0, r0, #8 7666: 4450 add r0, sl 7668: 01c0 lsls r0, r0, #7 766a: 4450 add r0, sl 766c: 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))); 766e: 465e mov r6, fp 7670: 4375 muls r5, r6 7672: 78a6 ldrb r6, [r4, #2] 7674: 46b0 mov r8, r6 7676: 06f6 lsls r6, r6, #27 7678: 0ef6 lsrs r6, r6, #27 767a: 46b2 mov sl, r6 767c: 4666 mov r6, ip 767e: 4651 mov r1, sl 7680: 434e muls r6, r1 7682: 46b4 mov ip, r6 7684: 44ac add ip, r5 7686: 4661 mov r1, ip 7688: 020d lsls r5, r1, #8 768a: 4465 add r5, ip 768c: 01ed lsls r5, r5, #7 768e: 4465 add r5, ip 7690: 0ded lsrs r5, r5, #23 7692: 403d ands r5, r7 7694: 4646 mov r6, r8 7696: 43be bics r6, r7 7698: 4335 orrs r5, r6 769a: 70a5 strb r5, [r4, #2] 769c: 0e80 lsrs r0, r0, #26 769e: 0140 lsls r0, r0, #5 76a0: 8865 ldrh r5, [r4, #2] 76a2: 4998 ldr r1, [pc, #608] ; (7904 <_lv_blend_fill+0x918>) 76a4: 400d ands r5, r1 76a6: 4328 orrs r0, r5 76a8: 8060 strh r0, [r4, #2] 76aa: 990c ldr r1, [sp, #48] ; 0x30 76ac: 00c9 lsls r1, r1, #3 76ae: 0540 lsls r0, r0, #21 76b0: 0f40 lsrs r0, r0, #29 76b2: 4301 orrs r1, r0 76b4: 4648 mov r0, r9 76b6: 7041 strb r1, [r0, #1] FILL_NORMAL_MASK_PX(x + 2, color) 76b8: 7895 ldrb r5, [r2, #2] 76ba: 2d00 cmp r5, #0 76bc: d04a beq.n 7754 <_lv_blend_fill+0x768> 76be: 2dff cmp r5, #255 ; 0xff 76c0: d100 bne.n 76c4 <_lv_blend_fill+0x6d8> 76c2: e09e b.n 7802 <_lv_blend_fill+0x816> 76c4: 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))); 76c6: 20ff movs r0, #255 ; 0xff 76c8: 1b40 subs r0, r0, r5 76ca: 4684 mov ip, r0 76cc: 9804 ldr r0, [sp, #16] 76ce: 4368 muls r0, r5 76d0: 4689 mov r9, r1 76d2: 7961 ldrb r1, [r4, #5] 76d4: 08c9 lsrs r1, r1, #3 76d6: 4666 mov r6, ip 76d8: 4371 muls r1, r6 76da: 1840 adds r0, r0, r1 76dc: 0201 lsls r1, r0, #8 76de: 1809 adds r1, r1, r0 76e0: 01c9 lsls r1, r1, #7 76e2: 1809 adds r1, r1, r0 76e4: 0dc9 lsrs r1, r1, #23 76e6: 4039 ands r1, r7 76e8: 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))); 76ea: 0028 movs r0, r5 76ec: 9e06 ldr r6, [sp, #24] 76ee: 4370 muls r0, r6 76f0: 4682 mov sl, r0 76f2: 88a0 ldrh r0, [r4, #4] 76f4: 0540 lsls r0, r0, #21 76f6: 0e80 lsrs r0, r0, #26 76f8: 4666 mov r6, ip 76fa: 4370 muls r0, r6 76fc: 4482 add sl, r0 76fe: 4650 mov r0, sl 7700: 0200 lsls r0, r0, #8 7702: 4450 add r0, sl 7704: 01c0 lsls r0, r0, #7 7706: 4450 add r0, sl 7708: 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))); 770a: 465e mov r6, fp 770c: 4375 muls r5, r6 770e: 7926 ldrb r6, [r4, #4] 7710: 46b0 mov r8, r6 7712: 06f6 lsls r6, r6, #27 7714: 0ef6 lsrs r6, r6, #27 7716: 46b2 mov sl, r6 7718: 4666 mov r6, ip 771a: 4651 mov r1, sl 771c: 434e muls r6, r1 771e: 46b4 mov ip, r6 7720: 44ac add ip, r5 7722: 4661 mov r1, ip 7724: 020d lsls r5, r1, #8 7726: 4465 add r5, ip 7728: 01ed lsls r5, r5, #7 772a: 4465 add r5, ip 772c: 0ded lsrs r5, r5, #23 772e: 403d ands r5, r7 7730: 4646 mov r6, r8 7732: 43be bics r6, r7 7734: 4335 orrs r5, r6 7736: 7125 strb r5, [r4, #4] 7738: 0e80 lsrs r0, r0, #26 773a: 0140 lsls r0, r0, #5 773c: 88a5 ldrh r5, [r4, #4] 773e: 4971 ldr r1, [pc, #452] ; (7904 <_lv_blend_fill+0x918>) 7740: 400d ands r5, r1 7742: 4328 orrs r0, r5 7744: 80a0 strh r0, [r4, #4] 7746: 990c ldr r1, [sp, #48] ; 0x30 7748: 00c9 lsls r1, r1, #3 774a: 0540 lsls r0, r0, #21 774c: 0f40 lsrs r0, r0, #29 774e: 4301 orrs r1, r0 7750: 4648 mov r0, r9 7752: 7041 strb r1, [r0, #1] FILL_NORMAL_MASK_PX(x + 3, color) 7754: 78d5 ldrb r5, [r2, #3] 7756: 2d00 cmp r5, #0 7758: d100 bne.n 775c <_lv_blend_fill+0x770> 775a: e709 b.n 7570 <_lv_blend_fill+0x584> 775c: 2dff cmp r5, #255 ; 0xff 775e: d054 beq.n 780a <_lv_blend_fill+0x81e> 7760: 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))); 7762: 20ff movs r0, #255 ; 0xff 7764: 1b40 subs r0, r0, r5 7766: 4684 mov ip, r0 7768: 9804 ldr r0, [sp, #16] 776a: 4368 muls r0, r5 776c: 4689 mov r9, r1 776e: 79e1 ldrb r1, [r4, #7] 7770: 08c9 lsrs r1, r1, #3 7772: 4666 mov r6, ip 7774: 4371 muls r1, r6 7776: 1840 adds r0, r0, r1 7778: 0201 lsls r1, r0, #8 777a: 1809 adds r1, r1, r0 777c: 01c9 lsls r1, r1, #7 777e: 1809 adds r1, r1, r0 7780: 0dc9 lsrs r1, r1, #23 7782: 4039 ands r1, r7 7784: 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))); 7786: 0028 movs r0, r5 7788: 9e06 ldr r6, [sp, #24] 778a: 4370 muls r0, r6 778c: 4682 mov sl, r0 778e: 88e0 ldrh r0, [r4, #6] 7790: 0540 lsls r0, r0, #21 7792: 0e80 lsrs r0, r0, #26 7794: 4666 mov r6, ip 7796: 4370 muls r0, r6 7798: 4482 add sl, r0 779a: 4650 mov r0, sl 779c: 0200 lsls r0, r0, #8 779e: 4450 add r0, sl 77a0: 01c0 lsls r0, r0, #7 77a2: 4450 add r0, sl 77a4: 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))); 77a6: 465e mov r6, fp 77a8: 4375 muls r5, r6 77aa: 79a6 ldrb r6, [r4, #6] 77ac: 46b0 mov r8, r6 77ae: 06f6 lsls r6, r6, #27 77b0: 0ef6 lsrs r6, r6, #27 77b2: 46b2 mov sl, r6 77b4: 4666 mov r6, ip 77b6: 4651 mov r1, sl 77b8: 434e muls r6, r1 77ba: 46b4 mov ip, r6 77bc: 44ac add ip, r5 77be: 4661 mov r1, ip 77c0: 020d lsls r5, r1, #8 77c2: 4465 add r5, ip 77c4: 01ed lsls r5, r5, #7 77c6: 4465 add r5, ip 77c8: 0ded lsrs r5, r5, #23 77ca: 403d ands r5, r7 77cc: 4646 mov r6, r8 77ce: 43be bics r6, r7 77d0: 4335 orrs r5, r6 77d2: 71a5 strb r5, [r4, #6] 77d4: 0e80 lsrs r0, r0, #26 77d6: 0140 lsls r0, r0, #5 77d8: 88e5 ldrh r5, [r4, #6] 77da: 494a ldr r1, [pc, #296] ; (7904 <_lv_blend_fill+0x918>) 77dc: 400d ands r5, r1 77de: 4328 orrs r0, r5 77e0: 80e0 strh r0, [r4, #6] 77e2: 990c ldr r1, [sp, #48] ; 0x30 77e4: 00c9 lsls r1, r1, #3 77e6: 0540 lsls r0, r0, #21 77e8: 0f40 lsrs r0, r0, #29 77ea: 4301 orrs r1, r0 77ec: 4648 mov r0, r9 77ee: 7041 strb r1, [r0, #1] 77f0: e6be b.n 7570 <_lv_blend_fill+0x584> FILL_NORMAL_MASK_PX(x, color) 77f2: 4669 mov r1, sp 77f4: 8c09 ldrh r1, [r1, #32] 77f6: 8021 strh r1, [r4, #0] 77f8: e710 b.n 761c <_lv_blend_fill+0x630> FILL_NORMAL_MASK_PX(x + 1, color) 77fa: 4669 mov r1, sp 77fc: 8c09 ldrh r1, [r1, #32] 77fe: 8061 strh r1, [r4, #2] 7800: e75a b.n 76b8 <_lv_blend_fill+0x6cc> FILL_NORMAL_MASK_PX(x + 2, color) 7802: 4669 mov r1, sp 7804: 8c09 ldrh r1, [r1, #32] 7806: 80a1 strh r1, [r4, #4] 7808: e7a4 b.n 7754 <_lv_blend_fill+0x768> FILL_NORMAL_MASK_PX(x + 3, color) 780a: 4669 mov r1, sp 780c: 8c09 ldrh r1, [r1, #32] 780e: 80e1 strh r1, [r4, #6] 7810: e6ae b.n 7570 <_lv_blend_fill+0x584> 7812: 9906 ldr r1, [sp, #24] 7814: 468a mov sl, r1 for(; x < draw_area_w ; x++) { 7816: 990a ldr r1, [sp, #40] ; 0x28 7818: 4299 cmp r1, r3 781a: dd50 ble.n 78be <_lv_blend_fill+0x8d2> 781c: 005e lsls r6, r3, #1 781e: 9907 ldr r1, [sp, #28] 7820: 468c mov ip, r1 7822: 4466 add r6, ip FILL_NORMAL_MASK_PX(x, color) 7824: 1ad2 subs r2, r2, r3 7826: 4690 mov r8, r2 7828: 9a0a ldr r2, [sp, #40] ; 0x28 782a: 4691 mov r9, r2 782c: e006 b.n 783c <_lv_blend_fill+0x850> 782e: 466a mov r2, sp 7830: 8c12 ldrh r2, [r2, #32] 7832: 8032 strh r2, [r6, #0] for(; x < draw_area_w ; x++) { 7834: 3301 adds r3, #1 7836: 3602 adds r6, #2 7838: 4599 cmp r9, r3 783a: dd40 ble.n 78be <_lv_blend_fill+0x8d2> FILL_NORMAL_MASK_PX(x, color) 783c: 4642 mov r2, r8 783e: 5cd0 ldrb r0, [r2, r3] 7840: 2800 cmp r0, #0 7842: d0f7 beq.n 7834 <_lv_blend_fill+0x848> 7844: 28ff cmp r0, #255 ; 0xff 7846: d0f2 beq.n 782e <_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))); 7848: 22ff movs r2, #255 ; 0xff 784a: 1a14 subs r4, r2, r0 784c: 9a04 ldr r2, [sp, #16] 784e: 4342 muls r2, r0 7850: 7871 ldrb r1, [r6, #1] 7852: 08c9 lsrs r1, r1, #3 7854: 4361 muls r1, r4 7856: 1851 adds r1, r2, r1 7858: 020a lsls r2, r1, #8 785a: 1852 adds r2, r2, r1 785c: 01d2 lsls r2, r2, #7 785e: 1852 adds r2, r2, r1 7860: 0dd2 lsrs r2, r2, #23 7862: 271f movs r7, #31 7864: 403a ands r2, r7 7866: 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))); 7868: 4655 mov r5, sl 786a: 4345 muls r5, r0 786c: 8831 ldrh r1, [r6, #0] 786e: 0549 lsls r1, r1, #21 7870: 0e89 lsrs r1, r1, #26 7872: 4361 muls r1, r4 7874: 186d adds r5, r5, r1 7876: 0229 lsls r1, r5, #8 7878: 1949 adds r1, r1, r5 787a: 01c9 lsls r1, r1, #7 787c: 1949 adds r1, r1, r5 787e: 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))); 7880: 465d mov r5, fp 7882: 4368 muls r0, r5 7884: 7835 ldrb r5, [r6, #0] 7886: 06ea lsls r2, r5, #27 7888: 0ed2 lsrs r2, r2, #27 788a: 4354 muls r4, r2 788c: 1904 adds r4, r0, r4 788e: 0220 lsls r0, r4, #8 7890: 1900 adds r0, r0, r4 7892: 01c0 lsls r0, r0, #7 7894: 1900 adds r0, r0, r4 7896: 0dc0 lsrs r0, r0, #23 7898: 4007 ands r7, r0 789a: 201f movs r0, #31 789c: 4385 bics r5, r0 789e: 432f orrs r7, r5 78a0: 7037 strb r7, [r6, #0] 78a2: 0e89 lsrs r1, r1, #26 78a4: 0148 lsls r0, r1, #5 78a6: 8831 ldrh r1, [r6, #0] 78a8: 4c16 ldr r4, [pc, #88] ; (7904 <_lv_blend_fill+0x918>) 78aa: 4021 ands r1, r4 78ac: 4301 orrs r1, r0 78ae: 8031 strh r1, [r6, #0] 78b0: 9a06 ldr r2, [sp, #24] 78b2: 00d2 lsls r2, r2, #3 78b4: 0549 lsls r1, r1, #21 78b6: 0f49 lsrs r1, r1, #29 78b8: 430a orrs r2, r1 78ba: 7072 strb r2, [r6, #1] 78bc: e7ba b.n 7834 <_lv_blend_fill+0x848> disp_buf_first += disp_w; 78be: 9b07 ldr r3, [sp, #28] 78c0: 9a0f ldr r2, [sp, #60] ; 0x3c 78c2: 4694 mov ip, r2 78c4: 4463 add r3, ip 78c6: 9307 str r3, [sp, #28] 78c8: 9b09 ldr r3, [sp, #36] ; 0x24 78ca: 9a0b ldr r2, [sp, #44] ; 0x2c 78cc: 4694 mov ip, r2 78ce: 4463 add r3, ip 78d0: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 78d2: 9b0d ldr r3, [sp, #52] ; 0x34 78d4: 3301 adds r3, #1 78d6: 930d str r3, [sp, #52] ; 0x34 78d8: 9a0e ldr r2, [sp, #56] ; 0x38 78da: 429a cmp r2, r3 78dc: dc01 bgt.n 78e2 <_lv_blend_fill+0x8f6> 78de: f7ff fb9d bl 701c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 78e2: 9a0a ldr r2, [sp, #40] ; 0x28 78e4: 2a00 cmp r2, #0 78e6: dc00 bgt.n 78ea <_lv_blend_fill+0x8fe> 78e8: e1ee b.n 7cc8 <_lv_blend_fill+0xcdc> 78ea: 9b09 ldr r3, [sp, #36] ; 0x24 78ec: 0799 lsls r1, r3, #30 78ee: d100 bne.n 78f2 <_lv_blend_fill+0x906> 78f0: e1ed b.n 7cce <_lv_blend_fill+0xce2> 78f2: 9e07 ldr r6, [sp, #28] 78f4: 4698 mov r8, r3 78f6: 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))); 78f8: 211f movs r1, #31 78fa: 4689 mov r9, r1 78fc: 4644 mov r4, r8 78fe: 4690 mov r8, r2 7900: e5e7 b.n 74d2 <_lv_blend_fill+0x4e6> 7902: 46c0 nop ; (mov r8, r8) 7904: fffff81f .word 0xfffff81f if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7908: 9e0d ldr r6, [sp, #52] ; 0x34 if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 790a: 2aff cmp r2, #255 ; 0xff 790c: d065 beq.n 79da <_lv_blend_fill+0x9ee> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 790e: 2eff cmp r6, #255 ; 0xff 7910: d067 beq.n 79e2 <_lv_blend_fill+0x9f6> 7912: 23ff movs r3, #255 ; 0xff 7914: 1b9b subs r3, r3, r6 7916: 784a ldrb r2, [r1, #1] 7918: 08d2 lsrs r2, r2, #3 791a: 4699 mov r9, r3 791c: 435a muls r2, r3 791e: 9b05 ldr r3, [sp, #20] 7920: 4373 muls r3, r6 7922: 18d2 adds r2, r2, r3 7924: 0213 lsls r3, r2, #8 7926: 189b adds r3, r3, r2 7928: 01db lsls r3, r3, #7 792a: 189b adds r3, r3, r2 792c: 0ddb lsrs r3, r3, #23 792e: 221f movs r2, #31 7930: 401a ands r2, r3 7932: 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))); 7934: 880a ldrh r2, [r1, #0] 7936: 0552 lsls r2, r2, #21 7938: 0e92 lsrs r2, r2, #26 793a: 464b mov r3, r9 793c: 435a muls r2, r3 793e: 9b08 ldr r3, [sp, #32] 7940: 4373 muls r3, r6 7942: 469a mov sl, r3 7944: 4452 add r2, sl 7946: 0213 lsls r3, r2, #8 7948: 469a mov sl, r3 794a: 4492 add sl, r2 794c: 4653 mov r3, sl 794e: 01db lsls r3, r3, #7 7950: 469a mov sl, r3 7952: 4452 add r2, sl 7954: 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))); 7956: 780b ldrb r3, [r1, #0] 7958: 06db lsls r3, r3, #27 795a: 0edb lsrs r3, r3, #27 795c: 469a mov sl, r3 795e: 464b mov r3, r9 7960: 4654 mov r4, sl 7962: 4363 muls r3, r4 7964: 469a mov sl, r3 7966: 4663 mov r3, ip 7968: 4373 muls r3, r6 796a: 4699 mov r9, r3 796c: 44ca add sl, r9 796e: 4653 mov r3, sl 7970: 021b lsls r3, r3, #8 7972: 4699 mov r9, r3 7974: 44d1 add r9, sl 7976: 464b mov r3, r9 7978: 01db lsls r3, r3, #7 797a: 4699 mov r9, r3 797c: 44d1 add r9, sl 797e: 464b mov r3, r9 7980: 0ddb lsrs r3, r3, #23 7982: 241f movs r4, #31 7984: 4023 ands r3, r4 7986: 4699 mov r9, r3 7988: 9b09 ldr r3, [sp, #36] ; 0x24 798a: 43a3 bics r3, r4 798c: 469a mov sl, r3 798e: 464b mov r3, r9 7990: 4654 mov r4, sl 7992: 4323 orrs r3, r4 7994: 4699 mov r9, r3 7996: 233f movs r3, #63 ; 0x3f 7998: 401a ands r2, r3 799a: 0152 lsls r2, r2, #5 799c: 464b mov r3, r9 799e: 4644 mov r4, r8 79a0: 4023 ands r3, r4 79a2: 431a orrs r2, r3 79a4: 9b04 ldr r3, [sp, #16] 79a6: 02db lsls r3, r3, #11 79a8: 0552 lsls r2, r2, #21 79aa: 0d52 lsrs r2, r2, #21 79ac: 4313 orrs r3, r2 79ae: 466a mov r2, sp 79b0: 8493 strh r3, [r2, #36] ; 0x24 79b2: b29b uxth r3, r3 last_dest_color.full = disp_buf_first[x].full; 79b4: 880a ldrh r2, [r1, #0] 79b6: 4691 mov r9, r2 disp_buf_first[x] = last_res_color; 79b8: 800b strh r3, [r1, #0] 79ba: 002a movs r2, r5 mask_tmp_x++; 79bc: 3001 adds r0, #1 79be: 3102 adds r1, #2 for(x = 0; x < draw_area_w; x++) { 79c0: 42b8 cmp r0, r7 79c2: d010 beq.n 79e6 <_lv_blend_fill+0x9fa> if(*mask_tmp_x) { 79c4: 7805 ldrb r5, [r0, #0] 79c6: 2d00 cmp r5, #0 79c8: d0f8 beq.n 79bc <_lv_blend_fill+0x9d0> if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 79ca: 4295 cmp r5, r2 79cc: d005 beq.n 79da <_lv_blend_fill+0x9ee> 79ce: 2dff cmp r5, #255 ; 0xff 79d0: d09a beq.n 7908 <_lv_blend_fill+0x91c> (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8; 79d2: 465e mov r6, fp 79d4: 436e muls r6, r5 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 79d6: 0a36 lsrs r6, r6, #8 79d8: e799 b.n 790e <_lv_blend_fill+0x922> if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_first[x].full) { 79da: 880a ldrh r2, [r1, #0] 79dc: 454a cmp r2, r9 79de: d196 bne.n 790e <_lv_blend_fill+0x922> 79e0: e7ea b.n 79b8 <_lv_blend_fill+0x9cc> if(opa_tmp == LV_OPA_COVER) last_res_color = color; 79e2: 9b0e ldr r3, [sp, #56] ; 0x38 79e4: e7e6 b.n 79b4 <_lv_blend_fill+0x9c8> disp_buf_first += disp_w; 79e6: 9907 ldr r1, [sp, #28] 79e8: 980f ldr r0, [sp, #60] ; 0x3c 79ea: 4680 mov r8, r0 79ec: 4441 add r1, r8 79ee: 9107 str r1, [sp, #28] 79f0: 9906 ldr r1, [sp, #24] 79f2: 980b ldr r0, [sp, #44] ; 0x2c 79f4: 4680 mov r8, r0 79f6: 4441 add r1, r8 79f8: 9106 str r1, [sp, #24] for(y = draw_area->y1; y <= draw_area->y2; y++) { 79fa: 990c ldr r1, [sp, #48] ; 0x30 79fc: 3101 adds r1, #1 79fe: 0008 movs r0, r1 7a00: 910c str r1, [sp, #48] ; 0x30 7a02: a910 add r1, sp, #64 ; 0x40 7a04: 2406 movs r4, #6 7a06: 5f09 ldrsh r1, [r1, r4] 7a08: 4288 cmp r0, r1 7a0a: dd01 ble.n 7a10 <_lv_blend_fill+0xa24> 7a0c: f7ff fb06 bl 701c <_lv_blend_fill+0x30> for(x = 0; x < draw_area_w; x++) { 7a10: 990a ldr r1, [sp, #40] ; 0x28 7a12: 2900 cmp r1, #0 7a14: dde7 ble.n 79e6 <_lv_blend_fill+0x9fa> 7a16: 9907 ldr r1, [sp, #28] 7a18: 9806 ldr r0, [sp, #24] 7a1a: 0004 movs r4, r0 7a1c: 9d0b ldr r5, [sp, #44] ; 0x2c 7a1e: 46a8 mov r8, r5 7a20: 4444 add r4, r8 7a22: 0027 movs r7, r4 7a24: 4cab ldr r4, [pc, #684] ; (7cd4 <_lv_blend_fill+0xce8>) 7a26: 46a0 mov r8, r4 if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : 7a28: 465c mov r4, fp 7a2a: 940d str r4, [sp, #52] ; 0x34 7a2c: e7ca b.n 79c4 <_lv_blend_fill+0x9d8> 7a2e: 466b mov r3, sp 7a30: 8a9c ldrh r4, [r3, #20] switch(mode) { 7a32: 2e01 cmp r6, #1 7a34: d04e beq.n 7ad4 <_lv_blend_fill+0xae8> 7a36: 2e02 cmp r6, #2 7a38: d141 bne.n 7abe <_lv_blend_fill+0xad2> blend_fp = color_blend_true_color_subtractive; 7a3a: 4ba7 ldr r3, [pc, #668] ; (7cd8 <_lv_blend_fill+0xcec>) 7a3c: 9309 str r3, [sp, #36] ; 0x24 7a3e: 466b mov r3, sp 7a40: 8a9a ldrh r2, [r3, #20] 7a42: 06d3 lsls r3, r2, #27 7a44: 0edb lsrs r3, r3, #27 7a46: 930e str r3, [sp, #56] ; 0x38 7a48: 0553 lsls r3, r2, #21 7a4a: 0e9b lsrs r3, r3, #26 7a4c: 930c str r3, [sp, #48] ; 0x30 7a4e: 0416 lsls r6, r2, #16 7a50: 0ef3 lsrs r3, r6, #27 7a52: 930d str r3, [sp, #52] ; 0x34 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 7a54: 4643 mov r3, r8 7a56: 8a9b ldrh r3, [r3, #20] 7a58: 3301 adds r3, #1 7a5a: 4642 mov r2, r8 7a5c: 8a12 ldrh r2, [r2, #16] 7a5e: 1a9b subs r3, r3, r2 7a60: b219 sxth r1, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 7a62: 9508 str r5, [sp, #32] 7a64: 434d muls r5, r1 7a66: 006d lsls r5, r5, #1 7a68: 9b04 ldr r3, [sp, #16] 7a6a: 469c mov ip, r3 7a6c: 44ac add ip, r5 7a6e: 4663 mov r3, ip 7a70: 9307 str r3, [sp, #28] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7a72: 2f01 cmp r7, #1 7a74: d031 beq.n 7ada <_lv_blend_fill+0xaee> 7a76: 3001 adds r0, #1 7a78: 9b0b ldr r3, [sp, #44] ; 0x2c 7a7a: 1ac0 subs r0, r0, r3 7a7c: b203 sxth r3, r0 7a7e: 4698 mov r8, r3 const lv_opa_t * mask_tmp = mask - draw_area->x1; 7a80: 9b06 ldr r3, [sp, #24] 7a82: 9a0a ldr r2, [sp, #40] ; 0x28 7a84: 1a9e subs r6, r3, r2 last_dest_color.full = disp_buf_tmp[0].full; 7a86: 9b07 ldr r3, [sp, #28] 7a88: 881a ldrh r2, [r3, #0] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7a8a: 9b08 ldr r3, [sp, #32] 7a8c: 454b cmp r3, r9 7a8e: dd01 ble.n 7a94 <_lv_blend_fill+0xaa8> 7a90: f7ff fac4 bl 701c <_lv_blend_fill+0x30> disp_buf_tmp += disp_w; 7a94: 004b lsls r3, r1, #1 7a96: 930a str r3, [sp, #40] ; 0x28 7a98: 0010 movs r0, r2 7a9a: 2100 movs r1, #0 last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 7a9c: 9b0c ldr r3, [sp, #48] ; 0x30 7a9e: 015b lsls r3, r3, #5 7aa0: 469a mov sl, r3 7aa2: 4643 mov r3, r8 7aa4: 930b str r3, [sp, #44] ; 0x2c 7aa6: 9b09 ldr r3, [sp, #36] ; 0x24 7aa8: 4698 mov r8, r3 7aaa: 9b0d ldr r3, [sp, #52] ; 0x34 7aac: 4699 mov r9, r3 7aae: 466b mov r3, sp 7ab0: 821c strh r4, [r3, #16] 7ab2: 0034 movs r4, r6 7ab4: 465b mov r3, fp 7ab6: 9306 str r3, [sp, #24] 7ab8: 9b0e ldr r3, [sp, #56] ; 0x38 7aba: 469b mov fp, r3 7abc: e0e9 b.n 7c92 <_lv_blend_fill+0xca6> LV_LOG_WARN("fill_blended: unsupported blend mode"); 7abe: 4b87 ldr r3, [pc, #540] ; (7cdc <_lv_blend_fill+0xcf0>) 7ac0: 9300 str r3, [sp, #0] 7ac2: 4b87 ldr r3, [pc, #540] ; (7ce0 <_lv_blend_fill+0xcf4>) 7ac4: 2284 movs r2, #132 ; 0x84 7ac6: 0092 lsls r2, r2, #2 7ac8: 4986 ldr r1, [pc, #536] ; (7ce4 <_lv_blend_fill+0xcf8>) 7aca: 2002 movs r0, #2 7acc: 4c86 ldr r4, [pc, #536] ; (7ce8 <_lv_blend_fill+0xcfc>) 7ace: 47a0 blx r4 7ad0: f7ff faa4 bl 701c <_lv_blend_fill+0x30> blend_fp = color_blend_true_color_additive; 7ad4: 4b85 ldr r3, [pc, #532] ; (7cec <_lv_blend_fill+0xd00>) 7ad6: 9309 str r3, [sp, #36] ; 0x24 7ad8: e7b1 b.n 7a3e <_lv_blend_fill+0xa52> lv_color_t last_dest_color = LV_COLOR_BLACK; 7ada: 2300 movs r3, #0 7adc: 466a mov r2, sp 7ade: 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))); 7ae0: 465b mov r3, fp 7ae2: 9f0d ldr r7, [sp, #52] ; 0x34 7ae4: 437b muls r3, r7 7ae6: 0218 lsls r0, r3, #8 7ae8: 18c0 adds r0, r0, r3 7aea: 01c0 lsls r0, r0, #7 7aec: 18c0 adds r0, r0, r3 7aee: 0dc0 lsrs r0, r0, #23 7af0: 251f movs r5, #31 7af2: 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))); 7af4: 465a mov r2, fp 7af6: 9b0c ldr r3, [sp, #48] ; 0x30 7af8: 435a muls r2, r3 7afa: 0213 lsls r3, r2, #8 7afc: 189b adds r3, r3, r2 7afe: 01db lsls r3, r3, #7 7b00: 189b adds r3, r3, r2 7b02: 00db lsls r3, r3, #3 7b04: 0e9a lsrs r2, r3, #26 7b06: 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))); 7b08: 465a mov r2, fp 7b0a: 9e0e ldr r6, [sp, #56] ; 0x38 7b0c: 4372 muls r2, r6 7b0e: 0213 lsls r3, r2, #8 7b10: 189b adds r3, r3, r2 7b12: 01db lsls r3, r3, #7 7b14: 189b adds r3, r3, r2 7b16: 0ddb lsrs r3, r3, #23 7b18: 401d ands r5, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7b1a: 9a08 ldr r2, [sp, #32] 7b1c: 454a cmp r2, r9 7b1e: dd01 ble.n 7b24 <_lv_blend_fill+0xb38> 7b20: f7ff fa7c bl 701c <_lv_blend_fill+0x30> disp_buf_tmp += disp_w; 7b24: 004a lsls r2, r1, #1 7b26: 4691 mov r9, r2 last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 7b28: 0033 movs r3, r6 7b2a: 221f movs r2, #31 7b2c: 4013 ands r3, r2 7b2e: 4698 mov r8, r3 7b30: 464a mov r2, r9 7b32: 920b str r2, [sp, #44] ; 0x2c 7b34: 46b9 mov r9, r7 7b36: 466b mov r3, sp 7b38: 831c strh r4, [r3, #24] 7b3a: 002c movs r4, r5 7b3c: 465a mov r2, fp 7b3e: 920a str r2, [sp, #40] ; 0x28 7b40: 9b0c ldr r3, [sp, #48] ; 0x30 7b42: 469b mov fp, r3 7b44: e050 b.n 7be8 <_lv_blend_fill+0xbfc> disp_buf_tmp[x] = last_res_color; 7b46: 782b ldrb r3, [r5, #0] 7b48: 221f movs r2, #31 7b4a: 4393 bics r3, r2 7b4c: 9a04 ldr r2, [sp, #16] 7b4e: 4313 orrs r3, r2 7b50: 702b strb r3, [r5, #0] 7b52: 017a lsls r2, r7, #5 7b54: 882b ldrh r3, [r5, #0] 7b56: 469c mov ip, r3 7b58: 4b5e ldr r3, [pc, #376] ; (7cd4 <_lv_blend_fill+0xce8>) 7b5a: 4661 mov r1, ip 7b5c: 400b ands r3, r1 7b5e: 4313 orrs r3, r2 7b60: 802b strh r3, [r5, #0] 7b62: 00c2 lsls r2, r0, #3 7b64: 055b lsls r3, r3, #21 7b66: 0f5b lsrs r3, r3, #29 7b68: 4313 orrs r3, r2 7b6a: 706b strb r3, [r5, #1] for(x = draw_area->x1; x <= draw_area->x2; x++) { 7b6c: 3401 adds r4, #1 7b6e: 3602 adds r6, #2 7b70: ab10 add r3, sp, #64 ; 0x40 7b72: 2204 movs r2, #4 7b74: 5e9b ldrsh r3, [r3, r2] 7b76: 429c cmp r4, r3 7b78: dc24 bgt.n 7bc4 <_lv_blend_fill+0xbd8> if(last_dest_color.full != disp_buf_tmp[x].full) { 7b7a: 0035 movs r5, r6 7b7c: 466b mov r3, sp 7b7e: 8a9b ldrh r3, [r3, #20] 7b80: 8832 ldrh r2, [r6, #0] 7b82: 4293 cmp r3, r2 7b84: d0df beq.n 7b46 <_lv_blend_fill+0xb5a> last_dest_color = disp_buf_tmp[x]; 7b86: 0011 movs r1, r2 7b88: 466b mov r3, sp 7b8a: 829a strh r2, [r3, #20] last_res_color = blend_fp(color, disp_buf_tmp[x], opa); 7b8c: 9806 ldr r0, [sp, #24] 7b8e: 231f movs r3, #31 7b90: 4398 bics r0, r3 7b92: 4643 mov r3, r8 7b94: 4318 orrs r0, r3 7b96: 465b mov r3, fp 7b98: 015b lsls r3, r3, #5 7b9a: 4f4e ldr r7, [pc, #312] ; (7cd4 <_lv_blend_fill+0xce8>) 7b9c: 4038 ands r0, r7 7b9e: 4318 orrs r0, r3 7ba0: 464b mov r3, r9 7ba2: 02db lsls r3, r3, #11 7ba4: 0540 lsls r0, r0, #21 7ba6: 0d40 lsrs r0, r0, #21 7ba8: 4318 orrs r0, r3 7baa: 466b mov r3, sp 7bac: 8318 strh r0, [r3, #24] 7bae: 9a0a ldr r2, [sp, #40] ; 0x28 7bb0: 9b09 ldr r3, [sp, #36] ; 0x24 7bb2: 4798 blx r3 7bb4: 06c1 lsls r1, r0, #27 7bb6: 0ecb lsrs r3, r1, #27 7bb8: 9304 str r3, [sp, #16] 7bba: 0547 lsls r7, r0, #21 7bbc: 0ebf lsrs r7, r7, #26 7bbe: 0400 lsls r0, r0, #16 7bc0: 0ec0 lsrs r0, r0, #27 7bc2: e7c0 b.n 7b46 <_lv_blend_fill+0xb5a> 7bc4: 9c04 ldr r4, [sp, #16] 7bc6: 46ba mov sl, r7 disp_buf_tmp += disp_w; 7bc8: 9b07 ldr r3, [sp, #28] 7bca: 9a0b ldr r2, [sp, #44] ; 0x2c 7bcc: 4694 mov ip, r2 7bce: 4463 add r3, ip 7bd0: 9307 str r3, [sp, #28] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7bd2: 9b08 ldr r3, [sp, #32] 7bd4: 3301 adds r3, #1 7bd6: 001a movs r2, r3 7bd8: 9308 str r3, [sp, #32] 7bda: ab10 add r3, sp, #64 ; 0x40 7bdc: 2106 movs r1, #6 7bde: 5e5b ldrsh r3, [r3, r1] 7be0: 429a cmp r2, r3 7be2: dd01 ble.n 7be8 <_lv_blend_fill+0xbfc> 7be4: f7ff fa1a bl 701c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 7be8: ab10 add r3, sp, #64 ; 0x40 7bea: 2200 movs r2, #0 7bec: 5e9e ldrsh r6, [r3, r2] 7bee: 0037 movs r7, r6 7bf0: 2204 movs r2, #4 7bf2: 5e9b ldrsh r3, [r3, r2] 7bf4: 429e cmp r6, r3 7bf6: dce7 bgt.n 7bc8 <_lv_blend_fill+0xbdc> 7bf8: 0076 lsls r6, r6, #1 7bfa: 9b07 ldr r3, [sp, #28] 7bfc: 469c mov ip, r3 7bfe: 4466 add r6, ip 7c00: 9404 str r4, [sp, #16] 7c02: 003c movs r4, r7 7c04: 4657 mov r7, sl 7c06: e7b8 b.n 7b7a <_lv_blend_fill+0xb8e> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 7c08: 883a ldrh r2, [r7, #0] 7c0a: 4694 mov ip, r2 7c0c: 9a05 ldr r2, [sp, #20] 7c0e: 4594 cmp ip, r2 7c10: d124 bne.n 7c5c <_lv_blend_fill+0xc70> 7c12: e015 b.n 7c40 <_lv_blend_fill+0xc54> last_res_color = blend_fp(color, disp_buf_tmp[x], opa_tmp); 7c14: 231f movs r3, #31 7c16: 9804 ldr r0, [sp, #16] 7c18: 4398 bics r0, r3 7c1a: 465b mov r3, fp 7c1c: 4318 orrs r0, r3 7c1e: 4b2d ldr r3, [pc, #180] ; (7cd4 <_lv_blend_fill+0xce8>) 7c20: 4018 ands r0, r3 7c22: 4653 mov r3, sl 7c24: 4318 orrs r0, r3 7c26: 464b mov r3, r9 7c28: 02db lsls r3, r3, #11 7c2a: 0540 lsls r0, r0, #21 7c2c: 0d40 lsrs r0, r0, #21 7c2e: 4318 orrs r0, r3 7c30: 466b mov r3, sp 7c32: 8218 strh r0, [r3, #16] 7c34: 8839 ldrh r1, [r7, #0] 7c36: 47c0 blx r8 7c38: b280 uxth r0, r0 last_mask = mask_tmp[x]; 7c3a: 5da1 ldrb r1, [r4, r6] last_dest_color.full = disp_buf_tmp[x].full; 7c3c: 883b ldrh r3, [r7, #0] 7c3e: 9305 str r3, [sp, #20] disp_buf_tmp[x] = last_res_color; 7c40: 8038 strh r0, [r7, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 7c42: 3501 adds r5, #1 7c44: 3702 adds r7, #2 7c46: ab10 add r3, sp, #64 ; 0x40 7c48: 2604 movs r6, #4 7c4a: 5f9b ldrsh r3, [r3, r6] 7c4c: 429d cmp r5, r3 7c4e: dc0c bgt.n 7c6a <_lv_blend_fill+0xc7e> 7c50: 002e movs r6, r5 if(mask_tmp[x] == 0) continue; 7c52: 5d63 ldrb r3, [r4, r5] 7c54: 2b00 cmp r3, #0 7c56: d0f4 beq.n 7c42 <_lv_blend_fill+0xc56> if(mask_tmp[x] != last_mask || last_dest_color.full != disp_buf_tmp[x].full) { 7c58: 428b cmp r3, r1 7c5a: d0d5 beq.n 7c08 <_lv_blend_fill+0xc1c> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : (uint32_t)((uint32_t)mask_tmp[x] * opa) >> 8; 7c5c: 9906 ldr r1, [sp, #24] 7c5e: 000a movs r2, r1 7c60: 2bf9 cmp r3, #249 ; 0xf9 7c62: d8d7 bhi.n 7c14 <_lv_blend_fill+0xc28> 7c64: 435a muls r2, r3 7c66: 0a12 lsrs r2, r2, #8 7c68: e7d4 b.n 7c14 <_lv_blend_fill+0xc28> 7c6a: 9a05 ldr r2, [sp, #20] disp_buf_tmp += disp_w; 7c6c: 9b07 ldr r3, [sp, #28] 7c6e: 9d0a ldr r5, [sp, #40] ; 0x28 7c70: 46ac mov ip, r5 7c72: 4463 add r3, ip 7c74: 9307 str r3, [sp, #28] 7c76: 9b0b ldr r3, [sp, #44] ; 0x2c 7c78: 469c mov ip, r3 7c7a: 4464 add r4, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 7c7c: 9b08 ldr r3, [sp, #32] 7c7e: 3301 adds r3, #1 7c80: 001d movs r5, r3 7c82: 9308 str r3, [sp, #32] 7c84: ab10 add r3, sp, #64 ; 0x40 7c86: 2606 movs r6, #6 7c88: 5f9b ldrsh r3, [r3, r6] 7c8a: 429d cmp r5, r3 7c8c: dd01 ble.n 7c92 <_lv_blend_fill+0xca6> 7c8e: f7ff f9c5 bl 701c <_lv_blend_fill+0x30> for(x = draw_area->x1; x <= draw_area->x2; x++) { 7c92: ab10 add r3, sp, #64 ; 0x40 7c94: 2500 movs r5, #0 7c96: 5f5f ldrsh r7, [r3, r5] 7c98: 003d movs r5, r7 7c9a: 2604 movs r6, #4 7c9c: 5f9b ldrsh r3, [r3, r6] 7c9e: 429f cmp r7, r3 7ca0: dce4 bgt.n 7c6c <_lv_blend_fill+0xc80> 7ca2: 007f lsls r7, r7, #1 7ca4: 9b07 ldr r3, [sp, #28] 7ca6: 469c mov ip, r3 7ca8: 4467 add r7, ip 7caa: 9205 str r2, [sp, #20] 7cac: e7d0 b.n 7c50 <_lv_blend_fill+0xc64> FILL_NORMAL_MASK_PX(x, color) 7cae: 0022 movs r2, r4 for(; x <= x_end4; x += 4) { 7cb0: 9905 ldr r1, [sp, #20] 7cb2: 4299 cmp r1, r3 7cb4: da00 bge.n 7cb8 <_lv_blend_fill+0xccc> 7cb6: e602 b.n 78be <_lv_blend_fill+0x8d2> 7cb8: 005c lsls r4, r3, #1 7cba: 9907 ldr r1, [sp, #28] 7cbc: 468c mov ip, r1 7cbe: 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))); 7cc0: 271f movs r7, #31 7cc2: 4651 mov r1, sl 7cc4: 9106 str r1, [sp, #24] 7cc6: e45a b.n 757e <_lv_blend_fill+0x592> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 7cc8: 9a09 ldr r2, [sp, #36] ; 0x24 7cca: 2300 movs r3, #0 7ccc: e7f0 b.n 7cb0 <_lv_blend_fill+0xcc4> 7cce: 9a09 ldr r2, [sp, #36] ; 0x24 7cd0: 2300 movs r3, #0 7cd2: e43f b.n 7554 <_lv_blend_fill+0x568> 7cd4: fffff81f .word 0xfffff81f 7cd8: 00006f37 .word 0x00006f37 7cdc: 0002604c .word 0x0002604c 7ce0: 00025ff8 .word 0x00025ff8 7ce4: 00026014 .word 0x00026014 7ce8: 00012159 .word 0x00012159 7cec: 00006e91 .word 0x00006e91 00007cf0 <_lv_blend_map>: { 7cf0: b5f0 push {r4, r5, r6, r7, lr} 7cf2: 46de mov lr, fp 7cf4: 4657 mov r7, sl 7cf6: 464e mov r6, r9 7cf8: 4645 mov r5, r8 7cfa: b5e0 push {r5, r6, r7, lr} 7cfc: b093 sub sp, #76 ; 0x4c 7cfe: 000c movs r4, r1 7d00: 9207 str r2, [sp, #28] 7d02: 001d movs r5, r3 7d04: ab1c add r3, sp, #112 ; 0x70 7d06: 781f ldrb r7, [r3, #0] 7d08: ab1d add r3, sp, #116 ; 0x74 7d0a: 781b ldrb r3, [r3, #0] 7d0c: 469b mov fp, r3 7d0e: ab1e add r3, sp, #120 ; 0x78 7d10: 781e ldrb r6, [r3, #0] if(opa < LV_OPA_MIN) return; 7d12: 465b mov r3, fp 7d14: 2b04 cmp r3, #4 7d16: d901 bls.n 7d1c <_lv_blend_map+0x2c> if(mask_res == LV_DRAW_MASK_RES_TRANSP) return; 7d18: 2f00 cmp r7, #0 7d1a: d106 bne.n 7d2a <_lv_blend_map+0x3a> } 7d1c: b013 add sp, #76 ; 0x4c 7d1e: bc3c pop {r2, r3, r4, r5} 7d20: 4690 mov r8, r2 7d22: 4699 mov r9, r3 7d24: 46a2 mov sl, r4 7d26: 46ab mov fp, r5 7d28: bdf0 pop {r4, r5, r6, r7, pc} is_common = _lv_area_intersect(&draw_area, clip_area, map_area); 7d2a: 000a movs r2, r1 7d2c: 0001 movs r1, r0 7d2e: a810 add r0, sp, #64 ; 0x40 7d30: 4bd7 ldr r3, [pc, #860] ; (8090 <_lv_blend_map+0x3a0>) 7d32: 4798 blx r3 if(!is_common) return; 7d34: 2800 cmp r0, #0 7d36: d0f1 beq.n 7d1c <_lv_blend_map+0x2c> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7d38: 4bd6 ldr r3, [pc, #856] ; (8094 <_lv_blend_map+0x3a4>) 7d3a: 4798 blx r3 7d3c: 4680 mov r8, r0 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 7d3e: 4bd6 ldr r3, [pc, #856] ; (8098 <_lv_blend_map+0x3a8>) 7d40: 4798 blx r3 7d42: 4681 mov r9, r0 lv_color_t * disp_buf = vdb->buf_act; 7d44: 6883 ldr r3, [r0, #8] 7d46: 9305 str r3, [sp, #20] draw_area.x1 -= disp_area->x1; 7d48: 8a02 ldrh r2, [r0, #16] 7d4a: ab10 add r3, sp, #64 ; 0x40 7d4c: 8819 ldrh r1, [r3, #0] 7d4e: 1a89 subs r1, r1, r2 7d50: b289 uxth r1, r1 7d52: 9109 str r1, [sp, #36] ; 0x24 7d54: 468c mov ip, r1 7d56: b208 sxth r0, r1 7d58: 4682 mov sl, r0 7d5a: 8018 strh r0, [r3, #0] draw_area.y1 -= disp_area->y1; 7d5c: 4648 mov r0, r9 7d5e: 8a41 ldrh r1, [r0, #18] 7d60: 8858 ldrh r0, [r3, #2] 7d62: 1a40 subs r0, r0, r1 7d64: b280 uxth r0, r0 7d66: 900a str r0, [sp, #40] ; 0x28 7d68: b200 sxth r0, r0 7d6a: 9008 str r0, [sp, #32] 7d6c: 8058 strh r0, [r3, #2] draw_area.x2 -= disp_area->x1; 7d6e: 8898 ldrh r0, [r3, #4] 7d70: 1a80 subs r0, r0, r2 7d72: b280 uxth r0, r0 7d74: 8098 strh r0, [r3, #4] draw_area.y2 -= disp_area->y1; 7d76: 88da ldrh r2, [r3, #6] 7d78: 1a52 subs r2, r2, r1 7d7a: b292 uxth r2, r2 7d7c: 920b str r2, [sp, #44] ; 0x2c 7d7e: b212 sxth r2, r2 7d80: 920c str r2, [sp, #48] ; 0x30 7d82: 80da strh r2, [r3, #6] if(mask && disp->driver.antialiasing == 0) 7d84: 2d00 cmp r5, #0 7d86: d014 beq.n 7db2 <_lv_blend_map+0xc2> 7d88: 4643 mov r3, r8 7d8a: 7a1b ldrb r3, [r3, #8] 7d8c: 07db lsls r3, r3, #31 7d8e: d410 bmi.n 7db2 <_lv_blend_map+0xc2> 7d90: 1c41 adds r1, r0, #1 7d92: 4663 mov r3, ip 7d94: 1ac9 subs r1, r1, r3 7d96: b209 sxth r1, r1 for(i = 0; i < mask_w; i++) mask[i] = mask[i] > 128 ? LV_OPA_COVER : LV_OPA_TRANSP; 7d98: 2900 cmp r1, #0 7d9a: dd0a ble.n 7db2 <_lv_blend_map+0xc2> 7d9c: 002b movs r3, r5 7d9e: 1869 adds r1, r5, r1 7da0: 2280 movs r2, #128 ; 0x80 7da2: 4694 mov ip, r2 7da4: 781a ldrb r2, [r3, #0] 7da6: 4594 cmp ip, r2 7da8: 4192 sbcs r2, r2 7daa: 701a strb r2, [r3, #0] 7dac: 3301 adds r3, #1 7dae: 428b cmp r3, r1 7db0: d1f8 bne.n 7da4 <_lv_blend_map+0xb4> if(disp->driver.set_px_cb) { 7db2: 4643 mov r3, r8 7db4: 695b ldr r3, [r3, #20] 7db6: 2b00 cmp r3, #0 7db8: d100 bne.n 7dbc <_lv_blend_map+0xcc> 7dba: e0c3 b.n 7f44 <_lv_blend_map+0x254> lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7dbc: 4bb5 ldr r3, [pc, #724] ; (8094 <_lv_blend_map+0x3a4>) 7dbe: 4798 blx r3 7dc0: 900c str r0, [sp, #48] ; 0x30 7dc2: 464b mov r3, r9 7dc4: 2210 movs r2, #16 7dc6: 5e9b ldrsh r3, [r3, r2] 7dc8: 4698 mov r8, r3 7dca: 464b mov r3, r9 7dcc: 8a9b ldrh r3, [r3, #20] 7dce: 3301 adds r3, #1 7dd0: 4642 mov r2, r8 7dd2: 1a9b subs r3, r3, r2 7dd4: b21b sxth r3, r3 7dd6: 9306 str r3, [sp, #24] 7dd8: a910 add r1, sp, #64 ; 0x40 7dda: 2300 movs r3, #0 7ddc: 5ec8 ldrsh r0, [r1, r3] 7dde: 2300 movs r3, #0 7de0: 5ee2 ldrsh r2, [r4, r3] 7de2: 88a3 ldrh r3, [r4, #4] 7de4: 3301 adds r3, #1 7de6: 1a9b subs r3, r3, r2 7de8: b21b sxth r3, r3 const lv_color_t * map_buf_tmp = map_buf + map_w * (draw_area->y1 - (map_area->y1 - disp_area->y1)); 7dea: 2602 movs r6, #2 7dec: 5f89 ldrsh r1, [r1, r6] 7dee: 9109 str r1, [sp, #36] ; 0x24 7df0: 2602 movs r6, #2 7df2: 5fa4 ldrsh r4, [r4, r6] 7df4: 46a4 mov ip, r4 7df6: 464e mov r6, r9 7df8: 2412 movs r4, #18 7dfa: 5f36 ldrsh r6, [r6, r4] 7dfc: 4664 mov r4, ip 7dfe: 1ba4 subs r4, r4, r6 7e00: 1b0c subs r4, r1, r4 7e02: 435c muls r4, r3 map_buf_tmp += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 7e04: 4646 mov r6, r8 7e06: 1b92 subs r2, r2, r6 map_buf_tmp -= draw_area->x1; 7e08: 1aa4 subs r4, r4, r2 7e0a: 0064 lsls r4, r4, #1 7e0c: 9a07 ldr r2, [sp, #28] 7e0e: 4694 mov ip, r2 7e10: 44a4 add ip, r4 7e12: 4662 mov r2, ip 7e14: 9208 str r2, [sp, #32] if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7e16: 2f01 cmp r7, #1 7e18: d053 beq.n 7ec2 <_lv_blend_map+0x1d2> const lv_opa_t * mask_tmp = mask - draw_area->x1; 7e1a: 1a2a subs r2, r5, r0 7e1c: 4690 mov r8, r2 for(y = draw_area->y1; y <= draw_area->y2; y++) { 7e1e: aa10 add r2, sp, #64 ; 0x40 7e20: 2406 movs r4, #6 7e22: 5f12 ldrsh r2, [r2, r4] 7e24: 9c09 ldr r4, [sp, #36] ; 0x24 7e26: 4294 cmp r4, r2 7e28: dd00 ble.n 7e2c <_lv_blend_map+0x13c> 7e2a: e777 b.n 7d1c <_lv_blend_map+0x2c> 7e2c: aa10 add r2, sp, #64 ; 0x40 7e2e: 2404 movs r4, #4 7e30: 5f12 ldrsh r2, [r2, r4] map_buf_tmp += map_w; 7e32: 005b lsls r3, r3, #1 7e34: 930a str r3, [sp, #40] ; 0x28 7e36: 9109 str r1, [sp, #36] ; 0x24 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7e38: ab10 add r3, sp, #64 ; 0x40 7e3a: 9307 str r3, [sp, #28] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 7e3c: ab01 add r3, sp, #4 7e3e: 469a mov sl, r3 7e40: 3201 adds r2, #1 7e42: 1a13 subs r3, r2, r0 mask_tmp += draw_area_w; 7e44: b21b sxth r3, r3 7e46: 930b str r3, [sp, #44] ; 0x2c 7e48: 9e0c ldr r6, [sp, #48] ; 0x30 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7e4a: 9a07 ldr r2, [sp, #28] 7e4c: 0013 movs r3, r2 7e4e: 2500 movs r5, #0 7e50: 5f5d ldrsh r5, [r3, r5] 7e52: 002c movs r4, r5 7e54: 0013 movs r3, r2 7e56: 2204 movs r2, #4 7e58: 5e9b ldrsh r3, [r3, r2] 7e5a: 429d cmp r5, r3 7e5c: dc1f bgt.n 7e9e <_lv_blend_map+0x1ae> 7e5e: 006d lsls r5, r5, #1 7e60: 9b08 ldr r3, [sp, #32] 7e62: 469c mov ip, r3 7e64: 4465 add r5, ip disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 7e66: 466b mov r3, sp 7e68: 2224 movs r2, #36 ; 0x24 7e6a: 5e9b ldrsh r3, [r3, r2] 7e6c: 4699 mov r9, r3 7e6e: b223 sxth r3, r4 (uint32_t)((uint32_t)opa * mask_tmp[x]) >> 8); 7e70: 4642 mov r2, r8 7e72: 5d12 ldrb r2, [r2, r4] 7e74: 4659 mov r1, fp 7e76: 434a muls r2, r1 disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], 7e78: 0a12 lsrs r2, r2, #8 7e7a: 9202 str r2, [sp, #8] 7e7c: 882a ldrh r2, [r5, #0] 7e7e: 4651 mov r1, sl 7e80: 800a strh r2, [r1, #0] 7e82: 464a mov r2, r9 7e84: 9200 str r2, [sp, #0] 7e86: 9a06 ldr r2, [sp, #24] 7e88: 9905 ldr r1, [sp, #20] 7e8a: 0030 movs r0, r6 7e8c: 6977 ldr r7, [r6, #20] 7e8e: 47b8 blx r7 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7e90: 3401 adds r4, #1 7e92: 3502 adds r5, #2 7e94: 9b07 ldr r3, [sp, #28] 7e96: 2204 movs r2, #4 7e98: 5e9b ldrsh r3, [r3, r2] 7e9a: 429c cmp r4, r3 7e9c: dde7 ble.n 7e6e <_lv_blend_map+0x17e> 7e9e: 9b0b ldr r3, [sp, #44] ; 0x2c 7ea0: 469c mov ip, r3 7ea2: 44e0 add r8, ip map_buf_tmp += map_w; 7ea4: 9b08 ldr r3, [sp, #32] 7ea6: 9a0a ldr r2, [sp, #40] ; 0x28 7ea8: 4694 mov ip, r2 7eaa: 4463 add r3, ip 7eac: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7eae: 9b09 ldr r3, [sp, #36] ; 0x24 7eb0: 3301 adds r3, #1 7eb2: 001a movs r2, r3 7eb4: 9309 str r3, [sp, #36] ; 0x24 7eb6: 9b07 ldr r3, [sp, #28] 7eb8: 2106 movs r1, #6 7eba: 5e5b ldrsh r3, [r3, r1] 7ebc: 429a cmp r2, r3 7ebe: ddc4 ble.n 7e4a <_lv_blend_map+0x15a> 7ec0: e72c b.n 7d1c <_lv_blend_map+0x2c> for(y = draw_area->y1; y <= draw_area->y2; y++) { 7ec2: aa10 add r2, sp, #64 ; 0x40 7ec4: 2006 movs r0, #6 7ec6: 5e12 ldrsh r2, [r2, r0] 7ec8: 428a cmp r2, r1 7eca: da00 bge.n 7ece <_lv_blend_map+0x1de> 7ecc: e726 b.n 7d1c <_lv_blend_map+0x2c> map_buf_tmp += map_w; 7ece: 005b lsls r3, r3, #1 7ed0: 9309 str r3, [sp, #36] ; 0x24 7ed2: 468a mov sl, r1 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7ed4: ab10 add r3, sp, #64 ; 0x40 7ed6: 9307 str r3, [sp, #28] disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 7ed8: ab01 add r3, sp, #4 7eda: 4699 mov r9, r3 7edc: 9e0c ldr r6, [sp, #48] ; 0x30 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7ede: 9a07 ldr r2, [sp, #28] 7ee0: 0013 movs r3, r2 7ee2: 2700 movs r7, #0 7ee4: 5fdf ldrsh r7, [r3, r7] 7ee6: 003c movs r4, r7 7ee8: 0013 movs r3, r2 7eea: 2204 movs r2, #4 7eec: 5e9b ldrsh r3, [r3, r2] 7eee: 429f cmp r7, r3 7ef0: dc1a bgt.n 7f28 <_lv_blend_map+0x238> 7ef2: 007f lsls r7, r7, #1 7ef4: 9b08 ldr r3, [sp, #32] 7ef6: 469c mov ip, r3 7ef8: 4467 add r7, ip disp->driver.set_px_cb(&disp->driver, (void *)disp_buf, disp_w, x, y, map_buf_tmp[x], opa); 7efa: 4653 mov r3, sl 7efc: b21b sxth r3, r3 7efe: 4698 mov r8, r3 7f00: b223 sxth r3, r4 7f02: 465a mov r2, fp 7f04: 9202 str r2, [sp, #8] 7f06: 883a ldrh r2, [r7, #0] 7f08: 4649 mov r1, r9 7f0a: 800a strh r2, [r1, #0] 7f0c: 4642 mov r2, r8 7f0e: 9200 str r2, [sp, #0] 7f10: 9a06 ldr r2, [sp, #24] 7f12: 9905 ldr r1, [sp, #20] 7f14: 0030 movs r0, r6 7f16: 6975 ldr r5, [r6, #20] 7f18: 47a8 blx r5 for(x = draw_area->x1; x <= draw_area->x2; x++) { 7f1a: 3401 adds r4, #1 7f1c: 3702 adds r7, #2 7f1e: 9b07 ldr r3, [sp, #28] 7f20: 2204 movs r2, #4 7f22: 5e9b ldrsh r3, [r3, r2] 7f24: 429c cmp r4, r3 7f26: ddeb ble.n 7f00 <_lv_blend_map+0x210> map_buf_tmp += map_w; 7f28: 9b08 ldr r3, [sp, #32] 7f2a: 9a09 ldr r2, [sp, #36] ; 0x24 7f2c: 4694 mov ip, r2 7f2e: 4463 add r3, ip 7f30: 9308 str r3, [sp, #32] for(y = draw_area->y1; y <= draw_area->y2; y++) { 7f32: 2301 movs r3, #1 7f34: 469c mov ip, r3 7f36: 44e2 add sl, ip 7f38: 9b07 ldr r3, [sp, #28] 7f3a: 2206 movs r2, #6 7f3c: 5e9b ldrsh r3, [r3, r2] 7f3e: 459a cmp sl, r3 7f40: ddcd ble.n 7ede <_lv_blend_map+0x1ee> 7f42: e6eb b.n 7d1c <_lv_blend_map+0x2c> else if(mode == LV_BLEND_MODE_NORMAL) { 7f44: 2e00 cmp r6, #0 7f46: d001 beq.n 7f4c <_lv_blend_map+0x25c> 7f48: f000 fbfd bl 8746 <_lv_blend_map+0xa56> 7f4c: 464b mov r3, r9 7f4e: 2210 movs r2, #16 7f50: 5e9b ldrsh r3, [r3, r2] 7f52: 001a movs r2, r3 7f54: 464b mov r3, r9 7f56: 8a9b ldrh r3, [r3, #20] 7f58: 3301 adds r3, #1 7f5a: 920d str r2, [sp, #52] ; 0x34 7f5c: 1a9b subs r3, r3, r2 7f5e: b21b sxth r3, r3 7f60: 4698 mov r8, r3 7f62: 3001 adds r0, #1 7f64: 9b09 ldr r3, [sp, #36] ; 0x24 7f66: 1ac0 subs r0, r0, r3 7f68: b203 sxth r3, r0 7f6a: 930c str r3, [sp, #48] ; 0x30 int32_t draw_area_w = lv_area_get_width(draw_area); 7f6c: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 7f6e: 980b ldr r0, [sp, #44] ; 0x2c 7f70: 3001 adds r0, #1 7f72: 9b0a ldr r3, [sp, #40] ; 0x28 7f74: 1ac0 subs r0, r0, r3 int32_t draw_area_h = lv_area_get_height(draw_area); 7f76: b203 sxth r3, r0 7f78: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 7f7a: 2300 movs r3, #0 7f7c: 5ee2 ldrsh r2, [r4, r3] 7f7e: 88a6 ldrh r6, [r4, #4] 7f80: 3601 adds r6, #1 7f82: 1ab6 subs r6, r6, r2 7f84: b236 sxth r6, r6 lv_color_t * disp_buf_first = disp_buf + disp_w * draw_area->y1 + draw_area->x1; 7f86: 9808 ldr r0, [sp, #32] 7f88: 0003 movs r3, r0 7f8a: 4641 mov r1, r8 7f8c: 434b muls r3, r1 7f8e: 4453 add r3, sl 7f90: 005b lsls r3, r3, #1 7f92: 9905 ldr r1, [sp, #20] 7f94: 468c mov ip, r1 7f96: 449c add ip, r3 7f98: 4663 mov r3, ip 7f9a: 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)); 7f9c: 2102 movs r1, #2 7f9e: 5e63 ldrsh r3, [r4, r1] 7fa0: 4649 mov r1, r9 7fa2: 2412 movs r4, #18 7fa4: 5f09 ldrsh r1, [r1, r4] 7fa6: 1a5b subs r3, r3, r1 7fa8: 1ac3 subs r3, r0, r3 7faa: 4373 muls r3, r6 map_buf_first += (draw_area->x1 - (map_area->x1 - disp_area->x1)); 7fac: 990d ldr r1, [sp, #52] ; 0x34 7fae: 1a52 subs r2, r2, r1 7fb0: 4651 mov r1, sl 7fb2: 1a8a subs r2, r1, r2 7fb4: 189b adds r3, r3, r2 7fb6: 005b lsls r3, r3, #1 7fb8: 9a07 ldr r2, [sp, #28] 7fba: 4694 mov ip, r2 7fbc: 449c add ip, r3 7fbe: 4663 mov r3, ip 7fc0: 9309 str r3, [sp, #36] ; 0x24 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 7fc2: 4b34 ldr r3, [pc, #208] ; (8094 <_lv_blend_map+0x3a4>) 7fc4: 4798 blx r3 7fc6: 0004 movs r4, r0 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 7fc8: 2f01 cmp r7, #1 7fca: d015 beq.n 7ff8 <_lv_blend_map+0x308> if(opa > LV_OPA_MAX) { 7fcc: 465b mov r3, fp 7fce: 2bfa cmp r3, #250 ; 0xfa 7fd0: d900 bls.n 7fd4 <_lv_blend_map+0x2e4> 7fd2: e0eb b.n 81ac <_lv_blend_map+0x4bc> for(y = 0; y < draw_area_h; y++) { 7fd4: 9b0b ldr r3, [sp, #44] ; 0x2c 7fd6: 2b00 cmp r3, #0 7fd8: dc00 bgt.n 7fdc <_lv_blend_map+0x2ec> 7fda: e69f b.n 7d1c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 7fdc: 4643 mov r3, r8 7fde: 005b lsls r3, r3, #1 7fe0: 930e str r3, [sp, #56] ; 0x38 map_buf_first += map_w; 7fe2: 0073 lsls r3, r6, #1 7fe4: 930f str r3, [sp, #60] ; 0x3c 7fe6: 46a9 mov r9, r5 7fe8: 2300 movs r3, #0 7fea: 930d str r3, [sp, #52] ; 0x34 7fec: 331f adds r3, #31 7fee: 4698 mov r8, r3 lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 7ff0: 465b mov r3, fp 7ff2: 9307 str r3, [sp, #28] 7ff4: 930a str r3, [sp, #40] ; 0x28 7ff6: e39a b.n 872e <_lv_blend_map+0xa3e> if(disp->driver.gpu_blend_cb && (lv_area_get_size(draw_area) > GPU_SIZE_LIMIT)) { 7ff8: 6a03 ldr r3, [r0, #32] 7ffa: 2b00 cmp r3, #0 7ffc: d02a beq.n 8054 <_lv_blend_map+0x364> 7ffe: a810 add r0, sp, #64 ; 0x40 8000: 4b26 ldr r3, [pc, #152] ; (809c <_lv_blend_map+0x3ac>) 8002: 4798 blx r3 8004: 28f0 cmp r0, #240 ; 0xf0 8006: d925 bls.n 8054 <_lv_blend_map+0x364> for(y = draw_area->y1; y <= draw_area->y2; y++) { 8008: ab10 add r3, sp, #64 ; 0x40 800a: 2202 movs r2, #2 800c: 5e9f ldrsh r7, [r3, r2] 800e: 2206 movs r2, #6 8010: 5e9b ldrsh r3, [r3, r2] 8012: 429f cmp r7, r3 8014: dd00 ble.n 8018 <_lv_blend_map+0x328> 8016: e681 b.n 7d1c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 8018: 4643 mov r3, r8 801a: 005b lsls r3, r3, #1 801c: 4698 mov r8, r3 map_buf_first += map_w; 801e: 0076 lsls r6, r6, #1 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8020: ab10 add r3, sp, #64 ; 0x40 8022: 9305 str r3, [sp, #20] disp->driver.gpu_blend_cb(&disp->driver, disp_buf_first, map_buf_first, draw_area_w, opa); 8024: 465b mov r3, fp 8026: 9300 str r3, [sp, #0] 8028: 9b0c ldr r3, [sp, #48] ; 0x30 802a: 9a09 ldr r2, [sp, #36] ; 0x24 802c: 4692 mov sl, r2 802e: 9908 ldr r1, [sp, #32] 8030: 4689 mov r9, r1 8032: 0020 movs r0, r4 8034: 6a25 ldr r5, [r4, #32] 8036: 47a8 blx r5 disp_buf_first += disp_w; 8038: 464b mov r3, r9 803a: 4443 add r3, r8 803c: 9308 str r3, [sp, #32] map_buf_first += map_w; 803e: 46d4 mov ip, sl 8040: 44b4 add ip, r6 8042: 4663 mov r3, ip 8044: 9309 str r3, [sp, #36] ; 0x24 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8046: 3701 adds r7, #1 8048: 9b05 ldr r3, [sp, #20] 804a: 2206 movs r2, #6 804c: 5e9b ldrsh r3, [r3, r2] 804e: 429f cmp r7, r3 8050: dde8 ble.n 8024 <_lv_blend_map+0x334> 8052: e663 b.n 7d1c <_lv_blend_map+0x2c> if(opa > LV_OPA_MAX) { 8054: 465b mov r3, fp 8056: 2bfa cmp r3, #250 ; 0xfa 8058: d824 bhi.n 80a4 <_lv_blend_map+0x3b4> for(y = 0; y < draw_area_h; y++) { 805a: 9b0b ldr r3, [sp, #44] ; 0x2c 805c: 2b00 cmp r3, #0 805e: dc00 bgt.n 8062 <_lv_blend_map+0x372> 8060: e65c b.n 7d1c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 8062: 4643 mov r3, r8 8064: 005b lsls r3, r3, #1 8066: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 8068: 0073 lsls r3, r6, #1 806a: 930d str r3, [sp, #52] ; 0x34 806c: 9b0c ldr r3, [sp, #48] ; 0x30 806e: 005b lsls r3, r3, #1 8070: 930c str r3, [sp, #48] ; 0x30 8072: 2300 movs r3, #0 8074: 9307 str r3, [sp, #28] 8076: 27ff movs r7, #255 ; 0xff 8078: 465b mov r3, fp 807a: 1aff subs r7, r7, r3 807c: 231f movs r3, #31 807e: 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))); 8080: 3320 adds r3, #32 8082: 4699 mov r9, r3 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 8084: 4b06 ldr r3, [pc, #24] ; (80a0 <_lv_blend_map+0x3b0>) 8086: 469a mov sl, r3 8088: 46b8 mov r8, r7 808a: 465f mov r7, fp 808c: e03b b.n 8106 <_lv_blend_map+0x416> 808e: 46c0 nop ; (mov r8, r8) 8090: 0001140b .word 0x0001140b 8094: 00005591 .word 0x00005591 8098: 00010e75 .word 0x00010e75 809c: 000113ef .word 0x000113ef 80a0: fffff81f .word 0xfffff81f for(y = 0; y < draw_area_h; y++) { 80a4: 9b0b ldr r3, [sp, #44] ; 0x2c 80a6: 2b00 cmp r3, #0 80a8: dc00 bgt.n 80ac <_lv_blend_map+0x3bc> 80aa: e637 b.n 7d1c <_lv_blend_map+0x2c> _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 80ac: 9b0c ldr r3, [sp, #48] ; 0x30 80ae: 005c lsls r4, r3, #1 disp_buf_first += disp_w; 80b0: 4643 mov r3, r8 80b2: 005b lsls r3, r3, #1 80b4: 4698 mov r8, r3 map_buf_first += map_w; 80b6: 0076 lsls r6, r6, #1 80b8: 2500 movs r5, #0 _lv_memcpy(disp_buf_first, map_buf_first, draw_area_w * sizeof(lv_color_t)); 80ba: 4f80 ldr r7, [pc, #512] ; (82bc <_lv_blend_map+0x5cc>) 80bc: 0022 movs r2, r4 80be: 9b09 ldr r3, [sp, #36] ; 0x24 80c0: 469a mov sl, r3 80c2: 0019 movs r1, r3 80c4: 9b08 ldr r3, [sp, #32] 80c6: 4699 mov r9, r3 80c8: 0018 movs r0, r3 80ca: 47b8 blx r7 disp_buf_first += disp_w; 80cc: 464b mov r3, r9 80ce: 4443 add r3, r8 80d0: 9308 str r3, [sp, #32] map_buf_first += map_w; 80d2: 46d4 mov ip, sl 80d4: 44b4 add ip, r6 80d6: 4663 mov r3, ip 80d8: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 80da: 3501 adds r5, #1 80dc: 9b0b ldr r3, [sp, #44] ; 0x2c 80de: 42ab cmp r3, r5 80e0: dcec bgt.n 80bc <_lv_blend_map+0x3cc> 80e2: e61b b.n 7d1c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 80e4: 9b08 ldr r3, [sp, #32] 80e6: 9a0a ldr r2, [sp, #40] ; 0x28 80e8: 4693 mov fp, r2 80ea: 445b add r3, fp 80ec: 9308 str r3, [sp, #32] map_buf_first += map_w; 80ee: 9b09 ldr r3, [sp, #36] ; 0x24 80f0: 9a0d ldr r2, [sp, #52] ; 0x34 80f2: 4693 mov fp, r2 80f4: 445b add r3, fp 80f6: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 80f8: 9b07 ldr r3, [sp, #28] 80fa: 3301 adds r3, #1 80fc: 9307 str r3, [sp, #28] 80fe: 9a0b ldr r2, [sp, #44] ; 0x2c 8100: 429a cmp r2, r3 8102: dc00 bgt.n 8106 <_lv_blend_map+0x416> 8104: e60a b.n 7d1c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w; x++) { 8106: 9b06 ldr r3, [sp, #24] 8108: 2b00 cmp r3, #0 810a: ddeb ble.n 80e4 <_lv_blend_map+0x3f4> 810c: 9b09 ldr r3, [sp, #36] ; 0x24 810e: 001e movs r6, r3 8110: 9d08 ldr r5, [sp, #32] 8112: 9a0c ldr r2, [sp, #48] ; 0x30 8114: 4693 mov fp, r2 8116: 445b add r3, fp 8118: 469b mov fp, r3 811a: 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))); 811c: 7873 ldrb r3, [r6, #1] 811e: 08db lsrs r3, r3, #3 8120: 437b muls r3, r7 8122: 786a ldrb r2, [r5, #1] 8124: 08d2 lsrs r2, r2, #3 8126: 434a muls r2, r1 8128: 189a adds r2, r3, r2 812a: 0213 lsls r3, r2, #8 812c: 189b adds r3, r3, r2 812e: 01db lsls r3, r3, #7 8130: 189b adds r3, r3, r2 8132: 0ddb lsrs r3, r3, #23 8134: 4662 mov r2, ip 8136: 4013 ands r3, r2 8138: 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))); 813a: 8832 ldrh r2, [r6, #0] 813c: 0552 lsls r2, r2, #21 813e: 0e92 lsrs r2, r2, #26 8140: 437a muls r2, r7 8142: 882c ldrh r4, [r5, #0] 8144: 0564 lsls r4, r4, #21 8146: 0ea4 lsrs r4, r4, #26 8148: 434c muls r4, r1 814a: 1914 adds r4, r2, r4 814c: 0222 lsls r2, r4, #8 814e: 1912 adds r2, r2, r4 8150: 01d2 lsls r2, r2, #7 8152: 1912 adds r2, r2, r4 8154: 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))); 8156: 7834 ldrb r4, [r6, #0] 8158: 06e4 lsls r4, r4, #27 815a: 0ee4 lsrs r4, r4, #27 815c: 437c muls r4, r7 815e: 7828 ldrb r0, [r5, #0] 8160: 4680 mov r8, r0 8162: 06c0 lsls r0, r0, #27 8164: 0ec0 lsrs r0, r0, #27 8166: 4348 muls r0, r1 8168: 1820 adds r0, r4, r0 816a: 0204 lsls r4, r0, #8 816c: 1824 adds r4, r4, r0 816e: 01e4 lsls r4, r4, #7 8170: 1824 adds r4, r4, r0 8172: 0de4 lsrs r4, r4, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa); 8174: 4660 mov r0, ip 8176: 4004 ands r4, r0 8178: 4640 mov r0, r8 817a: 4663 mov r3, ip 817c: 4398 bics r0, r3 817e: 4304 orrs r4, r0 8180: 702c strb r4, [r5, #0] 8182: 464b mov r3, r9 8184: 401a ands r2, r3 8186: 0154 lsls r4, r2, #5 8188: 882a ldrh r2, [r5, #0] 818a: 4653 mov r3, sl 818c: 401a ands r2, r3 818e: 4322 orrs r2, r4 8190: 802a strh r2, [r5, #0] 8192: 9b05 ldr r3, [sp, #20] 8194: 00db lsls r3, r3, #3 8196: 0a12 lsrs r2, r2, #8 8198: 2007 movs r0, #7 819a: 4002 ands r2, r0 819c: 4313 orrs r3, r2 819e: 706b strb r3, [r5, #1] 81a0: 3602 adds r6, #2 81a2: 3502 adds r5, #2 for(x = 0; x < draw_area_w; x++) { 81a4: 455e cmp r6, fp 81a6: d1b9 bne.n 811c <_lv_blend_map+0x42c> 81a8: 4688 mov r8, r1 81aa: e79b b.n 80e4 <_lv_blend_map+0x3f4> int32_t x_end4 = draw_area_w - 4; 81ac: 9b0c ldr r3, [sp, #48] ; 0x30 81ae: 3b04 subs r3, #4 81b0: 9307 str r3, [sp, #28] for(y = 0; y < draw_area_h; y++) { 81b2: 9b0b ldr r3, [sp, #44] ; 0x2c 81b4: 2b00 cmp r3, #0 81b6: dc00 bgt.n 81ba <_lv_blend_map+0x4ca> 81b8: e5b0 b.n 7d1c <_lv_blend_map+0x2c> disp_buf_first += disp_w; 81ba: 4643 mov r3, r8 81bc: 005b lsls r3, r3, #1 81be: 930e str r3, [sp, #56] ; 0x38 map_buf_first += map_w; 81c0: 0073 lsls r3, r6, #1 81c2: 930f str r3, [sp, #60] ; 0x3c 81c4: 950a str r5, [sp, #40] ; 0x28 81c6: 2300 movs r3, #0 81c8: 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))); 81ca: 331f adds r3, #31 81cc: 469b mov fp, r3 81ce: 9b06 ldr r3, [sp, #24] 81d0: 4699 mov r9, r3 81d2: e3b8 b.n 8946 <_lv_blend_map+0xc56> MAP_NORMAL_MASK_PX(x) 81d4: 8803 ldrh r3, [r0, #0] 81d6: 800b strh r3, [r1, #0] 81d8: 3701 adds r7, #1 for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 81da: 3601 adds r6, #1 81dc: 9b05 ldr r3, [sp, #20] 81de: 42b3 cmp r3, r6 81e0: dc00 bgt.n 81e4 <_lv_blend_map+0x4f4> 81e2: e393 b.n 890c <_lv_blend_map+0xc1c> 81e4: 3002 adds r0, #2 81e6: 3102 adds r1, #2 81e8: 2303 movs r3, #3 81ea: 421f tst r7, r3 81ec: d053 beq.n 8296 <_lv_blend_map+0x5a6> MAP_NORMAL_MASK_PX(x) 81ee: 783d ldrb r5, [r7, #0] 81f0: 2d00 cmp r5, #0 81f2: d0f1 beq.n 81d8 <_lv_blend_map+0x4e8> 81f4: 2dff cmp r5, #255 ; 0xff 81f6: d0ed beq.n 81d4 <_lv_blend_map+0x4e4> 81f8: 23ff movs r3, #255 ; 0xff 81fa: 1b5b subs r3, r3, r5 81fc: 4699 mov r9, r3 81fe: 7843 ldrb r3, [r0, #1] 8200: 08db lsrs r3, r3, #3 8202: 436b muls r3, r5 8204: 784a ldrb r2, [r1, #1] 8206: 08d2 lsrs r2, r2, #3 8208: 464c mov r4, r9 820a: 4362 muls r2, r4 820c: 189a adds r2, r3, r2 820e: 0213 lsls r3, r2, #8 8210: 189b adds r3, r3, r2 8212: 01db lsls r3, r3, #7 8214: 189b adds r3, r3, r2 8216: 0ddb lsrs r3, r3, #23 8218: 465a mov r2, fp 821a: 4013 ands r3, r2 821c: 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))); 821e: 8802 ldrh r2, [r0, #0] 8220: 0552 lsls r2, r2, #21 8222: 0e92 lsrs r2, r2, #26 8224: 436a muls r2, r5 8226: 4694 mov ip, r2 8228: 880a ldrh r2, [r1, #0] 822a: 0552 lsls r2, r2, #21 822c: 0e92 lsrs r2, r2, #26 822e: 4362 muls r2, r4 8230: 4462 add r2, ip 8232: 0214 lsls r4, r2, #8 8234: 46a4 mov ip, r4 8236: 4494 add ip, r2 8238: 4664 mov r4, ip 823a: 01e4 lsls r4, r4, #7 823c: 46a4 mov ip, r4 823e: 4462 add r2, ip 8240: 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))); 8242: 7804 ldrb r4, [r0, #0] 8244: 06e4 lsls r4, r4, #27 8246: 0ee4 lsrs r4, r4, #27 8248: 4365 muls r5, r4 824a: 780c ldrb r4, [r1, #0] 824c: 46a4 mov ip, r4 824e: 06e4 lsls r4, r4, #27 8250: 0ee4 lsrs r4, r4, #27 8252: 46a0 mov r8, r4 8254: 464c mov r4, r9 8256: 4643 mov r3, r8 8258: 435c muls r4, r3 825a: 46a0 mov r8, r4 825c: 44a8 add r8, r5 825e: 4643 mov r3, r8 8260: 021d lsls r5, r3, #8 8262: 4445 add r5, r8 8264: 01ed lsls r5, r5, #7 8266: 4445 add r5, r8 8268: 0ded lsrs r5, r5, #23 826a: 465b mov r3, fp 826c: 401d ands r5, r3 826e: 4664 mov r4, ip 8270: 439c bics r4, r3 8272: 4325 orrs r5, r4 8274: 700d strb r5, [r1, #0] 8276: 233f movs r3, #63 ; 0x3f 8278: 401a ands r2, r3 827a: 0155 lsls r5, r2, #5 827c: 880a ldrh r2, [r1, #0] 827e: 4653 mov r3, sl 8280: 401a ands r2, r3 8282: 432a orrs r2, r5 8284: 800a strh r2, [r1, #0] 8286: 9b06 ldr r3, [sp, #24] 8288: 00db lsls r3, r3, #3 828a: 0a12 lsrs r2, r2, #8 828c: 2407 movs r4, #7 828e: 4022 ands r2, r4 8290: 4313 orrs r3, r2 8292: 704b strb r3, [r1, #1] 8294: e7a0 b.n 81d8 <_lv_blend_map+0x4e8> 8296: 9b05 ldr r3, [sp, #20] 8298: 4699 mov r9, r3 for(; x < x_end4; x += 4) { 829a: 9b07 ldr r3, [sp, #28] 829c: 42b3 cmp r3, r6 829e: dc00 bgt.n 82a2 <_lv_blend_map+0x5b2> 82a0: e321 b.n 88e6 <_lv_blend_map+0xbf6> 82a2: 0070 lsls r0, r6, #1 82a4: 9b09 ldr r3, [sp, #36] ; 0x24 82a6: 181c adds r4, r3, r0 82a8: 9b08 ldr r3, [sp, #32] 82aa: 469c mov ip, r3 82ac: 4460 add r0, ip MAP_NORMAL_MASK_PX(x + 3) 82ae: 4b04 ldr r3, [pc, #16] ; (82c0 <_lv_blend_map+0x5d0>) 82b0: 469a mov sl, r3 82b2: 464b mov r3, r9 82b4: 9306 str r3, [sp, #24] 82b6: 9605 str r6, [sp, #20] 82b8: e016 b.n 82e8 <_lv_blend_map+0x5f8> 82ba: 46c0 nop ; (mov r8, r8) 82bc: 00012545 .word 0x00012545 82c0: fffff81f .word 0xfffff81f disp_buf_first[x] = map_buf_first[x]; 82c4: 8823 ldrh r3, [r4, #0] 82c6: 8003 strh r3, [r0, #0] disp_buf_first[x + 1] = map_buf_first[x + 1]; 82c8: 8863 ldrh r3, [r4, #2] 82ca: 8043 strh r3, [r0, #2] disp_buf_first[x + 2] = map_buf_first[x + 2]; 82cc: 88a3 ldrh r3, [r4, #4] 82ce: 8083 strh r3, [r0, #4] disp_buf_first[x + 3] = map_buf_first[x + 3]; 82d0: 88e3 ldrh r3, [r4, #6] 82d2: 80c3 strh r3, [r0, #6] mask32++; 82d4: 3704 adds r7, #4 for(; x < x_end4; x += 4) { 82d6: 9a05 ldr r2, [sp, #20] 82d8: 3204 adds r2, #4 82da: 9205 str r2, [sp, #20] 82dc: 3408 adds r4, #8 82de: 3008 adds r0, #8 82e0: 9b07 ldr r3, [sp, #28] 82e2: 4293 cmp r3, r2 82e4: dc00 bgt.n 82e8 <_lv_blend_map+0x5f8> 82e6: e14b b.n 8580 <_lv_blend_map+0x890> if(*mask32) { 82e8: 683b ldr r3, [r7, #0] 82ea: 2b00 cmp r3, #0 82ec: d0f2 beq.n 82d4 <_lv_blend_map+0x5e4> if((*mask32) == 0xFFFFFFFF) { 82ee: 3301 adds r3, #1 82f0: d0e8 beq.n 82c4 <_lv_blend_map+0x5d4> MAP_NORMAL_MASK_PX(x) 82f2: 7839 ldrb r1, [r7, #0] 82f4: 2900 cmp r1, #0 82f6: d049 beq.n 838c <_lv_blend_map+0x69c> 82f8: 29ff cmp r1, #255 ; 0xff 82fa: d100 bne.n 82fe <_lv_blend_map+0x60e> 82fc: e134 b.n 8568 <_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))); 82fe: 23ff movs r3, #255 ; 0xff 8300: 1a5d subs r5, r3, r1 8302: 7862 ldrb r2, [r4, #1] 8304: 08d2 lsrs r2, r2, #3 8306: 0013 movs r3, r2 8308: 434b muls r3, r1 830a: 7842 ldrb r2, [r0, #1] 830c: 08d2 lsrs r2, r2, #3 830e: 436a muls r2, r5 8310: 189a adds r2, r3, r2 8312: 0213 lsls r3, r2, #8 8314: 189b adds r3, r3, r2 8316: 01db lsls r3, r3, #7 8318: 189b adds r3, r3, r2 831a: 0ddb lsrs r3, r3, #23 831c: 465a mov r2, fp 831e: 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))); 8320: 8822 ldrh r2, [r4, #0] 8322: 0552 lsls r2, r2, #21 8324: 0e92 lsrs r2, r2, #26 8326: 434a muls r2, r1 8328: 4694 mov ip, r2 832a: 8802 ldrh r2, [r0, #0] 832c: 0552 lsls r2, r2, #21 832e: 0e92 lsrs r2, r2, #26 8330: 436a muls r2, r5 8332: 4462 add r2, ip 8334: 0216 lsls r6, r2, #8 8336: 46b4 mov ip, r6 8338: 4494 add ip, r2 833a: 4666 mov r6, ip 833c: 01f6 lsls r6, r6, #7 833e: 46b4 mov ip, r6 8340: 4462 add r2, ip 8342: 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))); 8344: 7826 ldrb r6, [r4, #0] 8346: 06f6 lsls r6, r6, #27 8348: 0ef6 lsrs r6, r6, #27 834a: 4371 muls r1, r6 834c: 7806 ldrb r6, [r0, #0] 834e: 46b4 mov ip, r6 8350: 06f6 lsls r6, r6, #27 8352: 0ef6 lsrs r6, r6, #27 8354: 4375 muls r5, r6 8356: 194d adds r5, r1, r5 8358: 0229 lsls r1, r5, #8 835a: 1949 adds r1, r1, r5 835c: 01c9 lsls r1, r1, #7 835e: 1949 adds r1, r1, r5 8360: 0dc9 lsrs r1, r1, #23 8362: 465d mov r5, fp 8364: 4029 ands r1, r5 8366: 4665 mov r5, ip 8368: 465e mov r6, fp 836a: 43b5 bics r5, r6 836c: 4329 orrs r1, r5 836e: 7001 strb r1, [r0, #0] 8370: 213f movs r1, #63 ; 0x3f 8372: 400a ands r2, r1 8374: 0151 lsls r1, r2, #5 8376: 8802 ldrh r2, [r0, #0] 8378: 4655 mov r5, sl 837a: 402a ands r2, r5 837c: 430a orrs r2, r1 837e: 8002 strh r2, [r0, #0] 8380: 00db lsls r3, r3, #3 8382: 0a12 lsrs r2, r2, #8 8384: 2107 movs r1, #7 8386: 400a ands r2, r1 8388: 4313 orrs r3, r2 838a: 7043 strb r3, [r0, #1] MAP_NORMAL_MASK_PX(x + 1) 838c: 7879 ldrb r1, [r7, #1] 838e: 2900 cmp r1, #0 8390: d04b beq.n 842a <_lv_blend_map+0x73a> 8392: 29ff cmp r1, #255 ; 0xff 8394: d100 bne.n 8398 <_lv_blend_map+0x6a8> 8396: e0ea b.n 856e <_lv_blend_map+0x87e> 8398: 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))); 839a: 22ff movs r2, #255 ; 0xff 839c: 1a55 subs r5, r2, r1 839e: 78e2 ldrb r2, [r4, #3] 83a0: 08d2 lsrs r2, r2, #3 83a2: 434a muls r2, r1 83a4: 4698 mov r8, r3 83a6: 78c3 ldrb r3, [r0, #3] 83a8: 08db lsrs r3, r3, #3 83aa: 436b muls r3, r5 83ac: 18d2 adds r2, r2, r3 83ae: 0213 lsls r3, r2, #8 83b0: 189b adds r3, r3, r2 83b2: 01db lsls r3, r3, #7 83b4: 189b adds r3, r3, r2 83b6: 0ddb lsrs r3, r3, #23 83b8: 465a mov r2, fp 83ba: 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))); 83bc: 8862 ldrh r2, [r4, #2] 83be: 0552 lsls r2, r2, #21 83c0: 0e92 lsrs r2, r2, #26 83c2: 434a muls r2, r1 83c4: 4694 mov ip, r2 83c6: 8842 ldrh r2, [r0, #2] 83c8: 0552 lsls r2, r2, #21 83ca: 0e92 lsrs r2, r2, #26 83cc: 436a muls r2, r5 83ce: 4462 add r2, ip 83d0: 0216 lsls r6, r2, #8 83d2: 46b4 mov ip, r6 83d4: 4494 add ip, r2 83d6: 4666 mov r6, ip 83d8: 01f6 lsls r6, r6, #7 83da: 46b4 mov ip, r6 83dc: 4462 add r2, ip 83de: 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))); 83e0: 78a6 ldrb r6, [r4, #2] 83e2: 06f6 lsls r6, r6, #27 83e4: 0ef6 lsrs r6, r6, #27 83e6: 4371 muls r1, r6 83e8: 7886 ldrb r6, [r0, #2] 83ea: 46b4 mov ip, r6 83ec: 06f6 lsls r6, r6, #27 83ee: 0ef6 lsrs r6, r6, #27 83f0: 4375 muls r5, r6 83f2: 194d adds r5, r1, r5 83f4: 0229 lsls r1, r5, #8 83f6: 1949 adds r1, r1, r5 83f8: 01c9 lsls r1, r1, #7 83fa: 1949 adds r1, r1, r5 83fc: 0dc9 lsrs r1, r1, #23 83fe: 465d mov r5, fp 8400: 4029 ands r1, r5 8402: 4665 mov r5, ip 8404: 465e mov r6, fp 8406: 43b5 bics r5, r6 8408: 4329 orrs r1, r5 840a: 7081 strb r1, [r0, #2] 840c: 213f movs r1, #63 ; 0x3f 840e: 400a ands r2, r1 8410: 0151 lsls r1, r2, #5 8412: 8842 ldrh r2, [r0, #2] 8414: 4655 mov r5, sl 8416: 402a ands r2, r5 8418: 430a orrs r2, r1 841a: 8042 strh r2, [r0, #2] 841c: 00db lsls r3, r3, #3 841e: 0a12 lsrs r2, r2, #8 8420: 2107 movs r1, #7 8422: 400a ands r2, r1 8424: 4313 orrs r3, r2 8426: 4642 mov r2, r8 8428: 7053 strb r3, [r2, #1] MAP_NORMAL_MASK_PX(x + 2) 842a: 78b9 ldrb r1, [r7, #2] 842c: 2900 cmp r1, #0 842e: d04b beq.n 84c8 <_lv_blend_map+0x7d8> 8430: 29ff cmp r1, #255 ; 0xff 8432: d100 bne.n 8436 <_lv_blend_map+0x746> 8434: e09e b.n 8574 <_lv_blend_map+0x884> 8436: 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))); 8438: 22ff movs r2, #255 ; 0xff 843a: 1a55 subs r5, r2, r1 843c: 7962 ldrb r2, [r4, #5] 843e: 08d2 lsrs r2, r2, #3 8440: 434a muls r2, r1 8442: 4698 mov r8, r3 8444: 7943 ldrb r3, [r0, #5] 8446: 08db lsrs r3, r3, #3 8448: 436b muls r3, r5 844a: 18d2 adds r2, r2, r3 844c: 0213 lsls r3, r2, #8 844e: 189b adds r3, r3, r2 8450: 01db lsls r3, r3, #7 8452: 189b adds r3, r3, r2 8454: 0ddb lsrs r3, r3, #23 8456: 465a mov r2, fp 8458: 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))); 845a: 88a2 ldrh r2, [r4, #4] 845c: 0552 lsls r2, r2, #21 845e: 0e92 lsrs r2, r2, #26 8460: 434a muls r2, r1 8462: 4694 mov ip, r2 8464: 8882 ldrh r2, [r0, #4] 8466: 0552 lsls r2, r2, #21 8468: 0e92 lsrs r2, r2, #26 846a: 436a muls r2, r5 846c: 4462 add r2, ip 846e: 0216 lsls r6, r2, #8 8470: 46b4 mov ip, r6 8472: 4494 add ip, r2 8474: 4666 mov r6, ip 8476: 01f6 lsls r6, r6, #7 8478: 46b4 mov ip, r6 847a: 4462 add r2, ip 847c: 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))); 847e: 7926 ldrb r6, [r4, #4] 8480: 06f6 lsls r6, r6, #27 8482: 0ef6 lsrs r6, r6, #27 8484: 4371 muls r1, r6 8486: 7906 ldrb r6, [r0, #4] 8488: 46b4 mov ip, r6 848a: 06f6 lsls r6, r6, #27 848c: 0ef6 lsrs r6, r6, #27 848e: 4375 muls r5, r6 8490: 194d adds r5, r1, r5 8492: 0229 lsls r1, r5, #8 8494: 1949 adds r1, r1, r5 8496: 01c9 lsls r1, r1, #7 8498: 1949 adds r1, r1, r5 849a: 0dc9 lsrs r1, r1, #23 849c: 465d mov r5, fp 849e: 4029 ands r1, r5 84a0: 4665 mov r5, ip 84a2: 465e mov r6, fp 84a4: 43b5 bics r5, r6 84a6: 4329 orrs r1, r5 84a8: 7101 strb r1, [r0, #4] 84aa: 213f movs r1, #63 ; 0x3f 84ac: 400a ands r2, r1 84ae: 0151 lsls r1, r2, #5 84b0: 8882 ldrh r2, [r0, #4] 84b2: 4655 mov r5, sl 84b4: 402a ands r2, r5 84b6: 430a orrs r2, r1 84b8: 8082 strh r2, [r0, #4] 84ba: 00db lsls r3, r3, #3 84bc: 0a12 lsrs r2, r2, #8 84be: 2107 movs r1, #7 84c0: 400a ands r2, r1 84c2: 4313 orrs r3, r2 84c4: 4642 mov r2, r8 84c6: 7053 strb r3, [r2, #1] MAP_NORMAL_MASK_PX(x + 3) 84c8: 78f9 ldrb r1, [r7, #3] 84ca: 2900 cmp r1, #0 84cc: d100 bne.n 84d0 <_lv_blend_map+0x7e0> 84ce: e701 b.n 82d4 <_lv_blend_map+0x5e4> 84d0: 29ff cmp r1, #255 ; 0xff 84d2: d052 beq.n 857a <_lv_blend_map+0x88a> 84d4: 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))); 84d6: 22ff movs r2, #255 ; 0xff 84d8: 1a55 subs r5, r2, r1 84da: 79e2 ldrb r2, [r4, #7] 84dc: 08d2 lsrs r2, r2, #3 84de: 434a muls r2, r1 84e0: 4698 mov r8, r3 84e2: 79c3 ldrb r3, [r0, #7] 84e4: 08db lsrs r3, r3, #3 84e6: 436b muls r3, r5 84e8: 18d2 adds r2, r2, r3 84ea: 0213 lsls r3, r2, #8 84ec: 189b adds r3, r3, r2 84ee: 01db lsls r3, r3, #7 84f0: 189b adds r3, r3, r2 84f2: 0ddb lsrs r3, r3, #23 84f4: 465a mov r2, fp 84f6: 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))); 84f8: 88e2 ldrh r2, [r4, #6] 84fa: 0552 lsls r2, r2, #21 84fc: 0e92 lsrs r2, r2, #26 84fe: 434a muls r2, r1 8500: 4694 mov ip, r2 8502: 88c2 ldrh r2, [r0, #6] 8504: 0552 lsls r2, r2, #21 8506: 0e92 lsrs r2, r2, #26 8508: 436a muls r2, r5 850a: 4462 add r2, ip 850c: 0216 lsls r6, r2, #8 850e: 46b4 mov ip, r6 8510: 4494 add ip, r2 8512: 4666 mov r6, ip 8514: 01f6 lsls r6, r6, #7 8516: 46b4 mov ip, r6 8518: 4462 add r2, ip 851a: 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))); 851c: 79a6 ldrb r6, [r4, #6] 851e: 06f6 lsls r6, r6, #27 8520: 0ef6 lsrs r6, r6, #27 8522: 4371 muls r1, r6 8524: 7986 ldrb r6, [r0, #6] 8526: 46b4 mov ip, r6 8528: 06f6 lsls r6, r6, #27 852a: 0ef6 lsrs r6, r6, #27 852c: 4375 muls r5, r6 852e: 194d adds r5, r1, r5 8530: 0229 lsls r1, r5, #8 8532: 1949 adds r1, r1, r5 8534: 01c9 lsls r1, r1, #7 8536: 1949 adds r1, r1, r5 8538: 0dc9 lsrs r1, r1, #23 853a: 465d mov r5, fp 853c: 4029 ands r1, r5 853e: 4665 mov r5, ip 8540: 465e mov r6, fp 8542: 43b5 bics r5, r6 8544: 4329 orrs r1, r5 8546: 7181 strb r1, [r0, #6] 8548: 213f movs r1, #63 ; 0x3f 854a: 400a ands r2, r1 854c: 0151 lsls r1, r2, #5 854e: 88c2 ldrh r2, [r0, #6] 8550: 4655 mov r5, sl 8552: 402a ands r2, r5 8554: 430a orrs r2, r1 8556: 80c2 strh r2, [r0, #6] 8558: 00db lsls r3, r3, #3 855a: 0a12 lsrs r2, r2, #8 855c: 2107 movs r1, #7 855e: 400a ands r2, r1 8560: 4313 orrs r3, r2 8562: 4642 mov r2, r8 8564: 7053 strb r3, [r2, #1] 8566: e6b5 b.n 82d4 <_lv_blend_map+0x5e4> MAP_NORMAL_MASK_PX(x) 8568: 8823 ldrh r3, [r4, #0] 856a: 8003 strh r3, [r0, #0] 856c: e70e b.n 838c <_lv_blend_map+0x69c> MAP_NORMAL_MASK_PX(x + 1) 856e: 8863 ldrh r3, [r4, #2] 8570: 8043 strh r3, [r0, #2] 8572: e75a b.n 842a <_lv_blend_map+0x73a> MAP_NORMAL_MASK_PX(x + 2) 8574: 88a3 ldrh r3, [r4, #4] 8576: 8083 strh r3, [r0, #4] 8578: e7a6 b.n 84c8 <_lv_blend_map+0x7d8> MAP_NORMAL_MASK_PX(x + 3) 857a: 88e3 ldrh r3, [r4, #6] 857c: 80c3 strh r3, [r0, #6] 857e: e6a9 b.n 82d4 <_lv_blend_map+0x5e4> 8580: 9b06 ldr r3, [sp, #24] 8582: 4699 mov r9, r3 8584: 0016 movs r6, r2 for(; x < draw_area_w ; x++) { 8586: 4293 cmp r3, r2 8588: dc00 bgt.n 858c <_lv_blend_map+0x89c> 858a: e1c5 b.n 8918 <_lv_blend_map+0xc28> mask32++; 858c: 003b movs r3, r7 858e: 0077 lsls r7, r6, #1 8590: 9a09 ldr r2, [sp, #36] ; 0x24 8592: 4690 mov r8, r2 8594: 44b8 add r8, r7 8596: 9a08 ldr r2, [sp, #32] 8598: 4694 mov ip, r2 859a: 4467 add r7, ip MAP_NORMAL_MASK_PX(x) 859c: 1b9b subs r3, r3, r6 859e: 9305 str r3, [sp, #20] 85a0: 4bd2 ldr r3, [pc, #840] ; (88ec <_lv_blend_map+0xbfc>) 85a2: 469a mov sl, r3 85a4: 2307 movs r3, #7 85a6: 469c mov ip, r3 85a8: 4644 mov r4, r8 85aa: e007 b.n 85bc <_lv_blend_map+0x8cc> 85ac: 8823 ldrh r3, [r4, #0] 85ae: 803b strh r3, [r7, #0] for(; x < draw_area_w ; x++) { 85b0: 3601 adds r6, #1 85b2: 3402 adds r4, #2 85b4: 3702 adds r7, #2 85b6: 45b1 cmp r9, r6 85b8: dc00 bgt.n 85bc <_lv_blend_map+0x8cc> 85ba: e1ad b.n 8918 <_lv_blend_map+0xc28> MAP_NORMAL_MASK_PX(x) 85bc: 9b05 ldr r3, [sp, #20] 85be: 5d99 ldrb r1, [r3, r6] 85c0: 2900 cmp r1, #0 85c2: d0f5 beq.n 85b0 <_lv_blend_map+0x8c0> 85c4: 29ff cmp r1, #255 ; 0xff 85c6: d0f1 beq.n 85ac <_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))); 85c8: 23ff movs r3, #255 ; 0xff 85ca: 1a58 subs r0, r3, r1 85cc: 7862 ldrb r2, [r4, #1] 85ce: 08d2 lsrs r2, r2, #3 85d0: 434a muls r2, r1 85d2: 0015 movs r5, r2 85d4: 787a ldrb r2, [r7, #1] 85d6: 08d2 lsrs r2, r2, #3 85d8: 4342 muls r2, r0 85da: 18ad adds r5, r5, r2 85dc: 022b lsls r3, r5, #8 85de: 195b adds r3, r3, r5 85e0: 01db lsls r3, r3, #7 85e2: 195b adds r3, r3, r5 85e4: 0ddb lsrs r3, r3, #23 85e6: 465a mov r2, fp 85e8: 4013 ands r3, r2 85ea: 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))); 85ec: 8825 ldrh r5, [r4, #0] 85ee: 056d lsls r5, r5, #21 85f0: 0ead lsrs r5, r5, #26 85f2: 434d muls r5, r1 85f4: 883a ldrh r2, [r7, #0] 85f6: 0552 lsls r2, r2, #21 85f8: 0e92 lsrs r2, r2, #26 85fa: 4342 muls r2, r0 85fc: 18ad adds r5, r5, r2 85fe: 022a lsls r2, r5, #8 8600: 1952 adds r2, r2, r5 8602: 01d2 lsls r2, r2, #7 8604: 1952 adds r2, r2, r5 8606: 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))); 8608: 7825 ldrb r5, [r4, #0] 860a: 06ed lsls r5, r5, #27 860c: 0eed lsrs r5, r5, #27 860e: 4369 muls r1, r5 8610: 783d ldrb r5, [r7, #0] 8612: 06eb lsls r3, r5, #27 8614: 0edb lsrs r3, r3, #27 8616: 4358 muls r0, r3 8618: 1808 adds r0, r1, r0 861a: 0201 lsls r1, r0, #8 861c: 1809 adds r1, r1, r0 861e: 01c9 lsls r1, r1, #7 8620: 1809 adds r1, r1, r0 8622: 0dc9 lsrs r1, r1, #23 8624: 465b mov r3, fp 8626: 4019 ands r1, r3 8628: 439d bics r5, r3 862a: 4329 orrs r1, r5 862c: 7039 strb r1, [r7, #0] 862e: 233f movs r3, #63 ; 0x3f 8630: 401a ands r2, r3 8632: 0151 lsls r1, r2, #5 8634: 883a ldrh r2, [r7, #0] 8636: 4653 mov r3, sl 8638: 401a ands r2, r3 863a: 430a orrs r2, r1 863c: 803a strh r2, [r7, #0] 863e: 9b06 ldr r3, [sp, #24] 8640: 00db lsls r3, r3, #3 8642: 0a12 lsrs r2, r2, #8 8644: 4661 mov r1, ip 8646: 400a ands r2, r1 8648: 4313 orrs r3, r2 864a: 707b strb r3, [r7, #1] 864c: e7b0 b.n 85b0 <_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))); 864e: 23ff movs r3, #255 ; 0xff 8650: 1a1d subs r5, r3, r0 8652: 784b ldrb r3, [r1, #1] 8654: 08db lsrs r3, r3, #3 8656: 4343 muls r3, r0 8658: 7872 ldrb r2, [r6, #1] 865a: 08d2 lsrs r2, r2, #3 865c: 436a muls r2, r5 865e: 189a adds r2, r3, r2 8660: 0213 lsls r3, r2, #8 8662: 189b adds r3, r3, r2 8664: 01db lsls r3, r3, #7 8666: 189b adds r3, r3, r2 8668: 0ddb lsrs r3, r3, #23 866a: 4642 mov r2, r8 866c: 4013 ands r3, r2 866e: 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))); 8670: 880a ldrh r2, [r1, #0] 8672: 0552 lsls r2, r2, #21 8674: 0e92 lsrs r2, r2, #26 8676: 4342 muls r2, r0 8678: 4691 mov r9, r2 867a: 8832 ldrh r2, [r6, #0] 867c: 0552 lsls r2, r2, #21 867e: 0e92 lsrs r2, r2, #26 8680: 436a muls r2, r5 8682: 444a add r2, r9 8684: 0213 lsls r3, r2, #8 8686: 4699 mov r9, r3 8688: 4491 add r9, r2 868a: 464b mov r3, r9 868c: 01db lsls r3, r3, #7 868e: 4699 mov r9, r3 8690: 444a add r2, r9 8692: 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))); 8694: 780b ldrb r3, [r1, #0] 8696: 06db lsls r3, r3, #27 8698: 0edb lsrs r3, r3, #27 869a: 4343 muls r3, r0 869c: 4699 mov r9, r3 869e: 7833 ldrb r3, [r6, #0] 86a0: 469c mov ip, r3 86a2: 06db lsls r3, r3, #27 86a4: 0edb lsrs r3, r3, #27 86a6: 435d muls r5, r3 86a8: 44a9 add r9, r5 86aa: 464b mov r3, r9 86ac: 021d lsls r5, r3, #8 86ae: 444d add r5, r9 86b0: 01ed lsls r5, r5, #7 86b2: 444d add r5, r9 86b4: 0ded lsrs r5, r5, #23 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 86b6: 4643 mov r3, r8 86b8: 401d ands r5, r3 86ba: 4663 mov r3, ip 86bc: 4640 mov r0, r8 86be: 4383 bics r3, r0 86c0: 431d orrs r5, r3 86c2: 7035 strb r5, [r6, #0] 86c4: 233f movs r3, #63 ; 0x3f 86c6: 401a ands r2, r3 86c8: 0155 lsls r5, r2, #5 86ca: 8832 ldrh r2, [r6, #0] 86cc: 4b87 ldr r3, [pc, #540] ; (88ec <_lv_blend_map+0xbfc>) 86ce: 401a ands r2, r3 86d0: 432a orrs r2, r5 86d2: 8032 strh r2, [r6, #0] 86d4: 9b05 ldr r3, [sp, #20] 86d6: 00db lsls r3, r3, #3 86d8: 0a12 lsrs r2, r2, #8 86da: 4658 mov r0, fp 86dc: 4002 ands r2, r0 86de: 4313 orrs r3, r2 86e0: 7073 strb r3, [r6, #1] for(x = 0; x < draw_area_w; x++) { 86e2: 3701 adds r7, #1 86e4: 3102 adds r1, #2 86e6: 3602 adds r6, #2 86e8: 9b06 ldr r3, [sp, #24] 86ea: 42bb cmp r3, r7 86ec: dd09 ble.n 8702 <_lv_blend_map+0xa12> if(mask[x]) { 86ee: 5de5 ldrb r5, [r4, r7] 86f0: 2d00 cmp r5, #0 86f2: d0f6 beq.n 86e2 <_lv_blend_map+0x9f2> lv_opa_t opa_tmp = mask[x] >= LV_OPA_MAX ? opa : ((opa * mask[x]) >> 8); 86f4: 9807 ldr r0, [sp, #28] 86f6: 2df9 cmp r5, #249 ; 0xf9 86f8: d8a9 bhi.n 864e <_lv_blend_map+0x95e> 86fa: 9b0a ldr r3, [sp, #40] ; 0x28 86fc: 435d muls r5, r3 86fe: 0a28 lsrs r0, r5, #8 8700: e7a5 b.n 864e <_lv_blend_map+0x95e> 8702: 46a1 mov r9, r4 disp_buf_first += disp_w; 8704: 9b08 ldr r3, [sp, #32] 8706: 9a0e ldr r2, [sp, #56] ; 0x38 8708: 4694 mov ip, r2 870a: 4463 add r3, ip 870c: 9308 str r3, [sp, #32] 870e: 9b0c ldr r3, [sp, #48] ; 0x30 8710: 469c mov ip, r3 8712: 44e1 add r9, ip map_buf_first += map_w; 8714: 9b09 ldr r3, [sp, #36] ; 0x24 8716: 9a0f ldr r2, [sp, #60] ; 0x3c 8718: 4694 mov ip, r2 871a: 4463 add r3, ip 871c: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 871e: 9b0d ldr r3, [sp, #52] ; 0x34 8720: 3301 adds r3, #1 8722: 930d str r3, [sp, #52] ; 0x34 8724: 9a0b ldr r2, [sp, #44] ; 0x2c 8726: 429a cmp r2, r3 8728: dc01 bgt.n 872e <_lv_blend_map+0xa3e> 872a: f7ff faf7 bl 7d1c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w; x++) { 872e: 9b06 ldr r3, [sp, #24] 8730: 2b00 cmp r3, #0 8732: dde7 ble.n 8704 <_lv_blend_map+0xa14> 8734: 9b09 ldr r3, [sp, #36] ; 0x24 8736: 469c mov ip, r3 8738: 9e08 ldr r6, [sp, #32] 873a: 2700 movs r7, #0 disp_buf_first[x] = lv_color_mix(map_buf_first[x], disp_buf_first[x], opa_tmp); 873c: 2307 movs r3, #7 873e: 469b mov fp, r3 8740: 4661 mov r1, ip 8742: 464c mov r4, r9 8744: e7d3 b.n 86ee <_lv_blend_map+0x9fe> switch(mode) { 8746: 2e01 cmp r6, #1 8748: d055 beq.n 87f6 <_lv_blend_map+0xb06> 874a: 2e02 cmp r6, #2 874c: d149 bne.n 87e2 <_lv_blend_map+0xaf2> blend_fp = color_blend_true_color_subtractive; 874e: 4b68 ldr r3, [pc, #416] ; (88f0 <_lv_blend_map+0xc00>) 8750: 930a str r3, [sp, #40] ; 0x28 8752: 464b mov r3, r9 8754: 2210 movs r2, #16 8756: 5e9b ldrsh r3, [r3, r2] 8758: 001a movs r2, r3 875a: 930b str r3, [sp, #44] ; 0x2c 875c: 464b mov r3, r9 875e: 8a9b ldrh r3, [r3, #20] 8760: 3301 adds r3, #1 8762: 1a9b subs r3, r3, r2 8764: b21b sxth r3, r3 8766: 469c mov ip, r3 8768: 2300 movs r3, #0 876a: 5ee2 ldrsh r2, [r4, r3] 876c: 920d str r2, [sp, #52] ; 0x34 876e: 88a3 ldrh r3, [r4, #4] 8770: 3301 adds r3, #1 8772: 1a9b subs r3, r3, r2 8774: b219 sxth r1, r3 lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1; 8776: 9e08 ldr r6, [sp, #32] 8778: 4662 mov r2, ip 877a: 4372 muls r2, r6 877c: 0053 lsls r3, r2, #1 877e: 9a05 ldr r2, [sp, #20] 8780: 4690 mov r8, r2 8782: 4498 add r8, r3 8784: 4643 mov r3, r8 8786: 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)); 8788: 2202 movs r2, #2 878a: 5ea3 ldrsh r3, [r4, r2] 878c: 464a mov r2, r9 878e: 2412 movs r4, #18 8790: 5f14 ldrsh r4, [r2, r4] 8792: 1b1b subs r3, r3, r4 8794: 1af3 subs r3, r6, r3 8796: 434b muls r3, r1 8798: 005b lsls r3, r3, #1 879a: 9a07 ldr r2, [sp, #28] 879c: 18d4 adds r4, r2, r3 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) { 879e: 2f01 cmp r7, #1 87a0: d02c beq.n 87fc <_lv_blend_map+0xb0c> const lv_opa_t * mask_tmp = mask - draw_area->x1; 87a2: 4653 mov r3, sl 87a4: 1aeb subs r3, r5, r3 87a6: 001a movs r2, r3 map_buf_tmp -= draw_area->x1; 87a8: 4653 mov r3, sl 87aa: 005b lsls r3, r3, #1 87ac: 1ae3 subs r3, r4, r3 87ae: 4699 mov r9, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 87b0: 9b08 ldr r3, [sp, #32] 87b2: 9c0c ldr r4, [sp, #48] ; 0x30 87b4: 42a3 cmp r3, r4 87b6: dd01 ble.n 87bc <_lv_blend_map+0xacc> 87b8: f7ff fab0 bl 7d1c <_lv_blend_map+0x2c> disp_buf_tmp += disp_w; 87bc: 4663 mov r3, ip 87be: 005b lsls r3, r3, #1 87c0: 4698 mov r8, r3 map_buf_tmp += map_w; 87c2: 004b lsls r3, r1, #1 87c4: 9307 str r3, [sp, #28] for(x = draw_area->x1; x <= draw_area->x2; x++) { 87c6: af10 add r7, sp, #64 ; 0x40 lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 87c8: 465b mov r3, fp 87ca: 9305 str r3, [sp, #20] 87cc: 3001 adds r0, #1 87ce: 9b09 ldr r3, [sp, #36] ; 0x24 87d0: 1ac0 subs r0, r0, r3 mask_tmp += draw_area_w; 87d2: b203 sxth r3, r0 87d4: 9309 str r3, [sp, #36] ; 0x24 87d6: 9b0a ldr r3, [sp, #40] ; 0x28 87d8: 469a mov sl, r3 87da: 4643 mov r3, r8 87dc: 930a str r3, [sp, #40] ; 0x28 87de: 4690 mov r8, r2 87e0: e072 b.n 88c8 <_lv_blend_map+0xbd8> LV_LOG_WARN("fill_blended: unsupported blend mode"); 87e2: 4b44 ldr r3, [pc, #272] ; (88f4 <_lv_blend_map+0xc04>) 87e4: 9300 str r3, [sp, #0] 87e6: 4b44 ldr r3, [pc, #272] ; (88f8 <_lv_blend_map+0xc08>) 87e8: 4a44 ldr r2, [pc, #272] ; (88fc <_lv_blend_map+0xc0c>) 87ea: 4945 ldr r1, [pc, #276] ; (8900 <_lv_blend_map+0xc10>) 87ec: 2002 movs r0, #2 87ee: 4c45 ldr r4, [pc, #276] ; (8904 <_lv_blend_map+0xc14>) 87f0: 47a0 blx r4 87f2: f7ff fa93 bl 7d1c <_lv_blend_map+0x2c> blend_fp = color_blend_true_color_additive; 87f6: 4b44 ldr r3, [pc, #272] ; (8908 <_lv_blend_map+0xc18>) 87f8: 930a str r3, [sp, #40] ; 0x28 87fa: e7aa b.n 8752 <_lv_blend_map+0xa62> map_buf_tmp -= draw_area->x1; 87fc: 9b0b ldr r3, [sp, #44] ; 0x2c 87fe: 9a0d ldr r2, [sp, #52] ; 0x34 8800: 1a9b subs r3, r3, r2 8802: 005b lsls r3, r3, #1 8804: 46a1 mov r9, r4 8806: 4499 add r9, r3 for(y = draw_area->y1; y <= draw_area->y2; y++) { 8808: 9a0c ldr r2, [sp, #48] ; 0x30 880a: 4296 cmp r6, r2 880c: dd01 ble.n 8812 <_lv_blend_map+0xb22> 880e: f7ff fa85 bl 7d1c <_lv_blend_map+0x2c> disp_buf_tmp += disp_w; 8812: 4663 mov r3, ip 8814: 005b lsls r3, r3, #1 8816: 469a mov sl, r3 map_buf_tmp += map_w; 8818: 004b lsls r3, r1, #1 881a: 4698 mov r8, r3 for(x = draw_area->x1; x <= draw_area->x2; x++) { 881c: af10 add r7, sp, #64 ; 0x40 881e: 465b mov r3, fp 8820: 9305 str r3, [sp, #20] 8822: 46d3 mov fp, sl 8824: 9b0a ldr r3, [sp, #40] ; 0x28 8826: 469a mov sl, r3 8828: 2300 movs r3, #0 882a: 5efd ldrsh r5, [r7, r3] 882c: 002e movs r6, r5 882e: 2204 movs r2, #4 8830: 5ebb ldrsh r3, [r7, r2] 8832: 429d cmp r5, r3 8834: dc0f bgt.n 8856 <_lv_blend_map+0xb66> 8836: 006d lsls r5, r5, #1 8838: 9b06 ldr r3, [sp, #24] 883a: 195c adds r4, r3, r5 883c: 444d add r5, r9 disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa); 883e: 8821 ldrh r1, [r4, #0] 8840: 8828 ldrh r0, [r5, #0] 8842: 9a05 ldr r2, [sp, #20] 8844: 47d0 blx sl 8846: 8020 strh r0, [r4, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 8848: 3601 adds r6, #1 884a: 3402 adds r4, #2 884c: 3502 adds r5, #2 884e: 2204 movs r2, #4 8850: 5ebb ldrsh r3, [r7, r2] 8852: 429e cmp r6, r3 8854: ddf3 ble.n 883e <_lv_blend_map+0xb4e> disp_buf_tmp += disp_w; 8856: 9b06 ldr r3, [sp, #24] 8858: 445b add r3, fp 885a: 9306 str r3, [sp, #24] map_buf_tmp += map_w; 885c: 44c1 add r9, r8 for(y = draw_area->y1; y <= draw_area->y2; y++) { 885e: 9b08 ldr r3, [sp, #32] 8860: 3301 adds r3, #1 8862: 001a movs r2, r3 8864: 9308 str r3, [sp, #32] 8866: 2106 movs r1, #6 8868: 5e7b ldrsh r3, [r7, r1] 886a: 429a cmp r2, r3 886c: dddc ble.n 8828 <_lv_blend_map+0xb38> 886e: f7ff fa55 bl 7d1c <_lv_blend_map+0x2c> disp_buf_tmp[x] = blend_fp(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp); 8872: 8831 ldrh r1, [r6, #0] 8874: 8828 ldrh r0, [r5, #0] 8876: 47d0 blx sl 8878: 8030 strh r0, [r6, #0] for(x = draw_area->x1; x <= draw_area->x2; x++) { 887a: 3401 adds r4, #1 887c: 3602 adds r6, #2 887e: 3502 adds r5, #2 8880: 2204 movs r2, #4 8882: 5ebb ldrsh r3, [r7, r2] 8884: 429c cmp r4, r3 8886: dc0a bgt.n 889e <_lv_blend_map+0xbae> if(mask_tmp[x] == 0) continue; 8888: 4643 mov r3, r8 888a: 5d1b ldrb r3, [r3, r4] 888c: 2b00 cmp r3, #0 888e: d0f4 beq.n 887a <_lv_blend_map+0xb8a> lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8); 8890: 9a05 ldr r2, [sp, #20] 8892: 2bf9 cmp r3, #249 ; 0xf9 8894: d8ed bhi.n 8872 <_lv_blend_map+0xb82> 8896: 465a mov r2, fp 8898: 4353 muls r3, r2 889a: 0a1a lsrs r2, r3, #8 889c: e7e9 b.n 8872 <_lv_blend_map+0xb82> disp_buf_tmp += disp_w; 889e: 9b06 ldr r3, [sp, #24] 88a0: 9a0a ldr r2, [sp, #40] ; 0x28 88a2: 4694 mov ip, r2 88a4: 4463 add r3, ip 88a6: 9306 str r3, [sp, #24] 88a8: 9b09 ldr r3, [sp, #36] ; 0x24 88aa: 469c mov ip, r3 88ac: 44e0 add r8, ip map_buf_tmp += map_w; 88ae: 9b07 ldr r3, [sp, #28] 88b0: 469c mov ip, r3 88b2: 44e1 add r9, ip for(y = draw_area->y1; y <= draw_area->y2; y++) { 88b4: 9b08 ldr r3, [sp, #32] 88b6: 3301 adds r3, #1 88b8: 001a movs r2, r3 88ba: 9308 str r3, [sp, #32] 88bc: 2106 movs r1, #6 88be: 5e7b ldrsh r3, [r7, r1] 88c0: 429a cmp r2, r3 88c2: dd01 ble.n 88c8 <_lv_blend_map+0xbd8> 88c4: f7ff fa2a bl 7d1c <_lv_blend_map+0x2c> for(x = draw_area->x1; x <= draw_area->x2; x++) { 88c8: 2300 movs r3, #0 88ca: 5efd ldrsh r5, [r7, r3] 88cc: 002c movs r4, r5 88ce: 2204 movs r2, #4 88d0: 5ebb ldrsh r3, [r7, r2] 88d2: 429d cmp r5, r3 88d4: dce3 bgt.n 889e <_lv_blend_map+0xbae> 88d6: 006d lsls r5, r5, #1 88d8: 9b06 ldr r3, [sp, #24] 88da: 195e adds r6, r3, r5 88dc: 444d add r5, r9 88de: e7d3 b.n 8888 <_lv_blend_map+0xb98> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 88e0: 9f0a ldr r7, [sp, #40] ; 0x28 88e2: 2600 movs r6, #0 88e4: e4d9 b.n 829a <_lv_blend_map+0x5aa> for(; x < x_end4; x += 4) { 88e6: 003b movs r3, r7 88e8: e651 b.n 858e <_lv_blend_map+0x89e> 88ea: 46c0 nop ; (mov r8, r8) 88ec: fffff81f .word 0xfffff81f 88f0: 00006f37 .word 0x00006f37 88f4: 0002604c .word 0x0002604c 88f8: 00026008 .word 0x00026008 88fc: 00000353 .word 0x00000353 8900: 00026014 .word 0x00026014 8904: 00012159 .word 0x00012159 8908: 00006e91 .word 0x00006e91 890c: 9b05 ldr r3, [sp, #20] 890e: 4699 mov r9, r3 8910: 9b07 ldr r3, [sp, #28] 8912: 429e cmp r6, r3 8914: da00 bge.n 8918 <_lv_blend_map+0xc28> 8916: e4c4 b.n 82a2 <_lv_blend_map+0x5b2> disp_buf_first += disp_w; 8918: 9b08 ldr r3, [sp, #32] 891a: 9a0e ldr r2, [sp, #56] ; 0x38 891c: 4694 mov ip, r2 891e: 4463 add r3, ip 8920: 9308 str r3, [sp, #32] 8922: 9b0a ldr r3, [sp, #40] ; 0x28 8924: 9a0c ldr r2, [sp, #48] ; 0x30 8926: 4694 mov ip, r2 8928: 4463 add r3, ip 892a: 930a str r3, [sp, #40] ; 0x28 map_buf_first += map_w; 892c: 9b09 ldr r3, [sp, #36] ; 0x24 892e: 9a0f ldr r2, [sp, #60] ; 0x3c 8930: 4694 mov ip, r2 8932: 4463 add r3, ip 8934: 9309 str r3, [sp, #36] ; 0x24 for(y = 0; y < draw_area_h; y++) { 8936: 9b0d ldr r3, [sp, #52] ; 0x34 8938: 3301 adds r3, #1 893a: 930d str r3, [sp, #52] ; 0x34 893c: 9a0b ldr r2, [sp, #44] ; 0x2c 893e: 429a cmp r2, r3 8940: dc01 bgt.n 8946 <_lv_blend_map+0xc56> 8942: f7ff f9eb bl 7d1c <_lv_blend_map+0x2c> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 8946: 464b mov r3, r9 8948: 2b00 cmp r3, #0 894a: dd0f ble.n 896c <_lv_blend_map+0xc7c> 894c: 9b0a ldr r3, [sp, #40] ; 0x28 894e: 2203 movs r2, #3 8950: 4213 tst r3, r2 8952: d0c5 beq.n 88e0 <_lv_blend_map+0xbf0> 8954: 9a09 ldr r2, [sp, #36] ; 0x24 8956: 4690 mov r8, r2 8958: 9a08 ldr r2, [sp, #32] 895a: 001f movs r7, r3 895c: 2600 movs r6, #0 MAP_NORMAL_MASK_PX(x) 895e: 4b05 ldr r3, [pc, #20] ; (8974 <_lv_blend_map+0xc84>) 8960: 469a mov sl, r3 8962: 464b mov r3, r9 8964: 9305 str r3, [sp, #20] 8966: 4640 mov r0, r8 8968: 0011 movs r1, r2 896a: e440 b.n 81ee <_lv_blend_map+0x4fe> for(x = 0; x < draw_area_w && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) { 896c: 9f0a ldr r7, [sp, #40] ; 0x28 896e: 2600 movs r6, #0 8970: e7ce b.n 8910 <_lv_blend_map+0xc20> 8972: 46c0 nop ; (mov r8, r8) 8974: fffff81f .word 0xfffff81f 00008978 : * @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) { 8978: b5f0 push {r4, r5, r6, r7, lr} 897a: 46de mov lr, fp 897c: 4657 mov r7, sl 897e: 464e mov r6, r9 8980: 4645 mov r5, r8 8982: b5e0 push {r5, r6, r7, lr} 8984: b0bf sub sp, #252 ; 0xfc 8986: 901c str r0, [sp, #112] ; 0x70 8988: 0008 movs r0, r1 898a: 9124 str r1, [sp, #144] ; 0x90 898c: 4690 mov r8, r2 898e: 930a str r3, [sp, #40] ; 0x28 8990: ab48 add r3, sp, #288 ; 0x120 8992: 781b ldrb r3, [r3, #0] 8994: 930b str r3, [sp, #44] ; 0x2c 8996: ab49 add r3, sp, #292 ; 0x124 8998: 781b ldrb r3, [r3, #0] 899a: 9307 str r3, [sp, #28] 899c: 2300 movs r3, #0 { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 899e: a93c add r1, sp, #240 ; 0xf0 89a0: 5cc2 ldrb r2, [r0, r3] 89a2: 545a strb r2, [r3, r1] 89a4: 3301 adds r3, #1 while(len) { 89a6: 2b08 cmp r3, #8 89a8: d1fa bne.n 89a0 /* 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(); 89aa: 4bb7 ldr r3, [pc, #732] ; (8c88 ) 89ac: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 89ae: 4bb7 ldr r3, [pc, #732] ; (8c8c ) 89b0: 4798 blx r3 89b2: 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; 89b4: 8a04 ldrh r4, [r0, #16] 89b6: ab3c add r3, sp, #240 ; 0xf0 89b8: 881a ldrh r2, [r3, #0] 89ba: 1b12 subs r2, r2, r4 89bc: 801a strh r2, [r3, #0] draw_area.y1 -= disp_area->y1; 89be: 8a40 ldrh r0, [r0, #18] 89c0: 885a ldrh r2, [r3, #2] 89c2: 1a12 subs r2, r2, r0 89c4: 805a strh r2, [r3, #2] draw_area.x2 -= disp_area->x1; 89c6: 8899 ldrh r1, [r3, #4] 89c8: 1b09 subs r1, r1, r4 89ca: 8099 strh r1, [r3, #4] draw_area.y2 -= disp_area->y1; 89cc: 88da ldrh r2, [r3, #6] 89ce: 1a12 subs r2, r2, r0 89d0: 80da strh r2, [r3, #6] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 89d2: 4baf ldr r3, [pc, #700] ; (8c90 ) 89d4: 4798 blx r3 89d6: 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 && 89d8: 2800 cmp r0, #0 89da: d108 bne.n 89ee 89dc: 9a0a ldr r2, [sp, #40] ; 0x28 89de: 8853 ldrh r3, [r2, #2] 89e0: 2b00 cmp r3, #0 89e2: d104 bne.n 89ee 89e4: 3301 adds r3, #1 89e6: 33ff adds r3, #255 ; 0xff 89e8: 8912 ldrh r2, [r2, #8] 89ea: 429a cmp r2, r3 89ec: d072 beq.n 8ad4 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); 89ee: 9b07 ldr r3, [sp, #28] 89f0: 1e5a subs r2, r3, #1 89f2: 4193 sbcs r3, r2 89f4: 3302 adds r3, #2 89f6: 4699 mov r9, r3 89f8: 9b1c ldr r3, [sp, #112] ; 0x70 89fa: 2200 movs r2, #0 89fc: 5e99 ldrsh r1, [r3, r2] 89fe: 468c mov ip, r1 8a00: 889f ldrh r7, [r3, #4] 8a02: 3701 adds r7, #1 8a04: 1a7f subs r7, r7, r1 8a06: 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; 8a08: a93c add r1, sp, #240 ; 0xf0 8a0a: 2202 movs r2, #2 8a0c: 5e8d ldrsh r5, [r1, r2] 8a0e: 9a19 ldr r2, [sp, #100] ; 0x64 8a10: 2612 movs r6, #18 8a12: 5f94 ldrsh r4, [r2, r6] 8a14: 46ca mov sl, r9 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8a16: 2000 movs r0, #0 8a18: 5e0e ldrsh r6, [r1, r0] 8a1a: 2010 movs r0, #16 8a1c: 5e12 ldrsh r2, [r2, r0] map_buf_tmp += map_w * (draw_area.y1 - (map_area->y1 - disp_area->y1)) * px_size_byte; 8a1e: 2002 movs r0, #2 8a20: 5e1b ldrsh r3, [r3, r0] 8a22: 1b1b subs r3, r3, r4 8a24: 1aeb subs r3, r5, r3 8a26: 437b muls r3, r7 map_buf_tmp += (draw_area.x1 - (map_area->x1 - disp_area->x1)) * px_size_byte; 8a28: 4660 mov r0, ip 8a2a: 1a80 subs r0, r0, r2 8a2c: 1a30 subs r0, r6, r0 8a2e: 18c0 adds r0, r0, r3 8a30: 464b mov r3, r9 8a32: 4358 muls r0, r3 8a34: 0003 movs r3, r0 8a36: 4443 add r3, r8 8a38: 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; 8a3a: b2b6 uxth r6, r6 8a3c: 18b2 adds r2, r6, r2 8a3e: b292 uxth r2, r2 8a40: a828 add r0, sp, #160 ; 0xa0 8a42: 8002 strh r2, [r0, #0] 8a44: 888b ldrh r3, [r1, #4] 8a46: 3301 adds r3, #1 8a48: 1b9b subs r3, r3, r6 8a4a: b29b uxth r3, r3 8a4c: b21e sxth r6, r3 8a4e: 9617 str r6, [sp, #92] ; 0x5c blend_area.x2 = blend_area.x1 + lv_area_get_width(&draw_area) - 1; 8a50: 3b01 subs r3, #1 8a52: 18d3 adds r3, r2, r3 8a54: 8083 strh r3, [r0, #4] blend_area.y1 = disp_area->y1 + draw_area.y1; 8a56: b2ad uxth r5, r5 8a58: 192c adds r4, r5, r4 8a5a: b224 sxth r4, r4 8a5c: 8044 strh r4, [r0, #2] blend_area.y2 = blend_area.y1; 8a5e: 80c4 strh r4, [r0, #6] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 8a60: 88cb ldrh r3, [r1, #6] 8a62: 3301 adds r3, #1 8a64: 1b5d subs r5, r3, r5 8a66: 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; 8a68: 980a ldr r0, [sp, #40] ; 0x28 8a6a: 8843 ldrh r3, [r0, #2] 8a6c: 2b00 cmp r3, #0 8a6e: d000 beq.n 8a72 8a70: e344 b.n 90fc 8a72: 8902 ldrh r2, [r0, #8] 8a74: 1e53 subs r3, r2, #1 8a76: 3bff subs r3, #255 ; 0xff 8a78: 1e59 subs r1, r3, #1 8a7a: 418b sbcs r3, r1 8a7c: b2db uxtb r3, r3 8a7e: 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) { 8a80: 9b1a ldr r3, [sp, #104] ; 0x68 8a82: 2b00 cmp r3, #0 8a84: d000 beq.n 8a88 8a86: e0d5 b.n 8c34 8a88: 3301 adds r3, #1 8a8a: 33ff adds r3, #255 ; 0xff 8a8c: 429a cmp r2, r3 8a8e: d000 beq.n 8a92 8a90: e33a b.n 9108 8a92: 9b0b ldr r3, [sp, #44] ; 0x2c 8a94: 2b00 cmp r3, #0 8a96: d105 bne.n 8aa4 8a98: 7a83 ldrb r3, [r0, #10] 8a9a: 2b00 cmp r3, #0 8a9c: d102 bne.n 8aa4 8a9e: 9b07 ldr r3, [sp, #28] 8aa0: 2b00 cmp r3, #0 8aa2: d134 bne.n 8b0e _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); 8aa4: a83c add r0, sp, #240 ; 0xf0 8aa6: 4b7b ldr r3, [pc, #492] ; (8c94 ) 8aa8: 4798 blx r3 8aaa: 23f0 movs r3, #240 ; 0xf0 8aac: 005b lsls r3, r3, #1 8aae: 4298 cmp r0, r3 8ab0: d800 bhi.n 8ab4 8ab2: e0ca b.n 8c4a lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8ab4: 20f0 movs r0, #240 ; 0xf0 8ab6: 0080 lsls r0, r0, #2 8ab8: 4c77 ldr r4, [pc, #476] ; (8c98 ) 8aba: 47a0 blx r4 8abc: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8abe: 26f0 movs r6, #240 ; 0xf0 8ac0: 0076 lsls r6, r6, #1 8ac2: 0030 movs r0, r6 8ac4: 47a0 blx r4 8ac6: 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)); 8ac8: 2148 movs r1, #72 ; 0x48 8aca: a82a add r0, sp, #168 ; 0xa8 8acc: 4b73 ldr r3, [pc, #460] ; (8c9c ) 8ace: 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); 8ad0: 961d str r6, [sp, #116] ; 0x74 8ad2: e355 b.n 9180 if(other_mask_cnt == 0 && draw_dsc->angle == 0 && draw_dsc->zoom == LV_IMG_ZOOM_NONE && 8ad4: 9b0b ldr r3, [sp, #44] ; 0x2c 8ad6: 2b00 cmp r3, #0 8ad8: d189 bne.n 89ee chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 8ada: 9b07 ldr r3, [sp, #28] 8adc: 2b00 cmp r3, #0 8ade: d113 bne.n 8b08 8ae0: 9b0a ldr r3, [sp, #40] ; 0x28 8ae2: 7a9b ldrb r3, [r3, #10] uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8ae4: 2202 movs r2, #2 8ae6: 4691 mov r9, r2 chroma_key == false && alpha_byte == false && draw_dsc->recolor_opa == LV_OPA_TRANSP) { 8ae8: 2b00 cmp r3, #0 8aea: d185 bne.n 89f8 _lv_blend_map(clip_area, map_area, (lv_color_t *)map_p, NULL, LV_DRAW_MASK_RES_FULL_COVER, draw_dsc->opa, 8aec: 9a0a ldr r2, [sp, #40] ; 0x28 8aee: 7b93 ldrb r3, [r2, #14] 8af0: 9302 str r3, [sp, #8] 8af2: 7813 ldrb r3, [r2, #0] 8af4: 9301 str r3, [sp, #4] 8af6: 2301 movs r3, #1 8af8: 9300 str r3, [sp, #0] 8afa: 2300 movs r3, #0 8afc: 4642 mov r2, r8 8afe: 991c ldr r1, [sp, #112] ; 0x70 8b00: 9824 ldr r0, [sp, #144] ; 0x90 8b02: 4c67 ldr r4, [pc, #412] ; (8ca0 ) 8b04: 47a0 blx r4 8b06: e2dd b.n 90c4 uint8_t px_size_byte = alpha_byte ? LV_IMG_PX_SIZE_ALPHA_BYTE : sizeof(lv_color_t); 8b08: 2303 movs r3, #3 8b0a: 4699 mov r9, r3 8b0c: e774 b.n 89f8 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); 8b0e: a83c add r0, sp, #240 ; 0xf0 8b10: 4b60 ldr r3, [pc, #384] ; (8c94 ) 8b12: 4798 blx r3 8b14: 23f0 movs r3, #240 ; 0xf0 8b16: 005b lsls r3, r3, #1 8b18: 4298 cmp r0, r3 8b1a: d819 bhi.n 8b50 8b1c: a83c add r0, sp, #240 ; 0xf0 8b1e: 4b5d ldr r3, [pc, #372] ; (8c94 ) 8b20: 4798 blx r3 8b22: 9007 str r0, [sp, #28] lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8b24: 9e07 ldr r6, [sp, #28] 8b26: 0070 lsls r0, r6, #1 8b28: 4c5b ldr r4, [pc, #364] ; (8c98 ) 8b2a: 47a0 blx r4 8b2c: 9005 str r0, [sp, #20] lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8b2e: 0030 movs r0, r6 8b30: 47a0 blx r4 8b32: 9006 str r0, [sp, #24] for(y = 0; y < draw_area_h; y++) { 8b34: 2d00 cmp r5, #0 8b36: dd61 ble.n 8bfc map_buf_tmp += map_w * px_size_byte; 8b38: 4653 mov r3, sl 8b3a: 437b muls r3, r7 8b3c: 469a mov sl, r3 8b3e: 1c6b adds r3, r5, #1 8b40: 469b mov fp, r3 8b42: 2301 movs r3, #1 8b44: 4698 mov r8, r3 8b46: 2700 movs r7, #0 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8b48: 9d17 ldr r5, [sp, #92] ; 0x5c 8b4a: 003e movs r6, r7 8b4c: 464c mov r4, r9 8b4e: e031 b.n 8bb4 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); 8b50: 23f0 movs r3, #240 ; 0xf0 8b52: 005b lsls r3, r3, #1 8b54: 9307 str r3, [sp, #28] 8b56: e7e5 b.n 8b24 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8b58: 3301 adds r3, #1 8b5a: 1912 adds r2, r2, r4 8b5c: 3702 adds r7, #2 8b5e: 42ab cmp r3, r5 8b60: da09 bge.n 8b76 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 8b62: 7891 ldrb r1, [r2, #2] mask_buf[px_i] = px_opa; 8b64: 54c1 strb r1, [r0, r3] if(px_opa) { 8b66: 2900 cmp r1, #0 8b68: d0f6 beq.n 8b58 map2[px_i].full = map_px[0] + (map_px[1] << 8); 8b6a: 7856 ldrb r6, [r2, #1] 8b6c: 0236 lsls r6, r6, #8 8b6e: 7811 ldrb r1, [r2, #0] 8b70: 1989 adds r1, r1, r6 8b72: 8039 strh r1, [r7, #0] 8b74: e7f0 b.n 8b58 8b76: 4666 mov r6, ip 8b78: 9b17 ldr r3, [sp, #92] ; 0x5c 8b7a: 469c mov ip, r3 8b7c: 4466 add r6, ip map_buf_tmp += map_w * px_size_byte; 8b7e: 9b15 ldr r3, [sp, #84] ; 0x54 8b80: 4453 add r3, sl 8b82: 9315 str r3, [sp, #84] ; 0x54 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 8b84: ab24 add r3, sp, #144 ; 0x90 8b86: 2264 movs r2, #100 ; 0x64 8b88: 189b adds r3, r3, r2 8b8a: 881b ldrh r3, [r3, #0] 8b8c: 3301 adds r3, #1 8b8e: aa24 add r2, sp, #144 ; 0x90 8b90: 2160 movs r1, #96 ; 0x60 8b92: 1852 adds r2, r2, r1 8b94: 8812 ldrh r2, [r2, #0] 8b96: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 8b98: b21b sxth r3, r3 8b9a: 199b adds r3, r3, r6 8b9c: 9a07 ldr r2, [sp, #28] 8b9e: 429a cmp r2, r3 8ba0: d917 bls.n 8bd2 blend_area.y2 ++; 8ba2: aa28 add r2, sp, #160 ; 0xa0 8ba4: 88d3 ldrh r3, [r2, #6] 8ba6: 3301 adds r3, #1 8ba8: 80d3 strh r3, [r2, #6] 8baa: 2301 movs r3, #1 8bac: 469c mov ip, r3 8bae: 44e0 add r8, ip for(y = 0; y < draw_area_h; y++) { 8bb0: 45d8 cmp r8, fp 8bb2: d023 beq.n 8bfc for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8bb4: 9b17 ldr r3, [sp, #92] ; 0x5c 8bb6: 2b00 cmp r3, #0 8bb8: dde1 ble.n 8b7e 8bba: 0077 lsls r7, r6, #1 8bbc: 9b05 ldr r3, [sp, #20] 8bbe: 469c mov ip, r3 8bc0: 4467 add r7, ip 8bc2: 9a15 ldr r2, [sp, #84] ; 0x54 8bc4: 2300 movs r3, #0 mask_buf[px_i] = px_opa; 8bc6: 9906 ldr r1, [sp, #24] 8bc8: 468c mov ip, r1 8bca: 44b4 add ip, r6 8bcc: 4660 mov r0, ip 8bce: 46b4 mov ip, r6 8bd0: e7c7 b.n 8b62 _lv_blend_map(clip_area, &blend_area, map2, mask_buf, LV_DRAW_MASK_RES_CHANGED, draw_dsc->opa, draw_dsc->blend_mode); 8bd2: af28 add r7, sp, #160 ; 0xa0 8bd4: 9a0a ldr r2, [sp, #40] ; 0x28 8bd6: 7b93 ldrb r3, [r2, #14] 8bd8: 9302 str r3, [sp, #8] 8bda: 7813 ldrb r3, [r2, #0] 8bdc: 9301 str r3, [sp, #4] 8bde: 2302 movs r3, #2 8be0: 9300 str r3, [sp, #0] 8be2: 9b06 ldr r3, [sp, #24] 8be4: 9a05 ldr r2, [sp, #20] 8be6: 0039 movs r1, r7 8be8: 9824 ldr r0, [sp, #144] ; 0x90 8bea: 4e2d ldr r6, [pc, #180] ; (8ca0 ) 8bec: 47b0 blx r6 blend_area.y1 = blend_area.y2 + 1; 8bee: 88fb ldrh r3, [r7, #6] 8bf0: 3301 adds r3, #1 8bf2: b21b sxth r3, r3 8bf4: 807b strh r3, [r7, #2] blend_area.y2 = blend_area.y1; 8bf6: 80fb strh r3, [r7, #6] px_i = 0; 8bf8: 2600 movs r6, #0 8bfa: e7d6 b.n 8baa if(blend_area.y1 != blend_area.y2) { 8bfc: aa28 add r2, sp, #160 ; 0xa0 8bfe: 2106 movs r1, #6 8c00: 5e53 ldrsh r3, [r2, r1] 8c02: 2102 movs r1, #2 8c04: 5e52 ldrsh r2, [r2, r1] 8c06: 429a cmp r2, r3 8c08: d00e beq.n 8c28 blend_area.y2--; 8c0a: a928 add r1, sp, #160 ; 0xa0 8c0c: 3b01 subs r3, #1 8c0e: 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); 8c10: 9a0a ldr r2, [sp, #40] ; 0x28 8c12: 7b93 ldrb r3, [r2, #14] 8c14: 9302 str r3, [sp, #8] 8c16: 7813 ldrb r3, [r2, #0] 8c18: 9301 str r3, [sp, #4] 8c1a: 2302 movs r3, #2 8c1c: 9300 str r3, [sp, #0] 8c1e: 9b06 ldr r3, [sp, #24] 8c20: 9a05 ldr r2, [sp, #20] 8c22: 9824 ldr r0, [sp, #144] ; 0x90 8c24: 4c1e ldr r4, [pc, #120] ; (8ca0 ) 8c26: 47a0 blx r4 _lv_mem_buf_release(mask_buf); 8c28: 9806 ldr r0, [sp, #24] 8c2a: 4c1e ldr r4, [pc, #120] ; (8ca4 ) 8c2c: 47a0 blx r4 _lv_mem_buf_release(map2); 8c2e: 9805 ldr r0, [sp, #20] 8c30: 47a0 blx r4 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 8c32: e247 b.n 90c4 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); 8c34: a83c add r0, sp, #240 ; 0xf0 8c36: 4b17 ldr r3, [pc, #92] ; (8c94 ) 8c38: 4798 blx r3 8c3a: 23f0 movs r3, #240 ; 0xf0 8c3c: 005b lsls r3, r3, #1 8c3e: 4298 cmp r0, r3 8c40: d903 bls.n 8c4a 8c42: 23f0 movs r3, #240 ; 0xf0 8c44: 005b lsls r3, r3, #1 8c46: 931d str r3, [sp, #116] ; 0x74 8c48: e003 b.n 8c52 8c4a: a83c add r0, sp, #240 ; 0xf0 8c4c: 4b11 ldr r3, [pc, #68] ; (8c94 ) 8c4e: 4798 blx r3 8c50: 901d str r0, [sp, #116] ; 0x74 lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 8c52: 9e1d ldr r6, [sp, #116] ; 0x74 8c54: 0070 lsls r0, r6, #1 8c56: 4c10 ldr r4, [pc, #64] ; (8c98 ) 8c58: 47a0 blx r4 8c5a: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 8c5c: 0030 movs r0, r6 8c5e: 47a0 blx r4 8c60: 9018 str r0, [sp, #96] ; 0x60 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 8c62: 2148 movs r1, #72 ; 0x48 8c64: a82a add r0, sp, #168 ; 0xa8 8c66: 4b0d ldr r3, [pc, #52] ; (8c9c ) 8c68: 4798 blx r3 if(transform) { 8c6a: 465b mov r3, fp 8c6c: 2b00 cmp r3, #0 8c6e: d100 bne.n 8c72 8c70: e286 b.n 9180 8c72: e260 b.n 9136 trans_dsc.cfg.antialias = draw_dsc->antialias; _lv_img_buf_transform_init(&trans_dsc); } #endif uint16_t recolor_premult[3] = {0}; 8c74: 2300 movs r3, #0 8c76: 9314 str r3, [sp, #80] ; 0x50 8c78: 9312 str r3, [sp, #72] ; 0x48 8c7a: 9311 str r3, [sp, #68] ; 0x44 8c7c: e297 b.n 91ae 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); 8c7e: 991d ldr r1, [sp, #116] ; 0x74 8c80: 9818 ldr r0, [sp, #96] ; 0x60 8c82: 4b09 ldr r3, [pc, #36] ; (8ca8 ) 8c84: 4798 blx r3 8c86: e2a9 b.n 91dc 8c88: 00005591 .word 0x00005591 8c8c: 00010e75 .word 0x00010e75 8c90: 0000bb6d .word 0x0000bb6d 8c94: 000113ef .word 0x000113ef 8c98: 000127a1 .word 0x000127a1 8c9c: 00012975 .word 0x00012975 8ca0: 00007cf1 .word 0x00007cf1 8ca4: 00012465 .word 0x00012465 8ca8: 00012a19 .word 0x00012a19 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; 8cac: 9b0d ldr r3, [sp, #52] ; 0x34 8cae: 18f3 adds r3, r6, r3 8cb0: b21b sxth r3, r3 8cb2: a92a add r1, sp, #168 ; 0xa8 8cb4: 2008 movs r0, #8 8cb6: 5e0a ldrsh r2, [r1, r0] 8cb8: 1a9b subs r3, r3, r2 int32_t yt = y - dsc->cfg.pivot_y; 8cba: 200a movs r0, #10 8cbc: 5e0a ldrsh r2, [r1, r0] 8cbe: 980e ldr r0, [sp, #56] ; 0x38 8cc0: 1a82 subs r2, r0, r2 int32_t xs; int32_t ys; if(dsc->cfg.zoom == LV_IMG_ZOOM_NONE) { 8cc2: 2080 movs r0, #128 ; 0x80 8cc4: 0040 lsls r0, r0, #1 8cc6: 89c9 ldrh r1, [r1, #14] 8cc8: 4281 cmp r1, r0 8cca: d059 beq.n 8d80 /*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) { 8ccc: a92a add r1, sp, #168 ; 0xa8 8cce: 200c movs r0, #12 8cd0: 5e09 ldrsh r1, [r1, r0] 8cd2: 2900 cmp r1, #0 8cd4: d16b bne.n 8dae xt *= dsc->tmp.zoom_inv; 8cd6: a92a add r1, sp, #168 ; 0xa8 8cd8: 8ec8 ldrh r0, [r1, #54] ; 0x36 8cda: 4343 muls r3, r0 8cdc: 001d movs r5, r3 yt *= dsc->tmp.zoom_inv; xs = xt + dsc->tmp.pivot_x_256; 8cde: 9b33 ldr r3, [sp, #204] ; 0xcc 8ce0: 469a mov sl, r3 8ce2: 44aa add sl, r5 yt *= dsc->tmp.zoom_inv; 8ce4: 4342 muls r2, r0 ys = yt + dsc->tmp.pivot_y_256; 8ce6: 9b34 ldr r3, [sp, #208] ; 0xd0 8ce8: 18d3 adds r3, r2, r3 8cea: 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; 8cec: 4653 mov r3, sl 8cee: 121b asrs r3, r3, #8 8cf0: 4698 mov r8, r3 int32_t ys_int = ys >> 8; if(xs_int >= dsc->cfg.src_w) return false; 8cf2: ab2a add r3, sp, #168 ; 0xa8 8cf4: 2204 movs r2, #4 8cf6: 5e9b ldrsh r3, [r3, r2] 8cf8: 4598 cmp r8, r3 8cfa: db00 blt.n 8cfe 8cfc: e0b0 b.n 8e60 else if(xs_int < 0) return false; 8cfe: 4642 mov r2, r8 8d00: 2a00 cmp r2, #0 8d02: da00 bge.n 8d06 8d04: e0ac b.n 8e60 int32_t ys_int = ys >> 8; 8d06: 9a0c ldr r2, [sp, #48] ; 0x30 8d08: 1212 asrs r2, r2, #8 8d0a: 0010 movs r0, r2 8d0c: 9216 str r2, [sp, #88] ; 0x58 if(ys_int >= dsc->cfg.src_h) return false; 8d0e: aa2a add r2, sp, #168 ; 0xa8 8d10: 2106 movs r1, #6 8d12: 5e52 ldrsh r2, [r2, r1] 8d14: 4290 cmp r0, r2 8d16: db00 blt.n 8d1a 8d18: e0a2 b.n 8e60 else if(ys_int < 0) return false; 8d1a: 2800 cmp r0, #0 8d1c: da00 bge.n 8d20 8d1e: e09f b.n 8e60 uint8_t px_size; uint32_t pxi; if(dsc->tmp.native_color) { 8d20: 2234 movs r2, #52 ; 0x34 8d22: a92a add r1, sp, #168 ; 0xa8 8d24: 5c89 ldrb r1, [r1, r2] 8d26: 074a lsls r2, r1, #29 8d28: d56a bpl.n 8e00 const uint8_t * src_u8 = (const uint8_t *)dsc->cfg.src; 8d2a: 9a2a ldr r2, [sp, #168] ; 0xa8 if(dsc->tmp.has_alpha == 0) { 8d2c: 0789 lsls r1, r1, #30 8d2e: d458 bmi.n 8de2 px_size = LV_COLOR_SIZE >> 3; pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 8d30: 4343 muls r3, r0 8d32: 4443 add r3, r8 8d34: 005b lsls r3, r3, #1 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size); 8d36: 18d2 adds r2, r2, r3 *d8 = *s8; 8d38: 7810 ldrb r0, [r2, #0] 8d3a: a92a add r1, sp, #168 ; 0xa8 8d3c: 7508 strb r0, [r1, #20] 8d3e: 7852 ldrb r2, [r2, #1] 8d40: 754a strb r2, [r1, #21] px_size = LV_COLOR_SIZE >> 3; 8d42: 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) { 8d44: 2234 movs r2, #52 ; 0x34 8d46: a82a add r0, sp, #168 ; 0xa8 8d48: 5c82 ldrb r2, [r0, r2] 8d4a: 07d2 lsls r2, r2, #31 8d4c: d50f bpl.n 8d6e lv_color_t ct = LV_COLOR_TRANSP; 8d4e: 221f movs r2, #31 8d50: 9822 ldr r0, [sp, #136] ; 0x88 8d52: 4390 bics r0, r2 8d54: 22fc movs r2, #252 ; 0xfc 8d56: 00d2 lsls r2, r2, #3 8d58: 4302 orrs r2, r0 8d5a: 0552 lsls r2, r2, #21 8d5c: 0d52 lsrs r2, r2, #21 8d5e: 4668 mov r0, sp 8d60: 2588 movs r5, #136 ; 0x88 8d62: 1940 adds r0, r0, r5 8d64: 8002 strh r2, [r0, #0] if(dsc->res.color.full == ct.full) return false; 8d66: a82a add r0, sp, #168 ; 0xa8 8d68: 8a80 ldrh r0, [r0, #20] 8d6a: 4290 cmp r0, r2 8d6c: d078 beq.n 8e60 } if(dsc->cfg.antialias == false) return true; 8d6e: aa2a add r2, sp, #168 ; 0xa8 8d70: 7cd2 ldrb r2, [r2, #19] 8d72: 2a00 cmp r2, #0 8d74: d160 bne.n 8e38 if(ret == false) { mask_buf[px_i] = LV_OPA_TRANSP; continue; } else { mask_buf[px_i] = trans_dsc.res.opa; 8d76: ab2a add r3, sp, #168 ; 0xa8 8d78: 7d9a ldrb r2, [r3, #22] 8d7a: 7022 strb r2, [r4, #0] c.full = trans_dsc.res.color.full; 8d7c: 8a9b ldrh r3, [r3, #20] 8d7e: e080 b.n 8e82 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_x_256; 8d80: 9936 ldr r1, [sp, #216] ; 0xd8 8d82: 9835 ldr r0, [sp, #212] ; 0xd4 8d84: 0005 movs r5, r0 8d86: 910c str r1, [sp, #48] ; 0x30 8d88: 0008 movs r0, r1 8d8a: 4358 muls r0, r3 8d8c: 0029 movs r1, r5 8d8e: 4351 muls r1, r2 8d90: 1a41 subs r1, r0, r1 8d92: 11c9 asrs r1, r1, #7 8d94: 9833 ldr r0, [sp, #204] ; 0xcc 8d96: 9016 str r0, [sp, #88] ; 0x58 8d98: 4682 mov sl, r0 8d9a: 448a add sl, r1 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT - 8)) + dsc->tmp.pivot_y_256; 8d9c: 436b muls r3, r5 8d9e: 980c ldr r0, [sp, #48] ; 0x30 8da0: 4342 muls r2, r0 8da2: 189b adds r3, r3, r2 8da4: 11db asrs r3, r3, #7 8da6: 9a34 ldr r2, [sp, #208] ; 0xd0 8da8: 189b adds r3, r3, r2 8daa: 930c str r3, [sp, #48] ; 0x30 8dac: e79e b.n 8cec xt *= dsc->tmp.zoom_inv; 8dae: a92a add r1, sp, #168 ; 0xa8 8db0: 8ec8 ldrh r0, [r1, #54] ; 0x36 8db2: 4343 muls r3, r0 8db4: 001d movs r5, r3 yt *= dsc->tmp.zoom_inv; 8db6: 4342 muls r2, r0 xs = ((dsc->tmp.cosma * xt - dsc->tmp.sinma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_x_256; 8db8: 9836 ldr r0, [sp, #216] ; 0xd8 8dba: 4358 muls r0, r3 8dbc: 4680 mov r8, r0 8dbe: 9835 ldr r0, [sp, #212] ; 0xd4 8dc0: 4350 muls r0, r2 8dc2: 4643 mov r3, r8 8dc4: 1a18 subs r0, r3, r0 8dc6: 13c0 asrs r0, r0, #15 8dc8: 9b33 ldr r3, [sp, #204] ; 0xcc 8dca: 469a mov sl, r3 8dcc: 4482 add sl, r0 ys = ((dsc->tmp.sinma * xt + dsc->tmp.cosma * yt) >> (LV_TRIGO_SHIFT)) + dsc->tmp.pivot_y_256; 8dce: 9b35 ldr r3, [sp, #212] ; 0xd4 8dd0: 436b muls r3, r5 8dd2: 9836 ldr r0, [sp, #216] ; 0xd8 8dd4: 4350 muls r0, r2 8dd6: 181b adds r3, r3, r0 8dd8: 13db asrs r3, r3, #15 8dda: 9a34 ldr r2, [sp, #208] ; 0xd0 8ddc: 189b adds r3, r3, r2 8dde: 930c str r3, [sp, #48] ; 0x30 8de0: e784 b.n 8cec pxi = dsc->cfg.src_w * ys_int * px_size + xs_int * px_size; 8de2: 9916 ldr r1, [sp, #88] ; 0x58 8de4: 434b muls r3, r1 8de6: 4443 add r3, r8 8de8: 0059 lsls r1, r3, #1 8dea: 18cb adds r3, r1, r3 _lv_memcpy_small(&dsc->res.color, &src_u8[pxi], px_size - 1); 8dec: 18d2 adds r2, r2, r3 8dee: 7810 ldrb r0, [r2, #0] 8df0: a92a add r1, sp, #168 ; 0xa8 8df2: 7508 strb r0, [r1, #20] 8df4: 7850 ldrb r0, [r2, #1] 8df6: 7548 strb r0, [r1, #21] dsc->res.opa = src_u8[pxi + px_size - 1]; 8df8: 7892 ldrb r2, [r2, #2] 8dfa: 758a strb r2, [r1, #22] px_size = LV_IMG_PX_SIZE_ALPHA_BYTE; 8dfc: 2103 movs r1, #3 8dfe: e7a1 b.n 8d44 dsc->res.color = lv_img_buf_get_px_color(&dsc->tmp.img_dsc, xs_int, ys_int, dsc->cfg.color); 8e00: 4643 mov r3, r8 8e02: b219 sxth r1, r3 8e04: 466b mov r3, sp 8e06: 2258 movs r2, #88 ; 0x58 8e08: 189b adds r3, r3, r2 8e0a: 2200 movs r2, #0 8e0c: 5e9a ldrsh r2, [r3, r2] 8e0e: ab24 add r3, sp, #144 ; 0x90 8e10: 8d1b ldrh r3, [r3, #40] ; 0x28 8e12: 9226 str r2, [sp, #152] ; 0x98 8e14: 9125 str r1, [sp, #148] ; 0x94 8e16: a830 add r0, sp, #192 ; 0xc0 8e18: 4dae ldr r5, [pc, #696] ; (90d4 ) 8e1a: 47a8 blx r5 8e1c: ab24 add r3, sp, #144 ; 0x90 8e1e: 8598 strh r0, [r3, #44] ; 0x2c dsc->res.opa = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, xs_int, ys_int); 8e20: 9a26 ldr r2, [sp, #152] ; 0x98 8e22: 9925 ldr r1, [sp, #148] ; 0x94 8e24: a830 add r0, sp, #192 ; 0xc0 8e26: 4bac ldr r3, [pc, #688] ; (90d8 ) 8e28: 4798 blx r3 8e2a: ab24 add r3, sp, #144 ; 0x90 8e2c: 222e movs r2, #46 ; 0x2e 8e2e: 189b adds r3, r3, r2 8e30: 7018 strb r0, [r3, #0] pxi = 0; /*unused*/ 8e32: 2300 movs r3, #0 px_size = 0; /*unused*/ 8e34: 2100 movs r1, #0 8e36: e785 b.n 8d44 dsc->tmp.xs = xs; 8e38: a82a add r0, sp, #168 ; 0xa8 8e3a: 4652 mov r2, sl 8e3c: 8702 strh r2, [r0, #56] ; 0x38 dsc->tmp.ys = ys; 8e3e: 466a mov r2, sp 8e40: 8e12 ldrh r2, [r2, #48] ; 0x30 8e42: 8742 strh r2, [r0, #58] ; 0x3a dsc->tmp.xs_int = xs_int; 8e44: 4642 mov r2, r8 8e46: 8782 strh r2, [r0, #60] ; 0x3c dsc->tmp.ys_int = ys_int; 8e48: 466a mov r2, sp 8e4a: 2558 movs r5, #88 ; 0x58 8e4c: 1952 adds r2, r2, r5 8e4e: 8812 ldrh r2, [r2, #0] 8e50: 87c2 strh r2, [r0, #62] ; 0x3e dsc->tmp.pxi = pxi; 8e52: 6403 str r3, [r0, #64] ; 0x40 dsc->tmp.px_size = px_size; 8e54: 2344 movs r3, #68 ; 0x44 8e56: 54c1 strb r1, [r0, r3] bool ret; ret = _lv_img_buf_transform_anti_alias(dsc); 8e58: 4ba0 ldr r3, [pc, #640] ; (90dc ) 8e5a: 4798 blx r3 if(ret == false) { 8e5c: 2800 cmp r0, #0 8e5e: d18a bne.n 8d76 mask_buf[px_i] = LV_OPA_TRANSP; 8e60: 2300 movs r3, #0 8e62: 7023 strb r3, [r4, #0] continue; 8e64: e042 b.n 8eec #endif continue; } } else { mask_buf[px_i] = 0xFF; 8e66: 23ff movs r3, #255 ; 0xff 8e68: 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); 8e6a: 787a ldrb r2, [r7, #1] 8e6c: 0212 lsls r2, r2, #8 8e6e: 783b ldrb r3, [r7, #0] 8e70: 189b adds r3, r3, r2 8e72: b29b uxth r3, r3 #elif LV_COLOR_DEPTH == 32 c.full = *((uint32_t *)map_px); c.ch.alpha = 0xFF; #endif if(chroma_key) { 8e74: 9a0b ldr r2, [sp, #44] ; 0x2c 8e76: 2a00 cmp r2, #0 8e78: d003 beq.n 8e82 if(c.full == chroma_keyed_color.full) { 8e7a: 4a99 ldr r2, [pc, #612] ; (90e0 ) 8e7c: 8812 ldrh r2, [r2, #0] 8e7e: 429a cmp r2, r3 8e80: d04a beq.n 8f18 continue; } } } if(draw_dsc->recolor_opa != 0) { 8e82: 9a0a ldr r2, [sp, #40] ; 0x28 8e84: 7a92 ldrb r2, [r2, #10] 8e86: 2a00 cmp r2, #0 8e88: d02e beq.n 8ee8 LV_COLOR_SET_R(ret, (uint16_t)((uint16_t) premult_c1[0] + LV_COLOR_GET_R(c2) * mix) >> 8); 8e8a: 466a mov r2, sp 8e8c: 214c movs r1, #76 ; 0x4c 8e8e: 1852 adds r2, r2, r1 8e90: 8812 ldrh r2, [r2, #0] 8e92: 0ad9 lsrs r1, r3, #11 8e94: 4694 mov ip, r2 8e96: 4351 muls r1, r2 8e98: 9a11 ldr r2, [sp, #68] ; 0x44 8e9a: 4690 mov r8, r2 8e9c: 4441 add r1, r8 8e9e: 04c9 lsls r1, r1, #19 8ea0: 0ec9 lsrs r1, r1, #27 LV_COLOR_SET_G(ret, (uint16_t)((uint16_t) premult_c1[1] + LV_COLOR_GET_G(c2) * mix) >> 8); 8ea2: 0558 lsls r0, r3, #21 8ea4: 0e80 lsrs r0, r0, #26 8ea6: 4662 mov r2, ip 8ea8: 4350 muls r0, r2 8eaa: 9a12 ldr r2, [sp, #72] ; 0x48 8eac: 4690 mov r8, r2 8eae: 4440 add r0, r8 8eb0: 0480 lsls r0, r0, #18 LV_COLOR_SET_B(ret, (uint16_t)((uint16_t) premult_c1[2] + LV_COLOR_GET_B(c2) * mix) >> 8); 8eb2: 06da lsls r2, r3, #27 8eb4: 0ed2 lsrs r2, r2, #27 8eb6: 4663 mov r3, ip 8eb8: 435a muls r2, r3 8eba: 9b14 ldr r3, [sp, #80] ; 0x50 8ebc: 469c mov ip, r3 8ebe: 4462 add r2, ip 8ec0: 04d2 lsls r2, r2, #19 8ec2: 0ed5 lsrs r5, r2, #27 8ec4: 231f movs r3, #31 8ec6: 9a08 ldr r2, [sp, #32] 8ec8: 439a bics r2, r3 8eca: 0013 movs r3, r2 8ecc: 002a movs r2, r5 8ece: 431a orrs r2, r3 8ed0: 0e80 lsrs r0, r0, #26 8ed2: 0140 lsls r0, r0, #5 8ed4: 4b83 ldr r3, [pc, #524] ; (90e4 ) 8ed6: 4013 ands r3, r2 8ed8: 4303 orrs r3, r0 8eda: 02c9 lsls r1, r1, #11 8edc: 055b lsls r3, r3, #21 8ede: 0d5b lsrs r3, r3, #21 8ee0: 430b orrs r3, r1 8ee2: 466a mov r2, sp 8ee4: 8413 strh r3, [r2, #32] 8ee6: b29b uxth r3, r3 c = lv_color_mix_premult(recolor_premult, c, recolor_opa_inv); } map2[px_i].full = c.full; 8ee8: 9a05 ldr r2, [sp, #20] 8eea: 8013 strh r3, [r2, #0] for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8eec: 3601 adds r6, #1 8eee: 9b06 ldr r3, [sp, #24] 8ef0: 469c mov ip, r3 8ef2: 4467 add r7, ip 8ef4: 3401 adds r4, #1 8ef6: 9b05 ldr r3, [sp, #20] 8ef8: 3302 adds r3, #2 8efa: 9305 str r3, [sp, #20] 8efc: 454e cmp r6, r9 8efe: da0e bge.n 8f1e if(transform) { 8f00: 465b mov r3, fp 8f02: 2b00 cmp r3, #0 8f04: d000 beq.n 8f08 8f06: e6d1 b.n 8cac if(alpha_byte) { 8f08: 9b07 ldr r3, [sp, #28] 8f0a: 2b00 cmp r3, #0 8f0c: d0ab beq.n 8e66 lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; 8f0e: 78bb ldrb r3, [r7, #2] mask_buf[px_i] = px_opa; 8f10: 7023 strb r3, [r4, #0] if(px_opa == 0) { 8f12: 2b00 cmp r3, #0 8f14: d0ea beq.n 8eec 8f16: e7a8 b.n 8e6a mask_buf[px_i] = LV_OPA_TRANSP; 8f18: 2300 movs r3, #0 8f1a: 7023 strb r3, [r4, #0] continue; 8f1c: e7e6 b.n 8eec 8f1e: 9b17 ldr r3, [sp, #92] ; 0x5c 8f20: 9a0f ldr r2, [sp, #60] ; 0x3c 8f22: 4694 mov ip, r2 8f24: 4463 add r3, ip 8f26: 001c movs r4, r3 } /*Apply the masks if any*/ if(other_mask_cnt) { 8f28: 9b1a ldr r3, [sp, #104] ; 0x68 8f2a: 2b00 cmp r3, #0 8f2c: d148 bne.n 8fc0 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; 8f2e: 9b15 ldr r3, [sp, #84] ; 0x54 8f30: 9a1f ldr r2, [sp, #124] ; 0x7c 8f32: 4694 mov ip, r2 8f34: 4463 add r3, ip 8f36: 9315 str r3, [sp, #84] ; 0x54 8f38: ab24 add r3, sp, #144 ; 0x90 8f3a: 2264 movs r2, #100 ; 0x64 8f3c: 189b adds r3, r3, r2 8f3e: 881b ldrh r3, [r3, #0] 8f40: 3301 adds r3, #1 8f42: aa24 add r2, sp, #144 ; 0x90 8f44: 2160 movs r1, #96 ; 0x60 8f46: 1852 adds r2, r2, r1 8f48: 8812 ldrh r2, [r2, #0] 8f4a: 1a9b subs r3, r3, r2 if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) { 8f4c: b21b sxth r3, r3 8f4e: 191b adds r3, r3, r4 8f50: 9a1d ldr r2, [sp, #116] ; 0x74 8f52: 429a cmp r2, r3 8f54: d96c bls.n 9030 blend_area.y2 ++; 8f56: aa28 add r2, sp, #160 ; 0xa0 8f58: 88d3 ldrh r3, [r2, #6] 8f5a: 3301 adds r3, #1 8f5c: 80d3 strh r3, [r2, #6] 8f5e: 940f str r4, [sp, #60] ; 0x3c for(y = 0; y < draw_area_h; y++) { 8f60: 9b10 ldr r3, [sp, #64] ; 0x40 8f62: 3301 adds r3, #1 8f64: 9310 str r3, [sp, #64] ; 0x40 8f66: 9a20 ldr r2, [sp, #128] ; 0x80 8f68: 4293 cmp r3, r2 8f6a: db00 blt.n 8f6e 8f6c: e08f b.n 908e int32_t rot_x = disp_area->x1 + draw_area.x1 - map_area->x1; 8f6e: 9b19 ldr r3, [sp, #100] ; 0x64 8f70: 2210 movs r2, #16 8f72: 5e9b ldrsh r3, [r3, r2] 8f74: aa24 add r2, sp, #144 ; 0x90 8f76: 2160 movs r1, #96 ; 0x60 8f78: 1852 adds r2, r2, r1 8f7a: 2100 movs r1, #0 8f7c: 5e52 ldrsh r2, [r2, r1] 8f7e: 189b adds r3, r3, r2 8f80: 9a1c ldr r2, [sp, #112] ; 0x70 8f82: 2100 movs r1, #0 8f84: 5e52 ldrsh r2, [r2, r1] 8f86: 1a9b subs r3, r3, r2 8f88: 930d str r3, [sp, #52] ; 0x34 for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) { 8f8a: 9a17 ldr r2, [sp, #92] ; 0x5c 8f8c: 4691 mov r9, r2 8f8e: 2a00 cmp r2, #0 8f90: dd14 ble.n 8fbc 8f92: 9b18 ldr r3, [sp, #96] ; 0x60 8f94: 4698 mov r8, r3 8f96: 9a0f ldr r2, [sp, #60] ; 0x3c 8f98: 4694 mov ip, r2 8f9a: 44e0 add r8, ip 8f9c: 0053 lsls r3, r2, #1 8f9e: 9a1b ldr r2, [sp, #108] ; 0x6c 8fa0: 4692 mov sl, r2 8fa2: 449a add sl, r3 8fa4: 9f15 ldr r7, [sp, #84] ; 0x54 8fa6: 2600 movs r6, #0 int32_t yt = y - dsc->cfg.pivot_y; 8fa8: 9b21 ldr r3, [sp, #132] ; 0x84 8faa: 9a10 ldr r2, [sp, #64] ; 0x40 8fac: 4694 mov ip, r2 8fae: 4463 add r3, ip 8fb0: b21b sxth r3, r3 8fb2: 930e str r3, [sp, #56] ; 0x38 8fb4: 4644 mov r4, r8 8fb6: 4653 mov r3, sl 8fb8: 9305 str r3, [sp, #20] 8fba: e7a1 b.n 8f00 8fbc: 9c0f ldr r4, [sp, #60] ; 0x3c 8fbe: e7b3 b.n 8f28 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, 8fc0: 9b0f ldr r3, [sp, #60] ; 0x3c 8fc2: 9a18 ldr r2, [sp, #96] ; 0x60 8fc4: 4694 mov ip, r2 8fc6: 4463 add r3, ip 8fc8: 001d movs r5, r3 8fca: ab24 add r3, sp, #144 ; 0x90 8fcc: 2260 movs r2, #96 ; 0x60 8fce: 189b adds r3, r3, r2 8fd0: 8819 ldrh r1, [r3, #0] 8fd2: ab24 add r3, sp, #144 ; 0x90 8fd4: 3204 adds r2, #4 8fd6: 189b adds r3, r3, r2 8fd8: 881b ldrh r3, [r3, #0] 8fda: 3301 adds r3, #1 8fdc: 1a5b subs r3, r3, r1 8fde: b21b sxth r3, r3 8fe0: aa24 add r2, sp, #144 ; 0x90 8fe2: 2062 movs r0, #98 ; 0x62 8fe4: 1812 adds r2, r2, r0 8fe6: 8812 ldrh r2, [r2, #0] 8fe8: 9e19 ldr r6, [sp, #100] ; 0x64 8fea: 8a70 ldrh r0, [r6, #18] 8fec: 1812 adds r2, r2, r0 8fee: 9810 ldr r0, [sp, #64] ; 0x40 8ff0: 4684 mov ip, r0 8ff2: 4462 add r2, ip 8ff4: b212 sxth r2, r2 8ff6: 8a30 ldrh r0, [r6, #16] 8ff8: 1809 adds r1, r1, r0 8ffa: b209 sxth r1, r1 8ffc: 0028 movs r0, r5 8ffe: 4e3a ldr r6, [pc, #232] ; (90e8 ) 9000: 47b0 blx r6 if(mask_res_sub == LV_DRAW_MASK_RES_TRANSP) { 9002: 2800 cmp r0, #0 9004: d003 beq.n 900e else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) { 9006: 2802 cmp r0, #2 9008: d191 bne.n 8f2e mask_res = LV_DRAW_MASK_RES_CHANGED; 900a: 901e str r0, [sp, #120] ; 0x78 900c: e78f b.n 8f2e 900e: ab24 add r3, sp, #144 ; 0x90 9010: 2264 movs r2, #100 ; 0x64 9012: 189b adds r3, r3, r2 9014: 8819 ldrh r1, [r3, #0] 9016: 3101 adds r1, #1 9018: ab24 add r3, sp, #144 ; 0x90 901a: 3a04 subs r2, #4 901c: 189b adds r3, r3, r2 901e: 881b ldrh r3, [r3, #0] 9020: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area)); 9022: b209 sxth r1, r1 9024: 0028 movs r0, r5 9026: 4b31 ldr r3, [pc, #196] ; (90ec ) 9028: 4798 blx r3 mask_res = LV_DRAW_MASK_RES_CHANGED; 902a: 2302 movs r3, #2 902c: 931e str r3, [sp, #120] ; 0x78 902e: e77e b.n 8f2e } else { _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 9030: ac28 add r4, sp, #160 ; 0xa0 9032: 9e0a ldr r6, [sp, #40] ; 0x28 9034: 7bb3 ldrb r3, [r6, #14] 9036: 9302 str r3, [sp, #8] 9038: 7833 ldrb r3, [r6, #0] 903a: 9301 str r3, [sp, #4] 903c: 9b1e ldr r3, [sp, #120] ; 0x78 903e: 9300 str r3, [sp, #0] 9040: 9b18 ldr r3, [sp, #96] ; 0x60 9042: 9a1b ldr r2, [sp, #108] ; 0x6c 9044: 0021 movs r1, r4 9046: 9824 ldr r0, [sp, #144] ; 0x90 9048: 4d29 ldr r5, [pc, #164] ; (90f0 ) 904a: 47a8 blx r5 blend_area.y1 = blend_area.y2 + 1; 904c: 88e3 ldrh r3, [r4, #6] 904e: 3301 adds r3, #1 9050: b21b sxth r3, r3 9052: 8063 strh r3, [r4, #2] blend_area.y2 = blend_area.y1; 9054: 80e3 strh r3, [r4, #6] px_i = 0; mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 9056: 2302 movs r3, #2 9058: 931e str r3, [sp, #120] ; 0x78 905a: 9b27 ldr r3, [sp, #156] ; 0x9c 905c: 2b00 cmp r3, #0 905e: d109 bne.n 9074 9060: 8873 ldrh r3, [r6, #2] 9062: 2b00 cmp r3, #0 9064: d106 bne.n 9074 9066: 8933 ldrh r3, [r6, #8] 9068: 3b01 subs r3, #1 906a: 3bff subs r3, #255 ; 0xff 906c: 1e5a subs r2, r3, #1 906e: 4193 sbcs r3, r2 9070: 3301 adds r3, #1 9072: 931e str r3, [sp, #120] ; 0x78 px_i = 0; 9074: 2300 movs r3, #0 9076: 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) { 9078: 9b1a ldr r3, [sp, #104] ; 0x68 907a: 2b00 cmp r3, #0 907c: d100 bne.n 9080 907e: e76f b.n 8f60 _lv_memset_ff(mask_buf, mask_buf_size); 9080: 991d ldr r1, [sp, #116] ; 0x74 9082: 9818 ldr r0, [sp, #96] ; 0x60 9084: 4b1b ldr r3, [pc, #108] ; (90f4 ) 9086: 4798 blx r3 px_i = 0; 9088: 2300 movs r3, #0 908a: 930f str r3, [sp, #60] ; 0x3c 908c: e768 b.n 8f60 } } } /*Flush the last part*/ if(blend_area.y1 != blend_area.y2) { 908e: aa28 add r2, sp, #160 ; 0xa0 9090: 2106 movs r1, #6 9092: 5e53 ldrsh r3, [r2, r1] 9094: 2102 movs r1, #2 9096: 5e52 ldrsh r2, [r2, r1] 9098: 429a cmp r2, r3 909a: d00e beq.n 90ba blend_area.y2--; 909c: a928 add r1, sp, #160 ; 0xa0 909e: 3b01 subs r3, #1 90a0: 80cb strh r3, [r1, #6] _lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode); 90a2: 9a0a ldr r2, [sp, #40] ; 0x28 90a4: 7b93 ldrb r3, [r2, #14] 90a6: 9302 str r3, [sp, #8] 90a8: 7813 ldrb r3, [r2, #0] 90aa: 9301 str r3, [sp, #4] 90ac: 9b1e ldr r3, [sp, #120] ; 0x78 90ae: 9300 str r3, [sp, #0] 90b0: 9b18 ldr r3, [sp, #96] ; 0x60 90b2: 9a1b ldr r2, [sp, #108] ; 0x6c 90b4: 9824 ldr r0, [sp, #144] ; 0x90 90b6: 4c0e ldr r4, [pc, #56] ; (90f0 ) 90b8: 47a0 blx r4 } _lv_mem_buf_release(mask_buf); 90ba: 9818 ldr r0, [sp, #96] ; 0x60 90bc: 4c0e ldr r4, [pc, #56] ; (90f8 ) 90be: 47a0 blx r4 _lv_mem_buf_release(map2); 90c0: 981b ldr r0, [sp, #108] ; 0x6c 90c2: 47a0 blx r4 } } } 90c4: b03f add sp, #252 ; 0xfc 90c6: bc3c pop {r2, r3, r4, r5} 90c8: 4690 mov r8, r2 90ca: 4699 mov r9, r3 90cc: 46a2 mov sl, r4 90ce: 46ab mov fp, r5 90d0: bdf0 pop {r4, r5, r6, r7, pc} 90d2: 46c0 nop ; (mov r8, r8) 90d4: 0000e5d5 .word 0x0000e5d5 90d8: 0000e6f5 .word 0x0000e6f5 90dc: 0000eafd .word 0x0000eafd 90e0: 00026072 .word 0x00026072 90e4: fffff81f .word 0xfffff81f 90e8: 0000bad1 .word 0x0000bad1 90ec: 00012975 .word 0x00012975 90f0: 00007cf1 .word 0x00007cf1 90f4: 00012a19 .word 0x00012a19 90f8: 00012465 .word 0x00012465 if(other_mask_cnt == 0 && !transform && !chroma_key && draw_dsc->recolor_opa == LV_OPA_TRANSP && alpha_byte) { 90fc: 2301 movs r3, #1 90fe: 469b mov fp, r3 9100: 9b1a ldr r3, [sp, #104] ; 0x68 9102: 2b00 cmp r3, #0 9104: d000 beq.n 9108 9106: e595 b.n 8c34 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); 9108: a83c add r0, sp, #240 ; 0xf0 910a: 4b41 ldr r3, [pc, #260] ; (9210 ) 910c: 4798 blx r3 910e: 23f0 movs r3, #240 ; 0xf0 9110: 005b lsls r3, r3, #1 9112: 4298 cmp r0, r3 9114: d800 bhi.n 9118 9116: e598 b.n 8c4a lv_color_t * map2 = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 9118: 20f0 movs r0, #240 ; 0xf0 911a: 0080 lsls r0, r0, #2 911c: 4c3d ldr r4, [pc, #244] ; (9214 ) 911e: 47a0 blx r4 9120: 901b str r0, [sp, #108] ; 0x6c lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 9122: 26f0 movs r6, #240 ; 0xf0 9124: 0076 lsls r6, r6, #1 9126: 0030 movs r0, r6 9128: 47a0 blx r4 912a: 9018 str r0, [sp, #96] ; 0x60 _lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t)); 912c: 2148 movs r1, #72 ; 0x48 912e: a82a add r0, sp, #168 ; 0xa8 9130: 4b39 ldr r3, [pc, #228] ; (9218 ) 9132: 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); 9134: 961d str r6, [sp, #116] ; 0x74 if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA; 9136: 2205 movs r2, #5 9138: 9b07 ldr r3, [sp, #28] 913a: 2b00 cmp r3, #0 913c: d104 bne.n 9148 lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR; 913e: 3a01 subs r2, #1 else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED; 9140: 9b0b ldr r3, [sp, #44] ; 0x2c 9142: 2b00 cmp r3, #0 9144: d000 beq.n 9148 9146: 3202 adds r2, #2 trans_dsc.cfg.angle = draw_dsc->angle; 9148: a82a add r0, sp, #168 ; 0xa8 914a: 9c0a ldr r4, [sp, #40] ; 0x28 914c: 8863 ldrh r3, [r4, #2] 914e: 8183 strh r3, [r0, #12] trans_dsc.cfg.zoom = draw_dsc->zoom; 9150: 8923 ldrh r3, [r4, #8] 9152: 81c3 strh r3, [r0, #14] trans_dsc.cfg.src = map_p; 9154: 4643 mov r3, r8 9156: 932a str r3, [sp, #168] ; 0xa8 trans_dsc.cfg.src_w = map_w; 9158: 8087 strh r7, [r0, #4] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 915a: 991c ldr r1, [sp, #112] ; 0x70 915c: 88cb ldrh r3, [r1, #6] 915e: 3301 adds r3, #1 9160: 8849 ldrh r1, [r1, #2] 9162: 1a5b subs r3, r3, r1 trans_dsc.cfg.src_h = lv_area_get_height(map_area);; 9164: 80c3 strh r3, [r0, #6] trans_dsc.cfg.cf = cf; 9166: 7482 strb r2, [r0, #18] trans_dsc.cfg.pivot_x = draw_dsc->pivot.x; 9168: 88a3 ldrh r3, [r4, #4] 916a: 8103 strh r3, [r0, #8] trans_dsc.cfg.pivot_y = draw_dsc->pivot.y; 916c: 88e3 ldrh r3, [r4, #6] 916e: 8143 strh r3, [r0, #10] trans_dsc.cfg.color = draw_dsc->recolor; 9170: 89a3 ldrh r3, [r4, #12] 9172: 8203 strh r3, [r0, #16] trans_dsc.cfg.antialias = draw_dsc->antialias; 9174: 7be3 ldrb r3, [r4, #15] 9176: 07db lsls r3, r3, #31 9178: 0fdb lsrs r3, r3, #31 917a: 74c3 strb r3, [r0, #19] _lv_img_buf_transform_init(&trans_dsc); 917c: 4b27 ldr r3, [pc, #156] ; (921c ) 917e: 4798 blx r3 lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa; 9180: 990a ldr r1, [sp, #40] ; 0x28 9182: 7a8b ldrb r3, [r1, #10] 9184: 43da mvns r2, r3 9186: b2d2 uxtb r2, r2 9188: 9213 str r2, [sp, #76] ; 0x4c if(draw_dsc->recolor_opa != 0) { 918a: 2b00 cmp r3, #0 918c: d100 bne.n 9190 918e: e571 b.n 8c74 out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix; 9190: b29b uxth r3, r3 9192: 7b4a ldrb r2, [r1, #13] 9194: 08d2 lsrs r2, r2, #3 9196: 435a muls r2, r3 9198: 9211 str r2, [sp, #68] ; 0x44 out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix; 919a: 898a ldrh r2, [r1, #12] 919c: 0552 lsls r2, r2, #21 919e: 0e92 lsrs r2, r2, #26 91a0: 435a muls r2, r3 91a2: 9212 str r2, [sp, #72] ; 0x48 out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix; 91a4: 7b0a ldrb r2, [r1, #12] 91a6: 06d2 lsls r2, r2, #27 91a8: 0ed2 lsrs r2, r2, #27 91aa: 435a muls r2, r3 91ac: 9214 str r2, [sp, #80] ; 0x50 mask_res = (alpha_byte || chroma_key || draw_dsc->angle || 91ae: 9b0b ldr r3, [sp, #44] ; 0x2c 91b0: 9a07 ldr r2, [sp, #28] 91b2: 4313 orrs r3, r2 91b4: 9327 str r3, [sp, #156] ; 0x9c 91b6: 2202 movs r2, #2 91b8: 921e str r2, [sp, #120] ; 0x78 91ba: 2b00 cmp r3, #0 91bc: d10a bne.n 91d4 91be: 9a0a ldr r2, [sp, #40] ; 0x28 91c0: 8853 ldrh r3, [r2, #2] 91c2: 2b00 cmp r3, #0 91c4: d106 bne.n 91d4 91c6: 8913 ldrh r3, [r2, #8] 91c8: 3b01 subs r3, #1 91ca: 3bff subs r3, #255 ; 0xff 91cc: 1e5a subs r2, r3, #1 91ce: 4193 sbcs r3, r2 91d0: 3301 adds r3, #1 91d2: 931e str r3, [sp, #120] ; 0x78 if(other_mask_cnt) { 91d4: 9b1a ldr r3, [sp, #104] ; 0x68 91d6: 2b00 cmp r3, #0 91d8: d000 beq.n 91dc 91da: e550 b.n 8c7e int32_t rot_y = disp_area->y1 + draw_area.y1 - map_area->y1; 91dc: 9b19 ldr r3, [sp, #100] ; 0x64 91de: 2212 movs r2, #18 91e0: 5e9b ldrsh r3, [r3, r2] 91e2: aa3c add r2, sp, #240 ; 0xf0 91e4: 2102 movs r1, #2 91e6: 5e52 ldrsh r2, [r2, r1] 91e8: 189b adds r3, r3, r2 91ea: 9a1c ldr r2, [sp, #112] ; 0x70 91ec: 2102 movs r1, #2 91ee: 5e52 ldrsh r2, [r2, r1] 91f0: 1a9b subs r3, r3, r2 91f2: 9321 str r3, [sp, #132] ; 0x84 for(y = 0; y < draw_area_h; y++) { 91f4: 9520 str r5, [sp, #128] ; 0x80 91f6: 2d00 cmp r5, #0 91f8: dc00 bgt.n 91fc 91fa: e748 b.n 908e map_buf_tmp += map_w * px_size_byte; 91fc: 4653 mov r3, sl 91fe: 437b muls r3, r7 9200: 931f str r3, [sp, #124] ; 0x7c 9202: 2300 movs r3, #0 9204: 9310 str r3, [sp, #64] ; 0x40 9206: 930f str r3, [sp, #60] ; 0x3c ret = _lv_img_buf_transform_anti_alias(dsc); 9208: 464b mov r3, r9 920a: 9306 str r3, [sp, #24] 920c: e6af b.n 8f6e 920e: 46c0 nop ; (mov r8, r8) 9210: 000113ef .word 0x000113ef 9214: 000127a1 .word 0x000127a1 9218: 00012975 .word 0x00012975 921c: 0000e7f9 .word 0x0000e7f9 00009220 : static void show_error(const lv_area_t * coords, const lv_area_t * clip_area, const char * msg) { 9220: b5f0 push {r4, r5, r6, r7, lr} 9222: b09f sub sp, #124 ; 0x7c 9224: 0005 movs r5, r0 9226: 000e movs r6, r1 9228: 0017 movs r7, r2 lv_draw_rect_dsc_t rect_dsc; lv_draw_rect_dsc_init(&rect_dsc); 922a: ac09 add r4, sp, #36 ; 0x24 922c: 0020 movs r0, r4 922e: 4b0b ldr r3, [pc, #44] ; (925c ) 9230: 4798 blx r3 rect_dsc.bg_color = LV_COLOR_WHITE; 9232: 4b0b ldr r3, [pc, #44] ; (9260 ) 9234: 881b ldrh r3, [r3, #0] 9236: 8063 strh r3, [r4, #2] lv_draw_rect(coords, clip_area, &rect_dsc); 9238: 0022 movs r2, r4 923a: 0031 movs r1, r6 923c: 0028 movs r0, r5 923e: 4b09 ldr r3, [pc, #36] ; (9264 ) 9240: 4798 blx r3 lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); 9242: a802 add r0, sp, #8 9244: 4b08 ldr r3, [pc, #32] ; (9268 ) 9246: 4798 blx r3 lv_draw_label(coords, clip_area, &label_dsc, msg, NULL); 9248: 2300 movs r3, #0 924a: 9300 str r3, [sp, #0] 924c: 003b movs r3, r7 924e: aa02 add r2, sp, #8 9250: 0031 movs r1, r6 9252: 0028 movs r0, r5 9254: 4c05 ldr r4, [pc, #20] ; (926c ) 9256: 47a0 blx r4 } 9258: b01f add sp, #124 ; 0x7c 925a: bdf0 pop {r4, r5, r6, r7, pc} 925c: 0000bfcd .word 0x0000bfcd 9260: 000260a0 .word 0x000260a0 9264: 0000c071 .word 0x0000c071 9268: 000095ed .word 0x000095ed 926c: 0000963d .word 0x0000963d 00009270 : { 9270: b510 push {r4, lr} 9272: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_img_dsc_t)); 9274: 2110 movs r1, #16 9276: 4b0a ldr r3, [pc, #40] ; (92a0 ) 9278: 4798 blx r3 dsc->recolor = LV_COLOR_BLACK; 927a: 7b23 ldrb r3, [r4, #12] 927c: 221f movs r2, #31 927e: 4393 bics r3, r2 9280: 7323 strb r3, [r4, #12] 9282: 89a3 ldrh r3, [r4, #12] 9284: 4a07 ldr r2, [pc, #28] ; (92a4 ) 9286: 4013 ands r3, r2 9288: 81a3 strh r3, [r4, #12] 928a: 2300 movs r3, #0 928c: 7363 strb r3, [r4, #13] dsc->opa = LV_OPA_COVER; 928e: 33ff adds r3, #255 ; 0xff 9290: 7023 strb r3, [r4, #0] dsc->zoom = LV_IMG_ZOOM_NONE; 9292: 3301 adds r3, #1 9294: 8123 strh r3, [r4, #8] dsc->antialias = LV_ANTIALIAS; 9296: 7be3 ldrb r3, [r4, #15] 9298: 2201 movs r2, #1 929a: 4313 orrs r3, r2 929c: 73e3 strb r3, [r4, #15] } 929e: bd10 pop {r4, pc} 92a0: 00012975 .word 0x00012975 92a4: fffff81f .word 0xfffff81f 000092a8 : switch(cf) { 92a8: 3804 subs r0, #4 92aa: b2c3 uxtb r3, r0 92ac: 2b0a cmp r3, #10 92ae: d80f bhi.n 92d0 92b0: 0098 lsls r0, r3, #2 92b2: 4b08 ldr r3, [pc, #32] ; (92d4 ) 92b4: 581b ldr r3, [r3, r0] 92b6: 469f mov pc, r3 px_size = LV_COLOR_SIZE; 92b8: 2010 movs r0, #16 92ba: e00a b.n 92d2 px_size = LV_IMG_PX_SIZE_ALPHA_BYTE << 3; 92bc: 2018 movs r0, #24 break; 92be: e008 b.n 92d2 px_size = 1; 92c0: 2001 movs r0, #1 break; 92c2: e006 b.n 92d2 px_size = 2; 92c4: 2002 movs r0, #2 break; 92c6: e004 b.n 92d2 px_size = 4; 92c8: 2004 movs r0, #4 break; 92ca: e002 b.n 92d2 px_size = 8; 92cc: 2008 movs r0, #8 break; 92ce: e000 b.n 92d2 px_size = 0; 92d0: 2000 movs r0, #0 } 92d2: 4770 bx lr 92d4: 00026074 .word 0x00026074 000092d8 : switch(cf) { 92d8: 2803 cmp r0, #3 92da: d005 beq.n 92e8 92dc: d302 bcc.n 92e4 92de: 3806 subs r0, #6 92e0: 2804 cmp r0, #4 92e2: d901 bls.n 92e8 is_chroma_keyed = false; 92e4: 2000 movs r0, #0 } 92e6: 4770 bx lr is_chroma_keyed = true; 92e8: 2001 movs r0, #1 92ea: e7fc b.n 92e6 000092ec : switch(cf) { 92ec: 2805 cmp r0, #5 92ee: d007 beq.n 9300 92f0: d803 bhi.n 92fa 92f2: 2802 cmp r0, #2 92f4: d004 beq.n 9300 has_alpha = false; 92f6: 2000 movs r0, #0 } 92f8: 4770 bx lr switch(cf) { 92fa: 3807 subs r0, #7 92fc: 2807 cmp r0, #7 92fe: d8fa bhi.n 92f6 has_alpha = true; 9300: 2001 movs r0, #1 9302: e7f9 b.n 92f8 00009304 : { 9304: b5f0 push {r4, r5, r6, r7, lr} 9306: 46de mov lr, fp 9308: 4657 mov r7, sl 930a: 464e mov r6, r9 930c: 4645 mov r5, r8 930e: b5e0 push {r5, r6, r7, lr} 9310: b091 sub sp, #68 ; 0x44 9312: 0004 movs r4, r0 9314: 9103 str r1, [sp, #12] 9316: 001e movs r6, r3 if(src == NULL) { 9318: 2a00 cmp r2, #0 931a: d009 beq.n 9330 if(dsc->opa <= LV_OPA_MIN) return; 931c: 781b ldrb r3, [r3, #0] 931e: 2b05 cmp r3, #5 9320: d814 bhi.n 934c } 9322: b011 add sp, #68 ; 0x44 9324: bc3c pop {r2, r3, r4, r5} 9326: 4690 mov r8, r2 9328: 4699 mov r9, r3 932a: 46a2 mov sl, r4 932c: 46ab mov fp, r5 932e: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("Image draw: src is NULL"); 9330: 4b81 ldr r3, [pc, #516] ; (9538 ) 9332: 9300 str r3, [sp, #0] 9334: 4b81 ldr r3, [pc, #516] ; (953c ) 9336: 324d adds r2, #77 ; 0x4d 9338: 4981 ldr r1, [pc, #516] ; (9540 ) 933a: 2002 movs r0, #2 933c: 4d81 ldr r5, [pc, #516] ; (9544 ) 933e: 47a8 blx r5 show_error(coords, mask, "No\ndata"); 9340: 4a81 ldr r2, [pc, #516] ; (9548 ) 9342: 9903 ldr r1, [sp, #12] 9344: 0020 movs r0, r4 9346: 4b81 ldr r3, [pc, #516] ; (954c ) 9348: 4798 blx r3 return; 934a: e7ea b.n 9322 lv_img_cache_entry_t * cdsc = _lv_img_cache_open(src, draw_dsc->recolor); 934c: 89b1 ldrh r1, [r6, #12] 934e: 0010 movs r0, r2 9350: 4b7f ldr r3, [pc, #508] ; (9550 ) 9352: 4798 blx r3 9354: 1e07 subs r7, r0, #0 if(cdsc == NULL) return LV_RES_INV; 9356: d100 bne.n 935a 9358: e0b0 b.n 94bc bool chroma_keyed = lv_img_cf_is_chroma_keyed(cdsc->dec_dsc.header.cf); 935a: 7b05 ldrb r5, [r0, #12] 935c: 06ed lsls r5, r5, #27 935e: 0eed lsrs r5, r5, #27 9360: 0028 movs r0, r5 9362: 4b7c ldr r3, [pc, #496] ; (9554 ) 9364: 4798 blx r3 9366: 9004 str r0, [sp, #16] 9368: 9006 str r0, [sp, #24] bool alpha_byte = lv_img_cf_has_alpha(cdsc->dec_dsc.header.cf); 936a: 0028 movs r0, r5 936c: 4b7a ldr r3, [pc, #488] ; (9558 ) 936e: 4798 blx r3 9370: 9005 str r0, [sp, #20] 9372: 9007 str r0, [sp, #28] if(cdsc->dec_dsc.error_msg != NULL) { 9374: 69bb ldr r3, [r7, #24] 9376: 2b00 cmp r3, #0 9378: d00d beq.n 9396 LV_LOG_WARN("Image draw error"); 937a: 4b78 ldr r3, [pc, #480] ; (955c ) 937c: 9300 str r3, [sp, #0] 937e: 4b78 ldr r3, [pc, #480] ; (9560 ) 9380: 22f7 movs r2, #247 ; 0xf7 9382: 496f ldr r1, [pc, #444] ; (9540 ) 9384: 2002 movs r0, #2 9386: 4d6f ldr r5, [pc, #444] ; (9544 ) 9388: 47a8 blx r5 show_error(coords, clip_area, cdsc->dec_dsc.error_msg); 938a: 69ba ldr r2, [r7, #24] 938c: 9903 ldr r1, [sp, #12] 938e: 0020 movs r0, r4 9390: 4b6e ldr r3, [pc, #440] ; (954c ) 9392: 4798 blx r3 9394: e7c5 b.n 9322 else if(cdsc->dec_dsc.img_data) { 9396: 693b ldr r3, [r7, #16] 9398: 2b00 cmp r3, #0 939a: d045 beq.n 9428 939c: 2300 movs r3, #0 939e: a90c add r1, sp, #48 ; 0x30 93a0: 5ce2 ldrb r2, [r4, r3] 93a2: 545a strb r2, [r3, r1] 93a4: 3301 adds r3, #1 while(len) { 93a6: 2b08 cmp r3, #8 93a8: d1fa bne.n 93a0 if(draw_dsc->angle || draw_dsc->zoom != LV_IMG_ZOOM_NONE) { 93aa: 8873 ldrh r3, [r6, #2] 93ac: 2b00 cmp r3, #0 93ae: d104 bne.n 93ba 93b0: 2280 movs r2, #128 ; 0x80 93b2: 0052 lsls r2, r2, #1 93b4: 8931 ldrh r1, [r6, #8] 93b6: 4291 cmp r1, r2 93b8: d023 beq.n 9402 _lv_img_buf_get_transformed_area(&map_area_rot, w, h, draw_dsc->angle, draw_dsc->zoom, &draw_dsc->pivot); 93ba: b21b sxth r3, r3 93bc: 88e2 ldrh r2, [r4, #6] 93be: 3201 adds r2, #1 93c0: 8861 ldrh r1, [r4, #2] 93c2: 1a52 subs r2, r2, r1 93c4: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 93c6: 88a1 ldrh r1, [r4, #4] 93c8: 3101 adds r1, #1 93ca: 8820 ldrh r0, [r4, #0] 93cc: 1a09 subs r1, r1, r0 93ce: b209 sxth r1, r1 93d0: a80c add r0, sp, #48 ; 0x30 93d2: 0005 movs r5, r0 93d4: 1d30 adds r0, r6, #4 93d6: 9001 str r0, [sp, #4] 93d8: 8930 ldrh r0, [r6, #8] 93da: 9000 str r0, [sp, #0] 93dc: 9506 str r5, [sp, #24] 93de: 0028 movs r0, r5 93e0: 4d60 ldr r5, [pc, #384] ; (9564 ) 93e2: 47a8 blx r5 map_area_rot.x1 += coords->x1; 93e4: 8822 ldrh r2, [r4, #0] 93e6: 9806 ldr r0, [sp, #24] 93e8: 8803 ldrh r3, [r0, #0] 93ea: 18d3 adds r3, r2, r3 93ec: 8003 strh r3, [r0, #0] map_area_rot.y1 += coords->y1; 93ee: 8863 ldrh r3, [r4, #2] 93f0: 8841 ldrh r1, [r0, #2] 93f2: 1859 adds r1, r3, r1 93f4: 8041 strh r1, [r0, #2] map_area_rot.x2 += coords->x1; 93f6: 8881 ldrh r1, [r0, #4] 93f8: 1852 adds r2, r2, r1 93fa: 8082 strh r2, [r0, #4] map_area_rot.y2 += coords->y1; 93fc: 88c2 ldrh r2, [r0, #6] 93fe: 189b adds r3, r3, r2 9400: 80c3 strh r3, [r0, #6] union_ok = _lv_area_intersect(&mask_com, clip_area, &map_area_rot); 9402: aa0c add r2, sp, #48 ; 0x30 9404: 9903 ldr r1, [sp, #12] 9406: a80e add r0, sp, #56 ; 0x38 9408: 4b57 ldr r3, [pc, #348] ; (9568 ) 940a: 4798 blx r3 if(union_ok == false) { 940c: 2800 cmp r0, #0 940e: d100 bne.n 9412 9410: e787 b.n 9322 lv_draw_map(coords, &mask_com, cdsc->dec_dsc.img_data, draw_dsc, chroma_keyed, alpha_byte); 9412: 693a ldr r2, [r7, #16] 9414: 9b05 ldr r3, [sp, #20] 9416: 9301 str r3, [sp, #4] 9418: 9b04 ldr r3, [sp, #16] 941a: 9300 str r3, [sp, #0] 941c: 0033 movs r3, r6 941e: a90e add r1, sp, #56 ; 0x38 9420: 0020 movs r0, r4 9422: 4c52 ldr r4, [pc, #328] ; (956c ) 9424: 47a0 blx r4 9426: e77c b.n 9322 union_ok = _lv_area_intersect(&mask_com, clip_area, coords); 9428: 0022 movs r2, r4 942a: 9903 ldr r1, [sp, #12] 942c: a80a add r0, sp, #40 ; 0x28 942e: 4b4e ldr r3, [pc, #312] ; (9568 ) 9430: 4798 blx r3 if(union_ok == false) { 9432: 2800 cmp r0, #0 9434: d100 bne.n 9438 9436: e774 b.n 9322 9438: aa0a add r2, sp, #40 ; 0x28 943a: 8893 ldrh r3, [r2, #4] 943c: 3301 adds r3, #1 943e: 8812 ldrh r2, [r2, #0] 9440: 1a9b subs r3, r3, r2 9442: b21b sxth r3, r3 9444: 9305 str r3, [sp, #20] uint8_t * buf = _lv_mem_buf_get(lv_area_get_width(&mask_com) * 9446: 0058 lsls r0, r3, #1 9448: 469c mov ip, r3 944a: 4460 add r0, ip 944c: 4b48 ldr r3, [pc, #288] ; (9570 ) 944e: 4798 blx r3 9450: 9004 str r0, [sp, #16] 9452: 2300 movs r3, #0 *d8 = *s8; 9454: a80c add r0, sp, #48 ; 0x30 9456: a90a add r1, sp, #40 ; 0x28 9458: 5c5a ldrb r2, [r3, r1] 945a: 541a strb r2, [r3, r0] 945c: 3301 adds r3, #1 while(len) { 945e: 2b08 cmp r3, #8 9460: d1fa bne.n 9458 lv_area_set_height(&line, 1); 9462: 2101 movs r1, #1 9464: a80c add r0, sp, #48 ; 0x30 9466: 4b43 ldr r3, [pc, #268] ; (9574 ) 9468: 4798 blx r3 int32_t x = mask_com.x1 - coords->x1; 946a: aa0a add r2, sp, #40 ; 0x28 946c: 2100 movs r1, #0 946e: 5e53 ldrsh r3, [r2, r1] 9470: 469c mov ip, r3 9472: 2000 movs r0, #0 9474: 5e21 ldrsh r1, [r4, r0] int32_t y = mask_com.y1 - coords->y1; 9476: 2002 movs r0, #2 9478: 5e15 ldrsh r5, [r2, r0] 947a: 2302 movs r3, #2 947c: 5ee0 ldrsh r0, [r4, r3] 947e: 1a28 subs r0, r5, r0 for(row = mask_com.y1; row <= mask_com.y2; row++) { 9480: 2306 movs r3, #6 9482: 5ed2 ldrsh r2, [r2, r3] 9484: 4295 cmp r5, r2 9486: dc53 bgt.n 9530 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 9488: 4a37 ldr r2, [pc, #220] ; (9568 ) 948a: 4693 mov fp, r2 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 948c: 4663 mov r3, ip 948e: 1a5b subs r3, r3, r1 9490: b21b sxth r3, r3 9492: 9308 str r3, [sp, #32] 9494: 9409 str r4, [sp, #36] ; 0x24 9496: 46b2 mov sl, r6 9498: 4680 mov r8, r0 949a: e023 b.n 94e4 949c: 9c09 ldr r4, [sp, #36] ; 0x24 lv_img_decoder_close(&cdsc->dec_dsc); 949e: 0038 movs r0, r7 94a0: 4b35 ldr r3, [pc, #212] ; (9578 ) 94a2: 4798 blx r3 LV_LOG_WARN("Image draw can't read the line"); 94a4: 4b35 ldr r3, [pc, #212] ; (957c ) 94a6: 9300 str r3, [sp, #0] 94a8: 4b2d ldr r3, [pc, #180] ; (9560 ) 94aa: 229a movs r2, #154 ; 0x9a 94ac: 0052 lsls r2, r2, #1 94ae: 4924 ldr r1, [pc, #144] ; (9540 ) 94b0: 2002 movs r0, #2 94b2: 4d24 ldr r5, [pc, #144] ; (9544 ) 94b4: 47a8 blx r5 _lv_mem_buf_release(buf); 94b6: 9804 ldr r0, [sp, #16] 94b8: 4b31 ldr r3, [pc, #196] ; (9580 ) 94ba: 4798 blx r3 LV_LOG_WARN("Image draw error"); 94bc: 4b27 ldr r3, [pc, #156] ; (955c ) 94be: 9300 str r3, [sp, #0] 94c0: 4b1e ldr r3, [pc, #120] ; (953c ) 94c2: 2258 movs r2, #88 ; 0x58 94c4: 491e ldr r1, [pc, #120] ; (9540 ) 94c6: 2002 movs r0, #2 94c8: 4d1e ldr r5, [pc, #120] ; (9544 ) 94ca: 47a8 blx r5 show_error(coords, mask, "No\ndata"); 94cc: 4a1e ldr r2, [pc, #120] ; (9548 ) 94ce: 9903 ldr r1, [sp, #12] 94d0: 0020 movs r0, r4 94d2: 4b1e ldr r3, [pc, #120] ; (954c ) 94d4: 4798 blx r3 return; 94d6: e724 b.n 9322 for(row = mask_com.y1; row <= mask_com.y2; row++) { 94d8: 3501 adds r5, #1 94da: ab0a add r3, sp, #40 ; 0x28 94dc: 2206 movs r2, #6 94de: 5e9b ldrsh r3, [r3, r2] 94e0: 429d cmp r5, r3 94e2: dc25 bgt.n 9530 union_ok = _lv_area_intersect(&mask_line, clip_area, &line); 94e4: aa0c add r2, sp, #48 ; 0x30 94e6: 9903 ldr r1, [sp, #12] 94e8: a80e add r0, sp, #56 ; 0x38 94ea: 47d8 blx fp if(union_ok == false) continue; 94ec: 2800 cmp r0, #0 94ee: d0f3 beq.n 94d8 read_res = lv_img_decoder_read_line(&cdsc->dec_dsc, x, y, width, buf); 94f0: 4643 mov r3, r8 94f2: b21a sxth r2, r3 94f4: 9b04 ldr r3, [sp, #16] 94f6: 9300 str r3, [sp, #0] 94f8: 9b05 ldr r3, [sp, #20] 94fa: 9908 ldr r1, [sp, #32] 94fc: 0038 movs r0, r7 94fe: 4c21 ldr r4, [pc, #132] ; (9584 ) 9500: 47a0 blx r4 if(read_res != LV_RES_OK) { 9502: 2801 cmp r0, #1 9504: d1ca bne.n 949c lv_draw_map(&line, &mask_line, buf, draw_dsc, chroma_keyed, alpha_byte); 9506: ac0c add r4, sp, #48 ; 0x30 9508: 9b07 ldr r3, [sp, #28] 950a: 9301 str r3, [sp, #4] 950c: 9b06 ldr r3, [sp, #24] 950e: 9300 str r3, [sp, #0] 9510: 4653 mov r3, sl 9512: 9a04 ldr r2, [sp, #16] 9514: a90e add r1, sp, #56 ; 0x38 9516: 0020 movs r0, r4 9518: 4e14 ldr r6, [pc, #80] ; (956c ) 951a: 47b0 blx r6 line.y1++; 951c: 8863 ldrh r3, [r4, #2] 951e: 3301 adds r3, #1 9520: 8063 strh r3, [r4, #2] line.y2++; 9522: 88e3 ldrh r3, [r4, #6] 9524: 3301 adds r3, #1 9526: 80e3 strh r3, [r4, #6] y++; 9528: 2301 movs r3, #1 952a: 469c mov ip, r3 952c: 44e0 add r8, ip 952e: e7d3 b.n 94d8 _lv_mem_buf_release(buf); 9530: 9804 ldr r0, [sp, #16] 9532: 4b13 ldr r3, [pc, #76] ; (9580 ) 9534: 4798 blx r3 9536: e6f4 b.n 9322 9538: 000260fc .word 0x000260fc 953c: 000260a4 .word 0x000260a4 9540: 000260c4 .word 0x000260c4 9544: 00012159 .word 0x00012159 9548: 00026114 .word 0x00026114 954c: 00009221 .word 0x00009221 9550: 0000ef51 .word 0x0000ef51 9554: 000092d9 .word 0x000092d9 9558: 000092ed .word 0x000092ed 955c: 0002611c .word 0x0002611c 9560: 000260b0 .word 0x000260b0 9564: 0000e92d .word 0x0000e92d 9568: 0001140b .word 0x0001140b 956c: 00008979 .word 0x00008979 9570: 000127a1 .word 0x000127a1 9574: 000113e5 .word 0x000113e5 9578: 0000fd5d .word 0x0000fd5d 957c: 00026130 .word 0x00026130 9580: 00012465 .word 0x00012465 9584: 0000fd39 .word 0x0000fd39 00009588 : if(src == NULL) return img_src_type; 9588: 2800 cmp r0, #0 958a: d008 beq.n 959e if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 958c: 7803 ldrb r3, [r0, #0] 958e: 001a movs r2, r3 9590: 3a20 subs r2, #32 img_src_type = LV_IMG_SRC_FILE; /*If it's an ASCII character then it's file name*/ 9592: 2001 movs r0, #1 if(u8_p[0] >= 0x20 && u8_p[0] <= 0x7F) { 9594: 2a5f cmp r2, #95 ; 0x5f 9596: d901 bls.n 959c img_src_type = LV_IMG_SRC_VARIABLE; /*`lv_img_dsc_t` is design to the first byte < 0x20*/ 9598: 09d8 lsrs r0, r3, #7 959a: 0040 lsls r0, r0, #1 } 959c: 4770 bx lr if(src == NULL) return img_src_type; 959e: 2003 movs r0, #3 95a0: e7fc b.n 959c ... 000095a4 : */ static uint8_t hex_char_to_num(char hex) { uint8_t result = 0; if(hex >= '0' && hex <= '9') { 95a4: 0003 movs r3, r0 95a6: 3b30 subs r3, #48 ; 0x30 95a8: b2db uxtb r3, r3 result = hex - '0'; 95aa: 001a movs r2, r3 if(hex >= '0' && hex <= '9') { 95ac: 2b09 cmp r3, #9 95ae: d918 bls.n 95e2 } else { if(hex >= 'a') hex -= 'a' - 'A'; /*Convert to upper case*/ 95b0: 2860 cmp r0, #96 ; 0x60 95b2: d901 bls.n 95b8 95b4: 3820 subs r0, #32 95b6: b2c0 uxtb r0, r0 switch(hex) { 95b8: 3841 subs r0, #65 ; 0x41 95ba: b2c3 uxtb r3, r0 95bc: 2b05 cmp r3, #5 95be: d80d bhi.n 95dc 95c0: 0098 lsls r0, r3, #2 95c2: 4b09 ldr r3, [pc, #36] ; (95e8 ) 95c4: 581b ldr r3, [r3, r0] 95c6: 469f mov pc, r3 case 'A': result = 10; break; case 'B': result = 11; 95c8: 220b movs r2, #11 95ca: e00a b.n 95e2 break; case 'C': result = 12; 95cc: 220c movs r2, #12 break; 95ce: e008 b.n 95e2 case 'D': result = 13; 95d0: 220d movs r2, #13 break; 95d2: e006 b.n 95e2 case 'E': result = 14; 95d4: 220e movs r2, #14 break; 95d6: e004 b.n 95e2 case 'F': result = 15; 95d8: 220f movs r2, #15 break; 95da: e002 b.n 95e2 default: result = 0; 95dc: 2200 movs r2, #0 break; 95de: e000 b.n 95e2 result = 10; 95e0: 220a movs r2, #10 } } return result; } 95e2: 0010 movs r0, r2 95e4: 4770 bx lr 95e6: 46c0 nop ; (mov r8, r8) 95e8: 00026150 .word 0x00026150 000095ec : { 95ec: b510 push {r4, lr} 95ee: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_label_dsc_t)); 95f0: 211c movs r1, #28 95f2: 4b0f ldr r3, [pc, #60] ; (9630 ) 95f4: 4798 blx r3 dsc->opa = LV_OPA_COVER; 95f6: 23ff movs r3, #255 ; 0xff 95f8: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; 95fa: 7823 ldrb r3, [r4, #0] 95fc: 221f movs r2, #31 95fe: 4393 bics r3, r2 9600: 7023 strb r3, [r4, #0] 9602: 8822 ldrh r2, [r4, #0] 9604: 490b ldr r1, [pc, #44] ; (9634 ) 9606: 400a ands r2, r1 9608: 8022 strh r2, [r4, #0] 960a: 2300 movs r3, #0 960c: 7063 strb r3, [r4, #1] dsc->font = LV_THEME_DEFAULT_FONT_NORMAL; 960e: 4b0a ldr r3, [pc, #40] ; (9638 ) 9610: 6063 str r3, [r4, #4] dsc->sel_start = LV_DRAW_LABEL_NO_TXT_SEL; 9612: 2301 movs r3, #1 9614: 425b negs r3, r3 9616: 81e3 strh r3, [r4, #14] dsc->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; 9618: 8223 strh r3, [r4, #16] dsc->sel_color = LV_COLOR_BLUE; 961a: 78a2 ldrb r2, [r4, #2] 961c: 231f movs r3, #31 961e: 431a orrs r2, r3 9620: 70a2 strb r2, [r4, #2] 9622: 8863 ldrh r3, [r4, #2] 9624: 400b ands r3, r1 9626: 8063 strh r3, [r4, #2] 9628: 2300 movs r3, #0 962a: 70e3 strb r3, [r4, #3] dsc->bidi_dir = LV_BIDI_DIR_LTR; 962c: 75a3 strb r3, [r4, #22] } 962e: bd10 pop {r4, pc} 9630: 00012975 .word 0x00012975 9634: fffff81f .word 0xfffff81f 9638: 20000030 .word 0x20000030 0000963c : { 963c: b5f0 push {r4, r5, r6, r7, lr} 963e: 46de mov lr, fp 9640: 4657 mov r7, sl 9642: 464e mov r6, r9 9644: 4645 mov r5, r8 9646: b5e0 push {r5, r6, r7, lr} 9648: b0db sub sp, #364 ; 0x16c 964a: 9011 str r0, [sp, #68] ; 0x44 964c: 910f str r1, [sp, #60] ; 0x3c 964e: 0017 movs r7, r2 9650: 001a movs r2, r3 9652: 930e str r3, [sp, #56] ; 0x38 9654: 9b64 ldr r3, [sp, #400] ; 0x190 9656: 9307 str r3, [sp, #28] if(dsc->opa <= LV_OPA_MIN) return; 9658: 7a3b ldrb r3, [r7, #8] 965a: 2b05 cmp r3, #5 965c: d902 bls.n 9664 if(txt[0] == '\0') return; 965e: 7813 ldrb r3, [r2, #0] 9660: 2b00 cmp r3, #0 9662: d106 bne.n 9672 } 9664: b05b add sp, #364 ; 0x16c 9666: bc3c pop {r2, r3, r4, r5} 9668: 4690 mov r8, r2 966a: 4699 mov r9, r3 966c: 46a2 mov sl, r4 966e: 46ab mov fp, r5 9670: bdf0 pop {r4, r5, r6, r7, pc} const lv_font_t * font = dsc->font; 9672: 687b ldr r3, [r7, #4] 9674: 9305 str r3, [sp, #20] bool clip_ok = _lv_area_intersect(&clipped_area, coords, mask); 9676: 000a movs r2, r1 9678: 0004 movs r4, r0 967a: 0001 movs r1, r0 967c: a858 add r0, sp, #352 ; 0x160 967e: 4bcf ldr r3, [pc, #828] ; (99bc ) 9680: 4798 blx r3 if(!clip_ok) return; 9682: 2800 cmp r0, #0 9684: d0ee beq.n 9664 if((dsc->flag & LV_TXT_FLAG_EXPAND) == 0) { 9686: 7dfa ldrb r2, [r7, #23] 9688: 0791 lsls r1, r2, #30 968a: d424 bmi.n 96d6 968c: 88a3 ldrh r3, [r4, #4] 968e: 3301 adds r3, #1 9690: 8822 ldrh r2, [r4, #0] 9692: 1a9b subs r3, r3, r2 w = lv_area_get_width(coords); 9694: b21b sxth r3, r3 int32_t line_height_font = lv_font_get_line_height(font); 9696: 9a05 ldr r2, [sp, #20] 9698: 2608 movs r6, #8 969a: 5f96 ldrsh r6, [r2, r6] int32_t line_height = line_height_font + dsc->line_space; 969c: 210a movs r1, #10 969e: 5e7a ldrsh r2, [r7, r1] 96a0: 4691 mov r9, r2 96a2: 44b1 add r9, r6 pos.x = coords->x1; 96a4: 9a11 ldr r2, [sp, #68] ; 0x44 96a6: 2000 movs r0, #0 96a8: 5e11 ldrsh r1, [r2, r0] 96aa: 9124 str r1, [sp, #144] ; 0x90 pos.y = coords->y1; 96ac: 2002 movs r0, #2 96ae: 5e10 ldrsh r0, [r2, r0] x_ofs = dsc->ofs_x; 96b0: 2112 movs r1, #18 96b2: 5e7a ldrsh r2, [r7, r1] 96b4: 9221 str r2, [sp, #132] ; 0x84 y_ofs = dsc->ofs_y; 96b6: 2214 movs r2, #20 96b8: 5eb9 ldrsh r1, [r7, r2] pos.y += y_ofs; 96ba: 1842 adds r2, r0, r1 96bc: b292 uxth r2, r2 96be: b215 sxth r5, r2 if(hint && y_ofs == 0 && coords->y1 < 0) { 96c0: 9c07 ldr r4, [sp, #28] 96c2: 2c00 cmp r4, #0 96c4: d052 beq.n 976c 96c6: 2900 cmp r1, #0 96c8: d154 bne.n 9774 96ca: 2800 cmp r0, #0 96cc: db14 blt.n 96f8 pos.y += y_ofs; 96ce: 9513 str r5, [sp, #76] ; 0x4c uint32_t line_start = 0; 96d0: 2200 movs r2, #0 96d2: 9206 str r2, [sp, #24] 96d4: e02e b.n 9734 _lv_txt_get_size(&p, txt, dsc->font, dsc->letter_space, dsc->line_space, LV_COORD_MAX, 96d6: 210c movs r1, #12 96d8: 5e7b ldrsh r3, [r7, r1] 96da: ad3c add r5, sp, #240 ; 0xf0 96dc: 9202 str r2, [sp, #8] 96de: 4ab8 ldr r2, [pc, #736] ; (99c0 ) 96e0: 9201 str r2, [sp, #4] 96e2: 210a movs r1, #10 96e4: 5e7a ldrsh r2, [r7, r1] 96e6: 9200 str r2, [sp, #0] 96e8: 687a ldr r2, [r7, #4] 96ea: 990e ldr r1, [sp, #56] ; 0x38 96ec: 0028 movs r0, r5 96ee: 4eb5 ldr r6, [pc, #724] ; (99c4 ) 96f0: 47b0 blx r6 w = p.x; 96f2: 2200 movs r2, #0 96f4: 5eab ldrsh r3, [r5, r2] 96f6: e7ce b.n 9696 if(LV_MATH_ABS(hint->coord_y - coords->y1) > LV_LABEL_HINT_UPDATE_TH - 2 * line_height) { 96f8: 68a1 ldr r1, [r4, #8] 96fa: 1a08 subs r0, r1, r0 96fc: 17c1 asrs r1, r0, #31 96fe: 1840 adds r0, r0, r1 9700: 4048 eors r0, r1 9702: 2180 movs r1, #128 ; 0x80 9704: 0089 lsls r1, r1, #2 9706: 464c mov r4, r9 9708: 1b09 subs r1, r1, r4 970a: 0049 lsls r1, r1, #1 970c: 4288 cmp r0, r1 970e: dd07 ble.n 9720 hint->line_start = -1; 9710: 2201 movs r2, #1 9712: 4252 negs r2, r2 9714: 9907 ldr r1, [sp, #28] 9716: 600a str r2, [r1, #0] pos.y += y_ofs; 9718: 9513 str r5, [sp, #76] ; 0x4c uint32_t line_start = 0; 971a: 2200 movs r2, #0 971c: 9206 str r2, [sp, #24] 971e: e009 b.n 9734 last_line_start = hint->line_start; 9720: 9807 ldr r0, [sp, #28] 9722: 6801 ldr r1, [r0, #0] if(hint && last_line_start >= 0) { 9724: 2900 cmp r1, #0 9726: db29 blt.n 977c line_start = last_line_start; 9728: 9106 str r1, [sp, #24] pos.y += hint->y; 972a: 6841 ldr r1, [r0, #4] 972c: 468c mov ip, r1 972e: 4462 add r2, ip 9730: b212 sxth r2, r2 9732: 9213 str r2, [sp, #76] ; 0x4c uint32_t line_end = line_start + _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9734: b21b sxth r3, r3 9736: 0019 movs r1, r3 9738: 9317 str r3, [sp, #92] ; 0x5c 973a: 230c movs r3, #12 973c: 5efa ldrsh r2, [r7, r3] 973e: 9b0e ldr r3, [sp, #56] ; 0x38 9740: 0018 movs r0, r3 9742: 9c06 ldr r4, [sp, #24] 9744: 46a4 mov ip, r4 9746: 4460 add r0, ip 9748: 7dfb ldrb r3, [r7, #23] 974a: 9300 str r3, [sp, #0] 974c: 000b movs r3, r1 974e: 9905 ldr r1, [sp, #20] 9750: 4d9d ldr r5, [pc, #628] ; (99c8 ) 9752: 47a8 blx r5 9754: 46a4 mov ip, r4 9756: 4460 add r0, ip line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 9758: 4a9b ldr r2, [pc, #620] ; (99c8 ) 975a: 4692 mov sl, r2 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 975c: 4a9b ldr r2, [pc, #620] ; (99cc ) 975e: 4690 mov r8, r2 9760: 9608 str r6, [sp, #32] 9762: 0006 movs r6, r0 9764: 9d13 ldr r5, [sp, #76] ; 0x4c 9766: 46bb mov fp, r7 9768: 9f07 ldr r7, [sp, #28] while(pos.y + line_height_font < mask->y1) { 976a: e011 b.n 9790 pos.y += y_ofs; 976c: 9513 str r5, [sp, #76] ; 0x4c uint32_t line_start = 0; 976e: 2200 movs r2, #0 9770: 9206 str r2, [sp, #24] 9772: e7df b.n 9734 pos.y += y_ofs; 9774: 9513 str r5, [sp, #76] ; 0x4c uint32_t line_start = 0; 9776: 2200 movs r2, #0 9778: 9206 str r2, [sp, #24] 977a: e7db b.n 9734 pos.y += y_ofs; 977c: 9513 str r5, [sp, #76] ; 0x4c uint32_t line_start = 0; 977e: 2200 movs r2, #0 9780: 9206 str r2, [sp, #24] 9782: e7d7 b.n 9734 9784: 9606 str r6, [sp, #24] if(txt[line_start] == '\0') return; 9786: 7823 ldrb r3, [r4, #0] 9788: 2b00 cmp r3, #0 978a: d100 bne.n 978e 978c: e76a b.n 9664 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 978e: 0006 movs r6, r0 while(pos.y + line_height_font < mask->y1) { 9790: 9b08 ldr r3, [sp, #32] 9792: 18eb adds r3, r5, r3 9794: 9a0f ldr r2, [sp, #60] ; 0x3c 9796: 2102 movs r1, #2 9798: 5e52 ldrsh r2, [r2, r1] 979a: 4293 cmp r3, r2 979c: da20 bge.n 97e0 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); 979e: 9b0e ldr r3, [sp, #56] ; 0x38 97a0: 199c adds r4, r3, r6 97a2: 465b mov r3, fp 97a4: 220c movs r2, #12 97a6: 5e9a ldrsh r2, [r3, r2] 97a8: 465b mov r3, fp 97aa: 7ddb ldrb r3, [r3, #23] 97ac: 9300 str r3, [sp, #0] 97ae: 9b17 ldr r3, [sp, #92] ; 0x5c 97b0: 9905 ldr r1, [sp, #20] 97b2: 0020 movs r0, r4 97b4: 47d0 blx sl 97b6: 1980 adds r0, r0, r6 97b8: 444d add r5, r9 97ba: b22d sxth r5, r5 if(hint && pos.y >= -LV_LABEL_HINT_UPDATE_TH && hint->line_start < 0) { 97bc: 2f00 cmp r7, #0 97be: d0e1 beq.n 9784 97c0: 4545 cmp r5, r8 97c2: dbdf blt.n 9784 97c4: 683b ldr r3, [r7, #0] 97c6: 2b00 cmp r3, #0 97c8: dadc bge.n 9784 hint->line_start = line_start; 97ca: 603e str r6, [r7, #0] hint->y = pos.y - coords->y1; 97cc: 9a11 ldr r2, [sp, #68] ; 0x44 97ce: 2102 movs r1, #2 97d0: 5e53 ldrsh r3, [r2, r1] 97d2: 1aeb subs r3, r5, r3 97d4: 607b str r3, [r7, #4] hint->coord_y = coords->y1; 97d6: 0013 movs r3, r2 97d8: 2202 movs r2, #2 97da: 5e9b ldrsh r3, [r3, r2] 97dc: 60bb str r3, [r7, #8] 97de: e7d1 b.n 9784 97e0: 960b str r6, [sp, #44] ; 0x2c 97e2: 9513 str r5, [sp, #76] ; 0x4c 97e4: 465f mov r7, fp if(dsc->flag & LV_TXT_FLAG_CENTER) { 97e6: 7dfa ldrb r2, [r7, #23] 97e8: 0753 lsls r3, r2, #29 97ea: d42e bmi.n 984a else if(dsc->flag & LV_TXT_FLAG_RIGHT) { 97ec: 0713 lsls r3, r2, #28 97ee: d448 bmi.n 9882 lv_opa_t opa = dsc->opa; 97f0: 7a3b ldrb r3, [r7, #8] 97f2: 9310 str r3, [sp, #64] ; 0x40 uint16_t sel_start = dsc->sel_start; 97f4: 89fb ldrh r3, [r7, #14] 97f6: 001e movs r6, r3 uint16_t sel_end = dsc->sel_end; 97f8: 8a3a ldrh r2, [r7, #16] 97fa: 4692 mov sl, r2 if(sel_start > sel_end) { 97fc: 4553 cmp r3, sl 97fe: d901 bls.n 9804 sel_start = sel_end; 9800: 4656 mov r6, sl sel_end = tmp; 9802: 469a mov sl, r3 if((dsc->decor & LV_TEXT_DECOR_UNDERLINE) || (dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH)) { 9804: 7e3b ldrb r3, [r7, #24] 9806: 079b lsls r3, r3, #30 9808: d155 bne.n 98b6 lv_draw_rect_dsc_init(&draw_dsc_sel); 980a: ac3f add r4, sp, #252 ; 0xfc 980c: 0020 movs r0, r4 980e: 4b70 ldr r3, [pc, #448] ; (99d0 ) 9810: 4798 blx r3 draw_dsc_sel.bg_color = dsc->sel_color; 9812: 887b ldrh r3, [r7, #2] 9814: 8063 strh r3, [r4, #2] 9816: 9b10 ldr r3, [sp, #64] ; 0x40 9818: 2bfa cmp r3, #250 ; 0xfa 981a: d901 bls.n 9820 981c: 4b6d ldr r3, [pc, #436] ; (99d4 ) 981e: 781b ldrb r3, [r3, #0] 9820: b2db uxtb r3, r3 9822: 931e str r3, [sp, #120] ; 0x78 9824: 464b mov r3, r9 9826: 466a mov r2, sp 9828: 8393 strh r3, [r2, #28] 982a: 8b93 ldrh r3, [r2, #28] 982c: 931f str r3, [sp, #124] ; 0x7c 982e: 466b mov r3, sp 9830: 224c movs r2, #76 ; 0x4c 9832: 189b adds r3, r3, r2 9834: 881b ldrh r3, [r3, #0] 9836: 9318 str r3, [sp, #96] ; 0x60 while(txt[line_start] != '\0') { 9838: 9d24 ldr r5, [sp, #144] ; 0x90 uint16_t par_start = 0; 983a: 2300 movs r3, #0 983c: 9320 str r3, [sp, #128] ; 0x80 983e: 46b0 mov r8, r6 9840: 4653 mov r3, sl 9842: 930c str r3, [sp, #48] ; 0x30 9844: 003e movs r6, r7 while(txt[line_start] != '\0') { 9846: f000 fe0e bl a466 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 984a: 210c movs r1, #12 984c: 5e7b ldrsh r3, [r7, r1] 984e: 9c06 ldr r4, [sp, #24] 9850: 1b31 subs r1, r6, r4 9852: b289 uxth r1, r1 9854: 980e ldr r0, [sp, #56] ; 0x38 9856: 46a4 mov ip, r4 9858: 4460 add r0, ip 985a: 9200 str r2, [sp, #0] 985c: 9a05 ldr r2, [sp, #20] 985e: 4c5e ldr r4, [pc, #376] ; (99d8 ) 9860: 47a0 blx r4 9862: 9a11 ldr r2, [sp, #68] ; 0x44 9864: 8893 ldrh r3, [r2, #4] 9866: 3301 adds r3, #1 9868: 8812 ldrh r2, [r2, #0] 986a: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; 986c: b21b sxth r3, r3 986e: 1a18 subs r0, r3, r0 9870: 0fc3 lsrs r3, r0, #31 9872: 181b adds r3, r3, r0 9874: 105b asrs r3, r3, #1 9876: 9a24 ldr r2, [sp, #144] ; 0x90 9878: 4694 mov ip, r2 987a: 4463 add r3, ip 987c: b21b sxth r3, r3 987e: 9324 str r3, [sp, #144] ; 0x90 9880: e7b6 b.n 97f0 line_width = _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); 9882: 210c movs r1, #12 9884: 5e7b ldrsh r3, [r7, r1] 9886: 980b ldr r0, [sp, #44] ; 0x2c 9888: 9c06 ldr r4, [sp, #24] 988a: 1b01 subs r1, r0, r4 988c: b289 uxth r1, r1 988e: 980e ldr r0, [sp, #56] ; 0x38 9890: 46a4 mov ip, r4 9892: 4460 add r0, ip 9894: 9200 str r2, [sp, #0] 9896: 9a05 ldr r2, [sp, #20] 9898: 4c4f ldr r4, [pc, #316] ; (99d8 ) 989a: 47a0 blx r4 989c: 9a11 ldr r2, [sp, #68] ; 0x44 989e: 8893 ldrh r3, [r2, #4] 98a0: 3301 adds r3, #1 98a2: 8812 ldrh r2, [r2, #0] 98a4: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; 98a6: b21b sxth r3, r3 98a8: 1a1b subs r3, r3, r0 98aa: 9a24 ldr r2, [sp, #144] ; 0x90 98ac: 4694 mov ip, r2 98ae: 4463 add r3, ip 98b0: b21b sxth r3, r3 98b2: 9324 str r3, [sp, #144] ; 0x90 98b4: e79c b.n 97f0 lv_draw_line_dsc_init(&line_dsc); 98b6: ac55 add r4, sp, #340 ; 0x154 98b8: 0020 movs r0, r4 98ba: 4b48 ldr r3, [pc, #288] ; (99dc ) 98bc: 4798 blx r3 line_dsc.color = dsc->color; 98be: 883b ldrh r3, [r7, #0] 98c0: 8023 strh r3, [r4, #0] line_dsc.width = (dsc->font->line_height + 5) / 10; /*+5 for rounding*/ 98c2: 687b ldr r3, [r7, #4] 98c4: 2008 movs r0, #8 98c6: 5e18 ldrsh r0, [r3, r0] 98c8: 3005 adds r0, #5 98ca: 210a movs r1, #10 98cc: 4b44 ldr r3, [pc, #272] ; (99e0 ) 98ce: 4798 blx r3 98d0: 8060 strh r0, [r4, #2] line_dsc.opa = dsc->opa; 98d2: 7a3b ldrb r3, [r7, #8] 98d4: 7223 strb r3, [r4, #8] line_dsc.blend_mode = dsc->blend_mode; 98d6: 7e7a ldrb r2, [r7, #25] 98d8: 2303 movs r3, #3 98da: 401a ands r2, r3 98dc: 7a63 ldrb r3, [r4, #9] 98de: 2103 movs r1, #3 98e0: 438b bics r3, r1 98e2: 4313 orrs r3, r2 98e4: 7263 strb r3, [r4, #9] 98e6: e790 b.n 980a uint16_t logical_char_pos = 0; 98e8: 2500 movs r5, #0 98ea: e0c5 b.n 9a78 if(cmd_state == CMD_STATE_WAIT) { /*Start char*/ 98ec: 9b08 ldr r3, [sp, #32] 98ee: 2b00 cmp r3, #0 98f0: d107 bne.n 9902 par_start = i; 98f2: ab34 add r3, sp, #208 ; 0xd0 98f4: 2280 movs r2, #128 ; 0x80 98f6: 189b adds r3, r3, r2 98f8: 881b ldrh r3, [r3, #0] 98fa: 9320 str r3, [sp, #128] ; 0x80 cmd_state = CMD_STATE_PAR; 98fc: 2301 movs r3, #1 98fe: 9308 str r3, [sp, #32] continue; 9900: e0a2 b.n 9a48 else if(cmd_state == CMD_STATE_PAR) { /*Other start char in parameter escaped cmd. char */ 9902: 9b08 ldr r3, [sp, #32] 9904: 2b01 cmp r3, #1 9906: d101 bne.n 990c 9908: f000 fe2d bl a566 else if(cmd_state == CMD_STATE_IN) { /*Command end */ 990c: 2b02 cmp r3, #2 990e: d101 bne.n 9914 9910: f000 fd70 bl a3f4 lv_color_t color = dsc->color; 9914: 464b mov r3, r9 9916: 881e ldrh r6, [r3, #0] 9918: e0cf b.n 9aba if(letter == ' ') { 991a: 2c20 cmp r4, #32 991c: d000 beq.n 9920 991e: e093 b.n 9a48 if(i - par_start == LABEL_RECOLOR_PAR_LENGTH + 1) { 9920: 9b54 ldr r3, [sp, #336] ; 0x150 9922: 9a20 ldr r2, [sp, #128] ; 0x80 9924: 1a9b subs r3, r3, r2 9926: 2b07 cmp r3, #7 9928: d005 beq.n 9936 recolor.full = dsc->color.full; 992a: 464b mov r3, r9 992c: 881b ldrh r3, [r3, #0] 992e: 9319 str r3, [sp, #100] ; 0x64 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 9930: 2302 movs r3, #2 9932: 9308 str r3, [sp, #32] 9934: e088 b.n 9a48 _lv_memcpy_small(buf, &bidi_txt[par_start], LABEL_RECOLOR_PAR_LENGTH); 9936: 9b0d ldr r3, [sp, #52] ; 0x34 9938: 4694 mov ip, r2 993a: 4463 add r3, ip 993c: 0018 movs r0, r3 993e: 2300 movs r3, #0 *d8 = *s8; 9940: a93c add r1, sp, #240 ; 0xf0 9942: 5cc2 ldrb r2, [r0, r3] 9944: 545a strb r2, [r3, r1] 9946: 3301 adds r3, #1 while(len) { 9948: 2b06 cmp r3, #6 994a: d1fa bne.n 9942 r = (hex_char_to_num(buf[0]) << 4) + hex_char_to_num(buf[1]); 994c: ad3c add r5, sp, #240 ; 0xf0 994e: 7828 ldrb r0, [r5, #0] 9950: 4b24 ldr r3, [pc, #144] ; (99e4 ) 9952: 4698 mov r8, r3 9954: 4798 blx r3 9956: 0004 movs r4, r0 9958: 7868 ldrb r0, [r5, #1] 995a: 47c0 blx r8 995c: 0124 lsls r4, r4, #4 995e: 1824 adds r4, r4, r0 g = (hex_char_to_num(buf[2]) << 4) + hex_char_to_num(buf[3]); 9960: 78a8 ldrb r0, [r5, #2] 9962: 47c0 blx r8 9964: 0006 movs r6, r0 9966: 78e8 ldrb r0, [r5, #3] 9968: 47c0 blx r8 996a: 0136 lsls r6, r6, #4 996c: 1836 adds r6, r6, r0 b = (hex_char_to_num(buf[4]) << 4) + hex_char_to_num(buf[5]); 996e: 7928 ldrb r0, [r5, #4] 9970: 47c0 blx r8 9972: 4682 mov sl, r0 9974: 7968 ldrb r0, [r5, #5] 9976: 47c0 blx r8 9978: 4653 mov r3, sl 997a: 011b lsls r3, r3, #4 997c: 1818 adds r0, r3, 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); 997e: b2c2 uxtb r2, r0 9980: 08d2 lsrs r2, r2, #3 9982: 231f movs r3, #31 9984: 9934 ldr r1, [sp, #208] ; 0xd0 9986: 4399 bics r1, r3 9988: 000b movs r3, r1 998a: 4313 orrs r3, r2 998c: b2f6 uxtb r6, r6 998e: 08b6 lsrs r6, r6, #2 9990: 0176 lsls r6, r6, #5 9992: 4a15 ldr r2, [pc, #84] ; (99e8 ) 9994: 4013 ands r3, r2 9996: 4333 orrs r3, r6 9998: b2e4 uxtb r4, r4 999a: 08e4 lsrs r4, r4, #3 999c: 02e4 lsls r4, r4, #11 999e: 055b lsls r3, r3, #21 99a0: 0d5b lsrs r3, r3, #21 99a2: 4323 orrs r3, r4 99a4: 466a mov r2, sp 99a6: 21d0 movs r1, #208 ; 0xd0 99a8: 1852 adds r2, r2, r1 99aa: 8013 strh r3, [r2, #0] 99ac: b29b uxth r3, r3 99ae: 9319 str r3, [sp, #100] ; 0x64 cmd_state = CMD_STATE_IN; /*After the parameter the text is in the command*/ 99b0: 2302 movs r3, #2 99b2: 9308 str r3, [sp, #32] 99b4: e048 b.n 9a48 if(cmd_state == CMD_STATE_IN) color = recolor; 99b6: 9e19 ldr r6, [sp, #100] ; 0x64 99b8: e07f b.n 9aba 99ba: 46c0 nop ; (mov r8, r8) 99bc: 0001140b .word 0x0001140b 99c0: 00007c18 .word 0x00007c18 99c4: 00013f3d .word 0x00013f3d 99c8: 00013c21 .word 0x00013c21 99cc: fffffc00 .word 0xfffffc00 99d0: 0000bfcd .word 0x0000bfcd 99d4: 00026168 .word 0x00026168 99d8: 00013e99 .word 0x00013e99 99dc: 0000a589 .word 0x0000a589 99e0: 0001c1b9 .word 0x0001c1b9 99e4: 000095a5 .word 0x000095a5 99e8: fffff81f .word 0xfffff81f sel_coords.x1 = pos.x; 99ec: a83c add r0, sp, #240 ; 0xf0 99ee: 9a09 ldr r2, [sp, #36] ; 0x24 99f0: 8002 strh r2, [r0, #0] sel_coords.y1 = pos.y; 99f2: 9913 ldr r1, [sp, #76] ; 0x4c 99f4: 8041 strh r1, [r0, #2] sel_coords.x2 = pos.x + letter_w + dsc->letter_space - 1; 99f6: 464b mov r3, r9 99f8: 899b ldrh r3, [r3, #12] 99fa: 3b01 subs r3, #1 99fc: 4694 mov ip, r2 99fe: 4463 add r3, ip 9a00: 9a0a ldr r2, [sp, #40] ; 0x28 9a02: 4694 mov ip, r2 9a04: 4463 add r3, ip 9a06: 8083 strh r3, [r0, #4] sel_coords.y2 = pos.y + line_height - 1; 9a08: 9b1f ldr r3, [sp, #124] ; 0x7c 9a0a: 3b01 subs r3, #1 9a0c: 468c mov ip, r1 9a0e: 4463 add r3, ip 9a10: 80c3 strh r3, [r0, #6] lv_draw_rect(&sel_coords, mask, &draw_dsc_sel); 9a12: aa3f add r2, sp, #252 ; 0xfc 9a14: 990f ldr r1, [sp, #60] ; 0x3c 9a16: 4b7d ldr r3, [pc, #500] ; (9c0c ) 9a18: 4798 blx r3 9a1a: e05f b.n 9adc LV_LOG_WARN("lv_draw_letter: font is NULL"); 9a1c: 4b7c ldr r3, [pc, #496] ; (9c10 ) 9a1e: 9300 str r3, [sp, #0] 9a20: 4b7c ldr r3, [pc, #496] ; (9c14 ) 9a22: 2298 movs r2, #152 ; 0x98 9a24: 32ff adds r2, #255 ; 0xff 9a26: 497c ldr r1, [pc, #496] ; (9c18 ) 9a28: 2002 movs r0, #2 9a2a: 4c7c ldr r4, [pc, #496] ; (9c1c ) 9a2c: 47a0 blx r4 if(letter_w > 0) { 9a2e: 9b07 ldr r3, [sp, #28] 9a30: 2b00 cmp r3, #0 9a32: dd09 ble.n 9a48 pos.x += letter_w + dsc->letter_space; 9a34: 464b mov r3, r9 9a36: 899b ldrh r3, [r3, #12] 9a38: 9a09 ldr r2, [sp, #36] ; 0x24 9a3a: 4694 mov ip, r2 9a3c: 4463 add r3, ip 9a3e: 9a0a ldr r2, [sp, #40] ; 0x28 9a40: 4694 mov ip, r2 9a42: 4463 add r3, ip 9a44: b21b sxth r3, r3 9a46: 9309 str r3, [sp, #36] ; 0x24 while(i < line_end - line_start) { 9a48: 9954 ldr r1, [sp, #336] ; 0x150 9a4a: 9b0b ldr r3, [sp, #44] ; 0x2c 9a4c: 9a06 ldr r2, [sp, #24] 9a4e: 1a9b subs r3, r3, r2 9a50: 428b cmp r3, r1 9a52: d801 bhi.n 9a58 9a54: f000 fcd2 bl a3fc if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9a58: 4b71 ldr r3, [pc, #452] ; (9c20 ) 9a5a: 429f cmp r7, r3 9a5c: d100 bne.n 9a60 9a5e: e743 b.n 98e8 uint16_t logical_char_pos = 0; 9a60: 2500 movs r5, #0 if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9a62: 9a0c ldr r2, [sp, #48] ; 0x30 9a64: 429a cmp r2, r3 9a66: d007 beq.n 9a78 logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); 9a68: 9b06 ldr r3, [sp, #24] 9a6a: 469c mov ip, r3 9a6c: 4461 add r1, ip 9a6e: 980e ldr r0, [sp, #56] ; 0x38 9a70: 465b mov r3, fp 9a72: 681b ldr r3, [r3, #0] 9a74: 4798 blx r3 9a76: b285 uxth r5, r0 uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 9a78: 4e6a ldr r6, [pc, #424] ; (9c24 ) 9a7a: a954 add r1, sp, #336 ; 0x150 9a7c: 9b0d ldr r3, [sp, #52] ; 0x34 9a7e: 4698 mov r8, r3 9a80: 0018 movs r0, r3 9a82: 6833 ldr r3, [r6, #0] 9a84: 4798 blx r3 9a86: 0004 movs r4, r0 uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 9a88: 4643 mov r3, r8 9a8a: 9a54 ldr r2, [sp, #336] ; 0x150 9a8c: 4694 mov ip, r2 9a8e: 4463 add r3, ip 9a90: 0018 movs r0, r3 9a92: 6833 ldr r3, [r6, #0] 9a94: 2100 movs r1, #0 9a96: 4798 blx r3 if((dsc->flag & LV_TXT_FLAG_RECOLOR) != 0) { 9a98: 464b mov r3, r9 9a9a: 7ddb ldrb r3, [r3, #23] 9a9c: 07db lsls r3, r3, #31 9a9e: d506 bpl.n 9aae if(letter == (uint32_t)LV_TXT_COLOR_CMD[0]) { 9aa0: 2c23 cmp r4, #35 ; 0x23 9aa2: d100 bne.n 9aa6 9aa4: e722 b.n 98ec if(cmd_state == CMD_STATE_PAR) { 9aa6: 9b08 ldr r3, [sp, #32] 9aa8: 2b01 cmp r3, #1 9aaa: d100 bne.n 9aae 9aac: e735 b.n 991a lv_color_t color = dsc->color; 9aae: 464b mov r3, r9 9ab0: 881e ldrh r6, [r3, #0] if(cmd_state == CMD_STATE_IN) color = recolor; 9ab2: 9b08 ldr r3, [sp, #32] 9ab4: 2b02 cmp r3, #2 9ab6: d100 bne.n 9aba 9ab8: e77d b.n 99b6 letter_w = lv_font_get_glyph_width(font, letter, letter_next); 9aba: 0002 movs r2, r0 9abc: 0021 movs r1, r4 9abe: 9805 ldr r0, [sp, #20] 9ac0: 4b59 ldr r3, [pc, #356] ; (9c28 ) 9ac2: 4798 blx r3 9ac4: 900a str r0, [sp, #40] ; 0x28 9ac6: 9007 str r0, [sp, #28] if(sel_start != 0xFFFF && sel_end != 0xFFFF) { 9ac8: 4b55 ldr r3, [pc, #340] ; (9c20 ) 9aca: 429f cmp r7, r3 9acc: d006 beq.n 9adc 9ace: 990c ldr r1, [sp, #48] ; 0x30 9ad0: 4299 cmp r1, r3 9ad2: d003 beq.n 9adc if(logical_char_pos >= sel_start && logical_char_pos < sel_end) { 9ad4: 42af cmp r7, r5 9ad6: d801 bhi.n 9adc 9ad8: 42a9 cmp r1, r5 9ada: d887 bhi.n 99ec if(opa < LV_OPA_MIN) return; 9adc: 9b10 ldr r3, [sp, #64] ; 0x40 9ade: 2b04 cmp r3, #4 9ae0: d9a5 bls.n 9a2e if(font_p == NULL) { 9ae2: 9b05 ldr r3, [sp, #20] 9ae4: 2b00 cmp r3, #0 9ae6: d099 beq.n 9a1c lv_draw_letter(&pos, mask, font, letter, color, opa, dsc->blend_mode); 9ae8: 464b mov r3, r9 9aea: 7e5b ldrb r3, [r3, #25] 9aec: 9315 str r3, [sp, #84] ; 0x54 bool g_ret = lv_font_get_glyph_dsc(font_p, &g, letter, '\0'); 9aee: 2300 movs r3, #0 9af0: 0022 movs r2, r4 9af2: a93c add r1, sp, #240 ; 0xf0 9af4: 9805 ldr r0, [sp, #20] 9af6: 4d4d ldr r5, [pc, #308] ; (9c2c ) 9af8: 47a8 blx r5 if(g_ret == false) { 9afa: 2800 cmp r0, #0 9afc: d10b bne.n 9b16 if(letter >= 0x20) { 9afe: 2c1f cmp r4, #31 9b00: d995 bls.n 9a2e LV_LOG_WARN("lv_draw_letter: glyph dsc. not found"); 9b02: 4b4b ldr r3, [pc, #300] ; (9c30 ) 9b04: 9300 str r3, [sp, #0] 9b06: 4b43 ldr r3, [pc, #268] ; (9c14 ) 9b08: 22a2 movs r2, #162 ; 0xa2 9b0a: 32ff adds r2, #255 ; 0xff 9b0c: 4942 ldr r1, [pc, #264] ; (9c18 ) 9b0e: 3002 adds r0, #2 9b10: 4c42 ldr r4, [pc, #264] ; (9c1c ) 9b12: 47a0 blx r4 9b14: e78b b.n 9a2e if((g.box_h == 0) && (g.box_w == 0)) return; 9b16: ab3c add r3, sp, #240 ; 0xf0 9b18: 889a ldrh r2, [r3, #4] 9b1a: 2a00 cmp r2, #0 9b1c: d102 bne.n 9b24 9b1e: 885b ldrh r3, [r3, #2] 9b20: 2b00 cmp r3, #0 9b22: d084 beq.n 9a2e int32_t pos_x = pos_p->x + g.ofs_x; 9b24: ab3c add r3, sp, #240 ; 0xf0 9b26: 2106 movs r1, #6 9b28: 5e5d ldrsh r5, [r3, r1] 9b2a: 9909 ldr r1, [sp, #36] ; 0x24 9b2c: 468c mov ip, r1 9b2e: 0029 movs r1, r5 9b30: 4461 add r1, ip if(pos_x + g.box_w < clip_area->x1 || 9b32: 885b ldrh r3, [r3, #2] 9b34: 9112 str r1, [sp, #72] ; 0x48 9b36: 468c mov ip, r1 9b38: 4463 add r3, ip 9b3a: 980f ldr r0, [sp, #60] ; 0x3c 9b3c: 2500 movs r5, #0 9b3e: 5f41 ldrsh r1, [r0, r5] 9b40: 428b cmp r3, r1 9b42: da00 bge.n 9b46 9b44: e773 b.n 9a2e pos_x > clip_area->x2 || 9b46: 0001 movs r1, r0 9b48: 2304 movs r3, #4 9b4a: 5ecb ldrsh r3, [r1, r3] if(pos_x + g.box_w < clip_area->x1 || 9b4c: 4661 mov r1, ip 9b4e: 4299 cmp r1, r3 9b50: dd00 ble.n 9b54 9b52: e76c b.n 9a2e int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y; 9b54: 9905 ldr r1, [sp, #20] 9b56: 2508 movs r5, #8 9b58: 5f4b ldrsh r3, [r1, r5] 9b5a: 250a movs r5, #10 9b5c: 5f49 ldrsh r1, [r1, r5] 9b5e: 1a5b subs r3, r3, r1 9b60: 9913 ldr r1, [sp, #76] ; 0x4c 9b62: 468c mov ip, r1 9b64: 4463 add r3, ip 9b66: 1a99 subs r1, r3, r2 9b68: ab3c add r3, sp, #240 ; 0xf0 9b6a: 2508 movs r5, #8 9b6c: 5f5b ldrsh r3, [r3, r5] 9b6e: 1acb subs r3, r1, r3 9b70: 4698 mov r8, r3 pos_y + g.box_h < clip_area->y1 || 9b72: 4442 add r2, r8 9b74: 0001 movs r1, r0 9b76: 2002 movs r0, #2 9b78: 5e0b ldrsh r3, [r1, r0] pos_x > clip_area->x2 || 9b7a: 429a cmp r2, r3 9b7c: da00 bge.n 9b80 9b7e: e756 b.n 9a2e pos_y > clip_area->y2) { 9b80: 2206 movs r2, #6 9b82: 5e8b ldrsh r3, [r1, r2] pos_y + g.box_h < clip_area->y1 || 9b84: 4598 cmp r8, r3 9b86: dd00 ble.n 9b8a 9b88: e751 b.n 9a2e const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter); 9b8a: 0021 movs r1, r4 9b8c: 9805 ldr r0, [sp, #20] 9b8e: 4b29 ldr r3, [pc, #164] ; (9c34 ) 9b90: 4798 blx r3 9b92: 901b str r0, [sp, #108] ; 0x6c if(map_p == NULL) { 9b94: 2800 cmp r0, #0 9b96: d023 beq.n 9be0 if(font_p->subpx) { 9b98: 9b05 ldr r3, [sp, #20] 9b9a: 7b1b ldrb r3, [r3, #12] 9b9c: 079b lsls r3, r3, #30 9b9e: d100 bne.n 9ba2 9ba0: e270 b.n a084 draw_letter_subpx(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); 9ba2: 466b mov r3, sp 9ba4: 2248 movs r2, #72 ; 0x48 9ba6: 189b adds r3, r3, r2 9ba8: 881b ldrh r3, [r3, #0] 9baa: b21b sxth r3, r3 9bac: 9314 str r3, [sp, #80] ; 0x50 9bae: 4643 mov r3, r8 9bb0: b21b sxth r3, r3 9bb2: 9316 str r3, [sp, #88] ; 0x58 9bb4: 466b mov r3, sp 9bb6: 3244 adds r2, #68 ; 0x44 9bb8: 189b adds r3, r3, r2 9bba: 801e strh r6, [r3, #0] uint32_t bpp = g->bpp; 9bbc: ab3c add r3, sp, #240 ; 0xf0 9bbe: 7a9b ldrb r3, [r3, #10] 9bc0: 001e movs r6, r3 if(bpp == 3) bpp = 4; 9bc2: 2b03 cmp r3, #3 9bc4: d100 bne.n 9bc8 9bc6: e10e b.n 9de6 switch(bpp) { 9bc8: 2b02 cmp r3, #2 9bca: d03b beq.n 9c44 9bcc: d812 bhi.n 9bf4 9bce: 2b01 cmp r3, #1 9bd0: d000 beq.n 9bd4 9bd2: e10e b.n 9df2 uint32_t bpp = g->bpp; 9bd4: 2601 movs r6, #1 bitmask_init = 0x80; 9bd6: 2380 movs r3, #128 ; 0x80 9bd8: 9322 str r3, [sp, #136] ; 0x88 bpp_opa_table = _lv_bpp1_opa_table; 9bda: 4b17 ldr r3, [pc, #92] ; (9c38 ) 9bdc: 9325 str r3, [sp, #148] ; 0x94 9bde: e035 b.n 9c4c LV_LOG_WARN("lv_draw_letter: character's bitmap not found"); 9be0: 4b16 ldr r3, [pc, #88] ; (9c3c ) 9be2: 9300 str r3, [sp, #0] 9be4: 4b0b ldr r3, [pc, #44] ; (9c14 ) 9be6: 22b8 movs r2, #184 ; 0xb8 9be8: 32ff adds r2, #255 ; 0xff 9bea: 490b ldr r1, [pc, #44] ; (9c18 ) 9bec: 2002 movs r0, #2 9bee: 4c0b ldr r4, [pc, #44] ; (9c1c ) 9bf0: 47a0 blx r4 9bf2: e71c b.n 9a2e switch(bpp) { 9bf4: 2b04 cmp r3, #4 9bf6: d100 bne.n 9bfa 9bf8: e0f6 b.n 9de8 9bfa: 2b08 cmp r3, #8 9bfc: d000 beq.n 9c00 9bfe: e0f8 b.n 9df2 uint32_t bpp = g->bpp; 9c00: 2608 movs r6, #8 bitmask_init = 0xFF; 9c02: 23ff movs r3, #255 ; 0xff 9c04: 9322 str r3, [sp, #136] ; 0x88 bpp_opa_table = _lv_bpp8_opa_table; 9c06: 4b0e ldr r3, [pc, #56] ; (9c40 ) 9c08: 9325 str r3, [sp, #148] ; 0x94 9c0a: e01f b.n 9c4c 9c0c: 0000c071 .word 0x0000c071 9c10: 000262f4 .word 0x000262f4 9c14: 0002616c .word 0x0002616c 9c18: 000262bc .word 0x000262bc 9c1c: 00012159 .word 0x00012159 9c20: 0000ffff .word 0x0000ffff 9c24: 2000005c .word 0x2000005c 9c28: 0000fe91 .word 0x0000fe91 9c2c: 0000fe89 .word 0x0000fe89 9c30: 00026314 .word 0x00026314 9c34: 0000fe81 .word 0x0000fe81 9c38: 000261a4 .word 0x000261a4 9c3c: 0002633c .word 0x0002633c 9c40: 000261bc .word 0x000261bc bitmask_init = 0xC0; 9c44: 23c0 movs r3, #192 ; 0xc0 9c46: 9322 str r3, [sp, #136] ; 0x88 bpp_opa_table = _lv_bpp2_opa_table; 9c48: 4bd9 ldr r3, [pc, #868] ; (9fb0 ) 9c4a: 9325 str r3, [sp, #148] ; 0x94 int32_t box_w = g->box_w; 9c4c: ab3c add r3, sp, #240 ; 0xf0 9c4e: 885a ldrh r2, [r3, #2] 9c50: 921d str r2, [sp, #116] ; 0x74 int32_t box_h = g->box_h; 9c52: 889b ldrh r3, [r3, #4] 9c54: 931c str r3, [sp, #112] ; 0x70 int32_t width_bit = box_w * bpp; /*Letter width in bits*/ 9c56: 4372 muls r2, r6 9c58: 4692 mov sl, r2 int32_t col_start = pos_x >= clip_area->x1 ? 0 : (clip_area->x1 - pos_x) * 3; 9c5a: 9b0f ldr r3, [sp, #60] ; 0x3c 9c5c: 2200 movs r2, #0 9c5e: 5e9b ldrsh r3, [r3, r2] 9c60: 2200 movs r2, #0 9c62: 922d str r2, [sp, #180] ; 0xb4 9c64: 9914 ldr r1, [sp, #80] ; 0x50 9c66: 4299 cmp r1, r3 9c68: da03 bge.n 9c72 9c6a: 1a5b subs r3, r3, r1 9c6c: 005a lsls r2, r3, #1 9c6e: 18d3 adds r3, r2, r3 9c70: 932d str r3, [sp, #180] ; 0xb4 int32_t col_end = pos_x + box_w / 3 <= clip_area->x2 ? box_w : (clip_area->x2 - pos_x + 1) * 3; 9c72: 9b0f ldr r3, [sp, #60] ; 0x3c 9c74: 2404 movs r4, #4 9c76: 5f1c ldrsh r4, [r3, r4] 9c78: 2103 movs r1, #3 9c7a: 9d1d ldr r5, [sp, #116] ; 0x74 9c7c: 0028 movs r0, r5 9c7e: 4bcd ldr r3, [pc, #820] ; (9fb4 ) 9c80: 4798 blx r3 9c82: 9a14 ldr r2, [sp, #80] ; 0x50 9c84: 4694 mov ip, r2 9c86: 4460 add r0, ip 9c88: 951a str r5, [sp, #104] ; 0x68 9c8a: 42a0 cmp r0, r4 9c8c: dd04 ble.n 9c98 9c8e: 1aa4 subs r4, r4, r2 9c90: 3401 adds r4, #1 9c92: 0063 lsls r3, r4, #1 9c94: 191b adds r3, r3, r4 9c96: 931a str r3, [sp, #104] ; 0x68 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; 9c98: 9b0f ldr r3, [sp, #60] ; 0x3c 9c9a: 2202 movs r2, #2 9c9c: 5e9b ldrsh r3, [r3, r2] 9c9e: 2200 movs r2, #0 9ca0: 922b str r2, [sp, #172] ; 0xac 9ca2: 9916 ldr r1, [sp, #88] ; 0x58 9ca4: 4299 cmp r1, r3 9ca6: da01 bge.n 9cac 9ca8: 1a5b subs r3, r3, r1 9caa: 932b str r3, [sp, #172] ; 0xac int32_t row_end = pos_y + box_h <= clip_area->y2 ? box_h : clip_area->y2 - pos_y + 1; 9cac: 9b0f ldr r3, [sp, #60] ; 0x3c 9cae: 2206 movs r2, #6 9cb0: 5e9b ldrsh r3, [r3, r2] 9cb2: 991c ldr r1, [sp, #112] ; 0x70 9cb4: 000a movs r2, r1 9cb6: 9c16 ldr r4, [sp, #88] ; 0x58 9cb8: 46a4 mov ip, r4 9cba: 4462 add r2, ip 9cbc: 912e str r1, [sp, #184] ; 0xb8 9cbe: 429a cmp r2, r3 9cc0: dd02 ble.n 9cc8 9cc2: 1b1b subs r3, r3, r4 9cc4: 3301 adds r3, #1 9cc6: 932e str r3, [sp, #184] ; 0xb8 9cc8: 466b mov r3, sp 9cca: 228c movs r2, #140 ; 0x8c 9ccc: 189b adds r3, r3, r2 9cce: 881a ldrh r2, [r3, #0] 9cd0: 06d3 lsls r3, r2, #27 9cd2: 0edb lsrs r3, r3, #27 9cd4: 9328 str r3, [sp, #160] ; 0xa0 9cd6: 0553 lsls r3, r2, #21 9cd8: 0e9b lsrs r3, r3, #26 9cda: 932a str r3, [sp, #168] ; 0xa8 9cdc: 0413 lsls r3, r2, #16 9cde: 0edb lsrs r3, r3, #27 9ce0: 9329 str r3, [sp, #164] ; 0xa4 int32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); 9ce2: 4653 mov r3, sl 9ce4: 9a2b ldr r2, [sp, #172] ; 0xac 9ce6: 4353 muls r3, r2 9ce8: 9a2d ldr r2, [sp, #180] ; 0xb4 9cea: 4372 muls r2, r6 9cec: 189b adds r3, r3, r2 map_p += bit_ofs >> 3; 9cee: 10dc asrs r4, r3, #3 9cf0: 9a1b ldr r2, [sp, #108] ; 0x6c 9cf2: 4694 mov ip, r2 9cf4: 4464 add r4, ip col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ 9cf6: 2207 movs r2, #7 9cf8: 401a ands r2, r3 9cfa: 4692 mov sl, r2 int32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : g->box_w * g->box_h; 9cfc: 9b1c ldr r3, [sp, #112] ; 0x70 9cfe: 9a1d ldr r2, [sp, #116] ; 0x74 9d00: 4353 muls r3, r2 9d02: 001a movs r2, r3 9d04: 932f str r3, [sp, #188] ; 0xbc lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); 9d06: 23f0 movs r3, #240 ; 0xf0 9d08: 005b lsls r3, r3, #1 9d0a: 429a cmp r2, r3 9d0c: dd00 ble.n 9d10 9d0e: 932f str r3, [sp, #188] ; 0xbc 9d10: 9d2f ldr r5, [sp, #188] ; 0xbc 9d12: 0028 movs r0, r5 9d14: 4ba8 ldr r3, [pc, #672] ; (9fb8 ) 9d16: 4798 blx r3 9d18: 9026 str r0, [sp, #152] ; 0x98 lv_color_t * color_buf = _lv_mem_buf_get(mask_buf_size * sizeof(lv_color_t)); 9d1a: 0068 lsls r0, r5, #1 9d1c: 4ba6 ldr r3, [pc, #664] ; (9fb8 ) 9d1e: 4798 blx r3 9d20: 9027 str r0, [sp, #156] ; 0x9c lv_disp_t * disp = _lv_refr_get_disp_refreshing(); 9d22: 4ba6 ldr r3, [pc, #664] ; (9fbc ) 9d24: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); 9d26: 4ba6 ldr r3, [pc, #664] ; (9fc0 ) 9d28: 4798 blx r3 9d2a: 0005 movs r5, r0 9d2c: 2110 movs r1, #16 9d2e: 5e42 ldrsh r2, [r0, r1] 9d30: 8a83 ldrh r3, [r0, #20] 9d32: 3301 adds r3, #1 9d34: 921c str r2, [sp, #112] ; 0x70 9d36: 1a9b subs r3, r3, r2 int32_t vdb_width = lv_area_get_width(&vdb->area); 9d38: b21b sxth r3, r3 9d3a: 931b str r3, [sp, #108] ; 0x6c lv_color_t * vdb_buf_tmp = vdb->buf_act; 9d3c: 6881 ldr r1, [r0, #8] 9d3e: 9123 str r1, [sp, #140] ; 0x8c vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 9d40: 2103 movs r1, #3 9d42: 982d ldr r0, [sp, #180] ; 0xb4 9d44: 4b9b ldr r3, [pc, #620] ; (9fb4 ) 9d46: 4798 blx r3 vdb_buf_tmp += ((pos_y - vdb->area.y1) * vdb_width) + pos_x - vdb->area.x1; 9d48: 002b movs r3, r5 9d4a: 2512 movs r5, #18 9d4c: 5f5b ldrsh r3, [r3, r5] 9d4e: 9d16 ldr r5, [sp, #88] ; 0x58 9d50: 1aeb subs r3, r5, r3 9d52: 991b ldr r1, [sp, #108] ; 0x6c 9d54: 434b muls r3, r1 9d56: 9d14 ldr r5, [sp, #80] ; 0x50 9d58: 46ac mov ip, r5 9d5a: 4463 add r3, ip 9d5c: 9a1c ldr r2, [sp, #112] ; 0x70 9d5e: 1a9b subs r3, r3, r2 vdb_buf_tmp += (row_start * vdb_width) + col_start / 3; 9d60: 9a2b ldr r2, [sp, #172] ; 0xac 9d62: 434a muls r2, r1 9d64: 1812 adds r2, r2, r0 9d66: 189b adds r3, r3, r2 9d68: 005b lsls r3, r3, #1 9d6a: 9923 ldr r1, [sp, #140] ; 0x8c 9d6c: 468c mov ip, r1 9d6e: 449c add ip, r3 9d70: 4661 mov r1, ip 9d72: 911c str r1, [sp, #112] ; 0x70 map_area.x1 = col_start / 3 + pos_x; 9d74: 466b mov r3, sp 9d76: 2248 movs r2, #72 ; 0x48 9d78: 189b adds r3, r3, r2 9d7a: 881d ldrh r5, [r3, #0] 9d7c: 1828 adds r0, r5, r0 9d7e: a934 add r1, sp, #208 ; 0xd0 9d80: 8308 strh r0, [r1, #24] map_area.x2 = col_end / 3 + pos_x - 1; 9d82: 2103 movs r1, #3 9d84: 981a ldr r0, [sp, #104] ; 0x68 9d86: 4a8b ldr r2, [pc, #556] ; (9fb4 ) 9d88: 4790 blx r2 9d8a: 3d01 subs r5, #1 9d8c: 1945 adds r5, r0, r5 9d8e: aa34 add r2, sp, #208 ; 0xd0 9d90: 8395 strh r5, [r2, #28] map_area.y1 = row_start + pos_y; 9d92: 9d2b ldr r5, [sp, #172] ; 0xac 9d94: 002b movs r3, r5 9d96: 4443 add r3, r8 9d98: b21b sxth r3, r3 9d9a: 8353 strh r3, [r2, #26] map_area.y2 = map_area.y1; 9d9c: 83d3 strh r3, [r2, #30] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); 9d9e: 4b89 ldr r3, [pc, #548] ; (9fc4 ) 9da0: 4798 blx r3 9da2: 9030 str r0, [sp, #192] ; 0xc0 for(row = row_start ; row < row_end; row++) { 9da4: 002b movs r3, r5 9da6: 9d2e ldr r5, [sp, #184] ; 0xb8 9da8: 42ab cmp r3, r5 9daa: db00 blt.n 9dae 9dac: e14f b.n a04e if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 9dae: 991a ldr r1, [sp, #104] ; 0x68 9db0: 982d ldr r0, [sp, #180] ; 0xb4 9db2: 1a0a subs r2, r1, r0 9db4: 9231 str r2, [sp, #196] ; 0xc4 col_bit += ((box_w - col_end) + col_start) * bpp; 9db6: 9d1d ldr r5, [sp, #116] ; 0x74 9db8: 1a6b subs r3, r5, r1 9dba: 4684 mov ip, r0 9dbc: 4463 add r3, ip 9dbe: 0019 movs r1, r3 9dc0: 4371 muls r1, r6 9dc2: 9132 str r1, [sp, #200] ; 0xc8 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 9dc4: 2103 movs r1, #3 9dc6: 4249 negs r1, r1 9dc8: 0010 movs r0, r2 9dca: 4b7a ldr r3, [pc, #488] ; (9fb4 ) 9dcc: 4798 blx r3 9dce: 9b1b ldr r3, [sp, #108] ; 0x6c 9dd0: 469c mov ip, r3 9dd2: 4460 add r0, ip 9dd4: 0043 lsls r3, r0, #1 9dd6: 9333 str r3, [sp, #204] ; 0xcc 9dd8: 2300 movs r3, #0 9dda: 932c str r3, [sp, #176] ; 0xb0 color_buf[mask_p] = res_color; 9ddc: 9736 str r7, [sp, #216] ; 0xd8 9dde: 464b mov r3, r9 9de0: 9337 str r3, [sp, #220] ; 0xdc 9de2: 46a1 mov r9, r4 9de4: e0cb b.n 9f7e if(bpp == 3) bpp = 4; 9de6: 2604 movs r6, #4 bitmask_init = 0xF0; 9de8: 23f0 movs r3, #240 ; 0xf0 9dea: 9322 str r3, [sp, #136] ; 0x88 bpp_opa_table = _lv_bpp4_opa_table; 9dec: 4b76 ldr r3, [pc, #472] ; (9fc8 ) 9dee: 9325 str r3, [sp, #148] ; 0x94 9df0: e72c b.n 9c4c LV_LOG_WARN("lv_draw_letter: invalid bpp not found"); 9df2: 4b76 ldr r3, [pc, #472] ; (9fcc ) 9df4: 9300 str r3, [sp, #0] 9df6: 4b76 ldr r3, [pc, #472] ; (9fd0 ) 9df8: 4a76 ldr r2, [pc, #472] ; (9fd4 ) 9dfa: 4977 ldr r1, [pc, #476] ; (9fd8 ) 9dfc: 2002 movs r0, #2 9dfe: 4c77 ldr r4, [pc, #476] ; (9fdc ) 9e00: 47a0 blx r4 9e02: e614 b.n 9a2e px_opa = bpp == 8 ? letter_px : bpp_opa_table[letter_px]; 9e04: 2e08 cmp r6, #8 9e06: d00b beq.n 9e20 9e08: 4663 mov r3, ip 9e0a: 4018 ands r0, r3 9e0c: 9b25 ldr r3, [sp, #148] ; 0x94 9e0e: 5c1b ldrb r3, [r3, r0] 9e10: e006 b.n 9e20 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 9e12: 4663 mov r3, ip 9e14: 4003 ands r3, r0 9e16: 991e ldr r1, [sp, #120] ; 0x78 9e18: 434b muls r3, r1 9e1a: 0a1b lsrs r3, r3, #8 9e1c: e000 b.n 9e20 px_opa = 0; 9e1e: 2300 movs r3, #0 font_rgb[subpx_cnt] = px_opa; 9e20: 9916 ldr r1, [sp, #88] ; 0x58 9e22: 548b strb r3, [r1, r2] subpx_cnt ++; 9e24: 3201 adds r2, #1 if(subpx_cnt == 3) { 9e26: 2a03 cmp r2, #3 9e28: d021 beq.n 9e6e if(col_bit < 8 - bpp) { 9e2a: 9814 ldr r0, [sp, #80] ; 0x50 9e2c: 991b ldr r1, [sp, #108] ; 0x6c 9e2e: 4288 cmp r0, r1 9e30: d27b bcs.n 9f2a col_bit += bpp; 9e32: 1833 adds r3, r6, r0 bitmask = bitmask >> bpp; 9e34: 40f5 lsrs r5, r6 for(col = col_start; col < col_end; col++) { 9e36: 3401 adds r4, #1 9e38: 991a ldr r1, [sp, #104] ; 0x68 9e3a: 42a1 cmp r1, r4 9e3c: d07b beq.n 9f36 letter_px = (*map_p & bitmask) >> (8 - col_bit - bpp); 9e3e: 9314 str r3, [sp, #80] ; 0x50 9e40: 9912 ldr r1, [sp, #72] ; 0x48 9e42: 7808 ldrb r0, [r1, #0] 9e44: 4028 ands r0, r5 9e46: 2108 movs r1, #8 9e48: 1acb subs r3, r1, r3 9e4a: 1b9b subs r3, r3, r6 9e4c: 40d8 lsrs r0, r3 9e4e: b2c3 uxtb r3, r0 if(letter_px != 0) { 9e50: 2b00 cmp r3, #0 9e52: d0e4 beq.n 9e1e if(opa == LV_OPA_COVER) { 9e54: 991e ldr r1, [sp, #120] ; 0x78 9e56: 29ff cmp r1, #255 ; 0xff 9e58: d0d4 beq.n 9e04 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 9e5a: 2e08 cmp r6, #8 9e5c: d0d9 beq.n 9e12 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 9e5e: 4663 mov r3, ip 9e60: 4018 ands r0, r3 9e62: 9b25 ldr r3, [sp, #148] ; 0x94 9e64: 5c1b ldrb r3, [r3, r0] 9e66: 991e ldr r1, [sp, #120] ; 0x78 9e68: 434b muls r3, r1 px_opa = bpp == 8 ? (uint32_t)((uint32_t)letter_px * opa) >> 8 9e6a: 0a1b lsrs r3, r3, #8 9e6c: e7d8 b.n 9e20 res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 9e6e: 000f movs r7, r1 9e70: 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}; 9e72: 991c ldr r1, [sp, #112] ; 0x70 9e74: 784b ldrb r3, [r1, #1] res_color.ch.red = (uint32_t)((uint16_t)txt_rgb[0] * font_rgb[0] + (bg_rgb[0] * (255 - font_rgb[0]))) >> 8; 9e76: 08db lsrs r3, r3, #3 9e78: 4662 mov r2, ip 9e7a: 1a12 subs r2, r2, r0 9e7c: 4353 muls r3, r2 9e7e: 9a29 ldr r2, [sp, #164] ; 0xa4 9e80: 4342 muls r2, r0 9e82: 189b adds r3, r3, r2 9e84: 0a1b lsrs r3, r3, #8 9e86: 221f movs r2, #31 9e88: 401a ands r2, r3 9e8a: 9223 str r2, [sp, #140] ; 0x8c res_color.ch.blue = (uint32_t)((uint16_t)txt_rgb[2] * font_rgb[2] + (bg_rgb[2] * (255 - font_rgb[2]))) >> 8; 9e8c: 78bb ldrb r3, [r7, #2] 9e8e: 4699 mov r9, r3 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 9e90: 780a ldrb r2, [r1, #0] 9e92: 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; 9e94: 0ed2 lsrs r2, r2, #27 9e96: 4663 mov r3, ip 9e98: 464f mov r7, r9 9e9a: 1bdb subs r3, r3, r7 9e9c: 435a muls r2, r3 9e9e: 9b28 ldr r3, [sp, #160] ; 0xa0 9ea0: 437b muls r3, r7 9ea2: 18d2 adds r2, r2, r3 9ea4: 0a12 lsrs r2, r2, #8 9ea6: 231f movs r3, #31 9ea8: 401a ands r2, r3 res_color.ch.green = (uint32_t)((uint32_t)txt_rgb[1] * font_rgb[1] + (bg_rgb[1] * (255 - font_rgb[1]))) >> 8; 9eaa: 9b16 ldr r3, [sp, #88] ; 0x58 9eac: 785b ldrb r3, [r3, #1] 9eae: 4698 mov r8, r3 uint8_t bg_rgb[3] = {vdb_buf_tmp->ch.red, vdb_buf_tmp->ch.green, vdb_buf_tmp->ch.blue}; 9eb0: 880b ldrh r3, [r1, #0] 9eb2: 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; 9eb4: 0e9b lsrs r3, r3, #26 9eb6: 4661 mov r1, ip 9eb8: 4647 mov r7, r8 9eba: 1bc9 subs r1, r1, r7 9ebc: 434b muls r3, r1 9ebe: 992a ldr r1, [sp, #168] ; 0xa8 9ec0: 4379 muls r1, r7 9ec2: 468a mov sl, r1 9ec4: 4453 add r3, sl 9ec6: 0a1b lsrs r3, r3, #8 9ec8: 213f movs r1, #63 ; 0x3f 9eca: 400b ands r3, r1 9ecc: 469a mov sl, r3 if(font_rgb[0] == 0 && font_rgb[1] == 0 && font_rgb[2] == 0) mask_buf[mask_p] = LV_OPA_TRANSP; 9ece: 2800 cmp r0, #0 9ed0: d108 bne.n 9ee4 9ed2: 2f00 cmp r7, #0 9ed4: d106 bne.n 9ee4 9ed6: 464b mov r3, r9 9ed8: 2b00 cmp r3, #0 9eda: d103 bne.n 9ee4 9edc: 9b26 ldr r3, [sp, #152] ; 0x98 9ede: 991d ldr r1, [sp, #116] ; 0x74 9ee0: 5458 strb r0, [r3, r1] 9ee2: e003 b.n 9eec else mask_buf[mask_p] = LV_OPA_COVER; 9ee4: 9b26 ldr r3, [sp, #152] ; 0x98 9ee6: 991d ldr r1, [sp, #116] ; 0x74 9ee8: 4660 mov r0, ip 9eea: 5458 strb r0, [r3, r1] color_buf[mask_p] = res_color; 9eec: 991d ldr r1, [sp, #116] ; 0x74 9eee: 0048 lsls r0, r1, #1 9ef0: 9f27 ldr r7, [sp, #156] ; 0x9c 9ef2: 46b8 mov r8, r7 9ef4: 4440 add r0, r8 9ef6: 7807 ldrb r7, [r0, #0] 9ef8: 231f movs r3, #31 9efa: 439f bics r7, r3 9efc: 433a orrs r2, r7 9efe: 7002 strb r2, [r0, #0] 9f00: 4653 mov r3, sl 9f02: 015b lsls r3, r3, #5 9f04: 8802 ldrh r2, [r0, #0] 9f06: 4f36 ldr r7, [pc, #216] ; (9fe0 ) 9f08: 403a ands r2, r7 9f0a: 4313 orrs r3, r2 9f0c: 8003 strh r3, [r0, #0] 9f0e: 9a23 ldr r2, [sp, #140] ; 0x8c 9f10: 00d2 lsls r2, r2, #3 9f12: 0a1b lsrs r3, r3, #8 9f14: 2707 movs r7, #7 9f16: 403b ands r3, r7 9f18: 4313 orrs r3, r2 9f1a: 7043 strb r3, [r0, #1] mask_p++; 9f1c: 1c4b adds r3, r1, #1 9f1e: 931d str r3, [sp, #116] ; 0x74 vdb_buf_tmp++; 9f20: 9b1c ldr r3, [sp, #112] ; 0x70 9f22: 3302 adds r3, #2 9f24: 931c str r3, [sp, #112] ; 0x70 subpx_cnt = 0; 9f26: 2200 movs r2, #0 9f28: e77f b.n 9e2a map_p++; 9f2a: 9b12 ldr r3, [sp, #72] ; 0x48 9f2c: 3301 adds r3, #1 9f2e: 9312 str r3, [sp, #72] ; 0x48 bitmask = bitmask_init; 9f30: 9d22 ldr r5, [sp, #136] ; 0x88 col_bit = 0; 9f32: 2300 movs r3, #0 9f34: e77f b.n 9e36 9f36: 9a12 ldr r2, [sp, #72] ; 0x48 9f38: 4691 mov r9, r2 9f3a: 469a mov sl, r3 if(other_mask_cnt) { 9f3c: 9b30 ldr r3, [sp, #192] ; 0xc0 9f3e: 2b00 cmp r3, #0 9f40: d150 bne.n 9fe4 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { 9f42: 9b31 ldr r3, [sp, #196] ; 0xc4 9f44: 991d ldr r1, [sp, #116] ; 0x74 9f46: 468c mov ip, r1 9f48: 4463 add r3, ip 9f4a: 9a2f ldr r2, [sp, #188] ; 0xbc 9f4c: 429a cmp r2, r3 9f4e: d966 bls.n a01e map_area.y2 ++; 9f50: aa3a add r2, sp, #232 ; 0xe8 9f52: 88d3 ldrh r3, [r2, #6] 9f54: 3301 adds r3, #1 9f56: 80d3 strh r3, [r2, #6] 9f58: 912c str r1, [sp, #176] ; 0xb0 col_bit += ((box_w - col_end) + col_start) * bpp; 9f5a: 9b32 ldr r3, [sp, #200] ; 0xc8 9f5c: 4453 add r3, sl map_p += (col_bit >> 3); 9f5e: 10da asrs r2, r3, #3 9f60: 4491 add r9, r2 col_bit = col_bit & 0x7; 9f62: 2207 movs r2, #7 9f64: 401a ands r2, r3 9f66: 4692 mov sl, r2 vdb_buf_tmp += vdb_width - (col_end - col_start) / 3; 9f68: 9b1c ldr r3, [sp, #112] ; 0x70 9f6a: 9a33 ldr r2, [sp, #204] ; 0xcc 9f6c: 4694 mov ip, r2 9f6e: 4463 add r3, ip 9f70: 931c str r3, [sp, #112] ; 0x70 for(row = row_start ; row < row_end; row++) { 9f72: 9b2b ldr r3, [sp, #172] ; 0xac 9f74: 3301 adds r3, #1 9f76: 932b str r3, [sp, #172] ; 0xac 9f78: 9a2e ldr r2, [sp, #184] ; 0xb8 9f7a: 4293 cmp r3, r2 9f7c: da64 bge.n a048 bitmask = bitmask_init >> col_bit; 9f7e: 9d22 ldr r5, [sp, #136] ; 0x88 9f80: 4653 mov r3, sl 9f82: 40dd lsrs r5, r3 for(col = col_start; col < col_end; col++) { 9f84: 9c2d ldr r4, [sp, #180] ; 0xb4 9f86: 9a1a ldr r2, [sp, #104] ; 0x68 9f88: 4294 cmp r4, r2 9f8a: da0d bge.n 9fa8 9f8c: 9b2c ldr r3, [sp, #176] ; 0xb0 9f8e: 931d str r3, [sp, #116] ; 0x74 9f90: 2200 movs r2, #0 : (uint32_t)((uint32_t)bpp_opa_table[letter_px] * opa) >> 8; 9f92: 23ff movs r3, #255 ; 0xff 9f94: 469c mov ip, r3 font_rgb[subpx_cnt] = px_opa; 9f96: ab39 add r3, sp, #228 ; 0xe4 9f98: 9316 str r3, [sp, #88] ; 0x58 if(col_bit < 8 - bpp) { 9f9a: 2308 movs r3, #8 9f9c: 1b9b subs r3, r3, r6 9f9e: 931b str r3, [sp, #108] ; 0x6c 9fa0: 464b mov r3, r9 9fa2: 9312 str r3, [sp, #72] ; 0x48 9fa4: 4653 mov r3, sl 9fa6: e74a b.n 9e3e for(col = col_start; col < col_end; col++) { 9fa8: 9b2c ldr r3, [sp, #176] ; 0xb0 9faa: 931d str r3, [sp, #116] ; 0x74 9fac: e7c6 b.n 9f3c 9fae: 46c0 nop ; (mov r8, r8) 9fb0: 000261a8 .word 0x000261a8 9fb4: 0001c1b9 .word 0x0001c1b9 9fb8: 000127a1 .word 0x000127a1 9fbc: 00005591 .word 0x00005591 9fc0: 00010e75 .word 0x00010e75 9fc4: 0000bb6d .word 0x0000bb6d 9fc8: 000261ac .word 0x000261ac 9fcc: 0002636c .word 0x0002636c 9fd0: 00026190 .word 0x00026190 9fd4: 0000027a .word 0x0000027a 9fd8: 000262bc .word 0x000262bc 9fdc: 00012159 .word 0x00012159 9fe0: fffff81f .word 0xfffff81f lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, map_area.x1, map_area.y2, 9fe4: 9b2c ldr r3, [sp, #176] ; 0xb0 9fe6: 9a26 ldr r2, [sp, #152] ; 0x98 9fe8: 4694 mov ip, r2 9fea: 4463 add r3, ip 9fec: 001c movs r4, r3 9fee: aa3a add r2, sp, #232 ; 0xe8 9ff0: 2300 movs r3, #0 9ff2: 5ed1 ldrsh r1, [r2, r3] 9ff4: 8893 ldrh r3, [r2, #4] 9ff6: 3301 adds r3, #1 9ff8: 1a5b subs r3, r3, r1 9ffa: b21b sxth r3, r3 9ffc: 2006 movs r0, #6 9ffe: 5e12 ldrsh r2, [r2, r0] a000: 0020 movs r0, r4 a002: 4dcf ldr r5, [pc, #828] ; (a340 ) a004: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a006: 2800 cmp r0, #0 a008: d19b bne.n 9f42 a00a: ab3a add r3, sp, #232 ; 0xe8 a00c: 8899 ldrh r1, [r3, #4] a00e: 3101 adds r1, #1 a010: 881b ldrh r3, [r3, #0] a012: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&map_area)); a014: b209 sxth r1, r1 a016: 0020 movs r0, r4 a018: 4bca ldr r3, [pc, #808] ; (a344 ) a01a: 4798 blx r3 a01c: e791 b.n 9f42 _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); a01e: ac3a add r4, sp, #232 ; 0xe8 a020: 9b15 ldr r3, [sp, #84] ; 0x54 a022: 9302 str r3, [sp, #8] a024: 9b1e ldr r3, [sp, #120] ; 0x78 a026: 9301 str r3, [sp, #4] a028: 2302 movs r3, #2 a02a: 9300 str r3, [sp, #0] a02c: 9b26 ldr r3, [sp, #152] ; 0x98 a02e: 9a27 ldr r2, [sp, #156] ; 0x9c a030: 0021 movs r1, r4 a032: 980f ldr r0, [sp, #60] ; 0x3c a034: 4dc4 ldr r5, [pc, #784] ; (a348 ) a036: 47a8 blx r5 map_area.y1 = map_area.y2 + 1; a038: 88e3 ldrh r3, [r4, #6] a03a: 3301 adds r3, #1 a03c: b21b sxth r3, r3 a03e: 8063 strh r3, [r4, #2] map_area.y2 = map_area.y1; a040: 80e3 strh r3, [r4, #6] mask_p = 0; a042: 2300 movs r3, #0 a044: 932c str r3, [sp, #176] ; 0xb0 a046: e788 b.n 9f5a a048: 9f36 ldr r7, [sp, #216] ; 0xd8 a04a: 9b37 ldr r3, [sp, #220] ; 0xdc a04c: 4699 mov r9, r3 if(map_area.y1 != map_area.y2) { a04e: aa3a add r2, sp, #232 ; 0xe8 a050: 2106 movs r1, #6 a052: 5e53 ldrsh r3, [r2, r1] a054: 2102 movs r1, #2 a056: 5e52 ldrsh r2, [r2, r1] a058: 429a cmp r2, r3 a05a: d00d beq.n a078 map_area.y2--; a05c: a93a add r1, sp, #232 ; 0xe8 a05e: 3b01 subs r3, #1 a060: 80cb strh r3, [r1, #6] _lv_blend_map(clip_area, &map_area, color_buf, mask_buf, LV_DRAW_MASK_RES_CHANGED, opa, blend_mode); a062: 9b15 ldr r3, [sp, #84] ; 0x54 a064: 9302 str r3, [sp, #8] a066: 9b1e ldr r3, [sp, #120] ; 0x78 a068: 9301 str r3, [sp, #4] a06a: 2302 movs r3, #2 a06c: 9300 str r3, [sp, #0] a06e: 9b26 ldr r3, [sp, #152] ; 0x98 a070: 9a27 ldr r2, [sp, #156] ; 0x9c a072: 980f ldr r0, [sp, #60] ; 0x3c a074: 4cb4 ldr r4, [pc, #720] ; (a348 ) a076: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a078: 9826 ldr r0, [sp, #152] ; 0x98 a07a: 4cb4 ldr r4, [pc, #720] ; (a34c ) a07c: 47a0 blx r4 _lv_mem_buf_release(color_buf); a07e: 9827 ldr r0, [sp, #156] ; 0x9c a080: 47a0 blx r4 a082: e4d4 b.n 9a2e draw_letter_normal(pos_x, pos_y, &g, clip_area, map_p, color, opa, blend_mode); a084: 466b mov r3, sp a086: 2248 movs r2, #72 ; 0x48 a088: 189b adds r3, r3, r2 a08a: 881b ldrh r3, [r3, #0] a08c: b21c sxth r4, r3 a08e: 4643 mov r3, r8 a090: b21b sxth r3, r3 a092: 469c mov ip, r3 a094: 466b mov r3, sp a096: 325c adds r2, #92 ; 0x5c a098: 189b adds r3, r3, r2 a09a: 801e strh r6, [r3, #0] uint32_t bpp = g->bpp; a09c: ab3c add r3, sp, #240 ; 0xf0 a09e: 7a9b ldrb r3, [r3, #10] a0a0: 469a mov sl, r3 if(bpp == 3) bpp = 4; a0a2: 2b03 cmp r3, #3 a0a4: d030 beq.n a108 switch(bpp) { a0a6: 2b02 cmp r3, #2 a0a8: d017 beq.n a0da a0aa: d809 bhi.n a0c0 a0ac: 2b01 cmp r3, #1 a0ae: d133 bne.n a118 uint32_t bpp = g->bpp; a0b0: 2301 movs r3, #1 a0b2: 469a mov sl, r3 shades = 2; a0b4: 2102 movs r1, #2 bitmask_init = 0x80; a0b6: 337f adds r3, #127 ; 0x7f a0b8: 9314 str r3, [sp, #80] ; 0x50 bpp_opa_table_p = _lv_bpp1_opa_table; a0ba: 4ba5 ldr r3, [pc, #660] ; (a350 ) a0bc: 931d str r3, [sp, #116] ; 0x74 a0be: e011 b.n a0e4 switch(bpp) { a0c0: 2b04 cmp r3, #4 a0c2: d023 beq.n a10c a0c4: 2b08 cmp r3, #8 a0c6: d127 bne.n a118 uint32_t bpp = g->bpp; a0c8: 2308 movs r3, #8 a0ca: 469a mov sl, r3 shades = 256; a0cc: 2180 movs r1, #128 ; 0x80 a0ce: 0049 lsls r1, r1, #1 bitmask_init = 0xFF; a0d0: 33f7 adds r3, #247 ; 0xf7 a0d2: 9314 str r3, [sp, #80] ; 0x50 bpp_opa_table_p = _lv_bpp8_opa_table; a0d4: 4b9f ldr r3, [pc, #636] ; (a354 ) a0d6: 931d str r3, [sp, #116] ; 0x74 a0d8: e004 b.n a0e4 shades = 4; a0da: 2104 movs r1, #4 bitmask_init = 0xC0; a0dc: 23c0 movs r3, #192 ; 0xc0 a0de: 9314 str r3, [sp, #80] ; 0x50 bpp_opa_table_p = _lv_bpp2_opa_table; a0e0: 4b9d ldr r3, [pc, #628] ; (a358 ) a0e2: 931d str r3, [sp, #116] ; 0x74 if(opa < LV_OPA_MAX) { a0e4: 9a1e ldr r2, [sp, #120] ; 0x78 a0e6: 2af9 cmp r2, #249 ; 0xf9 a0e8: d83d bhi.n a166 if(prev_opa != opa || prev_bpp != bpp) { a0ea: 4b9c ldr r3, [pc, #624] ; (a35c ) a0ec: 781b ldrb r3, [r3, #0] a0ee: 4293 cmp r3, r2 a0f0: d01c beq.n a12c for(i = 0; i < shades; i++) { a0f2: 2200 movs r2, #0 a0f4: 2900 cmp r1, #0 a0f6: d02b beq.n a150 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); a0f8: 9b1e ldr r3, [sp, #120] ; 0x78 a0fa: 4899 ldr r0, [pc, #612] ; (a360 ) a0fc: 9716 str r7, [sp, #88] ; 0x58 a0fe: 9d12 ldr r5, [sp, #72] ; 0x48 a100: 001f movs r7, r3 a102: 9312 str r3, [sp, #72] ; 0x48 a104: 9e1d ldr r6, [sp, #116] ; 0x74 a106: e01b b.n a140 if(bpp == 3) bpp = 4; a108: 2304 movs r3, #4 a10a: 469a mov sl, r3 shades = 16; a10c: 2110 movs r1, #16 bitmask_init = 0xF0; a10e: 23f0 movs r3, #240 ; 0xf0 a110: 9314 str r3, [sp, #80] ; 0x50 bpp_opa_table_p = _lv_bpp4_opa_table; a112: 4b94 ldr r3, [pc, #592] ; (a364 ) a114: 931d str r3, [sp, #116] ; 0x74 a116: e7e5 b.n a0e4 LV_LOG_WARN("lv_draw_letter: invalid bpp"); a118: 4b93 ldr r3, [pc, #588] ; (a368 ) a11a: 9300 str r3, [sp, #0] a11c: 4b93 ldr r3, [pc, #588] ; (a36c ) a11e: 22e6 movs r2, #230 ; 0xe6 a120: 32ff adds r2, #255 ; 0xff a122: 4993 ldr r1, [pc, #588] ; (a370 ) a124: 2002 movs r0, #2 a126: 4c93 ldr r4, [pc, #588] ; (a374 ) a128: 47a0 blx r4 a12a: e480 b.n 9a2e if(prev_opa != opa || prev_bpp != bpp) { a12c: 4b92 ldr r3, [pc, #584] ; (a378 ) a12e: 681b ldr r3, [r3, #0] a130: 459a cmp sl, r3 a132: d1de bne.n a0f2 a134: e00c b.n a150 opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); a136: 9b12 ldr r3, [sp, #72] ; 0x48 a138: 5413 strb r3, [r2, r0] for(i = 0; i < shades; i++) { a13a: 3201 adds r2, #1 a13c: 428a cmp r2, r1 a13e: d005 beq.n a14c opa_table[i] = bpp_opa_table_p[i] == LV_OPA_COVER ? opa : ((bpp_opa_table_p[i] * opa) >> 8); a140: 5cb3 ldrb r3, [r6, r2] a142: 2bff cmp r3, #255 ; 0xff a144: d0f7 beq.n a136 a146: 437b muls r3, r7 a148: 0a1b lsrs r3, r3, #8 a14a: e7f5 b.n a138 a14c: 9f16 ldr r7, [sp, #88] ; 0x58 a14e: 9512 str r5, [sp, #72] ; 0x48 prev_opa = opa; a150: 4b82 ldr r3, [pc, #520] ; (a35c ) a152: 466a mov r2, sp a154: 2178 movs r1, #120 ; 0x78 a156: 1852 adds r2, r2, r1 a158: 7812 ldrb r2, [r2, #0] a15a: 701a strb r2, [r3, #0] prev_bpp = bpp; a15c: 4b86 ldr r3, [pc, #536] ; (a378 ) a15e: 4652 mov r2, sl a160: 601a str r2, [r3, #0] bpp_opa_table_p = opa_table; a162: 4b7f ldr r3, [pc, #508] ; (a360 ) a164: 931d str r3, [sp, #116] ; 0x74 int32_t box_w = g->box_w; a166: ab3c add r3, sp, #240 ; 0xf0 a168: 885a ldrh r2, [r3, #2] a16a: 9227 str r2, [sp, #156] ; 0x9c int32_t box_h = g->box_h; a16c: 8899 ldrh r1, [r3, #4] int32_t width_bit = box_w * bpp; /*Letter width in bits*/ a16e: 4650 mov r0, sl a170: 4350 muls r0, r2 int32_t col_start = pos_x >= clip_area->x1 ? 0 : clip_area->x1 - pos_x; a172: 9b0f ldr r3, [sp, #60] ; 0x3c a174: 2200 movs r2, #0 a176: 5e9b ldrsh r3, [r3, r2] a178: 2200 movs r2, #0 a17a: 9216 str r2, [sp, #88] ; 0x58 a17c: 429c cmp r4, r3 a17e: da01 bge.n a184 a180: 1b1b subs r3, r3, r4 a182: 9316 str r3, [sp, #88] ; 0x58 int32_t col_end = pos_x + box_w <= clip_area->x2 ? box_w : clip_area->x2 - pos_x + 1; a184: 9b0f ldr r3, [sp, #60] ; 0x3c a186: 2204 movs r2, #4 a188: 5e9b ldrsh r3, [r3, r2] a18a: 9d27 ldr r5, [sp, #156] ; 0x9c a18c: 192a adds r2, r5, r4 a18e: 951c str r5, [sp, #112] ; 0x70 a190: 429a cmp r2, r3 a192: dd02 ble.n a19a a194: 1b1c subs r4, r3, r4 a196: 1c63 adds r3, r4, #1 a198: 931c str r3, [sp, #112] ; 0x70 int32_t row_start = pos_y >= clip_area->y1 ? 0 : clip_area->y1 - pos_y; a19a: 9b0f ldr r3, [sp, #60] ; 0x3c a19c: 2202 movs r2, #2 a19e: 5e9b ldrsh r3, [r3, r2] a1a0: 2200 movs r2, #0 a1a2: 921a str r2, [sp, #104] ; 0x68 a1a4: 459c cmp ip, r3 a1a6: da02 bge.n a1ae a1a8: 4662 mov r2, ip a1aa: 1a9b subs r3, r3, r2 a1ac: 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; a1ae: 9b0f ldr r3, [sp, #60] ; 0x3c a1b0: 2206 movs r2, #6 a1b2: 5e9a ldrsh r2, [r3, r2] a1b4: 4663 mov r3, ip a1b6: 18cb adds r3, r1, r3 a1b8: 9123 str r1, [sp, #140] ; 0x8c a1ba: 4293 cmp r3, r2 a1bc: dd03 ble.n a1c6 a1be: 4663 mov r3, ip a1c0: 1ad2 subs r2, r2, r3 a1c2: 1c53 adds r3, r2, #1 a1c4: 9323 str r3, [sp, #140] ; 0x8c uint32_t bit_ofs = (row_start * width_bit) + (col_start * bpp); a1c6: 9b16 ldr r3, [sp, #88] ; 0x58 a1c8: 9328 str r3, [sp, #160] ; 0xa0 a1ca: 9a1a ldr r2, [sp, #104] ; 0x68 a1cc: 4350 muls r0, r2 a1ce: 4654 mov r4, sl a1d0: 435c muls r4, r3 a1d2: 1900 adds r0, r0, r4 map_p += bit_ofs >> 3; a1d4: 08c6 lsrs r6, r0, #3 a1d6: 9b1b ldr r3, [sp, #108] ; 0x6c a1d8: 469c mov ip, r3 a1da: 4466 add r6, ip col_bit = bit_ofs & 0x7; /* "& 0x7" equals to "% 8" just faster */ a1dc: 2407 movs r4, #7 a1de: 4004 ands r4, r0 uint32_t mask_buf_size = box_w * box_h > LV_HOR_RES_MAX ? LV_HOR_RES_MAX : box_w * box_h; a1e0: 9b27 ldr r3, [sp, #156] ; 0x9c a1e2: 434b muls r3, r1 a1e4: 001a movs r2, r3 a1e6: 9325 str r3, [sp, #148] ; 0x94 a1e8: 23f0 movs r3, #240 ; 0xf0 a1ea: 005b lsls r3, r3, #1 a1ec: 429a cmp r2, r3 a1ee: dd00 ble.n a1f2 a1f0: 9325 str r3, [sp, #148] ; 0x94 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a1f2: 9825 ldr r0, [sp, #148] ; 0x94 a1f4: 4b61 ldr r3, [pc, #388] ; (a37c ) a1f6: 4798 blx r3 a1f8: 9022 str r0, [sp, #136] ; 0x88 fill_area.x1 = col_start + pos_x; a1fa: 466b mov r3, sp a1fc: 2248 movs r2, #72 ; 0x48 a1fe: 189b adds r3, r3, r2 a200: 881d ldrh r5, [r3, #0] a202: ab3a add r3, sp, #232 ; 0xe8 a204: 9a16 ldr r2, [sp, #88] ; 0x58 a206: 18aa adds r2, r5, r2 a208: 801a strh r2, [r3, #0] fill_area.x2 = col_end + pos_x - 1; a20a: 3d01 subs r5, #1 a20c: 991c ldr r1, [sp, #112] ; 0x70 a20e: 468c mov ip, r1 a210: 4465 add r5, ip a212: 809d strh r5, [r3, #4] fill_area.y1 = row_start + pos_y; a214: 981a ldr r0, [sp, #104] ; 0x68 a216: 0005 movs r5, r0 a218: 4445 add r5, r8 a21a: b22a sxth r2, r5 a21c: 805a strh r2, [r3, #2] fill_area.y2 = fill_area.y1; a21e: 80da strh r2, [r3, #6] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); a220: 4b57 ldr r3, [pc, #348] ; (a380 ) a222: 4798 blx r3 a224: 9026 str r0, [sp, #152] ; 0x98 uint32_t col_bit_max = 8 - bpp; a226: 2308 movs r3, #8 a228: 4655 mov r5, sl a22a: 1b5d subs r5, r3, r5 uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp; a22c: 9b27 ldr r3, [sp, #156] ; 0x9c a22e: 9a16 ldr r2, [sp, #88] ; 0x58 a230: 4694 mov ip, r2 a232: 4463 add r3, ip a234: 991c ldr r1, [sp, #112] ; 0x70 a236: 1a5b subs r3, r3, r1 a238: 4652 mov r2, sl a23a: 435a muls r2, r3 a23c: 9227 str r2, [sp, #156] ; 0x9c for(row = row_start ; row < row_end; row++) { a23e: 981a ldr r0, [sp, #104] ; 0x68 a240: 9b23 ldr r3, [sp, #140] ; 0x8c a242: 4298 cmp r0, r3 a244: db00 blt.n a248 a246: e0b8 b.n a3ba a248: 2300 movs r3, #0 a24a: 931b str r3, [sp, #108] ; 0x6c mask_buf[mask_p] = 0; a24c: 972a str r7, [sp, #168] ; 0xa8 a24e: 9b1d ldr r3, [sp, #116] ; 0x74 a250: 4698 mov r8, r3 a252: 951d str r5, [sp, #116] ; 0x74 a254: 464b mov r3, r9 a256: 932b str r3, [sp, #172] ; 0xac a258: e039 b.n a2ce a25a: 2300 movs r3, #0 a25c: 7013 strb r3, [r2, #0] a25e: e012 b.n a286 map_p++; a260: 3601 adds r6, #1 bitmask = bitmask_init; a262: 9914 ldr r1, [sp, #80] ; 0x50 col_bit = 0; a264: 2400 movs r4, #0 a266: 3201 adds r2, #1 for(col = col_start; col < col_end; col++) { a268: 9b12 ldr r3, [sp, #72] ; 0x48 a26a: 4293 cmp r3, r2 a26c: d010 beq.n a290 letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit); a26e: 7833 ldrb r3, [r6, #0] a270: 400b ands r3, r1 a272: 1b28 subs r0, r5, r4 a274: 40c3 lsrs r3, r0 if(letter_px) { a276: b2d8 uxtb r0, r3 a278: 2800 cmp r0, #0 a27a: d0ee beq.n a25a mask_buf[mask_p] = bpp_opa_table_p[letter_px]; a27c: 4648 mov r0, r9 a27e: 4003 ands r3, r0 a280: 4640 mov r0, r8 a282: 5cc3 ldrb r3, [r0, r3] a284: 7013 strb r3, [r2, #0] if(col_bit < col_bit_max) { a286: 42a5 cmp r5, r4 a288: d9ea bls.n a260 col_bit += bpp; a28a: 19e4 adds r4, r4, r7 bitmask = bitmask >> bpp; a28c: 40f9 lsrs r1, r7 a28e: e7ea b.n a266 a290: 46ba mov sl, r7 a292: 951d str r5, [sp, #116] ; 0x74 a294: 4667 mov r7, ip if(other_mask_cnt) { a296: 9b26 ldr r3, [sp, #152] ; 0x98 a298: 2b00 cmp r3, #0 a29a: d133 bne.n a304 if((uint32_t) mask_p + (col_end - col_start) < mask_buf_size) { a29c: 9b1c ldr r3, [sp, #112] ; 0x70 a29e: 9a16 ldr r2, [sp, #88] ; 0x58 a2a0: 1a9b subs r3, r3, r2 a2a2: 19db adds r3, r3, r7 a2a4: 9a25 ldr r2, [sp, #148] ; 0x94 a2a6: 429a cmp r2, r3 a2a8: d96c bls.n a384 fill_area.y2 ++; a2aa: aa3a add r2, sp, #232 ; 0xe8 a2ac: 88d3 ldrh r3, [r2, #6] a2ae: 3301 adds r3, #1 a2b0: 80d3 strh r3, [r2, #6] a2b2: 971b str r7, [sp, #108] ; 0x6c col_bit += col_bit_row_ofs; a2b4: 9b27 ldr r3, [sp, #156] ; 0x9c a2b6: 469c mov ip, r3 a2b8: 4464 add r4, ip map_p += (col_bit >> 3); a2ba: 08e3 lsrs r3, r4, #3 a2bc: 18f6 adds r6, r6, r3 col_bit = col_bit & 0x7; a2be: 2307 movs r3, #7 a2c0: 401c ands r4, r3 for(row = row_start ; row < row_end; row++) { a2c2: 9b1a ldr r3, [sp, #104] ; 0x68 a2c4: 3301 adds r3, #1 a2c6: 931a str r3, [sp, #104] ; 0x68 a2c8: 9a23 ldr r2, [sp, #140] ; 0x8c a2ca: 4293 cmp r3, r2 a2cc: da72 bge.n a3b4 bitmask = bitmask_init >> col_bit; a2ce: 9914 ldr r1, [sp, #80] ; 0x50 a2d0: 40e1 lsrs r1, r4 for(col = col_start; col < col_end; col++) { a2d2: 9b16 ldr r3, [sp, #88] ; 0x58 a2d4: 001a movs r2, r3 a2d6: 981c ldr r0, [sp, #112] ; 0x70 a2d8: 4282 cmp r2, r0 a2da: da11 bge.n a300 a2dc: 9f22 ldr r7, [sp, #136] ; 0x88 a2de: 003a movs r2, r7 a2e0: 9d1b ldr r5, [sp, #108] ; 0x6c a2e2: 46ac mov ip, r5 a2e4: 4462 add r2, ip a2e6: 0003 movs r3, r0 a2e8: 9828 ldr r0, [sp, #160] ; 0xa0 a2ea: 1a1b subs r3, r3, r0 a2ec: 449c add ip, r3 a2ee: 003b movs r3, r7 a2f0: 4463 add r3, ip a2f2: 0018 movs r0, r3 mask_buf[mask_p] = bpp_opa_table_p[letter_px]; a2f4: 23ff movs r3, #255 ; 0xff a2f6: 4699 mov r9, r3 a2f8: 9012 str r0, [sp, #72] ; 0x48 a2fa: 4657 mov r7, sl a2fc: 9d1d ldr r5, [sp, #116] ; 0x74 a2fe: e7b6 b.n a26e for(col = col_start; col < col_end; col++) { a300: 9f1b ldr r7, [sp, #108] ; 0x6c a302: e7c8 b.n a296 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2, a304: 9b1b ldr r3, [sp, #108] ; 0x6c a306: 9a22 ldr r2, [sp, #136] ; 0x88 a308: 4694 mov ip, r2 a30a: 4463 add r3, ip a30c: 4699 mov r9, r3 a30e: aa3a add r2, sp, #232 ; 0xe8 a310: 2300 movs r3, #0 a312: 5ed1 ldrsh r1, [r2, r3] a314: 8893 ldrh r3, [r2, #4] a316: 3301 adds r3, #1 a318: 1a5b subs r3, r3, r1 a31a: b21b sxth r3, r3 a31c: 2006 movs r0, #6 a31e: 5e12 ldrsh r2, [r2, r0] a320: 4648 mov r0, r9 a322: 4d07 ldr r5, [pc, #28] ; (a340 ) a324: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { a326: 2800 cmp r0, #0 a328: d1b8 bne.n a29c a32a: ab3a add r3, sp, #232 ; 0xe8 a32c: 8899 ldrh r1, [r3, #4] a32e: 3101 adds r1, #1 a330: 881b ldrh r3, [r3, #0] a332: 1ac9 subs r1, r1, r3 _lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area)); a334: b209 sxth r1, r1 a336: 4648 mov r0, r9 a338: 4b02 ldr r3, [pc, #8] ; (a344 ) a33a: 4798 blx r3 a33c: e7ae b.n a29c a33e: 46c0 nop ; (mov r8, r8) a340: 0000bad1 .word 0x0000bad1 a344: 00012975 .word 0x00012975 a348: 00007cf1 .word 0x00007cf1 a34c: 00012465 .word 0x00012465 a350: 000261a4 .word 0x000261a4 a354: 000261bc .word 0x000261bc a358: 000261a8 .word 0x000261a8 a35c: 20002bc4 .word 0x20002bc4 a360: 20002ac0 .word 0x20002ac0 a364: 000261ac .word 0x000261ac a368: 00026394 .word 0x00026394 a36c: 0002617c .word 0x0002617c a370: 000262bc .word 0x000262bc a374: 00012159 .word 0x00012159 a378: 20002bc0 .word 0x20002bc0 a37c: 000127a1 .word 0x000127a1 a380: 0000bb6d .word 0x0000bb6d _lv_blend_fill(clip_area, &fill_area, a384: af3a add r7, sp, #232 ; 0xe8 a386: 9b15 ldr r3, [sp, #84] ; 0x54 a388: 9302 str r3, [sp, #8] a38a: 23ff movs r3, #255 ; 0xff a38c: 9301 str r3, [sp, #4] a38e: 3bfd subs r3, #253 ; 0xfd a390: 9300 str r3, [sp, #0] a392: 9b22 ldr r3, [sp, #136] ; 0x88 a394: 466a mov r2, sp a396: 21a4 movs r1, #164 ; 0xa4 a398: 1852 adds r2, r2, r1 a39a: 8812 ldrh r2, [r2, #0] a39c: 0039 movs r1, r7 a39e: 980f ldr r0, [sp, #60] ; 0x3c a3a0: 4d73 ldr r5, [pc, #460] ; (a570 ) a3a2: 47a8 blx r5 fill_area.y1 = fill_area.y2 + 1; a3a4: 88fb ldrh r3, [r7, #6] a3a6: 3301 adds r3, #1 a3a8: b21b sxth r3, r3 a3aa: 807b strh r3, [r7, #2] fill_area.y2 = fill_area.y1; a3ac: 80fb strh r3, [r7, #6] mask_p = 0; a3ae: 2300 movs r3, #0 a3b0: 931b str r3, [sp, #108] ; 0x6c a3b2: e77f b.n a2b4 a3b4: 9f2a ldr r7, [sp, #168] ; 0xa8 a3b6: 9b2b ldr r3, [sp, #172] ; 0xac a3b8: 4699 mov r9, r3 if(fill_area.y1 != fill_area.y2) { a3ba: aa3a add r2, sp, #232 ; 0xe8 a3bc: 2106 movs r1, #6 a3be: 5e53 ldrsh r3, [r2, r1] a3c0: 2102 movs r1, #2 a3c2: 5e52 ldrsh r2, [r2, r1] a3c4: 429a cmp r2, r3 a3c6: d010 beq.n a3ea fill_area.y2--; a3c8: a93a add r1, sp, #232 ; 0xe8 a3ca: 3b01 subs r3, #1 a3cc: 80cb strh r3, [r1, #6] _lv_blend_fill(clip_area, &fill_area, a3ce: 9b15 ldr r3, [sp, #84] ; 0x54 a3d0: 9302 str r3, [sp, #8] a3d2: 23ff movs r3, #255 ; 0xff a3d4: 9301 str r3, [sp, #4] a3d6: 3bfd subs r3, #253 ; 0xfd a3d8: 9300 str r3, [sp, #0] a3da: 9b22 ldr r3, [sp, #136] ; 0x88 a3dc: 466a mov r2, sp a3de: 20a4 movs r0, #164 ; 0xa4 a3e0: 1812 adds r2, r2, r0 a3e2: 8812 ldrh r2, [r2, #0] a3e4: 980f ldr r0, [sp, #60] ; 0x3c a3e6: 4c62 ldr r4, [pc, #392] ; (a570 ) a3e8: 47a0 blx r4 _lv_mem_buf_release(mask_buf); a3ea: 9822 ldr r0, [sp, #136] ; 0x88 a3ec: 4b61 ldr r3, [pc, #388] ; (a574 ) a3ee: 4798 blx r3 a3f0: f7ff fb1d bl 9a2e cmd_state = CMD_STATE_WAIT; a3f4: 2300 movs r3, #0 a3f6: 9308 str r3, [sp, #32] a3f8: f7ff fb26 bl 9a48 a3fc: 46b8 mov r8, r7 a3fe: 464e mov r6, r9 if(dsc->decor & LV_TEXT_DECOR_STRIKETHROUGH) { a400: 7e33 ldrb r3, [r6, #24] a402: 079b lsls r3, r3, #30 a404: d447 bmi.n a496 if(dsc->decor & LV_TEXT_DECOR_UNDERLINE) { a406: 7e33 ldrb r3, [r6, #24] a408: 07db lsls r3, r3, #31 a40a: d465 bmi.n a4d8 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a40c: 9b0e ldr r3, [sp, #56] ; 0x38 a40e: 001f movs r7, r3 a410: 9d0b ldr r5, [sp, #44] ; 0x2c a412: 46ac mov ip, r5 a414: 4467 add r7, ip a416: 230c movs r3, #12 a418: 5ef2 ldrsh r2, [r6, r3] a41a: 7df3 ldrb r3, [r6, #23] a41c: 9300 str r3, [sp, #0] a41e: 9b17 ldr r3, [sp, #92] ; 0x5c a420: 9905 ldr r1, [sp, #20] a422: 0038 movs r0, r7 a424: 4c54 ldr r4, [pc, #336] ; (a578 ) a426: 47a0 blx r4 a428: 1944 adds r4, r0, r5 pos.x = coords->x1; a42a: 9b11 ldr r3, [sp, #68] ; 0x44 a42c: 2500 movs r5, #0 a42e: 5f5d ldrsh r5, [r3, r5] if(dsc->flag & LV_TXT_FLAG_CENTER) { a430: 7df2 ldrb r2, [r6, #23] a432: 0753 lsls r3, r2, #29 a434: d470 bmi.n a518 else if(dsc->flag & LV_TXT_FLAG_RIGHT) { a436: 0713 lsls r3, r2, #28 a438: d500 bpl.n a43c a43a: e082 b.n a542 a43c: 9b13 ldr r3, [sp, #76] ; 0x4c a43e: 991f ldr r1, [sp, #124] ; 0x7c a440: 468c mov ip, r1 a442: 4463 add r3, ip a444: 9a18 ldr r2, [sp, #96] ; 0x60 a446: 4462 add r2, ip a448: b292 uxth r2, r2 a44a: 9218 str r2, [sp, #96] ; 0x60 line_start = line_end; a44c: 9a0b ldr r2, [sp, #44] ; 0x2c a44e: 9206 str r2, [sp, #24] pos.y += line_height; a450: b21b sxth r3, r3 a452: 001a movs r2, r3 a454: 9313 str r3, [sp, #76] ; 0x4c if(pos.y > mask->y2) return; a456: 9b0f ldr r3, [sp, #60] ; 0x3c a458: 2106 movs r1, #6 a45a: 5e5b ldrsh r3, [r3, r1] a45c: 4293 cmp r3, r2 a45e: da01 bge.n a464 a460: f7ff f900 bl 9664 line_end += _lv_txt_get_next_line(&txt[line_start], font, dsc->letter_space, w, dsc->flag); a464: 940b str r4, [sp, #44] ; 0x2c while(txt[line_start] != '\0') { a466: 9b0e ldr r3, [sp, #56] ; 0x38 a468: 9a06 ldr r2, [sp, #24] a46a: 4694 mov ip, r2 a46c: 4463 add r3, ip a46e: 930d str r3, [sp, #52] ; 0x34 a470: 781b ldrb r3, [r3, #0] a472: 2b00 cmp r3, #0 a474: d101 bne.n a47a a476: f7ff f8f5 bl 9664 pos.x += x_ofs; a47a: 9b21 ldr r3, [sp, #132] ; 0x84 a47c: 469c mov ip, r3 a47e: 4465 add r5, ip a480: b22b sxth r3, r5 a482: 9309 str r3, [sp, #36] ; 0x24 i = 0; a484: 2300 movs r3, #0 a486: 9354 str r3, [sp, #336] ; 0x150 cmd_state = CMD_STATE_WAIT; a488: 9308 str r3, [sp, #32] logical_char_pos = _lv_txt_encoded_get_char_id(txt, line_start + i); a48a: 4b3c ldr r3, [pc, #240] ; (a57c ) a48c: 469b mov fp, r3 a48e: 4647 mov r7, r8 a490: 46b1 mov r9, r6 while(i < line_end - line_start) { a492: f7ff fad9 bl 9a48 p1.x = pos_x_start; a496: a83a add r0, sp, #232 ; 0xe8 a498: 466b mov r3, sp a49a: 2290 movs r2, #144 ; 0x90 a49c: 189b adds r3, r3, r2 a49e: 881b ldrh r3, [r3, #0] a4a0: 8003 strh r3, [r0, #0] p1.y = pos.y + (dsc->font->line_height / 2) + line_dsc.width / 2; a4a2: 6873 ldr r3, [r6, #4] a4a4: 2208 movs r2, #8 a4a6: 5e9b ldrsh r3, [r3, r2] a4a8: 0fda lsrs r2, r3, #31 a4aa: 18d2 adds r2, r2, r3 a4ac: 1052 asrs r2, r2, #1 a4ae: ab55 add r3, sp, #340 ; 0x154 a4b0: 2102 movs r1, #2 a4b2: 5e5c ldrsh r4, [r3, r1] a4b4: 0fe1 lsrs r1, r4, #31 a4b6: 1909 adds r1, r1, r4 a4b8: 1049 asrs r1, r1, #1 a4ba: 1852 adds r2, r2, r1 a4bc: 9918 ldr r1, [sp, #96] ; 0x60 a4be: 468c mov ip, r1 a4c0: 4462 add r2, ip a4c2: b212 sxth r2, r2 a4c4: 8042 strh r2, [r0, #2] p2.x = pos.x; a4c6: a93c add r1, sp, #240 ; 0xf0 a4c8: 466c mov r4, sp a4ca: 8ca4 ldrh r4, [r4, #36] ; 0x24 a4cc: 800c strh r4, [r1, #0] p2.y = p1.y; a4ce: 804a strh r2, [r1, #2] lv_draw_line(&p1, &p2, mask, &line_dsc); a4d0: 9a0f ldr r2, [sp, #60] ; 0x3c a4d2: 4c2b ldr r4, [pc, #172] ; (a580 ) a4d4: 47a0 blx r4 a4d6: e796 b.n a406 p1.x = pos_x_start; a4d8: a83a add r0, sp, #232 ; 0xe8 a4da: 466b mov r3, sp a4dc: 2290 movs r2, #144 ; 0x90 a4de: 189b adds r3, r3, r2 a4e0: 881b ldrh r3, [r3, #0] a4e2: 8003 strh r3, [r0, #0] p1.y = pos.y + dsc->font->line_height - dsc->font->base_line + line_dsc.width / 2 + 1; a4e4: 6871 ldr r1, [r6, #4] a4e6: ab55 add r3, sp, #340 ; 0x154 a4e8: 2202 movs r2, #2 a4ea: 5e9c ldrsh r4, [r3, r2] a4ec: 0fe2 lsrs r2, r4, #31 a4ee: 1912 adds r2, r2, r4 a4f0: 1052 asrs r2, r2, #1 a4f2: 3201 adds r2, #1 a4f4: 890c ldrh r4, [r1, #8] a4f6: 1912 adds r2, r2, r4 a4f8: 8949 ldrh r1, [r1, #10] a4fa: 1a52 subs r2, r2, r1 a4fc: 9918 ldr r1, [sp, #96] ; 0x60 a4fe: 468c mov ip, r1 a500: 4462 add r2, ip a502: b212 sxth r2, r2 a504: 8042 strh r2, [r0, #2] p2.x = pos.x; a506: a93c add r1, sp, #240 ; 0xf0 a508: 466c mov r4, sp a50a: 8ca4 ldrh r4, [r4, #36] ; 0x24 a50c: 800c strh r4, [r1, #0] p2.y = p1.y; a50e: 804a strh r2, [r1, #2] lv_draw_line(&p1, &p2, mask, &line_dsc); a510: 9a0f ldr r2, [sp, #60] ; 0x3c a512: 4c1b ldr r4, [pc, #108] ; (a580 ) a514: 47a0 blx r4 a516: e779 b.n a40c _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a518: 210c movs r1, #12 a51a: 5e73 ldrsh r3, [r6, r1] a51c: 9200 str r2, [sp, #0] a51e: 9a05 ldr r2, [sp, #20] a520: 0001 movs r1, r0 a522: 0038 movs r0, r7 a524: 4f17 ldr r7, [pc, #92] ; (a584 ) a526: 47b8 blx r7 a528: 9a11 ldr r2, [sp, #68] ; 0x44 a52a: 8893 ldrh r3, [r2, #4] a52c: 3301 adds r3, #1 a52e: 8812 ldrh r2, [r2, #0] a530: 1a9b subs r3, r3, r2 pos.x += (lv_area_get_width(coords) - line_width) / 2; a532: b21b sxth r3, r3 a534: 1a18 subs r0, r3, r0 a536: 0fc3 lsrs r3, r0, #31 a538: 1818 adds r0, r3, r0 a53a: 1040 asrs r0, r0, #1 a53c: 1945 adds r5, r0, r5 a53e: b22d sxth r5, r5 a540: e77c b.n a43c _lv_txt_get_width(&txt[line_start], line_end - line_start, font, dsc->letter_space, dsc->flag); a542: 210c movs r1, #12 a544: 5e73 ldrsh r3, [r6, r1] a546: 9200 str r2, [sp, #0] a548: 9a05 ldr r2, [sp, #20] a54a: 0001 movs r1, r0 a54c: 0038 movs r0, r7 a54e: 4f0d ldr r7, [pc, #52] ; (a584 ) a550: 47b8 blx r7 a552: 9a11 ldr r2, [sp, #68] ; 0x44 a554: 8893 ldrh r3, [r2, #4] a556: 3301 adds r3, #1 a558: 8812 ldrh r2, [r2, #0] a55a: 1a9b subs r3, r3, r2 pos.x += lv_area_get_width(coords) - line_width; a55c: b21b sxth r3, r3 a55e: 1a18 subs r0, r3, r0 a560: 1945 adds r5, r0, r5 a562: b22d sxth r5, r5 a564: e76a b.n a43c cmd_state = CMD_STATE_WAIT; a566: 2300 movs r3, #0 a568: 9308 str r3, [sp, #32] a56a: f7ff f9d3 bl 9914 a56e: 46c0 nop ; (mov r8, r8) a570: 00006fed .word 0x00006fed a574: 00012465 .word 0x00012465 a578: 00013c21 .word 0x00013c21 a57c: 20000058 .word 0x20000058 a580: 0000a5b9 .word 0x0000a5b9 a584: 00013e99 .word 0x00013e99 0000a588 : /********************** * GLOBAL FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_draw_line_dsc_init(lv_draw_line_dsc_t * dsc) { a588: b510 push {r4, lr} a58a: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_line_dsc_t)); a58c: 210a movs r1, #10 a58e: 4b08 ldr r3, [pc, #32] ; (a5b0 ) a590: 4798 blx r3 dsc->width = 1; a592: 2301 movs r3, #1 a594: 8063 strh r3, [r4, #2] dsc->opa = LV_OPA_COVER; a596: 33fe adds r3, #254 ; 0xfe a598: 7223 strb r3, [r4, #8] dsc->color = LV_COLOR_BLACK; a59a: 7823 ldrb r3, [r4, #0] a59c: 221f movs r2, #31 a59e: 4393 bics r3, r2 a5a0: 7023 strb r3, [r4, #0] a5a2: 8823 ldrh r3, [r4, #0] a5a4: 4a03 ldr r2, [pc, #12] ; (a5b4 ) a5a6: 4013 ands r3, r2 a5a8: 8023 strh r3, [r4, #0] a5aa: 2300 movs r3, #0 a5ac: 7063 strb r3, [r4, #1] } a5ae: bd10 pop {r4, pc} a5b0: 00012975 .word 0x00012975 a5b4: fffff81f .word 0xfffff81f 0000a5b8 : * @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) { a5b8: b5f0 push {r4, r5, r6, r7, lr} a5ba: 46de mov lr, fp a5bc: 4657 mov r7, sl a5be: 464e mov r6, r9 a5c0: 4645 mov r5, r8 a5c2: b5e0 push {r5, r6, r7, lr} a5c4: b0cb sub sp, #300 ; 0x12c a5c6: 9005 str r0, [sp, #20] a5c8: 000e movs r6, r1 a5ca: 9106 str r1, [sp, #24] a5cc: 9207 str r2, [sp, #28] a5ce: 001c movs r4, r3 if(dsc->width == 0) return; a5d0: 2202 movs r2, #2 a5d2: 5e9b ldrsh r3, [r3, r2] a5d4: 2b00 cmp r3, #0 a5d6: d101 bne.n a5dc a5d8: f000 fc46 bl ae68 if(dsc->opa <= LV_OPA_MIN) return; a5dc: 7a22 ldrb r2, [r4, #8] a5de: 2a05 cmp r2, #5 a5e0: d801 bhi.n a5e6 a5e2: f000 fc41 bl ae68 if(point1->x == point2->x && point1->y == point2->y) return; a5e6: 0002 movs r2, r0 a5e8: 2000 movs r0, #0 a5ea: 5e11 ldrsh r1, [r2, r0] a5ec: 2500 movs r5, #0 a5ee: 5f70 ldrsh r0, [r6, r5] a5f0: 4281 cmp r1, r0 a5f2: d100 bne.n a5f6 a5f4: e12b b.n a84e lv_area_t clip_line; clip_line.x1 = LV_MATH_MIN(point1->x, point2->x) - dsc->width / 2; a5f6: 0fda lsrs r2, r3, #31 a5f8: 18d3 adds r3, r2, r3 a5fa: 105b asrs r3, r3, #1 a5fc: b29b uxth r3, r3 a5fe: 1c0a adds r2, r1, #0 a600: 4281 cmp r1, r0 a602: dd00 ble.n a606 a604: 1c02 adds r2, r0, #0 a606: 1ad2 subs r2, r2, r3 a608: ad48 add r5, sp, #288 ; 0x120 a60a: 802a strh r2, [r5, #0] clip_line.x2 = LV_MATH_MAX(point1->x, point2->x) + dsc->width / 2; a60c: 1c0a adds r2, r1, #0 a60e: 4281 cmp r1, r0 a610: da00 bge.n a614 a612: 1c02 adds r2, r0, #0 a614: 189a adds r2, r3, r2 a616: a948 add r1, sp, #288 ; 0x120 a618: 808a strh r2, [r1, #4] clip_line.y1 = LV_MATH_MIN(point1->y, point2->y) - dsc->width / 2; a61a: 9a06 ldr r2, [sp, #24] a61c: 2102 movs r1, #2 a61e: 5e52 ldrsh r2, [r2, r1] a620: 9905 ldr r1, [sp, #20] a622: 2002 movs r0, #2 a624: 5e08 ldrsh r0, [r1, r0] a626: 1c11 adds r1, r2, #0 a628: 4282 cmp r2, r0 a62a: dd00 ble.n a62e a62c: 1c01 adds r1, r0, #0 a62e: 1ac9 subs r1, r1, r3 a630: ad48 add r5, sp, #288 ; 0x120 a632: 8069 strh r1, [r5, #2] clip_line.y2 = LV_MATH_MAX(point1->y, point2->y) + dsc->width / 2; a634: 1c11 adds r1, r2, #0 a636: 4282 cmp r2, r0 a638: da00 bge.n a63c a63a: 1c01 adds r1, r0, #0 a63c: 185b adds r3, r3, r1 a63e: aa48 add r2, sp, #288 ; 0x120 a640: 80d3 strh r3, [r2, #6] bool is_common; is_common = _lv_area_intersect(&clip_line, &clip_line, clip); a642: 9a07 ldr r2, [sp, #28] a644: a948 add r1, sp, #288 ; 0x120 a646: 0008 movs r0, r1 a648: 4bd5 ldr r3, [pc, #852] ; (a9a0 ) a64a: 4798 blx r3 if(!is_common) return; a64c: 2800 cmp r0, #0 a64e: d101 bne.n a654 a650: f000 fc0a bl ae68 if(point1->y == point2->y) draw_line_hor(point1, point2, &clip_line, dsc); a654: 9b05 ldr r3, [sp, #20] a656: 2602 movs r6, #2 a658: 5f9e ldrsh r6, [r3, r6] a65a: 9b06 ldr r3, [sp, #24] a65c: 2502 movs r5, #2 a65e: 5f5d ldrsh r5, [r3, r5] a660: 42ae cmp r6, r5 a662: d100 bne.n a666 a664: e0fc b.n a860 else if(point1->x == point2->x) draw_line_ver(point1, point2, &clip_line, dsc); a666: 9b05 ldr r3, [sp, #20] a668: 2200 movs r2, #0 a66a: 5e9a ldrsh r2, [r3, r2] a66c: 0011 movs r1, r2 a66e: 9208 str r2, [sp, #32] a670: 9b06 ldr r3, [sp, #24] a672: 2200 movs r2, #0 a674: 5e9b ldrsh r3, [r3, r2] a676: 469a mov sl, r3 a678: 4551 cmp r1, sl a67a: d100 bne.n a67e a67c: e206 b.n aa8c 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) { a67e: 42ae cmp r6, r5 a680: db06 blt.n a690 a682: 0033 movs r3, r6 p2.y = point2->y; p1.x = point1->x; p2.x = point2->x; } else { p1.y = point2->y; a684: 002e movs r6, r5 p2.y = point1->y; a686: 001d movs r5, r3 if(point1->y < point2->y) { a688: 9b08 ldr r3, [sp, #32] p1.x = point2->x; a68a: 4652 mov r2, sl a68c: 9208 str r2, [sp, #32] p2.x = point1->x; a68e: 469a mov sl, r3 } int32_t xdiff = p2.x - p1.x; a690: 4653 mov r3, sl a692: 9a08 ldr r2, [sp, #32] a694: 1a9b subs r3, r3, r2 a696: 9309 str r3, [sp, #36] ; 0x24 int32_t ydiff = p2.y - p1.y; a698: 1baa subs r2, r5, r6 a69a: 920a str r2, [sp, #40] ; 0x28 bool flat = LV_MATH_ABS(xdiff) > LV_MATH_ABS(ydiff) ? true : false; a69c: 17d9 asrs r1, r3, #31 a69e: 185b adds r3, r3, r1 a6a0: 404b eors r3, r1 a6a2: 4699 mov r9, r3 a6a4: 17d1 asrs r1, r2, #31 a6a6: 1853 adds r3, r2, r1 a6a8: 404b eors r3, r1 a6aa: 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; a6ac: 2202 movs r2, #2 a6ae: 5ea3 ldrsh r3, [r4, r2] a6b0: 4698 mov r8, r3 int32_t wcorr_i = 0; if(flat) wcorr_i = (LV_MATH_ABS(ydiff) << 5) / LV_MATH_ABS(xdiff); a6b2: 45d9 cmp r9, fp a6b4: dc00 bgt.n a6b8 a6b6: e2d0 b.n ac5a a6b8: 465b mov r3, fp a6ba: 0158 lsls r0, r3, #5 a6bc: 4649 mov r1, r9 a6be: 4bb9 ldr r3, [pc, #740] ; (a9a4 ) a6c0: 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*/ a6c2: 4bb9 ldr r3, [pc, #740] ; (a9a8 ) a6c4: 5c1b ldrb r3, [r3, r0] a6c6: 4642 mov r2, r8 a6c8: 435a muls r2, r3 a6ca: 0013 movs r3, r2 a6cc: 223f movs r2, #63 ; 0x3f a6ce: 4690 mov r8, r2 a6d0: 4498 add r8, r3 a6d2: 4643 mov r3, r8 a6d4: 11db asrs r3, r3, #7 a6d6: 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; a6d8: b29b uxth r3, r3 a6da: 4652 mov r2, sl a6dc: 9808 ldr r0, [sp, #32] a6de: 4582 cmp sl, r0 a6e0: dd00 ble.n a6e4 a6e2: 1c02 adds r2, r0, #0 a6e4: 1ad2 subs r2, r2, r3 a6e6: a90e add r1, sp, #56 ; 0x38 a6e8: 800a strh r2, [r1, #0] draw_area.x2 = LV_MATH_MAX(p1.x, p2.x) + w; a6ea: 4652 mov r2, sl a6ec: 9808 ldr r0, [sp, #32] a6ee: 4582 cmp sl, r0 a6f0: da00 bge.n a6f4 a6f2: 1c02 adds r2, r0, #0 a6f4: 189a adds r2, r3, r2 a6f6: a90e add r1, sp, #56 ; 0x38 a6f8: 808a strh r2, [r1, #4] draw_area.y1 = LV_MATH_MIN(p1.y, p2.y) - w; a6fa: 1c2a adds r2, r5, #0 a6fc: 42b5 cmp r5, r6 a6fe: dd00 ble.n a702 a700: 1c32 adds r2, r6, #0 a702: 1ad2 subs r2, r2, r3 a704: a90e add r1, sp, #56 ; 0x38 a706: 804a strh r2, [r1, #2] draw_area.y2 = LV_MATH_MAX(p1.y, p2.y) + w; a708: 1c2a adds r2, r5, #0 a70a: 42b5 cmp r5, r6 a70c: da00 bge.n a710 a70e: 1c32 adds r2, r6, #0 a710: 189b adds r3, r3, r2 a712: aa0e add r2, sp, #56 ; 0x38 a714: 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); a716: aa48 add r2, sp, #288 ; 0x120 a718: a90e add r1, sp, #56 ; 0x38 a71a: 0008 movs r0, r1 a71c: 4ba0 ldr r3, [pc, #640] ; (a9a0 ) a71e: 4798 blx r3 if(is_common == false) return; a720: 2800 cmp r0, #0 a722: d100 bne.n a726 a724: e39c b.n ae60 int32_t w_half0 = w >> 1; a726: 4643 mov r3, r8 a728: 121b asrs r3, r3, #8 a72a: 4698 mov r8, r3 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ a72c: 2301 movs r3, #1 a72e: 403b ands r3, r7 a730: 4443 add r3, r8 a732: 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) { a734: 45d9 cmp r9, fp a736: dc00 bgt.n a73a a738: e2ba b.n acb0 if(xdiff > 0) { a73a: 9a09 ldr r2, [sp, #36] ; 0x24 a73c: 2a00 cmp r2, #0 a73e: dc00 bgt.n a742 a740: e291 b.n ac66 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, a742: b2b2 uxth r2, r6 a744: 4641 mov r1, r8 a746: 466b mov r3, sp a748: 8619 strh r1, [r3, #48] ; 0x30 a74a: b28b uxth r3, r1 a74c: b2a9 uxth r1, r5 a74e: 4693 mov fp, r2 a750: 1ad2 subs r2, r2, r3 a752: b212 sxth r2, r2 a754: 2000 movs r0, #0 a756: 9001 str r0, [sp, #4] a758: 4689 mov r9, r1 a75a: 1acb subs r3, r1, r3 a75c: b21b sxth r3, r3 a75e: 9300 str r3, [sp, #0] a760: 4653 mov r3, sl a762: 9908 ldr r1, [sp, #32] a764: a812 add r0, sp, #72 ; 0x48 a766: 4f91 ldr r7, [pc, #580] ; (a9ac ) a768: 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, a76a: 466b mov r3, sp a76c: 8d9b ldrh r3, [r3, #44] ; 0x2c a76e: 465a mov r2, fp a770: 18d2 adds r2, r2, r3 a772: b212 sxth r2, r2 a774: 2101 movs r1, #1 a776: 9101 str r1, [sp, #4] a778: 444b add r3, r9 a77a: b21b sxth r3, r3 a77c: 9300 str r3, [sp, #0] a77e: 4653 mov r3, sl a780: 9908 ldr r1, [sp, #32] a782: a81d add r0, sp, #116 ; 0x74 a784: 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); a786: 2100 movs r1, #0 a788: a812 add r0, sp, #72 ; 0x48 a78a: 4b89 ldr r3, [pc, #548] ; (a9b0 ) a78c: 4698 mov r8, r3 a78e: 4798 blx r3 a790: 900b str r0, [sp, #44] ; 0x2c int16_t mask_right_id = lv_draw_mask_add(&mask_right_param, NULL); a792: 2100 movs r1, #0 a794: a81d add r0, sp, #116 ; 0x74 a796: 47c0 blx r8 a798: 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) { a79a: 7a63 ldrb r3, [r4, #9] a79c: 06db lsls r3, r3, #27 a79e: d400 bmi.n a7a2 a7a0: e2ac b.n acfc int16_t mask_bottom_id = LV_MASK_ID_INV; a7a2: 2301 movs r3, #1 a7a4: 425b negs r3, r3 a7a6: 930d str r3, [sp, #52] ; 0x34 int16_t mask_top_id = LV_MASK_ID_INV; a7a8: 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(); a7aa: 4b82 ldr r3, [pc, #520] ; (a9b4 ) a7ac: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a7ae: 4b82 ldr r3, [pc, #520] ; (a9b8 ) a7b0: 4798 blx r3 a7b2: 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; a7b4: 8a02 ldrh r2, [r0, #16] a7b6: a80e add r0, sp, #56 ; 0x38 a7b8: 8805 ldrh r5, [r0, #0] a7ba: 1aad subs r5, r5, r2 a7bc: b2ab uxth r3, r5 a7be: 8003 strh r3, [r0, #0] draw_area.y1 -= disp_area->y1; a7c0: 4649 mov r1, r9 a7c2: 8a49 ldrh r1, [r1, #18] a7c4: 8845 ldrh r5, [r0, #2] a7c6: 1a6d subs r5, r5, r1 a7c8: 8045 strh r5, [r0, #2] draw_area.x2 -= disp_area->x1; a7ca: 8885 ldrh r5, [r0, #4] a7cc: 1aad subs r5, r5, r2 a7ce: b2ad uxth r5, r5 a7d0: 8085 strh r5, [r0, #4] draw_area.y2 -= disp_area->y1; a7d2: 88c2 ldrh r2, [r0, #6] a7d4: 1a52 subs r2, r2, r1 a7d6: 80c2 strh r2, [r0, #6] a7d8: 3501 adds r5, #1 a7da: 1aed subs r5, r5, r3 a7dc: 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); a7de: 4b77 ldr r3, [pc, #476] ; (a9bc ) a7e0: 4798 blx r3 a7e2: 23e0 movs r3, #224 ; 0xe0 a7e4: 33ff adds r3, #255 ; 0xff a7e6: 4298 cmp r0, r3 a7e8: d800 bhi.n a7ec a7ea: e2b3 b.n ad54 a7ec: 23f0 movs r3, #240 ; 0xf0 a7ee: 005b lsls r3, r3, #1 a7f0: 469b mov fp, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(mask_buf_size); a7f2: 4658 mov r0, fp a7f4: 4b72 ldr r3, [pc, #456] ; (a9c0 ) a7f6: 4798 blx r3 a7f8: 4680 mov r8, r0 lv_area_t fill_area; fill_area.x1 = draw_area.x1 + disp_area->x1; a7fa: 464b mov r3, r9 a7fc: 8a1b ldrh r3, [r3, #16] a7fe: af0e add r7, sp, #56 ; 0x38 a800: 883a ldrh r2, [r7, #0] a802: 189a adds r2, r3, r2 a804: b212 sxth r2, r2 a806: 0011 movs r1, r2 a808: 9209 str r2, [sp, #36] ; 0x24 a80a: aa10 add r2, sp, #64 ; 0x40 a80c: 8011 strh r1, [r2, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; a80e: 88b9 ldrh r1, [r7, #4] a810: 185b adds r3, r3, r1 a812: 8093 strh r3, [r2, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; a814: 887b ldrh r3, [r7, #2] a816: 4649 mov r1, r9 a818: 8a49 ldrh r1, [r1, #18] a81a: 185b adds r3, r3, r1 a81c: b21b sxth r3, r3 a81e: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; a820: 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); a822: 4659 mov r1, fp a824: 4b67 ldr r3, [pc, #412] ; (a9c4 ) a826: 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++) { a828: 464b mov r3, r9 a82a: 2212 movs r2, #18 a82c: 5e9a ldrsh r2, [r3, r2] a82e: 2302 movs r3, #2 a830: 5efe ldrsh r6, [r7, r3] a832: 18b6 adds r6, r6, r2 a834: 2106 movs r1, #6 a836: 5e7b ldrsh r3, [r7, r1] a838: 189b adds r3, r3, r2 a83a: 429e cmp r6, r3 a83c: dd00 ble.n a840 a83e: e2ec b.n ae1a a840: 2700 movs r7, #0 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); a842: 4b61 ldr r3, [pc, #388] ; (a9c8 ) a844: 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, a846: 0023 movs r3, r4 a848: 4644 mov r4, r8 a84a: 4698 mov r8, r3 a84c: e2d0 b.n adf0 if(point1->x == point2->x && point1->y == point2->y) return; a84e: 2502 movs r5, #2 a850: 5f55 ldrsh r5, [r2, r5] a852: 0032 movs r2, r6 a854: 2602 movs r6, #2 a856: 5f92 ldrsh r2, [r2, r6] a858: 4295 cmp r5, r2 a85a: d000 beq.n a85e a85c: e6cb b.n a5f6 a85e: e303 b.n ae68 lv_opa_t opa = dsc->opa; a860: 7a23 ldrb r3, [r4, #8] a862: 4698 mov r8, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); a864: 4b53 ldr r3, [pc, #332] ; (a9b4 ) a866: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); a868: 4b53 ldr r3, [pc, #332] ; (a9b8 ) a86a: 4798 blx r3 a86c: 4681 mov r9, r0 int32_t w = dsc->width - 1; a86e: 2202 movs r2, #2 a870: 5ea3 ldrsh r3, [r4, r2] a872: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; a874: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ a876: 2501 movs r5, #1 a878: 401d ands r5, r3 a87a: 19ad adds r5, r5, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; a87c: 2306 movs r3, #6 a87e: 5ee2 ldrsh r2, [r4, r3] a880: 2300 movs r3, #0 a882: 2a00 cmp r2, #0 a884: d004 beq.n a890 a886: 2204 movs r2, #4 a888: 5ea3 ldrsh r3, [r4, r2] a88a: 1e5a subs r2, r3, #1 a88c: 4193 sbcs r3, r2 a88e: b2db uxtb r3, r3 a890: 001f movs r7, r3 a892: 9309 str r3, [sp, #36] ; 0x24 if(lv_draw_mask_get_cnt()) simple_mode = false; a894: 4b4d ldr r3, [pc, #308] ; (a9cc ) a896: 4798 blx r3 a898: 2100 movs r1, #0 a89a: 2800 cmp r0, #0 a89c: d101 bne.n a8a2 else if(dashed) simple_mode = false; a89e: 3101 adds r1, #1 a8a0: 4079 eors r1, r7 draw_area.x1 = LV_MATH_MIN(point1->x, point2->x); a8a2: 9b06 ldr r3, [sp, #24] a8a4: 2200 movs r2, #0 a8a6: 5e9b ldrsh r3, [r3, r2] a8a8: 9a05 ldr r2, [sp, #20] a8aa: 2000 movs r0, #0 a8ac: 5e10 ldrsh r0, [r2, r0] a8ae: 1c1a adds r2, r3, #0 a8b0: 4283 cmp r3, r0 a8b2: dd00 ble.n a8b6 a8b4: 1c02 adds r2, r0, #0 a8b6: af28 add r7, sp, #160 ; 0xa0 a8b8: 803a strh r2, [r7, #0] draw_area.x2 = LV_MATH_MAX(point1->x, point2->x) - 1; a8ba: 1c1a adds r2, r3, #0 a8bc: 4283 cmp r3, r0 a8be: da00 bge.n a8c2 a8c0: 1c02 adds r2, r0, #0 a8c2: 3a01 subs r2, #1 a8c4: ab28 add r3, sp, #160 ; 0xa0 a8c6: 809a strh r2, [r3, #4] draw_area.y1 = point1->y - w_half1; a8c8: 9b05 ldr r3, [sp, #20] a8ca: 885b ldrh r3, [r3, #2] a8cc: aa28 add r2, sp, #160 ; 0xa0 a8ce: 1b5d subs r5, r3, r5 a8d0: 8055 strh r5, [r2, #2] draw_area.y2 = point1->y + w_half0; a8d2: 199e adds r6, r3, r6 a8d4: 80d6 strh r6, [r2, #6] if(simple_mode) { a8d6: 2900 cmp r1, #0 a8d8: d00e beq.n a8f8 _lv_blend_fill(clip, &draw_area, a8da: 8822 ldrh r2, [r4, #0] dsc->blend_mode); a8dc: 7a63 ldrb r3, [r4, #9] a8de: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &draw_area, a8e0: 0f9b lsrs r3, r3, #30 a8e2: 9302 str r3, [sp, #8] a8e4: 4643 mov r3, r8 a8e6: 9301 str r3, [sp, #4] a8e8: 2301 movs r3, #1 a8ea: 9300 str r3, [sp, #0] a8ec: 2300 movs r3, #0 a8ee: a928 add r1, sp, #160 ; 0xa0 a8f0: a848 add r0, sp, #288 ; 0x120 a8f2: 4d37 ldr r5, [pc, #220] ; (a9d0 ) a8f4: 47a8 blx r5 a8f6: e2b3 b.n ae60 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); a8f8: aa28 add r2, sp, #160 ; 0xa0 a8fa: a948 add r1, sp, #288 ; 0x120 a8fc: 0010 movs r0, r2 a8fe: 4b28 ldr r3, [pc, #160] ; (a9a0 ) a900: 4798 blx r3 if(!is_common) return; a902: 2800 cmp r0, #0 a904: d100 bne.n a908 a906: e2ab b.n ae60 draw_area.x1 -= disp_area->x1; a908: aa28 add r2, sp, #160 ; 0xa0 a90a: 2300 movs r3, #0 a90c: 5ed7 ldrsh r7, [r2, r3] a90e: 464b mov r3, r9 a910: 2110 movs r1, #16 a912: 5e5b ldrsh r3, [r3, r1] a914: 469b mov fp, r3 a916: 4669 mov r1, sp a918: 840b strh r3, [r1, #32] a91a: 8c0b ldrh r3, [r1, #32] a91c: 1af9 subs r1, r7, r3 a91e: b289 uxth r1, r1 a920: 4688 mov r8, r1 a922: b209 sxth r1, r1 a924: 468a mov sl, r1 a926: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; a928: 2002 movs r0, #2 a92a: 5e11 ldrsh r1, [r2, r0] a92c: 464d mov r5, r9 a92e: 8a6d ldrh r5, [r5, #18] a930: 46ac mov ip, r5 a932: 1b4d subs r5, r1, r5 a934: 8055 strh r5, [r2, #2] draw_area.x2 -= disp_area->x1; a936: 2004 movs r0, #4 a938: 5e16 ldrsh r6, [r2, r0] a93a: 1af3 subs r3, r6, r3 a93c: b29b uxth r3, r3 a93e: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; a940: 88d5 ldrh r5, [r2, #6] a942: 4660 mov r0, ip a944: 1a2d subs r5, r5, r0 a946: 80d5 strh r5, [r2, #6] a948: 3301 adds r3, #1 a94a: 4642 mov r2, r8 a94c: 1a9b subs r3, r3, r2 a94e: b21b sxth r3, r3 a950: 930b str r3, [sp, #44] ; 0x2c fill_area.x1 = draw_area.x1 + disp_area->x1; a952: ab33 add r3, sp, #204 ; 0xcc a954: 801f strh r7, [r3, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; a956: 809e strh r6, [r3, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; a958: 8059 strh r1, [r3, #2] fill_area.y2 = fill_area.y1; a95a: 80d9 strh r1, [r3, #6] if(dashed) { a95c: 2100 movs r1, #0 a95e: 9b09 ldr r3, [sp, #36] ; 0x24 a960: 2b00 cmp r3, #0 a962: d008 beq.n a976 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); a964: 4650 mov r0, sl a966: 4458 add r0, fp a968: 2306 movs r3, #6 a96a: 5ee1 ldrsh r1, [r4, r3] a96c: 2204 movs r2, #4 a96e: 5ea3 ldrsh r3, [r4, r2] a970: 18c9 adds r1, r1, r3 a972: 4b18 ldr r3, [pc, #96] ; (a9d4 ) a974: 4798 blx r3 a976: b20b sxth r3, r1 a978: 930c str r3, [sp, #48] ; 0x30 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); a97a: 980b ldr r0, [sp, #44] ; 0x2c a97c: 0007 movs r7, r0 a97e: 4b10 ldr r3, [pc, #64] ; (a9c0 ) a980: 4798 blx r3 a982: 9008 str r0, [sp, #32] for(h = draw_area.y1; h <= draw_area.y2; h++) { a984: ab28 add r3, sp, #160 ; 0xa0 a986: 2202 movs r2, #2 a988: 5e9e ldrsh r6, [r3, r2] a98a: 2206 movs r2, #6 a98c: 5e9b ldrsh r3, [r3, r2] a98e: 42b3 cmp r3, r6 a990: da00 bge.n a994 a992: e077 b.n aa84 _lv_memset_ff(mask_buf, draw_area_w); a994: 4b0b ldr r3, [pc, #44] ; (a9c4 ) a996: 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); a998: 4b0b ldr r3, [pc, #44] ; (a9c8 ) a99a: 469a mov sl, r3 a99c: 970a str r7, [sp, #40] ; 0x28 a99e: e050 b.n aa42 a9a0: 0001140b .word 0x0001140b a9a4: 0001c1b9 .word 0x0001c1b9 a9a8: 000263b0 .word 0x000263b0 a9ac: 0000bb91 .word 0x0000bb91 a9b0: 0000ba75 .word 0x0000ba75 a9b4: 00005591 .word 0x00005591 a9b8: 00010e75 .word 0x00010e75 a9bc: 000113ef .word 0x000113ef a9c0: 000127a1 .word 0x000127a1 a9c4: 00012a19 .word 0x00012a19 a9c8: 0000bad1 .word 0x0000bad1 a9cc: 0000bb6d .word 0x0000bb6d a9d0: 00006fed .word 0x00006fed a9d4: 0001c385 .word 0x0001c385 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { a9d8: 2606 movs r6, #6 a9da: 5fa5 ldrsh r5, [r4, r6] a9dc: 18ed adds r5, r5, r3 dash_cnt = 0; a9de: 000b movs r3, r1 else if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { a9e0: 42aa cmp r2, r5 a9e2: da02 bge.n a9ea mask_buf[i] = 0x00; a9e4: 9b08 ldr r3, [sp, #32] a9e6: 5419 strb r1, [r3, r0] a9e8: 0013 movs r3, r2 for(i = 0; i < draw_area_w; i++, dash_cnt++) { a9ea: 3001 adds r0, #1 a9ec: 3301 adds r3, #1 a9ee: b21a sxth r2, r3 a9f0: 4287 cmp r7, r0 a9f2: d907 bls.n aa04 if(dash_cnt <= dsc->dash_width) { a9f4: 2504 movs r5, #4 a9f6: 5f63 ldrsh r3, [r4, r5] a9f8: 4293 cmp r3, r2 a9fa: dbed blt.n a9d8 int16_t diff = dsc->dash_width - dash_cnt; a9fc: 1a9a subs r2, r3, r2 i += diff; a9fe: b212 sxth r2, r2 aa00: 1880 adds r0, r0, r2 aa02: e7f2 b.n a9ea aa04: 970a str r7, [sp, #40] ; 0x28 aa06: 4666 mov r6, ip mask_res = LV_DRAW_MASK_RES_CHANGED; aa08: 2002 movs r0, #2 _lv_blend_fill(clip, &fill_area, aa0a: 8822 ldrh r2, [r4, #0] aa0c: ad33 add r5, sp, #204 ; 0xcc dsc->blend_mode); aa0e: 7a63 ldrb r3, [r4, #9] aa10: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &fill_area, aa12: 0f9b lsrs r3, r3, #30 aa14: 9302 str r3, [sp, #8] aa16: 7a23 ldrb r3, [r4, #8] aa18: 9301 str r3, [sp, #4] aa1a: 9000 str r0, [sp, #0] aa1c: 9b08 ldr r3, [sp, #32] aa1e: 0029 movs r1, r5 aa20: a848 add r0, sp, #288 ; 0x120 aa22: 4fd1 ldr r7, [pc, #836] ; (ad68 ) aa24: 47b8 blx r7 fill_area.y1++; aa26: 886b ldrh r3, [r5, #2] aa28: 3301 adds r3, #1 aa2a: 806b strh r3, [r5, #2] fill_area.y2++; aa2c: 88eb ldrh r3, [r5, #6] aa2e: 3301 adds r3, #1 aa30: 80eb strh r3, [r5, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { aa32: 3601 adds r6, #1 aa34: ab0a add r3, sp, #40 ; 0x28 aa36: 227e movs r2, #126 ; 0x7e aa38: 189b adds r3, r3, r2 aa3a: 2200 movs r2, #0 aa3c: 5e9b ldrsh r3, [r3, r2] aa3e: 429e cmp r6, r3 aa40: dc20 bgt.n aa84 _lv_memset_ff(mask_buf, draw_area_w); aa42: 9f0a ldr r7, [sp, #40] ; 0x28 aa44: 0039 movs r1, r7 aa46: 9d08 ldr r5, [sp, #32] aa48: 0028 movs r0, r5 aa4a: 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); aa4c: 464b mov r3, r9 aa4e: 8a5a ldrh r2, [r3, #18] aa50: 1992 adds r2, r2, r6 aa52: b212 sxth r2, r2 aa54: 8a19 ldrh r1, [r3, #16] aa56: ab0a add r3, sp, #40 ; 0x28 aa58: 2078 movs r0, #120 ; 0x78 aa5a: 181b adds r3, r3, r0 aa5c: 881b ldrh r3, [r3, #0] aa5e: 18c9 adds r1, r1, r3 aa60: b209 sxth r1, r1 aa62: 9b0b ldr r3, [sp, #44] ; 0x2c aa64: 0028 movs r0, r5 aa66: 47d0 blx sl if(dashed) { aa68: 9b09 ldr r3, [sp, #36] ; 0x24 aa6a: 2b00 cmp r3, #0 aa6c: d0cd beq.n aa0a if(mask_res != LV_DRAW_MASK_RES_TRANSP) { aa6e: 2800 cmp r0, #0 aa70: d0cb beq.n aa0a for(i = 0; i < draw_area_w; i++, dash_cnt++) { aa72: 2f00 cmp r7, #0 aa74: d004 beq.n aa80 aa76: 9a0c ldr r2, [sp, #48] ; 0x30 aa78: 2000 movs r0, #0 dash_cnt = 0; aa7a: 2100 movs r1, #0 aa7c: 46b4 mov ip, r6 aa7e: e7b9 b.n a9f4 mask_res = LV_DRAW_MASK_RES_CHANGED; aa80: 2002 movs r0, #2 aa82: e7c2 b.n aa0a _lv_mem_buf_release(mask_buf); aa84: 9808 ldr r0, [sp, #32] aa86: 4bb9 ldr r3, [pc, #740] ; (ad6c ) aa88: 4798 blx r3 aa8a: e1e9 b.n ae60 lv_opa_t opa = dsc->opa; aa8c: 7a23 ldrb r3, [r4, #8] aa8e: 4698 mov r8, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); aa90: 4bb7 ldr r3, [pc, #732] ; (ad70 ) aa92: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); aa94: 4bb7 ldr r3, [pc, #732] ; (ad74 ) aa96: 4798 blx r3 aa98: 0007 movs r7, r0 int32_t w = dsc->width - 1; aa9a: 2202 movs r2, #2 aa9c: 5ea3 ldrsh r3, [r4, r2] aa9e: 3b01 subs r3, #1 int32_t w_half0 = w >> 1; aaa0: 105e asrs r6, r3, #1 int32_t w_half1 = w_half0 + (w & 0x1); /*Compensate rounding error*/ aaa2: 2501 movs r5, #1 aaa4: 401d ands r5, r3 aaa6: 19ad adds r5, r5, r6 bool dashed = dsc->dash_gap && dsc->dash_width ? true : false; aaa8: 2306 movs r3, #6 aaaa: 5ee2 ldrsh r2, [r4, r3] aaac: 2300 movs r3, #0 aaae: 2a00 cmp r2, #0 aab0: d004 beq.n aabc aab2: 2204 movs r2, #4 aab4: 5ea3 ldrsh r3, [r4, r2] aab6: 1e5a subs r2, r3, #1 aab8: 4193 sbcs r3, r2 aaba: b2db uxtb r3, r3 aabc: 4699 mov r9, r3 aabe: 930a str r3, [sp, #40] ; 0x28 if(lv_draw_mask_get_cnt()) simple_mode = false; aac0: 4bad ldr r3, [pc, #692] ; (ad78 ) aac2: 4798 blx r3 aac4: 2100 movs r1, #0 aac6: 2800 cmp r0, #0 aac8: d102 bne.n aad0 else if(dashed) simple_mode = false; aaca: 3101 adds r1, #1 aacc: 464b mov r3, r9 aace: 4059 eors r1, r3 draw_area.x1 = point1->x - w_half1; aad0: 9805 ldr r0, [sp, #20] aad2: 8802 ldrh r2, [r0, #0] aad4: ab28 add r3, sp, #160 ; 0xa0 aad6: 1b55 subs r5, r2, r5 aad8: 801d strh r5, [r3, #0] draw_area.x2 = point1->x + w_half0; aada: 1996 adds r6, r2, r6 aadc: 809e strh r6, [r3, #4] draw_area.y1 = LV_MATH_MIN(point1->y, point2->y); aade: 9a06 ldr r2, [sp, #24] aae0: 2502 movs r5, #2 aae2: 5f52 ldrsh r2, [r2, r5] aae4: 2502 movs r5, #2 aae6: 5f45 ldrsh r5, [r0, r5] aae8: 1c10 adds r0, r2, #0 aaea: 42aa cmp r2, r5 aaec: dd00 ble.n aaf0 aaee: 1c28 adds r0, r5, #0 aaf0: 8058 strh r0, [r3, #2] draw_area.y2 = LV_MATH_MAX(point1->y, point2->y) - 1; aaf2: 1c13 adds r3, r2, #0 aaf4: 42aa cmp r2, r5 aaf6: da00 bge.n aafa aaf8: 1c2b adds r3, r5, #0 aafa: 3b01 subs r3, #1 aafc: aa28 add r2, sp, #160 ; 0xa0 aafe: 80d3 strh r3, [r2, #6] if(simple_mode) { ab00: 2900 cmp r1, #0 ab02: d00e beq.n ab22 _lv_blend_fill(clip, &draw_area, ab04: 8822 ldrh r2, [r4, #0] dsc->blend_mode); ab06: 7a63 ldrb r3, [r4, #9] ab08: 079b lsls r3, r3, #30 _lv_blend_fill(clip, &draw_area, ab0a: 0f9b lsrs r3, r3, #30 ab0c: 9302 str r3, [sp, #8] ab0e: 4643 mov r3, r8 ab10: 9301 str r3, [sp, #4] ab12: 2301 movs r3, #1 ab14: 9300 str r3, [sp, #0] ab16: 2300 movs r3, #0 ab18: a928 add r1, sp, #160 ; 0xa0 ab1a: a848 add r0, sp, #288 ; 0x120 ab1c: 4d92 ldr r5, [pc, #584] ; (ad68 ) ab1e: 47a8 blx r5 ab20: e19e b.n ae60 is_common = _lv_area_intersect(&draw_area, clip, &draw_area); ab22: aa28 add r2, sp, #160 ; 0xa0 ab24: a948 add r1, sp, #288 ; 0x120 ab26: 0010 movs r0, r2 ab28: 4b94 ldr r3, [pc, #592] ; (ad7c ) ab2a: 4798 blx r3 if(!is_common) return; ab2c: 2800 cmp r0, #0 ab2e: d100 bne.n ab32 ab30: e196 b.n ae60 draw_area.x1 -= vdb->area.x1; ab32: aa28 add r2, sp, #160 ; 0xa0 ab34: 2100 movs r1, #0 ab36: 5e53 ldrsh r3, [r2, r1] ab38: 469c mov ip, r3 ab3a: 8a3b ldrh r3, [r7, #16] ab3c: 4661 mov r1, ip ab3e: 1ac9 subs r1, r1, r3 ab40: b289 uxth r1, r1 ab42: 8011 strh r1, [r2, #0] draw_area.y1 -= vdb->area.y1; ab44: 2502 movs r5, #2 ab46: 5f50 ldrsh r0, [r2, r5] ab48: 8a7d ldrh r5, [r7, #18] ab4a: 46a8 mov r8, r5 ab4c: 1b45 subs r5, r0, r5 ab4e: 8055 strh r5, [r2, #2] draw_area.x2 -= vdb->area.x1; ab50: 2504 movs r5, #4 ab52: 5f56 ldrsh r6, [r2, r5] ab54: 1af3 subs r3, r6, r3 ab56: b29b uxth r3, r3 ab58: 4699 mov r9, r3 ab5a: 8093 strh r3, [r2, #4] draw_area.y2 -= vdb->area.y1; ab5c: 88d5 ldrh r5, [r2, #6] ab5e: 4643 mov r3, r8 ab60: 1aed subs r5, r5, r3 ab62: 80d5 strh r5, [r2, #6] ab64: 464b mov r3, r9 ab66: 3301 adds r3, #1 ab68: 1a59 subs r1, r3, r1 ab6a: b20b sxth r3, r1 ab6c: 001a movs r2, r3 ab6e: 930b str r3, [sp, #44] ; 0x2c fill_area.x1 = draw_area.x1 + disp_area->x1; ab70: ab33 add r3, sp, #204 ; 0xcc ab72: 4661 mov r1, ip ab74: 8019 strh r1, [r3, #0] fill_area.x2 = draw_area.x2 + disp_area->x1; ab76: 809e strh r6, [r3, #4] fill_area.y1 = draw_area.y1 + disp_area->y1; ab78: 8058 strh r0, [r3, #2] fill_area.y2 = fill_area.y1; ab7a: 80d8 strh r0, [r3, #6] lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); ab7c: 920c str r2, [sp, #48] ; 0x30 ab7e: 0010 movs r0, r2 ab80: 4b7f ldr r3, [pc, #508] ; (ad80 ) ab82: 4798 blx r3 ab84: 9008 str r0, [sp, #32] if(dashed) { ab86: 2100 movs r1, #0 ab88: 9b0a ldr r3, [sp, #40] ; 0x28 ab8a: 2b00 cmp r3, #0 ab8c: d00c beq.n aba8 dash_start = (vdb->area.x1 + draw_area.x1) % (dsc->dash_gap + dsc->dash_width); ab8e: 2310 movs r3, #16 ab90: 5ef8 ldrsh r0, [r7, r3] ab92: ab28 add r3, sp, #160 ; 0xa0 ab94: 2200 movs r2, #0 ab96: 5e9b ldrsh r3, [r3, r2] ab98: 18c0 adds r0, r0, r3 ab9a: 2306 movs r3, #6 ab9c: 5ee1 ldrsh r1, [r4, r3] ab9e: 2204 movs r2, #4 aba0: 5ea3 ldrsh r3, [r4, r2] aba2: 18c9 adds r1, r1, r3 aba4: 4b77 ldr r3, [pc, #476] ; (ad84 ) aba6: 4798 blx r3 aba8: b20b sxth r3, r1 abaa: 4699 mov r9, r3 for(h = draw_area.y1; h <= draw_area.y2; h++) { abac: ab28 add r3, sp, #160 ; 0xa0 abae: 2202 movs r2, #2 abb0: 5e9e ldrsh r6, [r3, r2] abb2: 2206 movs r2, #6 abb4: 5e9b ldrsh r3, [r3, r2] abb6: 429e cmp r6, r3 abb8: dc4b bgt.n ac52 _lv_memset_ff(mask_buf, draw_area_w); abba: 4b73 ldr r3, [pc, #460] ; (ad88 ) abbc: 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); abbe: 4b73 ldr r3, [pc, #460] ; (ad8c ) abc0: 469a mov sl, r3 abc2: 46b8 mov r8, r7 abc4: 464b mov r3, r9 abc6: 9309 str r3, [sp, #36] ; 0x24 abc8: e01d b.n ac06 dash_cnt ++; abca: 9f09 ldr r7, [sp, #36] ; 0x24 abcc: 3701 adds r7, #1 abce: b23b sxth r3, r7 abd0: 9309 str r3, [sp, #36] ; 0x24 _lv_blend_fill(clip, &fill_area, abd2: 8822 ldrh r2, [r4, #0] abd4: ad33 add r5, sp, #204 ; 0xcc abd6: 2300 movs r3, #0 abd8: 9302 str r3, [sp, #8] abda: 7a23 ldrb r3, [r4, #8] abdc: 9301 str r3, [sp, #4] abde: 9000 str r0, [sp, #0] abe0: 9b08 ldr r3, [sp, #32] abe2: 0029 movs r1, r5 abe4: a848 add r0, sp, #288 ; 0x120 abe6: 4f60 ldr r7, [pc, #384] ; (ad68 ) abe8: 47b8 blx r7 fill_area.y1++; abea: 886b ldrh r3, [r5, #2] abec: 3301 adds r3, #1 abee: 806b strh r3, [r5, #2] fill_area.y2++; abf0: 88eb ldrh r3, [r5, #6] abf2: 3301 adds r3, #1 abf4: 80eb strh r3, [r5, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { abf6: 3601 adds r6, #1 abf8: ab0a add r3, sp, #40 ; 0x28 abfa: 227e movs r2, #126 ; 0x7e abfc: 189b adds r3, r3, r2 abfe: 2200 movs r2, #0 ac00: 5e9b ldrsh r3, [r3, r2] ac02: 429e cmp r6, r3 ac04: dc25 bgt.n ac52 _lv_memset_ff(mask_buf, draw_area_w); ac06: 990c ldr r1, [sp, #48] ; 0x30 ac08: 9d08 ldr r5, [sp, #32] ac0a: 0028 movs r0, r5 ac0c: 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); ac0e: 4643 mov r3, r8 ac10: 8a5a ldrh r2, [r3, #18] ac12: 1992 adds r2, r2, r6 ac14: b212 sxth r2, r2 ac16: 8a19 ldrh r1, [r3, #16] ac18: ab0a add r3, sp, #40 ; 0x28 ac1a: 2078 movs r0, #120 ; 0x78 ac1c: 181b adds r3, r3, r0 ac1e: 881b ldrh r3, [r3, #0] ac20: 18c9 adds r1, r1, r3 ac22: b209 sxth r1, r1 ac24: 9b0b ldr r3, [sp, #44] ; 0x2c ac26: 0028 movs r0, r5 ac28: 47d0 blx sl if(dashed) { ac2a: 9b0a ldr r3, [sp, #40] ; 0x28 ac2c: 2b00 cmp r3, #0 ac2e: d0d0 beq.n abd2 if(mask_res != LV_DRAW_MASK_RES_TRANSP) { ac30: 2800 cmp r0, #0 ac32: d0ca beq.n abca if(dash_cnt > dsc->dash_width) { ac34: 2304 movs r3, #4 ac36: 5ee2 ldrsh r2, [r4, r3] ac38: 9b09 ldr r3, [sp, #36] ; 0x24 ac3a: 429a cmp r2, r3 ac3c: da00 bge.n ac40 mask_res = LV_DRAW_MASK_RES_TRANSP; ac3e: 2000 movs r0, #0 if(dash_cnt >= dsc->dash_gap + dsc->dash_width) { ac40: 2106 movs r1, #6 ac42: 5e63 ldrsh r3, [r4, r1] ac44: 189b adds r3, r3, r2 ac46: 9a09 ldr r2, [sp, #36] ; 0x24 ac48: 429a cmp r2, r3 ac4a: dbbe blt.n abca dash_cnt = 0; ac4c: 2300 movs r3, #0 ac4e: 9309 str r3, [sp, #36] ; 0x24 ac50: e7bb b.n abca _lv_mem_buf_release(mask_buf); ac52: 9808 ldr r0, [sp, #32] ac54: 4b45 ldr r3, [pc, #276] ; (ad6c ) ac56: 4798 blx r3 ac58: e102 b.n ae60 else wcorr_i = (LV_MATH_ABS(xdiff) << 5) / LV_MATH_ABS(ydiff); ac5a: 464b mov r3, r9 ac5c: 0158 lsls r0, r3, #5 ac5e: 4659 mov r1, fp ac60: 4b4b ldr r3, [pc, #300] ; (ad90 ) ac62: 4798 blx r3 ac64: e52d b.n a6c2 lv_draw_mask_line_points_init(&mask_left_param, p1.x, p1.y + w_half1, p2.x, p2.y + w_half1, ac66: b2b2 uxth r2, r6 ac68: 466b mov r3, sp ac6a: 8d9b ldrh r3, [r3, #44] ; 0x2c ac6c: b2a9 uxth r1, r5 ac6e: 4693 mov fp, r2 ac70: 18d2 adds r2, r2, r3 ac72: b212 sxth r2, r2 ac74: 2000 movs r0, #0 ac76: 9001 str r0, [sp, #4] ac78: 910b str r1, [sp, #44] ; 0x2c ac7a: 468c mov ip, r1 ac7c: 4463 add r3, ip ac7e: b21b sxth r3, r3 ac80: 9300 str r3, [sp, #0] ac82: 4653 mov r3, sl ac84: 9908 ldr r1, [sp, #32] ac86: a812 add r0, sp, #72 ; 0x48 ac88: 4f42 ldr r7, [pc, #264] ; (ad94 ) ac8a: 47b8 blx r7 lv_draw_mask_line_points_init(&mask_right_param, p1.x, p1.y - w_half0, p2.x, p2.y - w_half0, ac8c: 4643 mov r3, r8 ac8e: 466a mov r2, sp ac90: 8613 strh r3, [r2, #48] ; 0x30 ac92: 8e13 ldrh r3, [r2, #48] ; 0x30 ac94: 465a mov r2, fp ac96: 1ad2 subs r2, r2, r3 ac98: b212 sxth r2, r2 ac9a: 2101 movs r1, #1 ac9c: 9101 str r1, [sp, #4] ac9e: 990b ldr r1, [sp, #44] ; 0x2c aca0: 1acb subs r3, r1, r3 aca2: b21b sxth r3, r3 aca4: 9300 str r3, [sp, #0] aca6: 4653 mov r3, sl aca8: 9908 ldr r1, [sp, #32] acaa: a81d add r0, sp, #116 ; 0x74 acac: 47b8 blx r7 acae: e56a b.n a786 lv_draw_mask_line_points_init(&mask_left_param, p1.x + w_half1, p1.y, p2.x + w_half1, p2.y, acb0: 466b mov r3, sp acb2: 8c1a ldrh r2, [r3, #32] acb4: 8d99 ldrh r1, [r3, #44] ; 0x2c acb6: 4653 mov r3, sl acb8: 4668 mov r0, sp acba: 8583 strh r3, [r0, #44] ; 0x2c acbc: 8d83 ldrh r3, [r0, #44] ; 0x2c acbe: 469b mov fp, r3 acc0: 18cb adds r3, r1, r3 acc2: b21b sxth r3, r3 acc4: 920b str r2, [sp, #44] ; 0x2c acc6: 4694 mov ip, r2 acc8: 4461 add r1, ip acca: b209 sxth r1, r1 accc: 2200 movs r2, #0 acce: 9201 str r2, [sp, #4] acd0: 9500 str r5, [sp, #0] acd2: 0032 movs r2, r6 acd4: a812 add r0, sp, #72 ; 0x48 acd6: 4f2f ldr r7, [pc, #188] ; (ad94 ) acd8: 47b8 blx r7 lv_draw_mask_line_points_init(&mask_right_param, p1.x - w_half0, p1.y, p2.x - w_half0, p2.y, acda: 4643 mov r3, r8 acdc: 466a mov r2, sp acde: 8613 strh r3, [r2, #48] ; 0x30 ace0: 8e12 ldrh r2, [r2, #48] ; 0x30 ace2: 465b mov r3, fp ace4: 1a9b subs r3, r3, r2 ace6: b21b sxth r3, r3 ace8: 990b ldr r1, [sp, #44] ; 0x2c acea: 1a8a subs r2, r1, r2 acec: b211 sxth r1, r2 acee: 2201 movs r2, #1 acf0: 9201 str r2, [sp, #4] acf2: 9500 str r5, [sp, #0] acf4: 0032 movs r2, r6 acf6: a81d add r0, sp, #116 ; 0x74 acf8: 47b8 blx r7 acfa: e544 b.n a786 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); acfc: 466b mov r3, sp acfe: 8d1b ldrh r3, [r3, #40] ; 0x28 ad00: 4699 mov r9, r3 ad02: 466b mov r3, sp ad04: 8c9b ldrh r3, [r3, #36] ; 0x24 ad06: 4698 mov r8, r3 ad08: 464b mov r3, r9 ad0a: 9908 ldr r1, [sp, #32] ad0c: 1acb subs r3, r1, r3 ad0e: b21b sxth r3, r3 ad10: 2203 movs r2, #3 ad12: 9201 str r2, [sp, #4] ad14: 4642 mov r2, r8 ad16: 1992 adds r2, r2, r6 ad18: b212 sxth r2, r2 ad1a: 9200 str r2, [sp, #0] ad1c: 0032 movs r2, r6 ad1e: a828 add r0, sp, #160 ; 0xa0 ad20: 4e1c ldr r6, [pc, #112] ; (ad94 ) ad22: 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); ad24: 4653 mov r3, sl ad26: 464a mov r2, r9 ad28: 1a9b subs r3, r3, r2 ad2a: b21b sxth r3, r3 ad2c: 2202 movs r2, #2 ad2e: 9201 str r2, [sp, #4] ad30: 4642 mov r2, r8 ad32: 1952 adds r2, r2, r5 ad34: b212 sxth r2, r2 ad36: 9200 str r2, [sp, #0] ad38: 002a movs r2, r5 ad3a: 4651 mov r1, sl ad3c: a833 add r0, sp, #204 ; 0xcc ad3e: 47b0 blx r6 mask_top_id = lv_draw_mask_add(&mask_top_param, NULL); ad40: 2100 movs r1, #0 ad42: a828 add r0, sp, #160 ; 0xa0 ad44: 4d14 ldr r5, [pc, #80] ; (ad98 ) ad46: 47a8 blx r5 ad48: 900a str r0, [sp, #40] ; 0x28 mask_bottom_id = lv_draw_mask_add(&mask_bottom_param, NULL); ad4a: 2100 movs r1, #0 ad4c: a833 add r0, sp, #204 ; 0xcc ad4e: 47a8 blx r5 ad50: 900d str r0, [sp, #52] ; 0x34 ad52: e52a b.n a7aa size_t mask_buf_size = LV_MATH_MIN(lv_area_get_size(&draw_area), LV_HOR_RES_MAX); ad54: a80e add r0, sp, #56 ; 0x38 ad56: 4b11 ldr r3, [pc, #68] ; (ad9c ) ad58: 4798 blx r3 ad5a: 4683 mov fp, r0 ad5c: e549 b.n a7f2 _lv_memset_00(&mask_buf[mask_p], draw_area_w); ad5e: 0029 movs r1, r5 ad60: 9808 ldr r0, [sp, #32] ad62: 4b0f ldr r3, [pc, #60] ; (ada0 ) ad64: 4798 blx r3 ad66: e04c b.n ae02 ad68: 00006fed .word 0x00006fed ad6c: 00012465 .word 0x00012465 ad70: 00005591 .word 0x00005591 ad74: 00010e75 .word 0x00010e75 ad78: 0000bb6d .word 0x0000bb6d ad7c: 0001140b .word 0x0001140b ad80: 000127a1 .word 0x000127a1 ad84: 0001c385 .word 0x0001c385 ad88: 00012a19 .word 0x00012a19 ad8c: 0000bad1 .word 0x0000bad1 ad90: 0001c1b9 .word 0x0001c1b9 ad94: 0000bb91 .word 0x0000bb91 ad98: 0000ba75 .word 0x0000ba75 ad9c: 000113ef .word 0x000113ef ada0: 00012975 .word 0x00012975 _lv_blend_fill(&fill_area, clip, ada4: 4643 mov r3, r8 ada6: 881a ldrh r2, [r3, #0] dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); ada8: 7a5b ldrb r3, [r3, #9] adaa: 079b lsls r3, r3, #30 _lv_blend_fill(&fill_area, clip, adac: 0f9b lsrs r3, r3, #30 adae: 9302 str r3, [sp, #8] adb0: 4643 mov r3, r8 adb2: 7a1b ldrb r3, [r3, #8] adb4: 9301 str r3, [sp, #4] adb6: 2302 movs r3, #2 adb8: 9300 str r3, [sp, #0] adba: 0023 movs r3, r4 adbc: a948 add r1, sp, #288 ; 0x120 adbe: a810 add r0, sp, #64 ; 0x40 adc0: 4f4d ldr r7, [pc, #308] ; (aef8 ) adc2: 47b8 blx r7 fill_area.y1 = fill_area.y2 + 1; adc4: ab0a add r3, sp, #40 ; 0x28 adc6: 8bdb ldrh r3, [r3, #30] adc8: 3301 adds r3, #1 adca: b21b sxth r3, r3 adcc: aa0a add r2, sp, #40 ; 0x28 adce: 8353 strh r3, [r2, #26] fill_area.y2 = fill_area.y1; add0: 83d3 strh r3, [r2, #30] mask_p = 0; _lv_memset_ff(mask_buf, mask_buf_size); add2: 4659 mov r1, fp add4: 0020 movs r0, r4 add6: 4b49 ldr r3, [pc, #292] ; (aefc ) add8: 4798 blx r3 mask_p = 0; adda: 2700 movs r7, #0 for(h = draw_area.y1 + disp_area->y1; h <= draw_area.y2 + disp_area->y1; h++) { addc: 3601 adds r6, #1 adde: ab0e add r3, sp, #56 ; 0x38 ade0: 2206 movs r2, #6 ade2: 5e9b ldrsh r3, [r3, r2] ade4: 464a mov r2, r9 ade6: 2112 movs r1, #18 ade8: 5e52 ldrsh r2, [r2, r1] adea: 189b adds r3, r3, r2 adec: 429e cmp r6, r3 adee: dc11 bgt.n ae14 lv_draw_mask_res_t mask_res = lv_draw_mask_apply(&mask_buf[mask_p], x, h, draw_area_w); adf0: 19e3 adds r3, r4, r7 adf2: 0018 movs r0, r3 adf4: 9308 str r3, [sp, #32] adf6: b232 sxth r2, r6 adf8: 002b movs r3, r5 adfa: 9909 ldr r1, [sp, #36] ; 0x24 adfc: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_TRANSP) { adfe: 2800 cmp r0, #0 ae00: d0ad beq.n ad5e mask_p += draw_area_w; ae02: 197f adds r7, r7, r5 if((uint32_t) mask_p + draw_area_w < mask_buf_size) { ae04: 19eb adds r3, r5, r7 ae06: 459b cmp fp, r3 ae08: d9cc bls.n ada4 fill_area.y2 ++; ae0a: aa10 add r2, sp, #64 ; 0x40 ae0c: 88d3 ldrh r3, [r2, #6] ae0e: 3301 adds r3, #1 ae10: 80d3 strh r3, [r2, #6] ae12: e7e3 b.n addc ae14: 4643 mov r3, r8 ae16: 46a0 mov r8, r4 ae18: 001c movs r4, r3 } } /*Flush the last part*/ if(fill_area.y1 != fill_area.y2) { ae1a: aa10 add r2, sp, #64 ; 0x40 ae1c: 2106 movs r1, #6 ae1e: 5e53 ldrsh r3, [r2, r1] ae20: 2102 movs r1, #2 ae22: 5e52 ldrsh r2, [r2, r1] ae24: 429a cmp r2, r3 ae26: d00f beq.n ae48 fill_area.y2--; ae28: a810 add r0, sp, #64 ; 0x40 ae2a: 3b01 subs r3, #1 ae2c: 80c3 strh r3, [r0, #6] _lv_blend_fill(&fill_area, clip, ae2e: 8822 ldrh r2, [r4, #0] dsc->color, mask_buf, LV_DRAW_MASK_RES_CHANGED, dsc->opa, dsc->blend_mode); ae30: 7a63 ldrb r3, [r4, #9] ae32: 079b lsls r3, r3, #30 _lv_blend_fill(&fill_area, clip, ae34: 0f9b lsrs r3, r3, #30 ae36: 9302 str r3, [sp, #8] ae38: 7a23 ldrb r3, [r4, #8] ae3a: 9301 str r3, [sp, #4] ae3c: 2302 movs r3, #2 ae3e: 9300 str r3, [sp, #0] ae40: 4643 mov r3, r8 ae42: a948 add r1, sp, #288 ; 0x120 ae44: 4d2c ldr r5, [pc, #176] ; (aef8 ) ae46: 47a8 blx r5 } _lv_mem_buf_release(mask_buf); ae48: 4640 mov r0, r8 ae4a: 4b2d ldr r3, [pc, #180] ; (af00 ) ae4c: 4798 blx r3 lv_draw_mask_remove_id(mask_left_id); ae4e: 980b ldr r0, [sp, #44] ; 0x2c ae50: 4d2c ldr r5, [pc, #176] ; (af04 ) ae52: 47a8 blx r5 lv_draw_mask_remove_id(mask_right_id); ae54: 980c ldr r0, [sp, #48] ; 0x30 ae56: 47a8 blx r5 lv_draw_mask_remove_id(mask_top_id); ae58: 980a ldr r0, [sp, #40] ; 0x28 ae5a: 47a8 blx r5 lv_draw_mask_remove_id(mask_bottom_id); ae5c: 980d ldr r0, [sp, #52] ; 0x34 ae5e: 47a8 blx r5 if(dsc->round_end || dsc->round_start) { ae60: 7a63 ldrb r3, [r4, #9] ae62: 220c movs r2, #12 ae64: 421a tst r2, r3 ae66: d106 bne.n ae76 } ae68: b04b add sp, #300 ; 0x12c ae6a: bc3c pop {r2, r3, r4, r5} ae6c: 4690 mov r8, r2 ae6e: 4699 mov r9, r3 ae70: 46a2 mov sl, r4 ae72: 46ab mov fp, r5 ae74: bdf0 pop {r4, r5, r6, r7, pc} lv_draw_rect_dsc_init(&cir_dsc); ae76: ad33 add r5, sp, #204 ; 0xcc ae78: 0028 movs r0, r5 ae7a: 4b23 ldr r3, [pc, #140] ; (af08 ) ae7c: 4798 blx r3 cir_dsc.bg_color = dsc->color; ae7e: 8823 ldrh r3, [r4, #0] ae80: 806b strh r3, [r5, #2] cir_dsc.radius = LV_RADIUS_CIRCLE; ae82: 4b22 ldr r3, [pc, #136] ; (af0c ) ae84: 802b strh r3, [r5, #0] cir_dsc.bg_opa = dsc->opa; ae86: 7a23 ldrb r3, [r4, #8] ae88: 732b strb r3, [r5, #12] int32_t r = (dsc->width >> 1); ae8a: 2202 movs r2, #2 ae8c: 5ea3 ldrsh r3, [r4, r2] ae8e: 105e asrs r6, r3, #1 int32_t r_corr = (dsc->width & 1) ? 0 : 1; ae90: 2201 movs r2, #1 ae92: 4053 eors r3, r2 ae94: 2501 movs r5, #1 ae96: 401d ands r5, r3 if(dsc->round_start) { ae98: 7a63 ldrb r3, [r4, #9] ae9a: 075b lsls r3, r3, #29 ae9c: d417 bmi.n aece if(dsc->round_end) { ae9e: 7a63 ldrb r3, [r4, #9] aea0: 071b lsls r3, r3, #28 aea2: d5e1 bpl.n ae68 cir_area.x1 = point2->x - r; aea4: 9906 ldr r1, [sp, #24] aea6: 880a ldrh r2, [r1, #0] aea8: b2b6 uxth r6, r6 aeaa: a828 add r0, sp, #160 ; 0xa0 aeac: 1b93 subs r3, r2, r6 aeae: 8003 strh r3, [r0, #0] cir_area.y1 = point2->y - r; aeb0: 8849 ldrh r1, [r1, #2] aeb2: 1b8b subs r3, r1, r6 aeb4: 8043 strh r3, [r0, #2] cir_area.x2 = point2->x + r - r_corr; aeb6: b2ad uxth r5, r5 aeb8: 1992 adds r2, r2, r6 aeba: 1b52 subs r2, r2, r5 aebc: 8082 strh r2, [r0, #4] cir_area.y2 = point2->y + r - r_corr ; aebe: 1876 adds r6, r6, r1 aec0: 1b76 subs r6, r6, r5 aec2: 80c6 strh r6, [r0, #6] lv_draw_rect(&cir_area, clip, &cir_dsc); aec4: aa33 add r2, sp, #204 ; 0xcc aec6: 9907 ldr r1, [sp, #28] aec8: 4b11 ldr r3, [pc, #68] ; (af10 ) aeca: 4798 blx r3 aecc: e7cc b.n ae68 cir_area.x1 = point1->x - r; aece: 9f05 ldr r7, [sp, #20] aed0: 883a ldrh r2, [r7, #0] aed2: b2b3 uxth r3, r6 aed4: a828 add r0, sp, #160 ; 0xa0 aed6: 1ad1 subs r1, r2, r3 aed8: 8001 strh r1, [r0, #0] cir_area.y1 = point1->y - r; aeda: 887f ldrh r7, [r7, #2] aedc: 1af9 subs r1, r7, r3 aede: 8041 strh r1, [r0, #2] cir_area.x2 = point1->x + r - r_corr; aee0: b2a9 uxth r1, r5 aee2: 18d2 adds r2, r2, r3 aee4: 1a52 subs r2, r2, r1 aee6: 8082 strh r2, [r0, #4] cir_area.y2 = point1->y + r - r_corr ; aee8: 19db adds r3, r3, r7 aeea: 1a5b subs r3, r3, r1 aeec: 80c3 strh r3, [r0, #6] lv_draw_rect(&cir_area, clip, &cir_dsc); aeee: aa33 add r2, sp, #204 ; 0xcc aef0: 9907 ldr r1, [sp, #28] aef2: 4b07 ldr r3, [pc, #28] ; (af10 ) aef4: 4798 blx r3 aef6: e7d2 b.n ae9e aef8: 00006fed .word 0x00006fed aefc: 00012a19 .word 0x00012a19 af00: 00012465 .word 0x00012465 af04: 0000bb25 .word 0x0000bb25 af08: 0000bfcd .word 0x0000bfcd af0c: 00007fff .word 0x00007fff af10: 0000c071 .word 0x0000c071 0000af14 : **********************/ 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) { af14: b5f8 push {r3, r4, r5, r6, r7, lr} af16: 46de mov lr, fp af18: 4657 mov r7, sl af1a: 464e mov r6, r9 af1c: 4645 mov r5, r8 af1e: b5e0 push {r5, r6, r7, lr} af20: 9c0a ldr r4, [sp, #40] ; 0x28 /*Make to points relative to the vertex*/ abs_y -= p->origo.y; af22: 8aa5 ldrh r5, [r4, #20] af24: 1b52 subs r2, r2, r5 af26: b212 sxth r2, r2 abs_x -= p->origo.x; af28: 8a65 ldrh r5, [r4, #18] af2a: 1b4d subs r5, r1, r5 af2c: b22d sxth r5, r5 /*Handle special cases*/ if(p->steep == 0) { af2e: 6a21 ldr r1, [r4, #32] af30: 2900 cmp r1, #0 af32: d140 bne.n afb6 /*Horizontal*/ if(p->flat) { af34: 3128 adds r1, #40 ; 0x28 af36: 5c61 ldrb r1, [r4, r1] af38: 07c9 lsls r1, r1, #31 af3a: d511 bpl.n af60 /*Non sense: Can't be on the right/left of a horizontal line*/ if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT || af3c: 7c21 ldrb r1, [r4, #16] af3e: 2303 movs r3, #3 af40: 400b ands r3, r1 af42: 2b01 cmp r3, #1 af44: d800 bhi.n af48 af46: e1c5 b.n b2d4 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; af48: 2b02 cmp r3, #2 af4a: d006 beq.n af5a 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; af4c: 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; af4e: 2b03 cmp r3, #3 af50: d145 bne.n afde af52: 17d4 asrs r4, r2, #31 af54: 1aa4 subs r4, r4, r2 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; af56: 0fe4 lsrs r4, r4, #31 af58: e041 b.n afde else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP && abs_y + 1 < 0) return LV_DRAW_MASK_RES_FULL_COVER; af5a: 3201 adds r2, #1 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; af5c: 0fd4 lsrs r4, r2, #31 af5e: e03e b.n afde } } /*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 || af60: 7c21 ldrb r1, [r4, #16] af62: 2203 movs r2, #3 af64: 400a ands r2, r1 af66: 1e91 subs r1, r2, #2 af68: 2901 cmp r1, #1 af6a: d800 bhi.n af6e af6c: e1b4 b.n b2d8 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; af6e: 2a01 cmp r2, #1 af70: d00f beq.n af92 else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) { af72: 2a00 cmp r2, #0 af74: d110 bne.n af98 if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; af76: 18e9 adds r1, r5, r3 af78: d500 bpl.n af7c af7a: e1af b.n b2dc else { int32_t k = - abs_x; af7c: 426d negs r5, r5 if(k < 0) return LV_DRAW_MASK_RES_TRANSP; af7e: 2d00 cmp r5, #0 af80: da00 bge.n af84 af82: e1ad b.n b2e0 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); return LV_DRAW_MASK_RES_CHANGED; af84: 2402 movs r4, #2 if(k >= 0 && k < len) _lv_memset_00(&mask_buf[k], len - k); af86: 42ab cmp r3, r5 af88: dd29 ble.n afde af8a: 1940 adds r0, r0, r5 af8c: 4bbd ldr r3, [pc, #756] ; (b284 ) af8e: 4798 blx r3 af90: e025 b.n afde else if(p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_MASK_RES_FULL_COVER; af92: 2401 movs r4, #1 af94: 2d00 cmp r5, #0 af96: dc22 bgt.n afde } } else { if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; af98: 001a movs r2, r3 af9a: 42dd cmn r5, r3 af9c: d500 bpl.n afa0 af9e: e1a1 b.n b2e4 else { int32_t k = - abs_x; afa0: 4269 negs r1, r5 afa2: 43cb mvns r3, r1 afa4: 17db asrs r3, r3, #31 afa6: 4019 ands r1, r3 if(k < 0) k = 0; if(k >= len) return LV_DRAW_MASK_RES_TRANSP; afa8: 2400 movs r4, #0 afaa: 428a cmp r2, r1 afac: dd17 ble.n afde else if(k >= 0 && k < len) _lv_memset_00(&mask_buf[0], k); afae: 4bb5 ldr r3, [pc, #724] ; (b284 ) afb0: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; afb2: 3402 adds r4, #2 afb4: e013 b.n afde } } } lv_draw_mask_res_t res; if(p->flat) { afb6: 2128 movs r1, #40 ; 0x28 afb8: 5c61 ldrb r1, [r4, r1] afba: 468b mov fp, r1 afbc: 07c9 lsls r1, r1, #31 afbe: d415 bmi.n afec { 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; afc0: 69a7 ldr r7, [r4, #24] afc2: 0011 movs r1, r2 afc4: 4379 muls r1, r7 afc6: 1289 asrs r1, r1, #10 afc8: 468c mov ip, r1 if(p->xy_steep > 0) x_at_y++; afca: 17f9 asrs r1, r7, #31 afcc: 1bc9 subs r1, r1, r7 afce: 0fc9 lsrs r1, r1, #31 afd0: 4461 add r1, ip if(x_at_y < abs_x) { afd2: 428d cmp r5, r1 afd4: dc00 bgt.n afd8 afd6: e096 b.n b106 if(p->inv) { afd8: 465b mov r3, fp afda: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; afdc: 0fe4 lsrs r4, r4, #31 } afde: 0020 movs r0, r4 afe0: bc3c pop {r2, r3, r4, r5} afe2: 4690 mov r8, r2 afe4: 4699 mov r9, r3 afe6: 46a2 mov sl, r4 afe8: 46ab mov fp, r5 afea: bdf8 pop {r3, r4, r5, r6, r7, pc} y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; afec: 69e1 ldr r1, [r4, #28] afee: 002f movs r7, r5 aff0: 434f muls r7, r1 aff2: 12bf asrs r7, r7, #10 if(p->yx_steep > 0) { aff4: 2900 cmp r1, #0 aff6: dd06 ble.n b006 if(y_at_x > abs_y) { aff8: 4297 cmp r7, r2 affa: dc00 bgt.n affe affc: e176 b.n b2ec if(p->inv) { affe: 465b mov r3, fp b000: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b002: 0fe4 lsrs r4, r4, #31 b004: e7eb b.n afde if(y_at_x < abs_y) { b006: 4297 cmp r7, r2 b008: db00 blt.n b00c b00a: e1ab b.n b364 if(p->inv) { b00c: 465b mov r3, fp b00e: 079c lsls r4, r3, #30 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b010: 0fe4 lsrs r4, r4, #31 b012: e7e4 b.n afde if(p->inv) { b014: 465b mov r3, fp b016: 085e lsrs r6, r3, #1 b018: 2401 movs r4, #1 b01a: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b01c: 2401 movs r4, #1 b01e: 4034 ands r4, r6 b020: e7dd b.n afde if(p->inv) { b022: 465b mov r3, fp b024: 085e lsrs r6, r3, #1 b026: 2401 movs r4, #1 b028: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b02a: 2401 movs r4, #1 b02c: 4034 ands r4, r6 b02e: e7d6 b.n afde 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; b030: 2100 movs r1, #0 b032: e190 b.n b356 b034: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b036: 464b mov r3, r9 b038: 54c1 strb r1, [r0, r3] px_h -= p->spx; b03a: 6a63 ldr r3, [r4, #36] ; 0x24 b03c: 1ad2 subs r2, r2, r3 k++; b03e: 3501 adds r5, #1 if(k >= len) break; b040: 42bd cmp r5, r7 b042: da43 bge.n b0cc while(px_h > p->spx) { b044: 6a63 ldr r3, [r4, #36] ; 0x24 b046: 429a cmp r2, r3 b048: dd1a ble.n b080 if(k >= 0 && k < len) { b04a: 2d00 cmp r5, #0 b04c: dbf5 blt.n b03a b04e: 42bd cmp r5, r7 b050: daf3 bge.n b03a m = px_h - (p->spx >> 1); b052: 105b asrs r3, r3, #1 b054: 1ad3 subs r3, r2, r3 b056: b2db uxtb r3, r3 if(p->inv) m = 255 - m; b058: 4641 mov r1, r8 b05a: 5c61 ldrb r1, [r4, r1] b05c: 420e tst r6, r1 b05e: d001 beq.n b064 b060: 43db mvns r3, r3 b062: b2db uxtb r3, r3 b064: 46a9 mov r9, r5 mask_buf[k] = mask_mix(mask_buf[k], m); b066: 5d41 ldrb r1, [r0, r5] if(mask_new >= LV_OPA_MAX) return mask_act; b068: 2bf9 cmp r3, #249 ; 0xf9 b06a: d8e4 bhi.n b036 if(mask_new <= LV_OPA_MIN) return 0; b06c: 2b05 cmp r3, #5 b06e: d9e1 bls.n b034 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b070: 434b muls r3, r1 b072: 0219 lsls r1, r3, #8 b074: 18c9 adds r1, r1, r3 b076: 01c9 lsls r1, r1, #7 b078: 18cb adds r3, r1, r3 b07a: 0ddb lsrs r3, r3, #23 b07c: b2d9 uxtb r1, r3 b07e: e7da b.n b036 if(k < len && k >= 0) { b080: 42bd cmp r5, r7 b082: da23 bge.n b0cc b084: 2d00 cmp r5, #0 b086: db21 blt.n b0cc int32_t x_inters = (px_h * p->xy_steep) >> 10; b088: 69a3 ldr r3, [r4, #24] b08a: 4353 muls r3, r2 b08c: 129b asrs r3, r3, #10 m = (x_inters * px_h) >> 9; b08e: 4353 muls r3, r2 b090: 125b asrs r3, r3, #9 b092: b2db uxtb r3, r3 if(p->yx_steep < 0) m = 255 - m; b094: 69e2 ldr r2, [r4, #28] b096: 2a00 cmp r2, #0 b098: db13 blt.n b0c2 if(p->inv) m = 255 - m; b09a: 2228 movs r2, #40 ; 0x28 b09c: 5ca2 ldrb r2, [r4, r2] b09e: 0792 lsls r2, r2, #30 b0a0: d501 bpl.n b0a6 b0a2: 43db mvns r3, r3 b0a4: b2db uxtb r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); b0a6: 1946 adds r6, r0, r5 b0a8: 7832 ldrb r2, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b0aa: 2bf9 cmp r3, #249 ; 0xf9 b0ac: d80d bhi.n b0ca if(mask_new <= LV_OPA_MIN) return 0; b0ae: 2b05 cmp r3, #5 b0b0: d90a bls.n b0c8 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b0b2: 4353 muls r3, r2 b0b4: 021a lsls r2, r3, #8 b0b6: 18d2 adds r2, r2, r3 b0b8: 01d2 lsls r2, r2, #7 b0ba: 18d3 adds r3, r2, r3 b0bc: 0ddb lsrs r3, r3, #23 b0be: b2da uxtb r2, r3 b0c0: e003 b.n b0ca if(p->yx_steep < 0) m = 255 - m; b0c2: 43db mvns r3, r3 b0c4: b2db uxtb r3, r3 b0c6: e7e8 b.n b09a if(mask_new <= LV_OPA_MIN) return 0; b0c8: 2200 movs r2, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b0ca: 7032 strb r2, [r6, #0] if(p->inv) { b0cc: 2328 movs r3, #40 ; 0x28 b0ce: 5ce3 ldrb r3, [r4, r3] b0d0: 079b lsls r3, r3, #30 b0d2: d50c bpl.n b0ee return LV_DRAW_MASK_RES_TRANSP; b0d4: 2400 movs r4, #0 if(k > len) { b0d6: 4567 cmp r7, ip b0d8: da00 bge.n b0dc b0da: e780 b.n afde return LV_DRAW_MASK_RES_CHANGED; b0dc: 3402 adds r4, #2 if(k >= 0) { b0de: 4663 mov r3, ip b0e0: 2b00 cmp r3, #0 b0e2: da00 bge.n b0e6 b0e4: e77b b.n afde _lv_memset_00(&mask_buf[0], k); b0e6: 4661 mov r1, ip b0e8: 4b66 ldr r3, [pc, #408] ; (b284 ) b0ea: 4798 blx r3 b0ec: e777 b.n afde if(k < 0) { b0ee: 3501 adds r5, #1 b0f0: d500 bpl.n b0f4 b0f2: e0f9 b.n b2e8 return LV_DRAW_MASK_RES_CHANGED; b0f4: 2402 movs r4, #2 if(k <= len) { b0f6: 42bd cmp r5, r7 b0f8: dd00 ble.n b0fc b0fa: e770 b.n afde _lv_memset_00(&mask_buf[k], len - k); b0fc: 1b79 subs r1, r7, r5 b0fe: 1940 adds r0, r0, r5 b100: 4b60 ldr r3, [pc, #384] ; (b284 ) b102: 4798 blx r3 b104: e76b b.n afde if(x_at_y > abs_x + len) { b106: 4698 mov r8, r3 b108: 18e9 adds r1, r5, r3 b10a: 458c cmp ip, r1 b10c: dd06 ble.n b11c if(p->inv) { b10e: 465b mov r3, fp b110: 085c lsrs r4, r3, #1 b112: 2601 movs r6, #1 b114: 4066 eors r6, r4 p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b116: 2401 movs r4, #1 b118: 4034 ands r4, r6 b11a: e760 b.n afde int32_t xs = ((abs_y << 8) * p->xy_steep) >> 10; b11c: 0211 lsls r1, r2, #8 b11e: 4379 muls r1, r7 int32_t xsi = xs >> 8; b120: 148e asrs r6, r1, #18 b122: 46b4 mov ip, r6 int32_t xsf = xs & 0xFF; b124: 0389 lsls r1, r1, #14 b126: 0e09 lsrs r1, r1, #24 int32_t xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b128: 3201 adds r2, #1 b12a: 0212 lsls r2, r2, #8 b12c: 437a muls r2, r7 int32_t xei = xe >> 8; b12e: 1496 asrs r6, r2, #18 b130: 46b2 mov sl, r6 k = xsi - abs_x; b132: 4666 mov r6, ip b134: 1b76 subs r6, r6, r5 b136: 46b1 mov r9, r6 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b138: 45d4 cmp ip, sl b13a: d05c beq.n b1f6 b13c: 2f00 cmp r7, #0 b13e: db52 blt.n b1e6 y_inters = ((255 - xsf) * p->yx_steep) >> 10; b140: 22ff movs r2, #255 ; 0xff b142: 1a51 subs r1, r2, r1 b144: 69e5 ldr r5, [r4, #28] b146: 434d muls r5, r1 b148: 12ad asrs r5, r5, #10 if(k >= 0 && k < len) { b14a: 2e00 cmp r6, #0 b14c: db19 blt.n b182 b14e: 45c8 cmp r8, r9 b150: dd17 ble.n b182 m = 255 - ((y_inters * (255 - xsf)) >> 9); b152: 4369 muls r1, r5 b154: 1249 asrs r1, r1, #9 b156: b2ca uxtb r2, r1 if(p->inv) m = 255 - m; b158: 4659 mov r1, fp b15a: 0789 lsls r1, r1, #30 b15c: d401 bmi.n b162 m = 255 - ((y_inters * (255 - xsf)) >> 9); b15e: 43d2 mvns r2, r2 b160: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b162: 4649 mov r1, r9 b164: 1846 adds r6, r0, r1 b166: 7831 ldrb r1, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b168: 2af9 cmp r2, #249 ; 0xf9 b16a: d809 bhi.n b180 if(mask_new <= LV_OPA_MIN) return 0; b16c: 2a05 cmp r2, #5 b16e: d800 bhi.n b172 b170: e099 b.n b2a6 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b172: 434a muls r2, r1 b174: 0211 lsls r1, r2, #8 b176: 1889 adds r1, r1, r2 b178: 01c9 lsls r1, r1, #7 b17a: 188a adds r2, r1, r2 b17c: 0dd2 lsrs r2, r2, #23 b17e: b2d1 uxtb r1, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b180: 7031 strb r1, [r6, #0] if(k >= 0 && k < len) { b182: 464a mov r2, r9 b184: 1c51 adds r1, r2, #1 b186: d41d bmi.n b1c4 b188: 4588 cmp r8, r1 b18a: dd1b ble.n b1c4 int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; b18c: 22ff movs r2, #255 ; 0xff b18e: 1b55 subs r5, r2, r5 b190: 69a2 ldr r2, [r4, #24] b192: 436a muls r2, r5 b194: 1292 asrs r2, r2, #10 m = ((255 - y_inters) * x_inters) >> 9; b196: 4355 muls r5, r2 b198: 126d asrs r5, r5, #9 b19a: b2ea uxtb r2, r5 if(p->inv) m = 255 - m; b19c: 2528 movs r5, #40 ; 0x28 b19e: 5d65 ldrb r5, [r4, r5] b1a0: 07ad lsls r5, r5, #30 b1a2: d501 bpl.n b1a8 b1a4: 43d2 mvns r2, r2 b1a6: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b1a8: 1841 adds r1, r0, r1 b1aa: 780d ldrb r5, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b1ac: 2af9 cmp r2, #249 ; 0xf9 b1ae: d808 bhi.n b1c2 if(mask_new <= LV_OPA_MIN) return 0; b1b0: 2a05 cmp r2, #5 b1b2: d97a bls.n b2aa return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b1b4: 436a muls r2, r5 b1b6: 0215 lsls r5, r2, #8 b1b8: 18ad adds r5, r5, r2 b1ba: 01ed lsls r5, r5, #7 b1bc: 18aa adds r2, r5, r2 b1be: 0dd2 lsrs r2, r2, #23 b1c0: b2d5 uxtb r5, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b1c2: 700d strb r5, [r1, #0] if(p->inv) { b1c4: 2228 movs r2, #40 ; 0x28 b1c6: 5ca2 ldrb r2, [r4, r2] b1c8: 0792 lsls r2, r2, #30 b1ca: d570 bpl.n b2ae if(k > len) return LV_DRAW_MASK_RES_TRANSP; b1cc: 2400 movs r4, #0 b1ce: 45c8 cmp r8, r9 b1d0: da00 bge.n b1d4 b1d2: e704 b.n afde return LV_DRAW_MASK_RES_CHANGED; b1d4: 3402 adds r4, #2 if(k >= 0) _lv_memset_00(&mask_buf[0], k); b1d6: 464b mov r3, r9 b1d8: 2b00 cmp r3, #0 b1da: da00 bge.n b1de b1dc: e6ff b.n afde b1de: 4649 mov r1, r9 b1e0: 4b28 ldr r3, [pc, #160] ; (b284 ) b1e2: 4798 blx r3 b1e4: e6fb b.n afde if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { b1e6: 2900 cmp r1, #0 b1e8: d000 beq.n b1ec b1ea: e0cc b.n b386 k--; b1ec: 3901 subs r1, #1 b1ee: 468c mov ip, r1 b1f0: 44e1 add r9, ip xsf = 0xFF; b1f2: 3101 adds r1, #1 b1f4: 31ff adds r1, #255 ; 0xff if(k >= 0 && k < len) { b1f6: 464e mov r6, r9 b1f8: 2e00 cmp r6, #0 b1fa: db1b blt.n b234 b1fc: 45c8 cmp r8, r9 b1fe: dd19 ble.n b234 int32_t xef = xe & 0xFF; b200: 0392 lsls r2, r2, #14 b202: 0e12 lsrs r2, r2, #24 m = (xsf + xef) >> 1; b204: 1852 adds r2, r2, r1 b206: 0852 lsrs r2, r2, #1 if(p->inv) m = 255 - m; b208: 4659 mov r1, fp b20a: 0789 lsls r1, r1, #30 b20c: d501 bpl.n b212 b20e: 43d2 mvns r2, r2 b210: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b212: 4649 mov r1, r9 b214: 1846 adds r6, r0, r1 b216: 7831 ldrb r1, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b218: 2af9 cmp r2, #249 ; 0xf9 b21a: d80a bhi.n b232 if(mask_new <= LV_OPA_MIN) return 0; b21c: 2a05 cmp r2, #5 b21e: d907 bls.n b230 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b220: 434a muls r2, r1 b222: 0211 lsls r1, r2, #8 b224: 1889 adds r1, r1, r2 b226: 01c9 lsls r1, r1, #7 b228: 188a adds r2, r1, r2 b22a: 0dd2 lsrs r2, r2, #23 b22c: b2d1 uxtb r1, r2 b22e: e000 b.n b232 if(mask_new <= LV_OPA_MIN) return 0; b230: 2100 movs r1, #0 mask_buf[k] = mask_mix(mask_buf[k], m); b232: 7031 strb r1, [r6, #0] if(p->inv) { b234: 2228 movs r2, #40 ; 0x28 b236: 5ca2 ldrb r2, [r4, r2] b238: 0792 lsls r2, r2, #30 b23a: d50c bpl.n b256 k = xsi - abs_x; b23c: 4653 mov r3, sl b23e: 1b59 subs r1, r3, r5 return LV_DRAW_MASK_RES_TRANSP; b240: 2400 movs r4, #0 if(k >= len) { b242: 4588 cmp r8, r1 b244: dc00 bgt.n b248 b246: e6ca b.n afde return LV_DRAW_MASK_RES_CHANGED; b248: 3402 adds r4, #2 if(k >= 0) _lv_memset_00(&mask_buf[0], k); b24a: 2900 cmp r1, #0 b24c: da00 bge.n b250 b24e: e6c6 b.n afde b250: 4b0c ldr r3, [pc, #48] ; (b284 ) b252: 4798 blx r3 b254: e6c3 b.n afde k++; b256: 4649 mov r1, r9 b258: 3101 adds r1, #1 b25a: 001a movs r2, r3 b25c: 4588 cmp r8, r1 b25e: dd00 ble.n b262 b260: 000a movs r2, r1 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b262: 2400 movs r4, #0 b264: 2a00 cmp r2, #0 b266: d100 bne.n b26a b268: e6b9 b.n afde return LV_DRAW_MASK_RES_CHANGED; b26a: 3402 adds r4, #2 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b26c: 2a00 cmp r2, #0 b26e: dc00 bgt.n b272 b270: e6b5 b.n afde b272: 1a99 subs r1, r3, r2 b274: 1880 adds r0, r0, r2 b276: 4b03 ldr r3, [pc, #12] ; (b284 ) b278: 4798 blx r3 b27a: e6b0 b.n afde if(mask_new <= LV_OPA_MIN) return 0; b27c: 2500 movs r5, #0 b27e: e0a1 b.n b3c4 b280: 2500 movs r5, #0 b282: e0c2 b.n b40a b284: 00012975 .word 0x00012975 k += 2; b288: 464a mov r2, r9 b28a: 3201 adds r2, #1 if(k > len) return LV_DRAW_MASK_RES_FULL_COVER; b28c: 2401 movs r4, #1 b28e: 4590 cmp r8, r2 b290: da00 bge.n b294 b292: e6a4 b.n afde return LV_DRAW_MASK_RES_CHANGED; b294: 3401 adds r4, #1 if(k >= 0) _lv_memset_00(&mask_buf[k], len - k); b296: 2a00 cmp r2, #0 b298: da00 bge.n b29c b29a: e6a0 b.n afde b29c: 1a99 subs r1, r3, r2 b29e: 1880 adds r0, r0, r2 b2a0: 4b62 ldr r3, [pc, #392] ; (b42c ) b2a2: 4798 blx r3 b2a4: e69b b.n afde if(mask_new <= LV_OPA_MIN) return 0; b2a6: 2100 movs r1, #0 b2a8: e76a b.n b180 b2aa: 2500 movs r5, #0 b2ac: e789 b.n b1c2 k++; b2ae: 4649 mov r1, r9 b2b0: 3102 adds r1, #2 b2b2: 001a movs r2, r3 b2b4: 4588 cmp r8, r1 b2b6: dd00 ble.n b2ba b2b8: 000a movs r2, r1 if(k == 0) return LV_DRAW_MASK_RES_TRANSP; b2ba: 2400 movs r4, #0 b2bc: 2a00 cmp r2, #0 b2be: d100 bne.n b2c2 b2c0: e68d b.n afde return LV_DRAW_MASK_RES_CHANGED; b2c2: 3402 adds r4, #2 else if(k > 0) _lv_memset_00(&mask_buf[k], len - k); b2c4: 2a00 cmp r2, #0 b2c6: dc00 bgt.n b2ca b2c8: e689 b.n afde b2ca: 1a99 subs r1, r3, r2 b2cc: 1880 adds r0, r0, r2 b2ce: 4b57 ldr r3, [pc, #348] ; (b42c ) b2d0: 4798 blx r3 b2d2: e684 b.n afde p->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_MASK_RES_FULL_COVER; b2d4: 2401 movs r4, #1 b2d6: e682 b.n afde p->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_MASK_RES_FULL_COVER; b2d8: 2401 movs r4, #1 b2da: e680 b.n afde if(abs_x + len < 0) return LV_DRAW_MASK_RES_FULL_COVER; b2dc: 2401 movs r4, #1 b2de: e67e b.n afde if(k < 0) return LV_DRAW_MASK_RES_TRANSP; b2e0: 2400 movs r4, #0 b2e2: e67c b.n afde if(abs_x + len < 0) return LV_DRAW_MASK_RES_TRANSP; b2e4: 2400 movs r4, #0 b2e6: e67a b.n afde return LV_DRAW_MASK_RES_TRANSP; b2e8: 2400 movs r4, #0 b2ea: e678 b.n afde y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b2ec: 001f movs r7, r3 b2ee: 18eb adds r3, r5, r3 b2f0: 4359 muls r1, r3 b2f2: 1289 asrs r1, r1, #10 if(y_at_x < abs_y) { b2f4: 428a cmp r2, r1 b2f6: dd00 ble.n b2fa b2f8: e68c b.n b014 if(p->yx_steep > 0) xe = ((abs_y << 8) * p->xy_steep) >> 10; b2fa: 0212 lsls r2, r2, #8 b2fc: 69a3 ldr r3, [r4, #24] b2fe: 435a muls r2, r3 b300: 1292 asrs r2, r2, #10 int32_t xei = xe >> 8; b302: 1211 asrs r1, r2, #8 int32_t xef = xe & 0xFF; b304: 23ff movs r3, #255 ; 0xff b306: 401a ands r2, r3 if(xef == 0) px_h = 255; b308: d039 beq.n b37e else px_h = 255 - (((255 - xef) * p->spx) >> 8); b30a: 469c mov ip, r3 b30c: 1a9b subs r3, r3, r2 b30e: 4698 mov r8, r3 b310: 6a63 ldr r3, [r4, #36] ; 0x24 b312: 4642 mov r2, r8 b314: 4353 muls r3, r2 b316: 121b asrs r3, r3, #8 b318: 4662 mov r2, ip b31a: 1ad2 subs r2, r2, r3 int32_t k = xei - abs_x; b31c: 1b49 subs r1, r1, r5 b31e: 468c mov ip, r1 if(k >= 0 && k < len) { b320: d41a bmi.n b358 b322: 42b9 cmp r1, r7 b324: da18 bge.n b358 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b326: 4641 mov r1, r8 b328: 434b muls r3, r1 b32a: 125b asrs r3, r3, #9 b32c: b2db uxtb r3, r3 if(p->inv) m = 255 - m; b32e: 4659 mov r1, fp b330: 0789 lsls r1, r1, #30 b332: d401 bmi.n b338 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); b334: 43db mvns r3, r3 b336: b2db uxtb r3, r3 mask_buf[k] = mask_mix(mask_buf[k], m); b338: 4661 mov r1, ip b33a: 1845 adds r5, r0, r1 b33c: 7829 ldrb r1, [r5, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b33e: 2bf9 cmp r3, #249 ; 0xf9 b340: d809 bhi.n b356 if(mask_new <= LV_OPA_MIN) return 0; b342: 2b05 cmp r3, #5 b344: d800 bhi.n b348 b346: e673 b.n b030 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b348: 434b muls r3, r1 b34a: 0219 lsls r1, r3, #8 b34c: 18c9 adds r1, r1, r3 b34e: 01c9 lsls r1, r1, #7 b350: 18cb adds r3, r1, r3 b352: 0ddb lsrs r3, r3, #23 b354: b2d9 uxtb r1, r3 mask_buf[k] = mask_mix(mask_buf[k], m); b356: 7029 strb r1, [r5, #0] k++; b358: 4663 mov r3, ip b35a: 1c5d adds r5, r3, #1 if(p->inv) m = 255 - m; b35c: 2328 movs r3, #40 ; 0x28 b35e: 4698 mov r8, r3 b360: 2602 movs r6, #2 b362: e66f b.n b044 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; b364: 001f movs r7, r3 b366: 195b adds r3, r3, r5 b368: 4359 muls r1, r3 b36a: 1289 asrs r1, r1, #10 if(y_at_x > abs_y) { b36c: 4291 cmp r1, r2 b36e: dd00 ble.n b372 b370: e657 b.n b022 else xe = (((abs_y + 1) << 8) * p->xy_steep) >> 10; b372: 3201 adds r2, #1 b374: 0212 lsls r2, r2, #8 b376: 69a3 ldr r3, [r4, #24] b378: 435a muls r2, r3 b37a: 1292 asrs r2, r2, #10 b37c: e7c1 b.n b302 int32_t k = xei - abs_x; b37e: 1b4d subs r5, r1, r5 b380: 46ac mov ip, r5 if(xef == 0) px_h = 255; b382: 22ff movs r2, #255 ; 0xff b384: e7ea b.n b35c y_inters = (xsf * (-p->yx_steep)) >> 10; b386: 69e2 ldr r2, [r4, #28] b388: 4252 negs r2, r2 b38a: 434a muls r2, r1 b38c: 1292 asrs r2, r2, #10 if(k >= 0 && k < len) { b38e: 2e00 cmp r6, #0 b390: db19 blt.n b3c6 b392: 45c8 cmp r8, r9 b394: dd17 ble.n b3c6 m = (y_inters * xsf) >> 9; b396: 4351 muls r1, r2 b398: 1249 asrs r1, r1, #9 b39a: b2c9 uxtb r1, r1 if(p->inv) m = 255 - m; b39c: 465d mov r5, fp b39e: 07ad lsls r5, r5, #30 b3a0: d501 bpl.n b3a6 b3a2: 43c9 mvns r1, r1 b3a4: b2c9 uxtb r1, r1 mask_buf[k] = mask_mix(mask_buf[k], m); b3a6: 464d mov r5, r9 b3a8: 1946 adds r6, r0, r5 b3aa: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b3ac: 29f9 cmp r1, #249 ; 0xf9 b3ae: d809 bhi.n b3c4 if(mask_new <= LV_OPA_MIN) return 0; b3b0: 2905 cmp r1, #5 b3b2: d800 bhi.n b3b6 b3b4: e762 b.n b27c return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b3b6: 4369 muls r1, r5 b3b8: 020d lsls r5, r1, #8 b3ba: 186d adds r5, r5, r1 b3bc: 01ed lsls r5, r5, #7 b3be: 1869 adds r1, r5, r1 b3c0: 0dc9 lsrs r1, r1, #23 b3c2: b2cd uxtb r5, r1 mask_buf[k] = mask_mix(mask_buf[k], m); b3c4: 7035 strb r5, [r6, #0] if(k >= 0 && k < len) { b3c6: 4649 mov r1, r9 b3c8: 3901 subs r1, #1 b3ca: d41f bmi.n b40c b3cc: 4588 cmp r8, r1 b3ce: dd1d ble.n b40c int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; b3d0: 25ff movs r5, #255 ; 0xff b3d2: 1aaa subs r2, r5, r2 b3d4: 69a5 ldr r5, [r4, #24] b3d6: 426d negs r5, r5 b3d8: 4355 muls r5, r2 b3da: 12ad asrs r5, r5, #10 m = 255 - (((255 - y_inters) * x_inters) >> 9); b3dc: 436a muls r2, r5 b3de: 1252 asrs r2, r2, #9 b3e0: b2d2 uxtb r2, r2 if(p->inv) m = 255 - m; b3e2: 2528 movs r5, #40 ; 0x28 b3e4: 5d65 ldrb r5, [r4, r5] b3e6: 07ad lsls r5, r5, #30 b3e8: d401 bmi.n b3ee m = 255 - (((255 - y_inters) * x_inters) >> 9); b3ea: 43d2 mvns r2, r2 b3ec: b2d2 uxtb r2, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b3ee: 1846 adds r6, r0, r1 b3f0: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b3f2: 2af9 cmp r2, #249 ; 0xf9 b3f4: d809 bhi.n b40a if(mask_new <= LV_OPA_MIN) return 0; b3f6: 2a05 cmp r2, #5 b3f8: d800 bhi.n b3fc b3fa: e741 b.n b280 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b3fc: 436a muls r2, r5 b3fe: 0215 lsls r5, r2, #8 b400: 18ad adds r5, r5, r2 b402: 01ed lsls r5, r5, #7 b404: 18aa adds r2, r5, r2 b406: 0dd2 lsrs r2, r2, #23 b408: b2d5 uxtb r5, r2 mask_buf[k] = mask_mix(mask_buf[k], m); b40a: 7035 strb r5, [r6, #0] if(p->inv) { b40c: 2228 movs r2, #40 ; 0x28 b40e: 5ca2 ldrb r2, [r4, r2] b410: 0792 lsls r2, r2, #30 b412: d400 bmi.n b416 b414: e738 b.n b288 return LV_DRAW_MASK_RES_CHANGED; b416: 2402 movs r4, #2 if(k > len) k = len; b418: 4588 cmp r8, r1 b41a: da00 bge.n b41e b41c: e5df b.n afde else if(k > 0) _lv_memset_00(&mask_buf[0], k); b41e: 2900 cmp r1, #0 b420: dc00 bgt.n b424 b422: e5dc b.n afde b424: 4b01 ldr r3, [pc, #4] ; (b42c ) b426: 4798 blx r3 b428: e5d9 b.n afde b42a: 46c0 nop ; (mov r8, r8) b42c: 00012975 .word 0x00012975 0000b430 : { b430: b5f0 push {r4, r5, r6, r7, lr} b432: 46de mov lr, fp b434: 4657 mov r7, sl b436: 464e mov r6, r9 b438: 4645 mov r5, r8 b43a: b5e0 push {r5, r6, r7, lr} b43c: b08d sub sp, #52 ; 0x34 b43e: 9001 str r0, [sp, #4] b440: 4689 mov r9, r1 b442: 9300 str r3, [sp, #0] b444: 9d16 ldr r5, [sp, #88] ; 0x58 bool outer = p->cfg.outer; b446: 7cac ldrb r4, [r5, #18] b448: 07e4 lsls r4, r4, #31 b44a: 0fe4 lsrs r4, r4, #31 int32_t radius = p->cfg.radius; b44c: 2310 movs r3, #16 b44e: 5eee ldrsh r6, [r5, r3] lv_area_copy(&rect, &p->cfg.rect); b450: 002f movs r7, r5 b452: 3708 adds r7, #8 b454: 2300 movs r3, #0 *d8 = *s8; b456: a80a add r0, sp, #40 ; 0x28 b458: 5cf9 ldrb r1, [r7, r3] b45a: 5419 strb r1, [r3, r0] b45c: 3301 adds r3, #1 while(len) { b45e: 2b08 cmp r3, #8 b460: d1fa bne.n b458 if(outer == false) { b462: 2c00 cmp r4, #0 b464: d145 bne.n b4f2 if(abs_y < rect.y1 || abs_y > rect.y2) { b466: ab0a add r3, sp, #40 ; 0x28 b468: 2102 movs r1, #2 b46a: 5e5b ldrsh r3, [r3, r1] return LV_DRAW_MASK_RES_TRANSP; b46c: 2000 movs r0, #0 if(abs_y < rect.y1 || abs_y > rect.y2) { b46e: 4293 cmp r3, r2 b470: dc4a bgt.n b508 b472: ab0a add r3, sp, #40 ; 0x28 b474: 2106 movs r1, #6 b476: 5e5b ldrsh r3, [r3, r1] b478: 4293 cmp r3, r2 b47a: db45 blt.n b508 int32_t radius = p->cfg.radius; b47c: 46b4 mov ip, r6 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b47e: ab0a add r3, sp, #40 ; 0x28 b480: 2000 movs r0, #0 b482: 5e1b ldrsh r3, [r3, r0] b484: 469a mov sl, r3 b486: 18f3 adds r3, r6, r3 b488: 4599 cmp r9, r3 b48a: db08 blt.n b49e b48c: 9b00 ldr r3, [sp, #0] b48e: 444b add r3, r9 b490: 0018 movs r0, r3 b492: ab0a add r3, sp, #40 ; 0x28 b494: 2104 movs r1, #4 b496: 5e5b ldrsh r3, [r3, r1] b498: 1b9b subs r3, r3, r6 b49a: 4298 cmp r0, r3 b49c: dd0b ble.n b4b6 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b49e: a80a add r0, sp, #40 ; 0x28 b4a0: 2702 movs r7, #2 b4a2: 5fc0 ldrsh r0, [r0, r7] b4a4: 1987 adds r7, r0, r6 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || b4a6: 42ba cmp r2, r7 b4a8: db62 blt.n b570 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { b4aa: af0a add r7, sp, #40 ; 0x28 b4ac: 2106 movs r1, #6 b4ae: 5e7f ldrsh r7, [r7, r1] b4b0: 1bbf subs r7, r7, r6 b4b2: 42ba cmp r2, r7 b4b4: dc5c bgt.n b570 if(outer == false) { b4b6: 2c00 cmp r4, #0 b4b8: d13c bne.n b534 int32_t last = rect.x1 - abs_x; b4ba: 4653 mov r3, sl b4bc: 464a mov r2, r9 b4be: 1a9c subs r4, r3, r2 if(last > len) return LV_DRAW_MASK_RES_TRANSP; b4c0: 9d00 ldr r5, [sp, #0] b4c2: 2000 movs r0, #0 b4c4: 42ac cmp r4, r5 b4c6: dc1f bgt.n b508 if(last >= 0) { b4c8: 2c00 cmp r4, #0 b4ca: db03 blt.n b4d4 _lv_memset_00(&mask_buf[0], last); b4cc: 0021 movs r1, r4 b4ce: 9801 ldr r0, [sp, #4] b4d0: 4ba2 ldr r3, [pc, #648] ; (b75c ) b4d2: 4798 blx r3 int32_t first = rect.x2 - abs_x + 1; b4d4: ab0a add r3, sp, #40 ; 0x28 b4d6: 2004 movs r0, #4 b4d8: 5e18 ldrsh r0, [r3, r0] b4da: 464b mov r3, r9 b4dc: 1ac0 subs r0, r0, r3 b4de: 3001 adds r0, #1 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; b4e0: 2800 cmp r0, #0 b4e2: dc00 bgt.n b4e6 b4e4: e20b b.n b8fe else if(first < len) { b4e6: 4285 cmp r5, r0 b4e8: dc15 bgt.n b516 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b4ea: 2c00 cmp r4, #0 b4ec: d01e beq.n b52c else return LV_DRAW_MASK_RES_CHANGED; b4ee: 2002 movs r0, #2 b4f0: e00a b.n b508 if(abs_y < rect.y1 || abs_y > rect.y2) { b4f2: ab0a add r3, sp, #40 ; 0x28 b4f4: 2102 movs r1, #2 b4f6: 5e5b ldrsh r3, [r3, r1] return LV_DRAW_MASK_RES_FULL_COVER; b4f8: 2001 movs r0, #1 if(abs_y < rect.y1 || abs_y > rect.y2) { b4fa: 4293 cmp r3, r2 b4fc: dc04 bgt.n b508 b4fe: ab0a add r3, sp, #40 ; 0x28 b500: 2106 movs r1, #6 b502: 5e5b ldrsh r3, [r3, r1] b504: 4293 cmp r3, r2 b506: dab9 bge.n b47c } b508: b00d add sp, #52 ; 0x34 b50a: bc3c pop {r2, r3, r4, r5} b50c: 4690 mov r8, r2 b50e: 4699 mov r9, r3 b510: 46a2 mov sl, r4 b512: 46ab mov fp, r5 b514: bdf0 pop {r4, r5, r6, r7, pc} _lv_memset_00(&mask_buf[first], len - first); b516: 9b00 ldr r3, [sp, #0] b518: 1a19 subs r1, r3, r0 b51a: 9b01 ldr r3, [sp, #4] b51c: 469c mov ip, r3 b51e: 4460 add r0, ip b520: 4b8e ldr r3, [pc, #568] ; (b75c ) b522: 4798 blx r3 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b524: 2c00 cmp r4, #0 b526: d1e2 bne.n b4ee else return LV_DRAW_MASK_RES_CHANGED; b528: 2002 movs r0, #2 b52a: e7ed b.n b508 if(last == 0 && first == len) return LV_DRAW_MASK_RES_FULL_COVER; b52c: 4285 cmp r5, r0 b52e: d1de bne.n b4ee b530: 2001 movs r0, #1 b532: e7e9 b.n b508 int32_t first = rect.x1 - abs_x; b534: 4653 mov r3, sl b536: 464a mov r2, r9 b538: 1a9b subs r3, r3, r2 b53a: 43da mvns r2, r3 b53c: 17d2 asrs r2, r2, #31 b53e: 4013 ands r3, r2 if(first <= len) { b540: 9a00 ldr r2, [sp, #0] return LV_DRAW_MASK_RES_CHANGED; b542: 2002 movs r0, #2 if(first <= len) { b544: 4293 cmp r3, r2 b546: dcdf bgt.n b508 int32_t last = rect.x2 - abs_x - first + 1; b548: a90a add r1, sp, #40 ; 0x28 b54a: 2004 movs r0, #4 b54c: 5e09 ldrsh r1, [r1, r0] b54e: 4648 mov r0, r9 b550: 1a09 subs r1, r1, r0 b552: 1ac9 subs r1, r1, r3 b554: 3101 adds r1, #1 if(first + last > len) last = len - first; b556: 1858 adds r0, r3, r1 b558: 4282 cmp r2, r0 b55a: da00 bge.n b55e b55c: 1ad1 subs r1, r2, r3 return LV_DRAW_MASK_RES_CHANGED; b55e: 2002 movs r0, #2 if(last >= 0) { b560: 2900 cmp r1, #0 b562: dbd1 blt.n b508 _lv_memset_00(&mask_buf[first], last); b564: 9a01 ldr r2, [sp, #4] b566: 18d0 adds r0, r2, r3 b568: 4b7c ldr r3, [pc, #496] ; (b75c ) b56a: 4798 blx r3 return LV_DRAW_MASK_RES_CHANGED; b56c: 2002 movs r0, #2 b56e: e7cb b.n b508 b570: ab0a add r3, sp, #40 ; 0x28 b572: 2104 movs r1, #4 b574: 5e5f ldrsh r7, [r3, r1] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); b576: b280 uxth r0, r0 b578: 88db ldrh r3, [r3, #6] b57a: 3301 adds r3, #1 b57c: 1a1b subs r3, r3, r0 int32_t h = lv_area_get_height(&rect); b57e: b21b sxth r3, r3 abs_y -= rect.y1; b580: 1a12 subs r2, r2, r0 uint32_t r2 = p->cfg.radius * p->cfg.radius; b582: 0030 movs r0, r6 b584: 4370 muls r0, r6 b586: 4680 mov r8, r0 if(abs_y < radius || abs_y > h - radius - 1) { b588: b212 sxth r2, r2 b58a: 4594 cmp ip, r2 b58c: dd00 ble.n b590 b58e: e1e0 b.n b952 b590: 1b98 subs r0, r3, r6 b592: 3801 subs r0, #1 b594: 4282 cmp r2, r0 b596: dd00 ble.n b59a b598: e1b3 b.n b902 return LV_DRAW_MASK_RES_CHANGED; b59a: 2002 movs r0, #2 b59c: e7b4 b.n b508 x0.f = p->y_prev_x.f; b59e: 8b6b ldrh r3, [r5, #26] b5a0: aa06 add r2, sp, #24 b5a2: 8053 strh r3, [r2, #2] x0.i = p->y_prev_x.i; b5a4: 8b2b ldrh r3, [r5, #24] b5a6: 8013 strh r3, [r2, #0] b5a8: e1e9 b.n b97e if(radius <= 256) sqrt_mask = 0x800; b5aa: 2180 movs r1, #128 ; 0x80 b5ac: 0109 lsls r1, r1, #4 b5ae: 9102 str r1, [sp, #8] b5b0: e1af b.n b912 x1.f = p->y_prev_x.f; b5b2: ab07 add r3, sp, #28 b5b4: 8b6a ldrh r2, [r5, #26] b5b6: 805a strh r2, [r3, #2] x1.i = p->y_prev_x.i; b5b8: 8b2a ldrh r2, [r5, #24] b5ba: 801a strh r2, [r3, #0] b5bc: e1b8 b.n b930 if(x0.i == x1.i - 1 && x1.f == 0) { b5be: a907 add r1, sp, #28 b5c0: 8849 ldrh r1, [r1, #2] b5c2: 2900 cmp r1, #0 b5c4: d000 beq.n b5c8 b5c6: e1f5 b.n b9b4 x1.i--; b5c8: a907 add r1, sp, #28 b5ca: 3a01 subs r2, #1 b5cc: 800a strh r2, [r1, #0] x1.f = 0xFF; b5ce: 22ff movs r2, #255 ; 0xff b5d0: 804a strh r2, [r1, #2] b5d2: e1ef b.n b9b4 lv_opa_t m = (x0.f + x1.f) >> 1; b5d4: a906 add r1, sp, #24 b5d6: 8849 ldrh r1, [r1, #2] b5d8: ad07 add r5, sp, #28 b5da: 886d ldrh r5, [r5, #2] b5dc: 1949 adds r1, r1, r5 b5de: 1049 asrs r1, r1, #1 b5e0: b2cf uxtb r7, r1 if(outer) m = 255 - m; b5e2: 2c00 cmp r4, #0 b5e4: d001 beq.n b5ea b5e6: 43ff mvns r7, r7 b5e8: b2ff uxtb r7, r7 int32_t ofs = radius - x0.i - 1; b5ea: 1af3 subs r3, r6, r3 b5ec: 3b01 subs r3, #1 if(kl >= 0 && kl < len) { b5ee: 18c1 adds r1, r0, r3 b5f0: d412 bmi.n b618 b5f2: 9d00 ldr r5, [sp, #0] b5f4: 42a9 cmp r1, r5 b5f6: da0f bge.n b618 mask_buf[kl] = mask_mix(mask_buf[kl], m); b5f8: 9d01 ldr r5, [sp, #4] b5fa: 186e adds r6, r5, r1 b5fc: 7835 ldrb r5, [r6, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b5fe: 2ff9 cmp r7, #249 ; 0xf9 b600: d809 bhi.n b616 if(mask_new <= LV_OPA_MIN) return 0; b602: 2f05 cmp r7, #5 b604: d936 bls.n b674 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b606: 437d muls r5, r7 b608: 46ac mov ip, r5 b60a: 022d lsls r5, r5, #8 b60c: 4465 add r5, ip b60e: 01ed lsls r5, r5, #7 b610: 4465 add r5, ip b612: 0ded lsrs r5, r5, #23 b614: b2ed uxtb r5, r5 mask_buf[kl] = mask_mix(mask_buf[kl], m); b616: 7035 strb r5, [r6, #0] int32_t kr = k + (w - ofs - 1); b618: 1ad2 subs r2, r2, r3 b61a: 3a01 subs r2, #1 if(kr >= 0 && kr < len) { b61c: 1815 adds r5, r2, r0 b61e: d411 bmi.n b644 b620: 9b00 ldr r3, [sp, #0] b622: 429d cmp r5, r3 b624: da0e bge.n b644 mask_buf[kr] = mask_mix(mask_buf[kr], m); b626: 9b01 ldr r3, [sp, #4] b628: 195a adds r2, r3, r5 b62a: 7813 ldrb r3, [r2, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b62c: 2ff9 cmp r7, #249 ; 0xf9 b62e: d808 bhi.n b642 if(mask_new <= LV_OPA_MIN) return 0; b630: 2f05 cmp r7, #5 b632: d921 bls.n b678 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b634: 435f muls r7, r3 b636: 023b lsls r3, r7, #8 b638: 19db adds r3, r3, r7 b63a: 01db lsls r3, r3, #7 b63c: 19df adds r7, r3, r7 b63e: 0dff lsrs r7, r7, #23 b640: b2fb uxtb r3, r7 mask_buf[kr] = mask_mix(mask_buf[kr], m); b642: 7013 strb r3, [r2, #0] if(outer == false) { b644: 2c00 cmp r4, #0 b646: d019 beq.n b67c kl++; b648: 1c48 adds r0, r1, #1 b64a: 43c3 mvns r3, r0 b64c: 17db asrs r3, r3, #31 b64e: 4018 ands r0, r3 if(len_tmp + first > len) len_tmp = len - first; b650: 9a00 ldr r2, [sp, #0] b652: 0013 movs r3, r2 b654: 1a11 subs r1, r2, r0 b656: 4295 cmp r5, r2 b658: dc00 bgt.n b65c int32_t len_tmp = kr - first; b65a: 1a29 subs r1, r5, r0 if(first < len && len_tmp >= 0) { b65c: 4298 cmp r0, r3 b65e: db00 blt.n b662 b660: e12d b.n b8be b662: 2900 cmp r1, #0 b664: da00 bge.n b668 b666: e12a b.n b8be _lv_memset_00(&mask_buf[first], len_tmp); b668: 9b01 ldr r3, [sp, #4] b66a: 469c mov ip, r3 b66c: 4460 add r0, ip b66e: 4b3b ldr r3, [pc, #236] ; (b75c ) b670: 4798 blx r3 b672: e124 b.n b8be if(mask_new <= LV_OPA_MIN) return 0; b674: 2500 movs r5, #0 b676: e7ce b.n b616 b678: 2300 movs r3, #0 b67a: e7e2 b.n b642 if(kl > len) { b67c: 9c00 ldr r4, [sp, #0] b67e: 42a1 cmp r1, r4 b680: dd00 ble.n b684 b682: e13a b.n b8fa if(kl >= 0) { b684: 2900 cmp r1, #0 b686: db02 blt.n b68e _lv_memset_00(&mask_buf[0], kl); b688: 9801 ldr r0, [sp, #4] b68a: 4b34 ldr r3, [pc, #208] ; (b75c ) b68c: 4798 blx r3 if(kr < 0) { b68e: 1c68 adds r0, r5, #1 b690: d500 bpl.n b694 b692: e132 b.n b8fa if(kr <= len) { b694: 42a0 cmp r0, r4 b696: dd00 ble.n b69a b698: e111 b.n b8be _lv_memset_00(&mask_buf[kr], len - kr); b69a: 9b00 ldr r3, [sp, #0] b69c: 1a19 subs r1, r3, r0 b69e: 9b01 ldr r3, [sp, #4] b6a0: 469c mov ip, r3 b6a2: 4460 add r0, ip b6a4: 4b2d ldr r3, [pc, #180] ; (b75c ) b6a6: 4798 blx r3 b6a8: e109 b.n b8be _lv_sqrt(r2 - (i * i), &y_next, sqrt_mask); b6aa: ad09 add r5, sp, #36 ; 0x24 b6ac: 9b05 ldr r3, [sp, #20] b6ae: 0018 movs r0, r3 b6b0: 4358 muls r0, r3 b6b2: 4643 mov r3, r8 b6b4: 1a18 subs r0, r3, r0 b6b6: 9a02 ldr r2, [sp, #8] b6b8: 0029 movs r1, r5 b6ba: 4b29 ldr r3, [pc, #164] ; (b760 ) b6bc: 4798 blx r3 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); b6be: 886a ldrh r2, [r5, #2] b6c0: ab06 add r3, sp, #24 b6c2: 8859 ldrh r1, [r3, #2] b6c4: 23ff movs r3, #255 ; 0xff b6c6: 1a59 subs r1, r3, r1 b6c8: 1a9b subs r3, r3, r2 b6ca: 434b muls r3, r1 b6cc: 125b asrs r3, r3, #9 b6ce: b2db uxtb r3, r3 if(outer) m = 255 - m; b6d0: 2c00 cmp r4, #0 b6d2: d101 bne.n b6d8 m = 255 - (((255 - x0.f) * (255 - y_next.f)) >> 9); b6d4: 43db mvns r3, r3 b6d6: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b6d8: 9d03 ldr r5, [sp, #12] b6da: 2d00 cmp r5, #0 b6dc: db14 blt.n b708 b6de: 9800 ldr r0, [sp, #0] b6e0: 4285 cmp r5, r0 b6e2: da11 bge.n b708 b6e4: 9901 ldr r1, [sp, #4] b6e6: 0008 movs r0, r1 b6e8: 46ac mov ip, r5 b6ea: 4460 add r0, ip b6ec: 7801 ldrb r1, [r0, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b6ee: 2bf9 cmp r3, #249 ; 0xf9 b6f0: d809 bhi.n b706 if(mask_new <= LV_OPA_MIN) return 0; b6f2: 2b05 cmp r3, #5 b6f4: d92b bls.n b74e return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b6f6: 4359 muls r1, r3 b6f8: 000d movs r5, r1 b6fa: 0209 lsls r1, r1, #8 b6fc: 1949 adds r1, r1, r5 b6fe: 01c9 lsls r1, r1, #7 b700: 1949 adds r1, r1, r5 b702: 0dc9 lsrs r1, r1, #23 b704: b2c9 uxtb r1, r1 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b706: 7001 strb r1, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b708: 9d04 ldr r5, [sp, #16] b70a: 2d00 cmp r5, #0 b70c: db13 blt.n b736 b70e: 9800 ldr r0, [sp, #0] b710: 4285 cmp r5, r0 b712: da10 bge.n b736 b714: 9901 ldr r1, [sp, #4] b716: 0008 movs r0, r1 b718: 46ac mov ip, r5 b71a: 4460 add r0, ip b71c: 7801 ldrb r1, [r0, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b71e: 2bf9 cmp r3, #249 ; 0xf9 b720: d808 bhi.n b734 if(mask_new <= LV_OPA_MIN) return 0; b722: 2b05 cmp r3, #5 b724: d915 bls.n b752 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b726: 434b muls r3, r1 b728: 0219 lsls r1, r3, #8 b72a: 18c9 adds r1, r1, r3 b72c: 01c9 lsls r1, r1, #7 b72e: 18c9 adds r1, r1, r3 b730: 0dc9 lsrs r1, r1, #23 b732: b2c9 uxtb r1, r1 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b734: 7001 strb r1, [r0, #0] kl--; b736: 9b03 ldr r3, [sp, #12] b738: 3b01 subs r3, #1 b73a: 9303 str r3, [sp, #12] kr++; b73c: 9b04 ldr r3, [sp, #16] b73e: 3301 adds r3, #1 b740: 9304 str r3, [sp, #16] y_prev.f = y_next.f; b742: ab08 add r3, sp, #32 b744: 805a strh r2, [r3, #2] i++; b746: 9b05 ldr r3, [sp, #20] b748: 3301 adds r3, #1 b74a: 9305 str r3, [sp, #20] b74c: e176 b.n ba3c if(mask_new <= LV_OPA_MIN) return 0; b74e: 2100 movs r1, #0 b750: e7d9 b.n b706 b752: 2100 movs r1, #0 b754: e7ee b.n b734 b756: 2200 movs r2, #0 b758: e03f b.n b7da b75a: 46c0 nop ; (mov r8, r8) b75c: 00012975 .word 0x00012975 b760: 00012215 .word 0x00012215 b764: 2200 movs r2, #0 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b766: 9801 ldr r0, [sp, #4] b768: 5442 strb r2, [r0, r1] kl--; b76a: 3c01 subs r4, #1 kr++; b76c: 2201 movs r2, #1 b76e: 4694 mov ip, r2 b770: 44e2 add sl, ip for(; i <= x1.i; i++) { b772: 3701 adds r7, #1 y_prev.f = y_next.f; b774: 002e movs r6, r5 for(; i <= x1.i; i++) { b776: 455f cmp r7, fp b778: d846 bhi.n b808 */ 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); b77a: 0935 lsrs r5, r6, #4 b77c: 9b02 ldr r3, [sp, #8] b77e: 469c mov ip, r3 b780: 4465 add r5, ip sqrt_approx(&y_next, &y_prev, r2 - (i * i)); b782: 0038 movs r0, r7 b784: 4378 muls r0, r7 b786: 4643 mov r3, r8 b788: 1a18 subs r0, r3, r0 x = x << 8; /*Upscale for extra precision*/ b78a: 0200 lsls r0, r0, #8 uint32_t raw2 = raw * raw; b78c: 002b movs r3, r5 b78e: 436b muls r3, r5 int32_t d = x - raw2; b790: 1ac0 subs r0, r0, r3 d = (int32_t)d / (int32_t)(2 * raw) + raw; b792: 0069 lsls r1, r5, #1 b794: 4bb4 ldr r3, [pc, #720] ; (ba68 ) b796: 4798 blx r3 b798: 1945 adds r5, r0, r5 q->i = d >> 4; b79a: 112b asrs r3, r5, #4 b79c: b29b uxth r3, r3 q->f = (d & 0xF) << 4; b79e: 012d lsls r5, r5, #4 b7a0: 22ff movs r2, #255 ; 0xff b7a2: 4015 ands r5, r2 m = (y_prev.f + y_next.f) >> 1; b7a4: 1976 adds r6, r6, r5 b7a6: 1076 asrs r6, r6, #1 b7a8: b2f6 uxtb r6, r6 if(outer) m = 255 - m; b7aa: 464a mov r2, r9 b7ac: 2a00 cmp r2, #0 b7ae: d001 beq.n b7b4 b7b0: 43f6 mvns r6, r6 b7b2: b2f6 uxtb r6, r6 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b7b4: 2c00 cmp r4, #0 b7b6: db12 blt.n b7de b7b8: 9a00 ldr r2, [sp, #0] b7ba: 42a2 cmp r2, r4 b7bc: dd0f ble.n b7de b7be: 0020 movs r0, r4 b7c0: 9a01 ldr r2, [sp, #4] b7c2: 5d12 ldrb r2, [r2, r4] if(mask_new >= LV_OPA_MAX) return mask_act; b7c4: 2ef9 cmp r6, #249 ; 0xf9 b7c6: d808 bhi.n b7da if(mask_new <= LV_OPA_MIN) return 0; b7c8: 2e05 cmp r6, #5 b7ca: d9c4 bls.n b756 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b7cc: 4372 muls r2, r6 b7ce: 0211 lsls r1, r2, #8 b7d0: 1889 adds r1, r1, r2 b7d2: 01c9 lsls r1, r1, #7 b7d4: 188a adds r2, r1, r2 b7d6: 0dd2 lsrs r2, r2, #23 b7d8: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b7da: 9901 ldr r1, [sp, #4] b7dc: 540a strb r2, [r1, r0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b7de: 4652 mov r2, sl b7e0: 2a00 cmp r2, #0 b7e2: dbc2 blt.n b76a b7e4: 9a00 ldr r2, [sp, #0] b7e6: 4552 cmp r2, sl b7e8: ddbf ble.n b76a b7ea: 4651 mov r1, sl b7ec: 9a01 ldr r2, [sp, #4] b7ee: 5c52 ldrb r2, [r2, r1] if(mask_new >= LV_OPA_MAX) return mask_act; b7f0: 2ef9 cmp r6, #249 ; 0xf9 b7f2: d8b8 bhi.n b766 if(mask_new <= LV_OPA_MIN) return 0; b7f4: 2e05 cmp r6, #5 b7f6: d9b5 bls.n b764 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b7f8: 4356 muls r6, r2 b7fa: 0232 lsls r2, r6, #8 b7fc: 1992 adds r2, r2, r6 b7fe: 01d2 lsls r2, r2, #7 b800: 1996 adds r6, r2, r6 b802: 0df6 lsrs r6, r6, #23 b804: b2f2 uxtb r2, r6 b806: e7ae b.n b766 b808: 464c mov r4, r9 b80a: 465a mov r2, fp b80c: 43d2 mvns r2, r2 b80e: 9e05 ldr r6, [sp, #20] b810: 46b4 mov ip, r6 b812: 4462 add r2, ip b814: 9903 ldr r1, [sp, #12] b816: 468c mov ip, r1 b818: 4494 add ip, r2 b81a: 4662 mov r2, ip b81c: 9203 str r2, [sp, #12] b81e: 465a mov r2, fp b820: 1c50 adds r0, r2, #1 b822: 9a04 ldr r2, [sp, #16] b824: 4694 mov ip, r2 b826: 4460 add r0, ip b828: 1b82 subs r2, r0, r6 b82a: 9204 str r2, [sp, #16] b82c: aa08 add r2, sp, #32 b82e: 8055 strh r5, [r2, #2] b830: aa09 add r2, sp, #36 ; 0x24 b832: 8013 strh r3, [r2, #0] b834: 8055 strh r5, [r2, #2] if(y_prev.f) { b836: ab08 add r3, sp, #32 b838: 885b ldrh r3, [r3, #2] b83a: 2b00 cmp r3, #0 b83c: d03d beq.n b8ba m = (y_prev.f * x1.f) >> 9; b83e: aa07 add r2, sp, #28 b840: 8852 ldrh r2, [r2, #2] b842: 4353 muls r3, r2 b844: 125b asrs r3, r3, #9 b846: b2db uxtb r3, r3 if(outer) m = 255 - m; b848: 2c00 cmp r4, #0 b84a: d001 beq.n b850 b84c: 43db mvns r3, r3 b84e: b2db uxtb r3, r3 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b850: 9a03 ldr r2, [sp, #12] b852: 2a00 cmp r2, #0 b854: db14 blt.n b880 b856: 9900 ldr r1, [sp, #0] b858: 0008 movs r0, r1 b85a: 4290 cmp r0, r2 b85c: dd10 ble.n b880 b85e: 9901 ldr r1, [sp, #4] b860: 4694 mov ip, r2 b862: 4461 add r1, ip b864: 0008 movs r0, r1 b866: 780a ldrb r2, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b868: 2bf9 cmp r3, #249 ; 0xf9 b86a: d808 bhi.n b87e if(mask_new <= LV_OPA_MIN) return 0; b86c: 2b05 cmp r3, #5 b86e: d928 bls.n b8c2 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b870: 435a muls r2, r3 b872: 0211 lsls r1, r2, #8 b874: 1889 adds r1, r1, r2 b876: 01c9 lsls r1, r1, #7 b878: 188a adds r2, r1, r2 b87a: 0dd2 lsrs r2, r2, #23 b87c: b2d2 uxtb r2, r2 if(kl >= 0 && kl < len) mask_buf[kl] = mask_mix(mask_buf[kl], m); b87e: 7002 strb r2, [r0, #0] if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b880: 9a04 ldr r2, [sp, #16] b882: 2a00 cmp r2, #0 b884: db13 blt.n b8ae b886: 9900 ldr r1, [sp, #0] b888: 0008 movs r0, r1 b88a: 4290 cmp r0, r2 b88c: dd0f ble.n b8ae b88e: 9901 ldr r1, [sp, #4] b890: 4694 mov ip, r2 b892: 4461 add r1, ip b894: 780a ldrb r2, [r1, #0] if(mask_new >= LV_OPA_MAX) return mask_act; b896: 2bf9 cmp r3, #249 ; 0xf9 b898: d808 bhi.n b8ac if(mask_new <= LV_OPA_MIN) return 0; b89a: 2b05 cmp r3, #5 b89c: d913 bls.n b8c6 return LV_MATH_UDIV255(mask_act * mask_new);// >> 8); b89e: 4353 muls r3, r2 b8a0: 021a lsls r2, r3, #8 b8a2: 18d2 adds r2, r2, r3 b8a4: 01d2 lsls r2, r2, #7 b8a6: 18d3 adds r3, r2, r3 b8a8: 0ddb lsrs r3, r3, #23 b8aa: b2da uxtb r2, r3 if(kr >= 0 && kr < len) mask_buf[kr] = mask_mix(mask_buf[kr], m); b8ac: 700a strb r2, [r1, #0] kl--; b8ae: 9b03 ldr r3, [sp, #12] b8b0: 3b01 subs r3, #1 b8b2: 9303 str r3, [sp, #12] kr++; b8b4: 9b04 ldr r3, [sp, #16] b8b6: 3301 adds r3, #1 b8b8: 9304 str r3, [sp, #16] if(outer == 0) { b8ba: 2c00 cmp r4, #0 b8bc: d005 beq.n b8ca return LV_DRAW_MASK_RES_CHANGED; b8be: 2002 movs r0, #2 b8c0: e622 b.n b508 if(mask_new <= LV_OPA_MIN) return 0; b8c2: 2200 movs r2, #0 b8c4: e7db b.n b87e b8c6: 2200 movs r2, #0 b8c8: e7f0 b.n b8ac kl++; b8ca: 9903 ldr r1, [sp, #12] b8cc: 3101 adds r1, #1 if(kl > len) { b8ce: 9c00 ldr r4, [sp, #0] b8d0: 42a1 cmp r1, r4 b8d2: dc12 bgt.n b8fa if(kl >= 0) _lv_memset_00(&mask_buf[0], kl); b8d4: 2900 cmp r1, #0 b8d6: db02 blt.n b8de b8d8: 9801 ldr r0, [sp, #4] b8da: 4b64 ldr r3, [pc, #400] ; (ba6c ) b8dc: 4798 blx r3 if(kr < 0) { b8de: 9b04 ldr r3, [sp, #16] b8e0: 2b00 cmp r3, #0 b8e2: db0a blt.n b8fa if(kr < len) _lv_memset_00(&mask_buf[kr], len - kr); b8e4: 42a3 cmp r3, r4 b8e6: daea bge.n b8be b8e8: 9a00 ldr r2, [sp, #0] b8ea: 1ad1 subs r1, r2, r3 b8ec: 9a01 ldr r2, [sp, #4] b8ee: 469c mov ip, r3 b8f0: 4462 add r2, ip b8f2: 0010 movs r0, r2 b8f4: 4b5d ldr r3, [pc, #372] ; (ba6c ) b8f6: 4798 blx r3 b8f8: e7e1 b.n b8be return LV_DRAW_MASK_RES_TRANSP; b8fa: 2000 movs r0, #0 b8fc: e604 b.n b508 if(first <= 0) return LV_DRAW_MASK_RES_TRANSP; b8fe: 2000 movs r0, #0 b900: e602 b.n b508 if(radius <= 256) sqrt_mask = 0x800; b902: 2080 movs r0, #128 ; 0x80 b904: 0040 lsls r0, r0, #1 b906: 4584 cmp ip, r0 b908: dc00 bgt.n b90c b90a: e64e b.n b5aa b90c: 2180 movs r1, #128 ; 0x80 b90e: 0209 lsls r1, r1, #8 b910: 9102 str r1, [sp, #8] y = radius - (h - abs_y) + 1; b912: 1a9a subs r2, r3, r2 b914: 1ab0 subs r0, r6, r2 b916: 1c43 adds r3, r0, #1 b918: 469b mov fp, r3 if((y - 1) == p->y_prev) { b91a: 696b ldr r3, [r5, #20] b91c: 4298 cmp r0, r3 b91e: d100 bne.n b922 b920: e647 b.n b5b2 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); b922: 4340 muls r0, r0 b924: 4643 mov r3, r8 b926: 1a18 subs r0, r3, r0 b928: 9a02 ldr r2, [sp, #8] b92a: a907 add r1, sp, #28 b92c: 4b50 ldr r3, [pc, #320] ; (ba70 ) b92e: 4798 blx r3 _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); b930: 4658 mov r0, fp b932: 4340 muls r0, r0 b934: 4643 mov r3, r8 b936: 1a18 subs r0, r3, r0 b938: 9a02 ldr r2, [sp, #8] b93a: a906 add r1, sp, #24 b93c: 4b4c ldr r3, [pc, #304] ; (ba70 ) b93e: 4798 blx r3 p->y_prev = y; b940: 465b mov r3, fp b942: 616b str r3, [r5, #20] p->y_prev_x.f = x0.f; b944: ab06 add r3, sp, #24 b946: 885b ldrh r3, [r3, #2] b948: 836b strh r3, [r5, #26] p->y_prev_x.i = x0.i; b94a: ab06 add r3, sp, #24 b94c: 881b ldrh r3, [r3, #0] b94e: 832b strh r3, [r5, #24] b950: e028 b.n b9a4 if(radius <= 256) sqrt_mask = 0x800; b952: 2380 movs r3, #128 ; 0x80 b954: 005b lsls r3, r3, #1 b956: 459c cmp ip, r3 b958: dd00 ble.n b95c b95a: e081 b.n ba60 b95c: 2380 movs r3, #128 ; 0x80 b95e: 011b lsls r3, r3, #4 b960: 9302 str r3, [sp, #8] y = radius - abs_y; b962: 1ab3 subs r3, r6, r2 b964: 469b mov fp, r3 if(y == p->y_prev) { b966: 696b ldr r3, [r5, #20] b968: 459b cmp fp, r3 b96a: d100 bne.n b96e b96c: e617 b.n b59e _lv_sqrt(r2 - (y * y), &x0, sqrt_mask); b96e: 4658 mov r0, fp b970: 4340 muls r0, r0 b972: 4643 mov r3, r8 b974: 1a18 subs r0, r3, r0 b976: 9a02 ldr r2, [sp, #8] b978: a906 add r1, sp, #24 b97a: 4b3d ldr r3, [pc, #244] ; (ba70 ) b97c: 4798 blx r3 _lv_sqrt(r2 - ((y - 1) * (y - 1)), &x1, sqrt_mask); b97e: 465b mov r3, fp b980: 3b01 subs r3, #1 b982: 0018 movs r0, r3 b984: 9303 str r3, [sp, #12] b986: 4358 muls r0, r3 b988: 4642 mov r2, r8 b98a: 1a10 subs r0, r2, r0 b98c: 9a02 ldr r2, [sp, #8] b98e: a907 add r1, sp, #28 b990: 4b37 ldr r3, [pc, #220] ; (ba70 ) b992: 4798 blx r3 p->y_prev = y - 1; b994: 9b03 ldr r3, [sp, #12] b996: 616b str r3, [r5, #20] p->y_prev_x.f = x1.f; b998: ab06 add r3, sp, #24 b99a: 88db ldrh r3, [r3, #6] b99c: 836b strh r3, [r5, #26] p->y_prev_x.i = x1.i; b99e: ab06 add r3, sp, #24 b9a0: 889b ldrh r3, [r3, #4] b9a2: 832b strh r3, [r5, #24] if(x0.i == x1.i - 1 && x1.f == 0) { b9a4: ab06 add r3, sp, #24 b9a6: 881b ldrh r3, [r3, #0] b9a8: aa07 add r2, sp, #28 b9aa: 8812 ldrh r2, [r2, #0] b9ac: 1e51 subs r1, r2, #1 b9ae: 428b cmp r3, r1 b9b0: d100 bne.n b9b4 b9b2: e604 b.n b5be int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/ b9b4: 4652 mov r2, sl b9b6: 4649 mov r1, r9 b9b8: 1a50 subs r0, r2, r1 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); b9ba: 3701 adds r7, #1 b9bc: 1aba subs r2, r7, r2 int32_t w = lv_area_get_width(&rect); b9be: b212 sxth r2, r2 if(x0.i == x1.i) { b9c0: a907 add r1, sp, #28 b9c2: 8809 ldrh r1, [r1, #0] b9c4: 4299 cmp r1, r3 b9c6: d100 bne.n b9ca b9c8: e604 b.n b5d4 int32_t ofs = radius - (x0.i + 1); b9ca: 3301 adds r3, #1 b9cc: 1af6 subs r6, r6, r3 int32_t kl = k + ofs; b9ce: 1983 adds r3, r0, r6 b9d0: 0019 movs r1, r3 b9d2: 9303 str r3, [sp, #12] int32_t kr = k + (w - ofs - 1); b9d4: 1b96 subs r6, r2, r6 b9d6: 3e01 subs r6, #1 b9d8: 1833 adds r3, r6, r0 b9da: 001d movs r5, r3 b9dc: 9304 str r3, [sp, #16] if(outer) { b9de: 2c00 cmp r4, #0 b9e0: d012 beq.n ba08 int32_t first = kl + 1; b9e2: 1c48 adds r0, r1, #1 b9e4: 43c3 mvns r3, r0 b9e6: 17db asrs r3, r3, #31 b9e8: 4018 ands r0, r3 if(len_tmp + first > len) len_tmp = len - first; b9ea: 9e00 ldr r6, [sp, #0] b9ec: 0033 movs r3, r6 b9ee: 1a31 subs r1, r6, r0 b9f0: 42b5 cmp r5, r6 b9f2: dc00 bgt.n b9f6 int32_t len_tmp = kr - first; b9f4: 1a29 subs r1, r5, r0 if(first < len && len_tmp >= 0) { b9f6: 4298 cmp r0, r3 b9f8: da06 bge.n ba08 b9fa: 2900 cmp r1, #0 b9fc: db04 blt.n ba08 _lv_memset_00(&mask_buf[first], len_tmp); b9fe: 9b01 ldr r3, [sp, #4] ba00: 469c mov ip, r3 ba02: 4460 add r0, ip ba04: 4b19 ldr r3, [pc, #100] ; (ba6c ) ba06: 4798 blx r3 uint32_t i = x0.i + 1; ba08: ab06 add r3, sp, #24 ba0a: 8818 ldrh r0, [r3, #0] ba0c: 1c43 adds r3, r0, #1 ba0e: 9305 str r3, [sp, #20] _lv_sqrt(r2 - (x0.i * x0.i), &y_prev, sqrt_mask); ba10: ad08 add r5, sp, #32 ba12: 4340 muls r0, r0 ba14: 4643 mov r3, r8 ba16: 1a18 subs r0, r3, r0 ba18: 9a02 ldr r2, [sp, #8] ba1a: 0029 movs r1, r5 ba1c: 4b14 ldr r3, [pc, #80] ; (ba70 ) ba1e: 4798 blx r3 if(y_prev.f == 0) { ba20: 886b ldrh r3, [r5, #2] ba22: 2b00 cmp r3, #0 ba24: d105 bne.n ba32 y_prev.i--; ba26: ab08 add r3, sp, #32 ba28: 881a ldrh r2, [r3, #0] ba2a: 3a01 subs r2, #1 ba2c: 801a strh r2, [r3, #0] y_prev.f = 0xFF; ba2e: 22ff movs r2, #255 ; 0xff ba30: 805a strh r2, [r3, #2] if(y_prev.i >= y) { ba32: ab08 add r3, sp, #32 ba34: 881b ldrh r3, [r3, #0] ba36: 459b cmp fp, r3 ba38: dc00 bgt.n ba3c ba3a: e636 b.n b6aa for(; i <= x1.i; i++) { ba3c: ab07 add r3, sp, #28 ba3e: 881b ldrh r3, [r3, #0] ba40: 469b mov fp, r3 ba42: 9f05 ldr r7, [sp, #20] ba44: 455f cmp r7, fp ba46: d900 bls.n ba4a ba48: e6f5 b.n b836 uint32_t raw = (ref->i << 4) + (ref->f >> 4); ba4a: ab08 add r3, sp, #32 ba4c: 881a ldrh r2, [r3, #0] ba4e: 0112 lsls r2, r2, #4 ba50: 9202 str r2, [sp, #8] ba52: 885e ldrh r6, [r3, #2] ba54: 9b04 ldr r3, [sp, #16] ba56: 469a mov sl, r3 ba58: 9b03 ldr r3, [sp, #12] if(mask_new <= LV_OPA_MIN) return 0; ba5a: 46a1 mov r9, r4 ba5c: 001c movs r4, r3 ba5e: e68c b.n b77a if(radius <= 256) sqrt_mask = 0x800; ba60: 2380 movs r3, #128 ; 0x80 ba62: 021b lsls r3, r3, #8 ba64: 9302 str r3, [sp, #8] ba66: e77c b.n b962 ba68: 0001c1b9 .word 0x0001c1b9 ba6c: 00012975 .word 0x00012975 ba70: 00012215 .word 0x00012215 0000ba74 : { ba74: b510 push {r4, lr} ba76: b082 sub sp, #8 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; ba78: 4b10 ldr r3, [pc, #64] ; (babc ) ba7a: 681b ldr r3, [r3, #0] ba7c: 2b00 cmp r3, #0 ba7e: d014 beq.n baaa ba80: 4a0e ldr r2, [pc, #56] ; (babc ) for(i = 0; i < _LV_MASK_MAX_NUM; i++) { ba82: 2301 movs r3, #1 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param == NULL) break; ba84: 6894 ldr r4, [r2, #8] ba86: 2c00 cmp r4, #0 ba88: d010 beq.n baac for(i = 0; i < _LV_MASK_MAX_NUM; i++) { ba8a: 3301 adds r3, #1 ba8c: b2db uxtb r3, r3 ba8e: 3208 adds r2, #8 ba90: 2b10 cmp r3, #16 ba92: d1f7 bne.n ba84 LV_LOG_WARN("lv_mask_add: no place to add the mask"); ba94: 4b0a ldr r3, [pc, #40] ; (bac0 ) ba96: 9300 str r3, [sp, #0] ba98: 4b0a ldr r3, [pc, #40] ; (bac4 ) ba9a: 2257 movs r2, #87 ; 0x57 ba9c: 490a ldr r1, [pc, #40] ; (bac8 ) ba9e: 2002 movs r0, #2 baa0: 4c0a ldr r4, [pc, #40] ; (bacc ) baa2: 47a0 blx r4 return LV_MASK_ID_INV; baa4: 2001 movs r0, #1 baa6: 4240 negs r0, r0 baa8: e006 b.n bab8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { baaa: 2300 movs r3, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = param; baac: 4a03 ldr r2, [pc, #12] ; (babc ) baae: 00dc lsls r4, r3, #3 bab0: 50a0 str r0, [r4, r2] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = custom_id; bab2: 1912 adds r2, r2, r4 bab4: 6051 str r1, [r2, #4] return i; bab6: b218 sxth r0, r3 } bab8: b002 add sp, #8 baba: bd10 pop {r4, pc} babc: 20004df4 .word 0x20004df4 bac0: 00026420 .word 0x00026420 bac4: 000263d4 .word 0x000263d4 bac8: 000263e8 .word 0x000263e8 bacc: 00012159 .word 0x00012159 0000bad0 : { bad0: b5f0 push {r4, r5, r6, r7, lr} bad2: b087 sub sp, #28 bad4: 9003 str r0, [sp, #12] bad6: 9104 str r1, [sp, #16] bad8: 0016 movs r6, r2 bada: 001f movs r7, r3 while(m->param) { badc: 4b10 ldr r3, [pc, #64] ; (bb20 ) bade: 681b ldr r3, [r3, #0] bae0: 2b00 cmp r3, #0 bae2: d01b beq.n bb1c bae4: 4c0e ldr r4, [pc, #56] ; (bb20 ) bae6: 2200 movs r2, #0 bae8: 9205 str r2, [sp, #20] baea: e003 b.n baf4 m++; baec: 3408 adds r4, #8 while(m->param) { baee: 6823 ldr r3, [r4, #0] baf0: 2b00 cmp r3, #0 baf2: d00d beq.n bb10 res = dsc->cb(mask_buf, abs_x, abs_y, len, (void *)m->param); baf4: 9300 str r3, [sp, #0] baf6: 681d ldr r5, [r3, #0] baf8: 003b movs r3, r7 bafa: 0032 movs r2, r6 bafc: 9904 ldr r1, [sp, #16] bafe: 9803 ldr r0, [sp, #12] bb00: 47a8 blx r5 if(res == LV_DRAW_MASK_RES_TRANSP) return LV_DRAW_MASK_RES_TRANSP; bb02: 2800 cmp r0, #0 bb04: d008 beq.n bb18 else if(res == LV_DRAW_MASK_RES_CHANGED) changed = true; bb06: 2802 cmp r0, #2 bb08: d1f0 bne.n baec bb0a: 2301 movs r3, #1 bb0c: 9305 str r3, [sp, #20] bb0e: e7ed b.n baec return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; bb10: 9805 ldr r0, [sp, #20] bb12: 1e43 subs r3, r0, #1 bb14: 4198 sbcs r0, r3 bb16: 3001 adds r0, #1 } bb18: b007 add sp, #28 bb1a: bdf0 pop {r4, r5, r6, r7, pc} return changed ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER; bb1c: 2001 movs r0, #1 bb1e: e7fb b.n bb18 bb20: 20004df4 .word 0x20004df4 0000bb24 : if(id != LV_MASK_ID_INV) { bb24: 1c43 adds r3, r0, #1 bb26: d007 beq.n bb38 p = LV_GC_ROOT(_lv_draw_mask_list[id]).param; bb28: 4a04 ldr r2, [pc, #16] ; (bb3c ) bb2a: 00c3 lsls r3, r0, #3 bb2c: 5898 ldr r0, [r3, r2] LV_GC_ROOT(_lv_draw_mask_list[id]).param = NULL; bb2e: 2100 movs r1, #0 bb30: 5099 str r1, [r3, r2] LV_GC_ROOT(_lv_draw_mask_list[id]).custom_id = NULL; bb32: 18d3 adds r3, r2, r3 bb34: 6059 str r1, [r3, #4] } bb36: 4770 bx lr void * p = NULL; bb38: 2000 movs r0, #0 return p; bb3a: e7fc b.n bb36 bb3c: 20004df4 .word 0x20004df4 0000bb40 : { bb40: b530 push {r4, r5, lr} bb42: 0001 movs r1, r0 bb44: 4b08 ldr r3, [pc, #32] ; (bb68 ) bb46: 001a movs r2, r3 bb48: 3280 adds r2, #128 ; 0x80 void * p = NULL; bb4a: 2000 movs r0, #0 LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; bb4c: 2400 movs r4, #0 bb4e: e002 b.n bb56 bb50: 3308 adds r3, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bb52: 4293 cmp r3, r2 bb54: d006 beq.n bb64 if(LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id == custom_id) { bb56: 685d ldr r5, [r3, #4] bb58: 428d cmp r5, r1 bb5a: d1f9 bne.n bb50 p = LV_GC_ROOT(_lv_draw_mask_list[i]).param; bb5c: 6818 ldr r0, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).param = NULL; bb5e: 601c str r4, [r3, #0] LV_GC_ROOT(_lv_draw_mask_list[i]).custom_id = NULL; bb60: 605c str r4, [r3, #4] bb62: e7f5 b.n bb50 } bb64: bd30 pop {r4, r5, pc} bb66: 46c0 nop ; (mov r8, r8) bb68: 20004df4 .word 0x20004df4 0000bb6c : { bb6c: 4b07 ldr r3, [pc, #28] ; (bb8c ) bb6e: 001a movs r2, r3 bb70: 3280 adds r2, #128 ; 0x80 uint8_t cnt = 0; bb72: 2000 movs r0, #0 bb74: e002 b.n bb7c bb76: 3308 adds r3, #8 for(i = 0; i < _LV_MASK_MAX_NUM; i++) { bb78: 4293 cmp r3, r2 bb7a: d005 beq.n bb88 if(LV_GC_ROOT(_lv_draw_mask_list[i]).param) cnt++; bb7c: 6819 ldr r1, [r3, #0] bb7e: 2900 cmp r1, #0 bb80: d0f9 beq.n bb76 bb82: 3001 adds r0, #1 bb84: b2c0 uxtb r0, r0 bb86: e7f6 b.n bb76 } bb88: 4770 bx lr bb8a: 46c0 nop ; (mov r8, r8) bb8c: 20004df4 .word 0x20004df4 0000bb90 : { bb90: b5f8 push {r3, r4, r5, r6, r7, lr} bb92: 46ce mov lr, r9 bb94: 4647 mov r7, r8 bb96: b580 push {r7, lr} bb98: 0004 movs r4, r0 bb9a: 000f movs r7, r1 bb9c: 0015 movs r5, r2 bb9e: 4698 mov r8, r3 bba0: ab08 add r3, sp, #32 bba2: 2600 movs r6, #0 bba4: 5f9e ldrsh r6, [r3, r6] bba6: ab09 add r3, sp, #36 ; 0x24 bba8: 781b ldrb r3, [r3, #0] bbaa: 4699 mov r9, r3 _lv_memset_00(param, sizeof(lv_draw_mask_line_param_t)); bbac: 212c movs r1, #44 ; 0x2c bbae: 4b51 ldr r3, [pc, #324] ; (bcf4 ) bbb0: 4798 blx r3 if(p1y > p2y) { bbb2: 42b5 cmp r5, r6 bbb4: dd05 ble.n bbc2 bbb6: 002b movs r3, r5 p1y = t; bbb8: 0035 movs r5, r6 p2y = p1y; bbba: 001e movs r6, r3 if(p1y > p2y) { bbbc: 003b movs r3, r7 p1x = t; bbbe: 4647 mov r7, r8 p2x = p1x; bbc0: 4698 mov r8, r3 param->cfg.p1.x = p1x; bbc2: 8127 strh r7, [r4, #8] param->cfg.p1.y = p1y; bbc4: 8165 strh r5, [r4, #10] param->cfg.p2.x = p2x; bbc6: 4643 mov r3, r8 bbc8: 81a3 strh r3, [r4, #12] param->cfg.p2.y = p2y; bbca: 81e6 strh r6, [r4, #14] param->cfg.side = side; bbcc: 2303 movs r3, #3 bbce: 464a mov r2, r9 bbd0: 4013 ands r3, r2 bbd2: 7c22 ldrb r2, [r4, #16] bbd4: 2103 movs r1, #3 bbd6: 438a bics r2, r1 bbd8: 431a orrs r2, r3 bbda: 7422 strb r2, [r4, #16] param->origo.x = p1x; bbdc: 8267 strh r7, [r4, #18] param->origo.y = p1y; bbde: 82a5 strh r5, [r4, #20] param->flat = (LV_MATH_ABS(p2x - p1x) > LV_MATH_ABS(p2y - p1y)) ? 1 : 0; bbe0: 4643 mov r3, r8 bbe2: 1bdf subs r7, r3, r7 bbe4: 1b76 subs r6, r6, r5 bbe6: 17fb asrs r3, r7, #31 bbe8: 18fa adds r2, r7, r3 bbea: 405a eors r2, r3 bbec: 17f1 asrs r1, r6, #31 bbee: 1873 adds r3, r6, r1 bbf0: 404b eors r3, r1 bbf2: 2501 movs r5, #1 bbf4: 429a cmp r2, r3 bbf6: dc00 bgt.n bbfa bbf8: 2500 movs r5, #0 bbfa: 2128 movs r1, #40 ; 0x28 bbfc: 2201 movs r2, #1 bbfe: 002b movs r3, r5 bc00: 4013 ands r3, r2 bc02: 5c65 ldrb r5, [r4, r1] bc04: 2001 movs r0, #1 bc06: 4385 bics r5, r0 bc08: 431d orrs r5, r3 bc0a: 5465 strb r5, [r4, r1] param->yx_steep = 0; bc0c: 2300 movs r3, #0 bc0e: 61e3 str r3, [r4, #28] param->xy_steep = 0; bc10: 61a3 str r3, [r4, #24] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_line; bc12: 4939 ldr r1, [pc, #228] ; (bcf8 ) bc14: 6021 str r1, [r4, #0] param->dsc.type = LV_DRAW_MASK_TYPE_LINE; bc16: 7123 strb r3, [r4, #4] if(param->flat) { bc18: 422a tst r2, r5 bc1a: d027 beq.n bc6c if(dx) { bc1c: 2f00 cmp r7, #0 bc1e: d007 beq.n bc30 m = (1 << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ bc20: 0039 movs r1, r7 bc22: 2080 movs r0, #128 ; 0x80 bc24: 0340 lsls r0, r0, #13 bc26: 4b35 ldr r3, [pc, #212] ; (bcfc ) bc28: 4798 blx r3 param->yx_steep = (m * dy) >> 10; bc2a: 4370 muls r0, r6 bc2c: 1280 asrs r0, r0, #10 bc2e: 61e0 str r0, [r4, #28] if(dy) { bc30: 2e00 cmp r6, #0 bc32: d007 beq.n bc44 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bc34: 0031 movs r1, r6 bc36: 2080 movs r0, #128 ; 0x80 bc38: 0340 lsls r0, r0, #13 bc3a: 4b30 ldr r3, [pc, #192] ; (bcfc ) bc3c: 4798 blx r3 param->xy_steep = (m * dx) >> 10; bc3e: 4347 muls r7, r0 bc40: 12bf asrs r7, r7, #10 bc42: 61a7 str r7, [r4, #24] param->steep = param->yx_steep; bc44: 69e3 ldr r3, [r4, #28] bc46: 6223 str r3, [r4, #32] if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_LEFT) param->inv = 0; bc48: 7c22 ldrb r2, [r4, #16] bc4a: 2303 movs r3, #3 bc4c: 4013 ands r3, r2 bc4e: d124 bne.n bc9a bc50: 2228 movs r2, #40 ; 0x28 bc52: 5ca3 ldrb r3, [r4, r2] bc54: 2102 movs r1, #2 bc56: 438b bics r3, r1 bc58: 54a3 strb r3, [r4, r2] param->spx = param->steep >> 2; bc5a: 6a23 ldr r3, [r4, #32] bc5c: 109a asrs r2, r3, #2 if(param->steep < 0) param->spx = -param->spx; bc5e: 2b00 cmp r3, #0 bc60: db45 blt.n bcee param->spx = param->steep >> 2; bc62: 6262 str r2, [r4, #36] ; 0x24 } bc64: bc0c pop {r2, r3} bc66: 4690 mov r8, r2 bc68: 4699 mov r9, r3 bc6a: bdf8 pop {r3, r4, r5, r6, r7, pc} if(dy) { bc6c: 2e00 cmp r6, #0 bc6e: d007 beq.n bc80 m = (1 << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ bc70: 0031 movs r1, r6 bc72: 2080 movs r0, #128 ; 0x80 bc74: 0340 lsls r0, r0, #13 bc76: 4b21 ldr r3, [pc, #132] ; (bcfc ) bc78: 4798 blx r3 param->xy_steep = (m * dx) >> 10; bc7a: 4378 muls r0, r7 bc7c: 1280 asrs r0, r0, #10 bc7e: 61a0 str r0, [r4, #24] if(dx) { bc80: 2f00 cmp r7, #0 bc82: d007 beq.n bc94 m = (1 << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ bc84: 0039 movs r1, r7 bc86: 2080 movs r0, #128 ; 0x80 bc88: 0340 lsls r0, r0, #13 bc8a: 4b1c ldr r3, [pc, #112] ; (bcfc ) bc8c: 4798 blx r3 param->yx_steep = (m * dy) >> 10; bc8e: 4370 muls r0, r6 bc90: 1280 asrs r0, r0, #10 bc92: 61e0 str r0, [r4, #28] param->steep = param->xy_steep; bc94: 69a3 ldr r3, [r4, #24] bc96: 6223 str r3, [r4, #32] bc98: e7d6 b.n bc48 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bc9a: 2b01 cmp r3, #1 bc9c: d00c beq.n bcb8 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_TOP) { bc9e: 2b02 cmp r3, #2 bca0: d010 beq.n bcc4 else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_BOTTOM) { bca2: 2b03 cmp r3, #3 bca4: d1d9 bne.n bc5a if(param->steep > 0) param->inv = 0; bca6: 6a23 ldr r3, [r4, #32] bca8: 2b00 cmp r3, #0 bcaa: dd1a ble.n bce2 bcac: 2228 movs r2, #40 ; 0x28 bcae: 5ca3 ldrb r3, [r4, r2] bcb0: 2102 movs r1, #2 bcb2: 438b bics r3, r1 bcb4: 54a3 strb r3, [r4, r2] bcb6: e7d0 b.n bc5a else if(param->cfg.side == LV_DRAW_MASK_LINE_SIDE_RIGHT) param->inv = 1; bcb8: 2228 movs r2, #40 ; 0x28 bcba: 5ca3 ldrb r3, [r4, r2] bcbc: 2102 movs r1, #2 bcbe: 430b orrs r3, r1 bcc0: 54a3 strb r3, [r4, r2] bcc2: e7ca b.n bc5a if(param->steep > 0) param->inv = 1; bcc4: 6a23 ldr r3, [r4, #32] bcc6: 2b00 cmp r3, #0 bcc8: dd05 ble.n bcd6 bcca: 2228 movs r2, #40 ; 0x28 bccc: 5ca3 ldrb r3, [r4, r2] bcce: 2102 movs r1, #2 bcd0: 430b orrs r3, r1 bcd2: 54a3 strb r3, [r4, r2] bcd4: e7c1 b.n bc5a else param->inv = 0; bcd6: 2228 movs r2, #40 ; 0x28 bcd8: 5ca3 ldrb r3, [r4, r2] bcda: 2102 movs r1, #2 bcdc: 438b bics r3, r1 bcde: 54a3 strb r3, [r4, r2] bce0: e7bb b.n bc5a else param->inv = 1; bce2: 2228 movs r2, #40 ; 0x28 bce4: 5ca3 ldrb r3, [r4, r2] bce6: 2102 movs r1, #2 bce8: 430b orrs r3, r1 bcea: 54a3 strb r3, [r4, r2] bcec: e7b5 b.n bc5a if(param->steep < 0) param->spx = -param->spx; bcee: 4252 negs r2, r2 bcf0: 6262 str r2, [r4, #36] ; 0x24 } bcf2: e7b7 b.n bc64 bcf4: 00012975 .word 0x00012975 bcf8: 0000af15 .word 0x0000af15 bcfc: 0001c1b9 .word 0x0001c1b9 0000bd00 : { bd00: b5f0 push {r4, r5, r6, r7, lr} return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); bd02: 88cc ldrh r4, [r1, #6] bd04: 3401 adds r4, #1 bd06: 884d ldrh r5, [r1, #2] bd08: 1b64 subs r4, r4, r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); bd0a: 888e ldrh r6, [r1, #4] bd0c: 3601 adds r6, #1 bd0e: 880d ldrh r5, [r1, #0] bd10: 1b76 subs r6, r6, r5 int32_t short_side = LV_MATH_MIN(w, h); bd12: 1c25 adds r5, r4, #0 bd14: b224 sxth r4, r4 bd16: b237 sxth r7, r6 bd18: 42bc cmp r4, r7 bd1a: dd00 ble.n bd1e bd1c: 1c35 adds r5, r6, #0 bd1e: b22d sxth r5, r5 if(radius > short_side >> 1) radius = short_side >> 1; bd20: 106d asrs r5, r5, #1 bd22: 42aa cmp r2, r5 bd24: dd00 ble.n bd28 bd26: b22a sxth r2, r5 bd28: 000e movs r6, r1 bd2a: 3608 adds r6, #8 uint8_t * d8 = (uint8_t *)dst; bd2c: 0004 movs r4, r0 bd2e: 3408 adds r4, #8 *d8 = *s8; bd30: 780d ldrb r5, [r1, #0] bd32: 7025 strb r5, [r4, #0] d8++; bd34: 3401 adds r4, #1 s8++; bd36: 3101 adds r1, #1 while(len) { bd38: 428e cmp r6, r1 bd3a: d1f9 bne.n bd30 param->cfg.radius = radius; bd3c: 8202 strh r2, [r0, #16] param->cfg.outer = inv ? 1 : 0; bd3e: 2201 movs r2, #1 bd40: 401a ands r2, r3 bd42: 7c83 ldrb r3, [r0, #18] bd44: 2101 movs r1, #1 bd46: 438b bics r3, r1 bd48: 4313 orrs r3, r2 bd4a: 7483 strb r3, [r0, #18] param->dsc.cb = (lv_draw_mask_xcb_t)lv_draw_mask_radius; bd4c: 4b05 ldr r3, [pc, #20] ; (bd64 ) bd4e: 6003 str r3, [r0, #0] param->dsc.type = LV_DRAW_MASK_TYPE_RADIUS; bd50: 2302 movs r3, #2 bd52: 7103 strb r3, [r0, #4] param->y_prev = INT32_MIN; bd54: 2380 movs r3, #128 ; 0x80 bd56: 061b lsls r3, r3, #24 bd58: 6143 str r3, [r0, #20] param->y_prev_x.f = 0; bd5a: 2300 movs r3, #0 bd5c: 8343 strh r3, [r0, #26] param->y_prev_x.i = 0; bd5e: 8303 strh r3, [r0, #24] } bd60: bdf0 pop {r4, r5, r6, r7, pc} bd62: 46c0 nop ; (mov r8, r8) bd64: 0000b431 .word 0x0000b431 0000bd68 : #endif } LV_ATTRIBUTE_FAST_MEM static void shadow_blur_corner(lv_coord_t size, lv_coord_t sw, uint16_t * sh_ups_buf) { bd68: b5f0 push {r4, r5, r6, r7, lr} bd6a: 46de mov lr, fp bd6c: 4657 mov r7, sl bd6e: 464e mov r6, r9 bd70: 4645 mov r5, r8 bd72: b5e0 push {r5, r6, r7, lr} bd74: b091 sub sp, #68 ; 0x44 bd76: 900d str r0, [sp, #52] ; 0x34 bd78: 9102 str r1, [sp, #8] bd7a: 920c str r2, [sp, #48] ; 0x30 int32_t s_left = sw >> 1; bd7c: 104b asrs r3, r1, #1 bd7e: 001e movs r6, r3 bd80: 930f str r3, [sp, #60] ; 0x3c int32_t s_right = (sw >> 1); if((sw & 1) == 0) s_left--; bd82: 2301 movs r3, #1 bd84: 400b ands r3, r1 bd86: 425a negs r2, r3 bd88: 4153 adcs r3, r2 bd8a: 1af3 subs r3, r6, r3 bd8c: 001d movs r5, r3 bd8e: 930e str r3, [sp, #56] ; 0x38 /*Horizontal blur*/ uint16_t * sh_ups_blur_buf = _lv_mem_buf_get(size * sizeof(uint16_t)); bd90: 0004 movs r4, r0 bd92: 0047 lsls r7, r0, #1 bd94: 0038 movs r0, r7 bd96: 4b88 ldr r3, [pc, #544] ; (bfb8 ) bd98: 4798 blx r3 bd9a: 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++) { bd9c: 1e23 subs r3, r4, #0 bd9e: dc00 bgt.n bda2 bda0: e0db b.n bf5a int32_t v = sh_ups_tmp_buf[size - 1] * sw; bda2: 1eb9 subs r1, r7, #2 bda4: 9103 str r1, [sp, #12] bda6: 3b01 subs r3, #1 bda8: 9306 str r3, [sp, #24] bdaa: 468c mov ip, r1 bdac: 4460 add r0, ip bdae: 9007 str r0, [sp, #28] bdb0: 0019 movs r1, r3 bdb2: 1b49 subs r1, r1, r5 bdb4: 9108 str r1, [sp, #32] bdb6: 0029 movs r1, r5 bdb8: 0028 movs r0, r5 bdba: 950a str r5, [sp, #40] ; 0x28 bdbc: 4b7f ldr r3, [pc, #508] ; (bfbc ) bdbe: 46a4 mov ip, r4 bdc0: 4463 add r3, ip bdc2: 1a5b subs r3, r3, r1 bdc4: 005d lsls r5, r3, #1 bdc6: 950b str r5, [sp, #44] ; 0x2c bdc8: 0049 lsls r1, r1, #1 bdca: 000a movs r2, r1 bdcc: 9609 str r6, [sp, #36] ; 0x24 bdce: 0071 lsls r1, r6, #1 bdd0: 4688 mov r8, r1 bdd2: 9b0c ldr r3, [sp, #48] ; 0x30 bdd4: 4699 mov r9, r3 bdd6: 2300 movs r3, #0 bdd8: 9300 str r3, [sp, #0] bdda: 2502 movs r5, #2 bddc: 426d negs r5, r5 bdde: 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)); bde0: 9701 str r7, [sp, #4] bde2: 469b mov fp, r3 bde4: 46ca mov sl, r9 bde6: 4691 mov r9, r2 bde8: e024 b.n be34 v -= right_val; bdea: 1a9b subs r3, r3, r2 if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; bdec: 2e00 cmp r6, #0 bdee: db10 blt.n be12 else left_val = sh_ups_tmp_buf[x - s_left - 1]; bdf0: 882a ldrh r2, [r5, #0] v += left_val; bdf2: 18d3 adds r3, r2, r3 bdf4: 3f02 subs r7, #2 bdf6: 3d02 subs r5, #2 bdf8: 3e01 subs r6, #1 for(x = size - 1; x >= 0; x--) { bdfa: 455e cmp r6, fp bdfc: d00c beq.n be18 sh_ups_blur_buf[x] = v; bdfe: 803b strh r3, [r7, #0] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; be00: 1981 adds r1, r0, r6 be02: 2200 movs r2, #0 be04: 428c cmp r4, r1 be06: ddf0 ble.n bdea be08: 464a mov r2, r9 be0a: 18aa adds r2, r5, r2 be0c: 4442 add r2, r8 be0e: 8852 ldrh r2, [r2, #2] be10: e7eb b.n bdea if(x - s_left - 1 < 0) left_val = sh_ups_tmp_buf[0]; be12: 4652 mov r2, sl be14: 8812 ldrh r2, [r2, #0] be16: e7ec b.n bdf2 _lv_memcpy(sh_ups_tmp_buf, sh_ups_blur_buf, size * sizeof(uint16_t)); be18: 9d01 ldr r5, [sp, #4] be1a: 002a movs r2, r5 be1c: 9905 ldr r1, [sp, #20] be1e: 4650 mov r0, sl be20: 4b67 ldr r3, [pc, #412] ; (bfc0 ) be22: 4798 blx r3 sh_ups_tmp_buf += size; be24: 46ac mov ip, r5 be26: 44e2 add sl, ip for(y = 0; y < size; y++) { be28: 9b00 ldr r3, [sp, #0] be2a: 3301 adds r3, #1 be2c: 9300 str r3, [sp, #0] be2e: 42a3 cmp r3, r4 be30: db00 blt.n be34 be32: e0aa b.n bf8a int32_t v = sh_ups_tmp_buf[size - 1] * sw; be34: 9a02 ldr r2, [sp, #8] be36: 9204 str r2, [sp, #16] be38: 4653 mov r3, sl be3a: 9903 ldr r1, [sp, #12] be3c: 5a5b ldrh r3, [r3, r1] be3e: 4353 muls r3, r2 for(x = size - 1; x >= 0; x--) { be40: 9a06 ldr r2, [sp, #24] be42: 2a00 cmp r2, #0 be44: dbe8 blt.n be18 be46: 9a0b ldr r2, [sp, #44] ; 0x2c be48: 4452 add r2, sl be4a: 0015 movs r5, r2 be4c: 9a08 ldr r2, [sp, #32] be4e: 1e56 subs r6, r2, #1 be50: 9f07 ldr r7, [sp, #28] if(x + s_right < size) right_val = sh_ups_tmp_buf[x + s_right]; be52: 9a09 ldr r2, [sp, #36] ; 0x24 be54: 1c50 adds r0, r2, #1 be56: 9a0a ldr r2, [sp, #40] ; 0x28 be58: 4694 mov ip, r2 be5a: 4460 add r0, ip be5c: e7cf b.n bdfe } /*Vertical blur*/ uint32_t i; sh_ups_buf[0] = sh_ups_buf[0] / sw; for(i = 1; i < (uint32_t)size * size; i++) { be5e: 3601 adds r6, #1 be60: 3502 adds r5, #2 be62: 42a6 cmp r6, r4 be64: d207 bcs.n be76 if(sh_ups_buf[i] == sh_ups_buf[i - 1]) sh_ups_buf[i] = sh_ups_buf[i - 1]; be66: 8868 ldrh r0, [r5, #2] be68: 882b ldrh r3, [r5, #0] be6a: 4283 cmp r3, r0 be6c: d0f7 beq.n be5e else sh_ups_buf[i] = sh_ups_buf[i] / sw; be6e: 9904 ldr r1, [sp, #16] be70: 47c8 blx r9 be72: 8068 strh r0, [r5, #2] be74: e7f3 b.n be5e be76: 4644 mov r4, r8 } for(x = 0; x < size; x++) { be78: 2c00 cmp r4, #0 be7a: dc00 bgt.n be7e be7c: e07b b.n bf76 be7e: 9b0c ldr r3, [sp, #48] ; 0x30 be80: 9303 str r3, [sp, #12] be82: 980e ldr r0, [sp, #56] ; 0x38 be84: 1c42 adds r2, r0, #1 be86: 0013 movs r3, r2 be88: 437b muls r3, r7 be8a: 9308 str r3, [sp, #32] be8c: 9d0f ldr r5, [sp, #60] ; 0x3c be8e: 426b negs r3, r5 be90: 437b muls r3, r7 be92: 469b mov fp, r3 be94: 990d ldr r1, [sp, #52] ; 0x34 be96: 004b lsls r3, r1, #1 be98: 425b negs r3, r3 be9a: 435a muls r2, r3 be9c: 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]; be9e: 000b movs r3, r1 bea0: 3b01 subs r3, #1 bea2: 434b muls r3, r1 bea4: 005b lsls r3, r3, #1 bea6: 9302 str r3, [sp, #8] bea8: 2300 movs r3, #0 beaa: 9306 str r3, [sp, #24] if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; beac: 0003 movs r3, r0 beae: 2201 movs r2, #1 beb0: 4694 mov ip, r2 beb2: 4463 add r3, ip beb4: 469a mov sl, r3 beb6: 46b8 mov r8, r7 beb8: 465b mov r3, fp beba: 9301 str r3, [sp, #4] bebc: 46ab mov fp, r5 bebe: e037 b.n bf30 bec0: 2100 movs r1, #0 bec2: e00f b.n bee4 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; bec4: 4648 mov r0, r9 bec6: 8800 ldrh r0, [r0, #0] bec8: e016 b.n bef8 else bottom_val = sh_ups_buf[(size - 1) * size + x]; beca: 4641 mov r1, r8 becc: 9802 ldr r0, [sp, #8] bece: 5a09 ldrh r1, [r1, r0] v += bottom_val; bed0: 18cb adds r3, r1, r3 for(y = 0; y < size ; y++, sh_ups_tmp_buf += size) { bed2: 3201 adds r2, #1 bed4: 44b9 add r9, r7 bed6: 19f6 adds r6, r6, r7 bed8: 3402 adds r4, #2 beda: 4562 cmp r2, ip bedc: da12 bge.n bf04 sh_ups_blur_buf[y] = v < 0 ? 0 : (v >> SHADOW_UPSACALE_SHIFT); bede: 2b00 cmp r3, #0 bee0: dbee blt.n bec0 bee2: 1199 asrs r1, r3, #6 bee4: 8021 strh r1, [r4, #0] bee6: 0011 movs r1, r2 if(y - s_right <= 0) top_val = sh_ups_tmp_buf[0]; bee8: 4658 mov r0, fp beea: 1a10 subs r0, r2, r0 beec: 2800 cmp r0, #0 beee: dde9 ble.n bec4 else top_val = sh_ups_buf[(y - s_right) * size + x]; bef0: 9801 ldr r0, [sp, #4] bef2: 1980 adds r0, r0, r6 bef4: 9d00 ldr r5, [sp, #0] bef6: 5b40 ldrh r0, [r0, r5] v -= top_val; bef8: 1a1b subs r3, r3, r0 if(y + s_left + 1 < size) bottom_val = sh_ups_buf[(y + s_left + 1) * size + x]; befa: 4451 add r1, sl befc: 4561 cmp r1, ip befe: dae4 bge.n beca bf00: 8831 ldrh r1, [r6, #0] bf02: e7e5 b.n bed0 bf04: 4645 mov r5, r8 bf06: 46b8 mov r8, r7 bf08: 9f07 ldr r7, [sp, #28] bf0a: 4664 mov r4, ip bf0c: 2300 movs r3, #0 bf0e: 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]; bf10: 883a ldrh r2, [r7, #0] bf12: 802a strh r2, [r5, #0] for(y = 0; y < size; y++, sh_ups_tmp_buf += size) { bf14: 3301 adds r3, #1 bf16: 186d adds r5, r5, r1 bf18: 3702 adds r7, #2 bf1a: 42a3 cmp r3, r4 bf1c: dbf8 blt.n bf10 bf1e: 4688 mov r8, r1 for(x = 0; x < size; x++) { bf20: 9b06 ldr r3, [sp, #24] bf22: 3301 adds r3, #1 bf24: 9306 str r3, [sp, #24] bf26: 9a03 ldr r2, [sp, #12] bf28: 3202 adds r2, #2 bf2a: 9203 str r2, [sp, #12] bf2c: 42a3 cmp r3, r4 bf2e: da22 bge.n bf76 sh_ups_tmp_buf = &sh_ups_buf[x]; bf30: 9a03 ldr r2, [sp, #12] bf32: 0015 movs r5, r2 int32_t v = sh_ups_tmp_buf[0] * sw; bf34: 8813 ldrh r3, [r2, #0] bf36: 9904 ldr r1, [sp, #16] bf38: 434b muls r3, r1 bf3a: 9908 ldr r1, [sp, #32] bf3c: 000e movs r6, r1 bf3e: 4694 mov ip, r2 bf40: 4466 add r6, ip bf42: 9a05 ldr r2, [sp, #20] bf44: 0017 movs r7, r2 bf46: 4694 mov ip, r2 bf48: 46a9 mov r9, r5 bf4a: 2200 movs r2, #0 bf4c: 9707 str r7, [sp, #28] bf4e: 4647 mov r7, r8 bf50: 0021 movs r1, r4 bf52: 4664 mov r4, ip bf54: 468c mov ip, r1 bf56: 46a8 mov r8, r5 bf58: e7c1 b.n bede sh_ups_buf[0] = sh_ups_buf[0] / sw; bf5a: 9b02 ldr r3, [sp, #8] bf5c: 9304 str r3, [sp, #16] bf5e: 9d0c ldr r5, [sp, #48] ; 0x30 bf60: 8828 ldrh r0, [r5, #0] bf62: 0019 movs r1, r3 bf64: 4b17 ldr r3, [pc, #92] ; (bfc4 ) bf66: 4798 blx r3 bf68: 8028 strh r0, [r5, #0] for(i = 1; i < (uint32_t)size * size; i++) { bf6a: 9a0d ldr r2, [sp, #52] ; 0x34 bf6c: 0013 movs r3, r2 bf6e: 4353 muls r3, r2 bf70: 4698 mov r8, r3 bf72: 2b01 cmp r3, #1 bf74: d817 bhi.n bfa6 } } _lv_mem_buf_release(sh_ups_blur_buf); bf76: 9805 ldr r0, [sp, #20] bf78: 4b13 ldr r3, [pc, #76] ; (bfc8 ) bf7a: 4798 blx r3 } bf7c: b011 add sp, #68 ; 0x44 bf7e: bc3c pop {r2, r3, r4, r5} bf80: 4690 mov r8, r2 bf82: 4699 mov r9, r3 bf84: 46a2 mov sl, r4 bf86: 46ab mov fp, r5 bf88: bdf0 pop {r4, r5, r6, r7, pc} bf8a: 9f01 ldr r7, [sp, #4] sh_ups_buf[0] = sh_ups_buf[0] / sw; bf8c: 9d0c ldr r5, [sp, #48] ; 0x30 bf8e: 8828 ldrh r0, [r5, #0] bf90: 9904 ldr r1, [sp, #16] bf92: 4b0c ldr r3, [pc, #48] ; (bfc4 ) bf94: 4798 blx r3 bf96: 8028 strh r0, [r5, #0] for(i = 1; i < (uint32_t)size * size; i++) { bf98: 9a0d ldr r2, [sp, #52] ; 0x34 bf9a: 0013 movs r3, r2 bf9c: 4353 muls r3, r2 bf9e: 4698 mov r8, r3 bfa0: 2b01 cmp r3, #1 bfa2: d800 bhi.n bfa6 bfa4: e76b b.n be7e bfa6: 9d0c ldr r5, [sp, #48] ; 0x30 bfa8: 2601 movs r6, #1 else sh_ups_buf[i] = sh_ups_buf[i] / sw; bfaa: 4b06 ldr r3, [pc, #24] ; (bfc4 ) bfac: 4699 mov r9, r3 bfae: 4643 mov r3, r8 bfb0: 46a0 mov r8, r4 bfb2: 001c movs r4, r3 bfb4: e757 b.n be66 bfb6: 46c0 nop ; (mov r8, r8) bfb8: 000127a1 .word 0x000127a1 bfbc: 7ffffffe .word 0x7ffffffe bfc0: 00012545 .word 0x00012545 bfc4: 0001c1b9 .word 0x0001c1b9 bfc8: 00012465 .word 0x00012465 0000bfcc : { bfcc: b510 push {r4, lr} bfce: 0004 movs r4, r0 _lv_memset_00(dsc, sizeof(lv_draw_rect_dsc_t)); bfd0: 2154 movs r1, #84 ; 0x54 bfd2: 4b23 ldr r3, [pc, #140] ; (c060 ) bfd4: 4798 blx r3 dsc->bg_color = LV_COLOR_WHITE; bfd6: 4b23 ldr r3, [pc, #140] ; (c064 ) bfd8: 881b ldrh r3, [r3, #0] bfda: 8063 strh r3, [r4, #2] dsc->bg_grad_color = LV_COLOR_BLACK; bfdc: 7923 ldrb r3, [r4, #4] bfde: 221f movs r2, #31 bfe0: 4393 bics r3, r2 bfe2: 7123 strb r3, [r4, #4] bfe4: 88a1 ldrh r1, [r4, #4] bfe6: 4b20 ldr r3, [pc, #128] ; (c068 ) bfe8: 4019 ands r1, r3 bfea: 80a1 strh r1, [r4, #4] bfec: 2100 movs r1, #0 bfee: 7161 strb r1, [r4, #5] dsc->border_color = LV_COLOR_BLACK; bff0: 7ba1 ldrb r1, [r4, #14] bff2: 4391 bics r1, r2 bff4: 73a1 strb r1, [r4, #14] bff6: 89e1 ldrh r1, [r4, #14] bff8: 4019 ands r1, r3 bffa: 81e1 strh r1, [r4, #14] bffc: 2100 movs r1, #0 bffe: 73e1 strb r1, [r4, #15] dsc->pattern_recolor = LV_COLOR_BLACK; c000: 2034 movs r0, #52 ; 0x34 c002: 5c21 ldrb r1, [r4, r0] c004: 4391 bics r1, r2 c006: 5421 strb r1, [r4, r0] c008: 8ea1 ldrh r1, [r4, #52] ; 0x34 c00a: 4019 ands r1, r3 c00c: 86a1 strh r1, [r4, #52] ; 0x34 c00e: 0021 movs r1, r4 c010: 3134 adds r1, #52 ; 0x34 c012: 2000 movs r0, #0 c014: 7048 strb r0, [r1, #1] dsc->value_color = LV_COLOR_BLACK; c016: 2146 movs r1, #70 ; 0x46 c018: 5c60 ldrb r0, [r4, r1] c01a: 4390 bics r0, r2 c01c: 5460 strb r0, [r4, r1] c01e: 5a60 ldrh r0, [r4, r1] c020: 4018 ands r0, r3 c022: 5260 strh r0, [r4, r1] c024: 0021 movs r1, r4 c026: 3146 adds r1, #70 ; 0x46 c028: 2000 movs r0, #0 c02a: 7048 strb r0, [r1, #1] dsc->shadow_color = LV_COLOR_BLACK; c02c: 7fa1 ldrb r1, [r4, #30] c02e: 4391 bics r1, r2 c030: 77a1 strb r1, [r4, #30] c032: 8be2 ldrh r2, [r4, #30] c034: 4013 ands r3, r2 c036: 83e3 strh r3, [r4, #30] c038: 2300 movs r3, #0 c03a: 77e3 strb r3, [r4, #31] dsc->bg_grad_color_stop = 0xFF; c03c: 33ff adds r3, #255 ; 0xff c03e: 8163 strh r3, [r4, #10] dsc->bg_opa = LV_OPA_COVER; c040: 7323 strb r3, [r4, #12] dsc->outline_opa = LV_OPA_COVER; c042: 7723 strb r3, [r4, #28] dsc->border_opa = LV_OPA_COVER; c044: 7523 strb r3, [r4, #20] dsc->pattern_opa = LV_OPA_COVER; c046: 2236 movs r2, #54 ; 0x36 c048: 54a3 strb r3, [r4, r2] dsc->pattern_font = LV_THEME_DEFAULT_FONT_NORMAL; c04a: 4a08 ldr r2, [pc, #32] ; (c06c ) c04c: 6322 str r2, [r4, #48] ; 0x30 dsc->value_opa = LV_OPA_COVER; c04e: 2144 movs r1, #68 ; 0x44 c050: 5463 strb r3, [r4, r1] dsc->value_font = LV_THEME_DEFAULT_FONT_NORMAL; c052: 6422 str r2, [r4, #64] ; 0x40 dsc->shadow_opa = LV_OPA_COVER; c054: 2228 movs r2, #40 ; 0x28 c056: 54a3 strb r3, [r4, r2] dsc->border_side = LV_BORDER_SIDE_FULL; c058: 3bf0 subs r3, #240 ; 0xf0 c05a: 8263 strh r3, [r4, #18] } c05c: bd10 pop {r4, pc} c05e: 46c0 nop ; (mov r8, r8) c060: 00012975 .word 0x00012975 c064: 00026448 .word 0x00026448 c068: fffff81f .word 0xfffff81f c06c: 20000030 .word 0x20000030 0000c070 : { c070: b5f0 push {r4, r5, r6, r7, lr} c072: 46de mov lr, fp c074: 4657 mov r7, sl c076: 464e mov r6, r9 c078: 4645 mov r5, r8 c07a: b5e0 push {r5, r6, r7, lr} c07c: b0b1 sub sp, #196 ; 0xc4 c07e: 4681 mov r9, r0 c080: 9104 str r1, [sp, #16] c082: 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); c084: 88c4 ldrh r4, [r0, #6] c086: 8845 ldrh r5, [r0, #2] c088: 1c63 adds r3, r4, #1 c08a: 1b5b subs r3, r3, r5 if(lv_area_get_height(coords) < 1 || lv_area_get_width(coords) < 1) return; c08c: b21b sxth r3, r3 c08e: 2b00 cmp r3, #0 c090: dc01 bgt.n c096 c092: f000 ffce bl d032 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c096: 8886 ldrh r6, [r0, #4] c098: 8807 ldrh r7, [r0, #0] c09a: 1c73 adds r3, r6, #1 c09c: 1bdb subs r3, r3, r7 c09e: b21b sxth r3, r3 c0a0: 2b00 cmp r3, #0 c0a2: dc01 bgt.n c0a8 c0a4: f000 ffc5 bl d032 if(dsc->shadow_width == 0) return; c0a8: 0013 movs r3, r2 c0aa: 2220 movs r2, #32 c0ac: 5e9b ldrsh r3, [r3, r2] c0ae: 4698 mov r8, r3 c0b0: 2b00 cmp r3, #0 c0b2: d101 bne.n c0b8 c0b4: f000 fee1 bl ce7a if(dsc->shadow_opa <= LV_OPA_MIN) return; c0b8: 2328 movs r3, #40 ; 0x28 c0ba: 465a mov r2, fp c0bc: 5cd3 ldrb r3, [r2, r3] c0be: 9306 str r3, [sp, #24] c0c0: 2b05 cmp r3, #5 c0c2: d801 bhi.n c0c8 c0c4: f000 fed9 bl ce7a if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c0c8: 6a13 ldr r3, [r2, #32] c0ca: 2b01 cmp r3, #1 c0cc: d100 bne.n c0d0 c0ce: e0e2 b.n c296 sh_rect_area.x1 = coords->x1 + dsc->shadow_ofs_x - dsc->shadow_spread; c0d0: 465b mov r3, fp c0d2: 8c59 ldrh r1, [r3, #34] ; 0x22 c0d4: 8cda ldrh r2, [r3, #38] ; 0x26 c0d6: 1a8b subs r3, r1, r2 c0d8: 18ff adds r7, r7, r3 c0da: b2bf uxth r7, r7 c0dc: ab14 add r3, sp, #80 ; 0x50 c0de: 801f strh r7, [r3, #0] sh_rect_area.x2 = coords->x2 + dsc->shadow_ofs_x + dsc->shadow_spread; c0e0: 1889 adds r1, r1, r2 c0e2: 1876 adds r6, r6, r1 c0e4: b2b6 uxth r6, r6 c0e6: 809e strh r6, [r3, #4] sh_rect_area.y1 = coords->y1 + dsc->shadow_ofs_y - dsc->shadow_spread; c0e8: 4659 mov r1, fp c0ea: 8c89 ldrh r1, [r1, #36] ; 0x24 c0ec: 1a88 subs r0, r1, r2 c0ee: 182d adds r5, r5, r0 c0f0: b2ad uxth r5, r5 c0f2: 805d strh r5, [r3, #2] sh_rect_area.y2 = coords->y2 + dsc->shadow_ofs_y + dsc->shadow_spread; c0f4: 1852 adds r2, r2, r1 c0f6: 18a4 adds r4, r4, r2 c0f8: b2a4 uxth r4, r4 c0fa: 80dc strh r4, [r3, #6] sh_area.x1 = sh_rect_area.x1 - sw / 2 - 1; c0fc: 4643 mov r3, r8 c0fe: 0fdb lsrs r3, r3, #31 c100: 4443 add r3, r8 c102: 1059 asrs r1, r3, #1 c104: 43c9 mvns r1, r1 c106: b289 uxth r1, r1 c108: aa16 add r2, sp, #88 ; 0x58 c10a: 1878 adds r0, r7, r1 c10c: 8010 strh r0, [r2, #0] sh_area.x2 = sh_rect_area.x2 + sw / 2 + 1; c10e: 105b asrs r3, r3, #1 c110: 3301 adds r3, #1 c112: b29b uxth r3, r3 c114: 18f0 adds r0, r6, r3 c116: 8090 strh r0, [r2, #4] sh_area.y1 = sh_rect_area.y1 - sw / 2 - 1; c118: 1869 adds r1, r5, r1 c11a: 8051 strh r1, [r2, #2] sh_area.y2 = sh_rect_area.y2 + sw / 2 + 1; c11c: 18e3 adds r3, r4, r3 c11e: 80d3 strh r3, [r2, #6] if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; c120: 9b06 ldr r3, [sp, #24] c122: 2bfa cmp r3, #250 ; 0xfa c124: d901 bls.n c12a c126: 23ff movs r3, #255 ; 0xff c128: 9306 str r3, [sp, #24] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); c12a: 4b9f ldr r3, [pc, #636] ; (c3a8 ) c12c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); c12e: 4b9f ldr r3, [pc, #636] ; (c3ac ) c130: 4798 blx r3 c132: 4682 mov sl, r0 is_common = _lv_area_intersect(&draw_area, &sh_area, clip); c134: 9a04 ldr r2, [sp, #16] c136: a916 add r1, sp, #88 ; 0x58 c138: a818 add r0, sp, #96 ; 0x60 c13a: 4b9d ldr r3, [pc, #628] ; (c3b0 ) c13c: 4798 blx r3 if(is_common == false) return; c13e: 2800 cmp r0, #0 c140: d101 bne.n c146 c142: f000 fe9a bl ce7a draw_area.x1 -= disp_area->x1; c146: 4653 mov r3, sl c148: 8a1b ldrh r3, [r3, #16] c14a: 469c mov ip, r3 c14c: ab18 add r3, sp, #96 ; 0x60 c14e: 881a ldrh r2, [r3, #0] c150: 4661 mov r1, ip c152: 1a52 subs r2, r2, r1 c154: 801a strh r2, [r3, #0] draw_area.y1 -= disp_area->y1; c156: 4652 mov r2, sl c158: 8a50 ldrh r0, [r2, #18] c15a: 885a ldrh r2, [r3, #2] c15c: 1a12 subs r2, r2, r0 c15e: 805a strh r2, [r3, #2] draw_area.x2 -= disp_area->x1; c160: 8899 ldrh r1, [r3, #4] c162: 4662 mov r2, ip c164: 1a89 subs r1, r1, r2 c166: 8099 strh r1, [r3, #4] draw_area.y2 -= disp_area->y1; c168: 88da ldrh r2, [r3, #6] c16a: 1a12 subs r2, r2, r0 c16c: 80da strh r2, [r3, #6] c16e: 2300 movs r3, #0 { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; c170: a91a add r1, sp, #104 ; 0x68 c172: 4648 mov r0, r9 c174: 5cc2 ldrb r2, [r0, r3] c176: 545a strb r2, [r3, r1] c178: 3301 adds r3, #1 while(len) { c17a: 2b08 cmp r3, #8 c17c: d1fa bne.n c174 c17e: 4681 mov r9, r0 bg_coords.x1 += 1; c180: ab1a add r3, sp, #104 ; 0x68 c182: 8819 ldrh r1, [r3, #0] c184: 3101 adds r1, #1 c186: b28a uxth r2, r1 c188: 4694 mov ip, r2 c18a: 801a strh r2, [r3, #0] bg_coords.y1 += 1; c18c: 8858 ldrh r0, [r3, #2] c18e: 3001 adds r0, #1 c190: b282 uxth r2, r0 c192: 9205 str r2, [sp, #20] c194: 466a mov r2, sp c196: 8a92 ldrh r2, [r2, #20] c198: 805a strh r2, [r3, #2] bg_coords.x2 -= 1; c19a: 8898 ldrh r0, [r3, #4] c19c: 1e42 subs r2, r0, #1 c19e: 809a strh r2, [r3, #4] bg_coords.y2 -= 1; c1a0: 88da ldrh r2, [r3, #6] c1a2: 1e51 subs r1, r2, #1 c1a4: 80d9 strh r1, [r3, #6] int32_t r_bg = dsc->radius; c1a6: 465b mov r3, fp c1a8: 2100 movs r1, #0 c1aa: 5e5b ldrsh r3, [r3, r1] c1ac: 4661 mov r1, ip c1ae: 1a41 subs r1, r0, r1 c1b0: b209 sxth r1, r1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c1b2: 9805 ldr r0, [sp, #20] c1b4: 1a10 subs r0, r2, r0 c1b6: b200 sxth r0, r0 int32_t short_side = LV_MATH_MIN(lv_area_get_width(&bg_coords), lv_area_get_height(&bg_coords)); c1b8: 0002 movs r2, r0 c1ba: 4281 cmp r1, r0 c1bc: da00 bge.n c1c0 c1be: 000a movs r2, r1 if(r_bg > short_side >> 1) r_bg = short_side >> 1; c1c0: 1052 asrs r2, r2, #1 c1c2: 920f str r2, [sp, #60] ; 0x3c c1c4: 429a cmp r2, r3 c1c6: dd00 ble.n c1ca c1c8: 930f str r3, [sp, #60] ; 0x3c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c1ca: 3601 adds r6, #1 c1cc: 1bf6 subs r6, r6, r7 c1ce: b2b2 uxth r2, r6 c1d0: 4692 mov sl, r2 c1d2: b211 sxth r1, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c1d4: 3401 adds r4, #1 c1d6: 1b65 subs r5, r4, r5 c1d8: b2ad uxth r5, r5 c1da: b22a sxth r2, r5 short_side = LV_MATH_MIN(lv_area_get_width(&sh_rect_area), lv_area_get_height(&sh_rect_area)); c1dc: 0014 movs r4, r2 c1de: 4291 cmp r1, r2 c1e0: da00 bge.n c1e4 c1e2: 000c movs r4, r1 if(r_sh > short_side >> 1) r_sh = short_side >> 1; c1e4: 1064 asrs r4, r4, #1 c1e6: 429c cmp r4, r3 c1e8: dd00 ble.n c1ec c1ea: 001c movs r4, r3 int32_t corner_size = sw + r_sh; c1ec: 44a0 add r8, r4 c1ee: 4643 mov r3, r8 c1f0: 9309 str r3, [sp, #36] ; 0x24 sh_buf = _lv_mem_buf_get(corner_size * corner_size * sizeof(uint16_t)); c1f2: 4640 mov r0, r8 c1f4: 4358 muls r0, r3 c1f6: 0040 lsls r0, r0, #1 c1f8: 4b6e ldr r3, [pc, #440] ; (c3b4 ) c1fa: 4798 blx r3 c1fc: 900e str r0, [sp, #56] ; 0x38 shadow_draw_corner_buf(&sh_rect_area, (uint16_t *)sh_buf, dsc->shadow_width, r_sh); c1fe: 465b mov r3, fp c200: 2720 movs r7, #32 c202: 5fdf ldrsh r7, [r3, r7] c204: b222 sxth r2, r4 int32_t sw_ori = sw; c206: 46b8 mov r8, r7 int32_t size = sw_ori + r; c208: 19d3 adds r3, r2, r7 c20a: 9307 str r3, [sp, #28] c20c: 2300 movs r3, #0 *d8 = *s8; c20e: a822 add r0, sp, #136 ; 0x88 c210: a914 add r1, sp, #80 ; 0x50 c212: 5c5e ldrb r6, [r3, r1] c214: 541e strb r6, [r3, r0] c216: 3301 adds r3, #1 while(len) { c218: 2b08 cmp r3, #8 c21a: d1fa bne.n c212 sh_area.x2 = sw / 2 + r - 1 - ((sw & 1) ? 0 : 1); c21c: 0ffb lsrs r3, r7, #31 c21e: 19db adds r3, r3, r7 c220: 105b asrs r3, r3, #1 c222: b29b uxth r3, r3 c224: 2101 movs r1, #1 c226: 4039 ands r1, r7 c228: 000e movs r6, r1 c22a: 9110 str r1, [sp, #64] ; 0x40 c22c: 1e59 subs r1, r3, #1 c22e: 4270 negs r0, r6 c230: 4170 adcs r0, r6 c232: 1a09 subs r1, r1, r0 c234: 190c adds r4, r1, r4 c236: b2a4 uxth r4, r4 c238: a922 add r1, sp, #136 ; 0x88 c23a: 808c strh r4, [r1, #4] sh_area.y1 = sw / 2 + 1; c23c: 3301 adds r3, #1 c23e: b29b uxth r3, r3 c240: 804b strh r3, [r1, #2] sh_area.x1 = sh_area.x2 - lv_area_get_width(coords); c242: 4650 mov r0, sl c244: 1a24 subs r4, r4, r0 c246: 800c strh r4, [r1, #0] sh_area.y2 = sh_area.y1 + lv_area_get_height(coords); c248: 18ed adds r5, r5, r3 c24a: 80cd strh r5, [r1, #6] lv_draw_mask_radius_init(&mask_param, &sh_area, r, false); c24c: 2300 movs r3, #0 c24e: a829 add r0, sp, #164 ; 0xa4 c250: 4c59 ldr r4, [pc, #356] ; (c3b8 ) c252: 47a0 blx r4 if(sw_ori == 1) sw = 1; c254: 4643 mov r3, r8 c256: 2b01 cmp r3, #1 c258: d101 bne.n c25e c25a: f002 f979 bl e550 c25e: 107b asrs r3, r7, #1 c260: 930d str r3, [sp, #52] ; 0x34 lv_opa_t * mask_line = _lv_mem_buf_get(size); c262: 9c07 ldr r4, [sp, #28] c264: 940c str r4, [sp, #48] ; 0x30 c266: 0020 movs r0, r4 c268: 4b52 ldr r3, [pc, #328] ; (c3b4 ) c26a: 4798 blx r3 c26c: 900a str r0, [sp, #40] ; 0x28 for(y = 0; y < size; y++) { c26e: 2c00 cmp r4, #0 c270: dd61 ble.n c336 _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c272: 9b0c ldr r3, [sp, #48] ; 0x30 c274: 005b lsls r3, r3, #1 c276: 930b str r3, [sp, #44] ; 0x2c c278: 9b07 ldr r3, [sp, #28] c27a: 4a50 ldr r2, [pc, #320] ; (c3bc ) c27c: 4694 mov ip, r2 c27e: 4463 add r3, ip c280: 005b lsls r3, r3, #1 c282: 9a0e ldr r2, [sp, #56] ; 0x38 c284: 4692 mov sl, r2 c286: 2200 movs r2, #0 c288: 4690 mov r8, r2 else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; c28a: 4f4d ldr r7, [pc, #308] ; (c3c0 ) c28c: 4652 mov r2, sl c28e: 9208 str r2, [sp, #32] c290: 46ca mov sl, r9 c292: 4699 mov r9, r3 c294: e01c b.n c2d0 if(dsc->shadow_width == 1 && dsc->shadow_ofs_x == 0 && c296: 465b mov r3, fp c298: 2224 movs r2, #36 ; 0x24 c29a: 5e9b ldrsh r3, [r3, r2] c29c: 2b00 cmp r3, #0 c29e: d000 beq.n c2a2 c2a0: e716 b.n c0d0 dsc->shadow_ofs_y == 0 && dsc->shadow_spread <= 0) { c2a2: 465b mov r3, fp c2a4: 2226 movs r2, #38 ; 0x26 c2a6: 5e9b ldrsh r3, [r3, r2] c2a8: 2b00 cmp r3, #0 c2aa: dd00 ble.n c2ae c2ac: e710 b.n c0d0 c2ae: f000 fde4 bl ce7a _lv_memset_00(sh_ups_tmp_buf, size * sizeof(sh_ups_tmp_buf[0])); c2b2: 990b ldr r1, [sp, #44] ; 0x2c c2b4: 9808 ldr r0, [sp, #32] c2b6: 4b43 ldr r3, [pc, #268] ; (c3c4 ) c2b8: 4798 blx r3 sh_ups_tmp_buf += size; c2ba: 9b08 ldr r3, [sp, #32] c2bc: 9a0b ldr r2, [sp, #44] ; 0x2c c2be: 4694 mov ip, r2 c2c0: 4463 add r3, ip c2c2: 9308 str r3, [sp, #32] for(y = 0; y < size; y++) { c2c4: 2301 movs r3, #1 c2c6: 469c mov ip, r3 c2c8: 44e0 add r8, ip c2ca: 9b07 ldr r3, [sp, #28] c2cc: 4543 cmp r3, r8 c2ce: dd31 ble.n c334 _lv_memset_ff(mask_line, size); c2d0: 990c ldr r1, [sp, #48] ; 0x30 c2d2: 9c0a ldr r4, [sp, #40] ; 0x28 c2d4: 0020 movs r0, r4 c2d6: 4b3c ldr r3, [pc, #240] ; (c3c8 ) c2d8: 4798 blx r3 lv_draw_mask_res_t mask_res = mask_param.dsc.cb(mask_line, 0, y, size, &mask_param); c2da: 466b mov r3, sp c2dc: 221c movs r2, #28 c2de: 5e9b ldrsh r3, [r3, r2] c2e0: 4642 mov r2, r8 c2e2: b212 sxth r2, r2 c2e4: a929 add r1, sp, #164 ; 0xa4 c2e6: 9100 str r1, [sp, #0] c2e8: 2100 movs r1, #0 c2ea: 0020 movs r0, r4 c2ec: 9c29 ldr r4, [sp, #164] ; 0xa4 c2ee: 47a0 blx r4 if(mask_res == LV_DRAW_MASK_RES_TRANSP) { c2f0: 2800 cmp r0, #0 c2f2: d0de beq.n c2b2 sh_ups_tmp_buf[0] = (mask_line[0] << SHADOW_UPSACALE_SHIFT) / sw; c2f4: 9b0d ldr r3, [sp, #52] ; 0x34 c2f6: 9305 str r3, [sp, #20] c2f8: 9d0a ldr r5, [sp, #40] ; 0x28 c2fa: 7828 ldrb r0, [r5, #0] c2fc: 0180 lsls r0, r0, #6 c2fe: 0019 movs r1, r3 c300: 4b2f ldr r3, [pc, #188] ; (c3c0 ) c302: 4798 blx r3 c304: 9b08 ldr r3, [sp, #32] c306: 8018 strh r0, [r3, #0] for(i = 1; i < size; i++) { c308: 9a07 ldr r2, [sp, #28] c30a: 2a01 cmp r2, #1 c30c: ddd5 ble.n c2ba c30e: 001c movs r4, r3 c310: 444b add r3, r9 c312: 001e movs r6, r3 c314: e005 b.n c322 if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; c316: 8823 ldrh r3, [r4, #0] c318: 8063 strh r3, [r4, #2] c31a: 3501 adds r5, #1 c31c: 3402 adds r4, #2 for(i = 1; i < size; i++) { c31e: 42a6 cmp r6, r4 c320: d0cb beq.n c2ba if(mask_line[i] == mask_line[i - 1]) sh_ups_tmp_buf[i] = sh_ups_tmp_buf[i - 1]; c322: 7868 ldrb r0, [r5, #1] c324: 782b ldrb r3, [r5, #0] c326: 4283 cmp r3, r0 c328: d0f5 beq.n c316 else sh_ups_tmp_buf[i] = (mask_line[i] << SHADOW_UPSACALE_SHIFT) / sw; c32a: 0180 lsls r0, r0, #6 c32c: 9905 ldr r1, [sp, #20] c32e: 47b8 blx r7 c330: 8060 strh r0, [r4, #2] c332: e7f2 b.n c31a c334: 46d1 mov r9, sl _lv_mem_buf_release(mask_line); c336: 980a ldr r0, [sp, #40] ; 0x28 c338: 4b24 ldr r3, [pc, #144] ; (c3cc ) c33a: 4798 blx r3 if(sw == 1) { c33c: 9b0d ldr r3, [sp, #52] ; 0x34 c33e: 2b01 cmp r3, #1 c340: d101 bne.n c346 c342: f002 f914 bl e56e shadow_blur_corner(size, sw, sh_buf); c346: 466b mov r3, sp c348: 221c movs r2, #28 c34a: 5e9b ldrsh r3, [r3, r2] c34c: 9308 str r3, [sp, #32] c34e: 9c0e ldr r4, [sp, #56] ; 0x38 c350: 0022 movs r2, r4 c352: 9d0d ldr r5, [sp, #52] ; 0x34 c354: 0029 movs r1, r5 c356: 0018 movs r0, r3 c358: 4b1d ldr r3, [pc, #116] ; (c3d0 ) c35a: 4798 blx r3 sw += sw_ori & 1; c35c: 9b10 ldr r3, [sp, #64] ; 0x40 c35e: 46ac mov ip, r5 c360: 4463 add r3, ip c362: b21f sxth r7, r3 if(sw > 1) { c364: 2f01 cmp r7, #1 c366: dd3a ble.n c3de sh_buf[0] = (sh_buf[0] << SHADOW_UPSACALE_SHIFT) / sw; c368: 9705 str r7, [sp, #20] c36a: 8820 ldrh r0, [r4, #0] c36c: 0180 lsls r0, r0, #6 c36e: 0039 movs r1, r7 c370: 4b13 ldr r3, [pc, #76] ; (c3c0 ) c372: 4798 blx r3 c374: 8020 strh r0, [r4, #0] for(i = 1; i < (uint32_t) size * size; i++) { c376: 9d0c ldr r5, [sp, #48] ; 0x30 c378: 436d muls r5, r5 c37a: 2d01 cmp r5, #1 c37c: d92a bls.n c3d4 c37e: 4a0f ldr r2, [pc, #60] ; (c3bc ) c380: 4694 mov ip, r2 c382: 4465 add r5, ip c384: 006d lsls r5, r5, #1 c386: 46a4 mov ip, r4 c388: 4465 add r5, ip else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; c38a: 4e0d ldr r6, [pc, #52] ; (c3c0 ) c38c: e002 b.n c394 c38e: 3402 adds r4, #2 for(i = 1; i < (uint32_t) size * size; i++) { c390: 42a5 cmp r5, r4 c392: d01f beq.n c3d4 if(sh_buf[i] == sh_buf[i - 1]) sh_buf[i] = sh_buf[i - 1]; c394: 8860 ldrh r0, [r4, #2] c396: 8823 ldrh r3, [r4, #0] c398: 4283 cmp r3, r0 c39a: d0f8 beq.n c38e else sh_buf[i] = (sh_buf[i] << SHADOW_UPSACALE_SHIFT) / sw; c39c: 0180 lsls r0, r0, #6 c39e: 9905 ldr r1, [sp, #20] c3a0: 47b0 blx r6 c3a2: 8060 strh r0, [r4, #2] c3a4: e7f3 b.n c38e c3a6: 46c0 nop ; (mov r8, r8) c3a8: 00005591 .word 0x00005591 c3ac: 00010e75 .word 0x00010e75 c3b0: 0001140b .word 0x0001140b c3b4: 000127a1 .word 0x000127a1 c3b8: 0000bd01 .word 0x0000bd01 c3bc: 7fffffff .word 0x7fffffff c3c0: 0001c1b9 .word 0x0001c1b9 c3c4: 00012975 .word 0x00012975 c3c8: 00012a19 .word 0x00012a19 c3cc: 00012465 .word 0x00012465 c3d0: 0000bd69 .word 0x0000bd69 shadow_blur_corner(size, sw, sh_buf); c3d4: 9a0e ldr r2, [sp, #56] ; 0x38 c3d6: 0039 movs r1, r7 c3d8: 9808 ldr r0, [sp, #32] c3da: 4bb5 ldr r3, [pc, #724] ; (c6b0 ) c3dc: 4798 blx r3 for(x = 0; x < size * size; x++) { c3de: 9f07 ldr r7, [sp, #28] c3e0: 437f muls r7, r7 c3e2: 2f00 cmp r7, #0 c3e4: d00a beq.n c3fc c3e6: 9a0e ldr r2, [sp, #56] ; 0x38 c3e8: 0013 movs r3, r2 c3ea: 0078 lsls r0, r7, #1 c3ec: 4694 mov ip, r2 c3ee: 4460 add r0, ip res_buf[x] = sh_buf[x]; c3f0: 8819 ldrh r1, [r3, #0] c3f2: 7011 strb r1, [r2, #0] c3f4: 3302 adds r3, #2 c3f6: 3201 adds r2, #1 for(x = 0; x < size * size; x++) { c3f8: 4283 cmp r3, r0 c3fa: d1f9 bne.n c3f0 lv_coord_t h_half = sh_area.y1 + lv_area_get_height(&sh_area) / 2; c3fc: a916 add r1, sp, #88 ; 0x58 c3fe: 884a ldrh r2, [r1, #2] c400: 88cb ldrh r3, [r1, #6] c402: 3301 adds r3, #1 c404: 1a9b subs r3, r3, r2 c406: b21b sxth r3, r3 c408: 0fd8 lsrs r0, r3, #31 c40a: 18c3 adds r3, r0, r3 c40c: 105b asrs r3, r3, #1 c40e: 18d3 adds r3, r2, r3 c410: b29b uxth r3, r3 c412: 9310 str r3, [sp, #64] ; 0x40 c414: b21b sxth r3, r3 c416: 930c str r3, [sp, #48] ; 0x30 lv_coord_t w_half = sh_area.x1 + lv_area_get_width(&sh_area) / 2; c418: 880a ldrh r2, [r1, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c41a: 888b ldrh r3, [r1, #4] c41c: 3301 adds r3, #1 c41e: 1a9b subs r3, r3, r2 c420: b21b sxth r3, r3 c422: 0fd9 lsrs r1, r3, #31 c424: 18cb adds r3, r1, r3 c426: 105b asrs r3, r3, #1 c428: 18d3 adds r3, r2, r3 c42a: b29b uxth r3, r3 c42c: 9311 str r3, [sp, #68] ; 0x44 c42e: b21b sxth r3, r3 c430: 930d str r3, [sp, #52] ; 0x34 if(lv_draw_mask_get_cnt() > 0) simple_mode = false; c432: 4ba0 ldr r3, [pc, #640] ; (c6b4 ) c434: 4798 blx r3 c436: 2300 movs r3, #0 c438: 9308 str r3, [sp, #32] c43a: 2800 cmp r0, #0 c43c: d110 bne.n c460 else if(dsc->shadow_ofs_x != 0 || dsc->shadow_ofs_y != 0) simple_mode = false; c43e: 465b mov r3, fp c440: 2222 movs r2, #34 ; 0x22 c442: 5e9b ldrsh r3, [r3, r2] c444: 2b00 cmp r3, #0 c446: d10b bne.n c460 c448: 465b mov r3, fp c44a: 2224 movs r2, #36 ; 0x24 c44c: 5e9b ldrsh r3, [r3, r2] c44e: 2b00 cmp r3, #0 c450: d106 bne.n c460 else if(dsc->shadow_spread != 0) simple_mode = false; c452: 465b mov r3, fp c454: 2226 movs r2, #38 ; 0x26 c456: 5e9a ldrsh r2, [r3, r2] c458: 4253 negs r3, r2 c45a: 4153 adcs r3, r2 c45c: b2db uxtb r3, r3 c45e: 9308 str r3, [sp, #32] c460: ac16 add r4, sp, #88 ; 0x58 c462: 88a0 ldrh r0, [r4, #4] c464: 3001 adds r0, #1 c466: 8823 ldrh r3, [r4, #0] c468: 1ac0 subs r0, r0, r3 lv_opa_t * mask_buf = _lv_mem_buf_get(lv_area_get_width(&sh_area)); c46a: b200 sxth r0, r0 c46c: 4b92 ldr r3, [pc, #584] ; (c6b8 ) c46e: 4798 blx r3 c470: 9005 str r0, [sp, #20] lv_draw_mask_radius_init(&mask_rout_param, &bg_coords, r_bg, true); c472: 466b mov r3, sp c474: 223c movs r2, #60 ; 0x3c c476: 5e9a ldrsh r2, [r3, r2] c478: 2301 movs r3, #1 c47a: a91a add r1, sp, #104 ; 0x68 c47c: a829 add r0, sp, #164 ; 0xa4 c47e: 4d8f ldr r5, [pc, #572] ; (c6bc ) c480: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); c482: 2100 movs r1, #0 c484: a829 add r0, sp, #164 ; 0xa4 c486: 4b8e ldr r3, [pc, #568] ; (c6c0 ) c488: 4798 blx r3 c48a: 900f str r0, [sp, #60] ; 0x3c a.x2 = sh_area.x2; c48c: 2204 movs r2, #4 c48e: 5ea3 ldrsh r3, [r4, r2] c490: a91c add r1, sp, #112 ; 0x70 c492: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; c494: 466a mov r2, sp c496: 8c92 ldrh r2, [r2, #36] ; 0x24 c498: 920a str r2, [sp, #40] ; 0x28 c49a: 3301 adds r3, #1 c49c: 1a9b subs r3, r3, r2 c49e: 800b strh r3, [r1, #0] a.y1 = sh_area.y1; c4a0: 2002 movs r0, #2 c4a2: 5e23 ldrsh r3, [r4, r0] c4a4: 804b strh r3, [r1, #2] a.y2 = a.y1 + corner_size - 1; c4a6: 3b01 subs r3, #1 c4a8: 4694 mov ip, r2 c4aa: 4463 add r3, ip c4ac: 80cb strh r3, [r1, #6] bool has_com = _lv_area_intersect(&ca, &a, clip); c4ae: 9a04 ldr r2, [sp, #16] c4b0: a81e add r0, sp, #120 ; 0x78 c4b2: 4b84 ldr r3, [pc, #528] ; (c6c4 ) c4b4: 4798 blx r3 if(has_com) { c4b6: 2800 cmp r0, #0 c4b8: d071 beq.n c59e if(ca.y2 > h_half) ca.y2 = h_half; c4ba: ab1e add r3, sp, #120 ; 0x78 c4bc: 2206 movs r2, #6 c4be: 5e9b ldrsh r3, [r3, r2] c4c0: 990c ldr r1, [sp, #48] ; 0x30 c4c2: 428b cmp r3, r1 c4c4: dd01 ble.n c4ca c4c6: ab1e add r3, sp, #120 ; 0x78 c4c8: 80d9 strh r1, [r3, #6] if(ca.x1 <= w_half) ca.x1 = w_half + 1; c4ca: ab1e add r3, sp, #120 ; 0x78 c4cc: 2200 movs r2, #0 c4ce: 5e9b ldrsh r3, [r3, r2] c4d0: 9a0d ldr r2, [sp, #52] ; 0x34 c4d2: 4293 cmp r3, r2 c4d4: dc03 bgt.n c4de c4d6: 9b11 ldr r3, [sp, #68] ; 0x44 c4d8: 3301 adds r3, #1 c4da: aa1e add r2, sp, #120 ; 0x78 c4dc: 8013 strh r3, [r2, #0] c4de: ab1e add r3, sp, #120 ; 0x78 c4e0: 2100 movs r1, #0 c4e2: 5e5a ldrsh r2, [r3, r1] c4e4: 889b ldrh r3, [r3, #4] c4e6: 3301 adds r3, #1 c4e8: 1a9b subs r3, r3, r2 c4ea: b21b sxth r3, r3 c4ec: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { c4ee: 2b00 cmp r3, #0 c4f0: dd55 ble.n c59e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c4f2: ab1e add r3, sp, #120 ; 0x78 c4f4: 2106 movs r1, #6 c4f6: 5e5c ldrsh r4, [r3, r1] c4f8: 2602 movs r6, #2 c4fa: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (ca.y1 - a.y1); c4fc: ab1c add r3, sp, #112 ; 0x70 c4fe: 2102 movs r1, #2 c500: 5e5d ldrsh r5, [r3, r1] c502: 1b75 subs r5, r6, r5 c504: 9909 ldr r1, [sp, #36] ; 0x24 c506: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c508: 2100 movs r1, #0 c50a: 5e5b ldrsh r3, [r3, r1] c50c: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); c50e: 18ad adds r5, r5, r2 c510: 9b0e ldr r3, [sp, #56] ; 0x38 c512: 469c mov ip, r3 c514: 4465 add r5, ip c516: 2300 movs r3, #0 *d8 = *s8; c518: a822 add r0, sp, #136 ; 0x88 c51a: a91e add r1, sp, #120 ; 0x78 c51c: 5c5a ldrb r2, [r3, r1] c51e: 541a strb r2, [r3, r0] c520: 3301 adds r3, #1 while(len) { c522: 2b08 cmp r3, #8 c524: d1fa bne.n c51c fa.y2 = fa.y1; c526: ab22 add r3, sp, #136 ; 0x88 c528: 885a ldrh r2, [r3, #2] c52a: 80da strh r2, [r3, #6] c52c: 3401 adds r4, #1 c52e: 1ba6 subs r6, r4, r6 c530: b236 sxth r6, r6 for(y = 0; y < h; y++) { c532: 2e00 cmp r6, #0 c534: dd33 ble.n c59e c536: 1c73 adds r3, r6, #1 c538: 4698 mov r8, r3 c53a: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c53c: ac22 add r4, sp, #136 ; 0x88 c53e: 4b62 ldr r3, [pc, #392] ; (c6c8 ) c540: 469a mov sl, r3 c542: 9507 str r5, [sp, #28] c544: 465f mov r7, fp c546: e019 b.n c57c _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c548: 8bfa ldrh r2, [r7, #30] c54a: 2329 movs r3, #41 ; 0x29 c54c: 5cfb ldrb r3, [r7, r3] c54e: 9302 str r3, [sp, #8] c550: 9b06 ldr r3, [sp, #24] c552: 9301 str r3, [sp, #4] c554: 9000 str r0, [sp, #0] c556: 9b05 ldr r3, [sp, #20] c558: 0021 movs r1, r4 c55a: 9804 ldr r0, [sp, #16] c55c: 4d5b ldr r5, [pc, #364] ; (c6cc ) c55e: 47a8 blx r5 fa.y1++; c560: 8863 ldrh r3, [r4, #2] c562: 3301 adds r3, #1 c564: 8063 strh r3, [r4, #2] fa.y2++; c566: 88e3 ldrh r3, [r4, #6] c568: 3301 adds r3, #1 c56a: 80e3 strh r3, [r4, #6] c56c: 9b09 ldr r3, [sp, #36] ; 0x24 c56e: 469c mov ip, r3 c570: 9b07 ldr r3, [sp, #28] c572: 4463 add r3, ip c574: 9307 str r3, [sp, #28] c576: 3601 adds r6, #1 for(y = 0; y < h; y++) { c578: 45b0 cmp r8, r6 c57a: d00f beq.n c59c _lv_memcpy(mask_buf, sh_buf_tmp, w); c57c: 9a0b ldr r2, [sp, #44] ; 0x2c c57e: 9907 ldr r1, [sp, #28] c580: 9805 ldr r0, [sp, #20] c582: 4b53 ldr r3, [pc, #332] ; (c6d0 ) c584: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c586: 2102 movs r1, #2 c588: 5e62 ldrsh r2, [r4, r1] c58a: 2500 movs r5, #0 c58c: 5f61 ldrsh r1, [r4, r5] c58e: 9b0b ldr r3, [sp, #44] ; 0x2c c590: 9805 ldr r0, [sp, #20] c592: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c594: 2801 cmp r0, #1 c596: d1d7 bne.n c548 c598: 3001 adds r0, #1 c59a: e7d5 b.n c548 c59c: 46bb mov fp, r7 a.x2 = sh_area.x2; c59e: aa16 add r2, sp, #88 ; 0x58 c5a0: 2104 movs r1, #4 c5a2: 5e53 ldrsh r3, [r2, r1] c5a4: a91c add r1, sp, #112 ; 0x70 c5a6: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; c5a8: 3301 adds r3, #1 c5aa: 980a ldr r0, [sp, #40] ; 0x28 c5ac: 1a1b subs r3, r3, r0 c5ae: 800b strh r3, [r1, #0] a.y1 = sh_area.y2 - corner_size + 1; c5b0: 2306 movs r3, #6 c5b2: 5ed2 ldrsh r2, [r2, r3] c5b4: 1c53 adds r3, r2, #1 c5b6: 1a1b subs r3, r3, r0 c5b8: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; c5ba: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); c5bc: 9a04 ldr r2, [sp, #16] c5be: a81e add r0, sp, #120 ; 0x78 c5c0: 4b40 ldr r3, [pc, #256] ; (c6c4 ) c5c2: 4798 blx r3 if(has_com) { c5c4: 2800 cmp r0, #0 c5c6: d100 bne.n c5ca c5c8: e085 b.n c6d6 if(ca.y1 <= h_half) ca.y1 = h_half + 1; c5ca: ab1e add r3, sp, #120 ; 0x78 c5cc: 2202 movs r2, #2 c5ce: 5e9b ldrsh r3, [r3, r2] c5d0: 9a0c ldr r2, [sp, #48] ; 0x30 c5d2: 4293 cmp r3, r2 c5d4: dc03 bgt.n c5de c5d6: 9b10 ldr r3, [sp, #64] ; 0x40 c5d8: 3301 adds r3, #1 c5da: aa1e add r2, sp, #120 ; 0x78 c5dc: 8053 strh r3, [r2, #2] if(ca.x1 <= w_half) ca.x1 = w_half + 1; c5de: ab1e add r3, sp, #120 ; 0x78 c5e0: 2200 movs r2, #0 c5e2: 5e9b ldrsh r3, [r3, r2] c5e4: 9a0d ldr r2, [sp, #52] ; 0x34 c5e6: 4293 cmp r3, r2 c5e8: dc03 bgt.n c5f2 c5ea: 9b11 ldr r3, [sp, #68] ; 0x44 c5ec: 3301 adds r3, #1 c5ee: aa1e add r2, sp, #120 ; 0x78 c5f0: 8013 strh r3, [r2, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c5f2: ab1e add r3, sp, #120 ; 0x78 c5f4: 2100 movs r1, #0 c5f6: 5e5a ldrsh r2, [r3, r1] c5f8: 889b ldrh r3, [r3, #4] c5fa: 3301 adds r3, #1 c5fc: 1a9b subs r3, r3, r2 c5fe: b21b sxth r3, r3 c600: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { c602: 2b00 cmp r3, #0 c604: dd67 ble.n c6d6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c606: ab1e add r3, sp, #120 ; 0x78 c608: 2106 movs r1, #6 c60a: 5e5c ldrsh r4, [r3, r1] c60c: 2602 movs r6, #2 c60e: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (a.y2 - ca.y2); c610: ab1c add r3, sp, #112 ; 0x70 c612: 2106 movs r1, #6 c614: 5e5d ldrsh r5, [r3, r1] c616: 1b2d subs r5, r5, r4 c618: 9909 ldr r1, [sp, #36] ; 0x24 c61a: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c61c: 2100 movs r1, #0 c61e: 5e5b ldrsh r3, [r3, r1] c620: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); c622: 18ad adds r5, r5, r2 c624: 9b0e ldr r3, [sp, #56] ; 0x38 c626: 469c mov ip, r3 c628: 4465 add r5, ip c62a: 2300 movs r3, #0 *d8 = *s8; c62c: a822 add r0, sp, #136 ; 0x88 c62e: a91e add r1, sp, #120 ; 0x78 c630: 5c5a ldrb r2, [r3, r1] c632: 541a strb r2, [r3, r0] c634: 3301 adds r3, #1 while(len) { c636: 2b08 cmp r3, #8 c638: d1fa bne.n c630 fa.y1 = fa.y2; /*Fill from bottom to top*/ c63a: ab22 add r3, sp, #136 ; 0x88 c63c: 88da ldrh r2, [r3, #6] c63e: 805a strh r2, [r3, #2] c640: 3401 adds r4, #1 c642: 1ba6 subs r6, r4, r6 c644: b236 sxth r6, r6 for(y = 0; y < h; y++) { c646: 2e00 cmp r6, #0 c648: dd45 ble.n c6d6 c64a: 1c73 adds r3, r6, #1 c64c: 4698 mov r8, r3 c64e: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c650: ac22 add r4, sp, #136 ; 0x88 c652: 4b1d ldr r3, [pc, #116] ; (c6c8 ) c654: 469a mov sl, r3 c656: 9507 str r5, [sp, #28] c658: 465f mov r7, fp c65a: e019 b.n c690 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c65c: 8bfa ldrh r2, [r7, #30] c65e: 2329 movs r3, #41 ; 0x29 c660: 5cfb ldrb r3, [r7, r3] c662: 9302 str r3, [sp, #8] c664: 9b06 ldr r3, [sp, #24] c666: 9301 str r3, [sp, #4] c668: 9000 str r0, [sp, #0] c66a: 9b05 ldr r3, [sp, #20] c66c: 0021 movs r1, r4 c66e: 9804 ldr r0, [sp, #16] c670: 4d16 ldr r5, [pc, #88] ; (c6cc ) c672: 47a8 blx r5 fa.y1--; c674: 8863 ldrh r3, [r4, #2] c676: 3b01 subs r3, #1 c678: 8063 strh r3, [r4, #2] fa.y2--; c67a: 88e3 ldrh r3, [r4, #6] c67c: 3b01 subs r3, #1 c67e: 80e3 strh r3, [r4, #6] c680: 9b09 ldr r3, [sp, #36] ; 0x24 c682: 469c mov ip, r3 c684: 9b07 ldr r3, [sp, #28] c686: 4463 add r3, ip c688: 9307 str r3, [sp, #28] c68a: 3601 adds r6, #1 for(y = 0; y < h; y++) { c68c: 4546 cmp r6, r8 c68e: d021 beq.n c6d4 _lv_memcpy(mask_buf, sh_buf_tmp, w); c690: 9a0b ldr r2, [sp, #44] ; 0x2c c692: 9907 ldr r1, [sp, #28] c694: 9805 ldr r0, [sp, #20] c696: 4b0e ldr r3, [pc, #56] ; (c6d0 ) c698: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c69a: 2102 movs r1, #2 c69c: 5e62 ldrsh r2, [r4, r1] c69e: 2500 movs r5, #0 c6a0: 5f61 ldrsh r1, [r4, r5] c6a2: 9b0b ldr r3, [sp, #44] ; 0x2c c6a4: 9805 ldr r0, [sp, #20] c6a6: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c6a8: 2801 cmp r0, #1 c6aa: d1d7 bne.n c65c c6ac: 3001 adds r0, #1 c6ae: e7d5 b.n c65c c6b0: 0000bd69 .word 0x0000bd69 c6b4: 0000bb6d .word 0x0000bb6d c6b8: 000127a1 .word 0x000127a1 c6bc: 0000bd01 .word 0x0000bd01 c6c0: 0000ba75 .word 0x0000ba75 c6c4: 0001140b .word 0x0001140b c6c8: 0000bad1 .word 0x0000bad1 c6cc: 00006fed .word 0x00006fed c6d0: 00012545 .word 0x00012545 c6d4: 46bb mov fp, r7 a.x2 = sh_area.x2; c6d6: aa16 add r2, sp, #88 ; 0x58 c6d8: 2104 movs r1, #4 c6da: 5e53 ldrsh r3, [r2, r1] c6dc: a91c add r1, sp, #112 ; 0x70 c6de: 808b strh r3, [r1, #4] a.x1 = a.x2 - corner_size + 1; c6e0: 3301 adds r3, #1 c6e2: 980a ldr r0, [sp, #40] ; 0x28 c6e4: 1a1b subs r3, r3, r0 c6e6: 800b strh r3, [r1, #0] a.y1 = sh_area.y1 + corner_size; c6e8: 8853 ldrh r3, [r2, #2] c6ea: 4684 mov ip, r0 c6ec: 4463 add r3, ip c6ee: 804b strh r3, [r1, #2] a.y2 = sh_area.y2 - corner_size; c6f0: 88d3 ldrh r3, [r2, #6] c6f2: 1a1b subs r3, r3, r0 c6f4: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); c6f6: 9a04 ldr r2, [sp, #16] c6f8: a81e add r0, sp, #120 ; 0x78 c6fa: 4bd1 ldr r3, [pc, #836] ; (ca40 ) c6fc: 4798 blx r3 if(has_com) { c6fe: 2800 cmp r0, #0 c700: d06c beq.n c7dc if(simple_mode) ca.x1 = LV_MATH_MAX(ca.x1, coords->x2); c702: 9b08 ldr r3, [sp, #32] c704: 2b00 cmp r3, #0 c706: d00a beq.n c71e c708: aa1e add r2, sp, #120 ; 0x78 c70a: 8810 ldrh r0, [r2, #0] c70c: 464b mov r3, r9 c70e: 889b ldrh r3, [r3, #4] c710: 1c19 adds r1, r3, #0 c712: b21b sxth r3, r3 c714: b204 sxth r4, r0 c716: 42a3 cmp r3, r4 c718: da00 bge.n c71c c71a: 1c01 adds r1, r0, #0 c71c: 8011 strh r1, [r2, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c71e: ab1e add r3, sp, #120 ; 0x78 c720: 2100 movs r1, #0 c722: 5e5a ldrsh r2, [r3, r1] c724: 889b ldrh r3, [r3, #4] c726: 3301 adds r3, #1 c728: 1a9b subs r3, r3, r2 c72a: b21b sxth r3, r3 c72c: 9307 str r3, [sp, #28] if(w > 0) { c72e: 2b00 cmp r3, #0 c730: dd54 ble.n c7dc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c732: ab1e add r3, sp, #120 ; 0x78 c734: 88df ldrh r7, [r3, #6] c736: 3701 adds r7, #1 c738: 885b ldrh r3, [r3, #2] c73a: 1aff subs r7, r7, r3 c73c: b23f sxth r7, r7 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); c73e: 9909 ldr r1, [sp, #36] ; 0x24 c740: 000b movs r3, r1 c742: 3b01 subs r3, #1 c744: 434b muls r3, r1 sh_buf_tmp += ca.x1 - a.x1; c746: a91c add r1, sp, #112 ; 0x70 c748: 2000 movs r0, #0 c74a: 5e09 ldrsh r1, [r1, r0] c74c: 1a52 subs r2, r2, r1 c74e: 189a adds r2, r3, r2 c750: 0013 movs r3, r2 c752: 990e ldr r1, [sp, #56] ; 0x38 c754: 468c mov ip, r1 c756: 4463 add r3, ip c758: 930b str r3, [sp, #44] ; 0x2c c75a: 2300 movs r3, #0 *d8 = *s8; c75c: a822 add r0, sp, #136 ; 0x88 c75e: a91e add r1, sp, #120 ; 0x78 c760: 5c5a ldrb r2, [r3, r1] c762: 541a strb r2, [r3, r0] c764: 3301 adds r3, #1 while(len) { c766: 2b08 cmp r3, #8 c768: d1fa bne.n c760 fa.y2 = fa.y1; c76a: ab22 add r3, sp, #136 ; 0x88 c76c: 885a ldrh r2, [r3, #2] c76e: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { c770: 2f00 cmp r7, #0 c772: dd33 ble.n c7dc c774: 2500 movs r5, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); c776: 4bb3 ldr r3, [pc, #716] ; (ca44 ) c778: 4698 mov r8, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c77a: ac22 add r4, sp, #136 ; 0x88 c77c: 9b08 ldr r3, [sp, #32] c77e: 469a mov sl, r3 c780: 465e mov r6, fp c782: 46bb mov fp, r7 c784: e015 b.n c7b2 _lv_blend_fill(clip, &fa, c786: 8bf2 ldrh r2, [r6, #30] c788: 2329 movs r3, #41 ; 0x29 c78a: 5cf3 ldrb r3, [r6, r3] c78c: 9302 str r3, [sp, #8] c78e: 2328 movs r3, #40 ; 0x28 c790: 5cf3 ldrb r3, [r6, r3] c792: 9301 str r3, [sp, #4] c794: 9000 str r0, [sp, #0] c796: 9b05 ldr r3, [sp, #20] c798: 0021 movs r1, r4 c79a: 9804 ldr r0, [sp, #16] c79c: 4faa ldr r7, [pc, #680] ; (ca48 ) c79e: 47b8 blx r7 fa.y1++; c7a0: 8863 ldrh r3, [r4, #2] c7a2: 3301 adds r3, #1 c7a4: 8063 strh r3, [r4, #2] fa.y2++; c7a6: 88e3 ldrh r3, [r4, #6] c7a8: 3301 adds r3, #1 c7aa: 80e3 strh r3, [r4, #6] for(y = 0; y < h; y++) { c7ac: 3501 adds r5, #1 c7ae: 455d cmp r5, fp c7b0: da13 bge.n c7da _lv_memcpy(mask_buf, sh_buf_tmp, w); c7b2: 9a07 ldr r2, [sp, #28] c7b4: 990b ldr r1, [sp, #44] ; 0x2c c7b6: 9805 ldr r0, [sp, #20] c7b8: 47c0 blx r8 mask_res = LV_DRAW_MASK_RES_CHANGED; c7ba: 2002 movs r0, #2 if(simple_mode) { c7bc: 4653 mov r3, sl c7be: 2b00 cmp r3, #0 c7c0: d1e1 bne.n c786 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c7c2: 2302 movs r3, #2 c7c4: 5ee2 ldrsh r2, [r4, r3] c7c6: 2300 movs r3, #0 c7c8: 5ee1 ldrsh r1, [r4, r3] c7ca: 9b07 ldr r3, [sp, #28] c7cc: 9805 ldr r0, [sp, #20] c7ce: 4f9f ldr r7, [pc, #636] ; (ca4c ) c7d0: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c7d2: 2801 cmp r0, #1 c7d4: d1d7 bne.n c786 c7d6: 3001 adds r0, #1 c7d8: e7d5 b.n c786 c7da: 46b3 mov fp, r6 for(y = 0; y < corner_size; y++) { c7dc: 9b09 ldr r3, [sp, #36] ; 0x24 c7de: 2b00 cmp r3, #0 c7e0: dd1f ble.n c822 for(x = 0; x < corner_size / 2; x++) { c7e2: 0fdf lsrs r7, r3, #31 c7e4: 469c mov ip, r3 c7e6: 4467 add r7, ip c7e8: 107f asrs r7, r7, #1 c7ea: 9d0e ldr r5, [sp, #56] ; 0x38 c7ec: 2600 movs r6, #0 c7ee: 1e5a subs r2, r3, #1 c7f0: 4694 mov ip, r2 c7f2: 46b8 mov r8, r7 c7f4: 001f movs r7, r3 c7f6: e00b b.n c810 lv_opa_t tmp = sh_buf_tmp[x]; c7f8: 7819 ldrb r1, [r3, #0] sh_buf_tmp[x] = sh_buf_tmp[corner_size - x - 1]; c7fa: 7810 ldrb r0, [r2, #0] c7fc: 7018 strb r0, [r3, #0] sh_buf_tmp[corner_size - x - 1] = tmp; c7fe: 7011 strb r1, [r2, #0] c800: 3301 adds r3, #1 c802: 3a01 subs r2, #1 for(x = 0; x < corner_size / 2; x++) { c804: 429c cmp r4, r3 c806: d1f7 bne.n c7f8 c808: 19ed adds r5, r5, r7 for(y = 0; y < corner_size; y++) { c80a: 3601 adds r6, #1 c80c: 42b7 cmp r7, r6 c80e: d008 beq.n c822 for(x = 0; x < corner_size / 2; x++) { c810: 4643 mov r3, r8 c812: 2b00 cmp r3, #0 c814: d0f8 beq.n c808 c816: 002b movs r3, r5 c818: 4662 mov r2, ip c81a: 18aa adds r2, r5, r2 c81c: 4641 mov r1, r8 c81e: 186c adds r4, r5, r1 c820: e7ea b.n c7f8 a.x1 = sh_area.x1; c822: aa16 add r2, sp, #88 ; 0x58 c824: 2100 movs r1, #0 c826: 5e53 ldrsh r3, [r2, r1] c828: a91c add r1, sp, #112 ; 0x70 c82a: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; c82c: 3b01 subs r3, #1 c82e: 9c0a ldr r4, [sp, #40] ; 0x28 c830: 46a4 mov ip, r4 c832: 4463 add r3, ip c834: 808b strh r3, [r1, #4] a.y1 = sh_area.y1; c836: 2302 movs r3, #2 c838: 5ed3 ldrsh r3, [r2, r3] c83a: 804b strh r3, [r1, #2] a.y2 = a.y1 + corner_size - 1; c83c: 3b01 subs r3, #1 c83e: 4463 add r3, ip c840: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); c842: 9a04 ldr r2, [sp, #16] c844: a81e add r0, sp, #120 ; 0x78 c846: 4b7e ldr r3, [pc, #504] ; (ca40 ) c848: 4798 blx r3 if(has_com) { c84a: 2800 cmp r0, #0 c84c: d06f beq.n c92e if(ca.y2 > h_half) ca.y2 = h_half; c84e: ab1e add r3, sp, #120 ; 0x78 c850: 2206 movs r2, #6 c852: 5e9b ldrsh r3, [r3, r2] c854: 990c ldr r1, [sp, #48] ; 0x30 c856: 428b cmp r3, r1 c858: dd01 ble.n c85e c85a: ab1e add r3, sp, #120 ; 0x78 c85c: 80d9 strh r1, [r3, #6] if(ca.x2 > w_half) ca.x2 = w_half; c85e: ab1e add r3, sp, #120 ; 0x78 c860: 2204 movs r2, #4 c862: 5e9b ldrsh r3, [r3, r2] c864: 990d ldr r1, [sp, #52] ; 0x34 c866: 428b cmp r3, r1 c868: dd01 ble.n c86e c86a: ab1e add r3, sp, #120 ; 0x78 c86c: 8099 strh r1, [r3, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c86e: ab1e add r3, sp, #120 ; 0x78 c870: 2100 movs r1, #0 c872: 5e5a ldrsh r2, [r3, r1] c874: 889b ldrh r3, [r3, #4] c876: 3301 adds r3, #1 c878: 1a9b subs r3, r3, r2 c87a: b21b sxth r3, r3 c87c: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { c87e: 2b00 cmp r3, #0 c880: dd55 ble.n c92e return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c882: ab1e add r3, sp, #120 ; 0x78 c884: 2106 movs r1, #6 c886: 5e5c ldrsh r4, [r3, r1] c888: 2602 movs r6, #2 c88a: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (ca.y1 - a.y1); c88c: ab1c add r3, sp, #112 ; 0x70 c88e: 2102 movs r1, #2 c890: 5e5d ldrsh r5, [r3, r1] c892: 1b75 subs r5, r6, r5 c894: 9909 ldr r1, [sp, #36] ; 0x24 c896: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c898: 2100 movs r1, #0 c89a: 5e5b ldrsh r3, [r3, r1] c89c: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (ca.y1 - a.y1); c89e: 18ad adds r5, r5, r2 c8a0: 9b0e ldr r3, [sp, #56] ; 0x38 c8a2: 469c mov ip, r3 c8a4: 4465 add r5, ip c8a6: 2300 movs r3, #0 *d8 = *s8; c8a8: a822 add r0, sp, #136 ; 0x88 c8aa: a91e add r1, sp, #120 ; 0x78 c8ac: 5c5a ldrb r2, [r3, r1] c8ae: 541a strb r2, [r3, r0] c8b0: 3301 adds r3, #1 while(len) { c8b2: 2b08 cmp r3, #8 c8b4: d1fa bne.n c8ac fa.y2 = fa.y1; c8b6: ab22 add r3, sp, #136 ; 0x88 c8b8: 885a ldrh r2, [r3, #2] c8ba: 80da strh r2, [r3, #6] c8bc: 3401 adds r4, #1 c8be: 1ba6 subs r6, r4, r6 c8c0: b236 sxth r6, r6 for(y = 0; y < h; y++) { c8c2: 2e00 cmp r6, #0 c8c4: dd33 ble.n c92e c8c6: 1c73 adds r3, r6, #1 c8c8: 4698 mov r8, r3 c8ca: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c8cc: ac22 add r4, sp, #136 ; 0x88 c8ce: 4b5f ldr r3, [pc, #380] ; (ca4c ) c8d0: 469a mov sl, r3 c8d2: 9507 str r5, [sp, #28] c8d4: 465f mov r7, fp c8d6: e019 b.n c90c _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c8d8: 8bfa ldrh r2, [r7, #30] c8da: 2329 movs r3, #41 ; 0x29 c8dc: 5cfb ldrb r3, [r7, r3] c8de: 9302 str r3, [sp, #8] c8e0: 9b06 ldr r3, [sp, #24] c8e2: 9301 str r3, [sp, #4] c8e4: 9000 str r0, [sp, #0] c8e6: 9b05 ldr r3, [sp, #20] c8e8: 0021 movs r1, r4 c8ea: 9804 ldr r0, [sp, #16] c8ec: 4d56 ldr r5, [pc, #344] ; (ca48 ) c8ee: 47a8 blx r5 fa.y1++; c8f0: 8863 ldrh r3, [r4, #2] c8f2: 3301 adds r3, #1 c8f4: 8063 strh r3, [r4, #2] fa.y2++; c8f6: 88e3 ldrh r3, [r4, #6] c8f8: 3301 adds r3, #1 c8fa: 80e3 strh r3, [r4, #6] c8fc: 9b09 ldr r3, [sp, #36] ; 0x24 c8fe: 469c mov ip, r3 c900: 9b07 ldr r3, [sp, #28] c902: 4463 add r3, ip c904: 9307 str r3, [sp, #28] c906: 3601 adds r6, #1 for(y = 0; y < h; y++) { c908: 4546 cmp r6, r8 c90a: d00f beq.n c92c _lv_memcpy(mask_buf, sh_buf_tmp, w); c90c: 9a0b ldr r2, [sp, #44] ; 0x2c c90e: 9907 ldr r1, [sp, #28] c910: 9805 ldr r0, [sp, #20] c912: 4b4c ldr r3, [pc, #304] ; (ca44 ) c914: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c916: 2102 movs r1, #2 c918: 5e62 ldrsh r2, [r4, r1] c91a: 2500 movs r5, #0 c91c: 5f61 ldrsh r1, [r4, r5] c91e: 9b0b ldr r3, [sp, #44] ; 0x2c c920: 9805 ldr r0, [sp, #20] c922: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; c924: 2801 cmp r0, #1 c926: d1d7 bne.n c8d8 c928: 3001 adds r0, #1 c92a: e7d5 b.n c8d8 c92c: 46bb mov fp, r7 a.x1 = sh_area.x1; c92e: aa16 add r2, sp, #88 ; 0x58 c930: 2100 movs r1, #0 c932: 5e53 ldrsh r3, [r2, r1] c934: a91c add r1, sp, #112 ; 0x70 c936: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; c938: 3b01 subs r3, #1 c93a: 9c0a ldr r4, [sp, #40] ; 0x28 c93c: 46a4 mov ip, r4 c93e: 4463 add r3, ip c940: 808b strh r3, [r1, #4] a.y1 = sh_area.y2 - corner_size + 1; c942: 2306 movs r3, #6 c944: 5ed2 ldrsh r2, [r2, r3] c946: 1c53 adds r3, r2, #1 c948: 1b1b subs r3, r3, r4 c94a: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; c94c: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); c94e: 9a04 ldr r2, [sp, #16] c950: a81e add r0, sp, #120 ; 0x78 c952: 4b3b ldr r3, [pc, #236] ; (ca40 ) c954: 4798 blx r3 if(has_com) { c956: 2800 cmp r0, #0 c958: d100 bne.n c95c c95a: e07a b.n ca52 if(ca.y1 <= h_half) ca.y1 = h_half + 1; c95c: ab1e add r3, sp, #120 ; 0x78 c95e: 2202 movs r2, #2 c960: 5e9b ldrsh r3, [r3, r2] c962: 9a0c ldr r2, [sp, #48] ; 0x30 c964: 4293 cmp r3, r2 c966: dc03 bgt.n c970 c968: 9b10 ldr r3, [sp, #64] ; 0x40 c96a: 3301 adds r3, #1 c96c: aa1e add r2, sp, #120 ; 0x78 c96e: 8053 strh r3, [r2, #2] if(ca.x2 > w_half) ca.x2 = w_half; c970: ab1e add r3, sp, #120 ; 0x78 c972: 2204 movs r2, #4 c974: 5e9b ldrsh r3, [r3, r2] c976: 990d ldr r1, [sp, #52] ; 0x34 c978: 428b cmp r3, r1 c97a: dd01 ble.n c980 c97c: ab1e add r3, sp, #120 ; 0x78 c97e: 8099 strh r1, [r3, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); c980: ab1e add r3, sp, #120 ; 0x78 c982: 2100 movs r1, #0 c984: 5e5a ldrsh r2, [r3, r1] c986: 889b ldrh r3, [r3, #4] c988: 3301 adds r3, #1 c98a: 1a9b subs r3, r3, r2 c98c: b21b sxth r3, r3 c98e: 930b str r3, [sp, #44] ; 0x2c if(w > 0) { c990: 2b00 cmp r3, #0 c992: dd5e ble.n ca52 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); c994: ab1e add r3, sp, #120 ; 0x78 c996: 2106 movs r1, #6 c998: 5e5c ldrsh r4, [r3, r1] c99a: 2602 movs r6, #2 c99c: 5f9e ldrsh r6, [r3, r6] sh_buf_tmp += corner_size * (a.y2 - ca.y2); c99e: ab1c add r3, sp, #112 ; 0x70 c9a0: 2106 movs r1, #6 c9a2: 5e5d ldrsh r5, [r3, r1] c9a4: 1b2d subs r5, r5, r4 c9a6: 9909 ldr r1, [sp, #36] ; 0x24 c9a8: 434d muls r5, r1 sh_buf_tmp = sh_buf + (ca.x1 - a.x1); c9aa: 2100 movs r1, #0 c9ac: 5e5b ldrsh r3, [r3, r1] c9ae: 1ad2 subs r2, r2, r3 sh_buf_tmp += corner_size * (a.y2 - ca.y2); c9b0: 18ad adds r5, r5, r2 c9b2: 9b0e ldr r3, [sp, #56] ; 0x38 c9b4: 469c mov ip, r3 c9b6: 4465 add r5, ip c9b8: 2300 movs r3, #0 *d8 = *s8; c9ba: a822 add r0, sp, #136 ; 0x88 c9bc: a91e add r1, sp, #120 ; 0x78 c9be: 5c5a ldrb r2, [r3, r1] c9c0: 541a strb r2, [r3, r0] c9c2: 3301 adds r3, #1 while(len) { c9c4: 2b08 cmp r3, #8 c9c6: d1fa bne.n c9be fa.y1 = fa.y2; /*Fill from bottom to top*/ c9c8: ab22 add r3, sp, #136 ; 0x88 c9ca: 88da ldrh r2, [r3, #6] c9cc: 805a strh r2, [r3, #2] c9ce: 3401 adds r4, #1 c9d0: 1ba6 subs r6, r4, r6 c9d2: b236 sxth r6, r6 for(y = 0; y < h; y++) { c9d4: 2e00 cmp r6, #0 c9d6: dd3c ble.n ca52 c9d8: 1c73 adds r3, r6, #1 c9da: 4698 mov r8, r3 c9dc: 2601 movs r6, #1 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); c9de: ac22 add r4, sp, #136 ; 0x88 c9e0: 4b1a ldr r3, [pc, #104] ; (ca4c ) c9e2: 469a mov sl, r3 c9e4: 9507 str r5, [sp, #28] c9e6: 465f mov r7, fp c9e8: e019 b.n ca1e _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, c9ea: 8bfa ldrh r2, [r7, #30] c9ec: 2329 movs r3, #41 ; 0x29 c9ee: 5cfb ldrb r3, [r7, r3] c9f0: 9302 str r3, [sp, #8] c9f2: 9b06 ldr r3, [sp, #24] c9f4: 9301 str r3, [sp, #4] c9f6: 9000 str r0, [sp, #0] c9f8: 9b05 ldr r3, [sp, #20] c9fa: 0021 movs r1, r4 c9fc: 9804 ldr r0, [sp, #16] c9fe: 4d12 ldr r5, [pc, #72] ; (ca48 ) ca00: 47a8 blx r5 fa.y1--; ca02: 8863 ldrh r3, [r4, #2] ca04: 3b01 subs r3, #1 ca06: 8063 strh r3, [r4, #2] fa.y2--; ca08: 88e3 ldrh r3, [r4, #6] ca0a: 3b01 subs r3, #1 ca0c: 80e3 strh r3, [r4, #6] ca0e: 9b09 ldr r3, [sp, #36] ; 0x24 ca10: 469c mov ip, r3 ca12: 9b07 ldr r3, [sp, #28] ca14: 4463 add r3, ip ca16: 9307 str r3, [sp, #28] ca18: 3601 adds r6, #1 for(y = 0; y < h; y++) { ca1a: 4546 cmp r6, r8 ca1c: d018 beq.n ca50 _lv_memcpy(mask_buf, sh_buf_tmp, w); ca1e: 9a0b ldr r2, [sp, #44] ; 0x2c ca20: 9907 ldr r1, [sp, #28] ca22: 9805 ldr r0, [sp, #20] ca24: 4b07 ldr r3, [pc, #28] ; (ca44 ) ca26: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ca28: 2102 movs r1, #2 ca2a: 5e62 ldrsh r2, [r4, r1] ca2c: 2500 movs r5, #0 ca2e: 5f61 ldrsh r1, [r4, r5] ca30: 9b0b ldr r3, [sp, #44] ; 0x2c ca32: 9805 ldr r0, [sp, #20] ca34: 47d0 blx sl if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ca36: 2801 cmp r0, #1 ca38: d1d7 bne.n c9ea ca3a: 3001 adds r0, #1 ca3c: e7d5 b.n c9ea ca3e: 46c0 nop ; (mov r8, r8) ca40: 0001140b .word 0x0001140b ca44: 00012545 .word 0x00012545 ca48: 00006fed .word 0x00006fed ca4c: 0000bad1 .word 0x0000bad1 ca50: 46bb mov fp, r7 a.x1 = sh_area.x1; ca52: aa16 add r2, sp, #88 ; 0x58 ca54: 2100 movs r1, #0 ca56: 5e53 ldrsh r3, [r2, r1] ca58: a91c add r1, sp, #112 ; 0x70 ca5a: 800b strh r3, [r1, #0] a.x2 = a.x1 + corner_size - 1; ca5c: 3b01 subs r3, #1 ca5e: 9c0a ldr r4, [sp, #40] ; 0x28 ca60: 46a4 mov ip, r4 ca62: 4463 add r3, ip ca64: 808b strh r3, [r1, #4] a.y1 = sh_area.y1 + corner_size; ca66: 8853 ldrh r3, [r2, #2] ca68: 4463 add r3, ip ca6a: 804b strh r3, [r1, #2] a.y2 = sh_area.y2 - corner_size; ca6c: 88d3 ldrh r3, [r2, #6] ca6e: 1b1b subs r3, r3, r4 ca70: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); ca72: 9a04 ldr r2, [sp, #16] ca74: a81e add r0, sp, #120 ; 0x78 ca76: 4bc5 ldr r3, [pc, #788] ; (cd8c ) ca78: 4798 blx r3 if(has_com) { ca7a: 2800 cmp r0, #0 ca7c: d06c beq.n cb58 if(simple_mode) ca.x2 = LV_MATH_MIN(coords->x1, ca.x2); ca7e: 9b08 ldr r3, [sp, #32] ca80: 2b00 cmp r3, #0 ca82: d00a beq.n ca9a ca84: aa1e add r2, sp, #120 ; 0x78 ca86: 464b mov r3, r9 ca88: 8818 ldrh r0, [r3, #0] ca8a: 8893 ldrh r3, [r2, #4] ca8c: 1c19 adds r1, r3, #0 ca8e: b21b sxth r3, r3 ca90: b204 sxth r4, r0 ca92: 42a3 cmp r3, r4 ca94: dd00 ble.n ca98 ca96: 1c01 adds r1, r0, #0 ca98: 8091 strh r1, [r2, #4] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ca9a: ab1e add r3, sp, #120 ; 0x78 ca9c: 2100 movs r1, #0 ca9e: 5e5a ldrsh r2, [r3, r1] caa0: 889b ldrh r3, [r3, #4] caa2: 3301 adds r3, #1 caa4: 1a9b subs r3, r3, r2 caa6: b21b sxth r3, r3 caa8: 9307 str r3, [sp, #28] if(w > 0) { caaa: 2b00 cmp r3, #0 caac: dd54 ble.n cb58 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); caae: ab1e add r3, sp, #120 ; 0x78 cab0: 88df ldrh r7, [r3, #6] cab2: 3701 adds r7, #1 cab4: 885b ldrh r3, [r3, #2] cab6: 1aff subs r7, r7, r3 cab8: b23f sxth r7, r7 sh_buf_tmp = sh_buf + corner_size * (corner_size - 1); caba: 9909 ldr r1, [sp, #36] ; 0x24 cabc: 000b movs r3, r1 cabe: 3b01 subs r3, #1 cac0: 434b muls r3, r1 sh_buf_tmp += ca.x1 - a.x1; cac2: a91c add r1, sp, #112 ; 0x70 cac4: 2000 movs r0, #0 cac6: 5e09 ldrsh r1, [r1, r0] cac8: 1a52 subs r2, r2, r1 caca: 189a adds r2, r3, r2 cacc: 0013 movs r3, r2 cace: 990e ldr r1, [sp, #56] ; 0x38 cad0: 468c mov ip, r1 cad2: 4463 add r3, ip cad4: 930b str r3, [sp, #44] ; 0x2c cad6: 2300 movs r3, #0 *d8 = *s8; cad8: a822 add r0, sp, #136 ; 0x88 cada: a91e add r1, sp, #120 ; 0x78 cadc: 5c5a ldrb r2, [r3, r1] cade: 541a strb r2, [r3, r0] cae0: 3301 adds r3, #1 while(len) { cae2: 2b08 cmp r3, #8 cae4: d1fa bne.n cadc fa.y2 = fa.y1; cae6: ab22 add r3, sp, #136 ; 0x88 cae8: 885a ldrh r2, [r3, #2] caea: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { caec: 2f00 cmp r7, #0 caee: dd33 ble.n cb58 caf0: 2500 movs r5, #0 _lv_memcpy(mask_buf, sh_buf_tmp, w); caf2: 4ba7 ldr r3, [pc, #668] ; (cd90 ) caf4: 4698 mov r8, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); caf6: ac22 add r4, sp, #136 ; 0x88 caf8: 9b08 ldr r3, [sp, #32] cafa: 469a mov sl, r3 cafc: 465e mov r6, fp cafe: 46bb mov fp, r7 cb00: e015 b.n cb2e _lv_blend_fill(clip, &fa, cb02: 8bf2 ldrh r2, [r6, #30] cb04: 2329 movs r3, #41 ; 0x29 cb06: 5cf3 ldrb r3, [r6, r3] cb08: 9302 str r3, [sp, #8] cb0a: 2328 movs r3, #40 ; 0x28 cb0c: 5cf3 ldrb r3, [r6, r3] cb0e: 9301 str r3, [sp, #4] cb10: 9000 str r0, [sp, #0] cb12: 9b05 ldr r3, [sp, #20] cb14: 0021 movs r1, r4 cb16: 9804 ldr r0, [sp, #16] cb18: 4f9e ldr r7, [pc, #632] ; (cd94 ) cb1a: 47b8 blx r7 fa.y1++; cb1c: 8863 ldrh r3, [r4, #2] cb1e: 3301 adds r3, #1 cb20: 8063 strh r3, [r4, #2] fa.y2++; cb22: 88e3 ldrh r3, [r4, #6] cb24: 3301 adds r3, #1 cb26: 80e3 strh r3, [r4, #6] for(y = 0; y < h; y++) { cb28: 3501 adds r5, #1 cb2a: 455d cmp r5, fp cb2c: da13 bge.n cb56 _lv_memcpy(mask_buf, sh_buf_tmp, w); cb2e: 9a07 ldr r2, [sp, #28] cb30: 990b ldr r1, [sp, #44] ; 0x2c cb32: 9805 ldr r0, [sp, #20] cb34: 47c0 blx r8 mask_res = LV_DRAW_MASK_RES_CHANGED; cb36: 2002 movs r0, #2 if(simple_mode) { cb38: 4653 mov r3, sl cb3a: 2b00 cmp r3, #0 cb3c: d1e1 bne.n cb02 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cb3e: 2302 movs r3, #2 cb40: 5ee2 ldrsh r2, [r4, r3] cb42: 2300 movs r3, #0 cb44: 5ee1 ldrsh r1, [r4, r3] cb46: 9b07 ldr r3, [sp, #28] cb48: 9805 ldr r0, [sp, #20] cb4a: 4f93 ldr r7, [pc, #588] ; (cd98 ) cb4c: 47b8 blx r7 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cb4e: 2801 cmp r0, #1 cb50: d1d7 bne.n cb02 cb52: 3001 adds r0, #1 cb54: e7d5 b.n cb02 cb56: 46b3 mov fp, r6 a.x1 = sh_area.x1 + corner_size; cb58: a91c add r1, sp, #112 ; 0x70 cb5a: ab16 add r3, sp, #88 ; 0x58 cb5c: 881a ldrh r2, [r3, #0] cb5e: 9c0a ldr r4, [sp, #40] ; 0x28 cb60: 46a4 mov ip, r4 cb62: 4462 add r2, ip cb64: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; cb66: 889a ldrh r2, [r3, #4] cb68: 1b12 subs r2, r2, r4 cb6a: 808a strh r2, [r1, #4] a.y1 = sh_area.y1; cb6c: 2202 movs r2, #2 cb6e: 5e9b ldrsh r3, [r3, r2] cb70: 804b strh r3, [r1, #2] a.y2 = sh_area.y1 + corner_size - 1; cb72: 3b01 subs r3, #1 cb74: 4463 add r3, ip cb76: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); cb78: 9a04 ldr r2, [sp, #16] cb7a: a81e add r0, sp, #120 ; 0x78 cb7c: 4b83 ldr r3, [pc, #524] ; (cd8c ) cb7e: 4798 blx r3 if(has_com) { cb80: 2800 cmp r0, #0 cb82: d076 beq.n cc72 if(simple_mode) ca.y2 = LV_MATH_MIN(ca.y2, coords->y1); cb84: 9b08 ldr r3, [sp, #32] cb86: 2b00 cmp r3, #0 cb88: d00a beq.n cba0 cb8a: aa1e add r2, sp, #120 ; 0x78 cb8c: 88d0 ldrh r0, [r2, #6] cb8e: 464b mov r3, r9 cb90: 885b ldrh r3, [r3, #2] cb92: 1c19 adds r1, r3, #0 cb94: b21b sxth r3, r3 cb96: b204 sxth r4, r0 cb98: 42a3 cmp r3, r4 cb9a: dd00 ble.n cb9e cb9c: 1c01 adds r1, r0, #0 cb9e: 80d1 strh r1, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cba0: aa1e add r2, sp, #120 ; 0x78 cba2: 8893 ldrh r3, [r2, #4] cba4: 3301 adds r3, #1 cba6: 8811 ldrh r1, [r2, #0] cba8: 1a5b subs r3, r3, r1 cbaa: b21b sxth r3, r3 cbac: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cbae: 2102 movs r1, #2 cbb0: 5e53 ldrsh r3, [r2, r1] cbb2: 88d4 ldrh r4, [r2, #6] cbb4: 3401 adds r4, #1 cbb6: 1ae4 subs r4, r4, r3 cbb8: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size - 1; cbba: 9909 ldr r1, [sp, #36] ; 0x24 cbbc: 910c str r1, [sp, #48] ; 0x30 sh_buf_tmp += corner_size * (ca.y1 - a.y1); cbbe: aa1c add r2, sp, #112 ; 0x70 cbc0: 2502 movs r5, #2 cbc2: 5f55 ldrsh r5, [r2, r5] cbc4: 1b5d subs r5, r3, r5 cbc6: 434d muls r5, r1 sh_buf_tmp = sh_buf + corner_size - 1; cbc8: 1e4b subs r3, r1, #1 sh_buf_tmp += corner_size * (ca.y1 - a.y1); cbca: 18ed adds r5, r5, r3 cbcc: 9b0e ldr r3, [sp, #56] ; 0x38 cbce: 469c mov ip, r3 cbd0: 4465 add r5, ip cbd2: 2300 movs r3, #0 *d8 = *s8; cbd4: a822 add r0, sp, #136 ; 0x88 cbd6: a91e add r1, sp, #120 ; 0x78 cbd8: 5c5a ldrb r2, [r3, r1] cbda: 541a strb r2, [r3, r0] cbdc: 3301 adds r3, #1 while(len) { cbde: 2b08 cmp r3, #8 cbe0: d1fa bne.n cbd8 fa.y2 = fa.y1; cbe2: ab22 add r3, sp, #136 ; 0x88 cbe4: 885a ldrh r2, [r3, #2] cbe6: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { cbe8: 2c00 cmp r4, #0 cbea: dd42 ble.n cc72 cbec: 1c63 adds r3, r4, #1 cbee: 4698 mov r8, r3 cbf0: 2601 movs r6, #1 _lv_memset(mask_buf, opa_tmp, w); cbf2: 4b6a ldr r3, [pc, #424] ; (cd9c ) cbf4: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cbf6: ac22 add r4, sp, #136 ; 0x88 cbf8: 9507 str r5, [sp, #28] cbfa: 465f mov r7, fp cbfc: e01e b.n cc3c if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cbfe: 9b06 ldr r3, [sp, #24] cc00: 2bff cmp r3, #255 ; 0xff cc02: d11f bne.n cc44 lv_opa_t opa_tmp = sh_buf_tmp[0]; cc04: 9906 ldr r1, [sp, #24] cc06: e020 b.n cc4a _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cc08: 8bfa ldrh r2, [r7, #30] cc0a: 2329 movs r3, #41 ; 0x29 cc0c: 5cfb ldrb r3, [r7, r3] cc0e: 9302 str r3, [sp, #8] cc10: 23ff movs r3, #255 ; 0xff cc12: 9301 str r3, [sp, #4] cc14: 9000 str r0, [sp, #0] cc16: 9b05 ldr r3, [sp, #20] cc18: 0021 movs r1, r4 cc1a: 9804 ldr r0, [sp, #16] cc1c: 4d5d ldr r5, [pc, #372] ; (cd94 ) cc1e: 47a8 blx r5 fa.y1++; cc20: 8863 ldrh r3, [r4, #2] cc22: 3301 adds r3, #1 cc24: 8063 strh r3, [r4, #2] fa.y2++; cc26: 88e3 ldrh r3, [r4, #6] cc28: 3301 adds r3, #1 cc2a: 80e3 strh r3, [r4, #6] sh_buf_tmp += corner_size; cc2c: 9b0c ldr r3, [sp, #48] ; 0x30 cc2e: 469c mov ip, r3 cc30: 9b07 ldr r3, [sp, #28] cc32: 4463 add r3, ip cc34: 9307 str r3, [sp, #28] cc36: 3601 adds r6, #1 for(y = 0; y < h; y++) { cc38: 4546 cmp r6, r8 cc3a: d019 beq.n cc70 lv_opa_t opa_tmp = sh_buf_tmp[0]; cc3c: 9b07 ldr r3, [sp, #28] cc3e: 7819 ldrb r1, [r3, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cc40: 29ff cmp r1, #255 ; 0xff cc42: d0dc beq.n cbfe cc44: 9b06 ldr r3, [sp, #24] cc46: 4359 muls r1, r3 cc48: 0a09 lsrs r1, r1, #8 _lv_memset(mask_buf, opa_tmp, w); cc4a: 9a0b ldr r2, [sp, #44] ; 0x2c cc4c: 9805 ldr r0, [sp, #20] cc4e: 47d0 blx sl mask_res = LV_DRAW_MASK_RES_CHANGED; cc50: 2002 movs r0, #2 if(simple_mode) { cc52: 9b08 ldr r3, [sp, #32] cc54: 2b00 cmp r3, #0 cc56: d1d7 bne.n cc08 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cc58: 2302 movs r3, #2 cc5a: 5ee2 ldrsh r2, [r4, r3] cc5c: 2300 movs r3, #0 cc5e: 5ee1 ldrsh r1, [r4, r3] cc60: 9b0b ldr r3, [sp, #44] ; 0x2c cc62: 9805 ldr r0, [sp, #20] cc64: 4d4c ldr r5, [pc, #304] ; (cd98 ) cc66: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cc68: 2801 cmp r0, #1 cc6a: d1cd bne.n cc08 cc6c: 3001 adds r0, #1 cc6e: e7cb b.n cc08 cc70: 46bb mov fp, r7 a.x1 = sh_area.x1 + corner_size; cc72: a91c add r1, sp, #112 ; 0x70 cc74: ab16 add r3, sp, #88 ; 0x58 cc76: 881a ldrh r2, [r3, #0] cc78: 9c0a ldr r4, [sp, #40] ; 0x28 cc7a: 46a4 mov ip, r4 cc7c: 4462 add r2, ip cc7e: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; cc80: 889a ldrh r2, [r3, #4] cc82: 1b12 subs r2, r2, r4 cc84: 808a strh r2, [r1, #4] a.y1 = sh_area.y2 - corner_size + 1; cc86: 2206 movs r2, #6 cc88: 5e9a ldrsh r2, [r3, r2] cc8a: 1c53 adds r3, r2, #1 cc8c: 1b1b subs r3, r3, r4 cc8e: 804b strh r3, [r1, #2] a.y2 = sh_area.y2; cc90: 80ca strh r2, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); cc92: 9a04 ldr r2, [sp, #16] cc94: a81e add r0, sp, #120 ; 0x78 cc96: 4b3d ldr r3, [pc, #244] ; (cd8c ) cc98: 4798 blx r3 if(has_com) { cc9a: 2800 cmp r0, #0 cc9c: d100 bne.n cca0 cc9e: e081 b.n cda4 if(simple_mode) ca.y1 = LV_MATH_MAX(ca.y1, coords->y2); cca0: 9b08 ldr r3, [sp, #32] cca2: 2b00 cmp r3, #0 cca4: d00a beq.n ccbc cca6: aa1e add r2, sp, #120 ; 0x78 cca8: 8850 ldrh r0, [r2, #2] ccaa: 464b mov r3, r9 ccac: 88db ldrh r3, [r3, #6] ccae: 1c19 adds r1, r3, #0 ccb0: b21b sxth r3, r3 ccb2: b204 sxth r4, r0 ccb4: 42a3 cmp r3, r4 ccb6: da00 bge.n ccba ccb8: 1c01 adds r1, r0, #0 ccba: 8051 strh r1, [r2, #2] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); ccbc: aa1e add r2, sp, #120 ; 0x78 ccbe: 8893 ldrh r3, [r2, #4] ccc0: 3301 adds r3, #1 ccc2: 8811 ldrh r1, [r2, #0] ccc4: 1a5b subs r3, r3, r1 ccc6: b21b sxth r3, r3 ccc8: 930b str r3, [sp, #44] ; 0x2c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); ccca: 2106 movs r1, #6 cccc: 5e53 ldrsh r3, [r2, r1] ccce: 1c5c adds r4, r3, #1 ccd0: 8852 ldrh r2, [r2, #2] ccd2: 1aa4 subs r4, r4, r2 ccd4: b224 sxth r4, r4 sh_buf_tmp = sh_buf + corner_size - 1; ccd6: 9909 ldr r1, [sp, #36] ; 0x24 sh_buf_tmp += corner_size * (a.y2 - ca.y2); ccd8: aa1c add r2, sp, #112 ; 0x70 ccda: 2506 movs r5, #6 ccdc: 5f55 ldrsh r5, [r2, r5] ccde: 1aed subs r5, r5, r3 cce0: 434d muls r5, r1 sh_buf_tmp = sh_buf + corner_size - 1; cce2: 1e4b subs r3, r1, #1 sh_buf_tmp += corner_size * (a.y2 - ca.y2); cce4: 18ed adds r5, r5, r3 cce6: 9b0e ldr r3, [sp, #56] ; 0x38 cce8: 469c mov ip, r3 ccea: 4465 add r5, ip ccec: 2300 movs r3, #0 *d8 = *s8; ccee: a822 add r0, sp, #136 ; 0x88 ccf0: a91e add r1, sp, #120 ; 0x78 ccf2: 5c5a ldrb r2, [r3, r1] ccf4: 541a strb r2, [r3, r0] ccf6: 3301 adds r3, #1 while(len) { ccf8: 2b08 cmp r3, #8 ccfa: d1fa bne.n ccf2 fa.y1 = fa.y2; ccfc: ab22 add r3, sp, #136 ; 0x88 ccfe: 88da ldrh r2, [r3, #6] cd00: 805a strh r2, [r3, #2] for(y = 0; y < h; y++) { cd02: 2c00 cmp r4, #0 cd04: dd4e ble.n cda4 cd06: 1c63 adds r3, r4, #1 cd08: 4698 mov r8, r3 cd0a: 2601 movs r6, #1 _lv_memset(mask_buf, opa_tmp, w); cd0c: 4b23 ldr r3, [pc, #140] ; (cd9c ) cd0e: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cd10: ac22 add r4, sp, #136 ; 0x88 cd12: 9507 str r5, [sp, #28] cd14: 465f mov r7, fp cd16: 46cb mov fp, r9 cd18: e01e b.n cd58 if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cd1a: 9b06 ldr r3, [sp, #24] cd1c: 2bff cmp r3, #255 ; 0xff cd1e: d11f bne.n cd60 lv_opa_t opa_tmp = sh_buf_tmp[0]; cd20: 9906 ldr r1, [sp, #24] cd22: e020 b.n cd66 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, cd24: 8bfa ldrh r2, [r7, #30] cd26: 2329 movs r3, #41 ; 0x29 cd28: 5cfb ldrb r3, [r7, r3] cd2a: 9302 str r3, [sp, #8] cd2c: 23ff movs r3, #255 ; 0xff cd2e: 9301 str r3, [sp, #4] cd30: 9000 str r0, [sp, #0] cd32: 9b05 ldr r3, [sp, #20] cd34: 0021 movs r1, r4 cd36: 9804 ldr r0, [sp, #16] cd38: 4d16 ldr r5, [pc, #88] ; (cd94 ) cd3a: 47a8 blx r5 fa.y1--; cd3c: 8863 ldrh r3, [r4, #2] cd3e: 3b01 subs r3, #1 cd40: 8063 strh r3, [r4, #2] fa.y2--; cd42: 88e3 ldrh r3, [r4, #6] cd44: 3b01 subs r3, #1 cd46: 80e3 strh r3, [r4, #6] sh_buf_tmp += corner_size; cd48: 9b09 ldr r3, [sp, #36] ; 0x24 cd4a: 469c mov ip, r3 cd4c: 9b07 ldr r3, [sp, #28] cd4e: 4463 add r3, ip cd50: 9307 str r3, [sp, #28] cd52: 3601 adds r6, #1 for(y = 0; y < h; y++) { cd54: 45b0 cmp r8, r6 cd56: d023 beq.n cda0 lv_opa_t opa_tmp = sh_buf_tmp[0]; cd58: 9b07 ldr r3, [sp, #28] cd5a: 7819 ldrb r1, [r3, #0] if(opa_tmp != LV_OPA_COVER || opa != LV_OPA_COVER) opa_tmp = (opa * opa_tmp) >> 8; cd5c: 29ff cmp r1, #255 ; 0xff cd5e: d0dc beq.n cd1a cd60: 9b06 ldr r3, [sp, #24] cd62: 4359 muls r1, r3 cd64: 0a09 lsrs r1, r1, #8 _lv_memset(mask_buf, opa_tmp, w); cd66: 9a0b ldr r2, [sp, #44] ; 0x2c cd68: 9805 ldr r0, [sp, #20] cd6a: 47d0 blx sl mask_res = LV_DRAW_MASK_RES_CHANGED; cd6c: 2002 movs r0, #2 if(simple_mode) { cd6e: 9b08 ldr r3, [sp, #32] cd70: 2b00 cmp r3, #0 cd72: d1d7 bne.n cd24 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); cd74: 2302 movs r3, #2 cd76: 5ee2 ldrsh r2, [r4, r3] cd78: 2300 movs r3, #0 cd7a: 5ee1 ldrsh r1, [r4, r3] cd7c: 9b0b ldr r3, [sp, #44] ; 0x2c cd7e: 9805 ldr r0, [sp, #20] cd80: 4d05 ldr r5, [pc, #20] ; (cd98 ) cd82: 47a8 blx r5 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; cd84: 2801 cmp r0, #1 cd86: d1cd bne.n cd24 cd88: 3001 adds r0, #1 cd8a: e7cb b.n cd24 cd8c: 0001140b .word 0x0001140b cd90: 00012545 .word 0x00012545 cd94: 00006fed .word 0x00006fed cd98: 0000bad1 .word 0x0000bad1 cd9c: 000128d5 .word 0x000128d5 cda0: 46d9 mov r9, fp cda2: 46bb mov fp, r7 a.x1 = sh_area.x1 + corner_size; cda4: a91c add r1, sp, #112 ; 0x70 cda6: ab16 add r3, sp, #88 ; 0x58 cda8: 881a ldrh r2, [r3, #0] cdaa: 9c0a ldr r4, [sp, #40] ; 0x28 cdac: 46a4 mov ip, r4 cdae: 4462 add r2, ip cdb0: 800a strh r2, [r1, #0] a.x2 = sh_area.x2 - corner_size; cdb2: 889a ldrh r2, [r3, #4] cdb4: 1b12 subs r2, r2, r4 cdb6: 808a strh r2, [r1, #4] a.y1 = sh_area.y1 + corner_size; cdb8: 885a ldrh r2, [r3, #2] cdba: 4462 add r2, ip cdbc: 804a strh r2, [r1, #2] a.y2 = sh_area.y2 - corner_size; cdbe: 88db ldrh r3, [r3, #6] cdc0: 1b1b subs r3, r3, r4 cdc2: 80cb strh r3, [r1, #6] has_com = _lv_area_intersect(&ca, &a, clip); cdc4: 9a04 ldr r2, [sp, #16] cdc6: a81e add r0, sp, #120 ; 0x78 cdc8: 4bc4 ldr r3, [pc, #784] ; (d0dc ) cdca: 4798 blx r3 if(has_com && simple_mode == false) { cdcc: 2800 cmp r0, #0 cdce: d04c beq.n ce6a cdd0: 9b08 ldr r3, [sp, #32] cdd2: 2b00 cmp r3, #0 cdd4: d149 bne.n ce6a return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); cdd6: aa1e add r2, sp, #120 ; 0x78 cdd8: 8893 ldrh r3, [r2, #4] cdda: 3301 adds r3, #1 cddc: 8811 ldrh r1, [r2, #0] cdde: 1a5b subs r3, r3, r1 cde0: b21b sxth r3, r3 cde2: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); cde4: 88d7 ldrh r7, [r2, #6] cde6: 3701 adds r7, #1 cde8: 8853 ldrh r3, [r2, #2] cdea: 1aff subs r7, r7, r3 cdec: b23f sxth r7, r7 cdee: 2300 movs r3, #0 *d8 = *s8; cdf0: a822 add r0, sp, #136 ; 0x88 cdf2: 0011 movs r1, r2 cdf4: 5c5a ldrb r2, [r3, r1] cdf6: 541a strb r2, [r3, r0] cdf8: 3301 adds r3, #1 while(len) { cdfa: 2b08 cmp r3, #8 cdfc: d1fa bne.n cdf4 fa.y2 = fa.y1; cdfe: ab22 add r3, sp, #136 ; 0x88 ce00: 885a ldrh r2, [r3, #2] ce02: 80da strh r2, [r3, #6] for(y = 0; y < h; y++) { ce04: 2f00 cmp r7, #0 ce06: dd30 ble.n ce6a ce08: 3701 adds r7, #1 ce0a: 2501 movs r5, #1 _lv_memset(mask_buf, dsc->shadow_opa, w); ce0c: 4bb4 ldr r3, [pc, #720] ; (d0e0 ) ce0e: 469a mov sl, r3 mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ce10: ac22 add r4, sp, #136 ; 0x88 ce12: 4bb4 ldr r3, [pc, #720] ; (d0e4 ) ce14: 4698 mov r8, r3 ce16: 465e mov r6, fp ce18: 46bb mov fp, r7 ce1a: e014 b.n ce46 _lv_blend_fill(clip, &fa, dsc->shadow_color, mask_buf, ce1c: 8bf2 ldrh r2, [r6, #30] ce1e: 2329 movs r3, #41 ; 0x29 ce20: 5cf3 ldrb r3, [r6, r3] ce22: 9302 str r3, [sp, #8] ce24: 23ff movs r3, #255 ; 0xff ce26: 9301 str r3, [sp, #4] ce28: 9000 str r0, [sp, #0] ce2a: 9b05 ldr r3, [sp, #20] ce2c: 0021 movs r1, r4 ce2e: 9804 ldr r0, [sp, #16] ce30: 4fad ldr r7, [pc, #692] ; (d0e8 ) ce32: 47b8 blx r7 fa.y1++; ce34: 8863 ldrh r3, [r4, #2] ce36: 3301 adds r3, #1 ce38: 8063 strh r3, [r4, #2] fa.y2++; ce3a: 88e3 ldrh r3, [r4, #6] ce3c: 3301 adds r3, #1 ce3e: 80e3 strh r3, [r4, #6] ce40: 3501 adds r5, #1 for(y = 0; y < h; y++) { ce42: 45ab cmp fp, r5 ce44: d010 beq.n ce68 _lv_memset(mask_buf, dsc->shadow_opa, w); ce46: 2328 movs r3, #40 ; 0x28 ce48: 5cf1 ldrb r1, [r6, r3] ce4a: 9a06 ldr r2, [sp, #24] ce4c: 9f05 ldr r7, [sp, #20] ce4e: 0038 movs r0, r7 ce50: 47d0 blx sl mask_res = lv_draw_mask_apply(mask_buf, fa.x1, fa.y1, w); ce52: 2102 movs r1, #2 ce54: 5e62 ldrsh r2, [r4, r1] ce56: 2000 movs r0, #0 ce58: 5e21 ldrsh r1, [r4, r0] ce5a: 9b06 ldr r3, [sp, #24] ce5c: 0038 movs r0, r7 ce5e: 47c0 blx r8 if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) mask_res = LV_DRAW_MASK_RES_CHANGED; ce60: 2801 cmp r0, #1 ce62: d1db bne.n ce1c ce64: 3001 adds r0, #1 ce66: e7d9 b.n ce1c ce68: 46b3 mov fp, r6 lv_draw_mask_remove_id(mask_rout_id); ce6a: 980f ldr r0, [sp, #60] ; 0x3c ce6c: 4b9f ldr r3, [pc, #636] ; (d0ec ) ce6e: 4798 blx r3 _lv_mem_buf_release(mask_buf); ce70: 9805 ldr r0, [sp, #20] ce72: 4c9f ldr r4, [pc, #636] ; (d0f0 ) ce74: 47a0 blx r4 _lv_mem_buf_release(sh_buf); ce76: 980e ldr r0, [sp, #56] ; 0x38 ce78: 47a0 blx r4 if(dsc->bg_opa <= LV_OPA_MIN) return; ce7a: 465b mov r3, fp ce7c: 7b1b ldrb r3, [r3, #12] ce7e: 469a mov sl, r3 ce80: 2b05 cmp r3, #5 ce82: d93f bls.n cf04 ce84: 2300 movs r3, #0 *d8 = *s8; ce86: a91a add r1, sp, #104 ; 0x68 ce88: 4648 mov r0, r9 ce8a: 5cc2 ldrb r2, [r0, r3] ce8c: 545a strb r2, [r3, r1] ce8e: 3301 adds r3, #1 while(len) { ce90: 2b08 cmp r3, #8 ce92: d1fa bne.n ce8a ce94: 4681 mov r9, r0 if(dsc->border_width > 1 && dsc->border_opa >= LV_OPA_MAX && dsc->radius != 0) { ce96: 465b mov r3, fp ce98: 2210 movs r2, #16 ce9a: 5e9b ldrsh r3, [r3, r2] ce9c: 2b01 cmp r3, #1 ce9e: dd1f ble.n cee0 cea0: 465b mov r3, fp cea2: 7d1b ldrb r3, [r3, #20] cea4: 2bf9 cmp r3, #249 ; 0xf9 cea6: d91b bls.n cee0 cea8: 465b mov r3, fp ceaa: 2200 movs r2, #0 ceac: 5e9b ldrsh r3, [r3, r2] ceae: 2b00 cmp r3, #0 ceb0: d016 beq.n cee0 coords_bg.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; ceb2: 465b mov r3, fp ceb4: 8a58 ldrh r0, [r3, #18] ceb6: ab1a add r3, sp, #104 ; 0x68 ceb8: 0881 lsrs r1, r0, #2 ceba: 2201 movs r2, #1 cebc: 4011 ands r1, r2 cebe: 881c ldrh r4, [r3, #0] cec0: 1909 adds r1, r1, r4 cec2: 8019 strh r1, [r3, #0] coords_bg.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; cec4: 0841 lsrs r1, r0, #1 cec6: 4011 ands r1, r2 cec8: 885c ldrh r4, [r3, #2] ceca: 1909 adds r1, r1, r4 cecc: 8059 strh r1, [r3, #2] coords_bg.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; cece: 08c4 lsrs r4, r0, #3 ced0: 4014 ands r4, r2 ced2: 8899 ldrh r1, [r3, #4] ced4: 1b09 subs r1, r1, r4 ced6: 8099 strh r1, [r3, #4] coords_bg.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; ced8: 4002 ands r2, r0 ceda: 88d9 ldrh r1, [r3, #6] cedc: 1a8a subs r2, r1, r2 cede: 80da strh r2, [r3, #6] if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; cee0: 4653 mov r3, sl cee2: 2bfa cmp r3, #250 ; 0xfa cee4: d901 bls.n ceea cee6: 23ff movs r3, #255 ; 0xff cee8: 469a mov sl, r3 lv_disp_t * disp = _lv_refr_get_disp_refreshing(); ceea: 4b82 ldr r3, [pc, #520] ; (d0f4 ) ceec: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); ceee: 4b82 ldr r3, [pc, #520] ; (d0f8 ) cef0: 4798 blx r3 cef2: 0007 movs r7, r0 is_common = _lv_area_intersect(&draw_area, &coords_bg, clip); cef4: 9a04 ldr r2, [sp, #16] cef6: a91a add r1, sp, #104 ; 0x68 cef8: a81c add r0, sp, #112 ; 0x70 cefa: 4b78 ldr r3, [pc, #480] ; (d0dc ) cefc: 4798 blx r3 if(is_common == false) return; cefe: 2800 cmp r0, #0 cf00: d000 beq.n cf04 cf02: e09d b.n d040 _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; cf04: 465b mov r3, fp cf06: 6ad8 ldr r0, [r3, #44] ; 0x2c cf08: 2800 cmp r0, #0 cf0a: d006 beq.n cf1a if(dsc->pattern_opa <= LV_OPA_MIN) return; cf0c: 2336 movs r3, #54 ; 0x36 cf0e: 465a mov r2, fp cf10: 5cd3 ldrb r3, [r2, r3] cf12: 2b05 cmp r3, #5 cf14: d901 bls.n cf1a cf16: f000 fbd7 bl d6c8 if(dsc->border_opa <= LV_OPA_MIN) return; cf1a: 465b mov r3, fp cf1c: 7d1e ldrb r6, [r3, #20] cf1e: 2e05 cmp r6, #5 cf20: d919 bls.n cf56 if(dsc->border_width == 0) return; cf22: 2210 movs r2, #16 cf24: 5e9b ldrsh r3, [r3, r2] cf26: 2b00 cmp r3, #0 cf28: d015 beq.n cf56 if(dsc->border_side == LV_BORDER_SIDE_NONE) return; cf2a: 465b mov r3, fp cf2c: 2212 movs r2, #18 cf2e: 5e9b ldrsh r3, [r3, r2] cf30: 2b00 cmp r3, #0 cf32: d010 beq.n cf56 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; cf34: 2efa cmp r6, #250 ; 0xfa cf36: d900 bls.n cf3a cf38: 26ff movs r6, #255 ; 0xff lv_disp_t * disp = _lv_refr_get_disp_refreshing(); cf3a: 4b6e ldr r3, [pc, #440] ; (d0f4 ) cf3c: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); cf3e: 4b6e ldr r3, [pc, #440] ; (d0f8 ) cf40: 4798 blx r3 cf42: 0007 movs r7, r0 is_common = _lv_area_intersect(&draw_area, coords, clip); cf44: 9a04 ldr r2, [sp, #16] cf46: 4649 mov r1, r9 cf48: a818 add r0, sp, #96 ; 0x60 cf4a: 4b64 ldr r3, [pc, #400] ; (d0dc ) cf4c: 4798 blx r3 if(is_common == false) return; cf4e: 2800 cmp r0, #0 cf50: d001 beq.n cf56 cf52: f000 fd41 bl d9d8 } 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; cf56: 465b mov r3, fp cf58: 6bd9 ldr r1, [r3, #60] ; 0x3c cf5a: 2900 cmp r1, #0 cf5c: d006 beq.n cf6c if(dsc->value_opa <= LV_OPA_MIN) return; cf5e: 2344 movs r3, #68 ; 0x44 cf60: 465a mov r2, fp cf62: 5cd3 ldrb r3, [r2, r3] cf64: 2b05 cmp r3, #5 cf66: d901 bls.n cf6c cf68: f001 f856 bl e018 if(dsc->outline_opa <= LV_OPA_MIN) return; cf6c: 465b mov r3, fp cf6e: 7f1b ldrb r3, [r3, #28] cf70: 4698 mov r8, r3 cf72: 2b05 cmp r3, #5 cf74: d95d bls.n d032 if(dsc->outline_width == 0) return; cf76: 465b mov r3, fp cf78: 2218 movs r2, #24 cf7a: 5e9b ldrsh r3, [r3, r2] cf7c: 2b00 cmp r3, #0 cf7e: d058 beq.n d032 if(opa > LV_OPA_MAX) opa = LV_OPA_COVER; cf80: 4643 mov r3, r8 cf82: 2bfa cmp r3, #250 ; 0xfa cf84: d901 bls.n cf8a cf86: 23ff movs r3, #255 ; 0xff cf88: 4698 mov r8, r3 uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); cf8a: 4b5c ldr r3, [pc, #368] ; (d0fc ) cf8c: 4798 blx r3 cf8e: 900a str r0, [sp, #40] ; 0x28 cf90: 2300 movs r3, #0 *d8 = *s8; cf92: a916 add r1, sp, #88 ; 0x58 cf94: 4648 mov r0, r9 cf96: 5cc2 ldrb r2, [r0, r3] cf98: 545a strb r2, [r3, r1] cf9a: 3301 adds r3, #1 while(len) { cf9c: 2b08 cmp r3, #8 cf9e: d1fa bne.n cf96 area_inner.x1 -= dsc->outline_pad; cfa0: 465b mov r3, fp cfa2: 8b5d ldrh r5, [r3, #26] cfa4: ab16 add r3, sp, #88 ; 0x58 cfa6: 881a ldrh r2, [r3, #0] cfa8: 1b52 subs r2, r2, r5 cfaa: b292 uxth r2, r2 cfac: 4692 mov sl, r2 cfae: 801a strh r2, [r3, #0] area_inner.y1 -= dsc->outline_pad; cfb0: 885a ldrh r2, [r3, #2] cfb2: 1b52 subs r2, r2, r5 cfb4: b292 uxth r2, r2 cfb6: 9207 str r2, [sp, #28] cfb8: 805a strh r2, [r3, #2] area_inner.x2 += dsc->outline_pad; cfba: 889f ldrh r7, [r3, #4] cfbc: 19ef adds r7, r5, r7 cfbe: b2bf uxth r7, r7 cfc0: 809f strh r7, [r3, #4] area_inner.y2 += dsc->outline_pad; cfc2: 88da ldrh r2, [r3, #6] cfc4: 18ad adds r5, r5, r2 cfc6: b2ad uxth r5, r5 cfc8: 80dd strh r5, [r3, #6] int32_t rin = dsc->radius; cfca: 465b mov r3, fp cfcc: 2200 movs r2, #0 cfce: 5e9b ldrsh r3, [r3, r2] cfd0: 9306 str r3, [sp, #24] int32_t rout = rin + dsc->outline_width; cfd2: 465b mov r3, fp cfd4: 2218 movs r2, #24 cfd6: 5e9b ldrsh r3, [r3, r2] cfd8: 9305 str r3, [sp, #20] cfda: 2300 movs r3, #0 *d8 = *s8; cfdc: a818 add r0, sp, #96 ; 0x60 cfde: a916 add r1, sp, #88 ; 0x58 cfe0: 5c5a ldrb r2, [r3, r1] cfe2: 541a strb r2, [r3, r0] cfe4: 3301 adds r3, #1 while(len) { cfe6: 2b08 cmp r3, #8 cfe8: d1fa bne.n cfe0 area_outer.x1 -= dsc->outline_width; cfea: 466b mov r3, sp cfec: 8a9c ldrh r4, [r3, #20] cfee: ae18 add r6, sp, #96 ; 0x60 cff0: 8833 ldrh r3, [r6, #0] cff2: 1b1b subs r3, r3, r4 cff4: b29b uxth r3, r3 cff6: 9308 str r3, [sp, #32] cff8: 8033 strh r3, [r6, #0] area_outer.x2 += dsc->outline_width; cffa: 88b3 ldrh r3, [r6, #4] cffc: 18e3 adds r3, r4, r3 cffe: b29b uxth r3, r3 d000: 9309 str r3, [sp, #36] ; 0x24 d002: 80b3 strh r3, [r6, #4] area_outer.y1 -= dsc->outline_width; d004: 8873 ldrh r3, [r6, #2] d006: 1b1b subs r3, r3, r4 d008: b29b uxth r3, r3 d00a: 930b str r3, [sp, #44] ; 0x2c d00c: 8073 strh r3, [r6, #2] area_outer.y2 += dsc->outline_width; d00e: 88f3 ldrh r3, [r6, #6] d010: 18e4 adds r4, r4, r3 d012: b2a4 uxth r4, r4 d014: 80f4 strh r4, [r6, #6] lv_disp_t * disp = _lv_refr_get_disp_refreshing(); d016: 4b37 ldr r3, [pc, #220] ; (d0f4 ) d018: 4798 blx r3 lv_disp_buf_t * vdb = lv_disp_get_buf(disp); d01a: 4b37 ldr r3, [pc, #220] ; (d0f8 ) d01c: 4798 blx r3 d01e: 4681 mov r9, r0 is_common = _lv_area_intersect(&draw_area, &area_outer, clip); d020: 9a04 ldr r2, [sp, #16] d022: 0031 movs r1, r6 d024: a81a add r0, sp, #104 ; 0x68 d026: 4b2d ldr r3, [pc, #180] ; (d0dc ) d028: 4798 blx r3 if(is_common == false) return; d02a: 2800 cmp r0, #0 d02c: d001 beq.n d032 d02e: f001 f84f bl e0d0 } d032: b031 add sp, #196 ; 0xc4 d034: bc3c pop {r2, r3, r4, r5} d036: 4690 mov r8, r2 d038: 4699 mov r9, r3 d03a: 46a2 mov sl, r4 d03c: 46ab mov fp, r5 d03e: bdf0 pop {r4, r5, r6, r7, pc} draw_area.x1 -= disp_area->x1; d040: 8a38 ldrh r0, [r7, #16] d042: aa1c add r2, sp, #112 ; 0x70 d044: 8811 ldrh r1, [r2, #0] d046: 1a09 subs r1, r1, r0 d048: b289 uxth r1, r1 d04a: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; d04c: 8a7d ldrh r5, [r7, #18] d04e: 8854 ldrh r4, [r2, #2] d050: 1b64 subs r4, r4, r5 d052: 8054 strh r4, [r2, #2] draw_area.x2 -= disp_area->x1; d054: 8893 ldrh r3, [r2, #4] d056: 1a1b subs r3, r3, r0 d058: b29b uxth r3, r3 d05a: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; d05c: 88d0 ldrh r0, [r2, #6] d05e: 1b40 subs r0, r0, r5 d060: 80d0 strh r0, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d062: 3301 adds r3, #1 d064: 1a5b subs r3, r3, r1 d066: b21b sxth r3, r3 d068: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); d06a: 930b str r3, [sp, #44] ; 0x2c d06c: 0018 movs r0, r3 d06e: 4b24 ldr r3, [pc, #144] ; (d100 ) d070: 4798 blx r3 d072: 9006 str r0, [sp, #24] uint16_t other_mask_cnt = lv_draw_mask_get_cnt(); d074: 4b21 ldr r3, [pc, #132] ; (d0fc ) d076: 4798 blx r3 d078: b283 uxth r3, r0 d07a: 930c str r3, [sp, #48] ; 0x30 if(other_mask_cnt) simple_mode = false; d07c: 2200 movs r2, #0 d07e: 9207 str r2, [sp, #28] d080: 2b00 cmp r3, #0 d082: d106 bne.n d092 else if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) simple_mode = false; d084: 465b mov r3, fp d086: 799b ldrb r3, [r3, #6] d088: 3b02 subs r3, #2 d08a: 1e5a subs r2, r3, #1 d08c: 4193 sbcs r3, r2 d08e: b2db uxtb r3, r3 d090: 9307 str r3, [sp, #28] d092: a91a add r1, sp, #104 ; 0x68 d094: 888c ldrh r4, [r1, #4] d096: 3401 adds r4, #1 d098: 880b ldrh r3, [r1, #0] d09a: 1ae4 subs r4, r4, r3 d09c: b224 sxth r4, r4 int32_t coords_w = lv_area_get_width(&coords_bg); d09e: 0026 movs r6, r4 int32_t rout = dsc->radius; d0a0: 465b mov r3, fp d0a2: 2200 movs r2, #0 d0a4: 5e9a ldrsh r2, [r3, r2] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d0a6: 88cb ldrh r3, [r1, #6] d0a8: 3301 adds r3, #1 d0aa: 8849 ldrh r1, [r1, #2] d0ac: 1a5b subs r3, r3, r1 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); d0ae: b21b sxth r3, r3 d0b0: 42a3 cmp r3, r4 d0b2: dd00 ble.n d0b6 d0b4: 0023 movs r3, r4 if(rout > short_side >> 1) rout = short_side >> 1; d0b6: 105b asrs r3, r3, #1 d0b8: 4698 mov r8, r3 d0ba: 4293 cmp r3, r2 d0bc: dd00 ble.n d0c0 d0be: 4690 mov r8, r2 if(simple_mode && rout == 0 && (dsc->bg_grad_dir == LV_GRAD_DIR_NONE)) { d0c0: 9b07 ldr r3, [sp, #28] d0c2: 2b00 cmp r3, #0 d0c4: d02f beq.n d126 d0c6: 4643 mov r3, r8 d0c8: 2b00 cmp r3, #0 d0ca: d12c bne.n d126 d0cc: 465b mov r3, fp d0ce: 799b ldrb r3, [r3, #6] d0d0: 2b00 cmp r3, #0 d0d2: d017 beq.n d104 int16_t mask_rout_id = LV_MASK_ID_INV; d0d4: 2301 movs r3, #1 d0d6: 425b negs r3, r3 d0d8: 930f str r3, [sp, #60] ; 0x3c d0da: e033 b.n d144 d0dc: 0001140b .word 0x0001140b d0e0: 000128d5 .word 0x000128d5 d0e4: 0000bad1 .word 0x0000bad1 d0e8: 00006fed .word 0x00006fed d0ec: 0000bb25 .word 0x0000bb25 d0f0: 00012465 .word 0x00012465 d0f4: 00005591 .word 0x00005591 d0f8: 00010e75 .word 0x00010e75 d0fc: 0000bb6d .word 0x0000bb6d d100: 000127a1 .word 0x000127a1 _lv_blend_fill(clip, &coords_bg, d104: 465b mov r3, fp d106: 885a ldrh r2, [r3, #2] d108: 7b5b ldrb r3, [r3, #13] d10a: 9302 str r3, [sp, #8] d10c: 4653 mov r3, sl d10e: 9301 str r3, [sp, #4] d110: 2301 movs r3, #1 d112: 9300 str r3, [sp, #0] d114: 2300 movs r3, #0 d116: a91a add r1, sp, #104 ; 0x68 d118: 9804 ldr r0, [sp, #16] d11a: 4cae ldr r4, [pc, #696] ; (d3d4 ) d11c: 47a0 blx r4 int16_t mask_rout_id = LV_MASK_ID_INV; d11e: 2301 movs r3, #1 d120: 425b negs r3, r3 d122: 930f str r3, [sp, #60] ; 0x3c d124: e277 b.n d616 if(rout > 0) { d126: 4643 mov r3, r8 d128: 2b00 cmp r3, #0 d12a: dd37 ble.n d19c lv_draw_mask_radius_init(&mask_rout_param, &coords_bg, rout, false); d12c: 4643 mov r3, r8 d12e: b21a sxth r2, r3 d130: 2300 movs r3, #0 d132: a91a add r1, sp, #104 ; 0x68 d134: a829 add r0, sp, #164 ; 0xa4 d136: 4da8 ldr r5, [pc, #672] ; (d3d8 ) d138: 47a8 blx r5 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); d13a: 2100 movs r1, #0 d13c: a829 add r0, sp, #164 ; 0xa4 d13e: 4ba7 ldr r3, [pc, #668] ; (d3dc ) d140: 4798 blx r3 d142: 900f str r0, [sp, #60] ; 0x3c lv_color_t grad_color = dsc->bg_color; d144: 465b mov r3, fp d146: 885b ldrh r3, [r3, #2] d148: 466a mov r2, sp d14a: 8413 strh r3, [r2, #32] if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d14c: 465b mov r3, fp d14e: 799b ldrb r3, [r3, #6] lv_color_t * grad_map = NULL; d150: 2200 movs r2, #0 d152: 920d str r2, [sp, #52] ; 0x34 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d154: 2b02 cmp r3, #2 d156: d025 beq.n d1a4 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d158: ab1a add r3, sp, #104 ; 0x68 d15a: 2204 movs r2, #4 d15c: 5e99 ldrsh r1, [r3, r2] d15e: 2000 movs r0, #0 d160: 5e18 ldrsh r0, [r3, r0] d162: 1c4b adds r3, r1, #1 d164: 1a1b subs r3, r3, r0 if(lv_area_get_width(&coords_bg) - 2 * rout > SPLIT_LIMIT) split = true; d166: b21b sxth r3, r3 d168: 4642 mov r2, r8 d16a: 0052 lsls r2, r2, #1 d16c: 1a9b subs r3, r3, r2 d16e: 9309 str r3, [sp, #36] ; 0x24 fill_area.x1 = coords_bg.x1; d170: aa1e add r2, sp, #120 ; 0x78 d172: 8010 strh r0, [r2, #0] fill_area.x2 = coords_bg.x2; d174: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; d176: a91c add r1, sp, #112 ; 0x70 d178: 2302 movs r3, #2 d17a: 5ecd ldrsh r5, [r1, r3] d17c: 8a7b ldrh r3, [r7, #18] d17e: 195b adds r3, r3, r5 d180: b21b sxth r3, r3 d182: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; d184: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { d186: 2206 movs r2, #6 d188: 5e8b ldrsh r3, [r1, r2] d18a: 429d cmp r5, r3 d18c: dd00 ble.n d190 d18e: e232 b.n d5f6 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d190: 464b mov r3, r9 d192: 9310 str r3, [sp, #64] ; 0x40 d194: 46b9 mov r9, r7 d196: 465e mov r6, fp d198: 46d3 mov fp, sl d19a: e0e8 b.n d36e int16_t mask_rout_id = LV_MASK_ID_INV; d19c: 2301 movs r3, #1 d19e: 425b negs r3, r3 d1a0: 930f str r3, [sp, #60] ; 0x3c d1a2: e7cf b.n d144 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR && dsc->bg_color.full != dsc->bg_grad_color.full) { d1a4: 465b mov r3, fp d1a6: 885a ldrh r2, [r3, #2] d1a8: 889b ldrh r3, [r3, #4] d1aa: 429a cmp r2, r3 d1ac: d0d4 beq.n d158 grad_map = _lv_mem_buf_get(coords_w * sizeof(lv_color_t)); d1ae: 0060 lsls r0, r4, #1 d1b0: 4b8b ldr r3, [pc, #556] ; (d3e0 ) d1b2: 4798 blx r3 d1b4: 900d str r0, [sp, #52] ; 0x34 for(i = 0; i < coords_w; i++) { d1b6: 2e00 cmp r6, #0 d1b8: ddce ble.n d158 d1ba: 2500 movs r5, #0 grad_map[i] = grad_get(dsc, coords_w, i); d1bc: 4642 mov r2, r8 d1be: 9209 str r2, [sp, #36] ; 0x24 d1c0: 46b0 mov r8, r6 d1c2: 002e movs r6, r5 d1c4: 465d mov r5, fp d1c6: 46bb mov fp, r7 d1c8: 9005 str r0, [sp, #20] d1ca: e01e b.n d20a if(i <= min) return dsc->bg_color; d1cc: 78a9 ldrb r1, [r5, #2] d1ce: 06c9 lsls r1, r1, #27 d1d0: 0ec8 lsrs r0, r1, #27 d1d2: 886b ldrh r3, [r5, #2] d1d4: 055b lsls r3, r3, #21 d1d6: 0e9b lsrs r3, r3, #26 d1d8: 78ea ldrb r2, [r5, #3] d1da: 08d2 lsrs r2, r2, #3 grad_map[i] = grad_get(dsc, coords_w, i); d1dc: 7821 ldrb r1, [r4, #0] d1de: 271f movs r7, #31 d1e0: 43b9 bics r1, r7 d1e2: 4301 orrs r1, r0 d1e4: 7021 strb r1, [r4, #0] d1e6: 0159 lsls r1, r3, #5 d1e8: 8823 ldrh r3, [r4, #0] d1ea: 487e ldr r0, [pc, #504] ; (d3e4 ) d1ec: 4003 ands r3, r0 d1ee: 430b orrs r3, r1 d1f0: 8023 strh r3, [r4, #0] d1f2: 00d2 lsls r2, r2, #3 d1f4: 0a1b lsrs r3, r3, #8 d1f6: 2107 movs r1, #7 d1f8: 400b ands r3, r1 d1fa: 4313 orrs r3, r2 d1fc: 7063 strb r3, [r4, #1] for(i = 0; i < coords_w; i++) { d1fe: 3601 adds r6, #1 d200: 9b05 ldr r3, [sp, #20] d202: 3302 adds r3, #2 d204: 9305 str r3, [sp, #20] d206: 45b0 cmp r8, r6 d208: dd58 ble.n d2bc grad_map[i] = grad_get(dsc, coords_w, i); d20a: 9c05 ldr r4, [sp, #20] int32_t min = (dsc->bg_main_color_stop * s) >> 8; d20c: 2308 movs r3, #8 d20e: 5ee9 ldrsh r1, [r5, r3] d210: 4640 mov r0, r8 d212: 4348 muls r0, r1 d214: 1200 asrs r0, r0, #8 if(i <= min) return dsc->bg_color; d216: b232 sxth r2, r6 d218: 4290 cmp r0, r2 d21a: dad7 bge.n d1cc int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d21c: 270a movs r7, #10 d21e: 5feb ldrsh r3, [r5, r7] d220: 4647 mov r7, r8 d222: 435f muls r7, r3 d224: 123f asrs r7, r7, #8 if(i >= max) return dsc->bg_grad_color; d226: 42ba cmp r2, r7 d228: da3f bge.n d2aa int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d22a: 1a59 subs r1, r3, r1 d = (s * d) >> 8; d22c: 4643 mov r3, r8 d22e: 4359 muls r1, r3 i -= min; d230: 1a30 subs r0, r6, r0 lv_opa_t mix = (i * 255) / d; d232: b200 sxth r0, r0 d234: 0203 lsls r3, r0, #8 d236: 1a18 subs r0, r3, r0 d = (s * d) >> 8; d238: 1209 asrs r1, r1, #8 lv_opa_t mix = (i * 255) / d; d23a: 4b6b ldr r3, [pc, #428] ; (d3e8 ) d23c: 4798 blx r3 d23e: 23ff movs r3, #255 ; 0xff d240: 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))); d242: 1a19 subs r1, r3, r0 d244: 796a ldrb r2, [r5, #5] d246: 08d2 lsrs r2, r2, #3 d248: 4342 muls r2, r0 d24a: 78eb ldrb r3, [r5, #3] d24c: 08db lsrs r3, r3, #3 d24e: 434b muls r3, r1 d250: 18d3 adds r3, r2, r3 d252: 021a lsls r2, r3, #8 d254: 18d2 adds r2, r2, r3 d256: 01d2 lsls r2, r2, #7 d258: 18d2 adds r2, r2, r3 d25a: 0dd2 lsrs r2, r2, #23 d25c: 231f movs r3, #31 d25e: 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))); d260: 88ab ldrh r3, [r5, #4] d262: 055b lsls r3, r3, #21 d264: 0e9b lsrs r3, r3, #26 d266: 4343 muls r3, r0 d268: 469c mov ip, r3 d26a: 886b ldrh r3, [r5, #2] d26c: 055b lsls r3, r3, #21 d26e: 0e9b lsrs r3, r3, #26 d270: 434b muls r3, r1 d272: 4463 add r3, ip d274: 021f lsls r7, r3, #8 d276: 46bc mov ip, r7 d278: 449c add ip, r3 d27a: 4667 mov r7, ip d27c: 01ff lsls r7, r7, #7 d27e: 46bc mov ip, r7 d280: 4463 add r3, ip d282: 0ddb lsrs r3, r3, #23 d284: 273f movs r7, #63 ; 0x3f d286: 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))); d288: 792f ldrb r7, [r5, #4] d28a: 06ff lsls r7, r7, #27 d28c: 0eff lsrs r7, r7, #27 d28e: 4378 muls r0, r7 d290: 78af ldrb r7, [r5, #2] d292: 06ff lsls r7, r7, #27 d294: 0eff lsrs r7, r7, #27 d296: 4379 muls r1, r7 d298: 1840 adds r0, r0, r1 d29a: 0201 lsls r1, r0, #8 d29c: 1809 adds r1, r1, r0 d29e: 01c9 lsls r1, r1, #7 d2a0: 1809 adds r1, r1, r0 d2a2: 0dc9 lsrs r1, r1, #23 d2a4: 201f movs r0, #31 d2a6: 4008 ands r0, r1 d2a8: e798 b.n d1dc if(i >= max) return dsc->bg_grad_color; d2aa: 7929 ldrb r1, [r5, #4] d2ac: 06c9 lsls r1, r1, #27 d2ae: 0ec8 lsrs r0, r1, #27 d2b0: 88ab ldrh r3, [r5, #4] d2b2: 055b lsls r3, r3, #21 d2b4: 0e9b lsrs r3, r3, #26 d2b6: 796a ldrb r2, [r5, #5] d2b8: 08d2 lsrs r2, r2, #3 d2ba: e78f b.n d1dc d2bc: 9b09 ldr r3, [sp, #36] ; 0x24 d2be: 4698 mov r8, r3 d2c0: 465f mov r7, fp d2c2: 46ab mov fp, r5 d2c4: e748 b.n d158 _lv_memset_ff(mask_buf, draw_area_w); d2c6: 990b ldr r1, [sp, #44] ; 0x2c d2c8: 9f06 ldr r7, [sp, #24] d2ca: 0038 movs r0, r7 d2cc: 4b47 ldr r3, [pc, #284] ; (d3ec ) d2ce: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d2d0: 464b mov r3, r9 d2d2: 8a5a ldrh r2, [r3, #18] d2d4: 1952 adds r2, r2, r5 d2d6: b212 sxth r2, r2 d2d8: 8a19 ldrh r1, [r3, #16] d2da: ab0e add r3, sp, #56 ; 0x38 d2dc: 8f1b ldrh r3, [r3, #56] ; 0x38 d2de: 18c9 adds r1, r1, r3 d2e0: b209 sxth r1, r1 d2e2: 9b0a ldr r3, [sp, #40] ; 0x28 d2e4: 0038 movs r0, r7 d2e6: 4f42 ldr r7, [pc, #264] ; (d3f0 ) d2e8: 47b8 blx r7 d2ea: 9005 str r0, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d2ec: 79b3 ldrb r3, [r6, #6] d2ee: 2b01 cmp r3, #1 d2f0: d119 bne.n d326 d2f2: e081 b.n d3f8 _lv_memset_ff(mask_buf, draw_area_w); d2f4: 990b ldr r1, [sp, #44] ; 0x2c d2f6: 9f06 ldr r7, [sp, #24] d2f8: 0038 movs r0, r7 d2fa: 4b3c ldr r3, [pc, #240] ; (d3ec ) d2fc: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); d2fe: 464b mov r3, r9 d300: 8a5a ldrh r2, [r3, #18] d302: 1952 adds r2, r2, r5 d304: b212 sxth r2, r2 d306: 8a19 ldrh r1, [r3, #16] d308: ab0e add r3, sp, #56 ; 0x38 d30a: 8f1b ldrh r3, [r3, #56] ; 0x38 d30c: 18c9 adds r1, r1, r3 d30e: b209 sxth r1, r1 d310: 9b0a ldr r3, [sp, #40] ; 0x28 d312: 0038 movs r0, r7 d314: 4f36 ldr r7, [pc, #216] ; (d3f0 ) d316: 47b8 blx r7 d318: 9005 str r0, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d31a: 79b3 ldrb r3, [r6, #6] d31c: 2b01 cmp r3, #1 d31e: d06b beq.n d3f8 if(simple_mode && split && d320: 9a07 ldr r2, [sp, #28] d322: 2a00 cmp r2, #0 d324: d13e bne.n d3a4 if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d326: 2b02 cmp r3, #2 d328: d100 bne.n d32c d32a: e153 b.n d5d4 else if(other_mask_cnt != 0 || !split) { d32c: 9b0c ldr r3, [sp, #48] ; 0x30 d32e: 2b00 cmp r3, #0 d330: d102 bne.n d338 d332: 9b09 ldr r3, [sp, #36] ; 0x24 d334: 2b32 cmp r3, #50 ; 0x32 d336: dc0c bgt.n d352 _lv_blend_fill(clip, &fill_area, d338: 7b73 ldrb r3, [r6, #13] d33a: 9302 str r3, [sp, #8] d33c: 465b mov r3, fp d33e: 9301 str r3, [sp, #4] d340: 9b05 ldr r3, [sp, #20] d342: 9300 str r3, [sp, #0] d344: 9b06 ldr r3, [sp, #24] d346: 466a mov r2, sp d348: 8c12 ldrh r2, [r2, #32] d34a: a91e add r1, sp, #120 ; 0x78 d34c: 9804 ldr r0, [sp, #16] d34e: 4c21 ldr r4, [pc, #132] ; (d3d4 ) d350: 47a0 blx r4 fill_area.y1++; d352: ab1e add r3, sp, #120 ; 0x78 d354: 885a ldrh r2, [r3, #2] d356: 3201 adds r2, #1 d358: 805a strh r2, [r3, #2] fill_area.y2++; d35a: 88da ldrh r2, [r3, #6] d35c: 3201 adds r2, #1 d35e: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { d360: 3501 adds r5, #1 d362: ab0e add r3, sp, #56 ; 0x38 d364: 223e movs r2, #62 ; 0x3e d366: 5e9b ldrsh r3, [r3, r2] d368: 429d cmp r5, r3 d36a: dd00 ble.n d36e d36c: e13f b.n d5ee int32_t y = h + vdb->area.y1; d36e: 464b mov r3, r9 d370: 2412 movs r4, #18 d372: 5f1c ldrsh r4, [r3, r4] d374: 1964 adds r4, r4, r5 if(y > coords_bg.y1 + rout + 1 && d376: ab1a add r3, sp, #104 ; 0x68 d378: 2202 movs r2, #2 d37a: 5e9b ldrsh r3, [r3, r2] d37c: 4443 add r3, r8 d37e: 3301 adds r3, #1 d380: 429c cmp r4, r3 d382: ddb7 ble.n d2f4 y < coords_bg.y2 - rout - 1) { d384: ab1a add r3, sp, #104 ; 0x68 d386: 2206 movs r2, #6 d388: 5e9b ldrsh r3, [r3, r2] d38a: 4642 mov r2, r8 d38c: 1a9b subs r3, r3, r2 d38e: 3b01 subs r3, #1 if(y > coords_bg.y1 + rout + 1 && d390: 429c cmp r4, r3 d392: daaf bge.n d2f4 if(simple_mode == false) { d394: 9b07 ldr r3, [sp, #28] d396: 2b00 cmp r3, #0 d398: d095 beq.n d2c6 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d39a: 79b3 ldrb r3, [r6, #6] d39c: 2b01 cmp r3, #1 d39e: d029 beq.n d3f4 mask_res = LV_DRAW_MASK_RES_FULL_COVER; d3a0: 2201 movs r2, #1 d3a2: 9205 str r2, [sp, #20] if(simple_mode && split && d3a4: 9a09 ldr r2, [sp, #36] ; 0x24 d3a6: 2a32 cmp r2, #50 ; 0x32 d3a8: dd00 ble.n d3ac d3aa: e0a0 b.n d4ee if(dsc->bg_grad_dir == LV_GRAD_DIR_HOR) { d3ac: 2b02 cmp r3, #2 d3ae: d100 bne.n d3b2 d3b0: e110 b.n d5d4 else if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d3b2: 2b01 cmp r3, #1 d3b4: d1ba bne.n d32c _lv_blend_fill(clip, &fill_area, d3b6: 7b73 ldrb r3, [r6, #13] d3b8: 9302 str r3, [sp, #8] d3ba: 465b mov r3, fp d3bc: 9301 str r3, [sp, #4] d3be: 9b05 ldr r3, [sp, #20] d3c0: 9300 str r3, [sp, #0] d3c2: 9b06 ldr r3, [sp, #24] d3c4: 466a mov r2, sp d3c6: 8c12 ldrh r2, [r2, #32] d3c8: a91e add r1, sp, #120 ; 0x78 d3ca: 9804 ldr r0, [sp, #16] d3cc: 4c01 ldr r4, [pc, #4] ; (d3d4 ) d3ce: 47a0 blx r4 d3d0: e7bf b.n d352 d3d2: 46c0 nop ; (mov r8, r8) d3d4: 00006fed .word 0x00006fed d3d8: 0000bd01 .word 0x0000bd01 d3dc: 0000ba75 .word 0x0000ba75 d3e0: 000127a1 .word 0x000127a1 d3e4: fffff81f .word 0xfffff81f d3e8: 0001c1b9 .word 0x0001c1b9 d3ec: 00012a19 .word 0x00012a19 d3f0: 0000bad1 .word 0x0000bad1 mask_res = LV_DRAW_MASK_RES_FULL_COVER; d3f4: 2301 movs r3, #1 d3f6: 9305 str r3, [sp, #20] if(dsc->bg_grad_dir == LV_GRAD_DIR_VER && dsc->bg_color.full != dsc->bg_grad_color.full) { d3f8: 8872 ldrh r2, [r6, #2] d3fa: 88b3 ldrh r3, [r6, #4] d3fc: 429a cmp r2, r3 d3fe: d06d beq.n d4dc return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d400: a91a add r1, sp, #104 ; 0x68 d402: 884a ldrh r2, [r1, #2] grad_color = grad_get(dsc, lv_area_get_height(&coords_bg), y - coords_bg.y1); d404: 1aa3 subs r3, r4, r2 d406: b29b uxth r3, r3 int32_t min = (dsc->bg_main_color_stop * s) >> 8; d408: 2708 movs r7, #8 d40a: 5ff0 ldrsh r0, [r6, r7] d40c: 4682 mov sl, r0 d40e: 88c9 ldrh r1, [r1, #6] d410: 3101 adds r1, #1 d412: 1a89 subs r1, r1, r2 d414: b209 sxth r1, r1 d416: 0002 movs r2, r0 d418: 434a muls r2, r1 d41a: 1212 asrs r2, r2, #8 if(i <= min) return dsc->bg_color; d41c: b218 sxth r0, r3 d41e: 4684 mov ip, r0 d420: 4282 cmp r2, r0 d422: da45 bge.n d4b0 int32_t max = (dsc->bg_grad_color_stop * s) >> 8; d424: 270a movs r7, #10 d426: 5ff0 ldrsh r0, [r6, r7] d428: 0007 movs r7, r0 d42a: 434f muls r7, r1 d42c: 123f asrs r7, r7, #8 if(i >= max) return dsc->bg_grad_color; d42e: 45bc cmp ip, r7 d430: db00 blt.n d434 d432: e0b1 b.n d598 int32_t d = dsc->bg_grad_color_stop - dsc->bg_main_color_stop; d434: 4657 mov r7, sl d436: 1bc0 subs r0, r0, r7 d = (s * d) >> 8; d438: 4341 muls r1, r0 i -= min; d43a: 1a9b subs r3, r3, r2 lv_opa_t mix = (i * 255) / d; d43c: b21b sxth r3, r3 d43e: 0218 lsls r0, r3, #8 d440: 1ac0 subs r0, r0, r3 d = (s * d) >> 8; d442: 1209 asrs r1, r1, #8 lv_opa_t mix = (i * 255) / d; d444: 4bc0 ldr r3, [pc, #768] ; (d748 ) d446: 4798 blx r3 d448: 21ff movs r1, #255 ; 0xff d44a: 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))); d44c: 1a09 subs r1, r1, r0 d44e: 7972 ldrb r2, [r6, #5] d450: 08d2 lsrs r2, r2, #3 d452: 4342 muls r2, r0 d454: 78f3 ldrb r3, [r6, #3] d456: 08db lsrs r3, r3, #3 d458: 434b muls r3, r1 d45a: 18d3 adds r3, r2, r3 d45c: 021a lsls r2, r3, #8 d45e: 18d2 adds r2, r2, r3 d460: 01d2 lsls r2, r2, #7 d462: 18d2 adds r2, r2, r3 d464: 0dd2 lsrs r2, r2, #23 d466: 231f movs r3, #31 d468: 469c mov ip, r3 d46a: 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))); d46c: 88b3 ldrh r3, [r6, #4] d46e: 055b lsls r3, r3, #21 d470: 0e9b lsrs r3, r3, #26 d472: 4343 muls r3, r0 d474: 469a mov sl, r3 d476: 8873 ldrh r3, [r6, #2] d478: 055b lsls r3, r3, #21 d47a: 0e9b lsrs r3, r3, #26 d47c: 434b muls r3, r1 d47e: 449a add sl, r3 d480: 4653 mov r3, sl d482: 021b lsls r3, r3, #8 d484: 4453 add r3, sl d486: 01db lsls r3, r3, #7 d488: 4453 add r3, sl d48a: 00db lsls r3, r3, #3 d48c: 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))); d48e: 7937 ldrb r7, [r6, #4] d490: 06ff lsls r7, r7, #27 d492: 0eff lsrs r7, r7, #27 d494: 4378 muls r0, r7 d496: 78b7 ldrb r7, [r6, #2] d498: 06ff lsls r7, r7, #27 d49a: 0eff lsrs r7, r7, #27 d49c: 4379 muls r1, r7 d49e: 1841 adds r1, r0, r1 d4a0: 0208 lsls r0, r1, #8 d4a2: 1840 adds r0, r0, r1 d4a4: 01c0 lsls r0, r0, #7 d4a6: 1840 adds r0, r0, r1 d4a8: 0dc0 lsrs r0, r0, #23 d4aa: 4661 mov r1, ip d4ac: 4008 ands r0, r1 d4ae: e007 b.n d4c0 if(i <= min) return dsc->bg_color; d4b0: 78b1 ldrb r1, [r6, #2] d4b2: 06c9 lsls r1, r1, #27 d4b4: 0ec8 lsrs r0, r1, #27 d4b6: 8873 ldrh r3, [r6, #2] d4b8: 055b lsls r3, r3, #21 d4ba: 0e9b lsrs r3, r3, #26 d4bc: 78f2 ldrb r2, [r6, #3] d4be: 08d2 lsrs r2, r2, #3 d4c0: 211f movs r1, #31 d4c2: 9f08 ldr r7, [sp, #32] d4c4: 438f bics r7, r1 d4c6: 0039 movs r1, r7 d4c8: 4301 orrs r1, r0 d4ca: 0158 lsls r0, r3, #5 d4cc: 4b9f ldr r3, [pc, #636] ; (d74c ) d4ce: 400b ands r3, r1 d4d0: 4303 orrs r3, r0 d4d2: 02d2 lsls r2, r2, #11 d4d4: 055b lsls r3, r3, #21 d4d6: 0d5b lsrs r3, r3, #21 d4d8: 4313 orrs r3, r2 d4da: 9308 str r3, [sp, #32] if(simple_mode && split && d4dc: 9b07 ldr r3, [sp, #28] d4de: 2b00 cmp r3, #0 d4e0: d100 bne.n d4e4 d4e2: e768 b.n d3b6 d4e4: 2301 movs r3, #1 d4e6: 9a09 ldr r2, [sp, #36] ; 0x24 d4e8: 2a32 cmp r2, #50 ; 0x32 d4ea: dc00 bgt.n d4ee d4ec: e763 b.n d3b6 (y < coords_bg.y1 + rout + 1 || d4ee: aa1a add r2, sp, #104 ; 0x68 d4f0: 2102 movs r1, #2 d4f2: 5e52 ldrsh r2, [r2, r1] d4f4: 4442 add r2, r8 d4f6: 3201 adds r2, #1 if(simple_mode && split && d4f8: 4294 cmp r4, r2 d4fa: db08 blt.n d50e y > coords_bg.y2 - rout - 1)) { d4fc: aa1a add r2, sp, #104 ; 0x68 d4fe: 2106 movs r1, #6 d500: 5e52 ldrsh r2, [r2, r1] d502: 4641 mov r1, r8 d504: 1a52 subs r2, r2, r1 d506: 3a01 subs r2, #1 (y < coords_bg.y1 + rout + 1 || d508: 4294 cmp r4, r2 d50a: dc00 bgt.n d50e d50c: e74e b.n d3ac fill_area2.x1 = coords_bg.x1; d50e: ab1a add r3, sp, #104 ; 0x68 d510: 2200 movs r2, #0 d512: 5e9b ldrsh r3, [r3, r2] d514: a922 add r1, sp, #136 ; 0x88 d516: 800b strh r3, [r1, #0] fill_area2.x2 = coords_bg.x1 + rout - 1; d518: 4642 mov r2, r8 d51a: 4668 mov r0, sp d51c: 8702 strh r2, [r0, #56] ; 0x38 d51e: 8f04 ldrh r4, [r0, #56] ; 0x38 d520: 3b01 subs r3, #1 d522: 18e3 adds r3, r4, r3 d524: 808b strh r3, [r1, #4] fill_area2.y1 = fill_area.y1; d526: ab1e add r3, sp, #120 ; 0x78 d528: 885a ldrh r2, [r3, #2] d52a: 804a strh r2, [r1, #2] fill_area2.y2 = fill_area.y2; d52c: 88db ldrh r3, [r3, #6] d52e: 80cb strh r3, [r1, #6] _lv_blend_fill(clip, &fill_area2, d530: 7b73 ldrb r3, [r6, #13] d532: 9302 str r3, [sp, #8] d534: 465b mov r3, fp d536: 9301 str r3, [sp, #4] d538: 9b05 ldr r3, [sp, #20] d53a: 9300 str r3, [sp, #0] d53c: 9b06 ldr r3, [sp, #24] d53e: 8c02 ldrh r2, [r0, #32] d540: 9804 ldr r0, [sp, #16] d542: 4f83 ldr r7, [pc, #524] ; (d750 ) d544: 47b8 blx r7 if(dsc->bg_grad_dir == LV_GRAD_DIR_VER) { d546: 79b3 ldrb r3, [r6, #6] d548: 2b01 cmp r3, #1 d54a: d02e beq.n d5aa fill_area2.x1 = coords_bg.x2 - rout + 1; d54c: ab1a add r3, sp, #104 ; 0x68 d54e: 2204 movs r2, #4 d550: 5e9b ldrsh r3, [r3, r2] d552: a922 add r1, sp, #136 ; 0x88 d554: 1c5a adds r2, r3, #1 d556: 1b14 subs r4, r2, r4 d558: 800c strh r4, [r1, #0] fill_area2.x2 = coords_bg.x2; d55a: 808b strh r3, [r1, #4] int32_t mask_ofs = (coords_bg.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); d55c: 4642 mov r2, r8 d55e: 1a9b subs r3, r3, r2 d560: 3301 adds r3, #1 d562: 464a mov r2, r9 d564: 2110 movs r1, #16 d566: 5e52 ldrsh r2, [r2, r1] d568: a90e add r1, sp, #56 ; 0x38 d56a: 2038 movs r0, #56 ; 0x38 d56c: 5e09 ldrsh r1, [r1, r0] d56e: 1852 adds r2, r2, r1 d570: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, d572: 43da mvns r2, r3 d574: 17d2 asrs r2, r2, #31 d576: 4013 ands r3, r2 d578: 9a06 ldr r2, [sp, #24] d57a: 4694 mov ip, r2 d57c: 4463 add r3, ip d57e: 7b72 ldrb r2, [r6, #13] d580: 9202 str r2, [sp, #8] d582: 465a mov r2, fp d584: 9201 str r2, [sp, #4] d586: 9a05 ldr r2, [sp, #20] d588: 9200 str r2, [sp, #0] d58a: 466a mov r2, sp d58c: 8c12 ldrh r2, [r2, #32] d58e: a922 add r1, sp, #136 ; 0x88 d590: 9804 ldr r0, [sp, #16] d592: 4c6f ldr r4, [pc, #444] ; (d750 ) d594: 47a0 blx r4 d596: e6dc b.n d352 if(i >= max) return dsc->bg_grad_color; d598: 7931 ldrb r1, [r6, #4] d59a: 06c9 lsls r1, r1, #27 d59c: 0ec8 lsrs r0, r1, #27 d59e: 88b3 ldrh r3, [r6, #4] d5a0: 055b lsls r3, r3, #21 d5a2: 0e9b lsrs r3, r3, #26 d5a4: 7972 ldrb r2, [r6, #5] d5a6: 08d2 lsrs r2, r2, #3 d5a8: e78a b.n d4c0 fill_area2.x1 = coords_bg.x1 + rout; d5aa: a922 add r1, sp, #136 ; 0x88 d5ac: aa1a add r2, sp, #104 ; 0x68 d5ae: 8813 ldrh r3, [r2, #0] d5b0: 18e3 adds r3, r4, r3 d5b2: 800b strh r3, [r1, #0] fill_area2.x2 = coords_bg.x2 - rout; d5b4: 8893 ldrh r3, [r2, #4] d5b6: 1b1b subs r3, r3, r4 d5b8: 808b strh r3, [r1, #4] _lv_blend_fill(clip, &fill_area2, d5ba: 7b73 ldrb r3, [r6, #13] d5bc: 9302 str r3, [sp, #8] d5be: 465b mov r3, fp d5c0: 9301 str r3, [sp, #4] d5c2: 2301 movs r3, #1 d5c4: 9300 str r3, [sp, #0] d5c6: 2300 movs r3, #0 d5c8: 466a mov r2, sp d5ca: 8c12 ldrh r2, [r2, #32] d5cc: 9804 ldr r0, [sp, #16] d5ce: 4f60 ldr r7, [pc, #384] ; (d750 ) d5d0: 47b8 blx r7 d5d2: e7bb b.n d54c _lv_blend_map(clip, &fill_area, grad_map, mask_buf, mask_res, opa, dsc->bg_blend_mode); d5d4: 7b73 ldrb r3, [r6, #13] d5d6: 9302 str r3, [sp, #8] d5d8: 465b mov r3, fp d5da: 9301 str r3, [sp, #4] d5dc: 9b05 ldr r3, [sp, #20] d5de: 9300 str r3, [sp, #0] d5e0: 9b06 ldr r3, [sp, #24] d5e2: 9a0d ldr r2, [sp, #52] ; 0x34 d5e4: a91e add r1, sp, #120 ; 0x78 d5e6: 9804 ldr r0, [sp, #16] d5e8: 4c5a ldr r4, [pc, #360] ; (d754 ) d5ea: 47a0 blx r4 d5ec: e6b1 b.n d352 d5ee: 46da mov sl, fp d5f0: 9b10 ldr r3, [sp, #64] ; 0x40 d5f2: 4699 mov r9, r3 d5f4: 46b3 mov fp, r6 if(dsc->bg_grad_dir == LV_GRAD_DIR_NONE && other_mask_cnt == 0 && split) { d5f6: 465b mov r3, fp d5f8: 799b ldrb r3, [r3, #6] d5fa: 2b00 cmp r3, #0 d5fc: d105 bne.n d60a d5fe: 9b0c ldr r3, [sp, #48] ; 0x30 d600: 2b00 cmp r3, #0 d602: d102 bne.n d60a d604: 9b09 ldr r3, [sp, #36] ; 0x24 d606: 2b32 cmp r3, #50 ; 0x32 d608: dc0c bgt.n d624 if(grad_map) _lv_mem_buf_release(grad_map); d60a: 9b0d ldr r3, [sp, #52] ; 0x34 d60c: 2b00 cmp r3, #0 d60e: d002 beq.n d616 d610: 0018 movs r0, r3 d612: 4b51 ldr r3, [pc, #324] ; (d758 ) d614: 4798 blx r3 lv_draw_mask_remove_id(mask_rout_id); d616: 980f ldr r0, [sp, #60] ; 0x3c d618: 4b50 ldr r3, [pc, #320] ; (d75c ) d61a: 4798 blx r3 _lv_mem_buf_release(mask_buf); d61c: 9806 ldr r0, [sp, #24] d61e: 4b4e ldr r3, [pc, #312] ; (d758 ) d620: 4798 blx r3 d622: e46f b.n cf04 fill_area.x1 = coords_bg.x1 + rout; d624: 4643 mov r3, r8 d626: 466a mov r2, sp d628: 8293 strh r3, [r2, #20] d62a: 8a96 ldrh r6, [r2, #20] d62c: ac1e add r4, sp, #120 ; 0x78 d62e: ad1a add r5, sp, #104 ; 0x68 d630: 882b ldrh r3, [r5, #0] d632: 18f3 adds r3, r6, r3 d634: 8023 strh r3, [r4, #0] fill_area.x2 = coords_bg.x2 - rout; d636: 88ab ldrh r3, [r5, #4] d638: 1b9b subs r3, r3, r6 d63a: 80a3 strh r3, [r4, #4] fill_area.y1 = coords_bg.y1; d63c: 2202 movs r2, #2 d63e: 5eab ldrsh r3, [r5, r2] d640: 8063 strh r3, [r4, #2] fill_area.y2 = coords_bg.y1 + rout; d642: 18f3 adds r3, r6, r3 d644: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area, d646: 465b mov r3, fp d648: 885a ldrh r2, [r3, #2] d64a: 7b5b ldrb r3, [r3, #13] d64c: 9302 str r3, [sp, #8] d64e: 4653 mov r3, sl d650: 9301 str r3, [sp, #4] d652: 2301 movs r3, #1 d654: 9300 str r3, [sp, #0] d656: 2300 movs r3, #0 d658: 0021 movs r1, r4 d65a: 9804 ldr r0, [sp, #16] d65c: 4f3c ldr r7, [pc, #240] ; (d750 ) d65e: 47b8 blx r7 fill_area.y1 = coords_bg.y2 - rout; d660: 2306 movs r3, #6 d662: 5ee9 ldrsh r1, [r5, r3] d664: 1b8a subs r2, r1, r6 d666: b212 sxth r2, r2 d668: 8062 strh r2, [r4, #2] if(fill_area.y1 <= fill_area.y2) fill_area.y1 = fill_area.y2 + 1; /*Avoid overdrawing the last line*/ d66a: 2006 movs r0, #6 d66c: 5e23 ldrsh r3, [r4, r0] d66e: 429a cmp r2, r3 d670: dc02 bgt.n d678 d672: 3301 adds r3, #1 d674: aa1e add r2, sp, #120 ; 0x78 d676: 8053 strh r3, [r2, #2] fill_area.y2 = coords_bg.y2; d678: ac1e add r4, sp, #120 ; 0x78 d67a: 80e1 strh r1, [r4, #6] _lv_blend_fill(clip, &fill_area, d67c: 465b mov r3, fp d67e: 885a ldrh r2, [r3, #2] d680: 7b5b ldrb r3, [r3, #13] d682: 9302 str r3, [sp, #8] d684: 4653 mov r3, sl d686: 9301 str r3, [sp, #4] d688: 2701 movs r7, #1 d68a: 9700 str r7, [sp, #0] d68c: 2300 movs r3, #0 d68e: 0021 movs r1, r4 d690: 9804 ldr r0, [sp, #16] d692: 4d2f ldr r5, [pc, #188] ; (d750 ) d694: 47a8 blx r5 fill_area.x1 = coords_bg.x1; d696: aa1a add r2, sp, #104 ; 0x68 d698: 8813 ldrh r3, [r2, #0] d69a: 8023 strh r3, [r4, #0] fill_area.x2 = coords_bg.x2; d69c: 8893 ldrh r3, [r2, #4] d69e: 80a3 strh r3, [r4, #4] fill_area.y1 = coords_bg.y1 + rout + 1; d6a0: 8853 ldrh r3, [r2, #2] d6a2: 3301 adds r3, #1 d6a4: 18f3 adds r3, r6, r3 d6a6: 8063 strh r3, [r4, #2] fill_area.y2 = coords_bg.y2 - rout - 1; d6a8: 88d3 ldrh r3, [r2, #6] d6aa: 3b01 subs r3, #1 d6ac: 1b9e subs r6, r3, r6 d6ae: 80e6 strh r6, [r4, #6] _lv_blend_fill(clip, &fill_area, d6b0: 465b mov r3, fp d6b2: 885a ldrh r2, [r3, #2] d6b4: 7b5b ldrb r3, [r3, #13] d6b6: 9302 str r3, [sp, #8] d6b8: 4653 mov r3, sl d6ba: 9301 str r3, [sp, #4] d6bc: 9700 str r7, [sp, #0] d6be: 2300 movs r3, #0 d6c0: 0021 movs r1, r4 d6c2: 9804 ldr r0, [sp, #16] d6c4: 47a8 blx r5 d6c6: e7a0 b.n d60a lv_img_src_t src_type = lv_img_src_get_type(dsc->pattern_image); d6c8: 4b25 ldr r3, [pc, #148] ; (d760 ) d6ca: 4798 blx r3 d6cc: 0007 movs r7, r0 if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_VARIABLE) { d6ce: 2801 cmp r0, #1 d6d0: d911 bls.n d6f6 else if(src_type == LV_IMG_SRC_SYMBOL) { d6d2: 2802 cmp r0, #2 d6d4: d05a beq.n d78c LV_LOG_WARN("lv_img_design: image source type is unknown"); d6d6: 4b23 ldr r3, [pc, #140] ; (d764 ) d6d8: 9300 str r3, [sp, #0] d6da: 4b23 ldr r3, [pc, #140] ; (d768 ) d6dc: 4a23 ldr r2, [pc, #140] ; (d76c ) d6de: 4924 ldr r1, [pc, #144] ; (d770 ) d6e0: 2002 movs r0, #2 d6e2: 4c24 ldr r4, [pc, #144] ; (d774 ) d6e4: 47a0 blx r4 lv_draw_img(coords, clip, NULL, NULL); d6e6: 2300 movs r3, #0 d6e8: 2200 movs r2, #0 d6ea: 9904 ldr r1, [sp, #16] d6ec: 4648 mov r0, r9 d6ee: 4c22 ldr r4, [pc, #136] ; (d778 ) d6f0: 47a0 blx r4 d6f2: f7ff fc12 bl cf1a lv_res_t res = lv_img_decoder_get_info(dsc->pattern_image, &header); d6f6: a929 add r1, sp, #164 ; 0xa4 d6f8: 465b mov r3, fp d6fa: 6ad8 ldr r0, [r3, #44] ; 0x2c d6fc: 4b1f ldr r3, [pc, #124] ; (d77c ) d6fe: 4798 blx r3 if(res != LV_RES_OK) { d700: 2801 cmp r0, #1 d702: d009 beq.n d718 LV_LOG_WARN("draw_img: can't get image info"); d704: 4b1e ldr r3, [pc, #120] ; (d780 ) d706: 9300 str r3, [sp, #0] d708: 4b17 ldr r3, [pc, #92] ; (d768 ) d70a: 4a1e ldr r2, [pc, #120] ; (d784 ) d70c: 4918 ldr r1, [pc, #96] ; (d770 ) d70e: 2002 movs r0, #2 d710: 4c18 ldr r4, [pc, #96] ; (d774 ) d712: 47a0 blx r4 d714: f7ff fc01 bl cf1a img_w = header.w; d718: 9b29 ldr r3, [sp, #164] ; 0xa4 d71a: 02dd lsls r5, r3, #11 d71c: 0d6d lsrs r5, r5, #21 img_h = header.h; d71e: 236e movs r3, #110 ; 0x6e d720: aa0e add r2, sp, #56 ; 0x38 d722: 4694 mov ip, r2 d724: 4463 add r3, ip d726: 881e ldrh r6, [r3, #0] d728: 0976 lsrs r6, r6, #5 lv_draw_img_dsc_init(&img_dsc); d72a: ac1e add r4, sp, #120 ; 0x78 d72c: 0020 movs r0, r4 d72e: 4b16 ldr r3, [pc, #88] ; (d788 ) d730: 4798 blx r3 img_dsc.opa = dsc->pattern_opa; d732: 2336 movs r3, #54 ; 0x36 d734: 465a mov r2, fp d736: 5cd3 ldrb r3, [r2, r3] d738: 7023 strb r3, [r4, #0] img_dsc.recolor_opa = dsc->pattern_recolor_opa; d73a: 2337 movs r3, #55 ; 0x37 d73c: 5cd3 ldrb r3, [r2, r3] d73e: 72a3 strb r3, [r4, #10] img_dsc.recolor = dsc->pattern_recolor; d740: 8e93 ldrh r3, [r2, #52] ; 0x34 d742: 81a3 strh r3, [r4, #12] d744: e045 b.n d7d2 d746: 46c0 nop ; (mov r8, r8) d748: 0001c1b9 .word 0x0001c1b9 d74c: fffff81f .word 0xfffff81f d750: 00006fed .word 0x00006fed d754: 00007cf1 .word 0x00007cf1 d758: 00012465 .word 0x00012465 d75c: 0000bb25 .word 0x0000bb25 d760: 00009589 .word 0x00009589 d764: 000264b4 .word 0x000264b4 d768: 0002644c .word 0x0002644c d76c: 000005ab .word 0x000005ab d770: 0002645c .word 0x0002645c d774: 00012159 .word 0x00012159 d778: 00009305 .word 0x00009305 d77c: 0000fc21 .word 0x0000fc21 d780: 00026494 .word 0x00026494 d784: 00000591 .word 0x00000591 d788: 00009271 .word 0x00009271 lv_draw_label_dsc_init(&label_dsc); d78c: ac22 add r4, sp, #136 ; 0x88 d78e: 0020 movs r0, r4 d790: 4b87 ldr r3, [pc, #540] ; (d9b0 ) d792: 4798 blx r3 label_dsc.color = dsc->pattern_recolor; d794: 465b mov r3, fp d796: 8e9b ldrh r3, [r3, #52] ; 0x34 d798: 8023 strh r3, [r4, #0] label_dsc.font = dsc->pattern_font; d79a: 465b mov r3, fp d79c: 6b1b ldr r3, [r3, #48] ; 0x30 d79e: 6063 str r3, [r4, #4] label_dsc.opa = dsc->pattern_opa; d7a0: 2336 movs r3, #54 ; 0x36 d7a2: 465a mov r2, fp d7a4: 5cd3 ldrb r3, [r2, r3] d7a6: 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, d7a8: 220c movs r2, #12 d7aa: 5ea3 ldrsh r3, [r4, r2] d7ac: ae29 add r6, sp, #164 ; 0xa4 d7ae: 2200 movs r2, #0 d7b0: 9202 str r2, [sp, #8] d7b2: 4a80 ldr r2, [pc, #512] ; (d9b4 ) d7b4: 9201 str r2, [sp, #4] d7b6: 210a movs r1, #10 d7b8: 5e62 ldrsh r2, [r4, r1] d7ba: 9200 str r2, [sp, #0] d7bc: 465a mov r2, fp d7be: 6b12 ldr r2, [r2, #48] ; 0x30 d7c0: 4659 mov r1, fp d7c2: 6ac9 ldr r1, [r1, #44] ; 0x2c d7c4: 0030 movs r0, r6 d7c6: 4c7c ldr r4, [pc, #496] ; (d9b8 ) d7c8: 47a0 blx r4 img_w = s.x; d7ca: 2300 movs r3, #0 d7cc: 5ef5 ldrsh r5, [r6, r3] img_h = s.y; d7ce: 2302 movs r3, #2 d7d0: 5ef6 ldrsh r6, [r6, r3] if(dsc->pattern_repeat) { d7d2: 2338 movs r3, #56 ; 0x38 d7d4: 465a mov r2, fp d7d6: 5cd3 ldrb r3, [r2, r3] d7d8: 07db lsls r3, r3, #31 d7da: d43d bmi.n d858 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d7dc: 464b mov r3, r9 d7de: 8818 ldrh r0, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d7e0: 8859 ldrh r1, [r3, #2] d7e2: 88db ldrh r3, [r3, #6] d7e4: 3301 adds r3, #1 d7e6: 1a5b subs r3, r3, r1 int32_t obj_h = lv_area_get_height(coords); d7e8: b21b sxth r3, r3 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d7ea: 464a mov r2, r9 d7ec: 8892 ldrh r2, [r2, #4] d7ee: 3201 adds r2, #1 d7f0: 1a12 subs r2, r2, r0 int32_t obj_w = lv_area_get_width(coords); d7f2: b212 sxth r2, r2 coords_tmp.x1 = coords->x1 + (obj_w - img_w) / 2; d7f4: 1b52 subs r2, r2, r5 d7f6: 0fd4 lsrs r4, r2, #31 d7f8: 18a2 adds r2, r4, r2 d7fa: 1052 asrs r2, r2, #1 d7fc: 1880 adds r0, r0, r2 d7fe: b280 uxth r0, r0 d800: aa1c add r2, sp, #112 ; 0x70 d802: 8010 strh r0, [r2, #0] coords_tmp.y1 = coords->y1 + (obj_h - img_h) / 2; d804: 1b9c subs r4, r3, r6 d806: 0fe3 lsrs r3, r4, #31 d808: 191b adds r3, r3, r4 d80a: 105b asrs r3, r3, #1 d80c: 18c9 adds r1, r1, r3 d80e: b289 uxth r1, r1 d810: 8051 strh r1, [r2, #2] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; d812: 3d01 subs r5, #1 d814: 1945 adds r5, r0, r5 d816: 8095 strh r5, [r2, #4] coords_tmp.y2 = coords_tmp.y1 + img_h - 1; d818: 1e73 subs r3, r6, #1 d81a: 18cb adds r3, r1, r3 d81c: b29b uxth r3, r3 d81e: 80d3 strh r3, [r2, #6] if(src_type == LV_IMG_SRC_SYMBOL) { d820: 2f02 cmp r7, #2 d822: d100 bne.n d826 d824: e09a b.n d95c if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { d826: 465b mov r3, fp d828: 2200 movs r2, #0 d82a: 5e9a ldrsh r2, [r3, r2] d82c: 4649 mov r1, r9 d82e: a81c add r0, sp, #112 ; 0x70 d830: 4b62 ldr r3, [pc, #392] ; (d9bc ) d832: 4798 blx r3 int16_t radius_mask_id = LV_MASK_ID_INV; d834: 2401 movs r4, #1 d836: 4264 negs r4, r4 if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { d838: 2800 cmp r0, #0 d83a: d101 bne.n d840 d83c: f000 feab bl e596 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); d840: ab1e add r3, sp, #120 ; 0x78 d842: 465a mov r2, fp d844: 6ad2 ldr r2, [r2, #44] ; 0x2c d846: 9904 ldr r1, [sp, #16] d848: a81c add r0, sp, #112 ; 0x70 d84a: 4d5d ldr r5, [pc, #372] ; (d9c0 ) d84c: 47a8 blx r5 lv_draw_mask_remove_id(radius_mask_id); d84e: 0020 movs r0, r4 d850: 4b5c ldr r3, [pc, #368] ; (d9c4 ) d852: 4798 blx r3 d854: f7ff fb61 bl cf1a lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); d858: 465b mov r3, fp d85a: 2200 movs r2, #0 d85c: 5e9a ldrsh r2, [r3, r2] d85e: 2300 movs r3, #0 d860: 4649 mov r1, r9 d862: a829 add r0, sp, #164 ; 0xa4 d864: 4c58 ldr r4, [pc, #352] ; (d9c8 ) d866: 47a0 blx r4 int16_t radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); d868: 2100 movs r1, #0 d86a: a829 add r0, sp, #164 ; 0xa4 d86c: 4b57 ldr r3, [pc, #348] ; (d9cc ) d86e: 4798 blx r3 d870: 9007 str r0, [sp, #28] d872: 464b mov r3, r9 d874: 8898 ldrh r0, [r3, #4] d876: 3001 adds r0, #1 d878: 881b ldrh r3, [r3, #0] d87a: 1ac0 subs r0, r0, r3 int32_t ofs_x = (lv_area_get_width(coords) - (lv_area_get_width(coords) / img_w) * img_w) / 2; d87c: b200 sxth r0, r0 d87e: 4b54 ldr r3, [pc, #336] ; (d9d0 ) d880: 4698 mov r8, r3 d882: 0029 movs r1, r5 d884: 4798 blx r3 d886: 0fcb lsrs r3, r1, #31 d888: 1859 adds r1, r3, r1 d88a: 104b asrs r3, r1, #1 d88c: 9306 str r3, [sp, #24] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); d88e: 464b mov r3, r9 d890: 2206 movs r2, #6 d892: 5e9b ldrsh r3, [r3, r2] d894: 469a mov sl, r3 d896: 464b mov r3, r9 d898: 885c ldrh r4, [r3, #2] d89a: 4653 mov r3, sl d89c: 1c58 adds r0, r3, #1 d89e: 1b00 subs r0, r0, r4 int32_t ofs_y = (lv_area_get_height(coords) - (lv_area_get_height(coords) / img_h) * img_h) / 2; d8a0: b200 sxth r0, r0 d8a2: 0031 movs r1, r6 d8a4: 47c0 blx r8 d8a6: 0fcb lsrs r3, r1, #31 d8a8: 185b adds r3, r3, r1 d8aa: 105b asrs r3, r3, #1 coords_tmp.y1 = coords->y1 - ofs_y; d8ac: 1ae4 subs r4, r4, r3 d8ae: b2a4 uxth r4, r4 d8b0: b223 sxth r3, r4 d8b2: aa1c add r2, sp, #112 ; 0x70 d8b4: 8053 strh r3, [r2, #2] coords_tmp.y2 = coords_tmp.y1 + img_h - 1; d8b6: b2b1 uxth r1, r6 d8b8: 4688 mov r8, r1 d8ba: 3901 subs r1, #1 d8bc: 1864 adds r4, r4, r1 d8be: 80d4 strh r4, [r2, #6] for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { d8c0: 459a cmp sl, r3 d8c2: db46 blt.n d952 coords_tmp.x1 = coords->x1 - ofs_x; d8c4: 0014 movs r4, r2 coords_tmp.x2 = coords_tmp.x1 + img_w - 1; d8c6: b2ad uxth r5, r5 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); d8c8: 4b42 ldr r3, [pc, #264] ; (d9d4 ) d8ca: 469a mov sl, r3 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); d8cc: 4e3c ldr r6, [pc, #240] ; (d9c0 ) if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); d8ce: 9205 str r2, [sp, #20] d8d0: 464b mov r3, r9 d8d2: 46b9 mov r9, r7 d8d4: 001f movs r7, r3 d8d6: e02a b.n d92e d8d8: 2300 movs r3, #0 d8da: 9300 str r3, [sp, #0] d8dc: 465b mov r3, fp d8de: 6adb ldr r3, [r3, #44] ; 0x2c d8e0: aa22 add r2, sp, #136 ; 0x88 d8e2: 9904 ldr r1, [sp, #16] d8e4: 9805 ldr r0, [sp, #20] d8e6: 47d0 blx sl for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { d8e8: 8823 ldrh r3, [r4, #0] d8ea: 18eb adds r3, r5, r3 d8ec: b21b sxth r3, r3 d8ee: 8023 strh r3, [r4, #0] d8f0: 88a2 ldrh r2, [r4, #4] d8f2: 18aa adds r2, r5, r2 d8f4: 80a2 strh r2, [r4, #4] d8f6: 464a mov r2, r9 d8f8: 2104 movs r1, #4 d8fa: 5e52 ldrsh r2, [r2, r1] d8fc: 429a cmp r2, r3 d8fe: db08 blt.n d912 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); d900: 2f02 cmp r7, #2 d902: d0e9 beq.n d8d8 else lv_draw_img(&coords_tmp, clip, dsc->pattern_image, &img_dsc); d904: ab1e add r3, sp, #120 ; 0x78 d906: 465a mov r2, fp d908: 6ad2 ldr r2, [r2, #44] ; 0x2c d90a: 9904 ldr r1, [sp, #16] d90c: 9805 ldr r0, [sp, #20] d90e: 47b0 blx r6 d910: e7ea b.n d8e8 d912: 464b mov r3, r9 d914: 46b9 mov r9, r7 d916: 001f movs r7, r3 for(; coords_tmp.y1 <= coords->y2; coords_tmp.y1 += img_h, coords_tmp.y2 += img_h) { d918: 8863 ldrh r3, [r4, #2] d91a: 4443 add r3, r8 d91c: b21b sxth r3, r3 d91e: 8063 strh r3, [r4, #2] d920: 88e2 ldrh r2, [r4, #6] d922: 4442 add r2, r8 d924: 80e2 strh r2, [r4, #6] d926: 2106 movs r1, #6 d928: 5e7a ldrsh r2, [r7, r1] d92a: 429a cmp r2, r3 d92c: db10 blt.n d950 coords_tmp.x1 = coords->x1 - ofs_x; d92e: 883b ldrh r3, [r7, #0] d930: 9a06 ldr r2, [sp, #24] d932: 1a9b subs r3, r3, r2 d934: b29b uxth r3, r3 d936: b21a sxth r2, r3 d938: 8022 strh r2, [r4, #0] coords_tmp.x2 = coords_tmp.x1 + img_w - 1; d93a: 1e69 subs r1, r5, #1 d93c: 185b adds r3, r3, r1 d93e: 80a3 strh r3, [r4, #4] for(; coords_tmp.x1 <= coords->x2; coords_tmp.x1 += img_w, coords_tmp.x2 += img_w) { d940: 2104 movs r1, #4 d942: 5e7b ldrsh r3, [r7, r1] d944: 4293 cmp r3, r2 d946: dbe7 blt.n d918 d948: 003b movs r3, r7 d94a: 464f mov r7, r9 d94c: 4699 mov r9, r3 d94e: e7d7 b.n d900 d950: 46b9 mov r9, r7 lv_draw_mask_remove_id(radius_mask_id); d952: 9807 ldr r0, [sp, #28] d954: 4b1b ldr r3, [pc, #108] ; (d9c4 ) d956: 4798 blx r3 d958: f7ff fadf bl cf1a coords_tmp.y1 += y_corr; d95c: 2201 movs r2, #1 d95e: 4014 ands r4, r2 d960: a81c add r0, sp, #112 ; 0x70 d962: 1909 adds r1, r1, r4 d964: 8041 strh r1, [r0, #2] coords_tmp.y2 += y_corr; d966: 191b adds r3, r3, r4 d968: 80c3 strh r3, [r0, #6] if(_lv_area_is_in(&coords_tmp, coords, dsc->radius) == false) { d96a: 465b mov r3, fp d96c: 2200 movs r2, #0 d96e: 5e9a ldrsh r2, [r3, r2] d970: 4649 mov r1, r9 d972: 4b12 ldr r3, [pc, #72] ; (d9bc ) d974: 4798 blx r3 d976: 2800 cmp r0, #0 d978: d116 bne.n d9a8 lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); d97a: 465b mov r3, fp d97c: 2200 movs r2, #0 d97e: 5e9a ldrsh r2, [r3, r2] d980: 2300 movs r3, #0 d982: 4649 mov r1, r9 d984: a829 add r0, sp, #164 ; 0xa4 d986: 4c10 ldr r4, [pc, #64] ; (d9c8 ) d988: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); d98a: 2100 movs r1, #0 d98c: a829 add r0, sp, #164 ; 0xa4 d98e: 4b0f ldr r3, [pc, #60] ; (d9cc ) d990: 4798 blx r3 d992: 0004 movs r4, r0 if(src_type == LV_IMG_SRC_SYMBOL) lv_draw_label(&coords_tmp, clip, &label_dsc, dsc->pattern_image, NULL); d994: 2300 movs r3, #0 d996: 9300 str r3, [sp, #0] d998: 465b mov r3, fp d99a: 6adb ldr r3, [r3, #44] ; 0x2c d99c: aa22 add r2, sp, #136 ; 0x88 d99e: 9904 ldr r1, [sp, #16] d9a0: a81c add r0, sp, #112 ; 0x70 d9a2: 4d0c ldr r5, [pc, #48] ; (d9d4 ) d9a4: 47a8 blx r5 d9a6: e752 b.n d84e int16_t radius_mask_id = LV_MASK_ID_INV; d9a8: 2401 movs r4, #1 d9aa: 4264 negs r4, r4 d9ac: e7f2 b.n d994 d9ae: 46c0 nop ; (mov r8, r8) d9b0: 000095ed .word 0x000095ed d9b4: 00007c18 .word 0x00007c18 d9b8: 00013f3d .word 0x00013f3d d9bc: 00011699 .word 0x00011699 d9c0: 00009305 .word 0x00009305 d9c4: 0000bb25 .word 0x0000bb25 d9c8: 0000bd01 .word 0x0000bd01 d9cc: 0000ba75 .word 0x0000ba75 d9d0: 0001c385 .word 0x0001c385 d9d4: 0000963d .word 0x0000963d draw_area.x1 -= disp_area->x1; d9d8: 8a38 ldrh r0, [r7, #16] d9da: aa18 add r2, sp, #96 ; 0x60 d9dc: 8811 ldrh r1, [r2, #0] d9de: 1a09 subs r1, r1, r0 d9e0: b289 uxth r1, r1 d9e2: 8011 strh r1, [r2, #0] draw_area.y1 -= disp_area->y1; d9e4: 8a7d ldrh r5, [r7, #18] d9e6: 8854 ldrh r4, [r2, #2] d9e8: 1b64 subs r4, r4, r5 d9ea: 8054 strh r4, [r2, #2] draw_area.x2 -= disp_area->x1; d9ec: 8893 ldrh r3, [r2, #4] d9ee: 1a1b subs r3, r3, r0 d9f0: b29b uxth r3, r3 d9f2: 8093 strh r3, [r2, #4] draw_area.y2 -= disp_area->y1; d9f4: 88d0 ldrh r0, [r2, #6] d9f6: 1b40 subs r0, r0, r5 d9f8: 80d0 strh r0, [r2, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); d9fa: 3301 adds r3, #1 d9fc: 1a5b subs r3, r3, r1 d9fe: b21b sxth r3, r3 da00: 930a str r3, [sp, #40] ; 0x28 lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); da02: 930b str r3, [sp, #44] ; 0x2c da04: 0018 movs r0, r3 da06: 4bb8 ldr r3, [pc, #736] ; (dce8 ) da08: 4798 blx r3 da0a: 9005 str r0, [sp, #20] uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); da0c: 4bb7 ldr r3, [pc, #732] ; (dcec ) da0e: 4798 blx r3 if(other_mask_cnt) simple_mode = false; da10: 2500 movs r5, #0 da12: 2800 cmp r0, #0 da14: d106 bne.n da24 else if(dsc->border_side != LV_BORDER_SIDE_FULL) simple_mode = false; da16: 465b mov r3, fp da18: 2512 movs r5, #18 da1a: 5f5d ldrsh r5, [r3, r5] da1c: 3d0f subs r5, #15 da1e: 426a negs r2, r5 da20: 416a adcs r2, r5 da22: b2d5 uxtb r5, r2 int32_t rout = dsc->radius; da24: 465b mov r3, fp da26: 2100 movs r1, #0 da28: 5e59 ldrsh r1, [r3, r1] da2a: 464b mov r3, r9 da2c: 889b ldrh r3, [r3, #4] da2e: 3301 adds r3, #1 da30: 464a mov r2, r9 da32: 8812 ldrh r2, [r2, #0] da34: 1a9b subs r3, r3, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); da36: 464a mov r2, r9 da38: 88d2 ldrh r2, [r2, #6] da3a: 3201 adds r2, #1 da3c: 4648 mov r0, r9 da3e: 8840 ldrh r0, [r0, #2] da40: 1a12 subs r2, r2, r0 int32_t coords_h = lv_area_get_height(coords); da42: b212 sxth r2, r2 int32_t short_side = LV_MATH_MIN(coords_w, coords_h); da44: b21b sxth r3, r3 da46: 4293 cmp r3, r2 da48: dd00 ble.n da4c da4a: 0013 movs r3, r2 if(rout > short_side >> 1) rout = short_side >> 1; da4c: 105b asrs r3, r3, #1 da4e: 9309 str r3, [sp, #36] ; 0x24 da50: 428b cmp r3, r1 da52: dd00 ble.n da56 da54: 9109 str r1, [sp, #36] ; 0x24 if(rout > 0) { da56: 9b09 ldr r3, [sp, #36] ; 0x24 da58: 2b00 cmp r3, #0 da5a: dc00 bgt.n da5e da5c: e084 b.n db68 lv_draw_mask_radius_init(&mask_rout_param, coords, rout, false); da5e: b21a sxth r2, r3 da60: 2300 movs r3, #0 da62: 4649 mov r1, r9 da64: a822 add r0, sp, #136 ; 0x88 da66: 4ca2 ldr r4, [pc, #648] ; (dcf0 ) da68: 47a0 blx r4 mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); da6a: 2100 movs r1, #0 da6c: a822 add r0, sp, #136 ; 0x88 da6e: 4ba1 ldr r3, [pc, #644] ; (dcf4 ) da70: 4798 blx r3 da72: 900f str r0, [sp, #60] ; 0x3c int32_t rin = rout - dsc->border_width; da74: 465b mov r3, fp da76: 2010 movs r0, #16 da78: 5e18 ldrsh r0, [r3, r0] da7a: 2300 movs r3, #0 *d8 = *s8; da7c: a91a add r1, sp, #104 ; 0x68 da7e: 464c mov r4, r9 da80: 5ce2 ldrb r2, [r4, r3] da82: 545a strb r2, [r3, r1] da84: 3301 adds r3, #1 while(len) { da86: 2b08 cmp r3, #8 da88: d1fa bne.n da80 da8a: 46a1 mov r9, r4 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); da8c: ab1a add r3, sp, #104 ; 0x68 da8e: 881a ldrh r2, [r3, #0] da90: 465b mov r3, fp da92: 8a5b ldrh r3, [r3, #18] da94: 0759 lsls r1, r3, #29 da96: d56b bpl.n db70 da98: b284 uxth r4, r0 da9a: a91a add r1, sp, #104 ; 0x68 da9c: 1912 adds r2, r2, r4 da9e: 800a strh r2, [r1, #0] area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); daa0: 888a ldrh r2, [r1, #4] daa2: 0719 lsls r1, r3, #28 daa4: d569 bpl.n db7a daa6: b284 uxth r4, r0 daa8: a91a add r1, sp, #104 ; 0x68 daaa: 1b12 subs r2, r2, r4 daac: 808a strh r2, [r1, #4] area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); daae: 884a ldrh r2, [r1, #2] dab0: 0799 lsls r1, r3, #30 dab2: d567 bpl.n db84 dab4: b284 uxth r4, r0 dab6: a91a add r1, sp, #104 ; 0x68 dab8: 1912 adds r2, r2, r4 daba: 804a strh r2, [r1, #2] area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); dabc: 88ca ldrh r2, [r1, #6] dabe: 07db lsls r3, r3, #31 dac0: d565 bpl.n db8e dac2: b283 uxth r3, r0 dac4: a91a add r1, sp, #104 ; 0x68 dac6: 1ad3 subs r3, r2, r3 dac8: 80cb strh r3, [r1, #6] lv_draw_mask_radius_init(&mask_rin_param, &area_small, rout - dsc->border_width, true); daca: 9b09 ldr r3, [sp, #36] ; 0x24 dacc: 4698 mov r8, r3 dace: 466a mov r2, sp dad0: 8313 strh r3, [r2, #24] dad2: 8b13 ldrh r3, [r2, #24] dad4: 469a mov sl, r3 dad6: 1a1a subs r2, r3, r0 dad8: b212 sxth r2, r2 dada: 2301 movs r3, #1 dadc: a829 add r0, sp, #164 ; 0xa4 dade: 4c84 ldr r4, [pc, #528] ; (dcf0 ) dae0: 47a0 blx r4 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); dae2: 2100 movs r1, #0 dae4: a829 add r0, sp, #164 ; 0xa4 dae6: 4b83 ldr r3, [pc, #524] ; (dcf4 ) dae8: 4798 blx r3 daea: 9010 str r0, [sp, #64] ; 0x40 int32_t corner_size = LV_MATH_MAX(rout, dsc->border_width - 1); daec: 465b mov r3, fp daee: 2010 movs r0, #16 daf0: 5e1b ldrsh r3, [r3, r0] daf2: 3b01 subs r3, #1 daf4: 930d str r3, [sp, #52] ; 0x34 daf6: 4641 mov r1, r8 daf8: 4543 cmp r3, r8 dafa: da00 bge.n dafe dafc: 910d str r1, [sp, #52] ; 0x34 lv_color_t color = dsc->border_color; dafe: 465b mov r3, fp db00: 89db ldrh r3, [r3, #14] db02: 9311 str r3, [sp, #68] ; 0x44 db04: 466a mov r2, sp db06: 8393 strh r3, [r2, #28] lv_blend_mode_t blend_mode = dsc->border_blend_mode; db08: 465b mov r3, fp db0a: 7d5b ldrb r3, [r3, #21] db0c: 9306 str r3, [sp, #24] if(simple_mode) { db0e: 2d00 cmp r5, #0 db10: d100 bne.n db14 db12: e1bc b.n de8e int32_t upper_corner_end = coords->y1 - disp_area->y1 + corner_size; db14: 2212 movs r2, #18 db16: 5ebb ldrsh r3, [r7, r2] db18: 464a mov r2, r9 db1a: 2102 movs r1, #2 db1c: 5e52 ldrsh r2, [r2, r1] db1e: 1ad2 subs r2, r2, r3 db20: 990d ldr r1, [sp, #52] ; 0x34 db22: 468c mov ip, r1 db24: 4462 add r2, ip upper_corner_end = LV_MATH_MIN(upper_corner_end, draw_area.y2); db26: a918 add r1, sp, #96 ; 0x60 db28: 2006 movs r0, #6 db2a: 5e09 ldrsh r1, [r1, r0] db2c: 910c str r1, [sp, #48] ; 0x30 db2e: 4291 cmp r1, r2 db30: dd00 ble.n db34 db32: 920c str r2, [sp, #48] ; 0x30 fill_area.x1 = coords->x1; db34: aa1c add r2, sp, #112 ; 0x70 db36: 4649 mov r1, r9 db38: 8809 ldrh r1, [r1, #0] db3a: 8011 strh r1, [r2, #0] fill_area.x2 = coords->x2; db3c: 4649 mov r1, r9 db3e: 8889 ldrh r1, [r1, #4] db40: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; db42: a918 add r1, sp, #96 ; 0x60 db44: 2502 movs r5, #2 db46: 5f4d ldrsh r5, [r1, r5] db48: 195b adds r3, r3, r5 db4a: b21b sxth r3, r3 db4c: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; db4e: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { db50: 9b0c ldr r3, [sp, #48] ; 0x30 db52: 42ab cmp r3, r5 db54: da00 bge.n db58 db56: e09f b.n dc98 fill_area2.y1 = fill_area.y1; db58: ac1e add r4, sp, #120 ; 0x78 db5a: 9508 str r5, [sp, #32] db5c: 464b mov r3, r9 db5e: 46b1 mov r9, r6 db60: 465a mov r2, fp db62: 920e str r2, [sp, #56] ; 0x38 db64: 001e movs r6, r3 db66: e047 b.n dbf8 int16_t mask_rout_id = LV_MASK_ID_INV; db68: 2301 movs r3, #1 db6a: 425b negs r3, r3 db6c: 930f str r3, [sp, #60] ; 0x3c db6e: e781 b.n da74 area_small.x1 += ((dsc->border_side & LV_BORDER_SIDE_LEFT) ? dsc->border_width : - (dsc->border_width + rout)); db70: 9909 ldr r1, [sp, #36] ; 0x24 db72: 1844 adds r4, r0, r1 db74: 4264 negs r4, r4 db76: b2a4 uxth r4, r4 db78: e78f b.n da9a area_small.x2 -= ((dsc->border_side & LV_BORDER_SIDE_RIGHT) ? dsc->border_width : - (dsc->border_width + rout)); db7a: 9909 ldr r1, [sp, #36] ; 0x24 db7c: 1844 adds r4, r0, r1 db7e: 4264 negs r4, r4 db80: b2a4 uxth r4, r4 db82: e791 b.n daa8 area_small.y1 += ((dsc->border_side & LV_BORDER_SIDE_TOP) ? dsc->border_width : - (dsc->border_width + rout)); db84: 9909 ldr r1, [sp, #36] ; 0x24 db86: 1844 adds r4, r0, r1 db88: 4264 negs r4, r4 db8a: b2a4 uxth r4, r4 db8c: e793 b.n dab6 area_small.y2 -= ((dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? dsc->border_width : - (dsc->border_width + rout)); db8e: 9b09 ldr r3, [sp, #36] ; 0x24 db90: 18c3 adds r3, r0, r3 db92: 425b negs r3, r3 db94: b29b uxth r3, r3 db96: e795 b.n dac4 fill_area2.x1 = coords->x2 - rout + 1; db98: 2204 movs r2, #4 db9a: 5eb3 ldrsh r3, [r6, r2] db9c: 1c5a adds r2, r3, #1 db9e: 4651 mov r1, sl dba0: 1a52 subs r2, r2, r1 dba2: 8022 strh r2, [r4, #0] fill_area2.x2 = coords->x2; dba4: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); dba6: 9a09 ldr r2, [sp, #36] ; 0x24 dba8: 1a9a subs r2, r3, r2 dbaa: 3201 adds r2, #1 dbac: 2110 movs r1, #16 dbae: 5e7b ldrsh r3, [r7, r1] dbb0: a90e add r1, sp, #56 ; 0x38 dbb2: 2028 movs r0, #40 ; 0x28 dbb4: 5e09 ldrsh r1, [r1, r0] dbb6: 185b adds r3, r3, r1 dbb8: 1ad3 subs r3, r2, r3 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); dbba: 43da mvns r2, r3 dbbc: 17d2 asrs r2, r2, #31 dbbe: 4013 ands r3, r2 dbc0: 9a05 ldr r2, [sp, #20] dbc2: 4694 mov ip, r2 dbc4: 4463 add r3, ip dbc6: 9a06 ldr r2, [sp, #24] dbc8: 9202 str r2, [sp, #8] dbca: 464a mov r2, r9 dbcc: 9201 str r2, [sp, #4] dbce: 4642 mov r2, r8 dbd0: 9200 str r2, [sp, #0] dbd2: 466a mov r2, sp dbd4: 8b92 ldrh r2, [r2, #28] dbd6: 0021 movs r1, r4 dbd8: 9804 ldr r0, [sp, #16] dbda: 4d47 ldr r5, [pc, #284] ; (dcf8 ) dbdc: 47a8 blx r5 fill_area.y1++; dbde: ab1c add r3, sp, #112 ; 0x70 dbe0: 885a ldrh r2, [r3, #2] dbe2: 3201 adds r2, #1 dbe4: 805a strh r2, [r3, #2] fill_area.y2++; dbe6: 88da ldrh r2, [r3, #6] dbe8: 3201 adds r2, #1 dbea: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { dbec: 9a08 ldr r2, [sp, #32] dbee: 3201 adds r2, #1 dbf0: 9208 str r2, [sp, #32] dbf2: 9b0c ldr r3, [sp, #48] ; 0x30 dbf4: 4293 cmp r3, r2 dbf6: db4a blt.n dc8e _lv_memset_ff(mask_buf, draw_area_w); dbf8: 990b ldr r1, [sp, #44] ; 0x2c dbfa: 9d05 ldr r5, [sp, #20] dbfc: 0028 movs r0, r5 dbfe: 4b3f ldr r3, [pc, #252] ; (dcfc ) dc00: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); dc02: 8a7a ldrh r2, [r7, #18] dc04: 9b08 ldr r3, [sp, #32] dc06: 469c mov ip, r3 dc08: 4462 add r2, ip dc0a: b212 sxth r2, r2 dc0c: 8a39 ldrh r1, [r7, #16] dc0e: ab0e add r3, sp, #56 ; 0x38 dc10: 8d1b ldrh r3, [r3, #40] ; 0x28 dc12: 18c9 adds r1, r1, r3 dc14: b209 sxth r1, r1 dc16: 9b0a ldr r3, [sp, #40] ; 0x28 dc18: 9505 str r5, [sp, #20] dc1a: 0028 movs r0, r5 dc1c: 4d38 ldr r5, [pc, #224] ; (dd00 ) dc1e: 47a8 blx r5 dc20: 4680 mov r8, r0 fill_area2.y1 = fill_area.y1; dc22: ab1c add r3, sp, #112 ; 0x70 dc24: 885a ldrh r2, [r3, #2] dc26: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; dc28: 88db ldrh r3, [r3, #6] dc2a: 80e3 strh r3, [r4, #6] fill_area2.x1 = coords->x1; dc2c: 2200 movs r2, #0 dc2e: 5eb3 ldrsh r3, [r6, r2] dc30: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x1 + rout - 1; dc32: 3b01 subs r3, #1 dc34: 4453 add r3, sl dc36: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); dc38: 9a06 ldr r2, [sp, #24] dc3a: 9202 str r2, [sp, #8] dc3c: 464a mov r2, r9 dc3e: 9201 str r2, [sp, #4] dc40: 9000 str r0, [sp, #0] dc42: 9b05 ldr r3, [sp, #20] dc44: 466a mov r2, sp dc46: 8b92 ldrh r2, [r2, #28] dc48: 0021 movs r1, r4 dc4a: 9804 ldr r0, [sp, #16] dc4c: 4d2a ldr r5, [pc, #168] ; (dcf8 ) dc4e: 47a8 blx r5 if(fill_area2.y2 < coords->y1 + dsc->border_width) { dc50: 2306 movs r3, #6 dc52: 5ee2 ldrsh r2, [r4, r3] dc54: 2102 movs r1, #2 dc56: 5e73 ldrsh r3, [r6, r1] dc58: 990e ldr r1, [sp, #56] ; 0x38 dc5a: 2010 movs r0, #16 dc5c: 5e09 ldrsh r1, [r1, r0] dc5e: 185b adds r3, r3, r1 dc60: 429a cmp r2, r3 dc62: da99 bge.n db98 fill_area2.x1 = coords->x1 + rout; dc64: 8833 ldrh r3, [r6, #0] dc66: 4453 add r3, sl dc68: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x2 - rout; dc6a: 88b3 ldrh r3, [r6, #4] dc6c: 4652 mov r2, sl dc6e: 1a9b subs r3, r3, r2 dc70: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); dc72: 9b06 ldr r3, [sp, #24] dc74: 9302 str r3, [sp, #8] dc76: 464b mov r3, r9 dc78: 9301 str r3, [sp, #4] dc7a: 2301 movs r3, #1 dc7c: 9300 str r3, [sp, #0] dc7e: 2300 movs r3, #0 dc80: 466a mov r2, sp dc82: 8b92 ldrh r2, [r2, #28] dc84: 0021 movs r1, r4 dc86: 9804 ldr r0, [sp, #16] dc88: 4d1b ldr r5, [pc, #108] ; (dcf8 ) dc8a: 47a8 blx r5 dc8c: e784 b.n db98 dc8e: 0032 movs r2, r6 dc90: 464e mov r6, r9 dc92: 9b0e ldr r3, [sp, #56] ; 0x38 dc94: 469b mov fp, r3 dc96: 4691 mov r9, r2 int32_t lower_corner_end = coords->y2 - disp_area->y1 - corner_size; dc98: 2212 movs r2, #18 dc9a: 5ebb ldrsh r3, [r7, r2] dc9c: 464a mov r2, r9 dc9e: 2106 movs r1, #6 dca0: 5e52 ldrsh r2, [r2, r1] dca2: 1ad2 subs r2, r2, r3 dca4: 990d ldr r1, [sp, #52] ; 0x34 dca6: 1a52 subs r2, r2, r1 lower_corner_end = LV_MATH_MAX(lower_corner_end, draw_area.y1); dca8: a918 add r1, sp, #96 ; 0x60 dcaa: 2502 movs r5, #2 dcac: 5f4d ldrsh r5, [r1, r5] dcae: 4295 cmp r5, r2 dcb0: da00 bge.n dcb4 dcb2: 0015 movs r5, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; dcb4: 990c ldr r1, [sp, #48] ; 0x30 dcb6: 000a movs r2, r1 dcb8: 42a9 cmp r1, r5 dcba: db01 blt.n dcc0 dcbc: 3201 adds r2, #1 dcbe: 0015 movs r5, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; dcc0: 195b adds r3, r3, r5 dcc2: b21b sxth r3, r3 dcc4: aa1c add r2, sp, #112 ; 0x70 dcc6: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; dcc8: 80d3 strh r3, [r2, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { dcca: ab18 add r3, sp, #96 ; 0x60 dccc: 2206 movs r2, #6 dcce: 5e9b ldrsh r3, [r3, r2] dcd0: 429d cmp r5, r3 dcd2: dd00 ble.n dcd6 dcd4: e099 b.n de0a fill_area2.x1 = coords->x1; dcd6: ac1e add r4, sp, #120 ; 0x78 dcd8: 9508 str r5, [sp, #32] dcda: 464b mov r3, r9 dcdc: 46b1 mov r9, r6 dcde: 465a mov r2, fp dce0: 920c str r2, [sp, #48] ; 0x30 dce2: 001e movs r6, r3 dce4: e041 b.n dd6a dce6: 46c0 nop ; (mov r8, r8) dce8: 000127a1 .word 0x000127a1 dcec: 0000bb6d .word 0x0000bb6d dcf0: 0000bd01 .word 0x0000bd01 dcf4: 0000ba75 .word 0x0000ba75 dcf8: 00006fed .word 0x00006fed dcfc: 00012a19 .word 0x00012a19 dd00: 0000bad1 .word 0x0000bad1 fill_area2.x1 = coords->x2 - rout + 1; dd04: 2204 movs r2, #4 dd06: 5eb3 ldrsh r3, [r6, r2] dd08: 1c5a adds r2, r3, #1 dd0a: 4651 mov r1, sl dd0c: 1a52 subs r2, r2, r1 dd0e: 8022 strh r2, [r4, #0] fill_area2.x2 = coords->x2; dd10: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (coords->x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); dd12: 9a09 ldr r2, [sp, #36] ; 0x24 dd14: 1a9a subs r2, r3, r2 dd16: 3201 adds r2, #1 dd18: 2110 movs r1, #16 dd1a: 5e7b ldrsh r3, [r7, r1] dd1c: a90e add r1, sp, #56 ; 0x38 dd1e: 2028 movs r0, #40 ; 0x28 dd20: 5e09 ldrsh r1, [r1, r0] dd22: 185b adds r3, r3, r1 dd24: 1ad3 subs r3, r2, r3 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); dd26: 43da mvns r2, r3 dd28: 17d2 asrs r2, r2, #31 dd2a: 4013 ands r3, r2 dd2c: 9a05 ldr r2, [sp, #20] dd2e: 4694 mov ip, r2 dd30: 4463 add r3, ip dd32: 9a06 ldr r2, [sp, #24] dd34: 9202 str r2, [sp, #8] dd36: 464a mov r2, r9 dd38: 9201 str r2, [sp, #4] dd3a: 4642 mov r2, r8 dd3c: 9200 str r2, [sp, #0] dd3e: 466a mov r2, sp dd40: 8b92 ldrh r2, [r2, #28] dd42: 0021 movs r1, r4 dd44: 9804 ldr r0, [sp, #16] dd46: 4daf ldr r5, [pc, #700] ; (e004 ) dd48: 47a8 blx r5 fill_area.y1++; dd4a: ab1c add r3, sp, #112 ; 0x70 dd4c: 885a ldrh r2, [r3, #2] dd4e: 3201 adds r2, #1 dd50: 805a strh r2, [r3, #2] fill_area.y2++; dd52: 88da ldrh r2, [r3, #6] dd54: 3201 adds r2, #1 dd56: 80da strh r2, [r3, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { dd58: 9a08 ldr r2, [sp, #32] dd5a: 3201 adds r2, #1 dd5c: 0011 movs r1, r2 dd5e: 9208 str r2, [sp, #32] dd60: ab0e add r3, sp, #56 ; 0x38 dd62: 222e movs r2, #46 ; 0x2e dd64: 5e9b ldrsh r3, [r3, r2] dd66: 4299 cmp r1, r3 dd68: dc4a bgt.n de00 _lv_memset_ff(mask_buf, draw_area_w); dd6a: 990b ldr r1, [sp, #44] ; 0x2c dd6c: 9d05 ldr r5, [sp, #20] dd6e: 0028 movs r0, r5 dd70: 4ba5 ldr r3, [pc, #660] ; (e008 ) dd72: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); dd74: 8a7a ldrh r2, [r7, #18] dd76: 9b08 ldr r3, [sp, #32] dd78: 469c mov ip, r3 dd7a: 4462 add r2, ip dd7c: b212 sxth r2, r2 dd7e: 8a39 ldrh r1, [r7, #16] dd80: ab0e add r3, sp, #56 ; 0x38 dd82: 8d1b ldrh r3, [r3, #40] ; 0x28 dd84: 18c9 adds r1, r1, r3 dd86: b209 sxth r1, r1 dd88: 9b0a ldr r3, [sp, #40] ; 0x28 dd8a: 9505 str r5, [sp, #20] dd8c: 0028 movs r0, r5 dd8e: 4d9f ldr r5, [pc, #636] ; (e00c ) dd90: 47a8 blx r5 dd92: 4680 mov r8, r0 fill_area2.x1 = coords->x1; dd94: 2200 movs r2, #0 dd96: 5eb3 ldrsh r3, [r6, r2] dd98: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x1 + rout - 1; dd9a: 3b01 subs r3, #1 dd9c: 4453 add r3, sl dd9e: 80a3 strh r3, [r4, #4] fill_area2.y1 = fill_area.y1; dda0: ab1c add r3, sp, #112 ; 0x70 dda2: 885a ldrh r2, [r3, #2] dda4: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; dda6: 88db ldrh r3, [r3, #6] dda8: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); ddaa: 9a06 ldr r2, [sp, #24] ddac: 9202 str r2, [sp, #8] ddae: 464a mov r2, r9 ddb0: 9201 str r2, [sp, #4] ddb2: 9000 str r0, [sp, #0] ddb4: 9b05 ldr r3, [sp, #20] ddb6: 466a mov r2, sp ddb8: 8b92 ldrh r2, [r2, #28] ddba: 0021 movs r1, r4 ddbc: 9804 ldr r0, [sp, #16] ddbe: 4d91 ldr r5, [pc, #580] ; (e004 ) ddc0: 47a8 blx r5 if(fill_area2.y2 > coords->y2 - dsc->border_width) { ddc2: 2306 movs r3, #6 ddc4: 5ee2 ldrsh r2, [r4, r3] ddc6: 2106 movs r1, #6 ddc8: 5e73 ldrsh r3, [r6, r1] ddca: 990c ldr r1, [sp, #48] ; 0x30 ddcc: 2010 movs r0, #16 ddce: 5e09 ldrsh r1, [r1, r0] ddd0: 1a5b subs r3, r3, r1 ddd2: 429a cmp r2, r3 ddd4: dd96 ble.n dd04 fill_area2.x1 = coords->x1 + rout; ddd6: 8833 ldrh r3, [r6, #0] ddd8: 4453 add r3, sl ddda: 8023 strh r3, [r4, #0] fill_area2.x2 = coords->x2 - rout; dddc: 88b3 ldrh r3, [r6, #4] ddde: 4652 mov r2, sl dde0: 1a9b subs r3, r3, r2 dde2: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); dde4: 9b06 ldr r3, [sp, #24] dde6: 9302 str r3, [sp, #8] dde8: 464b mov r3, r9 ddea: 9301 str r3, [sp, #4] ddec: 2301 movs r3, #1 ddee: 9300 str r3, [sp, #0] ddf0: 2300 movs r3, #0 ddf2: 466a mov r2, sp ddf4: 8b92 ldrh r2, [r2, #28] ddf6: 0021 movs r1, r4 ddf8: 9804 ldr r0, [sp, #16] ddfa: 4d82 ldr r5, [pc, #520] ; (e004 ) ddfc: 47a8 blx r5 ddfe: e781 b.n dd04 de00: 0032 movs r2, r6 de02: 464e mov r6, r9 de04: 9b0c ldr r3, [sp, #48] ; 0x30 de06: 469b mov fp, r3 de08: 4691 mov r9, r2 fill_area.y1 = coords->y1 + corner_size + 1; de0a: 466b mov r3, sp de0c: 8e99 ldrh r1, [r3, #52] ; 0x34 de0e: ac1c add r4, sp, #112 ; 0x70 de10: 464b mov r3, r9 de12: 885a ldrh r2, [r3, #2] de14: 3201 adds r2, #1 de16: 188a adds r2, r1, r2 de18: 8062 strh r2, [r4, #2] fill_area.y2 = coords->y2 - corner_size - 1; de1a: 88db ldrh r3, [r3, #6] de1c: 3b01 subs r3, #1 de1e: 1a5b subs r3, r3, r1 de20: 80e3 strh r3, [r4, #6] fill_area.x1 = coords->x1; de22: 464b mov r3, r9 de24: 2200 movs r2, #0 de26: 5e9b ldrsh r3, [r3, r2] de28: 8023 strh r3, [r4, #0] fill_area.x2 = coords->x1 + dsc->border_width - 1; de2a: 465a mov r2, fp de2c: 8a12 ldrh r2, [r2, #16] de2e: 3a01 subs r2, #1 de30: 189b adds r3, r3, r2 de32: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); de34: 9b06 ldr r3, [sp, #24] de36: 9302 str r3, [sp, #8] de38: 9601 str r6, [sp, #4] de3a: 2701 movs r7, #1 de3c: 9700 str r7, [sp, #0] de3e: 2300 movs r3, #0 de40: 466a mov r2, sp de42: 2144 movs r1, #68 ; 0x44 de44: 1852 adds r2, r2, r1 de46: 8812 ldrh r2, [r2, #0] de48: 0021 movs r1, r4 de4a: 9804 ldr r0, [sp, #16] de4c: 4d6d ldr r5, [pc, #436] ; (e004 ) de4e: 47a8 blx r5 fill_area.x1 = coords->x2 - dsc->border_width + 1; de50: 464a mov r2, r9 de52: 2104 movs r1, #4 de54: 5e52 ldrsh r2, [r2, r1] de56: 4659 mov r1, fp de58: 8a0b ldrh r3, [r1, #16] de5a: 1ad3 subs r3, r2, r3 de5c: 3301 adds r3, #1 de5e: 8023 strh r3, [r4, #0] fill_area.x2 = coords->x2; de60: 80a2 strh r2, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); de62: 9b06 ldr r3, [sp, #24] de64: 9302 str r3, [sp, #8] de66: 9601 str r6, [sp, #4] de68: 9700 str r7, [sp, #0] de6a: 2300 movs r3, #0 de6c: 466a mov r2, sp de6e: 2144 movs r1, #68 ; 0x44 de70: 1852 adds r2, r2, r1 de72: 8812 ldrh r2, [r2, #0] de74: 0021 movs r1, r4 de76: 9804 ldr r0, [sp, #16] de78: 47a8 blx r5 lv_draw_mask_remove_id(mask_rin_id); de7a: 9810 ldr r0, [sp, #64] ; 0x40 de7c: 4c64 ldr r4, [pc, #400] ; (e010 ) de7e: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); de80: 980f ldr r0, [sp, #60] ; 0x3c de82: 47a0 blx r4 _lv_mem_buf_release(mask_buf); de84: 9805 ldr r0, [sp, #20] de86: 4b63 ldr r3, [pc, #396] ; (e014 ) de88: 4798 blx r3 de8a: f7ff f864 bl cf56 fill_area.x1 = coords->x1; de8e: 464b mov r3, r9 de90: 2100 movs r1, #0 de92: 5e59 ldrsh r1, [r3, r1] de94: a81c add r0, sp, #112 ; 0x70 de96: 8001 strh r1, [r0, #0] fill_area.x2 = coords->x2; de98: 464b mov r3, r9 de9a: 2204 movs r2, #4 de9c: 5e9a ldrsh r2, [r3, r2] de9e: 8082 strh r2, [r0, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; dea0: ab18 add r3, sp, #96 ; 0x60 dea2: 2402 movs r4, #2 dea4: 5f1c ldrsh r4, [r3, r4] dea6: 8a7b ldrh r3, [r7, #18] dea8: 191b adds r3, r3, r4 deaa: b21b sxth r3, r3 deac: 8043 strh r3, [r0, #2] fill_area.y2 = fill_area.y1; deae: 80c3 strh r3, [r0, #6] if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; deb0: 465b mov r3, fp deb2: 2012 movs r0, #18 deb4: 5e1b ldrsh r3, [r3, r0] deb6: 2b04 cmp r3, #4 deb8: d02b beq.n df12 else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; deba: 2b08 cmp r3, #8 debc: d045 beq.n df4a volatile bool top_only = false; debe: 2200 movs r2, #0 dec0: 2116 movs r1, #22 dec2: a80e add r0, sp, #56 ; 0x38 dec4: 4684 mov ip, r0 dec6: 4461 add r1, ip dec8: 700a strb r2, [r1, #0] volatile bool bottom_only = false; deca: 2117 movs r1, #23 decc: 4461 add r1, ip dece: 700a strb r2, [r1, #0] if(dsc->border_side == LV_BORDER_SIDE_TOP) top_only = true; ded0: 2b02 cmp r3, #2 ded2: d12c bne.n df2e ded4: 3201 adds r2, #1 ded6: 3314 adds r3, #20 ded8: 4463 add r3, ip deda: 701a strb r2, [r3, #0] volatile bool normal = !top_only && !bottom_only ? true : false; dedc: 2316 movs r3, #22 dede: aa0e add r2, sp, #56 ; 0x38 dee0: 4694 mov ip, r2 dee2: 4463 add r3, ip dee4: 781b ldrb r3, [r3, #0] dee6: 2b00 cmp r3, #0 dee8: d104 bne.n def4 deea: 3317 adds r3, #23 deec: 4463 add r3, ip deee: 781b ldrb r3, [r3, #0] def0: 2501 movs r5, #1 def2: 405d eors r5, r3 def4: 2301 movs r3, #1 def6: 401d ands r5, r3 def8: ab14 add r3, sp, #80 ; 0x50 defa: 701d strb r5, [r3, #0] for(h = draw_area.y1; h <= draw_area.y2; h++) { defc: 0025 movs r5, r4 defe: ab18 add r3, sp, #96 ; 0x60 df00: 2206 movs r2, #6 df02: 5e9b ldrsh r3, [r3, r2] df04: 429c cmp r4, r3 df06: dcb8 bgt.n de7a (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { df08: ac1c add r4, sp, #112 ; 0x70 _lv_memset_ff(mask_buf, draw_area_w); df0a: 4b3f ldr r3, [pc, #252] ; (e008 ) df0c: 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); df0e: 46b0 mov r8, r6 df10: e051 b.n dfb6 if(dsc->border_side == LV_BORDER_SIDE_LEFT) fill_area.x2 = coords->x1 + corner_size; df12: 9a0d ldr r2, [sp, #52] ; 0x34 df14: 4694 mov ip, r2 df16: 4461 add r1, ip df18: aa1c add r2, sp, #112 ; 0x70 df1a: 8091 strh r1, [r2, #4] volatile bool top_only = false; df1c: 2200 movs r2, #0 df1e: 2116 movs r1, #22 df20: a80e add r0, sp, #56 ; 0x38 df22: 4684 mov ip, r0 df24: 4461 add r1, ip df26: 700a strb r2, [r1, #0] volatile bool bottom_only = false; df28: 2117 movs r1, #23 df2a: 4461 add r1, ip df2c: 700a strb r2, [r1, #0] if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; df2e: 2b01 cmp r3, #1 df30: d010 beq.n df54 if(dsc->border_side == (LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM)) { df32: 2b03 cmp r3, #3 df34: d1d2 bne.n dedc top_only = true; df36: 3b02 subs r3, #2 df38: 2216 movs r2, #22 df3a: a90e add r1, sp, #56 ; 0x38 df3c: 468c mov ip, r1 df3e: 4462 add r2, ip df40: 7013 strb r3, [r2, #0] bottom_only = true; df42: 2217 movs r2, #23 df44: 4462 add r2, ip df46: 7013 strb r3, [r2, #0] df48: e7c8 b.n dedc else if(dsc->border_side == LV_BORDER_SIDE_RIGHT) fill_area.x1 = coords->x2 - corner_size; df4a: 990d ldr r1, [sp, #52] ; 0x34 df4c: 1a52 subs r2, r2, r1 df4e: a91c add r1, sp, #112 ; 0x70 df50: 800a strh r2, [r1, #0] df52: e7e3 b.n df1c if(dsc->border_side == LV_BORDER_SIDE_BOTTOM) bottom_only = true; df54: 2201 movs r2, #1 df56: 3316 adds r3, #22 df58: a90e add r1, sp, #56 ; 0x38 df5a: 468c mov ip, r1 df5c: 4463 add r3, ip df5e: 701a strb r2, [r3, #0] df60: e7bc b.n dedc _lv_memset_ff(mask_buf, draw_area_w); df62: 990b ldr r1, [sp, #44] ; 0x2c df64: 9e05 ldr r6, [sp, #20] df66: 0030 movs r0, r6 df68: 47d0 blx sl mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); df6a: 8a7a ldrh r2, [r7, #18] df6c: 1952 adds r2, r2, r5 df6e: b212 sxth r2, r2 df70: 8a39 ldrh r1, [r7, #16] df72: ab0e add r3, sp, #56 ; 0x38 df74: 8d1b ldrh r3, [r3, #40] ; 0x28 df76: 18c9 adds r1, r1, r3 df78: b209 sxth r1, r1 df7a: 9b0a ldr r3, [sp, #40] ; 0x28 df7c: 9605 str r6, [sp, #20] df7e: 0030 movs r0, r6 df80: 4e22 ldr r6, [pc, #136] ; (e00c ) df82: 47b0 blx r6 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); df84: 9a06 ldr r2, [sp, #24] df86: 9202 str r2, [sp, #8] df88: 4642 mov r2, r8 df8a: 9201 str r2, [sp, #4] df8c: 9000 str r0, [sp, #0] df8e: 9b05 ldr r3, [sp, #20] df90: 466a mov r2, sp df92: 8b92 ldrh r2, [r2, #28] df94: 0021 movs r1, r4 df96: 9804 ldr r0, [sp, #16] df98: 4e1a ldr r6, [pc, #104] ; (e004 ) df9a: 47b0 blx r6 fill_area.y1++; df9c: 8863 ldrh r3, [r4, #2] df9e: 3301 adds r3, #1 dfa0: 8063 strh r3, [r4, #2] fill_area.y2++; dfa2: 88e3 ldrh r3, [r4, #6] dfa4: 3301 adds r3, #1 dfa6: 80e3 strh r3, [r4, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { dfa8: 3501 adds r5, #1 dfaa: ab0e add r3, sp, #56 ; 0x38 dfac: 222e movs r2, #46 ; 0x2e dfae: 5e9b ldrsh r3, [r3, r2] dfb0: 429d cmp r5, r3 dfb2: dd00 ble.n dfb6 dfb4: e761 b.n de7a if(normal || dfb6: ab14 add r3, sp, #80 ; 0x50 dfb8: 781b ldrb r3, [r3, #0] dfba: 2b00 cmp r3, #0 dfbc: d1d1 bne.n df62 (top_only && fill_area.y1 <= coords->y1 + corner_size) || dfbe: 3316 adds r3, #22 dfc0: aa0e add r2, sp, #56 ; 0x38 dfc2: 4694 mov ip, r2 dfc4: 4463 add r3, ip dfc6: 781b ldrb r3, [r3, #0] if(normal || dfc8: 2b00 cmp r3, #0 dfca: d009 beq.n dfe0 (top_only && fill_area.y1 <= coords->y1 + corner_size) || dfcc: 2302 movs r3, #2 dfce: 5ee2 ldrsh r2, [r4, r3] dfd0: 464b mov r3, r9 dfd2: 2102 movs r1, #2 dfd4: 5e5b ldrsh r3, [r3, r1] dfd6: 990d ldr r1, [sp, #52] ; 0x34 dfd8: 468c mov ip, r1 dfda: 4463 add r3, ip dfdc: 429a cmp r2, r3 dfde: ddc0 ble.n df62 (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { dfe0: 2317 movs r3, #23 dfe2: aa0e add r2, sp, #56 ; 0x38 dfe4: 4694 mov ip, r2 dfe6: 4463 add r3, ip dfe8: 781b ldrb r3, [r3, #0] (top_only && fill_area.y1 <= coords->y1 + corner_size) || dfea: 2b00 cmp r3, #0 dfec: d0d6 beq.n df9c (bottom_only && fill_area.y1 >= coords->y2 - corner_size)) { dfee: 2302 movs r3, #2 dff0: 5ee2 ldrsh r2, [r4, r3] dff2: 464b mov r3, r9 dff4: 2106 movs r1, #6 dff6: 5e5b ldrsh r3, [r3, r1] dff8: 990d ldr r1, [sp, #52] ; 0x34 dffa: 1a5b subs r3, r3, r1 dffc: 429a cmp r2, r3 dffe: dbcd blt.n df9c e000: e7af b.n df62 e002: 46c0 nop ; (mov r8, r8) e004: 00006fed .word 0x00006fed e008: 00012a19 .word 0x00012a19 e00c: 0000bad1 .word 0x0000bad1 e010: 0000bb25 .word 0x0000bb25 e014: 00012465 .word 0x00012465 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, e018: 234c movs r3, #76 ; 0x4c e01a: 4698 mov r8, r3 e01c: 465b mov r3, fp e01e: 4642 mov r2, r8 e020: 5e9b ldrsh r3, [r3, r2] e022: ad1c add r5, sp, #112 ; 0x70 e024: 2600 movs r6, #0 e026: 9602 str r6, [sp, #8] e028: 4abc ldr r2, [pc, #752] ; (e31c ) e02a: 9201 str r2, [sp, #4] e02c: 465a mov r2, fp e02e: 204e movs r0, #78 ; 0x4e e030: 5e12 ldrsh r2, [r2, r0] e032: 9200 str r2, [sp, #0] e034: 465a mov r2, fp e036: 6c12 ldr r2, [r2, #64] ; 0x40 e038: 0028 movs r0, r5 e03a: 4cb9 ldr r4, [pc, #740] ; (e320 ) e03c: 47a0 blx r4 LV_TXT_FLAG_NONE); lv_area_t value_area; value_area.x1 = 0; e03e: ac22 add r4, sp, #136 ; 0x88 e040: 8026 strh r6, [r4, #0] value_area.y1 = 0; e042: 8066 strh r6, [r4, #2] value_area.x2 = s.x - 1; e044: 882b ldrh r3, [r5, #0] e046: 3b01 subs r3, #1 e048: 80a3 strh r3, [r4, #4] value_area.y2 = s.y - 1; e04a: 886b ldrh r3, [r5, #2] e04c: 3b01 subs r3, #1 e04e: 80e3 strh r3, [r4, #6] lv_point_t p_align; _lv_area_align(coords, &value_area, dsc->value_align, &p_align); e050: ad1e add r5, sp, #120 ; 0x78 e052: 2350 movs r3, #80 ; 0x50 e054: 465a mov r2, fp e056: 5cd2 ldrb r2, [r2, r3] e058: 002b movs r3, r5 e05a: 0021 movs r1, r4 e05c: 4648 mov r0, r9 e05e: 4fb1 ldr r7, [pc, #708] ; (e324 ) e060: 47b8 blx r7 value_area.x1 += p_align.x + dsc->value_ofs_x; e062: 882a ldrh r2, [r5, #0] e064: 2348 movs r3, #72 ; 0x48 e066: 4659 mov r1, fp e068: 5acb ldrh r3, [r1, r3] e06a: 18d2 adds r2, r2, r3 e06c: b292 uxth r2, r2 e06e: 8823 ldrh r3, [r4, #0] e070: 18d3 adds r3, r2, r3 e072: 8023 strh r3, [r4, #0] value_area.y1 += p_align.y + dsc->value_ofs_y; e074: 886b ldrh r3, [r5, #2] e076: 214a movs r1, #74 ; 0x4a e078: 4658 mov r0, fp e07a: 5a41 ldrh r1, [r0, r1] e07c: 185b adds r3, r3, r1 e07e: b29b uxth r3, r3 e080: 8861 ldrh r1, [r4, #2] e082: 1859 adds r1, r3, r1 e084: 8061 strh r1, [r4, #2] value_area.x2 += p_align.x + dsc->value_ofs_x; e086: 88a1 ldrh r1, [r4, #4] e088: 1852 adds r2, r2, r1 e08a: 80a2 strh r2, [r4, #4] value_area.y2 += p_align.y + dsc->value_ofs_y; e08c: 88e2 ldrh r2, [r4, #6] e08e: 189b adds r3, r3, r2 e090: 80e3 strh r3, [r4, #6] lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); e092: ad29 add r5, sp, #164 ; 0xa4 e094: 0028 movs r0, r5 e096: 4ba4 ldr r3, [pc, #656] ; (e328 ) e098: 4798 blx r3 label_dsc.font = dsc->value_font; e09a: 465b mov r3, fp e09c: 6c1b ldr r3, [r3, #64] ; 0x40 e09e: 606b str r3, [r5, #4] label_dsc.letter_space = dsc->value_letter_space; e0a0: 465b mov r3, fp e0a2: 4642 mov r2, r8 e0a4: 5a9b ldrh r3, [r3, r2] e0a6: 81ab strh r3, [r5, #12] label_dsc.line_space = dsc->value_line_space; e0a8: 465b mov r3, fp e0aa: 3202 adds r2, #2 e0ac: 5a9b ldrh r3, [r3, r2] e0ae: 816b strh r3, [r5, #10] label_dsc.color = dsc->value_color; e0b0: 2346 movs r3, #70 ; 0x46 e0b2: 465a mov r2, fp e0b4: 5ad3 ldrh r3, [r2, r3] e0b6: 802b strh r3, [r5, #0] label_dsc.opa = dsc->value_opa; e0b8: 2344 movs r3, #68 ; 0x44 e0ba: 5cd3 ldrb r3, [r2, r3] e0bc: 722b strb r3, [r5, #8] lv_draw_label(&value_area, clip, &label_dsc, dsc->value_str, NULL); e0be: 9600 str r6, [sp, #0] e0c0: 6bd3 ldr r3, [r2, #60] ; 0x3c e0c2: 002a movs r2, r5 e0c4: 9904 ldr r1, [sp, #16] e0c6: 0020 movs r0, r4 e0c8: 4c98 ldr r4, [pc, #608] ; (e32c ) e0ca: 47a0 blx r4 e0cc: f7fe ff4e bl cf6c int32_t rin = dsc->radius; e0d0: 9b06 ldr r3, [sp, #24] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e0d2: 3701 adds r7, #1 e0d4: 4652 mov r2, sl e0d6: 1aba subs r2, r7, r2 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e0d8: 3501 adds r5, #1 e0da: 9907 ldr r1, [sp, #28] e0dc: 1a69 subs r1, r5, r1 int32_t inner_h = lv_area_get_height(&area_inner); e0de: b209 sxth r1, r1 int32_t short_side = LV_MATH_MIN(inner_w, inner_h); e0e0: b212 sxth r2, r2 e0e2: 428a cmp r2, r1 e0e4: dd00 ble.n e0e8 e0e6: 000a movs r2, r1 if(rin > short_side >> 1) rin = short_side >> 1; e0e8: 1052 asrs r2, r2, #1 e0ea: 429a cmp r2, r3 e0ec: dd00 ble.n e0f0 e0ee: 9a06 ldr r2, [sp, #24] int32_t rout = rin + dsc->outline_width; e0f0: 9b05 ldr r3, [sp, #20] e0f2: 1899 adds r1, r3, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e0f4: 9b09 ldr r3, [sp, #36] ; 0x24 e0f6: 3301 adds r3, #1 e0f8: 9808 ldr r0, [sp, #32] e0fa: 1a1b subs r3, r3, r0 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); e0fc: 3401 adds r4, #1 e0fe: 980b ldr r0, [sp, #44] ; 0x2c e100: 1a20 subs r0, r4, r0 int32_t coords_out_h = lv_area_get_height(&area_outer); e102: b200 sxth r0, r0 short_side = LV_MATH_MIN(coords_out_w, coords_out_h); e104: b21b sxth r3, r3 e106: 4283 cmp r3, r0 e108: dd00 ble.n e10c e10a: 0003 movs r3, r0 if(rout > short_side >> 1) rout = short_side >> 1; e10c: 105b asrs r3, r3, #1 e10e: 9307 str r3, [sp, #28] e110: 428b cmp r3, r1 e112: dd00 ble.n e116 e114: 9107 str r1, [sp, #28] draw_area.x1 -= disp_area->x1; e116: 464b mov r3, r9 e118: 8a1e ldrh r6, [r3, #16] e11a: a91a add r1, sp, #104 ; 0x68 e11c: 880b ldrh r3, [r1, #0] e11e: 1b9b subs r3, r3, r6 e120: b298 uxth r0, r3 e122: 8008 strh r0, [r1, #0] draw_area.y1 -= disp_area->y1; e124: 464b mov r3, r9 e126: 8a5c ldrh r4, [r3, #18] e128: 884d ldrh r5, [r1, #2] e12a: 1b2d subs r5, r5, r4 e12c: 804d strh r5, [r1, #2] draw_area.x2 -= disp_area->x1; e12e: 888b ldrh r3, [r1, #4] e130: 1b9b subs r3, r3, r6 e132: b29b uxth r3, r3 e134: 808b strh r3, [r1, #4] draw_area.y2 -= disp_area->y1; e136: 88cd ldrh r5, [r1, #6] e138: 1b2c subs r4, r5, r4 e13a: 80cc strh r4, [r1, #6] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); e13c: 3301 adds r3, #1 e13e: 1a1b subs r3, r3, r0 e140: b21b sxth r3, r3 e142: 001e movs r6, r3 e144: 9308 str r3, [sp, #32] lv_draw_mask_radius_init(&mask_rin_param, &area_inner, rin, true); e146: b212 sxth r2, r2 e148: 2301 movs r3, #1 e14a: a916 add r1, sp, #88 ; 0x58 e14c: a822 add r0, sp, #136 ; 0x88 e14e: 4d78 ldr r5, [pc, #480] ; (e330 ) e150: 47a8 blx r5 int16_t mask_rin_id = lv_draw_mask_add(&mask_rin_param, NULL); e152: 2100 movs r1, #0 e154: a822 add r0, sp, #136 ; 0x88 e156: 4c77 ldr r4, [pc, #476] ; (e334 ) e158: 47a0 blx r4 e15a: 900e str r0, [sp, #56] ; 0x38 lv_draw_mask_radius_init(&mask_rout_param, &area_outer, rout, false); e15c: 9f07 ldr r7, [sp, #28] e15e: b23a sxth r2, r7 e160: 2300 movs r3, #0 e162: a918 add r1, sp, #96 ; 0x60 e164: a829 add r0, sp, #164 ; 0xa4 e166: 47a8 blx r5 int16_t mask_rout_id = lv_draw_mask_add(&mask_rout_param, NULL); e168: 2100 movs r1, #0 e16a: a829 add r0, sp, #164 ; 0xa4 e16c: 47a0 blx r4 e16e: 900f str r0, [sp, #60] ; 0x3c lv_opa_t * mask_buf = _lv_mem_buf_get(draw_area_w); e170: 9609 str r6, [sp, #36] ; 0x24 e172: 0030 movs r0, r6 e174: 4b70 ldr r3, [pc, #448] ; (e338 ) e176: 4798 blx r3 e178: 9005 str r0, [sp, #20] int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e17a: 465b mov r3, fp e17c: 2218 movs r2, #24 e17e: 5e9b ldrsh r3, [r3, r2] lv_color_t color = dsc->outline_color; e180: 465a mov r2, fp e182: 8ad2 ldrh r2, [r2, #22] e184: 9211 str r2, [sp, #68] ; 0x44 e186: 4669 mov r1, sp e188: 830a strh r2, [r1, #24] lv_blend_mode_t blend_mode = dsc->outline_blend_mode; e18a: 465a mov r2, fp e18c: 7f52 ldrb r2, [r2, #29] e18e: 4692 mov sl, r2 if(simple_mode) { e190: 9a0a ldr r2, [sp, #40] ; 0x28 e192: 2a00 cmp r2, #0 e194: d000 beq.n e198 e196: e19b b.n e4d0 int32_t corner_size = LV_MATH_MAX(rout, dsc->outline_width - 1); e198: 3b01 subs r3, #1 e19a: 9310 str r3, [sp, #64] ; 0x40 e19c: 42bb cmp r3, r7 e19e: da00 bge.n e1a2 e1a0: 9710 str r7, [sp, #64] ; 0x40 int32_t upper_corner_end = area_outer.y1 - disp_area->y1 + corner_size; e1a2: 464b mov r3, r9 e1a4: 2212 movs r2, #18 e1a6: 5e9b ldrsh r3, [r3, r2] e1a8: a918 add r1, sp, #96 ; 0x60 e1aa: 2002 movs r0, #2 e1ac: 5e0a ldrsh r2, [r1, r0] e1ae: 1ad2 subs r2, r2, r3 e1b0: 9810 ldr r0, [sp, #64] ; 0x40 e1b2: 4684 mov ip, r0 e1b4: 4462 add r2, ip e1b6: 0014 movs r4, r2 e1b8: 920c str r2, [sp, #48] ; 0x30 fill_area.x1 = area_outer.x1; e1ba: aa1c add r2, sp, #112 ; 0x70 e1bc: 8808 ldrh r0, [r1, #0] e1be: 8010 strh r0, [r2, #0] fill_area.x2 = area_outer.x2; e1c0: 8889 ldrh r1, [r1, #4] e1c2: 8091 strh r1, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; e1c4: a91a add r1, sp, #104 ; 0x68 e1c6: 2702 movs r7, #2 e1c8: 5fcf ldrsh r7, [r1, r7] e1ca: 19db adds r3, r3, r7 e1cc: b21b sxth r3, r3 e1ce: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; e1d0: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { e1d2: 42bc cmp r4, r7 e1d4: da00 bge.n e1d8 e1d6: e082 b.n e2de fill_area2.y1 = fill_area.y1; e1d8: ac1e add r4, sp, #120 ; 0x78 e1da: 465b mov r3, fp e1dc: 930d str r3, [sp, #52] ; 0x34 e1de: e02e b.n e23e fill_area2.x1 = area_outer.x2 - rout + 1; e1e0: ab18 add r3, sp, #96 ; 0x60 e1e2: 2204 movs r2, #4 e1e4: 5e9b ldrsh r3, [r3, r2] e1e6: 1c5a adds r2, r3, #1 e1e8: 1b55 subs r5, r2, r5 e1ea: 8025 strh r5, [r4, #0] fill_area2.x2 = area_outer.x2; e1ec: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e1ee: 9a07 ldr r2, [sp, #28] e1f0: 1a9b subs r3, r3, r2 e1f2: 3301 adds r3, #1 e1f4: 464a mov r2, r9 e1f6: 2110 movs r1, #16 e1f8: 5e52 ldrsh r2, [r2, r1] e1fa: a90e add r1, sp, #56 ; 0x38 e1fc: 2030 movs r0, #48 ; 0x30 e1fe: 5e09 ldrsh r1, [r1, r0] e200: 1852 adds r2, r2, r1 e202: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e204: 43da mvns r2, r3 e206: 17d2 asrs r2, r2, #31 e208: 4013 ands r3, r2 e20a: 9a05 ldr r2, [sp, #20] e20c: 4694 mov ip, r2 e20e: 4463 add r3, ip e210: 4652 mov r2, sl e212: 9202 str r2, [sp, #8] e214: 4642 mov r2, r8 e216: 9201 str r2, [sp, #4] e218: 9a0a ldr r2, [sp, #40] ; 0x28 e21a: 9200 str r2, [sp, #0] e21c: 466a mov r2, sp e21e: 8b12 ldrh r2, [r2, #24] e220: 0021 movs r1, r4 e222: 9804 ldr r0, [sp, #16] e224: 4d45 ldr r5, [pc, #276] ; (e33c ) e226: 47a8 blx r5 fill_area.y1++; e228: ab1c add r3, sp, #112 ; 0x70 e22a: 885a ldrh r2, [r3, #2] e22c: 3201 adds r2, #1 e22e: 805a strh r2, [r3, #2] fill_area.y2++; e230: 88da ldrh r2, [r3, #6] e232: 3201 adds r2, #1 e234: 80da strh r2, [r3, #6] for(h = draw_area.y1; h <= upper_corner_end; h++) { e236: 3701 adds r7, #1 e238: 9b0c ldr r3, [sp, #48] ; 0x30 e23a: 42bb cmp r3, r7 e23c: db4d blt.n e2da _lv_memset_ff(mask_buf, draw_area_w); e23e: 9909 ldr r1, [sp, #36] ; 0x24 e240: 9e05 ldr r6, [sp, #20] e242: 0030 movs r0, r6 e244: 4b3e ldr r3, [pc, #248] ; (e340 ) e246: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e248: 464b mov r3, r9 e24a: 8a5a ldrh r2, [r3, #18] e24c: 19d2 adds r2, r2, r7 e24e: b212 sxth r2, r2 e250: 8a19 ldrh r1, [r3, #16] e252: ab0e add r3, sp, #56 ; 0x38 e254: 8e1b ldrh r3, [r3, #48] ; 0x30 e256: 18c9 adds r1, r1, r3 e258: b209 sxth r1, r1 e25a: 9b08 ldr r3, [sp, #32] e25c: 0030 movs r0, r6 e25e: 4d39 ldr r5, [pc, #228] ; (e344 ) e260: 47a8 blx r5 e262: 900a str r0, [sp, #40] ; 0x28 fill_area2.y1 = fill_area.y1; e264: ab1c add r3, sp, #112 ; 0x70 e266: 885a ldrh r2, [r3, #2] e268: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; e26a: 88db ldrh r3, [r3, #6] e26c: 80e3 strh r3, [r4, #6] fill_area2.x1 = area_outer.x1; e26e: ab18 add r3, sp, #96 ; 0x60 e270: 930b str r3, [sp, #44] ; 0x2c e272: 2100 movs r1, #0 e274: 5e5b ldrsh r3, [r3, r1] e276: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x1 + rout - 1; e278: 466a mov r2, sp e27a: 8b95 ldrh r5, [r2, #28] e27c: 3b01 subs r3, #1 e27e: 18eb adds r3, r5, r3 e280: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e282: 4652 mov r2, sl e284: 9202 str r2, [sp, #8] e286: 4642 mov r2, r8 e288: 9201 str r2, [sp, #4] e28a: 9000 str r0, [sp, #0] e28c: 0033 movs r3, r6 e28e: 466a mov r2, sp e290: 8b12 ldrh r2, [r2, #24] e292: 0021 movs r1, r4 e294: 9804 ldr r0, [sp, #16] e296: 4e29 ldr r6, [pc, #164] ; (e33c ) e298: 47b0 blx r6 if(fill_area2.y2 < area_outer.y1 + dsc->outline_width) { e29a: 2306 movs r3, #6 e29c: 5ee2 ldrsh r2, [r4, r3] e29e: 9b0b ldr r3, [sp, #44] ; 0x2c e2a0: 2102 movs r1, #2 e2a2: 5e5b ldrsh r3, [r3, r1] e2a4: 990d ldr r1, [sp, #52] ; 0x34 e2a6: 2018 movs r0, #24 e2a8: 5e09 ldrsh r1, [r1, r0] e2aa: 185b adds r3, r3, r1 e2ac: 429a cmp r2, r3 e2ae: da97 bge.n e1e0 fill_area2.x1 = area_outer.x1 + rout; e2b0: aa18 add r2, sp, #96 ; 0x60 e2b2: 8813 ldrh r3, [r2, #0] e2b4: 18eb adds r3, r5, r3 e2b6: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x2 - rout; e2b8: 8893 ldrh r3, [r2, #4] e2ba: 1b5b subs r3, r3, r5 e2bc: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e2be: 4653 mov r3, sl e2c0: 9302 str r3, [sp, #8] e2c2: 4643 mov r3, r8 e2c4: 9301 str r3, [sp, #4] e2c6: 2301 movs r3, #1 e2c8: 9300 str r3, [sp, #0] e2ca: 2300 movs r3, #0 e2cc: 466a mov r2, sp e2ce: 8b12 ldrh r2, [r2, #24] e2d0: 0021 movs r1, r4 e2d2: 9804 ldr r0, [sp, #16] e2d4: 4e19 ldr r6, [pc, #100] ; (e33c ) e2d6: 47b0 blx r6 e2d8: e782 b.n e1e0 e2da: 9b0d ldr r3, [sp, #52] ; 0x34 e2dc: 469b mov fp, r3 int32_t lower_corner_end = area_outer.y2 - disp_area->y1 - corner_size; e2de: 464b mov r3, r9 e2e0: 2212 movs r2, #18 e2e2: 5e9b ldrsh r3, [r3, r2] e2e4: aa18 add r2, sp, #96 ; 0x60 e2e6: 2706 movs r7, #6 e2e8: 5fd7 ldrsh r7, [r2, r7] e2ea: 1aff subs r7, r7, r3 e2ec: 9a10 ldr r2, [sp, #64] ; 0x40 e2ee: 1abf subs r7, r7, r2 if(lower_corner_end <= upper_corner_end) lower_corner_end = upper_corner_end + 1; e2f0: 990c ldr r1, [sp, #48] ; 0x30 e2f2: 000a movs r2, r1 e2f4: 42b9 cmp r1, r7 e2f6: db01 blt.n e2fc e2f8: 3201 adds r2, #1 e2fa: 0017 movs r7, r2 fill_area.y1 = disp_area->y1 + lower_corner_end; e2fc: 19db adds r3, r3, r7 e2fe: b21b sxth r3, r3 e300: aa1c add r2, sp, #112 ; 0x70 e302: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; e304: 80d3 strh r3, [r2, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { e306: ab1a add r3, sp, #104 ; 0x68 e308: 2206 movs r2, #6 e30a: 5e9b ldrsh r3, [r3, r2] e30c: 429f cmp r7, r3 e30e: dd00 ble.n e312 e310: e09a b.n e448 fill_area2.x1 = area_outer.x1; e312: ac1e add r4, sp, #120 ; 0x78 e314: 465b mov r3, fp e316: 930b str r3, [sp, #44] ; 0x2c e318: e047 b.n e3aa e31a: 46c0 nop ; (mov r8, r8) e31c: 00007c18 .word 0x00007c18 e320: 00013f3d .word 0x00013f3d e324: 0001173d .word 0x0001173d e328: 000095ed .word 0x000095ed e32c: 0000963d .word 0x0000963d e330: 0000bd01 .word 0x0000bd01 e334: 0000ba75 .word 0x0000ba75 e338: 000127a1 .word 0x000127a1 e33c: 00006fed .word 0x00006fed e340: 00012a19 .word 0x00012a19 e344: 0000bad1 .word 0x0000bad1 fill_area2.x1 = area_outer.x2 - rout + 1; e348: ab18 add r3, sp, #96 ; 0x60 e34a: 2204 movs r2, #4 e34c: 5e9b ldrsh r3, [r3, r2] e34e: 1c5a adds r2, r3, #1 e350: 1b55 subs r5, r2, r5 e352: 8025 strh r5, [r4, #0] fill_area2.x2 = area_outer.x2; e354: 80a3 strh r3, [r4, #4] int32_t mask_ofs = (area_outer.x2 - rout + 1) - (vdb->area.x1 + draw_area.x1); e356: 9a07 ldr r2, [sp, #28] e358: 1a9b subs r3, r3, r2 e35a: 3301 adds r3, #1 e35c: 464a mov r2, r9 e35e: 2110 movs r1, #16 e360: 5e52 ldrsh r2, [r2, r1] e362: a90e add r1, sp, #56 ; 0x38 e364: 2030 movs r0, #48 ; 0x30 e366: 5e09 ldrsh r1, [r1, r0] e368: 1852 adds r2, r2, r1 e36a: 1a9b subs r3, r3, r2 _lv_blend_fill(clip, &fill_area2, color, mask_buf + mask_ofs, mask_res, opa, blend_mode); e36c: 43da mvns r2, r3 e36e: 17d2 asrs r2, r2, #31 e370: 4013 ands r3, r2 e372: 9a05 ldr r2, [sp, #20] e374: 4694 mov ip, r2 e376: 4463 add r3, ip e378: 4652 mov r2, sl e37a: 9202 str r2, [sp, #8] e37c: 4642 mov r2, r8 e37e: 9201 str r2, [sp, #4] e380: 9a0a ldr r2, [sp, #40] ; 0x28 e382: 9200 str r2, [sp, #0] e384: 466a mov r2, sp e386: 8b12 ldrh r2, [r2, #24] e388: 0021 movs r1, r4 e38a: 9804 ldr r0, [sp, #16] e38c: 4d89 ldr r5, [pc, #548] ; (e5b4 ) e38e: 47a8 blx r5 fill_area.y1++; e390: ab1c add r3, sp, #112 ; 0x70 e392: 885a ldrh r2, [r3, #2] e394: 3201 adds r2, #1 e396: 805a strh r2, [r3, #2] fill_area.y2++; e398: 88da ldrh r2, [r3, #6] e39a: 3201 adds r2, #1 e39c: 80da strh r2, [r3, #6] for(h = lower_corner_end; h <= draw_area.y2; h++) { e39e: 3701 adds r7, #1 e3a0: ab0e add r3, sp, #56 ; 0x38 e3a2: 2236 movs r2, #54 ; 0x36 e3a4: 5e9b ldrsh r3, [r3, r2] e3a6: 429f cmp r7, r3 e3a8: dc4c bgt.n e444 _lv_memset_ff(mask_buf, draw_area_w); e3aa: 9909 ldr r1, [sp, #36] ; 0x24 e3ac: 9e05 ldr r6, [sp, #20] e3ae: 0030 movs r0, r6 e3b0: 4b81 ldr r3, [pc, #516] ; (e5b8 ) e3b2: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e3b4: 464b mov r3, r9 e3b6: 8a5a ldrh r2, [r3, #18] e3b8: 19d2 adds r2, r2, r7 e3ba: b212 sxth r2, r2 e3bc: 8a19 ldrh r1, [r3, #16] e3be: ab0e add r3, sp, #56 ; 0x38 e3c0: 8e1b ldrh r3, [r3, #48] ; 0x30 e3c2: 18c9 adds r1, r1, r3 e3c4: b209 sxth r1, r1 e3c6: 9b08 ldr r3, [sp, #32] e3c8: 0030 movs r0, r6 e3ca: 4d7c ldr r5, [pc, #496] ; (e5bc ) e3cc: 47a8 blx r5 e3ce: 900a str r0, [sp, #40] ; 0x28 fill_area2.x1 = area_outer.x1; e3d0: ab0e add r3, sp, #56 ; 0x38 e3d2: 2128 movs r1, #40 ; 0x28 e3d4: 5e5b ldrsh r3, [r3, r1] e3d6: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x1 + rout - 1; e3d8: 466a mov r2, sp e3da: 8b95 ldrh r5, [r2, #28] e3dc: 3b01 subs r3, #1 e3de: 18eb adds r3, r5, r3 e3e0: 80a3 strh r3, [r4, #4] fill_area2.y1 = fill_area.y1; e3e2: ab1c add r3, sp, #112 ; 0x70 e3e4: 885a ldrh r2, [r3, #2] e3e6: 8062 strh r2, [r4, #2] fill_area2.y2 = fill_area.y2; e3e8: 88db ldrh r3, [r3, #6] e3ea: 80e3 strh r3, [r4, #6] _lv_blend_fill(clip, &fill_area2, color, mask_buf, mask_res, opa, blend_mode); e3ec: 4652 mov r2, sl e3ee: 9202 str r2, [sp, #8] e3f0: 4642 mov r2, r8 e3f2: 9201 str r2, [sp, #4] e3f4: 9000 str r0, [sp, #0] e3f6: 0033 movs r3, r6 e3f8: 466a mov r2, sp e3fa: 8b12 ldrh r2, [r2, #24] e3fc: 0021 movs r1, r4 e3fe: 9804 ldr r0, [sp, #16] e400: 4e6c ldr r6, [pc, #432] ; (e5b4 ) e402: 47b0 blx r6 if(fill_area2.y2 > area_outer.y2 - dsc->outline_width) { e404: 2306 movs r3, #6 e406: 5ee2 ldrsh r2, [r4, r3] e408: ab0e add r3, sp, #56 ; 0x38 e40a: 212e movs r1, #46 ; 0x2e e40c: 5e5b ldrsh r3, [r3, r1] e40e: 990b ldr r1, [sp, #44] ; 0x2c e410: 2018 movs r0, #24 e412: 5e09 ldrsh r1, [r1, r0] e414: 1a5b subs r3, r3, r1 e416: 429a cmp r2, r3 e418: dd96 ble.n e348 fill_area2.x1 = area_outer.x1 + rout; e41a: aa18 add r2, sp, #96 ; 0x60 e41c: 8813 ldrh r3, [r2, #0] e41e: 18eb adds r3, r5, r3 e420: 8023 strh r3, [r4, #0] fill_area2.x2 = area_outer.x2 - rout; e422: 8893 ldrh r3, [r2, #4] e424: 1b5b subs r3, r3, r5 e426: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area2, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e428: 4653 mov r3, sl e42a: 9302 str r3, [sp, #8] e42c: 4643 mov r3, r8 e42e: 9301 str r3, [sp, #4] e430: 2301 movs r3, #1 e432: 9300 str r3, [sp, #0] e434: 2300 movs r3, #0 e436: 466a mov r2, sp e438: 8b12 ldrh r2, [r2, #24] e43a: 0021 movs r1, r4 e43c: 9804 ldr r0, [sp, #16] e43e: 4e5d ldr r6, [pc, #372] ; (e5b4 ) e440: 47b0 blx r6 e442: e781 b.n e348 e444: 9b0b ldr r3, [sp, #44] ; 0x2c e446: 469b mov fp, r3 fill_area.y1 = area_outer.y1 + corner_size + 1; e448: 466b mov r3, sp e44a: 2240 movs r2, #64 ; 0x40 e44c: 189b adds r3, r3, r2 e44e: 881b ldrh r3, [r3, #0] e450: ac1c add r4, sp, #112 ; 0x70 e452: ad18 add r5, sp, #96 ; 0x60 e454: 886a ldrh r2, [r5, #2] e456: 3201 adds r2, #1 e458: 189a adds r2, r3, r2 e45a: 8062 strh r2, [r4, #2] fill_area.y2 = area_outer.y2 - corner_size - 1; e45c: 88ea ldrh r2, [r5, #6] e45e: 3a01 subs r2, #1 e460: 1ad3 subs r3, r2, r3 e462: 80e3 strh r3, [r4, #6] fill_area.x1 = area_outer.x1; e464: 2200 movs r2, #0 e466: 5eab ldrsh r3, [r5, r2] e468: 8023 strh r3, [r4, #0] fill_area.x2 = area_outer.x1 + dsc->outline_width - 1; e46a: 3b01 subs r3, #1 e46c: 465a mov r2, fp e46e: 8b12 ldrh r2, [r2, #24] e470: 18d3 adds r3, r2, r3 e472: 80a3 strh r3, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e474: 4653 mov r3, sl e476: 9302 str r3, [sp, #8] e478: 4643 mov r3, r8 e47a: 9301 str r3, [sp, #4] e47c: 2701 movs r7, #1 e47e: 9700 str r7, [sp, #0] e480: 2300 movs r3, #0 e482: 466a mov r2, sp e484: 2144 movs r1, #68 ; 0x44 e486: 1852 adds r2, r2, r1 e488: 8812 ldrh r2, [r2, #0] e48a: 0021 movs r1, r4 e48c: 9804 ldr r0, [sp, #16] e48e: 4e49 ldr r6, [pc, #292] ; (e5b4 ) e490: 47b0 blx r6 fill_area.x1 = area_outer.x2 - dsc->outline_width + 1; e492: 2304 movs r3, #4 e494: 5eea ldrsh r2, [r5, r3] e496: 1c53 adds r3, r2, #1 e498: 4659 mov r1, fp e49a: 8b09 ldrh r1, [r1, #24] e49c: 1a5b subs r3, r3, r1 e49e: 8023 strh r3, [r4, #0] fill_area.x2 = area_outer.x2; e4a0: 80a2 strh r2, [r4, #4] _lv_blend_fill(clip, &fill_area, color, NULL, LV_DRAW_MASK_RES_FULL_COVER, opa, blend_mode); e4a2: 4653 mov r3, sl e4a4: 9302 str r3, [sp, #8] e4a6: 4643 mov r3, r8 e4a8: 9301 str r3, [sp, #4] e4aa: 9700 str r7, [sp, #0] e4ac: 2300 movs r3, #0 e4ae: 466a mov r2, sp e4b0: 2144 movs r1, #68 ; 0x44 e4b2: 1852 adds r2, r2, r1 e4b4: 8812 ldrh r2, [r2, #0] e4b6: 0021 movs r1, r4 e4b8: 9804 ldr r0, [sp, #16] e4ba: 47b0 blx r6 lv_draw_mask_remove_id(mask_rin_id); e4bc: 980e ldr r0, [sp, #56] ; 0x38 e4be: 4c40 ldr r4, [pc, #256] ; (e5c0 ) e4c0: 47a0 blx r4 lv_draw_mask_remove_id(mask_rout_id); e4c2: 980f ldr r0, [sp, #60] ; 0x3c e4c4: 47a0 blx r4 _lv_mem_buf_release(mask_buf); e4c6: 9805 ldr r0, [sp, #20] e4c8: 4b3e ldr r3, [pc, #248] ; (e5c4 ) e4ca: 4798 blx r3 e4cc: f7fe fdb1 bl d032 fill_area.x1 = area_outer.x1; e4d0: aa1c add r2, sp, #112 ; 0x70 e4d2: ab18 add r3, sp, #96 ; 0x60 e4d4: 8819 ldrh r1, [r3, #0] e4d6: 8011 strh r1, [r2, #0] fill_area.x2 = area_outer.x2; e4d8: 889b ldrh r3, [r3, #4] e4da: 8093 strh r3, [r2, #4] fill_area.y1 = disp_area->y1 + draw_area.y1; e4dc: a91a add r1, sp, #104 ; 0x68 e4de: 2302 movs r3, #2 e4e0: 5ece ldrsh r6, [r1, r3] e4e2: 464b mov r3, r9 e4e4: 8a5b ldrh r3, [r3, #18] e4e6: 199b adds r3, r3, r6 e4e8: b21b sxth r3, r3 e4ea: 8053 strh r3, [r2, #2] fill_area.y2 = fill_area.y1; e4ec: 80d3 strh r3, [r2, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { e4ee: 2206 movs r2, #6 e4f0: 5e8b ldrsh r3, [r1, r2] e4f2: 429e cmp r6, r3 e4f4: dce2 bgt.n e4bc mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e4f6: 4b31 ldr r3, [pc, #196] ; (e5bc ) e4f8: 469b mov fp, r3 _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e4fa: 4f2e ldr r7, [pc, #184] ; (e5b4 ) _lv_memset_ff(mask_buf, draw_area_w); e4fc: 9909 ldr r1, [sp, #36] ; 0x24 e4fe: 9c05 ldr r4, [sp, #20] e500: 0020 movs r0, r4 e502: 4b2d ldr r3, [pc, #180] ; (e5b8 ) e504: 4798 blx r3 mask_res = lv_draw_mask_apply(mask_buf, vdb->area.x1 + draw_area.x1, vdb->area.y1 + h, draw_area_w); e506: 464b mov r3, r9 e508: 8a5a ldrh r2, [r3, #18] e50a: 1992 adds r2, r2, r6 e50c: b212 sxth r2, r2 e50e: ad1a add r5, sp, #104 ; 0x68 e510: 8a19 ldrh r1, [r3, #16] e512: 882b ldrh r3, [r5, #0] e514: 18c9 adds r1, r1, r3 e516: b209 sxth r1, r1 e518: 9b08 ldr r3, [sp, #32] e51a: 9405 str r4, [sp, #20] e51c: 0020 movs r0, r4 e51e: 47d8 blx fp _lv_blend_fill(clip, &fill_area, color, mask_buf, mask_res, opa, blend_mode); e520: ac1c add r4, sp, #112 ; 0x70 e522: 4652 mov r2, sl e524: 9202 str r2, [sp, #8] e526: 4642 mov r2, r8 e528: 9201 str r2, [sp, #4] e52a: 9000 str r0, [sp, #0] e52c: 9b05 ldr r3, [sp, #20] e52e: 466a mov r2, sp e530: 8b12 ldrh r2, [r2, #24] e532: 0021 movs r1, r4 e534: 9804 ldr r0, [sp, #16] e536: 47b8 blx r7 fill_area.y1++; e538: 8863 ldrh r3, [r4, #2] e53a: 3301 adds r3, #1 e53c: 8063 strh r3, [r4, #2] fill_area.y2++; e53e: 88e3 ldrh r3, [r4, #6] e540: 3301 adds r3, #1 e542: 80e3 strh r3, [r4, #6] for(h = draw_area.y1; h <= draw_area.y2; h++) { e544: 3601 adds r6, #1 e546: 2206 movs r2, #6 e548: 5eab ldrsh r3, [r5, r2] e54a: 429e cmp r6, r3 e54c: ddd6 ble.n e4fc e54e: e7b5 b.n e4bc lv_opa_t * mask_line = _lv_mem_buf_get(size); e550: 9c07 ldr r4, [sp, #28] e552: 940c str r4, [sp, #48] ; 0x30 e554: 0020 movs r0, r4 e556: 4b1c ldr r3, [pc, #112] ; (e5c8 ) e558: 4798 blx r3 e55a: 900a str r0, [sp, #40] ; 0x28 for(y = 0; y < size; y++) { e55c: 2201 movs r2, #1 e55e: 920d str r2, [sp, #52] ; 0x34 e560: 2c00 cmp r4, #0 e562: dd01 ble.n e568 e564: f7fd fe85 bl c272 _lv_mem_buf_release(mask_line); e568: 980a ldr r0, [sp, #40] ; 0x28 e56a: 4b16 ldr r3, [pc, #88] ; (e5c4 ) e56c: 4798 blx r3 for(i = 0; i < size * size; i++) { e56e: 9f07 ldr r7, [sp, #28] e570: 437f muls r7, r7 e572: 2f00 cmp r7, #0 e574: d101 bne.n e57a e576: f7fd ff41 bl c3fc e57a: 9a0e ldr r2, [sp, #56] ; 0x38 e57c: 0011 movs r1, r2 e57e: 0078 lsls r0, r7, #1 e580: 4694 mov ip, r2 e582: 4460 add r0, ip res_buf[i] = (sh_buf[i] >> SHADOW_UPSACALE_SHIFT); e584: 880b ldrh r3, [r1, #0] e586: 099b lsrs r3, r3, #6 e588: 7013 strb r3, [r2, #0] e58a: 3102 adds r1, #2 e58c: 3201 adds r2, #1 for(i = 0; i < size * size; i++) { e58e: 4281 cmp r1, r0 e590: d1f8 bne.n e584 e592: f7fd ff33 bl c3fc lv_draw_mask_radius_init(&radius_mask_param, coords, dsc->radius, false); e596: 465b mov r3, fp e598: 2200 movs r2, #0 e59a: 5e9a ldrsh r2, [r3, r2] e59c: 2300 movs r3, #0 e59e: 4649 mov r1, r9 e5a0: a829 add r0, sp, #164 ; 0xa4 e5a2: 4c0a ldr r4, [pc, #40] ; (e5cc ) e5a4: 47a0 blx r4 radius_mask_id = lv_draw_mask_add(&radius_mask_param, NULL); e5a6: 2100 movs r1, #0 e5a8: a829 add r0, sp, #164 ; 0xa4 e5aa: 4b09 ldr r3, [pc, #36] ; (e5d0 ) e5ac: 4798 blx r3 e5ae: 0004 movs r4, r0 e5b0: f7ff f946 bl d840 e5b4: 00006fed .word 0x00006fed e5b8: 00012a19 .word 0x00012a19 e5bc: 0000bad1 .word 0x0000bad1 e5c0: 0000bb25 .word 0x0000bb25 e5c4: 00012465 .word 0x00012465 e5c8: 000127a1 .word 0x000127a1 e5cc: 0000bd01 .word 0x0000bd01 e5d0: 0000ba75 .word 0x0000ba75 0000e5d4 : * 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) { e5d4: b5f0 push {r4, r5, r6, r7, lr} e5d6: b083 sub sp, #12 e5d8: 0004 movs r4, r0 e5da: 000e movs r6, r1 e5dc: 0017 movs r7, r2 lv_color_t p_color = LV_COLOR_BLACK; e5de: aa01 add r2, sp, #4 e5e0: 7811 ldrb r1, [r2, #0] e5e2: 201f movs r0, #31 e5e4: 4381 bics r1, r0 e5e6: 7011 strb r1, [r2, #0] e5e8: 8811 ldrh r1, [r2, #0] e5ea: 4840 ldr r0, [pc, #256] ; (e6ec ) e5ec: 4001 ands r1, r0 e5ee: 8011 strh r1, [r2, #0] e5f0: 2100 movs r1, #0 e5f2: 7051 strb r1, [r2, #1] uint8_t * buf_u8 = (uint8_t *)dsc->data; e5f4: 68a5 ldr r5, [r4, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED || e5f6: 7821 ldrb r1, [r4, #0] e5f8: 221f movs r2, #31 e5fa: 400a ands r2, r1 e5fc: 1f11 subs r1, r2, #4 e5fe: 2902 cmp r1, #2 e600: d90d bls.n e61e _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) { e602: 2a07 cmp r2, #7 e604: d022 beq.n e64c * 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) { e606: 2a08 cmp r2, #8 e608: d034 beq.n e674 * 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) { e60a: 2a09 cmp r2, #9 e60c: d048 beq.n e6a0 * 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) { e60e: 2a0a cmp r2, #10 e610: d05e beq.n e6d0 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 || e612: 3a0b subs r2, #11 e614: 2a03 cmp r2, #3 e616: d815 bhi.n e644 dsc->header.cf == LV_IMG_CF_ALPHA_4BIT || dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { p_color = color; e618: aa01 add r2, sp, #4 e61a: 8013 strh r3, [r2, #0] e61c: e012 b.n e644 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; e61e: 7820 ldrb r0, [r4, #0] e620: 06c0 lsls r0, r0, #27 e622: 0ec0 lsrs r0, r0, #27 e624: 4b32 ldr r3, [pc, #200] ; (e6f0 ) e626: 4798 blx r3 uint32_t px = dsc->header.w * y * px_size + x * px_size; e628: 6823 ldr r3, [r4, #0] e62a: 02db lsls r3, r3, #11 e62c: 0d5b lsrs r3, r3, #21 e62e: 435f muls r7, r3 e630: 19be adds r6, r7, r6 uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf) >> 3; e632: 08c0 lsrs r0, r0, #3 uint32_t px = dsc->header.w * y * px_size + x * px_size; e634: b2c0 uxtb r0, r0 e636: 4370 muls r0, r6 _lv_memcpy_small(&p_color, &buf_u8[px], sizeof(lv_color_t)); e638: 1828 adds r0, r5, r0 *d8 = *s8; e63a: ab01 add r3, sp, #4 e63c: 7802 ldrb r2, [r0, #0] e63e: 701a strb r2, [r3, #0] e640: 7842 ldrb r2, [r0, #1] e642: 705a strb r2, [r3, #1] } return p_color; e644: ab01 add r3, sp, #4 e646: 8818 ldrh r0, [r3, #0] } e648: b003 add sp, #12 e64a: bdf0 pop {r4, r5, r6, r7, pc} p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e64c: 4032 ands r2, r6 e64e: 2307 movs r3, #7 e650: 1a9a subs r2, r3, r2 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; e652: 6820 ldr r0, [r4, #0] e654: 02c0 lsls r0, r0, #11 e656: 0d40 lsrs r0, r0, #21 e658: 3007 adds r0, #7 e65a: 10c0 asrs r0, r0, #3 e65c: 4347 muls r7, r0 e65e: 10f6 asrs r6, r6, #3 p_color.full = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e660: 19ed adds r5, r5, r7 e662: 19ae adds r6, r5, r6 e664: 7a31 ldrb r1, [r6, #8] e666: 3b06 subs r3, #6 e668: 4093 lsls r3, r2 e66a: 400b ands r3, r1 e66c: 4113 asrs r3, r2 e66e: aa01 add r2, sp, #4 e670: 8013 strh r3, [r2, #0] e672: e7e7 b.n e644 uint8_t bit = (x & 0x3) * 2; e674: 3a05 subs r2, #5 e676: 4032 ands r2, r6 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e678: 0052 lsls r2, r2, #1 e67a: 2306 movs r3, #6 e67c: 1a9a subs r2, r3, r2 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; e67e: 6820 ldr r0, [r4, #0] e680: 02c0 lsls r0, r0, #11 e682: 0d40 lsrs r0, r0, #21 e684: 3003 adds r0, #3 e686: 1080 asrs r0, r0, #2 e688: 4347 muls r7, r0 e68a: 10b6 asrs r6, r6, #2 p_color.full = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e68c: 19ed adds r5, r5, r7 e68e: 19ae adds r6, r5, r6 e690: 7c31 ldrb r1, [r6, #16] e692: 3b03 subs r3, #3 e694: 4093 lsls r3, r2 e696: 400b ands r3, r1 e698: 4113 asrs r3, r2 e69a: aa01 add r2, sp, #4 e69c: 8013 strh r3, [r2, #0] e69e: e7d1 b.n e644 uint8_t bit = (x & 0x1) * 4; e6a0: 2301 movs r3, #1 e6a2: 4033 ands r3, r6 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e6a4: 009b lsls r3, r3, #2 e6a6: 3a05 subs r2, #5 e6a8: 1ad3 subs r3, r2, r3 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; e6aa: 6820 ldr r0, [r4, #0] e6ac: 02c0 lsls r0, r0, #11 e6ae: 0d40 lsrs r0, r0, #21 e6b0: 3001 adds r0, #1 e6b2: 1040 asrs r0, r0, #1 e6b4: 4347 muls r7, r0 e6b6: 1076 asrs r6, r6, #1 p_color.full = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e6b8: 19ed adds r5, r5, r7 e6ba: 19ad adds r5, r5, r6 e6bc: 3540 adds r5, #64 ; 0x40 e6be: 7829 ldrb r1, [r5, #0] e6c0: 320b adds r2, #11 e6c2: 409a lsls r2, r3 e6c4: 400a ands r2, r1 e6c6: 411a asrs r2, r3 e6c8: 0013 movs r3, r2 e6ca: aa01 add r2, sp, #4 e6cc: 8013 strh r3, [r2, #0] e6ce: e7b9 b.n e644 uint32_t px = dsc->header.w * y + x; e6d0: 6823 ldr r3, [r4, #0] e6d2: 02db lsls r3, r3, #11 e6d4: 0d5b lsrs r3, r3, #21 e6d6: 437b muls r3, r7 p_color.full = buf_u8[px]; e6d8: 19ad adds r5, r5, r6 e6da: 18ed adds r5, r5, r3 e6dc: 2380 movs r3, #128 ; 0x80 e6de: 00db lsls r3, r3, #3 e6e0: 469c mov ip, r3 e6e2: 4465 add r5, ip e6e4: 782a ldrb r2, [r5, #0] e6e6: ab01 add r3, sp, #4 e6e8: 801a strh r2, [r3, #0] e6ea: e7ab b.n e644 e6ec: fffff81f .word 0xfffff81f e6f0: 000092a9 .word 0x000092a9 0000e6f4 : * @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) { e6f4: b5f0 push {r4, r5, r6, r7, lr} e6f6: b087 sub sp, #28 e6f8: 0004 movs r4, r0 e6fa: 9201 str r2, [sp, #4] uint8_t * buf_u8 = (uint8_t *)dsc->data; e6fc: 6886 ldr r6, [r0, #8] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA) { e6fe: 7800 ldrb r0, [r0, #0] e700: 231f movs r3, #31 e702: 4003 ands r3, r0 e704: 2b05 cmp r3, #5 e706: d00a beq.n e71e 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) { e708: 2b0b cmp r3, #11 e70a: d012 beq.n e732 * 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) { e70c: 2b0c cmp r3, #12 e70e: d028 beq.n e762 * 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) { e710: 2b0d cmp r3, #13 e712: d047 beq.n e7a4 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; e714: 20ff movs r0, #255 ; 0xff else if(dsc->header.cf == LV_IMG_CF_ALPHA_8BIT) { e716: 2b0e cmp r3, #14 e718: d064 beq.n e7e4 } e71a: b007 add sp, #28 e71c: 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; e71e: 6823 ldr r3, [r4, #0] e720: 02db lsls r3, r3, #11 e722: 0d5b lsrs r3, r3, #21 e724: 435a muls r2, r3 e726: 1851 adds r1, r2, r1 return buf_u8[px + LV_IMG_PX_SIZE_ALPHA_BYTE - 1]; e728: 004a lsls r2, r1, #1 e72a: 1851 adds r1, r2, r1 e72c: 1871 adds r1, r6, r1 e72e: 7888 ldrb r0, [r1, #2] e730: e7f3 b.n e71a uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e732: 2507 movs r5, #7 e734: 400d ands r5, r1 e736: 3b04 subs r3, #4 e738: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 7) >> 3) * y + x; e73a: 6823 ldr r3, [r4, #0] e73c: 02db lsls r3, r3, #11 e73e: 0d5b lsrs r3, r3, #21 e740: 3307 adds r3, #7 e742: 10db asrs r3, r3, #3 e744: 9a01 ldr r2, [sp, #4] e746: 435a muls r2, r3 e748: 10c9 asrs r1, r1, #3 uint8_t px_opa = (buf_u8[px] & (1 << (7 - bit))) >> (7 - bit); e74a: 18b2 adds r2, r6, r2 e74c: 5c53 ldrb r3, [r2, r1] e74e: 2001 movs r0, #1 e750: 40a8 lsls r0, r5 e752: 4018 ands r0, r3 e754: 4128 asrs r0, r5 return px_opa ? LV_OPA_TRANSP : LV_OPA_COVER; e756: b2c3 uxtb r3, r0 e758: 4258 negs r0, r3 e75a: 4158 adcs r0, r3 e75c: 4240 negs r0, r0 e75e: b2c0 uxtb r0, r0 e760: e7db b.n e71a const uint8_t opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ e762: 2300 movs r3, #0 e764: a802 add r0, sp, #8 e766: 7003 strb r3, [r0, #0] e768: 3355 adds r3, #85 ; 0x55 e76a: 7043 strb r3, [r0, #1] e76c: 3355 adds r3, #85 ; 0x55 e76e: 7083 strb r3, [r0, #2] e770: 20ff movs r0, #255 ; 0xff e772: ab02 add r3, sp, #8 e774: 70d8 strb r0, [r3, #3] uint8_t bit = (x & 0x3) * 2; e776: 2503 movs r5, #3 e778: 400d ands r5, r1 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e77a: 006d lsls r5, r5, #1 e77c: 2306 movs r3, #6 e77e: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 3) >> 2) * y + x; e780: 6823 ldr r3, [r4, #0] e782: 02db lsls r3, r3, #11 e784: 0d5b lsrs r3, r3, #21 e786: 3303 adds r3, #3 e788: 109b asrs r3, r3, #2 e78a: 9a01 ldr r2, [sp, #4] e78c: 435a muls r2, r3 e78e: 1089 asrs r1, r1, #2 uint8_t px_opa = (buf_u8[px] & (3 << (6 - bit))) >> (6 - bit); e790: 18b2 adds r2, r6, r2 e792: 5c52 ldrb r2, [r2, r1] e794: 2303 movs r3, #3 e796: 40ab lsls r3, r5 e798: 4013 ands r3, r2 e79a: 412b asrs r3, r5 return opa_table[px_opa]; e79c: 4003 ands r3, r0 e79e: aa02 add r2, sp, #8 e7a0: 5cd0 ldrb r0, [r2, r3] e7a2: e7ba b.n e71a const uint8_t opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ e7a4: ab02 add r3, sp, #8 e7a6: 469c mov ip, r3 e7a8: 4b12 ldr r3, [pc, #72] ; (e7f4 ) e7aa: 4665 mov r5, ip e7ac: cb85 ldmia r3!, {r0, r2, r7} e7ae: c585 stmia r5!, {r0, r2, r7} e7b0: 681b ldr r3, [r3, #0] e7b2: 602b str r3, [r5, #0] uint8_t bit = (x & 0x1) * 4; e7b4: 2501 movs r5, #1 e7b6: 400d ands r5, r1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e7b8: 00ad lsls r5, r5, #2 e7ba: 2304 movs r3, #4 e7bc: 1b5d subs r5, r3, r5 uint32_t px = ((dsc->header.w + 1) >> 1) * y + x; e7be: 6823 ldr r3, [r4, #0] e7c0: 02db lsls r3, r3, #11 e7c2: 0d5b lsrs r3, r3, #21 e7c4: 3301 adds r3, #1 e7c6: 105b asrs r3, r3, #1 e7c8: 9a01 ldr r2, [sp, #4] e7ca: 435a muls r2, r3 e7cc: 1049 asrs r1, r1, #1 uint8_t px_opa = (buf_u8[px] & (0xF << (4 - bit))) >> (4 - bit); e7ce: 18b2 adds r2, r6, r2 e7d0: 5c52 ldrb r2, [r2, r1] e7d2: 230f movs r3, #15 e7d4: 40ab lsls r3, r5 e7d6: 4013 ands r3, r2 e7d8: 412b asrs r3, r5 return opa_table[px_opa]; e7da: 22ff movs r2, #255 ; 0xff e7dc: 4013 ands r3, r2 e7de: 4662 mov r2, ip e7e0: 5cd0 ldrb r0, [r2, r3] e7e2: e79a b.n e71a uint32_t px = dsc->header.w * y + x; e7e4: 6823 ldr r3, [r4, #0] e7e6: 02db lsls r3, r3, #11 e7e8: 0d5b lsrs r3, r3, #21 e7ea: 9a01 ldr r2, [sp, #4] e7ec: 435a muls r2, r3 return buf_u8[px]; e7ee: 1871 adds r1, r6, r1 e7f0: 5c88 ldrb r0, [r1, r2] e7f2: e792 b.n e71a e7f4: 000264e0 .word 0x000264e0 0000e7f8 <_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) { e7f8: b5f0 push {r4, r5, r6, r7, lr} e7fa: 46de mov lr, fp e7fc: 4657 mov r7, sl e7fe: 464e mov r6, r9 e800: 4645 mov r5, r8 e802: b5e0 push {r5, r6, r7, lr} e804: b083 sub sp, #12 e806: 0004 movs r4, r0 dsc->tmp.pivot_x_256 = dsc->cfg.pivot_x * 256; e808: 2208 movs r2, #8 e80a: 5e83 ldrsh r3, [r0, r2] e80c: 021b lsls r3, r3, #8 e80e: 6243 str r3, [r0, #36] ; 0x24 dsc->tmp.pivot_y_256 = dsc->cfg.pivot_y * 256; e810: 220a movs r2, #10 e812: 5e83 ldrsh r3, [r0, r2] e814: 021b lsls r3, r3, #8 e816: 6283 str r3, [r0, #40] ; 0x28 int32_t angle_low = dsc->cfg.angle / 10; e818: 230c movs r3, #12 e81a: 5ec7 ldrsh r7, [r0, r3] e81c: 4b3e ldr r3, [pc, #248] ; (e918 <_lv_img_buf_transform_init+0x120>) e81e: 469b mov fp, r3 e820: 210a movs r1, #10 e822: 0038 movs r0, r7 e824: 4798 blx r3 e826: b205 sxth r5, r0 int32_t angle_hight = angle_low + 1; int32_t angle_rem = dsc->cfg.angle - (angle_low * 10); e828: 260a movs r6, #10 e82a: 4276 negs r6, r6 e82c: 436e muls r6, r5 e82e: 19f6 adds r6, r6, r7 int32_t s1 = _lv_trigo_sin(-angle_low); e830: b2ab uxth r3, r5 e832: 4698 mov r8, r3 e834: 4258 negs r0, r3 e836: b200 sxth r0, r0 e838: 4b38 ldr r3, [pc, #224] ; (e91c <_lv_img_buf_transform_init+0x124>) e83a: 469a mov sl, r3 e83c: 4798 blx r3 e83e: 4681 mov r9, r0 int32_t angle_hight = angle_low + 1; e840: 3501 adds r5, #1 int32_t s2 = _lv_trigo_sin(-angle_hight); e842: b2ad uxth r5, r5 e844: 4268 negs r0, r5 e846: b200 sxth r0, r0 e848: 47d0 blx sl e84a: 9001 str r0, [sp, #4] int32_t c1 = _lv_trigo_sin(-angle_low + 90); e84c: 275a movs r7, #90 ; 0x5a e84e: 4642 mov r2, r8 e850: 1ab8 subs r0, r7, r2 e852: b200 sxth r0, r0 e854: 47d0 blx sl e856: 4680 mov r8, r0 int32_t c2 = _lv_trigo_sin(-angle_hight + 90); e858: 1b7d subs r5, r7, r5 e85a: b228 sxth r0, r5 e85c: 47d0 blx sl e85e: 0007 movs r7, r0 dsc->tmp.sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; e860: 250a movs r5, #10 e862: 1bad subs r5, r5, r6 e864: 464b mov r3, r9 e866: 436b muls r3, r5 e868: 0018 movs r0, r3 e86a: 9b01 ldr r3, [sp, #4] e86c: 4373 muls r3, r6 e86e: 18c0 adds r0, r0, r3 e870: 210a movs r1, #10 e872: 47d8 blx fp e874: 62e0 str r0, [r4, #44] ; 0x2c dsc->tmp.cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; e876: 4643 mov r3, r8 e878: 435d muls r5, r3 e87a: 0030 movs r0, r6 e87c: 4378 muls r0, r7 e87e: 1828 adds r0, r5, r0 e880: 210a movs r1, #10 e882: 47d8 blx fp e884: 6320 str r0, [r4, #48] ; 0x30 dsc->tmp.chroma_keyed = lv_img_cf_is_chroma_keyed(dsc->cfg.cf) ? 1 : 0; e886: 7ca0 ldrb r0, [r4, #18] e888: 4b25 ldr r3, [pc, #148] ; (e920 <_lv_img_buf_transform_init+0x128>) e88a: 4798 blx r3 e88c: 2634 movs r6, #52 ; 0x34 e88e: 2501 movs r5, #1 e890: 0003 movs r3, r0 e892: 402b ands r3, r5 e894: 5da0 ldrb r0, [r4, r6] e896: 2201 movs r2, #1 e898: 4390 bics r0, r2 e89a: 4318 orrs r0, r3 e89c: 55a0 strb r0, [r4, r6] dsc->tmp.has_alpha = lv_img_cf_has_alpha(dsc->cfg.cf) ? 1 : 0; e89e: 7ca0 ldrb r0, [r4, #18] e8a0: 4b20 ldr r3, [pc, #128] ; (e924 <_lv_img_buf_transform_init+0x12c>) e8a2: 4798 blx r3 e8a4: 4005 ands r5, r0 e8a6: 006d lsls r5, r5, #1 e8a8: 5da0 ldrb r0, [r4, r6] e8aa: 2302 movs r3, #2 e8ac: 4398 bics r0, r3 e8ae: 4305 orrs r5, r0 e8b0: 55a5 strb r5, [r4, r6] if(dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR || dsc->cfg.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || e8b2: 7ca2 ldrb r2, [r4, #18] e8b4: 1f13 subs r3, r2, #4 e8b6: 2b02 cmp r3, #2 e8b8: d928 bls.n e90c <_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; e8ba: 2134 movs r1, #52 ; 0x34 e8bc: 5c63 ldrb r3, [r4, r1] e8be: 2004 movs r0, #4 e8c0: 4383 bics r3, r0 e8c2: 5463 strb r3, [r4, r1] } dsc->tmp.img_dsc.data = dsc->cfg.src; e8c4: 6823 ldr r3, [r4, #0] e8c6: 6223 str r3, [r4, #32] dsc->tmp.img_dsc.header.always_zero = 0; dsc->tmp.img_dsc.header.cf = dsc->cfg.cf; e8c8: 231f movs r3, #31 e8ca: 4013 ands r3, r2 e8cc: 7623 strb r3, [r4, #24] dsc->tmp.img_dsc.header.w = dsc->cfg.src_w; e8ce: 88a3 ldrh r3, [r4, #4] e8d0: 055b lsls r3, r3, #21 e8d2: 0ada lsrs r2, r3, #11 e8d4: 4b14 ldr r3, [pc, #80] ; (e928 <_lv_img_buf_transform_init+0x130>) e8d6: 69a1 ldr r1, [r4, #24] e8d8: 400b ands r3, r1 e8da: 4313 orrs r3, r2 e8dc: 61a3 str r3, [r4, #24] dsc->tmp.img_dsc.header.h = dsc->cfg.src_h; e8de: 88e2 ldrh r2, [r4, #6] e8e0: 0152 lsls r2, r2, #5 e8e2: 02db lsls r3, r3, #11 e8e4: 0edb lsrs r3, r3, #27 e8e6: 4313 orrs r3, r2 e8e8: 8363 strh r3, [r4, #26] dsc->tmp.zoom_inv = (256 * 256) / dsc->cfg.zoom; e8ea: 89e1 ldrh r1, [r4, #14] e8ec: 2080 movs r0, #128 ; 0x80 e8ee: 0240 lsls r0, r0, #9 e8f0: 4b09 ldr r3, [pc, #36] ; (e918 <_lv_img_buf_transform_init+0x120>) e8f2: 4798 blx r3 e8f4: 86e0 strh r0, [r4, #54] ; 0x36 dsc->res.opa = LV_OPA_COVER; e8f6: 23ff movs r3, #255 ; 0xff e8f8: 75a3 strb r3, [r4, #22] dsc->res.color = dsc->cfg.color; e8fa: 8a23 ldrh r3, [r4, #16] e8fc: 82a3 strh r3, [r4, #20] } e8fe: b003 add sp, #12 e900: bc3c pop {r2, r3, r4, r5} e902: 4690 mov r8, r2 e904: 4699 mov r9, r3 e906: 46a2 mov sl, r4 e908: 46ab mov fp, r5 e90a: bdf0 pop {r4, r5, r6, r7, pc} dsc->tmp.native_color = 1; e90c: 2134 movs r1, #52 ; 0x34 e90e: b2eb uxtb r3, r5 e910: 2004 movs r0, #4 e912: 4303 orrs r3, r0 e914: 5463 strb r3, [r4, r1] e916: e7d5 b.n e8c4 <_lv_img_buf_transform_init+0xcc> e918: 0001c1b9 .word 0x0001c1b9 e91c: 000121a1 .word 0x000121a1 e920: 000092d9 .word 0x000092d9 e924: 000092ed .word 0x000092ed e928: ffe003ff .word 0xffe003ff 0000e92c <_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) { e92c: b5f0 push {r4, r5, r6, r7, lr} e92e: 46de mov lr, fp e930: 4657 mov r7, sl e932: 464e mov r6, r9 e934: 4645 mov r5, r8 e936: b5e0 push {r5, r6, r7, lr} e938: b087 sub sp, #28 e93a: 9000 str r0, [sp, #0] e93c: 9102 str r1, [sp, #8] e93e: 9205 str r2, [sp, #20] e940: 001d movs r5, r3 e942: ab10 add r3, sp, #64 ; 0x40 e944: 881b ldrh r3, [r3, #0] e946: 469b mov fp, r3 #if LV_USE_IMG_TRANSFORM int32_t angle_low = angle / 10; e948: 4f6a ldr r7, [pc, #424] ; (eaf4 <_lv_img_buf_get_transformed_area+0x1c8>) e94a: 210a movs r1, #10 e94c: 0028 movs r0, r5 e94e: 47b8 blx r7 e950: b204 sxth r4, r0 int32_t angle_hight = angle_low + 1; e952: 1c66 adds r6, r4, #1 int32_t angle_rem = angle - (angle_low * 10); e954: 200a movs r0, #10 e956: 4240 negs r0, r0 e958: 4360 muls r0, r4 e95a: 1945 adds r5, r0, r5 int32_t s1 = _lv_trigo_sin(angle_low); e95c: 0020 movs r0, r4 e95e: 4b66 ldr r3, [pc, #408] ; (eaf8 <_lv_img_buf_get_transformed_area+0x1cc>) e960: 4699 mov r9, r3 e962: 4798 blx r3 e964: 4680 mov r8, r0 int32_t s2 = _lv_trigo_sin(angle_hight); e966: b230 sxth r0, r6 e968: 47c8 blx r9 e96a: 4682 mov sl, r0 int32_t c1 = _lv_trigo_sin(angle_low + 90); e96c: 345a adds r4, #90 ; 0x5a e96e: b220 sxth r0, r4 e970: 47c8 blx r9 e972: 0004 movs r4, r0 int32_t c2 = _lv_trigo_sin(angle_hight + 90); e974: 365a adds r6, #90 ; 0x5a e976: b230 sxth r0, r6 e978: 47c8 blx r9 e97a: 4681 mov r9, r0 int32_t sinma = (s1 * (10 - angle_rem) + s2 * angle_rem) / 10; e97c: 260a movs r6, #10 e97e: 1b76 subs r6, r6, r5 e980: 4640 mov r0, r8 e982: 4370 muls r0, r6 e984: 4653 mov r3, sl e986: 436b muls r3, r5 e988: 18c0 adds r0, r0, r3 e98a: 210a movs r1, #10 e98c: 47b8 blx r7 e98e: 4680 mov r8, r0 int32_t cosma = (c1 * (10 - angle_rem) + c2 * angle_rem) / 10; e990: 4374 muls r4, r6 e992: 464b mov r3, r9 e994: 435d muls r5, r3 e996: 1960 adds r0, r4, r5 e998: 210a movs r1, #10 e99a: 47b8 blx r7 lv_coord_t xt; lv_coord_t yt; lv_area_t a; a.x1 = ((-pivot->x) * zoom) >> 8; e99c: 9b11 ldr r3, [sp, #68] ; 0x44 e99e: 2200 movs r2, #0 e9a0: 5e9a ldrsh r2, [r3, r2] a.y1 = ((-pivot->y) * zoom) >> 8; e9a2: 9b11 ldr r3, [sp, #68] ; 0x44 e9a4: 2702 movs r7, #2 e9a6: 5fdf ldrsh r7, [r3, r7] a.x1 = ((-pivot->x) * zoom) >> 8; e9a8: 4254 negs r4, r2 e9aa: 465b mov r3, fp e9ac: 435c muls r4, r3 e9ae: 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; e9b0: b224 sxth r4, r4 e9b2: 0023 movs r3, r4 e9b4: 4343 muls r3, r0 e9b6: 4699 mov r9, r3 a.y1 = ((-pivot->y) * zoom) >> 8; e9b8: 427b negs r3, r7 e9ba: 465d mov r5, fp e9bc: 436b muls r3, r5 e9be: 121b asrs r3, r3, #8 lt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; e9c0: b21b sxth r3, r3 e9c2: 4641 mov r1, r8 e9c4: 4359 muls r1, r3 e9c6: b296 uxth r6, r2 e9c8: 464d mov r5, r9 e9ca: 1a6d subs r5, r5, r1 e9cc: 13ed asrs r5, r5, #15 e9ce: 1975 adds r5, r6, r5 e9d0: b22d sxth r5, r5 e9d2: 46aa mov sl, r5 lt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; e9d4: 4645 mov r5, r8 e9d6: 4365 muls r5, r4 e9d8: 4343 muls r3, r0 e9da: b2bc uxth r4, r7 e9dc: 9503 str r5, [sp, #12] e9de: 18ed adds r5, r5, r3 e9e0: 13ed asrs r5, r5, #15 e9e2: 9401 str r4, [sp, #4] e9e4: 46a4 mov ip, r4 e9e6: 4465 add r5, ip e9e8: b22d sxth r5, r5 a.x2 = ((w - pivot->x) * zoom) >> 8; e9ea: 9c02 ldr r4, [sp, #8] e9ec: 1aa2 subs r2, r4, r2 e9ee: 465c mov r4, fp e9f0: 4362 muls r2, r4 e9f2: 1212 asrs r2, r2, #8 xt = a.x2; yt = a.y1; rt.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; e9f4: b212 sxth r2, r2 e9f6: 0014 movs r4, r2 e9f8: 4344 muls r4, r0 e9fa: 9402 str r4, [sp, #8] e9fc: 1a61 subs r1, r4, r1 e9fe: 13c9 asrs r1, r1, #15 ea00: 1871 adds r1, r6, r1 ea02: b209 sxth r1, r1 rt.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ea04: 4644 mov r4, r8 ea06: 4362 muls r2, r4 ea08: 9204 str r2, [sp, #16] ea0a: 4694 mov ip, r2 ea0c: 4463 add r3, ip ea0e: 13db asrs r3, r3, #15 ea10: 9c01 ldr r4, [sp, #4] ea12: 46a4 mov ip, r4 ea14: 4463 add r3, ip ea16: b21b sxth r3, r3 a.y2 = ((h - pivot->y) * zoom) >> 8; ea18: 9c05 ldr r4, [sp, #20] ea1a: 1be7 subs r7, r4, r7 ea1c: 465c mov r4, fp ea1e: 4367 muls r7, r4 ea20: 123f asrs r7, r7, #8 xt = a.x1; yt = a.y2; lb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ea22: b23f sxth r7, r7 ea24: 4644 mov r4, r8 ea26: 437c muls r4, r7 ea28: 46a0 mov r8, r4 ea2a: 464c mov r4, r9 ea2c: 4642 mov r2, r8 ea2e: 1aa4 subs r4, r4, r2 ea30: 13e2 asrs r2, r4, #15 ea32: 4691 mov r9, r2 ea34: 44b1 add r9, r6 ea36: 464a mov r2, r9 ea38: b212 sxth r2, r2 ea3a: 4691 mov r9, r2 lb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ea3c: 4378 muls r0, r7 ea3e: 9f03 ldr r7, [sp, #12] ea40: 183f adds r7, r7, r0 ea42: 13ff asrs r7, r7, #15 ea44: 46e3 mov fp, ip ea46: 4467 add r7, ip ea48: b23f sxth r7, r7 xt = a.x2; yt = a.y2; rb.x = ((cosma * xt - sinma * yt) >> LV_TRIGO_SHIFT) + pivot->x; ea4a: 9a02 ldr r2, [sp, #8] ea4c: 4644 mov r4, r8 ea4e: 1b12 subs r2, r2, r4 ea50: 13d2 asrs r2, r2, #15 ea52: 4690 mov r8, r2 ea54: 4446 add r6, r8 ea56: b236 sxth r6, r6 rb.y = ((sinma * xt + cosma * yt) >> LV_TRIGO_SHIFT) + pivot->y; ea58: 9a04 ldr r2, [sp, #16] ea5a: 4694 mov ip, r2 ea5c: 4460 add r0, ip ea5e: 13c0 asrs r0, r0, #15 ea60: 465a mov r2, fp ea62: 1814 adds r4, r2, r0 ea64: b224 sxth r4, r4 res->x1 = LV_MATH_MIN4(lb.x, lt.x, rb.x, rt.x); ea66: 4652 mov r2, sl ea68: 458a cmp sl, r1 ea6a: dd00 ble.n ea6e <_lv_img_buf_get_transformed_area+0x142> ea6c: 1c0a adds r2, r1, #0 ea6e: 1c10 adds r0, r2, #0 ea70: b212 sxth r2, r2 ea72: 454a cmp r2, r9 ea74: dd00 ble.n ea78 <_lv_img_buf_get_transformed_area+0x14c> ea76: 4648 mov r0, r9 ea78: 1c02 adds r2, r0, #0 ea7a: b200 sxth r0, r0 ea7c: 42b0 cmp r0, r6 ea7e: dd00 ble.n ea82 <_lv_img_buf_get_transformed_area+0x156> ea80: 1c32 adds r2, r6, #0 ea82: 9800 ldr r0, [sp, #0] ea84: 8002 strh r2, [r0, #0] res->x2 = LV_MATH_MAX4(lb.x, lt.x, rb.x, rt.x); ea86: 4650 mov r0, sl ea88: 458a cmp sl, r1 ea8a: da00 bge.n ea8e <_lv_img_buf_get_transformed_area+0x162> ea8c: 1c08 adds r0, r1, #0 ea8e: 1c01 adds r1, r0, #0 ea90: b200 sxth r0, r0 ea92: 4548 cmp r0, r9 ea94: da00 bge.n ea98 <_lv_img_buf_get_transformed_area+0x16c> ea96: 4649 mov r1, r9 ea98: 1c0a adds r2, r1, #0 ea9a: b209 sxth r1, r1 ea9c: 42b1 cmp r1, r6 ea9e: da00 bge.n eaa2 <_lv_img_buf_get_transformed_area+0x176> eaa0: 1c32 adds r2, r6, #0 eaa2: 9900 ldr r1, [sp, #0] eaa4: 808a strh r2, [r1, #4] res->y1 = LV_MATH_MIN4(lb.y, lt.y, rb.y, rt.y); eaa6: 1c29 adds r1, r5, #0 eaa8: 429d cmp r5, r3 eaaa: dd00 ble.n eaae <_lv_img_buf_get_transformed_area+0x182> eaac: 1c19 adds r1, r3, #0 eaae: 1c0a adds r2, r1, #0 eab0: b209 sxth r1, r1 eab2: 42b9 cmp r1, r7 eab4: dd00 ble.n eab8 <_lv_img_buf_get_transformed_area+0x18c> eab6: 1c3a adds r2, r7, #0 eab8: 1c11 adds r1, r2, #0 eaba: b212 sxth r2, r2 eabc: 42a2 cmp r2, r4 eabe: dd00 ble.n eac2 <_lv_img_buf_get_transformed_area+0x196> eac0: 1c21 adds r1, r4, #0 eac2: 9a00 ldr r2, [sp, #0] eac4: 8051 strh r1, [r2, #2] res->y2 = LV_MATH_MAX4(lb.y, lt.y, rb.y, rt.y); eac6: 1c2a adds r2, r5, #0 eac8: 429d cmp r5, r3 eaca: da00 bge.n eace <_lv_img_buf_get_transformed_area+0x1a2> eacc: 1c1a adds r2, r3, #0 eace: 1c13 adds r3, r2, #0 ead0: b212 sxth r2, r2 ead2: 42ba cmp r2, r7 ead4: da00 bge.n ead8 <_lv_img_buf_get_transformed_area+0x1ac> ead6: 1c3b adds r3, r7, #0 ead8: 1c1a adds r2, r3, #0 eada: b21b sxth r3, r3 eadc: 42a3 cmp r3, r4 eade: da00 bge.n eae2 <_lv_img_buf_get_transformed_area+0x1b6> eae0: 1c22 adds r2, r4, #0 eae2: 9b00 ldr r3, [sp, #0] eae4: 80da strh r2, [r3, #6] res->x1 = 0; res->y1 = 0; res->x2 = w; res->y2 = h; #endif } eae6: b007 add sp, #28 eae8: bc3c pop {r2, r3, r4, r5} eaea: 4690 mov r8, r2 eaec: 4699 mov r9, r3 eaee: 46a2 mov sl, r4 eaf0: 46ab mov fp, r5 eaf2: bdf0 pop {r4, r5, r6, r7, pc} eaf4: 0001c1b9 .word 0x0001c1b9 eaf8: 000121a1 .word 0x000121a1 0000eafc <_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) { eafc: b5f0 push {r4, r5, r6, r7, lr} eafe: 46de mov lr, fp eb00: 4657 mov r7, sl eb02: 464e mov r6, r9 eb04: 4645 mov r5, r8 eb06: b5e0 push {r5, r6, r7, lr} eb08: b08b sub sp, #44 ; 0x2c eb0a: 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; eb0c: 2338 movs r3, #56 ; 0x38 eb0e: 5ec7 ldrsh r7, [r0, r3] eb10: 23ff movs r3, #255 ; 0xff eb12: 001a movs r2, r3 eb14: 403a ands r2, r7 int ys_fract = dsc->tmp.ys & 0xff; eb16: 213a movs r1, #58 ; 0x3a eb18: 5e46 ldrsh r6, [r0, r1] eb1a: 4033 ands r3, r6 int32_t xn; /*x neightboor*/ lv_opa_t xr; /*x mix ratio*/ if(xs_fract < 0x70) { eb1c: 2a6f cmp r2, #111 ; 0x6f eb1e: dc7e bgt.n ec1e <_lv_img_buf_transform_anti_alias+0x122> xn = - 1; if(dsc->tmp.xs_int + xn < 0) xn = 0; eb20: 223c movs r2, #60 ; 0x3c eb22: 5e81 ldrsh r1, [r0, r2] eb24: 4249 negs r1, r1 eb26: 17c9 asrs r1, r1, #31 xr = xs_fract + 0x80; eb28: 3f80 subs r7, #128 ; 0x80 eb2a: b2ff uxtb r7, r7 } int32_t yn; /*x neightboor*/ lv_opa_t yr; /*x mix ratio*/ if(ys_fract < 0x70) { eb2c: 2b6f cmp r3, #111 ; 0x6f eb2e: dd00 ble.n eb32 <_lv_img_buf_transform_anti_alias+0x36> eb30: e087 b.n ec42 <_lv_img_buf_transform_anti_alias+0x146> yn = - 1; if(dsc->tmp.ys_int + yn < 0) yn = 0; eb32: 233e movs r3, #62 ; 0x3e eb34: 5ee2 ldrsh r2, [r4, r3] eb36: 4252 negs r2, r2 eb38: 17d3 asrs r3, r2, #31 eb3a: 4698 mov r8, r3 yr = ys_fract + 0x80; eb3c: 3e80 subs r6, #128 ; 0x80 eb3e: b2f6 uxtb r6, r6 else { yn = 0; yr = 0xFF; } lv_color_t c00 = dsc->res.color; eb40: 7d25 ldrb r5, [r4, #20] eb42: 06ed lsls r5, r5, #27 eb44: 0eeb lsrs r3, r5, #27 eb46: 9300 str r3, [sp, #0] eb48: 8aa3 ldrh r3, [r4, #20] eb4a: 055b lsls r3, r3, #21 eb4c: 0e9b lsrs r3, r3, #26 eb4e: 9301 str r3, [sp, #4] eb50: 7d63 ldrb r3, [r4, #21] eb52: 08db lsrs r3, r3, #3 eb54: 9302 str r3, [sp, #8] lv_color_t c01; lv_color_t c10; lv_color_t c11; lv_opa_t a00 = dsc->res.opa; eb56: 7da3 ldrb r3, [r4, #22] eb58: 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) { eb5a: 2334 movs r3, #52 ; 0x34 eb5c: 5ce3 ldrb r3, [r4, r3] eb5e: 4699 mov r9, r3 eb60: 075b lsls r3, r3, #29 eb62: d400 bmi.n eb66 <_lv_img_buf_transform_anti_alias+0x6a> eb64: e081 b.n ec6a <_lv_img_buf_transform_anti_alias+0x16e> const uint8_t * src_u8 = dsc->cfg.src; eb66: 6823 ldr r3, [r4, #0] _lv_memcpy_small(&c01, &src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn], sizeof(lv_color_t)); eb68: 2244 movs r2, #68 ; 0x44 eb6a: 5ca2 ldrb r2, [r4, r2] eb6c: 4694 mov ip, r2 eb6e: 4351 muls r1, r2 eb70: 6c22 ldr r2, [r4, #64] ; 0x40 eb72: 4692 mov sl, r2 eb74: 4451 add r1, sl eb76: 1858 adds r0, r3, r1 eb78: aa09 add r2, sp, #36 ; 0x24 eb7a: 7805 ldrb r5, [r0, #0] eb7c: 7015 strb r5, [r2, #0] eb7e: 7840 ldrb r0, [r0, #1] eb80: 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)); eb82: 2004 movs r0, #4 eb84: 5e22 ldrsh r2, [r4, r0] eb86: 4660 mov r0, ip eb88: 4342 muls r2, r0 eb8a: 4640 mov r0, r8 eb8c: 4350 muls r0, r2 eb8e: 0002 movs r2, r0 eb90: 6c20 ldr r0, [r4, #64] ; 0x40 eb92: 4680 mov r8, r0 eb94: 4490 add r8, r2 eb96: 469a mov sl, r3 eb98: 44c2 add sl, r8 eb9a: a808 add r0, sp, #32 eb9c: 4655 mov r5, sl eb9e: 782d ldrb r5, [r5, #0] eba0: 7005 strb r5, [r0, #0] eba2: 4655 mov r5, sl eba4: 786d ldrb r5, [r5, #1] eba6: 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], eba8: 188a adds r2, r1, r2 ebaa: 1898 adds r0, r3, r2 ebac: 4682 mov sl, r0 ebae: a807 add r0, sp, #28 ebb0: 4655 mov r5, sl ebb2: 782d ldrb r5, [r5, #0] ebb4: 7005 strb r5, [r0, #0] ebb6: 4655 mov r5, sl ebb8: 786d ldrb r5, [r5, #1] ebba: 7045 strb r5, [r0, #1] sizeof(lv_color_t)); if(dsc->tmp.has_alpha) { ebbc: 4648 mov r0, r9 ebbe: 0780 lsls r0, r0, #30 ebc0: d400 bmi.n ebc4 <_lv_img_buf_transform_anti_alias+0xc8> ebc2: e084 b.n ecce <_lv_img_buf_transform_anti_alias+0x1d2> ebc4: 4660 mov r0, ip ebc6: 3801 subs r0, #1 a10 = src_u8[dsc->tmp.pxi + dsc->tmp.px_size * xn + dsc->tmp.px_size - 1]; ebc8: 181b adds r3, r3, r0 ebca: 5c59 ldrb r1, [r3, r1] ebcc: 4689 mov r9, r1 a01 = src_u8[dsc->tmp.pxi + dsc->cfg.src_w * dsc->tmp.px_size * yn + dsc->tmp.px_size - 1]; ebce: 4641 mov r1, r8 ebd0: 5c59 ldrb r1, [r3, r1] ebd2: 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]; ebd4: 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; ebd6: 21ff movs r1, #255 ; 0xff ebd8: 1bcb subs r3, r1, r7 ebda: 464a mov r2, r9 ebdc: 435a muls r2, r3 ebde: 4694 mov ip, r2 ebe0: 9a03 ldr r2, [sp, #12] ebe2: 437a muls r2, r7 ebe4: 4462 add r2, ip ebe6: 1212 asrs r2, r2, #8 lv_opa_t a1 = (a01 * xr + (a11 * (255 - xr))) >> 8; ebe8: 4343 muls r3, r0 ebea: 4655 mov r5, sl ebec: 437d muls r5, r7 ebee: 46ac mov ip, r5 ebf0: 4463 add r3, ip ebf2: 121b asrs r3, r3, #8 ebf4: b2dd uxtb r5, r3 ebf6: 46ac mov ip, r5 dsc->res.opa = (a0 * yr + (a1 * (255 - yr))) >> 8; ebf8: 400b ands r3, r1 ebfa: 1b8d subs r5, r1, r6 ebfc: 436b muls r3, r5 ebfe: 4011 ands r1, r2 ec00: 4371 muls r1, r6 ec02: 185b adds r3, r3, r1 ec04: 121b asrs r3, r3, #8 ec06: 75a3 strb r3, [r4, #22] if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; ec08: b2d2 uxtb r2, r2 ec0a: 2a05 cmp r2, #5 ec0c: d900 bls.n ec10 <_lv_img_buf_transform_anti_alias+0x114> ec0e: e0dc b.n edca <_lv_img_buf_transform_anti_alias+0x2ce> ec10: 2300 movs r3, #0 ec12: 4662 mov r2, ip if(a0 <= LV_OPA_MIN) yr = LV_OPA_TRANSP; ec14: 2600 movs r6, #0 if(a0 <= LV_OPA_MIN && a1 <= LV_OPA_MIN) return false; ec16: 2a05 cmp r2, #5 ec18: d900 bls.n ec1c <_lv_img_buf_transform_anti_alias+0x120> ec1a: e0da b.n edd2 <_lv_img_buf_transform_anti_alias+0x2d6> ec1c: e0ab b.n ed76 <_lv_img_buf_transform_anti_alias+0x27a> else if(xs_fract > 0x90) { ec1e: 2a90 cmp r2, #144 ; 0x90 ec20: dd0c ble.n ec3c <_lv_img_buf_transform_anti_alias+0x140> if(dsc->tmp.xs_int + xn >= dsc->cfg.src_w) xn = 0; ec22: 213c movs r1, #60 ; 0x3c ec24: 5e42 ldrsh r2, [r0, r1] ec26: 3201 adds r2, #1 ec28: 2104 movs r1, #4 ec2a: 5e40 ldrsh r0, [r0, r1] ec2c: 2101 movs r1, #1 ec2e: 4282 cmp r2, r0 ec30: db00 blt.n ec34 <_lv_img_buf_transform_anti_alias+0x138> ec32: 2100 movs r1, #0 xr = (0xFF - xs_fract) + 0x80; ec34: 227f movs r2, #127 ; 0x7f ec36: 1bd7 subs r7, r2, r7 ec38: b2ff uxtb r7, r7 ec3a: e777 b.n eb2c <_lv_img_buf_transform_anti_alias+0x30> xr = 0xFF; ec3c: 27ff movs r7, #255 ; 0xff xn = 0; ec3e: 2100 movs r1, #0 ec40: e774 b.n eb2c <_lv_img_buf_transform_anti_alias+0x30> else if(ys_fract > 0x90) { ec42: 2b90 cmp r3, #144 ; 0x90 ec44: dd0d ble.n ec62 <_lv_img_buf_transform_anti_alias+0x166> if(dsc->tmp.ys_int + yn >= dsc->cfg.src_h) yn = 0; ec46: 223e movs r2, #62 ; 0x3e ec48: 5ea3 ldrsh r3, [r4, r2] ec4a: 3301 adds r3, #1 ec4c: 2206 movs r2, #6 ec4e: 5ea0 ldrsh r0, [r4, r2] ec50: 2201 movs r2, #1 ec52: 4283 cmp r3, r0 ec54: db00 blt.n ec58 <_lv_img_buf_transform_anti_alias+0x15c> ec56: 2200 movs r2, #0 yn = 1; ec58: 4690 mov r8, r2 yr = (0xFF - ys_fract) + 0x80; ec5a: 237f movs r3, #127 ; 0x7f ec5c: 1b9e subs r6, r3, r6 ec5e: b2f6 uxtb r6, r6 ec60: e76e b.n eb40 <_lv_img_buf_transform_anti_alias+0x44> yr = 0xFF; ec62: 26ff movs r6, #255 ; 0xff yn = 0; ec64: 2300 movs r3, #0 ec66: 4698 mov r8, r3 ec68: e76a b.n eb40 <_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); ec6a: 2318 movs r3, #24 ec6c: 469c mov ip, r3 ec6e: 44a4 add ip, r4 ec70: 4665 mov r5, ip ec72: b28b uxth r3, r1 ec74: 469b mov fp, r3 ec76: 8a23 ldrh r3, [r4, #16] ec78: 213e movs r1, #62 ; 0x3e ec7a: 5e62 ldrsh r2, [r4, r1] ec7c: 8fa1 ldrh r1, [r4, #60] ; 0x3c ec7e: 4459 add r1, fp ec80: b209 sxth r1, r1 ec82: 9504 str r5, [sp, #16] ec84: 4660 mov r0, ip ec86: 4daf ldr r5, [pc, #700] ; (ef44 <_lv_img_buf_transform_anti_alias+0x448>) ec88: 46a9 mov r9, r5 ec8a: 47a8 blx r5 ec8c: ab09 add r3, sp, #36 ; 0x24 ec8e: 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); ec90: 4642 mov r2, r8 ec92: 466b mov r3, sp ec94: 82da strh r2, [r3, #22] ec96: b292 uxth r2, r2 ec98: 4690 mov r8, r2 ec9a: 8a23 ldrh r3, [r4, #16] ec9c: 8fe2 ldrh r2, [r4, #62] ; 0x3e ec9e: 4442 add r2, r8 eca0: b212 sxth r2, r2 eca2: 203c movs r0, #60 ; 0x3c eca4: 5e21 ldrsh r1, [r4, r0] eca6: 9d04 ldr r5, [sp, #16] eca8: 0028 movs r0, r5 ecaa: 47c8 blx r9 ecac: ab08 add r3, sp, #32 ecae: 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); ecb0: 8a23 ldrh r3, [r4, #16] ecb2: 8fe2 ldrh r2, [r4, #62] ; 0x3e ecb4: 4442 add r2, r8 ecb6: b212 sxth r2, r2 ecb8: 8fa1 ldrh r1, [r4, #60] ; 0x3c ecba: 4459 add r1, fp ecbc: b209 sxth r1, r1 ecbe: 0028 movs r0, r5 ecc0: 47c8 blx r9 ecc2: ab07 add r3, sp, #28 ecc4: 8018 strh r0, [r3, #0] if(dsc->tmp.has_alpha) { ecc6: 2334 movs r3, #52 ; 0x34 ecc8: 5ce3 ldrb r3, [r4, r3] ecca: 079b lsls r3, r3, #30 eccc: d45b bmi.n ed86 <_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; ecce: 23ff movs r3, #255 ; 0xff ecd0: 75a3 strb r3, [r4, #22] xr0 = xr; ecd2: 003b movs r3, r7 } lv_color_t c0; if(xr0 == LV_OPA_TRANSP) c0 = c01; ecd4: 2b00 cmp r3, #0 ecd6: d000 beq.n ecda <_lv_img_buf_transform_anti_alias+0x1de> ecd8: e08d b.n edf6 <_lv_img_buf_transform_anti_alias+0x2fa> ecda: ab09 add r3, sp, #36 ; 0x24 ecdc: 781d ldrb r5, [r3, #0] ecde: 06ed lsls r5, r5, #27 ece0: 0eea lsrs r2, r5, #27 ece2: 9200 str r2, [sp, #0] ece4: 881a ldrh r2, [r3, #0] ece6: 0552 lsls r2, r2, #21 ece8: 0e92 lsrs r2, r2, #26 ecea: 9201 str r2, [sp, #4] ecec: 785b ldrb r3, [r3, #1] ecee: 08db lsrs r3, r3, #3 ecf0: 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; ecf2: 2f00 cmp r7, #0 ecf4: d000 beq.n ecf8 <_lv_img_buf_transform_anti_alias+0x1fc> ecf6: e0b7 b.n ee68 <_lv_img_buf_transform_anti_alias+0x36c> ecf8: aa07 add r2, sp, #28 ecfa: 7817 ldrb r7, [r2, #0] ecfc: 06ff lsls r7, r7, #27 ecfe: 0eff lsrs r7, r7, #27 ed00: 8813 ldrh r3, [r2, #0] ed02: 055b lsls r3, r3, #21 ed04: 0e9b lsrs r3, r3, #26 ed06: 7852 ldrb r2, [r2, #1] ed08: 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; ed0a: 2e00 cmp r6, #0 ed0c: d100 bne.n ed10 <_lv_img_buf_transform_anti_alias+0x214> ed0e: e0f1 b.n eef4 <_lv_img_buf_transform_anti_alias+0x3f8> else if(yr == LV_OPA_COVER) dsc->res.color = c0; ed10: 2eff cmp r6, #255 ; 0xff ed12: d100 bne.n ed16 <_lv_img_buf_transform_anti_alias+0x21a> ed14: e100 b.n ef18 <_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))); ed16: 21ff movs r1, #255 ; 0xff ed18: 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))); ed1a: 9d00 ldr r5, [sp, #0] ed1c: 4375 muls r5, r6 ed1e: 434f muls r7, r1 ed20: 19ef adds r7, r5, r7 ed22: 023d lsls r5, r7, #8 ed24: 19ed adds r5, r5, r7 ed26: 01ed lsls r5, r5, #7 ed28: 19ed adds r5, r5, r7 else dsc->res.color = lv_color_mix(c0, c1, yr); ed2a: 012d lsls r5, r5, #4 ed2c: 0eed lsrs r5, r5, #27 ed2e: 7d20 ldrb r0, [r4, #20] ed30: 271f movs r7, #31 ed32: 43b8 bics r0, r7 ed34: 4305 orrs r5, r0 ed36: 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))); ed38: 9801 ldr r0, [sp, #4] ed3a: 4370 muls r0, r6 ed3c: 434b muls r3, r1 ed3e: 18c0 adds r0, r0, r3 ed40: 0203 lsls r3, r0, #8 ed42: 181b adds r3, r3, r0 ed44: 01db lsls r3, r3, #7 ed46: 181b adds r3, r3, r0 ed48: 00db lsls r3, r3, #3 ed4a: 0e9b lsrs r3, r3, #26 ed4c: 015b lsls r3, r3, #5 ed4e: 8aa0 ldrh r0, [r4, #20] ed50: 4d7d ldr r5, [pc, #500] ; (ef48 <_lv_img_buf_transform_anti_alias+0x44c>) ed52: 4028 ands r0, r5 ed54: 4303 orrs r3, r0 ed56: 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))); ed58: 9802 ldr r0, [sp, #8] ed5a: 4346 muls r6, r0 ed5c: 434a muls r2, r1 ed5e: 18b6 adds r6, r6, r2 ed60: 0232 lsls r2, r6, #8 ed62: 1992 adds r2, r2, r6 ed64: 01d2 lsls r2, r2, #7 ed66: 1996 adds r6, r2, r6 ed68: 0df6 lsrs r6, r6, #23 ed6a: 00f6 lsls r6, r6, #3 ed6c: 055b lsls r3, r3, #21 ed6e: 0f5b lsrs r3, r3, #29 ed70: 431e orrs r6, r3 ed72: 7566 strb r6, [r4, #21] return true; ed74: 2301 movs r3, #1 } ed76: 0018 movs r0, r3 ed78: b00b add sp, #44 ; 0x2c ed7a: bc3c pop {r2, r3, r4, r5} ed7c: 4690 mov r8, r2 ed7e: 4699 mov r9, r3 ed80: 46a2 mov sl, r4 ed82: 46ab mov fp, r5 ed84: 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); ed86: 233e movs r3, #62 ; 0x3e ed88: 5ee2 ldrsh r2, [r4, r3] ed8a: 8fa1 ldrh r1, [r4, #60] ; 0x3c ed8c: 4459 add r1, fp ed8e: b209 sxth r1, r1 ed90: 9d04 ldr r5, [sp, #16] ed92: 0028 movs r0, r5 ed94: 4b6d ldr r3, [pc, #436] ; (ef4c <_lv_img_buf_transform_anti_alias+0x450>) ed96: 4798 blx r3 ed98: 4681 mov r9, r0 a01 = lv_img_buf_get_px_alpha(&dsc->tmp.img_dsc, dsc->tmp.xs_int, dsc->tmp.ys_int + yn); ed9a: 8fe2 ldrh r2, [r4, #62] ; 0x3e ed9c: 4442 add r2, r8 ed9e: b212 sxth r2, r2 eda0: 233c movs r3, #60 ; 0x3c eda2: 5ee1 ldrsh r1, [r4, r3] eda4: 0028 movs r0, r5 eda6: 4b69 ldr r3, [pc, #420] ; (ef4c <_lv_img_buf_transform_anti_alias+0x450>) eda8: 4798 blx r3 edaa: 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); edac: 8fe2 ldrh r2, [r4, #62] ; 0x3e edae: 4442 add r2, r8 edb0: b212 sxth r2, r2 edb2: 8fa1 ldrh r1, [r4, #60] ; 0x3c edb4: 4459 add r1, fp edb6: b209 sxth r1, r1 edb8: 0028 movs r0, r5 edba: 4b64 ldr r3, [pc, #400] ; (ef4c <_lv_img_buf_transform_anti_alias+0x450>) edbc: 4798 blx r3 if(dsc->tmp.has_alpha) { edbe: 2334 movs r3, #52 ; 0x34 edc0: 5ce3 ldrb r3, [r4, r3] edc2: 079b lsls r3, r3, #30 edc4: d500 bpl.n edc8 <_lv_img_buf_transform_anti_alias+0x2cc> edc6: e706 b.n ebd6 <_lv_img_buf_transform_anti_alias+0xda> edc8: e781 b.n ecce <_lv_img_buf_transform_anti_alias+0x1d2> if(a1 <= LV_OPA_MIN) yr = LV_OPA_COVER; edca: 4663 mov r3, ip edcc: 2b05 cmp r3, #5 edce: d800 bhi.n edd2 <_lv_img_buf_transform_anti_alias+0x2d6> edd0: 26ff movs r6, #255 ; 0xff lv_opa_t xr0 = xr; edd2: 003b movs r3, r7 if(a00 <= LV_OPA_MIN) xr0 = LV_OPA_TRANSP; edd4: 9a03 ldr r2, [sp, #12] edd6: 2a05 cmp r2, #5 edd8: d800 bhi.n eddc <_lv_img_buf_transform_anti_alias+0x2e0> edda: 2300 movs r3, #0 if(a10 <= LV_OPA_MIN) xr0 = LV_OPA_COVER; eddc: 464a mov r2, r9 edde: 2a05 cmp r2, #5 ede0: d800 bhi.n ede4 <_lv_img_buf_transform_anti_alias+0x2e8> ede2: 23ff movs r3, #255 ; 0xff if(a01 <= LV_OPA_MIN) xr1 = LV_OPA_TRANSP; ede4: 4652 mov r2, sl ede6: 2a05 cmp r2, #5 ede8: d800 bhi.n edec <_lv_img_buf_transform_anti_alias+0x2f0> edea: 2700 movs r7, #0 if(a11 <= LV_OPA_MIN) xr1 = LV_OPA_COVER; edec: 2805 cmp r0, #5 edee: d900 bls.n edf2 <_lv_img_buf_transform_anti_alias+0x2f6> edf0: e770 b.n ecd4 <_lv_img_buf_transform_anti_alias+0x1d8> edf2: 27ff movs r7, #255 ; 0xff edf4: e76e b.n ecd4 <_lv_img_buf_transform_anti_alias+0x1d8> else if(xr0 == LV_OPA_COVER) c0 = c00; edf6: 2bff cmp r3, #255 ; 0xff edf8: d100 bne.n edfc <_lv_img_buf_transform_anti_alias+0x300> edfa: e77a b.n ecf2 <_lv_img_buf_transform_anti_alias+0x1f6> edfc: 22ff movs r2, #255 ; 0xff edfe: 1ad2 subs r2, r2, r3 ee00: a809 add r0, sp, #36 ; 0x24 ee02: 7841 ldrb r1, [r0, #1] ee04: 08c9 lsrs r1, r1, #3 ee06: 4351 muls r1, r2 ee08: 9d02 ldr r5, [sp, #8] ee0a: 435d muls r5, r3 ee0c: 46ac mov ip, r5 ee0e: 448c add ip, r1 ee10: 4661 mov r1, ip ee12: 0209 lsls r1, r1, #8 ee14: 4461 add r1, ip ee16: 01c9 lsls r1, r1, #7 ee18: 4461 add r1, ip ee1a: 0dc9 lsrs r1, r1, #23 ee1c: 251f movs r5, #31 ee1e: 46ac mov ip, r5 ee20: 400d ands r5, r1 ee22: 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))); ee24: 8801 ldrh r1, [r0, #0] ee26: 0549 lsls r1, r1, #21 ee28: 0e89 lsrs r1, r1, #26 ee2a: 4351 muls r1, r2 ee2c: 9d01 ldr r5, [sp, #4] ee2e: 435d muls r5, r3 ee30: 46a8 mov r8, r5 ee32: 4441 add r1, r8 ee34: 020d lsls r5, r1, #8 ee36: 46a8 mov r8, r5 ee38: 4488 add r8, r1 ee3a: 4645 mov r5, r8 ee3c: 01ed lsls r5, r5, #7 ee3e: 46a8 mov r8, r5 ee40: 4441 add r1, r8 ee42: 00c9 lsls r1, r1, #3 ee44: 0e89 lsrs r1, r1, #26 ee46: 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))); ee48: 7801 ldrb r1, [r0, #0] ee4a: 06c9 lsls r1, r1, #27 ee4c: 0ec9 lsrs r1, r1, #27 ee4e: 434a muls r2, r1 ee50: 9d00 ldr r5, [sp, #0] ee52: 435d muls r5, r3 ee54: 1952 adds r2, r2, r5 ee56: 0215 lsls r5, r2, #8 ee58: 18ad adds r5, r5, r2 ee5a: 01ed lsls r5, r5, #7 ee5c: 18ad adds r5, r5, r2 ee5e: 0ded lsrs r5, r5, #23 ee60: 4663 mov r3, ip ee62: 401d ands r5, r3 ee64: 9500 str r5, [sp, #0] ee66: e744 b.n ecf2 <_lv_img_buf_transform_anti_alias+0x1f6> else if(xr1 == LV_OPA_COVER) c1 = c10; ee68: 2fff cmp r7, #255 ; 0xff ee6a: d039 beq.n eee0 <_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))); ee6c: 23ff movs r3, #255 ; 0xff ee6e: 1bdb subs r3, r3, r7 ee70: 4698 mov r8, r3 ee72: a808 add r0, sp, #32 ee74: 7842 ldrb r2, [r0, #1] ee76: 08d2 lsrs r2, r2, #3 ee78: 437a muls r2, r7 ee7a: a907 add r1, sp, #28 ee7c: 784b ldrb r3, [r1, #1] ee7e: 08db lsrs r3, r3, #3 ee80: 4645 mov r5, r8 ee82: 436b muls r3, r5 ee84: 18d3 adds r3, r2, r3 ee86: 021a lsls r2, r3, #8 ee88: 18d2 adds r2, r2, r3 ee8a: 01d2 lsls r2, r2, #7 ee8c: 18d2 adds r2, r2, r3 ee8e: 0dd2 lsrs r2, r2, #23 ee90: 231f movs r3, #31 ee92: 469c mov ip, r3 ee94: 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))); ee96: 8803 ldrh r3, [r0, #0] ee98: 055b lsls r3, r3, #21 ee9a: 0e9b lsrs r3, r3, #26 ee9c: 437b muls r3, r7 ee9e: 4699 mov r9, r3 eea0: 880b ldrh r3, [r1, #0] eea2: 055b lsls r3, r3, #21 eea4: 0e9b lsrs r3, r3, #26 eea6: 436b muls r3, r5 eea8: 444b add r3, r9 eeaa: 021d lsls r5, r3, #8 eeac: 46a9 mov r9, r5 eeae: 4499 add r9, r3 eeb0: 464d mov r5, r9 eeb2: 01ed lsls r5, r5, #7 eeb4: 46a9 mov r9, r5 eeb6: 444b add r3, r9 eeb8: 00db lsls r3, r3, #3 eeba: 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))); eebc: 7800 ldrb r0, [r0, #0] eebe: 06c0 lsls r0, r0, #27 eec0: 0ec0 lsrs r0, r0, #27 eec2: 4347 muls r7, r0 eec4: 7809 ldrb r1, [r1, #0] eec6: 06c9 lsls r1, r1, #27 eec8: 0ec9 lsrs r1, r1, #27 eeca: 4640 mov r0, r8 eecc: 4341 muls r1, r0 eece: 1879 adds r1, r7, r1 eed0: 020f lsls r7, r1, #8 eed2: 187f adds r7, r7, r1 eed4: 01ff lsls r7, r7, #7 eed6: 187f adds r7, r7, r1 eed8: 0dff lsrs r7, r7, #23 eeda: 4661 mov r1, ip eedc: 400f ands r7, r1 eede: e714 b.n ed0a <_lv_img_buf_transform_anti_alias+0x20e> eee0: aa08 add r2, sp, #32 eee2: 7817 ldrb r7, [r2, #0] eee4: 06ff lsls r7, r7, #27 eee6: 0eff lsrs r7, r7, #27 eee8: 8813 ldrh r3, [r2, #0] eeea: 055b lsls r3, r3, #21 eeec: 0e9b lsrs r3, r3, #26 eeee: 7852 ldrb r2, [r2, #1] eef0: 08d2 lsrs r2, r2, #3 eef2: e70a b.n ed0a <_lv_img_buf_transform_anti_alias+0x20e> if(yr == LV_OPA_TRANSP) dsc->res.color = c1; eef4: 7d25 ldrb r5, [r4, #20] eef6: 211f movs r1, #31 eef8: 438d bics r5, r1 eefa: 432f orrs r7, r5 eefc: 7527 strb r7, [r4, #20] eefe: 0159 lsls r1, r3, #5 ef00: 8aa3 ldrh r3, [r4, #20] ef02: 4811 ldr r0, [pc, #68] ; (ef48 <_lv_img_buf_transform_anti_alias+0x44c>) ef04: 4003 ands r3, r0 ef06: 430b orrs r3, r1 ef08: 82a3 strh r3, [r4, #20] ef0a: 00d2 lsls r2, r2, #3 ef0c: 055b lsls r3, r3, #21 ef0e: 0f5b lsrs r3, r3, #29 ef10: 431a orrs r2, r3 ef12: 7562 strb r2, [r4, #21] return true; ef14: 2301 movs r3, #1 ef16: e72e b.n ed76 <_lv_img_buf_transform_anti_alias+0x27a> else if(yr == LV_OPA_COVER) dsc->res.color = c0; ef18: 7d23 ldrb r3, [r4, #20] ef1a: 221f movs r2, #31 ef1c: 4393 bics r3, r2 ef1e: 9d00 ldr r5, [sp, #0] ef20: 431d orrs r5, r3 ef22: 7525 strb r5, [r4, #20] ef24: 9b01 ldr r3, [sp, #4] ef26: 015a lsls r2, r3, #5 ef28: 8aa3 ldrh r3, [r4, #20] ef2a: 4907 ldr r1, [pc, #28] ; (ef48 <_lv_img_buf_transform_anti_alias+0x44c>) ef2c: 400b ands r3, r1 ef2e: 4313 orrs r3, r2 ef30: 82a3 strh r3, [r4, #20] ef32: 9a02 ldr r2, [sp, #8] ef34: 00d6 lsls r6, r2, #3 ef36: 055b lsls r3, r3, #21 ef38: 0f5b lsrs r3, r3, #29 ef3a: 4333 orrs r3, r6 ef3c: 7563 strb r3, [r4, #21] return true; ef3e: 2301 movs r3, #1 ef40: e719 b.n ed76 <_lv_img_buf_transform_anti_alias+0x27a> ef42: 46c0 nop ; (mov r8, r8) ef44: 0000e5d5 .word 0x0000e5d5 ef48: fffff81f .word 0xfffff81f ef4c: 0000e6f5 .word 0x0000e6f5 0000ef50 <_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) { ef50: b5f0 push {r4, r5, r6, r7, lr} ef52: 46ce mov lr, r9 ef54: 4647 mov r7, r8 ef56: b580 push {r7, lr} ef58: b085 sub sp, #20 ef5a: 4680 mov r8, r0 ef5c: 466b mov r3, sp ef5e: 81d9 strh r1, [r3, #14] if(entry_cnt == 0) { ef60: 4b61 ldr r3, [pc, #388] ; (f0e8 <_lv_img_cache_open+0x198>) ef62: 8819 ldrh r1, [r3, #0] ef64: 2900 cmp r1, #0 ef66: d00c beq.n ef82 <_lv_img_cache_open+0x32> 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); ef68: 4b60 ldr r3, [pc, #384] ; (f0ec <_lv_img_cache_open+0x19c>) ef6a: 681f ldr r7, [r3, #0] ef6c: 003b movs r3, r7 ef6e: 3320 adds r3, #32 ef70: 3901 subs r1, #1 ef72: b28a uxth r2, r1 ef74: 00d1 lsls r1, r2, #3 ef76: 1889 adds r1, r1, r2 ef78: 0089 lsls r1, r1, #2 ef7a: 3144 adds r1, #68 ; 0x44 ef7c: 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) { ef7e: 485c ldr r0, [pc, #368] ; (f0f0 <_lv_img_cache_open+0x1a0>) ef80: e00c b.n ef9c <_lv_img_cache_open+0x4c> LV_LOG_WARN("lv_img_cache_open: the cache size is 0"); ef82: 4b5c ldr r3, [pc, #368] ; (f0f4 <_lv_img_cache_open+0x1a4>) ef84: 9300 str r3, [sp, #0] ef86: 4b5c ldr r3, [pc, #368] ; (f0f8 <_lv_img_cache_open+0x1a8>) ef88: 2244 movs r2, #68 ; 0x44 ef8a: 495c ldr r1, [pc, #368] ; (f0fc <_lv_img_cache_open+0x1ac>) ef8c: 2002 movs r0, #2 ef8e: 4c5c ldr r4, [pc, #368] ; (f100 <_lv_img_cache_open+0x1b0>) ef90: 47a0 blx r4 return NULL; ef92: 2400 movs r4, #0 ef94: e034 b.n f000 <_lv_img_cache_open+0xb0> ef96: 3324 adds r3, #36 ; 0x24 for(i = 0; i < entry_cnt; i++) { ef98: 428b cmp r3, r1 ef9a: d005 beq.n efa8 <_lv_img_cache_open+0x58> if(cache[i].life > INT32_MIN + LV_IMG_CACHE_AGING) { ef9c: 681a ldr r2, [r3, #0] ef9e: 4282 cmp r2, r0 efa0: dbf9 blt.n ef96 <_lv_img_cache_open+0x46> cache[i].life -= LV_IMG_CACHE_AGING; efa2: 3a01 subs r2, #1 efa4: 601a str r2, [r3, #0] efa6: e7f6 b.n ef96 <_lv_img_cache_open+0x46> efa8: 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); efaa: 4e56 ldr r6, [pc, #344] ; (f104 <_lv_img_cache_open+0x1b4>) for(i = 0; i < entry_cnt; i++) { efac: 4b4e ldr r3, [pc, #312] ; (f0e8 <_lv_img_cache_open+0x198>) efae: 4699 mov r9, r3 efb0: e007 b.n efc2 <_lv_img_cache_open+0x72> 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) { efb2: 2801 cmp r0, #1 efb4: d02a beq.n f00c <_lv_img_cache_open+0xbc> for(i = 0; i < entry_cnt; i++) { efb6: 3501 adds r5, #1 efb8: b2ad uxth r5, r5 efba: 464b mov r3, r9 efbc: 881b ldrh r3, [r3, #0] efbe: 42ab cmp r3, r5 efc0: d92f bls.n f022 <_lv_img_cache_open+0xd2> lv_img_src_t src_type = lv_img_src_get_type(cache[i].dec_dsc.src); efc2: 00ec lsls r4, r5, #3 efc4: 1964 adds r4, r4, r5 efc6: 00a4 lsls r4, r4, #2 efc8: 193c adds r4, r7, r4 efca: 6860 ldr r0, [r4, #4] efcc: 47b0 blx r6 if(src_type == LV_IMG_SRC_VARIABLE) { efce: 2800 cmp r0, #0 efd0: d1ef bne.n efb2 <_lv_img_cache_open+0x62> if(cache[i].dec_dsc.src == src && cache[i].dec_dsc.color.full == color.full) match = true; efd2: 6863 ldr r3, [r4, #4] efd4: 4543 cmp r3, r8 efd6: d1ee bne.n efb6 <_lv_img_cache_open+0x66> efd8: 8920 ldrh r0, [r4, #8] efda: 466b mov r3, sp efdc: 89db ldrh r3, [r3, #14] efde: 1ac0 subs r0, r0, r3 efe0: 4242 negs r2, r0 efe2: 4142 adcs r2, r0 efe4: b2d0 uxtb r0, r2 if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; } if(match) { efe6: 2800 cmp r0, #0 efe8: d0e5 beq.n efb6 <_lv_img_cache_open+0x66> /* 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; efea: 6a23 ldr r3, [r4, #32] efec: 6962 ldr r2, [r4, #20] efee: 4694 mov ip, r2 eff0: 4463 add r3, ip if(cached_src->life > LV_IMG_CACHE_LIFE_LIMIT) cached_src->life = LV_IMG_CACHE_LIFE_LIMIT; eff2: 22fa movs r2, #250 ; 0xfa eff4: 0092 lsls r2, r2, #2 eff6: 4293 cmp r3, r2 eff8: dd11 ble.n f01e <_lv_img_cache_open+0xce> effa: 6222 str r2, [r4, #32] break; } } /*The image is not cached then cache it now*/ if(cached_src == NULL) { effc: 2c00 cmp r4, #0 effe: d010 beq.n f022 <_lv_img_cache_open+0xd2> if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; } return cached_src; } f000: 0020 movs r0, r4 f002: b005 add sp, #20 f004: bc0c pop {r2, r3} f006: 4690 mov r8, r2 f008: 4699 mov r9, r3 f00a: bdf0 pop {r4, r5, r6, r7, pc} if(strcmp(cache[i].dec_dsc.src, src) == 0) match = true; f00c: 4641 mov r1, r8 f00e: 6860 ldr r0, [r4, #4] f010: 4b3d ldr r3, [pc, #244] ; (f108 <_lv_img_cache_open+0x1b8>) f012: 4798 blx r3 f014: 0003 movs r3, r0 f016: 4258 negs r0, r3 f018: 4158 adcs r0, r3 f01a: b2c0 uxtb r0, r0 f01c: e7e3 b.n efe6 <_lv_img_cache_open+0x96> cached_src->life += cached_src->dec_dsc.time_to_open * LV_IMG_CACHE_LIFE_GAIN; f01e: 6223 str r3, [r4, #32] f020: e7ec b.n effc <_lv_img_cache_open+0xac> for(i = 1; i < entry_cnt; i++) { f022: 4b31 ldr r3, [pc, #196] ; (f0e8 <_lv_img_cache_open+0x198>) f024: 881a ldrh r2, [r3, #0] f026: 2a01 cmp r2, #1 f028: d913 bls.n f052 <_lv_img_cache_open+0x102> f02a: 003b movs r3, r7 f02c: 3324 adds r3, #36 ; 0x24 f02e: 3a02 subs r2, #2 f030: b291 uxth r1, r2 f032: 00ca lsls r2, r1, #3 f034: 1852 adds r2, r2, r1 f036: 0092 lsls r2, r2, #2 f038: 3248 adds r2, #72 ; 0x48 f03a: 18ba adds r2, r7, r2 f03c: 003c movs r4, r7 f03e: e002 b.n f046 <_lv_img_cache_open+0xf6> f040: 3324 adds r3, #36 ; 0x24 f042: 4293 cmp r3, r2 f044: d006 beq.n f054 <_lv_img_cache_open+0x104> if(cache[i].life < cached_src->life) { f046: 6a19 ldr r1, [r3, #32] f048: 6a20 ldr r0, [r4, #32] f04a: 4281 cmp r1, r0 f04c: daf8 bge.n f040 <_lv_img_cache_open+0xf0> cached_src = &cache[i]; f04e: 001c movs r4, r3 f050: e7f6 b.n f040 <_lv_img_cache_open+0xf0> for(i = 1; i < entry_cnt; i++) { f052: 003c movs r4, r7 if(cached_src->dec_dsc.src) { f054: 6863 ldr r3, [r4, #4] f056: 2b00 cmp r3, #0 f058: d025 beq.n f0a6 <_lv_img_cache_open+0x156> lv_img_decoder_close(&cached_src->dec_dsc); f05a: 0020 movs r0, r4 f05c: 4b2b ldr r3, [pc, #172] ; (f10c <_lv_img_cache_open+0x1bc>) f05e: 4798 blx r3 LV_LOG_INFO("image draw: cache miss, close and reuse an entry"); f060: 4b2b ldr r3, [pc, #172] ; (f110 <_lv_img_cache_open+0x1c0>) f062: 9300 str r3, [sp, #0] f064: 4b24 ldr r3, [pc, #144] ; (f0f8 <_lv_img_cache_open+0x1a8>) f066: 2277 movs r2, #119 ; 0x77 f068: 4924 ldr r1, [pc, #144] ; (f0fc <_lv_img_cache_open+0x1ac>) f06a: 2001 movs r0, #1 f06c: 4d24 ldr r5, [pc, #144] ; (f100 <_lv_img_cache_open+0x1b0>) f06e: 47a8 blx r5 t_start = lv_tick_get(); f070: 4b28 ldr r3, [pc, #160] ; (f114 <_lv_img_cache_open+0x1c4>) f072: 4798 blx r3 f074: 0005 movs r5, r0 cached_src->dec_dsc.time_to_open = 0; f076: 2300 movs r3, #0 f078: 6163 str r3, [r4, #20] lv_res_t open_res = lv_img_decoder_open(&cached_src->dec_dsc, src, color); f07a: 466b mov r3, sp f07c: 89da ldrh r2, [r3, #14] f07e: 4641 mov r1, r8 f080: 0020 movs r0, r4 f082: 4b25 ldr r3, [pc, #148] ; (f118 <_lv_img_cache_open+0x1c8>) f084: 4798 blx r3 if(open_res == LV_RES_INV) { f086: 2800 cmp r0, #0 f088: d016 beq.n f0b8 <_lv_img_cache_open+0x168> cached_src->life = 0; f08a: 2300 movs r3, #0 f08c: 6223 str r3, [r4, #32] if(cached_src->dec_dsc.time_to_open == 0) { f08e: 6963 ldr r3, [r4, #20] f090: 2b00 cmp r3, #0 f092: d1b5 bne.n f000 <_lv_img_cache_open+0xb0> cached_src->dec_dsc.time_to_open = lv_tick_elaps(t_start); f094: 0028 movs r0, r5 f096: 4b21 ldr r3, [pc, #132] ; (f11c <_lv_img_cache_open+0x1cc>) f098: 4798 blx r3 f09a: 6160 str r0, [r4, #20] if(cached_src->dec_dsc.time_to_open == 0) cached_src->dec_dsc.time_to_open = 1; f09c: 2800 cmp r0, #0 f09e: d1af bne.n f000 <_lv_img_cache_open+0xb0> f0a0: 2301 movs r3, #1 f0a2: 6163 str r3, [r4, #20] f0a4: e7ac b.n f000 <_lv_img_cache_open+0xb0> LV_LOG_INFO("image draw: cache miss, cached to an empty entry"); f0a6: 4b1e ldr r3, [pc, #120] ; (f120 <_lv_img_cache_open+0x1d0>) f0a8: 9300 str r3, [sp, #0] f0aa: 4b13 ldr r3, [pc, #76] ; (f0f8 <_lv_img_cache_open+0x1a8>) f0ac: 227a movs r2, #122 ; 0x7a f0ae: 4913 ldr r1, [pc, #76] ; (f0fc <_lv_img_cache_open+0x1ac>) f0b0: 2001 movs r0, #1 f0b2: 4d13 ldr r5, [pc, #76] ; (f100 <_lv_img_cache_open+0x1b0>) f0b4: 47a8 blx r5 f0b6: e7db b.n f070 <_lv_img_cache_open+0x120> LV_LOG_WARN("Image draw cannot open the image resource"); f0b8: 4b1a ldr r3, [pc, #104] ; (f124 <_lv_img_cache_open+0x1d4>) f0ba: 9300 str r3, [sp, #0] f0bc: 4b0e ldr r3, [pc, #56] ; (f0f8 <_lv_img_cache_open+0x1a8>) f0be: 2283 movs r2, #131 ; 0x83 f0c0: 490e ldr r1, [pc, #56] ; (f0fc <_lv_img_cache_open+0x1ac>) f0c2: 3002 adds r0, #2 f0c4: 4d0e ldr r5, [pc, #56] ; (f100 <_lv_img_cache_open+0x1b0>) f0c6: 47a8 blx r5 lv_img_decoder_close(&cached_src->dec_dsc); f0c8: 0020 movs r0, r4 f0ca: 4b10 ldr r3, [pc, #64] ; (f10c <_lv_img_cache_open+0x1bc>) f0cc: 4798 blx r3 _lv_memset_00(&cached_src->dec_dsc, sizeof(lv_img_decoder_dsc_t)); f0ce: 2120 movs r1, #32 f0d0: 0020 movs r0, r4 f0d2: 4d15 ldr r5, [pc, #84] ; (f128 <_lv_img_cache_open+0x1d8>) f0d4: 47a8 blx r5 _lv_memset_00(cached_src, sizeof(lv_img_cache_entry_t)); f0d6: 2124 movs r1, #36 ; 0x24 f0d8: 0020 movs r0, r4 f0da: 47a8 blx r5 cached_src->life = INT32_MIN; /*Make the empty entry very "weak" to force its use */ f0dc: 2380 movs r3, #128 ; 0x80 f0de: 061b lsls r3, r3, #24 f0e0: 6223 str r3, [r4, #32] return NULL; f0e2: 2400 movs r4, #0 f0e4: e78c b.n f000 <_lv_img_cache_open+0xb0> f0e6: 46c0 nop ; (mov r8, r8) f0e8: 20002bc6 .word 0x20002bc6 f0ec: 20004de0 .word 0x20004de0 f0f0: 80000002 .word 0x80000002 f0f4: 00026554 .word 0x00026554 f0f8: 000264f0 .word 0x000264f0 f0fc: 0002651c .word 0x0002651c f100: 00012159 .word 0x00012159 f104: 00009589 .word 0x00009589 f108: 0001c6e5 .word 0x0001c6e5 f10c: 0000fd5d .word 0x0000fd5d f110: 0002657c .word 0x0002657c f114: 00010ef9 .word 0x00010ef9 f118: 0000fc75 .word 0x0000fc75 f11c: 00010f15 .word 0x00010f15 f120: 000265b0 .word 0x000265b0 f124: 000265e4 .word 0x000265e4 f128: 00012975 .word 0x00012975 0000f12c : * 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) { f12c: b5f8 push {r3, r4, r5, r6, r7, lr} f12e: 46d6 mov lr, sl f130: 4647 mov r7, r8 f132: b580 push {r7, lr} f134: 0007 movs r7, r0 lv_img_cache_entry_t * cache = LV_GC_ROOT(_lv_img_cache_array); f136: 4b15 ldr r3, [pc, #84] ; (f18c ) f138: 681b ldr r3, [r3, #0] f13a: 4698 mov r8, r3 uint16_t i; for(i = 0; i < entry_cnt; i++) { f13c: 4b14 ldr r3, [pc, #80] ; (f190 ) f13e: 881b ldrh r3, [r3, #0] f140: 2b00 cmp r3, #0 f142: d01e beq.n f182 f144: 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)); f146: 4b13 ldr r3, [pc, #76] ; (f194 ) f148: 469a mov sl, r3 for(i = 0; i < entry_cnt; i++) { f14a: 4e11 ldr r6, [pc, #68] ; (f190 ) f14c: e00f b.n f16e if(cache[i].dec_dsc.src != NULL) { f14e: 2b00 cmp r3, #0 f150: d002 beq.n f158 lv_img_decoder_close(&cache[i].dec_dsc); f152: 0020 movs r0, r4 f154: 4b10 ldr r3, [pc, #64] ; (f198 ) f156: 4798 blx r3 _lv_memset_00(&cache[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f158: 2120 movs r1, #32 f15a: 0020 movs r0, r4 f15c: 47d0 blx sl _lv_memset_00(&cache[i], sizeof(lv_img_cache_entry_t)); f15e: 2124 movs r1, #36 ; 0x24 f160: 0020 movs r0, r4 f162: 47d0 blx sl for(i = 0; i < entry_cnt; i++) { f164: 3501 adds r5, #1 f166: b2ad uxth r5, r5 f168: 8833 ldrh r3, [r6, #0] f16a: 42ab cmp r3, r5 f16c: d909 bls.n f182 if(cache[i].dec_dsc.src == src || src == NULL) { f16e: 00ec lsls r4, r5, #3 f170: 1964 adds r4, r4, r5 f172: 00a4 lsls r4, r4, #2 f174: 4444 add r4, r8 f176: 6863 ldr r3, [r4, #4] f178: 42bb cmp r3, r7 f17a: d0e8 beq.n f14e f17c: 2f00 cmp r7, #0 f17e: d1f1 bne.n f164 f180: e7e5 b.n f14e } } } f182: bc0c pop {r2, r3} f184: 4690 mov r8, r2 f186: 469a mov sl, r3 f188: bdf8 pop {r3, r4, r5, r6, r7, pc} f18a: 46c0 nop ; (mov r8, r8) f18c: 20004de0 .word 0x20004de0 f190: 20002bc6 .word 0x20002bc6 f194: 00012975 .word 0x00012975 f198: 0000fd5d .word 0x0000fd5d 0000f19c : { f19c: b5f0 push {r4, r5, r6, r7, lr} f19e: 46c6 mov lr, r8 f1a0: b500 push {lr} f1a2: b082 sub sp, #8 f1a4: 0004 movs r4, r0 if(LV_GC_ROOT(_lv_img_cache_array) != NULL) { f1a6: 4b24 ldr r3, [pc, #144] ; (f238 ) f1a8: 681b ldr r3, [r3, #0] f1aa: 2b00 cmp r3, #0 f1ac: d006 beq.n f1bc lv_img_cache_invalidate_src(NULL); f1ae: 2000 movs r0, #0 f1b0: 4b22 ldr r3, [pc, #136] ; (f23c ) f1b2: 4798 blx r3 lv_mem_free(LV_GC_ROOT(_lv_img_cache_array)); f1b4: 4b20 ldr r3, [pc, #128] ; (f238 ) f1b6: 6818 ldr r0, [r3, #0] f1b8: 4b21 ldr r3, [pc, #132] ; (f240 ) f1ba: 4798 blx r3 LV_GC_ROOT(_lv_img_cache_array) = lv_mem_alloc(sizeof(lv_img_cache_entry_t) * new_entry_cnt); f1bc: 00e0 lsls r0, r4, #3 f1be: 1900 adds r0, r0, r4 f1c0: 0080 lsls r0, r0, #2 f1c2: 4b20 ldr r3, [pc, #128] ; (f244 ) f1c4: 4798 blx r3 f1c6: 4b1c ldr r3, [pc, #112] ; (f238 ) f1c8: 6018 str r0, [r3, #0] LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f1ca: 4b1f ldr r3, [pc, #124] ; (f248 ) f1cc: 4798 blx r3 f1ce: 2800 cmp r0, #0 f1d0: d020 beq.n f214 if(LV_GC_ROOT(_lv_img_cache_array) == NULL) { f1d2: 4b19 ldr r3, [pc, #100] ; (f238 ) f1d4: 681b ldr r3, [r3, #0] f1d6: 2b00 cmp r3, #0 f1d8: d02a beq.n f230 entry_cnt = new_entry_cnt; f1da: 4b1c ldr r3, [pc, #112] ; (f24c ) f1dc: 801c strh r4, [r3, #0] for(i = 0; i < entry_cnt; i++) { f1de: 2c00 cmp r4, #0 f1e0: d014 beq.n f20c f1e2: 2400 movs r4, #0 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f1e4: 4f14 ldr r7, [pc, #80] ; (f238 ) f1e6: 4e1a ldr r6, [pc, #104] ; (f250 ) for(i = 0; i < entry_cnt; i++) { f1e8: 4698 mov r8, r3 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i].dec_dsc, sizeof(lv_img_decoder_dsc_t)); f1ea: 00e5 lsls r5, r4, #3 f1ec: 192d adds r5, r5, r4 f1ee: 00ad lsls r5, r5, #2 f1f0: 683b ldr r3, [r7, #0] f1f2: 1958 adds r0, r3, r5 f1f4: 2120 movs r1, #32 f1f6: 47b0 blx r6 _lv_memset_00(&LV_GC_ROOT(_lv_img_cache_array)[i], sizeof(lv_img_cache_entry_t)); f1f8: 683b ldr r3, [r7, #0] f1fa: 1958 adds r0, r3, r5 f1fc: 2124 movs r1, #36 ; 0x24 f1fe: 47b0 blx r6 for(i = 0; i < entry_cnt; i++) { f200: 3401 adds r4, #1 f202: b2a4 uxth r4, r4 f204: 4643 mov r3, r8 f206: 881b ldrh r3, [r3, #0] f208: 42a3 cmp r3, r4 f20a: d8ee bhi.n f1ea } f20c: b002 add sp, #8 f20e: bc04 pop {r2} f210: 4690 mov r8, r2 f212: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(LV_GC_ROOT(_lv_img_cache_array)); f214: 4b0f ldr r3, [pc, #60] ; (f254 ) f216: 9300 str r3, [sp, #0] f218: 22a8 movs r2, #168 ; 0xa8 f21a: 490f ldr r1, [pc, #60] ; (f258 ) f21c: 3003 adds r0, #3 f21e: 4c0f ldr r4, [pc, #60] ; (f25c ) f220: 47a0 blx r4 f222: 4b05 ldr r3, [pc, #20] ; (f238 ) f224: 681a ldr r2, [r3, #0] f226: 2300 movs r3, #0 f228: 480d ldr r0, [pc, #52] ; (f260 ) f22a: 490e ldr r1, [pc, #56] ; (f264 ) f22c: 4788 blx r1 f22e: e7fe b.n f22e entry_cnt = 0; f230: 2200 movs r2, #0 f232: 4b06 ldr r3, [pc, #24] ; (f24c ) f234: 801a strh r2, [r3, #0] return; f236: e7e9 b.n f20c f238: 20004de0 .word 0x20004de0 f23c: 0000f12d .word 0x0000f12d f240: 000123c9 .word 0x000123c9 f244: 000122dd .word 0x000122dd f248: 000017ad .word 0x000017ad f24c: 20002bc6 .word 0x20002bc6 f250: 00012975 .word 0x00012975 f254: 00026504 .word 0x00026504 f258: 0002651c .word 0x0002651c f25c: 00012159 .word 0x00012159 f260: 00025854 .word 0x00025854 f264: 000017b5 .word 0x000017b5 0000f268 : * @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) { f268: b530 push {r4, r5, lr} f26a: b087 sub sp, #28 f26c: 000c movs r4, r1 f26e: 0015 movs r5, r2 (void)decoder; /*Unused*/ lv_img_src_t src_type = lv_img_src_get_type(src); f270: 0008 movs r0, r1 f272: 4b38 ldr r3, [pc, #224] ; (f354 ) f274: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { f276: 2800 cmp r0, #0 f278: d121 bne.n f2be lv_img_cf_t cf = ((lv_img_dsc_t *)src)->header.cf; f27a: 7823 ldrb r3, [r4, #0] f27c: 06db lsls r3, r3, #27 f27e: 0edb lsrs r3, r3, #27 if(cf < CF_BUILT_IN_FIRST || cf > CF_BUILT_IN_LAST) return LV_RES_INV; f280: 3b04 subs r3, #4 f282: b2db uxtb r3, r3 f284: 2b0a cmp r3, #10 f286: d828 bhi.n f2da header->w = ((lv_img_dsc_t *)src)->header.w; f288: 6823 ldr r3, [r4, #0] f28a: 02db lsls r3, r3, #11 f28c: 0d5b lsrs r3, r3, #21 f28e: 029b lsls r3, r3, #10 f290: 4a31 ldr r2, [pc, #196] ; (f358 ) f292: 6829 ldr r1, [r5, #0] f294: 400a ands r2, r1 f296: 4313 orrs r3, r2 f298: 602b str r3, [r5, #0] header->h = ((lv_img_dsc_t *)src)->header.h; f29a: 8863 ldrh r3, [r4, #2] f29c: 095b lsrs r3, r3, #5 f29e: 015a lsls r2, r3, #5 f2a0: 8869 ldrh r1, [r5, #2] f2a2: 231f movs r3, #31 f2a4: 400b ands r3, r1 f2a6: 4313 orrs r3, r2 f2a8: 806b strh r3, [r5, #2] header->cf = ((lv_img_dsc_t *)src)->header.cf; f2aa: 7823 ldrb r3, [r4, #0] f2ac: 06db lsls r3, r3, #27 f2ae: 0eda lsrs r2, r3, #27 f2b0: 782b ldrb r3, [r5, #0] f2b2: 211f movs r1, #31 f2b4: 438b bics r3, r1 f2b6: 4313 orrs r3, r2 f2b8: 702b strb r3, [r5, #0] } else { LV_LOG_WARN("Image get info found unknown src type"); return LV_RES_INV; } return LV_RES_OK; f2ba: 3001 adds r0, #1 f2bc: e00d b.n f2da else if(src_type == LV_IMG_SRC_FILE) { f2be: 2801 cmp r0, #1 f2c0: d00d beq.n f2de else if(src_type == LV_IMG_SRC_SYMBOL) { f2c2: 2802 cmp r0, #2 f2c4: d036 beq.n f334 LV_LOG_WARN("Image get info found unknown src type"); f2c6: 4b25 ldr r3, [pc, #148] ; (f35c ) f2c8: 9300 str r3, [sp, #0] f2ca: 4b25 ldr r3, [pc, #148] ; (f360 ) f2cc: 229a movs r2, #154 ; 0x9a f2ce: 0052 lsls r2, r2, #1 f2d0: 4924 ldr r1, [pc, #144] ; (f364 ) f2d2: 2002 movs r0, #2 f2d4: 4c24 ldr r4, [pc, #144] ; (f368 ) f2d6: 47a0 blx r4 return LV_RES_INV; f2d8: 2000 movs r0, #0 } f2da: b007 add sp, #28 f2dc: bd30 pop {r4, r5, pc} res = lv_fs_open(&file, src, LV_FS_MODE_RD); f2de: 2202 movs r2, #2 f2e0: 0021 movs r1, r4 f2e2: a804 add r0, sp, #16 f2e4: 4b21 ldr r3, [pc, #132] ; (f36c ) f2e6: 4798 blx r3 if(res == LV_FS_RES_OK) { f2e8: 2800 cmp r0, #0 f2ea: d00a beq.n f302 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; f2ec: 782b ldrb r3, [r5, #0] f2ee: 06db lsls r3, r3, #27 f2f0: 0edb lsrs r3, r3, #27 f2f2: 331c adds r3, #28 f2f4: 221f movs r2, #31 f2f6: 4013 ands r3, r2 return LV_RES_OK; f2f8: 2001 movs r0, #1 if(header->cf < CF_BUILT_IN_FIRST || header->cf > CF_BUILT_IN_LAST) return LV_RES_INV; f2fa: 2b0a cmp r3, #10 f2fc: d9ed bls.n f2da return LV_RES_INV; f2fe: 2000 movs r0, #0 f300: e7eb b.n f2da res = lv_fs_read(&file, header, sizeof(lv_img_header_t), &rn); f302: ab03 add r3, sp, #12 f304: 2204 movs r2, #4 f306: 0029 movs r1, r5 f308: a804 add r0, sp, #16 f30a: 4c19 ldr r4, [pc, #100] ; (f370 ) f30c: 47a0 blx r4 f30e: 0004 movs r4, r0 lv_fs_close(&file); f310: a804 add r0, sp, #16 f312: 4b18 ldr r3, [pc, #96] ; (f374 ) f314: 4798 blx r3 if(res != LV_FS_RES_OK || rn != sizeof(lv_img_header_t)) { f316: 2c00 cmp r4, #0 f318: d102 bne.n f320 f31a: 9b03 ldr r3, [sp, #12] f31c: 2b04 cmp r3, #4 f31e: d0e5 beq.n f2ec LV_LOG_WARN("Image get info get read file header"); f320: 4b15 ldr r3, [pc, #84] ; (f378 ) f322: 9300 str r3, [sp, #0] f324: 4b0e ldr r3, [pc, #56] ; (f360 ) f326: 2222 movs r2, #34 ; 0x22 f328: 32ff adds r2, #255 ; 0xff f32a: 490e ldr r1, [pc, #56] ; (f364 ) f32c: 2002 movs r0, #2 f32e: 4c0e ldr r4, [pc, #56] ; (f368 ) f330: 47a0 blx r4 return LV_RES_INV; f332: e7e4 b.n f2fe header->w = 1; f334: 4a08 ldr r2, [pc, #32] ; (f358 ) f336: 682b ldr r3, [r5, #0] f338: 401a ands r2, r3 f33a: 2380 movs r3, #128 ; 0x80 f33c: 00db lsls r3, r3, #3 f33e: 4313 orrs r3, r2 f340: 602b str r3, [r5, #0] header->h = 1; f342: 2220 movs r2, #32 f344: 806a strh r2, [r5, #2] header->cf = LV_IMG_CF_ALPHA_1BIT; f346: 32c0 adds r2, #192 ; 0xc0 f348: 4013 ands r3, r2 f34a: 220b movs r2, #11 f34c: 4313 orrs r3, r2 f34e: 702b strb r3, [r5, #0] return LV_RES_OK; f350: 3801 subs r0, #1 f352: e7c2 b.n f2da f354: 00009589 .word 0x00009589 f358: ffe003ff .word 0xffe003ff f35c: 0002675c .word 0x0002675c f360: 00026650 .word 0x00026650 f364: 00026700 .word 0x00026700 f368: 00012159 .word 0x00012159 f36c: 00011c25 .word 0x00011c25 f370: 00011b89 .word 0x00011b89 f374: 00011b59 .word 0x00011b59 f378: 00026738 .word 0x00026738 0000f37c : * 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) { f37c: b570 push {r4, r5, r6, lr} f37e: 000d movs r5, r1 (void)decoder; /*Unused*/ lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f380: 69cc ldr r4, [r1, #28] if(user_data) { f382: 2c00 cmp r4, #0 f384: d016 beq.n f3b4 #if LV_USE_FILESYSTEM if(user_data->f) { f386: 6820 ldr r0, [r4, #0] f388: 2800 cmp r0, #0 f38a: d004 beq.n f396 lv_fs_close(user_data->f); f38c: 4b0a ldr r3, [pc, #40] ; (f3b8 ) f38e: 4798 blx r3 lv_mem_free(user_data->f); f390: 6820 ldr r0, [r4, #0] f392: 4b0a ldr r3, [pc, #40] ; (f3bc ) f394: 4798 blx r3 } #endif if(user_data->palette) lv_mem_free(user_data->palette); f396: 6860 ldr r0, [r4, #4] f398: 2800 cmp r0, #0 f39a: d001 beq.n f3a0 f39c: 4b07 ldr r3, [pc, #28] ; (f3bc ) f39e: 4798 blx r3 if(user_data->opa) lv_mem_free(user_data->opa); f3a0: 68a0 ldr r0, [r4, #8] f3a2: 2800 cmp r0, #0 f3a4: d001 beq.n f3aa f3a6: 4b05 ldr r3, [pc, #20] ; (f3bc ) f3a8: 4798 blx r3 lv_mem_free(user_data); f3aa: 0020 movs r0, r4 f3ac: 4b03 ldr r3, [pc, #12] ; (f3bc ) f3ae: 4798 blx r3 dsc->user_data = NULL; f3b0: 2300 movs r3, #0 f3b2: 61eb str r3, [r5, #28] } } f3b4: bd70 pop {r4, r5, r6, pc} f3b6: 46c0 nop ; (mov r8, r8) f3b8: 00011b59 .word 0x00011b59 f3bc: 000123c9 .word 0x000123c9 0000f3c0 : { f3c0: b5f0 push {r4, r5, r6, r7, lr} f3c2: 46de mov lr, fp f3c4: 4657 mov r7, sl f3c6: 464e mov r6, r9 f3c8: 4645 mov r5, r8 f3ca: b5e0 push {r5, r6, r7, lr} f3cc: b087 sub sp, #28 f3ce: 0006 movs r6, r0 f3d0: 000c movs r4, r1 if(dsc->src_type == LV_IMG_SRC_FILE) { f3d2: 7a8b ldrb r3, [r1, #10] f3d4: 2b01 cmp r3, #1 f3d6: d019 beq.n f40c else if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f3d8: 2b00 cmp r3, #0 f3da: d000 beq.n f3de f3dc: e1ae b.n f73c if(((lv_img_dsc_t *)dsc->src)->data == NULL) { f3de: 684b ldr r3, [r1, #4] f3e0: 689b ldr r3, [r3, #8] f3e2: 2b00 cmp r3, #0 f3e4: d100 bne.n f3e8 f3e6: e1a7 b.n f738 lv_img_cf_t cf = dsc->header.cf; f3e8: 7b08 ldrb r0, [r1, #12] f3ea: 06c0 lsls r0, r0, #27 f3ec: 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) { f3ee: 1f03 subs r3, r0, #4 f3f0: 2b02 cmp r3, #2 f3f2: d900 bls.n f3f6 f3f4: e088 b.n f508 dsc->img_data = ((lv_img_dsc_t *)dsc->src)->data; f3f6: 6863 ldr r3, [r4, #4] f3f8: 689b ldr r3, [r3, #8] f3fa: 6123 str r3, [r4, #16] return LV_RES_OK; f3fc: 2001 movs r0, #1 } f3fe: b007 add sp, #28 f400: bc3c pop {r2, r3, r4, r5} f402: 4690 mov r8, r2 f404: 4699 mov r9, r3 f406: 46a2 mov sl, r4 f408: 46ab mov fp, r5 f40a: bdf0 pop {r4, r5, r6, r7, pc} if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; f40c: 6848 ldr r0, [r1, #4] f40e: 4bd1 ldr r3, [pc, #836] ; (f754 ) f410: 4798 blx r3 f412: 49d1 ldr r1, [pc, #836] ; (f758 ) f414: 4bd1 ldr r3, [pc, #836] ; (f75c ) f416: 4798 blx r3 f418: 2800 cmp r0, #0 f41a: d12e bne.n f47a lv_fs_res_t res = lv_fs_open(&f, dsc->src, LV_FS_MODE_RD); f41c: 2202 movs r2, #2 f41e: 6861 ldr r1, [r4, #4] f420: a804 add r0, sp, #16 f422: 4bcf ldr r3, [pc, #828] ; (f760 ) f424: 4798 blx r3 if(res != LV_FS_RES_OK) { f426: 2800 cmp r0, #0 f428: d11e bne.n f468 if(dsc->user_data == NULL) { f42a: 69e3 ldr r3, [r4, #28] f42c: 2b00 cmp r3, #0 f42e: d026 beq.n f47e lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f430: 69e5 ldr r5, [r4, #28] user_data->f = lv_mem_alloc(sizeof(f)); f432: 2008 movs r0, #8 f434: 4bcb ldr r3, [pc, #812] ; (f764 ) f436: 4798 blx r3 f438: 6028 str r0, [r5, #0] LV_ASSERT_MEM(user_data->f); f43a: 4bcb ldr r3, [pc, #812] ; (f768 ) f43c: 4798 blx r3 f43e: 2800 cmp r0, #0 f440: d044 beq.n f4cc if(user_data->f == NULL) { f442: 682a ldr r2, [r5, #0] f444: 2300 movs r3, #0 f446: a904 add r1, sp, #16 f448: 2a00 cmp r2, #0 f44a: d14d bne.n f4e8 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f44c: 4bc7 ldr r3, [pc, #796] ; (f76c ) f44e: 9300 str r3, [sp, #0] f450: 4bc7 ldr r3, [pc, #796] ; (f770 ) f452: 2260 movs r2, #96 ; 0x60 f454: 32ff adds r2, #255 ; 0xff f456: 49c7 ldr r1, [pc, #796] ; (f774 ) f458: 2003 movs r0, #3 f45a: 4dc7 ldr r5, [pc, #796] ; (f778 ) f45c: 47a8 blx r5 lv_img_decoder_built_in_close(decoder, dsc); f45e: 0021 movs r1, r4 f460: 0030 movs r0, r6 f462: 4bc6 ldr r3, [pc, #792] ; (f77c ) f464: 4798 blx r3 return LV_RES_INV; f466: e008 b.n f47a LV_LOG_WARN("Built-in image decoder can't open the file"); f468: 4bc5 ldr r3, [pc, #788] ; (f780 ) f46a: 9300 str r3, [sp, #0] f46c: 4bc0 ldr r3, [pc, #768] ; (f770 ) f46e: 22a6 movs r2, #166 ; 0xa6 f470: 0052 lsls r2, r2, #1 f472: 49c0 ldr r1, [pc, #768] ; (f774 ) f474: 2002 movs r0, #2 f476: 4cc0 ldr r4, [pc, #768] ; (f778 ) f478: 47a0 blx r4 if(strcmp(lv_fs_get_ext(dsc->src), "bin")) return LV_RES_INV; f47a: 2000 movs r0, #0 f47c: e7bf b.n f3fe dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f47e: 200c movs r0, #12 f480: 4bb8 ldr r3, [pc, #736] ; (f764 ) f482: 4798 blx r3 f484: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f486: 4bb8 ldr r3, [pc, #736] ; (f768 ) f488: 4798 blx r3 f48a: 2800 cmp r0, #0 f48c: d10d bne.n f4aa f48e: 4bb8 ldr r3, [pc, #736] ; (f770 ) f490: 9300 str r3, [sp, #0] f492: 2254 movs r2, #84 ; 0x54 f494: 32ff adds r2, #255 ; 0xff f496: 49b7 ldr r1, [pc, #732] ; (f774 ) f498: 3003 adds r0, #3 f49a: 4db7 ldr r5, [pc, #732] ; (f778 ) f49c: 47a8 blx r5 f49e: 69e2 ldr r2, [r4, #28] f4a0: 2300 movs r3, #0 f4a2: 48b8 ldr r0, [pc, #736] ; (f784 ) f4a4: 49b8 ldr r1, [pc, #736] ; (f788 ) f4a6: 4788 blx r1 f4a8: e7fe b.n f4a8 if(dsc->user_data == NULL) { f4aa: 69e0 ldr r0, [r4, #28] f4ac: 2800 cmp r0, #0 f4ae: d109 bne.n f4c4 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f4b0: 4bae ldr r3, [pc, #696] ; (f76c ) f4b2: 9300 str r3, [sp, #0] f4b4: 4bae ldr r3, [pc, #696] ; (f770 ) f4b6: 2256 movs r2, #86 ; 0x56 f4b8: 32ff adds r2, #255 ; 0xff f4ba: 49ae ldr r1, [pc, #696] ; (f774 ) f4bc: 3003 adds r0, #3 f4be: 4cae ldr r4, [pc, #696] ; (f778 ) f4c0: 47a0 blx r4 return LV_RES_INV; f4c2: e7da b.n f47a _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f4c4: 210c movs r1, #12 f4c6: 4bb1 ldr r3, [pc, #708] ; (f78c ) f4c8: 4798 blx r3 f4ca: e7b1 b.n f430 LV_ASSERT_MEM(user_data->f); f4cc: 4ba8 ldr r3, [pc, #672] ; (f770 ) f4ce: 9300 str r3, [sp, #0] f4d0: 225e movs r2, #94 ; 0x5e f4d2: 32ff adds r2, #255 ; 0xff f4d4: 49a7 ldr r1, [pc, #668] ; (f774 ) f4d6: 3003 adds r0, #3 f4d8: 4ca7 ldr r4, [pc, #668] ; (f778 ) f4da: 47a0 blx r4 f4dc: 682a ldr r2, [r5, #0] f4de: 2300 movs r3, #0 f4e0: 48a8 ldr r0, [pc, #672] ; (f784 ) f4e2: 49a9 ldr r1, [pc, #676] ; (f788 ) f4e4: 4788 blx r1 f4e6: e7fe b.n f4e6 f4e8: 5c58 ldrb r0, [r3, r1] f4ea: 54d0 strb r0, [r2, r3] f4ec: 3301 adds r3, #1 while(len) { f4ee: 2b08 cmp r3, #8 f4f0: d1fa bne.n f4e8 lv_img_cf_t cf = dsc->header.cf; f4f2: 7b20 ldrb r0, [r4, #12] f4f4: 06c0 lsls r0, r0, #27 f4f6: 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) { f4f8: 1f03 subs r3, r0, #4 f4fa: 2b02 cmp r3, #2 f4fc: d804 bhi.n f508 if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f4fe: 7aa3 ldrb r3, [r4, #10] f500: 2b00 cmp r3, #0 f502: d100 bne.n f506 f504: e777 b.n f3f6 f506: e120 b.n f74a else if(cf == LV_IMG_CF_INDEXED_1BIT || cf == LV_IMG_CF_INDEXED_2BIT || cf == LV_IMG_CF_INDEXED_4BIT || f508: 1fc3 subs r3, r0, #7 f50a: 2b03 cmp r3, #3 f50c: d907 bls.n f51e else if(cf == LV_IMG_CF_ALPHA_1BIT || cf == LV_IMG_CF_ALPHA_2BIT || cf == LV_IMG_CF_ALPHA_4BIT || f50e: 380b subs r0, #11 f510: 2803 cmp r0, #3 f512: d900 bls.n f516 f514: e101 b.n f71a dsc->img_data = NULL; f516: 2300 movs r3, #0 f518: 6123 str r3, [r4, #16] return LV_RES_OK; /*Nothing to process*/ f51a: 2001 movs r0, #1 f51c: e76f b.n f3fe uint8_t px_size = lv_img_cf_get_px_size(cf); f51e: 4b9c ldr r3, [pc, #624] ; (f790 ) f520: 4798 blx r3 f522: 0007 movs r7, r0 if(dsc->user_data == NULL) { f524: 69e3 ldr r3, [r4, #28] f526: 2b00 cmp r3, #0 f528: d017 beq.n f55a lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f52a: 69e5 ldr r5, [r4, #28] user_data->palette = lv_mem_alloc(palette_size * sizeof(lv_color_t)); f52c: 2002 movs r0, #2 f52e: 40b8 lsls r0, r7 f530: 4b8c ldr r3, [pc, #560] ; (f764 ) f532: 4798 blx r3 f534: 6068 str r0, [r5, #4] LV_ASSERT_MEM(user_data->palette); f536: 4b8c ldr r3, [pc, #560] ; (f768 ) f538: 4798 blx r3 f53a: 2800 cmp r0, #0 f53c: d139 bne.n f5b2 f53e: 4b8c ldr r3, [pc, #560] ; (f770 ) f540: 9300 str r3, [sp, #0] f542: 2298 movs r2, #152 ; 0x98 f544: 32ff adds r2, #255 ; 0xff f546: 498b ldr r1, [pc, #556] ; (f774 ) f548: 3003 adds r0, #3 f54a: 4c8b ldr r4, [pc, #556] ; (f778 ) f54c: 47a0 blx r4 f54e: 686a ldr r2, [r5, #4] f550: 2300 movs r3, #0 f552: 488c ldr r0, [pc, #560] ; (f784 ) f554: 498c ldr r1, [pc, #560] ; (f788 ) f556: 4788 blx r1 f558: e7fe b.n f558 dsc->user_data = lv_mem_alloc(sizeof(lv_img_decoder_built_in_data_t)); f55a: 200c movs r0, #12 f55c: 4b81 ldr r3, [pc, #516] ; (f764 ) f55e: 4798 blx r3 f560: 61e0 str r0, [r4, #28] LV_ASSERT_MEM(dsc->user_data); f562: 4b81 ldr r3, [pc, #516] ; (f768 ) f564: 4798 blx r3 f566: 2800 cmp r0, #0 f568: d10d bne.n f586 f56a: 4b81 ldr r3, [pc, #516] ; (f770 ) f56c: 9300 str r3, [sp, #0] f56e: 22c6 movs r2, #198 ; 0xc6 f570: 0052 lsls r2, r2, #1 f572: 4980 ldr r1, [pc, #512] ; (f774 ) f574: 3003 adds r0, #3 f576: 4d80 ldr r5, [pc, #512] ; (f778 ) f578: 47a8 blx r5 f57a: 69e2 ldr r2, [r4, #28] f57c: 2300 movs r3, #0 f57e: 4881 ldr r0, [pc, #516] ; (f784 ) f580: 4981 ldr r1, [pc, #516] ; (f788 ) f582: 4788 blx r1 f584: e7fe b.n f584 if(dsc->user_data == NULL) { f586: 69e0 ldr r0, [r4, #28] f588: 2800 cmp r0, #0 f58a: d10e bne.n f5aa LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f58c: 4b77 ldr r3, [pc, #476] ; (f76c ) f58e: 9300 str r3, [sp, #0] f590: 4b77 ldr r3, [pc, #476] ; (f770 ) f592: 22c7 movs r2, #199 ; 0xc7 f594: 0052 lsls r2, r2, #1 f596: 4977 ldr r1, [pc, #476] ; (f774 ) f598: 3003 adds r0, #3 f59a: 4d77 ldr r5, [pc, #476] ; (f778 ) f59c: 47a8 blx r5 lv_img_decoder_built_in_close(decoder, dsc); f59e: 0021 movs r1, r4 f5a0: 0030 movs r0, r6 f5a2: 4b76 ldr r3, [pc, #472] ; (f77c ) f5a4: 4798 blx r3 return LV_RES_INV; f5a6: 2000 movs r0, #0 f5a8: e729 b.n f3fe _lv_memset_00(dsc->user_data, sizeof(lv_img_decoder_built_in_data_t)); f5aa: 210c movs r1, #12 f5ac: 4b77 ldr r3, [pc, #476] ; (f78c ) f5ae: 4798 blx r3 f5b0: e7bb b.n f52a uint32_t palette_size = 1 << px_size; f5b2: 2301 movs r3, #1 f5b4: 40bb lsls r3, r7 f5b6: 001f movs r7, r3 user_data->opa = lv_mem_alloc(palette_size * sizeof(lv_opa_t)); f5b8: 0018 movs r0, r3 f5ba: 4b6a ldr r3, [pc, #424] ; (f764 ) f5bc: 4798 blx r3 f5be: 60a8 str r0, [r5, #8] LV_ASSERT_MEM(user_data->opa); f5c0: 4b69 ldr r3, [pc, #420] ; (f768 ) f5c2: 4798 blx r3 f5c4: 2800 cmp r0, #0 f5c6: d047 beq.n f658 if(user_data->palette == NULL || user_data->opa == NULL) { f5c8: 686b ldr r3, [r5, #4] f5ca: 2b00 cmp r3, #0 f5cc: d052 beq.n f674 f5ce: 68ab ldr r3, [r5, #8] f5d0: 2b00 cmp r3, #0 f5d2: d04f beq.n f674 if(dsc->src_type == LV_IMG_SRC_FILE) { f5d4: 7aa3 ldrb r3, [r4, #10] f5d6: 2b01 cmp r3, #1 f5d8: d05b beq.n f692 lv_color32_t * palette_p = (lv_color32_t *)((lv_img_dsc_t *)dsc->src)->data; f5da: 6863 ldr r3, [r4, #4] f5dc: 6898 ldr r0, [r3, #8] for(i = 0; i < palette_size; i++) { f5de: 2f00 cmp r7, #0 f5e0: d100 bne.n f5e4 f5e2: e096 b.n f712 f5e4: 2300 movs r3, #0 f5e6: 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); f5e8: 333f adds r3, #63 ; 0x3f f5ea: 469b mov fp, r3 f5ec: 3b20 subs r3, #32 f5ee: 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); f5f0: 4b68 ldr r3, [pc, #416] ; (f794 ) f5f2: 469a mov sl, r3 f5f4: 4641 mov r1, r8 f5f6: 9403 str r4, [sp, #12] f5f8: 004a lsls r2, r1, #1 f5fa: 686b ldr r3, [r5, #4] f5fc: 469c mov ip, r3 f5fe: 4462 add r2, ip f600: 7843 ldrb r3, [r0, #1] f602: 089c lsrs r4, r3, #2 f604: 9402 str r4, [sp, #8] f606: 7886 ldrb r6, [r0, #2] f608: 08f6 lsrs r6, r6, #3 f60a: 464c mov r4, r9 f60c: 4026 ands r6, r4 f60e: 7804 ldrb r4, [r0, #0] f610: 08e4 lsrs r4, r4, #3 f612: 46a4 mov ip, r4 f614: 7814 ldrb r4, [r2, #0] f616: 464b mov r3, r9 f618: 439c bics r4, r3 f61a: 46a0 mov r8, r4 f61c: 4664 mov r4, ip f61e: 4643 mov r3, r8 f620: 431c orrs r4, r3 f622: 7014 strb r4, [r2, #0] f624: 465b mov r3, fp f626: 9c02 ldr r4, [sp, #8] f628: 401c ands r4, r3 f62a: 0163 lsls r3, r4, #5 f62c: 469c mov ip, r3 f62e: 8813 ldrh r3, [r2, #0] f630: 4654 mov r4, sl f632: 4023 ands r3, r4 f634: 4664 mov r4, ip f636: 4323 orrs r3, r4 f638: 8013 strh r3, [r2, #0] f63a: 00f6 lsls r6, r6, #3 f63c: 0a1b lsrs r3, r3, #8 f63e: 2407 movs r4, #7 f640: 4023 ands r3, r4 f642: 4333 orrs r3, r6 f644: 7053 strb r3, [r2, #1] user_data->opa[i] = palette_p[i].ch.alpha; f646: 78c3 ldrb r3, [r0, #3] f648: 68aa ldr r2, [r5, #8] f64a: 5453 strb r3, [r2, r1] for(i = 0; i < palette_size; i++) { f64c: 3101 adds r1, #1 f64e: 3004 adds r0, #4 f650: 428f cmp r7, r1 f652: d1d1 bne.n f5f8 f654: 9c03 ldr r4, [sp, #12] f656: e05c b.n f712 LV_ASSERT_MEM(user_data->opa); f658: 4b45 ldr r3, [pc, #276] ; (f770 ) f65a: 9300 str r3, [sp, #0] f65c: 229a movs r2, #154 ; 0x9a f65e: 32ff adds r2, #255 ; 0xff f660: 4944 ldr r1, [pc, #272] ; (f774 ) f662: 3003 adds r0, #3 f664: 4c44 ldr r4, [pc, #272] ; (f778 ) f666: 47a0 blx r4 f668: 68aa ldr r2, [r5, #8] f66a: 2300 movs r3, #0 f66c: 4845 ldr r0, [pc, #276] ; (f784 ) f66e: 4946 ldr r1, [pc, #280] ; (f788 ) f670: 4788 blx r1 f672: e7fe b.n f672 LV_LOG_ERROR("img_decoder_built_in_open: out of memory"); f674: 4b3d ldr r3, [pc, #244] ; (f76c ) f676: 9300 str r3, [sp, #0] f678: 4b3d ldr r3, [pc, #244] ; (f770 ) f67a: 229c movs r2, #156 ; 0x9c f67c: 32ff adds r2, #255 ; 0xff f67e: 493d ldr r1, [pc, #244] ; (f774 ) f680: 2003 movs r0, #3 f682: 4d3d ldr r5, [pc, #244] ; (f778 ) f684: 47a8 blx r5 lv_img_decoder_built_in_close(decoder, dsc); f686: 0021 movs r1, r4 f688: 0030 movs r0, r6 f68a: 4b3c ldr r3, [pc, #240] ; (f77c ) f68c: 4798 blx r3 return LV_RES_INV; f68e: 2000 movs r0, #0 f690: e6b5 b.n f3fe lv_fs_seek(user_data->f, 4); /*Skip the header*/ f692: 2104 movs r1, #4 f694: 6828 ldr r0, [r5, #0] f696: 4b40 ldr r3, [pc, #256] ; (f798 ) f698: 4798 blx r3 for(i = 0; i < palette_size; i++) { f69a: 2f00 cmp r7, #0 f69c: d039 beq.n f712 f69e: 2300 movs r3, #0 f6a0: 4698 mov r8, r3 lv_fs_read(user_data->f, &cur_color, sizeof(lv_color32_t), NULL); f6a2: 4b3e ldr r3, [pc, #248] ; (f79c ) f6a4: 469b mov fp, r3 f6a6: 233f movs r3, #63 ; 0x3f f6a8: 469a mov sl, r3 f6aa: 3b20 subs r3, #32 f6ac: 4699 mov r9, r3 f6ae: 0023 movs r3, r4 f6b0: 4644 mov r4, r8 f6b2: 4698 mov r8, r3 f6b4: ae04 add r6, sp, #16 f6b6: 2300 movs r3, #0 f6b8: 2204 movs r2, #4 f6ba: 0031 movs r1, r6 f6bc: 6828 ldr r0, [r5, #0] f6be: 47d8 blx fp user_data->palette[i] = lv_color_make(cur_color.ch.red, cur_color.ch.green, cur_color.ch.blue); f6c0: 0062 lsls r2, r4, #1 f6c2: 686b ldr r3, [r5, #4] f6c4: 469c mov ip, r3 f6c6: 4462 add r2, ip f6c8: 7873 ldrb r3, [r6, #1] f6ca: 0898 lsrs r0, r3, #2 f6cc: 9003 str r0, [sp, #12] f6ce: 78b1 ldrb r1, [r6, #2] f6d0: 08c9 lsrs r1, r1, #3 f6d2: 4648 mov r0, r9 f6d4: 4001 ands r1, r0 f6d6: 9102 str r1, [sp, #8] f6d8: 7830 ldrb r0, [r6, #0] f6da: 08c0 lsrs r0, r0, #3 f6dc: 7811 ldrb r1, [r2, #0] f6de: 464b mov r3, r9 f6e0: 4399 bics r1, r3 f6e2: 4308 orrs r0, r1 f6e4: 7010 strb r0, [r2, #0] f6e6: 4653 mov r3, sl f6e8: 9803 ldr r0, [sp, #12] f6ea: 4018 ands r0, r3 f6ec: 0140 lsls r0, r0, #5 f6ee: 8813 ldrh r3, [r2, #0] f6f0: 4928 ldr r1, [pc, #160] ; (f794 ) f6f2: 400b ands r3, r1 f6f4: 4303 orrs r3, r0 f6f6: 8013 strh r3, [r2, #0] f6f8: 9902 ldr r1, [sp, #8] f6fa: 00c9 lsls r1, r1, #3 f6fc: 055b lsls r3, r3, #21 f6fe: 0f5b lsrs r3, r3, #29 f700: 430b orrs r3, r1 f702: 7053 strb r3, [r2, #1] user_data->opa[i] = cur_color.ch.alpha; f704: 78f3 ldrb r3, [r6, #3] f706: 68aa ldr r2, [r5, #8] f708: 5513 strb r3, [r2, r4] for(i = 0; i < palette_size; i++) { f70a: 3401 adds r4, #1 f70c: 42a7 cmp r7, r4 f70e: d1d1 bne.n f6b4 f710: 4644 mov r4, r8 dsc->img_data = NULL; f712: 2300 movs r3, #0 f714: 6123 str r3, [r4, #16] return LV_RES_OK; f716: 2001 movs r0, #1 f718: e671 b.n f3fe lv_img_decoder_built_in_close(decoder, dsc); f71a: 0021 movs r1, r4 f71c: 0030 movs r0, r6 f71e: 4b17 ldr r3, [pc, #92] ; (f77c ) f720: 4798 blx r3 LV_LOG_WARN("Image decoder open: unknown color format") f722: 4b1f ldr r3, [pc, #124] ; (f7a0 ) f724: 9300 str r3, [sp, #0] f726: 4b12 ldr r3, [pc, #72] ; (f770 ) f728: 22d4 movs r2, #212 ; 0xd4 f72a: 32ff adds r2, #255 ; 0xff f72c: 4911 ldr r1, [pc, #68] ; (f774 ) f72e: 2002 movs r0, #2 f730: 4c11 ldr r4, [pc, #68] ; (f778 ) f732: 47a0 blx r4 return LV_RES_INV; f734: 2000 movs r0, #0 f736: e662 b.n f3fe return LV_RES_INV; f738: 2000 movs r0, #0 f73a: e660 b.n f3fe lv_img_cf_t cf = dsc->header.cf; f73c: 7b08 ldrb r0, [r1, #12] f73e: 06c0 lsls r0, r0, #27 f740: 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) { f742: 1f03 subs r3, r0, #4 f744: 2b02 cmp r3, #2 f746: d900 bls.n f74a f748: e6de b.n f508 dsc->img_data = NULL; f74a: 2300 movs r3, #0 f74c: 6123 str r3, [r4, #16] return LV_RES_OK; f74e: 2001 movs r0, #1 f750: e655 b.n f3fe f752: 46c0 nop ; (mov r8, r8) f754: 00011d09 .word 0x00011d09 f758: 00026784 .word 0x00026784 f75c: 0001c6e5 .word 0x0001c6e5 f760: 00011c25 .word 0x00011c25 f764: 000122dd .word 0x000122dd f768: 000017ad .word 0x000017ad f76c: 000267b4 .word 0x000267b4 f770: 00026670 .word 0x00026670 f774: 00026700 .word 0x00026700 f778: 00012159 .word 0x00012159 f77c: 0000f37d .word 0x0000f37d f780: 00026788 .word 0x00026788 f784: 00025854 .word 0x00025854 f788: 000017b5 .word 0x000017b5 f78c: 00012975 .word 0x00012975 f790: 000092a9 .word 0x000092a9 f794: fffff81f .word 0xfffff81f f798: 00011bcb .word 0x00011bcb f79c: 00011b89 .word 0x00011b89 f7a0: 000267e0 .word 0x000267e0 0000f7a4 : { f7a4: b5f0 push {r4, r5, r6, r7, lr} f7a6: 46de mov lr, fp f7a8: 4657 mov r7, sl f7aa: 464e mov r6, r9 f7ac: 4645 mov r5, r8 f7ae: b5e0 push {r5, r6, r7, lr} f7b0: b08d sub sp, #52 ; 0x34 f7b2: 000d movs r5, r1 f7b4: 0017 movs r7, r2 f7b6: 9303 str r3, [sp, #12] f7b8: ab16 add r3, sp, #88 ; 0x58 f7ba: 2600 movs r6, #0 f7bc: 5f9e ldrsh r6, [r3, r6] if(dsc->header.cf == LV_IMG_CF_TRUE_COLOR || dsc->header.cf == LV_IMG_CF_TRUE_COLOR_ALPHA || f7be: 7b0a ldrb r2, [r1, #12] f7c0: 231f movs r3, #31 f7c2: 4013 ands r3, r2 f7c4: 1f1a subs r2, r3, #4 f7c6: 2a02 cmp r2, #2 f7c8: d846 bhi.n f858 if(dsc->src_type == LV_IMG_SRC_FILE) { f7ca: 7a8b ldrb r3, [r1, #10] lv_res_t res = LV_RES_INV; f7cc: 2000 movs r0, #0 if(dsc->src_type == LV_IMG_SRC_FILE) { f7ce: 2b01 cmp r3, #1 f7d0: d006 beq.n f7e0 } f7d2: b00d add sp, #52 ; 0x34 f7d4: bc3c pop {r2, r3, r4, r5} f7d6: 4690 mov r8, r2 f7d8: 4699 mov r9, r3 f7da: 46a2 mov sl, r4 f7dc: 46ab mov fp, r5 f7de: 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; f7e0: 69cb ldr r3, [r1, #28] f7e2: 4699 mov r9, r3 lv_fs_res_t res; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); f7e4: 7b08 ldrb r0, [r1, #12] f7e6: 06c0 lsls r0, r0, #27 f7e8: 0ec0 lsrs r0, r0, #27 f7ea: 4bd6 ldr r3, [pc, #856] ; (fb44 ) f7ec: 4798 blx r3 f7ee: 4680 mov r8, r0 uint32_t pos = ((y * dsc->header.w + x) * px_size) >> 3; f7f0: 68e9 ldr r1, [r5, #12] f7f2: 02c9 lsls r1, r1, #11 f7f4: 0d49 lsrs r1, r1, #21 f7f6: 9b03 ldr r3, [sp, #12] f7f8: 434b muls r3, r1 f7fa: 19d9 adds r1, r3, r7 f7fc: 4341 muls r1, r0 f7fe: 10c9 asrs r1, r1, #3 pos += 4; /*Skip the header*/ f800: 3104 adds r1, #4 res = lv_fs_seek(user_data->f, pos); f802: 464b mov r3, r9 f804: 6818 ldr r0, [r3, #0] f806: 4bd0 ldr r3, [pc, #832] ; (fb48 ) f808: 4798 blx r3 if(res != LV_FS_RES_OK) { f80a: 2800 cmp r0, #0 f80c: d11a bne.n f844 LV_LOG_WARN("Built-in image decoder seek failed"); return LV_RES_INV; } uint32_t btr = len * (px_size >> 3); f80e: 4643 mov r3, r8 f810: 08db lsrs r3, r3, #3 f812: b2db uxtb r3, r3 f814: 435e muls r6, r3 uint32_t br = 0; f816: 2300 movs r3, #0 f818: 9308 str r3, [sp, #32] lv_fs_read(user_data->f, buf, btr, &br); f81a: 464b mov r3, r9 f81c: 6818 ldr r0, [r3, #0] f81e: ab08 add r3, sp, #32 f820: 0032 movs r2, r6 f822: 9917 ldr r1, [sp, #92] ; 0x5c f824: 4cc9 ldr r4, [pc, #804] ; (fb4c ) f826: 47a0 blx r4 if(res != LV_FS_RES_OK || btr != br) { LV_LOG_WARN("Built-in image decoder read failed"); return LV_RES_INV; } return LV_RES_OK; f828: 2001 movs r0, #1 if(res != LV_FS_RES_OK || btr != br) { f82a: 9b08 ldr r3, [sp, #32] f82c: 429e cmp r6, r3 f82e: d0d0 beq.n f7d2 LV_LOG_WARN("Built-in image decoder read failed"); f830: 4bc7 ldr r3, [pc, #796] ; (fb50 ) f832: 9300 str r3, [sp, #0] f834: 4bc7 ldr r3, [pc, #796] ; (fb54 ) f836: 4ac8 ldr r2, [pc, #800] ; (fb58 ) f838: 49c8 ldr r1, [pc, #800] ; (fb5c ) f83a: 3001 adds r0, #1 f83c: 4cc8 ldr r4, [pc, #800] ; (fb60 ) f83e: 47a0 blx r4 return LV_RES_INV; f840: 2000 movs r0, #0 f842: e7c6 b.n f7d2 LV_LOG_WARN("Built-in image decoder seek failed"); f844: 4bc7 ldr r3, [pc, #796] ; (fb64 ) f846: 9300 str r3, [sp, #0] f848: 4bc2 ldr r3, [pc, #776] ; (fb54 ) f84a: 4ac7 ldr r2, [pc, #796] ; (fb68 ) f84c: 49c3 ldr r1, [pc, #780] ; (fb5c ) f84e: 2002 movs r0, #2 f850: 4cc3 ldr r4, [pc, #780] ; (fb60 ) f852: 47a0 blx r4 return LV_RES_INV; f854: 2000 movs r0, #0 f856: e7bc b.n f7d2 else if(dsc->header.cf == LV_IMG_CF_ALPHA_1BIT || dsc->header.cf == LV_IMG_CF_ALPHA_2BIT || f858: 001a movs r2, r3 f85a: 3a0b subs r2, #11 f85c: 2a03 cmp r2, #3 f85e: d90e bls.n f87e else if(dsc->header.cf == LV_IMG_CF_INDEXED_1BIT || dsc->header.cf == LV_IMG_CF_INDEXED_2BIT || f860: 3b07 subs r3, #7 f862: 2b03 cmp r3, #3 f864: d800 bhi.n f868 f866: e0f6 b.n fa56 LV_LOG_WARN("Built-in image decoder read not supports the color format"); f868: 4bc0 ldr r3, [pc, #768] ; (fb6c ) f86a: 9300 str r3, [sp, #0] f86c: 4bc0 ldr r3, [pc, #768] ; (fb70 ) f86e: 22fe movs r2, #254 ; 0xfe f870: 0052 lsls r2, r2, #1 f872: 49ba ldr r1, [pc, #744] ; (fb5c ) f874: 2002 movs r0, #2 f876: 4cba ldr r4, [pc, #744] ; (fb60 ) f878: 47a0 blx r4 return LV_RES_INV; f87a: 2000 movs r0, #0 f87c: e7a9 b.n f7d2 static lv_res_t lv_img_decoder_built_in_line_alpha(lv_img_decoder_dsc_t * dsc, lv_coord_t x, lv_coord_t y, lv_coord_t len, uint8_t * buf) { #if LV_IMG_CF_ALPHA const lv_opa_t alpha1_opa_table[2] = {0, 255}; /*Opacity mapping with bpp = 1 (Just for compatibility)*/ f87e: ab06 add r3, sp, #24 f880: 2100 movs r1, #0 f882: 7019 strb r1, [r3, #0] f884: 22ff movs r2, #255 ; 0xff f886: 705a strb r2, [r3, #1] const lv_opa_t alpha2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping with bpp = 2*/ f888: ab07 add r3, sp, #28 f88a: 7019 strb r1, [r3, #0] f88c: 3155 adds r1, #85 ; 0x55 f88e: 7059 strb r1, [r3, #1] f890: 3155 adds r1, #85 ; 0x55 f892: 7099 strb r1, [r3, #2] f894: 70da strb r2, [r3, #3] const lv_opa_t alpha4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/ f896: aa08 add r2, sp, #32 f898: 4bb6 ldr r3, [pc, #728] ; (fb74 ) f89a: cb13 ldmia r3!, {r0, r1, r4} f89c: c213 stmia r2!, {r0, r1, r4} f89e: 681b ldr r3, [r3, #0] f8a0: 6013 str r3, [r2, #0] 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255 }; /*Simply fill the buffer with the color. Later only the alpha value will be modified.*/ lv_color_t bg_color = dsc->color; f8a2: 8929 ldrh r1, [r5, #8] lv_coord_t i; for(i = 0; i < len; i++) { f8a4: 2e00 cmp r6, #0 f8a6: dd11 ble.n f8cc #if LV_COLOR_DEPTH == 8 || LV_COLOR_DEPTH == 1 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full; #elif LV_COLOR_DEPTH == 16 /*Because of Alpha byte 16 bit color can start on odd address which can cause crash*/ buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; f8a8: 0a08 lsrs r0, r1, #8 f8aa: 9c17 ldr r4, [sp, #92] ; 0x5c f8ac: 1e72 subs r2, r6, #1 f8ae: b292 uxth r2, r2 f8b0: 3201 adds r2, #1 f8b2: 4694 mov ip, r2 f8b4: 0052 lsls r2, r2, #1 f8b6: 4462 add r2, ip f8b8: 0023 movs r3, r4 f8ba: 46a4 mov ip, r4 f8bc: 4462 add r2, ip f8be: 9c03 ldr r4, [sp, #12] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = bg_color.full & 0xFF; f8c0: 7019 strb r1, [r3, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (bg_color.full >> 8) & 0xFF; f8c2: 7058 strb r0, [r3, #1] f8c4: 3303 adds r3, #3 for(i = 0; i < len; i++) { f8c6: 429a cmp r2, r3 f8c8: d1fa bne.n f8c0 f8ca: 9403 str r4, [sp, #12] #error "Invalid LV_COLOR_DEPTH. Check it in lv_conf.h" #endif } const lv_opa_t * opa_table = NULL; uint8_t px_size = lv_img_cf_get_px_size(dsc->header.cf); f8cc: 7b28 ldrb r0, [r5, #12] f8ce: 06c0 lsls r0, r0, #27 f8d0: 0ec0 lsrs r0, r0, #27 f8d2: 4b9c ldr r3, [pc, #624] ; (fb44 ) f8d4: 4798 blx r3 f8d6: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ f8d8: 2301 movs r3, #1 f8da: 4083 lsls r3, r0 f8dc: 3b01 subs r3, #1 f8de: b29b uxth r3, r3 f8e0: 4698 mov r8, r3 lv_coord_t w = 0; uint32_t ofs = 0; int8_t pos = 0; switch(dsc->header.cf) { f8e2: 7b2b ldrb r3, [r5, #12] f8e4: 06db lsls r3, r3, #27 f8e6: 0edb lsrs r3, r3, #27 f8e8: b2da uxtb r2, r3 f8ea: 2a0c cmp r2, #12 f8ec: d04d beq.n f98a f8ee: d911 bls.n f914 f8f0: b2da uxtb r2, r3 f8f2: 2a0d cmp r2, #13 f8f4: d05f beq.n f9b6 f8f6: 2a0e cmp r2, #14 f8f8: d172 bne.n f9e0 ofs += w * y + (x >> 1); /*First pixel*/ pos = 4 - ((x & 0x1) * 4); opa_table = alpha4_opa_table; break; case LV_IMG_CF_ALPHA_8BIT: w = dsc->header.w; /*E.g. x = 7 -> w = 7 (bytes)*/ f8fa: 68eb ldr r3, [r5, #12] f8fc: 02db lsls r3, r3, #11 f8fe: 0d5b lsrs r3, r3, #21 f900: b299 uxth r1, r3 f902: b21b sxth r3, r3 f904: 9304 str r3, [sp, #16] ofs += w * y + x; /*First pixel*/ f906: 9c03 ldr r4, [sp, #12] f908: 434c muls r4, r1 f90a: 19e4 adds r4, r4, r7 pos = 0; f90c: 2700 movs r7, #0 const lv_opa_t * opa_table = NULL; f90e: 2300 movs r3, #0 f910: 469a mov sl, r3 f912: e015 b.n f940 switch(dsc->header.cf) { f914: 2a0b cmp r2, #11 f916: d163 bne.n f9e0 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ f918: 68eb ldr r3, [r5, #12] f91a: 02db lsls r3, r3, #11 f91c: 0d5b lsrs r3, r3, #21 f91e: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; f920: 1c51 adds r1, r2, #1 f922: 9104 str r1, [sp, #16] f924: 075b lsls r3, r3, #29 f926: d101 bne.n f92c w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ f928: b213 sxth r3, r2 f92a: 9304 str r3, [sp, #16] ofs += w * y + (x >> 3); /*First pixel*/ f92c: 9b04 ldr r3, [sp, #16] f92e: 9c03 ldr r4, [sp, #12] f930: 435c muls r4, r3 f932: 10f9 asrs r1, r7, #3 f934: 1864 adds r4, r4, r1 pos = 7 - (x & 0x7); f936: 2307 movs r3, #7 f938: 43bb bics r3, r7 f93a: 001f movs r7, r3 opa_table = alpha1_opa_table; f93c: ab06 add r3, sp, #24 f93e: 469a mov sl, r3 break; } #if LV_USE_FILESYSTEM lv_img_decoder_built_in_data_t * user_data = dsc->user_data; f940: 69eb ldr r3, [r5, #28] f942: 469b mov fp, r3 uint8_t * fs_buf = _lv_mem_buf_get(w); f944: 9804 ldr r0, [sp, #16] f946: 4b8c ldr r3, [pc, #560] ; (fb78 ) f948: 4798 blx r3 f94a: 9005 str r0, [sp, #20] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { f94c: 7aab ldrb r3, [r5, #10] f94e: 2b00 cmp r3, #0 f950: d150 bne.n f9f4 const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; f952: 686b ldr r3, [r5, #4] f954: 6899 ldr r1, [r3, #8] f956: 190c adds r4, r1, r4 data_tmp = NULL; /*To avoid warnings*/ return LV_RES_INV; #endif } for(i = 0; i < len; i++) { f958: 2e00 cmp r6, #0 f95a: dd77 ble.n fa4c f95c: 9b17 ldr r3, [sp, #92] ; 0x5c f95e: 1c99 adds r1, r3, #2 f960: 3e01 subs r6, #1 f962: b2b6 uxth r6, r6 f964: 0070 lsls r0, r6, #1 f966: 1980 adds r0, r0, r6 f968: 3005 adds r0, #5 f96a: 469c mov ip, r3 f96c: 4460 add r0, ip uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; f96e: 261f movs r6, #31 f970: 23ff movs r3, #255 ; 0xff f972: 469c mov ip, r3 pos -= px_size; if(pos < 0) { pos = 8 - px_size; f974: 2308 movs r3, #8 f976: 464a mov r2, r9 f978: 1a9b subs r3, r3, r2 f97a: b25b sxtb r3, r3 f97c: 9303 str r3, [sp, #12] f97e: 46cb mov fp, r9 f980: 002b movs r3, r5 f982: 0005 movs r5, r0 f984: 4640 mov r0, r8 f986: 4698 mov r8, r3 f988: e04c b.n fa24 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ f98a: 68eb ldr r3, [r5, #12] f98c: 02db lsls r3, r3, #11 f98e: 0d5b lsrs r3, r3, #21 f990: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; f992: 1c51 adds r1, r2, #1 f994: 9104 str r1, [sp, #16] f996: 079b lsls r3, r3, #30 f998: d101 bne.n f99e w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ f99a: b213 sxth r3, r2 f99c: 9304 str r3, [sp, #16] ofs += w * y + (x >> 2); /*First pixel*/ f99e: 9b04 ldr r3, [sp, #16] f9a0: 9c03 ldr r4, [sp, #12] f9a2: 435c muls r4, r3 f9a4: 10b9 asrs r1, r7, #2 f9a6: 1864 adds r4, r4, r1 pos = 6 - ((x & 0x3) * 2); f9a8: b2bb uxth r3, r7 f9aa: 2703 movs r7, #3 f9ac: 439f bics r7, r3 f9ae: 007f lsls r7, r7, #1 opa_table = alpha2_opa_table; f9b0: ab07 add r3, sp, #28 f9b2: 469a mov sl, r3 f9b4: e7c4 b.n f940 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ f9b6: 68eb ldr r3, [r5, #12] f9b8: 02db lsls r3, r3, #11 f9ba: 0d5b lsrs r3, r3, #21 f9bc: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; f9be: 1c51 adds r1, r2, #1 f9c0: 9104 str r1, [sp, #16] f9c2: 07db lsls r3, r3, #31 f9c4: d401 bmi.n f9ca w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ f9c6: b213 sxth r3, r2 f9c8: 9304 str r3, [sp, #16] ofs += w * y + (x >> 1); /*First pixel*/ f9ca: 9b04 ldr r3, [sp, #16] f9cc: 9c03 ldr r4, [sp, #12] f9ce: 435c muls r4, r3 f9d0: 1079 asrs r1, r7, #1 f9d2: 1864 adds r4, r4, r1 pos = 4 - ((x & 0x1) * 4); f9d4: 07fb lsls r3, r7, #31 f9d6: d509 bpl.n f9ec f9d8: 2700 movs r7, #0 opa_table = alpha4_opa_table; f9da: ab08 add r3, sp, #32 f9dc: 469a mov sl, r3 f9de: e7af b.n f940 int8_t pos = 0; f9e0: 2700 movs r7, #0 uint32_t ofs = 0; f9e2: 2400 movs r4, #0 lv_coord_t w = 0; f9e4: 2300 movs r3, #0 f9e6: 9304 str r3, [sp, #16] const lv_opa_t * opa_table = NULL; f9e8: 469a mov sl, r3 f9ea: e7a9 b.n f940 pos = 4 - ((x & 0x1) * 4); f9ec: 2704 movs r7, #4 opa_table = alpha4_opa_table; f9ee: ab08 add r3, sp, #32 f9f0: 469a mov sl, r3 f9f2: e7a5 b.n f940 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ f9f4: 1d21 adds r1, r4, #4 f9f6: 465b mov r3, fp f9f8: 6818 ldr r0, [r3, #0] f9fa: 4b53 ldr r3, [pc, #332] ; (fb48 ) f9fc: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); f9fe: 465b mov r3, fp fa00: 6818 ldr r0, [r3, #0] fa02: 2300 movs r3, #0 fa04: 9a04 ldr r2, [sp, #16] fa06: 9905 ldr r1, [sp, #20] fa08: 4c50 ldr r4, [pc, #320] ; (fb4c ) fa0a: 47a0 blx r4 data_tmp = fs_buf; fa0c: 9c05 ldr r4, [sp, #20] fa0e: e7a3 b.n f958 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fa10: b2db uxtb r3, r3 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fa12: 700b strb r3, [r1, #0] pos -= px_size; fa14: 465b mov r3, fp fa16: 1aff subs r7, r7, r3 fa18: b27f sxtb r7, r7 if(pos < 0) { fa1a: 2f00 cmp r7, #0 fa1c: db13 blt.n fa46 fa1e: 3103 adds r1, #3 for(i = 0; i < len; i++) { fa20: 42a9 cmp r1, r5 fa22: d013 beq.n fa4c uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fa24: 7823 ldrb r3, [r4, #0] fa26: 4699 mov r9, r3 fa28: 0003 movs r3, r0 fa2a: 40bb lsls r3, r7 fa2c: 464a mov r2, r9 fa2e: 4013 ands r3, r2 fa30: 413b asrs r3, r7 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; fa32: 4642 mov r2, r8 fa34: 7b12 ldrb r2, [r2, #12] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fa36: 4032 ands r2, r6 fa38: 2a0e cmp r2, #14 fa3a: d0e9 beq.n fa10 dsc->header.cf == LV_IMG_CF_ALPHA_8BIT ? val_act : opa_table[val_act]; fa3c: 4662 mov r2, ip fa3e: 4013 ands r3, r2 buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + LV_IMG_PX_SIZE_ALPHA_BYTE - 1] = fa40: 4652 mov r2, sl fa42: 5cd3 ldrb r3, [r2, r3] fa44: e7e5 b.n fa12 pos = 8 - px_size; fa46: 9f03 ldr r7, [sp, #12] data_tmp++; fa48: 3401 adds r4, #1 fa4a: e7e8 b.n fa1e } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fa4c: 9805 ldr r0, [sp, #20] fa4e: 4b4b ldr r3, [pc, #300] ; (fb7c ) fa50: 4798 blx r3 res = lv_img_decoder_built_in_line_alpha(dsc, x, y, len, buf); fa52: 2001 movs r0, #1 fa54: e6bd b.n f7d2 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); fa56: 7b08 ldrb r0, [r1, #12] fa58: 06c0 lsls r0, r0, #27 fa5a: 0ec0 lsrs r0, r0, #27 fa5c: 4b39 ldr r3, [pc, #228] ; (fb44 ) fa5e: 4798 blx r3 fa60: 4681 mov r9, r0 uint16_t mask = (1 << px_size) - 1; /*E.g. px_size = 2; mask = 0x03*/ fa62: 2301 movs r3, #1 fa64: 4083 lsls r3, r0 fa66: 3b01 subs r3, #1 fa68: b29b uxth r3, r3 fa6a: 4698 mov r8, r3 lv_coord_t w = 0; int8_t pos = 0; uint32_t ofs = 0; switch(dsc->header.cf) { fa6c: 7b2b ldrb r3, [r5, #12] fa6e: 06db lsls r3, r3, #27 fa70: 0edb lsrs r3, r3, #27 fa72: b2da uxtb r2, r3 fa74: 2a08 cmp r2, #8 fa76: d04d beq.n fb14 fa78: d915 bls.n faa6 fa7a: b2da uxtb r2, r3 fa7c: 2a09 cmp r2, #9 fa7e: d100 bne.n fa82 fa80: e07e b.n fb80 fa82: 2a0a cmp r2, #10 fa84: d000 beq.n fa88 fa86: e093 b.n fbb0 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)*/ fa88: 68eb ldr r3, [r5, #12] fa8a: 02db lsls r3, r3, #11 fa8c: 0d5b lsrs r3, r3, #21 fa8e: b29a uxth r2, r3 fa90: b21b sxth r3, r3 fa92: 469a mov sl, r3 ofs += w * y + x; /*First pixel*/ fa94: 9c03 ldr r4, [sp, #12] fa96: 4354 muls r4, r2 fa98: 19e7 adds r7, r4, r7 ofs += 1024; /*Skip the palette*/ fa9a: 2380 movs r3, #128 ; 0x80 fa9c: 00db lsls r3, r3, #3 fa9e: 469b mov fp, r3 faa0: 44bb add fp, r7 pos = 0; faa2: 2400 movs r4, #0 faa4: e016 b.n fad4 switch(dsc->header.cf) { faa6: 2a07 cmp r2, #7 faa8: d000 beq.n faac faaa: e081 b.n fbb0 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ faac: 68eb ldr r3, [r5, #12] faae: 02db lsls r3, r3, #11 fab0: 0d5b lsrs r3, r3, #21 fab2: 10da asrs r2, r3, #3 if(dsc->header.w & 0x7) w++; fab4: 1c51 adds r1, r2, #1 fab6: 468a mov sl, r1 fab8: 075b lsls r3, r3, #29 faba: d101 bne.n fac0 w = (dsc->header.w >> 3); /*E.g. w = 20 -> w = 2 + 1*/ fabc: b213 sxth r3, r2 fabe: 469a mov sl, r3 ofs += w * y + (x >> 3); /*First pixel*/ fac0: 4653 mov r3, sl fac2: 9c03 ldr r4, [sp, #12] fac4: 435c muls r4, r3 fac6: 10fb asrs r3, r7, #3 fac8: 18e4 adds r4, r4, r3 ofs += 8; /*Skip the palette*/ faca: 2308 movs r3, #8 facc: 469b mov fp, r3 face: 44a3 add fp, r4 pos = 7 - (x & 0x7); fad0: 2407 movs r4, #7 fad2: 43bc bics r4, r7 break; } lv_img_decoder_built_in_data_t * user_data = dsc->user_data; fad4: 69ef ldr r7, [r5, #28] #if LV_USE_FILESYSTEM uint8_t * fs_buf = _lv_mem_buf_get(w); fad6: 4650 mov r0, sl fad8: 4b27 ldr r3, [pc, #156] ; (fb78 ) fada: 4798 blx r3 fadc: 9004 str r0, [sp, #16] #endif const uint8_t * data_tmp = NULL; if(dsc->src_type == LV_IMG_SRC_VARIABLE) { fade: 7aab ldrb r3, [r5, #10] fae0: 2b00 cmp r3, #0 fae2: d16a bne.n fbba const lv_img_dsc_t * img_dsc = dsc->src; data_tmp = img_dsc->data + ofs; fae4: 686b ldr r3, [r5, #4] fae6: 6899 ldr r1, [r3, #8] fae8: 4459 add r1, fp return LV_RES_INV; #endif } lv_coord_t i; for(i = 0; i < len; i++) { faea: 2e00 cmp r6, #0 faec: dc00 bgt.n faf0 faee: e08b b.n fc08 faf0: 9817 ldr r0, [sp, #92] ; 0x5c faf2: 3e01 subs r6, #1 faf4: b2b6 uxth r6, r6 faf6: 3601 adds r6, #1 faf8: 0073 lsls r3, r6, #1 fafa: 199e adds r6, r3, r6 fafc: 4684 mov ip, r0 fafe: 4466 add r6, ip uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; lv_color_t color = user_data->palette[val_act]; fb00: 23ff movs r3, #255 ; 0xff fb02: 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; fb04: 2208 movs r2, #8 fb06: 464b mov r3, r9 fb08: 1ad2 subs r2, r2, r3 fb0a: b253 sxtb r3, r2 fb0c: 9303 str r3, [sp, #12] fb0e: 46b4 mov ip, r6 fb10: 464e mov r6, r9 fb12: e062 b.n fbda w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fb14: 68eb ldr r3, [r5, #12] fb16: 02db lsls r3, r3, #11 fb18: 0d5b lsrs r3, r3, #21 fb1a: 109a asrs r2, r3, #2 if(dsc->header.w & 0x3) w++; fb1c: 1c51 adds r1, r2, #1 fb1e: 468a mov sl, r1 fb20: 079b lsls r3, r3, #30 fb22: d101 bne.n fb28 w = (dsc->header.w >> 2); /*E.g. w = 13 -> w = 3 + 1 (bytes)*/ fb24: b213 sxth r3, r2 fb26: 469a mov sl, r3 ofs += w * y + (x >> 2); /*First pixel*/ fb28: 4653 mov r3, sl fb2a: 9c03 ldr r4, [sp, #12] fb2c: 435c muls r4, r3 fb2e: 10bb asrs r3, r7, #2 fb30: 18e4 adds r4, r4, r3 ofs += 16; /*Skip the palette*/ fb32: 2310 movs r3, #16 fb34: 469b mov fp, r3 fb36: 44a3 add fp, r4 pos = 6 - ((x & 0x3) * 2); fb38: b2bf uxth r7, r7 fb3a: 2403 movs r4, #3 fb3c: 43bc bics r4, r7 fb3e: 0064 lsls r4, r4, #1 fb40: e7c8 b.n fad4 fb42: 46c0 nop ; (mov r8, r8) fb44: 000092a9 .word 0x000092a9 fb48: 00011bcb .word 0x00011bcb fb4c: 00011b89 .word 0x00011b89 fb50: 00026830 .word 0x00026830 fb54: 000266b4 .word 0x000266b4 fb58: 00000235 .word 0x00000235 fb5c: 00026700 .word 0x00026700 fb60: 00012159 .word 0x00012159 fb64: 0002680c .word 0x0002680c fb68: 0000022e .word 0x0000022e fb6c: 00026854 .word 0x00026854 fb70: 00026690 .word 0x00026690 fb74: 00026610 .word 0x00026610 fb78: 000127a1 .word 0x000127a1 fb7c: 00012465 .word 0x00012465 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fb80: 68eb ldr r3, [r5, #12] fb82: 02db lsls r3, r3, #11 fb84: 0d5b lsrs r3, r3, #21 fb86: 105a asrs r2, r3, #1 if(dsc->header.w & 0x1) w++; fb88: 1c51 adds r1, r2, #1 fb8a: 468a mov sl, r1 fb8c: 07db lsls r3, r3, #31 fb8e: d401 bmi.n fb94 w = (dsc->header.w >> 1); /*E.g. w = 13 -> w = 6 + 1 (bytes)*/ fb90: b213 sxth r3, r2 fb92: 469a mov sl, r3 ofs += w * y + (x >> 1); /*First pixel*/ fb94: 4653 mov r3, sl fb96: 9c03 ldr r4, [sp, #12] fb98: 435c muls r4, r3 fb9a: 107b asrs r3, r7, #1 fb9c: 18e4 adds r4, r4, r3 ofs += 64; /*Skip the palette*/ fb9e: 2340 movs r3, #64 ; 0x40 fba0: 469b mov fp, r3 fba2: 44a3 add fp, r4 pos = 4 - ((x & 0x1) * 4); fba4: 2401 movs r4, #1 fba6: 4027 ands r7, r4 fba8: 427c negs r4, r7 fbaa: 417c adcs r4, r7 fbac: 00a4 lsls r4, r4, #2 fbae: e791 b.n fad4 uint32_t ofs = 0; fbb0: 2300 movs r3, #0 fbb2: 469b mov fp, r3 int8_t pos = 0; fbb4: 2400 movs r4, #0 lv_coord_t w = 0; fbb6: 469a mov sl, r3 fbb8: e78c b.n fad4 lv_fs_seek(user_data->f, ofs + 4); /*+4 to skip the header*/ fbba: 4659 mov r1, fp fbbc: 3104 adds r1, #4 fbbe: 6838 ldr r0, [r7, #0] fbc0: 4b14 ldr r3, [pc, #80] ; (fc14 ) fbc2: 4798 blx r3 lv_fs_read(user_data->f, fs_buf, w, NULL); fbc4: 2300 movs r3, #0 fbc6: 4652 mov r2, sl fbc8: 9904 ldr r1, [sp, #16] fbca: 6838 ldr r0, [r7, #0] fbcc: 4d12 ldr r5, [pc, #72] ; (fc18 ) fbce: 47a8 blx r5 data_tmp = fs_buf; fbd0: 9904 ldr r1, [sp, #16] fbd2: e78a b.n faea fbd4: 3003 adds r0, #3 for(i = 0; i < len; i++) { fbd6: 4560 cmp r0, ip fbd8: d016 beq.n fc08 uint8_t val_act = (*data_tmp & (mask << pos)) >> pos; fbda: 780a ldrb r2, [r1, #0] fbdc: 4643 mov r3, r8 fbde: 40a3 lsls r3, r4 fbe0: 4013 ands r3, r2 fbe2: 4123 asrs r3, r4 lv_color_t color = user_data->palette[val_act]; fbe4: 4652 mov r2, sl fbe6: 4013 ands r3, r2 fbe8: 005a lsls r2, r3, #1 fbea: 687d ldr r5, [r7, #4] fbec: 5b52 ldrh r2, [r2, r5] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE] = color.full & 0xFF; fbee: 7002 strb r2, [r0, #0] buf[i * LV_IMG_PX_SIZE_ALPHA_BYTE + 1] = (color.full >> 8) & 0xFF; fbf0: 0a12 lsrs r2, r2, #8 fbf2: 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]; fbf4: 68ba ldr r2, [r7, #8] fbf6: 5cd3 ldrb r3, [r2, r3] fbf8: 7083 strb r3, [r0, #2] pos -= px_size; fbfa: 1ba4 subs r4, r4, r6 fbfc: b264 sxtb r4, r4 if(pos < 0) { fbfe: 2c00 cmp r4, #0 fc00: dae8 bge.n fbd4 pos = 8 - px_size; fc02: 9c03 ldr r4, [sp, #12] data_tmp++; fc04: 3101 adds r1, #1 fc06: e7e5 b.n fbd4 } } #if LV_USE_FILESYSTEM _lv_mem_buf_release(fs_buf); fc08: 9804 ldr r0, [sp, #16] fc0a: 4b04 ldr r3, [pc, #16] ; (fc1c ) fc0c: 4798 blx r3 res = lv_img_decoder_built_in_line_indexed(dsc, x, y, len, buf); fc0e: 2001 movs r0, #1 fc10: e5df b.n f7d2 fc12: 46c0 nop ; (mov r8, r8) fc14: 00011bcb .word 0x00011bcb fc18: 00011b89 .word 0x00011b89 fc1c: 00012465 .word 0x00012465 0000fc20 : { fc20: b5f0 push {r4, r5, r6, r7, lr} fc22: b083 sub sp, #12 fc24: 9001 str r0, [sp, #4] fc26: 000d movs r5, r1 header->always_zero = 0; fc28: 780a ldrb r2, [r1, #0] fc2a: 231f movs r3, #31 fc2c: 4013 ands r3, r2 fc2e: 700b strb r3, [r1, #0] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fc30: 480d ldr r0, [pc, #52] ; (fc68 ) fc32: 4b0e ldr r3, [pc, #56] ; (fc6c ) fc34: 4798 blx r3 fc36: 1e04 subs r4, r0, #0 fc38: d014 beq.n fc64 fc3a: 4e0d ldr r6, [pc, #52] ; (fc70 ) fc3c: e005 b.n fc4a res = LV_RES_INV; fc3e: 2700 movs r7, #0 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fc40: 0021 movs r1, r4 fc42: 4809 ldr r0, [pc, #36] ; (fc68 ) fc44: 47b0 blx r6 fc46: 1e04 subs r4, r0, #0 fc48: d009 beq.n fc5e if(d->info_cb) { fc4a: 6823 ldr r3, [r4, #0] fc4c: 2b00 cmp r3, #0 fc4e: d0f6 beq.n fc3e res = d->info_cb(d, src, header); fc50: 002a movs r2, r5 fc52: 9901 ldr r1, [sp, #4] fc54: 0020 movs r0, r4 fc56: 4798 blx r3 fc58: 0007 movs r7, r0 if(res == LV_RES_OK) break; fc5a: 2801 cmp r0, #1 fc5c: d1f0 bne.n fc40 } fc5e: 0038 movs r0, r7 fc60: b003 add sp, #12 fc62: bdf0 pop {r4, r5, r6, r7, pc} lv_res_t res = LV_RES_INV; fc64: 2700 movs r7, #0 fc66: e7fa b.n fc5e fc68: 20004d2c .word 0x20004d2c fc6c: 00011e85 .word 0x00011e85 fc70: 00011e9d .word 0x00011e9d 0000fc74 : { fc74: b5f0 push {r4, r5, r6, r7, lr} fc76: b083 sub sp, #12 fc78: 0007 movs r7, r0 fc7a: 9100 str r1, [sp, #0] dsc->color = color; fc7c: 8102 strh r2, [r0, #8] dsc->src_type = lv_img_src_get_type(src); fc7e: 0008 movs r0, r1 fc80: 4b25 ldr r3, [pc, #148] ; (fd18 ) fc82: 4798 blx r3 fc84: 72b8 strb r0, [r7, #10] dsc->user_data = NULL; fc86: 2300 movs r3, #0 fc88: 61fb str r3, [r7, #28] if(dsc->src_type == LV_IMG_SRC_FILE) { fc8a: 2801 cmp r0, #1 fc8c: d00e beq.n fcac dsc->src = src; fc8e: 9b00 ldr r3, [sp, #0] fc90: 607b str r3, [r7, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fc92: 4822 ldr r0, [pc, #136] ; (fd1c ) fc94: 4b22 ldr r3, [pc, #136] ; (fd20 ) fc96: 4798 blx r3 fc98: 1e04 subs r4, r0, #0 fc9a: d036 beq.n fd0a fc9c: 2500 movs r5, #0 res = d->info_cb(d, src, &dsc->header); fc9e: 230c movs r3, #12 fca0: 469c mov ip, r3 fca2: 44bc add ip, r7 fca4: 4663 mov r3, ip fca6: 9301 str r3, [sp, #4] _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fca8: 4e1e ldr r6, [pc, #120] ; (fd24 ) fcaa: e010 b.n fcce size_t fnlen = strlen(src); fcac: 9c00 ldr r4, [sp, #0] fcae: 0020 movs r0, r4 fcb0: 4b1d ldr r3, [pc, #116] ; (fd28 ) fcb2: 4798 blx r3 dsc->src = lv_mem_alloc(fnlen + 1); fcb4: 3001 adds r0, #1 fcb6: 4b1d ldr r3, [pc, #116] ; (fd2c ) fcb8: 4798 blx r3 fcba: 6078 str r0, [r7, #4] strcpy((char *)dsc->src, src); fcbc: 0021 movs r1, r4 fcbe: 4b1c ldr r3, [pc, #112] ; (fd30 ) fcc0: 4798 blx r3 fcc2: e7e6 b.n fc92 _LV_LL_READ(LV_GC_ROOT(_lv_img_defoder_ll), d) { fcc4: 0021 movs r1, r4 fcc6: 4815 ldr r0, [pc, #84] ; (fd1c ) fcc8: 47b0 blx r6 fcca: 1e04 subs r4, r0, #0 fccc: d018 beq.n fd00 if(d->info_cb == NULL || d->open_cb == NULL) continue; fcce: 6823 ldr r3, [r4, #0] fcd0: 2b00 cmp r3, #0 fcd2: d0f7 beq.n fcc4 fcd4: 6862 ldr r2, [r4, #4] fcd6: 2a00 cmp r2, #0 fcd8: d0f4 beq.n fcc4 res = d->info_cb(d, src, &dsc->header); fcda: 9a01 ldr r2, [sp, #4] fcdc: 9900 ldr r1, [sp, #0] fcde: 0020 movs r0, r4 fce0: 4798 blx r3 fce2: 0005 movs r5, r0 if(res != LV_RES_OK) continue; fce4: 2801 cmp r0, #1 fce6: d1ed bne.n fcc4 dsc->error_msg = NULL; fce8: 2300 movs r3, #0 fcea: 61bb str r3, [r7, #24] dsc->img_data = NULL; fcec: 613b str r3, [r7, #16] dsc->decoder = d; fcee: 603c str r4, [r7, #0] res = d->open_cb(d, dsc); fcf0: 0039 movs r1, r7 fcf2: 0020 movs r0, r4 fcf4: 6863 ldr r3, [r4, #4] fcf6: 4798 blx r3 fcf8: 0005 movs r5, r0 if(res == LV_RES_OK) break; fcfa: 2801 cmp r0, #1 fcfc: d1e2 bne.n fcc4 fcfe: e001 b.n fd04 if(res == LV_RES_INV) { fd00: 2d00 cmp r5, #0 fd02: d003 beq.n fd0c } fd04: 0028 movs r0, r5 fd06: b003 add sp, #12 fd08: bdf0 pop {r4, r5, r6, r7, pc} lv_res_t res = LV_RES_INV; fd0a: 2500 movs r5, #0 _lv_memset_00(dsc, sizeof(lv_img_decoder_dsc_t)); fd0c: 2120 movs r1, #32 fd0e: 0038 movs r0, r7 fd10: 4b08 ldr r3, [pc, #32] ; (fd34 ) fd12: 4798 blx r3 fd14: e7f6 b.n fd04 fd16: 46c0 nop ; (mov r8, r8) fd18: 00009589 .word 0x00009589 fd1c: 20004d2c .word 0x20004d2c fd20: 00011e85 .word 0x00011e85 fd24: 00011e9d .word 0x00011e9d fd28: 0001c709 .word 0x0001c709 fd2c: 000122dd .word 0x000122dd fd30: 0001c6f9 .word 0x0001c6f9 fd34: 00012975 .word 0x00012975 0000fd38 : { fd38: b570 push {r4, r5, r6, lr} fd3a: b082 sub sp, #8 if(dsc->decoder->read_line_cb) res = dsc->decoder->read_line_cb(dsc->decoder, dsc, x, y, len, buf); fd3c: 6805 ldr r5, [r0, #0] fd3e: 68ac ldr r4, [r5, #8] fd40: 2c00 cmp r4, #0 fd42: d009 beq.n fd58 fd44: 9e06 ldr r6, [sp, #24] fd46: 9601 str r6, [sp, #4] fd48: 9300 str r3, [sp, #0] fd4a: 0013 movs r3, r2 fd4c: 000a movs r2, r1 fd4e: 0001 movs r1, r0 fd50: 0028 movs r0, r5 fd52: 47a0 blx r4 } fd54: b002 add sp, #8 fd56: bd70 pop {r4, r5, r6, pc} lv_res_t res = LV_RES_INV; fd58: 2000 movs r0, #0 fd5a: e7fb b.n fd54 0000fd5c : { fd5c: b510 push {r4, lr} fd5e: 0004 movs r4, r0 if(dsc->decoder) { fd60: 6800 ldr r0, [r0, #0] fd62: 2800 cmp r0, #0 fd64: d007 beq.n fd76 if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); fd66: 68c3 ldr r3, [r0, #12] fd68: 2b00 cmp r3, #0 fd6a: d001 beq.n fd70 fd6c: 0021 movs r1, r4 fd6e: 4798 blx r3 if(dsc->src_type == LV_IMG_SRC_FILE) { fd70: 7aa3 ldrb r3, [r4, #10] fd72: 2b01 cmp r3, #1 fd74: d000 beq.n fd78 } fd76: bd10 pop {r4, pc} lv_mem_free(dsc->src); fd78: 6860 ldr r0, [r4, #4] fd7a: 4b02 ldr r3, [pc, #8] ; (fd84 ) fd7c: 4798 blx r3 dsc->src = NULL; fd7e: 2300 movs r3, #0 fd80: 6063 str r3, [r4, #4] } fd82: e7f8 b.n fd76 fd84: 000123c9 .word 0x000123c9 0000fd88 : { fd88: b530 push {r4, r5, lr} fd8a: b083 sub sp, #12 decoder = _lv_ll_ins_head(&LV_GC_ROOT(_lv_img_defoder_ll)); fd8c: 480e ldr r0, [pc, #56] ; (fdc8 ) fd8e: 4b0f ldr r3, [pc, #60] ; (fdcc ) fd90: 4798 blx r3 fd92: 0004 movs r4, r0 LV_ASSERT_MEM(decoder); fd94: 4b0e ldr r3, [pc, #56] ; (fdd0 ) fd96: 4798 blx r3 fd98: 2800 cmp r0, #0 fd9a: d008 beq.n fdae if(decoder == NULL) return NULL; fd9c: 2c00 cmp r4, #0 fd9e: d003 beq.n fda8 _lv_memset_00(decoder, sizeof(lv_img_decoder_t)); fda0: 2110 movs r1, #16 fda2: 0020 movs r0, r4 fda4: 4b0b ldr r3, [pc, #44] ; (fdd4 ) fda6: 4798 blx r3 } fda8: 0020 movs r0, r4 fdaa: b003 add sp, #12 fdac: bd30 pop {r4, r5, pc} LV_ASSERT_MEM(decoder); fdae: 4b0a ldr r3, [pc, #40] ; (fdd8 ) fdb0: 9300 str r3, [sp, #0] fdb2: 22c9 movs r2, #201 ; 0xc9 fdb4: 4909 ldr r1, [pc, #36] ; (fddc ) fdb6: 3003 adds r0, #3 fdb8: 4d09 ldr r5, [pc, #36] ; (fde0 ) fdba: 47a8 blx r5 fdbc: 0022 movs r2, r4 fdbe: 2300 movs r3, #0 fdc0: 4808 ldr r0, [pc, #32] ; (fde4 ) fdc2: 4909 ldr r1, [pc, #36] ; (fde8 ) fdc4: 4788 blx r1 fdc6: e7fe b.n fdc6 fdc8: 20004d2c .word 0x20004d2c fdcc: 00011de5 .word 0x00011de5 fdd0: 000017ad .word 0x000017ad fdd4: 00012975 .word 0x00012975 fdd8: 00026638 .word 0x00026638 fddc: 00026700 .word 0x00026700 fde0: 00012159 .word 0x00012159 fde4: 00025854 .word 0x00025854 fde8: 000017b5 .word 0x000017b5 0000fdec <_lv_img_decoder_init>: { fdec: b510 push {r4, lr} fdee: b082 sub sp, #8 _lv_ll_init(&LV_GC_ROOT(_lv_img_defoder_ll), sizeof(lv_img_decoder_t)); fdf0: 2110 movs r1, #16 fdf2: 4815 ldr r0, [pc, #84] ; (fe48 <_lv_img_decoder_init+0x5c>) fdf4: 4b15 ldr r3, [pc, #84] ; (fe4c <_lv_img_decoder_init+0x60>) fdf6: 4798 blx r3 decoder = lv_img_decoder_create(); fdf8: 4b15 ldr r3, [pc, #84] ; (fe50 <_lv_img_decoder_init+0x64>) fdfa: 4798 blx r3 if(decoder == NULL) { fdfc: 2800 cmp r0, #0 fdfe: d009 beq.n fe14 <_lv_img_decoder_init+0x28> decoder->info_cb = info_cb; fe00: 4b14 ldr r3, [pc, #80] ; (fe54 <_lv_img_decoder_init+0x68>) fe02: 6003 str r3, [r0, #0] decoder->open_cb = open_cb; fe04: 4b14 ldr r3, [pc, #80] ; (fe58 <_lv_img_decoder_init+0x6c>) fe06: 6043 str r3, [r0, #4] decoder->read_line_cb = read_line_cb; fe08: 4b14 ldr r3, [pc, #80] ; (fe5c <_lv_img_decoder_init+0x70>) fe0a: 6083 str r3, [r0, #8] decoder->close_cb = close_cb; fe0c: 4b14 ldr r3, [pc, #80] ; (fe60 <_lv_img_decoder_init+0x74>) fe0e: 60c3 str r3, [r0, #12] } fe10: b002 add sp, #8 fe12: bd10 pop {r4, pc} LV_LOG_WARN("lv_img_decoder_init: out of memory"); fe14: 4b13 ldr r3, [pc, #76] ; (fe64 <_lv_img_decoder_init+0x78>) fe16: 9300 str r3, [sp, #0] fe18: 4b13 ldr r3, [pc, #76] ; (fe68 <_lv_img_decoder_init+0x7c>) fe1a: 2247 movs r2, #71 ; 0x47 fe1c: 4913 ldr r1, [pc, #76] ; (fe6c <_lv_img_decoder_init+0x80>) fe1e: 3002 adds r0, #2 fe20: 4c13 ldr r4, [pc, #76] ; (fe70 <_lv_img_decoder_init+0x84>) fe22: 47a0 blx r4 LV_ASSERT_MEM(decoder); fe24: 2000 movs r0, #0 fe26: 4b13 ldr r3, [pc, #76] ; (fe74 <_lv_img_decoder_init+0x88>) fe28: 4798 blx r3 fe2a: 2800 cmp r0, #0 fe2c: d1f0 bne.n fe10 <_lv_img_decoder_init+0x24> fe2e: 4b0e ldr r3, [pc, #56] ; (fe68 <_lv_img_decoder_init+0x7c>) fe30: 9300 str r3, [sp, #0] fe32: 2248 movs r2, #72 ; 0x48 fe34: 490d ldr r1, [pc, #52] ; (fe6c <_lv_img_decoder_init+0x80>) fe36: 3003 adds r0, #3 fe38: 4c0d ldr r4, [pc, #52] ; (fe70 <_lv_img_decoder_init+0x84>) fe3a: 47a0 blx r4 fe3c: 2200 movs r2, #0 fe3e: 2300 movs r3, #0 fe40: 480d ldr r0, [pc, #52] ; (fe78 <_lv_img_decoder_init+0x8c>) fe42: 490e ldr r1, [pc, #56] ; (fe7c <_lv_img_decoder_init+0x90>) fe44: 4788 blx r1 fe46: e7fe b.n fe46 <_lv_img_decoder_init+0x5a> fe48: 20004d2c .word 0x20004d2c fe4c: 00011dd1 .word 0x00011dd1 fe50: 0000fd89 .word 0x0000fd89 fe54: 0000f269 .word 0x0000f269 fe58: 0000f3c1 .word 0x0000f3c1 fe5c: 0000f7a5 .word 0x0000f7a5 fe60: 0000f37d .word 0x0000f37d fe64: 000266dc .word 0x000266dc fe68: 00026620 .word 0x00026620 fe6c: 00026700 .word 0x00026700 fe70: 00012159 .word 0x00012159 fe74: 000017ad .word 0x000017ad fe78: 00025854 .word 0x00025854 fe7c: 000017b5 .word 0x000017b5 0000fe80 : * @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) { fe80: b510 push {r4, lr} return font_p->get_glyph_bitmap(font_p, letter); fe82: 6843 ldr r3, [r0, #4] fe84: 4798 blx r3 } fe86: bd10 pop {r4, pc} 0000fe88 : * @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) { fe88: b510 push {r4, lr} return font_p->get_glyph_dsc(font_p, dsc_out, letter, letter_next); fe8a: 6804 ldr r4, [r0, #0] fe8c: 47a0 blx r4 } fe8e: bd10 pop {r4, pc} 0000fe90 : * @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) { fe90: b510 push {r4, lr} fe92: b084 sub sp, #16 fe94: 0013 movs r3, r2 lv_font_glyph_dsc_t g; bool ret; ret = lv_font_get_glyph_dsc(font, &g, letter, letter_next); fe96: 000a movs r2, r1 fe98: a901 add r1, sp, #4 fe9a: 4c05 ldr r4, [pc, #20] ; (feb0 ) fe9c: 47a0 blx r4 if(ret) return g.adv_w; else return 0; fe9e: 2300 movs r3, #0 if(ret) return g.adv_w; fea0: 2800 cmp r0, #0 fea2: d001 beq.n fea8 fea4: ab01 add r3, sp, #4 fea6: 881b ldrh r3, [r3, #0] } fea8: 0018 movs r0, r3 feaa: b004 add sp, #16 feac: bd10 pop {r4, pc} feae: 46c0 nop ; (mov r8, r8) feb0: 0000fe89 .word 0x0000fe89 0000feb4 : { 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]; feb4: 7803 ldrb r3, [r0, #0] feb6: 780a ldrb r2, [r1, #0] feb8: 4293 cmp r3, r2 feba: d001 beq.n fec0 febc: 1a98 subs r0, r3, r2 else return (int32_t) ref8_p[1] - element8_p[1]; } febe: 4770 bx lr else return (int32_t) ref8_p[1] - element8_p[1]; fec0: 7840 ldrb r0, [r0, #1] fec2: 784b ldrb r3, [r1, #1] fec4: 1ac0 subs r0, r0, r3 fec6: e7fa b.n febe 0000fec8 : { 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]; fec8: 8803 ldrh r3, [r0, #0] feca: 880a ldrh r2, [r1, #0] fecc: 4293 cmp r3, r2 fece: d001 beq.n fed4 fed0: 1a98 subs r0, r3, r2 else return (int32_t) ref16_p[1] - element16_p[1]; } fed2: 4770 bx lr else return (int32_t) ref16_p[1] - element16_p[1]; fed4: 8840 ldrh r0, [r0, #2] fed6: 884b ldrh r3, [r1, #2] fed8: 1ac0 subs r0, r0, r3 feda: e7fa b.n fed2 0000fedc : * @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)); fedc: 8800 ldrh r0, [r0, #0] fede: 880b ldrh r3, [r1, #0] fee0: 1ac0 subs r0, r0, r3 } fee2: 4770 bx lr 0000fee4 : { fee4: b5f0 push {r4, r5, r6, r7, lr} fee6: b087 sub sp, #28 fee8: 000c movs r4, r1 if(letter == '\0') return 0; feea: 1e0b subs r3, r1, #0 feec: d018 beq.n ff20 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; feee: 6906 ldr r6, [r0, #16] if(letter == fdsc->last_letter) return fdsc->last_glyph_id; fef0: 69b3 ldr r3, [r6, #24] fef2: 4299 cmp r1, r3 fef4: d017 beq.n ff26 for(i = 0; i < fdsc->cmap_num; i++) { fef6: 8a72 ldrh r2, [r6, #18] fef8: 0592 lsls r2, r2, #22 fefa: 0d92 lsrs r2, r2, #22 fefc: 2a00 cmp r2, #0 fefe: dd62 ble.n ffc6 uint32_t rcp = letter - fdsc->cmaps[i].range_start; ff00: 68b7 ldr r7, [r6, #8] ff02: 683b ldr r3, [r7, #0] ff04: 1ac8 subs r0, r1, r3 ff06: 9005 str r0, [sp, #20] if(rcp > fdsc->cmaps[i].range_length) continue; ff08: 88bb ldrh r3, [r7, #4] ff0a: 4298 cmp r0, r3 ff0c: d80d bhi.n ff2a uint32_t rcp = letter - fdsc->cmaps[i].range_start; ff0e: 2300 movs r3, #0 ff10: 9303 str r3, [sp, #12] if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY) { ff12: 7cba ldrb r2, [r7, #18] ff14: 2a00 cmp r2, #0 ff16: d11a bne.n ff4e glyph_id = fdsc->cmaps[i].glyph_id_start + rcp; ff18: 88fb ldrh r3, [r7, #6] ff1a: 181b adds r3, r3, r0 fdsc->last_letter = letter; ff1c: 61b4 str r4, [r6, #24] fdsc->last_glyph_id = glyph_id; ff1e: 61f3 str r3, [r6, #28] } ff20: 0018 movs r0, r3 ff22: b007 add sp, #28 ff24: bdf0 pop {r4, r5, r6, r7, pc} if(letter == fdsc->last_letter) return fdsc->last_glyph_id; ff26: 69f3 ldr r3, [r6, #28] ff28: e7fa b.n ff20 if(rcp > fdsc->cmaps[i].range_length) continue; ff2a: 2100 movs r1, #0 for(i = 0; i < fdsc->cmap_num; i++) { ff2c: 3101 adds r1, #1 ff2e: b289 uxth r1, r1 ff30: 4291 cmp r1, r2 ff32: da48 bge.n ffc6 uint32_t rcp = letter - fdsc->cmaps[i].range_start; ff34: 008b lsls r3, r1, #2 ff36: 185b adds r3, r3, r1 ff38: 009b lsls r3, r3, #2 ff3a: 9303 str r3, [sp, #12] ff3c: 18fb adds r3, r7, r3 ff3e: 6818 ldr r0, [r3, #0] ff40: 1a20 subs r0, r4, r0 ff42: 9005 str r0, [sp, #20] if(rcp > fdsc->cmaps[i].range_length) continue; ff44: 889d ldrh r5, [r3, #4] ff46: 42a8 cmp r0, r5 ff48: d8f0 bhi.n ff2c uint32_t rcp = letter - fdsc->cmaps[i].range_start; ff4a: 001f movs r7, r3 ff4c: e7e1 b.n ff12 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL) { ff4e: 2a01 cmp r2, #1 ff50: d01b beq.n ff8a else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_TINY) { ff52: 2a02 cmp r2, #2 ff54: d01e beq.n ff94 uint32_t glyph_id = 0; ff56: 2300 movs r3, #0 else if(fdsc->cmaps[i].type == LV_FONT_FMT_TXT_CMAP_SPARSE_FULL) { ff58: 2a03 cmp r2, #3 ff5a: d1df bne.n ff1c uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, ff5c: 8a3a ldrh r2, [r7, #16] ff5e: 68b9 ldr r1, [r7, #8] ff60: 4b1b ldr r3, [pc, #108] ; (ffd0 ) ff62: 9300 str r3, [sp, #0] ff64: 2302 movs r3, #2 ff66: a805 add r0, sp, #20 ff68: 4f1a ldr r7, [pc, #104] ; (ffd4 ) ff6a: 47b8 blx r7 if(p) { ff6c: 2800 cmp r0, #0 ff6e: d028 beq.n ffc2 lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); ff70: 9b03 ldr r3, [sp, #12] ff72: 68b2 ldr r2, [r6, #8] ff74: 4694 mov ip, r2 ff76: 4463 add r3, ip ff78: 001d movs r5, r3 ff7a: 689b ldr r3, [r3, #8] ff7c: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ ff7e: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_16[ofs]; ff80: 68eb ldr r3, [r5, #12] ff82: 5c18 ldrb r0, [r3, r0] ff84: 88eb ldrh r3, [r5, #6] ff86: 18c3 adds r3, r0, r3 ff88: e7c8 b.n ff1c glyph_id = fdsc->cmaps[i].glyph_id_start + gid_ofs_8[rcp]; ff8a: 68fb ldr r3, [r7, #12] ff8c: 5c18 ldrb r0, [r3, r0] ff8e: 88fb ldrh r3, [r7, #6] ff90: 18c3 adds r3, r0, r3 ff92: e7c3 b.n ff1c uint8_t * p = _lv_utils_bsearch(&rcp, fdsc->cmaps[i].unicode_list, fdsc->cmaps[i].list_length, ff94: 8a3a ldrh r2, [r7, #16] ff96: 68b9 ldr r1, [r7, #8] ff98: 4b0d ldr r3, [pc, #52] ; (ffd0 ) ff9a: 9300 str r3, [sp, #0] ff9c: 2302 movs r3, #2 ff9e: a805 add r0, sp, #20 ffa0: 4f0c ldr r7, [pc, #48] ; (ffd4 ) ffa2: 47b8 blx r7 if(p) { ffa4: 2800 cmp r0, #0 ffa6: d00a beq.n ffbe lv_uintptr_t ofs = (lv_uintptr_t)(p - (uint8_t *) fdsc->cmaps[i].unicode_list); ffa8: 9b03 ldr r3, [sp, #12] ffaa: 68b2 ldr r2, [r6, #8] ffac: 4694 mov ip, r2 ffae: 4463 add r3, ip ffb0: 001d movs r5, r3 ffb2: 689b ldr r3, [r3, #8] ffb4: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*The list stores `uint16_t` so the get the index divide by 2*/ ffb6: 0840 lsrs r0, r0, #1 glyph_id = fdsc->cmaps[i].glyph_id_start + ofs; ffb8: 88eb ldrh r3, [r5, #6] ffba: 18c3 adds r3, r0, r3 ffbc: e7ae b.n ff1c uint32_t glyph_id = 0; ffbe: 2300 movs r3, #0 ffc0: e7ac b.n ff1c ffc2: 2300 movs r3, #0 ffc4: e7aa b.n ff1c fdsc->last_letter = letter; ffc6: 61b4 str r4, [r6, #24] fdsc->last_glyph_id = 0; ffc8: 2300 movs r3, #0 ffca: 61f3 str r3, [r6, #28] return 0; ffcc: e7a8 b.n ff20 ffce: 46c0 nop ; (mov r8, r8) ffd0: 0000fedd .word 0x0000fedd ffd4: 0001406d .word 0x0001406d 0000ffd8 : { ffd8: b5f0 push {r4, r5, r6, r7, lr} ffda: 46de mov lr, fp ffdc: 4657 mov r7, sl ffde: 464e mov r6, r9 ffe0: 4645 mov r5, r8 ffe2: b5e0 push {r5, r6, r7, lr} ffe4: b09b sub sp, #108 ; 0x6c if(unicode_letter == '\t') unicode_letter = ' '; ffe6: 2909 cmp r1, #9 ffe8: d01c beq.n 10024 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; ffea: 6905 ldr r5, [r0, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); ffec: 4bd0 ldr r3, [pc, #832] ; (10330 ) ffee: 4798 blx r3 if(!gid) return NULL; fff0: 2800 cmp r0, #0 fff2: d101 bne.n fff8 fff4: f000 fce7 bl 109c6 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; fff8: 00c0 lsls r0, r0, #3 fffa: 686b ldr r3, [r5, #4] fffc: 181e adds r6, r3, r0 if(fdsc->bitmap_format == LV_FONT_FMT_TXT_PLAIN) { fffe: 7d2b ldrb r3, [r5, #20] 10000: 079b lsls r3, r3, #30 10002: d111 bne.n 10028 if(gdsc) return &fdsc->glyph_bitmap[gdsc->bitmap_index]; 10004: 2e00 cmp r6, #0 10006: d101 bne.n 1000c 10008: f000 fce0 bl 109cc 1000c: 6830 ldr r0, [r6, #0] 1000e: 0300 lsls r0, r0, #12 10010: 0b03 lsrs r3, r0, #12 10012: 6828 ldr r0, [r5, #0] 10014: 18c0 adds r0, r0, r3 } 10016: b01b add sp, #108 ; 0x6c 10018: bc3c pop {r2, r3, r4, r5} 1001a: 4690 mov r8, r2 1001c: 4699 mov r9, r3 1001e: 46a2 mov sl, r4 10020: 46ab mov fp, r5 10022: bdf0 pop {r4, r5, r6, r7, pc} if(unicode_letter == '\t') unicode_letter = ' '; 10024: 3117 adds r1, #23 10026: e7e0 b.n ffea uint32_t gsize = gdsc->box_w * gdsc->box_h; 10028: 7933 ldrb r3, [r6, #4] 1002a: 7974 ldrb r4, [r6, #5] 1002c: 435c muls r4, r3 if(gsize == 0) return NULL; 1002e: 2c00 cmp r4, #0 10030: d101 bne.n 10036 10032: f000 fcce bl 109d2 switch(fdsc->bpp) { 10036: 7ceb ldrb r3, [r5, #19] 10038: 069b lsls r3, r3, #26 1003a: 0f1b lsrs r3, r3, #28 1003c: b2da uxtb r2, r3 1003e: 2a02 cmp r2, #2 10040: d100 bne.n 10044 10042: e08d b.n 10160 10044: d908 bls.n 10058 10046: b2da uxtb r2, r3 10048: 2a03 cmp r2, #3 1004a: d100 bne.n 1004e 1004c: e08b b.n 10166 1004e: 2a04 cmp r2, #4 10050: d104 bne.n 1005c buf_size = (gsize + 1) >> 1; 10052: 3401 adds r4, #1 10054: 0864 lsrs r4, r4, #1 break; 10056: e001 b.n 1005c switch(fdsc->bpp) { 10058: 2a01 cmp r2, #1 1005a: d07e beq.n 1015a if(_lv_mem_get_size(decompr_buf) < buf_size) { 1005c: 4bb5 ldr r3, [pc, #724] ; (10334 ) 1005e: 6818 ldr r0, [r3, #0] 10060: 4bb5 ldr r3, [pc, #724] ; (10338 ) 10062: 4798 blx r3 10064: 4284 cmp r4, r0 10066: d90f bls.n 10088 decompr_buf = lv_mem_realloc(decompr_buf, buf_size); 10068: 4fb2 ldr r7, [pc, #712] ; (10334 ) 1006a: 0021 movs r1, r4 1006c: 6838 ldr r0, [r7, #0] 1006e: 4bb3 ldr r3, [pc, #716] ; (1033c ) 10070: 4798 blx r3 10072: 6038 str r0, [r7, #0] LV_ASSERT_MEM(decompr_buf); 10074: 4bb2 ldr r3, [pc, #712] ; (10340 ) 10076: 4798 blx r3 10078: 2800 cmp r0, #0 1007a: d077 beq.n 1016c if(decompr_buf == NULL) return NULL; 1007c: 4bad ldr r3, [pc, #692] ; (10334 ) 1007e: 681b ldr r3, [r3, #0] 10080: 2b00 cmp r3, #0 10082: d101 bne.n 10088 10084: f000 fca8 bl 109d8 decompress(&fdsc->glyph_bitmap[gdsc->bitmap_index], decompr_buf, gdsc->box_w, gdsc->box_h, (uint8_t)fdsc->bpp); 10088: 6833 ldr r3, [r6, #0] 1008a: 031b lsls r3, r3, #12 1008c: 0b1b lsrs r3, r3, #12 1008e: 682a ldr r2, [r5, #0] 10090: 18d2 adds r2, r2, r3 10092: 4ba8 ldr r3, [pc, #672] ; (10334 ) 10094: 681b ldr r3, [r3, #0] 10096: 9305 str r3, [sp, #20] 10098: 7933 ldrb r3, [r6, #4] 1009a: 930f str r3, [sp, #60] ; 0x3c 1009c: b21b sxth r3, r3 1009e: 9313 str r3, [sp, #76] ; 0x4c 100a0: 7973 ldrb r3, [r6, #5] 100a2: 9312 str r3, [sp, #72] ; 0x48 100a4: b21b sxth r3, r3 100a6: 9310 str r3, [sp, #64] ; 0x40 100a8: 7ceb ldrb r3, [r5, #19] 100aa: 069b lsls r3, r3, #26 100ac: 0f1b lsrs r3, r3, #28 100ae: b2d9 uxtb r1, r3 100b0: 9102 str r1, [sp, #8] uint8_t wr_size = bpp; 100b2: 9108 str r1, [sp, #32] if(bpp == 3) wr_size = 4; 100b4: 2903 cmp r1, #3 100b6: d067 beq.n 10188 rle_in = in; 100b8: 49a2 ldr r1, [pc, #648] ; (10344 ) 100ba: 600a str r2, [r1, #0] rle_bpp = bpp; 100bc: 4aa2 ldr r2, [pc, #648] ; (10348 ) 100be: 7013 strb r3, [r2, #0] rle_state = RLE_STATE_SINGLE; 100c0: 2300 movs r3, #0 100c2: 4aa2 ldr r2, [pc, #648] ; (1034c ) 100c4: 7013 strb r3, [r2, #0] rle_rdp = 0; 100c6: 4aa2 ldr r2, [pc, #648] ; (10350 ) 100c8: 6013 str r3, [r2, #0] rle_prev_v = 0; 100ca: 4aa2 ldr r2, [pc, #648] ; (10354 ) 100cc: 7013 strb r3, [r2, #0] rle_cnt = 0; 100ce: 4aa2 ldr r2, [pc, #648] ; (10358 ) 100d0: 7013 strb r3, [r2, #0] uint8_t * line_buf1 = _lv_mem_buf_get(w); 100d2: 9f0f ldr r7, [sp, #60] ; 0x3c 100d4: 0038 movs r0, r7 100d6: 4ca1 ldr r4, [pc, #644] ; (1035c ) 100d8: 47a0 blx r4 100da: 0005 movs r5, r0 100dc: 9019 str r0, [sp, #100] ; 0x64 uint8_t * line_buf2 = _lv_mem_buf_get(w); 100de: 0038 movs r0, r7 100e0: 47a0 blx r4 100e2: 9003 str r0, [sp, #12] for(i = 0; i < w; i++) { 100e4: 9b13 ldr r3, [sp, #76] ; 0x4c 100e6: 2b00 cmp r3, #0 100e8: dc00 bgt.n 100ec 100ea: e26a b.n 105c2 100ec: 4b99 ldr r3, [pc, #612] ; (10354 ) 100ee: 781b ldrb r3, [r3, #0] 100f0: 9304 str r3, [sp, #16] 100f2: 4b99 ldr r3, [pc, #612] ; (10358 ) 100f4: 781b ldrb r3, [r3, #0] 100f6: 469a mov sl, r3 ret = get_bits(rle_in, rle_rdp, rle_bpp); 100f8: 4b92 ldr r3, [pc, #584] ; (10344 ) 100fa: 681e ldr r6, [r3, #0] 100fc: 4b94 ldr r3, [pc, #592] ; (10350 ) 100fe: 6818 ldr r0, [r3, #0] 10100: 4b91 ldr r3, [pc, #580] ; (10348 ) 10102: 781b ldrb r3, [r3, #0] 10104: 4699 mov r9, r3 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10106: 2301 movs r3, #1 10108: 4649 mov r1, r9 1010a: 408b lsls r3, r1 1010c: 3b01 subs r3, #1 1010e: b2db uxtb r3, r3 10110: 930d str r3, [sp, #52] ; 0x34 10112: 2308 movs r3, #8 10114: 1a5b subs r3, r3, r1 10116: 930e str r3, [sp, #56] ; 0x38 10118: 2310 movs r3, #16 1011a: 1a5b subs r3, r3, r1 1011c: 930c str r3, [sp, #48] ; 0x30 1011e: 4b8b ldr r3, [pc, #556] ; (1034c ) 10120: 781b ldrb r3, [r3, #0] 10122: 469c mov ip, r3 10124: 002c movs r4, r5 10126: 003b movs r3, r7 10128: 3b01 subs r3, #1 1012a: b29b uxth r3, r3 1012c: 3301 adds r3, #1 1012e: 9311 str r3, [sp, #68] ; 0x44 10130: 002a movs r2, r5 10132: 469b mov fp, r3 10134: 445a add r2, fp 10136: 920b str r2, [sp, #44] ; 0x2c if(bit_pos + len >= 8) { 10138: 2300 movs r3, #0 1013a: 9307 str r3, [sp, #28] 1013c: 930a str r3, [sp, #40] ; 0x28 1013e: 2100 movs r1, #0 10140: 9309 str r3, [sp, #36] ; 0x24 switch(len) { 10142: 464b mov r3, r9 10144: 009b lsls r3, r3, #2 10146: 469b mov fp, r3 10148: 4b85 ldr r3, [pc, #532] ; (10360 ) 1014a: 445b add r3, fp 1014c: 9314 str r3, [sp, #80] ; 0x50 1014e: 4653 mov r3, sl 10150: 9306 str r3, [sp, #24] 10152: 46a8 mov r8, r5 10154: 4667 mov r7, ip 10156: 464d mov r5, r9 10158: e038 b.n 101cc buf_size = (gsize + 7) >> 3; 1015a: 3407 adds r4, #7 1015c: 08e4 lsrs r4, r4, #3 break; 1015e: e77d b.n 1005c buf_size = (gsize + 3) >> 2; 10160: 3403 adds r4, #3 10162: 08a4 lsrs r4, r4, #2 break; 10164: e77a b.n 1005c buf_size = (gsize + 1) >> 1; 10166: 3401 adds r4, #1 10168: 0864 lsrs r4, r4, #1 break; 1016a: e777 b.n 1005c LV_ASSERT_MEM(decompr_buf); 1016c: 4b7d ldr r3, [pc, #500] ; (10364 ) 1016e: 9300 str r3, [sp, #0] 10170: 2272 movs r2, #114 ; 0x72 10172: 497d ldr r1, [pc, #500] ; (10368 ) 10174: 3003 adds r0, #3 10176: 4c7d ldr r4, [pc, #500] ; (1036c ) 10178: 47a0 blx r4 1017a: 4b6e ldr r3, [pc, #440] ; (10334 ) 1017c: 681a ldr r2, [r3, #0] 1017e: 2300 movs r3, #0 10180: 487b ldr r0, [pc, #492] ; (10370 ) 10182: 497c ldr r1, [pc, #496] ; (10374 ) 10184: 4788 blx r1 10186: e7fe b.n 10186 if(bpp == 3) wr_size = 4; 10188: 3101 adds r1, #1 1018a: 9108 str r1, [sp, #32] 1018c: e794 b.n 100b8 bit_mask = 0x3; 1018e: 2303 movs r3, #3 10190: 469c mov ip, r3 uint32_t byte_pos = bit_pos >> 3; 10192: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; 10194: 2107 movs r1, #7 10196: 4001 ands r1, r0 if(bit_pos + len >= 8) { 10198: 194a adds r2, r1, r5 1019a: 2a07 cmp r2, #7 1019c: d82f bhi.n 101fe return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1019e: 5cf3 ldrb r3, [r6, r3] 101a0: 9a0e ldr r2, [sp, #56] ; 0x38 101a2: 1a51 subs r1, r2, r1 101a4: 410b asrs r3, r1 101a6: 4662 mov r2, ip 101a8: 401a ands r2, r3 101aa: 0013 movs r3, r2 if(rle_rdp != 0 && rle_prev_v == ret) { 101ac: 2800 cmp r0, #0 101ae: d002 beq.n 101b6 101b0: 9a04 ldr r2, [sp, #16] 101b2: 4293 cmp r3, r2 101b4: d031 beq.n 1021a rle_rdp += rle_bpp; 101b6: 1940 adds r0, r0, r5 rle_prev_v = ret; 101b8: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 101ba: 2101 movs r1, #1 101bc: 2201 movs r2, #1 101be: 9209 str r2, [sp, #36] ; 0x24 out[i] = rle_next(); 101c0: 7023 strb r3, [r4, #0] 101c2: 3401 adds r4, #1 for(i = 0; i < w; i++) { 101c4: 9b0b ldr r3, [sp, #44] ; 0x2c 101c6: 429c cmp r4, r3 101c8: d100 bne.n 101cc 101ca: e150 b.n 1046e if(rle_state == RLE_STATE_SINGLE) { 101cc: 2f00 cmp r7, #0 101ce: d12c bne.n 1022a switch(len) { 101d0: 464b mov r3, r9 101d2: 2b08 cmp r3, #8 101d4: d80d bhi.n 101f2 101d6: 4b68 ldr r3, [pc, #416] ; (10378 ) 101d8: 465a mov r2, fp 101da: 589b ldr r3, [r3, r2] 101dc: 9309 str r3, [sp, #36] ; 0x24 101de: 469f mov pc, r3 bit_mask = 0x7; 101e0: 2307 movs r3, #7 101e2: 469c mov ip, r3 101e4: e7d5 b.n 10192 bit_mask = 0xF; 101e6: 230f movs r3, #15 101e8: 469c mov ip, r3 101ea: e7d2 b.n 10192 bit_mask = 0xFF; 101ec: 23ff movs r3, #255 ; 0xff 101ee: 469c mov ip, r3 101f0: e7cf b.n 10192 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 101f2: 9b0d ldr r3, [sp, #52] ; 0x34 101f4: 469c mov ip, r3 101f6: e7cc b.n 10192 bit_mask = 0x1; 101f8: 2301 movs r3, #1 101fa: 469c mov ip, r3 101fc: e7c9 b.n 10192 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 101fe: 5cf2 ldrb r2, [r6, r3] 10200: 0212 lsls r2, r2, #8 10202: 4692 mov sl, r2 10204: 18f3 adds r3, r6, r3 10206: 785b ldrb r3, [r3, #1] 10208: 4453 add r3, sl return (in16 >> (16 - bit_pos - len)) & bit_mask; 1020a: b29b uxth r3, r3 1020c: 9a0c ldr r2, [sp, #48] ; 0x30 1020e: 1a51 subs r1, r2, r1 10210: 410b asrs r3, r1 10212: 4662 mov r2, ip 10214: 401a ands r2, r3 10216: 0013 movs r3, r2 10218: e7c8 b.n 101ac if(rle_rdp != 0 && rle_prev_v == ret) { 1021a: 2201 movs r2, #1 1021c: 9207 str r2, [sp, #28] rle_cnt = 0; 1021e: 2200 movs r2, #0 10220: 9206 str r2, [sp, #24] if(rle_rdp != 0 && rle_prev_v == ret) { 10222: 3201 adds r2, #1 10224: 920a str r2, [sp, #40] ; 0x28 rle_state = RLE_STATE_REPEATE; 10226: 2701 movs r7, #1 10228: e7c5 b.n 101b6 else if(rle_state == RLE_STATE_REPEATE) { 1022a: 2f01 cmp r7, #1 1022c: d011 beq.n 10252 uint8_t ret = 0; 1022e: 2300 movs r3, #0 else if(rle_state == RLE_STATE_COUNTER) { 10230: 2f02 cmp r7, #2 10232: d1c5 bne.n 101c0 rle_cnt--; 10234: 9a06 ldr r2, [sp, #24] 10236: 3a01 subs r2, #1 10238: b2d3 uxtb r3, r2 1023a: 9306 str r3, [sp, #24] if(rle_cnt == 0) { 1023c: 2b00 cmp r3, #0 1023e: d000 beq.n 10242 10240: e111 b.n 10466 switch(len) { 10242: 464b mov r3, r9 10244: 2b08 cmp r3, #8 10246: d900 bls.n 1024a 10248: e0f6 b.n 10438 1024a: 9b14 ldr r3, [sp, #80] ; 0x50 1024c: 681b ldr r3, [r3, #0] 1024e: 9304 str r3, [sp, #16] 10250: 469f mov pc, r3 uint32_t byte_pos = bit_pos >> 3; 10252: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; 10254: 2107 movs r1, #7 10256: 4001 ands r1, r0 if(bit_pos + len >= 8) { 10258: 1c4a adds r2, r1, #1 1025a: 2a07 cmp r2, #7 1025c: d815 bhi.n 1028a return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1025e: 5cf3 ldrb r3, [r6, r3] 10260: 43c9 mvns r1, r1 10262: 3108 adds r1, #8 10264: 410b asrs r3, r1 10266: 2201 movs r2, #1 10268: 4013 ands r3, r2 rle_cnt++; 1026a: 9a06 ldr r2, [sp, #24] 1026c: 3201 adds r2, #1 1026e: b2d2 uxtb r2, r2 10270: 9206 str r2, [sp, #24] rle_rdp += 1; 10272: 1c41 adds r1, r0, #1 if(v == 1) { 10274: 2b01 cmp r3, #1 10276: d015 beq.n 102a4 switch(len) { 10278: 464b mov r3, r9 1027a: 2b08 cmp r3, #8 1027c: d900 bls.n 10280 1027e: e0b0 b.n 103e2 10280: 4b3e ldr r3, [pc, #248] ; (1037c ) 10282: 465a mov r2, fp 10284: 589b ldr r3, [r3, r2] 10286: 9304 str r3, [sp, #16] 10288: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1028a: 5cf2 ldrb r2, [r6, r3] 1028c: 0212 lsls r2, r2, #8 1028e: 4694 mov ip, r2 10290: 18f3 adds r3, r6, r3 10292: 785b ldrb r3, [r3, #1] 10294: 4463 add r3, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; 10296: b29b uxth r3, r3 10298: 43c9 mvns r1, r1 1029a: 3110 adds r1, #16 1029c: 410b asrs r3, r1 1029e: 2201 movs r2, #1 102a0: 4013 ands r3, r2 102a2: e7e2 b.n 1026a if(rle_cnt == 11) { 102a4: 2a0b cmp r2, #11 102a6: d005 beq.n 102b4 rle_rdp += 1; 102a8: 0008 movs r0, r1 ret = rle_prev_v; 102aa: 9b04 ldr r3, [sp, #16] if(rle_cnt == 11) { 102ac: 2201 movs r2, #1 102ae: 9207 str r2, [sp, #28] 102b0: 2101 movs r1, #1 102b2: e785 b.n 101c0 uint32_t byte_pos = bit_pos >> 3; 102b4: 08cb lsrs r3, r1, #3 bit_pos = bit_pos & 0x7; 102b6: 2207 movs r2, #7 102b8: 4011 ands r1, r2 if(bit_pos + len >= 8) { 102ba: 1d8a adds r2, r1, #6 102bc: 2a07 cmp r2, #7 102be: d813 bhi.n 102e8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 102c0: 5cf2 ldrb r2, [r6, r3] 102c2: 2302 movs r3, #2 102c4: 1a59 subs r1, r3, r1 102c6: 410a asrs r2, r1 102c8: 333d adds r3, #61 ; 0x3d 102ca: 401a ands r2, r3 102cc: 9206 str r2, [sp, #24] rle_rdp += 6; 102ce: 3007 adds r0, #7 if(rle_cnt != 0) { 102d0: 9b06 ldr r3, [sp, #24] 102d2: 2b00 cmp r3, #0 102d4: d000 beq.n 102d8 102d6: e0bf b.n 10458 switch(len) { 102d8: 464b mov r3, r9 102da: 2b08 cmp r3, #8 102dc: d824 bhi.n 10328 102de: 4b28 ldr r3, [pc, #160] ; (10380 ) 102e0: 465a mov r2, fp 102e2: 589b ldr r3, [r3, r2] 102e4: 9304 str r3, [sp, #16] 102e6: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 102e8: 5cf2 ldrb r2, [r6, r3] 102ea: 0212 lsls r2, r2, #8 102ec: 18f3 adds r3, r6, r3 102ee: 785b ldrb r3, [r3, #1] 102f0: 189a adds r2, r3, r2 return (in16 >> (16 - bit_pos - len)) & bit_mask; 102f2: b292 uxth r2, r2 102f4: 230a movs r3, #10 102f6: 1a59 subs r1, r3, r1 102f8: 410a asrs r2, r1 102fa: 3335 adds r3, #53 ; 0x35 102fc: 401a ands r2, r3 102fe: 9206 str r2, [sp, #24] 10300: e7e5 b.n 102ce bit_mask = 0x3; 10302: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; 10304: 08c7 lsrs r7, r0, #3 bit_pos = bit_pos & 0x7; 10306: 2107 movs r1, #7 10308: 4001 ands r1, r0 if(bit_pos + len >= 8) { 1030a: 194a adds r2, r1, r5 1030c: 2a07 cmp r2, #7 1030e: d839 bhi.n 10384 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10310: 5df7 ldrb r7, [r6, r7] 10312: 9a0e ldr r2, [sp, #56] ; 0x38 10314: 1a51 subs r1, r2, r1 10316: 410f asrs r7, r1 10318: 403b ands r3, r7 1031a: e03e b.n 1039a bit_mask = 0x7; 1031c: 2307 movs r3, #7 1031e: e7f1 b.n 10304 bit_mask = 0xF; 10320: 230f movs r3, #15 10322: e7ef b.n 10304 bit_mask = 0xFF; 10324: 23ff movs r3, #255 ; 0xff 10326: e7ed b.n 10304 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10328: 9b0d ldr r3, [sp, #52] ; 0x34 1032a: e7eb b.n 10304 bit_mask = 0x1; 1032c: 2301 movs r3, #1 1032e: e7e9 b.n 10304 10330: 0000fee5 .word 0x0000fee5 10334: 20002bc8 .word 0x20002bc8 10338: 00012445 .word 0x00012445 1033c: 000126fd .word 0x000126fd 10340: 000017ad .word 0x000017ad 10344: 20002bd0 .word 0x20002bd0 10348: 20002bcc .word 0x20002bcc 1034c: 20002bdc .word 0x20002bdc 10350: 20002bd8 .word 0x20002bd8 10354: 20002bd4 .word 0x20002bd4 10358: 20002bcd .word 0x20002bcd 1035c: 000127a1 .word 0x000127a1 10360: 000268b4 .word 0x000268b4 10364: 000269f0 .word 0x000269f0 10368: 00026a0c .word 0x00026a0c 1036c: 00012159 .word 0x00012159 10370: 00025854 .word 0x00025854 10374: 000017b5 .word 0x000017b5 10378: 00026890 .word 0x00026890 1037c: 000268d8 .word 0x000268d8 10380: 000268fc .word 0x000268fc uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10384: 5df2 ldrb r2, [r6, r7] 10386: 0212 lsls r2, r2, #8 10388: 4694 mov ip, r2 1038a: 19f7 adds r7, r6, r7 1038c: 787f ldrb r7, [r7, #1] 1038e: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; 10390: b2bf uxth r7, r7 10392: 9a0c ldr r2, [sp, #48] ; 0x30 10394: 1a51 subs r1, r2, r1 10396: 410f asrs r7, r1 10398: 403b ands r3, r7 rle_rdp += rle_bpp; 1039a: 1940 adds r0, r0, r5 rle_prev_v = ret; 1039c: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 1039e: 2201 movs r2, #1 103a0: 9207 str r2, [sp, #28] 103a2: 920a str r2, [sp, #40] ; 0x28 rle_state = RLE_STATE_SINGLE; 103a4: 2700 movs r7, #0 rle_rdp += rle_bpp; 103a6: 2101 movs r1, #1 103a8: 9209 str r2, [sp, #36] ; 0x24 103aa: e709 b.n 101c0 bit_mask = 0x3; 103ac: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; 103ae: 08cf lsrs r7, r1, #3 bit_pos = bit_pos & 0x7; 103b0: 2007 movs r0, #7 103b2: 4008 ands r0, r1 if(bit_pos + len >= 8) { 103b4: 1942 adds r2, r0, r5 103b6: 2a07 cmp r2, #7 103b8: d817 bhi.n 103ea return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 103ba: 5df7 ldrb r7, [r6, r7] 103bc: 9a0e ldr r2, [sp, #56] ; 0x38 103be: 1a10 subs r0, r2, r0 103c0: 4107 asrs r7, r0 103c2: 403b ands r3, r7 rle_rdp += rle_bpp; 103c4: 1948 adds r0, r1, r5 rle_prev_v = ret; 103c6: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 103c8: 2201 movs r2, #1 103ca: 9207 str r2, [sp, #28] 103cc: 920a str r2, [sp, #40] ; 0x28 rle_state = RLE_STATE_SINGLE; 103ce: 2700 movs r7, #0 rle_rdp += rle_bpp; 103d0: 2101 movs r1, #1 103d2: 9209 str r2, [sp, #36] ; 0x24 103d4: e6f4 b.n 101c0 bit_mask = 0x7; 103d6: 2307 movs r3, #7 103d8: e7e9 b.n 103ae bit_mask = 0xF; 103da: 230f movs r3, #15 103dc: e7e7 b.n 103ae bit_mask = 0xFF; 103de: 23ff movs r3, #255 ; 0xff 103e0: e7e5 b.n 103ae bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 103e2: 9b0d ldr r3, [sp, #52] ; 0x34 103e4: e7e3 b.n 103ae bit_mask = 0x1; 103e6: 2301 movs r3, #1 103e8: e7e1 b.n 103ae uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 103ea: 5df2 ldrb r2, [r6, r7] 103ec: 0212 lsls r2, r2, #8 103ee: 4694 mov ip, r2 103f0: 19f7 adds r7, r6, r7 103f2: 787f ldrb r7, [r7, #1] 103f4: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; 103f6: b2bf uxth r7, r7 103f8: 9a0c ldr r2, [sp, #48] ; 0x30 103fa: 1a10 subs r0, r2, r0 103fc: 4107 asrs r7, r0 103fe: 403b ands r3, r7 10400: e7e0 b.n 103c4 bit_mask = 0x3; 10402: 2303 movs r3, #3 uint32_t byte_pos = bit_pos >> 3; 10404: 08c7 lsrs r7, r0, #3 bit_pos = bit_pos & 0x7; 10406: 2107 movs r1, #7 10408: 4001 ands r1, r0 if(bit_pos + len >= 8) { 1040a: 194a adds r2, r1, r5 1040c: 2a07 cmp r2, #7 1040e: d817 bhi.n 10440 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10410: 5df7 ldrb r7, [r6, r7] 10412: 9a0e ldr r2, [sp, #56] ; 0x38 10414: 1a51 subs r1, r2, r1 10416: 410f asrs r7, r1 10418: 403b ands r3, r7 rle_rdp += rle_bpp; 1041a: 1940 adds r0, r0, r5 rle_prev_v = ret; 1041c: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 1041e: 2201 movs r2, #1 10420: 9207 str r2, [sp, #28] 10422: 920a str r2, [sp, #40] ; 0x28 rle_state = RLE_STATE_SINGLE; 10424: 2700 movs r7, #0 rle_rdp += rle_bpp; 10426: 2101 movs r1, #1 10428: 9209 str r2, [sp, #36] ; 0x24 1042a: e6c9 b.n 101c0 bit_mask = 0x7; 1042c: 2307 movs r3, #7 1042e: e7e9 b.n 10404 bit_mask = 0xF; 10430: 230f movs r3, #15 10432: e7e7 b.n 10404 bit_mask = 0xFF; 10434: 23ff movs r3, #255 ; 0xff 10436: e7e5 b.n 10404 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10438: 9b0d ldr r3, [sp, #52] ; 0x34 1043a: e7e3 b.n 10404 bit_mask = 0x1; 1043c: 2301 movs r3, #1 1043e: e7e1 b.n 10404 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10440: 5df2 ldrb r2, [r6, r7] 10442: 0212 lsls r2, r2, #8 10444: 4694 mov ip, r2 10446: 19f7 adds r7, r6, r7 10448: 787f ldrb r7, [r7, #1] 1044a: 4467 add r7, ip return (in16 >> (16 - bit_pos - len)) & bit_mask; 1044c: b2bf uxth r7, r7 1044e: 9a0c ldr r2, [sp, #48] ; 0x30 10450: 1a51 subs r1, r2, r1 10452: 410f asrs r7, r1 10454: 403b ands r3, r7 10456: e7e0 b.n 1041a ret = rle_prev_v; 10458: 9b04 ldr r3, [sp, #16] if(rle_cnt != 0) { 1045a: 2201 movs r2, #1 1045c: 9207 str r2, [sp, #28] 1045e: 920a str r2, [sp, #40] ; 0x28 rle_state = RLE_STATE_COUNTER; 10460: 2702 movs r7, #2 if(rle_cnt != 0) { 10462: 2101 movs r1, #1 10464: e6ac b.n 101c0 ret = rle_prev_v; 10466: 9b04 ldr r3, [sp, #16] if(rle_cnt == 0) { 10468: 2201 movs r2, #1 1046a: 9207 str r2, [sp, #28] 1046c: e6a8 b.n 101c0 1046e: 9b06 ldr r3, [sp, #24] 10470: 469a mov sl, r3 10472: 4645 mov r5, r8 10474: 46bc mov ip, r7 10476: 9b09 ldr r3, [sp, #36] ; 0x24 10478: 2b00 cmp r3, #0 1047a: d114 bne.n 104a6 1047c: 2900 cmp r1, #0 1047e: d001 beq.n 10484 10480: 4bcc ldr r3, [pc, #816] ; (107b4 ) 10482: 6018 str r0, [r3, #0] 10484: 9b0a ldr r3, [sp, #40] ; 0x28 10486: 2b00 cmp r3, #0 10488: d002 beq.n 10490 1048a: 4bcb ldr r3, [pc, #812] ; (107b8 ) 1048c: 4662 mov r2, ip 1048e: 701a strb r2, [r3, #0] 10490: 9b07 ldr r3, [sp, #28] 10492: 2b00 cmp r3, #0 10494: d002 beq.n 1049c 10496: 4bc9 ldr r3, [pc, #804] ; (107bc ) 10498: 4652 mov r2, sl 1049a: 701a strb r2, [r3, #0] rle_rdp += rle_bpp; 1049c: 2600 movs r6, #0 if(len == 3) { 1049e: 9b02 ldr r3, [sp, #8] 104a0: 9304 str r3, [sp, #16] val = 6; 104a2: 002f movs r7, r5 104a4: e023 b.n 104ee 104a6: 4bc6 ldr r3, [pc, #792] ; (107c0 ) 104a8: 466a mov r2, sp 104aa: 7c12 ldrb r2, [r2, #16] 104ac: 701a strb r2, [r3, #0] 104ae: e7e5 b.n 1047c len = 4; 104b0: 2304 movs r3, #4 val = 0; 104b2: 2200 movs r2, #0 bit_pos = bit_pos & 0x7; 104b4: 2107 movs r1, #7 104b6: 4031 ands r1, r6 104b8: 2508 movs r5, #8 104ba: 1a6d subs r5, r5, r1 bit_pos = 8 - bit_pos - len; 104bc: 1aed subs r5, r5, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 104be: 0371 lsls r1, r6, #13 104c0: 0c09 lsrs r1, r1, #16 104c2: 9805 ldr r0, [sp, #20] 104c4: 4684 mov ip, r0 104c6: 4461 add r1, ip uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 104c8: 2001 movs r0, #1 104ca: 4098 lsls r0, r3 104cc: 0003 movs r3, r0 104ce: 3b01 subs r3, #1 out[byte_pos] &= ((~bit_mask) << bit_pos); 104d0: b2db uxtb r3, r3 104d2: 43db mvns r3, r3 104d4: 40ab lsls r3, r5 104d6: 7808 ldrb r0, [r1, #0] 104d8: 4003 ands r3, r0 out[byte_pos] |= (val << bit_pos); 104da: 40aa lsls r2, r5 104dc: 431a orrs r2, r3 104de: 700a strb r2, [r1, #0] wrp += wr_size; 104e0: 9a08 ldr r2, [sp, #32] 104e2: 0013 movs r3, r2 104e4: 4694 mov ip, r2 104e6: 4466 add r6, ip 104e8: 3701 adds r7, #1 for(x = 0; x < w; x++) { 104ea: 42a7 cmp r7, r4 104ec: d021 beq.n 10532 bits_write(out, wrp, line_buf1[x], bpp); 104ee: 783a ldrb r2, [r7, #0] if(len == 3) { 104f0: 9b04 ldr r3, [sp, #16] 104f2: 9902 ldr r1, [sp, #8] 104f4: 2903 cmp r1, #3 104f6: d1dd bne.n 104b4 switch(val) { 104f8: 2a07 cmp r2, #7 104fa: d818 bhi.n 1052e 104fc: 0092 lsls r2, r2, #2 104fe: 4bb1 ldr r3, [pc, #708] ; (107c4 ) 10500: 589b ldr r3, [r3, r2] 10502: 469f mov pc, r3 len = 4; 10504: 2304 movs r3, #4 val = 2; 10506: 2202 movs r2, #2 10508: e7d4 b.n 104b4 len = 4; 1050a: 2304 movs r3, #4 val = 4; 1050c: 2204 movs r2, #4 1050e: e7d1 b.n 104b4 len = 4; 10510: 2304 movs r3, #4 val = 6; 10512: 2206 movs r2, #6 10514: e7ce b.n 104b4 len = 4; 10516: 2304 movs r3, #4 val = 9; 10518: 2209 movs r2, #9 1051a: e7cb b.n 104b4 len = 4; 1051c: 2304 movs r3, #4 val = 11; 1051e: 220b movs r2, #11 10520: e7c8 b.n 104b4 len = 4; 10522: 2304 movs r3, #4 val = 13; 10524: 220d movs r2, #13 10526: e7c5 b.n 104b4 len = 4; 10528: 2304 movs r3, #4 val = 15; 1052a: 220f movs r2, #15 1052c: e7c2 b.n 104b4 len = 4; 1052e: 2304 movs r3, #4 10530: e7c0 b.n 104b4 10532: 9a11 ldr r2, [sp, #68] ; 0x44 10534: 435a muls r2, r3 10536: 9211 str r2, [sp, #68] ; 0x44 for(y = 1; y < h; y++) { 10538: 9b10 ldr r3, [sp, #64] ; 0x40 1053a: 2b01 cmp r3, #1 1053c: dc00 bgt.n 10540 1053e: e234 b.n 109aa ret = get_bits(rle_in, rle_rdp, rle_bpp); 10540: 4ba1 ldr r3, [pc, #644] ; (107c8 ) 10542: 681b ldr r3, [r3, #0] 10544: 001e movs r6, r3 10546: 4ba1 ldr r3, [pc, #644] ; (107cc ) 10548: 781b ldrb r3, [r3, #0] 1054a: 001a movs r2, r3 1054c: 930b str r3, [sp, #44] ; 0x2c bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 1054e: 2301 movs r3, #1 10550: 4093 lsls r3, r2 10552: 3b01 subs r3, #1 10554: b2db uxtb r3, r3 10556: 9314 str r3, [sp, #80] ; 0x50 if(bit_pos + len >= 8) { 10558: 4692 mov sl, r2 1055a: 4b98 ldr r3, [pc, #608] ; (107bc ) 1055c: 781b ldrb r3, [r3, #0] 1055e: 4698 mov r8, r3 10560: 2308 movs r3, #8 10562: 1a9b subs r3, r3, r2 10564: 930e str r3, [sp, #56] ; 0x38 10566: 2310 movs r3, #16 10568: 1a9b subs r3, r3, r2 1056a: 9310 str r3, [sp, #64] ; 0x40 1056c: 4b94 ldr r3, [pc, #592] ; (107c0 ) 1056e: 781b ldrb r3, [r3, #0] 10570: 9304 str r3, [sp, #16] 10572: 4b90 ldr r3, [pc, #576] ; (107b4 ) 10574: 6818 ldr r0, [r3, #0] 10576: 4b90 ldr r3, [pc, #576] ; (107b8 ) 10578: 7819 ldrb r1, [r3, #0] 1057a: 9b12 ldr r3, [sp, #72] ; 0x48 1057c: 3b02 subs r3, #2 1057e: b29b uxth r3, r3 10580: 3301 adds r3, #1 10582: 9315 str r3, [sp, #84] ; 0x54 10584: 9c08 ldr r4, [sp, #32] 10586: 9406 str r4, [sp, #24] 10588: 9b0f ldr r3, [sp, #60] ; 0x3c 1058a: 3b01 subs r3, #1 1058c: b29b uxth r3, r3 1058e: 001d movs r5, r3 10590: 9316 str r3, [sp, #88] ; 0x58 10592: 0023 movs r3, r4 10594: 436b muls r3, r5 10596: 9317 str r3, [sp, #92] ; 0x5c 10598: 2300 movs r3, #0 1059a: 9312 str r3, [sp, #72] ; 0x48 1059c: 930d str r3, [sp, #52] ; 0x34 1059e: 930f str r3, [sp, #60] ; 0x3c 105a0: 9309 str r3, [sp, #36] ; 0x24 105a2: 930a str r3, [sp, #40] ; 0x28 switch(len) { 105a4: 0093 lsls r3, r2, #2 105a6: 930c str r3, [sp, #48] ; 0x30 105a8: 4a89 ldr r2, [pc, #548] ; (107d0 ) 105aa: 469c mov ip, r3 105ac: 4462 add r2, ip 105ae: 9218 str r2, [sp, #96] ; 0x60 105b0: 9b13 ldr r3, [sp, #76] ; 0x4c 105b2: 469b mov fp, r3 105b4: 4643 mov r3, r8 105b6: 9308 str r3, [sp, #32] 105b8: 9b19 ldr r3, [sp, #100] ; 0x64 105ba: 001d movs r5, r3 105bc: 468c mov ip, r1 105be: 46b1 mov r9, r6 105c0: e1cf b.n 10962 for(i = 0; i < w; i++) { 105c2: 2300 movs r3, #0 105c4: 9311 str r3, [sp, #68] ; 0x44 105c6: e7b7 b.n 10538 bit_mask = 0x3; 105c8: 2303 movs r3, #3 105ca: e008 b.n 105de bit_mask = 0x7; 105cc: 2307 movs r3, #7 105ce: e006 b.n 105de bit_mask = 0xF; 105d0: 230f movs r3, #15 105d2: e004 b.n 105de bit_mask = 0xFF; 105d4: 23ff movs r3, #255 ; 0xff 105d6: e002 b.n 105de bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 105d8: 9b14 ldr r3, [sp, #80] ; 0x50 105da: e000 b.n 105de bit_mask = 0x1; 105dc: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; 105de: 08c5 lsrs r5, r0, #3 bit_pos = bit_pos & 0x7; 105e0: 2207 movs r2, #7 105e2: 4002 ands r2, r0 if(bit_pos + len >= 8) { 105e4: 1997 adds r7, r2, r6 105e6: 2f07 cmp r7, #7 105e8: d81f bhi.n 1062a return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 105ea: 464f mov r7, r9 105ec: 5d7d ldrb r5, [r7, r5] 105ee: 9f0e ldr r7, [sp, #56] ; 0x38 105f0: 1aba subs r2, r7, r2 105f2: 4115 asrs r5, r2 105f4: 402b ands r3, r5 105f6: b2db uxtb r3, r3 if(rle_rdp != 0 && rle_prev_v == ret) { 105f8: 2800 cmp r0, #0 105fa: d002 beq.n 10602 105fc: 9a04 ldr r2, [sp, #16] 105fe: 429a cmp r2, r3 10600: d021 beq.n 10646 rle_rdp += rle_bpp; 10602: 1980 adds r0, r0, r6 rle_prev_v = ret; 10604: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 10606: 2201 movs r2, #1 10608: 9209 str r2, [sp, #36] ; 0x24 1060a: 920a str r2, [sp, #40] ; 0x28 out[i] = rle_next(); 1060c: 7023 strb r3, [r4, #0] 1060e: 3401 adds r4, #1 for(i = 0; i < w; i++) { 10610: 4564 cmp r4, ip 10612: d100 bne.n 10616 10614: e141 b.n 1089a if(rle_state == RLE_STATE_SINGLE) { 10616: 2900 cmp r1, #0 10618: d11d bne.n 10656 switch(len) { 1061a: 9b0b ldr r3, [sp, #44] ; 0x2c 1061c: 2b08 cmp r3, #8 1061e: d8db bhi.n 105d8 10620: 9b0c ldr r3, [sp, #48] ; 0x30 10622: 4a6c ldr r2, [pc, #432] ; (107d4 ) 10624: 58d3 ldr r3, [r2, r3] 10626: 9307 str r3, [sp, #28] 10628: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1062a: 464f mov r7, r9 1062c: 5d7f ldrb r7, [r7, r5] 1062e: 023f lsls r7, r7, #8 10630: 46ba mov sl, r7 10632: 444d add r5, r9 10634: 786d ldrb r5, [r5, #1] 10636: 4455 add r5, sl return (in16 >> (16 - bit_pos - len)) & bit_mask; 10638: b2ad uxth r5, r5 1063a: 9f10 ldr r7, [sp, #64] ; 0x40 1063c: 1aba subs r2, r7, r2 1063e: 4115 asrs r5, r2 10640: 402b ands r3, r5 10642: b2db uxtb r3, r3 10644: e7d8 b.n 105f8 if(rle_rdp != 0 && rle_prev_v == ret) { 10646: 2201 movs r2, #1 10648: 920d str r2, [sp, #52] ; 0x34 rle_cnt = 0; 1064a: 2200 movs r2, #0 1064c: 9208 str r2, [sp, #32] if(rle_rdp != 0 && rle_prev_v == ret) { 1064e: 3201 adds r2, #1 10650: 920f str r2, [sp, #60] ; 0x3c rle_state = RLE_STATE_REPEATE; 10652: 2101 movs r1, #1 10654: e7d5 b.n 10602 else if(rle_state == RLE_STATE_REPEATE) { 10656: 2901 cmp r1, #1 10658: d011 beq.n 1067e uint8_t ret = 0; 1065a: 2300 movs r3, #0 else if(rle_state == RLE_STATE_COUNTER) { 1065c: 2902 cmp r1, #2 1065e: d1d5 bne.n 1060c rle_cnt--; 10660: 9b08 ldr r3, [sp, #32] 10662: 3b01 subs r3, #1 10664: b2db uxtb r3, r3 10666: 9308 str r3, [sp, #32] if(rle_cnt == 0) { 10668: 2b00 cmp r3, #0 1066a: d000 beq.n 1066e 1066c: e111 b.n 10892 switch(len) { 1066e: 9b0b ldr r3, [sp, #44] ; 0x2c 10670: 2b08 cmp r3, #8 10672: d900 bls.n 10676 10674: e0e0 b.n 10838 10676: 9b18 ldr r3, [sp, #96] ; 0x60 10678: 681b ldr r3, [r3, #0] 1067a: 9304 str r3, [sp, #16] 1067c: 469f mov pc, r3 uint32_t byte_pos = bit_pos >> 3; 1067e: 08c3 lsrs r3, r0, #3 bit_pos = bit_pos & 0x7; 10680: 2207 movs r2, #7 10682: 4002 ands r2, r0 if(bit_pos + len >= 8) { 10684: 1c55 adds r5, r2, #1 10686: 2d07 cmp r5, #7 10688: d816 bhi.n 106b8 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1068a: 464d mov r5, r9 1068c: 5ceb ldrb r3, [r5, r3] 1068e: 43d2 mvns r2, r2 10690: 3208 adds r2, #8 10692: 4113 asrs r3, r2 10694: 2201 movs r2, #1 10696: 4013 ands r3, r2 rle_cnt++; 10698: 9a08 ldr r2, [sp, #32] 1069a: 3201 adds r2, #1 1069c: b2d2 uxtb r2, r2 1069e: 9208 str r2, [sp, #32] rle_rdp += 1; 106a0: 1c45 adds r5, r0, #1 if(v == 1) { 106a2: 2b01 cmp r3, #1 106a4: d015 beq.n 106d2 switch(len) { 106a6: 9b0b ldr r3, [sp, #44] ; 0x2c 106a8: 2b08 cmp r3, #8 106aa: d900 bls.n 106ae 106ac: e080 b.n 107b0 106ae: 4b4a ldr r3, [pc, #296] ; (107d8 ) 106b0: 9a0c ldr r2, [sp, #48] ; 0x30 106b2: 589b ldr r3, [r3, r2] 106b4: 9304 str r3, [sp, #16] 106b6: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 106b8: 464d mov r5, r9 106ba: 5ced ldrb r5, [r5, r3] 106bc: 022d lsls r5, r5, #8 106be: 444b add r3, r9 106c0: 785b ldrb r3, [r3, #1] 106c2: 195b adds r3, r3, r5 return (in16 >> (16 - bit_pos - len)) & bit_mask; 106c4: b29b uxth r3, r3 106c6: 43d2 mvns r2, r2 106c8: 3210 adds r2, #16 106ca: 4113 asrs r3, r2 106cc: 2201 movs r2, #1 106ce: 4013 ands r3, r2 106d0: e7e2 b.n 10698 if(rle_cnt == 11) { 106d2: 2a0b cmp r2, #11 106d4: d005 beq.n 106e2 rle_rdp += 1; 106d6: 0028 movs r0, r5 ret = rle_prev_v; 106d8: 9b04 ldr r3, [sp, #16] if(rle_cnt == 11) { 106da: 2201 movs r2, #1 106dc: 920d str r2, [sp, #52] ; 0x34 106de: 9209 str r2, [sp, #36] ; 0x24 106e0: e794 b.n 1060c uint32_t byte_pos = bit_pos >> 3; 106e2: 08eb lsrs r3, r5, #3 bit_pos = bit_pos & 0x7; 106e4: 2207 movs r2, #7 106e6: 4015 ands r5, r2 if(bit_pos + len >= 8) { 106e8: 1daa adds r2, r5, #6 106ea: 2a07 cmp r2, #7 106ec: d814 bhi.n 10718 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 106ee: 464a mov r2, r9 106f0: 5cd3 ldrb r3, [r2, r3] 106f2: 2202 movs r2, #2 106f4: 1b55 subs r5, r2, r5 106f6: 412b asrs r3, r5 106f8: 323d adds r2, #61 ; 0x3d 106fa: 401a ands r2, r3 106fc: 9208 str r2, [sp, #32] rle_rdp += 6; 106fe: 3007 adds r0, #7 if(rle_cnt != 0) { 10700: 9b08 ldr r3, [sp, #32] 10702: 2b00 cmp r3, #0 10704: d000 beq.n 10708 10706: e0bd b.n 10884 switch(len) { 10708: 9b0b ldr r3, [sp, #44] ; 0x2c 1070a: 2b08 cmp r3, #8 1070c: d834 bhi.n 10778 1070e: 4b33 ldr r3, [pc, #204] ; (107dc ) 10710: 9a0c ldr r2, [sp, #48] ; 0x30 10712: 589b ldr r3, [r3, r2] 10714: 9304 str r3, [sp, #16] 10716: 469f mov pc, r3 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10718: 464a mov r2, r9 1071a: 5cd2 ldrb r2, [r2, r3] 1071c: 0212 lsls r2, r2, #8 1071e: 444b add r3, r9 10720: 785b ldrb r3, [r3, #1] 10722: 189b adds r3, r3, r2 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10724: b29b uxth r3, r3 10726: 220a movs r2, #10 10728: 1b55 subs r5, r2, r5 1072a: 412b asrs r3, r5 1072c: 3235 adds r2, #53 ; 0x35 1072e: 401a ands r2, r3 10730: 9208 str r2, [sp, #32] 10732: e7e4 b.n 106fe bit_mask = 0x3; 10734: 2303 movs r3, #3 10736: 469a mov sl, r3 uint32_t byte_pos = bit_pos >> 3; 10738: 08c5 lsrs r5, r0, #3 bit_pos = bit_pos & 0x7; 1073a: 2307 movs r3, #7 1073c: 4003 ands r3, r0 if(bit_pos + len >= 8) { 1073e: 199a adds r2, r3, r6 10740: 2a07 cmp r2, #7 10742: d81f bhi.n 10784 return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 10744: 464a mov r2, r9 10746: 5d52 ldrb r2, [r2, r5] 10748: 990e ldr r1, [sp, #56] ; 0x38 1074a: 1acb subs r3, r1, r3 1074c: 411a asrs r2, r3 1074e: 4653 mov r3, sl 10750: 4013 ands r3, r2 10752: b2db uxtb r3, r3 rle_rdp += rle_bpp; 10754: 1980 adds r0, r0, r6 rle_prev_v = ret; 10756: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 10758: 2201 movs r2, #1 1075a: 920d str r2, [sp, #52] ; 0x34 1075c: 920f str r2, [sp, #60] ; 0x3c rle_state = RLE_STATE_SINGLE; 1075e: 2100 movs r1, #0 rle_rdp += rle_bpp; 10760: 9209 str r2, [sp, #36] ; 0x24 10762: 920a str r2, [sp, #40] ; 0x28 10764: e752 b.n 1060c bit_mask = 0x7; 10766: 2307 movs r3, #7 10768: 469a mov sl, r3 1076a: e7e5 b.n 10738 bit_mask = 0xF; 1076c: 230f movs r3, #15 1076e: 469a mov sl, r3 10770: e7e2 b.n 10738 bit_mask = 0xFF; 10772: 23ff movs r3, #255 ; 0xff 10774: 469a mov sl, r3 10776: e7df b.n 10738 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10778: 9b14 ldr r3, [sp, #80] ; 0x50 1077a: 469a mov sl, r3 1077c: e7dc b.n 10738 bit_mask = 0x1; 1077e: 2301 movs r3, #1 10780: 469a mov sl, r3 10782: e7d9 b.n 10738 uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 10784: 464a mov r2, r9 10786: 5d51 ldrb r1, [r2, r5] 10788: 0209 lsls r1, r1, #8 1078a: 444d add r5, r9 1078c: 786a ldrb r2, [r5, #1] 1078e: 1852 adds r2, r2, r1 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10790: b292 uxth r2, r2 10792: 9910 ldr r1, [sp, #64] ; 0x40 10794: 1acb subs r3, r1, r3 10796: 411a asrs r2, r3 10798: 4653 mov r3, sl 1079a: 4013 ands r3, r2 1079c: b2db uxtb r3, r3 1079e: e7d9 b.n 10754 bit_mask = 0x3; 107a0: 2303 movs r3, #3 107a2: e01e b.n 107e2 bit_mask = 0x7; 107a4: 2307 movs r3, #7 107a6: e01c b.n 107e2 bit_mask = 0xF; 107a8: 230f movs r3, #15 107aa: e01a b.n 107e2 bit_mask = 0xFF; 107ac: 23ff movs r3, #255 ; 0xff 107ae: e018 b.n 107e2 bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 107b0: 9b14 ldr r3, [sp, #80] ; 0x50 107b2: e016 b.n 107e2 107b4: 20002bd8 .word 0x20002bd8 107b8: 20002bdc .word 0x20002bdc 107bc: 20002bcd .word 0x20002bcd 107c0: 20002bd4 .word 0x20002bd4 107c4: 00026920 .word 0x00026920 107c8: 20002bd0 .word 0x20002bd0 107cc: 20002bcc .word 0x20002bcc 107d0: 00026964 .word 0x00026964 107d4: 00026940 .word 0x00026940 107d8: 00026988 .word 0x00026988 107dc: 000269ac .word 0x000269ac bit_mask = 0x1; 107e0: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; 107e2: 08e9 lsrs r1, r5, #3 bit_pos = bit_pos & 0x7; 107e4: 2207 movs r2, #7 107e6: 402a ands r2, r5 if(bit_pos + len >= 8) { 107e8: 1990 adds r0, r2, r6 107ea: 2807 cmp r0, #7 107ec: d80f bhi.n 1080e return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 107ee: 4648 mov r0, r9 107f0: 5c41 ldrb r1, [r0, r1] 107f2: 980e ldr r0, [sp, #56] ; 0x38 107f4: 1a82 subs r2, r0, r2 107f6: 4111 asrs r1, r2 107f8: 400b ands r3, r1 107fa: b2db uxtb r3, r3 rle_rdp += rle_bpp; 107fc: 19a8 adds r0, r5, r6 rle_prev_v = ret; 107fe: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 10800: 2201 movs r2, #1 10802: 920d str r2, [sp, #52] ; 0x34 10804: 920f str r2, [sp, #60] ; 0x3c rle_state = RLE_STATE_SINGLE; 10806: 2100 movs r1, #0 rle_rdp += rle_bpp; 10808: 9209 str r2, [sp, #36] ; 0x24 1080a: 920a str r2, [sp, #40] ; 0x28 1080c: e6fe b.n 1060c uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1080e: 4648 mov r0, r9 10810: 5c40 ldrb r0, [r0, r1] 10812: 0200 lsls r0, r0, #8 10814: 4449 add r1, r9 10816: 7849 ldrb r1, [r1, #1] 10818: 1809 adds r1, r1, r0 return (in16 >> (16 - bit_pos - len)) & bit_mask; 1081a: b289 uxth r1, r1 1081c: 9810 ldr r0, [sp, #64] ; 0x40 1081e: 1a82 subs r2, r0, r2 10820: 4111 asrs r1, r2 10822: 400b ands r3, r1 10824: b2db uxtb r3, r3 10826: e7e9 b.n 107fc bit_mask = 0x3; 10828: 2303 movs r3, #3 1082a: e008 b.n 1083e bit_mask = 0x7; 1082c: 2307 movs r3, #7 1082e: e006 b.n 1083e bit_mask = 0xF; 10830: 230f movs r3, #15 10832: e004 b.n 1083e bit_mask = 0xFF; 10834: 23ff movs r3, #255 ; 0xff 10836: e002 b.n 1083e bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 10838: 9b14 ldr r3, [sp, #80] ; 0x50 1083a: e000 b.n 1083e bit_mask = 0x1; 1083c: 2301 movs r3, #1 uint32_t byte_pos = bit_pos >> 3; 1083e: 08c1 lsrs r1, r0, #3 bit_pos = bit_pos & 0x7; 10840: 2207 movs r2, #7 10842: 4002 ands r2, r0 if(bit_pos + len >= 8) { 10844: 1995 adds r5, r2, r6 10846: 2d07 cmp r5, #7 10848: d80f bhi.n 1086a return (in[byte_pos] >> (8 - bit_pos - len)) & bit_mask; 1084a: 464d mov r5, r9 1084c: 5c69 ldrb r1, [r5, r1] 1084e: 9d0e ldr r5, [sp, #56] ; 0x38 10850: 1aaa subs r2, r5, r2 10852: 4111 asrs r1, r2 10854: 400b ands r3, r1 10856: b2db uxtb r3, r3 rle_rdp += rle_bpp; 10858: 1980 adds r0, r0, r6 rle_prev_v = ret; 1085a: 9304 str r3, [sp, #16] rle_rdp += rle_bpp; 1085c: 2201 movs r2, #1 1085e: 920d str r2, [sp, #52] ; 0x34 10860: 920f str r2, [sp, #60] ; 0x3c rle_state = RLE_STATE_SINGLE; 10862: 2100 movs r1, #0 rle_rdp += rle_bpp; 10864: 9209 str r2, [sp, #36] ; 0x24 10866: 920a str r2, [sp, #40] ; 0x28 10868: e6d0 b.n 1060c uint16_t in16 = (in[byte_pos] << 8) + in[byte_pos + 1]; 1086a: 464d mov r5, r9 1086c: 5c6d ldrb r5, [r5, r1] 1086e: 022d lsls r5, r5, #8 10870: 4449 add r1, r9 10872: 7849 ldrb r1, [r1, #1] 10874: 1949 adds r1, r1, r5 return (in16 >> (16 - bit_pos - len)) & bit_mask; 10876: b289 uxth r1, r1 10878: 9d10 ldr r5, [sp, #64] ; 0x40 1087a: 1aaa subs r2, r5, r2 1087c: 4111 asrs r1, r2 1087e: 400b ands r3, r1 10880: b2db uxtb r3, r3 10882: e7e9 b.n 10858 ret = rle_prev_v; 10884: 9b04 ldr r3, [sp, #16] if(rle_cnt != 0) { 10886: 2201 movs r2, #1 10888: 920d str r2, [sp, #52] ; 0x34 1088a: 920f str r2, [sp, #60] ; 0x3c rle_state = RLE_STATE_COUNTER; 1088c: 2102 movs r1, #2 if(rle_cnt != 0) { 1088e: 9209 str r2, [sp, #36] ; 0x24 10890: e6bc b.n 1060c ret = rle_prev_v; 10892: 9b04 ldr r3, [sp, #16] if(rle_cnt == 0) { 10894: 2201 movs r2, #1 10896: 920d str r2, [sp, #52] ; 0x34 10898: e6b8 b.n 1060c 1089a: 468c mov ip, r1 1089c: 46b2 mov sl, r6 for(i = 0; i < w; i++) { 1089e: 9911 ldr r1, [sp, #68] ; 0x44 108a0: 2700 movs r7, #0 if(len == 3) { 108a2: 9b02 ldr r3, [sp, #8] 108a4: 9307 str r3, [sp, #28] val = 6; 108a6: 0003 movs r3, r0 108a8: 4640 mov r0, r8 108aa: 4662 mov r2, ip 108ac: 9213 str r2, [sp, #76] ; 0x4c 108ae: 4698 mov r8, r3 108b0: e01e b.n 108f0 len = 4; 108b2: 2304 movs r3, #4 val = 0; 108b4: 2400 movs r4, #0 bit_pos = bit_pos & 0x7; 108b6: 2207 movs r2, #7 108b8: 400a ands r2, r1 108ba: 2608 movs r6, #8 108bc: 1ab6 subs r6, r6, r2 bit_pos = 8 - bit_pos - len; 108be: 1af6 subs r6, r6, r3 out[byte_pos] &= ((~bit_mask) << bit_pos); 108c0: 034d lsls r5, r1, #13 108c2: 0c2d lsrs r5, r5, #16 108c4: 9a05 ldr r2, [sp, #20] 108c6: 4694 mov ip, r2 108c8: 4465 add r5, ip uint8_t bit_mask = (uint16_t)((uint16_t) 1 << len) - 1; 108ca: 2201 movs r2, #1 108cc: 409a lsls r2, r3 108ce: 0013 movs r3, r2 108d0: 3b01 subs r3, #1 out[byte_pos] &= ((~bit_mask) << bit_pos); 108d2: b2db uxtb r3, r3 108d4: 43db mvns r3, r3 108d6: 40b3 lsls r3, r6 108d8: 782a ldrb r2, [r5, #0] 108da: 4013 ands r3, r2 out[byte_pos] |= (val << bit_pos); 108dc: 40b4 lsls r4, r6 108de: 4323 orrs r3, r4 108e0: 702b strb r3, [r5, #0] 108e2: 9b06 ldr r3, [sp, #24] 108e4: 469c mov ip, r3 108e6: 4461 add r1, ip 108e8: 3701 adds r7, #1 for(x = 0; x < w; x++) { 108ea: b23b sxth r3, r7 108ec: 459b cmp fp, r3 108ee: dd25 ble.n 1093c line_buf1[x] = line_buf2[x] ^ line_buf1[x]; 108f0: 9b03 ldr r3, [sp, #12] 108f2: 5ddc ldrb r4, [r3, r7] 108f4: 5dc3 ldrb r3, [r0, r7] 108f6: 405c eors r4, r3 108f8: 55c4 strb r4, [r0, r7] if(len == 3) { 108fa: 9b07 ldr r3, [sp, #28] 108fc: 9a02 ldr r2, [sp, #8] 108fe: 2a03 cmp r2, #3 10900: d1d9 bne.n 108b6 switch(val) { 10902: 2c07 cmp r4, #7 10904: d818 bhi.n 10938 10906: 00a4 lsls r4, r4, #2 10908: 4b35 ldr r3, [pc, #212] ; (109e0 ) 1090a: 591b ldr r3, [r3, r4] 1090c: 469f mov pc, r3 len = 4; 1090e: 2304 movs r3, #4 val = 2; 10910: 2402 movs r4, #2 10912: e7d0 b.n 108b6 len = 4; 10914: 2304 movs r3, #4 val = 4; 10916: 2404 movs r4, #4 10918: e7cd b.n 108b6 len = 4; 1091a: 2304 movs r3, #4 val = 6; 1091c: 2406 movs r4, #6 1091e: e7ca b.n 108b6 len = 4; 10920: 2304 movs r3, #4 val = 9; 10922: 2409 movs r4, #9 10924: e7c7 b.n 108b6 len = 4; 10926: 2304 movs r3, #4 val = 11; 10928: 240b movs r4, #11 1092a: e7c4 b.n 108b6 len = 4; 1092c: 2304 movs r3, #4 val = 13; 1092e: 240d movs r4, #13 10930: e7c1 b.n 108b6 len = 4; 10932: 2304 movs r3, #4 val = 15; 10934: 240f movs r4, #15 10936: e7be b.n 108b6 len = 4; 10938: 2304 movs r3, #4 1093a: e7bc b.n 108b6 1093c: 0005 movs r5, r0 1093e: 9a13 ldr r2, [sp, #76] ; 0x4c 10940: 4694 mov ip, r2 10942: 4640 mov r0, r8 10944: 9b17 ldr r3, [sp, #92] ; 0x5c 10946: 9a06 ldr r2, [sp, #24] 10948: 4690 mov r8, r2 1094a: 4443 add r3, r8 1094c: 9a11 ldr r2, [sp, #68] ; 0x44 1094e: 4690 mov r8, r2 10950: 4498 add r8, r3 10952: 4643 mov r3, r8 10954: 9311 str r3, [sp, #68] ; 0x44 10956: 9b12 ldr r3, [sp, #72] ; 0x48 10958: 3301 adds r3, #1 1095a: 9312 str r3, [sp, #72] ; 0x48 for(y = 1; y < h; y++) { 1095c: 9a15 ldr r2, [sp, #84] ; 0x54 1095e: 4293 cmp r3, r2 10960: d00d beq.n 1097e for(i = 0; i < w; i++) { 10962: 465b mov r3, fp 10964: 2b00 cmp r3, #0 10966: ddf6 ble.n 10956 10968: 9b03 ldr r3, [sp, #12] 1096a: 4698 mov r8, r3 1096c: 001c movs r4, r3 1096e: 9b16 ldr r3, [sp, #88] ; 0x58 10970: 1c5e adds r6, r3, #1 10972: 4446 add r6, r8 10974: 46a8 mov r8, r5 10976: 4661 mov r1, ip 10978: 46b4 mov ip, r6 1097a: 4656 mov r6, sl 1097c: e64b b.n 10616 1097e: 9b08 ldr r3, [sp, #32] 10980: 4698 mov r8, r3 10982: 4661 mov r1, ip 10984: 9b0a ldr r3, [sp, #40] ; 0x28 10986: 2b00 cmp r3, #0 10988: d118 bne.n 109bc 1098a: 9b09 ldr r3, [sp, #36] ; 0x24 1098c: 2b00 cmp r3, #0 1098e: d001 beq.n 10994 10990: 4b14 ldr r3, [pc, #80] ; (109e4 ) 10992: 6018 str r0, [r3, #0] 10994: 9b0f ldr r3, [sp, #60] ; 0x3c 10996: 2b00 cmp r3, #0 10998: d001 beq.n 1099e 1099a: 4b13 ldr r3, [pc, #76] ; (109e8 ) 1099c: 7019 strb r1, [r3, #0] 1099e: 9b0d ldr r3, [sp, #52] ; 0x34 109a0: 2b00 cmp r3, #0 109a2: d002 beq.n 109aa 109a4: 4b11 ldr r3, [pc, #68] ; (109ec ) 109a6: 4642 mov r2, r8 109a8: 701a strb r2, [r3, #0] _lv_mem_buf_release(line_buf1); 109aa: 9819 ldr r0, [sp, #100] ; 0x64 109ac: 4c10 ldr r4, [pc, #64] ; (109f0 ) 109ae: 47a0 blx r4 _lv_mem_buf_release(line_buf2); 109b0: 9803 ldr r0, [sp, #12] 109b2: 47a0 blx r4 return decompr_buf; 109b4: 4b0f ldr r3, [pc, #60] ; (109f4 ) 109b6: 6818 ldr r0, [r3, #0] 109b8: f7ff fb2d bl 10016 109bc: 4b0e ldr r3, [pc, #56] ; (109f8 ) 109be: 466a mov r2, sp 109c0: 7c12 ldrb r2, [r2, #16] 109c2: 701a strb r2, [r3, #0] 109c4: e7e1 b.n 1098a if(!gid) return NULL; 109c6: 2000 movs r0, #0 109c8: f7ff fb25 bl 10016 return NULL; 109cc: 2000 movs r0, #0 109ce: f7ff fb22 bl 10016 if(gsize == 0) return NULL; 109d2: 2000 movs r0, #0 109d4: f7ff fb1f bl 10016 if(decompr_buf == NULL) return NULL; 109d8: 2000 movs r0, #0 109da: f7ff fb1c bl 10016 109de: 46c0 nop ; (mov r8, r8) 109e0: 000269d0 .word 0x000269d0 109e4: 20002bd8 .word 0x20002bd8 109e8: 20002bdc .word 0x20002bdc 109ec: 20002bcd .word 0x20002bcd 109f0: 00012465 .word 0x00012465 109f4: 20002bc8 .word 0x20002bc8 109f8: 20002bd4 .word 0x20002bd4 000109fc : { 109fc: b5f0 push {r4, r5, r6, r7, lr} 109fe: 46de mov lr, fp 10a00: 4657 mov r7, sl 10a02: 464e mov r6, r9 10a04: 4645 mov r5, r8 10a06: b5e0 push {r5, r6, r7, lr} 10a08: b085 sub sp, #20 10a0a: 4681 mov r9, r0 10a0c: 000c movs r4, r1 10a0e: 001f movs r7, r3 bool is_tab = false; 10a10: 2500 movs r5, #0 if(unicode_letter == '\t') { 10a12: 2a09 cmp r2, #9 10a14: d03a beq.n 10a8c lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10a16: 464b mov r3, r9 10a18: 691e ldr r6, [r3, #16] uint32_t gid = get_glyph_dsc_id(font, unicode_letter); 10a1a: 0011 movs r1, r2 10a1c: 4648 mov r0, r9 10a1e: 4b53 ldr r3, [pc, #332] ; (10b6c ) 10a20: 4798 blx r3 10a22: 4683 mov fp, r0 if(!gid) return false; 10a24: 2800 cmp r0, #0 10a26: d100 bne.n 10a2a 10a28: e094 b.n 10b54 if(fdsc->kern_dsc) { 10a2a: 68f3 ldr r3, [r6, #12] 10a2c: 2b00 cmp r3, #0 10a2e: d100 bne.n 10a32 10a30: e08e b.n 10b50 uint32_t gid_next = get_glyph_dsc_id(font, unicode_letter_next); 10a32: 0039 movs r1, r7 10a34: 4648 mov r0, r9 10a36: 4b4d ldr r3, [pc, #308] ; (10b6c ) 10a38: 4798 blx r3 int8_t kvalue = 0; 10a3a: 2300 movs r3, #0 if(gid_next) { 10a3c: 2800 cmp r0, #0 10a3e: d128 bne.n 10a92 const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[gid]; 10a40: 465a mov r2, fp 10a42: 00d0 lsls r0, r2, #3 10a44: 6872 ldr r2, [r6, #4] 10a46: 4694 mov ip, r2 10a48: 4460 add r0, ip int32_t kv = ((int32_t)((int32_t)kvalue * fdsc->kern_scale) >> 4); 10a4a: 8a32 ldrh r2, [r6, #16] 10a4c: 435a muls r2, r3 10a4e: 1112 asrs r2, r2, #4 uint32_t adv_w = gdsc->adv_w; 10a50: 8841 ldrh r1, [r0, #2] 10a52: 0909 lsrs r1, r1, #4 if(is_tab) adv_w *= 2; 10a54: 2d00 cmp r5, #0 10a56: d000 beq.n 10a5a 10a58: 0049 lsls r1, r1, #1 adv_w = (adv_w + (1 << 3)) >> 4; 10a5a: 0013 movs r3, r2 10a5c: 3308 adds r3, #8 10a5e: 185b adds r3, r3, r1 10a60: 091b lsrs r3, r3, #4 dsc_out->adv_w = adv_w; 10a62: 8023 strh r3, [r4, #0] dsc_out->box_h = gdsc->box_h; 10a64: 7943 ldrb r3, [r0, #5] 10a66: 80a3 strh r3, [r4, #4] dsc_out->box_w = gdsc->box_w; 10a68: 7902 ldrb r2, [r0, #4] 10a6a: 8062 strh r2, [r4, #2] dsc_out->ofs_x = gdsc->ofs_x; 10a6c: 2306 movs r3, #6 10a6e: 56c3 ldrsb r3, [r0, r3] 10a70: 80e3 strh r3, [r4, #6] dsc_out->ofs_y = gdsc->ofs_y; 10a72: 2307 movs r3, #7 10a74: 56c3 ldrsb r3, [r0, r3] 10a76: 8123 strh r3, [r4, #8] dsc_out->bpp = (uint8_t)fdsc->bpp; 10a78: 7cf3 ldrb r3, [r6, #19] 10a7a: 069b lsls r3, r3, #26 10a7c: 0f1b lsrs r3, r3, #28 10a7e: 72a3 strb r3, [r4, #10] if(is_tab) dsc_out->box_w = dsc_out->box_w * 2; 10a80: 2d00 cmp r5, #0 10a82: d100 bne.n 10a86 10a84: e06f b.n 10b66 10a86: 0052 lsls r2, r2, #1 10a88: 8062 strh r2, [r4, #2] 10a8a: e064 b.n 10b56 is_tab = true; 10a8c: 3501 adds r5, #1 unicode_letter = ' '; 10a8e: 3217 adds r2, #23 10a90: e7c1 b.n 10a16 lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; 10a92: 464b mov r3, r9 10a94: 691b ldr r3, [r3, #16] if(fdsc->kern_classes == 0) { 10a96: 7cda ldrb r2, [r3, #19] 10a98: 0652 lsls r2, r2, #25 10a9a: d442 bmi.n 10b22 const lv_font_fmt_txt_kern_pair_t * kdsc = fdsc->kern_dsc; 10a9c: 68db ldr r3, [r3, #12] 10a9e: 4698 mov r8, r3 if(kdsc->glyph_ids_size == 0) { 10aa0: 7adb ldrb r3, [r3, #11] 10aa2: 2203 movs r2, #3 10aa4: 401a ands r2, r3 10aa6: d01c beq.n 10ae2 int8_t value = 0; 10aa8: 2300 movs r3, #0 else if(kdsc->glyph_ids_size == 1) { 10aaa: 2a01 cmp r2, #1 10aac: d1c8 bne.n 10a40 const uint16_t * g_ids = kdsc->glyph_ids; 10aae: 4643 mov r3, r8 10ab0: 681b ldr r3, [r3, #0] 10ab2: 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*/ 10ab4: 0200 lsls r0, r0, #8 10ab6: 4458 add r0, fp 10ab8: 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); 10aba: 4643 mov r3, r8 10abc: 689b ldr r3, [r3, #8] 10abe: 021a lsls r2, r3, #8 10ac0: 0a12 lsrs r2, r2, #8 10ac2: 4b2b ldr r3, [pc, #172] ; (10b70 ) 10ac4: 9300 str r3, [sp, #0] 10ac6: 2304 movs r3, #4 10ac8: 4649 mov r1, r9 10aca: a803 add r0, sp, #12 10acc: 4f29 ldr r7, [pc, #164] ; (10b74 ) 10ace: 47b8 blx r7 if(kid_p) { 10ad0: 2800 cmp r0, #0 10ad2: d024 beq.n 10b1e lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - (const uint8_t *)g_ids); 10ad4: 464b mov r3, r9 10ad6: 1ac0 subs r0, r0, r3 ofs = ofs >> 4; /*ofs is 4 byte pairs, divide by 4 to refer as a single value*/ 10ad8: 0900 lsrs r0, r0, #4 value = kdsc->values[ofs]; 10ada: 4643 mov r3, r8 10adc: 685b ldr r3, [r3, #4] 10ade: 561b ldrsb r3, [r3, r0] 10ae0: e7ae b.n 10a40 const uint8_t * g_ids = kdsc->glyph_ids; 10ae2: 4643 mov r3, r8 10ae4: 681b ldr r3, [r3, #0] 10ae6: 4699 mov r9, r3 uint16_t g_id_both = (gid_right << 8) + gid_left; /*Create one number from the ids*/ 10ae8: ab03 add r3, sp, #12 10aea: 469c mov ip, r3 10aec: 0200 lsls r0, r0, #8 10aee: 4458 add r0, fp 10af0: 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); 10af2: 4643 mov r3, r8 10af4: 689b ldr r3, [r3, #8] 10af6: 021a lsls r2, r3, #8 10af8: 0a12 lsrs r2, r2, #8 10afa: 4b1f ldr r3, [pc, #124] ; (10b78 ) 10afc: 9300 str r3, [sp, #0] 10afe: 2302 movs r3, #2 10b00: 4649 mov r1, r9 10b02: 4660 mov r0, ip 10b04: 4f1b ldr r7, [pc, #108] ; (10b74 ) 10b06: 47b8 blx r7 if(kid_p) { 10b08: 2800 cmp r0, #0 10b0a: d006 beq.n 10b1a lv_uintptr_t ofs = (lv_uintptr_t)(kid_p - g_ids); 10b0c: 464b mov r3, r9 10b0e: 1ac0 subs r0, r0, r3 ofs = ofs >> 1; /*ofs is for pair, divide by 2 to refer as a single value*/ 10b10: 0840 lsrs r0, r0, #1 value = kdsc->values[ofs]; 10b12: 4643 mov r3, r8 10b14: 685b ldr r3, [r3, #4] 10b16: 561b ldrsb r3, [r3, r0] 10b18: e792 b.n 10a40 int8_t value = 0; 10b1a: 2300 movs r3, #0 10b1c: e790 b.n 10a40 10b1e: 2300 movs r3, #0 10b20: e78e b.n 10a40 const lv_font_fmt_txt_kern_classes_t * kdsc = fdsc->kern_dsc; 10b22: 68da ldr r2, [r3, #12] uint8_t left_class = kdsc->left_class_mapping[gid_left]; 10b24: 6853 ldr r3, [r2, #4] 10b26: 4659 mov r1, fp 10b28: 5c59 ldrb r1, [r3, r1] int8_t value = 0; 10b2a: 2300 movs r3, #0 if(left_class > 0 && right_class > 0) { 10b2c: 2900 cmp r1, #0 10b2e: d087 beq.n 10a40 uint8_t right_class = kdsc->right_class_mapping[gid_right]; 10b30: 6893 ldr r3, [r2, #8] 10b32: 5c18 ldrb r0, [r3, r0] int8_t value = 0; 10b34: 2300 movs r3, #0 if(left_class > 0 && right_class > 0) { 10b36: 2800 cmp r0, #0 10b38: d100 bne.n 10b3c 10b3a: e781 b.n 10a40 value = kdsc->class_pair_values[(left_class - 1) * kdsc->right_class_cnt + (right_class - 1)]; 10b3c: 3901 subs r1, #1 10b3e: 7b53 ldrb r3, [r2, #13] 10b40: 434b muls r3, r1 10b42: 6811 ldr r1, [r2, #0] 10b44: 1809 adds r1, r1, r0 10b46: 18c9 adds r1, r1, r3 10b48: 3901 subs r1, #1 10b4a: 2300 movs r3, #0 10b4c: 56cb ldrsb r3, [r1, r3] 10b4e: e777 b.n 10a40 int8_t kvalue = 0; 10b50: 2300 movs r3, #0 10b52: e775 b.n 10a40 if(!gid) return false; 10b54: 2500 movs r5, #0 } 10b56: 0028 movs r0, r5 10b58: b005 add sp, #20 10b5a: bc3c pop {r2, r3, r4, r5} 10b5c: 4690 mov r8, r2 10b5e: 4699 mov r9, r3 10b60: 46a2 mov sl, r4 10b62: 46ab mov fp, r5 10b64: bdf0 pop {r4, r5, r6, r7, pc} return true; 10b66: 2501 movs r5, #1 10b68: e7f5 b.n 10b56 10b6a: 46c0 nop ; (mov r8, r8) 10b6c: 0000fee5 .word 0x0000fee5 10b70: 0000fec9 .word 0x0000fec9 10b74: 0001406d .word 0x0001406d 10b78: 0000feb5 .word 0x0000feb5 00010b7c <_lv_font_clean_up_fmt_txt>: { 10b7c: b510 push {r4, lr} if(decompr_buf) { 10b7e: 4b05 ldr r3, [pc, #20] ; (10b94 <_lv_font_clean_up_fmt_txt+0x18>) 10b80: 6818 ldr r0, [r3, #0] 10b82: 2800 cmp r0, #0 10b84: d004 beq.n 10b90 <_lv_font_clean_up_fmt_txt+0x14> lv_mem_free(decompr_buf); 10b86: 4b04 ldr r3, [pc, #16] ; (10b98 <_lv_font_clean_up_fmt_txt+0x1c>) 10b88: 4798 blx r3 decompr_buf = NULL; 10b8a: 2200 movs r2, #0 10b8c: 4b01 ldr r3, [pc, #4] ; (10b94 <_lv_font_clean_up_fmt_txt+0x18>) 10b8e: 601a str r2, [r3, #0] } 10b90: bd10 pop {r4, pc} 10b92: 46c0 nop ; (mov r8, r8) 10b94: 20002bc8 .word 0x20002bc8 10b98: 000123c9 .word 0x000123c9 00010b9c : * 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) { 10b9c: b510 push {r4, lr} 10b9e: 0004 movs r4, r0 _lv_memset_00(driver, sizeof(lv_disp_drv_t)); 10ba0: 212c movs r1, #44 ; 0x2c 10ba2: 4b15 ldr r3, [pc, #84] ; (10bf8 ) 10ba4: 4798 blx r3 driver->flush_cb = NULL; 10ba6: 2200 movs r2, #0 10ba8: 60e2 str r2, [r4, #12] driver->hor_res = LV_HOR_RES_MAX; 10baa: 23f0 movs r3, #240 ; 0xf0 10bac: 005b lsls r3, r3, #1 10bae: 8023 strh r3, [r4, #0] driver->ver_res = LV_VER_RES_MAX; 10bb0: 3bd0 subs r3, #208 ; 0xd0 10bb2: 8063 strh r3, [r4, #2] driver->buffer = NULL; 10bb4: 6062 str r2, [r4, #4] driver->rotated = 0; 10bb6: 7a23 ldrb r3, [r4, #8] 10bb8: 2102 movs r1, #2 10bba: 438b bics r3, r1 10bbc: 7223 strb r3, [r4, #8] driver->color_chroma_key = LV_COLOR_TRANSP; 10bbe: 3126 adds r1, #38 ; 0x26 10bc0: 5c63 ldrb r3, [r4, r1] 10bc2: 201f movs r0, #31 10bc4: 4383 bics r3, r0 10bc6: 5463 strb r3, [r4, r1] 10bc8: 8d21 ldrh r1, [r4, #40] ; 0x28 10bca: 23fc movs r3, #252 ; 0xfc 10bcc: 00db lsls r3, r3, #3 10bce: 430b orrs r3, r1 10bd0: 8523 strh r3, [r4, #40] ; 0x28 10bd2: 0021 movs r1, r4 10bd4: 3128 adds r1, #40 ; 0x28 10bd6: 055b lsls r3, r3, #21 10bd8: 0f5b lsrs r3, r3, #29 10bda: 704b strb r3, [r1, #1] driver->dpi = LV_DPI; 10bdc: 8923 ldrh r3, [r4, #8] 10bde: 4907 ldr r1, [pc, #28] ; (10bfc ) 10be0: 4019 ands r1, r3 10be2: 2382 movs r3, #130 ; 0x82 10be4: 009b lsls r3, r3, #2 10be6: 430b orrs r3, r1 10be8: 8123 strh r3, [r4, #8] #if LV_ANTIALIAS driver->antialiasing = true; 10bea: 2101 movs r1, #1 10bec: 430b orrs r3, r1 10bee: 7223 strb r3, [r4, #8] #if LV_COLOR_SCREEN_TRANSP driver->screen_transp = 1; #endif #if LV_USE_GPU driver->gpu_blend_cb = NULL; 10bf0: 6222 str r2, [r4, #32] driver->gpu_fill_cb = NULL; 10bf2: 6262 str r2, [r4, #36] ; 0x24 #if LV_USE_USER_DATA driver->user_data = NULL; #endif driver->set_px_cb = NULL; 10bf4: 6162 str r2, [r4, #20] } 10bf6: bd10 pop {r4, pc} 10bf8: 00012975 .word 0x00012975 10bfc: fffff003 .word 0xfffff003 00010c00 : * 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) { 10c00: b5f8 push {r3, r4, r5, r6, r7, lr} 10c02: 0004 movs r4, r0 10c04: 000d movs r5, r1 10c06: 0017 movs r7, r2 10c08: 001e movs r6, r3 _lv_memset_00(disp_buf, sizeof(lv_disp_buf_t)); 10c0a: 2124 movs r1, #36 ; 0x24 10c0c: 4b03 ldr r3, [pc, #12] ; (10c1c ) 10c0e: 4798 blx r3 disp_buf->buf1 = buf1; 10c10: 6025 str r5, [r4, #0] disp_buf->buf2 = buf2; 10c12: 6067 str r7, [r4, #4] disp_buf->buf_act = disp_buf->buf1; 10c14: 60a5 str r5, [r4, #8] disp_buf->size = size_in_px_cnt; 10c16: 60e6 str r6, [r4, #12] } 10c18: bdf8 pop {r3, r4, r5, r6, r7, pc} 10c1a: 46c0 nop ; (mov r8, r8) 10c1c: 00012975 .word 0x00012975 00010c20 : * 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) { 10c20: b570 push {r4, r5, r6, lr} 10c22: b082 sub sp, #8 10c24: 0005 movs r5, r0 lv_disp_t * disp = _lv_ll_ins_head(&LV_GC_ROOT(_lv_disp_ll)); 10c26: 4840 ldr r0, [pc, #256] ; (10d28 ) 10c28: 4b40 ldr r3, [pc, #256] ; (10d2c ) 10c2a: 4798 blx r3 10c2c: 1e04 subs r4, r0, #0 if(!disp) { 10c2e: d056 beq.n 10cde LV_ASSERT_MEM(disp); return NULL; } _lv_memset_00(disp, sizeof(lv_disp_t)); 10c30: 21b8 movs r1, #184 ; 0xb8 10c32: 0049 lsls r1, r1, #1 10c34: 4b3e ldr r3, [pc, #248] ; (10d30 ) 10c36: 4798 blx r3 _lv_memcpy(&disp->driver, driver, sizeof(lv_disp_drv_t)); 10c38: 222c movs r2, #44 ; 0x2c 10c3a: 0029 movs r1, r5 10c3c: 0020 movs r0, r4 10c3e: 4b3d ldr r3, [pc, #244] ; (10d34 ) 10c40: 4798 blx r3 _lv_ll_init(&disp->scr_ll, sizeof(lv_obj_t)); 10c42: 0020 movs r0, r4 10c44: 3030 adds r0, #48 ; 0x30 10c46: 214c movs r1, #76 ; 0x4c 10c48: 4b3b ldr r3, [pc, #236] ; (10d38 ) 10c4a: 4798 blx r3 disp->last_activity_time = 0; 10c4c: 2200 movs r2, #0 10c4e: 23b6 movs r3, #182 ; 0xb6 10c50: 005b lsls r3, r3, #1 10c52: 50e2 str r2, [r4, r3] if(disp_def == NULL) disp_def = disp; 10c54: 4b39 ldr r3, [pc, #228] ; (10d3c ) 10c56: 681b ldr r3, [r3, #0] 10c58: 2b00 cmp r3, #0 10c5a: d052 beq.n 10d02 lv_disp_t * disp_def_tmp = disp_def; 10c5c: 4b37 ldr r3, [pc, #220] ; (10d3c ) 10c5e: 681e ldr r6, [r3, #0] disp_def = disp; /*Temporarily change the default screen to create the default screens on the 10c60: 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); 10c62: 0023 movs r3, r4 10c64: 2203 movs r2, #3 10c66: 211e movs r1, #30 10c68: 4835 ldr r0, [pc, #212] ; (10d40 ) 10c6a: 4d36 ldr r5, [pc, #216] ; (10d44 ) 10c6c: 47a8 blx r5 10c6e: 62e0 str r0, [r4, #44] ; 0x2c LV_ASSERT_MEM(disp->refr_task); 10c70: 4b35 ldr r3, [pc, #212] ; (10d48 ) 10c72: 4798 blx r3 10c74: 2800 cmp r0, #0 10c76: d047 beq.n 10d08 if(disp->refr_task == NULL) return NULL; 10c78: 6ae3 ldr r3, [r4, #44] ; 0x2c 10c7a: 2b00 cmp r3, #0 10c7c: d051 beq.n 10d22 disp->inv_p = 0; 10c7e: 22b4 movs r2, #180 ; 0xb4 10c80: 0052 lsls r2, r2, #1 10c82: 5aa3 ldrh r3, [r4, r2] 10c84: 0a9b lsrs r3, r3, #10 10c86: 029b lsls r3, r3, #10 10c88: 52a3 strh r3, [r4, r2] disp->last_activity_time = 0; 10c8a: 2200 movs r2, #0 10c8c: 23b6 movs r3, #182 ; 0xb6 10c8e: 005b lsls r3, r3, #1 10c90: 50e2 str r2, [r4, r3] disp->act_scr = lv_obj_create(NULL, NULL); /*Create a default screen on the display*/ 10c92: 2100 movs r1, #0 10c94: 2000 movs r0, #0 10c96: 4d2d ldr r5, [pc, #180] ; (10d4c ) 10c98: 47a8 blx r5 10c9a: 63e0 str r0, [r4, #60] ; 0x3c disp->top_layer = lv_obj_create(NULL, NULL); /*Create top layer on the display*/ 10c9c: 2100 movs r1, #0 10c9e: 2000 movs r0, #0 10ca0: 47a8 blx r5 10ca2: 6420 str r0, [r4, #64] ; 0x40 disp->sys_layer = lv_obj_create(NULL, NULL); /*Create sys layer on the display*/ 10ca4: 2100 movs r1, #0 10ca6: 2000 movs r0, #0 10ca8: 47a8 blx r5 10caa: 6460 str r0, [r4, #68] ; 0x44 lv_obj_reset_style_list(disp->top_layer, LV_OBJ_PART_MAIN); 10cac: 2100 movs r1, #0 10cae: 6c20 ldr r0, [r4, #64] ; 0x40 10cb0: 4d27 ldr r5, [pc, #156] ; (10d50 ) 10cb2: 47a8 blx r5 lv_obj_reset_style_list(disp->sys_layer, LV_OBJ_PART_MAIN); 10cb4: 2100 movs r1, #0 10cb6: 6c60 ldr r0, [r4, #68] ; 0x44 10cb8: 47a8 blx r5 lv_obj_set_click(disp->top_layer, false); 10cba: 2100 movs r1, #0 10cbc: 6c20 ldr r0, [r4, #64] ; 0x40 10cbe: 4d25 ldr r5, [pc, #148] ; (10d54 ) 10cc0: 47a8 blx r5 lv_obj_set_click(disp->sys_layer, false); 10cc2: 2100 movs r1, #0 10cc4: 6c60 ldr r0, [r4, #68] ; 0x44 10cc6: 47a8 blx r5 lv_obj_invalidate(disp->act_scr); 10cc8: 6be0 ldr r0, [r4, #60] ; 0x3c 10cca: 4b23 ldr r3, [pc, #140] ; (10d58 ) 10ccc: 4798 blx r3 disp_def = disp_def_tmp; /*Revert the default display*/ 10cce: 4b1b ldr r3, [pc, #108] ; (10d3c ) 10cd0: 601e str r6, [r3, #0] lv_task_ready(disp->refr_task); /*Be sure the screen will be refreshed immediately on start up*/ 10cd2: 6ae0 ldr r0, [r4, #44] ; 0x2c 10cd4: 4b21 ldr r3, [pc, #132] ; (10d5c ) 10cd6: 4798 blx r3 return disp; } 10cd8: 0020 movs r0, r4 10cda: b002 add sp, #8 10cdc: bd70 pop {r4, r5, r6, pc} LV_ASSERT_MEM(disp); 10cde: 2000 movs r0, #0 10ce0: 4b19 ldr r3, [pc, #100] ; (10d48 ) 10ce2: 4798 blx r3 10ce4: 2800 cmp r0, #0 10ce6: d1f7 bne.n 10cd8 10ce8: 4b1d ldr r3, [pc, #116] ; (10d60 ) 10cea: 9300 str r3, [sp, #0] 10cec: 227c movs r2, #124 ; 0x7c 10cee: 491d ldr r1, [pc, #116] ; (10d64 ) 10cf0: 3003 adds r0, #3 10cf2: 4c1d ldr r4, [pc, #116] ; (10d68 ) 10cf4: 47a0 blx r4 10cf6: 2200 movs r2, #0 10cf8: 2300 movs r3, #0 10cfa: 481c ldr r0, [pc, #112] ; (10d6c ) 10cfc: 491c ldr r1, [pc, #112] ; (10d70 ) 10cfe: 4788 blx r1 10d00: e7fe b.n 10d00 if(disp_def == NULL) disp_def = disp; 10d02: 4b0e ldr r3, [pc, #56] ; (10d3c ) 10d04: 601c str r4, [r3, #0] 10d06: e7a9 b.n 10c5c LV_ASSERT_MEM(disp->refr_task); 10d08: 4b15 ldr r3, [pc, #84] ; (10d60 ) 10d0a: 9300 str r3, [sp, #0] 10d0c: 228d movs r2, #141 ; 0x8d 10d0e: 4915 ldr r1, [pc, #84] ; (10d64 ) 10d10: 3003 adds r0, #3 10d12: 4d15 ldr r5, [pc, #84] ; (10d68 ) 10d14: 47a8 blx r5 10d16: 6ae2 ldr r2, [r4, #44] ; 0x2c 10d18: 2300 movs r3, #0 10d1a: 4814 ldr r0, [pc, #80] ; (10d6c ) 10d1c: 4914 ldr r1, [pc, #80] ; (10d70 ) 10d1e: 4788 blx r1 10d20: e7fe b.n 10d20 if(disp->refr_task == NULL) return NULL; 10d22: 2400 movs r4, #0 10d24: e7d8 b.n 10cd8 10d26: 46c0 nop ; (mov r8, r8) 10d28: 20004d20 .word 0x20004d20 10d2c: 00011de5 .word 0x00011de5 10d30: 00012975 .word 0x00012975 10d34: 00012545 .word 0x00012545 10d38: 00011dd1 .word 0x00011dd1 10d3c: 20002be0 .word 0x20002be0 10d40: 0000559d .word 0x0000559d 10d44: 0001391d .word 0x0001391d 10d48: 000017ad .word 0x000017ad 10d4c: 00003395 .word 0x00003395 10d50: 00003105 .word 0x00003105 10d54: 00001ea5 .word 0x00001ea5 10d58: 00002869 .word 0x00002869 10d5c: 0001398d .word 0x0001398d 10d60: 0002a6f0 .word 0x0002a6f0 10d64: 0002a708 .word 0x0002a708 10d68: 00012159 .word 0x00012159 10d6c: 00025854 .word 0x00025854 10d70: 000017b5 .word 0x000017b5 00010d74 : * Get the default display * @return pointer to the default display */ lv_disp_t * lv_disp_get_default(void) { return disp_def; 10d74: 4b01 ldr r3, [pc, #4] ; (10d7c ) 10d76: 6818 ldr r0, [r3, #0] } 10d78: 4770 bx lr 10d7a: 46c0 nop ; (mov r8, r8) 10d7c: 20002be0 .word 0x20002be0 00010d80 : * 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) { 10d80: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); 10d82: d005 beq.n 10d90 if(disp == NULL) return LV_HOR_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; 10d84: 7a1a ldrb r2, [r3, #8] 10d86: 0792 lsls r2, r2, #30 10d88: d509 bpl.n 10d9e 10d8a: 2002 movs r0, #2 10d8c: 5e18 ldrsh r0, [r3, r0] } 10d8e: 4770 bx lr return disp_def; 10d90: 4b04 ldr r3, [pc, #16] ; (10da4 ) 10d92: 681b ldr r3, [r3, #0] return LV_HOR_RES_MAX; 10d94: 20f0 movs r0, #240 ; 0xf0 10d96: 0040 lsls r0, r0, #1 if(disp == NULL) 10d98: 2b00 cmp r3, #0 10d9a: d0f8 beq.n 10d8e 10d9c: e7f2 b.n 10d84 return disp->driver.rotated == 0 ? disp->driver.hor_res : disp->driver.ver_res; 10d9e: 2000 movs r0, #0 10da0: 5e18 ldrsh r0, [r3, r0] 10da2: e7f4 b.n 10d8e 10da4: 20002be0 .word 0x20002be0 00010da8 : * 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) { 10da8: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); 10daa: d005 beq.n 10db8 if(disp == NULL) return LV_VER_RES_MAX; else return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; 10dac: 7a1a ldrb r2, [r3, #8] 10dae: 0792 lsls r2, r2, #30 10db0: d509 bpl.n 10dc6 10db2: 2000 movs r0, #0 10db4: 5e18 ldrsh r0, [r3, r0] } 10db6: 4770 bx lr return disp_def; 10db8: 4b04 ldr r3, [pc, #16] ; (10dcc ) 10dba: 681b ldr r3, [r3, #0] return LV_VER_RES_MAX; 10dbc: 2088 movs r0, #136 ; 0x88 10dbe: 0040 lsls r0, r0, #1 if(disp == NULL) 10dc0: 2b00 cmp r3, #0 10dc2: d0f8 beq.n 10db6 10dc4: e7f2 b.n 10dac return disp->driver.rotated == 0 ? disp->driver.ver_res : disp->driver.hor_res; 10dc6: 2002 movs r0, #2 10dc8: 5e18 ldrsh r0, [r3, r0] 10dca: e7f4 b.n 10db6 10dcc: 20002be0 .word 0x20002be0 00010dd0 : * 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) { 10dd0: 1e03 subs r3, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); 10dd2: d003 beq.n 10ddc if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ return disp->driver.dpi; 10dd4: 8918 ldrh r0, [r3, #8] 10dd6: 0500 lsls r0, r0, #20 10dd8: 0d80 lsrs r0, r0, #22 } 10dda: 4770 bx lr return disp_def; 10ddc: 4b02 ldr r3, [pc, #8] ; (10de8 ) 10dde: 681b ldr r3, [r3, #0] 10de0: 2082 movs r0, #130 ; 0x82 if(disp == NULL) return LV_DPI; /*Do not return 0 because it might be a divider*/ 10de2: 2b00 cmp r3, #0 10de4: d0f9 beq.n 10dda 10de6: e7f5 b.n 10dd4 10de8: 20002be0 .word 0x20002be0 00010dec : * 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) { 10dec: b570 push {r4, r5, r6, lr} 10dee: 1e05 subs r5, r0, #0 if(disp == NULL) disp = lv_disp_get_default(); 10df0: d019 beq.n 10e26 uint32_t w; if(disp == NULL) w = LV_HOR_RES_MAX; else w = lv_disp_get_hor_res(disp); 10df2: 0028 movs r0, r5 10df4: 4b0f ldr r3, [pc, #60] ; (10e34 ) 10df6: 4798 blx r3 10df8: 0004 movs r4, r0 uint32_t dpi = lv_disp_get_dpi(disp); 10dfa: 0028 movs r0, r5 10dfc: 4b0e ldr r3, [pc, #56] ; (10e38 ) 10dfe: 4798 blx r3 10e00: 0001 movs r1, r0 w = w * 10 / dpi; 10e02: 00a0 lsls r0, r4, #2 10e04: 1900 adds r0, r0, r4 10e06: 0040 lsls r0, r0, #1 10e08: 4b0c ldr r3, [pc, #48] ; (10e3c ) 10e0a: 4798 blx r3 10e0c: 0002 movs r2, r0 if(w < LV_DISP_SMALL_LIMIT) return LV_DISP_SIZE_SMALL; 10e0e: 2000 movs r0, #0 10e10: 2a1d cmp r2, #29 10e12: d907 bls.n 10e24 if(w < LV_DISP_MEDIUM_LIMIT) return LV_DISP_SIZE_MEDIUM; 10e14: 3001 adds r0, #1 10e16: 2a31 cmp r2, #49 ; 0x31 10e18: d904 bls.n 10e24 if(w < LV_DISP_LARGE_LIMIT) return LV_DISP_SIZE_LARGE; else return LV_DISP_SIZE_EXTRA_LARGE; 10e1a: 3044 adds r0, #68 ; 0x44 10e1c: 4290 cmp r0, r2 10e1e: 4180 sbcs r0, r0 10e20: 4240 negs r0, r0 10e22: 3002 adds r0, #2 } 10e24: bd70 pop {r4, r5, r6, pc} return disp_def; 10e26: 4b06 ldr r3, [pc, #24] ; (10e40 ) 10e28: 681d ldr r5, [r3, #0] 10e2a: 24f0 movs r4, #240 ; 0xf0 10e2c: 0064 lsls r4, r4, #1 if(disp == NULL) w = LV_HOR_RES_MAX; 10e2e: 2d00 cmp r5, #0 10e30: d0e3 beq.n 10dfa 10e32: e7de b.n 10df2 10e34: 00010d81 .word 0x00010d81 10e38: 00010dd1 .word 0x00010dd1 10e3c: 0001c0a5 .word 0x0001c0a5 10e40: 20002be0 .word 0x20002be0 00010e44 : 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; 10e44: 6842 ldr r2, [r0, #4] 10e46: 2300 movs r3, #0 10e48: 6193 str r3, [r2, #24] disp_drv->buffer->flushing_last = 0; 10e4a: 6842 ldr r2, [r0, #4] 10e4c: 61d3 str r3, [r2, #28] } 10e4e: 4770 bx lr 00010e50 : * 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) { 10e50: b510 push {r4, lr} if(disp == NULL) 10e52: 2800 cmp r0, #0 10e54: d004 beq.n 10e60 return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_disp_ll), disp); 10e56: 0001 movs r1, r0 10e58: 4803 ldr r0, [pc, #12] ; (10e68 ) 10e5a: 4b04 ldr r3, [pc, #16] ; (10e6c ) 10e5c: 4798 blx r3 } 10e5e: bd10 pop {r4, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_disp_ll)); 10e60: 4801 ldr r0, [pc, #4] ; (10e68 ) 10e62: 4b03 ldr r3, [pc, #12] ; (10e70 ) 10e64: 4798 blx r3 10e66: e7fa b.n 10e5e 10e68: 20004d20 .word 0x20004d20 10e6c: 00011e9d .word 0x00011e9d 10e70: 00011e85 .word 0x00011e85 00010e74 : * @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; 10e74: 6840 ldr r0, [r0, #4] } 10e76: 4770 bx lr 00010e78 : * @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) 10e78: 6843 ldr r3, [r0, #4] 10e7a: 681a ldr r2, [r3, #0] 10e7c: 2a00 cmp r2, #0 10e7e: d004 beq.n 10e8a 10e80: 6858 ldr r0, [r3, #4] 10e82: 1e43 subs r3, r0, #1 10e84: 4198 sbcs r0, r3 10e86: b2c0 uxtb r0, r0 return true; else return false; } 10e88: 4770 bx lr return false; 10e8a: 2000 movs r0, #0 10e8c: e7fc b.n 10e88 ... 00010e90 : * `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) { 10e90: b510 push {r4, lr} 10e92: 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) { 10e94: 4b07 ldr r3, [pc, #28] ; (10eb4 ) 10e96: 4798 blx r3 10e98: 2800 cmp r0, #0 10e9a: d00a beq.n 10eb2 uint32_t scr_size = disp->driver.hor_res * disp->driver.ver_res; 10e9c: 2200 movs r2, #0 10e9e: 5ea3 ldrsh r3, [r4, r2] 10ea0: 2202 movs r2, #2 10ea2: 5ea0 ldrsh r0, [r4, r2] 10ea4: 4358 muls r0, r3 if(lv_disp_is_double_buf(disp) && disp->driver.buffer->size == scr_size) { 10ea6: 6863 ldr r3, [r4, #4] 10ea8: 68db ldr r3, [r3, #12] 10eaa: 1ac0 subs r0, r0, r3 10eac: 4243 negs r3, r0 10eae: 4158 adcs r0, r3 10eb0: b2c0 uxtb r0, r0 return true; } else { return false; } } 10eb2: bd10 pop {r4, pc} 10eb4: 00010e79 .word 0x00010e79 00010eb8 : * @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) { 10eb8: b510 push {r4, lr} if(indev == NULL) 10eba: 2800 cmp r0, #0 10ebc: d004 beq.n 10ec8 return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); else return _lv_ll_get_next(&LV_GC_ROOT(_lv_indev_ll), indev); 10ebe: 0001 movs r1, r0 10ec0: 4803 ldr r0, [pc, #12] ; (10ed0 ) 10ec2: 4b04 ldr r3, [pc, #16] ; (10ed4 ) 10ec4: 4798 blx r3 } 10ec6: bd10 pop {r4, pc} return _lv_ll_get_head(&LV_GC_ROOT(_lv_indev_ll)); 10ec8: 4801 ldr r0, [pc, #4] ; (10ed0 ) 10eca: 4b03 ldr r3, [pc, #12] ; (10ed8 ) 10ecc: 4798 blx r3 10ece: e7fa b.n 10ec6 10ed0: 20004d14 .word 0x20004d14 10ed4: 00011e9d .word 0x00011e9d 10ed8: 00011e85 .word 0x00011e85 00010edc : * 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; 10edc: 2200 movs r2, #0 10ede: 4b04 ldr r3, [pc, #16] ; (10ef0 ) 10ee0: 701a strb r2, [r3, #0] sys_time += tick_period; 10ee2: 4b04 ldr r3, [pc, #16] ; (10ef4 ) 10ee4: 681a ldr r2, [r3, #0] 10ee6: 4694 mov ip, r2 10ee8: 4460 add r0, ip 10eea: 6018 str r0, [r3, #0] } 10eec: 4770 bx lr 10eee: 46c0 nop ; (mov r8, r8) 10ef0: 20002be8 .word 0x20002be8 10ef4: 20002be4 .word 0x20002be4 00010ef8 : uint32_t lv_tick_get(void) { #if LV_TICK_CUSTOM == 0 uint32_t result; do { tick_irq_flag = 1; 10ef8: 4b04 ldr r3, [pc, #16] ; (10f0c ) 10efa: 2101 movs r1, #1 10efc: 7019 strb r1, [r3, #0] result = sys_time; } while(!tick_irq_flag); /*'lv_tick_inc()' clears this flag which can be in an interrupt. 10efe: 781a ldrb r2, [r3, #0] 10f00: 2a00 cmp r2, #0 10f02: d0fb beq.n 10efc result = sys_time; 10f04: 4b02 ldr r3, [pc, #8] ; (10f10 ) Continue until make a non interrupted cycle */ return result; 10f06: 6818 ldr r0, [r3, #0] #else return LV_TICK_CUSTOM_SYS_TIME_EXPR; #endif } 10f08: 4770 bx lr 10f0a: 46c0 nop ; (mov r8, r8) 10f0c: 20002be8 .word 0x20002be8 10f10: 20002be4 .word 0x20002be4 00010f14 : * 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) { 10f14: b510 push {r4, lr} 10f16: 0004 movs r4, r0 uint32_t act_time = lv_tick_get(); 10f18: 4b01 ldr r3, [pc, #4] ; (10f20 ) 10f1a: 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; 10f1c: 1b00 subs r0, r0, r4 } return prev_tick; } 10f1e: bd10 pop {r4, pc} 10f20: 00010ef9 .word 0x00010ef9 00010f24 : * 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) { 10f24: b510 push {r4, lr} 10f26: 000c movs r4, r1 /*Calculate the current step*/ uint32_t step; if(a->time == a->act_time) { 10f28: 6a09 ldr r1, [r1, #32] 10f2a: 6a60 ldr r0, [r4, #36] ; 0x24 10f2c: 4281 cmp r1, r0 10f2e: d00a beq.n 10f46 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; 10f30: 0280 lsls r0, r0, #10 10f32: 4b06 ldr r3, [pc, #24] ; (10f4c ) 10f34: 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); 10f36: 69a3 ldr r3, [r4, #24] 10f38: 69e2 ldr r2, [r4, #28] 10f3a: 1ad2 subs r2, r2, r3 10f3c: 4350 muls r0, r2 new_value = new_value >> LV_ANIM_RES_SHIFT; 10f3e: 1280 asrs r0, r0, #10 new_value += a->start; 10f40: 1818 adds r0, r3, r0 return (lv_anim_value_t)new_value; 10f42: b200 sxth r0, r0 } 10f44: bd10 pop {r4, pc} step = LV_ANIM_RESOLUTION; /*Use the last value if the time fully elapsed*/ 10f46: 2080 movs r0, #128 ; 0x80 10f48: 00c0 lsls r0, r0, #3 10f4a: e7f4 b.n 10f36 10f4c: 0001c0a5 .word 0x0001c0a5 00010f50 : } return anim_list_changed; } static void anim_mark_list_change(void) { 10f50: b510 push {r4, lr} anim_list_changed = true; 10f52: 2201 movs r2, #1 10f54: 4b09 ldr r3, [pc, #36] ; (10f7c ) 10f56: 701a strb r2, [r3, #0] if(_lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)) == NULL) 10f58: 4809 ldr r0, [pc, #36] ; (10f80 ) 10f5a: 4b0a ldr r3, [pc, #40] ; (10f84 ) 10f5c: 4798 blx r3 10f5e: 2800 cmp r0, #0 10f60: d005 beq.n 10f6e lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); else lv_task_set_prio(_lv_anim_task, LV_ANIM_TASK_PRIO); 10f62: 4b09 ldr r3, [pc, #36] ; (10f88 ) 10f64: 6818 ldr r0, [r3, #0] 10f66: 2104 movs r1, #4 10f68: 4b08 ldr r3, [pc, #32] ; (10f8c ) 10f6a: 4798 blx r3 } 10f6c: bd10 pop {r4, pc} lv_task_set_prio(_lv_anim_task, LV_TASK_PRIO_OFF); 10f6e: 4b06 ldr r3, [pc, #24] ; (10f88 ) 10f70: 6818 ldr r0, [r3, #0] 10f72: 2100 movs r1, #0 10f74: 4b05 ldr r3, [pc, #20] ; (10f8c ) 10f76: 4798 blx r3 10f78: e7f8 b.n 10f6c 10f7a: 46c0 nop ; (mov r8, r8) 10f7c: 20002bf0 .word 0x20002bf0 10f80: 20004de4 .word 0x20004de4 10f84: 00011e85 .word 0x00011e85 10f88: 20002bec .word 0x20002bec 10f8c: 0001388d .word 0x0001388d 00010f90 : { 10f90: b5f0 push {r4, r5, r6, r7, lr} 10f92: 46ce mov lr, r9 10f94: 4647 mov r7, r8 10f96: b580 push {r7, lr} 10f98: b091 sub sp, #68 ; 0x44 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 10f9a: 4865 ldr r0, [pc, #404] ; (11130 ) 10f9c: 4b65 ldr r3, [pc, #404] ; (11134 ) 10f9e: 4798 blx r3 10fa0: 2800 cmp r0, #0 10fa2: d00b beq.n 10fbc a->has_run = 0; 10fa4: 253c movs r5, #60 ; 0x3c _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 10fa6: 4c62 ldr r4, [pc, #392] ; (11130 ) 10fa8: 4e63 ldr r6, [pc, #396] ; (11138 ) a->has_run = 0; 10faa: 5d43 ldrb r3, [r0, r5] 10fac: 2202 movs r2, #2 10fae: 4393 bics r3, r2 10fb0: 5543 strb r3, [r0, r5] _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 10fb2: 0001 movs r1, r0 10fb4: 0020 movs r0, r4 10fb6: 47b0 blx r6 10fb8: 2800 cmp r0, #0 10fba: d1f6 bne.n 10faa uint32_t elaps = lv_tick_elaps(last_task_run); 10fbc: 4b5f ldr r3, [pc, #380] ; (1113c ) 10fbe: 6818 ldr r0, [r3, #0] 10fc0: 4b5f ldr r3, [pc, #380] ; (11140 ) 10fc2: 4798 blx r3 10fc4: 0007 movs r7, r0 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 10fc6: 485a ldr r0, [pc, #360] ; (11130 ) 10fc8: 4b5a ldr r3, [pc, #360] ; (11134 ) 10fca: 4798 blx r3 10fcc: 1e04 subs r4, r0, #0 while(a != NULL) { 10fce: d100 bne.n 10fd2 10fd0: e08c b.n 110ec anim_list_changed = false; 10fd2: 4e5c ldr r6, [pc, #368] ; (11144 ) 10fd4: 2500 movs r5, #0 if(anim_list_changed) 10fd6: 46b0 mov r8, r6 10fd8: e026 b.n 11028 int32_t new_act_time = a->act_time + elaps; 10fda: 19db adds r3, r3, r7 if(a->act_time <= 0 && new_act_time >= 0) { 10fdc: 2b00 cmp r3, #0 10fde: da00 bge.n 10fe2 10fe0: e08d b.n 110fe if(a->start_cb) a->start_cb(a); 10fe2: 68a2 ldr r2, [r4, #8] 10fe4: 2a00 cmp r2, #0 10fe6: d100 bne.n 10fea 10fe8: e090 b.n 1110c 10fea: 0020 movs r0, r4 10fec: 4790 blx r2 10fee: e028 b.n 11042 if(a->path.cb) new_value = a->path.cb(&a->path, a); 10ff0: 6923 ldr r3, [r4, #16] 10ff2: 2b00 cmp r3, #0 10ff4: d02f beq.n 11056 10ff6: 0020 movs r0, r4 10ff8: 3010 adds r0, #16 10ffa: 0021 movs r1, r4 10ffc: 4798 blx r3 if(a->exec_cb) a->exec_cb(a->var, new_value); 10ffe: 6863 ldr r3, [r4, #4] 11000: 2b00 cmp r3, #0 11002: d002 beq.n 1100a 11004: b201 sxth r1, r0 11006: 6820 ldr r0, [r4, #0] 11008: 4798 blx r3 if(a->act_time >= a->time) { 1100a: 6a63 ldr r3, [r4, #36] ; 0x24 1100c: 6a22 ldr r2, [r4, #32] 1100e: 4293 cmp r3, r2 11010: d227 bcs.n 11062 if(anim_list_changed) 11012: 4643 mov r3, r8 11014: 781b ldrb r3, [r3, #0] 11016: 2b00 cmp r3, #0 11018: d100 bne.n 1101c 1101a: e071 b.n 11100 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 1101c: 4844 ldr r0, [pc, #272] ; (11130 ) 1101e: 4b45 ldr r3, [pc, #276] ; (11134 ) 11020: 4798 blx r3 11022: 0004 movs r4, r0 while(a != NULL) { 11024: 2c00 cmp r4, #0 11026: d061 beq.n 110ec anim_list_changed = false; 11028: 7035 strb r5, [r6, #0] if(!a->has_run) { 1102a: 233c movs r3, #60 ; 0x3c 1102c: 5ce3 ldrb r3, [r4, r3] 1102e: 079b lsls r3, r3, #30 11030: d466 bmi.n 11100 a->has_run = 1; /*The list readying might be reseted so need to know which anim has run already*/ 11032: 223c movs r2, #60 ; 0x3c 11034: 5ca3 ldrb r3, [r4, r2] 11036: 2102 movs r1, #2 11038: 430b orrs r3, r1 1103a: 54a3 strb r3, [r4, r2] int32_t new_act_time = a->act_time + elaps; 1103c: 6a63 ldr r3, [r4, #36] ; 0x24 if(a->act_time <= 0 && new_act_time >= 0) { 1103e: 2b00 cmp r3, #0 11040: ddcb ble.n 10fda a->act_time += elaps; 11042: 6a63 ldr r3, [r4, #36] ; 0x24 11044: 18fb adds r3, r7, r3 11046: 6263 str r3, [r4, #36] ; 0x24 if(a->act_time >= 0) { 11048: 2b00 cmp r3, #0 1104a: dbe2 blt.n 11012 if(a->act_time > a->time) a->act_time = a->time; 1104c: 6a22 ldr r2, [r4, #32] 1104e: 429a cmp r2, r3 11050: d2ce bcs.n 10ff0 11052: 6262 str r2, [r4, #36] ; 0x24 11054: e7cc b.n 10ff0 else new_value = lv_anim_path_linear(&a->path, a); 11056: 0020 movs r0, r4 11058: 3010 adds r0, #16 1105a: 0021 movs r1, r4 1105c: 4b3a ldr r3, [pc, #232] ; (11148 ) 1105e: 4798 blx r3 11060: e7cd b.n 10ffe if(a->playback_now == 0 && a->repeat_cnt > 0 && a->repeat_cnt != LV_ANIM_REPEAT_INFINITE) { 11062: 233c movs r3, #60 ; 0x3c 11064: 5ce3 ldrb r3, [r4, r3] 11066: 2201 movs r2, #1 11068: 4013 ands r3, r2 1106a: 1e18 subs r0, r3, #0 1106c: d107 bne.n 1107e 1106e: 8ea2 ldrh r2, [r4, #52] ; 0x34 11070: 2a00 cmp r2, #0 11072: d04d beq.n 11110 11074: 4935 ldr r1, [pc, #212] ; (1114c ) 11076: 428a cmp r2, r1 11078: d051 beq.n 1111e a->repeat_cnt--; 1107a: 3a01 subs r2, #1 1107c: 86a2 strh r2, [r4, #52] ; 0x34 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 1107e: 8ea2 ldrh r2, [r4, #52] ; 0x34 11080: 2a00 cmp r2, #0 11082: d01a beq.n 110ba a->act_time = -a->repeat_delay; /*Restart the animation*/ 11084: 6b23 ldr r3, [r4, #48] ; 0x30 11086: 425a negs r2, r3 11088: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 1108a: 6ae2 ldr r2, [r4, #44] ; 0x2c 1108c: 2a00 cmp r2, #0 1108e: d0c0 beq.n 11012 if(a->playback_now == 0) a->act_time = -a->playback_delay; 11090: 2800 cmp r0, #0 11092: d040 beq.n 11116 a->playback_now = a->playback_now == 0 ? 1 : 0; 11094: 4243 negs r3, r0 11096: 4143 adcs r3, r0 11098: 4699 mov r9, r3 1109a: 203c movs r0, #60 ; 0x3c 1109c: 5c21 ldrb r1, [r4, r0] 1109e: 2301 movs r3, #1 110a0: 4399 bics r1, r3 110a2: 464b mov r3, r9 110a4: 430b orrs r3, r1 110a6: 5423 strb r3, [r4, r0] tmp = a->start; 110a8: 69a1 ldr r1, [r4, #24] a->start = a->end; 110aa: 69e0 ldr r0, [r4, #28] 110ac: 61a0 str r0, [r4, #24] a->end = tmp; 110ae: 61e1 str r1, [r4, #28] a->time = a->playback_now == 0 ? a->time_orig : a->playback_time; 110b0: 07db lsls r3, r3, #31 110b2: d400 bmi.n 110b6 110b4: 6ba2 ldr r2, [r4, #56] ; 0x38 110b6: 6222 str r2, [r4, #32] 110b8: e7ab b.n 11012 if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 110ba: 6ae2 ldr r2, [r4, #44] ; 0x2c 110bc: 2a00 cmp r2, #0 110be: d001 beq.n 110c4 110c0: 2800 cmp r0, #0 110c2: d028 beq.n 11116 _lv_memcpy(&a_tmp, a, sizeof(lv_anim_t)); 110c4: 2240 movs r2, #64 ; 0x40 110c6: 0021 movs r1, r4 110c8: 4668 mov r0, sp 110ca: 4b21 ldr r3, [pc, #132] ; (11150 ) 110cc: 4798 blx r3 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 110ce: 0021 movs r1, r4 110d0: 4817 ldr r0, [pc, #92] ; (11130 ) 110d2: 4b20 ldr r3, [pc, #128] ; (11154 ) 110d4: 4798 blx r3 lv_mem_free(a); 110d6: 0020 movs r0, r4 110d8: 4b1f ldr r3, [pc, #124] ; (11158 ) 110da: 4798 blx r3 anim_mark_list_change(); 110dc: 4b1f ldr r3, [pc, #124] ; (1115c ) 110de: 4798 blx r3 if(a_tmp.ready_cb != NULL) a_tmp.ready_cb(&a_tmp); 110e0: 9b03 ldr r3, [sp, #12] 110e2: 2b00 cmp r3, #0 110e4: d095 beq.n 11012 110e6: 4668 mov r0, sp 110e8: 4798 blx r3 110ea: e792 b.n 11012 last_task_run = lv_tick_get(); 110ec: 4b1c ldr r3, [pc, #112] ; (11160 ) 110ee: 4798 blx r3 110f0: 4b12 ldr r3, [pc, #72] ; (1113c ) 110f2: 6018 str r0, [r3, #0] } 110f4: b011 add sp, #68 ; 0x44 110f6: bc0c pop {r2, r3} 110f8: 4690 mov r8, r2 110fa: 4699 mov r9, r3 110fc: bdf0 pop {r4, r5, r6, r7, pc} a->act_time += elaps; 110fe: 6263 str r3, [r4, #36] ; 0x24 a = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11100: 0021 movs r1, r4 11102: 480b ldr r0, [pc, #44] ; (11130 ) 11104: 4b0c ldr r3, [pc, #48] ; (11138 ) 11106: 4798 blx r3 11108: 0004 movs r4, r0 1110a: e78b b.n 11024 a->act_time += elaps; 1110c: 6263 str r3, [r4, #36] ; 0x24 1110e: e79d b.n 1104c if(a->repeat_cnt == 0 && ((a->playback_time == 0) || (a->playback_time && a->playback_now == 1))) { 11110: 6ae2 ldr r2, [r4, #44] ; 0x2c 11112: 2a00 cmp r2, #0 11114: d0d6 beq.n 110c4 if(a->playback_now == 0) a->act_time = -a->playback_delay; 11116: 6aa3 ldr r3, [r4, #40] ; 0x28 11118: 4259 negs r1, r3 1111a: 6261 str r1, [r4, #36] ; 0x24 1111c: e7ba b.n 11094 a->act_time = -a->repeat_delay; /*Restart the animation*/ 1111e: 6b23 ldr r3, [r4, #48] ; 0x30 11120: 425a negs r2, r3 11122: 6262 str r2, [r4, #36] ; 0x24 if(a->playback_time != 0) { 11124: 6ae2 ldr r2, [r4, #44] ; 0x2c 11126: 2a00 cmp r2, #0 11128: d100 bne.n 1112c 1112a: e772 b.n 11012 1112c: e7f3 b.n 11116 1112e: 46c0 nop ; (mov r8, r8) 11130: 20004de4 .word 0x20004de4 11134: 00011e85 .word 0x00011e85 11138: 00011e9d .word 0x00011e9d 1113c: 20002bf4 .word 0x20002bf4 11140: 00010f15 .word 0x00010f15 11144: 20002bf0 .word 0x20002bf0 11148: 00010f25 .word 0x00010f25 1114c: 0000ffff .word 0x0000ffff 11150: 00012545 .word 0x00012545 11154: 00011f6d .word 0x00011f6d 11158: 000123c9 .word 0x000123c9 1115c: 00010f51 .word 0x00010f51 11160: 00010ef9 .word 0x00010ef9 00011164 <_lv_anim_core_init>: { 11164: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_anim_ll), sizeof(lv_anim_t)); 11166: 2140 movs r1, #64 ; 0x40 11168: 480a ldr r0, [pc, #40] ; (11194 <_lv_anim_core_init+0x30>) 1116a: 4b0b ldr r3, [pc, #44] ; (11198 <_lv_anim_core_init+0x34>) 1116c: 4798 blx r3 last_task_run = lv_tick_get(); 1116e: 4b0b ldr r3, [pc, #44] ; (1119c <_lv_anim_core_init+0x38>) 11170: 4798 blx r3 11172: 4b0b ldr r3, [pc, #44] ; (111a0 <_lv_anim_core_init+0x3c>) 11174: 6018 str r0, [r3, #0] _lv_anim_task = lv_task_create(anim_task, LV_DISP_DEF_REFR_PERIOD, LV_ANIM_TASK_PRIO, NULL); 11176: 2300 movs r3, #0 11178: 2204 movs r2, #4 1117a: 211e movs r1, #30 1117c: 4809 ldr r0, [pc, #36] ; (111a4 <_lv_anim_core_init+0x40>) 1117e: 4c0a ldr r4, [pc, #40] ; (111a8 <_lv_anim_core_init+0x44>) 11180: 47a0 blx r4 11182: 4b0a ldr r3, [pc, #40] ; (111ac <_lv_anim_core_init+0x48>) 11184: 6018 str r0, [r3, #0] anim_mark_list_change(); /*Turn off the animation task*/ 11186: 4b0a ldr r3, [pc, #40] ; (111b0 <_lv_anim_core_init+0x4c>) 11188: 4798 blx r3 anim_list_changed = false; /*The list has not actaully changed*/ 1118a: 2200 movs r2, #0 1118c: 4b09 ldr r3, [pc, #36] ; (111b4 <_lv_anim_core_init+0x50>) 1118e: 701a strb r2, [r3, #0] } 11190: bd10 pop {r4, pc} 11192: 46c0 nop ; (mov r8, r8) 11194: 20004de4 .word 0x20004de4 11198: 00011dd1 .word 0x00011dd1 1119c: 00010ef9 .word 0x00010ef9 111a0: 20002bf4 .word 0x20002bf4 111a4: 00010f91 .word 0x00010f91 111a8: 0001391d .word 0x0001391d 111ac: 20002bec .word 0x20002bec 111b0: 00010f51 .word 0x00010f51 111b4: 20002bf0 .word 0x20002bf0 000111b8 : { 111b8: b510 push {r4, lr} 111ba: 0004 movs r4, r0 _lv_memset_00(a, sizeof(lv_anim_t)); 111bc: 2140 movs r1, #64 ; 0x40 111be: 4b0d ldr r3, [pc, #52] ; (111f4 ) 111c0: 4798 blx r3 a->time = 500; 111c2: 23fa movs r3, #250 ; 0xfa 111c4: 005b lsls r3, r3, #1 111c6: 6223 str r3, [r4, #32] a->start = 0; 111c8: 2300 movs r3, #0 111ca: 61a3 str r3, [r4, #24] a->end = 100; 111cc: 3364 adds r3, #100 ; 0x64 111ce: 61e3 str r3, [r4, #28] { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 111d0: 4b09 ldr r3, [pc, #36] ; (111f8 ) 111d2: 781a ldrb r2, [r3, #0] 111d4: 7422 strb r2, [r4, #16] 111d6: 785a ldrb r2, [r3, #1] 111d8: 7462 strb r2, [r4, #17] 111da: 789a ldrb r2, [r3, #2] 111dc: 74a2 strb r2, [r4, #18] 111de: 78db ldrb r3, [r3, #3] 111e0: 74e3 strb r3, [r4, #19] a->repeat_cnt = 1; 111e2: 2301 movs r3, #1 111e4: 86a3 strh r3, [r4, #52] ; 0x34 a->early_apply = 1; 111e6: 2236 movs r2, #54 ; 0x36 111e8: 5ca3 ldrb r3, [r4, r2] 111ea: 2101 movs r1, #1 111ec: 430b orrs r3, r1 111ee: 54a3 strb r3, [r4, r2] } 111f0: bd10 pop {r4, pc} 111f2: 46c0 nop ; (mov r8, r8) 111f4: 00012975 .word 0x00012975 111f8: 0002a74c .word 0x0002a74c 000111fc : { 111fc: b5f0 push {r4, r5, r6, r7, lr} 111fe: 46d6 mov lr, sl 11200: b500 push {lr} 11202: b082 sub sp, #8 11204: 0006 movs r6, r0 11206: 468a mov sl, r1 a = _lv_ll_get_head(&LV_GC_ROOT(_lv_anim_ll)); 11208: 4815 ldr r0, [pc, #84] ; (11260 ) 1120a: 4b16 ldr r3, [pc, #88] ; (11264 ) 1120c: 4798 blx r3 1120e: 1e04 subs r4, r0, #0 while(a != NULL) { 11210: d01e beq.n 11250 11212: 2300 movs r3, #0 11214: 9301 str r3, [sp, #4] a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11216: 4f14 ldr r7, [pc, #80] ; (11268 ) 11218: e00c b.n 11234 _lv_ll_remove(&LV_GC_ROOT(_lv_anim_ll), a); 1121a: 0021 movs r1, r4 1121c: 4810 ldr r0, [pc, #64] ; (11260 ) 1121e: 4b13 ldr r3, [pc, #76] ; (1126c ) 11220: 4798 blx r3 lv_mem_free(a); 11222: 0020 movs r0, r4 11224: 4b12 ldr r3, [pc, #72] ; (11270 ) 11226: 4798 blx r3 anim_mark_list_change(); /*Read by `anim_task`. It need to know if a delete occurred in 11228: 4b12 ldr r3, [pc, #72] ; (11274 ) 1122a: 4798 blx r3 del = true; 1122c: 2301 movs r3, #1 1122e: 9301 str r3, [sp, #4] 11230: 1e2c subs r4, r5, #0 while(a != NULL) { 11232: d00f beq.n 11254 a_next = _lv_ll_get_next(&LV_GC_ROOT(_lv_anim_ll), a); 11234: 0021 movs r1, r4 11236: 480a ldr r0, [pc, #40] ; (11260 ) 11238: 47b8 blx r7 1123a: 0005 movs r5, r0 if(a->var == var && (a->exec_cb == exec_cb || exec_cb == NULL)) { 1123c: 6823 ldr r3, [r4, #0] 1123e: 42b3 cmp r3, r6 11240: d1f6 bne.n 11230 11242: 6863 ldr r3, [r4, #4] 11244: 4553 cmp r3, sl 11246: d0e8 beq.n 1121a 11248: 4653 mov r3, sl 1124a: 2b00 cmp r3, #0 1124c: d1f0 bne.n 11230 1124e: e7e4 b.n 1121a bool del = false; 11250: 2300 movs r3, #0 11252: 9301 str r3, [sp, #4] } 11254: 9801 ldr r0, [sp, #4] 11256: b002 add sp, #8 11258: bc04 pop {r2} 1125a: 4692 mov sl, r2 1125c: bdf0 pop {r4, r5, r6, r7, pc} 1125e: 46c0 nop ; (mov r8, r8) 11260: 20004de4 .word 0x20004de4 11264: 00011e85 .word 0x00011e85 11268: 00011e9d .word 0x00011e9d 1126c: 00011f6d .word 0x00011f6d 11270: 000123c9 .word 0x000123c9 11274: 00010f51 .word 0x00010f51 00011278 : { 11278: b530 push {r4, r5, lr} 1127a: b083 sub sp, #12 1127c: 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*/ 1127e: 6841 ldr r1, [r0, #4] 11280: 2900 cmp r1, #0 11282: d002 beq.n 1128a 11284: 6800 ldr r0, [r0, #0] 11286: 4b1e ldr r3, [pc, #120] ; (11300 ) 11288: 4798 blx r3 if(_lv_ll_is_empty(&LV_GC_ROOT(_lv_anim_ll))) { 1128a: 481e ldr r0, [pc, #120] ; (11304 ) 1128c: 4b1e ldr r3, [pc, #120] ; (11308 ) 1128e: 4798 blx r3 11290: 2800 cmp r0, #0 11292: d121 bne.n 112d8 lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll)); 11294: 481b ldr r0, [pc, #108] ; (11304 ) 11296: 4b1d ldr r3, [pc, #116] ; (1130c ) 11298: 4798 blx r3 1129a: 0004 movs r4, r0 LV_ASSERT_MEM(new_anim); 1129c: 4b1c ldr r3, [pc, #112] ; (11310 ) 1129e: 4798 blx r3 112a0: 2800 cmp r0, #0 112a2: d01f beq.n 112e4 if(new_anim == NULL) return; 112a4: 2c00 cmp r4, #0 112a6: d015 beq.n 112d4 a->time_orig = a->time; 112a8: 6a2b ldr r3, [r5, #32] 112aa: 63ab str r3, [r5, #56] ; 0x38 _lv_memcpy(new_anim, a, sizeof(lv_anim_t)); 112ac: 2240 movs r2, #64 ; 0x40 112ae: 0029 movs r1, r5 112b0: 0020 movs r0, r4 112b2: 4b18 ldr r3, [pc, #96] ; (11314 ) 112b4: 4798 blx r3 if(new_anim->early_apply) { 112b6: 2336 movs r3, #54 ; 0x36 112b8: 5ce3 ldrb r3, [r4, r3] 112ba: 07db lsls r3, r3, #31 112bc: d508 bpl.n 112d0 if(new_anim->exec_cb && new_anim->var) new_anim->exec_cb(new_anim->var, new_anim->start); 112be: 6863 ldr r3, [r4, #4] 112c0: 2b00 cmp r3, #0 112c2: d005 beq.n 112d0 112c4: 6820 ldr r0, [r4, #0] 112c6: 2800 cmp r0, #0 112c8: d002 beq.n 112d0 112ca: 2218 movs r2, #24 112cc: 5ea1 ldrsh r1, [r4, r2] 112ce: 4798 blx r3 anim_mark_list_change(); 112d0: 4b11 ldr r3, [pc, #68] ; (11318 ) 112d2: 4798 blx r3 } 112d4: b003 add sp, #12 112d6: bd30 pop {r4, r5, pc} last_task_run = lv_tick_get() - 1; 112d8: 4b10 ldr r3, [pc, #64] ; (1131c ) 112da: 4798 blx r3 112dc: 3801 subs r0, #1 112de: 4b10 ldr r3, [pc, #64] ; (11320 ) 112e0: 6018 str r0, [r3, #0] 112e2: e7d7 b.n 11294 LV_ASSERT_MEM(new_anim); 112e4: 4b0f ldr r3, [pc, #60] ; (11324 ) 112e6: 9300 str r3, [sp, #0] 112e8: 226a movs r2, #106 ; 0x6a 112ea: 490f ldr r1, [pc, #60] ; (11328 ) 112ec: 3003 adds r0, #3 112ee: 4d0f ldr r5, [pc, #60] ; (1132c ) 112f0: 47a8 blx r5 112f2: 0022 movs r2, r4 112f4: 2300 movs r3, #0 112f6: 480e ldr r0, [pc, #56] ; (11330 ) 112f8: 490e ldr r1, [pc, #56] ; (11334 ) 112fa: 4788 blx r1 112fc: e7fe b.n 112fc 112fe: 46c0 nop ; (mov r8, r8) 11300: 000111fd .word 0x000111fd 11304: 20004de4 .word 0x20004de4 11308: 0001212d .word 0x0001212d 1130c: 00011de5 .word 0x00011de5 11310: 000017ad .word 0x000017ad 11314: 00012545 .word 0x00012545 11318: 00010f51 .word 0x00010f51 1131c: 00010ef9 .word 0x00010ef9 11320: 20002bf4 .word 0x20002bf4 11324: 0002a73c .word 0x0002a73c 11328: 0002a754 .word 0x0002a754 1132c: 00012159 .word 0x00012159 11330: 00025854 .word 0x00025854 11334: 000017b5 .word 0x000017b5 00011338 : { 11338: b5f8 push {r3, r4, r5, r6, r7, lr} 1133a: 0004 movs r4, r0 1133c: 000f movs r7, r1 _LV_LL_READ(LV_GC_ROOT(_lv_anim_ll), a) { 1133e: 480a ldr r0, [pc, #40] ; (11368 ) 11340: 4b0a ldr r3, [pc, #40] ; (1136c ) 11342: 4798 blx r3 11344: 2800 cmp r0, #0 11346: d00d beq.n 11364 11348: 4e07 ldr r6, [pc, #28] ; (11368 ) 1134a: 4d09 ldr r5, [pc, #36] ; (11370 ) 1134c: e004 b.n 11358 1134e: 0001 movs r1, r0 11350: 0030 movs r0, r6 11352: 47a8 blx r5 11354: 2800 cmp r0, #0 11356: d005 beq.n 11364 if(a->var == var && a->exec_cb == exec_cb) { 11358: 6803 ldr r3, [r0, #0] 1135a: 42a3 cmp r3, r4 1135c: d1f7 bne.n 1134e 1135e: 6843 ldr r3, [r0, #4] 11360: 42bb cmp r3, r7 11362: d1f4 bne.n 1134e } 11364: bdf8 pop {r3, r4, r5, r6, r7, pc} 11366: 46c0 nop ; (mov r8, r8) 11368: 20004de4 .word 0x20004de4 1136c: 00011e85 .word 0x00011e85 11370: 00011e9d .word 0x00011e9d 00011374 : { 11374: b510 push {r4, lr} 11376: 0003 movs r3, r0 int32_t d = LV_MATH_ABS((int32_t)start - end); 11378: 1a89 subs r1, r1, r2 1137a: 17ca asrs r2, r1, #31 1137c: 1889 adds r1, r1, r2 1137e: 4051 eors r1, r2 uint32_t time = (int32_t)((int32_t)(d * 1000) / speed); 11380: 20fa movs r0, #250 ; 0xfa 11382: 0080 lsls r0, r0, #2 11384: 4348 muls r0, r1 11386: 0019 movs r1, r3 11388: 4b05 ldr r3, [pc, #20] ; (113a0 ) 1138a: 4798 blx r3 1138c: 4b05 ldr r3, [pc, #20] ; (113a4 ) 1138e: 4298 cmp r0, r3 11390: d900 bls.n 11394 11392: 0018 movs r0, r3 if(time == 0) { 11394: 2800 cmp r0, #0 11396: d100 bne.n 1139a time++; 11398: 3001 adds r0, #1 return time; 1139a: b280 uxth r0, r0 } 1139c: bd10 pop {r4, pc} 1139e: 46c0 nop ; (mov r8, r8) 113a0: 0001c1b9 .word 0x0001c1b9 113a4: 0000ffff .word 0x0000ffff 000113a8 : /********************** * STATIC FUNCTIONS **********************/ static bool lv_point_within_circle(const lv_area_t * area, const lv_point_t * p) { 113a8: b570 push {r4, r5, r6, lr} lv_coord_t r = (area->x2 - area->x1) / 2; 113aa: 2300 movs r3, #0 113ac: 5ec6 ldrsh r6, [r0, r3] 113ae: 2304 movs r3, #4 113b0: 5ec2 ldrsh r2, [r0, r3] 113b2: 1b92 subs r2, r2, r6 113b4: 0fd4 lsrs r4, r2, #31 113b6: 18a4 adds r4, r4, r2 113b8: 1064 asrs r4, r4, #1 /* Circle center */ lv_coord_t cx = area->x1 + r; 113ba: 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; 113bc: b224 sxth r4, r4 lv_coord_t px = p->x - cx; 113be: 880b ldrh r3, [r1, #0] 113c0: 1b9b subs r3, r3, r6 113c2: 1b5b subs r3, r3, r5 int32_t dist = (px * px) + (py * py); 113c4: b21b sxth r3, r3 lv_coord_t py = p->y - cy; 113c6: 884a ldrh r2, [r1, #2] 113c8: 8841 ldrh r1, [r0, #2] 113ca: 1a52 subs r2, r2, r1 113cc: 1b52 subs r2, r2, r5 int32_t dist = (px * px) + (py * py); 113ce: b212 sxth r2, r2 int32_t r_sqrd = r * r; 113d0: 4364 muls r4, r4 int32_t dist = (px * px) + (py * py); 113d2: 435b muls r3, r3 113d4: 4352 muls r2, r2 113d6: 189b adds r3, r3, r2 if(dist <= r_sqrd) 113d8: 17e0 asrs r0, r4, #31 113da: 0fda lsrs r2, r3, #31 113dc: 429c cmp r4, r3 113de: 4150 adcs r0, r2 113e0: b2c0 uxtb r0, r0 return true; else return false; } 113e2: bd70 pop {r4, r5, r6, pc} 000113e4 : area_p->y2 = area_p->y1 + h - 1; 113e4: 1e4b subs r3, r1, #1 113e6: 8841 ldrh r1, [r0, #2] 113e8: 18c9 adds r1, r1, r3 113ea: 80c1 strh r1, [r0, #6] } 113ec: 4770 bx lr 000113ee : size = (uint32_t)(area_p->x2 - area_p->x1 + 1) * (area_p->y2 - area_p->y1 + 1); 113ee: 2304 movs r3, #4 113f0: 5ec2 ldrsh r2, [r0, r3] 113f2: 2100 movs r1, #0 113f4: 5e43 ldrsh r3, [r0, r1] 113f6: 1ad2 subs r2, r2, r3 113f8: 3201 adds r2, #1 113fa: 2106 movs r1, #6 113fc: 5e43 ldrsh r3, [r0, r1] 113fe: 2102 movs r1, #2 11400: 5e40 ldrsh r0, [r0, r1] 11402: 1a18 subs r0, r3, r0 11404: 3001 adds r0, #1 11406: 4350 muls r0, r2 } 11408: 4770 bx lr 0001140a <_lv_area_intersect>: { 1140a: b5f0 push {r4, r5, r6, r7, lr} 1140c: 46c6 mov lr, r8 1140e: b500 push {lr} res_p->x1 = LV_MATH_MAX(a1_p->x1, a2_p->x1); 11410: 880d ldrh r5, [r1, #0] 11412: 8813 ldrh r3, [r2, #0] 11414: 1c1c adds r4, r3, #0 11416: b21b sxth r3, r3 11418: b22e sxth r6, r5 1141a: 42b3 cmp r3, r6 1141c: da00 bge.n 11420 <_lv_area_intersect+0x16> 1141e: 1c2c adds r4, r5, #0 11420: b226 sxth r6, r4 11422: 8004 strh r4, [r0, #0] res_p->y1 = LV_MATH_MAX(a1_p->y1, a2_p->y1); 11424: 884d ldrh r5, [r1, #2] 11426: 8853 ldrh r3, [r2, #2] 11428: 1c1c adds r4, r3, #0 1142a: b21b sxth r3, r3 1142c: b22f sxth r7, r5 1142e: 42bb cmp r3, r7 11430: da00 bge.n 11434 <_lv_area_intersect+0x2a> 11432: 1c2c adds r4, r5, #0 11434: b227 sxth r7, r4 11436: 8044 strh r4, [r0, #2] res_p->x2 = LV_MATH_MIN(a1_p->x2, a2_p->x2); 11438: 888d ldrh r5, [r1, #4] 1143a: 8893 ldrh r3, [r2, #4] 1143c: 1c1c adds r4, r3, #0 1143e: b21b sxth r3, r3 11440: 4698 mov r8, r3 11442: b22b sxth r3, r5 11444: 4598 cmp r8, r3 11446: dd00 ble.n 1144a <_lv_area_intersect+0x40> 11448: 1c2c adds r4, r5, #0 1144a: b225 sxth r5, r4 1144c: 8084 strh r4, [r0, #4] res_p->y2 = LV_MATH_MIN(a1_p->y2, a2_p->y2); 1144e: 88c9 ldrh r1, [r1, #6] 11450: 88d3 ldrh r3, [r2, #6] 11452: 1c1a adds r2, r3, #0 11454: b21b sxth r3, r3 11456: b20c sxth r4, r1 11458: 42a3 cmp r3, r4 1145a: dd00 ble.n 1145e <_lv_area_intersect+0x54> 1145c: 1c0a adds r2, r1, #0 1145e: b213 sxth r3, r2 11460: 80c2 strh r2, [r0, #6] union_ok = false; 11462: 2000 movs r0, #0 if((res_p->x1 > res_p->x2) || (res_p->y1 > res_p->y2)) { 11464: 42ae cmp r6, r5 11466: dc04 bgt.n 11472 <_lv_area_intersect+0x68> 11468: 0ff8 lsrs r0, r7, #31 1146a: 17da asrs r2, r3, #31 1146c: 42bb cmp r3, r7 1146e: 4150 adcs r0, r2 11470: b2c0 uxtb r0, r0 } 11472: bc04 pop {r2} 11474: 4690 mov r8, r2 11476: bdf0 pop {r4, r5, r6, r7, pc} 00011478 <_lv_area_join>: { 11478: b570 push {r4, r5, r6, lr} a_res_p->x1 = LV_MATH_MIN(a1_p->x1, a2_p->x1); 1147a: 880d ldrh r5, [r1, #0] 1147c: 8813 ldrh r3, [r2, #0] 1147e: 1c1c adds r4, r3, #0 11480: b21b sxth r3, r3 11482: b22e sxth r6, r5 11484: 42b3 cmp r3, r6 11486: dd00 ble.n 1148a <_lv_area_join+0x12> 11488: 1c2c adds r4, r5, #0 1148a: 8004 strh r4, [r0, #0] a_res_p->y1 = LV_MATH_MIN(a1_p->y1, a2_p->y1); 1148c: 884d ldrh r5, [r1, #2] 1148e: 8853 ldrh r3, [r2, #2] 11490: 1c1c adds r4, r3, #0 11492: b21b sxth r3, r3 11494: b22e sxth r6, r5 11496: 42b3 cmp r3, r6 11498: dd00 ble.n 1149c <_lv_area_join+0x24> 1149a: 1c2c adds r4, r5, #0 1149c: 8044 strh r4, [r0, #2] a_res_p->x2 = LV_MATH_MAX(a1_p->x2, a2_p->x2); 1149e: 888d ldrh r5, [r1, #4] 114a0: 8893 ldrh r3, [r2, #4] 114a2: 1c1c adds r4, r3, #0 114a4: b21b sxth r3, r3 114a6: b22e sxth r6, r5 114a8: 42b3 cmp r3, r6 114aa: da00 bge.n 114ae <_lv_area_join+0x36> 114ac: 1c2c adds r4, r5, #0 114ae: 8084 strh r4, [r0, #4] a_res_p->y2 = LV_MATH_MAX(a1_p->y2, a2_p->y2); 114b0: 88c9 ldrh r1, [r1, #6] 114b2: 88d3 ldrh r3, [r2, #6] 114b4: 1c1a adds r2, r3, #0 114b6: b21b sxth r3, r3 114b8: b20c sxth r4, r1 114ba: 42a3 cmp r3, r4 114bc: da00 bge.n 114c0 <_lv_area_join+0x48> 114be: 1c0a adds r2, r1, #0 114c0: 80c2 strh r2, [r0, #6] } 114c2: bd70 pop {r4, r5, r6, pc} 000114c4 <_lv_area_is_point_on>: { 114c4: b5f0 push {r4, r5, r6, r7, lr} 114c6: 46de mov lr, fp 114c8: 4657 mov r7, sl 114ca: 464e mov r6, r9 114cc: 4645 mov r5, r8 114ce: b5e0 push {r5, r6, r7, lr} 114d0: b085 sub sp, #20 114d2: 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))) { 114d4: 2300 movs r3, #0 114d6: 5ecc ldrsh r4, [r1, r3] 114d8: 2300 movs r3, #0 114da: 5ec1 ldrsh r1, [r0, r3] return false; 114dc: 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))) { 114de: 428c cmp r4, r1 114e0: db5e blt.n 115a0 <_lv_area_is_point_on+0xdc> 114e2: 2504 movs r5, #4 114e4: 5f43 ldrsh r3, [r0, r5] 114e6: 4698 mov r8, r3 return false; 114e8: 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))) { 114ea: 4544 cmp r4, r8 114ec: dc58 bgt.n 115a0 <_lv_area_is_point_on+0xdc> 114ee: 2302 movs r3, #2 114f0: 5ef4 ldrsh r4, [r6, r3] 114f2: 2502 movs r5, #2 114f4: 5f43 ldrsh r3, [r0, r5] 114f6: 469a mov sl, r3 return false; 114f8: 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))) { 114fa: 4554 cmp r4, sl 114fc: db50 blt.n 115a0 <_lv_area_is_point_on+0xdc> 114fe: 2306 movs r3, #6 11500: 5ec3 ldrsh r3, [r0, r3] 11502: 001d movs r5, r3 11504: 9301 str r3, [sp, #4] return false; 11506: 2300 movs r3, #0 if(!is_on_rect) 11508: 42ac cmp r4, r5 1150a: dc49 bgt.n 115a0 <_lv_area_is_point_on+0xdc> if(radius <= 0) { 1150c: 2a00 cmp r2, #0 1150e: dc00 bgt.n 11512 <_lv_area_is_point_on+0x4e> 11510: e09b b.n 1164a <_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); 11512: 4643 mov r3, r8 11514: 4668 mov r0, sp 11516: 8003 strh r3, [r0, #0] 11518: 8803 ldrh r3, [r0, #0] 1151a: 4699 mov r9, r3 1151c: 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); 1151e: b2af uxth r7, r5 11520: 4653 mov r3, sl 11522: 8003 strh r3, [r0, #0] 11524: 8800 ldrh r0, [r0, #0] corner_area.x1 = a_p->x1; 11526: ab02 add r3, sp, #8 11528: 8019 strh r1, [r3, #0] return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1152a: 464b mov r3, r9 1152c: 3301 adds r3, #1 1152e: 1b1b subs r3, r3, r4 lv_coord_t w = lv_area_get_width(a_p) / 2; 11530: b21b sxth r3, r3 11532: 0fd9 lsrs r1, r3, #31 11534: 18cb adds r3, r1, r3 11536: 105b asrs r3, r3, #1 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 11538: 1c79 adds r1, r7, #1 1153a: 1a09 subs r1, r1, r0 lv_coord_t h = lv_area_get_height(a_p) / 2; 1153c: b209 sxth r1, r1 1153e: 0fcd lsrs r5, r1, #31 11540: 186d adds r5, r5, r1 11542: 106d asrs r5, r5, #1 lv_coord_t max_radius = LV_MATH_MIN(w, h); 11544: 1c19 adds r1, r3, #0 11546: b21b sxth r3, r3 11548: 42ab cmp r3, r5 1154a: dd00 ble.n 1154e <_lv_area_is_point_on+0x8a> 1154c: 1c29 adds r1, r5, #0 corner_area.x2 = a_p->x1 + radius; 1154e: 1c0d adds r5, r1, #0 11550: b209 sxth r1, r1 11552: 4291 cmp r1, r2 11554: dd00 ble.n 11558 <_lv_area_is_point_on+0x94> 11556: 1c15 adds r5, r2, #0 11558: b2ad uxth r5, r5 1155a: 192c adds r4, r5, r4 1155c: b2a4 uxth r4, r4 1155e: ab02 add r3, sp, #8 11560: 809c strh r4, [r3, #4] corner_area.y1 = a_p->y1; 11562: 4652 mov r2, sl 11564: 805a strh r2, [r3, #2] corner_area.y2 = a_p->y1 + radius; 11566: 1828 adds r0, r5, r0 11568: b283 uxth r3, r0 1156a: 9300 str r3, [sp, #0] 1156c: 466b mov r3, sp 1156e: 2100 movs r1, #0 11570: 5e5a ldrsh r2, [r3, r1] 11572: 4693 mov fp, r2 11574: aa02 add r2, sp, #8 11576: 4659 mov r1, fp 11578: 80d1 strh r1, [r2, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 1157a: 2200 movs r2, #0 1157c: 0031 movs r1, r6 1157e: a802 add r0, sp, #8 11580: f7ff ffa0 bl 114c4 <_lv_area_is_point_on> 11584: 2800 cmp r0, #0 11586: d013 beq.n 115b0 <_lv_area_is_point_on+0xec> corner_area.x2 += radius; 11588: 192c adds r4, r5, r4 1158a: aa02 add r2, sp, #8 1158c: 8094 strh r4, [r2, #4] corner_area.y2 += radius; 1158e: 9b00 ldr r3, [sp, #0] 11590: 469c mov ip, r3 11592: 4465 add r5, ip 11594: 80d5 strh r5, [r2, #6] return lv_point_within_circle(&corner_area, p_p); 11596: 0031 movs r1, r6 11598: 0010 movs r0, r2 1159a: 4b2d ldr r3, [pc, #180] ; (11650 <_lv_area_is_point_on+0x18c>) 1159c: 4798 blx r3 1159e: 0003 movs r3, r0 } 115a0: 0018 movs r0, r3 115a2: b005 add sp, #20 115a4: bc3c pop {r2, r3, r4, r5} 115a6: 4690 mov r8, r2 115a8: 4699 mov r9, r3 115aa: 46a2 mov sl, r4 115ac: 46ab mov fp, r5 115ae: bdf0 pop {r4, r5, r6, r7, pc} corner_area.y1 = a_p->y2 - radius; 115b0: 1b7f subs r7, r7, r5 115b2: b2bf uxth r7, r7 115b4: ab02 add r3, sp, #8 115b6: 805f strh r7, [r3, #2] corner_area.y2 = a_p->y2; 115b8: 466a mov r2, sp 115ba: 8892 ldrh r2, [r2, #4] 115bc: 80da strh r2, [r3, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 115be: 2200 movs r2, #0 115c0: 0031 movs r1, r6 115c2: 0018 movs r0, r3 115c4: f7ff ff7e bl 114c4 <_lv_area_is_point_on> 115c8: 2800 cmp r0, #0 115ca: d00a beq.n 115e2 <_lv_area_is_point_on+0x11e> corner_area.x2 += radius; 115cc: 192c adds r4, r5, r4 115ce: ab02 add r3, sp, #8 115d0: 809c strh r4, [r3, #4] corner_area.y1 -= radius; 115d2: 1b7d subs r5, r7, r5 115d4: 805d strh r5, [r3, #2] return lv_point_within_circle(&corner_area, p_p); 115d6: 0031 movs r1, r6 115d8: 0018 movs r0, r3 115da: 4b1d ldr r3, [pc, #116] ; (11650 <_lv_area_is_point_on+0x18c>) 115dc: 4798 blx r3 115de: 0003 movs r3, r0 115e0: e7de b.n 115a0 <_lv_area_is_point_on+0xdc> corner_area.x1 = a_p->x2 - radius; 115e2: 464b mov r3, r9 115e4: 1b5c subs r4, r3, r5 115e6: b2a4 uxth r4, r4 115e8: ab02 add r3, sp, #8 115ea: 801c strh r4, [r3, #0] corner_area.x2 = a_p->x2; 115ec: 4642 mov r2, r8 115ee: 809a strh r2, [r3, #4] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 115f0: 2200 movs r2, #0 115f2: 0031 movs r1, r6 115f4: 0018 movs r0, r3 115f6: f7ff ff65 bl 114c4 <_lv_area_is_point_on> 115fa: 2800 cmp r0, #0 115fc: d00a beq.n 11614 <_lv_area_is_point_on+0x150> corner_area.x1 -= radius; 115fe: 1b64 subs r4, r4, r5 11600: ab02 add r3, sp, #8 11602: 801c strh r4, [r3, #0] corner_area.y1 -= radius; 11604: 1b7d subs r5, r7, r5 11606: 805d strh r5, [r3, #2] return lv_point_within_circle(&corner_area, p_p); 11608: 0031 movs r1, r6 1160a: 0018 movs r0, r3 1160c: 4b10 ldr r3, [pc, #64] ; (11650 <_lv_area_is_point_on+0x18c>) 1160e: 4798 blx r3 11610: 0003 movs r3, r0 11612: e7c5 b.n 115a0 <_lv_area_is_point_on+0xdc> corner_area.y1 = a_p->y1; 11614: ab02 add r3, sp, #8 11616: 4652 mov r2, sl 11618: 805a strh r2, [r3, #2] corner_area.y2 = a_p->y1 + radius; 1161a: 465a mov r2, fp 1161c: 80da strh r2, [r3, #6] if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 1161e: 2200 movs r2, #0 11620: 0031 movs r1, r6 11622: 0018 movs r0, r3 11624: f7ff ff4e bl 114c4 <_lv_area_is_point_on> return true; 11628: 2301 movs r3, #1 if(_lv_area_is_point_on(&corner_area, p_p, 0)) { 1162a: 2800 cmp r0, #0 1162c: d0b8 beq.n 115a0 <_lv_area_is_point_on+0xdc> corner_area.x1 -= radius; 1162e: 1b64 subs r4, r4, r5 11630: ab02 add r3, sp, #8 11632: 801c strh r4, [r3, #0] corner_area.y2 += radius; 11634: 9b00 ldr r3, [sp, #0] 11636: 469c mov ip, r3 11638: 4465 add r5, ip 1163a: ab02 add r3, sp, #8 1163c: 80dd strh r5, [r3, #6] return lv_point_within_circle(&corner_area, p_p); 1163e: 0031 movs r1, r6 11640: 0018 movs r0, r3 11642: 4b03 ldr r3, [pc, #12] ; (11650 <_lv_area_is_point_on+0x18c>) 11644: 4798 blx r3 11646: 0003 movs r3, r0 11648: e7aa b.n 115a0 <_lv_area_is_point_on+0xdc> return true; 1164a: 2301 movs r3, #1 1164c: e7a8 b.n 115a0 <_lv_area_is_point_on+0xdc> 1164e: 46c0 nop ; (mov r8, r8) 11650: 000113a9 .word 0x000113a9 00011654 <_lv_area_is_on>: { 11654: 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)) { 11656: 2300 movs r3, #0 11658: 5ec4 ldrsh r4, [r0, r3] 1165a: 2304 movs r3, #4 1165c: 5eca ldrsh r2, [r1, r3] return false; 1165e: 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)) { 11660: 4294 cmp r4, r2 11662: dc16 bgt.n 11692 <_lv_area_is_on+0x3e> 11664: 2304 movs r3, #4 11666: 5ec4 ldrsh r4, [r0, r3] 11668: 2300 movs r3, #0 1166a: 5eca ldrsh r2, [r1, r3] return false; 1166c: 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)) { 1166e: 4294 cmp r4, r2 11670: db0f blt.n 11692 <_lv_area_is_on+0x3e> 11672: 2302 movs r3, #2 11674: 5ec4 ldrsh r4, [r0, r3] 11676: 2306 movs r3, #6 11678: 5eca ldrsh r2, [r1, r3] return false; 1167a: 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)) { 1167c: 4294 cmp r4, r2 1167e: dc08 bgt.n 11692 <_lv_area_is_on+0x3e> 11680: 2306 movs r3, #6 11682: 5ec4 ldrsh r4, [r0, r3] 11684: 2302 movs r3, #2 11686: 5eca ldrsh r2, [r1, r3] 11688: 17e3 asrs r3, r4, #31 1168a: 0fd0 lsrs r0, r2, #31 1168c: 4294 cmp r4, r2 1168e: 4143 adcs r3, r0 11690: b2db uxtb r3, r3 } 11692: 0018 movs r0, r3 11694: bd10 pop {r4, pc} ... 00011698 <_lv_area_is_in>: { 11698: b5f0 push {r4, r5, r6, r7, lr} 1169a: 46c6 mov lr, r8 1169c: b500 push {lr} 1169e: b082 sub sp, #8 116a0: 0005 movs r5, r0 116a2: 000c movs r4, r1 116a4: 0016 movs r6, r2 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && 116a6: 2300 movs r3, #0 116a8: 5ec7 ldrsh r7, [r0, r3] 116aa: 2200 movs r2, #0 116ac: 5e8b ldrsh r3, [r1, r2] bool is_in = false; 116ae: 2000 movs r0, #0 if(ain_p->x1 >= aholder_p->x1 && ain_p->y1 >= aholder_p->y1 && ain_p->x2 <= aholder_p->x2 && 116b0: 42bb cmp r3, r7 116b2: dc14 bgt.n 116de <_lv_area_is_in+0x46> 116b4: 2302 movs r3, #2 116b6: 5eea ldrsh r2, [r5, r3] 116b8: 2102 movs r1, #2 116ba: 5e63 ldrsh r3, [r4, r1] 116bc: 429a cmp r2, r3 116be: db0e blt.n 116de <_lv_area_is_in+0x46> 116c0: 2304 movs r3, #4 116c2: 5eea ldrsh r2, [r5, r3] 116c4: 2104 movs r1, #4 116c6: 5e63 ldrsh r3, [r4, r1] 116c8: 429a cmp r2, r3 116ca: dc08 bgt.n 116de <_lv_area_is_in+0x46> 116cc: 2206 movs r2, #6 116ce: 5eab ldrsh r3, [r5, r2] 116d0: 2106 movs r1, #6 116d2: 5e62 ldrsh r2, [r4, r1] 116d4: 0fd8 lsrs r0, r3, #31 116d6: 17d1 asrs r1, r2, #31 116d8: 429a cmp r2, r3 116da: 4148 adcs r0, r1 116dc: b2c0 uxtb r0, r0 if(radius == 0) return is_in; 116de: 2e00 cmp r6, #0 116e0: d103 bne.n 116ea <_lv_area_is_in+0x52> } 116e2: b002 add sp, #8 116e4: bc04 pop {r2} 116e6: 4690 mov r8, r2 116e8: bdf0 pop {r4, r5, r6, r7, pc} p.x = ain_p->x1; 116ea: a901 add r1, sp, #4 116ec: 800f strh r7, [r1, #0] p.y = ain_p->y1; 116ee: 886b ldrh r3, [r5, #2] 116f0: 804b strh r3, [r1, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 116f2: 0032 movs r2, r6 116f4: 0020 movs r0, r4 116f6: 4b10 ldr r3, [pc, #64] ; (11738 <_lv_area_is_in+0xa0>) 116f8: 4798 blx r3 116fa: 2800 cmp r0, #0 116fc: d0f1 beq.n 116e2 <_lv_area_is_in+0x4a> p.x = ain_p->x2; 116fe: 2204 movs r2, #4 11700: 5eab ldrsh r3, [r5, r2] 11702: 4698 mov r8, r3 11704: a901 add r1, sp, #4 11706: 800b strh r3, [r1, #0] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 11708: 0032 movs r2, r6 1170a: 0020 movs r0, r4 1170c: 4b0a ldr r3, [pc, #40] ; (11738 <_lv_area_is_in+0xa0>) 1170e: 4798 blx r3 11710: 2800 cmp r0, #0 11712: d0e6 beq.n 116e2 <_lv_area_is_in+0x4a> p.x = ain_p->x1; 11714: a901 add r1, sp, #4 11716: 800f strh r7, [r1, #0] p.y = ain_p->y2; 11718: 88eb ldrh r3, [r5, #6] 1171a: 804b strh r3, [r1, #2] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 1171c: 0032 movs r2, r6 1171e: 0020 movs r0, r4 11720: 4b05 ldr r3, [pc, #20] ; (11738 <_lv_area_is_in+0xa0>) 11722: 4798 blx r3 11724: 2800 cmp r0, #0 11726: d0dc beq.n 116e2 <_lv_area_is_in+0x4a> p.x = ain_p->x2; 11728: a901 add r1, sp, #4 1172a: 4643 mov r3, r8 1172c: 800b strh r3, [r1, #0] if(_lv_area_is_point_on(aholder_p, &p, radius) == false) return false; 1172e: 0032 movs r2, r6 11730: 0020 movs r0, r4 11732: 4b01 ldr r3, [pc, #4] ; (11738 <_lv_area_is_in+0xa0>) 11734: 4798 blx r3 11736: e7d4 b.n 116e2 <_lv_area_is_in+0x4a> 11738: 000114c5 .word 0x000114c5 0001173c <_lv_area_align>: { 1173c: b530 push {r4, r5, lr} switch(align) { 1173e: 2a14 cmp r2, #20 11740: d827 bhi.n 11792 <_lv_area_align+0x56> 11742: 0092 lsls r2, r2, #2 11744: 4cb2 ldr r4, [pc, #712] ; (11a10 <_lv_area_align+0x2d4>) 11746: 58a2 ldr r2, [r4, r2] 11748: 4697 mov pc, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1174a: 8882 ldrh r2, [r0, #4] 1174c: 3201 adds r2, #1 1174e: 8804 ldrh r4, [r0, #0] 11750: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 11752: b212 sxth r2, r2 11754: 0fd4 lsrs r4, r2, #31 11756: 18a4 adds r4, r4, r2 11758: 1064 asrs r4, r4, #1 1175a: 888a ldrh r2, [r1, #4] 1175c: 3201 adds r2, #1 1175e: 880d ldrh r5, [r1, #0] 11760: 1b52 subs r2, r2, r5 11762: b212 sxth r2, r2 11764: 0fd5 lsrs r5, r2, #31 11766: 18aa adds r2, r5, r2 11768: 1052 asrs r2, r2, #1 1176a: 1aa2 subs r2, r4, r2 1176c: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1176e: 88c2 ldrh r2, [r0, #6] 11770: 3201 adds r2, #1 11772: 8844 ldrh r4, [r0, #2] 11774: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11776: b212 sxth r2, r2 11778: 0fd4 lsrs r4, r2, #31 1177a: 18a4 adds r4, r4, r2 1177c: 1064 asrs r4, r4, #1 1177e: 88ca ldrh r2, [r1, #6] 11780: 3201 adds r2, #1 11782: 8849 ldrh r1, [r1, #2] 11784: 1a52 subs r2, r2, r1 11786: b212 sxth r2, r2 11788: 0fd1 lsrs r1, r2, #31 1178a: 188a adds r2, r1, r2 1178c: 1052 asrs r2, r2, #1 1178e: 1aa2 subs r2, r4, r2 11790: 805a strh r2, [r3, #2] res->x += base->x1; 11792: 881a ldrh r2, [r3, #0] 11794: 8801 ldrh r1, [r0, #0] 11796: 1852 adds r2, r2, r1 11798: 801a strh r2, [r3, #0] res->y += base->y1; 1179a: 885a ldrh r2, [r3, #2] 1179c: 8841 ldrh r1, [r0, #2] 1179e: 1852 adds r2, r2, r1 117a0: 805a strh r2, [r3, #2] } 117a2: bd30 pop {r4, r5, pc} res->x = 0; 117a4: 2200 movs r2, #0 117a6: 801a strh r2, [r3, #0] res->y = 0; 117a8: 805a strh r2, [r3, #2] break; 117aa: e7f2 b.n 11792 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 117ac: 8882 ldrh r2, [r0, #4] 117ae: 3201 adds r2, #1 117b0: 8804 ldrh r4, [r0, #0] 117b2: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 117b4: b212 sxth r2, r2 117b6: 0fd4 lsrs r4, r2, #31 117b8: 18a4 adds r4, r4, r2 117ba: 1064 asrs r4, r4, #1 117bc: 888a ldrh r2, [r1, #4] 117be: 3201 adds r2, #1 117c0: 8809 ldrh r1, [r1, #0] 117c2: 1a52 subs r2, r2, r1 117c4: b212 sxth r2, r2 117c6: 0fd1 lsrs r1, r2, #31 117c8: 188a adds r2, r1, r2 117ca: 1052 asrs r2, r2, #1 117cc: 1aa2 subs r2, r4, r2 117ce: 801a strh r2, [r3, #0] res->y = 0; 117d0: 2200 movs r2, #0 117d2: 805a strh r2, [r3, #2] break; 117d4: e7dd b.n 11792 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 117d6: 8882 ldrh r2, [r0, #4] 117d8: 888c ldrh r4, [r1, #4] 117da: 1b12 subs r2, r2, r4 117dc: 8804 ldrh r4, [r0, #0] 117de: 1b12 subs r2, r2, r4 117e0: 8809 ldrh r1, [r1, #0] 117e2: 1852 adds r2, r2, r1 117e4: 801a strh r2, [r3, #0] res->y = 0; 117e6: 2200 movs r2, #0 117e8: 805a strh r2, [r3, #2] break; 117ea: e7d2 b.n 11792 <_lv_area_align+0x56> res->x = 0; 117ec: 2200 movs r2, #0 117ee: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 117f0: 88c2 ldrh r2, [r0, #6] 117f2: 88cc ldrh r4, [r1, #6] 117f4: 1b12 subs r2, r2, r4 117f6: 8844 ldrh r4, [r0, #2] 117f8: 1b12 subs r2, r2, r4 117fa: 8849 ldrh r1, [r1, #2] 117fc: 1852 adds r2, r2, r1 117fe: 805a strh r2, [r3, #2] break; 11800: e7c7 b.n 11792 <_lv_area_align+0x56> 11802: 8882 ldrh r2, [r0, #4] 11804: 3201 adds r2, #1 11806: 8804 ldrh r4, [r0, #0] 11808: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 1180a: b212 sxth r2, r2 1180c: 0fd4 lsrs r4, r2, #31 1180e: 18a4 adds r4, r4, r2 11810: 1064 asrs r4, r4, #1 11812: 888a ldrh r2, [r1, #4] 11814: 3201 adds r2, #1 11816: 880d ldrh r5, [r1, #0] 11818: 1b52 subs r2, r2, r5 1181a: b212 sxth r2, r2 1181c: 0fd5 lsrs r5, r2, #31 1181e: 18aa adds r2, r5, r2 11820: 1052 asrs r2, r2, #1 11822: 1aa2 subs r2, r4, r2 11824: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11826: 88c2 ldrh r2, [r0, #6] 11828: 88cc ldrh r4, [r1, #6] 1182a: 1b12 subs r2, r2, r4 1182c: 8844 ldrh r4, [r0, #2] 1182e: 1b12 subs r2, r2, r4 11830: 8849 ldrh r1, [r1, #2] 11832: 1852 adds r2, r2, r1 11834: 805a strh r2, [r3, #2] break; 11836: e7ac b.n 11792 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11838: 8882 ldrh r2, [r0, #4] 1183a: 888c ldrh r4, [r1, #4] 1183c: 1b12 subs r2, r2, r4 1183e: 8804 ldrh r4, [r0, #0] 11840: 1b12 subs r2, r2, r4 11842: 880c ldrh r4, [r1, #0] 11844: 1912 adds r2, r2, r4 11846: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11848: 88c2 ldrh r2, [r0, #6] 1184a: 88cc ldrh r4, [r1, #6] 1184c: 1b12 subs r2, r2, r4 1184e: 8844 ldrh r4, [r0, #2] 11850: 1b12 subs r2, r2, r4 11852: 8849 ldrh r1, [r1, #2] 11854: 1852 adds r2, r2, r1 11856: 805a strh r2, [r3, #2] break; 11858: e79b b.n 11792 <_lv_area_align+0x56> res->x = 0; 1185a: 2200 movs r2, #0 1185c: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1185e: 88c2 ldrh r2, [r0, #6] 11860: 3201 adds r2, #1 11862: 8844 ldrh r4, [r0, #2] 11864: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11866: b212 sxth r2, r2 11868: 0fd4 lsrs r4, r2, #31 1186a: 18a4 adds r4, r4, r2 1186c: 1064 asrs r4, r4, #1 1186e: 88ca ldrh r2, [r1, #6] 11870: 3201 adds r2, #1 11872: 8849 ldrh r1, [r1, #2] 11874: 1a52 subs r2, r2, r1 11876: b212 sxth r2, r2 11878: 0fd1 lsrs r1, r2, #31 1187a: 188a adds r2, r1, r2 1187c: 1052 asrs r2, r2, #1 1187e: 1aa2 subs r2, r4, r2 11880: 805a strh r2, [r3, #2] break; 11882: e786 b.n 11792 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11884: 8882 ldrh r2, [r0, #4] 11886: 888c ldrh r4, [r1, #4] 11888: 1b12 subs r2, r2, r4 1188a: 8804 ldrh r4, [r0, #0] 1188c: 1b12 subs r2, r2, r4 1188e: 880c ldrh r4, [r1, #0] 11890: 1912 adds r2, r2, r4 11892: 801a strh r2, [r3, #0] 11894: 88c2 ldrh r2, [r0, #6] 11896: 3201 adds r2, #1 11898: 8844 ldrh r4, [r0, #2] 1189a: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 1189c: b212 sxth r2, r2 1189e: 0fd4 lsrs r4, r2, #31 118a0: 18a4 adds r4, r4, r2 118a2: 1064 asrs r4, r4, #1 118a4: 88ca ldrh r2, [r1, #6] 118a6: 3201 adds r2, #1 118a8: 8849 ldrh r1, [r1, #2] 118aa: 1a52 subs r2, r2, r1 118ac: b212 sxth r2, r2 118ae: 0fd1 lsrs r1, r2, #31 118b0: 188a adds r2, r1, r2 118b2: 1052 asrs r2, r2, #1 118b4: 1aa2 subs r2, r4, r2 118b6: 805a strh r2, [r3, #2] break; 118b8: e76b b.n 11792 <_lv_area_align+0x56> res->x = 0; 118ba: 2200 movs r2, #0 118bc: 801a strh r2, [r3, #0] 118be: 88ca ldrh r2, [r1, #6] 118c0: 8849 ldrh r1, [r1, #2] 118c2: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 118c4: 43d2 mvns r2, r2 118c6: 805a strh r2, [r3, #2] break; 118c8: e763 b.n 11792 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 118ca: 8882 ldrh r2, [r0, #4] 118cc: 3201 adds r2, #1 118ce: 8804 ldrh r4, [r0, #0] 118d0: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 118d2: b212 sxth r2, r2 118d4: 0fd4 lsrs r4, r2, #31 118d6: 18a4 adds r4, r4, r2 118d8: 1064 asrs r4, r4, #1 118da: 888a ldrh r2, [r1, #4] 118dc: 3201 adds r2, #1 118de: 880d ldrh r5, [r1, #0] 118e0: 1b52 subs r2, r2, r5 118e2: b212 sxth r2, r2 118e4: 0fd5 lsrs r5, r2, #31 118e6: 18aa adds r2, r5, r2 118e8: 1052 asrs r2, r2, #1 118ea: 1aa2 subs r2, r4, r2 118ec: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 118ee: 88ca ldrh r2, [r1, #6] 118f0: 8849 ldrh r1, [r1, #2] 118f2: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 118f4: 43d2 mvns r2, r2 118f6: 805a strh r2, [r3, #2] break; 118f8: e74b b.n 11792 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 118fa: 8882 ldrh r2, [r0, #4] 118fc: 888c ldrh r4, [r1, #4] 118fe: 1b12 subs r2, r2, r4 11900: 8804 ldrh r4, [r0, #0] 11902: 1b12 subs r2, r2, r4 11904: 880c ldrh r4, [r1, #0] 11906: 1912 adds r2, r2, r4 11908: 801a strh r2, [r3, #0] 1190a: 88ca ldrh r2, [r1, #6] 1190c: 8849 ldrh r1, [r1, #2] 1190e: 1a52 subs r2, r2, r1 res->y = -lv_area_get_height(to_align); 11910: 43d2 mvns r2, r2 11912: 805a strh r2, [r3, #2] break; 11914: e73d b.n 11792 <_lv_area_align+0x56> res->x = 0; 11916: 2200 movs r2, #0 11918: 801a strh r2, [r3, #0] 1191a: 88c2 ldrh r2, [r0, #6] 1191c: 3201 adds r2, #1 1191e: 8841 ldrh r1, [r0, #2] 11920: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11922: 805a strh r2, [r3, #2] break; 11924: e735 b.n 11792 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11926: 8882 ldrh r2, [r0, #4] 11928: 3201 adds r2, #1 1192a: 8804 ldrh r4, [r0, #0] 1192c: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base) / 2 - lv_area_get_width(to_align) / 2; 1192e: b212 sxth r2, r2 11930: 0fd4 lsrs r4, r2, #31 11932: 18a4 adds r4, r4, r2 11934: 1064 asrs r4, r4, #1 11936: 888a ldrh r2, [r1, #4] 11938: 3201 adds r2, #1 1193a: 8809 ldrh r1, [r1, #0] 1193c: 1a52 subs r2, r2, r1 1193e: b212 sxth r2, r2 11940: 0fd1 lsrs r1, r2, #31 11942: 188a adds r2, r1, r2 11944: 1052 asrs r2, r2, #1 11946: 1aa2 subs r2, r4, r2 11948: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1194a: 88c2 ldrh r2, [r0, #6] 1194c: 3201 adds r2, #1 1194e: 8841 ldrh r1, [r0, #2] 11950: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 11952: 805a strh r2, [r3, #2] break; 11954: e71d b.n 11792 <_lv_area_align+0x56> res->x = lv_area_get_width(base) - lv_area_get_width(to_align); 11956: 8882 ldrh r2, [r0, #4] 11958: 888c ldrh r4, [r1, #4] 1195a: 1b12 subs r2, r2, r4 1195c: 8804 ldrh r4, [r0, #0] 1195e: 1b12 subs r2, r2, r4 11960: 8809 ldrh r1, [r1, #0] 11962: 1852 adds r2, r2, r1 11964: 801a strh r2, [r3, #0] 11966: 88c2 ldrh r2, [r0, #6] 11968: 3201 adds r2, #1 1196a: 8841 ldrh r1, [r0, #2] 1196c: 1a52 subs r2, r2, r1 res->y = lv_area_get_height(base); 1196e: 805a strh r2, [r3, #2] break; 11970: e70f b.n 11792 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11972: 888a ldrh r2, [r1, #4] 11974: 8809 ldrh r1, [r1, #0] 11976: 1a52 subs r2, r2, r1 res->x = -lv_area_get_width(to_align); 11978: 43d2 mvns r2, r2 1197a: 801a strh r2, [r3, #0] res->y = 0; 1197c: 2200 movs r2, #0 1197e: 805a strh r2, [r3, #2] break; 11980: e707 b.n 11792 <_lv_area_align+0x56> 11982: 888a ldrh r2, [r1, #4] 11984: 880c ldrh r4, [r1, #0] 11986: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 11988: 43d2 mvns r2, r2 1198a: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1198c: 88c2 ldrh r2, [r0, #6] 1198e: 3201 adds r2, #1 11990: 8844 ldrh r4, [r0, #2] 11992: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 11994: b212 sxth r2, r2 11996: 0fd4 lsrs r4, r2, #31 11998: 18a4 adds r4, r4, r2 1199a: 1064 asrs r4, r4, #1 1199c: 88ca ldrh r2, [r1, #6] 1199e: 3201 adds r2, #1 119a0: 8849 ldrh r1, [r1, #2] 119a2: 1a52 subs r2, r2, r1 119a4: b212 sxth r2, r2 119a6: 0fd1 lsrs r1, r2, #31 119a8: 188a adds r2, r1, r2 119aa: 1052 asrs r2, r2, #1 119ac: 1aa2 subs r2, r4, r2 119ae: 805a strh r2, [r3, #2] break; 119b0: e6ef b.n 11792 <_lv_area_align+0x56> return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 119b2: 888a ldrh r2, [r1, #4] 119b4: 880c ldrh r4, [r1, #0] 119b6: 1b12 subs r2, r2, r4 res->x = -lv_area_get_width(to_align); 119b8: 43d2 mvns r2, r2 119ba: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 119bc: 88c2 ldrh r2, [r0, #6] 119be: 88cc ldrh r4, [r1, #6] 119c0: 1b12 subs r2, r2, r4 119c2: 8844 ldrh r4, [r0, #2] 119c4: 1b12 subs r2, r2, r4 119c6: 8849 ldrh r1, [r1, #2] 119c8: 1852 adds r2, r2, r1 119ca: 805a strh r2, [r3, #2] break; 119cc: e6e1 b.n 11792 <_lv_area_align+0x56> 119ce: 8882 ldrh r2, [r0, #4] 119d0: 3201 adds r2, #1 119d2: 8801 ldrh r1, [r0, #0] 119d4: 1a52 subs r2, r2, r1 res->x = lv_area_get_width(base); 119d6: 801a strh r2, [r3, #0] res->y = 0; 119d8: 2200 movs r2, #0 119da: 805a strh r2, [r3, #2] break; 119dc: e6d9 b.n 11792 <_lv_area_align+0x56> 119de: 8882 ldrh r2, [r0, #4] 119e0: 3201 adds r2, #1 119e2: 8804 ldrh r4, [r0, #0] 119e4: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 119e6: 801a strh r2, [r3, #0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 119e8: 88c2 ldrh r2, [r0, #6] 119ea: 3201 adds r2, #1 119ec: 8844 ldrh r4, [r0, #2] 119ee: 1b12 subs r2, r2, r4 res->y = lv_area_get_height(base) / 2 - lv_area_get_height(to_align) / 2; 119f0: b212 sxth r2, r2 119f2: 0fd4 lsrs r4, r2, #31 119f4: 18a4 adds r4, r4, r2 119f6: 1064 asrs r4, r4, #1 119f8: 88ca ldrh r2, [r1, #6] 119fa: 3201 adds r2, #1 119fc: 8849 ldrh r1, [r1, #2] 119fe: 1a52 subs r2, r2, r1 11a00: b212 sxth r2, r2 11a02: 0fd1 lsrs r1, r2, #31 11a04: 188a adds r2, r1, r2 11a06: 1052 asrs r2, r2, #1 11a08: 1aa2 subs r2, r4, r2 11a0a: 805a strh r2, [r3, #2] break; 11a0c: e6c1 b.n 11792 <_lv_area_align+0x56> 11a0e: 46c0 nop ; (mov r8, r8) 11a10: 0002a788 .word 0x0002a788 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 11a14: 8882 ldrh r2, [r0, #4] 11a16: 3201 adds r2, #1 11a18: 8804 ldrh r4, [r0, #0] 11a1a: 1b12 subs r2, r2, r4 res->x = lv_area_get_width(base); 11a1c: 801a strh r2, [r3, #0] res->y = lv_area_get_height(base) - lv_area_get_height(to_align); 11a1e: 88c2 ldrh r2, [r0, #6] 11a20: 88cc ldrh r4, [r1, #6] 11a22: 1b12 subs r2, r2, r4 11a24: 8844 ldrh r4, [r0, #2] 11a26: 1b12 subs r2, r2, r4 11a28: 8849 ldrh r1, [r1, #2] 11a2a: 1852 adds r2, r2, r1 11a2c: 805a strh r2, [r3, #2] break; 11a2e: e6b0 b.n 11792 <_lv_area_align+0x56> 00011a30 : /********************** * STATIC FUNCTIONS **********************/ LV_ATTRIBUTE_FAST_MEM void lv_color_fill(lv_color_t * buf, lv_color_t color, uint32_t px_num) { 11a30: b530 push {r4, r5, lr} 11a32: b28d uxth r5, r1 #if LV_COLOR_DEPTH == 16 uintptr_t buf_int = (uintptr_t) buf; if(buf_int & 0x3) { 11a34: 0783 lsls r3, r0, #30 11a36: d002 beq.n 11a3e *buf = color; 11a38: 8001 strh r1, [r0, #0] buf++; 11a3a: 3002 adds r0, #2 px_num--; 11a3c: 3a01 subs r2, #1 } uint32_t c32 = color.full + (color.full << 16); 11a3e: 0429 lsls r1, r5, #16 11a40: 1949 adds r1, r1, r5 uint32_t * buf32 = (uint32_t *)buf; while(px_num > 16) { 11a42: 2a10 cmp r2, #16 11a44: d916 bls.n 11a74 11a46: 0003 movs r3, r0 11a48: 0014 movs r4, r2 *buf32 = c32; 11a4a: 6019 str r1, [r3, #0] buf32++; *buf32 = c32; 11a4c: 6059 str r1, [r3, #4] buf32++; *buf32 = c32; 11a4e: 6099 str r1, [r3, #8] buf32++; *buf32 = c32; 11a50: 60d9 str r1, [r3, #12] buf32++; *buf32 = c32; 11a52: 6119 str r1, [r3, #16] buf32++; *buf32 = c32; 11a54: 6159 str r1, [r3, #20] buf32++; *buf32 = c32; 11a56: 6199 str r1, [r3, #24] buf32++; *buf32 = c32; 11a58: 61d9 str r1, [r3, #28] 11a5a: 3320 adds r3, #32 buf32++; px_num -= 16; 11a5c: 3c10 subs r4, #16 while(px_num > 16) { 11a5e: 2c10 cmp r4, #16 11a60: d8f3 bhi.n 11a4a 11a62: 0011 movs r1, r2 11a64: 3911 subs r1, #17 11a66: 0909 lsrs r1, r1, #4 11a68: 1c4c adds r4, r1, #1 11a6a: 0164 lsls r4, r4, #5 11a6c: 3a10 subs r2, #16 11a6e: 0109 lsls r1, r1, #4 11a70: 1a52 subs r2, r2, r1 buf32++; 11a72: 1900 adds r0, r0, r4 } buf = (lv_color_t *)buf32; while(px_num) { 11a74: 2a00 cmp r2, #0 11a76: d004 beq.n 11a82 *buf = color; 11a78: 8005 strh r5, [r0, #0] buf++; 11a7a: 3002 adds r0, #2 px_num --; 11a7c: 3a01 subs r2, #1 while(px_num) { 11a7e: 2a00 cmp r2, #0 11a80: d1fa bne.n 11a78 *buf = color; buf++; px_num --; } #endif } 11a82: bd30 pop {r4, r5, pc} 00011a84 : lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl) { 11a84: 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))); 11a86: 014a lsls r2, r1, #5 11a88: 1a52 subs r2, r2, r1 11a8a: 24ff movs r4, #255 ; 0xff 11a8c: 1a64 subs r4, r4, r1 11a8e: 0403 lsls r3, r0, #16 11a90: 0edb lsrs r3, r3, #27 11a92: 4363 muls r3, r4 11a94: 189d adds r5, r3, r2 11a96: 022b lsls r3, r5, #8 11a98: 195b adds r3, r3, r5 11a9a: 01db lsls r3, r3, #7 11a9c: 195b adds r3, r3, r5 11a9e: 011b lsls r3, r3, #4 11aa0: 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))); 11aa2: 0545 lsls r5, r0, #21 11aa4: 0ead lsrs r5, r5, #26 11aa6: 4365 muls r5, r4 11aa8: 018e lsls r6, r1, #6 11aaa: 1a71 subs r1, r6, r1 11aac: 186d adds r5, r5, r1 11aae: 0229 lsls r1, r5, #8 11ab0: 1949 adds r1, r1, r5 11ab2: 01c9 lsls r1, r1, #7 11ab4: 1949 adds r1, r1, r5 11ab6: 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))); 11ab8: 06c0 lsls r0, r0, #27 11aba: 0ec0 lsrs r0, r0, #27 11abc: 4360 muls r0, r4 11abe: 1882 adds r2, r0, r2 11ac0: 0210 lsls r0, r2, #8 11ac2: 1880 adds r0, r0, r2 11ac4: 01c0 lsls r0, r0, #7 11ac6: 1880 adds r0, r0, r2 11ac8: 0100 lsls r0, r0, #4 11aca: 0e89 lsrs r1, r1, #26 11acc: 0149 lsls r1, r1, #5 11ace: 0ec0 lsrs r0, r0, #27 11ad0: 02db lsls r3, r3, #11 11ad2: 4308 orrs r0, r1 11ad4: 4318 orrs r0, r3 return lv_color_mix(LV_COLOR_WHITE, c, lvl); } 11ad6: bd70 pop {r4, r5, r6, pc} 00011ad8 : lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl) { 11ad8: 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))); 11ada: 23ff movs r3, #255 ; 0xff 11adc: 1a59 subs r1, r3, r1 11ade: 0403 lsls r3, r0, #16 11ae0: 0edb lsrs r3, r3, #27 11ae2: 434b muls r3, r1 11ae4: 001a movs r2, r3 11ae6: 021b lsls r3, r3, #8 11ae8: 189b adds r3, r3, r2 11aea: 01db lsls r3, r3, #7 11aec: 189b adds r3, r3, r2 11aee: 011b lsls r3, r3, #4 11af0: 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))); 11af2: 0542 lsls r2, r0, #21 11af4: 0e92 lsrs r2, r2, #26 11af6: 434a muls r2, r1 11af8: 0014 movs r4, r2 11afa: 0212 lsls r2, r2, #8 11afc: 1912 adds r2, r2, r4 11afe: 01d2 lsls r2, r2, #7 11b00: 1912 adds r2, r2, r4 11b02: 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))); 11b04: 06c0 lsls r0, r0, #27 11b06: 0ec0 lsrs r0, r0, #27 11b08: 4341 muls r1, r0 11b0a: 0208 lsls r0, r1, #8 11b0c: 1840 adds r0, r0, r1 11b0e: 01c0 lsls r0, r0, #7 11b10: 1840 adds r0, r0, r1 11b12: 0100 lsls r0, r0, #4 11b14: 0e92 lsrs r2, r2, #26 11b16: 0152 lsls r2, r2, #5 11b18: 0ec0 lsrs r0, r0, #27 11b1a: 02db lsls r3, r3, #11 11b1c: 4310 orrs r0, r2 11b1e: 4318 orrs r0, r3 return lv_color_mix(LV_COLOR_BLACK, c, lvl); } 11b20: bd10 pop {r4, pc} 00011b22 : 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*/ 11b22: 1c42 adds r2, r0, #1 while(*path != '\0') { 11b24: 7843 ldrb r3, [r0, #1] 11b26: 2b00 cmp r3, #0 11b28: d104 bne.n 11b34 11b2a: e009 b.n 11b40 if(*path == ':' || *path == '\\' || *path == '/') { path++; 11b2c: 3201 adds r2, #1 while(*path != '\0') { 11b2e: 7813 ldrb r3, [r2, #0] 11b30: 2b00 cmp r3, #0 11b32: d005 beq.n 11b40 if(*path == ':' || *path == '\\' || *path == '/') { 11b34: 2b3a cmp r3, #58 ; 0x3a 11b36: d0f9 beq.n 11b2c 11b38: 2b5c cmp r3, #92 ; 0x5c 11b3a: d0f7 beq.n 11b2c 11b3c: 2b2f cmp r3, #47 ; 0x2f 11b3e: d0f5 beq.n 11b2c break; } } return path; } 11b40: 0010 movs r0, r2 11b42: 4770 bx lr 00011b44 <_lv_fs_init>: { 11b44: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_drv_ll), sizeof(lv_fs_drv_t)); 11b46: 2144 movs r1, #68 ; 0x44 11b48: 4801 ldr r0, [pc, #4] ; (11b50 <_lv_fs_init+0xc>) 11b4a: 4b02 ldr r3, [pc, #8] ; (11b54 <_lv_fs_init+0x10>) 11b4c: 4798 blx r3 } 11b4e: bd10 pop {r4, pc} 11b50: 20004db8 .word 0x20004db8 11b54: 00011dd1 .word 0x00011dd1 00011b58 : { 11b58: b570 push {r4, r5, r6, lr} 11b5a: 0004 movs r4, r0 if(file_p->drv == NULL) { 11b5c: 6840 ldr r0, [r0, #4] 11b5e: 2800 cmp r0, #0 11b60: d00e beq.n 11b80 if(file_p->drv->close_cb == NULL) { 11b62: 6903 ldr r3, [r0, #16] return LV_FS_RES_NOT_IMP; 11b64: 2509 movs r5, #9 if(file_p->drv->close_cb == NULL) { 11b66: 2b00 cmp r3, #0 11b68: d008 beq.n 11b7c lv_fs_res_t res = file_p->drv->close_cb(file_p->drv, file_p->file_d); 11b6a: 6821 ldr r1, [r4, #0] 11b6c: 4798 blx r3 11b6e: 0005 movs r5, r0 lv_mem_free(file_p->file_d); /*Clean up*/ 11b70: 6820 ldr r0, [r4, #0] 11b72: 4b04 ldr r3, [pc, #16] ; (11b84 ) 11b74: 4798 blx r3 file_p->file_d = NULL; 11b76: 2300 movs r3, #0 11b78: 6023 str r3, [r4, #0] file_p->drv = NULL; 11b7a: 6063 str r3, [r4, #4] } 11b7c: 0028 movs r0, r5 11b7e: bd70 pop {r4, r5, r6, pc} return LV_FS_RES_INV_PARAM; 11b80: 250b movs r5, #11 11b82: e7fb b.n 11b7c 11b84: 000123c9 .word 0x000123c9 00011b88 : { 11b88: b570 push {r4, r5, r6, lr} 11b8a: b084 sub sp, #16 11b8c: 1e1c subs r4, r3, #0 if(br != NULL) *br = 0; 11b8e: d001 beq.n 11b94 11b90: 2300 movs r3, #0 11b92: 6023 str r3, [r4, #0] if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11b94: 6845 ldr r5, [r0, #4] 11b96: 2d00 cmp r5, #0 11b98: d015 beq.n 11bc6 if(file_p->drv->read_cb == NULL) return LV_FS_RES_NOT_IMP; 11b9a: 69ae ldr r6, [r5, #24] 11b9c: 2309 movs r3, #9 11b9e: 2e00 cmp r6, #0 11ba0: d00e beq.n 11bc0 uint32_t br_tmp = 0; 11ba2: 2300 movs r3, #0 11ba4: 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); 11ba6: 6800 ldr r0, [r0, #0] 11ba8: ab03 add r3, sp, #12 11baa: 9300 str r3, [sp, #0] 11bac: 0013 movs r3, r2 11bae: 000a movs r2, r1 11bb0: 0001 movs r1, r0 11bb2: 0028 movs r0, r5 11bb4: 47b0 blx r6 11bb6: 0003 movs r3, r0 if(br != NULL) *br = br_tmp; 11bb8: 2c00 cmp r4, #0 11bba: d001 beq.n 11bc0 11bbc: 9a03 ldr r2, [sp, #12] 11bbe: 6022 str r2, [r4, #0] } 11bc0: 0018 movs r0, r3 11bc2: b004 add sp, #16 11bc4: bd70 pop {r4, r5, r6, pc} if(file_p->drv == NULL) return LV_FS_RES_INV_PARAM; 11bc6: 230b movs r3, #11 11bc8: e7fa b.n 11bc0 00011bca : { 11bca: b570 push {r4, r5, r6, lr} 11bcc: 000a movs r2, r1 if(file_p->drv == NULL) { 11bce: 6844 ldr r4, [r0, #4] 11bd0: 2c00 cmp r4, #0 11bd2: d009 beq.n 11be8 if(file_p->drv->seek_cb == NULL) { 11bd4: 6a25 ldr r5, [r4, #32] return LV_FS_RES_NOT_IMP; 11bd6: 2309 movs r3, #9 if(file_p->drv->seek_cb == NULL) { 11bd8: 2d00 cmp r5, #0 11bda: d003 beq.n 11be4 lv_fs_res_t res = file_p->drv->seek_cb(file_p->drv, file_p->file_d, pos); 11bdc: 6801 ldr r1, [r0, #0] 11bde: 0020 movs r0, r4 11be0: 47a8 blx r5 11be2: 0003 movs r3, r0 } 11be4: 0018 movs r0, r3 11be6: bd70 pop {r4, r5, r6, pc} return LV_FS_RES_INV_PARAM; 11be8: 230b movs r3, #11 11bea: e7fb b.n 11be4 00011bec : { 11bec: b570 push {r4, r5, r6, lr} 11bee: 0004 movs r4, r0 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11bf0: 4809 ldr r0, [pc, #36] ; (11c18 ) 11bf2: 4b0a ldr r3, [pc, #40] ; (11c1c ) 11bf4: 4798 blx r3 11bf6: 2800 cmp r0, #0 11bf8: d00c beq.n 11c14 if(drv->letter == letter) { 11bfa: 7803 ldrb r3, [r0, #0] 11bfc: 42a3 cmp r3, r4 11bfe: d009 beq.n 11c14 _LV_LL_READ(LV_GC_ROOT(_lv_drv_ll), drv) { 11c00: 4d05 ldr r5, [pc, #20] ; (11c18 ) 11c02: 4e07 ldr r6, [pc, #28] ; (11c20 ) 11c04: 0001 movs r1, r0 11c06: 0028 movs r0, r5 11c08: 47b0 blx r6 11c0a: 2800 cmp r0, #0 11c0c: d002 beq.n 11c14 if(drv->letter == letter) { 11c0e: 7803 ldrb r3, [r0, #0] 11c10: 42a3 cmp r3, r4 11c12: d1f7 bne.n 11c04 } 11c14: bd70 pop {r4, r5, r6, pc} 11c16: 46c0 nop ; (mov r8, r8) 11c18: 20004db8 .word 0x20004db8 11c1c: 00011e85 .word 0x00011e85 11c20: 00011e9d .word 0x00011e9d 00011c24 : { 11c24: b5f0 push {r4, r5, r6, r7, lr} 11c26: 46d6 mov lr, sl 11c28: 464f mov r7, r9 11c2a: b580 push {r7, lr} 11c2c: b085 sub sp, #20 11c2e: 0004 movs r4, r0 11c30: 000f movs r7, r1 11c32: 9203 str r2, [sp, #12] file_p->drv = NULL; 11c34: 2300 movs r3, #0 11c36: 6043 str r3, [r0, #4] file_p->file_d = NULL; 11c38: 6003 str r3, [r0, #0] if(path == NULL) return LV_FS_RES_INV_PARAM; 11c3a: 2900 cmp r1, #0 11c3c: d048 beq.n 11cd0 file_p->drv = lv_fs_get_drv(letter); 11c3e: 7808 ldrb r0, [r1, #0] 11c40: 4b27 ldr r3, [pc, #156] ; (11ce0 ) 11c42: 4798 blx r3 11c44: 6060 str r0, [r4, #4] if(file_p->drv == NULL) { 11c46: 2800 cmp r0, #0 11c48: d00a beq.n 11c60 if(file_p->drv->ready_cb != NULL) { 11c4a: 6883 ldr r3, [r0, #8] 11c4c: 2b00 cmp r3, #0 11c4e: d00b beq.n 11c68 if(file_p->drv->ready_cb(file_p->drv) == false) { 11c50: 4798 blx r3 11c52: 2800 cmp r0, #0 11c54: d108 bne.n 11c68 file_p->drv = NULL; 11c56: 2300 movs r3, #0 11c58: 6063 str r3, [r4, #4] file_p->file_d = NULL; 11c5a: 6023 str r3, [r4, #0] return LV_FS_RES_HW_ERR; 11c5c: 2501 movs r5, #1 11c5e: e038 b.n 11cd2 file_p->file_d = NULL; 11c60: 2300 movs r3, #0 11c62: 6023 str r3, [r4, #0] return LV_FS_RES_NOT_EX; 11c64: 2503 movs r5, #3 11c66: e034 b.n 11cd2 file_p->file_d = lv_mem_alloc(file_p->drv->file_size); 11c68: 6863 ldr r3, [r4, #4] 11c6a: 8858 ldrh r0, [r3, #2] 11c6c: 4b1d ldr r3, [pc, #116] ; (11ce4 ) 11c6e: 4798 blx r3 11c70: 6020 str r0, [r4, #0] LV_ASSERT_MEM(file_p->file_d); 11c72: 4b1d ldr r3, [pc, #116] ; (11ce8 ) 11c74: 4798 blx r3 11c76: 2800 cmp r0, #0 11c78: d006 beq.n 11c88 if(file_p->file_d == NULL) { 11c7a: 6823 ldr r3, [r4, #0] 11c7c: 469a mov sl, r3 11c7e: 2b00 cmp r3, #0 11c80: d10f bne.n 11ca2 file_p->drv = NULL; 11c82: 6063 str r3, [r4, #4] return LV_FS_RES_OUT_OF_MEM; /* Out of memory */ 11c84: 250a movs r5, #10 11c86: e024 b.n 11cd2 LV_ASSERT_MEM(file_p->file_d); 11c88: 4b18 ldr r3, [pc, #96] ; (11cec ) 11c8a: 9300 str r3, [sp, #0] 11c8c: 226f movs r2, #111 ; 0x6f 11c8e: 4918 ldr r1, [pc, #96] ; (11cf0 ) 11c90: 3003 adds r0, #3 11c92: 4d18 ldr r5, [pc, #96] ; (11cf4 ) 11c94: 47a8 blx r5 11c96: 6822 ldr r2, [r4, #0] 11c98: 2300 movs r3, #0 11c9a: 4817 ldr r0, [pc, #92] ; (11cf8 ) 11c9c: 4917 ldr r1, [pc, #92] ; (11cfc ) 11c9e: 4788 blx r1 11ca0: e7fe b.n 11ca0 if(file_p->drv->open_cb == NULL) { 11ca2: 6863 ldr r3, [r4, #4] 11ca4: 4699 mov r9, r3 11ca6: 68de ldr r6, [r3, #12] return LV_FS_RES_NOT_IMP; 11ca8: 2509 movs r5, #9 if(file_p->drv->open_cb == NULL) { 11caa: 2e00 cmp r6, #0 11cac: d011 beq.n 11cd2 const char * real_path = lv_fs_get_real_path(path); 11cae: 0038 movs r0, r7 11cb0: 4b13 ldr r3, [pc, #76] ; (11d00 ) 11cb2: 4798 blx r3 11cb4: 0002 movs r2, r0 lv_fs_res_t res = file_p->drv->open_cb(file_p->drv, file_p->file_d, real_path, mode); 11cb6: 9b03 ldr r3, [sp, #12] 11cb8: 4651 mov r1, sl 11cba: 4648 mov r0, r9 11cbc: 47b0 blx r6 11cbe: 1e05 subs r5, r0, #0 if(res != LV_FS_RES_OK) { 11cc0: d007 beq.n 11cd2 lv_mem_free(file_p->file_d); 11cc2: 6820 ldr r0, [r4, #0] 11cc4: 4b0f ldr r3, [pc, #60] ; (11d04 ) 11cc6: 4798 blx r3 file_p->file_d = NULL; 11cc8: 2300 movs r3, #0 11cca: 6023 str r3, [r4, #0] file_p->drv = NULL; 11ccc: 6063 str r3, [r4, #4] 11cce: e000 b.n 11cd2 if(path == NULL) return LV_FS_RES_INV_PARAM; 11cd0: 250b movs r5, #11 } 11cd2: 0028 movs r0, r5 11cd4: b005 add sp, #20 11cd6: bc0c pop {r2, r3} 11cd8: 4691 mov r9, r2 11cda: 469a mov sl, r3 11cdc: bdf0 pop {r4, r5, r6, r7, pc} 11cde: 46c0 nop ; (mov r8, r8) 11ce0: 00011bed .word 0x00011bed 11ce4: 000122dd .word 0x000122dd 11ce8: 000017ad .word 0x000017ad 11cec: 0002a7dc .word 0x0002a7dc 11cf0: 0002a7e8 .word 0x0002a7e8 11cf4: 00012159 .word 0x00012159 11cf8: 00025854 .word 0x00025854 11cfc: 000017b5 .word 0x000017b5 11d00: 00011b23 .word 0x00011b23 11d04: 000123c9 .word 0x000123c9 00011d08 : { 11d08: b510 push {r4, lr} 11d0a: 0004 movs r4, r0 for(i = strlen(fn); i > 0; i--) { 11d0c: 4b11 ldr r3, [pc, #68] ; (11d54 ) 11d0e: 4798 blx r3 11d10: 1e03 subs r3, r0, #0 11d12: d017 beq.n 11d44 if(fn[i] == '.') { 11d14: 5c22 ldrb r2, [r4, r0] 11d16: 2a2e cmp r2, #46 ; 0x2e 11d18: d00f beq.n 11d3a else if(fn[i] == '/' || fn[i] == '\\') { 11d1a: 2a2f cmp r2, #47 ; 0x2f 11d1c: d014 beq.n 11d48 11d1e: 2a5c cmp r2, #92 ; 0x5c 11d20: d014 beq.n 11d4c for(i = strlen(fn); i > 0; i--) { 11d22: 3b01 subs r3, #1 11d24: 2b00 cmp r3, #0 11d26: d00b beq.n 11d40 if(fn[i] == '.') { 11d28: 5ce2 ldrb r2, [r4, r3] 11d2a: 2a2e cmp r2, #46 ; 0x2e 11d2c: d005 beq.n 11d3a else if(fn[i] == '/' || fn[i] == '\\') { 11d2e: 2a2f cmp r2, #47 ; 0x2f 11d30: d00e beq.n 11d50 11d32: 2a5c cmp r2, #92 ; 0x5c 11d34: d1f5 bne.n 11d22 return ""; /*No extension if a '\' or '/' found*/ 11d36: 4808 ldr r0, [pc, #32] ; (11d58 ) 11d38: e001 b.n 11d3e return &fn[i + 1]; 11d3a: 3301 adds r3, #1 11d3c: 18e0 adds r0, r4, r3 } 11d3e: bd10 pop {r4, pc} return ""; /*Empty string if no '.' in the file name. */ 11d40: 4805 ldr r0, [pc, #20] ; (11d58 ) 11d42: e7fc b.n 11d3e 11d44: 4804 ldr r0, [pc, #16] ; (11d58 ) 11d46: e7fa b.n 11d3e return ""; /*No extension if a '\' or '/' found*/ 11d48: 4803 ldr r0, [pc, #12] ; (11d58 ) 11d4a: e7f8 b.n 11d3e 11d4c: 4802 ldr r0, [pc, #8] ; (11d58 ) 11d4e: e7f6 b.n 11d3e 11d50: 4801 ldr r0, [pc, #4] ; (11d58 ) 11d52: e7f4 b.n 11d3e 11d54: 0001c709 .word 0x0001c709 11d58: 0002b0f0 .word 0x0002b0f0 00011d5c : * @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) { 11d5c: b500 push {lr} 11d5e: b083 sub sp, #12 11d60: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the next node of `NULL`*/ 11d62: 2900 cmp r1, #0 11d64: d00d beq.n 11d82 uint32_t node_p_size = sizeof(lv_ll_node_t *); if(next) 11d66: 2a00 cmp r2, #0 11d68: d00d beq.n 11d86 _lv_memcpy_small(act + LL_NEXT_P_OFFSET(ll_p), &next, node_p_size); 11d6a: 6800 ldr r0, [r0, #0] 11d6c: 3004 adds r0, #4 11d6e: 1809 adds r1, r1, r0 11d70: ab01 add r3, sp, #4 11d72: 781a ldrb r2, [r3, #0] 11d74: 700a strb r2, [r1, #0] 11d76: 785a ldrb r2, [r3, #1] 11d78: 704a strb r2, [r1, #1] 11d7a: 789a ldrb r2, [r3, #2] 11d7c: 708a strb r2, [r1, #2] 11d7e: 78db ldrb r3, [r3, #3] 11d80: 70cb strb r3, [r1, #3] else _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); } 11d82: b003 add sp, #12 11d84: bd00 pop {pc} _lv_memset_00(act + LL_NEXT_P_OFFSET(ll_p), node_p_size); 11d86: 6800 ldr r0, [r0, #0] 11d88: 3004 adds r0, #4 11d8a: 1808 adds r0, r1, r0 11d8c: 2104 movs r1, #4 11d8e: 4b01 ldr r3, [pc, #4] ; (11d94 ) 11d90: 4798 blx r3 11d92: e7f6 b.n 11d82 11d94: 00012975 .word 0x00012975 00011d98 : { 11d98: b500 push {lr} 11d9a: b083 sub sp, #12 11d9c: 9201 str r2, [sp, #4] if(act == NULL) return; /*Can't set the prev node of `NULL`*/ 11d9e: 2900 cmp r1, #0 11da0: d00c beq.n 11dbc if(prev) 11da2: 2a00 cmp r2, #0 11da4: d00c beq.n 11dc0 _lv_memcpy_small(act + LL_PREV_P_OFFSET(ll_p), &prev, node_p_size); 11da6: 6800 ldr r0, [r0, #0] 11da8: 1809 adds r1, r1, r0 11daa: ab01 add r3, sp, #4 11dac: 781a ldrb r2, [r3, #0] 11dae: 700a strb r2, [r1, #0] 11db0: 785a ldrb r2, [r3, #1] 11db2: 704a strb r2, [r1, #1] 11db4: 789a ldrb r2, [r3, #2] 11db6: 708a strb r2, [r1, #2] 11db8: 78db ldrb r3, [r3, #3] 11dba: 70cb strb r3, [r1, #3] } 11dbc: b003 add sp, #12 11dbe: bd00 pop {pc} _lv_memset_00(act + LL_PREV_P_OFFSET(ll_p), node_p_size); 11dc0: 6800 ldr r0, [r0, #0] 11dc2: 1808 adds r0, r1, r0 11dc4: 2104 movs r1, #4 11dc6: 4b01 ldr r3, [pc, #4] ; (11dcc ) 11dc8: 4798 blx r3 11dca: e7f7 b.n 11dbc 11dcc: 00012975 .word 0x00012975 00011dd0 <_lv_ll_init>: ll_p->head = NULL; 11dd0: 2300 movs r3, #0 11dd2: 6043 str r3, [r0, #4] ll_p->tail = NULL; 11dd4: 6083 str r3, [r0, #8] if(node_size & 0x3) { 11dd6: 078b lsls r3, r1, #30 11dd8: d002 beq.n 11de0 <_lv_ll_init+0x10> node_size = node_size & (~0x3); 11dda: 2303 movs r3, #3 11ddc: 4399 bics r1, r3 node_size += 4; 11dde: 3104 adds r1, #4 ll_p->n_size = node_size; 11de0: 6001 str r1, [r0, #0] } 11de2: 4770 bx lr 00011de4 <_lv_ll_ins_head>: { 11de4: b570 push {r4, r5, r6, lr} 11de6: 0004 movs r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11de8: 6800 ldr r0, [r0, #0] 11dea: 3008 adds r0, #8 11dec: 4b0e ldr r3, [pc, #56] ; (11e28 <_lv_ll_ins_head+0x44>) 11dee: 4798 blx r3 11df0: 1e05 subs r5, r0, #0 if(n_new != NULL) { 11df2: d014 beq.n 11e1e <_lv_ll_ins_head+0x3a> node_set_prev(ll_p, n_new, NULL); /*No prev. before the new head*/ 11df4: 2200 movs r2, #0 11df6: 0001 movs r1, r0 11df8: 0020 movs r0, r4 11dfa: 4b0c ldr r3, [pc, #48] ; (11e2c <_lv_ll_ins_head+0x48>) 11dfc: 4798 blx r3 node_set_next(ll_p, n_new, ll_p->head); /*After new comes the old head*/ 11dfe: 6862 ldr r2, [r4, #4] 11e00: 0029 movs r1, r5 11e02: 0020 movs r0, r4 11e04: 4b0a ldr r3, [pc, #40] ; (11e30 <_lv_ll_ins_head+0x4c>) 11e06: 4798 blx r3 if(ll_p->head != NULL) { /*If there is old head then before it goes the new*/ 11e08: 6861 ldr r1, [r4, #4] 11e0a: 2900 cmp r1, #0 11e0c: d003 beq.n 11e16 <_lv_ll_ins_head+0x32> node_set_prev(ll_p, ll_p->head, n_new); 11e0e: 002a movs r2, r5 11e10: 0020 movs r0, r4 11e12: 4b06 ldr r3, [pc, #24] ; (11e2c <_lv_ll_ins_head+0x48>) 11e14: 4798 blx r3 ll_p->head = n_new; /*Set the new head in the dsc.*/ 11e16: 6065 str r5, [r4, #4] if(ll_p->tail == NULL) { /*If there is no tail (1. node) set the tail too*/ 11e18: 68a3 ldr r3, [r4, #8] 11e1a: 2b00 cmp r3, #0 11e1c: d001 beq.n 11e22 <_lv_ll_ins_head+0x3e> } 11e1e: 0028 movs r0, r5 11e20: bd70 pop {r4, r5, r6, pc} ll_p->tail = n_new; 11e22: 60a5 str r5, [r4, #8] 11e24: e7fb b.n 11e1e <_lv_ll_ins_head+0x3a> 11e26: 46c0 nop ; (mov r8, r8) 11e28: 000122dd .word 0x000122dd 11e2c: 00011d99 .word 0x00011d99 11e30: 00011d5d .word 0x00011d5d 00011e34 <_lv_ll_ins_tail>: { 11e34: b570 push {r4, r5, r6, lr} 11e36: 0004 movs r4, r0 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11e38: 6800 ldr r0, [r0, #0] 11e3a: 3008 adds r0, #8 11e3c: 4b0e ldr r3, [pc, #56] ; (11e78 <_lv_ll_ins_tail+0x44>) 11e3e: 4798 blx r3 11e40: 1e05 subs r5, r0, #0 if(n_new != NULL) { 11e42: d014 beq.n 11e6e <_lv_ll_ins_tail+0x3a> node_set_next(ll_p, n_new, NULL); /*No next after the new tail*/ 11e44: 2200 movs r2, #0 11e46: 0001 movs r1, r0 11e48: 0020 movs r0, r4 11e4a: 4b0c ldr r3, [pc, #48] ; (11e7c <_lv_ll_ins_tail+0x48>) 11e4c: 4798 blx r3 node_set_prev(ll_p, n_new, ll_p->tail); /*The prev. before new is tho old tail*/ 11e4e: 68a2 ldr r2, [r4, #8] 11e50: 0029 movs r1, r5 11e52: 0020 movs r0, r4 11e54: 4b0a ldr r3, [pc, #40] ; (11e80 <_lv_ll_ins_tail+0x4c>) 11e56: 4798 blx r3 if(ll_p->tail != NULL) { /*If there is old tail then the new comes after it*/ 11e58: 68a1 ldr r1, [r4, #8] 11e5a: 2900 cmp r1, #0 11e5c: d003 beq.n 11e66 <_lv_ll_ins_tail+0x32> node_set_next(ll_p, ll_p->tail, n_new); 11e5e: 002a movs r2, r5 11e60: 0020 movs r0, r4 11e62: 4b06 ldr r3, [pc, #24] ; (11e7c <_lv_ll_ins_tail+0x48>) 11e64: 4798 blx r3 ll_p->tail = n_new; /*Set the new tail in the dsc.*/ 11e66: 60a5 str r5, [r4, #8] if(ll_p->head == NULL) { /*If there is no head (1. node) set the head too*/ 11e68: 6863 ldr r3, [r4, #4] 11e6a: 2b00 cmp r3, #0 11e6c: d001 beq.n 11e72 <_lv_ll_ins_tail+0x3e> } 11e6e: 0028 movs r0, r5 11e70: bd70 pop {r4, r5, r6, pc} ll_p->head = n_new; 11e72: 6065 str r5, [r4, #4] 11e74: e7fb b.n 11e6e <_lv_ll_ins_tail+0x3a> 11e76: 46c0 nop ; (mov r8, r8) 11e78: 000122dd .word 0x000122dd 11e7c: 00011d5d .word 0x00011d5d 11e80: 00011d99 .word 0x00011d99 00011e84 <_lv_ll_get_head>: if(ll_p != NULL) { 11e84: 2800 cmp r0, #0 11e86: d001 beq.n 11e8c <_lv_ll_get_head+0x8> head = ll_p->head; 11e88: 6840 ldr r0, [r0, #4] } 11e8a: 4770 bx lr void * head = NULL; 11e8c: 2000 movs r0, #0 return head; 11e8e: e7fc b.n 11e8a <_lv_ll_get_head+0x6> 00011e90 <_lv_ll_get_tail>: if(ll_p != NULL) { 11e90: 2800 cmp r0, #0 11e92: d001 beq.n 11e98 <_lv_ll_get_tail+0x8> tail = ll_p->tail; 11e94: 6880 ldr r0, [r0, #8] } 11e96: 4770 bx lr void * tail = NULL; 11e98: 2000 movs r0, #0 return tail; 11e9a: e7fc b.n 11e96 <_lv_ll_get_tail+0x6> 00011e9c <_lv_ll_get_next>: { 11e9c: b082 sub sp, #8 void * next = NULL; 11e9e: 2300 movs r3, #0 11ea0: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11ea2: 2800 cmp r0, #0 11ea4: d00b beq.n 11ebe <_lv_ll_get_next+0x22> _lv_memcpy_small(&next, n_act_d + LL_NEXT_P_OFFSET(ll_p), sizeof(void *)); 11ea6: 6803 ldr r3, [r0, #0] 11ea8: 3304 adds r3, #4 11eaa: 18c9 adds r1, r1, r3 11eac: ab01 add r3, sp, #4 11eae: 780a ldrb r2, [r1, #0] 11eb0: 701a strb r2, [r3, #0] 11eb2: 784a ldrb r2, [r1, #1] 11eb4: 705a strb r2, [r3, #1] 11eb6: 788a ldrb r2, [r1, #2] 11eb8: 709a strb r2, [r3, #2] 11eba: 78ca ldrb r2, [r1, #3] 11ebc: 70da strb r2, [r3, #3] } 11ebe: 9801 ldr r0, [sp, #4] 11ec0: b002 add sp, #8 11ec2: 4770 bx lr 00011ec4 <_lv_ll_get_prev>: { 11ec4: b082 sub sp, #8 void * prev = NULL; 11ec6: 2300 movs r3, #0 11ec8: 9301 str r3, [sp, #4] if(ll_p != NULL) { 11eca: 2800 cmp r0, #0 11ecc: d00a beq.n 11ee4 <_lv_ll_get_prev+0x20> _lv_memcpy_small(&prev, n_act_d + LL_PREV_P_OFFSET(ll_p), sizeof(void *)); 11ece: 6803 ldr r3, [r0, #0] 11ed0: 18c9 adds r1, r1, r3 11ed2: ab01 add r3, sp, #4 11ed4: 780a ldrb r2, [r1, #0] 11ed6: 701a strb r2, [r3, #0] 11ed8: 784a ldrb r2, [r1, #1] 11eda: 705a strb r2, [r3, #1] 11edc: 788a ldrb r2, [r1, #2] 11ede: 709a strb r2, [r3, #2] 11ee0: 78ca ldrb r2, [r1, #3] 11ee2: 70da strb r2, [r3, #3] } 11ee4: 9801 ldr r0, [sp, #4] 11ee6: b002 add sp, #8 11ee8: 4770 bx lr ... 00011eec <_lv_ll_ins_prev>: { 11eec: b5f0 push {r4, r5, r6, r7, lr} 11eee: 46c6 mov lr, r8 11ef0: b500 push {lr} 11ef2: 0004 movs r4, r0 11ef4: 000e movs r6, r1 if(NULL == ll_p || NULL == n_act) return NULL; 11ef6: 2800 cmp r0, #0 11ef8: d029 beq.n 11f4e <_lv_ll_ins_prev+0x62> 11efa: 2900 cmp r1, #0 11efc: d029 beq.n 11f52 <_lv_ll_ins_prev+0x66> if(_lv_ll_get_head(ll_p) == n_act) { 11efe: 6843 ldr r3, [r0, #4] 11f00: 4299 cmp r1, r3 11f02: d021 beq.n 11f48 <_lv_ll_ins_prev+0x5c> n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11f04: 6800 ldr r0, [r0, #0] 11f06: 3008 adds r0, #8 11f08: 4b13 ldr r3, [pc, #76] ; (11f58 <_lv_ll_ins_prev+0x6c>) 11f0a: 4798 blx r3 11f0c: 1e05 subs r5, r0, #0 if(n_new == NULL) return NULL; 11f0e: d018 beq.n 11f42 <_lv_ll_ins_prev+0x56> n_prev = _lv_ll_get_prev(ll_p, n_act); 11f10: 0031 movs r1, r6 11f12: 0020 movs r0, r4 11f14: 4b11 ldr r3, [pc, #68] ; (11f5c <_lv_ll_ins_prev+0x70>) 11f16: 4798 blx r3 11f18: 0007 movs r7, r0 node_set_next(ll_p, n_prev, n_new); 11f1a: 002a movs r2, r5 11f1c: 0001 movs r1, r0 11f1e: 0020 movs r0, r4 11f20: 4b0f ldr r3, [pc, #60] ; (11f60 <_lv_ll_ins_prev+0x74>) 11f22: 4698 mov r8, r3 11f24: 4798 blx r3 node_set_prev(ll_p, n_new, n_prev); 11f26: 003a movs r2, r7 11f28: 0029 movs r1, r5 11f2a: 0020 movs r0, r4 11f2c: 4f0d ldr r7, [pc, #52] ; (11f64 <_lv_ll_ins_prev+0x78>) 11f2e: 47b8 blx r7 node_set_prev(ll_p, n_act, n_new); 11f30: 002a movs r2, r5 11f32: 0031 movs r1, r6 11f34: 0020 movs r0, r4 11f36: 47b8 blx r7 node_set_next(ll_p, n_new, n_act); 11f38: 0032 movs r2, r6 11f3a: 0029 movs r1, r5 11f3c: 0020 movs r0, r4 11f3e: 47c0 blx r8 n_new = lv_mem_alloc(ll_p->n_size + LL_NODE_META_SIZE); 11f40: 0028 movs r0, r5 } 11f42: bc04 pop {r2} 11f44: 4690 mov r8, r2 11f46: bdf0 pop {r4, r5, r6, r7, pc} n_new = _lv_ll_ins_head(ll_p); 11f48: 4b07 ldr r3, [pc, #28] ; (11f68 <_lv_ll_ins_prev+0x7c>) 11f4a: 4798 blx r3 11f4c: e7f9 b.n 11f42 <_lv_ll_ins_prev+0x56> if(NULL == ll_p || NULL == n_act) return NULL; 11f4e: 2000 movs r0, #0 11f50: e7f7 b.n 11f42 <_lv_ll_ins_prev+0x56> 11f52: 0008 movs r0, r1 11f54: e7f5 b.n 11f42 <_lv_ll_ins_prev+0x56> 11f56: 46c0 nop ; (mov r8, r8) 11f58: 000122dd .word 0x000122dd 11f5c: 00011ec5 .word 0x00011ec5 11f60: 00011d5d .word 0x00011d5d 11f64: 00011d99 .word 0x00011d99 11f68: 00011de5 .word 0x00011de5 00011f6c <_lv_ll_remove>: { 11f6c: b570 push {r4, r5, r6, lr} 11f6e: 0004 movs r4, r0 11f70: 000d movs r5, r1 if(ll_p != NULL) { 11f72: 2800 cmp r0, #0 11f74: d02b beq.n 11fce <_lv_ll_remove+0x62> if(_lv_ll_get_head(ll_p) == node_p) { 11f76: 6843 ldr r3, [r0, #4] 11f78: 4299 cmp r1, r3 11f7a: d02a beq.n 11fd2 <_lv_ll_remove+0x66> else if(_lv_ll_get_tail(ll_p) == node_p) { 11f7c: 6883 ldr r3, [r0, #8] 11f7e: 4299 cmp r1, r3 11f80: d017 beq.n 11fb2 <_lv_ll_remove+0x46> lv_ll_node_t * n_prev = _lv_ll_get_prev(ll_p, node_p); 11f82: 0029 movs r1, r5 11f84: 0020 movs r0, r4 11f86: 4b19 ldr r3, [pc, #100] ; (11fec <_lv_ll_remove+0x80>) 11f88: 4798 blx r3 11f8a: 0006 movs r6, r0 lv_ll_node_t * n_next = _lv_ll_get_next(ll_p, node_p); 11f8c: 0029 movs r1, r5 11f8e: 0020 movs r0, r4 11f90: 4b17 ldr r3, [pc, #92] ; (11ff0 <_lv_ll_remove+0x84>) 11f92: 4798 blx r3 11f94: 0005 movs r5, r0 node_set_next(ll_p, n_prev, n_next); 11f96: 0002 movs r2, r0 11f98: 0031 movs r1, r6 11f9a: 0020 movs r0, r4 11f9c: 4b15 ldr r3, [pc, #84] ; (11ff4 <_lv_ll_remove+0x88>) 11f9e: 4798 blx r3 node_set_prev(ll_p, n_next, n_prev); 11fa0: 0032 movs r2, r6 11fa2: 0029 movs r1, r5 11fa4: 0020 movs r0, r4 11fa6: 4b14 ldr r3, [pc, #80] ; (11ff8 <_lv_ll_remove+0x8c>) 11fa8: 4798 blx r3 } 11faa: bd70 pop {r4, r5, r6, pc} ll_p->tail = NULL; 11fac: 2300 movs r3, #0 11fae: 60a3 str r3, [r4, #8] 11fb0: e7fb b.n 11faa <_lv_ll_remove+0x3e> ll_p->tail = _lv_ll_get_prev(ll_p, node_p); 11fb2: 4b0e ldr r3, [pc, #56] ; (11fec <_lv_ll_remove+0x80>) 11fb4: 4798 blx r3 11fb6: 60a0 str r0, [r4, #8] if(ll_p->tail == NULL) { 11fb8: 2800 cmp r0, #0 11fba: d005 beq.n 11fc8 <_lv_ll_remove+0x5c> node_set_next(ll_p, ll_p->tail, NULL); 11fbc: 2200 movs r2, #0 11fbe: 0001 movs r1, r0 11fc0: 0020 movs r0, r4 11fc2: 4b0c ldr r3, [pc, #48] ; (11ff4 <_lv_ll_remove+0x88>) 11fc4: 4798 blx r3 11fc6: e7f0 b.n 11faa <_lv_ll_remove+0x3e> ll_p->head = NULL; 11fc8: 2300 movs r3, #0 11fca: 6063 str r3, [r4, #4] 11fcc: e7ed b.n 11faa <_lv_ll_remove+0x3e> if(_lv_ll_get_head(ll_p) == node_p) { 11fce: 2900 cmp r1, #0 11fd0: d1d7 bne.n 11f82 <_lv_ll_remove+0x16> ll_p->head = _lv_ll_get_next(ll_p, node_p); 11fd2: 0029 movs r1, r5 11fd4: 0020 movs r0, r4 11fd6: 4b06 ldr r3, [pc, #24] ; (11ff0 <_lv_ll_remove+0x84>) 11fd8: 4798 blx r3 11fda: 6060 str r0, [r4, #4] if(ll_p->head == NULL) { 11fdc: 2800 cmp r0, #0 11fde: d0e5 beq.n 11fac <_lv_ll_remove+0x40> node_set_prev(ll_p, ll_p->head, NULL); 11fe0: 2200 movs r2, #0 11fe2: 0001 movs r1, r0 11fe4: 0020 movs r0, r4 11fe6: 4b04 ldr r3, [pc, #16] ; (11ff8 <_lv_ll_remove+0x8c>) 11fe8: 4798 blx r3 11fea: e7de b.n 11faa <_lv_ll_remove+0x3e> 11fec: 00011ec5 .word 0x00011ec5 11ff0: 00011e9d .word 0x00011e9d 11ff4: 00011d5d .word 0x00011d5d 11ff8: 00011d99 .word 0x00011d99 00011ffc <_lv_ll_chg_list>: { 11ffc: b570 push {r4, r5, r6, lr} 11ffe: 000c movs r4, r1 12000: 0015 movs r5, r2 12002: 001e movs r6, r3 _lv_ll_remove(ll_ori_p, node); 12004: 0011 movs r1, r2 12006: 4b19 ldr r3, [pc, #100] ; (1206c <_lv_ll_chg_list+0x70>) 12008: 4798 blx r3 if(head) { 1200a: 2e00 cmp r6, #0 1200c: d017 beq.n 1203e <_lv_ll_chg_list+0x42> node_set_prev(ll_new_p, node, NULL); 1200e: 2200 movs r2, #0 12010: 0029 movs r1, r5 12012: 0020 movs r0, r4 12014: 4b16 ldr r3, [pc, #88] ; (12070 <_lv_ll_chg_list+0x74>) 12016: 4798 blx r3 node_set_next(ll_new_p, node, ll_new_p->head); 12018: 6862 ldr r2, [r4, #4] 1201a: 0029 movs r1, r5 1201c: 0020 movs r0, r4 1201e: 4b15 ldr r3, [pc, #84] ; (12074 <_lv_ll_chg_list+0x78>) 12020: 4798 blx r3 if(ll_new_p->head != NULL) { /*If there is old head then before it goes the new*/ 12022: 6861 ldr r1, [r4, #4] 12024: 2900 cmp r1, #0 12026: d003 beq.n 12030 <_lv_ll_chg_list+0x34> node_set_prev(ll_new_p, ll_new_p->head, node); 12028: 002a movs r2, r5 1202a: 0020 movs r0, r4 1202c: 4b10 ldr r3, [pc, #64] ; (12070 <_lv_ll_chg_list+0x74>) 1202e: 4798 blx r3 ll_new_p->head = node; /*Set the new head in the dsc.*/ 12030: 6065 str r5, [r4, #4] if(ll_new_p->tail == NULL) { /*If there is no tail (first node) set the tail too*/ 12032: 68a3 ldr r3, [r4, #8] 12034: 2b00 cmp r3, #0 12036: d000 beq.n 1203a <_lv_ll_chg_list+0x3e> } 12038: bd70 pop {r4, r5, r6, pc} ll_new_p->tail = node; 1203a: 60a5 str r5, [r4, #8] 1203c: e7fc b.n 12038 <_lv_ll_chg_list+0x3c> node_set_prev(ll_new_p, node, ll_new_p->tail); 1203e: 68a2 ldr r2, [r4, #8] 12040: 0029 movs r1, r5 12042: 0020 movs r0, r4 12044: 4b0a ldr r3, [pc, #40] ; (12070 <_lv_ll_chg_list+0x74>) 12046: 4798 blx r3 node_set_next(ll_new_p, node, NULL); 12048: 2200 movs r2, #0 1204a: 0029 movs r1, r5 1204c: 0020 movs r0, r4 1204e: 4b09 ldr r3, [pc, #36] ; (12074 <_lv_ll_chg_list+0x78>) 12050: 4798 blx r3 if(ll_new_p->tail != NULL) { /*If there is old tail then after it goes the new*/ 12052: 68a1 ldr r1, [r4, #8] 12054: 2900 cmp r1, #0 12056: d003 beq.n 12060 <_lv_ll_chg_list+0x64> node_set_next(ll_new_p, ll_new_p->tail, node); 12058: 002a movs r2, r5 1205a: 0020 movs r0, r4 1205c: 4b05 ldr r3, [pc, #20] ; (12074 <_lv_ll_chg_list+0x78>) 1205e: 4798 blx r3 ll_new_p->tail = node; /*Set the new tail in the dsc.*/ 12060: 60a5 str r5, [r4, #8] if(ll_new_p->head == NULL) { /*If there is no head (first node) set the head too*/ 12062: 6863 ldr r3, [r4, #4] 12064: 2b00 cmp r3, #0 12066: d1e7 bne.n 12038 <_lv_ll_chg_list+0x3c> ll_new_p->head = node; 12068: 6065 str r5, [r4, #4] } 1206a: e7e5 b.n 12038 <_lv_ll_chg_list+0x3c> 1206c: 00011f6d .word 0x00011f6d 12070: 00011d99 .word 0x00011d99 12074: 00011d5d .word 0x00011d5d 00012078 <_lv_ll_move_before>: { 12078: b5f8 push {r3, r4, r5, r6, r7, lr} 1207a: 46ce mov lr, r9 1207c: 4647 mov r7, r8 1207e: b580 push {r7, lr} 12080: 0005 movs r5, r0 12082: 000c movs r4, r1 12084: 0016 movs r6, r2 if(n_act == n_after) return; /*Can't move before itself*/ 12086: 4291 cmp r1, r2 12088: d021 beq.n 120ce <_lv_ll_move_before+0x56> if(n_after != NULL) 1208a: 2a00 cmp r2, #0 1208c: d023 beq.n 120d6 <_lv_ll_move_before+0x5e> n_before = _lv_ll_get_prev(ll_p, n_after); 1208e: 0011 movs r1, r2 12090: 4b22 ldr r3, [pc, #136] ; (1211c <_lv_ll_move_before+0xa4>) 12092: 4798 blx r3 12094: 0007 movs r7, r0 if(n_act == n_before) return; /*Already before `n_after`*/ 12096: 4284 cmp r4, r0 12098: d019 beq.n 120ce <_lv_ll_move_before+0x56> _lv_ll_remove(ll_p, n_act); 1209a: 0021 movs r1, r4 1209c: 0028 movs r0, r5 1209e: 4b20 ldr r3, [pc, #128] ; (12120 <_lv_ll_move_before+0xa8>) 120a0: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 120a2: 0022 movs r2, r4 120a4: 0039 movs r1, r7 120a6: 0028 movs r0, r5 120a8: 4b1e ldr r3, [pc, #120] ; (12124 <_lv_ll_move_before+0xac>) 120aa: 4698 mov r8, r3 120ac: 4798 blx r3 node_set_prev(ll_p, n_act, n_before); 120ae: 003a movs r2, r7 120b0: 0021 movs r1, r4 120b2: 0028 movs r0, r5 120b4: 4b1c ldr r3, [pc, #112] ; (12128 <_lv_ll_move_before+0xb0>) 120b6: 4699 mov r9, r3 120b8: 4798 blx r3 node_set_prev(ll_p, n_after, n_act); 120ba: 0022 movs r2, r4 120bc: 0031 movs r1, r6 120be: 0028 movs r0, r5 120c0: 47c8 blx r9 node_set_next(ll_p, n_act, n_after); 120c2: 0032 movs r2, r6 120c4: 0021 movs r1, r4 120c6: 0028 movs r0, r5 120c8: 47c0 blx r8 if(n_before == NULL) ll_p->head = n_act; 120ca: 2f00 cmp r7, #0 120cc: d021 beq.n 12112 <_lv_ll_move_before+0x9a> } 120ce: bc0c pop {r2, r3} 120d0: 4690 mov r8, r2 120d2: 4699 mov r9, r3 120d4: bdf8 pop {r3, r4, r5, r6, r7, pc} if(ll_p != NULL) { 120d6: 2800 cmp r0, #0 120d8: d01d beq.n 12116 <_lv_ll_move_before+0x9e> tail = ll_p->tail; 120da: 6887 ldr r7, [r0, #8] if(n_act == n_before) return; /*Already before `n_after`*/ 120dc: 42bc cmp r4, r7 120de: d0f6 beq.n 120ce <_lv_ll_move_before+0x56> _lv_ll_remove(ll_p, n_act); 120e0: 0021 movs r1, r4 120e2: 0028 movs r0, r5 120e4: 4b0e ldr r3, [pc, #56] ; (12120 <_lv_ll_move_before+0xa8>) 120e6: 4798 blx r3 node_set_next(ll_p, n_before, n_act); 120e8: 0022 movs r2, r4 120ea: 0039 movs r1, r7 120ec: 0028 movs r0, r5 120ee: 4e0d ldr r6, [pc, #52] ; (12124 <_lv_ll_move_before+0xac>) 120f0: 47b0 blx r6 node_set_prev(ll_p, n_act, n_before); 120f2: 003a movs r2, r7 120f4: 0021 movs r1, r4 120f6: 0028 movs r0, r5 120f8: 4b0b ldr r3, [pc, #44] ; (12128 <_lv_ll_move_before+0xb0>) 120fa: 4698 mov r8, r3 120fc: 4798 blx r3 node_set_prev(ll_p, n_after, n_act); 120fe: 0022 movs r2, r4 12100: 2100 movs r1, #0 12102: 0028 movs r0, r5 12104: 47c0 blx r8 node_set_next(ll_p, n_act, n_after); 12106: 2200 movs r2, #0 12108: 0021 movs r1, r4 1210a: 0028 movs r0, r5 1210c: 47b0 blx r6 if(n_after == NULL) ll_p->tail = n_act; 1210e: 60ac str r4, [r5, #8] 12110: e7db b.n 120ca <_lv_ll_move_before+0x52> if(n_before == NULL) ll_p->head = n_act; 12112: 606c str r4, [r5, #4] 12114: e7db b.n 120ce <_lv_ll_move_before+0x56> void * tail = NULL; 12116: 0017 movs r7, r2 12118: e7e0 b.n 120dc <_lv_ll_move_before+0x64> 1211a: 46c0 nop ; (mov r8, r8) 1211c: 00011ec5 .word 0x00011ec5 12120: 00011f6d .word 0x00011f6d 12124: 00011d5d .word 0x00011d5d 12128: 00011d99 .word 0x00011d99 0001212c <_lv_ll_is_empty>: if(ll_p == NULL) return true; 1212c: 2800 cmp r0, #0 1212e: d00a beq.n 12146 <_lv_ll_is_empty+0x1a> return false; 12130: 2300 movs r3, #0 if(ll_p->head == NULL && ll_p->tail == NULL) return true; 12132: 6842 ldr r2, [r0, #4] 12134: 2a00 cmp r2, #0 12136: d001 beq.n 1213c <_lv_ll_is_empty+0x10> } 12138: 0018 movs r0, r3 1213a: 4770 bx lr if(ll_p->head == NULL && ll_p->tail == NULL) return true; 1213c: 6882 ldr r2, [r0, #8] 1213e: 4253 negs r3, r2 12140: 4153 adcs r3, r2 12142: b2db uxtb r3, r3 12144: e7f8 b.n 12138 <_lv_ll_is_empty+0xc> if(ll_p == NULL) return true; 12146: 2301 movs r3, #1 12148: e7f6 b.n 12138 <_lv_ll_is_empty+0xc> ... 0001214c : * and send the formatted log message to a consol or serial port. * @param print_cb a function pointer to print a log */ void lv_log_register_print_cb(lv_log_print_g_cb_t print_cb) { custom_print_cb = print_cb; 1214c: 4b01 ldr r3, [pc, #4] ; (12154 ) 1214e: 6018 str r0, [r3, #0] } 12150: 4770 bx lr 12152: 46c0 nop ; (mov r8, r8) 12154: 20002bf8 .word 0x20002bf8 00012158 <_lv_log_add>: * @param func name of the function when the log added * @param format printf-like format string * @param ... parameters for `format` */ void _lv_log_add(lv_log_level_t level, const char * file, int line, const char * func, const char * format, ...) { 12158: b5f0 push {r4, r5, r6, r7, lr} 1215a: b0c7 sub sp, #284 ; 0x11c 1215c: 0007 movs r7, r0 1215e: 9103 str r1, [sp, #12] 12160: 0015 movs r5, r2 12162: 001e movs r6, r3 if(level >= _LV_LOG_LEVEL_NUM) return; /*Invalid level*/ if(level >= LV_LOG_LEVEL) { 12164: 1e43 subs r3, r0, #1 12166: b2db uxtb r3, r3 12168: 2b04 cmp r3, #4 1216a: d812 bhi.n 12192 <_lv_log_add+0x3a> va_list args; va_start(args, format); 1216c: ab4d add r3, sp, #308 ; 0x134 1216e: 9305 str r3, [sp, #20] char buf[256]; lv_vsnprintf(buf, sizeof(buf), format, args); 12170: 9a4c ldr r2, [sp, #304] ; 0x130 12172: 2180 movs r1, #128 ; 0x80 12174: 0049 lsls r1, r1, #1 12176: a806 add r0, sp, #24 12178: 4c07 ldr r4, [pc, #28] ; (12198 <_lv_log_add+0x40>) 1217a: 47a0 blx r4 } static const char * lvl_prefix[] = {"Trace", "Info", "Warn", "Error", "User"}; printf("%s: %s \t(%s #%d %s())\n", lvl_prefix[level], buf, &file[p], line, func); #else if(custom_print_cb) custom_print_cb(level, file, line, func, buf); 1217c: 4b07 ldr r3, [pc, #28] ; (1219c <_lv_log_add+0x44>) 1217e: 681c ldr r4, [r3, #0] 12180: 2c00 cmp r4, #0 12182: d006 beq.n 12192 <_lv_log_add+0x3a> 12184: ab06 add r3, sp, #24 12186: 9300 str r3, [sp, #0] 12188: 0033 movs r3, r6 1218a: 002a movs r2, r5 1218c: 9903 ldr r1, [sp, #12] 1218e: 0038 movs r0, r7 12190: 47a0 blx r4 #endif } } 12192: b047 add sp, #284 ; 0x11c 12194: bdf0 pop {r4, r5, r6, r7, pc} 12196: 46c0 nop ; (mov r8, r8) 12198: 00013485 .word 0x00013485 1219c: 20002bf8 .word 0x20002bf8 000121a0 <_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) { 121a0: b510 push {r4, lr} int16_t ret = 0; angle = angle % 360; 121a2: 21b4 movs r1, #180 ; 0xb4 121a4: 0049 lsls r1, r1, #1 121a6: 4b19 ldr r3, [pc, #100] ; (1220c <_lv_trigo_sin+0x6c>) 121a8: 4798 blx r3 121aa: b209 sxth r1, r1 if(angle < 0) angle = 360 + angle; 121ac: 2900 cmp r1, #0 121ae: db16 blt.n 121de <_lv_trigo_sin+0x3e> if(angle < 90) { 121b0: 2959 cmp r1, #89 ; 0x59 121b2: dd18 ble.n 121e6 <_lv_trigo_sin+0x46> ret = sin0_90_table[angle]; } else if(angle >= 90 && angle < 180) { 121b4: b289 uxth r1, r1 121b6: 000b movs r3, r1 121b8: 3b5a subs r3, #90 ; 0x5a 121ba: b29b uxth r3, r3 121bc: 2b59 cmp r3, #89 ; 0x59 121be: d916 bls.n 121ee <_lv_trigo_sin+0x4e> angle = 180 - angle; ret = sin0_90_table[angle]; } else if(angle >= 180 && angle < 270) { 121c0: 000b movs r3, r1 121c2: 3bb4 subs r3, #180 ; 0xb4 121c4: b29b uxth r3, r3 121c6: 2b59 cmp r3, #89 ; 0x59 121c8: d918 bls.n 121fc <_lv_trigo_sin+0x5c> angle = angle - 180; ret = -sin0_90_table[angle]; } else { /*angle >=270*/ angle = 360 - angle; 121ca: 23b4 movs r3, #180 ; 0xb4 121cc: 005b lsls r3, r3, #1 121ce: 1a59 subs r1, r3, r1 ret = -sin0_90_table[angle]; 121d0: b209 sxth r1, r1 121d2: 0049 lsls r1, r1, #1 121d4: 4b0e ldr r3, [pc, #56] ; (12210 <_lv_trigo_sin+0x70>) 121d6: 5ac8 ldrh r0, [r1, r3] 121d8: 4240 negs r0, r0 121da: b200 sxth r0, r0 121dc: e006 b.n 121ec <_lv_trigo_sin+0x4c> if(angle < 0) angle = 360 + angle; 121de: 3169 adds r1, #105 ; 0x69 121e0: 31ff adds r1, #255 ; 0xff 121e2: b209 sxth r1, r1 121e4: e7e4 b.n 121b0 <_lv_trigo_sin+0x10> ret = sin0_90_table[angle]; 121e6: 0049 lsls r1, r1, #1 121e8: 4b09 ldr r3, [pc, #36] ; (12210 <_lv_trigo_sin+0x70>) 121ea: 5ec8 ldrsh r0, [r1, r3] } return ret; } 121ec: bd10 pop {r4, pc} angle = 180 - angle; 121ee: 23b4 movs r3, #180 ; 0xb4 121f0: 1a59 subs r1, r3, r1 ret = sin0_90_table[angle]; 121f2: b209 sxth r1, r1 121f4: 0049 lsls r1, r1, #1 121f6: 4b06 ldr r3, [pc, #24] ; (12210 <_lv_trigo_sin+0x70>) 121f8: 5ec8 ldrsh r0, [r1, r3] 121fa: e7f7 b.n 121ec <_lv_trigo_sin+0x4c> ret = -sin0_90_table[angle]; 121fc: b21b sxth r3, r3 121fe: 005b lsls r3, r3, #1 12200: 4a03 ldr r2, [pc, #12] ; (12210 <_lv_trigo_sin+0x70>) 12202: 5a98 ldrh r0, [r3, r2] 12204: 4240 negs r0, r0 12206: b200 sxth r0, r0 12208: e7f0 b.n 121ec <_lv_trigo_sin+0x4c> 1220a: 46c0 nop ; (mov r8, r8) 1220c: 0001c385 .word 0x0001c385 12210: 0002a818 .word 0x0002a818 00012214 <_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) { 12214: b530 push {r4, r5, lr} x = x << 8; /*To get 4 bit precision. (sqrt(256) = 16 = 4 bit)*/ 12216: 0200 lsls r0, r0, #8 uint32_t root = 0; 12218: 2500 movs r5, #0 1221a: e001 b.n 12220 <_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; 1221c: 0852 lsrs r2, r2, #1 } while(mask); 1221e: d006 beq.n 1222e <_lv_sqrt+0x1a> trial = root + mask; 12220: 1953 adds r3, r2, r5 if((uint32_t)trial * trial <= x) root = trial; 12222: 001c movs r4, r3 12224: 435c muls r4, r3 12226: 42a0 cmp r0, r4 12228: d3f8 bcc.n 1221c <_lv_sqrt+0x8> 1222a: 001d movs r5, r3 1222c: e7f6 b.n 1221c <_lv_sqrt+0x8> q->i = (uint32_t) root >> 4; 1222e: 092b lsrs r3, r5, #4 12230: 800b strh r3, [r1, #0] q->f = (uint32_t)(root & 0xf) << 4; 12232: 012d lsls r5, r5, #4 12234: 23ff movs r3, #255 ; 0xff 12236: 401d ands r5, r3 12238: 804d strh r5, [r1, #2] } 1223a: bd30 pop {r4, r5, pc} 0001223c : */ 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*/ 1223c: 2800 cmp r0, #0 1223e: d00e beq.n 1225e next_e = (lv_mem_ent_t *)work_mem; } else { /*Get the next entry */ uint8_t * data = &act_e->first_data; 12240: 1d03 adds r3, r0, #4 next_e = (lv_mem_ent_t *)&data[act_e->header.s.d_size]; 12242: 6800 ldr r0, [r0, #0] 12244: 0840 lsrs r0, r0, #1 12246: 1818 adds r0, r3, r0 if(&next_e->first_data >= &work_mem[LV_MEM_SIZE]) next_e = NULL; 12248: 1d02 adds r2, r0, #4 1224a: 4b06 ldr r3, [pc, #24] ; (12264 ) 1224c: 681b ldr r3, [r3, #0] 1224e: 2180 movs r1, #128 ; 0x80 12250: 0189 lsls r1, r1, #6 12252: 468c mov ip, r1 12254: 4463 add r3, ip 12256: 429a cmp r2, r3 12258: 419b sbcs r3, r3 1225a: 4018 ands r0, r3 } return next_e; } 1225c: 4770 bx lr next_e = (lv_mem_ent_t *)work_mem; 1225e: 4b01 ldr r3, [pc, #4] ; (12264 ) 12260: 6818 ldr r0, [r3, #0] 12262: e7fb b.n 1225c 12264: 20002c20 .word 0x20002c20 00012268 : * 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) { 12268: b530 push {r4, r5, lr} size = size & (~0x7); size += 8; } #else /*Round the size up to 4*/ if(size & 0x3) { 1226a: 078b lsls r3, r1, #30 1226c: d002 beq.n 12274 size = size & (~0x3); 1226e: 2303 movs r3, #3 12270: 4399 bics r1, r3 size += 4; 12272: 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)) { 12274: 6803 ldr r3, [r0, #0] 12276: 085b lsrs r3, r3, #1 12278: 1d0a adds r2, r1, #4 1227a: 4293 cmp r3, r2 1227c: d017 beq.n 122ae 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) { 1227e: 4299 cmp r1, r3 12280: d00e beq.n 122a0 uint8_t * e_data = &e->first_data; 12282: 1d02 adds r2, r0, #4 lv_mem_ent_t * after_new_e = (lv_mem_ent_t *)&e_data[size]; 12284: 1852 adds r2, r2, r1 after_new_e->header.s.used = 0; 12286: 7813 ldrb r3, [r2, #0] 12288: 2401 movs r4, #1 1228a: 43a3 bics r3, r4 1228c: 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); 1228e: 6803 ldr r3, [r0, #0] 12290: 085b lsrs r3, r3, #1 12292: 3b04 subs r3, #4 12294: 1a5b subs r3, r3, r1 12296: 005b lsls r3, r3, #1 12298: 6815 ldr r5, [r2, #0] 1229a: 402c ands r4, r5 1229c: 4323 orrs r3, r4 1229e: 6013 str r3, [r2, #0] } /* Set the new size for the original entry */ e->header.s.d_size = (uint32_t)size; 122a0: 0049 lsls r1, r1, #1 122a2: 2301 movs r3, #1 122a4: 6802 ldr r2, [r0, #0] 122a6: 4013 ands r3, r2 122a8: 4319 orrs r1, r3 122aa: 6001 str r1, [r0, #0] } 122ac: bd30 pop {r4, r5, pc} size = e->header.s.d_size; 122ae: 0011 movs r1, r2 122b0: e7f6 b.n 122a0 ... 000122b4 <_lv_mem_init>: work_mem = (uint8_t *)work_mem_int; 122b4: 4b06 ldr r3, [pc, #24] ; (122d0 <_lv_mem_init+0x1c>) 122b6: 4a07 ldr r2, [pc, #28] ; (122d4 <_lv_mem_init+0x20>) 122b8: 6013 str r3, [r2, #0] full->header.s.used = 0; 122ba: 7819 ldrb r1, [r3, #0] 122bc: 2201 movs r2, #1 122be: 4391 bics r1, r2 122c0: 7019 strb r1, [r3, #0] full->header.s.d_size = LV_MEM_SIZE - sizeof(lv_mem_header_t); 122c2: 6819 ldr r1, [r3, #0] 122c4: 400a ands r2, r1 122c6: 4904 ldr r1, [pc, #16] ; (122d8 <_lv_mem_init+0x24>) 122c8: 430a orrs r2, r1 122ca: 601a str r2, [r3, #0] } 122cc: 4770 bx lr 122ce: 46c0 nop ; (mov r8, r8) 122d0: 20002c24 .word 0x20002c24 122d4: 20002c20 .word 0x20002c20 122d8: 00003ff8 .word 0x00003ff8 000122dc : { 122dc: b5f0 push {r4, r5, r6, r7, lr} 122de: 46c6 mov lr, r8 122e0: b500 push {lr} 122e2: b082 sub sp, #8 122e4: 1e05 subs r5, r0, #0 if(size == 0) { 122e6: d02a beq.n 1233e if(size & 0x3) { 122e8: 0783 lsls r3, r0, #30 122ea: d002 beq.n 122f2 size = size & (~0x3); 122ec: 2303 movs r3, #3 122ee: 439d bics r5, r3 size += 4; 122f0: 3504 adds r5, #4 lv_mem_ent_t * e = NULL; 122f2: 2400 movs r4, #0 e = ent_get_next(e); 122f4: 4e14 ldr r6, [pc, #80] ; (12348 ) if(e->header.s.used == 0 && e->header.s.d_size >= size) { 122f6: 2301 movs r3, #1 122f8: 4698 mov r8, r3 ent_trunc(e, size); 122fa: 4f14 ldr r7, [pc, #80] ; (1234c ) 122fc: e008 b.n 12310 122fe: 0029 movs r1, r5 12300: 47b8 blx r7 e->header.s.used = 1; 12302: 7823 ldrb r3, [r4, #0] 12304: 2201 movs r2, #1 12306: 4313 orrs r3, r2 12308: 7023 strb r3, [r4, #0] alloc = &e->first_data; 1230a: 1d20 adds r0, r4, #4 } while(e != NULL && alloc == NULL); 1230c: 2800 cmp r0, #0 1230e: d117 bne.n 12340 e = ent_get_next(e); 12310: 0020 movs r0, r4 12312: 47b0 blx r6 12314: 1e04 subs r4, r0, #0 if(e != NULL) { 12316: d008 beq.n 1232a if(e->header.s.used == 0 && e->header.s.d_size >= size) { 12318: 7803 ldrb r3, [r0, #0] 1231a: 4642 mov r2, r8 1231c: 421a tst r2, r3 1231e: d1f7 bne.n 12310 12320: 6803 ldr r3, [r0, #0] 12322: 085b lsrs r3, r3, #1 12324: 429d cmp r5, r3 12326: d9ea bls.n 122fe 12328: e7f2 b.n 12310 if(alloc == NULL) LV_LOG_WARN("Couldn't allocate memory"); 1232a: 4b09 ldr r3, [pc, #36] ; (12350 ) 1232c: 9300 str r3, [sp, #0] 1232e: 4b09 ldr r3, [pc, #36] ; (12354 ) 12330: 22d1 movs r2, #209 ; 0xd1 12332: 4909 ldr r1, [pc, #36] ; (12358 ) 12334: 2002 movs r0, #2 12336: 4c09 ldr r4, [pc, #36] ; (1235c ) 12338: 47a0 blx r4 return alloc; 1233a: 2000 movs r0, #0 1233c: e000 b.n 12340 return &zero_mem; 1233e: 4808 ldr r0, [pc, #32] ; (12360 ) } 12340: b002 add sp, #8 12342: bc04 pop {r2} 12344: 4690 mov r8, r2 12346: bdf0 pop {r4, r5, r6, r7, pc} 12348: 0001223d .word 0x0001223d 1234c: 00012269 .word 0x00012269 12350: 0002aa14 .word 0x0002aa14 12354: 0002a8d0 .word 0x0002a8d0 12358: 0002a9e4 .word 0x0002a9e4 1235c: 00012159 .word 0x00012159 12360: 20004c24 .word 0x20004c24 00012364 : { 12364: b5f0 push {r4, r5, r6, r7, lr} 12366: 46c6 mov lr, r8 12368: b500 push {lr} e_free = ent_get_next(NULL); 1236a: 2000 movs r0, #0 1236c: 4b15 ldr r3, [pc, #84] ; (123c4 ) 1236e: 4798 blx r3 12370: 0004 movs r4, r0 if(e_free->header.s.used != 0) { 12372: 2501 movs r5, #1 e_next = ent_get_next(e_free); 12374: 4f13 ldr r7, [pc, #76] ; (123c4 ) e_next = ent_get_next(e_next); 12376: 003e movs r6, r7 e_free = ent_get_next(e_free); 12378: 46b8 mov r8, r7 1237a: e017 b.n 123ac e_next = ent_get_next(e_free); 1237c: 0020 movs r0, r4 1237e: 47b8 blx r7 while(e_next != NULL) { 12380: 2800 cmp r0, #0 12382: d01c beq.n 123be if(e_next->header.s.used == 0) { 12384: 7803 ldrb r3, [r0, #0] 12386: 421d tst r5, r3 12388: d10f bne.n 123aa e_free->header.s.d_size += e_next->header.s.d_size + sizeof(e_next->header); 1238a: 6822 ldr r2, [r4, #0] 1238c: 0853 lsrs r3, r2, #1 1238e: 3304 adds r3, #4 12390: 6801 ldr r1, [r0, #0] 12392: 0849 lsrs r1, r1, #1 12394: 185b adds r3, r3, r1 12396: 005b lsls r3, r3, #1 12398: 402a ands r2, r5 1239a: 4313 orrs r3, r2 1239c: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 1239e: 47b0 blx r6 while(e_next != NULL) { 123a0: 2800 cmp r0, #0 123a2: d00c beq.n 123be if(e_next->header.s.used == 0) { 123a4: 7803 ldrb r3, [r0, #0] 123a6: 421d tst r5, r3 123a8: d0ef beq.n 1238a { 123aa: 0004 movs r4, r0 while(e_free != NULL) { 123ac: 2c00 cmp r4, #0 123ae: d006 beq.n 123be if(e_free->header.s.used != 0) { 123b0: 7823 ldrb r3, [r4, #0] 123b2: 421d tst r5, r3 123b4: d0e2 beq.n 1237c e_free = ent_get_next(e_free); 123b6: 0020 movs r0, r4 123b8: 47c0 blx r8 123ba: 0004 movs r4, r0 123bc: e7f6 b.n 123ac } 123be: bc04 pop {r2} 123c0: 4690 mov r8, r2 123c2: bdf0 pop {r4, r5, r6, r7, pc} 123c4: 0001223d .word 0x0001223d 000123c8 : { 123c8: b570 push {r4, r5, r6, lr} 123ca: 0004 movs r4, r0 if(data == &zero_mem) return; 123cc: 4b19 ldr r3, [pc, #100] ; (12434 ) 123ce: 4298 cmp r0, r3 123d0: d028 beq.n 12424 if(data == NULL) return; 123d2: 2800 cmp r0, #0 123d4: d026 beq.n 12424 e->header.s.used = 0; 123d6: 1f02 subs r2, r0, #4 123d8: 7813 ldrb r3, [r2, #0] 123da: 2101 movs r1, #1 123dc: 438b bics r3, r1 123de: 7013 strb r3, [r2, #0] full_defrag_cnt++; 123e0: 4a15 ldr r2, [pc, #84] ; (12438 ) 123e2: 8813 ldrh r3, [r2, #0] 123e4: 3301 adds r3, #1 123e6: b29b uxth r3, r3 123e8: 8013 strh r3, [r2, #0] if(full_defrag_cnt < LV_MEM_FULL_DEFRAG_CNT) { 123ea: 2b0f cmp r3, #15 123ec: d81b bhi.n 12426 lv_mem_ent_t * e = (lv_mem_ent_t *)((uint8_t *)data - sizeof(lv_mem_header_t)); 123ee: 3804 subs r0, #4 e_next = ent_get_next(e); 123f0: 4b12 ldr r3, [pc, #72] ; (1243c ) 123f2: 4798 blx r3 while(e_next != NULL) { 123f4: 2800 cmp r0, #0 123f6: d015 beq.n 12424 if(e_next->header.s.used == 0) { 123f8: 7803 ldrb r3, [r0, #0] 123fa: 07db lsls r3, r3, #31 123fc: d412 bmi.n 12424 e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 123fe: 3c04 subs r4, #4 12400: 2501 movs r5, #1 e_next = ent_get_next(e_next); 12402: 4e0e ldr r6, [pc, #56] ; (1243c ) e->header.s.d_size += e_next->header.s.d_size + sizeof(e->header); 12404: 6822 ldr r2, [r4, #0] 12406: 0853 lsrs r3, r2, #1 12408: 3304 adds r3, #4 1240a: 6801 ldr r1, [r0, #0] 1240c: 0849 lsrs r1, r1, #1 1240e: 185b adds r3, r3, r1 12410: 005b lsls r3, r3, #1 12412: 402a ands r2, r5 12414: 4313 orrs r3, r2 12416: 6023 str r3, [r4, #0] e_next = ent_get_next(e_next); 12418: 47b0 blx r6 while(e_next != NULL) { 1241a: 2800 cmp r0, #0 1241c: d002 beq.n 12424 if(e_next->header.s.used == 0) { 1241e: 7803 ldrb r3, [r0, #0] 12420: 421d tst r5, r3 12422: d0ef beq.n 12404 } 12424: bd70 pop {r4, r5, r6, pc} full_defrag_cnt = 0; 12426: 2200 movs r2, #0 12428: 4b03 ldr r3, [pc, #12] ; (12438 ) 1242a: 801a strh r2, [r3, #0] lv_mem_defrag(); 1242c: 4b04 ldr r3, [pc, #16] ; (12440 ) 1242e: 4798 blx r3 12430: e7f8 b.n 12424 12432: 46c0 nop ; (mov r8, r8) 12434: 20004c24 .word 0x20004c24 12438: 20002bfc .word 0x20002bfc 1243c: 0001223d .word 0x0001223d 12440: 00012365 .word 0x00012365 00012444 <_lv_mem_get_size>: if(data == NULL) return 0; 12444: 2800 cmp r0, #0 12446: d006 beq.n 12456 <_lv_mem_get_size+0x12> if(data == &zero_mem) return 0; 12448: 4b05 ldr r3, [pc, #20] ; (12460 <_lv_mem_get_size+0x1c>) 1244a: 4298 cmp r0, r3 1244c: d005 beq.n 1245a <_lv_mem_get_size+0x16> return e->header.s.d_size; 1244e: 3804 subs r0, #4 12450: 6800 ldr r0, [r0, #0] 12452: 0840 lsrs r0, r0, #1 } 12454: 4770 bx lr if(data == NULL) return 0; 12456: 2000 movs r0, #0 12458: e7fc b.n 12454 <_lv_mem_get_size+0x10> if(data == &zero_mem) return 0; 1245a: 2000 movs r0, #0 1245c: e7fa b.n 12454 <_lv_mem_get_size+0x10> 1245e: 46c0 nop ; (mov r8, r8) 12460: 20004c24 .word 0x20004c24 00012464 <_lv_mem_buf_release>: { 12464: b510 push {r4, lr} 12466: b082 sub sp, #8 if(mem_buf_small[i].p == p) { 12468: 4b19 ldr r3, [pc, #100] ; (124d0 <_lv_mem_buf_release+0x6c>) 1246a: 681b ldr r3, [r3, #0] 1246c: 4298 cmp r0, r3 1246e: d01c beq.n 124aa <_lv_mem_buf_release+0x46> 12470: 4b17 ldr r3, [pc, #92] ; (124d0 <_lv_mem_buf_release+0x6c>) 12472: 689b ldr r3, [r3, #8] 12474: 2201 movs r2, #1 12476: 4283 cmp r3, r0 12478: d018 beq.n 124ac <_lv_mem_buf_release+0x48> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 1247a: 4b16 ldr r3, [pc, #88] ; (124d4 <_lv_mem_buf_release+0x70>) 1247c: 681b ldr r3, [r3, #0] 1247e: 4298 cmp r0, r3 12480: d01c beq.n 124bc <_lv_mem_buf_release+0x58> 12482: 2301 movs r3, #1 12484: 4c13 ldr r4, [pc, #76] ; (124d4 <_lv_mem_buf_release+0x70>) 12486: 0019 movs r1, r3 12488: 00da lsls r2, r3, #3 1248a: 58a2 ldr r2, [r4, r2] 1248c: 4290 cmp r0, r2 1248e: d016 beq.n 124be <_lv_mem_buf_release+0x5a> 12490: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12492: 2b10 cmp r3, #16 12494: d1f7 bne.n 12486 <_lv_mem_buf_release+0x22> LV_LOG_ERROR("lv_mem_buf_release: p is not a known buffer") 12496: 4b10 ldr r3, [pc, #64] ; (124d8 <_lv_mem_buf_release+0x74>) 12498: 9300 str r3, [sp, #0] 1249a: 4b10 ldr r3, [pc, #64] ; (124dc <_lv_mem_buf_release+0x78>) 1249c: 4a10 ldr r2, [pc, #64] ; (124e0 <_lv_mem_buf_release+0x7c>) 1249e: 4911 ldr r1, [pc, #68] ; (124e4 <_lv_mem_buf_release+0x80>) 124a0: 2003 movs r0, #3 124a2: 4c11 ldr r4, [pc, #68] ; (124e8 <_lv_mem_buf_release+0x84>) 124a4: 47a0 blx r4 } 124a6: b002 add sp, #8 124a8: bd10 pop {r4, pc} if(mem_buf_small[i].p == p) { 124aa: 2200 movs r2, #0 mem_buf_small[i].used = 0; 124ac: 00d2 lsls r2, r2, #3 124ae: 4b08 ldr r3, [pc, #32] ; (124d0 <_lv_mem_buf_release+0x6c>) 124b0: 189b adds r3, r3, r2 124b2: 799a ldrb r2, [r3, #6] 124b4: 2101 movs r1, #1 124b6: 438a bics r2, r1 124b8: 719a strb r2, [r3, #6] return; 124ba: e7f4 b.n 124a6 <_lv_mem_buf_release+0x42> if(LV_GC_ROOT(_lv_mem_buf[i]).p == p) { 124bc: 2100 movs r1, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 124be: 00c9 lsls r1, r1, #3 124c0: 4b04 ldr r3, [pc, #16] ; (124d4 <_lv_mem_buf_release+0x70>) 124c2: 1859 adds r1, r3, r1 124c4: 798b ldrb r3, [r1, #6] 124c6: 2201 movs r2, #1 124c8: 4393 bics r3, r2 124ca: 718b strb r3, [r1, #6] return; 124cc: e7eb b.n 124a6 <_lv_mem_buf_release+0x42> 124ce: 46c0 nop ; (mov r8, r8) 124d0: 20000044 .word 0x20000044 124d4: 20004d38 .word 0x20004d38 124d8: 0002a9b8 .word 0x0002a9b8 124dc: 0002a900 .word 0x0002a900 124e0: 00000232 .word 0x00000232 124e4: 0002a9e4 .word 0x0002a9e4 124e8: 00012159 .word 0x00012159 000124ec <_lv_mem_buf_free_all>: { 124ec: b5f0 push {r4, r5, r6, r7, lr} 124ee: 46c6 mov lr, r8 124f0: b500 push {lr} mem_buf_small[i].used = 0; 124f2: 4b11 ldr r3, [pc, #68] ; (12538 <_lv_mem_buf_free_all+0x4c>) 124f4: 799a ldrb r2, [r3, #6] 124f6: 2101 movs r1, #1 124f8: 438a bics r2, r1 124fa: 719a strb r2, [r3, #6] 124fc: 7b9a ldrb r2, [r3, #14] 124fe: 438a bics r2, r1 12500: 739a strb r2, [r3, #14] 12502: 4c0e ldr r4, [pc, #56] ; (1253c <_lv_mem_buf_free_all+0x50>) 12504: 2500 movs r5, #0 lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 12506: 4b0e ldr r3, [pc, #56] ; (12540 <_lv_mem_buf_free_all+0x54>) 12508: 4698 mov r8, r3 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 1250a: 2600 movs r6, #0 LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 1250c: 0027 movs r7, r4 1250e: e003 b.n 12518 <_lv_mem_buf_free_all+0x2c> 12510: 3501 adds r5, #1 12512: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 12514: 2d10 cmp r5, #16 12516: d00c beq.n 12532 <_lv_mem_buf_free_all+0x46> if(LV_GC_ROOT(_lv_mem_buf[i]).p) { 12518: 6820 ldr r0, [r4, #0] 1251a: 2800 cmp r0, #0 1251c: d0f8 beq.n 12510 <_lv_mem_buf_free_all+0x24> lv_mem_free(LV_GC_ROOT(_lv_mem_buf[i]).p); 1251e: 47c0 blx r8 LV_GC_ROOT(_lv_mem_buf[i]).p = NULL; 12520: 6026 str r6, [r4, #0] LV_GC_ROOT(_lv_mem_buf[i]).used = 0; 12522: 00eb lsls r3, r5, #3 12524: 18fb adds r3, r7, r3 12526: 799a ldrb r2, [r3, #6] 12528: 2101 movs r1, #1 1252a: 438a bics r2, r1 1252c: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = 0; 1252e: 80a6 strh r6, [r4, #4] 12530: e7ee b.n 12510 <_lv_mem_buf_free_all+0x24> } 12532: bc04 pop {r2} 12534: 4690 mov r8, r2 12536: bdf0 pop {r4, r5, r6, r7, pc} 12538: 20000044 .word 0x20000044 1253c: 20004d38 .word 0x20004d38 12540: 000123c9 .word 0x000123c9 00012544 <_lv_memcpy>: { 12544: b5f0 push {r4, r5, r6, r7, lr} 12546: 46c6 mov lr, r8 12548: b500 push {lr} lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK; 1254a: 2303 movs r3, #3 1254c: 001c movs r4, r3 1254e: 4004 ands r4, r0 lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK; 12550: 400b ands r3, r1 if(s_align != d_align) { 12552: 429c cmp r4, r3 12554: d067 beq.n 12626 <_lv_memcpy+0xe2> while(len > 32) { 12556: 2a20 cmp r2, #32 12558: d963 bls.n 12622 <_lv_memcpy+0xde> 1255a: 2321 movs r3, #33 ; 0x21 1255c: 425b negs r3, r3 1255e: 469c mov ip, r3 12560: 4494 add ip, r2 12562: 4663 mov r3, ip 12564: 095f lsrs r7, r3, #5 12566: 1c7b adds r3, r7, #1 12568: 015b lsls r3, r3, #5 1256a: 18c5 adds r5, r0, r3 1256c: 000c movs r4, r1 1256e: 0003 movs r3, r0 REPEAT8(COPY8); 12570: 7826 ldrb r6, [r4, #0] 12572: 701e strb r6, [r3, #0] 12574: 7866 ldrb r6, [r4, #1] 12576: 705e strb r6, [r3, #1] 12578: 78a6 ldrb r6, [r4, #2] 1257a: 709e strb r6, [r3, #2] 1257c: 78e6 ldrb r6, [r4, #3] 1257e: 70de strb r6, [r3, #3] 12580: 7926 ldrb r6, [r4, #4] 12582: 711e strb r6, [r3, #4] 12584: 7966 ldrb r6, [r4, #5] 12586: 715e strb r6, [r3, #5] 12588: 79a6 ldrb r6, [r4, #6] 1258a: 719e strb r6, [r3, #6] 1258c: 79e6 ldrb r6, [r4, #7] 1258e: 71de strb r6, [r3, #7] REPEAT8(COPY8); 12590: 7a26 ldrb r6, [r4, #8] 12592: 721e strb r6, [r3, #8] 12594: 7a66 ldrb r6, [r4, #9] 12596: 725e strb r6, [r3, #9] 12598: 7aa6 ldrb r6, [r4, #10] 1259a: 729e strb r6, [r3, #10] 1259c: 7ae6 ldrb r6, [r4, #11] 1259e: 72de strb r6, [r3, #11] 125a0: 7b26 ldrb r6, [r4, #12] 125a2: 731e strb r6, [r3, #12] 125a4: 7b66 ldrb r6, [r4, #13] 125a6: 735e strb r6, [r3, #13] 125a8: 7ba6 ldrb r6, [r4, #14] 125aa: 739e strb r6, [r3, #14] 125ac: 7be6 ldrb r6, [r4, #15] 125ae: 73de strb r6, [r3, #15] REPEAT8(COPY8); 125b0: 7c26 ldrb r6, [r4, #16] 125b2: 741e strb r6, [r3, #16] 125b4: 7c66 ldrb r6, [r4, #17] 125b6: 745e strb r6, [r3, #17] 125b8: 7ca6 ldrb r6, [r4, #18] 125ba: 749e strb r6, [r3, #18] 125bc: 7ce6 ldrb r6, [r4, #19] 125be: 74de strb r6, [r3, #19] 125c0: 7d26 ldrb r6, [r4, #20] 125c2: 751e strb r6, [r3, #20] 125c4: 7d66 ldrb r6, [r4, #21] 125c6: 755e strb r6, [r3, #21] 125c8: 7da6 ldrb r6, [r4, #22] 125ca: 759e strb r6, [r3, #22] 125cc: 7de6 ldrb r6, [r4, #23] 125ce: 75de strb r6, [r3, #23] REPEAT8(COPY8); 125d0: 7e26 ldrb r6, [r4, #24] 125d2: 761e strb r6, [r3, #24] 125d4: 7e66 ldrb r6, [r4, #25] 125d6: 765e strb r6, [r3, #25] 125d8: 7ea6 ldrb r6, [r4, #26] 125da: 769e strb r6, [r3, #26] 125dc: 7ee6 ldrb r6, [r4, #27] 125de: 76de strb r6, [r3, #27] 125e0: 7f26 ldrb r6, [r4, #28] 125e2: 771e strb r6, [r3, #28] 125e4: 7f66 ldrb r6, [r4, #29] 125e6: 775e strb r6, [r3, #29] 125e8: 7fa6 ldrb r6, [r4, #30] 125ea: 779e strb r6, [r3, #30] 125ec: 7fe6 ldrb r6, [r4, #31] 125ee: 77de strb r6, [r3, #31] 125f0: 3320 adds r3, #32 125f2: 3420 adds r4, #32 while(len > 32) { 125f4: 42ab cmp r3, r5 125f6: d1bb bne.n 12570 <_lv_memcpy+0x2c> 125f8: 231f movs r3, #31 125fa: 4665 mov r5, ip 125fc: 439d bics r5, r3 125fe: 3520 adds r5, #32 12600: 1943 adds r3, r0, r5 12602: 1949 adds r1, r1, r5 12604: 3a20 subs r2, #32 12606: 017f lsls r7, r7, #5 12608: 1bd2 subs r2, r2, r7 while(len) { 1260a: 2a00 cmp r2, #0 1260c: d006 beq.n 1261c <_lv_memcpy+0xd8> 1260e: 189a adds r2, r3, r2 COPY8 12610: 780c ldrb r4, [r1, #0] 12612: 701c strb r4, [r3, #0] 12614: 3301 adds r3, #1 12616: 3101 adds r1, #1 while(len) { 12618: 4293 cmp r3, r2 1261a: d1f9 bne.n 12610 <_lv_memcpy+0xcc> } 1261c: bc04 pop {r2} 1261e: 4690 mov r8, r2 12620: bdf0 pop {r4, r5, r6, r7, pc} while(len > 32) { 12622: 0003 movs r3, r0 12624: e7f1 b.n 1260a <_lv_memcpy+0xc6> uint8_t * d8 = dst; 12626: 0005 movs r5, r0 if(d_align) { 12628: 2c00 cmp r4, #0 1262a: d014 beq.n 12656 <_lv_memcpy+0x112> d_align = ALIGN_MASK + 1 - d_align; 1262c: 2504 movs r5, #4 1262e: 1b2d subs r5, r5, r4 while(d_align && len) { 12630: d00e beq.n 12650 <_lv_memcpy+0x10c> 12632: 2a00 cmp r2, #0 12634: d05f beq.n 126f6 <_lv_memcpy+0x1b2> 12636: 1945 adds r5, r0, r5 12638: 0003 movs r3, r0 COPY8; 1263a: 780c ldrb r4, [r1, #0] 1263c: 701c strb r4, [r3, #0] 1263e: 3301 adds r3, #1 12640: 3101 adds r1, #1 len--; 12642: 3a01 subs r2, #1 while(d_align && len) { 12644: 42ab cmp r3, r5 12646: d005 beq.n 12654 <_lv_memcpy+0x110> 12648: 2a00 cmp r2, #0 1264a: d1f6 bne.n 1263a <_lv_memcpy+0xf6> while(len > 4) { 1264c: 2200 movs r2, #0 1264e: e048 b.n 126e2 <_lv_memcpy+0x19e> uint8_t * d8 = dst; 12650: 0005 movs r5, r0 12652: e000 b.n 12656 <_lv_memcpy+0x112> COPY8; 12654: 001d movs r5, r3 while(len > 32) { 12656: 2a20 cmp r2, #32 12658: d928 bls.n 126ac <_lv_memcpy+0x168> 1265a: 0017 movs r7, r2 1265c: 3f21 subs r7, #33 ; 0x21 1265e: 46b8 mov r8, r7 12660: 097b lsrs r3, r7, #5 12662: 469c mov ip, r3 12664: 1c5e adds r6, r3, #1 12666: 0176 lsls r6, r6, #5 12668: 19ae adds r6, r5, r6 1266a: 000c movs r4, r1 1266c: 002b movs r3, r5 REPEAT8(COPY32) 1266e: 6827 ldr r7, [r4, #0] 12670: 601f str r7, [r3, #0] 12672: 6867 ldr r7, [r4, #4] 12674: 605f str r7, [r3, #4] 12676: 68a7 ldr r7, [r4, #8] 12678: 609f str r7, [r3, #8] 1267a: 68e7 ldr r7, [r4, #12] 1267c: 60df str r7, [r3, #12] 1267e: 6927 ldr r7, [r4, #16] 12680: 611f str r7, [r3, #16] 12682: 6967 ldr r7, [r4, #20] 12684: 615f str r7, [r3, #20] 12686: 69a7 ldr r7, [r4, #24] 12688: 619f str r7, [r3, #24] 1268a: 69e7 ldr r7, [r4, #28] 1268c: 61df str r7, [r3, #28] 1268e: 3320 adds r3, #32 12690: 3420 adds r4, #32 while(len > 32) { 12692: 429e cmp r6, r3 12694: d1eb bne.n 1266e <_lv_memcpy+0x12a> 12696: 231f movs r3, #31 12698: 4647 mov r7, r8 1269a: 439f bics r7, r3 1269c: 3720 adds r7, #32 1269e: 19ed adds r5, r5, r7 126a0: 19c9 adds r1, r1, r7 126a2: 0013 movs r3, r2 126a4: 3b20 subs r3, #32 126a6: 4662 mov r2, ip 126a8: 0152 lsls r2, r2, #5 126aa: 1a9a subs r2, r3, r2 while(len > 4) { 126ac: 002b movs r3, r5 126ae: 2a04 cmp r2, #4 126b0: d917 bls.n 126e2 <_lv_memcpy+0x19e> 126b2: 1f53 subs r3, r2, #5 126b4: 469c mov ip, r3 126b6: 089b lsrs r3, r3, #2 126b8: 4698 mov r8, r3 126ba: 3301 adds r3, #1 126bc: 009b lsls r3, r3, #2 126be: 18eb adds r3, r5, r3 126c0: 000e movs r6, r1 126c2: 002c movs r4, r5 COPY32; 126c4: ce80 ldmia r6!, {r7} 126c6: c480 stmia r4!, {r7} while(len > 4) { 126c8: 429c cmp r4, r3 126ca: d1fb bne.n 126c4 <_lv_memcpy+0x180> 126cc: 2303 movs r3, #3 126ce: 4664 mov r4, ip 126d0: 439c bics r4, r3 126d2: 0023 movs r3, r4 126d4: 3304 adds r3, #4 126d6: 1f14 subs r4, r2, #4 126d8: 4642 mov r2, r8 126da: 0092 lsls r2, r2, #2 126dc: 1aa2 subs r2, r4, r2 COPY32; 126de: 18c9 adds r1, r1, r3 126e0: 18eb adds r3, r5, r3 while(len) { 126e2: 2a00 cmp r2, #0 126e4: d09a beq.n 1261c <_lv_memcpy+0xd8> 126e6: 189a adds r2, r3, r2 COPY8 126e8: 780c ldrb r4, [r1, #0] 126ea: 701c strb r4, [r3, #0] 126ec: 3301 adds r3, #1 126ee: 3101 adds r1, #1 while(len) { 126f0: 4293 cmp r3, r2 126f2: d1f9 bne.n 126e8 <_lv_memcpy+0x1a4> 126f4: e792 b.n 1261c <_lv_memcpy+0xd8> uint8_t * d8 = dst; 126f6: 0003 movs r3, r0 126f8: e7a8 b.n 1264c <_lv_memcpy+0x108> ... 000126fc : { 126fc: b5f0 push {r4, r5, r6, r7, lr} 126fe: b083 sub sp, #12 12700: 0005 movs r5, r0 12702: 000c movs r4, r1 if(new_size & 0x3) { 12704: 078b lsls r3, r1, #30 12706: d002 beq.n 1270e new_size = new_size & (~0x3); 12708: 2303 movs r3, #3 1270a: 439c bics r4, r3 new_size += 4; 1270c: 3404 adds r4, #4 if(data_p != NULL) { 1270e: 2d00 cmp r5, #0 12710: d004 beq.n 1271c if(e->header.s.used == 0) { 12712: 1f2b subs r3, r5, #4 12714: 781b ldrb r3, [r3, #0] data_p = NULL; 12716: 07db lsls r3, r3, #31 12718: 17db asrs r3, r3, #31 1271a: 401d ands r5, r3 uint32_t old_size = _lv_mem_get_size(data_p); 1271c: 0028 movs r0, r5 1271e: 4b17 ldr r3, [pc, #92] ; (1277c ) 12720: 4798 blx r3 12722: 0007 movs r7, r0 if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 12724: 4284 cmp r4, r0 12726: d027 beq.n 12778 if(new_size < old_size) { 12728: d314 bcc.n 12754 new_p = lv_mem_alloc(new_size); 1272a: 0020 movs r0, r4 1272c: 4b14 ldr r3, [pc, #80] ; (12780 ) 1272e: 4798 blx r3 12730: 1e06 subs r6, r0, #0 if(new_p == NULL) { 12732: d017 beq.n 12764 if(data_p != NULL) { 12734: 2d00 cmp r5, #0 12736: d012 beq.n 1275e if(old_size != 0) { 12738: 2f00 cmp r7, #0 1273a: d010 beq.n 1275e _lv_memcpy(new_p, data_p, LV_MATH_MIN(new_size, old_size)); 1273c: 0022 movs r2, r4 1273e: 42bc cmp r4, r7 12740: d900 bls.n 12744 12742: 003a movs r2, r7 12744: 0029 movs r1, r5 12746: 0030 movs r0, r6 12748: 4b0e ldr r3, [pc, #56] ; (12784 ) 1274a: 4798 blx r3 lv_mem_free(data_p); 1274c: 0028 movs r0, r5 1274e: 4b0e ldr r3, [pc, #56] ; (12788 ) 12750: 4798 blx r3 12752: e004 b.n 1275e lv_mem_ent_t * e = (lv_mem_ent_t *)((uint8_t *)data_p - sizeof(lv_mem_header_t)); 12754: 1f28 subs r0, r5, #4 ent_trunc(e, new_size); 12756: 0021 movs r1, r4 12758: 4b0c ldr r3, [pc, #48] ; (1278c ) 1275a: 4798 blx r3 return &e->first_data; 1275c: 002e movs r6, r5 } 1275e: 0030 movs r0, r6 12760: b003 add sp, #12 12762: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("Couldn't allocate memory"); 12764: 4b0a ldr r3, [pc, #40] ; (12790 ) 12766: 9300 str r3, [sp, #0] 12768: 4b0a ldr r3, [pc, #40] ; (12794 ) 1276a: 2240 movs r2, #64 ; 0x40 1276c: 32ff adds r2, #255 ; 0xff 1276e: 490a ldr r1, [pc, #40] ; (12798 ) 12770: 2002 movs r0, #2 12772: 4c0a ldr r4, [pc, #40] ; (1279c ) 12774: 47a0 blx r4 return NULL; 12776: e7f2 b.n 1275e if(old_size == new_size) return data_p; /*Also avoid reallocating the same memory*/ 12778: 002e movs r6, r5 1277a: e7f0 b.n 1275e 1277c: 00012445 .word 0x00012445 12780: 000122dd .word 0x000122dd 12784: 00012545 .word 0x00012545 12788: 000123c9 .word 0x000123c9 1278c: 00012269 .word 0x00012269 12790: 0002aa14 .word 0x0002aa14 12794: 0002a8e0 .word 0x0002a8e0 12798: 0002a9e4 .word 0x0002a9e4 1279c: 00012159 .word 0x00012159 000127a0 <_lv_mem_buf_get>: { 127a0: b5f0 push {r4, r5, r6, r7, lr} 127a2: b083 sub sp, #12 if(size == 0) return NULL; 127a4: 2800 cmp r0, #0 127a6: d100 bne.n 127aa <_lv_mem_buf_get+0xa> 127a8: e080 b.n 128ac <_lv_mem_buf_get+0x10c> if(size <= MEM_BUF_SMALL_SIZE) { 127aa: 2810 cmp r0, #16 127ac: d807 bhi.n 127be <_lv_mem_buf_get+0x1e> if(mem_buf_small[i].used == 0) { 127ae: 4b40 ldr r3, [pc, #256] ; (128b0 <_lv_mem_buf_get+0x110>) 127b0: 799b ldrb r3, [r3, #6] 127b2: 07db lsls r3, r3, #31 127b4: d513 bpl.n 127de <_lv_mem_buf_get+0x3e> 127b6: 4b3e ldr r3, [pc, #248] ; (128b0 <_lv_mem_buf_get+0x110>) 127b8: 7b9b ldrb r3, [r3, #14] 127ba: 07db lsls r3, r3, #31 127bc: d505 bpl.n 127ca <_lv_mem_buf_get+0x2a> 127be: 4c3d ldr r4, [pc, #244] ; (128b4 <_lv_mem_buf_get+0x114>) 127c0: 2300 movs r3, #0 127c2: 2601 movs r6, #1 127c4: 4276 negs r6, r6 if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 127c6: 0027 movs r7, r4 127c8: e019 b.n 127fe <_lv_mem_buf_get+0x5e> if(mem_buf_small[i].used == 0) { 127ca: 2301 movs r3, #1 mem_buf_small[i].used = 1; 127cc: 4938 ldr r1, [pc, #224] ; (128b0 <_lv_mem_buf_get+0x110>) 127ce: 00db lsls r3, r3, #3 127d0: 18c8 adds r0, r1, r3 127d2: 7982 ldrb r2, [r0, #6] 127d4: 2401 movs r4, #1 127d6: 4322 orrs r2, r4 127d8: 7182 strb r2, [r0, #6] return mem_buf_small[i].p; 127da: 5858 ldr r0, [r3, r1] 127dc: e02d b.n 1283a <_lv_mem_buf_get+0x9a> if(mem_buf_small[i].used == 0) { 127de: 2300 movs r3, #0 127e0: e7f4 b.n 127cc <_lv_mem_buf_get+0x2c> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 127e2: 4a34 ldr r2, [pc, #208] ; (128b4 <_lv_mem_buf_get+0x114>) 127e4: 00dd lsls r5, r3, #3 127e6: 1951 adds r1, r2, r5 127e8: 798b ldrb r3, [r1, #6] 127ea: 2001 movs r0, #1 127ec: 4303 orrs r3, r0 127ee: 718b strb r3, [r1, #6] return LV_GC_ROOT(_lv_mem_buf[i]).p; 127f0: 58a8 ldr r0, [r5, r2] 127f2: e022 b.n 1283a <_lv_mem_buf_get+0x9a> i_guess = i; 127f4: b25e sxtb r6, r3 127f6: 3301 adds r3, #1 127f8: 3408 adds r4, #8 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 127fa: 2b10 cmp r3, #16 127fc: d013 beq.n 12826 <_lv_mem_buf_get+0x86> if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0 && LV_GC_ROOT(_lv_mem_buf[i]).size >= size) { 127fe: 00da lsls r2, r3, #3 12800: 18ba adds r2, r7, r2 12802: 7992 ldrb r2, [r2, #6] 12804: 07d2 lsls r2, r2, #31 12806: d4f6 bmi.n 127f6 <_lv_mem_buf_get+0x56> 12808: 88a2 ldrh r2, [r4, #4] 1280a: 4290 cmp r0, r2 1280c: d8f3 bhi.n 127f6 <_lv_mem_buf_get+0x56> if(LV_GC_ROOT(_lv_mem_buf[i]).size == size) { 1280e: d0e8 beq.n 127e2 <_lv_mem_buf_get+0x42> else if(i_guess < 0) { 12810: 2e00 cmp r6, #0 12812: dbef blt.n 127f4 <_lv_mem_buf_get+0x54> else if(LV_GC_ROOT(_lv_mem_buf[i]).size < LV_GC_ROOT(_lv_mem_buf[i_guess]).size) { 12814: 00f1 lsls r1, r6, #3 12816: 4d27 ldr r5, [pc, #156] ; (128b4 <_lv_mem_buf_get+0x114>) 12818: 46ac mov ip, r5 1281a: 4461 add r1, ip 1281c: 8889 ldrh r1, [r1, #4] 1281e: 4291 cmp r1, r2 12820: d9e9 bls.n 127f6 <_lv_mem_buf_get+0x56> i_guess = i; 12822: b25e sxtb r6, r3 12824: e7e7 b.n 127f6 <_lv_mem_buf_get+0x56> if(i_guess >= 0) { 12826: 2e00 cmp r6, #0 12828: db09 blt.n 1283e <_lv_mem_buf_get+0x9e> LV_GC_ROOT(_lv_mem_buf[i_guess]).used = 1; 1282a: 4922 ldr r1, [pc, #136] ; (128b4 <_lv_mem_buf_get+0x114>) 1282c: 00f3 lsls r3, r6, #3 1282e: 18c8 adds r0, r1, r3 12830: 7982 ldrb r2, [r0, #6] 12832: 2401 movs r4, #1 12834: 4322 orrs r2, r4 12836: 7182 strb r2, [r0, #6] return LV_GC_ROOT(_lv_mem_buf[i_guess]).p; 12838: 5858 ldr r0, [r3, r1] } 1283a: b003 add sp, #12 1283c: bdf0 pop {r4, r5, r6, r7, pc} if(LV_GC_ROOT(_lv_mem_buf[i]).used == 0) { 1283e: 4b1d ldr r3, [pc, #116] ; (128b4 <_lv_mem_buf_get+0x114>) 12840: 799a ldrb r2, [r3, #6] 12842: 2301 movs r3, #1 12844: 2400 movs r4, #0 12846: 07d2 lsls r2, r2, #31 12848: d513 bpl.n 12872 <_lv_mem_buf_get+0xd2> 1284a: 491a ldr r1, [pc, #104] ; (128b4 <_lv_mem_buf_get+0x114>) 1284c: 001c movs r4, r3 1284e: 00da lsls r2, r3, #3 12850: 188a adds r2, r1, r2 12852: 7992 ldrb r2, [r2, #6] 12854: 07d2 lsls r2, r2, #31 12856: d50c bpl.n 12872 <_lv_mem_buf_get+0xd2> 12858: 3301 adds r3, #1 for(i = 0; i < LV_MEM_BUF_MAX_NUM; i++) { 1285a: 2b10 cmp r3, #16 1285c: d1f6 bne.n 1284c <_lv_mem_buf_get+0xac> LV_LOG_ERROR("lv_mem_buf_get: no free buffer. Increase LV_DRAW_BUF_MAX_NUM."); 1285e: 4b16 ldr r3, [pc, #88] ; (128b8 <_lv_mem_buf_get+0x118>) 12860: 9300 str r3, [sp, #0] 12862: 4b16 ldr r3, [pc, #88] ; (128bc <_lv_mem_buf_get+0x11c>) 12864: 4a16 ldr r2, [pc, #88] ; (128c0 <_lv_mem_buf_get+0x120>) 12866: 4917 ldr r1, [pc, #92] ; (128c4 <_lv_mem_buf_get+0x124>) 12868: 2003 movs r0, #3 1286a: 4c17 ldr r4, [pc, #92] ; (128c8 <_lv_mem_buf_get+0x128>) 1286c: 47a0 blx r4 return NULL; 1286e: 2000 movs r0, #0 12870: e7e3 b.n 1283a <_lv_mem_buf_get+0x9a> LV_GC_ROOT(_lv_mem_buf[i]).used = 1; 12872: 4d10 ldr r5, [pc, #64] ; (128b4 <_lv_mem_buf_get+0x114>) 12874: 00e6 lsls r6, r4, #3 12876: 19ab adds r3, r5, r6 12878: 799a ldrb r2, [r3, #6] 1287a: 2101 movs r1, #1 1287c: 430a orrs r2, r1 1287e: 719a strb r2, [r3, #6] LV_GC_ROOT(_lv_mem_buf[i]).size = size; 12880: 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); 12882: 0001 movs r1, r0 12884: 5970 ldr r0, [r6, r5] 12886: 4b11 ldr r3, [pc, #68] ; (128cc <_lv_mem_buf_get+0x12c>) 12888: 4798 blx r3 1288a: 5170 str r0, [r6, r5] if(LV_GC_ROOT(_lv_mem_buf[i]).p == NULL) { 1288c: 2800 cmp r0, #0 1288e: d003 beq.n 12898 <_lv_mem_buf_get+0xf8> return LV_GC_ROOT(_lv_mem_buf[i]).p; 12890: 00e4 lsls r4, r4, #3 12892: 4b08 ldr r3, [pc, #32] ; (128b4 <_lv_mem_buf_get+0x114>) 12894: 58e0 ldr r0, [r4, r3] 12896: e7d0 b.n 1283a <_lv_mem_buf_get+0x9a> LV_LOG_ERROR("lv_mem_buf_get: Out of memory, can't allocate a new buffer (increase your LV_MEM_SIZE/heap size)") 12898: 4b0d ldr r3, [pc, #52] ; (128d0 <_lv_mem_buf_get+0x130>) 1289a: 9300 str r3, [sp, #0] 1289c: 4b07 ldr r3, [pc, #28] ; (128bc <_lv_mem_buf_get+0x11c>) 1289e: 2284 movs r2, #132 ; 0x84 128a0: 0092 lsls r2, r2, #2 128a2: 4908 ldr r1, [pc, #32] ; (128c4 <_lv_mem_buf_get+0x124>) 128a4: 3003 adds r0, #3 128a6: 4d08 ldr r5, [pc, #32] ; (128c8 <_lv_mem_buf_get+0x128>) 128a8: 47a8 blx r5 128aa: e7f1 b.n 12890 <_lv_mem_buf_get+0xf0> if(size == 0) return NULL; 128ac: 2000 movs r0, #0 128ae: e7c4 b.n 1283a <_lv_mem_buf_get+0x9a> 128b0: 20000044 .word 0x20000044 128b4: 20004d38 .word 0x20004d38 128b8: 0002a978 .word 0x0002a978 128bc: 0002a8f0 .word 0x0002a8f0 128c0: 00000216 .word 0x00000216 128c4: 0002a9e4 .word 0x0002a9e4 128c8: 00012159 .word 0x00012159 128cc: 000126fd .word 0x000126fd 128d0: 0002a914 .word 0x0002a914 000128d4 <_lv_memset>: { 128d4: b5f0 push {r4, r5, r6, r7, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 128d6: 2403 movs r4, #3 128d8: 4004 ands r4, r0 if(d_align) { 128da: d00e beq.n 128fa <_lv_memset+0x26> d_align = ALIGN_MASK + 1 - d_align; 128dc: 2304 movs r3, #4 128de: 1b1b subs r3, r3, r4 while(d_align && len) { 128e0: d00b beq.n 128fa <_lv_memset+0x26> 128e2: 2a00 cmp r2, #0 128e4: d007 beq.n 128f6 <_lv_memset+0x22> 128e6: 18c3 adds r3, r0, r3 *d8 = v; 128e8: 7001 strb r1, [r0, #0] d8++; 128ea: 3001 adds r0, #1 len--; 128ec: 3a01 subs r2, #1 while(d_align && len) { 128ee: 4298 cmp r0, r3 128f0: d003 beq.n 128fa <_lv_memset+0x26> 128f2: 2a00 cmp r2, #0 128f4: d1f8 bne.n 128e8 <_lv_memset+0x14> while(len > 4) { 128f6: 2200 movs r2, #0 128f8: e034 b.n 12964 <_lv_memset+0x90> uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); 128fa: 020c lsls r4, r1, #8 128fc: 1864 adds r4, r4, r1 128fe: 040b lsls r3, r1, #16 12900: 18e4 adds r4, r4, r3 12902: 060b lsls r3, r1, #24 12904: 18e4 adds r4, r4, r3 while(len > 32) { 12906: 0006 movs r6, r0 12908: 2a20 cmp r2, #32 1290a: d918 bls.n 1293e <_lv_memset+0x6a> 1290c: 0016 movs r6, r2 1290e: 3e21 subs r6, #33 ; 0x21 12910: 0977 lsrs r7, r6, #5 12912: 1c7d adds r5, r7, #1 12914: 016d lsls r5, r5, #5 12916: 1945 adds r5, r0, r5 12918: 0003 movs r3, r0 SET32(v32); 1291a: 601c str r4, [r3, #0] SET32(v32); 1291c: 605c str r4, [r3, #4] SET32(v32); 1291e: 609c str r4, [r3, #8] SET32(v32); 12920: 60dc str r4, [r3, #12] SET32(v32); 12922: 611c str r4, [r3, #16] SET32(v32); 12924: 615c str r4, [r3, #20] SET32(v32); 12926: 619c str r4, [r3, #24] SET32(v32); 12928: 61dc str r4, [r3, #28] 1292a: 3320 adds r3, #32 while(len > 32) { 1292c: 429d cmp r5, r3 1292e: d1f4 bne.n 1291a <_lv_memset+0x46> 12930: 231f movs r3, #31 12932: 439e bics r6, r3 12934: 3620 adds r6, #32 12936: 1986 adds r6, r0, r6 12938: 3a20 subs r2, #32 1293a: 017f lsls r7, r7, #5 1293c: 1bd2 subs r2, r2, r7 while(len > 4) { 1293e: 0030 movs r0, r6 12940: 2a04 cmp r2, #4 12942: d90f bls.n 12964 <_lv_memset+0x90> 12944: 1f50 subs r0, r2, #5 12946: 0887 lsrs r7, r0, #2 12948: 1c7d adds r5, r7, #1 1294a: 00ad lsls r5, r5, #2 1294c: 1975 adds r5, r6, r5 1294e: 0033 movs r3, r6 SET32(v32); 12950: c310 stmia r3!, {r4} while(len > 4) { 12952: 42ab cmp r3, r5 12954: d1fc bne.n 12950 <_lv_memset+0x7c> 12956: 2303 movs r3, #3 12958: 4398 bics r0, r3 1295a: 3004 adds r0, #4 1295c: 3a04 subs r2, #4 1295e: 00bf lsls r7, r7, #2 12960: 1bd2 subs r2, r2, r7 SET32(v32); 12962: 1830 adds r0, r6, r0 while(len) { 12964: 2a00 cmp r2, #0 12966: d004 beq.n 12972 <_lv_memset+0x9e> 12968: 1882 adds r2, r0, r2 *d8 = v; 1296a: 7001 strb r1, [r0, #0] d8++; 1296c: 3001 adds r0, #1 while(len) { 1296e: 4290 cmp r0, r2 12970: d1fb bne.n 1296a <_lv_memset+0x96> } 12972: bdf0 pop {r4, r5, r6, r7, pc} 00012974 <_lv_memset_00>: { 12974: b570 push {r4, r5, r6, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 12976: 2303 movs r3, #3 12978: 4003 ands r3, r0 if(d_align) { 1297a: d13a bne.n 129f2 <_lv_memset_00+0x7e> while(len > 32) { 1297c: 2920 cmp r1, #32 1297e: d919 bls.n 129b4 <_lv_memset_00+0x40> 12980: 000d movs r5, r1 12982: 3d21 subs r5, #33 ; 0x21 12984: 096e lsrs r6, r5, #5 12986: 1c74 adds r4, r6, #1 12988: 0164 lsls r4, r4, #5 1298a: 1904 adds r4, r0, r4 1298c: 0003 movs r3, r0 SET32(0); 1298e: 2200 movs r2, #0 12990: 601a str r2, [r3, #0] SET32(0); 12992: 605a str r2, [r3, #4] SET32(0); 12994: 609a str r2, [r3, #8] SET32(0); 12996: 60da str r2, [r3, #12] SET32(0); 12998: 611a str r2, [r3, #16] SET32(0); 1299a: 615a str r2, [r3, #20] SET32(0); 1299c: 619a str r2, [r3, #24] SET32(0); 1299e: 61da str r2, [r3, #28] 129a0: 3320 adds r3, #32 while(len > 32) { 129a2: 429c cmp r4, r3 129a4: d1f4 bne.n 12990 <_lv_memset_00+0x1c> 129a6: 231f movs r3, #31 129a8: 439d bics r5, r3 129aa: 3520 adds r5, #32 129ac: 1940 adds r0, r0, r5 129ae: 3920 subs r1, #32 129b0: 0176 lsls r6, r6, #5 129b2: 1b89 subs r1, r1, r6 while(len > 4) { 129b4: 0003 movs r3, r0 129b6: 2904 cmp r1, #4 129b8: d910 bls.n 129dc <_lv_memset_00+0x68> 129ba: 1f4b subs r3, r1, #5 129bc: 089e lsrs r6, r3, #2 129be: 1c74 adds r4, r6, #1 129c0: 00a4 lsls r4, r4, #2 129c2: 1904 adds r4, r0, r4 129c4: 0002 movs r2, r0 SET32(0); 129c6: 2500 movs r5, #0 129c8: c220 stmia r2!, {r5} while(len > 4) { 129ca: 42a2 cmp r2, r4 129cc: d1fc bne.n 129c8 <_lv_memset_00+0x54> 129ce: 2203 movs r2, #3 129d0: 4393 bics r3, r2 129d2: 3304 adds r3, #4 129d4: 3904 subs r1, #4 129d6: 00b6 lsls r6, r6, #2 129d8: 1b89 subs r1, r1, r6 SET32(0); 129da: 18c3 adds r3, r0, r3 while(len) { 129dc: 2900 cmp r1, #0 129de: d005 beq.n 129ec <_lv_memset_00+0x78> 129e0: 1859 adds r1, r3, r1 *d8 = 0; 129e2: 2200 movs r2, #0 129e4: 701a strb r2, [r3, #0] d8++; 129e6: 3301 adds r3, #1 while(len) { 129e8: 428b cmp r3, r1 129ea: d1fb bne.n 129e4 <_lv_memset_00+0x70> } 129ec: bd70 pop {r4, r5, r6, pc} d8++; 129ee: 0018 movs r0, r3 129f0: e7c4 b.n 1297c <_lv_memset_00+0x8> d_align = ALIGN_MASK + 1 - d_align; 129f2: 2204 movs r2, #4 129f4: 1ad2 subs r2, r2, r3 while(d_align && len) { 129f6: d0c1 beq.n 1297c <_lv_memset_00+0x8> 129f8: 2900 cmp r1, #0 129fa: d00b beq.n 12a14 <_lv_memset_00+0xa0> 129fc: 1882 adds r2, r0, r2 129fe: 0003 movs r3, r0 *d8 = 0x00; 12a00: 2000 movs r0, #0 12a02: 7018 strb r0, [r3, #0] d8++; 12a04: 3301 adds r3, #1 len--; 12a06: 3901 subs r1, #1 while(d_align && len) { 12a08: 4293 cmp r3, r2 12a0a: d0f0 beq.n 129ee <_lv_memset_00+0x7a> 12a0c: 2900 cmp r1, #0 12a0e: d1f8 bne.n 12a02 <_lv_memset_00+0x8e> while(len > 4) { 12a10: 2100 movs r1, #0 12a12: e7e3 b.n 129dc <_lv_memset_00+0x68> uint8_t * d8 = (uint8_t *) dst; 12a14: 0003 movs r3, r0 12a16: e7fb b.n 12a10 <_lv_memset_00+0x9c> 00012a18 <_lv_memset_ff>: { 12a18: b570 push {r4, r5, r6, lr} uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK; 12a1a: 2303 movs r3, #3 12a1c: 4003 ands r3, r0 if(d_align) { 12a1e: d13c bne.n 12a9a <_lv_memset_ff+0x82> while(len > 32) { 12a20: 2920 cmp r1, #32 12a22: d91a bls.n 12a5a <_lv_memset_ff+0x42> 12a24: 000d movs r5, r1 12a26: 3d21 subs r5, #33 ; 0x21 12a28: 096e lsrs r6, r5, #5 12a2a: 1c74 adds r4, r6, #1 12a2c: 0164 lsls r4, r4, #5 12a2e: 1904 adds r4, r0, r4 12a30: 0003 movs r3, r0 SET32(0xFFFFFFFF); 12a32: 2201 movs r2, #1 12a34: 4252 negs r2, r2 12a36: 601a str r2, [r3, #0] SET32(0xFFFFFFFF); 12a38: 605a str r2, [r3, #4] SET32(0xFFFFFFFF); 12a3a: 609a str r2, [r3, #8] SET32(0xFFFFFFFF); 12a3c: 60da str r2, [r3, #12] SET32(0xFFFFFFFF); 12a3e: 611a str r2, [r3, #16] SET32(0xFFFFFFFF); 12a40: 615a str r2, [r3, #20] SET32(0xFFFFFFFF); 12a42: 619a str r2, [r3, #24] SET32(0xFFFFFFFF); 12a44: 61da str r2, [r3, #28] 12a46: 3320 adds r3, #32 while(len > 32) { 12a48: 429c cmp r4, r3 12a4a: d1f4 bne.n 12a36 <_lv_memset_ff+0x1e> 12a4c: 231f movs r3, #31 12a4e: 439d bics r5, r3 12a50: 3520 adds r5, #32 12a52: 1940 adds r0, r0, r5 12a54: 3920 subs r1, #32 12a56: 0176 lsls r6, r6, #5 12a58: 1b89 subs r1, r1, r6 while(len > 4) { 12a5a: 0003 movs r3, r0 12a5c: 2904 cmp r1, #4 12a5e: d911 bls.n 12a84 <_lv_memset_ff+0x6c> 12a60: 1f4b subs r3, r1, #5 12a62: 089e lsrs r6, r3, #2 12a64: 1c74 adds r4, r6, #1 12a66: 00a4 lsls r4, r4, #2 12a68: 1904 adds r4, r0, r4 12a6a: 0002 movs r2, r0 SET32(0xFFFFFFFF); 12a6c: 2501 movs r5, #1 12a6e: 426d negs r5, r5 12a70: c220 stmia r2!, {r5} while(len > 4) { 12a72: 42a2 cmp r2, r4 12a74: d1fc bne.n 12a70 <_lv_memset_ff+0x58> 12a76: 2203 movs r2, #3 12a78: 4393 bics r3, r2 12a7a: 3304 adds r3, #4 12a7c: 3904 subs r1, #4 12a7e: 00b6 lsls r6, r6, #2 12a80: 1b89 subs r1, r1, r6 SET32(0xFFFFFFFF); 12a82: 18c3 adds r3, r0, r3 while(len) { 12a84: 2900 cmp r1, #0 12a86: d005 beq.n 12a94 <_lv_memset_ff+0x7c> 12a88: 1859 adds r1, r3, r1 *d8 = 0xFF; 12a8a: 22ff movs r2, #255 ; 0xff 12a8c: 701a strb r2, [r3, #0] d8++; 12a8e: 3301 adds r3, #1 while(len) { 12a90: 428b cmp r3, r1 12a92: d1fb bne.n 12a8c <_lv_memset_ff+0x74> } 12a94: bd70 pop {r4, r5, r6, pc} d8++; 12a96: 0018 movs r0, r3 12a98: e7c2 b.n 12a20 <_lv_memset_ff+0x8> d_align = ALIGN_MASK + 1 - d_align; 12a9a: 2204 movs r2, #4 12a9c: 1ad2 subs r2, r2, r3 while(d_align && len) { 12a9e: d0bf beq.n 12a20 <_lv_memset_ff+0x8> 12aa0: 2900 cmp r1, #0 12aa2: d00b beq.n 12abc <_lv_memset_ff+0xa4> 12aa4: 1882 adds r2, r0, r2 12aa6: 0003 movs r3, r0 *d8 = 0xFF; 12aa8: 20ff movs r0, #255 ; 0xff 12aaa: 7018 strb r0, [r3, #0] d8++; 12aac: 3301 adds r3, #1 len--; 12aae: 3901 subs r1, #1 while(d_align && len) { 12ab0: 4293 cmp r3, r2 12ab2: d0f0 beq.n 12a96 <_lv_memset_ff+0x7e> 12ab4: 2900 cmp r1, #0 12ab6: d1f8 bne.n 12aaa <_lv_memset_ff+0x92> while(len > 4) { 12ab8: 2100 movs r1, #0 12aba: e7e3 b.n 12a84 <_lv_memset_ff+0x6c> uint8_t * d8 = (uint8_t *) dst; 12abc: 0003 movs r3, r0 12abe: e7fb b.n 12ab8 <_lv_memset_ff+0xa0> 00012ac0 <_out_buffer>: // internal buffer output static inline void _out_buffer(char character, void * buffer, size_t idx, size_t maxlen) { if(idx < maxlen) { 12ac0: 429a cmp r2, r3 12ac2: d200 bcs.n 12ac6 <_out_buffer+0x6> ((char *)buffer)[idx] = character; 12ac4: 5488 strb r0, [r1, r2] } } 12ac6: 4770 bx lr 00012ac8 <_out_null>: { (void)character; (void)buffer; (void)idx; (void)maxlen; } 12ac8: 4770 bx lr 00012aca <_ntoa_format>: // internal itoa format static size_t _ntoa_format(out_fct_type out, char * buffer, size_t idx, size_t maxlen, char * buf, size_t len, bool negative, unsigned int base, unsigned int prec, unsigned int width, unsigned int flags) { 12aca: b5f0 push {r4, r5, r6, r7, lr} 12acc: 46de mov lr, fp 12ace: 4657 mov r7, sl 12ad0: 464e mov r6, r9 12ad2: 4645 mov r5, r8 12ad4: b5e0 push {r5, r6, r7, lr} 12ad6: b085 sub sp, #20 12ad8: 0007 movs r7, r0 12ada: 9101 str r1, [sp, #4] 12adc: 4693 mov fp, r2 12ade: 9302 str r3, [sp, #8] 12ae0: 9b0e ldr r3, [sp, #56] ; 0x38 12ae2: 469a mov sl, r3 12ae4: 9c0f ldr r4, [sp, #60] ; 0x3c 12ae6: ab10 add r3, sp, #64 ; 0x40 12ae8: 7818 ldrb r0, [r3, #0] 12aea: 9a12 ldr r2, [sp, #72] ; 0x48 12aec: 9b13 ldr r3, [sp, #76] ; 0x4c 12aee: 4699 mov r9, r3 12af0: 9914 ldr r1, [sp, #80] ; 0x50 // pad leading zeros if(!(flags & FLAGS_LEFT)) { 12af2: 2302 movs r3, #2 12af4: 400b ands r3, r1 12af6: 4698 mov r8, r3 12af8: d137 bne.n 12b6a <_ntoa_format+0xa0> if(width && (flags & FLAGS_ZEROPAD) && (negative || (flags & (FLAGS_PLUS | FLAGS_SPACE)))) { 12afa: 464b mov r3, r9 12afc: 2b00 cmp r3, #0 12afe: d010 beq.n 12b22 <_ntoa_format+0x58> 12b00: 07cb lsls r3, r1, #31 12b02: d400 bmi.n 12b06 <_ntoa_format+0x3c> 12b04: e0bb b.n 12c7e <_ntoa_format+0x1b4> 12b06: 2800 cmp r0, #0 12b08: d102 bne.n 12b10 <_ntoa_format+0x46> 12b0a: 230c movs r3, #12 12b0c: 420b tst r3, r1 12b0e: d003 beq.n 12b18 <_ntoa_format+0x4e> width--; 12b10: 2301 movs r3, #1 12b12: 425b negs r3, r3 12b14: 469c mov ip, r3 12b16: 44e1 add r9, ip } while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b18: 4294 cmp r4, r2 12b1a: d212 bcs.n 12b42 <_ntoa_format+0x78> 12b1c: 2c1f cmp r4, #31 12b1e: d904 bls.n 12b2a <_ntoa_format+0x60> 12b20: e00f b.n 12b42 <_ntoa_format+0x78> 12b22: 4294 cmp r4, r2 12b24: d20b bcs.n 12b3e <_ntoa_format+0x74> 12b26: 2c1f cmp r4, #31 12b28: d809 bhi.n 12b3e <_ntoa_format+0x74> 12b2a: 4653 mov r3, sl 12b2c: 191b adds r3, r3, r4 buf[len++] = '0'; 12b2e: 2530 movs r5, #48 ; 0x30 12b30: 3401 adds r4, #1 12b32: 701d strb r5, [r3, #0] while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b34: 42a2 cmp r2, r4 12b36: d902 bls.n 12b3e <_ntoa_format+0x74> 12b38: 3301 adds r3, #1 12b3a: 2c20 cmp r4, #32 12b3c: d1f8 bne.n 12b30 <_ntoa_format+0x66> } while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b3e: 07cb lsls r3, r1, #31 12b40: d513 bpl.n 12b6a <_ntoa_format+0xa0> 12b42: 45a1 cmp r9, r4 12b44: d911 bls.n 12b6a <_ntoa_format+0xa0> 12b46: 2c1f cmp r4, #31 12b48: d80b bhi.n 12b62 <_ntoa_format+0x98> 12b4a: 4653 mov r3, sl 12b4c: 191b adds r3, r3, r4 buf[len++] = '0'; 12b4e: 2530 movs r5, #48 ; 0x30 12b50: 464e mov r6, r9 12b52: 3401 adds r4, #1 12b54: 701d strb r5, [r3, #0] while((flags & FLAGS_ZEROPAD) && (len < width) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b56: 42b4 cmp r4, r6 12b58: d006 beq.n 12b68 <_ntoa_format+0x9e> 12b5a: 3301 adds r3, #1 12b5c: 2c20 cmp r4, #32 12b5e: d1f8 bne.n 12b52 <_ntoa_format+0x88> 12b60: 46b1 mov r9, r6 } } // handle hash if(flags & FLAGS_HASH) { 12b62: 06cb lsls r3, r1, #27 12b64: d403 bmi.n 12b6e <_ntoa_format+0xa4> 12b66: e042 b.n 12bee <_ntoa_format+0x124> 12b68: 46a1 mov r9, r4 12b6a: 06cb lsls r3, r1, #27 12b6c: d513 bpl.n 12b96 <_ntoa_format+0xcc> if(!(flags & FLAGS_PRECISION) && len && ((len == prec) || (len == width))) { 12b6e: 054b lsls r3, r1, #21 12b70: d405 bmi.n 12b7e <_ntoa_format+0xb4> 12b72: 2c00 cmp r4, #0 12b74: d003 beq.n 12b7e <_ntoa_format+0xb4> 12b76: 42a2 cmp r2, r4 12b78: d01a beq.n 12bb0 <_ntoa_format+0xe6> 12b7a: 454c cmp r4, r9 12b7c: d018 beq.n 12bb0 <_ntoa_format+0xe6> len--; if(len && (base == 16U)) { len--; } } if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b7e: 9b11 ldr r3, [sp, #68] ; 0x44 12b80: 2b10 cmp r3, #16 12b82: d020 beq.n 12bc6 <_ntoa_format+0xfc> buf[len++] = 'x'; } else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { buf[len++] = 'X'; } else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12b84: 9b11 ldr r3, [sp, #68] ; 0x44 12b86: 2b02 cmp r3, #2 12b88: d026 beq.n 12bd8 <_ntoa_format+0x10e> buf[len++] = 'b'; } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12b8a: 2c1f cmp r4, #31 12b8c: d82f bhi.n 12bee <_ntoa_format+0x124> buf[len++] = '0'; 12b8e: 2330 movs r3, #48 ; 0x30 12b90: 4652 mov r2, sl 12b92: 5513 strb r3, [r2, r4] 12b94: 3401 adds r4, #1 } } if(len < PRINTF_NTOA_BUFFER_SIZE) { 12b96: 2c1f cmp r4, #31 12b98: d829 bhi.n 12bee <_ntoa_format+0x124> if(negative) { 12b9a: 2800 cmp r0, #0 12b9c: d123 bne.n 12be6 <_ntoa_format+0x11c> buf[len++] = '-'; } else if(flags & FLAGS_PLUS) { 12b9e: 074b lsls r3, r1, #29 12ba0: d466 bmi.n 12c70 <_ntoa_format+0x1a6> buf[len++] = '+'; // ignore the space if the '+' exists } else if(flags & FLAGS_SPACE) { 12ba2: 070b lsls r3, r1, #28 12ba4: d523 bpl.n 12bee <_ntoa_format+0x124> buf[len++] = ' '; 12ba6: 2320 movs r3, #32 12ba8: 4652 mov r2, sl 12baa: 5513 strb r3, [r2, r4] 12bac: 3401 adds r4, #1 12bae: e01e b.n 12bee <_ntoa_format+0x124> len--; 12bb0: 1e63 subs r3, r4, #1 if(len && (base == 16U)) { 12bb2: 2b00 cmp r3, #0 12bb4: d005 beq.n 12bc2 <_ntoa_format+0xf8> 12bb6: 9a11 ldr r2, [sp, #68] ; 0x44 len--; 12bb8: 3c02 subs r4, #2 if(len && (base == 16U)) { 12bba: 2a10 cmp r2, #16 12bbc: d003 beq.n 12bc6 <_ntoa_format+0xfc> len--; 12bbe: 001c movs r4, r3 12bc0: e7e0 b.n 12b84 <_ntoa_format+0xba> 12bc2: 001c movs r4, r3 12bc4: e7db b.n 12b7e <_ntoa_format+0xb4> if((base == 16U) && !(flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12bc6: 068b lsls r3, r1, #26 12bc8: d460 bmi.n 12c8c <_ntoa_format+0x1c2> 12bca: 2c1f cmp r4, #31 12bcc: d8dd bhi.n 12b8a <_ntoa_format+0xc0> buf[len++] = 'x'; 12bce: 2378 movs r3, #120 ; 0x78 12bd0: 4652 mov r2, sl 12bd2: 5513 strb r3, [r2, r4] 12bd4: 3401 adds r4, #1 12bd6: e7d8 b.n 12b8a <_ntoa_format+0xc0> else if((base == 2U) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12bd8: 2c1f cmp r4, #31 12bda: d808 bhi.n 12bee <_ntoa_format+0x124> buf[len++] = 'b'; 12bdc: 3360 adds r3, #96 ; 0x60 12bde: 4652 mov r2, sl 12be0: 5513 strb r3, [r2, r4] 12be2: 3401 adds r4, #1 12be4: e7d1 b.n 12b8a <_ntoa_format+0xc0> buf[len++] = '-'; 12be6: 232d movs r3, #45 ; 0x2d 12be8: 4652 mov r2, sl 12bea: 5513 strb r3, [r2, r4] 12bec: 3401 adds r4, #1 if(!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { 12bee: 465e mov r6, fp 12bf0: 078b lsls r3, r1, #30 12bf2: d10d bne.n 12c10 <_ntoa_format+0x146> for(i = len; i < width; i++) { 12bf4: 454c cmp r4, r9 12bf6: d20b bcs.n 12c10 <_ntoa_format+0x146> 12bf8: 465d mov r5, fp 12bfa: 444d add r5, r9 12bfc: 1b2d subs r5, r5, r4 12bfe: 465a mov r2, fp out(' ', buffer, idx++, maxlen); 12c00: 1c56 adds r6, r2, #1 12c02: 9b02 ldr r3, [sp, #8] 12c04: 9901 ldr r1, [sp, #4] 12c06: 2020 movs r0, #32 12c08: 47b8 blx r7 12c0a: 0032 movs r2, r6 for(i = len; i < width; i++) { 12c0c: 42ae cmp r6, r5 12c0e: d1f7 bne.n 12c00 <_ntoa_format+0x136> while(len) { 12c10: 0032 movs r2, r6 12c12: 1e25 subs r5, r4, #0 12c14: d010 beq.n 12c38 <_ntoa_format+0x16e> 12c16: 9603 str r6, [sp, #12] 12c18: 940f str r4, [sp, #60] ; 0x3c 12c1a: 4654 mov r4, sl 12c1c: 9b0f ldr r3, [sp, #60] ; 0x3c 12c1e: 469a mov sl, r3 out(buf[--len], buffer, idx++, maxlen); 12c20: 3d01 subs r5, #1 12c22: 1c56 adds r6, r2, #1 12c24: 5d60 ldrb r0, [r4, r5] 12c26: 9b02 ldr r3, [sp, #8] 12c28: 9901 ldr r1, [sp, #4] 12c2a: 47b8 blx r7 12c2c: 0032 movs r2, r6 while(len) { 12c2e: 2d00 cmp r5, #0 12c30: d1f6 bne.n 12c20 <_ntoa_format+0x156> 12c32: 9e03 ldr r6, [sp, #12] 12c34: 4654 mov r4, sl 12c36: 1936 adds r6, r6, r4 if(flags & FLAGS_LEFT) { 12c38: 0034 movs r4, r6 12c3a: 4643 mov r3, r8 12c3c: 2b00 cmp r3, #0 12c3e: d00f beq.n 12c60 <_ntoa_format+0x196> while(idx - start_idx < width) { 12c40: 465b mov r3, fp 12c42: 1af3 subs r3, r6, r3 12c44: 454b cmp r3, r9 12c46: d218 bcs.n 12c7a <_ntoa_format+0x1b0> 12c48: 0032 movs r2, r6 12c4a: 465d mov r5, fp 12c4c: 464e mov r6, r9 out(' ', buffer, idx++, maxlen); 12c4e: 1c54 adds r4, r2, #1 12c50: 9b02 ldr r3, [sp, #8] 12c52: 9901 ldr r1, [sp, #4] 12c54: 2020 movs r0, #32 12c56: 47b8 blx r7 12c58: 0022 movs r2, r4 while(idx - start_idx < width) { 12c5a: 1b63 subs r3, r4, r5 12c5c: 42b3 cmp r3, r6 12c5e: d3f6 bcc.n 12c4e <_ntoa_format+0x184> } } return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); } 12c60: 0020 movs r0, r4 12c62: b005 add sp, #20 12c64: bc3c pop {r2, r3, r4, r5} 12c66: 4690 mov r8, r2 12c68: 4699 mov r9, r3 12c6a: 46a2 mov sl, r4 12c6c: 46ab mov fp, r5 12c6e: bdf0 pop {r4, r5, r6, r7, pc} buf[len++] = '+'; // ignore the space if the '+' exists 12c70: 232b movs r3, #43 ; 0x2b 12c72: 4652 mov r2, sl 12c74: 5513 strb r3, [r2, r4] 12c76: 3401 adds r4, #1 12c78: e7b9 b.n 12bee <_ntoa_format+0x124> while(idx - start_idx < width) { 12c7a: 0034 movs r4, r6 return _out_rev(out, buffer, idx, maxlen, buf, len, width, flags); 12c7c: e7f0 b.n 12c60 <_ntoa_format+0x196> while((len < prec) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12c7e: 4294 cmp r4, r2 12c80: d300 bcc.n 12c84 <_ntoa_format+0x1ba> 12c82: e772 b.n 12b6a <_ntoa_format+0xa0> 12c84: 2c1f cmp r4, #31 12c86: d800 bhi.n 12c8a <_ntoa_format+0x1c0> 12c88: e74f b.n 12b2a <_ntoa_format+0x60> 12c8a: e76e b.n 12b6a <_ntoa_format+0xa0> else if((base == 16U) && (flags & FLAGS_UPPERCASE) && (len < PRINTF_NTOA_BUFFER_SIZE)) { 12c8c: 2c1f cmp r4, #31 12c8e: d8ae bhi.n 12bee <_ntoa_format+0x124> buf[len++] = 'X'; 12c90: 2358 movs r3, #88 ; 0x58 12c92: 4652 mov r2, sl 12c94: 5513 strb r3, [r2, r4] 12c96: 3401 adds r4, #1 12c98: e777 b.n 12b8a <_ntoa_format+0xc0> ... 00012c9c <_ntoa_long>: // internal itoa for 'long' type static size_t _ntoa_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long value, bool negative, unsigned long base, unsigned int prec, unsigned int width, unsigned int flags) { 12c9c: b5f0 push {r4, r5, r6, r7, lr} 12c9e: 46de mov lr, fp 12ca0: 4657 mov r7, sl 12ca2: 464e mov r6, r9 12ca4: 4645 mov r5, r8 12ca6: b5e0 push {r5, r6, r7, lr} 12ca8: b095 sub sp, #84 ; 0x54 12caa: 9008 str r0, [sp, #32] 12cac: 9109 str r1, [sp, #36] ; 0x24 12cae: 920a str r2, [sp, #40] ; 0x28 12cb0: 930b str r3, [sp, #44] ; 0x2c 12cb2: ab1e add r3, sp, #120 ; 0x78 12cb4: cb10 ldmia r3!, {r4} 12cb6: 781b ldrb r3, [r3, #0] 12cb8: 469b mov fp, r3 char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { 12cba: 2c00 cmp r4, #0 12cbc: d107 bne.n 12cce <_ntoa_long+0x32> flags &= ~FLAGS_HASH; 12cbe: 2310 movs r3, #16 12cc0: 9a23 ldr r2, [sp, #140] ; 0x8c 12cc2: 439a bics r2, r3 12cc4: 0013 movs r3, r2 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12cc6: 9a23 ldr r2, [sp, #140] ; 0x8c 12cc8: 0552 lsls r2, r2, #21 12cca: d426 bmi.n 12d1a <_ntoa_long+0x7e> flags &= ~FLAGS_HASH; 12ccc: 9323 str r3, [sp, #140] ; 0x8c 12cce: 2361 movs r3, #97 ; 0x61 12cd0: 9a23 ldr r2, [sp, #140] ; 0x8c 12cd2: 0692 lsls r2, r2, #26 12cd4: d500 bpl.n 12cd8 <_ntoa_long+0x3c> 12cd6: 2341 movs r3, #65 ; 0x41 12cd8: b2db uxtb r3, r3 do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12cda: 2500 movs r5, #0 const char digit = (char)(value % base); 12cdc: 4a1d ldr r2, [pc, #116] ; (12d54 <_ntoa_long+0xb8>) 12cde: 4691 mov r9, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12ce0: 220a movs r2, #10 12ce2: 4252 negs r2, r2 12ce4: 4692 mov sl, r2 12ce6: 449a add sl, r3 12ce8: af0c add r7, sp, #48 ; 0x30 value /= base; 12cea: 4b1b ldr r3, [pc, #108] ; (12d58 <_ntoa_long+0xbc>) 12cec: 4698 mov r8, r3 12cee: e00a b.n 12d06 <_ntoa_long+0x6a> buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12cf0: 4451 add r1, sl 12cf2: b2c9 uxtb r1, r1 12cf4: 5579 strb r1, [r7, r5] value /= base; 12cf6: 9920 ldr r1, [sp, #128] ; 0x80 12cf8: 0020 movs r0, r4 12cfa: 47c0 blx r8 12cfc: 1e04 subs r4, r0, #0 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12cfe: d00e beq.n 12d1e <_ntoa_long+0x82> buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12d00: 0035 movs r5, r6 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12d02: 2e20 cmp r6, #32 12d04: d00b beq.n 12d1e <_ntoa_long+0x82> const char digit = (char)(value % base); 12d06: 9920 ldr r1, [sp, #128] ; 0x80 12d08: 0020 movs r0, r4 12d0a: 47c8 blx r9 12d0c: b2c9 uxtb r1, r1 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12d0e: 1c6e adds r6, r5, #1 12d10: 2909 cmp r1, #9 12d12: d8ed bhi.n 12cf0 <_ntoa_long+0x54> 12d14: 3130 adds r1, #48 ; 0x30 12d16: b2c9 uxtb r1, r1 12d18: e7ec b.n 12cf4 <_ntoa_long+0x58> flags &= ~FLAGS_HASH; 12d1a: 9323 str r3, [sp, #140] ; 0x8c size_t len = 0U; 12d1c: 2600 movs r6, #0 } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12d1e: 9b23 ldr r3, [sp, #140] ; 0x8c 12d20: 9306 str r3, [sp, #24] 12d22: 9b22 ldr r3, [sp, #136] ; 0x88 12d24: 9305 str r3, [sp, #20] 12d26: 9b21 ldr r3, [sp, #132] ; 0x84 12d28: 9304 str r3, [sp, #16] 12d2a: 9b20 ldr r3, [sp, #128] ; 0x80 12d2c: 9303 str r3, [sp, #12] 12d2e: 465b mov r3, fp 12d30: 9302 str r3, [sp, #8] 12d32: 9601 str r6, [sp, #4] 12d34: ab0c add r3, sp, #48 ; 0x30 12d36: 9300 str r3, [sp, #0] 12d38: 9b0b ldr r3, [sp, #44] ; 0x2c 12d3a: 9a0a ldr r2, [sp, #40] ; 0x28 12d3c: 9909 ldr r1, [sp, #36] ; 0x24 12d3e: 9808 ldr r0, [sp, #32] 12d40: 4c06 ldr r4, [pc, #24] ; (12d5c <_ntoa_long+0xc0>) 12d42: 47a0 blx r4 } 12d44: b015 add sp, #84 ; 0x54 12d46: bc3c pop {r2, r3, r4, r5} 12d48: 4690 mov r8, r2 12d4a: 4699 mov r9, r3 12d4c: 46a2 mov sl, r4 12d4e: 46ab mov fp, r5 12d50: bdf0 pop {r4, r5, r6, r7, pc} 12d52: 46c0 nop ; (mov r8, r8) 12d54: 0001c1b1 .word 0x0001c1b1 12d58: 0001c0a5 .word 0x0001c0a5 12d5c: 00012acb .word 0x00012acb 00012d60 <_ntoa_long_long>: // internal itoa for 'long long' type #if defined(PRINTF_SUPPORT_LONG_LONG) static size_t _ntoa_long_long(out_fct_type out, char * buffer, size_t idx, size_t maxlen, unsigned long long value, bool negative, unsigned long long base, unsigned int prec, unsigned int width, unsigned int flags) { 12d60: b5f0 push {r4, r5, r6, r7, lr} 12d62: 46de mov lr, fp 12d64: 4657 mov r7, sl 12d66: 464e mov r6, r9 12d68: 4645 mov r5, r8 12d6a: b5e0 push {r5, r6, r7, lr} 12d6c: b099 sub sp, #100 ; 0x64 12d6e: 900c str r0, [sp, #48] ; 0x30 12d70: 910d str r1, [sp, #52] ; 0x34 12d72: 920e str r2, [sp, #56] ; 0x38 12d74: 930f str r3, [sp, #60] ; 0x3c 12d76: 9b22 ldr r3, [sp, #136] ; 0x88 12d78: 001a movs r2, r3 12d7a: 9309 str r3, [sp, #36] ; 0x24 12d7c: 9d23 ldr r5, [sp, #140] ; 0x8c 12d7e: ab24 add r3, sp, #144 ; 0x90 12d80: 781b ldrb r3, [r3, #0] 12d82: 4698 mov r8, r3 12d84: 9b26 ldr r3, [sp, #152] ; 0x98 12d86: 930a str r3, [sp, #40] ; 0x28 12d88: 9b27 ldr r3, [sp, #156] ; 0x9c 12d8a: 930b str r3, [sp, #44] ; 0x2c char buf[PRINTF_NTOA_BUFFER_SIZE]; size_t len = 0U; // no hash for 0 values if(!value) { 12d8c: 0013 movs r3, r2 12d8e: 432b orrs r3, r5 12d90: d107 bne.n 12da2 <_ntoa_long_long+0x42> flags &= ~FLAGS_HASH; 12d92: 3310 adds r3, #16 12d94: 9a2a ldr r2, [sp, #168] ; 0xa8 12d96: 439a bics r2, r3 12d98: 0013 movs r3, r2 } // write if precision != 0 and value is != 0 if(!(flags & FLAGS_PRECISION) || value) { 12d9a: 9a2a ldr r2, [sp, #168] ; 0xa8 12d9c: 0552 lsls r2, r2, #21 12d9e: d42e bmi.n 12dfe <_ntoa_long_long+0x9e> flags &= ~FLAGS_HASH; 12da0: 932a str r3, [sp, #168] ; 0xa8 12da2: 2361 movs r3, #97 ; 0x61 12da4: 9a2a ldr r2, [sp, #168] ; 0xa8 12da6: 0692 lsls r2, r2, #26 12da8: d500 bpl.n 12dac <_ntoa_long_long+0x4c> 12daa: 2341 movs r3, #65 ; 0x41 12dac: b2db uxtb r3, r3 do { const char digit = (char)(value % base); buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12dae: 2600 movs r6, #0 const char digit = (char)(value % base); 12db0: 4a22 ldr r2, [pc, #136] ; (12e3c <_ntoa_long_long+0xdc>) 12db2: 4692 mov sl, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12db4: 220a movs r2, #10 12db6: 4252 negs r2, r2 12db8: 4693 mov fp, r2 12dba: 449b add fp, r3 12dbc: af10 add r7, sp, #64 ; 0x40 value /= base; 12dbe: 46d1 mov r9, sl 12dc0: 002c movs r4, r5 12dc2: e00e b.n 12de2 <_ntoa_long_long+0x82> buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12dc4: 445a add r2, fp 12dc6: b2d2 uxtb r2, r2 12dc8: 55ba strb r2, [r7, r6] value /= base; 12dca: 9a0a ldr r2, [sp, #40] ; 0x28 12dcc: 9b0b ldr r3, [sp, #44] ; 0x2c 12dce: 9809 ldr r0, [sp, #36] ; 0x24 12dd0: 0021 movs r1, r4 12dd2: 47c8 blx r9 12dd4: 9009 str r0, [sp, #36] ; 0x24 12dd6: 000c movs r4, r1 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12dd8: 4301 orrs r1, r0 12dda: d013 beq.n 12e04 <_ntoa_long_long+0xa4> buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12ddc: 002e movs r6, r5 } while(value && (len < PRINTF_NTOA_BUFFER_SIZE)); 12dde: 2d20 cmp r5, #32 12de0: d00b beq.n 12dfa <_ntoa_long_long+0x9a> const char digit = (char)(value % base); 12de2: 9a0a ldr r2, [sp, #40] ; 0x28 12de4: 9b0b ldr r3, [sp, #44] ; 0x2c 12de6: 9809 ldr r0, [sp, #36] ; 0x24 12de8: 0021 movs r1, r4 12dea: 47d0 blx sl 12dec: b2d2 uxtb r2, r2 buf[len++] = digit < 10 ? '0' + digit : (flags & FLAGS_UPPERCASE ? 'A' : 'a') + digit - 10; 12dee: 1c75 adds r5, r6, #1 12df0: 2a09 cmp r2, #9 12df2: d8e7 bhi.n 12dc4 <_ntoa_long_long+0x64> 12df4: 3230 adds r2, #48 ; 0x30 12df6: b2d2 uxtb r2, r2 12df8: e7e6 b.n 12dc8 <_ntoa_long_long+0x68> 12dfa: 002c movs r4, r5 12dfc: e003 b.n 12e06 <_ntoa_long_long+0xa6> flags &= ~FLAGS_HASH; 12dfe: 932a str r3, [sp, #168] ; 0xa8 size_t len = 0U; 12e00: 2400 movs r4, #0 12e02: e000 b.n 12e06 <_ntoa_long_long+0xa6> 12e04: 002c movs r4, r5 } return _ntoa_format(out, buffer, idx, maxlen, buf, len, negative, (unsigned int)base, prec, width, flags); 12e06: 9b2a ldr r3, [sp, #168] ; 0xa8 12e08: 9306 str r3, [sp, #24] 12e0a: 9b29 ldr r3, [sp, #164] ; 0xa4 12e0c: 9305 str r3, [sp, #20] 12e0e: 9b28 ldr r3, [sp, #160] ; 0xa0 12e10: 9304 str r3, [sp, #16] 12e12: 9b0a ldr r3, [sp, #40] ; 0x28 12e14: 9303 str r3, [sp, #12] 12e16: 4643 mov r3, r8 12e18: 9302 str r3, [sp, #8] 12e1a: 9401 str r4, [sp, #4] 12e1c: ab10 add r3, sp, #64 ; 0x40 12e1e: 9300 str r3, [sp, #0] 12e20: 9b0f ldr r3, [sp, #60] ; 0x3c 12e22: 9a0e ldr r2, [sp, #56] ; 0x38 12e24: 990d ldr r1, [sp, #52] ; 0x34 12e26: 980c ldr r0, [sp, #48] ; 0x30 12e28: 4c05 ldr r4, [pc, #20] ; (12e40 <_ntoa_long_long+0xe0>) 12e2a: 47a0 blx r4 } 12e2c: b019 add sp, #100 ; 0x64 12e2e: bc3c pop {r2, r3, r4, r5} 12e30: 4690 mov r8, r2 12e32: 4699 mov r9, r3 12e34: 46a2 mov sl, r4 12e36: 46ab mov fp, r5 12e38: bdf0 pop {r4, r5, r6, r7, pc} 12e3a: 46c0 nop ; (mov r8, r8) 12e3c: 0001c391 .word 0x0001c391 12e40: 00012acb .word 0x00012acb 00012e44 <_vsnprintf>: #endif // PRINTF_SUPPORT_FLOAT // internal vsnprintf static int _vsnprintf(out_fct_type out, char * buffer, const size_t maxlen, const char * format, va_list va) { 12e44: b5f0 push {r4, r5, r6, r7, lr} 12e46: 46de mov lr, fp 12e48: 4657 mov r7, sl 12e4a: 464e mov r6, r9 12e4c: 4645 mov r5, r8 12e4e: b5e0 push {r5, r6, r7, lr} 12e50: b097 sub sp, #92 ; 0x5c 12e52: 4681 mov r9, r0 12e54: 910c str r1, [sp, #48] ; 0x30 12e56: 920b str r2, [sp, #44] ; 0x2c 12e58: 001c movs r4, r3 12e5a: 9b20 ldr r3, [sp, #128] ; 0x80 12e5c: 469a mov sl, r3 unsigned int flags, width, precision, n; size_t idx = 0U; if(!buffer) { 12e5e: 2900 cmp r1, #0 12e60: d014 beq.n 12e8c <_vsnprintf+0x48> format++; break; } case '%' : out('%', buffer, idx++, maxlen); 12e62: 2700 movs r7, #0 switch(*format) { 12e64: 4bcd ldr r3, [pc, #820] ; (1319c <_vsnprintf+0x358>) 12e66: 469b mov fp, r3 12e68: 464b mov r3, r9 12e6a: 930d str r3, [sp, #52] ; 0x34 12e6c: 46d1 mov r9, sl while(*format) { 12e6e: 7820 ldrb r0, [r4, #0] 12e70: 2800 cmp r0, #0 12e72: d100 bne.n 12e76 <_vsnprintf+0x32> 12e74: e26a b.n 1334c <_vsnprintf+0x508> if(*format != '%') { 12e76: 2825 cmp r0, #37 ; 0x25 12e78: d00b beq.n 12e92 <_vsnprintf+0x4e> out(*format, buffer, idx++, maxlen); 12e7a: 1c7e adds r6, r7, #1 12e7c: 9b0b ldr r3, [sp, #44] ; 0x2c 12e7e: 003a movs r2, r7 12e80: 990c ldr r1, [sp, #48] ; 0x30 12e82: 9d0d ldr r5, [sp, #52] ; 0x34 12e84: 47a8 blx r5 format++; 12e86: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 12e88: 0037 movs r7, r6 continue; 12e8a: e7f0 b.n 12e6e <_vsnprintf+0x2a> out = _out_null; 12e8c: 4bc4 ldr r3, [pc, #784] ; (131a0 <_vsnprintf+0x35c>) 12e8e: 4699 mov r9, r3 12e90: e7e7 b.n 12e62 <_vsnprintf+0x1e> format++; 12e92: 1c62 adds r2, r4, #1 flags = 0U; 12e94: 2100 movs r1, #0 flags |= FLAGS_HASH; 12e96: 2310 movs r3, #16 12e98: 469a mov sl, r3 flags |= FLAGS_PLUS; 12e9a: 3b0c subs r3, #12 12e9c: 4698 mov r8, r3 flags |= FLAGS_LEFT; 12e9e: 3b02 subs r3, #2 12ea0: 469c mov ip, r3 flags |= FLAGS_ZEROPAD; 12ea2: 2601 movs r6, #1 12ea4: 9d0d ldr r5, [sp, #52] ; 0x34 12ea6: e001 b.n 12eac <_vsnprintf+0x68> 12ea8: 4331 orrs r1, r6 12eaa: 3201 adds r2, #1 12eac: 0014 movs r4, r2 switch(*format) { 12eae: 7813 ldrb r3, [r2, #0] 12eb0: 3b20 subs r3, #32 12eb2: b2d8 uxtb r0, r3 12eb4: 2810 cmp r0, #16 12eb6: d80f bhi.n 12ed8 <_vsnprintf+0x94> 12eb8: 0083 lsls r3, r0, #2 12eba: 4658 mov r0, fp 12ebc: 58c3 ldr r3, [r0, r3] 12ebe: 469f mov pc, r3 flags |= FLAGS_LEFT; 12ec0: 4663 mov r3, ip 12ec2: 4319 orrs r1, r3 break; 12ec4: e7f1 b.n 12eaa <_vsnprintf+0x66> flags |= FLAGS_PLUS; 12ec6: 4643 mov r3, r8 12ec8: 4319 orrs r1, r3 break; 12eca: e7ee b.n 12eaa <_vsnprintf+0x66> flags |= FLAGS_SPACE; 12ecc: 2308 movs r3, #8 12ece: 4319 orrs r1, r3 break; 12ed0: e7eb b.n 12eaa <_vsnprintf+0x66> flags |= FLAGS_HASH; 12ed2: 4653 mov r3, sl 12ed4: 4319 orrs r1, r3 break; 12ed6: e7e8 b.n 12eaa <_vsnprintf+0x66> 12ed8: 950d str r5, [sp, #52] ; 0x34 if(_is_digit(*format)) { 12eda: 7823 ldrb r3, [r4, #0] 12edc: 001a movs r2, r3 12ede: 3a30 subs r2, #48 ; 0x30 12ee0: 2a09 cmp r2, #9 12ee2: d910 bls.n 12f06 <_vsnprintf+0xc2> width = 0U; 12ee4: 2600 movs r6, #0 else if(*format == '*') { 12ee6: 2b2a cmp r3, #42 ; 0x2a 12ee8: d01d beq.n 12f26 <_vsnprintf+0xe2> if(*format == '.') { 12eea: 7823 ldrb r3, [r4, #0] precision = 0U; 12eec: 2200 movs r2, #0 12eee: 4692 mov sl, r2 if(*format == '.') { 12ef0: 2b2e cmp r3, #46 ; 0x2e 12ef2: d024 beq.n 12f3e <_vsnprintf+0xfa> switch(*format) { 12ef4: 7823 ldrb r3, [r4, #0] 12ef6: 3b68 subs r3, #104 ; 0x68 12ef8: b2da uxtb r2, r3 12efa: 2a12 cmp r2, #18 12efc: d86a bhi.n 12fd4 <_vsnprintf+0x190> 12efe: 0093 lsls r3, r2, #2 12f00: 4aa8 ldr r2, [pc, #672] ; (131a4 <_vsnprintf+0x360>) 12f02: 58d3 ldr r3, [r2, r3] 12f04: 469f mov pc, r3 12f06: 2600 movs r6, #0 12f08: 001a movs r2, r3 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 12f0a: 3401 adds r4, #1 12f0c: 00b3 lsls r3, r6, #2 12f0e: 199b adds r3, r3, r6 12f10: 005b lsls r3, r3, #1 12f12: 189b adds r3, r3, r2 12f14: 3b30 subs r3, #48 ; 0x30 12f16: 001e movs r6, r3 while(_is_digit(**str)) { 12f18: 7822 ldrb r2, [r4, #0] 12f1a: 0013 movs r3, r2 12f1c: 3b30 subs r3, #48 ; 0x30 12f1e: 2b09 cmp r3, #9 12f20: d9f3 bls.n 12f0a <_vsnprintf+0xc6> 12f22: 950d str r5, [sp, #52] ; 0x34 12f24: e7e1 b.n 12eea <_vsnprintf+0xa6> const int w = va_arg(va, int); 12f26: 464b mov r3, r9 12f28: 1d1a adds r2, r3, #4 12f2a: 681b ldr r3, [r3, #0] width = (unsigned int)w; 12f2c: 1e1e subs r6, r3, #0 if(w < 0) { 12f2e: db02 blt.n 12f36 <_vsnprintf+0xf2> format++; 12f30: 3401 adds r4, #1 const int w = va_arg(va, int); 12f32: 4691 mov r9, r2 12f34: e7d9 b.n 12eea <_vsnprintf+0xa6> flags |= FLAGS_LEFT; // reverse padding 12f36: 2002 movs r0, #2 12f38: 4301 orrs r1, r0 width = (unsigned int) - w; 12f3a: 425e negs r6, r3 12f3c: e7f8 b.n 12f30 <_vsnprintf+0xec> flags |= FLAGS_PRECISION; 12f3e: 2380 movs r3, #128 ; 0x80 12f40: 00db lsls r3, r3, #3 12f42: 4319 orrs r1, r3 format++; 12f44: 1c60 adds r0, r4, #1 if(_is_digit(*format)) { 12f46: 7863 ldrb r3, [r4, #1] 12f48: 001a movs r2, r3 12f4a: 3a30 subs r2, #48 ; 0x30 12f4c: 2a09 cmp r2, #9 12f4e: d905 bls.n 12f5c <_vsnprintf+0x118> else if(*format == '*') { 12f50: 2b2a cmp r3, #42 ; 0x2a 12f52: d016 beq.n 12f82 <_vsnprintf+0x13e> format++; 12f54: 0004 movs r4, r0 precision = 0U; 12f56: 2300 movs r3, #0 12f58: 469a mov sl, r3 12f5a: e7cb b.n 12ef4 <_vsnprintf+0xb0> 12f5c: 2200 movs r2, #0 12f5e: 001c movs r4, r3 12f60: 9d0d ldr r5, [sp, #52] ; 0x34 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 12f62: 3001 adds r0, #1 12f64: 0093 lsls r3, r2, #2 12f66: 189b adds r3, r3, r2 12f68: 005b lsls r3, r3, #1 12f6a: 191b adds r3, r3, r4 12f6c: 3b30 subs r3, #48 ; 0x30 12f6e: 001a movs r2, r3 while(_is_digit(**str)) { 12f70: 7804 ldrb r4, [r0, #0] 12f72: 0023 movs r3, r4 12f74: 3b30 subs r3, #48 ; 0x30 12f76: 2b09 cmp r3, #9 12f78: d9f3 bls.n 12f62 <_vsnprintf+0x11e> 12f7a: 4692 mov sl, r2 12f7c: 950d str r5, [sp, #52] ; 0x34 i = i * 10U + (unsigned int)(*((*str)++) - '0'); 12f7e: 0004 movs r4, r0 12f80: e7b8 b.n 12ef4 <_vsnprintf+0xb0> precision = prec > 0 ? (unsigned int)prec : 0U; 12f82: 464b mov r3, r9 12f84: 681b ldr r3, [r3, #0] 12f86: 469a mov sl, r3 12f88: 43db mvns r3, r3 12f8a: 17db asrs r3, r3, #31 12f8c: 4652 mov r2, sl 12f8e: 401a ands r2, r3 12f90: 4692 mov sl, r2 format++; 12f92: 3402 adds r4, #2 const int prec = (int)va_arg(va, int); 12f94: 2304 movs r3, #4 12f96: 469c mov ip, r3 12f98: 44e1 add r9, ip 12f9a: e7ab b.n 12ef4 <_vsnprintf+0xb0> if(*format == 'l') { 12f9c: 7863 ldrb r3, [r4, #1] 12f9e: 2b6c cmp r3, #108 ; 0x6c 12fa0: d004 beq.n 12fac <_vsnprintf+0x168> flags |= FLAGS_LONG; 12fa2: 2380 movs r3, #128 ; 0x80 12fa4: 005b lsls r3, r3, #1 12fa6: 4319 orrs r1, r3 format++; 12fa8: 3401 adds r4, #1 12faa: e013 b.n 12fd4 <_vsnprintf+0x190> flags |= FLAGS_LONG_LONG; 12fac: 23c0 movs r3, #192 ; 0xc0 12fae: 009b lsls r3, r3, #2 12fb0: 4319 orrs r1, r3 format++; 12fb2: 3402 adds r4, #2 12fb4: e00e b.n 12fd4 <_vsnprintf+0x190> if(*format == 'h') { 12fb6: 7863 ldrb r3, [r4, #1] 12fb8: 2b68 cmp r3, #104 ; 0x68 12fba: d003 beq.n 12fc4 <_vsnprintf+0x180> flags |= FLAGS_SHORT; 12fbc: 2380 movs r3, #128 ; 0x80 12fbe: 4319 orrs r1, r3 format++; 12fc0: 3401 adds r4, #1 12fc2: e007 b.n 12fd4 <_vsnprintf+0x190> flags |= FLAGS_CHAR; 12fc4: 23c0 movs r3, #192 ; 0xc0 12fc6: 4319 orrs r1, r3 format++; 12fc8: 3402 adds r4, #2 12fca: e003 b.n 12fd4 <_vsnprintf+0x190> flags |= (sizeof(ptrdiff_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 12fcc: 2380 movs r3, #128 ; 0x80 12fce: 005b lsls r3, r3, #1 12fd0: 4319 orrs r1, r3 format++; 12fd2: 3401 adds r4, #1 switch(*format) { 12fd4: 7820 ldrb r0, [r4, #0] 12fd6: 0003 movs r3, r0 12fd8: 3b25 subs r3, #37 ; 0x25 12fda: b2da uxtb r2, r3 12fdc: 2a53 cmp r2, #83 ; 0x53 12fde: d900 bls.n 12fe2 <_vsnprintf+0x19e> 12fe0: e1ab b.n 1333a <_vsnprintf+0x4f6> 12fe2: 0093 lsls r3, r2, #2 12fe4: 4a70 ldr r2, [pc, #448] ; (131a8 <_vsnprintf+0x364>) 12fe6: 58d3 ldr r3, [r2, r3] 12fe8: 469f mov pc, r3 flags |= (sizeof(intmax_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 12fea: 2380 movs r3, #128 ; 0x80 12fec: 009b lsls r3, r3, #2 12fee: 4319 orrs r1, r3 format++; 12ff0: 3401 adds r4, #1 break; 12ff2: e7ef b.n 12fd4 <_vsnprintf+0x190> flags |= (sizeof(size_t) == sizeof(long) ? FLAGS_LONG : FLAGS_LONG_LONG); 12ff4: 2380 movs r3, #128 ; 0x80 12ff6: 005b lsls r3, r3, #1 12ff8: 4319 orrs r1, r3 format++; 12ffa: 3401 adds r4, #1 break; 12ffc: e7ea b.n 12fd4 <_vsnprintf+0x190> if(*format == 'x' || *format == 'X') { 12ffe: 2878 cmp r0, #120 ; 0x78 13000: d100 bne.n 13004 <_vsnprintf+0x1c0> 13002: e237 b.n 13474 <_vsnprintf+0x630> 13004: 2858 cmp r0, #88 ; 0x58 13006: d100 bne.n 1300a <_vsnprintf+0x1c6> 13008: e1b3 b.n 13372 <_vsnprintf+0x52e> else if(*format == 'o') { 1300a: 286f cmp r0, #111 ; 0x6f 1300c: d100 bne.n 13010 <_vsnprintf+0x1cc> 1300e: e233 b.n 13478 <_vsnprintf+0x634> else if(*format == 'b') { 13010: 2862 cmp r0, #98 ; 0x62 13012: d100 bne.n 13016 <_vsnprintf+0x1d2> 13014: e232 b.n 1347c <_vsnprintf+0x638> flags &= ~FLAGS_HASH; // no hash for dec format 13016: 2310 movs r3, #16 13018: 000a movs r2, r1 1301a: 439a bics r2, r3 1301c: 0013 movs r3, r2 if((*format != 'i') && (*format != 'd')) { 1301e: 2869 cmp r0, #105 ; 0x69 13020: d124 bne.n 1306c <_vsnprintf+0x228> if(flags & FLAGS_PRECISION) { 13022: 054a lsls r2, r1, #21 13024: d500 bpl.n 13028 <_vsnprintf+0x1e4> 13026: e220 b.n 1346a <_vsnprintf+0x626> base = 10U; 13028: 220a movs r2, #10 if(flags & FLAGS_LONG_LONG) { 1302a: 0599 lsls r1, r3, #22 1302c: d424 bmi.n 13078 <_vsnprintf+0x234> else if(flags & FLAGS_LONG) { 1302e: 05d9 lsls r1, r3, #23 13030: d451 bmi.n 130d6 <_vsnprintf+0x292> const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 13032: 0659 lsls r1, r3, #25 13034: d468 bmi.n 13108 <_vsnprintf+0x2c4> int) : va_arg(va, int); 13036: 0619 lsls r1, r3, #24 13038: d56c bpl.n 13114 <_vsnprintf+0x2d0> 1303a: 4649 mov r1, r9 1303c: 2000 movs r0, #0 1303e: 5e09 ldrsh r1, [r1, r0] const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 13040: 2004 movs r0, #4 13042: 4684 mov ip, r0 13044: 44e1 add r9, ip idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned int)(value > 0 ? value : 0 - value), value < 0, base, precision, 13046: 9305 str r3, [sp, #20] 13048: 9604 str r6, [sp, #16] 1304a: 4653 mov r3, sl 1304c: 9303 str r3, [sp, #12] 1304e: 9202 str r2, [sp, #8] 13050: 0fcb lsrs r3, r1, #31 13052: 9301 str r3, [sp, #4] 13054: 17cb asrs r3, r1, #31 13056: 18c9 adds r1, r1, r3 13058: 4059 eors r1, r3 1305a: 9100 str r1, [sp, #0] 1305c: 9b0b ldr r3, [sp, #44] ; 0x2c 1305e: 003a movs r2, r7 13060: 990c ldr r1, [sp, #48] ; 0x30 13062: 980d ldr r0, [sp, #52] ; 0x34 13064: 4e51 ldr r6, [pc, #324] ; (131ac <_vsnprintf+0x368>) 13066: 47b0 blx r6 13068: 0007 movs r7, r0 1306a: e1b4 b.n 133d6 <_vsnprintf+0x592> if((*format != 'i') && (*format != 'd')) { 1306c: 2864 cmp r0, #100 ; 0x64 1306e: d100 bne.n 13072 <_vsnprintf+0x22e> 13070: e1b3 b.n 133da <_vsnprintf+0x596> flags &= ~FLAGS_HASH; // no hash for dec format 13072: 0011 movs r1, r2 base = 10U; 13074: 220a movs r2, #10 13076: e17f b.n 13378 <_vsnprintf+0x534> const long long value = va_arg(va, long long); 13078: 4649 mov r1, r9 1307a: 3107 adds r1, #7 1307c: 2007 movs r0, #7 1307e: 4381 bics r1, r0 13080: 3001 adds r0, #1 13082: 4681 mov r9, r0 13084: 4489 add r9, r1 13086: 6808 ldr r0, [r1, #0] 13088: 6849 ldr r1, [r1, #4] idx = _ntoa_long_long(out, buffer, idx, maxlen, (unsigned long long)(value > 0 ? value : 0 - value), value < 0, base, 1308a: 9308 str r3, [sp, #32] 1308c: 9607 str r6, [sp, #28] 1308e: 4653 mov r3, sl 13090: 9306 str r3, [sp, #24] 13092: 9204 str r2, [sp, #16] 13094: 2300 movs r3, #0 13096: 9305 str r3, [sp, #20] 13098: 0fcb lsrs r3, r1, #31 1309a: 9302 str r3, [sp, #8] 1309c: 17cb asrs r3, r1, #31 1309e: 9312 str r3, [sp, #72] ; 0x48 130a0: 9313 str r3, [sp, #76] ; 0x4c 130a2: 9a12 ldr r2, [sp, #72] ; 0x48 130a4: 9b13 ldr r3, [sp, #76] ; 0x4c 130a6: 0015 movs r5, r2 130a8: 4045 eors r5, r0 130aa: 9514 str r5, [sp, #80] ; 0x50 130ac: 0018 movs r0, r3 130ae: 4048 eors r0, r1 130b0: 9015 str r0, [sp, #84] ; 0x54 130b2: 9d14 ldr r5, [sp, #80] ; 0x50 130b4: 9e15 ldr r6, [sp, #84] ; 0x54 130b6: 0011 movs r1, r2 130b8: 001a movs r2, r3 130ba: 1a6d subs r5, r5, r1 130bc: 4196 sbcs r6, r2 130be: 002a movs r2, r5 130c0: 0033 movs r3, r6 130c2: 9200 str r2, [sp, #0] 130c4: 9301 str r3, [sp, #4] 130c6: 9b0b ldr r3, [sp, #44] ; 0x2c 130c8: 003a movs r2, r7 130ca: 990c ldr r1, [sp, #48] ; 0x30 130cc: 980d ldr r0, [sp, #52] ; 0x34 130ce: 4e38 ldr r6, [pc, #224] ; (131b0 <_vsnprintf+0x36c>) 130d0: 47b0 blx r6 130d2: 0007 movs r7, r0 130d4: e17f b.n 133d6 <_vsnprintf+0x592> const long value = va_arg(va, long); 130d6: 2104 movs r1, #4 130d8: 4449 add r1, r9 130da: 4688 mov r8, r1 130dc: 4649 mov r1, r9 130de: 6809 ldr r1, [r1, #0] idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)(value > 0 ? value : 0 - value), value < 0, base, precision, 130e0: 9305 str r3, [sp, #20] 130e2: 9604 str r6, [sp, #16] 130e4: 4653 mov r3, sl 130e6: 9303 str r3, [sp, #12] 130e8: 9202 str r2, [sp, #8] 130ea: 0fcb lsrs r3, r1, #31 130ec: 9301 str r3, [sp, #4] 130ee: 17cb asrs r3, r1, #31 130f0: 18c9 adds r1, r1, r3 130f2: 4059 eors r1, r3 130f4: 9100 str r1, [sp, #0] 130f6: 9b0b ldr r3, [sp, #44] ; 0x2c 130f8: 003a movs r2, r7 130fa: 990c ldr r1, [sp, #48] ; 0x30 130fc: 980d ldr r0, [sp, #52] ; 0x34 130fe: 4e2b ldr r6, [pc, #172] ; (131ac <_vsnprintf+0x368>) 13100: 47b0 blx r6 13102: 0007 movs r7, r0 const long value = va_arg(va, long); 13104: 46c1 mov r9, r8 13106: e166 b.n 133d6 <_vsnprintf+0x592> 13108: 4649 mov r1, r9 1310a: 7809 ldrb r1, [r1, #0] const int value = (flags & FLAGS_CHAR) ? (char)va_arg(va, int) : (flags & FLAGS_SHORT) ? (short int)va_arg(va, 1310c: 2004 movs r0, #4 1310e: 4684 mov ip, r0 13110: 44e1 add r9, ip 13112: e798 b.n 13046 <_vsnprintf+0x202> int) : va_arg(va, int); 13114: 4649 mov r1, r9 13116: 6809 ldr r1, [r1, #0] 13118: 2004 movs r0, #4 1311a: 4684 mov ip, r0 1311c: 44e1 add r9, ip 1311e: e792 b.n 13046 <_vsnprintf+0x202> idx = _ntoa_long_long(out, buffer, idx, maxlen, va_arg(va, unsigned long long), false, base, precision, width, flags); 13120: 4649 mov r1, r9 13122: 3107 adds r1, #7 13124: 2007 movs r0, #7 13126: 4381 bics r1, r0 13128: 3001 adds r0, #1 1312a: 4681 mov r9, r0 1312c: 4489 add r9, r1 1312e: 9308 str r3, [sp, #32] 13130: 9607 str r6, [sp, #28] 13132: 4653 mov r3, sl 13134: 9306 str r3, [sp, #24] 13136: 9204 str r2, [sp, #16] 13138: 2300 movs r3, #0 1313a: 9305 str r3, [sp, #20] 1313c: 9302 str r3, [sp, #8] 1313e: 680a ldr r2, [r1, #0] 13140: 684b ldr r3, [r1, #4] 13142: 9200 str r2, [sp, #0] 13144: 9301 str r3, [sp, #4] 13146: 9b0b ldr r3, [sp, #44] ; 0x2c 13148: 003a movs r2, r7 1314a: 990c ldr r1, [sp, #48] ; 0x30 1314c: 980d ldr r0, [sp, #52] ; 0x34 1314e: 4e18 ldr r6, [pc, #96] ; (131b0 <_vsnprintf+0x36c>) 13150: 47b0 blx r6 13152: 0007 movs r7, r0 13154: e13f b.n 133d6 <_vsnprintf+0x592> idx = _ntoa_long(out, buffer, idx, maxlen, va_arg(va, unsigned long), false, base, precision, width, flags); 13156: 2104 movs r1, #4 13158: 4449 add r1, r9 1315a: 4688 mov r8, r1 1315c: 9305 str r3, [sp, #20] 1315e: 9604 str r6, [sp, #16] 13160: 4653 mov r3, sl 13162: 9303 str r3, [sp, #12] 13164: 9202 str r2, [sp, #8] 13166: 2300 movs r3, #0 13168: 9301 str r3, [sp, #4] 1316a: 464b mov r3, r9 1316c: 681b ldr r3, [r3, #0] 1316e: 9300 str r3, [sp, #0] 13170: 9b0b ldr r3, [sp, #44] ; 0x2c 13172: 003a movs r2, r7 13174: 990c ldr r1, [sp, #48] ; 0x30 13176: 980d ldr r0, [sp, #52] ; 0x34 13178: 4e0c ldr r6, [pc, #48] ; (131ac <_vsnprintf+0x368>) 1317a: 47b0 blx r6 1317c: 0007 movs r7, r0 1317e: 46c1 mov r9, r8 13180: e129 b.n 133d6 <_vsnprintf+0x592> 13182: 4649 mov r1, r9 13184: 7809 ldrb r1, [r1, #0] const unsigned int value = (flags & FLAGS_CHAR) ? (unsigned char)va_arg(va, 13186: 2004 movs r0, #4 13188: 4684 mov ip, r0 1318a: 44e1 add r9, ip 1318c: e114 b.n 133b8 <_vsnprintf+0x574> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); 1318e: 4649 mov r1, r9 13190: 6809 ldr r1, [r1, #0] 13192: 2004 movs r0, #4 13194: 4684 mov ip, r0 13196: 44e1 add r9, ip 13198: e10e b.n 133b8 <_vsnprintf+0x574> 1319a: 46c0 nop ; (mov r8, r8) 1319c: 0002aa30 .word 0x0002aa30 131a0: 00012ac9 .word 0x00012ac9 131a4: 0002aa74 .word 0x0002aa74 131a8: 0002aac0 .word 0x0002aac0 131ac: 00012c9d .word 0x00012c9d 131b0: 00012d61 .word 0x00012d61 if(!(flags & FLAGS_LEFT)) { 131b4: 078b lsls r3, r1, #30 131b6: d500 bpl.n 131ba <_vsnprintf+0x376> 131b8: e113 b.n 133e2 <_vsnprintf+0x59e> while(l++ < width) { 131ba: 2e01 cmp r6, #1 131bc: d800 bhi.n 131c0 <_vsnprintf+0x37c> 131be: e134 b.n 1342a <_vsnprintf+0x5e6> 131c0: 1e7b subs r3, r7, #1 131c2: 4698 mov r8, r3 131c4: 44b0 add r8, r6 131c6: 003a movs r2, r7 131c8: 4647 mov r7, r8 131ca: 9d0d ldr r5, [sp, #52] ; 0x34 out(' ', buffer, idx++, maxlen); 131cc: 1c56 adds r6, r2, #1 131ce: 9b0b ldr r3, [sp, #44] ; 0x2c 131d0: 990c ldr r1, [sp, #48] ; 0x30 131d2: 2020 movs r0, #32 131d4: 47a8 blx r5 131d6: 0032 movs r2, r6 while(l++ < width) { 131d8: 42be cmp r6, r7 131da: d1f7 bne.n 131cc <_vsnprintf+0x388> 131dc: 950d str r5, [sp, #52] ; 0x34 out((char)va_arg(va, int), buffer, idx++, maxlen); 131de: 2304 movs r3, #4 131e0: 444b add r3, r9 131e2: 4698 mov r8, r3 131e4: 1c77 adds r7, r6, #1 131e6: 464b mov r3, r9 131e8: 7818 ldrb r0, [r3, #0] 131ea: 9b0b ldr r3, [sp, #44] ; 0x2c 131ec: 0032 movs r2, r6 131ee: 990c ldr r1, [sp, #48] ; 0x30 131f0: 9d0d ldr r5, [sp, #52] ; 0x34 131f2: 47a8 blx r5 131f4: 46c1 mov r9, r8 format++; 131f6: 3401 adds r4, #1 break; 131f8: e639 b.n 12e6e <_vsnprintf+0x2a> out((char)va_arg(va, int), buffer, idx++, maxlen); 131fa: 9b0e ldr r3, [sp, #56] ; 0x38 131fc: 4699 mov r9, r3 131fe: 4647 mov r7, r8 13200: e7f9 b.n 131f6 <_vsnprintf+0x3b2> const char * p = va_arg(va, char *); 13202: 464b mov r3, r9 13204: 3304 adds r3, #4 13206: 9310 str r3, [sp, #64] ; 0x40 13208: 464b mov r3, r9 1320a: 681b ldr r3, [r3, #0] 1320c: 930e str r3, [sp, #56] ; 0x38 unsigned int l = _strnlen_s(p, precision ? precision : (size_t) -1); 1320e: 4652 mov r2, sl 13210: 2a00 cmp r2, #0 13212: d101 bne.n 13218 <_vsnprintf+0x3d4> 13214: 2201 movs r2, #1 13216: 4252 negs r2, r2 for(s = str; *s && maxsize--; ++s); 13218: 9b0e ldr r3, [sp, #56] ; 0x38 1321a: 7818 ldrb r0, [r3, #0] 1321c: 2800 cmp r0, #0 1321e: d00d beq.n 1323c <_vsnprintf+0x3f8> 13220: 468c mov ip, r1 13222: 9d0d ldr r5, [sp, #52] ; 0x34 13224: 3301 adds r3, #1 13226: 7819 ldrb r1, [r3, #0] 13228: 2900 cmp r1, #0 1322a: d005 beq.n 13238 <_vsnprintf+0x3f4> 1322c: 3a01 subs r2, #1 1322e: 2a00 cmp r2, #0 13230: d1f8 bne.n 13224 <_vsnprintf+0x3e0> 13232: 4661 mov r1, ip 13234: 950d str r5, [sp, #52] ; 0x34 13236: e001 b.n 1323c <_vsnprintf+0x3f8> 13238: 4661 mov r1, ip 1323a: 950d str r5, [sp, #52] ; 0x34 return (unsigned int)(s - str); 1323c: 9a0e ldr r2, [sp, #56] ; 0x38 1323e: 1a9b subs r3, r3, r2 13240: 001a movs r2, r3 13242: 930f str r3, [sp, #60] ; 0x3c if(flags & FLAGS_PRECISION) { 13244: 2380 movs r3, #128 ; 0x80 13246: 00db lsls r3, r3, #3 13248: 400b ands r3, r1 1324a: 4699 mov r9, r3 1324c: d003 beq.n 13256 <_vsnprintf+0x412> l = (l < precision ? l : precision); 1324e: 4552 cmp r2, sl 13250: d901 bls.n 13256 <_vsnprintf+0x412> 13252: 4653 mov r3, sl 13254: 930f str r3, [sp, #60] ; 0x3c if(!(flags & FLAGS_LEFT)) { 13256: 2302 movs r3, #2 13258: 400b ands r3, r1 1325a: 9311 str r3, [sp, #68] ; 0x44 1325c: d000 beq.n 13260 <_vsnprintf+0x41c> 1325e: e0e9 b.n 13434 <_vsnprintf+0x5f0> while(l++ < width) { 13260: 990f ldr r1, [sp, #60] ; 0x3c 13262: 000b movs r3, r1 13264: 3301 adds r3, #1 13266: 428e cmp r6, r1 13268: d800 bhi.n 1326c <_vsnprintf+0x428> 1326a: e0e0 b.n 1342e <_vsnprintf+0x5ea> 1326c: 19f3 adds r3, r6, r7 1326e: 1a5b subs r3, r3, r1 13270: 4698 mov r8, r3 13272: 003a movs r2, r7 13274: 0023 movs r3, r4 13276: 4644 mov r4, r8 13278: 9d0d ldr r5, [sp, #52] ; 0x34 1327a: 4698 mov r8, r3 out(' ', buffer, idx++, maxlen); 1327c: 1c57 adds r7, r2, #1 1327e: 9b0b ldr r3, [sp, #44] ; 0x2c 13280: 990c ldr r1, [sp, #48] ; 0x30 13282: 2020 movs r0, #32 13284: 47a8 blx r5 13286: 003a movs r2, r7 while(l++ < width) { 13288: 42a7 cmp r7, r4 1328a: d1f7 bne.n 1327c <_vsnprintf+0x438> 1328c: 4644 mov r4, r8 1328e: 950d str r5, [sp, #52] ; 0x34 13290: 1c73 adds r3, r6, #1 13292: 930f str r3, [sp, #60] ; 0x3c while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13294: 9b0e ldr r3, [sp, #56] ; 0x38 13296: 7818 ldrb r0, [r3, #0] 13298: 0017 movs r7, r2 1329a: 2800 cmp r0, #0 1329c: d025 beq.n 132ea <_vsnprintf+0x4a6> 1329e: 9b0e ldr r3, [sp, #56] ; 0x38 132a0: 1a9b subs r3, r3, r2 132a2: 4698 mov r8, r3 132a4: 0023 movs r3, r4 132a6: 4654 mov r4, sl 132a8: 990d ldr r1, [sp, #52] ; 0x34 132aa: 464d mov r5, r9 132ac: 46b1 mov r9, r6 132ae: 000e movs r6, r1 132b0: 469a mov sl, r3 132b2: e009 b.n 132c8 <_vsnprintf+0x484> 132b4: 001c movs r4, r3 out(*(p++), buffer, idx++, maxlen); 132b6: 1c57 adds r7, r2, #1 132b8: 9b0b ldr r3, [sp, #44] ; 0x2c 132ba: 990c ldr r1, [sp, #48] ; 0x30 132bc: 47b0 blx r6 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 132be: 4643 mov r3, r8 132c0: 5dd8 ldrb r0, [r3, r7] 132c2: 2800 cmp r0, #0 132c4: d00a beq.n 132dc <_vsnprintf+0x498> out(*(p++), buffer, idx++, maxlen); 132c6: 003a movs r2, r7 while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 132c8: 2d00 cmp r5, #0 132ca: d0f4 beq.n 132b6 <_vsnprintf+0x472> 132cc: 1e63 subs r3, r4, #1 132ce: 2c00 cmp r4, #0 132d0: d1f0 bne.n 132b4 <_vsnprintf+0x470> 132d2: 4654 mov r4, sl 132d4: 960d str r6, [sp, #52] ; 0x34 132d6: 464e mov r6, r9 132d8: 0017 movs r7, r2 132da: e002 b.n 132e2 <_vsnprintf+0x49e> 132dc: 4654 mov r4, sl 132de: 960d str r6, [sp, #52] ; 0x34 132e0: 464e mov r6, r9 if(flags & FLAGS_LEFT) { 132e2: 9b11 ldr r3, [sp, #68] ; 0x44 132e4: 2b00 cmp r3, #0 132e6: d000 beq.n 132ea <_vsnprintf+0x4a6> 132e8: e0a8 b.n 1343c <_vsnprintf+0x5f8> format++; 132ea: 3401 adds r4, #1 const char * p = va_arg(va, char *); 132ec: 9b10 ldr r3, [sp, #64] ; 0x40 132ee: 4699 mov r9, r3 break; 132f0: e5bd b.n 12e6e <_vsnprintf+0x2a> idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 132f2: 464b mov r3, r9 132f4: 1d1e adds r6, r3, #4 flags |= FLAGS_ZEROPAD | FLAGS_UPPERCASE; 132f6: 2321 movs r3, #33 ; 0x21 132f8: 4319 orrs r1, r3 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 132fa: 9105 str r1, [sp, #20] 132fc: 3b19 subs r3, #25 132fe: 9304 str r3, [sp, #16] 13300: 4653 mov r3, sl 13302: 9303 str r3, [sp, #12] 13304: 2310 movs r3, #16 13306: 9302 str r3, [sp, #8] 13308: 2300 movs r3, #0 1330a: 9301 str r3, [sp, #4] 1330c: 464b mov r3, r9 1330e: 681b ldr r3, [r3, #0] 13310: 9300 str r3, [sp, #0] 13312: 9b0b ldr r3, [sp, #44] ; 0x2c 13314: 003a movs r2, r7 13316: 990c ldr r1, [sp, #48] ; 0x30 13318: 980d ldr r0, [sp, #52] ; 0x34 1331a: 4f59 ldr r7, [pc, #356] ; (13480 <_vsnprintf+0x63c>) 1331c: 47b8 blx r7 1331e: 0007 movs r7, r0 format++; 13320: 3401 adds r4, #1 idx = _ntoa_long(out, buffer, idx, maxlen, (unsigned long)((uintptr_t)va_arg(va, void *)), false, 16U, precision, width, 13322: 46b1 mov r9, r6 break; 13324: e5a3 b.n 12e6e <_vsnprintf+0x2a> out('%', buffer, idx++, maxlen); 13326: 1c7e adds r6, r7, #1 13328: 9b0b ldr r3, [sp, #44] ; 0x2c 1332a: 003a movs r2, r7 1332c: 990c ldr r1, [sp, #48] ; 0x30 1332e: 2025 movs r0, #37 ; 0x25 13330: 9d0d ldr r5, [sp, #52] ; 0x34 13332: 47a8 blx r5 format++; 13334: 3401 adds r4, #1 out('%', buffer, idx++, maxlen); 13336: 0037 movs r7, r6 break; 13338: e599 b.n 12e6e <_vsnprintf+0x2a> default : out(*format, buffer, idx++, maxlen); 1333a: 1c7e adds r6, r7, #1 1333c: 9b0b ldr r3, [sp, #44] ; 0x2c 1333e: 003a movs r2, r7 13340: 990c ldr r1, [sp, #48] ; 0x30 13342: 9d0d ldr r5, [sp, #52] ; 0x34 13344: 47a8 blx r5 format++; 13346: 3401 adds r4, #1 out(*format, buffer, idx++, maxlen); 13348: 0037 movs r7, r6 break; 1334a: e590 b.n 12e6e <_vsnprintf+0x2a> 1334c: 9b0d ldr r3, [sp, #52] ; 0x34 1334e: 4699 mov r9, r3 13350: 003a movs r2, r7 } } // termination out((char)0, buffer, idx < maxlen ? idx : maxlen - 1U, maxlen); 13352: 990b ldr r1, [sp, #44] ; 0x2c 13354: 428f cmp r7, r1 13356: d300 bcc.n 1335a <_vsnprintf+0x516> 13358: 1e4a subs r2, r1, #1 1335a: 9b0b ldr r3, [sp, #44] ; 0x2c 1335c: 990c ldr r1, [sp, #48] ; 0x30 1335e: 2000 movs r0, #0 13360: 47c8 blx r9 // return written chars without terminating \0 return (int)idx; } 13362: 0038 movs r0, r7 13364: b017 add sp, #92 ; 0x5c 13366: bc3c pop {r2, r3, r4, r5} 13368: 4690 mov r8, r2 1336a: 4699 mov r9, r3 1336c: 46a2 mov sl, r4 1336e: 46ab mov fp, r5 13370: bdf0 pop {r4, r5, r6, r7, pc} flags |= FLAGS_UPPERCASE; 13372: 2320 movs r3, #32 13374: 4319 orrs r1, r3 base = 16U; 13376: 2210 movs r2, #16 flags &= ~(FLAGS_PLUS | FLAGS_SPACE); 13378: 230c movs r3, #12 1337a: 000d movs r5, r1 1337c: 439d bics r5, r3 1337e: 002b movs r3, r5 if(flags & FLAGS_PRECISION) { 13380: 054d lsls r5, r1, #21 13382: d508 bpl.n 13396 <_vsnprintf+0x552> flags &= ~FLAGS_ZEROPAD; 13384: 230d movs r3, #13 13386: 4399 bics r1, r3 13388: 000b movs r3, r1 if((*format == 'i') || (*format == 'd')) { 1338a: 2869 cmp r0, #105 ; 0x69 1338c: d100 bne.n 13390 <_vsnprintf+0x54c> 1338e: e64c b.n 1302a <_vsnprintf+0x1e6> 13390: 2864 cmp r0, #100 ; 0x64 13392: d100 bne.n 13396 <_vsnprintf+0x552> 13394: e649 b.n 1302a <_vsnprintf+0x1e6> if(flags & FLAGS_LONG_LONG) { 13396: 0599 lsls r1, r3, #22 13398: d500 bpl.n 1339c <_vsnprintf+0x558> 1339a: e6c1 b.n 13120 <_vsnprintf+0x2dc> else if(flags & FLAGS_LONG) { 1339c: 05d9 lsls r1, r3, #23 1339e: d500 bpl.n 133a2 <_vsnprintf+0x55e> 133a0: e6d9 b.n 13156 <_vsnprintf+0x312> unsigned int) : (flags & FLAGS_SHORT) ? (unsigned short int)va_arg(va, unsigned int) : va_arg(va, unsigned int); 133a2: 0659 lsls r1, r3, #25 133a4: d500 bpl.n 133a8 <_vsnprintf+0x564> 133a6: e6ec b.n 13182 <_vsnprintf+0x33e> 133a8: 0619 lsls r1, r3, #24 133aa: d400 bmi.n 133ae <_vsnprintf+0x56a> 133ac: e6ef b.n 1318e <_vsnprintf+0x34a> 133ae: 4649 mov r1, r9 133b0: 8809 ldrh r1, [r1, #0] 133b2: 2004 movs r0, #4 133b4: 4684 mov ip, r0 133b6: 44e1 add r9, ip idx = _ntoa_long(out, buffer, idx, maxlen, value, false, base, precision, width, flags); 133b8: 9305 str r3, [sp, #20] 133ba: 9604 str r6, [sp, #16] 133bc: 4653 mov r3, sl 133be: 9303 str r3, [sp, #12] 133c0: 9202 str r2, [sp, #8] 133c2: 2300 movs r3, #0 133c4: 9301 str r3, [sp, #4] 133c6: 9100 str r1, [sp, #0] 133c8: 9b0b ldr r3, [sp, #44] ; 0x2c 133ca: 003a movs r2, r7 133cc: 990c ldr r1, [sp, #48] ; 0x30 133ce: 980d ldr r0, [sp, #52] ; 0x34 133d0: 4e2b ldr r6, [pc, #172] ; (13480 <_vsnprintf+0x63c>) 133d2: 47b0 blx r6 133d4: 0007 movs r7, r0 format++; 133d6: 3401 adds r4, #1 break; 133d8: e549 b.n 12e6e <_vsnprintf+0x2a> if(flags & FLAGS_PRECISION) { 133da: 054a lsls r2, r1, #21 133dc: d440 bmi.n 13460 <_vsnprintf+0x61c> base = 10U; 133de: 220a movs r2, #10 133e0: e623 b.n 1302a <_vsnprintf+0x1e6> out((char)va_arg(va, int), buffer, idx++, maxlen); 133e2: 464b mov r3, r9 133e4: 3304 adds r3, #4 133e6: 930e str r3, [sp, #56] ; 0x38 133e8: 1c7b adds r3, r7, #1 133ea: 4698 mov r8, r3 133ec: 464b mov r3, r9 133ee: 7818 ldrb r0, [r3, #0] 133f0: 9b0b ldr r3, [sp, #44] ; 0x2c 133f2: 003a movs r2, r7 133f4: 990c ldr r1, [sp, #48] ; 0x30 133f6: 9d0d ldr r5, [sp, #52] ; 0x34 133f8: 47a8 blx r5 while(l++ < width) { 133fa: 2e01 cmp r6, #1 133fc: d800 bhi.n 13400 <_vsnprintf+0x5bc> 133fe: e6fc b.n 131fa <_vsnprintf+0x3b6> 13400: 19f3 adds r3, r6, r7 13402: 4642 mov r2, r8 13404: 46b0 mov r8, r6 13406: 46a1 mov r9, r4 13408: 9e0d ldr r6, [sp, #52] ; 0x34 1340a: 001d movs r5, r3 out(' ', buffer, idx++, maxlen); 1340c: 1c54 adds r4, r2, #1 1340e: 9b0b ldr r3, [sp, #44] ; 0x2c 13410: 990c ldr r1, [sp, #48] ; 0x30 13412: 2020 movs r0, #32 13414: 47b0 blx r6 13416: 0022 movs r2, r4 while(l++ < width) { 13418: 42a5 cmp r5, r4 1341a: d1f7 bne.n 1340c <_vsnprintf+0x5c8> 1341c: 464c mov r4, r9 1341e: 960d str r6, [sp, #52] ; 0x34 13420: 4646 mov r6, r8 13422: 19bf adds r7, r7, r6 out((char)va_arg(va, int), buffer, idx++, maxlen); 13424: 9b0e ldr r3, [sp, #56] ; 0x38 13426: 4699 mov r9, r3 13428: e6e5 b.n 131f6 <_vsnprintf+0x3b2> while(l++ < width) { 1342a: 003e movs r6, r7 1342c: e6d7 b.n 131de <_vsnprintf+0x39a> while(l++ < width) { 1342e: 930f str r3, [sp, #60] ; 0x3c 13430: 003a movs r2, r7 13432: e72f b.n 13294 <_vsnprintf+0x450> while((*p != 0) && (!(flags & FLAGS_PRECISION) || precision--)) { 13434: 003a movs r2, r7 13436: 2800 cmp r0, #0 13438: d000 beq.n 1343c <_vsnprintf+0x5f8> 1343a: e730 b.n 1329e <_vsnprintf+0x45a> while(l++ < width) { 1343c: 9a0f ldr r2, [sp, #60] ; 0x3c 1343e: 4296 cmp r6, r2 13440: d800 bhi.n 13444 <_vsnprintf+0x600> 13442: e752 b.n 132ea <_vsnprintf+0x4a6> 13444: 19f6 adds r6, r6, r7 13446: 1ab6 subs r6, r6, r2 13448: 003a movs r2, r7 1344a: 9d0d ldr r5, [sp, #52] ; 0x34 out(' ', buffer, idx++, maxlen); 1344c: 1c57 adds r7, r2, #1 1344e: 9b0b ldr r3, [sp, #44] ; 0x2c 13450: 990c ldr r1, [sp, #48] ; 0x30 13452: 2020 movs r0, #32 13454: 47a8 blx r5 13456: 003a movs r2, r7 while(l++ < width) { 13458: 42b7 cmp r7, r6 1345a: d1f7 bne.n 1344c <_vsnprintf+0x608> 1345c: 950d str r5, [sp, #52] ; 0x34 1345e: e744 b.n 132ea <_vsnprintf+0x4a6> flags &= ~FLAGS_ZEROPAD; 13460: 2311 movs r3, #17 13462: 4399 bics r1, r3 13464: 000b movs r3, r1 base = 10U; 13466: 220a movs r2, #10 13468: e5df b.n 1302a <_vsnprintf+0x1e6> flags &= ~FLAGS_ZEROPAD; 1346a: 2311 movs r3, #17 1346c: 4399 bics r1, r3 1346e: 000b movs r3, r1 base = 10U; 13470: 220a movs r2, #10 13472: e5da b.n 1302a <_vsnprintf+0x1e6> base = 16U; 13474: 2210 movs r2, #16 13476: e77f b.n 13378 <_vsnprintf+0x534> base = 8U; 13478: 2208 movs r2, #8 1347a: e77d b.n 13378 <_vsnprintf+0x534> base = 2U; 1347c: 2202 movs r2, #2 1347e: e77b b.n 13378 <_vsnprintf+0x534> 13480: 00012c9d .word 0x00012c9d 00013484 : va_end(va); return ret; } int lv_vsnprintf(char * buffer, size_t count, const char * format, va_list va) { 13484: b510 push {r4, lr} 13486: b082 sub sp, #8 return _vsnprintf(_out_buffer, buffer, count, format, va); 13488: 9300 str r3, [sp, #0] 1348a: 0013 movs r3, r2 1348c: 000a movs r2, r1 1348e: 0001 movs r1, r0 13490: 4802 ldr r0, [pc, #8] ; (1349c ) 13492: 4c03 ldr r4, [pc, #12] ; (134a0 ) 13494: 47a0 blx r4 } 13496: b002 add sp, #8 13498: bd10 pop {r4, pc} 1349a: 46c0 nop ; (mov r8, r8) 1349c: 00012ac1 .word 0x00012ac1 134a0: 00012e45 .word 0x00012e45 000134a4 <_lv_task_core_init>: /** * Init the lv_task module */ void _lv_task_core_init(void) { 134a4: b510 push {r4, lr} _lv_ll_init(&LV_GC_ROOT(_lv_task_ll), sizeof(lv_task_t)); 134a6: 2118 movs r1, #24 134a8: 4804 ldr r0, [pc, #16] ; (134bc <_lv_task_core_init+0x18>) 134aa: 4b05 ldr r3, [pc, #20] ; (134c0 <_lv_task_core_init+0x1c>) 134ac: 4798 blx r3 task_list_changed = false; 134ae: 2200 movs r2, #0 134b0: 4b04 ldr r3, [pc, #16] ; (134c4 <_lv_task_core_init+0x20>) 134b2: 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; 134b4: 3201 adds r2, #1 134b6: 4b04 ldr r3, [pc, #16] ; (134c8 <_lv_task_core_init+0x24>) 134b8: 701a strb r2, [r3, #0] } 134ba: bd10 pop {r4, pc} 134bc: 20004d08 .word 0x20004d08 134c0: 00011dd1 .word 0x00011dd1 134c4: 20004c3f .word 0x20004c3f 134c8: 20004c3c .word 0x20004c3c 000134cc : { 134cc: b570 push {r4, r5, r6, lr} 134ce: b082 sub sp, #8 tmp = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 134d0: 4839 ldr r0, [pc, #228] ; (135b8 ) 134d2: 4b3a ldr r3, [pc, #232] ; (135bc ) 134d4: 4798 blx r3 134d6: 1e04 subs r4, r0, #0 if(NULL == tmp) { 134d8: d01f beq.n 1351a tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 134da: 4d39 ldr r5, [pc, #228] ; (135c0 ) if(tmp->prio <= DEF_PRIO) { 134dc: 7d23 ldrb r3, [r4, #20] 134de: 075b lsls r3, r3, #29 134e0: 0f5b lsrs r3, r3, #29 134e2: 2b03 cmp r3, #3 134e4: dd31 ble.n 1354a tmp = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), tmp); 134e6: 0021 movs r1, r4 134e8: 4833 ldr r0, [pc, #204] ; (135b8 ) 134ea: 47a8 blx r5 134ec: 1e04 subs r4, r0, #0 } while(tmp != NULL); 134ee: d1f5 bne.n 134dc new_task = _lv_ll_ins_tail(&LV_GC_ROOT(_lv_task_ll)); 134f0: 4831 ldr r0, [pc, #196] ; (135b8 ) 134f2: 4b34 ldr r3, [pc, #208] ; (135c4 ) 134f4: 4798 blx r3 134f6: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 134f8: 4b33 ldr r3, [pc, #204] ; (135c8 ) 134fa: 4798 blx r3 134fc: 2800 cmp r0, #0 134fe: d158 bne.n 135b2 13500: 4b32 ldr r3, [pc, #200] ; (135cc ) 13502: 9300 str r3, [sp, #0] 13504: 22e5 movs r2, #229 ; 0xe5 13506: 4932 ldr r1, [pc, #200] ; (135d0 ) 13508: 3003 adds r0, #3 1350a: 4c32 ldr r4, [pc, #200] ; (135d4 ) 1350c: 47a0 blx r4 1350e: 002a movs r2, r5 13510: 2300 movs r3, #0 13512: 4831 ldr r0, [pc, #196] ; (135d8 ) 13514: 4931 ldr r1, [pc, #196] ; (135dc ) 13516: 4788 blx r1 13518: e7fe b.n 13518 new_task = _lv_ll_ins_head(&LV_GC_ROOT(_lv_task_ll)); 1351a: 4827 ldr r0, [pc, #156] ; (135b8 ) 1351c: 4b30 ldr r3, [pc, #192] ; (135e0 ) 1351e: 4798 blx r3 13520: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 13522: 4b29 ldr r3, [pc, #164] ; (135c8 ) 13524: 4798 blx r3 13526: 2800 cmp r0, #0 13528: d10c bne.n 13544 1352a: 4b28 ldr r3, [pc, #160] ; (135cc ) 1352c: 9300 str r3, [sp, #0] 1352e: 22d3 movs r2, #211 ; 0xd3 13530: 4927 ldr r1, [pc, #156] ; (135d0 ) 13532: 3003 adds r0, #3 13534: 4c27 ldr r4, [pc, #156] ; (135d4 ) 13536: 47a0 blx r4 13538: 002a movs r2, r5 1353a: 2300 movs r3, #0 1353c: 4826 ldr r0, [pc, #152] ; (135d8 ) 1353e: 4927 ldr r1, [pc, #156] ; (135dc ) 13540: 4788 blx r1 13542: e7fe b.n 13542 if(new_task == NULL) return NULL; 13544: 2d00 cmp r5, #0 13546: d10d bne.n 13564 13548: e023 b.n 13592 new_task = _lv_ll_ins_prev(&LV_GC_ROOT(_lv_task_ll), tmp); 1354a: 0021 movs r1, r4 1354c: 481a ldr r0, [pc, #104] ; (135b8 ) 1354e: 4b25 ldr r3, [pc, #148] ; (135e4 ) 13550: 4798 blx r3 13552: 0005 movs r5, r0 LV_ASSERT_MEM(new_task); 13554: 4b1c ldr r3, [pc, #112] ; (135c8 ) 13556: 4798 blx r3 13558: 2800 cmp r0, #0 1355a: d01d beq.n 13598 if(new_task == NULL) return NULL; 1355c: 2d00 cmp r5, #0 1355e: d018 beq.n 13592 if(tmp == NULL) { 13560: 2c00 cmp r4, #0 13562: d0c5 beq.n 134f0 task_list_changed = true; 13564: 2401 movs r4, #1 13566: 4b20 ldr r3, [pc, #128] ; (135e8 ) 13568: 701c strb r4, [r3, #0] new_task->period = DEF_PERIOD; 1356a: 23fa movs r3, #250 ; 0xfa 1356c: 005b lsls r3, r3, #1 1356e: 602b str r3, [r5, #0] new_task->task_cb = NULL; 13570: 2600 movs r6, #0 13572: 60ae str r6, [r5, #8] new_task->prio = DEF_PRIO; 13574: 7d2b ldrb r3, [r5, #20] 13576: 2207 movs r2, #7 13578: 4393 bics r3, r2 1357a: 2203 movs r2, #3 1357c: 4313 orrs r3, r2 1357e: 752b strb r3, [r5, #20] new_task->repeat_count = -1; 13580: 2301 movs r3, #1 13582: 425b negs r3, r3 13584: 612b str r3, [r5, #16] new_task->last_run = lv_tick_get(); 13586: 4b19 ldr r3, [pc, #100] ; (135ec ) 13588: 4798 blx r3 1358a: 6068 str r0, [r5, #4] new_task->user_data = NULL; 1358c: 60ee str r6, [r5, #12] task_created = true; 1358e: 4b18 ldr r3, [pc, #96] ; (135f0 ) 13590: 701c strb r4, [r3, #0] } 13592: 0028 movs r0, r5 13594: b002 add sp, #8 13596: bd70 pop {r4, r5, r6, pc} LV_ASSERT_MEM(new_task); 13598: 4b0c ldr r3, [pc, #48] ; (135cc ) 1359a: 9300 str r3, [sp, #0] 1359c: 22db movs r2, #219 ; 0xdb 1359e: 490c ldr r1, [pc, #48] ; (135d0 ) 135a0: 3003 adds r0, #3 135a2: 4c0c ldr r4, [pc, #48] ; (135d4 ) 135a4: 47a0 blx r4 135a6: 002a movs r2, r5 135a8: 2300 movs r3, #0 135aa: 480b ldr r0, [pc, #44] ; (135d8 ) 135ac: 490b ldr r1, [pc, #44] ; (135dc ) 135ae: 4788 blx r1 135b0: e7fe b.n 135b0 if(new_task == NULL) return NULL; 135b2: 2d00 cmp r5, #0 135b4: d1d6 bne.n 13564 135b6: e7ec b.n 13592 135b8: 20004d08 .word 0x20004d08 135bc: 00011e85 .word 0x00011e85 135c0: 00011e9d .word 0x00011e9d 135c4: 00011e35 .word 0x00011e35 135c8: 000017ad .word 0x000017ad 135cc: 0002ac10 .word 0x0002ac10 135d0: 0002ac38 .word 0x0002ac38 135d4: 00012159 .word 0x00012159 135d8: 00025854 .word 0x00025854 135dc: 000017b5 .word 0x000017b5 135e0: 00011de5 .word 0x00011de5 135e4: 00011eed .word 0x00011eed 135e8: 20004c3f .word 0x20004c3f 135ec: 00010ef9 .word 0x00010ef9 135f0: 20004c3d .word 0x20004c3d 000135f4 : { 135f4: b510 push {r4, lr} 135f6: 0004 movs r4, r0 _lv_ll_remove(&LV_GC_ROOT(_lv_task_ll), task); 135f8: 0001 movs r1, r0 135fa: 4809 ldr r0, [pc, #36] ; (13620 ) 135fc: 4b09 ldr r3, [pc, #36] ; (13624 ) 135fe: 4798 blx r3 task_list_changed = true; 13600: 2201 movs r2, #1 13602: 4b09 ldr r3, [pc, #36] ; (13628 ) 13604: 701a strb r2, [r3, #0] lv_mem_free(task); 13606: 0020 movs r0, r4 13608: 4b08 ldr r3, [pc, #32] ; (1362c ) 1360a: 4798 blx r3 if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 1360c: 4b08 ldr r3, [pc, #32] ; (13630 ) 1360e: 681b ldr r3, [r3, #0] 13610: 429c cmp r4, r3 13612: d000 beq.n 13616 } 13614: bd10 pop {r4, pc} if(LV_GC_ROOT(_lv_task_act) == task) task_deleted = true; /*The active task was deleted*/ 13616: 2201 movs r2, #1 13618: 4b06 ldr r3, [pc, #24] ; (13634 ) 1361a: 701a strb r2, [r3, #0] } 1361c: e7fa b.n 13614 1361e: 46c0 nop ; (mov r8, r8) 13620: 20004d08 .word 0x20004d08 13624: 00011f6d .word 0x00011f6d 13628: 20004c3f .word 0x20004c3f 1362c: 000123c9 .word 0x000123c9 13630: 20004dd4 .word 0x20004dd4 13634: 20004c3e .word 0x20004c3e 00013638 : * 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) { 13638: b510 push {r4, lr} 1363a: 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); 1363c: 6840 ldr r0, [r0, #4] 1363e: 4b13 ldr r3, [pc, #76] ; (1368c ) 13640: 4798 blx r3 bool exec = false; 13642: 2300 movs r3, #0 if(elp >= task->period) 13644: 6822 ldr r2, [r4, #0] 13646: 4290 cmp r0, r2 13648: d201 bcs.n 1364e } 1364a: 0018 movs r0, r3 1364c: bd10 pop {r4, pc} task->last_run = lv_tick_get(); 1364e: 4b10 ldr r3, [pc, #64] ; (13690 ) 13650: 4798 blx r3 13652: 6060 str r0, [r4, #4] task_deleted = false; 13654: 2300 movs r3, #0 13656: 4a0f ldr r2, [pc, #60] ; (13694 ) 13658: 7013 strb r3, [r2, #0] task_created = false; 1365a: 4a0f ldr r2, [pc, #60] ; (13698 ) 1365c: 7013 strb r3, [r2, #0] if(task->task_cb) task->task_cb(task); 1365e: 68a3 ldr r3, [r4, #8] 13660: 2b00 cmp r3, #0 13662: d005 beq.n 13670 13664: 0020 movs r0, r4 13666: 4798 blx r3 if(task_deleted == false) { /*The task might be deleted by itself as well*/ 13668: 4b0a ldr r3, [pc, #40] ; (13694 ) 1366a: 781b ldrb r3, [r3, #0] 1366c: 2b00 cmp r3, #0 1366e: d1ec bne.n 1364a if(task->repeat_count > 0) { 13670: 6923 ldr r3, [r4, #16] 13672: 2b00 cmp r3, #0 13674: dd01 ble.n 1367a task->repeat_count--; 13676: 3b01 subs r3, #1 13678: 6123 str r3, [r4, #16] exec = true; 1367a: 2301 movs r3, #1 if(task->repeat_count == 0) { 1367c: 6922 ldr r2, [r4, #16] 1367e: 2a00 cmp r2, #0 13680: d1e3 bne.n 1364a lv_task_del(task); 13682: 0020 movs r0, r4 13684: 4b05 ldr r3, [pc, #20] ; (1369c ) 13686: 4798 blx r3 exec = true; 13688: 2301 movs r3, #1 1368a: e7de b.n 1364a 1368c: 00010f15 .word 0x00010f15 13690: 00010ef9 .word 0x00010ef9 13694: 20004c3e .word 0x20004c3e 13698: 20004c3d .word 0x20004c3d 1369c: 000135f5 .word 0x000135f5 000136a0 : { 136a0: b5f0 push {r4, r5, r6, r7, lr} 136a2: 46de mov lr, fp 136a4: 4657 mov r7, sl 136a6: 464e mov r6, r9 136a8: b5c0 push {r6, r7, lr} if(already_running) return 1; 136aa: 4b66 ldr r3, [pc, #408] ; (13844 ) 136ac: 781b ldrb r3, [r3, #0] 136ae: 2001 movs r0, #1 136b0: 2b00 cmp r3, #0 136b2: d109 bne.n 136c8 already_running = true; 136b4: 2201 movs r2, #1 136b6: 4b63 ldr r3, [pc, #396] ; (13844 ) 136b8: 701a strb r2, [r3, #0] if(lv_task_run == false) { 136ba: 4b63 ldr r3, [pc, #396] ; (13848 ) 136bc: 781b ldrb r3, [r3, #0] 136be: 2b00 cmp r3, #0 136c0: d107 bne.n 136d2 already_running = false; /*Release mutex*/ 136c2: 2200 movs r2, #0 136c4: 4b5f ldr r3, [pc, #380] ; (13844 ) 136c6: 701a strb r2, [r3, #0] } 136c8: bc1c pop {r2, r3, r4} 136ca: 4691 mov r9, r2 136cc: 469a mov sl, r3 136ce: 46a3 mov fp, r4 136d0: bdf0 pop {r4, r5, r6, r7, pc} handler_start = lv_tick_get(); 136d2: 4b5e ldr r3, [pc, #376] ; (1384c ) 136d4: 4798 blx r3 136d6: 4b5e ldr r3, [pc, #376] ; (13850 ) 136d8: 6018 str r0, [r3, #0] lv_task_t * task_interrupter = NULL; 136da: 2400 movs r4, #0 task_deleted = false; 136dc: 4b5d ldr r3, [pc, #372] ; (13854 ) 136de: 469b mov fp, r3 136e0: 2300 movs r3, #0 136e2: 4699 mov r9, r3 task_created = false; 136e4: 4b5c ldr r3, [pc, #368] ; (13858 ) 136e6: 469a mov sl, r3 136e8: e084 b.n 137f4 LV_GC_ROOT(_lv_task_act) = next; 136ea: 4b5c ldr r3, [pc, #368] ; (1385c ) 136ec: 601d str r5, [r3, #0] task_interrupter = NULL; /*From this point only task after the interrupter comes, so 136ee: 2400 movs r4, #0 continue; /*Load the next task*/ 136f0: e00f b.n 13712 lv_task_exec(LV_GC_ROOT(_lv_task_act)); 136f2: 4b5b ldr r3, [pc, #364] ; (13860 ) 136f4: 4798 blx r3 if(task_created || task_deleted) { 136f6: 4b58 ldr r3, [pc, #352] ; (13858 ) 136f8: 781b ldrb r3, [r3, #0] 136fa: 2b00 cmp r3, #0 136fc: d12f bne.n 1375e 136fe: 4b55 ldr r3, [pc, #340] ; (13854 ) 13700: 781b ldrb r3, [r3, #0] 13702: 2b00 cmp r3, #0 13704: d12b bne.n 1375e if(task_list_changed) { 13706: 4b57 ldr r3, [pc, #348] ; (13864 ) 13708: 781b ldrb r3, [r3, #0] 1370a: 2b00 cmp r3, #0 1370c: d16e bne.n 137ec LV_GC_ROOT(_lv_task_act) = next; /*Load the next task*/ 1370e: 4b53 ldr r3, [pc, #332] ; (1385c ) 13710: 601d str r5, [r3, #0] while(LV_GC_ROOT(_lv_task_act)) { 13712: 6831 ldr r1, [r6, #0] 13714: 2900 cmp r1, #0 13716: d022 beq.n 1375e next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 13718: 4853 ldr r0, [pc, #332] ; (13868 ) 1371a: 47b8 blx r7 1371c: 0005 movs r5, r0 if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_OFF) { 1371e: 4b4f ldr r3, [pc, #316] ; (1385c ) 13720: 6818 ldr r0, [r3, #0] 13722: 7d02 ldrb r2, [r0, #20] 13724: 2307 movs r3, #7 13726: 4013 ands r3, r2 13728: d019 beq.n 1375e if(LV_GC_ROOT(_lv_task_act) == task_interrupter) { 1372a: 4284 cmp r4, r0 1372c: d0dd beq.n 136ea if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio == LV_TASK_PRIO_HIGHEST) { 1372e: 2b05 cmp r3, #5 13730: d0df beq.n 136f2 else if(task_interrupter) { 13732: 2c00 cmp r4, #0 13734: d04b beq.n 137ce if(((lv_task_t *)LV_GC_ROOT(_lv_task_act))->prio > task_interrupter->prio) { 13736: 7d02 ldrb r2, [r0, #20] 13738: 0752 lsls r2, r2, #29 1373a: 0f52 lsrs r2, r2, #29 1373c: 7d23 ldrb r3, [r4, #20] 1373e: 075b lsls r3, r3, #29 13740: 0f5b lsrs r3, r3, #29 13742: 429a cmp r2, r3 13744: ddd7 ble.n 136f6 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 13746: 4b46 ldr r3, [pc, #280] ; (13860 ) 13748: 4798 blx r3 1374a: 2800 cmp r0, #0 1374c: d0d3 beq.n 136f6 if(!task_created && !task_deleted) { 1374e: 4b42 ldr r3, [pc, #264] ; (13858 ) 13750: 781b ldrb r3, [r3, #0] 13752: 2b00 cmp r3, #0 13754: d103 bne.n 1375e 13756: 4b3f ldr r3, [pc, #252] ; (13854 ) 13758: 781b ldrb r3, [r3, #0] 1375a: 2b00 cmp r3, #0 1375c: d034 beq.n 137c8 busy_time += lv_tick_elaps(handler_start); 1375e: 4b3c ldr r3, [pc, #240] ; (13850 ) 13760: 6818 ldr r0, [r3, #0] 13762: 4c42 ldr r4, [pc, #264] ; (1386c ) 13764: 47a0 blx r4 13766: 4b42 ldr r3, [pc, #264] ; (13870 ) 13768: 681a ldr r2, [r3, #0] 1376a: 4694 mov ip, r2 1376c: 4460 add r0, ip 1376e: 6018 str r0, [r3, #0] uint32_t idle_period_time = lv_tick_elaps(idle_period_start); 13770: 4b40 ldr r3, [pc, #256] ; (13874 ) 13772: 6818 ldr r0, [r3, #0] 13774: 47a0 blx r4 if(idle_period_time >= IDLE_MEAS_PERIOD) { 13776: 23f4 movs r3, #244 ; 0xf4 13778: 33ff adds r3, #255 ; 0xff 1377a: 4298 cmp r0, r3 1377c: d917 bls.n 137ae idle_last = (uint32_t)((uint32_t)busy_time * 100) / IDLE_MEAS_PERIOD; /*Calculate the busy percentage*/ 1377e: 4b3c ldr r3, [pc, #240] ; (13870 ) 13780: 6818 ldr r0, [r3, #0] 13782: 2364 movs r3, #100 ; 0x64 13784: 4358 muls r0, r3 13786: 21fa movs r1, #250 ; 0xfa 13788: 0049 lsls r1, r1, #1 1378a: 4b3b ldr r3, [pc, #236] ; (13878 ) 1378c: 4798 blx r3 1378e: b2c0 uxtb r0, r0 idle_last = idle_last > 100 ? 0 : 100 - idle_last; /*But we need idle time*/ 13790: 2300 movs r3, #0 13792: 2864 cmp r0, #100 ; 0x64 13794: d802 bhi.n 1379c 13796: 2364 movs r3, #100 ; 0x64 13798: 1a1b subs r3, r3, r0 1379a: b2db uxtb r3, r3 1379c: 4a37 ldr r2, [pc, #220] ; (1387c ) 1379e: 7013 strb r3, [r2, #0] busy_time = 0; 137a0: 2200 movs r2, #0 137a2: 4b33 ldr r3, [pc, #204] ; (13870 ) 137a4: 601a str r2, [r3, #0] idle_period_start = lv_tick_get(); 137a6: 4b29 ldr r3, [pc, #164] ; (1384c ) 137a8: 4798 blx r3 137aa: 4b32 ldr r3, [pc, #200] ; (13874 ) 137ac: 6018 str r0, [r3, #0] time_till_next = LV_NO_TASK_READY; 137ae: 2201 movs r2, #1 137b0: 4252 negs r2, r2 137b2: 4b33 ldr r3, [pc, #204] ; (13880 ) 137b4: 601a str r2, [r3, #0] next = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 137b6: 482c ldr r0, [pc, #176] ; (13868 ) 137b8: 4b32 ldr r3, [pc, #200] ; (13884 ) 137ba: 4798 blx r3 137bc: 1e04 subs r4, r0, #0 while(next) { 137be: d03b beq.n 13838 uint32_t elp = lv_tick_elaps(task->last_run); 137c0: 4d2a ldr r5, [pc, #168] ; (1386c ) if(delay < time_till_next) 137c2: 4f2f ldr r7, [pc, #188] ; (13880 ) time_till_next = delay; 137c4: 003e movs r6, r7 137c6: e028 b.n 1381a task_interrupter = LV_GC_ROOT(_lv_task_act); 137c8: 4b24 ldr r3, [pc, #144] ; (1385c ) 137ca: 681c ldr r4, [r3, #0] break; 137cc: e012 b.n 137f4 if(lv_task_exec(LV_GC_ROOT(_lv_task_act))) { 137ce: 4b24 ldr r3, [pc, #144] ; (13860 ) 137d0: 4798 blx r3 137d2: 2800 cmp r0, #0 137d4: d08f beq.n 136f6 if(!task_created && !task_deleted) { 137d6: 4b20 ldr r3, [pc, #128] ; (13858 ) 137d8: 781b ldrb r3, [r3, #0] 137da: 2b00 cmp r3, #0 137dc: d1bf bne.n 1375e 137de: 4b1d ldr r3, [pc, #116] ; (13854 ) 137e0: 781b ldrb r3, [r3, #0] 137e2: 2b00 cmp r3, #0 137e4: d1bb bne.n 1375e task_interrupter = LV_GC_ROOT(_lv_task_act); /*Check all tasks again from the highest priority */ 137e6: 4b1d ldr r3, [pc, #116] ; (1385c ) 137e8: 681c ldr r4, [r3, #0] break; 137ea: e003 b.n 137f4 task_list_changed = false; 137ec: 4b1d ldr r3, [pc, #116] ; (13864 ) 137ee: 2200 movs r2, #0 137f0: 701a strb r2, [r3, #0] task_interrupter = NULL; 137f2: 2400 movs r4, #0 task_deleted = false; 137f4: 465b mov r3, fp 137f6: 464a mov r2, r9 137f8: 701a strb r2, [r3, #0] task_created = false; 137fa: 4653 mov r3, sl 137fc: 701a strb r2, [r3, #0] LV_GC_ROOT(_lv_task_act) = _lv_ll_get_head(&LV_GC_ROOT(_lv_task_ll)); 137fe: 481a ldr r0, [pc, #104] ; (13868 ) 13800: 4b20 ldr r3, [pc, #128] ; (13884 ) 13802: 4798 blx r3 13804: 4b15 ldr r3, [pc, #84] ; (1385c ) 13806: 6018 str r0, [r3, #0] while(LV_GC_ROOT(_lv_task_act)) { 13808: 001e movs r6, r3 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), LV_GC_ROOT(_lv_task_act)); 1380a: 4f1f ldr r7, [pc, #124] ; (13888 ) while(LV_GC_ROOT(_lv_task_act)) { 1380c: e781 b.n 13712 next = _lv_ll_get_next(&LV_GC_ROOT(_lv_task_ll), next); /*Find the next task*/ 1380e: 0021 movs r1, r4 13810: 4815 ldr r0, [pc, #84] ; (13868 ) 13812: 4b1d ldr r3, [pc, #116] ; (13888 ) 13814: 4798 blx r3 13816: 1e04 subs r4, r0, #0 while(next) { 13818: d00e beq.n 13838 if(next->prio != LV_TASK_PRIO_OFF) { 1381a: 7d23 ldrb r3, [r4, #20] 1381c: 075b lsls r3, r3, #29 1381e: d0f6 beq.n 1380e uint32_t elp = lv_tick_elaps(task->last_run); 13820: 6860 ldr r0, [r4, #4] 13822: 47a8 blx r5 if(elp >= task->period) 13824: 6822 ldr r2, [r4, #0] return 0; 13826: 2300 movs r3, #0 if(elp >= task->period) 13828: 4290 cmp r0, r2 1382a: d200 bcs.n 1382e return task->period - elp; 1382c: 1a13 subs r3, r2, r0 if(delay < time_till_next) 1382e: 683a ldr r2, [r7, #0] 13830: 429a cmp r2, r3 13832: d9ec bls.n 1380e time_till_next = delay; 13834: 6033 str r3, [r6, #0] 13836: e7ea b.n 1380e already_running = false; /*Release the mutex*/ 13838: 2200 movs r2, #0 1383a: 4b02 ldr r3, [pc, #8] ; (13844 ) 1383c: 701a strb r2, [r3, #0] return time_till_next; 1383e: 4b10 ldr r3, [pc, #64] ; (13880 ) 13840: 6818 ldr r0, [r3, #0] 13842: e741 b.n 136c8 13844: 20004c28 .word 0x20004c28 13848: 20004c3c .word 0x20004c3c 1384c: 00010ef9 .word 0x00010ef9 13850: 20004c30 .word 0x20004c30 13854: 20004c3e .word 0x20004c3e 13858: 20004c3d .word 0x20004c3d 1385c: 20004dd4 .word 0x20004dd4 13860: 00013639 .word 0x00013639 13864: 20004c3f .word 0x20004c3f 13868: 20004d08 .word 0x20004d08 1386c: 00010f15 .word 0x00010f15 13870: 20004c2c .word 0x20004c2c 13874: 20004c38 .word 0x20004c38 13878: 0001c0a5 .word 0x0001c0a5 1387c: 20004c34 .word 0x20004c34 13880: 20004c40 .word 0x20004c40 13884: 00011e85 .word 0x00011e85 13888: 00011e9d .word 0x00011e9d 0001388c : { 1388c: b5f0 push {r4, r5, r6, r7, lr} 1388e: 46ce mov lr, r9 13890: b500 push {lr} 13892: 0005 movs r5, r0 13894: 4689 mov r9, r1 if(task->prio == prio) return; 13896: 000e movs r6, r1 13898: 7d03 ldrb r3, [r0, #20] 1389a: 075b lsls r3, r3, #29 1389c: 0f5b lsrs r3, r3, #29 1389e: 428b cmp r3, r1 138a0: d028 beq.n 138f4 _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 138a2: 4819 ldr r0, [pc, #100] ; (13908 ) 138a4: 4b19 ldr r3, [pc, #100] ; (1390c ) 138a6: 4798 blx r3 138a8: 1e04 subs r4, r0, #0 138aa: d026 beq.n 138fa if(i->prio <= prio) { 138ac: 7d03 ldrb r3, [r0, #20] 138ae: 075b lsls r3, r3, #29 138b0: 0f5b lsrs r3, r3, #29 138b2: 429e cmp r6, r3 138b4: da0a bge.n 138cc _LV_LL_READ(LV_GC_ROOT(_lv_task_ll), i) { 138b6: 4f16 ldr r7, [pc, #88] ; (13910 ) 138b8: 0021 movs r1, r4 138ba: 4813 ldr r0, [pc, #76] ; (13908 ) 138bc: 47b8 blx r7 138be: 1e04 subs r4, r0, #0 138c0: d01b beq.n 138fa if(i->prio <= prio) { 138c2: 7d23 ldrb r3, [r4, #20] 138c4: 075b lsls r3, r3, #29 138c6: 0f5b lsrs r3, r3, #29 138c8: 429e cmp r6, r3 138ca: dbf5 blt.n 138b8 if(i != task) _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, i); 138cc: 42a5 cmp r5, r4 138ce: d006 beq.n 138de 138d0: 0022 movs r2, r4 138d2: 0029 movs r1, r5 138d4: 480c ldr r0, [pc, #48] ; (13908 ) 138d6: 4b0f ldr r3, [pc, #60] ; (13914 ) 138d8: 4798 blx r3 if(i == NULL) { 138da: 2c00 cmp r4, #0 138dc: d00d beq.n 138fa task_list_changed = true; 138de: 2201 movs r2, #1 138e0: 4b0d ldr r3, [pc, #52] ; (13918 ) 138e2: 701a strb r2, [r3, #0] task->prio = prio; 138e4: 3206 adds r2, #6 138e6: 464b mov r3, r9 138e8: 401a ands r2, r3 138ea: 7d2b ldrb r3, [r5, #20] 138ec: 2107 movs r1, #7 138ee: 438b bics r3, r1 138f0: 4313 orrs r3, r2 138f2: 752b strb r3, [r5, #20] } 138f4: bc04 pop {r2} 138f6: 4691 mov r9, r2 138f8: bdf0 pop {r4, r5, r6, r7, pc} _lv_ll_move_before(&LV_GC_ROOT(_lv_task_ll), task, NULL); 138fa: 2200 movs r2, #0 138fc: 0029 movs r1, r5 138fe: 4802 ldr r0, [pc, #8] ; (13908 ) 13900: 4b04 ldr r3, [pc, #16] ; (13914 ) 13902: 4798 blx r3 13904: e7eb b.n 138de 13906: 46c0 nop ; (mov r8, r8) 13908: 20004d08 .word 0x20004d08 1390c: 00011e85 .word 0x00011e85 13910: 00011e9d .word 0x00011e9d 13914: 00012079 .word 0x00012079 13918: 20004c3f .word 0x20004c3f 0001391c : { 1391c: b5f0 push {r4, r5, r6, r7, lr} 1391e: b085 sub sp, #20 13920: 0006 movs r6, r0 13922: 000f movs r7, r1 13924: 9203 str r2, [sp, #12] 13926: 001d movs r5, r3 lv_task_t * new_task = lv_task_create_basic(); 13928: 4b10 ldr r3, [pc, #64] ; (1396c ) 1392a: 4798 blx r3 1392c: 0004 movs r4, r0 LV_ASSERT_MEM(new_task); 1392e: 4b10 ldr r3, [pc, #64] ; (13970 ) 13930: 4798 blx r3 13932: 2800 cmp r0, #0 13934: d00b beq.n 1394e if(new_task == NULL) return NULL; 13936: 2c00 cmp r4, #0 13938: d006 beq.n 13948 task->task_cb = task_cb; 1393a: 60a6 str r6, [r4, #8] task->period = period; 1393c: 6027 str r7, [r4, #0] lv_task_set_prio(new_task, prio); 1393e: 9903 ldr r1, [sp, #12] 13940: 0020 movs r0, r4 13942: 4b0c ldr r3, [pc, #48] ; (13974 ) 13944: 4798 blx r3 new_task->user_data = user_data; 13946: 60e5 str r5, [r4, #12] } 13948: 0020 movs r0, r4 1394a: b005 add sp, #20 1394c: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_MEM(new_task); 1394e: 4b0a ldr r3, [pc, #40] ; (13978 ) 13950: 9300 str r3, [sp, #0] 13952: 2283 movs r2, #131 ; 0x83 13954: 0052 lsls r2, r2, #1 13956: 4909 ldr r1, [pc, #36] ; (1397c ) 13958: 3003 adds r0, #3 1395a: 4d09 ldr r5, [pc, #36] ; (13980 ) 1395c: 47a8 blx r5 1395e: 0022 movs r2, r4 13960: 2300 movs r3, #0 13962: 4808 ldr r0, [pc, #32] ; (13984 ) 13964: 4908 ldr r1, [pc, #32] ; (13988 ) 13966: 4788 blx r1 13968: e7fe b.n 13968 1396a: 46c0 nop ; (mov r8, r8) 1396c: 000134cd .word 0x000134cd 13970: 000017ad .word 0x000017ad 13974: 0001388d .word 0x0001388d 13978: 0002ac28 .word 0x0002ac28 1397c: 0002ac38 .word 0x0002ac38 13980: 00012159 .word 0x00012159 13984: 00025854 .word 0x00025854 13988: 000017b5 .word 0x000017b5 0001398c : { 1398c: b510 push {r4, lr} 1398e: 0004 movs r4, r0 task->last_run = lv_tick_get() - task->period - 1; 13990: 4b03 ldr r3, [pc, #12] ; (139a0 ) 13992: 4798 blx r3 13994: 6823 ldr r3, [r4, #0] 13996: 43db mvns r3, r3 13998: 1818 adds r0, r3, r0 1399a: 6060 str r0, [r4, #4] } 1399c: bd10 pop {r4, pc} 1399e: 46c0 nop ; (mov r8, r8) 139a0: 00010ef9 .word 0x00010ef9 000139a4 : * @param str pointer to a character in a string * @return length of the UTF-8 character (1,2,3 or 4). O on invalid code */ static uint8_t lv_txt_utf8_size(const char * str) { if((str[0] & 0x80) == 0) 139a4: 7803 ldrb r3, [r0, #0] 139a6: b25a sxtb r2, r3 return 1; 139a8: 2001 movs r0, #1 if((str[0] & 0x80) == 0) 139aa: 2a00 cmp r2, #0 139ac: db00 blt.n 139b0 else if((str[0] & 0xF0) == 0xE0) return 3; else if((str[0] & 0xF8) == 0xF0) return 4; return 0; /*If the char was invalid tell it's 1 byte long*/ } 139ae: 4770 bx lr else if((str[0] & 0xE0) == 0xC0) 139b0: 221f movs r2, #31 139b2: 0019 movs r1, r3 139b4: 4391 bics r1, r2 return 2; 139b6: 3001 adds r0, #1 else if((str[0] & 0xE0) == 0xC0) 139b8: 29c0 cmp r1, #192 ; 0xc0 139ba: d0f8 beq.n 139ae else if((str[0] & 0xF0) == 0xE0) 139bc: 220f movs r2, #15 139be: 0019 movs r1, r3 139c0: 4391 bics r1, r2 return 3; 139c2: 3001 adds r0, #1 else if((str[0] & 0xF0) == 0xE0) 139c4: 29e0 cmp r1, #224 ; 0xe0 139c6: d0f2 beq.n 139ae else if((str[0] & 0xF8) == 0xF0) 139c8: 2207 movs r2, #7 139ca: 4393 bics r3, r2 return 0; /*If the char was invalid tell it's 1 byte long*/ 139cc: 3bf0 subs r3, #240 ; 0xf0 139ce: 4258 negs r0, r3 139d0: 4158 adcs r0, r3 139d2: 0080 lsls r0, r0, #2 139d4: e7eb b.n 139ae 000139d6 : * 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) { 139d6: b5f0 push {r4, r5, r6, r7, lr} 139d8: b083 sub sp, #12 * */ uint32_t result = 0; /*Dummy 'i' pointer is required*/ uint32_t i_tmp = 0; 139da: 2300 movs r3, #0 139dc: 9301 str r3, [sp, #4] if(i == NULL) i = &i_tmp; 139de: 2900 cmp r1, #0 139e0: d00a beq.n 139f8 /*Normal ASCII*/ if((txt[*i] & 0x80) == 0) { 139e2: 680b ldr r3, [r1, #0] 139e4: 5cc2 ldrb r2, [r0, r3] 139e6: b254 sxtb r4, r2 139e8: 2c00 cmp r4, #0 139ea: db07 blt.n 139fc result = txt[*i]; 139ec: 0014 movs r4, r2 (*i)++; 139ee: 3301 adds r3, #1 139f0: 600b str r3, [r1, #0] else { (*i)++; /*Not UTF-8 char. Go the next.*/ } } return result; } 139f2: 0020 movs r0, r4 139f4: b003 add sp, #12 139f6: bdf0 pop {r4, r5, r6, r7, pc} if(i == NULL) i = &i_tmp; 139f8: a901 add r1, sp, #4 139fa: e7f2 b.n 139e2 if((txt[*i] & 0xE0) == 0xC0) { 139fc: 241f movs r4, #31 139fe: 0015 movs r5, r2 13a00: 43a5 bics r5, r4 13a02: 2dc0 cmp r5, #192 ; 0xc0 13a04: d00d beq.n 13a22 else if((txt[*i] & 0xF0) == 0xE0) { 13a06: 240f movs r4, #15 13a08: 0015 movs r5, r2 13a0a: 43a5 bics r5, r4 13a0c: 2de0 cmp r5, #224 ; 0xe0 13a0e: d01c beq.n 13a4a else if((txt[*i] & 0xF8) == 0xF0) { 13a10: 2407 movs r4, #7 13a12: 0015 movs r5, r2 13a14: 43a5 bics r5, r4 13a16: 2df0 cmp r5, #240 ; 0xf0 13a18: d036 beq.n 13a88 (*i)++; /*Not UTF-8 char. Go the next.*/ 13a1a: 3301 adds r3, #1 13a1c: 600b str r3, [r1, #0] uint32_t result = 0; 13a1e: 2400 movs r4, #0 13a20: e7e7 b.n 139f2 (*i)++; 13a22: 1c5c adds r4, r3, #1 13a24: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13a26: 5d05 ldrb r5, [r0, r4] 13a28: 203f movs r0, #63 ; 0x3f 13a2a: 002c movs r4, r5 13a2c: 4384 bics r4, r0 13a2e: 0020 movs r0, r4 13a30: 2400 movs r4, #0 13a32: 2880 cmp r0, #128 ; 0x80 13a34: d1dd bne.n 139f2 result = (uint32_t)(txt[*i] & 0x1F) << 6; 13a36: 0192 lsls r2, r2, #6 13a38: 24f8 movs r4, #248 ; 0xf8 13a3a: 00e4 lsls r4, r4, #3 13a3c: 4022 ands r2, r4 result += (txt[*i] & 0x3F); 13a3e: 243f movs r4, #63 ; 0x3f 13a40: 402c ands r4, r5 13a42: 18a4 adds r4, r4, r2 (*i)++; 13a44: 3302 adds r3, #2 13a46: 600b str r3, [r1, #0] 13a48: e7d3 b.n 139f2 (*i)++; 13a4a: 1c5c adds r4, r3, #1 13a4c: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13a4e: 5d05 ldrb r5, [r0, r4] 13a50: 243f movs r4, #63 ; 0x3f 13a52: 002e movs r6, r5 13a54: 43a6 bics r6, r4 13a56: 2400 movs r4, #0 13a58: 2e80 cmp r6, #128 ; 0x80 13a5a: d1ca bne.n 139f2 (*i)++; 13a5c: 1c9c adds r4, r3, #2 13a5e: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13a60: 5d00 ldrb r0, [r0, r4] 13a62: 243f movs r4, #63 ; 0x3f 13a64: 0006 movs r6, r0 13a66: 43a6 bics r6, r4 13a68: 2400 movs r4, #0 13a6a: 2e80 cmp r6, #128 ; 0x80 13a6c: d1c1 bne.n 139f2 result = (uint32_t)(txt[*i] & 0x0F) << 12; 13a6e: 0714 lsls r4, r2, #28 13a70: 0c24 lsrs r4, r4, #16 result += (txt[*i] & 0x3F); 13a72: 223f movs r2, #63 ; 0x3f 13a74: 4010 ands r0, r2 13a76: 1824 adds r4, r4, r0 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13a78: 01ad lsls r5, r5, #6 13a7a: 20fc movs r0, #252 ; 0xfc 13a7c: 0100 lsls r0, r0, #4 13a7e: 4005 ands r5, r0 result += (txt[*i] & 0x3F); 13a80: 192c adds r4, r5, r4 (*i)++; 13a82: 3303 adds r3, #3 13a84: 600b str r3, [r1, #0] 13a86: e7b4 b.n 139f2 (*i)++; 13a88: 1c5c adds r4, r3, #1 13a8a: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13a8c: 5d05 ldrb r5, [r0, r4] 13a8e: 243f movs r4, #63 ; 0x3f 13a90: 002e movs r6, r5 13a92: 43a6 bics r6, r4 13a94: 2400 movs r4, #0 13a96: 2e80 cmp r6, #128 ; 0x80 13a98: d1ab bne.n 139f2 (*i)++; 13a9a: 1c9c adds r4, r3, #2 13a9c: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13a9e: 5d06 ldrb r6, [r0, r4] 13aa0: 243f movs r4, #63 ; 0x3f 13aa2: 0037 movs r7, r6 13aa4: 43a7 bics r7, r4 13aa6: 2400 movs r4, #0 13aa8: 2f80 cmp r7, #128 ; 0x80 13aaa: d1a2 bne.n 139f2 (*i)++; 13aac: 1cdc adds r4, r3, #3 13aae: 600c str r4, [r1, #0] if((txt[*i] & 0xC0) != 0x80) return 0; /*Invalid UTF-8 code*/ 13ab0: 5d00 ldrb r0, [r0, r4] 13ab2: 243f movs r4, #63 ; 0x3f 13ab4: 0007 movs r7, r0 13ab6: 43a7 bics r7, r4 13ab8: 2400 movs r4, #0 13aba: 2f80 cmp r7, #128 ; 0x80 13abc: d199 bne.n 139f2 result = (uint32_t)(txt[*i] & 0x07) << 18; 13abe: 0492 lsls r2, r2, #18 13ac0: 24e0 movs r4, #224 ; 0xe0 13ac2: 0364 lsls r4, r4, #13 13ac4: 4022 ands r2, r4 result += (uint32_t)(txt[*i] & 0x3F) << 12; 13ac6: 032c lsls r4, r5, #12 13ac8: 25fc movs r5, #252 ; 0xfc 13aca: 02ad lsls r5, r5, #10 13acc: 402c ands r4, r5 13ace: 4322 orrs r2, r4 result += (uint32_t)(txt[*i] & 0x3F) << 6; 13ad0: 01b4 lsls r4, r6, #6 13ad2: 26fc movs r6, #252 ; 0xfc 13ad4: 0136 lsls r6, r6, #4 13ad6: 4034 ands r4, r6 result += txt[*i] & 0x3F; 13ad8: 253f movs r5, #63 ; 0x3f 13ada: 4028 ands r0, r5 13adc: 1824 adds r4, r4, r0 13ade: 18a4 adds r4, r4, r2 (*i)++; 13ae0: 3304 adds r3, #4 13ae2: 600b str r3, [r1, #0] 13ae4: e785 b.n 139f2 ... 00013ae8 : * @param i start byte index in 'txt' where to start. After the call it will point to the previous * UTF-8 char in 'txt'. * @return the decoded Unicode character or 0 on invalid UTF-8 code */ static uint32_t lv_txt_utf8_prev(const char * txt, uint32_t * i) { 13ae8: b5f0 push {r4, r5, r6, r7, lr} 13aea: b083 sub sp, #12 13aec: 0006 movs r6, r0 13aee: 000d movs r5, r1 uint8_t c_size; uint8_t cnt = 0; /*Try to find a !0 long UTF-8 char by stepping one character back*/ (*i)--; 13af0: 680b ldr r3, [r1, #0] 13af2: 3b01 subs r3, #1 13af4: 600b str r3, [r1, #0] 13af6: 2404 movs r4, #4 do { if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ c_size = _lv_txt_encoded_size(&txt[*i]); 13af8: 4f0e ldr r7, [pc, #56] ; (13b34 ) 13afa: e005 b.n 13b08 if(c_size == 0) { if(*i != 0) (*i)--; 13afc: 3801 subs r0, #1 13afe: 6028 str r0, [r5, #0] 13b00: 3c01 subs r4, #1 13b02: b2e4 uxtb r4, r4 if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13b04: 2c00 cmp r4, #0 13b06: d009 beq.n 13b1c c_size = _lv_txt_encoded_size(&txt[*i]); 13b08: 682b ldr r3, [r5, #0] 13b0a: 18f0 adds r0, r6, r3 13b0c: 683b ldr r3, [r7, #0] 13b0e: 4798 blx r3 if(c_size == 0) { 13b10: 2800 cmp r0, #0 13b12: d105 bne.n 13b20 if(*i != 0) 13b14: 6828 ldr r0, [r5, #0] 13b16: 2800 cmp r0, #0 13b18: d1f0 bne.n 13afc 13b1a: e008 b.n 13b2e if(cnt >= 4) return 0; /*No UTF-8 char found before the initial*/ 13b1c: 2000 movs r0, #0 13b1e: e006 b.n 13b2e return 0; } cnt++; } while(c_size == 0); uint32_t i_tmp = *i; 13b20: 682b ldr r3, [r5, #0] 13b22: 9301 str r3, [sp, #4] uint32_t letter = _lv_txt_encoded_next(txt, &i_tmp); /*Character found, get it*/ 13b24: 4b04 ldr r3, [pc, #16] ; (13b38 ) 13b26: 681b ldr r3, [r3, #0] 13b28: a901 add r1, sp, #4 13b2a: 0030 movs r0, r6 13b2c: 4798 blx r3 return letter; } 13b2e: b003 add sp, #12 13b30: bdf0 pop {r4, r5, r6, r7, pc} 13b32: 46c0 nop ; (mov r8, r8) 13b34: 20000064 .word 0x20000064 13b38: 2000005c .word 0x2000005c 00013b3c : * @param txt a '\0' terminated UTF-8 string * @param utf8_id character index * @return byte index of the 'utf8_id'th letter */ static uint32_t lv_txt_utf8_get_byte_id(const char * txt, uint32_t utf8_id) { 13b3c: b5f0 push {r4, r5, r6, r7, lr} 13b3e: 46c6 mov lr, r8 13b40: b500 push {lr} 13b42: 4680 mov r8, r0 13b44: 1e0f subs r7, r1, #0 uint32_t i; uint32_t byte_cnt = 0; for(i = 0; i < utf8_id; i++) { 13b46: d00f beq.n 13b68 13b48: 2400 movs r4, #0 13b4a: 2600 movs r6, #0 uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); 13b4c: 4d09 ldr r5, [pc, #36] ; (13b74 ) 13b4e: e003 b.n 13b58 byte_cnt += c_size > 0 ? c_size : 1; 13b50: 1824 adds r4, r4, r0 for(i = 0; i < utf8_id; i++) { 13b52: 3601 adds r6, #1 13b54: 42b7 cmp r7, r6 13b56: d008 beq.n 13b6a uint8_t c_size = _lv_txt_encoded_size(&txt[byte_cnt]); 13b58: 4643 mov r3, r8 13b5a: 1918 adds r0, r3, r4 13b5c: 682b ldr r3, [r5, #0] 13b5e: 4798 blx r3 byte_cnt += c_size > 0 ? c_size : 1; 13b60: 2800 cmp r0, #0 13b62: d1f5 bne.n 13b50 13b64: 3001 adds r0, #1 13b66: e7f3 b.n 13b50 uint32_t byte_cnt = 0; 13b68: 000c movs r4, r1 } return byte_cnt; } 13b6a: 0020 movs r0, r4 13b6c: bc04 pop {r2} 13b6e: 4690 mov r8, r2 13b70: bdf0 pop {r4, r5, r6, r7, pc} 13b72: 46c0 nop ; (mov r8, r8) 13b74: 20000064 .word 0x20000064 00013b78 : * @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) { 13b78: b5f0 push {r4, r5, r6, r7, lr} 13b7a: b083 sub sp, #12 13b7c: 0006 movs r6, r0 13b7e: 000d movs r5, r1 uint32_t i = 0; 13b80: 2300 movs r3, #0 13b82: 9301 str r3, [sp, #4] uint32_t char_cnt = 0; while(i < byte_id) { 13b84: 2900 cmp r1, #0 13b86: d00c beq.n 13ba2 13b88: 2400 movs r4, #0 _lv_txt_encoded_next(txt, &i); /*'i' points to the next letter so use the prev. value*/ 13b8a: 4f07 ldr r7, [pc, #28] ; (13ba8 ) 13b8c: a901 add r1, sp, #4 13b8e: 0030 movs r0, r6 13b90: 683b ldr r3, [r7, #0] 13b92: 4798 blx r3 char_cnt++; 13b94: 3401 adds r4, #1 while(i < byte_id) { 13b96: 9b01 ldr r3, [sp, #4] 13b98: 42ab cmp r3, r5 13b9a: d3f7 bcc.n 13b8c } return char_cnt; } 13b9c: 0020 movs r0, r4 13b9e: b003 add sp, #12 13ba0: bdf0 pop {r4, r5, r6, r7, pc} uint32_t char_cnt = 0; 13ba2: 000c movs r4, r1 return char_cnt; 13ba4: e7fa b.n 13b9c 13ba6: 46c0 nop ; (mov r8, r8) 13ba8: 2000005c .word 0x2000005c 00013bac : * E.g.: "ÁBC" is 3 characters (but 4 bytes) * @param txt a '\0' terminated char string * @return number of characters */ static uint32_t lv_txt_utf8_get_length(const char * txt) { 13bac: b570 push {r4, r5, r6, lr} 13bae: b082 sub sp, #8 13bb0: 0004 movs r4, r0 uint32_t len = 0; uint32_t i = 0; 13bb2: 2300 movs r3, #0 13bb4: 9301 str r3, [sp, #4] while(txt[i] != '\0') { 13bb6: 7803 ldrb r3, [r0, #0] 13bb8: 2b00 cmp r3, #0 13bba: d00d beq.n 13bd8 13bbc: 2500 movs r5, #0 _lv_txt_encoded_next(txt, &i); 13bbe: 4e07 ldr r6, [pc, #28] ; (13bdc ) 13bc0: a901 add r1, sp, #4 13bc2: 0020 movs r0, r4 13bc4: 6833 ldr r3, [r6, #0] 13bc6: 4798 blx r3 len++; 13bc8: 3501 adds r5, #1 while(txt[i] != '\0') { 13bca: 9b01 ldr r3, [sp, #4] 13bcc: 5ce3 ldrb r3, [r4, r3] 13bce: 2b00 cmp r3, #0 13bd0: d1f6 bne.n 13bc0 } return len; } 13bd2: 0028 movs r0, r5 13bd4: b002 add sp, #8 13bd6: bd70 pop {r4, r5, r6, pc} uint32_t len = 0; 13bd8: 2500 movs r5, #0 return len; 13bda: e7fa b.n 13bd2 13bdc: 2000005c .word 0x2000005c 00013be0 <_lv_txt_is_cmd>: if(c == (uint32_t)LV_TXT_COLOR_CMD[0]) { 13be0: 2923 cmp r1, #35 ; 0x23 13be2: d005 beq.n 13bf0 <_lv_txt_is_cmd+0x10> if(*state == LV_TXT_CMD_STATE_PAR) { 13be4: 7802 ldrb r2, [r0, #0] bool ret = false; 13be6: 2300 movs r3, #0 if(*state == LV_TXT_CMD_STATE_PAR) { 13be8: 2a01 cmp r2, #1 13bea: d012 beq.n 13c12 <_lv_txt_is_cmd+0x32> } 13bec: 0018 movs r0, r3 13bee: 4770 bx lr if(*state == LV_TXT_CMD_STATE_WAIT) { /*Start char*/ 13bf0: 7802 ldrb r2, [r0, #0] 13bf2: 2a00 cmp r2, #0 13bf4: d102 bne.n 13bfc <_lv_txt_is_cmd+0x1c> *state = LV_TXT_CMD_STATE_PAR; 13bf6: 2301 movs r3, #1 13bf8: 7003 strb r3, [r0, #0] 13bfa: e7f7 b.n 13bec <_lv_txt_is_cmd+0xc> else if(*state == LV_TXT_CMD_STATE_PAR) { 13bfc: 2a01 cmp r2, #1 13bfe: d005 beq.n 13c0c <_lv_txt_is_cmd+0x2c> bool ret = false; 13c00: 2300 movs r3, #0 else if(*state == LV_TXT_CMD_STATE_IN) { 13c02: 2a02 cmp r2, #2 13c04: d1f2 bne.n 13bec <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_WAIT; 13c06: 7003 strb r3, [r0, #0] ret = true; 13c08: 3301 adds r3, #1 13c0a: e7ef b.n 13bec <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_WAIT; 13c0c: 2300 movs r3, #0 13c0e: 7003 strb r3, [r0, #0] 13c10: e7ec b.n 13bec <_lv_txt_is_cmd+0xc> ret = true; 13c12: 3301 adds r3, #1 if(c == ' ') { 13c14: 2920 cmp r1, #32 13c16: d1e9 bne.n 13bec <_lv_txt_is_cmd+0xc> *state = LV_TXT_CMD_STATE_IN; /*After the parameter the text is in the command*/ 13c18: 3301 adds r3, #1 13c1a: 7003 strb r3, [r0, #0] ret = true; 13c1c: 3b01 subs r3, #1 13c1e: e7e5 b.n 13bec <_lv_txt_is_cmd+0xc> 00013c20 <_lv_txt_get_next_line>: { 13c20: b5f0 push {r4, r5, r6, r7, lr} 13c22: 46de mov lr, fp 13c24: 4657 mov r7, sl 13c26: 464e mov r6, r9 13c28: 4645 mov r5, r8 13c2a: b5e0 push {r5, r6, r7, lr} 13c2c: b091 sub sp, #68 ; 0x44 13c2e: 9007 str r0, [sp, #28] 13c30: 9103 str r1, [sp, #12] 13c32: 4692 mov sl, r2 13c34: 9305 str r3, [sp, #20] 13c36: ab1a add r3, sp, #104 ; 0x68 13c38: 781b ldrb r3, [r3, #0] 13c3a: 001a movs r2, r3 13c3c: 930a str r3, [sp, #40] ; 0x28 if(txt == NULL) return 0; 13c3e: 2800 cmp r0, #0 13c40: d100 bne.n 13c44 <_lv_txt_get_next_line+0x24> 13c42: e10b b.n 13e5c <_lv_txt_get_next_line+0x23c> if(font == NULL) return 0; 13c44: 2900 cmp r1, #0 13c46: d100 bne.n 13c4a <_lv_txt_get_next_line+0x2a> 13c48: e10a b.n 13e60 <_lv_txt_get_next_line+0x240> if((flag & LV_TXT_FLAG_EXPAND) || (flag & LV_TXT_FLAG_FIT)) { 13c4a: 2312 movs r3, #18 13c4c: 4213 tst r3, r2 13c4e: d016 beq.n 13c7e <_lv_txt_get_next_line+0x5e> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13c50: 0002 movs r2, r0 13c52: 7803 ldrb r3, [r0, #0] 13c54: 2b0a cmp r3, #10 13c56: d100 bne.n 13c5a <_lv_txt_get_next_line+0x3a> 13c58: e104 b.n 13e64 <_lv_txt_get_next_line+0x244> 13c5a: 2b0d cmp r3, #13 13c5c: d100 bne.n 13c60 <_lv_txt_get_next_line+0x40> 13c5e: e10b b.n 13e78 <_lv_txt_get_next_line+0x258> 13c60: 2b00 cmp r3, #0 13c62: d100 bne.n 13c66 <_lv_txt_get_next_line+0x46> 13c64: e10a b.n 13e7c <_lv_txt_get_next_line+0x25c> 13c66: 2000 movs r0, #0 13c68: 3001 adds r0, #1 13c6a: 5c13 ldrb r3, [r2, r0] 13c6c: 2b0a cmp r3, #10 13c6e: d100 bne.n 13c72 <_lv_txt_get_next_line+0x52> 13c70: e0f9 b.n 13e66 <_lv_txt_get_next_line+0x246> 13c72: 2b0d cmp r3, #13 13c74: d100 bne.n 13c78 <_lv_txt_get_next_line+0x58> 13c76: e0f6 b.n 13e66 <_lv_txt_get_next_line+0x246> 13c78: 2b00 cmp r3, #0 13c7a: d1f5 bne.n 13c68 <_lv_txt_get_next_line+0x48> 13c7c: e0f4 b.n 13e68 <_lv_txt_get_next_line+0x248> 13c7e: 2302 movs r3, #2 13c80: 9a0a ldr r2, [sp, #40] ; 0x28 13c82: 401a ands r2, r3 13c84: 920b str r2, [sp, #44] ; 0x2c if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13c86: d001 beq.n 13c8c <_lv_txt_get_next_line+0x6c> 13c88: 4b7d ldr r3, [pc, #500] ; (13e80 <_lv_txt_get_next_line+0x260>) 13c8a: 9305 str r3, [sp, #20] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13c8c: 2300 movs r3, #0 13c8e: 220f movs r2, #15 13c90: a90c add r1, sp, #48 ; 0x30 13c92: 468c mov ip, r1 13c94: 4462 add r2, ip 13c96: 7013 strb r3, [r2, #0] uint32_t i = 0; /* Iterating index into txt */ 13c98: 930e str r3, [sp, #56] ; 0x38 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13c9a: 4b7a ldr r3, [pc, #488] ; (13e84 <_lv_txt_get_next_line+0x264>) 13c9c: 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++) { 13c9e: 4f7a ldr r7, [pc, #488] ; (13e88 <_lv_txt_get_next_line+0x268>) 13ca0: 4653 mov r3, sl 13ca2: 9304 str r3, [sp, #16] while(txt[i] != '\0' && max_width > 0) { 13ca4: e083 b.n 13dae <_lv_txt_get_next_line+0x18e> letter_w = lv_font_get_glyph_width(font, letter, letter_next); 13ca6: 9a00 ldr r2, [sp, #0] 13ca8: 0021 movs r1, r4 13caa: 9803 ldr r0, [sp, #12] 13cac: 4b77 ldr r3, [pc, #476] ; (13e8c <_lv_txt_get_next_line+0x26c>) 13cae: 4798 blx r3 cur_w += letter_w; 13cb0: 1945 adds r5, r0, r5 13cb2: b2ad uxth r5, r5 if(letter_w > 0) { 13cb4: b200 sxth r0, r0 13cb6: 2800 cmp r0, #0 13cb8: dd03 ble.n 13cc2 <_lv_txt_get_next_line+0xa2> cur_w += letter_space; 13cba: 9b04 ldr r3, [sp, #16] 13cbc: 469c mov ip, r3 13cbe: 4465 add r5, ip 13cc0: b2ad uxth r5, r5 13cc2: b22d sxth r5, r5 if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13cc4: 4643 mov r3, r8 13cc6: 3301 adds r3, #1 13cc8: d039 beq.n 13d3e <_lv_txt_get_next_line+0x11e> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13cca: 0022 movs r2, r4 13ccc: 3a0a subs r2, #10 13cce: 2a16 cmp r2, #22 13cd0: d83c bhi.n 13d4c <_lv_txt_get_next_line+0x12c> 13cd2: 4b6f ldr r3, [pc, #444] ; (13e90 <_lv_txt_get_next_line+0x270>) 13cd4: 40d3 lsrs r3, r2 13cd6: 2201 movs r2, #1 13cd8: 421a tst r2, r3 13cda: d13a bne.n 13d52 <_lv_txt_get_next_line+0x132> 13cdc: 2301 movs r3, #1 13cde: 322b adds r2, #43 ; 0x2b if(letter == (uint32_t)LV_TXT_BREAK_CHARS[i]) { 13ce0: 4294 cmp r4, r2 13ce2: d038 beq.n 13d56 <_lv_txt_get_next_line+0x136> for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) { 13ce4: 3301 adds r3, #1 13ce6: b2db uxtb r3, r3 13ce8: 5cfa ldrb r2, [r7, r3] 13cea: 2a00 cmp r2, #0 13cec: d1f8 bne.n 13ce0 <_lv_txt_get_next_line+0xc0> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 13cee: 4643 mov r3, r8 13cf0: 3301 adds r3, #1 13cf2: d100 bne.n 13cf6 <_lv_txt_get_next_line+0xd6> 13cf4: e08d b.n 13e12 <_lv_txt_get_next_line+0x1f2> i = i_next; 13cf6: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13cf8: 9b0d ldr r3, [sp, #52] ; 0x34 13cfa: 930c str r3, [sp, #48] ; 0x30 letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13cfc: 9b02 ldr r3, [sp, #8] 13cfe: 9301 str r3, [sp, #4] 13d00: 9c00 ldr r4, [sp, #0] while(txt[i] != '\0') { 13d02: 4653 mov r3, sl 13d04: 5d9b ldrb r3, [r3, r6] 13d06: 2b00 cmp r3, #0 13d08: d100 bne.n 13d0c <_lv_txt_get_next_line+0xec> 13d0a: e084 b.n 13e16 <_lv_txt_get_next_line+0x1f6> letter_next = _lv_txt_encoded_next(txt, &i_next_next); 13d0c: a90d add r1, sp, #52 ; 0x34 13d0e: 4650 mov r0, sl 13d10: 464b mov r3, r9 13d12: 681b ldr r3, [r3, #0] 13d14: 4798 blx r3 13d16: 9000 str r0, [sp, #0] word_len++; 13d18: 9b01 ldr r3, [sp, #4] 13d1a: 3301 adds r3, #1 13d1c: 9302 str r3, [sp, #8] if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13d1e: 465b mov r3, fp 13d20: 2b00 cmp r3, #0 13d22: d0c0 beq.n 13ca6 <_lv_txt_get_next_line+0x86> if(_lv_txt_is_cmd(cmd_state, letter) != false) { 13d24: 0021 movs r1, r4 13d26: 200f movs r0, #15 13d28: ab0c add r3, sp, #48 ; 0x30 13d2a: 469c mov ip, r3 13d2c: 4460 add r0, ip 13d2e: 4b59 ldr r3, [pc, #356] ; (13e94 <_lv_txt_get_next_line+0x274>) 13d30: 4798 blx r3 13d32: 2800 cmp r0, #0 13d34: d0b7 beq.n 13ca6 <_lv_txt_get_next_line+0x86> i = i_next; 13d36: 9e0c ldr r6, [sp, #48] ; 0x30 i_next = i_next_next; 13d38: 9b0d ldr r3, [sp, #52] ; 0x34 13d3a: 930c str r3, [sp, #48] ; 0x30 13d3c: e7de b.n 13cfc <_lv_txt_get_next_line+0xdc> if(break_index == NO_BREAK_FOUND && (cur_w - letter_space) > max_width) { 13d3e: 9b04 ldr r3, [sp, #16] 13d40: 1aeb subs r3, r5, r3 13d42: 9a08 ldr r2, [sp, #32] 13d44: 4293 cmp r3, r2 13d46: ddc0 ble.n 13cca <_lv_txt_get_next_line+0xaa> 13d48: 46b0 mov r8, r6 13d4a: e7be b.n 13cca <_lv_txt_get_next_line+0xaa> if(letter == '\n' || letter == '\r' || is_break_char(letter)) { 13d4c: 2301 movs r3, #1 13d4e: 222c movs r2, #44 ; 0x2c 13d50: e7c6 b.n 13ce0 <_lv_txt_get_next_line+0xc0> 13d52: 46b2 mov sl, r6 13d54: e000 b.n 13d58 <_lv_txt_get_next_line+0x138> 13d56: 46b2 mov sl, r6 if(i == 0 && break_index == NO_BREAK_FOUND && word_w_ptr != NULL) *word_w_ptr = cur_w; 13d58: 4653 mov r3, sl 13d5a: 2b00 cmp r3, #0 13d5c: d15c bne.n 13e18 <_lv_txt_get_next_line+0x1f8> 13d5e: 4643 mov r3, r8 13d60: 3301 adds r3, #1 13d62: d15c bne.n 13e1e <_lv_txt_get_next_line+0x1fe> 13d64: 9506 str r5, [sp, #24] if(word_len == 0 || (letter == '\r' && letter_next == '\n')) i = i_next; 13d66: 9b01 ldr r3, [sp, #4] 13d68: 2b00 cmp r3, #0 13d6a: d004 beq.n 13d76 <_lv_txt_get_next_line+0x156> 13d6c: 2c0d cmp r4, #13 13d6e: d104 bne.n 13d7a <_lv_txt_get_next_line+0x15a> 13d70: 9b00 ldr r3, [sp, #0] 13d72: 2b0a cmp r3, #10 13d74: d101 bne.n 13d7a <_lv_txt_get_next_line+0x15a> 13d76: 9b0c ldr r3, [sp, #48] ; 0x30 13d78: 469a mov sl, r3 return i; 13d7a: 4653 mov r3, sl 13d7c: 466a mov r2, sp 13d7e: 8013 strh r3, [r2, #0] 13d80: 8816 ldrh r6, [r2, #0] max_width -= word_w; 13d82: 9b05 ldr r3, [sp, #20] 13d84: 9a06 ldr r2, [sp, #24] 13d86: 1a9b subs r3, r3, r2 13d88: b21b sxth r3, r3 13d8a: 9305 str r3, [sp, #20] if(advance == 0) { 13d8c: 2e00 cmp r6, #0 13d8e: d049 beq.n 13e24 <_lv_txt_get_next_line+0x204> i += advance; 13d90: 9b0e ldr r3, [sp, #56] ; 0x38 13d92: 469c mov ip, r3 13d94: 4466 add r6, ip 13d96: 960e str r6, [sp, #56] ; 0x38 if(txt[0] == '\n' || txt[0] == '\r') break; 13d98: 9a07 ldr r2, [sp, #28] 13d9a: 7813 ldrb r3, [r2, #0] 13d9c: 2b0a cmp r3, #10 13d9e: d051 beq.n 13e44 <_lv_txt_get_next_line+0x224> 13da0: 2b0d cmp r3, #13 13da2: d04f beq.n 13e44 <_lv_txt_get_next_line+0x224> if(txt[i] == '\n' || txt[i] == '\r') { 13da4: 5d93 ldrb r3, [r2, r6] 13da6: 2b0a cmp r3, #10 13da8: d04a beq.n 13e40 <_lv_txt_get_next_line+0x220> 13daa: 2b0d cmp r3, #13 13dac: d048 beq.n 13e40 <_lv_txt_get_next_line+0x220> while(txt[i] != '\0' && max_width > 0) { 13dae: 9b0e ldr r3, [sp, #56] ; 0x38 13db0: 9309 str r3, [sp, #36] ; 0x24 13db2: 9a07 ldr r2, [sp, #28] 13db4: 469c mov ip, r3 13db6: 4462 add r2, ip 13db8: 0016 movs r6, r2 13dba: 7813 ldrb r3, [r2, #0] 13dbc: 2b00 cmp r3, #0 13dbe: d041 beq.n 13e44 <_lv_txt_get_next_line+0x224> 13dc0: 9b05 ldr r3, [sp, #20] 13dc2: 2b00 cmp r3, #0 13dc4: dd3e ble.n 13e44 <_lv_txt_get_next_line+0x224> if(txt == NULL || txt[0] == '\0') return 0; 13dc6: 2e00 cmp r6, #0 13dc8: d02c beq.n 13e24 <_lv_txt_get_next_line+0x204> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13dca: 9b05 ldr r3, [sp, #20] 13dcc: 9308 str r3, [sp, #32] 13dce: 9b0b ldr r3, [sp, #44] ; 0x2c 13dd0: 2b00 cmp r3, #0 13dd2: d001 beq.n 13dd8 <_lv_txt_get_next_line+0x1b8> 13dd4: 4b2a ldr r3, [pc, #168] ; (13e80 <_lv_txt_get_next_line+0x260>) 13dd6: 9308 str r3, [sp, #32] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 13dd8: 2300 movs r3, #0 13dda: 930c str r3, [sp, #48] ; 0x30 13ddc: 930d str r3, [sp, #52] ; 0x34 letter = _lv_txt_encoded_next(txt, &i_next); 13dde: a90c add r1, sp, #48 ; 0x30 13de0: 0030 movs r0, r6 13de2: 4b28 ldr r3, [pc, #160] ; (13e84 <_lv_txt_get_next_line+0x264>) 13de4: 681b ldr r3, [r3, #0] 13de6: 9300 str r3, [sp, #0] 13de8: 4798 blx r3 13dea: 0004 movs r4, r0 i_next_next = i_next; 13dec: 9b0c ldr r3, [sp, #48] ; 0x30 13dee: 930d str r3, [sp, #52] ; 0x34 uint32_t word_w = 0; 13df0: 2300 movs r3, #0 13df2: 9306 str r3, [sp, #24] uint32_t break_index = NO_BREAK_FOUND; /* only used for "long" words */ 13df4: 3b01 subs r3, #1 13df6: 4698 mov r8, r3 uint32_t word_len = 0; /* Number of characters in the transversed word */ 13df8: 2300 movs r3, #0 13dfa: 9301 str r3, [sp, #4] lv_coord_t cur_w = 0; /* Pixel Width of transversed string */ 13dfc: 2500 movs r5, #0 uint32_t letter_next = 0; /* Letter at i_next */ 13dfe: 9300 str r3, [sp, #0] uint32_t i = 0, i_next = 0, i_next_next = 0; /* Iterating index into txt */ 13e00: 469a mov sl, r3 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13e02: 3301 adds r3, #1 13e04: 9a0a ldr r2, [sp, #40] ; 0x28 13e06: 4013 ands r3, r2 13e08: 469b mov fp, r3 13e0a: 4653 mov r3, sl 13e0c: 46b2 mov sl, r6 13e0e: 001e movs r6, r3 13e10: e777 b.n 13d02 <_lv_txt_get_next_line+0xe2> if(word_w_ptr != NULL && break_index == NO_BREAK_FOUND) *word_w_ptr = cur_w; 13e12: 9506 str r5, [sp, #24] 13e14: e76f b.n 13cf6 <_lv_txt_get_next_line+0xd6> 13e16: 46b2 mov sl, r6 if(break_index == NO_BREAK_FOUND) { 13e18: 4643 mov r3, r8 13e1a: 3301 adds r3, #1 13e1c: d0a3 beq.n 13d66 <_lv_txt_get_next_line+0x146> if(force) return break_index; 13e1e: 9b09 ldr r3, [sp, #36] ; 0x24 13e20: 2b00 cmp r3, #0 13e22: d008 beq.n 13e36 <_lv_txt_get_next_line+0x216> if(i == 0) _lv_txt_encoded_next(txt, &i); // prevent inf loops 13e24: 9b0e ldr r3, [sp, #56] ; 0x38 13e26: 2b00 cmp r3, #0 13e28: d10f bne.n 13e4a <_lv_txt_get_next_line+0x22a> 13e2a: 4b16 ldr r3, [pc, #88] ; (13e84 <_lv_txt_get_next_line+0x264>) 13e2c: 681b ldr r3, [r3, #0] 13e2e: a90e add r1, sp, #56 ; 0x38 13e30: 9807 ldr r0, [sp, #28] 13e32: 4798 blx r3 13e34: e006 b.n 13e44 <_lv_txt_get_next_line+0x224> if(force) return break_index; 13e36: 4643 mov r3, r8 13e38: 466a mov r2, sp 13e3a: 8013 strh r3, [r2, #0] 13e3c: 8816 ldrh r6, [r2, #0] 13e3e: e7a0 b.n 13d82 <_lv_txt_get_next_line+0x162> i++; /* Include the following newline in the current line */ 13e40: 3601 adds r6, #1 13e42: 960e str r6, [sp, #56] ; 0x38 if(i == 0) { 13e44: 9b0e ldr r3, [sp, #56] ; 0x38 13e46: 2b00 cmp r3, #0 13e48: d002 beq.n 13e50 <_lv_txt_get_next_line+0x230> return i; 13e4a: ab0c add r3, sp, #48 ; 0x30 13e4c: 8918 ldrh r0, [r3, #8] 13e4e: e00c b.n 13e6a <_lv_txt_get_next_line+0x24a> _lv_txt_encoded_next(txt, &i); 13e50: 4b0c ldr r3, [pc, #48] ; (13e84 <_lv_txt_get_next_line+0x264>) 13e52: 681b ldr r3, [r3, #0] 13e54: a90e add r1, sp, #56 ; 0x38 13e56: 9807 ldr r0, [sp, #28] 13e58: 4798 blx r3 13e5a: e7f6 b.n 13e4a <_lv_txt_get_next_line+0x22a> if(txt == NULL) return 0; 13e5c: 2000 movs r0, #0 13e5e: e004 b.n 13e6a <_lv_txt_get_next_line+0x24a> if(font == NULL) return 0; 13e60: 2000 movs r0, #0 13e62: e002 b.n 13e6a <_lv_txt_get_next_line+0x24a> for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13e64: 2000 movs r0, #0 if(txt[i] != '\0') i++; /*To go beyond `\n`*/ 13e66: 3001 adds r0, #1 return i; 13e68: b280 uxth r0, r0 } 13e6a: b011 add sp, #68 ; 0x44 13e6c: bc3c pop {r2, r3, r4, r5} 13e6e: 4690 mov r8, r2 13e70: 4699 mov r9, r3 13e72: 46a2 mov sl, r4 13e74: 46ab mov fp, r5 13e76: bdf0 pop {r4, r5, r6, r7, pc} for(i = 0; txt[i] != '\n' && txt[i] != '\r' && txt[i] != '\0'; i++) { 13e78: 2000 movs r0, #0 13e7a: e7f4 b.n 13e66 <_lv_txt_get_next_line+0x246> 13e7c: 2000 movs r0, #0 13e7e: e7f3 b.n 13e68 <_lv_txt_get_next_line+0x248> 13e80: 00007c18 .word 0x00007c18 13e84: 2000005c .word 0x2000005c 13e88: 0002ac80 .word 0x0002ac80 13e8c: 0000fe91 .word 0x0000fe91 13e90: 00400009 .word 0x00400009 13e94: 00013be1 .word 0x00013be1 00013e98 <_lv_txt_get_width>: { 13e98: b5f0 push {r4, r5, r6, r7, lr} 13e9a: 46ce mov lr, r9 13e9c: 4647 mov r7, r8 13e9e: b580 push {r7, lr} 13ea0: b085 sub sp, #20 13ea2: 0005 movs r5, r0 13ea4: 4689 mov r9, r1 13ea6: 9201 str r2, [sp, #4] 13ea8: 4698 mov r8, r3 13eaa: ab0c add r3, sp, #48 ; 0x30 13eac: 781f ldrb r7, [r3, #0] if(txt == NULL) return 0; 13eae: 2800 cmp r0, #0 13eb0: d03a beq.n 13f28 <_lv_txt_get_width+0x90> if(font == NULL) return 0; 13eb2: 2a00 cmp r2, #0 13eb4: d03a beq.n 13f2c <_lv_txt_get_width+0x94> uint32_t i = 0; 13eb6: 2300 movs r3, #0 13eb8: 9303 str r3, [sp, #12] lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 13eba: aa02 add r2, sp, #8 13ebc: 70d3 strb r3, [r2, #3] 13ebe: 2400 movs r4, #0 if(length != 0) { 13ec0: 2900 cmp r1, #0 13ec2: d02b beq.n 13f1c <_lv_txt_get_width+0x84> if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13ec4: 2301 movs r3, #1 13ec6: 401f ands r7, r3 13ec8: e00a b.n 13ee0 <_lv_txt_get_width+0x48> lv_coord_t char_width = lv_font_get_glyph_width(font, letter, letter_next); 13eca: 0032 movs r2, r6 13ecc: 9900 ldr r1, [sp, #0] 13ece: 9801 ldr r0, [sp, #4] 13ed0: 4b17 ldr r3, [pc, #92] ; (13f30 <_lv_txt_get_width+0x98>) 13ed2: 4798 blx r3 if(char_width > 0) { 13ed4: b203 sxth r3, r0 13ed6: 2b00 cmp r3, #0 13ed8: dd02 ble.n 13ee0 <_lv_txt_get_width+0x48> width += letter_space; 13eda: 4444 add r4, r8 13edc: 1904 adds r4, r0, r4 13ede: b224 sxth r4, r4 while(i < length) { 13ee0: 9b03 ldr r3, [sp, #12] 13ee2: 4599 cmp r9, r3 13ee4: d915 bls.n 13f12 <_lv_txt_get_width+0x7a> uint32_t letter = _lv_txt_encoded_next(txt, &i); 13ee6: 4e13 ldr r6, [pc, #76] ; (13f34 <_lv_txt_get_width+0x9c>) 13ee8: a903 add r1, sp, #12 13eea: 0028 movs r0, r5 13eec: 6833 ldr r3, [r6, #0] 13eee: 4798 blx r3 13ef0: 9000 str r0, [sp, #0] uint32_t letter_next = _lv_txt_encoded_next(&txt[i], NULL); 13ef2: 9b03 ldr r3, [sp, #12] 13ef4: 18e8 adds r0, r5, r3 13ef6: 6833 ldr r3, [r6, #0] 13ef8: 2100 movs r1, #0 13efa: 4798 blx r3 13efc: 0006 movs r6, r0 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 13efe: 2f00 cmp r7, #0 13f00: d0e3 beq.n 13eca <_lv_txt_get_width+0x32> if(_lv_txt_is_cmd(&cmd_state, letter) != false) { 13f02: 9900 ldr r1, [sp, #0] 13f04: ab02 add r3, sp, #8 13f06: 1cd8 adds r0, r3, #3 13f08: 4b0b ldr r3, [pc, #44] ; (13f38 <_lv_txt_get_width+0xa0>) 13f0a: 4798 blx r3 13f0c: 2800 cmp r0, #0 13f0e: d1e7 bne.n 13ee0 <_lv_txt_get_width+0x48> 13f10: e7db b.n 13eca <_lv_txt_get_width+0x32> if(width > 0) { 13f12: 2c00 cmp r4, #0 13f14: dd02 ble.n 13f1c <_lv_txt_get_width+0x84> width -= letter_space; /*Trim the last letter space. Important if the text is center 13f16: 4643 mov r3, r8 13f18: 1ae4 subs r4, r4, r3 13f1a: b224 sxth r4, r4 } 13f1c: 0020 movs r0, r4 13f1e: b005 add sp, #20 13f20: bc0c pop {r2, r3} 13f22: 4690 mov r8, r2 13f24: 4699 mov r9, r3 13f26: bdf0 pop {r4, r5, r6, r7, pc} if(txt == NULL) return 0; 13f28: 2400 movs r4, #0 13f2a: e7f7 b.n 13f1c <_lv_txt_get_width+0x84> if(font == NULL) return 0; 13f2c: 2400 movs r4, #0 13f2e: e7f5 b.n 13f1c <_lv_txt_get_width+0x84> 13f30: 0000fe91 .word 0x0000fe91 13f34: 2000005c .word 0x2000005c 13f38: 00013be1 .word 0x00013be1 00013f3c <_lv_txt_get_size>: { 13f3c: b5f0 push {r4, r5, r6, r7, lr} 13f3e: 46de mov lr, fp 13f40: 4657 mov r7, sl 13f42: 464e mov r6, r9 13f44: 4645 mov r5, r8 13f46: b5e0 push {r5, r6, r7, lr} 13f48: b089 sub sp, #36 ; 0x24 13f4a: 0004 movs r4, r0 13f4c: 4689 mov r9, r1 13f4e: 9202 str r2, [sp, #8] 13f50: 9303 str r3, [sp, #12] 13f52: ab12 add r3, sp, #72 ; 0x48 13f54: 2100 movs r1, #0 13f56: 5e5b ldrsh r3, [r3, r1] 13f58: 9306 str r3, [sp, #24] 13f5a: ab13 add r3, sp, #76 ; 0x4c 13f5c: 2100 movs r1, #0 13f5e: 5e5b ldrsh r3, [r3, r1] 13f60: 9304 str r3, [sp, #16] 13f62: ab14 add r3, sp, #80 ; 0x50 13f64: 781f ldrb r7, [r3, #0] size_res->x = 0; 13f66: 2300 movs r3, #0 13f68: 8003 strh r3, [r0, #0] size_res->y = 0; 13f6a: 8043 strh r3, [r0, #2] if(text == NULL) return; 13f6c: 464b mov r3, r9 13f6e: 2b00 cmp r3, #0 13f70: d023 beq.n 13fba <_lv_txt_get_size+0x7e> if(font == NULL) return; 13f72: 2a00 cmp r2, #0 13f74: d021 beq.n 13fba <_lv_txt_get_size+0x7e> if(flag & LV_TXT_FLAG_EXPAND) max_width = LV_COORD_MAX; 13f76: 07bb lsls r3, r7, #30 13f78: d501 bpl.n 13f7e <_lv_txt_get_size+0x42> 13f7a: 4b34 ldr r3, [pc, #208] ; (1404c <_lv_txt_get_size+0x110>) 13f7c: 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; 13f7e: 9b02 ldr r3, [sp, #8] 13f80: 2208 movs r2, #8 13f82: 5e9b ldrsh r3, [r3, r2] 13f84: 9307 str r3, [sp, #28] uint16_t letter_height = lv_font_get_line_height(font); 13f86: b29a uxth r2, r3 while(text[line_start] != '\0') { 13f88: 464b mov r3, r9 13f8a: 781b ldrb r3, [r3, #0] 13f8c: 2b00 cmp r3, #0 13f8e: d058 beq.n 14042 <_lv_txt_get_size+0x106> 13f90: 464d mov r5, r9 13f92: 2600 movs r6, #0 new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 13f94: 4b2e ldr r3, [pc, #184] ; (14050 <_lv_txt_get_size+0x114>) 13f96: 469b mov fp, r3 if((unsigned long)size_res->y + (unsigned long)letter_height + (unsigned long)line_space > LV_MAX_OF(lv_coord_t)) { 13f98: 9b06 ldr r3, [sp, #24] 13f9a: 469a mov sl, r3 13f9c: 4492 add sl, r2 13f9e: 4653 mov r3, sl 13fa0: 466a mov r2, sp 13fa2: 8293 strh r3, [r2, #20] 13fa4: 8a93 ldrh r3, [r2, #20] 13fa6: 4698 mov r8, r3 13fa8: e014 b.n 13fd4 <_lv_txt_get_size+0x98> LV_LOG_WARN("lv_txt_get_size: integer overflow while calculating text height"); 13faa: 4b2a ldr r3, [pc, #168] ; (14054 <_lv_txt_get_size+0x118>) 13fac: 9300 str r3, [sp, #0] 13fae: 4b2a ldr r3, [pc, #168] ; (14058 <_lv_txt_get_size+0x11c>) 13fb0: 2271 movs r2, #113 ; 0x71 13fb2: 492a ldr r1, [pc, #168] ; (1405c <_lv_txt_get_size+0x120>) 13fb4: 2002 movs r0, #2 13fb6: 4c2a ldr r4, [pc, #168] ; (14060 <_lv_txt_get_size+0x124>) 13fb8: 47a0 blx r4 } 13fba: b009 add sp, #36 ; 0x24 13fbc: bc3c pop {r2, r3, r4, r5} 13fbe: 4690 mov r8, r2 13fc0: 4699 mov r9, r3 13fc2: 46a2 mov sl, r4 13fc4: 46ab mov fp, r5 13fc6: bdf0 pop {r4, r5, r6, r7, pc} size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 13fc8: 8022 strh r2, [r4, #0] while(text[line_start] != '\0') { 13fca: 464b mov r3, r9 13fcc: 199d adds r5, r3, r6 13fce: 782b ldrb r3, [r5, #0] 13fd0: 2b00 cmp r3, #0 13fd2: d01f beq.n 14014 <_lv_txt_get_size+0xd8> new_line_start += _lv_txt_get_next_line(&text[line_start], font, letter_space, max_width, flag); 13fd4: 9700 str r7, [sp, #0] 13fd6: 9b04 ldr r3, [sp, #16] 13fd8: 9a03 ldr r2, [sp, #12] 13fda: 9902 ldr r1, [sp, #8] 13fdc: 0028 movs r0, r5 13fde: 47d8 blx fp 13fe0: 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)) { 13fe2: 2202 movs r2, #2 13fe4: 5ea3 ldrsh r3, [r4, r2] 13fe6: 4652 mov r2, sl 13fe8: 18d1 adds r1, r2, r3 13fea: 4a1e ldr r2, [pc, #120] ; (14064 <_lv_txt_get_size+0x128>) 13fec: 4291 cmp r1, r2 13fee: d8dc bhi.n 13faa <_lv_txt_get_size+0x6e> 13ff0: 4642 mov r2, r8 13ff2: 9205 str r2, [sp, #20] size_res->y += line_space; 13ff4: 4443 add r3, r8 13ff6: 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, 13ff8: 9700 str r7, [sp, #0] 13ffa: 9b03 ldr r3, [sp, #12] 13ffc: 9a02 ldr r2, [sp, #8] 13ffe: 0001 movs r1, r0 14000: 0028 movs r0, r5 14002: 4d19 ldr r5, [pc, #100] ; (14068 <_lv_txt_get_size+0x12c>) 14004: 47a8 blx r5 size_res->x = LV_MATH_MAX(act_line_length, size_res->x); 14006: 8823 ldrh r3, [r4, #0] 14008: 1c1a adds r2, r3, #0 1400a: b21b sxth r3, r3 1400c: 4283 cmp r3, r0 1400e: dadb bge.n 13fc8 <_lv_txt_get_size+0x8c> 14010: 1c02 adds r2, r0, #0 14012: e7d9 b.n 13fc8 <_lv_txt_get_size+0x8c> if((line_start != 0) && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) { 14014: 2e00 cmp r6, #0 14016: d006 beq.n 14026 <_lv_txt_get_size+0xea> 14018: 002e movs r6, r5 1401a: 3e01 subs r6, #1 1401c: 7833 ldrb r3, [r6, #0] 1401e: 2b0a cmp r3, #10 14020: d009 beq.n 14036 <_lv_txt_get_size+0xfa> 14022: 2b0d cmp r3, #13 14024: d007 beq.n 14036 <_lv_txt_get_size+0xfa> if(size_res->y == 0) 14026: 2202 movs r2, #2 14028: 5ea3 ldrsh r3, [r4, r2] 1402a: 2b00 cmp r3, #0 1402c: d009 beq.n 14042 <_lv_txt_get_size+0x106> size_res->y -= line_space; 1402e: 9a06 ldr r2, [sp, #24] 14030: 1a9b subs r3, r3, r2 14032: 8063 strh r3, [r4, #2] 14034: e7c1 b.n 13fba <_lv_txt_get_size+0x7e> size_res->y += letter_height + line_space; 14036: 8863 ldrh r3, [r4, #2] 14038: 9a05 ldr r2, [sp, #20] 1403a: 4694 mov ip, r2 1403c: 4463 add r3, ip 1403e: 8063 strh r3, [r4, #2] 14040: e7f1 b.n 14026 <_lv_txt_get_size+0xea> size_res->y = letter_height; 14042: 466b mov r3, sp 14044: 8b9b ldrh r3, [r3, #28] 14046: 8063 strh r3, [r4, #2] 14048: e7b7 b.n 13fba <_lv_txt_get_size+0x7e> 1404a: 46c0 nop ; (mov r8, r8) 1404c: 00007c18 .word 0x00007c18 14050: 00013c21 .word 0x00013c21 14054: 0002acb8 .word 0x0002acb8 14058: 0002ac6c .word 0x0002ac6c 1405c: 0002ac88 .word 0x0002ac88 14060: 00012159 .word 0x00012159 14064: 00007fff .word 0x00007fff 14068: 00013e99 .word 0x00013e99 0001406c <_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)) { 1406c: b5f0 push {r4, r5, r6, r7, lr} 1406e: 46d6 mov lr, sl 14070: 464f mov r7, r9 14072: 4646 mov r6, r8 14074: b5c0 push {r6, r7, lr} 14076: b082 sub sp, #8 14078: 9001 str r0, [sp, #4] 1407a: 000f movs r7, r1 1407c: 1e14 subs r4, r2, #0 1407e: 4699 mov r9, r3 14080: 9b0a ldr r3, [sp, #40] ; 0x28 14082: 469a mov sl, r3 const char * middle; int32_t c; for(middle = base; n != 0;) { 14084: d01d beq.n 140c2 <_lv_utils_bsearch+0x56> middle += (n / 2) * size; if((c = (*cmp)(key, middle)) > 0) { n = (n / 2) - ((n & 1) == 0); 14086: 2301 movs r3, #1 14088: 4698 mov r8, r3 1408a: e004 b.n 14096 <_lv_utils_bsearch+0x2a> base = (middle += size); } else if(c < 0) { 1408c: 2800 cmp r0, #0 1408e: da1a bge.n 140c6 <_lv_utils_bsearch+0x5a> n /= 2; 14090: 0034 movs r4, r6 for(middle = base; n != 0;) { 14092: 2c00 cmp r4, #0 14094: d00e beq.n 140b4 <_lv_utils_bsearch+0x48> middle += (n / 2) * size; 14096: 0866 lsrs r6, r4, #1 14098: 464d mov r5, r9 1409a: 4375 muls r5, r6 1409c: 197d adds r5, r7, r5 if((c = (*cmp)(key, middle)) > 0) { 1409e: 0029 movs r1, r5 140a0: 9801 ldr r0, [sp, #4] 140a2: 47d0 blx sl 140a4: 2800 cmp r0, #0 140a6: ddf1 ble.n 1408c <_lv_utils_bsearch+0x20> n = (n / 2) - ((n & 1) == 0); 140a8: 4643 mov r3, r8 140aa: 43a3 bics r3, r4 140ac: 1af4 subs r4, r6, r3 base = (middle += size); 140ae: 444d add r5, r9 140b0: 002f movs r7, r5 140b2: e7ee b.n 14092 <_lv_utils_bsearch+0x26> } else { return (char *)middle; } } return NULL; 140b4: 2000 movs r0, #0 } 140b6: b002 add sp, #8 140b8: bc1c pop {r2, r3, r4} 140ba: 4690 mov r8, r2 140bc: 4699 mov r9, r3 140be: 46a2 mov sl, r4 140c0: bdf0 pop {r4, r5, r6, r7, pc} return NULL; 140c2: 2000 movs r0, #0 140c4: e7f7 b.n 140b6 <_lv_utils_bsearch+0x4a> middle += (n / 2) * size; 140c6: 0028 movs r0, r5 140c8: e7f5 b.n 140b6 <_lv_utils_bsearch+0x4a> ... 000140cc : * 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; 140cc: 4b01 ldr r3, [pc, #4] ; (140d4 ) 140ce: 6018 str r0, [r3, #0] } 140d0: 4770 bx lr 140d2: 46c0 nop ; (mov r8, r8) 140d4: 20004c44 .word 0x20004c44 000140d8 : * 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; 140d8: 4b01 ldr r3, [pc, #4] ; (140e0 ) 140da: 681b ldr r3, [r3, #0] 140dc: 68d8 ldr r0, [r3, #12] } 140de: 4770 bx lr 140e0: 20004c44 .word 0x20004c44 000140e4 : { return act_theme->flags; } void lv_theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 140e4: b510 push {r4, lr} act_theme->apply_xcb(obj, name); 140e6: 4b02 ldr r3, [pc, #8] ; (140f0 ) 140e8: 681b ldr r3, [r3, #0] 140ea: 681b ldr r3, [r3, #0] 140ec: 4798 blx r3 } 140ee: bd10 pop {r4, pc} 140f0: 20004c44 .word 0x20004c44 000140f4 : return &theme; } static void theme_apply(lv_obj_t * obj, lv_theme_style_t name) { 140f4: b5f0 push {r4, r5, r6, r7, lr} 140f6: 46ce mov lr, r9 140f8: 4647 mov r7, r8 140fa: b580 push {r7, lr} 140fc: b083 sub sp, #12 140fe: 0004 movs r4, r0 lv_style_list_t * list; switch(name) { 14100: 2928 cmp r1, #40 ; 0x28 14102: d80e bhi.n 14122 14104: 0089 lsls r1, r1, #2 14106: 4be4 ldr r3, [pc, #912] ; (14498 ) 14108: 585b ldr r3, [r3, r1] 1410a: 469f mov pc, r3 case LV_THEME_NONE: break; case LV_THEME_SCR: lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 1410c: 2100 movs r1, #0 1410e: 4be3 ldr r3, [pc, #908] ; (1449c ) 14110: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 14112: 2100 movs r1, #0 14114: 0020 movs r0, r4 14116: 4be2 ldr r3, [pc, #904] ; (144a0 ) 14118: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 1411a: 4be2 ldr r3, [pc, #904] ; (144a4 ) 1411c: 6819 ldr r1, [r3, #0] 1411e: 4be2 ldr r3, [pc, #904] ; (144a8 ) 14120: 4798 blx r3 #endif default: break; } lv_obj_refresh_style(obj, LV_STYLE_PROP_ALL); 14122: 21ff movs r1, #255 ; 0xff 14124: 0020 movs r0, r4 14126: 4be1 ldr r3, [pc, #900] ; (144ac ) 14128: 4798 blx r3 } 1412a: b003 add sp, #12 1412c: bc0c pop {r2, r3} 1412e: 4690 mov r8, r2 14130: 4699 mov r9, r3 14132: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 14134: 2100 movs r1, #0 14136: 4bd9 ldr r3, [pc, #868] ; (1449c ) 14138: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); 1413a: 2100 movs r1, #0 1413c: 0020 movs r0, r4 1413e: 4bd8 ldr r3, [pc, #864] ; (144a0 ) 14140: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 14142: 4bd8 ldr r3, [pc, #864] ; (144a4 ) 14144: 6819 ldr r1, [r3, #0] 14146: 3104 adds r1, #4 14148: 4bd7 ldr r3, [pc, #860] ; (144a8 ) 1414a: 4798 blx r3 break; 1414c: e7e9 b.n 14122 lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN); 1414e: 2100 movs r1, #0 14150: 4bd2 ldr r3, [pc, #840] ; (1449c ) 14152: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN); 14154: 2100 movs r1, #0 14156: 0020 movs r0, r4 14158: 4bd1 ldr r3, [pc, #836] ; (144a0 ) 1415a: 4798 blx r3 _lv_style_list_add_style(list, &styles->bg); 1415c: 4bd1 ldr r3, [pc, #836] ; (144a4 ) 1415e: 6819 ldr r1, [r3, #0] 14160: 3104 adds r1, #4 14162: 4bd1 ldr r3, [pc, #836] ; (144a8 ) 14164: 4798 blx r3 break; 14166: e7dc b.n 14122 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 14168: 2100 movs r1, #0 1416a: 4bcc ldr r3, [pc, #816] ; (1449c ) 1416c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 1416e: 2100 movs r1, #0 14170: 0020 movs r0, r4 14172: 4bcb ldr r3, [pc, #812] ; (144a0 ) 14174: 4798 blx r3 _lv_style_list_add_style(list, &styles->btn); 14176: 4bcb ldr r3, [pc, #812] ; (144a4 ) 14178: 6819 ldr r1, [r3, #0] 1417a: 3110 adds r1, #16 1417c: 4bca ldr r3, [pc, #808] ; (144a8 ) 1417e: 4798 blx r3 break; 14180: e7cf b.n 14122 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG); 14182: 2100 movs r1, #0 14184: 4bc5 ldr r3, [pc, #788] ; (1449c ) 14186: 4699 mov r9, r3 14188: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); 1418a: 2100 movs r1, #0 1418c: 0020 movs r0, r4 1418e: 4fc4 ldr r7, [pc, #784] ; (144a0 ) 14190: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14192: 4ec4 ldr r6, [pc, #784] ; (144a4 ) 14194: 6833 ldr r3, [r6, #0] 14196: 1d19 adds r1, r3, #4 14198: 9001 str r0, [sp, #4] 1419a: 4dc3 ldr r5, [pc, #780] ; (144a8 ) 1419c: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 1419e: 6831 ldr r1, [r6, #0] 141a0: 3118 adds r1, #24 141a2: 9801 ldr r0, [sp, #4] 141a4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN); 141a6: 2101 movs r1, #1 141a8: 0020 movs r0, r4 141aa: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN); 141ac: 2101 movs r1, #1 141ae: 0020 movs r0, r4 141b0: 47b8 blx r7 141b2: 0007 movs r7, r0 _lv_style_list_add_style(list, &styles->bg); 141b4: 6833 ldr r3, [r6, #0] 141b6: 1d19 adds r1, r3, #4 141b8: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 141ba: 6831 ldr r1, [r6, #0] 141bc: 3108 adds r1, #8 141be: 0038 movs r0, r7 141c0: 47a8 blx r5 break; 141c2: e7ae b.n 14122 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG); 141c4: 2100 movs r1, #0 141c6: 4bb5 ldr r3, [pc, #724] ; (1449c ) 141c8: 4699 mov r9, r3 141ca: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); 141cc: 2100 movs r1, #0 141ce: 0020 movs r0, r4 141d0: 4fb3 ldr r7, [pc, #716] ; (144a0 ) 141d2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 141d4: 4eb3 ldr r6, [pc, #716] ; (144a4 ) 141d6: 6831 ldr r1, [r6, #0] 141d8: 9001 str r0, [sp, #4] 141da: 4db3 ldr r5, [pc, #716] ; (144a8 ) 141dc: 47a8 blx r5 _lv_style_list_add_style(list, &styles->kb_bg); 141de: 6831 ldr r1, [r6, #0] 141e0: 3168 adds r1, #104 ; 0x68 141e2: 9801 ldr r0, [sp, #4] 141e4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN); 141e6: 2101 movs r1, #1 141e8: 0020 movs r0, r4 141ea: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); 141ec: 2101 movs r1, #1 141ee: 0020 movs r0, r4 141f0: 47b8 blx r7 141f2: 0007 movs r7, r0 _lv_style_list_add_style(list, &styles->bg); 141f4: 6833 ldr r3, [r6, #0] 141f6: 1d19 adds r1, r3, #4 141f8: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 141fa: 6831 ldr r1, [r6, #0] 141fc: 3108 adds r1, #8 141fe: 0038 movs r0, r7 14200: 47a8 blx r5 break; 14202: e78e b.n 14122 lv_obj_clean_style_list(obj, LV_BAR_PART_BG); 14204: 2100 movs r1, #0 14206: 4ba5 ldr r3, [pc, #660] ; (1449c ) 14208: 4698 mov r8, r3 1420a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); 1420c: 2100 movs r1, #0 1420e: 0020 movs r0, r4 14210: 4fa3 ldr r7, [pc, #652] ; (144a0 ) 14212: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14214: 4ea3 ldr r6, [pc, #652] ; (144a4 ) 14216: 6831 ldr r1, [r6, #0] 14218: 3124 adds r1, #36 ; 0x24 1421a: 4da3 ldr r5, [pc, #652] ; (144a8 ) 1421c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC); 1421e: 2101 movs r1, #1 14220: 0020 movs r0, r4 14222: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); 14224: 2101 movs r1, #1 14226: 0020 movs r0, r4 14228: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 1422a: 6831 ldr r1, [r6, #0] 1422c: 3128 adds r1, #40 ; 0x28 1422e: 47a8 blx r5 break; 14230: e777 b.n 14122 lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG); 14232: 2100 movs r1, #0 14234: 4b99 ldr r3, [pc, #612] ; (1449c ) 14236: 4698 mov r8, r3 14238: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); 1423a: 2100 movs r1, #0 1423c: 0020 movs r0, r4 1423e: 4f98 ldr r7, [pc, #608] ; (144a0 ) 14240: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14242: 4e98 ldr r6, [pc, #608] ; (144a4 ) 14244: 6831 ldr r1, [r6, #0] 14246: 3124 adds r1, #36 ; 0x24 14248: 4d97 ldr r5, [pc, #604] ; (144a8 ) 1424a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC); 1424c: 2101 movs r1, #1 1424e: 0020 movs r0, r4 14250: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); 14252: 2101 movs r1, #1 14254: 0020 movs r0, r4 14256: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14258: 6831 ldr r1, [r6, #0] 1425a: 3128 adds r1, #40 ; 0x28 1425c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB); 1425e: 2102 movs r1, #2 14260: 0020 movs r0, r4 14262: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); 14264: 2102 movs r1, #2 14266: 0020 movs r0, r4 14268: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sw_knob); 1426a: 6831 ldr r1, [r6, #0] 1426c: 319c adds r1, #156 ; 0x9c 1426e: 47a8 blx r5 break; 14270: e757 b.n 14122 lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN); 14272: 2100 movs r1, #0 14274: 4b89 ldr r3, [pc, #548] ; (1449c ) 14276: 4798 blx r3 break; 14278: e753 b.n 14122 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 1427a: 2100 movs r1, #0 1427c: 4b87 ldr r3, [pc, #540] ; (1449c ) 1427e: 4798 blx r3 break; 14280: e74f b.n 14122 lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN); 14282: 2100 movs r1, #0 14284: 4b85 ldr r3, [pc, #532] ; (1449c ) 14286: 4798 blx r3 break; 14288: e74b b.n 14122 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 1428a: 2100 movs r1, #0 1428c: 4b83 ldr r3, [pc, #524] ; (1449c ) 1428e: 4798 blx r3 break; 14290: e747 b.n 14122 lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN); 14292: 2100 movs r1, #0 14294: 4b81 ldr r3, [pc, #516] ; (1449c ) 14296: 4798 blx r3 break; 14298: e743 b.n 14122 lv_obj_clean_style_list(obj, LV_ARC_PART_BG); 1429a: 2100 movs r1, #0 1429c: 4b7f ldr r3, [pc, #508] ; (1449c ) 1429e: 4699 mov r9, r3 142a0: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); 142a2: 2100 movs r1, #0 142a4: 0020 movs r0, r4 142a6: 4f7e ldr r7, [pc, #504] ; (144a0 ) 142a8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 142aa: 4e7e ldr r6, [pc, #504] ; (144a4 ) 142ac: 6833 ldr r3, [r6, #0] 142ae: 1d19 adds r1, r3, #4 142b0: 9001 str r0, [sp, #4] 142b2: 4d7d ldr r5, [pc, #500] ; (144a8 ) 142b4: 47a8 blx r5 _lv_style_list_add_style(list, &styles->arc_bg); 142b6: 6831 ldr r1, [r6, #0] 142b8: 3120 adds r1, #32 142ba: 9801 ldr r0, [sp, #4] 142bc: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ARC_PART_INDIC); 142be: 2101 movs r1, #1 142c0: 0020 movs r0, r4 142c2: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); 142c4: 2101 movs r1, #1 142c6: 0020 movs r0, r4 142c8: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 142ca: 6831 ldr r1, [r6, #0] 142cc: 311c adds r1, #28 142ce: 47a8 blx r5 break; 142d0: e727 b.n 14122 lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG); 142d2: 2100 movs r1, #0 142d4: 4b71 ldr r3, [pc, #452] ; (1449c ) 142d6: 4698 mov r8, r3 142d8: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); 142da: 2100 movs r1, #0 142dc: 0020 movs r0, r4 142de: 4f70 ldr r7, [pc, #448] ; (144a0 ) 142e0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_bg); 142e2: 4e70 ldr r6, [pc, #448] ; (144a4 ) 142e4: 6831 ldr r1, [r6, #0] 142e6: 3120 adds r1, #32 142e8: 4d6f ldr r5, [pc, #444] ; (144a8 ) 142ea: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINNER_PART_INDIC); 142ec: 2101 movs r1, #1 142ee: 0020 movs r0, r4 142f0: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); 142f2: 2101 movs r1, #1 142f4: 0020 movs r0, r4 142f6: 47b8 blx r7 _lv_style_list_add_style(list, &styles->arc_indic); 142f8: 6831 ldr r1, [r6, #0] 142fa: 311c adds r1, #28 142fc: 47a8 blx r5 break; 142fe: e710 b.n 14122 lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG); 14300: 2100 movs r1, #0 14302: 4b66 ldr r3, [pc, #408] ; (1449c ) 14304: 4699 mov r9, r3 14306: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); 14308: 2100 movs r1, #0 1430a: 0020 movs r0, r4 1430c: 4f64 ldr r7, [pc, #400] ; (144a0 ) 1430e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_bg); 14310: 4e64 ldr r6, [pc, #400] ; (144a4 ) 14312: 6831 ldr r1, [r6, #0] 14314: 3124 adds r1, #36 ; 0x24 14316: 9001 str r0, [sp, #4] 14318: 4d63 ldr r5, [pc, #396] ; (144a8 ) 1431a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->slider_bg); 1431c: 6831 ldr r1, [r6, #0] 1431e: 3194 adds r1, #148 ; 0x94 14320: 9801 ldr r0, [sp, #4] 14322: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC); 14324: 2101 movs r1, #1 14326: 0020 movs r0, r4 14328: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); 1432a: 2101 movs r1, #1 1432c: 0020 movs r0, r4 1432e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bar_indic); 14330: 6831 ldr r1, [r6, #0] 14332: 3128 adds r1, #40 ; 0x28 14334: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB); 14336: 2102 movs r1, #2 14338: 0020 movs r0, r4 1433a: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); 1433c: 2102 movs r1, #2 1433e: 0020 movs r0, r4 14340: 47b8 blx r7 _lv_style_list_add_style(list, &styles->slider_knob); 14342: 6831 ldr r1, [r6, #0] 14344: 3190 adds r1, #144 ; 0x90 14346: 47a8 blx r5 break; 14348: e6eb b.n 14122 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG); 1434a: 2100 movs r1, #0 1434c: 4b53 ldr r3, [pc, #332] ; (1449c ) 1434e: 4698 mov r8, r3 14350: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); 14352: 2100 movs r1, #0 14354: 0020 movs r0, r4 14356: 4e52 ldr r6, [pc, #328] ; (144a0 ) 14358: 47b0 blx r6 _lv_style_list_add_style(list, &styles->cb_bg); 1435a: 4f52 ldr r7, [pc, #328] ; (144a4 ) 1435c: 6839 ldr r1, [r7, #0] 1435e: 314c adds r1, #76 ; 0x4c 14360: 4d51 ldr r5, [pc, #324] ; (144a8 ) 14362: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET); 14364: 2140 movs r1, #64 ; 0x40 14366: 0020 movs r0, r4 14368: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); 1436a: 2140 movs r1, #64 ; 0x40 1436c: 0020 movs r0, r4 1436e: 47b0 blx r6 14370: 0006 movs r6, r0 _lv_style_list_add_style(list, &styles->btn); 14372: 6839 ldr r1, [r7, #0] 14374: 3110 adds r1, #16 14376: 47a8 blx r5 _lv_style_list_add_style(list, &styles->cb_bullet); 14378: 6839 ldr r1, [r7, #0] 1437a: 3150 adds r1, #80 ; 0x50 1437c: 0030 movs r0, r6 1437e: 47a8 blx r5 break; 14380: e6cf b.n 14122 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG); 14382: 2100 movs r1, #0 14384: 4b45 ldr r3, [pc, #276] ; (1449c ) 14386: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); 14388: 2100 movs r1, #0 1438a: 0020 movs r0, r4 1438c: 4b44 ldr r3, [pc, #272] ; (144a0 ) 1438e: 4798 blx r3 14390: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 14392: 4f44 ldr r7, [pc, #272] ; (144a4 ) 14394: 683b ldr r3, [r7, #0] 14396: 1d19 adds r1, r3, #4 14398: 4e43 ldr r6, [pc, #268] ; (144a8 ) 1439a: 47b0 blx r6 _lv_style_list_add_style(list, &styles->mbox_bg); 1439c: 6839 ldr r1, [r7, #0] 1439e: 317c adds r1, #124 ; 0x7c 143a0: 0028 movs r0, r5 143a2: 47b0 blx r6 break; 143a4: e6bd b.n 14122 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG); 143a6: 2140 movs r1, #64 ; 0x40 143a8: 4b3c ldr r3, [pc, #240] ; (1449c ) 143aa: 4698 mov r8, r3 143ac: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); 143ae: 2140 movs r1, #64 ; 0x40 143b0: 0020 movs r0, r4 143b2: 4f3b ldr r7, [pc, #236] ; (144a0 ) 143b4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 143b6: 4e3b ldr r6, [pc, #236] ; (144a4 ) 143b8: 6831 ldr r1, [r6, #0] 143ba: 3118 adds r1, #24 143bc: 4d3a ldr r5, [pc, #232] ; (144a8 ) 143be: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN); 143c0: 2141 movs r1, #65 ; 0x41 143c2: 0020 movs r0, r4 143c4: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); 143c6: 2141 movs r1, #65 ; 0x41 143c8: 0020 movs r0, r4 143ca: 47b8 blx r7 _lv_style_list_add_style(list, &styles->btn); 143cc: 6831 ldr r1, [r6, #0] 143ce: 3110 adds r1, #16 143d0: 47a8 blx r5 break; 143d2: e6a6 b.n 14122 lv_obj_clean_style_list(obj, LV_LED_PART_MAIN); 143d4: 2100 movs r1, #0 143d6: 4b31 ldr r3, [pc, #196] ; (1449c ) 143d8: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); 143da: 2100 movs r1, #0 143dc: 0020 movs r0, r4 143de: 4b30 ldr r3, [pc, #192] ; (144a0 ) 143e0: 4798 blx r3 _lv_style_list_add_style(list, &styles->led); 143e2: 4b30 ldr r3, [pc, #192] ; (144a4 ) 143e4: 6819 ldr r1, [r3, #0] 143e6: 316c adds r1, #108 ; 0x6c 143e8: 4b2f ldr r3, [pc, #188] ; (144a8 ) 143ea: 4798 blx r3 break; 143ec: e699 b.n 14122 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 143ee: 2100 movs r1, #0 143f0: 4b2a ldr r3, [pc, #168] ; (1449c ) 143f2: 4698 mov r8, r3 143f4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); 143f6: 2100 movs r1, #0 143f8: 0020 movs r0, r4 143fa: 4f29 ldr r7, [pc, #164] ; (144a0 ) 143fc: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 143fe: 4e29 ldr r6, [pc, #164] ; (144a4 ) 14400: 6833 ldr r3, [r6, #0] 14402: 1d19 adds r1, r3, #4 14404: 4d28 ldr r5, [pc, #160] ; (144a8 ) 14406: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 14408: 2140 movs r1, #64 ; 0x40 1440a: 0020 movs r0, r4 1440c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 1440e: 2140 movs r1, #64 ; 0x40 14410: 0020 movs r0, r4 14412: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_inner); 14414: 6831 ldr r1, [r6, #0] 14416: 3114 adds r1, #20 14418: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLBAR); 1441a: 2101 movs r1, #1 1441c: 0020 movs r0, r4 1441e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR); 14420: 2101 movs r1, #1 14422: 0020 movs r0, r4 14424: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14426: 6831 ldr r1, [r6, #0] 14428: 3180 adds r1, #128 ; 0x80 1442a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 1442c: 2102 movs r1, #2 1442e: 0020 movs r0, r4 14430: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH); 14432: 2102 movs r1, #2 14434: 0020 movs r0, r4 14436: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 14438: 6831 ldr r1, [r6, #0] 1443a: 3184 adds r1, #132 ; 0x84 1443c: 47a8 blx r5 break; 1443e: e670 b.n 14122 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG); 14440: 2100 movs r1, #0 14442: 4d16 ldr r5, [pc, #88] ; (1449c ) 14444: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); 14446: 2100 movs r1, #0 14448: 0020 movs r0, r4 1444a: 4b15 ldr r3, [pc, #84] ; (144a0 ) 1444c: 4698 mov r8, r3 1444e: 4798 blx r3 _lv_style_list_add_style(list, &styles->scr); 14450: 4f14 ldr r7, [pc, #80] ; (144a4 ) 14452: 6839 ldr r1, [r7, #0] 14454: 4e14 ldr r6, [pc, #80] ; (144a8 ) 14456: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); 14458: 2140 movs r1, #64 ; 0x40 1445a: 0020 movs r0, r4 1445c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG); 1445e: 2141 movs r1, #65 ; 0x41 14460: 0020 movs r0, r4 14462: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); 14464: 2141 movs r1, #65 ; 0x41 14466: 0020 movs r0, r4 14468: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 1446a: 6839 ldr r1, [r7, #0] 1446c: 31a8 adds r1, #168 ; 0xa8 1446e: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC); 14470: 2143 movs r1, #67 ; 0x43 14472: 0020 movs r0, r4 14474: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); 14476: 2143 movs r1, #67 ; 0x43 14478: 0020 movs r0, r4 1447a: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_indic); 1447c: 6839 ldr r1, [r7, #0] 1447e: 31ac adds r1, #172 ; 0xac 14480: 47b0 blx r6 lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 14482: 2142 movs r1, #66 ; 0x42 14484: 0020 movs r0, r4 14486: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); 14488: 2142 movs r1, #66 ; 0x42 1448a: 0020 movs r0, r4 1448c: 47c0 blx r8 _lv_style_list_add_style(list, &styles->tabview_btns); 1448e: 6839 ldr r1, [r7, #0] 14490: 31a4 adds r1, #164 ; 0xa4 14492: 47b0 blx r6 break; 14494: e645 b.n 14122 14496: 46c0 nop ; (mov r8, r8) 14498: 0002acf8 .word 0x0002acf8 1449c: 00002625 .word 0x00002625 144a0: 00002549 .word 0x00002549 144a4: 20004c4c .word 0x20004c4c 144a8: 00005c65 .word 0x00005c65 144ac: 00002ff5 .word 0x00002ff5 lv_obj_clean_style_list(obj, LV_PAGE_PART_BG); 144b0: 2100 movs r1, #0 144b2: 4df3 ldr r5, [pc, #972] ; (14880 ) 144b4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_PAGE_PART_SCROLLABLE); 144b6: 2140 movs r1, #64 ; 0x40 144b8: 0020 movs r0, r4 144ba: 47a8 blx r5 list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); 144bc: 2140 movs r1, #64 ; 0x40 144be: 0020 movs r0, r4 144c0: 4bf0 ldr r3, [pc, #960] ; (14884 ) 144c2: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 144c4: 4bf0 ldr r3, [pc, #960] ; (14888 ) 144c6: 6819 ldr r1, [r3, #0] 144c8: 31b0 adds r1, #176 ; 0xb0 144ca: 4bf0 ldr r3, [pc, #960] ; (1488c ) 144cc: 4798 blx r3 break; 144ce: e628 b.n 14122 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG); 144d0: 2100 movs r1, #0 144d2: 4beb ldr r3, [pc, #940] ; (14880 ) 144d4: 4698 mov r8, r3 144d6: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); 144d8: 2100 movs r1, #0 144da: 0020 movs r0, r4 144dc: 4fe9 ldr r7, [pc, #932] ; (14884 ) 144de: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 144e0: 4ee9 ldr r6, [pc, #932] ; (14888 ) 144e2: 6831 ldr r1, [r6, #0] 144e4: 4de9 ldr r5, [pc, #932] ; (1488c ) 144e6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 144e8: 2101 movs r1, #1 144ea: 0020 movs r0, r4 144ec: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); 144ee: 2101 movs r1, #1 144f0: 0020 movs r0, r4 144f2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 144f4: 6831 ldr r1, [r6, #0] 144f6: 3180 adds r1, #128 ; 0x80 144f8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 144fa: 2102 movs r1, #2 144fc: 0020 movs r0, r4 144fe: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); 14500: 2102 movs r1, #2 14502: 0020 movs r0, r4 14504: 47b8 blx r7 _lv_style_list_add_style(list, &styles->edge_flash); 14506: 6831 ldr r1, [r6, #0] 14508: 3184 adds r1, #132 ; 0x84 1450a: 47a8 blx r5 break; 1450c: e609 b.n 14122 lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG); 1450e: 2100 movs r1, #0 14510: 4bdb ldr r3, [pc, #876] ; (14880 ) 14512: 4699 mov r9, r3 14514: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); 14516: 2100 movs r1, #0 14518: 0020 movs r0, r4 1451a: 4fda ldr r7, [pc, #872] ; (14884 ) 1451c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1451e: 4eda ldr r6, [pc, #872] ; (14888 ) 14520: 6833 ldr r3, [r6, #0] 14522: 1d19 adds r1, r3, #4 14524: 9001 str r0, [sp, #4] 14526: 4dd9 ldr r5, [pc, #868] ; (1488c ) 14528: 47a8 blx r5 _lv_style_list_add_style(list, &styles->roller_bg); 1452a: 6831 ldr r1, [r6, #0] 1452c: 3188 adds r1, #136 ; 0x88 1452e: 9801 ldr r0, [sp, #4] 14530: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_ROLLER_PART_SELECTED); 14532: 2103 movs r1, #3 14534: 0020 movs r0, r4 14536: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); 14538: 2103 movs r1, #3 1453a: 0020 movs r0, r4 1453c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->roller_sel); 1453e: 6831 ldr r1, [r6, #0] 14540: 318c adds r1, #140 ; 0x8c 14542: 47a8 blx r5 break; 14544: e5ed b.n 14122 lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN); 14546: 2100 movs r1, #0 14548: 4bcd ldr r3, [pc, #820] ; (14880 ) 1454a: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN); 1454c: 2100 movs r1, #0 1454e: 0020 movs r0, r4 14550: 4bcc ldr r3, [pc, #816] ; (14884 ) 14552: 4798 blx r3 break; 14554: e5e5 b.n 14122 lv_obj_clean_style_list(obj, LV_LIST_PART_BG); 14556: 2100 movs r1, #0 14558: 4bc9 ldr r3, [pc, #804] ; (14880 ) 1455a: 4698 mov r8, r3 1455c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); 1455e: 2100 movs r1, #0 14560: 0020 movs r0, r4 14562: 4fc8 ldr r7, [pc, #800] ; (14884 ) 14564: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14566: 4ec8 ldr r6, [pc, #800] ; (14888 ) 14568: 6833 ldr r3, [r6, #0] 1456a: 1d19 adds r1, r3, #4 1456c: 9001 str r0, [sp, #4] 1456e: 4dc7 ldr r5, [pc, #796] ; (1488c ) 14570: 47a8 blx r5 _lv_style_list_add_style(list, &styles->list_bg); 14572: 6831 ldr r1, [r6, #0] 14574: 3174 adds r1, #116 ; 0x74 14576: 9801 ldr r0, [sp, #4] 14578: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLABLE); 1457a: 2140 movs r1, #64 ; 0x40 1457c: 0020 movs r0, r4 1457e: 47c0 blx r8 lv_obj_clean_style_list(obj, LV_LIST_PART_SCROLLBAR); 14580: 2101 movs r1, #1 14582: 0020 movs r0, r4 14584: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); 14586: 2101 movs r1, #1 14588: 0020 movs r0, r4 1458a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1458c: 6831 ldr r1, [r6, #0] 1458e: 3180 adds r1, #128 ; 0x80 14590: 47a8 blx r5 break; 14592: e5c6 b.n 14122 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 14594: 2100 movs r1, #0 14596: 4bba ldr r3, [pc, #744] ; (14880 ) 14598: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 1459a: 2100 movs r1, #0 1459c: 0020 movs r0, r4 1459e: 4bb9 ldr r3, [pc, #740] ; (14884 ) 145a0: 4798 blx r3 _lv_style_list_add_style(list, &styles->list_btn); 145a2: 4bb9 ldr r3, [pc, #740] ; (14888 ) 145a4: 6819 ldr r1, [r3, #0] 145a6: 3178 adds r1, #120 ; 0x78 145a8: 4bb8 ldr r3, [pc, #736] ; (1488c ) 145aa: 4798 blx r3 break; 145ac: e5b9 b.n 14122 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_MAIN); 145ae: 2100 movs r1, #0 145b0: 4bb3 ldr r3, [pc, #716] ; (14880 ) 145b2: 4699 mov r9, r3 145b4: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); 145b6: 2100 movs r1, #0 145b8: 0020 movs r0, r4 145ba: 4fb2 ldr r7, [pc, #712] ; (14884 ) 145bc: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 145be: 4eb2 ldr r6, [pc, #712] ; (14888 ) 145c0: 6833 ldr r3, [r6, #0] 145c2: 1d19 adds r1, r3, #4 145c4: 9001 str r0, [sp, #4] 145c6: 4db1 ldr r5, [pc, #708] ; (1488c ) 145c8: 47a8 blx r5 _lv_style_list_add_style(list, &styles->bg_click); 145ca: 6831 ldr r1, [r6, #0] 145cc: 3108 adds r1, #8 145ce: 9801 ldr r0, [sp, #4] 145d0: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 145d2: 6831 ldr r1, [r6, #0] 145d4: 3118 adds r1, #24 145d6: 9801 ldr r0, [sp, #4] 145d8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST); 145da: 2140 movs r1, #64 ; 0x40 145dc: 0020 movs r0, r4 145de: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); 145e0: 2140 movs r1, #64 ; 0x40 145e2: 0020 movs r0, r4 145e4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 145e6: 6833 ldr r3, [r6, #0] 145e8: 1d19 adds r1, r3, #4 145ea: 9001 str r0, [sp, #4] 145ec: 47a8 blx r5 _lv_style_list_add_style(list, &styles->ddlist_page); 145ee: 6831 ldr r1, [r6, #0] 145f0: 3154 adds r1, #84 ; 0x54 145f2: 9801 ldr r0, [sp, #4] 145f4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 145f6: 2141 movs r1, #65 ; 0x41 145f8: 0020 movs r0, r4 145fa: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); 145fc: 2141 movs r1, #65 ; 0x41 145fe: 0020 movs r0, r4 14600: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14602: 6831 ldr r1, [r6, #0] 14604: 3180 adds r1, #128 ; 0x80 14606: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED); 14608: 2142 movs r1, #66 ; 0x42 1460a: 0020 movs r0, r4 1460c: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); 1460e: 2142 movs r1, #66 ; 0x42 14610: 0020 movs r0, r4 14612: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ddlist_sel); 14614: 6831 ldr r1, [r6, #0] 14616: 3158 adds r1, #88 ; 0x58 14618: 47a8 blx r5 break; 1461a: e582 b.n 14122 lv_obj_clean_style_list(obj, LV_CHART_PART_BG); 1461c: 2100 movs r1, #0 1461e: 4b98 ldr r3, [pc, #608] ; (14880 ) 14620: 4699 mov r9, r3 14622: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); 14624: 2100 movs r1, #0 14626: 0020 movs r0, r4 14628: 4f96 ldr r7, [pc, #600] ; (14884 ) 1462a: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1462c: 4e96 ldr r6, [pc, #600] ; (14888 ) 1462e: 6833 ldr r3, [r6, #0] 14630: 1d19 adds r1, r3, #4 14632: 9001 str r0, [sp, #4] 14634: 4d95 ldr r5, [pc, #596] ; (1488c ) 14636: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_bg); 14638: 6831 ldr r1, [r6, #0] 1463a: 3140 adds r1, #64 ; 0x40 1463c: 9801 ldr r0, [sp, #4] 1463e: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 14640: 6831 ldr r1, [r6, #0] 14642: 3118 adds r1, #24 14644: 9801 ldr r0, [sp, #4] 14646: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG); 14648: 2101 movs r1, #1 1464a: 0020 movs r0, r4 1464c: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); 1464e: 2101 movs r1, #1 14650: 0020 movs r0, r4 14652: 47b8 blx r7 _lv_style_list_add_style(list, &styles->pad_small); 14654: 6831 ldr r1, [r6, #0] 14656: 3118 adds r1, #24 14658: 9001 str r0, [sp, #4] 1465a: 47a8 blx r5 _lv_style_list_add_style(list, &styles->chart_series_bg); 1465c: 6831 ldr r1, [r6, #0] 1465e: 3144 adds r1, #68 ; 0x44 14660: 9801 ldr r0, [sp, #4] 14662: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES); 14664: 2102 movs r1, #2 14666: 0020 movs r0, r4 14668: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); 1466a: 2102 movs r1, #2 1466c: 0020 movs r0, r4 1466e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->chart_series); 14670: 6831 ldr r1, [r6, #0] 14672: 3148 adds r1, #72 ; 0x48 14674: 47a8 blx r5 break; 14676: e554 b.n 14122 lv_obj_clean_style_list(obj, LV_TABLE_PART_BG); 14678: 2100 movs r1, #0 1467a: 4b81 ldr r3, [pc, #516] ; (14880 ) 1467c: 4698 mov r8, r3 1467e: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); 14680: 2100 movs r1, #0 14682: 0020 movs r0, r4 14684: 4f7f ldr r7, [pc, #508] ; (14884 ) 14686: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14688: 4e7f ldr r6, [pc, #508] ; (14888 ) 1468a: 6833 ldr r3, [r6, #0] 1468c: 1d19 adds r1, r3, #4 1468e: 4d7f ldr r5, [pc, #508] ; (1488c ) 14690: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1); 14692: 2101 movs r1, #1 14694: 0020 movs r0, r4 14696: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1); 14698: 2101 movs r1, #1 1469a: 0020 movs r0, r4 1469c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 1469e: 6831 ldr r1, [r6, #0] 146a0: 31a0 adds r1, #160 ; 0xa0 146a2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2); 146a4: 2102 movs r1, #2 146a6: 0020 movs r0, r4 146a8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2); 146aa: 2102 movs r1, #2 146ac: 0020 movs r0, r4 146ae: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 146b0: 6831 ldr r1, [r6, #0] 146b2: 31a0 adds r1, #160 ; 0xa0 146b4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3); 146b6: 2103 movs r1, #3 146b8: 0020 movs r0, r4 146ba: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3); 146bc: 2103 movs r1, #3 146be: 0020 movs r0, r4 146c0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 146c2: 6831 ldr r1, [r6, #0] 146c4: 31a0 adds r1, #160 ; 0xa0 146c6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4); 146c8: 2104 movs r1, #4 146ca: 0020 movs r0, r4 146cc: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4); 146ce: 2104 movs r1, #4 146d0: 0020 movs r0, r4 146d2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->table_cell); 146d4: 6831 ldr r1, [r6, #0] 146d6: 31a0 adds r1, #160 ; 0xa0 146d8: 47a8 blx r5 break; 146da: e522 b.n 14122 lv_obj_clean_style_list(obj, LV_WIN_PART_BG); 146dc: 2100 movs r1, #0 146de: 4b68 ldr r3, [pc, #416] ; (14880 ) 146e0: 4698 mov r8, r3 146e2: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); 146e4: 2100 movs r1, #0 146e6: 0020 movs r0, r4 146e8: 4f66 ldr r7, [pc, #408] ; (14884 ) 146ea: 47b8 blx r7 _lv_style_list_add_style(list, &styles->scr); 146ec: 4e66 ldr r6, [pc, #408] ; (14888 ) 146ee: 6831 ldr r1, [r6, #0] 146f0: 4d66 ldr r5, [pc, #408] ; (1488c ) 146f2: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_SCROLLBAR); 146f4: 2142 movs r1, #66 ; 0x42 146f6: 0020 movs r0, r4 146f8: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); 146fa: 2142 movs r1, #66 ; 0x42 146fc: 0020 movs r0, r4 146fe: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 14700: 6831 ldr r1, [r6, #0] 14702: 3180 adds r1, #128 ; 0x80 14704: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 14706: 2141 movs r1, #65 ; 0x41 14708: 0020 movs r0, r4 1470a: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); 1470c: 2141 movs r1, #65 ; 0x41 1470e: 0020 movs r0, r4 14710: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_page_scrl); 14712: 6831 ldr r1, [r6, #0] 14714: 31b0 adds r1, #176 ; 0xb0 14716: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER); 14718: 2140 movs r1, #64 ; 0x40 1471a: 0020 movs r0, r4 1471c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); 1471e: 2140 movs r1, #64 ; 0x40 14720: 0020 movs r0, r4 14722: 47b8 blx r7 _lv_style_list_add_style(list, &styles->tabview_btns_bg); 14724: 6831 ldr r1, [r6, #0] 14726: 31a8 adds r1, #168 ; 0xa8 14728: 47a8 blx r5 break; 1472a: e4fa b.n 14122 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 1472c: 2100 movs r1, #0 1472e: 4b54 ldr r3, [pc, #336] ; (14880 ) 14730: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 14732: 2100 movs r1, #0 14734: 0020 movs r0, r4 14736: 4b53 ldr r3, [pc, #332] ; (14884 ) 14738: 4798 blx r3 _lv_style_list_add_style(list, &styles->tabview_btns); 1473a: 4b53 ldr r3, [pc, #332] ; (14888 ) 1473c: 6819 ldr r1, [r3, #0] 1473e: 31a4 adds r1, #164 ; 0xa4 14740: 4b52 ldr r3, [pc, #328] ; (1488c ) 14742: 4798 blx r3 break; 14744: e4ed b.n 14122 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG); 14746: 2100 movs r1, #0 14748: 4b4d ldr r3, [pc, #308] ; (14880 ) 1474a: 4699 mov r9, r3 1474c: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); 1474e: 2100 movs r1, #0 14750: 0020 movs r0, r4 14752: 4f4c ldr r7, [pc, #304] ; (14884 ) 14754: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 14756: 4e4c ldr r6, [pc, #304] ; (14888 ) 14758: 6833 ldr r3, [r6, #0] 1475a: 1d19 adds r1, r3, #4 1475c: 9001 str r0, [sp, #4] 1475e: 4d4b ldr r5, [pc, #300] ; (1488c ) 14760: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 14762: 6831 ldr r1, [r6, #0] 14764: 3118 adds r1, #24 14766: 9801 ldr r0, [sp, #4] 14768: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 1476a: 2104 movs r1, #4 1476c: 0020 movs r0, r4 1476e: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); 14770: 2104 movs r1, #4 14772: 0020 movs r0, r4 14774: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_placeholder); 14776: 6831 ldr r1, [r6, #0] 14778: 31b8 adds r1, #184 ; 0xb8 1477a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR); 1477c: 2103 movs r1, #3 1477e: 0020 movs r0, r4 14780: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); 14782: 2103 movs r1, #3 14784: 0020 movs r0, r4 14786: 47b8 blx r7 _lv_style_list_add_style(list, &styles->ta_cursor); 14788: 6831 ldr r1, [r6, #0] 1478a: 31b4 adds r1, #180 ; 0xb4 1478c: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 1478e: 2101 movs r1, #1 14790: 0020 movs r0, r4 14792: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); 14794: 2101 movs r1, #1 14796: 0020 movs r0, r4 14798: 47b8 blx r7 _lv_style_list_add_style(list, &styles->sb); 1479a: 6831 ldr r1, [r6, #0] 1479c: 3180 adds r1, #128 ; 0x80 1479e: 47a8 blx r5 break; 147a0: e4bf b.n 14122 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG); 147a2: 2100 movs r1, #0 147a4: 4b36 ldr r3, [pc, #216] ; (14880 ) 147a6: 4699 mov r9, r3 147a8: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); 147aa: 2100 movs r1, #0 147ac: 0020 movs r0, r4 147ae: 4f35 ldr r7, [pc, #212] ; (14884 ) 147b0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 147b2: 4e35 ldr r6, [pc, #212] ; (14888 ) 147b4: 6833 ldr r3, [r6, #0] 147b6: 1d19 adds r1, r3, #4 147b8: 9001 str r0, [sp, #4] 147ba: 4d34 ldr r5, [pc, #208] ; (1488c ) 147bc: 47a8 blx r5 _lv_style_list_add_style(list, &styles->pad_small); 147be: 6831 ldr r1, [r6, #0] 147c0: 3118 adds r1, #24 147c2: 9801 ldr r0, [sp, #4] 147c4: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR); 147c6: 2103 movs r1, #3 147c8: 0020 movs r0, r4 147ca: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); 147cc: 2103 movs r1, #3 147ce: 0020 movs r0, r4 147d0: 47b8 blx r7 _lv_style_list_add_style(list, &styles->spinbox_cursor); 147d2: 6831 ldr r1, [r6, #0] 147d4: 3198 adds r1, #152 ; 0x98 147d6: 47a8 blx r5 break; 147d8: e4a3 b.n 14122 lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN); 147da: 2100 movs r1, #0 147dc: 4b28 ldr r3, [pc, #160] ; (14880 ) 147de: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); 147e0: 2100 movs r1, #0 147e2: 0020 movs r0, r4 147e4: 4b27 ldr r3, [pc, #156] ; (14884 ) 147e6: 4798 blx r3 147e8: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 147ea: 4f27 ldr r7, [pc, #156] ; (14888 ) 147ec: 683b ldr r3, [r7, #0] 147ee: 1d19 adds r1, r3, #4 147f0: 4e26 ldr r6, [pc, #152] ; (1488c ) 147f2: 47b0 blx r6 _lv_style_list_add_style(list, &styles->bg_click); 147f4: 6839 ldr r1, [r7, #0] 147f6: 3108 adds r1, #8 147f8: 0028 movs r0, r5 147fa: 47b0 blx r6 break; 147fc: e491 b.n 14122 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG); 147fe: 2100 movs r1, #0 14800: 4b1f ldr r3, [pc, #124] ; (14880 ) 14802: 4698 mov r8, r3 14804: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); 14806: 2100 movs r1, #0 14808: 0020 movs r0, r4 1480a: 4f1e ldr r7, [pc, #120] ; (14884 ) 1480c: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 1480e: 4e1e ldr r6, [pc, #120] ; (14888 ) 14810: 6833 ldr r3, [r6, #0] 14812: 1d19 adds r1, r3, #4 14814: 4d1d ldr r5, [pc, #116] ; (1488c ) 14816: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE); 14818: 2103 movs r1, #3 1481a: 0020 movs r0, r4 1481c: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); 1481e: 2103 movs r1, #3 14820: 0020 movs r0, r4 14822: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_date_nums); 14824: 6831 ldr r1, [r6, #0] 14826: 312c adds r1, #44 ; 0x2c 14828: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER); 1482a: 2101 movs r1, #1 1482c: 0020 movs r0, r4 1482e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); 14830: 2101 movs r1, #1 14832: 0020 movs r0, r4 14834: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_header); 14836: 6831 ldr r1, [r6, #0] 14838: 3130 adds r1, #48 ; 0x30 1483a: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 1483c: 2102 movs r1, #2 1483e: 0020 movs r0, r4 14840: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); 14842: 2102 movs r1, #2 14844: 0020 movs r0, r4 14846: 47b8 blx r7 _lv_style_list_add_style(list, &styles->calendar_daynames); 14848: 6831 ldr r1, [r6, #0] 1484a: 3134 adds r1, #52 ; 0x34 1484c: 47a8 blx r5 break; 1484e: e468 b.n 14122 lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN); 14850: 2100 movs r1, #0 14852: 4b0b ldr r3, [pc, #44] ; (14880 ) 14854: 4698 mov r8, r3 14856: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); 14858: 2100 movs r1, #0 1485a: 0020 movs r0, r4 1485c: 4f09 ldr r7, [pc, #36] ; (14884 ) 1485e: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_bg); 14860: 4e09 ldr r6, [pc, #36] ; (14888 ) 14862: 6831 ldr r1, [r6, #0] 14864: 3138 adds r1, #56 ; 0x38 14866: 4d09 ldr r5, [pc, #36] ; (1488c ) 14868: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_CPICKER_PART_KNOB); 1486a: 2101 movs r1, #1 1486c: 0020 movs r0, r4 1486e: 47c0 blx r8 list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); 14870: 2101 movs r1, #1 14872: 0020 movs r0, r4 14874: 47b8 blx r7 _lv_style_list_add_style(list, &styles->cpicker_indic); 14876: 6831 ldr r1, [r6, #0] 14878: 313c adds r1, #60 ; 0x3c 1487a: 47a8 blx r5 break; 1487c: e451 b.n 14122 1487e: 46c0 nop ; (mov r8, r8) 14880: 00002625 .word 0x00002625 14884: 00002549 .word 0x00002549 14888: 20004c4c .word 0x20004c4c 1488c: 00005c65 .word 0x00005c65 lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN); 14890: 2100 movs r1, #0 14892: 4b1b ldr r3, [pc, #108] ; (14900 ) 14894: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); 14896: 2100 movs r1, #0 14898: 0020 movs r0, r4 1489a: 4b1a ldr r3, [pc, #104] ; (14904 ) 1489c: 4798 blx r3 1489e: 0005 movs r5, r0 _lv_style_list_add_style(list, &styles->bg); 148a0: 4f19 ldr r7, [pc, #100] ; (14908 ) 148a2: 683b ldr r3, [r7, #0] 148a4: 1d19 adds r1, r3, #4 148a6: 4e19 ldr r6, [pc, #100] ; (1490c ) 148a8: 47b0 blx r6 _lv_style_list_add_style(list, &styles->lmeter); 148aa: 6839 ldr r1, [r7, #0] 148ac: 3170 adds r1, #112 ; 0x70 148ae: 0028 movs r0, r5 148b0: 47b0 blx r6 break; 148b2: e436 b.n 14122 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN); 148b4: 2100 movs r1, #0 148b6: 4b12 ldr r3, [pc, #72] ; (14900 ) 148b8: 4699 mov r9, r3 148ba: 4798 blx r3 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); 148bc: 2100 movs r1, #0 148be: 0020 movs r0, r4 148c0: 4f10 ldr r7, [pc, #64] ; (14904 ) 148c2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->bg); 148c4: 4e10 ldr r6, [pc, #64] ; (14908 ) 148c6: 6833 ldr r3, [r6, #0] 148c8: 1d19 adds r1, r3, #4 148ca: 9001 str r0, [sp, #4] 148cc: 4d0f ldr r5, [pc, #60] ; (1490c ) 148ce: 47a8 blx r5 _lv_style_list_add_style(list, &styles->gauge_main); 148d0: 6831 ldr r1, [r6, #0] 148d2: 315c adds r1, #92 ; 0x5c 148d4: 9801 ldr r0, [sp, #4] 148d6: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAJOR); 148d8: 2101 movs r1, #1 148da: 0020 movs r0, r4 148dc: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); 148de: 2101 movs r1, #1 148e0: 0020 movs r0, r4 148e2: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_strong); 148e4: 6831 ldr r1, [r6, #0] 148e6: 3160 adds r1, #96 ; 0x60 148e8: 47a8 blx r5 lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE); 148ea: 2102 movs r1, #2 148ec: 0020 movs r0, r4 148ee: 47c8 blx r9 list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); 148f0: 2102 movs r1, #2 148f2: 0020 movs r0, r4 148f4: 47b8 blx r7 _lv_style_list_add_style(list, &styles->gauge_needle); 148f6: 6831 ldr r1, [r6, #0] 148f8: 3164 adds r1, #100 ; 0x64 148fa: 47a8 blx r5 break; 148fc: f7ff fc11 bl 14122 14900: 00002625 .word 0x00002625 14904: 00002549 .word 0x00002549 14908: 20004c4c .word 0x20004c4c 1490c: 00005c65 .word 0x00005c65 00014910 : /********************** * STATIC FUNCTIONS **********************/ static void style_init_reset(lv_style_t * style) { 14910: b510 push {r4, lr} if(inited) lv_style_reset(style); 14912: 4b05 ldr r3, [pc, #20] ; (14928 ) 14914: 781b ldrb r3, [r3, #0] 14916: 2b00 cmp r3, #0 14918: d102 bne.n 14920 else lv_style_init(style); 1491a: 4b04 ldr r3, [pc, #16] ; (1492c ) 1491c: 4798 blx r3 } 1491e: bd10 pop {r4, pc} if(inited) lv_style_reset(style); 14920: 4b03 ldr r3, [pc, #12] ; (14930 ) 14922: 4798 blx r3 14924: e7fb b.n 1491e 14926: 46c0 nop ; (mov r8, r8) 14928: 20004c48 .word 0x20004c48 1492c: 00005b61 .word 0x00005b61 14930: 00005e01 .word 0x00005e01 00014934 : { 14934: b5f8 push {r3, r4, r5, r6, r7, lr} 14936: 46ce mov lr, r9 14938: 4647 mov r7, r8 1493a: b580 push {r7, lr} style_init_reset(&styles->scr); 1493c: 4cf9 ldr r4, [pc, #996] ; (14d24 ) 1493e: 6820 ldr r0, [r4, #0] 14940: 4bf9 ldr r3, [pc, #996] ; (14d28 ) 14942: 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) 14944: 22ff movs r2, #255 ; 0xff 14946: 212c movs r1, #44 ; 0x2c 14948: 6820 ldr r0, [r4, #0] 1494a: 4bf8 ldr r3, [pc, #992] ; (14d2c ) 1494c: 4798 blx r3 lv_style_set_bg_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR); 1494e: 6820 ldr r0, [r4, #0] 14950: 4bf7 ldr r3, [pc, #988] ; (14d30 ) 14952: 699b ldr r3, [r3, #24] 14954: 079b lsls r3, r3, #30 14956: d501 bpl.n 1495c 14958: f000 fe5d bl 15616 1495c: 2308 movs r3, #8 1495e: 2112 movs r1, #18 14960: 220b movs r2, #11 14962: 0149 lsls r1, r1, #5 14964: 02db lsls r3, r3, #11 14966: 430a orrs r2, r1 14968: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1496a: 2129 movs r1, #41 ; 0x29 1496c: 4bf1 ldr r3, [pc, #964] ; (14d34 ) 1496e: 4798 blx r3 lv_style_set_text_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14970: 4bec ldr r3, [pc, #944] ; (14d24 ) 14972: 6818 ldr r0, [r3, #0] 14974: 4bee ldr r3, [pc, #952] ; (14d30 ) 14976: 699b ldr r3, [r3, #24] 14978: 079b lsls r3, r3, #30 1497a: d501 bpl.n 14980 1497c: f000 fe50 bl 15620 14980: 231c movs r3, #28 14982: 213a movs r1, #58 ; 0x3a 14984: 221d movs r2, #29 14986: 0149 lsls r1, r1, #5 14988: 02db lsls r3, r3, #11 1498a: 430a orrs r2, r1 1498c: 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) 1498e: 49ea ldr r1, [pc, #936] ; (14d38 ) 14990: 4be8 ldr r3, [pc, #928] ; (14d34 ) 14992: 4798 blx r3 lv_style_set_value_color(&styles->scr, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 14994: 4be3 ldr r3, [pc, #908] ; (14d24 ) 14996: 6818 ldr r0, [r3, #0] 14998: 4be5 ldr r3, [pc, #916] ; (14d30 ) 1499a: 699b ldr r3, [r3, #24] 1499c: 079b lsls r3, r3, #30 1499e: d501 bpl.n 149a4 149a0: f000 fe43 bl 1562a 149a4: 231c movs r3, #28 149a6: 213a movs r1, #58 ; 0x3a 149a8: 221d movs r2, #29 149aa: 0149 lsls r1, r1, #5 149ac: 02db lsls r3, r3, #11 149ae: 430a orrs r2, r1 149b0: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 149b2: 2179 movs r1, #121 ; 0x79 149b4: 4bdf ldr r3, [pc, #892] ; (14d34 ) 149b6: 4798 blx r3 lv_style_set_text_font(&styles->scr, LV_STATE_DEFAULT, theme.font_normal); 149b8: 4edd ldr r6, [pc, #884] ; (14d30 ) 149ba: 4cda ldr r4, [pc, #872] ; (14d24 ) _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) 149bc: 68f2 ldr r2, [r6, #12] 149be: 49df ldr r1, [pc, #892] ; (14d3c ) 149c0: 6820 ldr r0, [r4, #0] 149c2: 4ddf ldr r5, [pc, #892] ; (14d40 ) 149c4: 47a8 blx r5 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 149c6: 68f2 ldr r2, [r6, #12] 149c8: 217e movs r1, #126 ; 0x7e 149ca: 6820 ldr r0, [r4, #0] 149cc: 47a8 blx r5 style_init_reset(&styles->bg); 149ce: 6823 ldr r3, [r4, #0] 149d0: 1d18 adds r0, r3, #4 149d2: 4bd5 ldr r3, [pc, #852] ; (14d28 ) 149d4: 4798 blx r3 lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 149d6: 6824 ldr r4, [r4, #0] 149d8: 3404 adds r4, #4 149da: 2000 movs r0, #0 149dc: 4bd9 ldr r3, [pc, #868] ; (14d44 ) 149de: 4798 blx r3 149e0: 300a adds r0, #10 149e2: 00c0 lsls r0, r0, #3 149e4: 2340 movs r3, #64 ; 0x40 149e6: 33ff adds r3, #255 ; 0xff 149e8: 2201 movs r2, #1 149ea: 4298 cmp r0, r3 149ec: d901 bls.n 149f2 149ee: f000 fe21 bl 15634 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 149f2: 2101 movs r1, #1 149f4: 0020 movs r0, r4 149f6: 4bd4 ldr r3, [pc, #848] ; (14d48 ) 149f8: 4798 blx r3 lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); 149fa: 4cca ldr r4, [pc, #808] ; (14d24 ) 149fc: 6823 ldr r3, [r4, #0] 149fe: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 14a00: 22ff movs r2, #255 ; 0xff 14a02: 212c movs r1, #44 ; 0x2c 14a04: 4bc9 ldr r3, [pc, #804] ; (14d2c ) 14a06: 4798 blx r3 lv_style_set_bg_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG); 14a08: 6820 ldr r0, [r4, #0] 14a0a: 3004 adds r0, #4 14a0c: 4bc8 ldr r3, [pc, #800] ; (14d30 ) 14a0e: 699b ldr r3, [r3, #24] 14a10: 079b lsls r3, r3, #30 14a12: d501 bpl.n 14a18 14a14: f000 fe19 bl 1564a 14a18: 230b movs r3, #11 14a1a: 2118 movs r1, #24 14a1c: 220e movs r2, #14 14a1e: 0149 lsls r1, r1, #5 14a20: 02db lsls r3, r3, #11 14a22: 430a orrs r2, r1 14a24: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14a26: 2129 movs r1, #41 ; 0x29 14a28: 4bc2 ldr r3, [pc, #776] ; (14d34 ) 14a2a: 4798 blx r3 lv_style_set_border_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 14a2c: 4bbd ldr r3, [pc, #756] ; (14d24 ) 14a2e: 6818 ldr r0, [r3, #0] 14a30: 3004 adds r0, #4 14a32: 4bbf ldr r3, [pc, #764] ; (14d30 ) 14a34: 699b ldr r3, [r3, #24] 14a36: 079b lsls r3, r3, #30 14a38: d501 bpl.n 14a3e 14a3a: f000 fe0b bl 15654 14a3e: 2310 movs r3, #16 14a40: 2122 movs r1, #34 ; 0x22 14a42: 2212 movs r2, #18 14a44: 0149 lsls r1, r1, #5 14a46: 02db lsls r3, r3, #11 14a48: 430a orrs r2, r1 14a4a: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14a4c: 2139 movs r1, #57 ; 0x39 14a4e: 4db9 ldr r5, [pc, #740] ; (14d34 ) 14a50: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_primary); 14a52: 4cb4 ldr r4, [pc, #720] ; (14d24 ) 14a54: 6823 ldr r3, [r4, #0] 14a56: 1d18 adds r0, r3, #4 14a58: 4eb5 ldr r6, [pc, #724] ; (14d30 ) 14a5a: 88b2 ldrh r2, [r6, #4] 14a5c: 49bb ldr r1, [pc, #748] ; (14d4c ) 14a5e: 47a8 blx r5 lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, theme.color_secondary); 14a60: 6823 ldr r3, [r4, #0] 14a62: 1d18 adds r0, r3, #4 14a64: 88f2 ldrh r2, [r6, #6] 14a66: 49ba ldr r1, [pc, #744] ; (14d50 ) 14a68: 47a8 blx r5 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 14a6a: 6824 ldr r4, [r4, #0] 14a6c: 3404 adds r4, #4 14a6e: 2000 movs r0, #0 14a70: 4bb4 ldr r3, [pc, #720] ; (14d44 ) 14a72: 4798 blx r3 14a74: 3028 adds r0, #40 ; 0x28 14a76: 0040 lsls r0, r0, #1 14a78: 2340 movs r3, #64 ; 0x40 14a7a: 33ff adds r3, #255 ; 0xff 14a7c: 2201 movs r2, #1 14a7e: 4298 cmp r0, r3 14a80: d901 bls.n 14a86 14a82: f000 fdec bl 1565e _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14a86: 2130 movs r1, #48 ; 0x30 14a88: 0020 movs r0, r4 14a8a: 4daf ldr r5, [pc, #700] ; (14d48 ) 14a8c: 47a8 blx r5 lv_style_set_border_post(&styles->bg, LV_STATE_DEFAULT, true); 14a8e: 4ca5 ldr r4, [pc, #660] ; (14d24 ) 14a90: 6823 ldr r3, [r4, #0] 14a92: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 14a94: 2201 movs r2, #1 14a96: 2133 movs r1, #51 ; 0x33 14a98: 47a8 blx r5 lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14a9a: 4da5 ldr r5, [pc, #660] ; (14d30 ) 14a9c: 6823 ldr r3, [r4, #0] 14a9e: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 14aa0: 68ea ldr r2, [r5, #12] 14aa2: 49a6 ldr r1, [pc, #664] ; (14d3c ) 14aa4: 4ba6 ldr r3, [pc, #664] ; (14d40 ) 14aa6: 4798 blx r3 lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14aa8: 6820 ldr r0, [r4, #0] 14aaa: 3004 adds r0, #4 14aac: 69ab ldr r3, [r5, #24] 14aae: 079b lsls r3, r3, #30 14ab0: d501 bpl.n 14ab6 14ab2: f000 fddf bl 15674 14ab6: 231f movs r3, #31 14ab8: 213f movs r1, #63 ; 0x3f 14aba: 221f movs r2, #31 14abc: 0149 lsls r1, r1, #5 14abe: 02db lsls r3, r3, #11 14ac0: 430a orrs r2, r1 14ac2: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14ac4: 499c ldr r1, [pc, #624] ; (14d38 ) 14ac6: 4b9b ldr r3, [pc, #620] ; (14d34 ) 14ac8: 4798 blx r3 lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); 14aca: 4c99 ldr r4, [pc, #612] ; (14d30 ) 14acc: 4d95 ldr r5, [pc, #596] ; (14d24 ) 14ace: 682b ldr r3, [r5, #0] 14ad0: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_FONT, value_font, const lv_font_t *, _ptr, scalar) 14ad2: 68e2 ldr r2, [r4, #12] 14ad4: 217e movs r1, #126 ; 0x7e 14ad6: 4b9a ldr r3, [pc, #616] ; (14d40 ) 14ad8: 4798 blx r3 lv_style_set_value_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14ada: 6828 ldr r0, [r5, #0] 14adc: 3004 adds r0, #4 14ade: 69a3 ldr r3, [r4, #24] 14ae0: 079b lsls r3, r3, #30 14ae2: d501 bpl.n 14ae8 14ae4: f000 fdcb bl 1567e 14ae8: 231f movs r3, #31 14aea: 213f movs r1, #63 ; 0x3f 14aec: 221f movs r2, #31 14aee: 0149 lsls r1, r1, #5 14af0: 02db lsls r3, r3, #11 14af2: 430a orrs r2, r1 14af4: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14af6: 2179 movs r1, #121 ; 0x79 14af8: 4b8e ldr r3, [pc, #568] ; (14d34 ) 14afa: 4798 blx r3 lv_style_set_image_recolor(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14afc: 4b89 ldr r3, [pc, #548] ; (14d24 ) 14afe: 6818 ldr r0, [r3, #0] 14b00: 3004 adds r0, #4 14b02: 4b8b ldr r3, [pc, #556] ; (14d30 ) 14b04: 699b ldr r3, [r3, #24] 14b06: 079b lsls r3, r3, #30 14b08: d501 bpl.n 14b0e 14b0a: f000 fdbd bl 15688 14b0e: 231f movs r3, #31 14b10: 213f movs r1, #63 ; 0x3f 14b12: 221f movs r2, #31 14b14: 0149 lsls r1, r1, #5 14b16: 02db lsls r3, r3, #11 14b18: 430a orrs r2, r1 14b1a: 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) 14b1c: 498d ldr r1, [pc, #564] ; (14d54 ) 14b1e: 4b85 ldr r3, [pc, #532] ; (14d34 ) 14b20: 4798 blx r3 lv_style_set_line_color(&styles->bg, LV_STATE_DEFAULT, COLOR_BG_TEXT); 14b22: 4b80 ldr r3, [pc, #512] ; (14d24 ) 14b24: 6818 ldr r0, [r3, #0] 14b26: 3004 adds r0, #4 14b28: 4b81 ldr r3, [pc, #516] ; (14d30 ) 14b2a: 699b ldr r3, [r3, #24] 14b2c: 079b lsls r3, r3, #30 14b2e: d501 bpl.n 14b34 14b30: f000 fdaf bl 15692 14b34: 231f movs r3, #31 14b36: 213f movs r1, #63 ; 0x3f 14b38: 221f movs r2, #31 14b3a: 0149 lsls r1, r1, #5 14b3c: 02db lsls r3, r3, #11 14b3e: 430a orrs r2, r1 14b40: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14b42: 2199 movs r1, #153 ; 0x99 14b44: 4b7b ldr r3, [pc, #492] ; (14d34 ) 14b46: 4798 blx r3 lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); 14b48: 4c76 ldr r4, [pc, #472] ; (14d24 ) 14b4a: 6823 ldr r3, [r4, #0] 14b4c: 1d18 adds r0, r3, #4 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 14b4e: 2201 movs r2, #1 14b50: 2190 movs r1, #144 ; 0x90 14b52: 4b7d ldr r3, [pc, #500] ; (14d48 ) 14b54: 4798 blx r3 lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14b56: 6825 ldr r5, [r4, #0] 14b58: 3504 adds r5, #4 14b5a: 2000 movs r0, #0 14b5c: 4b7e ldr r3, [pc, #504] ; (14d58 ) 14b5e: 4798 blx r3 14b60: 2801 cmp r0, #1 14b62: d801 bhi.n 14b68 14b64: f000 fd9a bl 1569c 14b68: 2000 movs r0, #0 14b6a: 4b76 ldr r3, [pc, #472] ; (14d44 ) 14b6c: 4798 blx r3 14b6e: 0103 lsls r3, r0, #4 14b70: 1a18 subs r0, r3, r0 14b72: 0040 lsls r0, r0, #1 14b74: 3050 adds r0, #80 ; 0x50 14b76: 2340 movs r3, #64 ; 0x40 14b78: 33ff adds r3, #255 ; 0xff 14b7a: 2401 movs r4, #1 14b7c: 4298 cmp r0, r3 14b7e: d901 bls.n 14b84 14b80: f000 fda5 bl 156ce 14b84: 2000 movs r0, #0 14b86: 4b6f ldr r3, [pc, #444] ; (14d44 ) 14b88: 4798 blx r3 14b8a: 0003 movs r3, r0 14b8c: 3328 adds r3, #40 ; 0x28 14b8e: 005b lsls r3, r3, #1 14b90: 2140 movs r1, #64 ; 0x40 14b92: 31ff adds r1, #255 ; 0xff 14b94: 2201 movs r2, #1 14b96: 428b cmp r3, r1 14b98: d901 bls.n 14b9e 14b9a: f000 fda5 bl 156e8 14b9e: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 14ba0: b212 sxth r2, r2 14ba2: 2112 movs r1, #18 14ba4: 0028 movs r0, r5 14ba6: 4b68 ldr r3, [pc, #416] ; (14d48 ) 14ba8: 4798 blx r3 lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14baa: 4b5e ldr r3, [pc, #376] ; (14d24 ) 14bac: 681d ldr r5, [r3, #0] 14bae: 3504 adds r5, #4 14bb0: 2000 movs r0, #0 14bb2: 4b69 ldr r3, [pc, #420] ; (14d58 ) 14bb4: 4798 blx r3 14bb6: 2801 cmp r0, #1 14bb8: d801 bhi.n 14bbe 14bba: f000 fda0 bl 156fe 14bbe: 2000 movs r0, #0 14bc0: 4b60 ldr r3, [pc, #384] ; (14d44 ) 14bc2: 4798 blx r3 14bc4: 0103 lsls r3, r0, #4 14bc6: 1a18 subs r0, r3, r0 14bc8: 0040 lsls r0, r0, #1 14bca: 3050 adds r0, #80 ; 0x50 14bcc: 2340 movs r3, #64 ; 0x40 14bce: 33ff adds r3, #255 ; 0xff 14bd0: 2401 movs r4, #1 14bd2: 4298 cmp r0, r3 14bd4: d901 bls.n 14bda 14bd6: f000 fdab bl 15730 14bda: 2000 movs r0, #0 14bdc: 4b59 ldr r3, [pc, #356] ; (14d44 ) 14bde: 4798 blx r3 14be0: 0003 movs r3, r0 14be2: 3328 adds r3, #40 ; 0x28 14be4: 005b lsls r3, r3, #1 14be6: 2140 movs r1, #64 ; 0x40 14be8: 31ff adds r1, #255 ; 0xff 14bea: 2201 movs r2, #1 14bec: 428b cmp r3, r1 14bee: d901 bls.n 14bf4 14bf0: f000 fdab bl 1574a 14bf4: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 14bf6: b212 sxth r2, r2 14bf8: 2113 movs r1, #19 14bfa: 0028 movs r0, r5 14bfc: 4b52 ldr r3, [pc, #328] ; (14d48 ) 14bfe: 4798 blx r3 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14c00: 4b48 ldr r3, [pc, #288] ; (14d24 ) 14c02: 681d ldr r5, [r3, #0] 14c04: 3504 adds r5, #4 14c06: 2000 movs r0, #0 14c08: 4b53 ldr r3, [pc, #332] ; (14d58 ) 14c0a: 4798 blx r3 14c0c: 2801 cmp r0, #1 14c0e: d801 bhi.n 14c14 14c10: f000 fda6 bl 15760 14c14: 2000 movs r0, #0 14c16: 4b4b ldr r3, [pc, #300] ; (14d44 ) 14c18: 4798 blx r3 14c1a: 0103 lsls r3, r0, #4 14c1c: 1a18 subs r0, r3, r0 14c1e: 0040 lsls r0, r0, #1 14c20: 3050 adds r0, #80 ; 0x50 14c22: 2340 movs r3, #64 ; 0x40 14c24: 33ff adds r3, #255 ; 0xff 14c26: 2401 movs r4, #1 14c28: 4298 cmp r0, r3 14c2a: d901 bls.n 14c30 14c2c: f000 fdb1 bl 15792 14c30: 2000 movs r0, #0 14c32: 4b44 ldr r3, [pc, #272] ; (14d44 ) 14c34: 4798 blx r3 14c36: 0003 movs r3, r0 14c38: 3328 adds r3, #40 ; 0x28 14c3a: 005b lsls r3, r3, #1 14c3c: 2140 movs r1, #64 ; 0x40 14c3e: 31ff adds r1, #255 ; 0xff 14c40: 2201 movs r2, #1 14c42: 428b cmp r3, r1 14c44: d901 bls.n 14c4a 14c46: f000 fdb1 bl 157ac 14c4a: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 14c4c: b212 sxth r2, r2 14c4e: 2110 movs r1, #16 14c50: 0028 movs r0, r5 14c52: 4b3d ldr r3, [pc, #244] ; (14d48 ) 14c54: 4798 blx r3 lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 14c56: 4b33 ldr r3, [pc, #204] ; (14d24 ) 14c58: 681d ldr r5, [r3, #0] 14c5a: 3504 adds r5, #4 14c5c: 2000 movs r0, #0 14c5e: 4b3e ldr r3, [pc, #248] ; (14d58 ) 14c60: 4798 blx r3 14c62: 2801 cmp r0, #1 14c64: d801 bhi.n 14c6a 14c66: f000 fdac bl 157c2 14c6a: 2000 movs r0, #0 14c6c: 4b35 ldr r3, [pc, #212] ; (14d44 ) 14c6e: 4798 blx r3 14c70: 0103 lsls r3, r0, #4 14c72: 1a18 subs r0, r3, r0 14c74: 0040 lsls r0, r0, #1 14c76: 3050 adds r0, #80 ; 0x50 14c78: 2340 movs r3, #64 ; 0x40 14c7a: 33ff adds r3, #255 ; 0xff 14c7c: 2401 movs r4, #1 14c7e: 4298 cmp r0, r3 14c80: d901 bls.n 14c86 14c82: f000 fdb7 bl 157f4 14c86: 2000 movs r0, #0 14c88: 4b2e ldr r3, [pc, #184] ; (14d44 ) 14c8a: 4798 blx r3 14c8c: 0003 movs r3, r0 14c8e: 3328 adds r3, #40 ; 0x28 14c90: 005b lsls r3, r3, #1 14c92: 2140 movs r1, #64 ; 0x40 14c94: 31ff adds r1, #255 ; 0xff 14c96: 2201 movs r2, #1 14c98: 428b cmp r3, r1 14c9a: d901 bls.n 14ca0 14c9c: f000 fdb7 bl 1580e 14ca0: 18a2 adds r2, r4, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 14ca2: b212 sxth r2, r2 14ca4: 2111 movs r1, #17 14ca6: 0028 movs r0, r5 14ca8: 4b27 ldr r3, [pc, #156] ; (14d48 ) 14caa: 4798 blx r3 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 14cac: 4b1d ldr r3, [pc, #116] ; (14d24 ) 14cae: 681c ldr r4, [r3, #0] 14cb0: 3404 adds r4, #4 14cb2: 2000 movs r0, #0 14cb4: 4b28 ldr r3, [pc, #160] ; (14d58 ) 14cb6: 4798 blx r3 14cb8: 2801 cmp r0, #1 14cba: d801 bhi.n 14cc0 14cbc: f000 fdb2 bl 15824 14cc0: 2000 movs r0, #0 14cc2: 4b20 ldr r3, [pc, #128] ; (14d44 ) 14cc4: 4798 blx r3 14cc6: 0103 lsls r3, r0, #4 14cc8: 1a1b subs r3, r3, r0 14cca: 005b lsls r3, r3, #1 14ccc: 3350 adds r3, #80 ; 0x50 14cce: 2140 movs r1, #64 ; 0x40 14cd0: 31ff adds r1, #255 ; 0xff 14cd2: 2201 movs r2, #1 14cd4: 428b cmp r3, r1 14cd6: d901 bls.n 14cdc 14cd8: f000 fdbd bl 15856 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 14cdc: 2114 movs r1, #20 14cde: 0020 movs r0, r4 14ce0: 4d19 ldr r5, [pc, #100] ; (14d48 ) 14ce2: 47a8 blx r5 lv_style_set_transition_time(&styles->bg, LV_STATE_DEFAULT, TRANSITION_TIME); 14ce4: 4c0f ldr r4, [pc, #60] ; (14d24 ) 14ce6: 6823 ldr r3, [r4, #0] 14ce8: 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) 14cea: 2296 movs r2, #150 ; 0x96 14cec: 21b0 movs r1, #176 ; 0xb0 14cee: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->bg, LV_STATE_DEFAULT, LV_STYLE_BORDER_COLOR); 14cf0: 6823 ldr r3, [r4, #0] 14cf2: 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) 14cf4: 2239 movs r2, #57 ; 0x39 14cf6: 21b7 movs r1, #183 ; 0xb7 14cf8: 47a8 blx r5 style_init_reset(&styles->bg_sec); 14cfa: 6820 ldr r0, [r4, #0] 14cfc: 300c adds r0, #12 14cfe: 4b0a ldr r3, [pc, #40] ; (14d28 ) 14d00: 4798 blx r3 lv_style_copy(&styles->bg_sec, &styles->bg); 14d02: 6820 ldr r0, [r4, #0] 14d04: 1d01 adds r1, r0, #4 14d06: 300c adds r0, #12 14d08: 4b14 ldr r3, [pc, #80] ; (14d5c ) 14d0a: 4798 blx r3 lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); 14d0c: 6820 ldr r0, [r4, #0] 14d0e: 300c adds r0, #12 14d10: 4b07 ldr r3, [pc, #28] ; (14d30 ) 14d12: 699b ldr r3, [r3, #24] 14d14: 079b lsls r3, r3, #30 14d16: d501 bpl.n 14d1c 14d18: f000 fdaa bl 15870 14d1c: 2308 movs r3, #8 14d1e: 2112 movs r1, #18 14d20: 2209 movs r2, #9 14d22: e01d b.n 14d60 14d24: 20004c4c .word 0x20004c4c 14d28: 00014911 .word 0x00014911 14d2c: 000062bd .word 0x000062bd 14d30: 20004c50 .word 0x20004c50 14d34: 00006135 .word 0x00006135 14d38: 00008089 .word 0x00008089 14d3c: 0000808e .word 0x0000808e 14d40: 00006431 .word 0x00006431 14d44: 00010dd1 .word 0x00010dd1 14d48: 00005fad .word 0x00005fad 14d4c: 00000239 .word 0x00000239 14d50: 00000439 .word 0x00000439 14d54: 000080a9 .word 0x000080a9 14d58: 00010ded .word 0x00010ded 14d5c: 00005e55 .word 0x00005e55 14d60: 0149 lsls r1, r1, #5 14d62: 02db lsls r3, r3, #11 14d64: 430a orrs r2, r1 14d66: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14d68: 2129 movs r1, #41 ; 0x29 14d6a: 4bfb ldr r3, [pc, #1004] ; (15158 ) 14d6c: 4798 blx r3 lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); 14d6e: 4bfb ldr r3, [pc, #1004] ; (1515c ) 14d70: 6818 ldr r0, [r3, #0] 14d72: 300c adds r0, #12 14d74: 4bfa ldr r3, [pc, #1000] ; (15160 ) 14d76: 699b ldr r3, [r3, #24] 14d78: 079b lsls r3, r3, #30 14d7a: d501 bpl.n 14d80 14d7c: f000 fd7d bl 1587a 14d80: 2308 movs r3, #8 14d82: 2110 movs r1, #16 14d84: 2208 movs r2, #8 14d86: 0149 lsls r1, r1, #5 14d88: 02db lsls r3, r3, #11 14d8a: 430a orrs r2, r1 14d8c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14d8e: 2139 movs r1, #57 ; 0x39 14d90: 4bf1 ldr r3, [pc, #964] ; (15158 ) 14d92: 4798 blx r3 lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14d94: 4bf1 ldr r3, [pc, #964] ; (1515c ) 14d96: 6818 ldr r0, [r3, #0] 14d98: 300c adds r0, #12 14d9a: 4bf1 ldr r3, [pc, #964] ; (15160 ) 14d9c: 699b ldr r3, [r3, #24] 14d9e: 079b lsls r3, r3, #30 14da0: d501 bpl.n 14da6 14da2: f000 fd6f bl 15884 14da6: 2314 movs r3, #20 14da8: 212a movs r1, #42 ; 0x2a 14daa: 2215 movs r2, #21 14dac: 0149 lsls r1, r1, #5 14dae: 02db lsls r3, r3, #11 14db0: 430a orrs r2, r1 14db2: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14db4: 49eb ldr r1, [pc, #940] ; (15164 ) 14db6: 4be8 ldr r3, [pc, #928] ; (15158 ) 14db8: 4798 blx r3 lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14dba: 4be8 ldr r3, [pc, #928] ; (1515c ) 14dbc: 6818 ldr r0, [r3, #0] 14dbe: 300c adds r0, #12 14dc0: 4be7 ldr r3, [pc, #924] ; (15160 ) 14dc2: 699b ldr r3, [r3, #24] 14dc4: 079b lsls r3, r3, #30 14dc6: d501 bpl.n 14dcc 14dc8: f000 fd61 bl 1588e 14dcc: 2314 movs r3, #20 14dce: 212a movs r1, #42 ; 0x2a 14dd0: 2215 movs r2, #21 14dd2: 0149 lsls r1, r1, #5 14dd4: 02db lsls r3, r3, #11 14dd6: 430a orrs r2, r1 14dd8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 14dda: 2179 movs r1, #121 ; 0x79 14ddc: 4bde ldr r3, [pc, #888] ; (15158 ) 14dde: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14de0: 4bde ldr r3, [pc, #888] ; (1515c ) 14de2: 6818 ldr r0, [r3, #0] 14de4: 300c adds r0, #12 14de6: 4bde ldr r3, [pc, #888] ; (15160 ) 14de8: 699b ldr r3, [r3, #24] 14dea: 079b lsls r3, r3, #30 14dec: d501 bpl.n 14df2 14dee: f000 fd53 bl 15898 14df2: 2314 movs r3, #20 14df4: 212a movs r1, #42 ; 0x2a 14df6: 2215 movs r2, #21 14df8: 0149 lsls r1, r1, #5 14dfa: 02db lsls r3, r3, #11 14dfc: 430a orrs r2, r1 14dfe: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14e00: 49d9 ldr r1, [pc, #868] ; (15168 ) 14e02: 4bd5 ldr r3, [pc, #852] ; (15158 ) 14e04: 4798 blx r3 lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 14e06: 4bd5 ldr r3, [pc, #852] ; (1515c ) 14e08: 6818 ldr r0, [r3, #0] 14e0a: 300c adds r0, #12 14e0c: 4bd4 ldr r3, [pc, #848] ; (15160 ) 14e0e: 699b ldr r3, [r3, #24] 14e10: 079b lsls r3, r3, #30 14e12: d501 bpl.n 14e18 14e14: f000 fd45 bl 158a2 14e18: 2314 movs r3, #20 14e1a: 212a movs r1, #42 ; 0x2a 14e1c: 2215 movs r2, #21 14e1e: 0149 lsls r1, r1, #5 14e20: 02db lsls r3, r3, #11 14e22: 430a orrs r2, r1 14e24: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 14e26: 2199 movs r1, #153 ; 0x99 14e28: 4bcb ldr r3, [pc, #812] ; (15158 ) 14e2a: 4798 blx r3 style_init_reset(&styles->bg_click); 14e2c: 4ccb ldr r4, [pc, #812] ; (1515c ) 14e2e: 6820 ldr r0, [r4, #0] 14e30: 3008 adds r0, #8 14e32: 4bce ldr r3, [pc, #824] ; (1516c ) 14e34: 4798 blx r3 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); 14e36: 6820 ldr r0, [r4, #0] 14e38: 3008 adds r0, #8 14e3a: 4bc9 ldr r3, [pc, #804] ; (15160 ) 14e3c: 699b ldr r3, [r3, #24] 14e3e: 079b lsls r3, r3, #30 14e40: d501 bpl.n 14e46 14e42: f000 fd33 bl 158ac 14e46: 2309 movs r3, #9 14e48: 2113 movs r1, #19 14e4a: 220a movs r2, #10 14e4c: 0149 lsls r1, r1, #5 14e4e: 02db lsls r3, r3, #11 14e50: 430a orrs r2, r1 14e52: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 14e54: 49c6 ldr r1, [pc, #792] ; (15170 ) 14e56: 4fc0 ldr r7, [pc, #768] ; (15158 ) 14e58: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); 14e5a: 4ec0 ldr r6, [pc, #768] ; (1515c ) 14e5c: 6830 ldr r0, [r6, #0] 14e5e: 3008 adds r0, #8 14e60: 4dbf ldr r5, [pc, #764] ; (15160 ) 14e62: 88aa ldrh r2, [r5, #4] 14e64: 212a movs r1, #42 ; 0x2a 14e66: 31ff adds r1, #255 ; 0xff 14e68: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); 14e6a: 6834 ldr r4, [r6, #0] 14e6c: 3408 adds r4, #8 14e6e: 88a8 ldrh r0, [r5, #4] 14e70: 2133 movs r1, #51 ; 0x33 14e72: 4bc0 ldr r3, [pc, #768] ; (15174 ) 14e74: 4798 blx r3 14e76: 1c02 adds r2, r0, #0 14e78: 49bf ldr r1, [pc, #764] ; (15178 ) 14e7a: 0020 movs r0, r4 14e7c: 47b8 blx r7 lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); 14e7e: 6830 ldr r0, [r6, #0] 14e80: 3008 adds r0, #8 14e82: 69ab ldr r3, [r5, #24] 14e84: 079b lsls r3, r3, #30 14e86: d501 bpl.n 14e8c 14e88: f000 fd15 bl 158b6 14e8c: 230b movs r3, #11 14e8e: 2118 movs r1, #24 14e90: 220e movs r2, #14 14e92: 0149 lsls r1, r1, #5 14e94: 02db lsls r3, r3, #11 14e96: 430a orrs r2, r1 14e98: 431a orrs r2, r3 14e9a: 49b8 ldr r1, [pc, #736] ; (1517c ) 14e9c: 4fae ldr r7, [pc, #696] ; (15158 ) 14e9e: 47b8 blx r7 lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); 14ea0: 4dae ldr r5, [pc, #696] ; (1515c ) 14ea2: 6828 ldr r0, [r5, #0] 14ea4: 3008 adds r0, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 14ea6: 2200 movs r2, #0 14ea8: 2198 movs r1, #152 ; 0x98 14eaa: 0049 lsls r1, r1, #1 14eac: 4bb4 ldr r3, [pc, #720] ; (15180 ) 14eae: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, lv_color_darken(theme.color_primary, 14eb0: 682c ldr r4, [r5, #0] 14eb2: 3408 adds r4, #8 14eb4: 4eaa ldr r6, [pc, #680] ; (15160 ) 14eb6: 88b0 ldrh r0, [r6, #4] 14eb8: 2133 movs r1, #51 ; 0x33 14eba: 4bae ldr r3, [pc, #696] ; (15174 ) 14ebc: 4798 blx r3 14ebe: 1c02 adds r2, r0, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 14ec0: 49b0 ldr r1, [pc, #704] ; (15184 ) 14ec2: 0020 movs r0, r4 14ec4: 47b8 blx r7 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); 14ec6: 6828 ldr r0, [r5, #0] 14ec8: 3008 adds r0, #8 14eca: 69b3 ldr r3, [r6, #24] 14ecc: 079b lsls r3, r3, #30 14ece: d501 bpl.n 14ed4 14ed0: f000 fcf6 bl 158c0 14ed4: 230b movs r3, #11 14ed6: 2119 movs r1, #25 14ed8: 220d movs r2, #13 14eda: 0149 lsls r1, r1, #5 14edc: 02db lsls r3, r3, #11 14ede: 430a orrs r2, r1 14ee0: 431a orrs r2, r3 14ee2: 49a9 ldr r1, [pc, #676] ; (15188 ) 14ee4: 4b9c ldr r3, [pc, #624] ; (15158 ) 14ee6: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); 14ee8: 4b9c ldr r3, [pc, #624] ; (1515c ) 14eea: 6818 ldr r0, [r3, #0] 14eec: 3008 adds r0, #8 14eee: 4b9c ldr r3, [pc, #624] ; (15160 ) 14ef0: 699b ldr r3, [r3, #24] 14ef2: 079b lsls r3, r3, #30 14ef4: d501 bpl.n 14efa 14ef6: f000 fce8 bl 158ca 14efa: 230b movs r3, #11 14efc: 2119 movs r1, #25 14efe: 220d movs r2, #13 14f00: 0149 lsls r1, r1, #5 14f02: 02db lsls r3, r3, #11 14f04: 430a orrs r2, r1 14f06: 431a orrs r2, r3 14f08: 213a movs r1, #58 ; 0x3a 14f0a: 31ff adds r1, #255 ; 0xff 14f0c: 4b92 ldr r3, [pc, #584] ; (15158 ) 14f0e: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); 14f10: 4b92 ldr r3, [pc, #584] ; (1515c ) 14f12: 6818 ldr r0, [r3, #0] 14f14: 3008 adds r0, #8 14f16: 4b92 ldr r3, [pc, #584] ; (15160 ) 14f18: 699b ldr r3, [r3, #24] 14f1a: 079b lsls r3, r3, #30 14f1c: d501 bpl.n 14f22 14f1e: f000 fcd9 bl 158d4 14f22: 230b movs r3, #11 14f24: 2119 movs r1, #25 14f26: 220d movs r2, #13 14f28: 0149 lsls r1, r1, #5 14f2a: 02db lsls r3, r3, #11 14f2c: 430a orrs r2, r1 14f2e: 431a orrs r2, r3 14f30: 4996 ldr r1, [pc, #600] ; (1518c ) 14f32: 4b89 ldr r3, [pc, #548] ; (15158 ) 14f34: 4798 blx r3 lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); 14f36: 4b89 ldr r3, [pc, #548] ; (1515c ) 14f38: 6818 ldr r0, [r3, #0] 14f3a: 3008 adds r0, #8 14f3c: 4b88 ldr r3, [pc, #544] ; (15160 ) 14f3e: 699b ldr r3, [r3, #24] 14f40: 079b lsls r3, r3, #30 14f42: d501 bpl.n 14f48 14f44: f000 fccb bl 158de 14f48: 230b movs r3, #11 14f4a: 2119 movs r1, #25 14f4c: 220d movs r2, #13 14f4e: 0149 lsls r1, r1, #5 14f50: 02db lsls r3, r3, #11 14f52: 430a orrs r2, r1 14f54: 431a orrs r2, r3 14f56: 498e ldr r1, [pc, #568] ; (15190 ) 14f58: 4b7f ldr r3, [pc, #508] ; (15158 ) 14f5a: 4798 blx r3 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 14f5c: 4b7f ldr r3, [pc, #508] ; (1515c ) 14f5e: 6818 ldr r0, [r3, #0] 14f60: 3008 adds r0, #8 14f62: 4b7f ldr r3, [pc, #508] ; (15160 ) 14f64: 699b ldr r3, [r3, #24] 14f66: 079b lsls r3, r3, #30 14f68: d501 bpl.n 14f6e 14f6a: f000 fcbd bl 158e8 14f6e: 231f movs r3, #31 14f70: 213f movs r1, #63 ; 0x3f 14f72: 221f movs r2, #31 14f74: 241f movs r4, #31 14f76: 46a0 mov r8, r4 14f78: 0149 lsls r1, r1, #5 14f7a: 02db lsls r3, r3, #11 14f7c: 430a orrs r2, r1 14f7e: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 14f80: 4984 ldr r1, [pc, #528] ; (15194 ) 14f82: 4f75 ldr r7, [pc, #468] ; (15158 ) 14f84: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 14f86: 4e75 ldr r6, [pc, #468] ; (1515c ) 14f88: 6830 ldr r0, [r6, #0] 14f8a: 3008 adds r0, #8 14f8c: 25fc movs r5, #252 ; 0xfc 14f8e: 00ed lsls r5, r5, #3 14f90: 4642 mov r2, r8 14f92: 432a orrs r2, r5 14f94: 4c80 ldr r4, [pc, #512] ; (15198 ) 14f96: 4322 orrs r2, r4 14f98: 4980 ldr r1, [pc, #512] ; (1519c ) 14f9a: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 14f9c: 6830 ldr r0, [r6, #0] 14f9e: 3008 adds r0, #8 14fa0: 4642 mov r2, r8 14fa2: 432a orrs r2, r5 14fa4: 4322 orrs r2, r4 14fa6: 497e ldr r1, [pc, #504] ; (151a0 ) 14fa8: 47b8 blx r7 lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 14faa: 6830 ldr r0, [r6, #0] 14fac: 3008 adds r0, #8 14fae: 4b6c ldr r3, [pc, #432] ; (15160 ) 14fb0: 699b ldr r3, [r3, #24] 14fb2: 079b lsls r3, r3, #30 14fb4: d501 bpl.n 14fba 14fb6: f000 fc9c bl 158f2 14fba: 2226 movs r2, #38 ; 0x26 14fbc: 2313 movs r3, #19 14fbe: 0152 lsls r2, r2, #5 14fc0: 02d9 lsls r1, r3, #11 14fc2: 431a orrs r2, r3 14fc4: 430a orrs r2, r1 14fc6: 4977 ldr r1, [pc, #476] ; (151a4 ) 14fc8: 4b63 ldr r3, [pc, #396] ; (15158 ) 14fca: 4798 blx r3 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 14fcc: 4b63 ldr r3, [pc, #396] ; (1515c ) 14fce: 6818 ldr r0, [r3, #0] 14fd0: 3008 adds r0, #8 14fd2: 4b63 ldr r3, [pc, #396] ; (15160 ) 14fd4: 699b ldr r3, [r3, #24] 14fd6: 079b lsls r3, r3, #30 14fd8: d501 bpl.n 14fde 14fda: f000 fc8e bl 158fa 14fde: 231f movs r3, #31 14fe0: 213f movs r1, #63 ; 0x3f 14fe2: 221f movs r2, #31 14fe4: 241f movs r4, #31 14fe6: 46a0 mov r8, r4 14fe8: 0149 lsls r1, r1, #5 14fea: 02db lsls r3, r3, #11 14fec: 430a orrs r2, r1 14fee: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 14ff0: 496d ldr r1, [pc, #436] ; (151a8 ) 14ff2: 4f59 ldr r7, [pc, #356] ; (15158 ) 14ff4: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 14ff6: 4e59 ldr r6, [pc, #356] ; (1515c ) 14ff8: 6830 ldr r0, [r6, #0] 14ffa: 3008 adds r0, #8 14ffc: 25fc movs r5, #252 ; 0xfc 14ffe: 00ed lsls r5, r5, #3 15000: 4642 mov r2, r8 15002: 432a orrs r2, r5 15004: 4c64 ldr r4, [pc, #400] ; (15198 ) 15006: 4322 orrs r2, r4 15008: 4968 ldr r1, [pc, #416] ; (151ac ) 1500a: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); 1500c: 6830 ldr r0, [r6, #0] 1500e: 3008 adds r0, #8 15010: 4642 mov r2, r8 15012: 432a orrs r2, r5 15014: 4322 orrs r2, r4 15016: 4966 ldr r1, [pc, #408] ; (151b0 ) 15018: 47b8 blx r7 lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 1501a: 6830 ldr r0, [r6, #0] 1501c: 3008 adds r0, #8 1501e: 4b50 ldr r3, [pc, #320] ; (15160 ) 15020: 699b ldr r3, [r3, #24] 15022: 079b lsls r3, r3, #30 15024: d501 bpl.n 1502a 15026: f000 fc6d bl 15904 1502a: 2226 movs r2, #38 ; 0x26 1502c: 2313 movs r3, #19 1502e: 0152 lsls r2, r2, #5 15030: 02d9 lsls r1, r3, #11 15032: 431a orrs r2, r3 15034: 430a orrs r2, r1 15036: 495f ldr r1, [pc, #380] ; (151b4 ) 15038: 4b47 ldr r3, [pc, #284] ; (15158 ) 1503a: 4798 blx r3 lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 1503c: 4c47 ldr r4, [pc, #284] ; (1515c ) 1503e: 6820 ldr r0, [r4, #0] 15040: 3008 adds r0, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 15042: 2229 movs r2, #41 ; 0x29 15044: 21b6 movs r1, #182 ; 0xb6 15046: 4d4e ldr r5, [pc, #312] ; (15180 ) 15048: 47a8 blx r5 style_init_reset(&styles->btn); 1504a: 6820 ldr r0, [r4, #0] 1504c: 3010 adds r0, #16 1504e: 4b47 ldr r3, [pc, #284] ; (1516c ) 15050: 4798 blx r3 lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15052: 6820 ldr r0, [r4, #0] 15054: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15056: 4a58 ldr r2, [pc, #352] ; (151b8 ) 15058: 2101 movs r1, #1 1505a: 47a8 blx r5 lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); 1505c: 6820 ldr r0, [r4, #0] 1505e: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15060: 22ff movs r2, #255 ; 0xff 15062: 212c movs r1, #44 ; 0x2c 15064: 4b55 ldr r3, [pc, #340] ; (151bc ) 15066: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); 15068: 6820 ldr r0, [r4, #0] 1506a: 3010 adds r0, #16 1506c: 4b3c ldr r3, [pc, #240] ; (15160 ) 1506e: 699b ldr r3, [r3, #24] 15070: 079b lsls r3, r3, #30 15072: d501 bpl.n 15078 15074: f000 fc4a bl 1590c 15078: 230b movs r3, #11 1507a: 2118 movs r1, #24 1507c: 220e movs r2, #14 1507e: 0149 lsls r1, r1, #5 15080: 02db lsls r3, r3, #11 15082: 430a orrs r2, r1 15084: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15086: 2129 movs r1, #41 ; 0x29 15088: 4b33 ldr r3, [pc, #204] ; (15158 ) 1508a: 4798 blx r3 lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); 1508c: 4b33 ldr r3, [pc, #204] ; (1515c ) 1508e: 6818 ldr r0, [r3, #0] 15090: 3010 adds r0, #16 15092: 4b33 ldr r3, [pc, #204] ; (15160 ) 15094: 699b ldr r3, [r3, #24] 15096: 079b lsls r3, r3, #30 15098: d401 bmi.n 1509e 1509a: f000 fc3c bl 15916 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))); 1509e: 4d30 ldr r5, [pc, #192] ; (15160 ) 150a0: 796a ldrb r2, [r5, #5] 150a2: 08d2 lsrs r2, r2, #3 150a4: 0093 lsls r3, r2, #2 150a6: 189b adds r3, r3, r2 150a8: 009a lsls r2, r3, #2 150aa: 189b adds r3, r3, r2 150ac: 4a44 ldr r2, [pc, #272] ; (151c0 ) 150ae: 4694 mov ip, r2 150b0: 4463 add r3, ip 150b2: 021a lsls r2, r3, #8 150b4: 18d2 adds r2, r2, r3 150b6: 01d2 lsls r2, r2, #7 150b8: 18d2 adds r2, r2, r3 150ba: 0dd2 lsrs r2, r2, #23 150bc: 211f movs r1, #31 150be: 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))); 150c0: 88ac ldrh r4, [r5, #4] 150c2: 0564 lsls r4, r4, #21 150c4: 0ea3 lsrs r3, r4, #26 150c6: 009c lsls r4, r3, #2 150c8: 18e4 adds r4, r4, r3 150ca: 00a3 lsls r3, r4, #2 150cc: 18e4 adds r4, r4, r3 150ce: 4b3d ldr r3, [pc, #244] ; (151c4 ) 150d0: 469c mov ip, r3 150d2: 4464 add r4, ip 150d4: 0223 lsls r3, r4, #8 150d6: 191b adds r3, r3, r4 150d8: 01db lsls r3, r3, #7 150da: 191b adds r3, r3, r4 150dc: 00db lsls r3, r3, #3 150de: 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))); 150e0: 792c ldrb r4, [r5, #4] 150e2: 06e4 lsls r4, r4, #27 150e4: 0ee5 lsrs r5, r4, #27 150e6: 00ac lsls r4, r5, #2 150e8: 1964 adds r4, r4, r5 150ea: 00a5 lsls r5, r4, #2 150ec: 1964 adds r4, r4, r5 150ee: 4d34 ldr r5, [pc, #208] ; (151c0 ) 150f0: 46ac mov ip, r5 150f2: 4464 add r4, ip 150f4: 0225 lsls r5, r4, #8 150f6: 192d adds r5, r5, r4 150f8: 01ed lsls r5, r5, #7 150fa: 192c adds r4, r5, r4 150fc: 0de4 lsrs r4, r4, #23 150fe: 4021 ands r1, r4 15100: 015b lsls r3, r3, #5 15102: 02d2 lsls r2, r2, #11 15104: 430b orrs r3, r1 15106: 431a orrs r2, r3 15108: 4919 ldr r1, [pc, #100] ; (15170 ) 1510a: 4f13 ldr r7, [pc, #76] ; (15158 ) 1510c: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); 1510e: 4e13 ldr r6, [pc, #76] ; (1515c ) 15110: 6830 ldr r0, [r6, #0] 15112: 3010 adds r0, #16 15114: 4d12 ldr r5, [pc, #72] ; (15160 ) 15116: 88aa ldrh r2, [r5, #4] 15118: 212a movs r1, #42 ; 0x2a 1511a: 31ff adds r1, #255 ; 0xff 1511c: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); 1511e: 6834 ldr r4, [r6, #0] 15120: 3410 adds r4, #16 15122: 88a8 ldrh r0, [r5, #4] 15124: 214c movs r1, #76 ; 0x4c 15126: 4b13 ldr r3, [pc, #76] ; (15174 ) 15128: 4798 blx r3 1512a: 1c02 adds r2, r0, #0 1512c: 4912 ldr r1, [pc, #72] ; (15178 ) 1512e: 0020 movs r0, r4 15130: 47b8 blx r7 lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); 15132: 6830 ldr r0, [r6, #0] 15134: 3010 adds r0, #16 15136: 69ab ldr r3, [r5, #24] 15138: 079b lsls r3, r3, #30 1513a: d501 bpl.n 15140 1513c: f000 fc15 bl 1596a 15140: 230b movs r3, #11 15142: 2118 movs r1, #24 15144: 220e movs r2, #14 15146: 0149 lsls r1, r1, #5 15148: 02db lsls r3, r3, #11 1514a: 430a orrs r2, r1 1514c: 431a orrs r2, r3 1514e: 490b ldr r1, [pc, #44] ; (1517c ) 15150: 4b01 ldr r3, [pc, #4] ; (15158 ) 15152: 4798 blx r3 15154: e038 b.n 151c8 15156: 46c0 nop ; (mov r8, r8) 15158: 00006135 .word 0x00006135 1515c: 20004c4c .word 0x20004c4c 15160: 20004c50 .word 0x20004c50 15164: 00008089 .word 0x00008089 15168: 000080a9 .word 0x000080a9 1516c: 00014911 .word 0x00014911 15170: 00001029 .word 0x00001029 15174: 00011ad9 .word 0x00011ad9 15178: 00001129 .word 0x00001129 1517c: 00002029 .word 0x00002029 15180: 00005fad .word 0x00005fad 15184: 00001239 .word 0x00001239 15188: 00001039 .word 0x00001039 1518c: 00001139 .word 0x00001139 15190: 00002039 .word 0x00002039 15194: 00009089 .word 0x00009089 15198: fffff800 .word 0xfffff800 1519c: 00008189 .word 0x00008189 151a0: 00009189 .word 0x00009189 151a4: 0000a089 .word 0x0000a089 151a8: 000090a9 .word 0x000090a9 151ac: 000081a9 .word 0x000081a9 151b0: 000091a9 .word 0x000091a9 151b4: 0000a0a9 .word 0x0000a0a9 151b8: 00007fff .word 0x00007fff 151bc: 000062bd .word 0x000062bd 151c0: 00001bda .word 0x00001bda 151c4: 0000389a .word 0x0000389a lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); 151c8: 4bf1 ldr r3, [pc, #964] ; (15590 ) 151ca: 6818 ldr r0, [r3, #0] 151cc: 3010 adds r0, #16 151ce: 4bf1 ldr r3, [pc, #964] ; (15594 ) 151d0: 699b ldr r3, [r3, #24] 151d2: 079b lsls r3, r3, #30 151d4: d500 bpl.n 151d8 151d6: e3cd b.n 15974 151d8: 2222 movs r2, #34 ; 0x22 151da: 2311 movs r3, #17 151dc: 0152 lsls r2, r2, #5 151de: 02d9 lsls r1, r3, #11 151e0: 431a orrs r2, r3 151e2: 430a orrs r2, r1 151e4: 49ec ldr r1, [pc, #944] ; (15598 ) 151e6: 4ded ldr r5, [pc, #948] ; (1559c ) 151e8: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); 151ea: 4ce9 ldr r4, [pc, #932] ; (15590 ) 151ec: 6820 ldr r0, [r4, #0] 151ee: 3010 adds r0, #16 151f0: 4ee8 ldr r6, [pc, #928] ; (15594 ) 151f2: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 151f4: 2139 movs r1, #57 ; 0x39 151f6: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); 151f8: 6820 ldr r0, [r4, #0] 151fa: 3010 adds r0, #16 151fc: 88b2 ldrh r2, [r6, #4] 151fe: 49e8 ldr r1, [pc, #928] ; (155a0 ) 15200: 47a8 blx r5 lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); 15202: 6820 ldr r0, [r4, #0] 15204: 3010 adds r0, #16 15206: 69b3 ldr r3, [r6, #24] 15208: 079b lsls r3, r3, #30 1520a: d500 bpl.n 1520e 1520c: e3b5 b.n 1597a 1520e: 2210 movs r2, #16 15210: 2308 movs r3, #8 15212: 0152 lsls r2, r2, #5 15214: 02d9 lsls r1, r3, #11 15216: 431a orrs r2, r3 15218: 430a orrs r2, r1 1521a: 49e2 ldr r1, [pc, #904] ; (155a4 ) 1521c: 4bdf ldr r3, [pc, #892] ; (1559c ) 1521e: 4798 blx r3 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 15220: 4bdb ldr r3, [pc, #876] ; (15590 ) 15222: 681c ldr r4, [r3, #0] 15224: 3410 adds r4, #16 15226: 2000 movs r0, #0 15228: 4bdf ldr r3, [pc, #892] ; (155a8 ) 1522a: 4798 blx r3 1522c: 3028 adds r0, #40 ; 0x28 1522e: 0040 lsls r0, r0, #1 15230: 2340 movs r3, #64 ; 0x40 15232: 33ff adds r3, #255 ; 0xff 15234: 2201 movs r2, #1 15236: 4298 cmp r0, r3 15238: d900 bls.n 1523c 1523a: e3a1 b.n 15980 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 1523c: 2130 movs r1, #48 ; 0x30 1523e: 0020 movs r0, r4 15240: 4bda ldr r3, [pc, #872] ; (155ac ) 15242: 4798 blx r3 lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); 15244: 4cd2 ldr r4, [pc, #840] ; (15590 ) 15246: 6820 ldr r0, [r4, #0] 15248: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 1524a: 2200 movs r2, #0 1524c: 219e movs r1, #158 ; 0x9e 1524e: 0049 lsls r1, r1, #1 15250: 4bd7 ldr r3, [pc, #860] ; (155b0 ) 15252: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15254: 6820 ldr r0, [r4, #0] 15256: 3010 adds r0, #16 15258: 4bce ldr r3, [pc, #824] ; (15594 ) 1525a: 699b ldr r3, [r3, #24] 1525c: 079b lsls r3, r3, #30 1525e: d500 bpl.n 15262 15260: e398 b.n 15994 15262: 231f movs r3, #31 15264: 213f movs r1, #63 ; 0x3f 15266: 221f movs r2, #31 15268: 0149 lsls r1, r1, #5 1526a: 02db lsls r3, r3, #11 1526c: 430a orrs r2, r1 1526e: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 15270: 49d0 ldr r1, [pc, #832] ; (155b4 ) 15272: 4bca ldr r3, [pc, #808] ; (1559c ) 15274: 4798 blx r3 lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15276: 4bc6 ldr r3, [pc, #792] ; (15590 ) 15278: 6818 ldr r0, [r3, #0] 1527a: 3010 adds r0, #16 1527c: 4bc5 ldr r3, [pc, #788] ; (15594 ) 1527e: 699b ldr r3, [r3, #24] 15280: 079b lsls r3, r3, #30 15282: d500 bpl.n 15286 15284: e38a b.n 1599c 15286: 231f movs r3, #31 15288: 213f movs r1, #63 ; 0x3f 1528a: 221f movs r2, #31 1528c: 241f movs r4, #31 1528e: 46a0 mov r8, r4 15290: 0149 lsls r1, r1, #5 15292: 02db lsls r3, r3, #11 15294: 430a orrs r2, r1 15296: 431a orrs r2, r3 15298: 49c7 ldr r1, [pc, #796] ; (155b8 ) 1529a: 4dc0 ldr r5, [pc, #768] ; (1559c ) 1529c: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 1529e: 4cbc ldr r4, [pc, #752] ; (15590 ) 152a0: 6820 ldr r0, [r4, #0] 152a2: 3010 adds r0, #16 152a4: 27fc movs r7, #252 ; 0xfc 152a6: 00ff lsls r7, r7, #3 152a8: 4642 mov r2, r8 152aa: 433a orrs r2, r7 152ac: 4ec3 ldr r6, [pc, #780] ; (155bc ) 152ae: 4332 orrs r2, r6 152b0: 49c3 ldr r1, [pc, #780] ; (155c0 ) 152b2: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 152b4: 6820 ldr r0, [r4, #0] 152b6: 3010 adds r0, #16 152b8: 4642 mov r2, r8 152ba: 433a orrs r2, r7 152bc: 4332 orrs r2, r6 152be: 49c1 ldr r1, [pc, #772] ; (155c4 ) 152c0: 47a8 blx r5 lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 152c2: 6820 ldr r0, [r4, #0] 152c4: 3010 adds r0, #16 152c6: 4bc0 ldr r3, [pc, #768] ; (155c8 ) 152c8: 881a ldrh r2, [r3, #0] 152ca: 49c0 ldr r1, [pc, #768] ; (155cc ) 152cc: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 152ce: 6820 ldr r0, [r4, #0] 152d0: 3010 adds r0, #16 152d2: 4bb0 ldr r3, [pc, #704] ; (15594 ) 152d4: 699b ldr r3, [r3, #24] 152d6: 079b lsls r3, r3, #30 152d8: d500 bpl.n 152dc 152da: e363 b.n 159a4 152dc: 231f movs r3, #31 152de: 213f movs r1, #63 ; 0x3f 152e0: 221f movs r2, #31 152e2: 0149 lsls r1, r1, #5 152e4: 02db lsls r3, r3, #11 152e6: 430a orrs r2, r1 152e8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 152ea: 49b9 ldr r1, [pc, #740] ; (155d0 ) 152ec: 4bab ldr r3, [pc, #684] ; (1559c ) 152ee: 4798 blx r3 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 152f0: 4ba7 ldr r3, [pc, #668] ; (15590 ) 152f2: 6818 ldr r0, [r3, #0] 152f4: 3010 adds r0, #16 152f6: 4ba7 ldr r3, [pc, #668] ; (15594 ) 152f8: 699b ldr r3, [r3, #24] 152fa: 079b lsls r3, r3, #30 152fc: d500 bpl.n 15300 152fe: e355 b.n 159ac 15300: 231f movs r3, #31 15302: 213f movs r1, #63 ; 0x3f 15304: 221f movs r2, #31 15306: 261f movs r6, #31 15308: 0149 lsls r1, r1, #5 1530a: 02db lsls r3, r3, #11 1530c: 430a orrs r2, r1 1530e: 431a orrs r2, r3 15310: 49b0 ldr r1, [pc, #704] ; (155d4 ) 15312: 4da2 ldr r5, [pc, #648] ; (1559c ) 15314: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); 15316: 4c9e ldr r4, [pc, #632] ; (15590 ) 15318: 6820 ldr r0, [r4, #0] 1531a: 3010 adds r0, #16 1531c: 23fc movs r3, #252 ; 0xfc 1531e: 00db lsls r3, r3, #3 15320: 4699 mov r9, r3 15322: 001a movs r2, r3 15324: 4332 orrs r2, r6 15326: 4fa5 ldr r7, [pc, #660] ; (155bc ) 15328: 433a orrs r2, r7 1532a: 49aa ldr r1, [pc, #680] ; (155d4 ) 1532c: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 1532e: 6820 ldr r0, [r4, #0] 15330: 3010 adds r0, #16 15332: 464a mov r2, r9 15334: 4332 orrs r2, r6 15336: 433a orrs r2, r7 15338: 49a7 ldr r1, [pc, #668] ; (155d8 ) 1533a: 47a8 blx r5 lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 1533c: 6820 ldr r0, [r4, #0] 1533e: 3010 adds r0, #16 15340: 4ba1 ldr r3, [pc, #644] ; (155c8 ) 15342: 881a ldrh r2, [r3, #0] 15344: 49a5 ldr r1, [pc, #660] ; (155dc ) 15346: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 15348: 6820 ldr r0, [r4, #0] 1534a: 3010 adds r0, #16 1534c: 4b91 ldr r3, [pc, #580] ; (15594 ) 1534e: 699b ldr r3, [r3, #24] 15350: 079b lsls r3, r3, #30 15352: d500 bpl.n 15356 15354: e32e b.n 159b4 15356: 231f movs r3, #31 15358: 213f movs r1, #63 ; 0x3f 1535a: 221f movs r2, #31 1535c: 0149 lsls r1, r1, #5 1535e: 02db lsls r3, r3, #11 15360: 430a orrs r2, r1 15362: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15364: 2179 movs r1, #121 ; 0x79 15366: 4b8d ldr r3, [pc, #564] ; (1559c ) 15368: 4798 blx r3 lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); 1536a: 4b89 ldr r3, [pc, #548] ; (15590 ) 1536c: 6818 ldr r0, [r3, #0] 1536e: 3010 adds r0, #16 15370: 4b88 ldr r3, [pc, #544] ; (15594 ) 15372: 699b ldr r3, [r3, #24] 15374: 079b lsls r3, r3, #30 15376: d500 bpl.n 1537a 15378: e320 b.n 159bc 1537a: 231f movs r3, #31 1537c: 213f movs r1, #63 ; 0x3f 1537e: 221f movs r2, #31 15380: 241f movs r4, #31 15382: 46a0 mov r8, r4 15384: 0149 lsls r1, r1, #5 15386: 02db lsls r3, r3, #11 15388: 430a orrs r2, r1 1538a: 431a orrs r2, r3 1538c: 4994 ldr r1, [pc, #592] ; (155e0 ) 1538e: 4d83 ldr r5, [pc, #524] ; (1559c ) 15390: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); 15392: 4c7f ldr r4, [pc, #508] ; (15590 ) 15394: 6820 ldr r0, [r4, #0] 15396: 3010 adds r0, #16 15398: 27fc movs r7, #252 ; 0xfc 1539a: 00ff lsls r7, r7, #3 1539c: 4642 mov r2, r8 1539e: 433a orrs r2, r7 153a0: 4e86 ldr r6, [pc, #536] ; (155bc ) 153a2: 4332 orrs r2, r6 153a4: 217a movs r1, #122 ; 0x7a 153a6: 31ff adds r1, #255 ; 0xff 153a8: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); 153aa: 6820 ldr r0, [r4, #0] 153ac: 3010 adds r0, #16 153ae: 4642 mov r2, r8 153b0: 433a orrs r2, r7 153b2: 4332 orrs r2, r6 153b4: 498b ldr r1, [pc, #556] ; (155e4 ) 153b6: 47a8 blx r5 lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); 153b8: 6820 ldr r0, [r4, #0] 153ba: 3010 adds r0, #16 153bc: 4b82 ldr r3, [pc, #520] ; (155c8 ) 153be: 881a ldrh r2, [r3, #0] 153c0: 4989 ldr r1, [pc, #548] ; (155e8 ) 153c2: 47a8 blx r5 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 153c4: 6824 ldr r4, [r4, #0] 153c6: 3410 adds r4, #16 153c8: 2000 movs r0, #0 153ca: 4b77 ldr r3, [pc, #476] ; (155a8 ) 153cc: 4798 blx r3 153ce: 0083 lsls r3, r0, #2 153d0: 181b adds r3, r3, r0 153d2: 00db lsls r3, r3, #3 153d4: 3350 adds r3, #80 ; 0x50 153d6: 2140 movs r1, #64 ; 0x40 153d8: 31ff adds r1, #255 ; 0xff 153da: 2201 movs r2, #1 153dc: 428b cmp r3, r1 153de: d900 bls.n 153e2 153e0: e2f0 b.n 159c4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 153e2: 2112 movs r1, #18 153e4: 0020 movs r0, r4 153e6: 4b71 ldr r3, [pc, #452] ; (155ac ) 153e8: 4798 blx r3 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 153ea: 4b69 ldr r3, [pc, #420] ; (15590 ) 153ec: 681c ldr r4, [r3, #0] 153ee: 3410 adds r4, #16 153f0: 2000 movs r0, #0 153f2: 4b6d ldr r3, [pc, #436] ; (155a8 ) 153f4: 4798 blx r3 153f6: 0083 lsls r3, r0, #2 153f8: 181b adds r3, r3, r0 153fa: 00db lsls r3, r3, #3 153fc: 3350 adds r3, #80 ; 0x50 153fe: 2140 movs r1, #64 ; 0x40 15400: 31ff adds r1, #255 ; 0xff 15402: 2201 movs r2, #1 15404: 428b cmp r3, r1 15406: d900 bls.n 1540a 15408: e2e9 b.n 159de _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1540a: 2113 movs r1, #19 1540c: 0020 movs r0, r4 1540e: 4b67 ldr r3, [pc, #412] ; (155ac ) 15410: 4798 blx r3 lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15412: 4b5f ldr r3, [pc, #380] ; (15590 ) 15414: 681c ldr r4, [r3, #0] 15416: 3410 adds r4, #16 15418: 2000 movs r0, #0 1541a: 4b63 ldr r3, [pc, #396] ; (155a8 ) 1541c: 4798 blx r3 1541e: 0103 lsls r3, r0, #4 15420: 1a18 subs r0, r3, r0 15422: 3050 adds r0, #80 ; 0x50 15424: 2340 movs r3, #64 ; 0x40 15426: 33ff adds r3, #255 ; 0xff 15428: 2201 movs r2, #1 1542a: 4298 cmp r0, r3 1542c: d900 bls.n 15430 1542e: e2e3 b.n 159f8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15430: 2110 movs r1, #16 15432: 0020 movs r0, r4 15434: 4b5d ldr r3, [pc, #372] ; (155ac ) 15436: 4798 blx r3 lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15438: 4b55 ldr r3, [pc, #340] ; (15590 ) 1543a: 681c ldr r4, [r3, #0] 1543c: 3410 adds r4, #16 1543e: 2000 movs r0, #0 15440: 4b59 ldr r3, [pc, #356] ; (155a8 ) 15442: 4798 blx r3 15444: 0103 lsls r3, r0, #4 15446: 1a18 subs r0, r3, r0 15448: 3050 adds r0, #80 ; 0x50 1544a: 2340 movs r3, #64 ; 0x40 1544c: 33ff adds r3, #255 ; 0xff 1544e: 2201 movs r2, #1 15450: 4298 cmp r0, r3 15452: d900 bls.n 15456 15454: e2e8 b.n 15a28 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15456: 2111 movs r1, #17 15458: 0020 movs r0, r4 1545a: 4b54 ldr r3, [pc, #336] ; (155ac ) 1545c: 4798 blx r3 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 1545e: 4b4c ldr r3, [pc, #304] ; (15590 ) 15460: 681c ldr r4, [r3, #0] 15462: 3410 adds r4, #16 15464: 2000 movs r0, #0 15466: 4b50 ldr r3, [pc, #320] ; (155a8 ) 15468: 4798 blx r3 1546a: 0083 lsls r3, r0, #2 1546c: 181b adds r3, r3, r0 1546e: 009b lsls r3, r3, #2 15470: 3350 adds r3, #80 ; 0x50 15472: 2140 movs r1, #64 ; 0x40 15474: 31ff adds r1, #255 ; 0xff 15476: 2201 movs r2, #1 15478: 428b cmp r3, r1 1547a: d900 bls.n 1547e 1547c: e2df b.n 15a3e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1547e: 2114 movs r1, #20 15480: 0020 movs r0, r4 15482: 4d4a ldr r5, [pc, #296] ; (155ac ) 15484: 47a8 blx r5 lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, 3); 15486: 4c42 ldr r4, [pc, #264] ; (15590 ) 15488: 6820 ldr r0, [r4, #0] 1548a: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 1548c: 2203 movs r2, #3 1548e: 2140 movs r1, #64 ; 0x40 15490: 47a8 blx r5 lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); 15492: 6820 ldr r0, [r4, #0] 15494: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 15496: 2200 movs r2, #0 15498: 214c movs r1, #76 ; 0x4c 1549a: 4e45 ldr r6, [pc, #276] ; (155b0 ) 1549c: 47b0 blx r6 lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); 1549e: 6820 ldr r0, [r4, #0] 154a0: 3010 adds r0, #16 154a2: 227f movs r2, #127 ; 0x7f 154a4: 2193 movs r1, #147 ; 0x93 154a6: 0089 lsls r1, r1, #2 154a8: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); 154aa: 6820 ldr r0, [r4, #0] 154ac: 3010 adds r0, #16 154ae: 4f39 ldr r7, [pc, #228] ; (15594 ) 154b0: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 154b2: 2149 movs r1, #73 ; 0x49 154b4: 4e39 ldr r6, [pc, #228] ; (1559c ) 154b6: 47b0 blx r6 lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); 154b8: 6820 ldr r0, [r4, #0] 154ba: 3010 adds r0, #16 154bc: 88fa ldrh r2, [r7, #6] 154be: 494b ldr r1, [pc, #300] ; (155ec ) 154c0: 47b0 blx r6 lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 154c2: 6820 ldr r0, [r4, #0] 154c4: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 154c6: 2296 movs r2, #150 ; 0x96 154c8: 21b0 movs r1, #176 ; 0xb0 154ca: 47a8 blx r5 lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); 154cc: 6820 ldr r0, [r4, #0] 154ce: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t, _int, scalar) 154d0: 223c movs r2, #60 ; 0x3c 154d2: 21b5 movs r1, #181 ; 0xb5 154d4: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 154d6: 6820 ldr r0, [r4, #0] 154d8: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 154da: 2229 movs r2, #41 ; 0x29 154dc: 21b6 movs r1, #182 ; 0xb6 154de: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 154e0: 6820 ldr r0, [r4, #0] 154e2: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 154e4: 224c movs r2, #76 ; 0x4c 154e6: 21b7 movs r1, #183 ; 0xb7 154e8: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); 154ea: 6820 ldr r0, [r4, #0] 154ec: 3010 adds r0, #16 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_DELAY, transition_delay, lv_style_int_t, _int, scalar) 154ee: 2296 movs r2, #150 ; 0x96 154f0: 21b1 movs r1, #177 ; 0xb1 154f2: 47a8 blx r5 lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); 154f4: 6820 ldr r0, [r4, #0] 154f6: 3010 adds r0, #16 154f8: 2200 movs r2, #0 154fa: 493d ldr r1, [pc, #244] ; (155f0 ) 154fc: 47a8 blx r5 style_init_reset(&styles->pad_inner); 154fe: 6820 ldr r0, [r4, #0] 15500: 3014 adds r0, #20 15502: 4b3c ldr r3, [pc, #240] ; (155f4 ) 15504: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15506: 6824 ldr r4, [r4, #0] 15508: 3414 adds r4, #20 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 1550a: 2000 movs r0, #0 1550c: 4b3a ldr r3, [pc, #232] ; (155f8 ) 1550e: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15510: 2832 cmp r0, #50 ; 0x32 15512: d900 bls.n 15516 15514: e2ad b.n 15a72 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15516: 2000 movs r0, #0 15518: 4b23 ldr r3, [pc, #140] ; (155a8 ) 1551a: 4798 blx r3 1551c: 0083 lsls r3, r0, #2 1551e: 181b adds r3, r3, r0 15520: 009b lsls r3, r3, #2 15522: 3350 adds r3, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15524: 2140 movs r1, #64 ; 0x40 15526: 31ff adds r1, #255 ; 0xff 15528: 2201 movs r2, #1 1552a: 428b cmp r3, r1 1552c: d900 bls.n 15530 1552e: e293 b.n 15a58 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 15530: 2114 movs r1, #20 15532: 0020 movs r0, r4 15534: 4b1d ldr r3, [pc, #116] ; (155ac ) 15536: 4798 blx r3 style_init_reset(&styles->pad_small); 15538: 4b15 ldr r3, [pc, #84] ; (15590 ) 1553a: 6818 ldr r0, [r3, #0] 1553c: 3018 adds r0, #24 1553e: 4b2d ldr r3, [pc, #180] ; (155f4 ) 15540: 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); 15542: 2000 movs r0, #0 15544: 4b2c ldr r3, [pc, #176] ; (155f8 ) 15546: 4798 blx r3 15548: 2832 cmp r0, #50 ; 0x32 1554a: d900 bls.n 1554e 1554c: e2b8 b.n 15ac0 1554e: 2000 movs r0, #0 15550: 4b15 ldr r3, [pc, #84] ; (155a8 ) 15552: 4798 blx r3 15554: 0003 movs r3, r0 15556: 0080 lsls r0, r0, #2 15558: 18c0 adds r0, r0, r3 1555a: 0040 lsls r0, r0, #1 1555c: 3050 adds r0, #80 ; 0x50 1555e: 2340 movs r3, #64 ; 0x40 15560: 33ff adds r3, #255 ; 0xff 15562: 2401 movs r4, #1 15564: 4298 cmp r0, r3 15566: d900 bls.n 1556a 15568: e29d b.n 15aa6 lv_style_set_pad_left(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 1556a: 4e09 ldr r6, [pc, #36] ; (15590 ) 1556c: 6830 ldr r0, [r6, #0] 1556e: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15570: 0022 movs r2, r4 15572: 2112 movs r1, #18 15574: 4d0d ldr r5, [pc, #52] ; (155ac ) 15576: 47a8 blx r5 lv_style_set_pad_right(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 15578: 6830 ldr r0, [r6, #0] 1557a: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1557c: 0022 movs r2, r4 1557e: 2113 movs r1, #19 15580: 47a8 blx r5 lv_style_set_pad_top(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 15582: 6830 ldr r0, [r6, #0] 15584: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15586: 0022 movs r2, r4 15588: 2110 movs r1, #16 1558a: 47a8 blx r5 lv_style_set_pad_bottom(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 1558c: 6830 ldr r0, [r6, #0] 1558e: e035 b.n 155fc 15590: 20004c4c .word 0x20004c4c 15594: 20004c50 .word 0x20004c50 15598: 00002129 .word 0x00002129 1559c: 00006135 .word 0x00006135 155a0: 00001039 .word 0x00001039 155a4: 00002039 .word 0x00002039 155a8: 00010dd1 .word 0x00010dd1 155ac: 00005fad .word 0x00005fad 155b0: 000062bd .word 0x000062bd 155b4: 00008089 .word 0x00008089 155b8: 00009089 .word 0x00009089 155bc: fffff800 .word 0xfffff800 155c0: 00008189 .word 0x00008189 155c4: 00009189 .word 0x00009189 155c8: 0002ad9c .word 0x0002ad9c 155cc: 0000a089 .word 0x0000a089 155d0: 000080a9 .word 0x000080a9 155d4: 000090a9 .word 0x000090a9 155d8: 000091a9 .word 0x000091a9 155dc: 0000a0a9 .word 0x0000a0a9 155e0: 00001079 .word 0x00001079 155e4: 00001179 .word 0x00001179 155e8: 00002079 .word 0x00002079 155ec: 00000449 .word 0x00000449 155f0: 000010b1 .word 0x000010b1 155f4: 00014911 .word 0x00014911 155f8: 00010ded .word 0x00010ded 155fc: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 155fe: 0022 movs r2, r4 15600: 2111 movs r1, #17 15602: 47a8 blx r5 lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); 15604: 6830 ldr r0, [r6, #0] 15606: 3018 adds r0, #24 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 15608: 0022 movs r2, r4 1560a: 2114 movs r1, #20 1560c: 47a8 blx r5 } 1560e: bc0c pop {r2, r3} 15610: 4690 mov r8, r2 15612: 4699 mov r9, r3 15614: bdf8 pop {r3, r4, r5, r6, r7, pc} 15616: 231d movs r3, #29 15618: 213b movs r1, #59 ; 0x3b 1561a: 221e movs r2, #30 1561c: f7ff f9a1 bl 14962 15620: 2307 movs r3, #7 15622: 210f movs r1, #15 15624: 2208 movs r2, #8 15626: f7ff f9ae bl 14986 1562a: 2307 movs r3, #7 1562c: 210f movs r1, #15 1562e: 2208 movs r2, #8 15630: f7ff f9bb bl 149aa lv_style_set_radius(&styles->bg, LV_STATE_DEFAULT, LV_DPX(8)); 15634: 2000 movs r0, #0 15636: 4bf6 ldr r3, [pc, #984] ; (15a10 ) 15638: 4798 blx r3 1563a: 300a adds r0, #10 1563c: 00c0 lsls r0, r0, #3 1563e: 21a0 movs r1, #160 ; 0xa0 15640: 4bf4 ldr r3, [pc, #976] ; (15a14 ) 15642: 4798 blx r3 15644: b202 sxth r2, r0 15646: f7ff f9d4 bl 149f2 1564a: 231f movs r3, #31 1564c: 213f movs r1, #63 ; 0x3f 1564e: 221f movs r2, #31 15650: f7ff f9e5 bl 14a1e 15654: 231a movs r3, #26 15656: 2137 movs r1, #55 ; 0x37 15658: 221c movs r2, #28 1565a: f7ff f9f3 bl 14a44 lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, BORDER_WIDTH); 1565e: 2000 movs r0, #0 15660: 4beb ldr r3, [pc, #940] ; (15a10 ) 15662: 4798 blx r3 15664: 3028 adds r0, #40 ; 0x28 15666: 0040 lsls r0, r0, #1 15668: 21a0 movs r1, #160 ; 0xa0 1566a: 4bea ldr r3, [pc, #936] ; (15a14 ) 1566c: 4798 blx r3 1566e: b202 sxth r2, r0 15670: f7ff fa09 bl 14a86 15674: 2307 movs r3, #7 15676: 210f movs r1, #15 15678: 2208 movs r2, #8 1567a: f7ff fa1f bl 14abc 1567e: 2307 movs r3, #7 15680: 210f movs r1, #15 15682: 2208 movs r2, #8 15684: f7ff fa33 bl 14aee 15688: 2307 movs r3, #7 1568a: 210f movs r1, #15 1568c: 2208 movs r2, #8 1568e: f7ff fa41 bl 14b14 15692: 2307 movs r3, #7 15694: 210f movs r1, #15 15696: 2208 movs r2, #8 15698: f7ff fa4f bl 14b3a lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 1569c: 2000 movs r0, #0 1569e: 4bdc ldr r3, [pc, #880] ; (15a10 ) 156a0: 4798 blx r3 156a2: 0103 lsls r3, r0, #4 156a4: 1a18 subs r0, r3, r0 156a6: 3050 adds r0, #80 ; 0x50 156a8: 2340 movs r3, #64 ; 0x40 156aa: 33ff adds r3, #255 ; 0xff 156ac: 2401 movs r4, #1 156ae: 4298 cmp r0, r3 156b0: d801 bhi.n 156b6 156b2: f7ff fa67 bl 14b84 156b6: 2000 movs r0, #0 156b8: 4bd5 ldr r3, [pc, #852] ; (15a10 ) 156ba: 4798 blx r3 156bc: 0103 lsls r3, r0, #4 156be: 1a18 subs r0, r3, r0 156c0: 3050 adds r0, #80 ; 0x50 156c2: 21a0 movs r1, #160 ; 0xa0 156c4: 4bd3 ldr r3, [pc, #844] ; (15a14 ) 156c6: 4798 blx r3 156c8: b284 uxth r4, r0 156ca: f7ff fa5b bl 14b84 156ce: 2000 movs r0, #0 156d0: 4bcf ldr r3, [pc, #828] ; (15a10 ) 156d2: 4798 blx r3 156d4: 0103 lsls r3, r0, #4 156d6: 1a18 subs r0, r3, r0 156d8: 0040 lsls r0, r0, #1 156da: 3050 adds r0, #80 ; 0x50 156dc: 21a0 movs r1, #160 ; 0xa0 156de: 4bcd ldr r3, [pc, #820] ; (15a14 ) 156e0: 4798 blx r3 156e2: b284 uxth r4, r0 156e4: f7ff fa4e bl 14b84 156e8: 2000 movs r0, #0 156ea: 4bc9 ldr r3, [pc, #804] ; (15a10 ) 156ec: 4798 blx r3 156ee: 3028 adds r0, #40 ; 0x28 156f0: 0040 lsls r0, r0, #1 156f2: 21a0 movs r1, #160 ; 0xa0 156f4: 4bc7 ldr r3, [pc, #796] ; (15a14 ) 156f6: 4798 blx r3 156f8: b282 uxth r2, r0 156fa: f7ff fa50 bl 14b9e lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 156fe: 2000 movs r0, #0 15700: 4bc3 ldr r3, [pc, #780] ; (15a10 ) 15702: 4798 blx r3 15704: 0103 lsls r3, r0, #4 15706: 1a18 subs r0, r3, r0 15708: 3050 adds r0, #80 ; 0x50 1570a: 2340 movs r3, #64 ; 0x40 1570c: 33ff adds r3, #255 ; 0xff 1570e: 2401 movs r4, #1 15710: 4298 cmp r0, r3 15712: d801 bhi.n 15718 15714: f7ff fa61 bl 14bda 15718: 2000 movs r0, #0 1571a: 4bbd ldr r3, [pc, #756] ; (15a10 ) 1571c: 4798 blx r3 1571e: 0103 lsls r3, r0, #4 15720: 1a18 subs r0, r3, r0 15722: 3050 adds r0, #80 ; 0x50 15724: 21a0 movs r1, #160 ; 0xa0 15726: 4bbb ldr r3, [pc, #748] ; (15a14 ) 15728: 4798 blx r3 1572a: b284 uxth r4, r0 1572c: f7ff fa55 bl 14bda 15730: 2000 movs r0, #0 15732: 4bb7 ldr r3, [pc, #732] ; (15a10 ) 15734: 4798 blx r3 15736: 0103 lsls r3, r0, #4 15738: 1a18 subs r0, r3, r0 1573a: 0040 lsls r0, r0, #1 1573c: 3050 adds r0, #80 ; 0x50 1573e: 21a0 movs r1, #160 ; 0xa0 15740: 4bb4 ldr r3, [pc, #720] ; (15a14 ) 15742: 4798 blx r3 15744: b284 uxth r4, r0 15746: f7ff fa48 bl 14bda 1574a: 2000 movs r0, #0 1574c: 4bb0 ldr r3, [pc, #704] ; (15a10 ) 1574e: 4798 blx r3 15750: 3028 adds r0, #40 ; 0x28 15752: 0040 lsls r0, r0, #1 15754: 21a0 movs r1, #160 ; 0xa0 15756: 4baf ldr r3, [pc, #700] ; (15a14 ) 15758: 4798 blx r3 1575a: b282 uxth r2, r0 1575c: f7ff fa4a bl 14bf4 lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 15760: 2000 movs r0, #0 15762: 4bab ldr r3, [pc, #684] ; (15a10 ) 15764: 4798 blx r3 15766: 0103 lsls r3, r0, #4 15768: 1a18 subs r0, r3, r0 1576a: 3050 adds r0, #80 ; 0x50 1576c: 2340 movs r3, #64 ; 0x40 1576e: 33ff adds r3, #255 ; 0xff 15770: 2401 movs r4, #1 15772: 4298 cmp r0, r3 15774: d801 bhi.n 1577a 15776: f7ff fa5b bl 14c30 1577a: 2000 movs r0, #0 1577c: 4ba4 ldr r3, [pc, #656] ; (15a10 ) 1577e: 4798 blx r3 15780: 0103 lsls r3, r0, #4 15782: 1a18 subs r0, r3, r0 15784: 3050 adds r0, #80 ; 0x50 15786: 21a0 movs r1, #160 ; 0xa0 15788: 4ba2 ldr r3, [pc, #648] ; (15a14 ) 1578a: 4798 blx r3 1578c: b284 uxth r4, r0 1578e: f7ff fa4f bl 14c30 15792: 2000 movs r0, #0 15794: 4b9e ldr r3, [pc, #632] ; (15a10 ) 15796: 4798 blx r3 15798: 0103 lsls r3, r0, #4 1579a: 1a18 subs r0, r3, r0 1579c: 0040 lsls r0, r0, #1 1579e: 3050 adds r0, #80 ; 0x50 157a0: 21a0 movs r1, #160 ; 0xa0 157a2: 4b9c ldr r3, [pc, #624] ; (15a14 ) 157a4: 4798 blx r3 157a6: b284 uxth r4, r0 157a8: f7ff fa42 bl 14c30 157ac: 2000 movs r0, #0 157ae: 4b98 ldr r3, [pc, #608] ; (15a10 ) 157b0: 4798 blx r3 157b2: 3028 adds r0, #40 ; 0x28 157b4: 0040 lsls r0, r0, #1 157b6: 21a0 movs r1, #160 ; 0xa0 157b8: 4b96 ldr r3, [pc, #600] ; (15a14 ) 157ba: 4798 blx r3 157bc: b282 uxth r2, r0 157be: f7ff fa44 bl 14c4a lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, PAD_DEF + BORDER_WIDTH); 157c2: 2000 movs r0, #0 157c4: 4b92 ldr r3, [pc, #584] ; (15a10 ) 157c6: 4798 blx r3 157c8: 0103 lsls r3, r0, #4 157ca: 1a18 subs r0, r3, r0 157cc: 3050 adds r0, #80 ; 0x50 157ce: 2340 movs r3, #64 ; 0x40 157d0: 33ff adds r3, #255 ; 0xff 157d2: 2401 movs r4, #1 157d4: 4298 cmp r0, r3 157d6: d801 bhi.n 157dc 157d8: f7ff fa55 bl 14c86 157dc: 2000 movs r0, #0 157de: 4b8c ldr r3, [pc, #560] ; (15a10 ) 157e0: 4798 blx r3 157e2: 0103 lsls r3, r0, #4 157e4: 1a18 subs r0, r3, r0 157e6: 3050 adds r0, #80 ; 0x50 157e8: 21a0 movs r1, #160 ; 0xa0 157ea: 4b8a ldr r3, [pc, #552] ; (15a14 ) 157ec: 4798 blx r3 157ee: b284 uxth r4, r0 157f0: f7ff fa49 bl 14c86 157f4: 2000 movs r0, #0 157f6: 4b86 ldr r3, [pc, #536] ; (15a10 ) 157f8: 4798 blx r3 157fa: 0103 lsls r3, r0, #4 157fc: 1a18 subs r0, r3, r0 157fe: 0040 lsls r0, r0, #1 15800: 3050 adds r0, #80 ; 0x50 15802: 21a0 movs r1, #160 ; 0xa0 15804: 4b83 ldr r3, [pc, #524] ; (15a14 ) 15806: 4798 blx r3 15808: b284 uxth r4, r0 1580a: f7ff fa3c bl 14c86 1580e: 2000 movs r0, #0 15810: 4b7f ldr r3, [pc, #508] ; (15a10 ) 15812: 4798 blx r3 15814: 3028 adds r0, #40 ; 0x28 15816: 0040 lsls r0, r0, #1 15818: 21a0 movs r1, #160 ; 0xa0 1581a: 4b7e ldr r3, [pc, #504] ; (15a14 ) 1581c: 4798 blx r3 1581e: b282 uxth r2, r0 15820: f7ff fa3e bl 14ca0 lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, PAD_DEF); 15824: 2000 movs r0, #0 15826: 4b7a ldr r3, [pc, #488] ; (15a10 ) 15828: 4798 blx r3 1582a: 0103 lsls r3, r0, #4 1582c: 1a18 subs r0, r3, r0 1582e: 3050 adds r0, #80 ; 0x50 15830: 2340 movs r3, #64 ; 0x40 15832: 33ff adds r3, #255 ; 0xff 15834: 2201 movs r2, #1 15836: 4298 cmp r0, r3 15838: d801 bhi.n 1583e 1583a: f7ff fa4f bl 14cdc 1583e: 2000 movs r0, #0 15840: 4b73 ldr r3, [pc, #460] ; (15a10 ) 15842: 4798 blx r3 15844: 0103 lsls r3, r0, #4 15846: 1a18 subs r0, r3, r0 15848: 3050 adds r0, #80 ; 0x50 1584a: 21a0 movs r1, #160 ; 0xa0 1584c: 4b71 ldr r3, [pc, #452] ; (15a14 ) 1584e: 4798 blx r3 15850: b202 sxth r2, r0 15852: f7ff fa43 bl 14cdc 15856: 2000 movs r0, #0 15858: 4b6d ldr r3, [pc, #436] ; (15a10 ) 1585a: 4798 blx r3 1585c: 0103 lsls r3, r0, #4 1585e: 1a18 subs r0, r3, r0 15860: 0040 lsls r0, r0, #1 15862: 3050 adds r0, #80 ; 0x50 15864: 21a0 movs r1, #160 ; 0xa0 15866: 4b6b ldr r3, [pc, #428] ; (15a14 ) 15868: 4798 blx r3 1586a: b202 sxth r2, r0 1586c: f7ff fa36 bl 14cdc 15870: 231a movs r3, #26 15872: 2135 movs r1, #53 ; 0x35 15874: 221b movs r2, #27 15876: f7ff fa73 bl 14d60 1587a: 231b movs r3, #27 1587c: 2139 movs r1, #57 ; 0x39 1587e: 221d movs r2, #29 15880: f7ff fa81 bl 14d86 15884: 2306 movs r3, #6 15886: 2110 movs r1, #16 15888: 2209 movs r2, #9 1588a: f7ff fa8f bl 14dac 1588e: 2306 movs r3, #6 15890: 2110 movs r1, #16 15892: 2209 movs r2, #9 15894: f7ff fa9d bl 14dd2 15898: 2306 movs r3, #6 1589a: 2110 movs r1, #16 1589c: 2209 movs r2, #9 1589e: f7ff faab bl 14df8 158a2: 2306 movs r3, #6 158a4: 2110 movs r1, #16 158a6: 2209 movs r2, #9 158a8: f7ff fab9 bl 14e1e 158ac: 231d movs r3, #29 158ae: 213b movs r1, #59 ; 0x3b 158b0: 221d movs r2, #29 158b2: f7ff facb bl 14e4c 158b6: 231f movs r3, #31 158b8: 213f movs r1, #63 ; 0x3f 158ba: 221f movs r2, #31 158bc: f7ff fae9 bl 14e92 158c0: 2319 movs r3, #25 158c2: 2133 movs r1, #51 ; 0x33 158c4: 2219 movs r2, #25 158c6: f7ff fb08 bl 14eda 158ca: 2307 movs r3, #7 158cc: 210f movs r1, #15 158ce: 2208 movs r2, #8 158d0: f7ff fb16 bl 14f00 158d4: 2307 movs r3, #7 158d6: 210f movs r1, #15 158d8: 2208 movs r2, #8 158da: f7ff fb25 bl 14f28 158de: 231a movs r3, #26 158e0: 2137 movs r1, #55 ; 0x37 158e2: 221c movs r2, #28 158e4: f7ff fb33 bl 14f4e 158e8: 2307 movs r3, #7 158ea: 210f movs r1, #15 158ec: 2208 movs r2, #8 158ee: f7ff fb41 bl 14f74 158f2: 222a movs r2, #42 ; 0x2a 158f4: 2315 movs r3, #21 158f6: f7ff fb62 bl 14fbe 158fa: 2307 movs r3, #7 158fc: 210f movs r1, #15 158fe: 2208 movs r2, #8 15900: f7ff fb70 bl 14fe4 15904: 222a movs r2, #42 ; 0x2a 15906: 2315 movs r3, #21 15908: f7ff fb91 bl 1502e 1590c: 231f movs r3, #31 1590e: 213f movs r1, #63 ; 0x3f 15910: 221f movs r2, #31 15912: f7ff fbb4 bl 1507e LV_COLOR_SET_R(ret, LV_MATH_UDIV255((uint16_t) LV_COLOR_GET_R(c1) * mix + LV_COLOR_GET_R(c2) * (255 - mix))); 15916: 4e40 ldr r6, [pc, #256] ; (15a18 ) 15918: 7972 ldrb r2, [r6, #5] 1591a: 08d2 lsrs r2, r2, #3 1591c: 254c movs r5, #76 ; 0x4c 1591e: 436a muls r2, r5 15920: 4b3e ldr r3, [pc, #248] ; (15a1c ) 15922: 18d3 adds r3, r2, r3 15924: 021a lsls r2, r3, #8 15926: 18d2 adds r2, r2, r3 15928: 01d2 lsls r2, r2, #7 1592a: 18d2 adds r2, r2, r3 1592c: 0dd2 lsrs r2, r2, #23 1592e: 211f movs r1, #31 15930: 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))); 15932: 88b4 ldrh r4, [r6, #4] 15934: 0564 lsls r4, r4, #21 15936: 0ea4 lsrs r4, r4, #26 15938: 436c muls r4, r5 1593a: 4b39 ldr r3, [pc, #228] ; (15a20 ) 1593c: 469c mov ip, r3 1593e: 4464 add r4, ip 15940: 0223 lsls r3, r4, #8 15942: 191b adds r3, r3, r4 15944: 01db lsls r3, r3, #7 15946: 191b adds r3, r3, r4 15948: 00db lsls r3, r3, #3 1594a: 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))); 1594c: 7934 ldrb r4, [r6, #4] 1594e: 06e4 lsls r4, r4, #27 15950: 0ee4 lsrs r4, r4, #27 15952: 4365 muls r5, r4 15954: 4c33 ldr r4, [pc, #204] ; (15a24 ) 15956: 46a4 mov ip, r4 15958: 4465 add r5, ip 1595a: 022c lsls r4, r5, #8 1595c: 1964 adds r4, r4, r5 1595e: 01e4 lsls r4, r4, #7 15960: 1964 adds r4, r4, r5 15962: 0de4 lsrs r4, r4, #23 15964: 4021 ands r1, r4 15966: f7ff fbcb bl 15100 1596a: 231f movs r3, #31 1596c: 213f movs r1, #63 ; 0x3f 1596e: 221f movs r2, #31 15970: f7ff fbe9 bl 15146 15974: 2233 movs r2, #51 ; 0x33 15976: 2319 movs r3, #25 15978: e430 b.n 151dc 1597a: 2222 movs r2, #34 ; 0x22 1597c: 2311 movs r3, #17 1597e: e448 b.n 15212 lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); 15980: 2000 movs r0, #0 15982: 4b23 ldr r3, [pc, #140] ; (15a10 ) 15984: 4798 blx r3 15986: 3028 adds r0, #40 ; 0x28 15988: 0040 lsls r0, r0, #1 1598a: 21a0 movs r1, #160 ; 0xa0 1598c: 4b21 ldr r3, [pc, #132] ; (15a14 ) 1598e: 4798 blx r3 15990: b202 sxth r2, r0 15992: e453 b.n 1523c 15994: 2306 movs r3, #6 15996: 2110 movs r1, #16 15998: 2209 movs r2, #9 1599a: e465 b.n 15268 1599c: 2306 movs r3, #6 1599e: 2110 movs r1, #16 159a0: 2209 movs r2, #9 159a2: e473 b.n 1528c 159a4: 2306 movs r3, #6 159a6: 2110 movs r1, #16 159a8: 2209 movs r2, #9 159aa: e49a b.n 152e2 159ac: 2306 movs r3, #6 159ae: 2110 movs r1, #16 159b0: 2209 movs r2, #9 159b2: e4a8 b.n 15306 159b4: 2306 movs r3, #6 159b6: 2110 movs r1, #16 159b8: 2209 movs r2, #9 159ba: e4cf b.n 1535c 159bc: 2306 movs r3, #6 159be: 2110 movs r1, #16 159c0: 2209 movs r2, #9 159c2: e4dd b.n 15380 lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 159c4: 2000 movs r0, #0 159c6: 4b12 ldr r3, [pc, #72] ; (15a10 ) 159c8: 4798 blx r3 159ca: 0003 movs r3, r0 159cc: 0080 lsls r0, r0, #2 159ce: 18c0 adds r0, r0, r3 159d0: 00c0 lsls r0, r0, #3 159d2: 3050 adds r0, #80 ; 0x50 159d4: 21a0 movs r1, #160 ; 0xa0 159d6: 4b0f ldr r3, [pc, #60] ; (15a14 ) 159d8: 4798 blx r3 159da: b202 sxth r2, r0 159dc: e501 b.n 153e2 lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); 159de: 2000 movs r0, #0 159e0: 4b0b ldr r3, [pc, #44] ; (15a10 ) 159e2: 4798 blx r3 159e4: 0003 movs r3, r0 159e6: 0080 lsls r0, r0, #2 159e8: 18c0 adds r0, r0, r3 159ea: 00c0 lsls r0, r0, #3 159ec: 3050 adds r0, #80 ; 0x50 159ee: 21a0 movs r1, #160 ; 0xa0 159f0: 4b08 ldr r3, [pc, #32] ; (15a14 ) 159f2: 4798 blx r3 159f4: b202 sxth r2, r0 159f6: e508 b.n 1540a lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 159f8: 2000 movs r0, #0 159fa: 4b05 ldr r3, [pc, #20] ; (15a10 ) 159fc: 4798 blx r3 159fe: 0103 lsls r3, r0, #4 15a00: 1a18 subs r0, r3, r0 15a02: 3050 adds r0, #80 ; 0x50 15a04: 21a0 movs r1, #160 ; 0xa0 15a06: 4b03 ldr r3, [pc, #12] ; (15a14 ) 15a08: 4798 blx r3 15a0a: b202 sxth r2, r0 15a0c: e510 b.n 15430 15a0e: 46c0 nop ; (mov r8, r8) 15a10: 00010dd1 .word 0x00010dd1 15a14: 0001c0a5 .word 0x0001c0a5 15a18: 20004c50 .word 0x20004c50 15a1c: 000007b1 .word 0x000007b1 15a20: 000010c8 .word 0x000010c8 15a24: 000009ca .word 0x000009ca lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); 15a28: 2000 movs r0, #0 15a2a: 4b33 ldr r3, [pc, #204] ; (15af8 ) 15a2c: 4798 blx r3 15a2e: 0103 lsls r3, r0, #4 15a30: 1a18 subs r0, r3, r0 15a32: 3050 adds r0, #80 ; 0x50 15a34: 21a0 movs r1, #160 ; 0xa0 15a36: 4b31 ldr r3, [pc, #196] ; (15afc ) 15a38: 4798 blx r3 15a3a: b202 sxth r2, r0 15a3c: e50b b.n 15456 lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); 15a3e: 2000 movs r0, #0 15a40: 4b2d ldr r3, [pc, #180] ; (15af8 ) 15a42: 4798 blx r3 15a44: 0003 movs r3, r0 15a46: 0080 lsls r0, r0, #2 15a48: 18c0 adds r0, r0, r3 15a4a: 0080 lsls r0, r0, #2 15a4c: 3050 adds r0, #80 ; 0x50 15a4e: 21a0 movs r1, #160 ; 0xa0 15a50: 4b2a ldr r3, [pc, #168] ; (15afc ) 15a52: 4798 blx r3 15a54: b202 sxth r2, r0 15a56: e512 b.n 1547e lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15a58: 2000 movs r0, #0 15a5a: 4b27 ldr r3, [pc, #156] ; (15af8 ) 15a5c: 4798 blx r3 15a5e: 0003 movs r3, r0 15a60: 0080 lsls r0, r0, #2 15a62: 18c0 adds r0, r0, r3 15a64: 0080 lsls r0, r0, #2 15a66: 3050 adds r0, #80 ; 0x50 15a68: 21a0 movs r1, #160 ; 0xa0 15a6a: 4b24 ldr r3, [pc, #144] ; (15afc ) 15a6c: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15a6e: b202 sxth r2, r0 15a70: e55e b.n 15530 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15a72: 2000 movs r0, #0 15a74: 4b20 ldr r3, [pc, #128] ; (15af8 ) 15a76: 4798 blx r3 15a78: 0083 lsls r3, r0, #2 15a7a: 181b adds r3, r3, r0 15a7c: 00db lsls r3, r3, #3 15a7e: 3350 adds r3, #80 ; 0x50 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15a80: 2140 movs r1, #64 ; 0x40 15a82: 31ff adds r1, #255 ; 0xff 15a84: 2201 movs r2, #1 15a86: 428b cmp r3, r1 15a88: d800 bhi.n 15a8c 15a8a: e551 b.n 15530 lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); 15a8c: 2000 movs r0, #0 15a8e: 4b1a ldr r3, [pc, #104] ; (15af8 ) 15a90: 4798 blx r3 15a92: 0003 movs r3, r0 15a94: 0080 lsls r0, r0, #2 15a96: 18c0 adds r0, r0, r3 15a98: 00c0 lsls r0, r0, #3 15a9a: 3050 adds r0, #80 ; 0x50 15a9c: 21a0 movs r1, #160 ; 0xa0 15a9e: 4b17 ldr r3, [pc, #92] ; (15afc ) 15aa0: 4798 blx r3 lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, 15aa2: b202 sxth r2, r0 15aa4: e544 b.n 15530 lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); 15aa6: 2000 movs r0, #0 15aa8: 4b13 ldr r3, [pc, #76] ; (15af8 ) 15aaa: 4798 blx r3 15aac: 0003 movs r3, r0 15aae: 0080 lsls r0, r0, #2 15ab0: 18c0 adds r0, r0, r3 15ab2: 0040 lsls r0, r0, #1 15ab4: 3050 adds r0, #80 ; 0x50 15ab6: 21a0 movs r1, #160 ; 0xa0 15ab8: 4b10 ldr r3, [pc, #64] ; (15afc ) 15aba: 4798 blx r3 15abc: b204 sxth r4, r0 15abe: e554 b.n 1556a 15ac0: 2000 movs r0, #0 15ac2: 4b0d ldr r3, [pc, #52] ; (15af8 ) 15ac4: 4798 blx r3 15ac6: 0003 movs r3, r0 15ac8: 0080 lsls r0, r0, #2 15aca: 18c0 adds r0, r0, r3 15acc: 0080 lsls r0, r0, #2 15ace: 3050 adds r0, #80 ; 0x50 15ad0: 2340 movs r3, #64 ; 0x40 15ad2: 33ff adds r3, #255 ; 0xff 15ad4: 2401 movs r4, #1 15ad6: 4298 cmp r0, r3 15ad8: d800 bhi.n 15adc 15ada: e546 b.n 1556a 15adc: 2000 movs r0, #0 15ade: 4b06 ldr r3, [pc, #24] ; (15af8 ) 15ae0: 4798 blx r3 15ae2: 0003 movs r3, r0 15ae4: 0080 lsls r0, r0, #2 15ae6: 18c0 adds r0, r0, r3 15ae8: 0080 lsls r0, r0, #2 15aea: 3050 adds r0, #80 ; 0x50 15aec: 21a0 movs r1, #160 ; 0xa0 15aee: 4b03 ldr r3, [pc, #12] ; (15afc ) 15af0: 4798 blx r3 15af2: b204 sxth r4, r0 15af4: e539 b.n 1556a 15af6: 46c0 nop ; (mov r8, r8) 15af8: 00010dd1 .word 0x00010dd1 15afc: 0001c0a5 .word 0x0001c0a5 00015b00 : { 15b00: b5f0 push {r4, r5, r6, r7, lr} 15b02: 46c6 mov lr, r8 15b04: b500 push {lr} style_init_reset(&styles->bar_bg); 15b06: 4c49 ldr r4, [pc, #292] ; (15c2c ) 15b08: 6820 ldr r0, [r4, #0] 15b0a: 3024 adds r0, #36 ; 0x24 15b0c: 4b48 ldr r3, [pc, #288] ; (15c30 ) 15b0e: 4798 blx r3 lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15b10: 6820 ldr r0, [r4, #0] 15b12: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15b14: 4a47 ldr r2, [pc, #284] ; (15c34 ) 15b16: 2101 movs r1, #1 15b18: 4b47 ldr r3, [pc, #284] ; (15c38 ) 15b1a: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 15b1c: 6820 ldr r0, [r4, #0] 15b1e: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15b20: 22ff movs r2, #255 ; 0xff 15b22: 212c movs r1, #44 ; 0x2c 15b24: 4b45 ldr r3, [pc, #276] ; (15c3c ) 15b26: 4798 blx r3 lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 15b28: 6820 ldr r0, [r4, #0] 15b2a: 3024 adds r0, #36 ; 0x24 15b2c: 4b44 ldr r3, [pc, #272] ; (15c40 ) 15b2e: 699b ldr r3, [r3, #24] 15b30: 079b lsls r3, r3, #30 15b32: d500 bpl.n 15b36 15b34: e06e b.n 15c14 15b36: 2308 movs r3, #8 15b38: 2112 movs r1, #18 15b3a: 2209 movs r2, #9 15b3c: 0149 lsls r1, r1, #5 15b3e: 02db lsls r3, r3, #11 15b40: 430a orrs r2, r1 15b42: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15b44: 2129 movs r1, #41 ; 0x29 15b46: 4b3f ldr r3, [pc, #252] ; (15c44 ) 15b48: 4798 blx r3 lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15b4a: 4b38 ldr r3, [pc, #224] ; (15c2c ) 15b4c: 6818 ldr r0, [r3, #0] 15b4e: 3024 adds r0, #36 ; 0x24 15b50: 4b3b ldr r3, [pc, #236] ; (15c40 ) 15b52: 699b ldr r3, [r3, #24] 15b54: 079b lsls r3, r3, #30 15b56: d461 bmi.n 15c1c 15b58: 231f movs r3, #31 15b5a: 213f movs r1, #63 ; 0x3f 15b5c: 221f movs r2, #31 15b5e: 0149 lsls r1, r1, #5 15b60: 02db lsls r3, r3, #11 15b62: 430a orrs r2, r1 15b64: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15b66: 2179 movs r1, #121 ; 0x79 15b68: 4d36 ldr r5, [pc, #216] ; (15c44 ) 15b6a: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); 15b6c: 4c2f ldr r4, [pc, #188] ; (15c2c ) 15b6e: 6820 ldr r0, [r4, #0] 15b70: 3024 adds r0, #36 ; 0x24 15b72: 4e33 ldr r6, [pc, #204] ; (15c40 ) 15b74: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 15b76: 2149 movs r1, #73 ; 0x49 15b78: 47a8 blx r5 lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); 15b7a: 6820 ldr r0, [r4, #0] 15b7c: 3024 adds r0, #36 ; 0x24 15b7e: 88f2 ldrh r2, [r6, #6] 15b80: 4931 ldr r1, [pc, #196] ; (15c48 ) 15b82: 47a8 blx r5 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 15b84: 6820 ldr r0, [r4, #0] 15b86: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 15b88: 2200 movs r2, #0 15b8a: 214c movs r1, #76 ; 0x4c 15b8c: 4b2b ldr r3, [pc, #172] ; (15c3c ) 15b8e: 4698 mov r8, r3 15b90: 4798 blx r3 lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); 15b92: 6820 ldr r0, [r4, #0] 15b94: 3024 adds r0, #36 ; 0x24 15b96: 227f movs r2, #127 ; 0x7f 15b98: 2193 movs r1, #147 ; 0x93 15b9a: 0089 lsls r1, r1, #2 15b9c: 47c0 blx r8 lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, 3); 15b9e: 6820 ldr r0, [r4, #0] 15ba0: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 15ba2: 2203 movs r2, #3 15ba4: 2140 movs r1, #64 ; 0x40 15ba6: 4f24 ldr r7, [pc, #144] ; (15c38 ) 15ba8: 47b8 blx r7 lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 15baa: 6820 ldr r0, [r4, #0] 15bac: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 15bae: 2296 movs r2, #150 ; 0x96 15bb0: 21b0 movs r1, #176 ; 0xb0 15bb2: 47b8 blx r7 lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 15bb4: 6820 ldr r0, [r4, #0] 15bb6: 3024 adds r0, #36 ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 15bb8: 224c movs r2, #76 ; 0x4c 15bba: 21b7 movs r1, #183 ; 0xb7 15bbc: 47b8 blx r7 style_init_reset(&styles->bar_indic); 15bbe: 6820 ldr r0, [r4, #0] 15bc0: 3028 adds r0, #40 ; 0x28 15bc2: 4b1b ldr r3, [pc, #108] ; (15c30 ) 15bc4: 4798 blx r3 lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 15bc6: 6820 ldr r0, [r4, #0] 15bc8: 3028 adds r0, #40 ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15bca: 22ff movs r2, #255 ; 0xff 15bcc: 212c movs r1, #44 ; 0x2c 15bce: 47c0 blx r8 lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15bd0: 6820 ldr r0, [r4, #0] 15bd2: 3028 adds r0, #40 ; 0x28 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15bd4: 4a17 ldr r2, [pc, #92] ; (15c34 ) 15bd6: 2101 movs r1, #1 15bd8: 47b8 blx r7 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); 15bda: 6820 ldr r0, [r4, #0] 15bdc: 3028 adds r0, #40 ; 0x28 15bde: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15be0: 2129 movs r1, #41 ; 0x29 15be2: 47a8 blx r5 lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); 15be4: 6820 ldr r0, [r4, #0] 15be6: 3028 adds r0, #40 ; 0x28 15be8: 4b18 ldr r3, [pc, #96] ; (15c4c ) 15bea: 881a ldrh r2, [r3, #0] 15bec: 4918 ldr r1, [pc, #96] ; (15c50 ) 15bee: 47a8 blx r5 lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); 15bf0: 6820 ldr r0, [r4, #0] 15bf2: 3028 adds r0, #40 ; 0x28 15bf4: 69b3 ldr r3, [r6, #24] 15bf6: 079b lsls r3, r3, #30 15bf8: d414 bmi.n 15c24 15bfa: 231f movs r3, #31 15bfc: 213f movs r1, #63 ; 0x3f 15bfe: 221f movs r2, #31 15c00: 0149 lsls r1, r1, #5 15c02: 02db lsls r3, r3, #11 15c04: 430a orrs r2, r1 15c06: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15c08: 2179 movs r1, #121 ; 0x79 15c0a: 4b0e ldr r3, [pc, #56] ; (15c44 ) 15c0c: 4798 blx r3 } 15c0e: bc04 pop {r2} 15c10: 4690 mov r8, r2 15c12: bdf0 pop {r4, r5, r6, r7, pc} 15c14: 231a movs r3, #26 15c16: 2135 movs r1, #53 ; 0x35 15c18: 221b movs r2, #27 15c1a: e78f b.n 15b3c 15c1c: 2306 movs r3, #6 15c1e: 2110 movs r1, #16 15c20: 2209 movs r2, #9 15c22: e79c b.n 15b5e 15c24: 2308 movs r3, #8 15c26: 2110 movs r1, #16 15c28: 2209 movs r2, #9 15c2a: e7e9 b.n 15c00 15c2c: 20004c4c .word 0x20004c4c 15c30: 00014911 .word 0x00014911 15c34: 00007fff .word 0x00007fff 15c38: 00005fad .word 0x00005fad 15c3c: 000062bd .word 0x000062bd 15c40: 20004c50 .word 0x20004c50 15c44: 00006135 .word 0x00006135 15c48: 00000449 .word 0x00000449 15c4c: 0002ad9c .word 0x0002ad9c 15c50: 00002029 .word 0x00002029 00015c54 : { 15c54: b510 push {r4, lr} style_init_reset(&styles->slider_knob); 15c56: 4c9a ldr r4, [pc, #616] ; (15ec0 ) 15c58: 6820 ldr r0, [r4, #0] 15c5a: 3090 adds r0, #144 ; 0x90 15c5c: 4b99 ldr r3, [pc, #612] ; (15ec4 ) 15c5e: 4798 blx r3 lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 15c60: 6820 ldr r0, [r4, #0] 15c62: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15c64: 22ff movs r2, #255 ; 0xff 15c66: 212c movs r1, #44 ; 0x2c 15c68: 4b97 ldr r3, [pc, #604] ; (15ec8 ) 15c6a: 4798 blx r3 lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 15c6c: 6820 ldr r0, [r4, #0] 15c6e: 3090 adds r0, #144 ; 0x90 15c70: 4b96 ldr r3, [pc, #600] ; (15ecc ) 15c72: 699b ldr r3, [r3, #24] 15c74: 079b lsls r3, r3, #30 15c76: d400 bmi.n 15c7a 15c78: e0bb b.n 15df2 15c7a: 4b94 ldr r3, [pc, #592] ; (15ecc ) 15c7c: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15c7e: 2129 movs r1, #41 ; 0x29 15c80: 4b93 ldr r3, [pc, #588] ; (15ed0 ) 15c82: 4798 blx r3 lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 15c84: 4b8e ldr r3, [pc, #568] ; (15ec0 ) 15c86: 6818 ldr r0, [r3, #0] 15c88: 3090 adds r0, #144 ; 0x90 15c8a: 4b90 ldr r3, [pc, #576] ; (15ecc ) 15c8c: 699b ldr r3, [r3, #24] 15c8e: 079b lsls r3, r3, #30 15c90: d500 bpl.n 15c94 15c92: e0b1 b.n 15df8 15c94: 231f movs r3, #31 15c96: 213f movs r1, #63 ; 0x3f 15c98: 221f movs r2, #31 15c9a: 0149 lsls r1, r1, #5 15c9c: 02db lsls r3, r3, #11 15c9e: 430a orrs r2, r1 15ca0: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar) 15ca2: 2179 movs r1, #121 ; 0x79 15ca4: 4b8a ldr r3, [pc, #552] ; (15ed0 ) 15ca6: 4798 blx r3 lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15ca8: 4c85 ldr r4, [pc, #532] ; (15ec0 ) 15caa: 6820 ldr r0, [r4, #0] 15cac: 3090 adds r0, #144 ; 0x90 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15cae: 4a89 ldr r2, [pc, #548] ; (15ed4 ) 15cb0: 2101 movs r1, #1 15cb2: 4b89 ldr r3, [pc, #548] ; (15ed8 ) 15cb4: 4798 blx r3 lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15cb6: 6824 ldr r4, [r4, #0] 15cb8: 3490 adds r4, #144 ; 0x90 15cba: 2000 movs r0, #0 15cbc: 4b87 ldr r3, [pc, #540] ; (15edc ) 15cbe: 4798 blx r3 15cc0: 00c3 lsls r3, r0, #3 15cc2: 1a18 subs r0, r3, r0 15cc4: 3050 adds r0, #80 ; 0x50 15cc6: 2340 movs r3, #64 ; 0x40 15cc8: 33ff adds r3, #255 ; 0xff 15cca: 2201 movs r2, #1 15ccc: 4298 cmp r0, r3 15cce: d900 bls.n 15cd2 15cd0: e096 b.n 15e00 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15cd2: 2112 movs r1, #18 15cd4: 0020 movs r0, r4 15cd6: 4b80 ldr r3, [pc, #512] ; (15ed8 ) 15cd8: 4798 blx r3 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15cda: 4b79 ldr r3, [pc, #484] ; (15ec0 ) 15cdc: 681c ldr r4, [r3, #0] 15cde: 3490 adds r4, #144 ; 0x90 15ce0: 2000 movs r0, #0 15ce2: 4b7e ldr r3, [pc, #504] ; (15edc ) 15ce4: 4798 blx r3 15ce6: 00c3 lsls r3, r0, #3 15ce8: 1a18 subs r0, r3, r0 15cea: 3050 adds r0, #80 ; 0x50 15cec: 2340 movs r3, #64 ; 0x40 15cee: 33ff adds r3, #255 ; 0xff 15cf0: 2201 movs r2, #1 15cf2: 4298 cmp r0, r3 15cf4: d900 bls.n 15cf8 15cf6: e08e b.n 15e16 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15cf8: 2113 movs r1, #19 15cfa: 0020 movs r0, r4 15cfc: 4b76 ldr r3, [pc, #472] ; (15ed8 ) 15cfe: 4798 blx r3 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15d00: 4b6f ldr r3, [pc, #444] ; (15ec0 ) 15d02: 681c ldr r4, [r3, #0] 15d04: 3490 adds r4, #144 ; 0x90 15d06: 2000 movs r0, #0 15d08: 4b74 ldr r3, [pc, #464] ; (15edc ) 15d0a: 4798 blx r3 15d0c: 00c3 lsls r3, r0, #3 15d0e: 1a18 subs r0, r3, r0 15d10: 3050 adds r0, #80 ; 0x50 15d12: 2340 movs r3, #64 ; 0x40 15d14: 33ff adds r3, #255 ; 0xff 15d16: 2201 movs r2, #1 15d18: 4298 cmp r0, r3 15d1a: d900 bls.n 15d1e 15d1c: e086 b.n 15e2c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15d1e: 2110 movs r1, #16 15d20: 0020 movs r0, r4 15d22: 4b6d ldr r3, [pc, #436] ; (15ed8 ) 15d24: 4798 blx r3 lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15d26: 4b66 ldr r3, [pc, #408] ; (15ec0 ) 15d28: 681c ldr r4, [r3, #0] 15d2a: 3490 adds r4, #144 ; 0x90 15d2c: 2000 movs r0, #0 15d2e: 4b6b ldr r3, [pc, #428] ; (15edc ) 15d30: 4798 blx r3 15d32: 00c3 lsls r3, r0, #3 15d34: 1a18 subs r0, r3, r0 15d36: 3050 adds r0, #80 ; 0x50 15d38: 2340 movs r3, #64 ; 0x40 15d3a: 33ff adds r3, #255 ; 0xff 15d3c: 2201 movs r2, #1 15d3e: 4298 cmp r0, r3 15d40: d900 bls.n 15d44 15d42: e07e b.n 15e42 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15d44: 2111 movs r1, #17 15d46: 0020 movs r0, r4 15d48: 4b63 ldr r3, [pc, #396] ; (15ed8 ) 15d4a: 4798 blx r3 style_init_reset(&styles->slider_bg); 15d4c: 4c5c ldr r4, [pc, #368] ; (15ec0 ) 15d4e: 6820 ldr r0, [r4, #0] 15d50: 3094 adds r0, #148 ; 0x94 15d52: 4b5c ldr r3, [pc, #368] ; (15ec4 ) 15d54: 4798 blx r3 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15d56: 6824 ldr r4, [r4, #0] 15d58: 3494 adds r4, #148 ; 0x94 15d5a: 2000 movs r0, #0 15d5c: 4b5f ldr r3, [pc, #380] ; (15edc ) 15d5e: 4798 blx r3 15d60: 0083 lsls r3, r0, #2 15d62: 181b adds r3, r3, r0 15d64: 005b lsls r3, r3, #1 15d66: 3350 adds r3, #80 ; 0x50 15d68: 2140 movs r1, #64 ; 0x40 15d6a: 31ff adds r1, #255 ; 0xff 15d6c: 2201 movs r2, #1 15d6e: 428b cmp r3, r1 15d70: d900 bls.n 15d74 15d72: e071 b.n 15e58 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_LEFT, margin_left, lv_style_int_t, _int, scalar) 15d74: 2117 movs r1, #23 15d76: 0020 movs r0, r4 15d78: 4b57 ldr r3, [pc, #348] ; (15ed8 ) 15d7a: 4798 blx r3 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15d7c: 4b50 ldr r3, [pc, #320] ; (15ec0 ) 15d7e: 681c ldr r4, [r3, #0] 15d80: 3494 adds r4, #148 ; 0x94 15d82: 2000 movs r0, #0 15d84: 4b55 ldr r3, [pc, #340] ; (15edc ) 15d86: 4798 blx r3 15d88: 0083 lsls r3, r0, #2 15d8a: 181b adds r3, r3, r0 15d8c: 005b lsls r3, r3, #1 15d8e: 3350 adds r3, #80 ; 0x50 15d90: 2140 movs r1, #64 ; 0x40 15d92: 31ff adds r1, #255 ; 0xff 15d94: 2201 movs r2, #1 15d96: 428b cmp r3, r1 15d98: d900 bls.n 15d9c 15d9a: e06a b.n 15e72 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_RIGHT, margin_right, lv_style_int_t, _int, scalar) 15d9c: 2118 movs r1, #24 15d9e: 0020 movs r0, r4 15da0: 4b4d ldr r3, [pc, #308] ; (15ed8 ) 15da2: 4798 blx r3 lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15da4: 4b46 ldr r3, [pc, #280] ; (15ec0 ) 15da6: 681c ldr r4, [r3, #0] 15da8: 3494 adds r4, #148 ; 0x94 15daa: 2000 movs r0, #0 15dac: 4b4b ldr r3, [pc, #300] ; (15edc ) 15dae: 4798 blx r3 15db0: 0083 lsls r3, r0, #2 15db2: 181b adds r3, r3, r0 15db4: 005b lsls r3, r3, #1 15db6: 3350 adds r3, #80 ; 0x50 15db8: 2140 movs r1, #64 ; 0x40 15dba: 31ff adds r1, #255 ; 0xff 15dbc: 2201 movs r2, #1 15dbe: 428b cmp r3, r1 15dc0: d864 bhi.n 15e8c _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_TOP, margin_top, lv_style_int_t, _int, scalar) 15dc2: 2115 movs r1, #21 15dc4: 0020 movs r0, r4 15dc6: 4b44 ldr r3, [pc, #272] ; (15ed8 ) 15dc8: 4798 blx r3 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15dca: 4b3d ldr r3, [pc, #244] ; (15ec0 ) 15dcc: 681c ldr r4, [r3, #0] 15dce: 3494 adds r4, #148 ; 0x94 15dd0: 2000 movs r0, #0 15dd2: 4b42 ldr r3, [pc, #264] ; (15edc ) 15dd4: 4798 blx r3 15dd6: 0083 lsls r3, r0, #2 15dd8: 181b adds r3, r3, r0 15dda: 005b lsls r3, r3, #1 15ddc: 3350 adds r3, #80 ; 0x50 15dde: 2140 movs r1, #64 ; 0x40 15de0: 31ff adds r1, #255 ; 0xff 15de2: 2201 movs r2, #1 15de4: 428b cmp r3, r1 15de6: d85e bhi.n 15ea6 _LV_OBJ_STYLE_SET_GET_DECLARE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t, _int, scalar) 15de8: 2116 movs r1, #22 15dea: 0020 movs r0, r4 15dec: 4b3a ldr r3, [pc, #232] ; (15ed8 ) 15dee: 4798 blx r3 } 15df0: bd10 pop {r4, pc} lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); 15df2: 4b3b ldr r3, [pc, #236] ; (15ee0 ) 15df4: 881a ldrh r2, [r3, #0] 15df6: e742 b.n 15c7e 15df8: 2306 movs r3, #6 15dfa: 2110 movs r1, #16 15dfc: 2209 movs r2, #9 15dfe: e74c b.n 15c9a lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e00: 2000 movs r0, #0 15e02: 4b36 ldr r3, [pc, #216] ; (15edc ) 15e04: 4798 blx r3 15e06: 00c3 lsls r3, r0, #3 15e08: 1a18 subs r0, r3, r0 15e0a: 3050 adds r0, #80 ; 0x50 15e0c: 21a0 movs r1, #160 ; 0xa0 15e0e: 4b35 ldr r3, [pc, #212] ; (15ee4 ) 15e10: 4798 blx r3 15e12: b202 sxth r2, r0 15e14: e75d b.n 15cd2 lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e16: 2000 movs r0, #0 15e18: 4b30 ldr r3, [pc, #192] ; (15edc ) 15e1a: 4798 blx r3 15e1c: 00c3 lsls r3, r0, #3 15e1e: 1a18 subs r0, r3, r0 15e20: 3050 adds r0, #80 ; 0x50 15e22: 21a0 movs r1, #160 ; 0xa0 15e24: 4b2f ldr r3, [pc, #188] ; (15ee4 ) 15e26: 4798 blx r3 15e28: b202 sxth r2, r0 15e2a: e765 b.n 15cf8 lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e2c: 2000 movs r0, #0 15e2e: 4b2b ldr r3, [pc, #172] ; (15edc ) 15e30: 4798 blx r3 15e32: 00c3 lsls r3, r0, #3 15e34: 1a18 subs r0, r3, r0 15e36: 3050 adds r0, #80 ; 0x50 15e38: 21a0 movs r1, #160 ; 0xa0 15e3a: 4b2a ldr r3, [pc, #168] ; (15ee4 ) 15e3c: 4798 blx r3 15e3e: b202 sxth r2, r0 15e40: e76d b.n 15d1e lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); 15e42: 2000 movs r0, #0 15e44: 4b25 ldr r3, [pc, #148] ; (15edc ) 15e46: 4798 blx r3 15e48: 00c3 lsls r3, r0, #3 15e4a: 1a18 subs r0, r3, r0 15e4c: 3050 adds r0, #80 ; 0x50 15e4e: 21a0 movs r1, #160 ; 0xa0 15e50: 4b24 ldr r3, [pc, #144] ; (15ee4 ) 15e52: 4798 blx r3 15e54: b202 sxth r2, r0 15e56: e775 b.n 15d44 lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15e58: 2000 movs r0, #0 15e5a: 4b20 ldr r3, [pc, #128] ; (15edc ) 15e5c: 4798 blx r3 15e5e: 0003 movs r3, r0 15e60: 0080 lsls r0, r0, #2 15e62: 18c0 adds r0, r0, r3 15e64: 0040 lsls r0, r0, #1 15e66: 3050 adds r0, #80 ; 0x50 15e68: 21a0 movs r1, #160 ; 0xa0 15e6a: 4b1e ldr r3, [pc, #120] ; (15ee4 ) 15e6c: 4798 blx r3 15e6e: b202 sxth r2, r0 15e70: e780 b.n 15d74 lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15e72: 2000 movs r0, #0 15e74: 4b19 ldr r3, [pc, #100] ; (15edc ) 15e76: 4798 blx r3 15e78: 0003 movs r3, r0 15e7a: 0080 lsls r0, r0, #2 15e7c: 18c0 adds r0, r0, r3 15e7e: 0040 lsls r0, r0, #1 15e80: 3050 adds r0, #80 ; 0x50 15e82: 21a0 movs r1, #160 ; 0xa0 15e84: 4b17 ldr r3, [pc, #92] ; (15ee4 ) 15e86: 4798 blx r3 15e88: b202 sxth r2, r0 15e8a: e787 b.n 15d9c lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15e8c: 2000 movs r0, #0 15e8e: 4b13 ldr r3, [pc, #76] ; (15edc ) 15e90: 4798 blx r3 15e92: 0003 movs r3, r0 15e94: 0080 lsls r0, r0, #2 15e96: 18c0 adds r0, r0, r3 15e98: 0040 lsls r0, r0, #1 15e9a: 3050 adds r0, #80 ; 0x50 15e9c: 21a0 movs r1, #160 ; 0xa0 15e9e: 4b11 ldr r3, [pc, #68] ; (15ee4 ) 15ea0: 4798 blx r3 15ea2: b202 sxth r2, r0 15ea4: e78d b.n 15dc2 lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); 15ea6: 2000 movs r0, #0 15ea8: 4b0c ldr r3, [pc, #48] ; (15edc ) 15eaa: 4798 blx r3 15eac: 0003 movs r3, r0 15eae: 0080 lsls r0, r0, #2 15eb0: 18c0 adds r0, r0, r3 15eb2: 0040 lsls r0, r0, #1 15eb4: 3050 adds r0, #80 ; 0x50 15eb6: 21a0 movs r1, #160 ; 0xa0 15eb8: 4b0a ldr r3, [pc, #40] ; (15ee4 ) 15eba: 4798 blx r3 15ebc: b202 sxth r2, r0 15ebe: e793 b.n 15de8 15ec0: 20004c4c .word 0x20004c4c 15ec4: 00014911 .word 0x00014911 15ec8: 000062bd .word 0x000062bd 15ecc: 20004c50 .word 0x20004c50 15ed0: 00006135 .word 0x00006135 15ed4: 00007fff .word 0x00007fff 15ed8: 00005fad .word 0x00005fad 15edc: 00010dd1 .word 0x00010dd1 15ee0: 0002ada0 .word 0x0002ada0 15ee4: 0001c0a5 .word 0x0001c0a5 00015ee8 : { 15ee8: b510 push {r4, lr} style_init_reset(&styles->sw_knob); 15eea: 4c46 ldr r4, [pc, #280] ; (16004 ) 15eec: 6820 ldr r0, [r4, #0] 15eee: 309c adds r0, #156 ; 0x9c 15ef0: 4b45 ldr r3, [pc, #276] ; (16008 ) 15ef2: 4798 blx r3 lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); 15ef4: 6820 ldr r0, [r4, #0] 15ef6: 309c adds r0, #156 ; 0x9c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 15ef8: 22ff movs r2, #255 ; 0xff 15efa: 212c movs r1, #44 ; 0x2c 15efc: 4b43 ldr r3, [pc, #268] ; (1600c ) 15efe: 4798 blx r3 lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); 15f00: 6820 ldr r0, [r4, #0] 15f02: 309c adds r0, #156 ; 0x9c 15f04: 4b42 ldr r3, [pc, #264] ; (16010 ) 15f06: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 15f08: 2129 movs r1, #41 ; 0x29 15f0a: 4b42 ldr r3, [pc, #264] ; (16014 ) 15f0c: 4798 blx r3 lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 15f0e: 6820 ldr r0, [r4, #0] 15f10: 309c adds r0, #156 ; 0x9c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 15f12: 4a41 ldr r2, [pc, #260] ; (16018 ) 15f14: 2101 movs r1, #1 15f16: 4b41 ldr r3, [pc, #260] ; (1601c ) 15f18: 4798 blx r3 lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15f1a: 6824 ldr r4, [r4, #0] 15f1c: 349c adds r4, #156 ; 0x9c 15f1e: 2000 movs r0, #0 15f20: 4b3f ldr r3, [pc, #252] ; (16020 ) 15f22: 4798 blx r3 15f24: 3014 adds r0, #20 15f26: 0080 lsls r0, r0, #2 15f28: 2340 movs r3, #64 ; 0x40 15f2a: 33ff adds r3, #255 ; 0xff 15f2c: 4298 cmp r0, r3 15f2e: d83c bhi.n 15faa 15f30: 2201 movs r2, #1 15f32: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 15f34: 2110 movs r1, #16 15f36: 0020 movs r0, r4 15f38: 4b38 ldr r3, [pc, #224] ; (1601c ) 15f3a: 4798 blx r3 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15f3c: 4b31 ldr r3, [pc, #196] ; (16004 ) 15f3e: 681c ldr r4, [r3, #0] 15f40: 349c adds r4, #156 ; 0x9c 15f42: 2000 movs r0, #0 15f44: 4b36 ldr r3, [pc, #216] ; (16020 ) 15f46: 4798 blx r3 15f48: 3014 adds r0, #20 15f4a: 0080 lsls r0, r0, #2 15f4c: 2340 movs r3, #64 ; 0x40 15f4e: 33ff adds r3, #255 ; 0xff 15f50: 4298 cmp r0, r3 15f52: d835 bhi.n 15fc0 15f54: 2201 movs r2, #1 15f56: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 15f58: 2111 movs r1, #17 15f5a: 0020 movs r0, r4 15f5c: 4b2f ldr r3, [pc, #188] ; (1601c ) 15f5e: 4798 blx r3 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15f60: 4b28 ldr r3, [pc, #160] ; (16004 ) 15f62: 681c ldr r4, [r3, #0] 15f64: 349c adds r4, #156 ; 0x9c 15f66: 2000 movs r0, #0 15f68: 4b2d ldr r3, [pc, #180] ; (16020 ) 15f6a: 4798 blx r3 15f6c: 3014 adds r0, #20 15f6e: 0080 lsls r0, r0, #2 15f70: 2340 movs r3, #64 ; 0x40 15f72: 33ff adds r3, #255 ; 0xff 15f74: 4298 cmp r0, r3 15f76: d82e bhi.n 15fd6 15f78: 2201 movs r2, #1 15f7a: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 15f7c: 2112 movs r1, #18 15f7e: 0020 movs r0, r4 15f80: 4b26 ldr r3, [pc, #152] ; (1601c ) 15f82: 4798 blx r3 lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15f84: 4b1f ldr r3, [pc, #124] ; (16004 ) 15f86: 681c ldr r4, [r3, #0] 15f88: 349c adds r4, #156 ; 0x9c 15f8a: 2000 movs r0, #0 15f8c: 4b24 ldr r3, [pc, #144] ; (16020 ) 15f8e: 4798 blx r3 15f90: 3014 adds r0, #20 15f92: 0080 lsls r0, r0, #2 15f94: 2340 movs r3, #64 ; 0x40 15f96: 33ff adds r3, #255 ; 0xff 15f98: 4298 cmp r0, r3 15f9a: d827 bhi.n 15fec 15f9c: 2201 movs r2, #1 15f9e: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 15fa0: 2113 movs r1, #19 15fa2: 0020 movs r0, r4 15fa4: 4b1d ldr r3, [pc, #116] ; (1601c ) 15fa6: 4798 blx r3 } 15fa8: bd10 pop {r4, pc} lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15faa: 2000 movs r0, #0 15fac: 4b1c ldr r3, [pc, #112] ; (16020 ) 15fae: 4798 blx r3 15fb0: 3014 adds r0, #20 15fb2: 0080 lsls r0, r0, #2 15fb4: 21a0 movs r1, #160 ; 0xa0 15fb6: 4b1b ldr r3, [pc, #108] ; (16024 ) 15fb8: 4798 blx r3 15fba: 4242 negs r2, r0 15fbc: b212 sxth r2, r2 15fbe: e7b9 b.n 15f34 lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15fc0: 2000 movs r0, #0 15fc2: 4b17 ldr r3, [pc, #92] ; (16020 ) 15fc4: 4798 blx r3 15fc6: 3014 adds r0, #20 15fc8: 0080 lsls r0, r0, #2 15fca: 21a0 movs r1, #160 ; 0xa0 15fcc: 4b15 ldr r3, [pc, #84] ; (16024 ) 15fce: 4798 blx r3 15fd0: 4242 negs r2, r0 15fd2: b212 sxth r2, r2 15fd4: e7c0 b.n 15f58 lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15fd6: 2000 movs r0, #0 15fd8: 4b11 ldr r3, [pc, #68] ; (16020 ) 15fda: 4798 blx r3 15fdc: 3014 adds r0, #20 15fde: 0080 lsls r0, r0, #2 15fe0: 21a0 movs r1, #160 ; 0xa0 15fe2: 4b10 ldr r3, [pc, #64] ; (16024 ) 15fe4: 4798 blx r3 15fe6: 4242 negs r2, r0 15fe8: b212 sxth r2, r2 15fea: e7c7 b.n 15f7c lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, - LV_DPX(4)); 15fec: 2000 movs r0, #0 15fee: 4b0c ldr r3, [pc, #48] ; (16020 ) 15ff0: 4798 blx r3 15ff2: 3014 adds r0, #20 15ff4: 0080 lsls r0, r0, #2 15ff6: 21a0 movs r1, #160 ; 0xa0 15ff8: 4b0a ldr r3, [pc, #40] ; (16024 ) 15ffa: 4798 blx r3 15ffc: 4242 negs r2, r0 15ffe: b212 sxth r2, r2 16000: e7ce b.n 15fa0 16002: 46c0 nop ; (mov r8, r8) 16004: 20004c4c .word 0x20004c4c 16008: 00014911 .word 0x00014911 1600c: 000062bd .word 0x000062bd 16010: 0002ada0 .word 0x0002ada0 16014: 00006135 .word 0x00006135 16018: 00007fff .word 0x00007fff 1601c: 00005fad .word 0x00005fad 16020: 00010dd1 .word 0x00010dd1 16024: 0001c0a5 .word 0x0001c0a5 00016028 : { 16028: b570 push {r4, r5, r6, lr} style_init_reset(&styles->lmeter); 1602a: 4c7f ldr r4, [pc, #508] ; (16228 ) 1602c: 6820 ldr r0, [r4, #0] 1602e: 3070 adds r0, #112 ; 0x70 16030: 4b7e ldr r3, [pc, #504] ; (1622c ) 16032: 4798 blx r3 lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16034: 6820 ldr r0, [r4, #0] 16036: 3070 adds r0, #112 ; 0x70 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16038: 4a7d ldr r2, [pc, #500] ; (16230 ) 1603a: 2101 movs r1, #1 1603c: 4b7d ldr r3, [pc, #500] ; (16234 ) 1603e: 4798 blx r3 lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16040: 6824 ldr r4, [r4, #0] 16042: 3470 adds r4, #112 ; 0x70 16044: 2000 movs r0, #0 16046: 4b7c ldr r3, [pc, #496] ; (16238 ) 16048: 4798 blx r3 1604a: 0083 lsls r3, r0, #2 1604c: 181b adds r3, r3, r0 1604e: 009b lsls r3, r3, #2 16050: 3350 adds r3, #80 ; 0x50 16052: 2140 movs r1, #64 ; 0x40 16054: 31ff adds r1, #255 ; 0xff 16056: 2201 movs r2, #1 16058: 428b cmp r3, r1 1605a: d900 bls.n 1605e 1605c: e08c b.n 16178 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1605e: 2112 movs r1, #18 16060: 0020 movs r0, r4 16062: 4b74 ldr r3, [pc, #464] ; (16234 ) 16064: 4798 blx r3 lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16066: 4b70 ldr r3, [pc, #448] ; (16228 ) 16068: 681c ldr r4, [r3, #0] 1606a: 3470 adds r4, #112 ; 0x70 1606c: 2000 movs r0, #0 1606e: 4b72 ldr r3, [pc, #456] ; (16238 ) 16070: 4798 blx r3 16072: 0083 lsls r3, r0, #2 16074: 181b adds r3, r3, r0 16076: 009b lsls r3, r3, #2 16078: 3350 adds r3, #80 ; 0x50 1607a: 2140 movs r1, #64 ; 0x40 1607c: 31ff adds r1, #255 ; 0xff 1607e: 2201 movs r2, #1 16080: 428b cmp r3, r1 16082: d900 bls.n 16086 16084: e085 b.n 16192 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16086: 2113 movs r1, #19 16088: 0020 movs r0, r4 1608a: 4b6a ldr r3, [pc, #424] ; (16234 ) 1608c: 4798 blx r3 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 1608e: 4b66 ldr r3, [pc, #408] ; (16228 ) 16090: 681c ldr r4, [r3, #0] 16092: 3470 adds r4, #112 ; 0x70 16094: 2000 movs r0, #0 16096: 4b68 ldr r3, [pc, #416] ; (16238 ) 16098: 4798 blx r3 1609a: 0083 lsls r3, r0, #2 1609c: 181b adds r3, r3, r0 1609e: 009b lsls r3, r3, #2 160a0: 3350 adds r3, #80 ; 0x50 160a2: 2140 movs r1, #64 ; 0x40 160a4: 31ff adds r1, #255 ; 0xff 160a6: 2201 movs r2, #1 160a8: 428b cmp r3, r1 160aa: d900 bls.n 160ae 160ac: e07e b.n 161ac _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 160ae: 2110 movs r1, #16 160b0: 0020 movs r0, r4 160b2: 4b60 ldr r3, [pc, #384] ; (16234 ) 160b4: 4798 blx r3 lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 160b6: 4b5c ldr r3, [pc, #368] ; (16228 ) 160b8: 681c ldr r4, [r3, #0] 160ba: 3470 adds r4, #112 ; 0x70 160bc: 2000 movs r0, #0 160be: 4b5e ldr r3, [pc, #376] ; (16238 ) 160c0: 4798 blx r3 160c2: 0103 lsls r3, r0, #4 160c4: 1a1b subs r3, r3, r0 160c6: 005b lsls r3, r3, #1 160c8: 3350 adds r3, #80 ; 0x50 160ca: 2140 movs r1, #64 ; 0x40 160cc: 31ff adds r1, #255 ; 0xff 160ce: 2201 movs r2, #1 160d0: 428b cmp r3, r1 160d2: d900 bls.n 160d6 160d4: e077 b.n 161c6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 160d6: 2114 movs r1, #20 160d8: 0020 movs r0, r4 160da: 4b56 ldr r3, [pc, #344] ; (16234 ) 160dc: 4798 blx r3 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 160de: 4b52 ldr r3, [pc, #328] ; (16228 ) 160e0: 681c ldr r4, [r3, #0] 160e2: 3470 adds r4, #112 ; 0x70 160e4: 2000 movs r0, #0 160e6: 4b54 ldr r3, [pc, #336] ; (16238 ) 160e8: 4798 blx r3 160ea: 0083 lsls r3, r0, #2 160ec: 1818 adds r0, r3, r0 160ee: 0083 lsls r3, r0, #2 160f0: 18c0 adds r0, r0, r3 160f2: 3050 adds r0, #80 ; 0x50 160f4: 2340 movs r3, #64 ; 0x40 160f6: 33ff adds r3, #255 ; 0xff 160f8: 2201 movs r2, #1 160fa: 4298 cmp r0, r3 160fc: d900 bls.n 16100 160fe: e06e b.n 161de _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) 16100: 21c0 movs r1, #192 ; 0xc0 16102: 0020 movs r0, r4 16104: 4b4b ldr r3, [pc, #300] ; (16234 ) 16106: 4798 blx r3 lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 16108: 4c47 ldr r4, [pc, #284] ; (16228 ) 1610a: 6820 ldr r0, [r4, #0] 1610c: 3070 adds r0, #112 ; 0x70 1610e: 4e4b ldr r6, [pc, #300] ; (1623c ) 16110: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16112: 2199 movs r1, #153 ; 0x99 16114: 4d4a ldr r5, [pc, #296] ; (16240 ) 16116: 47a8 blx r5 lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); 16118: 6820 ldr r0, [r4, #0] 1611a: 3070 adds r0, #112 ; 0x70 1611c: 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) 1611e: 21c9 movs r1, #201 ; 0xc9 16120: 47a8 blx r5 lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 16122: 6820 ldr r0, [r4, #0] 16124: 3070 adds r0, #112 ; 0x70 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16126: 4b47 ldr r3, [pc, #284] ; (16244 ) 16128: 881a ldrh r2, [r3, #0] 1612a: 21ca movs r1, #202 ; 0xca 1612c: 47a8 blx r5 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 1612e: 6824 ldr r4, [r4, #0] 16130: 3470 adds r4, #112 ; 0x70 16132: 2000 movs r0, #0 16134: 4b40 ldr r3, [pc, #256] ; (16238 ) 16136: 4798 blx r3 16138: 0083 lsls r3, r0, #2 1613a: 181b adds r3, r3, r0 1613c: 005b lsls r3, r3, #1 1613e: 3350 adds r3, #80 ; 0x50 16140: 2140 movs r1, #64 ; 0x40 16142: 31ff adds r1, #255 ; 0xff 16144: 2201 movs r2, #1 16146: 428b cmp r3, r1 16148: d856 bhi.n 161f8 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1614a: 2190 movs r1, #144 ; 0x90 1614c: 0020 movs r0, r4 1614e: 4b39 ldr r3, [pc, #228] ; (16234 ) 16150: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 16152: 4b35 ldr r3, [pc, #212] ; (16228 ) 16154: 681c ldr r4, [r3, #0] 16156: 3470 adds r4, #112 ; 0x70 16158: 2000 movs r0, #0 1615a: 4b37 ldr r3, [pc, #220] ; (16238 ) 1615c: 4798 blx r3 1615e: 00c3 lsls r3, r0, #3 16160: 1a18 subs r0, r3, r0 16162: 3050 adds r0, #80 ; 0x50 16164: 2340 movs r3, #64 ; 0x40 16166: 33ff adds r3, #255 ; 0xff 16168: 2201 movs r2, #1 1616a: 4298 cmp r0, r3 1616c: d851 bhi.n 16212 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 1616e: 21c3 movs r1, #195 ; 0xc3 16170: 0020 movs r0, r4 16172: 4b30 ldr r3, [pc, #192] ; (16234 ) 16174: 4798 blx r3 } 16176: bd70 pop {r4, r5, r6, pc} lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16178: 2000 movs r0, #0 1617a: 4b2f ldr r3, [pc, #188] ; (16238 ) 1617c: 4798 blx r3 1617e: 0003 movs r3, r0 16180: 0080 lsls r0, r0, #2 16182: 18c0 adds r0, r0, r3 16184: 0080 lsls r0, r0, #2 16186: 3050 adds r0, #80 ; 0x50 16188: 21a0 movs r1, #160 ; 0xa0 1618a: 4b2f ldr r3, [pc, #188] ; (16248 ) 1618c: 4798 blx r3 1618e: b202 sxth r2, r0 16190: e765 b.n 1605e lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 16192: 2000 movs r0, #0 16194: 4b28 ldr r3, [pc, #160] ; (16238 ) 16196: 4798 blx r3 16198: 0003 movs r3, r0 1619a: 0080 lsls r0, r0, #2 1619c: 18c0 adds r0, r0, r3 1619e: 0080 lsls r0, r0, #2 161a0: 3050 adds r0, #80 ; 0x50 161a2: 21a0 movs r1, #160 ; 0xa0 161a4: 4b28 ldr r3, [pc, #160] ; (16248 ) 161a6: 4798 blx r3 161a8: b202 sxth r2, r0 161aa: e76c b.n 16086 lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); 161ac: 2000 movs r0, #0 161ae: 4b22 ldr r3, [pc, #136] ; (16238 ) 161b0: 4798 blx r3 161b2: 0003 movs r3, r0 161b4: 0080 lsls r0, r0, #2 161b6: 18c0 adds r0, r0, r3 161b8: 0080 lsls r0, r0, #2 161ba: 3050 adds r0, #80 ; 0x50 161bc: 21a0 movs r1, #160 ; 0xa0 161be: 4b22 ldr r3, [pc, #136] ; (16248 ) 161c0: 4798 blx r3 161c2: b202 sxth r2, r0 161c4: e773 b.n 160ae lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); 161c6: 2000 movs r0, #0 161c8: 4b1b ldr r3, [pc, #108] ; (16238 ) 161ca: 4798 blx r3 161cc: 0103 lsls r3, r0, #4 161ce: 1a18 subs r0, r3, r0 161d0: 0040 lsls r0, r0, #1 161d2: 3050 adds r0, #80 ; 0x50 161d4: 21a0 movs r1, #160 ; 0xa0 161d6: 4b1c ldr r3, [pc, #112] ; (16248 ) 161d8: 4798 blx r3 161da: b202 sxth r2, r0 161dc: e77b b.n 160d6 lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); 161de: 2000 movs r0, #0 161e0: 4b15 ldr r3, [pc, #84] ; (16238 ) 161e2: 4798 blx r3 161e4: 0083 lsls r3, r0, #2 161e6: 1818 adds r0, r3, r0 161e8: 0083 lsls r3, r0, #2 161ea: 18c0 adds r0, r0, r3 161ec: 3050 adds r0, #80 ; 0x50 161ee: 21a0 movs r1, #160 ; 0xa0 161f0: 4b15 ldr r3, [pc, #84] ; (16248 ) 161f2: 4798 blx r3 161f4: b202 sxth r2, r0 161f6: e783 b.n 16100 lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); 161f8: 2000 movs r0, #0 161fa: 4b0f ldr r3, [pc, #60] ; (16238 ) 161fc: 4798 blx r3 161fe: 0003 movs r3, r0 16200: 0080 lsls r0, r0, #2 16202: 18c0 adds r0, r0, r3 16204: 0040 lsls r0, r0, #1 16206: 3050 adds r0, #80 ; 0x50 16208: 21a0 movs r1, #160 ; 0xa0 1620a: 4b0f ldr r3, [pc, #60] ; (16248 ) 1620c: 4798 blx r3 1620e: b202 sxth r2, r0 16210: e79b b.n 1614a lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); 16212: 2000 movs r0, #0 16214: 4b08 ldr r3, [pc, #32] ; (16238 ) 16216: 4798 blx r3 16218: 00c3 lsls r3, r0, #3 1621a: 1a18 subs r0, r3, r0 1621c: 3050 adds r0, #80 ; 0x50 1621e: 21a0 movs r1, #160 ; 0xa0 16220: 4b09 ldr r3, [pc, #36] ; (16248 ) 16222: 4798 blx r3 16224: b202 sxth r2, r0 16226: e7a2 b.n 1616e 16228: 20004c4c .word 0x20004c4c 1622c: 00014911 .word 0x00014911 16230: 00007fff .word 0x00007fff 16234: 00005fad .word 0x00005fad 16238: 00010dd1 .word 0x00010dd1 1623c: 20004c50 .word 0x20004c50 16240: 00006135 .word 0x00006135 16244: 0002ad9c .word 0x0002ad9c 16248: 0001c0a5 .word 0x0001c0a5 0001624c : { 1624c: b5f0 push {r4, r5, r6, r7, lr} 1624e: 46c6 mov lr, r8 16250: b500 push {lr} style_init_reset(&styles->gauge_main); 16252: 4de3 ldr r5, [pc, #908] ; (165e0 ) 16254: 6828 ldr r0, [r5, #0] 16256: 305c adds r0, #92 ; 0x5c 16258: 4be2 ldr r3, [pc, #904] ; (165e4 ) 1625a: 4798 blx r3 lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1625c: 6828 ldr r0, [r5, #0] 1625e: 305c adds r0, #92 ; 0x5c 16260: 2711 movs r7, #17 16262: 2488 movs r4, #136 ; 0x88 16264: 00e4 lsls r4, r4, #3 16266: 0022 movs r2, r4 16268: 433a orrs r2, r7 1626a: 0552 lsls r2, r2, #21 1626c: 0d52 lsrs r2, r2, #21 1626e: 4ede ldr r6, [pc, #888] ; (165e8 ) 16270: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16272: 2199 movs r1, #153 ; 0x99 16274: 4bdd ldr r3, [pc, #884] ; (165ec ) 16276: 4698 mov r8, r3 16278: 4798 blx r3 lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 1627a: 6828 ldr r0, [r5, #0] 1627c: 305c adds r0, #92 ; 0x5c 1627e: 0022 movs r2, r4 16280: 433a orrs r2, r7 16282: 0552 lsls r2, r2, #21 16284: 0d52 lsrs r2, r2, #21 16286: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 16288: 21c9 movs r1, #201 ; 0xc9 1628a: 47c0 blx r8 lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); 1628c: 6828 ldr r0, [r5, #0] 1628e: 305c adds r0, #92 ; 0x5c 16290: 4bd7 ldr r3, [pc, #860] ; (165f0 ) 16292: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16294: 21ca movs r1, #202 ; 0xca 16296: 47c0 blx r8 lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 16298: 682c ldr r4, [r5, #0] 1629a: 345c adds r4, #92 ; 0x5c 1629c: 2000 movs r0, #0 1629e: 4bd5 ldr r3, [pc, #852] ; (165f4 ) 162a0: 4798 blx r3 162a2: 0083 lsls r3, r0, #2 162a4: 1818 adds r0, r3, r0 162a6: 3050 adds r0, #80 ; 0x50 162a8: 2340 movs r3, #64 ; 0x40 162aa: 33ff adds r3, #255 ; 0xff 162ac: 2201 movs r2, #1 162ae: 4298 cmp r0, r3 162b0: d900 bls.n 162b4 162b2: e15b b.n 1656c _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 162b4: 2190 movs r1, #144 ; 0x90 162b6: 0020 movs r0, r4 162b8: 4bcf ldr r3, [pc, #828] ; (165f8 ) 162ba: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 162bc: 4bc8 ldr r3, [pc, #800] ; (165e0 ) 162be: 681c ldr r4, [r3, #0] 162c0: 345c adds r4, #92 ; 0x5c 162c2: 2000 movs r0, #0 162c4: 4bcb ldr r3, [pc, #812] ; (165f4 ) 162c6: 4798 blx r3 162c8: 3014 adds r0, #20 162ca: 0080 lsls r0, r0, #2 162cc: 2340 movs r3, #64 ; 0x40 162ce: 33ff adds r3, #255 ; 0xff 162d0: 2201 movs r2, #1 162d2: 4298 cmp r0, r3 162d4: d900 bls.n 162d8 162d6: e155 b.n 16584 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 162d8: 21c3 movs r1, #195 ; 0xc3 162da: 0020 movs r0, r4 162dc: 4bc6 ldr r3, [pc, #792] ; (165f8 ) 162de: 4798 blx r3 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 162e0: 4bbf ldr r3, [pc, #764] ; (165e0 ) 162e2: 681c ldr r4, [r3, #0] 162e4: 345c adds r4, #92 ; 0x5c 162e6: 2000 movs r0, #0 162e8: 4bc2 ldr r3, [pc, #776] ; (165f4 ) 162ea: 4798 blx r3 162ec: 300a adds r0, #10 162ee: 00c0 lsls r0, r0, #3 162f0: 2340 movs r3, #64 ; 0x40 162f2: 33ff adds r3, #255 ; 0xff 162f4: 2201 movs r2, #1 162f6: 4298 cmp r0, r3 162f8: d900 bls.n 162fc 162fa: e14d b.n 16598 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t, _int, scalar) 162fc: 21c2 movs r1, #194 ; 0xc2 162fe: 0020 movs r0, r4 16300: 4bbd ldr r3, [pc, #756] ; (165f8 ) 16302: 4798 blx r3 lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16304: 4bb6 ldr r3, [pc, #728] ; (165e0 ) 16306: 681c ldr r4, [r3, #0] 16308: 345c adds r4, #92 ; 0x5c 1630a: 2000 movs r0, #0 1630c: 4bb9 ldr r3, [pc, #740] ; (165f4 ) 1630e: 4798 blx r3 16310: 0083 lsls r3, r0, #2 16312: 181b adds r3, r3, r0 16314: 009b lsls r3, r3, #2 16316: 3350 adds r3, #80 ; 0x50 16318: 2140 movs r1, #64 ; 0x40 1631a: 31ff adds r1, #255 ; 0xff 1631c: 2201 movs r2, #1 1631e: 428b cmp r3, r1 16320: d900 bls.n 16324 16322: e143 b.n 165ac _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16324: 2112 movs r1, #18 16326: 0020 movs r0, r4 16328: 4bb3 ldr r3, [pc, #716] ; (165f8 ) 1632a: 4798 blx r3 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1632c: 4bac ldr r3, [pc, #688] ; (165e0 ) 1632e: 681c ldr r4, [r3, #0] 16330: 345c adds r4, #92 ; 0x5c 16332: 2000 movs r0, #0 16334: 4baf ldr r3, [pc, #700] ; (165f4 ) 16336: 4798 blx r3 16338: 0083 lsls r3, r0, #2 1633a: 181b adds r3, r3, r0 1633c: 009b lsls r3, r3, #2 1633e: 3350 adds r3, #80 ; 0x50 16340: 2140 movs r1, #64 ; 0x40 16342: 31ff adds r1, #255 ; 0xff 16344: 2201 movs r2, #1 16346: 428b cmp r3, r1 16348: d900 bls.n 1634c 1634a: e13c b.n 165c6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1634c: 2113 movs r1, #19 1634e: 0020 movs r0, r4 16350: 4ba9 ldr r3, [pc, #676] ; (165f8 ) 16352: 4798 blx r3 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16354: 4ba2 ldr r3, [pc, #648] ; (165e0 ) 16356: 681c ldr r4, [r3, #0] 16358: 345c adds r4, #92 ; 0x5c 1635a: 2000 movs r0, #0 1635c: 4ba5 ldr r3, [pc, #660] ; (165f4 ) 1635e: 4798 blx r3 16360: 0083 lsls r3, r0, #2 16362: 181b adds r3, r3, r0 16364: 009b lsls r3, r3, #2 16366: 3350 adds r3, #80 ; 0x50 16368: 2140 movs r1, #64 ; 0x40 1636a: 31ff adds r1, #255 ; 0xff 1636c: 2201 movs r2, #1 1636e: 428b cmp r3, r1 16370: d900 bls.n 16374 16372: e149 b.n 16608 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16374: 2110 movs r1, #16 16376: 0020 movs r0, r4 16378: 4b9f ldr r3, [pc, #636] ; (165f8 ) 1637a: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 1637c: 4b98 ldr r3, [pc, #608] ; (165e0 ) 1637e: 681c ldr r4, [r3, #0] 16380: 345c adds r4, #92 ; 0x5c 16382: 2000 movs r0, #0 16384: 4b9b ldr r3, [pc, #620] ; (165f4 ) 16386: 4798 blx r3 16388: 0083 lsls r3, r0, #2 1638a: 181b adds r3, r3, r0 1638c: 009b lsls r3, r3, #2 1638e: 3350 adds r3, #80 ; 0x50 16390: 2140 movs r1, #64 ; 0x40 16392: 31ff adds r1, #255 ; 0xff 16394: 2201 movs r2, #1 16396: 428b cmp r3, r1 16398: d900 bls.n 1639c 1639a: e142 b.n 16622 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1639c: 2114 movs r1, #20 1639e: 0020 movs r0, r4 163a0: 4b95 ldr r3, [pc, #596] ; (165f8 ) 163a2: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 163a4: 4b8e ldr r3, [pc, #568] ; (165e0 ) 163a6: 681c ldr r4, [r3, #0] 163a8: 345c adds r4, #92 ; 0x5c 163aa: 2000 movs r0, #0 163ac: 4b91 ldr r3, [pc, #580] ; (165f4 ) 163ae: 4798 blx r3 163b0: 0103 lsls r3, r0, #4 163b2: 1a18 subs r0, r3, r0 163b4: 3050 adds r0, #80 ; 0x50 163b6: 2340 movs r3, #64 ; 0x40 163b8: 33ff adds r3, #255 ; 0xff 163ba: 2201 movs r2, #1 163bc: 4298 cmp r0, r3 163be: d900 bls.n 163c2 163c0: e13c b.n 1663c _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 163c2: 21c0 movs r1, #192 ; 0xc0 163c4: 0020 movs r0, r4 163c6: 4c8c ldr r4, [pc, #560] ; (165f8 ) 163c8: 47a0 blx r4 lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 163ca: 4d85 ldr r5, [pc, #532] ; (165e0 ) 163cc: 6828 ldr r0, [r5, #0] 163ce: 305c adds r0, #92 ; 0x5c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 163d0: 4a8a ldr r2, [pc, #552] ; (165fc ) 163d2: 2101 movs r1, #1 163d4: 47a0 blx r4 style_init_reset(&styles->gauge_strong); 163d6: 6828 ldr r0, [r5, #0] 163d8: 3060 adds r0, #96 ; 0x60 163da: 4b82 ldr r3, [pc, #520] ; (165e4 ) 163dc: 4798 blx r3 lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 163de: 6828 ldr r0, [r5, #0] 163e0: 3060 adds r0, #96 ; 0x60 163e2: 2711 movs r7, #17 163e4: 2488 movs r4, #136 ; 0x88 163e6: 00e4 lsls r4, r4, #3 163e8: 0022 movs r2, r4 163ea: 433a orrs r2, r7 163ec: 0552 lsls r2, r2, #21 163ee: 0d52 lsrs r2, r2, #21 163f0: 4e7d ldr r6, [pc, #500] ; (165e8 ) 163f2: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 163f4: 2199 movs r1, #153 ; 0x99 163f6: 4b7d ldr r3, [pc, #500] ; (165ec ) 163f8: 4698 mov r8, r3 163fa: 4798 blx r3 lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 163fc: 6828 ldr r0, [r5, #0] 163fe: 3060 adds r0, #96 ; 0x60 16400: 0022 movs r2, r4 16402: 433a orrs r2, r7 16404: 0552 lsls r2, r2, #21 16406: 0d52 lsrs r2, r2, #21 16408: 4332 orrs r2, r6 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar) 1640a: 21c9 movs r1, #201 ; 0xc9 1640c: 47c0 blx r8 lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); 1640e: 6828 ldr r0, [r5, #0] 16410: 3060 adds r0, #96 ; 0x60 16412: 4b77 ldr r3, [pc, #476] ; (165f0 ) 16414: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar) 16416: 21ca movs r1, #202 ; 0xca 16418: 47c0 blx r8 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 1641a: 682c ldr r4, [r5, #0] 1641c: 3460 adds r4, #96 ; 0x60 1641e: 2000 movs r0, #0 16420: 4b74 ldr r3, [pc, #464] ; (165f4 ) 16422: 4798 blx r3 16424: 300a adds r0, #10 16426: 00c0 lsls r0, r0, #3 16428: 2340 movs r3, #64 ; 0x40 1642a: 33ff adds r3, #255 ; 0xff 1642c: 2201 movs r2, #1 1642e: 4298 cmp r0, r3 16430: d900 bls.n 16434 16432: e10e b.n 16652 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16434: 2190 movs r1, #144 ; 0x90 16436: 0020 movs r0, r4 16438: 4b6f ldr r3, [pc, #444] ; (165f8 ) 1643a: 4798 blx r3 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 1643c: 4b68 ldr r3, [pc, #416] ; (165e0 ) 1643e: 681c ldr r4, [r3, #0] 16440: 3460 adds r4, #96 ; 0x60 16442: 2000 movs r0, #0 16444: 4b6b ldr r3, [pc, #428] ; (165f4 ) 16446: 4798 blx r3 16448: 300a adds r0, #10 1644a: 00c0 lsls r0, r0, #3 1644c: 2340 movs r3, #64 ; 0x40 1644e: 33ff adds r3, #255 ; 0xff 16450: 2201 movs r2, #1 16452: 4298 cmp r0, r3 16454: d900 bls.n 16458 16456: e106 b.n 16666 _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t, _int, scalar) 16458: 21c3 movs r1, #195 ; 0xc3 1645a: 0020 movs r0, r4 1645c: 4b66 ldr r3, [pc, #408] ; (165f8 ) 1645e: 4798 blx r3 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 16460: 4b5f ldr r3, [pc, #380] ; (165e0 ) 16462: 681c ldr r4, [r3, #0] 16464: 3460 adds r4, #96 ; 0x60 16466: 2000 movs r0, #0 16468: 4b62 ldr r3, [pc, #392] ; (165f4 ) 1646a: 4798 blx r3 1646c: 0083 lsls r3, r0, #2 1646e: 1818 adds r0, r3, r0 16470: 0083 lsls r3, r0, #2 16472: 18c0 adds r0, r0, r3 16474: 3050 adds r0, #80 ; 0x50 16476: 2340 movs r3, #64 ; 0x40 16478: 33ff adds r3, #255 ; 0xff 1647a: 2201 movs r2, #1 1647c: 4298 cmp r0, r3 1647e: d900 bls.n 16482 16480: e0fb b.n 1667a _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 16482: 21c0 movs r1, #192 ; 0xc0 16484: 0020 movs r0, r4 16486: 4b5c ldr r3, [pc, #368] ; (165f8 ) 16488: 4798 blx r3 style_init_reset(&styles->gauge_needle); 1648a: 4c55 ldr r4, [pc, #340] ; (165e0 ) 1648c: 6820 ldr r0, [r4, #0] 1648e: 3064 adds r0, #100 ; 0x64 16490: 4b54 ldr r3, [pc, #336] ; (165e4 ) 16492: 4798 blx r3 lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 16494: 6820 ldr r0, [r4, #0] 16496: 3064 adds r0, #100 ; 0x64 16498: 4b55 ldr r3, [pc, #340] ; (165f0 ) 1649a: 699b ldr r3, [r3, #24] 1649c: 079b lsls r3, r3, #30 1649e: d500 bpl.n 164a2 164a0: e0f8 b.n 16694 164a2: 231f movs r3, #31 164a4: 213f movs r1, #63 ; 0x3f 164a6: 221f movs r2, #31 164a8: 0149 lsls r1, r1, #5 164aa: 02db lsls r3, r3, #11 164ac: 430a orrs r2, r1 164ae: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 164b0: 2199 movs r1, #153 ; 0x99 164b2: 4b4e ldr r3, [pc, #312] ; (165ec ) 164b4: 4798 blx r3 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 164b6: 4b4a ldr r3, [pc, #296] ; (165e0 ) 164b8: 681c ldr r4, [r3, #0] 164ba: 3464 adds r4, #100 ; 0x64 164bc: 2000 movs r0, #0 164be: 4b4d ldr r3, [pc, #308] ; (165f4 ) 164c0: 4798 blx r3 164c2: 300a adds r0, #10 164c4: 00c0 lsls r0, r0, #3 164c6: 2340 movs r3, #64 ; 0x40 164c8: 33ff adds r3, #255 ; 0xff 164ca: 2201 movs r2, #1 164cc: 4298 cmp r0, r3 164ce: d900 bls.n 164d2 164d0: e0e4 b.n 1669c _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 164d2: 2190 movs r1, #144 ; 0x90 164d4: 0020 movs r0, r4 164d6: 4b48 ldr r3, [pc, #288] ; (165f8 ) 164d8: 4798 blx r3 lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); 164da: 4c41 ldr r4, [pc, #260] ; (165e0 ) 164dc: 6820 ldr r0, [r4, #0] 164de: 3064 adds r0, #100 ; 0x64 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 164e0: 22ff movs r2, #255 ; 0xff 164e2: 212c movs r1, #44 ; 0x2c 164e4: 4b46 ldr r3, [pc, #280] ; (16600 ) 164e6: 4798 blx r3 lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); 164e8: 6820 ldr r0, [r4, #0] 164ea: 3064 adds r0, #100 ; 0x64 164ec: 4b40 ldr r3, [pc, #256] ; (165f0 ) 164ee: 699b ldr r3, [r3, #24] 164f0: 079b lsls r3, r3, #30 164f2: d500 bpl.n 164f6 164f4: e0dc b.n 166b0 164f6: 231f movs r3, #31 164f8: 213f movs r1, #63 ; 0x3f 164fa: 221f movs r2, #31 164fc: 0149 lsls r1, r1, #5 164fe: 02db lsls r3, r3, #11 16500: 430a orrs r2, r1 16502: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16504: 2129 movs r1, #41 ; 0x29 16506: 4b39 ldr r3, [pc, #228] ; (165ec ) 16508: 4798 blx r3 lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 1650a: 4c35 ldr r4, [pc, #212] ; (165e0 ) 1650c: 6820 ldr r0, [r4, #0] 1650e: 3064 adds r0, #100 ; 0x64 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16510: 4a3a ldr r2, [pc, #232] ; (165fc ) 16512: 2101 movs r1, #1 16514: 4b38 ldr r3, [pc, #224] ; (165f8 ) 16516: 4798 blx r3 lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 16518: 6824 ldr r4, [r4, #0] 1651a: 3464 adds r4, #100 ; 0x64 1651c: 2000 movs r0, #0 1651e: 4b35 ldr r3, [pc, #212] ; (165f4 ) 16520: 4798 blx r3 16522: 0103 lsls r3, r0, #4 16524: 1a1b subs r3, r3, r0 16526: 005b lsls r3, r3, #1 16528: 3350 adds r3, #80 ; 0x50 1652a: 2140 movs r1, #64 ; 0x40 1652c: 31ff adds r1, #255 ; 0xff 1652e: 2201 movs r2, #1 16530: 428b cmp r3, r1 16532: d900 bls.n 16536 16534: e0c0 b.n 166b8 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 16536: 2103 movs r1, #3 16538: 0020 movs r0, r4 1653a: 4b2f ldr r3, [pc, #188] ; (165f8 ) 1653c: 4798 blx r3 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 1653e: 4b28 ldr r3, [pc, #160] ; (165e0 ) 16540: 681c ldr r4, [r3, #0] 16542: 3464 adds r4, #100 ; 0x64 16544: 2000 movs r0, #0 16546: 4b2b ldr r3, [pc, #172] ; (165f4 ) 16548: 4798 blx r3 1654a: 0083 lsls r3, r0, #2 1654c: 181b adds r3, r3, r0 1654e: 005b lsls r3, r3, #1 16550: 3350 adds r3, #80 ; 0x50 16552: 2140 movs r1, #64 ; 0x40 16554: 31ff adds r1, #255 ; 0xff 16556: 2201 movs r2, #1 16558: 428b cmp r3, r1 1655a: d900 bls.n 1655e 1655c: e0b8 b.n 166d0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1655e: 2114 movs r1, #20 16560: 0020 movs r0, r4 16562: 4b25 ldr r3, [pc, #148] ; (165f8 ) 16564: 4798 blx r3 } 16566: bc04 pop {r2} 16568: 4690 mov r8, r2 1656a: bdf0 pop {r4, r5, r6, r7, pc} lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(5)); 1656c: 2000 movs r0, #0 1656e: 4b21 ldr r3, [pc, #132] ; (165f4 ) 16570: 4798 blx r3 16572: 0003 movs r3, r0 16574: 0080 lsls r0, r0, #2 16576: 18c0 adds r0, r0, r3 16578: 3050 adds r0, #80 ; 0x50 1657a: 21a0 movs r1, #160 ; 0xa0 1657c: 4b21 ldr r3, [pc, #132] ; (16604 ) 1657e: 4798 blx r3 16580: b202 sxth r2, r0 16582: e697 b.n 162b4 lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(4)); 16584: 2000 movs r0, #0 16586: 4b1b ldr r3, [pc, #108] ; (165f4 ) 16588: 4798 blx r3 1658a: 3014 adds r0, #20 1658c: 0080 lsls r0, r0, #2 1658e: 21a0 movs r1, #160 ; 0xa0 16590: 4b1c ldr r3, [pc, #112] ; (16604 ) 16592: 4798 blx r3 16594: b202 sxth r2, r0 16596: e69f b.n 162d8 lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(8)); 16598: 2000 movs r0, #0 1659a: 4b16 ldr r3, [pc, #88] ; (165f4 ) 1659c: 4798 blx r3 1659e: 300a adds r0, #10 165a0: 00c0 lsls r0, r0, #3 165a2: 21a0 movs r1, #160 ; 0xa0 165a4: 4b17 ldr r3, [pc, #92] ; (16604 ) 165a6: 4798 blx r3 165a8: b202 sxth r2, r0 165aa: e6a7 b.n 162fc lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 165ac: 2000 movs r0, #0 165ae: 4b11 ldr r3, [pc, #68] ; (165f4 ) 165b0: 4798 blx r3 165b2: 0003 movs r3, r0 165b4: 0080 lsls r0, r0, #2 165b6: 18c0 adds r0, r0, r3 165b8: 0080 lsls r0, r0, #2 165ba: 3050 adds r0, #80 ; 0x50 165bc: 21a0 movs r1, #160 ; 0xa0 165be: 4b11 ldr r3, [pc, #68] ; (16604 ) 165c0: 4798 blx r3 165c2: b202 sxth r2, r0 165c4: e6ae b.n 16324 lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 165c6: 2000 movs r0, #0 165c8: 4b0a ldr r3, [pc, #40] ; (165f4 ) 165ca: 4798 blx r3 165cc: 0003 movs r3, r0 165ce: 0080 lsls r0, r0, #2 165d0: 18c0 adds r0, r0, r3 165d2: 0080 lsls r0, r0, #2 165d4: 3050 adds r0, #80 ; 0x50 165d6: 21a0 movs r1, #160 ; 0xa0 165d8: 4b0a ldr r3, [pc, #40] ; (16604 ) 165da: 4798 blx r3 165dc: b202 sxth r2, r0 165de: e6b5 b.n 1634c 165e0: 20004c4c .word 0x20004c4c 165e4: 00014911 .word 0x00014911 165e8: ffff8800 .word 0xffff8800 165ec: 00006135 .word 0x00006135 165f0: 20004c50 .word 0x20004c50 165f4: 00010dd1 .word 0x00010dd1 165f8: 00005fad .word 0x00005fad 165fc: 00007fff .word 0x00007fff 16600: 000062bd .word 0x000062bd 16604: 0001c0a5 .word 0x0001c0a5 lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16608: 2000 movs r0, #0 1660a: 4b38 ldr r3, [pc, #224] ; (166ec ) 1660c: 4798 blx r3 1660e: 0003 movs r3, r0 16610: 0080 lsls r0, r0, #2 16612: 18c0 adds r0, r0, r3 16614: 0080 lsls r0, r0, #2 16616: 3050 adds r0, #80 ; 0x50 16618: 21a0 movs r1, #160 ; 0xa0 1661a: 4b35 ldr r3, [pc, #212] ; (166f0 ) 1661c: 4798 blx r3 1661e: b202 sxth r2, r0 16620: e6a8 b.n 16374 lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); 16622: 2000 movs r0, #0 16624: 4b31 ldr r3, [pc, #196] ; (166ec ) 16626: 4798 blx r3 16628: 0003 movs r3, r0 1662a: 0080 lsls r0, r0, #2 1662c: 18c0 adds r0, r0, r3 1662e: 0080 lsls r0, r0, #2 16630: 3050 adds r0, #80 ; 0x50 16632: 21a0 movs r1, #160 ; 0xa0 16634: 4b2e ldr r3, [pc, #184] ; (166f0 ) 16636: 4798 blx r3 16638: b202 sxth r2, r0 1663a: e6af b.n 1639c lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); 1663c: 2000 movs r0, #0 1663e: 4b2b ldr r3, [pc, #172] ; (166ec ) 16640: 4798 blx r3 16642: 0103 lsls r3, r0, #4 16644: 1a18 subs r0, r3, r0 16646: 3050 adds r0, #80 ; 0x50 16648: 21a0 movs r1, #160 ; 0xa0 1664a: 4b29 ldr r3, [pc, #164] ; (166f0 ) 1664c: 4798 blx r3 1664e: b202 sxth r2, r0 16650: e6b7 b.n 163c2 lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16652: 2000 movs r0, #0 16654: 4b25 ldr r3, [pc, #148] ; (166ec ) 16656: 4798 blx r3 16658: 300a adds r0, #10 1665a: 00c0 lsls r0, r0, #3 1665c: 21a0 movs r1, #160 ; 0xa0 1665e: 4b24 ldr r3, [pc, #144] ; (166f0 ) 16660: 4798 blx r3 16662: b202 sxth r2, r0 16664: e6e6 b.n 16434 lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); 16666: 2000 movs r0, #0 16668: 4b20 ldr r3, [pc, #128] ; (166ec ) 1666a: 4798 blx r3 1666c: 300a adds r0, #10 1666e: 00c0 lsls r0, r0, #3 16670: 21a0 movs r1, #160 ; 0xa0 16672: 4b1f ldr r3, [pc, #124] ; (166f0 ) 16674: 4798 blx r3 16676: b202 sxth r2, r0 16678: e6ee b.n 16458 lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(25)); 1667a: 2000 movs r0, #0 1667c: 4b1b ldr r3, [pc, #108] ; (166ec ) 1667e: 4798 blx r3 16680: 0083 lsls r3, r0, #2 16682: 1818 adds r0, r3, r0 16684: 0083 lsls r3, r0, #2 16686: 18c0 adds r0, r0, r3 16688: 3050 adds r0, #80 ; 0x50 1668a: 21a0 movs r1, #160 ; 0xa0 1668c: 4b18 ldr r3, [pc, #96] ; (166f0 ) 1668e: 4798 blx r3 16690: b202 sxth r2, r0 16692: e6f6 b.n 16482 16694: 2308 movs r3, #8 16696: 2112 movs r1, #18 16698: 220b movs r2, #11 1669a: e705 b.n 164a8 lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); 1669c: 2000 movs r0, #0 1669e: 4b13 ldr r3, [pc, #76] ; (166ec ) 166a0: 4798 blx r3 166a2: 300a adds r0, #10 166a4: 00c0 lsls r0, r0, #3 166a6: 21a0 movs r1, #160 ; 0xa0 166a8: 4b11 ldr r3, [pc, #68] ; (166f0 ) 166aa: 4798 blx r3 166ac: b202 sxth r2, r0 166ae: e710 b.n 164d2 166b0: 2308 movs r3, #8 166b2: 2112 movs r1, #18 166b4: 220b movs r2, #11 166b6: e721 b.n 164fc lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); 166b8: 2000 movs r0, #0 166ba: 4b0c ldr r3, [pc, #48] ; (166ec ) 166bc: 4798 blx r3 166be: 0103 lsls r3, r0, #4 166c0: 1a18 subs r0, r3, r0 166c2: 0040 lsls r0, r0, #1 166c4: 3050 adds r0, #80 ; 0x50 166c6: 21a0 movs r1, #160 ; 0xa0 166c8: 4b09 ldr r3, [pc, #36] ; (166f0 ) 166ca: 4798 blx r3 166cc: b202 sxth r2, r0 166ce: e732 b.n 16536 lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); 166d0: 2000 movs r0, #0 166d2: 4b06 ldr r3, [pc, #24] ; (166ec ) 166d4: 4798 blx r3 166d6: 0003 movs r3, r0 166d8: 0080 lsls r0, r0, #2 166da: 18c0 adds r0, r0, r3 166dc: 0040 lsls r0, r0, #1 166de: 3050 adds r0, #80 ; 0x50 166e0: 21a0 movs r1, #160 ; 0xa0 166e2: 4b03 ldr r3, [pc, #12] ; (166f0 ) 166e4: 4798 blx r3 166e6: b202 sxth r2, r0 166e8: e739 b.n 1655e 166ea: 46c0 nop ; (mov r8, r8) 166ec: 00010dd1 .word 0x00010dd1 166f0: 0001c0a5 .word 0x0001c0a5 000166f4 : { 166f4: b570 push {r4, r5, r6, lr} style_init_reset(&styles->arc_indic); 166f6: 4c39 ldr r4, [pc, #228] ; (167dc ) 166f8: 6820 ldr r0, [r4, #0] 166fa: 301c adds r0, #28 166fc: 4b38 ldr r3, [pc, #224] ; (167e0 ) 166fe: 4798 blx r3 lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); 16700: 6820 ldr r0, [r4, #0] 16702: 301c adds r0, #28 16704: 4b37 ldr r3, [pc, #220] ; (167e4 ) 16706: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16708: 2199 movs r1, #153 ; 0x99 1670a: 4b37 ldr r3, [pc, #220] ; (167e8 ) 1670c: 4798 blx r3 lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 1670e: 6824 ldr r4, [r4, #0] 16710: 341c adds r4, #28 16712: 2000 movs r0, #0 16714: 4b35 ldr r3, [pc, #212] ; (167ec ) 16716: 4798 blx r3 16718: 0083 lsls r3, r0, #2 1671a: 1818 adds r0, r3, r0 1671c: 0083 lsls r3, r0, #2 1671e: 18c0 adds r0, r0, r3 16720: 3050 adds r0, #80 ; 0x50 16722: 2340 movs r3, #64 ; 0x40 16724: 33ff adds r3, #255 ; 0xff 16726: 2201 movs r2, #1 16728: 4298 cmp r0, r3 1672a: d838 bhi.n 1679e _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 1672c: 2190 movs r1, #144 ; 0x90 1672e: 0020 movs r0, r4 16730: 4d2f ldr r5, [pc, #188] ; (167f0 ) 16732: 47a8 blx r5 lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); 16734: 4c29 ldr r4, [pc, #164] ; (167dc ) 16736: 6820 ldr r0, [r4, #0] 16738: 301c adds r0, #28 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 1673a: 2201 movs r2, #1 1673c: 2194 movs r1, #148 ; 0x94 1673e: 47a8 blx r5 style_init_reset(&styles->arc_bg); 16740: 6820 ldr r0, [r4, #0] 16742: 3020 adds r0, #32 16744: 4b26 ldr r3, [pc, #152] ; (167e0 ) 16746: 4798 blx r3 lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); 16748: 6820 ldr r0, [r4, #0] 1674a: 3020 adds r0, #32 1674c: 4b25 ldr r3, [pc, #148] ; (167e4 ) 1674e: 699b ldr r3, [r3, #24] 16750: 079b lsls r3, r3, #30 16752: d431 bmi.n 167b8 16754: 2308 movs r3, #8 16756: 2112 movs r1, #18 16758: 2209 movs r2, #9 1675a: 0149 lsls r1, r1, #5 1675c: 02db lsls r3, r3, #11 1675e: 430a orrs r2, r1 16760: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16762: 2199 movs r1, #153 ; 0x99 16764: 4b20 ldr r3, [pc, #128] ; (167e8 ) 16766: 4798 blx r3 lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 16768: 4b1c ldr r3, [pc, #112] ; (167dc ) 1676a: 681c ldr r4, [r3, #0] 1676c: 3420 adds r4, #32 1676e: 2000 movs r0, #0 16770: 4b1e ldr r3, [pc, #120] ; (167ec ) 16772: 4798 blx r3 16774: 0083 lsls r3, r0, #2 16776: 1818 adds r0, r3, r0 16778: 0083 lsls r3, r0, #2 1677a: 18c0 adds r0, r0, r3 1677c: 3050 adds r0, #80 ; 0x50 1677e: 2340 movs r3, #64 ; 0x40 16780: 33ff adds r3, #255 ; 0xff 16782: 2201 movs r2, #1 16784: 4298 cmp r0, r3 16786: d81b bhi.n 167c0 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16788: 2190 movs r1, #144 ; 0x90 1678a: 0020 movs r0, r4 1678c: 4c18 ldr r4, [pc, #96] ; (167f0 ) 1678e: 47a0 blx r4 lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); 16790: 4b12 ldr r3, [pc, #72] ; (167dc ) 16792: 6818 ldr r0, [r3, #0] 16794: 3020 adds r0, #32 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) 16796: 2201 movs r2, #1 16798: 2194 movs r1, #148 ; 0x94 1679a: 47a0 blx r4 } 1679c: bd70 pop {r4, r5, r6, pc} lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); 1679e: 2000 movs r0, #0 167a0: 4b12 ldr r3, [pc, #72] ; (167ec ) 167a2: 4798 blx r3 167a4: 0083 lsls r3, r0, #2 167a6: 1818 adds r0, r3, r0 167a8: 0083 lsls r3, r0, #2 167aa: 18c0 adds r0, r0, r3 167ac: 3050 adds r0, #80 ; 0x50 167ae: 21a0 movs r1, #160 ; 0xa0 167b0: 4b10 ldr r3, [pc, #64] ; (167f4 ) 167b2: 4798 blx r3 167b4: b202 sxth r2, r0 167b6: e7b9 b.n 1672c 167b8: 231a movs r3, #26 167ba: 2135 movs r1, #53 ; 0x35 167bc: 221b movs r2, #27 167be: e7cc b.n 1675a lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); 167c0: 2000 movs r0, #0 167c2: 4b0a ldr r3, [pc, #40] ; (167ec ) 167c4: 4798 blx r3 167c6: 0083 lsls r3, r0, #2 167c8: 1818 adds r0, r3, r0 167ca: 0083 lsls r3, r0, #2 167cc: 18c0 adds r0, r0, r3 167ce: 3050 adds r0, #80 ; 0x50 167d0: 21a0 movs r1, #160 ; 0xa0 167d2: 4b08 ldr r3, [pc, #32] ; (167f4 ) 167d4: 4798 blx r3 167d6: b202 sxth r2, r0 167d8: e7d6 b.n 16788 167da: 46c0 nop ; (mov r8, r8) 167dc: 20004c4c .word 0x20004c4c 167e0: 00014911 .word 0x00014911 167e4: 20004c50 .word 0x20004c50 167e8: 00006135 .word 0x00006135 167ec: 00010dd1 .word 0x00010dd1 167f0: 00005fad .word 0x00005fad 167f4: 0001c0a5 .word 0x0001c0a5 000167f8 : { 167f8: b5f0 push {r4, r5, r6, r7, lr} 167fa: 46c6 mov lr, r8 167fc: b500 push {lr} style_init_reset(&styles->led); 167fe: 4c39 ldr r4, [pc, #228] ; (168e4 ) 16800: 6820 ldr r0, [r4, #0] 16802: 306c adds r0, #108 ; 0x6c 16804: 4b38 ldr r3, [pc, #224] ; (168e8 ) 16806: 4798 blx r3 lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); 16808: 6820 ldr r0, [r4, #0] 1680a: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 1680c: 22ff movs r2, #255 ; 0xff 1680e: 212c movs r1, #44 ; 0x2c 16810: 4d36 ldr r5, [pc, #216] ; (168ec ) 16812: 47a8 blx r5 lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 16814: 6820 ldr r0, [r4, #0] 16816: 306c adds r0, #108 ; 0x6c 16818: 4b35 ldr r3, [pc, #212] ; (168f0 ) 1681a: 4698 mov r8, r3 1681c: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1681e: 2129 movs r1, #41 ; 0x29 16820: 4f34 ldr r7, [pc, #208] ; (168f4 ) 16822: 47b8 blx r7 lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); 16824: 6820 ldr r0, [r4, #0] 16826: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16828: 2202 movs r2, #2 1682a: 2130 movs r1, #48 ; 0x30 1682c: 4e32 ldr r6, [pc, #200] ; (168f8 ) 1682e: 47b0 blx r6 lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); 16830: 6820 ldr r0, [r4, #0] 16832: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_OPA, border_opa, lv_opa_t, _opa, scalar) 16834: 227f movs r2, #127 ; 0x7f 16836: 213c movs r1, #60 ; 0x3c 16838: 47a8 blx r5 lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); 1683a: 6825 ldr r5, [r4, #0] 1683c: 356c adds r5, #108 ; 0x6c 1683e: 4643 mov r3, r8 16840: 8898 ldrh r0, [r3, #4] 16842: 214c movs r1, #76 ; 0x4c 16844: 4b2d ldr r3, [pc, #180] ; (168fc ) 16846: 4798 blx r3 16848: 1c02 adds r2, r0, #0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1684a: 2139 movs r1, #57 ; 0x39 1684c: 0028 movs r0, r5 1684e: 47b8 blx r7 lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16850: 6820 ldr r0, [r4, #0] 16852: 306c adds r0, #108 ; 0x6c _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16854: 4a2a ldr r2, [pc, #168] ; (16900 ) 16856: 2101 movs r1, #1 16858: 47b0 blx r6 lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 1685a: 6824 ldr r4, [r4, #0] 1685c: 346c adds r4, #108 ; 0x6c 1685e: 2000 movs r0, #0 16860: 4b28 ldr r3, [pc, #160] ; (16904 ) 16862: 4798 blx r3 16864: 0103 lsls r3, r0, #4 16866: 1a18 subs r0, r3, r0 16868: 3050 adds r0, #80 ; 0x50 1686a: 2340 movs r3, #64 ; 0x40 1686c: 33ff adds r3, #255 ; 0xff 1686e: 2201 movs r2, #1 16870: 4298 cmp r0, r3 16872: d81f bhi.n 168b4 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 16874: 2150 movs r1, #80 ; 0x50 16876: 0020 movs r0, r4 16878: 4b1f ldr r3, [pc, #124] ; (168f8 ) 1687a: 4798 blx r3 lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); 1687c: 4c19 ldr r4, [pc, #100] ; (168e4 ) 1687e: 6820 ldr r0, [r4, #0] 16880: 306c adds r0, #108 ; 0x6c 16882: 4b1b ldr r3, [pc, #108] ; (168f0 ) 16884: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 16886: 2159 movs r1, #89 ; 0x59 16888: 4b1a ldr r3, [pc, #104] ; (168f4 ) 1688a: 4798 blx r3 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 1688c: 6824 ldr r4, [r4, #0] 1688e: 346c adds r4, #108 ; 0x6c 16890: 2000 movs r0, #0 16892: 4b1c ldr r3, [pc, #112] ; (16904 ) 16894: 4798 blx r3 16896: 0083 lsls r3, r0, #2 16898: 1818 adds r0, r3, r0 1689a: 3050 adds r0, #80 ; 0x50 1689c: 2340 movs r3, #64 ; 0x40 1689e: 33ff adds r3, #255 ; 0xff 168a0: 2201 movs r2, #1 168a2: 4298 cmp r0, r3 168a4: d811 bhi.n 168ca _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_SPREAD, shadow_spread, lv_style_int_t, _int, scalar) 168a6: 2153 movs r1, #83 ; 0x53 168a8: 0020 movs r0, r4 168aa: 4b13 ldr r3, [pc, #76] ; (168f8 ) 168ac: 4798 blx r3 } 168ae: bc04 pop {r2} 168b0: 4690 mov r8, r2 168b2: bdf0 pop {r4, r5, r6, r7, pc} lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); 168b4: 2000 movs r0, #0 168b6: 4b13 ldr r3, [pc, #76] ; (16904 ) 168b8: 4798 blx r3 168ba: 0103 lsls r3, r0, #4 168bc: 1a18 subs r0, r3, r0 168be: 3050 adds r0, #80 ; 0x50 168c0: 21a0 movs r1, #160 ; 0xa0 168c2: 4b11 ldr r3, [pc, #68] ; (16908 ) 168c4: 4798 blx r3 168c6: b202 sxth r2, r0 168c8: e7d4 b.n 16874 lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); 168ca: 2000 movs r0, #0 168cc: 4b0d ldr r3, [pc, #52] ; (16904 ) 168ce: 4798 blx r3 168d0: 0003 movs r3, r0 168d2: 0080 lsls r0, r0, #2 168d4: 18c0 adds r0, r0, r3 168d6: 3050 adds r0, #80 ; 0x50 168d8: 21a0 movs r1, #160 ; 0xa0 168da: 4b0b ldr r3, [pc, #44] ; (16908 ) 168dc: 4798 blx r3 168de: b202 sxth r2, r0 168e0: e7e1 b.n 168a6 168e2: 46c0 nop ; (mov r8, r8) 168e4: 20004c4c .word 0x20004c4c 168e8: 00014911 .word 0x00014911 168ec: 000062bd .word 0x000062bd 168f0: 20004c50 .word 0x20004c50 168f4: 00006135 .word 0x00006135 168f8: 00005fad .word 0x00005fad 168fc: 00011a85 .word 0x00011a85 16900: 00007fff .word 0x00007fff 16904: 00010dd1 .word 0x00010dd1 16908: 0001c0a5 .word 0x0001c0a5 0001690c : { 1690c: b5f0 push {r4, r5, r6, r7, lr} 1690e: 46c6 mov lr, r8 16910: b500 push {lr} 16912: 4680 mov r8, r0 16914: 1c0f adds r7, r1, #0 16916: 0015 movs r5, r2 16918: 001e movs r6, r3 if(!inited) { 1691a: 4bfe ldr r3, [pc, #1016] ; (16d14 ) 1691c: 781b ldrb r3, [r3, #0] 1691e: 2b00 cmp r3, #0 16920: d101 bne.n 16926 16922: f001 fb9e bl 18062 theme.color_primary = color_primary; 16926: 4cfc ldr r4, [pc, #1008] ; (16d18 ) 16928: 4643 mov r3, r8 1692a: 80a3 strh r3, [r4, #4] theme.color_secondary = color_secondary; 1692c: 80e7 strh r7, [r4, #6] theme.font_small = font_small; 1692e: 60a6 str r6, [r4, #8] theme.font_normal = font_normal; 16930: 9b06 ldr r3, [sp, #24] 16932: 60e3 str r3, [r4, #12] theme.font_subtitle = font_subtitle; 16934: 9b07 ldr r3, [sp, #28] 16936: 6123 str r3, [r4, #16] theme.font_title = font_title; 16938: 9b08 ldr r3, [sp, #32] 1693a: 6163 str r3, [r4, #20] theme.flags = flags; 1693c: 61a5 str r5, [r4, #24] basic_init(); 1693e: 4bf7 ldr r3, [pc, #988] ; (16d1c ) 16940: 4798 blx r3 bar_init(); 16942: 4bf7 ldr r3, [pc, #988] ; (16d20 ) 16944: 4798 blx r3 led_init(); 16946: 4bf7 ldr r3, [pc, #988] ; (16d24 ) 16948: 4798 blx r3 slider_init(); 1694a: 4bf7 ldr r3, [pc, #988] ; (16d28 ) 1694c: 4798 blx r3 switch_init(); 1694e: 4bf7 ldr r3, [pc, #988] ; (16d2c ) 16950: 4798 blx r3 linemeter_init(); 16952: 4bf7 ldr r3, [pc, #988] ; (16d30 ) 16954: 4798 blx r3 gauge_init(); 16956: 4bf7 ldr r3, [pc, #988] ; (16d34 ) 16958: 4798 blx r3 arc_init(); 1695a: 4bf7 ldr r3, [pc, #988] ; (16d38 ) 1695c: 4798 blx r3 style_init_reset(&styles->chart_bg); 1695e: 4df7 ldr r5, [pc, #988] ; (16d3c ) 16960: 6828 ldr r0, [r5, #0] 16962: 3040 adds r0, #64 ; 0x40 16964: 4bf6 ldr r3, [pc, #984] ; (16d40 ) 16966: 4798 blx r3 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 16968: 6828 ldr r0, [r5, #0] 1696a: 3040 adds r0, #64 ; 0x40 1696c: 69a3 ldr r3, [r4, #24] 1696e: 079b lsls r3, r3, #30 16970: d501 bpl.n 16976 16972: f001 fb7f bl 18074 16976: 2314 movs r3, #20 16978: 212b movs r1, #43 ; 0x2b 1697a: 2217 movs r2, #23 1697c: 0149 lsls r1, r1, #5 1697e: 02db lsls r3, r3, #11 16980: 430a orrs r2, r1 16982: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16984: 49ef ldr r1, [pc, #956] ; (16d44 ) 16986: 4bf0 ldr r3, [pc, #960] ; (16d48 ) 16988: 4798 blx r3 style_init_reset(&styles->chart_series_bg); 1698a: 4cec ldr r4, [pc, #944] ; (16d3c ) 1698c: 6820 ldr r0, [r4, #0] 1698e: 3044 adds r0, #68 ; 0x44 16990: 4beb ldr r3, [pc, #940] ; (16d40 ) 16992: 4798 blx r3 lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 16994: 6824 ldr r4, [r4, #0] 16996: 3444 adds r4, #68 ; 0x44 16998: 2000 movs r0, #0 1699a: 4bec ldr r3, [pc, #944] ; (16d4c ) 1699c: 4798 blx r3 1699e: 3050 adds r0, #80 ; 0x50 169a0: 2340 movs r3, #64 ; 0x40 169a2: 33ff adds r3, #255 ; 0xff 169a4: 2201 movs r2, #1 169a6: 4298 cmp r0, r3 169a8: d901 bls.n 169ae 169aa: f001 fb68 bl 1807e _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 169ae: 2190 movs r1, #144 ; 0x90 169b0: 0020 movs r0, r4 169b2: 4be7 ldr r3, [pc, #924] ; (16d50 ) 169b4: 4798 blx r3 lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 169b6: 4be1 ldr r3, [pc, #900] ; (16d3c ) 169b8: 681c ldr r4, [r3, #0] 169ba: 3444 adds r4, #68 ; 0x44 169bc: 2000 movs r0, #0 169be: 4be3 ldr r3, [pc, #908] ; (16d4c ) 169c0: 4798 blx r3 169c2: 0083 lsls r3, r0, #2 169c4: 181b adds r3, r3, r0 169c6: 005b lsls r3, r3, #1 169c8: 3350 adds r3, #80 ; 0x50 169ca: 2140 movs r1, #64 ; 0x40 169cc: 31ff adds r1, #255 ; 0xff 169ce: 2201 movs r2, #1 169d0: 428b cmp r3, r1 169d2: d901 bls.n 169d8 169d4: f001 fb5d bl 18092 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t, _int, scalar) 169d8: 2192 movs r1, #146 ; 0x92 169da: 0020 movs r0, r4 169dc: 4bdc ldr r3, [pc, #880] ; (16d50 ) 169de: 4798 blx r3 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 169e0: 4bd6 ldr r3, [pc, #856] ; (16d3c ) 169e2: 681c ldr r4, [r3, #0] 169e4: 3444 adds r4, #68 ; 0x44 169e6: 2000 movs r0, #0 169e8: 4bd8 ldr r3, [pc, #864] ; (16d4c ) 169ea: 4798 blx r3 169ec: 0083 lsls r3, r0, #2 169ee: 181b adds r3, r3, r0 169f0: 005b lsls r3, r3, #1 169f2: 3350 adds r3, #80 ; 0x50 169f4: 2140 movs r1, #64 ; 0x40 169f6: 31ff adds r1, #255 ; 0xff 169f8: 2201 movs r2, #1 169fa: 428b cmp r3, r1 169fc: d901 bls.n 16a02 169fe: f001 fb56 bl 180ae _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t, _int, scalar) 16a02: 2193 movs r1, #147 ; 0x93 16a04: 0020 movs r0, r4 16a06: 4bd2 ldr r3, [pc, #840] ; (16d50 ) 16a08: 4798 blx r3 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 16a0a: 4bcc ldr r3, [pc, #816] ; (16d3c ) 16a0c: 6818 ldr r0, [r3, #0] 16a0e: 3044 adds r0, #68 ; 0x44 16a10: 4bc1 ldr r3, [pc, #772] ; (16d18 ) 16a12: 699b ldr r3, [r3, #24] 16a14: 079b lsls r3, r3, #30 16a16: d501 bpl.n 16a1c 16a18: f001 fb57 bl 180ca 16a1c: 2310 movs r3, #16 16a1e: 2122 movs r1, #34 ; 0x22 16a20: 2212 movs r2, #18 16a22: 0149 lsls r1, r1, #5 16a24: 02db lsls r3, r3, #11 16a26: 430a orrs r2, r1 16a28: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) 16a2a: 2199 movs r1, #153 ; 0x99 16a2c: 4bc6 ldr r3, [pc, #792] ; (16d48 ) 16a2e: 4798 blx r3 style_init_reset(&styles->chart_series); 16a30: 4cc2 ldr r4, [pc, #776] ; (16d3c ) 16a32: 6820 ldr r0, [r4, #0] 16a34: 3048 adds r0, #72 ; 0x48 16a36: 4bc2 ldr r3, [pc, #776] ; (16d40 ) 16a38: 4798 blx r3 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 16a3a: 6824 ldr r4, [r4, #0] 16a3c: 3448 adds r4, #72 ; 0x48 16a3e: 2000 movs r0, #0 16a40: 4bc2 ldr r3, [pc, #776] ; (16d4c ) 16a42: 4798 blx r3 16a44: 0043 lsls r3, r0, #1 16a46: 1818 adds r0, r3, r0 16a48: 3050 adds r0, #80 ; 0x50 16a4a: 2340 movs r3, #64 ; 0x40 16a4c: 33ff adds r3, #255 ; 0xff 16a4e: 2201 movs r2, #1 16a50: 4298 cmp r0, r3 16a52: d901 bls.n 16a58 16a54: f001 fb3e bl 180d4 _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_WIDTH, line_width, lv_style_int_t, _int, scalar) 16a58: 2190 movs r1, #144 ; 0x90 16a5a: 0020 movs r0, r4 16a5c: 4bbc ldr r3, [pc, #752] ; (16d50 ) 16a5e: 4798 blx r3 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 16a60: 4bb6 ldr r3, [pc, #728] ; (16d3c ) 16a62: 681c ldr r4, [r3, #0] 16a64: 3448 adds r4, #72 ; 0x48 16a66: 2000 movs r0, #0 16a68: 4bb8 ldr r3, [pc, #736] ; (16d4c ) 16a6a: 4798 blx r3 16a6c: 3014 adds r0, #20 16a6e: 0080 lsls r0, r0, #2 16a70: 2340 movs r3, #64 ; 0x40 16a72: 33ff adds r3, #255 ; 0xff 16a74: 2201 movs r2, #1 16a76: 4298 cmp r0, r3 16a78: d901 bls.n 16a7e 16a7a: f001 fb38 bl 180ee _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 16a7e: 2103 movs r1, #3 16a80: 0020 movs r0, r4 16a82: 4bb3 ldr r3, [pc, #716] ; (16d50 ) 16a84: 4798 blx r3 lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 16a86: 4bad ldr r3, [pc, #692] ; (16d3c ) 16a88: 681c ldr r4, [r3, #0] 16a8a: 3448 adds r4, #72 ; 0x48 16a8c: 2000 movs r0, #0 16a8e: 4baf ldr r3, [pc, #700] ; (16d4c ) 16a90: 4798 blx r3 16a92: 3028 adds r0, #40 ; 0x28 16a94: 0040 lsls r0, r0, #1 16a96: 2340 movs r3, #64 ; 0x40 16a98: 33ff adds r3, #255 ; 0xff 16a9a: 2201 movs r2, #1 16a9c: 4298 cmp r0, r3 16a9e: d901 bls.n 16aa4 16aa0: f001 fb30 bl 18104 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16aa4: 2114 movs r1, #20 16aa6: 0020 movs r0, r4 16aa8: 4ba9 ldr r3, [pc, #676] ; (16d50 ) 16aaa: 4798 blx r3 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 16aac: 4ba3 ldr r3, [pc, #652] ; (16d3c ) 16aae: 681c ldr r4, [r3, #0] 16ab0: 3448 adds r4, #72 ; 0x48 16ab2: 2000 movs r0, #0 16ab4: 4ba5 ldr r3, [pc, #660] ; (16d4c ) 16ab6: 4798 blx r3 16ab8: 3050 adds r0, #80 ; 0x50 16aba: 2340 movs r3, #64 ; 0x40 16abc: 33ff adds r3, #255 ; 0xff 16abe: 2201 movs r2, #1 16ac0: 4298 cmp r0, r3 16ac2: d901 bls.n 16ac8 16ac4: f001 fb29 bl 1811a _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16ac8: 2101 movs r1, #1 16aca: 0020 movs r0, r4 16acc: 4ba0 ldr r3, [pc, #640] ; (16d50 ) 16ace: 4798 blx r3 style_init_reset(&styles->calendar_header); 16ad0: 4c9a ldr r4, [pc, #616] ; (16d3c ) 16ad2: 6820 ldr r0, [r4, #0] 16ad4: 3030 adds r0, #48 ; 0x30 16ad6: 4b9a ldr r3, [pc, #616] ; (16d40 ) 16ad8: 4798 blx r3 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16ada: 6824 ldr r4, [r4, #0] 16adc: 3430 adds r4, #48 ; 0x30 16ade: 2000 movs r0, #0 16ae0: 4b9c ldr r3, [pc, #624] ; (16d54 ) 16ae2: 4798 blx r3 16ae4: 2801 cmp r0, #1 16ae6: d801 bhi.n 16aec 16ae8: f001 fb21 bl 1812e 16aec: 2000 movs r0, #0 16aee: 4b97 ldr r3, [pc, #604] ; (16d4c ) 16af0: 4798 blx r3 16af2: 0103 lsls r3, r0, #4 16af4: 1a1b subs r3, r3, r0 16af6: 005b lsls r3, r3, #1 16af8: 3350 adds r3, #80 ; 0x50 16afa: 2140 movs r1, #64 ; 0x40 16afc: 31ff adds r1, #255 ; 0xff 16afe: 2201 movs r2, #1 16b00: 428b cmp r3, r1 16b02: d901 bls.n 16b08 16b04: f001 fb2c bl 18160 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 16b08: 2110 movs r1, #16 16b0a: 0020 movs r0, r4 16b0c: 4b90 ldr r3, [pc, #576] ; (16d50 ) 16b0e: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16b10: 4b8a ldr r3, [pc, #552] ; (16d3c ) 16b12: 681c ldr r4, [r3, #0] 16b14: 3430 adds r4, #48 ; 0x30 16b16: 2000 movs r0, #0 16b18: 4b8e ldr r3, [pc, #568] ; (16d54 ) 16b1a: 4798 blx r3 16b1c: 2801 cmp r0, #1 16b1e: d801 bhi.n 16b24 16b20: f001 fb2b bl 1817a 16b24: 2000 movs r0, #0 16b26: 4b89 ldr r3, [pc, #548] ; (16d4c ) 16b28: 4798 blx r3 16b2a: 0103 lsls r3, r0, #4 16b2c: 1a1b subs r3, r3, r0 16b2e: 005b lsls r3, r3, #1 16b30: 3350 adds r3, #80 ; 0x50 16b32: 2140 movs r1, #64 ; 0x40 16b34: 31ff adds r1, #255 ; 0xff 16b36: 2201 movs r2, #1 16b38: 428b cmp r3, r1 16b3a: d901 bls.n 16b40 16b3c: f001 fb36 bl 181ac _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16b40: 2112 movs r1, #18 16b42: 0020 movs r0, r4 16b44: 4b82 ldr r3, [pc, #520] ; (16d50 ) 16b46: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16b48: 4b7c ldr r3, [pc, #496] ; (16d3c ) 16b4a: 681c ldr r4, [r3, #0] 16b4c: 3430 adds r4, #48 ; 0x30 16b4e: 2000 movs r0, #0 16b50: 4b80 ldr r3, [pc, #512] ; (16d54 ) 16b52: 4798 blx r3 16b54: 2801 cmp r0, #1 16b56: d801 bhi.n 16b5c 16b58: f001 fb35 bl 181c6 16b5c: 2000 movs r0, #0 16b5e: 4b7b ldr r3, [pc, #492] ; (16d4c ) 16b60: 4798 blx r3 16b62: 0103 lsls r3, r0, #4 16b64: 1a1b subs r3, r3, r0 16b66: 005b lsls r3, r3, #1 16b68: 3350 adds r3, #80 ; 0x50 16b6a: 2140 movs r1, #64 ; 0x40 16b6c: 31ff adds r1, #255 ; 0xff 16b6e: 2201 movs r2, #1 16b70: 428b cmp r3, r1 16b72: d901 bls.n 16b78 16b74: f001 fb40 bl 181f8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16b78: 2113 movs r1, #19 16b7a: 0020 movs r0, r4 16b7c: 4b74 ldr r3, [pc, #464] ; (16d50 ) 16b7e: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 16b80: 4b6e ldr r3, [pc, #440] ; (16d3c ) 16b82: 681c ldr r4, [r3, #0] 16b84: 3430 adds r4, #48 ; 0x30 16b86: 2000 movs r0, #0 16b88: 4b72 ldr r3, [pc, #456] ; (16d54 ) 16b8a: 4798 blx r3 16b8c: 2801 cmp r0, #1 16b8e: d801 bhi.n 16b94 16b90: f001 fb3f bl 18212 16b94: 2000 movs r0, #0 16b96: 4b6d ldr r3, [pc, #436] ; (16d4c ) 16b98: 4798 blx r3 16b9a: 0103 lsls r3, r0, #4 16b9c: 1a1b subs r3, r3, r0 16b9e: 005b lsls r3, r3, #1 16ba0: 3350 adds r3, #80 ; 0x50 16ba2: 2140 movs r1, #64 ; 0x40 16ba4: 31ff adds r1, #255 ; 0xff 16ba6: 2201 movs r2, #1 16ba8: 428b cmp r3, r1 16baa: d901 bls.n 16bb0 16bac: f001 fb64 bl 18278 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16bb0: 2111 movs r1, #17 16bb2: 0020 movs r0, r4 16bb4: 4b66 ldr r3, [pc, #408] ; (16d50 ) 16bb6: 4798 blx r3 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 16bb8: 4b60 ldr r3, [pc, #384] ; (16d3c ) 16bba: 6818 ldr r0, [r3, #0] 16bbc: 3030 adds r0, #48 ; 0x30 16bbe: 4b56 ldr r3, [pc, #344] ; (16d18 ) 16bc0: 699b ldr r3, [r3, #24] 16bc2: 079b lsls r3, r3, #30 16bc4: d501 bpl.n 16bca 16bc6: f001 fb64 bl 18292 16bca: 223f movs r2, #63 ; 0x3f 16bcc: 231f movs r3, #31 16bce: 0152 lsls r2, r2, #5 16bd0: 02d9 lsls r1, r3, #11 16bd2: 431a orrs r2, r3 16bd4: 430a orrs r2, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16bd6: 4960 ldr r1, [pc, #384] ; (16d58 ) 16bd8: 4b5b ldr r3, [pc, #364] ; (16d48 ) 16bda: 4798 blx r3 style_init_reset(&styles->calendar_daynames); 16bdc: 4c57 ldr r4, [pc, #348] ; (16d3c ) 16bde: 6820 ldr r0, [r4, #0] 16be0: 3034 adds r0, #52 ; 0x34 16be2: 4b57 ldr r3, [pc, #348] ; (16d40 ) 16be4: 4798 blx r3 lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 16be6: 6820 ldr r0, [r4, #0] 16be8: 3034 adds r0, #52 ; 0x34 16bea: 4b4b ldr r3, [pc, #300] ; (16d18 ) 16bec: 699b ldr r3, [r3, #24] 16bee: 079b lsls r3, r3, #30 16bf0: d501 bpl.n 16bf6 16bf2: f001 fb52 bl 1829a 16bf6: 231d movs r3, #29 16bf8: 213b movs r1, #59 ; 0x3b 16bfa: 221d movs r2, #29 16bfc: 0149 lsls r1, r1, #5 16bfe: 02db lsls r3, r3, #11 16c00: 430a orrs r2, r1 16c02: 431a orrs r2, r3 16c04: 494f ldr r1, [pc, #316] ; (16d44 ) 16c06: 4b50 ldr r3, [pc, #320] ; (16d48 ) 16c08: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16c0a: 4b4c ldr r3, [pc, #304] ; (16d3c ) 16c0c: 681c ldr r4, [r3, #0] 16c0e: 3434 adds r4, #52 ; 0x34 16c10: 2000 movs r0, #0 16c12: 4b50 ldr r3, [pc, #320] ; (16d54 ) 16c14: 4798 blx r3 16c16: 2801 cmp r0, #1 16c18: d801 bhi.n 16c1e 16c1a: f001 fb43 bl 182a4 16c1e: 2000 movs r0, #0 16c20: 4b4a ldr r3, [pc, #296] ; (16d4c ) 16c22: 4798 blx r3 16c24: 0103 lsls r3, r0, #4 16c26: 1a1b subs r3, r3, r0 16c28: 005b lsls r3, r3, #1 16c2a: 3350 adds r3, #80 ; 0x50 16c2c: 2140 movs r1, #64 ; 0x40 16c2e: 31ff adds r1, #255 ; 0xff 16c30: 2201 movs r2, #1 16c32: 428b cmp r3, r1 16c34: d901 bls.n 16c3a 16c36: f001 fb4e bl 182d6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16c3a: 2112 movs r1, #18 16c3c: 0020 movs r0, r4 16c3e: 4b44 ldr r3, [pc, #272] ; (16d50 ) 16c40: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16c42: 4b3e ldr r3, [pc, #248] ; (16d3c ) 16c44: 681c ldr r4, [r3, #0] 16c46: 3434 adds r4, #52 ; 0x34 16c48: 2000 movs r0, #0 16c4a: 4b42 ldr r3, [pc, #264] ; (16d54 ) 16c4c: 4798 blx r3 16c4e: 2801 cmp r0, #1 16c50: d801 bhi.n 16c56 16c52: f001 fb4d bl 182f0 16c56: 2000 movs r0, #0 16c58: 4b3c ldr r3, [pc, #240] ; (16d4c ) 16c5a: 4798 blx r3 16c5c: 0103 lsls r3, r0, #4 16c5e: 1a1b subs r3, r3, r0 16c60: 005b lsls r3, r3, #1 16c62: 3350 adds r3, #80 ; 0x50 16c64: 2140 movs r1, #64 ; 0x40 16c66: 31ff adds r1, #255 ; 0xff 16c68: 2201 movs r2, #1 16c6a: 428b cmp r3, r1 16c6c: d901 bls.n 16c72 16c6e: f001 fb58 bl 18322 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16c72: 2113 movs r1, #19 16c74: 0020 movs r0, r4 16c76: 4b36 ldr r3, [pc, #216] ; (16d50 ) 16c78: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 16c7a: 4b30 ldr r3, [pc, #192] ; (16d3c ) 16c7c: 681c ldr r4, [r3, #0] 16c7e: 3434 adds r4, #52 ; 0x34 16c80: 2000 movs r0, #0 16c82: 4b34 ldr r3, [pc, #208] ; (16d54 ) 16c84: 4798 blx r3 16c86: 2801 cmp r0, #1 16c88: d801 bhi.n 16c8e 16c8a: f001 fb57 bl 1833c 16c8e: 2000 movs r0, #0 16c90: 4b2e ldr r3, [pc, #184] ; (16d4c ) 16c92: 4798 blx r3 16c94: 0103 lsls r3, r0, #4 16c96: 1a1b subs r3, r3, r0 16c98: 005b lsls r3, r3, #1 16c9a: 3350 adds r3, #80 ; 0x50 16c9c: 2140 movs r1, #64 ; 0x40 16c9e: 31ff adds r1, #255 ; 0xff 16ca0: 2201 movs r2, #1 16ca2: 428b cmp r3, r1 16ca4: d901 bls.n 16caa 16ca6: f001 fb62 bl 1836e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16caa: 2111 movs r1, #17 16cac: 0020 movs r0, r4 16cae: 4b28 ldr r3, [pc, #160] ; (16d50 ) 16cb0: 4798 blx r3 style_init_reset(&styles->calendar_date_nums); 16cb2: 4c22 ldr r4, [pc, #136] ; (16d3c ) 16cb4: 6820 ldr r0, [r4, #0] 16cb6: 302c adds r0, #44 ; 0x2c 16cb8: 4b21 ldr r3, [pc, #132] ; (16d40 ) 16cba: 4798 blx r3 lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 16cbc: 6824 ldr r4, [r4, #0] 16cbe: 342c adds r4, #44 ; 0x2c 16cc0: 2000 movs r0, #0 16cc2: 4b22 ldr r3, [pc, #136] ; (16d4c ) 16cc4: 4798 blx r3 16cc6: 3014 adds r0, #20 16cc8: 0080 lsls r0, r0, #2 16cca: 2340 movs r3, #64 ; 0x40 16ccc: 33ff adds r3, #255 ; 0xff 16cce: 2201 movs r2, #1 16cd0: 4298 cmp r0, r3 16cd2: d901 bls.n 16cd8 16cd4: f001 fb58 bl 18388 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16cd8: 2101 movs r1, #1 16cda: 0020 movs r0, r4 16cdc: 4b1c ldr r3, [pc, #112] ; (16d50 ) 16cde: 4798 blx r3 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 16ce0: 4b16 ldr r3, [pc, #88] ; (16d3c ) 16ce2: 6818 ldr r0, [r3, #0] 16ce4: 302c adds r0, #44 ; 0x2c 16ce6: 4b0c ldr r3, [pc, #48] ; (16d18 ) 16ce8: 699b ldr r3, [r3, #24] 16cea: 079b lsls r3, r3, #30 16cec: d501 bpl.n 16cf2 16cee: f001 fb56 bl 1839e 16cf2: 231f movs r3, #31 16cf4: 213f movs r1, #63 ; 0x3f 16cf6: 221f movs r2, #31 16cf8: 0149 lsls r1, r1, #5 16cfa: 02db lsls r3, r3, #11 16cfc: 430a orrs r2, r1 16cfe: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16d00: 4916 ldr r1, [pc, #88] ; (16d5c ) 16d02: 4b11 ldr r3, [pc, #68] ; (16d48 ) 16d04: 4798 blx r3 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); 16d06: 4b0d ldr r3, [pc, #52] ; (16d3c ) 16d08: 6818 ldr r0, [r3, #0] 16d0a: 302c adds r0, #44 ; 0x2c 16d0c: 4b02 ldr r3, [pc, #8] ; (16d18 ) 16d0e: 699b ldr r3, [r3, #24] 16d10: 2233 movs r2, #51 ; 0x33 16d12: e025 b.n 16d60 16d14: 20004c48 .word 0x20004c48 16d18: 20004c50 .word 0x20004c50 16d1c: 00014935 .word 0x00014935 16d20: 00015b01 .word 0x00015b01 16d24: 000167f9 .word 0x000167f9 16d28: 00015c55 .word 0x00015c55 16d2c: 00015ee9 .word 0x00015ee9 16d30: 00016029 .word 0x00016029 16d34: 0001624d .word 0x0001624d 16d38: 000166f5 .word 0x000166f5 16d3c: 20004c4c .word 0x20004c4c 16d40: 00014911 .word 0x00014911 16d44: 00008089 .word 0x00008089 16d48: 00006135 .word 0x00006135 16d4c: 00010dd1 .word 0x00010dd1 16d50: 00005fad .word 0x00005fad 16d54: 00010ded .word 0x00010ded 16d58: 00009089 .word 0x00009089 16d5c: 00008189 .word 0x00008189 16d60: 079b lsls r3, r3, #30 16d62: d400 bmi.n 16d66 16d64: 3233 adds r2, #51 ; 0x33 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16d66: 2196 movs r1, #150 ; 0x96 16d68: 0049 lsls r1, r1, #1 16d6a: 4dfa ldr r5, [pc, #1000] ; (17154 ) 16d6c: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); 16d6e: 4cfa ldr r4, [pc, #1000] ; (17158 ) 16d70: 6820 ldr r0, [r4, #0] 16d72: 302c adds r0, #44 ; 0x2c 16d74: 2233 movs r2, #51 ; 0x33 16d76: 49f9 ldr r1, [pc, #996] ; (1715c ) 16d78: 47a8 blx r5 lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); 16d7a: 6820 ldr r0, [r4, #0] 16d7c: 302c adds r0, #44 ; 0x2c 16d7e: 22ff movs r2, #255 ; 0xff 16d80: 218b movs r1, #139 ; 0x8b 16d82: 0089 lsls r1, r1, #2 16d84: 47a8 blx r5 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); 16d86: 6820 ldr r0, [r4, #0] 16d88: 302c adds r0, #44 ; 0x2c 16d8a: 4bf5 ldr r3, [pc, #980] ; (17160 ) 16d8c: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 16d8e: 49f5 ldr r1, [pc, #980] ; (17164 ) 16d90: 4ef5 ldr r6, [pc, #980] ; (17168 ) 16d92: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); 16d94: 6820 ldr r0, [r4, #0] 16d96: 302c adds r0, #44 ; 0x2c 16d98: 4df4 ldr r5, [pc, #976] ; (1716c ) 16d9a: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16d9c: 49f4 ldr r1, [pc, #976] ; (17170 ) 16d9e: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 16da0: 6820 ldr r0, [r4, #0] 16da2: 302c adds r0, #44 ; 0x2c 16da4: 69ab ldr r3, [r5, #24] 16da6: 079b lsls r3, r3, #30 16da8: d501 bpl.n 16dae 16daa: f001 fafd bl 183a8 16dae: 223f movs r2, #63 ; 0x3f 16db0: 231f movs r3, #31 16db2: 0152 lsls r2, r2, #5 16db4: 02d9 lsls r1, r3, #11 16db6: 431a orrs r2, r3 16db8: 430a orrs r2, r1 16dba: 2129 movs r1, #41 ; 0x29 16dbc: 4eea ldr r6, [pc, #936] ; (17168 ) 16dbe: 47b0 blx r6 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 16dc0: 4ce5 ldr r4, [pc, #916] ; (17158 ) 16dc2: 6820 ldr r0, [r4, #0] 16dc4: 302c adds r0, #44 ; 0x2c 16dc6: 4fe9 ldr r7, [pc, #932] ; (1716c ) 16dc8: 88ba ldrh r2, [r7, #4] 16dca: 212a movs r1, #42 ; 0x2a 16dcc: 31ff adds r1, #255 ; 0xff 16dce: 47b0 blx r6 lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); 16dd0: 6820 ldr r0, [r4, #0] 16dd2: 302c adds r0, #44 ; 0x2c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16dd4: 2202 movs r2, #2 16dd6: 2198 movs r1, #152 ; 0x98 16dd8: 0049 lsls r1, r1, #1 16dda: 4de6 ldr r5, [pc, #920] ; (17174 ) 16ddc: 47a8 blx r5 lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); 16dde: 6820 ldr r0, [r4, #0] 16de0: 302c adds r0, #44 ; 0x2c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 16de2: 2204 movs r2, #4 16de4: 2132 movs r1, #50 ; 0x32 16de6: 31ff adds r1, #255 ; 0xff 16de8: 47a8 blx r5 lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); 16dea: 6820 ldr r0, [r4, #0] 16dec: 302c adds r0, #44 ; 0x2c 16dee: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 16df0: 213a movs r1, #58 ; 0x3a 16df2: 31ff adds r1, #255 ; 0xff 16df4: 47b0 blx r6 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 16df6: 6824 ldr r4, [r4, #0] 16df8: 342c adds r4, #44 ; 0x2c 16dfa: 2000 movs r0, #0 16dfc: 4bde ldr r3, [pc, #888] ; (17178 ) 16dfe: 4798 blx r3 16e00: 0043 lsls r3, r0, #1 16e02: 1818 adds r0, r3, r0 16e04: 3050 adds r0, #80 ; 0x50 16e06: 2340 movs r3, #64 ; 0x40 16e08: 33ff adds r3, #255 ; 0xff 16e0a: 2201 movs r2, #1 16e0c: 4298 cmp r0, r3 16e0e: d901 bls.n 16e14 16e10: f001 face bl 183b0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16e14: 2114 movs r1, #20 16e16: 0020 movs r0, r4 16e18: 4bd6 ldr r3, [pc, #856] ; (17174 ) 16e1a: 4798 blx r3 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 16e1c: 4bce ldr r3, [pc, #824] ; (17158 ) 16e1e: 681c ldr r4, [r3, #0] 16e20: 342c adds r4, #44 ; 0x2c 16e22: 2000 movs r0, #0 16e24: 4bd5 ldr r3, [pc, #852] ; (1717c ) 16e26: 4798 blx r3 16e28: 2801 cmp r0, #1 16e2a: d801 bhi.n 16e30 16e2c: f001 facd bl 183ca 16e30: 2000 movs r0, #0 16e32: 4bd1 ldr r3, [pc, #836] ; (17178 ) 16e34: 4798 blx r3 16e36: 0103 lsls r3, r0, #4 16e38: 1a1b subs r3, r3, r0 16e3a: 005b lsls r3, r3, #1 16e3c: 3350 adds r3, #80 ; 0x50 16e3e: 2140 movs r1, #64 ; 0x40 16e40: 31ff adds r1, #255 ; 0xff 16e42: 2201 movs r2, #1 16e44: 428b cmp r3, r1 16e46: d901 bls.n 16e4c 16e48: f001 fad8 bl 183fc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16e4c: 2112 movs r1, #18 16e4e: 0020 movs r0, r4 16e50: 4bc8 ldr r3, [pc, #800] ; (17174 ) 16e52: 4798 blx r3 lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 16e54: 4bc0 ldr r3, [pc, #768] ; (17158 ) 16e56: 681c ldr r4, [r3, #0] 16e58: 342c adds r4, #44 ; 0x2c 16e5a: 2000 movs r0, #0 16e5c: 4bc7 ldr r3, [pc, #796] ; (1717c ) 16e5e: 4798 blx r3 16e60: 2801 cmp r0, #1 16e62: d801 bhi.n 16e68 16e64: f001 fad7 bl 18416 16e68: 2000 movs r0, #0 16e6a: 4bc3 ldr r3, [pc, #780] ; (17178 ) 16e6c: 4798 blx r3 16e6e: 0103 lsls r3, r0, #4 16e70: 1a1b subs r3, r3, r0 16e72: 005b lsls r3, r3, #1 16e74: 3350 adds r3, #80 ; 0x50 16e76: 2140 movs r1, #64 ; 0x40 16e78: 31ff adds r1, #255 ; 0xff 16e7a: 2201 movs r2, #1 16e7c: 428b cmp r3, r1 16e7e: d901 bls.n 16e84 16e80: f001 fae2 bl 18448 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 16e84: 2113 movs r1, #19 16e86: 0020 movs r0, r4 16e88: 4bba ldr r3, [pc, #744] ; (17174 ) 16e8a: 4798 blx r3 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 16e8c: 4bb2 ldr r3, [pc, #712] ; (17158 ) 16e8e: 681c ldr r4, [r3, #0] 16e90: 342c adds r4, #44 ; 0x2c 16e92: 2000 movs r0, #0 16e94: 4bb9 ldr r3, [pc, #740] ; (1717c ) 16e96: 4798 blx r3 16e98: 2801 cmp r0, #1 16e9a: d801 bhi.n 16ea0 16e9c: f001 fae1 bl 18462 16ea0: 2000 movs r0, #0 16ea2: 4bb5 ldr r3, [pc, #724] ; (17178 ) 16ea4: 4798 blx r3 16ea6: 0103 lsls r3, r0, #4 16ea8: 1a1b subs r3, r3, r0 16eaa: 005b lsls r3, r3, #1 16eac: 3350 adds r3, #80 ; 0x50 16eae: 2140 movs r1, #64 ; 0x40 16eb0: 31ff adds r1, #255 ; 0xff 16eb2: 2201 movs r2, #1 16eb4: 428b cmp r3, r1 16eb6: d901 bls.n 16ebc 16eb8: f001 faec bl 18494 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 16ebc: 2111 movs r1, #17 16ebe: 0020 movs r0, r4 16ec0: 4bac ldr r3, [pc, #688] ; (17174 ) 16ec2: 4798 blx r3 style_init_reset(&styles->cpicker_bg); 16ec4: 4ca4 ldr r4, [pc, #656] ; (17158 ) 16ec6: 6820 ldr r0, [r4, #0] 16ec8: 3038 adds r0, #56 ; 0x38 16eca: 4bad ldr r3, [pc, #692] ; (17180 ) 16ecc: 4798 blx r3 lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 16ece: 6824 ldr r4, [r4, #0] 16ed0: 3438 adds r4, #56 ; 0x38 16ed2: 2000 movs r0, #0 16ed4: 4ba8 ldr r3, [pc, #672] ; (17178 ) 16ed6: 4798 blx r3 16ed8: 0103 lsls r3, r0, #4 16eda: 1a1b subs r3, r3, r0 16edc: 005b lsls r3, r3, #1 16ede: 3350 adds r3, #80 ; 0x50 16ee0: 2140 movs r1, #64 ; 0x40 16ee2: 31ff adds r1, #255 ; 0xff 16ee4: 2201 movs r2, #1 16ee6: 428b cmp r3, r1 16ee8: d901 bls.n 16eee 16eea: f001 fae0 bl 184ae _LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar) 16eee: 21c0 movs r1, #192 ; 0xc0 16ef0: 0020 movs r0, r4 16ef2: 4ba0 ldr r3, [pc, #640] ; (17174 ) 16ef4: 4798 blx r3 lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 16ef6: 4c98 ldr r4, [pc, #608] ; (17158 ) 16ef8: 6820 ldr r0, [r4, #0] 16efa: 3038 adds r0, #56 ; 0x38 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16efc: 22ff movs r2, #255 ; 0xff 16efe: 212c movs r1, #44 ; 0x2c 16f00: 4b94 ldr r3, [pc, #592] ; (17154 ) 16f02: 4798 blx r3 lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 16f04: 6820 ldr r0, [r4, #0] 16f06: 3038 adds r0, #56 ; 0x38 16f08: 4b98 ldr r3, [pc, #608] ; (1716c ) 16f0a: 699b ldr r3, [r3, #24] 16f0c: 079b lsls r3, r3, #30 16f0e: d501 bpl.n 16f14 16f10: f001 fada bl 184c8 16f14: 2308 movs r3, #8 16f16: 2112 movs r1, #18 16f18: 220b movs r2, #11 16f1a: 0149 lsls r1, r1, #5 16f1c: 02db lsls r3, r3, #11 16f1e: 430a orrs r2, r1 16f20: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16f22: 2129 movs r1, #41 ; 0x29 16f24: 4b90 ldr r3, [pc, #576] ; (17168 ) 16f26: 4798 blx r3 lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 16f28: 4b8b ldr r3, [pc, #556] ; (17158 ) 16f2a: 681c ldr r4, [r3, #0] 16f2c: 3438 adds r4, #56 ; 0x38 16f2e: 2000 movs r0, #0 16f30: 4b91 ldr r3, [pc, #580] ; (17178 ) 16f32: 4798 blx r3 16f34: 0083 lsls r3, r0, #2 16f36: 181b adds r3, r3, r0 16f38: 009b lsls r3, r3, #2 16f3a: 3350 adds r3, #80 ; 0x50 16f3c: 2140 movs r1, #64 ; 0x40 16f3e: 31ff adds r1, #255 ; 0xff 16f40: 2201 movs r2, #1 16f42: 428b cmp r3, r1 16f44: d901 bls.n 16f4a 16f46: f001 fac4 bl 184d2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 16f4a: 2114 movs r1, #20 16f4c: 0020 movs r0, r4 16f4e: 4e89 ldr r6, [pc, #548] ; (17174 ) 16f50: 47b0 blx r6 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 16f52: 4d8c ldr r5, [pc, #560] ; (17184 ) lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16f54: 4c80 ldr r4, [pc, #512] ; (17158 ) 16f56: 6820 ldr r0, [r4, #0] 16f58: 3038 adds r0, #56 ; 0x38 16f5a: 002a movs r2, r5 16f5c: 2101 movs r1, #1 16f5e: 47b0 blx r6 style_init_reset(&styles->cpicker_indic); 16f60: 6820 ldr r0, [r4, #0] 16f62: 303c adds r0, #60 ; 0x3c 16f64: 4b86 ldr r3, [pc, #536] ; (17180 ) 16f66: 4798 blx r3 lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 16f68: 6820 ldr r0, [r4, #0] 16f6a: 303c adds r0, #60 ; 0x3c 16f6c: 002a movs r2, r5 16f6e: 2101 movs r1, #1 16f70: 47b0 blx r6 lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); 16f72: 6820 ldr r0, [r4, #0] 16f74: 303c adds r0, #60 ; 0x3c 16f76: 4f7a ldr r7, [pc, #488] ; (17160 ) 16f78: 883a ldrh r2, [r7, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 16f7a: 2129 movs r1, #41 ; 0x29 16f7c: 4d7a ldr r5, [pc, #488] ; (17168 ) 16f7e: 47a8 blx r5 lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 16f80: 6820 ldr r0, [r4, #0] 16f82: 303c adds r0, #60 ; 0x3c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 16f84: 22ff movs r2, #255 ; 0xff 16f86: 212c movs r1, #44 ; 0x2c 16f88: 4b72 ldr r3, [pc, #456] ; (17154 ) 16f8a: 4798 blx r3 lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); 16f8c: 6820 ldr r0, [r4, #0] 16f8e: 303c adds r0, #60 ; 0x3c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 16f90: 2202 movs r2, #2 16f92: 2130 movs r1, #48 ; 0x30 16f94: 47b0 blx r6 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); 16f96: 6820 ldr r0, [r4, #0] 16f98: 303c adds r0, #60 ; 0x3c 16f9a: 88ba ldrh r2, [r7, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 16f9c: 2139 movs r1, #57 ; 0x39 16f9e: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); 16fa0: 6820 ldr r0, [r4, #0] 16fa2: 303c adds r0, #60 ; 0x3c 16fa4: 4e71 ldr r6, [pc, #452] ; (1716c ) 16fa6: 88b2 ldrh r2, [r6, #4] 16fa8: 4977 ldr r1, [pc, #476] ; (17188 ) 16faa: 47a8 blx r5 lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); 16fac: 6820 ldr r0, [r4, #0] 16fae: 303c adds r0, #60 ; 0x3c 16fb0: 88f2 ldrh r2, [r6, #6] 16fb2: 4976 ldr r1, [pc, #472] ; (1718c ) 16fb4: 47a8 blx r5 lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 16fb6: 6824 ldr r4, [r4, #0] 16fb8: 343c adds r4, #60 ; 0x3c 16fba: 2000 movs r0, #0 16fbc: 4b6e ldr r3, [pc, #440] ; (17178 ) 16fbe: 4798 blx r3 16fc0: 0003 movs r3, r0 16fc2: 0040 lsls r0, r0, #1 16fc4: 18c0 adds r0, r0, r3 16fc6: 0080 lsls r0, r0, #2 16fc8: 18c0 adds r0, r0, r3 16fca: 3050 adds r0, #80 ; 0x50 16fcc: 2340 movs r3, #64 ; 0x40 16fce: 33ff adds r3, #255 ; 0xff 16fd0: 2201 movs r2, #1 16fd2: 4298 cmp r0, r3 16fd4: d901 bls.n 16fda 16fd6: f001 fa8a bl 184ee _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 16fda: 2112 movs r1, #18 16fdc: 0020 movs r0, r4 16fde: 4b65 ldr r3, [pc, #404] ; (17174 ) 16fe0: 4798 blx r3 lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 16fe2: 4b5d ldr r3, [pc, #372] ; (17158 ) 16fe4: 681c ldr r4, [r3, #0] 16fe6: 343c adds r4, #60 ; 0x3c 16fe8: 2000 movs r0, #0 16fea: 4b63 ldr r3, [pc, #396] ; (17178 ) 16fec: 4798 blx r3 16fee: 0003 movs r3, r0 16ff0: 0040 lsls r0, r0, #1 16ff2: 18c0 adds r0, r0, r3 16ff4: 0080 lsls r0, r0, #2 16ff6: 18c0 adds r0, r0, r3 16ff8: 3050 adds r0, #80 ; 0x50 16ffa: 2340 movs r3, #64 ; 0x40 16ffc: 33ff adds r3, #255 ; 0xff 16ffe: 2201 movs r2, #1 17000: 4298 cmp r0, r3 17002: d901 bls.n 17008 17004: f001 fa82 bl 1850c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17008: 2113 movs r1, #19 1700a: 0020 movs r0, r4 1700c: 4b59 ldr r3, [pc, #356] ; (17174 ) 1700e: 4798 blx r3 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 17010: 4b51 ldr r3, [pc, #324] ; (17158 ) 17012: 681c ldr r4, [r3, #0] 17014: 343c adds r4, #60 ; 0x3c 17016: 2000 movs r0, #0 17018: 4b57 ldr r3, [pc, #348] ; (17178 ) 1701a: 4798 blx r3 1701c: 0003 movs r3, r0 1701e: 0040 lsls r0, r0, #1 17020: 18c0 adds r0, r0, r3 17022: 0080 lsls r0, r0, #2 17024: 18c0 adds r0, r0, r3 17026: 3050 adds r0, #80 ; 0x50 17028: 2340 movs r3, #64 ; 0x40 1702a: 33ff adds r3, #255 ; 0xff 1702c: 2201 movs r2, #1 1702e: 4298 cmp r0, r3 17030: d901 bls.n 17036 17032: f001 fa7a bl 1852a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17036: 2110 movs r1, #16 17038: 0020 movs r0, r4 1703a: 4b4e ldr r3, [pc, #312] ; (17174 ) 1703c: 4798 blx r3 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1703e: 4b46 ldr r3, [pc, #280] ; (17158 ) 17040: 681c ldr r4, [r3, #0] 17042: 343c adds r4, #60 ; 0x3c 17044: 2000 movs r0, #0 17046: 4b4c ldr r3, [pc, #304] ; (17178 ) 17048: 4798 blx r3 1704a: 0003 movs r3, r0 1704c: 0040 lsls r0, r0, #1 1704e: 18c0 adds r0, r0, r3 17050: 0080 lsls r0, r0, #2 17052: 18c0 adds r0, r0, r3 17054: 3050 adds r0, #80 ; 0x50 17056: 2340 movs r3, #64 ; 0x40 17058: 33ff adds r3, #255 ; 0xff 1705a: 2201 movs r2, #1 1705c: 4298 cmp r0, r3 1705e: d901 bls.n 17064 17060: f001 fa72 bl 18548 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17064: 2111 movs r1, #17 17066: 0020 movs r0, r4 17068: 4b42 ldr r3, [pc, #264] ; (17174 ) 1706a: 4798 blx r3 style_init_reset(&styles->cb_bg); 1706c: 4c3a ldr r4, [pc, #232] ; (17158 ) 1706e: 6820 ldr r0, [r4, #0] 17070: 304c adds r0, #76 ; 0x4c 17072: 4b43 ldr r3, [pc, #268] ; (17180 ) 17074: 4798 blx r3 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 17076: 6824 ldr r4, [r4, #0] 17078: 344c adds r4, #76 ; 0x4c 1707a: 2000 movs r0, #0 1707c: 4b3e ldr r3, [pc, #248] ; (17178 ) 1707e: 4798 blx r3 17080: 3014 adds r0, #20 17082: 0080 lsls r0, r0, #2 17084: 2340 movs r3, #64 ; 0x40 17086: 33ff adds r3, #255 ; 0xff 17088: 2201 movs r2, #1 1708a: 4298 cmp r0, r3 1708c: d901 bls.n 17092 1708e: f001 fa6a bl 18566 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17092: 2101 movs r1, #1 17094: 0020 movs r0, r4 17096: 4b37 ldr r3, [pc, #220] ; (17174 ) 17098: 4798 blx r3 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1709a: 4b2f ldr r3, [pc, #188] ; (17158 ) 1709c: 681c ldr r4, [r3, #0] 1709e: 344c adds r4, #76 ; 0x4c 170a0: 2000 movs r0, #0 170a2: 4b35 ldr r3, [pc, #212] ; (17178 ) 170a4: 4798 blx r3 170a6: 0083 lsls r3, r0, #2 170a8: 181b adds r3, r3, r0 170aa: 005b lsls r3, r3, #1 170ac: 3350 adds r3, #80 ; 0x50 170ae: 2140 movs r1, #64 ; 0x40 170b0: 31ff adds r1, #255 ; 0xff 170b2: 2201 movs r2, #1 170b4: 428b cmp r3, r1 170b6: d901 bls.n 170bc 170b8: f001 fa60 bl 1857c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 170bc: 2114 movs r1, #20 170be: 0020 movs r0, r4 170c0: 4b2c ldr r3, [pc, #176] ; (17174 ) 170c2: 4798 blx r3 lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); 170c4: 4c24 ldr r4, [pc, #144] ; (17158 ) 170c6: 6820 ldr r0, [r4, #0] 170c8: 304c adds r0, #76 ; 0x4c 170ca: 4b28 ldr r3, [pc, #160] ; (1716c ) 170cc: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar) 170ce: 2149 movs r1, #73 ; 0x49 170d0: 4b25 ldr r3, [pc, #148] ; (17168 ) 170d2: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); 170d4: 6820 ldr r0, [r4, #0] 170d6: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 170d8: 2200 movs r2, #0 170da: 214c movs r1, #76 ; 0x4c 170dc: 4d1d ldr r5, [pc, #116] ; (17154 ) 170de: 47a8 blx r5 lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); 170e0: 6820 ldr r0, [r4, #0] 170e2: 304c adds r0, #76 ; 0x4c 170e4: 227f movs r2, #127 ; 0x7f 170e6: 2193 movs r1, #147 ; 0x93 170e8: 0089 lsls r1, r1, #2 170ea: 47a8 blx r5 lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 170ec: 6824 ldr r4, [r4, #0] 170ee: 344c adds r4, #76 ; 0x4c 170f0: 2000 movs r0, #0 170f2: 4b21 ldr r3, [pc, #132] ; (17178 ) 170f4: 4798 blx r3 170f6: 0043 lsls r3, r0, #1 170f8: 1818 adds r0, r3, r0 170fa: 3050 adds r0, #80 ; 0x50 170fc: 2340 movs r3, #64 ; 0x40 170fe: 33ff adds r3, #255 ; 0xff 17100: 2201 movs r2, #1 17102: 4298 cmp r0, r3 17104: d901 bls.n 1710a 17106: f001 fa47 bl 18598 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_WIDTH, outline_width, lv_style_int_t, _int, scalar) 1710a: 2140 movs r1, #64 ; 0x40 1710c: 0020 movs r0, r4 1710e: 4b19 ldr r3, [pc, #100] ; (17174 ) 17110: 4798 blx r3 lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 17112: 4b11 ldr r3, [pc, #68] ; (17158 ) 17114: 681c ldr r4, [r3, #0] 17116: 344c adds r4, #76 ; 0x4c 17118: 2000 movs r0, #0 1711a: 4b17 ldr r3, [pc, #92] ; (17178 ) 1711c: 4798 blx r3 1711e: 0083 lsls r3, r0, #2 17120: 181b adds r3, r3, r0 17122: 005b lsls r3, r3, #1 17124: 3350 adds r3, #80 ; 0x50 17126: 2140 movs r1, #64 ; 0x40 17128: 31ff adds r1, #255 ; 0xff 1712a: 2201 movs r2, #1 1712c: 428b cmp r3, r1 1712e: d901 bls.n 17134 17130: f001 fa3f bl 185b2 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_PAD, outline_pad, lv_style_int_t, _int, scalar) 17134: 2141 movs r1, #65 ; 0x41 17136: 0020 movs r0, r4 17138: 4d0e ldr r5, [pc, #56] ; (17174 ) 1713a: 47a8 blx r5 lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); 1713c: 4c06 ldr r4, [pc, #24] ; (17158 ) 1713e: 6820 ldr r0, [r4, #0] 17140: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 17142: 2296 movs r2, #150 ; 0x96 17144: 21b0 movs r1, #176 ; 0xb0 17146: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); 17148: 6820 ldr r0, [r4, #0] 1714a: 304c adds r0, #76 ; 0x4c _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 1714c: 224c movs r2, #76 ; 0x4c 1714e: 21b7 movs r1, #183 ; 0xb7 17150: e01e b.n 17190 17152: 46c0 nop ; (mov r8, r8) 17154: 000062bd .word 0x000062bd 17158: 20004c4c .word 0x20004c4c 1715c: 0000102c .word 0x0000102c 17160: 0002ada0 .word 0x0002ada0 17164: 00008289 .word 0x00008289 17168: 00006135 .word 0x00006135 1716c: 20004c50 .word 0x20004c50 17170: 00000229 .word 0x00000229 17174: 00005fad .word 0x00005fad 17178: 00010dd1 .word 0x00010dd1 1717c: 00010ded .word 0x00010ded 17180: 00014911 .word 0x00014911 17184: 00007fff .word 0x00007fff 17188: 00000239 .word 0x00000239 1718c: 00000439 .word 0x00000439 17190: 47a8 blx r5 style_init_reset(&styles->cb_bullet); 17192: 6820 ldr r0, [r4, #0] 17194: 3050 adds r0, #80 ; 0x50 17196: 4bfd ldr r3, [pc, #1012] ; (1758c ) 17198: 4798 blx r3 lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); 1719a: 6820 ldr r0, [r4, #0] 1719c: 3050 adds r0, #80 ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(OUTLINE_OPA, outline_opa, lv_opa_t, _opa, scalar) 1719e: 2200 movs r2, #0 171a0: 2193 movs r1, #147 ; 0x93 171a2: 0089 lsls r1, r1, #2 171a4: 4bfa ldr r3, [pc, #1000] ; (17590 ) 171a6: 4798 blx r3 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 171a8: 6824 ldr r4, [r4, #0] 171aa: 3450 adds r4, #80 ; 0x50 171ac: 2000 movs r0, #0 171ae: 4bf9 ldr r3, [pc, #996] ; (17594 ) 171b0: 4798 blx r3 171b2: 3014 adds r0, #20 171b4: 0080 lsls r0, r0, #2 171b6: 2340 movs r3, #64 ; 0x40 171b8: 33ff adds r3, #255 ; 0xff 171ba: 2201 movs r2, #1 171bc: 4298 cmp r0, r3 171be: d901 bls.n 171c4 171c0: f001 fa05 bl 185ce _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 171c4: 2101 movs r1, #1 171c6: 0020 movs r0, r4 171c8: 4bf3 ldr r3, [pc, #972] ; (17598 ) 171ca: 4798 blx r3 lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); 171cc: 4cf3 ldr r4, [pc, #972] ; (1759c ) 171ce: 6820 ldr r0, [r4, #0] 171d0: 3050 adds r0, #80 ; 0x50 _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_IMAGE, pattern_image, const void *, _ptr, scalar) 171d2: 4af3 ldr r2, [pc, #972] ; (175a0 ) 171d4: 21b7 movs r1, #183 ; 0xb7 171d6: 0049 lsls r1, r1, #1 171d8: 4df2 ldr r5, [pc, #968] ; (175a4 ) 171da: 47a8 blx r5 lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); 171dc: 6820 ldr r0, [r4, #0] 171de: 3050 adds r0, #80 ; 0x50 171e0: 4bf1 ldr r3, [pc, #964] ; (175a8 ) 171e2: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar) 171e4: 216a movs r1, #106 ; 0x6a 171e6: 31ff adds r1, #255 ; 0xff 171e8: 4bf0 ldr r3, [pc, #960] ; (175ac ) 171ea: 4798 blx r3 lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); 171ec: 4bf0 ldr r3, [pc, #960] ; (175b0 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 171ee: 689a ldr r2, [r3, #8] 171f0: 6820 ldr r0, [r4, #0] 171f2: 3050 adds r0, #80 ; 0x50 171f4: 49ef ldr r1, [pc, #956] ; (175b4 ) 171f6: 47a8 blx r5 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 171f8: 6824 ldr r4, [r4, #0] 171fa: 3450 adds r4, #80 ; 0x50 171fc: 2000 movs r0, #0 171fe: 4be5 ldr r3, [pc, #916] ; (17594 ) 17200: 4798 blx r3 17202: 0043 lsls r3, r0, #1 17204: 1818 adds r0, r3, r0 17206: 3050 adds r0, #80 ; 0x50 17208: 2340 movs r3, #64 ; 0x40 1720a: 33ff adds r3, #255 ; 0xff 1720c: 2201 movs r2, #1 1720e: 4298 cmp r0, r3 17210: d901 bls.n 17216 17212: f001 f9e7 bl 185e4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17216: 2112 movs r1, #18 17218: 0020 movs r0, r4 1721a: 4bdf ldr r3, [pc, #892] ; (17598 ) 1721c: 4798 blx r3 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1721e: 4bdf ldr r3, [pc, #892] ; (1759c ) 17220: 681c ldr r4, [r3, #0] 17222: 3450 adds r4, #80 ; 0x50 17224: 2000 movs r0, #0 17226: 4bdb ldr r3, [pc, #876] ; (17594 ) 17228: 4798 blx r3 1722a: 0043 lsls r3, r0, #1 1722c: 1818 adds r0, r3, r0 1722e: 3050 adds r0, #80 ; 0x50 17230: 2340 movs r3, #64 ; 0x40 17232: 33ff adds r3, #255 ; 0xff 17234: 2201 movs r2, #1 17236: 4298 cmp r0, r3 17238: d901 bls.n 1723e 1723a: f001 f9e0 bl 185fe _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1723e: 2113 movs r1, #19 17240: 0020 movs r0, r4 17242: 4bd5 ldr r3, [pc, #852] ; (17598 ) 17244: 4798 blx r3 lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 17246: 4bd5 ldr r3, [pc, #852] ; (1759c ) 17248: 681c ldr r4, [r3, #0] 1724a: 3450 adds r4, #80 ; 0x50 1724c: 2000 movs r0, #0 1724e: 4bd1 ldr r3, [pc, #836] ; (17594 ) 17250: 4798 blx r3 17252: 0043 lsls r3, r0, #1 17254: 1818 adds r0, r3, r0 17256: 3050 adds r0, #80 ; 0x50 17258: 2340 movs r3, #64 ; 0x40 1725a: 33ff adds r3, #255 ; 0xff 1725c: 2201 movs r2, #1 1725e: 4298 cmp r0, r3 17260: d901 bls.n 17266 17262: f001 f9d9 bl 18618 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17266: 2110 movs r1, #16 17268: 0020 movs r0, r4 1726a: 4bcb ldr r3, [pc, #812] ; (17598 ) 1726c: 4798 blx r3 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 1726e: 4bcb ldr r3, [pc, #812] ; (1759c ) 17270: 681c ldr r4, [r3, #0] 17272: 3450 adds r4, #80 ; 0x50 17274: 2000 movs r0, #0 17276: 4bc7 ldr r3, [pc, #796] ; (17594 ) 17278: 4798 blx r3 1727a: 0043 lsls r3, r0, #1 1727c: 1818 adds r0, r3, r0 1727e: 3050 adds r0, #80 ; 0x50 17280: 2340 movs r3, #64 ; 0x40 17282: 33ff adds r3, #255 ; 0xff 17284: 2201 movs r2, #1 17286: 4298 cmp r0, r3 17288: d901 bls.n 1728e 1728a: f001 f9d2 bl 18632 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1728e: 2111 movs r1, #17 17290: 0020 movs r0, r4 17292: 4dc1 ldr r5, [pc, #772] ; (17598 ) 17294: 47a8 blx r5 style_init_reset(&styles->kb_bg); 17296: 4cc1 ldr r4, [pc, #772] ; (1759c ) 17298: 6820 ldr r0, [r4, #0] 1729a: 3068 adds r0, #104 ; 0x68 1729c: 4bbb ldr r3, [pc, #748] ; (1758c ) 1729e: 4798 blx r3 lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); 172a0: 6820 ldr r0, [r4, #0] 172a2: 3068 adds r0, #104 ; 0x68 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 172a4: 2200 movs r2, #0 172a6: 2101 movs r1, #1 172a8: 47a8 blx r5 lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 172aa: 6824 ldr r4, [r4, #0] 172ac: 3468 adds r4, #104 ; 0x68 172ae: 2000 movs r0, #0 172b0: 4bb8 ldr r3, [pc, #736] ; (17594 ) 172b2: 4798 blx r3 172b4: 3014 adds r0, #20 172b6: 0080 lsls r0, r0, #2 172b8: 2340 movs r3, #64 ; 0x40 172ba: 33ff adds r3, #255 ; 0xff 172bc: 2201 movs r2, #1 172be: 4298 cmp r0, r3 172c0: d901 bls.n 172c6 172c2: f001 f9c3 bl 1864c _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 172c6: 2130 movs r1, #48 ; 0x30 172c8: 0020 movs r0, r4 172ca: 4db3 ldr r5, [pc, #716] ; (17598 ) 172cc: 47a8 blx r5 lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); 172ce: 4cb3 ldr r4, [pc, #716] ; (1759c ) 172d0: 6820 ldr r0, [r4, #0] 172d2: 3068 adds r0, #104 ; 0x68 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 172d4: 2202 movs r2, #2 172d6: 2131 movs r1, #49 ; 0x31 172d8: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 172da: 6820 ldr r0, [r4, #0] 172dc: 3068 adds r0, #104 ; 0x68 172de: 4bb4 ldr r3, [pc, #720] ; (175b0 ) 172e0: 699b ldr r3, [r3, #24] 172e2: 079b lsls r3, r3, #30 172e4: d501 bpl.n 172ea 172e6: f001 f9bc bl 18662 172ea: 2300 movs r3, #0 172ec: 2100 movs r1, #0 172ee: 2200 movs r2, #0 172f0: 0149 lsls r1, r1, #5 172f2: 02db lsls r3, r3, #11 172f4: 430a orrs r2, r1 172f6: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 172f8: 2139 movs r1, #57 ; 0x39 172fa: 4dac ldr r5, [pc, #688] ; (175ac ) 172fc: 47a8 blx r5 lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); 172fe: 4ca7 ldr r4, [pc, #668] ; (1759c ) 17300: 6820 ldr r0, [r4, #0] 17302: 3068 adds r0, #104 ; 0x68 17304: 4baa ldr r3, [pc, #680] ; (175b0 ) 17306: 88da ldrh r2, [r3, #6] 17308: 49ab ldr r1, [pc, #684] ; (175b8 ) 1730a: 47a8 blx r5 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1730c: 6824 ldr r4, [r4, #0] 1730e: 3468 adds r4, #104 ; 0x68 17310: 2000 movs r0, #0 17312: 4ba0 ldr r3, [pc, #640] ; (17594 ) 17314: 4798 blx r3 17316: 0083 lsls r3, r0, #2 17318: 1818 adds r0, r3, r0 1731a: 3050 adds r0, #80 ; 0x50 1731c: 2340 movs r3, #64 ; 0x40 1731e: 33ff adds r3, #255 ; 0xff 17320: 2201 movs r2, #1 17322: 4298 cmp r0, r3 17324: d901 bls.n 1732a 17326: f001 f9a5 bl 18674 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1732a: 2112 movs r1, #18 1732c: 0020 movs r0, r4 1732e: 4b9a ldr r3, [pc, #616] ; (17598 ) 17330: 4798 blx r3 lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17332: 4b9a ldr r3, [pc, #616] ; (1759c ) 17334: 681c ldr r4, [r3, #0] 17336: 3468 adds r4, #104 ; 0x68 17338: 2000 movs r0, #0 1733a: 4b96 ldr r3, [pc, #600] ; (17594 ) 1733c: 4798 blx r3 1733e: 0083 lsls r3, r0, #2 17340: 1818 adds r0, r3, r0 17342: 3050 adds r0, #80 ; 0x50 17344: 2340 movs r3, #64 ; 0x40 17346: 33ff adds r3, #255 ; 0xff 17348: 2201 movs r2, #1 1734a: 4298 cmp r0, r3 1734c: d901 bls.n 17352 1734e: f001 f99e bl 1868e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17352: 2113 movs r1, #19 17354: 0020 movs r0, r4 17356: 4b90 ldr r3, [pc, #576] ; (17598 ) 17358: 4798 blx r3 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1735a: 4b90 ldr r3, [pc, #576] ; (1759c ) 1735c: 681c ldr r4, [r3, #0] 1735e: 3468 adds r4, #104 ; 0x68 17360: 2000 movs r0, #0 17362: 4b8c ldr r3, [pc, #560] ; (17594 ) 17364: 4798 blx r3 17366: 0083 lsls r3, r0, #2 17368: 1818 adds r0, r3, r0 1736a: 3050 adds r0, #80 ; 0x50 1736c: 2340 movs r3, #64 ; 0x40 1736e: 33ff adds r3, #255 ; 0xff 17370: 2201 movs r2, #1 17372: 4298 cmp r0, r3 17374: d901 bls.n 1737a 17376: f001 f997 bl 186a8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1737a: 2110 movs r1, #16 1737c: 0020 movs r0, r4 1737e: 4b86 ldr r3, [pc, #536] ; (17598 ) 17380: 4798 blx r3 lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17382: 4b86 ldr r3, [pc, #536] ; (1759c ) 17384: 681c ldr r4, [r3, #0] 17386: 3468 adds r4, #104 ; 0x68 17388: 2000 movs r0, #0 1738a: 4b82 ldr r3, [pc, #520] ; (17594 ) 1738c: 4798 blx r3 1738e: 0083 lsls r3, r0, #2 17390: 1818 adds r0, r3, r0 17392: 3050 adds r0, #80 ; 0x50 17394: 2340 movs r3, #64 ; 0x40 17396: 33ff adds r3, #255 ; 0xff 17398: 2201 movs r2, #1 1739a: 4298 cmp r0, r3 1739c: d901 bls.n 173a2 1739e: f001 f990 bl 186c2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 173a2: 2111 movs r1, #17 173a4: 0020 movs r0, r4 173a6: 4b7c ldr r3, [pc, #496] ; (17598 ) 173a8: 4798 blx r3 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 173aa: 4b7c ldr r3, [pc, #496] ; (1759c ) 173ac: 681c ldr r4, [r3, #0] 173ae: 3468 adds r4, #104 ; 0x68 173b0: 2000 movs r0, #0 173b2: 4b78 ldr r3, [pc, #480] ; (17594 ) 173b4: 4798 blx r3 173b6: 0043 lsls r3, r0, #1 173b8: 1818 adds r0, r3, r0 173ba: 3050 adds r0, #80 ; 0x50 173bc: 2340 movs r3, #64 ; 0x40 173be: 33ff adds r3, #255 ; 0xff 173c0: 2201 movs r2, #1 173c2: 4298 cmp r0, r3 173c4: d901 bls.n 173ca 173c6: f001 f989 bl 186dc _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 173ca: 2114 movs r1, #20 173cc: 0020 movs r0, r4 173ce: 4b72 ldr r3, [pc, #456] ; (17598 ) 173d0: 4798 blx r3 style_init_reset(&styles->mbox_bg); 173d2: 4c72 ldr r4, [pc, #456] ; (1759c ) 173d4: 6820 ldr r0, [r4, #0] 173d6: 307c adds r0, #124 ; 0x7c 173d8: 4b6c ldr r3, [pc, #432] ; (1758c ) 173da: 4798 blx r3 lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 173dc: 6824 ldr r4, [r4, #0] 173de: 347c adds r4, #124 ; 0x7c 173e0: 2000 movs r0, #0 173e2: 4b6c ldr r3, [pc, #432] ; (17594 ) 173e4: 4798 blx r3 173e6: 2332 movs r3, #50 ; 0x32 173e8: 4358 muls r0, r3 173ea: 3050 adds r0, #80 ; 0x50 173ec: 2340 movs r3, #64 ; 0x40 173ee: 33ff adds r3, #255 ; 0xff 173f0: 2201 movs r2, #1 173f2: 4298 cmp r0, r3 173f4: d901 bls.n 173fa 173f6: f001 f97e bl 186f6 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_WIDTH, shadow_width, lv_style_int_t, _int, scalar) 173fa: 2150 movs r1, #80 ; 0x50 173fc: 0020 movs r0, r4 173fe: 4b66 ldr r3, [pc, #408] ; (17598 ) 17400: 4798 blx r3 lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 17402: 4b66 ldr r3, [pc, #408] ; (1759c ) 17404: 6818 ldr r0, [r3, #0] 17406: 307c adds r0, #124 ; 0x7c 17408: 4b69 ldr r3, [pc, #420] ; (175b0 ) 1740a: 699b ldr r3, [r3, #24] 1740c: 079b lsls r3, r3, #30 1740e: d401 bmi.n 17414 17410: f001 f97e bl 18710 17414: 2230 movs r2, #48 ; 0x30 17416: 2318 movs r3, #24 17418: 0152 lsls r2, r2, #5 1741a: 02d9 lsls r1, r3, #11 1741c: 431a orrs r2, r3 1741e: 430a orrs r2, r1 _LV_OBJ_STYLE_SET_GET_DECLARE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar) 17420: 2159 movs r1, #89 ; 0x59 17422: 4b62 ldr r3, [pc, #392] ; (175ac ) 17424: 4798 blx r3 style_init_reset(&styles->sb); 17426: 4c5d ldr r4, [pc, #372] ; (1759c ) 17428: 6820 ldr r0, [r4, #0] 1742a: 3080 adds r0, #128 ; 0x80 1742c: 4b57 ldr r3, [pc, #348] ; (1758c ) 1742e: 4798 blx r3 lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); 17430: 6820 ldr r0, [r4, #0] 17432: 3080 adds r0, #128 ; 0x80 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17434: 22ff movs r2, #255 ; 0xff 17436: 212c movs r1, #44 ; 0x2c 17438: 4b55 ldr r3, [pc, #340] ; (17590 ) 1743a: 4798 blx r3 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 1743c: 6820 ldr r0, [r4, #0] 1743e: 3080 adds r0, #128 ; 0x80 17440: 4b5b ldr r3, [pc, #364] ; (175b0 ) 17442: 699b ldr r3, [r3, #24] 17444: 079b lsls r3, r3, #30 17446: d501 bpl.n 1744c 17448: f001 f966 bl 18718 1744c: 230e movs r3, #14 1744e: 211f movs r1, #31 17450: 2210 movs r2, #16 17452: 0149 lsls r1, r1, #5 17454: 02db lsls r3, r3, #11 17456: 430a orrs r2, r1 17458: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 1745a: 2129 movs r1, #41 ; 0x29 1745c: 4b53 ldr r3, [pc, #332] ; (175ac ) 1745e: 4798 blx r3 lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17460: 4c4e ldr r4, [pc, #312] ; (1759c ) 17462: 6820 ldr r0, [r4, #0] 17464: 3080 adds r0, #128 ; 0x80 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17466: 4a55 ldr r2, [pc, #340] ; (175bc ) 17468: 2101 movs r1, #1 1746a: 4b4b ldr r3, [pc, #300] ; (17598 ) 1746c: 4798 blx r3 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 1746e: 6824 ldr r4, [r4, #0] 17470: 3480 adds r4, #128 ; 0x80 17472: 2000 movs r0, #0 17474: 4b47 ldr r3, [pc, #284] ; (17594 ) 17476: 4798 blx r3 17478: 00c3 lsls r3, r0, #3 1747a: 1a18 subs r0, r3, r0 1747c: 3050 adds r0, #80 ; 0x50 1747e: 2340 movs r3, #64 ; 0x40 17480: 33ff adds r3, #255 ; 0xff 17482: 2201 movs r2, #1 17484: 4298 cmp r0, r3 17486: d901 bls.n 1748c 17488: f001 f94b bl 18722 _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 1748c: 2103 movs r1, #3 1748e: 0020 movs r0, r4 17490: 4b41 ldr r3, [pc, #260] ; (17598 ) 17492: 4798 blx r3 lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 17494: 4b41 ldr r3, [pc, #260] ; (1759c ) 17496: 681c ldr r4, [r3, #0] 17498: 3480 adds r4, #128 ; 0x80 1749a: 2000 movs r0, #0 1749c: 4b3d ldr r3, [pc, #244] ; (17594 ) 1749e: 4798 blx r3 174a0: 00c3 lsls r3, r0, #3 174a2: 1a18 subs r0, r3, r0 174a4: 3050 adds r0, #80 ; 0x50 174a6: 2340 movs r3, #64 ; 0x40 174a8: 33ff adds r3, #255 ; 0xff 174aa: 2201 movs r2, #1 174ac: 4298 cmp r0, r3 174ae: d901 bls.n 174b4 174b0: f001 f943 bl 1873a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 174b4: 2113 movs r1, #19 174b6: 0020 movs r0, r4 174b8: 4b37 ldr r3, [pc, #220] ; (17598 ) 174ba: 4798 blx r3 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 174bc: 4b37 ldr r3, [pc, #220] ; (1759c ) 174be: 681c ldr r4, [r3, #0] 174c0: 3480 adds r4, #128 ; 0x80 174c2: 2000 movs r0, #0 174c4: 4b33 ldr r3, [pc, #204] ; (17594 ) 174c6: 4798 blx r3 174c8: 00c3 lsls r3, r0, #3 174ca: 1a18 subs r0, r3, r0 174cc: 3050 adds r0, #80 ; 0x50 174ce: 2340 movs r3, #64 ; 0x40 174d0: 33ff adds r3, #255 ; 0xff 174d2: 2201 movs r2, #1 174d4: 4298 cmp r0, r3 174d6: d901 bls.n 174dc 174d8: f001 f93b bl 18752 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 174dc: 2111 movs r1, #17 174de: 0020 movs r0, r4 174e0: 4b2d ldr r3, [pc, #180] ; (17598 ) 174e2: 4798 blx r3 style_init_reset(&styles->edge_flash); 174e4: 4c2d ldr r4, [pc, #180] ; (1759c ) 174e6: 6820 ldr r0, [r4, #0] 174e8: 3084 adds r0, #132 ; 0x84 174ea: 4d28 ldr r5, [pc, #160] ; (1758c ) 174ec: 47a8 blx r5 lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); 174ee: 6820 ldr r0, [r4, #0] 174f0: 3084 adds r0, #132 ; 0x84 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 174f2: 22ff movs r2, #255 ; 0xff 174f4: 212c movs r1, #44 ; 0x2c 174f6: 4b26 ldr r3, [pc, #152] ; (17590 ) 174f8: 4798 blx r3 lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); 174fa: 6820 ldr r0, [r4, #0] 174fc: 3084 adds r0, #132 ; 0x84 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 174fe: 4b30 ldr r3, [pc, #192] ; (175c0 ) 17500: 881a ldrh r2, [r3, #0] 17502: 2129 movs r1, #41 ; 0x29 17504: 4b29 ldr r3, [pc, #164] ; (175ac ) 17506: 4798 blx r3 style_init_reset(&styles->ta_cursor); 17508: 6820 ldr r0, [r4, #0] 1750a: 30b4 adds r0, #180 ; 0xb4 1750c: 47a8 blx r5 lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 1750e: 6820 ldr r0, [r4, #0] 17510: 30b4 adds r0, #180 ; 0xb4 17512: 4b27 ldr r3, [pc, #156] ; (175b0 ) 17514: 699b ldr r3, [r3, #24] 17516: 079b lsls r3, r3, #30 17518: d501 bpl.n 1751e 1751a: f001 f926 bl 1876a 1751e: 2314 movs r3, #20 17520: 212a movs r1, #42 ; 0x2a 17522: 2215 movs r2, #21 17524: 0149 lsls r1, r1, #5 17526: 02db lsls r3, r3, #11 17528: 430a orrs r2, r1 1752a: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1752c: 2139 movs r1, #57 ; 0x39 1752e: 4b1f ldr r3, [pc, #124] ; (175ac ) 17530: 4798 blx r3 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 17532: 4b1a ldr r3, [pc, #104] ; (1759c ) 17534: 681c ldr r4, [r3, #0] 17536: 34b4 adds r4, #180 ; 0xb4 17538: 2000 movs r0, #0 1753a: 4b16 ldr r3, [pc, #88] ; (17594 ) 1753c: 4798 blx r3 1753e: 3028 adds r0, #40 ; 0x28 17540: 0040 lsls r0, r0, #1 17542: 2340 movs r3, #64 ; 0x40 17544: 33ff adds r3, #255 ; 0xff 17546: 2201 movs r2, #1 17548: 4298 cmp r0, r3 1754a: d901 bls.n 17550 1754c: f001 f912 bl 18774 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17550: 2130 movs r1, #48 ; 0x30 17552: 0020 movs r0, r4 17554: 4b10 ldr r3, [pc, #64] ; (17598 ) 17556: 4798 blx r3 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 17558: 4b10 ldr r3, [pc, #64] ; (1759c ) 1755a: 681c ldr r4, [r3, #0] 1755c: 34b4 adds r4, #180 ; 0xb4 1755e: 2000 movs r0, #0 17560: 4b0c ldr r3, [pc, #48] ; (17594 ) 17562: 4798 blx r3 17564: 3050 adds r0, #80 ; 0x50 17566: 2340 movs r3, #64 ; 0x40 17568: 33ff adds r3, #255 ; 0xff 1756a: 2201 movs r2, #1 1756c: 4298 cmp r0, r3 1756e: d901 bls.n 17574 17570: f001 f90b bl 1878a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17574: 2112 movs r1, #18 17576: 0020 movs r0, r4 17578: 4d07 ldr r5, [pc, #28] ; (17598 ) 1757a: 47a8 blx r5 lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); 1757c: 4c07 ldr r4, [pc, #28] ; (1759c ) 1757e: 6820 ldr r0, [r4, #0] 17580: 30b4 adds r0, #180 ; 0xb4 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17582: 2204 movs r2, #4 17584: 2131 movs r1, #49 ; 0x31 17586: 47a8 blx r5 17588: e01c b.n 175c4 1758a: 46c0 nop ; (mov r8, r8) 1758c: 00014911 .word 0x00014911 17590: 000062bd .word 0x000062bd 17594: 00010dd1 .word 0x00010dd1 17598: 00005fad .word 0x00005fad 1759c: 20004c4c .word 0x20004c4c 175a0: 0002ada8 .word 0x0002ada8 175a4: 00006431 .word 0x00006431 175a8: 0002ada0 .word 0x0002ada0 175ac: 00006135 .word 0x00006135 175b0: 20004c50 .word 0x20004c50 175b4: 0000818e .word 0x0000818e 175b8: 00000439 .word 0x00000439 175bc: 00007fff .word 0x00007fff 175c0: 0002ad9c .word 0x0002ad9c style_init_reset(&styles->ta_placeholder); 175c4: 6820 ldr r0, [r4, #0] 175c6: 30b8 adds r0, #184 ; 0xb8 175c8: 4bfb ldr r3, [pc, #1004] ; (179b8 ) 175ca: 4798 blx r3 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 175cc: 6820 ldr r0, [r4, #0] 175ce: 30b8 adds r0, #184 ; 0xb8 175d0: 4bfa ldr r3, [pc, #1000] ; (179bc ) 175d2: 699b ldr r3, [r3, #24] 175d4: 079b lsls r3, r3, #30 175d6: d501 bpl.n 175dc 175d8: f001 f8e1 bl 1879e 175dc: 2314 movs r3, #20 175de: 212b movs r1, #43 ; 0x2b 175e0: 2217 movs r2, #23 175e2: 0149 lsls r1, r1, #5 175e4: 02db lsls r3, r3, #11 175e6: 430a orrs r2, r1 175e8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 175ea: 4ef5 ldr r6, [pc, #980] ; (179c0 ) 175ec: 0031 movs r1, r6 175ee: 4df5 ldr r5, [pc, #980] ; (179c4 ) 175f0: 47a8 blx r5 style_init_reset(&styles->spinbox_cursor); 175f2: 4cf5 ldr r4, [pc, #980] ; (179c8 ) 175f4: 6820 ldr r0, [r4, #0] 175f6: 3098 adds r0, #152 ; 0x98 175f8: 4bef ldr r3, [pc, #956] ; (179b8 ) 175fa: 4798 blx r3 lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); 175fc: 6820 ldr r0, [r4, #0] 175fe: 3098 adds r0, #152 ; 0x98 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17600: 22ff movs r2, #255 ; 0xff 17602: 212c movs r1, #44 ; 0x2c 17604: 4bf1 ldr r3, [pc, #964] ; (179cc ) 17606: 4798 blx r3 lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); 17608: 6820 ldr r0, [r4, #0] 1760a: 3098 adds r0, #152 ; 0x98 1760c: 4beb ldr r3, [pc, #940] ; (179bc ) 1760e: 889a ldrh r2, [r3, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17610: 2129 movs r1, #41 ; 0x29 17612: 47a8 blx r5 lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); 17614: 6820 ldr r0, [r4, #0] 17616: 3098 adds r0, #152 ; 0x98 17618: 4bed ldr r3, [pc, #948] ; (179d0 ) 1761a: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 1761c: 0031 movs r1, r6 1761e: 47a8 blx r5 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 17620: 6824 ldr r4, [r4, #0] 17622: 3498 adds r4, #152 ; 0x98 17624: 2000 movs r0, #0 17626: 4beb ldr r3, [pc, #940] ; (179d4 ) 17628: 4798 blx r3 1762a: 2364 movs r3, #100 ; 0x64 1762c: 4358 muls r0, r3 1762e: 3050 adds r0, #80 ; 0x50 17630: 2340 movs r3, #64 ; 0x40 17632: 33ff adds r3, #255 ; 0xff 17634: 2201 movs r2, #1 17636: 4298 cmp r0, r3 17638: d901 bls.n 1763e 1763a: f001 f8b5 bl 187a8 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1763e: 2110 movs r1, #16 17640: 0020 movs r0, r4 17642: 4be5 ldr r3, [pc, #916] ; (179d8 ) 17644: 4798 blx r3 lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 17646: 4be0 ldr r3, [pc, #896] ; (179c8 ) 17648: 681c ldr r4, [r3, #0] 1764a: 3498 adds r4, #152 ; 0x98 1764c: 2000 movs r0, #0 1764e: 4be1 ldr r3, [pc, #900] ; (179d4 ) 17650: 4798 blx r3 17652: 2364 movs r3, #100 ; 0x64 17654: 4358 muls r0, r3 17656: 3050 adds r0, #80 ; 0x50 17658: 2340 movs r3, #64 ; 0x40 1765a: 33ff adds r3, #255 ; 0xff 1765c: 2201 movs r2, #1 1765e: 4298 cmp r0, r3 17660: d901 bls.n 17666 17662: f001 f8ae bl 187c2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17666: 2111 movs r1, #17 17668: 0020 movs r0, r4 1766a: 4ddb ldr r5, [pc, #876] ; (179d8 ) 1766c: 47a8 blx r5 style_init_reset(&styles->list_bg); 1766e: 4cd6 ldr r4, [pc, #856] ; (179c8 ) 17670: 6820 ldr r0, [r4, #0] 17672: 3074 adds r0, #116 ; 0x74 17674: 4ed0 ldr r6, [pc, #832] ; (179b8 ) 17676: 47b0 blx r6 lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); 17678: 6820 ldr r0, [r4, #0] 1767a: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 1767c: 2201 movs r2, #1 1767e: 2102 movs r1, #2 17680: 47a8 blx r5 lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); 17682: 6820 ldr r0, [r4, #0] 17684: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17686: 2200 movs r2, #0 17688: 2112 movs r1, #18 1768a: 47a8 blx r5 lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); 1768c: 6820 ldr r0, [r4, #0] 1768e: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17690: 2200 movs r2, #0 17692: 2113 movs r1, #19 17694: 47a8 blx r5 lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); 17696: 6820 ldr r0, [r4, #0] 17698: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1769a: 2200 movs r2, #0 1769c: 2110 movs r1, #16 1769e: 47a8 blx r5 lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); 176a0: 6820 ldr r0, [r4, #0] 176a2: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 176a4: 2200 movs r2, #0 176a6: 2111 movs r1, #17 176a8: 47a8 blx r5 lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); 176aa: 6820 ldr r0, [r4, #0] 176ac: 3074 adds r0, #116 ; 0x74 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 176ae: 2200 movs r2, #0 176b0: 2114 movs r1, #20 176b2: 47a8 blx r5 style_init_reset(&styles->list_btn); 176b4: 6820 ldr r0, [r4, #0] 176b6: 3078 adds r0, #120 ; 0x78 176b8: 47b0 blx r6 lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); 176ba: 6820 ldr r0, [r4, #0] 176bc: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 176be: 22ff movs r2, #255 ; 0xff 176c0: 212c movs r1, #44 ; 0x2c 176c2: 4bc2 ldr r3, [pc, #776] ; (179cc ) 176c4: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 176c6: 6820 ldr r0, [r4, #0] 176c8: 3078 adds r0, #120 ; 0x78 176ca: 4bbc ldr r3, [pc, #752] ; (179bc ) 176cc: 699b ldr r3, [r3, #24] 176ce: 079b lsls r3, r3, #30 176d0: d501 bpl.n 176d6 176d2: f001 f883 bl 187dc 176d6: 230b movs r3, #11 176d8: 2118 movs r1, #24 176da: 220e movs r2, #14 176dc: 0149 lsls r1, r1, #5 176de: 02db lsls r3, r3, #11 176e0: 430a orrs r2, r1 176e2: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 176e4: 2129 movs r1, #41 ; 0x29 176e6: 4bb7 ldr r3, [pc, #732] ; (179c4 ) 176e8: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 176ea: 4bb7 ldr r3, [pc, #732] ; (179c8 ) 176ec: 6818 ldr r0, [r3, #0] 176ee: 3078 adds r0, #120 ; 0x78 176f0: 4bb2 ldr r3, [pc, #712] ; (179bc ) 176f2: 699b ldr r3, [r3, #24] 176f4: 079b lsls r3, r3, #30 176f6: d501 bpl.n 176fc 176f8: f001 f875 bl 187e6 176fc: 2309 movs r3, #9 176fe: 2113 movs r1, #19 17700: 220a movs r2, #10 17702: 0149 lsls r1, r1, #5 17704: 02db lsls r3, r3, #11 17706: 430a orrs r2, r1 17708: 431a orrs r2, r3 1770a: 49b4 ldr r1, [pc, #720] ; (179dc ) 1770c: 4bad ldr r3, [pc, #692] ; (179c4 ) 1770e: 4798 blx r3 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 17710: 4bad ldr r3, [pc, #692] ; (179c8 ) 17712: 6818 ldr r0, [r3, #0] 17714: 3078 adds r0, #120 ; 0x78 17716: 4ba9 ldr r3, [pc, #676] ; (179bc ) 17718: 699b ldr r3, [r3, #24] 1771a: 079b lsls r3, r3, #30 1771c: d501 bpl.n 17722 1771e: f001 f867 bl 187f0 17722: 230b movs r3, #11 17724: 2118 movs r1, #24 17726: 220e movs r2, #14 17728: 0149 lsls r1, r1, #5 1772a: 02db lsls r3, r3, #11 1772c: 430a orrs r2, r1 1772e: 431a orrs r2, r3 17730: 49ab ldr r1, [pc, #684] ; (179e0 ) 17732: 4ea4 ldr r6, [pc, #656] ; (179c4 ) 17734: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); 17736: 4da4 ldr r5, [pc, #656] ; (179c8 ) 17738: 6828 ldr r0, [r5, #0] 1773a: 3078 adds r0, #120 ; 0x78 1773c: 4c9f ldr r4, [pc, #636] ; (179bc ) 1773e: 88a2 ldrh r2, [r4, #4] 17740: 212a movs r1, #42 ; 0x2a 17742: 31ff adds r1, #255 ; 0xff 17744: 47b0 blx r6 lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); 17746: 682f ldr r7, [r5, #0] 17748: 3778 adds r7, #120 ; 0x78 1774a: 88a0 ldrh r0, [r4, #4] 1774c: 2133 movs r1, #51 ; 0x33 1774e: 4ba5 ldr r3, [pc, #660] ; (179e4 ) 17750: 4798 blx r3 17752: 1c02 adds r2, r0, #0 17754: 49a4 ldr r1, [pc, #656] ; (179e8 ) 17756: 0038 movs r0, r7 17758: 47b0 blx r6 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1775a: 6828 ldr r0, [r5, #0] 1775c: 3078 adds r0, #120 ; 0x78 1775e: 69a3 ldr r3, [r4, #24] 17760: 079b lsls r3, r3, #30 17762: d501 bpl.n 17768 17764: f001 f849 bl 187fa 17768: 231f movs r3, #31 1776a: 213f movs r1, #63 ; 0x3f 1776c: 221f movs r2, #31 1776e: 0149 lsls r1, r1, #5 17770: 02db lsls r3, r3, #11 17772: 430a orrs r2, r1 17774: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17776: 4992 ldr r1, [pc, #584] ; (179c0 ) 17778: 4d92 ldr r5, [pc, #584] ; (179c4 ) 1777a: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 1777c: 4c92 ldr r4, [pc, #584] ; (179c8 ) 1777e: 6820 ldr r0, [r4, #0] 17780: 3078 adds r0, #120 ; 0x78 17782: 2201 movs r2, #1 17784: 4252 negs r2, r2 17786: 4999 ldr r1, [pc, #612] ; (179ec ) 17788: 47a8 blx r5 lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 1778a: 6820 ldr r0, [r4, #0] 1778c: 3078 adds r0, #120 ; 0x78 1778e: 4b8b ldr r3, [pc, #556] ; (179bc ) 17790: 699b ldr r3, [r3, #24] 17792: 079b lsls r3, r3, #30 17794: d501 bpl.n 1779a 17796: f001 f835 bl 18804 1779a: 2226 movs r2, #38 ; 0x26 1779c: 2313 movs r3, #19 1779e: 0152 lsls r2, r2, #5 177a0: 02d9 lsls r1, r3, #11 177a2: 431a orrs r2, r3 177a4: 430a orrs r2, r1 177a6: 4992 ldr r1, [pc, #584] ; (179f0 ) 177a8: 4b86 ldr r3, [pc, #536] ; (179c4 ) 177aa: 4798 blx r3 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 177ac: 4b86 ldr r3, [pc, #536] ; (179c8 ) 177ae: 6818 ldr r0, [r3, #0] 177b0: 3078 adds r0, #120 ; 0x78 177b2: 4b82 ldr r3, [pc, #520] ; (179bc ) 177b4: 699b ldr r3, [r3, #24] 177b6: 079b lsls r3, r3, #30 177b8: d501 bpl.n 177be 177ba: f001 f827 bl 1880c 177be: 231f movs r3, #31 177c0: 213f movs r1, #63 ; 0x3f 177c2: 221f movs r2, #31 177c4: 0149 lsls r1, r1, #5 177c6: 02db lsls r3, r3, #11 177c8: 430a orrs r2, r1 177ca: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 177cc: 4989 ldr r1, [pc, #548] ; (179f4 ) 177ce: 4d7d ldr r5, [pc, #500] ; (179c4 ) 177d0: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); 177d2: 4c7d ldr r4, [pc, #500] ; (179c8 ) 177d4: 6820 ldr r0, [r4, #0] 177d6: 3078 adds r0, #120 ; 0x78 177d8: 2201 movs r2, #1 177da: 4252 negs r2, r2 177dc: 4986 ldr r1, [pc, #536] ; (179f8 ) 177de: 47a8 blx r5 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 177e0: 6820 ldr r0, [r4, #0] 177e2: 3078 adds r0, #120 ; 0x78 177e4: 4b75 ldr r3, [pc, #468] ; (179bc ) 177e6: 699b ldr r3, [r3, #24] 177e8: 079b lsls r3, r3, #30 177ea: d501 bpl.n 177f0 177ec: f001 f813 bl 18816 177f0: 2226 movs r2, #38 ; 0x26 177f2: 2313 movs r3, #19 177f4: 0152 lsls r2, r2, #5 177f6: 02d9 lsls r1, r3, #11 177f8: 431a orrs r2, r3 177fa: 430a orrs r2, r1 177fc: 497f ldr r1, [pc, #508] ; (179fc ) 177fe: 4b71 ldr r3, [pc, #452] ; (179c4 ) 17800: 4798 blx r3 lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 17802: 4c71 ldr r4, [pc, #452] ; (179c8 ) 17804: 6820 ldr r0, [r4, #0] 17806: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17808: 2201 movs r2, #1 1780a: 2131 movs r1, #49 ; 0x31 1780c: 4b72 ldr r3, [pc, #456] ; (179d8 ) 1780e: 4798 blx r3 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 17810: 6820 ldr r0, [r4, #0] 17812: 3078 adds r0, #120 ; 0x78 17814: 4b69 ldr r3, [pc, #420] ; (179bc ) 17816: 699b ldr r3, [r3, #24] 17818: 079b lsls r3, r3, #30 1781a: d501 bpl.n 17820 1781c: f000 ffff bl 1881e 17820: 2310 movs r3, #16 17822: 2122 movs r1, #34 ; 0x22 17824: 2212 movs r2, #18 17826: 0149 lsls r1, r1, #5 17828: 02db lsls r3, r3, #11 1782a: 430a orrs r2, r1 1782c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 1782e: 2139 movs r1, #57 ; 0x39 17830: 4d64 ldr r5, [pc, #400] ; (179c4 ) 17832: 47a8 blx r5 lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); 17834: 4c64 ldr r4, [pc, #400] ; (179c8 ) 17836: 6820 ldr r0, [r4, #0] 17838: 3078 adds r0, #120 ; 0x78 1783a: 4b60 ldr r3, [pc, #384] ; (179bc ) 1783c: 889a ldrh r2, [r3, #4] 1783e: 4970 ldr r1, [pc, #448] ; (17a00 ) 17840: 47a8 blx r5 lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, 1); 17842: 6820 ldr r0, [r4, #0] 17844: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17846: 2201 movs r2, #1 17848: 2130 movs r1, #48 ; 0x30 1784a: 4b63 ldr r3, [pc, #396] ; (179d8 ) 1784c: 4798 blx r3 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1784e: 6824 ldr r4, [r4, #0] 17850: 3478 adds r4, #120 ; 0x78 17852: 2000 movs r0, #0 17854: 4b6b ldr r3, [pc, #428] ; (17a04 ) 17856: 4798 blx r3 17858: 2801 cmp r0, #1 1785a: d801 bhi.n 17860 1785c: f000 ffe4 bl 18828 17860: 2000 movs r0, #0 17862: 4b5c ldr r3, [pc, #368] ; (179d4 ) 17864: 4798 blx r3 17866: 0103 lsls r3, r0, #4 17868: 1a1b subs r3, r3, r0 1786a: 005b lsls r3, r3, #1 1786c: 3350 adds r3, #80 ; 0x50 1786e: 2140 movs r1, #64 ; 0x40 17870: 31ff adds r1, #255 ; 0xff 17872: 2201 movs r2, #1 17874: 428b cmp r3, r1 17876: d901 bls.n 1787c 17878: f000 ffef bl 1885a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1787c: 2112 movs r1, #18 1787e: 0020 movs r0, r4 17880: 4b55 ldr r3, [pc, #340] ; (179d8 ) 17882: 4798 blx r3 lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 17884: 4b50 ldr r3, [pc, #320] ; (179c8 ) 17886: 681c ldr r4, [r3, #0] 17888: 3478 adds r4, #120 ; 0x78 1788a: 2000 movs r0, #0 1788c: 4b5d ldr r3, [pc, #372] ; (17a04 ) 1788e: 4798 blx r3 17890: 2801 cmp r0, #1 17892: d801 bhi.n 17898 17894: f000 ffee bl 18874 17898: 2000 movs r0, #0 1789a: 4b4e ldr r3, [pc, #312] ; (179d4 ) 1789c: 4798 blx r3 1789e: 0103 lsls r3, r0, #4 178a0: 1a1b subs r3, r3, r0 178a2: 005b lsls r3, r3, #1 178a4: 3350 adds r3, #80 ; 0x50 178a6: 2140 movs r1, #64 ; 0x40 178a8: 31ff adds r1, #255 ; 0xff 178aa: 2201 movs r2, #1 178ac: 428b cmp r3, r1 178ae: d901 bls.n 178b4 178b0: f000 fff9 bl 188a6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 178b4: 2113 movs r1, #19 178b6: 0020 movs r0, r4 178b8: 4b47 ldr r3, [pc, #284] ; (179d8 ) 178ba: 4798 blx r3 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 178bc: 4b42 ldr r3, [pc, #264] ; (179c8 ) 178be: 681c ldr r4, [r3, #0] 178c0: 3478 adds r4, #120 ; 0x78 178c2: 2000 movs r0, #0 178c4: 4b4f ldr r3, [pc, #316] ; (17a04 ) 178c6: 4798 blx r3 178c8: 2801 cmp r0, #1 178ca: d801 bhi.n 178d0 178cc: f000 fff8 bl 188c0 178d0: 2000 movs r0, #0 178d2: 4b40 ldr r3, [pc, #256] ; (179d4 ) 178d4: 4798 blx r3 178d6: 0103 lsls r3, r0, #4 178d8: 1a1b subs r3, r3, r0 178da: 005b lsls r3, r3, #1 178dc: 3350 adds r3, #80 ; 0x50 178de: 2140 movs r1, #64 ; 0x40 178e0: 31ff adds r1, #255 ; 0xff 178e2: 2201 movs r2, #1 178e4: 428b cmp r3, r1 178e6: d901 bls.n 178ec 178e8: f001 f803 bl 188f2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 178ec: 2110 movs r1, #16 178ee: 0020 movs r0, r4 178f0: 4b39 ldr r3, [pc, #228] ; (179d8 ) 178f2: 4798 blx r3 lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 178f4: 4b34 ldr r3, [pc, #208] ; (179c8 ) 178f6: 681c ldr r4, [r3, #0] 178f8: 3478 adds r4, #120 ; 0x78 178fa: 2000 movs r0, #0 178fc: 4b41 ldr r3, [pc, #260] ; (17a04 ) 178fe: 4798 blx r3 17900: 2801 cmp r0, #1 17902: d801 bhi.n 17908 17904: f001 f802 bl 1890c 17908: 2000 movs r0, #0 1790a: 4b32 ldr r3, [pc, #200] ; (179d4 ) 1790c: 4798 blx r3 1790e: 0103 lsls r3, r0, #4 17910: 1a1b subs r3, r3, r0 17912: 005b lsls r3, r3, #1 17914: 3350 adds r3, #80 ; 0x50 17916: 2140 movs r1, #64 ; 0x40 17918: 31ff adds r1, #255 ; 0xff 1791a: 2201 movs r2, #1 1791c: 428b cmp r3, r1 1791e: d901 bls.n 17924 17920: f001 f80d bl 1893e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17924: 2111 movs r1, #17 17926: 0020 movs r0, r4 17928: 4b2b ldr r3, [pc, #172] ; (179d8 ) 1792a: 4798 blx r3 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1792c: 4b26 ldr r3, [pc, #152] ; (179c8 ) 1792e: 681c ldr r4, [r3, #0] 17930: 3478 adds r4, #120 ; 0x78 17932: 2000 movs r0, #0 17934: 4b33 ldr r3, [pc, #204] ; (17a04 ) 17936: 4798 blx r3 17938: 2801 cmp r0, #1 1793a: d801 bhi.n 17940 1793c: f001 f80c bl 18958 17940: 2000 movs r0, #0 17942: 4b24 ldr r3, [pc, #144] ; (179d4 ) 17944: 4798 blx r3 17946: 0103 lsls r3, r0, #4 17948: 1a1b subs r3, r3, r0 1794a: 005b lsls r3, r3, #1 1794c: 3350 adds r3, #80 ; 0x50 1794e: 2140 movs r1, #64 ; 0x40 17950: 31ff adds r1, #255 ; 0xff 17952: 2201 movs r2, #1 17954: 428b cmp r3, r1 17956: d901 bls.n 1795c 17958: f001 f817 bl 1898a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 1795c: 2114 movs r1, #20 1795e: 0020 movs r0, r4 17960: 4b1d ldr r3, [pc, #116] ; (179d8 ) 17962: 4798 blx r3 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 17964: 4b18 ldr r3, [pc, #96] ; (179c8 ) 17966: 681c ldr r4, [r3, #0] 17968: 3478 adds r4, #120 ; 0x78 1796a: 2000 movs r0, #0 1796c: 4b25 ldr r3, [pc, #148] ; (17a04 ) 1796e: 4798 blx r3 17970: 2801 cmp r0, #1 17972: d801 bhi.n 17978 17974: f001 f816 bl 189a4 17978: 2000 movs r0, #0 1797a: 4b16 ldr r3, [pc, #88] ; (179d4 ) 1797c: 4798 blx r3 1797e: 0103 lsls r3, r0, #4 17980: 1a18 subs r0, r3, r0 17982: 0040 lsls r0, r0, #1 17984: 3050 adds r0, #80 ; 0x50 17986: 2340 movs r3, #64 ; 0x40 17988: 33ff adds r3, #255 ; 0xff 1798a: 4298 cmp r0, r3 1798c: d901 bls.n 17992 1798e: f001 f824 bl 189da 17992: 2201 movs r2, #1 17994: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 17996: 2104 movs r1, #4 17998: 0020 movs r0, r4 1799a: 4d0f ldr r5, [pc, #60] ; (179d8 ) 1799c: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, 0); 1799e: 4c0a ldr r4, [pc, #40] ; (179c8 ) 179a0: 6820 ldr r0, [r4, #0] 179a2: 3078 adds r0, #120 ; 0x78 179a4: 2200 movs r2, #0 179a6: 4918 ldr r1, [pc, #96] ; (17a08 ) 179a8: 47a8 blx r5 lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, 0); 179aa: 6820 ldr r0, [r4, #0] 179ac: 3078 adds r0, #120 ; 0x78 179ae: 2200 movs r2, #0 179b0: 2182 movs r1, #130 ; 0x82 179b2: 0049 lsls r1, r1, #1 179b4: 47a8 blx r5 179b6: e029 b.n 17a0c 179b8: 00014911 .word 0x00014911 179bc: 20004c50 .word 0x20004c50 179c0: 00008089 .word 0x00008089 179c4: 00006135 .word 0x00006135 179c8: 20004c4c .word 0x20004c4c 179cc: 000062bd .word 0x000062bd 179d0: 0002ada0 .word 0x0002ada0 179d4: 00010dd1 .word 0x00010dd1 179d8: 00005fad .word 0x00005fad 179dc: 00001029 .word 0x00001029 179e0: 00002029 .word 0x00002029 179e4: 00011ad9 .word 0x00011ad9 179e8: 00001129 .word 0x00001129 179ec: 00008189 .word 0x00008189 179f0: 0000a089 .word 0x0000a089 179f4: 000080a9 .word 0x000080a9 179f8: 000081a9 .word 0x000081a9 179fc: 0000a0a9 .word 0x0000a0a9 17a00: 00000239 .word 0x00000239 17a04: 00010ded .word 0x00010ded 17a08: 00001004 .word 0x00001004 lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, 0); 17a0c: 6820 ldr r0, [r4, #0] 17a0e: 3078 adds r0, #120 ; 0x78 17a10: 2200 movs r2, #0 17a12: 49fa ldr r1, [pc, #1000] ; (17dfc ) 17a14: 47a8 blx r5 lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); 17a16: 6820 ldr r0, [r4, #0] 17a18: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_TIME, transition_time, lv_style_int_t, _int, scalar) 17a1a: 2296 movs r2, #150 ; 0x96 17a1c: 21b0 movs r1, #176 ; 0xb0 17a1e: 47a8 blx r5 lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); 17a20: 6820 ldr r0, [r4, #0] 17a22: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t, _int, scalar) 17a24: 2229 movs r2, #41 ; 0x29 17a26: 21b7 movs r1, #183 ; 0xb7 17a28: 47a8 blx r5 lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); 17a2a: 6820 ldr r0, [r4, #0] 17a2c: 3078 adds r0, #120 ; 0x78 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t, _int, scalar) 17a2e: 2204 movs r2, #4 17a30: 21b6 movs r1, #182 ; 0xb6 17a32: 47a8 blx r5 style_init_reset(&styles->ddlist_page); 17a34: 6820 ldr r0, [r4, #0] 17a36: 3054 adds r0, #84 ; 0x54 17a38: 4bf1 ldr r3, [pc, #964] ; (17e00 ) 17a3a: 4798 blx r3 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 17a3c: 6824 ldr r4, [r4, #0] 17a3e: 3454 adds r4, #84 ; 0x54 17a40: 2000 movs r0, #0 17a42: 4bf0 ldr r3, [pc, #960] ; (17e04 ) 17a44: 4798 blx r3 17a46: 0083 lsls r3, r0, #2 17a48: 181b adds r3, r3, r0 17a4a: 009b lsls r3, r3, #2 17a4c: 3350 adds r3, #80 ; 0x50 17a4e: 2140 movs r1, #64 ; 0x40 17a50: 31ff adds r1, #255 ; 0xff 17a52: 2201 movs r2, #1 17a54: 428b cmp r3, r1 17a56: d901 bls.n 17a5c 17a58: f000 ffcd bl 189f6 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17a5c: 49ea ldr r1, [pc, #936] ; (17e08 ) 17a5e: 0020 movs r0, r4 17a60: 4dea ldr r5, [pc, #936] ; (17e0c ) 17a62: 47a8 blx r5 lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); 17a64: 4cea ldr r4, [pc, #936] ; (17e10 ) 17a66: 6820 ldr r0, [r4, #0] 17a68: 3054 adds r0, #84 ; 0x54 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 17a6a: 2201 movs r2, #1 17a6c: 2102 movs r1, #2 17a6e: 47a8 blx r5 style_init_reset(&styles->ddlist_sel); 17a70: 6820 ldr r0, [r4, #0] 17a72: 3058 adds r0, #88 ; 0x58 17a74: 4be2 ldr r3, [pc, #904] ; (17e00 ) 17a76: 4798 blx r3 lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17a78: 6820 ldr r0, [r4, #0] 17a7a: 3058 adds r0, #88 ; 0x58 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17a7c: 22ff movs r2, #255 ; 0xff 17a7e: 212c movs r1, #44 ; 0x2c 17a80: 4be4 ldr r3, [pc, #912] ; (17e14 ) 17a82: 4798 blx r3 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); 17a84: 6820 ldr r0, [r4, #0] 17a86: 3058 adds r0, #88 ; 0x58 17a88: 4de3 ldr r5, [pc, #908] ; (17e18 ) 17a8a: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17a8c: 2129 movs r1, #41 ; 0x29 17a8e: 4ee3 ldr r6, [pc, #908] ; (17e1c ) 17a90: 47b0 blx r6 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); 17a92: 6820 ldr r0, [r4, #0] 17a94: 3058 adds r0, #88 ; 0x58 17a96: 2201 movs r2, #1 17a98: 4252 negs r2, r2 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17a9a: 49e1 ldr r1, [pc, #900] ; (17e20 ) 17a9c: 47b0 blx r6 lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 17a9e: 6820 ldr r0, [r4, #0] 17aa0: 3058 adds r0, #88 ; 0x58 17aa2: 69ab ldr r3, [r5, #24] 17aa4: 079b lsls r3, r3, #30 17aa6: d501 bpl.n 17aac 17aa8: f000 ffb3 bl 18a12 17aac: 2309 movs r3, #9 17aae: 2113 movs r1, #19 17ab0: 220a movs r2, #10 17ab2: 0149 lsls r1, r1, #5 17ab4: 02db lsls r3, r3, #11 17ab6: 430a orrs r2, r1 17ab8: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17aba: 49da ldr r1, [pc, #872] ; (17e24 ) 17abc: 4bd7 ldr r3, [pc, #860] ; (17e1c ) 17abe: 4798 blx r3 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 17ac0: 4bd3 ldr r3, [pc, #844] ; (17e10 ) 17ac2: 6818 ldr r0, [r3, #0] 17ac4: 3058 adds r0, #88 ; 0x58 17ac6: 4bd4 ldr r3, [pc, #848] ; (17e18 ) 17ac8: 699b ldr r3, [r3, #24] 17aca: 079b lsls r3, r3, #30 17acc: d501 bpl.n 17ad2 17ace: f000 ffa5 bl 18a1c 17ad2: 231f movs r3, #31 17ad4: 213f movs r1, #63 ; 0x3f 17ad6: 221f movs r2, #31 17ad8: 0149 lsls r1, r1, #5 17ada: 02db lsls r3, r3, #11 17adc: 430a orrs r2, r1 17ade: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17ae0: 49d1 ldr r1, [pc, #836] ; (17e28 ) 17ae2: 4bce ldr r3, [pc, #824] ; (17e1c ) 17ae4: 4798 blx r3 style_init_reset(&styles->roller_bg); 17ae6: 4cca ldr r4, [pc, #808] ; (17e10 ) 17ae8: 6820 ldr r0, [r4, #0] 17aea: 3088 adds r0, #136 ; 0x88 17aec: 4bc4 ldr r3, [pc, #784] ; (17e00 ) 17aee: 4798 blx r3 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 17af0: 6824 ldr r4, [r4, #0] 17af2: 3488 adds r4, #136 ; 0x88 17af4: 2000 movs r0, #0 17af6: 4bc3 ldr r3, [pc, #780] ; (17e04 ) 17af8: 4798 blx r3 17afa: 0083 lsls r3, r0, #2 17afc: 1818 adds r0, r3, r0 17afe: 0083 lsls r3, r0, #2 17b00: 18c0 adds r0, r0, r3 17b02: 3050 adds r0, #80 ; 0x50 17b04: 2340 movs r3, #64 ; 0x40 17b06: 33ff adds r3, #255 ; 0xff 17b08: 2201 movs r2, #1 17b0a: 4298 cmp r0, r3 17b0c: d901 bls.n 17b12 17b0e: f000 ff8a bl 18a26 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 17b12: 49bd ldr r1, [pc, #756] ; (17e08 ) 17b14: 0020 movs r0, r4 17b16: 4bbd ldr r3, [pc, #756] ; (17e0c ) 17b18: 4798 blx r3 style_init_reset(&styles->roller_sel); 17b1a: 4cbd ldr r4, [pc, #756] ; (17e10 ) 17b1c: 6820 ldr r0, [r4, #0] 17b1e: 308c adds r0, #140 ; 0x8c 17b20: 4fb7 ldr r7, [pc, #732] ; (17e00 ) 17b22: 47b8 blx r7 lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); 17b24: 6820 ldr r0, [r4, #0] 17b26: 308c adds r0, #140 ; 0x8c _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17b28: 22ff movs r2, #255 ; 0xff 17b2a: 212c movs r1, #44 ; 0x2c 17b2c: 4eb9 ldr r6, [pc, #740] ; (17e14 ) 17b2e: 47b0 blx r6 lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); 17b30: 6820 ldr r0, [r4, #0] 17b32: 308c adds r0, #140 ; 0x8c 17b34: 4db8 ldr r5, [pc, #736] ; (17e18 ) 17b36: 88aa ldrh r2, [r5, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17b38: 2129 movs r1, #41 ; 0x29 17b3a: 4bb8 ldr r3, [pc, #736] ; (17e1c ) 17b3c: 4698 mov r8, r3 17b3e: 4798 blx r3 lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE); 17b40: 6820 ldr r0, [r4, #0] 17b42: 308c adds r0, #140 ; 0x8c 17b44: 4bb9 ldr r3, [pc, #740] ; (17e2c ) 17b46: 881a ldrh r2, [r3, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17b48: 49b5 ldr r1, [pc, #724] ; (17e20 ) 17b4a: 47c0 blx r8 style_init_reset(&styles->tabview_btns_bg); 17b4c: 6820 ldr r0, [r4, #0] 17b4e: 30a8 adds r0, #168 ; 0xa8 17b50: 47b8 blx r7 lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); 17b52: 6820 ldr r0, [r4, #0] 17b54: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17b56: 22ff movs r2, #255 ; 0xff 17b58: 212c movs r1, #44 ; 0x2c 17b5a: 47b0 blx r6 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 17b5c: 6820 ldr r0, [r4, #0] 17b5e: 30a8 adds r0, #168 ; 0xa8 17b60: 69ab ldr r3, [r5, #24] 17b62: 079b lsls r3, r3, #30 17b64: d501 bpl.n 17b6a 17b66: f000 ff6c bl 18a42 17b6a: 230b movs r3, #11 17b6c: 2118 movs r1, #24 17b6e: 220e movs r2, #14 17b70: 0149 lsls r1, r1, #5 17b72: 02db lsls r3, r3, #11 17b74: 430a orrs r2, r1 17b76: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17b78: 2129 movs r1, #41 ; 0x29 17b7a: 4ba8 ldr r3, [pc, #672] ; (17e1c ) 17b7c: 4798 blx r3 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17b7e: 4ba4 ldr r3, [pc, #656] ; (17e10 ) 17b80: 6818 ldr r0, [r3, #0] 17b82: 30a8 adds r0, #168 ; 0xa8 IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42)); 17b84: 4ba4 ldr r3, [pc, #656] ; (17e18 ) 17b86: 699b ldr r3, [r3, #24] lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 17b88: 079b lsls r3, r3, #30 17b8a: d501 bpl.n 17b90 17b8c: f000 ff5e bl 18a4c 17b90: 2307 movs r3, #7 17b92: 210f movs r1, #15 17b94: 2208 movs r2, #8 17b96: 0149 lsls r1, r1, #5 17b98: 02db lsls r3, r3, #11 17b9a: 430a orrs r2, r1 17b9c: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17b9e: 2139 movs r1, #57 ; 0x39 17ba0: 4b9e ldr r3, [pc, #632] ; (17e1c ) 17ba2: 4798 blx r3 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 17ba4: 4b9a ldr r3, [pc, #616] ; (17e10 ) 17ba6: 681c ldr r4, [r3, #0] 17ba8: 34a8 adds r4, #168 ; 0xa8 17baa: 2000 movs r0, #0 17bac: 4b95 ldr r3, [pc, #596] ; (17e04 ) 17bae: 4798 blx r3 17bb0: 0083 lsls r3, r0, #2 17bb2: 1818 adds r0, r3, r0 17bb4: 3050 adds r0, #80 ; 0x50 17bb6: 2340 movs r3, #64 ; 0x40 17bb8: 33ff adds r3, #255 ; 0xff 17bba: 2201 movs r2, #1 17bbc: 4298 cmp r0, r3 17bbe: d901 bls.n 17bc4 17bc0: f000 ff4e bl 18a60 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17bc4: 2130 movs r1, #48 ; 0x30 17bc6: 0020 movs r0, r4 17bc8: 4d90 ldr r5, [pc, #576] ; (17e0c ) 17bca: 47a8 blx r5 lv_style_set_border_side(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); 17bcc: 4c90 ldr r4, [pc, #576] ; (17e10 ) 17bce: 6820 ldr r0, [r4, #0] 17bd0: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17bd2: 2201 movs r2, #1 17bd4: 2131 movs r1, #49 ; 0x31 17bd6: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 17bd8: 6820 ldr r0, [r4, #0] 17bda: 30a8 adds r0, #168 ; 0xa8 17bdc: 4b8e ldr r3, [pc, #568] ; (17e18 ) 17bde: 699b ldr r3, [r3, #24] 17be0: 079b lsls r3, r3, #30 17be2: d501 bpl.n 17be8 17be4: f000 ff49 bl 18a7a 17be8: 231c movs r3, #28 17bea: 213a movs r1, #58 ; 0x3a 17bec: 221d movs r2, #29 17bee: 0149 lsls r1, r1, #5 17bf0: 02db lsls r3, r3, #11 17bf2: 430a orrs r2, r1 17bf4: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17bf6: 498a ldr r1, [pc, #552] ; (17e20 ) 17bf8: 4d88 ldr r5, [pc, #544] ; (17e1c ) 17bfa: 47a8 blx r5 lv_style_set_text_font(&styles->tabview_btns_bg, LV_STATE_DEFAULT, theme.font_normal); 17bfc: 4b86 ldr r3, [pc, #536] ; (17e18 ) _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 17bfe: 68da ldr r2, [r3, #12] 17c00: 4c83 ldr r4, [pc, #524] ; (17e10 ) 17c02: 6820 ldr r0, [r4, #0] 17c04: 30a8 adds r0, #168 ; 0xa8 17c06: 498a ldr r1, [pc, #552] ; (17e30 ) 17c08: 4b8a ldr r3, [pc, #552] ; (17e34 ) 17c0a: 4798 blx r3 lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); 17c0c: 6820 ldr r0, [r4, #0] 17c0e: 30a8 adds r0, #168 ; 0xa8 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 17c10: 4b89 ldr r3, [pc, #548] ; (17e38 ) 17c12: 881a ldrh r2, [r3, #0] 17c14: 4989 ldr r1, [pc, #548] ; (17e3c ) 17c16: 47a8 blx r5 lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17c18: 6824 ldr r4, [r4, #0] 17c1a: 34a8 adds r4, #168 ; 0xa8 17c1c: 2000 movs r0, #0 17c1e: 4b79 ldr r3, [pc, #484] ; (17e04 ) 17c20: 4798 blx r3 17c22: 00c3 lsls r3, r0, #3 17c24: 1a18 subs r0, r3, r0 17c26: 3050 adds r0, #80 ; 0x50 17c28: 2340 movs r3, #64 ; 0x40 17c2a: 33ff adds r3, #255 ; 0xff 17c2c: 2201 movs r2, #1 17c2e: 4298 cmp r0, r3 17c30: d901 bls.n 17c36 17c32: f000 ff27 bl 18a84 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17c36: 2110 movs r1, #16 17c38: 0020 movs r0, r4 17c3a: 4b74 ldr r3, [pc, #464] ; (17e0c ) 17c3c: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17c3e: 4b74 ldr r3, [pc, #464] ; (17e10 ) 17c40: 681c ldr r4, [r3, #0] 17c42: 34a8 adds r4, #168 ; 0xa8 17c44: 2000 movs r0, #0 17c46: 4b6f ldr r3, [pc, #444] ; (17e04 ) 17c48: 4798 blx r3 17c4a: 00c3 lsls r3, r0, #3 17c4c: 1a18 subs r0, r3, r0 17c4e: 3050 adds r0, #80 ; 0x50 17c50: 2340 movs r3, #64 ; 0x40 17c52: 33ff adds r3, #255 ; 0xff 17c54: 2201 movs r2, #1 17c56: 4298 cmp r0, r3 17c58: d901 bls.n 17c5e 17c5a: f000 ff1f bl 18a9c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17c5e: 2112 movs r1, #18 17c60: 0020 movs r0, r4 17c62: 4b6a ldr r3, [pc, #424] ; (17e0c ) 17c64: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 17c66: 4b6a ldr r3, [pc, #424] ; (17e10 ) 17c68: 681c ldr r4, [r3, #0] 17c6a: 34a8 adds r4, #168 ; 0xa8 17c6c: 2000 movs r0, #0 17c6e: 4b65 ldr r3, [pc, #404] ; (17e04 ) 17c70: 4798 blx r3 17c72: 00c3 lsls r3, r0, #3 17c74: 1a18 subs r0, r3, r0 17c76: 3050 adds r0, #80 ; 0x50 17c78: 2340 movs r3, #64 ; 0x40 17c7a: 33ff adds r3, #255 ; 0xff 17c7c: 2201 movs r2, #1 17c7e: 4298 cmp r0, r3 17c80: d901 bls.n 17c86 17c82: f000 ff17 bl 18ab4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17c86: 2113 movs r1, #19 17c88: 0020 movs r0, r4 17c8a: 4b60 ldr r3, [pc, #384] ; (17e0c ) 17c8c: 4798 blx r3 style_init_reset(&styles->tabview_btns); 17c8e: 4c60 ldr r4, [pc, #384] ; (17e10 ) 17c90: 6820 ldr r0, [r4, #0] 17c92: 30a4 adds r0, #164 ; 0xa4 17c94: 4b5a ldr r3, [pc, #360] ; (17e00 ) 17c96: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); 17c98: 6820 ldr r0, [r4, #0] 17c9a: 30a4 adds r0, #164 ; 0xa4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17c9c: 227f movs r2, #127 ; 0x7f 17c9e: 4968 ldr r1, [pc, #416] ; (17e40 ) 17ca0: 4b5c ldr r3, [pc, #368] ; (17e14 ) 17ca2: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); 17ca4: 6820 ldr r0, [r4, #0] 17ca6: 30a4 adds r0, #164 ; 0xa4 _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17ca8: 4b66 ldr r3, [pc, #408] ; (17e44 ) 17caa: 881a ldrh r2, [r3, #0] 17cac: 495d ldr r1, [pc, #372] ; (17e24 ) 17cae: 4b5b ldr r3, [pc, #364] ; (17e1c ) 17cb0: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 17cb2: 6820 ldr r0, [r4, #0] 17cb4: 30a4 adds r0, #164 ; 0xa4 17cb6: 4b58 ldr r3, [pc, #352] ; (17e18 ) 17cb8: 699b ldr r3, [r3, #24] 17cba: 079b lsls r3, r3, #30 17cbc: d501 bpl.n 17cc2 17cbe: f000 ff05 bl 18acc 17cc2: 231c movs r3, #28 17cc4: 213a movs r1, #58 ; 0x3a 17cc6: 221d movs r2, #29 17cc8: 0149 lsls r1, r1, #5 17cca: 02db lsls r3, r3, #11 17ccc: 430a orrs r2, r1 17cce: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17cd0: 495d ldr r1, [pc, #372] ; (17e48 ) 17cd2: 4b52 ldr r3, [pc, #328] ; (17e1c ) 17cd4: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17cd6: 4b4e ldr r3, [pc, #312] ; (17e10 ) 17cd8: 681c ldr r4, [r3, #0] 17cda: 34a4 adds r4, #164 ; 0xa4 17cdc: 2000 movs r0, #0 17cde: 4b49 ldr r3, [pc, #292] ; (17e04 ) 17ce0: 4798 blx r3 17ce2: 0083 lsls r3, r0, #2 17ce4: 181b adds r3, r3, r0 17ce6: 009b lsls r3, r3, #2 17ce8: 3350 adds r3, #80 ; 0x50 17cea: 2140 movs r1, #64 ; 0x40 17cec: 31ff adds r1, #255 ; 0xff 17cee: 2201 movs r2, #1 17cf0: 428b cmp r3, r1 17cf2: d901 bls.n 17cf8 17cf4: f000 feef bl 18ad6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17cf8: 2110 movs r1, #16 17cfa: 0020 movs r0, r4 17cfc: 4b43 ldr r3, [pc, #268] ; (17e0c ) 17cfe: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 17d00: 4b43 ldr r3, [pc, #268] ; (17e10 ) 17d02: 681c ldr r4, [r3, #0] 17d04: 34a4 adds r4, #164 ; 0xa4 17d06: 2000 movs r0, #0 17d08: 4b3e ldr r3, [pc, #248] ; (17e04 ) 17d0a: 4798 blx r3 17d0c: 0083 lsls r3, r0, #2 17d0e: 181b adds r3, r3, r0 17d10: 009b lsls r3, r3, #2 17d12: 3350 adds r3, #80 ; 0x50 17d14: 2140 movs r1, #64 ; 0x40 17d16: 31ff adds r1, #255 ; 0xff 17d18: 2201 movs r2, #1 17d1a: 428b cmp r3, r1 17d1c: d901 bls.n 17d22 17d1e: f000 fee8 bl 18af2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17d22: 2111 movs r1, #17 17d24: 0020 movs r0, r4 17d26: 4b39 ldr r3, [pc, #228] ; (17e0c ) 17d28: 4798 blx r3 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); 17d2a: 4c39 ldr r4, [pc, #228] ; (17e10 ) 17d2c: 6820 ldr r0, [r4, #0] 17d2e: 30a4 adds r0, #164 ; 0xa4 17d30: 4e39 ldr r6, [pc, #228] ; (17e18 ) 17d32: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar) 17d34: 4945 ldr r1, [pc, #276] ; (17e4c ) 17d36: 4d39 ldr r5, [pc, #228] ; (17e1c ) 17d38: 47a8 blx r5 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); 17d3a: 6820 ldr r0, [r4, #0] 17d3c: 30a4 adds r0, #164 ; 0xa4 17d3e: 88f2 ldrh r2, [r6, #6] 17d40: 4943 ldr r1, [pc, #268] ; (17e50 ) 17d42: 47a8 blx r5 style_init_reset(&styles->tabview_indic); 17d44: 6820 ldr r0, [r4, #0] 17d46: 30ac adds r0, #172 ; 0xac 17d48: 4b2d ldr r3, [pc, #180] ; (17e00 ) 17d4a: 4798 blx r3 lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); 17d4c: 6820 ldr r0, [r4, #0] 17d4e: 30ac adds r0, #172 ; 0xac _LV_OBJ_STYLE_SET_GET_DECLARE(BG_OPA, bg_opa, lv_opa_t, _opa, scalar) 17d50: 22ff movs r2, #255 ; 0xff 17d52: 212c movs r1, #44 ; 0x2c 17d54: 4b2f ldr r3, [pc, #188] ; (17e14 ) 17d56: 4798 blx r3 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); 17d58: 6820 ldr r0, [r4, #0] 17d5a: 30ac adds r0, #172 ; 0xac 17d5c: 88b2 ldrh r2, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar) 17d5e: 2129 movs r1, #41 ; 0x29 17d60: 47a8 blx r5 lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); 17d62: 6820 ldr r0, [r4, #0] 17d64: 30ac adds r0, #172 ; 0xac 17d66: 88f2 ldrh r2, [r6, #6] 17d68: 493a ldr r1, [pc, #232] ; (17e54 ) 17d6a: 47a8 blx r5 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 17d6c: 6824 ldr r4, [r4, #0] 17d6e: 34ac adds r4, #172 ; 0xac 17d70: 2000 movs r0, #0 17d72: 4b24 ldr r3, [pc, #144] ; (17e04 ) 17d74: 4798 blx r3 17d76: 0083 lsls r3, r0, #2 17d78: 1818 adds r0, r3, r0 17d7a: 3050 adds r0, #80 ; 0x50 17d7c: 2340 movs r3, #64 ; 0x40 17d7e: 33ff adds r3, #255 ; 0xff 17d80: 2201 movs r2, #1 17d82: 4298 cmp r0, r3 17d84: d901 bls.n 17d8a 17d86: f000 fec2 bl 18b0e _LV_OBJ_STYLE_SET_GET_DECLARE(SIZE, size, lv_style_int_t, _int, scalar) 17d8a: 2103 movs r1, #3 17d8c: 0020 movs r0, r4 17d8e: 4d1f ldr r5, [pc, #124] ; (17e0c ) 17d90: 47a8 blx r5 lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); 17d92: 4c1f ldr r4, [pc, #124] ; (17e10 ) 17d94: 6820 ldr r0, [r4, #0] 17d96: 30ac adds r0, #172 ; 0xac _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 17d98: 4a2f ldr r2, [pc, #188] ; (17e58 ) 17d9a: 2101 movs r1, #1 17d9c: 47a8 blx r5 style_init_reset(&styles->tabview_page_scrl); 17d9e: 6820 ldr r0, [r4, #0] 17da0: 30b0 adds r0, #176 ; 0xb0 17da2: 4b17 ldr r3, [pc, #92] ; (17e00 ) 17da4: 4798 blx r3 lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17da6: 6824 ldr r4, [r4, #0] 17da8: 34b0 adds r4, #176 ; 0xb0 17daa: 2000 movs r0, #0 17dac: 4b2b ldr r3, [pc, #172] ; (17e5c ) 17dae: 4798 blx r3 17db0: 2801 cmp r0, #1 17db2: d801 bhi.n 17db8 17db4: f000 feb8 bl 18b28 17db8: 2000 movs r0, #0 17dba: 4b12 ldr r3, [pc, #72] ; (17e04 ) 17dbc: 4798 blx r3 17dbe: 0103 lsls r3, r0, #4 17dc0: 1a1b subs r3, r3, r0 17dc2: 005b lsls r3, r3, #1 17dc4: 3350 adds r3, #80 ; 0x50 17dc6: 2140 movs r1, #64 ; 0x40 17dc8: 31ff adds r1, #255 ; 0xff 17dca: 2201 movs r2, #1 17dcc: 428b cmp r3, r1 17dce: d901 bls.n 17dd4 17dd0: f000 fec3 bl 18b5a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 17dd4: 2110 movs r1, #16 17dd6: 0020 movs r0, r4 17dd8: 4b0c ldr r3, [pc, #48] ; (17e0c ) 17dda: 4798 blx r3 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17ddc: 4b0c ldr r3, [pc, #48] ; (17e10 ) 17dde: 681c ldr r4, [r3, #0] 17de0: 34b0 adds r4, #176 ; 0xb0 17de2: 2000 movs r0, #0 17de4: 4b1d ldr r3, [pc, #116] ; (17e5c ) 17de6: 4798 blx r3 17de8: 2801 cmp r0, #1 17dea: d801 bhi.n 17df0 17dec: f000 fec2 bl 18b74 17df0: 2000 movs r0, #0 17df2: 4b04 ldr r3, [pc, #16] ; (17e04 ) 17df4: 4798 blx r3 17df6: 0103 lsls r3, r0, #4 17df8: e032 b.n 17e60 17dfa: 46c0 nop ; (mov r8, r8) 17dfc: 00002004 .word 0x00002004 17e00: 00014911 .word 0x00014911 17e04: 00010dd1 .word 0x00010dd1 17e08: 00008081 .word 0x00008081 17e0c: 00005fad .word 0x00005fad 17e10: 20004c4c .word 0x20004c4c 17e14: 000062bd .word 0x000062bd 17e18: 20004c50 .word 0x20004c50 17e1c: 00006135 .word 0x00006135 17e20: 00008089 .word 0x00008089 17e24: 00001029 .word 0x00001029 17e28: 00009089 .word 0x00009089 17e2c: 0002ada0 .word 0x0002ada0 17e30: 0000808e .word 0x0000808e 17e34: 00006431 .word 0x00006431 17e38: 0002ad9e .word 0x0002ad9e 17e3c: 000080a9 .word 0x000080a9 17e40: 0000102c .word 0x0000102c 17e44: 0002ad9c .word 0x0002ad9c 17e48: 00008189 .word 0x00008189 17e4c: 00008289 .word 0x00008289 17e50: 00008489 .word 0x00008489 17e54: 00000429 .word 0x00000429 17e58: 00007fff .word 0x00007fff 17e5c: 00010ded .word 0x00010ded 17e60: 1a1b subs r3, r3, r0 17e62: 005b lsls r3, r3, #1 17e64: 3350 adds r3, #80 ; 0x50 17e66: 2140 movs r1, #64 ; 0x40 17e68: 31ff adds r1, #255 ; 0xff 17e6a: 2201 movs r2, #1 17e6c: 428b cmp r3, r1 17e6e: d901 bls.n 17e74 17e70: f000 fe99 bl 18ba6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 17e74: 2111 movs r1, #17 17e76: 0020 movs r0, r4 17e78: 4bf2 ldr r3, [pc, #968] ; (18244 ) 17e7a: 4798 blx r3 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17e7c: 4bf2 ldr r3, [pc, #968] ; (18248 ) 17e7e: 681c ldr r4, [r3, #0] 17e80: 34b0 adds r4, #176 ; 0xb0 17e82: 2000 movs r0, #0 17e84: 4bf1 ldr r3, [pc, #964] ; (1824c ) 17e86: 4798 blx r3 17e88: 2801 cmp r0, #1 17e8a: d801 bhi.n 17e90 17e8c: f000 fe98 bl 18bc0 17e90: 2000 movs r0, #0 17e92: 4bef ldr r3, [pc, #956] ; (18250 ) 17e94: 4798 blx r3 17e96: 0103 lsls r3, r0, #4 17e98: 1a1b subs r3, r3, r0 17e9a: 005b lsls r3, r3, #1 17e9c: 3350 adds r3, #80 ; 0x50 17e9e: 2140 movs r1, #64 ; 0x40 17ea0: 31ff adds r1, #255 ; 0xff 17ea2: 2201 movs r2, #1 17ea4: 428b cmp r3, r1 17ea6: d901 bls.n 17eac 17ea8: f000 fea3 bl 18bf2 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17eac: 2112 movs r1, #18 17eae: 0020 movs r0, r4 17eb0: 4be4 ldr r3, [pc, #912] ; (18244 ) 17eb2: 4798 blx r3 lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17eb4: 4be4 ldr r3, [pc, #912] ; (18248 ) 17eb6: 681c ldr r4, [r3, #0] 17eb8: 34b0 adds r4, #176 ; 0xb0 17eba: 2000 movs r0, #0 17ebc: 4be3 ldr r3, [pc, #908] ; (1824c ) 17ebe: 4798 blx r3 17ec0: 2801 cmp r0, #1 17ec2: d801 bhi.n 17ec8 17ec4: f000 fea2 bl 18c0c 17ec8: 2000 movs r0, #0 17eca: 4be1 ldr r3, [pc, #900] ; (18250 ) 17ecc: 4798 blx r3 17ece: 0103 lsls r3, r0, #4 17ed0: 1a1b subs r3, r3, r0 17ed2: 005b lsls r3, r3, #1 17ed4: 3350 adds r3, #80 ; 0x50 17ed6: 2140 movs r1, #64 ; 0x40 17ed8: 31ff adds r1, #255 ; 0xff 17eda: 2201 movs r2, #1 17edc: 428b cmp r3, r1 17ede: d901 bls.n 17ee4 17ee0: f000 fead bl 18c3e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17ee4: 2113 movs r1, #19 17ee6: 0020 movs r0, r4 17ee8: 4bd6 ldr r3, [pc, #856] ; (18244 ) 17eea: 4798 blx r3 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 17eec: 4bd6 ldr r3, [pc, #856] ; (18248 ) 17eee: 681c ldr r4, [r3, #0] 17ef0: 34b0 adds r4, #176 ; 0xb0 17ef2: 2000 movs r0, #0 17ef4: 4bd5 ldr r3, [pc, #852] ; (1824c ) 17ef6: 4798 blx r3 17ef8: 2801 cmp r0, #1 17efa: d801 bhi.n 17f00 17efc: f000 feac bl 18c58 17f00: 2000 movs r0, #0 17f02: 4bd3 ldr r3, [pc, #844] ; (18250 ) 17f04: 4798 blx r3 17f06: 0103 lsls r3, r0, #4 17f08: 1a1b subs r3, r3, r0 17f0a: 005b lsls r3, r3, #1 17f0c: 3350 adds r3, #80 ; 0x50 17f0e: 2140 movs r1, #64 ; 0x40 17f10: 31ff adds r1, #255 ; 0xff 17f12: 2201 movs r2, #1 17f14: 428b cmp r3, r1 17f16: d901 bls.n 17f1c 17f18: f000 feb7 bl 18c8a _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_INNER, pad_inner, lv_style_int_t, _int, scalar) 17f1c: 2114 movs r1, #20 17f1e: 0020 movs r0, r4 17f20: 4bc8 ldr r3, [pc, #800] ; (18244 ) 17f22: 4798 blx r3 style_init_reset(&styles->table_cell); 17f24: 4cc8 ldr r4, [pc, #800] ; (18248 ) 17f26: 6820 ldr r0, [r4, #0] 17f28: 30a0 adds r0, #160 ; 0xa0 17f2a: 4bca ldr r3, [pc, #808] ; (18254 ) 17f2c: 4798 blx r3 lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 17f2e: 6820 ldr r0, [r4, #0] 17f30: 30a0 adds r0, #160 ; 0xa0 17f32: 4bc9 ldr r3, [pc, #804] ; (18258 ) 17f34: 699b ldr r3, [r3, #24] 17f36: 079b lsls r3, r3, #30 17f38: d501 bpl.n 17f3e 17f3a: f000 feb3 bl 18ca4 17f3e: 2310 movs r3, #16 17f40: 2122 movs r1, #34 ; 0x22 17f42: 2212 movs r2, #18 17f44: 0149 lsls r1, r1, #5 17f46: 02db lsls r3, r3, #11 17f48: 430a orrs r2, r1 17f4a: 431a orrs r2, r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar) 17f4c: 2139 movs r1, #57 ; 0x39 17f4e: 4bc3 ldr r3, [pc, #780] ; (1825c ) 17f50: 4798 blx r3 lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); 17f52: 4cbd ldr r4, [pc, #756] ; (18248 ) 17f54: 6820 ldr r0, [r4, #0] 17f56: 30a0 adds r0, #160 ; 0xa0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) 17f58: 2201 movs r2, #1 17f5a: 2130 movs r1, #48 ; 0x30 17f5c: 4db9 ldr r5, [pc, #740] ; (18244 ) 17f5e: 47a8 blx r5 lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 17f60: 6820 ldr r0, [r4, #0] 17f62: 30a0 adds r0, #160 ; 0xa0 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) 17f64: 2203 movs r2, #3 17f66: 2131 movs r1, #49 ; 0x31 17f68: 47a8 blx r5 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 17f6a: 6824 ldr r4, [r4, #0] 17f6c: 34a0 adds r4, #160 ; 0xa0 17f6e: 2000 movs r0, #0 17f70: 4bb6 ldr r3, [pc, #728] ; (1824c ) 17f72: 4798 blx r3 17f74: 2801 cmp r0, #1 17f76: d801 bhi.n 17f7c 17f78: f000 fe99 bl 18cae 17f7c: 2000 movs r0, #0 17f7e: 4bb4 ldr r3, [pc, #720] ; (18250 ) 17f80: 4798 blx r3 17f82: 0103 lsls r3, r0, #4 17f84: 1a1b subs r3, r3, r0 17f86: 005b lsls r3, r3, #1 17f88: 3350 adds r3, #80 ; 0x50 17f8a: 2140 movs r1, #64 ; 0x40 17f8c: 31ff adds r1, #255 ; 0xff 17f8e: 2201 movs r2, #1 17f90: 428b cmp r3, r1 17f92: d901 bls.n 17f98 17f94: f000 fea4 bl 18ce0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 17f98: 2112 movs r1, #18 17f9a: 0020 movs r0, r4 17f9c: 4ba9 ldr r3, [pc, #676] ; (18244 ) 17f9e: 4798 blx r3 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 17fa0: 4ba9 ldr r3, [pc, #676] ; (18248 ) 17fa2: 681c ldr r4, [r3, #0] 17fa4: 34a0 adds r4, #160 ; 0xa0 17fa6: 2000 movs r0, #0 17fa8: 4ba8 ldr r3, [pc, #672] ; (1824c ) 17faa: 4798 blx r3 17fac: 2801 cmp r0, #1 17fae: d801 bhi.n 17fb4 17fb0: f000 fea3 bl 18cfa 17fb4: 2000 movs r0, #0 17fb6: 4ba6 ldr r3, [pc, #664] ; (18250 ) 17fb8: 4798 blx r3 17fba: 0103 lsls r3, r0, #4 17fbc: 1a1b subs r3, r3, r0 17fbe: 005b lsls r3, r3, #1 17fc0: 3350 adds r3, #80 ; 0x50 17fc2: 2140 movs r1, #64 ; 0x40 17fc4: 31ff adds r1, #255 ; 0xff 17fc6: 2201 movs r2, #1 17fc8: 428b cmp r3, r1 17fca: d901 bls.n 17fd0 17fcc: f000 feae bl 18d2c _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 17fd0: 2113 movs r1, #19 17fd2: 0020 movs r0, r4 17fd4: 4b9b ldr r3, [pc, #620] ; (18244 ) 17fd6: 4798 blx r3 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 17fd8: 4b9b ldr r3, [pc, #620] ; (18248 ) 17fda: 681c ldr r4, [r3, #0] 17fdc: 34a0 adds r4, #160 ; 0xa0 17fde: 2000 movs r0, #0 17fe0: 4b9a ldr r3, [pc, #616] ; (1824c ) 17fe2: 4798 blx r3 17fe4: 2801 cmp r0, #1 17fe6: d801 bhi.n 17fec 17fe8: f000 fead bl 18d46 17fec: 2000 movs r0, #0 17fee: 4b98 ldr r3, [pc, #608] ; (18250 ) 17ff0: 4798 blx r3 17ff2: 0103 lsls r3, r0, #4 17ff4: 1a1b subs r3, r3, r0 17ff6: 005b lsls r3, r3, #1 17ff8: 3350 adds r3, #80 ; 0x50 17ffa: 2140 movs r1, #64 ; 0x40 17ffc: 31ff adds r1, #255 ; 0xff 17ffe: 2201 movs r2, #1 18000: 428b cmp r3, r1 18002: d901 bls.n 18008 18004: f000 feb8 bl 18d78 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 18008: 2110 movs r1, #16 1800a: 0020 movs r0, r4 1800c: 4b8d ldr r3, [pc, #564] ; (18244 ) 1800e: 4798 blx r3 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18010: 4b8d ldr r3, [pc, #564] ; (18248 ) 18012: 681c ldr r4, [r3, #0] 18014: 34a0 adds r4, #160 ; 0xa0 18016: 2000 movs r0, #0 18018: 4b8c ldr r3, [pc, #560] ; (1824c ) 1801a: 4798 blx r3 1801c: 2801 cmp r0, #1 1801e: d801 bhi.n 18024 18020: f000 feb7 bl 18d92 18024: 2000 movs r0, #0 18026: 4b8a ldr r3, [pc, #552] ; (18250 ) 18028: 4798 blx r3 1802a: 0103 lsls r3, r0, #4 1802c: 1a1b subs r3, r3, r0 1802e: 005b lsls r3, r3, #1 18030: 3350 adds r3, #80 ; 0x50 18032: 2140 movs r1, #64 ; 0x40 18034: 31ff adds r1, #255 ; 0xff 18036: 2201 movs r2, #1 18038: 428b cmp r3, r1 1803a: d901 bls.n 18040 1803c: f000 fec2 bl 18dc4 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 18040: 2111 movs r1, #17 18042: 0020 movs r0, r4 18044: 4b7f ldr r3, [pc, #508] ; (18244 ) 18046: 4798 blx r3 theme.apply_xcb = theme_apply; 18048: 4c83 ldr r4, [pc, #524] ; (18258 ) 1804a: 4b85 ldr r3, [pc, #532] ; (18260 ) 1804c: 6023 str r3, [r4, #0] inited = true; 1804e: 2201 movs r2, #1 18050: 4b84 ldr r3, [pc, #528] ; (18264 ) 18052: 701a strb r2, [r3, #0] lv_obj_report_style_mod(NULL); 18054: 2000 movs r0, #0 18056: 4b84 ldr r3, [pc, #528] ; (18268 ) 18058: 4798 blx r3 } 1805a: 0020 movs r0, r4 1805c: bc04 pop {r2} 1805e: 4690 mov r8, r2 18060: bdf0 pop {r4, r5, r6, r7, pc} LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); 18062: 20bc movs r0, #188 ; 0xbc 18064: 4b81 ldr r3, [pc, #516] ; (1826c ) 18066: 4798 blx r3 18068: 4b81 ldr r3, [pc, #516] ; (18270 ) 1806a: 6018 str r0, [r3, #0] styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); 1806c: 4b76 ldr r3, [pc, #472] ; (18248 ) 1806e: 6018 str r0, [r3, #0] 18070: f7fe fc59 bl 16926 lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 18074: 2315 movs r3, #21 18076: 212a movs r1, #42 ; 0x2a 18078: 2215 movs r2, #21 1807a: f7fe fc7f bl 1697c lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); 1807e: 2000 movs r0, #0 18080: 4b73 ldr r3, [pc, #460] ; (18250 ) 18082: 4798 blx r3 18084: 3050 adds r0, #80 ; 0x50 18086: 21a0 movs r1, #160 ; 0xa0 18088: 4b7a ldr r3, [pc, #488] ; (18274 ) 1808a: 4798 blx r3 1808c: b202 sxth r2, r0 1808e: f7fe fc8e bl 169ae lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 18092: 2000 movs r0, #0 18094: 4b6e ldr r3, [pc, #440] ; (18250 ) 18096: 4798 blx r3 18098: 0003 movs r3, r0 1809a: 0080 lsls r0, r0, #2 1809c: 18c0 adds r0, r0, r3 1809e: 0040 lsls r0, r0, #1 180a0: 3050 adds r0, #80 ; 0x50 180a2: 21a0 movs r1, #160 ; 0xa0 180a4: 4b73 ldr r3, [pc, #460] ; (18274 ) 180a6: 4798 blx r3 180a8: b202 sxth r2, r0 180aa: f7fe fc95 bl 169d8 lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); 180ae: 2000 movs r0, #0 180b0: 4b67 ldr r3, [pc, #412] ; (18250 ) 180b2: 4798 blx r3 180b4: 0003 movs r3, r0 180b6: 0080 lsls r0, r0, #2 180b8: 18c0 adds r0, r0, r3 180ba: 0040 lsls r0, r0, #1 180bc: 3050 adds r0, #80 ; 0x50 180be: 21a0 movs r1, #160 ; 0xa0 180c0: 4b6c ldr r3, [pc, #432] ; (18274 ) 180c2: 4798 blx r3 180c4: b202 sxth r2, r0 180c6: f7fe fc9c bl 16a02 lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); 180ca: 231a movs r3, #26 180cc: 2137 movs r1, #55 ; 0x37 180ce: 221c movs r2, #28 180d0: f7fe fca7 bl 16a22 lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); 180d4: 2000 movs r0, #0 180d6: 4b5e ldr r3, [pc, #376] ; (18250 ) 180d8: 4798 blx r3 180da: 0003 movs r3, r0 180dc: 0040 lsls r0, r0, #1 180de: 18c0 adds r0, r0, r3 180e0: 3050 adds r0, #80 ; 0x50 180e2: 21a0 movs r1, #160 ; 0xa0 180e4: 4b63 ldr r3, [pc, #396] ; (18274 ) 180e6: 4798 blx r3 180e8: b202 sxth r2, r0 180ea: f7fe fcb5 bl 16a58 lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); 180ee: 2000 movs r0, #0 180f0: 4b57 ldr r3, [pc, #348] ; (18250 ) 180f2: 4798 blx r3 180f4: 3014 adds r0, #20 180f6: 0080 lsls r0, r0, #2 180f8: 21a0 movs r1, #160 ; 0xa0 180fa: 4b5e ldr r3, [pc, #376] ; (18274 ) 180fc: 4798 blx r3 180fe: b202 sxth r2, r0 18100: f7fe fcbd bl 16a7e lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ 18104: 2000 movs r0, #0 18106: 4b52 ldr r3, [pc, #328] ; (18250 ) 18108: 4798 blx r3 1810a: 3028 adds r0, #40 ; 0x28 1810c: 0040 lsls r0, r0, #1 1810e: 21a0 movs r1, #160 ; 0xa0 18110: 4b58 ldr r3, [pc, #352] ; (18274 ) 18112: 4798 blx r3 18114: b202 sxth r2, r0 18116: f7fe fcc5 bl 16aa4 lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); 1811a: 2000 movs r0, #0 1811c: 4b4c ldr r3, [pc, #304] ; (18250 ) 1811e: 4798 blx r3 18120: 3050 adds r0, #80 ; 0x50 18122: 21a0 movs r1, #160 ; 0xa0 18124: 4b53 ldr r3, [pc, #332] ; (18274 ) 18126: 4798 blx r3 18128: b202 sxth r2, r0 1812a: f7fe fccd bl 16ac8 lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1812e: 2000 movs r0, #0 18130: 4b47 ldr r3, [pc, #284] ; (18250 ) 18132: 4798 blx r3 18134: 0103 lsls r3, r0, #4 18136: 1a18 subs r0, r3, r0 18138: 3050 adds r0, #80 ; 0x50 1813a: 2340 movs r3, #64 ; 0x40 1813c: 33ff adds r3, #255 ; 0xff 1813e: 2201 movs r2, #1 18140: 4298 cmp r0, r3 18142: d801 bhi.n 18148 18144: f7fe fce0 bl 16b08 18148: 2000 movs r0, #0 1814a: 4b41 ldr r3, [pc, #260] ; (18250 ) 1814c: 4798 blx r3 1814e: 0103 lsls r3, r0, #4 18150: 1a18 subs r0, r3, r0 18152: 3050 adds r0, #80 ; 0x50 18154: 21a0 movs r1, #160 ; 0xa0 18156: 4b47 ldr r3, [pc, #284] ; (18274 ) 18158: 4798 blx r3 1815a: b202 sxth r2, r0 1815c: f7fe fcd4 bl 16b08 18160: 2000 movs r0, #0 18162: 4b3b ldr r3, [pc, #236] ; (18250 ) 18164: 4798 blx r3 18166: 0103 lsls r3, r0, #4 18168: 1a18 subs r0, r3, r0 1816a: 0040 lsls r0, r0, #1 1816c: 3050 adds r0, #80 ; 0x50 1816e: 21a0 movs r1, #160 ; 0xa0 18170: 4b40 ldr r3, [pc, #256] ; (18274 ) 18172: 4798 blx r3 18174: b202 sxth r2, r0 18176: f7fe fcc7 bl 16b08 lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 1817a: 2000 movs r0, #0 1817c: 4b34 ldr r3, [pc, #208] ; (18250 ) 1817e: 4798 blx r3 18180: 0103 lsls r3, r0, #4 18182: 1a18 subs r0, r3, r0 18184: 3050 adds r0, #80 ; 0x50 18186: 2340 movs r3, #64 ; 0x40 18188: 33ff adds r3, #255 ; 0xff 1818a: 2201 movs r2, #1 1818c: 4298 cmp r0, r3 1818e: d801 bhi.n 18194 18190: f7fe fcd6 bl 16b40 18194: 2000 movs r0, #0 18196: 4b2e ldr r3, [pc, #184] ; (18250 ) 18198: 4798 blx r3 1819a: 0103 lsls r3, r0, #4 1819c: 1a18 subs r0, r3, r0 1819e: 3050 adds r0, #80 ; 0x50 181a0: 21a0 movs r1, #160 ; 0xa0 181a2: 4b34 ldr r3, [pc, #208] ; (18274 ) 181a4: 4798 blx r3 181a6: b202 sxth r2, r0 181a8: f7fe fcca bl 16b40 181ac: 2000 movs r0, #0 181ae: 4b28 ldr r3, [pc, #160] ; (18250 ) 181b0: 4798 blx r3 181b2: 0103 lsls r3, r0, #4 181b4: 1a18 subs r0, r3, r0 181b6: 0040 lsls r0, r0, #1 181b8: 3050 adds r0, #80 ; 0x50 181ba: 21a0 movs r1, #160 ; 0xa0 181bc: 4b2d ldr r3, [pc, #180] ; (18274 ) 181be: 4798 blx r3 181c0: b202 sxth r2, r0 181c2: f7fe fcbd bl 16b40 lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 181c6: 2000 movs r0, #0 181c8: 4b21 ldr r3, [pc, #132] ; (18250 ) 181ca: 4798 blx r3 181cc: 0103 lsls r3, r0, #4 181ce: 1a18 subs r0, r3, r0 181d0: 3050 adds r0, #80 ; 0x50 181d2: 2340 movs r3, #64 ; 0x40 181d4: 33ff adds r3, #255 ; 0xff 181d6: 2201 movs r2, #1 181d8: 4298 cmp r0, r3 181da: d801 bhi.n 181e0 181dc: f7fe fccc bl 16b78 181e0: 2000 movs r0, #0 181e2: 4b1b ldr r3, [pc, #108] ; (18250 ) 181e4: 4798 blx r3 181e6: 0103 lsls r3, r0, #4 181e8: 1a18 subs r0, r3, r0 181ea: 3050 adds r0, #80 ; 0x50 181ec: 21a0 movs r1, #160 ; 0xa0 181ee: 4b21 ldr r3, [pc, #132] ; (18274 ) 181f0: 4798 blx r3 181f2: b202 sxth r2, r0 181f4: f7fe fcc0 bl 16b78 181f8: 2000 movs r0, #0 181fa: 4b15 ldr r3, [pc, #84] ; (18250 ) 181fc: 4798 blx r3 181fe: 0103 lsls r3, r0, #4 18200: 1a18 subs r0, r3, r0 18202: 0040 lsls r0, r0, #1 18204: 3050 adds r0, #80 ; 0x50 18206: 21a0 movs r1, #160 ; 0xa0 18208: 4b1a ldr r3, [pc, #104] ; (18274 ) 1820a: 4798 blx r3 1820c: b202 sxth r2, r0 1820e: f7fe fcb3 bl 16b78 lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); 18212: 2000 movs r0, #0 18214: 4b0e ldr r3, [pc, #56] ; (18250 ) 18216: 4798 blx r3 18218: 0103 lsls r3, r0, #4 1821a: 1a18 subs r0, r3, r0 1821c: 3050 adds r0, #80 ; 0x50 1821e: 2340 movs r3, #64 ; 0x40 18220: 33ff adds r3, #255 ; 0xff 18222: 2201 movs r2, #1 18224: 4298 cmp r0, r3 18226: d801 bhi.n 1822c 18228: f7fe fcc2 bl 16bb0 1822c: 2000 movs r0, #0 1822e: 4b08 ldr r3, [pc, #32] ; (18250 ) 18230: 4798 blx r3 18232: 0103 lsls r3, r0, #4 18234: 1a18 subs r0, r3, r0 18236: 3050 adds r0, #80 ; 0x50 18238: 21a0 movs r1, #160 ; 0xa0 1823a: 4b0e ldr r3, [pc, #56] ; (18274 ) 1823c: 4798 blx r3 1823e: b202 sxth r2, r0 18240: f7fe fcb6 bl 16bb0 18244: 00005fad .word 0x00005fad 18248: 20004c4c .word 0x20004c4c 1824c: 00010ded .word 0x00010ded 18250: 00010dd1 .word 0x00010dd1 18254: 00014911 .word 0x00014911 18258: 20004c50 .word 0x20004c50 1825c: 00006135 .word 0x00006135 18260: 000140f5 .word 0x000140f5 18264: 20004c48 .word 0x20004c48 18268: 000031c1 .word 0x000031c1 1826c: 000122dd .word 0x000122dd 18270: 20004dd0 .word 0x20004dd0 18274: 0001c0a5 .word 0x0001c0a5 18278: 2000 movs r0, #0 1827a: 4bfc ldr r3, [pc, #1008] ; (1866c ) 1827c: 4798 blx r3 1827e: 0103 lsls r3, r0, #4 18280: 1a18 subs r0, r3, r0 18282: 0040 lsls r0, r0, #1 18284: 3050 adds r0, #80 ; 0x50 18286: 21a0 movs r1, #160 ; 0xa0 18288: 4bf9 ldr r3, [pc, #996] ; (18670 ) 1828a: 4798 blx r3 1828c: b202 sxth r2, r0 1828e: f7fe fc8f bl 16bb0 lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); 18292: 2222 movs r2, #34 ; 0x22 18294: 2311 movs r3, #17 18296: f7fe fc9a bl 16bce lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); 1829a: 2306 movs r3, #6 1829c: 2110 movs r1, #16 1829e: 2209 movs r2, #9 182a0: f7fe fcac bl 16bfc lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 182a4: 2000 movs r0, #0 182a6: 4bf1 ldr r3, [pc, #964] ; (1866c ) 182a8: 4798 blx r3 182aa: 0103 lsls r3, r0, #4 182ac: 1a18 subs r0, r3, r0 182ae: 3050 adds r0, #80 ; 0x50 182b0: 2340 movs r3, #64 ; 0x40 182b2: 33ff adds r3, #255 ; 0xff 182b4: 2201 movs r2, #1 182b6: 4298 cmp r0, r3 182b8: d801 bhi.n 182be 182ba: f7fe fcbe bl 16c3a 182be: 2000 movs r0, #0 182c0: 4bea ldr r3, [pc, #936] ; (1866c ) 182c2: 4798 blx r3 182c4: 0103 lsls r3, r0, #4 182c6: 1a18 subs r0, r3, r0 182c8: 3050 adds r0, #80 ; 0x50 182ca: 21a0 movs r1, #160 ; 0xa0 182cc: 4be8 ldr r3, [pc, #928] ; (18670 ) 182ce: 4798 blx r3 182d0: b202 sxth r2, r0 182d2: f7fe fcb2 bl 16c3a 182d6: 2000 movs r0, #0 182d8: 4be4 ldr r3, [pc, #912] ; (1866c ) 182da: 4798 blx r3 182dc: 0103 lsls r3, r0, #4 182de: 1a18 subs r0, r3, r0 182e0: 0040 lsls r0, r0, #1 182e2: 3050 adds r0, #80 ; 0x50 182e4: 21a0 movs r1, #160 ; 0xa0 182e6: 4be2 ldr r3, [pc, #904] ; (18670 ) 182e8: 4798 blx r3 182ea: b202 sxth r2, r0 182ec: f7fe fca5 bl 16c3a lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 182f0: 2000 movs r0, #0 182f2: 4bde ldr r3, [pc, #888] ; (1866c ) 182f4: 4798 blx r3 182f6: 0103 lsls r3, r0, #4 182f8: 1a18 subs r0, r3, r0 182fa: 3050 adds r0, #80 ; 0x50 182fc: 2340 movs r3, #64 ; 0x40 182fe: 33ff adds r3, #255 ; 0xff 18300: 2201 movs r2, #1 18302: 4298 cmp r0, r3 18304: d801 bhi.n 1830a 18306: f7fe fcb4 bl 16c72 1830a: 2000 movs r0, #0 1830c: 4bd7 ldr r3, [pc, #860] ; (1866c ) 1830e: 4798 blx r3 18310: 0103 lsls r3, r0, #4 18312: 1a18 subs r0, r3, r0 18314: 3050 adds r0, #80 ; 0x50 18316: 21a0 movs r1, #160 ; 0xa0 18318: 4bd5 ldr r3, [pc, #852] ; (18670 ) 1831a: 4798 blx r3 1831c: b202 sxth r2, r0 1831e: f7fe fca8 bl 16c72 18322: 2000 movs r0, #0 18324: 4bd1 ldr r3, [pc, #836] ; (1866c ) 18326: 4798 blx r3 18328: 0103 lsls r3, r0, #4 1832a: 1a18 subs r0, r3, r0 1832c: 0040 lsls r0, r0, #1 1832e: 3050 adds r0, #80 ; 0x50 18330: 21a0 movs r1, #160 ; 0xa0 18332: 4bcf ldr r3, [pc, #828] ; (18670 ) 18334: 4798 blx r3 18336: b202 sxth r2, r0 18338: f7fe fc9b bl 16c72 lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); 1833c: 2000 movs r0, #0 1833e: 4bcb ldr r3, [pc, #812] ; (1866c ) 18340: 4798 blx r3 18342: 0103 lsls r3, r0, #4 18344: 1a18 subs r0, r3, r0 18346: 3050 adds r0, #80 ; 0x50 18348: 2340 movs r3, #64 ; 0x40 1834a: 33ff adds r3, #255 ; 0xff 1834c: 2201 movs r2, #1 1834e: 4298 cmp r0, r3 18350: d801 bhi.n 18356 18352: f7fe fcaa bl 16caa 18356: 2000 movs r0, #0 18358: 4bc4 ldr r3, [pc, #784] ; (1866c ) 1835a: 4798 blx r3 1835c: 0103 lsls r3, r0, #4 1835e: 1a18 subs r0, r3, r0 18360: 3050 adds r0, #80 ; 0x50 18362: 21a0 movs r1, #160 ; 0xa0 18364: 4bc2 ldr r3, [pc, #776] ; (18670 ) 18366: 4798 blx r3 18368: b202 sxth r2, r0 1836a: f7fe fc9e bl 16caa 1836e: 2000 movs r0, #0 18370: 4bbe ldr r3, [pc, #760] ; (1866c ) 18372: 4798 blx r3 18374: 0103 lsls r3, r0, #4 18376: 1a18 subs r0, r3, r0 18378: 0040 lsls r0, r0, #1 1837a: 3050 adds r0, #80 ; 0x50 1837c: 21a0 movs r1, #160 ; 0xa0 1837e: 4bbc ldr r3, [pc, #752] ; (18670 ) 18380: 4798 blx r3 18382: b202 sxth r2, r0 18384: f7fe fc91 bl 16caa lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); 18388: 2000 movs r0, #0 1838a: 4bb8 ldr r3, [pc, #736] ; (1866c ) 1838c: 4798 blx r3 1838e: 3014 adds r0, #20 18390: 0080 lsls r0, r0, #2 18392: 21a0 movs r1, #160 ; 0xa0 18394: 4bb6 ldr r3, [pc, #728] ; (18670 ) 18396: 4798 blx r3 18398: b202 sxth r2, r0 1839a: f7fe fc9d bl 16cd8 lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); 1839e: 2306 movs r3, #6 183a0: 2110 movs r1, #16 183a2: 2209 movs r2, #9 183a4: f7fe fca8 bl 16cf8 lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); 183a8: 2219 movs r2, #25 183aa: 230c movs r3, #12 183ac: f7fe fd01 bl 16db2 lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); 183b0: 2000 movs r0, #0 183b2: 4bae ldr r3, [pc, #696] ; (1866c ) 183b4: 4798 blx r3 183b6: 0003 movs r3, r0 183b8: 0040 lsls r0, r0, #1 183ba: 18c0 adds r0, r0, r3 183bc: 3050 adds r0, #80 ; 0x50 183be: 21a0 movs r1, #160 ; 0xa0 183c0: 4bab ldr r3, [pc, #684] ; (18670 ) 183c2: 4798 blx r3 183c4: b202 sxth r2, r0 183c6: f7fe fd25 bl 16e14 lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 183ca: 2000 movs r0, #0 183cc: 4ba7 ldr r3, [pc, #668] ; (1866c ) 183ce: 4798 blx r3 183d0: 0103 lsls r3, r0, #4 183d2: 1a18 subs r0, r3, r0 183d4: 3050 adds r0, #80 ; 0x50 183d6: 2340 movs r3, #64 ; 0x40 183d8: 33ff adds r3, #255 ; 0xff 183da: 2201 movs r2, #1 183dc: 4298 cmp r0, r3 183de: d801 bhi.n 183e4 183e0: f7fe fd34 bl 16e4c 183e4: 2000 movs r0, #0 183e6: 4ba1 ldr r3, [pc, #644] ; (1866c ) 183e8: 4798 blx r3 183ea: 0103 lsls r3, r0, #4 183ec: 1a18 subs r0, r3, r0 183ee: 3050 adds r0, #80 ; 0x50 183f0: 21a0 movs r1, #160 ; 0xa0 183f2: 4b9f ldr r3, [pc, #636] ; (18670 ) 183f4: 4798 blx r3 183f6: b202 sxth r2, r0 183f8: f7fe fd28 bl 16e4c 183fc: 2000 movs r0, #0 183fe: 4b9b ldr r3, [pc, #620] ; (1866c ) 18400: 4798 blx r3 18402: 0103 lsls r3, r0, #4 18404: 1a18 subs r0, r3, r0 18406: 0040 lsls r0, r0, #1 18408: 3050 adds r0, #80 ; 0x50 1840a: 21a0 movs r1, #160 ; 0xa0 1840c: 4b98 ldr r3, [pc, #608] ; (18670 ) 1840e: 4798 blx r3 18410: b202 sxth r2, r0 18412: f7fe fd1b bl 16e4c lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 18416: 2000 movs r0, #0 18418: 4b94 ldr r3, [pc, #592] ; (1866c ) 1841a: 4798 blx r3 1841c: 0103 lsls r3, r0, #4 1841e: 1a18 subs r0, r3, r0 18420: 3050 adds r0, #80 ; 0x50 18422: 2340 movs r3, #64 ; 0x40 18424: 33ff adds r3, #255 ; 0xff 18426: 2201 movs r2, #1 18428: 4298 cmp r0, r3 1842a: d801 bhi.n 18430 1842c: f7fe fd2a bl 16e84 18430: 2000 movs r0, #0 18432: 4b8e ldr r3, [pc, #568] ; (1866c ) 18434: 4798 blx r3 18436: 0103 lsls r3, r0, #4 18438: 1a18 subs r0, r3, r0 1843a: 3050 adds r0, #80 ; 0x50 1843c: 21a0 movs r1, #160 ; 0xa0 1843e: 4b8c ldr r3, [pc, #560] ; (18670 ) 18440: 4798 blx r3 18442: b202 sxth r2, r0 18444: f7fe fd1e bl 16e84 18448: 2000 movs r0, #0 1844a: 4b88 ldr r3, [pc, #544] ; (1866c ) 1844c: 4798 blx r3 1844e: 0103 lsls r3, r0, #4 18450: 1a18 subs r0, r3, r0 18452: 0040 lsls r0, r0, #1 18454: 3050 adds r0, #80 ; 0x50 18456: 21a0 movs r1, #160 ; 0xa0 18458: 4b85 ldr r3, [pc, #532] ; (18670 ) 1845a: 4798 blx r3 1845c: b202 sxth r2, r0 1845e: f7fe fd11 bl 16e84 lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); 18462: 2000 movs r0, #0 18464: 4b81 ldr r3, [pc, #516] ; (1866c ) 18466: 4798 blx r3 18468: 0103 lsls r3, r0, #4 1846a: 1a18 subs r0, r3, r0 1846c: 3050 adds r0, #80 ; 0x50 1846e: 2340 movs r3, #64 ; 0x40 18470: 33ff adds r3, #255 ; 0xff 18472: 2201 movs r2, #1 18474: 4298 cmp r0, r3 18476: d801 bhi.n 1847c 18478: f7fe fd20 bl 16ebc 1847c: 2000 movs r0, #0 1847e: 4b7b ldr r3, [pc, #492] ; (1866c ) 18480: 4798 blx r3 18482: 0103 lsls r3, r0, #4 18484: 1a18 subs r0, r3, r0 18486: 3050 adds r0, #80 ; 0x50 18488: 21a0 movs r1, #160 ; 0xa0 1848a: 4b79 ldr r3, [pc, #484] ; (18670 ) 1848c: 4798 blx r3 1848e: b202 sxth r2, r0 18490: f7fe fd14 bl 16ebc 18494: 2000 movs r0, #0 18496: 4b75 ldr r3, [pc, #468] ; (1866c ) 18498: 4798 blx r3 1849a: 0103 lsls r3, r0, #4 1849c: 1a18 subs r0, r3, r0 1849e: 0040 lsls r0, r0, #1 184a0: 3050 adds r0, #80 ; 0x50 184a2: 21a0 movs r1, #160 ; 0xa0 184a4: 4b72 ldr r3, [pc, #456] ; (18670 ) 184a6: 4798 blx r3 184a8: b202 sxth r2, r0 184aa: f7fe fd07 bl 16ebc lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); 184ae: 2000 movs r0, #0 184b0: 4b6e ldr r3, [pc, #440] ; (1866c ) 184b2: 4798 blx r3 184b4: 0103 lsls r3, r0, #4 184b6: 1a18 subs r0, r3, r0 184b8: 0040 lsls r0, r0, #1 184ba: 3050 adds r0, #80 ; 0x50 184bc: 21a0 movs r1, #160 ; 0xa0 184be: 4b6c ldr r3, [pc, #432] ; (18670 ) 184c0: 4798 blx r3 184c2: b202 sxth r2, r0 184c4: f7fe fd13 bl 16eee lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); 184c8: 231d movs r3, #29 184ca: 213b movs r1, #59 ; 0x3b 184cc: 221e movs r2, #30 184ce: f7fe fd24 bl 16f1a lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); 184d2: 2000 movs r0, #0 184d4: 4b65 ldr r3, [pc, #404] ; (1866c ) 184d6: 4798 blx r3 184d8: 0003 movs r3, r0 184da: 0080 lsls r0, r0, #2 184dc: 18c0 adds r0, r0, r3 184de: 0080 lsls r0, r0, #2 184e0: 3050 adds r0, #80 ; 0x50 184e2: 21a0 movs r1, #160 ; 0xa0 184e4: 4b62 ldr r3, [pc, #392] ; (18670 ) 184e6: 4798 blx r3 184e8: b202 sxth r2, r0 184ea: f7fe fd2e bl 16f4a lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 184ee: 2000 movs r0, #0 184f0: 4b5e ldr r3, [pc, #376] ; (1866c ) 184f2: 4798 blx r3 184f4: 0003 movs r3, r0 184f6: 0040 lsls r0, r0, #1 184f8: 18c0 adds r0, r0, r3 184fa: 0080 lsls r0, r0, #2 184fc: 18c0 adds r0, r0, r3 184fe: 3050 adds r0, #80 ; 0x50 18500: 21a0 movs r1, #160 ; 0xa0 18502: 4b5b ldr r3, [pc, #364] ; (18670 ) 18504: 4798 blx r3 18506: b202 sxth r2, r0 18508: f7fe fd67 bl 16fda lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1850c: 2000 movs r0, #0 1850e: 4b57 ldr r3, [pc, #348] ; (1866c ) 18510: 4798 blx r3 18512: 0003 movs r3, r0 18514: 0040 lsls r0, r0, #1 18516: 18c0 adds r0, r0, r3 18518: 0080 lsls r0, r0, #2 1851a: 18c0 adds r0, r0, r3 1851c: 3050 adds r0, #80 ; 0x50 1851e: 21a0 movs r1, #160 ; 0xa0 18520: 4b53 ldr r3, [pc, #332] ; (18670 ) 18522: 4798 blx r3 18524: b202 sxth r2, r0 18526: f7fe fd6f bl 17008 lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 1852a: 2000 movs r0, #0 1852c: 4b4f ldr r3, [pc, #316] ; (1866c ) 1852e: 4798 blx r3 18530: 0003 movs r3, r0 18532: 0040 lsls r0, r0, #1 18534: 18c0 adds r0, r0, r3 18536: 0080 lsls r0, r0, #2 18538: 18c0 adds r0, r0, r3 1853a: 3050 adds r0, #80 ; 0x50 1853c: 21a0 movs r1, #160 ; 0xa0 1853e: 4b4c ldr r3, [pc, #304] ; (18670 ) 18540: 4798 blx r3 18542: b202 sxth r2, r0 18544: f7fe fd77 bl 17036 lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); 18548: 2000 movs r0, #0 1854a: 4b48 ldr r3, [pc, #288] ; (1866c ) 1854c: 4798 blx r3 1854e: 0003 movs r3, r0 18550: 0040 lsls r0, r0, #1 18552: 18c0 adds r0, r0, r3 18554: 0080 lsls r0, r0, #2 18556: 18c0 adds r0, r0, r3 18558: 3050 adds r0, #80 ; 0x50 1855a: 21a0 movs r1, #160 ; 0xa0 1855c: 4b44 ldr r3, [pc, #272] ; (18670 ) 1855e: 4798 blx r3 18560: b202 sxth r2, r0 18562: f7fe fd7f bl 17064 lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 18566: 2000 movs r0, #0 18568: 4b40 ldr r3, [pc, #256] ; (1866c ) 1856a: 4798 blx r3 1856c: 3014 adds r0, #20 1856e: 0080 lsls r0, r0, #2 18570: 21a0 movs r1, #160 ; 0xa0 18572: 4b3f ldr r3, [pc, #252] ; (18670 ) 18574: 4798 blx r3 18576: b202 sxth r2, r0 18578: f7fe fd8b bl 17092 lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 1857c: 2000 movs r0, #0 1857e: 4b3b ldr r3, [pc, #236] ; (1866c ) 18580: 4798 blx r3 18582: 0003 movs r3, r0 18584: 0080 lsls r0, r0, #2 18586: 18c0 adds r0, r0, r3 18588: 0040 lsls r0, r0, #1 1858a: 3050 adds r0, #80 ; 0x50 1858c: 21a0 movs r1, #160 ; 0xa0 1858e: 4b38 ldr r3, [pc, #224] ; (18670 ) 18590: 4798 blx r3 18592: b202 sxth r2, r0 18594: f7fe fd92 bl 170bc lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 18598: 2000 movs r0, #0 1859a: 4b34 ldr r3, [pc, #208] ; (1866c ) 1859c: 4798 blx r3 1859e: 0003 movs r3, r0 185a0: 0040 lsls r0, r0, #1 185a2: 18c0 adds r0, r0, r3 185a4: 3050 adds r0, #80 ; 0x50 185a6: 21a0 movs r1, #160 ; 0xa0 185a8: 4b31 ldr r3, [pc, #196] ; (18670 ) 185aa: 4798 blx r3 185ac: b202 sxth r2, r0 185ae: f7fe fdac bl 1710a lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); 185b2: 2000 movs r0, #0 185b4: 4b2d ldr r3, [pc, #180] ; (1866c ) 185b6: 4798 blx r3 185b8: 0003 movs r3, r0 185ba: 0080 lsls r0, r0, #2 185bc: 18c0 adds r0, r0, r3 185be: 0040 lsls r0, r0, #1 185c0: 3050 adds r0, #80 ; 0x50 185c2: 21a0 movs r1, #160 ; 0xa0 185c4: 4b2a ldr r3, [pc, #168] ; (18670 ) 185c6: 4798 blx r3 185c8: b202 sxth r2, r0 185ca: f7fe fdb3 bl 17134 lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); 185ce: 2000 movs r0, #0 185d0: 4b26 ldr r3, [pc, #152] ; (1866c ) 185d2: 4798 blx r3 185d4: 3014 adds r0, #20 185d6: 0080 lsls r0, r0, #2 185d8: 21a0 movs r1, #160 ; 0xa0 185da: 4b25 ldr r3, [pc, #148] ; (18670 ) 185dc: 4798 blx r3 185de: b202 sxth r2, r0 185e0: f7fe fdf0 bl 171c4 lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 185e4: 2000 movs r0, #0 185e6: 4b21 ldr r3, [pc, #132] ; (1866c ) 185e8: 4798 blx r3 185ea: 0003 movs r3, r0 185ec: 0040 lsls r0, r0, #1 185ee: 18c0 adds r0, r0, r3 185f0: 3050 adds r0, #80 ; 0x50 185f2: 21a0 movs r1, #160 ; 0xa0 185f4: 4b1e ldr r3, [pc, #120] ; (18670 ) 185f6: 4798 blx r3 185f8: b202 sxth r2, r0 185fa: f7fe fe0c bl 17216 lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 185fe: 2000 movs r0, #0 18600: 4b1a ldr r3, [pc, #104] ; (1866c ) 18602: 4798 blx r3 18604: 0003 movs r3, r0 18606: 0040 lsls r0, r0, #1 18608: 18c0 adds r0, r0, r3 1860a: 3050 adds r0, #80 ; 0x50 1860c: 21a0 movs r1, #160 ; 0xa0 1860e: 4b18 ldr r3, [pc, #96] ; (18670 ) 18610: 4798 blx r3 18612: b202 sxth r2, r0 18614: f7fe fe13 bl 1723e lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18618: 2000 movs r0, #0 1861a: 4b14 ldr r3, [pc, #80] ; (1866c ) 1861c: 4798 blx r3 1861e: 0003 movs r3, r0 18620: 0040 lsls r0, r0, #1 18622: 18c0 adds r0, r0, r3 18624: 3050 adds r0, #80 ; 0x50 18626: 21a0 movs r1, #160 ; 0xa0 18628: 4b11 ldr r3, [pc, #68] ; (18670 ) 1862a: 4798 blx r3 1862c: b202 sxth r2, r0 1862e: f7fe fe1a bl 17266 lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); 18632: 2000 movs r0, #0 18634: 4b0d ldr r3, [pc, #52] ; (1866c ) 18636: 4798 blx r3 18638: 0003 movs r3, r0 1863a: 0040 lsls r0, r0, #1 1863c: 18c0 adds r0, r0, r3 1863e: 3050 adds r0, #80 ; 0x50 18640: 21a0 movs r1, #160 ; 0xa0 18642: 4b0b ldr r3, [pc, #44] ; (18670 ) 18644: 4798 blx r3 18646: b202 sxth r2, r0 18648: f7fe fe21 bl 1728e lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); 1864c: 2000 movs r0, #0 1864e: 4b07 ldr r3, [pc, #28] ; (1866c ) 18650: 4798 blx r3 18652: 3014 adds r0, #20 18654: 0080 lsls r0, r0, #2 18656: 21a0 movs r1, #160 ; 0xa0 18658: 4b05 ldr r3, [pc, #20] ; (18670 ) 1865a: 4798 blx r3 1865c: b202 sxth r2, r0 1865e: f7fe fe32 bl 172c6 lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); 18662: 2307 movs r3, #7 18664: 210f movs r1, #15 18666: 2208 movs r2, #8 18668: f7fe fe42 bl 172f0 1866c: 00010dd1 .word 0x00010dd1 18670: 0001c0a5 .word 0x0001c0a5 lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18674: 2000 movs r0, #0 18676: 4bf8 ldr r3, [pc, #992] ; (18a58 ) 18678: 4798 blx r3 1867a: 0003 movs r3, r0 1867c: 0080 lsls r0, r0, #2 1867e: 18c0 adds r0, r0, r3 18680: 3050 adds r0, #80 ; 0x50 18682: 21a0 movs r1, #160 ; 0xa0 18684: 4bf5 ldr r3, [pc, #980] ; (18a5c ) 18686: 4798 blx r3 18688: b202 sxth r2, r0 1868a: f7fe fe4e bl 1732a lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 1868e: 2000 movs r0, #0 18690: 4bf1 ldr r3, [pc, #964] ; (18a58 ) 18692: 4798 blx r3 18694: 0003 movs r3, r0 18696: 0080 lsls r0, r0, #2 18698: 18c0 adds r0, r0, r3 1869a: 3050 adds r0, #80 ; 0x50 1869c: 21a0 movs r1, #160 ; 0xa0 1869e: 4bef ldr r3, [pc, #956] ; (18a5c ) 186a0: 4798 blx r3 186a2: b202 sxth r2, r0 186a4: f7fe fe55 bl 17352 lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 186a8: 2000 movs r0, #0 186aa: 4beb ldr r3, [pc, #940] ; (18a58 ) 186ac: 4798 blx r3 186ae: 0003 movs r3, r0 186b0: 0080 lsls r0, r0, #2 186b2: 18c0 adds r0, r0, r3 186b4: 3050 adds r0, #80 ; 0x50 186b6: 21a0 movs r1, #160 ; 0xa0 186b8: 4be8 ldr r3, [pc, #928] ; (18a5c ) 186ba: 4798 blx r3 186bc: b202 sxth r2, r0 186be: f7fe fe5c bl 1737a lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); 186c2: 2000 movs r0, #0 186c4: 4be4 ldr r3, [pc, #912] ; (18a58 ) 186c6: 4798 blx r3 186c8: 0003 movs r3, r0 186ca: 0080 lsls r0, r0, #2 186cc: 18c0 adds r0, r0, r3 186ce: 3050 adds r0, #80 ; 0x50 186d0: 21a0 movs r1, #160 ; 0xa0 186d2: 4be2 ldr r3, [pc, #904] ; (18a5c ) 186d4: 4798 blx r3 186d6: b202 sxth r2, r0 186d8: f7fe fe63 bl 173a2 lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); 186dc: 2000 movs r0, #0 186de: 4bde ldr r3, [pc, #888] ; (18a58 ) 186e0: 4798 blx r3 186e2: 0003 movs r3, r0 186e4: 0040 lsls r0, r0, #1 186e6: 18c0 adds r0, r0, r3 186e8: 3050 adds r0, #80 ; 0x50 186ea: 21a0 movs r1, #160 ; 0xa0 186ec: 4bdb ldr r3, [pc, #876] ; (18a5c ) 186ee: 4798 blx r3 186f0: b202 sxth r2, r0 186f2: f7fe fe6a bl 173ca lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); 186f6: 2000 movs r0, #0 186f8: 4bd7 ldr r3, [pc, #860] ; (18a58 ) 186fa: 4798 blx r3 186fc: 0003 movs r3, r0 186fe: 2032 movs r0, #50 ; 0x32 18700: 4358 muls r0, r3 18702: 3050 adds r0, #80 ; 0x50 18704: 21a0 movs r1, #160 ; 0xa0 18706: 4bd5 ldr r3, [pc, #852] ; (18a5c ) 18708: 4798 blx r3 1870a: b202 sxth r2, r0 1870c: f7fe fe75 bl 173fa lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x999)); 18710: 2226 movs r2, #38 ; 0x26 18712: 2313 movs r3, #19 18714: f7fe fe80 bl 17418 lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, (IS_LIGHT ? lv_color_hex(0xcccfd1) : lv_color_hex(0x777f85))); 18718: 2319 movs r3, #25 1871a: 2133 movs r1, #51 ; 0x33 1871c: 221a movs r2, #26 1871e: f7fe fe98 bl 17452 lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 18722: 2000 movs r0, #0 18724: 4bcc ldr r3, [pc, #816] ; (18a58 ) 18726: 4798 blx r3 18728: 00c3 lsls r3, r0, #3 1872a: 1a18 subs r0, r3, r0 1872c: 3050 adds r0, #80 ; 0x50 1872e: 21a0 movs r1, #160 ; 0xa0 18730: 4bca ldr r3, [pc, #808] ; (18a5c ) 18732: 4798 blx r3 18734: b202 sxth r2, r0 18736: f7fe fea9 bl 1748c lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 1873a: 2000 movs r0, #0 1873c: 4bc6 ldr r3, [pc, #792] ; (18a58 ) 1873e: 4798 blx r3 18740: 00c3 lsls r3, r0, #3 18742: 1a18 subs r0, r3, r0 18744: 3050 adds r0, #80 ; 0x50 18746: 21a0 movs r1, #160 ; 0xa0 18748: 4bc4 ldr r3, [pc, #784] ; (18a5c ) 1874a: 4798 blx r3 1874c: b202 sxth r2, r0 1874e: f7fe feb1 bl 174b4 lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); 18752: 2000 movs r0, #0 18754: 4bc0 ldr r3, [pc, #768] ; (18a58 ) 18756: 4798 blx r3 18758: 00c3 lsls r3, r0, #3 1875a: 1a18 subs r0, r3, r0 1875c: 3050 adds r0, #80 ; 0x50 1875e: 21a0 movs r1, #160 ; 0xa0 18760: 4bbe ldr r3, [pc, #760] ; (18a5c ) 18762: 4798 blx r3 18764: b202 sxth r2, r0 18766: f7fe feb9 bl 174dc lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); 1876a: 2306 movs r3, #6 1876c: 2110 movs r1, #16 1876e: 2209 movs r2, #9 18770: f7fe fed8 bl 17524 lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(2)); 18774: 2000 movs r0, #0 18776: 4bb8 ldr r3, [pc, #736] ; (18a58 ) 18778: 4798 blx r3 1877a: 3028 adds r0, #40 ; 0x28 1877c: 0040 lsls r0, r0, #1 1877e: 21a0 movs r1, #160 ; 0xa0 18780: 4bb6 ldr r3, [pc, #728] ; (18a5c ) 18782: 4798 blx r3 18784: b202 sxth r2, r0 18786: f7fe fee3 bl 17550 lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); 1878a: 2000 movs r0, #0 1878c: 4bb2 ldr r3, [pc, #712] ; (18a58 ) 1878e: 4798 blx r3 18790: 3050 adds r0, #80 ; 0x50 18792: 21a0 movs r1, #160 ; 0xa0 18794: 4bb1 ldr r3, [pc, #708] ; (18a5c ) 18796: 4798 blx r3 18798: b202 sxth r2, r0 1879a: f7fe feeb bl 17574 lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); 1879e: 2315 movs r3, #21 187a0: 212a movs r1, #42 ; 0x2a 187a2: 2215 movs r2, #21 187a4: f7fe ff1d bl 175e2 lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 187a8: 2000 movs r0, #0 187aa: 4bab ldr r3, [pc, #684] ; (18a58 ) 187ac: 4798 blx r3 187ae: 0003 movs r3, r0 187b0: 2064 movs r0, #100 ; 0x64 187b2: 4358 muls r0, r3 187b4: 3050 adds r0, #80 ; 0x50 187b6: 21a0 movs r1, #160 ; 0xa0 187b8: 4ba8 ldr r3, [pc, #672] ; (18a5c ) 187ba: 4798 blx r3 187bc: b202 sxth r2, r0 187be: f7fe ff3e bl 1763e lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); 187c2: 2000 movs r0, #0 187c4: 4ba4 ldr r3, [pc, #656] ; (18a58 ) 187c6: 4798 blx r3 187c8: 0003 movs r3, r0 187ca: 2064 movs r0, #100 ; 0x64 187cc: 4358 muls r0, r3 187ce: 3050 adds r0, #80 ; 0x50 187d0: 21a0 movs r1, #160 ; 0xa0 187d2: 4ba2 ldr r3, [pc, #648] ; (18a5c ) 187d4: 4798 blx r3 187d6: b202 sxth r2, r0 187d8: f7fe ff45 bl 17666 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); 187dc: 231f movs r3, #31 187de: 213f movs r1, #63 ; 0x3f 187e0: 221f movs r2, #31 187e2: f7fe ff7b bl 176dc lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); 187e6: 231d movs r3, #29 187e8: 213b movs r1, #59 ; 0x3b 187ea: 221d movs r2, #29 187ec: f7fe ff89 bl 17702 lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); 187f0: 231f movs r3, #31 187f2: 213f movs r1, #63 ; 0x3f 187f4: 221f movs r2, #31 187f6: f7fe ff97 bl 17728 lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 187fa: 2307 movs r3, #7 187fc: 210f movs r1, #15 187fe: 2208 movs r2, #8 18800: f7fe ffb5 bl 1776e lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 18804: 222a movs r2, #42 ; 0x2a 18806: 2315 movs r3, #21 18808: f7fe ffc9 bl 1779e lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); 1880c: 2307 movs r3, #7 1880e: 210f movs r1, #15 18810: 2208 movs r2, #8 18812: f7fe ffd7 bl 177c4 lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); 18816: 222a movs r2, #42 ; 0x2a 18818: 2315 movs r3, #21 1881a: f7fe ffeb bl 177f4 lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); 1881e: 231a movs r3, #26 18820: 2137 movs r1, #55 ; 0x37 18822: 221c movs r2, #28 18824: f7fe ffff bl 17826 lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18828: 2000 movs r0, #0 1882a: 4b8b ldr r3, [pc, #556] ; (18a58 ) 1882c: 4798 blx r3 1882e: 0103 lsls r3, r0, #4 18830: 1a18 subs r0, r3, r0 18832: 3050 adds r0, #80 ; 0x50 18834: 2340 movs r3, #64 ; 0x40 18836: 33ff adds r3, #255 ; 0xff 18838: 2201 movs r2, #1 1883a: 4298 cmp r0, r3 1883c: d801 bhi.n 18842 1883e: f7ff f81d bl 1787c 18842: 2000 movs r0, #0 18844: 4b84 ldr r3, [pc, #528] ; (18a58 ) 18846: 4798 blx r3 18848: 0103 lsls r3, r0, #4 1884a: 1a18 subs r0, r3, r0 1884c: 3050 adds r0, #80 ; 0x50 1884e: 21a0 movs r1, #160 ; 0xa0 18850: 4b82 ldr r3, [pc, #520] ; (18a5c ) 18852: 4798 blx r3 18854: b202 sxth r2, r0 18856: f7ff f811 bl 1787c 1885a: 2000 movs r0, #0 1885c: 4b7e ldr r3, [pc, #504] ; (18a58 ) 1885e: 4798 blx r3 18860: 0103 lsls r3, r0, #4 18862: 1a18 subs r0, r3, r0 18864: 0040 lsls r0, r0, #1 18866: 3050 adds r0, #80 ; 0x50 18868: 21a0 movs r1, #160 ; 0xa0 1886a: 4b7c ldr r3, [pc, #496] ; (18a5c ) 1886c: 4798 blx r3 1886e: b202 sxth r2, r0 18870: f7ff f804 bl 1787c lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18874: 2000 movs r0, #0 18876: 4b78 ldr r3, [pc, #480] ; (18a58 ) 18878: 4798 blx r3 1887a: 0103 lsls r3, r0, #4 1887c: 1a18 subs r0, r3, r0 1887e: 3050 adds r0, #80 ; 0x50 18880: 2340 movs r3, #64 ; 0x40 18882: 33ff adds r3, #255 ; 0xff 18884: 2201 movs r2, #1 18886: 4298 cmp r0, r3 18888: d801 bhi.n 1888e 1888a: f7ff f813 bl 178b4 1888e: 2000 movs r0, #0 18890: 4b71 ldr r3, [pc, #452] ; (18a58 ) 18892: 4798 blx r3 18894: 0103 lsls r3, r0, #4 18896: 1a18 subs r0, r3, r0 18898: 3050 adds r0, #80 ; 0x50 1889a: 21a0 movs r1, #160 ; 0xa0 1889c: 4b6f ldr r3, [pc, #444] ; (18a5c ) 1889e: 4798 blx r3 188a0: b202 sxth r2, r0 188a2: f7ff f807 bl 178b4 188a6: 2000 movs r0, #0 188a8: 4b6b ldr r3, [pc, #428] ; (18a58 ) 188aa: 4798 blx r3 188ac: 0103 lsls r3, r0, #4 188ae: 1a18 subs r0, r3, r0 188b0: 0040 lsls r0, r0, #1 188b2: 3050 adds r0, #80 ; 0x50 188b4: 21a0 movs r1, #160 ; 0xa0 188b6: 4b69 ldr r3, [pc, #420] ; (18a5c ) 188b8: 4798 blx r3 188ba: b202 sxth r2, r0 188bc: f7fe fffa bl 178b4 lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 188c0: 2000 movs r0, #0 188c2: 4b65 ldr r3, [pc, #404] ; (18a58 ) 188c4: 4798 blx r3 188c6: 0103 lsls r3, r0, #4 188c8: 1a18 subs r0, r3, r0 188ca: 3050 adds r0, #80 ; 0x50 188cc: 2340 movs r3, #64 ; 0x40 188ce: 33ff adds r3, #255 ; 0xff 188d0: 2201 movs r2, #1 188d2: 4298 cmp r0, r3 188d4: d801 bhi.n 188da 188d6: f7ff f809 bl 178ec 188da: 2000 movs r0, #0 188dc: 4b5e ldr r3, [pc, #376] ; (18a58 ) 188de: 4798 blx r3 188e0: 0103 lsls r3, r0, #4 188e2: 1a18 subs r0, r3, r0 188e4: 3050 adds r0, #80 ; 0x50 188e6: 21a0 movs r1, #160 ; 0xa0 188e8: 4b5c ldr r3, [pc, #368] ; (18a5c ) 188ea: 4798 blx r3 188ec: b202 sxth r2, r0 188ee: f7fe fffd bl 178ec 188f2: 2000 movs r0, #0 188f4: 4b58 ldr r3, [pc, #352] ; (18a58 ) 188f6: 4798 blx r3 188f8: 0103 lsls r3, r0, #4 188fa: 1a18 subs r0, r3, r0 188fc: 0040 lsls r0, r0, #1 188fe: 3050 adds r0, #80 ; 0x50 18900: 21a0 movs r1, #160 ; 0xa0 18902: 4b56 ldr r3, [pc, #344] ; (18a5c ) 18904: 4798 blx r3 18906: b202 sxth r2, r0 18908: f7fe fff0 bl 178ec lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 1890c: 2000 movs r0, #0 1890e: 4b52 ldr r3, [pc, #328] ; (18a58 ) 18910: 4798 blx r3 18912: 0103 lsls r3, r0, #4 18914: 1a18 subs r0, r3, r0 18916: 3050 adds r0, #80 ; 0x50 18918: 2340 movs r3, #64 ; 0x40 1891a: 33ff adds r3, #255 ; 0xff 1891c: 2201 movs r2, #1 1891e: 4298 cmp r0, r3 18920: d801 bhi.n 18926 18922: f7fe ffff bl 17924 18926: 2000 movs r0, #0 18928: 4b4b ldr r3, [pc, #300] ; (18a58 ) 1892a: 4798 blx r3 1892c: 0103 lsls r3, r0, #4 1892e: 1a18 subs r0, r3, r0 18930: 3050 adds r0, #80 ; 0x50 18932: 21a0 movs r1, #160 ; 0xa0 18934: 4b49 ldr r3, [pc, #292] ; (18a5c ) 18936: 4798 blx r3 18938: b202 sxth r2, r0 1893a: f7fe fff3 bl 17924 1893e: 2000 movs r0, #0 18940: 4b45 ldr r3, [pc, #276] ; (18a58 ) 18942: 4798 blx r3 18944: 0103 lsls r3, r0, #4 18946: 1a18 subs r0, r3, r0 18948: 0040 lsls r0, r0, #1 1894a: 3050 adds r0, #80 ; 0x50 1894c: 21a0 movs r1, #160 ; 0xa0 1894e: 4b43 ldr r3, [pc, #268] ; (18a5c ) 18950: 4798 blx r3 18952: b202 sxth r2, r0 18954: f7fe ffe6 bl 17924 lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); 18958: 2000 movs r0, #0 1895a: 4b3f ldr r3, [pc, #252] ; (18a58 ) 1895c: 4798 blx r3 1895e: 0103 lsls r3, r0, #4 18960: 1a18 subs r0, r3, r0 18962: 3050 adds r0, #80 ; 0x50 18964: 2340 movs r3, #64 ; 0x40 18966: 33ff adds r3, #255 ; 0xff 18968: 2201 movs r2, #1 1896a: 4298 cmp r0, r3 1896c: d801 bhi.n 18972 1896e: f7fe fff5 bl 1795c 18972: 2000 movs r0, #0 18974: 4b38 ldr r3, [pc, #224] ; (18a58 ) 18976: 4798 blx r3 18978: 0103 lsls r3, r0, #4 1897a: 1a18 subs r0, r3, r0 1897c: 3050 adds r0, #80 ; 0x50 1897e: 21a0 movs r1, #160 ; 0xa0 18980: 4b36 ldr r3, [pc, #216] ; (18a5c ) 18982: 4798 blx r3 18984: b202 sxth r2, r0 18986: f7fe ffe9 bl 1795c 1898a: 2000 movs r0, #0 1898c: 4b32 ldr r3, [pc, #200] ; (18a58 ) 1898e: 4798 blx r3 18990: 0103 lsls r3, r0, #4 18992: 1a18 subs r0, r3, r0 18994: 0040 lsls r0, r0, #1 18996: 3050 adds r0, #80 ; 0x50 18998: 21a0 movs r1, #160 ; 0xa0 1899a: 4b30 ldr r3, [pc, #192] ; (18a5c ) 1899c: 4798 blx r3 1899e: b202 sxth r2, r0 189a0: f7fe ffdc bl 1795c lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, - PAD_DEF); 189a4: 2000 movs r0, #0 189a6: 4b2c ldr r3, [pc, #176] ; (18a58 ) 189a8: 4798 blx r3 189aa: 0103 lsls r3, r0, #4 189ac: 1a18 subs r0, r3, r0 189ae: 3050 adds r0, #80 ; 0x50 189b0: 2340 movs r3, #64 ; 0x40 189b2: 33ff adds r3, #255 ; 0xff 189b4: 4298 cmp r0, r3 189b6: d803 bhi.n 189c0 189b8: 2201 movs r2, #1 189ba: 4252 negs r2, r2 189bc: f7fe ffeb bl 17996 189c0: 2000 movs r0, #0 189c2: 4b25 ldr r3, [pc, #148] ; (18a58 ) 189c4: 4798 blx r3 189c6: 0103 lsls r3, r0, #4 189c8: 1a18 subs r0, r3, r0 189ca: 3050 adds r0, #80 ; 0x50 189cc: 21a0 movs r1, #160 ; 0xa0 189ce: 4b23 ldr r3, [pc, #140] ; (18a5c ) 189d0: 4798 blx r3 189d2: 4242 negs r2, r0 189d4: b212 sxth r2, r2 189d6: f7fe ffde bl 17996 189da: 2000 movs r0, #0 189dc: 4b1e ldr r3, [pc, #120] ; (18a58 ) 189de: 4798 blx r3 189e0: 0103 lsls r3, r0, #4 189e2: 1a18 subs r0, r3, r0 189e4: 0040 lsls r0, r0, #1 189e6: 3050 adds r0, #80 ; 0x50 189e8: 21a0 movs r1, #160 ; 0xa0 189ea: 4b1c ldr r3, [pc, #112] ; (18a5c ) 189ec: 4798 blx r3 189ee: 4242 negs r2, r0 189f0: b212 sxth r2, r2 189f2: f7fe ffd0 bl 17996 lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); 189f6: 2000 movs r0, #0 189f8: 4b17 ldr r3, [pc, #92] ; (18a58 ) 189fa: 4798 blx r3 189fc: 0003 movs r3, r0 189fe: 0080 lsls r0, r0, #2 18a00: 18c0 adds r0, r0, r3 18a02: 0080 lsls r0, r0, #2 18a04: 3050 adds r0, #80 ; 0x50 18a06: 21a0 movs r1, #160 ; 0xa0 18a08: 4b14 ldr r3, [pc, #80] ; (18a5c ) 18a0a: 4798 blx r3 18a0c: b202 sxth r2, r0 18a0e: f7ff f825 bl 17a5c lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); 18a12: 231d movs r3, #29 18a14: 213b movs r1, #59 ; 0x3b 18a16: 221d movs r2, #29 18a18: f7ff f84b bl 17ab2 lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); 18a1c: 2307 movs r3, #7 18a1e: 210f movs r1, #15 18a20: 2208 movs r2, #8 18a22: f7ff f859 bl 17ad8 lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); 18a26: 2000 movs r0, #0 18a28: 4b0b ldr r3, [pc, #44] ; (18a58 ) 18a2a: 4798 blx r3 18a2c: 0083 lsls r3, r0, #2 18a2e: 1818 adds r0, r3, r0 18a30: 0083 lsls r3, r0, #2 18a32: 18c0 adds r0, r0, r3 18a34: 3050 adds r0, #80 ; 0x50 18a36: 21a0 movs r1, #160 ; 0xa0 18a38: 4b08 ldr r3, [pc, #32] ; (18a5c ) 18a3a: 4798 blx r3 18a3c: b202 sxth r2, r0 18a3e: f7ff f868 bl 17b12 lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); 18a42: 231f movs r3, #31 18a44: 213f movs r1, #63 ; 0x3f 18a46: 221f movs r2, #31 18a48: f7ff f892 bl 17b70 lv_style_set_border_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, 18a4c: 231c movs r3, #28 18a4e: 213a movs r1, #58 ; 0x3a 18a50: 221e movs r2, #30 18a52: f7ff f8a0 bl 17b96 18a56: 46c0 nop ; (mov r8, r8) 18a58: 00010dd1 .word 0x00010dd1 18a5c: 0001c0a5 .word 0x0001c0a5 lv_style_set_border_width(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(5)); 18a60: 2000 movs r0, #0 18a62: 4bdf ldr r3, [pc, #892] ; (18de0 ) 18a64: 4798 blx r3 18a66: 0003 movs r3, r0 18a68: 0080 lsls r0, r0, #2 18a6a: 18c0 adds r0, r0, r3 18a6c: 3050 adds r0, #80 ; 0x50 18a6e: 21a0 movs r1, #160 ; 0xa0 18a70: 4bdc ldr r3, [pc, #880] ; (18de4 ) 18a72: 4798 blx r3 18a74: b202 sxth r2, r0 18a76: f7ff f8a5 bl 17bc4 lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); 18a7a: 2307 movs r3, #7 18a7c: 210f movs r1, #15 18a7e: 2208 movs r2, #8 18a80: f7ff f8b5 bl 17bee lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18a84: 2000 movs r0, #0 18a86: 4bd6 ldr r3, [pc, #856] ; (18de0 ) 18a88: 4798 blx r3 18a8a: 00c3 lsls r3, r0, #3 18a8c: 1a18 subs r0, r3, r0 18a8e: 3050 adds r0, #80 ; 0x50 18a90: 21a0 movs r1, #160 ; 0xa0 18a92: 4bd4 ldr r3, [pc, #848] ; (18de4 ) 18a94: 4798 blx r3 18a96: b202 sxth r2, r0 18a98: f7ff f8cd bl 17c36 lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18a9c: 2000 movs r0, #0 18a9e: 4bd0 ldr r3, [pc, #832] ; (18de0 ) 18aa0: 4798 blx r3 18aa2: 00c3 lsls r3, r0, #3 18aa4: 1a18 subs r0, r3, r0 18aa6: 3050 adds r0, #80 ; 0x50 18aa8: 21a0 movs r1, #160 ; 0xa0 18aaa: 4bce ldr r3, [pc, #824] ; (18de4 ) 18aac: 4798 blx r3 18aae: b202 sxth r2, r0 18ab0: f7ff f8d5 bl 17c5e lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); 18ab4: 2000 movs r0, #0 18ab6: 4bca ldr r3, [pc, #808] ; (18de0 ) 18ab8: 4798 blx r3 18aba: 00c3 lsls r3, r0, #3 18abc: 1a18 subs r0, r3, r0 18abe: 3050 adds r0, #80 ; 0x50 18ac0: 21a0 movs r1, #160 ; 0xa0 18ac2: 4bc8 ldr r3, [pc, #800] ; (18de4 ) 18ac4: 4798 blx r3 18ac6: b202 sxth r2, r0 18ac8: f7ff f8dd bl 17c86 lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); 18acc: 2307 movs r3, #7 18ace: 210f movs r1, #15 18ad0: 2208 movs r2, #8 18ad2: f7ff f8f9 bl 17cc8 lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18ad6: 2000 movs r0, #0 18ad8: 4bc1 ldr r3, [pc, #772] ; (18de0 ) 18ada: 4798 blx r3 18adc: 0003 movs r3, r0 18ade: 0080 lsls r0, r0, #2 18ae0: 18c0 adds r0, r0, r3 18ae2: 0080 lsls r0, r0, #2 18ae4: 3050 adds r0, #80 ; 0x50 18ae6: 21a0 movs r1, #160 ; 0xa0 18ae8: 4bbe ldr r3, [pc, #760] ; (18de4 ) 18aea: 4798 blx r3 18aec: b202 sxth r2, r0 18aee: f7ff f903 bl 17cf8 lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); 18af2: 2000 movs r0, #0 18af4: 4bba ldr r3, [pc, #744] ; (18de0 ) 18af6: 4798 blx r3 18af8: 0003 movs r3, r0 18afa: 0080 lsls r0, r0, #2 18afc: 18c0 adds r0, r0, r3 18afe: 0080 lsls r0, r0, #2 18b00: 3050 adds r0, #80 ; 0x50 18b02: 21a0 movs r1, #160 ; 0xa0 18b04: 4bb7 ldr r3, [pc, #732] ; (18de4 ) 18b06: 4798 blx r3 18b08: b202 sxth r2, r0 18b0a: f7ff f90a bl 17d22 lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); 18b0e: 2000 movs r0, #0 18b10: 4bb3 ldr r3, [pc, #716] ; (18de0 ) 18b12: 4798 blx r3 18b14: 0003 movs r3, r0 18b16: 0080 lsls r0, r0, #2 18b18: 18c0 adds r0, r0, r3 18b1a: 3050 adds r0, #80 ; 0x50 18b1c: 21a0 movs r1, #160 ; 0xa0 18b1e: 4bb1 ldr r3, [pc, #708] ; (18de4 ) 18b20: 4798 blx r3 18b22: b202 sxth r2, r0 18b24: f7ff f931 bl 17d8a lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18b28: 2000 movs r0, #0 18b2a: 4bad ldr r3, [pc, #692] ; (18de0 ) 18b2c: 4798 blx r3 18b2e: 0103 lsls r3, r0, #4 18b30: 1a18 subs r0, r3, r0 18b32: 3050 adds r0, #80 ; 0x50 18b34: 2340 movs r3, #64 ; 0x40 18b36: 33ff adds r3, #255 ; 0xff 18b38: 2201 movs r2, #1 18b3a: 4298 cmp r0, r3 18b3c: d801 bhi.n 18b42 18b3e: f7ff f949 bl 17dd4 18b42: 2000 movs r0, #0 18b44: 4ba6 ldr r3, [pc, #664] ; (18de0 ) 18b46: 4798 blx r3 18b48: 0103 lsls r3, r0, #4 18b4a: 1a18 subs r0, r3, r0 18b4c: 3050 adds r0, #80 ; 0x50 18b4e: 21a0 movs r1, #160 ; 0xa0 18b50: 4ba4 ldr r3, [pc, #656] ; (18de4 ) 18b52: 4798 blx r3 18b54: b202 sxth r2, r0 18b56: f7ff f93d bl 17dd4 18b5a: 2000 movs r0, #0 18b5c: 4ba0 ldr r3, [pc, #640] ; (18de0 ) 18b5e: 4798 blx r3 18b60: 0103 lsls r3, r0, #4 18b62: 1a18 subs r0, r3, r0 18b64: 0040 lsls r0, r0, #1 18b66: 3050 adds r0, #80 ; 0x50 18b68: 21a0 movs r1, #160 ; 0xa0 18b6a: 4b9e ldr r3, [pc, #632] ; (18de4 ) 18b6c: 4798 blx r3 18b6e: b202 sxth r2, r0 18b70: f7ff f930 bl 17dd4 lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18b74: 2000 movs r0, #0 18b76: 4b9a ldr r3, [pc, #616] ; (18de0 ) 18b78: 4798 blx r3 18b7a: 0103 lsls r3, r0, #4 18b7c: 1a18 subs r0, r3, r0 18b7e: 3050 adds r0, #80 ; 0x50 18b80: 2340 movs r3, #64 ; 0x40 18b82: 33ff adds r3, #255 ; 0xff 18b84: 2201 movs r2, #1 18b86: 4298 cmp r0, r3 18b88: d801 bhi.n 18b8e 18b8a: f7ff f973 bl 17e74 18b8e: 2000 movs r0, #0 18b90: 4b93 ldr r3, [pc, #588] ; (18de0 ) 18b92: 4798 blx r3 18b94: 0103 lsls r3, r0, #4 18b96: 1a18 subs r0, r3, r0 18b98: 3050 adds r0, #80 ; 0x50 18b9a: 21a0 movs r1, #160 ; 0xa0 18b9c: 4b91 ldr r3, [pc, #580] ; (18de4 ) 18b9e: 4798 blx r3 18ba0: b202 sxth r2, r0 18ba2: f7ff f967 bl 17e74 18ba6: 2000 movs r0, #0 18ba8: 4b8d ldr r3, [pc, #564] ; (18de0 ) 18baa: 4798 blx r3 18bac: 0103 lsls r3, r0, #4 18bae: 1a18 subs r0, r3, r0 18bb0: 0040 lsls r0, r0, #1 18bb2: 3050 adds r0, #80 ; 0x50 18bb4: 21a0 movs r1, #160 ; 0xa0 18bb6: 4b8b ldr r3, [pc, #556] ; (18de4 ) 18bb8: 4798 blx r3 18bba: b202 sxth r2, r0 18bbc: f7ff f95a bl 17e74 lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18bc0: 2000 movs r0, #0 18bc2: 4b87 ldr r3, [pc, #540] ; (18de0 ) 18bc4: 4798 blx r3 18bc6: 0103 lsls r3, r0, #4 18bc8: 1a18 subs r0, r3, r0 18bca: 3050 adds r0, #80 ; 0x50 18bcc: 2340 movs r3, #64 ; 0x40 18bce: 33ff adds r3, #255 ; 0xff 18bd0: 2201 movs r2, #1 18bd2: 4298 cmp r0, r3 18bd4: d801 bhi.n 18bda 18bd6: f7ff f969 bl 17eac 18bda: 2000 movs r0, #0 18bdc: 4b80 ldr r3, [pc, #512] ; (18de0 ) 18bde: 4798 blx r3 18be0: 0103 lsls r3, r0, #4 18be2: 1a18 subs r0, r3, r0 18be4: 3050 adds r0, #80 ; 0x50 18be6: 21a0 movs r1, #160 ; 0xa0 18be8: 4b7e ldr r3, [pc, #504] ; (18de4 ) 18bea: 4798 blx r3 18bec: b202 sxth r2, r0 18bee: f7ff f95d bl 17eac 18bf2: 2000 movs r0, #0 18bf4: 4b7a ldr r3, [pc, #488] ; (18de0 ) 18bf6: 4798 blx r3 18bf8: 0103 lsls r3, r0, #4 18bfa: 1a18 subs r0, r3, r0 18bfc: 0040 lsls r0, r0, #1 18bfe: 3050 adds r0, #80 ; 0x50 18c00: 21a0 movs r1, #160 ; 0xa0 18c02: 4b78 ldr r3, [pc, #480] ; (18de4 ) 18c04: 4798 blx r3 18c06: b202 sxth r2, r0 18c08: f7ff f950 bl 17eac lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18c0c: 2000 movs r0, #0 18c0e: 4b74 ldr r3, [pc, #464] ; (18de0 ) 18c10: 4798 blx r3 18c12: 0103 lsls r3, r0, #4 18c14: 1a18 subs r0, r3, r0 18c16: 3050 adds r0, #80 ; 0x50 18c18: 2340 movs r3, #64 ; 0x40 18c1a: 33ff adds r3, #255 ; 0xff 18c1c: 2201 movs r2, #1 18c1e: 4298 cmp r0, r3 18c20: d801 bhi.n 18c26 18c22: f7ff f95f bl 17ee4 18c26: 2000 movs r0, #0 18c28: 4b6d ldr r3, [pc, #436] ; (18de0 ) 18c2a: 4798 blx r3 18c2c: 0103 lsls r3, r0, #4 18c2e: 1a18 subs r0, r3, r0 18c30: 3050 adds r0, #80 ; 0x50 18c32: 21a0 movs r1, #160 ; 0xa0 18c34: 4b6b ldr r3, [pc, #428] ; (18de4 ) 18c36: 4798 blx r3 18c38: b202 sxth r2, r0 18c3a: f7ff f953 bl 17ee4 18c3e: 2000 movs r0, #0 18c40: 4b67 ldr r3, [pc, #412] ; (18de0 ) 18c42: 4798 blx r3 18c44: 0103 lsls r3, r0, #4 18c46: 1a18 subs r0, r3, r0 18c48: 0040 lsls r0, r0, #1 18c4a: 3050 adds r0, #80 ; 0x50 18c4c: 21a0 movs r1, #160 ; 0xa0 18c4e: 4b65 ldr r3, [pc, #404] ; (18de4 ) 18c50: 4798 blx r3 18c52: b202 sxth r2, r0 18c54: f7ff f946 bl 17ee4 lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); 18c58: 2000 movs r0, #0 18c5a: 4b61 ldr r3, [pc, #388] ; (18de0 ) 18c5c: 4798 blx r3 18c5e: 0103 lsls r3, r0, #4 18c60: 1a18 subs r0, r3, r0 18c62: 3050 adds r0, #80 ; 0x50 18c64: 2340 movs r3, #64 ; 0x40 18c66: 33ff adds r3, #255 ; 0xff 18c68: 2201 movs r2, #1 18c6a: 4298 cmp r0, r3 18c6c: d801 bhi.n 18c72 18c6e: f7ff f955 bl 17f1c 18c72: 2000 movs r0, #0 18c74: 4b5a ldr r3, [pc, #360] ; (18de0 ) 18c76: 4798 blx r3 18c78: 0103 lsls r3, r0, #4 18c7a: 1a18 subs r0, r3, r0 18c7c: 3050 adds r0, #80 ; 0x50 18c7e: 21a0 movs r1, #160 ; 0xa0 18c80: 4b58 ldr r3, [pc, #352] ; (18de4 ) 18c82: 4798 blx r3 18c84: b202 sxth r2, r0 18c86: f7ff f949 bl 17f1c 18c8a: 2000 movs r0, #0 18c8c: 4b54 ldr r3, [pc, #336] ; (18de0 ) 18c8e: 4798 blx r3 18c90: 0103 lsls r3, r0, #4 18c92: 1a18 subs r0, r3, r0 18c94: 0040 lsls r0, r0, #1 18c96: 3050 adds r0, #80 ; 0x50 18c98: 21a0 movs r1, #160 ; 0xa0 18c9a: 4b52 ldr r3, [pc, #328] ; (18de4 ) 18c9c: 4798 blx r3 18c9e: b202 sxth r2, r0 18ca0: f7ff f93c bl 17f1c lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); 18ca4: 231a movs r3, #26 18ca6: 2137 movs r1, #55 ; 0x37 18ca8: 221c movs r2, #28 18caa: f7ff f94b bl 17f44 lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18cae: 2000 movs r0, #0 18cb0: 4b4b ldr r3, [pc, #300] ; (18de0 ) 18cb2: 4798 blx r3 18cb4: 0103 lsls r3, r0, #4 18cb6: 1a18 subs r0, r3, r0 18cb8: 3050 adds r0, #80 ; 0x50 18cba: 2340 movs r3, #64 ; 0x40 18cbc: 33ff adds r3, #255 ; 0xff 18cbe: 2201 movs r2, #1 18cc0: 4298 cmp r0, r3 18cc2: d801 bhi.n 18cc8 18cc4: f7ff f968 bl 17f98 18cc8: 2000 movs r0, #0 18cca: 4b45 ldr r3, [pc, #276] ; (18de0 ) 18ccc: 4798 blx r3 18cce: 0103 lsls r3, r0, #4 18cd0: 1a18 subs r0, r3, r0 18cd2: 3050 adds r0, #80 ; 0x50 18cd4: 21a0 movs r1, #160 ; 0xa0 18cd6: 4b43 ldr r3, [pc, #268] ; (18de4 ) 18cd8: 4798 blx r3 18cda: b202 sxth r2, r0 18cdc: f7ff f95c bl 17f98 18ce0: 2000 movs r0, #0 18ce2: 4b3f ldr r3, [pc, #252] ; (18de0 ) 18ce4: 4798 blx r3 18ce6: 0103 lsls r3, r0, #4 18ce8: 1a18 subs r0, r3, r0 18cea: 0040 lsls r0, r0, #1 18cec: 3050 adds r0, #80 ; 0x50 18cee: 21a0 movs r1, #160 ; 0xa0 18cf0: 4b3c ldr r3, [pc, #240] ; (18de4 ) 18cf2: 4798 blx r3 18cf4: b202 sxth r2, r0 18cf6: f7ff f94f bl 17f98 lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18cfa: 2000 movs r0, #0 18cfc: 4b38 ldr r3, [pc, #224] ; (18de0 ) 18cfe: 4798 blx r3 18d00: 0103 lsls r3, r0, #4 18d02: 1a18 subs r0, r3, r0 18d04: 3050 adds r0, #80 ; 0x50 18d06: 2340 movs r3, #64 ; 0x40 18d08: 33ff adds r3, #255 ; 0xff 18d0a: 2201 movs r2, #1 18d0c: 4298 cmp r0, r3 18d0e: d801 bhi.n 18d14 18d10: f7ff f95e bl 17fd0 18d14: 2000 movs r0, #0 18d16: 4b32 ldr r3, [pc, #200] ; (18de0 ) 18d18: 4798 blx r3 18d1a: 0103 lsls r3, r0, #4 18d1c: 1a18 subs r0, r3, r0 18d1e: 3050 adds r0, #80 ; 0x50 18d20: 21a0 movs r1, #160 ; 0xa0 18d22: 4b30 ldr r3, [pc, #192] ; (18de4 ) 18d24: 4798 blx r3 18d26: b202 sxth r2, r0 18d28: f7ff f952 bl 17fd0 18d2c: 2000 movs r0, #0 18d2e: 4b2c ldr r3, [pc, #176] ; (18de0 ) 18d30: 4798 blx r3 18d32: 0103 lsls r3, r0, #4 18d34: 1a18 subs r0, r3, r0 18d36: 0040 lsls r0, r0, #1 18d38: 3050 adds r0, #80 ; 0x50 18d3a: 21a0 movs r1, #160 ; 0xa0 18d3c: 4b29 ldr r3, [pc, #164] ; (18de4 ) 18d3e: 4798 blx r3 18d40: b202 sxth r2, r0 18d42: f7ff f945 bl 17fd0 lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18d46: 2000 movs r0, #0 18d48: 4b25 ldr r3, [pc, #148] ; (18de0 ) 18d4a: 4798 blx r3 18d4c: 0103 lsls r3, r0, #4 18d4e: 1a18 subs r0, r3, r0 18d50: 3050 adds r0, #80 ; 0x50 18d52: 2340 movs r3, #64 ; 0x40 18d54: 33ff adds r3, #255 ; 0xff 18d56: 2201 movs r2, #1 18d58: 4298 cmp r0, r3 18d5a: d801 bhi.n 18d60 18d5c: f7ff f954 bl 18008 18d60: 2000 movs r0, #0 18d62: 4b1f ldr r3, [pc, #124] ; (18de0 ) 18d64: 4798 blx r3 18d66: 0103 lsls r3, r0, #4 18d68: 1a18 subs r0, r3, r0 18d6a: 3050 adds r0, #80 ; 0x50 18d6c: 21a0 movs r1, #160 ; 0xa0 18d6e: 4b1d ldr r3, [pc, #116] ; (18de4 ) 18d70: 4798 blx r3 18d72: b202 sxth r2, r0 18d74: f7ff f948 bl 18008 18d78: 2000 movs r0, #0 18d7a: 4b19 ldr r3, [pc, #100] ; (18de0 ) 18d7c: 4798 blx r3 18d7e: 0103 lsls r3, r0, #4 18d80: 1a18 subs r0, r3, r0 18d82: 0040 lsls r0, r0, #1 18d84: 3050 adds r0, #80 ; 0x50 18d86: 21a0 movs r1, #160 ; 0xa0 18d88: 4b16 ldr r3, [pc, #88] ; (18de4 ) 18d8a: 4798 blx r3 18d8c: b202 sxth r2, r0 18d8e: f7ff f93b bl 18008 lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); 18d92: 2000 movs r0, #0 18d94: 4b12 ldr r3, [pc, #72] ; (18de0 ) 18d96: 4798 blx r3 18d98: 0103 lsls r3, r0, #4 18d9a: 1a18 subs r0, r3, r0 18d9c: 3050 adds r0, #80 ; 0x50 18d9e: 2340 movs r3, #64 ; 0x40 18da0: 33ff adds r3, #255 ; 0xff 18da2: 2201 movs r2, #1 18da4: 4298 cmp r0, r3 18da6: d801 bhi.n 18dac 18da8: f7ff f94a bl 18040 18dac: 2000 movs r0, #0 18dae: 4b0c ldr r3, [pc, #48] ; (18de0 ) 18db0: 4798 blx r3 18db2: 0103 lsls r3, r0, #4 18db4: 1a18 subs r0, r3, r0 18db6: 3050 adds r0, #80 ; 0x50 18db8: 21a0 movs r1, #160 ; 0xa0 18dba: 4b0a ldr r3, [pc, #40] ; (18de4 ) 18dbc: 4798 blx r3 18dbe: b202 sxth r2, r0 18dc0: f7ff f93e bl 18040 18dc4: 2000 movs r0, #0 18dc6: 4b06 ldr r3, [pc, #24] ; (18de0 ) 18dc8: 4798 blx r3 18dca: 0103 lsls r3, r0, #4 18dcc: 1a18 subs r0, r3, r0 18dce: 0040 lsls r0, r0, #1 18dd0: 3050 adds r0, #80 ; 0x50 18dd2: 21a0 movs r1, #160 ; 0xa0 18dd4: 4b03 ldr r3, [pc, #12] ; (18de4 ) 18dd6: 4798 blx r3 18dd8: b202 sxth r2, r0 18dda: f7ff f931 bl 18040 18dde: 46c0 nop ; (mov r8, r8) 18de0: 00010dd1 .word 0x00010dd1 18de4: 0001c0a5 .word 0x0001c0a5 00018de8 : * LV_DESIGN_DRAW: draw the object (always return 'true') * LV_DESIGN_DRAW_POST: drawing after every children are drawn * @param return an element of `lv_design_res_t` */ static lv_design_res_t lv_img_design(lv_obj_t * img, const lv_area_t * clip_area, lv_design_mode_t mode) { 18de8: b5f0 push {r4, r5, r6, r7, lr} 18dea: 46de mov lr, fp 18dec: 4657 mov r7, sl 18dee: 464e mov r6, r9 18df0: 4645 mov r5, r8 18df2: b5e0 push {r5, r6, r7, lr} 18df4: b0a7 sub sp, #156 ; 0x9c 18df6: 0004 movs r4, r0 18df8: 9103 str r1, [sp, #12] 18dfa: 0016 movs r6, r2 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 18dfc: 4bd2 ldr r3, [pc, #840] ; (19148 ) 18dfe: 4798 blx r3 18e00: 0005 movs r5, r0 if(mode == LV_DESIGN_COVER_CHK) { 18e02: 2e02 cmp r6, #2 18e04: d100 bne.n 18e08 18e06: e0a5 b.n 18f54 if(lv_obj_get_style_image_opa(img, LV_IMG_PART_MAIN) != LV_OPA_COVER) return LV_DESIGN_RES_NOT_COVER; return LV_DESIGN_RES_COVER; } else if(mode == LV_DESIGN_DRAW_MAIN) { 18e08: 2e00 cmp r6, #0 18e0a: d000 beq.n 18e0e 18e0c: e1e2 b.n 191d4 if(ext->h == 0 || ext->w == 0) return true; 18e0e: 220a movs r2, #10 18e10: 5e83 ldrsh r3, [r0, r2] 18e12: 2001 movs r0, #1 18e14: 2b00 cmp r3, #0 18e16: d100 bne.n 18e1a 18e18: e1df b.n 191da 18e1a: 2208 movs r2, #8 18e1c: 5eab ldrsh r3, [r5, r2] 18e1e: 2b00 cmp r3, #0 18e20: d100 bne.n 18e24 18e22: e1da b.n 191da lv_area_t img_coords; lv_obj_get_coords(img, &img_coords); 18e24: a904 add r1, sp, #16 18e26: 0020 movs r0, r4 18e28: 4bc8 ldr r3, [pc, #800] ; (1914c ) 18e2a: 4798 blx r3 lv_draw_rect_dsc_t bg_dsc; lv_draw_rect_dsc_init(&bg_dsc); 18e2c: a811 add r0, sp, #68 ; 0x44 18e2e: 4bc8 ldr r3, [pc, #800] ; (19150 ) 18e30: 4798 blx r3 lv_obj_init_draw_rect_dsc(img, LV_IMG_PART_MAIN, &bg_dsc); 18e32: aa11 add r2, sp, #68 ; 0x44 18e34: 2100 movs r1, #0 18e36: 0020 movs r0, r4 18e38: 4bc6 ldr r3, [pc, #792] ; (19154 ) 18e3a: 4798 blx r3 _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) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_WIDTH, border_width, lv_style_int_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_SIDE, border_side, lv_border_side_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 18e3c: 2233 movs r2, #51 ; 0x33 18e3e: 2100 movs r1, #0 18e40: 0020 movs r0, r4 18e42: 4bc5 ldr r3, [pc, #788] ; (19158 ) 18e44: 4798 blx r3 /*If the border is drawn later disable loading its properties*/ if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 18e46: 2800 cmp r0, #0 18e48: d002 beq.n 18e50 bg_dsc.border_opa = LV_OPA_TRANSP; 18e4a: 2200 movs r2, #0 18e4c: ab11 add r3, sp, #68 ; 0x44 18e4e: 751a strb r2, [r3, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 18e50: 2207 movs r2, #7 18e52: 2100 movs r1, #0 18e54: 0020 movs r0, r4 18e56: 4bc0 ldr r3, [pc, #768] ; (19158 ) 18e58: 4798 blx r3 } int32_t zoom_final = lv_obj_get_style_transform_zoom(img, LV_IMG_PART_MAIN); zoom_final = (zoom_final * ext->zoom) >> 8; 18e5a: 8a6e ldrh r6, [r5, #18] 18e5c: 4346 muls r6, r0 18e5e: 1236 asrs r6, r6, #8 if(zoom_final == 0) return LV_DESIGN_RES_OK; 18e60: 2000 movs r0, #0 18e62: 2e00 cmp r6, #0 18e64: d100 bne.n 18e68 18e66: e1b8 b.n 191da _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 18e68: 2206 movs r2, #6 18e6a: 2100 movs r1, #0 18e6c: 0020 movs r0, r4 18e6e: 4bba ldr r3, [pc, #744] ; (19158 ) 18e70: 469a mov sl, r3 18e72: 4798 blx r3 int32_t angle_final = lv_obj_get_style_transform_angle(img, LV_IMG_PART_MAIN); angle_final += ext->angle; 18e74: 89ab ldrh r3, [r5, #12] 18e76: 4698 mov r8, r3 18e78: 4480 add r8, r0 lv_area_t bg_coords; _lv_img_buf_get_transformed_area(&bg_coords, lv_area_get_width(&img_coords), lv_area_get_height(&img_coords), 18e7a: b2b3 uxth r3, r6 18e7c: 4699 mov r9, r3 18e7e: 4643 mov r3, r8 18e80: b21b sxth r3, r3 * @param area_p pointer to an area * @return the height of the area (if y1 == y2 -> height = 1) */ static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p) { return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 18e82: aa02 add r2, sp, #8 18e84: 89d2 ldrh r2, [r2, #14] 18e86: 3201 adds r2, #1 18e88: a902 add r1, sp, #8 18e8a: 8949 ldrh r1, [r1, #10] 18e8c: 1a52 subs r2, r2, r1 18e8e: b212 sxth r2, r2 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 18e90: a902 add r1, sp, #8 18e92: 8989 ldrh r1, [r1, #12] 18e94: 3101 adds r1, #1 18e96: a802 add r0, sp, #8 18e98: 8900 ldrh r0, [r0, #8] 18e9a: 1a09 subs r1, r1, r0 18e9c: b209 sxth r1, r1 18e9e: ae06 add r6, sp, #24 18ea0: 0028 movs r0, r5 18ea2: 300e adds r0, #14 18ea4: 9001 str r0, [sp, #4] 18ea6: 4648 mov r0, r9 18ea8: 9000 str r0, [sp, #0] 18eaa: 0030 movs r0, r6 18eac: 4fab ldr r7, [pc, #684] ; (1915c ) 18eae: 47b8 blx r7 angle_final, zoom_final, &ext->pivot); bg_coords.x1 += img_coords.x1; 18eb0: ab02 add r3, sp, #8 18eb2: 891a ldrh r2, [r3, #8] 18eb4: 8833 ldrh r3, [r6, #0] 18eb6: 18d3 adds r3, r2, r3 18eb8: 8033 strh r3, [r6, #0] bg_coords.y1 += img_coords.y1; 18eba: ab02 add r3, sp, #8 18ebc: 895b ldrh r3, [r3, #10] 18ebe: 8871 ldrh r1, [r6, #2] 18ec0: 1859 adds r1, r3, r1 18ec2: 8071 strh r1, [r6, #2] bg_coords.x2 += img_coords.x1; 18ec4: 88b1 ldrh r1, [r6, #4] 18ec6: 1852 adds r2, r2, r1 18ec8: 80b2 strh r2, [r6, #4] bg_coords.y2 += img_coords.y1; 18eca: 88f2 ldrh r2, [r6, #6] 18ecc: 189b adds r3, r3, r2 18ece: 80f3 strh r3, [r6, #6] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 18ed0: 2212 movs r2, #18 18ed2: 2100 movs r1, #0 18ed4: 0020 movs r0, r4 18ed6: 47d0 blx sl bg_coords.x1 -= lv_obj_get_style_pad_left(img, LV_IMG_PART_MAIN); 18ed8: 8833 ldrh r3, [r6, #0] 18eda: 1a18 subs r0, r3, r0 18edc: 8030 strh r0, [r6, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 18ede: 2213 movs r2, #19 18ee0: 2100 movs r1, #0 18ee2: 0020 movs r0, r4 18ee4: 47d0 blx sl bg_coords.x2 += lv_obj_get_style_pad_right(img, LV_IMG_PART_MAIN); 18ee6: 88b3 ldrh r3, [r6, #4] 18ee8: 1818 adds r0, r3, r0 18eea: 80b0 strh r0, [r6, #4] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 18eec: 2210 movs r2, #16 18eee: 2100 movs r1, #0 18ef0: 0020 movs r0, r4 18ef2: 47d0 blx sl bg_coords.y1 -= lv_obj_get_style_pad_top(img, LV_IMG_PART_MAIN); 18ef4: 8873 ldrh r3, [r6, #2] 18ef6: 1a18 subs r0, r3, r0 18ef8: 8070 strh r0, [r6, #2] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 18efa: 2211 movs r2, #17 18efc: 2100 movs r1, #0 18efe: 0020 movs r0, r4 18f00: 47d0 blx sl bg_coords.y2 += lv_obj_get_style_pad_bottom(img, LV_IMG_PART_MAIN); 18f02: 88f3 ldrh r3, [r6, #6] 18f04: 1818 adds r0, r3, r0 18f06: 80f0 strh r0, [r6, #6] lv_draw_rect(&bg_coords, clip_area, &bg_dsc); 18f08: aa11 add r2, sp, #68 ; 0x44 18f0a: 9903 ldr r1, [sp, #12] 18f0c: 0030 movs r0, r6 18f0e: 4b94 ldr r3, [pc, #592] ; (19160 ) 18f10: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 18f12: 2202 movs r2, #2 18f14: 2100 movs r1, #0 18f16: 0020 movs r0, r4 18f18: 47d0 blx sl if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 18f1a: 2800 cmp r0, #0 18f1c: d000 beq.n 18f20 18f1e: e087 b.n 19030 lv_draw_mask_radius_init(mp, &bg_coords, r, false); /*Add the mask and use `img+8` as custom id. Don't use `obj` directly because it might be used by the user*/ lv_draw_mask_add(mp, img + 8); } if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_VARIABLE) { 18f20: 7d2a ldrb r2, [r5, #20] 18f22: 2303 movs r3, #3 18f24: 4013 ands r3, r2 18f26: 2b01 cmp r3, #1 18f28: d800 bhi.n 18f2c 18f2a: e097 b.n 1905c for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); } } } else if(ext->src_type == LV_IMG_SRC_SYMBOL) { 18f2c: 2b02 cmp r3, #2 18f2e: d100 bne.n 18f32 18f30: e138 b.n 191a4 label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); } else { /*Trigger the error handler of image drawer*/ LV_LOG_WARN("lv_img_design: image source type is unknown"); 18f32: 4b8c ldr r3, [pc, #560] ; (19164 ) 18f34: 9300 str r3, [sp, #0] 18f36: 4b8c ldr r3, [pc, #560] ; (19168 ) 18f38: 4a8c ldr r2, [pc, #560] ; (1916c ) 18f3a: 498d ldr r1, [pc, #564] ; (19170 ) 18f3c: 2002 movs r0, #2 18f3e: 4e8d ldr r6, [pc, #564] ; (19174 ) 18f40: 47b0 blx r6 lv_draw_img(&img->coords, clip_area, NULL, NULL); 18f42: 0020 movs r0, r4 18f44: 3010 adds r0, #16 18f46: 2300 movs r3, #0 18f48: 2200 movs r2, #0 18f4a: 9903 ldr r1, [sp, #12] 18f4c: 4c8a ldr r4, [pc, #552] ; (19178 ) 18f4e: 47a0 blx r4 lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); lv_draw_rect(&img->coords, clip_area, &draw_dsc); } } return LV_DESIGN_RES_OK; 18f50: 2000 movs r0, #0 18f52: e142 b.n 191da 18f54: 2202 movs r2, #2 18f56: 2100 movs r1, #0 18f58: 0020 movs r0, r4 18f5a: 4b7f ldr r3, [pc, #508] ; (19158 ) 18f5c: 4798 blx r3 18f5e: 0003 movs r3, r0 if(lv_obj_get_style_clip_corner(img, LV_IMG_PART_MAIN)) return LV_DESIGN_RES_MASKED; 18f60: 2003 movs r0, #3 18f62: 2b00 cmp r3, #0 18f64: d000 beq.n 18f68 18f66: e138 b.n 191da if(ext->src_type == LV_IMG_SRC_UNKNOWN || ext->src_type == LV_IMG_SRC_SYMBOL) return LV_DESIGN_RES_NOT_COVER; 18f68: 7d2a ldrb r2, [r5, #20] 18f6a: 3303 adds r3, #3 18f6c: 4013 ands r3, r2 18f6e: 3b02 subs r3, #2 18f70: 3801 subs r0, #1 18f72: 2b01 cmp r3, #1 18f74: d800 bhi.n 18f78 18f76: e130 b.n 191da if(ext->cf != LV_IMG_CF_TRUE_COLOR && ext->cf != LV_IMG_CF_RAW) return LV_DESIGN_RES_NOT_COVER; 18f78: 2307 movs r3, #7 18f7a: 439a bics r2, r3 18f7c: 2a20 cmp r2, #32 18f7e: d002 beq.n 18f86 18f80: 2a08 cmp r2, #8 18f82: d000 beq.n 18f86 18f84: e129 b.n 191da _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 18f86: 2206 movs r2, #6 18f88: 2100 movs r1, #0 18f8a: 0020 movs r0, r4 18f8c: 4b72 ldr r3, [pc, #456] ; (19158 ) 18f8e: 4798 blx r3 angle_final += ext->angle; 18f90: 89ab ldrh r3, [r5, #12] 18f92: 181b adds r3, r3, r0 if(angle_final == 0) return LV_DESIGN_RES_NOT_COVER; 18f94: 2002 movs r0, #2 18f96: 2b00 cmp r3, #0 18f98: d100 bne.n 18f9c 18f9a: e11e b.n 191da _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 18f9c: 2207 movs r2, #7 18f9e: 2100 movs r1, #0 18fa0: 0020 movs r0, r4 18fa2: 4b6d ldr r3, [pc, #436] ; (19158 ) 18fa4: 4798 blx r3 zoom_final = (zoom_final * ext->zoom) >> 8; 18fa6: 8a6b ldrh r3, [r5, #18] 18fa8: 4343 muls r3, r0 18faa: 121b asrs r3, r3, #8 if(zoom_final != LV_IMG_ZOOM_NONE) { 18fac: 2280 movs r2, #128 ; 0x80 18fae: 0052 lsls r2, r2, #1 18fb0: 4293 cmp r3, r2 18fb2: d009 beq.n 18fc8 if(_lv_area_is_in(clip_area, &img->coords, 0) == false) return LV_DESIGN_RES_NOT_COVER; 18fb4: 0021 movs r1, r4 18fb6: 3110 adds r1, #16 18fb8: 2200 movs r2, #0 18fba: 9803 ldr r0, [sp, #12] 18fbc: 4b6f ldr r3, [pc, #444] ; (1917c ) 18fbe: 4798 blx r3 18fc0: 2800 cmp r0, #0 18fc2: d12b bne.n 1901c 18fc4: 3002 adds r0, #2 18fc6: e108 b.n 191da _lv_img_buf_get_transformed_area(&a, lv_obj_get_width(img), lv_obj_get_height(img), 0, zoom_final, &ext->pivot); 18fc8: 0020 movs r0, r4 18fca: 4b6d ldr r3, [pc, #436] ; (19180 ) 18fcc: 4798 blx r3 18fce: 0007 movs r7, r0 18fd0: 0020 movs r0, r4 18fd2: 4b6c ldr r3, [pc, #432] ; (19184 ) 18fd4: 4798 blx r3 18fd6: 0002 movs r2, r0 18fd8: ae11 add r6, sp, #68 ; 0x44 18fda: 350e adds r5, #14 18fdc: 9501 str r5, [sp, #4] 18fde: 2380 movs r3, #128 ; 0x80 18fe0: 005b lsls r3, r3, #1 18fe2: 9300 str r3, [sp, #0] 18fe4: 2300 movs r3, #0 18fe6: 0039 movs r1, r7 18fe8: 0030 movs r0, r6 18fea: 4f5c ldr r7, [pc, #368] ; (1915c ) 18fec: 47b8 blx r7 a.x1 += img->coords.x1; 18fee: 8a22 ldrh r2, [r4, #16] 18ff0: 8833 ldrh r3, [r6, #0] 18ff2: 18d3 adds r3, r2, r3 18ff4: 8033 strh r3, [r6, #0] a.y1 += img->coords.y1; 18ff6: 8a63 ldrh r3, [r4, #18] 18ff8: 8871 ldrh r1, [r6, #2] 18ffa: 1859 adds r1, r3, r1 18ffc: 8071 strh r1, [r6, #2] a.x2 += img->coords.x1; 18ffe: 88b1 ldrh r1, [r6, #4] 19000: 1852 adds r2, r2, r1 19002: 80b2 strh r2, [r6, #4] a.y2 += img->coords.y1; 19004: 88f2 ldrh r2, [r6, #6] 19006: 189b adds r3, r3, r2 19008: 80f3 strh r3, [r6, #6] if(_lv_area_is_in(clip_area, &a, 0) == false) return LV_DESIGN_RES_NOT_COVER; 1900a: 2200 movs r2, #0 1900c: 0031 movs r1, r6 1900e: 9803 ldr r0, [sp, #12] 19010: 4b5a ldr r3, [pc, #360] ; (1917c ) 19012: 4798 blx r3 19014: 2800 cmp r0, #0 19016: d101 bne.n 1901c 19018: 3002 adds r0, #2 1901a: e0de b.n 191da _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_ROUNDED, line_rounded, bool, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(LINE_OPA, line_opa, lv_opa_t, _opa, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t, _int, scalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_OPA, image_opa, lv_opa_t, _opa, scalar) 1901c: 4a5a ldr r2, [pc, #360] ; (19188 ) 1901e: 2100 movs r1, #0 19020: 0020 movs r0, r4 19022: 4b5a ldr r3, [pc, #360] ; (1918c ) 19024: 4798 blx r3 return LV_DESIGN_RES_COVER; 19026: 38ff subs r0, #255 ; 0xff 19028: 1e43 subs r3, r0, #1 1902a: 4198 sbcs r0, r3 1902c: 3001 adds r0, #1 1902e: e0d4 b.n 191da lv_draw_mask_radius_param_t * mp = _lv_mem_buf_get(sizeof(lv_draw_mask_radius_param_t)); 19030: 201c movs r0, #28 19032: 4b57 ldr r3, [pc, #348] ; (19190 ) 19034: 4798 blx r3 19036: 0006 movs r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(RADIUS, radius, lv_style_int_t, _int, scalar) 19038: 2201 movs r2, #1 1903a: 2100 movs r1, #0 1903c: 0020 movs r0, r4 1903e: 4b46 ldr r3, [pc, #280] ; (19158 ) 19040: 4798 blx r3 19042: 0002 movs r2, r0 lv_draw_mask_radius_init(mp, &bg_coords, r, false); 19044: 2300 movs r3, #0 19046: a906 add r1, sp, #24 19048: 0030 movs r0, r6 1904a: 4f52 ldr r7, [pc, #328] ; (19194 ) 1904c: 47b8 blx r7 lv_draw_mask_add(mp, img + 8); 1904e: 2398 movs r3, #152 ; 0x98 19050: 009b lsls r3, r3, #2 19052: 18e1 adds r1, r4, r3 19054: 0030 movs r0, r6 19056: 4b50 ldr r3, [pc, #320] ; (19198 ) 19058: 4798 blx r3 1905a: e761 b.n 18f20 img_coords.x1 += ext->offset.x; 1905c: aa04 add r2, sp, #16 1905e: 8813 ldrh r3, [r2, #0] 19060: 88a9 ldrh r1, [r5, #4] 19062: 1859 adds r1, r3, r1 19064: b289 uxth r1, r1 19066: b20e sxth r6, r1 19068: 8016 strh r6, [r2, #0] img_coords.y1 += ext->offset.y; 1906a: 8853 ldrh r3, [r2, #2] 1906c: 88e8 ldrh r0, [r5, #6] 1906e: 181b adds r3, r3, r0 19070: b29b uxth r3, r3 19072: b218 sxth r0, r3 19074: 8050 strh r0, [r2, #2] if(img_coords.x1 > img->coords.x1) img_coords.x1 -= ext->w; 19076: 2710 movs r7, #16 19078: 5fe2 ldrsh r2, [r4, r7] 1907a: 42b2 cmp r2, r6 1907c: da03 bge.n 19086 1907e: 892a ldrh r2, [r5, #8] 19080: 1a89 subs r1, r1, r2 19082: aa04 add r2, sp, #16 19084: 8011 strh r1, [r2, #0] if(img_coords.y1 > img->coords.y1) img_coords.y1 -= ext->h; 19086: 2112 movs r1, #18 19088: 5e62 ldrsh r2, [r4, r1] 1908a: 4282 cmp r2, r0 1908c: da03 bge.n 19096 1908e: 896a ldrh r2, [r5, #10] 19090: 1a9b subs r3, r3, r2 19092: aa04 add r2, sp, #16 19094: 8053 strh r3, [r2, #2] lv_draw_img_dsc_init(&img_dsc); 19096: ae0a add r6, sp, #40 ; 0x28 19098: 0030 movs r0, r6 1909a: 4b40 ldr r3, [pc, #256] ; (1919c ) 1909c: 4798 blx r3 lv_obj_init_draw_img_dsc(img, LV_IMG_PART_MAIN, &img_dsc); 1909e: 0032 movs r2, r6 190a0: 2100 movs r1, #0 190a2: 0020 movs r0, r4 190a4: 4b3e ldr r3, [pc, #248] ; (191a0 ) 190a6: 4798 blx r3 img_dsc.zoom = zoom_final; 190a8: 464b mov r3, r9 190aa: 8133 strh r3, [r6, #8] if(img_dsc.zoom == 0) return LV_DESIGN_RES_OK; 190ac: 464b mov r3, r9 190ae: 2000 movs r0, #0 190b0: 2b00 cmp r3, #0 190b2: d100 bne.n 190b6 190b4: e091 b.n 191da img_dsc.angle = angle_final; 190b6: ab0a add r3, sp, #40 ; 0x28 190b8: 4642 mov r2, r8 190ba: 805a strh r2, [r3, #2] img_dsc.pivot.x = ext->pivot.x; 190bc: 89ea ldrh r2, [r5, #14] 190be: 809a strh r2, [r3, #4] img_dsc.pivot.y = ext->pivot.y; 190c0: 8a2a ldrh r2, [r5, #16] 190c2: 80da strh r2, [r3, #6] img_dsc.antialias = ext->antialias; 190c4: 7d6a ldrb r2, [r5, #21] 190c6: 2101 movs r1, #1 190c8: 4011 ands r1, r2 190ca: 7bda ldrb r2, [r3, #15] 190cc: 2001 movs r0, #1 190ce: 4382 bics r2, r0 190d0: 430a orrs r2, r1 190d2: 73da strb r2, [r3, #15] cords_tmp.y1 = img_coords.y1; 190d4: a904 add r1, sp, #16 190d6: 2202 movs r2, #2 190d8: 5e8b ldrsh r3, [r1, r2] 190da: a808 add r0, sp, #32 190dc: 8043 strh r3, [r0, #2] cords_tmp.y2 = img_coords.y1 + ext->h - 1; 190de: 1e5c subs r4, r3, #1 190e0: 896a ldrh r2, [r5, #10] 190e2: 1912 adds r2, r2, r4 190e4: 80c2 strh r2, [r0, #6] for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 190e6: 2206 movs r2, #6 190e8: 5e8a ldrsh r2, [r1, r2] 190ea: 429a cmp r2, r3 190ec: da00 bge.n 190f0 190ee: e72f b.n 18f50 cords_tmp.x1 = img_coords.x1; 190f0: ae04 add r6, sp, #16 190f2: 0004 movs r4, r0 lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 190f4: 4f20 ldr r7, [pc, #128] ; (19178 ) cords_tmp.x1 = img_coords.x1; 190f6: 2200 movs r2, #0 190f8: 5eb3 ldrsh r3, [r6, r2] 190fa: 8023 strh r3, [r4, #0] cords_tmp.x2 = img_coords.x1 + ext->w - 1; 190fc: 1e59 subs r1, r3, #1 190fe: 892a ldrh r2, [r5, #8] 19100: 1852 adds r2, r2, r1 19102: 80a2 strh r2, [r4, #4] for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 19104: 2104 movs r1, #4 19106: 5e72 ldrsh r2, [r6, r1] 19108: 429a cmp r2, r3 1910a: db10 blt.n 1912e lv_draw_img(&cords_tmp, clip_area, ext->src, &img_dsc); 1910c: ab0a add r3, sp, #40 ; 0x28 1910e: 682a ldr r2, [r5, #0] 19110: 9903 ldr r1, [sp, #12] 19112: 0020 movs r0, r4 19114: 47b8 blx r7 for(; cords_tmp.x1 <= img_coords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) { 19116: 892a ldrh r2, [r5, #8] 19118: 8823 ldrh r3, [r4, #0] 1911a: 18d3 adds r3, r2, r3 1911c: b21b sxth r3, r3 1911e: 8023 strh r3, [r4, #0] 19120: 88a1 ldrh r1, [r4, #4] 19122: 1852 adds r2, r2, r1 19124: 80a2 strh r2, [r4, #4] 19126: 2104 movs r1, #4 19128: 5e72 ldrsh r2, [r6, r1] 1912a: 429a cmp r2, r3 1912c: daee bge.n 1910c for(; cords_tmp.y1 <= img_coords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) { 1912e: 896a ldrh r2, [r5, #10] 19130: 8863 ldrh r3, [r4, #2] 19132: 18d3 adds r3, r2, r3 19134: b21b sxth r3, r3 19136: 8063 strh r3, [r4, #2] 19138: 88e1 ldrh r1, [r4, #6] 1913a: 1852 adds r2, r2, r1 1913c: 80e2 strh r2, [r4, #6] 1913e: 2106 movs r1, #6 19140: 5e72 ldrsh r2, [r6, r1] 19142: 429a cmp r2, r3 19144: dad7 bge.n 190f6 19146: e703 b.n 18f50 19148: 000043d1 .word 0x000043d1 1914c: 0000237d .word 0x0000237d 19150: 0000bfcd .word 0x0000bfcd 19154: 00004701 .word 0x00004701 19158: 00003a89 .word 0x00003a89 1915c: 0000e92d .word 0x0000e92d 19160: 0000c071 .word 0x0000c071 19164: 000264b4 .word 0x000264b4 19168: 0002ade4 .word 0x0002ade4 1916c: 000002bb .word 0x000002bb 19170: 0002ae04 .word 0x0002ae04 19174: 00012159 .word 0x00012159 19178: 00009305 .word 0x00009305 1917c: 00011699 .word 0x00011699 19180: 000024a1 .word 0x000024a1 19184: 000024f5 .word 0x000024f5 19188: 000080ac .word 0x000080ac 1918c: 00003bed .word 0x00003bed 19190: 000127a1 .word 0x000127a1 19194: 0000bd01 .word 0x0000bd01 19198: 0000ba75 .word 0x0000ba75 1919c: 00009271 .word 0x00009271 191a0: 00004d6d .word 0x00004d6d lv_draw_label_dsc_init(&label_dsc); 191a4: ae0a add r6, sp, #40 ; 0x28 191a6: 0030 movs r0, r6 191a8: 4b26 ldr r3, [pc, #152] ; (19244 ) 191aa: 4798 blx r3 lv_obj_init_draw_label_dsc(img, LV_IMG_PART_MAIN, &label_dsc); 191ac: 0032 movs r2, r6 191ae: 2100 movs r1, #0 191b0: 0020 movs r0, r4 191b2: 4b25 ldr r3, [pc, #148] ; (19248 ) 191b4: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar) 191b6: 4a25 ldr r2, [pc, #148] ; (1924c ) 191b8: 2100 movs r1, #0 191ba: 0020 movs r0, r4 191bc: 4b24 ldr r3, [pc, #144] ; (19250 ) 191be: 4798 blx r3 label_dsc.color = lv_obj_get_style_image_recolor(img, LV_IMG_PART_MAIN); 191c0: 8030 strh r0, [r6, #0] lv_draw_label(&img_coords, clip_area, &label_dsc, ext->src, NULL); 191c2: 682b ldr r3, [r5, #0] 191c4: 2200 movs r2, #0 191c6: 9200 str r2, [sp, #0] 191c8: 0032 movs r2, r6 191ca: 9903 ldr r1, [sp, #12] 191cc: a804 add r0, sp, #16 191ce: 4c21 ldr r4, [pc, #132] ; (19254 ) 191d0: 47a0 blx r4 191d2: e6bd b.n 18f50 return LV_DESIGN_RES_OK; 191d4: 2000 movs r0, #0 else if(mode == LV_DESIGN_DRAW_POST) { 191d6: 2e01 cmp r6, #1 191d8: d006 beq.n 191e8 } 191da: b027 add sp, #156 ; 0x9c 191dc: bc3c pop {r2, r3, r4, r5} 191de: 4690 mov r8, r2 191e0: 4699 mov r9, r3 191e2: 46a2 mov sl, r4 191e4: 46ab mov fp, r5 191e6: bdf0 pop {r4, r5, r6, r7, pc} _LV_OBJ_STYLE_SET_GET_DECLARE(CLIP_CORNER, clip_corner, bool, _int, scalar) 191e8: 2202 movs r2, #2 191ea: 2100 movs r1, #0 191ec: 0020 movs r0, r4 191ee: 4b1a ldr r3, [pc, #104] ; (19258 ) 191f0: 4798 blx r3 if(lv_obj_get_style_clip_corner(img, LV_OBJ_PART_MAIN)) { 191f2: 2800 cmp r0, #0 191f4: d10b bne.n 1920e lv_draw_rect_dsc_init(&draw_dsc); 191f6: a811 add r0, sp, #68 ; 0x44 191f8: 4b18 ldr r3, [pc, #96] ; (1925c ) 191fa: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(BORDER_POST, border_post, bool, _int, scalar) 191fc: 2233 movs r2, #51 ; 0x33 191fe: 2100 movs r1, #0 19200: 0020 movs r0, r4 19202: 4b15 ldr r3, [pc, #84] ; (19258 ) 19204: 4798 blx r3 if(lv_obj_get_style_border_post(img, LV_OBJ_PART_MAIN)) { 19206: 2800 cmp r0, #0 19208: d109 bne.n 1921e return LV_DESIGN_RES_OK; 1920a: 2000 movs r0, #0 1920c: e7e5 b.n 191da lv_draw_mask_radius_param_t * param = lv_draw_mask_remove_custom(img + 8); 1920e: 2398 movs r3, #152 ; 0x98 19210: 009b lsls r3, r3, #2 19212: 18e0 adds r0, r4, r3 19214: 4b12 ldr r3, [pc, #72] ; (19260 ) 19216: 4798 blx r3 _lv_mem_buf_release(param); 19218: 4b12 ldr r3, [pc, #72] ; (19264 ) 1921a: 4798 blx r3 1921c: e7eb b.n 191f6 draw_dsc.bg_opa = LV_OPA_TRANSP; 1921e: ae11 add r6, sp, #68 ; 0x44 19220: 2300 movs r3, #0 19222: 7333 strb r3, [r6, #12] draw_dsc.pattern_opa = LV_OPA_TRANSP; 19224: 2236 movs r2, #54 ; 0x36 19226: 54b3 strb r3, [r6, r2] draw_dsc.shadow_opa = LV_OPA_TRANSP; 19228: 3a0e subs r2, #14 1922a: 54b3 strb r3, [r6, r2] lv_obj_init_draw_rect_dsc(img, LV_OBJ_PART_MAIN, &draw_dsc); 1922c: 0032 movs r2, r6 1922e: 2100 movs r1, #0 19230: 0020 movs r0, r4 19232: 4b0d ldr r3, [pc, #52] ; (19268 ) 19234: 4798 blx r3 lv_draw_rect(&img->coords, clip_area, &draw_dsc); 19236: 0020 movs r0, r4 19238: 3010 adds r0, #16 1923a: 0032 movs r2, r6 1923c: 9903 ldr r1, [sp, #12] 1923e: 4b0b ldr r3, [pc, #44] ; (1926c ) 19240: 4798 blx r3 19242: e7e2 b.n 1920a 19244: 000095ed .word 0x000095ed 19248: 00004ca5 .word 0x00004ca5 1924c: 000080a9 .word 0x000080a9 19250: 00003b49 .word 0x00003b49 19254: 0000963d .word 0x0000963d 19258: 00003a89 .word 0x00003a89 1925c: 0000bfcd .word 0x0000bfcd 19260: 0000bb41 .word 0x0000bb41 19264: 00012465 .word 0x00012465 19268: 00004701 .word 0x00004701 1926c: 0000c071 .word 0x0000c071 00019270 : { 19270: b530 push {r4, r5, lr} 19272: b083 sub sp, #12 19274: 0004 movs r4, r0 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 19276: 4b0d ldr r3, [pc, #52] ; (192ac ) 19278: 4798 blx r3 1927a: 2800 cmp r0, #0 1927c: d10d bne.n 1929a 1927e: 4b0c ldr r3, [pc, #48] ; (192b0 ) 19280: 9300 str r3, [sp, #0] 19282: 22e7 movs r2, #231 ; 0xe7 19284: 0052 lsls r2, r2, #1 19286: 490b ldr r1, [pc, #44] ; (192b4 ) 19288: 3003 adds r0, #3 1928a: 4d0b ldr r5, [pc, #44] ; (192b8 ) 1928c: 47a8 blx r5 1928e: 0022 movs r2, r4 19290: 2300 movs r3, #0 19292: 480a ldr r0, [pc, #40] ; (192bc ) 19294: 490a ldr r1, [pc, #40] ; (192c0 ) 19296: 4788 blx r1 19298: e7fe b.n 19298 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1929a: 0020 movs r0, r4 1929c: 4b09 ldr r3, [pc, #36] ; (192c4 ) 1929e: 4798 blx r3 return ext->auto_size == 0 ? false : true; 192a0: 7d00 ldrb r0, [r0, #20] 192a2: 0740 lsls r0, r0, #29 192a4: 0fc0 lsrs r0, r0, #31 } 192a6: b003 add sp, #12 192a8: bd30 pop {r4, r5, pc} 192aa: 46c0 nop ; (mov r8, r8) 192ac: 000017ad .word 0x000017ad 192b0: 0002adcc .word 0x0002adcc 192b4: 0002ae04 .word 0x0002ae04 192b8: 00012159 .word 0x00012159 192bc: 00025d20 .word 0x00025d20 192c0: 000017b5 .word 0x000017b5 192c4: 000043d1 .word 0x000043d1 000192c8 : { 192c8: b5f0 push {r4, r5, r6, r7, lr} 192ca: 46d6 mov lr, sl 192cc: 464f mov r7, r9 192ce: b580 push {r7, lr} 192d0: b089 sub sp, #36 ; 0x24 192d2: 0004 movs r4, r0 192d4: 9004 str r0, [sp, #16] 192d6: 000d movs r5, r1 LV_ASSERT_OBJ(img, LV_OBJX_NAME); 192d8: 4b83 ldr r3, [pc, #524] ; (194e8 ) 192da: 4798 blx r3 192dc: 2800 cmp r0, #0 192de: d10c bne.n 192fa 192e0: 4b82 ldr r3, [pc, #520] ; (194ec ) 192e2: 9300 str r3, [sp, #0] 192e4: 228f movs r2, #143 ; 0x8f 192e6: 4982 ldr r1, [pc, #520] ; (194f0 ) 192e8: 3003 adds r0, #3 192ea: 4d82 ldr r5, [pc, #520] ; (194f4 ) 192ec: 47a8 blx r5 192ee: 0022 movs r2, r4 192f0: 2300 movs r3, #0 192f2: 4881 ldr r0, [pc, #516] ; (194f8 ) 192f4: 4981 ldr r1, [pc, #516] ; (194fc ) 192f6: 4788 blx r1 192f8: e7fe b.n 192f8 lv_img_src_t src_type = lv_img_src_get_type(src_img); 192fa: 0028 movs r0, r5 192fc: 4b80 ldr r3, [pc, #512] ; (19500 ) 192fe: 4798 blx r3 19300: 4681 mov r9, r0 19302: 0007 movs r7, r0 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 19304: 9804 ldr r0, [sp, #16] 19306: 4b7f ldr r3, [pc, #508] ; (19504 ) 19308: 4798 blx r3 1930a: 0004 movs r4, r0 switch(src_type) { 1930c: 2f02 cmp r7, #2 1930e: d849 bhi.n 193a4 if(src_type == LV_IMG_SRC_UNKNOWN) { 19310: 2f03 cmp r7, #3 19312: d050 beq.n 193b6 lv_img_decoder_get_info(src_img, &header); 19314: a907 add r1, sp, #28 19316: 0028 movs r0, r5 19318: 4b7b ldr r3, [pc, #492] ; (19508 ) 1931a: 4798 blx r3 if(src_type == LV_IMG_SRC_VARIABLE) { 1931c: 2f00 cmp r7, #0 1931e: d062 beq.n 193e6 else if(src_type == LV_IMG_SRC_FILE || src_type == LV_IMG_SRC_SYMBOL) { 19320: 464b mov r3, r9 19322: 3b01 subs r3, #1 19324: b2db uxtb r3, r3 19326: 2b01 cmp r3, #1 19328: d800 bhi.n 1932c 1932a: e06f b.n 1940c if(src_type == LV_IMG_SRC_SYMBOL) { 1932c: 2f02 cmp r7, #2 1932e: d100 bne.n 19332 19330: e0a0 b.n 19474 ext->src_type = src_type; 19332: 2603 movs r6, #3 19334: 464b mov r3, r9 19336: 401e ands r6, r3 19338: 7d21 ldrb r1, [r4, #20] 1933a: 2303 movs r3, #3 1933c: 4399 bics r1, r3 ext->w = header.w; 1933e: 9b07 ldr r3, [sp, #28] 19340: 02db lsls r3, r3, #11 19342: 0d5b lsrs r3, r3, #21 19344: b298 uxth r0, r3 19346: 8123 strh r3, [r4, #8] ext->h = header.h; 19348: 2316 movs r3, #22 1934a: aa02 add r2, sp, #8 1934c: 4694 mov ip, r2 1934e: 4463 add r3, ip 19350: 881a ldrh r2, [r3, #0] 19352: 0952 lsrs r2, r2, #5 19354: b295 uxth r5, r2 19356: 8162 strh r2, [r4, #10] ext->cf = header.cf; 19358: ab07 add r3, sp, #28 1935a: 781a ldrb r2, [r3, #0] 1935c: 06d2 lsls r2, r2, #27 1935e: 0e12 lsrs r2, r2, #24 19360: 4331 orrs r1, r6 19362: 2307 movs r3, #7 19364: 400b ands r3, r1 19366: 4313 orrs r3, r2 19368: 7523 strb r3, [r4, #20] ext->pivot.x = header.w / 2; 1936a: 0840 lsrs r0, r0, #1 1936c: 81e0 strh r0, [r4, #14] ext->pivot.y = header.h / 2; 1936e: 086d lsrs r5, r5, #1 19370: 8225 strh r5, [r4, #16] if(lv_img_get_auto_size(img) != false) { 19372: 9804 ldr r0, [sp, #16] 19374: 4b65 ldr r3, [pc, #404] ; (1950c ) 19376: 4798 blx r3 19378: 2800 cmp r0, #0 1937a: d000 beq.n 1937e 1937c: e0ab b.n 194d6 if(ext->angle || ext->zoom != LV_IMG_ZOOM_NONE) lv_obj_refresh_ext_draw_pad(img); 1937e: 89a3 ldrh r3, [r4, #12] 19380: 2b00 cmp r3, #0 19382: d104 bne.n 1938e 19384: 3301 adds r3, #1 19386: 33ff adds r3, #255 ; 0xff 19388: 8a62 ldrh r2, [r4, #18] 1938a: 429a cmp r2, r3 1938c: d002 beq.n 19394 1938e: 9804 ldr r0, [sp, #16] 19390: 4b5f ldr r3, [pc, #380] ; (19510 ) 19392: 4798 blx r3 lv_obj_invalidate(img); 19394: 9804 ldr r0, [sp, #16] 19396: 4b5f ldr r3, [pc, #380] ; (19514 ) 19398: 4798 blx r3 } 1939a: b009 add sp, #36 ; 0x24 1939c: bc0c pop {r2, r3} 1939e: 4691 mov r9, r2 193a0: 469a mov sl, r3 193a2: bdf0 pop {r4, r5, r6, r7, pc} LV_LOG_WARN("lv_img_set_src: unknown type"); 193a4: 4b5c ldr r3, [pc, #368] ; (19518 ) 193a6: 9300 str r3, [sp, #0] 193a8: 4b50 ldr r3, [pc, #320] ; (194ec ) 193aa: 22a0 movs r2, #160 ; 0xa0 193ac: 4950 ldr r1, [pc, #320] ; (194f0 ) 193ae: 2002 movs r0, #2 193b0: 4e50 ldr r6, [pc, #320] ; (194f4 ) 193b2: 47b0 blx r6 193b4: e7ac b.n 19310 LV_LOG_WARN("lv_img_set_src: unknown image type"); 193b6: 4b59 ldr r3, [pc, #356] ; (1951c ) 193b8: 9300 str r3, [sp, #0] 193ba: 4b4c ldr r3, [pc, #304] ; (194ec ) 193bc: 22a6 movs r2, #166 ; 0xa6 193be: 494c ldr r1, [pc, #304] ; (194f0 ) 193c0: 2002 movs r0, #2 193c2: 4d4c ldr r5, [pc, #304] ; (194f4 ) 193c4: 47a8 blx r5 if(ext->src_type == LV_IMG_SRC_SYMBOL || ext->src_type == LV_IMG_SRC_FILE) { 193c6: 7d22 ldrb r2, [r4, #20] 193c8: 2303 movs r3, #3 193ca: 4013 ands r3, r2 193cc: 3b01 subs r3, #1 193ce: 2b01 cmp r3, #1 193d0: d802 bhi.n 193d8 lv_mem_free(ext->src); 193d2: 6820 ldr r0, [r4, #0] 193d4: 4b52 ldr r3, [pc, #328] ; (19520 ) 193d6: 4798 blx r3 ext->src = NULL; 193d8: 2300 movs r3, #0 193da: 6023 str r3, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 193dc: 7d23 ldrb r3, [r4, #20] 193de: 2203 movs r2, #3 193e0: 4313 orrs r3, r2 193e2: 7523 strb r3, [r4, #20] return; 193e4: e7d9 b.n 1939a LV_LOG_INFO("lv_img_set_src: `LV_IMG_SRC_VARIABLE` type found"); 193e6: 4b4f ldr r3, [pc, #316] ; (19524 ) 193e8: 9300 str r3, [sp, #0] 193ea: 4b40 ldr r3, [pc, #256] ; (194ec ) 193ec: 22b4 movs r2, #180 ; 0xb4 193ee: 4940 ldr r1, [pc, #256] ; (194f0 ) 193f0: 2001 movs r0, #1 193f2: 4e40 ldr r6, [pc, #256] ; (194f4 ) 193f4: 47b0 blx r6 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 193f6: 7d22 ldrb r2, [r4, #20] 193f8: 2303 movs r3, #3 193fa: 4013 ands r3, r2 193fc: 3b01 subs r3, #1 193fe: 2b01 cmp r3, #1 19400: d802 bhi.n 19408 lv_mem_free(ext->src); 19402: 6820 ldr r0, [r4, #0] 19404: 4b46 ldr r3, [pc, #280] ; (19520 ) 19406: 4798 blx r3 ext->src = src_img; 19408: 6025 str r5, [r4, #0] 1940a: e792 b.n 19332 if(ext->src != src_img) { 1940c: 6823 ldr r3, [r4, #0] 1940e: 469a mov sl, r3 19410: 429d cmp r5, r3 19412: d100 bne.n 19416 19414: e78a b.n 1932c if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19416: 7d22 ldrb r2, [r4, #20] 19418: 2303 movs r3, #3 1941a: 4013 ands r3, r2 1941c: 3b01 subs r3, #1 1941e: 2b01 cmp r3, #1 19420: d901 bls.n 19426 const void * old_src = NULL; 19422: 2300 movs r3, #0 19424: 469a mov sl, r3 char * new_str = lv_mem_alloc(strlen(src_img) + 1); 19426: 0028 movs r0, r5 19428: 4b3f ldr r3, [pc, #252] ; (19528 ) 1942a: 4798 blx r3 1942c: 3001 adds r0, #1 1942e: 4b3f ldr r3, [pc, #252] ; (1952c ) 19430: 4798 blx r3 19432: 0006 movs r6, r0 LV_ASSERT_MEM(new_str); 19434: 4b2c ldr r3, [pc, #176] ; (194e8 ) 19436: 4798 blx r3 19438: 2800 cmp r0, #0 1943a: d10c bne.n 19456 1943c: 4b2b ldr r3, [pc, #172] ; (194ec ) 1943e: 9300 str r3, [sp, #0] 19440: 22c7 movs r2, #199 ; 0xc7 19442: 492b ldr r1, [pc, #172] ; (194f0 ) 19444: 3003 adds r0, #3 19446: 4c2b ldr r4, [pc, #172] ; (194f4 ) 19448: 47a0 blx r4 1944a: 0032 movs r2, r6 1944c: 2300 movs r3, #0 1944e: 4838 ldr r0, [pc, #224] ; (19530 ) 19450: 492a ldr r1, [pc, #168] ; (194fc ) 19452: 4788 blx r1 19454: e7fe b.n 19454 if(new_str == NULL) return; 19456: 2e00 cmp r6, #0 19458: d09f beq.n 1939a strcpy(new_str, src_img); 1945a: 0029 movs r1, r5 1945c: 0030 movs r0, r6 1945e: 4b35 ldr r3, [pc, #212] ; (19534 ) 19460: 4798 blx r3 ext->src = new_str; 19462: 6026 str r6, [r4, #0] if(old_src) lv_mem_free(old_src); 19464: 4653 mov r3, sl 19466: 2b00 cmp r3, #0 19468: d100 bne.n 1946c 1946a: e75f b.n 1932c 1946c: 4650 mov r0, sl 1946e: 4b2c ldr r3, [pc, #176] ; (19520 ) 19470: 4798 blx r3 19472: e75b b.n 1932c _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 19474: 4a30 ldr r2, [pc, #192] ; (19538 ) 19476: 2100 movs r1, #0 19478: 9e04 ldr r6, [sp, #16] 1947a: 0030 movs r0, r6 1947c: 4b2f ldr r3, [pc, #188] ; (1953c ) 1947e: 4798 blx r3 19480: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 19482: 4a2f ldr r2, [pc, #188] ; (19540 ) 19484: 2100 movs r1, #0 19486: 9604 str r6, [sp, #16] 19488: 0030 movs r0, r6 1948a: 4e2e ldr r6, [pc, #184] ; (19544 ) 1948c: 47b0 blx r6 1948e: 0007 movs r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 19490: 4a2d ldr r2, [pc, #180] ; (19548 ) 19492: 2100 movs r1, #0 19494: 9804 ldr r0, [sp, #16] 19496: 47b0 blx r6 _lv_txt_get_size(&size, src_img, font, letter_space, line_space, 19498: ae06 add r6, sp, #24 1949a: 2300 movs r3, #0 1949c: 9302 str r3, [sp, #8] 1949e: 4b2b ldr r3, [pc, #172] ; (1954c ) 194a0: 9301 str r3, [sp, #4] 194a2: 9000 str r0, [sp, #0] 194a4: 003b movs r3, r7 194a6: 9a05 ldr r2, [sp, #20] 194a8: 0029 movs r1, r5 194aa: 0030 movs r0, r6 194ac: 4d28 ldr r5, [pc, #160] ; (19550 ) 194ae: 47a8 blx r5 header.w = size.x; 194b0: 8833 ldrh r3, [r6, #0] 194b2: 055b lsls r3, r3, #21 194b4: 0ada lsrs r2, r3, #11 194b6: 4b27 ldr r3, [pc, #156] ; (19554 ) 194b8: 9907 ldr r1, [sp, #28] 194ba: 400b ands r3, r1 194bc: 4313 orrs r3, r2 194be: 9307 str r3, [sp, #28] header.h = size.y; 194c0: 8872 ldrh r2, [r6, #2] 194c2: 0152 lsls r2, r2, #5 194c4: 02db lsls r3, r3, #11 194c6: 0edb lsrs r3, r3, #27 194c8: 4313 orrs r3, r2 194ca: 2216 movs r2, #22 194cc: a902 add r1, sp, #8 194ce: 468c mov ip, r1 194d0: 4462 add r2, ip 194d2: 8013 strh r3, [r2, #0] 194d4: e72d b.n 19332 lv_obj_set_size(img, ext->w, ext->h); 194d6: 230a movs r3, #10 194d8: 5ee2 ldrsh r2, [r4, r3] 194da: 2308 movs r3, #8 194dc: 5ee1 ldrsh r1, [r4, r3] 194de: 9804 ldr r0, [sp, #16] 194e0: 4b1d ldr r3, [pc, #116] ; (19558 ) 194e2: 4798 blx r3 194e4: e74b b.n 1937e 194e6: 46c0 nop ; (mov r8, r8) 194e8: 000017ad .word 0x000017ad 194ec: 0002adbc .word 0x0002adbc 194f0: 0002ae04 .word 0x0002ae04 194f4: 00012159 .word 0x00012159 194f8: 00025d20 .word 0x00025d20 194fc: 000017b5 .word 0x000017b5 19500: 00009589 .word 0x00009589 19504: 000043d1 .word 0x000043d1 19508: 0000fc21 .word 0x0000fc21 1950c: 00019271 .word 0x00019271 19510: 0000214d .word 0x0000214d 19514: 00002869 .word 0x00002869 19518: 0002ae38 .word 0x0002ae38 1951c: 0002ae58 .word 0x0002ae58 19520: 000123c9 .word 0x000123c9 19524: 0002ae7c .word 0x0002ae7c 19528: 0001c709 .word 0x0001c709 1952c: 000122dd .word 0x000122dd 19530: 00025854 .word 0x00025854 19534: 0001c6f9 .word 0x0001c6f9 19538: 0000808e .word 0x0000808e 1953c: 00003c99 .word 0x00003c99 19540: 00008080 .word 0x00008080 19544: 00003a89 .word 0x00003a89 19548: 00008081 .word 0x00008081 1954c: 00007c18 .word 0x00007c18 19550: 00013f3d .word 0x00013f3d 19554: ffe003ff .word 0xffe003ff 19558: 00003851 .word 0x00003851 0001955c : { 1955c: b5f0 push {r4, r5, r6, r7, lr} 1955e: b085 sub sp, #20 19560: 9003 str r0, [sp, #12] 19562: 000e movs r6, r1 lv_obj_t * img = lv_obj_create(par, copy); 19564: 4b5c ldr r3, [pc, #368] ; (196d8 ) 19566: 4798 blx r3 19568: 0005 movs r5, r0 LV_ASSERT_MEM(img); 1956a: 4b5c ldr r3, [pc, #368] ; (196dc ) 1956c: 4798 blx r3 1956e: 2800 cmp r0, #0 19570: d01c beq.n 195ac if(img == NULL) return NULL; 19572: 2d00 cmp r5, #0 19574: d100 bne.n 19578 19576: e08d b.n 19694 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 19578: 4b59 ldr r3, [pc, #356] ; (196e0 ) 1957a: 681b ldr r3, [r3, #0] 1957c: 2b00 cmp r3, #0 1957e: d022 beq.n 195c6 lv_img_ext_t * ext = lv_obj_allocate_ext_attr(img, sizeof(lv_img_ext_t)); 19580: 2118 movs r1, #24 19582: 0028 movs r0, r5 19584: 4b57 ldr r3, [pc, #348] ; (196e4 ) 19586: 4798 blx r3 19588: 0004 movs r4, r0 LV_ASSERT_MEM(ext); 1958a: 4b54 ldr r3, [pc, #336] ; (196dc ) 1958c: 4798 blx r3 1958e: 2800 cmp r0, #0 19590: d11f bne.n 195d2 19592: 4b55 ldr r3, [pc, #340] ; (196e8 ) 19594: 9300 str r3, [sp, #0] 19596: 2249 movs r2, #73 ; 0x49 19598: 4954 ldr r1, [pc, #336] ; (196ec ) 1959a: 3003 adds r0, #3 1959c: 4d54 ldr r5, [pc, #336] ; (196f0 ) 1959e: 47a8 blx r5 195a0: 0022 movs r2, r4 195a2: 2300 movs r3, #0 195a4: 4853 ldr r0, [pc, #332] ; (196f4 ) 195a6: 4954 ldr r1, [pc, #336] ; (196f8 ) 195a8: 4788 blx r1 195aa: e7fe b.n 195aa LV_ASSERT_MEM(img); 195ac: 4b4e ldr r3, [pc, #312] ; (196e8 ) 195ae: 9300 str r3, [sp, #0] 195b0: 2242 movs r2, #66 ; 0x42 195b2: 494e ldr r1, [pc, #312] ; (196ec ) 195b4: 3003 adds r0, #3 195b6: 4c4e ldr r4, [pc, #312] ; (196f0 ) 195b8: 47a0 blx r4 195ba: 002a movs r2, r5 195bc: 2300 movs r3, #0 195be: 484d ldr r0, [pc, #308] ; (196f4 ) 195c0: 494d ldr r1, [pc, #308] ; (196f8 ) 195c2: 4788 blx r1 195c4: e7fe b.n 195c4 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(img); 195c6: 0028 movs r0, r5 195c8: 4b4c ldr r3, [pc, #304] ; (196fc ) 195ca: 4798 blx r3 195cc: 4b44 ldr r3, [pc, #272] ; (196e0 ) 195ce: 6018 str r0, [r3, #0] 195d0: e7d6 b.n 19580 if(ext == NULL) { 195d2: 2c00 cmp r4, #0 195d4: d061 beq.n 1969a ext->src = NULL; 195d6: 2700 movs r7, #0 195d8: 6027 str r7, [r4, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 195da: 7d23 ldrb r3, [r4, #20] 195dc: 2203 movs r2, #3 195de: 431a orrs r2, r3 ext->cf = LV_IMG_CF_UNKNOWN; 195e0: 2307 movs r3, #7 195e2: 4013 ands r3, r2 195e4: 7523 strb r3, [r4, #20] ext->w = lv_obj_get_width(img); 195e6: 0028 movs r0, r5 195e8: 4b45 ldr r3, [pc, #276] ; (19700 ) 195ea: 4798 blx r3 195ec: 8120 strh r0, [r4, #8] ext->h = lv_obj_get_height(img); 195ee: 0028 movs r0, r5 195f0: 4b44 ldr r3, [pc, #272] ; (19704 ) 195f2: 4798 blx r3 195f4: 8160 strh r0, [r4, #10] ext->angle = 0; 195f6: 81a7 strh r7, [r4, #12] ext->zoom = LV_IMG_ZOOM_NONE; 195f8: 2380 movs r3, #128 ; 0x80 195fa: 005b lsls r3, r3, #1 195fc: 8263 strh r3, [r4, #18] ext->antialias = LV_ANTIALIAS ? 1 : 0; 195fe: 7d63 ldrb r3, [r4, #21] 19600: 2201 movs r2, #1 19602: 4313 orrs r3, r2 19604: 7563 strb r3, [r4, #21] ext->auto_size = 1; 19606: 7d23 ldrb r3, [r4, #20] 19608: 2204 movs r2, #4 1960a: 4313 orrs r3, r2 1960c: 7523 strb r3, [r4, #20] ext->offset.x = 0; 1960e: 80a7 strh r7, [r4, #4] ext->offset.y = 0; 19610: 80e7 strh r7, [r4, #6] ext->pivot.x = 0; 19612: 81e7 strh r7, [r4, #14] ext->pivot.y = 0; 19614: 8227 strh r7, [r4, #16] lv_obj_set_signal_cb(img, lv_img_signal); 19616: 493c ldr r1, [pc, #240] ; (19708 ) 19618: 0028 movs r0, r5 1961a: 4b3c ldr r3, [pc, #240] ; (1970c ) 1961c: 4798 blx r3 lv_obj_set_design_cb(img, lv_img_design); 1961e: 493c ldr r1, [pc, #240] ; (19710 ) 19620: 0028 movs r0, r5 19622: 4b3c ldr r3, [pc, #240] ; (19714 ) 19624: 4798 blx r3 if(copy == NULL) { 19626: 2e00 cmp r6, #0 19628: d03c beq.n 196a4 lv_img_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1962a: 0030 movs r0, r6 1962c: 4b3a ldr r3, [pc, #232] ; (19718 ) 1962e: 4798 blx r3 ext->auto_size = copy_ext->auto_size; 19630: 7d03 ldrb r3, [r0, #20] 19632: 089b lsrs r3, r3, #2 19634: 2201 movs r2, #1 19636: 4013 ands r3, r2 19638: 009b lsls r3, r3, #2 1963a: 7d22 ldrb r2, [r4, #20] 1963c: 2104 movs r1, #4 1963e: 438a bics r2, r1 19640: 4313 orrs r3, r2 19642: 7523 strb r3, [r4, #20] ext->zoom = copy_ext->zoom; 19644: 8a43 ldrh r3, [r0, #18] 19646: 8263 strh r3, [r4, #18] ext->angle = copy_ext->angle; 19648: 8983 ldrh r3, [r0, #12] 1964a: 81a3 strh r3, [r4, #12] ext->antialias = copy_ext->antialias; 1964c: 7d43 ldrb r3, [r0, #21] 1964e: 07db lsls r3, r3, #31 19650: 0fdb lsrs r3, r3, #31 19652: 7d62 ldrb r2, [r4, #21] 19654: 3903 subs r1, #3 19656: 438a bics r2, r1 19658: 4313 orrs r3, r2 1965a: 7563 strb r3, [r4, #21] ext->offset.x = copy_ext->offset.x; 1965c: 2204 movs r2, #4 1965e: 5e83 ldrsh r3, [r0, r2] 19660: 80a3 strh r3, [r4, #4] ext->offset.y = copy_ext->offset.y; 19662: 2206 movs r2, #6 19664: 5e83 ldrsh r3, [r0, r2] 19666: 80e3 strh r3, [r4, #6] ext->pivot.x = copy_ext->pivot.x; 19668: 220e movs r2, #14 1966a: 5e83 ldrsh r3, [r0, r2] 1966c: 81e3 strh r3, [r4, #14] ext->pivot.y = copy_ext->pivot.y; 1966e: 2210 movs r2, #16 19670: 5e83 ldrsh r3, [r0, r2] 19672: 8223 strh r3, [r4, #16] lv_img_set_src(img, copy_ext->src); 19674: 6801 ldr r1, [r0, #0] 19676: 0028 movs r0, r5 19678: 4b28 ldr r3, [pc, #160] ; (1971c ) 1967a: 4798 blx r3 lv_obj_refresh_style(img, LV_STYLE_PROP_ALL); 1967c: 21ff movs r1, #255 ; 0xff 1967e: 0028 movs r0, r5 19680: 4b27 ldr r3, [pc, #156] ; (19720 ) 19682: 4798 blx r3 LV_LOG_INFO("image created"); 19684: 4b27 ldr r3, [pc, #156] ; (19724 ) 19686: 9300 str r3, [sp, #0] 19688: 4b17 ldr r3, [pc, #92] ; (196e8 ) 1968a: 227f movs r2, #127 ; 0x7f 1968c: 4917 ldr r1, [pc, #92] ; (196ec ) 1968e: 2001 movs r0, #1 19690: 4c17 ldr r4, [pc, #92] ; (196f0 ) 19692: 47a0 blx r4 } 19694: 0028 movs r0, r5 19696: b005 add sp, #20 19698: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_del(img); 1969a: 0028 movs r0, r5 1969c: 4b22 ldr r3, [pc, #136] ; (19728 ) 1969e: 4798 blx r3 return NULL; 196a0: 2500 movs r5, #0 196a2: e7f7 b.n 19694 lv_theme_apply(img, LV_THEME_IMAGE); 196a4: 210f movs r1, #15 196a6: 0028 movs r0, r5 196a8: 4b20 ldr r3, [pc, #128] ; (1972c ) 196aa: 4798 blx r3 lv_obj_set_click(img, false); 196ac: 2100 movs r1, #0 196ae: 0028 movs r0, r5 196b0: 4b1f ldr r3, [pc, #124] ; (19730 ) 196b2: 4798 blx r3 lv_obj_set_adv_hittest(img, true); /*Images have fast hit-testing*/ 196b4: 2101 movs r1, #1 196b6: 0028 movs r0, r5 196b8: 4b1e ldr r3, [pc, #120] ; (19734 ) 196ba: 4798 blx r3 if(par != NULL) { 196bc: 9b03 ldr r3, [sp, #12] 196be: 2b00 cmp r3, #0 196c0: d004 beq.n 196cc ext->auto_size = 1; 196c2: 7d23 ldrb r3, [r4, #20] 196c4: 2204 movs r2, #4 196c6: 4313 orrs r3, r2 196c8: 7523 strb r3, [r4, #20] 196ca: e7db b.n 19684 ext->auto_size = 0; 196cc: 7d23 ldrb r3, [r4, #20] 196ce: 2204 movs r2, #4 196d0: 4393 bics r3, r2 196d2: 7523 strb r3, [r4, #20] 196d4: e7d6 b.n 19684 196d6: 46c0 nop ; (mov r8, r8) 196d8: 00003395 .word 0x00003395 196dc: 000017ad .word 0x000017ad 196e0: 20004c6c .word 0x20004c6c 196e4: 000020f1 .word 0x000020f1 196e8: 0002adac .word 0x0002adac 196ec: 0002ae04 .word 0x0002ae04 196f0: 00012159 .word 0x00012159 196f4: 00025854 .word 0x00025854 196f8: 000017b5 .word 0x000017b5 196fc: 00004385 .word 0x00004385 19700: 000024a1 .word 0x000024a1 19704: 000024f5 .word 0x000024f5 19708: 00019739 .word 0x00019739 1970c: 00002041 .word 0x00002041 19710: 00018de9 .word 0x00018de9 19714: 000020a5 .word 0x000020a5 19718: 000043d1 .word 0x000043d1 1971c: 000192c9 .word 0x000192c9 19720: 00002ff5 .word 0x00002ff5 19724: 0002adf4 .word 0x0002adf4 19728: 000045a9 .word 0x000045a9 1972c: 000140e5 .word 0x000140e5 19730: 00001ea5 .word 0x00001ea5 19734: 00001e4d .word 0x00001e4d 00019738 : * @param sign a signal type from lv_signal_t enum * @param param pointer to a signal specific variable * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted */ static lv_res_t lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param) { 19738: b5f0 push {r4, r5, r6, r7, lr} 1973a: 46c6 mov lr, r8 1973c: b500 push {lr} 1973e: b086 sub sp, #24 19740: 0005 movs r5, r0 19742: 000e movs r6, r1 19744: 0017 movs r7, r2 lv_res_t res; if(sign == LV_SIGNAL_GET_STYLE) { 19746: 2908 cmp r1, #8 19748: d01f beq.n 1978a if(info->result != NULL) return LV_RES_OK; else return ancestor_signal(img, sign, param); } /* Include the ancient signal function */ res = ancestor_signal(img, sign, param); 1974a: 4b90 ldr r3, [pc, #576] ; (1998c ) 1974c: 681b ldr r3, [r3, #0] 1974e: 4798 blx r3 19750: 0004 movs r4, r0 if(res != LV_RES_OK) return res; 19752: 2801 cmp r0, #1 19754: d124 bne.n 197a0 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 19756: 2e07 cmp r6, #7 19758: d02e beq.n 197b8 lv_img_ext_t * ext = lv_obj_get_ext_attr(img); 1975a: 0028 movs r0, r5 1975c: 4b8c ldr r3, [pc, #560] ; (19990 ) 1975e: 4798 blx r3 19760: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 19762: 2e00 cmp r6, #0 19764: d12e bne.n 197c4 if(ext->src_type == LV_IMG_SRC_FILE || ext->src_type == LV_IMG_SRC_SYMBOL) { 19766: 7d02 ldrb r2, [r0, #20] 19768: 2303 movs r3, #3 1976a: 4013 ands r3, r2 1976c: 3b01 subs r3, #1 1976e: 2b01 cmp r3, #1 19770: d816 bhi.n 197a0 lv_mem_free(ext->src); 19772: 6800 ldr r0, [r0, #0] 19774: 4b87 ldr r3, [pc, #540] ; (19994 ) 19776: 4798 blx r3 ext->src = NULL; 19778: 2300 movs r3, #0 1977a: 4642 mov r2, r8 1977c: 6013 str r3, [r2, #0] ext->src_type = LV_IMG_SRC_UNKNOWN; 1977e: 7d13 ldrb r3, [r2, #20] 19780: 2203 movs r2, #3 19782: 4313 orrs r3, r2 19784: 4642 mov r2, r8 19786: 7513 strb r3, [r2, #20] 19788: e00a b.n 197a0 static lv_style_list_t * lv_img_get_style(lv_obj_t * img, uint8_t type) { lv_style_list_t * style_dsc_p; switch(type) { 1978a: 7811 ldrb r1, [r2, #0] case LV_IMG_PART_MAIN: style_dsc_p = &img->style_list; 1978c: 0002 movs r2, r0 1978e: 3228 adds r2, #40 ; 0x28 break; default: style_dsc_p = NULL; 19790: 424b negs r3, r1 19792: 414b adcs r3, r1 19794: 425b negs r3, r3 19796: 401a ands r2, r3 info->result = lv_img_get_style(img, info->part); 19798: 607a str r2, [r7, #4] if(info->result != NULL) return LV_RES_OK; 1979a: 2401 movs r4, #1 1979c: 2a00 cmp r2, #0 1979e: d004 beq.n 197aa } 197a0: 0020 movs r0, r4 197a2: b006 add sp, #24 197a4: bc04 pop {r2} 197a6: 4690 mov r8, r2 197a8: bdf0 pop {r4, r5, r6, r7, pc} else return ancestor_signal(img, sign, param); 197aa: 4b78 ldr r3, [pc, #480] ; (1998c ) 197ac: 681b ldr r3, [r3, #0] 197ae: 003a movs r2, r7 197b0: 2108 movs r1, #8 197b2: 4798 blx r3 197b4: 0004 movs r4, r0 197b6: e7f3 b.n 197a0 if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 197b8: 4977 ldr r1, [pc, #476] ; (19998 ) 197ba: 0038 movs r0, r7 197bc: 4b77 ldr r3, [pc, #476] ; (1999c ) 197be: 4798 blx r3 197c0: 0004 movs r4, r0 197c2: e7ed b.n 197a0 else if(sign == LV_SIGNAL_STYLE_CHG) { 197c4: 2e04 cmp r6, #4 197c6: d04f beq.n 19868 else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) { 197c8: 2e06 cmp r6, #6 197ca: d058 beq.n 1987e else if(sign == LV_SIGNAL_HIT_TEST) { 197cc: 2e0a cmp r6, #10 197ce: d1e7 bne.n 197a0 if(ext->zoom != 256 && ext->angle == 0) { 197d0: 8a43 ldrh r3, [r0, #18] 197d2: 2280 movs r2, #128 ; 0x80 197d4: 0052 lsls r2, r2, #1 197d6: 4293 cmp r3, r2 197d8: d100 bne.n 197dc 197da: e0d1 b.n 19980 197dc: 8982 ldrh r2, [r0, #12] 197de: 2a00 cmp r2, #0 197e0: d000 beq.n 197e4 197e2: e0cd b.n 19980 197e4: 8aa8 ldrh r0, [r5, #20] 197e6: 3001 adds r0, #1 197e8: 8a2e ldrh r6, [r5, #16] 197ea: 1b86 subs r6, r0, r6 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 197ec: b236 sxth r6, r6 return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 197ee: 8aea ldrh r2, [r5, #22] 197f0: 3201 adds r2, #1 197f2: 8a69 ldrh r1, [r5, #18] 197f4: 1a52 subs r2, r2, r1 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 197f6: b212 sxth r2, r2 lv_coord_t scaled_width = (origin_width * ext->zoom + 255) / 256; 197f8: 0018 movs r0, r3 197fa: 4370 muls r0, r6 197fc: 21ff movs r1, #255 ; 0xff 197fe: 468c mov ip, r1 19800: 4484 add ip, r0 19802: 4661 mov r1, ip 19804: 17c8 asrs r0, r1, #31 19806: 21ff movs r1, #255 ; 0xff 19808: 4008 ands r0, r1 1980a: 4460 add r0, ip 1980c: 1200 asrs r0, r0, #8 lv_coord_t width_offset = (origin_width - scaled_width) / 2; 1980e: b200 sxth r0, r0 19810: 1a30 subs r0, r6, r0 19812: 0fc6 lsrs r6, r0, #31 19814: 1830 adds r0, r6, r0 19816: 1040 asrs r0, r0, #1 lv_coord_t scaled_height = (origin_height * ext->zoom + 255) / 256; 19818: 4353 muls r3, r2 1981a: 33ff adds r3, #255 ; 0xff 1981c: 17de asrs r6, r3, #31 1981e: 4031 ands r1, r6 19820: 18cb adds r3, r1, r3 19822: 121b asrs r3, r3, #8 lv_coord_t height_offset = (origin_height - scaled_height) / 2; 19824: b21b sxth r3, r3 19826: 1ad2 subs r2, r2, r3 19828: 0fd3 lsrs r3, r2, #31 1982a: 189b adds r3, r3, r2 1982c: 105e asrs r6, r3, #1 lv_area_copy(&coords, &img->coords); 1982e: 3510 adds r5, #16 19830: 2300 movs r3, #0 { uint8_t * d8 = (uint8_t *)dst; const uint8_t * s8 = (const uint8_t *)src; while(len) { *d8 = *s8; 19832: a904 add r1, sp, #16 19834: 5cea ldrb r2, [r5, r3] 19836: 545a strb r2, [r3, r1] 19838: 3301 adds r3, #1 while(len) { 1983a: 2b08 cmp r3, #8 1983c: d1fa bne.n 19834 coords.x1 += width_offset; 1983e: b283 uxth r3, r0 19840: a804 add r0, sp, #16 19842: 8802 ldrh r2, [r0, #0] 19844: 189a adds r2, r3, r2 19846: 8002 strh r2, [r0, #0] coords.x2 -= width_offset; 19848: 8882 ldrh r2, [r0, #4] 1984a: 1ad3 subs r3, r2, r3 1984c: 8083 strh r3, [r0, #4] coords.y1 += height_offset; 1984e: b2b3 uxth r3, r6 19850: 8842 ldrh r2, [r0, #2] 19852: 189a adds r2, r3, r2 19854: 8042 strh r2, [r0, #2] coords.y2 -= height_offset; 19856: 88c2 ldrh r2, [r0, #6] 19858: 1ad3 subs r3, r2, r3 1985a: 80c3 strh r3, [r0, #6] info->result = _lv_area_is_point_on(&coords, info->point, 0); 1985c: 2200 movs r2, #0 1985e: 6839 ldr r1, [r7, #0] 19860: 4b4f ldr r3, [pc, #316] ; (199a0 ) 19862: 4798 blx r3 19864: 7138 strb r0, [r7, #4] if(ext->zoom != 256 && ext->angle == 0) { 19866: e79b b.n 197a0 if(ext->src_type == LV_IMG_SRC_SYMBOL) { 19868: 7d02 ldrb r2, [r0, #20] 1986a: 2303 movs r3, #3 1986c: 4013 ands r3, r2 1986e: 2b02 cmp r3, #2 19870: d000 beq.n 19874 19872: e795 b.n 197a0 lv_img_set_src(img, ext->src); 19874: 6801 ldr r1, [r0, #0] 19876: 0028 movs r0, r5 19878: 4b4a ldr r3, [pc, #296] ; (199a4 ) 1987a: 4798 blx r3 1987c: e790 b.n 197a0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ZOOM, transform_zoom, lv_style_int_t, _int, scalar) 1987e: 2207 movs r2, #7 19880: 2100 movs r1, #0 19882: 0028 movs r0, r5 19884: 4f48 ldr r7, [pc, #288] ; (199a8 ) 19886: 47b8 blx r7 transf_zoom = (transf_zoom * ext->zoom) >> 8; 19888: 4643 mov r3, r8 1988a: 8a5e ldrh r6, [r3, #18] 1988c: 4346 muls r6, r0 1988e: 1236 asrs r6, r6, #8 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_ANGLE, transform_angle, lv_style_int_t, _int, scalar) 19890: 2206 movs r2, #6 19892: 2100 movs r1, #0 19894: 0028 movs r0, r5 19896: 47b8 blx r7 transf_angle += ext->angle; 19898: 4643 mov r3, r8 1989a: 899b ldrh r3, [r3, #12] 1989c: 181b adds r3, r3, r0 1989e: b21b sxth r3, r3 if(transf_angle || transf_zoom != LV_IMG_ZOOM_NONE) { 198a0: 2b00 cmp r3, #0 198a2: d104 bne.n 198ae 198a4: 2280 movs r2, #128 ; 0x80 198a6: 0052 lsls r2, r2, #1 198a8: b231 sxth r1, r6 198aa: 4291 cmp r1, r2 198ac: d039 beq.n 19922 _lv_img_buf_get_transformed_area(&a, ext->w, ext->h, transf_angle, transf_zoom, &ext->pivot); 198ae: 4642 mov r2, r8 198b0: 210a movs r1, #10 198b2: 5e52 ldrsh r2, [r2, r1] 198b4: 4641 mov r1, r8 198b6: 2008 movs r0, #8 198b8: 5e09 ldrsh r1, [r1, r0] 198ba: af04 add r7, sp, #16 198bc: 4640 mov r0, r8 198be: 300e adds r0, #14 198c0: 9001 str r0, [sp, #4] 198c2: b2b6 uxth r6, r6 198c4: 9600 str r6, [sp, #0] 198c6: 0038 movs r0, r7 198c8: 4e38 ldr r6, [pc, #224] ; (199ac ) 198ca: 47b0 blx r6 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.x1); 198cc: 2332 movs r3, #50 ; 0x32 198ce: 5ee9 ldrsh r1, [r5, r3] 198d0: 2200 movs r2, #0 198d2: 5ebb ldrsh r3, [r7, r2] 198d4: 1acb subs r3, r1, r3 198d6: 428b cmp r3, r1 198d8: da00 bge.n 198dc 198da: 000b movs r3, r1 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori - a.y1); 198dc: aa04 add r2, sp, #16 198de: 2002 movs r0, #2 198e0: 5e12 ldrsh r2, [r2, r0] 198e2: 1a8a subs r2, r1, r2 198e4: b21b sxth r3, r3 198e6: 4293 cmp r3, r2 198e8: da00 bge.n 198ec 198ea: 0013 movs r3, r2 198ec: b21b sxth r3, r3 198ee: 866b strh r3, [r5, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.x2 - ext->w); 198f0: aa04 add r2, sp, #16 198f2: 2004 movs r0, #4 198f4: 5e12 ldrsh r2, [r2, r0] 198f6: 1852 adds r2, r2, r1 198f8: 4640 mov r0, r8 198fa: 2608 movs r6, #8 198fc: 5f80 ldrsh r0, [r0, r6] 198fe: 1a12 subs r2, r2, r0 19900: 429a cmp r2, r3 19902: da00 bge.n 19906 19904: 001a movs r2, r3 19906: b213 sxth r3, r2 19908: 866b strh r3, [r5, #50] ; 0x32 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, pad_ori + a.y2 - ext->h); 1990a: aa04 add r2, sp, #16 1990c: 2006 movs r0, #6 1990e: 5e12 ldrsh r2, [r2, r0] 19910: 1852 adds r2, r2, r1 19912: 4641 mov r1, r8 19914: 200a movs r0, #10 19916: 5e09 ldrsh r1, [r1, r0] 19918: 1a52 subs r2, r2, r1 1991a: 429a cmp r2, r3 1991c: da00 bge.n 19920 1991e: 001a movs r2, r3 19920: 866a strh r2, [r5, #50] ; 0x32 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19922: 2212 movs r2, #18 19924: 2100 movs r1, #0 19926: 0028 movs r0, r5 19928: 4f1f ldr r7, [pc, #124] ; (199a8 ) 1992a: 47b8 blx r7 1992c: 9002 str r0, [sp, #8] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1992e: 2213 movs r2, #19 19930: 2100 movs r1, #0 19932: 0028 movs r0, r5 19934: 47b8 blx r7 19936: 0006 movs r6, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19938: 2210 movs r2, #16 1993a: 2100 movs r1, #0 1993c: 0028 movs r0, r5 1993e: 47b8 blx r7 19940: 9003 str r0, [sp, #12] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19942: 2211 movs r2, #17 19944: 2100 movs r1, #0 19946: 0028 movs r0, r5 19948: 47b8 blx r7 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, right); 1994a: 1c31 adds r1, r6, #0 1994c: 9a02 ldr r2, [sp, #8] 1994e: 4296 cmp r6, r2 19950: da00 bge.n 19954 19952: 1c11 adds r1, r2, #0 19954: 8e6b ldrh r3, [r5, #50] ; 0x32 19956: 1c1a adds r2, r3, #0 19958: b21b sxth r3, r3 1995a: b20e sxth r6, r1 1995c: 42b3 cmp r3, r6 1995e: da00 bge.n 19962 19960: 1c0a adds r2, r1, #0 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, top); 19962: 1c13 adds r3, r2, #0 19964: b212 sxth r2, r2 19966: 9e03 ldr r6, [sp, #12] 19968: b231 sxth r1, r6 1996a: 428a cmp r2, r1 1996c: da00 bge.n 19970 1996e: 1c33 adds r3, r6, #0 img->ext_draw_pad = LV_MATH_MAX(img->ext_draw_pad, bottom); 19970: 1c1a adds r2, r3, #0 19972: b21b sxth r3, r3 19974: b201 sxth r1, r0 19976: 428b cmp r3, r1 19978: da00 bge.n 1997c 1997a: 1c02 adds r2, r0, #0 1997c: 866a strh r2, [r5, #50] ; 0x32 1997e: e70f b.n 197a0 info->result = lv_obj_is_point_on_coords(img, info->point); 19980: 6839 ldr r1, [r7, #0] 19982: 0028 movs r0, r5 19984: 4b0a ldr r3, [pc, #40] ; (199b0 ) 19986: 4798 blx r3 19988: 7138 strb r0, [r7, #4] 1998a: e709 b.n 197a0 1998c: 20004c6c .word 0x20004c6c 19990: 000043d1 .word 0x000043d1 19994: 000123c9 .word 0x000123c9 19998: 0002aeb0 .word 0x0002aeb0 1999c: 000046d9 .word 0x000046d9 199a0: 000114c5 .word 0x000114c5 199a4: 000192c9 .word 0x000192c9 199a8: 00003a89 .word 0x00003a89 199ac: 0000e92d .word 0x0000e92d 199b0: 000046a1 .word 0x000046a1 000199b4 : * Free the dot_tmp_ptr field if it was previously allocated. * Always clears the field * @param label pointer to label object. */ static void lv_label_dot_tmp_free(lv_obj_t * label) { 199b4: b510 push {r4, lr} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 199b6: 4b09 ldr r3, [pc, #36] ; (199dc ) 199b8: 4798 blx r3 199ba: 0004 movs r4, r0 if(ext->dot_tmp_alloc && ext->dot.tmp_ptr) { 199bc: 7c43 ldrb r3, [r0, #17] 199be: 07db lsls r3, r3, #31 199c0: d504 bpl.n 199cc 199c2: 6840 ldr r0, [r0, #4] 199c4: 2800 cmp r0, #0 199c6: d001 beq.n 199cc lv_mem_free(ext->dot.tmp_ptr); 199c8: 4b05 ldr r3, [pc, #20] ; (199e0 ) 199ca: 4798 blx r3 } ext->dot_tmp_alloc = false; 199cc: 7c63 ldrb r3, [r4, #17] 199ce: 2201 movs r2, #1 199d0: 4393 bics r3, r2 199d2: 7463 strb r3, [r4, #17] ext->dot.tmp_ptr = NULL; 199d4: 2300 movs r3, #0 199d6: 6063 str r3, [r4, #4] } 199d8: bd10 pop {r4, pc} 199da: 46c0 nop ; (mov r8, r8) 199dc: 000043d1 .word 0x000043d1 199e0: 000123c9 .word 0x000123c9 000199e4 : { 199e4: b5f8 push {r3, r4, r5, r6, r7, lr} 199e6: 0004 movs r4, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 199e8: 4b1c ldr r3, [pc, #112] ; (19a5c ) 199ea: 4798 blx r3 199ec: 0005 movs r5, r0 if(ext->long_mode != LV_LABEL_LONG_DOT) return; 199ee: 7c02 ldrb r2, [r0, #16] 199f0: 2307 movs r3, #7 199f2: 4013 ands r3, r2 199f4: 2b02 cmp r3, #2 199f6: d000 beq.n 199fa } 199f8: bdf8 pop {r3, r4, r5, r6, r7, pc} if(ext->dot_end == LV_LABEL_DOT_END_INV) return; 199fa: 8901 ldrh r1, [r0, #8] 199fc: 4b18 ldr r3, [pc, #96] ; (19a60 ) 199fe: 4299 cmp r1, r3 19a00: d0fa beq.n 199f8 uint32_t letter_i = ext->dot_end - LV_LABEL_DOT_NUM; 19a02: 3903 subs r1, #3 uint32_t byte_i = _lv_txt_encoded_get_byte_id(ext->text, letter_i); 19a04: 4b17 ldr r3, [pc, #92] ; (19a64 ) 19a06: 681b ldr r3, [r3, #0] 19a08: 6800 ldr r0, [r0, #0] 19a0a: 4798 blx r3 19a0c: 0006 movs r6, r0 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19a0e: 0020 movs r0, r4 19a10: 4b12 ldr r3, [pc, #72] ; (19a5c ) 19a12: 4798 blx r3 if(ext->dot_tmp_alloc) { 19a14: 7c43 ldrb r3, [r0, #17] return ext->dot.tmp; 19a16: 1d07 adds r7, r0, #4 if(ext->dot_tmp_alloc) { 19a18: 07db lsls r3, r3, #31 19a1a: d41b bmi.n 19a54 while(ext->text[byte_i + i] != '\0') { 19a1c: 682b ldr r3, [r5, #0] 19a1e: 199a adds r2, r3, r6 19a20: 7813 ldrb r3, [r2, #0] 19a22: 2b00 cmp r3, #0 19a24: d018 beq.n 19a58 19a26: 2100 movs r1, #0 19a28: 2300 movs r3, #0 ext->text[byte_i + i] = dot_tmp[i]; 19a2a: 5c79 ldrb r1, [r7, r1] 19a2c: 7011 strb r1, [r2, #0] i++; 19a2e: 3301 adds r3, #1 19a30: b2db uxtb r3, r3 while(ext->text[byte_i + i] != '\0') { 19a32: 0019 movs r1, r3 19a34: 18f2 adds r2, r6, r3 19a36: 6828 ldr r0, [r5, #0] 19a38: 4684 mov ip, r0 19a3a: 4462 add r2, ip 19a3c: 7810 ldrb r0, [r2, #0] 19a3e: 2800 cmp r0, #0 19a40: d1f3 bne.n 19a2a ext->text[byte_i + i] = dot_tmp[i]; 19a42: 5c7b ldrb r3, [r7, r1] 19a44: 7013 strb r3, [r2, #0] lv_label_dot_tmp_free(label); 19a46: 0020 movs r0, r4 19a48: 4b07 ldr r3, [pc, #28] ; (19a68 ) 19a4a: 4798 blx r3 ext->dot_end = LV_LABEL_DOT_END_INV; 19a4c: 2301 movs r3, #1 19a4e: 425b negs r3, r3 19a50: 812b strh r3, [r5, #8] 19a52: e7d1 b.n 199f8 return ext->dot.tmp_ptr; 19a54: 6847 ldr r7, [r0, #4] 19a56: e7e1 b.n 19a1c while(ext->text[byte_i + i] != '\0') { 19a58: 2100 movs r1, #0 19a5a: e7f2 b.n 19a42 19a5c: 000043d1 .word 0x000043d1 19a60: 0000ffff .word 0x0000ffff 19a64: 20000054 .word 0x20000054 19a68: 000199b5 .word 0x000199b5 00019a6c : { 19a6c: b570 push {r4, r5, r6, lr} 19a6e: 0004 movs r4, r0 19a70: 000d movs r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19a72: 4b03 ldr r3, [pc, #12] ; (19a80 ) 19a74: 4798 blx r3 ext->offset.y = y; 19a76: 81c5 strh r5, [r0, #14] lv_obj_invalidate(label); 19a78: 0020 movs r0, r4 19a7a: 4b02 ldr r3, [pc, #8] ; (19a84 ) 19a7c: 4798 blx r3 } 19a7e: bd70 pop {r4, r5, r6, pc} 19a80: 000043d1 .word 0x000043d1 19a84: 00002869 .word 0x00002869 00019a88 : { 19a88: b570 push {r4, r5, r6, lr} 19a8a: 0004 movs r4, r0 19a8c: 000d movs r5, r1 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19a8e: 4b03 ldr r3, [pc, #12] ; (19a9c ) 19a90: 4798 blx r3 ext->offset.x = x; 19a92: 8185 strh r5, [r0, #12] lv_obj_invalidate(label); 19a94: 0020 movs r0, r4 19a96: 4b02 ldr r3, [pc, #8] ; (19aa0 ) 19a98: 4798 blx r3 } 19a9a: bd70 pop {r4, r5, r6, pc} 19a9c: 000043d1 .word 0x000043d1 19aa0: 00002869 .word 0x00002869 00019aa4 : static void get_txt_coords(const lv_obj_t * label, lv_area_t * area) { 19aa4: b5f0 push {r4, r5, r6, r7, lr} 19aa6: 46ce mov lr, r9 19aa8: b500 push {lr} 19aaa: b082 sub sp, #8 19aac: 9001 str r0, [sp, #4] 19aae: 000c movs r4, r1 lv_obj_get_coords(label, area); 19ab0: 4b12 ldr r3, [pc, #72] ; (19afc ) 19ab2: 4798 blx r3 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 19ab4: 2212 movs r2, #18 19ab6: 2100 movs r1, #0 19ab8: 9801 ldr r0, [sp, #4] 19aba: 4e11 ldr r6, [pc, #68] ; (19b00 ) 19abc: 47b0 blx r6 19abe: 4681 mov r9, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 19ac0: 2213 movs r2, #19 19ac2: 2100 movs r1, #0 19ac4: 9801 ldr r0, [sp, #4] 19ac6: 47b0 blx r6 19ac8: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 19aca: 2210 movs r2, #16 19acc: 2100 movs r1, #0 19ace: 9801 ldr r0, [sp, #4] 19ad0: 47b0 blx r6 19ad2: 0007 movs r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 19ad4: 2211 movs r2, #17 19ad6: 2100 movs r1, #0 19ad8: 9801 ldr r0, [sp, #4] 19ada: 47b0 blx r6 lv_coord_t left = lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN); lv_coord_t right = lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); lv_coord_t top = lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN); lv_coord_t bottom = lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); area->x1 += left; 19adc: 8823 ldrh r3, [r4, #0] 19ade: 444b add r3, r9 19ae0: 8023 strh r3, [r4, #0] area->x2 -= right; 19ae2: 88a3 ldrh r3, [r4, #4] 19ae4: 1b5b subs r3, r3, r5 19ae6: 80a3 strh r3, [r4, #4] area->y1 += top; 19ae8: 8863 ldrh r3, [r4, #2] 19aea: 19db adds r3, r3, r7 19aec: 8063 strh r3, [r4, #2] area->y2 -= bottom; 19aee: 88e3 ldrh r3, [r4, #6] 19af0: 1a18 subs r0, r3, r0 19af2: 80e0 strh r0, [r4, #6] } 19af4: b002 add sp, #8 19af6: bc04 pop {r2} 19af8: 4691 mov r9, r2 19afa: bdf0 pop {r4, r5, r6, r7, pc} 19afc: 0000237d .word 0x0000237d 19b00: 00003a89 .word 0x00003a89 00019b04 : { 19b04: b5f0 push {r4, r5, r6, r7, lr} 19b06: b083 sub sp, #12 19b08: 0007 movs r7, r0 19b0a: 000e movs r6, r1 19b0c: 0015 movs r5, r2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19b0e: 4b18 ldr r3, [pc, #96] ; (19b70 ) 19b10: 4798 blx r3 19b12: 0004 movs r4, r0 lv_label_dot_tmp_free(label); /* Deallocate any existing space */ 19b14: 0038 movs r0, r7 19b16: 4b17 ldr r3, [pc, #92] ; (19b74 ) 19b18: 4798 blx r3 if(len > sizeof(char *)) { 19b1a: 2d04 cmp r5, #4 19b1c: d91c bls.n 19b58 ext->dot.tmp_ptr = lv_mem_alloc(len + 1); 19b1e: 1c68 adds r0, r5, #1 19b20: 4b15 ldr r3, [pc, #84] ; (19b78 ) 19b22: 4798 blx r3 19b24: 6060 str r0, [r4, #4] if(ext->dot.tmp_ptr == NULL) { 19b26: 2800 cmp r0, #0 19b28: d00c beq.n 19b44 _lv_memcpy(ext->dot.tmp_ptr, data, len); 19b2a: 002a movs r2, r5 19b2c: 0031 movs r1, r6 19b2e: 4b13 ldr r3, [pc, #76] ; (19b7c ) 19b30: 4798 blx r3 ext->dot.tmp_ptr[len] = '\0'; 19b32: 2300 movs r3, #0 19b34: 6862 ldr r2, [r4, #4] 19b36: 5553 strb r3, [r2, r5] ext->dot_tmp_alloc = true; 19b38: 7c63 ldrb r3, [r4, #17] 19b3a: 2201 movs r2, #1 19b3c: 4313 orrs r3, r2 19b3e: 7463 strb r3, [r4, #17] return true; 19b40: 2001 movs r0, #1 19b42: e013 b.n 19b6c LV_LOG_ERROR("Failed to allocate memory for dot_tmp_ptr"); 19b44: 4b0e ldr r3, [pc, #56] ; (19b80 ) 19b46: 9300 str r3, [sp, #0] 19b48: 4b0e ldr r3, [pc, #56] ; (19b84 ) 19b4a: 4a0f ldr r2, [pc, #60] ; (19b88 ) 19b4c: 490f ldr r1, [pc, #60] ; (19b8c ) 19b4e: 3003 adds r0, #3 19b50: 4c0f ldr r4, [pc, #60] ; (19b90 ) 19b52: 47a0 blx r4 return false; 19b54: 2000 movs r0, #0 19b56: e009 b.n 19b6c ext->dot_tmp_alloc = false; 19b58: 7c63 ldrb r3, [r4, #17] 19b5a: 2201 movs r2, #1 19b5c: 4393 bics r3, r2 19b5e: 7463 strb r3, [r4, #17] _lv_memcpy(ext->dot.tmp, data, len); 19b60: 1d20 adds r0, r4, #4 19b62: 002a movs r2, r5 19b64: 0031 movs r1, r6 19b66: 4b05 ldr r3, [pc, #20] ; (19b7c ) 19b68: 4798 blx r3 return true; 19b6a: 2001 movs r0, #1 } 19b6c: b003 add sp, #12 19b6e: bdf0 pop {r4, r5, r6, r7, pc} 19b70: 000043d1 .word 0x000043d1 19b74: 000199b5 .word 0x000199b5 19b78: 000122dd .word 0x000122dd 19b7c: 00012545 .word 0x00012545 19b80: 0002b04c .word 0x0002b04c 19b84: 0002afe4 .word 0x0002afe4 19b88: 000005b5 .word 0x000005b5 19b8c: 0002b014 .word 0x0002b014 19b90: 00012159 .word 0x00012159 00019b94 : { 19b94: b530 push {r4, r5, lr} 19b96: b083 sub sp, #12 19b98: 0004 movs r4, r0 19b9a: 000d movs r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19b9c: 4b13 ldr r3, [pc, #76] ; (19bec ) 19b9e: 4798 blx r3 19ba0: 2800 cmp r0, #0 19ba2: d10d bne.n 19bc0 19ba4: 4b12 ldr r3, [pc, #72] ; (19bf0 ) 19ba6: 9300 str r3, [sp, #0] 19ba8: 22c4 movs r2, #196 ; 0xc4 19baa: 0052 lsls r2, r2, #1 19bac: 4911 ldr r1, [pc, #68] ; (19bf4 ) 19bae: 3003 adds r0, #3 19bb0: 4d11 ldr r5, [pc, #68] ; (19bf8 ) 19bb2: 47a8 blx r5 19bb4: 0022 movs r2, r4 19bb6: 2300 movs r3, #0 19bb8: 4810 ldr r0, [pc, #64] ; (19bfc ) 19bba: 4911 ldr r1, [pc, #68] ; (19c00 ) 19bbc: 4788 blx r1 19bbe: e7fe b.n 19bbe lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19bc0: 0020 movs r0, r4 19bc2: 4b10 ldr r3, [pc, #64] ; (19c04 ) 19bc4: 4798 blx r3 if(ext->align == align) return; 19bc6: 7c03 ldrb r3, [r0, #16] 19bc8: 069b lsls r3, r3, #26 19bca: 0f9b lsrs r3, r3, #30 19bcc: 42ab cmp r3, r5 19bce: d00a beq.n 19be6 ext->align = align; 19bd0: 2303 movs r3, #3 19bd2: 402b ands r3, r5 19bd4: 011a lsls r2, r3, #4 19bd6: 7c03 ldrb r3, [r0, #16] 19bd8: 2130 movs r1, #48 ; 0x30 19bda: 438b bics r3, r1 19bdc: 4313 orrs r3, r2 19bde: 7403 strb r3, [r0, #16] lv_obj_invalidate(label); /*Enough to invalidate because alignment is only drawing related 19be0: 0020 movs r0, r4 19be2: 4b09 ldr r3, [pc, #36] ; (19c08 ) 19be4: 4798 blx r3 } 19be6: b003 add sp, #12 19be8: bd30 pop {r4, r5, pc} 19bea: 46c0 nop ; (mov r8, r8) 19bec: 000017ad .word 0x000017ad 19bf0: 0002af10 .word 0x0002af10 19bf4: 0002b014 .word 0x0002b014 19bf8: 00012159 .word 0x00012159 19bfc: 00025d20 .word 0x00025d20 19c00: 000017b5 .word 0x000017b5 19c04: 000043d1 .word 0x000043d1 19c08: 00002869 .word 0x00002869 00019c0c : { 19c0c: b530 push {r4, r5, lr} 19c0e: b083 sub sp, #12 19c10: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19c12: 4b0c ldr r3, [pc, #48] ; (19c44 ) 19c14: 4798 blx r3 19c16: 2800 cmp r0, #0 19c18: d10d bne.n 19c36 19c1a: 4b0b ldr r3, [pc, #44] ; (19c48 ) 19c1c: 9300 str r3, [sp, #0] 19c1e: 22f2 movs r2, #242 ; 0xf2 19c20: 0052 lsls r2, r2, #1 19c22: 490a ldr r1, [pc, #40] ; (19c4c ) 19c24: 3003 adds r0, #3 19c26: 4d0a ldr r5, [pc, #40] ; (19c50 ) 19c28: 47a8 blx r5 19c2a: 0022 movs r2, r4 19c2c: 2300 movs r3, #0 19c2e: 4809 ldr r0, [pc, #36] ; (19c54 ) 19c30: 4909 ldr r1, [pc, #36] ; (19c58 ) 19c32: 4788 blx r1 19c34: e7fe b.n 19c34 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19c36: 0020 movs r0, r4 19c38: 4b08 ldr r3, [pc, #32] ; (19c5c ) 19c3a: 4798 blx r3 return ext->text; 19c3c: 6800 ldr r0, [r0, #0] } 19c3e: b003 add sp, #12 19c40: bd30 pop {r4, r5, pc} 19c42: 46c0 nop ; (mov r8, r8) 19c44: 000017ad .word 0x000017ad 19c48: 0002af3c .word 0x0002af3c 19c4c: 0002b014 .word 0x0002b014 19c50: 00012159 .word 0x00012159 19c54: 00025d20 .word 0x00025d20 19c58: 000017b5 .word 0x000017b5 19c5c: 000043d1 .word 0x000043d1 00019c60 : { 19c60: b530 push {r4, r5, lr} 19c62: b083 sub sp, #12 19c64: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19c66: 4b0d ldr r3, [pc, #52] ; (19c9c ) 19c68: 4798 blx r3 19c6a: 2800 cmp r0, #0 19c6c: d10d bne.n 19c8a 19c6e: 4b0c ldr r3, [pc, #48] ; (19ca0 ) 19c70: 9300 str r3, [sp, #0] 19c72: 22f9 movs r2, #249 ; 0xf9 19c74: 0052 lsls r2, r2, #1 19c76: 490b ldr r1, [pc, #44] ; (19ca4 ) 19c78: 3003 adds r0, #3 19c7a: 4d0b ldr r5, [pc, #44] ; (19ca8 ) 19c7c: 47a8 blx r5 19c7e: 0022 movs r2, r4 19c80: 2300 movs r3, #0 19c82: 480a ldr r0, [pc, #40] ; (19cac ) 19c84: 490a ldr r1, [pc, #40] ; (19cb0 ) 19c86: 4788 blx r1 19c88: e7fe b.n 19c88 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19c8a: 0020 movs r0, r4 19c8c: 4b09 ldr r3, [pc, #36] ; (19cb4 ) 19c8e: 4798 blx r3 return ext->long_mode; 19c90: 7c00 ldrb r0, [r0, #16] 19c92: 0740 lsls r0, r0, #29 19c94: 0f40 lsrs r0, r0, #29 } 19c96: b003 add sp, #12 19c98: bd30 pop {r4, r5, pc} 19c9a: 46c0 nop ; (mov r8, r8) 19c9c: 000017ad .word 0x000017ad 19ca0: 0002af50 .word 0x0002af50 19ca4: 0002b014 .word 0x0002b014 19ca8: 00012159 .word 0x00012159 19cac: 00025d20 .word 0x00025d20 19cb0: 000017b5 .word 0x000017b5 19cb4: 000043d1 .word 0x000043d1 00019cb8 : { 19cb8: b530 push {r4, r5, lr} 19cba: b083 sub sp, #12 19cbc: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19cbe: 4b0e ldr r3, [pc, #56] ; (19cf8 ) 19cc0: 4798 blx r3 19cc2: 2800 cmp r0, #0 19cc4: d10c bne.n 19ce0 19cc6: 4b0d ldr r3, [pc, #52] ; (19cfc ) 19cc8: 9300 str r3, [sp, #0] 19cca: 4a0d ldr r2, [pc, #52] ; (19d00 ) 19ccc: 490d ldr r1, [pc, #52] ; (19d04 ) 19cce: 3003 adds r0, #3 19cd0: 4d0d ldr r5, [pc, #52] ; (19d08 ) 19cd2: 47a8 blx r5 19cd4: 0022 movs r2, r4 19cd6: 2300 movs r3, #0 19cd8: 480c ldr r0, [pc, #48] ; (19d0c ) 19cda: 490d ldr r1, [pc, #52] ; (19d10 ) 19cdc: 4788 blx r1 19cde: e7fe b.n 19cde lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19ce0: 0020 movs r0, r4 19ce2: 4b0c ldr r3, [pc, #48] ; (19d14 ) 19ce4: 4798 blx r3 lv_label_align_t align = ext->align; 19ce6: 7c00 ldrb r0, [r0, #16] 19ce8: 0680 lsls r0, r0, #26 19cea: 0f80 lsrs r0, r0, #30 if(align == LV_LABEL_ALIGN_AUTO) { 19cec: 2803 cmp r0, #3 19cee: d001 beq.n 19cf4 } 19cf0: b003 add sp, #12 19cf2: bd30 pop {r4, r5, pc} align = LV_LABEL_ALIGN_LEFT; 19cf4: 2000 movs r0, #0 19cf6: e7fb b.n 19cf0 19cf8: 000017ad .word 0x000017ad 19cfc: 0002af68 .word 0x0002af68 19d00: 000001ff .word 0x000001ff 19d04: 0002b014 .word 0x0002b014 19d08: 00012159 .word 0x00012159 19d0c: 00025d20 .word 0x00025d20 19d10: 000017b5 .word 0x000017b5 19d14: 000043d1 .word 0x000043d1 00019d18 : { 19d18: b530 push {r4, r5, lr} 19d1a: b083 sub sp, #12 19d1c: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19d1e: 4b0c ldr r3, [pc, #48] ; (19d50 ) 19d20: 4798 blx r3 19d22: 2800 cmp r0, #0 19d24: d10c bne.n 19d40 19d26: 4b0b ldr r3, [pc, #44] ; (19d54 ) 19d28: 9300 str r3, [sp, #0] 19d2a: 4a0b ldr r2, [pc, #44] ; (19d58 ) 19d2c: 490b ldr r1, [pc, #44] ; (19d5c ) 19d2e: 3003 adds r0, #3 19d30: 4d0b ldr r5, [pc, #44] ; (19d60 ) 19d32: 47a8 blx r5 19d34: 0022 movs r2, r4 19d36: 2300 movs r3, #0 19d38: 480a ldr r0, [pc, #40] ; (19d64 ) 19d3a: 490b ldr r1, [pc, #44] ; (19d68 ) 19d3c: 4788 blx r1 19d3e: e7fe b.n 19d3e lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19d40: 0020 movs r0, r4 19d42: 4b0a ldr r3, [pc, #40] ; (19d6c ) 19d44: 4798 blx r3 return ext->recolor == 0 ? false : true; 19d46: 7c00 ldrb r0, [r0, #16] 19d48: 0640 lsls r0, r0, #25 19d4a: 0fc0 lsrs r0, r0, #31 } 19d4c: b003 add sp, #12 19d4e: bd30 pop {r4, r5, pc} 19d50: 000017ad .word 0x000017ad 19d54: 0002af7c .word 0x0002af7c 19d58: 0000021b .word 0x0000021b 19d5c: 0002b014 .word 0x0002b014 19d60: 00012159 .word 0x00012159 19d64: 00025d20 .word 0x00025d20 19d68: 000017b5 .word 0x000017b5 19d6c: 000043d1 .word 0x000043d1 00019d70 : { 19d70: b5f0 push {r4, r5, r6, r7, lr} 19d72: 46de mov lr, fp 19d74: 4657 mov r7, sl 19d76: 464e mov r6, r9 19d78: 4645 mov r5, r8 19d7a: b5e0 push {r5, r6, r7, lr} 19d7c: b091 sub sp, #68 ; 0x44 19d7e: 0004 movs r4, r0 19d80: 9106 str r1, [sp, #24] LV_ASSERT_OBJ(label, LV_OBJX_NAME); 19d82: 4ba4 ldr r3, [pc, #656] ; (1a014 ) 19d84: 4798 blx r3 19d86: 2800 cmp r0, #0 19d88: d10c bne.n 19da4 19d8a: 4ba3 ldr r3, [pc, #652] ; (1a018 ) 19d8c: 9300 str r3, [sp, #0] 19d8e: 4aa3 ldr r2, [pc, #652] ; (1a01c ) 19d90: 49a3 ldr r1, [pc, #652] ; (1a020 ) 19d92: 3003 adds r0, #3 19d94: 4da3 ldr r5, [pc, #652] ; (1a024 ) 19d96: 47a8 blx r5 19d98: 0022 movs r2, r4 19d9a: 2300 movs r3, #0 19d9c: 48a2 ldr r0, [pc, #648] ; (1a028 ) 19d9e: 49a3 ldr r1, [pc, #652] ; (1a02c ) 19da0: 4788 blx r1 19da2: e7fe b.n 19da2 LV_ASSERT_NULL(pos); 19da4: 9d06 ldr r5, [sp, #24] 19da6: 0028 movs r0, r5 19da8: 4b9a ldr r3, [pc, #616] ; (1a014 ) 19daa: 4798 blx r3 19dac: 2800 cmp r0, #0 19dae: d10c bne.n 19dca 19db0: 4b99 ldr r3, [pc, #612] ; (1a018 ) 19db2: 9300 str r3, [sp, #0] 19db4: 4a9e ldr r2, [pc, #632] ; (1a030 ) 19db6: 499a ldr r1, [pc, #616] ; (1a020 ) 19db8: 3003 adds r0, #3 19dba: 4c9a ldr r4, [pc, #616] ; (1a024 ) 19dbc: 47a0 blx r4 19dbe: 002a movs r2, r5 19dc0: 2300 movs r3, #0 19dc2: 4899 ldr r0, [pc, #612] ; (1a028 ) 19dc4: 4999 ldr r1, [pc, #612] ; (1a02c ) 19dc6: 4788 blx r1 19dc8: e7fe b.n 19dc8 get_txt_coords(label, &txt_coords); 19dca: ad0e add r5, sp, #56 ; 0x38 19dcc: 0029 movs r1, r5 19dce: 0020 movs r0, r4 19dd0: 4b98 ldr r3, [pc, #608] ; (1a034 ) 19dd2: 4798 blx r3 const char * txt = lv_label_get_text(label); 19dd4: 0020 movs r0, r4 19dd6: 4b98 ldr r3, [pc, #608] ; (1a038 ) 19dd8: 4798 blx r3 19dda: 9003 str r0, [sp, #12] lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 19ddc: 0020 movs r0, r4 19dde: 4b97 ldr r3, [pc, #604] ; (1a03c ) 19de0: 4798 blx r3 19de2: 0006 movs r6, r0 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 19de4: 88ab ldrh r3, [r5, #4] 19de6: 3301 adds r3, #1 19de8: 882a ldrh r2, [r5, #0] 19dea: 1a9b subs r3, r3, r2 19dec: b21b sxth r3, r3 19dee: 9309 str r3, [sp, #36] ; 0x24 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 19df0: 4a93 ldr r2, [pc, #588] ; (1a040 ) 19df2: 2100 movs r1, #0 19df4: 0020 movs r0, r4 19df6: 4b93 ldr r3, [pc, #588] ; (1a044 ) 19df8: 4798 blx r3 19dfa: 0007 movs r7, r0 19dfc: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 19dfe: 4a92 ldr r2, [pc, #584] ; (1a048 ) 19e00: 2100 movs r1, #0 19e02: 0020 movs r0, r4 19e04: 4d91 ldr r5, [pc, #580] ; (1a04c ) 19e06: 47a8 blx r5 19e08: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 19e0a: 4a91 ldr r2, [pc, #580] ; (1a050 ) 19e0c: 2100 movs r1, #0 19e0e: 0020 movs r0, r4 19e10: 47a8 blx r5 19e12: 9008 str r0, [sp, #32] 19e14: 9007 str r0, [sp, #28] * @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; 19e16: 2208 movs r2, #8 19e18: 5ebb ldrsh r3, [r7, r2] 19e1a: 469b mov fp, r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 19e1c: 7c33 ldrb r3, [r6, #16] 19e1e: 065e lsls r6, r3, #25 lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 19e20: 0ff6 lsrs r6, r6, #31 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 19e22: b25a sxtb r2, r3 19e24: 2a00 cmp r2, #0 19e26: da01 bge.n 19e2c 19e28: 2202 movs r2, #2 19e2a: 4316 orrs r6, r2 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 19e2c: 075b lsls r3, r3, #29 19e2e: d101 bne.n 19e34 19e30: 2310 movs r3, #16 19e32: 431e orrs r6, r3 lv_label_align_t align = lv_label_get_align(label); 19e34: 0020 movs r0, r4 19e36: 4b87 ldr r3, [pc, #540] ; (1a054 ) 19e38: 4798 blx r3 19e3a: 0007 movs r7, r0 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 19e3c: 2801 cmp r0, #1 19e3e: d13f bne.n 19ec0 19e40: 2304 movs r3, #4 19e42: 431e orrs r6, r3 while(txt[line_start] != '\0') { 19e44: 9b03 ldr r3, [sp, #12] 19e46: 781b ldrb r3, [r3, #0] 19e48: 2b00 cmp r3, #0 19e4a: d142 bne.n 19ed2 19e4c: 9b03 ldr r3, [sp, #12] 19e4e: 9304 str r3, [sp, #16] 19e50: 2300 movs r3, #0 19e52: 469a mov sl, r3 19e54: 2500 movs r5, #0 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 19e56: 4653 mov r3, sl 19e58: 1ae9 subs r1, r5, r3 19e5a: b289 uxth r1, r1 19e5c: 9600 str r6, [sp, #0] 19e5e: 9b08 ldr r3, [sp, #32] 19e60: 9a05 ldr r2, [sp, #20] 19e62: 9804 ldr r0, [sp, #16] 19e64: 4c7c ldr r4, [pc, #496] ; (1a058 ) 19e66: 47a0 blx r4 19e68: aa0e add r2, sp, #56 ; 0x38 19e6a: 8893 ldrh r3, [r2, #4] 19e6c: 3301 adds r3, #1 19e6e: 8812 ldrh r2, [r2, #0] 19e70: 1a9b subs r3, r3, r2 x += lv_area_get_width(&txt_coords) / 2 - line_w / 2; 19e72: b21b sxth r3, r3 19e74: 0fdc lsrs r4, r3, #31 19e76: 18e4 adds r4, r4, r3 19e78: 1064 asrs r4, r4, #1 19e7a: 0fc3 lsrs r3, r0, #31 19e7c: 1818 adds r0, r3, r0 19e7e: 1040 asrs r0, r0, #1 19e80: 1a24 subs r4, r4, r0 19e82: b224 sxth r4, r4 lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT; 19e84: 2300 movs r3, #0 19e86: 2217 movs r2, #23 19e88: a908 add r1, sp, #32 19e8a: 468c mov ip, r1 19e8c: 4462 add r2, ip 19e8e: 7013 strb r3, [r2, #0] uint32_t i = 0; 19e90: 930c str r3, [sp, #48] ; 0x30 19e92: 4698 mov r8, r3 if(new_line_start > 0) { 19e94: 2d00 cmp r5, #0 19e96: d000 beq.n 19e9a 19e98: e0ab b.n 19ff2 logical_pos = _lv_txt_encoded_get_char_id(bidi_txt, i); 19e9a: 4e70 ldr r6, [pc, #448] ; (1a05c ) 19e9c: 990c ldr r1, [sp, #48] ; 0x30 19e9e: 9804 ldr r0, [sp, #16] 19ea0: 6833 ldr r3, [r6, #0] 19ea2: 4798 blx r3 19ea4: 0004 movs r4, r0 return logical_pos + _lv_txt_encoded_get_char_id(txt, line_start); 19ea6: 6833 ldr r3, [r6, #0] 19ea8: 4651 mov r1, sl 19eaa: 9803 ldr r0, [sp, #12] 19eac: 4798 blx r3 19eae: 1820 adds r0, r4, r0 19eb0: b280 uxth r0, r0 } 19eb2: b011 add sp, #68 ; 0x44 19eb4: bc3c pop {r2, r3, r4, r5} 19eb6: 4690 mov r8, r2 19eb8: 4699 mov r9, r3 19eba: 46a2 mov sl, r4 19ebc: 46ab mov fp, r5 19ebe: bdf0 pop {r4, r5, r6, r7, pc} if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 19ec0: 2802 cmp r0, #2 19ec2: d000 beq.n 19ec6 19ec4: e099 b.n 19ffa 19ec6: 2308 movs r3, #8 19ec8: 431e orrs r6, r3 while(txt[line_start] != '\0') { 19eca: 9b03 ldr r3, [sp, #12] 19ecc: 781b ldrb r3, [r3, #0] 19ece: 2b00 cmp r3, #0 19ed0: d048 beq.n 19f64 { 19ed2: 9b03 ldr r3, [sp, #12] 19ed4: 9304 str r3, [sp, #16] 19ed6: 2400 movs r4, #0 19ed8: 2300 movs r3, #0 19eda: 469a mov sl, r3 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 19edc: 4b60 ldr r3, [pc, #384] ; (1a060 ) 19ede: 4699 mov r9, r3 y += letter_height + line_space; 19ee0: 44d8 add r8, fp 19ee2: e00a b.n 19efa 19ee4: 4444 add r4, r8 19ee6: b224 sxth r4, r4 while(txt[line_start] != '\0') { 19ee8: 9b03 ldr r3, [sp, #12] 19eea: 469c mov ip, r3 19eec: 4484 add ip, r0 19eee: 4663 mov r3, ip 19ef0: 9304 str r3, [sp, #16] new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 19ef2: 4682 mov sl, r0 while(txt[line_start] != '\0') { 19ef4: 781b ldrb r3, [r3, #0] 19ef6: 2b00 cmp r3, #0 19ef8: d032 beq.n 19f60 new_line_start += _lv_txt_get_next_line(&txt[line_start], font, letter_space, max_w, flag); 19efa: 9600 str r6, [sp, #0] 19efc: 9b09 ldr r3, [sp, #36] ; 0x24 19efe: 9a07 ldr r2, [sp, #28] 19f00: 9905 ldr r1, [sp, #20] 19f02: 9804 ldr r0, [sp, #16] 19f04: 47c8 blx r9 19f06: 4450 add r0, sl if(pos->y <= y + letter_height) { 19f08: 9b06 ldr r3, [sp, #24] 19f0a: 2202 movs r2, #2 19f0c: 5e9a ldrsh r2, [r3, r2] 19f0e: 465b mov r3, fp 19f10: 18e3 adds r3, r4, r3 19f12: 429a cmp r2, r3 19f14: dce6 bgt.n 19ee4 19f16: 0005 movs r5, r0 uint32_t tmp = new_line_start; 19f18: 900b str r0, [sp, #44] ; 0x2c letter = _lv_txt_encoded_prev(txt, &tmp); 19f1a: 4b52 ldr r3, [pc, #328] ; (1a064 ) 19f1c: 681b ldr r3, [r3, #0] 19f1e: a90b add r1, sp, #44 ; 0x2c 19f20: 9c03 ldr r4, [sp, #12] 19f22: 0020 movs r0, r4 19f24: 4798 blx r3 if(letter != '\n' && txt[new_line_start] == '\0') new_line_start++; 19f26: 280a cmp r0, #10 19f28: d003 beq.n 19f32 19f2a: 5d62 ldrb r2, [r4, r5] 19f2c: 4253 negs r3, r2 19f2e: 4153 adcs r3, r2 19f30: 18ed adds r5, r5, r3 if(align == LV_LABEL_ALIGN_CENTER) { 19f32: 2f01 cmp r7, #1 19f34: d100 bne.n 19f38 19f36: e78e b.n 19e56 lv_coord_t x = 0; 19f38: 2400 movs r4, #0 else if(align == LV_LABEL_ALIGN_RIGHT) { 19f3a: 2f02 cmp r7, #2 19f3c: d1a2 bne.n 19e84 line_w = _lv_txt_get_width(bidi_txt, new_line_start - line_start, font, letter_space, flag); 19f3e: 4653 mov r3, sl 19f40: 1ae9 subs r1, r5, r3 19f42: b289 uxth r1, r1 19f44: 9600 str r6, [sp, #0] 19f46: 9b08 ldr r3, [sp, #32] 19f48: 9a05 ldr r2, [sp, #20] 19f4a: 9804 ldr r0, [sp, #16] 19f4c: 4c42 ldr r4, [pc, #264] ; (1a058 ) 19f4e: 47a0 blx r4 19f50: ab0e add r3, sp, #56 ; 0x38 19f52: 889c ldrh r4, [r3, #4] 19f54: 3401 adds r4, #1 19f56: 881b ldrh r3, [r3, #0] 19f58: 1ae4 subs r4, r4, r3 x += lv_area_get_width(&txt_coords) - line_w; 19f5a: 1a24 subs r4, r4, r0 19f5c: b224 sxth r4, r4 19f5e: e791 b.n 19e84 19f60: 0005 movs r5, r0 19f62: e7e6 b.n 19f32 while(txt[line_start] != '\0') { 19f64: 9b03 ldr r3, [sp, #12] 19f66: 9304 str r3, [sp, #16] 19f68: 2300 movs r3, #0 19f6a: 469a mov sl, r3 19f6c: 2500 movs r5, #0 19f6e: e7e6 b.n 19f3e x += lv_font_get_glyph_width(font, letter, letter_next); 19f70: 9a09 ldr r2, [sp, #36] ; 0x24 19f72: 9908 ldr r1, [sp, #32] 19f74: 9805 ldr r0, [sp, #20] 19f76: 4b3c ldr r3, [pc, #240] ; (1a068 ) 19f78: 4798 blx r3 19f7a: 1903 adds r3, r0, r4 19f7c: b29b uxth r3, r3 if(pos->x < x || i + line_start == new_line_start || txt[i + line_start] == '\0') { 19f7e: 9a06 ldr r2, [sp, #24] 19f80: 2100 movs r1, #0 19f82: 5e51 ldrsh r1, [r2, r1] 19f84: b21a sxth r2, r3 19f86: 4291 cmp r1, r2 19f88: db31 blt.n 19fee 19f8a: 9a0c ldr r2, [sp, #48] ; 0x30 19f8c: 4651 mov r1, sl 19f8e: 1851 adds r1, r2, r1 19f90: 42a9 cmp r1, r5 19f92: d02c beq.n 19fee 19f94: 9803 ldr r0, [sp, #12] 19f96: 5c41 ldrb r1, [r0, r1] 19f98: 2900 cmp r1, #0 19f9a: d028 beq.n 19fee x += letter_space; 19f9c: 9907 ldr r1, [sp, #28] 19f9e: 468c mov ip, r1 19fa0: 4463 add r3, ip 19fa2: b21c sxth r4, r3 i_act = i; 19fa4: 0017 movs r7, r2 while(i + line_start < new_line_start) { 19fa6: 9b0c ldr r3, [sp, #48] ; 0x30 19fa8: 4453 add r3, sl 19faa: 42ab cmp r3, r5 19fac: d300 bcc.n 19fb0 19fae: e774 b.n 19e9a uint32_t letter = _lv_txt_encoded_next(bidi_txt, &i); 19fb0: 4b2e ldr r3, [pc, #184] ; (1a06c ) 19fb2: 4699 mov r9, r3 19fb4: a90c add r1, sp, #48 ; 0x30 19fb6: 9804 ldr r0, [sp, #16] 19fb8: 681a ldr r2, [r3, #0] 19fba: 4790 blx r2 19fbc: 9008 str r0, [sp, #32] uint32_t letter_next = _lv_txt_encoded_next(&bidi_txt[i], NULL); 19fbe: 9b04 ldr r3, [sp, #16] 19fc0: 0018 movs r0, r3 19fc2: 9a0c ldr r2, [sp, #48] ; 0x30 19fc4: 4694 mov ip, r2 19fc6: 4460 add r0, ip 19fc8: 464a mov r2, r9 19fca: 6813 ldr r3, [r2, #0] 19fcc: 2100 movs r1, #0 19fce: 4798 blx r3 19fd0: 9009 str r0, [sp, #36] ; 0x24 if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 19fd2: 2e00 cmp r6, #0 19fd4: d0cc beq.n 19f70 if(_lv_txt_is_cmd(&cmd_state, bidi_txt[i]) != false) { 19fd6: 9b04 ldr r3, [sp, #16] 19fd8: 9a0c ldr r2, [sp, #48] ; 0x30 19fda: 5c99 ldrb r1, [r3, r2] 19fdc: 2017 movs r0, #23 19fde: ab08 add r3, sp, #32 19fe0: 469c mov ip, r3 19fe2: 4460 add r0, ip 19fe4: 4b22 ldr r3, [pc, #136] ; (1a070 ) 19fe6: 4798 blx r3 19fe8: 2800 cmp r0, #0 19fea: d1dc bne.n 19fa6 19fec: e7c0 b.n 19f70 i = i_act; 19fee: 970c str r7, [sp, #48] ; 0x30 break; 19ff0: e753 b.n 19e9a if((flag & LV_TXT_FLAG_RECOLOR) != 0) { 19ff2: 2301 movs r3, #1 19ff4: 401e ands r6, r3 19ff6: 4647 mov r7, r8 19ff8: e7d5 b.n 19fa6 while(txt[line_start] != '\0') { 19ffa: 9b03 ldr r3, [sp, #12] 19ffc: 781b ldrb r3, [r3, #0] 19ffe: 2b00 cmp r3, #0 1a000: d000 beq.n 1a004 1a002: e766 b.n 19ed2 1a004: 9b03 ldr r3, [sp, #12] 1a006: 9304 str r3, [sp, #16] 1a008: 2300 movs r3, #0 1a00a: 469a mov sl, r3 1a00c: 2500 movs r5, #0 lv_coord_t x = 0; 1a00e: 2400 movs r4, #0 1a010: e738 b.n 19e84 1a012: 46c0 nop ; (mov r8, r8) 1a014: 000017ad .word 0x000017ad 1a018: 0002af94 .word 0x0002af94 1a01c: 000002a5 .word 0x000002a5 1a020: 0002b014 .word 0x0002b014 1a024: 00012159 .word 0x00012159 1a028: 00025d20 .word 0x00025d20 1a02c: 000017b5 .word 0x000017b5 1a030: 000002a6 .word 0x000002a6 1a034: 00019aa5 .word 0x00019aa5 1a038: 00019c0d .word 0x00019c0d 1a03c: 000043d1 .word 0x000043d1 1a040: 0000808e .word 0x0000808e 1a044: 00003c99 .word 0x00003c99 1a048: 00008081 .word 0x00008081 1a04c: 00003a89 .word 0x00003a89 1a050: 00008080 .word 0x00008080 1a054: 00019cb9 .word 0x00019cb9 1a058: 00013e99 .word 0x00013e99 1a05c: 20000058 .word 0x20000058 1a060: 00013c21 .word 0x00013c21 1a064: 20000060 .word 0x20000060 1a068: 0000fe91 .word 0x0000fe91 1a06c: 2000005c .word 0x2000005c 1a070: 00013be1 .word 0x00013be1 0001a074 : { 1a074: b5f0 push {r4, r5, r6, r7, lr} 1a076: 46de mov lr, fp 1a078: 4657 mov r7, sl 1a07a: 464e mov r6, r9 1a07c: 4645 mov r5, r8 1a07e: b5e0 push {r5, r6, r7, lr} 1a080: b09b sub sp, #108 ; 0x6c 1a082: 0006 movs r6, r0 1a084: 9004 str r0, [sp, #16] lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a086: 4bd0 ldr r3, [pc, #832] ; (1a3c8 ) 1a088: 4798 blx r3 1a08a: 0004 movs r4, r0 if(ext->text == NULL) return; 1a08c: 6803 ldr r3, [r0, #0] 1a08e: 2b00 cmp r3, #0 1a090: d040 beq.n 1a114 get_txt_coords(label, &txt_coords); 1a092: ad18 add r5, sp, #96 ; 0x60 1a094: 0029 movs r1, r5 1a096: 0030 movs r0, r6 1a098: 4bcc ldr r3, [pc, #816] ; (1a3cc ) 1a09a: 4798 blx r3 1a09c: 88af ldrh r7, [r5, #4] 1a09e: 3701 adds r7, #1 1a0a0: 882b ldrh r3, [r5, #0] 1a0a2: 1aff subs r7, r7, r3 1a0a4: b23f sxth r7, r7 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_FONT, text_font, const lv_font_t *, _ptr, scalar) 1a0a6: 4aca ldr r2, [pc, #808] ; (1a3d0 ) 1a0a8: 2100 movs r1, #0 1a0aa: 0030 movs r0, r6 1a0ac: 4bc9 ldr r3, [pc, #804] ; (1a3d4 ) 1a0ae: 4798 blx r3 1a0b0: 9005 str r0, [sp, #20] _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t, _int, scalar) 1a0b2: 4ac9 ldr r2, [pc, #804] ; (1a3d8 ) 1a0b4: 2100 movs r1, #0 1a0b6: 9604 str r6, [sp, #16] 1a0b8: 0030 movs r0, r6 1a0ba: 4ec8 ldr r6, [pc, #800] ; (1a3dc ) 1a0bc: 47b0 blx r6 1a0be: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t, _int, scalar) 1a0c0: 4ac7 ldr r2, [pc, #796] ; (1a3e0 ) 1a0c2: 2100 movs r1, #0 1a0c4: 9804 ldr r0, [sp, #16] 1a0c6: 47b0 blx r6 1a0c8: 0006 movs r6, r0 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1a0ca: 7c22 ldrb r2, [r4, #16] 1a0cc: 0653 lsls r3, r2, #25 lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1a0ce: 0fdb lsrs r3, r3, #31 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a0d0: b251 sxtb r1, r2 1a0d2: 2900 cmp r1, #0 1a0d4: db25 blt.n 1a122 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1a0d6: 0752 lsls r2, r2, #29 1a0d8: d101 bne.n 1a0de 1a0da: 2210 movs r2, #16 1a0dc: 4313 orrs r3, r2 _lv_txt_get_size(&size, ext->text, font, letter_space, line_space, max_w, flag); 1a0de: 6821 ldr r1, [r4, #0] 1a0e0: 9302 str r3, [sp, #8] 1a0e2: 9701 str r7, [sp, #4] 1a0e4: 9500 str r5, [sp, #0] 1a0e6: 0033 movs r3, r6 1a0e8: 9a05 ldr r2, [sp, #20] 1a0ea: a817 add r0, sp, #92 ; 0x5c 1a0ec: 4fbd ldr r7, [pc, #756] ; (1a3e4 ) 1a0ee: 47b8 blx r7 if(ext->long_mode == LV_LABEL_LONG_EXPAND) { 1a0f0: 7c22 ldrb r2, [r4, #16] 1a0f2: 2307 movs r3, #7 1a0f4: 4013 ands r3, r2 1a0f6: d017 beq.n 1a128 else if(ext->long_mode == LV_LABEL_LONG_SROLL) { 1a0f8: 2b03 cmp r3, #3 1a0fa: d039 beq.n 1a170 else if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1a0fc: 2b04 cmp r3, #4 1a0fe: d100 bne.n 1a102 1a100: e0e2 b.n 1a2c8 else if(ext->long_mode == LV_LABEL_LONG_DOT) { 1a102: 2b02 cmp r3, #2 1a104: d100 bne.n 1a108 1a106: e185 b.n 1a414 else if(ext->long_mode == LV_LABEL_LONG_BREAK) { 1a108: 2b01 cmp r3, #1 1a10a: d100 bne.n 1a10e 1a10c: e21a b.n 1a544 lv_obj_invalidate(label); 1a10e: 9804 ldr r0, [sp, #16] 1a110: 4bb5 ldr r3, [pc, #724] ; (1a3e8 ) 1a112: 4798 blx r3 } 1a114: b01b add sp, #108 ; 0x6c 1a116: bc3c pop {r2, r3, r4, r5} 1a118: 4690 mov r8, r2 1a11a: 4699 mov r9, r3 1a11c: 46a2 mov sl, r4 1a11e: 46ab mov fp, r5 1a120: bdf0 pop {r4, r5, r6, r7, pc} if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1a122: 2102 movs r1, #2 1a124: 430b orrs r3, r1 1a126: e7d6 b.n 1a0d6 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_LEFT, pad_left, lv_style_int_t, _int, scalar) 1a128: 2212 movs r2, #18 1a12a: 2100 movs r1, #0 1a12c: 9c04 ldr r4, [sp, #16] 1a12e: 0020 movs r0, r4 1a130: 4eaa ldr r6, [pc, #680] ; (1a3dc ) 1a132: 47b0 blx r6 1a134: 0007 movs r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_RIGHT, pad_right, lv_style_int_t, _int, scalar) 1a136: 2213 movs r2, #19 1a138: 2100 movs r1, #0 1a13a: 0020 movs r0, r4 1a13c: 47b0 blx r6 size.x += lv_obj_get_style_pad_left(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_right(label, LV_LABEL_PART_MAIN); 1a13e: ad17 add r5, sp, #92 ; 0x5c 1a140: 183f adds r7, r7, r0 1a142: 8828 ldrh r0, [r5, #0] 1a144: 19c0 adds r0, r0, r7 1a146: 8028 strh r0, [r5, #0] _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a148: 2210 movs r2, #16 1a14a: 2100 movs r1, #0 1a14c: 0020 movs r0, r4 1a14e: 47b0 blx r6 1a150: 0007 movs r7, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a152: 2211 movs r2, #17 1a154: 2100 movs r1, #0 1a156: 0020 movs r0, r4 1a158: 47b0 blx r6 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1a15a: 183f adds r7, r7, r0 1a15c: 886a ldrh r2, [r5, #2] 1a15e: 19d2 adds r2, r2, r7 1a160: b212 sxth r2, r2 1a162: 806a strh r2, [r5, #2] lv_obj_set_size(label, size.x, size.y); 1a164: 2300 movs r3, #0 1a166: 5ee9 ldrsh r1, [r5, r3] 1a168: 0020 movs r0, r4 1a16a: 4ba0 ldr r3, [pc, #640] ; (1a3ec ) 1a16c: 4798 blx r3 1a16e: e7ce b.n 1a10e lv_anim_init(&a); 1a170: af07 add r7, sp, #28 1a172: 0038 movs r0, r7 1a174: 4b9e ldr r3, [pc, #632] ; (1a3f0 ) 1a176: 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; 1a178: 9b04 ldr r3, [sp, #16] 1a17a: 9307 str r3, [sp, #28] * @param a pointer to an initialized `lv_anim_t` variable * @param cnt repeat count or `LV_ANIM_REPEAT_INFINITE` for infinite repetition. 0: to disable repetition. */ static inline void lv_anim_set_repeat_count(lv_anim_t * a, uint16_t cnt) { a->repeat_cnt = cnt; 1a17c: 2301 movs r3, #1 1a17e: 425b negs r3, r3 1a180: 86bb strh r3, [r7, #52] ; 0x34 lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a182: 2220 movs r2, #32 1a184: 2120 movs r1, #32 1a186: 9805 ldr r0, [sp, #20] 1a188: 4b9a ldr r3, [pc, #616] ; (1a3f4 ) 1a18a: 4798 blx r3 1a18c: 1986 adds r6, r0, r6 1a18e: 20fa movs r0, #250 ; 0xfa 1a190: 0080 lsls r0, r0, #2 1a192: 4370 muls r0, r6 ext->anim_speed) * 1a194: 8961 ldrh r1, [r4, #10] lv_anim_set_playback_delay(&a, (((lv_font_get_glyph_width(font, ' ', ' ') + letter_space) * 1000) / 1a196: 4b98 ldr r3, [pc, #608] ; (1a3f8 ) 1a198: 4798 blx r3 1a19a: 0043 lsls r3, r0, #1 1a19c: 18c0 adds r0, r0, r3 a->playback_delay = delay; 1a19e: b280 uxth r0, r0 1a1a0: 62b8 str r0, [r7, #40] ; 0x28 * @param a pointer to an initialized `lv_anim_t` variable * @param delay delay in milliseconds before repeating the animation. */ static inline void lv_anim_set_repeat_delay(lv_anim_t * a, uint16_t delay) { a->repeat_delay = delay; 1a1a2: 6338 str r0, [r7, #48] ; 0x30 if(size.x > lv_area_get_width(&txt_coords)) { 1a1a4: ab17 add r3, sp, #92 ; 0x5c 1a1a6: 2200 movs r2, #0 1a1a8: 5e99 ldrsh r1, [r3, r2] 1a1aa: ab18 add r3, sp, #96 ; 0x60 1a1ac: 889a ldrh r2, [r3, #4] 1a1ae: 3201 adds r2, #1 1a1b0: 881b ldrh r3, [r3, #0] 1a1b2: 1ad2 subs r2, r2, r3 1a1b4: b292 uxth r2, r2 1a1b6: b213 sxth r3, r2 1a1b8: 4299 cmp r1, r3 1a1ba: dd3a ble.n 1a232 lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); 1a1bc: 1a52 subs r2, r2, r1 1a1be: b212 sxth r2, r2 a->start = start; 1a1c0: 2300 movs r3, #0 1a1c2: 930d str r3, [sp, #52] ; 0x34 a->end = end; 1a1c4: 920e str r2, [sp, #56] ; 0x38 a->exec_cb = exec_cb; 1a1c6: 4d8d ldr r5, [pc, #564] ; (1a3fc ) 1a1c8: 9508 str r5, [sp, #32] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a1ca: 8960 ldrh r0, [r4, #10] 1a1cc: 2100 movs r1, #0 1a1ce: 4b8c ldr r3, [pc, #560] ; (1a400 ) 1a1d0: 4798 blx r3 a->time = duration; 1a1d2: 900f str r0, [sp, #60] ; 0x3c a->playback_time = time; 1a1d4: 9012 str r0, [sp, #72] ; 0x48 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a1d6: 0029 movs r1, r5 1a1d8: 9804 ldr r0, [sp, #16] 1a1da: 4b8a ldr r3, [pc, #552] ; (1a404 ) 1a1dc: 4798 blx r3 if(anim_cur) { 1a1de: 2800 cmp r0, #0 1a1e0: d024 beq.n 1a22c act_time = anim_cur->act_time; 1a1e2: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a1e4: 233c movs r3, #60 ; 0x3c 1a1e6: 5cc3 ldrb r3, [r0, r3] 1a1e8: 07db lsls r3, r3, #31 1a1ea: 0fdb lsrs r3, r3, #31 if(act_time < a.time) { 1a1ec: 990f ldr r1, [sp, #60] ; 0x3c 1a1ee: 428a cmp r2, r1 1a1f0: d212 bcs.n 1a218 a.act_time = act_time; /*To keep the old position*/ 1a1f2: a807 add r0, sp, #28 1a1f4: 9210 str r2, [sp, #64] ; 0x40 a.early_apply = 0; 1a1f6: 2136 movs r1, #54 ; 0x36 1a1f8: 5c42 ldrb r2, [r0, r1] 1a1fa: 2501 movs r5, #1 1a1fc: 43aa bics r2, r5 1a1fe: 5442 strb r2, [r0, r1] if(playback_now) { 1a200: 2b00 cmp r3, #0 1a202: d009 beq.n 1a218 a.playback_now = 1; 1a204: 0003 movs r3, r0 1a206: 3106 adds r1, #6 1a208: 5c42 ldrb r2, [r0, r1] 1a20a: 2001 movs r0, #1 1a20c: 4302 orrs r2, r0 1a20e: 545a strb r2, [r3, r1] tmp = a.start; 1a210: 699a ldr r2, [r3, #24] a.start = a.end; 1a212: 69d9 ldr r1, [r3, #28] 1a214: 6199 str r1, [r3, #24] a.end = tmp; 1a216: 61da str r2, [r3, #28] lv_anim_start(&a); 1a218: a807 add r0, sp, #28 1a21a: 4b7b ldr r3, [pc, #492] ; (1a408 ) 1a21c: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a21e: 497b ldr r1, [pc, #492] ; (1a40c ) 1a220: 9804 ldr r0, [sp, #16] 1a222: 4b7b ldr r3, [pc, #492] ; (1a410 ) 1a224: 4798 blx r3 ext->offset.y = 0; 1a226: 2300 movs r3, #0 1a228: 81e3 strh r3, [r4, #14] 1a22a: e770 b.n 1a10e bool playback_now = false; 1a22c: 2300 movs r3, #0 uint32_t act_time = 0; 1a22e: 2200 movs r2, #0 1a230: e7dc b.n 1a1ec lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a232: 4972 ldr r1, [pc, #456] ; (1a3fc ) 1a234: 9e04 ldr r6, [sp, #16] 1a236: 0030 movs r0, r6 1a238: 4b75 ldr r3, [pc, #468] ; (1a410 ) 1a23a: 4798 blx r3 ext->offset.x = 0; 1a23c: 2300 movs r3, #0 1a23e: 81a3 strh r3, [r4, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a240: ab17 add r3, sp, #92 ; 0x5c 1a242: 2202 movs r2, #2 1a244: 5e9a ldrsh r2, [r3, r2] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a246: a918 add r1, sp, #96 ; 0x60 1a248: 88cb ldrh r3, [r1, #6] 1a24a: 3301 adds r3, #1 1a24c: 8849 ldrh r1, [r1, #2] 1a24e: 1a5b subs r3, r3, r1 1a250: b29b uxth r3, r3 1a252: b219 sxth r1, r3 1a254: 428a cmp r2, r1 1a256: dde2 ble.n 1a21e lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); 1a258: 1a9a subs r2, r3, r2 1a25a: 9b05 ldr r3, [sp, #20] 1a25c: 891b ldrh r3, [r3, #8] 1a25e: 1ad2 subs r2, r2, r3 1a260: b212 sxth r2, r2 a->start = start; 1a262: 2300 movs r3, #0 1a264: 930d str r3, [sp, #52] ; 0x34 a->end = end; 1a266: 920e str r2, [sp, #56] ; 0x38 a->exec_cb = exec_cb; 1a268: 4d68 ldr r5, [pc, #416] ; (1a40c ) 1a26a: 9508 str r5, [sp, #32] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a26c: 8960 ldrh r0, [r4, #10] 1a26e: 2100 movs r1, #0 1a270: 4b63 ldr r3, [pc, #396] ; (1a400 ) 1a272: 4798 blx r3 a->time = duration; 1a274: 900f str r0, [sp, #60] ; 0x3c a->playback_time = time; 1a276: 9012 str r0, [sp, #72] ; 0x48 lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a278: 0029 movs r1, r5 1a27a: 0030 movs r0, r6 1a27c: 4b61 ldr r3, [pc, #388] ; (1a404 ) 1a27e: 4798 blx r3 if(anim_cur) { 1a280: 2800 cmp r0, #0 1a282: d01e beq.n 1a2c2 act_time = anim_cur->act_time; 1a284: 6a42 ldr r2, [r0, #36] ; 0x24 playback_now = anim_cur->playback_now; 1a286: 233c movs r3, #60 ; 0x3c 1a288: 5cc3 ldrb r3, [r0, r3] 1a28a: 07db lsls r3, r3, #31 1a28c: 0fdb lsrs r3, r3, #31 if(act_time < a.time) { 1a28e: 990f ldr r1, [sp, #60] ; 0x3c 1a290: 428a cmp r2, r1 1a292: d212 bcs.n 1a2ba a.act_time = act_time; /*To keep the old position*/ 1a294: a907 add r1, sp, #28 1a296: 9210 str r2, [sp, #64] ; 0x40 a.early_apply = 0; 1a298: 2036 movs r0, #54 ; 0x36 1a29a: 5c0a ldrb r2, [r1, r0] 1a29c: 2501 movs r5, #1 1a29e: 43aa bics r2, r5 1a2a0: 540a strb r2, [r1, r0] if(playback_now) { 1a2a2: 2b00 cmp r3, #0 1a2a4: d009 beq.n 1a2ba a.playback_now = 1; 1a2a6: 000b movs r3, r1 1a2a8: 213c movs r1, #60 ; 0x3c 1a2aa: 5c5a ldrb r2, [r3, r1] 1a2ac: 2001 movs r0, #1 1a2ae: 4302 orrs r2, r0 1a2b0: 545a strb r2, [r3, r1] tmp = a.start; 1a2b2: 699a ldr r2, [r3, #24] a.start = a.end; 1a2b4: 69d9 ldr r1, [r3, #28] 1a2b6: 6199 str r1, [r3, #24] a.end = tmp; 1a2b8: 61da str r2, [r3, #28] lv_anim_start(&a); 1a2ba: a807 add r0, sp, #28 1a2bc: 4b52 ldr r3, [pc, #328] ; (1a408 ) 1a2be: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a2c0: e725 b.n 1a10e bool playback_now = false; 1a2c2: 2300 movs r3, #0 uint32_t act_time = 0; 1a2c4: 2200 movs r2, #0 1a2c6: e7e2 b.n 1a28e lv_anim_init(&a); 1a2c8: ae07 add r6, sp, #28 1a2ca: 0030 movs r0, r6 1a2cc: 4b48 ldr r3, [pc, #288] ; (1a3f0 ) 1a2ce: 4798 blx r3 a->var = var; 1a2d0: 9f04 ldr r7, [sp, #16] 1a2d2: 9707 str r7, [sp, #28] a->repeat_cnt = cnt; 1a2d4: 2301 movs r3, #1 1a2d6: 425b negs r3, r3 1a2d8: 86b3 strh r3, [r6, #52] ; 0x34 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a2da: aa18 add r2, sp, #96 ; 0x60 1a2dc: 8893 ldrh r3, [r2, #4] 1a2de: 3301 adds r3, #1 1a2e0: 8812 ldrh r2, [r2, #0] 1a2e2: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1a2e4: aa17 add r2, sp, #92 ; 0x5c 1a2e6: 2100 movs r1, #0 1a2e8: 5e52 ldrsh r2, [r2, r1] 1a2ea: b21b sxth r3, r3 1a2ec: 429a cmp r2, r3 1a2ee: dd33 ble.n 1a358 lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); 1a2f0: 2220 movs r2, #32 1a2f2: 2120 movs r1, #32 1a2f4: 9805 ldr r0, [sp, #20] 1a2f6: 4b3f ldr r3, [pc, #252] ; (1a3f4 ) 1a2f8: 4798 blx r3 1a2fa: 0382 lsls r2, r0, #14 1a2fc: 1a12 subs r2, r2, r0 1a2fe: 0092 lsls r2, r2, #2 1a300: 1880 adds r0, r0, r2 1a302: ab17 add r3, sp, #92 ; 0x5c 1a304: 881a ldrh r2, [r3, #0] 1a306: 1a82 subs r2, r0, r2 1a308: b212 sxth r2, r2 a->start = start; 1a30a: 2300 movs r3, #0 1a30c: 930d str r3, [sp, #52] ; 0x34 a->end = end; 1a30e: 920e str r2, [sp, #56] ; 0x38 a->exec_cb = exec_cb; 1a310: 4d3a ldr r5, [pc, #232] ; (1a3fc ) 1a312: 9508 str r5, [sp, #32] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a314: 8960 ldrh r0, [r4, #10] 1a316: 2100 movs r1, #0 1a318: 4b39 ldr r3, [pc, #228] ; (1a400 ) 1a31a: 4798 blx r3 1a31c: 900f str r0, [sp, #60] ; 0x3c lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a31e: 0029 movs r1, r5 1a320: 0038 movs r0, r7 1a322: 4b38 ldr r3, [pc, #224] ; (1a404 ) 1a324: 4798 blx r3 uint32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a326: 2800 cmp r0, #0 1a328: d014 beq.n 1a354 1a32a: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a32c: 9a0f ldr r2, [sp, #60] ; 0x3c 1a32e: 4293 cmp r3, r2 1a330: d206 bcs.n 1a340 a.act_time = act_time; /*To keep the old position*/ 1a332: aa07 add r2, sp, #28 1a334: 9310 str r3, [sp, #64] ; 0x40 a.early_apply = 0; 1a336: 2136 movs r1, #54 ; 0x36 1a338: 5c53 ldrb r3, [r2, r1] 1a33a: 2001 movs r0, #1 1a33c: 4383 bics r3, r0 1a33e: 5453 strb r3, [r2, r1] lv_anim_start(&a); 1a340: a807 add r0, sp, #28 1a342: 4b31 ldr r3, [pc, #196] ; (1a408 ) 1a344: 4798 blx r3 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a346: 4931 ldr r1, [pc, #196] ; (1a40c ) 1a348: 9804 ldr r0, [sp, #16] 1a34a: 4b31 ldr r3, [pc, #196] ; (1a410 ) 1a34c: 4798 blx r3 ext->offset.y = 0; 1a34e: 2300 movs r3, #0 1a350: 81e3 strh r3, [r4, #14] 1a352: e6dc b.n 1a10e 1a354: 2300 movs r3, #0 1a356: e7e9 b.n 1a32c lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a358: 4928 ldr r1, [pc, #160] ; (1a3fc ) 1a35a: 9e04 ldr r6, [sp, #16] 1a35c: 0030 movs r0, r6 1a35e: 4b2c ldr r3, [pc, #176] ; (1a410 ) 1a360: 4798 blx r3 ext->offset.x = 0; 1a362: 2300 movs r3, #0 1a364: 81a3 strh r3, [r4, #12] if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a366: ab17 add r3, sp, #92 ; 0x5c 1a368: 2002 movs r0, #2 1a36a: 5e18 ldrsh r0, [r3, r0] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a36c: a918 add r1, sp, #96 ; 0x60 1a36e: 88cb ldrh r3, [r1, #6] 1a370: 3301 adds r3, #1 1a372: 884a ldrh r2, [r1, #2] 1a374: 1a9b subs r3, r3, r2 1a376: b21b sxth r3, r3 1a378: 4298 cmp r0, r3 1a37a: dde4 ble.n 1a346 lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); 1a37c: 9b05 ldr r3, [sp, #20] 1a37e: 891a ldrh r2, [r3, #8] 1a380: 1812 adds r2, r2, r0 1a382: 4252 negs r2, r2 1a384: b212 sxth r2, r2 a->start = start; 1a386: 2300 movs r3, #0 1a388: 930d str r3, [sp, #52] ; 0x34 a->end = end; 1a38a: 920e str r2, [sp, #56] ; 0x38 a->exec_cb = exec_cb; 1a38c: 4d1f ldr r5, [pc, #124] ; (1a40c ) 1a38e: 9508 str r5, [sp, #32] lv_anim_set_time(&a, lv_anim_speed_to_time(ext->anim_speed, a.start, a.end)); 1a390: 8960 ldrh r0, [r4, #10] 1a392: 2100 movs r1, #0 1a394: 4b1a ldr r3, [pc, #104] ; (1a400 ) 1a396: 4798 blx r3 1a398: 900f str r0, [sp, #60] ; 0x3c lv_anim_t * anim_cur = lv_anim_get(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a39a: 0029 movs r1, r5 1a39c: 0030 movs r0, r6 1a39e: 4b19 ldr r3, [pc, #100] ; (1a404 ) 1a3a0: 4798 blx r3 uint32_t act_time = anim_cur ? anim_cur->act_time : 0; 1a3a2: 2800 cmp r0, #0 1a3a4: d00e beq.n 1a3c4 1a3a6: 6a43 ldr r3, [r0, #36] ; 0x24 if(act_time < a.time) { 1a3a8: 9a0f ldr r2, [sp, #60] ; 0x3c 1a3aa: 4293 cmp r3, r2 1a3ac: d206 bcs.n 1a3bc a.act_time = act_time; /*To keep the old position*/ 1a3ae: aa07 add r2, sp, #28 1a3b0: 9310 str r3, [sp, #64] ; 0x40 a.early_apply = 0; 1a3b2: 2136 movs r1, #54 ; 0x36 1a3b4: 5c53 ldrb r3, [r2, r1] 1a3b6: 2001 movs r0, #1 1a3b8: 4383 bics r3, r0 1a3ba: 5453 strb r3, [r2, r1] lv_anim_start(&a); 1a3bc: a807 add r0, sp, #28 1a3be: 4b12 ldr r3, [pc, #72] ; (1a408 ) 1a3c0: 4798 blx r3 if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { 1a3c2: e6a4 b.n 1a10e 1a3c4: 2300 movs r3, #0 1a3c6: e7ef b.n 1a3a8 1a3c8: 000043d1 .word 0x000043d1 1a3cc: 00019aa5 .word 0x00019aa5 1a3d0: 0000808e .word 0x0000808e 1a3d4: 00003c99 .word 0x00003c99 1a3d8: 00008081 .word 0x00008081 1a3dc: 00003a89 .word 0x00003a89 1a3e0: 00008080 .word 0x00008080 1a3e4: 00013f3d .word 0x00013f3d 1a3e8: 00002869 .word 0x00002869 1a3ec: 00003851 .word 0x00003851 1a3f0: 000111b9 .word 0x000111b9 1a3f4: 0000fe91 .word 0x0000fe91 1a3f8: 0001c1b9 .word 0x0001c1b9 1a3fc: 00019a89 .word 0x00019a89 1a400: 00011375 .word 0x00011375 1a404: 00011339 .word 0x00011339 1a408: 00011279 .word 0x00011279 1a40c: 00019a6d .word 0x00019a6d 1a410: 000111fd .word 0x000111fd 1a414: aa18 add r2, sp, #96 ; 0x60 1a416: 88d3 ldrh r3, [r2, #6] 1a418: 3301 adds r3, #1 1a41a: 8852 ldrh r2, [r2, #2] 1a41c: 1a9b subs r3, r3, r2 if(size.y <= lv_area_get_height(&txt_coords)) { /*No dots are required, the text is short enough*/ 1a41e: aa17 add r2, sp, #92 ; 0x5c 1a420: 2102 movs r1, #2 1a422: 5e52 ldrsh r2, [r2, r1] 1a424: b21b sxth r3, r3 1a426: 429a cmp r2, r3 1a428: dc03 bgt.n 1a432 ext->dot_end = LV_LABEL_DOT_END_INV; 1a42a: 2301 movs r3, #1 1a42c: 425b negs r3, r3 1a42e: 8123 strh r3, [r4, #8] 1a430: e66d b.n 1a10e else if(_lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/ 1a432: 4b4f ldr r3, [pc, #316] ; (1a570 ) 1a434: 681b ldr r3, [r3, #0] 1a436: 6820 ldr r0, [r4, #0] 1a438: 4798 blx r3 1a43a: 2803 cmp r0, #3 1a43c: d803 bhi.n 1a446 ext->dot_end = LV_LABEL_DOT_END_INV; 1a43e: 2301 movs r3, #1 1a440: 425b negs r3, r3 1a442: 8123 strh r3, [r4, #8] 1a444: e663 b.n 1a10e return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1a446: af18 add r7, sp, #96 ; 0x60 1a448: 88bb ldrh r3, [r7, #4] 1a44a: 3301 adds r3, #1 1a44c: 883a ldrh r2, [r7, #0] 1a44e: 1a9b subs r3, r3, r2 1a450: b29b uxth r3, r3 1a452: 469a mov sl, r3 (lv_font_get_glyph_width(font, '.', '.') + letter_space) * 1a454: 222e movs r2, #46 ; 0x2e 1a456: 212e movs r1, #46 ; 0x2e 1a458: 9805 ldr r0, [sp, #20] 1a45a: 4b46 ldr r3, [pc, #280] ; (1a574 ) 1a45c: 4798 blx r3 1a45e: 1986 adds r6, r0, r6 p.x = lv_area_get_width(&txt_coords) - 1a460: 03b0 lsls r0, r6, #14 1a462: 1b80 subs r0, r0, r6 1a464: 0080 lsls r0, r0, #2 1a466: 1836 adds r6, r6, r0 1a468: 4456 add r6, sl 1a46a: aa02 add r2, sp, #8 1a46c: 8216 strh r6, [r2, #16] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1a46e: 88fe ldrh r6, [r7, #6] 1a470: 3601 adds r6, #1 1a472: 887b ldrh r3, [r7, #2] 1a474: 1af6 subs r6, r6, r3 1a476: b2b6 uxth r6, r6 p.y -= p.y % 1a478: b230 sxth r0, r6 (lv_font_get_line_height(font) + line_space); /*Round down to the last line*/ 1a47a: 9b05 ldr r3, [sp, #20] 1a47c: 2108 movs r1, #8 1a47e: 5e59 ldrsh r1, [r3, r1] 1a480: 1949 adds r1, r1, r5 p.y -= p.y % 1a482: 4b3d ldr r3, [pc, #244] ; (1a578 ) 1a484: 4798 blx r3 1a486: 1a76 subs r6, r6, r1 p.y -= line_space; /*Trim the last line space*/ 1a488: 1b76 subs r6, r6, r5 1a48a: ab02 add r3, sp, #8 1a48c: 825e strh r6, [r3, #18] uint32_t letter_id = lv_label_get_letter_on(label, &p); 1a48e: a906 add r1, sp, #24 1a490: 9804 ldr r0, [sp, #16] 1a492: 4b3a ldr r3, [pc, #232] ; (1a57c ) 1a494: 4798 blx r3 1a496: 0007 movs r7, r0 1a498: 0006 movs r6, r0 size_t txt_len = strlen(ext->text); 1a49a: 6825 ldr r5, [r4, #0] 1a49c: 0028 movs r0, r5 1a49e: 4b38 ldr r3, [pc, #224] ; (1a580 ) 1a4a0: 4798 blx r3 1a4a2: 4681 mov r9, r0 uint32_t byte_id = _lv_txt_encoded_get_byte_id(ext->text, letter_id); 1a4a4: 4b37 ldr r3, [pc, #220] ; (1a584 ) 1a4a6: 681b ldr r3, [r3, #0] 1a4a8: 0039 movs r1, r7 1a4aa: 0028 movs r0, r5 1a4ac: 4798 blx r3 1a4ae: 0005 movs r5, r0 1a4b0: 9007 str r0, [sp, #28] while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a4b2: 1cc7 adds r7, r0, #3 1a4b4: 45b9 cmp r9, r7 1a4b6: d20d bcs.n 1a4d4 byte_id -= _lv_txt_encoded_size(&ext->text[byte_id]); 1a4b8: 4b33 ldr r3, [pc, #204] ; (1a588 ) 1a4ba: 469a mov sl, r3 1a4bc: 6823 ldr r3, [r4, #0] 1a4be: 1958 adds r0, r3, r5 1a4c0: 4653 mov r3, sl 1a4c2: 681b ldr r3, [r3, #0] 1a4c4: 4798 blx r3 1a4c6: 9b07 ldr r3, [sp, #28] 1a4c8: 1a1d subs r5, r3, r0 1a4ca: 9507 str r5, [sp, #28] letter_id--; 1a4cc: 3e01 subs r6, #1 while(byte_id + LV_LABEL_DOT_NUM > txt_len) { 1a4ce: 1cef adds r7, r5, #3 1a4d0: 45b9 cmp r9, r7 1a4d2: d3f3 bcc.n 1a4bc 1a4d4: 2304 movs r3, #4 1a4d6: 4699 mov r9, r3 1a4d8: 2300 movs r3, #0 1a4da: 4698 mov r8, r3 len += _lv_txt_encoded_size(&ext->text[byte_id]); 1a4dc: 4b2a ldr r3, [pc, #168] ; (1a588 ) 1a4de: 469b mov fp, r3 _lv_txt_encoded_next(ext->text, &byte_id); 1a4e0: 4b2a ldr r3, [pc, #168] ; (1a58c ) 1a4e2: 469a mov sl, r3 len += _lv_txt_encoded_size(&ext->text[byte_id]); 1a4e4: 6823 ldr r3, [r4, #0] 1a4e6: 9a07 ldr r2, [sp, #28] 1a4e8: 4694 mov ip, r2 1a4ea: 4463 add r3, ip 1a4ec: 0018 movs r0, r3 1a4ee: 465b mov r3, fp 1a4f0: 681b ldr r3, [r3, #0] 1a4f2: 4798 blx r3 1a4f4: 4440 add r0, r8 1a4f6: b2c3 uxtb r3, r0 1a4f8: 4698 mov r8, r3 _lv_txt_encoded_next(ext->text, &byte_id); 1a4fa: a907 add r1, sp, #28 1a4fc: 6820 ldr r0, [r4, #0] 1a4fe: 4653 mov r3, sl 1a500: 681b ldr r3, [r3, #0] 1a502: 4798 blx r3 1a504: 2301 movs r3, #1 1a506: 425b negs r3, r3 1a508: 469c mov ip, r3 1a50a: 44e1 add r9, ip for(i = 0; i <= LV_LABEL_DOT_NUM; i++) { 1a50c: 464b mov r3, r9 1a50e: 2b00 cmp r3, #0 1a510: d1e8 bne.n 1a4e4 if(lv_label_set_dot_tmp(label, &ext->text[byte_id_ori], len)) { 1a512: 4643 mov r3, r8 1a514: 466a mov r2, sp 1a516: 8293 strh r3, [r2, #20] 1a518: 8a92 ldrh r2, [r2, #20] 1a51a: 6823 ldr r3, [r4, #0] 1a51c: 1959 adds r1, r3, r5 1a51e: 9804 ldr r0, [sp, #16] 1a520: 4b1b ldr r3, [pc, #108] ; (1a590 ) 1a522: 4798 blx r3 1a524: 2800 cmp r0, #0 1a526: d100 bne.n 1a52a 1a528: e5f1 b.n 1a10e 1a52a: 1cea adds r2, r5, #3 ext->text[byte_id_ori + i] = '.'; 1a52c: 232e movs r3, #46 ; 0x2e 1a52e: 6821 ldr r1, [r4, #0] 1a530: 554b strb r3, [r1, r5] 1a532: 3501 adds r5, #1 for(i = 0; i < LV_LABEL_DOT_NUM; i++) { 1a534: 4295 cmp r5, r2 1a536: d1fa bne.n 1a52e ext->text[byte_id_ori + LV_LABEL_DOT_NUM] = '\0'; 1a538: 2300 movs r3, #0 1a53a: 6822 ldr r2, [r4, #0] 1a53c: 55d3 strb r3, [r2, r7] ext->dot_end = letter_id + LV_LABEL_DOT_NUM; 1a53e: 3603 adds r6, #3 1a540: 8126 strh r6, [r4, #8] 1a542: e5e4 b.n 1a10e _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_TOP, pad_top, lv_style_int_t, _int, scalar) 1a544: 2210 movs r2, #16 1a546: 2100 movs r1, #0 1a548: 9c04 ldr r4, [sp, #16] 1a54a: 0020 movs r0, r4 1a54c: 4e11 ldr r6, [pc, #68] ; (1a594 ) 1a54e: 47b0 blx r6 1a550: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(PAD_BOTTOM, pad_bottom, lv_style_int_t, _int, scalar) 1a552: 2211 movs r2, #17 1a554: 2100 movs r1, #0 1a556: 0020 movs r0, r4 1a558: 47b0 blx r6 size.y += lv_obj_get_style_pad_top(label, LV_LABEL_PART_MAIN) + lv_obj_get_style_pad_bottom(label, LV_LABEL_PART_MAIN); 1a55a: ab17 add r3, sp, #92 ; 0x5c 1a55c: 1828 adds r0, r5, r0 1a55e: 8859 ldrh r1, [r3, #2] 1a560: 1809 adds r1, r1, r0 1a562: b209 sxth r1, r1 1a564: 8059 strh r1, [r3, #2] lv_obj_set_height(label, size.y); 1a566: 0020 movs r0, r4 1a568: 4b0b ldr r3, [pc, #44] ; (1a598 ) 1a56a: 4798 blx r3 1a56c: e5cf b.n 1a10e 1a56e: 46c0 nop ; (mov r8, r8) 1a570: 20000068 .word 0x20000068 1a574: 0000fe91 .word 0x0000fe91 1a578: 0001c385 .word 0x0001c385 1a57c: 00019d71 .word 0x00019d71 1a580: 0001c709 .word 0x0001c709 1a584: 20000054 .word 0x20000054 1a588: 20000064 .word 0x20000064 1a58c: 2000005c .word 0x2000005c 1a590: 00019b05 .word 0x00019b05 1a594: 00003a89 .word 0x00003a89 1a598: 00003961 .word 0x00003961 0001a59c : { 1a59c: b5f0 push {r4, r5, r6, r7, lr} 1a59e: b083 sub sp, #12 1a5a0: 0005 movs r5, r0 1a5a2: 000e movs r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a5a4: 4b42 ldr r3, [pc, #264] ; (1a6b0 ) 1a5a6: 4798 blx r3 1a5a8: 2800 cmp r0, #0 1a5aa: d10c bne.n 1a5c6 1a5ac: 4b41 ldr r3, [pc, #260] ; (1a6b4 ) 1a5ae: 9300 str r3, [sp, #0] 1a5b0: 22b8 movs r2, #184 ; 0xb8 1a5b2: 4941 ldr r1, [pc, #260] ; (1a6b8 ) 1a5b4: 3003 adds r0, #3 1a5b6: 4c41 ldr r4, [pc, #260] ; (1a6bc ) 1a5b8: 47a0 blx r4 1a5ba: 002a movs r2, r5 1a5bc: 2300 movs r3, #0 1a5be: 4840 ldr r0, [pc, #256] ; (1a6c0 ) 1a5c0: 4940 ldr r1, [pc, #256] ; (1a6c4 ) 1a5c2: 4788 blx r1 1a5c4: e7fe b.n 1a5c4 lv_obj_invalidate(label); 1a5c6: 0028 movs r0, r5 1a5c8: 4b3f ldr r3, [pc, #252] ; (1a6c8 ) 1a5ca: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a5cc: 0028 movs r0, r5 1a5ce: 4b3f ldr r3, [pc, #252] ; (1a6cc ) 1a5d0: 4798 blx r3 1a5d2: 0004 movs r4, r0 if(text == NULL) { 1a5d4: 2e00 cmp r6, #0 1a5d6: d022 beq.n 1a61e LV_ASSERT_STR(text); 1a5d8: 0030 movs r0, r6 1a5da: 4b35 ldr r3, [pc, #212] ; (1a6b0 ) 1a5dc: 4798 blx r3 1a5de: 2800 cmp r0, #0 1a5e0: d022 beq.n 1a628 if(ext->text == text && ext->static_txt == 0) { 1a5e2: 6827 ldr r7, [r4, #0] 1a5e4: 42be cmp r6, r7 1a5e6: d02c beq.n 1a642 if(ext->text != NULL && ext->static_txt == 0) { 1a5e8: 2f00 cmp r7, #0 1a5ea: d002 beq.n 1a5f2 1a5ec: 7c23 ldrb r3, [r4, #16] 1a5ee: 071b lsls r3, r3, #28 1a5f0: d54a bpl.n 1a688 size_t len = strlen(text) + 1; 1a5f2: 0030 movs r0, r6 1a5f4: 4b36 ldr r3, [pc, #216] ; (1a6d0 ) 1a5f6: 4798 blx r3 1a5f8: 3001 adds r0, #1 ext->text = lv_mem_alloc(len); 1a5fa: 4b36 ldr r3, [pc, #216] ; (1a6d4 ) 1a5fc: 4798 blx r3 1a5fe: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a600: 4b2b ldr r3, [pc, #172] ; (1a6b0 ) 1a602: 4798 blx r3 1a604: 2800 cmp r0, #0 1a606: d045 beq.n 1a694 if(ext->text == NULL) return; 1a608: 6820 ldr r0, [r4, #0] 1a60a: 2800 cmp r0, #0 1a60c: d00a beq.n 1a624 strcpy(ext->text, text); 1a60e: 0031 movs r1, r6 1a610: 4b31 ldr r3, [pc, #196] ; (1a6d8 ) 1a612: 4798 blx r3 ext->static_txt = 0; 1a614: 7c23 ldrb r3, [r4, #16] 1a616: 2208 movs r2, #8 1a618: 4393 bics r3, r2 1a61a: 7423 strb r3, [r4, #16] 1a61c: e030 b.n 1a680 lv_label_refr_text(label); 1a61e: 0028 movs r0, r5 1a620: 4b2e ldr r3, [pc, #184] ; (1a6dc ) 1a622: 4798 blx r3 } 1a624: b003 add sp, #12 1a626: bdf0 pop {r4, r5, r6, r7, pc} LV_ASSERT_STR(text); 1a628: 4b22 ldr r3, [pc, #136] ; (1a6b4 ) 1a62a: 9300 str r3, [sp, #0] 1a62c: 22c4 movs r2, #196 ; 0xc4 1a62e: 4922 ldr r1, [pc, #136] ; (1a6b8 ) 1a630: 3003 adds r0, #3 1a632: 4c22 ldr r4, [pc, #136] ; (1a6bc ) 1a634: 47a0 blx r4 1a636: 0032 movs r2, r6 1a638: 2300 movs r3, #0 1a63a: 4821 ldr r0, [pc, #132] ; (1a6c0 ) 1a63c: 4921 ldr r1, [pc, #132] ; (1a6c4 ) 1a63e: 4788 blx r1 1a640: e7fe b.n 1a640 if(ext->text == text && ext->static_txt == 0) { 1a642: 7c23 ldrb r3, [r4, #16] 1a644: 071b lsls r3, r3, #28 1a646: d4d4 bmi.n 1a5f2 ext->text = lv_mem_realloc(ext->text, strlen(ext->text) + 1); 1a648: 0038 movs r0, r7 1a64a: 4b21 ldr r3, [pc, #132] ; (1a6d0 ) 1a64c: 4798 blx r3 1a64e: 1c41 adds r1, r0, #1 1a650: 0038 movs r0, r7 1a652: 4b23 ldr r3, [pc, #140] ; (1a6e0 ) 1a654: 4798 blx r3 1a656: 6020 str r0, [r4, #0] LV_ASSERT_MEM(ext->text); 1a658: 4b15 ldr r3, [pc, #84] ; (1a6b0 ) 1a65a: 4798 blx r3 1a65c: 2800 cmp r0, #0 1a65e: d10c bne.n 1a67a 1a660: 4b14 ldr r3, [pc, #80] ; (1a6b4 ) 1a662: 9300 str r3, [sp, #0] 1a664: 22d5 movs r2, #213 ; 0xd5 1a666: 4914 ldr r1, [pc, #80] ; (1a6b8 ) 1a668: 3003 adds r0, #3 1a66a: 4d14 ldr r5, [pc, #80] ; (1a6bc ) 1a66c: 47a8 blx r5 1a66e: 6822 ldr r2, [r4, #0] 1a670: 2300 movs r3, #0 1a672: 481c ldr r0, [pc, #112] ; (1a6e4 ) 1a674: 4913 ldr r1, [pc, #76] ; (1a6c4 ) 1a676: 4788 blx r1 1a678: e7fe b.n 1a678 if(ext->text == NULL) return; 1a67a: 6823 ldr r3, [r4, #0] 1a67c: 2b00 cmp r3, #0 1a67e: d0d1 beq.n 1a624 lv_label_refr_text(label); 1a680: 0028 movs r0, r5 1a682: 4b16 ldr r3, [pc, #88] ; (1a6dc ) 1a684: 4798 blx r3 1a686: e7cd b.n 1a624 lv_mem_free(ext->text); 1a688: 0038 movs r0, r7 1a68a: 4b17 ldr r3, [pc, #92] ; (1a6e8 ) 1a68c: 4798 blx r3 ext->text = NULL; 1a68e: 2300 movs r3, #0 1a690: 6023 str r3, [r4, #0] 1a692: e7ae b.n 1a5f2 LV_ASSERT_MEM(ext->text); 1a694: 4b07 ldr r3, [pc, #28] ; (1a6b4 ) 1a696: 9300 str r3, [sp, #0] 1a698: 22ee movs r2, #238 ; 0xee 1a69a: 4907 ldr r1, [pc, #28] ; (1a6b8 ) 1a69c: 3003 adds r0, #3 1a69e: 4d07 ldr r5, [pc, #28] ; (1a6bc ) 1a6a0: 47a8 blx r5 1a6a2: 6822 ldr r2, [r4, #0] 1a6a4: 2300 movs r3, #0 1a6a6: 480f ldr r0, [pc, #60] ; (1a6e4 ) 1a6a8: 4906 ldr r1, [pc, #24] ; (1a6c4 ) 1a6aa: 4788 blx r1 1a6ac: e7fe b.n 1a6ac 1a6ae: 46c0 nop ; (mov r8, r8) 1a6b0: 000017ad .word 0x000017ad 1a6b4: 0002aec8 .word 0x0002aec8 1a6b8: 0002b014 .word 0x0002b014 1a6bc: 00012159 .word 0x00012159 1a6c0: 00025d20 .word 0x00025d20 1a6c4: 000017b5 .word 0x000017b5 1a6c8: 00002869 .word 0x00002869 1a6cc: 000043d1 .word 0x000043d1 1a6d0: 0001c709 .word 0x0001c709 1a6d4: 000122dd .word 0x000122dd 1a6d8: 0001c6f9 .word 0x0001c6f9 1a6dc: 0001a075 .word 0x0001a075 1a6e0: 000126fd .word 0x000126fd 1a6e4: 00025854 .word 0x00025854 1a6e8: 000123c9 .word 0x000123c9 0001a6ec : { 1a6ec: b570 push {r4, r5, r6, lr} 1a6ee: b082 sub sp, #8 1a6f0: 0005 movs r5, r0 1a6f2: 000e movs r6, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a6f4: 4b15 ldr r3, [pc, #84] ; (1a74c ) 1a6f6: 4798 blx r3 1a6f8: 2800 cmp r0, #0 1a6fa: d10d bne.n 1a718 1a6fc: 4b14 ldr r3, [pc, #80] ; (1a750 ) 1a6fe: 9300 str r3, [sp, #0] 1a700: 22a6 movs r2, #166 ; 0xa6 1a702: 0052 lsls r2, r2, #1 1a704: 4913 ldr r1, [pc, #76] ; (1a754 ) 1a706: 3003 adds r0, #3 1a708: 4c13 ldr r4, [pc, #76] ; (1a758 ) 1a70a: 47a0 blx r4 1a70c: 002a movs r2, r5 1a70e: 2300 movs r3, #0 1a710: 4812 ldr r0, [pc, #72] ; (1a75c ) 1a712: 4913 ldr r1, [pc, #76] ; (1a760 ) 1a714: 4788 blx r1 1a716: e7fe b.n 1a716 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a718: 0028 movs r0, r5 1a71a: 4b12 ldr r3, [pc, #72] ; (1a764 ) 1a71c: 4798 blx r3 1a71e: 0004 movs r4, r0 if(ext->static_txt == 0 && ext->text != NULL) { 1a720: 7c03 ldrb r3, [r0, #16] 1a722: 071b lsls r3, r3, #28 1a724: d406 bmi.n 1a734 1a726: 6800 ldr r0, [r0, #0] 1a728: 2800 cmp r0, #0 1a72a: d003 beq.n 1a734 lv_mem_free(ext->text); 1a72c: 4b0e ldr r3, [pc, #56] ; (1a768 ) 1a72e: 4798 blx r3 ext->text = NULL; 1a730: 2300 movs r3, #0 1a732: 6023 str r3, [r4, #0] if(text != NULL) { 1a734: 2e00 cmp r6, #0 1a736: d004 beq.n 1a742 ext->static_txt = 1; 1a738: 7c23 ldrb r3, [r4, #16] 1a73a: 2208 movs r2, #8 1a73c: 4313 orrs r3, r2 1a73e: 7423 strb r3, [r4, #16] ext->text = (char *)text; 1a740: 6026 str r6, [r4, #0] lv_label_refr_text(label); 1a742: 0028 movs r0, r5 1a744: 4b09 ldr r3, [pc, #36] ; (1a76c ) 1a746: 4798 blx r3 } 1a748: b002 add sp, #8 1a74a: bd70 pop {r4, r5, r6, pc} 1a74c: 000017ad .word 0x000017ad 1a750: 0002aedc .word 0x0002aedc 1a754: 0002b014 .word 0x0002b014 1a758: 00012159 .word 0x00012159 1a75c: 00025d20 .word 0x00025d20 1a760: 000017b5 .word 0x000017b5 1a764: 000043d1 .word 0x000043d1 1a768: 000123c9 .word 0x000123c9 1a76c: 0001a075 .word 0x0001a075 0001a770 : { 1a770: b5f0 push {r4, r5, r6, r7, lr} 1a772: b083 sub sp, #12 1a774: 0005 movs r5, r0 1a776: 000f movs r7, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a778: 4b25 ldr r3, [pc, #148] ; (1a810 ) 1a77a: 4798 blx r3 1a77c: 2800 cmp r0, #0 1a77e: d10d bne.n 1a79c 1a780: 4b24 ldr r3, [pc, #144] ; (1a814 ) 1a782: 9300 str r3, [sp, #0] 1a784: 2266 movs r2, #102 ; 0x66 1a786: 32ff adds r2, #255 ; 0xff 1a788: 4923 ldr r1, [pc, #140] ; (1a818 ) 1a78a: 3003 adds r0, #3 1a78c: 4c23 ldr r4, [pc, #140] ; (1a81c ) 1a78e: 47a0 blx r4 1a790: 002a movs r2, r5 1a792: 2300 movs r3, #0 1a794: 4822 ldr r0, [pc, #136] ; (1a820 ) 1a796: 4923 ldr r1, [pc, #140] ; (1a824 ) 1a798: 4788 blx r1 1a79a: e7fe b.n 1a79a lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a79c: 0028 movs r0, r5 1a79e: 4b22 ldr r3, [pc, #136] ; (1a828 ) 1a7a0: 4798 blx r3 1a7a2: 0004 movs r4, r0 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_x); 1a7a4: 4921 ldr r1, [pc, #132] ; (1a82c ) 1a7a6: 0028 movs r0, r5 1a7a8: 4e21 ldr r6, [pc, #132] ; (1a830 ) 1a7aa: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); 1a7ac: 4921 ldr r1, [pc, #132] ; (1a834 ) 1a7ae: 0028 movs r0, r5 1a7b0: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_x); 1a7b2: 4921 ldr r1, [pc, #132] ; (1a838 ) 1a7b4: 0028 movs r0, r5 1a7b6: 47b0 blx r6 lv_anim_del(label, (lv_anim_exec_xcb_t)lv_label_set_offset_y); 1a7b8: 4920 ldr r1, [pc, #128] ; (1a83c ) 1a7ba: 0028 movs r0, r5 1a7bc: 47b0 blx r6 ext->offset.x = 0; 1a7be: 2300 movs r3, #0 1a7c0: 81a3 strh r3, [r4, #12] ext->offset.y = 0; 1a7c2: 81e3 strh r3, [r4, #14] if(long_mode == LV_LABEL_LONG_SROLL || long_mode == LV_LABEL_LONG_SROLL_CIRC || long_mode == LV_LABEL_LONG_CROP) 1a7c4: 1efb subs r3, r7, #3 1a7c6: 2b02 cmp r3, #2 1a7c8: d815 bhi.n 1a7f6 ext->expand = 1; 1a7ca: 7c22 ldrb r2, [r4, #16] 1a7cc: 2380 movs r3, #128 ; 0x80 1a7ce: 425b negs r3, r3 1a7d0: 4313 orrs r3, r2 1a7d2: 7423 strb r3, [r4, #16] if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1a7d4: 7c22 ldrb r2, [r4, #16] 1a7d6: 2307 movs r3, #7 1a7d8: 4013 ands r3, r2 1a7da: 2b02 cmp r3, #2 1a7dc: d010 beq.n 1a800 ext->long_mode = long_mode; 1a7de: 2307 movs r3, #7 1a7e0: 401f ands r7, r3 1a7e2: 7c23 ldrb r3, [r4, #16] 1a7e4: 2107 movs r1, #7 1a7e6: 438b bics r3, r1 1a7e8: 433b orrs r3, r7 1a7ea: 7423 strb r3, [r4, #16] lv_label_refr_text(label); 1a7ec: 0028 movs r0, r5 1a7ee: 4b14 ldr r3, [pc, #80] ; (1a840 ) 1a7f0: 4798 blx r3 } 1a7f2: b003 add sp, #12 1a7f4: bdf0 pop {r4, r5, r6, r7, pc} ext->expand = 0; 1a7f6: 7c22 ldrb r2, [r4, #16] 1a7f8: 237f movs r3, #127 ; 0x7f 1a7fa: 4013 ands r3, r2 1a7fc: 7423 strb r3, [r4, #16] 1a7fe: e7e9 b.n 1a7d4 if(ext->long_mode == LV_LABEL_LONG_DOT && ext->dot_end != LV_LABEL_DOT_END_INV) { 1a800: 8922 ldrh r2, [r4, #8] 1a802: 4b10 ldr r3, [pc, #64] ; (1a844 ) 1a804: 429a cmp r2, r3 1a806: d0ea beq.n 1a7de lv_label_revert_dots(label); 1a808: 0028 movs r0, r5 1a80a: 4b0f ldr r3, [pc, #60] ; (1a848 ) 1a80c: 4798 blx r3 1a80e: e7e6 b.n 1a7de 1a810: 000017ad .word 0x000017ad 1a814: 0002aef8 .word 0x0002aef8 1a818: 0002b014 .word 0x0002b014 1a81c: 00012159 .word 0x00012159 1a820: 00025d20 .word 0x00025d20 1a824: 000017b5 .word 0x000017b5 1a828: 000043d1 .word 0x000043d1 1a82c: 00002a71 .word 0x00002a71 1a830: 000111fd .word 0x000111fd 1a834: 00002ad1 .word 0x00002ad1 1a838: 00019a89 .word 0x00019a89 1a83c: 00019a6d .word 0x00019a6d 1a840: 0001a075 .word 0x0001a075 1a844: 0000ffff .word 0x0000ffff 1a848: 000199e5 .word 0x000199e5 0001a84c : { 1a84c: b530 push {r4, r5, lr} 1a84e: b083 sub sp, #12 1a850: 0004 movs r4, r0 1a852: 000d movs r5, r1 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1a854: 4b13 ldr r3, [pc, #76] ; (1a8a4 ) 1a856: 4798 blx r3 1a858: 2800 cmp r0, #0 1a85a: d10d bne.n 1a878 1a85c: 4b12 ldr r3, [pc, #72] ; (1a8a8 ) 1a85e: 9300 str r3, [sp, #0] 1a860: 22cd movs r2, #205 ; 0xcd 1a862: 0052 lsls r2, r2, #1 1a864: 4911 ldr r1, [pc, #68] ; (1a8ac ) 1a866: 3003 adds r0, #3 1a868: 4d11 ldr r5, [pc, #68] ; (1a8b0 ) 1a86a: 47a8 blx r5 1a86c: 0022 movs r2, r4 1a86e: 2300 movs r3, #0 1a870: 4810 ldr r0, [pc, #64] ; (1a8b4 ) 1a872: 4911 ldr r1, [pc, #68] ; (1a8b8 ) 1a874: 4788 blx r1 1a876: e7fe b.n 1a876 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1a878: 0020 movs r0, r4 1a87a: 4b10 ldr r3, [pc, #64] ; (1a8bc ) 1a87c: 4798 blx r3 if(ext->recolor == en) return; 1a87e: 7c03 ldrb r3, [r0, #16] 1a880: 065b lsls r3, r3, #25 1a882: 0fdb lsrs r3, r3, #31 1a884: 42ab cmp r3, r5 1a886: d00a beq.n 1a89e ext->recolor = en == false ? 0 : 1; 1a888: 2301 movs r3, #1 1a88a: 402b ands r3, r5 1a88c: 019a lsls r2, r3, #6 1a88e: 7c03 ldrb r3, [r0, #16] 1a890: 2140 movs r1, #64 ; 0x40 1a892: 438b bics r3, r1 1a894: 4313 orrs r3, r2 1a896: 7403 strb r3, [r0, #16] lv_label_refr_text(label); /*Refresh the text because the potential colo codes in text needs to 1a898: 0020 movs r0, r4 1a89a: 4b09 ldr r3, [pc, #36] ; (1a8c0 ) 1a89c: 4798 blx r3 } 1a89e: b003 add sp, #12 1a8a0: bd30 pop {r4, r5, pc} 1a8a2: 46c0 nop ; (mov r8, r8) 1a8a4: 000017ad .word 0x000017ad 1a8a8: 0002af24 .word 0x0002af24 1a8ac: 0002b014 .word 0x0002b014 1a8b0: 00012159 .word 0x00012159 1a8b4: 00025d20 .word 0x00025d20 1a8b8: 000017b5 .word 0x000017b5 1a8bc: 000043d1 .word 0x000043d1 1a8c0: 0001a075 .word 0x0001a075 0001a8c4 : { 1a8c4: b5f0 push {r4, r5, r6, r7, lr} 1a8c6: b085 sub sp, #20 1a8c8: 000f movs r7, r1 lv_obj_t * new_label = lv_obj_create(par, copy); 1a8ca: 4b7d ldr r3, [pc, #500] ; (1aac0 ) 1a8cc: 4798 blx r3 1a8ce: 0004 movs r4, r0 LV_ASSERT_MEM(new_label); 1a8d0: 4b7c ldr r3, [pc, #496] ; (1aac4 ) 1a8d2: 4798 blx r3 1a8d4: 2800 cmp r0, #0 1a8d6: d01f beq.n 1a918 if(new_label == NULL) return NULL; 1a8d8: 2c00 cmp r4, #0 1a8da: d100 bne.n 1a8de 1a8dc: e09f b.n 1aa1e if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1a8de: 4b7a ldr r3, [pc, #488] ; (1aac8 ) 1a8e0: 681b ldr r3, [r3, #0] 1a8e2: 2b00 cmp r3, #0 1a8e4: d025 beq.n 1a932 lv_obj_allocate_ext_attr(new_label, sizeof(lv_label_ext_t)); 1a8e6: 2114 movs r1, #20 1a8e8: 0020 movs r0, r4 1a8ea: 4b78 ldr r3, [pc, #480] ; (1aacc ) 1a8ec: 4798 blx r3 lv_label_ext_t * ext = lv_obj_get_ext_attr(new_label); 1a8ee: 0020 movs r0, r4 1a8f0: 4b77 ldr r3, [pc, #476] ; (1aad0 ) 1a8f2: 4798 blx r3 1a8f4: 0005 movs r5, r0 LV_ASSERT_MEM(ext); 1a8f6: 4b73 ldr r3, [pc, #460] ; (1aac4 ) 1a8f8: 4798 blx r3 1a8fa: 2800 cmp r0, #0 1a8fc: d11f bne.n 1a93e 1a8fe: 4b75 ldr r3, [pc, #468] ; (1aad4 ) 1a900: 9300 str r3, [sp, #0] 1a902: 225d movs r2, #93 ; 0x5d 1a904: 4974 ldr r1, [pc, #464] ; (1aad8 ) 1a906: 3003 adds r0, #3 1a908: 4c74 ldr r4, [pc, #464] ; (1aadc ) 1a90a: 47a0 blx r4 1a90c: 002a movs r2, r5 1a90e: 2300 movs r3, #0 1a910: 4873 ldr r0, [pc, #460] ; (1aae0 ) 1a912: 4974 ldr r1, [pc, #464] ; (1aae4 ) 1a914: 4788 blx r1 1a916: e7fe b.n 1a916 LV_ASSERT_MEM(new_label); 1a918: 4b6e ldr r3, [pc, #440] ; (1aad4 ) 1a91a: 9300 str r3, [sp, #0] 1a91c: 2254 movs r2, #84 ; 0x54 1a91e: 496e ldr r1, [pc, #440] ; (1aad8 ) 1a920: 3003 adds r0, #3 1a922: 4d6e ldr r5, [pc, #440] ; (1aadc ) 1a924: 47a8 blx r5 1a926: 0022 movs r2, r4 1a928: 2300 movs r3, #0 1a92a: 486d ldr r0, [pc, #436] ; (1aae0 ) 1a92c: 496d ldr r1, [pc, #436] ; (1aae4 ) 1a92e: 4788 blx r1 1a930: e7fe b.n 1a930 if(ancestor_signal == NULL) ancestor_signal = lv_obj_get_signal_cb(new_label); 1a932: 0020 movs r0, r4 1a934: 4b6c ldr r3, [pc, #432] ; (1aae8 ) 1a936: 4798 blx r3 1a938: 4b63 ldr r3, [pc, #396] ; (1aac8 ) 1a93a: 6018 str r0, [r3, #0] 1a93c: e7d3 b.n 1a8e6 if(ext == NULL) { 1a93e: 2d00 cmp r5, #0 1a940: d100 bne.n 1a944 1a942: e06f b.n 1aa24 ext->text = NULL; 1a944: 2200 movs r2, #0 1a946: 602a str r2, [r5, #0] ext->static_txt = 0; 1a948: 7c2b ldrb r3, [r5, #16] ext->recolor = 0; 1a94a: 2108 movs r1, #8 1a94c: 438b bics r3, r1 ext->align = LV_LABEL_ALIGN_AUTO; 1a94e: 3138 adds r1, #56 ; 0x38 1a950: 438b bics r3, r1 1a952: 2130 movs r1, #48 ; 0x30 1a954: 430b orrs r3, r1 ext->dot_end = LV_LABEL_DOT_END_INV; 1a956: 2101 movs r1, #1 1a958: 4249 negs r1, r1 1a95a: 8129 strh r1, [r5, #8] ext->long_mode = LV_LABEL_LONG_EXPAND; 1a95c: 31f9 adds r1, #249 ; 0xf9 1a95e: 400b ands r3, r1 1a960: 742b strb r3, [r5, #16] ext->anim_speed = LV_LABEL_DEF_SCROLL_SPEED; 1a962: 2319 movs r3, #25 1a964: 816b strh r3, [r5, #10] ext->offset.x = 0; 1a966: 81aa strh r2, [r5, #12] ext->offset.y = 0; 1a968: 81ea strh r2, [r5, #14] ext->dot.tmp_ptr = NULL; 1a96a: 606a str r2, [r5, #4] ext->dot_tmp_alloc = 0; 1a96c: 7c6b ldrb r3, [r5, #17] 1a96e: 3201 adds r2, #1 1a970: 4393 bics r3, r2 1a972: 746b strb r3, [r5, #17] lv_obj_set_design_cb(new_label, lv_label_design); 1a974: 495d ldr r1, [pc, #372] ; (1aaec ) 1a976: 0020 movs r0, r4 1a978: 4b5d ldr r3, [pc, #372] ; (1aaf0 ) 1a97a: 4798 blx r3 lv_obj_set_signal_cb(new_label, lv_label_signal); 1a97c: 495d ldr r1, [pc, #372] ; (1aaf4 ) 1a97e: 0020 movs r0, r4 1a980: 4b5d ldr r3, [pc, #372] ; (1aaf8 ) 1a982: 4798 blx r3 if(copy == NULL) { 1a984: 2f00 cmp r7, #0 1a986: d052 beq.n 1aa2e lv_label_ext_t * copy_ext = lv_obj_get_ext_attr(copy); 1a988: 0038 movs r0, r7 1a98a: 4b51 ldr r3, [pc, #324] ; (1aad0 ) 1a98c: 4798 blx r3 1a98e: 0006 movs r6, r0 lv_label_set_long_mode(new_label, lv_label_get_long_mode(copy)); 1a990: 0038 movs r0, r7 1a992: 4b5a ldr r3, [pc, #360] ; (1aafc ) 1a994: 4798 blx r3 1a996: 0001 movs r1, r0 1a998: 0020 movs r0, r4 1a99a: 4b59 ldr r3, [pc, #356] ; (1ab00 ) 1a99c: 4798 blx r3 lv_label_set_recolor(new_label, lv_label_get_recolor(copy)); 1a99e: 0038 movs r0, r7 1a9a0: 4b58 ldr r3, [pc, #352] ; (1ab04 ) 1a9a2: 4798 blx r3 1a9a4: 0001 movs r1, r0 1a9a6: 0020 movs r0, r4 1a9a8: 4b57 ldr r3, [pc, #348] ; (1ab08 ) 1a9aa: 4798 blx r3 lv_label_set_align(new_label, lv_label_get_align(copy)); 1a9ac: 0038 movs r0, r7 1a9ae: 4b57 ldr r3, [pc, #348] ; (1ab0c ) 1a9b0: 4798 blx r3 1a9b2: 0001 movs r1, r0 1a9b4: 0020 movs r0, r4 1a9b6: 4b56 ldr r3, [pc, #344] ; (1ab10 ) 1a9b8: 4798 blx r3 if(copy_ext->static_txt == 0) 1a9ba: 7c33 ldrb r3, [r6, #16] 1a9bc: 071b lsls r3, r3, #28 1a9be: d447 bmi.n 1aa50 lv_label_set_text(new_label, lv_label_get_text(copy)); 1a9c0: 0038 movs r0, r7 1a9c2: 4b54 ldr r3, [pc, #336] ; (1ab14 ) 1a9c4: 4798 blx r3 1a9c6: 0001 movs r1, r0 1a9c8: 0020 movs r0, r4 1a9ca: 4b53 ldr r3, [pc, #332] ; (1ab18 ) 1a9cc: 4798 blx r3 if(copy_ext->long_mode == LV_LABEL_LONG_DOT) { 1a9ce: 7c32 ldrb r2, [r6, #16] 1a9d0: 2307 movs r3, #7 1a9d2: 4013 ands r3, r2 1a9d4: 2b02 cmp r3, #2 1a9d6: d043 beq.n 1aa60 if(copy_ext->dot_tmp_alloc && copy_ext->dot.tmp_ptr) { 1a9d8: 7c73 ldrb r3, [r6, #17] 1a9da: 07db lsls r3, r3, #31 1a9dc: d568 bpl.n 1aab0 1a9de: 6870 ldr r0, [r6, #4] 1a9e0: 2800 cmp r0, #0 1a9e2: d065 beq.n 1aab0 uint16_t len = (uint16_t)strlen(copy_ext->dot.tmp_ptr); 1a9e4: 4b4d ldr r3, [pc, #308] ; (1ab1c ) 1a9e6: 4798 blx r3 lv_label_set_dot_tmp(new_label, ext->dot.tmp_ptr, len); 1a9e8: b282 uxth r2, r0 1a9ea: 6869 ldr r1, [r5, #4] 1a9ec: 0020 movs r0, r4 1a9ee: 4b4c ldr r3, [pc, #304] ; (1ab20 ) 1a9f0: 4798 blx r3 ext->dot_tmp_alloc = copy_ext->dot_tmp_alloc; 1a9f2: 7c73 ldrb r3, [r6, #17] 1a9f4: 07db lsls r3, r3, #31 1a9f6: 0fda lsrs r2, r3, #31 1a9f8: 7c6b ldrb r3, [r5, #17] 1a9fa: 2101 movs r1, #1 1a9fc: 438b bics r3, r1 1a9fe: 4313 orrs r3, r2 1aa00: 746b strb r3, [r5, #17] ext->dot_end = copy_ext->dot_end; 1aa02: 8933 ldrh r3, [r6, #8] 1aa04: 812b strh r3, [r5, #8] lv_obj_refresh_style(new_label, LV_STYLE_PROP_ALL); 1aa06: 31fe adds r1, #254 ; 0xfe 1aa08: 0020 movs r0, r4 1aa0a: 4b46 ldr r3, [pc, #280] ; (1ab24 ) 1aa0c: 4798 blx r3 LV_LOG_INFO("label created"); 1aa0e: 4b46 ldr r3, [pc, #280] ; (1ab28 ) 1aa10: 9300 str r3, [sp, #0] 1aa12: 4b30 ldr r3, [pc, #192] ; (1aad4 ) 1aa14: 22a8 movs r2, #168 ; 0xa8 1aa16: 4930 ldr r1, [pc, #192] ; (1aad8 ) 1aa18: 2001 movs r0, #1 1aa1a: 4d30 ldr r5, [pc, #192] ; (1aadc ) 1aa1c: 47a8 blx r5 } 1aa1e: 0020 movs r0, r4 1aa20: b005 add sp, #20 1aa22: bdf0 pop {r4, r5, r6, r7, pc} lv_obj_del(new_label); 1aa24: 0020 movs r0, r4 1aa26: 4b41 ldr r3, [pc, #260] ; (1ab2c ) 1aa28: 4798 blx r3 return NULL; 1aa2a: 2400 movs r4, #0 1aa2c: e7f7 b.n 1aa1e lv_theme_apply(new_label, LV_THEME_LABEL); 1aa2e: 2112 movs r1, #18 1aa30: 0020 movs r0, r4 1aa32: 4b3f ldr r3, [pc, #252] ; (1ab30 ) 1aa34: 4798 blx r3 lv_obj_set_click(new_label, false); 1aa36: 2100 movs r1, #0 1aa38: 0020 movs r0, r4 1aa3a: 4b3e ldr r3, [pc, #248] ; (1ab34 ) 1aa3c: 4798 blx r3 lv_label_set_long_mode(new_label, LV_LABEL_LONG_EXPAND); 1aa3e: 2100 movs r1, #0 1aa40: 0020 movs r0, r4 1aa42: 4b2f ldr r3, [pc, #188] ; (1ab00 ) 1aa44: 4798 blx r3 lv_label_set_text(new_label, "Text"); 1aa46: 493c ldr r1, [pc, #240] ; (1ab38 ) 1aa48: 0020 movs r0, r4 1aa4a: 4b33 ldr r3, [pc, #204] ; (1ab18 ) 1aa4c: 4798 blx r3 1aa4e: e7de b.n 1aa0e lv_label_set_text_static(new_label, lv_label_get_text(copy)); 1aa50: 0038 movs r0, r7 1aa52: 4b30 ldr r3, [pc, #192] ; (1ab14 ) 1aa54: 4798 blx r3 1aa56: 0001 movs r1, r0 1aa58: 0020 movs r0, r4 1aa5a: 4b38 ldr r3, [pc, #224] ; (1ab3c ) 1aa5c: 4798 blx r3 1aa5e: e7b6 b.n 1a9ce ext->text = lv_mem_realloc(ext->text, _lv_mem_get_size(copy_ext->text)); 1aa60: 682f ldr r7, [r5, #0] 1aa62: 6830 ldr r0, [r6, #0] 1aa64: 4b36 ldr r3, [pc, #216] ; (1ab40 ) 1aa66: 4798 blx r3 1aa68: 0001 movs r1, r0 1aa6a: 0038 movs r0, r7 1aa6c: 4b35 ldr r3, [pc, #212] ; (1ab44 ) 1aa6e: 4798 blx r3 1aa70: 6028 str r0, [r5, #0] LV_ASSERT_MEM(ext->text); 1aa72: 4b14 ldr r3, [pc, #80] ; (1aac4 ) 1aa74: 4798 blx r3 1aa76: 2800 cmp r0, #0 1aa78: d10c bne.n 1aa94 1aa7a: 4b16 ldr r3, [pc, #88] ; (1aad4 ) 1aa7c: 9300 str r3, [sp, #0] 1aa7e: 2295 movs r2, #149 ; 0x95 1aa80: 4915 ldr r1, [pc, #84] ; (1aad8 ) 1aa82: 3003 adds r0, #3 1aa84: 4c15 ldr r4, [pc, #84] ; (1aadc ) 1aa86: 47a0 blx r4 1aa88: 682a ldr r2, [r5, #0] 1aa8a: 2300 movs r3, #0 1aa8c: 4814 ldr r0, [pc, #80] ; (1aae0 ) 1aa8e: 4915 ldr r1, [pc, #84] ; (1aae4 ) 1aa90: 4788 blx r1 1aa92: e7fe b.n 1aa92 if(ext->text == NULL) return NULL; 1aa94: 682f ldr r7, [r5, #0] 1aa96: 2f00 cmp r7, #0 1aa98: d010 beq.n 1aabc _lv_memcpy(ext->text, copy_ext->text, _lv_mem_get_size(copy_ext->text)); 1aa9a: 6833 ldr r3, [r6, #0] 1aa9c: 9303 str r3, [sp, #12] 1aa9e: 0018 movs r0, r3 1aaa0: 4b27 ldr r3, [pc, #156] ; (1ab40 ) 1aaa2: 4798 blx r3 1aaa4: 0002 movs r2, r0 1aaa6: 9903 ldr r1, [sp, #12] 1aaa8: 0038 movs r0, r7 1aaaa: 4b27 ldr r3, [pc, #156] ; (1ab48 ) 1aaac: 4798 blx r3 1aaae: e793 b.n 1a9d8 _lv_memcpy(ext->dot.tmp, copy_ext->dot.tmp, sizeof(ext->dot.tmp)); 1aab0: 1d31 adds r1, r6, #4 1aab2: 1d28 adds r0, r5, #4 1aab4: 2204 movs r2, #4 1aab6: 4b24 ldr r3, [pc, #144] ; (1ab48 ) 1aab8: 4798 blx r3 1aaba: e79a b.n 1a9f2 if(ext->text == NULL) return NULL; 1aabc: 2400 movs r4, #0 1aabe: e7ae b.n 1aa1e 1aac0: 00003395 .word 0x00003395 1aac4: 000017ad .word 0x000017ad 1aac8: 20004c70 .word 0x20004c70 1aacc: 000020f1 .word 0x000020f1 1aad0: 000043d1 .word 0x000043d1 1aad4: 0002aeb8 .word 0x0002aeb8 1aad8: 0002b014 .word 0x0002b014 1aadc: 00012159 .word 0x00012159 1aae0: 00025854 .word 0x00025854 1aae4: 000017b5 .word 0x000017b5 1aae8: 00004385 .word 0x00004385 1aaec: 0001ace1 .word 0x0001ace1 1aaf0: 000020a5 .word 0x000020a5 1aaf4: 0001ab4d .word 0x0001ab4d 1aaf8: 00002041 .word 0x00002041 1aafc: 00019c61 .word 0x00019c61 1ab00: 0001a771 .word 0x0001a771 1ab04: 00019d19 .word 0x00019d19 1ab08: 0001a84d .word 0x0001a84d 1ab0c: 00019cb9 .word 0x00019cb9 1ab10: 00019b95 .word 0x00019b95 1ab14: 00019c0d .word 0x00019c0d 1ab18: 0001a59d .word 0x0001a59d 1ab1c: 0001c709 .word 0x0001c709 1ab20: 00019b05 .word 0x00019b05 1ab24: 00002ff5 .word 0x00002ff5 1ab28: 0002b004 .word 0x0002b004 1ab2c: 000045a9 .word 0x000045a9 1ab30: 000140e5 .word 0x000140e5 1ab34: 00001ea5 .word 0x00001ea5 1ab38: 0002affc .word 0x0002affc 1ab3c: 0001a6ed .word 0x0001a6ed 1ab40: 00012445 .word 0x00012445 1ab44: 000126fd .word 0x000126fd 1ab48: 00012545 .word 0x00012545 0001ab4c : { 1ab4c: b5f0 push {r4, r5, r6, r7, lr} 1ab4e: 46c6 mov lr, r8 1ab50: b500 push {lr} 1ab52: 0006 movs r6, r0 1ab54: 000d movs r5, r1 1ab56: 0017 movs r7, r2 if(sign == LV_SIGNAL_GET_STYLE) { 1ab58: 2908 cmp r1, #8 1ab5a: d014 beq.n 1ab86 res = ancestor_signal(label, sign, param); 1ab5c: 4b31 ldr r3, [pc, #196] ; (1ac24 ) 1ab5e: 681b ldr r3, [r3, #0] 1ab60: 4798 blx r3 1ab62: 0004 movs r4, r0 if(res != LV_RES_OK) return res; 1ab64: 2801 cmp r0, #1 1ab66: d119 bne.n 1ab9c if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1ab68: 2d07 cmp r5, #7 1ab6a: d022 beq.n 1abb2 lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1ab6c: 0030 movs r0, r6 1ab6e: 4b2e ldr r3, [pc, #184] ; (1ac28 ) 1ab70: 4798 blx r3 1ab72: 4680 mov r8, r0 if(sign == LV_SIGNAL_CLEANUP) { 1ab74: 2d00 cmp r5, #0 1ab76: d129 bne.n 1abcc if(ext->static_txt == 0) { 1ab78: 7c03 ldrb r3, [r0, #16] 1ab7a: 071b lsls r3, r3, #28 1ab7c: d51f bpl.n 1abbe lv_label_dot_tmp_free(label); 1ab7e: 0030 movs r0, r6 1ab80: 4b2a ldr r3, [pc, #168] ; (1ac2c ) 1ab82: 4798 blx r3 1ab84: e00a b.n 1ab9c switch(type) { 1ab86: 7811 ldrb r1, [r2, #0] style_dsc_p = &label->style_list; 1ab88: 0002 movs r2, r0 1ab8a: 3228 adds r2, #40 ; 0x28 style_dsc_p = NULL; 1ab8c: 424b negs r3, r1 1ab8e: 414b adcs r3, r1 1ab90: 425b negs r3, r3 1ab92: 401a ands r2, r3 info->result = lv_label_get_style(label, info->part); 1ab94: 607a str r2, [r7, #4] if(info->result != NULL) return LV_RES_OK; 1ab96: 2401 movs r4, #1 1ab98: 2a00 cmp r2, #0 1ab9a: d003 beq.n 1aba4 } 1ab9c: 0020 movs r0, r4 1ab9e: bc04 pop {r2} 1aba0: 4690 mov r8, r2 1aba2: bdf0 pop {r4, r5, r6, r7, pc} else return ancestor_signal(label, sign, param); 1aba4: 4b1f ldr r3, [pc, #124] ; (1ac24 ) 1aba6: 681b ldr r3, [r3, #0] 1aba8: 003a movs r2, r7 1abaa: 2108 movs r1, #8 1abac: 4798 blx r3 1abae: 0004 movs r4, r0 1abb0: e7f4 b.n 1ab9c if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME); 1abb2: 491f ldr r1, [pc, #124] ; (1ac30 ) 1abb4: 0038 movs r0, r7 1abb6: 4b1f ldr r3, [pc, #124] ; (1ac34 ) 1abb8: 4798 blx r3 1abba: 0004 movs r4, r0 1abbc: e7ee b.n 1ab9c lv_mem_free(ext->text); 1abbe: 6800 ldr r0, [r0, #0] 1abc0: 4b1d ldr r3, [pc, #116] ; (1ac38 ) 1abc2: 4798 blx r3 ext->text = NULL; 1abc4: 2300 movs r3, #0 1abc6: 4642 mov r2, r8 1abc8: 6013 str r3, [r2, #0] 1abca: e7d8 b.n 1ab7e else if(sign == LV_SIGNAL_STYLE_CHG) { 1abcc: 2d04 cmp r5, #4 1abce: d014 beq.n 1abfa else if(sign == LV_SIGNAL_COORD_CHG) { 1abd0: 2d02 cmp r5, #2 1abd2: d1e3 bne.n 1ab9c return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1abd4: 88ba ldrh r2, [r7, #4] 1abd6: 3201 adds r2, #1 1abd8: 883b ldrh r3, [r7, #0] 1abda: 1ad2 subs r2, r2, r3 1abdc: 8ab3 ldrh r3, [r6, #20] 1abde: 3301 adds r3, #1 1abe0: 8a31 ldrh r1, [r6, #16] 1abe2: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1abe4: b292 uxth r2, r2 1abe6: b29b uxth r3, r3 1abe8: 429a cmp r2, r3 1abea: d00d beq.n 1ac08 lv_label_revert_dots(label); 1abec: 0030 movs r0, r6 1abee: 4b13 ldr r3, [pc, #76] ; (1ac3c ) 1abf0: 4798 blx r3 lv_label_refr_text(label); 1abf2: 0030 movs r0, r6 1abf4: 4b12 ldr r3, [pc, #72] ; (1ac40 ) 1abf6: 4798 blx r3 1abf8: e7d0 b.n 1ab9c lv_label_revert_dots(label); 1abfa: 0030 movs r0, r6 1abfc: 4b0f ldr r3, [pc, #60] ; (1ac3c ) 1abfe: 4798 blx r3 lv_label_refr_text(label); 1ac00: 0030 movs r0, r6 1ac02: 4b0f ldr r3, [pc, #60] ; (1ac40 ) 1ac04: 4798 blx r3 1ac06: e7c9 b.n 1ab9c return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1ac08: 88fa ldrh r2, [r7, #6] 1ac0a: 3201 adds r2, #1 1ac0c: 887b ldrh r3, [r7, #2] 1ac0e: 1ad2 subs r2, r2, r3 1ac10: 8af3 ldrh r3, [r6, #22] 1ac12: 3301 adds r3, #1 1ac14: 8a71 ldrh r1, [r6, #18] 1ac16: 1a5b subs r3, r3, r1 if(lv_area_get_width(&label->coords) != lv_area_get_width(param) || 1ac18: b292 uxth r2, r2 1ac1a: b29b uxth r3, r3 1ac1c: 429a cmp r2, r3 1ac1e: d1e5 bne.n 1abec 1ac20: e7bc b.n 1ab9c 1ac22: 46c0 nop ; (mov r8, r8) 1ac24: 20004c70 .word 0x20004c70 1ac28: 000043d1 .word 0x000043d1 1ac2c: 000199b5 .word 0x000199b5 1ac30: 0002b078 .word 0x0002b078 1ac34: 000046d9 .word 0x000046d9 1ac38: 000123c9 .word 0x000123c9 1ac3c: 000199e5 .word 0x000199e5 1ac40: 0001a075 .word 0x0001a075 0001ac44 : { 1ac44: b530 push {r4, r5, lr} 1ac46: b083 sub sp, #12 1ac48: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ac4a: 4b0a ldr r3, [pc, #40] ; (1ac74 ) 1ac4c: 4798 blx r3 1ac4e: 2800 cmp r0, #0 1ac50: d002 beq.n 1ac58 } 1ac52: 4809 ldr r0, [pc, #36] ; (1ac78 ) 1ac54: b003 add sp, #12 1ac56: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ac58: 4b08 ldr r3, [pc, #32] ; (1ac7c ) 1ac5a: 9300 str r3, [sp, #0] 1ac5c: 4a08 ldr r2, [pc, #32] ; (1ac80 ) 1ac5e: 4909 ldr r1, [pc, #36] ; (1ac84 ) 1ac60: 3003 adds r0, #3 1ac62: 4d09 ldr r5, [pc, #36] ; (1ac88 ) 1ac64: 47a8 blx r5 1ac66: 0022 movs r2, r4 1ac68: 2300 movs r3, #0 1ac6a: 4808 ldr r0, [pc, #32] ; (1ac8c ) 1ac6c: 4908 ldr r1, [pc, #32] ; (1ac90 ) 1ac6e: 4788 blx r1 1ac70: e7fe b.n 1ac70 1ac72: 46c0 nop ; (mov r8, r8) 1ac74: 000017ad .word 0x000017ad 1ac78: 0000ffff .word 0x0000ffff 1ac7c: 0002afac .word 0x0002afac 1ac80: 0000031d .word 0x0000031d 1ac84: 0002b014 .word 0x0002b014 1ac88: 00012159 .word 0x00012159 1ac8c: 00025d20 .word 0x00025d20 1ac90: 000017b5 .word 0x000017b5 0001ac94 : { 1ac94: b530 push {r4, r5, lr} 1ac96: b083 sub sp, #12 1ac98: 0004 movs r4, r0 LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1ac9a: 4b0a ldr r3, [pc, #40] ; (1acc4 ) 1ac9c: 4798 blx r3 1ac9e: 2800 cmp r0, #0 1aca0: d002 beq.n 1aca8 } 1aca2: 4809 ldr r0, [pc, #36] ; (1acc8 ) 1aca4: b003 add sp, #12 1aca6: bd30 pop {r4, r5, pc} LV_ASSERT_OBJ(label, LV_OBJX_NAME); 1aca8: 4b08 ldr r3, [pc, #32] ; (1accc ) 1acaa: 9300 str r3, [sp, #0] 1acac: 22cc movs r2, #204 ; 0xcc 1acae: 0092 lsls r2, r2, #2 1acb0: 4907 ldr r1, [pc, #28] ; (1acd0 ) 1acb2: 3003 adds r0, #3 1acb4: 4d07 ldr r5, [pc, #28] ; (1acd4 ) 1acb6: 47a8 blx r5 1acb8: 0022 movs r2, r4 1acba: 2300 movs r3, #0 1acbc: 4806 ldr r0, [pc, #24] ; (1acd8 ) 1acbe: 4907 ldr r1, [pc, #28] ; (1acdc ) 1acc0: 4788 blx r1 1acc2: e7fe b.n 1acc2 1acc4: 000017ad .word 0x000017ad 1acc8: 0000ffff .word 0x0000ffff 1accc: 0002afc8 .word 0x0002afc8 1acd0: 0002b014 .word 0x0002b014 1acd4: 00012159 .word 0x00012159 1acd8: 00025d20 .word 0x00025d20 1acdc: 000017b5 .word 0x000017b5 0001ace0 : { 1ace0: b5f0 push {r4, r5, r6, r7, lr} 1ace2: 46c6 mov lr, r8 1ace4: b500 push {lr} 1ace6: b0a8 sub sp, #160 ; 0xa0 1ace8: 0004 movs r4, r0 1acea: 000e movs r6, r1 return LV_DESIGN_RES_NOT_COVER; 1acec: 2002 movs r0, #2 if(mode == LV_DESIGN_COVER_CHK) 1acee: 2a02 cmp r2, #2 1acf0: d002 beq.n 1acf8 return LV_DESIGN_RES_OK; 1acf2: 2000 movs r0, #0 else if(mode == LV_DESIGN_DRAW_MAIN) { 1acf4: 2a00 cmp r2, #0 1acf6: d003 beq.n 1ad00 } 1acf8: b028 add sp, #160 ; 0xa0 1acfa: bc04 pop {r2} 1acfc: 4690 mov r8, r2 1acfe: bdf0 pop {r4, r5, r6, r7, pc} lv_label_ext_t * ext = lv_obj_get_ext_attr(label); 1ad00: 0020 movs r0, r4 1ad02: 4b83 ldr r3, [pc, #524] ; (1af10 ) 1ad04: 4798 blx r3 1ad06: 4680 mov r8, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_WIDTH, transform_width, lv_style_int_t, _int, scalar) 1ad08: 2204 movs r2, #4 1ad0a: 2100 movs r1, #0 1ad0c: 0020 movs r0, r4 1ad0e: 4f81 ldr r7, [pc, #516] ; (1af14 ) 1ad10: 47b8 blx r7 1ad12: 0005 movs r5, r0 _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t, _int, scalar) 1ad14: 2205 movs r2, #5 1ad16: 2100 movs r1, #0 1ad18: 0020 movs r0, r4 1ad1a: 47b8 blx r7 lv_area_copy(&bg_coords, &label->coords); 1ad1c: 0027 movs r7, r4 1ad1e: 3710 adds r7, #16 1ad20: 2300 movs r3, #0 *d8 = *s8; 1ad22: a906 add r1, sp, #24 1ad24: 5cfa ldrb r2, [r7, r3] 1ad26: 545a strb r2, [r3, r1] 1ad28: 3301 adds r3, #1 while(len) { 1ad2a: 2b08 cmp r3, #8 1ad2c: d1fa bne.n 1ad24 bg_coords.x1 -= w; 1ad2e: b2ad uxth r5, r5 1ad30: af06 add r7, sp, #24 1ad32: 883b ldrh r3, [r7, #0] 1ad34: 1b5b subs r3, r3, r5 1ad36: 803b strh r3, [r7, #0] bg_coords.x2 += w; 1ad38: 88bb ldrh r3, [r7, #4] 1ad3a: 18ed adds r5, r5, r3 1ad3c: 80bd strh r5, [r7, #4] bg_coords.y1 -= h; 1ad3e: b280 uxth r0, r0 1ad40: 887b ldrh r3, [r7, #2] 1ad42: 1a1b subs r3, r3, r0 1ad44: 807b strh r3, [r7, #2] bg_coords.y2 += h; 1ad46: 88fb ldrh r3, [r7, #6] 1ad48: 18c0 adds r0, r0, r3 1ad4a: 80f8 strh r0, [r7, #6] lv_draw_rect_dsc_init(&draw_rect_dsc); 1ad4c: a813 add r0, sp, #76 ; 0x4c 1ad4e: 4b72 ldr r3, [pc, #456] ; (1af18 ) 1ad50: 4798 blx r3 lv_obj_init_draw_rect_dsc(label, LV_LABEL_PART_MAIN, &draw_rect_dsc); 1ad52: aa13 add r2, sp, #76 ; 0x4c 1ad54: 2100 movs r1, #0 1ad56: 0020 movs r0, r4 1ad58: 4b70 ldr r3, [pc, #448] ; (1af1c ) 1ad5a: 4798 blx r3 lv_draw_rect(&bg_coords, clip_area, &draw_rect_dsc); 1ad5c: aa13 add r2, sp, #76 ; 0x4c 1ad5e: 0031 movs r1, r6 1ad60: 0038 movs r0, r7 1ad62: 4b6f ldr r3, [pc, #444] ; (1af20 ) 1ad64: 4798 blx r3 get_txt_coords(label, &txt_coords); 1ad66: a908 add r1, sp, #32 1ad68: 0020 movs r0, r4 1ad6a: 4b6e ldr r3, [pc, #440] ; (1af24 ) 1ad6c: 4798 blx r3 bool is_common = _lv_area_intersect(&txt_clip, clip_area, &txt_coords); 1ad6e: aa08 add r2, sp, #32 1ad70: 0031 movs r1, r6 1ad72: a80a add r0, sp, #40 ; 0x28 1ad74: 4b6c ldr r3, [pc, #432] ; (1af28 ) 1ad76: 4798 blx r3 if(!is_common) return LV_DESIGN_RES_OK; 1ad78: 2800 cmp r0, #0 1ad7a: d0bd beq.n 1acf8 lv_label_align_t align = lv_label_get_align(label); 1ad7c: 0020 movs r0, r4 1ad7e: 4b6b ldr r3, [pc, #428] ; (1af2c ) 1ad80: 4798 blx r3 if(ext->recolor != 0) flag |= LV_TXT_FLAG_RECOLOR; 1ad82: 4643 mov r3, r8 1ad84: 7c1b ldrb r3, [r3, #16] 1ad86: 065e lsls r6, r3, #25 lv_txt_flag_t flag = LV_TXT_FLAG_NONE; 1ad88: 0ff6 lsrs r6, r6, #31 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1ad8a: b25a sxtb r2, r3 1ad8c: 2a00 cmp r2, #0 1ad8e: db39 blt.n 1ae04 if(ext->long_mode == LV_LABEL_LONG_EXPAND) flag |= LV_TXT_FLAG_FIT; 1ad90: 075b lsls r3, r3, #29 1ad92: d101 bne.n 1ad98 1ad94: 2310 movs r3, #16 1ad96: 431e orrs r6, r3 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1ad98: 2801 cmp r0, #1 1ad9a: d036 beq.n 1ae0a if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 1ad9c: 2802 cmp r0, #2 1ad9e: d037 beq.n 1ae10 lv_draw_label_dsc_init(&label_draw_dsc); 1ada0: ad0c add r5, sp, #48 ; 0x30 1ada2: 0028 movs r0, r5 1ada4: 4b62 ldr r3, [pc, #392] ; (1af30 ) 1ada6: 4798 blx r3 label_draw_dsc.sel_start = lv_label_get_text_sel_start(label); 1ada8: 0020 movs r0, r4 1adaa: 4b62 ldr r3, [pc, #392] ; (1af34 ) 1adac: 4798 blx r3 1adae: 81e8 strh r0, [r5, #14] label_draw_dsc.sel_end = lv_label_get_text_sel_end(label); 1adb0: 0020 movs r0, r4 1adb2: 4b61 ldr r3, [pc, #388] ; (1af38 ) 1adb4: 4798 blx r3 1adb6: 8228 strh r0, [r5, #16] label_draw_dsc.ofs_x = ext->offset.x; 1adb8: 4643 mov r3, r8 1adba: 220c movs r2, #12 1adbc: 5e9b ldrsh r3, [r3, r2] 1adbe: 826b strh r3, [r5, #18] label_draw_dsc.ofs_y = ext->offset.y; 1adc0: 4643 mov r3, r8 1adc2: 220e movs r2, #14 1adc4: 5e9b ldrsh r3, [r3, r2] 1adc6: 82ab strh r3, [r5, #20] label_draw_dsc.flag = flag; 1adc8: 75ee strb r6, [r5, #23] lv_obj_init_draw_label_dsc(label, LV_LABEL_PART_MAIN, &label_draw_dsc); 1adca: 002a movs r2, r5 1adcc: 2100 movs r1, #0 1adce: 0020 movs r0, r4 1add0: 4b5a ldr r3, [pc, #360] ; (1af3c ) 1add2: 4798 blx r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1add4: 4643 mov r3, r8 1add6: 7c1a ldrb r2, [r3, #16] 1add8: 2307 movs r3, #7 1adda: 4013 ands r3, r2 1addc: 3b03 subs r3, #3 1adde: 2b01 cmp r3, #1 1ade0: d919 bls.n 1ae16 lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1ade2: 4643 mov r3, r8 1ade4: 681b ldr r3, [r3, #0] 1ade6: 2200 movs r2, #0 1ade8: 9200 str r2, [sp, #0] 1adea: aa0c add r2, sp, #48 ; 0x30 1adec: a90a add r1, sp, #40 ; 0x28 1adee: a808 add r0, sp, #32 1adf0: 4c53 ldr r4, [pc, #332] ; (1af40 ) 1adf2: 47a0 blx r4 if(ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) { 1adf4: 4643 mov r3, r8 1adf6: 7c1a ldrb r2, [r3, #16] 1adf8: 2307 movs r3, #7 1adfa: 4013 ands r3, r2 1adfc: 2b04 cmp r3, #4 1adfe: d030 beq.n 1ae62 return LV_DESIGN_RES_OK; 1ae00: 2000 movs r0, #0 1ae02: e779 b.n 1acf8 if(ext->expand != 0) flag |= LV_TXT_FLAG_EXPAND; 1ae04: 2202 movs r2, #2 1ae06: 4316 orrs r6, r2 1ae08: e7c2 b.n 1ad90 if(align == LV_LABEL_ALIGN_CENTER) flag |= LV_TXT_FLAG_CENTER; 1ae0a: 2304 movs r3, #4 1ae0c: 431e orrs r6, r3 1ae0e: e7c7 b.n 1ada0 if(align == LV_LABEL_ALIGN_RIGHT) flag |= LV_TXT_FLAG_RIGHT; 1ae10: 2308 movs r3, #8 1ae12: 431e orrs r6, r3 1ae14: e7c4 b.n 1ada0 (ext->align == LV_LABEL_ALIGN_CENTER || ext->align == LV_LABEL_ALIGN_RIGHT)) { 1ae16: 2330 movs r3, #48 ; 0x30 1ae18: 401a ands r2, r3 if((ext->long_mode == LV_LABEL_LONG_SROLL || ext->long_mode == LV_LABEL_LONG_SROLL_CIRC) && 1ae1a: 3a10 subs r2, #16 1ae1c: 33b0 adds r3, #176 ; 0xb0 1ae1e: 421a tst r2, r3 1ae20: d1df bne.n 1ade2 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1ae22: a80c add r0, sp, #48 ; 0x30 1ae24: 220c movs r2, #12 1ae26: 5e83 ldrsh r3, [r0, r2] 1ae28: 9a0d ldr r2, [sp, #52] ; 0x34 1ae2a: 4641 mov r1, r8 1ae2c: 6809 ldr r1, [r1, #0] 1ae2e: ac05 add r4, sp, #20 1ae30: 9602 str r6, [sp, #8] 1ae32: 4d44 ldr r5, [pc, #272] ; (1af44 ) 1ae34: 9501 str r5, [sp, #4] 1ae36: 250a movs r5, #10 1ae38: 5f40 ldrsh r0, [r0, r5] 1ae3a: 9000 str r0, [sp, #0] 1ae3c: 0020 movs r0, r4 1ae3e: 4d42 ldr r5, [pc, #264] ; (1af48 ) 1ae40: 47a8 blx r5 return (lv_coord_t)(area_p->x2 - area_p->x1 + 1); 1ae42: aa08 add r2, sp, #32 1ae44: 8893 ldrh r3, [r2, #4] 1ae46: 3301 adds r3, #1 1ae48: 8812 ldrh r2, [r2, #0] 1ae4a: 1a9b subs r3, r3, r2 if(size.x > lv_area_get_width(&txt_coords)) { 1ae4c: 2100 movs r1, #0 1ae4e: 5e62 ldrsh r2, [r4, r1] 1ae50: b21b sxth r3, r3 1ae52: 429a cmp r2, r3 1ae54: ddc5 ble.n 1ade2 label_draw_dsc.flag &= ~LV_TXT_FLAG_CENTER; 1ae56: aa0c add r2, sp, #48 ; 0x30 1ae58: 7dd3 ldrb r3, [r2, #23] 1ae5a: 210c movs r1, #12 1ae5c: 438b bics r3, r1 1ae5e: 75d3 strb r3, [r2, #23] 1ae60: e7bf b.n 1ade2 _lv_txt_get_size(&size, ext->text, label_draw_dsc.font, label_draw_dsc.letter_space, label_draw_dsc.line_space, 1ae62: a80c add r0, sp, #48 ; 0x30 1ae64: 220c movs r2, #12 1ae66: 5e83 ldrsh r3, [r0, r2] 1ae68: 9a0d ldr r2, [sp, #52] ; 0x34 1ae6a: 4641 mov r1, r8 1ae6c: 6809 ldr r1, [r1, #0] 1ae6e: ac05 add r4, sp, #20 1ae70: 9602 str r6, [sp, #8] 1ae72: 4d34 ldr r5, [pc, #208] ; (1af44 ) 1ae74: 9501 str r5, [sp, #4] 1ae76: 250a movs r5, #10 1ae78: 5f40 ldrsh r0, [r0, r5] 1ae7a: 9000 str r0, [sp, #0] 1ae7c: 0020 movs r0, r4 1ae7e: 4d32 ldr r5, [pc, #200] ; (1af48 ) 1ae80: 47a8 blx r5 if(size.x > lv_area_get_width(&txt_coords)) { 1ae82: 2300 movs r3, #0 1ae84: 5ee1 ldrsh r1, [r4, r3] 1ae86: aa08 add r2, sp, #32 1ae88: 8893 ldrh r3, [r2, #4] 1ae8a: 3301 adds r3, #1 1ae8c: 8812 ldrh r2, [r2, #0] 1ae8e: 1a9b subs r3, r3, r2 1ae90: b21b sxth r3, r3 1ae92: 4299 cmp r1, r3 1ae94: dc1f bgt.n 1aed6 if(size.y > lv_area_get_height(&txt_coords)) { 1ae96: ab05 add r3, sp, #20 1ae98: 2102 movs r1, #2 1ae9a: 5e59 ldrsh r1, [r3, r1] return (lv_coord_t)(area_p->y2 - area_p->y1 + 1); 1ae9c: aa08 add r2, sp, #32 1ae9e: 88d3 ldrh r3, [r2, #6] 1aea0: 3301 adds r3, #1 1aea2: 8852 ldrh r2, [r2, #2] 1aea4: 1a9b subs r3, r3, r2 1aea6: b21b sxth r3, r3 1aea8: 4299 cmp r1, r3 1aeaa: dda9 ble.n 1ae00 label_draw_dsc.ofs_x = ext->offset.x; 1aeac: 4643 mov r3, r8 1aeae: 220c movs r2, #12 1aeb0: 5e9b ldrsh r3, [r3, r2] 1aeb2: aa0c add r2, sp, #48 ; 0x30 1aeb4: 8253 strh r3, [r2, #18] label_draw_dsc.ofs_y = ext->offset.y + size.y + lv_font_get_line_height(label_draw_dsc.font); 1aeb6: 6853 ldr r3, [r2, #4] 1aeb8: 891b ldrh r3, [r3, #8] 1aeba: 1859 adds r1, r3, r1 1aebc: 4643 mov r3, r8 1aebe: 89db ldrh r3, [r3, #14] 1aec0: 18c9 adds r1, r1, r3 1aec2: 8291 strh r1, [r2, #20] lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1aec4: 4643 mov r3, r8 1aec6: 681b ldr r3, [r3, #0] 1aec8: 2100 movs r1, #0 1aeca: 9100 str r1, [sp, #0] 1aecc: a90a add r1, sp, #40 ; 0x28 1aece: a808 add r0, sp, #32 1aed0: 4c1b ldr r4, [pc, #108] ; (1af40 ) 1aed2: 47a0 blx r4 1aed4: e794 b.n 1ae00 label_draw_dsc.ofs_x = ext->offset.x + size.x + 1aed6: 4643 mov r3, r8 1aed8: 899c ldrh r4, [r3, #12] 1aeda: 1864 adds r4, r4, r1 1aedc: b2a4 uxth r4, r4 lv_font_get_glyph_width(label_draw_dsc.font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT; 1aede: ad0c add r5, sp, #48 ; 0x30 1aee0: 2220 movs r2, #32 1aee2: 2120 movs r1, #32 1aee4: 980d ldr r0, [sp, #52] ; 0x34 1aee6: 4b19 ldr r3, [pc, #100] ; (1af4c ) 1aee8: 4798 blx r3 1aeea: 0043 lsls r3, r0, #1 1aeec: 18c0 adds r0, r0, r3 label_draw_dsc.ofs_x = ext->offset.x + size.x + 1aeee: 1824 adds r4, r4, r0 1aef0: 826c strh r4, [r5, #18] label_draw_dsc.ofs_y = ext->offset.y; 1aef2: 4643 mov r3, r8 1aef4: 220e movs r2, #14 1aef6: 5e9b ldrsh r3, [r3, r2] 1aef8: 82ab strh r3, [r5, #20] lv_draw_label(&txt_coords, &txt_clip, &label_draw_dsc, ext->text, hint); 1aefa: 4643 mov r3, r8 1aefc: 681b ldr r3, [r3, #0] 1aefe: 2200 movs r2, #0 1af00: 9200 str r2, [sp, #0] 1af02: 002a movs r2, r5 1af04: a90a add r1, sp, #40 ; 0x28 1af06: a808 add r0, sp, #32 1af08: 4c0d ldr r4, [pc, #52] ; (1af40 ) 1af0a: 47a0 blx r4 1af0c: e7c3 b.n 1ae96 1af0e: 46c0 nop ; (mov r8, r8) 1af10: 000043d1 .word 0x000043d1 1af14: 00003a89 .word 0x00003a89 1af18: 0000bfcd .word 0x0000bfcd 1af1c: 00004701 .word 0x00004701 1af20: 0000c071 .word 0x0000c071 1af24: 00019aa5 .word 0x00019aa5 1af28: 0001140b .word 0x0001140b 1af2c: 00019cb9 .word 0x00019cb9 1af30: 000095ed .word 0x000095ed 1af34: 0001ac45 .word 0x0001ac45 1af38: 0001ac95 .word 0x0001ac95 1af3c: 00004ca5 .word 0x00004ca5 1af40: 0000963d .word 0x0000963d 1af44: 00007c18 .word 0x00007c18 1af48: 00013f3d .word 0x00013f3d 1af4c: 0000fe91 .word 0x0000fe91 0001af50 : /********************** * GLOBAL FUNCTIONS **********************/ void ssd1963_init(void) { 1af50: b5f8 push {r3, r4, r5, r6, r7, lr} 1af52: 46de mov lr, fp 1af54: 4657 mov r7, sl 1af56: 464e mov r6, r9 1af58: 4645 mov r5, r8 1af5a: b5e0 push {r5, r6, r7, lr} 1af5c: 4eed ldr r6, [pc, #948] ; (1b314 ) 1af5e: 2310 movs r3, #16 1af60: 469b mov fp, r3 1af62: 61b3 str r3, [r6, #24] static void ssd1963_reset(void) { /*Hardware reset*/ LV_DRV_DISP_RST(1); LV_DRV_DELAY_MS(50); 1af64: 2000 movs r0, #0 1af66: 4bec ldr r3, [pc, #944] ; (1b318 ) 1af68: 4699 mov r9, r3 1af6a: 4798 blx r3 1af6c: 4beb ldr r3, [pc, #940] ; (1b31c ) 1af6e: 469a mov sl, r3 1af70: 2232 movs r2, #50 ; 0x32 1af72: 2300 movs r3, #0 1af74: 2100 movs r1, #0 1af76: 47d0 blx sl 1af78: 4ce9 ldr r4, [pc, #932] ; (1b320 ) 1af7a: 2500 movs r5, #0 1af7c: 1900 adds r0, r0, r4 1af7e: 4169 adcs r1, r5 1af80: 4be8 ldr r3, [pc, #928] ; (1b324 ) 1af82: 4698 mov r8, r3 1af84: 4ae8 ldr r2, [pc, #928] ; (1b328 ) 1af86: 2300 movs r3, #0 1af88: 47c0 blx r8 1af8a: 4fe8 ldr r7, [pc, #928] ; (1b32c ) 1af8c: 47b8 blx r7 } else { port_base->OUTCLR.reg = pin_mask; 1af8e: 465b mov r3, fp 1af90: 6173 str r3, [r6, #20] LV_DRV_DISP_RST(0); LV_DRV_DELAY_MS(50); 1af92: 2000 movs r0, #0 1af94: 47c8 blx r9 1af96: 2232 movs r2, #50 ; 0x32 1af98: 2300 movs r3, #0 1af9a: 2100 movs r1, #0 1af9c: 47d0 blx sl 1af9e: 1900 adds r0, r0, r4 1afa0: 4169 adcs r1, r5 1afa2: 4ae1 ldr r2, [pc, #900] ; (1b328 ) 1afa4: 2300 movs r3, #0 1afa6: 47c0 blx r8 1afa8: 47b8 blx r7 port_base->OUTSET.reg = pin_mask; 1afaa: 465b mov r3, fp 1afac: 61b3 str r3, [r6, #24] LV_DRV_DISP_RST(1); LV_DRV_DELAY_MS(50); 1afae: 2000 movs r0, #0 1afb0: 47c8 blx r9 1afb2: 2232 movs r2, #50 ; 0x32 1afb4: 2300 movs r3, #0 1afb6: 2100 movs r1, #0 1afb8: 47d0 blx sl 1afba: 1900 adds r0, r0, r4 1afbc: 4169 adcs r1, r5 1afbe: 4ada ldr r2, [pc, #872] ; (1b328 ) 1afc0: 2300 movs r3, #0 1afc2: 47c0 blx r8 1afc4: 47b8 blx r7 port_base->OUTCLR.reg = pin_mask; 1afc6: 2340 movs r3, #64 ; 0x40 1afc8: 469a mov sl, r3 1afca: 6173 str r3, [r6, #20] /*Chip enable*/ LV_DRV_DISP_PAR_CS(0); LV_DRV_DELAY_MS(10); 1afcc: 2000 movs r0, #0 1afce: 47c8 blx r9 1afd0: 0002 movs r2, r0 1afd2: 2300 movs r3, #0 1afd4: 0f91 lsrs r1, r2, #30 1afd6: 0090 lsls r0, r2, #2 1afd8: 1880 adds r0, r0, r2 1afda: 4159 adcs r1, r3 1afdc: 1800 adds r0, r0, r0 1afde: 4149 adcs r1, r1 1afe0: 1900 adds r0, r0, r4 1afe2: 4169 adcs r1, r5 1afe4: 4ad0 ldr r2, [pc, #832] ; (1b328 ) 1afe6: 2300 movs r3, #0 1afe8: 47c0 blx r8 1afea: 47b8 blx r7 port_base->OUTSET.reg = pin_mask; 1afec: 4653 mov r3, sl 1afee: 61b3 str r3, [r6, #24] LV_DRV_DISP_PAR_CS(1); LV_DRV_DELAY_MS(5); 1aff0: 2000 movs r0, #0 1aff2: 47c8 blx r9 1aff4: 0002 movs r2, r0 1aff6: 2300 movs r3, #0 1aff8: 0f91 lsrs r1, r2, #30 1affa: 0090 lsls r0, r2, #2 1affc: 1880 adds r0, r0, r2 1affe: 4159 adcs r1, r3 1b000: 1900 adds r0, r0, r4 1b002: 4169 adcs r1, r5 1b004: 4ac8 ldr r2, [pc, #800] ; (1b328 ) 1b006: 2300 movs r3, #0 1b008: 47c0 blx r8 1b00a: 47b8 blx r7 port_base->OUTCLR.reg = pin_mask; 1b00c: 4653 mov r3, sl 1b00e: 6173 str r3, [r6, #20] /** * Command mode */ static inline void ssd1963_cmd_mode(void) { if(cmd_mode == false) { 1b010: 4bc7 ldr r3, [pc, #796] ; (1b330 ) 1b012: 781b ldrb r3, [r3, #0] 1b014: 2b00 cmp r3, #0 1b016: d104 bne.n 1b022 1b018: 2220 movs r2, #32 1b01a: 6172 str r2, [r6, #20] LV_DRV_DISP_CMD_DATA(SSD1963_CMD_MODE); cmd_mode = true; 1b01c: 3a1f subs r2, #31 1b01e: 4bc4 ldr r3, [pc, #784] ; (1b330 ) 1b020: 701a strb r2, [r3, #0] */ static inline void ssd1963_cmd(uint16_t cmd) { LV_DRV_DISP_PAR_CS(0); ssd1963_cmd_mode(); LV_DRV_DISP_PAR_WR_WORD(cmd); 1b022: 2201 movs r2, #1 1b024: 49c3 ldr r1, [pc, #780] ; (1b334 ) 1b026: 48c4 ldr r0, [pc, #784] ; (1b338 ) 1b028: 4bc4 ldr r3, [pc, #784] ; (1b33c ) 1b02a: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b02c: 4cb9 ldr r4, [pc, #740] ; (1b314 ) 1b02e: 2540 movs r5, #64 ; 0x40 1b030: 61a5 str r5, [r4, #24] LV_DRV_DELAY_MS(20); 1b032: 2000 movs r0, #0 1b034: 4bb8 ldr r3, [pc, #736] ; (1b318 ) 1b036: 4798 blx r3 1b038: 2214 movs r2, #20 1b03a: 2300 movs r3, #0 1b03c: 2100 movs r1, #0 1b03e: 4eb7 ldr r6, [pc, #732] ; (1b31c ) 1b040: 47b0 blx r6 1b042: 4ab7 ldr r2, [pc, #732] ; (1b320 ) 1b044: 2300 movs r3, #0 1b046: 1880 adds r0, r0, r2 1b048: 4159 adcs r1, r3 1b04a: 4ab7 ldr r2, [pc, #732] ; (1b328 ) 1b04c: 2300 movs r3, #0 1b04e: 4eb5 ldr r6, [pc, #724] ; (1b324 ) 1b050: 47b0 blx r6 1b052: 4bb6 ldr r3, [pc, #728] ; (1b32c ) 1b054: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b056: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b058: 4bb5 ldr r3, [pc, #724] ; (1b330 ) 1b05a: 781b ldrb r3, [r3, #0] 1b05c: 2b00 cmp r3, #0 1b05e: d104 bne.n 1b06a 1b060: 2220 movs r2, #32 1b062: 6162 str r2, [r4, #20] cmd_mode = true; 1b064: 3a1f subs r2, #31 1b066: 4bb2 ldr r3, [pc, #712] ; (1b330 ) 1b068: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b06a: 2201 movs r2, #1 1b06c: 49b1 ldr r1, [pc, #708] ; (1b334 ) 1b06e: 48b2 ldr r0, [pc, #712] ; (1b338 ) 1b070: 4bb2 ldr r3, [pc, #712] ; (1b33c ) 1b072: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b074: 4ca7 ldr r4, [pc, #668] ; (1b314 ) 1b076: 2540 movs r5, #64 ; 0x40 1b078: 61a5 str r5, [r4, #24] LV_DRV_DELAY_MS(20); 1b07a: 2000 movs r0, #0 1b07c: 4ba6 ldr r3, [pc, #664] ; (1b318 ) 1b07e: 4798 blx r3 1b080: 2214 movs r2, #20 1b082: 2300 movs r3, #0 1b084: 2100 movs r1, #0 1b086: 4ea5 ldr r6, [pc, #660] ; (1b31c ) 1b088: 47b0 blx r6 1b08a: 4aa5 ldr r2, [pc, #660] ; (1b320 ) 1b08c: 2300 movs r3, #0 1b08e: 1880 adds r0, r0, r2 1b090: 4159 adcs r1, r3 1b092: 4aa5 ldr r2, [pc, #660] ; (1b328 ) 1b094: 2300 movs r3, #0 1b096: 4ea3 ldr r6, [pc, #652] ; (1b324 ) 1b098: 47b0 blx r6 1b09a: 4ba4 ldr r3, [pc, #656] ; (1b32c ) 1b09c: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b09e: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b0a0: 4ba3 ldr r3, [pc, #652] ; (1b330 ) 1b0a2: 781b ldrb r3, [r3, #0] 1b0a4: 2b00 cmp r3, #0 1b0a6: d104 bne.n 1b0b2 1b0a8: 2220 movs r2, #32 1b0aa: 6162 str r2, [r4, #20] cmd_mode = true; 1b0ac: 3a1f subs r2, #31 1b0ae: 4ba0 ldr r3, [pc, #640] ; (1b330 ) 1b0b0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b0b2: 2201 movs r2, #1 1b0b4: 499f ldr r1, [pc, #636] ; (1b334 ) 1b0b6: 48a0 ldr r0, [pc, #640] ; (1b338 ) 1b0b8: 4ba0 ldr r3, [pc, #640] ; (1b33c ) 1b0ba: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b0bc: 4c95 ldr r4, [pc, #596] ; (1b314 ) 1b0be: 2540 movs r5, #64 ; 0x40 1b0c0: 61a5 str r5, [r4, #24] LV_DRV_DELAY_MS(20); 1b0c2: 2000 movs r0, #0 1b0c4: 4b94 ldr r3, [pc, #592] ; (1b318 ) 1b0c6: 4798 blx r3 1b0c8: 2214 movs r2, #20 1b0ca: 2300 movs r3, #0 1b0cc: 2100 movs r1, #0 1b0ce: 4e93 ldr r6, [pc, #588] ; (1b31c ) 1b0d0: 47b0 blx r6 1b0d2: 4a93 ldr r2, [pc, #588] ; (1b320 ) 1b0d4: 2300 movs r3, #0 1b0d6: 1880 adds r0, r0, r2 1b0d8: 4159 adcs r1, r3 1b0da: 4a93 ldr r2, [pc, #588] ; (1b328 ) 1b0dc: 2300 movs r3, #0 1b0de: 4e91 ldr r6, [pc, #580] ; (1b324 ) 1b0e0: 47b0 blx r6 1b0e2: 4b92 ldr r3, [pc, #584] ; (1b32c ) 1b0e4: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b0e6: 6165 str r5, [r4, #20] 1b0e8: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b0ea: 4b91 ldr r3, [pc, #580] ; (1b330 ) 1b0ec: 781b ldrb r3, [r3, #0] 1b0ee: 2b00 cmp r3, #0 1b0f0: d104 bne.n 1b0fc 1b0f2: 2220 movs r2, #32 1b0f4: 6162 str r2, [r4, #20] cmd_mode = true; 1b0f6: 3a1f subs r2, #31 1b0f8: 4b8d ldr r3, [pc, #564] ; (1b330 ) 1b0fa: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b0fc: 22e2 movs r2, #226 ; 0xe2 1b0fe: 498d ldr r1, [pc, #564] ; (1b334 ) 1b100: 488d ldr r0, [pc, #564] ; (1b338 ) 1b102: 4b8e ldr r3, [pc, #568] ; (1b33c ) 1b104: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b106: 4b83 ldr r3, [pc, #524] ; (1b314 ) 1b108: 2240 movs r2, #64 ; 0x40 1b10a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b10c: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b10e: 4b88 ldr r3, [pc, #544] ; (1b330 ) 1b110: 781b ldrb r3, [r3, #0] 1b112: 2b00 cmp r3, #0 1b114: d005 beq.n 1b122 port_base->OUTSET.reg = pin_mask; 1b116: 3a20 subs r2, #32 1b118: 4b7e ldr r3, [pc, #504] ; (1b314 ) 1b11a: 619a str r2, [r3, #24] cmd_mode = false; 1b11c: 2200 movs r2, #0 1b11e: 4b84 ldr r3, [pc, #528] ; (1b330 ) 1b120: 701a strb r2, [r3, #0] */ static inline void ssd1963_data(uint16_t data) { LV_DRV_DISP_PAR_CS(0); ssd1963_data_mode(); LV_DRV_DISP_PAR_WR_WORD(data); 1b122: 2223 movs r2, #35 ; 0x23 1b124: 4983 ldr r1, [pc, #524] ; (1b334 ) 1b126: 4884 ldr r0, [pc, #528] ; (1b338 ) 1b128: 4b84 ldr r3, [pc, #528] ; (1b33c ) 1b12a: 4798 blx r3 1b12c: 4b79 ldr r3, [pc, #484] ; (1b314 ) 1b12e: 2240 movs r2, #64 ; 0x40 1b130: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b132: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b134: 4b7e ldr r3, [pc, #504] ; (1b330 ) 1b136: 781b ldrb r3, [r3, #0] 1b138: 2b00 cmp r3, #0 1b13a: d005 beq.n 1b148 port_base->OUTSET.reg = pin_mask; 1b13c: 3a20 subs r2, #32 1b13e: 4b75 ldr r3, [pc, #468] ; (1b314 ) 1b140: 619a str r2, [r3, #24] cmd_mode = false; 1b142: 2200 movs r2, #0 1b144: 4b7a ldr r3, [pc, #488] ; (1b330 ) 1b146: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b148: 2202 movs r2, #2 1b14a: 497a ldr r1, [pc, #488] ; (1b334 ) 1b14c: 487a ldr r0, [pc, #488] ; (1b338 ) 1b14e: 4b7b ldr r3, [pc, #492] ; (1b33c ) 1b150: 4798 blx r3 1b152: 4b70 ldr r3, [pc, #448] ; (1b314 ) 1b154: 2240 movs r2, #64 ; 0x40 1b156: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b158: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b15a: 4b75 ldr r3, [pc, #468] ; (1b330 ) 1b15c: 781b ldrb r3, [r3, #0] 1b15e: 2b00 cmp r3, #0 1b160: d005 beq.n 1b16e port_base->OUTSET.reg = pin_mask; 1b162: 3a20 subs r2, #32 1b164: 4b6b ldr r3, [pc, #428] ; (1b314 ) 1b166: 619a str r2, [r3, #24] cmd_mode = false; 1b168: 2200 movs r2, #0 1b16a: 4b71 ldr r3, [pc, #452] ; (1b330 ) 1b16c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b16e: 2254 movs r2, #84 ; 0x54 1b170: 4970 ldr r1, [pc, #448] ; (1b334 ) 1b172: 4871 ldr r0, [pc, #452] ; (1b338 ) 1b174: 4b71 ldr r3, [pc, #452] ; (1b33c ) 1b176: 4798 blx r3 1b178: 4b66 ldr r3, [pc, #408] ; (1b314 ) 1b17a: 2240 movs r2, #64 ; 0x40 1b17c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b17e: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b180: 4b6b ldr r3, [pc, #428] ; (1b330 ) 1b182: 781b ldrb r3, [r3, #0] 1b184: 2b00 cmp r3, #0 1b186: d105 bne.n 1b194 1b188: 3a20 subs r2, #32 1b18a: 4b62 ldr r3, [pc, #392] ; (1b314 ) 1b18c: 615a str r2, [r3, #20] cmd_mode = true; 1b18e: 3a1f subs r2, #31 1b190: 4b67 ldr r3, [pc, #412] ; (1b330 ) 1b192: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b194: 22e0 movs r2, #224 ; 0xe0 1b196: 4967 ldr r1, [pc, #412] ; (1b334 ) 1b198: 4867 ldr r0, [pc, #412] ; (1b338 ) 1b19a: 4b68 ldr r3, [pc, #416] ; (1b33c ) 1b19c: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b19e: 4b5d ldr r3, [pc, #372] ; (1b314 ) 1b1a0: 2240 movs r2, #64 ; 0x40 1b1a2: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b1a4: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b1a6: 4b62 ldr r3, [pc, #392] ; (1b330 ) 1b1a8: 781b ldrb r3, [r3, #0] 1b1aa: 2b00 cmp r3, #0 1b1ac: d005 beq.n 1b1ba port_base->OUTSET.reg = pin_mask; 1b1ae: 3a20 subs r2, #32 1b1b0: 4b58 ldr r3, [pc, #352] ; (1b314 ) 1b1b2: 619a str r2, [r3, #24] cmd_mode = false; 1b1b4: 2200 movs r2, #0 1b1b6: 4b5e ldr r3, [pc, #376] ; (1b330 ) 1b1b8: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b1ba: 2201 movs r2, #1 1b1bc: 495d ldr r1, [pc, #372] ; (1b334 ) 1b1be: 485e ldr r0, [pc, #376] ; (1b338 ) 1b1c0: 4b5e ldr r3, [pc, #376] ; (1b33c ) 1b1c2: 4798 blx r3 1b1c4: 4c53 ldr r4, [pc, #332] ; (1b314 ) 1b1c6: 2540 movs r5, #64 ; 0x40 1b1c8: 61a5 str r5, [r4, #24] delay_us(100); 1b1ca: 2000 movs r0, #0 1b1cc: 4b52 ldr r3, [pc, #328] ; (1b318 ) 1b1ce: 4798 blx r3 1b1d0: 2264 movs r2, #100 ; 0x64 1b1d2: 2300 movs r3, #0 1b1d4: 2100 movs r1, #0 1b1d6: 4e51 ldr r6, [pc, #324] ; (1b31c ) 1b1d8: 47b0 blx r6 1b1da: 4a59 ldr r2, [pc, #356] ; (1b340 ) 1b1dc: 2300 movs r3, #0 1b1de: 1880 adds r0, r0, r2 1b1e0: 4159 adcs r1, r3 1b1e2: 4a58 ldr r2, [pc, #352] ; (1b344 ) 1b1e4: 2300 movs r3, #0 1b1e6: 4e4f ldr r6, [pc, #316] ; (1b324 ) 1b1e8: 47b0 blx r6 1b1ea: 4b50 ldr r3, [pc, #320] ; (1b32c ) 1b1ec: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b1ee: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b1f0: 4b4f ldr r3, [pc, #316] ; (1b330 ) 1b1f2: 781b ldrb r3, [r3, #0] 1b1f4: 2b00 cmp r3, #0 1b1f6: d104 bne.n 1b202 1b1f8: 2220 movs r2, #32 1b1fa: 6162 str r2, [r4, #20] cmd_mode = true; 1b1fc: 3a1f subs r2, #31 1b1fe: 4b4c ldr r3, [pc, #304] ; (1b330 ) 1b200: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b202: 22e0 movs r2, #224 ; 0xe0 1b204: 494b ldr r1, [pc, #300] ; (1b334 ) 1b206: 484c ldr r0, [pc, #304] ; (1b338 ) 1b208: 4b4c ldr r3, [pc, #304] ; (1b33c ) 1b20a: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b20c: 4b41 ldr r3, [pc, #260] ; (1b314 ) 1b20e: 2240 movs r2, #64 ; 0x40 1b210: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b212: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b214: 4b46 ldr r3, [pc, #280] ; (1b330 ) 1b216: 781b ldrb r3, [r3, #0] 1b218: 2b00 cmp r3, #0 1b21a: d005 beq.n 1b228 port_base->OUTSET.reg = pin_mask; 1b21c: 3a20 subs r2, #32 1b21e: 4b3d ldr r3, [pc, #244] ; (1b314 ) 1b220: 619a str r2, [r3, #24] cmd_mode = false; 1b222: 2200 movs r2, #0 1b224: 4b42 ldr r3, [pc, #264] ; (1b330 ) 1b226: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b228: 2203 movs r2, #3 1b22a: 4942 ldr r1, [pc, #264] ; (1b334 ) 1b22c: 4842 ldr r0, [pc, #264] ; (1b338 ) 1b22e: 4b43 ldr r3, [pc, #268] ; (1b33c ) 1b230: 4798 blx r3 1b232: 4c38 ldr r4, [pc, #224] ; (1b314 ) 1b234: 2540 movs r5, #64 ; 0x40 1b236: 61a5 str r5, [r4, #24] delay_ms(1); 1b238: 2000 movs r0, #0 1b23a: 4b37 ldr r3, [pc, #220] ; (1b318 ) 1b23c: 4798 blx r3 1b23e: 0002 movs r2, r0 1b240: 2300 movs r3, #0 1b242: 4837 ldr r0, [pc, #220] ; (1b320 ) 1b244: 2100 movs r1, #0 1b246: 1880 adds r0, r0, r2 1b248: 4159 adcs r1, r3 1b24a: 4a37 ldr r2, [pc, #220] ; (1b328 ) 1b24c: 2300 movs r3, #0 1b24e: 4e35 ldr r6, [pc, #212] ; (1b324 ) 1b250: 47b0 blx r6 1b252: 4b36 ldr r3, [pc, #216] ; (1b32c ) 1b254: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b256: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b258: 4b35 ldr r3, [pc, #212] ; (1b330 ) 1b25a: 781b ldrb r3, [r3, #0] 1b25c: 2b00 cmp r3, #0 1b25e: d104 bne.n 1b26a 1b260: 2220 movs r2, #32 1b262: 6162 str r2, [r4, #20] cmd_mode = true; 1b264: 3a1f subs r2, #31 1b266: 4b32 ldr r3, [pc, #200] ; (1b330 ) 1b268: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b26a: 2201 movs r2, #1 1b26c: 4931 ldr r1, [pc, #196] ; (1b334 ) 1b26e: 4832 ldr r0, [pc, #200] ; (1b338 ) 1b270: 4b32 ldr r3, [pc, #200] ; (1b33c ) 1b272: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b274: 4c27 ldr r4, [pc, #156] ; (1b314 ) 1b276: 2540 movs r5, #64 ; 0x40 1b278: 61a5 str r5, [r4, #24] delay_ms(1); 1b27a: 2000 movs r0, #0 1b27c: 4b26 ldr r3, [pc, #152] ; (1b318 ) 1b27e: 4798 blx r3 1b280: 0002 movs r2, r0 1b282: 2300 movs r3, #0 1b284: 4826 ldr r0, [pc, #152] ; (1b320 ) 1b286: 2100 movs r1, #0 1b288: 1880 adds r0, r0, r2 1b28a: 4159 adcs r1, r3 1b28c: 4a26 ldr r2, [pc, #152] ; (1b328 ) 1b28e: 2300 movs r3, #0 1b290: 4e24 ldr r6, [pc, #144] ; (1b324 ) 1b292: 47b0 blx r6 1b294: 4b25 ldr r3, [pc, #148] ; (1b32c ) 1b296: 4798 blx r3 port_base->OUTCLR.reg = pin_mask; 1b298: 6165 str r5, [r4, #20] if(cmd_mode == false) { 1b29a: 4b25 ldr r3, [pc, #148] ; (1b330 ) 1b29c: 781b ldrb r3, [r3, #0] 1b29e: 2b00 cmp r3, #0 1b2a0: d104 bne.n 1b2ac 1b2a2: 2220 movs r2, #32 1b2a4: 6162 str r2, [r4, #20] cmd_mode = true; 1b2a6: 3a1f subs r2, #31 1b2a8: 4b21 ldr r3, [pc, #132] ; (1b330 ) 1b2aa: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b2ac: 22e6 movs r2, #230 ; 0xe6 1b2ae: 4921 ldr r1, [pc, #132] ; (1b334 ) 1b2b0: 4821 ldr r0, [pc, #132] ; (1b338 ) 1b2b2: 4b22 ldr r3, [pc, #136] ; (1b33c ) 1b2b4: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b2b6: 4b17 ldr r3, [pc, #92] ; (1b314 ) 1b2b8: 2240 movs r2, #64 ; 0x40 1b2ba: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b2bc: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b2be: 4b1c ldr r3, [pc, #112] ; (1b330 ) 1b2c0: 781b ldrb r3, [r3, #0] 1b2c2: 2b00 cmp r3, #0 1b2c4: d005 beq.n 1b2d2 port_base->OUTSET.reg = pin_mask; 1b2c6: 3a20 subs r2, #32 1b2c8: 4b12 ldr r3, [pc, #72] ; (1b314 ) 1b2ca: 619a str r2, [r3, #24] cmd_mode = false; 1b2cc: 2200 movs r2, #0 1b2ce: 4b18 ldr r3, [pc, #96] ; (1b330 ) 1b2d0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b2d2: 2204 movs r2, #4 1b2d4: 4917 ldr r1, [pc, #92] ; (1b334 ) 1b2d6: 4818 ldr r0, [pc, #96] ; (1b338 ) 1b2d8: 4b18 ldr r3, [pc, #96] ; (1b33c ) 1b2da: 4798 blx r3 1b2dc: 4b0d ldr r3, [pc, #52] ; (1b314 ) 1b2de: 2240 movs r2, #64 ; 0x40 1b2e0: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b2e2: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b2e4: 4b12 ldr r3, [pc, #72] ; (1b330 ) 1b2e6: 781b ldrb r3, [r3, #0] 1b2e8: 2b00 cmp r3, #0 1b2ea: d005 beq.n 1b2f8 port_base->OUTSET.reg = pin_mask; 1b2ec: 3a20 subs r2, #32 1b2ee: 4b09 ldr r3, [pc, #36] ; (1b314 ) 1b2f0: 619a str r2, [r3, #24] cmd_mode = false; 1b2f2: 2200 movs r2, #0 1b2f4: 4b0e ldr r3, [pc, #56] ; (1b330 ) 1b2f6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b2f8: 223a movs r2, #58 ; 0x3a 1b2fa: 490e ldr r1, [pc, #56] ; (1b334 ) 1b2fc: 480e ldr r0, [pc, #56] ; (1b338 ) 1b2fe: 4b0f ldr r3, [pc, #60] ; (1b33c ) 1b300: 4798 blx r3 1b302: 4b04 ldr r3, [pc, #16] ; (1b314 ) 1b304: 2240 movs r2, #64 ; 0x40 1b306: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b308: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b30a: 4b09 ldr r3, [pc, #36] ; (1b330 ) 1b30c: 781b ldrb r3, [r3, #0] 1b30e: 2b00 cmp r3, #0 1b310: d020 beq.n 1b354 1b312: e019 b.n 1b348 1b314: 41004400 .word 0x41004400 1b318: 000013fd .word 0x000013fd 1b31c: 0001c3d1 .word 0x0001c3d1 1b320: 00001b57 .word 0x00001b57 1b324: 0001c391 .word 0x0001c391 1b328: 00001b58 .word 0x00001b58 1b32c: 20000001 .word 0x20000001 1b330: 2000006c .word 0x2000006c 1b334: 0000ffff .word 0x0000ffff 1b338: 41004480 .word 0x41004480 1b33c: 0001be6d .word 0x0001be6d 1b340: 006acfbf .word 0x006acfbf 1b344: 006acfc0 .word 0x006acfc0 port_base->OUTSET.reg = pin_mask; 1b348: 3a20 subs r2, #32 1b34a: 4be6 ldr r3, [pc, #920] ; (1b6e4 ) 1b34c: 619a str r2, [r3, #24] cmd_mode = false; 1b34e: 2200 movs r2, #0 1b350: 4be5 ldr r3, [pc, #916] ; (1b6e8 ) 1b352: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b354: 22b6 movs r2, #182 ; 0xb6 1b356: 49e5 ldr r1, [pc, #916] ; (1b6ec ) 1b358: 48e5 ldr r0, [pc, #916] ; (1b6f0 ) 1b35a: 4be6 ldr r3, [pc, #920] ; (1b6f4 ) 1b35c: 4798 blx r3 1b35e: 4be1 ldr r3, [pc, #900] ; (1b6e4 ) 1b360: 2240 movs r2, #64 ; 0x40 1b362: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b364: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b366: 4be0 ldr r3, [pc, #896] ; (1b6e8 ) 1b368: 781b ldrb r3, [r3, #0] 1b36a: 2b00 cmp r3, #0 1b36c: d105 bne.n 1b37a 1b36e: 3a20 subs r2, #32 1b370: 4bdc ldr r3, [pc, #880] ; (1b6e4 ) 1b372: 615a str r2, [r3, #20] cmd_mode = true; 1b374: 3a1f subs r2, #31 1b376: 4bdc ldr r3, [pc, #880] ; (1b6e8 ) 1b378: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b37a: 22b0 movs r2, #176 ; 0xb0 1b37c: 49db ldr r1, [pc, #876] ; (1b6ec ) 1b37e: 48dc ldr r0, [pc, #880] ; (1b6f0 ) 1b380: 4bdc ldr r3, [pc, #880] ; (1b6f4 ) 1b382: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b384: 4bd7 ldr r3, [pc, #860] ; (1b6e4 ) 1b386: 2240 movs r2, #64 ; 0x40 1b388: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b38a: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b38c: 4bd6 ldr r3, [pc, #856] ; (1b6e8 ) 1b38e: 781b ldrb r3, [r3, #0] 1b390: 2b00 cmp r3, #0 1b392: d005 beq.n 1b3a0 port_base->OUTSET.reg = pin_mask; 1b394: 3a20 subs r2, #32 1b396: 4bd3 ldr r3, [pc, #844] ; (1b6e4 ) 1b398: 619a str r2, [r3, #24] cmd_mode = false; 1b39a: 2200 movs r2, #0 1b39c: 4bd2 ldr r3, [pc, #840] ; (1b6e8 ) 1b39e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b3a0: 2228 movs r2, #40 ; 0x28 1b3a2: 49d2 ldr r1, [pc, #840] ; (1b6ec ) 1b3a4: 48d2 ldr r0, [pc, #840] ; (1b6f0 ) 1b3a6: 4bd3 ldr r3, [pc, #844] ; (1b6f4 ) 1b3a8: 4798 blx r3 1b3aa: 4bce ldr r3, [pc, #824] ; (1b6e4 ) 1b3ac: 2240 movs r2, #64 ; 0x40 1b3ae: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b3b0: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b3b2: 4bcd ldr r3, [pc, #820] ; (1b6e8 ) 1b3b4: 781b ldrb r3, [r3, #0] 1b3b6: 2b00 cmp r3, #0 1b3b8: d005 beq.n 1b3c6 port_base->OUTSET.reg = pin_mask; 1b3ba: 3a20 subs r2, #32 1b3bc: 4bc9 ldr r3, [pc, #804] ; (1b6e4 ) 1b3be: 619a str r2, [r3, #24] cmd_mode = false; 1b3c0: 2200 movs r2, #0 1b3c2: 4bc9 ldr r3, [pc, #804] ; (1b6e8 ) 1b3c4: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b3c6: 2280 movs r2, #128 ; 0x80 1b3c8: 49c8 ldr r1, [pc, #800] ; (1b6ec ) 1b3ca: 48c9 ldr r0, [pc, #804] ; (1b6f0 ) 1b3cc: 4bc9 ldr r3, [pc, #804] ; (1b6f4 ) 1b3ce: 4798 blx r3 1b3d0: 4cc4 ldr r4, [pc, #784] ; (1b6e4 ) 1b3d2: 2540 movs r5, #64 ; 0x40 1b3d4: 61a5 str r5, [r4, #24] ssd1963_data((SSD1963_HOR_RES-1)>>8); //Set panel size 1b3d6: 4bc8 ldr r3, [pc, #800] ; (1b6f8 ) 1b3d8: 4798 blx r3 1b3da: 4bc8 ldr r3, [pc, #800] ; (1b6fc ) 1b3dc: 4798 blx r3 1b3de: 1e42 subs r2, r0, #1 1b3e0: 1212 asrs r2, r2, #8 1b3e2: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1b3e4: 6165 str r5, [r4, #20] if(cmd_mode != false) { 1b3e6: 4bc0 ldr r3, [pc, #768] ; (1b6e8 ) 1b3e8: 781b ldrb r3, [r3, #0] 1b3ea: 2b00 cmp r3, #0 1b3ec: d004 beq.n 1b3f8 port_base->OUTSET.reg = pin_mask; 1b3ee: 2120 movs r1, #32 1b3f0: 61a1 str r1, [r4, #24] cmd_mode = false; 1b3f2: 2100 movs r1, #0 1b3f4: 4bbc ldr r3, [pc, #752] ; (1b6e8 ) 1b3f6: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b3f8: 49bc ldr r1, [pc, #752] ; (1b6ec ) 1b3fa: 48bd ldr r0, [pc, #756] ; (1b6f0 ) 1b3fc: 4bbd ldr r3, [pc, #756] ; (1b6f4 ) 1b3fe: 4798 blx r3 1b400: 4cb8 ldr r4, [pc, #736] ; (1b6e4 ) 1b402: 2540 movs r5, #64 ; 0x40 1b404: 61a5 str r5, [r4, #24] ssd1963_data(SSD1963_HOR_RES-1); 1b406: 4bbc ldr r3, [pc, #752] ; (1b6f8 ) 1b408: 4798 blx r3 1b40a: 4bbc ldr r3, [pc, #752] ; (1b6fc ) 1b40c: 4798 blx r3 1b40e: 3801 subs r0, #1 1b410: b282 uxth r2, r0 port_base->OUTCLR.reg = pin_mask; 1b412: 6165 str r5, [r4, #20] if(cmd_mode != false) { 1b414: 4bb4 ldr r3, [pc, #720] ; (1b6e8 ) 1b416: 781b ldrb r3, [r3, #0] 1b418: 2b00 cmp r3, #0 1b41a: d004 beq.n 1b426 port_base->OUTSET.reg = pin_mask; 1b41c: 2120 movs r1, #32 1b41e: 61a1 str r1, [r4, #24] cmd_mode = false; 1b420: 2100 movs r1, #0 1b422: 4bb1 ldr r3, [pc, #708] ; (1b6e8 ) 1b424: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b426: 49b1 ldr r1, [pc, #708] ; (1b6ec ) 1b428: 48b1 ldr r0, [pc, #708] ; (1b6f0 ) 1b42a: 4bb2 ldr r3, [pc, #712] ; (1b6f4 ) 1b42c: 4798 blx r3 1b42e: 4cad ldr r4, [pc, #692] ; (1b6e4 ) 1b430: 2540 movs r5, #64 ; 0x40 1b432: 61a5 str r5, [r4, #24] ssd1963_data((SSD1963_VER_RES-1)>>8); 1b434: 4bb0 ldr r3, [pc, #704] ; (1b6f8 ) 1b436: 4798 blx r3 1b438: 4bb1 ldr r3, [pc, #708] ; (1b700 ) 1b43a: 4798 blx r3 1b43c: 1e42 subs r2, r0, #1 1b43e: 1212 asrs r2, r2, #8 1b440: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1b442: 6165 str r5, [r4, #20] if(cmd_mode != false) { 1b444: 4ba8 ldr r3, [pc, #672] ; (1b6e8 ) 1b446: 781b ldrb r3, [r3, #0] 1b448: 2b00 cmp r3, #0 1b44a: d004 beq.n 1b456 port_base->OUTSET.reg = pin_mask; 1b44c: 2120 movs r1, #32 1b44e: 61a1 str r1, [r4, #24] cmd_mode = false; 1b450: 2100 movs r1, #0 1b452: 4ba5 ldr r3, [pc, #660] ; (1b6e8 ) 1b454: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b456: 49a5 ldr r1, [pc, #660] ; (1b6ec ) 1b458: 48a5 ldr r0, [pc, #660] ; (1b6f0 ) 1b45a: 4ba6 ldr r3, [pc, #664] ; (1b6f4 ) 1b45c: 4798 blx r3 1b45e: 4ca1 ldr r4, [pc, #644] ; (1b6e4 ) 1b460: 2540 movs r5, #64 ; 0x40 1b462: 61a5 str r5, [r4, #24] ssd1963_data(SSD1963_VER_RES-1); 1b464: 4ba4 ldr r3, [pc, #656] ; (1b6f8 ) 1b466: 4798 blx r3 1b468: 4ba5 ldr r3, [pc, #660] ; (1b700 ) 1b46a: 4798 blx r3 1b46c: 3801 subs r0, #1 1b46e: b282 uxth r2, r0 port_base->OUTCLR.reg = pin_mask; 1b470: 6165 str r5, [r4, #20] if(cmd_mode != false) { 1b472: 4b9d ldr r3, [pc, #628] ; (1b6e8 ) 1b474: 781b ldrb r3, [r3, #0] 1b476: 2b00 cmp r3, #0 1b478: d004 beq.n 1b484 port_base->OUTSET.reg = pin_mask; 1b47a: 2120 movs r1, #32 1b47c: 61a1 str r1, [r4, #24] cmd_mode = false; 1b47e: 2100 movs r1, #0 1b480: 4b99 ldr r3, [pc, #612] ; (1b6e8 ) 1b482: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b484: 4999 ldr r1, [pc, #612] ; (1b6ec ) 1b486: 489a ldr r0, [pc, #616] ; (1b6f0 ) 1b488: 4b9a ldr r3, [pc, #616] ; (1b6f4 ) 1b48a: 4798 blx r3 1b48c: 4b95 ldr r3, [pc, #596] ; (1b6e4 ) 1b48e: 2240 movs r2, #64 ; 0x40 1b490: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b492: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b494: 4b94 ldr r3, [pc, #592] ; (1b6e8 ) 1b496: 781b ldrb r3, [r3, #0] 1b498: 2b00 cmp r3, #0 1b49a: d005 beq.n 1b4a8 port_base->OUTSET.reg = pin_mask; 1b49c: 3a20 subs r2, #32 1b49e: 4b91 ldr r3, [pc, #580] ; (1b6e4 ) 1b4a0: 619a str r2, [r3, #24] cmd_mode = false; 1b4a2: 2200 movs r2, #0 1b4a4: 4b90 ldr r3, [pc, #576] ; (1b6e8 ) 1b4a6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b4a8: 2200 movs r2, #0 1b4aa: 4990 ldr r1, [pc, #576] ; (1b6ec ) 1b4ac: 4890 ldr r0, [pc, #576] ; (1b6f0 ) 1b4ae: 4b91 ldr r3, [pc, #580] ; (1b6f4 ) 1b4b0: 4798 blx r3 1b4b2: 4b8c ldr r3, [pc, #560] ; (1b6e4 ) 1b4b4: 2240 movs r2, #64 ; 0x40 1b4b6: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b4b8: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b4ba: 4b8b ldr r3, [pc, #556] ; (1b6e8 ) 1b4bc: 781b ldrb r3, [r3, #0] 1b4be: 2b00 cmp r3, #0 1b4c0: d105 bne.n 1b4ce 1b4c2: 3a20 subs r2, #32 1b4c4: 4b87 ldr r3, [pc, #540] ; (1b6e4 ) 1b4c6: 615a str r2, [r3, #20] cmd_mode = true; 1b4c8: 3a1f subs r2, #31 1b4ca: 4b87 ldr r3, [pc, #540] ; (1b6e8 ) 1b4cc: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b4ce: 22f0 movs r2, #240 ; 0xf0 1b4d0: 4986 ldr r1, [pc, #536] ; (1b6ec ) 1b4d2: 4887 ldr r0, [pc, #540] ; (1b6f0 ) 1b4d4: 4b87 ldr r3, [pc, #540] ; (1b6f4 ) 1b4d6: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b4d8: 4b82 ldr r3, [pc, #520] ; (1b6e4 ) 1b4da: 2240 movs r2, #64 ; 0x40 1b4dc: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b4de: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b4e0: 4b81 ldr r3, [pc, #516] ; (1b6e8 ) 1b4e2: 781b ldrb r3, [r3, #0] 1b4e4: 2b00 cmp r3, #0 1b4e6: d005 beq.n 1b4f4 port_base->OUTSET.reg = pin_mask; 1b4e8: 3a20 subs r2, #32 1b4ea: 4b7e ldr r3, [pc, #504] ; (1b6e4 ) 1b4ec: 619a str r2, [r3, #24] cmd_mode = false; 1b4ee: 2200 movs r2, #0 1b4f0: 4b7d ldr r3, [pc, #500] ; (1b6e8 ) 1b4f2: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b4f4: 2203 movs r2, #3 1b4f6: 497d ldr r1, [pc, #500] ; (1b6ec ) 1b4f8: 487d ldr r0, [pc, #500] ; (1b6f0 ) 1b4fa: 4b7e ldr r3, [pc, #504] ; (1b6f4 ) 1b4fc: 4798 blx r3 1b4fe: 4b79 ldr r3, [pc, #484] ; (1b6e4 ) 1b500: 2240 movs r2, #64 ; 0x40 1b502: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b504: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b506: 4b78 ldr r3, [pc, #480] ; (1b6e8 ) 1b508: 781b ldrb r3, [r3, #0] 1b50a: 2b00 cmp r3, #0 1b50c: d105 bne.n 1b51a 1b50e: 3a20 subs r2, #32 1b510: 4b74 ldr r3, [pc, #464] ; (1b6e4 ) 1b512: 615a str r2, [r3, #20] cmd_mode = true; 1b514: 3a1f subs r2, #31 1b516: 4b74 ldr r3, [pc, #464] ; (1b6e8 ) 1b518: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b51a: 223a movs r2, #58 ; 0x3a 1b51c: 4973 ldr r1, [pc, #460] ; (1b6ec ) 1b51e: 4874 ldr r0, [pc, #464] ; (1b6f0 ) 1b520: 4b74 ldr r3, [pc, #464] ; (1b6f4 ) 1b522: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b524: 4b6f ldr r3, [pc, #444] ; (1b6e4 ) 1b526: 2240 movs r2, #64 ; 0x40 1b528: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b52a: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b52c: 4b6e ldr r3, [pc, #440] ; (1b6e8 ) 1b52e: 781b ldrb r3, [r3, #0] 1b530: 2b00 cmp r3, #0 1b532: d005 beq.n 1b540 port_base->OUTSET.reg = pin_mask; 1b534: 3a20 subs r2, #32 1b536: 4b6b ldr r3, [pc, #428] ; (1b6e4 ) 1b538: 619a str r2, [r3, #24] cmd_mode = false; 1b53a: 2200 movs r2, #0 1b53c: 4b6a ldr r3, [pc, #424] ; (1b6e8 ) 1b53e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b540: 2255 movs r2, #85 ; 0x55 1b542: 496a ldr r1, [pc, #424] ; (1b6ec ) 1b544: 486a ldr r0, [pc, #424] ; (1b6f0 ) 1b546: 4b6b ldr r3, [pc, #428] ; (1b6f4 ) 1b548: 4798 blx r3 1b54a: 4b66 ldr r3, [pc, #408] ; (1b6e4 ) 1b54c: 2240 movs r2, #64 ; 0x40 1b54e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b550: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b552: 4b65 ldr r3, [pc, #404] ; (1b6e8 ) 1b554: 781b ldrb r3, [r3, #0] 1b556: 2b00 cmp r3, #0 1b558: d105 bne.n 1b566 1b55a: 3a20 subs r2, #32 1b55c: 4b61 ldr r3, [pc, #388] ; (1b6e4 ) 1b55e: 615a str r2, [r3, #20] cmd_mode = true; 1b560: 3a1f subs r2, #31 1b562: 4b61 ldr r3, [pc, #388] ; (1b6e8 ) 1b564: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b566: 22b4 movs r2, #180 ; 0xb4 1b568: 4960 ldr r1, [pc, #384] ; (1b6ec ) 1b56a: 4861 ldr r0, [pc, #388] ; (1b6f0 ) 1b56c: 4b61 ldr r3, [pc, #388] ; (1b6f4 ) 1b56e: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b570: 4b5c ldr r3, [pc, #368] ; (1b6e4 ) 1b572: 2240 movs r2, #64 ; 0x40 1b574: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b576: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b578: 4b5b ldr r3, [pc, #364] ; (1b6e8 ) 1b57a: 781b ldrb r3, [r3, #0] 1b57c: 2b00 cmp r3, #0 1b57e: d005 beq.n 1b58c port_base->OUTSET.reg = pin_mask; 1b580: 3a20 subs r2, #32 1b582: 4b58 ldr r3, [pc, #352] ; (1b6e4 ) 1b584: 619a str r2, [r3, #24] cmd_mode = false; 1b586: 2200 movs r2, #0 1b588: 4b57 ldr r3, [pc, #348] ; (1b6e8 ) 1b58a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b58c: 2202 movs r2, #2 1b58e: 4957 ldr r1, [pc, #348] ; (1b6ec ) 1b590: 4857 ldr r0, [pc, #348] ; (1b6f0 ) 1b592: 4b58 ldr r3, [pc, #352] ; (1b6f4 ) 1b594: 4798 blx r3 1b596: 4b53 ldr r3, [pc, #332] ; (1b6e4 ) 1b598: 2240 movs r2, #64 ; 0x40 1b59a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b59c: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b59e: 4b52 ldr r3, [pc, #328] ; (1b6e8 ) 1b5a0: 781b ldrb r3, [r3, #0] 1b5a2: 2b00 cmp r3, #0 1b5a4: d005 beq.n 1b5b2 port_base->OUTSET.reg = pin_mask; 1b5a6: 3a20 subs r2, #32 1b5a8: 4b4e ldr r3, [pc, #312] ; (1b6e4 ) 1b5aa: 619a str r2, [r3, #24] cmd_mode = false; 1b5ac: 2200 movs r2, #0 1b5ae: 4b4e ldr r3, [pc, #312] ; (1b6e8 ) 1b5b0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b5b2: 220d movs r2, #13 1b5b4: 494d ldr r1, [pc, #308] ; (1b6ec ) 1b5b6: 484e ldr r0, [pc, #312] ; (1b6f0 ) 1b5b8: 4b4e ldr r3, [pc, #312] ; (1b6f4 ) 1b5ba: 4798 blx r3 1b5bc: 4b49 ldr r3, [pc, #292] ; (1b6e4 ) 1b5be: 2240 movs r2, #64 ; 0x40 1b5c0: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b5c2: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b5c4: 4b48 ldr r3, [pc, #288] ; (1b6e8 ) 1b5c6: 781b ldrb r3, [r3, #0] 1b5c8: 2b00 cmp r3, #0 1b5ca: d005 beq.n 1b5d8 port_base->OUTSET.reg = pin_mask; 1b5cc: 3a20 subs r2, #32 1b5ce: 4b45 ldr r3, [pc, #276] ; (1b6e4 ) 1b5d0: 619a str r2, [r3, #24] cmd_mode = false; 1b5d2: 2200 movs r2, #0 1b5d4: 4b44 ldr r3, [pc, #272] ; (1b6e8 ) 1b5d6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b5d8: 2200 movs r2, #0 1b5da: 4944 ldr r1, [pc, #272] ; (1b6ec ) 1b5dc: 4844 ldr r0, [pc, #272] ; (1b6f0 ) 1b5de: 4b45 ldr r3, [pc, #276] ; (1b6f4 ) 1b5e0: 4798 blx r3 1b5e2: 4b40 ldr r3, [pc, #256] ; (1b6e4 ) 1b5e4: 2240 movs r2, #64 ; 0x40 1b5e6: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b5e8: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b5ea: 4b3f ldr r3, [pc, #252] ; (1b6e8 ) 1b5ec: 781b ldrb r3, [r3, #0] 1b5ee: 2b00 cmp r3, #0 1b5f0: d005 beq.n 1b5fe port_base->OUTSET.reg = pin_mask; 1b5f2: 3a20 subs r2, #32 1b5f4: 4b3b ldr r3, [pc, #236] ; (1b6e4 ) 1b5f6: 619a str r2, [r3, #24] cmd_mode = false; 1b5f8: 2200 movs r2, #0 1b5fa: 4b3b ldr r3, [pc, #236] ; (1b6e8 ) 1b5fc: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b5fe: 222b movs r2, #43 ; 0x2b 1b600: 493a ldr r1, [pc, #232] ; (1b6ec ) 1b602: 483b ldr r0, [pc, #236] ; (1b6f0 ) 1b604: 4b3b ldr r3, [pc, #236] ; (1b6f4 ) 1b606: 4798 blx r3 1b608: 4b36 ldr r3, [pc, #216] ; (1b6e4 ) 1b60a: 2240 movs r2, #64 ; 0x40 1b60c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b60e: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b610: 4b35 ldr r3, [pc, #212] ; (1b6e8 ) 1b612: 781b ldrb r3, [r3, #0] 1b614: 2b00 cmp r3, #0 1b616: d005 beq.n 1b624 port_base->OUTSET.reg = pin_mask; 1b618: 3a20 subs r2, #32 1b61a: 4b32 ldr r3, [pc, #200] ; (1b6e4 ) 1b61c: 619a str r2, [r3, #24] cmd_mode = false; 1b61e: 2200 movs r2, #0 1b620: 4b31 ldr r3, [pc, #196] ; (1b6e8 ) 1b622: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b624: 2228 movs r2, #40 ; 0x28 1b626: 4931 ldr r1, [pc, #196] ; (1b6ec ) 1b628: 4831 ldr r0, [pc, #196] ; (1b6f0 ) 1b62a: 4b32 ldr r3, [pc, #200] ; (1b6f4 ) 1b62c: 4798 blx r3 1b62e: 4b2d ldr r3, [pc, #180] ; (1b6e4 ) 1b630: 2240 movs r2, #64 ; 0x40 1b632: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b634: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b636: 4b2c ldr r3, [pc, #176] ; (1b6e8 ) 1b638: 781b ldrb r3, [r3, #0] 1b63a: 2b00 cmp r3, #0 1b63c: d005 beq.n 1b64a port_base->OUTSET.reg = pin_mask; 1b63e: 3a20 subs r2, #32 1b640: 4b28 ldr r3, [pc, #160] ; (1b6e4 ) 1b642: 619a str r2, [r3, #24] cmd_mode = false; 1b644: 2200 movs r2, #0 1b646: 4b28 ldr r3, [pc, #160] ; (1b6e8 ) 1b648: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b64a: 2200 movs r2, #0 1b64c: 4927 ldr r1, [pc, #156] ; (1b6ec ) 1b64e: 4828 ldr r0, [pc, #160] ; (1b6f0 ) 1b650: 4b28 ldr r3, [pc, #160] ; (1b6f4 ) 1b652: 4798 blx r3 1b654: 4b23 ldr r3, [pc, #140] ; (1b6e4 ) 1b656: 2240 movs r2, #64 ; 0x40 1b658: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b65a: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b65c: 4b22 ldr r3, [pc, #136] ; (1b6e8 ) 1b65e: 781b ldrb r3, [r3, #0] 1b660: 2b00 cmp r3, #0 1b662: d005 beq.n 1b670 port_base->OUTSET.reg = pin_mask; 1b664: 3a20 subs r2, #32 1b666: 4b1f ldr r3, [pc, #124] ; (1b6e4 ) 1b668: 619a str r2, [r3, #24] cmd_mode = false; 1b66a: 2200 movs r2, #0 1b66c: 4b1e ldr r3, [pc, #120] ; (1b6e8 ) 1b66e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b670: 2200 movs r2, #0 1b672: 491e ldr r1, [pc, #120] ; (1b6ec ) 1b674: 481e ldr r0, [pc, #120] ; (1b6f0 ) 1b676: 4b1f ldr r3, [pc, #124] ; (1b6f4 ) 1b678: 4798 blx r3 1b67a: 4b1a ldr r3, [pc, #104] ; (1b6e4 ) 1b67c: 2240 movs r2, #64 ; 0x40 1b67e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b680: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b682: 4b19 ldr r3, [pc, #100] ; (1b6e8 ) 1b684: 781b ldrb r3, [r3, #0] 1b686: 2b00 cmp r3, #0 1b688: d005 beq.n 1b696 port_base->OUTSET.reg = pin_mask; 1b68a: 3a20 subs r2, #32 1b68c: 4b15 ldr r3, [pc, #84] ; (1b6e4 ) 1b68e: 619a str r2, [r3, #24] cmd_mode = false; 1b690: 2200 movs r2, #0 1b692: 4b15 ldr r3, [pc, #84] ; (1b6e8 ) 1b694: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b696: 2200 movs r2, #0 1b698: 4914 ldr r1, [pc, #80] ; (1b6ec ) 1b69a: 4815 ldr r0, [pc, #84] ; (1b6f0 ) 1b69c: 4b15 ldr r3, [pc, #84] ; (1b6f4 ) 1b69e: 4798 blx r3 1b6a0: 4b10 ldr r3, [pc, #64] ; (1b6e4 ) 1b6a2: 2240 movs r2, #64 ; 0x40 1b6a4: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b6a6: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b6a8: 4b0f ldr r3, [pc, #60] ; (1b6e8 ) 1b6aa: 781b ldrb r3, [r3, #0] 1b6ac: 2b00 cmp r3, #0 1b6ae: d105 bne.n 1b6bc 1b6b0: 3a20 subs r2, #32 1b6b2: 4b0c ldr r3, [pc, #48] ; (1b6e4 ) 1b6b4: 615a str r2, [r3, #20] cmd_mode = true; 1b6b6: 3a1f subs r2, #31 1b6b8: 4b0b ldr r3, [pc, #44] ; (1b6e8 ) 1b6ba: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b6bc: 22b6 movs r2, #182 ; 0xb6 1b6be: 490b ldr r1, [pc, #44] ; (1b6ec ) 1b6c0: 480b ldr r0, [pc, #44] ; (1b6f0 ) 1b6c2: 4b0c ldr r3, [pc, #48] ; (1b6f4 ) 1b6c4: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b6c6: 4b07 ldr r3, [pc, #28] ; (1b6e4 ) 1b6c8: 2240 movs r2, #64 ; 0x40 1b6ca: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b6cc: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b6ce: 4b06 ldr r3, [pc, #24] ; (1b6e8 ) 1b6d0: 781b ldrb r3, [r3, #0] 1b6d2: 2b00 cmp r3, #0 1b6d4: d016 beq.n 1b704 port_base->OUTSET.reg = pin_mask; 1b6d6: 3a20 subs r2, #32 1b6d8: 4b02 ldr r3, [pc, #8] ; (1b6e4 ) 1b6da: 619a str r2, [r3, #24] cmd_mode = false; 1b6dc: 2200 movs r2, #0 1b6de: 4b02 ldr r3, [pc, #8] ; (1b6e8 ) 1b6e0: 701a strb r2, [r3, #0] 1b6e2: e00f b.n 1b704 1b6e4: 41004400 .word 0x41004400 1b6e8: 2000006c .word 0x2000006c 1b6ec: 0000ffff .word 0x0000ffff 1b6f0: 41004480 .word 0x41004480 1b6f4: 0001be6d .word 0x0001be6d 1b6f8: 00010d75 .word 0x00010d75 1b6fc: 00010d81 .word 0x00010d81 1b700: 00010da9 .word 0x00010da9 LV_DRV_DISP_PAR_WR_WORD(data); 1b704: 2201 movs r2, #1 1b706: 49e4 ldr r1, [pc, #912] ; (1ba98 ) 1b708: 48e4 ldr r0, [pc, #912] ; (1ba9c ) 1b70a: 4be5 ldr r3, [pc, #916] ; (1baa0 ) 1b70c: 4798 blx r3 1b70e: 4be5 ldr r3, [pc, #916] ; (1baa4 ) 1b710: 2240 movs r2, #64 ; 0x40 1b712: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b714: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b716: 4be4 ldr r3, [pc, #912] ; (1baa8 ) 1b718: 781b ldrb r3, [r3, #0] 1b71a: 2b00 cmp r3, #0 1b71c: d005 beq.n 1b72a port_base->OUTSET.reg = pin_mask; 1b71e: 3a20 subs r2, #32 1b720: 4be0 ldr r3, [pc, #896] ; (1baa4 ) 1b722: 619a str r2, [r3, #24] cmd_mode = false; 1b724: 2200 movs r2, #0 1b726: 4be0 ldr r3, [pc, #896] ; (1baa8 ) 1b728: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b72a: 221d movs r2, #29 1b72c: 49da ldr r1, [pc, #872] ; (1ba98 ) 1b72e: 48db ldr r0, [pc, #876] ; (1ba9c ) 1b730: 4bdb ldr r3, [pc, #876] ; (1baa0 ) 1b732: 4798 blx r3 1b734: 4bdb ldr r3, [pc, #876] ; (1baa4 ) 1b736: 2240 movs r2, #64 ; 0x40 1b738: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b73a: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b73c: 4bda ldr r3, [pc, #872] ; (1baa8 ) 1b73e: 781b ldrb r3, [r3, #0] 1b740: 2b00 cmp r3, #0 1b742: d005 beq.n 1b750 port_base->OUTSET.reg = pin_mask; 1b744: 3a20 subs r2, #32 1b746: 4bd7 ldr r3, [pc, #860] ; (1baa4 ) 1b748: 619a str r2, [r3, #24] cmd_mode = false; 1b74a: 2200 movs r2, #0 1b74c: 4bd6 ldr r3, [pc, #856] ; (1baa8 ) 1b74e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b750: 2200 movs r2, #0 1b752: 49d1 ldr r1, [pc, #836] ; (1ba98 ) 1b754: 48d1 ldr r0, [pc, #836] ; (1ba9c ) 1b756: 4bd2 ldr r3, [pc, #840] ; (1baa0 ) 1b758: 4798 blx r3 1b75a: 4bd2 ldr r3, [pc, #840] ; (1baa4 ) 1b75c: 2240 movs r2, #64 ; 0x40 1b75e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b760: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b762: 4bd1 ldr r3, [pc, #836] ; (1baa8 ) 1b764: 781b ldrb r3, [r3, #0] 1b766: 2b00 cmp r3, #0 1b768: d005 beq.n 1b776 port_base->OUTSET.reg = pin_mask; 1b76a: 3a20 subs r2, #32 1b76c: 4bcd ldr r3, [pc, #820] ; (1baa4 ) 1b76e: 619a str r2, [r3, #24] cmd_mode = false; 1b770: 2200 movs r2, #0 1b772: 4bcd ldr r3, [pc, #820] ; (1baa8 ) 1b774: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b776: 220c movs r2, #12 1b778: 49c7 ldr r1, [pc, #796] ; (1ba98 ) 1b77a: 48c8 ldr r0, [pc, #800] ; (1ba9c ) 1b77c: 4bc8 ldr r3, [pc, #800] ; (1baa0 ) 1b77e: 4798 blx r3 1b780: 4bc8 ldr r3, [pc, #800] ; (1baa4 ) 1b782: 2240 movs r2, #64 ; 0x40 1b784: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b786: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b788: 4bc7 ldr r3, [pc, #796] ; (1baa8 ) 1b78a: 781b ldrb r3, [r3, #0] 1b78c: 2b00 cmp r3, #0 1b78e: d005 beq.n 1b79c port_base->OUTSET.reg = pin_mask; 1b790: 3a20 subs r2, #32 1b792: 4bc4 ldr r3, [pc, #784] ; (1baa4 ) 1b794: 619a str r2, [r3, #24] cmd_mode = false; 1b796: 2200 movs r2, #0 1b798: 4bc3 ldr r3, [pc, #780] ; (1baa8 ) 1b79a: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b79c: 2209 movs r2, #9 1b79e: 49be ldr r1, [pc, #760] ; (1ba98 ) 1b7a0: 48be ldr r0, [pc, #760] ; (1ba9c ) 1b7a2: 4bbf ldr r3, [pc, #764] ; (1baa0 ) 1b7a4: 4798 blx r3 1b7a6: 4bbf ldr r3, [pc, #764] ; (1baa4 ) 1b7a8: 2240 movs r2, #64 ; 0x40 1b7aa: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b7ac: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b7ae: 4bbe ldr r3, [pc, #760] ; (1baa8 ) 1b7b0: 781b ldrb r3, [r3, #0] 1b7b2: 2b00 cmp r3, #0 1b7b4: d005 beq.n 1b7c2 port_base->OUTSET.reg = pin_mask; 1b7b6: 3a20 subs r2, #32 1b7b8: 4bba ldr r3, [pc, #744] ; (1baa4 ) 1b7ba: 619a str r2, [r3, #24] cmd_mode = false; 1b7bc: 2200 movs r2, #0 1b7be: 4bba ldr r3, [pc, #744] ; (1baa8 ) 1b7c0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b7c2: 2200 movs r2, #0 1b7c4: 49b4 ldr r1, [pc, #720] ; (1ba98 ) 1b7c6: 48b5 ldr r0, [pc, #724] ; (1ba9c ) 1b7c8: 4bb5 ldr r3, [pc, #724] ; (1baa0 ) 1b7ca: 4798 blx r3 1b7cc: 4bb5 ldr r3, [pc, #724] ; (1baa4 ) 1b7ce: 2240 movs r2, #64 ; 0x40 1b7d0: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b7d2: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b7d4: 4bb4 ldr r3, [pc, #720] ; (1baa8 ) 1b7d6: 781b ldrb r3, [r3, #0] 1b7d8: 2b00 cmp r3, #0 1b7da: d005 beq.n 1b7e8 port_base->OUTSET.reg = pin_mask; 1b7dc: 3a20 subs r2, #32 1b7de: 4bb1 ldr r3, [pc, #708] ; (1baa4 ) 1b7e0: 619a str r2, [r3, #24] cmd_mode = false; 1b7e2: 2200 movs r2, #0 1b7e4: 4bb0 ldr r3, [pc, #704] ; (1baa8 ) 1b7e6: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b7e8: 2200 movs r2, #0 1b7ea: 49ab ldr r1, [pc, #684] ; (1ba98 ) 1b7ec: 48ab ldr r0, [pc, #684] ; (1ba9c ) 1b7ee: 4bac ldr r3, [pc, #688] ; (1baa0 ) 1b7f0: 4798 blx r3 1b7f2: 4bac ldr r3, [pc, #688] ; (1baa4 ) 1b7f4: 2240 movs r2, #64 ; 0x40 1b7f6: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b7f8: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b7fa: 4bab ldr r3, [pc, #684] ; (1baa8 ) 1b7fc: 781b ldrb r3, [r3, #0] 1b7fe: 2b00 cmp r3, #0 1b800: d105 bne.n 1b80e 1b802: 3a20 subs r2, #32 1b804: 4ba7 ldr r3, [pc, #668] ; (1baa4 ) 1b806: 615a str r2, [r3, #20] cmd_mode = true; 1b808: 3a1f subs r2, #31 1b80a: 4ba7 ldr r3, [pc, #668] ; (1baa8 ) 1b80c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b80e: 222a movs r2, #42 ; 0x2a 1b810: 49a1 ldr r1, [pc, #644] ; (1ba98 ) 1b812: 48a2 ldr r0, [pc, #648] ; (1ba9c ) 1b814: 4ba2 ldr r3, [pc, #648] ; (1baa0 ) 1b816: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b818: 4ba2 ldr r3, [pc, #648] ; (1baa4 ) 1b81a: 2240 movs r2, #64 ; 0x40 1b81c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b81e: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b820: 4ba1 ldr r3, [pc, #644] ; (1baa8 ) 1b822: 781b ldrb r3, [r3, #0] 1b824: 2b00 cmp r3, #0 1b826: d005 beq.n 1b834 port_base->OUTSET.reg = pin_mask; 1b828: 3a20 subs r2, #32 1b82a: 4b9e ldr r3, [pc, #632] ; (1baa4 ) 1b82c: 619a str r2, [r3, #24] cmd_mode = false; 1b82e: 2200 movs r2, #0 1b830: 4b9d ldr r3, [pc, #628] ; (1baa8 ) 1b832: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b834: 2200 movs r2, #0 1b836: 4998 ldr r1, [pc, #608] ; (1ba98 ) 1b838: 4898 ldr r0, [pc, #608] ; (1ba9c ) 1b83a: 4b99 ldr r3, [pc, #612] ; (1baa0 ) 1b83c: 4798 blx r3 1b83e: 4b99 ldr r3, [pc, #612] ; (1baa4 ) 1b840: 2240 movs r2, #64 ; 0x40 1b842: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b844: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b846: 4b98 ldr r3, [pc, #608] ; (1baa8 ) 1b848: 781b ldrb r3, [r3, #0] 1b84a: 2b00 cmp r3, #0 1b84c: d005 beq.n 1b85a port_base->OUTSET.reg = pin_mask; 1b84e: 3a20 subs r2, #32 1b850: 4b94 ldr r3, [pc, #592] ; (1baa4 ) 1b852: 619a str r2, [r3, #24] cmd_mode = false; 1b854: 2200 movs r2, #0 1b856: 4b94 ldr r3, [pc, #592] ; (1baa8 ) 1b858: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b85a: 2200 movs r2, #0 1b85c: 498e ldr r1, [pc, #568] ; (1ba98 ) 1b85e: 488f ldr r0, [pc, #572] ; (1ba9c ) 1b860: 4b8f ldr r3, [pc, #572] ; (1baa0 ) 1b862: 4798 blx r3 1b864: 4b8f ldr r3, [pc, #572] ; (1baa4 ) 1b866: 2240 movs r2, #64 ; 0x40 1b868: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b86a: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b86c: 4b8e ldr r3, [pc, #568] ; (1baa8 ) 1b86e: 781b ldrb r3, [r3, #0] 1b870: 2b00 cmp r3, #0 1b872: d005 beq.n 1b880 port_base->OUTSET.reg = pin_mask; 1b874: 3a20 subs r2, #32 1b876: 4b8b ldr r3, [pc, #556] ; (1baa4 ) 1b878: 619a str r2, [r3, #24] cmd_mode = false; 1b87a: 2200 movs r2, #0 1b87c: 4b8a ldr r3, [pc, #552] ; (1baa8 ) 1b87e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b880: 2201 movs r2, #1 1b882: 4985 ldr r1, [pc, #532] ; (1ba98 ) 1b884: 4885 ldr r0, [pc, #532] ; (1ba9c ) 1b886: 4b86 ldr r3, [pc, #536] ; (1baa0 ) 1b888: 4798 blx r3 1b88a: 4b86 ldr r3, [pc, #536] ; (1baa4 ) 1b88c: 2240 movs r2, #64 ; 0x40 1b88e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b890: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b892: 4b85 ldr r3, [pc, #532] ; (1baa8 ) 1b894: 781b ldrb r3, [r3, #0] 1b896: 2b00 cmp r3, #0 1b898: d005 beq.n 1b8a6 port_base->OUTSET.reg = pin_mask; 1b89a: 3a20 subs r2, #32 1b89c: 4b81 ldr r3, [pc, #516] ; (1baa4 ) 1b89e: 619a str r2, [r3, #24] cmd_mode = false; 1b8a0: 2200 movs r2, #0 1b8a2: 4b81 ldr r3, [pc, #516] ; (1baa8 ) 1b8a4: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b8a6: 22df movs r2, #223 ; 0xdf 1b8a8: 497b ldr r1, [pc, #492] ; (1ba98 ) 1b8aa: 487c ldr r0, [pc, #496] ; (1ba9c ) 1b8ac: 4b7c ldr r3, [pc, #496] ; (1baa0 ) 1b8ae: 4798 blx r3 1b8b0: 4b7c ldr r3, [pc, #496] ; (1baa4 ) 1b8b2: 2240 movs r2, #64 ; 0x40 1b8b4: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b8b6: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b8b8: 4b7b ldr r3, [pc, #492] ; (1baa8 ) 1b8ba: 781b ldrb r3, [r3, #0] 1b8bc: 2b00 cmp r3, #0 1b8be: d105 bne.n 1b8cc 1b8c0: 3a20 subs r2, #32 1b8c2: 4b78 ldr r3, [pc, #480] ; (1baa4 ) 1b8c4: 615a str r2, [r3, #20] cmd_mode = true; 1b8c6: 3a1f subs r2, #31 1b8c8: 4b77 ldr r3, [pc, #476] ; (1baa8 ) 1b8ca: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b8cc: 222b movs r2, #43 ; 0x2b 1b8ce: 4972 ldr r1, [pc, #456] ; (1ba98 ) 1b8d0: 4872 ldr r0, [pc, #456] ; (1ba9c ) 1b8d2: 4b73 ldr r3, [pc, #460] ; (1baa0 ) 1b8d4: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b8d6: 4b73 ldr r3, [pc, #460] ; (1baa4 ) 1b8d8: 2240 movs r2, #64 ; 0x40 1b8da: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b8dc: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b8de: 4b72 ldr r3, [pc, #456] ; (1baa8 ) 1b8e0: 781b ldrb r3, [r3, #0] 1b8e2: 2b00 cmp r3, #0 1b8e4: d005 beq.n 1b8f2 port_base->OUTSET.reg = pin_mask; 1b8e6: 3a20 subs r2, #32 1b8e8: 4b6e ldr r3, [pc, #440] ; (1baa4 ) 1b8ea: 619a str r2, [r3, #24] cmd_mode = false; 1b8ec: 2200 movs r2, #0 1b8ee: 4b6e ldr r3, [pc, #440] ; (1baa8 ) 1b8f0: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b8f2: 2200 movs r2, #0 1b8f4: 4968 ldr r1, [pc, #416] ; (1ba98 ) 1b8f6: 4869 ldr r0, [pc, #420] ; (1ba9c ) 1b8f8: 4b69 ldr r3, [pc, #420] ; (1baa0 ) 1b8fa: 4798 blx r3 1b8fc: 4b69 ldr r3, [pc, #420] ; (1baa4 ) 1b8fe: 2240 movs r2, #64 ; 0x40 1b900: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b902: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b904: 4b68 ldr r3, [pc, #416] ; (1baa8 ) 1b906: 781b ldrb r3, [r3, #0] 1b908: 2b00 cmp r3, #0 1b90a: d005 beq.n 1b918 port_base->OUTSET.reg = pin_mask; 1b90c: 3a20 subs r2, #32 1b90e: 4b65 ldr r3, [pc, #404] ; (1baa4 ) 1b910: 619a str r2, [r3, #24] cmd_mode = false; 1b912: 2200 movs r2, #0 1b914: 4b64 ldr r3, [pc, #400] ; (1baa8 ) 1b916: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b918: 2200 movs r2, #0 1b91a: 495f ldr r1, [pc, #380] ; (1ba98 ) 1b91c: 485f ldr r0, [pc, #380] ; (1ba9c ) 1b91e: 4b60 ldr r3, [pc, #384] ; (1baa0 ) 1b920: 4798 blx r3 1b922: 4b60 ldr r3, [pc, #384] ; (1baa4 ) 1b924: 2240 movs r2, #64 ; 0x40 1b926: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b928: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b92a: 4b5f ldr r3, [pc, #380] ; (1baa8 ) 1b92c: 781b ldrb r3, [r3, #0] 1b92e: 2b00 cmp r3, #0 1b930: d005 beq.n 1b93e port_base->OUTSET.reg = pin_mask; 1b932: 3a20 subs r2, #32 1b934: 4b5b ldr r3, [pc, #364] ; (1baa4 ) 1b936: 619a str r2, [r3, #24] cmd_mode = false; 1b938: 2200 movs r2, #0 1b93a: 4b5b ldr r3, [pc, #364] ; (1baa8 ) 1b93c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b93e: 2201 movs r2, #1 1b940: 4955 ldr r1, [pc, #340] ; (1ba98 ) 1b942: 4856 ldr r0, [pc, #344] ; (1ba9c ) 1b944: 4b56 ldr r3, [pc, #344] ; (1baa0 ) 1b946: 4798 blx r3 1b948: 4b56 ldr r3, [pc, #344] ; (1baa4 ) 1b94a: 2240 movs r2, #64 ; 0x40 1b94c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b94e: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b950: 4b55 ldr r3, [pc, #340] ; (1baa8 ) 1b952: 781b ldrb r3, [r3, #0] 1b954: 2b00 cmp r3, #0 1b956: d005 beq.n 1b964 port_base->OUTSET.reg = pin_mask; 1b958: 3a20 subs r2, #32 1b95a: 4b52 ldr r3, [pc, #328] ; (1baa4 ) 1b95c: 619a str r2, [r3, #24] cmd_mode = false; 1b95e: 2200 movs r2, #0 1b960: 4b51 ldr r3, [pc, #324] ; (1baa8 ) 1b962: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b964: 220f movs r2, #15 1b966: 494c ldr r1, [pc, #304] ; (1ba98 ) 1b968: 484c ldr r0, [pc, #304] ; (1ba9c ) 1b96a: 4b4d ldr r3, [pc, #308] ; (1baa0 ) 1b96c: 4798 blx r3 1b96e: 4b4d ldr r3, [pc, #308] ; (1baa4 ) 1b970: 2240 movs r2, #64 ; 0x40 1b972: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b974: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b976: 4b4c ldr r3, [pc, #304] ; (1baa8 ) 1b978: 781b ldrb r3, [r3, #0] 1b97a: 2b00 cmp r3, #0 1b97c: d105 bne.n 1b98a 1b97e: 3a20 subs r2, #32 1b980: 4b48 ldr r3, [pc, #288] ; (1baa4 ) 1b982: 615a str r2, [r3, #20] cmd_mode = true; 1b984: 3a1f subs r2, #31 1b986: 4b48 ldr r3, [pc, #288] ; (1baa8 ) 1b988: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b98a: 2229 movs r2, #41 ; 0x29 1b98c: 4942 ldr r1, [pc, #264] ; (1ba98 ) 1b98e: 4843 ldr r0, [pc, #268] ; (1ba9c ) 1b990: 4b43 ldr r3, [pc, #268] ; (1baa0 ) 1b992: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b994: 4b43 ldr r3, [pc, #268] ; (1baa4 ) 1b996: 2240 movs r2, #64 ; 0x40 1b998: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b99a: 615a str r2, [r3, #20] if(cmd_mode == false) { 1b99c: 4b42 ldr r3, [pc, #264] ; (1baa8 ) 1b99e: 781b ldrb r3, [r3, #0] 1b9a0: 2b00 cmp r3, #0 1b9a2: d105 bne.n 1b9b0 1b9a4: 3a20 subs r2, #32 1b9a6: 4b3f ldr r3, [pc, #252] ; (1baa4 ) 1b9a8: 615a str r2, [r3, #20] cmd_mode = true; 1b9aa: 3a1f subs r2, #31 1b9ac: 4b3e ldr r3, [pc, #248] ; (1baa8 ) 1b9ae: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1b9b0: 22be movs r2, #190 ; 0xbe 1b9b2: 4939 ldr r1, [pc, #228] ; (1ba98 ) 1b9b4: 4839 ldr r0, [pc, #228] ; (1ba9c ) 1b9b6: 4b3a ldr r3, [pc, #232] ; (1baa0 ) 1b9b8: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1b9ba: 4b3a ldr r3, [pc, #232] ; (1baa4 ) 1b9bc: 2240 movs r2, #64 ; 0x40 1b9be: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b9c0: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b9c2: 4b39 ldr r3, [pc, #228] ; (1baa8 ) 1b9c4: 781b ldrb r3, [r3, #0] 1b9c6: 2b00 cmp r3, #0 1b9c8: d005 beq.n 1b9d6 port_base->OUTSET.reg = pin_mask; 1b9ca: 3a20 subs r2, #32 1b9cc: 4b35 ldr r3, [pc, #212] ; (1baa4 ) 1b9ce: 619a str r2, [r3, #24] cmd_mode = false; 1b9d0: 2200 movs r2, #0 1b9d2: 4b35 ldr r3, [pc, #212] ; (1baa8 ) 1b9d4: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b9d6: 2206 movs r2, #6 1b9d8: 492f ldr r1, [pc, #188] ; (1ba98 ) 1b9da: 4830 ldr r0, [pc, #192] ; (1ba9c ) 1b9dc: 4b30 ldr r3, [pc, #192] ; (1baa0 ) 1b9de: 4798 blx r3 1b9e0: 4b30 ldr r3, [pc, #192] ; (1baa4 ) 1b9e2: 2240 movs r2, #64 ; 0x40 1b9e4: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1b9e6: 615a str r2, [r3, #20] if(cmd_mode != false) { 1b9e8: 4b2f ldr r3, [pc, #188] ; (1baa8 ) 1b9ea: 781b ldrb r3, [r3, #0] 1b9ec: 2b00 cmp r3, #0 1b9ee: d005 beq.n 1b9fc port_base->OUTSET.reg = pin_mask; 1b9f0: 3a20 subs r2, #32 1b9f2: 4b2c ldr r3, [pc, #176] ; (1baa4 ) 1b9f4: 619a str r2, [r3, #24] cmd_mode = false; 1b9f6: 2200 movs r2, #0 1b9f8: 4b2b ldr r3, [pc, #172] ; (1baa8 ) 1b9fa: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1b9fc: 22ff movs r2, #255 ; 0xff 1b9fe: 4926 ldr r1, [pc, #152] ; (1ba98 ) 1ba00: 4826 ldr r0, [pc, #152] ; (1ba9c ) 1ba02: 4b27 ldr r3, [pc, #156] ; (1baa0 ) 1ba04: 4798 blx r3 1ba06: 4b27 ldr r3, [pc, #156] ; (1baa4 ) 1ba08: 2240 movs r2, #64 ; 0x40 1ba0a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1ba0c: 615a str r2, [r3, #20] if(cmd_mode != false) { 1ba0e: 4b26 ldr r3, [pc, #152] ; (1baa8 ) 1ba10: 781b ldrb r3, [r3, #0] 1ba12: 2b00 cmp r3, #0 1ba14: d005 beq.n 1ba22 port_base->OUTSET.reg = pin_mask; 1ba16: 3a20 subs r2, #32 1ba18: 4b22 ldr r3, [pc, #136] ; (1baa4 ) 1ba1a: 619a str r2, [r3, #24] cmd_mode = false; 1ba1c: 2200 movs r2, #0 1ba1e: 4b22 ldr r3, [pc, #136] ; (1baa8 ) 1ba20: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1ba22: 2201 movs r2, #1 1ba24: 491c ldr r1, [pc, #112] ; (1ba98 ) 1ba26: 481d ldr r0, [pc, #116] ; (1ba9c ) 1ba28: 4b1d ldr r3, [pc, #116] ; (1baa0 ) 1ba2a: 4798 blx r3 1ba2c: 4b1d ldr r3, [pc, #116] ; (1baa4 ) 1ba2e: 2240 movs r2, #64 ; 0x40 1ba30: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1ba32: 615a str r2, [r3, #20] if(cmd_mode != false) { 1ba34: 4b1c ldr r3, [pc, #112] ; (1baa8 ) 1ba36: 781b ldrb r3, [r3, #0] 1ba38: 2b00 cmp r3, #0 1ba3a: d005 beq.n 1ba48 port_base->OUTSET.reg = pin_mask; 1ba3c: 3a20 subs r2, #32 1ba3e: 4b19 ldr r3, [pc, #100] ; (1baa4 ) 1ba40: 619a str r2, [r3, #24] cmd_mode = false; 1ba42: 2200 movs r2, #0 1ba44: 4b18 ldr r3, [pc, #96] ; (1baa8 ) 1ba46: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1ba48: 22ff movs r2, #255 ; 0xff 1ba4a: 4913 ldr r1, [pc, #76] ; (1ba98 ) 1ba4c: 4813 ldr r0, [pc, #76] ; (1ba9c ) 1ba4e: 4b14 ldr r3, [pc, #80] ; (1baa0 ) 1ba50: 4798 blx r3 1ba52: 4b14 ldr r3, [pc, #80] ; (1baa4 ) 1ba54: 2240 movs r2, #64 ; 0x40 1ba56: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1ba58: 615a str r2, [r3, #20] if(cmd_mode != false) { 1ba5a: 4b13 ldr r3, [pc, #76] ; (1baa8 ) 1ba5c: 781b ldrb r3, [r3, #0] 1ba5e: 2b00 cmp r3, #0 1ba60: d005 beq.n 1ba6e port_base->OUTSET.reg = pin_mask; 1ba62: 3a20 subs r2, #32 1ba64: 4b0f ldr r3, [pc, #60] ; (1baa4 ) 1ba66: 619a str r2, [r3, #24] cmd_mode = false; 1ba68: 2200 movs r2, #0 1ba6a: 4b0f ldr r3, [pc, #60] ; (1baa8 ) 1ba6c: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1ba6e: 2200 movs r2, #0 1ba70: 4909 ldr r1, [pc, #36] ; (1ba98 ) 1ba72: 480a ldr r0, [pc, #40] ; (1ba9c ) 1ba74: 4b0a ldr r3, [pc, #40] ; (1baa0 ) 1ba76: 4798 blx r3 1ba78: 4b0a ldr r3, [pc, #40] ; (1baa4 ) 1ba7a: 2240 movs r2, #64 ; 0x40 1ba7c: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1ba7e: 615a str r2, [r3, #20] if(cmd_mode != false) { 1ba80: 4b09 ldr r3, [pc, #36] ; (1baa8 ) 1ba82: 781b ldrb r3, [r3, #0] 1ba84: 2b00 cmp r3, #0 1ba86: d011 beq.n 1baac port_base->OUTSET.reg = pin_mask; 1ba88: 3a20 subs r2, #32 1ba8a: 4b06 ldr r3, [pc, #24] ; (1baa4 ) 1ba8c: 619a str r2, [r3, #24] cmd_mode = false; 1ba8e: 2200 movs r2, #0 1ba90: 4b05 ldr r3, [pc, #20] ; (1baa8 ) 1ba92: 701a strb r2, [r3, #0] 1ba94: e00a b.n 1baac 1ba96: 46c0 nop ; (mov r8, r8) 1ba98: 0000ffff .word 0x0000ffff 1ba9c: 41004480 .word 0x41004480 1baa0: 0001be6d .word 0x0001be6d 1baa4: 41004400 .word 0x41004400 1baa8: 2000006c .word 0x2000006c LV_DRV_DISP_PAR_WR_WORD(data); 1baac: 2201 movs r2, #1 1baae: 4907 ldr r1, [pc, #28] ; (1bacc ) 1bab0: 4807 ldr r0, [pc, #28] ; (1bad0 ) 1bab2: 4b08 ldr r3, [pc, #32] ; (1bad4 ) 1bab4: 4798 blx r3 1bab6: 4b08 ldr r3, [pc, #32] ; (1bad8 ) 1bab8: 2240 movs r2, #64 ; 0x40 1baba: 619a str r2, [r3, #24] 1babc: 619a str r2, [r3, #24] } 1babe: bc3c pop {r2, r3, r4, r5} 1bac0: 4690 mov r8, r2 1bac2: 4699 mov r9, r3 1bac4: 46a2 mov sl, r4 1bac6: 46ab mov fp, r5 1bac8: bdf8 pop {r3, r4, r5, r6, r7, pc} 1baca: 46c0 nop ; (mov r8, r8) 1bacc: 0000ffff .word 0x0000ffff 1bad0: 41004480 .word 0x41004480 1bad4: 0001be6d .word 0x0001be6d 1bad8: 41004400 .word 0x41004400 0001badc : { 1badc: b5f0 push {r4, r5, r6, r7, lr} 1bade: 46de mov lr, fp 1bae0: 4657 mov r7, sl 1bae2: 464e mov r6, r9 1bae4: 4645 mov r5, r8 1bae6: b5e0 push {r5, r6, r7, lr} 1bae8: b083 sub sp, #12 1baea: 9000 str r0, [sp, #0] 1baec: 000f movs r7, r1 1baee: 0016 movs r6, r2 if(area->x2 < 0) return; 1baf0: 2204 movs r2, #4 1baf2: 5e8b ldrsh r3, [r1, r2] 1baf4: 2b00 cmp r3, #0 1baf6: db0c blt.n 1bb12 if(area->y2 < 0) return; 1baf8: 2206 movs r2, #6 1bafa: 5e8b ldrsh r3, [r1, r2] 1bafc: 2b00 cmp r3, #0 1bafe: db08 blt.n 1bb12 if(area->x1 > SSD1963_HOR_RES - 1) return; 1bb00: 2300 movs r3, #0 1bb02: 5ecc ldrsh r4, [r1, r3] 1bb04: 4bb3 ldr r3, [pc, #716] ; (1bdd4 ) 1bb06: 4798 blx r3 1bb08: 4bb3 ldr r3, [pc, #716] ; (1bdd8 ) 1bb0a: 4798 blx r3 1bb0c: 3801 subs r0, #1 1bb0e: 4284 cmp r4, r0 1bb10: dd06 ble.n 1bb20 } 1bb12: b003 add sp, #12 1bb14: bc3c pop {r2, r3, r4, r5} 1bb16: 4690 mov r8, r2 1bb18: 4699 mov r9, r3 1bb1a: 46a2 mov sl, r4 1bb1c: 46ab mov fp, r5 1bb1e: bdf0 pop {r4, r5, r6, r7, pc} if(area->y1 > SSD1963_VER_RES - 1) return; 1bb20: 2302 movs r3, #2 1bb22: 5efc ldrsh r4, [r7, r3] 1bb24: 4bab ldr r3, [pc, #684] ; (1bdd4 ) 1bb26: 4798 blx r3 1bb28: 4bac ldr r3, [pc, #688] ; (1bddc ) 1bb2a: 4798 blx r3 1bb2c: 3801 subs r0, #1 1bb2e: 4284 cmp r4, r0 1bb30: dcef bgt.n 1bb12 int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 1bb32: 883b ldrh r3, [r7, #0] 1bb34: 1c1d adds r5, r3, #0 1bb36: b21b sxth r3, r3 1bb38: 2b00 cmp r3, #0 1bb3a: da00 bge.n 1bb3e 1bb3c: e138 b.n 1bdb0 1bb3e: b22b sxth r3, r5 1bb40: 4699 mov r9, r3 int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 1bb42: 887b ldrh r3, [r7, #2] 1bb44: 1c1c adds r4, r3, #0 1bb46: b21b sxth r3, r3 1bb48: 2b00 cmp r3, #0 1bb4a: da00 bge.n 1bb4e 1bb4c: e132 b.n 1bdb4 1bb4e: b224 sxth r4, r4 1bb50: 46a3 mov fp, r4 int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 1bb52: 2304 movs r3, #4 1bb54: 5efd ldrsh r5, [r7, r3] 1bb56: 4b9f ldr r3, [pc, #636] ; (1bdd4 ) 1bb58: 4798 blx r3 1bb5a: 4b9f ldr r3, [pc, #636] ; (1bdd8 ) 1bb5c: 4798 blx r3 1bb5e: 3801 subs r0, #1 1bb60: 4285 cmp r5, r0 1bb62: dd00 ble.n 1bb66 1bb64: e128 b.n 1bdb8 1bb66: 2304 movs r3, #4 1bb68: 5efd ldrsh r5, [r7, r3] int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 1bb6a: 2206 movs r2, #6 1bb6c: 5ebb ldrsh r3, [r7, r2] 1bb6e: 469a mov sl, r3 1bb70: 4b98 ldr r3, [pc, #608] ; (1bdd4 ) 1bb72: 4798 blx r3 1bb74: 4b99 ldr r3, [pc, #612] ; (1bddc ) 1bb76: 4798 blx r3 1bb78: 3801 subs r0, #1 1bb7a: 4582 cmp sl, r0 1bb7c: dd00 ble.n 1bb80 1bb7e: e121 b.n 1bdc4 1bb80: 2206 movs r2, #6 1bb82: 5ebb ldrsh r3, [r7, r2] 1bb84: 469a mov sl, r3 port_base->OUTCLR.reg = pin_mask; 1bb86: 2240 movs r2, #64 ; 0x40 1bb88: 4b95 ldr r3, [pc, #596] ; (1bde0 ) 1bb8a: 615a str r2, [r3, #20] if(cmd_mode == false) { 1bb8c: 4b95 ldr r3, [pc, #596] ; (1bde4 ) 1bb8e: 781b ldrb r3, [r3, #0] 1bb90: 2b00 cmp r3, #0 1bb92: d105 bne.n 1bba0 1bb94: 3a20 subs r2, #32 1bb96: 4b92 ldr r3, [pc, #584] ; (1bde0 ) 1bb98: 615a str r2, [r3, #20] cmd_mode = true; 1bb9a: 3a1f subs r2, #31 1bb9c: 4b91 ldr r3, [pc, #580] ; (1bde4 ) 1bb9e: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1bba0: 222a movs r2, #42 ; 0x2a 1bba2: 4991 ldr r1, [pc, #580] ; (1bde8 ) 1bba4: 4891 ldr r0, [pc, #580] ; (1bdec ) 1bba6: 4b92 ldr r3, [pc, #584] ; (1bdf0 ) 1bba8: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1bbaa: 4b8d ldr r3, [pc, #564] ; (1bde0 ) 1bbac: 2140 movs r1, #64 ; 0x40 1bbae: 6199 str r1, [r3, #24] ssd1963_data(act_x1 >> 8); 1bbb0: 464a mov r2, r9 1bbb2: 1212 asrs r2, r2, #8 1bbb4: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1bbb6: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bbb8: 4b8a ldr r3, [pc, #552] ; (1bde4 ) 1bbba: 781b ldrb r3, [r3, #0] 1bbbc: 2b00 cmp r3, #0 1bbbe: d005 beq.n 1bbcc port_base->OUTSET.reg = pin_mask; 1bbc0: 3920 subs r1, #32 1bbc2: 4b87 ldr r3, [pc, #540] ; (1bde0 ) 1bbc4: 6199 str r1, [r3, #24] cmd_mode = false; 1bbc6: 2100 movs r1, #0 1bbc8: 4b86 ldr r3, [pc, #536] ; (1bde4 ) 1bbca: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bbcc: 4986 ldr r1, [pc, #536] ; (1bde8 ) 1bbce: 4887 ldr r0, [pc, #540] ; (1bdec ) 1bbd0: 4b87 ldr r3, [pc, #540] ; (1bdf0 ) 1bbd2: 4798 blx r3 1bbd4: 4b82 ldr r3, [pc, #520] ; (1bde0 ) 1bbd6: 2140 movs r1, #64 ; 0x40 1bbd8: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_x1); 1bbda: 464a mov r2, r9 1bbdc: 4668 mov r0, sp 1bbde: 8082 strh r2, [r0, #4] 1bbe0: 8882 ldrh r2, [r0, #4] 1bbe2: 4691 mov r9, r2 1bbe4: 22ff movs r2, #255 ; 0xff 1bbe6: 4648 mov r0, r9 1bbe8: 4002 ands r2, r0 port_base->OUTCLR.reg = pin_mask; 1bbea: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bbec: 4b7d ldr r3, [pc, #500] ; (1bde4 ) 1bbee: 781b ldrb r3, [r3, #0] 1bbf0: 2b00 cmp r3, #0 1bbf2: d005 beq.n 1bc00 port_base->OUTSET.reg = pin_mask; 1bbf4: 3920 subs r1, #32 1bbf6: 4b7a ldr r3, [pc, #488] ; (1bde0 ) 1bbf8: 6199 str r1, [r3, #24] cmd_mode = false; 1bbfa: 2100 movs r1, #0 1bbfc: 4b79 ldr r3, [pc, #484] ; (1bde4 ) 1bbfe: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bc00: 4979 ldr r1, [pc, #484] ; (1bde8 ) 1bc02: 487a ldr r0, [pc, #488] ; (1bdec ) 1bc04: 4b7a ldr r3, [pc, #488] ; (1bdf0 ) 1bc06: 4798 blx r3 1bc08: 4b75 ldr r3, [pc, #468] ; (1bde0 ) 1bc0a: 2140 movs r1, #64 ; 0x40 1bc0c: 6199 str r1, [r3, #24] ssd1963_data(act_x2 >> 8); 1bc0e: 122a asrs r2, r5, #8 1bc10: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1bc12: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bc14: 4b73 ldr r3, [pc, #460] ; (1bde4 ) 1bc16: 781b ldrb r3, [r3, #0] 1bc18: 2b00 cmp r3, #0 1bc1a: d005 beq.n 1bc28 port_base->OUTSET.reg = pin_mask; 1bc1c: 3920 subs r1, #32 1bc1e: 4b70 ldr r3, [pc, #448] ; (1bde0 ) 1bc20: 6199 str r1, [r3, #24] cmd_mode = false; 1bc22: 2100 movs r1, #0 1bc24: 4b6f ldr r3, [pc, #444] ; (1bde4 ) 1bc26: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bc28: 496f ldr r1, [pc, #444] ; (1bde8 ) 1bc2a: 4870 ldr r0, [pc, #448] ; (1bdec ) 1bc2c: 4b70 ldr r3, [pc, #448] ; (1bdf0 ) 1bc2e: 4798 blx r3 1bc30: 4b6b ldr r3, [pc, #428] ; (1bde0 ) 1bc32: 2140 movs r1, #64 ; 0x40 1bc34: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_x2); 1bc36: b2ad uxth r5, r5 1bc38: 22ff movs r2, #255 ; 0xff 1bc3a: 402a ands r2, r5 port_base->OUTCLR.reg = pin_mask; 1bc3c: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bc3e: 4b69 ldr r3, [pc, #420] ; (1bde4 ) 1bc40: 781b ldrb r3, [r3, #0] 1bc42: 2b00 cmp r3, #0 1bc44: d005 beq.n 1bc52 port_base->OUTSET.reg = pin_mask; 1bc46: 3920 subs r1, #32 1bc48: 4b65 ldr r3, [pc, #404] ; (1bde0 ) 1bc4a: 6199 str r1, [r3, #24] cmd_mode = false; 1bc4c: 2100 movs r1, #0 1bc4e: 4b65 ldr r3, [pc, #404] ; (1bde4 ) 1bc50: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bc52: 4965 ldr r1, [pc, #404] ; (1bde8 ) 1bc54: 4865 ldr r0, [pc, #404] ; (1bdec ) 1bc56: 4b66 ldr r3, [pc, #408] ; (1bdf0 ) 1bc58: 4798 blx r3 1bc5a: 4b61 ldr r3, [pc, #388] ; (1bde0 ) 1bc5c: 2240 movs r2, #64 ; 0x40 1bc5e: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1bc60: 615a str r2, [r3, #20] if(cmd_mode == false) { 1bc62: 4b60 ldr r3, [pc, #384] ; (1bde4 ) 1bc64: 781b ldrb r3, [r3, #0] 1bc66: 2b00 cmp r3, #0 1bc68: d105 bne.n 1bc76 1bc6a: 3a20 subs r2, #32 1bc6c: 4b5c ldr r3, [pc, #368] ; (1bde0 ) 1bc6e: 615a str r2, [r3, #20] cmd_mode = true; 1bc70: 3a1f subs r2, #31 1bc72: 4b5c ldr r3, [pc, #368] ; (1bde4 ) 1bc74: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1bc76: 222b movs r2, #43 ; 0x2b 1bc78: 495b ldr r1, [pc, #364] ; (1bde8 ) 1bc7a: 485c ldr r0, [pc, #368] ; (1bdec ) 1bc7c: 4b5c ldr r3, [pc, #368] ; (1bdf0 ) 1bc7e: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1bc80: 4b57 ldr r3, [pc, #348] ; (1bde0 ) 1bc82: 2140 movs r1, #64 ; 0x40 1bc84: 6199 str r1, [r3, #24] ssd1963_data(act_y1 >> 8); 1bc86: 465a mov r2, fp 1bc88: 1212 asrs r2, r2, #8 1bc8a: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1bc8c: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bc8e: 4b55 ldr r3, [pc, #340] ; (1bde4 ) 1bc90: 781b ldrb r3, [r3, #0] 1bc92: 2b00 cmp r3, #0 1bc94: d005 beq.n 1bca2 port_base->OUTSET.reg = pin_mask; 1bc96: 3920 subs r1, #32 1bc98: 4b51 ldr r3, [pc, #324] ; (1bde0 ) 1bc9a: 6199 str r1, [r3, #24] cmd_mode = false; 1bc9c: 2100 movs r1, #0 1bc9e: 4b51 ldr r3, [pc, #324] ; (1bde4 ) 1bca0: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bca2: 4951 ldr r1, [pc, #324] ; (1bde8 ) 1bca4: 4851 ldr r0, [pc, #324] ; (1bdec ) 1bca6: 4b52 ldr r3, [pc, #328] ; (1bdf0 ) 1bca8: 4798 blx r3 1bcaa: 4b4d ldr r3, [pc, #308] ; (1bde0 ) 1bcac: 2140 movs r1, #64 ; 0x40 1bcae: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_y1); 1bcb0: 22ff movs r2, #255 ; 0xff 1bcb2: 4022 ands r2, r4 port_base->OUTCLR.reg = pin_mask; 1bcb4: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bcb6: 4b4b ldr r3, [pc, #300] ; (1bde4 ) 1bcb8: 781b ldrb r3, [r3, #0] 1bcba: 2b00 cmp r3, #0 1bcbc: d005 beq.n 1bcca port_base->OUTSET.reg = pin_mask; 1bcbe: 3920 subs r1, #32 1bcc0: 4b47 ldr r3, [pc, #284] ; (1bde0 ) 1bcc2: 6199 str r1, [r3, #24] cmd_mode = false; 1bcc4: 2100 movs r1, #0 1bcc6: 4b47 ldr r3, [pc, #284] ; (1bde4 ) 1bcc8: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bcca: 4947 ldr r1, [pc, #284] ; (1bde8 ) 1bccc: 4847 ldr r0, [pc, #284] ; (1bdec ) 1bcce: 4b48 ldr r3, [pc, #288] ; (1bdf0 ) 1bcd0: 4798 blx r3 1bcd2: 4b43 ldr r3, [pc, #268] ; (1bde0 ) 1bcd4: 2140 movs r1, #64 ; 0x40 1bcd6: 6199 str r1, [r3, #24] ssd1963_data(act_y2 >> 8); 1bcd8: 4652 mov r2, sl 1bcda: 1212 asrs r2, r2, #8 1bcdc: b292 uxth r2, r2 port_base->OUTCLR.reg = pin_mask; 1bcde: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bce0: 4b40 ldr r3, [pc, #256] ; (1bde4 ) 1bce2: 781b ldrb r3, [r3, #0] 1bce4: 2b00 cmp r3, #0 1bce6: d005 beq.n 1bcf4 port_base->OUTSET.reg = pin_mask; 1bce8: 3920 subs r1, #32 1bcea: 4b3d ldr r3, [pc, #244] ; (1bde0 ) 1bcec: 6199 str r1, [r3, #24] cmd_mode = false; 1bcee: 2100 movs r1, #0 1bcf0: 4b3c ldr r3, [pc, #240] ; (1bde4 ) 1bcf2: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bcf4: 493c ldr r1, [pc, #240] ; (1bde8 ) 1bcf6: 483d ldr r0, [pc, #244] ; (1bdec ) 1bcf8: 4b3d ldr r3, [pc, #244] ; (1bdf0 ) 1bcfa: 4798 blx r3 1bcfc: 4b38 ldr r3, [pc, #224] ; (1bde0 ) 1bcfe: 2140 movs r1, #64 ; 0x40 1bd00: 6199 str r1, [r3, #24] ssd1963_data(0x00FF & act_y2); 1bd02: 22ff movs r2, #255 ; 0xff 1bd04: 4650 mov r0, sl 1bd06: 4002 ands r2, r0 port_base->OUTCLR.reg = pin_mask; 1bd08: 6159 str r1, [r3, #20] if(cmd_mode != false) { 1bd0a: 4b36 ldr r3, [pc, #216] ; (1bde4 ) 1bd0c: 781b ldrb r3, [r3, #0] 1bd0e: 2b00 cmp r3, #0 1bd10: d005 beq.n 1bd1e port_base->OUTSET.reg = pin_mask; 1bd12: 3920 subs r1, #32 1bd14: 4b32 ldr r3, [pc, #200] ; (1bde0 ) 1bd16: 6199 str r1, [r3, #24] cmd_mode = false; 1bd18: 2100 movs r1, #0 1bd1a: 4b32 ldr r3, [pc, #200] ; (1bde4 ) 1bd1c: 7019 strb r1, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(data); 1bd1e: 4932 ldr r1, [pc, #200] ; (1bde8 ) 1bd20: 4832 ldr r0, [pc, #200] ; (1bdec ) 1bd22: 4b33 ldr r3, [pc, #204] ; (1bdf0 ) 1bd24: 4798 blx r3 1bd26: 4b2e ldr r3, [pc, #184] ; (1bde0 ) 1bd28: 2240 movs r2, #64 ; 0x40 1bd2a: 619a str r2, [r3, #24] port_base->OUTCLR.reg = pin_mask; 1bd2c: 615a str r2, [r3, #20] if(cmd_mode == false) { 1bd2e: 4b2d ldr r3, [pc, #180] ; (1bde4 ) 1bd30: 781b ldrb r3, [r3, #0] 1bd32: 2b00 cmp r3, #0 1bd34: d105 bne.n 1bd42 1bd36: 3a20 subs r2, #32 1bd38: 4b29 ldr r3, [pc, #164] ; (1bde0 ) 1bd3a: 615a str r2, [r3, #20] cmd_mode = true; 1bd3c: 3a1f subs r2, #31 1bd3e: 4b29 ldr r3, [pc, #164] ; (1bde4 ) 1bd40: 701a strb r2, [r3, #0] LV_DRV_DISP_PAR_WR_WORD(cmd); 1bd42: 222c movs r2, #44 ; 0x2c 1bd44: 4928 ldr r1, [pc, #160] ; (1bde8 ) 1bd46: 4829 ldr r0, [pc, #164] ; (1bdec ) 1bd48: 4b29 ldr r3, [pc, #164] ; (1bdf0 ) 1bd4a: 4798 blx r3 port_base->OUTSET.reg = pin_mask; 1bd4c: 2240 movs r2, #64 ; 0x40 1bd4e: 4b24 ldr r3, [pc, #144] ; (1bde0 ) 1bd50: 619a str r2, [r3, #24] uint16_t full_w = area->x2 - area->x1 + 1; 1bd52: 88bb ldrh r3, [r7, #4] 1bd54: 3301 adds r3, #1 1bd56: 883a ldrh r2, [r7, #0] 1bd58: 1a9b subs r3, r3, r2 1bd5a: b29f uxth r7, r3 if(cmd_mode != false) { 1bd5c: 4a21 ldr r2, [pc, #132] ; (1bde4 ) 1bd5e: 7812 ldrb r2, [r2, #0] 1bd60: 2a00 cmp r2, #0 1bd62: d005 beq.n 1bd70 1bd64: 2120 movs r1, #32 1bd66: 4a1e ldr r2, [pc, #120] ; (1bde0 ) 1bd68: 6191 str r1, [r2, #24] cmd_mode = false; 1bd6a: 2100 movs r1, #0 1bd6c: 4a1d ldr r2, [pc, #116] ; (1bde4 ) 1bd6e: 7011 strb r1, [r2, #0] port_base->OUTCLR.reg = pin_mask; 1bd70: 2140 movs r1, #64 ; 0x40 1bd72: 4a1b ldr r2, [pc, #108] ; (1bde0 ) 1bd74: 6151 str r1, [r2, #20] uint16_t act_w = act_x2 - act_x1 + 1; 1bd76: 464b mov r3, r9 1bd78: 1aed subs r5, r5, r3 1bd7a: 3501 adds r5, #1 1bd7c: b2ad uxth r5, r5 for(i = act_y1; i <= act_y2; i++) { 1bd7e: 45da cmp sl, fp 1bd80: db0f blt.n 1bda2 color_p += full_w; 1bd82: 007f lsls r7, r7, #1 LV_DRV_DISP_PAR_WR_ARRAY((uint16_t *)color_p, act_w); 1bd84: 4b1b ldr r3, [pc, #108] ; (1bdf4 ) 1bd86: 4698 mov r8, r3 1bd88: 9501 str r5, [sp, #4] 1bd8a: 003d movs r5, r7 1bd8c: 4657 mov r7, sl 1bd8e: 9b01 ldr r3, [sp, #4] 1bd90: 0032 movs r2, r6 1bd92: 4915 ldr r1, [pc, #84] ; (1bde8 ) 1bd94: 4815 ldr r0, [pc, #84] ; (1bdec ) 1bd96: 47c0 blx r8 color_p += full_w; 1bd98: 1976 adds r6, r6, r5 1bd9a: 3401 adds r4, #1 1bd9c: b224 sxth r4, r4 for(i = act_y1; i <= act_y2; i++) { 1bd9e: 42a7 cmp r7, r4 1bda0: daf5 bge.n 1bd8e port_base->OUTSET.reg = pin_mask; 1bda2: 2240 movs r2, #64 ; 0x40 1bda4: 4b0e ldr r3, [pc, #56] ; (1bde0 ) 1bda6: 619a str r2, [r3, #24] lv_disp_flush_ready(disp_drv); 1bda8: 9800 ldr r0, [sp, #0] 1bdaa: 4b13 ldr r3, [pc, #76] ; (1bdf8 ) 1bdac: 4798 blx r3 1bdae: e6b0 b.n 1bb12 int32_t act_x1 = area->x1 < 0 ? 0 : area->x1; 1bdb0: 2500 movs r5, #0 1bdb2: e6c4 b.n 1bb3e int32_t act_y1 = area->y1 < 0 ? 0 : area->y1; 1bdb4: 2400 movs r4, #0 1bdb6: e6ca b.n 1bb4e int32_t act_x2 = area->x2 > SSD1963_HOR_RES - 1 ? SSD1963_HOR_RES - 1 : area->x2; 1bdb8: 4b06 ldr r3, [pc, #24] ; (1bdd4 ) 1bdba: 4798 blx r3 1bdbc: 4b06 ldr r3, [pc, #24] ; (1bdd8 ) 1bdbe: 4798 blx r3 1bdc0: 1e45 subs r5, r0, #1 1bdc2: e6d2 b.n 1bb6a int32_t act_y2 = area->y2 > SSD1963_VER_RES - 1 ? SSD1963_VER_RES - 1 : area->y2; 1bdc4: 4b03 ldr r3, [pc, #12] ; (1bdd4 ) 1bdc6: 4798 blx r3 1bdc8: 4b04 ldr r3, [pc, #16] ; (1bddc ) 1bdca: 4798 blx r3 1bdcc: 1e43 subs r3, r0, #1 1bdce: 469a mov sl, r3 1bdd0: e6d9 b.n 1bb86 1bdd2: 46c0 nop ; (mov r8, r8) 1bdd4: 00010d75 .word 0x00010d75 1bdd8: 00010d81 .word 0x00010d81 1bddc: 00010da9 .word 0x00010da9 1bde0: 41004400 .word 0x41004400 1bde4: 2000006c .word 0x2000006c 1bde8: 0000ffff .word 0x0000ffff 1bdec: 41004480 .word 0x41004480 1bdf0: 0001be6d .word 0x0001be6d 1bdf4: 0001be8d .word 0x0001be8d 1bdf8: 00010e45 .word 0x00010e45 0001bdfc : #include "p_gpio.h" void p_gpio_init(void) { 1bdfc: b530 push {r4, r5, lr} 1bdfe: b083 sub sp, #12 config->powersave = false; 1be00: aa01 add r2, sp, #4 1be02: 2400 movs r4, #0 1be04: 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; 1be06: 2501 movs r5, #1 1be08: 7015 strb r5, [r2, #0] data_port_config.input_pull = SSD1963_TFT_DATA_PULL; 1be0a: 7054 strb r4, [r2, #1] port_group_set_config(SSD1963_TFT_DATA_PORT, SSD1963_TFT_DATA_MASK, &data_port_config); 1be0c: 4912 ldr r1, [pc, #72] ; (1be58 ) 1be0e: 4813 ldr r0, [pc, #76] ; (1be5c ) 1be10: 4b13 ldr r3, [pc, #76] ; (1be60 ) 1be12: 4798 blx r3 1be14: 466b mov r3, sp 1be16: 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_DOWN; 1be18: 2302 movs r3, #2 1be1a: 466a mov r2, sp 1be1c: 7053 strb r3, [r2, #1] ssd1963_ctrl_pins_conf.direction = PORT_PIN_DIR_OUTPUT; 1be1e: 7015 strb r5, [r2, #0] port_pin_set_config(SSD1963_TFT_nRST, &ssd1963_ctrl_pins_conf); 1be20: 4669 mov r1, sp 1be22: 2004 movs r0, #4 1be24: 4c0f ldr r4, [pc, #60] ; (1be64 ) 1be26: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_RSDC, &ssd1963_ctrl_pins_conf); 1be28: 4669 mov r1, sp 1be2a: 2005 movs r0, #5 1be2c: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_nCS, &ssd1963_ctrl_pins_conf); 1be2e: 4669 mov r1, sp 1be30: 2006 movs r0, #6 1be32: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_WR, &ssd1963_ctrl_pins_conf); 1be34: 4669 mov r1, sp 1be36: 2007 movs r0, #7 1be38: 47a0 blx r4 port_pin_set_config(SSD1963_TFT_RD, &ssd1963_ctrl_pins_conf); 1be3a: 4669 mov r1, sp 1be3c: 200a movs r0, #10 1be3e: 47a0 blx r4 port_base->OUTSET.reg = pin_mask; 1be40: 4b09 ldr r3, [pc, #36] ; (1be68 ) 1be42: 2210 movs r2, #16 1be44: 619a str r2, [r3, #24] 1be46: 3230 adds r2, #48 ; 0x30 1be48: 619a str r2, [r3, #24] 1be4a: 3240 adds r2, #64 ; 0x40 1be4c: 619a str r2, [r3, #24] 1be4e: 2280 movs r2, #128 ; 0x80 1be50: 00d2 lsls r2, r2, #3 1be52: 619a str r2, [r3, #24] port_pin_set_output_level(SSD1963_TFT_nRST, 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); } 1be54: b003 add sp, #12 1be56: bd30 pop {r4, r5, pc} 1be58: 0000ffff .word 0x0000ffff 1be5c: 41004480 .word 0x41004480 1be60: 00000e9d .word 0x00000e9d 1be64: 00000e79 .word 0x00000e79 1be68: 41004400 .word 0x41004400 0001be6c : void p_gpio_parallel_wr_word(PortGroup* group, uint32_t mask, uint16_t data) { 1be6c: b530 push {r4, r5, lr} port_base->OUTCLR.reg = pin_mask; 1be6e: 4b06 ldr r3, [pc, #24] ; (1be88 ) 1be70: 2440 movs r4, #64 ; 0x40 1be72: 615c str r4, [r3, #20] port->OUTSET.reg = (mask & level_mask); 1be74: 000d movs r5, r1 1be76: 4015 ands r5, r2 1be78: 6185 str r5, [r0, #24] port->OUTCLR.reg = (mask & ~level_mask); 1be7a: 4391 bics r1, r2 1be7c: 6141 str r1, [r0, #20] port_base->OUTCLR.reg = pin_mask; 1be7e: 2280 movs r2, #128 ; 0x80 1be80: 615a str r2, [r3, #20] port_base->OUTSET.reg = pin_mask; 1be82: 619a str r2, [r3, #24] 1be84: 619c str r4, [r3, #24] port_pin_set_output_level(SSD1963_TFT_nCS, 0); port_group_set_output_level(group, mask, (uint32_t)data); port_pin_set_output_level(SSD1963_TFT_WR, 0); port_pin_set_output_level(SSD1963_TFT_WR, 1); port_pin_set_output_level(SSD1963_TFT_nCS, 1); } 1be86: bd30 pop {r4, r5, pc} 1be88: 41004400 .word 0x41004400 0001be8c : void p_gpio_parallel_wr_arr(PortGroup* group, uint32_t mask, uint16_t* data, uint16_t len) { 1be8c: b5f0 push {r4, r5, r6, r7, lr} 1be8e: b085 sub sp, #20 1be90: 9001 str r0, [sp, #4] 1be92: 000d movs r5, r1 1be94: 0017 movs r7, r2 for(volatile int ind = 0; ind < len; ind++) 1be96: 2200 movs r2, #0 1be98: 9203 str r2, [sp, #12] 1be9a: 001e movs r6, r3 1be9c: 9b03 ldr r3, [sp, #12] 1be9e: 429e cmp r6, r3 1bea0: dd0c ble.n 1bebc { p_gpio_parallel_wr_word(group, mask, data[ind]); 1bea2: 4c07 ldr r4, [pc, #28] ; (1bec0 ) 1bea4: 9a03 ldr r2, [sp, #12] 1bea6: 0052 lsls r2, r2, #1 1bea8: 5bd2 ldrh r2, [r2, r7] 1beaa: 0029 movs r1, r5 1beac: 9801 ldr r0, [sp, #4] 1beae: 47a0 blx r4 for(volatile int ind = 0; ind < len; ind++) 1beb0: 9a03 ldr r2, [sp, #12] 1beb2: 3201 adds r2, #1 1beb4: 9203 str r2, [sp, #12] 1beb6: 9b03 ldr r3, [sp, #12] 1beb8: 42b3 cmp r3, r6 1beba: dbf3 blt.n 1bea4 } } 1bebc: b005 add sp, #20 1bebe: bdf0 pop {r4, r5, r6, r7, pc} 1bec0: 0001be6d .word 0x0001be6d 0001bec4 : #include "p_i2c.h" void p_i2c_init(void) { 1bec4: 4770 bx lr ... 0001bec8 : p_printf("USART INIT\n"); lv_log_register_print_cb(p_debug_intf_cb); } void p_printf(const char* str, ...) { 1bec8: b40f push {r0, r1, r2, r3} 1beca: b530 push {r4, r5, lr} 1becc: b0c3 sub sp, #268 ; 0x10c 1bece: ac46 add r4, sp, #280 ; 0x118 1bed0: 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); 1bed2: 2202 movs r2, #2 1bed4: 32ff adds r2, #255 ; 0xff 1bed6: 2100 movs r1, #0 1bed8: a801 add r0, sp, #4 1beda: 4b0f ldr r3, [pc, #60] ; (1bf18 ) 1bedc: 4798 blx r3 va_list args; va_start(args, str); 1bede: 9400 str r4, [sp, #0] vsprintf(pprint_buffer, str, args); 1bee0: 0022 movs r2, r4 1bee2: 0029 movs r1, r5 1bee4: a801 add r0, sp, #4 1bee6: 4b0d ldr r3, [pc, #52] ; (1bf1c ) 1bee8: 4798 blx r3 va_end(args); uint16_t strsize = (uint16_t)strlen(pprint_buffer); 1beea: a801 add r0, sp, #4 1beec: 4b0c ldr r3, [pc, #48] ; (1bf20 ) 1beee: 4798 blx r3 1bef0: b282 uxth r2, r0 if(strsize > ORACLE_DEBUG_PRINT_BUFF_SIZE) 1bef2: 2380 movs r3, #128 ; 0x80 1bef4: 005b lsls r3, r3, #1 1bef6: 429a cmp r2, r3 1bef8: d904 bls.n 1bf04 // return error return; } usart_write_buffer_wait(&p_debug_inst, pprint_buffer, strsize); usart_read_job(&p_debug_inst, &rx_char); } 1befa: b043 add sp, #268 ; 0x10c 1befc: bc30 pop {r4, r5} 1befe: bc08 pop {r3} 1bf00: b004 add sp, #16 1bf02: 4718 bx r3 usart_write_buffer_wait(&p_debug_inst, pprint_buffer, strsize); 1bf04: 4c07 ldr r4, [pc, #28] ; (1bf24 ) 1bf06: a901 add r1, sp, #4 1bf08: 0020 movs r0, r4 1bf0a: 4b07 ldr r3, [pc, #28] ; (1bf28 ) 1bf0c: 4798 blx r3 usart_read_job(&p_debug_inst, &rx_char); 1bf0e: 4907 ldr r1, [pc, #28] ; (1bf2c ) 1bf10: 0020 movs r0, r4 1bf12: 4b07 ldr r3, [pc, #28] ; (1bf30 ) 1bf14: 4798 blx r3 1bf16: e7f0 b.n 1befa 1bf18: 0001c671 .word 0x0001c671 1bf1c: 0001c749 .word 0x0001c749 1bf20: 0001c709 .word 0x0001c709 1bf24: 20004c74 .word 0x20004c74 1bf28: 00000a39 .word 0x00000a39 1bf2c: 20004e8c .word 0x20004e8c 1bf30: 00000b5d .word 0x00000b5d 0001bf34 : { 1bf34: b570 push {r4, r5, r6, lr} 1bf36: b090 sub sp, #64 ; 0x40 { /* Sanity check arguments */ Assert(config); /* Set default config in the config struct */ config->data_order = USART_DATAORDER_LSB; 1bf38: 2380 movs r3, #128 ; 0x80 1bf3a: 05db lsls r3, r3, #23 1bf3c: 9300 str r3, [sp, #0] config->transfer_mode = USART_TRANSFER_ASYNCHRONOUSLY; 1bf3e: 2300 movs r3, #0 1bf40: 9301 str r3, [sp, #4] config->parity = USART_PARITY_NONE; 1bf42: 22ff movs r2, #255 ; 0xff 1bf44: 4669 mov r1, sp 1bf46: 810a strh r2, [r1, #8] config->stopbits = USART_STOPBITS_1; 1bf48: 2200 movs r2, #0 1bf4a: 728b strb r3, [r1, #10] config->character_size = USART_CHARACTER_SIZE_8BIT; 1bf4c: 72cb strb r3, [r1, #11] config->baudrate = 9600; config->receiver_enable = true; 1bf4e: 2401 movs r4, #1 1bf50: 2124 movs r1, #36 ; 0x24 1bf52: 4668 mov r0, sp 1bf54: 5444 strb r4, [r0, r1] config->transmitter_enable = true; 1bf56: 3101 adds r1, #1 1bf58: 5444 strb r4, [r0, r1] config->clock_polarity_inverted = false; 1bf5a: 3101 adds r1, #1 1bf5c: 5443 strb r3, [r0, r1] config->use_external_clock = false; 1bf5e: 3101 adds r1, #1 1bf60: 5443 strb r3, [r0, r1] config->ext_clock_freq = 0; 1bf62: 930a str r3, [sp, #40] ; 0x28 config->mux_setting = USART_RX_1_TX_2_XCK_3; config->run_in_standby = false; 1bf64: 3105 adds r1, #5 1bf66: 5443 strb r3, [r0, r1] config->generator_source = GCLK_GENERATOR_0; 1bf68: 3101 adds r1, #1 1bf6a: 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; 1bf6c: 9305 str r3, [sp, #20] config->sample_rate = USART_SAMPLE_RATE_16X_ARITHMETIC; 1bf6e: 8203 strh r3, [r0, #16] #endif #ifdef FEATURE_USART_LIN_SLAVE config->lin_slave_enable = false; 1bf70: 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; 1bf72: 7602 strb r2, [r0, #24] #endif #ifdef FEATURE_USART_START_FRAME_DECTION config->start_frame_detection_enable = false; 1bf74: 7702 strb r2, [r0, #28] #endif #ifdef FEATURE_USART_IRDA config->encoding_format_enable = false; 1bf76: 7642 strb r2, [r0, #25] config->receive_pulse_length = 19; 1bf78: 2313 movs r3, #19 1bf7a: 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; 1bf7c: 7742 strb r2, [r0, #29] p_debug_conf.baudrate = USART_DEBUG_BAUDRATE; 1bf7e: 23e1 movs r3, #225 ; 0xe1 1bf80: 025b lsls r3, r3, #9 1bf82: 9308 str r3, [sp, #32] p_debug_conf.pinmux_pad0 = USART_DEBUG_PINMUX_PAD0; 1bf84: 4b1a ldr r3, [pc, #104] ; (1bff0 ) 1bf86: 930c str r3, [sp, #48] ; 0x30 p_debug_conf.pinmux_pad1 = USART_DEBUG_PINMUX_PAD1; 1bf88: 4b1a ldr r3, [pc, #104] ; (1bff4 ) 1bf8a: 930d str r3, [sp, #52] ; 0x34 p_debug_conf.pinmux_pad2 = USART_DEBUG_PINMUX_PAD2; 1bf8c: 2301 movs r3, #1 1bf8e: 425b negs r3, r3 1bf90: 930e str r3, [sp, #56] ; 0x38 p_debug_conf.pinmux_pad3 = USART_DEBUG_PINMUX_PAD3; 1bf92: 930f str r3, [sp, #60] ; 0x3c p_debug_conf.mux_setting = USART_DEBUG_MUX_SETTING; 1bf94: 2380 movs r3, #128 ; 0x80 1bf96: 035b lsls r3, r3, #13 1bf98: 9303 str r3, [sp, #12] usart_init(&p_debug_inst, USART_DEBUG_MODULE, &p_debug_conf); 1bf9a: 4e17 ldr r6, [pc, #92] ; (1bff8 ) 1bf9c: 466a mov r2, sp 1bf9e: 4917 ldr r1, [pc, #92] ; (1bffc ) 1bfa0: 0030 movs r0, r6 1bfa2: 4b17 ldr r3, [pc, #92] ; (1c000 ) 1bfa4: 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); 1bfa6: 6835 ldr r5, [r6, #0] #if USART_CALLBACK_MODE == true /* Enable Global interrupt for module */ system_interrupt_enable(_sercom_get_interrupt_vector(module->hw)); 1bfa8: 0028 movs r0, r5 1bfaa: 4b16 ldr r3, [pc, #88] ; (1c004 ) 1bfac: 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)); 1bfae: 231f movs r3, #31 1bfb0: 4018 ands r0, r3 1bfb2: 4084 lsls r4, r0 1bfb4: 4b14 ldr r3, [pc, #80] ; (1c008 ) 1bfb6: 601c str r4, [r3, #0] SercomUsart *const usart_hw = &(module->hw->USART); 1bfb8: 6832 ldr r2, [r6, #0] return (usart_hw->SYNCBUSY.reg); 1bfba: 69d3 ldr r3, [r2, #28] while (usart_is_syncing(module)) { 1bfbc: 2b00 cmp r3, #0 1bfbe: d1fc bne.n 1bfba /* Wait until synchronization is complete */ _usart_wait_for_sync(module); /* Enable USART module */ usart_hw->CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE; 1bfc0: 682b ldr r3, [r5, #0] 1bfc2: 2202 movs r2, #2 1bfc4: 4313 orrs r3, r2 1bfc6: 602b str r3, [r5, #0] usart_register_callback(&p_debug_inst, p_debug_rx_cb, USART_CALLBACK_BUFFER_RECEIVED); 1bfc8: 4c0b ldr r4, [pc, #44] ; (1bff8 ) 1bfca: 3a01 subs r2, #1 1bfcc: 490f ldr r1, [pc, #60] ; (1c00c ) 1bfce: 0020 movs r0, r4 1bfd0: 4b0f ldr r3, [pc, #60] ; (1c010 ) 1bfd2: 4798 blx r3 { /* Sanity check arguments */ Assert(module); /* Enable callback */ module->callback_enable_mask |= (1 << callback_type); 1bfd4: 2231 movs r2, #49 ; 0x31 1bfd6: 5ca3 ldrb r3, [r4, r2] 1bfd8: 2102 movs r1, #2 1bfda: 430b orrs r3, r1 1bfdc: 54a3 strb r3, [r4, r2] p_printf("USART INIT\n"); 1bfde: 480d ldr r0, [pc, #52] ; (1c014 ) 1bfe0: 4b0d ldr r3, [pc, #52] ; (1c018 ) 1bfe2: 4798 blx r3 lv_log_register_print_cb(p_debug_intf_cb); 1bfe4: 480d ldr r0, [pc, #52] ; (1c01c ) 1bfe6: 4b0e ldr r3, [pc, #56] ; (1c020 ) 1bfe8: 4798 blx r3 } 1bfea: b010 add sp, #64 ; 0x40 1bfec: bd70 pop {r4, r5, r6, pc} 1bfee: 46c0 nop ; (mov r8, r8) 1bff0: 00160002 .word 0x00160002 1bff4: 00170002 .word 0x00170002 1bff8: 20004c74 .word 0x20004c74 1bffc: 42001400 .word 0x42001400 1c000: 000006d5 .word 0x000006d5 1c004: 00000d41 .word 0x00000d41 1c008: e000e100 .word 0xe000e100 1c00c: 0001c05d .word 0x0001c05d 1c010: 00000b45 .word 0x00000b45 1c014: 0002b0f8 .word 0x0002b0f8 1c018: 0001bec9 .word 0x0001bec9 1c01c: 0001c025 .word 0x0001c025 1c020: 0001214d .word 0x0001214d 0001c024 : { 1c024: b5f0 push {r4, r5, r6, r7, lr} 1c026: b083 sub sp, #12 1c028: 0004 movs r4, r0 1c02a: 000d movs r5, r1 1c02c: 0016 movs r6, r2 1c02e: 001f movs r7, r3 p_printf("[%s][LVGL][%s][%s][%lu][%s]\n", p_get_time_str(), level_strings[level], file_name, line_num, description); 1c030: 4b06 ldr r3, [pc, #24] ; (1c04c ) 1c032: 4798 blx r3 1c034: 0001 movs r1, r0 1c036: 0124 lsls r4, r4, #4 1c038: 4a05 ldr r2, [pc, #20] ; (1c050 ) 1c03a: 1912 adds r2, r2, r4 1c03c: 9701 str r7, [sp, #4] 1c03e: 9600 str r6, [sp, #0] 1c040: 002b movs r3, r5 1c042: 4804 ldr r0, [pc, #16] ; (1c054 ) 1c044: 4c04 ldr r4, [pc, #16] ; (1c058 ) 1c046: 47a0 blx r4 } 1c048: b003 add sp, #12 1c04a: bdf0 pop {r4, r5, r6, r7, pc} 1c04c: 0000017d .word 0x0000017d 1c050: 0002b084 .word 0x0002b084 1c054: 0002b0d4 .word 0x0002b0d4 1c058: 0001bec9 .word 0x0001bec9 0001c05c : { 1c05c: b510 push {r4, lr} p_printf("%c", (char)rx_char); 1c05e: 4b03 ldr r3, [pc, #12] ; (1c06c ) 1c060: 8819 ldrh r1, [r3, #0] 1c062: b2c9 uxtb r1, r1 1c064: 4802 ldr r0, [pc, #8] ; (1c070 ) 1c066: 4b03 ldr r3, [pc, #12] ; (1c074 ) 1c068: 4798 blx r3 } 1c06a: bd10 pop {r4, pc} 1c06c: 20004e8c .word 0x20004e8c 1c070: 0002b0f4 .word 0x0002b0f4 1c074: 0001bec9 .word 0x0001bec9 0001c078 : void p_debug_start_service(void) { 1c078: b510 push {r4, lr} usart_read_job(&p_debug_inst, &rx_char); 1c07a: 4902 ldr r1, [pc, #8] ; (1c084 ) 1c07c: 4802 ldr r0, [pc, #8] ; (1c088 ) 1c07e: 4b03 ldr r3, [pc, #12] ; (1c08c ) 1c080: 4798 blx r3 } 1c082: bd10 pop {r4, pc} 1c084: 20004e8c .word 0x20004e8c 1c088: 20004c74 .word 0x20004c74 1c08c: 00000b5d .word 0x00000b5d 0001c090
: /* * Support and FAQ: visit Microchip Support */ #include "oracle.h" int main (void) { 1c090: b510 push {r4, lr} oracle_init(); 1c092: 4b02 ldr r3, [pc, #8] ; (1c09c ) 1c094: 4798 blx r3 for(;;) { oracle_service(); 1c096: 4c02 ldr r4, [pc, #8] ; (1c0a0 ) 1c098: 47a0 blx r4 1c09a: e7fd b.n 1c098 1c09c: 00000235 .word 0x00000235 1c0a0: 00000321 .word 0x00000321 0001c0a4 <__udivsi3>: 1c0a4: 2200 movs r2, #0 1c0a6: 0843 lsrs r3, r0, #1 1c0a8: 428b cmp r3, r1 1c0aa: d374 bcc.n 1c196 <__udivsi3+0xf2> 1c0ac: 0903 lsrs r3, r0, #4 1c0ae: 428b cmp r3, r1 1c0b0: d35f bcc.n 1c172 <__udivsi3+0xce> 1c0b2: 0a03 lsrs r3, r0, #8 1c0b4: 428b cmp r3, r1 1c0b6: d344 bcc.n 1c142 <__udivsi3+0x9e> 1c0b8: 0b03 lsrs r3, r0, #12 1c0ba: 428b cmp r3, r1 1c0bc: d328 bcc.n 1c110 <__udivsi3+0x6c> 1c0be: 0c03 lsrs r3, r0, #16 1c0c0: 428b cmp r3, r1 1c0c2: d30d bcc.n 1c0e0 <__udivsi3+0x3c> 1c0c4: 22ff movs r2, #255 ; 0xff 1c0c6: 0209 lsls r1, r1, #8 1c0c8: ba12 rev r2, r2 1c0ca: 0c03 lsrs r3, r0, #16 1c0cc: 428b cmp r3, r1 1c0ce: d302 bcc.n 1c0d6 <__udivsi3+0x32> 1c0d0: 1212 asrs r2, r2, #8 1c0d2: 0209 lsls r1, r1, #8 1c0d4: d065 beq.n 1c1a2 <__udivsi3+0xfe> 1c0d6: 0b03 lsrs r3, r0, #12 1c0d8: 428b cmp r3, r1 1c0da: d319 bcc.n 1c110 <__udivsi3+0x6c> 1c0dc: e000 b.n 1c0e0 <__udivsi3+0x3c> 1c0de: 0a09 lsrs r1, r1, #8 1c0e0: 0bc3 lsrs r3, r0, #15 1c0e2: 428b cmp r3, r1 1c0e4: d301 bcc.n 1c0ea <__udivsi3+0x46> 1c0e6: 03cb lsls r3, r1, #15 1c0e8: 1ac0 subs r0, r0, r3 1c0ea: 4152 adcs r2, r2 1c0ec: 0b83 lsrs r3, r0, #14 1c0ee: 428b cmp r3, r1 1c0f0: d301 bcc.n 1c0f6 <__udivsi3+0x52> 1c0f2: 038b lsls r3, r1, #14 1c0f4: 1ac0 subs r0, r0, r3 1c0f6: 4152 adcs r2, r2 1c0f8: 0b43 lsrs r3, r0, #13 1c0fa: 428b cmp r3, r1 1c0fc: d301 bcc.n 1c102 <__udivsi3+0x5e> 1c0fe: 034b lsls r3, r1, #13 1c100: 1ac0 subs r0, r0, r3 1c102: 4152 adcs r2, r2 1c104: 0b03 lsrs r3, r0, #12 1c106: 428b cmp r3, r1 1c108: d301 bcc.n 1c10e <__udivsi3+0x6a> 1c10a: 030b lsls r3, r1, #12 1c10c: 1ac0 subs r0, r0, r3 1c10e: 4152 adcs r2, r2 1c110: 0ac3 lsrs r3, r0, #11 1c112: 428b cmp r3, r1 1c114: d301 bcc.n 1c11a <__udivsi3+0x76> 1c116: 02cb lsls r3, r1, #11 1c118: 1ac0 subs r0, r0, r3 1c11a: 4152 adcs r2, r2 1c11c: 0a83 lsrs r3, r0, #10 1c11e: 428b cmp r3, r1 1c120: d301 bcc.n 1c126 <__udivsi3+0x82> 1c122: 028b lsls r3, r1, #10 1c124: 1ac0 subs r0, r0, r3 1c126: 4152 adcs r2, r2 1c128: 0a43 lsrs r3, r0, #9 1c12a: 428b cmp r3, r1 1c12c: d301 bcc.n 1c132 <__udivsi3+0x8e> 1c12e: 024b lsls r3, r1, #9 1c130: 1ac0 subs r0, r0, r3 1c132: 4152 adcs r2, r2 1c134: 0a03 lsrs r3, r0, #8 1c136: 428b cmp r3, r1 1c138: d301 bcc.n 1c13e <__udivsi3+0x9a> 1c13a: 020b lsls r3, r1, #8 1c13c: 1ac0 subs r0, r0, r3 1c13e: 4152 adcs r2, r2 1c140: d2cd bcs.n 1c0de <__udivsi3+0x3a> 1c142: 09c3 lsrs r3, r0, #7 1c144: 428b cmp r3, r1 1c146: d301 bcc.n 1c14c <__udivsi3+0xa8> 1c148: 01cb lsls r3, r1, #7 1c14a: 1ac0 subs r0, r0, r3 1c14c: 4152 adcs r2, r2 1c14e: 0983 lsrs r3, r0, #6 1c150: 428b cmp r3, r1 1c152: d301 bcc.n 1c158 <__udivsi3+0xb4> 1c154: 018b lsls r3, r1, #6 1c156: 1ac0 subs r0, r0, r3 1c158: 4152 adcs r2, r2 1c15a: 0943 lsrs r3, r0, #5 1c15c: 428b cmp r3, r1 1c15e: d301 bcc.n 1c164 <__udivsi3+0xc0> 1c160: 014b lsls r3, r1, #5 1c162: 1ac0 subs r0, r0, r3 1c164: 4152 adcs r2, r2 1c166: 0903 lsrs r3, r0, #4 1c168: 428b cmp r3, r1 1c16a: d301 bcc.n 1c170 <__udivsi3+0xcc> 1c16c: 010b lsls r3, r1, #4 1c16e: 1ac0 subs r0, r0, r3 1c170: 4152 adcs r2, r2 1c172: 08c3 lsrs r3, r0, #3 1c174: 428b cmp r3, r1 1c176: d301 bcc.n 1c17c <__udivsi3+0xd8> 1c178: 00cb lsls r3, r1, #3 1c17a: 1ac0 subs r0, r0, r3 1c17c: 4152 adcs r2, r2 1c17e: 0883 lsrs r3, r0, #2 1c180: 428b cmp r3, r1 1c182: d301 bcc.n 1c188 <__udivsi3+0xe4> 1c184: 008b lsls r3, r1, #2 1c186: 1ac0 subs r0, r0, r3 1c188: 4152 adcs r2, r2 1c18a: 0843 lsrs r3, r0, #1 1c18c: 428b cmp r3, r1 1c18e: d301 bcc.n 1c194 <__udivsi3+0xf0> 1c190: 004b lsls r3, r1, #1 1c192: 1ac0 subs r0, r0, r3 1c194: 4152 adcs r2, r2 1c196: 1a41 subs r1, r0, r1 1c198: d200 bcs.n 1c19c <__udivsi3+0xf8> 1c19a: 4601 mov r1, r0 1c19c: 4152 adcs r2, r2 1c19e: 4610 mov r0, r2 1c1a0: 4770 bx lr 1c1a2: e7ff b.n 1c1a4 <__udivsi3+0x100> 1c1a4: b501 push {r0, lr} 1c1a6: 2000 movs r0, #0 1c1a8: f000 f8f0 bl 1c38c <__aeabi_idiv0> 1c1ac: bd02 pop {r1, pc} 1c1ae: 46c0 nop ; (mov r8, r8) 0001c1b0 <__aeabi_uidivmod>: 1c1b0: 2900 cmp r1, #0 1c1b2: d0f7 beq.n 1c1a4 <__udivsi3+0x100> 1c1b4: e776 b.n 1c0a4 <__udivsi3> 1c1b6: 4770 bx lr 0001c1b8 <__divsi3>: 1c1b8: 4603 mov r3, r0 1c1ba: 430b orrs r3, r1 1c1bc: d47f bmi.n 1c2be <__divsi3+0x106> 1c1be: 2200 movs r2, #0 1c1c0: 0843 lsrs r3, r0, #1 1c1c2: 428b cmp r3, r1 1c1c4: d374 bcc.n 1c2b0 <__divsi3+0xf8> 1c1c6: 0903 lsrs r3, r0, #4 1c1c8: 428b cmp r3, r1 1c1ca: d35f bcc.n 1c28c <__divsi3+0xd4> 1c1cc: 0a03 lsrs r3, r0, #8 1c1ce: 428b cmp r3, r1 1c1d0: d344 bcc.n 1c25c <__divsi3+0xa4> 1c1d2: 0b03 lsrs r3, r0, #12 1c1d4: 428b cmp r3, r1 1c1d6: d328 bcc.n 1c22a <__divsi3+0x72> 1c1d8: 0c03 lsrs r3, r0, #16 1c1da: 428b cmp r3, r1 1c1dc: d30d bcc.n 1c1fa <__divsi3+0x42> 1c1de: 22ff movs r2, #255 ; 0xff 1c1e0: 0209 lsls r1, r1, #8 1c1e2: ba12 rev r2, r2 1c1e4: 0c03 lsrs r3, r0, #16 1c1e6: 428b cmp r3, r1 1c1e8: d302 bcc.n 1c1f0 <__divsi3+0x38> 1c1ea: 1212 asrs r2, r2, #8 1c1ec: 0209 lsls r1, r1, #8 1c1ee: d065 beq.n 1c2bc <__divsi3+0x104> 1c1f0: 0b03 lsrs r3, r0, #12 1c1f2: 428b cmp r3, r1 1c1f4: d319 bcc.n 1c22a <__divsi3+0x72> 1c1f6: e000 b.n 1c1fa <__divsi3+0x42> 1c1f8: 0a09 lsrs r1, r1, #8 1c1fa: 0bc3 lsrs r3, r0, #15 1c1fc: 428b cmp r3, r1 1c1fe: d301 bcc.n 1c204 <__divsi3+0x4c> 1c200: 03cb lsls r3, r1, #15 1c202: 1ac0 subs r0, r0, r3 1c204: 4152 adcs r2, r2 1c206: 0b83 lsrs r3, r0, #14 1c208: 428b cmp r3, r1 1c20a: d301 bcc.n 1c210 <__divsi3+0x58> 1c20c: 038b lsls r3, r1, #14 1c20e: 1ac0 subs r0, r0, r3 1c210: 4152 adcs r2, r2 1c212: 0b43 lsrs r3, r0, #13 1c214: 428b cmp r3, r1 1c216: d301 bcc.n 1c21c <__divsi3+0x64> 1c218: 034b lsls r3, r1, #13 1c21a: 1ac0 subs r0, r0, r3 1c21c: 4152 adcs r2, r2 1c21e: 0b03 lsrs r3, r0, #12 1c220: 428b cmp r3, r1 1c222: d301 bcc.n 1c228 <__divsi3+0x70> 1c224: 030b lsls r3, r1, #12 1c226: 1ac0 subs r0, r0, r3 1c228: 4152 adcs r2, r2 1c22a: 0ac3 lsrs r3, r0, #11 1c22c: 428b cmp r3, r1 1c22e: d301 bcc.n 1c234 <__divsi3+0x7c> 1c230: 02cb lsls r3, r1, #11 1c232: 1ac0 subs r0, r0, r3 1c234: 4152 adcs r2, r2 1c236: 0a83 lsrs r3, r0, #10 1c238: 428b cmp r3, r1 1c23a: d301 bcc.n 1c240 <__divsi3+0x88> 1c23c: 028b lsls r3, r1, #10 1c23e: 1ac0 subs r0, r0, r3 1c240: 4152 adcs r2, r2 1c242: 0a43 lsrs r3, r0, #9 1c244: 428b cmp r3, r1 1c246: d301 bcc.n 1c24c <__divsi3+0x94> 1c248: 024b lsls r3, r1, #9 1c24a: 1ac0 subs r0, r0, r3 1c24c: 4152 adcs r2, r2 1c24e: 0a03 lsrs r3, r0, #8 1c250: 428b cmp r3, r1 1c252: d301 bcc.n 1c258 <__divsi3+0xa0> 1c254: 020b lsls r3, r1, #8 1c256: 1ac0 subs r0, r0, r3 1c258: 4152 adcs r2, r2 1c25a: d2cd bcs.n 1c1f8 <__divsi3+0x40> 1c25c: 09c3 lsrs r3, r0, #7 1c25e: 428b cmp r3, r1 1c260: d301 bcc.n 1c266 <__divsi3+0xae> 1c262: 01cb lsls r3, r1, #7 1c264: 1ac0 subs r0, r0, r3 1c266: 4152 adcs r2, r2 1c268: 0983 lsrs r3, r0, #6 1c26a: 428b cmp r3, r1 1c26c: d301 bcc.n 1c272 <__divsi3+0xba> 1c26e: 018b lsls r3, r1, #6 1c270: 1ac0 subs r0, r0, r3 1c272: 4152 adcs r2, r2 1c274: 0943 lsrs r3, r0, #5 1c276: 428b cmp r3, r1 1c278: d301 bcc.n 1c27e <__divsi3+0xc6> 1c27a: 014b lsls r3, r1, #5 1c27c: 1ac0 subs r0, r0, r3 1c27e: 4152 adcs r2, r2 1c280: 0903 lsrs r3, r0, #4 1c282: 428b cmp r3, r1 1c284: d301 bcc.n 1c28a <__divsi3+0xd2> 1c286: 010b lsls r3, r1, #4 1c288: 1ac0 subs r0, r0, r3 1c28a: 4152 adcs r2, r2 1c28c: 08c3 lsrs r3, r0, #3 1c28e: 428b cmp r3, r1 1c290: d301 bcc.n 1c296 <__divsi3+0xde> 1c292: 00cb lsls r3, r1, #3 1c294: 1ac0 subs r0, r0, r3 1c296: 4152 adcs r2, r2 1c298: 0883 lsrs r3, r0, #2 1c29a: 428b cmp r3, r1 1c29c: d301 bcc.n 1c2a2 <__divsi3+0xea> 1c29e: 008b lsls r3, r1, #2 1c2a0: 1ac0 subs r0, r0, r3 1c2a2: 4152 adcs r2, r2 1c2a4: 0843 lsrs r3, r0, #1 1c2a6: 428b cmp r3, r1 1c2a8: d301 bcc.n 1c2ae <__divsi3+0xf6> 1c2aa: 004b lsls r3, r1, #1 1c2ac: 1ac0 subs r0, r0, r3 1c2ae: 4152 adcs r2, r2 1c2b0: 1a41 subs r1, r0, r1 1c2b2: d200 bcs.n 1c2b6 <__divsi3+0xfe> 1c2b4: 4601 mov r1, r0 1c2b6: 4152 adcs r2, r2 1c2b8: 4610 mov r0, r2 1c2ba: 4770 bx lr 1c2bc: e05d b.n 1c37a <__divsi3+0x1c2> 1c2be: 0fca lsrs r2, r1, #31 1c2c0: d000 beq.n 1c2c4 <__divsi3+0x10c> 1c2c2: 4249 negs r1, r1 1c2c4: 1003 asrs r3, r0, #32 1c2c6: d300 bcc.n 1c2ca <__divsi3+0x112> 1c2c8: 4240 negs r0, r0 1c2ca: 4053 eors r3, r2 1c2cc: 2200 movs r2, #0 1c2ce: 469c mov ip, r3 1c2d0: 0903 lsrs r3, r0, #4 1c2d2: 428b cmp r3, r1 1c2d4: d32d bcc.n 1c332 <__divsi3+0x17a> 1c2d6: 0a03 lsrs r3, r0, #8 1c2d8: 428b cmp r3, r1 1c2da: d312 bcc.n 1c302 <__divsi3+0x14a> 1c2dc: 22fc movs r2, #252 ; 0xfc 1c2de: 0189 lsls r1, r1, #6 1c2e0: ba12 rev r2, r2 1c2e2: 0a03 lsrs r3, r0, #8 1c2e4: 428b cmp r3, r1 1c2e6: d30c bcc.n 1c302 <__divsi3+0x14a> 1c2e8: 0189 lsls r1, r1, #6 1c2ea: 1192 asrs r2, r2, #6 1c2ec: 428b cmp r3, r1 1c2ee: d308 bcc.n 1c302 <__divsi3+0x14a> 1c2f0: 0189 lsls r1, r1, #6 1c2f2: 1192 asrs r2, r2, #6 1c2f4: 428b cmp r3, r1 1c2f6: d304 bcc.n 1c302 <__divsi3+0x14a> 1c2f8: 0189 lsls r1, r1, #6 1c2fa: d03a beq.n 1c372 <__divsi3+0x1ba> 1c2fc: 1192 asrs r2, r2, #6 1c2fe: e000 b.n 1c302 <__divsi3+0x14a> 1c300: 0989 lsrs r1, r1, #6 1c302: 09c3 lsrs r3, r0, #7 1c304: 428b cmp r3, r1 1c306: d301 bcc.n 1c30c <__divsi3+0x154> 1c308: 01cb lsls r3, r1, #7 1c30a: 1ac0 subs r0, r0, r3 1c30c: 4152 adcs r2, r2 1c30e: 0983 lsrs r3, r0, #6 1c310: 428b cmp r3, r1 1c312: d301 bcc.n 1c318 <__divsi3+0x160> 1c314: 018b lsls r3, r1, #6 1c316: 1ac0 subs r0, r0, r3 1c318: 4152 adcs r2, r2 1c31a: 0943 lsrs r3, r0, #5 1c31c: 428b cmp r3, r1 1c31e: d301 bcc.n 1c324 <__divsi3+0x16c> 1c320: 014b lsls r3, r1, #5 1c322: 1ac0 subs r0, r0, r3 1c324: 4152 adcs r2, r2 1c326: 0903 lsrs r3, r0, #4 1c328: 428b cmp r3, r1 1c32a: d301 bcc.n 1c330 <__divsi3+0x178> 1c32c: 010b lsls r3, r1, #4 1c32e: 1ac0 subs r0, r0, r3 1c330: 4152 adcs r2, r2 1c332: 08c3 lsrs r3, r0, #3 1c334: 428b cmp r3, r1 1c336: d301 bcc.n 1c33c <__divsi3+0x184> 1c338: 00cb lsls r3, r1, #3 1c33a: 1ac0 subs r0, r0, r3 1c33c: 4152 adcs r2, r2 1c33e: 0883 lsrs r3, r0, #2 1c340: 428b cmp r3, r1 1c342: d301 bcc.n 1c348 <__divsi3+0x190> 1c344: 008b lsls r3, r1, #2 1c346: 1ac0 subs r0, r0, r3 1c348: 4152 adcs r2, r2 1c34a: d2d9 bcs.n 1c300 <__divsi3+0x148> 1c34c: 0843 lsrs r3, r0, #1 1c34e: 428b cmp r3, r1 1c350: d301 bcc.n 1c356 <__divsi3+0x19e> 1c352: 004b lsls r3, r1, #1 1c354: 1ac0 subs r0, r0, r3 1c356: 4152 adcs r2, r2 1c358: 1a41 subs r1, r0, r1 1c35a: d200 bcs.n 1c35e <__divsi3+0x1a6> 1c35c: 4601 mov r1, r0 1c35e: 4663 mov r3, ip 1c360: 4152 adcs r2, r2 1c362: 105b asrs r3, r3, #1 1c364: 4610 mov r0, r2 1c366: d301 bcc.n 1c36c <__divsi3+0x1b4> 1c368: 4240 negs r0, r0 1c36a: 2b00 cmp r3, #0 1c36c: d500 bpl.n 1c370 <__divsi3+0x1b8> 1c36e: 4249 negs r1, r1 1c370: 4770 bx lr 1c372: 4663 mov r3, ip 1c374: 105b asrs r3, r3, #1 1c376: d300 bcc.n 1c37a <__divsi3+0x1c2> 1c378: 4240 negs r0, r0 1c37a: b501 push {r0, lr} 1c37c: 2000 movs r0, #0 1c37e: f000 f805 bl 1c38c <__aeabi_idiv0> 1c382: bd02 pop {r1, pc} 0001c384 <__aeabi_idivmod>: 1c384: 2900 cmp r1, #0 1c386: d0f8 beq.n 1c37a <__divsi3+0x1c2> 1c388: e716 b.n 1c1b8 <__divsi3> 1c38a: 4770 bx lr 0001c38c <__aeabi_idiv0>: 1c38c: 4770 bx lr 1c38e: 46c0 nop ; (mov r8, r8) 0001c390 <__aeabi_uldivmod>: 1c390: 2b00 cmp r3, #0 1c392: d111 bne.n 1c3b8 <__aeabi_uldivmod+0x28> 1c394: 2a00 cmp r2, #0 1c396: d10f bne.n 1c3b8 <__aeabi_uldivmod+0x28> 1c398: 2900 cmp r1, #0 1c39a: d100 bne.n 1c39e <__aeabi_uldivmod+0xe> 1c39c: 2800 cmp r0, #0 1c39e: d002 beq.n 1c3a6 <__aeabi_uldivmod+0x16> 1c3a0: 2100 movs r1, #0 1c3a2: 43c9 mvns r1, r1 1c3a4: 1c08 adds r0, r1, #0 1c3a6: b407 push {r0, r1, r2} 1c3a8: 4802 ldr r0, [pc, #8] ; (1c3b4 <__aeabi_uldivmod+0x24>) 1c3aa: a102 add r1, pc, #8 ; (adr r1, 1c3b4 <__aeabi_uldivmod+0x24>) 1c3ac: 1840 adds r0, r0, r1 1c3ae: 9002 str r0, [sp, #8] 1c3b0: bd03 pop {r0, r1, pc} 1c3b2: 46c0 nop ; (mov r8, r8) 1c3b4: ffffffd9 .word 0xffffffd9 1c3b8: b403 push {r0, r1} 1c3ba: 4668 mov r0, sp 1c3bc: b501 push {r0, lr} 1c3be: 9802 ldr r0, [sp, #8] 1c3c0: f000 f830 bl 1c424 <__udivmoddi4> 1c3c4: 9b01 ldr r3, [sp, #4] 1c3c6: 469e mov lr, r3 1c3c8: b002 add sp, #8 1c3ca: bc0c pop {r2, r3} 1c3cc: 4770 bx lr 1c3ce: 46c0 nop ; (mov r8, r8) 0001c3d0 <__aeabi_lmul>: 1c3d0: b5f0 push {r4, r5, r6, r7, lr} 1c3d2: 46ce mov lr, r9 1c3d4: 4647 mov r7, r8 1c3d6: 0415 lsls r5, r2, #16 1c3d8: 0c2d lsrs r5, r5, #16 1c3da: 002e movs r6, r5 1c3dc: b580 push {r7, lr} 1c3de: 0407 lsls r7, r0, #16 1c3e0: 0c14 lsrs r4, r2, #16 1c3e2: 0c3f lsrs r7, r7, #16 1c3e4: 4699 mov r9, r3 1c3e6: 0c03 lsrs r3, r0, #16 1c3e8: 437e muls r6, r7 1c3ea: 435d muls r5, r3 1c3ec: 4367 muls r7, r4 1c3ee: 4363 muls r3, r4 1c3f0: 197f adds r7, r7, r5 1c3f2: 0c34 lsrs r4, r6, #16 1c3f4: 19e4 adds r4, r4, r7 1c3f6: 469c mov ip, r3 1c3f8: 42a5 cmp r5, r4 1c3fa: d903 bls.n 1c404 <__aeabi_lmul+0x34> 1c3fc: 2380 movs r3, #128 ; 0x80 1c3fe: 025b lsls r3, r3, #9 1c400: 4698 mov r8, r3 1c402: 44c4 add ip, r8 1c404: 464b mov r3, r9 1c406: 4351 muls r1, r2 1c408: 4343 muls r3, r0 1c40a: 0436 lsls r6, r6, #16 1c40c: 0c36 lsrs r6, r6, #16 1c40e: 0c25 lsrs r5, r4, #16 1c410: 0424 lsls r4, r4, #16 1c412: 4465 add r5, ip 1c414: 19a4 adds r4, r4, r6 1c416: 1859 adds r1, r3, r1 1c418: 1949 adds r1, r1, r5 1c41a: 0020 movs r0, r4 1c41c: bc0c pop {r2, r3} 1c41e: 4690 mov r8, r2 1c420: 4699 mov r9, r3 1c422: bdf0 pop {r4, r5, r6, r7, pc} 0001c424 <__udivmoddi4>: 1c424: b5f0 push {r4, r5, r6, r7, lr} 1c426: 4657 mov r7, sl 1c428: 464e mov r6, r9 1c42a: 4645 mov r5, r8 1c42c: 46de mov lr, fp 1c42e: b5e0 push {r5, r6, r7, lr} 1c430: 0004 movs r4, r0 1c432: b083 sub sp, #12 1c434: 000d movs r5, r1 1c436: 4692 mov sl, r2 1c438: 4699 mov r9, r3 1c43a: 428b cmp r3, r1 1c43c: d82f bhi.n 1c49e <__udivmoddi4+0x7a> 1c43e: d02c beq.n 1c49a <__udivmoddi4+0x76> 1c440: 4649 mov r1, r9 1c442: 4650 mov r0, sl 1c444: f000 f8cc bl 1c5e0 <__clzdi2> 1c448: 0029 movs r1, r5 1c44a: 0006 movs r6, r0 1c44c: 0020 movs r0, r4 1c44e: f000 f8c7 bl 1c5e0 <__clzdi2> 1c452: 1a33 subs r3, r6, r0 1c454: 4698 mov r8, r3 1c456: 3b20 subs r3, #32 1c458: 469b mov fp, r3 1c45a: d500 bpl.n 1c45e <__udivmoddi4+0x3a> 1c45c: e074 b.n 1c548 <__udivmoddi4+0x124> 1c45e: 4653 mov r3, sl 1c460: 465a mov r2, fp 1c462: 4093 lsls r3, r2 1c464: 001f movs r7, r3 1c466: 4653 mov r3, sl 1c468: 4642 mov r2, r8 1c46a: 4093 lsls r3, r2 1c46c: 001e movs r6, r3 1c46e: 42af cmp r7, r5 1c470: d829 bhi.n 1c4c6 <__udivmoddi4+0xa2> 1c472: d026 beq.n 1c4c2 <__udivmoddi4+0x9e> 1c474: 465b mov r3, fp 1c476: 1ba4 subs r4, r4, r6 1c478: 41bd sbcs r5, r7 1c47a: 2b00 cmp r3, #0 1c47c: da00 bge.n 1c480 <__udivmoddi4+0x5c> 1c47e: e079 b.n 1c574 <__udivmoddi4+0x150> 1c480: 2200 movs r2, #0 1c482: 2300 movs r3, #0 1c484: 9200 str r2, [sp, #0] 1c486: 9301 str r3, [sp, #4] 1c488: 2301 movs r3, #1 1c48a: 465a mov r2, fp 1c48c: 4093 lsls r3, r2 1c48e: 9301 str r3, [sp, #4] 1c490: 2301 movs r3, #1 1c492: 4642 mov r2, r8 1c494: 4093 lsls r3, r2 1c496: 9300 str r3, [sp, #0] 1c498: e019 b.n 1c4ce <__udivmoddi4+0xaa> 1c49a: 4282 cmp r2, r0 1c49c: d9d0 bls.n 1c440 <__udivmoddi4+0x1c> 1c49e: 2200 movs r2, #0 1c4a0: 2300 movs r3, #0 1c4a2: 9200 str r2, [sp, #0] 1c4a4: 9301 str r3, [sp, #4] 1c4a6: 9b0c ldr r3, [sp, #48] ; 0x30 1c4a8: 2b00 cmp r3, #0 1c4aa: d001 beq.n 1c4b0 <__udivmoddi4+0x8c> 1c4ac: 601c str r4, [r3, #0] 1c4ae: 605d str r5, [r3, #4] 1c4b0: 9800 ldr r0, [sp, #0] 1c4b2: 9901 ldr r1, [sp, #4] 1c4b4: b003 add sp, #12 1c4b6: bc3c pop {r2, r3, r4, r5} 1c4b8: 4690 mov r8, r2 1c4ba: 4699 mov r9, r3 1c4bc: 46a2 mov sl, r4 1c4be: 46ab mov fp, r5 1c4c0: bdf0 pop {r4, r5, r6, r7, pc} 1c4c2: 42a3 cmp r3, r4 1c4c4: d9d6 bls.n 1c474 <__udivmoddi4+0x50> 1c4c6: 2200 movs r2, #0 1c4c8: 2300 movs r3, #0 1c4ca: 9200 str r2, [sp, #0] 1c4cc: 9301 str r3, [sp, #4] 1c4ce: 4643 mov r3, r8 1c4d0: 2b00 cmp r3, #0 1c4d2: d0e8 beq.n 1c4a6 <__udivmoddi4+0x82> 1c4d4: 07fb lsls r3, r7, #31 1c4d6: 0872 lsrs r2, r6, #1 1c4d8: 431a orrs r2, r3 1c4da: 4646 mov r6, r8 1c4dc: 087b lsrs r3, r7, #1 1c4de: e00e b.n 1c4fe <__udivmoddi4+0xda> 1c4e0: 42ab cmp r3, r5 1c4e2: d101 bne.n 1c4e8 <__udivmoddi4+0xc4> 1c4e4: 42a2 cmp r2, r4 1c4e6: d80c bhi.n 1c502 <__udivmoddi4+0xde> 1c4e8: 1aa4 subs r4, r4, r2 1c4ea: 419d sbcs r5, r3 1c4ec: 2001 movs r0, #1 1c4ee: 1924 adds r4, r4, r4 1c4f0: 416d adcs r5, r5 1c4f2: 2100 movs r1, #0 1c4f4: 3e01 subs r6, #1 1c4f6: 1824 adds r4, r4, r0 1c4f8: 414d adcs r5, r1 1c4fa: 2e00 cmp r6, #0 1c4fc: d006 beq.n 1c50c <__udivmoddi4+0xe8> 1c4fe: 42ab cmp r3, r5 1c500: d9ee bls.n 1c4e0 <__udivmoddi4+0xbc> 1c502: 3e01 subs r6, #1 1c504: 1924 adds r4, r4, r4 1c506: 416d adcs r5, r5 1c508: 2e00 cmp r6, #0 1c50a: d1f8 bne.n 1c4fe <__udivmoddi4+0xda> 1c50c: 465b mov r3, fp 1c50e: 9800 ldr r0, [sp, #0] 1c510: 9901 ldr r1, [sp, #4] 1c512: 1900 adds r0, r0, r4 1c514: 4169 adcs r1, r5 1c516: 2b00 cmp r3, #0 1c518: db22 blt.n 1c560 <__udivmoddi4+0x13c> 1c51a: 002b movs r3, r5 1c51c: 465a mov r2, fp 1c51e: 40d3 lsrs r3, r2 1c520: 002a movs r2, r5 1c522: 4644 mov r4, r8 1c524: 40e2 lsrs r2, r4 1c526: 001c movs r4, r3 1c528: 465b mov r3, fp 1c52a: 0015 movs r5, r2 1c52c: 2b00 cmp r3, #0 1c52e: db2c blt.n 1c58a <__udivmoddi4+0x166> 1c530: 0026 movs r6, r4 1c532: 409e lsls r6, r3 1c534: 0033 movs r3, r6 1c536: 0026 movs r6, r4 1c538: 4647 mov r7, r8 1c53a: 40be lsls r6, r7 1c53c: 0032 movs r2, r6 1c53e: 1a80 subs r0, r0, r2 1c540: 4199 sbcs r1, r3 1c542: 9000 str r0, [sp, #0] 1c544: 9101 str r1, [sp, #4] 1c546: e7ae b.n 1c4a6 <__udivmoddi4+0x82> 1c548: 4642 mov r2, r8 1c54a: 2320 movs r3, #32 1c54c: 1a9b subs r3, r3, r2 1c54e: 4652 mov r2, sl 1c550: 40da lsrs r2, r3 1c552: 4641 mov r1, r8 1c554: 0013 movs r3, r2 1c556: 464a mov r2, r9 1c558: 408a lsls r2, r1 1c55a: 0017 movs r7, r2 1c55c: 431f orrs r7, r3 1c55e: e782 b.n 1c466 <__udivmoddi4+0x42> 1c560: 4642 mov r2, r8 1c562: 2320 movs r3, #32 1c564: 1a9b subs r3, r3, r2 1c566: 002a movs r2, r5 1c568: 4646 mov r6, r8 1c56a: 409a lsls r2, r3 1c56c: 0023 movs r3, r4 1c56e: 40f3 lsrs r3, r6 1c570: 4313 orrs r3, r2 1c572: e7d5 b.n 1c520 <__udivmoddi4+0xfc> 1c574: 4642 mov r2, r8 1c576: 2320 movs r3, #32 1c578: 2100 movs r1, #0 1c57a: 1a9b subs r3, r3, r2 1c57c: 2200 movs r2, #0 1c57e: 9100 str r1, [sp, #0] 1c580: 9201 str r2, [sp, #4] 1c582: 2201 movs r2, #1 1c584: 40da lsrs r2, r3 1c586: 9201 str r2, [sp, #4] 1c588: e782 b.n 1c490 <__udivmoddi4+0x6c> 1c58a: 4642 mov r2, r8 1c58c: 2320 movs r3, #32 1c58e: 0026 movs r6, r4 1c590: 1a9b subs r3, r3, r2 1c592: 40de lsrs r6, r3 1c594: 002f movs r7, r5 1c596: 46b4 mov ip, r6 1c598: 4097 lsls r7, r2 1c59a: 4666 mov r6, ip 1c59c: 003b movs r3, r7 1c59e: 4333 orrs r3, r6 1c5a0: e7c9 b.n 1c536 <__udivmoddi4+0x112> 1c5a2: 46c0 nop ; (mov r8, r8) 0001c5a4 <__clzsi2>: 1c5a4: 211c movs r1, #28 1c5a6: 2301 movs r3, #1 1c5a8: 041b lsls r3, r3, #16 1c5aa: 4298 cmp r0, r3 1c5ac: d301 bcc.n 1c5b2 <__clzsi2+0xe> 1c5ae: 0c00 lsrs r0, r0, #16 1c5b0: 3910 subs r1, #16 1c5b2: 0a1b lsrs r3, r3, #8 1c5b4: 4298 cmp r0, r3 1c5b6: d301 bcc.n 1c5bc <__clzsi2+0x18> 1c5b8: 0a00 lsrs r0, r0, #8 1c5ba: 3908 subs r1, #8 1c5bc: 091b lsrs r3, r3, #4 1c5be: 4298 cmp r0, r3 1c5c0: d301 bcc.n 1c5c6 <__clzsi2+0x22> 1c5c2: 0900 lsrs r0, r0, #4 1c5c4: 3904 subs r1, #4 1c5c6: a202 add r2, pc, #8 ; (adr r2, 1c5d0 <__clzsi2+0x2c>) 1c5c8: 5c10 ldrb r0, [r2, r0] 1c5ca: 1840 adds r0, r0, r1 1c5cc: 4770 bx lr 1c5ce: 46c0 nop ; (mov r8, r8) 1c5d0: 02020304 .word 0x02020304 1c5d4: 01010101 .word 0x01010101 ... 0001c5e0 <__clzdi2>: 1c5e0: b510 push {r4, lr} 1c5e2: 2900 cmp r1, #0 1c5e4: d103 bne.n 1c5ee <__clzdi2+0xe> 1c5e6: f7ff ffdd bl 1c5a4 <__clzsi2> 1c5ea: 3020 adds r0, #32 1c5ec: e002 b.n 1c5f4 <__clzdi2+0x14> 1c5ee: 1c08 adds r0, r1, #0 1c5f0: f7ff ffd8 bl 1c5a4 <__clzsi2> 1c5f4: bd10 pop {r4, pc} 1c5f6: 46c0 nop ; (mov r8, r8) 0001c5f8 <__libc_init_array>: 1c5f8: b570 push {r4, r5, r6, lr} 1c5fa: 2600 movs r6, #0 1c5fc: 4d0c ldr r5, [pc, #48] ; (1c630 <__libc_init_array+0x38>) 1c5fe: 4c0d ldr r4, [pc, #52] ; (1c634 <__libc_init_array+0x3c>) 1c600: 1b64 subs r4, r4, r5 1c602: 10a4 asrs r4, r4, #2 1c604: 42a6 cmp r6, r4 1c606: d109 bne.n 1c61c <__libc_init_array+0x24> 1c608: 2600 movs r6, #0 1c60a: f00e fd95 bl 2b138 <_init> 1c60e: 4d0a ldr r5, [pc, #40] ; (1c638 <__libc_init_array+0x40>) 1c610: 4c0a ldr r4, [pc, #40] ; (1c63c <__libc_init_array+0x44>) 1c612: 1b64 subs r4, r4, r5 1c614: 10a4 asrs r4, r4, #2 1c616: 42a6 cmp r6, r4 1c618: d105 bne.n 1c626 <__libc_init_array+0x2e> 1c61a: bd70 pop {r4, r5, r6, pc} 1c61c: 00b3 lsls r3, r6, #2 1c61e: 58eb ldr r3, [r5, r3] 1c620: 4798 blx r3 1c622: 3601 adds r6, #1 1c624: e7ee b.n 1c604 <__libc_init_array+0xc> 1c626: 00b3 lsls r3, r6, #2 1c628: 58eb ldr r3, [r5, r3] 1c62a: 4798 blx r3 1c62c: 3601 adds r6, #1 1c62e: e7f2 b.n 1c616 <__libc_init_array+0x1e> 1c630: 0002b144 .word 0x0002b144 1c634: 0002b144 .word 0x0002b144 1c638: 0002b144 .word 0x0002b144 1c63c: 0002b148 .word 0x0002b148 0001c640 : 1c640: b530 push {r4, r5, lr} 1c642: 2400 movs r4, #0 1c644: 42a2 cmp r2, r4 1c646: d101 bne.n 1c64c 1c648: 2000 movs r0, #0 1c64a: e005 b.n 1c658 1c64c: 5d03 ldrb r3, [r0, r4] 1c64e: 1c65 adds r5, r4, #1 1c650: 5d0c ldrb r4, [r1, r4] 1c652: 42a3 cmp r3, r4 1c654: d001 beq.n 1c65a 1c656: 1b18 subs r0, r3, r4 1c658: bd30 pop {r4, r5, pc} 1c65a: 002c movs r4, r5 1c65c: e7f2 b.n 1c644 0001c65e : 1c65e: 2300 movs r3, #0 1c660: b510 push {r4, lr} 1c662: 429a cmp r2, r3 1c664: d100 bne.n 1c668 1c666: bd10 pop {r4, pc} 1c668: 5ccc ldrb r4, [r1, r3] 1c66a: 54c4 strb r4, [r0, r3] 1c66c: 3301 adds r3, #1 1c66e: e7f8 b.n 1c662 0001c670 : 1c670: 0003 movs r3, r0 1c672: 1882 adds r2, r0, r2 1c674: 4293 cmp r3, r2 1c676: d100 bne.n 1c67a 1c678: 4770 bx lr 1c67a: 7019 strb r1, [r3, #0] 1c67c: 3301 adds r3, #1 1c67e: e7f9 b.n 1c674 0001c680 : 1c680: b40c push {r2, r3} 1c682: b530 push {r4, r5, lr} 1c684: 4b16 ldr r3, [pc, #88] ; (1c6e0 ) 1c686: b09d sub sp, #116 ; 0x74 1c688: 1e0c subs r4, r1, #0 1c68a: 681d ldr r5, [r3, #0] 1c68c: da08 bge.n 1c6a0 1c68e: 238b movs r3, #139 ; 0x8b 1c690: 2001 movs r0, #1 1c692: 602b str r3, [r5, #0] 1c694: 4240 negs r0, r0 1c696: b01d add sp, #116 ; 0x74 1c698: bc30 pop {r4, r5} 1c69a: bc08 pop {r3} 1c69c: b002 add sp, #8 1c69e: 4718 bx r3 1c6a0: 2382 movs r3, #130 ; 0x82 1c6a2: a902 add r1, sp, #8 1c6a4: 009b lsls r3, r3, #2 1c6a6: 818b strh r3, [r1, #12] 1c6a8: 2300 movs r3, #0 1c6aa: 9002 str r0, [sp, #8] 1c6ac: 6108 str r0, [r1, #16] 1c6ae: 429c cmp r4, r3 1c6b0: d000 beq.n 1c6b4 1c6b2: 1e63 subs r3, r4, #1 1c6b4: 608b str r3, [r1, #8] 1c6b6: 614b str r3, [r1, #20] 1c6b8: 2301 movs r3, #1 1c6ba: 425b negs r3, r3 1c6bc: 81cb strh r3, [r1, #14] 1c6be: 9a20 ldr r2, [sp, #128] ; 0x80 1c6c0: ab21 add r3, sp, #132 ; 0x84 1c6c2: 0028 movs r0, r5 1c6c4: 9301 str r3, [sp, #4] 1c6c6: f000 f8ad bl 1c824 <_svfiprintf_r> 1c6ca: 1c43 adds r3, r0, #1 1c6cc: da01 bge.n 1c6d2 1c6ce: 238b movs r3, #139 ; 0x8b 1c6d0: 602b str r3, [r5, #0] 1c6d2: 2c00 cmp r4, #0 1c6d4: d0df beq.n 1c696 1c6d6: 2300 movs r3, #0 1c6d8: 9a02 ldr r2, [sp, #8] 1c6da: 7013 strb r3, [r2, #0] 1c6dc: e7db b.n 1c696 1c6de: 46c0 nop ; (mov r8, r8) 1c6e0: 20000070 .word 0x20000070 0001c6e4 : 1c6e4: 7802 ldrb r2, [r0, #0] 1c6e6: 780b ldrb r3, [r1, #0] 1c6e8: 2a00 cmp r2, #0 1c6ea: d003 beq.n 1c6f4 1c6ec: 3001 adds r0, #1 1c6ee: 3101 adds r1, #1 1c6f0: 429a cmp r2, r3 1c6f2: d0f7 beq.n 1c6e4 1c6f4: 1ad0 subs r0, r2, r3 1c6f6: 4770 bx lr 0001c6f8 : 1c6f8: 1c03 adds r3, r0, #0 1c6fa: 780a ldrb r2, [r1, #0] 1c6fc: 3101 adds r1, #1 1c6fe: 701a strb r2, [r3, #0] 1c700: 3301 adds r3, #1 1c702: 2a00 cmp r2, #0 1c704: d1f9 bne.n 1c6fa 1c706: 4770 bx lr 0001c708 : 1c708: 2300 movs r3, #0 1c70a: 5cc2 ldrb r2, [r0, r3] 1c70c: 3301 adds r3, #1 1c70e: 2a00 cmp r2, #0 1c710: d1fb bne.n 1c70a 1c712: 1e58 subs r0, r3, #1 1c714: 4770 bx lr ... 0001c718 <_vsiprintf_r>: 1c718: b530 push {r4, r5, lr} 1c71a: b09b sub sp, #108 ; 0x6c 1c71c: 9100 str r1, [sp, #0] 1c71e: 9104 str r1, [sp, #16] 1c720: 4908 ldr r1, [pc, #32] ; (1c744 <_vsiprintf_r+0x2c>) 1c722: 466d mov r5, sp 1c724: 9102 str r1, [sp, #8] 1c726: 9105 str r1, [sp, #20] 1c728: 2101 movs r1, #1 1c72a: 2482 movs r4, #130 ; 0x82 1c72c: 4249 negs r1, r1 1c72e: 81e9 strh r1, [r5, #14] 1c730: 00a4 lsls r4, r4, #2 1c732: 4669 mov r1, sp 1c734: 81ac strh r4, [r5, #12] 1c736: f000 f875 bl 1c824 <_svfiprintf_r> 1c73a: 2300 movs r3, #0 1c73c: 9a00 ldr r2, [sp, #0] 1c73e: 7013 strb r3, [r2, #0] 1c740: b01b add sp, #108 ; 0x6c 1c742: bd30 pop {r4, r5, pc} 1c744: 7fffffff .word 0x7fffffff 0001c748 : 1c748: b510 push {r4, lr} 1c74a: 0013 movs r3, r2 1c74c: 000a movs r2, r1 1c74e: 0001 movs r1, r0 1c750: 4802 ldr r0, [pc, #8] ; (1c75c ) 1c752: 6800 ldr r0, [r0, #0] 1c754: f7ff ffe0 bl 1c718 <_vsiprintf_r> 1c758: bd10 pop {r4, pc} 1c75a: 46c0 nop ; (mov r8, r8) 1c75c: 20000070 .word 0x20000070 0001c760 <__ssputs_r>: 1c760: b5f0 push {r4, r5, r6, r7, lr} 1c762: 688e ldr r6, [r1, #8] 1c764: b085 sub sp, #20 1c766: 0007 movs r7, r0 1c768: 000c movs r4, r1 1c76a: 9203 str r2, [sp, #12] 1c76c: 9301 str r3, [sp, #4] 1c76e: 429e cmp r6, r3 1c770: d839 bhi.n 1c7e6 <__ssputs_r+0x86> 1c772: 2390 movs r3, #144 ; 0x90 1c774: 898a ldrh r2, [r1, #12] 1c776: 00db lsls r3, r3, #3 1c778: 421a tst r2, r3 1c77a: d034 beq.n 1c7e6 <__ssputs_r+0x86> 1c77c: 2503 movs r5, #3 1c77e: 6909 ldr r1, [r1, #16] 1c780: 6823 ldr r3, [r4, #0] 1c782: 1a5b subs r3, r3, r1 1c784: 9302 str r3, [sp, #8] 1c786: 6963 ldr r3, [r4, #20] 1c788: 9802 ldr r0, [sp, #8] 1c78a: 435d muls r5, r3 1c78c: 0feb lsrs r3, r5, #31 1c78e: 195d adds r5, r3, r5 1c790: 9b01 ldr r3, [sp, #4] 1c792: 106d asrs r5, r5, #1 1c794: 3301 adds r3, #1 1c796: 181b adds r3, r3, r0 1c798: 42ab cmp r3, r5 1c79a: d900 bls.n 1c79e <__ssputs_r+0x3e> 1c79c: 001d movs r5, r3 1c79e: 0553 lsls r3, r2, #21 1c7a0: d532 bpl.n 1c808 <__ssputs_r+0xa8> 1c7a2: 0029 movs r1, r5 1c7a4: 0038 movs r0, r7 1c7a6: f000 fb31 bl 1ce0c <_malloc_r> 1c7aa: 1e06 subs r6, r0, #0 1c7ac: d109 bne.n 1c7c2 <__ssputs_r+0x62> 1c7ae: 230c movs r3, #12 1c7b0: 603b str r3, [r7, #0] 1c7b2: 2340 movs r3, #64 ; 0x40 1c7b4: 2001 movs r0, #1 1c7b6: 89a2 ldrh r2, [r4, #12] 1c7b8: 4240 negs r0, r0 1c7ba: 4313 orrs r3, r2 1c7bc: 81a3 strh r3, [r4, #12] 1c7be: b005 add sp, #20 1c7c0: bdf0 pop {r4, r5, r6, r7, pc} 1c7c2: 9a02 ldr r2, [sp, #8] 1c7c4: 6921 ldr r1, [r4, #16] 1c7c6: f7ff ff4a bl 1c65e 1c7ca: 89a3 ldrh r3, [r4, #12] 1c7cc: 4a14 ldr r2, [pc, #80] ; (1c820 <__ssputs_r+0xc0>) 1c7ce: 401a ands r2, r3 1c7d0: 2380 movs r3, #128 ; 0x80 1c7d2: 4313 orrs r3, r2 1c7d4: 81a3 strh r3, [r4, #12] 1c7d6: 9b02 ldr r3, [sp, #8] 1c7d8: 6126 str r6, [r4, #16] 1c7da: 18f6 adds r6, r6, r3 1c7dc: 6026 str r6, [r4, #0] 1c7de: 6165 str r5, [r4, #20] 1c7e0: 9e01 ldr r6, [sp, #4] 1c7e2: 1aed subs r5, r5, r3 1c7e4: 60a5 str r5, [r4, #8] 1c7e6: 9b01 ldr r3, [sp, #4] 1c7e8: 42b3 cmp r3, r6 1c7ea: d200 bcs.n 1c7ee <__ssputs_r+0x8e> 1c7ec: 001e movs r6, r3 1c7ee: 0032 movs r2, r6 1c7f0: 9903 ldr r1, [sp, #12] 1c7f2: 6820 ldr r0, [r4, #0] 1c7f4: f000 faad bl 1cd52 1c7f8: 68a3 ldr r3, [r4, #8] 1c7fa: 2000 movs r0, #0 1c7fc: 1b9b subs r3, r3, r6 1c7fe: 60a3 str r3, [r4, #8] 1c800: 6823 ldr r3, [r4, #0] 1c802: 199e adds r6, r3, r6 1c804: 6026 str r6, [r4, #0] 1c806: e7da b.n 1c7be <__ssputs_r+0x5e> 1c808: 002a movs r2, r5 1c80a: 0038 movs r0, r7 1c80c: f000 fb5c bl 1cec8 <_realloc_r> 1c810: 1e06 subs r6, r0, #0 1c812: d1e0 bne.n 1c7d6 <__ssputs_r+0x76> 1c814: 6921 ldr r1, [r4, #16] 1c816: 0038 movs r0, r7 1c818: f000 faae bl 1cd78 <_free_r> 1c81c: e7c7 b.n 1c7ae <__ssputs_r+0x4e> 1c81e: 46c0 nop ; (mov r8, r8) 1c820: fffffb7f .word 0xfffffb7f 0001c824 <_svfiprintf_r>: 1c824: b5f0 push {r4, r5, r6, r7, lr} 1c826: b09f sub sp, #124 ; 0x7c 1c828: 9002 str r0, [sp, #8] 1c82a: 9305 str r3, [sp, #20] 1c82c: 898b ldrh r3, [r1, #12] 1c82e: 000f movs r7, r1 1c830: 0016 movs r6, r2 1c832: 061b lsls r3, r3, #24 1c834: d511 bpl.n 1c85a <_svfiprintf_r+0x36> 1c836: 690b ldr r3, [r1, #16] 1c838: 2b00 cmp r3, #0 1c83a: d10e bne.n 1c85a <_svfiprintf_r+0x36> 1c83c: 2140 movs r1, #64 ; 0x40 1c83e: f000 fae5 bl 1ce0c <_malloc_r> 1c842: 6038 str r0, [r7, #0] 1c844: 6138 str r0, [r7, #16] 1c846: 2800 cmp r0, #0 1c848: d105 bne.n 1c856 <_svfiprintf_r+0x32> 1c84a: 230c movs r3, #12 1c84c: 9a02 ldr r2, [sp, #8] 1c84e: 3801 subs r0, #1 1c850: 6013 str r3, [r2, #0] 1c852: b01f add sp, #124 ; 0x7c 1c854: bdf0 pop {r4, r5, r6, r7, pc} 1c856: 2340 movs r3, #64 ; 0x40 1c858: 617b str r3, [r7, #20] 1c85a: 2300 movs r3, #0 1c85c: ad06 add r5, sp, #24 1c85e: 616b str r3, [r5, #20] 1c860: 3320 adds r3, #32 1c862: 766b strb r3, [r5, #25] 1c864: 3310 adds r3, #16 1c866: 76ab strb r3, [r5, #26] 1c868: 0034 movs r4, r6 1c86a: 7823 ldrb r3, [r4, #0] 1c86c: 2b00 cmp r3, #0 1c86e: d147 bne.n 1c900 <_svfiprintf_r+0xdc> 1c870: 1ba3 subs r3, r4, r6 1c872: 9304 str r3, [sp, #16] 1c874: d00d beq.n 1c892 <_svfiprintf_r+0x6e> 1c876: 1ba3 subs r3, r4, r6 1c878: 0032 movs r2, r6 1c87a: 0039 movs r1, r7 1c87c: 9802 ldr r0, [sp, #8] 1c87e: f7ff ff6f bl 1c760 <__ssputs_r> 1c882: 1c43 adds r3, r0, #1 1c884: d100 bne.n 1c888 <_svfiprintf_r+0x64> 1c886: e0b5 b.n 1c9f4 <_svfiprintf_r+0x1d0> 1c888: 696a ldr r2, [r5, #20] 1c88a: 9b04 ldr r3, [sp, #16] 1c88c: 4694 mov ip, r2 1c88e: 4463 add r3, ip 1c890: 616b str r3, [r5, #20] 1c892: 7823 ldrb r3, [r4, #0] 1c894: 2b00 cmp r3, #0 1c896: d100 bne.n 1c89a <_svfiprintf_r+0x76> 1c898: e0ac b.n 1c9f4 <_svfiprintf_r+0x1d0> 1c89a: 2201 movs r2, #1 1c89c: 2300 movs r3, #0 1c89e: 4252 negs r2, r2 1c8a0: 606a str r2, [r5, #4] 1c8a2: a902 add r1, sp, #8 1c8a4: 3254 adds r2, #84 ; 0x54 1c8a6: 1852 adds r2, r2, r1 1c8a8: 3401 adds r4, #1 1c8aa: 602b str r3, [r5, #0] 1c8ac: 60eb str r3, [r5, #12] 1c8ae: 60ab str r3, [r5, #8] 1c8b0: 7013 strb r3, [r2, #0] 1c8b2: 65ab str r3, [r5, #88] ; 0x58 1c8b4: 4e58 ldr r6, [pc, #352] ; (1ca18 <_svfiprintf_r+0x1f4>) 1c8b6: 2205 movs r2, #5 1c8b8: 7821 ldrb r1, [r4, #0] 1c8ba: 0030 movs r0, r6 1c8bc: f000 fa3e bl 1cd3c 1c8c0: 1c62 adds r2, r4, #1 1c8c2: 2800 cmp r0, #0 1c8c4: d120 bne.n 1c908 <_svfiprintf_r+0xe4> 1c8c6: 6829 ldr r1, [r5, #0] 1c8c8: 06cb lsls r3, r1, #27 1c8ca: d504 bpl.n 1c8d6 <_svfiprintf_r+0xb2> 1c8cc: 2353 movs r3, #83 ; 0x53 1c8ce: ae02 add r6, sp, #8 1c8d0: 3020 adds r0, #32 1c8d2: 199b adds r3, r3, r6 1c8d4: 7018 strb r0, [r3, #0] 1c8d6: 070b lsls r3, r1, #28 1c8d8: d504 bpl.n 1c8e4 <_svfiprintf_r+0xc0> 1c8da: 2353 movs r3, #83 ; 0x53 1c8dc: 202b movs r0, #43 ; 0x2b 1c8de: ae02 add r6, sp, #8 1c8e0: 199b adds r3, r3, r6 1c8e2: 7018 strb r0, [r3, #0] 1c8e4: 7823 ldrb r3, [r4, #0] 1c8e6: 2b2a cmp r3, #42 ; 0x2a 1c8e8: d016 beq.n 1c918 <_svfiprintf_r+0xf4> 1c8ea: 2000 movs r0, #0 1c8ec: 210a movs r1, #10 1c8ee: 9b09 ldr r3, [sp, #36] ; 0x24 1c8f0: 7822 ldrb r2, [r4, #0] 1c8f2: 3a30 subs r2, #48 ; 0x30 1c8f4: 2a09 cmp r2, #9 1c8f6: d955 bls.n 1c9a4 <_svfiprintf_r+0x180> 1c8f8: 2800 cmp r0, #0 1c8fa: d015 beq.n 1c928 <_svfiprintf_r+0x104> 1c8fc: 9309 str r3, [sp, #36] ; 0x24 1c8fe: e013 b.n 1c928 <_svfiprintf_r+0x104> 1c900: 2b25 cmp r3, #37 ; 0x25 1c902: d0b5 beq.n 1c870 <_svfiprintf_r+0x4c> 1c904: 3401 adds r4, #1 1c906: e7b0 b.n 1c86a <_svfiprintf_r+0x46> 1c908: 2301 movs r3, #1 1c90a: 1b80 subs r0, r0, r6 1c90c: 4083 lsls r3, r0 1c90e: 6829 ldr r1, [r5, #0] 1c910: 0014 movs r4, r2 1c912: 430b orrs r3, r1 1c914: 602b str r3, [r5, #0] 1c916: e7cd b.n 1c8b4 <_svfiprintf_r+0x90> 1c918: 9b05 ldr r3, [sp, #20] 1c91a: 1d18 adds r0, r3, #4 1c91c: 681b ldr r3, [r3, #0] 1c91e: 9005 str r0, [sp, #20] 1c920: 2b00 cmp r3, #0 1c922: db39 blt.n 1c998 <_svfiprintf_r+0x174> 1c924: 9309 str r3, [sp, #36] ; 0x24 1c926: 0014 movs r4, r2 1c928: 7823 ldrb r3, [r4, #0] 1c92a: 2b2e cmp r3, #46 ; 0x2e 1c92c: d10b bne.n 1c946 <_svfiprintf_r+0x122> 1c92e: 7863 ldrb r3, [r4, #1] 1c930: 1c62 adds r2, r4, #1 1c932: 2b2a cmp r3, #42 ; 0x2a 1c934: d13e bne.n 1c9b4 <_svfiprintf_r+0x190> 1c936: 9b05 ldr r3, [sp, #20] 1c938: 3402 adds r4, #2 1c93a: 1d1a adds r2, r3, #4 1c93c: 681b ldr r3, [r3, #0] 1c93e: 9205 str r2, [sp, #20] 1c940: 2b00 cmp r3, #0 1c942: db34 blt.n 1c9ae <_svfiprintf_r+0x18a> 1c944: 9307 str r3, [sp, #28] 1c946: 4e35 ldr r6, [pc, #212] ; (1ca1c <_svfiprintf_r+0x1f8>) 1c948: 7821 ldrb r1, [r4, #0] 1c94a: 2203 movs r2, #3 1c94c: 0030 movs r0, r6 1c94e: f000 f9f5 bl 1cd3c 1c952: 2800 cmp r0, #0 1c954: d006 beq.n 1c964 <_svfiprintf_r+0x140> 1c956: 2340 movs r3, #64 ; 0x40 1c958: 1b80 subs r0, r0, r6 1c95a: 4083 lsls r3, r0 1c95c: 682a ldr r2, [r5, #0] 1c95e: 3401 adds r4, #1 1c960: 4313 orrs r3, r2 1c962: 602b str r3, [r5, #0] 1c964: 7821 ldrb r1, [r4, #0] 1c966: 2206 movs r2, #6 1c968: 482d ldr r0, [pc, #180] ; (1ca20 <_svfiprintf_r+0x1fc>) 1c96a: 1c66 adds r6, r4, #1 1c96c: 7629 strb r1, [r5, #24] 1c96e: f000 f9e5 bl 1cd3c 1c972: 2800 cmp r0, #0 1c974: d046 beq.n 1ca04 <_svfiprintf_r+0x1e0> 1c976: 4b2b ldr r3, [pc, #172] ; (1ca24 <_svfiprintf_r+0x200>) 1c978: 2b00 cmp r3, #0 1c97a: d12f bne.n 1c9dc <_svfiprintf_r+0x1b8> 1c97c: 6829 ldr r1, [r5, #0] 1c97e: 9b05 ldr r3, [sp, #20] 1c980: 2207 movs r2, #7 1c982: 05c9 lsls r1, r1, #23 1c984: d528 bpl.n 1c9d8 <_svfiprintf_r+0x1b4> 1c986: 189b adds r3, r3, r2 1c988: 4393 bics r3, r2 1c98a: 3308 adds r3, #8 1c98c: 9305 str r3, [sp, #20] 1c98e: 696b ldr r3, [r5, #20] 1c990: 9a03 ldr r2, [sp, #12] 1c992: 189b adds r3, r3, r2 1c994: 616b str r3, [r5, #20] 1c996: e767 b.n 1c868 <_svfiprintf_r+0x44> 1c998: 425b negs r3, r3 1c99a: 60eb str r3, [r5, #12] 1c99c: 2302 movs r3, #2 1c99e: 430b orrs r3, r1 1c9a0: 602b str r3, [r5, #0] 1c9a2: e7c0 b.n 1c926 <_svfiprintf_r+0x102> 1c9a4: 434b muls r3, r1 1c9a6: 3401 adds r4, #1 1c9a8: 189b adds r3, r3, r2 1c9aa: 2001 movs r0, #1 1c9ac: e7a0 b.n 1c8f0 <_svfiprintf_r+0xcc> 1c9ae: 2301 movs r3, #1 1c9b0: 425b negs r3, r3 1c9b2: e7c7 b.n 1c944 <_svfiprintf_r+0x120> 1c9b4: 2300 movs r3, #0 1c9b6: 0014 movs r4, r2 1c9b8: 200a movs r0, #10 1c9ba: 001a movs r2, r3 1c9bc: 606b str r3, [r5, #4] 1c9be: 7821 ldrb r1, [r4, #0] 1c9c0: 3930 subs r1, #48 ; 0x30 1c9c2: 2909 cmp r1, #9 1c9c4: d903 bls.n 1c9ce <_svfiprintf_r+0x1aa> 1c9c6: 2b00 cmp r3, #0 1c9c8: d0bd beq.n 1c946 <_svfiprintf_r+0x122> 1c9ca: 9207 str r2, [sp, #28] 1c9cc: e7bb b.n 1c946 <_svfiprintf_r+0x122> 1c9ce: 4342 muls r2, r0 1c9d0: 3401 adds r4, #1 1c9d2: 1852 adds r2, r2, r1 1c9d4: 2301 movs r3, #1 1c9d6: e7f2 b.n 1c9be <_svfiprintf_r+0x19a> 1c9d8: 3307 adds r3, #7 1c9da: e7d5 b.n 1c988 <_svfiprintf_r+0x164> 1c9dc: ab05 add r3, sp, #20 1c9de: 9300 str r3, [sp, #0] 1c9e0: 003a movs r2, r7 1c9e2: 4b11 ldr r3, [pc, #68] ; (1ca28 <_svfiprintf_r+0x204>) 1c9e4: 0029 movs r1, r5 1c9e6: 9802 ldr r0, [sp, #8] 1c9e8: e000 b.n 1c9ec <_svfiprintf_r+0x1c8> 1c9ea: bf00 nop 1c9ec: 9003 str r0, [sp, #12] 1c9ee: 9b03 ldr r3, [sp, #12] 1c9f0: 3301 adds r3, #1 1c9f2: d1cc bne.n 1c98e <_svfiprintf_r+0x16a> 1c9f4: 89bb ldrh r3, [r7, #12] 1c9f6: 980b ldr r0, [sp, #44] ; 0x2c 1c9f8: 065b lsls r3, r3, #25 1c9fa: d400 bmi.n 1c9fe <_svfiprintf_r+0x1da> 1c9fc: e729 b.n 1c852 <_svfiprintf_r+0x2e> 1c9fe: 2001 movs r0, #1 1ca00: 4240 negs r0, r0 1ca02: e726 b.n 1c852 <_svfiprintf_r+0x2e> 1ca04: ab05 add r3, sp, #20 1ca06: 9300 str r3, [sp, #0] 1ca08: 003a movs r2, r7 1ca0a: 4b07 ldr r3, [pc, #28] ; (1ca28 <_svfiprintf_r+0x204>) 1ca0c: 0029 movs r1, r5 1ca0e: 9802 ldr r0, [sp, #8] 1ca10: f000 f87a bl 1cb08 <_printf_i> 1ca14: e7ea b.n 1c9ec <_svfiprintf_r+0x1c8> 1ca16: 46c0 nop ; (mov r8, r8) 1ca18: 0002b104 .word 0x0002b104 1ca1c: 0002b10a .word 0x0002b10a 1ca20: 0002b10e .word 0x0002b10e 1ca24: 00000000 .word 0x00000000 1ca28: 0001c761 .word 0x0001c761 0001ca2c <_printf_common>: 1ca2c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} 1ca2e: 0015 movs r5, r2 1ca30: 9301 str r3, [sp, #4] 1ca32: 688a ldr r2, [r1, #8] 1ca34: 690b ldr r3, [r1, #16] 1ca36: 9000 str r0, [sp, #0] 1ca38: 000c movs r4, r1 1ca3a: 4293 cmp r3, r2 1ca3c: da00 bge.n 1ca40 <_printf_common+0x14> 1ca3e: 0013 movs r3, r2 1ca40: 0022 movs r2, r4 1ca42: 602b str r3, [r5, #0] 1ca44: 3243 adds r2, #67 ; 0x43 1ca46: 7812 ldrb r2, [r2, #0] 1ca48: 2a00 cmp r2, #0 1ca4a: d001 beq.n 1ca50 <_printf_common+0x24> 1ca4c: 3301 adds r3, #1 1ca4e: 602b str r3, [r5, #0] 1ca50: 6823 ldr r3, [r4, #0] 1ca52: 069b lsls r3, r3, #26 1ca54: d502 bpl.n 1ca5c <_printf_common+0x30> 1ca56: 682b ldr r3, [r5, #0] 1ca58: 3302 adds r3, #2 1ca5a: 602b str r3, [r5, #0] 1ca5c: 2706 movs r7, #6 1ca5e: 6823 ldr r3, [r4, #0] 1ca60: 401f ands r7, r3 1ca62: d027 beq.n 1cab4 <_printf_common+0x88> 1ca64: 0023 movs r3, r4 1ca66: 3343 adds r3, #67 ; 0x43 1ca68: 781b ldrb r3, [r3, #0] 1ca6a: 1e5a subs r2, r3, #1 1ca6c: 4193 sbcs r3, r2 1ca6e: 6822 ldr r2, [r4, #0] 1ca70: 0692 lsls r2, r2, #26 1ca72: d430 bmi.n 1cad6 <_printf_common+0xaa> 1ca74: 0022 movs r2, r4 1ca76: 9901 ldr r1, [sp, #4] 1ca78: 3243 adds r2, #67 ; 0x43 1ca7a: 9800 ldr r0, [sp, #0] 1ca7c: 9e08 ldr r6, [sp, #32] 1ca7e: 47b0 blx r6 1ca80: 1c43 adds r3, r0, #1 1ca82: d025 beq.n 1cad0 <_printf_common+0xa4> 1ca84: 2306 movs r3, #6 1ca86: 6820 ldr r0, [r4, #0] 1ca88: 682a ldr r2, [r5, #0] 1ca8a: 68e1 ldr r1, [r4, #12] 1ca8c: 4003 ands r3, r0 1ca8e: 2500 movs r5, #0 1ca90: 2b04 cmp r3, #4 1ca92: d103 bne.n 1ca9c <_printf_common+0x70> 1ca94: 1a8d subs r5, r1, r2 1ca96: 43eb mvns r3, r5 1ca98: 17db asrs r3, r3, #31 1ca9a: 401d ands r5, r3 1ca9c: 68a3 ldr r3, [r4, #8] 1ca9e: 6922 ldr r2, [r4, #16] 1caa0: 4293 cmp r3, r2 1caa2: dd01 ble.n 1caa8 <_printf_common+0x7c> 1caa4: 1a9b subs r3, r3, r2 1caa6: 18ed adds r5, r5, r3 1caa8: 2700 movs r7, #0 1caaa: 42bd cmp r5, r7 1caac: d120 bne.n 1caf0 <_printf_common+0xc4> 1caae: 2000 movs r0, #0 1cab0: e010 b.n 1cad4 <_printf_common+0xa8> 1cab2: 3701 adds r7, #1 1cab4: 68e3 ldr r3, [r4, #12] 1cab6: 682a ldr r2, [r5, #0] 1cab8: 1a9b subs r3, r3, r2 1caba: 429f cmp r7, r3 1cabc: dad2 bge.n 1ca64 <_printf_common+0x38> 1cabe: 0022 movs r2, r4 1cac0: 2301 movs r3, #1 1cac2: 3219 adds r2, #25 1cac4: 9901 ldr r1, [sp, #4] 1cac6: 9800 ldr r0, [sp, #0] 1cac8: 9e08 ldr r6, [sp, #32] 1caca: 47b0 blx r6 1cacc: 1c43 adds r3, r0, #1 1cace: d1f0 bne.n 1cab2 <_printf_common+0x86> 1cad0: 2001 movs r0, #1 1cad2: 4240 negs r0, r0 1cad4: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} 1cad6: 2030 movs r0, #48 ; 0x30 1cad8: 18e1 adds r1, r4, r3 1cada: 3143 adds r1, #67 ; 0x43 1cadc: 7008 strb r0, [r1, #0] 1cade: 0021 movs r1, r4 1cae0: 1c5a adds r2, r3, #1 1cae2: 3145 adds r1, #69 ; 0x45 1cae4: 7809 ldrb r1, [r1, #0] 1cae6: 18a2 adds r2, r4, r2 1cae8: 3243 adds r2, #67 ; 0x43 1caea: 3302 adds r3, #2 1caec: 7011 strb r1, [r2, #0] 1caee: e7c1 b.n 1ca74 <_printf_common+0x48> 1caf0: 0022 movs r2, r4 1caf2: 2301 movs r3, #1 1caf4: 321a adds r2, #26 1caf6: 9901 ldr r1, [sp, #4] 1caf8: 9800 ldr r0, [sp, #0] 1cafa: 9e08 ldr r6, [sp, #32] 1cafc: 47b0 blx r6 1cafe: 1c43 adds r3, r0, #1 1cb00: d0e6 beq.n 1cad0 <_printf_common+0xa4> 1cb02: 3701 adds r7, #1 1cb04: e7d1 b.n 1caaa <_printf_common+0x7e> ... 0001cb08 <_printf_i>: 1cb08: b5f0 push {r4, r5, r6, r7, lr} 1cb0a: b08b sub sp, #44 ; 0x2c 1cb0c: 9206 str r2, [sp, #24] 1cb0e: 000a movs r2, r1 1cb10: 3243 adds r2, #67 ; 0x43 1cb12: 9307 str r3, [sp, #28] 1cb14: 9005 str r0, [sp, #20] 1cb16: 9204 str r2, [sp, #16] 1cb18: 7e0a ldrb r2, [r1, #24] 1cb1a: 000c movs r4, r1 1cb1c: 9b10 ldr r3, [sp, #64] ; 0x40 1cb1e: 2a6e cmp r2, #110 ; 0x6e 1cb20: d100 bne.n 1cb24 <_printf_i+0x1c> 1cb22: e08f b.n 1cc44 <_printf_i+0x13c> 1cb24: d817 bhi.n 1cb56 <_printf_i+0x4e> 1cb26: 2a63 cmp r2, #99 ; 0x63 1cb28: d02c beq.n 1cb84 <_printf_i+0x7c> 1cb2a: d808 bhi.n 1cb3e <_printf_i+0x36> 1cb2c: 2a00 cmp r2, #0 1cb2e: d100 bne.n 1cb32 <_printf_i+0x2a> 1cb30: e099 b.n 1cc66 <_printf_i+0x15e> 1cb32: 2a58 cmp r2, #88 ; 0x58 1cb34: d054 beq.n 1cbe0 <_printf_i+0xd8> 1cb36: 0026 movs r6, r4 1cb38: 3642 adds r6, #66 ; 0x42 1cb3a: 7032 strb r2, [r6, #0] 1cb3c: e029 b.n 1cb92 <_printf_i+0x8a> 1cb3e: 2a64 cmp r2, #100 ; 0x64 1cb40: d001 beq.n 1cb46 <_printf_i+0x3e> 1cb42: 2a69 cmp r2, #105 ; 0x69 1cb44: d1f7 bne.n 1cb36 <_printf_i+0x2e> 1cb46: 6821 ldr r1, [r4, #0] 1cb48: 681a ldr r2, [r3, #0] 1cb4a: 0608 lsls r0, r1, #24 1cb4c: d523 bpl.n 1cb96 <_printf_i+0x8e> 1cb4e: 1d11 adds r1, r2, #4 1cb50: 6019 str r1, [r3, #0] 1cb52: 6815 ldr r5, [r2, #0] 1cb54: e025 b.n 1cba2 <_printf_i+0x9a> 1cb56: 2a73 cmp r2, #115 ; 0x73 1cb58: d100 bne.n 1cb5c <_printf_i+0x54> 1cb5a: e088 b.n 1cc6e <_printf_i+0x166> 1cb5c: d808 bhi.n 1cb70 <_printf_i+0x68> 1cb5e: 2a6f cmp r2, #111 ; 0x6f 1cb60: d029 beq.n 1cbb6 <_printf_i+0xae> 1cb62: 2a70 cmp r2, #112 ; 0x70 1cb64: d1e7 bne.n 1cb36 <_printf_i+0x2e> 1cb66: 2220 movs r2, #32 1cb68: 6809 ldr r1, [r1, #0] 1cb6a: 430a orrs r2, r1 1cb6c: 6022 str r2, [r4, #0] 1cb6e: e003 b.n 1cb78 <_printf_i+0x70> 1cb70: 2a75 cmp r2, #117 ; 0x75 1cb72: d020 beq.n 1cbb6 <_printf_i+0xae> 1cb74: 2a78 cmp r2, #120 ; 0x78 1cb76: d1de bne.n 1cb36 <_printf_i+0x2e> 1cb78: 0022 movs r2, r4 1cb7a: 2178 movs r1, #120 ; 0x78 1cb7c: 3245 adds r2, #69 ; 0x45 1cb7e: 7011 strb r1, [r2, #0] 1cb80: 4a6c ldr r2, [pc, #432] ; (1cd34 <_printf_i+0x22c>) 1cb82: e030 b.n 1cbe6 <_printf_i+0xde> 1cb84: 000e movs r6, r1 1cb86: 681a ldr r2, [r3, #0] 1cb88: 3642 adds r6, #66 ; 0x42 1cb8a: 1d11 adds r1, r2, #4 1cb8c: 6019 str r1, [r3, #0] 1cb8e: 6813 ldr r3, [r2, #0] 1cb90: 7033 strb r3, [r6, #0] 1cb92: 2301 movs r3, #1 1cb94: e079 b.n 1cc8a <_printf_i+0x182> 1cb96: 0649 lsls r1, r1, #25 1cb98: d5d9 bpl.n 1cb4e <_printf_i+0x46> 1cb9a: 1d11 adds r1, r2, #4 1cb9c: 6019 str r1, [r3, #0] 1cb9e: 2300 movs r3, #0 1cba0: 5ed5 ldrsh r5, [r2, r3] 1cba2: 2d00 cmp r5, #0 1cba4: da03 bge.n 1cbae <_printf_i+0xa6> 1cba6: 232d movs r3, #45 ; 0x2d 1cba8: 9a04 ldr r2, [sp, #16] 1cbaa: 426d negs r5, r5 1cbac: 7013 strb r3, [r2, #0] 1cbae: 4b62 ldr r3, [pc, #392] ; (1cd38 <_printf_i+0x230>) 1cbb0: 270a movs r7, #10 1cbb2: 9303 str r3, [sp, #12] 1cbb4: e02f b.n 1cc16 <_printf_i+0x10e> 1cbb6: 6820 ldr r0, [r4, #0] 1cbb8: 6819 ldr r1, [r3, #0] 1cbba: 0605 lsls r5, r0, #24 1cbbc: d503 bpl.n 1cbc6 <_printf_i+0xbe> 1cbbe: 1d08 adds r0, r1, #4 1cbc0: 6018 str r0, [r3, #0] 1cbc2: 680d ldr r5, [r1, #0] 1cbc4: e005 b.n 1cbd2 <_printf_i+0xca> 1cbc6: 0640 lsls r0, r0, #25 1cbc8: d5f9 bpl.n 1cbbe <_printf_i+0xb6> 1cbca: 680d ldr r5, [r1, #0] 1cbcc: 1d08 adds r0, r1, #4 1cbce: 6018 str r0, [r3, #0] 1cbd0: b2ad uxth r5, r5 1cbd2: 4b59 ldr r3, [pc, #356] ; (1cd38 <_printf_i+0x230>) 1cbd4: 2708 movs r7, #8 1cbd6: 9303 str r3, [sp, #12] 1cbd8: 2a6f cmp r2, #111 ; 0x6f 1cbda: d018 beq.n 1cc0e <_printf_i+0x106> 1cbdc: 270a movs r7, #10 1cbde: e016 b.n 1cc0e <_printf_i+0x106> 1cbe0: 3145 adds r1, #69 ; 0x45 1cbe2: 700a strb r2, [r1, #0] 1cbe4: 4a54 ldr r2, [pc, #336] ; (1cd38 <_printf_i+0x230>) 1cbe6: 9203 str r2, [sp, #12] 1cbe8: 681a ldr r2, [r3, #0] 1cbea: 6821 ldr r1, [r4, #0] 1cbec: 1d10 adds r0, r2, #4 1cbee: 6018 str r0, [r3, #0] 1cbf0: 6815 ldr r5, [r2, #0] 1cbf2: 0608 lsls r0, r1, #24 1cbf4: d522 bpl.n 1cc3c <_printf_i+0x134> 1cbf6: 07cb lsls r3, r1, #31 1cbf8: d502 bpl.n 1cc00 <_printf_i+0xf8> 1cbfa: 2320 movs r3, #32 1cbfc: 4319 orrs r1, r3 1cbfe: 6021 str r1, [r4, #0] 1cc00: 2710 movs r7, #16 1cc02: 2d00 cmp r5, #0 1cc04: d103 bne.n 1cc0e <_printf_i+0x106> 1cc06: 2320 movs r3, #32 1cc08: 6822 ldr r2, [r4, #0] 1cc0a: 439a bics r2, r3 1cc0c: 6022 str r2, [r4, #0] 1cc0e: 0023 movs r3, r4 1cc10: 2200 movs r2, #0 1cc12: 3343 adds r3, #67 ; 0x43 1cc14: 701a strb r2, [r3, #0] 1cc16: 6863 ldr r3, [r4, #4] 1cc18: 60a3 str r3, [r4, #8] 1cc1a: 2b00 cmp r3, #0 1cc1c: db5c blt.n 1ccd8 <_printf_i+0x1d0> 1cc1e: 2204 movs r2, #4 1cc20: 6821 ldr r1, [r4, #0] 1cc22: 4391 bics r1, r2 1cc24: 6021 str r1, [r4, #0] 1cc26: 2d00 cmp r5, #0 1cc28: d158 bne.n 1ccdc <_printf_i+0x1d4> 1cc2a: 9e04 ldr r6, [sp, #16] 1cc2c: 2b00 cmp r3, #0 1cc2e: d064 beq.n 1ccfa <_printf_i+0x1f2> 1cc30: 0026 movs r6, r4 1cc32: 9b03 ldr r3, [sp, #12] 1cc34: 3642 adds r6, #66 ; 0x42 1cc36: 781b ldrb r3, [r3, #0] 1cc38: 7033 strb r3, [r6, #0] 1cc3a: e05e b.n 1ccfa <_printf_i+0x1f2> 1cc3c: 0648 lsls r0, r1, #25 1cc3e: d5da bpl.n 1cbf6 <_printf_i+0xee> 1cc40: b2ad uxth r5, r5 1cc42: e7d8 b.n 1cbf6 <_printf_i+0xee> 1cc44: 6809 ldr r1, [r1, #0] 1cc46: 681a ldr r2, [r3, #0] 1cc48: 0608 lsls r0, r1, #24 1cc4a: d505 bpl.n 1cc58 <_printf_i+0x150> 1cc4c: 1d11 adds r1, r2, #4 1cc4e: 6019 str r1, [r3, #0] 1cc50: 6813 ldr r3, [r2, #0] 1cc52: 6962 ldr r2, [r4, #20] 1cc54: 601a str r2, [r3, #0] 1cc56: e006 b.n 1cc66 <_printf_i+0x15e> 1cc58: 0649 lsls r1, r1, #25 1cc5a: d5f7 bpl.n 1cc4c <_printf_i+0x144> 1cc5c: 1d11 adds r1, r2, #4 1cc5e: 6019 str r1, [r3, #0] 1cc60: 6813 ldr r3, [r2, #0] 1cc62: 8aa2 ldrh r2, [r4, #20] 1cc64: 801a strh r2, [r3, #0] 1cc66: 2300 movs r3, #0 1cc68: 9e04 ldr r6, [sp, #16] 1cc6a: 6123 str r3, [r4, #16] 1cc6c: e054 b.n 1cd18 <_printf_i+0x210> 1cc6e: 681a ldr r2, [r3, #0] 1cc70: 1d11 adds r1, r2, #4 1cc72: 6019 str r1, [r3, #0] 1cc74: 6816 ldr r6, [r2, #0] 1cc76: 2100 movs r1, #0 1cc78: 6862 ldr r2, [r4, #4] 1cc7a: 0030 movs r0, r6 1cc7c: f000 f85e bl 1cd3c 1cc80: 2800 cmp r0, #0 1cc82: d001 beq.n 1cc88 <_printf_i+0x180> 1cc84: 1b80 subs r0, r0, r6 1cc86: 6060 str r0, [r4, #4] 1cc88: 6863 ldr r3, [r4, #4] 1cc8a: 6123 str r3, [r4, #16] 1cc8c: 2300 movs r3, #0 1cc8e: 9a04 ldr r2, [sp, #16] 1cc90: 7013 strb r3, [r2, #0] 1cc92: e041 b.n 1cd18 <_printf_i+0x210> 1cc94: 6923 ldr r3, [r4, #16] 1cc96: 0032 movs r2, r6 1cc98: 9906 ldr r1, [sp, #24] 1cc9a: 9805 ldr r0, [sp, #20] 1cc9c: 9d07 ldr r5, [sp, #28] 1cc9e: 47a8 blx r5 1cca0: 1c43 adds r3, r0, #1 1cca2: d043 beq.n 1cd2c <_printf_i+0x224> 1cca4: 6823 ldr r3, [r4, #0] 1cca6: 2500 movs r5, #0 1cca8: 079b lsls r3, r3, #30 1ccaa: d40f bmi.n 1cccc <_printf_i+0x1c4> 1ccac: 9b09 ldr r3, [sp, #36] ; 0x24 1ccae: 68e0 ldr r0, [r4, #12] 1ccb0: 4298 cmp r0, r3 1ccb2: da3d bge.n 1cd30 <_printf_i+0x228> 1ccb4: 0018 movs r0, r3 1ccb6: e03b b.n 1cd30 <_printf_i+0x228> 1ccb8: 0022 movs r2, r4 1ccba: 2301 movs r3, #1 1ccbc: 3219 adds r2, #25 1ccbe: 9906 ldr r1, [sp, #24] 1ccc0: 9805 ldr r0, [sp, #20] 1ccc2: 9e07 ldr r6, [sp, #28] 1ccc4: 47b0 blx r6 1ccc6: 1c43 adds r3, r0, #1 1ccc8: d030 beq.n 1cd2c <_printf_i+0x224> 1ccca: 3501 adds r5, #1 1cccc: 68e3 ldr r3, [r4, #12] 1ccce: 9a09 ldr r2, [sp, #36] ; 0x24 1ccd0: 1a9b subs r3, r3, r2 1ccd2: 429d cmp r5, r3 1ccd4: dbf0 blt.n 1ccb8 <_printf_i+0x1b0> 1ccd6: e7e9 b.n 1ccac <_printf_i+0x1a4> 1ccd8: 2d00 cmp r5, #0 1ccda: d0a9 beq.n 1cc30 <_printf_i+0x128> 1ccdc: 9e04 ldr r6, [sp, #16] 1ccde: 0028 movs r0, r5 1cce0: 0039 movs r1, r7 1cce2: f7ff fa65 bl 1c1b0 <__aeabi_uidivmod> 1cce6: 9b03 ldr r3, [sp, #12] 1cce8: 3e01 subs r6, #1 1ccea: 5c5b ldrb r3, [r3, r1] 1ccec: 0028 movs r0, r5 1ccee: 7033 strb r3, [r6, #0] 1ccf0: 0039 movs r1, r7 1ccf2: f7ff f9d7 bl 1c0a4 <__udivsi3> 1ccf6: 1e05 subs r5, r0, #0 1ccf8: d1f1 bne.n 1ccde <_printf_i+0x1d6> 1ccfa: 2f08 cmp r7, #8 1ccfc: d109 bne.n 1cd12 <_printf_i+0x20a> 1ccfe: 6823 ldr r3, [r4, #0] 1cd00: 07db lsls r3, r3, #31 1cd02: d506 bpl.n 1cd12 <_printf_i+0x20a> 1cd04: 6863 ldr r3, [r4, #4] 1cd06: 6922 ldr r2, [r4, #16] 1cd08: 4293 cmp r3, r2 1cd0a: dc02 bgt.n 1cd12 <_printf_i+0x20a> 1cd0c: 2330 movs r3, #48 ; 0x30 1cd0e: 3e01 subs r6, #1 1cd10: 7033 strb r3, [r6, #0] 1cd12: 9b04 ldr r3, [sp, #16] 1cd14: 1b9b subs r3, r3, r6 1cd16: 6123 str r3, [r4, #16] 1cd18: 9b07 ldr r3, [sp, #28] 1cd1a: aa09 add r2, sp, #36 ; 0x24 1cd1c: 9300 str r3, [sp, #0] 1cd1e: 0021 movs r1, r4 1cd20: 9b06 ldr r3, [sp, #24] 1cd22: 9805 ldr r0, [sp, #20] 1cd24: f7ff fe82 bl 1ca2c <_printf_common> 1cd28: 1c43 adds r3, r0, #1 1cd2a: d1b3 bne.n 1cc94 <_printf_i+0x18c> 1cd2c: 2001 movs r0, #1 1cd2e: 4240 negs r0, r0 1cd30: b00b add sp, #44 ; 0x2c 1cd32: bdf0 pop {r4, r5, r6, r7, pc} 1cd34: 0002b126 .word 0x0002b126 1cd38: 0002b115 .word 0x0002b115 0001cd3c : 1cd3c: b2c9 uxtb r1, r1 1cd3e: 1882 adds r2, r0, r2 1cd40: 4290 cmp r0, r2 1cd42: d101 bne.n 1cd48 1cd44: 2000 movs r0, #0 1cd46: 4770 bx lr 1cd48: 7803 ldrb r3, [r0, #0] 1cd4a: 428b cmp r3, r1 1cd4c: d0fb beq.n 1cd46 1cd4e: 3001 adds r0, #1 1cd50: e7f6 b.n 1cd40 0001cd52 : 1cd52: b510 push {r4, lr} 1cd54: 4288 cmp r0, r1 1cd56: d902 bls.n 1cd5e 1cd58: 188b adds r3, r1, r2 1cd5a: 4298 cmp r0, r3 1cd5c: d308 bcc.n 1cd70 1cd5e: 2300 movs r3, #0 1cd60: 429a cmp r2, r3 1cd62: d007 beq.n 1cd74 1cd64: 5ccc ldrb r4, [r1, r3] 1cd66: 54c4 strb r4, [r0, r3] 1cd68: 3301 adds r3, #1 1cd6a: e7f9 b.n 1cd60 1cd6c: 5c8b ldrb r3, [r1, r2] 1cd6e: 5483 strb r3, [r0, r2] 1cd70: 3a01 subs r2, #1 1cd72: d2fb bcs.n 1cd6c 1cd74: bd10 pop {r4, pc} ... 0001cd78 <_free_r>: 1cd78: b570 push {r4, r5, r6, lr} 1cd7a: 0005 movs r5, r0 1cd7c: 2900 cmp r1, #0 1cd7e: d010 beq.n 1cda2 <_free_r+0x2a> 1cd80: 1f0c subs r4, r1, #4 1cd82: 6823 ldr r3, [r4, #0] 1cd84: 2b00 cmp r3, #0 1cd86: da00 bge.n 1cd8a <_free_r+0x12> 1cd88: 18e4 adds r4, r4, r3 1cd8a: 0028 movs r0, r5 1cd8c: f000 f8d4 bl 1cf38 <__malloc_lock> 1cd90: 4a1d ldr r2, [pc, #116] ; (1ce08 <_free_r+0x90>) 1cd92: 6813 ldr r3, [r2, #0] 1cd94: 2b00 cmp r3, #0 1cd96: d105 bne.n 1cda4 <_free_r+0x2c> 1cd98: 6063 str r3, [r4, #4] 1cd9a: 6014 str r4, [r2, #0] 1cd9c: 0028 movs r0, r5 1cd9e: f000 f8cc bl 1cf3a <__malloc_unlock> 1cda2: bd70 pop {r4, r5, r6, pc} 1cda4: 42a3 cmp r3, r4 1cda6: d909 bls.n 1cdbc <_free_r+0x44> 1cda8: 6821 ldr r1, [r4, #0] 1cdaa: 1860 adds r0, r4, r1 1cdac: 4283 cmp r3, r0 1cdae: d1f3 bne.n 1cd98 <_free_r+0x20> 1cdb0: 6818 ldr r0, [r3, #0] 1cdb2: 685b ldr r3, [r3, #4] 1cdb4: 1841 adds r1, r0, r1 1cdb6: 6021 str r1, [r4, #0] 1cdb8: e7ee b.n 1cd98 <_free_r+0x20> 1cdba: 0013 movs r3, r2 1cdbc: 685a ldr r2, [r3, #4] 1cdbe: 2a00 cmp r2, #0 1cdc0: d001 beq.n 1cdc6 <_free_r+0x4e> 1cdc2: 42a2 cmp r2, r4 1cdc4: d9f9 bls.n 1cdba <_free_r+0x42> 1cdc6: 6819 ldr r1, [r3, #0] 1cdc8: 1858 adds r0, r3, r1 1cdca: 42a0 cmp r0, r4 1cdcc: d10b bne.n 1cde6 <_free_r+0x6e> 1cdce: 6820 ldr r0, [r4, #0] 1cdd0: 1809 adds r1, r1, r0 1cdd2: 1858 adds r0, r3, r1 1cdd4: 6019 str r1, [r3, #0] 1cdd6: 4282 cmp r2, r0 1cdd8: d1e0 bne.n 1cd9c <_free_r+0x24> 1cdda: 6810 ldr r0, [r2, #0] 1cddc: 6852 ldr r2, [r2, #4] 1cdde: 1841 adds r1, r0, r1 1cde0: 6019 str r1, [r3, #0] 1cde2: 605a str r2, [r3, #4] 1cde4: e7da b.n 1cd9c <_free_r+0x24> 1cde6: 42a0 cmp r0, r4 1cde8: d902 bls.n 1cdf0 <_free_r+0x78> 1cdea: 230c movs r3, #12 1cdec: 602b str r3, [r5, #0] 1cdee: e7d5 b.n 1cd9c <_free_r+0x24> 1cdf0: 6821 ldr r1, [r4, #0] 1cdf2: 1860 adds r0, r4, r1 1cdf4: 4282 cmp r2, r0 1cdf6: d103 bne.n 1ce00 <_free_r+0x88> 1cdf8: 6810 ldr r0, [r2, #0] 1cdfa: 6852 ldr r2, [r2, #4] 1cdfc: 1841 adds r1, r0, r1 1cdfe: 6021 str r1, [r4, #0] 1ce00: 6062 str r2, [r4, #4] 1ce02: 605c str r4, [r3, #4] 1ce04: e7ca b.n 1cd9c <_free_r+0x24> 1ce06: 46c0 nop ; (mov r8, r8) 1ce08: 20004ca8 .word 0x20004ca8 0001ce0c <_malloc_r>: 1ce0c: 2303 movs r3, #3 1ce0e: b570 push {r4, r5, r6, lr} 1ce10: 1ccd adds r5, r1, #3 1ce12: 439d bics r5, r3 1ce14: 3508 adds r5, #8 1ce16: 0006 movs r6, r0 1ce18: 2d0c cmp r5, #12 1ce1a: d21e bcs.n 1ce5a <_malloc_r+0x4e> 1ce1c: 250c movs r5, #12 1ce1e: 42a9 cmp r1, r5 1ce20: d81d bhi.n 1ce5e <_malloc_r+0x52> 1ce22: 0030 movs r0, r6 1ce24: f000 f888 bl 1cf38 <__malloc_lock> 1ce28: 4a25 ldr r2, [pc, #148] ; (1cec0 <_malloc_r+0xb4>) 1ce2a: 6814 ldr r4, [r2, #0] 1ce2c: 0021 movs r1, r4 1ce2e: 2900 cmp r1, #0 1ce30: d119 bne.n 1ce66 <_malloc_r+0x5a> 1ce32: 4c24 ldr r4, [pc, #144] ; (1cec4 <_malloc_r+0xb8>) 1ce34: 6823 ldr r3, [r4, #0] 1ce36: 2b00 cmp r3, #0 1ce38: d103 bne.n 1ce42 <_malloc_r+0x36> 1ce3a: 0030 movs r0, r6 1ce3c: f000 f86a bl 1cf14 <_sbrk_r> 1ce40: 6020 str r0, [r4, #0] 1ce42: 0029 movs r1, r5 1ce44: 0030 movs r0, r6 1ce46: f000 f865 bl 1cf14 <_sbrk_r> 1ce4a: 1c43 adds r3, r0, #1 1ce4c: d12c bne.n 1cea8 <_malloc_r+0x9c> 1ce4e: 230c movs r3, #12 1ce50: 0030 movs r0, r6 1ce52: 6033 str r3, [r6, #0] 1ce54: f000 f871 bl 1cf3a <__malloc_unlock> 1ce58: e003 b.n 1ce62 <_malloc_r+0x56> 1ce5a: 2d00 cmp r5, #0 1ce5c: dadf bge.n 1ce1e <_malloc_r+0x12> 1ce5e: 230c movs r3, #12 1ce60: 6033 str r3, [r6, #0] 1ce62: 2000 movs r0, #0 1ce64: bd70 pop {r4, r5, r6, pc} 1ce66: 680b ldr r3, [r1, #0] 1ce68: 1b5b subs r3, r3, r5 1ce6a: d41a bmi.n 1cea2 <_malloc_r+0x96> 1ce6c: 2b0b cmp r3, #11 1ce6e: d903 bls.n 1ce78 <_malloc_r+0x6c> 1ce70: 600b str r3, [r1, #0] 1ce72: 18cc adds r4, r1, r3 1ce74: 6025 str r5, [r4, #0] 1ce76: e003 b.n 1ce80 <_malloc_r+0x74> 1ce78: 428c cmp r4, r1 1ce7a: d10e bne.n 1ce9a <_malloc_r+0x8e> 1ce7c: 6863 ldr r3, [r4, #4] 1ce7e: 6013 str r3, [r2, #0] 1ce80: 0030 movs r0, r6 1ce82: f000 f85a bl 1cf3a <__malloc_unlock> 1ce86: 0020 movs r0, r4 1ce88: 2207 movs r2, #7 1ce8a: 300b adds r0, #11 1ce8c: 1d23 adds r3, r4, #4 1ce8e: 4390 bics r0, r2 1ce90: 1ac3 subs r3, r0, r3 1ce92: d0e7 beq.n 1ce64 <_malloc_r+0x58> 1ce94: 425a negs r2, r3 1ce96: 50e2 str r2, [r4, r3] 1ce98: e7e4 b.n 1ce64 <_malloc_r+0x58> 1ce9a: 684b ldr r3, [r1, #4] 1ce9c: 6063 str r3, [r4, #4] 1ce9e: 000c movs r4, r1 1cea0: e7ee b.n 1ce80 <_malloc_r+0x74> 1cea2: 000c movs r4, r1 1cea4: 6849 ldr r1, [r1, #4] 1cea6: e7c2 b.n 1ce2e <_malloc_r+0x22> 1cea8: 2303 movs r3, #3 1ceaa: 1cc4 adds r4, r0, #3 1ceac: 439c bics r4, r3 1ceae: 42a0 cmp r0, r4 1ceb0: d0e0 beq.n 1ce74 <_malloc_r+0x68> 1ceb2: 1a21 subs r1, r4, r0 1ceb4: 0030 movs r0, r6 1ceb6: f000 f82d bl 1cf14 <_sbrk_r> 1ceba: 1c43 adds r3, r0, #1 1cebc: d1da bne.n 1ce74 <_malloc_r+0x68> 1cebe: e7c6 b.n 1ce4e <_malloc_r+0x42> 1cec0: 20004ca8 .word 0x20004ca8 1cec4: 20004cac .word 0x20004cac 0001cec8 <_realloc_r>: 1cec8: b5f8 push {r3, r4, r5, r6, r7, lr} 1ceca: 0007 movs r7, r0 1cecc: 000d movs r5, r1 1cece: 0016 movs r6, r2 1ced0: 2900 cmp r1, #0 1ced2: d105 bne.n 1cee0 <_realloc_r+0x18> 1ced4: 0011 movs r1, r2 1ced6: f7ff ff99 bl 1ce0c <_malloc_r> 1ceda: 0004 movs r4, r0 1cedc: 0020 movs r0, r4 1cede: bdf8 pop {r3, r4, r5, r6, r7, pc} 1cee0: 2a00 cmp r2, #0 1cee2: d103 bne.n 1ceec <_realloc_r+0x24> 1cee4: f7ff ff48 bl 1cd78 <_free_r> 1cee8: 0034 movs r4, r6 1ceea: e7f7 b.n 1cedc <_realloc_r+0x14> 1ceec: f000 f826 bl 1cf3c <_malloc_usable_size_r> 1cef0: 002c movs r4, r5 1cef2: 4286 cmp r6, r0 1cef4: d9f2 bls.n 1cedc <_realloc_r+0x14> 1cef6: 0031 movs r1, r6 1cef8: 0038 movs r0, r7 1cefa: f7ff ff87 bl 1ce0c <_malloc_r> 1cefe: 1e04 subs r4, r0, #0 1cf00: d0ec beq.n 1cedc <_realloc_r+0x14> 1cf02: 0029 movs r1, r5 1cf04: 0032 movs r2, r6 1cf06: f7ff fbaa bl 1c65e 1cf0a: 0029 movs r1, r5 1cf0c: 0038 movs r0, r7 1cf0e: f7ff ff33 bl 1cd78 <_free_r> 1cf12: e7e3 b.n 1cedc <_realloc_r+0x14> 0001cf14 <_sbrk_r>: 1cf14: 2300 movs r3, #0 1cf16: b570 push {r4, r5, r6, lr} 1cf18: 4c06 ldr r4, [pc, #24] ; (1cf34 <_sbrk_r+0x20>) 1cf1a: 0005 movs r5, r0 1cf1c: 0008 movs r0, r1 1cf1e: 6023 str r3, [r4, #0] 1cf20: f7e4 fc32 bl 1788 <_sbrk> 1cf24: 1c43 adds r3, r0, #1 1cf26: d103 bne.n 1cf30 <_sbrk_r+0x1c> 1cf28: 6823 ldr r3, [r4, #0] 1cf2a: 2b00 cmp r3, #0 1cf2c: d000 beq.n 1cf30 <_sbrk_r+0x1c> 1cf2e: 602b str r3, [r5, #0] 1cf30: bd70 pop {r4, r5, r6, pc} 1cf32: 46c0 nop ; (mov r8, r8) 1cf34: 20004e90 .word 0x20004e90 0001cf38 <__malloc_lock>: 1cf38: 4770 bx lr 0001cf3a <__malloc_unlock>: 1cf3a: 4770 bx lr 0001cf3c <_malloc_usable_size_r>: 1cf3c: 1f0b subs r3, r1, #4 1cf3e: 681b ldr r3, [r3, #0] 1cf40: 1f18 subs r0, r3, #4 1cf42: 2b00 cmp r3, #0 1cf44: da01 bge.n 1cf4a <_malloc_usable_size_r+0xe> 1cf46: 580b ldr r3, [r1, r0] 1cf48: 18c0 adds r0, r0, r3 1cf4a: 4770 bx lr 1cf4c: 3230255b .word 0x3230255b 1cf50: 30253a75 .word 0x30253a75 1cf54: 253a7532 .word 0x253a7532 1cf58: 3a753230 .word 0x3a753230 1cf5c: 75333025 .word 0x75333025 1cf60: 0000005d .word 0x0000005d 0001cf64 : 1cf64: 1662e40a 0000855b 0001cf70 ..b.[...p... 0001cf70 : 1cf70: ff07060b ffac882c ff871f25 ff895139 ....,...%...9Q.. 1cf80: ffdcc46d ffc88348 ffc65632 ff46434d m...H...2V..MCF. 1cf90: ff480a16 ffbca25c ffc22d38 ff8b6c67 ..H.\...8-..gl.. 1cfa0: ff48272d ff893622 ffc76d41 ffc38576 -'H."6..Am..v... 1cfb0: ffc6a49a ffa53520 ff692621 ffa95139 .... 5..!&i.9Q.. 1cfc0: ffe8e2a9 ff26242e ffe96e40 ffe98843 .....$&.@n..C... 1cfd0: ffaea64b ff873848 ffc5c4c9 ffa86e33 K...H8......3n.. 1cfe0: ff69646a ffe45640 ff69342e ff280917 jdi.@V...4i...(. 1cff0: ffa8554e ffe7a996 ff838383 ff67101b NU............g. 1d000: ff9e8880 ffc76e60 ffe7a65f ffe99647 ....`n.._...G... 1d010: ffe68779 ffa9202e ff694527 ff8a4335 y.... ..'Ei.5C.. 1d020: ffa76f64 ff493329 ffc0b5af ff89575f do..)3I....._W.. 1d030: ffc75543 ffa9462d ff9f9789 ffab603f CU..-F......?`.. 1d040: ff882c1d ffc97948 ff27151b ffc69482 .,..Hy....'..... 1d050: ff69282f ffe6b669 ffdfd484 ff48151b /(i.i.........H. 1d060: ffc89364 ffe66e5b ffc14715 ffe4c4bc d...[n...G...... 1d070: ff98371e ffc66343 ffe1e4e8 ff73542a .7..Cc......*Ts. 1d080: ff673a3e ffb7532b ff872b32 ffe68a60 >:g.+S..2+..`... 1d090: ff19141e ffd68448 ff38373f ffea9964 ....H...?78.d... 1d0a0: ffd69881 ff875f47 ff592621 ff37161a ....G_..!&Y...7. 1d0b0: ffe65550 ff886e77 ffd8a894 ffa97a73 PU..wn......sz.. 1d0c0: ff571922 ffeba872 fff6f3de ffa3a59e ".W.r........... 1d0d0: ffe03d49 ff671c24 ffa28c94 ffa86254 I=..$.g.....Tb.. 1d0e0: ffecc483 ffd76e48 ffa9473f ffa93a38 ....Hn..?G..8:.. 1d0f0: ffd5d4d6 ffa77937 ffe76254 ff595861 ....7y..Tb..aXY. 1d100: ff884648 ffd6b4a7 ffb0999a ff9b5036 HF..........6P.. 1d110: ff782620 ff392328 ffb3b5b4 ffe77a45 &x.(#9.....Ez.. 1d120: ffe8b596 ff593331 ffd87a46 ffc19aa2 ....13Y.Fz...... 1d130: ff160c16 ffb1887e ff886263 ff797679 ....~...cb..yvy. 1d140: ff762930 ffc13d43 ff973c30 ff79362d 0)v.C=..0<..-6y. 1d150: ff67474c ff994530 ffbfb560 fff7975f LGg.0E..`..._... 1d160: ffd7624b ffc9875c ff952d18 ffe87959 Kb..\....-..Yy.. 1d170: ffc04945 ff94968f ff9c9729 ffebddae EI......)....... 1d180: ffc0aa64 ffe99a78 fff3ead1 ffc56232 d...x.......2b.. 1d190: ffd8343e ff685a61 ffda9842 fff1643e >4..aZh.B...>d.. 1d1a0: ff928678 ffd8b859 ffc67a62 ffe4dcdd x...Y...bz...... 1d1b0: ff867c7c ff574a54 ffdaa94f ffd58a7b ||..TJW.O...{... 1d1c0: ffafa9a4 ffd9a57b ffd6cdcd ff766b6f ....{.......okv. 1d1d0: ffecd27c fff7b894 ffa99931 ff84766c |.......1...lv.. 1d1e0: ffe1cb82 ffd85019 fff5b57b ffb96d49 .....P..{...Im.. 1d1f0: ffbb7947 ffac2b34 ffd7895e ffa48654 Gy..4+..^...T... 1d200: ff972129 ff570c18 ffc3aaaf ffede6bf )!....W......... 1d210: ffacac64 ff370815 fff9a55c ff7b4432 d.....7.\...2D{. 1d220: ffc1bcbf fff69b7e ff78575a ffb76e5f ....~...ZWx._n.. 1d230: ff99614b ffb97a64 ff771a22 ff994747 Ka..dz..".w.GG.. 1d240: ff986266 fff68745 fff6a996 ff77121c fb..E.........w. 1d250: fff7964c ffd8544a fffbc7b6 ff783a40 L...JT......@:x. 1d260: fffa875f fff5a67a ffae8b97 ff78484a _...z.......JHx. 1d270: fff8d7bb fffbfaf8 fff2c89a ffeeebeb ................ 1d280: fffb6e49 ffb7624f fffb6459 ffd97965 In..Ob..Yd..ey.. 1d290: ff883930 ff973747 ff483942 ff291825 09..G7..B9H.%.). 1d2a0: ffe4da9b ff481725 ffd79d99 ff381825 ....%.H.....%.8. 1d2b0: fff75652 ff995249 ffe5bcb4 ff5a373e RV..IR......>7Z. 1d2c0: ff98944c ffd99566 fffcd2d4 ffb7584e L...f.......NX.. 1d2d0: ff97595d ffc3343f ffdc494b ff95786b ]Y..?4..KI..kx.. 1d2e0: ffb9613b ff982931 fff97a43 ffd03c46 ;a..1)..Cz..F<.. 1d2f0: fffb785b ff997b7b ffa63c23 ffc79d8b [x..{{..#<...... 1d300: ffdadbdf ff885350 ff9f9b96 ffeab97a ....PS......z... 1d310: ffb7553a ff572a2f ffd7aba7 ffd9babb :U../*W......... 1d320: ff382938 ff8e8b89 ffdbbb69 ffecd7a1 8)8.....i....... 1d330: fff8b8ab ff966f68 ffab6c51 ffd86f5d ....ho..Ql..]o.. 1d340: fffb6e5b ff997077 ffd56331 ffd14848 [n..wp..1c..HH.. 1d350: fffc5a44 ffdccc73 ff4b4b54 ffc38c7a DZ..s...TKK.z... 1d360: ffc6ac9f ff2b2c37 ffcbcbcf ff6b6b6f ....7,+.....okk. 1d370: 70707070 70707070 70707070 70704870 pppppppppppppHpp 1d380: 48487070 36363648 e90c69cb 7744442d ppHHH666.i..-DDw 1d390: 771212e9 133179c8 c8763113 133179c8 ...w.y1..1v..y1. 1d3a0: e2e23131 407e40e2 40e2e2e2 25c531e2 11...@~@...@.1.% 1d3b0: 30c785a2 0d76b35e 46464646 404040dd ...0^.v.FFFF.@@@ 1d3c0: d1135e5f 5f762bb3 c876765f 9ca240c8 _^...+v__vv..@.. 1d3d0: e714c156 bd0439bd 9c263ae7 140404a7 V....9...:&..... 1d3e0: 7be0bce7 8047efef f3bc3d80 569c4733 ...{..G..=..3G.V 1d3f0: 5c56c1c1 9ce79cee 56ef39f9 9c86f93a ..V\.....9.V:... 1d400: 0e0ec785 9ccc55c7 c156e74b 9f35a2c2 .....U..K.V...5. 1d410: 9f9f9f9f 339f9f9f 67672033 20677979 .......33 ggyyg 1d420: dc132020 1e126717 7070704e 70707070 ...g..Nppppppp 1d430: 70707070 70487070 48487070 36364848 ppppppHpppHHHH66 1d440: 694e0c36 2b2b2d69 744e1e2b 3179c877 6.Nii-+++.Ntw.y1 1d450: 7631315e 3179c8c8 e2313113 3440e2e2 ^11v..y1.11...@4 1d460: e2313140 9f9fd731 c72825c5 76b35e30 @11.1....%(.0^.v 1d470: 4634340d 40407e46 13b37640 2b2bb3d1 .44FF~@@@v....++ 1d480: 40765f5f 6e407676 86c1869c f9e73904 __v@vv@n.....9.. 1d490: 559c3955 ee9c869c f4bc5c14 4783ef7b U9.U.....\..{..G 1d4a0: bc625e80 044720f3 c1c1c186 c28304f9 .^b.. G......... 1d4b0: 9c39f9e7 a7f9ccc1 35354b9c a75cd535 ..9......K555.\. 1d4c0: 565c55ef 3cd5efc1 7d7d7d7d 05050505 .U\V...<}}}}.... 1d4d0: c59f9fa0 33333333 dc333333 77136e17 ....3333333..n.w 1d4e0: 7070740d 70707070 70707070 36487070 .tppppppppppppH6 1d4f0: 48707048 cb364848 4e4ecb36 bb1e1e0c HppHHH6.6.NN.... 1d500: 4ec82bb3 2bc87777 79797979 79c8c876 .+.Nww.+yyyyv..y 1d510: 31131331 40e2e231 1331e240 13c5af33 1..11..@@.1.3... 1d520: 28f3e831 b35ee8f3 34340d76 7e7e4646 1..(..^.v.44FF~~ 1d530: b3764040 2bb3d113 76315f2b 40767640 @@v....++_1v@vv@ 1d540: 86a79c6e e7393a56 f955553a 9c86e726 n...V:9.:UU.&... 1d550: b59c83ee 83efbce0 7cb35e4b 6e13f3e0 ........K^.|...n 1d560: c1c186e7 a73a3ac1 550455e7 0483c19c .....::..U.U.... 1d570: 67a2e73a 5c55a2a0 5c9e14a7 2683c156 :..g..U\...\V..& 1d580: 3c3c3cd5 7d7d3c3c 9f350505 9fdcdc9f .<<<<<}}..5..... 1d590: 3113c5c5 33336e0e 700d0d34 70707070 ...1.n334..ppppp 1d5a0: 70707070 48707070 70704836 36484848 pppppppH6HppHHH6 1d5b0: 1e6936cb bb790c0c c82bbbbb c877744e .6i...y...+.Ntw. 1d5c0: 2b2bc8c8 76c8c8c8 13133179 31313131 ..++...vy1..1111 1d5d0: c53176e2 7613c5af 25e83176 b3e841f3 .v1....vv1.%.A.. 1d5e0: 340d76b3 34343434 5f114040 b3d1d1b3 .v.44444@@._.... 1d5f0: 3131762b 76767676 c2e7f340 04a7c1c0 +v11vvvv@....... 1d600: 55553a04 86e72604 9ccc8d3a c2bce0b8 .:UU.&..:....... 1d610: b35e4bcc d13de07c c1a7396e 8383c1c1 .K^.|.=.n9...... 1d620: 042639a7 14c19c55 9f4b9ee7 99853564 .9&.U.....K.d5.. 1d630: 9e14a75c 83c186e7 7d3cd526 7d3c3c3c \.......&.<}<<<} 1d640: a005057d 33dc9f9f 13dcc5dc 0d794579 }......3....yEy. 1d650: 0d74680d 70707070 70707070 70707070 .ht.pppppppppppp 1d660: 70704836 36484870 cfcbcbcb 2b1e6912 6HpppHH6.....i.+ 1d670: 2b6dbbbb 7774122b 762b2bc8 c8c8c876 ..m++.tw.++vv... 1d680: 13317976 13313113 9f133131 407933af vy1..11.11...3y@ 1d690: 790d7676 5ee8e8e8 0d76b3b3 34343434 vv.y...^..v.4444 1d6a0: 11407e34 1313b35f 31767967 76767631 4~@._...gyv11vvv 1d6b0: 390e7676 c1c156ef 39cc043a 39260426 vv.9.V..:..9&.&9 1d6c0: cc8def86 bce0b89c 5e4bcc5c 3dbc7c64 ........\.K^d|.= 1d6d0: a7550ed1 a7c1c1c1 26e7a7cc 569c55ee ..U........&.U.V 1d6e0: 35475583 2149f1b0 14143a9c c186e79e .UG5..I!.:...... 1d6f0: 3cd52683 7d7d7d7d 3505057d dc9fa035 .&.<}}}}}..55... 1d700: 13133333 0d767979 12743379 70707068 33..yyv.y3t.hppp 1d710: 70707070 70707070 70704848 36484870 ppppppppHHpppHH6 1d720: cbcbcb36 c80c3636 d344bb2b 7412bb79 6...66..+.D.y..t 1d730: 792bc877 76797979 3179c8c8 13131313 w.+yyyyv..y1.... 1d740: af9f1331 763113dc e6344040 3131e22c 1.....1v@@4.,.11 1d750: 7679b35e 34340d0d 40403434 13b35f11 ^.yv..4444@@._.. 1d760: 76b31313 7679315f 417676c8 c1c11439 ...v_1yv.vvA9... 1d770: 1404ccc1 26ee4be7 8d83a755 f4b89c3a .....K.&U...:... 1d780: 4bcce7bc bc7cb35e 260e133d c1c1c183 ...K^.|.=..&.... 1d790: e7a79c83 e755e726 0e4befa7 a2f2f5dc ....&.U...K..... 1d7a0: 143acc5c ef55e714 d52683c1 a27d7d3c \.:...U...&.<}}. 1d7b0: 05057d7d 9f356e35 311333dc 40767979 }}..5n5..3.1yyv@ 1d7c0: c87d3334 70701268 70707070 70704870 43}.h.pppppppHpp 1d7d0: 70707070 48487070 cbcbcb36 773636cb ppppppHH6....66w 1d7e0: 44bb2b76 1ee91ebb 2bc87774 31317979 v+.D....tw.+yy11 1d7f0: 79c8c879 e8e81331 c5b19fe8 31313131 y..y1.......1111 1d800: 647e0d40 5e406fc1 b35e5e5e 34340d76 @.~d.o@^^^^.v.44 1d810: 40343434 b35f4040 5e131313 31313176 444@@@_....^v111 1d820: 76767631 56ef3941 f914c1c1 397b5ca7 1vvvA9.V.....\{9 1d830: 83a72626 273a9c8d 3a39e0f4 b9b3804b &&....:'..9:K... 1d840: c5133dbc c1c18355 869c83c1 55e7269c .=..U........&.U 1d850: c75c3ae7 33e633dc 3a145cd5 bde714cc .:\..3.3.\.:.... 1d860: 26ef865c 7d7d3c3c 05057d7d 35491735 \..&<<}}}}..5.I5 1d870: 1333dc9f 0d0d7979 c513680d 7074680d ..3.yy...h...htp 1d880: 48487070 70364870 70483670 48707070 ppHHpH6pp6HppppH 1d890: cbcbcb48 cbcbcbcb bb2b7677 771e6d44 H.......wv+.Dm.w 1d8a0: 77771277 3179792b c8c87931 e8131379 w.ww+yy11y..y... 1d8b0: d78e8ec5 31e2e231 024040e2 40a6c1be ....1..1.@@....@ 1d8c0: 5e5e5e5e 340d76b3 0d346834 5f404040 ^^^^.v.44h4.@@@_ 1d8d0: 1313135e 31315e5e 795e3131 5c264176 ^...^^1111^yvA&\ 1d8e0: a7c1c186 7b9ca7f9 83264b55 3a048da7 .......{UK&....: 1d8f0: bdf4f44b 5e807b3a 5b3de030 c18699af K...:{.^0.=[.... 1d900: 9c14c1c1 554b9c86 4be75555 662ce89f ......KUUU.K..,f 1d910: 145c4b33 e714cc3a efcc9ebd 7d3c7d85 3K\.:........}<} 1d920: 057d7d7d 6e176e05 33dc9f35 0d767913 }}}..n.n5..3.yv. 1d930: 79680d0d 74687413 70707070 48367070 ..hy.thtpppppp6H 1d940: 36367070 48707048 cbcb3648 69cbcbcb pp66HppHH6.....i 1d950: bb1e6936 bb44d344 777777c8 792b2b77 6i..D.D..wwww++y 1d960: c8c87979 e8137979 e8257d8e 40403113 yy..yy...}%..1@@ 1d970: 4040e2e2 60c1fe68 5e5e3176 0d76b35e ..@@h..`v1^^^.v. 1d980: bb72680d 11e27eb2 13135e5f 315ee813 .hr..~.._^....^1 1d990: 5ee85e31 aa877931 c1c1869e 3aa7f9a7 1^.^1y.........: 1d9a0: 4b4b267b ee26a783 f4f44b3a 307b9cad {&KK..&.:K....{0 1d9b0: 17e0e85e 83c210b1 a7c1c156 4b9c869c ^.......V......K 1d9c0: 477b5555 6613dc0e 5c4bdc24 cc3a9ccc UU{G...f$.K\..:. 1d9d0: 5cbdade7 7d7dd55c 7d7d7d7d 49173505 ...\\.}}}}}}.5.I 1d9e0: dc9f9f35 76797913 340d0d0d 68687468 5....yyv...4hthh 1d9f0: 70707068 70707070 48703670 70484836 hpppppppp6pH6HHp 1da00: cbcb4848 cbcbcbcb 69cbcbcb 2b44d32d HH.........i-.D+ 1da10: 770dc8ab 2b2b7777 c8c8792b 9f137979 ...www+++y..yy.. 1da20: d7418e8e 344031e8 40e2e27e 5642e534 ..A..1@4~..@4.BV 1da30: 5e5fd156 76b35e5e 2eb20d0d 7e7766c1 V._^^^.v.....fw~ 1da40: 135e31e2 5ee81313 13133131 6e311313 .1^....^11....1n 1da50: c156e7aa 863a86c1 4b4b7bcc 39a7cc4b ..V...:..{KKK..9 1da60: e04bf939 7be77bc6 27dc5e30 5510fc85 9.K..{.{0^.'...U 1da70: c1c1569c 9c86f9a7 bcad4b4b 67dce80e .V......KK.....g 1da80: d50eb4ac 9c9c3a5c 85ade7cc 7dd59e9e ....\:.........} 1da90: 7d7d7d7d 4935057d dc9f3535 79791333 }}}}}.5I55..3.yy 1daa0: 0d0d4076 6868340d 70707474 70707070 v@...4hhttpppppp 1dab0: 70487070 4836cf48 cb484870 cb15cbcb ppHpH.6HpHH..... 1dac0: 0ccbcbcb 44d32d0c 7979ab2b 2b77c840 .....-.D+.yy@.w+ 1dad0: 7931792b 8edc7979 4141258e 7e1131d7 +y1yyy...%AA.1.~ 1dae0: 11117e34 c3e10240 4053c1c3 b35e5e5e 4~..@.....S@^^^. 1daf0: 340d0d76 42c142bb 5e3134f1 13131313 v..4.B.B.41^.... 1db00: 13135e5e dcc535e8 569c4b27 3a86c1c1 ^^...5..'K.V...: 1db10: 7b7bcca7 a73a4b4b 4bee2639 e7bcc6e0 ..{{KK:.9&.K.... 1db20: 8ac5b97b 5b715255 c156ee47 86f9a7c1 {...URq[G.V..... 1db30: bc7b4b3a 1313e85d 0ed11ab4 9c3ae7d5 :K{.].........:. 1db40: ad5ccc9c a2555585 7d7d7d7d 05057d7d ..\..UU.}}}}}}.. 1db50: 9f9f3505 793113dc 76767979 76767676 .5....1yyyvvvvvv 1db60: 70120d0d 48707070 70707070 36cfcf70 ...ppppHppppp..6 1db70: 36487036 69cbcbcb e9cb6969 6d4477c8 6pH6...iii...wDm 1db80: 132bd344 c80d795e dc13792b 8eaf1313 D.+.^y..+y...... 1db90: 2541c525 11e2e841 117e347e 94684011 %.A%A...~4~..@h. 1dba0: 10c1c3c3 5e5e5e40 460d76b3 c172b240 ....@^^^.v.F@.r. 1dbb0: c894c1c1 131313e2 135e5e5e dc3939e8 ........^^^..99. 1dbc0: 9c47dcdc 56c1c156 27cca7f9 9c277bb8 ..G.V..V...'.{'. 1dbd0: 394b39a7 bcc6e07b d5f37b55 20b13755 .9K9{...U{..U7. 1dbe0: 86396ed1 f9a7c1c1 bc27efa7 e813e87f .n9.......'..... 1dbf0: 13ac6679 f9e7856e 5c3a5c5c d5d585bd yf..n...\\:\.... 1dc00: 7d7d7dd5 05050505 35350505 1313dc35 .}}}......555... 1dc10: 79797979 79797979 c8797979 70707070 yyyyyyyyyyy.pppp 1dc20: 70707048 cbcf3600 48483636 cbcbcb36 Hppp.6..66HH6... 1dc30: cb696969 bb77c877 ababb3bb 0d763113 iii.w.w......1v. 1dc40: 13792bc8 9fb19fc5 41d7e813 e245e841 .+y........AA.E. 1dc50: 7e347e11 68401111 c1c3c32e 5e31c896 .~4~..@h......1^ 1dc60: 0d76b35e 5940460d c1c1c194 2079d160 ^.v..F@Y....`.y 1dc70: 5eb3b3d1 9f9895e8 47313113 c1c1869c ...^.....11G.... 1dc80: cca73a56 17b8bc27 b839a79c d0f4b8aa V:..'.....9..... 1dc90: 21b69ebc 205bb195 395dd1d1 a7c1c1a7 ...!..[ ..]9.... 1dca0: 273aa7f9 1313dc3d be1a79e8 e7ad47e8 ..:'=....y...G.. 1dcb0: 3a5ce79c a285bd5c 7da24bd5 a005057d ..\:\....K.}}... 1dcc0: 350505a0 13130e6e 79767979 31797979 ...5n...yyvyyyy1 1dcd0: 5e5e315e 70707079 70704848 36004870 ^1^^ypppHHpppH.6 1dce0: 48cb36cf cbcbcb48 69696915 c8c869cb .6.HH....iii.i.. 1dcf0: b3b32b1e 4076b32b 79797940 138e8e13 .+..+.v@@yyy.... 1dd00: 31317979 31314531 3440e2e2 40e2117e yy111E11..@4~..@ 1dd10: c3c360c8 31d1c3c1 7679b313 46460d0d .`.....1..yv..FF 1dd20: c1e47734 53c3c1c1 b3b31379 9fd59f5e 4w.....Sy...^... 1dd30: 31311313 c1a70447 a73a56c1 b8e04bcc ..11G....V:..K.. 1dd40: 55a7e7b5 e0b5bce0 babaadf4 b320c54c ...U........L. . 1dd50: 5db3d1b3 c1c18326 cc830486 13134127 ...]&.......'A.. 1dd60: e4d81313 adad5db4 e7e79c9e 85bd5c3a .....]......:\.. 1dd70: a285d5a2 a0057d7d a0a0a0a0 13339f9f ....}}........3. 1dd80: 0d2b7913 31797976 795e3131 70707979 .y+.vyy111^yyypp 1dd90: 70483648 480ce969 cb363670 cbcb4836 H6Hpi..Hp66.6H.. 1dda0: 696915cb 794ecb69 abab6d77 40312b67 ..iii.Nywm..g+1@ 1ddb0: 13131376 13af8e33 79797979 e2317979 v...3...yyyyyy1. 1ddc0: 4011e2e2 e2117e34 8f42e57e 53c1c342 ...@4~..~.B.B..S 1ddd0: b37913e2 460d0d76 72a44034 c1c156c1 ..y.v..F4@.r.V.. 1dde0: b37971c1 13d75eb3 795e135e a7046e76 .qy..^..^.^yvn.. 1ddf0: f956c1c1 e04b1414 14e7b8b5 bce06226 ..V...K.....&b.. 1de00: babaadbc 5e807cad b3d1b364 c1cc265d .....|.^d...]&.. 1de10: cc0486c1 31e8273a 24791331 ad47d860 ....:'.11.y$`.G. 1de20: e79c9e85 bd5c9ce7 85d5a285 7d7d7da2 ......\......}}} 1de30: a0a0057d 9f9fa0a0 79133333 760d0d0d }.......33.y...v 1de40: 5e793179 7079795e 36364870 0c0c7000 y1y^^yyppH66.p.. 1de50: 367070cb cb484836 6969cbcb 4ecb6969 .pp66HH...iiii.N 1de60: bb1ee9c8 79b32b64 c5d71376 13c57d8e ....d+.yv....}.. 1de70: 76767679 76797979 11e2e240 117e347e yvvvyyyv@...~4~. 1de80: c3e57ee2 c1c3e4e4 79137610 0d0d7679 .~.......v.yyv.. 1de90: 5f403434 c3c16602 37c1c1c1 5e5eb3c8 44@_.f.....7..^^ 1dea0: 315e5e5e ee6e7676 56c1c114 4b14ccf9 ^^^1vvn....V...K 1deb0: 39b5b5e0 bc414b3a adf0babd 80dabcbd ...9:KA......... 1dec0: 20b3645e 3a2641b3 0486c156 13179c9c ^d. .A&:V....... 1ded0: c8135e79 adc56aac 9c398585 5c9ce7e7 y^...j....9....\ 1dee0: 4bd585bd 3c7dd5ad 7d7d3c3c a0a07d7d ...K..}<<<}}}}.. 1def0: 3333339f 0d2b6733 79790d0d b3b35e79 .3333g+...yyy^.. 1df00: 36367070 36000070 7048360c 48487070 pp66p..6.6HpppHH 1df10: 69cbcbcb cb696969 abe9cbcb 1364642b ...iiii.....+dd. 1df20: c5133179 13c57d0f 76767913 79797976 y1...}...yvvvyyy 1df30: 11404076 7e347e40 f17ee211 c36060c1 v@@.@~4~..~..``. 1df40: 137696c1 0d767979 11403446 6077e211 ..v.yyv.F4@...w` 1df50: 565642c3 5e0d6fc1 5e795e5e 5d40765e .BVV.o.^^^y^^v@] 1df60: c1c1cc39 14ccf956 b5bce026 8ed59c26 9...V...&...&... 1df70: e0f0d699 dae07be0 b3645e80 2741b320 .....{...^d. .A' 1df80: 86c186f9 49040404 31137913 f35ae4e5 .......I.y.1..Z. 1df90: 558555bd 9c9ee75c d5bdbd9c 9595b685 .U.U\........... 1dfa0: 216c2121 52525252 b13ce395 13339fa0 !!l!RRRR..<...3. 1dfb0: 0d34c879 b3797676 700036b3 70487048 y.4.vvy..6.pHpHp 1dfc0: 36363670 48707070 15cbcb48 69696969 p666pppHH...iiii 1dfd0: e90c69cb 206413bb c5137920 d7c58e0f .i....d y...... 1dfe0: 76311313 79797676 11404079 347e4011 ..1vvvyyy@@..@~4 1dff0: 02e21134 fe60c15a d856c1c3 76797931 4...Z.`...V.1yyv 1e000: 40340d0d 11315f11 8fe4c12f 66c156c3 ..4@._1./....V.f 1e010: 765e5e0d 0d765e5e 56cc3941 3af956c1 .^^v^^v.A9.V.V.: 1e020: e0f426cc 219ebdb5 bc9eba65 e0bcc6c6 .&.....!e....... 1e030: 195e75da d7b32064 c1860427 ee048d86 .u^.d ..'....... 1e040: 1379136e f542e179 85555547 9e9ee755 n.y.y.B.GUU.U... 1e050: 99993a3a d2baf06c 3c4c9521 7d7d3c3c ::..l...!.L<<<}} 1e060: 4c3c7d7d fbce5252 c879139f 0d34340d }}E. 20dc4: e887dce8 06e845e8 4545e8e8 45e8dce8 .....E....EE...E 20dd4: 13f6de87 37797679 0d0db0fc 7774740d ....yvy7.....ttw 20de4: 74777777 77777474 bbbb77bb 69e90c38 wwwtttww.w..8..i 20df4: 0ccfcfcf 483648cf cbcb48cb 89579169 .....H6H.H..i.W. 20e04: 69690c2d e944bf44 1ebb6444 771e1e1e -.iiD.D.Dd.....w 20e14: 79792b77 0dc8c82b 4141e876 76797913 w+yy+...v.AA.yyv 20e24: 76404040 79797676 40763131 e2e24040 @@@vvvyy11v@@@.. 20e34: 7d333140 13a09552 31e23131 404040e2 @13}R...11.1.@@@ 20e44: 12114011 ff735722 4a979797 00000000 .@.."Ws....J.... 20e54: 00000000 1c1c97ec 739797ff 70704897 ...........s.Hpp 20e64: 60cf7070 31134066 45313131 acace640 pp.`f@.1111E@... 20e74: 32e1db24 4545e2e6 87dce8e8 4545e806 $..2..EE......EE 20e84: 45e8e8e8 e8e8e845 13e80645 e3677631 ...EE...E...1vg. 20e94: 7774b0fc 74747477 77777777 38747474 ..twwtttwwwwttt8 20ea4: bb772b77 cde9bbab cfcfcf69 366969cf w+w.....i....ii6 20eb4: 6d69cbcb e61c6969 6969ec91 d1e5780c ..imii....ii.x.. 20ec4: 1e6d6dab 1e1e6464 792b771e c8c82b2b .mm.dd...w+y++.. 20ed4: 5d30790d 76791341 40404076 79767676 .y0]A.yvv@@@vvvy 20ee4: 79313179 31404040 523c9f13 e2319f4c y11y@@@1.. 22684: 4a6391ab 00000048 00000000 70700000 ..cJH.........pp 22694: cf4fcfcf cd4ecd4f 545454cd cd54544e ..O.O.N..TTTNTT. 226a4: 4e54543b 12771212 46a1df68 cd545459 ;TTN..w.h..FYTT. 226b4: 232354cd a9a9a9a5 a9a9a9a9 080808a9 .T##............ 226c4: 08080808 08080808 a5a5a508 a5a5a5a5 ................ 226d4: a5a5a5a5 08a5a5a5 d9b2a9a9 2323a4df ..............## 226e4: a5a52323 a5a90223 a5a5a5a5 b202b7a5 ##..#........... 226f4: a4d9ddb7 89897391 4444e978 44ed4444 .....s..x.DDDD.D 22704: f7f7b975 5f75dff7 b702a4a1 59b2b2b7 u.....u_.......Y 22714: 54a55459 3b3ba93b 4f4fcdcd 1f4f3636 YT.T;.;;..OO66O. 22724: 1f363636 701f1f70 48707070 70707070 666.p..ppppHpppp 22734: cb364848 79690c69 ec89aef6 00000048 HH6.i.iy....H... 22744: 00000000 70000000 cd1fcd1f 4ecdcdcd .......p.......N 22754: 5454cdcd 54545454 54543b54 12124e54 ..TTTTTTT;TTTN.. 22764: a968d959 1f1f1f1f 701f1f1f a9a5a5a9 Y.h........p.... 22774: a9a9a9a9 a9a9a9a9 0808a908 08080808 ................ 22784: a5080808 a5a5a5a5 a9a908a5 08a9a9a9 ................ 22794: dfd90254 2323a4d9 a5a52323 08a423a5 T.....####...#.. 227a4: a5a5a508 b7a5a5a5 02b7b2b2 89971c59 ............Y... 227b4: 6de96d89 2278d344 dd02dd74 a1a1a1a1 .m.mD.x"t....... 227c4: a4a4dda1 b2020202 54a55459 3ba90854 ........YT.TT..; 227d4: 4f3bcd3b 36361f4f 3636361f 361f1f70 ;.;OO.66.666p..6 227e4: 70707036 70707070 36cb3670 770c69cb 6pppppppp6.6.i.w 227f4: ec91338b 00000048 00007000 70000000 .3..H....p.....p 22804: 364fcf70 4e4fcdcd 54cd3b38 544e4e54 p.O6..ON8;.TTNNT 22814: 54545454 12545454 1f3bdd54 1f1f1f1f TTTTTTT.T.;..... 22824: 1f1f1f1f 0870701f a9a9a9a5 a9a9a9a9 .....pp......... 22834: a9a9a9a9 08080808 08080808 08a50808 ................ 22844: b2a5a9a9 d9a1a1dd d95858d9 2323a4a1 .........XX...## 22854: a5232323 a4a5a5a5 a5a5a959 a5a5a5a5 ###.....Y....... 22864: b2b223a5 89970cb7 e9e97889 89e9d36d .#.......x..m... 22874: dfda021c 2323b2a1 23b7b7b7 54232323 ......##...####T 22884: 3b545454 3ba93b3b 4f3b3b3b 1f1f1f4f TTT;;;.;;;;OO... 22894: 361f1f36 3670701f 48707036 70707070 6..6.pp66ppHpppp 228a4: cb707048 6d69cf69 6944f606 00007036 Hpp.i.im..Di6p.. 228b4: 00700000 00000000 36cd7000 cdcdcd1f ..p......p.6.... 228c4: 4ecd4ee9 545454cd 54545454 54545454 .N.N.TTTTTTTTTTT 228d4: 1f3b5954 1f1f1fa9 1f1f1f1f 1f1f1f1f TY;............. 228e4: a9a5a970 a9a9a9a9 a9a9a9a9 0808a9a9 p............... 228f4: 08080808 a9080808 d9a10208 58585858 ............XXXX 22904: d9d9dfdf 2323a4a1 a5232323 a508a5a5 ......#####..... 22914: a51f0202 a5a5a5a5 23a5a5a5 97fae546 ...........#F... 22924: e9788989 e96de9e9 2308911c a1d9a102 ..x...m....#.... 22934: a523b2a4 080808a5 cd54543b a93b3b3b ..#.....;TT.;;;. 22944: 1f4f3b3b 4fa91f1f 1f70704f 70707070 ;;O....OOpp.pppp 22954: 70707036 70707070 70363670 d30c6936 6pppppppp66p6i.. 22964: 69798b67 007048cb 00000000 00000000 g.yi.Hp......... 22974: 4f700000 cdcd4f1f 543bcd1e 545438e9 ..pO.O....;T.8TT 22984: 5454544e 54545454 a9545459 1f1f1fa9 NTTTTTTTYTT..... 22994: 1f1f1f1f 1f1f1f1f a9701f1f a9a9a9a5 ..........p..... 229a4: a9a9a9a9 a9a9a9a9 0808a9a9 08a90808 ................ 229b4: d9d9d9dd d9dfdfdf a1d9d9d9 23b702a1 ...............# 229c4: a5232323 08a5a5a5 a9a10223 a5a5a508 ###.....#....... 229d4: a5a5a5a5 6389e644 2d898989 6de90c0c ....D..c...-...m 229e4: 0a1effe9 b7b2dda1 020202b2 02a4a402 ................ 229f4: 3ba559b2 3ba9a908 543ba9a9 d9a1ddb2 .Y.;...;..;T.... 22a04: 4f298888 70701f70 48707070 70707070 ..)Op.pppppHpppp 22a14: cb487070 78693636 0c3e06e5 7048cb69 ppH.66ix..>.i.Hp ... 22a2c: 70700000 4f4f7070 cdcd1e4e bbbb4e4e ..ppppOON...NN.. 22a3c: 54544e54 54545454 08545454 1f1f1fa9 TNTTTTTTTTT..... 22a4c: 1f1f1f1f 1f1f1f1f 1f1f1f1f a908a91f ................ 22a5c: a9a9a9a9 a9a9a9a9 a9a9a9a9 591f08a9 ...............Y 22a6c: d9a1a1d9 dfdfdfdf a1d9d9d9 23b70229 ............)..# 22a7c: a5232323 a5a5a5a5 a1b22308 08a5a9b2 ###......#...... 22a8c: 54a5a5a5 69bfe651 918991ff 2d0c0c0c ...TQ..i.......- 22a9c: 741c6d2d 58585888 0a0a8858 b202dda1 -m.t.XXXX....... 22aac: 88d9ddb2 d90ad9d9 88d9d9d9 88888888 ................ 22abc: 88888888 701f7029 70707070 70707070 ....)p.ppppppppp 22acc: 70487070 892d6936 0ce2c889 4848cb69 ppHp6i-.....i.HH 22adc: 00000070 00000000 70000000 36707070 p..........pppp6 22aec: 3b381ecd 381eab1e 54543864 54545454 ..8;...8d8TTTTTT 22afc: cd545454 1f1fa9a9 1f1f1f1f 1f1f1f1f TTT............. 22b0c: 1f1f1f1f 081f1f1f a9a91f08 a9a9a9a9 ................ 22b1c: a9a9a9a9 591f08a9 dfd9d958 d9d9df58 .......YX...X... 22b2c: a1a1d9d9 232302a4 a5232323 a5a5a5a5 ......#####..... 22b3c: b22308a5 08a9a1dd 44a508a5 08388ced ..#........D..8. 22b4c: 89911cca 0c0c0c91 63d30c2d d9a12923 ........-..c#).. 22b5c: 888888d9 58585858 59b229d9 d9d9a102 ....XXXX.).Y.... 22b6c: 880a0ad9 0a0a0ad9 0a0a0a0a 704f0a0a ..............Op 22b7c: 70707070 70707070 48707070 89cacb48 pppppppppppHH... 22b8c: 4e0d2d91 4836cbcb 00007070 00000000 .-.N..6Hpp...... 22b9c: 00000000 36707000 cd38cd1f bb1e7977 .....pp6..8.wy.. 22bac: 54abbb1e 54545454 3b545454 a9a9083b ...TTTTTTTT;;... 22bbc: 1f1f1f1f a9a91f1f 1f1f1f1f 1f1f1f1f ................ 22bcc: a9a90800 a9a9a9a9 a9a9a9a9 08a9a9a9 ................ 22bdc: 0854dd88 d9465908 a1a1a1d9 b723b7a4 ..T..YF.......#. 22bec: a5232323 a5a5a5a5 2308a5a5 b2d902b2 ###........#.... 22bfc: 5154081f a508bfed 918963a9 0ccdca63 ..TQ.....c..c... 22c0c: 910c2d0c a4a4b791 0a0aa1a1 dfd9d90a .-.............. 22c1c: 5858dfdf 6859ddd9 a1a1a129 0a0a0a0a ..XX..Yh)....... 22c2c: a1a10a0a cfdda1a1 70703670 70707070 ........p6pppppp 22c3c: 70707070 6391ec48 cdcd69ca 4836cbcb ppppH..c.i....6H 22c4c: 00007048 00000000 00000000 70700000 Hp............pp 22c5c: 4f4fcd4f 54c80e4e 641e1e1e 54545438 O.OON..T...d8TTT 22c6c: 54545454 a9083b3b 1f1f1fa9 1f1f1f1f TTTT;;.......... 22c7c: 1f1fa9a9 1f1f1f1f 08a9cd1f a9a9a9a9 ................ 22c8c: a9a9a9a9 1fa9a9a9 1f00a502 1f1f1f1f ................ 22c9c: a1d9dda9 2323b702 a5a5a523 a5a5a5a5 ......###....... 22cac: 08a5a5a5 a1b2b223 e6d3540a 08084e90 ....#....T...N.. 22cbc: 91ffcb08 690c6391 0c2d0c0c a4b72d63 .....c.i..-.c-.. 22ccc: a1a12929 a1a1a1a1 88d9d9d9 d958dfd9 ))............X. 22cdc: a42959b2 a1a129a4 dda1a1a1 6846dddd .Y)..)........Fh 22cec: 7036703b 70707070 70707070 07910769 ;p6pppppppppi... 22cfc: 36484815 48483648 00707048 00000000 .HH6H6HHHpp..... 22d0c: 00000000 70007000 cdcd7070 12dc33cd .....p.ppp...3.. 22d1c: 4e4e4e12 5454bbab 54545454 08543b54 .NNN..TTTTTTT;T. 22d2c: 1f1fa9a9 1f1f1f1f 1fa91fa9 1f1f1f1f ................ 22d3c: 12131e1f a9a9a9a9 a9a9a9a9 1fa9a9a9 ................ 22d4c: a9000808 a9a9a9a9 021f1fa9 2323b2a1 ..............## 22d5c: a5a5a523 a5a5a5a5 08a5a5a5 b2b22308 #............#.. 22d6c: e69380a4 08080878 1c4a0808 69916391 ....x.....J..c.i 22d7c: 0c0c0c69 a5cf632d a40223a5 29a12929 i...-c...#..)).) 22d8c: a1a1a1a1 d9df88d9 cd0258df 54545968 .........X..hYTT 22d9c: 59595454 59595959 1f70cd54 70707070 TTYYYYYYT.p.pppp 22dac: cb707070 ec91fa4a 48707048 48484848 ppp.J...HppHHHHH 22dbc: 70704848 00000000 00000000 00000000 HHpp............ 22dcc: 36367000 77791e4f 54e94e77 54ab1e54 .p66O.ywwN.TT..T 22ddc: 54545454 54545454 1fa9a908 1f1f1f1f TTTTTTTT........ 22dec: a9a9a91f 1f1f1f1f 67331e1f a9084f79 ..........3gyO.. 22dfc: 1fa9a9a9 a9a9a9a9 1f1fa91f 1f1f1f1f ................ 22e0c: a9a9a91f 23dddd1f a5a52323 08a508a5 .......###...... 22e1c: a5a5a5a5 b2230808 ceea5bb2 08a9a95e ......#..[..^... 22e2c: 63a90808 ca639163 0c0c6969 a963ca0c ...cc.c.ii....c. 22e3c: a5a508a5 a4a4b2a5 dda1dddd dfd9a1dd ................ 22e4c: dfd9d9df b212cd68 595959b2 cdcd5454 ....h....YYYTT.. 22e5c: 70cfcdcd 70707070 4acb7070 cbec0707 ...ppppppp.J.... 22e6c: 70707048 48484870 48484848 00000070 HppppHHHHHHHp... 22e7c: 00000000 001f0000 4f700000 541ecd4f ..........pOO..T 22e8c: 4e4e774e 3838544e 54545454 54595454 NwNNNT88TTTTTTYT 22e9c: a9a90854 1f1f1f1f a9a91f1f 1f1f1fa9 T............... 22eac: 1379121f a9123113 a9a9a9a9 a9a91f1f ..y..1.......... 22ebc: 1fa91fa9 1f1f1f1f a91f1f1f a1a91fa9 ................ 22ecc: a5a5a5b2 08080808 08080808 23080808 ...............# 22edc: 5ba66619 08290aa1 3608a91f 639191ff .f.[..)....6...c 22eec: 0cec690c fa91ec2d a5a5a508 a5080808 .i..-........... 22efc: 020202b2 4646dddd d9dfd9a1 cf54d9d9 ......FF......T. 22f0c: 595454cd 59595959 cd545959 70707070 .TTYYYYYYYT.pppp 22f1c: ca154870 70cb4a07 70700000 48487070 pH...J.p..ppppHH 22f2c: 48484848 00007070 00000000 70000000 HHHHpp.........p 22f3c: 70000070 4ecf3b36 381e543b 1e544e4e p..p6;.N;T.8NNT. 22f4c: 54545454 59545454 08a53b59 a91f1fa9 TTTTTTTYY;...... 22f5c: a9a91f1f 1fa9a9a9 0d34121f 79131379 ..........4.y..y 22f6c: a9a908a9 1f1f1fa9 a91fa9a9 1f1f1f1f ................ 22f7c: 1f1f1f1f 1fa91f1f a5a5a454 08080808 ........T....... 22f8c: 08080808 cd08a508 7453a6f1 0aa12902 ..........St.).. 22f9c: 1f1f23a1 6391ff4a ec696991 63ec2d0c .#..J..c.ii..-.c 22fac: a5a508ca 3ba5a5a5 b2543b3b dd466802 .......;;;T..hF. 22fbc: d9dd5968 a1d9d9df cdcfcfcf cdcdcdcd hY.............. 22fcc: 545454cd 7070704f 07ca1548 7070154a .TTTOpppH...J.pp 22fdc: 70700070 70707070 48484848 00707070 p.ppppppHHHHppp. ... 22ff8: 4f1f7000 38cd3b4e 544e5438 544e5454 .p.ON;.88TNTTTNT 23008: 54545454 a9595959 1fa9a908 a91f1f1f TTTTYYY......... 23018: 1fa9a9a9 686868a9 13790d34 08081279 .....hhh4.y.y... 23028: 1fa9a9a9 1f1f1f1f 1f1f1fa9 1f1f1f1f ................ 23038: 1f1f1f1f b7b21fa9 080808a5 08080808 ................ 23048: 44080808 596466e6 a1a40223 a4290a0a ...D.fdY#.....). 23058: 63fffaa9 69690763 0c0cecec 08086963 ...cc.ii....ci.. 23068: 08080808 3b3b3b3b 6868593b 5468dd68 ....;;;;;Yhhh.hT 23078: a1d9d946 cdcb68d9 cdcdcdcd cdcdcd54 F....h......T... 23088: 36704f54 4a07caec 70704815 70007070 TOp6...J.Hpppp.p 23098: 70707070 70704848 70707070 00000000 ppppHHpppppp.... 230a8: 70000000 0000701f 70707000 cd3b544f ...p.p...pppOT;. 230b8: 4e4e3838 4e4e5454 54545459 12595959 88NNTTNNYTTTYYY. 230c8: 1f1fa959 a9a91f1f a91f1f1f 68686854 Y...........Thhh 230d8: 76343468 08797979 a9a9a908 1f1f1f1f h44vyyy......... 230e8: 1f1fa91f 1f1f1f1f 1f1f1f1f 3b1fa91f ...............; 230f8: 0808a502 08080808 5154083b 23597294 ........;.TQ.rY# 23108: 02b223b2 a1a1a1a4 ffec0229 69ec631c .#......)....c.i 23118: ececec69 a5a963ca 3b3b3b08 3b3b3b3b i....c...;;;;;;; 23128: 54cdcd3b 46686868 d9745468 cfa1a1a1 ;..ThhhFhTt..... 23138: cdcdcdcf cdcdcdcd 1536cdcd cbec4aca ..........6..J.. 23148: 70707070 70707070 70707000 70707070 pppppppp.ppppppp 23158: 70704870 00000070 00000000 001f7000 pHppp........p.. 23168: a9700000 1f1f7070 381e38cd 3854544e ..p.pp...8.8NTT8 23178: 5454541e 12595959 3b591212 1f1f1fa9 .TTTYYY...Y;.... 23188: 593ba91f 68b26868 34346868 310d0d0d ..;Yhh.hhh44...1 23198: a9a9a912 1f1fa9a9 1f081f1f 1f1f1f1f ................ 231a8: 1f1f1f1f a9a91f1f 0823021f 3b080808 ..........#....; 231b8: e6783b3b a508e9ed 2323b259 a1a102b2 ;;x.....Y.##.... 231c8: a5292929 699163ec ececec69 1ffa07ec )))..c.ii....... 231d8: 3b3b0808 3b3b3b4f cdcd3b3b 686854cd ..;;O;;;;;...Thh 231e8: cd6868b2 d9a1a168 cfcfcf54 cdcdcdcd .hh.h...T....... 231f8: 36cdcdcd 704815ec 70707070 70707070 ...6..Hppppppppp 23208: 70707070 70707070 70484870 00000070 pppppppppHHpp... 23218: 00000000 00707000 00000000 1f70701f .....pp......pp. 23228: 1e38cd1f 5454381e 5412bb12 59595959 ..8..8TT...TYYYY 23238: 59121259 59595959 0d741259 6868680d Y..YYYYYY.t..hhh 23248: 34346868 0d343434 a9a97931 1fa9a9a9 hh44444.1y...... 23258: a91f1f1f 1f1f1fa9 1f1f1f1f a9a91f1f ................ 23268: b259364f 08080808 94e1e908 3b083bae O6Y..........;.; 23278: 23b223a5 a4b259a5 29292929 ca697002 .#.#.Y..)))).pi. 23288: ecec6969 4a91ecec 08a94fa9 4f4f3b3b ii.....J.O..;;OO 23298: 3bcf4f4f 54cdcdcd 6868b2b2 a1ddcd54 OO.;...T..hhT... 232a8: cfcb46d9 cfcdcfcf cfcdcfcf 70707070 .F..........pppp 232b8: 70707070 70364848 70707070 70707070 ppppHH6ppppppppp 232c8: 70484870 00007070 00000000 00000000 pHHppp.......... 232d8: 00000000 70707070 383b1f1f 544e3838 ....pppp..;888NT 232e8: 12771254 59595959 59681259 b2595959 T.w.YYYYY.hYYYY. 232f8: 683468b2 0dc82bc8 34686868 34343434 .h4h.+..hhh44444 23308: 3b131340 a9a9a9a9 1f1f1f1f 1f1f081f @..;............ 23318: 1f1f1f1f a91f1f1f 0d1e4f4f 083b3bb2 ........OO...;;. 23328: 90e6ae08 083b08e9 59a5a53b b723a523 ......;.;..Y#.#. 23338: 2929a4b2 cba92929 ec6969cf 63ececec ..))))...ii....c 23348: a94fa9ec 4f4f4f4f cf4f4f4f cdcdcfcf ..O.OOOOOOO..... 23358: 59b259cd 546868b2 cfa14654 cfcfcfcf .Y.Y.hhTTF...... 23368: cdcfcfcf 7070001f 70707070 36363636 ......pppppp6666 23378: 00707048 70700070 70487070 00007070 Hpp.p.ppppHppp.. ... 23394: 701f7000 a91f7070 5454543b 38121254 .p.ppp..;TTTT..8 233a4: 12125959 68126812 34685959 0d0d6868 YY...h.hYYh4hh.. 233b4: c8c87468 68340dc8 34343434 e8314034 ht....4h44444@1. 233c4: a9a9a912 1f1f1fa9 1f08701f 1f1f1f1f .........p...... 233d4: 4fa9a91f 161e4f4f 0854b245 78e6ed6d ...OOO..E.T.m..x 233e4: 083b3b3b a5a53ba9 a5082359 2902b723 ;;;..;..Y#..#..) 233f4: 1fa5b729 151569cb ecececec a9a936fa )....i.......6.. 23404: 4f4f4fa9 4f4f4f4f cfcfcfcf 54cdcd4f .OOOOOOO....O..T 23414: 36540259 54484848 cfcfcfcd cfcfcfcf Y.T6HHHT........ 23424: 707070cf 48707070 4e4f3636 0070704f .ppppppH66ONOpp. 23434: 00000000 70707000 00000000 00000000 .....ppp........ 23444: 00000000 00007070 00000000 3b707070 ....pp......ppp; 23454: 543ba9a9 59545454 59591259 68686868 ..;TTTTYY.YYhhhh 23464: 0db2b268 c8683476 6868680d 34c80d0d h...v4h..hhh...4 23474: 34340234 31403434 a9a9c813 1f1fa91f 4.4444@1........ 23484: a91f1f1f 1f1f1fa9 a9a9a9a9 06774fa9 .............Ow. 23494: 4e23e8b5 0c51e697 3b3bcd08 a53ba93b ..#N..Q...;;;.;. 234a4: a52323a5 b702b2a5 00000008 15360000 .##...........6. 234b4: ecec1569 4f1ffafa a9a9a9a9 4f4f4f4f i......O....OOOO 234c4: cfcf4f4f cf4fcfcf 483659cd 48cbcb36 OO....O..Y6H6..H 234d4: cfcb4f36 cfcfcfcf 700036cf 36707070 6O.......6.pppp6 234e4: 404f3636 70703640 00000000 70000000 66O@@6pp.......p 234f4: 00000070 00000000 00000000 00000000 p............... 23504: 70000000 70700070 3b08a9a9 59125454 ...pp.pp...;TT.Y 23514: 77123812 68746812 b2b26868 3476130d .8.w.hthhh....v4 23524: b268c876 0d346868 34023434 40343434 v.h.hh4.44.4444@ 23534: 3b797979 1f1f1fa9 701f1f1f a91fa9a9 yyy;.......p.... 23544: 1fa9a9a9 31c8cd1f bf79f687 a9d3edbe .......1..y..... 23554: 3bcdcd3b 3ba9083b 23a5a5a5 08022308 ;..;;..;...#.#.. ... 2356c: 70700000 1f15cb70 a9a9a9a9 4fa9a9a9 ..ppp..........O 2357c: 4f4f4f4f cfcfcf4f 481f59cf 48483636 OOOOO....Y.H66HH 2358c: cf4f3648 4f4fcfcf 7070cf4f 70707070 H6O...OOO.pppppp 2359c: 344f4f36 7036129d 00000070 00000000 6OO4..6pp....... 235ac: 00000070 70007070 00007070 70700000 p...pp.ppp....pp 235bc: 00000000 70007070 4f1f1f70 3838593b ....pp.pp..O;Y88 235cc: 12771212 74127477 68686868 340d68b2 ..w.wt.thhhh.h.4 235dc: 68767634 0d68b2b2 3434340d 34343434 4vvh..h..4444444 235ec: af79400d 1f1f08b4 1f1f1f1f 1fa91f1f .@y............. 235fc: 701fa9a9 79311e4f e35b7976 a94fbf5a ...pO.1yvy[.Z.O. 2360c: cdcd3b3b 4f3b3bcd a508a53b 0023b2a5 ;;...;;O;.....#. ... 23624: 70000000 701fa91f a94f1f4f a9a9a9a9 ...p...pO.O..... 23634: 4f4f4f4f cb364f4f 481f594f 48483636 OOOOOO6.OY.H66HH 23644: 363b4848 364fcfcf 0048cb36 70707070 HH;6..O66.H.pppp 23654: 124fcf36 364fe29d 00000070 70000000 6.O...O6p......p 23664: 00000000 48707000 70707048 00000070 .....ppHHpppp... ... 2367c: 1f1f7070 383854a9 77123838 59747412 pp...T8888.w.ttY 2368c: 68681268 59b26868 3468b2b2 68686834 h.hhhh.Y..h44hhh 2369c: 340dc8c8 34020234 fc37f279 a9543765 ...44..4y.7.e7T. 236ac: 1f1fa91f a91f1fa9 4f1f1fa9 7913791e ...........O.y.y 236bc: 65fbd176 3b081e0f cd3b4fa9 4f4fcdcd v..e...;.O;...OO 236cc: a53b3b4f 00a559a5 00000000 00000000 O;;..Y.......... 236dc: 00000000 4f1f1f1f 1f361f1f 3636361f .......O..6..666 236ec: 4f4f3636 364f3636 48a95436 48484836 66OO66O66T.H6HHH 236fc: 1fcf4848 36364f36 0036cb36 70707070 HH..6O666.6.pppp 2370c: 4ecf3670 36129d3e 70007036 00000000 p6.N>..66p.p.... 2371c: 70000070 48487070 48484848 00004848 p..pppHHHHHHHH.. ... 23734: 1f707000 7454a91f 12383874 74741274 .pp...Ttt88.t.tt 23744: 68b25959 68686868 b2686868 686868b2 YY.hhhhhhhh..hhh 23754: c8790d68 2c2b3434 fbfc2ee3 c831795b h.y.44+,....[y1. 23764: a91f1fa9 a91f1fa9 1e4f1f1f 79314513 ..........O..E1y 23774: e3657167 4f740dd1 3b4fa908 4fcfcdcd gqe...tO..O;...O 23784: 3b4f4f4f 00a9233b 00000000 00000000 OOO;;#.......... 23794: 00000000 701f1f70 3670a91f 361f1f1f ....p..p..p6...6 237a4: 36363636 364f4f36 70083b36 48484848 66666OO66;.pHHHH 237b4: 1f364848 36364f36 00363636 70707070 HH6.6O66666.pppp 237c4: 3b4f361f cde29d40 00004836 70007000 .6O;@...6H...p.p 237d4: 70707000 48484848 15484848 00fd1515 .pppHHHHHHH..... 237e4: 00007070 70000000 70707070 54a9361f pp.....ppppp.6.T 237f4: 74747412 68121212 68595974 68686868 .ttt...htYYhhhhh 23804: 68686868 68b26868 0d343468 fce32c79 hhhhhh.hh44.y,.. 23814: 76d153e3 79764040 1fa97745 1f1f1f1f .S.v@@vyEw...... 23824: 13c84ea9 133113e8 f2fcfcaf 0d0d0dc8 .N....1......... 23834: a9a9a93b cfcdcd4f a9a94f4f 00a9543b ;...O...OO..;T.. ... 2384c: 48151500 1f007070 1fa9701f 36361f1f ...Hpp...p....66 2385c: 36361f1f 36363636 703b3b36 48484848 ..6666666;;pHHHH 2386c: a9364848 36364f1f 70363636 70707000 HH6..O66666p.ppp 2387c: 4f363670 123e3e12 00703636 00000000 p66O.>>.66p..... 2388c: 48487070 15484848 fd151515 07074a4a ppHHHHH.....JJ.. ... 238a4: 1f700000 4f361f1f 7412543b 12681274 ..p...6O;T.tt.h. 238b4: 5959340d 740d6868 68687434 b2686868 .4YYhh.t4thhhhh. 238c4: c8346868 71fcfc53 34340dd1 76767676 hh4.S..q..44vvvv 238d4: 31453131 4e541277 e8e86777 af313113 11E1w.TNwg...11. 238e4: 79716510 0d0d0d0d a9a94e0d cfcf4fa9 .eqy.....N...O.. 238f4: a94f4fcf 001fa5a9 00000000 00000000 .OO............. 23904: cb150000 70707048 1f1f7000 1f1f70a9 ....Hppp.p...p.. 23914: 1f36361f 36363636 703b4f36 48484870 .66.66666O;ppHHH 23924: 1f364848 36363648 70483636 70707070 HH6.H66666Hppppp 23934: 36367070 343e403b 7048364f 00000000 pp66;@>4O6Hp.... 23944: 48484870 15151548 07074afd 4a4a0707 pHHHH....J....JJ 23954: 000000fd 00000000 70700000 361f1f1f ..........pp...6 23964: 12543b4f 68127474 b268130d 0d68b2b2 O;T.tt.h..h...h. 23974: 34346874 68686868 712b6868 79b46ffc th44hhhhhh+q.o.y 23984: 340d0d0d 76797634 31313176 13e8e813 ...44vyvv111.... 23994: 1313e845 37333113 76d13765 0d0dc876 E....137e7.vv... 239a4: 4f74770d cf4fa9a9 a94fcfcf 007008a9 .wtO..O...O...p. ... 239bc: 15480000 70707015 70007070 1f70a91f ..H..ppppp.p..p. 239cc: 361f1f1f 36363636 703b3636 70007070 ...6666666;ppp.p 239dc: 36484848 48484870 00704836 70707070 HHH6pHHH6Hp.pppp 239ec: 36707070 e23e1236 704836cd 48707070 ppp66.>..6HppppH 239fc: 48484848 4afd1515 4a070707 1515fd4a HHHH...J...JJ... 23a0c: 00004848 00000000 00000000 1f363670 HH..........p66. 23a1c: 543b4f36 12747459 68c80d74 68b25959 6O;TYtt.t..hYY.h 23a2c: 68686868 68686834 fc53c8b2 68345b10 hhhh4hhh..S..[4h 23a3c: 0dc8c834 79763434 31313176 13131331 4...44vyv1111... 23a4c: 13131313 650f1331 76795b10 c80dc876 ....1..e.[yvv... 23a5c: 7474770d 4f3b1f4e 4f4fcfcf 0070a93b .wttN.;O..OO;.p. ... 23a74: 15000000 700015cb 70707070 a91f0070 .......pppppp... 23a84: 36363670 36363636 704f3648 70701f70 p6666666H6Opp.pp 23a94: 48487070 36364870 70707048 70707070 ppHHpH66Hppppppp 23aa4: 36707070 e240cf36 483636cd 48484870 ppp66.@..66HpHHH 23ab4: 15484848 07074afd 15fd4a4a 48481515 HHH..J..JJ....HH 23ac4: 00484848 00000000 00000000 1f700000 HHH...........p. 23ad4: cd363670 59595454 74127459 68685912 p66.TTYYYt.t.Yhh 23ae4: 68686868 b2683468 711053c8 34767664 hhhhh4h..S.qdvv4 23af4: 0d0d3468 0d34340d 13137676 13133131 h4...44.vv..11.. 23b04: 31131313 eafcaf13 797979b1 c8c8c876 ...1.....yyyv... 23b14: 74770dc8 1fcf7474 3bcdcd3b 00001f3b ..wttt..;..;;... ... 23b30: 00481515 70707070 00707070 36701f1f ..H.ppppppp...p6 23b40: 48363636 70a94f36 70701f70 70707070 666H6O.pp.pppppp 23b50: 48707070 70007070 70707070 70707070 pppHpp.ppppppppp 23b60: 34cd3636 483636cd 48484848 4afd1548 66.4.66HHHHHH..J 23b70: fd4a074a 48151515 48484848 00707048 J.J....HHHHHHpp. 23b80: 00000000 70000000 70000000 4f367070 .......p...ppp6O 23b90: 5454cdcd 12125959 68685974 0d686868 ..TTYY..tYhhhhh. 23ba0: 77b26868 2b241053 0d346868 34683434 hh.wS.$+hh4.44h4 23bb0: 34343434 31404034 31313113 13131313 44444@@1.111.... 23bc0: 0f65e35b 79797967 c8c8c82b 777777c8 [.e.gyyy+....www 23bd0: 74383874 4f4f7070 0000701f 00000000 t88tppOO.p...... ... 23be8: 48151548 70707000 70707070 00707070 H..H.pppppppppp. 23bf8: 361f7070 701fa936 70707070 70707070 pp.66..ppppppppp 23c08: 70707070 70707070 70707070 70707070 pppppppppppppppp 23c18: cf364870 48cbcbcf 15484848 074afd15 pH6....HHHH...J. 23c28: 1515fd4a 48484815 70484848 00000070 J....HHHHHHpp... ... 23c40: 70000070 4f487070 121254cf 12125959 p..pppHO.T..YY.. 23c50: 68595974 68343434 f1746868 b2c85310 tYYh444hhht..S.. 23c60: 68686868 34343468 34686868 400d3434 hhhhh444hhh444.@ 23c70: 31311331 33313131 33e365fb 76797979 1.111113.e.3yyyv 23c80: c8c8c876 797977c8 38387477 00000038 v....wyywt888... ... 23ca0: 15154800 70700000 70707070 70707070 .H....pppppppppp 23cb0: 70000070 70707070 70707070 70707070 p..ppppppppppppp 23cc0: 70707070 70707070 70707070 70707070 pppppppppppppppp 23cd0: 36487070 cbcbcb36 fd151515 fd4a074a ppH66.......J.J. 23ce0: 48481515 48484848 00707048 00000000 ..HHHHHHHpp..... ... 23cf8: 70000000 36707070 0d12cdcd 59595968 ...pppp6....hYYY 23d08: 59595959 34686868 66e56868 34682bbe YYYYhhh4hh.f.+h4 23d18: 68686868 34686868 34686834 34343434 hhhhhhh44hh44444 23d28: 31317634 b1133131 79f210fc 76767979 4v1111.....yyyvv 23d38: c8c8c8c8 45c877c8 381e74c8 00006938 .....w.E.t.88i.. 23d48: 00707070 00000000 00000000 00000000 ppp............. 23d58: 15150000 70000015 70707070 70707070 .......ppppppppp 23d68: 70707070 70707070 70707070 70707070 pppppppppppppppp 23d78: 70707070 70707070 70707070 70707070 pppppppppppppppp 23d88: 48487070 cbcbcbcb 074aec15 15fd4a07 ppHH......J..J.. 23d98: 48484848 00704848 00000000 00000000 HHHHHHp......... ... 23db4: 70707070 4554cd4f 59595976 59595959 ppppO.TEvYYYYYYY 23dc4: 68685959 66be2b68 0d6868e5 68683434 YYhhh+.f.hh.44hh 23dd4: 68686868 34686868 34460d34 76763434 hhhhhhh44.F444vv 23de4: e3f27940 7967b1fc c8767679 c8c8c8c8 @y....gyyvv..... 23df4: 77777777 381e1e77 00483838 70707000 wwwww..888H..ppp ... 23e10: 15700000 00004815 70707070 70707070 ..p..H..pppppppp 23e20: 70707070 701f7070 70707070 70707070 pppppp.ppppppppp 23e30: 70707070 70707070 70707070 70707070 pppppppppppppppp 23e40: 48484848 15cb4848 ca91074a 4815694a HHHHHH..J...Ji.H 23e50: 70484848 00000000 00000000 00000000 HHHp............ ... 23e6c: 70700000 ab4f3636 59126887 59595959 ..pp66O..h.YYYYY 23e7c: 68685959 dba6f174 6868b274 68340d0d YYhht...t.hh..4h 23e8c: 68686868 34686868 0d0d3434 40343446 hhhhhhh444..F44@ 23e9c: e3372c79 764067b1 c8c8c876 77c8c8c8 y,7..g@vv......w 23eac: 77777777 1e1e1e1e 000c3838 70000000 wwww....88.....p ... 23ec8: 48000000 00701515 70707000 70707070 ...H..p..ppppppp 23ed8: 70707070 70707070 70707070 70707070 pppppppppppppppp 23ee8: 70707070 70707070 70707070 70707070 pppppppppppppppp 23ef8: 48484848 ca15cbcb eccafa91 4815e969 HHHH........i..H 23f08: 00004848 00000000 00000000 00000000 HH.............. ... 23f20: 70000000 70007070 0c363636 121277dc ...ppp.p666..w.. 23f30: 59595959 68595959 646666d1 68686868 YYYYYYYh.ffdhhhh 23f40: 68680d68 68686868 34686868 46346834 h.hhhhhhhhh44h4F 23f50: 2b34460d f27171f1 76767679 c8c8c876 .F4+.qq.yvvvv... 23f60: 7777c8c8 77777777 381e1e1e cb384e38 ..wwwwww...88N8. 23f70: 00000000 00000070 00000000 00000000 ....p........... 23f80: 00000000 00151515 70700000 70707070 ..........pppppp 23f90: 70707070 70707070 70707070 70707070 pppppppppppppppp 23fa0: 70707070 70707070 4f367070 48707070 pppppppppp6OpppH 23fb0: 48cb4848 6307fd48 15154a91 48e9e9cb HH.HH..c.J.....H 23fc0: 00007048 00000000 00000000 00000000 Hp.............. ... 23fd8: 00007000 70707070 36cfcf1f 4e6979ab .p..pppp...6.yiN 23fe8: 54545454 12595959 74f16553 68686868 TTTTYYY.Se.thhhh 23ff8: 68686868 68686868 34686868 6868340d hhhhhhhhhhh4.4hh 24008: b02b4634 0d67f153 4076400d c80d0d0d 4F+.S.g..@v@.... 24018: 7777c8c8 1e1e7777 381e1e1e e94ee938 ..wwww.....88.N. 24028: 00000048 00007000 00000000 00000000 H....p.......... 24038: 00000000 1548fd00 70000000 70707070 ......H....ppppp 24048: 70707070 70707070 70707070 70707070 pppppppppppppppp 24058: 70707070 70707070 594f7070 4848703b ppppppppppOY;pHH 24068: 48cbcb48 9163faec 15cb154a 691e69cb H..H..c.J....i.i 24078: 00007048 00000000 00000000 00000000 Hp.............. ... 24090: 00707000 70700000 4f367070 cf691e0c .pp...pppp6O..i. 240a0: 54cdcdcf bb545954 682b5a66 68686868 ...TTYT.fZ+hhhhh 240b0: 68686834 34686868 68686834 340d0d68 4hhhhhh44hhhh..4 240c0: b0640d68 34462bb0 0d0d0d34 0d0d0d0d h.d..+F44....... 240d0: 7777c8c8 1e1e1e77 381e1e1e 4ee9e9e9 ..www......8...N 240e0: 0000000c 00700000 00000000 00000000 ......p......... 240f0: 00000000 15fd4800 70000048 70707070 .....H..H..ppppp 24100: 70707070 70707070 70707070 70707070 pppppppppppppppp 24110: 70707070 70707070 59367070 48483659 pppppppppp6YY6HH 24120: ec4848cb 4a631c63 cbcb1515 124ecbcb .HH.c.cJ......N. 24130: 00007036 00000000 00000000 00000000 6p.............. ... 24148: 70700000 70707070 36367070 cfcfcf36 ..pppppppp666... 24158: 59cdcfcf 2f545459 59597294 68686812 ...YYTT/.rYY.hhh 24168: 68346868 34686868 6874460d 0d466868 hh4hhhh4.FthhhF. 24178: 2b2bc80d 46464646 0d343446 0d0d0d0d ..++FFFFF44..... 24188: 7777c80d 1e1e7777 e91e3838 4ee9e9e9 ..wwww..88.....N 24198: 0000cb4e 70000000 00000000 00000000 N......p........ 241a8: 00000000 15150000 00007015 70707070 .........p..pppp 241b8: 70707070 70707070 70707070 70707070 pppppppppppppppp 241c8: 48707070 70707048 cf487070 cb483654 pppHHpppppH.T6H. 241d8: 631548cb 154a6397 484815cb 12693648 .H.c.cJ...HHH6i. 241e8: 0070703b 00000000 00000000 00000000 ;pp............. ... 24200: 70700000 70707070 4f707070 3636364f ..pppppppppOO666 24210: 544fcf4f 0b545968 59a5bf94 74681259 O.OThYT....YY.ht 24220: 34686868 6868400d 74460d68 74686868 hhh4.@hhh.Fthhht 24230: 74460d0d 46746868 46746874 0d0d3434 ..FthhtFthtF44.. 24240: c80dc80d 1e1e7779 e9e9381e 4ee9e9e9 ....yw...8.....N 24250: 00480c0c 00000000 00000070 00000000 ..H.....p....... 24260: 00000000 fd000000 00001548 70707000 ........H....ppp 24270: 70707070 70707070 70707070 70707070 pppppppppppppppp 24280: 361f7070 70363636 36707070 15cb36cf pp.6666pppp6.6.. 24290: 73071548 48154a1c 48484848 4e484848 H..s.J.HHHHHHHHN 242a0: 00703612 00000000 00000000 00000000 .6p............. ... 242b8: 70700000 70707070 70707070 36364f4f ..ppppppppppOO66 242c8: cfcf3636 24387454 54541e94 12595959 66..Tt8$..TTYYY. 242d8: 68687474 6831f640 68686868 74686874 tthh@.1hhhhhthht 242e8: 68747474 68687468 74686868 0d464646 ttthhthhhhhtFFF. 242f8: 79c80d0d 387731f6 e9e9e938 0c0ce9e9 ...y.1w88....... 24308: 0069cdcd 00000000 00007000 00000000 ..i......p...... ... 24320: 001548fd 70700000 70707070 70707070 .H....pppppppppp 24330: 70707070 70707070 36367070 4f543636 pppppppppp6666TO 24340: 48707070 15cb3636 73ff4acb 48481507 pppH66...J.s..HH 24350: 48484848 cb484848 70704f12 00000000 HHHHHHH..Opp.... ... 24370: 70000000 70707070 701f1f70 36361f70 ...pppppp..pp.66 24380: cf363636 5a4ecdcf cd3b38e6 5959593b 666...NZ.8;.;YYY 24390: 68747412 3487f634 68686834 74747468 .tth4..44hhhhttt 243a0: 74747474 68687474 74746868 46467468 tttttthhhhtthtFF 243b0: 31c8c80d 1ec8f616 e9e9e91e cd0ce9e9 ...1............ 243c0: cbcdcdcd 00000000 00000000 00000000 ................ 243d0: 70700000 00000070 4848fd48 48000000 ..ppp...H.HH...H 243e0: 70707070 70707070 70707070 70707070 pppppppppppppppp 243f0: 36367070 59684f36 48484836 cb15cb36 pp666OhY6HHH6... 24400: 63736315 48154815 48484848 48484848 .csc.H.HHHHHHHHH 24410: 7070cdcd 00000000 00000000 00000000 ..pp............ ... 2442c: 361f1f70 36361f1f 1f1f1f1f cf363636 p..6..66....666. 2443c: 32e9cfcf cd54e932 59543b3b 74746859 ...22.T.;;TYYhtt 2444c: 34877968 68686868 74746868 68686868 hy.4hhhhhhtthhhh 2445c: 68686874 74746868 74747468 79c80d74 thhhhhtthtttt..y 2446c: 7479165d e9e9e91e cd0c0c0c cdcdcdcd ].yt............ 2447c: 00000048 00000000 70000000 36363636 H..........p6666 2448c: 00363636 48151500 00000000 70707048 666....H....Hppp 2449c: 70707070 70707070 70707070 36484870 pppppppppppppHH6 244ac: 34684f36 4848484f 15151548 4aff73ca 6Oh4OHHHH....s.J 244bc: 48481548 70704848 48487070 0048cd36 H.HHHHppppHH6.H. ... 244e4: 361f1f00 36363636 36363636 36363636 ...6666666666666 244f4: e66dcfcb 59544e5a 543b3b54 74125959 ..m.ZNTYT;;TYY.t 24504: 34406874 68686868 68686868 68686868 th@4hhhhhhhhhhhh 24514: 68121268 74741212 74686874 c80d7474 h..h..ttthhttt.. 24524: 77e816f6 0ce9e91e cd0c0c0c cfcdcdcd ...w............ 24534: 00007069 00000000 cb000000 36cbcfcf ip.............6 24544: 48703636 48fd0070 00000015 70704800 66pHp..H.....Hpp 24554: 70707070 70707070 70707070 36487070 ppppppppppppppH6 24564: 7e593636 48363654 fdcb1548 15fa901c 66Y~T66HH....... 24574: 48481515 70704848 70707070 00363648 ..HHHHppppppH66. ... 2459c: 1f1f0000 3636361f 36363636 36363636 .....66666666666 245ac: 576d4f36 54cf4e24 3b3b5974 12595954 6OmW$N.TtY;;TYY. 245bc: 68747474 68686868 12686812 12747474 ttthhhhh.hh.ttt. 245cc: 12121274 74121212 12127474 c8747412 t......ttt...tt. 245dc: c8871606 0ce9381e cdcdcd0c cfcfcfcd .....8.......... 245ec: 0000cbcf 00000000 36000000 36cbcfcf ...........6...6 245fc: 48363636 fd707048 00004848 70700000 666HHpp.HH....pp 2460c: 70707070 70487070 48707070 48487048 ppppppHppppHHpHH 2461c: 7e543636 cb36cf68 071515cb 484aff73 66T~h.6.....s.JH 2462c: 48484815 70707048 70707070 70707070 .HHHHppppppppppp ... 24654: 1f000000 361f1f1f 36363636 36363636 .......666666666 24664: 57e93636 cfcd548c cd5454cf 59543b4f 66.W.T...TT.O;TY 24674: 74747459 12686868 12686812 38743812 Yttthhh..hh..8t8 24684: 12121212 12121212 12383812 74741212 .........88...tt 24694: c8f61613 0ce9381e cfcdcdcd cfcfcfcf .....8.......... 246a4: 0048cfcf 00000000 70000000 cbcbcfcf ..H........p.... 246b4: 483636cb 48704848 007048fd 70000000 .66HHHpH.Hp....p 246c4: 70707070 70707070 70707070 48484870 pppppppppppppHHH 246d4: 343b3636 cbcbcd68 1cfd4815 1515fa22 66;4h....H.."... 246e4: 48484815 70707048 70707070 00707070 .HHHHpppppppppp. ... 24710: 1f36361f 3636361f 36363636 e60c3636 .66..666666666.. 24720: cdcfcded cfcfcfcf 3b4f4fcf 38121254 .........OO;T..8 24730: 12121238 12686812 12121212 12121212 8....hh......... 24740: 12121212 12125959 12121212 c8f6f60d ....YY.......... 24750: 0ce93838 cfcfcdcd cfcfcfcf 70cfcfcf 88.............p ... 24768: cbcbcfcb 363636cb 70484848 004815fd .....666HHHp..H. 24778: 00000000 70707070 70707070 70707070 ....pppppppppppp 24788: 48487070 68cf3648 cbcb5402 7307cbcb ppHHH6.h.T.....s 24798: 1548fdff 70484848 70707070 70707070 ..H.HHHppppppppp 247a8: 00707070 00000000 00000000 00000000 ppp............. ... 247c8: 36363600 1f36361f 36361f1f edcd3636 .666.66...6666.. 247d8: cf4f0c32 cfcfcfcf 3b4f54cf 12593b3b 2.O......TO;;;Y. 247e8: 12121212 12681212 12121259 12123838 ......h.Y...88.. 247f8: 59121212 59595912 59595959 77310d12 ...Y.YYYYYYY..1w 24808: 0ce94e12 cfcfcfcd cfcfcfcf 36cfcfcf .N.............6 ... 24820: cbcfcf70 36363636 48484848 4848fd70 p...6666HHHHp.HH 24830: 00000000 70707000 48707070 70707070 .....ppppppHpppp 24840: 48707070 59364848 69695402 226315cb pppHHH6Y.Tii..c" 24850: 151515fa 70484848 70707070 70707070 ....HHHppppppppp 24860: 70707070 00000000 00000000 00000000 pppp............ ... 24880: 1f1f0000 1f361f1f 1f1f1f36 9bcf3636 ......6.6...66.. 24890: cf366d57 cfcfcfcf 3636cfcf 593b4f36 Wm6.......666O;Y 248a0: 59121212 59125959 12121212 12121212 ...YYY.Y........ 248b0: 59121212 54595959 54545454 4e125454 ...YYYYTTTTTTT.N 248c0: cd0c4e4e cfcfcfcf cfcfcfcf cb3636cb NN...........66. 248d0: 00000048 00000000 cbcfcb00 483636cb H............66H 248e0: 48484848 48fd4870 00000048 70700000 HHHHpH.HH.....pp 248f0: 70707070 70707048 70707070 cd484848 ppppHpppppppHHH. 24900: 69695968 7397eccb 4815484a 70704848 hYii...sJH.HHHpp 24910: 70707070 70707070 70707070 00000070 ppppppppppppp... ... 24938: 1f000000 1f1f1f1f 361f1f1f 891f361f ...........6.6.. 24948: cb1f7857 cdcfcbcf 54cfcfcf 3b3b4fcd Wx.........T.O;; 24958: 59121259 59595959 59126812 59595959 Y..YYYYY.h.YYYYY 24968: 54595959 54545454 54545454 54545454 YYYTTTTTTTTTTTTT 24978: cdcdcd54 cfcfcfcf cbcbcbcf 363636cb T............666 24988: 00007036 00000000 cbcf7000 703636cb 6p.......p...66p 24998: 48487070 15157048 00007048 70000000 ppHHHp..Hp.....p 249a8: 70707070 70707070 70707070 36484870 pppppppppppppHH6 249b8: 15695454 6373cacb 48484815 70484848 TTi...sc.HHHHHHp 249c8: 70707070 70707070 00000070 00000000 ppppppppp....... ... 249f4: 70707070 1f707070 2d1f361f 364f9781 ppppppp..6.-..O6 24a04: cd4f3636 cf69cfcd 4f4f4fcd 125959cd 66O...i..OOO.YY. 24a14: 59595959 59121259 54545959 54545454 YYYYY..YYYTTTTTT 24a24: 54545454 54545454 cdcd5454 cfcdcdcd TTTTTTTTTT...... 24a34: 4f4fcfcf 36363636 36363636 00003636 ..OO6666666666.. 24a44: 00000000 cb360000 483636cb 48707048 ......6..66HHppH 24a54: fd704848 00004848 00000000 70707070 HHp.HH......pppp 24a64: 70707070 70707070 48487070 cbcbcf36 ppppppppppHH6... 24a74: ca736315 48481548 70707048 70707070 .cs.H.HHHppppppp 24a84: 70707070 00000070 00000000 00000000 ppppp........... ... 24aac: 70707000 70707070 cf1f1f70 1f692273 .pppppppp...s"i. 24abc: 36363636 cd69cf4f 36cf4e0c 5954cf36 6666O.i..N.66.TY 24acc: 54595959 54545459 54545454 54544e54 YYYTYTTTTTTTTNTT 24adc: 54545454 54545454 3bcdcd3b 4f4f3b3b TTTTTTTT;..;;;OO 24aec: 364f4f4f 36363636 36363636 00703636 OOO66666666666p. 24afc: 00000000 36000000 483636cb 48484848 .......6.66HHHHH 24b0c: 48484848 0048484a 00000000 70707000 HHHHJHH......ppp 24b1c: 70707070 70707070 48707070 cbcbcb48 pppppppppppHH... 24b2c: fd1c1cec 48481548 70707070 70707070 ....H.HHpppppppp 24b3c: 00707070 00000070 00000000 00000000 ppp.p........... ... 24b64: 70700000 70707070 1f707070 7091ed91 ..ppppppppp....p 24b74: 36361f70 0ccdcf36 cd2b2b0c cdcf4fcf p.666....++..O.. 24b84: 54545454 54545454 54545454 54545454 TTTTTTTTTTTTTTTT 24b94: 54545454 3b54cd54 4fa9a9a9 1f1fa91f TTTTT.T;...O.... 24ba4: 1f1f701f 361f1f1f 36361f1f 00701f36 .p.....6..666.p. 24bb4: 00000000 70000000 48363636 48704848 .......p666HHHpH 24bc4: 70484848 4848fd48 00000000 70480000 HHHpH.HH......Hp 24bd4: 70707048 70707070 48707070 cbcb4848 HppppppppppHHH.. 24be4: 15631c4a 48484848 70707070 70707070 J.c.HHHHpppppppp 24bf4: 00000000 70007000 00000000 00000000 .....p.p........ ... 24c1c: 70000000 70707070 70707070 361cff69 ...pppppppppi..6 24c2c: 36707070 cdcd3636 1e6eab0c 4f3636cf ppp666....n..66O 24c3c: 545454cf 54545454 54545454 54545454 .TTTTTTTTTTTTTTT 24c4c: 3b3b3b3b a93b3b3b 701f1f1f 70707070 ;;;;;;;....ppppp 24c5c: 70707070 701f1f70 70707070 70707070 ppppp..ppppppppp ... 24c74: 36367070 48484870 48487070 4815fd70 pp66pHHHppHHp..H 24c84: 00000070 70000000 70707070 70707070 p......ppppppppp 24c94: 48707070 48cb4848 48071c4a 70484848 pppHHH.HJ..HHHHp 24ca4: 00000070 00007000 00000000 00007000 p....p.......p.. ... 24cd8: 70707070 70707070 4affca70 70707070 ppppppppp..Jpppp 24ce8: cf363636 0e6ee9cd 3636cf0c 54544f36 666...n...666OTT 24cf8: 3bcdcd54 cdcdcdcd 3b54cd3b 3b3b3b3b T..;....;.T;;;;; 24d08: 1f3b3b3b 7070701f 70707070 00007000 ;;;..ppppppp.p.. 24d18: 70700000 70707070 00707070 00000000 ..ppppppppp..... 24d28: 00000000 48707000 70484848 48484848 .....ppHHHHpHHHH 24d38: 48fd0048 00000048 70000000 70707070 H..HH......ppppp 24d48: 70700070 48707070 48484848 484a634a p.pppppHHHHHJcJH 24d58: 70704848 00000070 00007070 00000070 HHppp...pp..p... 24d68: 00707000 00000000 00000000 00000000 .pp............. ... 24d90: 70707000 70707070 91633670 70707036 .pppppppp6c.6ppp 24da0: 36367070 b5670ccf 36cdcdab 3b4f3636 pp66..g....666O; 24db0: 3b3b3bcd 3b3b3b3b 4f3b3b3b 1f1fa94f .;;;;;;;;;;OO... 24dc0: 701fa9a9 70707070 00707070 00000000 ...pppppppp..... 24dd0: 00000000 00707000 00700000 00000000 .....pp...p..... 24de0: 00000000 70700000 70704870 70487070 ......pppHppppHp 24df0: 4a707048 00004848 00000000 00707000 HppJHH.......pp. 24e00: 00000000 70707000 48484848 48fd634a .....pppHHHHJc.H 24e10: 70704848 00007070 00000000 00000000 HHpppp.......... 24e20: 70700000 00000070 00000000 00000000 ..ppp........... ... 24e48: 70700000 70707070 63ec7000 707070ec ..pppppp.p.c.ppp 24e58: 36707070 6e4e4f36 cf690c87 4f1f7036 ppp66ONn..i.6p.O 24e68: 3b3b3b3b a9080808 70a9a91f 1f707070 ;;;;.......pppp. 24e78: 7070701f 00707070 00000070 00000000 .pppppp.p....... ... 24e9c: 70000000 70707070 70707070 48007070 ...ppppppppppp.H 24eac: 007070fd 00000000 00700000 00000000 .pp.......p..... 24ebc: 70700000 48484848 4815fa4a 00704848 ..ppHHHHJ..HHHp. 24ecc: 00007000 00000000 00000000 70700000 .p............pp 24edc: 00007036 00000000 00000000 00000000 6p.............. ... 24f00: 70000000 00707070 4a700000 000036fa ...pppp...pJ.6.. 24f10: 70700000 2a363670 4f4f1e6e 70707036 ..ppp66*n.OO6ppp 24f20: 1f4f4f1f 1f1fa91f 70700070 70707070 .OO.....p.pppppp 24f30: 70707070 00707070 00000000 00000000 ppppppp......... 24f40: 00000000 00007000 00000000 00000000 .....p.......... ... 24f58: 70707000 70707070 00707070 00701515 .pppppppppp...p. ... 24f74: 70700000 48484848 48154a4a 00704848 ..ppHHHHJJ.HHHp. ... 24f90: 70700000 00704f36 00000000 00000000 ..pp6Op......... ... 24fbc: 00007070 70000000 00704a4a 70000000 pp.....pJJp....p 24fcc: 36367070 4f4fab67 70703636 1f1f7070 pp66g.OO66pppp.. 24fdc: 00707070 70707000 70707070 70707070 ppp..ppppppppppp 24fec: 70707070 00000000 00000000 00000000 pppp............ 24ffc: 00700000 00000000 00000000 00000000 ..p............. 2500c: 00000000 70000000 00007070 00000000 .......ppp...... 2501c: 70481500 00000000 00000000 00000000 ..Hp............ 2502c: 70000000 48484848 48484afd 00007048 ...pHHHH.JHHHp.. ... 25048: 70000000 00363b70 00000000 00000000 ...pp;6......... ... 25074: 00707000 00000000 70154a70 00000000 .pp.....pJ.p.... 25084: 70707000 36364e4f 70703636 70707070 .pppON6666pppppp 25094: 70707070 00000070 70707000 70707070 ppppp....ppppppp 250a4: 00707070 00000000 00000000 00000000 ppp............. ... 250d4: 00150000 00000000 00000000 00000000 ................ 250e4: 70000000 48484870 4848fdfd 00007048 ...ppHHH..HHHp.. ... 25100: 70000000 703b4f70 00000000 00000000 ...ppO;p........ ... 25134: cb4a4800 00000000 70700000 36707070 .HJ.......ppppp6 25144: 7070701f 70707070 70707070 00007070 .ppppppppppppp.. 25154: 00000000 70000000 00000000 00000000 .......p........ ... 2518c: 48700000 00000000 00000000 00000000 ..pH............ 2519c: 00000000 48484870 4848fdfd 00007048 ....pHHH..HHHp.. ... 251bc: 364f1f70 00000070 00000000 00000000 p.O6p........... ... 251ec: fd480000 00000048 00000000 70707070 ..H.H.......pppp 251fc: 70707070 70000070 70707070 00707070 ppppp..pppppppp. ... 25258: 48487070 48481515 00000070 00000000 ppHH..HHp....... ... 25274: 4f4f7000 00000070 00000000 00000000 .pOOp........... ... 252a4: 48000000 00004848 00000000 70000000 ...HHH.........p 252b4: 70707070 00000070 70707000 00000070 ppppp....pppp... ... 25310: 48487000 48481515 00000070 00000000 .pHH..HHp....... ... 2532c: 4f1f0000 0000001f 00000000 00000000 ...O............ ... 2535c: 70000000 70484848 00000000 00000000 ...pHHHp........ 2536c: 70000000 00000000 70000000 00000070 ...p.......pp... ... 253c8: 48700000 48481515 00000070 00000000 ..pH..HHp....... ... 253e4: 36700000 00007036 00000000 00000000 ..p66p.......... ... 25418: 48484870 00000000 00000000 00000000 pHHH............ ... 25480: 70000000 70481548 00000070 00000000 ...pH.Hpp....... ... 2549c: 70000000 00007036 00000000 00000000 ...p6p.......... ... 254cc: 6c6c6548 6f57206f 00646c72 42000800 Hello World....B 254dc: 42000c00 42001000 42001400 42001800 ...B...B...B...B 254ec: 42001c00 00000ed2 00000ece 00000ece ...B............ 254fc: 00000f34 00000f34 00000ee6 00000ed8 4...4........... 2550c: 00000eec 00000f22 000010f4 000010d4 ...."........... 2551c: 000010d4 00001160 000010e6 00001102 ....`........... 2552c: 000010d8 00001110 00001150 ........P... 00025538 <__func__.8431>: 25538: 645f766c 67756265 676f6c5f 7272655f lv_debug_log_err 25548: 0000726f or.. 0002554c : 2554c: 33323130 37363534 42413938 46454443 0123456789ABCDEF 2555c: 00000000 732f2e2e 412f6372 742f4653 ....../src/ASF/t 2556c: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 2557c: 6c2f6372 6f635f76 6c2f6572 65645f76 rc/lv_core/lv_de 2558c: 2e677562 00000063 645f766c 67756265 bug.c...lv_debug 2559c: 6568635f 735f6b63 203a7274 6f6e2061 _check_str: a no 255ac: 53412d6e 20494943 72616863 73616820 n-ASCII char has 255bc: 70657220 65746165 6f6d2064 74206572 repeated more t 255cc: 206e6168 445f564c 47554245 5254535f han LV_DEBUG_STR 255dc: 58414d5f 5045525f 20544145 656d6974 _MAX_REPEAT time 255ec: 00002973 645f766c 67756265 6568635f s)..lv_debug_che 255fc: 735f6b63 203a7274 61766e69 2064696c ck_str: invalid 2560c: 72616863 206e6920 20656874 69727473 char in the stri 2561c: 2820676e 3031203c 6c617620 00296575 ng (< 10 value). 2562c: 645f766c 67756265 6568635f 735f6b63 lv_debug_check_s 2563c: 203a7274 69727473 6920676e 6f6c2073 tr: string is lo 2564c: 7265676e 61687420 564c206e 4245445f nger than LV_DEB 2565c: 535f4755 4d5f5254 4c5f5841 54474e45 UG_STR_MAX_LENGT 2566c: 00000048 H... 00025670 <__func__.8384>: 25670: 645f766c 5f707369 5f746567 5f726373 lv_disp_get_scr_ 25680: 00746361 act. 00025684 <__func__.8392>: 25684: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 25694: 6f745f72 00000070 r_top... 0002569c <__func__.8396>: 2569c: 645f766c 5f707369 5f746567 6579616c lv_disp_get_laye 256ac: 79735f72 00000073 6c5f766c 72657961 r_sys...lv_layer 256bc: 7379735f 6f6e203a 73696420 79616c70 _sys: no display 256cc: 67657220 65747369 20646572 67206f74 registered to g 256dc: 69207465 73207374 202e7379 6579616c et its sys. laye 256ec: 00000072 6c5f766c 72657961 706f745f r...lv_layer_top 256fc: 6f6e203a 73696420 79616c70 67657220 : no display reg 2570c: 65747369 20646572 67206f74 69207465 istered to get i 2571c: 74207374 6c20706f 72657961 00000000 ts top layer.... 2572c: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 2573c: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2574c: 6f635f76 6c2f6572 69645f76 632e7073 v_core/lv_disp.c 2575c: 00000000 735f766c 615f7263 203a7463 ....lv_scr_act: 2576c: 64206f6e 6c707369 72207961 73696765 no display regis 2577c: 65726574 6f742064 74656720 73746920 tered to get its 2578c: 74636120 6373202e 6e656572 00000000 act. screen.... 0002579c <__func__.8629>: 2579c: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 257ac: 00000000 675f766c 70756f72 6464615f ....lv_group_add 257bc: 6a626f5f 6874203a 626f2065 7463656a _obj: the object 257cc: 20736920 65726c61 20796461 65646461 is already adde 257dc: 6f742064 69687420 72672073 0070756f d to this group. 257ec: 675f766c 70756f72 6464615f 6a626f5f lv_group_add_obj 257fc: 7361203a 6e676973 6a626f20 20746365 : assign object 2580c: 61206f74 746f206e 20726568 756f7267 to an other grou 2581c: 00000070 732f2e2e 412f6372 742f4653 p...../src/ASF/t 2582c: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 2583c: 6c2f6372 6f635f76 6c2f6572 72675f76 rc/lv_core/lv_gr 2584c: 2e70756f 00000063 2074754f 6d20666f oup.c...Out of m 2585c: 726f6d65 f8000079 00002cde 00002d5a emory....,..Z-.. 2586c: 00002d64 00002d7a 00002d8a 00002d9a d-..z-...-...-.. 2587c: 00002db8 00002dd0 00002de6 00002e04 .-...-...-...... 2588c: 00002e0e 00002e24 00002e34 00002e44 ....$...4...D... 2589c: 00002e62 00002e7a 00002e84 00002e9a b...z........... 258ac: 00002eaa 00002eba 00002ed8 0000ffff ................ 000258bc <__func__.8789>: 258bc: 695f766c 0074696e lv_init. 000258c4 <__func__.8803>: 258c4: 6f5f766c 635f6a62 74616572 00000065 lv_obj_create... 000258d4 <__func__.8810>: 258d4: 6f5f766c 645f6a62 00006c65 lv_obj_del.. 000258e0 <__func__.8837>: 258e0: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 258f0: 72615f65 00006165 e_area.. 000258f8 <__func__.8852>: 258f8: 6f5f766c 695f6a62 6c61766e 74616469 lv_obj_invalidat 25908: 00000065 e... 0002590c <__func__.8870>: 2590c: 6f5f766c 6d5f6a62 5f65766f 65726f66 lv_obj_move_fore 2591c: 756f7267 0000646e ground.. 00025924 <__func__.8884>: 25924: 6f5f766c 735f6a62 705f7465 0000736f lv_obj_set_pos.. 00025934 <__func__.8893>: 25934: 6f5f766c 735f6a62 785f7465 00000000 lv_obj_set_x.... 00025944 <__func__.8899>: 25944: 6f5f766c 735f6a62 795f7465 00000000 lv_obj_set_y.... 00025954 <__func__.8906>: 25954: 6f5f766c 735f6a62 735f7465 00657a69 lv_obj_set_size. 00025964 <__func__.8924>: 25964: 6f5f766c 735f6a62 685f7465 68676965 lv_obj_set_heigh 25974: 00000074 t... 00025978 <__func__.8957>: 25978: 6f5f766c 615f6a62 6e67696c 00000000 lv_obj_align.... 00025988 <__func__.8971>: 25988: 6f5f766c 615f6a62 6e67696c 69726f5f lv_obj_align_ori 25998: 00006f67 go.. 0002599c <__func__.9008>: 2599c: 6f5f766c 725f6a62 696c6165 00006e67 lv_obj_realign.. 000259ac <__func__.9037>: 259ac: 6f5f766c 635f6a62 6e61656c 7974735f lv_obj_clean_sty 259bc: 6c5f656c 00747369 le_list. 000259c4 <__func__.9082>: 259c4: 6f5f766c 725f6a62 65726665 735f6873 lv_obj_refresh_s 259d4: 656c7974 00000000 tyle.... 000259dc <__func__.9151>: 259dc: 6f5f766c 735f6a62 615f7465 685f7664 lv_obj_set_adv_h 259ec: 65747469 00007473 ittest.. 000259f4 <__func__.9157>: 259f4: 6f5f766c 735f6a62 635f7465 6b63696c lv_obj_set_click 25a04: 00000000 .... 00025a08 <__func__.9220>: 25a08: 6f5f766c 735f6a62 735f7465 65746174 lv_obj_set_state 25a18: 00000000 .... 00025a1c <__func__.9243>: 25a1c: 6f5f766c 615f6a62 735f6464 65746174 lv_obj_add_state 25a2c: 00000000 .... 00025a30 <__func__.9250>: 25a30: 6f5f766c 635f6a62 7261656c 6174735f lv_obj_clear_sta 25a40: 00006574 te.. 00025a44 <__func__.9272>: 25a44: 655f766c 746e6576 6e65735f 00000064 lv_event_send... 00025a54 <__func__.9281>: 25a54: 655f766c 746e6576 6e65735f 75665f64 lv_event_send_fu 25a64: 0000636e nc.. 00025a68 <__func__.9294>: 25a68: 6f5f766c 735f6a62 735f7465 616e6769 lv_obj_set_signa 25a78: 62635f6c 00000000 l_cb.... 00025a80 <__func__.9306>: 25a80: 6f5f766c 735f6a62 645f7465 67697365 lv_obj_set_desig 25a90: 62635f6e 00000000 n_cb.... 00025a98 <__func__.9312>: 25a98: 6f5f766c 615f6a62 636f6c6c 5f657461 lv_obj_allocate_ 25aa8: 5f747865 72747461 00000000 ext_attr.... 00025ab4 <__func__.9318>: 25ab4: 6f5f766c 725f6a62 65726665 655f6873 lv_obj_refresh_e 25ac4: 645f7478 5f776172 00646170 xt_draw_pad. 00025ad0 <__func__.9323>: 25ad0: 6f5f766c 675f6a62 735f7465 65657263 lv_obj_get_scree 25ae0: 0000006e n... 00025ae4 <__func__.9332>: 25ae4: 6f5f766c 675f6a62 645f7465 00707369 lv_obj_get_disp. 00025af4 <__func__.9346>: 25af4: 6f5f766c 675f6a62 705f7465 6e657261 lv_obj_get_paren 25b04: 00000074 t... 00025b08 <__func__.9352>: 25b08: 6f5f766c 675f6a62 635f7465 646c6968 lv_obj_get_child 25b18: 00000000 .... 00025b1c <__func__.9386>: 25b1c: 6f5f766c 675f6a62 635f7465 64726f6f lv_obj_get_coord 25b2c: 00000073 s... 00025b30 <__func__.9399>: 25b30: 6f5f766c 675f6a62 785f7465 00000000 lv_obj_get_x.... 00025b40 <__func__.9406>: 25b40: 6f5f766c 675f6a62 795f7465 00000000 lv_obj_get_y.... 00025b50 <__func__.9413>: 25b50: 6f5f766c 675f6a62 775f7465 68746469 lv_obj_get_width 25b60: 00000000 .... 00025b64 <__func__.9418>: 25b64: 6f5f766c 675f6a62 685f7465 68676965 lv_obj_get_heigh 25b74: 00000074 t... 00025b78 <__func__.9581>: 25b78: 6f5f766c 675f6a62 685f7465 65646469 lv_obj_get_hidde 25b88: 0000006e n... 00025b8c <__func__.9627>: 25b8c: 6f5f766c 675f6a62 625f7465 5f657361 lv_obj_get_base_ 25b9c: 00726964 dir. 00025ba0 <__func__.9638>: 25ba0: 6f5f766c 695f6a62 72705f73 6365746f lv_obj_is_protec 25bb0: 00646574 ted. 00025bb4 <__func__.9644>: 25bb4: 6f5f766c 675f6a62 735f7465 65746174 lv_obj_get_state 25bc4: 00000000 .... 00025bc8 <__func__.9650>: 25bc8: 6f5f766c 675f6a62 735f7465 616e6769 lv_obj_get_signa 25bd8: 62635f6c 00000000 l_cb.... 00025be0 <__func__.9665>: 25be0: 6f5f766c 675f6a62 655f7465 615f7478 lv_obj_get_ext_a 25bf0: 00727474 ttr. 00025bf4 <__func__.9686>: 25bf4: 6f5f766c 675f6a62 675f7465 70756f72 lv_obj_get_group 25c04: 00000000 .... 00025c08 <__func__.9691>: 25c08: 6f5f766c 695f6a62 6f665f73 65737563 lv_obj_is_focuse 25c18: 00000064 d... 00025c1c <__func__.9877>: 25c1c: 6e617274 72635f73 65746165 00000000 trans_create.... 25c2c: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 25c3c: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25c4c: 6f635f76 6c2f6572 626f5f76 00632e6a v_core/lv_obj.c. 25c5c: 695f766c 3a74696e 726c6120 79646165 lv_init: already 25c6c: 696e6920 00646574 695f766c 2074696e inited.lv_init 25c7c: 64616572 00000079 6f5f766c 635f6a62 ready...lv_obj_c 25c8c: 6e61656c 7974735f 6c5f656c 3a747369 lean_style_list: 25c9c: 6e616320 66207427 20646e69 6c797473 can't find styl 25cac: 69772065 60206874 74726170 00000060 e with `part`... 25cbc: 6f5f766c 635f6a62 74616572 6e203a65 lv_obj_create: n 25ccc: 6420746f 6c707369 63207961 74616572 ot display creat 25cdc: 74206465 6f73206f 72616620 6f4e202e ed to so far. No 25cec: 616c7020 74206563 7361206f 6e676973 place to assign 25cfc: 65687420 77656e20 72637320 006e6565 the new screen. 25d0c: 656a624f 63207463 74616572 65722065 Object create re 25d1c: 00796461 4c4c554e 696f7020 7265746e ady.NULL pointer 25d2c: 00000000 735f766c 675f7263 645f7465 ....lv_scr_get_d 25d3c: 3a707369 72637320 206e6565 20746f6e isp: screen not 25d4c: 6e756f66 00000064 6f5f766c 735f6a62 found...lv_obj_s 25d5c: 705f7465 203a736f 20746f6e 6e616863 et_pos: not chan 25d6c: 676e6967 736f7020 6f697469 666f206e ging position of 25d7c: 72637320 206e6565 656a626f 00007463 screen object.. 25d8c: 6f5f766c 00006a62 lv_obj.. 00025d94 <__func__.8615>: 25d94: 725f766c 5f726665 61657261 00000000 lv_refr_area.... 25da4: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 25db4: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 25dc4: 6f635f76 6c2f6572 65725f76 632e7266 v_core/lv_refr.c 25dd4: 00000000 276e6143 65732074 44562074 ....Can't set VD 25de4: 65682042 74686769 69737520 7420676e B height using t 25df4: 72206568 646e756f 6e756620 6f697463 he round functio 25e04: 28202e6e 6e6f7257 6f722067 5f646e75 n. (Wrong round_ 25e14: 6f206263 6f742072 616d7320 56206c6c cb or to small V 25e24: 00294244 DB). 00025e28 <__func__.8409>: 25e28: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 25e38: 735f6464 656c7974 00000000 dd_style.... 00025e44 <__func__.8426>: 25e44: 5f766c5f 6c797473 696c5f65 725f7473 _lv_style_list_r 25e54: 766f6d65 74735f65 00656c79 emove_style. 00025e60 <__func__.8460>: 25e60: 5f766c5f 6c797473 65735f65 6e695f74 _lv_style_set_in 25e70: 00000074 t... 00025e74 <__func__.8474>: 25e74: 5f766c5f 6c797473 65735f65 6f635f74 _lv_style_set_co 25e84: 00726f6c lor. 00025e88 <__func__.8488>: 25e88: 5f766c5f 6c797473 65735f65 706f5f74 _lv_style_set_op 25e98: 00000061 a... 00025e9c <__func__.8502>: 25e9c: 5f766c5f 6c797473 65735f65 74705f74 _lv_style_set_pt 25eac: 00000072 r... 00025eb0 <__func__.8550>: 25eb0: 5f766c5f 6c797473 696c5f65 615f7473 _lv_style_list_a 25ec0: 745f6464 736e6172 7974735f 0000656c dd_trans_style.. 00025ed0 <__func__.8654>: 25ed0: 5f746567 6f6c6c61 6f6c5f63 5f6c6163 get_alloc_local_ 25ee0: 6c797473 00000065 735f766c 656c7974 style...lv_style 25ef0: 73696c5f 64615f74 74735f64 3a656c79 _list_add_style: 25f00: 756f6320 276e646c 64612074 68742064 couldn't add th 25f10: 6c632065 00737361 735f766c 656c7974 e class.lv_style 25f20: 73696c5f 64615f74 72745f64 5f736e61 _list_add_trans_ 25f30: 6c797473 63203a65 646c756f 2074276e style: couldn't 25f40: 61657263 74206574 736e6172 6f697469 create transitio 25f50: 7473206e 00656c79 732f2e2e 412f6372 n style.../src/A 25f60: 742f4653 64726968 74726170 766c2f79 SF/thirdparty/lv 25f70: 732f6c67 6c2f6372 6f635f76 6c2f6572 gl/src/lv_core/l 25f80: 74735f76 2e656c79 00000063 735f766c v_style.c...lv_s 25f90: 656c7974 73696c5f 65725f74 65766f6d tyle_list_remove 25fa0: 7974735f 203a656c 6c756f63 74276e64 _style: couldn't 25fb0: 61657220 636f6c6c 20657461 73616c63 reallocate clas 25fc0: 696c2073 00007473 5f746567 61636f6c s list..get_loca 25fd0: 74735f6c 3a656c79 756f6320 276e646c l_style: couldn' 25fe0: 72632074 65746165 636f6c20 73206c61 t create local s 25ff0: 656c7974 00000000 tyle.... 00025ff8 <__func__.8605>: 25ff8: 6c6c6966 656c625f 6465646e 00000000 fill_blended.... 00026008 <__func__.8737>: 26008: 5f70616d 6e656c62 00646564 732f2e2e map_blended.../s 26018: 412f6372 742f4653 64726968 74726170 rc/ASF/thirdpart 26028: 766c2f79 732f6c67 6c2f6372 72645f76 y/lvgl/src/lv_dr 26038: 6c2f7761 72645f76 625f7761 646e656c aw/lv_draw_blend 26048: 0000632e 6c6c6966 656c625f 6465646e .c..fill_blended 26058: 6e75203a 70707573 6574726f 6c622064 : unsupported bl 26068: 20646e65 65646f6d 07e00000 000092b8 end mode........ 26078: 000092bc 000092b8 000092c0 000092c4 ................ 26088: 000092c8 000092cc 000092c0 000092c4 ................ 26098: 000092c8 000092cc 0000ffff ............ 000260a4 <__func__.8431>: 260a4: 645f766c 5f776172 00676d69 lv_draw_img. 000260b0 <__func__.8495>: 260b0: 695f766c 645f676d 5f776172 65726f63 lv_img_draw_core 260c0: 00000000 732f2e2e 412f6372 742f4653 ....../src/ASF/t 260d0: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 260e0: 6c2f6372 72645f76 6c2f7761 72645f76 rc/lv_draw/lv_dr 260f0: 695f7761 632e676d 00000000 67616d49 aw_img.c....Imag 26100: 72642065 203a7761 20637273 4e207369 e draw: src is N 26110: 004c4c55 640a6f4e 00617461 67616d49 ULL.No.data.Imag 26120: 72642065 65207761 726f7272 00000000 e draw error.... 26130: 67616d49 72642065 63207761 74276e61 Image draw can't 26140: 61657220 68742064 696c2065 0000656e read the line.. 26150: 000095e0 000095c8 000095cc 000095d0 ................ 26160: 000095d4 000095d8 000000ff ............ 0002616c <__func__.8491>: 2616c: 645f766c 5f776172 7474656c 00007265 lv_draw_letter.. 0002617c <__func__.8518>: 2617c: 77617264 74656c5f 5f726574 6d726f6e draw_letter_norm 2618c: 00006c61 al.. 00026190 <__func__.8573>: 26190: 77617264 74656c5f 5f726574 70627573 draw_letter_subp 261a0: 00000078 x... 000261a4 <_lv_bpp1_opa_table>: 261a4: 0000ff00 .... 000261a8 <_lv_bpp2_opa_table>: 261a8: ffaa5500 .U.. 000261ac <_lv_bpp4_opa_table>: 261ac: 33221100 77665544 bbaa9988 ffeeddcc .."3DUfw........ 000261bc <_lv_bpp8_opa_table>: 261bc: 03020100 07060504 0b0a0908 0f0e0d0c ................ 261cc: 13121110 17161514 1b1a1918 1f1e1d1c ................ 261dc: 23222120 27262524 2b2a2928 2f2e2d2c !"#$%&'()*+,-./ 261ec: 33323130 37363534 3b3a3938 3f3e3d3c 0123456789:;<=>? 261fc: 43424140 47464544 4b4a4948 4f4e4d4c @ABCDEFGHIJKLMNO 2620c: 53525150 57565554 5b5a5958 5f5e5d5c PQRSTUVWXYZ[\]^_ 2621c: 63626160 67666564 6b6a6968 6f6e6d6c `abcdefghijklmno 2622c: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~. 2623c: 83828180 87868584 8b8a8988 8f8e8d8c ................ 2624c: 93929190 97969594 9b9a9998 9f9e9d9c ................ 2625c: a3a2a1a0 a7a6a5a4 abaaa9a8 afaeadac ................ 2626c: b3b2b1b0 b7b6b5b4 bbbab9b8 bfbebdbc ................ 2627c: c3c2c1c0 c7c6c5c4 cbcac9c8 cfcecdcc ................ 2628c: d3d2d1d0 d7d6d5d4 dbdad9d8 dfdedddc ................ 2629c: e3e2e1e0 e7e6e5e4 ebeae9e8 efeeedec ................ 262ac: f3f2f1f0 f7f6f5f4 fbfaf9f8 fffefdfc ................ 262bc: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 262cc: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 262dc: 72645f76 6c2f7761 72645f76 6c5f7761 v_draw/lv_draw_l 262ec: 6c656261 0000632e 645f766c 5f776172 abel.c..lv_draw_ 262fc: 7474656c 203a7265 746e6f66 20736920 letter: font is 2630c: 4c4c554e 00000000 645f766c 5f776172 NULL....lv_draw_ 2631c: 7474656c 203a7265 70796c67 73642068 letter: glyph ds 2632c: 6e202e63 6620746f 646e756f 00000000 c. not found.... 2633c: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 2634c: 72616863 65746361 20732772 6d746962 character's bitm 2635c: 6e207061 6620746f 646e756f 00000000 ap not found.... 2636c: 645f766c 5f776172 7474656c 203a7265 lv_draw_letter: 2637c: 61766e69 2064696c 20707062 20746f6e invalid bpp not 2638c: 6e756f66 00000064 645f766c 5f776172 found...lv_draw_ 2639c: 7474656c 203a7265 61766e69 2064696c letter: invalid 263ac: 00707062 bpp. 000263b0 : 263b0: 81808080 83828281 87868584 8d8c8a89 ................ 263c0: 9593918f 9e9b9997 a7a5a2a0 b2afadaa ................ 263d0: 000000b5 .... 000263d4 <__func__.8457>: 263d4: 645f766c 5f776172 6b73616d 6464615f lv_draw_mask_add 263e4: 00000000 732f2e2e 412f6372 742f4653 ....../src/ASF/t 263f4: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 26404: 6c2f6372 72645f76 6c2f7761 72645f76 rc/lv_draw/lv_dr 26414: 6d5f7761 2e6b7361 00000063 6d5f766c aw_mask.c...lv_m 26424: 5f6b7361 3a646461 206f6e20 63616c70 ask_add: no plac 26434: 6f742065 64646120 65687420 73616d20 e to add the mas 26444: 0000006b 0000ffff k....... 0002644c <__func__.8763>: 2644c: 77617264 7461705f 6e726574 00000000 draw_pattern.... 2645c: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 2646c: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2647c: 72645f76 6c2f7761 72645f76 725f7761 v_draw/lv_draw_r 2648c: 2e746365 00000063 77617264 676d695f ect.c...draw_img 2649c: 6163203a 2074276e 20746567 67616d69 : can't get imag 264ac: 6e692065 00006f66 695f766c 645f676d e info..lv_img_d 264bc: 67697365 69203a6e 6567616d 756f7320 esign: image sou 264cc: 20656372 65707974 20736920 6e6b6e75 rce type is unkn 264dc: 006e776f 33221100 77665544 bbaa9988 own..."3DUfw.... 264ec: ffeeddcc .... 000264f0 <__func__.8405>: 264f0: 5f766c5f 5f676d69 68636163 706f5f65 _lv_img_cache_op 26500: 00006e65 en.. 00026504 <__func__.8425>: 26504: 695f766c 635f676d 65686361 7465735f lv_img_cache_set 26514: 7a69735f 00000065 732f2e2e 412f6372 _size...../src/A 26524: 742f4653 64726968 74726170 766c2f79 SF/thirdparty/lv 26534: 732f6c67 6c2f6372 72645f76 6c2f7761 gl/src/lv_draw/l 26544: 6d695f76 61635f67 2e656863 00000063 v_img_cache.c... 26554: 695f766c 635f676d 65686361 65706f5f lv_img_cache_ope 26564: 74203a6e 63206568 65686361 7a697320 n: the cache siz 26574: 73692065 00003020 67616d69 72642065 e is 0..image dr 26584: 203a7761 68636163 696d2065 202c7373 aw: cache miss, 26594: 736f6c63 6e612065 65722064 20657375 close and reuse 265a4: 65206e61 7972746e 00000000 67616d69 an entry....imag 265b4: 72642065 203a7761 68636163 696d2065 e draw: cache mi 265c4: 202c7373 68636163 74206465 6e61206f ss, cached to an 265d4: 706d6520 65207974 7972746e 00000000 empty entry.... 265e4: 67616d49 72642065 63207761 6f6e6e61 Image draw canno 265f4: 706f2074 74206e65 69206568 6567616d t open the image 26604: 73657220 6372756f 00000065 33221100 resource....."3 26614: 77665544 bbaa9988 ffeeddcc DUfw........ 00026620 <__func__.8427>: 26620: 5f766c5f 5f676d69 6f636564 5f726564 _lv_img_decoder_ 26630: 74696e69 00000000 init.... 00026638 <__func__.8465>: 26638: 695f766c 645f676d 646f6365 635f7265 lv_img_decoder_c 26648: 74616572 00000065 reate... 00026650 <__func__.8496>: 26650: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 26660: 746c6975 5f6e695f 6f666e69 00000000 uilt_in_info.... 00026670 <__func__.8503>: 26670: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 26680: 746c6975 5f6e695f 6e65706f 00000000 uilt_in_open.... 00026690 <__func__.8533>: 26690: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 266a0: 746c6975 5f6e695f 64616572 6e696c5f uilt_in_read_lin 266b0: 00000065 e... 000266b4 <__func__.8550>: 266b4: 695f766c 645f676d 646f6365 625f7265 lv_img_decoder_b 266c4: 746c6975 5f6e695f 656e696c 7572745f uilt_in_line_tru 266d4: 6f635f65 00726f6c 695f766c 645f676d e_color.lv_img_d 266e4: 646f6365 695f7265 3a74696e 74756f20 ecoder_init: out 266f4: 20666f20 6f6d656d 00007972 732f2e2e of memory..../s 26704: 412f6372 742f4653 64726968 74726170 rc/ASF/thirdpart 26714: 766c2f79 732f6c67 6c2f6372 72645f76 y/lvgl/src/lv_dr 26724: 6c2f7761 6d695f76 65645f67 65646f63 aw/lv_img_decode 26734: 00632e72 67616d49 65672065 6e692074 r.c.Image get in 26744: 67206f66 72207465 20646165 656c6966 fo get read file 26754: 61656820 00726564 67616d49 65672065 header.Image ge 26764: 6e692074 66206f66 646e756f 6b6e7520 t info found unk 26774: 6e776f6e 63727320 70797420 00000065 nown src type... 26784: 006e6962 6c697542 6e692d74 616d6920 bin.Built-in ima 26794: 64206567 646f6365 63207265 74276e61 ge decoder can't 267a4: 65706f20 6874206e 69662065 0000656c open the file.. 267b4: 5f676d69 6f636564 5f726564 6c697562 img_decoder_buil 267c4: 6e695f74 65706f5f 6f203a6e 6f207475 t_in_open: out o 267d4: 656d2066 79726f6d 00000000 67616d49 f memory....Imag 267e4: 65642065 65646f63 706f2072 203a6e65 e decoder open: 267f4: 6e6b6e75 206e776f 6f6c6f63 6f662072 unknown color fo 26804: 74616d72 00000000 6c697542 6e692d74 rmat....Built-in 26814: 616d6920 64206567 646f6365 73207265 image decoder s 26824: 206b6565 6c696166 00006465 6c697542 eek failed..Buil 26834: 6e692d74 616d6920 64206567 646f6365 t-in image decod 26844: 72207265 20646165 6c696166 00006465 er read failed.. 26854: 6c697542 6e692d74 616d6920 64206567 Built-in image d 26864: 646f6365 72207265 20646165 20746f6e ecoder read not 26874: 70707573 7374726f 65687420 6c6f6320 supports the col 26884: 6620726f 616d726f 00000074 000101f2 or format....... 26894: 000101f8 0001018e 000101e0 000101e6 ................ 268a4: 000101f2 000101f2 000101f2 000101ec ................ 268b4: 00010438 0001043c 00010402 0001042c 8...<.......,... 268c4: 00010430 00010438 00010438 00010438 0...8...8...8... 268d4: 00010434 000103e2 000103e6 000103ac 4............... 268e4: 000103d6 000103da 000103e2 000103e2 ................ 268f4: 000103e2 000103de 00010328 0001032c ........(...,... 26904: 00010302 0001031c 00010320 00010328 ........ ...(... 26914: 00010328 00010328 00010324 000104b0 (...(...$....... 26924: 00010504 0001050a 00010510 00010516 ................ 26934: 0001051c 00010522 00010528 000105d8 ...."...(....... 26944: 000105dc 000105c8 000105cc 000105d0 ................ 26954: 000105d8 000105d8 000105d8 000105d4 ................ 26964: 00010838 0001083c 00010828 0001082c 8...<...(...,... 26974: 00010830 00010838 00010838 00010838 0...8...8...8... 26984: 00010834 000107b0 000107e0 000107a0 4............... 26994: 000107a4 000107a8 000107b0 000107b0 ................ 269a4: 000107b0 000107ac 00010778 0001077e ........x...~... 269b4: 00010734 00010766 0001076c 00010778 4...f...l...x... 269c4: 00010778 00010778 00010772 000108b2 x...x...r....... 269d4: 0001090e 00010914 0001091a 00010920 ............ ... 269e4: 00010926 0001092c 00010932 &...,...2... 000269f0 <__func__.8529>: 269f0: 665f766c 5f746e6f 5f746567 6d746962 lv_font_get_bitm 26a00: 665f7061 745f746d 00007478 732f2e2e ap_fmt_txt..../s 26a10: 412f6372 742f4653 64726968 74726170 rc/ASF/thirdpart 26a20: 766c2f79 732f6c67 6c2f6372 6f665f76 y/lvgl/src/lv_fo 26a30: 6c2f746e 6f665f76 665f746e 745f746d nt/lv_font_fmt_t 26a40: 632e7478 00000000 xt.c.... 00026a48 : 26a48: 00000020 0001005f 00000000 00000000 ..._........... 26a58: 00000000 000000b0 0060f7f3 0002a678 ..........`.x... 26a68: 00000000 0002003b ....;... 00026a70 : ... 26a78: 04500000 00000000 04500000 00010c03 ..P.......P..... 26a88: 06400012 07010505 0b40001f 00000c0b ..@.......@..... 26a98: 09f00061 fe00100a 0d8000b1 00000c0d a............... 26aa8: 0b0000ff ff000d0b 03600147 07010502 ........G.`..... 26ab8: 0560014c fd010f04 0570016a fd000f04 L.`.....j.p..... 26ac8: 06600188 05000707 095001a1 02010808 ..`.......P..... 26ad8: 03a001c1 fe000503 062001c9 03000306 .......... ..... 26ae8: 03a001d2 00000303 05a001d7 feff1008 ................ 26af8: 0ab00217 00000c0a 05f00253 00000c05 ........S....... 26b08: 09300271 00000c09 092002a7 00000c09 q.0....... ..... 26b18: 0ab002dd 00000c0b 0930031f 00000c09 ..........0..... 26b28: 09e00355 00000c0a 09900391 00000c09 U............... 26b38: 0a5003c7 00000c0a 09e00403 00000c0a ..P............. 26b48: 03a0043f 00000903 03a0044d fd000c03 ?.......M....... 26b58: 0950045f 02010808 0950047f 03010608 _.P.......P..... 26b68: 09500497 02010808 093004b7 00000c09 ..P.......0..... 26b78: 109004ed fd000f10 0bb00565 00ff0c0d ........e....... 26b88: 0c2005b3 00010c0b 0b9005f5 00000c0b .. ............. 26b98: 0d300637 00010c0c 0ac0067f 00010c09 7.0............. 26ba8: 0a3006b5 00010c09 0c6006eb 00000c0c ..0.......`..... 26bb8: 0d000733 00010c0b 04f00775 00010c03 3.......u....... 26bc8: 08300787 00ff0c08 0b8007b7 00010c0b ..0............. 26bd8: 098007f9 00010c09 0f40082f 00010c0d ......../.@..... 26be8: 0d00087d 00010c0b 0d7008bf 00000c0d }.........p..... 26bf8: 0b90090d 00010c0a 0d700949 fd000f0e ........I.p..... 26c08: 0ba009b2 00010c0a 09f009ee 00000c0a ................ 26c18: 09600a2a 00000c0a 0ca00a66 00010c0b *.`.....f....... 26c28: 0b600aa8 00ff0c0d 12000af6 00000c12 ..`............. 26c38: 0ac00b62 00000c0b 0a600ba4 00ff0c0c b.........`..... 26c48: 0a800bec 00000c0b 05500c2e fd010f05 ..........P..... 26c58: 05a00c54 feff1008 05500c94 fd000f04 T.........P..... 26c68: 09500cb2 02010708 08000cce fe000208 ..P............. 26c78: 09a00cd6 0a010205 09900cdb 00000909 ................ 26c88: 0af00d04 00010c0a 09200d40 00000909 ........@. ..... 26c98: 0af00d69 00000c0a 09d00da5 0000090a i............... 26ca8: 05a00dd2 00000c07 0b100dfc fd000c0a ................ 26cb8: 0ae00e38 00010c09 04700e6e 00010c03 8.......n.p..... 26cc8: 04900e80 fdfe0f06 09e00ead 00010c09 ................ 26cd8: 04700ee3 00010c02 10f00eef 0001090f ..p............. 26ce8: 0ae00f33 00010909 0a300f5c 0000090a 3.......\.0..... 26cf8: 0af00f89 fd010c0a 0af00fc5 fd000c0a ................ 26d08: 06901001 00010906 0800101c 00000908 ................ 26d18: 06a01040 00000b07 0ad01067 00010909 @.......g....... 26d28: 08f01090 00ff090a 0e6010bd 0000090f ..........`..... 26d38: 08d01101 00000909 08f0112a fdff0c0a ........*....... 26d48: 08501166 00000908 05a0118a fd000f06 f.P............. 26d58: 04d011b7 fd010f03 05a011ce fd000f05 ................ 26d68: 095011f4 04000509 06b0120b 06000606 ..P............. 26d78: 0500121d 03010403 10001223 fe001110 ........#....... 26d88: 100012ab 00000c10 1000130b ff000e10 ................ 26d98: 1000137b 00000c10 0b0013db 00000c0b {............... 26da8: 1000141d fe001010 1000149d fe001010 ................ 26db8: 1200151d ff000e12 1000159b fe001010 ................ 26dc8: 1200161b 00000c12 10001687 fe001010 ................ 26dd8: 08001707 ff000e08 0c00173f ff000e0c ........?....... 26de8: 12001793 fe001012 10001823 00000c10 ........#....... 26df8: 0e001883 fe02100a 0e0018d3 fd00120e ................ 26e08: 0e001951 ff000f0e 0e0019ba ff000e0e Q............... 26e18: 0e001a1c fe02100a 0e001a6c ffff0e10 ........l....... 26e28: 0a001adc ff000e0a 0a001b22 ff000e0a ........"....... 26e38: 0e001b68 ff000e0e 0e001bca 0400040e h............... 26e48: 12001be6 00000c12 14001c52 fe001014 ........R....... 26e58: 12001cf2 feff1014 10001d92 fe001010 ................ 26e68: 0e001e12 01000a0e 0e001e58 01000a0e ........X....... 26e78: 14001e9e ff000e14 10001f2a 00000c10 ........*....... 26e88: 10001f8a fe001010 1000200a feff1111 ......... ...... 26e98: 0e00209b ff000e0f 0e002104 fe00100e . .......!...... 26ea8: 0e002174 ff000e0e 0a0021d6 feff100c t!.......!...... 26eb8: 0e002236 fe00100e 0e0022a6 fe00100e 6"......."...... 26ec8: 12002316 00000c12 10002382 fdff1212 .#.......#...... 26ed8: 0c002424 fe00100c 14002484 ff000f14 $$.......$...... 26ee8: 1400251a 01000a14 1400257e 01000a14 .%......~%...... 26ef8: 140025e2 01000a14 14002646 01000a14 .%......F&...... 26f08: 140026aa 01000a14 1400270e ff000e15 .&.......'...... 26f18: 0e0027a1 fe01100c 0e002801 fe00100e .'.......(...... 26f28: 10002871 fdff1111 14002902 00000c14 q(.......)...... 26f38: 0c00297a fe00100c 102029da 01000b11 z).......) ..... 00026f48 : 26f48: aff00bbf 089ee00a c0078cd0 bf100000 ................ 26f58: 1ff5e01a e4f3513f f2403e0f 00100872 ....?Q...>@.r... 26f68: e003c005 007a0000 0900005c 01a00780 ......z.\....... 26f78: ffffffff 733e03fd 0030833c 00c500f2 ......>s<.0..... 26f88: 0e100f00 f0020030 9f00f200 ffffffff ....0........... 26f98: 36c33841 890030e3 00005c00 a007700a A8.6.0...\...p.. 26fa8: 79000000 00000000 00000079 20e9ff5c ...y....y...\.. 26fb8: 9ebcfc06 79b00e90 800f1000 0d000079 .......y....y... 26fc8: 000079f5 50fdef03 cf060000 000040fe .y.....P.....@.. 26fd8: 00f15e79 f3057900 07790007 bce92ff1 y^...y....y../.. 26fe8: ae03a0af 0000d7ff 00007900 00790000 .........y....y. 26ff8: 80de0300 00d00500 01500ce4 004c00e3 ..........P...L. 27008: 00a9005a c004a006 4c00004e 500d5a00 Z.......N..L.Z.P 27018: 1ce40000 0000a058 e173ce03 0000e93c ....X.....s.<... 27028: 400ed600 7c0000a8 d003c003 3c202e00 ...@...|...... < 27038: 0b003d00 09e20070 00d00680 00a0dd04 .=..p........... 27048: 00b1ef09 3ce40900 d90000a0 00007d00 .......<.....}.. 27058: a01cc00c ae3f0000 010000c1 0000c0df ......?......... 27068: 708feb03 00db0018 3ff0657f ea8f0040 ...p.....e.?@... 27078: 0000f703 f90b70cf 40bfcf66 30eadf08 .....p..f..@...0 27088: 000000a5 f5000000 72e4e4f5 f205da00 ...........r.... 27098: 700fc00b 205f403f 007f106f 205f106f ...p?@_ o...o._ 270a8: 700f403f f205c00b 303fda00 f106b00c ?@.p......?0.... 270b8: e900f601 ad00bc00 ad00ae00 e900bc00 ................ 270c8: f106f601 303fb00c 06004a00 2ba0a474 ......?0.J..t..+ 270d8: 7f00e5ff 6b7b20fb a004008d 00130000 ..... {k........ 270e8: 10050000 500f0000 500f0000 511f0100 .......P...P...Q 270f8: ffffef10 744f34f3 500f0040 500f0000 .....4Ot@..P...P 27108: fd520900 0fc5a00b 10110100 04f3ff1f ..R............. 27118: 12034044 00901efc 00f10500 00b00a00 D@.............. 27128: 00600f00 00105f00 0000ab00 0000f600 ..`.._.......... 27138: 0000f105 0000b00a 0000600f 0000104f .........`..O... 27148: 000000ac 040000f6 0a0000f1 0e0000c0 ................ 27158: 4f000060 00000010 00c5ef08 cfa8cf00 `..O............ 27168: 00f50770 c00df20a 1ff80100 dc000080 p............... 27178: 0000603f 00603fbd 801fbd00 0ddc0000 ?`...?`......... 27188: f80100c0 0a00f507 a8cf00f2 080070cf .............p.. 27198: ef00c5ef f37a36ff 05305f00 305f00f3 .....6z.._0..._0 271a8: 5f00f305 00f30530 f305305f 05305f00 ..._0..._0..._0. 271b8: fdbe04f3 98fd0770 002890cf 0000bf00 ....p.....(..... 271c8: 00f20700 00af0000 804f0000 c03f0000 ..........O...?. 271d8: c13e0000 c12e0000 d12e0000 f82e0000 ..>............. 271e8: ff467777 6ffaffff 02ffffff b09f7777 wwF....o....ww.. 271f8: e10c0000 f3090000 f6050000 df000000 ................ 27208: 040010e9 0000fd59 00f40600 643f0000 ....Y.........?d 27218: f3080040 fb8cc9bf d7ff7c00 01000000 @........|...... 27228: 000000eb 0010be00 506f0000 2f000000 ..........oP.../ 27238: 00000090 0000d00c 01f30800 f80300d5 ................ 27248: 00602f00 f72322ed ffff6f21 5581ffff ./`.."#.!o.....U 27258: 52f95655 2f000000 00000060 0500f602 UV.R.../`....... 27268: 00ffffff 7077777f 0000e008 0000ad00 .....wwp........ 27278: 10c20b00 ffdf0000 550430fb 0020ff68 .........0.Uh. . 27288: 00f80400 920f0000 f6050050 fd8ad98f ........P....... 27298: e9ef5b10 ce050010 9f0060fc 05708bc8 .[.......`....p. 272a8: 000000f8 0000d00c 00801f00 682f0000 ............../h 272b8: 3f10faef d08f64ee 0600f12f 00c00ef4 ...?.d../....... 272c8: f109f602 01f30600 b09f86de d8ef1900 ................ 272d8: ffff8f00 77f7e8ff 008ffc77 90554f00 .......ww....OU. 272e8: 00e00b00 00f80200 109f0000 b00f0000 ................ 272f8: f4060000 dd000000 3f000000 0a000070 ...........?p... 27308: 010000f1 000000f9 00d7ff5c af76fc06 ........\.....v. 27318: 00d00ca0 c00df109 07f20700 c05e11f7 ..............^. 27328: feffbf00 54f90910 802fd07e 4ff60400 .......T~./....O 27338: f8000050 0500a01f 76fb09f6 6c00d0af P..........v...l 27348: 0010d8ff 0080fd8e fc68f80c 00505f00 ..........h.._P. 27358: 008f703f 7fc00e00 f01f0030 cf13d41f ?p......0....... 27368: ffef04f1 0200f0a9 00f00a31 a00e0000 ........1....... 27378: 9f000000 8da70930 df0700f7 1e0040eb ....0........@.. 27388: 1003fc92 00000000 1efc1203 fc921e90 ................ 27398: 00001003 01000000 a8d01fe9 00a0300e .............0.. 273a8: 00420000 03f37d01 bf10e89f ee0000b5 ..B..}.......... 273b8: 17000081 0000b4df 00d2af04 ef820100 ................ 273c8: 45f3ffff 00515555 01000000 ef101111 ...EUUQ......... 273d8: 34f3ffff 50404444 ef000000 06000092 ...4DD@P........ 273e8: 0000b5cf 00e29f03 02f36c00 bf20e99e .........l.... . 273f8: 930000c6 04000000 0770fdbe a0bf77fc ..........p..w.. 27408: cf000027 09000000 010000f0 010000ea '............... 27418: 000010dd 000010ce 0000603f 00003001 ........?`...0.. 27428: 00000100 00f50600 405f0000 17000000 .........._@.... 27438: 00b5fdce fb050000 c27d2353 406e0000 ........S#}...n@ 27448: 8e000000 01f40210 493ffaae 1e900ab0 ..........?I.... 27458: 40ef5be6 8f300fe3 40af0010 d9001f98 .[.@..0....@.... 27468: 403f0000 e8003f6a 401f0000 d9001f5c ..?@j?.....@\... 27478: 403f0000 8f300f6a 40af0010 1e900a98 ..?@j.0....@.... 27488: a6de5ad6 01f303f2 ee16faaf 406e0050 .Z..........P.n@ 27498: 00000000 fb060000 00752353 17000000 ........S#u..... 274a8: 00a3fdce 02000000 000000fd f49f0000 ................ 274b8: 00000000 00b09e0f f2060000 0000207f ............. .. 274c8: f801dc00 4f000000 00e00b60 00f00b00 .......O`....... 274d8: 0100604f ed1111fa ff8f0000 00f3ffff O`.............. 274e8: 4444c40e f406a04f af000000 0000cd10 ..DDO........... 274f8: 5ff80200 40ebffff 5755f805 405f40df ..._...@..UW.@_@ 27508: 05fa0100 0f0000f4 11515fa0 ff05f43a ........._Q.:... 27518: 00faffff 5944745f 00f405fa 5ff20800 ...._tDY......._ 27528: 5f000040 0000f445 855ff209 05fb6a55 @.._E....._.Uj.. 27538: d7ffffff 8d020000 0400b4fe f99db8ff ................ 27548: 0020fd02 20bf5008 0f000000 000000a0 .. ..P. ........ 27558: 0000f602 602f0000 00000000 000000fa ....../`........ 27568: 00f20b00 2f000000 850000d2 89fb5f00 ......./....._.. 27578: 290080df 5f40ebdf 30eaffff 77975f00 ...)..@_...0._.w 27588: 5f00f89e af000040 00405f60 5fe00d00 ..._@...`_@...._ 27598: 06000040 00405ff4 5ff60300 03000040 @...._@...._@... 275a8: 00405ff6 5ff40600 0d000040 00405fe0 ._@...._@...._@. 275b8: 5f60af00 f89e7797 ffff5f00 5f0030ea ..`_.w..._...0._ 275c8: 95ffffff 747777f9 0000405f 0000f405 .....wwt_@...... 275d8: 11515f00 ffff0511 745fe0ff f4054444 ._Q......._tDD.. 275e8: 5f000000 05000040 000000f4 7777975f ..._@......._.ww 275f8: ffffff65 ffff5ffd 77f995ff 405f7477 e...._.....wwt_@ 27608: f4050000 5f000000 05000040 102222f5 ......._@...."". 27618: feffff5f 5555f805 00405f40 00f40500 _.....UU@_@..... 27628: 405f0000 f4050000 00000000 b5fe8d01 .._@............ 27638: fb4f0000 02b0df89 060020fd 00f20b60 ..O...... ..`... 27648: 0f000000 000000a0 00602f00 2f000000 ........./`..../ 27658: 09000060 00a00ff0 0bf00900 090000f2 `............... 27668: 20fd02f0 00f00a00 df89fb4f 8d0200c0 ... ....O....... 27678: 5f00c6fe 4f000040 0000f455 405ff504 ..._@..OU....._@ 27688: 554f0000 040000f4 22525ff5 ff555f22 ..OU....._R""_U. 27698: f5ffffff 5555855f 00f4558f 5ff50400 ...._.UU.U....._ 276a8: 4f000040 0000f455 405ff504 554f0000 @..OU....._@..OU 276b8: 040000f4 f4455ff5 5ff4455f 455ff445 ....._E._E._E._E 276c8: f4455ff4 00f4455f 00faffff 00fa7777 ._E._E......ww.. 276d8: 00fa0000 00fa0000 00fa0000 00fa0000 ................ 276e8: 00fa0000 00fa0000 07f90000 0df60320 ............ ... 276f8: 01f18ee9 5f30fbae eb020040 0100f405 ......0_@....... 27708: 405f00ec 0510de01 20ce00f4 bf405f00 .._@....... ._@. 27718: f4050030 0000909f 40efcf5f 91ff0500 0......._..@.... 27728: 5f0010ee 00fc03a0 0600f405 405f00f8 ..._.........._@ 27738: 05f50900 0c0000f4 00405ff2 00f40500 ........._@..... 27748: 405f0000 f4050000 5f000000 05000040 .._@......._@... 27758: 000000f4 0000405f 0000f405 00405f00 ...._@......._@. 27768: 00f40500 975f0000 ff257777 5ff5ffff ......_.ww%...._ 27778: 00000040 00fc951e f9080000 0000f55f @..........._... 27788: fd95ff02 ae0000e0 705f5ff9 955f3f00 .........__p.?_. 27798: 0b108ff3 315ff9c0 0ff304e9 f207f395 ......_1........ 277a8: 5ff900db 20ef0d30 00f3950f f900905f ..._0.. ...._... 277b8: 7100305f f3950f00 00000000 00505ff9 _0.q........._P. 277c8: ff554f00 f5040020 0000fd5f f9fa554f .OU. ..._...OU.. 277d8: 5ff50400 4f00f54a f20df455 405ff504 ..._J..OU....._@ 277e8: 554fd02f 946f00f4 00405ff5 f455afaf /.OU..o.._@...U. 277f8: f5df0000 0200405f 00f455ff 00f50600 ...._@...U...... 27808: b5fe8d01 ff040000 00fa9eb8 0020fd02 .............. . 27818: bf00f908 0a000020 00a00ff2 723f0000 .... .........?r 27828: 000000f6 602ff900 0f000000 0000fa90 ....../`........ 27838: 0bf70300 000000f2 d22f20af 908f0000 ......... /..... 27848: 89fb4f00 0000a0ef 50ebdf28 ffff5f00 .O......(..P._.. 27858: 975f00d7 5fc0bf78 f6070040 0000405f .._.x.._@..._@.. 27868: 00405ffa 405ffa00 5ff80300 f16e2362 ._@..._@..._b#n. 27878: fdffff5f 54855f30 405f0020 5f000000 _...0_.T ._@..._ 27888: 00000040 0000405f 8d010000 0000b5fe @..._@.......... 27898: 89fb4e00 0200a0ef 080020fd f20a00f9 .N....... ...... 278a8: af000000 00a00f20 703f0000 0000602f .... .....?p/`.. 278b8: 2f900f00 00000060 901f900f 2f000000 .../`........../ 278c8: 00f10b70 20af0000 0010fc03 0000f907 p...... ........ 278d8: df78fa6f 030000b0 00c5ffae 00000000 o.x............. 278e8: b015d43e 02000000 0080ffbf 01000000 >............... 278f8: ff5f0031 5f00d7ff c0bf7897 0700405f 1._...._.x.._@.. 27908: 00405ff6 405ffa00 5ffa0000 f8030040 ._@..._@..._@... 27918: 6e23525f ffff5fe1 855f30fc 5f00f955 _R#n._...0_.U.._ 27928: 407f0040 0c00405f 00405fe0 5c00f902 @..@_@..._@....\ 27938: 0720d9ef 90af87fc 0100c00e 00800f10 .. ............. 27948: f50d0000 03000000 0050eaef feae0500 ..........P..... 27958: 00000040 0000f14e 08f30500 f2080000 @...N........... 27968: bf77fa2f ff9d02a0 ffff00c7 67f5ffff /.w............g 27978: 7277fb78 00f70100 f7010000 01000000 x.wr............ 27988: 000000f7 0000f701 00f70100 f7010000 ................ 27998: 01000000 000000f7 0000f701 00f70100 ................ 279a8: f7010000 306f0000 168f0000 080000f3 ......o0........ 279b8: 00306ff1 f3168f00 f1080000 0000306f .o0.........o0.. 279c8: 00f3168f 6ff10800 8f000030 0000f405 .......o0....... 279d8: 703ff009 00cd0000 5f0020de a8ff0480 ..?p..... ._.... 279e8: 0300d0bf 0081fdbe 0000e00c 6f306f00 .............o0o 279f8: 0c000050 00fb00c0 00f60300 0000f209 P............... 27a08: 2f0000ae 901f0080 00ce0000 0000f207 .../............ 27a18: db00f605 0e000000 00504fc0 3b8f0000 .........OP....; 27a28: 000000e0 00f8fb02 0b000000 000010ff ................ 27a38: b04f0000 405f0000 00df0000 0ff50200 ..O..._@........ 27a48: ff020090 f0070040 0700e00b 0c0090fe ....@........... 27a58: 00f306b0 00e0aa0c f801601f f3541f00 .........`....T. 27a68: 00106f00 107f00cd 00cc00f8 cb207f00 .o............ . 27a78: f701ad00 712f0000 265f00f6 0d0000f2 ....../q.._&.... 27a88: 0f00f1c6 0000d07b 00c0fd08 0080df0b ....{........... 27a98: 70ff0300 30ff0600 ef000000 fe010020 ...p...0.... ... 27aa8: 903f0000 00cd0000 7f00408f 10de0030 ..?......@..0... 27ab8: 0300802f 00d00cfa f3fb0700 0c000000 /............... 27ac8: 000000f8 00c0ef01 7fbf0000 6f000070 ............p..o 27ad8: 0020af60 ed01b02f 00f10c00 f607f804 `. ./........... 27ae8: f3090000 0000e00c f703f207 901f0000 ................ 27af8: 0010af00 1f00109e 00f602a0 0bf30800 ................ 27b08: 000000d0 00404fec fb5f0000 00000000 .....O@..._..... 27b18: 0000f20c f0090000 00000000 0000f009 ................ 27b28: f0090000 00000000 0000f009 ffffff3f ............?... 27b38: 777701fd 0090bf77 c01e0000 0c000000 ..www........... 27b48: 000000f2 0000f508 00f90400 ec010000 ................ 27b58: 00000000 000020cf 00508f00 904f0000 ..... ....P...O. 27b68: 1e000000 777777f8 ffffff05 ff5ff0ff .....www......_. 27b78: 5f50f705 00f30530 f305305f 05305f00 ..P_0..._0..._0. 27b88: 305f00f3 5f00f305 00f30530 f705305f .._0..._0..._0.. 27b98: 00ff5f50 0000007e 0000401f 0000900c P_..~....@...... 27ba8: 0000e007 0000f402 0000c900 00007e00 .............~.. 27bb8: 00402f00 00900c00 00e00700 00f30200 ./@............. 27bc8: 00d90000 007e0000 302f0000 900d0000 ......~.../0.... 27bd8: e0070000 ea35fabf ea00ea00 ea00ea00 ......5......... 27be8: ea00ea00 ea00ea00 ea00ea00 ea35ea00 ..............5. 27bf8: 2f00fabf 9d000080 f30000e0 d00600d5 .../............ 27c08: 600c007b 103f201f 009a800b ffffe004 {..`. ?......... 27c18: 1111ffff f6071111 01e70300 0080fd9e ................ 27c28: 90af87ce af000002 06000000 ffbe02f2 ................ 27c38: 42ec20ff 502ff227 ec207f00 02f27f42 . .B'./P.. .B... 27c48: 206ffbbf 0000008f 00008f00 008f0000 ..o ............ 27c58: 8f000000 00b3fe2b ef78ec8f 00a08f30 ....+.....x.0... 27c68: 208fc01e 8ff10700 f3050000 0700208f ... ......... .. 27c78: 00a08ff1 ec8fd01e 8e30ef78 00b3fe2b ........x.0.+... 27c88: c4ef3a00 7cd84f00 00d00df4 00f61307 .:...O.|........ 27c98: 304f0000 f6030000 0d000000 100600d0 ..O0............ 27ca8: f47cd74f c4ef3a00 00000000 0000f701 O.|..:.......... 27cb8: 00f70100 f7010000 a3ff3b00 87fd04f7 .........;...... 27cc8: d00ef7ce 3ff70b00 f7030060 0100304f .......?`...O0.. 27cd8: 00503ff7 c00ef703 04f70a00 f7be65fc .?P..........e.. 27ce8: b2ff3b00 fe3b00f7 fc0400a2 0e20ee67 .;....;.....g. . 27cf8: a01e00c0 0700503f ffff4ff0 723ff1ff ....?P...O....?r 27d08: 0e202222 000200c0 af87fd04 ef3a0050 "" .........P.:. 27d18: 5d0000d6 b52f00fc 00f30470 a0ffff0c ...]../.p....... 27d28: 0053f748 0500305f 5f0000f3 f3050030 H.S._0....._0... 27d38: 305f0000 00f30500 00305f00 b2ff3b00 .._0....._0..;.. 27d48: 87fe04e9 d10ef9cf 3ff90a00 f9010060 ...........?`... 27d58: 0000404f 00603ff9 d00ef901 04f90900 O@...?`......... 27d68: f8cf87fd b3ff3b00 000000f7 e909f405 .....;.......... 27d78: 01b0af77 00d8ff7c 0000008f 0000f008 w...|........... 27d88: 00008f00 bff20800 fb8f10ea f808fd89 ................ 27d98: 8ff40600 781f0010 f80000f0 0f00008f .......x........ 27da8: 0000f088 00008ff8 00f0880f 1a9ef800 ................ 27db8: f00800f2 8ff0088f 088ff008 f0088ff0 ................ 27dc8: 00e20700 0000f309 f1070000 00f10700 ................ 27dd8: 0700f107 f10700f1 00f10700 0700f107 ................ 27de8: f10700f1 18f00800 fc3ec06e 00008f20 ........n.>. ... 27df8: 00f00800 008f0000 f0080000 8fd11d00 ................ 27e08: 08e21d00 00e21df0 00f32d8f 70fffe08 .........-.....p 27e18: bfe28f00 01f20830 008f10ee f008fb03 ....0........... 27e28: 8ff70700 8f8f8f8f 8f8f8f8f 8e8f8f8f ................ 27e38: 3b91fe3c ff08a2fe c6cf9f96 708fd08f <..;...........p 27e48: 00c09f00 00f1585f 0100f605 00008ff7 ...._X.......... 27e58: 0f00404f 0400f088 f80000f4 4f00008f O@.............O 27e68: 880f0040 f40400f0 8ff80000 404f0000 @.............O@ 27e78: 8e800f00 08a1fe3b d08fa6ff 6f00808f ....;..........o 27e88: 0100f148 00008ff7 00f0880f 008ff800 H............... 27e98: f0880f00 8ff80000 800f0000 c4ef3b00 .............;.. 27ea8: 87fd0400 d00e60cf 3ff10b00 f5030060 .....`.....?`... 27eb8: 0100304f 00603ff7 d00ef503 04f10b00 O0...?`......... 27ec8: 60cf77fd c4ef3b00 fe3b8e00 fb8f00b3 .w.`.;....;..... 27ed8: 8f30df57 c00d0090 0700108f 00008ff1 W.0............. 27ee8: 208ff305 8ff10700 d01e00a0 ef78ec8f ... ..........x. 27ef8: fe2b8f30 008f00b3 8f000000 00000000 0.+............. 27f08: 0000008f ff3b0000 fd04f7a2 0ef7de87 ......;......... 27f18: f70b00d0 0300603f 00304ff7 603ff701 ....?`...O0...?` 27f28: 0ef70300 f70b00d0 ce77fd04 ff3b00f7 ..........w...;. 27f38: 0000f7a3 00f70100 f7010000 01000000 ................ 27f48: f02b8ef7 8f90ed8f 208f00a0 00008f00 ..+........ .... 27f58: 8f00008f 008f0000 00008f00 91fdae02 ................ 27f68: d069d71e 0000304f 0010b42f 60fdef06 ..i.O0../......` 27f78: f55b0100 f7000001 f36ba75f 40ecdf19 ..[....._.k....@ 27f88: 0000f305 cf00305f 8f04faff f3053075 ...._0......u0.. 27f98: 305f0000 00f30500 00305f00 0000f404 .._0....._0..... 27fa8: 0080c61f ae10fc5d 5a2f0000 f50200e0 ....]...../Z.... 27fb8: 2f0000ae 0200e05a 0000aef5 00f0592f .../Z......./Y.. 27fc8: 306ff504 ee51af00 02f5bf76 503ffbbe ..o0..Q.v.....?P 27fd8: 0000c00d 00f206cb f900f502 00e00900 ................ 27fe8: 800f009e 6f602f00 c00c0010 050000cb ...../`o........ 27ff8: 0000f4f6 00d0ef00 708f0000 0000bb00 ...........p.... 28008: 4f00109f 0e00f116 c00900f6 fc05600f ...O.........`.. 28018: 00f600b0 5fab00ac 05105f10 f7500ff1 ......._._....P. 28028: 0f00b00a c009f076 ac0000f5 8f4f00ba ....v.........O. 28038: ff040000 a0ef0040 e00e0000 00f40800 ....@........... 28048: 00704f00 308f209f cd00505f 0200902e .Op.. .0_P...... 28058: 0000d0ff 0000f60a 00e1fd04 c00deb01 ................ 28068: 3f10be00 00406f80 c00d407f 06cb0000 ...?.o@..@...... 28078: f40200f3 0900ea00 108f00d0 1f00701f .............p.. 28088: 00107f70 00d9e00a f2f90300 cf000000 p............... 28098: 000000b0 0000406f 0000ad00 00f5791c ....o@.......y.. 280a8: 70ee1a00 ff4f0000 5515f9ff 0000f45b ...p..O....U[... 280b8: 0100804f 0b0000ec 8f0000e1 f7040040 O...........@... 280c8: e51e0000 ff5f5355 2c00fcff 61af00f5 ....US_....,...a 280d8: 0000cc00 db0000db 00db0000 1f00ea02 ................ 280e8: fa0500f4 00db0000 0000db00 cc0000db ................ 280f8: 61af0000 5ff52c00 155ff115 f1155ff1 ...a.,._.._.._.. 28108: 5ff1155f 155ff115 f1155ff1 80be105f _.._.._.._.._... 28118: 0140af03 701f00f6 1f00f701 00f90070 ..@....p....p... 28128: fb00fb0a 01701f20 701f00f7 af03f601 .... .p....p.... 28138: 0090be40 00000000 00e43d00 f5860cb5 @........=...... 28148: 03f0201e 000290ef 02001000 400d90ce . .............@ 28158: 0e003b89 0d0e003b ce028940 f8080090 .;..;...@....... 28168: 00f7e7ef 00000000 00000000 00000000 ................ 28178: 00dc4900 16000000 00ffffbf ff8d0300 .I.............. 28188: 00ffffff ffffcf00 00ffffff ffffff00 ................ 28198: 00ffc7ff eaffff00 00ff0051 0083ff00 ........Q....... 281a8: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 281b8: 00ff0000 0000ff00 00ff0000 0000ff00 ................ 281c8: 00ffff2b 0000ff00 2bffffdf 0000ffff +..........+.... 281d8: dffdffdf 0000ffff dfb2ff2b 0000fdff ........+....... 281e8: 2b000000 0000b2ff d0000000 ffffff0f ...+............ 281f8: ff0df0ff 8888c8ff f0ffff8c 0000800f ................ 28208: f00ff008 0000800f ff0ff008 000080ff ................ 28218: f0ffff08 ccccec0f f00ff0ce ccccec0f ................ 28228: ff0ff0ce 000080ff f0ffff08 0000800f ................ 28238: f00ff008 0000800f ff0ff008 8888c8ff ................ 28248: d0ffff8c ffffff0f df0df0ff ffff73ff .............s.. 28258: fffdffff ffffa5ff ffffffff ffffa5ff ................ 28268: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 28278: df000000 ffff73ff fffdffff ffffa5ff .....s.......... 28288: ffffffff ffffa5ff dfffffff ffff73ff .............s.. 28298: 00fdffff 00000000 df000000 ffff73ff .............s.. 282a8: fffdffff ffffa5ff ffffffff ffffa5ff ................ 282b8: dfffffff ffff73ff 00fdffff 00000000 .....s.......... 282c8: 00b10a00 00000000 00fcbf00 00000000 ................ 282d8: 00fbff0b 00000000 1bc0ffbf 0b0000a0 ................ 282e8: cf00fcff bf0000fb bf00c0ff ff0bb0ff ................ 282f8: 0c0000fc ffbffbff 000000c0 fbffffcf ................ 28308: 00000000 b0ffff0c 00000000 00fbbf00 ................ 28318: 00000000 00b00b00 03000000 03000000 ................ 28328: 0010fc08 fcfff81c f5ff1c10 ff2cfcff ..............,. 28338: ffff05f5 0500f5ff 00f5ffff fdff1d00 ................ 28348: ff1c0010 1c10fcff fcfff9ff 05f5ff1c ................ 28358: f5dffcff d1ff0500 040000a4 000000a1 ................ 28368: 0000e04f 10020000 1003f16f d05f0000 O.......o....._. 28378: d13ff16f f1ff0300 fd5ff16f 40ff0d00 o.?.....o._....@ 28388: ff09f16f 00f74f70 cf00f16f 00f09fe0 o...pO..o....... 28398: 5f00f16f 00c0bff3 2f00f16f 00c0bff5 o.._....o../.... 283a8: 1f00e04f 00e0aff6 4f000000 00f46ff4 O..........O.o.. 283b8: af000000 10fe0ff0 ff050000 d3ff06a0 ................ 283c8: ff7f0000 ff9f0020 f4ffbeda ff060000 .... ........... 283d8: 30fdffff 17000000 0050cabd 00000000 ...0......P..... 283e8: 0000b88b 00000000 0000ffff 06300000 ..............0. 283f8: 0360ffff dffd0400 effdffff ffff0d40 ..`.........@... 28408: ffffffff ffff4fd0 ffff9ff9 ffff08f4 .....O.......... 28418: ffff0220 f9ff0080 ff9f0000 f9ff0000 ............... 28428: ff9f0000 ffff0800 ffff0220 ffff4f80 ........ ....O.. 28438: ffff9ff9 ffff0df4 ffffffff dffe04d0 ................ 28448: dffdffff 06300040 0360ffff 00000000 ....@.0...`..... 28458: 0000ffff 00000000 0000b88b 00000000 ................ 28468: 3f30dd03 000000f3 f5ff6f00 0000f44f ..0?.....o..O... 28478: 99ff0900 00f4bfff f6bf0100 f4ff6f22 ............"o.. 28488: fe2d0000 ef53ff35 ff0400f4 f8ff8fc1 ..-.5.S......... 28498: 7f40fe2d ffff1afa f7afa1ff ffdf82cf -.@............. 284a8: 28fdffff ff0e14fc ffffffff 0f0041e0 ...(.........A.. 284b8: ffffffff 0000f0ff 00f9ff0f 00f0ff8f ................ 284c8: f8ff0f00 f0ff8f00 ff0f0000 ff8f00f8 ................ 284d8: 0e0000f0 6f00f6ff 0000e0ff fddf0000 .......o........ 284e8: 00000000 ffff0000 00000000 ffff0000 ................ 284f8: 00000000 ffff0000 00000000 ffff0000 ................ 28508: 00000000 ffff0000 00000000 ffffff4f ............O... 28518: 0000f4ff ffffff0b 0000b0ff ffffbf00 ................ 28528: 000000fb ffff0b00 000000b0 fbbf0000 ................ 28538: df000000 b11bfcff fffdffcf 2cc2ffff ..............., 28548: ffffffff ffffffff ffffffff ffffffff ................ 28558: dfffe0f0 ffffffff 00fdffff ffffef04 ................ 28568: 0040feff ffff1e00 e1ffffff b0af0000 ..@............. 28578: 0b000000 ff0500fa 00000010 1e50ff01 ..............P. 28588: 000000f6 e16f0000 0000b0af 0b000000 ......o......... 28598: fffffffa ff080080 ffffffff 1f00f1ff ................ 285a8: ffffffff ffffffff ffffffff ffffffff ................ 285b8: ffffffff ffffffff ffffffff ff8fffff ................ 285c8: ffffffff 00f8ffff dabd0600 00ff0250 ............P... 285d8: ffffef05 00ff42fe 7ba7ff7f 05fff9ff .....B.....{.... 285e8: 0000c1ff 0effff2c 020000fc 5fffdf22 ....,.......".._ 285f8: 0f0000f2 8fffffff 0f0000b0 00ffffff ................ ... 28614: ff000000 00f0ffff fff80b00 00f0ffff ................ 28624: fff42f00 002022fd ffe0cf00 0000c2ff ./..." ......... 28634: ff40ff2c 6ab7ff9f ff00f7ff ffffdf24 ,.@....j....$... 28644: ff0050fe dbac0520 00000060 00000000 .P.. ...`....... 28654: 008d0000 00ff0800 dfff8f00 ffffffff ................ 28664: ffffffff ffffffff ffffffff dfffffff ................ 28674: 00ffffff 00ff8f00 00ff0800 008d0000 ................ ... 28690: 0000008d 00ff0800 8f000000 cf0000ff ................ 286a0: 01ffffff ffffff50 fff706ff 00ffffff ....P........... 286b0: ffffffbe ffae00ff 05ffffff ffffdff8 ................ 286c0: 006002ff 00ff9f00 09000000 000000ff ..`............. 286d0: 009e0000 00000000 00000000 00000000 ................ 286e0: 00100600 00000000 d21f0000 00000000 ................ 286f0: 0300008d 000010ee 0a00ff08 00b02fb1 ............./.. 28700: 00ff8f00 f407fc05 ffffffdf 605f5002 .............P_` 28710: fffffff9 0df706ff ffffbdc0 ae00ffff ................ 28720: ff9ff009 00ffffff 8ff009ae ffffffff ................ 28730: c00df706 ffffdfad 5f5002ff 0000e960 ..........P_`... 28740: 0500ff8f 00f406fc 00ff0800 b02fb10a ............../. 28750: 8d000000 ee020000 00000010 1f000000 ................ 28760: 000000d2 00000000 8f001006 ffffffff ................ 28770: fff8ffff fffffffc ffffffff ffff2f20 ............ /.. 28780: fcffffff ffff0c00 ffffffee feff2f20 ............ /.. 28790: ffffef22 e2fffffc ffff2e00 20fe4efe "............N. 287a0: ffff0200 00c202e2 ffff0000 00000020 ............ ... 287b0: ffff0000 00000000 ffff0000 ffffffff ................ 287c0: 8fffffff ffffffff 00f8ffff 00000000 ................ 287d0: 010030ff 0040ffcc 40ffff2d ffffef03 .0....@.-..@.... 287e0: ffff3f40 ffff44ff ff9fffff ffffffff @?...D.......... 287f0: ffffffff ffffffff ffffafff ff45ffff ..............E. 28800: 40ffffff ffffff4f ffef0340 2e0040ff ...@O...@....@.. 28810: 0030ffff 0000cc01 00000000 00000000 ..0............. 28820: 918f0000 00000000 70ffff00 00000000 ...........p.... 28830: 40fdffff ff000000 10faffff ffff0000 ...@............ 28840: 00f7ffff ffffff00 00d5ffff ffffffff ................ 28850: ffb2ffff ffffffff fffffdff ffffffff ................ 28860: fffffffd b2ffffff ffffffff ff00d5ff ................ 28870: f7ffffff ffff0000 0010faff fdffff00 ................ 28880: 00000040 0070ffff 8e000000 000000a1 @.....p......... ... 288a0: 00f8ff8f fff8ff8f ff00ffff ffffffff ................ 288b0: ffff00ff ffffffff ffffff00 00ffffff ................ 288c0: ffffffff ff00ffff ffffffff ffff00ff ................ 288d0: ffffffff ffffff00 00ffffff ffffffff ................ 288e0: ff00ffff ffffffff ffff00ff ffffffff ................ 288f0: ffffff00 00ffffff 7fffffff 7f00f7ff ................ 28900: ff8ff7ff ffffffff fffffff8 ffffffff ................ 28910: ffffffff ffffffff ffffffff ffffffff ................ 28920: ffffffff ffffffff ffffffff ffffffff ................ 28930: ffffffff ffffffff ffffffff ffffffff ................ 28940: ffffffff ffffffff ffffffff ffffffff ................ 28950: ffffffff ffffffff ffffffff ffff8fff ................ 28960: f8ffffff 00000000 0010cc00 d2ffff03 ................ 28970: ffff0400 ff0430fe 04f4ffff ffffffff .....0.......... 28980: ffffff54 fffff9ff ffffffff ffffffff T............... 28990: ffffffff fffffff9 ffff44ff ff04f3ff .........D...... 289a0: 0430feff 00d2ffff 10ccff04 00ff0300 ..0............. 289b0: 00000000 2d000000 000000d2 ef010000 .......-........ 289c0: 000010fe ff1d0000 0000d1ff ffcf0000 ................ 289d0: 0000fcff ffff0b00 00b0ffff ffffaf00 ................ 289e0: 00faffff ffffff09 90ffffff ffffff0f ................ 289f0: f0ffffff ffffff08 80ffffff 00000000 ................ 28a00: 00000000 ffffff0c c0ffffff ffffff0f ................ 28a10: f0ffffff ffffff0f f0ffffff ffffff0c ................ 28a20: c0ffffff 1a000000 01000040 0000f0df ........@....... 28a30: 00a0ff1d 00fadf01 a0ff1d00 fadf0100 ................ 28a40: ff0c0000 0d0000a0 000080ff 00f8df01 ................ 28a50: ff1d0000 01000080 0000f8df 80ff1d00 ................ 28a60: df010000 000000f0 a104501b 0f000000 .........P...... 28a70: 000010fd 00d1ff0a fdaf0000 0a000010 ................ 28a80: 0000d1ff 10fdaf00 ff0a0000 080000c0 ................ 28a90: 0000d0ff 0010fd8f 00d1ff08 10fd8f00 ................ 28aa0: d1ff0800 fd0f0000 05000010 000000b1 ................ 28ab0: ff040000 00000040 80ff0800 00000000 ....@........... 28ac0: 0080ff08 08000000 000080ff ff080000 ................ 28ad0: 48000080 c8ff8c88 ffff8488 ffffffff ...H............ 28ae0: ffffffff ffffffff ff8c8848 008488c8 ........H....... 28af0: 80ff0800 00000000 0080ff08 08000000 ................ 28b00: 000080ff ff080000 00000080 40ff0400 ...............@ 28b10: 44140000 44444444 ffffef41 feffffff ...DDDDDA....... 28b20: ffffffff 7bffffff bbbbbbbb 0000b7bb .......{........ 28b30: daffad05 00000050 88fcdf04 0040fdcf ....P.........@. 28b40: 40fe7f00 f7ef0400 f4ff0700 4f809e00 ...@...........O 28b50: ff4f70ff f8af00c0 dff4ff0c ff9a80ff .pO............. 28b60: fdff08fe ef80ffdf ff08feff c0ff4ffd .............O.. 28b70: 0cf8ff8f ff07f4ff 80ee08f4 0070ff4f ............O.p. 28b80: 0040fe7f 00f8ef04 fcdf0400 40fdcf88 ..@............@ 28b90: 05000000 50daffad 208c0000 00000000 .......P... .... 28ba0: 00000000 0000e4df 00000000 ff1b0000 ................ 28bb0: fddf4980 000000a5 ffff7f00 d4ff8cd8 .I.............. 28bc0: 04000000 0000f8ef 0070ff4e ff1c0000 ........N.p..... 28bd0: ff04e869 e30400f7 fffe9f00 40ffcf80 i..............@ 28be0: 0570ff0d 8fe0ffff ff0dd0ff ff2d00f7 ..p...........-. 28bf0: d0ff8fe0 00fcff04 cff8af00 7f0030ff .............0.. 28c00: 060040ff 00f7ffff f4ff0800 ff3e0000 .@............>. 28c10: 000000a0 82c8ff4d 00f7bf01 5a000000 ....M..........Z 28c20: 0810fcdf 0000a0ff 00000000 fd4e0000 ..............N. ... 28c38: 0000c802 d22d0000 00000000 00000000 ......-......... 28c48: 0000fbbf 00000000 ffff0500 00000050 ............P... 28c58: 0d000000 00d0ffff 00000000 ffff7f00 ................ 28c68: 000000f7 ff010000 10ff8dd8 00000000 ................ 28c78: 0aa0ff0a 0000a0ff ff3f0000 f3ff0bb0 ..........?..... 28c88: 00000000 0cc0ffcf 0000fcff ffff0500 ................ 28c98: ffff0dd0 0e000050 9ff9ffff 00e0ffff ....P........... 28ca8: ffff8f00 ffff2ee2 ff0200f8 0990ffff ................ 28cb8: 10ffffff ffffff0a ffff3ee3 ff0fa0ff .........>...... 28cc8: ffffffff f0ffffff ffffff08 ffffffff ................ 28cd8: 000080ff 00000000 00000000 00000000 ................ 28ce8: 000000d8 00000000 ffff80ff ff070070 ............p... 28cf8: fffff8ff ff6f00f6 8e78fdff e8ff15ff ......o...x..... 28d08: 0200e2ff 20fe4fe5 000020fe 00f3ff13 .....O. . ...... 28d18: 00000052 0031ff3f 02000052 205ef4ef R...?.1.R.....^ 28d28: 8e7820fe e8ff51ff ffffe2ff ff6f00f6 . x..Q........o. 28d38: fffffdff ff070070 0000f8ff 00000000 ....p........... 28d48: 000080ff 00000000 000000d8 00000000 ................ ... 28d60: 01000000 000010dd ff1d0000 000000d1 ................ 28d70: fdffdf01 1d000010 d1ff99ff f9df0100 ................ 28d80: 10fd9f00 0090ff1d bfd1ff09 000000f9 ................ 28d90: 905ffb9f 09000000 000000f5 00000000 .._............. 28da0: 00000000 5f000000 00000090 f9bff509 ......._........ 28db0: 9f000000 90ff1dfb d1ff0900 00f9df01 ................ 28dc0: 0010fd9f ff99ff1d 010000d1 10fdffdf ................ 28dd0: 1d000000 0000d1ff dd010000 00000010 ................ ... 28df0: 00d11d00 00000000 df010000 ffef10fd ................ 28e00: 00d0ffff d1ffff1d ffffffaf cfcf00f0 ................ 28e10: 0000fcfc 00f00f00 b6f11f6b 0f000000 ........k....... 28e20: 0f0000f0 000000f0 00f00f00 00f00f00 ................ 28e30: 0f000000 0f0000f0 000000f0 b6f11f6b ............k... 28e40: 00f00f00 cfcf0000 0f00fcfc faffffff ................ 28e50: d1ffff1d ffff0d00 df01feff 000010fd ................ 28e60: 00000000 00d11d00 00000000 00000000 ................ 28e70: ff8f0000 0000e2ff ffff0000 0020feff .............. . 28e80: ffff0000 ffffffff fffff8ff ffffffff ................ 28e90: ffffffff ffffffff ffffffff ffffffff ................ 28ea0: ffffffff ffffffff ffffffff ffffffff ................ 28eb0: ffffffff ffffffff ffffffff ffffffff ................ 28ec0: ffffffff ffffffff ff8fffff ffffffff ................ 28ed0: 0000f8ff 00b00b00 00000000 00fbbf00 ................ 28ee0: 00000000 b0ffff0b 00000000 fbffffbf ................ 28ef0: 0b000000 ffffffff 4f0000b0 ffffffff ...........O.... 28f00: 000000f4 00ffff00 00000000 00ffff00 ................ 28f10: 00000000 00ffff00 00000000 00ffff00 ................ 28f20: 00000000 00ffff00 ffdf0000 0ffddff0 ................ 28f30: fffffdff 9f0000f9 ffffffff ffffffff ................ 28f40: ffffffff f0ffffff ffdfffe0 ffffffff ................ 28f50: 0000fdff 00000000 00000000 00000000 ................ 28f60: 0062ea0a 00000000 f0ffff02 00000000 ..b............. 28f70: ffff9f00 00000000 ffff0f00 000000d0 ................ 28f80: ffff0200 000000fb ef030000 000070ff .............p.. 28f90: 04000000 0000f2ff 00000000 0000fbbf ................ 28fa0: 00000000 0030ff6f 00000200 0090ff4f ....o.0.....O... 28fb0: 00f38f02 00d0ff6f e4ffff0a 00d1ffbf ....o........... 28fc0: ffffef00 00d1ffff ffff0a00 0090ffff ................ 28fd0: ff6f0000 0030fbff ff020000 000072db ..o...0......r.. 28fe0: 08000000 000080ee ff086106 2d0080ff .........a.....- 28ff0: 33efd0ff ff2e00fe 3ff30ef3 f3ff2ee0 ...3.......?.... 29000: ffff8f00 00f3ff6e ffff8e00 0000f3ff ....n........... 29010: ffef0200 000000f3 ffff2e00 08000030 ............0... 29020: ffffffef ff080030 ffeff6ff 33ef0030 ....0.......0..3 29030: ffef02fe 3ff30e30 ffef02e0 f8ff8f30 ....0..?....0... 29040: fddf0200 00e88e00 10660000 ffdf0000 ..........f..... 29050: 00200dff ffffff00 0000e20f 0fffffff .. ............. 29060: fff0dffd 0020ffff fffff0ff ffffffff ...... ......... 29070: fffffff0 f0ffffff ffffffff fff0ffff ................ 29080: ffffffff fffff0ff ffffffff fffffff0 ................ 29090: f0ffffff ffffffff fff0ffff ffffffff ................ 290a0: ffdff0ff fffdffff 000000f9 ffff0000 ................ 290b0: 00ffffff ffffdf00 0000fdff ffffff8f ................ 290c0: ff00c2ff ffffffff 00ff20fe ff010000 ......... ...... 290d0: 0000ffe2 fcff0000 000000ff ffffff00 ................ 290e0: 00000000 ffffffff ffffffff ffffffff ................ 290f0: ffffffff 11fbffff ffffffbf 1f00f1ff ................ 29100: ffffffff ff1f00f1 fbffffff ffffbf11 ................ 29110: ffffffff 8fffffff ffffffff df00f8ff ................ 29120: 0000fdff fcffff01 ff030000 0000f7ff ................ 29130: f2ffff06 ff080000 0000d0ff ffffff0a ................ 29140: ff0cd0ff a0ffffff ffffff0e ff0d20ff ............. .. 29150: 00f8ffff ff0a0000 000000e0 0050ff0e ..............P. 29160: fc2f0000 00000000 0000f35f a09f0000 ../....._....... 29170: 00000000 000010df 00d70000 04000000 ................ 29180: 000040ee 99ffdf00 0000fdff ff99ffff .@.............. 29190: ff0000ff ffffffff ffff0000 00000090 ................ 291a0: 0dffff00 200dffff ff0fffff ffe20fff ....... ........ 291b0: ffff0fff fffffd0f 20ffff0f 0fffff00 ........... .... 291c0: ffffffff ff0fffff ffffffff ffff0fff ................ 291d0: ffdfffff ffffff0f 0f0000ff ffffffff ................ 291e0: ff0f0000 00ffffff ffff0d00 0000fdff ................ 291f0: 0000cc00 02000000 000030ff ffbf0100 .........0...... 29200: 000020fc ffffff1e 9f0000e1 f8ffffff . .............. 29210: ffef0000 00fdffff ffffff00 0100ffff ................ 29220: ffffffff ff0300ff ffffffff ffff0830 ............0... 29230: 80ffffff ffffff1e cfe1ffff ffffffff ................ 29240: ffcffcff ffffffff 000000fc 00000000 ................ 29250: ff0e0000 000000e0 40ee0400 ff8f0000 ...........@.... 29260: ffffffff fff8ffff ffffffff ffffffff ................ 29270: 0ff000ff 000ff000 f000ffff 0ff0000f ................ 29280: ffffff00 ffffffff ffffffff 888008f8 ................ 29290: ff8f8008 8008f8ff 8f800888 ffffffff ................ 292a0: ffffffff 00ffffff 000000f0 ffff000f ................ 292b0: 0000f000 ff000f00 ffffffff ffffffff ................ 292c0: ffff8fff ffffffff 0000f8ff 00000000 ................ ... 292d8: 70af0300 00000000 ffcf0400 000000f0 ...p............ 292e8: ffdf0600 0000a0ff ffef1700 0030ffff ..............0. 292f8: ffff1800 00fcffff ffff2a00 f4ffffff .........*...... 29308: ffff0800 ffffffff ff0f00d0 ffffffff ................ 29318: 080060ff ffffffff 0000feff 00000000 .`.............. 29328: 00f7ffff 00000000 f1ffff00 00000000 ................ 29338: ffff0000 00000080 ff000000 000010ff ................ 29348: 00000000 0000faff 00000000 00f2ff00 ................ 29358: 00000000 808f0000 00000000 00000000 ................ 29368: 00000000 f0ffffdf ffff00d2 20fef0ff ............... 29378: f0ffffff ffffe2ff fdfff0ff f2ffffff ................ 29388: ffff0000 ffffffff ffffffff ffffffff ................ 29398: ffffffff ffffffff ffffffff ffffffff ................ 293a8: ffffffff ffffffff ffffffff ffffffff ................ 293b8: ffffffff ffffffff ffffffff ffdfffff ................ 293c8: fdffffff 00000000 00000000 00000000 ................ 293d8: feef9c04 000040c9 ffef0700 feffffff .....@.......... 293e8: df040070 8aa8fcff 40fdffcf 00d5ff6f p..........@o... 293f8: 5d000000 f6cff6ff 00000000 fc6f0000 ...]..........o. 29408: 5a00301a 00a5fddf 0000a103 ffffff4d .0.Z........M... 29418: 0000d4ff feff0500 ffef8aa8 01000050 ............P... 29428: 000070df 0010fd07 00120000 21000000 .p.............! 29438: 00000000 e44e0000 00000000 00000000 ......N......... 29448: 0000feef 00000000 feef0000 00000000 ................ 29458: 00000000 0000e44e ff8f0000 ffffffff ....N........... 29468: 80ffffff ffffffff ffffffff 00fff0ff ................ 29478: 00000000 fd0f0000 ffff0fff ffffffff ................ 29488: 0fffff0f ffffffff ff00ffff ffff0fff ................ 29498: ffffffff 0fffff00 ffffffff ff0fffff ................ 294a8: 000000ff 00000000 fffffd0f ffffffff ................ 294b8: f0ffffff ffffff8f ffffffff ff8f80ff ................ 294c8: ffffffff 80ffffff ffffffff ffffffff ................ 294d8: 00fff0ff 00000000 fd0f0000 ffff0fff ................ 294e8: 00f0ffff 0fffff0f ffffffff ff0000f0 ................ 294f8: ffff0fff 00f0ffff 0fffff00 ffffffff ................ 29508: ff0f00f0 000000ff 00000000 fffffd0f ................ 29518: ffffffff f0ffffff ffffff8f ffffffff ................ 29528: ff8f80ff ffffffff 80ffffff ffffffff ................ 29538: ffffffff 00fff0ff 00000000 fd0f0000 ................ 29548: ffff0fff 000000ff 0fffff0f 00ffffff ................ 29558: ff000000 ffff0fff 000000ff 0fffff00 ................ 29568: 00ffffff ff0f0000 000000ff 00000000 ................ 29578: fffffd0f ffffffff f0ffffff ffffff8f ................ 29588: ffffffff ff8f80ff ffffffff 80ffffff ................ 29598: ffffffff ffffffff 00fff0ff 00000000 ................ 295a8: fd0f0000 f0ff0fff 00000000 0fffff0f ................ 295b8: 0000f0ff ff000000 f0ff0fff 00000000 ................ 295c8: 0fffff00 0000f0ff ff0f0000 000000ff ................ 295d8: 00000000 fffffd0f ffffffff f0ffffff ................ 295e8: ffffff8f ffffffff ff8f80ff ffffffff ................ 295f8: 80ffffff ffffffff ffffffff 00fff0ff ................ 29608: 00000000 fd0f0000 000000ff 00000000 ................ 29618: 00ffff0f 00000000 ff000000 000000ff ................ 29628: 00000000 00ffff00 00000000 ff0f0000 ................ 29638: 000000ff 00000000 fffffd0f ffffffff ................ 29648: f0ffffff ffffff8f ffffffff 000080ff ................ 29658: 01000000 00000000 00000000 10fd0700 ................ 29668: 00000000 cf010000 0000f5ff 00000000 ................ 29678: fe29b900 00000010 3f000000 00000210 ..)........?.... 29688: df030000 00900a80 70030000 77ffdf00 ...........p...w 29698: 555555f7 0fd38f55 dfccfdff cdccccdc .UUUU........... 296a8: fe8fb0ff 00aa0010 404d0000 00104600 ..........M@.F.. 296b8: 3302f201 00000010 09000000 00f9cfb1 ...3............ 296c8: 00000000 ff0a0000 000090ff 00000000 ................ 296d8: f9bf0000 00000000 00000000 00002201 .............".. 296e8: df180000 020092fd ffeffbef faff0d30 ............0... 296f8: 4fe0ff2e ff03faff fafa9ff5 cffa4f35 ...O........5O.. 29708: 0b3d8ac0 03fbeffd fffe8f12 ff06b0ff ..=............. 29718: d1ffffff efffff08 9f1011fd 59d1dfff ...............Y 29728: affd0b3b 1d38fad7 faff5ffb 0df7df01 ;.....8.._...... 29738: ff1dfaff fcef03f1 0050ffdf a3fedf18 ..........P..... 29748: 7f000000 0000f7ff ffffffef effeffff ................ 29758: ffffffff 0000feff 00000000 ffff0f00 ................ 29768: f0ffffff ffffff0f 0ff0ffff f9999ff9 ................ 29778: f80ff09f 8ff8888f 8ff80ff0 f08ff888 ................ 29788: 888ff80f 0ff08ff8 f8888ff8 f80ff08f ................ 29798: 8ff8888f 8ff80ff0 f08ff888 999ff90f ................ 297a8: 0ff09ff9 ffffffff ff08f0ff ffffffff ................ 297b8: 00000080 7f000000 000000a0 8f000000 ................ 297c8: 0000b0ff 0d000000 00a0ffff 8a000000 ................ 297d8: 00ffff1d 8f000000 70ff1dfa 8f000000 ...........p.... 297e8: 801dfaff 8f000000 00faffff 8f000000 ................ 297f8: 80ffffff 8f000000 80ffffff 8f000000 ................ 29808: 80ffffff 8f000000 80ffffff 6f000000 ...............o 29818: 80ffffff 0b000000 80ffffff 00000000 ................ 29828: 80ffffdf 00000000 80ffff0e 00000000 ................ 29838: 60dbde00 00000000 00000000 00000000 ...`............ 29848: 00000000 ffffff1b e4ffffff ffdf0100 ................ 29858: ffffffff 1d00feff effaffff ffffaffe ................ 29868: ffffdf01 0ae22ea0 ff1dffff 02e2ffff ................ 29878: ffff2e20 ffffffcf ef0220fe ffcfffff ........ ...... 29888: 20feffff ffffef02 ffffff1d 2e2002e2 ... .......... . 29898: df01ffff 2ea0ffff ffff0ae2 ffff1d00 ................ 298a8: affeeffa 0100ffff ffffffdf feffffff ................ 298b8: ff1b0000 ffffffff 0800e4ff e4ffffff ................ 298c8: ffff8f00 f808feff ff400b0f 0b0ff88f ..........@..... 298d8: f8ffff40 ff400b0f ffffffff ffffffff @.....@......... 298e8: ffffffff ffffffff ffffffff ffffffff ................ 298f8: ffffffff ffffffff ffffffff ffffffff ................ 29908: ffffffff ffffffff ffffffff ffefffff ................ 29918: feffffff ffffff4e 0000e4ff 00000000 ....N........... 29928: 00000100 00000000 00e00300 00001000 ................ 29938: 10ef0200 0000bf00 f17f0000 00f1cf00 ................ 29948: ff070000 77ffcf11 bf777777 ffffcff1 .......wwww..... 29958: ffffffff ffff17ff ffffffff ff07e0ff ................ 29968: 000000f1 06000000 000010ff 00000000 ................ 29978: 0000a005 00000000 ........ 00029980 : 29980: 00000100 00000000 00000100 00000003 ................ 29990: 00000200 00000000 00000000 00000000 ................ 299a0: 00010000 00000000 00000000 00000000 ................ 299b0: 000c0100 0000fa07 f1f20000 04060c02 ................ 299c0: 010d02f6 0008030b 00000000 00000000 ................ 299d0: 020f0000 000000fe 00000000 00000000 ................ 299e0: f8000500 00000000 0504fb00 00fd0000 ................ 299f0: fd0003fe fbfffd00 00000000 fd0000fd ................ 29a00: fd0000fc 0000fb00 00000000 fd000000 ................ 29a10: 00fc00fd 00e100f9 0500fb00 fb000008 ................ 29a20: 05080303 000005fc 000000f1 00000000 ................ 29a30: 00000000 000000f7 00000000 00000000 ................ 29a40: f9000000 f600f3fd 000000fe 000a0100 ................ 29a50: 01fffef8 0000fc00 0000edfe 00000000 ................ 29a60: 00000000 0afeec00 00000000 00000000 ................ 29a70: 00000000 000000f6 00000000 08000000 ................ 29a80: 00000300 000000fb 00000000 00000000 ................ 29a90: 00000000 020a0000 00000001 00000000 ................ ... 29ac0: 000000f7 00000000 00000000 00000000 ................ 29ad0: 00000000 02000000 fd080305 fd050000 ................ 29ae0: 0702ddf8 00fd0105 00080009 00e80008 ................ 29af0: 080008fd 000305fd 00fd0100 0014fc00 ................ 29b00: 00080014 0804030b f7000000 00000000 ................ 29b10: 0200fe01 02fbfdfb 0000fd00 0000f600 ................ ... 29b28: 0000ef00 00000000 00000000 00000000 ................ 29b38: 00f20100 000000f0 1900fe00 0303fdfd ................ 29b48: 03fd00fe 00f20000 00000000 00000000 ................ 29b58: 00e70000 00000003 00000000 00000000 ................ 29b68: 0f00f000 00f70000 e7ef0008 0008fbef ................ 29b78: 0300ef00 00fc00fa 00000000 00000000 ................ 29b88: 07000000 0000e108 00000000 00000000 ................ 29b98: 000c0000 00000002 02020000 ff00fbfd ................ 29ba8: 0000fdff 000000fe 00fe00fb fa00fbfa ................ 29bb8: 00fbf8f8 00fb00fb fe000000 00030000 ................ 29bc8: 0100fd02 03000000 000000fe ff0303fe ................ 29bd8: fb000000 0000ff00 01000000 00fe0300 ................ 29be8: 00fc00fd 0800fe00 00fd0000 00000000 ................ 29bf8: fefe01ff 00fd0000 000000fd 00000000 ................ 29c08: ffff0000 00fdfd00 00000000 fe000001 ................ 29c18: fdfdfd00 00000000 00000000 0000fe00 ................ 29c28: fdfe0000 f800fc00 0005f8fe 0503fb00 ................ 29c38: fffa0007 f4ff00fd f202fe03 01000003 ................ 29c48: fef200f3 f300feea 00070500 00000003 ................ 29c58: fb000100 00f800fd 00fd0000 00fd0000 ................ 29c68: 00000000 ff00ffff 000000fd 00000000 ................ 29c78: fe00fdfd 0000fefd 000000fd 00000000 ................ 29c88: 00000000 fd00fefe fb00fe00 fd000003 ................ 29c98: 00030301 00000000 0000fe00 02000000 ................ 29ca8: 00fd0000 00fdfefd 00000000 00020000 ................ 29cb8: 000000fe 00fcfd00 fe0800fb 0000f801 ................ 29cc8: f5f3f307 fe0003fb fb00fbef fb04fb00 ................ 29cd8: 00f900f0 02ff0100 000300fe f300f6f8 ................ 29ce8: f8fafbfa fbfff9fd 010002f9 0000fd00 ................ 29cf8: 03000200 00000000 00000000 fd000000 ................ 29d08: ff00ff00 fafc00fd f800fffa 00000000 ................ 29d18: 00fe0000 01000000 000000fe 00000003 ................ 29d28: 00000000 00000c00 00000000 00000002 ................ 29d38: 000000fd 00000000 00000000 000300fb ................ ... 29d54: 000000fe 000000fb 00f8f300 f3fc0000 ................ 29d64: 03fd0000 0000f900 00000000 00000000 ................ 29d74: fb0000fc 00000000 00000000 00000000 ................ 29d84: 00fb0003 03000000 fbfb0200 fdfdfd00 ................ 29d94: 00000000 00f80000 fdfc00fd f8fafa00 ................ 29da4: 00fb00fe 000000f8 00001400 fd000001 ................ 29db4: f5000300 00000000 08fbe800 00f5fe08 ................ 29dc4: f300fc03 ee03fdff 040003fd f8f7fcf7 ................ 29dd4: f10000f5 00000f00 000000ff f9fdffff ................ 29de4: 00e8fff8 00000000 00000000 00000001 ................ ... 29e00: ff00fd00 0000fcfd 00fd00fb 00000000 ................ ... 29e18: 00ff0000 050000fb fa0003ff f9fffe03 ................ 29e28: fdfd00fd fcfc00fe fffe0000 00fdfcfe ................ 29e38: 0300fd00 00fa00fe 00fb0000 fcfc00fc ................ 29e48: 00000003 00000000 0003fb00 fdfe00fc ................ 29e58: fefefef8 fffdfeff 00000000 fefefd00 ................ 29e68: 00000000 fe00fe03 fe000000 fdfefefd ................ 29e78: 0a0200fe 00f900ff fd0005fe 0004fdf5 ................ 29e88: 03fcf400 fe0002fc fc00f8fe fc000001 ................ 29e98: 03000000 00fbfb03 fdfcfdfc 01fc00fd ................ 29ea8: 0008fcfb 00000000 00000000 00000003 ................ ... 29ecc: 000000fc 00000000 00000000 00000000 ................ ... 29ef8: 000000fe 00000000 00000000 00000000 ................ ... 29f14: fdfe0000 00000000 00000000 00000000 ................ 29f24: fd0000fc fdfd0000 00000000 000000fd ................ 29f34: 0000ff00 fe000000 00000000 00fb00fc ................ 29f44: 00f80000 0105fa02 0000f4fe f600fdfa ................ 29f54: 0000f9fa f6f6fdf5 00f900f4 00fd1102 ................ 29f64: fdfffdfa f7fbf9fc 00fdfaf6 0100fe00 ................ 29f74: feee0000 f7fa0608 00f80100 05fdfef3 ................ 29f84: 0001fde8 f3fdef00 0000edfd 010f00ee ................ 29f94: 0000fe00 feff0000 ef00fef6 00000000 ................ 29fa4: 00fe00f8 00f4f9ff f8fcff00 00fe00fd ................ 29fb4: f4000000 fef8f8fd fcfdfafc f8fefb00 ................ 29fc4: fbfd00fc 0100fbfd 00f8fe00 00fb0005 ................ 29fd4: 03000000 0afb0200 fdfdfd00 00000000 ................ 29fe4: 00f80000 fdfc00fd f8fafa00 02fb00fe ................ 29ff4: 0000000a 00001400 fd000001 00000300 ................ 2a004: 00000000 00ff0000 00000000 0000fbfe ................ 2a014: ff000000 fd000000 fb0000fd fb0000fd ................ 2a024: 00ff0400 00000000 00000100 05040000 ................ 2a034: f800fe02 f80800fc 0afbfbf8 feea0305 ................ 2a044: fd00fd05 00f7fd03 fefd03fd 0000fef8 ................ 2a054: f9000508 07fdf200 fd01f6fd 0afdf8f8 ................ 2a064: 00fc0003 080200f9 faf6f7fa ed010008 ................ 2a074: fefc03fe f7fa00fa 00fefcfc fdfbfa00 ................ 2a084: fd060800 fcf200f2 fff1f700 f9f8fcf8 ................ 2a094: fd000007 00fefb00 0400fbfd 000003f8 ................ 2a0a4: fafd00f2 faf8fefc f800faf8 f8fbfafd ................ 2a0b4: 010000fd f800fc0c fbfd00fd f6f9f9fa ................ 2a0c4: 0005fbfd fdf300fc f7f80502 fd08f8fb ................ 2a0d4: 05fbe801 00f7fcfa fdfdf5f8 f8fbfdfe ................ 2a0e4: 080000ff 00effe07 f606faf1 f5f7fbef ................ 2a0f4: 0005f8f3 fd000000 fd030000 05fb0205 ................ 2a104: fff80000 0100ff00 0000fe01 00000000 ................ 2a114: 000000fd 01080200 0000fd00 fefe0000 ................ 2a124: 000000fd 00000201 00020000 000a00fe ................ 2a134: fd010105 00000500 00000200 00000000 ................ 2a144: 00000000 07000800 00000000 00000000 ................ 2a154: 00000000 00f10000 080004fd 03190000 ................ 2a164: 0303fbfb 00f301fe 00f10c00 00000000 ................ 2a174: 00000000 0aef0000 00000024 00000000 ........$....... 2a184: 00000000 0000f100 00000000 00000000 ................ ... 2a1a4: fb0000fc 000000fe 00000000 00000000 ................ ... 2a1bc: 00f900fe 00000100 fefb2103 03f90708 .........!...... 2a1cc: 03030000 000000fd 00000000 00000000 ................ 2a1dc: 000007df 00000000 00000000 00000000 ................ 2a1ec: f9000000 f9000000 00000000 0000fffa ................ 2a1fc: fd00fa00 0000f400 00000000 00000000 ................ 2a20c: 0000ef00 00010000 00000000 0000fd00 ................ 2a21c: 00fc00fb 000000f9 00fd03fc fafdf900 ................ 2a22c: 00f90000 00f400fd eb0000fd f7fdf6fb ................ 2a23c: 00ef0000 0000fff9 00000000 fbfc0000 ................ 2a24c: 0000fcfe 00fa0000 05fd03fa fefafe00 ................ 2a25c: fd00fbfc f902feff 000000ff 00fcfee9 ................ 2a26c: f4fe00fa fe0000fe 000000fe fe000200 ................ 2a27c: 0004fefc 00000000 00000000 00000000 ................ ... 2a2a8: 00030000 00000000 fe00fa00 fb000000 ................ 2a2b8: 00000003 00fbfdf9 fd00f900 0000f400 ................ 2a2c8: 00e70000 00f3f7fb fe00ef00 000000fc ................ 2a2d8: 00000000 fffcfd00 000001fc 0800fd04 ................ 2a2e8: f8fdfd0d 06040d03 030b03f9 00070607 ................ ... 2a300: 0c100000 fe00fdfb 00140b14 00030000 ................ 2a310: 00000900 000000fc 00000000 00fe0000 ................ 2a320: 00000000 04000000 00000000 f6fefdea ................ 2a330: ef0000f3 00000000 00000000 00000000 ................ 2a340: 00000000 0000fc00 00000000 fe000000 ................ ... 2a358: 00000004 fefdea00 0000f3f6 000000f6 ................ ... 2a378: 000000fe fd0003fa f8030502 03feff00 ................ 2a388: 00000200 00fa0000 00fbfefe 1000f6fe ................ 2a398: fefa00fd 00fcfe00 fdfbf9fd fc000000 ................ ... 2a3b0: 0000fe00 00000000 00040000 ea000000 ................ 2a3c0: f3f6fefd 00ef0000 00000000 00000d00 ................ ... 2a3d8: fdf800fc fdfe08fe 01fe01f6 0601f9fe ................ 2a3e8: 02010201 00fdf6fa f5f9fbf6 fbfc00f6 ................ 2a3f8: fefefdfd fe00fefd 040004ff 000800fe ................ ... 2a410: fe000000 0000fdfd 00ff00f9 000000fc ................ ... 2a428: 000000f1 00000000 00000000 fd00fdfd ................ 2a438: 00000000 fc0000fe fc0003fd f900fefb ................ 2a448: fdfefafe 0000fc00 00000000 00000000 ................ 2a458: 0800ef00 00fb0000 fd000000 0000fd00 ................ 2a468: fe0000ff 0000fa00 f8f8fd0b ff030302 ................ 2a478: 020402f9 fe080208 f60000f9 f9f80000 ................ 2a488: 00fb0000 fc00fcfd fe00fc00 f8fe0004 ................ 2a498: 000009fd 00fb00fe 00fa0300 0002fd03 ................ 2a4a8: fe00f800 03fd00ff 000000fe 00fafdf6 ................ 2a4b8: f40000f8 00fd0900 000200fb f8fd00fd ................ 2a4c8: 0003fd00 fe000000 fd030000 fd000001 ................ 2a4d8: 00fd00fe 00000000 00000000 00000000 ................ 2a4e8: 00000000 000600f0 0000fe00 00010000 ................ 2a4f8: 0000fdfd 06000500 00000000 01f1f000 ................ 2a508: f604080b 09000b02 00000500 00000000 ................ 2a518: 00000000 00000e00 00000000 00000000 ................ ... 0002a530 : 2a530: 00029980 0002a540 0002a5dc 0000313d ....@.......=1.. 0002a540 : 2a540: 02010000 05040300 08070602 0a090a09 ................ 2a550: 0d000c0b 11100f0e 140c1312 00000014 ................ 2a560: 18171615 1b1a1619 1e1d1d1c 1d1d201f ............. .. 2a570: 23222116 251e2403 28272625 002b2a29 .!"#.$.%%&'()*+. 2a580: 2e2d002c 3231302f 34342d33 2d2d3035 ,.-./0123-4450-- 2a590: 37362e2e 3a333938 3c3a3b3a 09000029 ..67893::;:<)... 2a5a0: 0000093d 00000000 00000000 00000000 =............... ... 0002a5dc : 2a5dc: 02010000 05040300 08070602 0a090a09 ................ 2a5ec: 0e0d0c0b 0c11100f 15141312 00000015 ................ 2a5fc: 19181716 19191917 1a191917 19191919 ................ 2a60c: 19171917 1d1c1b03 201f1e1d 00232221 ........... !"#. 2a61c: 26250024 00272727 29282627 2a2a2626 $.%&'''.'&()&&** 2a62c: 2a272a27 2e2d2c2b 302e2f2e 09230000 '*'*+,-../.0..#. 2a63c: 00000931 00000000 00000000 00000000 1............... ... 0002a678 : 2a678: 1f720000 ef58ef51 ef5cef5b ef61ef5d ..r.Q.X.[.\.].a. 2a688: ef65ef63 ef6cef69 ef76ef71 ef78ef77 c.e.i.l.q.v.w.x. 2a698: ef98ef8e ef9cef9b efa1ef9d efa3efa2 ................ 2a6a8: efb7efa4 efbeefb8 efc1efc0 efc7efc4 ................ 2a6b8: efc9efc8 efe3efcb f014efe5 f017f015 ................ 2a6c8: f03af037 f06cf043 f0abf074 f190f13b 7.:.C.l.t...;... 2a6d8: f192f191 f194f193 f1e3f1d7 f254f23d ............=.T. 2a6e8: f712f4aa 0000f7f2 ........ 0002a6f0 <__func__.8542>: 2a6f0: 645f766c 5f707369 5f767264 69676572 lv_disp_drv_regi 2a700: 72657473 00000000 732f2e2e 412f6372 ster....../src/A 2a710: 742f4653 64726968 74726170 766c2f79 SF/thirdparty/lv 2a720: 732f6c67 6c2f6372 61685f76 766c2f6c gl/src/lv_hal/lv 2a730: 6c61685f 7369645f 00632e70 _hal_disp.c. 0002a73c <__func__.8420>: 2a73c: 615f766c 5f6d696e 72617473 00000074 lv_anim_start... 0002a74c : 2a74c: 00010f25 00000000 732f2e2e 412f6372 %........./src/A 2a75c: 742f4653 64726968 74726170 766c2f79 SF/thirdparty/lv 2a76c: 732f6c67 6c2f6372 696d5f76 6c2f6373 gl/src/lv_misc/l 2a77c: 6e615f76 632e6d69 00000000 0001174a v_anim.c....J... 2a78c: 000117a4 000117ac 000117d6 000117ec ................ 2a79c: 00011802 00011838 0001185a 00011884 ....8...Z....... 2a7ac: 000118ba 000118ca 000118fa 00011916 ................ 2a7bc: 00011926 00011956 00011972 00011982 &...V...r....... 2a7cc: 000119b2 000119ce 000119de 00011a14 ................ 0002a7dc <__func__.8415>: 2a7dc: 665f766c 706f5f73 00006e65 732f2e2e lv_fs_open..../s 2a7ec: 412f6372 742f4653 64726968 74726170 rc/ASF/thirdpart 2a7fc: 766c2f79 732f6c67 6c2f6372 696d5f76 y/lvgl/src/lv_mi 2a80c: 6c2f6373 73665f76 0000632e sc/lv_fs.c.. 0002a818 : 2a818: 023c0000 06b30478 0b2808ee 0f990d61 ..<.x.....(.a... 2a828: 140611d0 186c163a 1ccb1a9d 21211ef7 ....:.l.......!! 2a838: 256c2348 29ac278e 2ddf2bc7 32032ff3 H#l%.'.).+.-./.2 2a848: 36183410 3a1c381c 3e0e3c17 41ec3fff .4.6.8.:.<.>.?.A 2a858: 45b643d4 496a4793 4d084b3c 508d4ecd .C.E.GjI: 2a8d0: 6d5f766c 615f6d65 636f6c6c 00000000 lv_mem_alloc.... 0002a8e0 <__func__.6117>: 2a8e0: 6d5f766c 725f6d65 6c6c6165 0000636f lv_mem_realloc.. 0002a8f0 <__func__.6160>: 2a8f0: 5f766c5f 5f6d656d 5f667562 00746567 _lv_mem_buf_get. 0002a900 <__func__.6174>: 2a900: 5f766c5f 5f6d656d 5f667562 656c6572 _lv_mem_buf_rele 2a910: 00657361 6d5f766c 625f6d65 675f6675 ase.lv_mem_buf_g 2a920: 203a7465 2074754f 6d20666f 726f6d65 et: Out of memor 2a930: 63202c79 74276e61 6c6c6120 7461636f y, can't allocat 2a940: 20612065 2077656e 66756220 20726566 e a new buffer 2a950: 636e6928 73616572 6f792065 4c207275 (increase your L 2a960: 454d5f56 49535f4d 682f455a 20706165 V_MEM_SIZE/heap 2a970: 657a6973 00000029 6d5f766c 625f6d65 size)...lv_mem_b 2a980: 675f6675 203a7465 66206f6e 20656572 uf_get: no free 2a990: 66667562 202e7265 72636e49 65736165 buffer. Increase 2a9a0: 5f564c20 57415244 4655425f 58414d5f LV_DRAW_BUF_MAX 2a9b0: 4d554e5f 0000002e 6d5f766c 625f6d65 _NUM....lv_mem_b 2a9c0: 725f6675 61656c65 203a6573 73692070 uf_release: p is 2a9d0: 746f6e20 6b206120 6e776f6e 66756220 not a known buf 2a9e0: 00726566 732f2e2e 412f6372 742f4653 fer.../src/ASF/t 2a9f0: 64726968 74726170 766c2f79 732f6c67 hirdparty/lvgl/s 2aa00: 6c2f6372 696d5f76 6c2f6373 656d5f76 rc/lv_misc/lv_me 2aa10: 00632e6d 6c756f43 74276e64 6c6c6120 m.c.Couldn't all 2aa20: 7461636f 656d2065 79726f6d 00000000 ocate memory.... 2aa30: 00012ecc 00012ed8 00012ed8 00012ed2 ................ 2aa40: 00012ed8 00012ed8 00012ed8 00012ed8 ................ 2aa50: 00012ed8 00012ed8 00012ed8 00012ec6 ................ 2aa60: 00012ed8 00012ec0 00012ed8 00012ed8 ................ 2aa70: 00012ea8 00012fb6 00012fd4 00012fea ...../.../.../.. 2aa80: 00012fd4 00012f9c 00012fd4 00012fd4 ./.../.../.../.. 2aa90: 00012fd4 00012fd4 00012fd4 00012fd4 ./.../.../.../.. 2aaa0: 00012fd4 00012fcc 00012fd4 00012fd4 ./.../.../.../.. 2aab0: 00012fd4 00012fd4 00012fd4 00012ff4 ./.../.../.../.. 2aac0: 00013326 0001333a 0001333a 0001333a &3..:3..:3..:3.. 2aad0: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2aae0: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2aaf0: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab00: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab10: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab20: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab30: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab40: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab50: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab60: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab70: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2ab80: 0001333a 0001333a 0001333a 00012ffe :3..:3..:3.../.. 2ab90: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2aba0: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2abb0: 0001333a 00012ffe 000131b4 00012ffe :3.../...1.../.. 2abc0: 0001333a 0001333a 0001333a 0001333a :3..:3..:3..:3.. 2abd0: 00012ffe 0001333a 0001333a 0001333a ./..:3..:3..:3.. 2abe0: 0001333a 0001333a 00012ffe 000132f2 :3..:3.../...2.. 2abf0: 0001333a 0001333a 00013202 0001333a :3..:3...2..:3.. 2ac00: 00012ffe 0001333a 0001333a 00012ffe ./..:3..:3.../.. 0002ac10 <__func__.8438>: 2ac10: 745f766c 5f6b7361 61657263 625f6574 lv_task_create_b 2ac20: 63697361 00000000 asic.... 0002ac28 <__func__.8451>: 2ac28: 745f766c 5f6b7361 61657263 00006574 lv_task_create.. 2ac38: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 2ac48: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2ac58: 696d5f76 6c2f6373 61745f76 632e6b73 v_misc/lv_task.c 2ac68: 00000000 .... 0002ac6c <__func__.4965>: 2ac6c: 5f766c5f 5f747874 5f746567 657a6973 _lv_txt_get_size 2ac7c: 00000000 3b2e2c20 005f2d3a 732f2e2e .... ,.;:-_.../s 2ac8c: 412f6372 742f4653 64726968 74726170 rc/ASF/thirdpart 2ac9c: 766c2f79 732f6c67 6c2f6372 696d5f76 y/lvgl/src/lv_mi 2acac: 6c2f6373 78745f76 00632e74 745f766c sc/lv_txt.c.lv_t 2acbc: 675f7478 735f7465 3a657a69 746e6920 xt_get_size: int 2accc: 72656765 65766f20 6f6c6672 68772077 eger overflow wh 2acdc: 20656c69 636c6163 74616c75 20676e69 ile calculating 2acec: 74786574 69656820 00746867 00014122 text height."A.. 2acfc: 0001410c 00014134 0001429a 00014204 .A..4A...B...B.. 2ad0c: 00014168 00014182 000147fe 00014272 hA...A...G..rB.. 2ad1c: 0001434a 0001461c 0001414e 00014850 JC...F..NA..PH.. 2ad2c: 000145ae 000148b4 0001427a 00014282 .E...H..zB...B.. 2ad3c: 000141c4 0001428a 000143d4 00014292 .A...B...C...B.. 2ad4c: 00014556 00014594 00014890 00014382 VE...E...H...C.. 2ad5c: 000143a6 00014546 000143ee 0001450e .C..FE...C...E.. 2ad6c: 00014300 000147a2 000147da 000142d2 .C...G...G...B.. 2ad7c: 00014232 00014678 00014440 000144b0 2B..xF..@D...D.. 2ad8c: 00014746 000144d0 000146dc 0001472c FG...D...F..,G.. 2ad9c: 94d38c51 0000ffff 00008410 008c80ef Q............... 0002adac <__func__.8683>: 2adac: 695f766c 635f676d 74616572 00000065 lv_img_create... 0002adbc <__func__.8692>: 2adbc: 695f766c 735f676d 735f7465 00006372 lv_img_set_src.. 0002adcc <__func__.8775>: 2adcc: 695f766c 675f676d 615f7465 5f6f7475 lv_img_get_auto_ 2addc: 657a6973 00000000 size.... 0002ade4 <__func__.8840>: 2ade4: 695f766c 645f676d 67697365 0000006e lv_img_design... 2adf4: 67616d69 72632065 65746165 00000064 image created... 2ae04: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 2ae14: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2ae24: 69775f76 74656764 766c2f73 676d695f v_widgets/lv_img 2ae34: 0000632e 695f766c 735f676d 735f7465 .c..lv_img_set_s 2ae44: 203a6372 6e6b6e75 206e776f 65707974 rc: unknown type 2ae54: 00000000 695f766c 735f676d 735f7465 ....lv_img_set_s 2ae64: 203a6372 6e6b6e75 206e776f 67616d69 rc: unknown imag 2ae74: 79742065 00006570 695f766c 735f676d e type..lv_img_s 2ae84: 735f7465 203a6372 564c6020 474d495f et_src: `LV_IMG 2ae94: 4352535f 5241565f 4c424149 74206045 _SRC_VARIABLE` t 2aea4: 20657079 6e756f66 00000064 695f766c ype found...lv_i 2aeb4: 0000676d mg.. 0002aeb8 <__func__.8729>: 2aeb8: 6c5f766c 6c656261 6572635f 00657461 lv_label_create. 0002aec8 <__func__.8740>: 2aec8: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2aed8: 00000074 t... 0002aedc <__func__.8763>: 2aedc: 6c5f766c 6c656261 7465735f 7865745f lv_label_set_tex 2aeec: 74735f74 63697461 00000000 t_static.... 0002aef8 <__func__.8770>: 2aef8: 6c5f766c 6c656261 7465735f 6e6f6c5f lv_label_set_lon 2af08: 6f6d5f67 00006564 g_mode.. 0002af10 <__func__.8777>: 2af10: 6c5f766c 6c656261 7465735f 696c615f lv_label_set_ali 2af20: 00006e67 gn.. 0002af24 <__func__.8784>: 2af24: 6c5f766c 6c656261 7465735f 6365725f lv_label_set_rec 2af34: 726f6c6f 00000000 olor.... 0002af3c <__func__.8809>: 2af3c: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2af4c: 00000074 t... 0002af50 <__func__.8815>: 2af50: 6c5f766c 6c656261 7465675f 6e6f6c5f lv_label_get_lon 2af60: 6f6d5f67 00006564 g_mode.. 0002af68 <__func__.8821>: 2af68: 6c5f766c 6c656261 7465675f 696c615f lv_label_get_ali 2af78: 00006e67 gn.. 0002af7c <__func__.8828>: 2af7c: 6c5f766c 6c656261 7465675f 6365725f lv_label_get_rec 2af8c: 726f6c6f 00000000 olor.... 0002af94 <__func__.8871>: 2af94: 6c5f766c 6c656261 7465675f 74656c5f lv_label_get_let 2afa4: 5f726574 00006e6f ter_on.. 0002afac <__func__.8908>: 2afac: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2afbc: 65735f74 74735f6c 00747261 t_sel_start. 0002afc8 <__func__.8913>: 2afc8: 6c5f766c 6c656261 7465675f 7865745f lv_label_get_tex 2afd8: 65735f74 6e655f6c 00000064 t_sel_end... 0002afe4 <__func__.9083>: 2afe4: 6c5f766c 6c656261 7465735f 746f645f lv_label_set_dot 2aff4: 706d745f 00000000 74786554 00000000 _tmp....Text.... 2b004: 6562616c 7263206c 65746165 00000064 label created... 2b014: 732f2e2e 412f6372 742f4653 64726968 ../src/ASF/third 2b024: 74726170 766c2f79 732f6c67 6c2f6372 party/lvgl/src/l 2b034: 69775f76 74656764 766c2f73 62616c5f v_widgets/lv_lab 2b044: 632e6c65 00000000 6c696146 74206465 el.c....Failed t 2b054: 6c61206f 61636f6c 6d206574 726f6d65 o allocate memor 2b064: 6f662079 6f642072 6d745f74 74705f70 y for dot_tmp_pt 2b074: 00000072 6c5f766c 6c656261 00000000 r...lv_label.... 0002b084 : 2b084: 43415254 00000045 00000000 00000000 TRACE........... 2b094: 4f464e49 00000000 00000000 00000000 INFO............ 2b0a4: 4e524157 00000000 00000000 00000000 WARN............ 2b0b4: 4f525245 00000052 00000000 00000000 ERROR........... 2b0c4: 454e4f4e 00000000 00000000 00000000 NONE............ 2b0d4: 5d73255b 47564c5b 255b5d4c 255b5d73 [%s][LVGL][%s][% 2b0e4: 255b5d73 5b5d756c 0a5d7325 00000000 s][%lu][%s]..... 2b0f4: 00006325 52415355 4e492054 000a5449 %c..USART INIT.. 2b104: 2b302d23 6c680020 6665004c 47464567 #-0+ .hlL.efgEFG 2b114: 32313000 36353433 41393837 45444342 .0123456789ABCDE 2b124: 31300046 35343332 39383736 64636261 F.0123456789abcd 2b134: 00006665 ef.. 0002b138 <_init>: 2b138: b5f8 push {r3, r4, r5, r6, r7, lr} 2b13a: 46c0 nop ; (mov r8, r8) 2b13c: bcf8 pop {r3, r4, r5, r6, r7} 2b13e: bc08 pop {r3} 2b140: 469e mov lr, r3 2b142: 4770 bx lr 0002b144 <__init_array_start>: 2b144: 000000dd .word 0x000000dd 0002b148 <_fini>: 2b148: b5f8 push {r3, r4, r5, r6, r7, lr} 2b14a: 46c0 nop ; (mov r8, r8) 2b14c: bcf8 pop {r3, r4, r5, r6, r7} 2b14e: bc08 pop {r3} 2b150: 469e mov lr, r3 2b152: 4770 bx lr 0002b154 <__fini_array_start>: 2b154: 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: 6f48 0002 6a70 0002 6a48 0002 a530 0002 Ho..pj..Hj..0... 20000020: 0010 5002 0000 0000 0000 0000 0000 0000 ...P............ 20000030 : 20000030: 09fd 0001 ffd9 0000 0012 0003 0000 0000 ................ 20000040: 0010 2000 ... 20000044 : 20000044: 2c00 2000 0010 0000 2c10 2000 0010 0000 .,. .....,. .... 20000054 <_lv_txt_encoded_get_byte_id>: 20000054: 3b3d 0001 =;.. 20000058 <_lv_txt_encoded_get_char_id>: 20000058: 3b79 0001 y;.. 2000005c <_lv_txt_encoded_next>: 2000005c: 39d7 0001 .9.. 20000060 <_lv_txt_encoded_prev>: 20000060: 3ae9 0001 .:.. 20000064 <_lv_txt_encoded_size>: 20000064: 39a5 0001 .9.. 20000068 <_lv_txt_get_encoded_length>: 20000068: 3bad 0001 .;.. 2000006c : 2000006c: 0001 0000 .... 20000070 <_impure_ptr>: 20000070: 0074 2000 t.. 20000074 : ...