參考資訊:
https://linux-sunxi.org/BROM
https://github.com/hno/Allwinner-Info/tree/master/BROM
ffff0000: ea000008 b reset ; reset
ffff0004: ea000006 b unimplemented ; _undefined_instruction
ffff0008: ea000005 b unimplemented ; _software_interrupt
ffff000c: ea000004 b unimplemented ; _prefetch_abort
ffff0010: ea000003 b unimplemented ; _data_abort
ffff0014: ea000002 b unimplemented ; _not_used
ffff0018: ea000003 b irq ; _irq
ffff001c: ea000000 b unimplemented ; _fiq
ffff0020: ea000005 b fel_setup ; FEL
unimplemented:
ffff0024: eafffffe b unimplemented
#define BROM 0xffff4000
reset:
ffff0028: e59ff110 ldr pc, =BROM
irq:
ffff002c: e24ee004 sub lr, lr, #4
ffff0030: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff0034: eb00073c bl interrupt_handler
ffff0038: e8fd9fff ldm sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, pc}^
fel_setup:
ffff003c: e3a020d2 mov r2, #210 ; 0xd2
ffff0040: e121f002 msr CPSR_c, r2
ffff0044: e3a0da02 ldr sp, =0x2000
ffff0048: e10f0000 mrs r0, CPSR
ffff004c: e3c0001f bic r0, r0, #31
ffff0050: e38000d3 orr r0, r0, #211 ; 0xd3
ffff0054: e121f000 msr CPSR_c, r0
ffff0058: e3a0da07 ldr sp, =0x7000
ffff005c: ee110f30 mrc 15, 0, r0, cr1, cr0, {1}
ffff0060: e3c00002 bic r0, r0, #2
ffff0064: ee010f30 mcr 15, 0, r0, cr1, cr0, {1}
ffff0068: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff006c: e3c00001 bic r0, r0, #1
ffff0070: e3c00b02 bic r0, r0, #2048 ; 0x800
ffff0074: e3c00a01 bic r0, r0, #4096 ; 0x1000
ffff0078: e3c00004 bic r0, r0, #4
ffff007c: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff0080: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff0084: e3800a02 orr r0, r0, #8192 ; 0x2000
ffff0088: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff008c: e59f10b0 ldr r1, =0x01c20000
ffff0090: e3a02801 mov r2, 65536 ; 0x10000
ffff0094: e5913054 ldr r3, [r1, #84] ; 0x54
ffff0098: e3c33803 bic r3, r3, #196608 ; 0x30000
ffff009c: e1834002 orr r4, r3, r2 ;
ffff00a0: e5814054 str r4, [r1, #84] ; 0x54 CPU_CLK_SRC_SEL. = OSC24M
ffff00a4: e3a02010 mov r2, #16
ffff00a8: e5913054 ldr r3, [r1, #84] ; 0x54
ffff00ac: e3c330ff bic r3, r3, #255 ; 0xff
ffff00b0: e3c33c0f bic r3, r3, #3840 ; 0xf00
ffff00b4: e1834002 orr r4, r3, r2
ffff00b8: e5814054 str r4, [r1, #84] ; 0x54 AXI:AHB:APB = 1:1:2
ffff00bc: e3a02c01 mov r2, #256 ; 0x100
ffff00c0: e59130cc ldr r3, [r1, #204] ; 0xcc
ffff00c4: e3c33c01 bic r3, r3, #256 ; 0x100
ffff00c8: e1834002 orr r4, r3, r2
ffff00cc: e58140cc str r4, [r1, #204] ; 0xcc USB_CLK = ON
ffff00d0: e3020710 movw r0, #10000 ; 0x2710
.loop1:
ffff00d4: e2500001 subs r0, r0, #1
ffff00d8: 1afffffd bne .loop1 ; delay 10000
ffff00dc: e3a02001 mov r2, #1
ffff00e0: e5913060 ldr r3, [r1, #96] ; 0x60
ffff00e4: e3c33001 bic r3, r3, #1
ffff00e8: e1834002 orr r4, r3, r2
ffff00ec: e5814060 str r4, [r1, #96] ; 0x60 AHB_USB_GATE = ON
ffff00f0: e3a02001 mov r2, #1
ffff00f4: e59130cc ldr r3, [r1, #204] ; 0xcc
ffff00f8: e3c33001 bic r3, r3, #1
ffff00fc: e1834002 orr r4, r3, r2
ffff0100: e58140cc str r4, [r1, #204] ; 0xcc USBPHY0_RST = 1
ffff0104: e3a00000 mov r0, #0
ffff0108: ee080f15 mcr 15, 0, r0, cr8, cr5, {0}
ffff010c: ee080f16 mcr 15, 0, r0, cr8, cr6, {0}
ffff0110: e3a00000 mov r0, #0
ffff0114: ee020f50 mcr 15, 0, r0, cr2, cr0, {2}
ffff0118: e3a00802 mov r0, #131072 ; 0x20000
ffff011c: ee020f10 mcr 15, 0, r0, cr2, cr0, {0}
ffff0120: eb0008ea bl f_24d0
ffff0124: ee130f10 mrc 15, 0, r0, cr3, cr0, {0}
ffff0128: e59f0018 ldr r0, =0x55555555
ffff012c: ee030f10 mcr 15, 0, r0, cr3, cr0, {0}
ffff0130: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff0134: e3800001 orr r0, r0, #1
ffff0138: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff013c: eb0007b2 bl fel
memcpy:
ffff014c: e92d4070 push {r4, r5, r6, lr}
ffff0150: e1a03000 mov r3, r0
ffff0154: e1a04001 mov r4, r1
ffff0158: ea000001 b 0xffff0164
ffff015c: e4d45001 ldrb r5, [r4], #1
ffff0160: e4c35001 strb r5, [r3], #1
ffff0164: e1b05002 movs r5, r2
ffff0168: e2422001 sub r2, r2, #1
ffff016c: 1afffffa bne 0xffff015c
ffff0170: e8bd8070 pop {r4, r5, r6, pc}
void memset(r0 = dest, r1 = value, r2 = size);
memset:
ffff0174: e92d4030 push {r4, r5, lr}
ffff0178: e1a03000 mov r3, r0
ffff017c: ea000000 b 0xffff0184
ffff0180: e4c31001 strb r1, [r3], #1
ffff0184: e1b04002 movs r4, r2
ffff0188: e2422001 sub r2, r2, #1
ffff018c: 1afffffb bne 0xffff0180
ffff0190: e8bd8030 pop {r4, r5, pc}
void delay_10000(void);
delay_10000:
ffff0194: e3a00000 mov r0, #0
ffff0198: e320f000 nop {0}
ffff019c: ea000000 b 0xffff01a4
ffff01a0: e2800001 add r0, r0, #1
ffff01a4: e3021710 movw r1, #10000 ; 0x2710
ffff01a8: e1500001 cmp r0, r1
ffff01ac: 3afffffb bcc 0xffff01a0
ffff01b0: e12fff1e bx lr
void delay(r0 = N);
delay:
ffff01b4: e92d4070 push {r4, r5, r6, lr}
ffff01b8: e1a05000 mov r5, r0
ffff01bc: e3a04000 mov r4, #0
ffff01c0: e320f000 nop {0}
ffff01c4: ea000001 b 0xffff01d0
ffff01c8: ebfffff1 bl delay_10000
ffff01cc: e2844001 add r4, r4, #1
ffff01d0: e1540005 cmp r4, r5
ffff01d4: 3afffffb bcc 0xffff01c8
ffff01d8: e8bd8070 pop {r4, r5, r6, pc}
f_NOP1:
ffff01dc: e12fff1e bx lr
f_NOP2:
ffff01e0: e12fff1e bx lr
f_01e4:
ffff01e4: e3a01000 mov r1, #0
ffff01e8: ea000000 b 0xffff01f0
ffff01ec: e2811001 add r1, r1, #1
ffff01f0: e5d02018 ldrb r2, [r0, #24]
ffff01f4: e3520001 cmp r2, #1
ffff01f8: 0afffffb beq 0xffff01ec
ffff01fc: e12fff1e bx lr
f_0200:
ffff0200: e92d4010 push {r4, lr}
ffff0204: e1a04000 mov r4, r0
ffff0208: e3a02022 mov r2, #34 ; 0x22
ffff020c: e3a01000 mov r1, #0
ffff0210: e1a00004 mov r0, r4
ffff0214: ebffffd6 bl memset
ffff0218: e3a00000 mov r0, #0
ffff021c: e5c40020 strb r0, [r4, #32]
ffff0220: e5c40021 strb r0, [r4, #33] ; 0x21
ffff0224: e8bd8010 pop {r4, pc}
f_0228:
ffff0228: e5801000 str r1, [r0]
ffff022c: e5802004 str r2, [r0, #4]
ffff0230: e3a03000 mov r3, #0
ffff0234: e5c03008 strb r3, [r0, #8]
ffff0238: e5803010 str r3, [r0, #16]
ffff023c: e3a03001 mov r3, #1
ffff0240: e5c03018 strb r3, [r0, #24]
ffff0244: e12fff1e bx lr
f_0248:
ffff0248: e92d4070 push {r4, r5, r6, lr}
ffff024c: e24dd020 sub sp, sp, #32
ffff0250: e1a04000 mov r4, r0
ffff0254: e1a05001 mov r5, r1
ffff0258: e3a06000 mov r6, #0
ffff025c: e5946034 ldr r6, [r4, #52] ; 0x34
ffff0260: e1a00006 mov r0, r6
ffff0264: ebffffde bl f_01e4
ffff0268: e3a02020 mov r2, #32
ffff026c: e3a01000 mov r1, #0
ffff0270: e1a0000d mov r0, sp
ffff0274: ebffffbe bl memset
ffff0278: e1a00004 mov r0, r4
ffff027c: eb0001af bl f_0940
ffff0280: e3a02020 mov r2, #32
ffff0284: e1a0100d mov r1, sp
ffff0288: e1a00006 mov r0, r6
ffff028c: ebffffe5 bl f_0228
ffff0290: e3a00001 mov r0, #1
ffff0294: e5c50020 strb r0, [r5, #32]
ffff0298: e3a02000 mov r2, #0
ffff029c: e1a01006 mov r1, r6
ffff02a0: e1a00004 mov r0, r4
ffff02a4: eb0004d2 bl f_15f4
ffff02a8: e1a00006 mov r0, r6
ffff02ac: ebffffcc bl f_01e4
ffff02b0: e3a02022 mov r2, #34 ; 0x22
ffff02b4: e1a00005 mov r0, r5
ffff02b8: e5961000 ldr r1, [r6]
ffff02bc: ebffffa2 bl memcpy
ffff02c0: e28dd020 add sp, sp, #32
ffff02c4: e8bd8070 pop {r4, r5, r6, pc}
f_02c8:
ffff02c8: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff02cc: e1a05000 mov r5, r0
ffff02d0: e1a06001 mov r6, r1
ffff02d4: e1a07002 mov r7, r2
ffff02d8: e1a04003 mov r4, r3
ffff02dc: e3a08000 mov r8, #0
ffff02e0: e3550000 cmp r5, #0
ffff02e4: 1a000001 bne 0xffff02f0
ffff02e8: e5968034 ldr r8, [r6, #52] ; 0x34
ffff02ec: ea000000 b 0xffff02f4
ffff02f0: e5968030 ldr r8, [r6, #48] ; 0x30
ffff02f4: e1a00008 mov r0, r8
ffff02f8: ebffffb9 bl f_01e4
ffff02fc: e3a00002 mov r0, #2
ffff0300: e5c70020 strb r0, [r7, #32]
ffff0304: e1a00006 mov r0, r6
ffff0308: eb00018c bl f_0940
ffff030c: e1a00008 mov r0, r8
ffff0310: e8940006 ldm r4, {r1, r2}
ffff0314: ebffffc3 bl f_0228
ffff0318: e3a02000 mov r2, #0
ffff031c: e1a01008 mov r1, r8
ffff0320: e1a00006 mov r0, r6
ffff0324: eb0004b2 bl f_15f4
ffff0328: e1a00008 mov r0, r8
ffff032c: ebffffac bl f_01e4
ffff0330: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
f_0334:
ffff0334: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff0338: e1a04000 mov r4, r0
ffff033c: e1a05001 mov r5, r1
ffff0340: e1a06002 mov r6, r2
ffff0344: e5d57010 ldrb r7, [r5, #16]
ffff0348: e3570011 cmp r7, #17
ffff034c: 0a000002 beq 0xffff035c
ffff0350: e3570012 cmp r7, #18
ffff0354: 1a00000e bne 0xffff0394
ffff0358: ea000006 b 0xffff0378
ffff035c: e320f000 nop {0}
ffff0360: e1a03006 mov r3, r6
ffff0364: e1a02005 mov r2, r5
ffff0368: e1a01004 mov r1, r4
ffff036c: e3a00001 mov r0, #1
ffff0370: ebffffd4 bl f_02c8
ffff0374: ea000008 b 0xffff039c
ffff0378: e320f000 nop {0}
ffff037c: e1a03006 mov r3, r6
ffff0380: e1a02005 mov r2, r5
ffff0384: e1a01004 mov r1, r4
ffff0388: e3a00000 mov r0, #0
ffff038c: ebffffcd bl f_02c8
ffff0390: ea000001 b 0xffff039c
ffff0394: e320f000 nop {0}
ffff0398: e320f000 nop {0}
ffff039c: e320f000 nop {0}
ffff03a0: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
f_03a4:
ffff03a4: e92d41ff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}
ffff03a8: e1a04000 mov r4, r0
ffff03ac: e1a05001 mov r5, r1
ffff03b0: e1a07002 mov r7, r2
ffff03b4: e3a06000 mov r6, #0
ffff03b8: e5946030 ldr r6, [r4, #48] ; 0x30
ffff03bc: e3a00003 mov r0, #3
ffff03c0: e5c50020 strb r0, [r5, #32]
ffff03c4: e59f02fc ldr r0, =AWUS
ffff03c8: e58d0000 str r0, [sp]
ffff03cc: e5950004 ldr r0, [r5, #4]
ffff03d0: e58d0004 str r0, [sp, #4]
ffff03d4: e3a00000 mov r0, #0
ffff03d8: e58d0008 str r0, [sp, #8]
ffff03dc: e5cd000c strb r0, [sp, #12]
ffff03e0: e1a00004 mov r0, r4
ffff03e4: eb000155 bl f_0940
ffff03e8: e3a0200d mov r2, #13
ffff03ec: e1a0100d mov r1, sp
ffff03f0: e1a00006 mov r0, r6
ffff03f4: ebffff8b bl f_0228
ffff03f8: e3a02000 mov r2, #0
ffff03fc: e1a01006 mov r1, r6
ffff0400: e1a00004 mov r0, r4
ffff0404: eb00047a bl f_15f4
ffff0408: e1a00006 mov r0, r6
ffff040c: ebffff74 bl f_01e4
ffff0410: e8bd81ff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, pc}
f_0414:
ffff0414: e92d4030 push {r4, r5, lr}
ffff0418: e24dd024 sub sp, sp, #36 ; 0x24
ffff041c: e1a05000 mov r5, r0
ffff0420: e1a04001 mov r4, r1
ffff0424: e1a0000d mov r0, sp
ffff0428: ebffff74 bl f_0200
ffff042c: e1a0100d mov r1, sp
ffff0430: e1a00005 mov r0, r5
ffff0434: ebffff83 bl f_0248
ffff0438: e1a02004 mov r2, r4
ffff043c: e1a0100d mov r1, sp
ffff0440: e1a00005 mov r0, r5
ffff0444: ebffffba bl f_0334
ffff0448: e1a02004 mov r2, r4
ffff044c: e1a0100d mov r1, sp
ffff0450: e1a00005 mov r0, r5
ffff0454: ebffffd2 bl f_03a4
ffff0458: e3a00000 mov r0, #0
ffff045c: e5c40008 strb r0, [r4, #8]
ffff0460: e28dd024 add sp, sp, #36 ; 0x24
ffff0464: e8bd8030 pop {r4, r5, pc}
f_0468:
ffff0468: e92d4070 push {r4, r5, r6, lr}
ffff046c: e1a04000 mov r4, r0
ffff0470: e1a05001 mov r5, r1
ffff0474: e1a01005 mov r1, r5
ffff0478: e1a00004 mov r0, r4
ffff047c: ebffffe4 bl f_0414
ffff0480: e8bd8070 pop {r4, r5, r6, pc}
/*
prepare_response(void *data, u32 len)
{
memset(0x7d04, 0, 12);
u32 0x7d04 = data;
u32 0x7d08 = len;
u8 0x7d0a = 2;
return 0x7d04;
}
*/
prepare_response:
ffff0484: e92d4070 push {r4, r5, r6, lr}
ffff0488: e1a04000 mov r4, r0
ffff048c: e1a05001 mov r5, r1
ffff0490: e3a0200c mov r2, #12
ffff0494: e3a01000 mov r1, #0
ffff0498: e59f022c ldr r0, =0x00007d04
ffff049c: ebffff34 bl memset
ffff04a0: e59f0224 ldr r0, =0x00007d04
ffff04a4: e5804000 str r4, [r0] [=0x00007d04]
ffff04a8: e5805004 str r5, [r0, #4] [=0x00007d08]
ffff04ac: e3a00002 mov r0, #2
ffff04b0: e59f1214 ldr r1, =0x00007d04
ffff04b4: e5c10008 strb r0, [r1, #8] [=0x00007d0c]
ffff04b8: e2810000 add r0, r1, #0
ffff04bc: e8bd8070 pop {r4, r5, r6, pc}
handle_VERSION:
ffff04c0: e92d4030 push {r4, r5, lr}
ffff04c4: e24dd024 sub sp, sp, #36 ; 0x24
ffff04c8: e1a04000 mov r4, r0
ffff04cc: e3a05000 mov r5, #0
ffff04d0: e3a02020 mov r2, #32
ffff04d4: e3a01000 mov r1, #0
ffff04d8: e28d0004 add r0, sp, #4
ffff04dc: ebffff24 bl memset
ffff04e0: e3a02008 mov r2, #8
ffff04e4: e28f1f79 ldr r1, =AWUSBFEX
ffff04e8: e28d0004 add r0, sp, #4
ffff04ec: ebffff16 bl memcpy
ffff04f0: e59f01e4 ldr r0, =0x00162300
ffff04f4: e58d000c str r0, [sp, #12]
ffff04f8: e3a00001 mov r0, #1
ffff04fc: e58d0010 str r0, [sp, #16]
ffff0500: e1cd01b4 strh r0, [sp, #20]
ffff0504: e3a00044 mov r0, #68 ; 0x44
ffff0508: e5cd0016 strb r0, [sp, #22]
ffff050c: e3a00008 mov r0, #8
ffff0510: e5cd0017 strb r0, [sp, #23]
ffff0514: e3a00c7e ldr r0, =0x7e00
ffff0518: e58d0018 str r0, [sp, #24]
ffff051c: e3a01020 mov r1, #32
ffff0520: e28d0004 add r0, sp, #4
ffff0524: ebffffd6 bl prepare_response
ffff0528: e1a05000 mov r5, r0
ffff052c: e1a01005 mov r1, r5
ffff0530: e1a00004 mov r0, r4
ffff0534: ebffffb6 bl f_0414
ffff0538: e28dd024 add sp, sp, #36 ; 0x24
ffff053c: e8bd8030 pop {r4, r5, pc}
f_0540:
ffff0540: e92d407f push {r0, r1, r2, r3, r4, r5, r6, lr}
ffff0544: e1a04000 mov r4, r0
ffff0548: e3a05000 mov r5, #0
ffff054c: e3a02010 mov r2, #16
ffff0550: e3a01000 mov r1, #0
ffff0554: e1a0000d mov r0, sp
ffff0558: ebffff05 bl memset
ffff055c: e3a00001 mov r0, #1
ffff0560: e1cd00b0 strh r0, [sp]
ffff0564: e3a00000 mov r0, #0
ffff0568: e1cd00b2 strh r0, [sp, #2]
ffff056c: e3a01010 mov r1, #16
ffff0570: e1a0000d mov r0, sp
ffff0574: ebffffc2 bl prepare_response
ffff0578: e1a05000 mov r5, r0
ffff057c: e1a01005 mov r1, r5
ffff0580: e1a00004 mov r0, r4
ffff0584: ebffffa2 bl f_0414
ffff0588: e8bd807f pop {r0, r1, r2, r3, r4, r5, r6, pc}
f_058c:
ffff058c: e92d407f push {r0, r1, r2, r3, r4, r5, r6, lr}
ffff0590: e1a04000 mov r4, r0
ffff0594: e3a05000 mov r5, #0
ffff0598: e3a02010 mov r2, #16
ffff059c: e3a01000 mov r1, #0
ffff05a0: e1a0000d mov r0, sp
ffff05a4: ebfffef2 bl memset
ffff05a8: e3a00f7d mov r0, #500 ; 0x1f4
ffff05ac: e1cd00b2 strh r0, [sp, #2]
ffff05b0: e3a00002 mov r0, #2
ffff05b4: e1cd00b0 strh r0, [sp]
ffff05b8: e3a01010 mov r1, #16
ffff05bc: e1a0000d mov r0, sp
ffff05c0: ebffffaf bl prepare_response
ffff05c4: e1a05000 mov r5, r0
ffff05c8: e1a01005 mov r1, r5
ffff05cc: e1a00004 mov r0, r4
ffff05d0: ebffff8f bl f_0414
ffff05d4: e8bd807f pop {r0, r1, r2, r3, r4, r5, r6, pc}
f_05d8:
ffff05d8: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff05dc: e1a06000 mov r6, r0
ffff05e0: e1a04001 mov r4, r1
ffff05e4: e3a05000 mov r5, #0
ffff05e8: e3a07000 mov r7, #0
ffff05ec: e3540000 cmp r4, #0
ffff05f0: 1a000001 bne 0xffff05fc
ffff05f4: e3a00001 mov r0, #1
ffff05f8: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
ffff05fc: e1a05004 mov r5, r4
ffff0600: e1a04005 mov r4, r5
ffff0604: e5950008 ldr r0, [r5, #8]
ffff0608: e3500000 cmp r0, #0
ffff060c: 1a000001 bne 0xffff0618
ffff0610: e3a00001 mov r0, #1
ffff0614: eafffff7 b 0xffff05f8
ffff0618: e5951008 ldr r1, [r5, #8]
ffff061c: e5950004 ldr r0, [r5, #4]
ffff0620: ebffff97 bl prepare_response
ffff0624: e1a07000 mov r7, r0
ffff0628: e1a01007 mov r1, r7
ffff062c: e1a00006 mov r0, r6
ffff0630: ebffff77 bl f_0414
ffff0634: e3a00000 mov r0, #0
ffff0638: eaffffee b 0xffff05f8
f_063c:
ffff063c: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff0640: e1a06000 mov r6, r0
ffff0644: e1a04001 mov r4, r1
ffff0648: e3a05000 mov r5, #0
ffff064c: e3a07000 mov r7, #0
ffff0650: e3540000 cmp r4, #0
ffff0654: 1a000001 bne 0xffff0660
ffff0658: e3a00001 mov r0, #1
ffff065c: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
ffff0660: e1a05004 mov r5, r4
ffff0664: e1a04005 mov r4, r5
ffff0668: e5950008 ldr r0, [r5, #8]
ffff066c: e3500000 cmp r0, #0
ffff0670: 1a000001 bne 0xffff067c
ffff0674: e3a00001 mov r0, #1
ffff0678: eafffff7 b 0xffff065c
ffff067c: e5951008 ldr r1, [r5, #8]
ffff0680: e5950004 ldr r0, [r5, #4]
ffff0684: ebffff7e bl prepare_response
ffff0688: e1a07000 mov r7, r0
ffff068c: e1a01007 mov r1, r7
ffff0690: e1a00006 mov r0, r6
ffff0694: ebffff5e bl f_0414
ffff0698: e3a00000 mov r0, #0
ffff069c: eaffffee b 0xffff065c
f_06a0:
ffff06a0: e1a03000 mov r3, r0
ffff06a4: e3a02000 mov r2, #0
ffff06a8: e3510000 cmp r1, #0
ffff06ac: 1a000001 bne 0xffff06b8
ffff06b0: e3e00000 mvn r0, #0
ffff06b4: e12fff1e bx lr
ffff06b8: e1a02001 mov r2, r1
ffff06bc: e1a01002 mov r1, r2
ffff06c0: e5920004 ldr r0, [r2, #4]
ffff06c4: eafffffa b 0xffff06b4
AWUS:
ffff06c8: "AWUS"
AWUSBFEX:
ffff06d0: "AWUSBFEX",0
f_06e0:
ffff06e0: e92d41fc push {r2, r3, r4, r5, r6, r7, r8, lr}
ffff06e4: e1a04000 mov r4, r0
ffff06e8: e1a05001 mov r5, r1
ffff06ec: e1a06002 mov r6, r2
ffff06f0: e3a07000 mov r7, #0
ffff06f4: e3a02008 mov r2, #8
ffff06f8: e3a01000 mov r1, #0
ffff06fc: e1a0000d mov r0, sp
ffff0700: ebfffe9b bl memset
ffff0704: e30f0fff movw r0, #65535 ; 0xffff
ffff0708: e1cd00b0 strh r0, [sp]
ffff070c: e1cd50b2 strh r5, [sp, #2]
ffff0710: e5cd6004 strb r6, [sp, #4]
ffff0714: e3a01008 mov r1, #8
ffff0718: e1a0000d mov r0, sp
ffff071c: ebffff58 bl prepare_response
ffff0720: e1a07000 mov r7, r0
ffff0724: e1a01007 mov r1, r7
ffff0728: e1a00004 mov r0, r4
ffff072c: ebffff38 bl f_0414
ffff0730: e8bd81fc pop {r2, r3, r4, r5, r6, r7, r8, pc}
f_0734:
ffff0734: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff0738: e1a04000 mov r4, r0
ffff073c: e1a05001 mov r5, r1
ffff0740: e1a06002 mov r6, r2
ffff0744: e3a07000 mov r7, #0
ffff0748: e1a02006 mov r2, r6
ffff074c: e3a01000 mov r1, #0
ffff0750: e1a00005 mov r0, r5
ffff0754: ebfffe86 bl memset
ffff0758: e1a01006 mov r1, r6
ffff075c: e1a00005 mov r0, r5
ffff0760: ebffff47 bl prepare_response
ffff0764: e1a07000 mov r7, r0
ffff0768: e1a01007 mov r1, r7
ffff076c: e1a00004 mov r0, r4
ffff0770: ebffff3c bl f_0468
ffff0774: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
f_0778:
ffff0778: e92d47ff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr}
ffff077c: e1a04000 mov r4, r0
ffff0780: e3a05000 mov r5, #0
ffff0784: e3a06000 mov r6, #0
ffff0788: e3a09000 mov r9, #0
ffff078c: e3a0a001 mov sl, #1
ffff0790: e3a02010 mov r2, #16
ffff0794: e1a0100d mov r1, sp
ffff0798: e1a00004 mov r0, r4
ffff079c: ebffffe4 bl f_0734
ffff07a0: e1a0500d mov r5, sp
ffff07a4: e1d560b0 ldrh r6, [r5]
ffff07a8: e1d590b2 ldrh r9, [r5, #2]
ffff07ac: e3560010 cmp r6, #16
ffff07b0: 0a000022 beq 0xffff0840 0x0010
ffff07b4: ca000008 bgt 0xffff07dc >0x0010
ffff07b8: e3560001 cmp r6, #1
ffff07bc: 0a00000e beq 0xffff07fc 0x0001
ffff07c0: e3560002 cmp r6, #2
ffff07c4: 0a000011 beq 0xffff0810 0x0002
ffff07c8: e3560003 cmp r6, #3
ffff07cc: 0a000011 beq 0xffff0818 0x0003
ffff07d0: e3560004 cmp r6, #4
ffff07d4: 1a000038 bne 0xffff08bc 0x0004
ffff07d8: ea000013 b 0xffff082c 0x00?? < 0x0010
# >0x0010
ffff07dc: e3e00c01 mvn r0, #256 ; 0x100
ffff07e0: e0900006 adds r0, r0, r6
ffff07e4: 0a000017 beq 0xffff0848 0x0100
ffff07e8: e3500001 cmp r0, #1
ffff07ec: 0a000021 beq 0xffff0878 0x0101
ffff07f0: e3500002 cmp r0, #2
ffff07f4: 1a000030 bne 0xffff08bc 0x0102
ffff07f8: ea000018 b 0xffff0860 0x????
# 0x0001
ffff07fc: e320f000 nop {0}
ffff0800: e1a00004 mov r0, r4
ffff0804: ebffff2d bl handle_VERSION
ffff0808: e3a0a000 mov sl, #0
ffff080c: ea00002d b 0xffff08c8
# 0x0002:
ffff0810: e320f000 nop {0}
ffff0814: ea00002b b 0xffff08c8
# 0x0003:
ffff0818: e320f000 nop {0}
ffff081c: e1a00004 mov r0, r4
ffff0820: ebffff59 bl f_058c
ffff0824: e3a0a000 mov sl, #0
ffff0828: ea000026 b 0xffff08c8
# 0x00?? < 0x0010
ffff082c: e320f000 nop {0}
ffff0830: e1a00004 mov r0, r4
ffff0834: ebffff41 bl f_0540
ffff0838: e3a0a000 mov sl, #0
ffff083c: ea000021 b 0xffff08c8
# 0x0010
ffff0840: e320f000 nop {0}
ffff0844: ea00001f b 0xffff08c8
# 0x0100
ffff0848: e320f000 nop {0}
ffff084c: e1a0100d mov r1, sp
ffff0850: e1a00004 mov r0, r4
ffff0854: ebffff5f bl f_05d8
ffff0858: e1a0a000 mov sl, r0
ffff085c: ea000019 b 0xffff08c8
# 0x????
ffff0860: e320f000 nop {0}
ffff0864: e1a0100d mov r1, sp
ffff0868: e1a00004 mov r0, r4
ffff086c: ebffff72 bl f_063c
ffff0870: e1a0a000 mov sl, r0
ffff0874: ea000013 b 0xffff08c8
# 0x0101
ffff0878: e320f000 nop {0}
ffff087c: e3a07000 mov r7, #0
ffff0880: e1a0100d mov r1, sp
ffff0884: e1a00004 mov r0, r4
ffff0888: ebffff84 bl f_06a0
ffff088c: e1a07000 mov r7, r0
ffff0890: e3a0a000 mov sl, #0
ffff0894: e1a0200a mov r2, sl
ffff0898: e1a01009 mov r1, r9
ffff089c: e1a00004 mov r0, r4
ffff08a0: ebffff8e bl f_06e0
ffff08a4: e1a00004 mov r0, r4
ffff08a8: eb000667 bl f_224c
ffff08ac: e1a08007 mov r8, r7
ffff08b0: e1a07008 mov r7, r8
ffff08b4: e12fff38 blx r8
ffff08b8: e8bd87ff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, pc}
# 0x0102
ffff08bc: e320f000 nop {0}
ffff08c0: e3a0a001 mov sl, #1
ffff08c4: e320f000 nop {0}
ffff08c8: e320f000 nop {0}
ffff08cc: e1a0200a mov r2, sl
ffff08d0: e1a01009 mov r1, r9
ffff08d4: e1a00004 mov r0, r4
ffff08d8: ebffff80 bl f_06e0
ffff08dc: eafffff5 b 0xffff08b8
fel_main_loop:
ffff08e0: e92d4070 push {r4, r5, r6, lr}
ffff08e4: e1a05000 mov r5, r0
ffff08e8: e3a04000 mov r4, #0
ffff08ec: ea000003 b .first
ffff08f0:.loop ebfffe39 bl f_NOP1
ffff08f4: e1a00005 mov r0, r5
ffff08f8: ebffff9e bl f_0778
ffff08fc: e2844001 add r4, r4, #1
ffff0900:.first eafffffa b .loop
f0904:
ffff0904: e3a01000 mov r1, #0
ffff0908: e5c01018 strb r1, [r0, #24]
ffff090c: e12fff1e bx lr
f0910:
ffff0910: e3a01000 mov r1, #0
ffff0914: e5c01018 strb r1, [r0, #24]
ffff0918: e12fff1e bx lr
f091c:
ffff091c: e3a01000 mov r1, #0
ffff0920: e5c01018 strb r1, [r0, #24]
ffff0924: e12fff1e bx lr
f_0928:
ffff0928: e3a00000 mov r0, #0
ffff092c: e59f1e20 ldr r1, =0x1c20000
ffff0930: e5910444 ldr r0, [r1, #1092] ; 0x444 = 0x1c20444 = INTC 0x44
ffff0934: e3800040 orr r0, r0, #64 ; 0x40
ffff0938: e5810444 str r0, [r1, #1092] ; 0x444 = 0x1c20444 = INTC 0x44
ffff093c: e12fff1e bx lr
f_0940:
ffff0940: e1a01000 mov r1, r0
ffff0944: e10f0000 mrs r0, CPSR
ffff0948: e3800080 orr r0, r0, #128 ; 0x80
ffff094c: e121f000 msr CPSR_c, r0
ffff0950: e12fff1e bx lr
f_0954:
ffff0954: e1a01000 mov r1, r0
ffff0958: e10f0000 mrs r0, CPSR
ffff095c: e3c00080 bic r0, r0, #128 ; 0x80
ffff0960: e121f000 msr CPSR_c, r0
ffff0964: e12fff1e bx lr
/*
void set_epind(id) {
usb0->epind = id;
}
*/
set_epind:
ffff0968: e59f1de8 ldr r1, =USB0_BASE
ffff096c: e5c10042 strb r0, [r1, #66] ; 0x42 = USB0_EPIND
ffff0970: e12fff1e bx lr
/*
int get_epind(id) {
return usb0->epind;
}
*/
get_epind:
ffff0974: e59f0ddc ldr r0, =USB0_BASE
ffff0978: e5d00042 ldrb r0, [r0, #66] ; 0x42
ffff097c: e12fff1e bx lr
/*
[r0] = struct something {
u8 x00 = 18;
u8 x01 = 1;
u16 x02 = 0x110;
u8 x04 = 0;
u8 x05 = 0;
u8 x06 = 0;
u8 x07 = 0x40;
u16 x08 = 0x1f3a;
u16 x0a = 0xefe8;
u16 x0c = 0x02b3;
u8 x0e = 0;
u8 x0f = 0;
u8 x10 = 0;
u8 x11 = 1;
}
*/
f_0980:
ffff0980: e3a01012 mov r1, #18
ffff0984: e5c01000 strb r1, [r0]
ffff0988: e3a01001 mov r1, #1
ffff098c: e5c01001 strb r1, [r0, #1]
ffff0990: e3a01e11 mov r1, #272 ; 0x110
ffff0994: e1c010b2 strh r1, [r0, #2]
ffff0998: e3a01000 mov r1, #0
ffff099c: e5c01004 strb r1, [r0, #4]
ffff09a0: e5c01005 strb r1, [r0, #5]
ffff09a4: e5c01006 strb r1, [r0, #6]
ffff09a8: e3a01040 mov r1, #64 ; 0x40
ffff09ac: e5c01007 strb r1, [r0, #7]
ffff09b0: e3011f3a movw r1, #7994 ; 0x1f3a
ffff09b4: e1c010b8 strh r1, [r0, #8]
ffff09b8: e30e1fe8 movw r1, #61416 ; 0xefe8
ffff09bc: e1c010ba strh r1, [r0, #10]
ffff09c0: e30012b3 movw r1, #691 ; 0x2b3
ffff09c4: e1c010bc strh r1, [r0, #12]
ffff09c8: e3a01000 mov r1, #0
ffff09cc: e5c0100e strb r1, [r0, #14]
ffff09d0: e5c0100f strb r1, [r0, #15]
ffff09d4: e5c01010 strb r1, [r0, #16]
ffff09d8: e3a01001 mov r1, #1
ffff09dc: e5c01011 strb r1, [r0, #17]
ffff09e0: e12fff1e bx lr
f_09e4:
ffff09e4: e3a0100a mov r1, #10
ffff09e8: e5c01000 strb r1, [r0]
ffff09ec: e3a01002 mov r1, #2
ffff09f0: e5c01001 strb r1, [r0, #1]
ffff09f4: e3a01020 mov r1, #32
ffff09f8: e1c010b2 strh r1, [r0, #2]
ffff09fc: e3a01001 mov r1, #1
ffff0a00: e5c01004 strb r1, [r0, #4]
ffff0a04: e5c01005 strb r1, [r0, #5]
ffff0a08: e3a01000 mov r1, #0
ffff0a0c: e5c01006 strb r1, [r0, #6]
ffff0a10: e3a01080 mov r1, #128 ; 0x80
ffff0a14: e5c01007 strb r1, [r0, #7]
ffff0a18: e3a01096 mov r1, #150 ; 0x96
ffff0a1c: e5c01008 strb r1, [r0, #8]
ffff0a20: e12fff1e bx lr
f_0a24:
ffff0a24: e3a01009 mov r1, #9
ffff0a28: e5c01000 strb r1, [r0]
ffff0a2c: e3a01004 mov r1, #4
ffff0a30: e5c01001 strb r1, [r0, #1]
ffff0a34: e3a01000 mov r1, #0
ffff0a38: e5c01002 strb r1, [r0, #2]
ffff0a3c: e5c01003 strb r1, [r0, #3]
ffff0a40: e3a01002 mov r1, #2
ffff0a44: e5c01004 strb r1, [r0, #4]
ffff0a48: e3a010ff mov r1, #255 ; 0xff
ffff0a4c: e5c01005 strb r1, [r0, #5]
ffff0a50: e5c01006 strb r1, [r0, #6]
ffff0a54: e5c01007 strb r1, [r0, #7]
ffff0a58: e3a01000 mov r1, #0
ffff0a5c: e5c01008 strb r1, [r0, #8]
ffff0a60: e12fff1e bx lr
f_0a64:
ffff0a64: e3a01007 mov r1, #7
ffff0a68: e5c01000 strb r1, [r0]
ffff0a6c: e3a01005 mov r1, #5
ffff0a70: e5c01001 strb r1, [r0, #1]
ffff0a74: e3a01040 mov r1, #64 ; 0x40
ffff0a78: e1c010b4 strh r1, [r0, #4]
ffff0a7c: e3a01001 mov r1, #1
ffff0a80: e5c01002 strb r1, [r0, #2]
ffff0a84: e3a01002 mov r1, #2
ffff0a88: e5c01003 strb r1, [r0, #3]
ffff0a8c: e3a01000 mov r1, #0
ffff0a90: e5c01006 strb r1, [r0, #6]
ffff0a94: e12fff1e bx lr
f_0a98:
ffff0a98: e3a01007 mov r1, #7
ffff0a9c: e5c01000 strb r1, [r0]
ffff0aa0: e3a01005 mov r1, #5
ffff0aa4: e5c01001 strb r1, [r0, #1]
ffff0aa8: e3a01040 mov r1, #64 ; 0x40
ffff0aac: e1c010b4 strh r1, [r0, #4]
ffff0ab0: e3a01082 mov r1, #130 ; 0x82
ffff0ab4: e5c01002 strb r1, [r0, #2]
ffff0ab8: e3a01002 mov r1, #2
ffff0abc: e5c01003 strb r1, [r0, #3]
ffff0ac0: e3a01000 mov r1, #0
ffff0ac4: e5c01006 strb r1, [r0, #6]
ffff0ac8: e12fff1e bx lr
f_0acc:
ffff0acc: e5802000 str r2, [r0]
ffff0ad0: e5801004 str r1, [r0, #4]
ffff0ad4: e12fff1e bx lr
f_NOP4:
ffff0ad8: e12fff1e bx lr
f_NOP5:
ffff0adc: e12fff1e bx lr
f_NOP6:
ffff0ae0: e12fff1e bx lr
f_0a4e:
ffff0ae4: e92d4010 push {r4, lr}
ffff0ae8: e3a03000 mov r3, #0
ffff0aec: e5c03005 strb r3, [r0, #5]
ffff0af0: e5c03006 strb r3, [r0, #6]
ffff0af4: e5803000 str r3, [r0]
ffff0af8: e5c03004 strb r3, [r0, #4]
ffff0afc: e3a03040 mov r3, #64 ; 0x40
ffff0b00: e5803008 str r3, [r0, #8]
ffff0b04: e3a03000 mov r3, #0
ffff0b08: e580300c str r3, [r0, #12]
ffff0b0c: e5d13002 ldrb r3, [r1, #2]
ffff0b10: e5c03015 strb r3, [r0, #21]
ffff0b14: e5d13003 ldrb r3, [r1, #3]
ffff0b18: e5c03016 strb r3, [r0, #22]
ffff0b1c: e5801010 str r1, [r0, #16]
ffff0b20: e3a03001 mov r3, #1
ffff0b24: e5c03014 strb r3, [r0, #20]
ffff0b28: e1d130b4 ldrh r3, [r1, #4]
ffff0b2c: e5803018 str r3, [r0, #24]
ffff0b30: e3a03000 mov r3, #0
ffff0b34: e580301c str r3, [r0, #28]
ffff0b38: e5d23002 ldrb r3, [r2, #2]
ffff0b3c: e5c03025 strb r3, [r0, #37] ; 0x25
ffff0b40: e5d23003 ldrb r3, [r2, #3]
ffff0b44: e5c03026 strb r3, [r0, #38] ; 0x26
ffff0b48: e5802020 str r2, [r0, #32]
ffff0b4c: e3a03002 mov r3, #2
ffff0b50: e5c03024 strb r3, [r0, #36] ; 0x24
ffff0b54: e1d230b4 ldrh r3, [r2, #4]
ffff0b58: e5803028 str r3, [r0, #40] ; 0x28
ffff0b5c: e3a03000 mov r3, #0
ffff0b60: e580302c str r3, [r0, #44] ; 0x2c
ffff0b64: e5803030 str r3, [r0, #48] ; 0x30
ffff0b68: e5c03034 strb r3, [r0, #52] ; 0x34
ffff0b6c: e5803038 str r3, [r0, #56] ; 0x38
ffff0b70: e5c0303c strb r3, [r0, #60] ; 0x3c
ffff0b74: e5c0303d strb r3, [r0, #61] ; 0x3d
ffff0b78: e8bd8010 pop {r4, pc}
f_0b7c:
ffff0b7c: e92d4010 push {r4, lr}
ffff0b80: e5801000 str r1, [r0]
ffff0b84: e3a04000 mov r4, #0
ffff0b88: e5c04004 strb r4, [r0, #4]
ffff0b8c: e5804008 str r4, [r0, #8]
ffff0b90: e5802014 str r2, [r0, #20]
ffff0b94: e5804018 str r4, [r0, #24]
ffff0b98: e580300c str r3, [r0, #12]
ffff0b9c: e5804010 str r4, [r0, #16]
ffff0ba0: e8bd8010 pop {r4, pc}
f_0ba4:
ffff0ba4: e5801000 str r1, [r0]
ffff0ba8: e3a02000 mov r2, #0
ffff0bac: e5802004 str r2, [r0, #4]
ffff0bb0: e59f2ba4 ldr r2, =f0904
ffff0bb4: e580200c str r2, [r0, #12]
ffff0bb8: e3a02000 mov r2, #0
ffff0bbc: e5802010 str r2, [r0, #16]
ffff0bc0: e5c02008 strb r2, [r0, #8]
ffff0bc4: e5c02018 strb r2, [r0, #24]
ffff0bc8: e5802014 str r2, [r0, #20]
ffff0bcc: e12fff1e bx lr
f_0bd0:
ffff0bd0: e5801000 str r1, [r0]
ffff0bd4: e3a02000 mov r2, #0
ffff0bd8: e5802004 str r2, [r0, #4]
ffff0bdc: e59f2b7c ldr r2, =f091c
ffff0be0: e580200c str r2, [r0, #12]
ffff0be4: e3a02000 mov r2, #0
ffff0be8: e5802010 str r2, [r0, #16]
ffff0bec: e5c02008 strb r2, [r0, #8]
ffff0bf0: e5c02018 strb r2, [r0, #24]
ffff0bf4: e3a02001 mov r2, #1
ffff0bf8: e5802014 str r2, [r0, #20]
ffff0bfc: e12fff1e bx lr
f_0c00:
ffff0c00: e5801000 str r1, [r0]
ffff0c04: e3a02000 mov r2, #0
ffff0c08: e5802004 str r2, [r0, #4]
ffff0c0c: e59f2b50 ldr r2, =f0910
ffff0c10: e580200c str r2, [r0, #12]
ffff0c14: e3a02000 mov r2, #0
ffff0c18: e5802010 str r2, [r0, #16]
ffff0c1c: e5c02008 strb r2, [r0, #8]
ffff0c20: e5c02018 strb r2, [r0, #24]
ffff0c24: e3a02002 mov r2, #2
ffff0c28: e5802014 str r2, [r0, #20]
ffff0c2c: e12fff1e bx lr
f_0c30:
ffff0c30: e92d4010 push {r4, lr}
ffff0c34: e580100c str r1, [r0, #12]
ffff0c38: e580201c str r2, [r0, #28]
ffff0c3c: e580302c str r3, [r0, #44] ; 0x2c
ffff0c40: e8bd8010 pop {r4, pc}
f_0c44:
ffff0c44: e3a00000 mov r0, #0
ffff0c48: e59f1b08 ldr r1, =USB0_BASE
ffff0c4c: e5d10040 ldrb r0, [r1, #64] ; 0x40
ffff0c50: e3c00020 bic r0, r0, #32
ffff0c54: e5c10040 strb r0, [r1, #64] ; 0x40
ffff0c58: e5d10040 ldrb r0, [r1, #64] ; 0x40
ffff0c5c: e12fff1e bx lr
f_0c60:
ffff0c60: e3a02000 mov r2, #0
ffff0c64: e3a01000 mov r1, #0
ffff0c68: e59f0ae4 ldr r0, =0x1c20000
ffff0c6c: e5902050 ldr r2, [r0, #80] ; 0x50
ffff0c70: e3822902 orr r2, r2, #32768 ; 0x8000
ffff0c74: e5802050 str r2, [r0, #80] ; 0x50
ffff0c78: e5902000 ldr r2, [r0]
ffff0c7c: e59f0ae4 ldr r0, =0x7ffce0cc
ffff0c80: e0022000 and r2, r2, r0
ffff0c84: e3822102 orr r2, r2, #-2147483648 ; 0x80000000
ffff0c88: e3822b05 orr r2, r2, #5120 ; 0x1400
ffff0c8c: e59f0ac0 ldr r0, =0x1c20000
ffff0c90: e5802000 str r2, [r0]
ffff0c94: e30c1350 movw r1, #50000 ; 0xc350
ffff0c98: e320f000 nop {0}
ffff0c9c: e1b00001 movs r0, r1
ffff0ca0: e2411001 sub r1, r1, #1
ffff0ca4: 1afffffc bne 0xffff0c9c
ffff0ca8: e59f0aa4 ldr r0, =0x1c20000
ffff0cac: e5902054 ldr r2, [r0, #84] ; 0x54
ffff0cb0: e3000333 movw r0, #819 ; 0x333
ffff0cb4: e1c22000 bic r2, r2, r0
ffff0cb8: e3000113 movw r0, #275 ; 0x113
ffff0cbc: e1822000 orr r2, r2, r0
ffff0cc0: e59f0a8c ldr r0, =0x1c20000
ffff0cc4: e5802054 str r2, [r0, #84] ; 0x54
ffff0cc8: e5902054 ldr r2, [r0, #84] ; 0x54
ffff0ccc: e3c22803 bic r2, r2, #196608 ; 0x30000
ffff0cd0: e3822802 orr r2, r2, #131072 ; 0x20000
ffff0cd4: e5802054 str r2, [r0, #84] ; 0x54
ffff0cd8: e12fff1e bx lr
f_0cdc:
ffff0cdc: e3a00000 mov r0, #0
ffff0ce0: e59f1a70 ldr r1, =USB0_BASE
ffff0ce4: e5910400 ldr r0, [r1, #1024] ; 0x400
ffff0ce8: e3800903 orr r0, r0, #49152 ; 0xc000
ffff0cec: e5810400 str r0, [r1, #1024] ; 0x400
ffff0cf0: e12fff1e bx lr
f_0cf4:
ffff0cf4: e3a01000 mov r1, #0
ffff0cf8: e3a00000 mov r0, #0
ffff0cfc: e59f2a54 ldr r2, =USB0_BASE
ffff0d00: e5921400 ldr r1, [r2, #1024] ; 0x400
ffff0d04: e3811801 orr r1, r1, #65536 ; 0x10000
ffff0d08: e5821400 str r1, [r2, #1024] ; 0x400
ffff0d0c: e3a00e7d mov r0, #2000 ; 0x7d0
ffff0d10: e320f000 nop {0}
ffff0d14: e1b02000 movs r2, r0
ffff0d18: e2400001 sub r0, r0, #1
ffff0d1c: 1afffffc bne 0xffff0d14
ffff0d20: e3811b03 orr r1, r1, #3072 ; 0xc00
ffff0d24: e59f2a2c ldr r2, =USB0_BASE
ffff0d28: e5821400 str r1, [r2, #1024] ; 0x400
ffff0d2c: e12fff1e bx lr
f_0d30:
ffff0d30: e3a01000 mov r1, #0
ffff0d34: e59f0a1c ldr r0, =USB0_BASE
ffff0d38: e5d02400 ldrb r2, [r0, #1024] ; 0x400
ffff0d3c: e3120303 tst r2, #201326592 ; 0xc000000
ffff0d40: 1a00000a bne 0xffff0d70
ffff0d44: e59f0a0c ldr r0, =USB0_BASE
ffff0d48: e5d00041 ldrb r0, [r0, #65] ; 0x41
ffff0d4c: e2000018 and r0, r0, #24
ffff0d50: e3500018 cmp r0, #24
ffff0d54: 0a000003 beq 0xffff0d68
ffff0d58: e59f09f8 ldr r0, =USB0_BASE
ffff0d5c: e5901400 ldr r1, [r0, #1024] ; 0x400
ffff0d60: e3811a03 orr r1, r1, #12288 ; 0x3000
ffff0d64: e5801400 str r1, [r0, #1024] ; 0x400
ffff0d68: e3a00001 mov r0, #1
ffff0d6c: e12fff1e bx lr
ffff0d70: e3a00000 mov r0, #0
ffff0d74: eafffffc b 0xffff0d6c
f_0d78:
ffff0d78: e3a00000 mov r0, #0
ffff0d7c: e59f19d4 ldr r1, =USB0_BASE
ffff0d80: e5910400 ldr r0, [r1, #1024] ; 0x400
ffff0d84: e3c00801 bic r0, r0, #65536 ; 0x10000
ffff0d88: e5810400 str r0, [r1, #1024] ; 0x400
ffff0d8c: e12fff1e bx lr
f_0d90:
ffff0d90: e59f09c0 ldr r0, =USB0_BASE
ffff0d94: e5d02041 ldrb r2, [r0, #65] ; 0x41
ffff0d98: e2020080 and r0, r2, #128 ; 0x80
ffff0d9c: e3500080 cmp r0, #128 ; 0x80
ffff0da0: 1a000006 bne 0xffff0dc0
ffff0da4: e59f09ac ldr r0, =USB0_BASE
ffff0da8: e5d01041 ldrb r1, [r0, #65] ; 0x41
ffff0dac: e3110001 tst r1, #1
ffff0db0: 0a000001 beq 0xffff0dbc
ffff0db4: e3a00001 mov r0, #1
ffff0db8: e12fff1e bx lr
ffff0dbc: e320f000 nop {0}
ffff0dc0: e3a00000 mov r0, #0
ffff0dc4: eafffffb b 0xffff0db8
f_0dc8:
ffff0dc8: e92d4010 push {r4, lr}
ffff0dcc: e3a00000 mov r0, #0
ffff0dd0: e59f197c ldr r1, =0x1c20000
ffff0dd4: e5810440 str r0, [r1, #1088] ; 0x1c20440
ffff0dd8: e5810444 str r0, [r1, #1092] ; 0x1c20444
ffff0ddc: e5810448 str r0, [r1, #1096] ; 0x1c20448
ffff0de0: ebffffbd bl f_0cdc
ffff0de4: ebffffc2 bl f_0cf4
ffff0de8: ea000009 b 0xffff0e14
ffff0dec: ebffffe7 bl f_0d90
ffff0df0: e1a03000 mov r3, r0
ffff0df4: ebffffcd bl f_0d30
ffff0df8: e1a04000 mov r4, r0
ffff0dfc: e3530000 cmp r3, #0
ffff0e00: 1a000001 bne 0xffff0e0c
ffff0e04: e3540000 cmp r4, #0
ffff0e08: 0a000000 beq 0xffff0e10
ffff0e0c: ea000001 b 0xffff0e18
ffff0e10: e320f000 nop {0}
ffff0e14: eafffff4 b 0xffff0dec
ffff0e18: e320f000 nop {0}
ffff0e1c: ebffffd5 bl f_0d78
ffff0e20: ebffff8e bl f_0c60
ffff0e24: e8bd8010 pop {r4, pc}
f_0e28:
ffff0e28: e92d4070 push {r4, r5, r6, lr}
ffff0e2c: e1a04000 mov r4, r0
ffff0e30: e3a05000 mov r5, #0
ffff0e34: e5d40004 ldrb r0, [r4, #4]
ffff0e38: ebfffeca bl set_epind
ffff0e3c: e5d40005 ldrb r0, [r4, #5]
ffff0e40: e3100080 tst r0, #128 ; 0x80
ffff0e44: 0a00000d beq 0xffff0e80
ffff0e48: e3a00048 mov r0, #72 ; 0x48
ffff0e4c: e59f1904 ldr r1, =USB0_BASE
ffff0e50: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff0e54: e5940008 ldr r0, [r4, #8]
ffff0e58: e7df059f bfc r0, #11, #21
ffff0e5c: e5810080 str r0, [r1, #128] ; 0x80
ffff0e60: e1a00001 mov r0, r1
ffff0e64: e5d05048 ldrb r5, [r0, #72] ; 0x48
ffff0e68: e5d40004 ldrb r0, [r4, #4]
ffff0e6c: e3a01001 mov r1, #1
ffff0e70: e1850011 orr r0, r5, r1, lsl r0
ffff0e74: e59f18dc ldr r1, =USB0_BASE
ffff0e78: e5c10048 strb r0, [r1, #72] ; 0x48
ffff0e7c: ea00000c b 0xffff0eb4
ffff0e80: e3a00090 mov r0, #144 ; 0x90
ffff0e84: e59f18cc ldr r1, =USB0_BASE
ffff0e88: e1c108b6 strh r0, [r1, #134] ; 0x86
ffff0e8c: e5940008 ldr r0, [r4, #8]
ffff0e90: e7df059f bfc r0, #11, #21
ffff0e94: e1c108b4 strh r0, [r1, #132] ; 0x84
ffff0e98: e1a00001 mov r0, r1
ffff0e9c: e5d0504a ldrb r5, [r0, #74] ; 0x4a
ffff0ea0: e5d40004 ldrb r0, [r4, #4]
ffff0ea4: e3a01001 mov r1, #1
ffff0ea8: e1850011 orr r0, r5, r1, lsl r0
ffff0eac: e59f18a4 ldr r1, =USB0_BASE
ffff0eb0: e5c1004a strb r0, [r1, #74] ; 0x4a
ffff0eb4: e8bd8070 pop {r4, r5, r6, pc}
f_0eb8:
ffff0eb8: e92d4010 push {r4, lr}
ffff0ebc: e1a04000 mov r4, r0
ffff0ec0: e5941024 ldr r1, [r4, #36] ; 0x24
ffff0ec4: e2810020 add r0, r1, #32
ffff0ec8: ebffffd6 bl f_0e28
ffff0ecc: e5941024 ldr r1, [r4, #36] ; 0x24
ffff0ed0: e2810010 add r0, r1, #16
ffff0ed4: ebffffd3 bl f_0e28
ffff0ed8: e8bd8010 pop {r4, pc}
f_0edc:
ffff0edc: e92d4070 push {r4, r5, r6, lr}
ffff0ee0: e1a04000 mov r4, r0
ffff0ee4: e3a05000 mov r5, #0
ffff0ee8: e3a00000 mov r0, #0
ffff0eec: e59f1860 ldr r1, =0x1c20000
ffff0ef0: e5810440 str r0, [r1, #1088] ; 0x440
ffff0ef4: e5810444 str r0, [r1, #1092] ; 0x444
ffff0ef8: e5810448 str r0, [r1, #1096] ; 0x448
ffff0efc: ebffff50 bl f_0c44
ffff0f00: e3a00507 mov r0, #29360128 ; 0x1c00000
ffff0f04: e5905004 ldr r5, [r0, #4]
ffff0f08: e3855001 orr r5, r5, #1
ffff0f0c: e5805004 str r5, [r0, #4]
ffff0f10: e3a00001 mov r0, #1
ffff0f14: e59f183c ldr r1, =USB0_BASE
ffff0f18: e5c10042 strb r0, [r1, #66] ; 0x42 ; USB0_EPIND = 1
ffff0f1c: e3a00007 mov r0, #7
ffff0f20: e5c10094 strb r0, [r1, #148] ; 0x94 ; USB0_RXFIFOSZ = 7
ffff0f24: e3a00080 mov r0, #128 ; 0x80
ffff0f28: e1c109b6 strh r0, [r1, #150] ; 0x96 ; USB0_RXFIFOAD = 0x80
ffff0f2c: e3a00002 mov r0, #2
ffff0f30: e5c10042 strb r0, [r1, #66] ; 0x42 ; USB0_EPIND = 2
ffff0f34: e3a00007 mov r0, #7
ffff0f38: e5c10090 strb r0, [r1, #144] ; 0x90 ; USB0_RXFIFOSZ = 7
ffff0f3c: e3a00c01 mov r0, #256 ; 0x100
ffff0f40: e1c109b2 strh r0, [r1, #146] ; 0x92 ; USB0_TXFIFOAD = 0x100
ffff0f44: e3a00007 mov r0, #7
ffff0f48: e5c10050 strb r0, [r1, #80] ; 0x50 ; USB0_INTUSBE = 7
ffff0f4c: e1c10000 bic r0, r1, r0
ffff0f50: e5d00048 ldrb r0, [r0, #72] ; 0x48
ffff0f54: e3800001 orr r0, r0, #1
ffff0f58: e5c10048 strb r0, [r1, #72] ; 0x48
ffff0f5c: e59f0808 ldr r0, =0x7d00
ffff0f60: e5900000 ldr r0, [r0]
ffff0f64: ebffffd3 bl f_0eb8
ffff0f68: e3a00002 mov r0, #2
ffff0f6c: e5941024 ldr r1, [r4, #36] ; 0x24
ffff0f70: e5c10034 strb r0, [r1, #52] ; 0x34
ffff0f74: ebffff93 bl f_0dc8
ffff0f78: e59f07d8 ldr r0, =USB0_BASE
ffff0f7c: e5d00040 ldrb r0, [r0, #64] ; 0x40 = USB0_PCTL
ffff0f80: e3800040 orr r0, r0, #64 ; 0x40 ; USB0_PCTL |= SOFT_CONNECT
ffff0f84: e59f17cc ldr r1, =USB0_BASE
ffff0f88: e5c10040 strb r0, [r1, #64] ; 0x40 = USB0_PCTL
ffff0f8c: e8bd8070 pop {r4, r5, r6, pc}
f_0f90:
ffff0f90: e92d4010 push {r4, lr}
ffff0f94: e1a04000 mov r4, r0
ffff0f98: e59f07b8 ldr r0, =USB0_BASE
ffff0f9c: e5d00043 ldrb r0, [r0, #67] ; 0x43 = USB0_VEND0
ffff0fa0: e20000fe and r0, r0, #254 ; 0xfe
ffff0fa4: e59f17ac ldr r1, =USB0_BASE
ffff0fa8: e5c10043 strb r0, [r1, #67] ; 0x43 = USB0_VEND0
ffff0fac: e1a00004 mov r0, r4
ffff0fb0: ebffffc9 bl f_0edc
ffff0fb4: ebfffe5b bl f_0928
ffff0fb8: e1a00004 mov r0, r4
ffff0fbc: ebfffe64 bl f_0954
ffff0fc0: ebfffc86 bl f_NOP2
ffff0fc4: e8bd8010 pop {r4, pc}
int usb_get_ep_fifo(struct endpoint *ep, int *epid, u32 **epfifo )
{
int id = ep->id & 0x7f; // .b ep+5
if (id <= 4) {
switch(id) {
case 0:
case 1:
*epid = 0;
*epfifo = USBC_REG_EPFIFO0(USBC0_BASE);
break;
case 2:
*epid = 1;
*epfifo = USBC_REG_EPFIFO1(USBC0_BASE);
break;
case 3:
*epid = 2;
*epfifo = USBC_REG_EPFIFO2(USBC0_BASE);
break;
case 4:
*epid = 3;
*epfifo = USBC_REG_EPFIFO3(USBC0_BASE);
break;
case 5: // ??? Can not be reached??
*epid = 4;
*epfifo = USBC_REG_EPFIFO4(USBC0_BASE);
break;
}
}
return 0; // Always 0? No error indication?
}
f_0fc8:
ffff0fc8: e1a03000 mov r3, r0
ffff0fcc: e5d30005 ldrb r0, [r3, #5]
ffff0fd0: e200007f and r0, r0, #127 ; 0x7f
ffff0fd4: e3500004 cmp r0, #4
ffff0fd8: da000001 ble 0xffff0fe4
ffff0fdc: e3e00000 mvn r0, #0
ffff0fe0: e12fff1e bx lr
ffff0fe4: e5d30005 ldrb r0, [r3, #5]
ffff0fe8: e200007f and r0, r0, #127 ; 0x7f
ffff0fec: e3500005 cmp r0, #5
ffff0ff0: 308ff100 addcc pc, pc, r0, lsl #2
ffff0ff4: ea000004 b 0xffff100c // 0
ffff0ff8: ea000005 b 0xffff1014 // 1
ffff0ffc: ea000009 b 0xffff1028 // 2
ffff1000: ea00000e b 0xffff1040 // 3
ffff1004: ea000013 b 0xffff1058 // 4
ffff1008: ea000018 b 0xffff1070 // 5??? (id <= 4 above)
ffff100c: e320f000 nop {0}
ffff1010: e320f000 nop {0}
ffff1014: e3a00000 mov r0, #0
ffff1018: e5810000 str r0, [r1]
ffff101c: e59f0734 ldr r0, =USB0_EPFIFO0
ffff1020: e5820000 str r0, [r2]
ffff1024: ea000017 b 0xffff1088
ffff1028: e320f000 nop {0}
ffff102c: e3a00001 mov r0, #1
ffff1030: e5810000 str r0, [r1]
ffff1034: e59f0734 ldr r0, =USB0_EPFIFO1
ffff1038: e5820000 str r0, [r2]
ffff103c: ea000011 b 0xffff1088
ffff1040: e320f000 nop {0}
ffff1044: e3a00002 mov r0, #2
ffff1048: e5810000 str r0, [r1]
ffff104c: e59f0720 ldr r0, =USB0_EPFIFO2
ffff1050: e5820000 str r0, [r2]
ffff1054: ea00000b b 0xffff1088
ffff1058: e320f000 nop {0}
ffff105c: e3a00003 mov r0, #3
ffff1060: e5810000 str r0, [r1]
ffff1064: e59f070c ldr r0, =USB0_EPFIFO3
ffff1068: e5820000 str r0, [r2]
ffff106c: ea000005 b 0xffff1088
ffff1074: e3a00004 mov r0, #4
ffff1078: e5810000 str r0, [r1]
ffff107c: e59f06f8 ldr r0, =USB0_EPFIFO4
ffff1080: e5820000 str r0, [r2]
ffff1084: e320f000 nop {0}
ffff1088: e320f000 nop {0}
ffff108c: e3a00000 mov r0, #0
ffff1090: eaffffd2 b 0xffff0fe0
f_NOP3:
ffff1094: e12fff1e bx lr
f_1098:
ffff1098: e92d4070 push {r4, r5, r6, lr}
ffff109c: e1a06000 mov r6, r0
ffff10a0: e1a04001 mov r4, r1
ffff10a4: e1a05002 mov r5, r2
ffff10a8: e6af0075 sxtb r0, r5
ffff10ac: e5c40018 strb r0, [r4, #24]
ffff10b0: e594100c ldr r1, [r4, #12]
ffff10b4: e1a00004 mov r0, r4
ffff10b8: e12fff31 blx r1
ffff10bc: e8bd8070 pop {r4, r5, r6, pc}
f_10c0:
ffff10c0: e92d47fc push {r2, r3, r4, r5, r6, r7, r8, r9, sl, lr}
ffff10c4: e1a04000 mov r4, r0
ffff10c8: e1a05001 mov r5, r1
ffff10cc: e1a06002 mov r6, r2
ffff10d0: e3a09000 mov r9, #0
ffff10d4: e1a0200d mov r2, sp
ffff10d8: e28d1004 add r1, sp, #4
ffff10dc: e1a00005 mov r0, r5
ffff10e0: ebffffb8 bl f_0fc8
ffff10e4: e3500000 cmp r0, #0
ffff10e8: 0a000001 beq 0xffff10f4
ffff10ec: e3e00000 mvn r0, #0
ffff10f0: e8bd87fc pop {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc}
ffff10f4: e5957008 ldr r7, [r5, #8]
ffff10f8: e1a02007 mov r2, r7
ffff10fc: e1a01006 mov r1, r6
ffff1100: e59d0000 ldr r0, [sp]
ffff1104: eb00047e bl f_2304
ffff1108: e1a07000 mov r7, r0
ffff110c: e5950008 ldr r0, [r5, #8]
ffff1110: e1500007 cmp r0, r7
ffff1114: 0a000001 beq 0xffff1120
ffff1118: e3a08001 mov r8, #1
ffff111c: ea000009 b 0xffff1148
ffff1120: e5960004 ldr r0, [r6, #4]
ffff1124: e5961010 ldr r1, [r6, #16]
ffff1128: e1500001 cmp r0, r1
ffff112c: 1a000004 bne 0xffff1144
ffff1130: e5d60008 ldrb r0, [r6, #8]
ffff1134: e3500000 cmp r0, #0
ffff1138: 1a000001 bne 0xffff1144
ffff113c: e3a08002 mov r8, #2
ffff1140: ea000000 b 0xffff1148
ffff1144: e3a08000 mov r8, #0
ffff1148: e3580000 cmp r8, #0
ffff114c: 0a000027 beq 0xffff11f0
ffff1150: e59d0004 ldr r0, [sp, #4]
ffff1154: e3500000 cmp r0, #0
ffff1158: 1a000017 bne 0xffff11bc
ffff115c: e1a00004 mov r0, r4
ffff1160: eb00044e bl f_22a0
ffff1164: e3100004 tst r0, #4
ffff1168: 1a000019 bne 0xffff11d4
ffff116c: e3580001 cmp r8, #1
ffff1170: 1a000009 bne 0xffff119c
ffff1174: e59d0004 ldr r0, [sp, #4]
ffff1178: e59f15d8 ldr r1, =USB0_BASE
ffff117c: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1180: e3a0000a mov r0, #10
ffff1184: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1188: e3a00000 mov r0, #0
ffff118c: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1190: e5810030 str r0, [r1, #48] ; 0x30
ffff1194: e3a09001 mov r9, #1
ffff1198: ea00000d b 0xffff11d4
ffff119c: e3580002 cmp r8, #2
ffff11a0: 1a00000b bne 0xffff11d4
ffff11a4: e59d0004 ldr r0, [sp, #4]
ffff11a8: e59f15a8 ldr r1, =USB0_BASE
ffff11ac: e5c10042 strb r0, [r1, #66] ; 0x42
ffff11b0: e3a00002 mov r0, #2
ffff11b4: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff11b8: ea000005 b 0xffff11d4
ffff11bc: e59d0004 ldr r0, [sp, #4]
ffff11c0: e59f1590 ldr r1, =USB0_BASE
ffff11c4: e5c10042 strb r0, [r1, #66] ; 0x42
ffff11c8: e3020001 movw r0, #8193 ; 0x2001
ffff11cc: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff11d0: e3a09001 mov r9, #1
ffff11d4: e3590001 cmp r9, #1
ffff11d8: 1a000016 bne 0xffff1238
ffff11dc: e3a02000 mov r2, #0
ffff11e0: e1a01006 mov r1, r6
ffff11e4: e1a00005 mov r0, r5
ffff11e8: ebffffaa bl f_1098
ffff11ec: ea000011 b 0xffff1238
ffff11f0: e59d0004 ldr r0, [sp, #4]
ffff11f4: e3500000 cmp r0, #0
ffff11f8: 1a000009 bne 0xffff1224
ffff11fc: e1a00004 mov r0, r4
ffff1200: eb000426 bl f_22a0
ffff1204: e3100004 tst r0, #4
ffff1208: 1a00000a bne 0xffff1238
ffff120c: e59d0004 ldr r0, [sp, #4]
ffff1210: e59f1540 ldr r1, =USB0_BASE
ffff1214: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1218: e3a00002 mov r0, #2
ffff121c: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1220: ea000004 b 0xffff1238
ffff1224: e59d0004 ldr r0, [sp, #4]
ffff1228: e59f1528 ldr r1, =USB0_BASE
ffff122c: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1230: e3020001 movw r0, #8193 ; 0x2001
ffff1234: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1238: e1a00009 mov r0, r9
ffff123c: eaffffab b 0xffff10f0
f_1240:
ffff1240: e92d4ffe push {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}
ffff1244: e1a04000 mov r4, r0
ffff1248: e1a05001 mov r5, r1
ffff124c: e1a06002 mov r6, r2
ffff1250: e3a00001 mov r0, #1
ffff1254: e58d0008 str r0, [sp, #8]
ffff1258: e3a0b000 mov fp, #0
ffff125c: e1a0200d mov r2, sp
ffff1260: e28d1004 add r1, sp, #4
ffff1264: e1a00005 mov r0, r5
ffff1268: ebffff56 bl f_0fc8
ffff126c: e3500000 cmp r0, #0
ffff1270: 0a000001 beq 0xffff127c
ffff1274: e3e00000 mvn r0, #0
ffff1278: e8bd8ffe pop {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}
ffff127c: e5960000 ldr r0, [r6]
ffff1280: e5961010 ldr r1, [r6, #16]
ffff1284: e0807001 add r7, r0, r1
ffff1288: e5960004 ldr r0, [r6, #4]
ffff128c: e5961010 ldr r1, [r6, #16]
ffff1290: e0409001 sub r9, r0, r1
ffff1294: e3590000 cmp r9, #0
ffff1298: 1a000001 bne 0xffff12a4
ffff129c: e3e00000 mvn r0, #0
ffff12a0: eafffff4 b 0xffff1278
ffff12a4: e59d0004 ldr r0, [sp, #4]
ffff12a8: e59f14a8 ldr r1, =USB0_BASE
ffff12ac: e5c10042 strb r0, [r1, #66] ; 0x42
ffff12b0: e1a00001 mov r0, r1
ffff12b4: e590b088 ldr fp, [r0, #136] ; 0x88
ffff12b8: e5950008 ldr r0, [r5, #8]
ffff12bc: e150000b cmp r0, fp
ffff12c0: 2a000001 bcs 0xffff12cc
ffff12c4: e595a008 ldr sl, [r5, #8]
ffff12c8: ea000000 b 0xffff12d0
ffff12cc: e1a0a00b mov sl, fp
ffff12d0: e1a0300a mov r3, sl
ffff12d4: e1a02006 mov r2, r6
ffff12d8: e1a01007 mov r1, r7
ffff12dc: e59d0000 ldr r0, [sp]
ffff12e0: eb000423 bl f_2374
ffff12e4: e1a0b000 mov fp, r0
ffff12e8: e5950008 ldr r0, [r5, #8]
ffff12ec: e150000b cmp r0, fp
ffff12f0: 9a000006 bls 0xffff1310
ffff12f4: e3a00001 mov r0, #1
ffff12f8: e58d0008 str r0, [sp, #8]
ffff12fc: e15b000a cmp fp, sl
ffff1300: 0a00000b beq 0xffff1334
ffff1304: e3a000ff mov r0, #255 ; 0xff
ffff1308: e5c60018 strb r0, [r6, #24]
ffff130c: ea000008 b 0xffff1334
ffff1310: e5960004 ldr r0, [r6, #4]
ffff1314: e5961010 ldr r1, [r6, #16]
ffff1318: e1500001 cmp r0, r1
ffff131c: 1a000002 bne 0xffff132c
ffff1320: e3a00001 mov r0, #1
ffff1324: e58d0008 str r0, [sp, #8]
ffff1328: ea000001 b 0xffff1334
ffff132c: e3a00000 mov r0, #0
ffff1330: e58d0008 str r0, [sp, #8]
ffff1334: e59d0004 ldr r0, [sp, #4]
ffff1338: e59f1418 ldr r1, =USB0_BASE
ffff133c: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1340: e1a00001 mov r0, r1
ffff1344: e590b088 ldr fp, [r0, #136] ; 0x88
ffff1348: e59d0008 ldr r0, [sp, #8]
ffff134c: e3500000 cmp r0, #0
ffff1350: 0a000018 beq 0xffff13b8
ffff1354: e59d0004 ldr r0, [sp, #4]
ffff1358: e3500000 cmp r0, #0
ffff135c: 1a000007 bne 0xffff1380
ffff1360: e59d0004 ldr r0, [sp, #4]
ffff1364: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1368: e3a00048 mov r0, #72 ; 0x48
ffff136c: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1370: e3a00000 mov r0, #0
ffff1374: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1378: e5810030 str r0, [r1, #48] ; 0x30
ffff137c: ea000006 b 0xffff139c
ffff1380: e59d0004 ldr r0, [sp, #4]
ffff1384: e59f13cc ldr r1, =USB0_BASE
ffff1388: e5c10042 strb r0, [r1, #66] ; 0x42
ffff138c: e1a00001 mov r0, r1
ffff1390: e1d088b6 ldrh r8, [r0, #134] ; 0x86
ffff1394: e3c88001 bic r8, r8, #1
ffff1398: e1c088b6 strh r8, [r0, #134] ; 0x86
ffff139c: e3a02000 mov r2, #0
ffff13a0: e1a01006 mov r1, r6
ffff13a4: e1a00005 mov r0, r5
ffff13a8: ebffff3a bl f_1098
ffff13ac: e3a00001 mov r0, #1
ffff13b0: e58d0008 str r0, [sp, #8]
ffff13b4: ea00000f b 0xffff13f8
ffff13b8: e59d0004 ldr r0, [sp, #4]
ffff13bc: e3500000 cmp r0, #0
ffff13c0: 1a000005 bne 0xffff13dc
ffff13c4: e59d0004 ldr r0, [sp, #4]
ffff13c8: e59f1388 ldr r1, =USB0_BASE
ffff13cc: e5c10042 strb r0, [r1, #66] ; 0x42
ffff13d0: e3a00040 mov r0, #64 ; 0x40
ffff13d4: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff13d8: ea000006 b 0xffff13f8
ffff13dc: e59d0004 ldr r0, [sp, #4]
ffff13e0: e59f1370 ldr r1, =USB0_BASE
ffff13e4: e5c10042 strb r0, [r1, #66] ; 0x42
ffff13e8: e1a00001 mov r0, r1
ffff13ec: e1d088b6 ldrh r8, [r0, #134] ; 0x86
ffff13f0: e3c88001 bic r8, r8, #1
ffff13f4: e1c088b6 strh r8, [r0, #134] ; 0x86
ffff13f8: e59d0008 ldr r0, [sp, #8]
ffff13fc: eaffff9d b 0xffff1278
f_1400:
ffff1400: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
ffff1404: e1a04000 mov r4, r0
ffff1408: e1a05001 mov r5, r1
ffff140c: e1a06002 mov r6, r2
ffff1410: e3a07000 mov r7, #0
ffff1414: e3a08000 mov r8, #0
ffff1418: e3a09000 mov r9, #0
ffff141c: e5950014 ldr r0, [r5, #20]
ffff1420: e3d00003 bics r0, r0, #3
ffff1424: 0a000001 beq 0xffff1430
ffff1428: e3e00000 mvn r0, #0
ffff142c: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc}
ffff1430: e3560000 cmp r6, #0
ffff1434: 1a000001 bne 0xffff1440
ffff1438: e1a00004 mov r0, r4
ffff143c: ebfffd3f bl f_0940
ffff1440: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1444: e5951014 ldr r1, [r5, #20]
ffff1448: e0807201 add r7, r0, r1, lsl #4
ffff144c: e3a00000 mov r0, #0
ffff1450: e5850010 str r0, [r5, #16]
ffff1454: e5d70005 ldrb r0, [r7, #5]
ffff1458: e3500000 cmp r0, #0
ffff145c: 0a00000c beq 0xffff1494
ffff1460: e5d70005 ldrb r0, [r7, #5]
ffff1464: e200007f and r0, r0, #127 ; 0x7f
ffff1468: e59f12e8 ldr r1, =USB0_BASE
ffff146c: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1470: e5d70005 ldrb r0, [r7, #5]
ffff1474: e3100080 tst r0, #128 ; 0x80
ffff1478: 0a000001 beq 0xffff1484
ffff147c: e2810082 add r0, r1, #130 ; 0x82
ffff1480: ea000000 b 0xffff1488
ffff1484: e59f02f4 ldr r0, =USB0_RXCSR
ffff1488: e1d080b0 ldrh r8, [r0]
ffff148c: e59f02c4 ldr r0, =USB0_BASE
ffff1490: e1d098b8 ldrh r9, [r0, #136] ; 0x88
ffff1494: e5d70005 ldrb r0, [r7, #5]
ffff1498: e3500000 cmp r0, #0
ffff149c: 1a00001c bne 0xffff1514
ffff14a0: e5940024 ldr r0, [r4, #36] ; 0x24
ffff14a4: e5900030 ldr r0, [r0, #48] ; 0x30
ffff14a8: e3500001 cmp r0, #1
ffff14ac: 0a000002 beq 0xffff14bc
ffff14b0: e3500002 cmp r0, #2
ffff14b4: 1a00000e bne 0xffff14f4
ffff14b8: ea000008 b 0xffff14e0
ffff14bc: e320f000 nop {0}
ffff14c0: e1a02005 mov r2, r5
ffff14c4: e1a01007 mov r1, r7
ffff14c8: e1a00004 mov r0, r4
ffff14cc: ebfffefb bl f_10c0
ffff14d0: e3500000 cmp r0, #0
ffff14d4: 0a000000 beq 0xffff14dc
ffff14d8: e3a05000 mov r5, #0
ffff14dc: ea00000b b 0xffff1510
ffff14e0: e320f000 nop {0}
ffff14e4: e3a00000 mov r0, #0
ffff14e8: e5941024 ldr r1, [r4, #36] ; 0x24
ffff14ec: e5810030 str r0, [r1, #48] ; 0x30
ffff14f0: ea000006 b 0xffff1510
ffff14f4: e320f000 nop {0}
ffff14f8: e3560000 cmp r6, #0
ffff14fc: 1a000001 bne 0xffff1508
ffff1500: e1a00004 mov r0, r4
ffff1504: ebfffd12 bl f_0954
ffff1508: e3e00000 mvn r0, #0
ffff150c: eaffffc6 b 0xffff142c
ffff1510: ea000031 b 0xffff15dc
ffff1514: e5d70005 ldrb r0, [r7, #5]
ffff1518: e3100080 tst r0, #128 ; 0x80
ffff151c: 0a000009 beq 0xffff1548
ffff1520: e3180001 tst r8, #1
ffff1524: 1a000007 bne 0xffff1548
ffff1528: e1a02005 mov r2, r5
ffff152c: e1a01007 mov r1, r7
ffff1530: e1a00004 mov r0, r4
ffff1534: ebfffee1 bl f_10c0
ffff1538: e3500000 cmp r0, #0
ffff153c: 0a000001 beq 0xffff1548
ffff1540: e3a05000 mov r5, #0
ffff1544: ea000024 b 0xffff15dc
ffff1548: e5d70005 ldrb r0, [r7, #5]
ffff154c: e3100080 tst r0, #128 ; 0x80
ffff1550: 1a000021 bne 0xffff15dc
ffff1554: e3180001 tst r8, #1
ffff1558: 0a00001f beq 0xffff15dc
ffff155c: e59f01f4 ldr r0, =USB0_BASE
ffff1560: e1d008b8 ldrh r0, [r0, #136] ; 0x88
ffff1564: e1b09000 movs r9, r0
ffff1568: 0a00001b beq 0xffff15dc
ffff156c: e320f000 nop {0}
ffff1570: e1a02005 mov r2, r5
ffff1574: e1a01007 mov r1, r7
ffff1578: e1a00004 mov r0, r4
ffff157c: ebffff2f bl f_1240
ffff1580: e5d70005 ldrb r0, [r7, #5]
ffff1584: e200007f and r0, r0, #127 ; 0x7f
ffff1588: e59f11c8 ldr r1, =USB0_BASE
ffff158c: e5c10042 strb r0, [r1, #66] ; 0x42
ffff1590: e5d70005 ldrb r0, [r7, #5]
ffff1594: e3100080 tst r0, #128 ; 0x80
ffff1598: 0a000001 beq 0xffff15a4
ffff159c: e2810082 add r0, r1, #130 ; 0x82
ffff15a0: ea000000 b 0xffff15a8
ffff15a4: e59f01d4 ldr r0, =USB0_RXCSR
ffff15a8: e1d080b0 ldrh r8, [r0]
ffff15ac: e59f01a4 ldr r0, =USB0_BASE
ffff15b0: e1d098b8 ldrh r9, [r0, #136] ; 0x88
ffff15b4: e5d50018 ldrb r0, [r5, #24]
ffff15b8: e3500000 cmp r0, #0
ffff15bc: 1a000000 bne 0xffff15c4
ffff15c0: ea000003 b 0xffff15d4
ffff15c4: e3180001 tst r8, #1
ffff15c8: 0a000001 beq 0xffff15d4
ffff15cc: e3590000 cmp r9, #0
ffff15d0: 1affffe6 bne 0xffff1570
ffff15d4: e320f000 nop {0}
ffff15d8: e3a05000 mov r5, #0
ffff15dc: e3560000 cmp r6, #0
ffff15e0: 1a000001 bne 0xffff15ec
ffff15e4: e1a00004 mov r0, r4
ffff15e8: ebfffcd9 bl f_0954
ffff15ec: e3a00000 mov r0, #0
ffff15f0: eaffff8d b 0xffff142c
u32 f_15f4(u32 a,void *b,void *c) {
return f_f1400(a,b,c);
}
f_15f4:
ffff15f4: e92d4070 push {r4, r5, r6, lr}
ffff15f8: e1a04000 mov r4, r0
ffff15fc: e1a05001 mov r5, r1
ffff1600: e1a06002 mov r6, r2
ffff1604: e1a02006 mov r2, r6
ffff1608: e1a01005 mov r1, r5
ffff160c: e1a00004 mov r0, r4
ffff1610: ebffff7a bl f_1400
ffff1614: e8bd8070 pop {r4, r5, r6, pc}
f_1618:
ffff1618: e3a01000 mov r1, #0
ffff161c: e5801008 str r1, [r0, #8]
ffff1620: e5801004 str r1, [r0, #4]
ffff1624: e5801000 str r1, [r0]
ffff1628: e12fff1e bx lr
f_162c:
ffff162c: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff1630: e1a04000 mov r4, r0
ffff1634: e3a05000 mov r5, #0
ffff1638: e3a06000 mov r6, #0
ffff163c: e1a08004 mov r8, r4
ffff1640: e3a00000 mov r0, #0
ffff1644: ebfffcc7 bl set_epind
ffff1648: e59f0108 ldr r0, =USB0_BASE
ffff164c: e1d068b8 ldrh r6, [r0, #136] ; 0x88
ffff1650: e3560008 cmp r6, #8
ffff1654: 0a000008 beq 0xffff167c
ffff1658: e3a07000 mov r7, #0
ffff165c: ea000002 b 0xffff166c
ffff1660: e59f00f0 ldr r0, =USB0_BASE
ffff1664: e1d068b8 ldrh r6, [r0, #136] ; 0x88
ffff1668: e2877001 add r7, r7, #1
ffff166c: e3570010 cmp r7, #16
ffff1670: aa000001 bge 0xffff167c
ffff1674: e3560008 cmp r6, #8
ffff1678: 1afffff8 bne 0xffff1660
ffff167c: ea000004 b 0xffff1694
ffff1680: e59f00d0 ldr r0, =USB0_BASE
ffff1684: e5d00000 ldrb r0, [r0]
ffff1688: e5c80000 strb r0, [r8]
ffff168c: e2888001 add r8, r8, #1
ffff1690: e2855001 add r5, r5, #1
ffff1694: e1b00006 movs r0, r6
ffff1698: e2466001 sub r6, r6, #1
ffff169c: 1afffff7 bne 0xffff1680
ffff16a0: e1a00005 mov r0, r5
ffff16a4: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}
f_16a8:
ffff16a8: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
ffff16ac: e1a04000 mov r4, r0
ffff16b0: e1a05001 mov r5, r1
ffff16b4: e1a0a002 mov sl, r2
ffff16b8: e1a06003 mov r6, r3
ffff16bc: e1a09005 mov r9, r5
ffff16c0: e3560000 cmp r6, #0
ffff16c4: 0a000001 beq 0xffff16d0
ffff16c8: e3e00000 mvn r0, #0
ffff16cc: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc}
ffff16d0: e5948014 ldr r8, [r4, #20]
ffff16d4: e3a07000 mov r7, #0
ffff16d8: e3a02009 mov r2, #9
ffff16dc: e1a00005 mov r0, r5
ffff16e0: e5941004 ldr r1, [r4, #4]
ffff16e4: ebfffa98 bl memcpy
ffff16e8: e2855009 add r5, r5, #9
ffff16ec: e3a02009 mov r2, #9
ffff16f0: e1a00005 mov r0, r5
ffff16f4: e5941008 ldr r1, [r4, #8]
ffff16f8: ebfffa93 bl memcpy
ffff16fc: e2855009 add r5, r5, #9
ffff1700: e3a02007 mov r2, #7
ffff1704: e1a00005 mov r0, r5
ffff1708: e5981000 ldr r1, [r8]
ffff170c: ebfffa8e bl memcpy
ffff1710: e2855007 add r5, r5, #7
ffff1714: e3a02007 mov r2, #7
ffff1718: e1a00005 mov r0, r5
ffff171c: e5981004 ldr r1, [r8, #4]
ffff1720: ebfffa89 bl memcpy
ffff1724: e2855007 add r5, r5, #7
ffff1728: e3a07020 mov r7, #32
ffff172c: e3a00009 mov r0, #9
ffff1730: e5c90000 strb r0, [r9]
ffff1734: e3a00002 mov r0, #2
ffff1738: e5c90001 strb r0, [r9, #1]
ffff173c: e1c970b2 strh r7, [r9, #2]
ffff1740: e5d90007 ldrb r0, [r9, #7]
ffff1744: e3800080 orr r0, r0, #128 ; 0x80
ffff1748: e5c90007 strb r0, [r9, #7]
ffff174c: e1a00007 mov r0, r7
ffff1750: eaffffdd b 0xffff16cc
f_1784:
ffff1784: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
ffff1788: e1a04000 mov r4, r0
ffff178c: e1a05001 mov r5, r1
ffff1790: e3a06000 mov r6, #0
ffff1794: e3a07000 mov r7, #0
ffff1798: e1d580b2 ldrh r8, [r5, #2]
ffff179c: e3a09000 mov r9, #0
ffff17a0: e5947024 ldr r7, [r4, #36] ; 0x24
ffff17a4: e597600c ldr r6, [r7, #12]
ffff17a8: e5d50001 ldrb r0, [r5, #1]
ffff17ac: e3500006 cmp r0, #6
ffff17b0: 0a000002 beq 0xffff17c0
ffff17b4: e35000fe cmp r0, #254 ; 0xfe
ffff17b8: 1a000046 bne 0xffff18d8
ffff17bc: ea00003e b 0xffff18bc
ffff17c0: e320f000 nop {0}
ffff17c4: e5d50000 ldrb r0, [r5]
ffff17c8: e3500080 cmp r0, #128 ; 0x80
ffff17cc: 0a000000 beq 0xffff17d4
ffff17d0: ea000042 b 0xffff18e0
ffff17d4: e1a00448 asr r0, r8, #8
ffff17d8: e3500001 cmp r0, #1
ffff17dc: 0a000004 beq 0xffff17f4
ffff17e0: e3500002 cmp r0, #2
ffff17e4: 0a000011 beq 0xffff1830
ffff17e8: e3500003 cmp r0, #3
ffff17ec: 1a000030 bne 0xffff18b4
ffff17f0: ea00001f b 0xffff1874
ffff17f4: e320f000 nop {0}
ffff17f8: e1d500b6 ldrh r0, [r5, #6]
ffff17fc: e3500012 cmp r0, #18
ffff1800: 9a000001 bls 0xffff180c
ffff1804: e3a09012 mov r9, #18
ffff1808: ea000000 b 0xffff1810
ffff180c: e1d590b6 ldrh r9, [r5, #6]
ffff1810: e5941000 ldr r1, [r4]
ffff1814: e1a02009 mov r2, r9
ffff1818: e5960000 ldr r0, [r6]
ffff181c: ebfffa4a bl memcpy
ffff1820: e5869004 str r9, [r6, #4]
ffff1824: e3a00000 mov r0, #0
ffff1828: e5c60008 strb r0, [r6, #8]
ffff182c: ea000020 b 0xffff18b4
ffff1830: e320f000 nop {0}
ffff1834: e20830ff and r3, r8, #255 ; 0xff
ffff1838: e1a02448 asr r2, r8, #8
ffff183c: e1a00004 mov r0, r4
ffff1840: e5961000 ldr r1, [r6]
ffff1844: ebffff97 bl f_16a8
ffff1848: e1a09000 mov r9, r0
ffff184c: e1d500b6 ldrh r0, [r5, #6]
ffff1850: e1500009 cmp r0, r9
ffff1854: ba000001 blt 0xffff1860
ffff1858: e5869004 str r9, [r6, #4]
ffff185c: ea000001 b 0xffff1868
ffff1860: e1d500b6 ldrh r0, [r5, #6]
ffff1864: e5860004 str r0, [r6, #4]
ffff1868: e3a00000 mov r0, #0
ffff186c: e5c60008 strb r0, [r6, #8]
ffff1870: ea00000f b 0xffff18b4
ffff1874: e320f000 nop {0}
ffff1878: e20800ff and r0, r8, #255 ; 0xff
ffff187c: e3500000 cmp r0, #0
ffff1880: 1a000009 bne 0xffff18ac
ffff1884: e5961000 ldr r1, [r6]
ffff1888: e3a02004 mov r2, #4
ffff188c: e5c12000 strb r2, [r1]
ffff1890: e3a02003 mov r2, #3
ffff1894: e5c12001 strb r2, [r1, #1]
ffff1898: e3a02009 mov r2, #9
ffff189c: e5c12002 strb r2, [r1, #2]
ffff18a0: e3a02004 mov r2, #4
ffff18a4: e5c12003 strb r2, [r1, #3]
ffff18a8: ea000001 b 0xffff18b4
ffff18ac: e320f000 nop {0}
ffff18b0: e320f000 nop {0}
ffff18b4: e320f000 nop {0}
ffff18b8: ea000008 b 0xffff18e0
ffff18bc: e320f000 nop {0}
ffff18c0: e5960000 ldr r0, [r6]
ffff18c4: e3a01001 mov r1, #1
ffff18c8: e5861004 str r1, [r6, #4]
ffff18cc: e3a01000 mov r1, #0
ffff18d0: e5c01000 strb r1, [r0]
ffff18d4: ea000001 b 0xffff18e0
ffff18d8: e320f000 nop {0}
ffff18dc: e320f000 nop {0}
ffff18e0: e320f000 nop {0}
ffff18e4: e3a02001 mov r2, #1
ffff18e8: e1a01006 mov r1, r6
ffff18ec: e1a00004 mov r0, r4
ffff18f0: ebffff3f bl f_15f4
ffff18f4: e3a00000 mov r0, #0
ffff18f8: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc}
f_18fc:
ffff18fc: e92d47fc push {r2, r3, r4, r5, r6, r7, r8, r9, sl, lr}
ffff1900: e1a04000 mov r4, r0
ffff1904: e3a06000 mov r6, #0
ffff1908: e3a07000 mov r7, #0
ffff190c: e5946024 ldr r6, [r4, #36] ; 0x24
ffff1910: e596700c ldr r7, [r6, #12]
ffff1914: e5d60004 ldrb r0, [r6, #4]
ffff1918: ebfffc12 bl set_epind
ffff191c: e51f01cc ldr r0, =USB0_BASE
ffff1920: e1d058b2 ldrh r5, [r0, #130] ; 0x82
ffff1924: e3150004 tst r5, #4
ffff1928: 0a000005 beq 0xffff1944
ffff192c: e3a00000 mov r0, #0
ffff1930: e51f11e0 ldr r1, =USB0_BASE
ffff1934: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1938: e5941024 ldr r1, [r4, #36] ; 0x24
ffff193c: e5810030 str r0, [r1, #48] ; 0x30
ffff1940: e8bd87fc pop {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc}
ffff1944: e3150010 tst r5, #16
ffff1948: 0a000007 beq 0xffff196c
ffff194c: e51f01fc ldr r0, =USB0_BASE
ffff1950: e1d008b2 ldrh r0, [r0, #130] ; 0x82
ffff1954: e3c00010 bic r0, r0, #16
ffff1958: e51f1208 ldr r1, =USB0_BASE
ffff195c: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1960: e3a00000 mov r0, #0
ffff1964: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1968: e5810030 str r0, [r1, #48] ; 0x30
ffff196c: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1970: e5900030 ldr r0, [r0, #48] ; 0x30
ffff1974: e3500005 cmp r0, #5
ffff1978: 308ff100 addcc pc, pc, r0, lsl #2
ffff197c: ea00009c b 0xffff1bf4
ffff1980: ea000003 b 0xffff1994
ffff1984: ea000066 b 0xffff1b24
ffff1988: ea00006f b 0xffff1b4c
ffff198c: ea000078 b 0xffff1b74
ffff1990: ea000092 b 0xffff1be0
ffff1994: e320f000 nop {0}
ffff1998: e3150001 tst r5, #1
ffff199c: 0a00005f beq 0xffff1b20
ffff19a0: e1a0000d mov r0, sp
ffff19a4: ebffff20 bl f_162c
ffff19a8: e1a08000 mov r8, r0
ffff19ac: e3580008 cmp r8, #8
ffff19b0: 0a000003 beq 0xffff19c4
ffff19b4: e3a00060 mov r0, #96 ; 0x60
ffff19b8: e51f1268 ldr r1, =USB0_BASE
ffff19bc: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff19c0: eaffffde b 0xffff1940
ffff19c4: e5941024 ldr r1, [r4, #36] ; 0x24
ffff19c8: e281003e add r0, r1, #62 ; 0x3e
ffff19cc: e3a02008 mov r2, #8
ffff19d0: e1a0100d mov r1, sp
ffff19d4: eb0002c2 bl f_24e4
ffff19d8: e3a00001 mov r0, #1
ffff19dc: e5941024 ldr r1, [r4, #36] ; 0x24
ffff19e0: e5c1003d strb r0, [r1, #61] ; 0x3d
ffff19e4: e5dd0001 ldrb r0, [sp, #1]
ffff19e8: e3500005 cmp r0, #5
ffff19ec: 0a000014 beq 0xffff1a44
ffff19f0: e3500009 cmp r0, #9
ffff19f4: 0a000002 beq 0xffff1a04
ffff19f8: e350000b cmp r0, #11
ffff19fc: 1a000020 bne 0xffff1a84
ffff1a00: ea000009 b 0xffff1a2c
ffff1a04: e320f000 nop {0}
ffff1a08: e5dd0000 ldrb r0, [sp]
ffff1a0c: e3500000 cmp r0, #0
ffff1a10: 1a000004 bne 0xffff1a28
ffff1a14: e320f000 nop {0}
ffff1a18: e3a00048 mov r0, #72 ; 0x48
ffff1a1c: e51f12cc ldr r1, =USB0_BASE
ffff1a20: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1a24: eaffffc5 b 0xffff1940
ffff1a28: ea00001a b 0xffff1a98
ffff1a2c: e320f000 nop {0}
ffff1a30: e5dd0000 ldrb r0, [sp]
ffff1a34: e3500001 cmp r0, #1
ffff1a38: 1a000000 bne 0xffff1a40
ffff1a3c: eafffff5 b 0xffff1a18
ffff1a40: ea000014 b 0xffff1a98
ffff1a44: e320f000 nop {0}
ffff1a48: e5dd0000 ldrb r0, [sp]
ffff1a4c: e3500000 cmp r0, #0
ffff1a50: 1a00000a bne 0xffff1a80
ffff1a54: e1dd00b2 ldrh r0, [sp, #2]
ffff1a58: e200907f and r9, r0, #127 ; 0x7f
ffff1a5c: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1a60: e5c0903c strb r9, [r0, #60] ; 0x3c
ffff1a64: e3a0004a mov r0, #74 ; 0x4a
ffff1a68: e51f1318 ldr r1, =USB0_BASE
ffff1a6c: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1a70: e3a00003 mov r0, #3
ffff1a74: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1a78: e5810030 str r0, [r1, #48] ; 0x30
ffff1a7c: eaffffaf b 0xffff1940
ffff1a80: ea000004 b 0xffff1a98
ffff1a84: e320f000 nop {0}
ffff1a88: e3a00040 mov r0, #64 ; 0x40
ffff1a8c: e51f133c ldr r1, =USB0_BASE
ffff1a90: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1a94: e320f000 nop {0}
ffff1a98: e320f000 nop {0}
ffff1a9c: e5dd0000 ldrb r0, [sp]
ffff1aa0: e3100080 tst r0, #128 ; 0x80
ffff1aa4: 0a000003 beq 0xffff1ab8
ffff1aa8: e3a00001 mov r0, #1
ffff1aac: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1ab0: e5810030 str r0, [r1, #48] ; 0x30
ffff1ab4: ea000002 b 0xffff1ac4
ffff1ab8: e3a00002 mov r0, #2
ffff1abc: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1ac0: e5810030 str r0, [r1, #48] ; 0x30
ffff1ac4: e1a0100d mov r1, sp
ffff1ac8: e1a00004 mov r0, r4
ffff1acc: ebffff2c bl f_1784
ffff1ad0: e1a0a000 mov sl, r0
ffff1ad4: e35a0000 cmp sl, #0
ffff1ad8: aa000008 bge 0xffff1b00
ffff1adc: e3a00060 mov r0, #96 ; 0x60
ffff1ae0: e51f1390 ldr r1, =USB0_BASE
ffff1ae4: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1ae8: e3a00048 mov r0, #72 ; 0x48
ffff1aec: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1af0: e3a00000 mov r0, #0
ffff1af4: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1af8: e5810030 str r0, [r1, #48] ; 0x30
ffff1afc: ea000006 b 0xffff1b1c
ffff1b00: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1b04: e5d0003d ldrb r0, [r0, #61] ; 0x3d
ffff1b08: e3500000 cmp r0, #0
ffff1b0c: 0a000002 beq 0xffff1b1c
ffff1b10: e3a00000 mov r0, #0
ffff1b14: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1b18: e5c1003d strb r0, [r1, #61] ; 0x3d
ffff1b1c: e320f000 nop {0}
ffff1b20: ea000035 b 0xffff1bfc
ffff1b24: e320f000 nop {0}
ffff1b28: e3150002 tst r5, #2
ffff1b2c: 1a000005 bne 0xffff1b48
ffff1b30: e3570000 cmp r7, #0
ffff1b34: 0a000003 beq 0xffff1b48
ffff1b38: e1a02007 mov r2, r7
ffff1b3c: e1a01006 mov r1, r6
ffff1b40: e1a00004 mov r0, r4
ffff1b44: ebfffd5d bl f_10c0
ffff1b48: ea00002b b 0xffff1bfc
ffff1b4c: e320f000 nop {0}
ffff1b50: e3150001 tst r5, #1
ffff1b54: 0a000005 beq 0xffff1b70
ffff1b58: e3570000 cmp r7, #0
ffff1b5c: 0a000003 beq 0xffff1b70
ffff1b60: e1a02007 mov r2, r7
ffff1b64: e1a01006 mov r1, r6
ffff1b68: e1a00004 mov r0, r4
ffff1b6c: ebfffdb3 bl f_1240
ffff1b70: ea000021 b 0xffff1bfc
ffff1b74: e320f000 nop {0}
ffff1b78: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1b7c: e5d0003f ldrb r0, [r0, #63] ; 0x3f
ffff1b80: e3500005 cmp r0, #5
ffff1b84: 1a00000e bne 0xffff1bc4
ffff1b88: e3a000c0 mov r0, #192 ; 0xc0
ffff1b8c: e51f143c ldr r1, =USB0_BASE
ffff1b90: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1b94: e3a08000 mov r8, #0
ffff1b98: ebfffb75 bl get_epind
ffff1b9c: e1a08000 mov r8, r0
ffff1ba0: e3a00000 mov r0, #0
ffff1ba4: ebfffb6f bl set_epind
ffff1ba8: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1bac: e5d0003c ldrb r0, [r0, #60] ; 0x3c
ffff1bb0: e51f1460 ldr r1, =USB0_BASE
ffff1bb4: e5c10098 strb r0, [r1, #152] ; 0x98
ffff1bb8: e1a00008 mov r0, r8
ffff1bbc: ebfffb69 bl set_epind
ffff1bc0: ea000001 b 0xffff1bcc
ffff1bc4: e320f000 nop {0}
ffff1bc8: e320f000 nop {0}
ffff1bcc: e320f000 nop {0}
ffff1bd0: e3a00000 mov r0, #0
ffff1bd4: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1bd8: e5810030 str r0, [r1, #48] ; 0x30
ffff1bdc: ea000006 b 0xffff1bfc
ffff1be0: e320f000 nop {0}
ffff1be4: e3a00000 mov r0, #0
ffff1be8: e5941024 ldr r1, [r4, #36] ; 0x24
ffff1bec: e5810030 str r0, [r1, #48] ; 0x30
ffff1bf0: ea000001 b 0xffff1bfc
ffff1bf4: e320f000 nop {0}
ffff1bf8: e320f000 nop {0}
ffff1bfc: e320f000 nop {0}
ffff1c00: eaffff4e b 0xffff1940
f_1c04:
ffff1c04: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
ffff1c08: e1a04000 mov r4, r0
ffff1c0c: e1a05001 mov r5, r1
ffff1c10: e3a06000 mov r6, #0
ffff1c14: e3a07000 mov r7, #0
ffff1c18: e3a08000 mov r8, #0
ffff1c1c: e3550000 cmp r5, #0
ffff1c20: 1a000000 bne 0xffff1c28
ffff1c24: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc}
ffff1c28: e5940024 ldr r0, [r4, #36] ; 0x24
ffff1c2c: e0807205 add r7, r0, r5, lsl #4
ffff1c30: e597600c ldr r6, [r7, #12]
ffff1c34: e5d70005 ldrb r0, [r7, #5]
ffff1c38: e2008080 and r8, r0, #128 ; 0x80
ffff1c3c: e5d70005 ldrb r0, [r7, #5]
ffff1c40: e200a07f and sl, r0, #127 ; 0x7f
ffff1c44: e5d60018 ldrb r0, [r6, #24]
ffff1c48: e3500001 cmp r0, #1
ffff1c4c: 0a000000 beq 0xffff1c54
ffff1c50: eafffff3 b 0xffff1c24
ffff1c54: e3580000 cmp r8, #0
ffff1c58: 0a000013 beq 0xffff1cac
ffff1c5c: e5d70004 ldrb r0, [r7, #4]
ffff1c60: ebfffb40 bl set_epind
ffff1c64: e51f0514 ldr r0, =USB0_BASE
ffff1c68: e1d098b2 ldrh r9, [r0, #130] ; 0x82
ffff1c6c: e3190020 tst r9, #32
ffff1c70: 0a000004 beq 0xffff1c88
ffff1c74: e51f1524 ldr r1, =USB0_BASE
ffff1c78: e1c1a4b2 strh sl, [r1, #66] ; 0x42
ffff1c7c: e3a00000 mov r0, #0
ffff1c80: e1c108b2 strh r0, [r1, #130] ; 0x82
ffff1c84: eaffffe6 b 0xffff1c24
ffff1c88: e3190001 tst r9, #1
ffff1c8c: 1a000025 bne 0xffff1d28
ffff1c90: e3560000 cmp r6, #0
ffff1c94: 0a000023 beq 0xffff1d28
ffff1c98: e1a02006 mov r2, r6
ffff1c9c: e1a01007 mov r1, r7
ffff1ca0: e1a00004 mov r0, r4
ffff1ca4: ebfffd05 bl f_10c0
ffff1ca8: ea00001e b 0xffff1d28
ffff1cac: e51f155c ldr r1, =USB0_BASE
ffff1cb0: e5c1a042 strb sl, [r1, #66] ; 0x42
ffff1cb4: e1a00001 mov r0, r1
ffff1cb8: e1d098b6 ldrh r9, [r0, #134] ; 0x86
ffff1cbc: e3190040 tst r9, #64 ; 0x40
ffff1cc0: 0a000003 beq 0xffff1cd4
ffff1cc4: e1c1a4b2 strh sl, [r1, #66] ; 0x42
ffff1cc8: e3a00000 mov r0, #0
ffff1ccc: e1c108b6 strh r0, [r1, #134] ; 0x86
ffff1cd0: eaffffd3 b 0xffff1c24
ffff1cd4: e320f000 nop {0}
ffff1cd8: e3190001 tst r9, #1
ffff1cdc: 0a000011 beq 0xffff1d28
ffff1ce0: e3560000 cmp r6, #0
ffff1ce4: 0a00000f beq 0xffff1d28
ffff1ce8: e1a02006 mov r2, r6
ffff1cec: e1a01007 mov r1, r7
ffff1cf0: e1a00004 mov r0, r4
ffff1cf4: ebfffd51 bl f_1240
ffff1cf8: e5d60018 ldrb r0, [r6, #24]
ffff1cfc: e3500000 cmp r0, #0
ffff1d00: 0a000008 beq 0xffff1d28
ffff1d04: e51f15b4 ldr r1, =USB0_BASE
ffff1d08: e5c1a042 strb sl, [r1, #66] ; 0x42
ffff1d0c: e1a00001 mov r0, r1
ffff1d10: e1d098b6 ldrh r9, [r0, #134] ; 0x86
ffff1d14: e3190001 tst r9, #1
ffff1d18: 0a000002 beq 0xffff1d28
ffff1d1c: e3560000 cmp r6, #0
ffff1d20: 0a000000 beq 0xffff1d28
ffff1d24: eaffffeb b 0xffff1cd8
ffff1d28: eaffffbd b 0xffff1c24
interrupt_handler:
ffff1d2c: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr}
ffff1d30: e3a04000 mov r4, #0
ffff1d34: e3a05000 mov r5, #0
ffff1d38: e3a06000 mov r6, #0
ffff1d3c: e3a07000 mov r7, #0
ffff1d40: e3a08000 mov r8, #0
ffff1d44: ebfffb0a bl get_epind
ffff1d48: e1a04000 mov r4, r0
ffff1d4c: e51f05e8 ldr r0, =0x7d00
ffff1d50: e5900000 ldr r0, [r0]
ffff1d54: eb000151 bl f_22a0
ffff1d58: e1a06000 mov r6, r0
ffff1d5c: e51f15f8 ldr r1, =0x7d00
ffff1d60: e5910000 ldr r0, [r1]
ffff1d64: e5901038 ldr r1, [r0, #56] ; 0x38
ffff1d68: e3510000 cmp r1, #0
ffff1d6c: 1a000002 bne 0xffff1d7c
ffff1d70: e51f1620 ldr r1, =USB0_BASE
ffff1d74: e5d11044 ldrb r1, [r1, #68] ; 0x44
ffff1d78: e5801038 str r1, [r0, #56] ; 0x38
ffff1d7c: e320f000 nop {0}
ffff1d80: e5901038 ldr r1, [r0, #56] ; 0x38
ffff1d84: e1a07001 mov r7, r1
ffff1d88: e51f1624 ldr r1, =0x7d00
ffff1d8c: e5910000 ldr r0, [r1]
ffff1d90: e590103c ldr r1, [r0, #60] ; 0x3c
ffff1d94: e3510000 cmp r1, #0
ffff1d98: 1a000002 bne 0xffff1da8
ffff1d9c: e51f164c ldr r1, =USB0_BASE
ffff1da0: e5d11046 ldrb r1, [r1, #70] ; 0x46
ffff1da4: e580103c str r1, [r0, #60] ; 0x3c
ffff1da8: e320f000 nop {0}
ffff1dac: e590103c ldr r1, [r0, #60] ; 0x3c
ffff1db0: e1a08001 mov r8, r1
ffff1db4: e3160004 tst r6, #4
ffff1db8: 0a000023 beq 0xffff1e4c
ffff1dbc: e3a00002 mov r0, #2
ffff1dc0: e51f165c ldr r1, =0x7d00
ffff1dc4: e5911000 ldr r1, [r1]
ffff1dc8: e5911024 ldr r1, [r1, #36] ; 0x24
ffff1dcc: e5c10034 strb r0, [r1, #52] ; 0x34
ffff1dd0: e3a00000 mov r0, #0
ffff1dd4: e51f1670 ldr r1, =0x7d00
ffff1dd8: e5911000 ldr r1, [r1]
ffff1ddc: e5911024 ldr r1, [r1, #36] ; 0x24
ffff1de0: e5810030 str r0, [r1, #48] ; 0x30
ffff1de4: e3a01004 mov r1, #4
ffff1de8: e51f0684 ldr r0, =0x7d00
ffff1dec: e5900000 ldr r0, [r0]
ffff1df0: eb00013b bl f_22e4
ffff1df4: e51f16a4 ldr r1, =USB0_BASE
ffff1df8: e5c14042 strb r4, [r1, #66] ; 0x42
ffff1dfc: ebfffca4 bl f_NOP3
ffff1e00: e51f06b0 ldr r0, =USB0_BASE
ffff1e04: e5d00048 ldrb r0, [r0, #72] ; 0x48
ffff1e08: e3800001 orr r0, r0, #1
ffff1e0c: e51f16bc ldr r1, =USB0_BASE
ffff1e10: e5c10048 strb r0, [r1, #72] ; 0x48
ffff1e14: e51f06b0 ldr r0, =0x7d00
ffff1e18: e5900000 ldr r0, [r0]
ffff1e1c: ebfffc25 bl f_0eb8
ffff1e20: e3a09000 mov r9, #0
ffff1e24: ebfffad2 bl get_epind
ffff1e28: e1a09000 mov r9, r0
ffff1e2c: e3a00000 mov r0, #0
ffff1e30: ebfffacc bl set_epind
ffff1e34: e3a00000 mov r0, #0
ffff1e38: e51f16e8 ldr r1, =USB0_BASE
ffff1e3c: e5c10098 strb r0, [r1, #152] ; 0x98
ffff1e40: e1a00009 mov r0, r9
ffff1e44: ebfffac7 bl set_epind
ffff1e48: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc}
ffff1e4c: e3160002 tst r6, #2
ffff1e50: 0a000003 beq 0xffff1e64
ffff1e54: e3a01002 mov r1, #2
ffff1e58: e51f06f4 ldr r0, =0x7d00
ffff1e5c: e5900000 ldr r0, [r0]
ffff1e60: eb00011f bl f_22e4
ffff1e64: e3160001 tst r6, #1
ffff1e68: 0a000008 beq 0xffff1e90
ffff1e6c: e3a01001 mov r1, #1
ffff1e70: e51f070c ldr r0, =0x7d00
ffff1e74: e5900000 ldr r0, [r0]
ffff1e78: eb000119 bl f_22e4
ffff1e7c: e3a00000 mov r0, #0
ffff1e80: e51f171c ldr r1, =0x7d00
ffff1e84: e5911000 ldr r1, [r1]
ffff1e88: e5911024 ldr r1, [r1, #36] ; 0x24
ffff1e8c: e5810030 str r0, [r1, #48] ; 0x30
ffff1e90: e3170001 tst r7, #1
ffff1e94: 0a000006 beq 0xffff1eb4
ffff1e98: e3a01001 mov r1, #1
ffff1e9c: e51f0738 ldr r0, =0x7d00
ffff1ea0: e5900000 ldr r0, [r0]
ffff1ea4: eb000106 bl f_22c4
ffff1ea8: e51f0744 ldr r0, =0x7d00
ffff1eac: e5900000 ldr r0, [r0]
ffff1eb0: ebfffe91 bl f_18fc
ffff1eb4: e3a05001 mov r5, #1
ffff1eb8: ea00001b b 0xffff1f2c
ffff1ebc: e3a00001 mov r0, #1
ffff1ec0: e1a09510 lsl r9, r0, r5
ffff1ec4: e1170009 tst r7, r9
ffff1ec8: 0a000016 beq 0xffff1f28
ffff1ecc: e3a0a000 mov sl, #0
ffff1ed0: e20910ff and r1, r9, #255 ; 0xff
ffff1ed4: e51f0770 ldr r0, =0x7d00
ffff1ed8: e5900000 ldr r0, [r0]
ffff1edc: eb0000f8 bl f_22c4
ffff1ee0: e3a0a001 mov sl, #1
ffff1ee4: ea00000c b 0xffff1f1c
ffff1ee8: e51f0784 ldr r0, =0x7d00
ffff1eec: e5900000 ldr r0, [r0]
ffff1ef0: e5900024 ldr r0, [r0, #36] ; 0x24
ffff1ef4: e080020a add r0, r0, sl, lsl #4
ffff1ef8: e5d00005 ldrb r0, [r0, #5]
ffff1efc: e2000080 and r0, r0, #128 ; 0x80
ffff1f00: e3500080 cmp r0, #128 ; 0x80
ffff1f04: 1a000003 bne 0xffff1f18
ffff1f08: e1a0100a mov r1, sl
ffff1f0c: e51f07a8 ldr r0, =0x7d00
ffff1f10: e5900000 ldr r0, [r0]
ffff1f14: ebffff3a bl f_1c04
ffff1f18: e28aa001 add sl, sl, #1
ffff1f1c: e35a0003 cmp sl, #3
ffff1f20: bafffff0 blt 0xffff1ee8
ffff1f24: e320f000 nop {0}
ffff1f28: e2855001 add r5, r5, #1
ffff1f2c: e3550005 cmp r5, #5
ffff1f30: daffffe1 ble 0xffff1ebc
ffff1f34: e3a05001 mov r5, #1
ffff1f38: ea000020 b 0xffff1fc0
ffff1f3c: e3a00001 mov r0, #1
ffff1f40: e1a09510 lsl r9, r0, r5
ffff1f44: e1180009 tst r8, r9
ffff1f48: 0a00001b beq 0xffff1fbc
ffff1f4c: e3a00000 mov r0, #0
ffff1f50: e1a0a000 mov sl, r0
ffff1f54: e51f27f0 ldr r2, =0x7d00
ffff1f58: e20910ff and r1, r9, #255 ; 0xff
ffff1f5c: e5920000 ldr r0, [r2]
ffff1f60: e590203c ldr r2, [r0, #60] ; 0x3c
ffff1f64: e1c22001 bic r2, r2, r1
ffff1f68: e580203c str r2, [r0, #60] ; 0x3c
ffff1f6c: e51f281c ldr r2, =USB0_BASE
ffff1f70: e5c21046 strb r1, [r2, #70] ; 0x46
ffff1f74: e320f000 nop {0}
ffff1f78: e3a0a001 mov sl, #1
ffff1f7c: ea00000b b 0xffff1fb0
ffff1f80: e51f081c ldr r0, =0x7d00
ffff1f84: e5900000 ldr r0, [r0]
ffff1f88: e5900024 ldr r0, [r0, #36] ; 0x24
ffff1f8c: e080020a add r0, r0, sl, lsl #4
ffff1f90: e5d00005 ldrb r0, [r0, #5]
ffff1f94: e3100080 tst r0, #128 ; 0x80
ffff1f98: 1a000003 bne 0xffff1fac
ffff1f9c: e1a0100a mov r1, sl
ffff1fa0: e51f083c ldr r0, =0x7d00
ffff1fa4: e5900000 ldr r0, [r0]
ffff1fa8: ebffff15 bl f_1c04
ffff1fac: e28aa001 add sl, sl, #1
ffff1fb0: e35a0003 cmp sl, #3
ffff1fb4: bafffff1 blt 0xffff1f80
ffff1fb8: e320f000 nop {0}
ffff1fbc: e2855001 add r5, r5, #1
ffff1fc0: e3550005 cmp r5, #5
ffff1fc4: daffffdc ble 0xffff1f3c
ffff1fc8: ebfffc31 bl f_NOP3
ffff1fcc: e51f187c ldr r1, =USB0_BASE
ffff1fd0: e5c14042 strb r4, [r1, #66] ; 0x42
ffff1fd4: e51f1870 ldr r1, =0x7d00
ffff1fd8: e5910000 ldr r0, [r1]
ffff1fdc: e3a01000 mov r1, #0
ffff1fe0: e5801040 str r1, [r0, #64] ; 0x40
ffff1fe4: e5801038 str r1, [r0, #56] ; 0x38
ffff1fe8: e580103c str r1, [r0, #60] ; 0x3c
ffff1fec: e320f000 nop {0}
ffff1ff0: eaffff94 b 0xffff1e48
fill_scratchpad:
ffff1ff4: e92d4010 push {r4, lr}
ffff1ff8: e3a02c01 mov r2, #0x100
ffff1ffc: e3a010cc mov r1, #0xcc
ffff2000: e3a00c7e ldr r0, =0x7e00
ffff2004: ebfff85a bl memset
ffff2008: e8bd8010 pop {r4, pc}
fel:
ffff200c: e92d4010 push {r4, lr}
ffff2010: e24ddd47 sub sp, sp, #4544 ; 0x11c0
ffff2014: ebfffff6 bl fill_scratchpad
ffff2018: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff201c: e2800f5f add r0, r0, #380 ; 0x17c
ffff2020: e51f18bc ldr r1, =0x7d00
ffff2024: e5810000 str r0, [r1]
ffff2028: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff202c: e2800f5a add r0, r0, #360 ; 0x168
ffff2030: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2034: e58c017c str r0, [ip, #380] ; 0x17c
ffff2038: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff203c: e2800f57 add r0, r0, #348 ; 0x15c
ffff2040: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2044: e58c0180 str r0, [ip, #384] ; 0x180
ffff2048: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff204c: e2800e15 add r0, r0, #336 ; 0x150
ffff2050: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2054: e58c0184 str r0, [ip, #388] ; 0x184
ffff2058: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff205c: e2800f52 add r0, r0, #328 ; 0x148
ffff2060: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2064: e58c0188 str r0, [ip, #392] ; 0x188
ffff2068: e28d0d45 add r0, sp, #4416 ; 0x1140
ffff206c: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2070: e58c018c str r0, [ip, #396] ; 0x18c
ffff2074: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2078: e2800f4e add r0, r0, #312 ; 0x138
ffff207c: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2080: e58c0190 str r0, [ip, #400] ; 0x190
ffff2084: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2088: e2800e13 add r0, r0, #304 ; 0x130
ffff208c: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2090: e58c0194 str r0, [ip, #404] ; 0x194
ffff2094: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2098: e2800f4a add r0, r0, #296 ; 0x128
ffff209c: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20a0: e58c0198 str r0, [ip, #408] ; 0x198
ffff20a4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20a8: e2800e12 add r0, r0, #288 ; 0x120
ffff20ac: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20b0: e58c019c str r0, [ip, #412] ; 0x19c
ffff20b4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20b8: e28000d8 add r0, r0, #216 ; 0xd8
ffff20bc: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20c0: e58c01a0 str r0, [ip, #416] ; 0x1a0
ffff20c4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20c8: e28000bc add r0, r0, #188 ; 0xbc
ffff20cc: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20d0: e58c01a4 str r0, [ip, #420] ; 0x1a4
ffff20d4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20d8: e28000a0 add r0, r0, #160 ; 0xa0
ffff20dc: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20e0: e58c01a8 str r0, [ip, #424] ; 0x1a8
ffff20e4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20e8: e2800084 add r0, r0, #132 ; 0x84
ffff20ec: e28dca01 add ip, sp, #4096 ; 0x1000
ffff20f0: e58c01ac str r0, [ip, #428] ; 0x1ac
ffff20f4: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff20f8: e2800068 add r0, r0, #104 ; 0x68
ffff20fc: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2100: e58c01b0 str r0, [ip, #432] ; 0x1b0
ffff2104: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2108: e2800f6d add r0, r0, #436 ; 0x1b4
ffff210c: ebfffd41 bl f_1618
ffff2110: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2114: e2800f5a add r0, r0, #360 ; 0x168
ffff2118: ebfffa18 bl f_0980
ffff211c: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2120: e2800f57 add r0, r0, #348 ; 0x15c
ffff2124: ebfffa2e bl f_09e4
ffff2128: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff212c: e2800e15 add r0, r0, #336 ; 0x150
ffff2130: ebfffa3b bl f_0a24
ffff2134: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2138: e2800f52 add r0, r0, #328 ; 0x148
ffff213c: ebfffa48 bl f_0a64
ffff2140: e28d0d45 add r0, sp, #4416 ; 0x1140
ffff2144: ebfffa53 bl f_0a98
ffff2148: e28d2a01 add r2, sp, #4096 ; 0x1000
ffff214c: e2822f52 add r2, r2, #328 ; 0x148
ffff2150: e28d1d45 add r1, sp, #4416 ; 0x1140
ffff2154: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2158: e2800f4e add r0, r0, #312 ; 0x138
ffff215c: ebfffa5a bl f_0acc
ffff2160: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2164: e2800e13 add r0, r0, #304 ; 0x130
ffff2168: ebfffa5a bl f_NOP4
ffff216c: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2170: e2800f4a add r0, r0, #296 ; 0x128
ffff2174: ebfffa58 bl f_NOP5
ffff2178: e28d2a01 add r2, sp, #4096 ; 0x1000
ffff217c: e2822e13 add r2, r2, #304 ; 0x130
ffff2180: e28d1a01 add r1, sp, #4096 ; 0x1000
ffff2184: e2811f4a add r1, r1, #296 ; 0x128
ffff2188: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff218c: e2800e12 add r0, r0, #288 ; 0x120
ffff2190: ebfffa52 bl f_NOP6
ffff2194: e28d2d45 add r2, sp, #4416 ; 0x1140
ffff2198: e28d1a01 add r1, sp, #4096 ; 0x1000
ffff219c: e2811f52 add r1, r1, #328 ; 0x148
ffff21a0: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff21a4: e28000d8 add r0, r0, #216 ; 0xd8
ffff21a8: ebfffa4d bl f_0ae4
ffff21ac: e28d3a01 add r3, sp, #4096 ; 0x1000
ffff21b0: e2833084 add r3, r3, #132 ; 0x84
ffff21b4: e28d2a01 add r2, sp, #4096 ; 0x1000
ffff21b8: e2822068 add r2, r2, #104 ; 0x68
ffff21bc: e28d1068 add r1, sp, #104 ; 0x68
ffff21c0: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff21c4: e28000bc add r0, r0, #188 ; 0xbc
ffff21c8: ebfffa6b bl f_0b7c
ffff21cc: e28d1024 add r1, sp, #36 ; 0x24
ffff21d0: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff21d4: e28000a0 add r0, r0, #160 ; 0xa0
ffff21d8: ebfffa71 bl f_0ba4
ffff21dc: e28d1068 add r1, sp, #104 ; 0x68
ffff21e0: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff21e4: e2800084 add r0, r0, #132 ; 0x84
ffff21e8: ebfffa84 bl f_0c00
ffff21ec: e28d1068 add r1, sp, #104 ; 0x68
ffff21f0: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff21f4: e2800068 add r0, r0, #104 ; 0x68
ffff21f8: ebfffa74 bl f_0bd0
ffff21fc: e28dca01 add ip, sp, #4096 ; 0x1000
ffff2200: e28d3a01 add r3, sp, #4096 ; 0x1000
ffff2204: e2833084 add r3, r3, #132 ; 0x84
ffff2208: e28d2a01 add r2, sp, #4096 ; 0x1000
ffff220c: e2822068 add r2, r2, #104 ; 0x68
ffff2210: e28d1a01 add r1, sp, #4096 ; 0x1000
ffff2214: e28110a0 add r1, r1, #160 ; 0xa0
ffff2218: e59c01a0 ldr r0, [ip, #416] ; 0x1a0
ffff221c: ebfffa83 bl f_0c30
ffff2220: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2224: e2800f5f add r0, r0, #380 ; 0x17c
ffff2228: ebfff9c4 bl f_0940
ffff222c: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff2230: e2800f5f add r0, r0, #380 ; 0x17c
ffff2234: ebfffb55 bl f_0f90
ffff2238: e28d0a01 add r0, sp, #4096 ; 0x1000
ffff223c: e2800f5f add r0, r0, #380 ; 0x17c
ffff2240: ebfff9a6 bl fel_main_loop
ffff2244: e28ddd47 add sp, sp, #4544 ; 0x11c0
ffff2248: e8bd8010 pop {r4, pc}
f_224c:
ffff224c: e92d4070 push {r4, r5, r6, lr}
ffff2250: e1a04000 mov r4, r0
ffff2254: e3a05000 mov r5, #0
ffff2258: e3046e20 movw r6, #20000 ; 0x4e20
ffff225c: e5940024 ldr r0, [r4, #36] ; 0x24
ffff2260: e2805020 add r5, r0, #32
ffff2264: e5d50004 ldrb r0, [r5, #4]
ffff2268: ebfff9be bl set_epind
ffff226c: ea00000a b 0xffff229c
ffff2270: e51f0b20 ldr r0, =USB0_BASE
ffff2274: e1d008b2 ldrh r0, [r0, #130] ; 0x82 = USB0_CSR0
ffff2278: e3100001 tst r0, #1 ; RX_PKT_READY
ffff227c: 1a000001 bne 0xffff2288
ffff2280: e3a00001 mov r0, #1
ffff2284: e8bd8070 pop {r4, r5, r6, pc}
ffff2288: e3560000 cmp r6, #0
ffff228c: 1a000001 bne 0xffff2298
ffff2290: e3a00002 mov r0, #2
ffff2294: eafffffa b 0xffff2284
ffff2298: e2466001 sub r6, r6, #1
ffff229c: eafffff3 b 0xffff2270
f_22a0:
ffff22a0: e1a01000 mov r1, r0
ffff22a4: e5910040 ldr r0, [r1, #64] ; 0x40
ffff22a8: e3500000 cmp r0, #0
ffff22ac: 1a000002 bne 0xffff22bc
ffff22b0: e51f0b60 ldr r0, =USB0_BASE
ffff22b4: e5d0004c ldrb r0, [r0, #76] ; 0x4c
ffff22b8: e5810040 str r0, [r1, #64] ; 0x40
ffff22bc: e5910040 ldr r0, [r1, #64] ; 0x40
ffff22c0: e12fff1e bx lr
f_22c4:
ffff22c4: e1a02000 mov r2, r0
ffff22c8: e5920038 ldr r0, [r2, #56] ; 0x38
ffff22cc: e1c00001 bic r0, r0, r1
ffff22d0: e5820038 str r0, [r2, #56] ; 0x38
ffff22d4: e51f0b84 ldr r0, =USB0_BASE
ffff22d8: e5c01044 strb r1, [r0, #68] ; 0x44
ffff22dc: e3a00000 mov r0, #0
ffff22e0: e12fff1e bx lr
f_22e4:
ffff22e4: e1a02000 mov r2, r0
ffff22e8: e5920040 ldr r0, [r2, #64] ; 0x40
ffff22ec: e1c00001 bic r0, r0, r1
ffff22f0: e5820040 str r0, [r2, #64] ; 0x40
ffff22f4: e51f0ba4 ldr r0, =USB0_BASE
ffff22f8: e5c0104c strb r1, [r0, #76] ; 0x4c
ffff22fc: e3a00000 mov r0, #0
ffff2300: e12fff1e bx lr
f_2304:
ffff2304: e92d4070 push {r4, r5, r6, lr}
ffff2308: e1a03000 mov r3, r0
ffff230c: e3a00000 mov r0, #0
ffff2310: e5915000 ldr r5, [r1]
ffff2314: e5916010 ldr r6, [r1, #16]
ffff2318: e0854006 add r4, r5, r6
ffff231c: e5915004 ldr r5, [r1, #4]
ffff2320: e5916010 ldr r6, [r1, #16]
ffff2324: e0455006 sub r5, r5, r6
ffff2328: e1550002 cmp r5, r2
ffff232c: 2a000003 bcs 0xffff2340
ffff2330: e5915004 ldr r5, [r1, #4]
ffff2334: e5916010 ldr r6, [r1, #16]
ffff2338: e0455006 sub r5, r5, r6
ffff233c: ea000000 b 0xffff2344
ffff2340: e1a05002 mov r5, r2
ffff2344: e1a00005 mov r0, r5
ffff2348: e5915010 ldr r5, [r1, #16]
ffff234c: e0855000 add r5, r5, r0
ffff2350: e5815010 str r5, [r1, #16]
ffff2354: e1a02000 mov r2, r0
ffff2358: ea000001 b 0xffff2364
ffff235c: e4d45001 ldrb r5, [r4], #1
ffff2360: e5c35000 strb r5, [r3]
ffff2364: e1b05002 movs r5, r2
ffff2368: e2422001 sub r2, r2, #1
ffff236c: 1afffffa bne 0xffff235c
ffff2370: e8bd8070 pop {r4, r5, r6, pc}
f_2374:
ffff2374: e92d40f0 push {r4, r5, r6, r7, lr}
ffff2378: e1a04000 mov r4, r0
ffff237c: e3a06000 mov r6, #0
ffff2380: e5925004 ldr r5, [r2, #4]
ffff2384: e5927010 ldr r7, [r2, #16]
ffff2388: e0455007 sub r5, r5, r7
ffff238c: e1550003 cmp r5, r3
ffff2390: 2a000003 bcs 0xffff23a4
ffff2394: e5925004 ldr r5, [r2, #4]
ffff2398: e5927010 ldr r7, [r2, #16]
ffff239c: e0455007 sub r5, r5, r7
ffff23a0: ea000000 b 0xffff23a8
ffff23a4: e1a05003 mov r5, r3
ffff23a8: e1a00005 mov r0, r5
ffff23ac: e5925010 ldr r5, [r2, #16]
ffff23b0: e0855000 add r5, r5, r0
ffff23b4: e5825010 str r5, [r2, #16]
ffff23b8: e1a03000 mov r3, r0
ffff23bc: e1a00003 mov r0, r3
ffff23c0: e3530004 cmp r3, #4
ffff23c4: 9a00000a bls 0xffff23f4
ffff23c8: ea000005 b 0xffff23e4
ffff23cc: e5d45000 ldrb r5, [r4]
ffff23d0: e5c15000 strb r5, [r1]
ffff23d4: e3560008 cmp r6, #8
ffff23d8: 2a000000 bcs 0xffff23e0
ffff23dc: e2866001 add r6, r6, #1
ffff23e0: e2811001 add r1, r1, #1
ffff23e4: e1b05003 movs r5, r3
ffff23e8: e2433001 sub r3, r3, #1
ffff23ec: 1afffff6 bne 0xffff23cc
ffff23f0: ea000013 b 0xffff2444
ffff23f4: e1a05001 mov r5, r1
ffff23f8: e1a07001 mov r7, r1
ffff23fc: e3530004 cmp r3, #4
ffff2400: 1a000002 bne 0xffff2410
ffff2404: e594c000 ldr ip, [r4]
ffff2408: e585c000 str ip, [r5]
ffff240c: ea00000b b 0xffff2440
ffff2410: e3530002 cmp r3, #2
ffff2414: 1a000002 bne 0xffff2424
ffff2418: e1d4c0b0 ldrh ip, [r4]
ffff241c: e1c7c0b0 strh ip, [r7]
ffff2420: ea000006 b 0xffff2440
ffff2424: ea000002 b 0xffff2434
ffff2428: e5d4c000 ldrb ip, [r4]
ffff242c: e5c1c000 strb ip, [r1]
ffff2430: e2811001 add r1, r1, #1
ffff2434: e1b0c003 movs ip, r3
ffff2438: e2433001 sub r3, r3, #1
ffff243c: 1afffff9 bne 0xffff2428
ffff2440: e320f000 nop {0}
ffff2444: e8bd80f0 pop {r4, r5, r6, r7, pc}
f_2448:
ffff2448: e92d4030 push {r4, r5, lr}
ffff244c: e3a03000 mov r3, #0
ffff2450: e3a01000 mov r1, #0
ffff2454: e3a02000 mov r2, #0
ffff2458: e1a03a20 lsr r3, r0, #20
ffff245c: e3a05802 mov r5, #131072 ; 0x20000
ffff2460: e0852103 add r2, r5, r3, lsl #2
ffff2464: e5921000 ldr r1, [r2]
ffff2468: e307400c movw r4, #28684 ; 0x700c
ffff246c: e1c11004 bic r1, r1, r4
ffff2470: e3811a01 orr r1, r1, #4096 ; 0x1000
ffff2474: e5821000 str r1, [r2]
ffff2478: e8bd8030 pop {r4, r5, pc}
f_247c:
ffff247c: e3a00000 mov r0, #0
ffff2480: e3a02802 mov r2, #131072 ; 0x20000
ffff2484: e3a01000 mov r1, #0
ffff2488: e320f000 nop {0}
ffff248c: ea000006 b 0xffff24ac
ffff2490: e3a01000 mov r1, #0
ffff2494: e1811a00 orr r1, r1, r0, lsl #20
ffff2498: e3003de2 movw r3, #3554 ; 0xde2
ffff249c: e1811003 orr r1, r1, r3
ffff24a0: e5821000 str r1, [r2]
ffff24a4: e2822004 add r2, r2, #4
ffff24a8: e2800001 add r0, r0, #1
ffff24ac: e3500a01 cmp r0, #4096 ; 0x1000
ffff24b0: 3afffff6 bcc 0xffff2490
ffff24b4: e12fff1e bx lr
f_24b8:
ffff24b8: e92d4010 push {r4, lr}
ffff24bc: e3a00000 mov r0, #0
ffff24c0: ebffffe0 bl f_2448
ffff24c4: e59f0014 ldr r0, =0xfff00000
ffff24c8: ebffffde bl f_2448
ffff24cc: e8bd8010 pop {r4, pc}
f_24d0:
ffff24d0: e92d4010 push {r4, lr}
ffff24d4: ebffffe8 bl f_247c
ffff24d8: ebfffff6 bl f_24b8
ffff24dc: e8bd8010 pop {r4, pc}
f_24e4:
ffff24e4: e3520003 cmp r2, #3
ffff24e8: 9a000017 bls 0xffff254c
ffff24ec: e210c003 ands ip, r0, #3
ffff24f0: 0a000008 beq 0xffff2518
ffff24f4: e4d13001 ldrb r3, [r1], #1
ffff24f8: e35c0002 cmp ip, #2
ffff24fc: e082200c add r2, r2, ip
ffff2500: 94d1c001 ldrbls ip, [r1], #1
ffff2504: e4c03001 strb r3, [r0], #1
ffff2508: 34d13001 ldrbcc r3, [r1], #1
ffff250c: 94c0c001 strbls ip, [r0], #1
ffff2510: e2422004 sub r2, r2, #4
ffff2514: 34c03001 strbcc r3, [r0], #1
ffff2518: e2113003 ands r3, r1, #3
ffff251c: 0a000012 beq 0xffff256c
ffff2520: e2522008 subs r2, r2, #8
ffff2524: 3a000004 bcc 0xffff253c
ffff2528: e4913004 ldr r3, [r1], #4
ffff252c: e491c004 ldr ip, [r1], #4
ffff2530: e4803004 str r3, [r0], #4
ffff2534: e480c004 str ip, [r0], #4
ffff2538: eafffff8 b 0xffff2520
ffff253c: e2922004 adds r2, r2, #4
ffff2540: 54913004 ldrpl r3, [r1], #4
ffff2544: 54803004 strpl r3, [r0], #4
ffff2548: e1a00000 nop ; (mov r0, r0)
ffff254c: e1b02f82 lsls r2, r2, #31
ffff2550: 24d13001 ldrbcs r3, [r1], #1
ffff2554: 24d1c001 ldrbcs ip, [r1], #1
ffff2558: 44d12001 ldrbmi r2, [r1], #1
ffff255c: 24c03001 strbcs r3, [r0], #1
ffff2560: 24c0c001 strbcs ip, [r0], #1
ffff2564: 44c02001 strbmi r2, [r0], #1
ffff2568: e12fff1e bx lr
ffff256c: e92d41f0 push {r4, r5, r6, r7, r8, lr}
ffff2570: e2522020 subs r2, r2, #32
ffff2574: 3a00000d bcc 0xffff25b0
ffff2578: e3520e12 cmp r2, #288 ; 0x120
ffff257c: 3a000007 bcc 0xffff25a0
ffff2580: f5d1f100 pld [r1, #256] ; 0x100
ffff2584: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff2588: e2422040 sub r2, r2, #64 ; 0x40
ffff258c: e3520e12 cmp r2, #288 ; 0x120
ffff2590: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff2594: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff2598: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff259c: 2afffff7 bcs 0xffff2580
ffff25a0: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff25a4: e2522020 subs r2, r2, #32
ffff25a8: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr}
ffff25ac: 2afffffb bcs 0xffff25a0
ffff25b0: e1b0ce02 lsls ip, r2, #28
ffff25b4: 28b15018 ldmcs r1!, {r3, r4, ip, lr}
ffff25b8: 28a05018 stmiacs r0!, {r3, r4, ip, lr}
ffff25bc: 48b10018 ldmmi r1!, {r3, r4}
ffff25c0: 48a00018 stmiami r0!, {r3, r4}
ffff25c4: e8bd41f0 pop {r4, r5, r6, r7, r8, lr}
ffff25c8: e1b0cf02 lsls ip, r2, #30
ffff25cc: 24913004 ldrcs r3, [r1], #4
ffff25d0: 24803004 strcs r3, [r0], #4
ffff25d4: 012fff1e bxeq lr
ffff25d8: e1b02f82 lsls r2, r2, #31
ffff25dc: 20d130b2 ldrhcs r3, [r1], #2
ffff25e0: 44d12001 ldrbmi r2, [r1], #1
ffff25e4: 20c030b2 strhcs r3, [r0], #2
ffff25e8: 44c02001 strbmi r2, [r0], #1
ffff25ec: e12fff1e bx lr
ffff25f0: e92d4001 push {r0, lr}
ffff25f4: ebffffff bl f_25f8
f_25f8:
ffff25f8: ebffffff bl f_25fc
f_25fc:
ffff25fc: ebffffff bl f_2600
f_2600:
ffff2600: ebffffff bl f_2604
f_2604:
ffff2604: ebffffff bl f_2608
f_2608:
ffff2608: ebffffff bl f_260c
f_260c:
ffff260c: ebffffff bl f_2610
f_2610:
ffff2610: ebffffff bl f_2614
f_2614:
ffff2614: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff2618: e3800b02 orr r0, r0, #2048 ; 0x800
ffff261c: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff2620: e8bd4001 pop {r0, lr}
ffff2624: e1a0f00e mov pc, lr
ffff2628: e92d4001 push {r0, lr}
ffff262c: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff2630: e3800a01 orr r0, r0, #4096 ; 0x1000
ffff2634: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff2638: e8bd4001 pop {r0, lr}
ffff263c: e1a0f00e mov pc, lr
ffff2640: e92d4001 push {r0, lr}
ffff2644: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff2648: e3800004 orr r0, r0, #4
ffff264c: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff2650: e8bd4001 pop {r0, lr}
ffff2654: e1a0f00e mov pc, lr
ffff2658: e92d4001 push {r0, lr}
ffff265c: ee110f30 mrc 15, 0, r0, cr1, cr0, {1}
ffff2660: e3800002 orr r0, r0, #2
ffff2664: ee010f30 mcr 15, 0, r0, cr1, cr0, {1}
ffff2668: e8bd4001 pop {r0, lr}
ffff266c: e1a0f00e mov pc, lr
ffff2670: e92d4001 push {r0, lr}
ffff2674: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff2678: e3800001 orr r0, r0, #1
ffff267c: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff2680: e8bd4001 pop {r0, lr}
ffff2684: e1a0f00e mov pc, lr
ffff2688: e92d4001 push {r0, lr}
ffff268c: ee110f30 mrc 15, 0, r0, cr1, cr0, {1}
ffff2690: e3c00002 bic r0, r0, #2
ffff2694: ee010f30 mcr 15, 0, r0, cr1, cr0, {1}
ffff2698: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff269c: e3c00001 bic r0, r0, #1
ffff26a0: e3c00b02 bic r0, r0, #2048 ; 0x800
ffff26a4: e3c00a01 bic r0, r0, #4096 ; 0x1000
ffff26a8: e3c00004 bic r0, r0, #4
ffff26ac: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff26b0: e8bd4001 pop {r0, lr}
ffff26b4: e1a0f00e mov pc, lr
f_26b8:
ffff26b8: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff26bc: ee300f30 mrc 15, 1, r0, cr0, cr0, {1}
ffff26c0: e2103407 ands r3, r0, #117440512 ; 0x7000000
ffff26c4: e1a03ba3 lsr r3, r3, #23
ffff26c8: 0a00001a beq 0xffff2738
ffff26cc: e3a0a000 mov sl, #0
ffff26d0: e08a20aa add r2, sl, sl, lsr #1
ffff26d4: e1a01230 lsr r1, r0, r2
ffff26d8: e2011007 and r1, r1, #7
ffff26dc: e3510002 cmp r1, #2
ffff26e0: ba000011 blt 0xffff272c
ffff26e4: ee40af10 mcr 15, 2, sl, cr0, cr0, {0}
ffff26e8: f57ff06f isb sy
ffff26ec: ee301f10 mrc 15, 1, r1, cr0, cr0, {0}
ffff26f0: e2012007 and r2, r1, #7
ffff26f4: e2822004 add r2, r2, #4
ffff26f8: e30043ff movw r4, #1023 ; 0x3ff
ffff26fc: e01441a1 ands r4, r4, r1, lsr #3
ffff2700: e16f5f14 clz r5, r4
ffff2704: e3077fff movw r7, #32767 ; 0x7fff
ffff2708: e01776a1 ands r7, r7, r1, lsr #13
ffff270c: e1a09004 mov r9, r4
ffff2710: e18ab519 orr fp, sl, r9, lsl r5
ffff2714: e18bb217 orr fp, fp, r7, lsl r2
ffff2718: ee07bf5e mcr 15, 0, fp, cr7, cr14, {2}
ffff271c: e2599001 subs r9, r9, #1
ffff2720: aafffffa bge 0xffff2710
ffff2724: e2577001 subs r7, r7, #1
ffff2728: aafffff7 bge 0xffff270c
ffff272c: e28aa002 add sl, sl, #2
ffff2730: e153000a cmp r3, sl
ffff2734: caffffe5 bgt 0xffff26d0
ffff2738: e3a0a000 mov sl, #0
ffff273c: ee40af10 mcr 15, 2, sl, cr0, cr0, {0}
ffff2740: f57ff06f isb sy
ffff2744: e8bd5fff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff2748: e1a0f00e mov pc, lr
f_274c:
ffff274c: e92d0003 push {r0, r1}
ffff2750: e3a00000 mov r0, #0
ffff2754: ee070f15 mcr 15, 0, r0, cr7, cr5, {0}
ffff2758: e8bd0003 pop {r0, r1}
ffff275c: e1a0f00e mov pc, lr
ffff2760: e92d4001 push {r0, lr}
ffff2764: ebfffff8 bl f_274c
ffff2768: ebffffd2 bl f_26b8
ffff276c: e8bd4001 pop {r0, lr}
ffff2770: e1a0f00e mov pc, lr
ffff2774: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff2778: e3a02040 mov r2, #64 ; 0x40
ffff277c: e2423001 sub r3, r2, #1
ffff2780: e1c00003 bic r0, r0, r3
ffff2784: ee070f3b mcr 15, 0, r0, cr7, cr11, {1}
ffff2788: f57ff04f dsb sy
ffff278c: ee070f35 mcr 15, 0, r0, cr7, cr5, {1}
ffff2790: e0800002 add r0, r0, r2
ffff2794: e1500001 cmp r0, r1
ffff2798: 3afffff9 bcc 0xffff2784
ffff279c: e3a00000 mov r0, #0
ffff27a0: ee070fd5 mcr 15, 0, r0, cr7, cr5, {6}
ffff27a4: f57ff04f dsb sy
ffff27a8: f57ff06f isb sy
ffff27ac: e8bd5fff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff27b0: e1a0f00e mov pc, lr
ffff27b4: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff27b8: e3a02040 mov r2, #64 ; 0x40
ffff27bc: e2423001 sub r3, r2, #1
ffff27c0: e1c00003 bic r0, r0, r3
ffff27c4: ee070f3e mcr 15, 0, r0, cr7, cr14, {1}
ffff27c8: e0800002 add r0, r0, r2
ffff27cc: e1500001 cmp r0, r1
ffff27d0: 3afffffb bcc 0xffff27c4
ffff27d4: f57ff04f dsb sy
ffff27d8: e8bd5fff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff27dc: e1a0f00e mov pc, lr
ffff27e0: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff27e4: e3a02040 mov r2, #64 ; 0x40
ffff27e8: e2423001 sub r3, r2, #1
ffff27ec: e1c00003 bic r0, r0, r3
ffff27f0: ee070f3a mcr 15, 0, r0, cr7, cr10, {1}
ffff27f4: e0800002 add r0, r0, r2
ffff27f8: e1500001 cmp r0, r1
ffff27fc: 3afffffb bcc 0xffff27f0
ffff2800: f57ff04f dsb sy
ffff2804: e8bd5fff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff2808: e1a0f00e mov pc, lr
ffff280c: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff2810: e3a02040 mov r2, #64 ; 0x40
ffff2814: e2423001 sub r3, r2, #1
ffff2818: e1100003 tst r0, r3
ffff281c: e1c00003 bic r0, r0, r3
ffff2820: 1e070f3e mcrne 15, 0, r0, cr7, cr14, {1}
ffff2824: e1110003 tst r1, r3
ffff2828: e1c11003 bic r1, r1, r3
ffff282c: 1e071f3e mcrne 15, 0, r1, cr7, cr14, {1}
ffff2830: ee070f36 mcr 15, 0, r0, cr7, cr6, {1}
ffff2834: e0800002 add r0, r0, r2
ffff2838: e1500001 cmp r0, r1
ffff283c: 3afffffb bcc 0xffff2830
ffff2840: f57ff04f dsb sy
ffff2844: e8bd5fff pop {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
ffff2848: e1a0f00e mov pc, lr
ffff284c: e92d4001 push {r0, lr}
ffff2850: e3a00000 mov r0, #0
ffff2854: ee080f15 mcr 15, 0, r0, cr8, cr5, {0}
ffff2858: ee080f16 mcr 15, 0, r0, cr8, cr6, {0}
ffff285c: e8bd4001 pop {r0, lr}
ffff2860: e1a0f00e mov pc, lr
ffff2864: e92d4001 push {r0, lr}
ffff2868: e10f0000 mrs r0, CPSR
ffff286c: e3c01080 bic r1, r0, #128 ; 0x80
ffff2870: e121f001 msr CPSR_c, r1
ffff2874: e8bd4001 pop {r0, lr}
ffff2878: e1a0f00e mov pc, lr
ffff287c: e92d4001 push {r0, lr}
ffff2880: e10f0000 mrs r0, CPSR
ffff2884: e3801080 orr r1, r0, #128 ; 0x80
ffff2888: e121f001 msr CPSR_c, r1
ffff288c: e8bd4001 pop {r0, lr}
ffff2890: e1a0f00e mov pc, lr
ffff2894: e92d4001 push {r0, lr}
ffff2898: e10f0000 mrs r0, CPSR
ffff289c: e3c01040 bic r1, r0, #64 ; 0x40
ffff28a0: e121f001 msr CPSR_c, r1
ffff28a4: e8bd4001 pop {r0, lr}
ffff28a8: e1a0f00e mov pc, lr
ffff28ac: e92d4001 push {r0, lr}
ffff28b0: e10f0000 mrs r0, CPSR
ffff28b4: e3801040 orr r1, r0, #64 ; 0x40
ffff28b8: e121f001 msr CPSR_c, r1
ffff28bc: e8bd4001 pop {r0, lr}
ffff28c0: e1a0f00e mov pc, lr
ffff28c4: e92d4001 push {r0, lr}
ffff28c8: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff28cc: e3800a02 orr r0, r0, #8192 ; 0x2000
ffff28d0: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff28d4: e8bd4001 pop {r0, lr}
ffff28d8: e1a0f00e mov pc, lr
ffff28dc: e92d4001 push {r0, lr}
ffff28e0: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}
ffff28e4: e3c00a02 bic r0, r0, #8192 ; 0x2000
ffff28e8: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}
ffff28ec: e8bd4001 pop {r0, lr}
ffff28f0: e1a0f00e mov pc, lr