simple_server: file format elf32-littlearm Disassembly of section .init: 00008000 <_init>: 8000: e1a0c00d mov ip, sp 8004: e92ddff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} 8008: e24cb004 sub fp, ip, #4 800c: e24bd028 sub sp, fp, #40 ; 0x28 8010: e89d6ff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr} 8014: e12fff1e bx lr Disassembly of section .text: 00008018 <__do_global_dtors_aux>: 8018: e92d4010 push {r4, lr} 801c: e59f4028 ldr r4, [pc, #40] ; 804c <__do_global_dtors_aux+0x34> 8020: e5d43000 ldrb r3, [r4] 8024: e3530000 cmp r3, #0 8028: 1a000005 bne 8044 <__do_global_dtors_aux+0x2c> 802c: e59f301c ldr r3, [pc, #28] ; 8050 <__do_global_dtors_aux+0x38> 8030: e3530000 cmp r3, #0 8034: 159f0018 ldrne r0, [pc, #24] ; 8054 <__do_global_dtors_aux+0x3c> 8038: 1320f000 nopne {0} 803c: e3a03001 mov r3, #1 8040: e5c43000 strb r3, [r4] 8044: e8bd4010 pop {r4, lr} 8048: e12fff1e bx lr 804c: 00010514 .word 0x00010514 8050: 00000000 .word 0x00000000 8054: 0000f724 .word 0x0000f724 00008058 : 8058: e59f3060 ldr r3, [pc, #96] ; 80c0 805c: e3530000 cmp r3, #0 8060: 0a000009 beq 808c 8064: e59f0058 ldr r0, [pc, #88] ; 80c4 8068: e92d4010 push {r4, lr} 806c: e59f1054 ldr r1, [pc, #84] ; 80c8 8070: e320f000 nop {0} 8074: e59f0050 ldr r0, [pc, #80] ; 80cc 8078: e5903000 ldr r3, [r0] 807c: e3530000 cmp r3, #0 8080: 1a000009 bne 80ac 8084: e8bd4010 pop {r4, lr} 8088: e12fff1e bx lr 808c: e59f0038 ldr r0, [pc, #56] ; 80cc 8090: e5903000 ldr r3, [r0] 8094: e3530000 cmp r3, #0 8098: 012fff1e bxeq lr 809c: e59f302c ldr r3, [pc, #44] ; 80d0 80a0: e3530000 cmp r3, #0 80a4: 012fff1e bxeq lr 80a8: e12fff13 bx r3 80ac: e59f301c ldr r3, [pc, #28] ; 80d0 80b0: e3530000 cmp r3, #0 80b4: 0afffff2 beq 8084 80b8: e8bd4010 pop {r4, lr} 80bc: e12fff13 bx r3 80c0: 00000000 .word 0x00000000 80c4: 0000f724 .word 0x0000f724 80c8: 00010518 .word 0x00010518 80cc: 0000f730 .word 0x0000f730 80d0: 00000000 .word 0x00000000 000080d4 <_mainCRTStartup>: 80d4: e59f30f0 ldr r3, [pc, #240] ; 81cc <_mainCRTStartup+0xf8> 80d8: e3530000 cmp r3, #0 80dc: 059f30e4 ldreq r3, [pc, #228] ; 81c8 <_mainCRTStartup+0xf4> 80e0: e1a0d003 mov sp, r3 80e4: e10f2000 mrs r2, CPSR 80e8: e312000f tst r2, #15 80ec: 0a000015 beq 8148 <_mainCRTStartup+0x74> 80f0: e321f0d1 msr CPSR_c, #209 ; 0xd1 80f4: e1a0d003 mov sp, r3 80f8: e24daa01 sub sl, sp, #4096 ; 0x1000 80fc: e1a0300a mov r3, sl 8100: e321f0d7 msr CPSR_c, #215 ; 0xd7 8104: e1a0d003 mov sp, r3 8108: e2433a01 sub r3, r3, #4096 ; 0x1000 810c: e321f0db msr CPSR_c, #219 ; 0xdb 8110: e1a0d003 mov sp, r3 8114: e2433a01 sub r3, r3, #4096 ; 0x1000 8118: e321f0d2 msr CPSR_c, #210 ; 0xd2 811c: e1a0d003 mov sp, r3 8120: e2433a02 sub r3, r3, #8192 ; 0x2000 8124: e321f0d3 msr CPSR_c, #211 ; 0xd3 8128: e1a0d003 mov sp, r3 812c: e2433902 sub r3, r3, #32768 ; 0x8000 8130: e3c330ff bic r3, r3, #255 ; 0xff 8134: e3c33cff bic r3, r3, #65280 ; 0xff00 8138: e5033004 str r3, [r3, #-4] 813c: e9532000 ldmdb r3, {sp}^ 8140: e38220c0 orr r2, r2, #192 ; 0xc0 8144: e121f002 msr CPSR_c, r2 8148: e243a801 sub sl, r3, #65536 ; 0x10000 814c: e3b01000 movs r1, #0 8150: e1a0b001 mov fp, r1 8154: e1a07001 mov r7, r1 8158: e59f0078 ldr r0, [pc, #120] ; 81d8 <_mainCRTStartup+0x104> 815c: e59f2078 ldr r2, [pc, #120] ; 81dc <_mainCRTStartup+0x108> 8160: e0522000 subs r2, r2, r0 8164: eb000956 bl a6c4 8168: e59f3060 ldr r3, [pc, #96] ; 81d0 <_mainCRTStartup+0xfc> 816c: e3530000 cmp r3, #0 8170: 0a000001 beq 817c <_mainCRTStartup+0xa8> 8174: e1a0e00f mov lr, pc 8178: e1a0f003 mov pc, r3 817c: e59f3050 ldr r3, [pc, #80] ; 81d4 <_mainCRTStartup+0x100> 8180: e3530000 cmp r3, #0 8184: 0a000001 beq 8190 <_mainCRTStartup+0xbc> 8188: e1a0e00f mov lr, pc 818c: e1a0f003 mov pc, r3 8190: e3b00000 movs r0, #0 8194: e3b01000 movs r1, #0 8198: e1b04000 movs r4, r0 819c: e1b05001 movs r5, r1 81a0: e59f0038 ldr r0, [pc, #56] ; 81e0 <_mainCRTStartup+0x10c> 81a4: e3500000 cmp r0, #0 81a8: 0a000001 beq 81b4 <_mainCRTStartup+0xe0> 81ac: e59f0030 ldr r0, [pc, #48] ; 81e4 <_mainCRTStartup+0x110> 81b0: e320f000 nop {0} 81b4: eb00088b bl a3e8 <__libc_init_array> 81b8: e1b00004 movs r0, r4 81bc: e1b01005 movs r1, r5 81c0: eb0000b7 bl 84a4
81c4: eb0006e7 bl 9d68 81c8: 00080000 .word 0x00080000 ... 81d8: 00010514 .word 0x00010514 81dc: 0001059c .word 0x0001059c ... 000081e8 : #include "libserial.h" #include "simple_service.h" #include "usyscall.h" int IPC_DO_SERVE_FUNC(Ipc_add)(int* a, int* b) { 81e8: e52db004 push {fp} ; (str fp, [sp, #-4]!) 81ec: e28db000 add fp, sp, #0 81f0: e24dd00c sub sp, sp, #12 81f4: e50b0008 str r0, [fp, #-8] 81f8: e50b100c str r1, [fp, #-12] return *a + *b; 81fc: e51b3008 ldr r3, [fp, #-8] 8200: e5932000 ldr r2, [r3] 8204: e51b300c ldr r3, [fp, #-12] 8208: e5933000 ldr r3, [r3] 820c: e0823003 add r3, r2, r3 } 8210: e1a00003 mov r0, r3 8214: e28bd000 add sp, fp, #0 8218: e49db004 pop {fp} ; (ldr fp, [sp], #4) 821c: e12fff1e bx lr 00008220 : int IPC_DO_SERVE_FUNC(Ipc_hello_string)(char* buf, int* len) { 8220: e92d4800 push {fp, lr} 8224: e28db004 add fp, sp, #4 8228: e24dd010 sub sp, sp, #16 822c: e50b0010 str r0, [fp, #-16] 8230: e50b1014 str r1, [fp, #-20] ; 0xffffffec static char hello_string[] = "Hello, This is server!"; int copy_len = sizeof(hello_string) > *len ? *len : sizeof(hello_string); 8234: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8238: e5933000 ldr r3, [r3] 823c: e3530017 cmp r3, #23 8240: 31a03003 movcc r3, r3 8244: 23a03017 movcs r3, #23 8248: e50b3008 str r3, [fp, #-8] memcpy(buf, hello_string, copy_len); 824c: e51b3008 ldr r3, [fp, #-8] 8250: e1a02003 mov r2, r3 8254: e30f1b3c movw r1, #64316 ; 0xfb3c 8258: e3401000 movt r1, #0 825c: e51b0010 ldr r0, [fp, #-16] 8260: eb000880 bl a468 return 0; 8264: e3a03000 mov r3, #0 } 8268: e1a00003 mov r0, r3 826c: e24bd004 sub sp, fp, #4 8270: e8bd8800 pop {fp, pc} 00008274 : IPC_SERVER_INTERFACE(Ipc_add, 2); 8274: e92d4800 push {fp, lr} 8278: e28db004 add fp, sp, #4 827c: e24dd028 sub sp, sp, #40 ; 0x28 8280: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 8284: e3a03000 mov r3, #0 8288: e50b3008 str r3, [fp, #-8] 828c: ea000014 b 82e4 8290: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 8294: e50b300c str r3, [fp, #-12] 8298: e51b3008 ldr r3, [fp, #-8] 829c: e50b3010 str r3, [fp, #-16] /// @param msg /// @param arg_num start with 0 for first arg /// @return __attribute__((__always_inline__)) static inline void* ipc_msg_get_nth_arg_buf(struct IpcMsg* msg, int arg_num) { return (void*)((char*)msg + IPCMSG_ARG_INFO(msg, arg_num)->offset); 82a0: e51b3010 ldr r3, [fp, #-16] 82a4: e2833003 add r3, r3, #3 82a8: e1a03103 lsl r3, r3, #2 82ac: e51b200c ldr r2, [fp, #-12] 82b0: e0823003 add r3, r2, r3 82b4: e1d330b0 ldrh r3, [r3] 82b8: e1a02003 mov r2, r3 82bc: e51b300c ldr r3, [fp, #-12] 82c0: e0832002 add r2, r3, r2 82c4: e51b3008 ldr r3, [fp, #-8] 82c8: e1a03103 lsl r3, r3, #2 82cc: e24b1004 sub r1, fp, #4 82d0: e0813003 add r3, r1, r3 82d4: e503201c str r2, [r3, #-28] ; 0xffffffe4 82d8: e51b3008 ldr r3, [fp, #-8] 82dc: e2833001 add r3, r3, #1 82e0: e50b3008 str r3, [fp, #-8] 82e4: e51b3008 ldr r3, [fp, #-8] 82e8: e3530001 cmp r3, #1 82ec: daffffe7 ble 8290 82f0: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 82f4: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 82f8: e1a01002 mov r1, r2 82fc: e1a00003 mov r0, r3 8300: ebffffb8 bl 81e8 8304: e1a03000 mov r3, r0 8308: e50b3024 str r3, [fp, #-36] ; 0xffffffdc 830c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 8310: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8314: e24b3024 sub r3, fp, #36 ; 0x24 8318: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 /// @brief set return val of ipc call after serve, used by server /// @param msg /// @param ret_val __attribute__((__always_inline__)) static inline void ipc_msg_set_return(struct IpcMsg* msg, int32_t* ret_val) { assert(msg->header.valid == 1); 831c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8320: e5d33000 ldrb r3, [r3] 8324: e2033001 and r3, r3, #1 8328: e6ef3073 uxtb r3, r3 832c: e3530000 cmp r3, #0 8330: 1a000007 bne 8354 8334: e30f31f0 movw r3, #61936 ; 0xf1f0 8338: e3403000 movt r3, #0 833c: e30f228c movw r2, #62092 ; 0xf28c 8340: e3402000 movt r2, #0 8344: e3a0107e mov r1, #126 ; 0x7e 8348: e30f0208 movw r0, #61960 ; 0xf208 834c: e3400000 movt r0, #0 8350: eb0007f0 bl a318 <__assert_func> memcpy(&msg->header.ret_val, ret_val, sizeof(msg->header.ret_val)); 8354: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8358: e2833008 add r3, r3, #8 835c: e3a02004 mov r2, #4 8360: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 8364: e1a00003 mov r0, r3 8368: eb00083e bl a468 836c: e51b2028 ldr r2, [fp, #-40] ; 0xffffffd8 8370: e5d23000 ldrb r3, [r2] 8374: e3833002 orr r3, r3, #2 8378: e5c23000 strb r3, [r2] 837c: e3a03000 mov r3, #0 8380: e1a00003 mov r0, r3 8384: e24bd004 sub sp, fp, #4 8388: e8bd8800 pop {fp, pc} 0000838c : IPC_SERVER_INTERFACE(Ipc_hello_string, 2); 838c: e92d4800 push {fp, lr} 8390: e28db004 add fp, sp, #4 8394: e24dd028 sub sp, sp, #40 ; 0x28 8398: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 839c: e3a03000 mov r3, #0 83a0: e50b3008 str r3, [fp, #-8] 83a4: ea000014 b 83fc 83a8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 83ac: e50b300c str r3, [fp, #-12] 83b0: e51b3008 ldr r3, [fp, #-8] 83b4: e50b3010 str r3, [fp, #-16] return (void*)((char*)msg + IPCMSG_ARG_INFO(msg, arg_num)->offset); 83b8: e51b3010 ldr r3, [fp, #-16] 83bc: e2833003 add r3, r3, #3 83c0: e1a03103 lsl r3, r3, #2 83c4: e51b200c ldr r2, [fp, #-12] 83c8: e0823003 add r3, r2, r3 83cc: e1d330b0 ldrh r3, [r3] 83d0: e1a02003 mov r2, r3 83d4: e51b300c ldr r3, [fp, #-12] 83d8: e0832002 add r2, r3, r2 83dc: e51b3008 ldr r3, [fp, #-8] 83e0: e1a03103 lsl r3, r3, #2 83e4: e24b1004 sub r1, fp, #4 83e8: e0813003 add r3, r1, r3 83ec: e503201c str r2, [r3, #-28] ; 0xffffffe4 83f0: e51b3008 ldr r3, [fp, #-8] 83f4: e2833001 add r3, r3, #1 83f8: e50b3008 str r3, [fp, #-8] 83fc: e51b3008 ldr r3, [fp, #-8] 8400: e3530001 cmp r3, #1 8404: daffffe7 ble 83a8 8408: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 840c: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8410: e1a01002 mov r1, r2 8414: e1a00003 mov r0, r3 8418: ebffff80 bl 8220 841c: e1a03000 mov r3, r0 8420: e50b3024 str r3, [fp, #-36] ; 0xffffffdc 8424: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 8428: e50b3014 str r3, [fp, #-20] ; 0xffffffec 842c: e24b3024 sub r3, fp, #36 ; 0x24 8430: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 assert(msg->header.valid == 1); 8434: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8438: e5d33000 ldrb r3, [r3] 843c: e2033001 and r3, r3, #1 8440: e6ef3073 uxtb r3, r3 8444: e3530000 cmp r3, #0 8448: 1a000007 bne 846c 844c: e30f31f0 movw r3, #61936 ; 0xf1f0 8450: e3403000 movt r3, #0 8454: e30f228c movw r2, #62092 ; 0xf28c 8458: e3402000 movt r2, #0 845c: e3a0107e mov r1, #126 ; 0x7e 8460: e30f0208 movw r0, #61960 ; 0xf208 8464: e3400000 movt r0, #0 8468: eb0007aa bl a318 <__assert_func> memcpy(&msg->header.ret_val, ret_val, sizeof(msg->header.ret_val)); 846c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8470: e2833008 add r3, r3, #8 8474: e3a02004 mov r2, #4 8478: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 847c: e1a00003 mov r0, r3 8480: eb0007f8 bl a468 8484: e51b2028 ldr r2, [fp, #-40] ; 0xffffffd8 8488: e5d23000 ldrb r3, [r2] 848c: e3833002 orr r3, r3, #2 8490: e5c23000 strb r3, [r2] 8494: e3a03000 mov r3, #0 8498: e1a00003 mov r0, r3 849c: e24bd004 sub sp, fp, #4 84a0: e8bd8800 pop {fp, pc} 000084a4
: IPC_SERVER_REGISTER_INTERFACES(IpcSimpleServer, 2, Ipc_hello_string, Ipc_add); int main(int argc, char* argv[]) { 84a4: e92d4800 push {fp, lr} 84a8: e28db004 add fp, sp, #4 84ac: e24dd008 sub sp, sp, #8 84b0: e50b0008 str r0, [fp, #-8] 84b4: e50b100c str r1, [fp, #-12] if (register_server("SimpleServer") < 0) { 84b8: e30f0258 movw r0, #62040 ; 0xf258 84bc: e3400000 movt r0, #0 84c0: eb000644 bl 9dd8 84c4: e1a03000 mov r3, r0 84c8: e3530000 cmp r3, #0 84cc: aa000005 bge 84e8 printf("register server name: %s failed.\n", "SimpleServer"); 84d0: e30f1258 movw r1, #62040 ; 0xf258 84d4: e3401000 movt r1, #0 84d8: e30f0268 movw r0, #62056 ; 0xf268 84dc: e3400000 movt r0, #0 84e0: eb0000b4 bl 87b8 exit(); 84e4: eb00061f bl 9d68 } ipc_server_loop(&IpcSimpleServer); 84e8: e30f073c movw r0, #63292 ; 0xf73c 84ec: e3400000 movt r0, #0 84f0: eb0002a5 bl 8f8c // never reached exit(); 84f4: eb00061b bl 9d68 84f8: e3a03000 mov r3, #0 } 84fc: e1a00003 mov r0, r3 8500: e24bd004 sub sp, fp, #4 8504: e8bd8800 pop {fp, pc} 00008508 : #define USER_UART_BASE 0x6FFFF000 // #define USER_UART_BASE 0x621e8000 static bool init_uart_mmio() { 8508: e92d4800 push {fp, lr} 850c: e28db004 add fp, sp, #4 static int mapped = 0; if (mapped == 0) { 8510: e3003530 movw r3, #1328 ; 0x530 8514: e3403001 movt r3, #1 8518: e5933000 ldr r3, [r3] 851c: e3530000 cmp r3, #0 8520: 1a00000f bne 8564 if (-1 == mmap(USER_UART_BASE, 0x021e8000, 4096, true)) { 8524: e3a03001 mov r3, #1 8528: e3a02a01 mov r2, #4096 ; 0x1000 852c: e3a01902 mov r1, #32768 ; 0x8000 8530: e340121e movt r1, #542 ; 0x21e 8534: e3a00a0f mov r0, #61440 ; 0xf000 8538: e3460fff movt r0, #28671 ; 0x6fff 853c: eb0006bb bl a030 8540: e1a03000 mov r3, r0 8544: e3730001 cmn r3, #1 8548: 1a000001 bne 8554 return false; 854c: e3a03000 mov r3, #0 8550: ea000004 b 8568 } mapped = 1; 8554: e3003530 movw r3, #1328 ; 0x530 8558: e3403001 movt r3, #1 855c: e3a02001 mov r2, #1 8560: e5832000 str r2, [r3] } return true; 8564: e3a03001 mov r3, #1 } 8568: e1a00003 mov r0, r3 856c: e8bd8800 pop {fp, pc} 00008570 : static void putc(char c) { 8570: e52db004 push {fp} ; (str fp, [sp, #-4]!) 8574: e28db000 add fp, sp, #0 8578: e24dd00c sub sp, sp, #12 857c: e1a03000 mov r3, r0 8580: e54b3005 strb r3, [fp, #-5] while ((*(volatile hw_uart_uts_t*)(USER_UART_BASE + 0xb4)).B.TXFULL) 8584: e320f000 nop {0} 8588: e30f30b4 movw r3, #61620 ; 0xf0b4 858c: e3463fff movt r3, #28671 ; 0x6fff 8590: e5933000 ldr r3, [r3] 8594: e7e03253 ubfx r3, r3, #4, #1 8598: e6ef3073 uxtb r3, r3 859c: e3530000 cmp r3, #0 85a0: 1afffff8 bne 8588 ; if (c == '\n') { 85a4: e55b3005 ldrb r3, [fp, #-5] 85a8: e353000a cmp r3, #10 85ac: 1a00000b bne 85e0 ((*(volatile hw_uart_utxd_t*)(USER_UART_BASE + 0x40)).U = ('\r')); 85b0: e30f3040 movw r3, #61504 ; 0xf040 85b4: e3463fff movt r3, #28671 ; 0x6fff 85b8: e3a0200d mov r2, #13 85bc: e5832000 str r2, [r3] while ((*(volatile hw_uart_uts_t*)(USER_UART_BASE + 0xb4)).B.TXFULL) 85c0: e320f000 nop {0} 85c4: e30f30b4 movw r3, #61620 ; 0xf0b4 85c8: e3463fff movt r3, #28671 ; 0x6fff 85cc: e5933000 ldr r3, [r3] 85d0: e7e03253 ubfx r3, r3, #4, #1 85d4: e6ef3073 uxtb r3, r3 85d8: e3530000 cmp r3, #0 85dc: 1afffff8 bne 85c4 ; } ((*(volatile hw_uart_utxd_t*)(USER_UART_BASE + 0x40)).U = (c)); 85e0: e30f3040 movw r3, #61504 ; 0xf040 85e4: e3463fff movt r3, #28671 ; 0x6fff 85e8: e55b2005 ldrb r2, [fp, #-5] 85ec: e5832000 str r2, [r3] } 85f0: e320f000 nop {0} 85f4: e28bd000 add sp, fp, #0 85f8: e49db004 pop {fp} ; (ldr fp, [sp], #4) 85fc: e12fff1e bx lr 00008600 : char getc(void) { 8600: e92d4800 push {fp, lr} 8604: e28db004 add fp, sp, #4 8608: e24dd008 sub sp, sp, #8 if (!init_uart_mmio()) { 860c: ebffffbd bl 8508 8610: e1a03000 mov r3, r0 8614: e2233001 eor r3, r3, #1 8618: e6ef3073 uxtb r3, r3 861c: e3530000 cmp r3, #0 8620: 0a000001 beq 862c return 0xFF; 8624: e3a030ff mov r3, #255 ; 0xff 8628: ea000014 b 8680 } uint32_t read_data; /* If Rx FIFO has no data ready */ if (!(*(volatile hw_uart_usr2_t*)(USER_UART_BASE + 0x98)).B.RDR) { 862c: e30f3098 movw r3, #61592 ; 0xf098 8630: e3463fff movt r3, #28671 ; 0x6fff 8634: e5933000 ldr r3, [r3] 8638: e7e03053 ubfx r3, r3, #0, #1 863c: e6ef3073 uxtb r3, r3 8640: e3530000 cmp r3, #0 8644: 1a000001 bne 8650 return 0xFF; 8648: e3a030ff mov r3, #255 ; 0xff 864c: ea00000b b 8680 } read_data = ((*(volatile hw_uart_urxd_t*)(USER_UART_BASE + 0x0)).U); 8650: e3a03a0f mov r3, #61440 ; 0xf000 8654: e3463fff movt r3, #28671 ; 0x6fff 8658: e5933000 ldr r3, [r3] 865c: e50b3008 str r3, [fp, #-8] /* If error are detected */ if (read_data & 0x7C00) 8660: e51b3008 ldr r3, [fp, #-8] 8664: e2033b1f and r3, r3, #31744 ; 0x7c00 8668: e3530000 cmp r3, #0 866c: 0a000001 beq 8678 return 0xFF; 8670: e3a030ff mov r3, #255 ; 0xff 8674: ea000001 b 8680 return (char)read_data; 8678: e51b3008 ldr r3, [fp, #-8] 867c: e6ef3073 uxtb r3, r3 } 8680: e1a00003 mov r0, r3 8684: e24bd004 sub sp, fp, #4 8688: e8bd8800 pop {fp, pc} 0000868c : static void printint(int xx, int base, int sgn) { 868c: e92d4810 push {r4, fp, lr} 8690: e28db008 add fp, sp, #8 8694: e24dd034 sub sp, sp, #52 ; 0x34 8698: e50b0030 str r0, [fp, #-48] ; 0xffffffd0 869c: e50b1034 str r1, [fp, #-52] ; 0xffffffcc 86a0: e50b2038 str r2, [fp, #-56] ; 0xffffffc8 static char digits[] = "0123456789ABCDEF"; char buf[16]; int i, neg; uint32_t x; neg = 0; 86a4: e3a03000 mov r3, #0 86a8: e50b3014 str r3, [fp, #-20] ; 0xffffffec if (sgn && xx < 0) { 86ac: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8 86b0: e3530000 cmp r3, #0 86b4: 0a000008 beq 86dc 86b8: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 86bc: e3530000 cmp r3, #0 86c0: aa000005 bge 86dc neg = 1; 86c4: e3a03001 mov r3, #1 86c8: e50b3014 str r3, [fp, #-20] ; 0xffffffec x = -xx; 86cc: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 86d0: e2633000 rsb r3, r3, #0 86d4: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 86d8: ea000001 b 86e4 } else { x = xx; 86dc: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 86e0: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 } i = 0; 86e4: e3a03000 mov r3, #0 86e8: e50b3010 str r3, [fp, #-16] do { buf[i++] = digits[x % base]; 86ec: e51b4010 ldr r4, [fp, #-16] 86f0: e2843001 add r3, r4, #1 86f4: e50b3010 str r3, [fp, #-16] 86f8: e51b2034 ldr r2, [fp, #-52] ; 0xffffffcc 86fc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8700: e1a01002 mov r1, r2 8704: e1a00003 mov r0, r3 8708: eb0006a7 bl a1ac <__aeabi_uidivmod> 870c: e1a03001 mov r3, r1 8710: e1a02003 mov r2, r3 8714: e30f3b54 movw r3, #64340 ; 0xfb54 8718: e3403000 movt r3, #0 871c: e7d32002 ldrb r2, [r3, r2] 8720: e24b300c sub r3, fp, #12 8724: e0833004 add r3, r3, r4 8728: e543201c strb r2, [r3, #-28] ; 0xffffffe4 } while ((x /= base) != 0); 872c: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 8730: e1a01003 mov r1, r3 8734: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 8738: eb00065e bl a0b8 <__udivsi3> 873c: e1a03000 mov r3, r0 8740: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 8744: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8748: e3530000 cmp r3, #0 874c: 1affffe6 bne 86ec if (neg) 8750: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8754: e3530000 cmp r3, #0 8758: 0a00000d beq 8794 buf[i++] = '-'; 875c: e51b3010 ldr r3, [fp, #-16] 8760: e2832001 add r2, r3, #1 8764: e50b2010 str r2, [fp, #-16] 8768: e24b200c sub r2, fp, #12 876c: e0823003 add r3, r2, r3 8770: e3a0202d mov r2, #45 ; 0x2d 8774: e543201c strb r2, [r3, #-28] ; 0xffffffe4 while (--i >= 0) 8778: ea000005 b 8794 putc(buf[i]); 877c: e24b2028 sub r2, fp, #40 ; 0x28 8780: e51b3010 ldr r3, [fp, #-16] 8784: e0823003 add r3, r2, r3 8788: e5d33000 ldrb r3, [r3] 878c: e1a00003 mov r0, r3 8790: ebffff76 bl 8570 while (--i >= 0) 8794: e51b3010 ldr r3, [fp, #-16] 8798: e2433001 sub r3, r3, #1 879c: e50b3010 str r3, [fp, #-16] 87a0: e51b3010 ldr r3, [fp, #-16] 87a4: e3530000 cmp r3, #0 87a8: aafffff3 bge 877c } 87ac: e320f000 nop {0} 87b0: e24bd008 sub sp, fp, #8 87b4: e8bd8810 pop {r4, fp, pc} 000087b8 : // Print to usart. Only understands %d, %x, %p, %s. void printf(char* fmt, ...) { 87b8: e92d000f push {r0, r1, r2, r3} 87bc: e92d4800 push {fp, lr} 87c0: e28db004 add fp, sp, #4 87c4: e24dd018 sub sp, sp, #24 if (!init_uart_mmio()) { 87c8: ebffff4e bl 8508 87cc: e1a03000 mov r3, r0 87d0: e2233001 eor r3, r3, #1 87d4: e6ef3073 uxtb r3, r3 87d8: e3530000 cmp r3, #0 87dc: 1a00007b bne 89d0 } char* s; int c, i, state; uint32_t* ap; state = 0; 87e0: e3a03000 mov r3, #0 87e4: e50b3010 str r3, [fp, #-16] ap = (uint32_t*)(void*)&fmt + 1; 87e8: e28b3008 add r3, fp, #8 87ec: e50b3014 str r3, [fp, #-20] ; 0xffffffec for (i = 0; fmt[i]; i++) { 87f0: e3a03000 mov r3, #0 87f4: e50b300c str r3, [fp, #-12] 87f8: ea00006d b 89b4 c = fmt[i] & 0xff; 87fc: e59b2004 ldr r2, [fp, #4] 8800: e51b300c ldr r3, [fp, #-12] 8804: e0823003 add r3, r2, r3 8808: e5d33000 ldrb r3, [r3] 880c: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 if (state == 0) { 8810: e51b3010 ldr r3, [fp, #-16] 8814: e3530000 cmp r3, #0 8818: 1a00000a bne 8848 if (c == '%') { 881c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8820: e3530025 cmp r3, #37 ; 0x25 8824: 1a000002 bne 8834 state = '%'; 8828: e3a03025 mov r3, #37 ; 0x25 882c: e50b3010 str r3, [fp, #-16] 8830: ea00005c b 89a8 } else { putc(c); 8834: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8838: e6ef3073 uxtb r3, r3 883c: e1a00003 mov r0, r3 8840: ebffff4a bl 8570 8844: ea000057 b 89a8 } } else if (state == '%') { 8848: e51b3010 ldr r3, [fp, #-16] 884c: e3530025 cmp r3, #37 ; 0x25 8850: 1a000054 bne 89a8 if (c == 'd') { 8854: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8858: e3530064 cmp r3, #100 ; 0x64 885c: 1a000009 bne 8888 printint(*ap, 10, 1); 8860: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8864: e5933000 ldr r3, [r3] 8868: e3a02001 mov r2, #1 886c: e3a0100a mov r1, #10 8870: e1a00003 mov r0, r3 8874: ebffff84 bl 868c ap++; 8878: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 887c: e2833004 add r3, r3, #4 8880: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8884: ea000045 b 89a0 } else if (c == 'x' || c == 'p') { 8888: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 888c: e3530078 cmp r3, #120 ; 0x78 8890: 0a000002 beq 88a0 8894: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8898: e3530070 cmp r3, #112 ; 0x70 889c: 1a000009 bne 88c8 printint(*ap, 16, 0); 88a0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 88a4: e5933000 ldr r3, [r3] 88a8: e3a02000 mov r2, #0 88ac: e3a01010 mov r1, #16 88b0: e1a00003 mov r0, r3 88b4: ebffff74 bl 868c ap++; 88b8: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 88bc: e2833004 add r3, r3, #4 88c0: e50b3014 str r3, [fp, #-20] ; 0xffffffec 88c4: ea000035 b 89a0 } else if (c == 's') { 88c8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 88cc: e3530073 cmp r3, #115 ; 0x73 88d0: 1a000018 bne 8938 s = (char*)*ap; 88d4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 88d8: e5933000 ldr r3, [r3] 88dc: e50b3008 str r3, [fp, #-8] ap++; 88e0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 88e4: e2833004 add r3, r3, #4 88e8: e50b3014 str r3, [fp, #-20] ; 0xffffffec if (s == 0) 88ec: e51b3008 ldr r3, [fp, #-8] 88f0: e3530000 cmp r3, #0 88f4: 1a00000a bne 8924 s = "(null)"; 88f8: e30f32a0 movw r3, #62112 ; 0xf2a0 88fc: e3403000 movt r3, #0 8900: e50b3008 str r3, [fp, #-8] while (*s != 0) { 8904: ea000006 b 8924 putc(*s); 8908: e51b3008 ldr r3, [fp, #-8] 890c: e5d33000 ldrb r3, [r3] 8910: e1a00003 mov r0, r3 8914: ebffff15 bl 8570 s++; 8918: e51b3008 ldr r3, [fp, #-8] 891c: e2833001 add r3, r3, #1 8920: e50b3008 str r3, [fp, #-8] while (*s != 0) { 8924: e51b3008 ldr r3, [fp, #-8] 8928: e5d33000 ldrb r3, [r3] 892c: e3530000 cmp r3, #0 8930: 1afffff4 bne 8908 8934: ea000019 b 89a0 } } else if (c == 'c') { 8938: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 893c: e3530063 cmp r3, #99 ; 0x63 8940: 1a000008 bne 8968 putc(*ap); 8944: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8948: e5933000 ldr r3, [r3] 894c: e6ef3073 uxtb r3, r3 8950: e1a00003 mov r0, r3 8954: ebffff05 bl 8570 ap++; 8958: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 895c: e2833004 add r3, r3, #4 8960: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8964: ea00000d b 89a0 } else if (c == '%') { 8968: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 896c: e3530025 cmp r3, #37 ; 0x25 8970: 1a000004 bne 8988 putc(c); 8974: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8978: e6ef3073 uxtb r3, r3 897c: e1a00003 mov r0, r3 8980: ebfffefa bl 8570 8984: ea000005 b 89a0 } else { // Unknown % sequence. Print it to draw attention. putc('%'); 8988: e3a00025 mov r0, #37 ; 0x25 898c: ebfffef7 bl 8570 putc(c); 8990: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8994: e6ef3073 uxtb r3, r3 8998: e1a00003 mov r0, r3 899c: ebfffef3 bl 8570 } state = 0; 89a0: e3a03000 mov r3, #0 89a4: e50b3010 str r3, [fp, #-16] for (i = 0; fmt[i]; i++) { 89a8: e51b300c ldr r3, [fp, #-12] 89ac: e2833001 add r3, r3, #1 89b0: e50b300c str r3, [fp, #-12] 89b4: e59b2004 ldr r2, [fp, #4] 89b8: e51b300c ldr r3, [fp, #-12] 89bc: e0823003 add r3, r2, r3 89c0: e5d33000 ldrb r3, [r3] 89c4: e3530000 cmp r3, #0 89c8: 1affff8b bne 87fc 89cc: ea000000 b 89d4 return; 89d0: e320f000 nop {0} } } 89d4: e24bd004 sub sp, fp, #4 89d8: e8bd4800 pop {fp, lr} 89dc: e28dd010 add sp, sp, #16 89e0: e12fff1e bx lr 000089e4 : /// @warning this file doesnt support multi threads /// ipc part struct IpcMsg* new_ipc_msg(struct Session* session, const int argc, const int* arg_size) { 89e4: e92d4800 push {fp, lr} 89e8: e28db004 add fp, sp, #4 89ec: e24dd030 sub sp, sp, #48 ; 0x30 89f0: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 89f4: e50b102c str r1, [fp, #-44] ; 0xffffffd4 89f8: e50b2030 str r2, [fp, #-48] ; 0xffffffd0 int len = IPC_ARG_INFO_BASE_OFFSET; 89fc: e3a0300c mov r3, #12 8a00: e50b3008 str r3, [fp, #-8] int arg_info_offset = len; // start of arg info 8a04: e51b3008 ldr r3, [fp, #-8] 8a08: e50b300c str r3, [fp, #-12] len += argc * sizeof(struct IpcArgInfo); 8a0c: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 8a10: e1a02103 lsl r2, r3, #2 8a14: e51b3008 ldr r3, [fp, #-8] 8a18: e0823003 add r3, r2, r3 8a1c: e50b3008 str r3, [fp, #-8] int arg_buf_offset = len; // start of arg buffer 8a20: e51b3008 ldr r3, [fp, #-8] 8a24: e50b3010 str r3, [fp, #-16] for (int i = 0; i < argc; i++) { 8a28: e3a03000 mov r3, #0 8a2c: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8a30: ea00000a b 8a60 len += arg_size[i]; 8a34: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8a38: e1a03103 lsl r3, r3, #2 8a3c: e51b2030 ldr r2, [fp, #-48] ; 0xffffffd0 8a40: e0823003 add r3, r2, r3 8a44: e5933000 ldr r3, [r3] 8a48: e51b2008 ldr r2, [fp, #-8] 8a4c: e0823003 add r3, r2, r3 8a50: e50b3008 str r3, [fp, #-8] for (int i = 0; i < argc; i++) { 8a54: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8a58: e2833001 add r3, r3, #1 8a5c: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8a60: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec 8a64: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 8a68: e1520003 cmp r2, r3 8a6c: bafffff0 blt 8a34 } struct IpcMsg* buf = session_alloc_buf(session, len); 8a70: e51b1008 ldr r1, [fp, #-8] 8a74: e51b0028 ldr r0, [fp, #-40] ; 0xffffffd8 8a78: eb00026d bl 9434 8a7c: e50b001c str r0, [fp, #-28] ; 0xffffffe4 if (buf == NULL) { 8a80: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8a84: e3530000 cmp r3, #0 8a88: 1a000001 bne 8a94 return NULL; 8a8c: e3a03000 mov r3, #0 8a90: ea00003d b 8b8c } buf->header.len = len; 8a94: e51b3008 ldr r3, [fp, #-8] 8a98: e6ff2073 uxth r2, r3 8a9c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8aa0: e1c320b2 strh r2, [r3, #2] buf->header.done = 0; 8aa4: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8aa8: e5d23000 ldrb r3, [r2] 8aac: e7c1309f bfc r3, #1, #1 8ab0: e5c23000 strb r3, [r2] buf->header.valid = 0; 8ab4: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8ab8: e5d23000 ldrb r3, [r2] 8abc: e7c0301f bfc r3, #0, #1 8ac0: e5c23000 strb r3, [r2] for (int i = 0; i < argc; i++) { 8ac4: e3a03000 mov r3, #0 8ac8: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 8acc: ea00001d b 8b48 struct IpcArgInfo* arg_info = (struct IpcArgInfo*)((char*)buf + arg_info_offset); 8ad0: e51b300c ldr r3, [fp, #-12] 8ad4: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8ad8: e0823003 add r3, r2, r3 8adc: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 arg_info->len = arg_size[i]; 8ae0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8ae4: e1a03103 lsl r3, r3, #2 8ae8: e51b2030 ldr r2, [fp, #-48] ; 0xffffffd0 8aec: e0823003 add r3, r2, r3 8af0: e5933000 ldr r3, [r3] 8af4: e6ff2073 uxth r2, r3 8af8: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 8afc: e1c320b2 strh r2, [r3, #2] arg_info->offset = arg_buf_offset; 8b00: e51b3010 ldr r3, [fp, #-16] 8b04: e6ff2073 uxth r2, r3 8b08: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 8b0c: e1c320b0 strh r2, [r3] // update arg_info_offset and arg_buf_offset arg_info_offset += sizeof(struct IpcArgInfo); 8b10: e51b300c ldr r3, [fp, #-12] 8b14: e2833004 add r3, r3, #4 8b18: e50b300c str r3, [fp, #-12] arg_buf_offset += arg_size[i]; 8b1c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8b20: e1a03103 lsl r3, r3, #2 8b24: e51b2030 ldr r2, [fp, #-48] ; 0xffffffd0 8b28: e0823003 add r3, r2, r3 8b2c: e5933000 ldr r3, [r3] 8b30: e51b2010 ldr r2, [fp, #-16] 8b34: e0823003 add r3, r2, r3 8b38: e50b3010 str r3, [fp, #-16] for (int i = 0; i < argc; i++) { 8b3c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8b40: e2833001 add r3, r3, #1 8b44: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 8b48: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 8b4c: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 8b50: e1520003 cmp r2, r3 8b54: baffffdd blt 8ad0 } buf->header.nr_args = argc; 8b58: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 8b5c: e6ef3073 uxtb r3, r3 8b60: e203300f and r3, r3, #15 8b64: e6ef1073 uxtb r1, r3 8b68: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8b6c: e5d23000 ldrb r3, [r2] 8b70: e7c73211 bfi r3, r1, #4, #4 8b74: e5c23000 strb r3, [r2] buf->header.init = 1; 8b78: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8b7c: e5d23000 ldrb r3, [r2] 8b80: e3833004 orr r3, r3, #4 8b84: e5c23000 strb r3, [r2] return buf; 8b88: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 } 8b8c: e1a00003 mov r0, r3 8b90: e24bd004 sub sp, fp, #4 8b94: e8bd8800 pop {fp, pc} 00008b98 : /// @param arg_num start with 0 for first arg /// @param data /// @param len data buffer len /// @return bool ipc_msg_set_nth_arg(struct IpcMsg* msg, const int arg_num, const void* const data, const int len) { 8b98: e92d4800 push {fp, lr} 8b9c: e28db004 add fp, sp, #4 8ba0: e24dd020 sub sp, sp, #32 8ba4: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 8ba8: e50b101c str r1, [fp, #-28] ; 0xffffffe4 8bac: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 8bb0: e50b3024 str r3, [fp, #-36] ; 0xffffffdc if (arg_num >= msg->header.nr_args) { 8bb4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8bb8: e5d33000 ldrb r3, [r3] 8bbc: e7e33253 ubfx r3, r3, #4, #4 8bc0: e6ef3073 uxtb r3, r3 8bc4: e1a02003 mov r2, r3 8bc8: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8bcc: e1520003 cmp r2, r3 8bd0: ca00000b bgt 8c04 printf("[%s] IPC: arg_num out of msg range, arg_num: %d, nr_args: %d\n", __func__, arg_num, msg->header.nr_args); 8bd4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8bd8: e5d33000 ldrb r3, [r3] 8bdc: e7e33253 ubfx r3, r3, #4, #4 8be0: e6ef3073 uxtb r3, r3 8be4: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4 8be8: e30f1410 movw r1, #62480 ; 0xf410 8bec: e3401000 movt r1, #0 8bf0: e30f02a8 movw r0, #62120 ; 0xf2a8 8bf4: e3400000 movt r0, #0 8bf8: ebfffeee bl 87b8 return false; 8bfc: e3a03000 mov r3, #0 8c00: ea000029 b 8cac } struct IpcArgInfo* nth_arg_info = IPCMSG_ARG_INFO(msg, arg_num); 8c04: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8c08: e2833003 add r3, r3, #3 8c0c: e1a03103 lsl r3, r3, #2 8c10: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 8c14: e0823003 add r3, r2, r3 8c18: e50b3008 str r3, [fp, #-8] if (len > nth_arg_info->len) { 8c1c: e51b3008 ldr r3, [fp, #-8] 8c20: e1d330b2 ldrh r3, [r3, #2] 8c24: e1a02003 mov r2, r3 8c28: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 8c2c: e1520003 cmp r2, r3 8c30: aa000009 bge 8c5c printf("[%s] IPC: size of arg out of buffer range, given len: %d, len %d\n", __func__, len, nth_arg_info->len); 8c34: e51b3008 ldr r3, [fp, #-8] 8c38: e1d330b2 ldrh r3, [r3, #2] 8c3c: e51b2024 ldr r2, [fp, #-36] ; 0xffffffdc 8c40: e30f1410 movw r1, #62480 ; 0xf410 8c44: e3401000 movt r1, #0 8c48: e30f02e8 movw r0, #62184 ; 0xf2e8 8c4c: e3400000 movt r0, #0 8c50: ebfffed8 bl 87b8 return false; 8c54: e3a03000 mov r3, #0 8c58: ea000013 b 8cac 8c5c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8c60: e50b3010 str r3, [fp, #-16] 8c64: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8c68: e50b3014 str r3, [fp, #-20] ; 0xffffffec return (void*)((char*)msg + IPCMSG_ARG_INFO(msg, arg_num)->offset); 8c6c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8c70: e2833003 add r3, r3, #3 8c74: e1a03103 lsl r3, r3, #2 8c78: e51b2010 ldr r2, [fp, #-16] 8c7c: e0823003 add r3, r2, r3 8c80: e1d330b0 ldrh r3, [r3] 8c84: e1a02003 mov r2, r3 8c88: e51b3010 ldr r3, [fp, #-16] 8c8c: e0833002 add r3, r3, r2 } void* buf = ipc_msg_get_nth_arg_buf(msg, arg_num); 8c90: e50b300c str r3, [fp, #-12] memmove(buf, data, len); 8c94: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 8c98: e1a02003 mov r2, r3 8c9c: e51b1020 ldr r1, [fp, #-32] ; 0xffffffe0 8ca0: e51b000c ldr r0, [fp, #-12] 8ca4: eb000634 bl a57c return true; 8ca8: e3a03001 mov r3, #1 } 8cac: e1a00003 mov r0, r3 8cb0: e24bd004 sub sp, fp, #4 8cb4: e8bd8800 pop {fp, pc} 00008cb8 : /// @param arg_num start with 0 for first arg /// @param data /// @param len data buffer len /// @return bool ipc_msg_get_nth_arg(struct IpcMsg* msg, const int arg_num, void* data, const int len) { 8cb8: e92d4800 push {fp, lr} 8cbc: e28db004 add fp, sp, #4 8cc0: e24dd020 sub sp, sp, #32 8cc4: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 8cc8: e50b101c str r1, [fp, #-28] ; 0xffffffe4 8ccc: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 8cd0: e50b3024 str r3, [fp, #-36] ; 0xffffffdc if (arg_num >= msg->header.nr_args) { 8cd4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8cd8: e5d33000 ldrb r3, [r3] 8cdc: e7e33253 ubfx r3, r3, #4, #4 8ce0: e6ef3073 uxtb r3, r3 8ce4: e1a02003 mov r2, r3 8ce8: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8cec: e1520003 cmp r2, r3 8cf0: ca000006 bgt 8d10 printf("[%s] IPC: arg_num out of msg range", __func__); 8cf4: e30f1424 movw r1, #62500 ; 0xf424 8cf8: e3401000 movt r1, #0 8cfc: e30f032c movw r0, #62252 ; 0xf32c 8d00: e3400000 movt r0, #0 8d04: ebfffeab bl 87b8 return false; 8d08: e3a03000 mov r3, #0 8d0c: ea000026 b 8dac } struct IpcArgInfo* nth_arg_info = IPCMSG_ARG_INFO(msg, arg_num); 8d10: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8d14: e2833003 add r3, r3, #3 8d18: e1a03103 lsl r3, r3, #2 8d1c: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8 8d20: e0823003 add r3, r2, r3 8d24: e50b3008 str r3, [fp, #-8] if (len > nth_arg_info->len) { 8d28: e51b3008 ldr r3, [fp, #-8] 8d2c: e1d330b2 ldrh r3, [r3, #2] 8d30: e1a02003 mov r2, r3 8d34: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 8d38: e1520003 cmp r2, r3 8d3c: aa000006 bge 8d5c printf("[%s] IPC: size of arg out of buffer range", __func__); 8d40: e30f1424 movw r1, #62500 ; 0xf424 8d44: e3401000 movt r1, #0 8d48: e30f0350 movw r0, #62288 ; 0xf350 8d4c: e3400000 movt r0, #0 8d50: ebfffe98 bl 87b8 return false; 8d54: e3a03000 mov r3, #0 8d58: ea000013 b 8dac 8d5c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 8d60: e50b3010 str r3, [fp, #-16] 8d64: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 8d68: e50b3014 str r3, [fp, #-20] ; 0xffffffec 8d6c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 8d70: e2833003 add r3, r3, #3 8d74: e1a03103 lsl r3, r3, #2 8d78: e51b2010 ldr r2, [fp, #-16] 8d7c: e0823003 add r3, r2, r3 8d80: e1d330b0 ldrh r3, [r3] 8d84: e1a02003 mov r2, r3 8d88: e51b3010 ldr r3, [fp, #-16] 8d8c: e0833002 add r3, r3, r2 } void* buf = ipc_msg_get_nth_arg_buf(msg, arg_num); 8d90: e50b300c str r3, [fp, #-12] memmove(data, buf, len); 8d94: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 8d98: e1a02003 mov r2, r3 8d9c: e51b100c ldr r1, [fp, #-12] 8da0: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 8da4: eb0005f4 bl a57c return true; 8da8: e3a03001 mov r3, #1 } 8dac: e1a00003 mov r0, r3 8db0: e24bd004 sub sp, fp, #4 8db4: e8bd8800 pop {fp, pc} 00008db8 : void ipc_msg_send_wait(struct IpcMsg* msg) { 8db8: e92d4800 push {fp, lr} 8dbc: e28db004 add fp, sp, #4 8dc0: e24dd008 sub sp, sp, #8 8dc4: e50b0008 str r0, [fp, #-8] msg->header.magic = IPC_MSG_MAGIC; 8dc8: e51b2008 ldr r2, [fp, #-8] 8dcc: e30d3cba movw r3, #56506 ; 0xdcba 8dd0: e34a3bcd movt r3, #43981 ; 0xabcd 8dd4: e5823004 str r3, [r2, #4] msg->header.valid = 1; 8dd8: e51b2008 ldr r2, [fp, #-8] 8ddc: e5d23000 ldrb r3, [r2] 8de0: e3833001 orr r3, r3, #1 8de4: e5c23000 strb r3, [r2] msg->header.done = 0; 8de8: e51b2008 ldr r2, [fp, #-8] 8dec: e5d23000 ldrb r3, [r2] 8df0: e7c1309f bfc r3, #1, #1 8df4: e5c23000 strb r3, [r2] while (msg->header.done == 0) { 8df8: ea000000 b 8e00 /// @todo syscall yield with prio decrease yield(); 8dfc: eb0003e7 bl 9da0 while (msg->header.done == 0) { 8e00: e51b3008 ldr r3, [fp, #-8] 8e04: e5d33000 ldrb r3, [r3] 8e08: e2033002 and r3, r3, #2 8e0c: e6ef3073 uxtb r3, r3 8e10: e3530000 cmp r3, #0 8e14: 0afffff8 beq 8dfc } assert(msg->header.done == 1); 8e18: e51b3008 ldr r3, [fp, #-8] 8e1c: e5d33000 ldrb r3, [r3] 8e20: e2033002 and r3, r3, #2 8e24: e6ef3073 uxtb r3, r3 8e28: e3530000 cmp r3, #0 8e2c: 1a000007 bne 8e50 8e30: e30f337c movw r3, #62332 ; 0xf37c 8e34: e3403000 movt r3, #0 8e38: e30f2438 movw r2, #62520 ; 0xf438 8e3c: e3402000 movt r2, #0 8e40: e3a0107e mov r1, #126 ; 0x7e 8e44: e30f0394 movw r0, #62356 ; 0xf394 8e48: e3400000 movt r0, #0 8e4c: eb000531 bl a318 <__assert_func> } 8e50: e320f000 nop {0} 8e54: e24bd004 sub sp, fp, #4 8e58: e8bd8800 pop {fp, pc} 00008e5c : void ipc_msg_send_nowait(struct IpcMsg* msg) { 8e5c: e52db004 push {fp} ; (str fp, [sp, #-4]!) 8e60: e28db000 add fp, sp, #0 8e64: e24dd00c sub sp, sp, #12 8e68: e50b0008 str r0, [fp, #-8] msg->header.magic = IPC_MSG_MAGIC; 8e6c: e51b2008 ldr r2, [fp, #-8] 8e70: e30d3cba movw r3, #56506 ; 0xdcba 8e74: e34a3bcd movt r3, #43981 ; 0xabcd 8e78: e5823004 str r3, [r2, #4] msg->header.valid = 1; 8e7c: e51b2008 ldr r2, [fp, #-8] 8e80: e5d23000 ldrb r3, [r2] 8e84: e3833001 orr r3, r3, #1 8e88: e5c23000 strb r3, [r2] msg->header.done = 0; 8e8c: e51b2008 ldr r2, [fp, #-8] 8e90: e5d23000 ldrb r3, [r2] 8e94: e7c1309f bfc r3, #1, #1 8e98: e5c23000 strb r3, [r2] } 8e9c: e320f000 nop {0} 8ea0: e28bd000 add sp, fp, #0 8ea4: e49db004 pop {fp} ; (ldr fp, [sp], #4) 8ea8: e12fff1e bx lr 00008eac : int ipc_session_wait(struct Session* session) { 8eac: e92d4800 push {fp, lr} 8eb0: e28db004 add fp, sp, #4 8eb4: e24dd010 sub sp, sp, #16 8eb8: e50b0010 str r0, [fp, #-16] struct IpcMsg* msg = IPCSESSION_MSG(session); 8ebc: e51b3010 ldr r3, [fp, #-16] 8ec0: e5933010 ldr r3, [r3, #16] 8ec4: e51b2010 ldr r2, [fp, #-16] 8ec8: e5922008 ldr r2, [r2, #8] 8ecc: e0833002 add r3, r3, r2 8ed0: e50b3008 str r3, [fp, #-8] while (msg->header.done == 0) { 8ed4: ea000000 b 8edc /// @todo syscall yield with prio decrease yield(); 8ed8: eb0003b0 bl 9da0 while (msg->header.done == 0) { 8edc: e51b3008 ldr r3, [fp, #-8] 8ee0: e5d33000 ldrb r3, [r3] 8ee4: e2033002 and r3, r3, #2 8ee8: e6ef3073 uxtb r3, r3 8eec: e3530000 cmp r3, #0 8ef0: 0afffff8 beq 8ed8 } assert(msg->header.done == 1); 8ef4: e51b3008 ldr r3, [fp, #-8] 8ef8: e5d33000 ldrb r3, [r3] 8efc: e2033002 and r3, r3, #2 8f00: e6ef3073 uxtb r3, r3 8f04: e3530000 cmp r3, #0 8f08: 1a000007 bne 8f2c 8f0c: e30f337c movw r3, #62332 ; 0xf37c 8f10: e3403000 movt r3, #0 8f14: e30f244c movw r2, #62540 ; 0xf44c 8f18: e3402000 movt r2, #0 8f1c: e3a0108f mov r1, #143 ; 0x8f 8f20: e30f0394 movw r0, #62356 ; 0xf394 8f24: e3400000 movt r0, #0 8f28: eb0004fa bl a318 <__assert_func> return msg->header.ret_val; 8f2c: e51b3008 ldr r3, [fp, #-8] 8f30: e5933008 ldr r3, [r3, #8] } 8f34: e1a00003 mov r0, r3 8f38: e24bd004 sub sp, fp, #4 8f3c: e8bd8800 pop {fp, pc} 00008f40 : static int cur_sess_id = -1; int cur_session_id(void) { 8f40: e52db004 push {fp} ; (str fp, [sp, #-4]!) 8f44: e28db000 add fp, sp, #0 return cur_sess_id; 8f48: e30f3b68 movw r3, #64360 ; 0xfb68 8f4c: e3403000 movt r3, #0 8f50: e5933000 ldr r3, [r3] } 8f54: e1a00003 mov r0, r3 8f58: e28bd000 add sp, fp, #0 8f5c: e49db004 pop {fp} ; (ldr fp, [sp], #4) 8f60: e12fff1e bx lr 00008f64 : static bool session_delayed = false; void delay_session(void) { 8f64: e52db004 push {fp} ; (str fp, [sp, #-4]!) 8f68: e28db000 add fp, sp, #0 session_delayed = true; 8f6c: e3003534 movw r3, #1332 ; 0x534 8f70: e3403001 movt r3, #1 8f74: e3a02001 mov r2, #1 8f78: e5c32000 strb r2, [r3] } 8f7c: e320f000 nop {0} 8f80: e28bd000 add sp, fp, #0 8f84: e49db004 pop {fp} ; (ldr fp, [sp], #4) 8f88: e12fff1e bx lr 00008f8c : void ipc_server_loop(struct IpcNode* ipc_node) { 8f8c: e92d4810 push {r4, fp, lr} 8f90: e28db008 add fp, sp, #8 8f94: e24ddf5d sub sp, sp, #372 ; 0x174 8f98: e50b0178 str r0, [fp, #-376] ; 0xfffffe88 /* if connect sessions are greater than NR_MAX_SESSION, a full round will require multiple polls. Eg.(3 polls to with 6 sessions and NR_MAX_SESSION = 4): [0, 1, 2, 3], [4, 5, 0, 1], [2, 3, 4, 5] */ poll_session(session_list, NR_MAX_SESSION); 8f9c: e24b3e17 sub r3, fp, #368 ; 0x170 8fa0: e3a01010 mov r1, #16 8fa4: e1a00003 mov r0, r3 8fa8: eb0003ab bl 9e5c /* handle each session */ for (int i = 0; i < NR_MAX_SESSION; i++) { 8fac: e3a03000 mov r3, #0 8fb0: e50b3010 str r3, [fp, #-16] 8fb4: ea000102 b 93c4 if (session_list[i].buf == NULL) { 8fb8: e51b2010 ldr r2, [fp, #-16] 8fbc: e1a03002 mov r3, r2 8fc0: e1a03103 lsl r3, r3, #2 8fc4: e0833002 add r3, r3, r2 8fc8: e1a03103 lsl r3, r3, #2 8fcc: e24b200c sub r2, fp, #12 8fd0: e0823003 add r3, r2, r3 8fd4: e2433f55 sub r3, r3, #340 ; 0x154 8fd8: e5933000 ldr r3, [r3] 8fdc: e3530000 cmp r3, #0 8fe0: 1a000001 bne 8fec yield(); 8fe4: eb00036d bl 9da0 break; 8fe8: ea0000f8 b 93d0 } cur_sess_id = session_list[i].id; 8fec: e51b2010 ldr r2, [fp, #-16] 8ff0: e1a03002 mov r3, r2 8ff4: e1a03103 lsl r3, r3, #2 8ff8: e0833002 add r3, r3, r2 8ffc: e1a03103 lsl r3, r3, #2 9000: e24b200c sub r2, fp, #12 9004: e0823003 add r3, r2, r3 9008: e2433f59 sub r3, r3, #356 ; 0x164 900c: e5932000 ldr r2, [r3] 9010: e30f3b68 movw r3, #64360 ; 0xfb68 9014: e3403000 movt r3, #0 9018: e5832000 str r2, [r3] struct IpcMsg* msg = IPCSESSION_MSG(&session_list[i]); 901c: e51b2010 ldr r2, [fp, #-16] 9020: e1a03002 mov r3, r2 9024: e1a03103 lsl r3, r3, #2 9028: e0833002 add r3, r3, r2 902c: e1a03103 lsl r3, r3, #2 9030: e24b200c sub r2, fp, #12 9034: e0823003 add r3, r2, r3 9038: e2433f55 sub r3, r3, #340 ; 0x154 903c: e5931000 ldr r1, [r3] 9040: e51b2010 ldr r2, [fp, #-16] 9044: e1a03002 mov r3, r2 9048: e1a03103 lsl r3, r3, #2 904c: e0833002 add r3, r3, r2 9050: e1a03103 lsl r3, r3, #2 9054: e24b200c sub r2, fp, #12 9058: e0823003 add r3, r2, r3 905c: e2433f57 sub r3, r3, #348 ; 0x15c 9060: e5933000 ldr r3, [r3] 9064: e0813003 add r3, r1, r3 9068: e50b3014 str r3, [fp, #-20] ; 0xffffffec /* handle every message in current session a session could be delay in case one of its message(current message) needs to wait for an interrupt message's arrival interfaces[opcode] should explicitly call delay_session() and return to delay this session */ while (msg->header.magic == IPC_MSG_MAGIC && msg->header.valid == 1 && msg->header.done != 1) { 906c: ea0000b9 b 9358 // printf("session %d [%d, %d]\n", session_list[i].id, session_list[i].head, session_list[i].tail); if (session_used_size(&session_list[i]) == 0 && session_forward_tail(&session_list[i], msg->header.len) < 0) { 9070: e24b1e17 sub r1, fp, #368 ; 0x170 9074: e51b2010 ldr r2, [fp, #-16] 9078: e1a03002 mov r3, r2 907c: e1a03103 lsl r3, r3, #2 9080: e0833002 add r3, r3, r2 9084: e1a03103 lsl r3, r3, #2 9088: e0813003 add r3, r1, r3 908c: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 void* buf; }; __attribute__((__always_inline__)) static inline int session_used_size(struct Session* session) { return ((session->tail + session->capacity) - session->head) % session->capacity; 9090: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9094: e593200c ldr r2, [r3, #12] 9098: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 909c: e5933004 ldr r3, [r3, #4] 90a0: e0822003 add r2, r2, r3 90a4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 90a8: e5933008 ldr r3, [r3, #8] 90ac: e0422003 sub r2, r2, r3 90b0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 90b4: e5933004 ldr r3, [r3, #4] 90b8: e1a01003 mov r1, r3 90bc: e1a00002 mov r0, r2 90c0: eb00048b bl a2f4 <__aeabi_idivmod> 90c4: e1a03001 mov r3, r1 90c8: e3530000 cmp r3, #0 90cc: 1a000038 bne 91b4 90d0: e24b1e17 sub r1, fp, #368 ; 0x170 90d4: e51b2010 ldr r2, [fp, #-16] 90d8: e1a03002 mov r3, r2 90dc: e1a03103 lsl r3, r3, #2 90e0: e0833002 add r3, r3, r2 90e4: e1a03103 lsl r3, r3, #2 90e8: e0813003 add r3, r1, r3 90ec: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec 90f0: e1d220b2 ldrh r2, [r2, #2] 90f4: e50b301c str r3, [fp, #-28] ; 0xffffffe4 90f8: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 90fc: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9100: e50b3024 str r3, [fp, #-36] ; 0xffffffdc } __attribute__((__always_inline__)) static inline int session_remain_capacity(struct Session* session) { return session->capacity - session_used_size(session); 9104: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 9108: e5934004 ldr r4, [r3, #4] 910c: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 9110: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 return ((session->tail + session->capacity) - session->head) % session->capacity; 9114: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9118: e593200c ldr r2, [r3, #12] 911c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9120: e5933004 ldr r3, [r3, #4] 9124: e0822003 add r2, r2, r3 9128: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 912c: e5933008 ldr r3, [r3, #8] 9130: e0422003 sub r2, r2, r3 9134: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9138: e5933004 ldr r3, [r3, #4] 913c: e1a01003 mov r1, r3 9140: e1a00002 mov r0, r2 9144: eb00046a bl a2f4 <__aeabi_idivmod> 9148: e1a03001 mov r3, r1 return session->capacity - session_used_size(session); 914c: e0443003 sub r3, r4, r3 return session->head; } __attribute__((__always_inline__)) static inline int session_forward_tail(struct Session* session, int len) { if (len > session_remain_capacity(session)) { 9150: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 9154: e1520003 cmp r2, r3 9158: da000004 ble 9170 printf("forward tail with too much size\n"); 915c: e30f03a0 movw r0, #62368 ; 0xf3a0 9160: e3400000 movt r0, #0 9164: ebfffd93 bl 87b8 return -1; 9168: e3e03000 mvn r3, #0 916c: ea00000e b 91ac } session->tail = (session->tail + len) % session->capacity; 9170: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9174: e593200c ldr r2, [r3, #12] 9178: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 917c: e0822003 add r2, r2, r3 9180: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9184: e5933004 ldr r3, [r3, #4] 9188: e1a01003 mov r1, r3 918c: e1a00002 mov r0, r2 9190: eb000457 bl a2f4 <__aeabi_idivmod> 9194: e1a03001 mov r3, r1 9198: e1a02003 mov r2, r3 919c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 91a0: e583200c str r2, [r3, #12] return session->tail; 91a4: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 91a8: e593300c ldr r3, [r3, #12] 91ac: e3530000 cmp r3, #0 91b0: ba00007b blt 93a4 break; } if (ipc_node->interfaces[msg->header.opcode]) { 91b4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 91b8: e5d33001 ldrb r3, [r3, #1] 91bc: e51b2178 ldr r2, [fp, #-376] ; 0xfffffe88 91c0: e1a03103 lsl r3, r3, #2 91c4: e0823003 add r3, r2, r3 91c8: e5933004 ldr r3, [r3, #4] 91cc: e3530000 cmp r3, #0 91d0: 0a000011 beq 921c ipc_node->interfaces[msg->header.opcode](msg); 91d4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 91d8: e5d33001 ldrb r3, [r3, #1] 91dc: e51b2178 ldr r2, [fp, #-376] ; 0xfffffe88 91e0: e1a03103 lsl r3, r3, #2 91e4: e0823003 add r3, r2, r3 91e8: e5933004 ldr r3, [r3, #4] 91ec: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec 91f0: e12fff33 blx r3 // check if this session is delayed by op handler, all messages after the delayed message in current session is blocked. if (session_delayed) { 91f4: e3003534 movw r3, #1332 ; 0x534 91f8: e3403001 movt r3, #1 91fc: e5d33000 ldrb r3, [r3] 9200: e3530000 cmp r3, #0 9204: 0a00000f beq 9248 session_delayed = false; 9208: e3003534 movw r3, #1332 ; 0x534 920c: e3403001 movt r3, #1 9210: e3a02000 mov r2, #0 9214: e5c32000 strb r2, [r3] break; 9218: ea000062 b 93a8 } } else { printf("Unsupport opcode(%d) for server: %s\n", msg->header.opcode, ipc_node->name); 921c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9220: e5d33001 ldrb r3, [r3, #1] 9224: e1a01003 mov r1, r3 9228: e51b3178 ldr r3, [fp, #-376] ; 0xfffffe88 922c: e5933000 ldr r3, [r3] 9230: e1a02003 mov r2, r3 9234: e30f03c4 movw r0, #62404 ; 0xf3c4 9238: e3400000 movt r0, #0 923c: ebfffd5d bl 87b8 } // finish this message in server's perspective while (session_forward_head(&session_list[i], msg->header.len) < 0) { 9240: ea000000 b 9248 yield(); 9244: eb0002d5 bl 9da0 while (session_forward_head(&session_list[i], msg->header.len) < 0) { 9248: e24b1e17 sub r1, fp, #368 ; 0x170 924c: e51b2010 ldr r2, [fp, #-16] 9250: e1a03002 mov r3, r2 9254: e1a03103 lsl r3, r3, #2 9258: e0833002 add r3, r3, r2 925c: e1a03103 lsl r3, r3, #2 9260: e0813003 add r3, r1, r3 9264: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec 9268: e1d220b2 ldrh r2, [r2, #2] 926c: e50b302c str r3, [fp, #-44] ; 0xffffffd4 9270: e50b2030 str r2, [fp, #-48] ; 0xffffffd0 if (((session->head + len) % session->capacity) > session->tail) { 9274: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 9278: e5932008 ldr r2, [r3, #8] 927c: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 9280: e0822003 add r2, r2, r3 9284: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 9288: e5933004 ldr r3, [r3, #4] 928c: e1a01003 mov r1, r3 9290: e1a00002 mov r0, r2 9294: eb000416 bl a2f4 <__aeabi_idivmod> 9298: e1a03001 mov r3, r1 929c: e1a02003 mov r2, r3 92a0: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 92a4: e593300c ldr r3, [r3, #12] 92a8: e1520003 cmp r2, r3 92ac: da000004 ble 92c4 printf("forward head with too much size\n"); 92b0: e30f03ec movw r0, #62444 ; 0xf3ec 92b4: e3400000 movt r0, #0 92b8: ebfffd3e bl 87b8 return -1; 92bc: e3e03000 mvn r3, #0 92c0: ea00000e b 9300 session->head = (session->head + len) % session->capacity; 92c4: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 92c8: e5932008 ldr r2, [r3, #8] 92cc: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 92d0: e0822003 add r2, r2, r3 92d4: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 92d8: e5933004 ldr r3, [r3, #4] 92dc: e1a01003 mov r1, r3 92e0: e1a00002 mov r0, r2 92e4: eb000402 bl a2f4 <__aeabi_idivmod> 92e8: e1a03001 mov r3, r1 92ec: e1a02003 mov r2, r3 92f0: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 92f4: e5832008 str r2, [r3, #8] return session->head; 92f8: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 92fc: e5933008 ldr r3, [r3, #8] 9300: e3530000 cmp r3, #0 9304: baffffce blt 9244 } msg = IPCSESSION_MSG(&session_list[i]); 9308: e51b2010 ldr r2, [fp, #-16] 930c: e1a03002 mov r3, r2 9310: e1a03103 lsl r3, r3, #2 9314: e0833002 add r3, r3, r2 9318: e1a03103 lsl r3, r3, #2 931c: e24b200c sub r2, fp, #12 9320: e0823003 add r3, r2, r3 9324: e2433f55 sub r3, r3, #340 ; 0x154 9328: e5931000 ldr r1, [r3] 932c: e51b2010 ldr r2, [fp, #-16] 9330: e1a03002 mov r3, r2 9334: e1a03103 lsl r3, r3, #2 9338: e0833002 add r3, r3, r2 933c: e1a03103 lsl r3, r3, #2 9340: e24b200c sub r2, fp, #12 9344: e0823003 add r3, r2, r3 9348: e2433f57 sub r3, r3, #348 ; 0x15c 934c: e5933000 ldr r3, [r3] 9350: e0813003 add r3, r1, r3 9354: e50b3014 str r3, [fp, #-20] ; 0xffffffec while (msg->header.magic == IPC_MSG_MAGIC && msg->header.valid == 1 && msg->header.done != 1) { 9358: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 935c: e5932004 ldr r2, [r3, #4] 9360: e30d3cba movw r3, #56506 ; 0xdcba 9364: e34a3bcd movt r3, #43981 ; 0xabcd 9368: e1520003 cmp r2, r3 936c: 1a00000d bne 93a8 9370: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9374: e5d33000 ldrb r3, [r3] 9378: e2033001 and r3, r3, #1 937c: e6ef3073 uxtb r3, r3 9380: e3530000 cmp r3, #0 9384: 0a000007 beq 93a8 9388: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 938c: e5d33000 ldrb r3, [r3] 9390: e2033002 and r3, r3, #2 9394: e6ef3073 uxtb r3, r3 9398: e3530000 cmp r3, #0 939c: 0affff33 beq 9070 93a0: ea000000 b 93a8 break; 93a4: e320f000 nop {0} } // stop handle this session cur_sess_id = -1; 93a8: e30f3b68 movw r3, #64360 ; 0xfb68 93ac: e3403000 movt r3, #0 93b0: e3e02000 mvn r2, #0 93b4: e5832000 str r2, [r3] for (int i = 0; i < NR_MAX_SESSION; i++) { 93b8: e51b3010 ldr r3, [fp, #-16] 93bc: e2833001 add r3, r3, #1 93c0: e50b3010 str r3, [fp, #-16] 93c4: e51b3010 ldr r3, [fp, #-16] 93c8: e353000f cmp r3, #15 93cc: dafffef9 ble 8fb8 poll_session(session_list, NR_MAX_SESSION); 93d0: eafffef1 b 8f9c 000093d4 : #include "session.h" #include "usyscall.h" int connect_session(struct Session* _session, char* _path, int _capacity) { 93d4: e92d4800 push {fp, lr} 93d8: e28db004 add fp, sp, #4 93dc: e24dd010 sub sp, sp, #16 93e0: e50b0008 str r0, [fp, #-8] 93e4: e50b100c str r1, [fp, #-12] 93e8: e50b2010 str r2, [fp, #-16] return session(_path, _capacity, _session); 93ec: e51b2008 ldr r2, [fp, #-8] 93f0: e51b1010 ldr r1, [fp, #-16] 93f4: e51b000c ldr r0, [fp, #-12] 93f8: eb000285 bl 9e14 93fc: e1a03000 mov r3, r0 } 9400: e1a00003 mov r0, r3 9404: e24bd004 sub sp, fp, #4 9408: e8bd8800 pop {fp, pc} 0000940c : int free_session(struct Session* session) { 940c: e92d4800 push {fp, lr} 9410: e28db004 add fp, sp, #4 9414: e24dd008 sub sp, sp, #8 9418: e50b0008 str r0, [fp, #-8] return close_session(session); 941c: e51b0008 ldr r0, [fp, #-8] 9420: eb00029d bl 9e9c 9424: e1a03000 mov r3, r0 } 9428: e1a00003 mov r0, r3 942c: e24bd004 sub sp, fp, #4 9430: e8bd8800 pop {fp, pc} 00009434 : // ipc_msg alloc_buffer(ipc_session) void* session_alloc_buf(struct Session* session, int len) { 9434: e92d4810 push {r4, fp, lr} 9438: e28db008 add fp, sp, #8 943c: e24dd02c sub sp, sp, #44 ; 0x2c 9440: e50b0030 str r0, [fp, #-48] ; 0xffffffd0 9444: e50b1034 str r1, [fp, #-52] ; 0xffffffcc 9448: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 944c: e50b3014 str r3, [fp, #-20] ; 0xffffffec return session->capacity - session_used_size(session); 9450: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9454: e5934004 ldr r4, [r3, #4] 9458: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 945c: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 return ((session->tail + session->capacity) - session->head) % session->capacity; 9460: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9464: e593200c ldr r2, [r3, #12] 9468: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 946c: e5933004 ldr r3, [r3, #4] 9470: e0822003 add r2, r2, r3 9474: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9478: e5933008 ldr r3, [r3, #8] 947c: e0422003 sub r2, r2, r3 9480: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9484: e5933004 ldr r3, [r3, #4] 9488: e1a01003 mov r1, r3 948c: e1a00002 mov r0, r2 9490: eb000397 bl a2f4 <__aeabi_idivmod> 9494: e1a03001 mov r3, r1 return session->capacity - session_used_size(session); 9498: e0442003 sub r2, r4, r3 if (len > session_remain_capacity(session)) { 949c: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 94a0: e1520003 cmp r2, r3 94a4: aa000001 bge 94b0 return NULL; 94a8: e3a03000 mov r3, #0 94ac: ea000038 b 9594 } void* buf = session->buf + session->tail; 94b0: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 94b4: e5933010 ldr r3, [r3, #16] 94b8: e51b2030 ldr r2, [fp, #-48] ; 0xffffffd0 94bc: e592200c ldr r2, [r2, #12] 94c0: e0833002 add r3, r3, r2 94c4: e50b3010 str r3, [fp, #-16] // we mapped double size of page, so it's ok to write buffer directly memset(buf, 0, len); 94c8: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 94cc: e1a02003 mov r2, r3 94d0: e3a01000 mov r1, #0 94d4: e51b0010 ldr r0, [fp, #-16] 94d8: eb000479 bl a6c4 94dc: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 94e0: e50b301c str r3, [fp, #-28] ; 0xffffffe4 94e4: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 94e8: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 94ec: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 94f0: e50b3024 str r3, [fp, #-36] ; 0xffffffdc 94f4: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 94f8: e5934004 ldr r4, [r3, #4] 94fc: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 9500: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 return ((session->tail + session->capacity) - session->head) % session->capacity; 9504: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9508: e593200c ldr r2, [r3, #12] 950c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9510: e5933004 ldr r3, [r3, #4] 9514: e0822003 add r2, r2, r3 9518: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 951c: e5933008 ldr r3, [r3, #8] 9520: e0422003 sub r2, r2, r3 9524: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9528: e5933004 ldr r3, [r3, #4] 952c: e1a01003 mov r1, r3 9530: e1a00002 mov r0, r2 9534: eb00036e bl a2f4 <__aeabi_idivmod> 9538: e1a03001 mov r3, r1 return session->capacity - session_used_size(session); 953c: e0443003 sub r3, r4, r3 if (len > session_remain_capacity(session)) { 9540: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0 9544: e1520003 cmp r2, r3 9548: da000003 ble 955c printf("forward tail with too much size\n"); 954c: e30f0460 movw r0, #62560 ; 0xf460 9550: e3400000 movt r0, #0 9554: ebfffc97 bl 87b8 9558: ea00000c b 9590 session->tail = (session->tail + len) % session->capacity; 955c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9560: e593200c ldr r2, [r3, #12] 9564: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 9568: e0822003 add r2, r2, r3 956c: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9570: e5933004 ldr r3, [r3, #4] 9574: e1a01003 mov r1, r3 9578: e1a00002 mov r0, r2 957c: eb00035c bl a2f4 <__aeabi_idivmod> 9580: e1a03001 mov r3, r1 9584: e1a02003 mov r2, r3 9588: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 958c: e583200c str r2, [r3, #12] session_forward_tail(session, len); return buf; 9590: e51b3010 ldr r3, [fp, #-16] } 9594: e1a00003 mov r0, r3 9598: e24bd008 sub sp, fp, #8 959c: e8bd8810 pop {r4, fp, pc} 000095a0 : bool session_free_buf(struct Session* session, int len) { 95a0: e92d4800 push {fp, lr} 95a4: e28db004 add fp, sp, #4 95a8: e24dd018 sub sp, sp, #24 95ac: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 95b0: e50b101c str r1, [fp, #-28] ; 0xffffffe4 95b4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 95b8: e50b3008 str r3, [fp, #-8] return ((session->tail + session->capacity) - session->head) % session->capacity; 95bc: e51b3008 ldr r3, [fp, #-8] 95c0: e593200c ldr r2, [r3, #12] 95c4: e51b3008 ldr r3, [fp, #-8] 95c8: e5933004 ldr r3, [r3, #4] 95cc: e0822003 add r2, r2, r3 95d0: e51b3008 ldr r3, [fp, #-8] 95d4: e5933008 ldr r3, [r3, #8] 95d8: e0422003 sub r2, r2, r3 95dc: e51b3008 ldr r3, [fp, #-8] 95e0: e5933004 ldr r3, [r3, #4] 95e4: e1a01003 mov r1, r3 95e8: e1a00002 mov r0, r2 95ec: eb000340 bl a2f4 <__aeabi_idivmod> 95f0: e1a03001 mov r3, r1 95f4: e1a02003 mov r2, r3 if (len > session_used_size(session)) { 95f8: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 95fc: e1520003 cmp r2, r3 9600: aa000001 bge 960c return false; 9604: e3a03000 mov r3, #0 9608: ea000031 b 96d4 960c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9610: e50b300c str r3, [fp, #-12] 9614: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9618: e50b3010 str r3, [fp, #-16] if (((session->head + len) % session->capacity) > session->tail) { 961c: e51b300c ldr r3, [fp, #-12] 9620: e5932008 ldr r2, [r3, #8] 9624: e51b3010 ldr r3, [fp, #-16] 9628: e0822003 add r2, r2, r3 962c: e51b300c ldr r3, [fp, #-12] 9630: e5933004 ldr r3, [r3, #4] 9634: e1a01003 mov r1, r3 9638: e1a00002 mov r0, r2 963c: eb00032c bl a2f4 <__aeabi_idivmod> 9640: e1a03001 mov r3, r1 9644: e1a02003 mov r2, r3 9648: e51b300c ldr r3, [fp, #-12] 964c: e593300c ldr r3, [r3, #12] 9650: e1520003 cmp r2, r3 9654: da000004 ble 966c printf("forward head with too much size\n"); 9658: e30f0484 movw r0, #62596 ; 0xf484 965c: e3400000 movt r0, #0 9660: ebfffc54 bl 87b8 return -1; 9664: e3e03000 mvn r3, #0 9668: ea00000e b 96a8 session->head = (session->head + len) % session->capacity; 966c: e51b300c ldr r3, [fp, #-12] 9670: e5932008 ldr r2, [r3, #8] 9674: e51b3010 ldr r3, [fp, #-16] 9678: e0822003 add r2, r2, r3 967c: e51b300c ldr r3, [fp, #-12] 9680: e5933004 ldr r3, [r3, #4] 9684: e1a01003 mov r1, r3 9688: e1a00002 mov r0, r2 968c: eb000318 bl a2f4 <__aeabi_idivmod> 9690: e1a03001 mov r3, r1 9694: e1a02003 mov r2, r3 9698: e51b300c ldr r3, [fp, #-12] 969c: e5832008 str r2, [r3, #8] return session->head; 96a0: e51b300c ldr r3, [fp, #-12] 96a4: e5933008 ldr r3, [r3, #8] } assert(session_forward_head(session, len) != 1); 96a8: e3530001 cmp r3, #1 96ac: 1a000007 bne 96d0 96b0: e30f34a8 movw r3, #62632 ; 0xf4a8 96b4: e3403000 movt r3, #0 96b8: e30f24dc movw r2, #62684 ; 0xf4dc 96bc: e3402000 movt r2, #0 96c0: e3a01040 mov r1, #64 ; 0x40 96c4: e30f04d0 movw r0, #62672 ; 0xf4d0 96c8: e3400000 movt r0, #0 96cc: eb000311 bl a318 <__assert_func> return true; 96d0: e3a03001 mov r3, #1 } 96d4: e1a00003 mov r0, r3 96d8: e24bd004 sub sp, fp, #4 96dc: e8bd8800 pop {fp, pc} 000096e0 : * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. * See the Mulan PSL v2 for more details. */ #include "simple_service.h" IPC_INTERFACE(Ipc_add, 2, a, b, sizeof(int), sizeof(int)); 96e0: e92d4800 push {fp, lr} 96e4: e28db004 add fp, sp, #4 96e8: e24dd060 sub sp, sp, #96 ; 0x60 96ec: e50b0058 str r0, [fp, #-88] ; 0xffffffa8 96f0: e50b105c str r1, [fp, #-92] ; 0xffffffa4 96f4: e50b2060 str r2, [fp, #-96] ; 0xffffffa0 96f8: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 96fc: e3530000 cmp r3, #0 9700: 1a000001 bne 970c 9704: e3e03000 mvn r3, #0 9708: ea000077 b 98ec 970c: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 9710: e50b3040 str r3, [fp, #-64] ; 0xffffffc0 9714: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 9718: e50b3044 str r3, [fp, #-68] ; 0xffffffbc 971c: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 9720: e50b3048 str r3, [fp, #-72] ; 0xffffffb8 9724: e30f3558 movw r3, #62808 ; 0xf558 9728: e3403000 movt r3, #0 972c: e24b2054 sub r2, fp, #84 ; 0x54 9730: e8930003 ldm r3, {r0, r1} 9734: e8820003 stm r2, {r0, r1} 9738: e24b3054 sub r3, fp, #84 ; 0x54 973c: e1a02003 mov r2, r3 9740: e3a01002 mov r1, #2 9744: e51b0040 ldr r0, [fp, #-64] ; 0xffffffc0 9748: ebfffca5 bl 89e4 974c: e1a03000 mov r3, r0 9750: e50b3008 str r3, [fp, #-8] 9754: e51b3008 ldr r3, [fp, #-8] 9758: e50b3034 str r3, [fp, #-52] ; 0xffffffcc 975c: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 9760: e50b3038 str r3, [fp, #-56] ; 0xffffffc8 9764: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 9768: e50b303c str r3, [fp, #-60] ; 0xffffffc4 976c: e3a03004 mov r3, #4 9770: e51b2038 ldr r2, [fp, #-56] ; 0xffffffc8 9774: e3a01000 mov r1, #0 9778: e51b0034 ldr r0, [fp, #-52] ; 0xffffffcc 977c: ebfffd05 bl 8b98 9780: e3a03004 mov r3, #4 9784: e51b203c ldr r2, [fp, #-60] ; 0xffffffc4 9788: e3a01001 mov r1, #1 978c: e51b0034 ldr r0, [fp, #-52] ; 0xffffffcc 9790: ebfffd00 bl 8b98 9794: e3a03001 mov r3, #1 9798: e50b300c str r3, [fp, #-12] 979c: e51b3008 ldr r3, [fp, #-8] 97a0: e50b302c str r3, [fp, #-44] ; 0xffffffd4 97a4: e3a03001 mov r3, #1 97a8: e50b3030 str r3, [fp, #-48] ; 0xffffffd0 /// @param msg /// @param opcode /// @return __attribute__((__always_inline__)) static inline bool ipc_msg_set_opcode(struct IpcMsg* msg, int opcode) { if (opcode < 0 || opcode > UINT8_MAX) { 97ac: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 97b0: e3530000 cmp r3, #0 97b4: ba000002 blt 97c4 97b8: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 97bc: e35300ff cmp r3, #255 ; 0xff 97c0: da000001 ble 97cc return false; 97c4: e3a03000 mov r3, #0 97c8: ea000004 b 97e0 } msg->header.opcode = opcode; 97cc: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 97d0: e6ef2073 uxtb r2, r3 97d4: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 97d8: e5c32001 strb r2, [r3, #1] return true; 97dc: e3a03001 mov r3, #1 97e0: e50b300c str r3, [fp, #-12] 97e4: e51b0008 ldr r0, [fp, #-8] 97e8: ebfffd72 bl 8db8 97ec: e51b3008 ldr r3, [fp, #-8] 97f0: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 97f4: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 97f8: e50b3024 str r3, [fp, #-36] ; 0xffffffdc 97fc: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 9800: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 9804: e3a03004 mov r3, #4 9808: e51b2024 ldr r2, [fp, #-36] ; 0xffffffdc 980c: e3a01000 mov r1, #0 9810: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 9814: ebfffd27 bl 8cb8 9818: e3a03004 mov r3, #4 981c: e51b2028 ldr r2, [fp, #-40] ; 0xffffffd8 9820: e3a01001 mov r1, #1 9824: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 9828: ebfffd22 bl 8cb8 982c: e3a03001 mov r3, #1 9830: e50b300c str r3, [fp, #-12] 9834: e3a03000 mov r3, #0 9838: e50b304c str r3, [fp, #-76] ; 0xffffffb4 983c: e51b3008 ldr r3, [fp, #-8] 9840: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 9844: e24b304c sub r3, fp, #76 ; 0x4c 9848: e50b301c str r3, [fp, #-28] ; 0xffffffe4 assert(msg->header.done == 1); 984c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9850: e5d33000 ldrb r3, [r3] 9854: e2033002 and r3, r3, #2 9858: e6ef3073 uxtb r3, r3 985c: e3530000 cmp r3, #0 9860: 1a000007 bne 9884 9864: e30f34f0 movw r3, #62704 ; 0xf4f0 9868: e3403000 movt r3, #0 986c: e30f2560 movw r2, #62816 ; 0xf560 9870: e3402000 movt r2, #0 9874: e3a01074 mov r1, #116 ; 0x74 9878: e30f0508 movw r0, #62728 ; 0xf508 987c: e3400000 movt r0, #0 9880: eb0002a4 bl a318 <__assert_func> memcpy(ret_val, &msg->header.ret_val, sizeof(msg->header.ret_val)); 9884: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9888: e2833008 add r3, r3, #8 988c: e3a02004 mov r2, #4 9890: e1a01003 mov r1, r3 9894: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 9898: eb0002f2 bl a468 989c: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 98a0: e50b3010 str r3, [fp, #-16] /// @brief delete first msg in session /// @param session /// @return __attribute__((__always_inline__)) static inline bool ipc_session_forward(struct Session* session) { struct IpcMsg* msg = IPCSESSION_MSG(session); 98a4: e51b3010 ldr r3, [fp, #-16] 98a8: e5933010 ldr r3, [r3, #16] 98ac: e51b2010 ldr r2, [fp, #-16] 98b0: e5922008 ldr r2, [r2, #8] 98b4: e0833002 add r3, r3, r2 98b8: e50b3014 str r3, [fp, #-20] ; 0xffffffec if (msg->header.init != 1) { 98bc: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 98c0: e5d33000 ldrb r3, [r3] 98c4: e2033004 and r3, r3, #4 98c8: e6ef3073 uxtb r3, r3 98cc: e3530000 cmp r3, #0 98d0: 0a000004 beq 98e8 return false; } return session_free_buf(session, msg->header.len); 98d4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 98d8: e1d330b2 ldrh r3, [r3, #2] 98dc: e1a01003 mov r1, r3 98e0: e51b0010 ldr r0, [fp, #-16] 98e4: ebffff2d bl 95a0 98e8: e51b304c ldr r3, [fp, #-76] ; 0xffffffb4 98ec: e1a00003 mov r0, r3 98f0: e24bd004 sub sp, fp, #4 98f4: e8bd8800 pop {fp, pc} 000098f8 : int add(struct Session* session, int a, int b) { 98f8: e92d4800 push {fp, lr} 98fc: e28db004 add fp, sp, #4 9900: e24dd010 sub sp, sp, #16 9904: e50b0008 str r0, [fp, #-8] 9908: e50b100c str r1, [fp, #-12] 990c: e50b2010 str r2, [fp, #-16] return IPC_CALL(Ipc_add)(session, &a, &b); 9910: e24b2010 sub r2, fp, #16 9914: e24b300c sub r3, fp, #12 9918: e1a01003 mov r1, r3 991c: e51b0008 ldr r0, [fp, #-8] 9920: ebffff6e bl 96e0 9924: e1a03000 mov r3, r0 } 9928: e1a00003 mov r0, r3 992c: e24bd004 sub sp, fp, #4 9930: e8bd8800 pop {fp, pc} 00009934 : IPC_INTERFACE(Ipc_hello_string, 2, buf, len, *(int*)len, sizeof(int)); 9934: e92d4800 push {fp, lr} 9938: e28db004 add fp, sp, #4 993c: e24dd060 sub sp, sp, #96 ; 0x60 9940: e50b0058 str r0, [fp, #-88] ; 0xffffffa8 9944: e50b105c str r1, [fp, #-92] ; 0xffffffa4 9948: e50b2060 str r2, [fp, #-96] ; 0xffffffa0 994c: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 9950: e3530000 cmp r3, #0 9954: 1a000001 bne 9960 9958: e3e03000 mvn r3, #0 995c: ea000079 b 9b48 9960: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 9964: e50b3040 str r3, [fp, #-64] ; 0xffffffc0 9968: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 996c: e50b3044 str r3, [fp, #-68] ; 0xffffffbc 9970: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 9974: e50b3048 str r3, [fp, #-72] ; 0xffffffb8 9978: e51b3048 ldr r3, [fp, #-72] ; 0xffffffb8 997c: e5933000 ldr r3, [r3] 9980: e50b3054 str r3, [fp, #-84] ; 0xffffffac 9984: e3a03004 mov r3, #4 9988: e50b3050 str r3, [fp, #-80] ; 0xffffffb0 998c: e24b3054 sub r3, fp, #84 ; 0x54 9990: e1a02003 mov r2, r3 9994: e3a01002 mov r1, #2 9998: e51b0040 ldr r0, [fp, #-64] ; 0xffffffc0 999c: ebfffc10 bl 89e4 99a0: e1a03000 mov r3, r0 99a4: e50b3008 str r3, [fp, #-8] 99a8: e51b3008 ldr r3, [fp, #-8] 99ac: e50b3034 str r3, [fp, #-52] ; 0xffffffcc 99b0: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 99b4: e50b3038 str r3, [fp, #-56] ; 0xffffffc8 99b8: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 99bc: e50b303c str r3, [fp, #-60] ; 0xffffffc4 99c0: e51b303c ldr r3, [fp, #-60] ; 0xffffffc4 99c4: e5933000 ldr r3, [r3] 99c8: e51b2038 ldr r2, [fp, #-56] ; 0xffffffc8 99cc: e3a01000 mov r1, #0 99d0: e51b0034 ldr r0, [fp, #-52] ; 0xffffffcc 99d4: ebfffc6f bl 8b98 99d8: e3a03004 mov r3, #4 99dc: e51b203c ldr r2, [fp, #-60] ; 0xffffffc4 99e0: e3a01001 mov r1, #1 99e4: e51b0034 ldr r0, [fp, #-52] ; 0xffffffcc 99e8: ebfffc6a bl 8b98 99ec: e3a03001 mov r3, #1 99f0: e50b300c str r3, [fp, #-12] 99f4: e51b3008 ldr r3, [fp, #-8] 99f8: e50b302c str r3, [fp, #-44] ; 0xffffffd4 99fc: e3a03002 mov r3, #2 9a00: e50b3030 str r3, [fp, #-48] ; 0xffffffd0 if (opcode < 0 || opcode > UINT8_MAX) { 9a04: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 9a08: e3530000 cmp r3, #0 9a0c: ba000002 blt 9a1c 9a10: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 9a14: e35300ff cmp r3, #255 ; 0xff 9a18: da000001 ble 9a24 return false; 9a1c: e3a03000 mov r3, #0 9a20: ea000004 b 9a38 msg->header.opcode = opcode; 9a24: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0 9a28: e6ef2073 uxtb r2, r3 9a2c: e51b302c ldr r3, [fp, #-44] ; 0xffffffd4 9a30: e5c32001 strb r2, [r3, #1] return true; 9a34: e3a03001 mov r3, #1 9a38: e50b300c str r3, [fp, #-12] 9a3c: e51b0008 ldr r0, [fp, #-8] 9a40: ebfffcdc bl 8db8 9a44: e51b3008 ldr r3, [fp, #-8] 9a48: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 9a4c: e51b305c ldr r3, [fp, #-92] ; 0xffffffa4 9a50: e50b3024 str r3, [fp, #-36] ; 0xffffffdc 9a54: e51b3060 ldr r3, [fp, #-96] ; 0xffffffa0 9a58: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 9a5c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8 9a60: e5933000 ldr r3, [r3] 9a64: e51b2024 ldr r2, [fp, #-36] ; 0xffffffdc 9a68: e3a01000 mov r1, #0 9a6c: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 9a70: ebfffc90 bl 8cb8 9a74: e3a03004 mov r3, #4 9a78: e51b2028 ldr r2, [fp, #-40] ; 0xffffffd8 9a7c: e3a01001 mov r1, #1 9a80: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 9a84: ebfffc8b bl 8cb8 9a88: e3a03001 mov r3, #1 9a8c: e50b300c str r3, [fp, #-12] 9a90: e3a03000 mov r3, #0 9a94: e50b304c str r3, [fp, #-76] ; 0xffffffb4 9a98: e51b3008 ldr r3, [fp, #-8] 9a9c: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 9aa0: e24b304c sub r3, fp, #76 ; 0x4c 9aa4: e50b301c str r3, [fp, #-28] ; 0xffffffe4 assert(msg->header.done == 1); 9aa8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9aac: e5d33000 ldrb r3, [r3] 9ab0: e2033002 and r3, r3, #2 9ab4: e6ef3073 uxtb r3, r3 9ab8: e3530000 cmp r3, #0 9abc: 1a000007 bne 9ae0 9ac0: e30f34f0 movw r3, #62704 ; 0xf4f0 9ac4: e3403000 movt r3, #0 9ac8: e30f2560 movw r2, #62816 ; 0xf560 9acc: e3402000 movt r2, #0 9ad0: e3a01074 mov r1, #116 ; 0x74 9ad4: e30f0508 movw r0, #62728 ; 0xf508 9ad8: e3400000 movt r0, #0 9adc: eb00020d bl a318 <__assert_func> memcpy(ret_val, &msg->header.ret_val, sizeof(msg->header.ret_val)); 9ae0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9ae4: e2833008 add r3, r3, #8 9ae8: e3a02004 mov r2, #4 9aec: e1a01003 mov r1, r3 9af0: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 9af4: eb00025b bl a468 9af8: e51b3058 ldr r3, [fp, #-88] ; 0xffffffa8 9afc: e50b3010 str r3, [fp, #-16] struct IpcMsg* msg = IPCSESSION_MSG(session); 9b00: e51b3010 ldr r3, [fp, #-16] 9b04: e5933010 ldr r3, [r3, #16] 9b08: e51b2010 ldr r2, [fp, #-16] 9b0c: e5922008 ldr r2, [r2, #8] 9b10: e0833002 add r3, r3, r2 9b14: e50b3014 str r3, [fp, #-20] ; 0xffffffec if (msg->header.init != 1) { 9b18: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9b1c: e5d33000 ldrb r3, [r3] 9b20: e2033004 and r3, r3, #4 9b24: e6ef3073 uxtb r3, r3 9b28: e3530000 cmp r3, #0 9b2c: 0a000004 beq 9b44 return session_free_buf(session, msg->header.len); 9b30: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9b34: e1d330b2 ldrh r3, [r3, #2] 9b38: e1a01003 mov r1, r3 9b3c: e51b0010 ldr r0, [fp, #-16] 9b40: ebfffe96 bl 95a0 9b44: e51b304c ldr r3, [fp, #-76] ; 0xffffffb4 9b48: e1a00003 mov r0, r3 9b4c: e24bd004 sub sp, fp, #4 9b50: e8bd8800 pop {fp, pc} 00009b54 : int hello_string(struct Session* session, char* buf, int len) { 9b54: e92d4800 push {fp, lr} 9b58: e28db004 add fp, sp, #4 9b5c: e24dd010 sub sp, sp, #16 9b60: e50b0008 str r0, [fp, #-8] 9b64: e50b100c str r1, [fp, #-12] 9b68: e50b2010 str r2, [fp, #-16] return IPC_CALL(Ipc_hello_string)(session, buf, &len); 9b6c: e24b3010 sub r3, fp, #16 9b70: e1a02003 mov r2, r3 9b74: e51b100c ldr r1, [fp, #-12] 9b78: e51b0008 ldr r0, [fp, #-8] 9b7c: ebffff6c bl 9934 9b80: e1a03000 mov r3, r0 } 9b84: e1a00003 mov r0, r3 9b88: e24bd004 sub sp, fp, #4 9b8c: e8bd8800 pop {fp, pc} 00009b90 : struct IpcMsg* hello_string_nowait(struct Session* session, char** buf, int len) { 9b90: e92d4800 push {fp, lr} 9b94: e28db004 add fp, sp, #4 9b98: e24dd038 sub sp, sp, #56 ; 0x38 9b9c: e50b0030 str r0, [fp, #-48] ; 0xffffffd0 9ba0: e50b1034 str r1, [fp, #-52] ; 0xffffffcc 9ba4: e50b2038 str r2, [fp, #-56] ; 0xffffffc8 struct IpcMsg* msg = IPC_CREATE_MSG_FUNC(Ipc_hello_string)(session, *buf, &len); 9ba8: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 9bac: e5933000 ldr r3, [r3] 9bb0: e51b2030 ldr r2, [fp, #-48] ; 0xffffffd0 9bb4: e50b201c str r2, [fp, #-28] ; 0xffffffe4 9bb8: e50b3020 str r3, [fp, #-32] ; 0xffffffe0 9bbc: e24b3038 sub r3, fp, #56 ; 0x38 9bc0: e50b3024 str r3, [fp, #-36] ; 0xffffffdc IPC_INTERFACE(Ipc_hello_string, 2, buf, len, *(int*)len, sizeof(int)); 9bc4: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc 9bc8: e5933000 ldr r3, [r3] 9bcc: e50b302c str r3, [fp, #-44] ; 0xffffffd4 9bd0: e3a03004 mov r3, #4 9bd4: e50b3028 str r3, [fp, #-40] ; 0xffffffd8 9bd8: e24b302c sub r3, fp, #44 ; 0x2c 9bdc: e1a02003 mov r2, r3 9be0: e3a01002 mov r1, #2 9be4: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 9be8: ebfffb7d bl 89e4 9bec: e1a03000 mov r3, r0 struct IpcMsg* msg = IPC_CREATE_MSG_FUNC(Ipc_hello_string)(session, *buf, &len); 9bf0: e50b3008 str r3, [fp, #-8] 9bf4: e51b3008 ldr r3, [fp, #-8] 9bf8: e50b3014 str r3, [fp, #-20] ; 0xffffffec 9bfc: e3a03000 mov r3, #0 9c00: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 return (void*)((char*)msg + IPCMSG_ARG_INFO(msg, arg_num)->offset); 9c04: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9c08: e2833003 add r3, r3, #3 9c0c: e1a03103 lsl r3, r3, #2 9c10: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec 9c14: e0823003 add r3, r2, r3 9c18: e1d330b0 ldrh r3, [r3] 9c1c: e1a02003 mov r2, r3 9c20: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec 9c24: e0832002 add r2, r3, r2 *buf = ipc_msg_get_nth_arg_buf(msg, 0); 9c28: e51b3034 ldr r3, [fp, #-52] ; 0xffffffcc 9c2c: e5832000 str r2, [r3] ipc_msg_set_nth_arg(msg, 1, &len, sizeof(int)); 9c30: e24b2038 sub r2, fp, #56 ; 0x38 9c34: e3a03004 mov r3, #4 9c38: e3a01001 mov r1, #1 9c3c: e51b0008 ldr r0, [fp, #-8] 9c40: ebfffbd4 bl 8b98 9c44: e51b3008 ldr r3, [fp, #-8] 9c48: e50b300c str r3, [fp, #-12] 9c4c: e3a03002 mov r3, #2 9c50: e50b3010 str r3, [fp, #-16] if (opcode < 0 || opcode > UINT8_MAX) { 9c54: e51b3010 ldr r3, [fp, #-16] 9c58: e3530000 cmp r3, #0 9c5c: ba000006 blt 9c7c 9c60: e51b3010 ldr r3, [fp, #-16] 9c64: e35300ff cmp r3, #255 ; 0xff 9c68: ca000003 bgt 9c7c msg->header.opcode = opcode; 9c6c: e51b3010 ldr r3, [fp, #-16] 9c70: e6ef2073 uxtb r2, r3 9c74: e51b300c ldr r3, [fp, #-12] 9c78: e5c32001 strb r2, [r3, #1] ipc_msg_set_opcode(msg, Ipc_hello_string); ipc_msg_send_nowait(msg); 9c7c: e51b0008 ldr r0, [fp, #-8] 9c80: ebfffc75 bl 8e5c return msg; 9c84: e51b3008 ldr r3, [fp, #-8] } 9c88: e1a00003 mov r0, r3 9c8c: e24bd004 sub sp, fp, #4 9c90: e8bd8800 pop {fp, pc} 00009c94 : */ #include "usyscall.h" static int syscall(int sys_num, intptr_t a1, intptr_t a2, intptr_t a3, intptr_t a4) { 9c94: e92d48f0 push {r4, r5, r6, r7, fp, lr} 9c98: e28db014 add fp, sp, #20 9c9c: e24dd018 sub sp, sp, #24 9ca0: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 9ca4: e50b1024 str r1, [fp, #-36] ; 0xffffffdc 9ca8: e50b2028 str r2, [fp, #-40] ; 0xffffffd8 9cac: e50b302c str r3, [fp, #-44] ; 0xffffffd4 int ret = -1; 9cb0: e3e03000 mvn r3, #0 9cb4: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 __asm__ volatile( 9cb8: e51bc020 ldr ip, [fp, #-32] ; 0xffffffe0 9cbc: e51be024 ldr lr, [fp, #-36] ; 0xffffffdc 9cc0: e51b5028 ldr r5, [fp, #-40] ; 0xffffffd8 9cc4: e51b602c ldr r6, [fp, #-44] ; 0xffffffd4 9cc8: e59b7004 ldr r7, [fp, #4] 9ccc: e1a0000c mov r0, ip 9cd0: e1a0100e mov r1, lr 9cd4: e1a02005 mov r2, r5 9cd8: e1a03006 mov r3, r6 9cdc: e1a04007 mov r4, r7 9ce0: ef000000 svc 0x00000000 9ce4: f57ff04f dsb sy 9ce8: f57ff06f isb sy 9cec: e1a0c000 mov ip, r0 9cf0: e50bc018 str ip, [fp, #-24] ; 0xffffffe8 mov %0, r0" : "=r"(ret) : "r"(sys_num), "r"(a1), "r"(a2), "r"(a3), "r"(a4) : "memory", "r0", "r1", "r2", "r3", "r4"); return ret; 9cf4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 } 9cf8: e1a00003 mov r0, r3 9cfc: e24bd014 sub sp, fp, #20 9d00: e8bd88f0 pop {r4, r5, r6, r7, fp, pc} 00009d04 : int spawn(struct Session* session, int fd, ipc_read_fn ipc_read, char* name, char** argv) { 9d04: e92d4800 push {fp, lr} 9d08: e28db004 add fp, sp, #4 9d0c: e24dd028 sub sp, sp, #40 ; 0x28 9d10: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 9d14: e50b101c str r1, [fp, #-28] ; 0xffffffe4 9d18: e50b2020 str r2, [fp, #-32] ; 0xffffffe0 9d1c: e50b3024 str r3, [fp, #-36] ; 0xffffffdc struct KernReadTool read_tool = { 9d20: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8 9d24: e50b3010 str r3, [fp, #-16] 9d28: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4 9d2c: e50b300c str r3, [fp, #-12] 9d30: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0 9d34: e50b3008 str r3, [fp, #-8] .session = session, .fd = fd, .ipc_read = ipc_read, }; return syscall(SYSCALL_SPAWN, (intptr_t)&read_tool, (intptr_t)name, (intptr_t)argv, 0); 9d38: e24b1010 sub r1, fp, #16 9d3c: e51b2024 ldr r2, [fp, #-36] ; 0xffffffdc 9d40: e59b0004 ldr r0, [fp, #4] 9d44: e3a03000 mov r3, #0 9d48: e58d3000 str r3, [sp] 9d4c: e1a03000 mov r3, r0 9d50: e3a00001 mov r0, #1 9d54: ebffffce bl 9c94 9d58: e1a03000 mov r3, r0 } 9d5c: e1a00003 mov r0, r3 9d60: e24bd004 sub sp, fp, #4 9d64: e8bd8800 pop {fp, pc} 00009d68 : int exit() { 9d68: e92d4800 push {fp, lr} 9d6c: e28db004 add fp, sp, #4 9d70: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_EXIT, 0, 0, 0, 0); 9d74: e3a03000 mov r3, #0 9d78: e58d3000 str r3, [sp] 9d7c: e3a03000 mov r3, #0 9d80: e3a02000 mov r2, #0 9d84: e3a01000 mov r1, #0 9d88: e3a00002 mov r0, #2 9d8c: ebffffc0 bl 9c94 9d90: e1a03000 mov r3, r0 } 9d94: e1a00003 mov r0, r3 9d98: e24bd004 sub sp, fp, #4 9d9c: e8bd8800 pop {fp, pc} 00009da0 : int yield() { 9da0: e92d4800 push {fp, lr} 9da4: e28db004 add fp, sp, #4 9da8: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_YIELD, 0, 0, 0, 0); 9dac: e3a03000 mov r3, #0 9db0: e58d3000 str r3, [sp] 9db4: e3a03000 mov r3, #0 9db8: e3a02000 mov r2, #0 9dbc: e3a01000 mov r1, #0 9dc0: e3a00003 mov r0, #3 9dc4: ebffffb2 bl 9c94 9dc8: e1a03000 mov r3, r0 } 9dcc: e1a00003 mov r0, r3 9dd0: e24bd004 sub sp, fp, #4 9dd4: e8bd8800 pop {fp, pc} 00009dd8 : int register_server(char* name) { 9dd8: e92d4800 push {fp, lr} 9ddc: e28db004 add fp, sp, #4 9de0: e24dd010 sub sp, sp, #16 9de4: e50b0008 str r0, [fp, #-8] return syscall(SYSCALL_SERVER, (intptr_t)name, 0, 0, 0); 9de8: e51b1008 ldr r1, [fp, #-8] 9dec: e3a03000 mov r3, #0 9df0: e58d3000 str r3, [sp] 9df4: e3a03000 mov r3, #0 9df8: e3a02000 mov r2, #0 9dfc: e3a00005 mov r0, #5 9e00: ebffffa3 bl 9c94 9e04: e1a03000 mov r3, r0 } 9e08: e1a00003 mov r0, r3 9e0c: e24bd004 sub sp, fp, #4 9e10: e8bd8800 pop {fp, pc} 00009e14 : int session(char* path, int capacity, struct Session* user_session) { 9e14: e92d4800 push {fp, lr} 9e18: e28db004 add fp, sp, #4 9e1c: e24dd018 sub sp, sp, #24 9e20: e50b0008 str r0, [fp, #-8] 9e24: e50b100c str r1, [fp, #-12] 9e28: e50b2010 str r2, [fp, #-16] return syscall(SYSCALL_SESSION, (intptr_t)path, (intptr_t)capacity, (intptr_t)user_session, 0); 9e2c: e51b1008 ldr r1, [fp, #-8] 9e30: e51b2010 ldr r2, [fp, #-16] 9e34: e3a03000 mov r3, #0 9e38: e58d3000 str r3, [sp] 9e3c: e1a03002 mov r3, r2 9e40: e51b200c ldr r2, [fp, #-12] 9e44: e3a00006 mov r0, #6 9e48: ebffff91 bl 9c94 9e4c: e1a03000 mov r3, r0 } 9e50: e1a00003 mov r0, r3 9e54: e24bd004 sub sp, fp, #4 9e58: e8bd8800 pop {fp, pc} 00009e5c : int poll_session(struct Session* userland_session_arr, int arr_capacity) { 9e5c: e92d4800 push {fp, lr} 9e60: e28db004 add fp, sp, #4 9e64: e24dd010 sub sp, sp, #16 9e68: e50b0008 str r0, [fp, #-8] 9e6c: e50b100c str r1, [fp, #-12] return syscall(SYSCALL_POLL_SESSION, (intptr_t)userland_session_arr, (intptr_t)arr_capacity, 0, 0); 9e70: e51b1008 ldr r1, [fp, #-8] 9e74: e3a03000 mov r3, #0 9e78: e58d3000 str r3, [sp] 9e7c: e3a03000 mov r3, #0 9e80: e51b200c ldr r2, [fp, #-12] 9e84: e3a00007 mov r0, #7 9e88: ebffff81 bl 9c94 9e8c: e1a03000 mov r3, r0 } 9e90: e1a00003 mov r0, r3 9e94: e24bd004 sub sp, fp, #4 9e98: e8bd8800 pop {fp, pc} 00009e9c : int close_session(struct Session* session) { 9e9c: e92d4800 push {fp, lr} 9ea0: e28db004 add fp, sp, #4 9ea4: e24dd010 sub sp, sp, #16 9ea8: e50b0008 str r0, [fp, #-8] return syscall(SYSCALL_CLOSE_SESSION, (intptr_t)session, 0, 0, 0); 9eac: e51b1008 ldr r1, [fp, #-8] 9eb0: e3a03000 mov r3, #0 9eb4: e58d3000 str r3, [sp] 9eb8: e3a03000 mov r3, #0 9ebc: e3a02000 mov r2, #0 9ec0: e3a00008 mov r0, #8 9ec4: ebffff72 bl 9c94 9ec8: e1a03000 mov r3, r0 } 9ecc: e1a00003 mov r0, r3 9ed0: e24bd004 sub sp, fp, #4 9ed4: e8bd8800 pop {fp, pc} 00009ed8 : int get_memblock_info(sys_state_info* info) { 9ed8: e92d4800 push {fp, lr} 9edc: e28db004 add fp, sp, #4 9ee0: e24dd010 sub sp, sp, #16 9ee4: e50b0008 str r0, [fp, #-8] return syscall(SYSCALL_SYS_STATE, SYS_STATE_MEMBLOCK_INFO, (intptr_t)info, 0, 0); 9ee8: e51b2008 ldr r2, [fp, #-8] 9eec: e3a03000 mov r3, #0 9ef0: e58d3000 str r3, [sp] 9ef4: e3a03000 mov r3, #0 9ef8: e3a01003 mov r1, #3 9efc: e3a0000a mov r0, #10 9f00: ebffff63 bl 9c94 9f04: e1a03000 mov r3, r0 } 9f08: e1a00003 mov r0, r3 9f0c: e24bd004 sub sp, fp, #4 9f10: e8bd8800 pop {fp, pc} 00009f14 : int set_priority(sys_state_info* info) { 9f14: e92d4800 push {fp, lr} 9f18: e28db004 add fp, sp, #4 9f1c: e24dd010 sub sp, sp, #16 9f20: e50b0008 str r0, [fp, #-8] return syscall(SYSCALL_SYS_STATE, SYS_STATE_SET_TASK_PRIORITY, (intptr_t)info, 0, 0); 9f24: e51b2008 ldr r2, [fp, #-8] 9f28: e3a03000 mov r3, #0 9f2c: e58d3000 str r3, [sp] 9f30: e3a03000 mov r3, #0 9f34: e3a01001 mov r1, #1 9f38: e3a0000a mov r0, #10 9f3c: ebffff54 bl 9c94 9f40: e1a03000 mov r3, r0 } 9f44: e1a00003 mov r0, r3 9f48: e24bd004 sub sp, fp, #4 9f4c: e8bd8800 pop {fp, pc} 00009f50 : int task_heap_base() { 9f50: e92d4800 push {fp, lr} 9f54: e28db004 add fp, sp, #4 9f58: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_SYS_STATE, SYS_STATE_GET_HEAP_BASE, 0, 0, 0); 9f5c: e3a03000 mov r3, #0 9f60: e58d3000 str r3, [sp] 9f64: e3a03000 mov r3, #0 9f68: e3a02000 mov r2, #0 9f6c: e3a01002 mov r1, #2 9f70: e3a0000a mov r0, #10 9f74: ebffff46 bl 9c94 9f78: e1a03000 mov r3, r0 } 9f7c: e1a00003 mov r0, r3 9f80: e24bd004 sub sp, fp, #4 9f84: e8bd8800 pop {fp, pc} 00009f88 : int show_task() { 9f88: e92d4800 push {fp, lr} 9f8c: e28db004 add fp, sp, #4 9f90: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_SYS_STATE, SYS_STATE_SHOW_TASKS, 0, 0, 0); 9f94: e3a03000 mov r3, #0 9f98: e58d3000 str r3, [sp] 9f9c: e3a03000 mov r3, #0 9fa0: e3a02000 mov r2, #0 9fa4: e3a01004 mov r1, #4 9fa8: e3a0000a mov r0, #10 9fac: ebffff38 bl 9c94 9fb0: e1a03000 mov r3, r0 } 9fb4: e1a00003 mov r0, r3 9fb8: e24bd004 sub sp, fp, #4 9fbc: e8bd8800 pop {fp, pc} 00009fc0 : int show_mem() { 9fc0: e92d4800 push {fp, lr} 9fc4: e28db004 add fp, sp, #4 9fc8: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_SYS_STATE, SYS_STATE_SHOW_MEM_INFO, 0, 0, 0); 9fcc: e3a03000 mov r3, #0 9fd0: e58d3000 str r3, [sp] 9fd4: e3a03000 mov r3, #0 9fd8: e3a02000 mov r2, #0 9fdc: e3a01005 mov r1, #5 9fe0: e3a0000a mov r0, #10 9fe4: ebffff2a bl 9c94 9fe8: e1a03000 mov r3, r0 } 9fec: e1a00003 mov r0, r3 9ff0: e24bd004 sub sp, fp, #4 9ff4: e8bd8800 pop {fp, pc} 00009ff8 : int show_cpu() { 9ff8: e92d4800 push {fp, lr} 9ffc: e28db004 add fp, sp, #4 a000: e24dd008 sub sp, sp, #8 return syscall(SYSCALL_SYS_STATE, SYS_STATE_SHOW_CPU_INFO, 0, 0, 0); a004: e3a03000 mov r3, #0 a008: e58d3000 str r3, [sp] a00c: e3a03000 mov r3, #0 a010: e3a02000 mov r2, #0 a014: e3a01006 mov r1, #6 a018: e3a0000a mov r0, #10 a01c: ebffff1c bl 9c94 a020: e1a03000 mov r3, r0 } a024: e1a00003 mov r0, r3 a028: e24bd004 sub sp, fp, #4 a02c: e8bd8800 pop {fp, pc} 0000a030 : int mmap(uintptr_t vaddr, uintptr_t paddr, int len, bool is_dev) { a030: e92d4800 push {fp, lr} a034: e28db004 add fp, sp, #4 a038: e24dd018 sub sp, sp, #24 a03c: e50b0008 str r0, [fp, #-8] a040: e50b100c str r1, [fp, #-12] a044: e50b2010 str r2, [fp, #-16] a048: e54b3011 strb r3, [fp, #-17] ; 0xffffffef return syscall(SYSCALL_MMAP, vaddr, paddr, (intptr_t)len, (intptr_t)is_dev); a04c: e51b1008 ldr r1, [fp, #-8] a050: e51b200c ldr r2, [fp, #-12] a054: e55b3011 ldrb r3, [fp, #-17] ; 0xffffffef a058: e58d3000 str r3, [sp] a05c: e51b3010 ldr r3, [fp, #-16] a060: e3a00004 mov r0, #4 a064: ebffff0a bl 9c94 a068: e1a03000 mov r3, r0 } a06c: e1a00003 mov r0, r3 a070: e24bd004 sub sp, fp, #4 a074: e8bd8800 pop {fp, pc} 0000a078 : int register_irq(int irq, int opcode) { a078: e92d4800 push {fp, lr} a07c: e28db004 add fp, sp, #4 a080: e24dd010 sub sp, sp, #16 a084: e50b0008 str r0, [fp, #-8] a088: e50b100c str r1, [fp, #-12] return syscall(SYSCALL_REGISTER_IRQ, (intptr_t)irq, (intptr_t)opcode, 0, 0); a08c: e3a03000 mov r3, #0 a090: e58d3000 str r3, [sp] a094: e3a03000 mov r3, #0 a098: e51b200c ldr r2, [fp, #-12] a09c: e51b1008 ldr r1, [fp, #-8] a0a0: e3a0000b mov r0, #11 a0a4: ebfffefa bl 9c94 a0a8: e1a03000 mov r3, r0 a0ac: e1a00003 mov r0, r3 a0b0: e24bd004 sub sp, fp, #4 a0b4: e8bd8800 pop {fp, pc} 0000a0b8 <__udivsi3>: a0b8: e2512001 subs r2, r1, #1 a0bc: 012fff1e bxeq lr a0c0: 3a000036 bcc a1a0 <__udivsi3+0xe8> a0c4: e1500001 cmp r0, r1 a0c8: 9a000022 bls a158 <__udivsi3+0xa0> a0cc: e1110002 tst r1, r2 a0d0: 0a000023 beq a164 <__udivsi3+0xac> a0d4: e311020e tst r1, #-536870912 ; 0xe0000000 a0d8: 01a01181 lsleq r1, r1, #3 a0dc: 03a03008 moveq r3, #8 a0e0: 13a03001 movne r3, #1 a0e4: e3510201 cmp r1, #268435456 ; 0x10000000 a0e8: 31510000 cmpcc r1, r0 a0ec: 31a01201 lslcc r1, r1, #4 a0f0: 31a03203 lslcc r3, r3, #4 a0f4: 3afffffa bcc a0e4 <__udivsi3+0x2c> a0f8: e3510102 cmp r1, #-2147483648 ; 0x80000000 a0fc: 31510000 cmpcc r1, r0 a100: 31a01081 lslcc r1, r1, #1 a104: 31a03083 lslcc r3, r3, #1 a108: 3afffffa bcc a0f8 <__udivsi3+0x40> a10c: e3a02000 mov r2, #0 a110: e1500001 cmp r0, r1 a114: 20400001 subcs r0, r0, r1 a118: 21822003 orrcs r2, r2, r3 a11c: e15000a1 cmp r0, r1, lsr #1 a120: 204000a1 subcs r0, r0, r1, lsr #1 a124: 218220a3 orrcs r2, r2, r3, lsr #1 a128: e1500121 cmp r0, r1, lsr #2 a12c: 20400121 subcs r0, r0, r1, lsr #2 a130: 21822123 orrcs r2, r2, r3, lsr #2 a134: e15001a1 cmp r0, r1, lsr #3 a138: 204001a1 subcs r0, r0, r1, lsr #3 a13c: 218221a3 orrcs r2, r2, r3, lsr #3 a140: e3500000 cmp r0, #0 a144: 11b03223 lsrsne r3, r3, #4 a148: 11a01221 lsrne r1, r1, #4 a14c: 1affffef bne a110 <__udivsi3+0x58> a150: e1a00002 mov r0, r2 a154: e12fff1e bx lr a158: 03a00001 moveq r0, #1 a15c: 13a00000 movne r0, #0 a160: e12fff1e bx lr a164: e3510801 cmp r1, #65536 ; 0x10000 a168: 21a01821 lsrcs r1, r1, #16 a16c: 23a02010 movcs r2, #16 a170: 33a02000 movcc r2, #0 a174: e3510c01 cmp r1, #256 ; 0x100 a178: 21a01421 lsrcs r1, r1, #8 a17c: 22822008 addcs r2, r2, #8 a180: e3510010 cmp r1, #16 a184: 21a01221 lsrcs r1, r1, #4 a188: 22822004 addcs r2, r2, #4 a18c: e3510004 cmp r1, #4 a190: 82822003 addhi r2, r2, #3 a194: 908220a1 addls r2, r2, r1, lsr #1 a198: e1a00230 lsr r0, r0, r2 a19c: e12fff1e bx lr a1a0: e3500000 cmp r0, #0 a1a4: 13e00000 mvnne r0, #0 a1a8: ea000059 b a314 <__aeabi_idiv0> 0000a1ac <__aeabi_uidivmod>: a1ac: e3510000 cmp r1, #0 a1b0: 0afffffa beq a1a0 <__udivsi3+0xe8> a1b4: e92d4003 push {r0, r1, lr} a1b8: ebffffbe bl a0b8 <__udivsi3> a1bc: e8bd4006 pop {r1, r2, lr} a1c0: e0030092 mul r3, r2, r0 a1c4: e0411003 sub r1, r1, r3 a1c8: e12fff1e bx lr 0000a1cc <__divsi3>: a1cc: e3510000 cmp r1, #0 a1d0: 0a000043 beq a2e4 <.divsi3_skip_div0_test+0x110> 0000a1d4 <.divsi3_skip_div0_test>: a1d4: e020c001 eor ip, r0, r1 a1d8: 42611000 rsbmi r1, r1, #0 a1dc: e2512001 subs r2, r1, #1 a1e0: 0a000027 beq a284 <.divsi3_skip_div0_test+0xb0> a1e4: e1b03000 movs r3, r0 a1e8: 42603000 rsbmi r3, r0, #0 a1ec: e1530001 cmp r3, r1 a1f0: 9a000026 bls a290 <.divsi3_skip_div0_test+0xbc> a1f4: e1110002 tst r1, r2 a1f8: 0a000028 beq a2a0 <.divsi3_skip_div0_test+0xcc> a1fc: e311020e tst r1, #-536870912 ; 0xe0000000 a200: 01a01181 lsleq r1, r1, #3 a204: 03a02008 moveq r2, #8 a208: 13a02001 movne r2, #1 a20c: e3510201 cmp r1, #268435456 ; 0x10000000 a210: 31510003 cmpcc r1, r3 a214: 31a01201 lslcc r1, r1, #4 a218: 31a02202 lslcc r2, r2, #4 a21c: 3afffffa bcc a20c <.divsi3_skip_div0_test+0x38> a220: e3510102 cmp r1, #-2147483648 ; 0x80000000 a224: 31510003 cmpcc r1, r3 a228: 31a01081 lslcc r1, r1, #1 a22c: 31a02082 lslcc r2, r2, #1 a230: 3afffffa bcc a220 <.divsi3_skip_div0_test+0x4c> a234: e3a00000 mov r0, #0 a238: e1530001 cmp r3, r1 a23c: 20433001 subcs r3, r3, r1 a240: 21800002 orrcs r0, r0, r2 a244: e15300a1 cmp r3, r1, lsr #1 a248: 204330a1 subcs r3, r3, r1, lsr #1 a24c: 218000a2 orrcs r0, r0, r2, lsr #1 a250: e1530121 cmp r3, r1, lsr #2 a254: 20433121 subcs r3, r3, r1, lsr #2 a258: 21800122 orrcs r0, r0, r2, lsr #2 a25c: e15301a1 cmp r3, r1, lsr #3 a260: 204331a1 subcs r3, r3, r1, lsr #3 a264: 218001a2 orrcs r0, r0, r2, lsr #3 a268: e3530000 cmp r3, #0 a26c: 11b02222 lsrsne r2, r2, #4 a270: 11a01221 lsrne r1, r1, #4 a274: 1affffef bne a238 <.divsi3_skip_div0_test+0x64> a278: e35c0000 cmp ip, #0 a27c: 42600000 rsbmi r0, r0, #0 a280: e12fff1e bx lr a284: e13c0000 teq ip, r0 a288: 42600000 rsbmi r0, r0, #0 a28c: e12fff1e bx lr a290: 33a00000 movcc r0, #0 a294: 01a00fcc asreq r0, ip, #31 a298: 03800001 orreq r0, r0, #1 a29c: e12fff1e bx lr a2a0: e3510801 cmp r1, #65536 ; 0x10000 a2a4: 21a01821 lsrcs r1, r1, #16 a2a8: 23a02010 movcs r2, #16 a2ac: 33a02000 movcc r2, #0 a2b0: e3510c01 cmp r1, #256 ; 0x100 a2b4: 21a01421 lsrcs r1, r1, #8 a2b8: 22822008 addcs r2, r2, #8 a2bc: e3510010 cmp r1, #16 a2c0: 21a01221 lsrcs r1, r1, #4 a2c4: 22822004 addcs r2, r2, #4 a2c8: e3510004 cmp r1, #4 a2cc: 82822003 addhi r2, r2, #3 a2d0: 908220a1 addls r2, r2, r1, lsr #1 a2d4: e35c0000 cmp ip, #0 a2d8: e1a00233 lsr r0, r3, r2 a2dc: 42600000 rsbmi r0, r0, #0 a2e0: e12fff1e bx lr a2e4: e3500000 cmp r0, #0 a2e8: c3e00102 mvngt r0, #-2147483648 ; 0x80000000 a2ec: b3a00102 movlt r0, #-2147483648 ; 0x80000000 a2f0: ea000007 b a314 <__aeabi_idiv0> 0000a2f4 <__aeabi_idivmod>: a2f4: e3510000 cmp r1, #0 a2f8: 0afffff9 beq a2e4 <.divsi3_skip_div0_test+0x110> a2fc: e92d4003 push {r0, r1, lr} a300: ebffffb3 bl a1d4 <.divsi3_skip_div0_test> a304: e8bd4006 pop {r1, r2, lr} a308: e0030092 mul r3, r2, r0 a30c: e0411003 sub r1, r1, r3 a310: e12fff1e bx lr 0000a314 <__aeabi_idiv0>: a314: e12fff1e bx lr 0000a318 <__assert_func>: a318: e59fc038 ldr ip, [pc, #56] ; a358 <__assert_func+0x40> a31c: e59c4000 ldr r4, [ip] a320: e252c000 subs ip, r2, #0 a324: e1a02003 mov r2, r3 a328: 059f302c ldreq r3, [pc, #44] ; a35c <__assert_func+0x44> a32c: e52de004 push {lr} ; (str lr, [sp, #-4]!) a330: 01a0c003 moveq ip, r3 a334: e1a0e000 mov lr, r0 a338: 159f3020 ldrne r3, [pc, #32] ; a360 <__assert_func+0x48> a33c: e24dd014 sub sp, sp, #20 a340: e594000c ldr r0, [r4, #12] a344: e88d100a stm sp, {r1, r3, ip} a348: e1a0300e mov r3, lr a34c: e59f1010 ldr r1, [pc, #16] ; a364 <__assert_func+0x4c> a350: eb000014 bl a3a8 a354: eb0006a6 bl bdf4 a358: 0000fb6c .word 0x0000fb6c a35c: 0000f580 .word 0x0000f580 a360: 0000f574 .word 0x0000f574 a364: 0000f584 .word 0x0000f584 0000a368 <__assert>: a368: e1a03002 mov r3, r2 a36c: e92d4010 push {r4, lr} a370: e3a02000 mov r2, #0 a374: ebffffe7 bl a318 <__assert_func> 0000a378 <_fiprintf_r>: a378: e92d000c push {r2, r3} a37c: e52de004 push {lr} ; (str lr, [sp, #-4]!) a380: e24dd00c sub sp, sp, #12 a384: e28dc014 add ip, sp, #20 a388: e1a0300c mov r3, ip a38c: e59d2010 ldr r2, [sp, #16] a390: e58dc004 str ip, [sp, #4] a394: eb000141 bl a8a0 <_vfiprintf_r> a398: e28dd00c add sp, sp, #12 a39c: e49de004 pop {lr} ; (ldr lr, [sp], #4) a3a0: e28dd008 add sp, sp, #8 a3a4: e12fff1e bx lr 0000a3a8 : a3a8: e92d000e push {r1, r2, r3} a3ac: e52de004 push {lr} ; (str lr, [sp, #-4]!) a3b0: e59f202c ldr r2, [pc, #44] ; a3e4 a3b4: e24dd008 sub sp, sp, #8 a3b8: e28dc010 add ip, sp, #16 a3bc: e1a01000 mov r1, r0 a3c0: e1a0300c mov r3, ip a3c4: e5920000 ldr r0, [r2] a3c8: e59d200c ldr r2, [sp, #12] a3cc: e58dc004 str ip, [sp, #4] a3d0: eb000132 bl a8a0 <_vfiprintf_r> a3d4: e28dd008 add sp, sp, #8 a3d8: e49de004 pop {lr} ; (ldr lr, [sp], #4) a3dc: e28dd00c add sp, sp, #12 a3e0: e12fff1e bx lr a3e4: 0000fb6c .word 0x0000fb6c 0000a3e8 <__libc_init_array>: a3e8: e92d4070 push {r4, r5, r6, lr} a3ec: e59f6064 ldr r6, [pc, #100] ; a458 <__libc_init_array+0x70> a3f0: e59f5064 ldr r5, [pc, #100] ; a45c <__libc_init_array+0x74> a3f4: e0466005 sub r6, r6, r5 a3f8: e1b06146 asrs r6, r6, #2 a3fc: 13a04000 movne r4, #0 a400: 0a000005 beq a41c <__libc_init_array+0x34> a404: e2844001 add r4, r4, #1 a408: e4953004 ldr r3, [r5], #4 a40c: e1a0e00f mov lr, pc a410: e12fff13 bx r3 a414: e1560004 cmp r6, r4 a418: 1afffff9 bne a404 <__libc_init_array+0x1c> a41c: e59f603c ldr r6, [pc, #60] ; a460 <__libc_init_array+0x78> a420: e59f503c ldr r5, [pc, #60] ; a464 <__libc_init_array+0x7c> a424: e0466005 sub r6, r6, r5 a428: ebfff6f4 bl 8000 <_init> a42c: e1b06146 asrs r6, r6, #2 a430: 13a04000 movne r4, #0 a434: 0a000005 beq a450 <__libc_init_array+0x68> a438: e2844001 add r4, r4, #1 a43c: e4953004 ldr r3, [r5], #4 a440: e1a0e00f mov lr, pc a444: e12fff13 bx r3 a448: e1560004 cmp r6, r4 a44c: 1afffff9 bne a438 <__libc_init_array+0x50> a450: e8bd4070 pop {r4, r5, r6, lr} a454: e12fff1e bx lr a458: 0000f728 .word 0x0000f728 a45c: 0000f728 .word 0x0000f728 a460: 0000f72c .word 0x0000f72c a464: 0000f728 .word 0x0000f728 0000a468 : a468: e352000f cmp r2, #15 a46c: 8a000009 bhi a498 a470: e3520000 cmp r2, #0 a474: e1a03000 mov r3, r0 a478: 0a00003c beq a570 a47c: e2433001 sub r3, r3, #1 a480: e0812002 add r2, r1, r2 a484: e4d1c001 ldrb ip, [r1], #1 a488: e1510002 cmp r1, r2 a48c: e5e3c001 strb ip, [r3, #1]! a490: 1afffffb bne a484 a494: e12fff1e bx lr a498: e1813000 orr r3, r1, r0 a49c: e3130003 tst r3, #3 a4a0: 1a000030 bne a568 a4a4: e92d40f0 push {r4, r5, r6, r7, lr} a4a8: e1a0e002 mov lr, r2 a4ac: e280c010 add ip, r0, #16 a4b0: e2813010 add r3, r1, #16 a4b4: e5137010 ldr r7, [r3, #-16] a4b8: e513600c ldr r6, [r3, #-12] a4bc: e5135008 ldr r5, [r3, #-8] a4c0: e5134004 ldr r4, [r3, #-4] a4c4: e24ee010 sub lr, lr, #16 a4c8: e35e000f cmp lr, #15 a4cc: e50c7010 str r7, [ip, #-16] a4d0: e50c600c str r6, [ip, #-12] a4d4: e50c5008 str r5, [ip, #-8] a4d8: e50c4004 str r4, [ip, #-4] a4dc: e2833010 add r3, r3, #16 a4e0: e28cc010 add ip, ip, #16 a4e4: 8afffff2 bhi a4b4 a4e8: e2423010 sub r3, r2, #16 a4ec: e3c3300f bic r3, r3, #15 a4f0: e202600f and r6, r2, #15 a4f4: e2833010 add r3, r3, #16 a4f8: e3560003 cmp r6, #3 a4fc: e0811003 add r1, r1, r3 a500: e0803003 add r3, r0, r3 a504: 9a00001a bls a574 a508: e1a04001 mov r4, r1 a50c: e1a0c006 mov ip, r6 a510: e243e004 sub lr, r3, #4 a514: e24cc004 sub ip, ip, #4 a518: e4945004 ldr r5, [r4], #4 a51c: e35c0003 cmp ip, #3 a520: e5ae5004 str r5, [lr, #4]! a524: 8afffffa bhi a514 a528: e246c004 sub ip, r6, #4 a52c: e3ccc003 bic ip, ip, #3 a530: e28cc004 add ip, ip, #4 a534: e081100c add r1, r1, ip a538: e083300c add r3, r3, ip a53c: e2022003 and r2, r2, #3 a540: e3520000 cmp r2, #0 a544: 12433001 subne r3, r3, #1 a548: 10812002 addne r2, r1, r2 a54c: 0a000003 beq a560 a550: e4d1c001 ldrb ip, [r1], #1 a554: e1510002 cmp r1, r2 a558: e5e3c001 strb ip, [r3, #1]! a55c: 1afffffb bne a550 a560: e8bd40f0 pop {r4, r5, r6, r7, lr} a564: e12fff1e bx lr a568: e1a03000 mov r3, r0 a56c: eaffffc2 b a47c a570: e12fff1e bx lr a574: e1a02006 mov r2, r6 a578: eafffff0 b a540 0000a57c : a57c: e1500001 cmp r0, r1 a580: 9a00000a bls a5b0 a584: e0813002 add r3, r1, r2 a588: e1500003 cmp r0, r3 a58c: 2a000007 bcs a5b0 a590: e3520000 cmp r2, #0 a594: e0802002 add r2, r0, r2 a598: 012fff1e bxeq lr a59c: e573c001 ldrb ip, [r3, #-1]! a5a0: e1510003 cmp r1, r3 a5a4: e562c001 strb ip, [r2, #-1]! a5a8: 1afffffb bne a59c a5ac: e12fff1e bx lr a5b0: e352000f cmp r2, #15 a5b4: 8a000009 bhi a5e0 a5b8: e3520000 cmp r2, #0 a5bc: e1a03000 mov r3, r0 a5c0: 0a00003c beq a6b8 a5c4: e2433001 sub r3, r3, #1 a5c8: e0812002 add r2, r1, r2 a5cc: e4d1c001 ldrb ip, [r1], #1 a5d0: e1520001 cmp r2, r1 a5d4: e5e3c001 strb ip, [r3, #1]! a5d8: 1afffffb bne a5cc a5dc: e12fff1e bx lr a5e0: e1813000 orr r3, r1, r0 a5e4: e3130003 tst r3, #3 a5e8: 1a000030 bne a6b0 a5ec: e92d4070 push {r4, r5, r6, lr} a5f0: e1a0e002 mov lr, r2 a5f4: e280c010 add ip, r0, #16 a5f8: e2813010 add r3, r1, #16 a5fc: e5134010 ldr r4, [r3, #-16] a600: e50c4010 str r4, [ip, #-16] a604: e513400c ldr r4, [r3, #-12] a608: e50c400c str r4, [ip, #-12] a60c: e5134008 ldr r4, [r3, #-8] a610: e50c4008 str r4, [ip, #-8] a614: e24ee010 sub lr, lr, #16 a618: e5134004 ldr r4, [r3, #-4] a61c: e35e000f cmp lr, #15 a620: e50c4004 str r4, [ip, #-4] a624: e2833010 add r3, r3, #16 a628: e28cc010 add ip, ip, #16 a62c: 8afffff2 bhi a5fc a630: e2423010 sub r3, r2, #16 a634: e3c3300f bic r3, r3, #15 a638: e202600f and r6, r2, #15 a63c: e2833010 add r3, r3, #16 a640: e3560003 cmp r6, #3 a644: e0811003 add r1, r1, r3 a648: e0803003 add r3, r0, r3 a64c: 9a00001a bls a6bc a650: e1a04001 mov r4, r1 a654: e1a0c006 mov ip, r6 a658: e243e004 sub lr, r3, #4 a65c: e24cc004 sub ip, ip, #4 a660: e4945004 ldr r5, [r4], #4 a664: e35c0003 cmp ip, #3 a668: e5ae5004 str r5, [lr, #4]! a66c: 8afffffa bhi a65c a670: e246c004 sub ip, r6, #4 a674: e3ccc003 bic ip, ip, #3 a678: e28cc004 add ip, ip, #4 a67c: e081100c add r1, r1, ip a680: e083300c add r3, r3, ip a684: e2022003 and r2, r2, #3 a688: e3520000 cmp r2, #0 a68c: 12433001 subne r3, r3, #1 a690: 10812002 addne r2, r1, r2 a694: 0a000003 beq a6a8 a698: e4d1c001 ldrb ip, [r1], #1 a69c: e1520001 cmp r2, r1 a6a0: e5e3c001 strb ip, [r3, #1]! a6a4: 1afffffb bne a698 a6a8: e8bd4070 pop {r4, r5, r6, lr} a6ac: e12fff1e bx lr a6b0: e1a03000 mov r3, r0 a6b4: eaffffc2 b a5c4 a6b8: e12fff1e bx lr a6bc: e1a02006 mov r2, r6 a6c0: eafffff0 b a688 0000a6c4 : a6c4: e3100003 tst r0, #3 a6c8: 0a000040 beq a7d0 a6cc: e3520000 cmp r2, #0 a6d0: e2422001 sub r2, r2, #1 a6d4: 012fff1e bxeq lr a6d8: e201c0ff and ip, r1, #255 ; 0xff a6dc: e1a03000 mov r3, r0 a6e0: ea000002 b a6f0 a6e4: e2422001 sub r2, r2, #1 a6e8: e3720001 cmn r2, #1 a6ec: 012fff1e bxeq lr a6f0: e4c3c001 strb ip, [r3], #1 a6f4: e3130003 tst r3, #3 a6f8: 1afffff9 bne a6e4 a6fc: e3520003 cmp r2, #3 a700: 9a00002a bls a7b0 a704: e92d4010 push {r4, lr} a708: e201e0ff and lr, r1, #255 ; 0xff a70c: e18ee40e orr lr, lr, lr, lsl #8 a710: e352000f cmp r2, #15 a714: e18ee80e orr lr, lr, lr, lsl #16 a718: 9a000010 bls a760 a71c: e1a04002 mov r4, r2 a720: e283c010 add ip, r3, #16 a724: e2444010 sub r4, r4, #16 a728: e354000f cmp r4, #15 a72c: e50ce010 str lr, [ip, #-16] a730: e50ce00c str lr, [ip, #-12] a734: e50ce008 str lr, [ip, #-8] a738: e50ce004 str lr, [ip, #-4] a73c: e28cc010 add ip, ip, #16 a740: 8afffff7 bhi a724 a744: e242c010 sub ip, r2, #16 a748: e3ccc00f bic ip, ip, #15 a74c: e202200f and r2, r2, #15 a750: e28cc010 add ip, ip, #16 a754: e3520003 cmp r2, #3 a758: e083300c add r3, r3, ip a75c: 9a00000a bls a78c a760: e1a04003 mov r4, r3 a764: e1a0c002 mov ip, r2 a768: e24cc004 sub ip, ip, #4 a76c: e35c0003 cmp ip, #3 a770: e484e004 str lr, [r4], #4 a774: 8afffffb bhi a768 a778: e242c004 sub ip, r2, #4 a77c: e3ccc003 bic ip, ip, #3 a780: e28cc004 add ip, ip, #4 a784: e083300c add r3, r3, ip a788: e2022003 and r2, r2, #3 a78c: e3520000 cmp r2, #0 a790: 0a000004 beq a7a8 a794: e20110ff and r1, r1, #255 ; 0xff a798: e0832002 add r2, r3, r2 a79c: e4c31001 strb r1, [r3], #1 a7a0: e1520003 cmp r2, r3 a7a4: 1afffffc bne a79c a7a8: e8bd4010 pop {r4, lr} a7ac: e12fff1e bx lr a7b0: e3520000 cmp r2, #0 a7b4: 012fff1e bxeq lr a7b8: e20110ff and r1, r1, #255 ; 0xff a7bc: e0832002 add r2, r3, r2 a7c0: e4c31001 strb r1, [r3], #1 a7c4: e1520003 cmp r2, r3 a7c8: 1afffffc bne a7c0 a7cc: e12fff1e bx lr a7d0: e1a03000 mov r3, r0 a7d4: eaffffc8 b a6fc 0000a7d8 <__sprint_r.part.0>: a7d8: e92d4ff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} a7dc: e5913064 ldr r3, [r1, #100] ; 0x64 a7e0: e3130a02 tst r3, #8192 ; 0x2000 a7e4: e1a0b002 mov fp, r2 a7e8: 0a000024 beq a880 <__sprint_r.part.0+0xa8> a7ec: e5923008 ldr r3, [r2, #8] a7f0: e5929000 ldr r9, [r2] a7f4: e3530000 cmp r3, #0 a7f8: 11a06001 movne r6, r1 a7fc: 11a07000 movne r7, r0 a800: 12899008 addne r9, r9, #8 a804: 0a00001b beq a878 <__sprint_r.part.0+0xa0> a808: e519a004 ldr sl, [r9, #-4] a80c: e5195008 ldr r5, [r9, #-8] a810: e1b0812a lsrs r8, sl, #2 a814: 13a04000 movne r4, #0 a818: 12455004 subne r5, r5, #4 a81c: 1a000002 bne a82c <__sprint_r.part.0+0x54> a820: ea00000e b a860 <__sprint_r.part.0+0x88> a824: e1580004 cmp r8, r4 a828: 0a00000b beq a85c <__sprint_r.part.0+0x84> a82c: e1a02006 mov r2, r6 a830: e5b51004 ldr r1, [r5, #4]! a834: e1a00007 mov r0, r7 a838: eb000777 bl c61c <_fputwc_r> a83c: e3700001 cmn r0, #1 a840: e2844001 add r4, r4, #1 a844: 1afffff6 bne a824 <__sprint_r.part.0+0x4c> a848: e3a03000 mov r3, #0 a84c: e58b3008 str r3, [fp, #8] a850: e58b3004 str r3, [fp, #4] a854: e8bd4ff8 pop {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} a858: e12fff1e bx lr a85c: e59b3008 ldr r3, [fp, #8] a860: e3caa003 bic sl, sl, #3 a864: e043300a sub r3, r3, sl a868: e3530000 cmp r3, #0 a86c: e58b3008 str r3, [fp, #8] a870: e2899008 add r9, r9, #8 a874: 1affffe3 bne a808 <__sprint_r.part.0+0x30> a878: e3a00000 mov r0, #0 a87c: eafffff1 b a848 <__sprint_r.part.0+0x70> a880: eb00089d bl cafc <__sfvwrite_r> a884: eaffffef b a848 <__sprint_r.part.0+0x70> 0000a888 <__sprint_r>: a888: e5923008 ldr r3, [r2, #8] a88c: e3530000 cmp r3, #0 a890: 1affffd0 bne a7d8 <__sprint_r.part.0> a894: e5823004 str r3, [r2, #4] a898: e1a00003 mov r0, r3 a89c: e12fff1e bx lr 0000a8a0 <_vfiprintf_r>: a8a0: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} a8a4: e1a05003 mov r5, r3 a8a8: e24dd0b4 sub sp, sp, #180 ; 0xb4 a8ac: e2503000 subs r3, r0, #0 a8b0: e58d3014 str r3, [sp, #20] a8b4: e1a0a001 mov sl, r1 a8b8: e1a09002 mov r9, r2 a8bc: e58d5018 str r5, [sp, #24] a8c0: 0a000002 beq a8d0 <_vfiprintf_r+0x30> a8c4: e5933038 ldr r3, [r3, #56] ; 0x38 a8c8: e3530000 cmp r3, #0 a8cc: 0a0000cf beq ac10 <_vfiprintf_r+0x370> a8d0: e59a3064 ldr r3, [sl, #100] ; 0x64 a8d4: e3130001 tst r3, #1 a8d8: e1da30fc ldrsh r3, [sl, #12] a8dc: e1a01803 lsl r1, r3, #16 a8e0: 1a0000a7 bne ab84 <_vfiprintf_r+0x2e4> a8e4: e3110402 tst r1, #33554432 ; 0x2000000 a8e8: e1a01821 lsr r1, r1, #16 a8ec: 0a0000a0 beq ab74 <_vfiprintf_r+0x2d4> a8f0: e3110a02 tst r1, #8192 ; 0x2000 a8f4: 1a000006 bne a914 <_vfiprintf_r+0x74> a8f8: e59a2064 ldr r2, [sl, #100] ; 0x64 a8fc: e3833a02 orr r3, r3, #8192 ; 0x2000 a900: e3c22a02 bic r2, r2, #8192 ; 0x2000 a904: e1ca30bc strh r3, [sl, #12] a908: e58a2064 str r2, [sl, #100] ; 0x64 a90c: e1a03803 lsl r3, r3, #16 a910: e1a01823 lsr r1, r3, #16 a914: e3110008 tst r1, #8 a918: 0a0000a0 beq aba0 <_vfiprintf_r+0x300> a91c: e59a3010 ldr r3, [sl, #16] a920: e3530000 cmp r3, #0 a924: 0a00009d beq aba0 <_vfiprintf_r+0x300> a928: e201301a and r3, r1, #26 a92c: e353000a cmp r3, #10 a930: 0a0000a3 beq abc4 <_vfiprintf_r+0x324> a934: e3a03000 mov r3, #0 a938: e28d8070 add r8, sp, #112 ; 0x70 a93c: e1a0b008 mov fp, r8 a940: e58d302c str r3, [sp, #44] ; 0x2c a944: e58d3008 str r3, [sp, #8] a948: e58d3044 str r3, [sp, #68] ; 0x44 a94c: e58d3040 str r3, [sp, #64] ; 0x40 a950: e58d803c str r8, [sp, #60] ; 0x3c a954: e58da00c str sl, [sp, #12] a958: e5d93000 ldrb r3, [r9] a95c: e3530000 cmp r3, #0 a960: 13530025 cmpne r3, #37 ; 0x25 a964: e1a04009 mov r4, r9 a968: 0a000013 beq a9bc <_vfiprintf_r+0x11c> a96c: e5f43001 ldrb r3, [r4, #1]! a970: e3530000 cmp r3, #0 a974: 13530025 cmpne r3, #37 ; 0x25 a978: 1afffffb bne a96c <_vfiprintf_r+0xcc> a97c: e0545009 subs r5, r4, r9 a980: 0a00000d beq a9bc <_vfiprintf_r+0x11c> a984: e59d3040 ldr r3, [sp, #64] ; 0x40 a988: e59d2044 ldr r2, [sp, #68] ; 0x44 a98c: e2833001 add r3, r3, #1 a990: e3530007 cmp r3, #7 a994: e0852002 add r2, r5, r2 a998: e58b9000 str r9, [fp] a99c: e58b5004 str r5, [fp, #4] a9a0: e58d3040 str r3, [sp, #64] ; 0x40 a9a4: e58d2044 str r2, [sp, #68] ; 0x44 a9a8: d28bb008 addle fp, fp, #8 a9ac: ca000076 bgt ab8c <_vfiprintf_r+0x2ec> a9b0: e59d3008 ldr r3, [sp, #8] a9b4: e0833005 add r3, r3, r5 a9b8: e58d3008 str r3, [sp, #8] a9bc: e5d43000 ldrb r3, [r4] a9c0: e3530000 cmp r3, #0 a9c4: 0a00042f beq ba88 <_vfiprintf_r+0x11e8> a9c8: e3a01000 mov r1, #0 a9cc: e3a03000 mov r3, #0 a9d0: e3e0a000 mvn sl, #0 a9d4: e5cd3037 strb r3, [sp, #55] ; 0x37 a9d8: e2849001 add r9, r4, #1 a9dc: e5d43001 ldrb r3, [r4, #1] a9e0: e1a0c001 mov ip, r1 a9e4: e1a00001 mov r0, r1 a9e8: e1a05001 mov r5, r1 a9ec: e1a0700a mov r7, sl a9f0: e3a0e001 mov lr, #1 a9f4: e3a0402b mov r4, #43 ; 0x2b a9f8: e3a06020 mov r6, #32 a9fc: e2899001 add r9, r9, #1 aa00: e2432020 sub r2, r3, #32 aa04: e3520058 cmp r2, #88 ; 0x58 aa08: 979ff102 ldrls pc, [pc, r2, lsl #2] aa0c: ea000220 b b294 <_vfiprintf_r+0x9f4> aa10: 0000b280 .word 0x0000b280 aa14: 0000b294 .word 0x0000b294 aa18: 0000b294 .word 0x0000b294 aa1c: 0000b25c .word 0x0000b25c aa20: 0000b294 .word 0x0000b294 aa24: 0000b294 .word 0x0000b294 aa28: 0000b294 .word 0x0000b294 aa2c: 0000b294 .word 0x0000b294 aa30: 0000b294 .word 0x0000b294 aa34: 0000b294 .word 0x0000b294 aa38: 0000ac18 .word 0x0000ac18 aa3c: 0000b068 .word 0x0000b068 aa40: 0000b294 .word 0x0000b294 aa44: 0000ac34 .word 0x0000ac34 aa48: 0000b000 .word 0x0000b000 aa4c: 0000b294 .word 0x0000b294 aa50: 0000b078 .word 0x0000b078 aa54: 0000b084 .word 0x0000b084 aa58: 0000b084 .word 0x0000b084 aa5c: 0000b084 .word 0x0000b084 aa60: 0000b084 .word 0x0000b084 aa64: 0000b084 .word 0x0000b084 aa68: 0000b084 .word 0x0000b084 aa6c: 0000b084 .word 0x0000b084 aa70: 0000b084 .word 0x0000b084 aa74: 0000b084 .word 0x0000b084 aa78: 0000b294 .word 0x0000b294 aa7c: 0000b294 .word 0x0000b294 aa80: 0000b294 .word 0x0000b294 aa84: 0000b294 .word 0x0000b294 aa88: 0000b294 .word 0x0000b294 aa8c: 0000b294 .word 0x0000b294 aa90: 0000b294 .word 0x0000b294 aa94: 0000b294 .word 0x0000b294 aa98: 0000b294 .word 0x0000b294 aa9c: 0000b294 .word 0x0000b294 aaa0: 0000b0a8 .word 0x0000b0a8 aaa4: 0000b294 .word 0x0000b294 aaa8: 0000b294 .word 0x0000b294 aaac: 0000b294 .word 0x0000b294 aab0: 0000b294 .word 0x0000b294 aab4: 0000b294 .word 0x0000b294 aab8: 0000b294 .word 0x0000b294 aabc: 0000b294 .word 0x0000b294 aac0: 0000b294 .word 0x0000b294 aac4: 0000b294 .word 0x0000b294 aac8: 0000b294 .word 0x0000b294 aacc: 0000af3c .word 0x0000af3c aad0: 0000b294 .word 0x0000b294 aad4: 0000b294 .word 0x0000b294 aad8: 0000b294 .word 0x0000b294 aadc: 0000b294 .word 0x0000b294 aae0: 0000b294 .word 0x0000b294 aae4: 0000af48 .word 0x0000af48 aae8: 0000b294 .word 0x0000b294 aaec: 0000b294 .word 0x0000b294 aaf0: 0000b1ac .word 0x0000b1ac aaf4: 0000b294 .word 0x0000b294 aaf8: 0000b294 .word 0x0000b294 aafc: 0000b294 .word 0x0000b294 ab00: 0000b294 .word 0x0000b294 ab04: 0000b294 .word 0x0000b294 ab08: 0000b294 .word 0x0000b294 ab0c: 0000b294 .word 0x0000b294 ab10: 0000b294 .word 0x0000b294 ab14: 0000b294 .word 0x0000b294 ab18: 0000b294 .word 0x0000b294 ab1c: 0000b220 .word 0x0000b220 ab20: 0000b19c .word 0x0000b19c ab24: 0000b294 .word 0x0000b294 ab28: 0000b294 .word 0x0000b294 ab2c: 0000b294 .word 0x0000b294 ab30: 0000b040 .word 0x0000b040 ab34: 0000b19c .word 0x0000b19c ab38: 0000b294 .word 0x0000b294 ab3c: 0000b294 .word 0x0000b294 ab40: 0000b04c .word 0x0000b04c ab44: 0000b294 .word 0x0000b294 ab48: 0000b160 .word 0x0000b160 ab4c: 0000af00 .word 0x0000af00 ab50: 0000af54 .word 0x0000af54 ab54: 0000af90 .word 0x0000af90 ab58: 0000b294 .word 0x0000b294 ab5c: 0000af9c .word 0x0000af9c ab60: 0000b294 .word 0x0000b294 ab64: 0000ac40 .word 0x0000ac40 ab68: 0000b294 .word 0x0000b294 ab6c: 0000b294 .word 0x0000b294 ab70: 0000b268 .word 0x0000b268 ab74: e59a0058 ldr r0, [sl, #88] ; 0x58 ab78: eb000995 bl d1d4 <__retarget_lock_acquire_recursive> ab7c: e1da30fc ldrsh r3, [sl, #12] ab80: e1a01803 lsl r1, r3, #16 ab84: e1a01821 lsr r1, r1, #16 ab88: eaffff58 b a8f0 <_vfiprintf_r+0x50> ab8c: e3520000 cmp r2, #0 ab90: 1a000314 bne b7e8 <_vfiprintf_r+0xf48> ab94: e58d2040 str r2, [sp, #64] ; 0x40 ab98: e1a0b008 mov fp, r8 ab9c: eaffff83 b a9b0 <_vfiprintf_r+0x110> aba0: e1a0100a mov r1, sl aba4: e59d0014 ldr r0, [sp, #20] aba8: eb000438 bl bc90 <__swsetup_r> abac: e3500000 cmp r0, #0 abb0: 1a0002f6 bne b790 <_vfiprintf_r+0xef0> abb4: e1da10bc ldrh r1, [sl, #12] abb8: e201301a and r3, r1, #26 abbc: e353000a cmp r3, #10 abc0: 1affff5b bne a934 <_vfiprintf_r+0x94> abc4: e1da30fe ldrsh r3, [sl, #14] abc8: e3530000 cmp r3, #0 abcc: baffff58 blt a934 <_vfiprintf_r+0x94> abd0: e59a3064 ldr r3, [sl, #100] ; 0x64 abd4: e3130001 tst r3, #1 abd8: 1a000002 bne abe8 <_vfiprintf_r+0x348> abdc: e3110c02 tst r1, #512 ; 0x200 abe0: 059a0058 ldreq r0, [sl, #88] ; 0x58 abe4: 0b000980 bleq d1ec <__retarget_lock_release_recursive> abe8: e1a03005 mov r3, r5 abec: e1a02009 mov r2, r9 abf0: e1a0100a mov r1, sl abf4: e59d0014 ldr r0, [sp, #20] abf8: eb0003f0 bl bbc0 <__sbprintf> abfc: e58d0008 str r0, [sp, #8] ac00: e59d0008 ldr r0, [sp, #8] ac04: e28dd0b4 add sp, sp, #180 ; 0xb4 ac08: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} ac0c: e12fff1e bx lr ac10: eb0005a0 bl c298 <__sinit> ac14: eaffff2d b a8d0 <_vfiprintf_r+0x30> ac18: e59d3018 ldr r3, [sp, #24] ac1c: e5930000 ldr r0, [r3] ac20: e2833004 add r3, r3, #4 ac24: e3500000 cmp r0, #0 ac28: e58d3018 str r3, [sp, #24] ac2c: aa000001 bge ac38 <_vfiprintf_r+0x398> ac30: e2600000 rsb r0, r0, #0 ac34: e3855004 orr r5, r5, #4 ac38: e5d93000 ldrb r3, [r9] ac3c: eaffff6e b a9fc <_vfiprintf_r+0x15c> ac40: e58d001c str r0, [sp, #28] ac44: e3150020 tst r5, #32 ac48: 1a00032b bne b8fc <_vfiprintf_r+0x105c> ac4c: e59d2018 ldr r2, [sp, #24] ac50: e3150010 tst r5, #16 ac54: e1a03002 mov r3, r2 ac58: 1a0002f0 bne b820 <_vfiprintf_r+0xf80> ac5c: e3150040 tst r5, #64 ; 0x40 ac60: 0a0002ee beq b820 <_vfiprintf_r+0xf80> ac64: e3a03001 mov r3, #1 ac68: e3a07000 mov r7, #0 ac6c: e1d260b0 ldrh r6, [r2] ac70: e2822004 add r2, r2, #4 ac74: e58d2018 str r2, [sp, #24] ac78: e3a02000 mov r2, #0 ac7c: e3a04000 mov r4, #0 ac80: e5cd2037 strb r2, [sp, #55] ; 0x37 ac84: e37a0001 cmn sl, #1 ac88: 0a00011e beq b108 <_vfiprintf_r+0x868> ac8c: e1862007 orr r2, r6, r7 ac90: e3520000 cmp r2, #0 ac94: 035a0000 cmpeq sl, #0 ac98: e3c52080 bic r2, r5, #128 ; 0x80 ac9c: e58d2004 str r2, [sp, #4] aca0: 1a000298 bne b708 <_vfiprintf_r+0xe68> aca4: e3530000 cmp r3, #0 aca8: 1a000292 bne b6f8 <_vfiprintf_r+0xe58> acac: e2153001 ands r3, r5, #1 acb0: e58d3010 str r3, [sp, #16] acb4: 058d8024 streq r8, [sp, #36] ; 0x24 acb8: 13a03030 movne r3, #48 ; 0x30 acbc: 128d20b0 addne r2, sp, #176 ; 0xb0 acc0: 15623041 strbne r3, [r2, #-65]! ; 0xffffffbf acc4: 158d2024 strne r2, [sp, #36] ; 0x24 acc8: e59d3010 ldr r3, [sp, #16] accc: e15a0003 cmp sl, r3 acd0: a1a0700a movge r7, sl acd4: b1a07003 movlt r7, r3 acd8: e3540000 cmp r4, #0 acdc: 12877001 addne r7, r7, #1 ace0: e59d3004 ldr r3, [sp, #4] ace4: e2133002 ands r3, r3, #2 ace8: e58d3020 str r3, [sp, #32] acec: e59d3004 ldr r3, [sp, #4] acf0: 12877002 addne r7, r7, #2 acf4: e2136084 ands r6, r3, #132 ; 0x84 acf8: 1a00018d bne b334 <_vfiprintf_r+0xa94> acfc: e59d301c ldr r3, [sp, #28] ad00: e0434007 sub r4, r3, r7 ad04: e3540000 cmp r4, #0 ad08: da000189 ble b334 <_vfiprintf_r+0xa94> ad0c: e3540010 cmp r4, #16 ad10: da000378 ble baf8 <_vfiprintf_r+0x1258> ad14: e1a0e00b mov lr, fp ad18: e3a05010 mov r5, #16 ad1c: e1a0b007 mov fp, r7 ad20: e3a03001 mov r3, #1 ad24: e59d2044 ldr r2, [sp, #68] ; 0x44 ad28: e59dc040 ldr ip, [sp, #64] ; 0x40 ad2c: e59d7014 ldr r7, [sp, #20] ad30: ea000005 b ad4c <_vfiprintf_r+0x4ac> ad34: e28c1002 add r1, ip, #2 ad38: e1a0c000 mov ip, r0 ad3c: e28ee008 add lr, lr, #8 ad40: e2444010 sub r4, r4, #16 ad44: e3540010 cmp r4, #16 ad48: da00000f ble ad8c <_vfiprintf_r+0x4ec> ad4c: e28c0001 add r0, ip, #1 ad50: e59f1e38 ldr r1, [pc, #3640] ; bb90 <_vfiprintf_r+0x12f0> ad54: e2822010 add r2, r2, #16 ad58: e3500007 cmp r0, #7 ad5c: e58d2044 str r2, [sp, #68] ; 0x44 ad60: e88e0022 stm lr, {r1, r5} ad64: e58d0040 str r0, [sp, #64] ; 0x40 ad68: dafffff1 ble ad34 <_vfiprintf_r+0x494> ad6c: e3520000 cmp r2, #0 ad70: 1a00015b bne b2e4 <_vfiprintf_r+0xa44> ad74: e2444010 sub r4, r4, #16 ad78: e3540010 cmp r4, #16 ad7c: e1a0c006 mov ip, r6 ad80: e1a01003 mov r1, r3 ad84: e1a0e008 mov lr, r8 ad88: caffffef bgt ad4c <_vfiprintf_r+0x4ac> ad8c: e1a0700b mov r7, fp ad90: e1a0b00e mov fp, lr ad94: e59f3df4 ldr r3, [pc, #3572] ; bb90 <_vfiprintf_r+0x12f0> ad98: e3510007 cmp r1, #7 ad9c: e0842002 add r2, r4, r2 ada0: e88b0018 stm fp, {r3, r4} ada4: e58d2044 str r2, [sp, #68] ; 0x44 ada8: e58d1040 str r1, [sp, #64] ; 0x40 adac: d28bb008 addle fp, fp, #8 adb0: d2810001 addle r0, r1, #1 adb4: da000161 ble b340 <_vfiprintf_r+0xaa0> adb8: e3520000 cmp r2, #0 adbc: 1a000155 bne b318 <_vfiprintf_r+0xa78> adc0: e5dd1037 ldrb r1, [sp, #55] ; 0x37 adc4: e3510000 cmp r1, #0 adc8: 0a0002fb beq b9bc <_vfiprintf_r+0x111c> adcc: e3a02001 mov r2, #1 add0: e1a0b008 mov fp, r8 add4: e1a00002 mov r0, r2 add8: e28d1037 add r1, sp, #55 ; 0x37 addc: e58d2074 str r2, [sp, #116] ; 0x74 ade0: e58d1070 str r1, [sp, #112] ; 0x70 ade4: e1a01000 mov r1, r0 ade8: e28bb008 add fp, fp, #8 adec: e2800001 add r0, r0, #1 adf0: e59d3020 ldr r3, [sp, #32] adf4: e3530000 cmp r3, #0 adf8: 0a00016a beq b3a8 <_vfiprintf_r+0xb08> adfc: e3a01002 mov r1, #2 ae00: e28d3038 add r3, sp, #56 ; 0x38 ae04: e0822001 add r2, r2, r1 ae08: e3500007 cmp r0, #7 ae0c: e58d2044 str r2, [sp, #68] ; 0x44 ae10: e58d0040 str r0, [sp, #64] ; 0x40 ae14: e58b1004 str r1, [fp, #4] ae18: e58b3000 str r3, [fp] ae1c: da00015e ble b39c <_vfiprintf_r+0xafc> ae20: e3520000 cmp r2, #0 ae24: 1a000292 bne b874 <_vfiprintf_r+0xfd4> ae28: e3560080 cmp r6, #128 ; 0x80 ae2c: e3a00001 mov r0, #1 ae30: e3a01000 mov r1, #0 ae34: e1a0b008 mov fp, r8 ae38: 1a00015c bne b3b0 <_vfiprintf_r+0xb10> ae3c: e59d301c ldr r3, [sp, #28] ae40: e0434007 sub r4, r3, r7 ae44: e3540000 cmp r4, #0 ae48: da000158 ble b3b0 <_vfiprintf_r+0xb10> ae4c: e3540010 cmp r4, #16 ae50: da00033b ble bb44 <_vfiprintf_r+0x12a4> ae54: e1a0e00b mov lr, fp ae58: e3a05010 mov r5, #16 ae5c: e1a0b007 mov fp, r7 ae60: e3a06001 mov r6, #1 ae64: e1a07004 mov r7, r4 ae68: e59d4014 ldr r4, [sp, #20] ae6c: ea000005 b ae88 <_vfiprintf_r+0x5e8> ae70: e281c002 add ip, r1, #2 ae74: e1a01000 mov r1, r0 ae78: e28ee008 add lr, lr, #8 ae7c: e2477010 sub r7, r7, #16 ae80: e3570010 cmp r7, #16 ae84: da00000f ble aec8 <_vfiprintf_r+0x628> ae88: e2810001 add r0, r1, #1 ae8c: e59f3d00 ldr r3, [pc, #3328] ; bb94 <_vfiprintf_r+0x12f4> ae90: e2822010 add r2, r2, #16 ae94: e3500007 cmp r0, #7 ae98: e58d2044 str r2, [sp, #68] ; 0x44 ae9c: e88e0028 stm lr, {r3, r5} aea0: e58d0040 str r0, [sp, #64] ; 0x40 aea4: dafffff1 ble ae70 <_vfiprintf_r+0x5d0> aea8: e3520000 cmp r2, #0 aeac: 1a000206 bne b6cc <_vfiprintf_r+0xe2c> aeb0: e2477010 sub r7, r7, #16 aeb4: e3570010 cmp r7, #16 aeb8: e1a0c006 mov ip, r6 aebc: e3a01000 mov r1, #0 aec0: e1a0e008 mov lr, r8 aec4: caffffef bgt ae88 <_vfiprintf_r+0x5e8> aec8: e1a04007 mov r4, r7 aecc: e1a0700b mov r7, fp aed0: e1a0b00e mov fp, lr aed4: e59f3cb8 ldr r3, [pc, #3256] ; bb94 <_vfiprintf_r+0x12f4> aed8: e0822004 add r2, r2, r4 aedc: e35c0007 cmp ip, #7 aee0: e58d2044 str r2, [sp, #68] ; 0x44 aee4: e88b0018 stm fp, {r3, r4} aee8: e58dc040 str ip, [sp, #64] ; 0x40 aeec: ca00026b bgt b8a0 <_vfiprintf_r+0x1000> aef0: e28bb008 add fp, fp, #8 aef4: e28c0001 add r0, ip, #1 aef8: e1a0100c mov r1, ip aefc: ea00012b b b3b0 <_vfiprintf_r+0xb10> af00: e58d001c str r0, [sp, #28] af04: e3150020 tst r5, #32 af08: 1a000283 bne b91c <_vfiprintf_r+0x107c> af0c: e59d2018 ldr r2, [sp, #24] af10: e3150010 tst r5, #16 af14: e1a03002 mov r3, r2 af18: 1a00023a bne b808 <_vfiprintf_r+0xf68> af1c: e3150040 tst r5, #64 ; 0x40 af20: 0a000238 beq b808 <_vfiprintf_r+0xf68> af24: e1d260b0 ldrh r6, [r2] af28: e2822004 add r2, r2, #4 af2c: e3a03000 mov r3, #0 af30: e58d2018 str r2, [sp, #24] af34: e3a07000 mov r7, #0 af38: eaffff4e b ac78 <_vfiprintf_r+0x3d8> af3c: e58d001c str r0, [sp, #28] af40: e3855010 orr r5, r5, #16 af44: eaffffee b af04 <_vfiprintf_r+0x664> af48: e58d001c str r0, [sp, #28] af4c: e3855010 orr r5, r5, #16 af50: eaffff3b b ac44 <_vfiprintf_r+0x3a4> af54: e3a03078 mov r3, #120 ; 0x78 af58: e3a02030 mov r2, #48 ; 0x30 af5c: e59d1018 ldr r1, [sp, #24] af60: e5cd3039 strb r3, [sp, #57] ; 0x39 af64: e2813004 add r3, r1, #4 af68: e58d3018 str r3, [sp, #24] af6c: e59f3c24 ldr r3, [pc, #3108] ; bb98 <_vfiprintf_r+0x12f8> af70: e58d001c str r0, [sp, #28] af74: e58d302c str r3, [sp, #44] ; 0x2c af78: e5916000 ldr r6, [r1] af7c: e3855002 orr r5, r5, #2 af80: e5cd2038 strb r2, [sp, #56] ; 0x38 af84: e3a07000 mov r7, #0 af88: e3a03002 mov r3, #2 af8c: eaffff39 b ac78 <_vfiprintf_r+0x3d8> af90: e3855020 orr r5, r5, #32 af94: e5d93000 ldrb r3, [r9] af98: eafffe97 b a9fc <_vfiprintf_r+0x15c> af9c: e59d3018 ldr r3, [sp, #24] afa0: e5932000 ldr r2, [r3] afa4: e58d2024 str r2, [sp, #36] ; 0x24 afa8: e3520000 cmp r2, #0 afac: e3a02000 mov r2, #0 afb0: e58d001c str r0, [sp, #28] afb4: e5cd2037 strb r2, [sp, #55] ; 0x37 afb8: e2834004 add r4, r3, #4 afbc: 0a0002d1 beq bb08 <_vfiprintf_r+0x1268> afc0: e37a0001 cmn sl, #1 afc4: 0a0002b8 beq baac <_vfiprintf_r+0x120c> afc8: e59d6024 ldr r6, [sp, #36] ; 0x24 afcc: e1a0200a mov r2, sl afd0: e3a01000 mov r1, #0 afd4: e1a00006 mov r0, r6 afd8: eb000aef bl db9c afdc: e3500000 cmp r0, #0 afe0: 0a0002d1 beq bb2c <_vfiprintf_r+0x128c> afe4: e0403006 sub r3, r0, r6 afe8: e58d4018 str r4, [sp, #24] afec: e58d3010 str r3, [sp, #16] aff0: e58d5004 str r5, [sp, #4] aff4: e5dd4037 ldrb r4, [sp, #55] ; 0x37 aff8: e3a0a000 mov sl, #0 affc: eaffff31 b acc8 <_vfiprintf_r+0x428> b000: e5d93000 ldrb r3, [r9] b004: e353002a cmp r3, #42 ; 0x2a b008: e289a001 add sl, r9, #1 b00c: 0a0002d5 beq bb68 <_vfiprintf_r+0x12c8> b010: e2432030 sub r2, r3, #48 ; 0x30 b014: e3520009 cmp r2, #9 b018: e1a0900a mov r9, sl b01c: e3a0a000 mov sl, #0 b020: 8afffe76 bhi aa00 <_vfiprintf_r+0x160> b024: e4d93001 ldrb r3, [r9], #1 b028: e08aa10a add sl, sl, sl, lsl #2 b02c: e082a08a add sl, r2, sl, lsl #1 b030: e2432030 sub r2, r3, #48 ; 0x30 b034: e3520009 cmp r2, #9 b038: 9afffff9 bls b024 <_vfiprintf_r+0x784> b03c: eafffe6f b aa00 <_vfiprintf_r+0x160> b040: e3855040 orr r5, r5, #64 ; 0x40 b044: e5d93000 ldrb r3, [r9] b048: eafffe6b b a9fc <_vfiprintf_r+0x15c> b04c: e5d93000 ldrb r3, [r9] b050: e353006c cmp r3, #108 ; 0x6c b054: 05d93001 ldrbeq r3, [r9, #1] b058: 03855020 orreq r5, r5, #32 b05c: 02899001 addeq r9, r9, #1 b060: 13855010 orrne r5, r5, #16 b064: eafffe64 b a9fc <_vfiprintf_r+0x15c> b068: e5d93000 ldrb r3, [r9] b06c: e1a0100e mov r1, lr b070: e1a0c004 mov ip, r4 b074: eafffe60 b a9fc <_vfiprintf_r+0x15c> b078: e3855080 orr r5, r5, #128 ; 0x80 b07c: e5d93000 ldrb r3, [r9] b080: eafffe5d b a9fc <_vfiprintf_r+0x15c> b084: e3a00000 mov r0, #0 b088: e2432030 sub r2, r3, #48 ; 0x30 b08c: e4d93001 ldrb r3, [r9], #1 b090: e0800100 add r0, r0, r0, lsl #2 b094: e0820080 add r0, r2, r0, lsl #1 b098: e2432030 sub r2, r3, #48 ; 0x30 b09c: e3520009 cmp r2, #9 b0a0: 9afffff9 bls b08c <_vfiprintf_r+0x7ec> b0a4: eafffe55 b aa00 <_vfiprintf_r+0x160> b0a8: e3510000 cmp r1, #0 b0ac: e58d001c str r0, [sp, #28] b0b0: 15cdc037 strbne ip, [sp, #55] ; 0x37 b0b4: e3855010 orr r5, r5, #16 b0b8: e3150020 tst r5, #32 b0bc: 1a0001ff bne b8c0 <_vfiprintf_r+0x1020> b0c0: e3150010 tst r5, #16 b0c4: 1a00025a bne ba34 <_vfiprintf_r+0x1194> b0c8: e3150040 tst r5, #64 ; 0x40 b0cc: 0a000241 beq b9d8 <_vfiprintf_r+0x1138> b0d0: e59d3018 ldr r3, [sp, #24] b0d4: e1d360f0 ldrsh r6, [r3] b0d8: e2833004 add r3, r3, #4 b0dc: e1a07fc6 asr r7, r6, #31 b0e0: e58d3018 str r3, [sp, #24] b0e4: e1a02006 mov r2, r6 b0e8: e1a03007 mov r3, r7 b0ec: e3520000 cmp r2, #0 b0f0: e2d33000 sbcs r3, r3, #0 b0f4: ba000229 blt b9a0 <_vfiprintf_r+0x1100> b0f8: e37a0001 cmn sl, #1 b0fc: e5dd4037 ldrb r4, [sp, #55] ; 0x37 b100: e3a03001 mov r3, #1 b104: 1afffee0 bne ac8c <_vfiprintf_r+0x3ec> b108: e3530001 cmp r3, #1 b10c: 0a000180 beq b714 <_vfiprintf_r+0xe74> b110: e3530002 cmp r3, #2 b114: 11a01008 movne r1, r8 b118: 1a000153 bne b66c <_vfiprintf_r+0xdcc> b11c: e1a02008 mov r2, r8 b120: e59dc02c ldr ip, [sp, #44] ; 0x2c b124: e1a03226 lsr r3, r6, #4 b128: e1833e07 orr r3, r3, r7, lsl #28 b12c: e1a00227 lsr r0, r7, #4 b130: e206100f and r1, r6, #15 b134: e1a07000 mov r7, r0 b138: e1a06003 mov r6, r3 b13c: e7dc3001 ldrb r3, [ip, r1] b140: e1961007 orrs r1, r6, r7 b144: e5623001 strb r3, [r2, #-1]! b148: 1afffff5 bne b124 <_vfiprintf_r+0x884> b14c: e0483002 sub r3, r8, r2 b150: e58d2024 str r2, [sp, #36] ; 0x24 b154: e58d5004 str r5, [sp, #4] b158: e58d3010 str r3, [sp, #16] b15c: eafffed9 b acc8 <_vfiprintf_r+0x428> b160: e3510000 cmp r1, #0 b164: 15cdc037 strbne ip, [sp, #55] ; 0x37 b168: e3150020 tst r5, #32 b16c: 1a00023d bne ba68 <_vfiprintf_r+0x11c8> b170: e3150010 tst r5, #16 b174: 1a000053 bne b2c8 <_vfiprintf_r+0xa28> b178: e3150040 tst r5, #64 ; 0x40 b17c: 0a000051 beq b2c8 <_vfiprintf_r+0xa28> b180: e59d2018 ldr r2, [sp, #24] b184: e5923000 ldr r3, [r2] b188: e2822004 add r2, r2, #4 b18c: e58d2018 str r2, [sp, #24] b190: e1dd20b8 ldrh r2, [sp, #8] b194: e1c320b0 strh r2, [r3] b198: eafffdee b a958 <_vfiprintf_r+0xb8> b19c: e3510000 cmp r1, #0 b1a0: e58d001c str r0, [sp, #28] b1a4: 15cdc037 strbne ip, [sp, #55] ; 0x37 b1a8: eaffffc2 b b0b8 <_vfiprintf_r+0x818> b1ac: e59f29e8 ldr r2, [pc, #2536] ; bb9c <_vfiprintf_r+0x12fc> b1b0: e3510000 cmp r1, #0 b1b4: e58d001c str r0, [sp, #28] b1b8: 15cdc037 strbne ip, [sp, #55] ; 0x37 b1bc: e58d202c str r2, [sp, #44] ; 0x2c b1c0: e3150020 tst r5, #32 b1c4: e59d2018 ldr r2, [sp, #24] b1c8: 1a0001c5 bne b8e4 <_vfiprintf_r+0x1044> b1cc: e3150010 tst r5, #16 b1d0: 1a00021a bne ba40 <_vfiprintf_r+0x11a0> b1d4: e3150040 tst r5, #64 ; 0x40 b1d8: 13a07000 movne r7, #0 b1dc: 03a07000 moveq r7, #0 b1e0: 11d260b0 ldrhne r6, [r2] b1e4: 05926000 ldreq r6, [r2] b1e8: 12822004 addne r2, r2, #4 b1ec: 02822004 addeq r2, r2, #4 b1f0: 158d2018 strne r2, [sp, #24] b1f4: 058d2018 streq r2, [sp, #24] b1f8: e3150001 tst r5, #1 b1fc: 0a00016e beq b7bc <_vfiprintf_r+0xf1c> b200: e1962007 orrs r2, r6, r7 b204: 0a00016c beq b7bc <_vfiprintf_r+0xf1c> b208: e3a02030 mov r2, #48 ; 0x30 b20c: e5cd3039 strb r3, [sp, #57] ; 0x39 b210: e3855002 orr r5, r5, #2 b214: e5cd2038 strb r2, [sp, #56] ; 0x38 b218: e3a03002 mov r3, #2 b21c: eafffe95 b ac78 <_vfiprintf_r+0x3d8> b220: e3a07001 mov r7, #1 b224: e3a01000 mov r1, #0 b228: e59d2018 ldr r2, [sp, #24] b22c: e5923000 ldr r3, [r2] b230: e5cd3048 strb r3, [sp, #72] ; 0x48 b234: e2823004 add r3, r2, #4 b238: e58d3018 str r3, [sp, #24] b23c: e28d3048 add r3, sp, #72 ; 0x48 b240: e58d001c str r0, [sp, #28] b244: e5cd1037 strb r1, [sp, #55] ; 0x37 b248: e58d7010 str r7, [sp, #16] b24c: e58d3024 str r3, [sp, #36] ; 0x24 b250: e58d5004 str r5, [sp, #4] b254: e3a0a000 mov sl, #0 b258: eafffea0 b ace0 <_vfiprintf_r+0x440> b25c: e3855001 orr r5, r5, #1 b260: e5d93000 ldrb r3, [r9] b264: eafffde4 b a9fc <_vfiprintf_r+0x15c> b268: e59f2928 ldr r2, [pc, #2344] ; bb98 <_vfiprintf_r+0x12f8> b26c: e3510000 cmp r1, #0 b270: e58d001c str r0, [sp, #28] b274: 15cdc037 strbne ip, [sp, #55] ; 0x37 b278: e58d202c str r2, [sp, #44] ; 0x2c b27c: eaffffcf b b1c0 <_vfiprintf_r+0x920> b280: e35c0000 cmp ip, #0 b284: e5d93000 ldrb r3, [r9] b288: 01a0100e moveq r1, lr b28c: 01a0c006 moveq ip, r6 b290: eafffdd9 b a9fc <_vfiprintf_r+0x15c> b294: e3510000 cmp r1, #0 b298: 15cdc037 strbne ip, [sp, #55] ; 0x37 b29c: e3530000 cmp r3, #0 b2a0: e58d001c str r0, [sp, #28] b2a4: 0a0001f7 beq ba88 <_vfiprintf_r+0x11e8> b2a8: e5cd3048 strb r3, [sp, #72] ; 0x48 b2ac: e3a03000 mov r3, #0 b2b0: e3a07001 mov r7, #1 b2b4: e5cd3037 strb r3, [sp, #55] ; 0x37 b2b8: e28d3048 add r3, sp, #72 ; 0x48 b2bc: e58d7010 str r7, [sp, #16] b2c0: e58d3024 str r3, [sp, #36] ; 0x24 b2c4: eaffffe1 b b250 <_vfiprintf_r+0x9b0> b2c8: e59d2018 ldr r2, [sp, #24] b2cc: e5923000 ldr r3, [r2] b2d0: e2822004 add r2, r2, #4 b2d4: e58d2018 str r2, [sp, #24] b2d8: e59d2008 ldr r2, [sp, #8] b2dc: e5832000 str r2, [r3] b2e0: eafffd9c b a958 <_vfiprintf_r+0xb8> b2e4: e28d203c add r2, sp, #60 ; 0x3c b2e8: e59d100c ldr r1, [sp, #12] b2ec: e1a00007 mov r0, r7 b2f0: e58d3028 str r3, [sp, #40] ; 0x28 b2f4: ebfffd37 bl a7d8 <__sprint_r.part.0> b2f8: e3500000 cmp r0, #0 b2fc: 1a000114 bne b754 <_vfiprintf_r+0xeb4> b300: e59dc040 ldr ip, [sp, #64] ; 0x40 b304: e1a0e008 mov lr, r8 b308: e59d2044 ldr r2, [sp, #68] ; 0x44 b30c: e28c1001 add r1, ip, #1 b310: e59d3028 ldr r3, [sp, #40] ; 0x28 b314: eafffe89 b ad40 <_vfiprintf_r+0x4a0> b318: e28d203c add r2, sp, #60 ; 0x3c b31c: e59d100c ldr r1, [sp, #12] b320: e59d0014 ldr r0, [sp, #20] b324: ebfffd2b bl a7d8 <__sprint_r.part.0> b328: e3500000 cmp r0, #0 b32c: 1a000108 bne b754 <_vfiprintf_r+0xeb4> b330: e1a0b008 mov fp, r8 b334: e28d1040 add r1, sp, #64 ; 0x40 b338: e8910006 ldm r1, {r1, r2} b33c: e2810001 add r0, r1, #1 b340: e5ddc037 ldrb ip, [sp, #55] ; 0x37 b344: e35c0000 cmp ip, #0 b348: 0afffea8 beq adf0 <_vfiprintf_r+0x550> b34c: e3a01001 mov r1, #1 b350: e28dc037 add ip, sp, #55 ; 0x37 b354: e0822001 add r2, r2, r1 b358: e3500007 cmp r0, #7 b35c: e58d2044 str r2, [sp, #68] ; 0x44 b360: e58d0040 str r0, [sp, #64] ; 0x40 b364: e58b1004 str r1, [fp, #4] b368: e58bc000 str ip, [fp] b36c: dafffe9c ble ade4 <_vfiprintf_r+0x544> b370: e3520000 cmp r2, #0 b374: 1a000133 bne b848 <_vfiprintf_r+0xfa8> b378: e59d3020 ldr r3, [sp, #32] b37c: e3530000 cmp r3, #0 b380: 0afffea8 beq ae28 <_vfiprintf_r+0x588> b384: e3a02002 mov r2, #2 b388: e1a00001 mov r0, r1 b38c: e1a0b008 mov fp, r8 b390: e28d3038 add r3, sp, #56 ; 0x38 b394: e58d2074 str r2, [sp, #116] ; 0x74 b398: e58d3070 str r3, [sp, #112] ; 0x70 b39c: e1a01000 mov r1, r0 b3a0: e28bb008 add fp, fp, #8 b3a4: e2800001 add r0, r0, #1 b3a8: e3560080 cmp r6, #128 ; 0x80 b3ac: 0afffea2 beq ae3c <_vfiprintf_r+0x59c> b3b0: e59d3010 ldr r3, [sp, #16] b3b4: e04aa003 sub sl, sl, r3 b3b8: e35a0000 cmp sl, #0 b3bc: da000057 ble b520 <_vfiprintf_r+0xc80> b3c0: e35a0010 cmp sl, #16 b3c4: da000019 ble b430 <_vfiprintf_r+0xb90> b3c8: e3a04010 mov r4, #16 b3cc: e59d5014 ldr r5, [sp, #20] b3d0: e59d600c ldr r6, [sp, #12] b3d4: ea000005 b b3f0 <_vfiprintf_r+0xb50> b3d8: e2810002 add r0, r1, #2 b3dc: e1a01003 mov r1, r3 b3e0: e28bb008 add fp, fp, #8 b3e4: e24aa010 sub sl, sl, #16 b3e8: e35a0010 cmp sl, #16 b3ec: da00000f ble b430 <_vfiprintf_r+0xb90> b3f0: e2813001 add r3, r1, #1 b3f4: e59f0798 ldr r0, [pc, #1944] ; bb94 <_vfiprintf_r+0x12f4> b3f8: e2822010 add r2, r2, #16 b3fc: e3530007 cmp r3, #7 b400: e58d2044 str r2, [sp, #68] ; 0x44 b404: e88b0011 stm fp, {r0, r4} b408: e58d3040 str r3, [sp, #64] ; 0x40 b40c: dafffff1 ble b3d8 <_vfiprintf_r+0xb38> b410: e3520000 cmp r2, #0 b414: 1a00002c bne b4cc <_vfiprintf_r+0xc2c> b418: e24aa010 sub sl, sl, #16 b41c: e35a0010 cmp sl, #16 b420: e3a00001 mov r0, #1 b424: e3a01000 mov r1, #0 b428: e1a0b008 mov fp, r8 b42c: caffffef bgt b3f0 <_vfiprintf_r+0xb50> b430: e59f375c ldr r3, [pc, #1884] ; bb94 <_vfiprintf_r+0x12f4> b434: e3500007 cmp r0, #7 b438: e082200a add r2, r2, sl b43c: e88b0408 stm fp, {r3, sl} b440: e58d0040 str r0, [sp, #64] ; 0x40 b444: e58d2044 str r2, [sp, #68] ; 0x44 b448: d28bb008 addle fp, fp, #8 b44c: d2800001 addle r0, r0, #1 b450: da000032 ble b520 <_vfiprintf_r+0xc80> b454: e3520000 cmp r2, #0 b458: 1a000026 bne b4f8 <_vfiprintf_r+0xc58> b45c: e3a03001 mov r3, #1 b460: e1a0b008 mov fp, r8 b464: e59d2010 ldr r2, [sp, #16] b468: e59d1024 ldr r1, [sp, #36] ; 0x24 b46c: e58d2074 str r2, [sp, #116] ; 0x74 b470: e58d2044 str r2, [sp, #68] ; 0x44 b474: e58d1070 str r1, [sp, #112] ; 0x70 b478: e58d3040 str r3, [sp, #64] ; 0x40 b47c: e28bb008 add fp, fp, #8 b480: e59d3004 ldr r3, [sp, #4] b484: e3130004 tst r3, #4 b488: 0a000003 beq b49c <_vfiprintf_r+0xbfc> b48c: e59d301c ldr r3, [sp, #28] b490: e0434007 sub r4, r3, r7 b494: e3540000 cmp r4, #0 b498: ca000033 bgt b56c <_vfiprintf_r+0xccc> b49c: e59d3008 ldr r3, [sp, #8] b4a0: e59d101c ldr r1, [sp, #28] b4a4: e1510007 cmp r1, r7 b4a8: a0833001 addge r3, r3, r1 b4ac: b0833007 addlt r3, r3, r7 b4b0: e3520000 cmp r2, #0 b4b4: e58d3008 str r3, [sp, #8] b4b8: 1a00009f bne b73c <_vfiprintf_r+0xe9c> b4bc: e3a03000 mov r3, #0 b4c0: e1a0b008 mov fp, r8 b4c4: e58d3040 str r3, [sp, #64] ; 0x40 b4c8: eafffd22 b a958 <_vfiprintf_r+0xb8> b4cc: e28d203c add r2, sp, #60 ; 0x3c b4d0: e1a01006 mov r1, r6 b4d4: e1a00005 mov r0, r5 b4d8: ebfffcbe bl a7d8 <__sprint_r.part.0> b4dc: e3500000 cmp r0, #0 b4e0: 1a0000f4 bne b8b8 <_vfiprintf_r+0x1018> b4e4: e28d1040 add r1, sp, #64 ; 0x40 b4e8: e8910006 ldm r1, {r1, r2} b4ec: e1a0b008 mov fp, r8 b4f0: e2810001 add r0, r1, #1 b4f4: eaffffba b b3e4 <_vfiprintf_r+0xb44> b4f8: e28d203c add r2, sp, #60 ; 0x3c b4fc: e59d100c ldr r1, [sp, #12] b500: e59d0014 ldr r0, [sp, #20] b504: ebfffcb3 bl a7d8 <__sprint_r.part.0> b508: e3500000 cmp r0, #0 b50c: 1a000090 bne b754 <_vfiprintf_r+0xeb4> b510: e1a0b008 mov fp, r8 b514: e28d0040 add r0, sp, #64 ; 0x40 b518: e8900005 ldm r0, {r0, r2} b51c: e2800001 add r0, r0, #1 b520: e59d3010 ldr r3, [sp, #16] b524: e59d1024 ldr r1, [sp, #36] ; 0x24 b528: e0832002 add r2, r3, r2 b52c: e3500007 cmp r0, #7 b530: e58d2044 str r2, [sp, #68] ; 0x44 b534: e88b000a stm fp, {r1, r3} b538: e58d0040 str r0, [sp, #64] ; 0x40 b53c: daffffce ble b47c <_vfiprintf_r+0xbdc> b540: e3520000 cmp r2, #0 b544: 1a00009e bne b7c4 <_vfiprintf_r+0xf24> b548: e59d3004 ldr r3, [sp, #4] b54c: e3130004 tst r3, #4 b550: e58d2040 str r2, [sp, #64] ; 0x40 b554: 0a000031 beq b620 <_vfiprintf_r+0xd80> b558: e59d301c ldr r3, [sp, #28] b55c: e0434007 sub r4, r3, r7 b560: e3540000 cmp r4, #0 b564: c1a0b008 movgt fp, r8 b568: da00002c ble b620 <_vfiprintf_r+0xd80> b56c: e3540010 cmp r4, #16 b570: d59d0040 ldrle r0, [sp, #64] ; 0x40 b574: d2800001 addle r0, r0, #1 b578: da00001f ble b5fc <_vfiprintf_r+0xd5c> b57c: e1a0c00b mov ip, fp b580: e3a05010 mov r5, #16 b584: e1a0b004 mov fp, r4 b588: e3a06001 mov r6, #1 b58c: e59d1040 ldr r1, [sp, #64] ; 0x40 b590: e59da014 ldr sl, [sp, #20] b594: e59d400c ldr r4, [sp, #12] b598: ea000005 b b5b4 <_vfiprintf_r+0xd14> b59c: e2810002 add r0, r1, #2 b5a0: e1a01003 mov r1, r3 b5a4: e28cc008 add ip, ip, #8 b5a8: e24bb010 sub fp, fp, #16 b5ac: e35b0010 cmp fp, #16 b5b0: da00000f ble b5f4 <_vfiprintf_r+0xd54> b5b4: e2813001 add r3, r1, #1 b5b8: e59f05d0 ldr r0, [pc, #1488] ; bb90 <_vfiprintf_r+0x12f0> b5bc: e2822010 add r2, r2, #16 b5c0: e3530007 cmp r3, #7 b5c4: e58d2044 str r2, [sp, #68] ; 0x44 b5c8: e88c0021 stm ip, {r0, r5} b5cc: e58d3040 str r3, [sp, #64] ; 0x40 b5d0: dafffff1 ble b59c <_vfiprintf_r+0xcfc> b5d4: e3520000 cmp r2, #0 b5d8: 1a000017 bne b63c <_vfiprintf_r+0xd9c> b5dc: e24bb010 sub fp, fp, #16 b5e0: e35b0010 cmp fp, #16 b5e4: e1a00006 mov r0, r6 b5e8: e3a01000 mov r1, #0 b5ec: e1a0c008 mov ip, r8 b5f0: caffffef bgt b5b4 <_vfiprintf_r+0xd14> b5f4: e1a0400b mov r4, fp b5f8: e1a0b00c mov fp, ip b5fc: e59f358c ldr r3, [pc, #1420] ; bb90 <_vfiprintf_r+0x12f0> b600: e0822004 add r2, r2, r4 b604: e3500007 cmp r0, #7 b608: e58d2044 str r2, [sp, #68] ; 0x44 b60c: e88b0018 stm fp, {r3, r4} b610: e58d0040 str r0, [sp, #64] ; 0x40 b614: daffffa0 ble b49c <_vfiprintf_r+0xbfc> b618: e3520000 cmp r2, #0 b61c: 1a0000f5 bne b9f8 <_vfiprintf_r+0x1158> b620: e59d3008 ldr r3, [sp, #8] b624: e59d201c ldr r2, [sp, #28] b628: e1520007 cmp r2, r7 b62c: a0833002 addge r3, r3, r2 b630: b0833007 addlt r3, r3, r7 b634: e58d3008 str r3, [sp, #8] b638: eaffff9f b b4bc <_vfiprintf_r+0xc1c> b63c: e28d203c add r2, sp, #60 ; 0x3c b640: e1a01004 mov r1, r4 b644: e1a0000a mov r0, sl b648: ebfffc62 bl a7d8 <__sprint_r.part.0> b64c: e3500000 cmp r0, #0 b650: 1a000113 bne baa4 <_vfiprintf_r+0x1204> b654: e28d1040 add r1, sp, #64 ; 0x40 b658: e8910006 ldm r1, {r1, r2} b65c: e1a0c008 mov ip, r8 b660: e2810001 add r0, r1, #1 b664: eaffffcf b b5a8 <_vfiprintf_r+0xd08> b668: e1a01002 mov r1, r2 b66c: e1a021a6 lsr r2, r6, #3 b670: e1822e87 orr r2, r2, r7, lsl #29 b674: e1a001a7 lsr r0, r7, #3 b678: e2063007 and r3, r6, #7 b67c: e1a07000 mov r7, r0 b680: e1a06002 mov r6, r2 b684: e2833030 add r3, r3, #48 ; 0x30 b688: e1962007 orrs r2, r6, r7 b68c: e5413001 strb r3, [r1, #-1] b690: e2412001 sub r2, r1, #1 b694: 1afffff3 bne b668 <_vfiprintf_r+0xdc8> b698: e3530030 cmp r3, #48 ; 0x30 b69c: 03a03000 moveq r3, #0 b6a0: 12053001 andne r3, r5, #1 b6a4: e3530000 cmp r3, #0 b6a8: 0a0000e9 beq ba54 <_vfiprintf_r+0x11b4> b6ac: e3a03030 mov r3, #48 ; 0x30 b6b0: e2411002 sub r1, r1, #2 b6b4: e58d1024 str r1, [sp, #36] ; 0x24 b6b8: e0481001 sub r1, r8, r1 b6bc: e58d5004 str r5, [sp, #4] b6c0: e58d1010 str r1, [sp, #16] b6c4: e5423001 strb r3, [r2, #-1] b6c8: eafffd7e b acc8 <_vfiprintf_r+0x428> b6cc: e28d203c add r2, sp, #60 ; 0x3c b6d0: e59d100c ldr r1, [sp, #12] b6d4: e1a00004 mov r0, r4 b6d8: ebfffc3e bl a7d8 <__sprint_r.part.0> b6dc: e3500000 cmp r0, #0 b6e0: 1a00001b bne b754 <_vfiprintf_r+0xeb4> b6e4: e28d1040 add r1, sp, #64 ; 0x40 b6e8: e8910006 ldm r1, {r1, r2} b6ec: e1a0e008 mov lr, r8 b6f0: e281c001 add ip, r1, #1 b6f4: eafffde0 b ae7c <_vfiprintf_r+0x5dc> b6f8: e3a03000 mov r3, #0 b6fc: e58d8024 str r8, [sp, #36] ; 0x24 b700: e58d3010 str r3, [sp, #16] b704: eafffd6f b acc8 <_vfiprintf_r+0x428> b708: e3530001 cmp r3, #1 b70c: e1a05002 mov r5, r2 b710: 1afffe7e bne b110 <_vfiprintf_r+0x870> b714: e3570000 cmp r7, #0 b718: 03560009 cmpeq r6, #9 b71c: 8a000086 bhi b93c <_vfiprintf_r+0x109c> b720: e28d20b0 add r2, sp, #176 ; 0xb0 b724: e2866030 add r6, r6, #48 ; 0x30 b728: e5626041 strb r6, [r2, #-65]! ; 0xffffffbf b72c: e58d5004 str r5, [sp, #4] b730: e58d3010 str r3, [sp, #16] b734: e58d2024 str r2, [sp, #36] ; 0x24 b738: eafffd62 b acc8 <_vfiprintf_r+0x428> b73c: e28d203c add r2, sp, #60 ; 0x3c b740: e59d100c ldr r1, [sp, #12] b744: e59d0014 ldr r0, [sp, #20] b748: ebfffc22 bl a7d8 <__sprint_r.part.0> b74c: e3500000 cmp r0, #0 b750: 0affff59 beq b4bc <_vfiprintf_r+0xc1c> b754: e59da00c ldr sl, [sp, #12] b758: e59a3064 ldr r3, [sl, #100] ; 0x64 b75c: e3130001 tst r3, #1 b760: e1da30bc ldrh r3, [sl, #12] b764: 1a000001 bne b770 <_vfiprintf_r+0xed0> b768: e3130c02 tst r3, #512 ; 0x200 b76c: 0a000031 beq b838 <_vfiprintf_r+0xf98> b770: e3130040 tst r3, #64 ; 0x40 b774: 0afffd21 beq ac00 <_vfiprintf_r+0x360> b778: e3e03000 mvn r3, #0 b77c: e58d3008 str r3, [sp, #8] b780: e59d0008 ldr r0, [sp, #8] b784: e28dd0b4 add sp, sp, #180 ; 0xb4 b788: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} b78c: e12fff1e bx lr b790: e59a3064 ldr r3, [sl, #100] ; 0x64 b794: e3130001 tst r3, #1 b798: 1afffff6 bne b778 <_vfiprintf_r+0xed8> b79c: e1da30bc ldrh r3, [sl, #12] b7a0: e3130c02 tst r3, #512 ; 0x200 b7a4: 1afffff3 bne b778 <_vfiprintf_r+0xed8> b7a8: e59a0058 ldr r0, [sl, #88] ; 0x58 b7ac: eb00068e bl d1ec <__retarget_lock_release_recursive> b7b0: e3e03000 mvn r3, #0 b7b4: e58d3008 str r3, [sp, #8] b7b8: eafffd10 b ac00 <_vfiprintf_r+0x360> b7bc: e3a03002 mov r3, #2 b7c0: eafffd2c b ac78 <_vfiprintf_r+0x3d8> b7c4: e28d203c add r2, sp, #60 ; 0x3c b7c8: e59d100c ldr r1, [sp, #12] b7cc: e59d0014 ldr r0, [sp, #20] b7d0: ebfffc00 bl a7d8 <__sprint_r.part.0> b7d4: e3500000 cmp r0, #0 b7d8: 1affffdd bne b754 <_vfiprintf_r+0xeb4> b7dc: e1a0b008 mov fp, r8 b7e0: e59d2044 ldr r2, [sp, #68] ; 0x44 b7e4: eaffff25 b b480 <_vfiprintf_r+0xbe0> b7e8: e28d203c add r2, sp, #60 ; 0x3c b7ec: e59d100c ldr r1, [sp, #12] b7f0: e59d0014 ldr r0, [sp, #20] b7f4: ebfffbf7 bl a7d8 <__sprint_r.part.0> b7f8: e3500000 cmp r0, #0 b7fc: 1affffd4 bne b754 <_vfiprintf_r+0xeb4> b800: e1a0b008 mov fp, r8 b804: eafffc69 b a9b0 <_vfiprintf_r+0x110> b808: e2822004 add r2, r2, #4 b80c: e5936000 ldr r6, [r3] b810: e3a07000 mov r7, #0 b814: e3a03000 mov r3, #0 b818: e58d2018 str r2, [sp, #24] b81c: eafffd15 b ac78 <_vfiprintf_r+0x3d8> b820: e2822004 add r2, r2, #4 b824: e5936000 ldr r6, [r3] b828: e3a07000 mov r7, #0 b82c: e3a03001 mov r3, #1 b830: e58d2018 str r2, [sp, #24] b834: eafffd0f b ac78 <_vfiprintf_r+0x3d8> b838: e59a0058 ldr r0, [sl, #88] ; 0x58 b83c: eb00066a bl d1ec <__retarget_lock_release_recursive> b840: e1da30bc ldrh r3, [sl, #12] b844: eaffffc9 b b770 <_vfiprintf_r+0xed0> b848: e28d203c add r2, sp, #60 ; 0x3c b84c: e59d100c ldr r1, [sp, #12] b850: e59d0014 ldr r0, [sp, #20] b854: ebfffbdf bl a7d8 <__sprint_r.part.0> b858: e3500000 cmp r0, #0 b85c: 1affffbc bne b754 <_vfiprintf_r+0xeb4> b860: e28d1040 add r1, sp, #64 ; 0x40 b864: e8910006 ldm r1, {r1, r2} b868: e1a0b008 mov fp, r8 b86c: e2810001 add r0, r1, #1 b870: eafffd5e b adf0 <_vfiprintf_r+0x550> b874: e28d203c add r2, sp, #60 ; 0x3c b878: e59d100c ldr r1, [sp, #12] b87c: e59d0014 ldr r0, [sp, #20] b880: ebfffbd4 bl a7d8 <__sprint_r.part.0> b884: e3500000 cmp r0, #0 b888: 1affffb1 bne b754 <_vfiprintf_r+0xeb4> b88c: e28d1040 add r1, sp, #64 ; 0x40 b890: e8910006 ldm r1, {r1, r2} b894: e1a0b008 mov fp, r8 b898: e2810001 add r0, r1, #1 b89c: eafffec1 b b3a8 <_vfiprintf_r+0xb08> b8a0: e3520000 cmp r2, #0 b8a4: 1a000088 bne bacc <_vfiprintf_r+0x122c> b8a8: e3a00001 mov r0, #1 b8ac: e3a01000 mov r1, #0 b8b0: e1a0b008 mov fp, r8 b8b4: eafffebd b b3b0 <_vfiprintf_r+0xb10> b8b8: e1a0a006 mov sl, r6 b8bc: eaffffa5 b b758 <_vfiprintf_r+0xeb8> b8c0: e59d3018 ldr r3, [sp, #24] b8c4: e2833007 add r3, r3, #7 b8c8: e3c31007 bic r1, r3, #7 b8cc: e891000c ldm r1, {r2, r3} b8d0: e2811008 add r1, r1, #8 b8d4: e58d1018 str r1, [sp, #24] b8d8: e1a06002 mov r6, r2 b8dc: e1a07003 mov r7, r3 b8e0: eafffe01 b b0ec <_vfiprintf_r+0x84c> b8e4: e2822007 add r2, r2, #7 b8e8: e3c22007 bic r2, r2, #7 b8ec: e2821008 add r1, r2, #8 b8f0: e58d1018 str r1, [sp, #24] b8f4: e89200c0 ldm r2, {r6, r7} b8f8: eafffe3e b b1f8 <_vfiprintf_r+0x958> b8fc: e59d3018 ldr r3, [sp, #24] b900: e2833007 add r3, r3, #7 b904: e3c33007 bic r3, r3, #7 b908: e2832008 add r2, r3, #8 b90c: e89300c0 ldm r3, {r6, r7} b910: e58d2018 str r2, [sp, #24] b914: e3a03001 mov r3, #1 b918: eafffcd6 b ac78 <_vfiprintf_r+0x3d8> b91c: e59d3018 ldr r3, [sp, #24] b920: e2833007 add r3, r3, #7 b924: e3c33007 bic r3, r3, #7 b928: e2832008 add r2, r3, #8 b92c: e89300c0 ldm r3, {r6, r7} b930: e58d2018 str r2, [sp, #24] b934: e3a03000 mov r3, #0 b938: eafffcce b ac78 <_vfiprintf_r+0x3d8> b93c: e58d4004 str r4, [sp, #4] b940: e1a04008 mov r4, r8 b944: e1a00006 mov r0, r6 b948: e1a01007 mov r1, r7 b94c: e3a0200a mov r2, #10 b950: e3a03000 mov r3, #0 b954: eb000d6d bl ef10 <__aeabi_uldivmod> b958: e2822030 add r2, r2, #48 ; 0x30 b95c: e5642001 strb r2, [r4, #-1]! b960: e1a00006 mov r0, r6 b964: e1a01007 mov r1, r7 b968: e3a03000 mov r3, #0 b96c: e3a0200a mov r2, #10 b970: eb000d66 bl ef10 <__aeabi_uldivmod> b974: e1a06000 mov r6, r0 b978: e1a07001 mov r7, r1 b97c: e1963007 orrs r3, r6, r7 b980: 1affffef bne b944 <_vfiprintf_r+0x10a4> b984: e1a03004 mov r3, r4 b988: e0483003 sub r3, r8, r3 b98c: e58d4024 str r4, [sp, #36] ; 0x24 b990: e58d3010 str r3, [sp, #16] b994: e59d4004 ldr r4, [sp, #4] b998: e58d5004 str r5, [sp, #4] b99c: eafffcc9 b acc8 <_vfiprintf_r+0x428> b9a0: e3a0302d mov r3, #45 ; 0x2d b9a4: e2766000 rsbs r6, r6, #0 b9a8: e5cd3037 strb r3, [sp, #55] ; 0x37 b9ac: e1a04003 mov r4, r3 b9b0: e2e77000 rsc r7, r7, #0 b9b4: e3a03001 mov r3, #1 b9b8: eafffcb1 b ac84 <_vfiprintf_r+0x3e4> b9bc: e59d3020 ldr r3, [sp, #32] b9c0: e3530000 cmp r3, #0 b9c4: 1a000013 bne ba18 <_vfiprintf_r+0x1178> b9c8: e3a01000 mov r1, #0 b9cc: e3a00001 mov r0, #1 b9d0: e1a0b008 mov fp, r8 b9d4: eafffe75 b b3b0 <_vfiprintf_r+0xb10> b9d8: e59d1018 ldr r1, [sp, #24] b9dc: e5916000 ldr r6, [r1] b9e0: e2811004 add r1, r1, #4 b9e4: e1a07fc6 asr r7, r6, #31 b9e8: e1a02006 mov r2, r6 b9ec: e1a03007 mov r3, r7 b9f0: e58d1018 str r1, [sp, #24] b9f4: eafffdbc b b0ec <_vfiprintf_r+0x84c> b9f8: e28d203c add r2, sp, #60 ; 0x3c b9fc: e59d100c ldr r1, [sp, #12] ba00: e59d0014 ldr r0, [sp, #20] ba04: ebfffb73 bl a7d8 <__sprint_r.part.0> ba08: e3500000 cmp r0, #0 ba0c: 1affff50 bne b754 <_vfiprintf_r+0xeb4> ba10: e59d2044 ldr r2, [sp, #68] ; 0x44 ba14: eafffea0 b b49c <_vfiprintf_r+0xbfc> ba18: e3a02002 mov r2, #2 ba1c: e28d3038 add r3, sp, #56 ; 0x38 ba20: e58d2074 str r2, [sp, #116] ; 0x74 ba24: e58d3070 str r3, [sp, #112] ; 0x70 ba28: e3a00001 mov r0, #1 ba2c: e1a0b008 mov fp, r8 ba30: eafffe59 b b39c <_vfiprintf_r+0xafc> ba34: e59d3018 ldr r3, [sp, #24] ba38: e5936000 ldr r6, [r3] ba3c: eafffda5 b b0d8 <_vfiprintf_r+0x838> ba40: e5926000 ldr r6, [r2] ba44: e2822004 add r2, r2, #4 ba48: e58d2018 str r2, [sp, #24] ba4c: e3a07000 mov r7, #0 ba50: eafffde8 b b1f8 <_vfiprintf_r+0x958> ba54: e0483002 sub r3, r8, r2 ba58: e58d5004 str r5, [sp, #4] ba5c: e58d3010 str r3, [sp, #16] ba60: e58d2024 str r2, [sp, #36] ; 0x24 ba64: eafffc97 b acc8 <_vfiprintf_r+0x428> ba68: e59d3018 ldr r3, [sp, #24] ba6c: e59d2008 ldr r2, [sp, #8] ba70: e5931000 ldr r1, [r3] ba74: e2833004 add r3, r3, #4 ba78: e58d3018 str r3, [sp, #24] ba7c: e1a03fc2 asr r3, r2, #31 ba80: e881000c stm r1, {r2, r3} ba84: eafffbb3 b a958 <_vfiprintf_r+0xb8> ba88: e59d3044 ldr r3, [sp, #68] ; 0x44 ba8c: e3530000 cmp r3, #0 ba90: e59da00c ldr sl, [sp, #12] ba94: 1a00002c bne bb4c <_vfiprintf_r+0x12ac> ba98: e3a03000 mov r3, #0 ba9c: e58d3040 str r3, [sp, #64] ; 0x40 baa0: eaffff2c b b758 <_vfiprintf_r+0xeb8> baa4: e1a0a004 mov sl, r4 baa8: eaffff2a b b758 <_vfiprintf_r+0xeb8> baac: e59d0024 ldr r0, [sp, #36] ; 0x24 bab0: e58d4018 str r4, [sp, #24] bab4: e58d5004 str r5, [sp, #4] bab8: eb000b3d bl e7b4 babc: e3a0a000 mov sl, #0 bac0: e58d0010 str r0, [sp, #16] bac4: e5dd4037 ldrb r4, [sp, #55] ; 0x37 bac8: eafffc7e b acc8 <_vfiprintf_r+0x428> bacc: e28d203c add r2, sp, #60 ; 0x3c bad0: e59d100c ldr r1, [sp, #12] bad4: e59d0014 ldr r0, [sp, #20] bad8: ebfffb3e bl a7d8 <__sprint_r.part.0> badc: e3500000 cmp r0, #0 bae0: 1affff1b bne b754 <_vfiprintf_r+0xeb4> bae4: e28d1040 add r1, sp, #64 ; 0x40 bae8: e8910006 ldm r1, {r1, r2} baec: e1a0b008 mov fp, r8 baf0: e2810001 add r0, r1, #1 baf4: eafffe2d b b3b0 <_vfiprintf_r+0xb10> baf8: e28d1040 add r1, sp, #64 ; 0x40 bafc: e8910006 ldm r1, {r1, r2} bb00: e2811001 add r1, r1, #1 bb04: eafffca2 b ad94 <_vfiprintf_r+0x4f4> bb08: e35a0006 cmp sl, #6 bb0c: 31a0300a movcc r3, sl bb10: 23a03006 movcs r3, #6 bb14: e58d3010 str r3, [sp, #16] bb18: e1a07003 mov r7, r3 bb1c: e59f307c ldr r3, [pc, #124] ; bba0 <_vfiprintf_r+0x1300> bb20: e58d4018 str r4, [sp, #24] bb24: e58d3024 str r3, [sp, #36] ; 0x24 bb28: eafffdc8 b b250 <_vfiprintf_r+0x9b0> bb2c: e58da010 str sl, [sp, #16] bb30: e58d4018 str r4, [sp, #24] bb34: e58d5004 str r5, [sp, #4] bb38: e3a0a000 mov sl, #0 bb3c: e5dd4037 ldrb r4, [sp, #55] ; 0x37 bb40: eafffc60 b acc8 <_vfiprintf_r+0x428> bb44: e1a0c000 mov ip, r0 bb48: eafffce1 b aed4 <_vfiprintf_r+0x634> bb4c: e59d0014 ldr r0, [sp, #20] bb50: e28d203c add r2, sp, #60 ; 0x3c bb54: e1a0100a mov r1, sl bb58: ebfffb1e bl a7d8 <__sprint_r.part.0> bb5c: e3500000 cmp r0, #0 bb60: 0affffcc beq ba98 <_vfiprintf_r+0x11f8> bb64: eafffefb b b758 <_vfiprintf_r+0xeb8> bb68: e59d2018 ldr r2, [sp, #24] bb6c: e58da004 str sl, [sp, #4] bb70: e592a000 ldr sl, [r2] bb74: e2822004 add r2, r2, #4 bb78: e15a0007 cmp sl, r7 bb7c: e5d93001 ldrb r3, [r9, #1] bb80: b1a0a007 movlt sl, r7 bb84: e59d9004 ldr r9, [sp, #4] bb88: e58d2018 str r2, [sp, #24] bb8c: eafffb9a b a9fc <_vfiprintf_r+0x15c> bb90: 0000f5e8 .word 0x0000f5e8 bb94: 0000f5f8 .word 0x0000f5f8 bb98: 0000f5cc .word 0x0000f5cc bb9c: 0000f5b8 .word 0x0000f5b8 bba0: 0000f5e0 .word 0x0000f5e0 0000bba4 : bba4: e59fc010 ldr ip, [pc, #16] ; bbbc bba8: e1a03002 mov r3, r2 bbac: e1a02001 mov r2, r1 bbb0: e1a01000 mov r1, r0 bbb4: e59c0000 ldr r0, [ip] bbb8: eafffb38 b a8a0 <_vfiprintf_r> bbbc: 0000fb6c .word 0x0000fb6c 0000bbc0 <__sbprintf>: bbc0: e92d41f0 push {r4, r5, r6, r7, r8, lr} bbc4: e1a04001 mov r4, r1 bbc8: e3a0cb01 mov ip, #1024 ; 0x400 bbcc: e3a0e000 mov lr, #0 bbd0: e1a06002 mov r6, r2 bbd4: e1a07000 mov r7, r0 bbd8: e1a08003 mov r8, r3 bbdc: e24dde46 sub sp, sp, #1120 ; 0x460 bbe0: e1d430be ldrh r3, [r4, #14] bbe4: e24dd008 sub sp, sp, #8 bbe8: e1d110bc ldrh r1, [r1, #12] bbec: e1cd30be strh r3, [sp, #14] bbf0: e5943064 ldr r3, [r4, #100] ; 0x64 bbf4: e594201c ldr r2, [r4, #28] bbf8: e3c11002 bic r1, r1, #2 bbfc: e58d3064 str r3, [sp, #100] ; 0x64 bc00: e5943024 ldr r3, [r4, #36] ; 0x24 bc04: e1cd10bc strh r1, [sp, #12] bc08: e28d0058 add r0, sp, #88 ; 0x58 bc0c: e28d1068 add r1, sp, #104 ; 0x68 bc10: e58dc008 str ip, [sp, #8] bc14: e58dc014 str ip, [sp, #20] bc18: e58d201c str r2, [sp, #28] bc1c: e58d3024 str r3, [sp, #36] ; 0x24 bc20: e58de018 str lr, [sp, #24] bc24: e58d1000 str r1, [sp] bc28: e58d1010 str r1, [sp, #16] bc2c: eb000564 bl d1c4 <__retarget_lock_init_recursive> bc30: e1a02006 mov r2, r6 bc34: e1a03008 mov r3, r8 bc38: e1a0100d mov r1, sp bc3c: e1a00007 mov r0, r7 bc40: ebfffb16 bl a8a0 <_vfiprintf_r> bc44: e2506000 subs r6, r0, #0 bc48: ba000004 blt bc60 <__sbprintf+0xa0> bc4c: e1a0100d mov r1, sp bc50: e1a00007 mov r0, r7 bc54: eb0000fa bl c044 <_fflush_r> bc58: e3500000 cmp r0, #0 bc5c: 13e06000 mvnne r6, #0 bc60: e1dd30bc ldrh r3, [sp, #12] bc64: e3130040 tst r3, #64 ; 0x40 bc68: 11d430bc ldrhne r3, [r4, #12] bc6c: 13833040 orrne r3, r3, #64 ; 0x40 bc70: e59d0058 ldr r0, [sp, #88] ; 0x58 bc74: 11c430bc strhne r3, [r4, #12] bc78: eb000553 bl d1cc <__retarget_lock_close_recursive> bc7c: e1a00006 mov r0, r6 bc80: e28dde46 add sp, sp, #1120 ; 0x460 bc84: e28dd008 add sp, sp, #8 bc88: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} bc8c: e12fff1e bx lr 0000bc90 <__swsetup_r>: bc90: e59f3158 ldr r3, [pc, #344] ; bdf0 <__swsetup_r+0x160> bc94: e5933000 ldr r3, [r3] bc98: e3530000 cmp r3, #0 bc9c: e92d4070 push {r4, r5, r6, lr} bca0: e1a05000 mov r5, r0 bca4: e1a04001 mov r4, r1 bca8: 0a000002 beq bcb8 <__swsetup_r+0x28> bcac: e5932038 ldr r2, [r3, #56] ; 0x38 bcb0: e3520000 cmp r2, #0 bcb4: 0a000034 beq bd8c <__swsetup_r+0xfc> bcb8: e1d420fc ldrsh r2, [r4, #12] bcbc: e1a03802 lsl r3, r2, #16 bcc0: e3130702 tst r3, #524288 ; 0x80000 bcc4: e1a03823 lsr r3, r3, #16 bcc8: 0a00000c beq bd00 <__swsetup_r+0x70> bccc: e5940010 ldr r0, [r4, #16] bcd0: e3500000 cmp r0, #0 bcd4: 0a000014 beq bd2c <__swsetup_r+0x9c> bcd8: e2132001 ands r2, r3, #1 bcdc: 1a00001b bne bd50 <__swsetup_r+0xc0> bce0: e3130002 tst r3, #2 bce4: 05942014 ldreq r2, [r4, #20] bce8: e3500000 cmp r0, #0 bcec: e5842008 str r2, [r4, #8] bcf0: 13a00000 movne r0, #0 bcf4: 0a00001d beq bd70 <__swsetup_r+0xe0> bcf8: e8bd4070 pop {r4, r5, r6, lr} bcfc: e12fff1e bx lr bd00: e3130010 tst r3, #16 bd04: 0a000033 beq bdd8 <__swsetup_r+0x148> bd08: e3130004 tst r3, #4 bd0c: 1a000021 bne bd98 <__swsetup_r+0x108> bd10: e5940010 ldr r0, [r4, #16] bd14: e3822008 orr r2, r2, #8 bd18: e1c420bc strh r2, [r4, #12] bd1c: e3500000 cmp r0, #0 bd20: e1a02802 lsl r2, r2, #16 bd24: e1a03822 lsr r3, r2, #16 bd28: 1affffea bne bcd8 <__swsetup_r+0x48> bd2c: e2032d0a and r2, r3, #640 ; 0x280 bd30: e3520c02 cmp r2, #512 ; 0x200 bd34: 0affffe7 beq bcd8 <__swsetup_r+0x48> bd38: e1a00005 mov r0, r5 bd3c: e1a01004 mov r1, r4 bd40: eb000552 bl d290 <__smakebuf_r> bd44: e1d430bc ldrh r3, [r4, #12] bd48: e5940010 ldr r0, [r4, #16] bd4c: eaffffe1 b bcd8 <__swsetup_r+0x48> bd50: e3a02000 mov r2, #0 bd54: e5943014 ldr r3, [r4, #20] bd58: e3500000 cmp r0, #0 bd5c: e2633000 rsb r3, r3, #0 bd60: e5843018 str r3, [r4, #24] bd64: e5842008 str r2, [r4, #8] bd68: 13a00000 movne r0, #0 bd6c: 1affffe1 bne bcf8 <__swsetup_r+0x68> bd70: e1d430fc ldrsh r3, [r4, #12] bd74: e3130080 tst r3, #128 ; 0x80 bd78: 13833040 orrne r3, r3, #64 ; 0x40 bd7c: 11c430bc strhne r3, [r4, #12] bd80: 13e00000 mvnne r0, #0 bd84: e8bd4070 pop {r4, r5, r6, lr} bd88: e12fff1e bx lr bd8c: e1a00003 mov r0, r3 bd90: eb000140 bl c298 <__sinit> bd94: eaffffc7 b bcb8 <__swsetup_r+0x28> bd98: e5941030 ldr r1, [r4, #48] ; 0x30 bd9c: e3510000 cmp r1, #0 bda0: 0a000007 beq bdc4 <__swsetup_r+0x134> bda4: e2843040 add r3, r4, #64 ; 0x40 bda8: e1510003 cmp r1, r3 bdac: 0a000002 beq bdbc <__swsetup_r+0x12c> bdb0: e1a00005 mov r0, r5 bdb4: eb000298 bl c81c <_free_r> bdb8: e1d420fc ldrsh r2, [r4, #12] bdbc: e3a03000 mov r3, #0 bdc0: e5843030 str r3, [r4, #48] ; 0x30 bdc4: e3a03000 mov r3, #0 bdc8: e5940010 ldr r0, [r4, #16] bdcc: e3c22024 bic r2, r2, #36 ; 0x24 bdd0: e8840009 stm r4, {r0, r3} bdd4: eaffffce b bd14 <__swsetup_r+0x84> bdd8: e3a03009 mov r3, #9 bddc: e3822040 orr r2, r2, #64 ; 0x40 bde0: e5853000 str r3, [r5] bde4: e3e00000 mvn r0, #0 bde8: e1c420bc strh r2, [r4, #12] bdec: eaffffc1 b bcf8 <__swsetup_r+0x68> bdf0: 0000fb6c .word 0x0000fb6c 0000bdf4 : bdf4: e92d4010 push {r4, lr} bdf8: e3a00006 mov r0, #6 bdfc: eb00097f bl e400 be00: e3a00001 mov r0, #1 be04: eb000cf2 bl f1d4 <_exit> 0000be08 <__sflush_r>: be08: e1d130fc ldrsh r3, [r1, #12] be0c: e1a02803 lsl r2, r3, #16 be10: e3120702 tst r2, #524288 ; 0x80000 be14: e92d41f0 push {r4, r5, r6, r7, r8, lr} be18: e1a05001 mov r5, r1 be1c: e1a08000 mov r8, r0 be20: 1a000034 bne bef8 <__sflush_r+0xf0> be24: e5912004 ldr r2, [r1, #4] be28: e3833b02 orr r3, r3, #2048 ; 0x800 be2c: e3520000 cmp r2, #0 be30: e1c130bc strh r3, [r1, #12] be34: da000050 ble bf7c <__sflush_r+0x174> be38: e5954028 ldr r4, [r5, #40] ; 0x28 be3c: e3540000 cmp r4, #0 be40: 0a000050 beq bf88 <__sflush_r+0x180> be44: e3a02000 mov r2, #0 be48: e1a03803 lsl r3, r3, #16 be4c: e2030201 and r0, r3, #268435456 ; 0x10000000 be50: e1b07820 lsrs r7, r0, #16 be54: e5986000 ldr r6, [r8] be58: e1a03823 lsr r3, r3, #16 be5c: e5882000 str r2, [r8] be60: 0a00005e beq bfe0 <__sflush_r+0x1d8> be64: e5952050 ldr r2, [r5, #80] ; 0x50 be68: e3130004 tst r3, #4 be6c: 0a000005 beq be88 <__sflush_r+0x80> be70: e5951030 ldr r1, [r5, #48] ; 0x30 be74: e5953004 ldr r3, [r5, #4] be78: e3510000 cmp r1, #0 be7c: e0422003 sub r2, r2, r3 be80: 1595303c ldrne r3, [r5, #60] ; 0x3c be84: 10422003 subne r2, r2, r3 be88: e3a03000 mov r3, #0 be8c: e595101c ldr r1, [r5, #28] be90: e1a00008 mov r0, r8 be94: e1a0e00f mov lr, pc be98: e12fff14 bx r4 be9c: e3700001 cmn r0, #1 bea0: 0a00003b beq bf94 <__sflush_r+0x18c> bea4: e3a01000 mov r1, #0 bea8: e1d530fc ldrsh r3, [r5, #12] beac: e5952010 ldr r2, [r5, #16] beb0: e3c33b02 bic r3, r3, #2048 ; 0x800 beb4: e3130a01 tst r3, #4096 ; 0x1000 beb8: e1c530bc strh r3, [r5, #12] bebc: e5851004 str r1, [r5, #4] bec0: e5852000 str r2, [r5] bec4: 1a000043 bne bfd8 <__sflush_r+0x1d0> bec8: e5951030 ldr r1, [r5, #48] ; 0x30 becc: e3510000 cmp r1, #0 bed0: e5886000 str r6, [r8] bed4: 0a00002b beq bf88 <__sflush_r+0x180> bed8: e2853040 add r3, r5, #64 ; 0x40 bedc: e1510003 cmp r1, r3 bee0: 11a00008 movne r0, r8 bee4: 1b00024c blne c81c <_free_r> bee8: e3a00000 mov r0, #0 beec: e5850030 str r0, [r5, #48] ; 0x30 bef0: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} bef4: e12fff1e bx lr bef8: e5916010 ldr r6, [r1, #16] befc: e3560000 cmp r6, #0 bf00: 0a000020 beq bf88 <__sflush_r+0x180> bf04: e1a02822 lsr r2, r2, #16 bf08: e3120003 tst r2, #3 bf0c: 13a03000 movne r3, #0 bf10: e5914000 ldr r4, [r1] bf14: 05913014 ldreq r3, [r1, #20] bf18: e0444006 sub r4, r4, r6 bf1c: e3540000 cmp r4, #0 bf20: e5816000 str r6, [r1] bf24: e5813008 str r3, [r1, #8] bf28: ca000003 bgt bf3c <__sflush_r+0x134> bf2c: ea000015 b bf88 <__sflush_r+0x180> bf30: e3540000 cmp r4, #0 bf34: e0866000 add r6, r6, r0 bf38: da000012 ble bf88 <__sflush_r+0x180> bf3c: e1a03004 mov r3, r4 bf40: e5957024 ldr r7, [r5, #36] ; 0x24 bf44: e1a02006 mov r2, r6 bf48: e595101c ldr r1, [r5, #28] bf4c: e1a00008 mov r0, r8 bf50: e1a0e00f mov lr, pc bf54: e12fff17 bx r7 bf58: e3500000 cmp r0, #0 bf5c: e0444000 sub r4, r4, r0 bf60: cafffff2 bgt bf30 <__sflush_r+0x128> bf64: e3e00000 mvn r0, #0 bf68: e1d530bc ldrh r3, [r5, #12] bf6c: e3833040 orr r3, r3, #64 ; 0x40 bf70: e1c530bc strh r3, [r5, #12] bf74: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} bf78: e12fff1e bx lr bf7c: e591203c ldr r2, [r1, #60] ; 0x3c bf80: e3520000 cmp r2, #0 bf84: caffffab bgt be38 <__sflush_r+0x30> bf88: e3a00000 mov r0, #0 bf8c: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} bf90: e12fff1e bx lr bf94: e5981000 ldr r1, [r8] bf98: e351001d cmp r1, #29 bf9c: 8afffff0 bhi bf64 <__sflush_r+0x15c> bfa0: e59f3098 ldr r3, [pc, #152] ; c040 <__sflush_r+0x238> bfa4: e1e03133 mvn r3, r3, lsr r1 bfa8: e2133001 ands r3, r3, #1 bfac: 1affffec bne bf64 <__sflush_r+0x15c> bfb0: e1d520fc ldrsh r2, [r5, #12] bfb4: e595c010 ldr ip, [r5, #16] bfb8: e3c22b02 bic r2, r2, #2048 ; 0x800 bfbc: e3120a01 tst r2, #4096 ; 0x1000 bfc0: e5853004 str r3, [r5, #4] bfc4: e1c520bc strh r2, [r5, #12] bfc8: e585c000 str ip, [r5] bfcc: 0affffbd beq bec8 <__sflush_r+0xc0> bfd0: e3510000 cmp r1, #0 bfd4: 1affffbb bne bec8 <__sflush_r+0xc0> bfd8: e5850050 str r0, [r5, #80] ; 0x50 bfdc: eaffffb9 b bec8 <__sflush_r+0xc0> bfe0: e1a02007 mov r2, r7 bfe4: e3a03001 mov r3, #1 bfe8: e595101c ldr r1, [r5, #28] bfec: e1a00008 mov r0, r8 bff0: e1a0e00f mov lr, pc bff4: e12fff14 bx r4 bff8: e3700001 cmn r0, #1 bffc: e1a02000 mov r2, r0 c000: 0a000002 beq c010 <__sflush_r+0x208> c004: e1d530bc ldrh r3, [r5, #12] c008: e5954028 ldr r4, [r5, #40] ; 0x28 c00c: eaffff95 b be68 <__sflush_r+0x60> c010: e5983000 ldr r3, [r8] c014: e3530000 cmp r3, #0 c018: 0afffff9 beq c004 <__sflush_r+0x1fc> c01c: e3530016 cmp r3, #22 c020: 1353001d cmpne r3, #29 c024: 11d530bc ldrhne r3, [r5, #12] c028: 13833040 orrne r3, r3, #64 ; 0x40 c02c: 05886000 streq r6, [r8] c030: 01a00007 moveq r0, r7 c034: 11a00002 movne r0, r2 c038: 11c530bc strhne r3, [r5, #12] c03c: eaffffcc b bf74 <__sflush_r+0x16c> c040: 20400001 .word 0x20400001 0000c044 <_fflush_r>: c044: e92d4070 push {r4, r5, r6, lr} c048: e2504000 subs r4, r0, #0 c04c: e1a05001 mov r5, r1 c050: 0a000002 beq c060 <_fflush_r+0x1c> c054: e5943038 ldr r3, [r4, #56] ; 0x38 c058: e3530000 cmp r3, #0 c05c: 0a000015 beq c0b8 <_fflush_r+0x74> c060: e1d500fc ldrsh r0, [r5, #12] c064: e3500000 cmp r0, #0 c068: 01a04000 moveq r4, r0 c06c: 0a00000e beq c0ac <_fflush_r+0x68> c070: e5953064 ldr r3, [r5, #100] ; 0x64 c074: e3130001 tst r3, #1 c078: 1a000001 bne c084 <_fflush_r+0x40> c07c: e3100c02 tst r0, #512 ; 0x200 c080: 0a000013 beq c0d4 <_fflush_r+0x90> c084: e1a00004 mov r0, r4 c088: e1a01005 mov r1, r5 c08c: ebffff5d bl be08 <__sflush_r> c090: e5953064 ldr r3, [r5, #100] ; 0x64 c094: e3130001 tst r3, #1 c098: e1a04000 mov r4, r0 c09c: 1a000002 bne c0ac <_fflush_r+0x68> c0a0: e1d530bc ldrh r3, [r5, #12] c0a4: e3130c02 tst r3, #512 ; 0x200 c0a8: 0a000004 beq c0c0 <_fflush_r+0x7c> c0ac: e1a00004 mov r0, r4 c0b0: e8bd4070 pop {r4, r5, r6, lr} c0b4: e12fff1e bx lr c0b8: eb000076 bl c298 <__sinit> c0bc: eaffffe7 b c060 <_fflush_r+0x1c> c0c0: e5950058 ldr r0, [r5, #88] ; 0x58 c0c4: eb000448 bl d1ec <__retarget_lock_release_recursive> c0c8: e1a00004 mov r0, r4 c0cc: e8bd4070 pop {r4, r5, r6, lr} c0d0: e12fff1e bx lr c0d4: e5950058 ldr r0, [r5, #88] ; 0x58 c0d8: eb00043d bl d1d4 <__retarget_lock_acquire_recursive> c0dc: eaffffe8 b c084 <_fflush_r+0x40> 0000c0e0 : c0e0: e2501000 subs r1, r0, #0 c0e4: 159f3020 ldrne r3, [pc, #32] ; c10c c0e8: 15930000 ldrne r0, [r3] c0ec: 1affffd4 bne c044 <_fflush_r> c0f0: e92d4010 push {r4, lr} c0f4: e59f3014 ldr r3, [pc, #20] ; c110 c0f8: e59f1014 ldr r1, [pc, #20] ; c114 c0fc: e5930000 ldr r0, [r3] c100: eb0003d5 bl d05c <_fwalk_reent> c104: e8bd4010 pop {r4, lr} c108: e12fff1e bx lr c10c: 0000fb6c .word 0x0000fb6c c110: 0000f5b4 .word 0x0000f5b4 c114: 0000c044 .word 0x0000c044 0000c118 <_cleanup_r>: c118: e92d4010 push {r4, lr} c11c: e59f1008 ldr r1, [pc, #8] ; c12c <_cleanup_r+0x14> c120: eb0003cd bl d05c <_fwalk_reent> c124: e8bd4010 pop {r4, lr} c128: e12fff1e bx lr c12c: 0000eb6c .word 0x0000eb6c 0000c130 : c130: e3a03000 mov r3, #0 c134: e92d4010 push {r4, lr} c138: e1a04000 mov r4, r0 c13c: e1c010bc strh r1, [r0, #12] c140: e1c020be strh r2, [r0, #14] c144: e5803000 str r3, [r0] c148: e5803004 str r3, [r0, #4] c14c: e5803008 str r3, [r0, #8] c150: e5803064 str r3, [r0, #100] ; 0x64 c154: e5803010 str r3, [r0, #16] c158: e5803014 str r3, [r0, #20] c15c: e5803018 str r3, [r0, #24] c160: e1a01003 mov r1, r3 c164: e3a02008 mov r2, #8 c168: e280005c add r0, r0, #92 ; 0x5c c16c: ebfff954 bl a6c4 c170: e59f002c ldr r0, [pc, #44] ; c1a4 c174: e59f102c ldr r1, [pc, #44] ; c1a8 c178: e59f202c ldr r2, [pc, #44] ; c1ac c17c: e59f302c ldr r3, [pc, #44] ; c1b0 c180: e5840020 str r0, [r4, #32] c184: e584401c str r4, [r4, #28] c188: e5841024 str r1, [r4, #36] ; 0x24 c18c: e5842028 str r2, [r4, #40] ; 0x28 c190: e584302c str r3, [r4, #44] ; 0x2c c194: e2840058 add r0, r4, #88 ; 0x58 c198: eb000409 bl d1c4 <__retarget_lock_init_recursive> c19c: e8bd4010 pop {r4, lr} c1a0: e12fff1e bx lr c1a4: 0000e4b8 .word 0x0000e4b8 c1a8: 0000e4f4 .word 0x0000e4f4 c1ac: 0000e54c .word 0x0000e54c c1b0: 0000e57c .word 0x0000e57c 0000c1b4 <__fp_lock>: c1b4: e5903064 ldr r3, [r0, #100] ; 0x64 c1b8: e3130001 tst r3, #1 c1bc: 1a000002 bne c1cc <__fp_lock+0x18> c1c0: e1d030bc ldrh r3, [r0, #12] c1c4: e3130c02 tst r3, #512 ; 0x200 c1c8: 0a000001 beq c1d4 <__fp_lock+0x20> c1cc: e3a00000 mov r0, #0 c1d0: e12fff1e bx lr c1d4: e92d4010 push {r4, lr} c1d8: e5900058 ldr r0, [r0, #88] ; 0x58 c1dc: eb0003fc bl d1d4 <__retarget_lock_acquire_recursive> c1e0: e3a00000 mov r0, #0 c1e4: e8bd4010 pop {r4, lr} c1e8: e12fff1e bx lr 0000c1ec <__fp_unlock>: c1ec: e5903064 ldr r3, [r0, #100] ; 0x64 c1f0: e3130001 tst r3, #1 c1f4: 1a000002 bne c204 <__fp_unlock+0x18> c1f8: e1d030bc ldrh r3, [r0, #12] c1fc: e3130c02 tst r3, #512 ; 0x200 c200: 0a000001 beq c20c <__fp_unlock+0x20> c204: e3a00000 mov r0, #0 c208: e12fff1e bx lr c20c: e92d4010 push {r4, lr} c210: e5900058 ldr r0, [r0, #88] ; 0x58 c214: eb0003f4 bl d1ec <__retarget_lock_release_recursive> c218: e3a00000 mov r0, #0 c21c: e8bd4010 pop {r4, lr} c220: e12fff1e bx lr 0000c224 <__sfmoreglue>: c224: e2412001 sub r2, r1, #1 c228: e92d4070 push {r4, r5, r6, lr} c22c: e0824082 add r4, r2, r2, lsl #1 c230: e0822104 add r2, r2, r4, lsl #2 c234: e1a04182 lsl r4, r2, #3 c238: e1a06001 mov r6, r1 c23c: e2841074 add r1, r4, #116 ; 0x74 c240: eb000452 bl d390 <_malloc_r> c244: e2505000 subs r5, r0, #0 c248: 0a000006 beq c268 <__sfmoreglue+0x44> c24c: e3a01000 mov r1, #0 c250: e285000c add r0, r5, #12 c254: e5856004 str r6, [r5, #4] c258: e2842068 add r2, r4, #104 ; 0x68 c25c: e5851000 str r1, [r5] c260: e5850008 str r0, [r5, #8] c264: ebfff916 bl a6c4 c268: e1a00005 mov r0, r5 c26c: e8bd4070 pop {r4, r5, r6, lr} c270: e12fff1e bx lr 0000c274 <_cleanup>: c274: e92d4010 push {r4, lr} c278: e59f3010 ldr r3, [pc, #16] ; c290 <_cleanup+0x1c> c27c: e59f1010 ldr r1, [pc, #16] ; c294 <_cleanup+0x20> c280: e5930000 ldr r0, [r3] c284: eb000374 bl d05c <_fwalk_reent> c288: e8bd4010 pop {r4, lr} c28c: e12fff1e bx lr c290: 0000f5b4 .word 0x0000f5b4 c294: 0000eb6c .word 0x0000eb6c 0000c298 <__sinit>: c298: e92d4010 push {r4, lr} c29c: e1a04000 mov r4, r0 c2a0: e59f007c ldr r0, [pc, #124] ; c324 <__sinit+0x8c> c2a4: eb0003ca bl d1d4 <__retarget_lock_acquire_recursive> c2a8: e5942038 ldr r2, [r4, #56] ; 0x38 c2ac: e3520000 cmp r2, #0 c2b0: 1a000017 bne c314 <__sinit+0x7c> c2b4: e3a00003 mov r0, #3 c2b8: e59f1068 ldr r1, [pc, #104] ; c328 <__sinit+0x90> c2bc: e2843fbb add r3, r4, #748 ; 0x2ec c2c0: e58432e8 str r3, [r4, #744] ; 0x2e8 c2c4: e58422e0 str r2, [r4, #736] ; 0x2e0 c2c8: e58402e4 str r0, [r4, #740] ; 0x2e4 c2cc: e584103c str r1, [r4, #60] ; 0x3c c2d0: e5940004 ldr r0, [r4, #4] c2d4: e3a01004 mov r1, #4 c2d8: ebffff94 bl c130 c2dc: e5940008 ldr r0, [r4, #8] c2e0: e3a02001 mov r2, #1 c2e4: e3a01009 mov r1, #9 c2e8: ebffff90 bl c130 c2ec: e594000c ldr r0, [r4, #12] c2f0: e3a02002 mov r2, #2 c2f4: e3a01012 mov r1, #18 c2f8: ebffff8c bl c130 c2fc: e3a03001 mov r3, #1 c300: e59f001c ldr r0, [pc, #28] ; c324 <__sinit+0x8c> c304: e5843038 str r3, [r4, #56] ; 0x38 c308: eb0003b7 bl d1ec <__retarget_lock_release_recursive> c30c: e8bd4010 pop {r4, lr} c310: e12fff1e bx lr c314: e59f0008 ldr r0, [pc, #8] ; c324 <__sinit+0x8c> c318: eb0003b3 bl d1ec <__retarget_lock_release_recursive> c31c: e8bd4010 pop {r4, lr} c320: e12fff1e bx lr c324: 00010580 .word 0x00010580 c328: 0000c118 .word 0x0000c118 0000c32c <__sfp>: c32c: e92d41f0 push {r4, r5, r6, r7, r8, lr} c330: e1a06000 mov r6, r0 c334: e59f0108 ldr r0, [pc, #264] ; c444 <__sfp+0x118> c338: eb0003a5 bl d1d4 <__retarget_lock_acquire_recursive> c33c: e59f3104 ldr r3, [pc, #260] ; c448 <__sfp+0x11c> c340: e5935000 ldr r5, [r3] c344: e5953038 ldr r3, [r5, #56] ; 0x38 c348: e3530000 cmp r3, #0 c34c: 0a00002d beq c408 <__sfp+0xdc> c350: e3a07004 mov r7, #4 c354: e2855e2e add r5, r5, #736 ; 0x2e0 c358: e5953004 ldr r3, [r5, #4] c35c: e2533001 subs r3, r3, #1 c360: e5954008 ldr r4, [r5, #8] c364: 5a000004 bpl c37c <__sfp+0x50> c368: ea000021 b c3f4 <__sfp+0xc8> c36c: e2433001 sub r3, r3, #1 c370: e3730001 cmn r3, #1 c374: e2844068 add r4, r4, #104 ; 0x68 c378: 0a00001d beq c3f4 <__sfp+0xc8> c37c: e1d420fc ldrsh r2, [r4, #12] c380: e3520000 cmp r2, #0 c384: 1afffff8 bne c36c <__sfp+0x40> c388: e3a05000 mov r5, #0 c38c: e3e02000 mvn r2, #0 c390: e3a03001 mov r3, #1 c394: e1c420be strh r2, [r4, #14] c398: e1c430bc strh r3, [r4, #12] c39c: e2840058 add r0, r4, #88 ; 0x58 c3a0: e5845064 str r5, [r4, #100] ; 0x64 c3a4: eb000386 bl d1c4 <__retarget_lock_init_recursive> c3a8: e59f0094 ldr r0, [pc, #148] ; c444 <__sfp+0x118> c3ac: eb00038e bl d1ec <__retarget_lock_release_recursive> c3b0: e5845000 str r5, [r4] c3b4: e5845008 str r5, [r4, #8] c3b8: e5845004 str r5, [r4, #4] c3bc: e5845010 str r5, [r4, #16] c3c0: e5845014 str r5, [r4, #20] c3c4: e5845018 str r5, [r4, #24] c3c8: e1a01005 mov r1, r5 c3cc: e3a02008 mov r2, #8 c3d0: e284005c add r0, r4, #92 ; 0x5c c3d4: ebfff8ba bl a6c4 c3d8: e5845030 str r5, [r4, #48] ; 0x30 c3dc: e5845034 str r5, [r4, #52] ; 0x34 c3e0: e5845044 str r5, [r4, #68] ; 0x44 c3e4: e5845048 str r5, [r4, #72] ; 0x48 c3e8: e1a00004 mov r0, r4 c3ec: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} c3f0: e12fff1e bx lr c3f4: e5954000 ldr r4, [r5] c3f8: e3540000 cmp r4, #0 c3fc: 0a000004 beq c414 <__sfp+0xe8> c400: e1a05004 mov r5, r4 c404: eaffffd3 b c358 <__sfp+0x2c> c408: e1a00005 mov r0, r5 c40c: ebffffa1 bl c298 <__sinit> c410: eaffffce b c350 <__sfp+0x24> c414: e1a01007 mov r1, r7 c418: e1a00006 mov r0, r6 c41c: ebffff80 bl c224 <__sfmoreglue> c420: e3500000 cmp r0, #0 c424: e1a04000 mov r4, r0 c428: e5850000 str r0, [r5] c42c: 1afffff3 bne c400 <__sfp+0xd4> c430: e59f000c ldr r0, [pc, #12] ; c444 <__sfp+0x118> c434: eb00036c bl d1ec <__retarget_lock_release_recursive> c438: e3a0300c mov r3, #12 c43c: e5863000 str r3, [r6] c440: eaffffe8 b c3e8 <__sfp+0xbc> c444: 00010594 .word 0x00010594 c448: 0000f5b4 .word 0x0000f5b4 0000c44c <__sfp_lock_acquire>: c44c: e92d4010 push {r4, lr} c450: e59f0008 ldr r0, [pc, #8] ; c460 <__sfp_lock_acquire+0x14> c454: eb00035e bl d1d4 <__retarget_lock_acquire_recursive> c458: e8bd4010 pop {r4, lr} c45c: e12fff1e bx lr c460: 00010594 .word 0x00010594 0000c464 <__sfp_lock_release>: c464: e92d4010 push {r4, lr} c468: e59f0008 ldr r0, [pc, #8] ; c478 <__sfp_lock_release+0x14> c46c: eb00035e bl d1ec <__retarget_lock_release_recursive> c470: e8bd4010 pop {r4, lr} c474: e12fff1e bx lr c478: 00010594 .word 0x00010594 0000c47c <__sinit_lock_acquire>: c47c: e92d4010 push {r4, lr} c480: e59f0008 ldr r0, [pc, #8] ; c490 <__sinit_lock_acquire+0x14> c484: eb000352 bl d1d4 <__retarget_lock_acquire_recursive> c488: e8bd4010 pop {r4, lr} c48c: e12fff1e bx lr c490: 00010580 .word 0x00010580 0000c494 <__sinit_lock_release>: c494: e92d4010 push {r4, lr} c498: e59f0008 ldr r0, [pc, #8] ; c4a8 <__sinit_lock_release+0x14> c49c: eb000352 bl d1ec <__retarget_lock_release_recursive> c4a0: e8bd4010 pop {r4, lr} c4a4: e12fff1e bx lr c4a8: 00010580 .word 0x00010580 0000c4ac <__fp_lock_all>: c4ac: e92d4010 push {r4, lr} c4b0: e59f0018 ldr r0, [pc, #24] ; c4d0 <__fp_lock_all+0x24> c4b4: eb000346 bl d1d4 <__retarget_lock_acquire_recursive> c4b8: e59f3014 ldr r3, [pc, #20] ; c4d4 <__fp_lock_all+0x28> c4bc: e59f1014 ldr r1, [pc, #20] ; c4d8 <__fp_lock_all+0x2c> c4c0: e5930000 ldr r0, [r3] c4c4: eb0002c3 bl cfd8 <_fwalk> c4c8: e8bd4010 pop {r4, lr} c4cc: e12fff1e bx lr c4d0: 00010594 .word 0x00010594 c4d4: 0000fb6c .word 0x0000fb6c c4d8: 0000c1b4 .word 0x0000c1b4 0000c4dc <__fp_unlock_all>: c4dc: e92d4010 push {r4, lr} c4e0: e59f3018 ldr r3, [pc, #24] ; c500 <__fp_unlock_all+0x24> c4e4: e59f1018 ldr r1, [pc, #24] ; c504 <__fp_unlock_all+0x28> c4e8: e5930000 ldr r0, [r3] c4ec: eb0002b9 bl cfd8 <_fwalk> c4f0: e59f0010 ldr r0, [pc, #16] ; c508 <__fp_unlock_all+0x2c> c4f4: eb00033c bl d1ec <__retarget_lock_release_recursive> c4f8: e8bd4010 pop {r4, lr} c4fc: e12fff1e bx lr c500: 0000fb6c .word 0x0000fb6c c504: 0000c1ec .word 0x0000c1ec c508: 00010594 .word 0x00010594 0000c50c <__fputwc>: c50c: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} c510: e24dd00c sub sp, sp, #12 c514: e1a08000 mov r8, r0 c518: e1a07001 mov r7, r1 c51c: e1a04002 mov r4, r2 c520: eb00030a bl d150 <__locale_mb_cur_max> c524: e3500001 cmp r0, #1 c528: 0a000030 beq c5f0 <__fputwc+0xe4> c52c: e284305c add r3, r4, #92 ; 0x5c c530: e1a02007 mov r2, r7 c534: e28d1004 add r1, sp, #4 c538: e1a00008 mov r0, r8 c53c: eb000907 bl e960 <_wcrtomb_r> c540: e3700001 cmn r0, #1 c544: e1a06000 mov r6, r0 c548: 0a000022 beq c5d8 <__fputwc+0xcc> c54c: e3500000 cmp r0, #0 c550: 15dd1004 ldrbne r1, [sp, #4] c554: 0a00002c beq c60c <__fputwc+0x100> c558: e3a05000 mov r5, #0 c55c: e28d9004 add r9, sp, #4 c560: ea000007 b c584 <__fputwc+0x78> c564: e5943000 ldr r3, [r4] c568: e2832001 add r2, r3, #1 c56c: e5842000 str r2, [r4] c570: e5c31000 strb r1, [r3] c574: e2855001 add r5, r5, #1 c578: e1560005 cmp r6, r5 c57c: 9a000022 bls c60c <__fputwc+0x100> c580: e7d51009 ldrb r1, [r5, r9] c584: e5943008 ldr r3, [r4, #8] c588: e2433001 sub r3, r3, #1 c58c: e3530000 cmp r3, #0 c590: e5843008 str r3, [r4, #8] c594: aafffff2 bge c564 <__fputwc+0x58> c598: e5942018 ldr r2, [r4, #24] c59c: e1530002 cmp r3, r2 c5a0: b3a03000 movlt r3, #0 c5a4: a3a03001 movge r3, #1 c5a8: e351000a cmp r1, #10 c5ac: 03a03000 moveq r3, #0 c5b0: e3530000 cmp r3, #0 c5b4: 1affffea bne c564 <__fputwc+0x58> c5b8: e1a02004 mov r2, r4 c5bc: e1a00008 mov r0, r8 c5c0: eb000893 bl e814 <__swbuf_r> c5c4: e3700001 cmn r0, #1 c5c8: 1affffe9 bne c574 <__fputwc+0x68> c5cc: e28dd00c add sp, sp, #12 c5d0: e8bd43f0 pop {r4, r5, r6, r7, r8, r9, lr} c5d4: e12fff1e bx lr c5d8: e1d430bc ldrh r3, [r4, #12] c5dc: e3833040 orr r3, r3, #64 ; 0x40 c5e0: e1c430bc strh r3, [r4, #12] c5e4: e28dd00c add sp, sp, #12 c5e8: e8bd43f0 pop {r4, r5, r6, r7, r8, r9, lr} c5ec: e12fff1e bx lr c5f0: e2473001 sub r3, r7, #1 c5f4: e35300fe cmp r3, #254 ; 0xfe c5f8: 8affffcb bhi c52c <__fputwc+0x20> c5fc: e20710ff and r1, r7, #255 ; 0xff c600: e1a06000 mov r6, r0 c604: e5cd1004 strb r1, [sp, #4] c608: eaffffd2 b c558 <__fputwc+0x4c> c60c: e1a00007 mov r0, r7 c610: e28dd00c add sp, sp, #12 c614: e8bd43f0 pop {r4, r5, r6, r7, r8, r9, lr} c618: e12fff1e bx lr 0000c61c <_fputwc_r>: c61c: e92d4030 push {r4, r5, lr} c620: e5923064 ldr r3, [r2, #100] ; 0x64 c624: e1a04002 mov r4, r2 c628: e1d220fc ldrsh r2, [r2, #12] c62c: e3130001 tst r3, #1 c630: e1a03802 lsl r3, r2, #16 c634: e24dd00c sub sp, sp, #12 c638: e1a05000 mov r5, r0 c63c: 11a03823 lsrne r3, r3, #16 c640: 1a000002 bne c650 <_fputwc_r+0x34> c644: e3130402 tst r3, #33554432 ; 0x2000000 c648: e1a03823 lsr r3, r3, #16 c64c: 0a000019 beq c6b8 <_fputwc_r+0x9c> c650: e3130a02 tst r3, #8192 ; 0x2000 c654: 05943064 ldreq r3, [r4, #100] ; 0x64 c658: 03822a02 orreq r2, r2, #8192 ; 0x2000 c65c: 03833a02 orreq r3, r3, #8192 ; 0x2000 c660: 01c420bc strheq r2, [r4, #12] c664: 05843064 streq r3, [r4, #100] ; 0x64 c668: e1a00005 mov r0, r5 c66c: e1a02004 mov r2, r4 c670: ebffffa5 bl c50c <__fputwc> c674: e5943064 ldr r3, [r4, #100] ; 0x64 c678: e3130001 tst r3, #1 c67c: e1a05000 mov r5, r0 c680: 1a000002 bne c690 <_fputwc_r+0x74> c684: e1d430bc ldrh r3, [r4, #12] c688: e3130c02 tst r3, #512 ; 0x200 c68c: 0a000003 beq c6a0 <_fputwc_r+0x84> c690: e1a00005 mov r0, r5 c694: e28dd00c add sp, sp, #12 c698: e8bd4030 pop {r4, r5, lr} c69c: e12fff1e bx lr c6a0: e5940058 ldr r0, [r4, #88] ; 0x58 c6a4: eb0002d0 bl d1ec <__retarget_lock_release_recursive> c6a8: e1a00005 mov r0, r5 c6ac: e28dd00c add sp, sp, #12 c6b0: e8bd4030 pop {r4, r5, lr} c6b4: e12fff1e bx lr c6b8: e5940058 ldr r0, [r4, #88] ; 0x58 c6bc: e58d1004 str r1, [sp, #4] c6c0: eb0002c3 bl d1d4 <__retarget_lock_acquire_recursive> c6c4: e1d420fc ldrsh r2, [r4, #12] c6c8: e1a03802 lsl r3, r2, #16 c6cc: e1a03823 lsr r3, r3, #16 c6d0: e59d1004 ldr r1, [sp, #4] c6d4: eaffffdd b c650 <_fputwc_r+0x34> 0000c6d8 : c6d8: e59f3038 ldr r3, [pc, #56] ; c718 c6dc: e92d4070 push {r4, r5, r6, lr} c6e0: e5934000 ldr r4, [r3] c6e4: e3540000 cmp r4, #0 c6e8: e1a05000 mov r5, r0 c6ec: e1a06001 mov r6, r1 c6f0: 0a000003 beq c704 c6f4: e5943038 ldr r3, [r4, #56] ; 0x38 c6f8: e3530000 cmp r3, #0 c6fc: 01a00004 moveq r0, r4 c700: 0bfffee4 bleq c298 <__sinit> c704: e1a02006 mov r2, r6 c708: e1a01005 mov r1, r5 c70c: e1a00004 mov r0, r4 c710: e8bd4070 pop {r4, r5, r6, lr} c714: eaffffc0 b c61c <_fputwc_r> c718: 0000fb6c .word 0x0000fb6c 0000c71c <_malloc_trim_r>: c71c: e92d41f0 push {r4, r5, r6, r7, r8, lr} c720: e1a04001 mov r4, r1 c724: e59f70e4 ldr r7, [pc, #228] ; c810 <_malloc_trim_r+0xf4> c728: e1a06000 mov r6, r0 c72c: eb00055e bl dcac <__malloc_lock> c730: e5973008 ldr r3, [r7, #8] c734: e5935004 ldr r5, [r3, #4] c738: e2641efe rsb r1, r4, #4064 ; 0xfe0 c73c: e281100f add r1, r1, #15 c740: e3c55003 bic r5, r5, #3 c744: e0814005 add r4, r1, r5 c748: e1a04624 lsr r4, r4, #12 c74c: e2444001 sub r4, r4, #1 c750: e1a04604 lsl r4, r4, #12 c754: e3540a01 cmp r4, #4096 ; 0x1000 c758: ba000006 blt c778 <_malloc_trim_r+0x5c> c75c: e3a01000 mov r1, #0 c760: e1a00006 mov r0, r6 c764: eb000691 bl e1b0 <_sbrk_r> c768: e5973008 ldr r3, [r7, #8] c76c: e0833005 add r3, r3, r5 c770: e1500003 cmp r0, r3 c774: 0a000004 beq c78c <_malloc_trim_r+0x70> c778: e1a00006 mov r0, r6 c77c: eb000550 bl dcc4 <__malloc_unlock> c780: e3a00000 mov r0, #0 c784: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} c788: e12fff1e bx lr c78c: e2641000 rsb r1, r4, #0 c790: e1a00006 mov r0, r6 c794: eb000685 bl e1b0 <_sbrk_r> c798: e3700001 cmn r0, #1 c79c: 0a00000c beq c7d4 <_malloc_trim_r+0xb8> c7a0: e59f206c ldr r2, [pc, #108] ; c814 <_malloc_trim_r+0xf8> c7a4: e5971008 ldr r1, [r7, #8] c7a8: e5923000 ldr r3, [r2] c7ac: e0455004 sub r5, r5, r4 c7b0: e3855001 orr r5, r5, #1 c7b4: e1a00006 mov r0, r6 c7b8: e0434004 sub r4, r3, r4 c7bc: e5815004 str r5, [r1, #4] c7c0: e5824000 str r4, [r2] c7c4: eb00053e bl dcc4 <__malloc_unlock> c7c8: e3a00001 mov r0, #1 c7cc: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} c7d0: e12fff1e bx lr c7d4: e3a01000 mov r1, #0 c7d8: e1a00006 mov r0, r6 c7dc: eb000673 bl e1b0 <_sbrk_r> c7e0: e5972008 ldr r2, [r7, #8] c7e4: e0403002 sub r3, r0, r2 c7e8: e353000f cmp r3, #15 c7ec: daffffe1 ble c778 <_malloc_trim_r+0x5c> c7f0: e59f1020 ldr r1, [pc, #32] ; c818 <_malloc_trim_r+0xfc> c7f4: e591c000 ldr ip, [r1] c7f8: e59f1014 ldr r1, [pc, #20] ; c814 <_malloc_trim_r+0xf8> c7fc: e3833001 orr r3, r3, #1 c800: e040000c sub r0, r0, ip c804: e5823004 str r3, [r2, #4] c808: e5810000 str r0, [r1] c80c: eaffffd9 b c778 <_malloc_trim_r+0x5c> c810: 00010104 .word 0x00010104 c814: 0001053c .word 0x0001053c c818: 0001050c .word 0x0001050c 0000c81c <_free_r>: c81c: e92d4070 push {r4, r5, r6, lr} c820: e2514000 subs r4, r1, #0 c824: 0a000031 beq c8f0 <_free_r+0xd4> c828: e1a05000 mov r5, r0 c82c: eb00051e bl dcac <__malloc_lock> c830: e5141004 ldr r1, [r4, #-4] c834: e59fe2ac ldr lr, [pc, #684] ; cae8 <_free_r+0x2cc> c838: e3c13001 bic r3, r1, #1 c83c: e244c008 sub ip, r4, #8 c840: e08c0003 add r0, ip, r3 c844: e59e6008 ldr r6, [lr, #8] c848: e5902004 ldr r2, [r0, #4] c84c: e1500006 cmp r0, r6 c850: e3c22003 bic r2, r2, #3 c854: 0a00004e beq c994 <_free_r+0x178> c858: e3110001 tst r1, #1 c85c: e5802004 str r2, [r0, #4] c860: 1a000009 bne c88c <_free_r+0x70> c864: e5144008 ldr r4, [r4, #-8] c868: e04cc004 sub ip, ip, r4 c86c: e59c1008 ldr r1, [ip, #8] c870: e28e6008 add r6, lr, #8 c874: e1510006 cmp r1, r6 c878: e0833004 add r3, r3, r4 c87c: 0a00005c beq c9f4 <_free_r+0x1d8> c880: e59c400c ldr r4, [ip, #12] c884: e581400c str r4, [r1, #12] c888: e5841008 str r1, [r4, #8] c88c: e0801002 add r1, r0, r2 c890: e5911004 ldr r1, [r1, #4] c894: e3110001 tst r1, #1 c898: 13832001 orrne r2, r3, #1 c89c: 158c2004 strne r2, [ip, #4] c8a0: 178c3003 strne r3, [ip, r3] c8a4: 0a00002c beq c95c <_free_r+0x140> c8a8: e3530c02 cmp r3, #512 ; 0x200 c8ac: 2a000011 bcs c8f8 <_free_r+0xdc> c8b0: e3a04001 mov r4, #1 c8b4: e59e0004 ldr r0, [lr, #4] c8b8: e1a031a3 lsr r3, r3, #3 c8bc: e0832004 add r2, r3, r4 c8c0: e1a03143 asr r3, r3, #2 c8c4: e1803314 orr r3, r0, r4, lsl r3 c8c8: e08e1182 add r1, lr, r2, lsl #3 c8cc: e79e0182 ldr r0, [lr, r2, lsl #3] c8d0: e2411008 sub r1, r1, #8 c8d4: e58e3004 str r3, [lr, #4] c8d8: e58c100c str r1, [ip, #12] c8dc: e58c0008 str r0, [ip, #8] c8e0: e78ec182 str ip, [lr, r2, lsl #3] c8e4: e580c00c str ip, [r0, #12] c8e8: e1a00005 mov r0, r5 c8ec: eb0004f4 bl dcc4 <__malloc_unlock> c8f0: e8bd4070 pop {r4, r5, r6, lr} c8f4: e12fff1e bx lr c8f8: e1a024a3 lsr r2, r3, #9 c8fc: e3520004 cmp r2, #4 c900: 8a000048 bhi ca28 <_free_r+0x20c> c904: e1a02323 lsr r2, r3, #6 c908: e2824039 add r4, r2, #57 ; 0x39 c90c: e1a04184 lsl r4, r4, #3 c910: e2821038 add r1, r2, #56 ; 0x38 c914: e08e0004 add r0, lr, r4 c918: e79e2004 ldr r2, [lr, r4] c91c: e2400008 sub r0, r0, #8 c920: e1500002 cmp r0, r2 c924: 0a000045 beq ca40 <_free_r+0x224> c928: e5921004 ldr r1, [r2, #4] c92c: e3c11003 bic r1, r1, #3 c930: e1530001 cmp r3, r1 c934: 2a00002c bcs c9ec <_free_r+0x1d0> c938: e5922008 ldr r2, [r2, #8] c93c: e1500002 cmp r0, r2 c940: 1afffff8 bne c928 <_free_r+0x10c> c944: e590300c ldr r3, [r0, #12] c948: e58c300c str r3, [ip, #12] c94c: e58c0008 str r0, [ip, #8] c950: e583c008 str ip, [r3, #8] c954: e580c00c str ip, [r0, #12] c958: eaffffe2 b c8e8 <_free_r+0xcc> c95c: e5901008 ldr r1, [r0, #8] c960: e59f4184 ldr r4, [pc, #388] ; caec <_free_r+0x2d0> c964: e1510004 cmp r1, r4 c968: e0833002 add r3, r3, r2 c96c: 0a00003a beq ca5c <_free_r+0x240> c970: e590000c ldr r0, [r0, #12] c974: e3832001 orr r2, r3, #1 c978: e3530c02 cmp r3, #512 ; 0x200 c97c: e581000c str r0, [r1, #12] c980: e5801008 str r1, [r0, #8] c984: e58c2004 str r2, [ip, #4] c988: e78c3003 str r3, [ip, r3] c98c: 2affffd9 bcs c8f8 <_free_r+0xdc> c990: eaffffc6 b c8b0 <_free_r+0x94> c994: e3110001 tst r1, #1 c998: e0833002 add r3, r3, r2 c99c: 1a000006 bne c9bc <_free_r+0x1a0> c9a0: e5142008 ldr r2, [r4, #-8] c9a4: e04cc002 sub ip, ip, r2 c9a8: e28c0008 add r0, ip, #8 c9ac: e8900003 ldm r0, {r0, r1} c9b0: e580100c str r1, [r0, #12] c9b4: e5810008 str r0, [r1, #8] c9b8: e0833002 add r3, r3, r2 c9bc: e59f212c ldr r2, [pc, #300] ; caf0 <_free_r+0x2d4> c9c0: e5921000 ldr r1, [r2] c9c4: e3832001 orr r2, r3, #1 c9c8: e1530001 cmp r3, r1 c9cc: e58c2004 str r2, [ip, #4] c9d0: e58ec008 str ip, [lr, #8] c9d4: 3affffc3 bcc c8e8 <_free_r+0xcc> c9d8: e59f3114 ldr r3, [pc, #276] ; caf4 <_free_r+0x2d8> c9dc: e1a00005 mov r0, r5 c9e0: e5931000 ldr r1, [r3] c9e4: ebffff4c bl c71c <_malloc_trim_r> c9e8: eaffffbe b c8e8 <_free_r+0xcc> c9ec: e1a00002 mov r0, r2 c9f0: eaffffd3 b c944 <_free_r+0x128> c9f4: e0801002 add r1, r0, r2 c9f8: e5911004 ldr r1, [r1, #4] c9fc: e3110001 tst r1, #1 ca00: 1a000034 bne cad8 <_free_r+0x2bc> ca04: e2801008 add r1, r0, #8 ca08: e0823003 add r3, r2, r3 ca0c: e8910006 ldm r1, {r1, r2} ca10: e3830001 orr r0, r3, #1 ca14: e581200c str r2, [r1, #12] ca18: e5821008 str r1, [r2, #8] ca1c: e58c0004 str r0, [ip, #4] ca20: e78c3003 str r3, [ip, r3] ca24: eaffffaf b c8e8 <_free_r+0xcc> ca28: e3520014 cmp r2, #20 ca2c: 8a000012 bhi ca7c <_free_r+0x260> ca30: e282405c add r4, r2, #92 ; 0x5c ca34: e1a04184 lsl r4, r4, #3 ca38: e282105b add r1, r2, #91 ; 0x5b ca3c: eaffffb4 b c914 <_free_r+0xf8> ca40: e3a04001 mov r4, #1 ca44: e59e3004 ldr r3, [lr, #4] ca48: e1a02141 asr r2, r1, #2 ca4c: e1832214 orr r2, r3, r4, lsl r2 ca50: e58e2004 str r2, [lr, #4] ca54: e1a03000 mov r3, r0 ca58: eaffffba b c948 <_free_r+0x12c> ca5c: e3832001 orr r2, r3, #1 ca60: e58ec014 str ip, [lr, #20] ca64: e58ec010 str ip, [lr, #16] ca68: e58c100c str r1, [ip, #12] ca6c: e58c1008 str r1, [ip, #8] ca70: e58c2004 str r2, [ip, #4] ca74: e78c3003 str r3, [ip, r3] ca78: eaffff9a b c8e8 <_free_r+0xcc> ca7c: e3520054 cmp r2, #84 ; 0x54 ca80: 8a000004 bhi ca98 <_free_r+0x27c> ca84: e1a02623 lsr r2, r3, #12 ca88: e282406f add r4, r2, #111 ; 0x6f ca8c: e1a04184 lsl r4, r4, #3 ca90: e282106e add r1, r2, #110 ; 0x6e ca94: eaffff9e b c914 <_free_r+0xf8> ca98: e3520f55 cmp r2, #340 ; 0x154 ca9c: 8a000004 bhi cab4 <_free_r+0x298> caa0: e1a027a3 lsr r2, r3, #15 caa4: e2824078 add r4, r2, #120 ; 0x78 caa8: e1a04184 lsl r4, r4, #3 caac: e2821077 add r1, r2, #119 ; 0x77 cab0: eaffff97 b c914 <_free_r+0xf8> cab4: e59f103c ldr r1, [pc, #60] ; caf8 <_free_r+0x2dc> cab8: e1520001 cmp r2, r1 cabc: 91a02923 lsrls r2, r3, #18 cac0: 9282407d addls r4, r2, #125 ; 0x7d cac4: 91a04184 lslls r4, r4, #3 cac8: 9282107c addls r1, r2, #124 ; 0x7c cacc: 83a04ffe movhi r4, #1016 ; 0x3f8 cad0: 83a0107e movhi r1, #126 ; 0x7e cad4: eaffff8e b c914 <_free_r+0xf8> cad8: e3832001 orr r2, r3, #1 cadc: e58c2004 str r2, [ip, #4] cae0: e5803000 str r3, [r0] cae4: eaffff7f b c8e8 <_free_r+0xcc> cae8: 00010104 .word 0x00010104 caec: 0001010c .word 0x0001010c caf0: 00010510 .word 0x00010510 caf4: 0001056c .word 0x0001056c caf8: 00000554 .word 0x00000554 0000cafc <__sfvwrite_r>: cafc: e5923008 ldr r3, [r2, #8] cb00: e3530000 cmp r3, #0 cb04: 0a0000cb beq ce38 <__sfvwrite_r+0x33c> cb08: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} cb0c: e1d130fc ldrsh r3, [r1, #12] cb10: e1a03803 lsl r3, r3, #16 cb14: e3130702 tst r3, #524288 ; 0x80000 cb18: e24dd00c sub sp, sp, #12 cb1c: e1a04001 mov r4, r1 cb20: e1a0b000 mov fp, r0 cb24: e1a06002 mov r6, r2 cb28: e1a0a823 lsr sl, r3, #16 cb2c: 0a000020 beq cbb4 <__sfvwrite_r+0xb8> cb30: e5912010 ldr r2, [r1, #16] cb34: e3520000 cmp r2, #0 cb38: 0a00001d beq cbb4 <__sfvwrite_r+0xb8> cb3c: e21a9002 ands r9, sl, #2 cb40: e5965000 ldr r5, [r6] cb44: 0a000025 beq cbe0 <__sfvwrite_r+0xe4> cb48: e3a08000 mov r8, #0 cb4c: e1a07008 mov r7, r8 cb50: e59f947c ldr r9, [pc, #1148] ; cfd4 <__sfvwrite_r+0x4d8> cb54: e3570000 cmp r7, #0 cb58: 0a00004a beq cc88 <__sfvwrite_r+0x18c> cb5c: e1570009 cmp r7, r9 cb60: 31a03007 movcc r3, r7 cb64: 21a03009 movcs r3, r9 cb68: e594a024 ldr sl, [r4, #36] ; 0x24 cb6c: e1a02008 mov r2, r8 cb70: e594101c ldr r1, [r4, #28] cb74: e1a0000b mov r0, fp cb78: e1a0e00f mov lr, pc cb7c: e12fff1a bx sl cb80: e3500000 cmp r0, #0 cb84: da000089 ble cdb0 <__sfvwrite_r+0x2b4> cb88: e5963008 ldr r3, [r6, #8] cb8c: e0433000 sub r3, r3, r0 cb90: e3530000 cmp r3, #0 cb94: e0888000 add r8, r8, r0 cb98: e0477000 sub r7, r7, r0 cb9c: e5863008 str r3, [r6, #8] cba0: 1affffeb bne cb54 <__sfvwrite_r+0x58> cba4: e3a00000 mov r0, #0 cba8: e28dd00c add sp, sp, #12 cbac: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} cbb0: e12fff1e bx lr cbb4: e1a01004 mov r1, r4 cbb8: e1a0000b mov r0, fp cbbc: ebfffc33 bl bc90 <__swsetup_r> cbc0: e3500000 cmp r0, #0 cbc4: 1a0000fc bne cfbc <__sfvwrite_r+0x4c0> cbc8: e1d430fc ldrsh r3, [r4, #12] cbcc: e1a03803 lsl r3, r3, #16 cbd0: e1a0a823 lsr sl, r3, #16 cbd4: e21a9002 ands r9, sl, #2 cbd8: e5965000 ldr r5, [r6] cbdc: 1affffd9 bne cb48 <__sfvwrite_r+0x4c> cbe0: e21aa001 ands sl, sl, #1 cbe4: 01a0900a moveq r9, sl cbe8: 1a000094 bne ce40 <__sfvwrite_r+0x344> cbec: e3590000 cmp r9, #0 cbf0: 0a000020 beq cc78 <__sfvwrite_r+0x17c> cbf4: e3130402 tst r3, #33554432 ; 0x2000000 cbf8: e5947008 ldr r7, [r4, #8] cbfc: e1a03823 lsr r3, r3, #16 cc00: 0a000024 beq cc98 <__sfvwrite_r+0x19c> cc04: e1590007 cmp r9, r7 cc08: e1a08007 mov r8, r7 cc0c: 3a000037 bcc ccf0 <__sfvwrite_r+0x1f4> cc10: e3130d12 tst r3, #1152 ; 0x480 cc14: 1a00003a bne cd04 <__sfvwrite_r+0x208> cc18: e1a03009 mov r3, r9 cc1c: e5940000 ldr r0, [r4] cc20: e1a02008 mov r2, r8 cc24: e1a0100a mov r1, sl cc28: e58d3004 str r3, [sp, #4] cc2c: ebfff652 bl a57c cc30: e5941008 ldr r1, [r4, #8] cc34: e5942000 ldr r2, [r4] cc38: e0417007 sub r7, r1, r7 cc3c: e0828008 add r8, r2, r8 cc40: e5847008 str r7, [r4, #8] cc44: e5848000 str r8, [r4] cc48: e59d3004 ldr r3, [sp, #4] cc4c: e5962008 ldr r2, [r6, #8] cc50: e0422003 sub r2, r2, r3 cc54: e3520000 cmp r2, #0 cc58: e08aa003 add sl, sl, r3 cc5c: e0499003 sub r9, r9, r3 cc60: e5862008 str r2, [r6, #8] cc64: 0affffce beq cba4 <__sfvwrite_r+0xa8> cc68: e1d430fc ldrsh r3, [r4, #12] cc6c: e3590000 cmp r9, #0 cc70: e1a03803 lsl r3, r3, #16 cc74: 1affffde bne cbf4 <__sfvwrite_r+0xf8> cc78: e595a000 ldr sl, [r5] cc7c: e5959004 ldr r9, [r5, #4] cc80: e2855008 add r5, r5, #8 cc84: eaffffd8 b cbec <__sfvwrite_r+0xf0> cc88: e5958000 ldr r8, [r5] cc8c: e5957004 ldr r7, [r5, #4] cc90: e2855008 add r5, r5, #8 cc94: eaffffae b cb54 <__sfvwrite_r+0x58> cc98: e5940000 ldr r0, [r4] cc9c: e5943010 ldr r3, [r4, #16] cca0: e1500003 cmp r0, r3 cca4: 8a000002 bhi ccb4 <__sfvwrite_r+0x1b8> cca8: e5948014 ldr r8, [r4, #20] ccac: e1590008 cmp r9, r8 ccb0: 2a000045 bcs cdcc <__sfvwrite_r+0x2d0> ccb4: e1570009 cmp r7, r9 ccb8: 21a07009 movcs r7, r9 ccbc: e1a0100a mov r1, sl ccc0: e1a02007 mov r2, r7 ccc4: ebfff62c bl a57c ccc8: e5942008 ldr r2, [r4, #8] cccc: e5943000 ldr r3, [r4] ccd0: e0422007 sub r2, r2, r7 ccd4: e0833007 add r3, r3, r7 ccd8: e3520000 cmp r2, #0 ccdc: e5842008 str r2, [r4, #8] cce0: e5843000 str r3, [r4] cce4: 0a00002c beq cd9c <__sfvwrite_r+0x2a0> cce8: e1a03007 mov r3, r7 ccec: eaffffd6 b cc4c <__sfvwrite_r+0x150> ccf0: e1a07009 mov r7, r9 ccf4: e1a03009 mov r3, r9 ccf8: e1a08009 mov r8, r9 ccfc: e5940000 ldr r0, [r4] cd00: eaffffc6 b cc20 <__sfvwrite_r+0x124> cd04: e5941010 ldr r1, [r4, #16] cd08: e5948000 ldr r8, [r4] cd0c: e5942014 ldr r2, [r4, #20] cd10: e0488001 sub r8, r8, r1 cd14: e0822082 add r2, r2, r2, lsl #1 cd18: e2887001 add r7, r8, #1 cd1c: e0822fa2 add r2, r2, r2, lsr #31 cd20: e0877009 add r7, r7, r9 cd24: e1a020c2 asr r2, r2, #1 cd28: e1570002 cmp r7, r2 cd2c: 91a07002 movls r7, r2 cd30: 81a02007 movhi r2, r7 cd34: e3130b01 tst r3, #1024 ; 0x400 cd38: 0a000032 beq ce08 <__sfvwrite_r+0x30c> cd3c: e1a01002 mov r1, r2 cd40: e1a0000b mov r0, fp cd44: eb000191 bl d390 <_malloc_r> cd48: e2503000 subs r3, r0, #0 cd4c: 0a00009c beq cfc4 <__sfvwrite_r+0x4c8> cd50: e1a02008 mov r2, r8 cd54: e5941010 ldr r1, [r4, #16] cd58: e58d3004 str r3, [sp, #4] cd5c: ebfff5c1 bl a468 cd60: e1d420bc ldrh r2, [r4, #12] cd64: e3c22d12 bic r2, r2, #1152 ; 0x480 cd68: e3822080 orr r2, r2, #128 ; 0x80 cd6c: e1c420bc strh r2, [r4, #12] cd70: e59d3004 ldr r3, [sp, #4] cd74: e0830008 add r0, r3, r8 cd78: e0478008 sub r8, r7, r8 cd7c: e5843010 str r3, [r4, #16] cd80: e5848008 str r8, [r4, #8] cd84: e5847014 str r7, [r4, #20] cd88: e5840000 str r0, [r4] cd8c: e1a07009 mov r7, r9 cd90: e1a03009 mov r3, r9 cd94: e1a08009 mov r8, r9 cd98: eaffffa0 b cc20 <__sfvwrite_r+0x124> cd9c: e1a01004 mov r1, r4 cda0: e1a0000b mov r0, fp cda4: ebfffca6 bl c044 <_fflush_r> cda8: e3500000 cmp r0, #0 cdac: 0affffcd beq cce8 <__sfvwrite_r+0x1ec> cdb0: e1d430fc ldrsh r3, [r4, #12] cdb4: e3e00000 mvn r0, #0 cdb8: e3833040 orr r3, r3, #64 ; 0x40 cdbc: e1c430bc strh r3, [r4, #12] cdc0: e28dd00c add sp, sp, #12 cdc4: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} cdc8: e12fff1e bx lr cdcc: e3790106 cmn r9, #-2147483647 ; 0x80000001 cdd0: 31a00009 movcc r0, r9 cdd4: 23e00102 mvncs r0, #-2147483648 ; 0x80000000 cdd8: e1a01008 mov r1, r8 cddc: ebfff4fa bl a1cc <__divsi3> cde0: e5947024 ldr r7, [r4, #36] ; 0x24 cde4: e0030098 mul r3, r8, r0 cde8: e1a0200a mov r2, sl cdec: e594101c ldr r1, [r4, #28] cdf0: e1a0000b mov r0, fp cdf4: e1a0e00f mov lr, pc cdf8: e12fff17 bx r7 cdfc: e2503000 subs r3, r0, #0 ce00: caffff91 bgt cc4c <__sfvwrite_r+0x150> ce04: eaffffe9 b cdb0 <__sfvwrite_r+0x2b4> ce08: e1a0000b mov r0, fp ce0c: eb0003b2 bl dcdc <_realloc_r> ce10: e2503000 subs r3, r0, #0 ce14: 1affffd6 bne cd74 <__sfvwrite_r+0x278> ce18: e5941010 ldr r1, [r4, #16] ce1c: e1a0000b mov r0, fp ce20: ebfffe7d bl c81c <_free_r> ce24: e3a0200c mov r2, #12 ce28: e1d430fc ldrsh r3, [r4, #12] ce2c: e58b2000 str r2, [fp] ce30: e3c33080 bic r3, r3, #128 ; 0x80 ce34: eaffffde b cdb4 <__sfvwrite_r+0x2b8> ce38: e3a00000 mov r0, #0 ce3c: e12fff1e bx lr ce40: e1a00009 mov r0, r9 ce44: e1a0a009 mov sl, r9 ce48: e1a08009 mov r8, r9 ce4c: ea000026 b ceec <__sfvwrite_r+0x3f0> ce50: e3500000 cmp r0, #0 ce54: 0a00002d beq cf10 <__sfvwrite_r+0x414> ce58: e1590008 cmp r9, r8 ce5c: 31a01009 movcc r1, r9 ce60: 21a01008 movcs r1, r8 ce64: e5942010 ldr r2, [r4, #16] ce68: e594c014 ldr ip, [r4, #20] ce6c: e5943008 ldr r3, [r4, #8] ce70: e5940000 ldr r0, [r4] ce74: e08c3003 add r3, ip, r3 ce78: e1500002 cmp r0, r2 ce7c: 93a02000 movls r2, #0 ce80: 83a02001 movhi r2, #1 ce84: e1510003 cmp r1, r3 ce88: d3a02000 movle r2, #0 ce8c: e3520000 cmp r2, #0 ce90: e1a07001 mov r7, r1 ce94: 1a000038 bne cf7c <__sfvwrite_r+0x480> ce98: e151000c cmp r1, ip ce9c: ba000024 blt cf34 <__sfvwrite_r+0x438> cea0: e5947024 ldr r7, [r4, #36] ; 0x24 cea4: e1a0300c mov r3, ip cea8: e1a0200a mov r2, sl ceac: e594101c ldr r1, [r4, #28] ceb0: e1a0000b mov r0, fp ceb4: e1a0e00f mov lr, pc ceb8: e12fff17 bx r7 cebc: e2507000 subs r7, r0, #0 cec0: daffffba ble cdb0 <__sfvwrite_r+0x2b4> cec4: e0599007 subs r9, r9, r7 cec8: 13a00001 movne r0, #1 cecc: 0a000024 beq cf64 <__sfvwrite_r+0x468> ced0: e5963008 ldr r3, [r6, #8] ced4: e0433007 sub r3, r3, r7 ced8: e3530000 cmp r3, #0 cedc: e08aa007 add sl, sl, r7 cee0: e0488007 sub r8, r8, r7 cee4: e5863008 str r3, [r6, #8] cee8: 0affff2d beq cba4 <__sfvwrite_r+0xa8> ceec: e3580000 cmp r8, #0 cef0: 1affffd6 bne ce50 <__sfvwrite_r+0x354> cef4: e2853008 add r3, r5, #8 cef8: e5138004 ldr r8, [r3, #-4] cefc: e3580000 cmp r8, #0 cf00: e1a05003 mov r5, r3 cf04: e513a008 ldr sl, [r3, #-8] cf08: e2833008 add r3, r3, #8 cf0c: 0afffff9 beq cef8 <__sfvwrite_r+0x3fc> cf10: e1a02008 mov r2, r8 cf14: e3a0100a mov r1, #10 cf18: e1a0000a mov r0, sl cf1c: eb00031e bl db9c cf20: e3500000 cmp r0, #0 cf24: 12800001 addne r0, r0, #1 cf28: 1040900a subne r9, r0, sl cf2c: 02889001 addeq r9, r8, #1 cf30: eaffffc8 b ce58 <__sfvwrite_r+0x35c> cf34: e1a02001 mov r2, r1 cf38: e1a0100a mov r1, sl cf3c: ebfff58e bl a57c cf40: e5942008 ldr r2, [r4, #8] cf44: e5943000 ldr r3, [r4] cf48: e0422007 sub r2, r2, r7 cf4c: e0833007 add r3, r3, r7 cf50: e0599007 subs r9, r9, r7 cf54: e5842008 str r2, [r4, #8] cf58: e5843000 str r3, [r4] cf5c: 13a00001 movne r0, #1 cf60: 1affffda bne ced0 <__sfvwrite_r+0x3d4> cf64: e1a01004 mov r1, r4 cf68: e1a0000b mov r0, fp cf6c: ebfffc34 bl c044 <_fflush_r> cf70: e3500000 cmp r0, #0 cf74: 0affffd5 beq ced0 <__sfvwrite_r+0x3d4> cf78: eaffff8c b cdb0 <__sfvwrite_r+0x2b4> cf7c: e1a02003 mov r2, r3 cf80: e1a0100a mov r1, sl cf84: e58d3004 str r3, [sp, #4] cf88: ebfff57b bl a57c cf8c: e5942000 ldr r2, [r4] cf90: e59d3004 ldr r3, [sp, #4] cf94: e0822003 add r2, r2, r3 cf98: e5842000 str r2, [r4] cf9c: e1a01004 mov r1, r4 cfa0: e1a0000b mov r0, fp cfa4: ebfffc26 bl c044 <_fflush_r> cfa8: e3500000 cmp r0, #0 cfac: e59d3004 ldr r3, [sp, #4] cfb0: 1affff7e bne cdb0 <__sfvwrite_r+0x2b4> cfb4: e1a07003 mov r7, r3 cfb8: eaffffc1 b cec4 <__sfvwrite_r+0x3c8> cfbc: e3e00000 mvn r0, #0 cfc0: eafffef8 b cba8 <__sfvwrite_r+0xac> cfc4: e3a0200c mov r2, #12 cfc8: e1d430fc ldrsh r3, [r4, #12] cfcc: e58b2000 str r2, [fp] cfd0: eaffff77 b cdb4 <__sfvwrite_r+0x2b8> cfd4: 7ffffc00 .word 0x7ffffc00 0000cfd8 <_fwalk>: cfd8: e92d41f0 push {r4, r5, r6, r7, r8, lr} cfdc: e2907e2e adds r7, r0, #736 ; 0x2e0 cfe0: 0a000019 beq d04c <_fwalk+0x74> cfe4: e1a08001 mov r8, r1 cfe8: e3a06000 mov r6, #0 cfec: e5975004 ldr r5, [r7, #4] cff0: e2555001 subs r5, r5, #1 cff4: e5974008 ldr r4, [r7, #8] cff8: 4a00000d bmi d034 <_fwalk+0x5c> cffc: e1d430bc ldrh r3, [r4, #12] d000: e3530001 cmp r3, #1 d004: e2455001 sub r5, r5, #1 d008: 9a000006 bls d028 <_fwalk+0x50> d00c: e1d430fe ldrsh r3, [r4, #14] d010: e3730001 cmn r3, #1 d014: 0a000003 beq d028 <_fwalk+0x50> d018: e1a00004 mov r0, r4 d01c: e1a0e00f mov lr, pc d020: e12fff18 bx r8 d024: e1866000 orr r6, r6, r0 d028: e3750001 cmn r5, #1 d02c: e2844068 add r4, r4, #104 ; 0x68 d030: 1afffff1 bne cffc <_fwalk+0x24> d034: e5977000 ldr r7, [r7] d038: e3570000 cmp r7, #0 d03c: 1affffea bne cfec <_fwalk+0x14> d040: e1a00006 mov r0, r6 d044: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} d048: e12fff1e bx lr d04c: e1a06007 mov r6, r7 d050: e1a00006 mov r0, r6 d054: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} d058: e12fff1e bx lr 0000d05c <_fwalk_reent>: d05c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} d060: e2906e2e adds r6, r0, #736 ; 0x2e0 d064: 0a00001b beq d0d8 <_fwalk_reent+0x7c> d068: e1a08001 mov r8, r1 d06c: e1a07000 mov r7, r0 d070: e3a09000 mov r9, #0 d074: e5965004 ldr r5, [r6, #4] d078: e2555001 subs r5, r5, #1 d07c: e5964008 ldr r4, [r6, #8] d080: 4a00000e bmi d0c0 <_fwalk_reent+0x64> d084: e1d430bc ldrh r3, [r4, #12] d088: e3530001 cmp r3, #1 d08c: e2455001 sub r5, r5, #1 d090: 9a000007 bls d0b4 <_fwalk_reent+0x58> d094: e1d430fe ldrsh r3, [r4, #14] d098: e3730001 cmn r3, #1 d09c: 0a000004 beq d0b4 <_fwalk_reent+0x58> d0a0: e1a01004 mov r1, r4 d0a4: e1a00007 mov r0, r7 d0a8: e1a0e00f mov lr, pc d0ac: e12fff18 bx r8 d0b0: e1899000 orr r9, r9, r0 d0b4: e3750001 cmn r5, #1 d0b8: e2844068 add r4, r4, #104 ; 0x68 d0bc: 1afffff0 bne d084 <_fwalk_reent+0x28> d0c0: e5966000 ldr r6, [r6] d0c4: e3560000 cmp r6, #0 d0c8: 1affffe9 bne d074 <_fwalk_reent+0x18> d0cc: e1a00009 mov r0, r9 d0d0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr} d0d4: e12fff1e bx lr d0d8: e1a09006 mov r9, r6 d0dc: e1a00009 mov r0, r9 d0e0: e8bd47f0 pop {r4, r5, r6, r7, r8, r9, sl, lr} d0e4: e12fff1e bx lr 0000d0e8 <_setlocale_r>: d0e8: e92d4010 push {r4, lr} d0ec: e2524000 subs r4, r2, #0 d0f0: 0a000004 beq d108 <_setlocale_r+0x20> d0f4: e59f1048 ldr r1, [pc, #72] ; d144 <_setlocale_r+0x5c> d0f8: e1a00004 mov r0, r4 d0fc: eb000523 bl e590 d100: e3500000 cmp r0, #0 d104: 1a000002 bne d114 <_setlocale_r+0x2c> d108: e59f0038 ldr r0, [pc, #56] ; d148 <_setlocale_r+0x60> d10c: e8bd4010 pop {r4, lr} d110: e12fff1e bx lr d114: e59f102c ldr r1, [pc, #44] ; d148 <_setlocale_r+0x60> d118: e1a00004 mov r0, r4 d11c: eb00051b bl e590 d120: e3500000 cmp r0, #0 d124: 0afffff7 beq d108 <_setlocale_r+0x20> d128: e1a00004 mov r0, r4 d12c: e59f1018 ldr r1, [pc, #24] ; d14c <_setlocale_r+0x64> d130: eb000516 bl e590 d134: e3500000 cmp r0, #0 d138: 0afffff2 beq d108 <_setlocale_r+0x20> d13c: e3a00000 mov r0, #0 d140: eafffff1 b d10c <_setlocale_r+0x24> d144: 0000f60c .word 0x0000f60c d148: 0000f608 .word 0x0000f608 d14c: 0000f580 .word 0x0000f580 0000d150 <__locale_mb_cur_max>: d150: e59f3018 ldr r3, [pc, #24] ; d170 <__locale_mb_cur_max+0x20> d154: e5933000 ldr r3, [r3] d158: e5933034 ldr r3, [r3, #52] ; 0x34 d15c: e59f2010 ldr r2, [pc, #16] ; d174 <__locale_mb_cur_max+0x24> d160: e3530000 cmp r3, #0 d164: 01a03002 moveq r3, r2 d168: e5d30128 ldrb r0, [r3, #296] ; 0x128 d16c: e12fff1e bx lr d170: 0000fb6c .word 0x0000fb6c d174: 0000ff98 .word 0x0000ff98 0000d178 <__locale_ctype_ptr_l>: d178: e59000ec ldr r0, [r0, #236] ; 0xec d17c: e12fff1e bx lr 0000d180 <__locale_ctype_ptr>: d180: e59f3018 ldr r3, [pc, #24] ; d1a0 <__locale_ctype_ptr+0x20> d184: e5933000 ldr r3, [r3] d188: e5933034 ldr r3, [r3, #52] ; 0x34 d18c: e59f2010 ldr r2, [pc, #16] ; d1a4 <__locale_ctype_ptr+0x24> d190: e3530000 cmp r3, #0 d194: 01a03002 moveq r3, r2 d198: e59300ec ldr r0, [r3, #236] ; 0xec d19c: e12fff1e bx lr d1a0: 0000fb6c .word 0x0000fb6c d1a4: 0000ff98 .word 0x0000ff98 0000d1a8 : d1a8: e59f300c ldr r3, [pc, #12] ; d1bc d1ac: e1a02001 mov r2, r1 d1b0: e1a01000 mov r1, r0 d1b4: e5930000 ldr r0, [r3] d1b8: eaffffca b d0e8 <_setlocale_r> d1bc: 0000fb6c .word 0x0000fb6c 0000d1c0 <__retarget_lock_init>: d1c0: e12fff1e bx lr 0000d1c4 <__retarget_lock_init_recursive>: d1c4: e12fff1e bx lr 0000d1c8 <__retarget_lock_close>: d1c8: e12fff1e bx lr 0000d1cc <__retarget_lock_close_recursive>: d1cc: e12fff1e bx lr 0000d1d0 <__retarget_lock_acquire>: d1d0: e12fff1e bx lr 0000d1d4 <__retarget_lock_acquire_recursive>: d1d4: e12fff1e bx lr 0000d1d8 <__retarget_lock_try_acquire>: d1d8: e3a00001 mov r0, #1 d1dc: e12fff1e bx lr 0000d1e0 <__retarget_lock_try_acquire_recursive>: d1e0: e3a00001 mov r0, #1 d1e4: e12fff1e bx lr 0000d1e8 <__retarget_lock_release>: d1e8: e12fff1e bx lr 0000d1ec <__retarget_lock_release_recursive>: d1ec: e12fff1e bx lr 0000d1f0 <__swhatbuf_r>: d1f0: e92d4070 push {r4, r5, r6, lr} d1f4: e1a04001 mov r4, r1 d1f8: e1d110fe ldrsh r1, [r1, #14] d1fc: e3510000 cmp r1, #0 d200: e24dd040 sub sp, sp, #64 ; 0x40 d204: e1a05002 mov r5, r2 d208: e1a06003 mov r6, r3 d20c: ba00000f blt d250 <__swhatbuf_r+0x60> d210: e28d2004 add r2, sp, #4 d214: eb0006b1 bl ece0 <_fstat_r> d218: e3500000 cmp r0, #0 d21c: ba00000b blt d250 <__swhatbuf_r+0x60> d220: e59d2008 ldr r2, [sp, #8] d224: e2022a0f and r2, r2, #61440 ; 0xf000 d228: e2423a02 sub r3, r2, #8192 ; 0x2000 d22c: e2732000 rsbs r2, r3, #0 d230: e0a22003 adc r2, r2, r3 d234: e3a00b02 mov r0, #2048 ; 0x800 d238: e3a03b01 mov r3, #1024 ; 0x400 d23c: e5862000 str r2, [r6] d240: e5853000 str r3, [r5] d244: e28dd040 add sp, sp, #64 ; 0x40 d248: e8bd4070 pop {r4, r5, r6, lr} d24c: e12fff1e bx lr d250: e3a03000 mov r3, #0 d254: e1d420bc ldrh r2, [r4, #12] d258: e2120080 ands r0, r2, #128 ; 0x80 d25c: e5863000 str r3, [r6] d260: 0a000005 beq d27c <__swhatbuf_r+0x8c> d264: e3a02040 mov r2, #64 ; 0x40 d268: e1a00003 mov r0, r3 d26c: e5852000 str r2, [r5] d270: e28dd040 add sp, sp, #64 ; 0x40 d274: e8bd4070 pop {r4, r5, r6, lr} d278: e12fff1e bx lr d27c: e3a03b01 mov r3, #1024 ; 0x400 d280: e5853000 str r3, [r5] d284: e28dd040 add sp, sp, #64 ; 0x40 d288: e8bd4070 pop {r4, r5, r6, lr} d28c: e12fff1e bx lr 0000d290 <__smakebuf_r>: d290: e92d4070 push {r4, r5, r6, lr} d294: e1d120bc ldrh r2, [r1, #12] d298: e3120002 tst r2, #2 d29c: e24dd008 sub sp, sp, #8 d2a0: e1a04001 mov r4, r1 d2a4: 0a000007 beq d2c8 <__smakebuf_r+0x38> d2a8: e3a01001 mov r1, #1 d2ac: e2842043 add r2, r4, #67 ; 0x43 d2b0: e5841014 str r1, [r4, #20] d2b4: e5842000 str r2, [r4] d2b8: e5842010 str r2, [r4, #16] d2bc: e28dd008 add sp, sp, #8 d2c0: e8bd4070 pop {r4, r5, r6, lr} d2c4: e12fff1e bx lr d2c8: e28d3004 add r3, sp, #4 d2cc: e1a0200d mov r2, sp d2d0: e1a06000 mov r6, r0 d2d4: ebffffc5 bl d1f0 <__swhatbuf_r> d2d8: e59d1000 ldr r1, [sp] d2dc: e1a05000 mov r5, r0 d2e0: e1a00006 mov r0, r6 d2e4: eb000029 bl d390 <_malloc_r> d2e8: e3500000 cmp r0, #0 d2ec: e1d430fc ldrsh r3, [r4, #12] d2f0: 0a00001a beq d360 <__smakebuf_r+0xd0> d2f4: e59dc004 ldr ip, [sp, #4] d2f8: e59f108c ldr r1, [pc, #140] ; d38c <__smakebuf_r+0xfc> d2fc: e59d2000 ldr r2, [sp] d300: e3833080 orr r3, r3, #128 ; 0x80 d304: e35c0000 cmp ip, #0 d308: e586103c str r1, [r6, #60] ; 0x3c d30c: e1c430bc strh r3, [r4, #12] d310: e5840000 str r0, [r4] d314: e5840010 str r0, [r4, #16] d318: e5842014 str r2, [r4, #20] d31c: 1a000004 bne d334 <__smakebuf_r+0xa4> d320: e1833005 orr r3, r3, r5 d324: e1c430bc strh r3, [r4, #12] d328: e28dd008 add sp, sp, #8 d32c: e8bd4070 pop {r4, r5, r6, lr} d330: e12fff1e bx lr d334: e1a00006 mov r0, r6 d338: e1d410fe ldrsh r1, [r4, #14] d33c: eb000678 bl ed24 <_isatty_r> d340: e3500000 cmp r0, #0 d344: 11d430bc ldrhne r3, [r4, #12] d348: 13c33003 bicne r3, r3, #3 d34c: 13833001 orrne r3, r3, #1 d350: 11a03803 lslne r3, r3, #16 d354: 01d430fc ldrsheq r3, [r4, #12] d358: 11a03843 asrne r3, r3, #16 d35c: eaffffef b d320 <__smakebuf_r+0x90> d360: e3130c02 tst r3, #512 ; 0x200 d364: 1affffd4 bne d2bc <__smakebuf_r+0x2c> d368: e3a01001 mov r1, #1 d36c: e3c33003 bic r3, r3, #3 d370: e2842043 add r2, r4, #67 ; 0x43 d374: e3833002 orr r3, r3, #2 d378: e1c430bc strh r3, [r4, #12] d37c: e5841014 str r1, [r4, #20] d380: e5842000 str r2, [r4] d384: e5842010 str r2, [r4, #16] d388: eaffffcb b d2bc <__smakebuf_r+0x2c> d38c: 0000c118 .word 0x0000c118 0000d390 <_malloc_r>: d390: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} d394: e281600b add r6, r1, #11 d398: e3560016 cmp r6, #22 d39c: e24dd00c sub sp, sp, #12 d3a0: e1a05000 mov r5, r0 d3a4: 9a000072 bls d574 <_malloc_r+0x1e4> d3a8: e3c66007 bic r6, r6, #7 d3ac: e1510006 cmp r1, r6 d3b0: 93a01000 movls r1, #0 d3b4: 83a01001 movhi r1, #1 d3b8: e1913fa6 orrs r3, r1, r6, lsr #31 d3bc: 1a000089 bne d5e8 <_malloc_r+0x258> d3c0: eb000239 bl dcac <__malloc_lock> d3c4: e3560f7e cmp r6, #504 ; 0x1f8 d3c8: 3a0001c8 bcc daf0 <_malloc_r+0x760> d3cc: e1b034a6 lsrs r3, r6, #9 d3d0: 0a00008b beq d604 <_malloc_r+0x274> d3d4: e3530004 cmp r3, #4 d3d8: 8a0000d6 bhi d738 <_malloc_r+0x3a8> d3dc: e1a03326 lsr r3, r6, #6 d3e0: e2830039 add r0, r3, #57 ; 0x39 d3e4: e283c038 add ip, r3, #56 ; 0x38 d3e8: e1a01180 lsl r1, r0, #3 d3ec: e59f7708 ldr r7, [pc, #1800] ; dafc <_malloc_r+0x76c> d3f0: e0871001 add r1, r7, r1 d3f4: e5914004 ldr r4, [r1, #4] d3f8: e2411008 sub r1, r1, #8 d3fc: e1510004 cmp r1, r4 d400: 1a000005 bne d41c <_malloc_r+0x8c> d404: ea00000a b d434 <_malloc_r+0xa4> d408: e3520000 cmp r2, #0 d40c: aa000066 bge d5ac <_malloc_r+0x21c> d410: e594400c ldr r4, [r4, #12] d414: e1510004 cmp r1, r4 d418: 0a000005 beq d434 <_malloc_r+0xa4> d41c: e5943004 ldr r3, [r4, #4] d420: e3c33003 bic r3, r3, #3 d424: e0432006 sub r2, r3, r6 d428: e352000f cmp r2, #15 d42c: dafffff5 ble d408 <_malloc_r+0x78> d430: e1a0000c mov r0, ip d434: e5974010 ldr r4, [r7, #16] d438: e59fc6c0 ldr ip, [pc, #1728] ; db00 <_malloc_r+0x770> d43c: e154000c cmp r4, ip d440: 05973004 ldreq r3, [r7, #4] d444: 0a000018 beq d4ac <_malloc_r+0x11c> d448: e5943004 ldr r3, [r4, #4] d44c: e3c33003 bic r3, r3, #3 d450: e0432006 sub r2, r3, r6 d454: e352000f cmp r2, #15 d458: ca0000da bgt d7c8 <_malloc_r+0x438> d45c: e3520000 cmp r2, #0 d460: e587c014 str ip, [r7, #20] d464: e587c010 str ip, [r7, #16] d468: aa000069 bge d614 <_malloc_r+0x284> d46c: e3530c02 cmp r3, #512 ; 0x200 d470: 2a0000b9 bcs d75c <_malloc_r+0x3cc> d474: e3a08001 mov r8, #1 d478: e5972004 ldr r2, [r7, #4] d47c: e1a031a3 lsr r3, r3, #3 d480: e0831008 add r1, r3, r8 d484: e1a03143 asr r3, r3, #2 d488: e1823318 orr r3, r2, r8, lsl r3 d48c: e087e181 add lr, r7, r1, lsl #3 d490: e7978181 ldr r8, [r7, r1, lsl #3] d494: e24e2008 sub r2, lr, #8 d498: e584200c str r2, [r4, #12] d49c: e5848008 str r8, [r4, #8] d4a0: e5873004 str r3, [r7, #4] d4a4: e7874181 str r4, [r7, r1, lsl #3] d4a8: e588400c str r4, [r8, #12] d4ac: e3a01001 mov r1, #1 d4b0: e1a02140 asr r2, r0, #2 d4b4: e1a0e211 lsl lr, r1, r2 d4b8: e15e0003 cmp lr, r3 d4bc: 8a00005f bhi d640 <_malloc_r+0x2b0> d4c0: e11e0003 tst lr, r3 d4c4: 1a000008 bne d4ec <_malloc_r+0x15c> d4c8: e1a0e11e lsl lr, lr, r1 d4cc: e3c00003 bic r0, r0, #3 d4d0: e11e0003 tst lr, r3 d4d4: e2800004 add r0, r0, #4 d4d8: 1a000003 bne d4ec <_malloc_r+0x15c> d4dc: e1a0e08e lsl lr, lr, #1 d4e0: e11e0003 tst lr, r3 d4e4: e2800004 add r0, r0, #4 d4e8: 0afffffb beq d4dc <_malloc_r+0x14c> d4ec: e0879180 add r9, r7, r0, lsl #3 d4f0: e1a01009 mov r1, r9 d4f4: e1a04000 mov r4, r0 d4f8: e591800c ldr r8, [r1, #12] d4fc: e1510008 cmp r1, r8 d500: 1a000005 bne d51c <_malloc_r+0x18c> d504: ea0000bc b d7fc <_malloc_r+0x46c> d508: e3520000 cmp r2, #0 d50c: aa0000c4 bge d824 <_malloc_r+0x494> d510: e598800c ldr r8, [r8, #12] d514: e1510008 cmp r1, r8 d518: 0a0000b7 beq d7fc <_malloc_r+0x46c> d51c: e5983004 ldr r3, [r8, #4] d520: e3c33003 bic r3, r3, #3 d524: e0432006 sub r2, r3, r6 d528: e352000f cmp r2, #15 d52c: dafffff5 ble d508 <_malloc_r+0x178> d530: e598100c ldr r1, [r8, #12] d534: e598e008 ldr lr, [r8, #8] d538: e3864001 orr r4, r6, #1 d53c: e5884004 str r4, [r8, #4] d540: e0886006 add r6, r8, r6 d544: e3824001 orr r4, r2, #1 d548: e58e100c str r1, [lr, #12] d54c: e1a00005 mov r0, r5 d550: e581e008 str lr, [r1, #8] d554: e5876014 str r6, [r7, #20] d558: e5876010 str r6, [r7, #16] d55c: e9861010 stmib r6, {r4, ip} d560: e586c00c str ip, [r6, #12] d564: e7882003 str r2, [r8, r3] d568: eb0001d5 bl dcc4 <__malloc_unlock> d56c: e2884008 add r4, r8, #8 d570: ea000018 b d5d8 <_malloc_r+0x248> d574: e3510010 cmp r1, #16 d578: 8a00001a bhi d5e8 <_malloc_r+0x258> d57c: eb0001ca bl dcac <__malloc_lock> d580: e3a06010 mov r6, #16 d584: e3a03018 mov r3, #24 d588: e3a00002 mov r0, #2 d58c: e59f7568 ldr r7, [pc, #1384] ; dafc <_malloc_r+0x76c> d590: e0873003 add r3, r7, r3 d594: e5934004 ldr r4, [r3, #4] d598: e2432008 sub r2, r3, #8 d59c: e1540002 cmp r4, r2 d5a0: 0a00009a beq d810 <_malloc_r+0x480> d5a4: e5943004 ldr r3, [r4, #4] d5a8: e3c33003 bic r3, r3, #3 d5ac: e0843003 add r3, r4, r3 d5b0: e5932004 ldr r2, [r3, #4] d5b4: e594100c ldr r1, [r4, #12] d5b8: e594c008 ldr ip, [r4, #8] d5bc: e3822001 orr r2, r2, #1 d5c0: e58c100c str r1, [ip, #12] d5c4: e1a00005 mov r0, r5 d5c8: e581c008 str ip, [r1, #8] d5cc: e5832004 str r2, [r3, #4] d5d0: eb0001bb bl dcc4 <__malloc_unlock> d5d4: e2844008 add r4, r4, #8 d5d8: e1a00004 mov r0, r4 d5dc: e28dd00c add sp, sp, #12 d5e0: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} d5e4: e12fff1e bx lr d5e8: e3a04000 mov r4, #0 d5ec: e3a0300c mov r3, #12 d5f0: e1a00004 mov r0, r4 d5f4: e5853000 str r3, [r5] d5f8: e28dd00c add sp, sp, #12 d5fc: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} d600: e12fff1e bx lr d604: e3a01c02 mov r1, #512 ; 0x200 d608: e3a00040 mov r0, #64 ; 0x40 d60c: e3a0c03f mov ip, #63 ; 0x3f d610: eaffff75 b d3ec <_malloc_r+0x5c> d614: e0843003 add r3, r4, r3 d618: e5932004 ldr r2, [r3, #4] d61c: e3822001 orr r2, r2, #1 d620: e1a00005 mov r0, r5 d624: e5832004 str r2, [r3, #4] d628: e2844008 add r4, r4, #8 d62c: eb0001a4 bl dcc4 <__malloc_unlock> d630: e1a00004 mov r0, r4 d634: e28dd00c add sp, sp, #12 d638: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} d63c: e12fff1e bx lr d640: e5974008 ldr r4, [r7, #8] d644: e5943004 ldr r3, [r4, #4] d648: e3c39003 bic r9, r3, #3 d64c: e0493006 sub r3, r9, r6 d650: e353000f cmp r3, #15 d654: c3a02000 movgt r2, #0 d658: d3a02001 movle r2, #1 d65c: e1590006 cmp r9, r6 d660: 33822001 orrcc r2, r2, #1 d664: e3520000 cmp r2, #0 d668: 0a000025 beq d704 <_malloc_r+0x374> d66c: e59fa490 ldr sl, [pc, #1168] ; db04 <_malloc_r+0x774> d670: e59f2490 ldr r2, [pc, #1168] ; db08 <_malloc_r+0x778> d674: e59a3000 ldr r3, [sl] d678: e5922000 ldr r2, [r2] d67c: e3730001 cmn r3, #1 d680: e0862002 add r2, r6, r2 d684: 12823a01 addne r3, r2, #4096 ; 0x1000 d688: 1283300f addne r3, r3, #15 d68c: 13c32eff bicne r2, r3, #4080 ; 0xff0 d690: 02822010 addeq r2, r2, #16 d694: 13c2200f bicne r2, r2, #15 d698: e1a01002 mov r1, r2 d69c: e1a00005 mov r0, r5 d6a0: e58d2004 str r2, [sp, #4] d6a4: eb0002c1 bl e1b0 <_sbrk_r> d6a8: e3700001 cmn r0, #1 d6ac: e1a0b000 mov fp, r0 d6b0: e59d2004 ldr r2, [sp, #4] d6b4: 0a000003 beq d6c8 <_malloc_r+0x338> d6b8: e0843009 add r3, r4, r9 d6bc: e1540007 cmp r4, r7 d6c0: 11530000 cmpne r3, r0 d6c4: 9a000084 bls d8dc <_malloc_r+0x54c> d6c8: e5974008 ldr r4, [r7, #8] d6cc: e5943004 ldr r3, [r4, #4] d6d0: e3c33003 bic r3, r3, #3 d6d4: e1560003 cmp r6, r3 d6d8: 93a02000 movls r2, #0 d6dc: 83a02001 movhi r2, #1 d6e0: e0433006 sub r3, r3, r6 d6e4: e353000f cmp r3, #15 d6e8: d3822001 orrle r2, r2, #1 d6ec: e3520000 cmp r2, #0 d6f0: 0a000003 beq d704 <_malloc_r+0x374> d6f4: e1a00005 mov r0, r5 d6f8: eb000171 bl dcc4 <__malloc_unlock> d6fc: e3a04000 mov r4, #0 d700: eaffffb4 b d5d8 <_malloc_r+0x248> d704: e3862001 orr r2, r6, #1 d708: e3833001 orr r3, r3, #1 d70c: e0846006 add r6, r4, r6 d710: e5842004 str r2, [r4, #4] d714: e1a00005 mov r0, r5 d718: e5876008 str r6, [r7, #8] d71c: e2844008 add r4, r4, #8 d720: e5863004 str r3, [r6, #4] d724: eb000166 bl dcc4 <__malloc_unlock> d728: e1a00004 mov r0, r4 d72c: e28dd00c add sp, sp, #12 d730: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} d734: e12fff1e bx lr d738: e3530014 cmp r3, #20 d73c: 9a000044 bls d854 <_malloc_r+0x4c4> d740: e3530054 cmp r3, #84 ; 0x54 d744: 8a0000a8 bhi d9ec <_malloc_r+0x65c> d748: e1a03626 lsr r3, r6, #12 d74c: e283006f add r0, r3, #111 ; 0x6f d750: e283c06e add ip, r3, #110 ; 0x6e d754: e1a01180 lsl r1, r0, #3 d758: eaffff23 b d3ec <_malloc_r+0x5c> d75c: e1a024a3 lsr r2, r3, #9 d760: e3520004 cmp r2, #4 d764: 9a00003e bls d864 <_malloc_r+0x4d4> d768: e3520014 cmp r2, #20 d76c: 8a0000b4 bhi da44 <_malloc_r+0x6b4> d770: e282805c add r8, r2, #92 ; 0x5c d774: e1a08188 lsl r8, r8, #3 d778: e282105b add r1, r2, #91 ; 0x5b d77c: e087e008 add lr, r7, r8 d780: e7972008 ldr r2, [r7, r8] d784: e24ee008 sub lr, lr, #8 d788: e15e0002 cmp lr, r2 d78c: 0a00009d beq da08 <_malloc_r+0x678> d790: e5921004 ldr r1, [r2, #4] d794: e3c11003 bic r1, r1, #3 d798: e1530001 cmp r3, r1 d79c: 2a000090 bcs d9e4 <_malloc_r+0x654> d7a0: e5922008 ldr r2, [r2, #8] d7a4: e15e0002 cmp lr, r2 d7a8: 1afffff8 bne d790 <_malloc_r+0x400> d7ac: e59e200c ldr r2, [lr, #12] d7b0: e5973004 ldr r3, [r7, #4] d7b4: e584200c str r2, [r4, #12] d7b8: e584e008 str lr, [r4, #8] d7bc: e5824008 str r4, [r2, #8] d7c0: e58e400c str r4, [lr, #12] d7c4: eaffff38 b d4ac <_malloc_r+0x11c> d7c8: e386e001 orr lr, r6, #1 d7cc: e3821001 orr r1, r2, #1 d7d0: e0846006 add r6, r4, r6 d7d4: e584e004 str lr, [r4, #4] d7d8: e1a00005 mov r0, r5 d7dc: e5876014 str r6, [r7, #20] d7e0: e5876010 str r6, [r7, #16] d7e4: e586c00c str ip, [r6, #12] d7e8: e9861002 stmib r6, {r1, ip} d7ec: e7842003 str r2, [r4, r3] d7f0: eb000133 bl dcc4 <__malloc_unlock> d7f4: e2844008 add r4, r4, #8 d7f8: eaffff76 b d5d8 <_malloc_r+0x248> d7fc: e2844001 add r4, r4, #1 d800: e3140003 tst r4, #3 d804: e2811008 add r1, r1, #8 d808: 1affff3a bne d4f8 <_malloc_r+0x168> d80c: ea00001d b d888 <_malloc_r+0x4f8> d810: e593400c ldr r4, [r3, #12] d814: e1530004 cmp r3, r4 d818: 02800002 addeq r0, r0, #2 d81c: 0affff04 beq d434 <_malloc_r+0xa4> d820: eaffff5f b d5a4 <_malloc_r+0x214> d824: e1a04008 mov r4, r8 d828: e0883003 add r3, r8, r3 d82c: e5932004 ldr r2, [r3, #4] d830: e598100c ldr r1, [r8, #12] d834: e5b4c008 ldr ip, [r4, #8]! d838: e3822001 orr r2, r2, #1 d83c: e5832004 str r2, [r3, #4] d840: e1a00005 mov r0, r5 d844: e58c100c str r1, [ip, #12] d848: e581c008 str ip, [r1, #8] d84c: eb00011c bl dcc4 <__malloc_unlock> d850: eaffff60 b d5d8 <_malloc_r+0x248> d854: e283005c add r0, r3, #92 ; 0x5c d858: e283c05b add ip, r3, #91 ; 0x5b d85c: e1a01180 lsl r1, r0, #3 d860: eafffee1 b d3ec <_malloc_r+0x5c> d864: e1a02323 lsr r2, r3, #6 d868: e2828039 add r8, r2, #57 ; 0x39 d86c: e1a08188 lsl r8, r8, #3 d870: e2821038 add r1, r2, #56 ; 0x38 d874: eaffffc0 b d77c <_malloc_r+0x3ec> d878: e4193008 ldr r3, [r9], #-8 d87c: e1590003 cmp r9, r3 d880: e2400001 sub r0, r0, #1 d884: 1a000097 bne dae8 <_malloc_r+0x758> d888: e3100003 tst r0, #3 d88c: 1afffff9 bne d878 <_malloc_r+0x4e8> d890: e5973004 ldr r3, [r7, #4] d894: e1c3300e bic r3, r3, lr d898: e5873004 str r3, [r7, #4] d89c: e1b0e08e lsls lr, lr, #1 d8a0: 13a02001 movne r2, #1 d8a4: 03a02000 moveq r2, #0 d8a8: e15e0003 cmp lr, r3 d8ac: 83a02000 movhi r2, #0 d8b0: 92022001 andls r2, r2, #1 d8b4: e3520000 cmp r2, #0 d8b8: 0affff60 beq d640 <_malloc_r+0x2b0> d8bc: e11e0003 tst lr, r3 d8c0: e1a00004 mov r0, r4 d8c4: 1affff08 bne d4ec <_malloc_r+0x15c> d8c8: e1a0e08e lsl lr, lr, #1 d8cc: e11e0003 tst lr, r3 d8d0: e2800004 add r0, r0, #4 d8d4: 0afffffb beq d8c8 <_malloc_r+0x538> d8d8: eaffff03 b d4ec <_malloc_r+0x15c> d8dc: e59f8228 ldr r8, [pc, #552] ; db0c <_malloc_r+0x77c> d8e0: e5981000 ldr r1, [r8] d8e4: e1530000 cmp r3, r0 d8e8: e0821001 add r1, r2, r1 d8ec: e5881000 str r1, [r8] d8f0: 0a00005e beq da70 <_malloc_r+0x6e0> d8f4: e59a0000 ldr r0, [sl] d8f8: e3700001 cmn r0, #1 d8fc: 104b3003 subne r3, fp, r3 d900: 10831001 addne r1, r3, r1 d904: 058ab000 streq fp, [sl] d908: 15881000 strne r1, [r8] d90c: e21b1007 ands r1, fp, #7 d910: 03a01a01 moveq r1, #4096 ; 0x1000 d914: 12613008 rsbne r3, r1, #8 d918: 108bb003 addne fp, fp, r3 d91c: e08b2002 add r2, fp, r2 d920: 12611a01 rsbne r1, r1, #4096 ; 0x1000 d924: e1a02a02 lsl r2, r2, #20 d928: 12811008 addne r1, r1, #8 d92c: e1a02a22 lsr r2, r2, #20 d930: e041a002 sub sl, r1, r2 d934: e1a0100a mov r1, sl d938: e1a00005 mov r0, r5 d93c: eb00021b bl e1b0 <_sbrk_r> d940: e3700001 cmn r0, #1 d944: 03a0a000 moveq sl, #0 d948: 03a03001 moveq r3, #1 d94c: 1040300b subne r3, r0, fp d950: e5981000 ldr r1, [r8] d954: 1083300a addne r3, r3, sl d958: 13833001 orrne r3, r3, #1 d95c: e08a1001 add r1, sl, r1 d960: e1540007 cmp r4, r7 d964: e587b008 str fp, [r7, #8] d968: e5881000 str r1, [r8] d96c: e58b3004 str r3, [fp, #4] d970: 0a00000f beq d9b4 <_malloc_r+0x624> d974: e359000f cmp r9, #15 d978: 93a03001 movls r3, #1 d97c: 958b3004 strls r3, [fp, #4] d980: 9affff5b bls d6f4 <_malloc_r+0x364> d984: e3a00005 mov r0, #5 d988: e5942004 ldr r2, [r4, #4] d98c: e249300c sub r3, r9, #12 d990: e3c33007 bic r3, r3, #7 d994: e2022001 and r2, r2, #1 d998: e1822003 orr r2, r2, r3 d99c: e353000f cmp r3, #15 d9a0: e0843003 add r3, r4, r3 d9a4: e5842004 str r2, [r4, #4] d9a8: e5830004 str r0, [r3, #4] d9ac: e5830008 str r0, [r3, #8] d9b0: 8a000037 bhi da94 <_malloc_r+0x704> d9b4: e59f3154 ldr r3, [pc, #340] ; db10 <_malloc_r+0x780> d9b8: e5932000 ldr r2, [r3] d9bc: e1510002 cmp r1, r2 d9c0: e59f214c ldr r2, [pc, #332] ; db14 <_malloc_r+0x784> d9c4: 85831000 strhi r1, [r3] d9c8: e5974008 ldr r4, [r7, #8] d9cc: e5923000 ldr r3, [r2] d9d0: e1510003 cmp r1, r3 d9d4: e5943004 ldr r3, [r4, #4] d9d8: 85821000 strhi r1, [r2] d9dc: e3c33003 bic r3, r3, #3 d9e0: eaffff3b b d6d4 <_malloc_r+0x344> d9e4: e1a0e002 mov lr, r2 d9e8: eaffff6f b d7ac <_malloc_r+0x41c> d9ec: e3530f55 cmp r3, #340 ; 0x154 d9f0: 8a00000b bhi da24 <_malloc_r+0x694> d9f4: e1a037a6 lsr r3, r6, #15 d9f8: e2830078 add r0, r3, #120 ; 0x78 d9fc: e283c077 add ip, r3, #119 ; 0x77 da00: e1a01180 lsl r1, r0, #3 da04: eafffe78 b d3ec <_malloc_r+0x5c> da08: e3a08001 mov r8, #1 da0c: e5973004 ldr r3, [r7, #4] da10: e1a02141 asr r2, r1, #2 da14: e1833218 orr r3, r3, r8, lsl r2 da18: e5873004 str r3, [r7, #4] da1c: e1a0200e mov r2, lr da20: eaffff63 b d7b4 <_malloc_r+0x424> da24: e59f20ec ldr r2, [pc, #236] ; db18 <_malloc_r+0x788> da28: e1530002 cmp r3, r2 da2c: 8a00000b bhi da60 <_malloc_r+0x6d0> da30: e1a03926 lsr r3, r6, #18 da34: e283007d add r0, r3, #125 ; 0x7d da38: e283c07c add ip, r3, #124 ; 0x7c da3c: e1a01180 lsl r1, r0, #3 da40: eafffe69 b d3ec <_malloc_r+0x5c> da44: e3520054 cmp r2, #84 ; 0x54 da48: 8a000016 bhi daa8 <_malloc_r+0x718> da4c: e1a02623 lsr r2, r3, #12 da50: e282806f add r8, r2, #111 ; 0x6f da54: e1a08188 lsl r8, r8, #3 da58: e282106e add r1, r2, #110 ; 0x6e da5c: eaffff46 b d77c <_malloc_r+0x3ec> da60: e3a01ffe mov r1, #1016 ; 0x3f8 da64: e3a0007f mov r0, #127 ; 0x7f da68: e3a0c07e mov ip, #126 ; 0x7e da6c: eafffe5e b d3ec <_malloc_r+0x5c> da70: e1a00a03 lsl r0, r3, #20 da74: e1a00a20 lsr r0, r0, #20 da78: e3500000 cmp r0, #0 da7c: 1affff9c bne d8f4 <_malloc_r+0x564> da80: e0893002 add r3, r9, r2 da84: e5972008 ldr r2, [r7, #8] da88: e3833001 orr r3, r3, #1 da8c: e5823004 str r3, [r2, #4] da90: eaffffc7 b d9b4 <_malloc_r+0x624> da94: e2841008 add r1, r4, #8 da98: e1a00005 mov r0, r5 da9c: ebfffb5e bl c81c <_free_r> daa0: e5981000 ldr r1, [r8] daa4: eaffffc2 b d9b4 <_malloc_r+0x624> daa8: e3520f55 cmp r2, #340 ; 0x154 daac: 8a000004 bhi dac4 <_malloc_r+0x734> dab0: e1a027a3 lsr r2, r3, #15 dab4: e2828078 add r8, r2, #120 ; 0x78 dab8: e1a08188 lsl r8, r8, #3 dabc: e2821077 add r1, r2, #119 ; 0x77 dac0: eaffff2d b d77c <_malloc_r+0x3ec> dac4: e59f104c ldr r1, [pc, #76] ; db18 <_malloc_r+0x788> dac8: e1520001 cmp r2, r1 dacc: 91a02923 lsrls r2, r3, #18 dad0: 9282807d addls r8, r2, #125 ; 0x7d dad4: 91a08188 lslls r8, r8, #3 dad8: 9282107c addls r1, r2, #124 ; 0x7c dadc: 83a08ffe movhi r8, #1016 ; 0x3f8 dae0: 83a0107e movhi r1, #126 ; 0x7e dae4: eaffff24 b d77c <_malloc_r+0x3ec> dae8: e5973004 ldr r3, [r7, #4] daec: eaffff6a b d89c <_malloc_r+0x50c> daf0: e1a001a6 lsr r0, r6, #3 daf4: e2863008 add r3, r6, #8 daf8: eafffea3 b d58c <_malloc_r+0x1fc> dafc: 00010104 .word 0x00010104 db00: 0001010c .word 0x0001010c db04: 0001050c .word 0x0001050c db08: 0001056c .word 0x0001056c db0c: 0001053c .word 0x0001053c db10: 00010564 .word 0x00010564 db14: 00010568 .word 0x00010568 db18: 00000554 .word 0x00000554 0000db1c <_mbtowc_r>: db1c: e59fc024 ldr ip, [pc, #36] ; db48 <_mbtowc_r+0x2c> db20: e59cc000 ldr ip, [ip] db24: e59cc034 ldr ip, [ip, #52] ; 0x34 db28: e52de004 push {lr} ; (str lr, [sp, #-4]!) db2c: e59fe018 ldr lr, [pc, #24] ; db4c <_mbtowc_r+0x30> db30: e35c0000 cmp ip, #0 db34: 01a0c00e moveq ip, lr db38: e59ce0e4 ldr lr, [ip, #228] ; 0xe4 db3c: e1a0c00e mov ip, lr db40: e49de004 pop {lr} ; (ldr lr, [sp], #4) db44: e12fff1c bx ip db48: 0000fb6c .word 0x0000fb6c db4c: 0000ff98 .word 0x0000ff98 0000db50 <__ascii_mbtowc>: db50: e3510000 cmp r1, #0 db54: e24dd008 sub sp, sp, #8 db58: 028d1004 addeq r1, sp, #4 db5c: e3520000 cmp r2, #0 db60: 0a000008 beq db88 <__ascii_mbtowc+0x38> db64: e3530000 cmp r3, #0 db68: 0a000009 beq db94 <__ascii_mbtowc+0x44> db6c: e5d23000 ldrb r3, [r2] db70: e5813000 str r3, [r1] db74: e5d22000 ldrb r2, [r2] db78: e2920000 adds r0, r2, #0 db7c: 13a00001 movne r0, #1 db80: e28dd008 add sp, sp, #8 db84: e12fff1e bx lr db88: e1a00002 mov r0, r2 db8c: e28dd008 add sp, sp, #8 db90: e12fff1e bx lr db94: e3e00001 mvn r0, #1 db98: eafffff8 b db80 <__ascii_mbtowc+0x30> 0000db9c : db9c: e3100003 tst r0, #3 dba0: e92d4070 push {r4, r5, r6, lr} dba4: e201e0ff and lr, r1, #255 ; 0xff dba8: 0a000038 beq dc90 dbac: e3520000 cmp r2, #0 dbb0: e242c001 sub ip, r2, #1 dbb4: 0a00001e beq dc34 dbb8: e5d03000 ldrb r3, [r0] dbbc: e153000e cmp r3, lr dbc0: 0a00001c beq dc38 dbc4: e2803001 add r3, r0, #1 dbc8: ea000005 b dbe4 dbcc: e25cc001 subs ip, ip, #1 dbd0: 3a000017 bcc dc34 dbd4: e5d02000 ldrb r2, [r0] dbd8: e152000e cmp r2, lr dbdc: e2833001 add r3, r3, #1 dbe0: 0a000014 beq dc38 dbe4: e3130003 tst r3, #3 dbe8: e1a00003 mov r0, r3 dbec: 1afffff6 bne dbcc dbf0: e35c0003 cmp ip, #3 dbf4: 8a000011 bhi dc40 dbf8: e35c0000 cmp ip, #0 dbfc: 0a000025 beq dc98 dc00: e5d03000 ldrb r3, [r0] dc04: e153000e cmp r3, lr dc08: 0a00000a beq dc38 dc0c: e080c00c add ip, r0, ip dc10: e2803001 add r3, r0, #1 dc14: ea000003 b dc28 dc18: e5d02000 ldrb r2, [r0] dc1c: e152000e cmp r2, lr dc20: e2833001 add r3, r3, #1 dc24: 0a000003 beq dc38 dc28: e15c0003 cmp ip, r3 dc2c: e1a00003 mov r0, r3 dc30: 1afffff8 bne dc18 dc34: e3a00000 mov r0, #0 dc38: e8bd4070 pop {r4, r5, r6, lr} dc3c: e12fff1e bx lr dc40: e59f4058 ldr r4, [pc, #88] ; dca0 dc44: e0044401 and r4, r4, r1, lsl #8 dc48: e184400e orr r4, r4, lr dc4c: e59f6050 ldr r6, [pc, #80] ; dca4 dc50: e59f5050 ldr r5, [pc, #80] ; dca8 dc54: e1844804 orr r4, r4, r4, lsl #16 dc58: e5903000 ldr r3, [r0] dc5c: e0233004 eor r3, r3, r4 dc60: e0832006 add r2, r3, r6 dc64: e1c23003 bic r3, r2, r3 dc68: e1130005 tst r3, r5 dc6c: e1a01000 mov r1, r0 dc70: e2800004 add r0, r0, #4 dc74: 1a000003 bne dc88 dc78: e24cc004 sub ip, ip, #4 dc7c: e35c0003 cmp ip, #3 dc80: 8afffff4 bhi dc58 dc84: eaffffdb b dbf8 dc88: e1a00001 mov r0, r1 dc8c: eaffffdb b dc00 dc90: e1a0c002 mov ip, r2 dc94: eaffffd5 b dbf0 dc98: e1a0000c mov r0, ip dc9c: eaffffe5 b dc38 dca0: 0000ffff .word 0x0000ffff dca4: fefefeff .word 0xfefefeff dca8: 80808080 .word 0x80808080 0000dcac <__malloc_lock>: dcac: e92d4010 push {r4, lr} dcb0: e59f0008 ldr r0, [pc, #8] ; dcc0 <__malloc_lock+0x14> dcb4: ebfffd46 bl d1d4 <__retarget_lock_acquire_recursive> dcb8: e8bd4010 pop {r4, lr} dcbc: e12fff1e bx lr dcc0: 00010584 .word 0x00010584 0000dcc4 <__malloc_unlock>: dcc4: e92d4010 push {r4, lr} dcc8: e59f0008 ldr r0, [pc, #8] ; dcd8 <__malloc_unlock+0x14> dccc: ebfffd46 bl d1ec <__retarget_lock_release_recursive> dcd0: e8bd4010 pop {r4, lr} dcd4: e12fff1e bx lr dcd8: 00010584 .word 0x00010584 0000dcdc <_realloc_r>: dcdc: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} dce0: e2517000 subs r7, r1, #0 dce4: e24dd00c sub sp, sp, #12 dce8: e1a09002 mov r9, r2 dcec: 0a00007f beq def0 <_realloc_r+0x214> dcf0: e289400b add r4, r9, #11 dcf4: e1a08000 mov r8, r0 dcf8: ebffffeb bl dcac <__malloc_lock> dcfc: e3540016 cmp r4, #22 dd00: 93a02010 movls r2, #16 dd04: 93a03000 movls r3, #0 dd08: 91a04002 movls r4, r2 dd0c: 83c44007 bichi r4, r4, #7 dd10: 81a03fa4 lsrhi r3, r4, #31 dd14: 81a02004 movhi r2, r4 dd18: e1540009 cmp r4, r9 dd1c: 33833001 orrcc r3, r3, #1 dd20: e3530000 cmp r3, #0 dd24: 13a0300c movne r3, #12 dd28: e5171004 ldr r1, [r7, #-4] dd2c: e2475008 sub r5, r7, #8 dd30: e3c16003 bic r6, r1, #3 dd34: 13a09000 movne r9, #0 dd38: 15883000 strne r3, [r8] dd3c: 1a00000f bne dd80 <_realloc_r+0xa4> dd40: e1560002 cmp r6, r2 dd44: ba000011 blt dd90 <_realloc_r+0xb4> dd48: e1a09007 mov r9, r7 dd4c: e0463004 sub r3, r6, r4 dd50: e353000f cmp r3, #15 dd54: 8a000056 bhi deb4 <_realloc_r+0x1d8> dd58: e5953004 ldr r3, [r5, #4] dd5c: e2033001 and r3, r3, #1 dd60: e1833006 orr r3, r3, r6 dd64: e5853004 str r3, [r5, #4] dd68: e0855006 add r5, r5, r6 dd6c: e5953004 ldr r3, [r5, #4] dd70: e3833001 orr r3, r3, #1 dd74: e5853004 str r3, [r5, #4] dd78: e1a00008 mov r0, r8 dd7c: ebffffd0 bl dcc4 <__malloc_unlock> dd80: e1a00009 mov r0, r9 dd84: e28dd00c add sp, sp, #12 dd88: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} dd8c: e12fff1e bx lr dd90: e59fb414 ldr fp, [pc, #1044] ; e1ac <_realloc_r+0x4d0> dd94: e59b3008 ldr r3, [fp, #8] dd98: e085c006 add ip, r5, r6 dd9c: e15c0003 cmp ip, r3 dda0: 0a0000a5 beq e03c <_realloc_r+0x360> dda4: e59c0004 ldr r0, [ip, #4] dda8: e3c03001 bic r3, r0, #1 ddac: e08c3003 add r3, ip, r3 ddb0: e5933004 ldr r3, [r3, #4] ddb4: e3130001 tst r3, #1 ddb8: 0a000032 beq de88 <_realloc_r+0x1ac> ddbc: e3110001 tst r1, #1 ddc0: 0a000088 beq dfe8 <_realloc_r+0x30c> ddc4: e1a01009 mov r1, r9 ddc8: e1a00008 mov r0, r8 ddcc: ebfffd6f bl d390 <_malloc_r> ddd0: e2509000 subs r9, r0, #0 ddd4: 0affffe7 beq dd78 <_realloc_r+0x9c> ddd8: e5173004 ldr r3, [r7, #-4] dddc: e3c33001 bic r3, r3, #1 dde0: e0853003 add r3, r5, r3 dde4: e2492008 sub r2, r9, #8 dde8: e1520003 cmp r2, r3 ddec: 0a0000e3 beq e180 <_realloc_r+0x4a4> ddf0: e2462004 sub r2, r6, #4 ddf4: e3520024 cmp r2, #36 ; 0x24 ddf8: 8a0000dd bhi e174 <_realloc_r+0x498> ddfc: e3520013 cmp r2, #19 de00: 91a03009 movls r3, r9 de04: 91a02007 movls r2, r7 de08: 9a000014 bls de60 <_realloc_r+0x184> de0c: e5973000 ldr r3, [r7] de10: e5893000 str r3, [r9] de14: e5973004 ldr r3, [r7, #4] de18: e352001b cmp r2, #27 de1c: e5893004 str r3, [r9, #4] de20: 92872008 addls r2, r7, #8 de24: 92893008 addls r3, r9, #8 de28: 9a00000c bls de60 <_realloc_r+0x184> de2c: e5973008 ldr r3, [r7, #8] de30: e5893008 str r3, [r9, #8] de34: e597300c ldr r3, [r7, #12] de38: e589300c str r3, [r9, #12] de3c: e3520024 cmp r2, #36 ; 0x24 de40: 05973010 ldreq r3, [r7, #16] de44: 05893010 streq r3, [r9, #16] de48: 05972014 ldreq r2, [r7, #20] de4c: 12893010 addne r3, r9, #16 de50: 05892014 streq r2, [r9, #20] de54: 12872010 addne r2, r7, #16 de58: 02893018 addeq r3, r9, #24 de5c: 02872018 addeq r2, r7, #24 de60: e5921000 ldr r1, [r2] de64: e5831000 str r1, [r3] de68: e5921004 ldr r1, [r2, #4] de6c: e5831004 str r1, [r3, #4] de70: e5922008 ldr r2, [r2, #8] de74: e5832008 str r2, [r3, #8] de78: e1a01007 mov r1, r7 de7c: e1a00008 mov r0, r8 de80: ebfffa65 bl c81c <_free_r> de84: eaffffbb b dd78 <_realloc_r+0x9c> de88: e3c00003 bic r0, r0, #3 de8c: e0863000 add r3, r6, r0 de90: e1530002 cmp r3, r2 de94: ba00001c blt df0c <_realloc_r+0x230> de98: e28c1008 add r1, ip, #8 de9c: e8910006 ldm r1, {r1, r2} dea0: e1a09007 mov r9, r7 dea4: e581200c str r2, [r1, #12] dea8: e1a06003 mov r6, r3 deac: e5821008 str r1, [r2, #8] deb0: eaffffa5 b dd4c <_realloc_r+0x70> deb4: e5952004 ldr r2, [r5, #4] deb8: e2022001 and r2, r2, #1 debc: e0851004 add r1, r5, r4 dec0: e3833001 orr r3, r3, #1 dec4: e1822004 orr r2, r2, r4 dec8: e5852004 str r2, [r5, #4] decc: e5813004 str r3, [r1, #4] ded0: e0855006 add r5, r5, r6 ded4: e5953004 ldr r3, [r5, #4] ded8: e3833001 orr r3, r3, #1 dedc: e2811008 add r1, r1, #8 dee0: e5853004 str r3, [r5, #4] dee4: e1a00008 mov r0, r8 dee8: ebfffa4b bl c81c <_free_r> deec: eaffffa1 b dd78 <_realloc_r+0x9c> def0: e1a01002 mov r1, r2 def4: ebfffd25 bl d390 <_malloc_r> def8: e1a09000 mov r9, r0 defc: e1a00009 mov r0, r9 df00: e28dd00c add sp, sp, #12 df04: e8bd4ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, lr} df08: e12fff1e bx lr df0c: e3110001 tst r1, #1 df10: 1affffab bne ddc4 <_realloc_r+0xe8> df14: e517a008 ldr sl, [r7, #-8] df18: e045a00a sub sl, r5, sl df1c: e59a1004 ldr r1, [sl, #4] df20: e3c11003 bic r1, r1, #3 df24: e0810000 add r0, r1, r0 df28: e0803006 add r3, r0, r6 df2c: e1530002 cmp r3, r2 df30: ba000030 blt dff8 <_realloc_r+0x31c> df34: e1a0900a mov r9, sl df38: e28c1008 add r1, ip, #8 df3c: e8910006 ldm r1, {r1, r2} df40: e581200c str r2, [r1, #12] df44: e5821008 str r1, [r2, #8] df48: e59a100c ldr r1, [sl, #12] df4c: e5b90008 ldr r0, [r9, #8]! df50: e2462004 sub r2, r6, #4 df54: e3520024 cmp r2, #36 ; 0x24 df58: e580100c str r1, [r0, #12] df5c: e5810008 str r0, [r1, #8] df60: 8a00002f bhi e024 <_realloc_r+0x348> df64: e3520013 cmp r2, #19 df68: 91a02009 movls r2, r9 df6c: 9a000014 bls dfc4 <_realloc_r+0x2e8> df70: e5971000 ldr r1, [r7] df74: e58a1008 str r1, [sl, #8] df78: e5971004 ldr r1, [r7, #4] df7c: e352001b cmp r2, #27 df80: e58a100c str r1, [sl, #12] df84: 92877008 addls r7, r7, #8 df88: 928a2010 addls r2, sl, #16 df8c: 9a00000c bls dfc4 <_realloc_r+0x2e8> df90: e5971008 ldr r1, [r7, #8] df94: e58a1010 str r1, [sl, #16] df98: e597100c ldr r1, [r7, #12] df9c: e58a1014 str r1, [sl, #20] dfa0: e3520024 cmp r2, #36 ; 0x24 dfa4: 05972010 ldreq r2, [r7, #16] dfa8: 058a2018 streq r2, [sl, #24] dfac: 05972014 ldreq r2, [r7, #20] dfb0: 12877010 addne r7, r7, #16 dfb4: 058a201c streq r2, [sl, #28] dfb8: 128a2018 addne r2, sl, #24 dfbc: 02877018 addeq r7, r7, #24 dfc0: 028a2020 addeq r2, sl, #32 dfc4: e5971000 ldr r1, [r7] dfc8: e5821000 str r1, [r2] dfcc: e5971004 ldr r1, [r7, #4] dfd0: e5821004 str r1, [r2, #4] dfd4: e5971008 ldr r1, [r7, #8] dfd8: e1a06003 mov r6, r3 dfdc: e1a0500a mov r5, sl dfe0: e5821008 str r1, [r2, #8] dfe4: eaffff58 b dd4c <_realloc_r+0x70> dfe8: e517a008 ldr sl, [r7, #-8] dfec: e045a00a sub sl, r5, sl dff0: e59a1004 ldr r1, [sl, #4] dff4: e3c11003 bic r1, r1, #3 dff8: e0863001 add r3, r6, r1 dffc: e1530002 cmp r3, r2 e000: baffff6f blt ddc4 <_realloc_r+0xe8> e004: e1a0900a mov r9, sl e008: e59a100c ldr r1, [sl, #12] e00c: e5b90008 ldr r0, [r9, #8]! e010: e2462004 sub r2, r6, #4 e014: e3520024 cmp r2, #36 ; 0x24 e018: e580100c str r1, [r0, #12] e01c: e5810008 str r0, [r1, #8] e020: 9affffcf bls df64 <_realloc_r+0x288> e024: e1a01007 mov r1, r7 e028: e1a00009 mov r0, r9 e02c: e1a06003 mov r6, r3 e030: e1a0500a mov r5, sl e034: ebfff150 bl a57c e038: eaffff43 b dd4c <_realloc_r+0x70> e03c: e59c3004 ldr r3, [ip, #4] e040: e3c33003 bic r3, r3, #3 e044: e0833006 add r3, r3, r6 e048: e2840010 add r0, r4, #16 e04c: e1530000 cmp r3, r0 e050: aa00003a bge e140 <_realloc_r+0x464> e054: e3110001 tst r1, #1 e058: 1affff59 bne ddc4 <_realloc_r+0xe8> e05c: e517a008 ldr sl, [r7, #-8] e060: e045a00a sub sl, r5, sl e064: e59a1004 ldr r1, [sl, #4] e068: e3c11003 bic r1, r1, #3 e06c: e0813003 add r3, r1, r3 e070: e1500003 cmp r0, r3 e074: caffffdf bgt dff8 <_realloc_r+0x31c> e078: e1a0900a mov r9, sl e07c: e59a100c ldr r1, [sl, #12] e080: e5b90008 ldr r0, [r9, #8]! e084: e2462004 sub r2, r6, #4 e088: e3520024 cmp r2, #36 ; 0x24 e08c: e580100c str r1, [r0, #12] e090: e5810008 str r0, [r1, #8] e094: 8a00003e bhi e194 <_realloc_r+0x4b8> e098: e3520013 cmp r2, #19 e09c: 91a02009 movls r2, r9 e0a0: 9a000014 bls e0f8 <_realloc_r+0x41c> e0a4: e5971000 ldr r1, [r7] e0a8: e58a1008 str r1, [sl, #8] e0ac: e5971004 ldr r1, [r7, #4] e0b0: e352001b cmp r2, #27 e0b4: e58a100c str r1, [sl, #12] e0b8: 92877008 addls r7, r7, #8 e0bc: 928a2010 addls r2, sl, #16 e0c0: 9a00000c bls e0f8 <_realloc_r+0x41c> e0c4: e5971008 ldr r1, [r7, #8] e0c8: e58a1010 str r1, [sl, #16] e0cc: e597100c ldr r1, [r7, #12] e0d0: e58a1014 str r1, [sl, #20] e0d4: e3520024 cmp r2, #36 ; 0x24 e0d8: 05972010 ldreq r2, [r7, #16] e0dc: 058a2018 streq r2, [sl, #24] e0e0: 05972014 ldreq r2, [r7, #20] e0e4: 12877010 addne r7, r7, #16 e0e8: 058a201c streq r2, [sl, #28] e0ec: 128a2018 addne r2, sl, #24 e0f0: 02877018 addeq r7, r7, #24 e0f4: 028a2020 addeq r2, sl, #32 e0f8: e5971000 ldr r1, [r7] e0fc: e5821000 str r1, [r2] e100: e5971004 ldr r1, [r7, #4] e104: e5821004 str r1, [r2, #4] e108: e5971008 ldr r1, [r7, #8] e10c: e5821008 str r1, [r2, #8] e110: e0433004 sub r3, r3, r4 e114: e08a2004 add r2, sl, r4 e118: e3833001 orr r3, r3, #1 e11c: e58b2008 str r2, [fp, #8] e120: e5823004 str r3, [r2, #4] e124: e59a3004 ldr r3, [sl, #4] e128: e2033001 and r3, r3, #1 e12c: e1834004 orr r4, r3, r4 e130: e1a00008 mov r0, r8 e134: e58a4004 str r4, [sl, #4] e138: ebfffee1 bl dcc4 <__malloc_unlock> e13c: eaffff0f b dd80 <_realloc_r+0xa4> e140: e0433004 sub r3, r3, r4 e144: e0855004 add r5, r5, r4 e148: e3833001 orr r3, r3, #1 e14c: e58b5008 str r5, [fp, #8] e150: e5853004 str r3, [r5, #4] e154: e5173004 ldr r3, [r7, #-4] e158: e2033001 and r3, r3, #1 e15c: e1834004 orr r4, r3, r4 e160: e1a00008 mov r0, r8 e164: e5074004 str r4, [r7, #-4] e168: ebfffed5 bl dcc4 <__malloc_unlock> e16c: e1a09007 mov r9, r7 e170: eaffff02 b dd80 <_realloc_r+0xa4> e174: e1a01007 mov r1, r7 e178: ebfff0ff bl a57c e17c: eaffff3d b de78 <_realloc_r+0x19c> e180: e5193004 ldr r3, [r9, #-4] e184: e3c33003 bic r3, r3, #3 e188: e0866003 add r6, r6, r3 e18c: e1a09007 mov r9, r7 e190: eafffeed b dd4c <_realloc_r+0x70> e194: e1a01007 mov r1, r7 e198: e1a00009 mov r0, r9 e19c: e58d3004 str r3, [sp, #4] e1a0: ebfff0f5 bl a57c e1a4: e59d3004 ldr r3, [sp, #4] e1a8: eaffffd8 b e110 <_realloc_r+0x434> e1ac: 00010104 .word 0x00010104 0000e1b0 <_sbrk_r>: e1b0: e3a03000 mov r3, #0 e1b4: e92d4070 push {r4, r5, r6, lr} e1b8: e59f4030 ldr r4, [pc, #48] ; e1f0 <_sbrk_r+0x40> e1bc: e1a05000 mov r5, r0 e1c0: e1a00001 mov r0, r1 e1c4: e5843000 str r3, [r4] e1c8: eb0003f0 bl f190 <_sbrk> e1cc: e3700001 cmn r0, #1 e1d0: 0a000001 beq e1dc <_sbrk_r+0x2c> e1d4: e8bd4070 pop {r4, r5, r6, lr} e1d8: e12fff1e bx lr e1dc: e5943000 ldr r3, [r4] e1e0: e3530000 cmp r3, #0 e1e4: 15853000 strne r3, [r5] e1e8: e8bd4070 pop {r4, r5, r6, lr} e1ec: e12fff1e bx lr e1f0: 00010598 .word 0x00010598 0000e1f4 <_init_signal_r.part.0>: e1f4: e92d4010 push {r4, lr} e1f8: e3a01080 mov r1, #128 ; 0x80 e1fc: e1a04000 mov r4, r0 e200: ebfffc62 bl d390 <_malloc_r> e204: e3500000 cmp r0, #0 e208: e58402dc str r0, [r4, #732] ; 0x2dc e20c: 0a000008 beq e234 <_init_signal_r.part.0+0x40> e210: e3a02000 mov r2, #0 e214: e2403004 sub r3, r0, #4 e218: e280007c add r0, r0, #124 ; 0x7c e21c: e5a32004 str r2, [r3, #4]! e220: e1530000 cmp r3, r0 e224: 1afffffc bne e21c <_init_signal_r.part.0+0x28> e228: e3a00000 mov r0, #0 e22c: e8bd4010 pop {r4, lr} e230: e12fff1e bx lr e234: e3e00000 mvn r0, #0 e238: eafffffb b e22c <_init_signal_r.part.0+0x38> 0000e23c <_init_signal_r>: e23c: e59032dc ldr r3, [r0, #732] ; 0x2dc e240: e3530000 cmp r3, #0 e244: 0a000001 beq e250 <_init_signal_r+0x14> e248: e3a00000 mov r0, #0 e24c: e12fff1e bx lr e250: eaffffe7 b e1f4 <_init_signal_r.part.0> 0000e254 <_signal_r>: e254: e351001f cmp r1, #31 e258: e1a03000 mov r3, r0 e25c: 8a000005 bhi e278 <_signal_r+0x24> e260: e590c2dc ldr ip, [r0, #732] ; 0x2dc e264: e35c0000 cmp ip, #0 e268: 0a000006 beq e288 <_signal_r+0x34> e26c: e79c0101 ldr r0, [ip, r1, lsl #2] e270: e78c2101 str r2, [ip, r1, lsl #2] e274: e12fff1e bx lr e278: e3a02016 mov r2, #22 e27c: e3e00000 mvn r0, #0 e280: e5832000 str r2, [r3] e284: e12fff1e bx lr e288: e52de004 push {lr} ; (str lr, [sp, #-4]!) e28c: e24dd014 sub sp, sp, #20 e290: e98d000e stmib sp, {r1, r2, r3} e294: ebffffd6 bl e1f4 <_init_signal_r.part.0> e298: e3500000 cmp r0, #0 e29c: 13e00000 mvnne r0, #0 e2a0: 059d300c ldreq r3, [sp, #12] e2a4: 099d0006 ldmibeq sp, {r1, r2} e2a8: 0593c2dc ldreq ip, [r3, #732] ; 0x2dc e2ac: 079c0101 ldreq r0, [ip, r1, lsl #2] e2b0: 078c2101 streq r2, [ip, r1, lsl #2] e2b4: e28dd014 add sp, sp, #20 e2b8: e49de004 pop {lr} ; (ldr lr, [sp], #4) e2bc: e12fff1e bx lr 0000e2c0 <_raise_r>: e2c0: e351001f cmp r1, #31 e2c4: e92d4020 push {r5, lr} e2c8: 83a03016 movhi r3, #22 e2cc: e1a05000 mov r5, r0 e2d0: e24dd008 sub sp, sp, #8 e2d4: 83e00000 mvnhi r0, #0 e2d8: 85853000 strhi r3, [r5] e2dc: 8a000012 bhi e32c <_raise_r+0x6c> e2e0: e59522dc ldr r2, [r5, #732] ; 0x2dc e2e4: e3520000 cmp r2, #0 e2e8: 0a000014 beq e340 <_raise_r+0x80> e2ec: e7923101 ldr r3, [r2, r1, lsl #2] e2f0: e3530000 cmp r3, #0 e2f4: 0a000011 beq e340 <_raise_r+0x80> e2f8: e3530001 cmp r3, #1 e2fc: 0a00000d beq e338 <_raise_r+0x78> e300: e3730001 cmn r3, #1 e304: 03a03016 moveq r3, #22 e308: 03a00001 moveq r0, #1 e30c: 05853000 streq r3, [r5] e310: 0a000005 beq e32c <_raise_r+0x6c> e314: e3a05000 mov r5, #0 e318: e1a00001 mov r0, r1 e31c: e7825101 str r5, [r2, r1, lsl #2] e320: e1a0e00f mov lr, pc e324: e12fff13 bx r3 e328: e1a00005 mov r0, r5 e32c: e28dd008 add sp, sp, #8 e330: e8bd4020 pop {r5, lr} e334: e12fff1e bx lr e338: e3a00000 mov r0, #0 e33c: eafffffa b e32c <_raise_r+0x6c> e340: e1a00005 mov r0, r5 e344: e58d1004 str r1, [sp, #4] e348: eb000056 bl e4a8 <_getpid_r> e34c: e59d1004 ldr r1, [sp, #4] e350: e1a02001 mov r2, r1 e354: e1a01000 mov r1, r0 e358: e1a00005 mov r0, r5 e35c: eb000040 bl e464 <_kill_r> e360: eafffff1 b e32c <_raise_r+0x6c> 0000e364 <__sigtramp_r>: e364: e351001f cmp r1, #31 e368: 8a000022 bhi e3f8 <__sigtramp_r+0x94> e36c: e92d4020 push {r5, lr} e370: e59032dc ldr r3, [r0, #732] ; 0x2dc e374: e3530000 cmp r3, #0 e378: e24dd008 sub sp, sp, #8 e37c: e1a05000 mov r5, r0 e380: 0a000014 beq e3d8 <__sigtramp_r+0x74> e384: e7932101 ldr r2, [r3, r1, lsl #2] e388: e3520000 cmp r2, #0 e38c: e0833101 add r3, r3, r1, lsl #2 e390: 0a00000e beq e3d0 <__sigtramp_r+0x6c> e394: e3720001 cmn r2, #1 e398: 03a00002 moveq r0, #2 e39c: 0a000008 beq e3c4 <__sigtramp_r+0x60> e3a0: e3520001 cmp r2, #1 e3a4: 03a00003 moveq r0, #3 e3a8: 0a000005 beq e3c4 <__sigtramp_r+0x60> e3ac: e3a05000 mov r5, #0 e3b0: e1a00001 mov r0, r1 e3b4: e5835000 str r5, [r3] e3b8: e1a0e00f mov lr, pc e3bc: e12fff12 bx r2 e3c0: e1a00005 mov r0, r5 e3c4: e28dd008 add sp, sp, #8 e3c8: e8bd4020 pop {r5, lr} e3cc: e12fff1e bx lr e3d0: e3a00001 mov r0, #1 e3d4: eafffffa b e3c4 <__sigtramp_r+0x60> e3d8: e58d1004 str r1, [sp, #4] e3dc: ebffff84 bl e1f4 <_init_signal_r.part.0> e3e0: e3500000 cmp r0, #0 e3e4: 059532dc ldreq r3, [r5, #732] ; 0x2dc e3e8: 059d1004 ldreq r1, [sp, #4] e3ec: 0affffe4 beq e384 <__sigtramp_r+0x20> e3f0: e3e00000 mvn r0, #0 e3f4: eafffff2 b e3c4 <__sigtramp_r+0x60> e3f8: e3e00000 mvn r0, #0 e3fc: e12fff1e bx lr 0000e400 : e400: e59f3008 ldr r3, [pc, #8] ; e410 e404: e1a01000 mov r1, r0 e408: e5930000 ldr r0, [r3] e40c: eaffffab b e2c0 <_raise_r> e410: 0000fb6c .word 0x0000fb6c 0000e414 : e414: e59f300c ldr r3, [pc, #12] ; e428 e418: e1a02001 mov r2, r1 e41c: e1a01000 mov r1, r0 e420: e5930000 ldr r0, [r3] e424: eaffff8a b e254 <_signal_r> e428: 0000fb6c .word 0x0000fb6c 0000e42c <_init_signal>: e42c: e59f3018 ldr r3, [pc, #24] ; e44c <_init_signal+0x20> e430: e5930000 ldr r0, [r3] e434: e59032dc ldr r3, [r0, #732] ; 0x2dc e438: e3530000 cmp r3, #0 e43c: 0a000001 beq e448 <_init_signal+0x1c> e440: e3a00000 mov r0, #0 e444: e12fff1e bx lr e448: eaffff69 b e1f4 <_init_signal_r.part.0> e44c: 0000fb6c .word 0x0000fb6c 0000e450 <__sigtramp>: e450: e59f3008 ldr r3, [pc, #8] ; e460 <__sigtramp+0x10> e454: e1a01000 mov r1, r0 e458: e5930000 ldr r0, [r3] e45c: eaffffc0 b e364 <__sigtramp_r> e460: 0000fb6c .word 0x0000fb6c 0000e464 <_kill_r>: e464: e1a0c001 mov ip, r1 e468: e3a03000 mov r3, #0 e46c: e92d4070 push {r4, r5, r6, lr} e470: e59f402c ldr r4, [pc, #44] ; e4a4 <_kill_r+0x40> e474: e1a05000 mov r5, r0 e478: e1a01002 mov r1, r2 e47c: e1a0000c mov r0, ip e480: e5843000 str r3, [r4] e484: eb00032f bl f148 <_kill> e488: e3700001 cmn r0, #1 e48c: 1a000002 bne e49c <_kill_r+0x38> e490: e5943000 ldr r3, [r4] e494: e3530000 cmp r3, #0 e498: 15853000 strne r3, [r5] e49c: e8bd4070 pop {r4, r5, r6, lr} e4a0: e12fff1e bx lr e4a4: 00010598 .word 0x00010598 0000e4a8 <_getpid_r>: e4a8: e92d4010 push {r4, lr} e4ac: eb000319 bl f118 <_getpid> e4b0: e8bd4010 pop {r4, lr} e4b4: e12fff1e bx lr 0000e4b8 <__sread>: e4b8: e92d4010 push {r4, lr} e4bc: e1a04001 mov r4, r1 e4c0: e1d110fe ldrsh r1, [r1, #14] e4c4: eb000237 bl eda8 <_read_r> e4c8: e3500000 cmp r0, #0 e4cc: a5943050 ldrge r3, [r4, #80] ; 0x50 e4d0: b1d430bc ldrhlt r3, [r4, #12] e4d4: a0833000 addge r3, r3, r0 e4d8: b3c33a01 biclt r3, r3, #4096 ; 0x1000 e4dc: a5843050 strge r3, [r4, #80] ; 0x50 e4e0: b1c430bc strhlt r3, [r4, #12] e4e4: e8bd4010 pop {r4, lr} e4e8: e12fff1e bx lr 0000e4ec <__seofread>: e4ec: e3a00000 mov r0, #0 e4f0: e12fff1e bx lr 0000e4f4 <__swrite>: e4f4: e92d41f0 push {r4, r5, r6, r7, r8, lr} e4f8: e1a04001 mov r4, r1 e4fc: e1d110fc ldrsh r1, [r1, #12] e500: e3110c01 tst r1, #256 ; 0x100 e504: e1a06002 mov r6, r2 e508: e1a07003 mov r7, r3 e50c: e1a05000 mov r5, r0 e510: 0a000004 beq e528 <__swrite+0x34> e514: e1d410fe ldrsh r1, [r4, #14] e518: e3a03002 mov r3, #2 e51c: e3a02000 mov r2, #0 e520: eb00020e bl ed60 <_lseek_r> e524: e1d410fc ldrsh r1, [r4, #12] e528: e3c11a01 bic r1, r1, #4096 ; 0x1000 e52c: e1c410bc strh r1, [r4, #12] e530: e1a03007 mov r3, r7 e534: e1a02006 mov r2, r6 e538: e1d410fe ldrsh r1, [r4, #14] e53c: e1a00005 mov r0, r5 e540: eb000168 bl eae8 <_write_r> e544: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} e548: e12fff1e bx lr 0000e54c <__sseek>: e54c: e92d4010 push {r4, lr} e550: e1a04001 mov r4, r1 e554: e1d110fe ldrsh r1, [r1, #14] e558: eb000200 bl ed60 <_lseek_r> e55c: e1d430bc ldrh r3, [r4, #12] e560: e3700001 cmn r0, #1 e564: 03c33a01 biceq r3, r3, #4096 ; 0x1000 e568: 13833a01 orrne r3, r3, #4096 ; 0x1000 e56c: 15840050 strne r0, [r4, #80] ; 0x50 e570: e1c430bc strh r3, [r4, #12] e574: e8bd4010 pop {r4, lr} e578: e12fff1e bx lr 0000e57c <__sclose>: e57c: e92d4010 push {r4, lr} e580: e1d110fe ldrsh r1, [r1, #14] e584: eb000169 bl eb30 <_close_r> e588: e8bd4010 pop {r4, lr} e58c: e12fff1e bx lr 0000e590 : e590: e020c001 eor ip, r0, r1 e594: e31c0003 tst ip, #3 e598: 1a000021 bne e624 e59c: e210c003 ands ip, r0, #3 e5a0: e3c00003 bic r0, r0, #3 e5a4: e3c11003 bic r1, r1, #3 e5a8: e4902004 ldr r2, [r0], #4 e5ac: 04913004 ldreq r3, [r1], #4 e5b0: 0a000006 beq e5d0 e5b4: e22cc003 eor ip, ip, #3 e5b8: e3e034ff mvn r3, #-16777216 ; 0xff000000 e5bc: e1a0c18c lsl ip, ip, #3 e5c0: e1a0cc33 lsr ip, r3, ip e5c4: e4913004 ldr r3, [r1], #4 e5c8: e182200c orr r2, r2, ip e5cc: e183300c orr r3, r3, ip e5d0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) e5d4: e3a04001 mov r4, #1 e5d8: e1844404 orr r4, r4, r4, lsl #8 e5dc: e1844804 orr r4, r4, r4, lsl #16 e5e0: e042c004 sub ip, r2, r4 e5e4: e1520003 cmp r2, r3 e5e8: 01ccc002 biceq ip, ip, r2 e5ec: 011c0384 tsteq ip, r4, lsl #7 e5f0: 04902004 ldreq r2, [r0], #4 e5f4: 04913004 ldreq r3, [r1], #4 e5f8: 0afffff8 beq e5e0 e5fc: e1a00c02 lsl r0, r2, #24 e600: e1a02422 lsr r2, r2, #8 e604: e3500001 cmp r0, #1 e608: 21500c03 cmpcs r0, r3, lsl #24 e60c: 01a03423 lsreq r3, r3, #8 e610: 0afffff9 beq e5fc e614: e20330ff and r3, r3, #255 ; 0xff e618: e0630c20 rsb r0, r3, r0, lsr #24 e61c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) e620: e12fff1e bx lr e624: e3100003 tst r0, #3 e628: 0a000006 beq e648 e62c: e4d02001 ldrb r2, [r0], #1 e630: e4d13001 ldrb r3, [r1], #1 e634: e3520001 cmp r2, #1 e638: 21520003 cmpcs r2, r3 e63c: 0afffff8 beq e624 e640: e0420003 sub r0, r2, r3 e644: e12fff1e bx lr e648: e92d0030 push {r4, r5} e64c: e3a04001 mov r4, #1 e650: e1844404 orr r4, r4, r4, lsl #8 e654: e1844804 orr r4, r4, r4, lsl #16 e658: e4902004 ldr r2, [r0], #4 e65c: e2015003 and r5, r1, #3 e660: e3c11003 bic r1, r1, #3 e664: e4913004 ldr r3, [r1], #4 e668: e3550002 cmp r5, #2 e66c: 0a000017 beq e6d0 e670: 8a00002d bhi e72c e674: e3c254ff bic r5, r2, #-16777216 ; 0xff000000 e678: e1550423 cmp r5, r3, lsr #8 e67c: e042c004 sub ip, r2, r4 e680: e1ccc002 bic ip, ip, r2 e684: 1a000007 bne e6a8 e688: e01cc384 ands ip, ip, r4, lsl #7 e68c: 04913004 ldreq r3, [r1], #4 e690: 1a000006 bne e6b0 e694: e0255002 eor r5, r5, r2 e698: e1550c03 cmp r5, r3, lsl #24 e69c: 1a000008 bne e6c4 e6a0: e4902004 ldr r2, [r0], #4 e6a4: eafffff2 b e674 e6a8: e1a03423 lsr r3, r3, #8 e6ac: ea000036 b e78c e6b0: e3dcc4ff bics ip, ip, #-16777216 ; 0xff000000 e6b4: 1a000031 bne e780 e6b8: e5d13000 ldrb r3, [r1] e6bc: e1a05c22 lsr r5, r2, #24 e6c0: ea000031 b e78c e6c4: e1a05c22 lsr r5, r2, #24 e6c8: e20330ff and r3, r3, #255 ; 0xff e6cc: ea00002e b e78c e6d0: e1a05802 lsl r5, r2, #16 e6d4: e042c004 sub ip, r2, r4 e6d8: e1a05825 lsr r5, r5, #16 e6dc: e1ccc002 bic ip, ip, r2 e6e0: e1550823 cmp r5, r3, lsr #16 e6e4: 1a00000e bne e724 e6e8: e01cc384 ands ip, ip, r4, lsl #7 e6ec: 04913004 ldreq r3, [r1], #4 e6f0: 1a000004 bne e708 e6f4: e0255002 eor r5, r5, r2 e6f8: e1550803 cmp r5, r3, lsl #16 e6fc: 1a000006 bne e71c e700: e4902004 ldr r2, [r0], #4 e704: eafffff1 b e6d0 e708: e1b0c80c lsls ip, ip, #16 e70c: 1a00001b bne e780 e710: e1d130b0 ldrh r3, [r1] e714: e1a05822 lsr r5, r2, #16 e718: ea00001b b e78c e71c: e1a03803 lsl r3, r3, #16 e720: e1a05822 lsr r5, r2, #16 e724: e1a03823 lsr r3, r3, #16 e728: ea000017 b e78c e72c: e20250ff and r5, r2, #255 ; 0xff e730: e1550c23 cmp r5, r3, lsr #24 e734: e042c004 sub ip, r2, r4 e738: e1ccc002 bic ip, ip, r2 e73c: 1a000007 bne e760 e740: e01cc384 ands ip, ip, r4, lsl #7 e744: 04913004 ldreq r3, [r1], #4 e748: 1a000006 bne e768 e74c: e0255002 eor r5, r5, r2 e750: e1550403 cmp r5, r3, lsl #8 e754: 1a000006 bne e774 e758: e4902004 ldr r2, [r0], #4 e75c: eafffff2 b e72c e760: e1a03c23 lsr r3, r3, #24 e764: ea000008 b e78c e768: e31200ff tst r2, #255 ; 0xff e76c: 0a000003 beq e780 e770: e4913004 ldr r3, [r1], #4 e774: e1a05422 lsr r5, r2, #8 e778: e3c334ff bic r3, r3, #-16777216 ; 0xff000000 e77c: ea000002 b e78c e780: e3a00000 mov r0, #0 e784: e8bd0030 pop {r4, r5} e788: e12fff1e bx lr e78c: e20520ff and r2, r5, #255 ; 0xff e790: e20300ff and r0, r3, #255 ; 0xff e794: e3500001 cmp r0, #1 e798: 21500002 cmpcs r0, r2 e79c: 01a05425 lsreq r5, r5, #8 e7a0: 01a03423 lsreq r3, r3, #8 e7a4: 0afffff8 beq e78c e7a8: e0420000 sub r0, r2, r0 e7ac: e8bd0030 pop {r4, r5} e7b0: e12fff1e bx lr 0000e7b4 : e7b4: e3c01003 bic r1, r0, #3 e7b8: e2100003 ands r0, r0, #3 e7bc: e2600000 rsb r0, r0, #0 e7c0: e4913004 ldr r3, [r1], #4 e7c4: e280c004 add ip, r0, #4 e7c8: e1a0c18c lsl ip, ip, #3 e7cc: e3e02000 mvn r2, #0 e7d0: 11833c32 orrne r3, r3, r2, lsr ip e7d4: e3a0c001 mov ip, #1 e7d8: e18cc40c orr ip, ip, ip, lsl #8 e7dc: e18cc80c orr ip, ip, ip, lsl #16 e7e0: e043200c sub r2, r3, ip e7e4: e1c22003 bic r2, r2, r3 e7e8: e012238c ands r2, r2, ip, lsl #7 e7ec: 04913004 ldreq r3, [r1], #4 e7f0: 02800004 addeq r0, r0, #4 e7f4: 0afffff9 beq e7e0 e7f8: e31300ff tst r3, #255 ; 0xff e7fc: 12800001 addne r0, r0, #1 e800: 13130cff tstne r3, #65280 ; 0xff00 e804: 12800001 addne r0, r0, #1 e808: 131308ff tstne r3, #16711680 ; 0xff0000 e80c: 12800001 addne r0, r0, #1 e810: e12fff1e bx lr 0000e814 <__swbuf_r>: e814: e92d41f0 push {r4, r5, r6, r7, r8, lr} e818: e2506000 subs r6, r0, #0 e81c: e1a05001 mov r5, r1 e820: e1a04002 mov r4, r2 e824: 0a000002 beq e834 <__swbuf_r+0x20> e828: e5963038 ldr r3, [r6, #56] ; 0x38 e82c: e3530000 cmp r3, #0 e830: 0a000042 beq e940 <__swbuf_r+0x12c> e834: e1d410fc ldrsh r1, [r4, #12] e838: e5940018 ldr r0, [r4, #24] e83c: e1a03801 lsl r3, r1, #16 e840: e3130702 tst r3, #524288 ; 0x80000 e844: e1a02823 lsr r2, r3, #16 e848: e5840008 str r0, [r4, #8] e84c: 0a000022 beq e8dc <__swbuf_r+0xc8> e850: e5943010 ldr r3, [r4, #16] e854: e3530000 cmp r3, #0 e858: 0a00001f beq e8dc <__swbuf_r+0xc8> e85c: e3120a02 tst r2, #8192 ; 0x2000 e860: 05942064 ldreq r2, [r4, #100] ; 0x64 e864: 03c22a02 biceq r2, r2, #8192 ; 0x2000 e868: 03811a02 orreq r1, r1, #8192 ; 0x2000 e86c: 05842064 streq r2, [r4, #100] ; 0x64 e870: e5942000 ldr r2, [r4] e874: 01c410bc strheq r1, [r4, #12] e878: e5941014 ldr r1, [r4, #20] e87c: e0423003 sub r3, r2, r3 e880: e20550ff and r5, r5, #255 ; 0xff e884: e1530001 cmp r3, r1 e888: e1a07005 mov r7, r5 e88c: b2833001 addlt r3, r3, #1 e890: aa000022 bge e920 <__swbuf_r+0x10c> e894: e5941008 ldr r1, [r4, #8] e898: e2820001 add r0, r2, #1 e89c: e2411001 sub r1, r1, #1 e8a0: e5841008 str r1, [r4, #8] e8a4: e5840000 str r0, [r4] e8a8: e5c25000 strb r5, [r2] e8ac: e5942014 ldr r2, [r4, #20] e8b0: e1520003 cmp r2, r3 e8b4: 0a000012 beq e904 <__swbuf_r+0xf0> e8b8: e1d430bc ldrh r3, [r4, #12] e8bc: e355000a cmp r5, #10 e8c0: 13a05000 movne r5, #0 e8c4: 02035001 andeq r5, r3, #1 e8c8: e3550000 cmp r5, #0 e8cc: 1a00000c bne e904 <__swbuf_r+0xf0> e8d0: e1a00007 mov r0, r7 e8d4: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} e8d8: e12fff1e bx lr e8dc: e1a01004 mov r1, r4 e8e0: e1a00006 mov r0, r6 e8e4: ebfff4e9 bl bc90 <__swsetup_r> e8e8: e3500000 cmp r0, #0 e8ec: 1a000009 bne e918 <__swbuf_r+0x104> e8f0: e1d410fc ldrsh r1, [r4, #12] e8f4: e1a02801 lsl r2, r1, #16 e8f8: e5943010 ldr r3, [r4, #16] e8fc: e1a02822 lsr r2, r2, #16 e900: eaffffd5 b e85c <__swbuf_r+0x48> e904: e1a01004 mov r1, r4 e908: e1a00006 mov r0, r6 e90c: ebfff5cc bl c044 <_fflush_r> e910: e3500000 cmp r0, #0 e914: 0affffed beq e8d0 <__swbuf_r+0xbc> e918: e3e07000 mvn r7, #0 e91c: eaffffeb b e8d0 <__swbuf_r+0xbc> e920: e1a01004 mov r1, r4 e924: e1a00006 mov r0, r6 e928: ebfff5c5 bl c044 <_fflush_r> e92c: e3500000 cmp r0, #0 e930: 1afffff8 bne e918 <__swbuf_r+0x104> e934: e3a03001 mov r3, #1 e938: e5942000 ldr r2, [r4] e93c: eaffffd4 b e894 <__swbuf_r+0x80> e940: ebfff654 bl c298 <__sinit> e944: eaffffba b e834 <__swbuf_r+0x20> 0000e948 <__swbuf>: e948: e59f300c ldr r3, [pc, #12] ; e95c <__swbuf+0x14> e94c: e1a02001 mov r2, r1 e950: e1a01000 mov r1, r0 e954: e5930000 ldr r0, [r3] e958: eaffffad b e814 <__swbuf_r> e95c: 0000fb6c .word 0x0000fb6c 0000e960 <_wcrtomb_r>: e960: e92d4070 push {r4, r5, r6, lr} e964: e251c000 subs ip, r1, #0 e968: e24dd010 sub sp, sp, #16 e96c: e1a05000 mov r5, r0 e970: e1a06003 mov r6, r3 e974: 0a000010 beq e9bc <_wcrtomb_r+0x5c> e978: e59fc06c ldr ip, [pc, #108] ; e9ec <_wcrtomb_r+0x8c> e97c: e59cc000 ldr ip, [ip] e980: e59cc034 ldr ip, [ip, #52] ; 0x34 e984: e59fe064 ldr lr, [pc, #100] ; e9f0 <_wcrtomb_r+0x90> e988: e35c0000 cmp ip, #0 e98c: 01a0c00e moveq ip, lr e990: e59c40e0 ldr r4, [ip, #224] ; 0xe0 e994: e1a0e00f mov lr, pc e998: e12fff14 bx r4 e99c: e3700001 cmn r0, #1 e9a0: 03a02000 moveq r2, #0 e9a4: 03a0308a moveq r3, #138 ; 0x8a e9a8: 05862000 streq r2, [r6] e9ac: 05853000 streq r3, [r5] e9b0: e28dd010 add sp, sp, #16 e9b4: e8bd4070 pop {r4, r5, r6, lr} e9b8: e12fff1e bx lr e9bc: e59f2028 ldr r2, [pc, #40] ; e9ec <_wcrtomb_r+0x8c> e9c0: e5921000 ldr r1, [r2] e9c4: e5911034 ldr r1, [r1, #52] ; 0x34 e9c8: e59f2020 ldr r2, [pc, #32] ; e9f0 <_wcrtomb_r+0x90> e9cc: e3510000 cmp r1, #0 e9d0: 01a01002 moveq r1, r2 e9d4: e1a0200c mov r2, ip e9d8: e59140e0 ldr r4, [r1, #224] ; 0xe0 e9dc: e28d1004 add r1, sp, #4 e9e0: e1a0e00f mov lr, pc e9e4: e12fff14 bx r4 e9e8: eaffffeb b e99c <_wcrtomb_r+0x3c> e9ec: 0000fb6c .word 0x0000fb6c e9f0: 0000ff98 .word 0x0000ff98 0000e9f4 : e9f4: e92d4070 push {r4, r5, r6, lr} e9f8: e59f3084 ldr r3, [pc, #132] ; ea84 e9fc: e5934000 ldr r4, [r3] ea00: e3500000 cmp r0, #0 ea04: e1a05002 mov r5, r2 ea08: e24dd010 sub sp, sp, #16 ea0c: e5943034 ldr r3, [r4, #52] ; 0x34 ea10: e59f2070 ldr r2, [pc, #112] ; ea88 ea14: 0a000010 beq ea5c ea18: e3530000 cmp r3, #0 ea1c: 01a03002 moveq r3, r2 ea20: e1a02001 mov r2, r1 ea24: e59360e0 ldr r6, [r3, #224] ; 0xe0 ea28: e1a01000 mov r1, r0 ea2c: e1a03005 mov r3, r5 ea30: e1a00004 mov r0, r4 ea34: e1a0e00f mov lr, pc ea38: e12fff16 bx r6 ea3c: e3700001 cmn r0, #1 ea40: 03a02000 moveq r2, #0 ea44: 03a0308a moveq r3, #138 ; 0x8a ea48: 05852000 streq r2, [r5] ea4c: 05843000 streq r3, [r4] ea50: e28dd010 add sp, sp, #16 ea54: e8bd4070 pop {r4, r5, r6, lr} ea58: e12fff1e bx lr ea5c: e3530000 cmp r3, #0 ea60: 01a03002 moveq r3, r2 ea64: e28d1004 add r1, sp, #4 ea68: e1a02000 mov r2, r0 ea6c: e59360e0 ldr r6, [r3, #224] ; 0xe0 ea70: e1a00004 mov r0, r4 ea74: e1a03005 mov r3, r5 ea78: e1a0e00f mov lr, pc ea7c: e12fff16 bx r6 ea80: eaffffed b ea3c ea84: 0000fb6c .word 0x0000fb6c ea88: 0000ff98 .word 0x0000ff98 0000ea8c <_wctomb_r>: ea8c: e59fc024 ldr ip, [pc, #36] ; eab8 <_wctomb_r+0x2c> ea90: e59cc000 ldr ip, [ip] ea94: e59cc034 ldr ip, [ip, #52] ; 0x34 ea98: e52de004 push {lr} ; (str lr, [sp, #-4]!) ea9c: e59fe018 ldr lr, [pc, #24] ; eabc <_wctomb_r+0x30> eaa0: e35c0000 cmp ip, #0 eaa4: 01a0c00e moveq ip, lr eaa8: e59ce0e0 ldr lr, [ip, #224] ; 0xe0 eaac: e1a0c00e mov ip, lr eab0: e49de004 pop {lr} ; (ldr lr, [sp], #4) eab4: e12fff1c bx ip eab8: 0000fb6c .word 0x0000fb6c eabc: 0000ff98 .word 0x0000ff98 0000eac0 <__ascii_wctomb>: eac0: e3510000 cmp r1, #0 eac4: 0a000005 beq eae0 <__ascii_wctomb+0x20> eac8: e35200ff cmp r2, #255 ; 0xff eacc: 83a0308a movhi r3, #138 ; 0x8a ead0: 95c12000 strbls r2, [r1] ead4: 83e01000 mvnhi r1, #0 ead8: 93a01001 movls r1, #1 eadc: 85803000 strhi r3, [r0] eae0: e1a00001 mov r0, r1 eae4: e12fff1e bx lr 0000eae8 <_write_r>: eae8: e92d4070 push {r4, r5, r6, lr} eaec: e1a0e001 mov lr, r1 eaf0: e3a0c000 mov ip, #0 eaf4: e59f4030 ldr r4, [pc, #48] ; eb2c <_write_r+0x44> eaf8: e1a01002 mov r1, r2 eafc: e1a05000 mov r5, r0 eb00: e1a02003 mov r2, r3 eb04: e1a0000e mov r0, lr eb08: e584c000 str ip, [r4] eb0c: eb0001aa bl f1bc <_write> eb10: e3700001 cmn r0, #1 eb14: 1a000002 bne eb24 <_write_r+0x3c> eb18: e5943000 ldr r3, [r4] eb1c: e3530000 cmp r3, #0 eb20: 15853000 strne r3, [r5] eb24: e8bd4070 pop {r4, r5, r6, lr} eb28: e12fff1e bx lr eb2c: 00010598 .word 0x00010598 0000eb30 <_close_r>: eb30: e3a03000 mov r3, #0 eb34: e92d4070 push {r4, r5, r6, lr} eb38: e59f4028 ldr r4, [pc, #40] ; eb68 <_close_r+0x38> eb3c: e1a05000 mov r5, r0 eb40: e1a00001 mov r0, r1 eb44: e5843000 str r3, [r4] eb48: eb000166 bl f0e8 <_close> eb4c: e3700001 cmn r0, #1 eb50: 1a000002 bne eb60 <_close_r+0x30> eb54: e5943000 ldr r3, [r4] eb58: e3530000 cmp r3, #0 eb5c: 15853000 strne r3, [r5] eb60: e8bd4070 pop {r4, r5, r6, lr} eb64: e12fff1e bx lr eb68: 00010598 .word 0x00010598 0000eb6c <_fclose_r>: eb6c: e92d4070 push {r4, r5, r6, lr} eb70: e2514000 subs r4, r1, #0 eb74: 0a00000b beq eba8 <_fclose_r+0x3c> eb78: e3500000 cmp r0, #0 eb7c: e1a06000 mov r6, r0 eb80: 0a000002 beq eb90 <_fclose_r+0x24> eb84: e5903038 ldr r3, [r0, #56] ; 0x38 eb88: e3530000 cmp r3, #0 eb8c: 0a000038 beq ec74 <_fclose_r+0x108> eb90: e5943064 ldr r3, [r4, #100] ; 0x64 eb94: e3130001 tst r3, #1 eb98: 0a000006 beq ebb8 <_fclose_r+0x4c> eb9c: e1d430fc ldrsh r3, [r4, #12] eba0: e3530000 cmp r3, #0 eba4: 1a000006 bne ebc4 <_fclose_r+0x58> eba8: e3a05000 mov r5, #0 ebac: e1a00005 mov r0, r5 ebb0: e8bd4070 pop {r4, r5, r6, lr} ebb4: e12fff1e bx lr ebb8: e1d430bc ldrh r3, [r4, #12] ebbc: e3130c02 tst r3, #512 ; 0x200 ebc0: 0a000034 beq ec98 <_fclose_r+0x12c> ebc4: e1a01004 mov r1, r4 ebc8: e1a00006 mov r0, r6 ebcc: ebfff48d bl be08 <__sflush_r> ebd0: e594302c ldr r3, [r4, #44] ; 0x2c ebd4: e3530000 cmp r3, #0 ebd8: e1a05000 mov r5, r0 ebdc: 0a000005 beq ebf8 <_fclose_r+0x8c> ebe0: e594101c ldr r1, [r4, #28] ebe4: e1a00006 mov r0, r6 ebe8: e1a0e00f mov lr, pc ebec: e12fff13 bx r3 ebf0: e3500000 cmp r0, #0 ebf4: b3e05000 mvnlt r5, #0 ebf8: e1d430bc ldrh r3, [r4, #12] ebfc: e3130080 tst r3, #128 ; 0x80 ec00: 1a00001d bne ec7c <_fclose_r+0x110> ec04: e5941030 ldr r1, [r4, #48] ; 0x30 ec08: e3510000 cmp r1, #0 ec0c: 0a000005 beq ec28 <_fclose_r+0xbc> ec10: e2843040 add r3, r4, #64 ; 0x40 ec14: e1510003 cmp r1, r3 ec18: 11a00006 movne r0, r6 ec1c: 1bfff6fe blne c81c <_free_r> ec20: e3a03000 mov r3, #0 ec24: e5843030 str r3, [r4, #48] ; 0x30 ec28: e5941044 ldr r1, [r4, #68] ; 0x44 ec2c: e3510000 cmp r1, #0 ec30: 0a000003 beq ec44 <_fclose_r+0xd8> ec34: e1a00006 mov r0, r6 ec38: ebfff6f7 bl c81c <_free_r> ec3c: e3a03000 mov r3, #0 ec40: e5843044 str r3, [r4, #68] ; 0x44 ec44: ebfff600 bl c44c <__sfp_lock_acquire> ec48: e3a03000 mov r3, #0 ec4c: e5942064 ldr r2, [r4, #100] ; 0x64 ec50: e3120001 tst r2, #1 ec54: e1c430bc strh r3, [r4, #12] ec58: 0a00000b beq ec8c <_fclose_r+0x120> ec5c: e5940058 ldr r0, [r4, #88] ; 0x58 ec60: ebfff959 bl d1cc <__retarget_lock_close_recursive> ec64: ebfff5fe bl c464 <__sfp_lock_release> ec68: e1a00005 mov r0, r5 ec6c: e8bd4070 pop {r4, r5, r6, lr} ec70: e12fff1e bx lr ec74: ebfff587 bl c298 <__sinit> ec78: eaffffc4 b eb90 <_fclose_r+0x24> ec7c: e5941010 ldr r1, [r4, #16] ec80: e1a00006 mov r0, r6 ec84: ebfff6e4 bl c81c <_free_r> ec88: eaffffdd b ec04 <_fclose_r+0x98> ec8c: e5940058 ldr r0, [r4, #88] ; 0x58 ec90: ebfff955 bl d1ec <__retarget_lock_release_recursive> ec94: eafffff0 b ec5c <_fclose_r+0xf0> ec98: e5940058 ldr r0, [r4, #88] ; 0x58 ec9c: ebfff94c bl d1d4 <__retarget_lock_acquire_recursive> eca0: e1d430fc ldrsh r3, [r4, #12] eca4: e3530000 cmp r3, #0 eca8: 1affffc5 bne ebc4 <_fclose_r+0x58> ecac: e5945064 ldr r5, [r4, #100] ; 0x64 ecb0: e2155001 ands r5, r5, #1 ecb4: 1affffbb bne eba8 <_fclose_r+0x3c> ecb8: e5940058 ldr r0, [r4, #88] ; 0x58 ecbc: ebfff94a bl d1ec <__retarget_lock_release_recursive> ecc0: e1a00005 mov r0, r5 ecc4: e8bd4070 pop {r4, r5, r6, lr} ecc8: e12fff1e bx lr 0000eccc : eccc: e59f3008 ldr r3, [pc, #8] ; ecdc ecd0: e1a01000 mov r1, r0 ecd4: e5930000 ldr r0, [r3] ecd8: eaffffa3 b eb6c <_fclose_r> ecdc: 0000fb6c .word 0x0000fb6c 0000ece0 <_fstat_r>: ece0: e1a0c001 mov ip, r1 ece4: e3a03000 mov r3, #0 ece8: e92d4070 push {r4, r5, r6, lr} ecec: e59f402c ldr r4, [pc, #44] ; ed20 <_fstat_r+0x40> ecf0: e1a05000 mov r5, r0 ecf4: e1a01002 mov r1, r2 ecf8: e1a0000c mov r0, ip ecfc: e5843000 str r3, [r4] ed00: eb0000fe bl f100 <_fstat> ed04: e3700001 cmn r0, #1 ed08: 1a000002 bne ed18 <_fstat_r+0x38> ed0c: e5943000 ldr r3, [r4] ed10: e3530000 cmp r3, #0 ed14: 15853000 strne r3, [r5] ed18: e8bd4070 pop {r4, r5, r6, lr} ed1c: e12fff1e bx lr ed20: 00010598 .word 0x00010598 0000ed24 <_isatty_r>: ed24: e3a03000 mov r3, #0 ed28: e92d4070 push {r4, r5, r6, lr} ed2c: e59f4028 ldr r4, [pc, #40] ; ed5c <_isatty_r+0x38> ed30: e1a05000 mov r5, r0 ed34: e1a00001 mov r0, r1 ed38: e5843000 str r3, [r4] ed3c: eb0000fb bl f130 <_isatty> ed40: e3700001 cmn r0, #1 ed44: 1a000002 bne ed54 <_isatty_r+0x30> ed48: e5943000 ldr r3, [r4] ed4c: e3530000 cmp r3, #0 ed50: 15853000 strne r3, [r5] ed54: e8bd4070 pop {r4, r5, r6, lr} ed58: e12fff1e bx lr ed5c: 00010598 .word 0x00010598 0000ed60 <_lseek_r>: ed60: e92d4070 push {r4, r5, r6, lr} ed64: e1a0e001 mov lr, r1 ed68: e3a0c000 mov ip, #0 ed6c: e59f4030 ldr r4, [pc, #48] ; eda4 <_lseek_r+0x44> ed70: e1a01002 mov r1, r2 ed74: e1a05000 mov r5, r0 ed78: e1a02003 mov r2, r3 ed7c: e1a0000e mov r0, lr ed80: e584c000 str ip, [r4] ed84: eb0000f5 bl f160 <_lseek> ed88: e3700001 cmn r0, #1 ed8c: 1a000002 bne ed9c <_lseek_r+0x3c> ed90: e5943000 ldr r3, [r4] ed94: e3530000 cmp r3, #0 ed98: 15853000 strne r3, [r5] ed9c: e8bd4070 pop {r4, r5, r6, lr} eda0: e12fff1e bx lr eda4: 00010598 .word 0x00010598 0000eda8 <_read_r>: eda8: e92d4070 push {r4, r5, r6, lr} edac: e1a0e001 mov lr, r1 edb0: e3a0c000 mov ip, #0 edb4: e59f4030 ldr r4, [pc, #48] ; edec <_read_r+0x44> edb8: e1a01002 mov r1, r2 edbc: e1a05000 mov r5, r0 edc0: e1a02003 mov r2, r3 edc4: e1a0000e mov r0, lr edc8: e584c000 str ip, [r4] edcc: eb0000e9 bl f178 <_read> edd0: e3700001 cmn r0, #1 edd4: 1a000002 bne ede4 <_read_r+0x3c> edd8: e5943000 ldr r3, [r4] eddc: e3530000 cmp r3, #0 ede0: 15853000 strne r3, [r5] ede4: e8bd4070 pop {r4, r5, r6, lr} ede8: e12fff1e bx lr edec: 00010598 .word 0x00010598 0000edf0 : edf0: e92d4070 push {r4, r5, r6, lr} edf4: e1a04001 mov r4, r1 edf8: e5911000 ldr r1, [r1] edfc: e3510000 cmp r1, #0 ee00: e1a05000 mov r5, r0 ee04: 1bfffff9 blne edf0 ee08: e1a01004 mov r1, r4 ee0c: e1a00005 mov r0, r5 ee10: ebfff681 bl c81c <_free_r> ee14: e8bd4070 pop {r4, r5, r6, lr} ee18: e12fff1e bx lr 0000ee1c <_reclaim_reent>: ee1c: e59f30e8 ldr r3, [pc, #232] ; ef0c <_reclaim_reent+0xf0> ee20: e5933000 ldr r3, [r3] ee24: e1530000 cmp r3, r0 ee28: 012fff1e bxeq lr ee2c: e590304c ldr r3, [r0, #76] ; 0x4c ee30: e3530000 cmp r3, #0 ee34: e92d4070 push {r4, r5, r6, lr} ee38: e1a05000 mov r5, r0 ee3c: 0a00000f beq ee80 <_reclaim_reent+0x64> ee40: e3a06000 mov r6, #0 ee44: e7931006 ldr r1, [r3, r6] ee48: e3510000 cmp r1, #0 ee4c: 0a000005 beq ee68 <_reclaim_reent+0x4c> ee50: e5914000 ldr r4, [r1] ee54: e1a00005 mov r0, r5 ee58: ebfff66f bl c81c <_free_r> ee5c: e2541000 subs r1, r4, #0 ee60: 1afffffa bne ee50 <_reclaim_reent+0x34> ee64: e595304c ldr r3, [r5, #76] ; 0x4c ee68: e2866004 add r6, r6, #4 ee6c: e3560080 cmp r6, #128 ; 0x80 ee70: 1afffff3 bne ee44 <_reclaim_reent+0x28> ee74: e1a01003 mov r1, r3 ee78: e1a00005 mov r0, r5 ee7c: ebfff666 bl c81c <_free_r> ee80: e5951040 ldr r1, [r5, #64] ; 0x40 ee84: e3510000 cmp r1, #0 ee88: 11a00005 movne r0, r5 ee8c: 1bfff662 blne c81c <_free_r> ee90: e5951148 ldr r1, [r5, #328] ; 0x148 ee94: e3510000 cmp r1, #0 ee98: 0a000008 beq eec0 <_reclaim_reent+0xa4> ee9c: e2856f53 add r6, r5, #332 ; 0x14c eea0: e1510006 cmp r1, r6 eea4: 0a000005 beq eec0 <_reclaim_reent+0xa4> eea8: e5914000 ldr r4, [r1] eeac: e1a00005 mov r0, r5 eeb0: ebfff659 bl c81c <_free_r> eeb4: e1560004 cmp r6, r4 eeb8: e1a01004 mov r1, r4 eebc: 1afffff9 bne eea8 <_reclaim_reent+0x8c> eec0: e5951054 ldr r1, [r5, #84] ; 0x54 eec4: e3510000 cmp r1, #0 eec8: 11a00005 movne r0, r5 eecc: 1bfff652 blne c81c <_free_r> eed0: e5953038 ldr r3, [r5, #56] ; 0x38 eed4: e3530000 cmp r3, #0 eed8: 1a000001 bne eee4 <_reclaim_reent+0xc8> eedc: e8bd4070 pop {r4, r5, r6, lr} eee0: e12fff1e bx lr eee4: e595303c ldr r3, [r5, #60] ; 0x3c eee8: e1a00005 mov r0, r5 eeec: e1a0e00f mov lr, pc eef0: e12fff13 bx r3 eef4: e59512e0 ldr r1, [r5, #736] ; 0x2e0 eef8: e3510000 cmp r1, #0 eefc: 0afffff6 beq eedc <_reclaim_reent+0xc0> ef00: e1a00005 mov r0, r5 ef04: e8bd4070 pop {r4, r5, r6, lr} ef08: eaffffb8 b edf0 ef0c: 0000fb6c .word 0x0000fb6c 0000ef10 <__aeabi_uldivmod>: ef10: e3530000 cmp r3, #0 ef14: 03520000 cmpeq r2, #0 ef18: 1a000004 bne ef30 <__aeabi_uldivmod+0x20> ef1c: e3510000 cmp r1, #0 ef20: 03500000 cmpeq r0, #0 ef24: 13e01000 mvnne r1, #0 ef28: 13e00000 mvnne r0, #0 ef2c: eaffecf8 b a314 <__aeabi_idiv0> ef30: e24dd008 sub sp, sp, #8 ef34: e92d6000 push {sp, lr} ef38: eb000003 bl ef4c <__udivmoddi4> ef3c: e59de004 ldr lr, [sp, #4] ef40: e28dd008 add sp, sp, #8 ef44: e8bd000c pop {r2, r3} ef48: e12fff1e bx lr 0000ef4c <__udivmoddi4>: ef4c: e1510003 cmp r1, r3 ef50: e92d4ff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} ef54: 01500002 cmpeq r0, r2 ef58: e1a04000 mov r4, r0 ef5c: e1a05001 mov r5, r1 ef60: e59da028 ldr sl, [sp, #40] ; 0x28 ef64: 33a00000 movcc r0, #0 ef68: 33a01000 movcc r1, #0 ef6c: 3a00003d bcc f068 <__udivmoddi4+0x11c> ef70: e1a00002 mov r0, r2 ef74: e1a01003 mov r1, r3 ef78: e1a08002 mov r8, r2 ef7c: e1a09003 mov r9, r3 ef80: eb00003c bl f078 <__clzdi2> ef84: e1a01005 mov r1, r5 ef88: e1a0b000 mov fp, r0 ef8c: e1a00004 mov r0, r4 ef90: eb000038 bl f078 <__clzdi2> ef94: e04bb000 sub fp, fp, r0 ef98: e24b2020 sub r2, fp, #32 ef9c: e1a07b19 lsl r7, r9, fp efa0: e1877218 orr r7, r7, r8, lsl r2 efa4: e26bc020 rsb ip, fp, #32 efa8: e1877c38 orr r7, r7, r8, lsr ip efac: e1550007 cmp r5, r7 efb0: e1a06b18 lsl r6, r8, fp efb4: 01540006 cmpeq r4, r6 efb8: 33a00000 movcc r0, #0 efbc: 33a01000 movcc r1, #0 efc0: 3a000005 bcc efdc <__udivmoddi4+0x90> efc4: e3a0e001 mov lr, #1 efc8: e0544006 subs r4, r4, r6 efcc: e1a0121e lsl r1, lr, r2 efd0: e1811c3e orr r1, r1, lr, lsr ip efd4: e0c55007 sbc r5, r5, r7 efd8: e1a00b1e lsl r0, lr, fp efdc: e35b0000 cmp fp, #0 efe0: 0a000020 beq f068 <__udivmoddi4+0x11c> efe4: e1b070a7 lsrs r7, r7, #1 efe8: e1a06066 rrx r6, r6 efec: e1a0e00b mov lr, fp eff0: ea000007 b f014 <__udivmoddi4+0xc8> eff4: e0544006 subs r4, r4, r6 eff8: e0c55007 sbc r5, r5, r7 effc: e0944004 adds r4, r4, r4 f000: e0a55005 adc r5, r5, r5 f004: e2944001 adds r4, r4, #1 f008: e2a55000 adc r5, r5, #0 f00c: e25ee001 subs lr, lr, #1 f010: 0a000006 beq f030 <__udivmoddi4+0xe4> f014: e1550007 cmp r5, r7 f018: 01540006 cmpeq r4, r6 f01c: 2afffff4 bcs eff4 <__udivmoddi4+0xa8> f020: e0944004 adds r4, r4, r4 f024: e0a55005 adc r5, r5, r5 f028: e25ee001 subs lr, lr, #1 f02c: 1afffff8 bne f014 <__udivmoddi4+0xc8> f030: e1a0eb34 lsr lr, r4, fp f034: e18eec15 orr lr, lr, r5, lsl ip f038: e18ee235 orr lr, lr, r5, lsr r2 f03c: e0906004 adds r6, r0, r4 f040: e1a0400e mov r4, lr f044: e0a17005 adc r7, r1, r5 f048: e1a01b35 lsr r1, r5, fp f04c: e1a05001 mov r5, r1 f050: e1a01b11 lsl r1, r1, fp f054: e181121e orr r1, r1, lr, lsl r2 f058: e1a00b1e lsl r0, lr, fp f05c: e1811c3e orr r1, r1, lr, lsr ip f060: e0560000 subs r0, r6, r0 f064: e0c71001 sbc r1, r7, r1 f068: e35a0000 cmp sl, #0 f06c: 188a0030 stmne sl, {r4, r5} f070: e8bd4ff8 pop {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} f074: e12fff1e bx lr 0000f078 <__clzdi2>: f078: e92d4010 push {r4, lr} f07c: e3510000 cmp r1, #0 f080: 1a000002 bne f090 <__clzdi2+0x18> f084: eb000005 bl f0a0 <__clzsi2> f088: e2800020 add r0, r0, #32 f08c: ea000001 b f098 <__clzdi2+0x20> f090: e1a00001 mov r0, r1 f094: eb000001 bl f0a0 <__clzsi2> f098: e8bd4010 pop {r4, lr} f09c: e12fff1e bx lr 0000f0a0 <__clzsi2>: f0a0: e3a0101c mov r1, #28 f0a4: e3500801 cmp r0, #65536 ; 0x10000 f0a8: 21a00820 lsrcs r0, r0, #16 f0ac: 22411010 subcs r1, r1, #16 f0b0: e3500c01 cmp r0, #256 ; 0x100 f0b4: 21a00420 lsrcs r0, r0, #8 f0b8: 22411008 subcs r1, r1, #8 f0bc: e3500010 cmp r0, #16 f0c0: 21a00220 lsrcs r0, r0, #4 f0c4: 22411004 subcs r1, r1, #4 f0c8: e28f2008 add r2, pc, #8 f0cc: e7d20000 ldrb r0, [r2, r0] f0d0: e0800001 add r0, r0, r1 f0d4: e12fff1e bx lr f0d8: 02020304 .word 0x02020304 f0dc: 01010101 .word 0x01010101 ... 0000f0e8 <_close>: f0e8: e3a02058 mov r2, #88 ; 0x58 f0ec: e59f3008 ldr r3, [pc, #8] ; f0fc <_close+0x14> f0f0: e3e00000 mvn r0, #0 f0f4: e5832000 str r2, [r3] f0f8: e12fff1e bx lr f0fc: 00010598 .word 0x00010598 0000f100 <_fstat>: f100: e3a02058 mov r2, #88 ; 0x58 f104: e59f3008 ldr r3, [pc, #8] ; f114 <_fstat+0x14> f108: e3e00000 mvn r0, #0 f10c: e5832000 str r2, [r3] f110: e12fff1e bx lr f114: 00010598 .word 0x00010598 0000f118 <_getpid>: f118: e3a02058 mov r2, #88 ; 0x58 f11c: e59f3008 ldr r3, [pc, #8] ; f12c <_getpid+0x14> f120: e3e00000 mvn r0, #0 f124: e5832000 str r2, [r3] f128: e12fff1e bx lr f12c: 00010598 .word 0x00010598 0000f130 <_isatty>: f130: e3a02058 mov r2, #88 ; 0x58 f134: e59f3008 ldr r3, [pc, #8] ; f144 <_isatty+0x14> f138: e3a00000 mov r0, #0 f13c: e5832000 str r2, [r3] f140: e12fff1e bx lr f144: 00010598 .word 0x00010598 0000f148 <_kill>: f148: e3a02058 mov r2, #88 ; 0x58 f14c: e59f3008 ldr r3, [pc, #8] ; f15c <_kill+0x14> f150: e3e00000 mvn r0, #0 f154: e5832000 str r2, [r3] f158: e12fff1e bx lr f15c: 00010598 .word 0x00010598 0000f160 <_lseek>: f160: e3a02058 mov r2, #88 ; 0x58 f164: e59f3008 ldr r3, [pc, #8] ; f174 <_lseek+0x14> f168: e3e00000 mvn r0, #0 f16c: e5832000 str r2, [r3] f170: e12fff1e bx lr f174: 00010598 .word 0x00010598 0000f178 <_read>: f178: e3a02058 mov r2, #88 ; 0x58 f17c: e59f3008 ldr r3, [pc, #8] ; f18c <_read+0x14> f180: e3e00000 mvn r0, #0 f184: e5832000 str r2, [r3] f188: e12fff1e bx lr f18c: 00010598 .word 0x00010598 0000f190 <_sbrk>: f190: e59f201c ldr r2, [pc, #28] ; f1b4 <_sbrk+0x24> f194: e5923000 ldr r3, [r2] f198: e59f1018 ldr r1, [pc, #24] ; f1b8 <_sbrk+0x28> f19c: e3530000 cmp r3, #0 f1a0: 01a03001 moveq r3, r1 f1a4: e0830000 add r0, r3, r0 f1a8: e5820000 str r0, [r2] f1ac: e1a00003 mov r0, r3 f1b0: e12fff1e bx lr f1b4: 00010570 .word 0x00010570 f1b8: 0001059c .word 0x0001059c 0000f1bc <_write>: f1bc: e3a02058 mov r2, #88 ; 0x58 f1c0: e59f3008 ldr r3, [pc, #8] ; f1d0 <_write+0x14> f1c4: e3e00000 mvn r0, #0 f1c8: e5832000 str r2, [r3] f1cc: e12fff1e bx lr f1d0: 00010598 .word 0x00010598 0000f1d4 <_exit>: f1d4: eafffffe b f1d4 <_exit> Disassembly of section .fini: 0000f1d8 <_fini>: f1d8: e1a0c00d mov ip, sp f1dc: e92ddff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} f1e0: e24cb004 sub fp, ip, #4 f1e4: e24bd028 sub sp, fp, #40 ; 0x28 f1e8: e89d6ff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr} f1ec: e12fff1e bx lr