Skip to content

Instantly share code, notes, and snippets.

@wgwoods
Last active May 15, 2021 04:11
Show Gist options
  • Save wgwoods/2e31d1558a85e39f05b0ad5e939efb84 to your computer and use it in GitHub Desktop.
Save wgwoods/2e31d1558a85e39f05b0ad5e939efb84 to your computer and use it in GitHub Desktop.
nds32 disassembly of GK64 firmware update image BBD8
; vim: syn=asm:
;
; Hello and welcome to my hand-annotated disassembly of my GK64's firmware!!
;
; Please forgive the formatting and such, this is really just a bunch of my
; own notes that I wrote up while trying to RE this thing. I'm not an expert
; or an authority, I'm just trying to figure out how this thing works.
;
; If you have any questions, or better datasheets, or more info about the
; keyboard hardware itself (especially if you've got probes small enough
; to figure out where all the dang MCU pins are actually going, jeez)
; please do feel free to contact me. I could definitely use the help...
;
; Will Woods <w@wizard.zone> 15 Jan 2019
;
; -------- MEMORY_MAP --------
;
; According to a WT59F164 datasheet I found online, the memory layout is:
; 0x00000000 ~ 0x0000ffff: Flash Memory (64kb)
; 0x00100000 ~ 0x00101fff: SRAM (8kb)
; 0x001f5c00 ~ 0x001f63ff: PWM0-1 (0x400 each)
; 0x001f6800 ~ 0x001f6bff: GPIO A-D (0x80 each)
; 0x00200000 ~ 0x002003ff: System Control
; 0x00200400 ~ 0x002007ff: Flash Programmer
; 0x00200800 ~ 0x00200bff: Watchdog Timer
; 0x00200c00 ~ 0x00200fff: Wakeup & Interrupt
; 0x00201000 ~ 0x002013ff: RTC
; 0x00201400 ~ 0x002017ff: CEC (HDMI)
; 0x00201800 ~ 0x00201bff: IR Receiver
; 0x00201c00 ~ 0x002033ff: Timer 0-5 (0x400 each)
; 0x00203400 ~ 0x00203fff: UART 0-2 (0x400 each)
; 0x00204400 ~ 0x00204bff: SPI 0-1 (0x400 each)
; 0x00205400 ~ 0x002057ff: I2C 0-1 (0x400 each)
; 0x00206400 ~ 0x002067ff: ADC
; 0x00206c00 ~ 0x00206fff: I2S
; 0x00207800 ~ 0x00207bff: USB
; 0x00300000 ~ 0x003003ff: DMA
; 0x00400000 ~ 0x00401fff: Boot ROM (8kb)
; [blank/unlisted memory ranges are "RESERVED"]
;
; -------- FIRMWARE_LAYOUT --------
;
; There's also a whole lot of reading/writing to various addresses and
; calling functions in the range 0xcaa4 ~ 0xdba4, which I assume is
; part of the system bootloader ("CDBOOT") and doesn't appear in this
; firmware dump. Here's a table of some of the more interesting addresses,
; with a count of how many times they appear in this dump:
;
; 0xcac8 (1): crc16 xor table, I think..
; 0xccd0 (5): ???
; 0xccd8 (5): ???
; 0xcd10 (36): timer? counter? memory-mapped LED I/O?
; 0xcd20 (5): ???
; 0xcd60 (6): ???
; 0xd9c0 (5): ???
; 0xdba4 (1): saved/default copy of global variables? (see below)
;
; One of my goals is to get a complete flash dump so I can figure out what
; the hell is going on with that stuff.
;
; -------- SRAM_LAYOUT --------
;
; At boot, the firmware sets up the stack/heap like so (see _entry()):
;
; [Start of SRAM]: 0x00100000
; $gp (global pointer): 0x001001c8
; [Heap grows to higher addrs]
; ...
; [Stack grows to lower addrs]
; $sp (stack pointer): 0x00101ffc
; [End of SRAM]: 0x00101fff
;
; Then init_interrupt_table() (q.v.) does:
;
; * memcpy(dest=0x00100000, src=0x0015f848, n=0x40)
; 0x00100000 ~ 0x00100040 are loaded with data from an unknown source, then
; *try* to set the system $ivb register to use that as the Interrupt Vector
; table. Except according to the datasheet, MCU-variant chips ignore the
; given address and always use 0x0, so who knows what's going on here.
;
; And then init_globals_and_heap():
;
; * memcpy(dest=$gp-392, src=0xdba4, n=396)
; 0x00100040 ~ 0x001001cc ($gp-392 ~ $gp+4) are loaded with some
; saved/default data from flash.
;
; * memset(dest=$gp+4, byte=0x00, n=0x194c)
; 0x001001cc ~ 0x00101b18 are cleared - presumably this is our heap.
;
; As far as I can tell, the stack "grows" downward (as usual). Most global
; variables live in the 0x1c8 bytes between 0x10000040 and $gp, and are
; generally indexed by their (negative) offset from $gp.
;
; Here's a table of interesting fixed offsets from $gp:
;
; #-152: boot_mode - a 32-bit magic value, selects boot mode on soft reset
; #-104: usb_ep2_intr: set to 1 when USB reports an interrupt on endpoint 2
; #-100: usb_ep3_intr: set to 1 when USB reports an interrupt on endpoint 3
; #-72: packet_in_progress: 1 if a packet is currently being handled
; #-38: 16-bit value (memory mapping offset?) used with values from [0xcd60]
; #0x38: 0xc8-byte buf of analog (microphone?) input; see setup_adc_dma()
; #0x870: pktbuf - a 64-byte buffer used in various packet handling routines
; #0x890: pktbufx? - another address used in packet handling?
; overlaps with packetbuf. hmm.
; #0x8b0: pktbuf2 - another 64-byte packet buffer
; #0x8f0: replypkt - cmd packet replies get build here.
; #0x978: tmppkt - USB handlers write incoming packets on EP4 here.
; #0x9c0: ringbuf - Ring buffer containing up to 5 outgoing packets.
; ringbuf[0] is the read-index (one byte)
; ringbuf[1] is the write-index (one byte)
; ringbuf+2 is slot 0 of the ringbuf
; (ringbuf+2)+(0x40*i) = address of ringbuf slot i
; #0xb34: validpkt - validate_packet copies tmppacket here, if valid
;
; (NOTE: disassembly shows negative values as decimal, not hex; I've kept that
; convention here to make it easier to grep for the exact values shown..
;
; -------- ENOUGH NOTES, LET'S LOOK AT THE DANG CODE --------
;
; Below here is the disassembly of the BBD8 firmware, which I made by:
; 1. Doing a wireshark packet dump of a firmware update,
; 2. Reverse-engineering the USB protocol to scrape the unscrambled BBD8.bin,
; 3. Grabbing a nds32 toolchain from Andes: http://knect.me/ide.html
; 4. `nds32le-linux-objdump -D -b binary -m n1h_v3m BBD8.usbdump.bin`
;
; Enjoy!
;
;--------------------------------------------------------------------------
;
; /home/wwoods/Projects/GK64/dumps/BBD8.usbdump.bin: file format binary
;
;
;Disassembly of section .data:
;
;00000000 <.data>:
; ---- The first 16 items are our interrupt vector table.
; ---- This matches the V2 architecture compatibility mode (MSC_CFG.BASEV == 1)
; ---- There are some wrinkles if we're in MCU family mode (MSC_CFG.MCU == 1), which is likely
0: 48 00 4f b2 j 0x9f64 ; Reset / NMI - this is our _entry()
4: 48 00 00 30 j 0x64 ; TLB fill
8: 48 00 00 2e j 0x64 ; PTE not present
c: 48 00 00 2c j 0x64 ; TLB misc
10: 48 00 00 2a j 0x64 ; TLB VLPT miss
14: 48 00 00 4a j 0xa8 ; Machine Error
18: 48 00 00 6a j 0xec ; Debug related
1c: 48 00 00 8a j 0x130 ; General Exception
20: 48 00 00 aa j 0x174 ; Syscall
24: 48 00 00 de j 0x1e0 ; HW0
28: 48 00 01 44 j 0x2b0 ; HW1
2c: 48 00 01 46 j 0x2b8 ; HW2
30: 48 00 01 48 j 0x2c0 ; HW3
34: 48 00 01 4a j 0x2c8 ; HW4
38: 48 00 01 4c j 0x2d0 ; HW5
3c: 48 00 01 4e j 0x2d8 ; SW0
; ---- End v2 vector table
; ---- This chunk of disassembly looks like nonsense and screws up disasm
; ---- for the function at 0x64 - I think it's a vector table in little-endian
; ---- format, so I've jiggled around those bytes accordingly and left them here..
; 40: 00 00 c9 94 ; 0xc994 shows up elsewhere too. Hmmmmmm...
; 44: 00 00 c9 94 ; Maybe these are unused defaults from template code?
; 48: 00 00 c9 94
; 4c: 00 00 2d 48 ; HW0 interrupt handler also calls 0x2d48
; 50: 00 00 c9 94
; 54: 00 00 2d 44
; 58: 00 00 2d 40
; 5c: 00 00 c9 94
; 60: 00 00 c9 94
; ---- Resume disassembly from 0x64, as suggested by the vector table
; ---- NOTE: the first four handlers are identical except for what value they set $r0 to
; --------------- 0x64: TLB fill, PTE not present, TLB misc, TLB VLPT miss
64: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
68: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
6c: 64 02 00 02 mfsr $r0,$psw
70: 64 12 a4 02 mfsr $r1,$ipc
74: 64 22 04 02 mfsr $r2,$ipsw
78: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
7c: 42 00 04 09 bclr $r0,$r0,#0x1
80: 64 02 00 03 mtsr $r0,$psw
84: 64 00 00 08 dsb
88: 50 2f 80 00 addi $r2,$sp,#0x0
8c: 54 1f 80 04 andi $r1,$sp,#0x4
90: 52 10 80 04 subri $r1,$r1,#0x4
94: 41 ff 84 01 sub $sp,$sp,$r1
98: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
9c: 46 f0 00 0c sethi $r15,#0xc
a0: 58 f7 89 94 ori $r15,$r15,#0x994
a4: 4a 00 3c 00 jr $r15 ; 0xc994 - unknown builtin handler, $r0=4
; -------------- 0xa8: "Machine error" exception handler
a8: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
ac: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
b0: 64 02 00 02 mfsr $r0,$psw
b4: 64 12 a4 02 mfsr $r1,$ipc
b8: 64 22 04 02 mfsr $r2,$ipsw
bc: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
c0: 42 00 04 09 bclr $r0,$r0,#0x1
c4: 64 02 00 03 mtsr $r0,$psw
c8: 64 00 00 08 dsb
cc: 80 5f mov55 $r2,$sp
ce: 54 1f 80 04 andi $r1,$sp,#0x4
d2: 52 10 80 04 subri $r1,$r1,#0x4
d6: 41 ff 84 01 sub $sp,$sp,$r1
da: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
de: 84 05 movi55 $r0,#0x5
e0: 46 f0 00 0c sethi $r15,#0xc
e4: 58 f7 89 94 ori $r15,$r15,#0x994
e8: 4a 00 3c 00 jr $r15 ; 0xc994 - unknown builtin handler, $r0=5
; -------------- 0xec: "Debug related" exception handler
ec: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
f0: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
f4: 64 02 00 02 mfsr $r0,$psw
f8: 64 12 a4 02 mfsr $r1,$ipc
fc: 64 22 04 02 mfsr $r2,$ipsw
100: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
104: 42 00 04 09 bclr $r0,$r0,#0x1
108: 64 02 00 03 mtsr $r0,$psw
10c: 64 00 00 08 dsb
110: 80 5f mov55 $r2,$sp
112: 54 1f 80 04 andi $r1,$sp,#0x4
116: 52 10 80 04 subri $r1,$r1,#0x4
11a: 41 ff 84 01 sub $sp,$sp,$r1
11e: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
122: 84 06 movi55 $r0,#0x6
124: 46 f0 00 0c sethi $r15,#0xc
128: 58 f7 89 94 ori $r15,$r15,#0x994
12c: 4a 00 3c 00 jr $r15 ; 0xc994 - unknown builtin handler, $r0=6
; -------------- 0x130: "General exception" handler
130: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
134: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
138: 64 02 00 02 mfsr $r0,$psw
13c: 64 12 a4 02 mfsr $r1,$ipc
140: 64 22 04 02 mfsr $r2,$ipsw
144: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
148: 42 00 04 09 bclr $r0,$r0,#0x1
14c: 64 02 00 03 mtsr $r0,$psw
150: 64 00 00 08 dsb
154: 80 5f mov55 $r2,$sp
156: 54 1f 80 04 andi $r1,$sp,#0x4
15a: 52 10 80 04 subri $r1,$r1,#0x4
15e: 41 ff 84 01 sub $sp,$sp,$r1
162: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
166: 84 07 movi55 $r0,#0x7
168: 46 f0 00 0c sethi $r15,#0xc
16c: 58 f7 89 94 ori $r15,$r15,#0x994
170: 4a 00 3c 00 jr $r15 ; 0xc994 - unknown builtin handler, $r0=7
; -------------- 0x174: "Syscall" handler
174: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
178: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
17c: 64 02 00 02 mfsr $r0,$psw ;
180: 64 12 a4 02 mfsr $r1,$ipc ;
184: 9c 4c addi333 $r1,$r1,#0x4 ; $r1 = $ipc + 4
186: 64 22 04 02 mfsr $r2,$ipsw
18a: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
18e: 42 00 04 09 bclr $r0,$r0,#0x1
192: 64 02 00 03 mtsr $r0,$psw
196: 64 00 00 08 dsb
19a: 80 5f mov55 $r2,$sp
19c: 54 1f 80 04 andi $r1,$sp,#0x4
1a0: 52 10 80 04 subri $r1,$r1,#0x4
1a4: 41 ff 84 01 sub $sp,$sp,$r1
1a8: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
1ac: 46 f0 00 0c sethi $r15,#0xc
1b0: 58 f7 89 94 ori $r15,$r15,#0x994 ; 0xc994 - unknown builtin handler, $r0=?
1b4: 4b e0 3c 01 jral $lp,$r15 ; jump (with return!)
1b8: 05 ff 80 00 lwi $sp,[$sp+#0x0] ; restore $sp
1bc: 3a 0f 88 04 lmw.bim $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
1c0: 64 02 00 03 mtsr $r0,$psw
1c4: 64 00 00 08 dsb
1c8: 64 12 a4 03 mtsr $r1,$ipc
1cc: 64 22 04 03 mtsr $r2,$ipsw
1d0: 3a ff bf 84 lmw.bim $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
1d4: 51 ff 80 04 addi $sp,$sp,#0x4
1d8: 3a 1f 94 04 lmw.bim $r1,[$sp],$r5,#0x0 ! {$r1~$r5}
1dc: 64 00 00 04 iret
; -------------- 0x1e0: HW0 interrupt handler
1e0: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
1e4: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
1e8: 80 5f mov55 $r2,$sp ; $r2 = $sp
1ea: 54 1f 80 04 andi $r1,$sp,#0x4 ; $r1 = $sp & 0x4
1ee: 52 10 80 04 subri $r1,$r1,#0x4 ; $r1 = 0x4 - $r1
1f2: 41 ff 84 01 sub $sp,$sp,$r1 ; $sp = $sp - $r1
1f6: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2} ; save old $sp onto the stack??
1fa: 84 00 movi55 $r0,#0x0 ; $r0 = 0
1fc: 46 10 00 02 sethi $r1,#0x2 ; $r1 = 0x2000
200: 58 10 8d 48 ori $r1,$r1,#0xd48 ; $r1 = 0x2d48
204: 4b e0 04 01 jral $lp,$r1 ; call 0x2d48
208: 05 ff 80 00 lwi $sp,[$sp+#0x0] ; load old $sp
20c: 3a ff bf 84 lmw.bim $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
210: 3a 0f 94 04 lmw.bim $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
214: 64 00 00 04 iret
; -------------- HW1 - HW5 interrupt handler (interrupt number in $r0, 1-5)
218: 3a 1f 94 3c smw.adm $r1,[$sp],$r5,#0x0 ! {$r1~$r5}
21c: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
220: 64 13 00 02 mfsr $r1,$int_mask
224: 3a 1f 84 3c smw.adm $r1,[$sp],$r1,#0x0 ! {$r1} ; save original $int_mask
228: 58 10 80 3f ori $r1,$r1,#0x3f ; $r1 = 0b0011_1111
22c: 84 41 movi55 $r2,#0x1 ;
22e: 40 21 00 0c sll $r2,$r2,$r0 ; $r2 = 1 << $r0
232: 52 21 00 40 subri $r2,$r2,#0x40 ; $r2 = 0x40 - (1 << $r0)
236: 9a 4a sub333 $r1,$r1,$r2 ; $r1 = 0x3f - (0x40 - (1<<$r0)): 0b1111..., num bits = $r0
238: 64 13 00 03 mtsr $r1,$int_mask ; enable all interrupts < $r0
23c: 64 12 00 02 mfsr $r1,$psw ; save $psw
240: 64 22 a4 02 mfsr $r2,$ipc ; save $ipc
244: 64 32 04 02 mfsr $r3,$ipsw ; save $ipcw
248: 3a 1f 8c 3c smw.adm $r1,[$sp],$r3,#0x0 ! {$r1~$r3}
24c: 42 10 84 09 bclr $r1,$r1,#0x1 ; clear bit 1 of saved $psw (bits 1-2: INTL, interrupt level)
250: 64 12 00 03 mtsr $r1,$psw ; drop one interrupt level (3->2 or 1->0)
254: 64 12 00 43 setgie.e ; enable global interrupts again
258: 64 00 00 08 dsb ; data barrier
25c: 80 5f mov55 $r2,$sp ;
25e: 54 1f 80 04 andi $r1,$sp,#0x4
262: 52 10 80 04 subri $r1,$r1,#0x4
266: 41 ff 84 01 sub $sp,$sp,$r1
26a: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
26e: 46 10 00 02 sethi $r1,#0x2 ; $r1 = 0x00002000
272: 58 10 8a 4c ori $r1,$r1,#0xa4c ; $r1 = 0x00002a4c
276: 38 10 82 02 lw $r1,[$r1+($r0<<#0x2)] ; $r1 = [0x2a4c + ($r0 << 2)]
27a: dd 21 jral5 $r1 ; call $r1 (function table woooo)
27c: 05 ff 80 00 lwi $sp,[$sp+#0x0] ; reset stack pointer
280: 3a 0f 88 04 lmw.bim $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
284: 64 02 00 43 setgie.d ; disable global interrupts
288: 64 00 00 08 dsb ;
28c: 64 02 00 03 mtsr $r0,$psw ; restore old $psw
290: 64 12 a4 03 mtsr $r1,$ipc ; restore old $ipc
294: 64 22 04 03 mtsr $r2,$ipsw ; restore old $ipsw
298: 3a 0f 80 04 lmw.bim $r0,[$sp],$r0,#0x0 ! {$r0}
29c: 64 03 00 03 mtsr $r0,$int_mask ; restore old $int_mask
2a0: 3a ff bf 84 lmw.bim $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
2a4: 3a 1f 94 04 lmw.bim $r1,[$sp],$r5,#0x0 ! {$r1~$r5}
2a8: 3a 0f 80 04 lmw.bim $r0,[$sp],$r0,#0x0 ! {$r0}
2ac: 64 00 00 04 iret
; -------------- 0x2b0: HW1 interrupt handler
2b0: 3a 0f 80 3c smw.adm $r0,[$sp],$r0,#0x0 ! {$r0}
2b4: 84 01 movi55 $r0,#0x1
2b6: d5 b1 j8 0x218
; -------------- 0x2b8: HW2 interrupt handler
2b8: 3a 0f 80 3c smw.adm $r0,[$sp],$r0,#0x0 ! {$r0}
2bc: 84 02 movi55 $r0,#0x2
2be: d5 ad j8 0x218
; -------------- 0x2c0: HW3 interrupt handler
2c0: 3a 0f 80 3c smw.adm $r0,[$sp],$r0,#0x0 ! {$r0}
2c4: 84 03 movi55 $r0,#0x3
2c6: d5 a9 j8 0x218
; -------------- 0x2c8: HW4 interrupt handler
2c8: 3a 0f 80 3c smw.adm $r0,[$sp],$r0,#0x0 ! {$r0}
2cc: 84 04 movi55 $r0,#0x4
2ce: d5 a5 j8 0x218
; -------------- 0x2d0: HW5 interrupt handler
2d0: 3a 0f 80 3c smw.adm $r0,[$sp],$r0,#0x0 ! {$r0}
2d4: 84 05 movi55 $r0,#0x5
2d6: d5 a1 j8 0x218
; -------------- 0x2d8: SW0 interrupt handler
2d8: 3a 0f 94 3c smw.adm $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
2dc: 3a ff bf bc smw.adm $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
2e0: 64 02 00 02 mfsr $r0,$psw
2e4: 64 12 a4 02 mfsr $r1,$ipc
2e8: 64 22 04 02 mfsr $r2,$ipsw
2ec: 3a 0f 88 3c smw.adm $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
2f0: 42 00 04 09 bclr $r0,$r0,#0x1
2f4: 64 02 00 03 mtsr $r0,$psw
2f8: 64 00 00 08 dsb
2fc: 80 5f mov55 $r2,$sp
2fe: 54 1f 80 04 andi $r1,$sp,#0x4
302: 52 10 80 04 subri $r1,$r1,#0x4
306: 41 ff 84 01 sub $sp,$sp,$r1
30a: 3a 2f 88 3c smw.adm $r2,[$sp],$r2,#0x0 ! {$r2}
30e: 84 0f movi55 $r0,#0xf ; $r0 = 0xf
310: 46 10 00 0c sethi $r1,#0xc
314: 58 10 89 94 ori $r1,$r1,#0x994 ; Unknown handler at 0xc994
318: dd 21 jral5 $r1
31a: 05 ff 80 00 lwi $sp,[$sp+#0x0]
31e: 3a 0f 88 04 lmw.bim $r0,[$sp],$r2,#0x0 ! {$r0~$r2}
322: 64 02 00 03 mtsr $r0,$psw
326: 64 00 00 08 dsb
32a: 64 12 a4 03 mtsr $r1,$ipc
32e: 64 22 04 03 mtsr $r2,$ipsw
332: 3a ff bf 84 lmw.bim $r15,[$sp],$r15,#0xe ! {$r15, $fp, $gp, $lp}
336: 3a 0f 94 04 lmw.bim $r0,[$sp],$r5,#0x0 ! {$r0~$r5}
33a: 64 00 00 04 iret
33e: 92 00 nop16
; --- end of interrupt handlers
340: 48 00 2b b2 j 0x5aa4 ; only callsite for usb_handle_interrupt()
344: 48 00 2b 12 j 0x5968
348: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
34c: 46 00 00 0c sethi $r0,#0xc
350: 04 60 03 5d lwi $r6,[$r0+#0xd74]
354: a0 34 lwi333 $r0,[$r6+#0x10]
356: 54 00 00 08 andi $r0,$r0,#0x8
35a: c0 03 beqz38 $r0,0x360
35c: 49 00 00 30 jal 0x3bc
360: a0 34 lwi333 $r0,[$r6+#0x10]
362: 54 00 00 10 andi $r0,$r0,#0x10
366: c0 05 beqz38 $r0,0x370
368: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
36c: 48 00 00 4e j 0x408
370: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
374: dd 9e ret5 $lp
376: 92 00 nop16
; --------- 0x378: poll_for_bit17(addr=$r0, b1=$r1), only called from 0x624, addr=[0xcd60]
378: a0 81 lwi333 $r2,[$r0+#0x4] ; $r2 = addr[1]
37a: 96 48 zeb33 $r1,$r1 ; $r1 = $r1 & 0xff
37c: 42 21 5c 08 bset $r2,$r2,#0x17 ; $r2 |= 1<<17
380: a8 81 swi333 $r2,[$r0+#0x4] ; addr[1] |= 1 << 17
382: a8 44 swi333 $r1,[$r0+#0x10] ; addr[4] = $r1 & 0xff - set addr[4] to $r1
384: a0 43 lwi333 $r1,[$r0+#0xc] ; loop: $r1 = addr[3]
386: 40 10 bc 08 slli $r1,$r1,#0xf ; $r1 = $r1 << 15
38a: 92 3f srli45 $r1,#0x1f ; $r1 = $r1 >> 31 (1 if addr[3] & (1<<17), else 0)
38c: c1 fc beqz38 $r1,0x384 ; loop until addr[3] bit 17 is not set
38e: dd 9e ret5 $lp ; return
; ---------- 0x390: poll_for_something(addr=$r0), only called from 0x658, addr=[0xcd60], -> $r0=[addr+0x14] & 0xff
390: a0 41 lwi333 $r1,[$r0+#0x4] ;
392: 42 10 d8 08 bset $r1,$r1,#0x16 ;
396: a8 41 swi333 $r1,[$r0+#0x4] ; addr[1] |= (1<<16)
398: a0 41 lwi333 $r1,[$r0+#0x4] ;
39a: 42 10 dc 08 bset $r1,$r1,#0x17 ;
39e: a8 41 swi333 $r1,[$r0+#0x4] ; addr[1] |= (1<<17)
3a0: 84 20 movi55 $r1,#0x0 ;
3a2: a8 44 swi333 $r1,[$r0+#0x10] ; addr[4] = 0
3a4: a0 43 lwi333 $r1,[$r0+#0xc] ; loop:
3a6: 40 10 bc 08 slli $r1,$r1,#0xf ; $r1 = addr[3]
3aa: 92 3f srli45 $r1,#0x1f ;
3ac: c1 fc beqz38 $r1,0x3a4 ; until ($r1 & (1<<17))
3ae: a0 43 lwi333 $r1,[$r0+#0xc] ; loop:
3b0: 96 4c xlsb33 $r1,$r1 ; $r1 = addr[3]
3b2: c1 fe beqz38 $r1,0x3ae ; until ($r1 & 1)
3b4: a0 05 lwi333 $r0,[$r0+#0x14] ;
3b6: 96 00 zeb33 $r0,$r0 ; $r0 = addr[5] & 0xff
3b8: dd 9e ret5 $lp ; return
3ba: 92 00 nop16
; ----------- 0x3bc: more 0xcd60 nonsense
3bc: 46 00 00 0c sethi $r0,#0xc
3c0: 04 00 03 59 lwi $r0,[$r0+#0xd64] ; $r0 = [0xcd64]
3c4: 04 10 00 10 lwi $r1,[$r0+#0x40] ; $r1 = [$r0+0x40]
3c8: 54 10 80 10 andi $r1,$r1,#0x10
3cc: c1 1c beqz38 $r1,0x404
3ce: 3c 23 ff ed lhi.gp $r2,[+#-38]
3d2: 9c 91 addi333 $r2,$r2,#0x1
3d4: 96 91 zeh33 $r2,$r2
3d6: 3c 2b ff ed shi.gp $r2,[+#-38]
3da: 5c f1 01 6e slti $r15,$r2,#0x16e
3de: e9 09 bnezs8 0x3f0
3e0: 3c 3d ff e5 lwi.gp $r3,[+#-108]
3e4: 84 80 movi55 $r4,#0x0
3e6: 9c d9 addi333 $r3,$r3,#0x1
3e8: 3c 4b ff ed shi.gp $r4,[+#-38]
3ec: 3c 3f ff e5 swi.gp $r3,[+#-108]
3f0: 44 10 00 10 movi $r1,#0x10
3f4: 14 10 00 10 swi $r1,[$r0+#0x40]
3f8: 84 21 movi55 $r1,#0x1
3fa: b6 20 swi450 $r1,[$r0]
3fc: b4 20 lwi450 $r1,[$r0]
3fe: 42 10 bc 08 bset $r1,$r1,#0xf
402: b6 20 swi450 $r1,[$r0]
404: dd 9e ret5 $lp
406: 92 00 nop16
408: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
40c: 46 00 00 0c sethi $r0,#0xc
410: 04 60 03 5a lwi $r6,[$r0+#0xd68]
414: 04 03 00 10 lwi $r0,[$r6+#0x40]
418: 54 00 00 10 andi $r0,$r0,#0x10
41c: 4e 02 00 08 beqz $r0,0x42c
420: 49 00 17 ee jal 0x33fc
424: 44 00 00 10 movi $r0,#0x10
428: 14 03 00 10 swi $r0,[$r6+#0x40]
42c: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
430: dd 9e ret5 $lp
432: 92 00 nop16
; ---------- 0x434: max_adc_byte() - return highest byte in ADC's ringbuf in $r0
434: 3e 18 00 38 addi.gp $r1,#0x38 ; $r1 = $gp+0x38 (start of DMA buf)
438: 44 00 00 00 movi $r0,#0x0 ; max = 0
43c: 08 30 80 01 lbi.bi $r3,[$r1],#0x1 ; do: cur = [$r1]; $r1++
440: 80 40 mov55 $r2,$r0 ; prevmax = max
442: 40 40 0c 06 slt $r4,$r0,$r3 ; r = max < cur
446: 40 01 90 1b cmovn $r0,$r3,$r4 ; if r: max = cur
44a: 40 01 10 1a cmovz $r0,$r2,$r4 ; if !r: max = prevmax (why is this here?)
44e: 3e 28 01 00 addi.gp $r2,#0x100 ;
452: 4c 11 7f f5 bne $r1,$r2,0x43c ; until $r1 == $gp+100 (end of DMA buf)
456: dd 9e ret5 $lp
; --------- 0x458: watchdog_do_sys_reset()
458: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
45c: 51 ff ff fc addi $sp,$sp,#-4
460: 49 00 4e 0a jal 0xa074 ; disable interrupts
464: 46 20 02 00 sethi $r2,#0x200
468: 58 21 08 08 ori $r2,$r2,#0x808 ; $r2 = 0x00200808 - watchdog detection time register
46c: 84 60 movi55 $r3,#0x0 ; detect time: 1 second
46e: b6 62 swi450 $r3,[$r2] ;
470: 9e 54 subi333 $r1,$r2,#0x4 ; $r1 = 0x00200804 - watchdog reset time register
472: 9e 0c subi333 $r0,$r1,#0x4 ; $r0 = 0x00200800 - watchdog timer base
474: 84 42 movi55 $r2,#0x2
476: b6 41 swi450 $r2,[$r1] ; watchdog reset time: 33ms
478: b6 60 swi450 $r3,[$r0] ; watchdog clear counter
47a: d5 00 j8 0x47a ; infinite loop -> watchdog reset?
; ---------- 0x47c: check_magic_and_reset(magic=$r0) -> $r0=1 if reset initiated
; ---------- writes magic to $gp-152 so the system can grab it on reset
47c: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
480: ef fc addi10.sp #-4
482: 46 14 24 d4 sethi $r1,#0x424d4 ;
486: 58 10 81 50 ori $r1,$r1,#0x150 ;
48a: 4c 00 80 11 beq $r0,$r1,0x4ac ; if $r0 = "BMAP": goto ok
48e: 46 14 24 d4 sethi $r1,#0x424d4
492: 58 10 89 41 ori $r1,$r1,#0x941
496: 4c 00 80 0b beq $r0,$r1,0x4ac ; if $r0 = "BMIA": goto ok
49a: 46 14 24 d4 sethi $r1,#0x424d4
49e: 58 10 89 53 ori $r1,$r1,#0x953
4a2: 4c 00 80 05 beq $r0,$r1,0x4ac ; if $r0 = "BMIS": goto ok
4a6: 84 00 movi55 $r0,#0x0 ; $r0 = 0
4a8: 48 00 00 08 j 0x4b8 ; goto out
4ac: 3c 1d ff da lwi.gp $r1,[+#-152] ;label ok: $r1 = [$gp-152]
4b0: b6 01 swi450 $r0,[$r1] ; [$gp-152][0] = magic
4b2: 49 ff ff d3 jal 0x458 ; watchdog_do_sys_reset(): reboot in 33ms!
4b6: 84 01 movi55 $r0,#0x1 ; $r0 = 1
4b8: ec 04 addi10.sp #0x4
4ba: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
4be: dd 9e ret5 $lp
; --------- 0x4c0: crc16(int iv=$r0, void *src=$r1, int length=$r2) -> $r0 (halfword)
4c0: 3a 6f 98 3c smw.adm $r6,[$sp],$r6,#0x0 ! {$r6}
4c4: 96 01 zeh33 $r0,$r0
4c6: c2 15 beqz38 $r2,0x4f0 ; if $r2 == 0, goto out
4c8: 44 30 00 00 movi $r3,#0x0 ; $r3 = 0
4cc: 44 60 ca c8 movi $r6,#0xcac8 ; $r6 = 0xcac8 (xor value table, I'm guessing)
4d0: 38 40 8c 00 lb $r4,[$r1+($r3<<#0x0)] ; start: $r4 = [$r1+$r3]
4d4: 40 50 20 09 srli $r5,$r0,#0x8 ; $r5 = $r0 >> 8
4d8: 40 42 90 03 xor $r4,$r5,$r4 ; $r4 ^= $r5
4dc: 38 43 11 01 lh $r4,[$r6+($r4<<#0x1)] ; $r4 = [0xcac8+($r4<<1)]
4e0: 40 00 20 08 slli $r0,$r0,#0x8 ; $r0 = $r0 << 8
4e4: 40 02 00 03 xor $r0,$r4,$r0 ; $r0 = $r0 ^ $r4
4e8: 9c d9 addi333 $r3,$r3,#0x1 ; $r3 += 1
4ea: 96 01 zeh33 $r0,$r0 ;
4ec: 4c 21 ff f2 bne $r2,$r3,0x4d0 ; ...loop until $r3 == $r2
4f0: 3a 6f 98 04 lmw.bim $r6,[$sp],$r6,#0x0 ! {$r6}
4f4: dd 9e ret5 $lp
4f6: 92 00 nop16
; ---------- 0x4f8: ringbuf_full(ringbuf=$r0) -> bool $r0
4f8: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
4fc: ef bc addi10.sp #-68 ; make room on the stack for an empty packet
4fe: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
502: 80 c0 mov55 $r6,$r0 ; (save cache in $r6)
504: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
506: 80 1f mov55 $r0,$sp ; memset dest = $sp
508: 49 00 4d d8 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
50c: a6 f0 lbi333 $r3,[$r6+#0x0] ; $r3 = ringbuf.readidx
50e: a6 b1 lbi333 $r2,[$r6+#0x1] ; $r2 = ringbuf.writeidx
510: 80 ff mov55 $r7,$sp ; (save $sp in $r7)
512: 4c 21 80 04 beq $r2,$r3,0x51a ; if ringbuf.readidx != ringbuf.writeidx:
516: 84 00 movi55 $r0,#0x0 ; $r0 = 0
518: d5 0c j8 0x530 ; goto out
51a: 94 96 slli333 $r2,$r2,#0x6 ;
51c: 9c 32 addi333 $r0,$r6,#0x2 ;
51e: 98 02 add333 $r0,$r0,$r2 ; memcmp s1 = ringbuf.writeaddr
520: 80 3f mov55 $r1,$sp ; memcmp s2 = $sp
522: 44 20 00 40 movi $r2,#0x40 ; memcmp n = 0x40
526: 49 00 4d b3 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2) -> $r0=0 if writeaddr is empty
52a: 84 20 movi55 $r1,#0x0 ;
52c: 40 00 80 06 slt $r0,$r1,$r0 ; $r0 = 0 if writeaddr is empty, 1 if not
530: ec 44 addi10.sp #0x44 ;label out:
532: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
536: dd 9e ret5 $lp
; ---------- 0x538: ringbuf_write(ringbuf=$r0, packet=$r1) -> bool $r0
538: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
53c: ef fc addi10.sp #-4
53e: 80 e1 mov55 $r7,$r1 ; $r7 = packet
540: 50 60 00 00 addi $r6,$r0,#0x0 ; $r6 = ringbuf
544: 49 ff ff da jal 0x4f8 ; $r0 = ringbuf_full(ringbuf)
548: c0 03 beqz38 $r0,0x54e ; if ringbuf_full(ringbuf):
54a: 84 00 movi55 $r0,#0x0 ; $r0 = 0
54c: d5 18 j8 0x57c ; goto out
54e: a6 31 lbi333 $r0,[$r6+#0x1] ; $r0 = ringbuf.writeidx
550: 9c 72 addi333 $r1,$r6,#0x2 ; $r1 = ringbuf+2
552: 94 06 slli333 $r0,$r0,#0x6 ; $r0 = ringbuf.writeidx * 0x40
554: 98 08 add333 $r0,$r1,$r0 ; memcpy dest = ringbuf.writeaddr
556: 44 20 00 40 movi $r2,#0x40 ; memcpy n = 0x40
55a: 80 27 mov55 $r1,$r7 ; memcpy src = packet
55c: 49 00 4d a4 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
560: a6 b1 lbi333 $r2,[$r6+#0x1] ; $r2 = ringbuf.writeidx
562: 46 06 66 66 sethi $r0,#0x66666 ; $r0 = 0x66666000
566: 9c 91 addi333 $r2,$r2,#0x1 ; $r2 += 1
568: 58 00 06 67 ori $r0,$r0,#0x667 ; $r0 = 0x66666667
56c: 42 01 00 68 mulsr64 $r0,$r2,$r0 ; ($r0, $r1) = ($r2 * 0x66666667)
570: 84 05 movi55 $r0,#0x5 ; $r0 = 5
572: 90 21 srai45 $r1,#0x1 ; $r1 >>= 1 (~= $r2 / 5)
574: 42 20 80 75 msubr32 $r2,$r1,$r0 ; $r2 -= ($r1 * 5) & 0xffffffff (= chunk[1]+1 % 5)
578: 84 01 movi55 $r0,#0x1 ; $r0 = 1
57a: ae b1 sbi333 $r2,[$r6+#0x1] ; ringbuf.writeidx = (ringbuf.writeidx+1) % 5
57c: ec 04 addi10.sp #0x4 ;label out:
57e: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
582: dd 9e ret5 $lp
; ---------- 0x584: ringbuf_empty(ringbuf=$r0) -> bool $r0
584: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
588: ef bc addi10.sp #-68
58a: 44 20 00 40 movi $r2,#0x40
58e: 80 c0 mov55 $r6,$r0
590: 84 20 movi55 $r1,#0x0
592: 80 1f mov55 $r0,$sp ; make empty packet on the stack
594: 49 00 4d 92 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
598: a6 f0 lbi333 $r3,[$r6+#0x0] ; $r3 = ringbuf.readidx
59a: a6 b1 lbi333 $r2,[$r6+#0x1] ; $r2 = ringbuf.writeidx
59c: 80 ff mov55 $r7,$sp ; (save $sp in $r7)
59e: 4c 21 80 04 beq $r2,$r3,0x5a6 ; if ringbuf.readidx != ringbuf.writeidx:
5a2: 84 00 movi55 $r0,#0x0 ;
5a4: d5 0c j8 0x5bc ; return 0
5a6: 94 96 slli333 $r2,$r2,#0x6 ;
5a8: 9c 32 addi333 $r0,$r6,#0x2 ;
5aa: 98 02 add333 $r0,$r0,$r2 ; memcmp s1 = ringbuf.readaddr
5ac: 50 1f 80 00 addi $r1,$sp,#0x0 ; memcmp s2 = $sp (empty packet)
5b0: 44 20 00 40 movi $r2,#0x40 ; memcmp n = 0x40
5b4: 49 00 4d 6c jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
5b8: 5c 00 00 01 slti $r0,$r0,#0x1 ; $r0 = 1 if readaddr is empty
5bc: ec 44 addi10.sp #0x44
5be: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
5c2: dd 9e ret5 $lp
; --------- 0x5c4: ringbuf_read(ringbuf=$r0, packet=$r1)
5c4: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
5c8: ef fc addi10.sp #-4
5ca: 81 01 mov55 $r8,$r1 ; $r8 = packet
5cc: 80 c0 mov55 $r6,$r0 ; $r6 = ringbuf
5ce: 49 ff ff db jal 0x584 ;
5d2: 80 e0 mov55 $r7,$r0 ;
5d4: c0 03 beqz38 $r0,0x5da ; if ringbuf_empty(ringbuf):
5d6: 84 00 movi55 $r0,#0x0 ; rv = 0
5d8: d5 21 j8 0x61a ; goto out
5da: a6 70 lbi333 $r1,[$r6+#0x0] ;
5dc: 50 93 00 02 addi $r9,$r6,#0x2 ; $r9 = ringbuf.pktbase
5e0: 94 4e slli333 $r1,$r1,#0x6 ;
5e2: 88 29 add45 $r1,$r9 ; memcpy src = ringbuf.readaddr
5e4: 44 20 00 40 movi $r2,#0x40 ; memcpy n = 0x40
5e8: 80 08 mov55 $r0,$r8 ; memcpy dest = packet
5ea: 49 00 4d 5d jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
5ee: a6 30 lbi333 $r0,[$r6+#0x0] ;
5f0: 80 27 mov55 $r1,$r7 ; memset byte = 0
5f2: 94 06 slli333 $r0,$r0,#0x6 ;
5f4: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
5f8: 88 09 add45 $r0,$r9 ; memset dest = ringbuf.readaddr
5fa: 49 00 4d 5f jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
5fe: a6 b0 lbi333 $r2,[$r6+#0x0] ; $r2 = ringbuf.readidx
600: 46 06 66 66 sethi $r0,#0x66666 ; (woo boy, integer division sucks)
604: 9c 91 addi333 $r2,$r2,#0x1 ; $r2 = cache[0]+1
606: 58 00 06 67 ori $r0,$r0,#0x667 ;
60a: 42 01 00 68 mulsr64 $r0,$r2,$r0 ; $r1 =~ (cache[0]+1)*2 // 5
60e: 84 05 movi55 $r0,#0x5 ; $r0 = 5
610: 90 21 srai45 $r1,#0x1 ; $r1 =~ (cache[0]+1) // 5
612: 42 20 80 75 msubr32 $r2,$r1,$r0 ; $r2 = (cache[0]+1) % 5
616: 84 01 movi55 $r0,#0x1 ; $r0 = 1 (success!)
618: ae b0 sbi333 $r2,[$r6+#0x0] ; ringbuf.readidx = (ringbuf.readidx+1) % 5
61a: ec 04 addi10.sp #0x4
61c: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
620: dd 9e ret5 $lp
622: 92 00 nop16
; --------- 0x624: wait_for_cd60_bit17(b1=$r0)
624: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
628: 51 cf 80 04 addi $fp,$sp,#0x4 ; $fp = $sp+4
62c: 51 ff ff f8 addi $sp,$sp,#-8 ; $sp -= 8
630: 80 00 mov55 $r0,$r0 ;
632: 10 0e 7f f8 sbi $r0,[$fp+#-8] ; [$fp-8] = $r0 (save $r0)
636: 44 00 cd 60 movi $r0,#0xcd60 ;
63a: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = [0xcd60]
63e: 00 1e 7f f8 lbi $r1,[$fp+#-8] ; $r1 = [$fp-8] (saved $r0)
642: 54 10 80 ff andi $r1,$r1,#0xff ; $r1 &= 0xff
646: 49 ff fe 99 jal 0x378 ; poll_for_bit17([0xcd60], b1)
64a: 92 00 nop16
64c: 51 fe 7f fc addi $sp,$fp,#-4
650: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
654: 4a 00 78 20 ret $lp
; ---------- 0x658: wait_for_cd60_something()
658: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
65c: 51 cf 80 04 addi $fp,$sp,#0x4
660: 44 00 cd 60 movi $r0,#0xcd60
664: 04 00 00 00 lwi $r0,[$r0+#0x0]
668: 49 ff fe 94 jal 0x390 ; return poll_for_something(addr=[0xcd60])
66c: 51 fe 7f fc addi $sp,$fp,#-4
670: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
674: 4a 00 78 20 ret $lp
; --------- 0x678: init_cd10()
678: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
67c: 51 cf 80 04 addi $fp,$sp,#0x4
680: 49 00 00 c6 jal 0x80c ; setup_cd10()
684: 44 00 00 00 movi $r0,#0x0
688: 49 00 01 04 jal 0x890 ; setup_cd10_arg(0)
68c: 49 00 00 c0 jal 0x80c ; setup_cd10()
690: 51 fe 7f fc addi $sp,$fp,#-4
694: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
698: 4a 00 78 20 ret $lp
; --------- 0x69c: ????
69c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
6a0: 51 cf 80 04 addi $fp,$sp,#0x4
6a4: 49 00 00 b4 jal 0x80c ; TODO: returns $r0
6a8: 54 00 00 01 andi $r0,$r0,#0x1
6ac: 54 00 00 ff andi $r0,$r0,#0xff
6b0: c0 6f beqz38 $r0,0x78e ; if $r0 & 1: goto out_fail
6b2: 3e 0f ff 6c addi.gp $r0,#-148 ; $r0 = $gp-148
6b6: 04 00 00 00 lwi $r0,[$r0+#0x0] ;
6ba: c0 5f beqz38 $r0,0x778 ; if [$gp-148] == 0:
6bc: 3e 0f ff 6c addi.gp $r0,#-148
6c0: 04 00 00 00 lwi $r0,[$r0+#0x0]
6c4: 49 00 1d 7e jal 0x41c0
6c8: 80 20 mov55 $r1,$r0
6ca: 46 00 00 92 sethi $r0,#0x92
6ce: 58 00 07 c0 ori $r0,$r0,#0x7c0
6d2: 40 f0 04 06 slt $r15,$r0,$r1
6d6: e8 59 beqzs8 0x788
6d8: 3e 08 08 f0 addi.gp $r0,#0x8f0
6dc: 44 10 00 01 movi $r1,#0x1
6e0: 10 10 00 00 sbi $r1,[$r0+#0x0]
6e4: 3e 08 08 f0 addi.gp $r0,#0x8f0
6e8: 44 10 00 0a movi $r1,#0xa
6ec: 10 10 00 01 sbi $r1,[$r0+#0x1]
6f0: 3e 0f ff dd addi.gp $r0,#-35
6f4: 00 00 00 00 lbi $r0,[$r0+#0x0]
6f8: 54 10 00 ff andi $r1,$r0,#0xff
6fc: 3e 08 08 f0 addi.gp $r0,#0x8f0
700: 80 21 mov55 $r1,$r1
702: 10 10 00 02 sbi $r1,[$r0+#0x2]
706: 3e 0f ff 70 addi.gp $r0,#-144
70a: 04 00 00 00 lwi $r0,[$r0+#0x0]
70e: 54 10 00 ff andi $r1,$r0,#0xff
712: 3e 08 08 f0 addi.gp $r0,#0x8f0
716: 80 21 mov55 $r1,$r1
718: 10 10 00 03 sbi $r1,[$r0+#0x3]
71c: 3e 0f ff 70 addi.gp $r0,#-144
720: 04 00 00 00 lwi $r0,[$r0+#0x0]
724: 40 00 20 09 srli $r0,$r0,#0x8
728: 54 10 00 ff andi $r1,$r0,#0xff
72c: 3e 08 08 f0 addi.gp $r0,#0x8f0
730: 80 21 mov55 $r1,$r1
732: 10 10 00 04 sbi $r1,[$r0+#0x4]
736: 3e 0f ff 70 addi.gp $r0,#-144
73a: 04 00 00 00 lwi $r0,[$r0+#0x0]
73e: 40 00 40 09 srli $r0,$r0,#0x10
742: 54 10 00 ff andi $r1,$r0,#0xff
746: 3e 08 08 f0 addi.gp $r0,#0x8f0
74a: 80 21 mov55 $r1,$r1
74c: 10 10 00 05 sbi $r1,[$r0+#0x5]
750: 3e 08 08 f0 addi.gp $r0,#0x8f0
754: 49 00 2d 9c jal 0x628c ; add_packet_crc(pkt=$r0)
758: 3e 08 09 c0 addi.gp $r0,#0x9c0
75c: 3e 18 08 f0 addi.gp $r1,#0x8f0
760: 49 ff fe ec jal 0x538 ; ringbuf_write()
764: 49 00 03 08 jal 0xd74
768: 49 00 1d 12 jal 0x418c
76c: 80 20 mov55 $r1,$r0
76e: 3e 0f ff 6c addi.gp $r0,#-148
772: 14 10 00 00 swi $r1,[$r0+#0x0]
776: d5 09 j8 0x788
778: 49 00 1d 0a jal 0x418c
77c: 80 20 mov55 $r1,$r0
77e: 3e 0f ff 6c addi.gp $r0,#-148
782: 14 10 00 00 swi $r1,[$r0+#0x0]
786: d5 01 j8 0x788
788: 44 00 00 00 movi $r0,#0x0
78c: d5 09 j8 0x79e ; goto out
78e: 3e 0f ff 6c addi.gp $r0,#-148 ;label out_fail:
792: 44 10 00 00 movi $r1,#0x0 ;
796: 14 10 00 00 swi $r1,[$r0+#0x0] ; [$gp-148] = 0
79a: 44 00 00 01 movi $r0,#0x1 ; $r0 = 1
79e: 51 fe 7f fc addi $sp,$fp,#-4 ;label out:
7a2: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
7a6: 4a 00 78 20 ret $lp
7aa: 92 00 nop16
; --------- 0x7ac: some_setup()
7ac: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
7b0: 51 cf 80 04 addi $fp,$sp,#0x4
7b4: 51 ff ff f8 addi $sp,$sp,#-8
7b8: 44 00 00 00 movi $r0,#0x0
7bc: 14 0e 7f fe swi $r0,[$fp+#-8] ; loop_arg ($fp-8) = 0
7c0: d5 11 j8 0x7e2 ; loop:
7c2: 44 00 00 01 movi $r0,#0x1 ; $r0 = 1
7c6: 49 00 1d 25 jal 0x4210 ; ???
7ca: 04 0e 7f fe lwi $r0,[$fp+#-8] ; $r0 = loop_arg
7ce: 50 00 00 01 addi $r0,$r0,#0x1 ; $r0 += 1
7d2: 14 0e 7f fe swi $r0,[$fp+#-8] ; loop_arg = $r0
7d6: 04 1e 7f fe lwi $r1,[$fp+#-8] ; $r1 = loop_arg
7da: 44 00 07 d0 movi $r0,#0x7d0 ; $r0 = 0x7d0
7de: 4c 10 00 06 beq $r1,$r0,0x7ea ; until (loop_arg == 0x7d0)
7e2: 49 ff ff 5d jal 0x69c
7e6: c0 ee beqz38 $r0,0x7c2
7e8: d5 01 j8 0x7ea
7ea: 04 0e 7f fe lwi $r0,[$fp+#-8]
7ee: 5c f0 07 d0 slti $r15,$r0,#0x7d0
7f2: e8 07 beqzs8 0x800
7f4: 3e 0f ff dc addi.gp $r0,#-36
7f8: 44 10 00 01 movi $r1,#0x1
7fc: 10 10 00 00 sbi $r1,[$r0+#0x0]
800: 51 fe 7f fc addi $sp,$fp,#-4
804: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
808: 4a 00 78 20 ret $lp
; --------- 0x80c: setup_cd10()
80c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
810: 51 cf 80 04 addi $fp,$sp,#0x4
814: 51 ff ff f8 addi $sp,$sp,#-8
818: 44 00 00 00 movi $r0,#0x0
81c: 10 0e 7f fb sbi $r0,[$fp+#-5]
820: 44 00 cd 10 movi $r0,#0xcd10
824: 04 00 00 00 lwi $r0,[$r0+#0x0]
828: 44 10 cd 10 movi $r1,#0xcd10
82c: 04 10 80 01 lwi $r1,[$r1+#0x4]
830: 14 10 00 07 swi $r1,[$r0+#0x1c]
834: 44 00 00 05 movi $r0,#0x5
838: 49 ff fe f6 jal 0x624 ; wait_for_cd60_bit17($r0)
83c: 49 ff ff 0e jal 0x658 ; wait_for_cd60_something() -> $r0
840: 80 00 mov55 $r0,$r0
842: 10 0e 7f fb sbi $r0,[$fp+#-5]
846: 40 00 00 09 nop
84a: 40 00 00 09 nop
84e: 40 00 00 09 nop
852: 40 00 00 09 nop
856: 40 00 00 09 nop
85a: 40 00 00 09 nop
85e: 40 00 00 09 nop
862: 40 00 00 09 nop
866: 44 00 cd 10 movi $r0,#0xcd10
86a: 04 00 00 00 lwi $r0,[$r0+#0x0]
86e: 44 10 cd 10 movi $r1,#0xcd10
872: 04 10 80 01 lwi $r1,[$r1+#0x4]
876: 14 10 00 08 swi $r1,[$r0+#0x20]
87a: 00 0e 7f fb lbi $r0,[$fp+#-5]
87e: 54 00 00 ff andi $r0,$r0,#0xff
882: 51 fe 7f fc addi $sp,$fp,#-4
886: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
88a: 4a 00 78 20 ret $lp
88e: 92 00 nop16
; --------- 0x890: setup_cd10_arg(b1=$r0) (only called from 0x678)
890: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
894: 51 cf 80 04 addi $fp,$sp,#0x4
898: 51 ff ff f8 addi $sp,$sp,#-8
89c: 80 00 mov55 $r0,$r0
89e: 10 0e 7f f8 sbi $r0,[$fp+#-8]
8a2: 49 00 00 37 jal 0x910
8a6: 44 00 cd 10 movi $r0,#0xcd10
8aa: 04 00 00 00 lwi $r0,[$r0+#0x0]
8ae: 44 10 cd 10 movi $r1,#0xcd10
8b2: 04 10 80 01 lwi $r1,[$r1+#0x4]
8b6: 14 10 00 07 swi $r1,[$r0+#0x1c]
8ba: 44 00 00 01 movi $r0,#0x1
8be: 49 ff fe b3 jal 0x624 ; wait_for_cd60_bit17($r0)
8c2: 00 0e 7f f8 lbi $r0,[$fp+#-8]
8c6: 54 00 00 ff andi $r0,$r0,#0xff
8ca: 49 ff fe ad jal 0x624 ; wait_for_cd60_bit17($r0)
8ce: 40 00 00 09 nop
8d2: 40 00 00 09 nop
8d6: 40 00 00 09 nop
8da: 40 00 00 09 nop
8de: 40 00 00 09 nop
8e2: 40 00 00 09 nop
8e6: 40 00 00 09 nop
8ea: 40 00 00 09 nop
8ee: 44 00 cd 10 movi $r0,#0xcd10
8f2: 04 00 00 00 lwi $r0,[$r0+#0x0]
8f6: 44 10 cd 10 movi $r1,#0xcd10
8fa: 04 10 80 01 lwi $r1,[$r1+#0x4]
8fe: 14 10 00 08 swi $r1,[$r0+#0x20]
902: 51 fe 7f fc addi $sp,$fp,#-4
906: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
90a: 4a 00 78 20 ret $lp
90e: 92 00 nop16
; ---------- 0x910: grab data from around 0xcd10
910: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
914: 51 cf 80 04 addi $fp,$sp,#0x4
918: 44 00 cd 10 movi $r0,#0xcd10
91c: 04 00 00 00 lwi $r0,[$r0+#0x0]
920: 44 10 cd 10 movi $r1,#0xcd10
924: 04 10 80 01 lwi $r1,[$r1+#0x4]
928: 14 10 00 07 swi $r1,[$r0+#0x1c]
92c: 44 00 00 06 movi $r0,#0x6
930: 49 ff fe 7a jal 0x624 ; wait_for_cd60_bit17($r0)
934: 40 00 00 09 nop
938: 40 00 00 09 nop
93c: 40 00 00 09 nop
940: 40 00 00 09 nop
944: 40 00 00 09 nop
948: 40 00 00 09 nop
94c: 40 00 00 09 nop
950: 40 00 00 09 nop
954: 44 00 cd 10 movi $r0,#0xcd10
958: 04 00 00 00 lwi $r0,[$r0+#0x0]
95c: 44 10 cd 10 movi $r1,#0xcd10
960: 04 10 80 01 lwi $r1,[$r1+#0x4]
964: 14 10 00 08 swi $r1,[$r0+#0x20]
968: 51 fe 7f fc addi $sp,$fp,#-4
96c: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
970: 4a 00 78 20 ret $lp
; ---------- 0x974: func_974($r0, addr=$r1, size=$r2)
974: 3a 6f 9a bc smw.adm $r6,[$sp],$r6,#0xa ! {$r6, $fp, $lp}
978: 51 cf 80 08 addi $fp,$sp,#0x8
97c: 51 ff ff e4 addi $sp,$sp,#-28
980: 14 0e 7f fa swi $r0,[$fp+#-24]
984: 14 1e 7f f9 swi $r1,[$fp+#-28]
988: 14 2e 7f f8 swi $r2,[$fp+#-32]
98c: 3e 0f ff dd addi.gp $r0,#-35
990: 44 10 00 01 movi $r1,#0x1
994: 10 10 00 00 sbi $r1,[$r0+#0x0]
998: 3e 0f ff 70 addi.gp $r0,#-144
99c: 04 1e 7f fa lwi $r1,[$fp+#-24]
9a0: 14 10 00 00 swi $r1,[$r0+#0x0]
9a4: 44 00 cd 10 movi $r0,#0xcd10
9a8: 04 00 00 00 lwi $r0,[$r0+#0x0]
9ac: 44 10 cd 10 movi $r1,#0xcd10
9b0: 04 10 80 01 lwi $r1,[$r1+#0x4]
9b4: 14 10 00 07 swi $r1,[$r0+#0x1c]
9b8: 44 00 00 03 movi $r0,#0x3
9bc: 49 ff fe 34 jal 0x624 ; wait_for_cd60_bit17($r0)
9c0: 04 0e 7f fa lwi $r0,[$fp+#-24]
9c4: 40 00 40 09 srli $r0,$r0,#0x10
9c8: 54 00 00 ff andi $r0,$r0,#0xff
9cc: 49 ff fe 2c jal 0x624 ; wait_for_cd60_bit17($r0)
9d0: 04 0e 7f fa lwi $r0,[$fp+#-24]
9d4: 40 00 20 09 srli $r0,$r0,#0x8
9d8: 54 00 00 ff andi $r0,$r0,#0xff
9dc: 49 ff fe 24 jal 0x624 ; wait_for_cd60_bit17($r0)
9e0: 04 0e 7f fa lwi $r0,[$fp+#-24]
9e4: 54 00 00 ff andi $r0,$r0,#0xff
9e8: 49 ff fe 1e jal 0x624 ; wait_for_cd60_bit17($r0)
9ec: 44 00 00 00 movi $r0,#0x0
9f0: 12 0e 7f f9 shi $r0,[$fp+#-14]
9f4: d5 15 j8 0xa1e
9f6: 02 0e 7f f9 lhi $r0,[$fp+#-14]
9fa: 40 00 00 13 zeh $r0,$r0
9fe: 04 1e 7f f9 lwi $r1,[$fp+#-28]
a02: 40 60 80 00 add $r6,$r1,$r0
a06: 49 ff fe 29 jal 0x658 ; wait_for_cd60_something()
a0a: 80 00 mov55 $r0,$r0
a0c: 10 03 00 00 sbi $r0,[$r6+#0x0]
a10: 02 0e 7f f9 lhi $r0,[$fp+#-14]
a14: 50 00 00 01 addi $r0,$r0,#0x1
a18: 80 00 mov55 $r0,$r0
a1a: 12 0e 7f f9 shi $r0,[$fp+#-14]
a1e: 02 0e 7f f9 lhi $r0,[$fp+#-14]
a22: 40 10 00 13 zeh $r1,$r0
a26: 04 0e 7f f8 lwi $r0,[$fp+#-32]
a2a: 40 f0 80 06 slt $r15,$r1,$r0
a2e: e9 e4 bnezs8 0x9f6
a30: 40 00 00 09 nop
a34: 40 00 00 09 nop
a38: 40 00 00 09 nop
a3c: 40 00 00 09 nop
a40: 40 00 00 09 nop
a44: 40 00 00 09 nop
a48: 40 00 00 09 nop
a4c: 40 00 00 09 nop
a50: 44 00 cd 10 movi $r0,#0xcd10
a54: 04 00 00 00 lwi $r0,[$r0+#0x0]
a58: 44 10 cd 10 movi $r1,#0xcd10
a5c: 04 10 80 01 lwi $r1,[$r1+#0x4]
a60: 14 10 00 08 swi $r1,[$r0+#0x20]
a64: 51 fe 7f f8 addi $sp,$fp,#-8
a68: 3a 6f 9a 84 lmw.bim $r6,[$sp],$r6,#0xa ! {$r6, $fp, $lp}
a6c: 4a 00 78 20 ret $lp
; ---------- 0xa70: what is this shit
a70: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
a74: 51 cf 80 04 addi $fp,$sp,#0x4
a78: 51 ff ff e8 addi $sp,$sp,#-24
a7c: 14 0e 7f fc swi $r0,[$fp+#-16]
a80: 14 1e 7f fb swi $r1,[$fp+#-20]
a84: 80 02 mov55 $r0,$r2
a86: 80 00 mov55 $r0,$r0
a88: 12 0e 7f f4 shi $r0,[$fp+#-24]
a8c: 3e 0f ff dd addi.gp $r0,#-35
a90: 44 10 00 02 movi $r1,#0x2
a94: 10 10 00 00 sbi $r1,[$r0+#0x0]
a98: 3e 0f ff 70 addi.gp $r0,#-144
a9c: 04 1e 7f fc lwi $r1,[$fp+#-16]
aa0: 14 10 00 00 swi $r1,[$r0+#0x0]
aa4: 48 00 00 a8 j 0xbf4
aa8: 49 ff fd fa jal 0x69c
aac: c0 fe beqz38 $r0,0xaa8
aae: 04 0e 7f fc lwi $r0,[$fp+#-16]
ab2: 80 00 mov55 $r0,$r0
ab4: 10 0e 7f fb sbi $r0,[$fp+#-5]
ab8: 00 0e 7f fb lbi $r0,[$fp+#-5]
abc: 54 10 00 ff andi $r1,$r0,#0xff
ac0: 02 0e 7f f4 lhi $r0,[$fp+#-24]
ac4: 40 00 00 13 zeh $r0,$r0
ac8: 40 00 80 00 add $r0,$r1,$r0
acc: 5e f0 01 01 sltsi $r15,$r0,#0x101
ad0: e9 0b bnezs8 0xae6
ad2: 00 0e 7f fb lbi $r0,[$fp+#-5]
ad6: 54 00 00 ff andi $r0,$r0,#0xff
ada: 52 00 01 00 subri $r0,$r0,#0x100
ade: 80 00 mov55 $r0,$r0
ae0: 12 0e 7f fc shi $r0,[$fp+#-8]
ae4: d5 05 j8 0xaee
ae6: 02 0e 7f f4 lhi $r0,[$fp+#-24]
aea: 12 0e 7f fc shi $r0,[$fp+#-8]
aee: 49 ff ff 11 jal 0x910
af2: 44 00 cd 10 movi $r0,#0xcd10
af6: 04 00 00 00 lwi $r0,[$r0+#0x0]
afa: 44 10 cd 10 movi $r1,#0xcd10
afe: 04 10 80 01 lwi $r1,[$r1+#0x4]
b02: 14 10 00 07 swi $r1,[$r0+#0x1c]
b06: 44 00 00 02 movi $r0,#0x2
b0a: 49 ff fd 8d jal 0x624 ; wait_for_cd60_bit17($r0)
b0e: 04 0e 7f fc lwi $r0,[$fp+#-16]
b12: 40 00 40 09 srli $r0,$r0,#0x10
b16: 54 00 00 ff andi $r0,$r0,#0xff
b1a: 49 ff fd 85 jal 0x624 ; wait_for_cd60_bit17($r0)
b1e: 04 0e 7f fc lwi $r0,[$fp+#-16]
b22: 40 00 20 09 srli $r0,$r0,#0x8
b26: 54 00 00 ff andi $r0,$r0,#0xff
b2a: 49 ff fd 7d jal 0x624 ; wait_for_cd60_bit17($r0)
b2e: 04 0e 7f fc lwi $r0,[$fp+#-16]
b32: 54 00 00 ff andi $r0,$r0,#0xff
b36: 49 ff fd 77 jal 0x624 ; wait_for_cd60_bit17($r0)
b3a: 44 00 00 00 movi $r0,#0x0
b3e: 12 0e 7f fb shi $r0,[$fp+#-10]
b42: d5 16 j8 0xb6e
b44: 02 0e 7f fb lhi $r0,[$fp+#-10]
b48: 40 00 00 13 zeh $r0,$r0
b4c: 04 1e 7f fb lwi $r1,[$fp+#-20]
b50: 40 00 80 00 add $r0,$r1,$r0
b54: 00 00 00 00 lbi $r0,[$r0+#0x0]
b58: 54 00 00 ff andi $r0,$r0,#0xff
b5c: 49 ff fd 64 jal 0x624 ; wait_for_cd60_bit17($r0)
b60: 02 0e 7f fb lhi $r0,[$fp+#-10]
b64: 50 00 00 01 addi $r0,$r0,#0x1
b68: 80 00 mov55 $r0,$r0
b6a: 12 0e 7f fb shi $r0,[$fp+#-10]
b6e: 02 0e 7f fb lhi $r0,[$fp+#-10]
b72: 40 10 00 13 zeh $r1,$r0
b76: 02 0e 7f fc lhi $r0,[$fp+#-8]
b7a: 40 00 00 13 zeh $r0,$r0
b7e: 40 f0 80 06 slt $r15,$r1,$r0
b82: 4e f3 ff e1 bnez $r15,0xb44
b86: 40 00 00 09 nop
b8a: 40 00 00 09 nop
b8e: 40 00 00 09 nop
b92: 40 00 00 09 nop
b96: 40 00 00 09 nop
b9a: 40 00 00 09 nop
b9e: 40 00 00 09 nop
ba2: 40 00 00 09 nop
ba6: 44 00 cd 10 movi $r0,#0xcd10
baa: 04 00 00 00 lwi $r0,[$r0+#0x0]
bae: 44 10 cd 10 movi $r1,#0xcd10
bb2: 04 10 80 01 lwi $r1,[$r1+#0x4]
bb6: 14 10 00 08 swi $r1,[$r0+#0x20]
bba: 02 0e 7f fc lhi $r0,[$fp+#-8]
bbe: 40 00 00 13 zeh $r0,$r0
bc2: 04 1e 7f fb lwi $r1,[$fp+#-20]
bc6: 40 00 80 00 add $r0,$r1,$r0
bca: 14 0e 7f fb swi $r0,[$fp+#-20]
bce: 02 0e 7f fc lhi $r0,[$fp+#-8]
bd2: 40 00 00 13 zeh $r0,$r0
bd6: 04 1e 7f fc lwi $r1,[$fp+#-16]
bda: 40 00 80 00 add $r0,$r1,$r0
bde: 14 0e 7f fc swi $r0,[$fp+#-16]
be2: 02 1e 7f f4 lhi $r1,[$fp+#-24]
be6: 02 0e 7f fc lhi $r0,[$fp+#-8]
bea: 40 00 80 01 sub $r0,$r1,$r0
bee: 80 00 mov55 $r0,$r0
bf0: 12 0e 7f f4 shi $r0,[$fp+#-24]
bf4: 02 0e 7f f4 lhi $r0,[$fp+#-24]
bf8: 40 00 00 13 zeh $r0,$r0
bfc: 4e 03 ff 56 bnez $r0,0xaa8
c00: 51 fe 7f fc addi $sp,$fp,#-4
c04: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
c08: 4a 00 78 20 ret $lp
c0c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
c10: 51 cf 80 04 addi $fp,$sp,#0x4
c14: 51 ff ff f8 addi $sp,$sp,#-8
c18: 14 0e 7f fe swi $r0,[$fp+#-8]
c1c: 3e 0f ff dd addi.gp $r0,#-35
c20: 44 10 00 03 movi $r1,#0x3
c24: 10 10 00 00 sbi $r1,[$r0+#0x0]
c28: 3e 0f ff 70 addi.gp $r0,#-144
c2c: 04 1e 7f fe lwi $r1,[$fp+#-8]
c30: 14 10 00 00 swi $r1,[$r0+#0x0]
c34: 49 ff fe 6e jal 0x910
c38: 44 00 cd 10 movi $r0,#0xcd10
c3c: 04 00 00 00 lwi $r0,[$r0+#0x0]
c40: 44 10 cd 10 movi $r1,#0xcd10
c44: 04 10 80 01 lwi $r1,[$r1+#0x4]
c48: 14 10 00 07 swi $r1,[$r0+#0x1c]
c4c: 44 00 00 20 movi $r0,#0x20
c50: 49 ff fc ea jal 0x624 ; wait_for_cd60_bit17($r0)
c54: 04 0e 7f fe lwi $r0,[$fp+#-8]
c58: 40 00 40 09 srli $r0,$r0,#0x10
c5c: 54 00 00 ff andi $r0,$r0,#0xff
c60: 49 ff fc e2 jal 0x624 ; wait_for_cd60_bit17($r0)
c64: 04 0e 7f fe lwi $r0,[$fp+#-8]
c68: 40 00 20 09 srli $r0,$r0,#0x8
c6c: 54 00 00 ff andi $r0,$r0,#0xff
c70: 49 ff fc da jal 0x624 ; wait_for_cd60_bit17($r0)
c74: 04 0e 7f fe lwi $r0,[$fp+#-8]
c78: 54 00 00 ff andi $r0,$r0,#0xff
c7c: 49 ff fc d4 jal 0x624 ; wait_for_cd60_bit17($r0)
c80: 40 00 00 09 nop
c84: 40 00 00 09 nop
c88: 40 00 00 09 nop
c8c: 40 00 00 09 nop
c90: 40 00 00 09 nop
c94: 40 00 00 09 nop
c98: 40 00 00 09 nop
c9c: 40 00 00 09 nop
ca0: 44 00 cd 10 movi $r0,#0xcd10
ca4: 04 00 00 00 lwi $r0,[$r0+#0x0]
ca8: 44 10 cd 10 movi $r1,#0xcd10
cac: 04 10 80 01 lwi $r1,[$r1+#0x4]
cb0: 14 10 00 08 swi $r1,[$r0+#0x20]
cb4: 51 fe 7f fc addi $sp,$fp,#-4
cb8: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
cbc: 4a 00 78 20 ret $lp
cc0: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
cc4: 51 cf 80 04 addi $fp,$sp,#0x4
cc8: 51 ff ff f8 addi $sp,$sp,#-8
ccc: 14 0e 7f fe swi $r0,[$fp+#-8]
cd0: 3e 0f ff dd addi.gp $r0,#-35
cd4: 44 10 00 04 movi $r1,#0x4
cd8: 10 10 00 00 sbi $r1,[$r0+#0x0]
cdc: 3e 0f ff 70 addi.gp $r0,#-144
ce0: 04 1e 7f fe lwi $r1,[$fp+#-8]
ce4: 14 10 00 00 swi $r1,[$r0+#0x0]
ce8: 49 ff fe 14 jal 0x910
cec: 44 00 cd 10 movi $r0,#0xcd10
cf0: 04 00 00 00 lwi $r0,[$r0+#0x0]
cf4: 44 10 cd 10 movi $r1,#0xcd10
cf8: 04 10 80 01 lwi $r1,[$r1+#0x4]
cfc: 14 10 00 07 swi $r1,[$r0+#0x1c]
d00: 44 00 00 d8 movi $r0,#0xd8
d04: 49 ff fc 90 jal 0x624 ; wait_for_cd60_bit17($r0)
d08: 04 0e 7f fe lwi $r0,[$fp+#-8]
d0c: 40 00 40 09 srli $r0,$r0,#0x10
d10: 54 00 00 ff andi $r0,$r0,#0xff
d14: 49 ff fc 88 jal 0x624 ; wait_for_cd60_bit17($r0)
d18: 04 0e 7f fe lwi $r0,[$fp+#-8]
d1c: 40 00 20 09 srli $r0,$r0,#0x8
d20: 54 00 00 ff andi $r0,$r0,#0xff
d24: 49 ff fc 80 jal 0x624 ; wait_for_cd60_bit17($r0)
d28: 04 0e 7f fe lwi $r0,[$fp+#-8]
d2c: 54 00 00 ff andi $r0,$r0,#0xff
d30: 49 ff fc 7a jal 0x624 ; wait_for_cd60_bit17($r0)
d34: 40 00 00 09 nop
d38: 40 00 00 09 nop
d3c: 40 00 00 09 nop
d40: 40 00 00 09 nop
d44: 40 00 00 09 nop
d48: 40 00 00 09 nop
d4c: 40 00 00 09 nop
d50: 40 00 00 09 nop
d54: 44 00 cd 10 movi $r0,#0xcd10
d58: 04 00 00 00 lwi $r0,[$r0+#0x0]
d5c: 44 10 cd 10 movi $r1,#0xcd10
d60: 04 10 80 01 lwi $r1,[$r1+#0x4]
d64: 14 10 00 08 swi $r1,[$r0+#0x20]
d68: 51 fe 7f fc addi $sp,$fp,#-4
d6c: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
d70: 4a 00 78 20 ret $lp
d74: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
d78: 51 cf 80 04 addi $fp,$sp,#0x4
d7c: 44 00 cd 10 movi $r0,#0xcd10
d80: 04 00 00 00 lwi $r0,[$r0+#0x0]
d84: 44 10 cd 10 movi $r1,#0xcd10
d88: 04 10 80 01 lwi $r1,[$r1+#0x4]
d8c: 14 10 00 07 swi $r1,[$r0+#0x1c]
d90: 44 00 00 66 movi $r0,#0x66
d94: 49 ff fc 48 jal 0x624 ; wait_for_cd60_bit17($r0)
d98: 40 00 00 09 nop
d9c: 40 00 00 09 nop
da0: 40 00 00 09 nop
da4: 40 00 00 09 nop
da8: 40 00 00 09 nop
dac: 40 00 00 09 nop
db0: 40 00 00 09 nop
db4: 40 00 00 09 nop
db8: 44 00 cd 10 movi $r0,#0xcd10
dbc: 04 00 00 00 lwi $r0,[$r0+#0x0]
dc0: 44 10 cd 10 movi $r1,#0xcd10
dc4: 04 10 80 01 lwi $r1,[$r1+#0x4]
dc8: 14 10 00 08 swi $r1,[$r0+#0x20]
dcc: 40 00 00 09 nop
dd0: 40 00 00 09 nop
dd4: 40 00 00 09 nop
dd8: 40 00 00 09 nop
ddc: 40 00 00 09 nop
de0: 40 00 00 09 nop
de4: 40 00 00 09 nop
de8: 40 00 00 09 nop
dec: 44 00 cd 10 movi $r0,#0xcd10
df0: 04 00 00 00 lwi $r0,[$r0+#0x0]
df4: 44 10 cd 10 movi $r1,#0xcd10
df8: 04 10 80 01 lwi $r1,[$r1+#0x4]
dfc: 14 10 00 07 swi $r1,[$r0+#0x1c]
e00: 44 00 00 99 movi $r0,#0x99
e04: 49 ff fc 10 jal 0x624 ; wait_for_cd60_bit17($r0)
e08: 40 00 00 09 nop
e0c: 40 00 00 09 nop
e10: 40 00 00 09 nop
e14: 40 00 00 09 nop
e18: 40 00 00 09 nop
e1c: 40 00 00 09 nop
e20: 40 00 00 09 nop
e24: 40 00 00 09 nop
e28: 44 00 cd 10 movi $r0,#0xcd10
e2c: 04 00 00 00 lwi $r0,[$r0+#0x0]
e30: 44 10 cd 10 movi $r1,#0xcd10
e34: 04 10 80 01 lwi $r1,[$r1+#0x4]
e38: 14 10 00 08 swi $r1,[$r0+#0x20]
e3c: 51 fe 7f fc addi $sp,$fp,#-4
e40: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
e44: 4a 00 78 20 ret $lp
e48: c1 14 beqz38 $r1,0xe70
e4a: a6 80 lbi333 $r2,[$r0+#0x0]
e4c: 44 30 00 ff movi $r3,#0xff
e50: 4c 21 c0 0e bne $r2,$r3,0xe6c
e54: 84 40 movi55 $r2,#0x0
e56: d5 07 j8 0xe64
e58: 38 30 08 00 lb $r3,[$r0+($r2<<#0x0)]
e5c: 44 40 00 ff movi $r4,#0xff
e60: 4c 32 40 06 bne $r3,$r4,0xe6c
e64: 9c 91 addi333 $r2,$r2,#0x1
e66: e2 41 slt45 $r2,$r1
e68: e9 f8 bnezs8 0xe58
e6a: d5 03 j8 0xe70
e6c: 84 01 movi55 $r0,#0x1
e6e: d5 02 j8 0xe72
e70: 84 00 movi55 $r0,#0x0
e72: dd 9e ret5 $lp
e74: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
e78: 84 22 movi55 $r1,#0x2
e7a: 96 00 zeb33 $r0,$r0
e7c: 4c 00 80 12 beq $r0,$r1,0xea0
e80: e6 03 slti45 $r0,#0x3
e82: e8 05 beqzs8 0xe8c
e84: 84 21 movi55 $r1,#0x1
e86: 4c 00 c0 09 bne $r0,$r1,0xe98
e8a: d5 0f j8 0xea8
e8c: 84 23 movi55 $r1,#0x3
e8e: 4c 00 80 11 beq $r0,$r1,0xeb0
e92: 84 24 movi55 $r1,#0x4
e94: 4c 00 80 12 beq $r0,$r1,0xeb8
e98: 44 00 00 f0 movi $r0,#0xf0
e9c: 48 00 00 40 j 0xf1c
ea0: 46 70 00 a0 sethi $r7,#0xa0
ea4: 48 00 00 0c j 0xebc
ea8: 46 70 00 80 sethi $r7,#0x80
eac: 48 00 00 08 j 0xebc
eb0: 46 70 00 c0 sethi $r7,#0xc0
eb4: 48 00 00 04 j 0xebc
eb8: 46 70 00 e0 sethi $r7,#0xe0
ebc: 2e 17 ff dc lbi.gp $r1,[+#-36]
ec0: c9 04 bnez38 $r1,0xec8
ec2: 84 04 movi55 $r0,#0x4
ec4: 48 00 00 2c j 0xf1c
ec8: 2e 17 ff ea lbi.gp $r1,[+#-22]
ecc: 4c 10 00 04 beq $r1,$r0,0xed4
ed0: 48 00 00 16 j 0xefc
ed4: 3c 0d ff e0 lwi.gp $r0,[+#-128]
ed8: 44 10 a5 50 movi $r1,#0xa550
edc: 4c 00 80 03 beq $r0,$r1,0xee2
ee0: d5 0e j8 0xefc
ee2: 84 20 movi55 $r1,#0x0
ee4: 3e 08 03 00 addi.gp $r0,#0x300
ee8: 44 20 02 10 movi $r2,#0x210
eec: 49 00 48 e6 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
ef0: 84 21 movi55 $r1,#0x1
ef2: 3e 17 ff e8 sbi.gp $r1,[+#-24]
ef6: 84 00 movi55 $r0,#0x0
ef8: 3c 0f ff e0 swi.gp $r0,[+#-128]
efc: 49 ff fb d0 jal 0x69c
f00: c0 fe beqz38 $r0,0xefc
f02: 80 07 mov55 $r0,$r7
f04: 49 ff fe de jal 0xcc0
f08: 49 ff fb ca jal 0x69c
f0c: c0 fe beqz38 $r0,0xf08
f0e: 44 11 00 00 movi $r1,#0x10000
f12: 98 39 add333 $r0,$r7,$r1
f14: 49 ff fe d6 jal 0xcc0
f18: 44 00 00 00 movi $r0,#0x0
f1c: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
f20: dd 9e ret5 $lp
f22: 92 00 nop16
f24: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
f28: 84 22 movi55 $r1,#0x2
f2a: 96 00 zeb33 $r0,$r0
f2c: 4c 00 80 1a beq $r0,$r1,0xf60
f30: e6 03 slti45 $r0,#0x3
f32: e8 05 beqzs8 0xf3c
f34: 84 21 movi55 $r1,#0x1
f36: 4c 00 c0 09 bne $r0,$r1,0xf48
f3a: d5 1d j8 0xf74
f3c: 84 23 movi55 $r1,#0x3
f3e: 4c 00 80 09 beq $r0,$r1,0xf50
f42: 84 24 movi55 $r1,#0x4
f44: 4c 00 80 0a beq $r0,$r1,0xf58
f48: 44 00 00 f0 movi $r0,#0xf0
f4c: 48 00 00 16 j 0xf78
f50: 44 65 00 00 movi $r6,#0x50000
f54: 48 00 00 08 j 0xf64
f58: 44 67 00 00 movi $r6,#0x70000
f5c: 48 00 00 04 j 0xf64
f60: 44 63 00 00 movi $r6,#0x30000
f64: 49 ff fb 9c jal 0x69c
f68: c8 03 bnez38 $r0,0xf6e
f6a: 84 01 movi55 $r0,#0x1
f6c: d5 06 j8 0xf78
f6e: 80 06 mov55 $r0,$r6
f70: 49 ff fe a8 jal 0xcc0
f74: 44 00 00 00 movi $r0,#0x0
f78: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
f7c: dd 9e ret5 $lp
f7e: 92 00 nop16
f80: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
f84: 81 21 mov55 $r9,$r1 ; $r9 = saved_r1
f86: 96 00 zeb33 $r0,$r0 ; $r0 &= 0xff
f88: 84 22 movi55 $r1,#0x2 ; $r1 = 0x2
f8a: 81 02 mov55 $r8,$r2 ; $r8 = saved_r2
f8c: 81 43 mov55 $r10,$r3 ; $r10 = saved_r3
f8e: 4c 00 80 0f beq $r0,$r1,0xfac ; if $r0 == 2: goto 0xfac
f92: e6 03 slti45 $r0,#0x3 ;
f94: e8 05 beqzs8 0xf9e
f96: 84 21 movi55 $r1,#0x1
f98: 4c 00 c0 2a bne $r0,$r1,0xfec
f9c: d5 0c j8 0xfb4
f9e: 84 23 movi55 $r1,#0x3
fa0: 4c 00 80 0e beq $r0,$r1,0xfbc
fa4: 84 24 movi55 $r1,#0x4
fa6: 4c 00 c0 23 bne $r0,$r1,0xfec
faa: d5 0d j8 0xfc4
fac: 46 60 00 a0 sethi $r6,#0xa0
fb0: 48 00 00 0c j 0xfc8
fb4: 46 60 00 80 sethi $r6,#0x80
fb8: 48 00 00 08 j 0xfc8
fbc: 46 60 00 c0 sethi $r6,#0xc0
fc0: 48 00 00 04 j 0xfc8
fc4: 46 60 00 e0 sethi $r6,#0xe0
fc8: 46 f0 01 00 sethi $r15,#0x100
fcc: 2e 47 ff dc lbi.gp $r4,[+#-36]
fd0: 4e 42 00 0e beqz $r4,0xfec ; if $gp-36 == 0: goto out
fd4: 49 ff fb 64 jal 0x69c ;
fd8: c0 fe beqz38 $r0,0xfd4
fda: 40 03 28 00 add $r0,$r6,$r10
fde: 80 29 mov55 $r1,$r9
fe0: 50 24 00 00 addi $r2,$r8,#0x0
fe4: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
fe8: 48 ff fc c6 j 0x974
fec: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
ff0: dd 9e ret5 $lp
ff2: 92 00 nop16
ff4: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
ff8: ef f4 addi10.sp #-12
ffa: 54 80 80 ff andi $r8,$r1,#0xff
ffe: 96 00 zeb33 $r0,$r0
1000: 84 23 movi55 $r1,#0x3
1002: 83 82 mov55 $fp,$r2
1004: 4c 00 80 0a beq $r0,$r1,0x1018
1008: 84 24 movi55 $r1,#0x4
100a: 4c 00 80 13 beq $r0,$r1,0x1030
100e: 84 22 movi55 $r1,#0x2
1010: 4c 00 c0 35 bne $r0,$r1,0x107a
1014: 48 00 00 08 j 0x1024
1018: 44 75 00 00 movi $r7,#0x50000
101c: 44 60 30 9c movi $r6,#0x309c
1020: 48 00 00 0c j 0x1038
1024: 44 73 00 00 movi $r7,#0x30000
1028: 44 60 30 9c movi $r6,#0x309c
102c: 48 00 00 06 j 0x1038
1030: 44 77 00 00 movi $r7,#0x70000
1034: 44 60 30 9c movi $r6,#0x309c
1038: dd 26 jral5 $r6
103a: c0 ff beqz38 $r0,0x1038
103c: 44 00 fe 00 movi $r0,#0xfe00
1040: 80 df mov55 $r6,$sp
1042: 40 a3 80 00 add $r10,$r7,$r0
1046: 80 07 mov55 $r0,$r7
1048: 80 26 mov55 $r1,$r6
104a: 84 48 movi55 $r2,#0x8
104c: 49 ff fc 94 jal 0x974
1050: a4 30 lhi333 $r0,[$r6+#0x0]
1052: 44 10 55 aa movi $r1,#0x55aa
1056: 4c 00 c0 12 bne $r0,$r1,0x107a
105a: a6 35 lbi333 $r0,[$r6+#0x5]
105c: 4c 04 40 0a bne $r0,$r8,0x1070
1060: 80 07 mov55 $r0,$r7
1062: 80 3c mov55 $r1,$fp
1064: 44 20 02 00 movi $r2,#0x200
1068: 49 ff fc 86 jal 0x974
106c: 84 01 movi55 $r0,#0x1
106e: d5 07 j8 0x107c
1070: 4c 75 00 05 beq $r7,$r10,0x107a
1074: 50 73 82 00 addi $r7,$r7,#0x200
1078: d5 e7 j8 0x1046
107a: 84 00 movi55 $r0,#0x0
107c: ec 0c addi10.sp #0xc
107e: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1082: dd 9e ret5 $lp
; ---------- 0x1084: func_1084(b1=$r0, addr=$r1, size=$r2, arg3=$r3
1084: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1088: 97 00 zeb33 $r4,$r0
108a: 84 02 movi55 $r0,#0x2
108c: 81 01 mov55 $r8,$r1
108e: 80 e2 mov55 $r7,$r2
1090: 81 43 mov55 $r10,$r3
1092: 4c 40 00 0f beq $r4,$r0,0x10b0
1096: e6 83 slti45 $r4,#0x3
1098: e8 05 beqzs8 0x10a2
109a: 84 01 movi55 $r0,#0x1
109c: 4c 40 40 30 bne $r4,$r0,0x10fc
10a0: d5 0c j8 0x10b8
10a2: 84 03 movi55 $r0,#0x3
10a4: 4c 40 00 0e beq $r4,$r0,0x10c0
10a8: 84 04 movi55 $r0,#0x4
10aa: 4c 40 40 29 bne $r4,$r0,0x10fc
10ae: d5 0d j8 0x10c8
10b0: 44 92 a0 00 movi $r9,#0x2a000
10b4: 48 00 00 0c j 0x10cc
10b8: 44 90 a0 00 movi $r9,#0xa000
10bc: 48 00 00 08 j 0x10cc
10c0: 44 94 a0 00 movi $r9,#0x4a000
10c4: 48 00 00 04 j 0x10cc
10c8: 44 96 a0 00 movi $r9,#0x6a000
10cc: 44 10 00 ff movi $r1,#0xff
10d0: 80 08 mov55 $r0,$r8
10d2: 80 47 mov55 $r2,$r7
10d4: 49 00 47 f2 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
10d8: 46 f0 01 00 sethi $r15,#0x100
10dc: 2e 17 ff dc lbi.gp $r1,[+#-36]
10e0: 4e 12 00 0e beqz $r1,0x10fc
10e4: 49 ff fa dc jal 0x69c
10e8: c0 fe beqz38 $r0,0x10e4
10ea: 40 04 a8 00 add $r0,$r9,$r10
10ee: 80 28 mov55 $r1,$r8
10f0: 50 23 80 00 addi $r2,$r7,#0x0
10f4: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
10f8: 48 ff fc 3e j 0x974
10fc: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1100: dd 9e ret5 $lp
1102: 92 00 nop16
1104: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1108: ef dc addi10.sp #-36
110a: 83 80 mov55 $fp,$r0
110c: 81 21 mov55 $r9,$r1
110e: 85 00 movi55 $r8,#0x0
1110: 44 70 00 20 movi $r7,#0x20
1114: 50 6f 80 00 addi $r6,$sp,#0x0
1118: 50 14 00 20 addi $r1,$r8,#0x20
111c: e3 21 slt45 $r9,$r1
111e: e8 05 beqzs8 0x1128
1120: 40 74 a0 01 sub $r7,$r9,$r8
1124: 54 73 80 ff andi $r7,$r7,#0xff
1128: 40 04 70 00 add $r0,$r8,$fp
112c: 80 3f mov55 $r1,$sp
112e: 80 47 mov55 $r2,$r7
1130: 49 ff fc 22 jal 0x974
1134: c7 15 beqz38 $r7,0x115e
1136: a6 70 lbi333 $r1,[$r6+#0x0]
1138: 44 00 00 ff movi $r0,#0xff
113c: 4c 10 40 0c bne $r1,$r0,0x1154
1140: 84 60 movi55 $r3,#0x0
1142: d5 05 j8 0x114c
1144: 38 23 0c 00 lb $r2,[$r6+($r3<<#0x0)]
1148: 4c 20 40 06 bne $r2,$r0,0x1154
114c: 9c d9 addi333 $r3,$r3,#0x1
114e: e2 67 slt45 $r3,$r7
1150: e9 fa bnezs8 0x1144
1152: d5 06 j8 0x115e
1154: 84 00 movi55 $r0,#0x0
1156: ec 24 addi10.sp #0x24
1158: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
115c: dd 9e ret5 $lp
115e: 89 07 add45 $r8,$r7
1160: 4c 84 ff dc bne $r8,$r9,0x1118
1164: 84 01 movi55 $r0,#0x1
1166: d5 f8 j8 0x1156
; ---------- 0x1168: func_1168(byte1=$r0, addr=$r1, size=$r2, arg3=$r3)
1168: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
116c: ef fc addi10.sp #-4
116e: 97 80 zeb33 $r6,$r0
1170: 81 41 mov55 $r10,$r1
1172: 81 02 mov55 $r8,$r2
1174: 45 c0 ca a4 movi $fp,#0xcaa4
1178: 3e 08 11 48 addi.gp $r0,#0x1148
117c: 44 10 d9 c0 movi $r1,#0xd9c0
1180: 44 20 01 e0 movi $r2,#0x1e0
1184: 81 23 mov55 $r9,$r3
1186: dd 3c jral5 $fp
1188: 84 03 movi55 $r0,#0x3
118a: 4c 60 00 09 beq $r6,$r0,0x119c
118e: 84 24 movi55 $r1,#0x4
1190: 4c 60 80 12 beq $r6,$r1,0x11b4
1194: 84 02 movi55 $r0,#0x2
1196: 4c 60 40 49 bne $r6,$r0,0x1228
119a: d5 07 j8 0x11a8
119c: 44 74 30 00 movi $r7,#0x43000
11a0: 44 60 30 9c movi $r6,#0x309c
11a4: 48 00 00 0c j 0x11bc
11a8: 44 72 30 00 movi $r7,#0x23000
11ac: 44 60 30 9c movi $r6,#0x309c
11b0: 48 00 00 06 j 0x11bc
11b4: 44 76 30 00 movi $r7,#0x63000
11b8: 44 60 30 9c movi $r6,#0x309c
11bc: 4b e0 18 01 jral $lp,$r6
11c0: c0 fe beqz38 $r0,0x11bc
11c2: 88 e9 add45 $r7,$r9
11c4: 80 07 mov55 $r0,$r7
11c6: 80 28 mov55 $r1,$r8
11c8: 49 ff ff 9e jal 0x1104
11cc: c8 2e bnez38 $r0,0x1228
11ce: 80 07 mov55 $r0,$r7
11d0: 80 48 mov55 $r2,$r8
11d2: 80 2a mov55 $r1,$r10
11d4: 49 ff fb d0 jal 0x974
11d8: 44 90 d9 c0 movi $r9,#0xd9c0
11dc: d5 22 j8 0x1220
11de: a6 30 lbi333 $r0,[$r6+#0x0]
11e0: 44 10 00 ff movi $r1,#0xff
11e4: 4c 00 c0 0f bne $r0,$r1,0x1202
11e8: a6 b1 lbi333 $r2,[$r6+#0x1]
11ea: 4c 20 40 0c bne $r2,$r0,0x1202
11ee: a6 32 lbi333 $r0,[$r6+#0x2]
11f0: 4c 01 40 09 bne $r0,$r2,0x1202
11f4: a6 73 lbi333 $r1,[$r6+#0x3]
11f6: 4c 10 40 06 bne $r1,$r0,0x1202
11fa: 80 06 mov55 $r0,$r6
11fc: 80 28 mov55 $r1,$r8
11fe: 84 44 movi55 $r2,#0x4
1200: dd 3c jral5 $fp
1202: 9d f9 addi333 $r7,$r7,#0x1
1204: 97 f9 zeh33 $r7,$r7
1206: 84 08 movi55 $r0,#0x8
1208: 9d b4 addi333 $r6,$r6,#0x4
120a: 8d 04 addi45 $r8,#0x4
120c: 4c 70 7f e9 bne $r7,$r0,0x11de
1210: 50 94 80 20 addi $r9,$r9,#0x20
1214: 44 10 db a0 movi $r1,#0xdba0
1218: 50 a5 00 20 addi $r10,$r10,#0x20
121c: 4c 90 80 06 beq $r9,$r1,0x1228
1220: 81 09 mov55 $r8,$r9
1222: 80 ca mov55 $r6,$r10
1224: 84 e0 movi55 $r7,#0x0
1226: d5 dc j8 0x11de
1228: ec 04 addi10.sp #0x4
122a: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
122e: dd 9e ret5 $lp
; ---------- 0x1230: func_1230(byte arg1=$r0, void *addr=$r1, size=$r2, arg3=$r3)
1230: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1234: ef fc addi10.sp #-4
1236: 81 41 mov55 $r10,$r1
1238: 96 00 zeb33 $r0,$r0
123a: 84 22 movi55 $r1,#0x2
123c: 81 02 mov55 $r8,$r2
123e: 81 23 mov55 $r9,$r3
1240: 4c 00 80 10 beq $r0,$r1,0x1260
1244: e6 03 slti45 $r0,#0x3
1246: e8 05 beqzs8 0x1250
1248: 84 21 movi55 $r1,#0x1
124a: 4c 00 c0 5b bne $r0,$r1,0x1300
124e: d5 0f j8 0x126c
1250: 84 23 movi55 $r1,#0x3
1252: 4c 00 80 13 beq $r0,$r1,0x1278
1256: 84 24 movi55 $r1,#0x4
1258: 4c 00 c0 54 bne $r0,$r1,0x1300
125c: 48 00 00 14 j 0x1284
1260: 44 72 20 00 movi $r7,#0x22000
1264: 44 60 30 9c movi $r6,#0x309c
1268: 48 00 00 12 j 0x128c
126c: 44 70 40 00 movi $r7,#0x4000
1270: 44 60 30 9c movi $r6,#0x309c
1274: 48 00 00 0c j 0x128c
1278: 44 74 20 00 movi $r7,#0x42000
127c: 44 60 30 9c movi $r6,#0x309c
1280: 48 00 00 06 j 0x128c
1284: 44 76 20 00 movi $r7,#0x62000
1288: 44 60 30 9c movi $r6,#0x309c
128c: 4b e0 18 01 jral $lp,$r6 ; jump to 0x309c
1290: c0 fe beqz38 $r0,0x128c
1292: 88 e9 add45 $r7,$r9
1294: 80 07 mov55 $r0,$r7
1296: 80 28 mov55 $r1,$r8
1298: 49 ff ff 36 jal 0x1104
129c: c8 32 bnez38 $r0,0x1300
129e: 80 07 mov55 $r0,$r7
12a0: 80 48 mov55 $r2,$r8
12a2: 80 2a mov55 $r1,$r10
12a4: 47 c0 00 0c sethi $fp,#0xc
12a8: 49 ff fb 66 jal 0x974
12ac: 44 90 d7 e0 movi $r9,#0xd7e0
12b0: 45 c0 ca a4 movi $fp,#0xcaa4
12b4: d5 22 j8 0x12f8
12b6: a6 30 lbi333 $r0,[$r6+#0x0]
12b8: 44 10 00 ff movi $r1,#0xff
12bc: 4c 00 c0 0f bne $r0,$r1,0x12da
12c0: a6 b1 lbi333 $r2,[$r6+#0x1]
12c2: 4c 20 40 0c bne $r2,$r0,0x12da
12c6: a6 32 lbi333 $r0,[$r6+#0x2]
12c8: 4c 01 40 09 bne $r0,$r2,0x12da
12cc: a6 73 lbi333 $r1,[$r6+#0x3]
12ce: 4c 10 40 06 bne $r1,$r0,0x12da
12d2: 80 06 mov55 $r0,$r6
12d4: 80 28 mov55 $r1,$r8
12d6: 84 44 movi55 $r2,#0x4
12d8: dd 3c jral5 $fp
12da: 9d f9 addi333 $r7,$r7,#0x1
12dc: 97 f9 zeh33 $r7,$r7
12de: 84 08 movi55 $r0,#0x8
12e0: 9d b4 addi333 $r6,$r6,#0x4
12e2: 8d 04 addi45 $r8,#0x4
12e4: 4c 70 7f e9 bne $r7,$r0,0x12b6
12e8: 50 94 80 20 addi $r9,$r9,#0x20
12ec: 44 10 d9 c0 movi $r1,#0xd9c0
12f0: 50 a5 00 20 addi $r10,$r10,#0x20
12f4: 4c 90 80 06 beq $r9,$r1,0x1300
12f8: 81 09 mov55 $r8,$r9
12fa: 80 ca mov55 $r6,$r10
12fc: 84 e0 movi55 $r7,#0x0
12fe: d5 dc j8 0x12b6
1300: ec 04 addi10.sp #0x4
1302: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1306: dd 9e ret5 $lp
1308: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
130c: ef ec addi10.sp #-20
130e: 47 c0 01 00 sethi $fp,#0x100
1312: 84 1f movi55 $r0,#-1
1314: 3c 0b ff eb shi.gp $r0,[+#-42]
1318: 49 ff f9 c2 jal 0x69c
131c: c0 fe beqz38 $r0,0x1318
131e: 85 00 movi55 $r8,#0x0
1320: 84 1f movi55 $r0,#-1
1322: f0 81 swi37.sp $r0,[+#0x4]
1324: 50 6f 80 08 addi $r6,$sp,#0x8
1328: 80 e8 mov55 $r7,$r8
132a: d5 03 j8 0x1330
132c: 50 80 00 00 addi $r8,$r0,#0x0
1330: 44 11 80 00 movi $r1,#0x18000
1334: 98 39 add333 $r0,$r7,$r1
1336: 84 48 movi55 $r2,#0x8
1338: 50 13 00 00 addi $r1,$r6,#0x0
133c: 49 ff fb 1c jal 0x974
1340: 44 20 80 00 movi $r2,#0x8000
1344: 4c 71 40 57 bne $r7,$r2,0x13f2
1348: 3c 03 ff eb lhi.gp $r0,[+#-42]
134c: 44 30 ff ff movi $r3,#0xffff
1350: 4c 01 c0 24 bne $r0,$r3,0x1398
1354: 44 40 7e 00 movi $r4,#0x7e00
1358: 3e 08 06 60 addi.gp $r0,#0x660
135c: 84 20 movi55 $r1,#0x0
135e: 44 20 00 80 movi $r2,#0x80
1362: 3c 4b ff eb shi.gp $r4,[+#-42]
1366: 84 c0 movi55 $r6,#0x0
1368: 49 00 46 a8 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
136c: 49 ff f9 98 jal 0x69c
1370: c0 fe beqz38 $r0,0x136c
1372: 44 11 80 00 movi $r1,#0x18000
1376: 98 31 add333 $r0,$r6,$r1
1378: 50 63 10 00 addi $r6,$r6,#0x1000
137c: 49 ff fc 48 jal 0xc0c
1380: 97 b1 zeh33 $r6,$r6
1382: 44 20 80 00 movi $r2,#0x8000
1386: 4c 61 7f f3 bne $r6,$r2,0x136c
138a: 46 00 01 00 sethi $r0,#0x100
138e: 84 21 movi55 $r1,#0x1
1390: 3e 17 ff e1 sbi.gp $r1,[+#-31]
1394: 48 00 00 43 j 0x141a
1398: 44 31 80 00 movi $r3,#0x18000
139c: 98 03 add333 $r0,$r0,$r3
139e: 80 26 mov55 $r1,$r6
13a0: 44 20 00 08 movi $r2,#0x8
13a4: 49 ff fa e8 jal 0x974
13a8: 3c 03 ff eb lhi.gp $r0,[+#-42]
13ac: 44 21 80 08 movi $r2,#0x18008
13b0: 98 02 add333 $r0,$r0,$r2
13b2: 3e 18 06 60 addi.gp $r1,#0x660
13b6: 44 20 00 78 movi $r2,#0x78
13ba: 49 ff fa dd jal 0x974
13be: 3e 18 06 60 addi.gp $r1,#0x660
13c2: 44 00 ff ff movi $r0,#0xffff
13c6: 44 20 00 78 movi $r2,#0x78
13ca: 49 ff f8 7b jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> (short)$r0
13ce: a4 71 lhi333 $r1,[$r6+#0x2]
13d0: 4c 10 40 08 bne $r1,$r0,0x13e0
13d4: a1 b1 lwi333 $r6,[$r6+#0x4]
13d6: 46 00 01 00 sethi $r0,#0x100
13da: 3c 6f ff de swi.gp $r6,[+#-136]
13de: d5 1e j8 0x141a
13e0: 84 e0 movi55 $r7,#0x0
13e2: 84 3f movi55 $r1,#-1
13e4: 3c 1b ff eb shi.gp $r1,[+#-42]
13e8: 14 8f 80 01 swi $r8,[$sp+#0x4]
13ec: 80 07 mov55 $r0,$r7
13ee: 48 ff ff 9f j 0x132c
13f2: a4 30 lhi333 $r0,[$r6+#0x0]
13f4: 44 20 55 aa movi $r2,#0x55aa
13f8: 4c 01 40 0b bne $r0,$r2,0x140e
13fc: a0 31 lwi333 $r0,[$r6+#0x4]
13fe: e3 00 slt45 $r8,$r0
1400: e8 07 beqzs8 0x140e
1402: f3 01 lwi37.sp $r3,[+#0x4]
1404: e2 03 slt45 $r0,$r3
1406: e8 04 beqzs8 0x140e
1408: 3c 7b ff eb shi.gp $r7,[+#-42]
140c: d5 02 j8 0x1410
140e: 80 08 mov55 $r0,$r8
1410: 50 73 82 00 addi $r7,$r7,#0x200
1414: 97 f9 zeh33 $r7,$r7
1416: 48 ff ff 8b j 0x132c
141a: ec 14 addi10.sp #0x14
141c: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1420: dd 9e ret5 $lp
1422: 92 00 nop16
1424: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1428: ef ec addi10.sp #-20
142a: 47 c0 01 00 sethi $fp,#0x100
142e: 84 1f movi55 $r0,#-1
1430: 3c 0b ff ea shi.gp $r0,[+#-44]
1434: 49 ff f9 34 jal 0x69c
1438: c0 fe beqz38 $r0,0x1434
143a: 85 00 movi55 $r8,#0x0
143c: 84 1f movi55 $r0,#-1
143e: f0 81 swi37.sp $r0,[+#0x4]
1440: 50 6f 80 08 addi $r6,$sp,#0x8
1444: 80 e8 mov55 $r7,$r8
1446: d5 03 j8 0x144c
1448: 50 80 00 00 addi $r8,$r0,#0x0
144c: 44 11 00 00 movi $r1,#0x10000
1450: 98 39 add333 $r0,$r7,$r1
1452: 84 48 movi55 $r2,#0x8
1454: 50 13 00 00 addi $r1,$r6,#0x0
1458: 49 ff fa 8e jal 0x974
145c: 44 20 80 00 movi $r2,#0x8000
1460: 4c 71 40 54 bne $r7,$r2,0x1508
1464: 3c 03 ff ea lhi.gp $r0,[+#-44]
1468: 44 30 ff ff movi $r3,#0xffff
146c: 4c 01 c0 23 bne $r0,$r3,0x14b2
1470: 44 40 7e 00 movi $r4,#0x7e00
1474: 3e 08 15 2c addi.gp $r0,#0x152c
1478: 84 20 movi55 $r1,#0x0
147a: 44 20 02 00 movi $r2,#0x200
147e: 3c 4b ff ea shi.gp $r4,[+#-44]
1482: 84 c0 movi55 $r6,#0x0
1484: 49 00 46 1a jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
1488: 49 ff f9 0a jal 0x69c
148c: c0 fe beqz38 $r0,0x1488
148e: 44 11 00 00 movi $r1,#0x10000
1492: 98 31 add333 $r0,$r6,$r1
1494: 50 63 10 00 addi $r6,$r6,#0x1000
1498: 49 ff fb ba jal 0xc0c
149c: 97 b1 zeh33 $r6,$r6
149e: 44 20 80 00 movi $r2,#0x8000
14a2: 4c 61 7f f3 bne $r6,$r2,0x1488
14a6: 46 00 01 00 sethi $r0,#0x100
14aa: 84 21 movi55 $r1,#0x1
14ac: 3e 17 ff e0 sbi.gp $r1,[+#-32]
14b0: d5 41 j8 0x1532
14b2: 94 d1 slli333 $r3,$r2,#0x1
14b4: 98 03 add333 $r0,$r0,$r3
14b6: 80 26 mov55 $r1,$r6
14b8: 44 20 00 08 movi $r2,#0x8
14bc: 49 ff fa 5c jal 0x974
14c0: 3c 03 ff ea lhi.gp $r0,[+#-44]
14c4: 44 21 00 08 movi $r2,#0x10008
14c8: 98 02 add333 $r0,$r0,$r2
14ca: 3e 18 15 2c addi.gp $r1,#0x152c
14ce: 44 20 01 f8 movi $r2,#0x1f8
14d2: 49 ff fa 51 jal 0x974
14d6: 3e 18 15 2c addi.gp $r1,#0x152c
14da: 44 00 ff ff movi $r0,#0xffff
14de: 44 20 01 f8 movi $r2,#0x1f8
14e2: 49 ff f7 ef jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> (short)$r0
14e6: a4 71 lhi333 $r1,[$r6+#0x2]
14e8: 4c 10 40 08 bne $r1,$r0,0x14f8
14ec: a1 b1 lwi333 $r6,[$r6+#0x4]
14ee: 46 00 01 00 sethi $r0,#0x100
14f2: 3c 6f ff dd swi.gp $r6,[+#-140]
14f6: d5 1e j8 0x1532
14f8: 84 e0 movi55 $r7,#0x0
14fa: 84 3f movi55 $r1,#-1
14fc: 3c 1b ff ea shi.gp $r1,[+#-44]
1500: 14 8f 80 01 swi $r8,[$sp+#0x4]
1504: 80 07 mov55 $r0,$r7
1506: d5 a1 j8 0x1448
1508: a4 30 lhi333 $r0,[$r6+#0x0]
150a: 44 20 55 aa movi $r2,#0x55aa
150e: 4c 01 40 0b bne $r0,$r2,0x1524
1512: a0 31 lwi333 $r0,[$r6+#0x4]
1514: e3 00 slt45 $r8,$r0
1516: e8 07 beqzs8 0x1524
1518: f3 01 lwi37.sp $r3,[+#0x4]
151a: e2 03 slt45 $r0,$r3
151c: e8 04 beqzs8 0x1524
151e: 3c 7b ff ea shi.gp $r7,[+#-44]
1522: d5 03 j8 0x1528
1524: 50 04 00 00 addi $r0,$r8,#0x0
1528: 50 73 82 00 addi $r7,$r7,#0x200
152c: 97 f9 zeh33 $r7,$r7
152e: 48 ff ff 8d j 0x1448
1532: ec 14 addi10.sp #0x14
1534: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1538: dd 9e ret5 $lp
153a: 92 00 nop16
153c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
1540: ef fc addi10.sp #-4
1542: 84 22 movi55 $r1,#0x2
1544: 96 00 zeb33 $r0,$r0
1546: 4c 00 80 13 beq $r0,$r1,0x156c
154a: e6 03 slti45 $r0,#0x3
154c: e8 05 beqzs8 0x1556
154e: 84 21 movi55 $r1,#0x1
1550: 4c 00 c0 0a bne $r0,$r1,0x1564
1554: d5 10 j8 0x1574
1556: 84 23 movi55 $r1,#0x3
1558: 4c 00 80 12 beq $r0,$r1,0x157c
155c: 44 10 00 04 movi $r1,#0x4
1560: 4c 00 80 12 beq $r0,$r1,0x1584
1564: 44 00 00 f0 movi $r0,#0xf0
1568: 48 00 00 1d j 0x15a2
156c: 44 72 a0 00 movi $r7,#0x2a000
1570: 48 00 00 0c j 0x1588
1574: 44 70 a0 00 movi $r7,#0xa000
1578: 48 00 00 08 j 0x1588
157c: 44 74 a0 00 movi $r7,#0x4a000
1580: 48 00 00 04 j 0x1588
1584: 44 76 a0 00 movi $r7,#0x6a000
1588: 2e 07 ff dc lbi.gp $r0,[+#-36]
158c: c0 02 beqz38 $r0,0x1590
158e: d5 03 j8 0x1594
1590: 84 04 movi55 $r0,#0x4
1592: d5 08 j8 0x15a2
1594: 49 ff f8 84 jal 0x69c
1598: c0 fe beqz38 $r0,0x1594
159a: 80 07 mov55 $r0,$r7
159c: 49 ff fb 38 jal 0xc0c
15a0: 84 00 movi55 $r0,#0x0
15a2: ec 04 addi10.sp #0x4
15a4: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
15a8: dd 9e ret5 $lp
15aa: 92 00 nop16
; ---------- 0x15ac: val_handler(val=$r0)
15ac: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
15b0: 84 23 movi55 $r1,#0x3
15b2: 96 00 zeb33 $r0,$r0
15b4: 4c 00 80 0c beq $r0,$r1,0x15cc ; if $r0 == 3..
15b8: 84 24 movi55 $r1,#0x4
15ba: 4c 00 80 11 beq $r0,$r1,0x15dc ; if $r0 == 4..
15be: 84 22 movi55 $r1,#0x2
15c0: 4c 00 80 0a beq $r0,$r1,0x15d4 ; if $r0 == 2..
15c4: 44 00 00 f0 movi $r0,#0xf0 ; else: rv = 0xf0
15c8: 48 00 00 16 j 0x15f4 ; goto out
15cc: 44 64 30 00 movi $r6,#0x43000 ; 3) $r6 = 0x43000 ;;
15d0: 48 00 00 08 j 0x15e0
15d4: 44 62 30 00 movi $r6,#0x23000 ; 2) $r6 = 0x23000 ;;
15d8: 48 00 00 04 j 0x15e0
15dc: 44 66 30 00 movi $r6,#0x63000 ; 4) $r6 = 0630000 ;;
15e0: 49 ff f8 5e jal 0x69c
15e4: c8 03 bnez38 $r0,0x15ea
15e6: 84 01 movi55 $r0,#0x1
15e8: d5 06 j8 0x15f4
15ea: 80 06 mov55 $r0,$r6
15ec: 49 ff fb 10 jal 0xc0c
15f0: 44 00 00 00 movi $r0,#0x0
15f4: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
15f8: dd 9e ret5 $lp
15fa: 92 00 nop16
15fc: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
1600: 84 22 movi55 $r1,#0x2
1602: 96 00 zeb33 $r0,$r0
1604: 4c 00 80 12 beq $r0,$r1,0x1628
1608: e6 03 slti45 $r0,#0x3
160a: e8 05 beqzs8 0x1614
160c: 84 21 movi55 $r1,#0x1
160e: 4c 00 c0 09 bne $r0,$r1,0x1620
1612: d5 0f j8 0x1630
1614: 84 23 movi55 $r1,#0x3
1616: 4c 00 80 11 beq $r0,$r1,0x1638
161a: 84 24 movi55 $r1,#0x4
161c: 4c 00 80 12 beq $r0,$r1,0x1640
1620: 44 00 00 f0 movi $r0,#0xf0
1624: 48 00 00 1a j 0x1658
1628: 44 62 20 00 movi $r6,#0x22000
162c: 48 00 00 0c j 0x1644
1630: 44 60 40 00 movi $r6,#0x4000
1634: 48 00 00 08 j 0x1644
1638: 44 64 20 00 movi $r6,#0x42000
163c: 48 00 00 04 j 0x1644
1640: 44 66 20 00 movi $r6,#0x62000
1644: 49 ff f8 2c jal 0x69c
1648: c8 03 bnez38 $r0,0x164e
164a: 84 01 movi55 $r0,#0x1
164c: d5 06 j8 0x1658
164e: 80 06 mov55 $r0,$r6
1650: 49 ff fa de jal 0xc0c
1654: 44 00 00 00 movi $r0,#0x0
1658: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
165c: dd 9e ret5 $lp
165e: 92 00 nop16
1660: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
1664: 84 23 movi55 $r1,#0x3
1666: 96 00 zeb33 $r0,$r0
1668: 4c 00 80 0c beq $r0,$r1,0x1680
166c: 84 24 movi55 $r1,#0x4
166e: 4c 00 80 11 beq $r0,$r1,0x1690
1672: 84 22 movi55 $r1,#0x2
1674: 4c 00 80 0a beq $r0,$r1,0x1688
1678: 44 00 00 f0 movi $r0,#0xf0
167c: 48 00 00 16 j 0x16a8
1680: 44 64 10 00 movi $r6,#0x41000
1684: 48 00 00 08 j 0x1694
1688: 44 62 10 00 movi $r6,#0x21000
168c: 48 00 00 04 j 0x1694
1690: 44 66 10 00 movi $r6,#0x61000
1694: 49 ff f8 04 jal 0x69c
1698: c8 03 bnez38 $r0,0x169e
169a: 84 01 movi55 $r0,#0x1
169c: d5 06 j8 0x16a8
169e: 80 06 mov55 $r0,$r6
16a0: 49 ff fa b6 jal 0xc0c
16a4: 44 00 00 00 movi $r0,#0x0
16a8: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
16ac: dd 9e ret5 $lp
16ae: 92 00 nop16
16b0: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
16b4: 84 22 movi55 $r1,#0x2
16b6: 96 00 zeb33 $r0,$r0
16b8: 4c 00 80 12 beq $r0,$r1,0x16dc
16bc: e6 03 slti45 $r0,#0x3
16be: e8 05 beqzs8 0x16c8
16c0: 84 21 movi55 $r1,#0x1
16c2: 4c 00 c0 09 bne $r0,$r1,0x16d4
16c6: d5 0f j8 0x16e4
16c8: 84 23 movi55 $r1,#0x3
16ca: 4c 00 80 0f beq $r0,$r1,0x16e8
16ce: 84 24 movi55 $r1,#0x4
16d0: 4c 00 80 10 beq $r0,$r1,0x16f0
16d4: 44 00 00 f0 movi $r0,#0xf0
16d8: 48 00 00 18 j 0x1708 ; goto out
16dc: 44 62 00 00 movi $r6,#0x20000
16e0: 48 00 00 0a j 0x16f4
16e4: 84 c0 movi55 $r6,#0x0
16e6: d5 07 j8 0x16f4
16e8: 44 64 00 00 movi $r6,#0x40000
16ec: 48 00 00 04 j 0x16f4
16f0: 44 66 00 00 movi $r6,#0x60000
16f4: 49 ff f7 d4 jal 0x69c
16f8: c8 03 bnez38 $r0,0x16fe
16fa: 84 01 movi55 $r0,#0x1
16fc: d5 06 j8 0x1708
16fe: 80 06 mov55 $r0,$r6
1700: 49 ff fa 86 jal 0xc0c
1704: 44 00 00 00 movi $r0,#0x0
1708: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
170c: dd 9e ret5 $lp
170e: 92 00 nop16
; ---------- 0x1710: looks like a dispatch table / command handler
1710: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
1714: 84 02 movi55 $r0,#0x2
1716: 49 ff fc 07 jal 0xf24
171a: 84 21 movi55 $r1,#0x1
171c: 4c 00 bf fc beq $r0,$r1,0x1714
1720: 84 03 movi55 $r0,#0x3
1722: 49 ff fc 01 jal 0xf24
1726: 84 21 movi55 $r1,#0x1
1728: 4c 00 bf fc beq $r0,$r1,0x1720
172c: 84 04 movi55 $r0,#0x4
172e: 49 ff fb fb jal 0xf24
1732: 84 21 movi55 $r1,#0x1
1734: 4c 00 bf fc beq $r0,$r1,0x172c
1738: 84 02 movi55 $r0,#0x2
173a: 49 ff ff 93 jal 0x1660
173e: 84 21 movi55 $r1,#0x1
1740: 4c 00 bf fc beq $r0,$r1,0x1738
1744: 84 03 movi55 $r0,#0x3
1746: 49 ff ff 8d jal 0x1660
174a: 84 21 movi55 $r1,#0x1
174c: 4c 00 bf fc beq $r0,$r1,0x1744
1750: 84 04 movi55 $r0,#0x4
1752: 49 ff ff 87 jal 0x1660
1756: 84 21 movi55 $r1,#0x1
1758: 4c 00 bf fc beq $r0,$r1,0x1750
175c: 44 60 3f fc movi $r6,#0x3ffc
1760: 84 01 movi55 $r0,#0x1
1762: dd 26 jral5 $r6
1764: 84 21 movi55 $r1,#0x1
1766: 4c 00 bf fd beq $r0,$r1,0x1760
176a: 84 02 movi55 $r0,#0x2
176c: dd 26 jral5 $r6
176e: 84 21 movi55 $r1,#0x1
1770: 4c 00 bf fd beq $r0,$r1,0x176a
1774: 84 03 movi55 $r0,#0x3
1776: dd 26 jral5 $r6
1778: 84 21 movi55 $r1,#0x1
177a: 4c 00 bf fd beq $r0,$r1,0x1774
177e: 84 04 movi55 $r0,#0x4
1780: dd 26 jral5 $r6
1782: 84 21 movi55 $r1,#0x1
1784: 4c 00 bf fd beq $r0,$r1,0x177e
1788: 84 02 movi55 $r0,#0x2
178a: 49 ff ff 11 jal 0x15ac
178e: 84 21 movi55 $r1,#0x1
1790: 4c 00 bf fc beq $r0,$r1,0x1788
1794: 84 03 movi55 $r0,#0x3
1796: 49 ff ff 0b jal 0x15ac
179a: 84 21 movi55 $r1,#0x1
179c: 4c 00 bf fc beq $r0,$r1,0x1794
17a0: 84 04 movi55 $r0,#0x4
17a2: 49 ff ff 05 jal 0x15ac
17a6: 84 21 movi55 $r1,#0x1
17a8: 4c 00 bf fc beq $r0,$r1,0x17a0
17ac: 44 60 40 b0 movi $r6,#0x40b0
17b0: 84 01 movi55 $r0,#0x1
17b2: dd 26 jral5 $r6
17b4: 84 21 movi55 $r1,#0x1
17b6: 4c 00 bf fd beq $r0,$r1,0x17b0
17ba: 84 02 movi55 $r0,#0x2
17bc: dd 26 jral5 $r6
17be: 84 21 movi55 $r1,#0x1
17c0: 4c 00 bf fd beq $r0,$r1,0x17ba
17c4: 84 03 movi55 $r0,#0x3
17c6: dd 26 jral5 $r6
17c8: 84 21 movi55 $r1,#0x1
17ca: 4c 00 bf fd beq $r0,$r1,0x17c4
17ce: 84 04 movi55 $r0,#0x4
17d0: dd 26 jral5 $r6
17d2: 84 21 movi55 $r1,#0x1
17d4: 4c 00 bf fd beq $r0,$r1,0x17ce
17d8: 80 01 mov55 $r0,$r1
17da: 44 60 3f 3c movi $r6,#0x3f3c
17de: dd 26 jral5 $r6
17e0: 84 02 movi55 $r0,#0x2
17e2: dd 26 jral5 $r6
17e4: 84 03 movi55 $r0,#0x3
17e6: dd 26 jral5 $r6
17e8: 84 04 movi55 $r0,#0x4
17ea: dd 26 jral5 $r6
17ec: 84 01 movi55 $r0,#0x1
17ee: 49 ff fb 43 jal 0xe74
17f2: 84 02 movi55 $r0,#0x2
17f4: 49 ff fb 40 jal 0xe74
17f8: 84 03 movi55 $r0,#0x3
17fa: 49 ff fb 3d jal 0xe74
17fe: 84 04 movi55 $r0,#0x4
1800: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
1804: 48 ff fb 38 j 0xe74
1808: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
180c: ef dc addi10.sp #-36
180e: 84 c0 movi55 $r6,#0x0
1810: 50 1f 80 14 addi $r1,$sp,#0x14
1814: b6 c1 swi450 $r6,[$r1]
1816: 50 1f 80 18 addi $r1,$sp,#0x18
181a: b6 c1 swi450 $r6,[$r1]
181c: 51 cf 80 10 addi $fp,$sp,#0x10
1820: 50 1f 80 1c addi $r1,$sp,#0x1c
1824: b6 c1 swi450 $r6,[$r1]
1826: b6 dc swi450 $r6,[$fp]
1828: 44 90 30 9c movi $r9,#0x309c
182c: 97 c0 zeb33 $r7,$r0
182e: dd 29 jral5 $r9
1830: c8 04 bnez38 $r0,0x1838
1832: 84 01 movi55 $r0,#0x1
1834: 48 00 00 b2 j 0x1998
1838: 84 02 movi55 $r0,#0x2
183a: 4c 70 00 13 beq $r7,$r0,0x1860
183e: e6 e3 slti45 $r7,#0x3
1840: e8 05 beqzs8 0x184a
1842: 84 21 movi55 $r1,#0x1
1844: 4c 70 c0 0a bne $r7,$r1,0x1858
1848: d5 13 j8 0x186e
184a: 84 63 movi55 $r3,#0x3
184c: 4c 71 80 16 beq $r7,$r3,0x1878
1850: 44 00 00 04 movi $r0,#0x4
1854: 4c 70 00 1a beq $r7,$r0,0x1888
1858: 44 00 00 f0 movi $r0,#0xf0
185c: 48 00 00 9e j 0x1998
1860: 44 12 00 10 movi $r1,#0x20010
1864: 44 32 00 00 movi $r3,#0x20000
1868: f1 83 swi37.sp $r1,[+#0xc]
186a: f3 82 swi37.sp $r3,[+#0x8]
186c: d5 14 j8 0x1894
186e: 8c 0e addi45 $r0,#0xe
1870: f6 82 swi37.sp $r6,[+#0x8]
1872: 14 0f 80 03 swi $r0,[$sp+#0xc]
1876: d5 0f j8 0x1894
1878: 44 14 00 10 movi $r1,#0x40010
187c: 44 34 00 00 movi $r3,#0x40000
1880: f1 83 swi37.sp $r1,[+#0xc]
1882: f3 82 swi37.sp $r3,[+#0x8]
1884: 48 00 00 08 j 0x1894
1888: 44 06 00 10 movi $r0,#0x60010
188c: 44 16 00 00 movi $r1,#0x60000
1890: f0 83 swi37.sp $r0,[+#0xc]
1892: f1 82 swi37.sp $r1,[+#0x8]
1894: 85 40 movi55 $r10,#0x0
1896: 81 0a mov55 $r8,$r10
1898: 48 00 00 26 j 0x18e4
189c: 50 0f 80 12 addi $r0,$sp,#0x12
18a0: 80 2a mov55 $r1,$r10
18a2: 80 47 mov55 $r2,$r7
18a4: 97 b8 zeb33 $r6,$r7
18a6: 49 00 0b 7f jal 0x2fa4
18aa: c0 14 beqz38 $r0,0x18d2
18ac: f3 01 lwi37.sp $r3,[+#0x4]
18ae: f1 02 lwi37.sp $r1,[+#0x8]
18b0: 10 3e 00 00 sbi $r3,[$fp+#0x0]
18b4: 84 61 movi55 $r3,#0x1
18b6: 10 3e 00 08 sbi $r3,[$fp+#0x8]
18ba: 10 6e 00 01 sbi $r6,[$fp+#0x1]
18be: 40 04 04 00 add $r0,$r8,$r1
18c2: 44 20 00 10 movi $r2,#0x10
18c6: 80 3c mov55 $r1,$fp
18c8: 49 ff f8 d4 jal 0xa70
18cc: dd 29 jral5 $r9
18ce: c0 ff beqz38 $r0,0x18cc
18d0: 8d 10 addi45 $r8,#0x10
18d2: 9d f9 addi333 $r7,$r7,#0x1
18d4: 84 04 movi55 $r0,#0x4
18d6: 4c 70 7f e3 bne $r7,$r0,0x189c
18da: 8d 41 addi45 $r10,#0x1
18dc: 44 10 00 f2 movi $r1,#0xf2
18e0: 4c a0 80 07 beq $r10,$r1,0x18ee
18e4: 54 35 00 ff andi $r3,$r10,#0xff
18e8: f3 81 swi37.sp $r3,[+#0x4]
18ea: 84 e0 movi55 $r7,#0x0
18ec: d5 d8 j8 0x189c
18ee: 84 60 movi55 $r3,#0x0
18f0: 10 3e 00 01 sbi $r3,[$fp+#0x1]
18f4: 10 3e 00 00 sbi $r3,[$fp+#0x0]
18f8: 3e 18 08 6a addi.gp $r1,#0x86a
18fc: 84 46 movi55 $r2,#0x6
18fe: 44 60 ca a4 movi $r6,#0xcaa4
1902: 50 0f 80 12 addi $r0,$sp,#0x12
1906: dd 26 jral5 $r6
1908: f1 02 lwi37.sp $r1,[+#0x8]
190a: 84 61 movi55 $r3,#0x1
190c: 10 3e 00 08 sbi $r3,[$fp+#0x8]
1910: 40 04 04 00 add $r0,$r8,$r1
1914: 44 20 00 10 movi $r2,#0x10
1918: 80 3c mov55 $r1,$fp
191a: 49 ff f8 ab jal 0xa70
191e: dd 29 jral5 $r9
1920: c0 ff beqz38 $r0,0x191e
1922: 3e 1f fe 82 addi.gp $r1,#-382
1926: 84 46 movi55 $r2,#0x6
1928: 50 0f 80 12 addi $r0,$sp,#0x12
192c: dd 26 jral5 $r6
192e: f1 02 lwi37.sp $r1,[+#0x8]
1930: 84 62 movi55 $r3,#0x2
1932: 50 74 00 10 addi $r7,$r8,#0x10
1936: 10 3e 00 08 sbi $r3,[$fp+#0x8]
193a: 98 39 add333 $r0,$r7,$r1
193c: 44 20 00 10 movi $r2,#0x10
1940: 80 3c mov55 $r1,$fp
1942: 49 ff f8 97 jal 0xa70
1946: dd 29 jral5 $r9
1948: c0 ff beqz38 $r0,0x1946
194a: 3e 1f fe 8a addi.gp $r1,#-374
194e: 84 46 movi55 $r2,#0x6
1950: 50 0f 80 12 addi $r0,$sp,#0x12
1954: dd 26 jral5 $r6
1956: f1 02 lwi37.sp $r1,[+#0x8]
1958: 84 63 movi55 $r3,#0x3
195a: 8c f0 addi45 $r7,#0x10
195c: 10 3e 00 08 sbi $r3,[$fp+#0x8]
1960: 98 39 add333 $r0,$r7,$r1
1962: 44 20 00 10 movi $r2,#0x10
1966: 80 3c mov55 $r1,$fp
1968: 49 ff f8 84 jal 0xa70
196c: 4b e0 24 01 jral $lp,$r9
1970: c0 fe beqz38 $r0,0x196c
1972: 3e 1f fe 92 addi.gp $r1,#-366
1976: 84 46 movi55 $r2,#0x6
1978: 50 0f 80 12 addi $r0,$sp,#0x12
197c: dd 26 jral5 $r6
197e: f1 03 lwi37.sp $r1,[+#0xc]
1980: 84 64 movi55 $r3,#0x4
1982: 10 3e 00 08 sbi $r3,[$fp+#0x8]
1986: 98 39 add333 $r0,$r7,$r1
1988: 44 20 00 10 movi $r2,#0x10
198c: 80 3c mov55 $r1,$fp
198e: 49 ff f8 71 jal 0xa70
1992: dd 29 jral5 $r9
1994: c0 ff beqz38 $r0,0x1992
1996: 84 00 movi55 $r0,#0x0
1998: ec 24 addi10.sp #0x24
199a: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
199e: dd 9e ret5 $lp
; ----------- 0x19a0: hardware-specific startup?
19a0: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
19a4: ef ec addi10.sp #-20
19a6: 84 22 movi55 $r1,#0x2
19a8: 96 00 zeb33 $r0,$r0
19aa: 4c 00 80 0f beq $r0,$r1,0x19c8
19ae: e6 03 slti45 $r0,#0x3
19b0: e8 05 beqzs8 0x19ba
19b2: 84 41 movi55 $r2,#0x1
19b4: 4c 01 40 6a bne $r0,$r2,0x1a88
19b8: d5 0e j8 0x19d4
19ba: 84 23 movi55 $r1,#0x3
19bc: 4c 00 80 10 beq $r0,$r1,0x19dc
19c0: 84 44 movi55 $r2,#0x4
19c2: 4c 01 40 63 bne $r0,$r2,0x1a88
19c6: d5 11 j8 0x19e8
19c8: 44 92 00 00 movi $r9,#0x20000
19cc: 44 60 30 9c movi $r6,#0x309c
19d0: 48 00 00 10 j 0x19f0
19d4: 85 20 movi55 $r9,#0x0
19d6: 44 60 30 9c movi $r6,#0x309c
19da: d5 0b j8 0x19f0
19dc: 44 94 00 00 movi $r9,#0x40000
19e0: 44 60 30 9c movi $r6,#0x309c
19e4: 48 00 00 06 j 0x19f0
19e8: 44 96 00 00 movi $r9,#0x60000
19ec: 44 60 30 9c movi $r6,#0x309c
19f0: dd 26 jral5 $r6 ; call 0x309c
19f2: c0 ff beqz38 $r0,0x19f0
19f4: 85 00 movi55 $r8,#0x0
19f6: 80 df mov55 $r6,$sp
19f8: 45 c0 33 74 movi $fp,#0x3374
19fc: 50 7f 80 08 addi $r7,$sp,#0x8
1a00: 40 04 24 00 add $r0,$r8,$r9
1a04: 80 3f mov55 $r1,$sp
1a06: 44 20 00 10 movi $r2,#0x10
1a0a: dd 3c jral5 $fp
1a0c: 80 1f mov55 $r0,$sp
1a0e: a6 40 lbi333 $r1,[$r0+#0x0]
1a10: 44 20 00 ff movi $r2,#0xff
1a14: 9c 01 addi333 $r0,$r0,#0x1
1a16: 4c 11 40 05 bne $r1,$r2,0x1a20
1a1a: 4c 03 ff fa bne $r0,$r7,0x1a0e
1a1e: d5 35 j8 0x1a88
1a20: 00 03 00 08 lbi $r0,[$r6+#0x8]
1a24: 8d 10 addi45 $r8,#0x10
1a26: 9e 41 subi333 $r1,$r0,#0x1
1a28: 96 48 zeb33 $r1,$r1
1a2a: e6 24 slti45 $r1,#0x4
1a2c: e8 17 beqzs8 0x1a5a
1a2e: 84 41 movi55 $r2,#0x1
1a30: 3e 07 ff ea sbi.gp $r0,[+#-22]
1a34: 4c 01 40 08 bne $r0,$r2,0x1a44
1a38: 80 1f mov55 $r0,$sp
1a3a: 84 28 movi55 $r1,#0x8
1a3c: 49 00 0c 90 jal 0x335c
1a40: 00 03 00 08 lbi $r0,[$r6+#0x8]
1a44: 84 22 movi55 $r1,#0x2
1a46: 4c 00 c0 0a bne $r0,$r1,0x1a5a
1a4a: 80 3f mov55 $r1,$sp
1a4c: 44 20 00 08 movi $r2,#0x8
1a50: 3e 0f fe 80 addi.gp $r0,#-384
1a54: 49 00 43 28 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
1a58: d5 14 j8 0x1a80
1a5a: 84 43 movi55 $r2,#0x3
1a5c: 4c 01 40 09 bne $r0,$r2,0x1a6e
1a60: 80 3f mov55 $r1,$sp
1a62: 84 48 movi55 $r2,#0x8
1a64: 3e 0f fe 88 addi.gp $r0,#-376
1a68: 49 00 43 1e jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
1a6c: d5 0a j8 0x1a80
1a6e: 84 24 movi55 $r1,#0x4
1a70: 4c 00 c0 08 bne $r0,$r1,0x1a80
1a74: 3e 0f fe 90 addi.gp $r0,#-368
1a78: 80 3f mov55 $r1,$sp
1a7a: 84 48 movi55 $r2,#0x8
1a7c: 49 00 43 14 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
1a80: 44 20 10 00 movi $r2,#0x1000
1a84: 4c 81 7f be bne $r8,$r2,0x1a00
1a88: ec 14 addi10.sp #0x14
1a8a: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1a8e: dd 9e ret5 $lp
; ----------- 0x1a90: command_27_memcmp(addr1, size, addr2)
1a90: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1a94: ef d4 addi10.sp #-44
1a96: b6 1f swi450 $r0,[$sp]
1a98: f2 81 swi37.sp $r2,[+#0x4]
1a9a: 81 21 mov55 $r9,$r1
1a9c: 44 80 00 20 movi $r8,#0x20
1aa0: 84 e0 movi55 $r7,#0x0
1aa2: 50 6f 80 08 addi $r6,$sp,#0x8
1aa6: 45 c0 33 74 movi $fp,#0x3374
1aaa: b4 3f lwi450 $r1,[$sp]
1aac: 50 33 80 20 addi $r3,$r7,#0x20
1ab0: 98 39 add333 $r0,$r7,$r1
1ab2: 40 44 9c 01 sub $r4,$r9,$r7
1ab6: 80 26 mov55 $r1,$r6
1ab8: e3 23 slt45 $r9,$r3
1aba: e8 03 beqzs8 0x1ac0
1abc: 54 82 00 ff andi $r8,$r4,#0xff
1ac0: 80 48 mov55 $r2,$r8
1ac2: dd 3c jral5 $fp
1ac4: f2 01 lwi37.sp $r2,[+#0x4]
1ac6: 80 06 mov55 $r0,$r6
1ac8: 98 57 add333 $r1,$r2,$r7
1aca: 80 48 mov55 $r2,$r8
1acc: 49 00 42 e0 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
1ad0: 88 e8 add45 $r7,$r8
1ad2: c0 03 beqz38 $r0,0x1ad8
1ad4: 84 00 movi55 $r0,#0x0
1ad6: d5 04 j8 0x1ade
1ad8: 4c 74 ff e9 bne $r7,$r9,0x1aaa
1adc: 84 01 movi55 $r0,#0x1
1ade: ec 2c addi10.sp #0x2c
1ae0: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1ae4: dd 9e ret5 $lp
1ae6: 92 00 nop16
; ----------- 0x1ae8: command_27_thingy($r0=subcmd, $r1=src, $r2=size, $r3=mem_addr)
1ae8: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1aec: 81 21 mov55 $r9,$r1 ; $r9 = src
1aee: 96 00 zeb33 $r0,$r0
1af0: 84 22 movi55 $r1,#0x2 ; $r1 = 2
1af2: 81 02 mov55 $r8,$r2 ; $r8 = size
1af4: 81 43 mov55 $r10,$r3 ; $r10 = $r3 = mem_addr
1af6: 4c 00 80 13 beq $r0,$r1,0x1b1c ; if subcmd == 2: goto CMD27_2
1afa: e6 03 slti45 $r0,#0x3 ;
1afc: e8 05 beqzs8 0x1b06 ; if subcmd >= 3: goto CMD27_GE_3
1afe: 84 21 movi55 $r1,#0x1 ;
1b00: 4c 00 c0 0a bne $r0,$r1,0x1b14 ; if subcmd != 1: goto CMD27_RET_ERR
1b04: d5 10 j8 0x1b24 ; goto CMD27_1
1b06: 84 23 movi55 $r1,#0x3 ;CMD27_GE_3:
1b08: 4c 00 80 12 beq $r0,$r1,0x1b2c ; if subcmd == 3: goto CMD27_3
1b0c: 44 10 00 04 movi $r1,#0x4 ;
1b10: 4c 00 80 12 beq $r0,$r1,0x1b34 ; if subcmd == 4: goto CMD27_4
1b14: 44 00 00 f0 movi $r0,#0xf0 ;CMD27_RET_ERR:
1b18: 48 00 00 3a j 0x1b8c ; return 0xf0
1b1c: 46 60 00 a0 sethi $r6,#0xa0 ;CMD27_2: $r6=0xa0 (offset)
1b20: 48 00 00 0c j 0x1b38
1b24: 46 60 00 80 sethi $r6,#0x80 ;CMD27_1: $r6=0x80 (offset)
1b28: 48 00 00 08 j 0x1b38
1b2c: 46 60 00 c0 sethi $r6,#0xc0 ;CMD27_3: $r6=0xc0 (offset)
1b30: 48 00 00 04 j 0x1b38
1b34: 46 60 00 e0 sethi $r6,#0xe0 ;CMD27_4: $r6=0xe0 (offset)
1b38: 2e 07 ff dc lbi.gp $r0,[+#-36] ;CMD27_CHECK:
1b3c: c0 02 beqz38 $r0,0x1b40 ; if $gp-36 != 0:
1b3e: d5 03 j8 0x1b44
1b40: 84 04 movi55 $r0,#0x4
1b42: d5 25 j8 0x1b8c ; return 4
1b44: 49 ff f5 ac jal 0x69c ; (goddamn 0x69c, what does it do)
1b48: c0 fe beqz38 $r0,0x1b44 ; call 0x69c until it returns 1
1b4a: 88 ca add45 $r6,$r10 ; $r6 = mem_addr + offset
1b4c: 80 06 mov55 $r0,$r6 ; $r0 = mem_addr + offset
1b4e: 80 28 mov55 $r1,$r8 ; $r1 = size
1b50: 80 49 mov55 $r2,$r9 ; $r2 = src
1b52: 49 ff ff 9f jal 0x1a90 ; command_27_memcmp(mem_addr+offset, size, src)
1b56: c8 1a bnez38 $r0,0x1b8a ; if $r0 != 0: return 0
1b58: 80 06 mov55 $r0,$r6 ; $r0 = mem_addr + offset
1b5a: 80 28 mov55 $r1,$r8 ; $r1 = size
1b5c: 49 ff fa d4 jal 0x1104 ; func_1104(memaddr+offset, size, src)
1b60: c8 03 bnez38 $r0,0x1b66 ; if $r0 == 0:
1b62: 84 02 movi55 $r0,#0x2 ;
1b64: d5 14 j8 0x1b8c ; return 2
1b66: 80 06 mov55 $r0,$r6 ;
1b68: 50 14 80 00 addi $r1,$r9,#0x0
1b6c: 40 24 00 13 zeh $r2,$r8
1b70: 49 ff f7 80 jal 0xa70 ; func_a70(mem_addr+offset, src, size)
1b74: 49 ff f5 94 jal 0x69c ; loop:
1b78: c0 fe beqz38 $r0,0x1b74 ; call 0x69c until it returns 1
1b7a: 80 06 mov55 $r0,$r6
1b7c: 80 28 mov55 $r1,$r8
1b7e: 80 49 mov55 $r2,$r9
1b80: 49 ff ff 88 jal 0x1a90 ; command_27_memcmp(mem_addr+offset, size, src)
1b84: c8 03 bnez38 $r0,0x1b8a ; if $r0 != 0: return 0
1b86: 84 03 movi55 $r0,#0x3
1b88: d5 02 j8 0x1b8c ; return 3
1b8a: 84 00 movi55 $r0,#0x0
1b8c: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1b90: dd 9e ret5 $lp
1b92: 92 00 nop16
1b94: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1b98: 51 cf 80 18 addi $fp,$sp,#0x18
1b9c: ef f4 addi10.sp #-12
1b9e: 50 41 00 0e addi $r4,$r2,#0xe
1ba2: 92 83 srli45 $r4,#0x3
1ba4: 95 23 slli333 $r4,$r4,#0x3
1ba6: 81 5f mov55 $r10,$sp
1ba8: 41 ff 90 01 sub $sp,$sp,$r4
1bac: 97 80 zeb33 $r6,$r0
1bae: 81 21 mov55 $r9,$r1
1bb0: 80 1f mov55 $r0,$sp
1bb2: 44 10 00 ff movi $r1,#0xff
1bb6: 80 e2 mov55 $r7,$r2
1bb8: 14 3e 7f f8 swi $r3,[$fp+#-32]
1bbc: 49 00 42 7e jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
1bc0: 84 03 movi55 $r0,#0x3
1bc2: 4c 60 00 0b beq $r6,$r0,0x1bd8
1bc6: 84 64 movi55 $r3,#0x4
1bc8: 4c 61 80 14 beq $r6,$r3,0x1bf0
1bcc: 44 50 00 02 movi $r5,#0x2
1bd0: d6 0a beqs38 $r6,0x1be4
1bd2: 44 00 00 f0 movi $r0,#0xf0
1bd6: d5 33 j8 0x1c3c
1bd8: 44 85 00 00 movi $r8,#0x50000
1bdc: 44 60 30 9c movi $r6,#0x309c
1be0: 48 00 00 0c j 0x1bf8
1be4: 44 83 00 00 movi $r8,#0x30000
1be8: 44 60 30 9c movi $r6,#0x309c
1bec: 48 00 00 06 j 0x1bf8
1bf0: 44 87 00 00 movi $r8,#0x70000
1bf4: 44 60 30 9c movi $r6,#0x309c
1bf8: dd 26 jral5 $r6
1bfa: c0 ff beqz38 $r0,0x1bf8
1bfc: 04 0e 7f f8 lwi $r0,[$fp+#-32]
1c00: 89 00 add45 $r8,$r0
1c02: 80 08 mov55 $r0,$r8
1c04: 80 27 mov55 $r1,$r7
1c06: 80 49 mov55 $r2,$r9
1c08: 49 ff ff 44 jal 0x1a90
1c0c: c8 17 bnez38 $r0,0x1c3a
1c0e: 80 08 mov55 $r0,$r8
1c10: 80 27 mov55 $r1,$r7
1c12: 49 ff fa 79 jal 0x1104
1c16: c8 03 bnez38 $r0,0x1c1c
1c18: 84 02 movi55 $r0,#0x2
1c1a: d5 11 j8 0x1c3c
1c1c: 80 08 mov55 $r0,$r8
1c1e: 80 29 mov55 $r1,$r9
1c20: 96 b9 zeh33 $r2,$r7
1c22: 49 ff f7 27 jal 0xa70
1c26: dd 26 jral5 $r6
1c28: c0 ff beqz38 $r0,0x1c26
1c2a: 80 08 mov55 $r0,$r8
1c2c: 80 27 mov55 $r1,$r7
1c2e: 80 49 mov55 $r2,$r9
1c30: 49 ff ff 30 jal 0x1a90
1c34: c8 03 bnez38 $r0,0x1c3a
1c36: 84 03 movi55 $r0,#0x3
1c38: d5 02 j8 0x1c3c
1c3a: 84 00 movi55 $r0,#0x0
1c3c: 83 ea mov55 $sp,$r10
1c3e: 51 fe 7f e8 addi $sp,$fp,#-24
1c42: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1c46: dd 9e ret5 $lp
1c48: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1c4c: ef f4 addi10.sp #-12
1c4e: 44 60 30 9c movi $r6,#0x309c
1c52: dd 26 jral5 $r6
1c54: c8 04 bnez38 $r0,0x1c5c
1c56: 84 01 movi55 $r0,#0x1
1c58: 48 00 00 92 j 0x1d7c
1c5c: 46 80 01 00 sethi $r8,#0x100
1c60: 3d c3 ff eb lhi.gp $fp,[+#-42]
1c64: 81 48 mov55 $r10,$r8
1c66: 80 1c mov55 $r0,$fp
1c68: 44 90 00 00 movi $r9,#0x0
1c6c: 50 00 02 00 addi $r0,$r0,#0x200
1c70: 96 81 zeh33 $r2,$r0
1c72: 96 13 seh33 $r0,$r2
1c74: 84 28 movi55 $r1,#0x8
1c76: 3c 2b ff eb shi.gp $r2,[+#-42]
1c7a: 4e 04 00 05 bgez $r0,0x1c84
1c7e: 3c 9b ff eb shi.gp $r9,[+#-42]
1c82: 84 40 movi55 $r2,#0x0
1c84: 44 31 80 00 movi $r3,#0x18000
1c88: 40 01 0c 00 add $r0,$r2,$r3
1c8c: 4d c1 40 06 bne $fp,$r2,0x1c98
1c90: 44 00 00 f0 movi $r0,#0xf0
1c94: 48 00 00 74 j 0x1d7c
1c98: 49 ff fa 36 jal 0x1104
1c9c: c8 04 bnez38 $r0,0x1ca4
1c9e: 3c 03 ff eb lhi.gp $r0,[+#-42]
1ca2: d5 e5 j8 0x1c6c
1ca4: 3c 4d ff de lwi.gp $r4,[+#-136]
1ca8: 9d 21 addi333 $r4,$r4,#0x1
1caa: 3e 18 06 60 addi.gp $r1,#0x660
1cae: 44 20 00 78 movi $r2,#0x78
1cb2: 44 50 55 aa movi $r5,#0x55aa
1cb6: 44 00 ff ff movi $r0,#0xffff
1cba: 12 5f 80 00 shi $r5,[$sp+#0x0]
1cbe: 3c 4f ff de swi.gp $r4,[+#-136]
1cc2: f4 81 swi37.sp $r4,[+#0x4]
1cc4: 49 ff f3 fe jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> (short)$r0
1cc8: 3c 13 ff eb lhi.gp $r1,[+#-42]
1ccc: 44 21 80 00 movi $r2,#0x18000
1cd0: 12 0f 80 01 shi $r0,[$sp+#0x2]
1cd4: 98 0a add333 $r0,$r1,$r2
1cd6: 80 3f mov55 $r1,$sp
1cd8: 84 48 movi55 $r2,#0x8
1cda: 80 ff mov55 $r7,$sp
1cdc: 49 ff f6 ca jal 0xa70
1ce0: 4b e0 18 01 jral $lp,$r6
1ce4: c0 fe beqz38 $r0,0x1ce0
1ce6: 3c 03 ff eb lhi.gp $r0,[+#-42]
1cea: 44 31 80 00 movi $r3,#0x18000
1cee: 98 03 add333 $r0,$r0,$r3
1cf0: 80 47 mov55 $r2,$r7
1cf2: 84 28 movi55 $r1,#0x8
1cf4: 49 ff fe ce jal 0x1a90
1cf8: c0 3f beqz38 $r0,0x1d76
1cfa: 3e a8 06 60 addi.gp $r10,#0x660
1cfe: 80 ea mov55 $r7,$r10
1d00: 3c 13 ff eb lhi.gp $r1,[+#-42]
1d04: 40 03 a8 01 sub $r0,$r7,$r10
1d08: 98 08 add333 $r0,$r1,$r0
1d0a: 44 11 80 08 movi $r1,#0x18008
1d0e: 98 01 add333 $r0,$r0,$r1
1d10: 84 48 movi55 $r2,#0x8
1d12: 80 27 mov55 $r1,$r7
1d14: 49 ff f6 ae jal 0xa70
1d18: dd 26 jral5 $r6
1d1a: c0 ff beqz38 $r0,0x1d18
1d1c: 8c e8 addi45 $r7,#0x8
1d1e: 3e 28 08 58 addi.gp $r2,#0x858
1d22: 4c 71 7f ef bne $r7,$r2,0x1d00
1d26: 3c 03 ff eb lhi.gp $r0,[+#-42]
1d2a: 44 31 80 08 movi $r3,#0x18008
1d2e: 98 03 add333 $r0,$r0,$r3
1d30: 44 10 01 f8 movi $r1,#0x1f8
1d34: 3e 28 06 60 addi.gp $r2,#0x660
1d38: 49 ff fe ac jal 0x1a90
1d3c: c0 1d beqz38 $r0,0x1d76
1d3e: 3c 83 ff eb lhi.gp $r8,[+#-42]
1d42: 44 00 f0 00 movi $r0,#0xf000
1d46: 40 7e 00 02 and $r7,$fp,$r0
1d4a: 40 84 00 02 and $r8,$r8,$r0
1d4e: 4c 74 00 16 beq $r7,$r8,0x1d7a
1d52: 85 20 movi55 $r9,#0x0
1d54: dd 26 jral5 $r6
1d56: c0 ff beqz38 $r0,0x1d54
1d58: 44 11 80 00 movi $r1,#0x18000
1d5c: 98 39 add333 $r0,$r7,$r1
1d5e: 50 73 90 00 addi $r7,$r7,#0x1000
1d62: 97 f9 zeh33 $r7,$r7
1d64: 49 ff f7 54 jal 0xc0c
1d68: 40 03 bc 09 srli $r0,$r7,#0xf
1d6c: 40 74 80 1b cmovn $r7,$r9,$r0
1d70: 4c 83 ff f2 bne $r8,$r7,0x1d54
1d74: d5 03 j8 0x1d7a
1d76: 84 03 movi55 $r0,#0x3
1d78: d5 02 j8 0x1d7c
1d7a: 84 00 movi55 $r0,#0x0
1d7c: ec 0c addi10.sp #0xc
1d7e: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1d82: dd 9e ret5 $lp
1d84: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1d88: ef f4 addi10.sp #-12
1d8a: 44 60 30 9c movi $r6,#0x309c
1d8e: dd 26 jral5 $r6
1d90: c8 04 bnez38 $r0,0x1d98
1d92: 84 01 movi55 $r0,#0x1
1d94: 48 00 00 92 j 0x1eb8
1d98: 46 80 01 00 sethi $r8,#0x100
1d9c: 3d c3 ff ea lhi.gp $fp,[+#-44]
1da0: 81 48 mov55 $r10,$r8
1da2: 80 1c mov55 $r0,$fp
1da4: 44 90 00 00 movi $r9,#0x0
1da8: 50 00 02 00 addi $r0,$r0,#0x200
1dac: 96 81 zeh33 $r2,$r0
1dae: 96 13 seh33 $r0,$r2
1db0: 84 28 movi55 $r1,#0x8
1db2: 3c 2b ff ea shi.gp $r2,[+#-44]
1db6: 4e 04 00 05 bgez $r0,0x1dc0
1dba: 3c 9b ff ea shi.gp $r9,[+#-44]
1dbe: 84 40 movi55 $r2,#0x0
1dc0: 44 31 00 00 movi $r3,#0x10000
1dc4: 40 01 0c 00 add $r0,$r2,$r3
1dc8: 4d c1 40 06 bne $fp,$r2,0x1dd4
1dcc: 44 00 00 f0 movi $r0,#0xf0
1dd0: 48 00 00 74 j 0x1eb8
1dd4: 49 ff f9 98 jal 0x1104
1dd8: c8 04 bnez38 $r0,0x1de0
1dda: 3c 03 ff ea lhi.gp $r0,[+#-44]
1dde: d5 e5 j8 0x1da8
1de0: 3c 4d ff dd lwi.gp $r4,[+#-140]
1de4: 9d 21 addi333 $r4,$r4,#0x1
1de6: 3e 18 15 2c addi.gp $r1,#0x152c
1dea: 44 20 01 f8 movi $r2,#0x1f8
1dee: 44 50 55 aa movi $r5,#0x55aa
1df2: 44 00 ff ff movi $r0,#0xffff
1df6: 12 5f 80 00 shi $r5,[$sp+#0x0]
1dfa: 3c 4f ff dd swi.gp $r4,[+#-140]
1dfe: f4 81 swi37.sp $r4,[+#0x4]
1e00: 49 ff f3 60 jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> (short)$r0
1e04: 3c 13 ff ea lhi.gp $r1,[+#-44]
1e08: 44 21 00 00 movi $r2,#0x10000
1e0c: 12 0f 80 01 shi $r0,[$sp+#0x2]
1e10: 98 0a add333 $r0,$r1,$r2
1e12: 80 3f mov55 $r1,$sp
1e14: 84 48 movi55 $r2,#0x8
1e16: 80 ff mov55 $r7,$sp
1e18: 49 ff f6 2c jal 0xa70
1e1c: 4b e0 18 01 jral $lp,$r6
1e20: c0 fe beqz38 $r0,0x1e1c
1e22: 3c 03 ff ea lhi.gp $r0,[+#-44]
1e26: 44 31 00 00 movi $r3,#0x10000
1e2a: 98 03 add333 $r0,$r0,$r3
1e2c: 80 47 mov55 $r2,$r7
1e2e: 84 28 movi55 $r1,#0x8
1e30: 49 ff fe 30 jal 0x1a90
1e34: c0 3f beqz38 $r0,0x1eb2
1e36: 3e a8 15 2c addi.gp $r10,#0x152c
1e3a: 80 ea mov55 $r7,$r10
1e3c: 3c 13 ff ea lhi.gp $r1,[+#-44]
1e40: 40 03 a8 01 sub $r0,$r7,$r10
1e44: 98 08 add333 $r0,$r1,$r0
1e46: 44 11 00 08 movi $r1,#0x10008
1e4a: 98 01 add333 $r0,$r0,$r1
1e4c: 84 48 movi55 $r2,#0x8
1e4e: 80 27 mov55 $r1,$r7
1e50: 49 ff f6 10 jal 0xa70
1e54: dd 26 jral5 $r6
1e56: c0 ff beqz38 $r0,0x1e54
1e58: 8c e8 addi45 $r7,#0x8
1e5a: 3e 28 17 24 addi.gp $r2,#0x1724
1e5e: 4c 71 7f ef bne $r7,$r2,0x1e3c
1e62: 3c 03 ff ea lhi.gp $r0,[+#-44]
1e66: 44 31 00 08 movi $r3,#0x10008
1e6a: 98 03 add333 $r0,$r0,$r3
1e6c: 44 10 01 f8 movi $r1,#0x1f8
1e70: 3e 28 15 2c addi.gp $r2,#0x152c
1e74: 49 ff fe 0e jal 0x1a90
1e78: c0 1d beqz38 $r0,0x1eb2
1e7a: 3c 83 ff ea lhi.gp $r8,[+#-44]
1e7e: 44 00 f0 00 movi $r0,#0xf000
1e82: 40 7e 00 02 and $r7,$fp,$r0
1e86: 40 84 00 02 and $r8,$r8,$r0
1e8a: 4c 74 00 16 beq $r7,$r8,0x1eb6
1e8e: 85 20 movi55 $r9,#0x0
1e90: dd 26 jral5 $r6
1e92: c0 ff beqz38 $r0,0x1e90
1e94: 44 11 00 00 movi $r1,#0x10000
1e98: 98 39 add333 $r0,$r7,$r1
1e9a: 50 73 90 00 addi $r7,$r7,#0x1000
1e9e: 97 f9 zeh33 $r7,$r7
1ea0: 49 ff f6 b6 jal 0xc0c
1ea4: 40 03 bc 09 srli $r0,$r7,#0xf
1ea8: 40 74 80 1b cmovn $r7,$r9,$r0
1eac: 4c 83 ff f2 bne $r8,$r7,0x1e90
1eb0: d5 03 j8 0x1eb6
1eb2: 84 03 movi55 $r0,#0x3
1eb4: d5 02 j8 0x1eb8
1eb6: 84 00 movi55 $r0,#0x0
1eb8: ec 0c addi10.sp #0xc
1eba: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
1ebe: dd 9e ret5 $lp
1ec0: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1ec4: 81 01 mov55 $r8,$r1
1ec6: 96 00 zeb33 $r0,$r0
1ec8: 84 22 movi55 $r1,#0x2
1eca: 80 e2 mov55 $r7,$r2
1ecc: 81 43 mov55 $r10,$r3
1ece: 4c 00 80 13 beq $r0,$r1,0x1ef4
1ed2: e6 03 slti45 $r0,#0x3
1ed4: e8 05 beqzs8 0x1ede
1ed6: 84 21 movi55 $r1,#0x1
1ed8: 4c 00 c0 0a bne $r0,$r1,0x1eec
1edc: d5 10 j8 0x1efc
1ede: 84 23 movi55 $r1,#0x3
1ee0: 4c 00 80 12 beq $r0,$r1,0x1f04
1ee4: 44 10 00 04 movi $r1,#0x4
1ee8: 4c 00 80 12 beq $r0,$r1,0x1f0c
1eec: 44 00 00 f0 movi $r0,#0xf0
1ef0: 48 00 00 38 j 0x1f60
1ef4: 44 92 a0 00 movi $r9,#0x2a000
1ef8: 48 00 00 0c j 0x1f10
1efc: 44 90 a0 00 movi $r9,#0xa000
1f00: 48 00 00 08 j 0x1f10
1f04: 44 94 a0 00 movi $r9,#0x4a000
1f08: 48 00 00 04 j 0x1f10
1f0c: 44 96 a0 00 movi $r9,#0x6a000
1f10: 2e 07 ff dc lbi.gp $r0,[+#-36]
1f14: c0 02 beqz38 $r0,0x1f18
1f16: d5 03 j8 0x1f1c
1f18: 84 04 movi55 $r0,#0x4
1f1a: d5 23 j8 0x1f60
1f1c: 49 ff f3 c0 jal 0x69c
1f20: c0 fe beqz38 $r0,0x1f1c
1f22: 89 2a add45 $r9,$r10
1f24: 80 09 mov55 $r0,$r9
1f26: 80 27 mov55 $r1,$r7
1f28: 80 48 mov55 $r2,$r8
1f2a: 49 ff fd b3 jal 0x1a90
1f2e: c8 18 bnez38 $r0,0x1f5e
1f30: 80 09 mov55 $r0,$r9
1f32: 80 27 mov55 $r1,$r7
1f34: 49 ff f8 e8 jal 0x1104
1f38: c8 03 bnez38 $r0,0x1f3e
1f3a: 84 02 movi55 $r0,#0x2
1f3c: d5 12 j8 0x1f60
1f3e: 80 09 mov55 $r0,$r9
1f40: 80 28 mov55 $r1,$r8
1f42: 96 b9 zeh33 $r2,$r7
1f44: 49 ff f5 96 jal 0xa70
1f48: 49 ff f3 aa jal 0x69c
1f4c: c0 fe beqz38 $r0,0x1f48
1f4e: 80 09 mov55 $r0,$r9
1f50: 80 27 mov55 $r1,$r7
1f52: 80 48 mov55 $r2,$r8
1f54: 49 ff fd 9e jal 0x1a90
1f58: c8 03 bnez38 $r0,0x1f5e
1f5a: 84 03 movi55 $r0,#0x3
1f5c: d5 02 j8 0x1f60
1f5e: 84 00 movi55 $r0,#0x0
1f60: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1f64: dd 9e ret5 $lp
1f66: 92 00 nop16
1f68: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1f6c: 80 e1 mov55 $r7,$r1
1f6e: 96 00 zeb33 $r0,$r0
1f70: 84 23 movi55 $r1,#0x3
1f72: 80 c2 mov55 $r6,$r2
1f74: 81 43 mov55 $r10,$r3
1f76: 4c 00 80 0b beq $r0,$r1,0x1f8c
1f7a: 84 24 movi55 $r1,#0x4
1f7c: 4c 00 80 10 beq $r0,$r1,0x1f9c
1f80: 84 22 movi55 $r1,#0x2
1f82: 4c 00 80 09 beq $r0,$r1,0x1f94
1f86: 44 00 00 f0 movi $r0,#0xf0
1f8a: d5 2f j8 0x1fe8
1f8c: 44 94 30 00 movi $r9,#0x43000
1f90: 48 00 00 08 j 0x1fa0
1f94: 44 92 30 00 movi $r9,#0x23000
1f98: 48 00 00 04 j 0x1fa0
1f9c: 44 96 30 00 movi $r9,#0x63000
1fa0: 49 ff f3 7e jal 0x69c
1fa4: c8 03 bnez38 $r0,0x1faa
1fa6: 84 01 movi55 $r0,#0x1
1fa8: d5 20 j8 0x1fe8
1faa: 89 2a add45 $r9,$r10
1fac: 80 09 mov55 $r0,$r9
1fae: 80 26 mov55 $r1,$r6
1fb0: 80 47 mov55 $r2,$r7
1fb2: 49 ff fd 6f jal 0x1a90
1fb6: c8 18 bnez38 $r0,0x1fe6
1fb8: 80 09 mov55 $r0,$r9
1fba: 80 26 mov55 $r1,$r6
1fbc: 49 ff f8 a4 jal 0x1104
1fc0: c8 03 bnez38 $r0,0x1fc6
1fc2: 84 02 movi55 $r0,#0x2
1fc4: d5 12 j8 0x1fe8
1fc6: 80 09 mov55 $r0,$r9
1fc8: 80 27 mov55 $r1,$r7
1fca: 96 b1 zeh33 $r2,$r6
1fcc: 49 ff f5 52 jal 0xa70
1fd0: 49 ff f3 66 jal 0x69c
1fd4: c0 fe beqz38 $r0,0x1fd0
1fd6: 80 09 mov55 $r0,$r9
1fd8: 80 26 mov55 $r1,$r6
1fda: 80 47 mov55 $r2,$r7
1fdc: 49 ff fd 5a jal 0x1a90
1fe0: c8 03 bnez38 $r0,0x1fe6
1fe2: 84 03 movi55 $r0,#0x3
1fe4: d5 02 j8 0x1fe8
1fe6: 84 00 movi55 $r0,#0x0
1fe8: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1fec: dd 9e ret5 $lp
1fee: 92 00 nop16
1ff0: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
1ff4: 80 e1 mov55 $r7,$r1
1ff6: 96 00 zeb33 $r0,$r0
1ff8: 84 22 movi55 $r1,#0x2
1ffa: 80 c2 mov55 $r6,$r2
1ffc: 81 43 mov55 $r10,$r3
1ffe: 4c 00 80 13 beq $r0,$r1,0x2024
2002: e6 03 slti45 $r0,#0x3
2004: e8 05 beqzs8 0x200e
2006: 84 21 movi55 $r1,#0x1
2008: 4c 00 c0 0a bne $r0,$r1,0x201c
200c: d5 10 j8 0x202c
200e: 84 23 movi55 $r1,#0x3
2010: 4c 00 80 12 beq $r0,$r1,0x2034
2014: 44 10 00 04 movi $r1,#0x4
2018: 4c 00 80 12 beq $r0,$r1,0x203c
201c: 44 00 00 f0 movi $r0,#0xf0
2020: 48 00 00 34 j 0x2088
2024: 44 92 20 00 movi $r9,#0x22000
2028: 48 00 00 0c j 0x2040
202c: 44 90 40 00 movi $r9,#0x4000
2030: 48 00 00 08 j 0x2040
2034: 44 94 20 00 movi $r9,#0x42000
2038: 48 00 00 04 j 0x2040
203c: 44 96 20 00 movi $r9,#0x62000
2040: 49 ff f3 2e jal 0x69c
2044: c8 03 bnez38 $r0,0x204a
2046: 84 01 movi55 $r0,#0x1
2048: d5 20 j8 0x2088
204a: 89 2a add45 $r9,$r10
204c: 80 09 mov55 $r0,$r9
204e: 80 26 mov55 $r1,$r6
2050: 80 47 mov55 $r2,$r7
2052: 49 ff fd 1f jal 0x1a90
2056: c8 18 bnez38 $r0,0x2086
2058: 80 09 mov55 $r0,$r9
205a: 80 26 mov55 $r1,$r6
205c: 49 ff f8 54 jal 0x1104
2060: c8 03 bnez38 $r0,0x2066
2062: 84 02 movi55 $r0,#0x2
2064: d5 12 j8 0x2088
2066: 80 09 mov55 $r0,$r9
2068: 80 27 mov55 $r1,$r7
206a: 96 b1 zeh33 $r2,$r6
206c: 49 ff f5 02 jal 0xa70
2070: 49 ff f3 16 jal 0x69c
2074: c0 fe beqz38 $r0,0x2070
2076: 80 09 mov55 $r0,$r9
2078: 80 26 mov55 $r1,$r6
207a: 80 47 mov55 $r2,$r7
207c: 49 ff fd 0a jal 0x1a90
2080: c8 03 bnez38 $r0,0x2086
2082: 84 03 movi55 $r0,#0x3
2084: d5 02 j8 0x2088
2086: 84 00 movi55 $r0,#0x0
2088: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
208c: dd 9e ret5 $lp
208e: 92 00 nop16
2090: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
2094: 80 e1 mov55 $r7,$r1
2096: 96 00 zeb33 $r0,$r0
2098: 84 23 movi55 $r1,#0x3
209a: 80 c2 mov55 $r6,$r2
209c: 81 43 mov55 $r10,$r3
209e: 4c 00 80 0b beq $r0,$r1,0x20b4
20a2: 84 24 movi55 $r1,#0x4
20a4: 4c 00 80 10 beq $r0,$r1,0x20c4
20a8: 84 22 movi55 $r1,#0x2
20aa: 4c 00 80 09 beq $r0,$r1,0x20bc
20ae: 44 00 00 f0 movi $r0,#0xf0
20b2: d5 2f j8 0x2110
20b4: 44 94 10 00 movi $r9,#0x41000
20b8: 48 00 00 08 j 0x20c8
20bc: 44 92 10 00 movi $r9,#0x21000
20c0: 48 00 00 04 j 0x20c8
20c4: 44 96 10 00 movi $r9,#0x61000
20c8: 49 ff f2 ea jal 0x69c
20cc: c8 03 bnez38 $r0,0x20d2
20ce: 84 01 movi55 $r0,#0x1
20d0: d5 20 j8 0x2110
20d2: 89 2a add45 $r9,$r10
20d4: 80 09 mov55 $r0,$r9
20d6: 80 26 mov55 $r1,$r6
20d8: 80 47 mov55 $r2,$r7
20da: 49 ff fc db jal 0x1a90
20de: c8 18 bnez38 $r0,0x210e
20e0: 80 09 mov55 $r0,$r9
20e2: 80 26 mov55 $r1,$r6
20e4: 49 ff f8 10 jal 0x1104
20e8: c8 03 bnez38 $r0,0x20ee
20ea: 84 02 movi55 $r0,#0x2
20ec: d5 12 j8 0x2110
20ee: 80 09 mov55 $r0,$r9
20f0: 80 27 mov55 $r1,$r7
20f2: 96 b1 zeh33 $r2,$r6
20f4: 49 ff f4 be jal 0xa70
20f8: 49 ff f2 d2 jal 0x69c
20fc: c0 fe beqz38 $r0,0x20f8
20fe: 80 09 mov55 $r0,$r9
2100: 80 26 mov55 $r1,$r6
2102: 80 47 mov55 $r2,$r7
2104: 49 ff fc c6 jal 0x1a90
2108: c8 03 bnez38 $r0,0x210e
210a: 84 03 movi55 $r0,#0x3
210c: d5 02 j8 0x2110
210e: 84 00 movi55 $r0,#0x0
2110: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
2114: dd 9e ret5 $lp
2116: 92 00 nop16
; ---------- 0x2118: ???
2118: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
211c: ef f4 addi10.sp #-12
211e: f1 81 swi37.sp $r1,[+#0x4]
2120: 54 a0 00 ff andi $r10,$r0,#0xff
2124: 49 ff f2 bc jal 0x69c
2128: c0 65 beqz38 $r0,0x21f2
212a: 84 02 movi55 $r0,#0x2
212c: 4c a0 00 12 beq $r10,$r0,0x2150
2130: e7 43 slti45 $r10,#0x3
2132: e8 05 beqzs8 0x213c
2134: 84 21 movi55 $r1,#0x1
2136: 4c a0 c0 09 bne $r10,$r1,0x2148
213a: d5 0f j8 0x2158
213c: 84 03 movi55 $r0,#0x3
213e: 4c a0 00 0f beq $r10,$r0,0x215c
2142: 84 24 movi55 $r1,#0x4
2144: 4c a0 80 10 beq $r10,$r1,0x2164
2148: 44 00 00 f0 movi $r0,#0xf0
214c: 48 00 00 54 j 0x21f4
2150: 44 92 00 00 movi $r9,#0x20000
2154: 48 00 00 0a j 0x2168
2158: 85 20 movi55 $r9,#0x0
215a: d5 07 j8 0x2168
215c: 44 94 00 00 movi $r9,#0x40000
2160: 48 00 00 04 j 0x2168
2164: 44 96 00 00 movi $r9,#0x60000
2168: 2e 07 ff df lbi.gp $r0,[+#-33]
216c: c0 0d beqz38 $r0,0x2186
216e: 84 01 movi55 $r0,#0x1
2170: 49 ff fb 4c jal 0x1808
2174: 84 21 movi55 $r1,#0x1
2176: 4c 00 80 3e beq $r0,$r1,0x21f2
217a: 84 00 movi55 $r0,#0x0
217c: 3e 07 ff df sbi.gp $r0,[+#-33]
2180: 49 ff f2 8e jal 0x69c
2184: c0 fe beqz38 $r0,0x2180
2186: 84 c0 movi55 $r6,#0x0
2188: 45 c0 3b 04 movi $fp,#0x3b04
218c: 40 73 24 00 add $r7,$r6,$r9
2190: 80 07 mov55 $r0,$r7
2192: 44 10 00 10 movi $r1,#0x10
2196: dd 3c jral5 $fp
2198: c0 06 beqz38 $r0,0x21a4
219a: 8c d0 addi45 $r6,#0x10
219c: 5c f3 10 01 slti $r15,$r6,#0x1001
21a0: e9 11 bnezs8 0x21c2
21a2: d5 06 j8 0x21ae
21a4: 8c d0 addi45 $r6,#0x10
21a6: 44 00 10 00 movi $r0,#0x1000
21aa: 4c 60 7f f1 bne $r6,$r0,0x218c
21ae: 80 0a mov55 $r0,$r10
21b0: 49 ff fa 80 jal 0x16b0
21b4: 84 01 movi55 $r0,#0x1
21b6: 46 10 01 00 sethi $r1,#0x100
21ba: 3e 07 ff df sbi.gp $r0,[+#-33]
21be: 84 01 movi55 $r0,#0x1
21c0: d5 1a j8 0x21f4
21c2: f1 01 lwi37.sp $r1,[+#0x4]
21c4: 50 03 80 00 addi $r0,$r7,#0x0
21c8: 44 20 00 10 movi $r2,#0x10
21cc: 49 ff f4 52 jal 0xa70
21d0: 49 ff f2 66 jal 0x69c
21d4: c0 fe beqz38 $r0,0x21d0
21d6: f2 01 lwi37.sp $r2,[+#0x4]
21d8: 44 10 00 10 movi $r1,#0x10
21dc: 80 07 mov55 $r0,$r7
21de: 49 ff fc 59 jal 0x1a90
21e2: 80 20 mov55 $r1,$r0
21e4: 84 40 movi55 $r2,#0x0
21e6: 84 63 movi55 $r3,#0x3
21e8: 40 01 84 1a cmovz $r0,$r3,$r1
21ec: 40 01 04 1b cmovn $r0,$r2,$r1
21f0: d5 02 j8 0x21f4
21f2: 84 01 movi55 $r0,#0x1
21f4: ec 0c addi10.sp #0xc
21f6: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
21fa: dd 9e ret5 $lp
; ----------- 0x21fc: mainloop_21fc()
21fc: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
2200: ef f0 addi10.sp #-16 ; $sp -= 0x10
2202: 2e 77 ff de lbi.gp $r7,[+#-34] ; if [$gp-34] == 0:
2206: c7 29 beqz38 $r7,0x2258 ; goto nope_gp34
2208: 44 10 00 ff movi $r1,#0xff ; memset byte = 0xff
220c: 44 20 00 10 movi $r2,#0x10 ; memset size = 0x10
2210: 50 0f 80 00 addi $r0,$sp,#0x0 ; memset dest = $sp
2214: 49 00 3f 52 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
2218: 3e 3f fe 78 addi.gp $r3,#-392
221c: a0 59 lwi333 $r1,[$r3+#0x4] ; $r1 = [$gp-392+4]
221e: 08 01 80 01 lbi.bi $r0,[$r3],#0x1 ; $r0 = [$gp-392]
2222: 84 46 movi55 $r2,#0x6 ; memcpy size = 0x6
2224: a6 d8 lbi333 $r3,[$r3+#0x0] ; $r3 = [$gp-392+1]
2226: 10 0f 80 00 sbi $r0,[$sp+#0x0] ; [$sp+0] = [$gp-392+0]
222a: 10 3f 80 01 sbi $r3,[$sp+#0x1] ; [$sp+1] = [$gp-392+1]
222e: 2e 37 ff ea lbi.gp $r3,[+#-22]
2232: 50 0f 80 02 addi $r0,$sp,#0x2 ; memcpy dest = $sp+2
2236: ae c6 sbi333 $r3,[$r0+#0x6] ; [$sp+8] = [$gp-22]
2238: 49 00 3f 36 jal 0xa0a4 ; memcpy(dest=$sp+2, src=[$gp-392+4], n=6)
223c: 80 3f mov55 $r1,$sp ; $r1 = $sp
223e: 84 01 movi55 $r0,#0x1
2240: 94 84 slli333 $r2,$r0,#0x4
2242: 49 ff ff 6b jal 0x2118
2246: 84 21 movi55 $r1,#0x1
2248: 80 ff mov55 $r7,$sp
224a: 4c 00 80 1d beq $r0,$r1,0x2284
224e: 84 00 movi55 $r0,#0x0
2250: 3e 07 ff de sbi.gp $r0,[+#-34]
2254: 48 00 00 18 j 0x2284
2258: 2e 67 ff e0 lbi.gp $r6,[+#-32]
225c: c6 0a beqz38 $r6,0x2270
225e: 49 ff fd 93 jal 0x1d84
2262: 84 21 movi55 $r1,#0x1
2264: 4c 00 80 10 beq $r0,$r1,0x2284 ; if
2268: 3e 77 ff e0 sbi.gp $r7,[+#-32]
226c: 48 00 00 0c j 0x2284 ; goto out
2270: 2e 07 ff e1 lbi.gp $r0,[+#-31]
2274: c0 08 beqz38 $r0,0x2284
2276: 49 ff fc e9 jal 0x1c48
227a: 84 21 movi55 $r1,#0x1
227c: 4c 00 80 04 beq $r0,$r1,0x2284
2280: 3e 67 ff e1 sbi.gp $r6,[+#-31]
2284: ec 10 addi10.sp #0x10
2286: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
228a: dd 9e ret5 $lp
; ----------- 0x228c: setup_gpio_b8_output()
228c: 46 00 01 f6 sethi $r0,#0x1f6 ; GPIO: 0x001f6800~0x001f6bff
2290: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
2294: b4 20 lwi450 $r1,[$r0] ; $r1 = GPIO_ACT_PB
2296: 58 10 81 00 ori $r1,$r1,#0x100 ;
229a: b6 20 swi450 $r1,[$r0] ; set GPIOB8 active
229c: a0 41 lwi333 $r1,[$r0+#0x4]
229e: 42 10 a0 09 bclr $r1,$r1,#0x8
22a2: a8 41 swi333 $r1,[$r0+#0x4] ; set GPIOB8 as output
22a4: a0 42 lwi333 $r1,[$r0+#0x8]
22a6: 58 10 81 00 ori $r1,$r1,#0x100
22aa: a8 42 swi333 $r1,[$r0+#0x8] ; set GPIOB8 to open-drain
22ac: 44 10 01 00 movi $r1,#0x100
22b0: 14 10 00 08 swi $r1,[$r0+#0x20] ; set GPIOB8 status high
22b4: dd 9e ret5 $lp
22b6: 92 00 nop16
; ----------- 0x22b8: setup_gpiob_and_timer2()
22b8: 46 00 01 f6 sethi $r0,#0x1f6
22bc: 58 00 08 80 ori $r0,$r0,#0x880 ; $r0 = GPIO offset 0x80: GPIOB base offset
22c0: b4 40 lwi450 $r2,[$r0] ; $r2 = which GPIO pins are enabled?
22c2: 58 21 40 00 ori $r2,$r2,#0x4000 ; $r2 |= 0x4000 (enable GPIO 14)
22c6: b6 40 swi450 $r2,[$r0] ; enable GPIOB14
22c8: 46 10 02 02 sethi $r1,#0x202 ; Timer2: 0x0020_2400~0x0020_27FF
22cc: a0 c1 lwi333 $r3,[$r0+#0x4] ; $r3 = [$r0+4] = GPIO_OEN_BP - output enabled?
22ce: 58 10 84 00 ori $r1,$r1,#0x400 ; $r1 = TIMER2 base offset
22d2: 42 31 b8 09 bclr $r3,$r3,#0xe ; $r3 = clear bit 14 (GPIO 14 = input)
22d6: a8 c1 swi333 $r3,[$r0+#0x4] ; GPIOB14 is now active for input
22d8: a0 c2 lwi333 $r3,[$r0+#0x8] ; $r3 = GPIO_OMOD_PB - 0=push/pull, 1=open-drain
22da: 84 41 movi55 $r2,#0x1 ;
22dc: 58 31 c0 00 ori $r3,$r3,#0x4000 ;
22e0: a8 c2 swi333 $r3,[$r0+#0x8] ; GPIOB14 is now open-drain
22e2: b4 60 lwi450 $r3,[$r0]
22e4: 58 31 a0 00 ori $r3,$r3,#0x2000 ; Okay, now we're doing GPIOB13
22e8: b6 60 swi450 $r3,[$r0] ;
22ea: a0 c1 lwi333 $r3,[$r0+#0x4] ;
22ec: 42 31 b4 09 bclr $r3,$r3,#0xd ;
22f0: a8 c1 swi333 $r3,[$r0+#0x4] ;
22f2: a0 c2 lwi333 $r3,[$r0+#0x8] ;
22f4: 58 31 a0 00 ori $r3,$r3,#0x2000 ;
22f8: a8 c2 swi333 $r3,[$r0+#0x8] ; Same deal - GPIOB13 open-drain input
22fa: b4 60 lwi450 $r3,[$r0]
22fc: 58 31 90 00 ori $r3,$r3,#0x1000 ; aaaand now we're doing GPIOB12
2300: b6 60 swi450 $r3,[$r0]
2302: a0 c1 lwi333 $r3,[$r0+#0x4]
2304: 42 31 b0 09 bclr $r3,$r3,#0xc
2308: a8 c1 swi333 $r3,[$r0+#0x4]
230a: 44 40 80 00 movi $r4,#0x8000
230e: a0 c2 lwi333 $r3,[$r0+#0x8]
2310: 58 31 90 00 ori $r3,$r3,#0x1000
2314: a8 c2 swi333 $r3,[$r0+#0x8]
2316: b4 60 lwi450 $r3,[$r0]
2318: 40 31 90 04 or $r3,$r3,$r4
231c: b6 60 swi450 $r3,[$r0]
231e: a0 c1 lwi333 $r3,[$r0+#0x4]
2320: 40 31 90 04 or $r3,$r3,$r4
2324: a8 c1 swi333 $r3,[$r0+#0x4]
2326: a0 c5 lwi333 $r3,[$r0+#0x14]
2328: 42 31 bc 09 bclr $r3,$r3,#0xf
232c: a8 c5 swi333 $r3,[$r0+#0x14]
232e: a0 c6 lwi333 $r3,[$r0+#0x18]
2330: 42 31 bc 08 bset $r3,$r3,#0xf
2334: a8 c6 swi333 $r3,[$r0+#0x18]
2336: b4 60 lwi450 $r3,[$r0]
2338: 42 31 98 09 bclr $r3,$r3,#0x6
233c: b6 60 swi450 $r3,[$r0] ; match control has "external match bit"
233e: 84 03 movi55 $r0,#0x3 ; (mctl: 00=none, 01=clear to 0, 10=set to 1, 11=toggle match bit)
2340: a8 0e swi333 $r0,[$r1+#0x18] ; TIMER2+0x18 = 0x3 (1:0 = match control mat0a, 3:2 = mat0b)
2342: 84 00 movi55 $r0,#0x0 ;
2344: a8 8f swi333 $r2,[$r1+#0x1c] ; TIMER2+0x1c = 0x1 (mat0a reset counter = 1)
2346: 14 00 80 0c swi $r0,[$r1+#0x30] ; TIMER2+0x32 = 0x0 (mat0a match register)
234a: 94 17 slli333 $r0,$r2,#0x7 ;
234c: b6 01 swi450 $r0,[$r1]
234e: b6 41 swi450 $r2,[$r1]
2350: b4 01 lwi450 $r0,[$r1]
2352: 42 00 3c 08 bset $r0,$r0,#0xf
2356: b6 01 swi450 $r0,[$r1]
2358: dd 9e ret5 $lp
235a: 92 00 nop16
; ---------- 0x235c: setup_timer1()
235c: 46 00 02 02 sethi $r0,#0x202 ; $r0 = 0x0020_2000: TIMER1 base
2360: 44 20 00 10 movi $r2,#0x10
2364: 14 20 00 11 swi $r2,[$r0+#0x44] ; set bit 4, TIMER1 offset 0x44: ie_mat0a, interrupt enable for mat0a
2368: 44 20 5d c0 movi $r2,#0x5dc0
236c: 14 20 00 0c swi $r2,[$r0+#0x30] ; set TIMER1 offset 0x30: mat0a = 0x5dc0 (intr every 0x5dc0 ticks)
2370: 84 21 movi55 $r1,#0x1
2372: 94 8f slli333 $r2,$r1,#0x7
2374: a8 47 swi333 $r1,[$r0+#0x1c] ; TIMER1 offset 0x1c = 0x1: reset counter mat0a
2376: b6 40 swi450 $r2,[$r0] ; TIMER1 offset 0x00 = 0x80: debug enable
2378: b6 20 swi450 $r1,[$r0] ; TIMER1 offset 0x00 = 0x1: tctl_st (start timer!)
237a: 46 10 02 00 sethi $r1,#0x200 ; $r1 = 0x0020_0000
237e: b4 40 lwi450 $r2,[$r0]
2380: 58 10 8d 00 ori $r1,$r1,#0xd00 ; $r1 = 0x0020_0d00: Wakeup/Interrupt (0x00200c00~0x00200fff)
2384: 42 21 3c 08 bset $r2,$r2,#0xf
2388: b6 40 swi450 $r2,[$r0]
238a: b4 01 lwi450 $r0,[$r1]
238c: 58 00 00 10 ori $r0,$r0,#0x10
2390: b6 01 swi450 $r0,[$r1] ; set bit 4, IE0_TMR1: enable HW0 interrupt for TIMER1
2392: dd 9e ret5 $lp
2394: 44 10 cd 20 movi $r1,#0xcd20
2398: b4 01 lwi450 $r0,[$r1]
239a: a0 89 lwi333 $r2,[$r1+#0x4]
239c: b4 60 lwi450 $r3,[$r0]
239e: 40 41 08 05 nor $r4,$r2,$r2
23a2: 40 31 0c 04 or $r3,$r2,$r3
23a6: b6 60 swi450 $r3,[$r0]
23a8: 8c 28 addi45 $r1,#0x8
23aa: a0 c1 lwi333 $r3,[$r0+#0x4]
23ac: 40 32 0c 02 and $r3,$r4,$r3
23b0: a8 c1 swi333 $r3,[$r0+#0x4]
23b2: a0 c2 lwi333 $r3,[$r0+#0x8]
23b4: 40 21 88 04 or $r2,$r3,$r2
23b8: a8 82 swi333 $r2,[$r0+#0x8]
23ba: 44 00 cd 60 movi $r0,#0xcd60
23be: 4c 10 7f ed bne $r1,$r0,0x2398
23c2: dd 9e ret5 $lp
23c4: 44 00 cd 20 movi $r0,#0xcd20
23c8: b4 20 lwi450 $r1,[$r0]
23ca: a0 81 lwi333 $r2,[$r0+#0x4]
23cc: a0 c9 lwi333 $r3,[$r1+#0x4]
23ce: 8c 08 addi45 $r0,#0x8
23d0: 40 31 0c 04 or $r3,$r2,$r3
23d4: a8 c9 swi333 $r3,[$r1+#0x4]
23d6: a0 cd lwi333 $r3,[$r1+#0x14]
23d8: 40 21 88 04 or $r2,$r3,$r2
23dc: a8 8d swi333 $r2,[$r1+#0x14]
23de: 44 10 cd 60 movi $r1,#0xcd60
23e2: 4c 00 ff f3 bne $r0,$r1,0x23c8
23e6: dd 9e ret5 $lp
23e8: 46 00 01 f6 sethi $r0,#0x1f6
23ec: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
23f0: a0 41 lwi333 $r1,[$r0+#0x4]
23f2: 44 20 80 00 movi $r2,#0x8000
23f6: 58 10 c0 00 ori $r1,$r1,#0x4000
23fa: a8 41 swi333 $r1,[$r0+#0x4]
23fc: a0 45 lwi333 $r1,[$r0+#0x14]
23fe: 58 10 c0 00 ori $r1,$r1,#0x4000
2402: a8 45 swi333 $r1,[$r0+#0x14]
2404: a0 41 lwi333 $r1,[$r0+#0x4]
2406: 58 10 a0 00 ori $r1,$r1,#0x2000
240a: a8 41 swi333 $r1,[$r0+#0x4]
240c: a0 45 lwi333 $r1,[$r0+#0x14]
240e: 58 10 a0 00 ori $r1,$r1,#0x2000
2412: a8 45 swi333 $r1,[$r0+#0x14]
2414: a0 41 lwi333 $r1,[$r0+#0x4]
2416: 58 10 90 00 ori $r1,$r1,#0x1000
241a: a8 41 swi333 $r1,[$r0+#0x4]
241c: a0 45 lwi333 $r1,[$r0+#0x14]
241e: 58 10 90 00 ori $r1,$r1,#0x1000
2422: a8 45 swi333 $r1,[$r0+#0x14]
2424: a0 41 lwi333 $r1,[$r0+#0x4]
2426: 40 10 88 04 or $r1,$r1,$r2
242a: a8 41 swi333 $r1,[$r0+#0x4]
242c: a0 45 lwi333 $r1,[$r0+#0x14]
242e: 40 10 88 04 or $r1,$r1,$r2
2432: a8 45 swi333 $r1,[$r0+#0x14]
2434: b4 20 lwi450 $r1,[$r0]
2436: 58 10 80 40 ori $r1,$r1,#0x40
243a: b6 20 swi450 $r1,[$r0]
243c: a0 41 lwi333 $r1,[$r0+#0x4]
243e: 58 10 80 40 ori $r1,$r1,#0x40
2442: a8 41 swi333 $r1,[$r0+#0x4]
2444: a0 45 lwi333 $r1,[$r0+#0x14]
2446: 58 10 80 40 ori $r1,$r1,#0x40
244a: a8 45 swi333 $r1,[$r0+#0x14]
244c: dd 9e ret5 $lp
244e: 92 00 nop16
2450: 46 10 01 f6 sethi $r1,#0x1f6
2454: 58 10 88 80 ori $r1,$r1,#0x880 ; GPIO offset 0x80: GPIOB base offset
2458: b4 41 lwi450 $r2,[$r1]
245a: 58 21 00 10 ori $r2,$r2,#0x10
245e: b6 41 swi450 $r2,[$r1]
2460: 50 00 81 00 addi $r0,$r1,#0x100
2464: a0 c9 lwi333 $r3,[$r1+#0x4]
2466: 46 20 02 04 sethi $r2,#0x204
246a: 58 31 80 10 ori $r3,$r3,#0x10
246e: a8 c9 swi333 $r3,[$r1+#0x4]
2470: 58 21 08 00 ori $r2,$r2,#0x800 ; 0x0020_4800~0x0020_4bff: SPI1
2474: a0 cd lwi333 $r3,[$r1+#0x14]
2476: 58 31 80 10 ori $r3,$r3,#0x10
247a: a8 cd swi333 $r3,[$r1+#0x14]
247c: b4 61 lwi450 $r3,[$r1]
247e: 58 31 80 08 ori $r3,$r3,#0x8
2482: b6 61 swi450 $r3,[$r1]
2484: a0 c9 lwi333 $r3,[$r1+#0x4]
2486: 58 31 80 08 ori $r3,$r3,#0x8
248a: a8 c9 swi333 $r3,[$r1+#0x4]
248c: a0 cd lwi333 $r3,[$r1+#0x14]
248e: 58 31 80 08 ori $r3,$r3,#0x8
2492: a8 cd swi333 $r3,[$r1+#0x14]
2494: b4 20 lwi450 $r1,[$r0]
2496: 58 10 80 08 ori $r1,$r1,#0x8
249a: b6 20 swi450 $r1,[$r0]
249c: a0 41 lwi333 $r1,[$r0+#0x4]
249e: 58 10 80 08 ori $r1,$r1,#0x8
24a2: a8 41 swi333 $r1,[$r0+#0x4]
24a4: a0 45 lwi333 $r1,[$r0+#0x14]
24a6: 58 10 80 08 ori $r1,$r1,#0x8
24aa: a8 45 swi333 $r1,[$r0+#0x14]
24ac: b4 20 lwi450 $r1,[$r0]
24ae: 58 10 80 04 ori $r1,$r1,#0x4
24b2: b6 20 swi450 $r1,[$r0]
24b4: a0 41 lwi333 $r1,[$r0+#0x4]
24b6: 58 10 80 04 ori $r1,$r1,#0x4
24ba: a8 41 swi333 $r1,[$r0+#0x4]
24bc: a0 45 lwi333 $r1,[$r0+#0x14]
24be: 58 10 80 04 ori $r1,$r1,#0x4
24c2: a8 45 swi333 $r1,[$r0+#0x14]
24c4: 04 10 00 08 lwi $r1,[$r0+#0x20]
24c8: 42 10 88 09 bclr $r1,$r1,#0x2
24cc: 14 10 00 08 swi $r1,[$r0+#0x20]
24d0: b4 02 lwi450 $r0,[$r2]
24d2: 42 00 1c 09 bclr $r0,$r0,#0x7
24d6: b6 02 swi450 $r0,[$r2]
; -------------- 0x24d8: called from HW0
24d8: dd 9e ret5 $lp ; Return? THAT'S IT? wow
24da: 92 00 nop16
24dc: 46 00 01 f6 sethi $r0,#0x1f6
24e0: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
24e4: a0 41 lwi333 $r1,[$r0+#0x4]
24e6: 58 10 81 00 ori $r1,$r1,#0x100
24ea: a8 41 swi333 $r1,[$r0+#0x4]
24ec: a0 45 lwi333 $r1,[$r0+#0x14]
24ee: 58 10 81 00 ori $r1,$r1,#0x100
24f2: a8 45 swi333 $r1,[$r0+#0x14]
24f4: dd 9e ret5 $lp
24f6: 92 00 nop16
; ----------- 0x24f8: messing with stuff at 0xcd20
24f8: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
24fc: ef fc addi10.sp #-4
24fe: 44 00 cd 20 movi $r0,#0xcd20
2502: b4 20 lwi450 $r1,[$r0]
2504: a0 81 lwi333 $r2,[$r0+#0x4]
2506: a0 c9 lwi333 $r3,[$r1+#0x4]
2508: 8c 08 addi45 $r0,#0x8
250a: 40 31 0c 04 or $r3,$r2,$r3
250e: a8 c9 swi333 $r3,[$r1+#0x4]
2510: a0 cd lwi333 $r3,[$r1+#0x14]
2512: 40 21 88 04 or $r2,$r3,$r2
2516: a8 8d swi333 $r2,[$r1+#0x14]
2518: 44 10 cd 60 movi $r1,#0xcd60
251c: 4c 00 ff f3 bne $r0,$r1,0x2502
2520: 49 ff ff 64 jal 0x23e8
2524: 49 ff ff 96 jal 0x2450
2528: 46 00 01 f6 sethi $r0,#0x1f6
252c: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
2530: a0 81 lwi333 $r2,[$r0+#0x4]
2532: 46 10 02 06 sethi $r1,#0x206
2536: 58 21 01 00 ori $r2,$r2,#0x100 ;
253a: a8 81 swi333 $r2,[$r0+#0x4]
253c: 58 10 84 00 ori $r1,$r1,#0x400 ; $r1 = 0x0020_6400, ADC base addr
2540: a0 85 lwi333 $r2,[$r0+#0x14]
2542: 58 21 01 00 ori $r2,$r2,#0x100
2546: a8 85 swi333 $r2,[$r0+#0x14]
2548: b4 40 lwi450 $r2,[$r0]
254a: 58 21 00 01 ori $r2,$r2,#0x1
254e: b6 40 swi450 $r2,[$r0]
2550: a0 85 lwi333 $r2,[$r0+#0x14]
2552: 58 21 00 01 ori $r2,$r2,#0x1
2556: a8 85 swi333 $r2,[$r0+#0x14]
2558: b4 01 lwi450 $r0,[$r1] ; $r0 = ADC_CTL
255a: 42 00 1c 09 bclr $r0,$r0,#0x7 ; clear bit 7 (ADC_ON)
255e: b6 01 swi450 $r0,[$r1] ; power down ADC
2560: ec 04 addi10.sp #0x4
2562: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
2566: dd 9e ret5 $lp
; ---------- 0x2568: setup_adc_dma() - sets up pin 26/GPIOB0 as ADC8, writing to $gp+0x38 via DMA
; ---------- I'm guessing this is the microphone input?
2568: 46 00 01 f6 sethi $r0,#0x1f6
256c: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
2570: b4 40 lwi450 $r2,[$r0] ; $r0 = GPIOB
2572: 84 7e movi55 $r3,#-2 ; $r3 = 0xffff_fffe
2574: 40 21 0c 02 and $r2,$r2,$r3 ;
2578: b6 40 swi450 $r2,[$r0] ; clear bit 0 of GPIOB (disable GPIOB0)
257a: 46 10 02 06 sethi $r1,#0x206 ;
257e: a0 85 lwi333 $r2,[$r0+#0x14] ; $r2 = GPIO_REN_PB: resister enable
2580: 58 10 84 00 ori $r1,$r1,#0x400 ; $r1 = 0x0020_6400, ADC base offset
2584: 40 21 0c 02 and $r2,$r2,$r3 ;
2588: a8 85 swi333 $r2,[$r0+#0x14] ; disable internal resistor for GPIOB0
258a: a0 86 lwi333 $r2,[$r0+#0x18] ;
258c: 40 21 0c 02 and $r2,$r2,$r3 ;
2590: a8 86 swi333 $r2,[$r0+#0x18] ; GPIOB0: internal resistor = pull-down mode
2592: 44 00 02 b0 movi $r0,#0x2b0 ; = 0010_1011_0000
2596: a8 0b swi333 $r0,[$r1+#0xc] ; ADC 0x0c: continuous, clock 62.5kHz, 8-bit data
2598: 44 00 02 88 movi $r0,#0x288 ; = 0010_1000_1000
259c: b6 01 swi450 $r0,[$r1] ; ADC 0x00: enable, input channel=8, enable DMA
259e: 44 00 00 91 movi $r0,#0x91 ; = 0000_1001_0001
25a2: a8 0e swi333 $r0,[$r1+#0x18] ; ADC 0x18 (dual-channel): enable, input channel=9
25a4: 46 20 02 06 sethi $r2,#0x206 ;
25a8: b4 61 lwi450 $r3,[$r1] ; $r3 = ADC_00
25aa: 46 00 03 00 sethi $r0,#0x300 ;
25ae: 58 31 80 40 ori $r3,$r3,#0x40 ;
25b2: b6 61 swi450 $r3,[$r1] ; set bit 6 in ADC_CTL: STR_CVT, start ADC converter
25b4: 58 00 00 10 ori $r0,$r0,#0x10 ; $r0 = 0x0030_0010 - dma_saddr0, source address for DMA channel 0
25b8: 58 21 04 04 ori $r2,$r2,#0x404 ; $r2 = 0x0020_6404
25bc: 3e 18 00 38 addi.gp $r1,#0x38
25c0: b6 40 swi450 $r2,[$r0] ; dma_saddr0 = 0020_6404 (AD_DATA - ADC convert data)
25c2: a8 41 swi333 $r1,[$r0+#0x4] ; dma_daddr0 = $gp+0x38
25c4: 44 10 00 c8 movi $r1,#0xc8
25c8: a8 42 swi333 $r1,[$r0+#0x8] ; dma_length0 = 0xc8
25ca: 44 10 04 81 movi $r1,#0x481 ; 0b0000_0100_1000_0001: bit0 = channel enable, bit 7:6=10=src_addr fixed,
25ce: a8 43 swi333 $r1,[$r0+#0xc] ; dma_conf0 bit10=circ_mode enable
25d0: dd 9e ret5 $lp
25d2: 92 00 nop16
25d4: 46 00 01 f6 sethi $r0,#0x1f6
25d8: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
25dc: b4 40 lwi450 $r2,[$r0]
25de: 46 10 02 06 sethi $r1,#0x206
25e2: 58 21 00 01 ori $r2,$r2,#0x1
25e6: b6 40 swi450 $r2,[$r0]
25e8: 58 10 84 00 ori $r1,$r1,#0x400
25ec: a0 85 lwi333 $r2,[$r0+#0x14]
25ee: 58 21 00 01 ori $r2,$r2,#0x1
25f2: a8 85 swi333 $r2,[$r0+#0x14]
25f4: b4 01 lwi450 $r0,[$r1]
25f6: 42 00 1c 09 bclr $r0,$r0,#0x7
25fa: b6 01 swi450 $r0,[$r1]
25fc: dd 9e ret5 $lp
25fe: 92 00 nop16
; ---------- 0x2600: set up GPIOD
2600: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
2604: 46 60 01 f6 sethi $r6,#0x1f6 ; GPIO: 0x001f6800~0x001f6bff
2608: 58 63 09 80 ori $r6,$r6,#0x980 ; $r6 = 0x001f6980, base address for GPIOD
260c: b4 26 lwi450 $r1,[$r6]
260e: 84 5b movi55 $r2,#-5
2610: 58 10 80 04 ori $r1,$r1,#0x4
2614: b6 26 swi450 $r1,[$r6]
2616: 84 01 movi55 $r0,#0x1
2618: a0 71 lwi333 $r1,[$r6+#0x4]
261a: 40 10 88 02 and $r1,$r1,$r2
261e: a8 71 swi333 $r1,[$r6+#0x4]
2620: a0 72 lwi333 $r1,[$r6+#0x8]
2622: 40 10 88 02 and $r1,$r1,$r2
2626: a8 72 swi333 $r1,[$r6+#0x8]
2628: 04 13 00 08 lwi $r1,[$r6+#0x20]
262c: 58 10 80 04 ori $r1,$r1,#0x4
2630: 14 13 00 08 swi $r1,[$r6+#0x20]
2634: 49 00 0d ee jal 0x4210
2638: 50 03 7f 00 addi $r0,$r6,#-256
263c: b4 40 lwi450 $r2,[$r0]
263e: 42 21 10 09 bclr $r2,$r2,#0x4
2642: b6 40 swi450 $r2,[$r0]
2644: 44 4f ff ef movi $r4,#-17
2648: a0 c1 lwi333 $r3,[$r0+#0x4]
264a: 46 10 02 04 sethi $r1,#0x204
264e: 40 31 90 02 and $r3,$r3,$r4
2652: a8 c1 swi333 $r3,[$r0+#0x4]
2654: 46 20 0c 00 sethi $r2,#0xc00
2658: a0 c2 lwi333 $r3,[$r0+#0x8]
265a: 58 10 88 00 ori $r1,$r1,#0x800
265e: 40 31 90 02 and $r3,$r3,$r4
2662: a8 c2 swi333 $r3,[$r0+#0x8]
2664: 84 97 movi55 $r4,#-9
2666: b4 60 lwi450 $r3,[$r0]
2668: 40 31 90 02 and $r3,$r3,$r4
266c: b6 60 swi450 $r3,[$r0]
266e: a0 c1 lwi333 $r3,[$r0+#0x4]
2670: 40 31 90 02 and $r3,$r3,$r4
2674: a8 c1 swi333 $r3,[$r0+#0x4]
2676: a0 c2 lwi333 $r3,[$r0+#0x8]
2678: 40 31 90 02 and $r3,$r3,$r4
267c: a8 c2 swi333 $r3,[$r0+#0x8]
267e: b4 06 lwi450 $r0,[$r6]
2680: 40 00 10 02 and $r0,$r0,$r4
2684: b6 06 swi450 $r0,[$r6]
2686: a0 31 lwi333 $r0,[$r6+#0x4]
2688: 40 00 10 02 and $r0,$r0,$r4
268c: a8 31 swi333 $r0,[$r6+#0x4]
268e: a0 32 lwi333 $r0,[$r6+#0x8]
2690: 40 00 10 02 and $r0,$r0,$r4
2694: a8 32 swi333 $r0,[$r6+#0x8]
2696: 44 00 00 a3 movi $r0,#0xa3
269a: b6 01 swi450 $r0,[$r1]
269c: a8 89 swi333 $r2,[$r1+#0x4]
269e: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
26a2: dd 9e ret5 $lp
26a4: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
26a8: ef fc addi10.sp #-4
26aa: 44 10 cd 20 movi $r1,#0xcd20
26ae: b4 01 lwi450 $r0,[$r1]
26b0: a0 89 lwi333 $r2,[$r1+#0x4]
26b2: b4 60 lwi450 $r3,[$r0]
26b4: 40 41 08 05 nor $r4,$r2,$r2
26b8: 40 31 0c 04 or $r3,$r2,$r3
26bc: b6 60 swi450 $r3,[$r0]
26be: 8c 28 addi45 $r1,#0x8
26c0: a0 c1 lwi333 $r3,[$r0+#0x4]
26c2: 40 32 0c 02 and $r3,$r4,$r3
26c6: a8 c1 swi333 $r3,[$r0+#0x4]
26c8: a0 c2 lwi333 $r3,[$r0+#0x8]
26ca: 40 21 88 04 or $r2,$r3,$r2
26ce: a8 82 swi333 $r2,[$r0+#0x8]
26d0: 44 00 cd 60 movi $r0,#0xcd60
26d4: 4c 10 7f ed bne $r1,$r0,0x26ae
26d8: 46 00 01 f6 sethi $r0,#0x1f6
26dc: 58 00 08 80 ori $r0,$r0,#0x880 ; GPIO offset 0x80: GPIOB base offset
26e0: b4 20 lwi450 $r1,[$r0]
26e2: 58 10 81 00 ori $r1,$r1,#0x100
26e6: b6 20 swi450 $r1,[$r0]
26e8: a0 41 lwi333 $r1,[$r0+#0x4]
26ea: 42 10 a0 09 bclr $r1,$r1,#0x8
26ee: a8 41 swi333 $r1,[$r0+#0x4]
26f0: a0 42 lwi333 $r1,[$r0+#0x8]
26f2: 58 10 81 00 ori $r1,$r1,#0x100
26f6: a8 42 swi333 $r1,[$r0+#0x8]
26f8: 44 10 01 00 movi $r1,#0x100
26fc: 14 10 00 08 swi $r1,[$r0+#0x20]
2700: 49 ff fd dc jal 0x22b8 ; GPIO input setup / TIMER2 setup
2704: 49 ff ff 7e jal 0x2600
2708: 49 00 04 0a jal 0x2f1c
270c: ec 04 addi10.sp #0x4
270e: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
2712: 48 ff ff 2b j 0x2568
2716: 92 00 nop16
2718: 44 30 cc d8 movi $r3,#0xccd8
271c: 44 10 cc d0 movi $r1,#0xccd0
2720: a2 09 lwi333.bi $r0,[$r1],#0x4 ; $r0 = ccd0[0]
2722: a2 99 lwi333.bi $r2,[$r3],#0x4 ; $r2 = ccd8[0]
2724: b4 21 lwi450 $r1,[$r1] ; $r1 = ccd0[1]
2726: b4 63 lwi450 $r3,[$r3] ; $r3 = ccd8[1]
2728: a8 d7 swi333 $r3,[$r2+#0x1c] ; ccd8[0][7] = ccd8[1]
272a: 14 31 00 08 swi $r3,[$r2+#0x20] ; ccd8[0][8] = ccd8[1]
272e: a8 47 swi333 $r1,[$r0+#0x1c] ; ccd0[0][7] = ccd0[1]
2730: 14 10 00 08 swi $r1,[$r0+#0x20] ; ccd0[0][8] = ccd0[1]
2734: a8 47 swi333 $r1,[$r0+#0x1c]
2736: 14 10 00 08 swi $r1,[$r0+#0x20]
273a: a8 47 swi333 $r1,[$r0+#0x1c]
273c: 14 10 00 08 swi $r1,[$r0+#0x20]
2740: a8 47 swi333 $r1,[$r0+#0x1c]
2742: 14 10 00 08 swi $r1,[$r0+#0x20]
2746: a8 47 swi333 $r1,[$r0+#0x1c]
2748: 14 10 00 08 swi $r1,[$r0+#0x20]
274c: a8 47 swi333 $r1,[$r0+#0x1c]
274e: 14 10 00 08 swi $r1,[$r0+#0x20]
2752: a8 47 swi333 $r1,[$r0+#0x1c]
2754: 14 10 00 08 swi $r1,[$r0+#0x20]
2758: a8 47 swi333 $r1,[$r0+#0x1c]
275a: 14 10 00 08 swi $r1,[$r0+#0x20]
275e: a8 47 swi333 $r1,[$r0+#0x1c]
2760: 14 10 00 08 swi $r1,[$r0+#0x20]
2764: a8 47 swi333 $r1,[$r0+#0x1c]
2766: 14 10 00 08 swi $r1,[$r0+#0x20]
276a: a8 47 swi333 $r1,[$r0+#0x1c]
276c: 14 10 00 08 swi $r1,[$r0+#0x20]
2770: a8 47 swi333 $r1,[$r0+#0x1c]
2772: 14 10 00 08 swi $r1,[$r0+#0x20]
2776: a8 47 swi333 $r1,[$r0+#0x1c]
2778: 14 10 00 08 swi $r1,[$r0+#0x20]
277c: a8 47 swi333 $r1,[$r0+#0x1c]
277e: 14 10 00 08 swi $r1,[$r0+#0x20]
2782: a8 47 swi333 $r1,[$r0+#0x1c]
2784: 14 10 00 08 swi $r1,[$r0+#0x20]
2788: a8 d7 swi333 $r3,[$r2+#0x1c]
278a: dd 9e ret5 $lp
278c: 3a 6f a4 3c smw.adm $r6,[$sp],$r9,#0x0 ! {$r6~$r9}
2790: 44 10 cc d8 movi $r1,#0xccd8
2794: 0c 80 80 01 lwi.bi $r8,[$r1],#0x4
2798: 44 20 cc d0 movi $r2,#0xccd0
279c: 44 30 cc c8 movi $r3,#0xccc8
27a0: b5 21 lwi450 $r9,[$r1]
27a2: a2 51 lwi333.bi $r1,[$r2],#0x4
27a4: a3 19 lwi333.bi $r4,[$r3],#0x4
27a6: 14 94 00 07 swi $r9,[$r8+#0x1c]
27aa: b4 42 lwi450 $r2,[$r2]
27ac: a5 c2 lhi333 $r7,[$r0+#0x4]
27ae: b4 a3 lwi450 $r5,[$r3]
27b0: 44 30 00 0f movi $r3,#0xf
27b4: 40 63 8c 0e sra $r6,$r7,$r3
27b8: 97 b4 xlsb33 $r6,$r6
27ba: a8 8f swi333 $r2,[$r1+#0x1c]
27bc: c6 04 beqz38 $r6,0x27c4
27be: 14 52 00 08 swi $r5,[$r4+#0x20]
27c2: d5 02 j8 0x27c6
27c4: a9 67 swi333 $r5,[$r4+#0x1c]
27c6: 9e d9 subi333 $r3,$r3,#0x1
27c8: 84 df movi55 $r6,#-1
27ca: 14 20 80 08 swi $r2,[$r1+#0x20]
27ce: 4c 33 7f f3 bne $r3,$r6,0x27b4
27d2: a5 c1 lhi333 $r7,[$r0+#0x2]
27d4: 44 30 00 0f movi $r3,#0xf
27d8: 40 63 8c 0e sra $r6,$r7,$r3
27dc: 97 b4 xlsb33 $r6,$r6
27de: a8 8f swi333 $r2,[$r1+#0x1c]
27e0: c6 04 beqz38 $r6,0x27e8
27e2: 14 52 00 08 swi $r5,[$r4+#0x20]
27e6: d5 02 j8 0x27ea
27e8: a9 67 swi333 $r5,[$r4+#0x1c]
27ea: 9e d9 subi333 $r3,$r3,#0x1
27ec: 84 df movi55 $r6,#-1
27ee: 14 20 80 08 swi $r2,[$r1+#0x20]
27f2: 4c 33 7f f3 bne $r3,$r6,0x27d8
27f6: d5 1c j8 0x282e
27f8: 84 ca movi55 $r6,#0xa
27fa: 4c 03 40 04 bne $r0,$r6,0x2802
27fe: 14 94 00 08 swi $r9,[$r8+#0x20]
2802: 9e d9 subi333 $r3,$r3,#0x1
2804: 40 63 8c 0e sra $r6,$r7,$r3
2808: 97 b4 xlsb33 $r6,$r6
280a: a8 8f swi333 $r2,[$r1+#0x1c]
280c: c6 04 beqz38 $r6,0x2814
280e: 14 52 00 08 swi $r5,[$r4+#0x20]
2812: d5 02 j8 0x2816
2814: a9 67 swi333 $r5,[$r4+#0x1c]
2816: 9e 01 subi333 $r0,$r0,#0x1
2818: 96 02 seb33 $r0,$r0
281a: 84 df movi55 $r6,#-1
281c: 14 20 80 08 swi $r2,[$r1+#0x20]
2820: 4c 03 7f ec bne $r0,$r6,0x27f8
2824: 14 94 00 07 swi $r9,[$r8+#0x1c]
2828: 3a 6f a4 04 lmw.bim $r6,[$sp],$r9,#0x0 ! {$r6~$r9}
282c: dd 9e ret5 $lp
282e: 84 6f movi55 $r3,#0xf
2830: a5 c0 lhi333 $r7,[$r0+#0x0]
2832: 80 03 mov55 $r0,$r3
2834: d5 e8 j8 0x2804
2836: 92 00 nop16
; ----------- 0x2838: ??? using 0xccd8, 0xccd0, 0xcce0
2838: 3a 6f a8 3c smw.adm $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
283c: 44 40 cc d8 movi $r4,#0xccd8
2840: 44 30 cc d0 movi $r3,#0xccd0
2844: a2 99 lwi333.bi $r2,[$r3],#0x4
2846: a3 61 lwi333.bi $r5,[$r4],#0x4
2848: 44 10 cc e0 movi $r1,#0xcce0
284c: b4 63 lwi450 $r3,[$r3]
284e: b4 84 lwi450 $r4,[$r4]
2850: a3 c9 lwi333.bi $r7,[$r1],#0x4
2852: a9 2f swi333 $r4,[$r5+#0x1c]
2854: 85 20 movi55 $r9,#0x0
2856: 14 42 80 08 swi $r4,[$r5+#0x20]
285a: b5 01 lwi450 $r8,[$r1]
285c: a8 d7 swi333 $r3,[$r2+#0x1c]
285e: 14 31 00 08 swi $r3,[$r2+#0x20]
2862: a8 d7 swi333 $r3,[$r2+#0x1c]
2864: 14 31 00 08 swi $r3,[$r2+#0x20]
2868: a8 d7 swi333 $r3,[$r2+#0x1c]
286a: 14 31 00 08 swi $r3,[$r2+#0x20]
286e: a8 d7 swi333 $r3,[$r2+#0x1c]
2870: 14 31 00 08 swi $r3,[$r2+#0x20]
2874: a8 d7 swi333 $r3,[$r2+#0x1c]
2876: 14 31 00 08 swi $r3,[$r2+#0x20]
287a: a9 2f swi333 $r4,[$r5+#0x1c]
287c: 9c 04 addi333 $r0,$r0,#0x4
287e: 81 49 mov55 $r10,$r9
2880: 44 60 00 01 movi $r6,#0x1
2884: 12 a0 00 00 shi $r10,[$r0+#0x0]
2888: 84 2f movi55 $r1,#0xf
288a: a8 d7 swi333 $r3,[$r2+#0x1c]
288c: 40 53 04 0c sll $r5,$r6,$r1
2890: a1 3b lwi333 $r4,[$r7+#0xc]
2892: 9e 49 subi333 $r1,$r1,#0x1
2894: 40 44 10 02 and $r4,$r8,$r4
2898: c4 05 beqz38 $r4,0x28a2
289a: a5 00 lhi333 $r4,[$r0+#0x0]
289c: 40 52 90 04 or $r5,$r5,$r4
28a0: ad 40 shi333 $r5,[$r0+#0x0]
28a2: 84 9f movi55 $r4,#-1
28a4: 14 31 00 08 swi $r3,[$r2+#0x20]
28a8: 4c 12 7f f1 bne $r1,$r4,0x288a
28ac: 8d 21 addi45 $r9,#0x1
28ae: 54 94 80 ff andi $r9,$r9,#0xff
28b2: 84 23 movi55 $r1,#0x3
28b4: 9e 02 subi333 $r0,$r0,#0x2
28b6: 4c 90 ff e7 bne $r9,$r1,0x2884
28ba: 3a 6f a8 04 lmw.bim $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
28be: dd 9e ret5 $lp
28c0: 44 30 cc d8 movi $r3,#0xccd8
28c4: 44 10 cc d0 movi $r1,#0xccd0
28c8: a2 09 lwi333.bi $r0,[$r1],#0x4
28ca: a2 99 lwi333.bi $r2,[$r3],#0x4
28cc: b4 21 lwi450 $r1,[$r1]
28ce: b4 63 lwi450 $r3,[$r3]
28d0: a8 d7 swi333 $r3,[$r2+#0x1c]
28d2: 14 31 00 08 swi $r3,[$r2+#0x20]
28d6: a8 47 swi333 $r1,[$r0+#0x1c]
28d8: 14 10 00 08 swi $r1,[$r0+#0x20]
28dc: a8 47 swi333 $r1,[$r0+#0x1c]
28de: 14 10 00 08 swi $r1,[$r0+#0x20]
28e2: a8 47 swi333 $r1,[$r0+#0x1c]
28e4: 14 10 00 08 swi $r1,[$r0+#0x20]
28e8: a8 d7 swi333 $r3,[$r2+#0x1c]
28ea: dd 9e ret5 $lp
28ec: 3a 6f a4 3c smw.adm $r6,[$sp],$r9,#0x0 ! {$r6~$r9}
28f0: 44 10 cc d8 movi $r1,#0xccd8
28f4: a3 c9 lwi333.bi $r7,[$r1],#0x4
28f6: 44 30 cc d0 movi $r3,#0xccd0
28fa: 44 40 cc c8 movi $r4,#0xccc8
28fe: b5 01 lwi450 $r8,[$r1]
2900: a2 99 lwi333.bi $r2,[$r3],#0x4
2902: a2 61 lwi333.bi $r1,[$r4],#0x4
2904: 14 83 80 07 swi $r8,[$r7+#0x1c]
2908: b4 63 lwi450 $r3,[$r3]
290a: b4 84 lwi450 $r4,[$r4]
290c: 50 00 00 5e addi $r0,$r0,#0x5e
2910: 84 cf movi55 $r6,#0xf
2912: a5 40 lhi333 $r5,[$r0+#0x0]
2914: a8 d7 swi333 $r3,[$r2+#0x1c]
2916: 40 92 80 11 seh $r9,$r5
291a: 4e 94 00 07 bgez $r9,0x2928
291e: 14 40 80 08 swi $r4,[$r1+#0x20]
2922: 04 90 80 08 lwi $r9,[$r1+#0x20]
2926: d5 05 j8 0x2930
2928: 14 40 80 07 swi $r4,[$r1+#0x1c]
292c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2930: 54 92 c0 00 andi $r9,$r5,#0x4000
2934: 14 31 00 08 swi $r3,[$r2+#0x20]
2938: a8 d7 swi333 $r3,[$r2+#0x1c]
293a: 4e 92 00 07 beqz $r9,0x2948
293e: 14 40 80 08 swi $r4,[$r1+#0x20]
2942: 04 90 80 08 lwi $r9,[$r1+#0x20]
2946: d5 05 j8 0x2950
2948: 14 40 80 07 swi $r4,[$r1+#0x1c]
294c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2950: 54 92 a0 00 andi $r9,$r5,#0x2000
2954: 14 31 00 08 swi $r3,[$r2+#0x20]
2958: a8 d7 swi333 $r3,[$r2+#0x1c]
295a: 4e 92 00 07 beqz $r9,0x2968
295e: 14 40 80 08 swi $r4,[$r1+#0x20]
2962: 04 90 80 08 lwi $r9,[$r1+#0x20]
2966: d5 05 j8 0x2970
2968: 14 40 80 07 swi $r4,[$r1+#0x1c]
296c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2970: 54 92 90 00 andi $r9,$r5,#0x1000
2974: 14 31 00 08 swi $r3,[$r2+#0x20]
2978: a8 d7 swi333 $r3,[$r2+#0x1c]
297a: 4e 92 00 07 beqz $r9,0x2988
297e: 14 40 80 08 swi $r4,[$r1+#0x20]
2982: 04 90 80 08 lwi $r9,[$r1+#0x20]
2986: d5 05 j8 0x2990
2988: 14 40 80 07 swi $r4,[$r1+#0x1c]
298c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2990: 54 92 88 00 andi $r9,$r5,#0x800
2994: 14 31 00 08 swi $r3,[$r2+#0x20]
2998: a8 d7 swi333 $r3,[$r2+#0x1c]
299a: 4e 92 00 07 beqz $r9,0x29a8
299e: 14 40 80 08 swi $r4,[$r1+#0x20]
29a2: 04 90 80 08 lwi $r9,[$r1+#0x20]
29a6: d5 05 j8 0x29b0
29a8: 14 40 80 07 swi $r4,[$r1+#0x1c]
29ac: 04 90 80 07 lwi $r9,[$r1+#0x1c]
29b0: 54 92 84 00 andi $r9,$r5,#0x400
29b4: 14 31 00 08 swi $r3,[$r2+#0x20]
29b8: a8 d7 swi333 $r3,[$r2+#0x1c]
29ba: 4e 92 00 07 beqz $r9,0x29c8
29be: 14 40 80 08 swi $r4,[$r1+#0x20]
29c2: 04 90 80 08 lwi $r9,[$r1+#0x20]
29c6: d5 05 j8 0x29d0
29c8: 14 40 80 07 swi $r4,[$r1+#0x1c]
29cc: 04 90 80 07 lwi $r9,[$r1+#0x1c]
29d0: 54 92 82 00 andi $r9,$r5,#0x200
29d4: 14 31 00 08 swi $r3,[$r2+#0x20]
29d8: a8 d7 swi333 $r3,[$r2+#0x1c]
29da: 4e 92 00 07 beqz $r9,0x29e8
29de: 14 40 80 08 swi $r4,[$r1+#0x20]
29e2: 04 90 80 08 lwi $r9,[$r1+#0x20]
29e6: d5 05 j8 0x29f0
29e8: 14 40 80 07 swi $r4,[$r1+#0x1c]
29ec: 04 90 80 07 lwi $r9,[$r1+#0x1c]
29f0: 54 92 81 00 andi $r9,$r5,#0x100
29f4: 14 31 00 08 swi $r3,[$r2+#0x20]
29f8: a8 d7 swi333 $r3,[$r2+#0x1c]
29fa: 4e 92 00 07 beqz $r9,0x2a08
29fe: 14 40 80 08 swi $r4,[$r1+#0x20]
2a02: 04 90 80 08 lwi $r9,[$r1+#0x20]
2a06: d5 05 j8 0x2a10
2a08: 14 40 80 07 swi $r4,[$r1+#0x1c]
2a0c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2a10: 54 92 80 80 andi $r9,$r5,#0x80
2a14: 14 31 00 08 swi $r3,[$r2+#0x20]
2a18: a8 d7 swi333 $r3,[$r2+#0x1c]
2a1a: 4e 92 00 07 beqz $r9,0x2a28
2a1e: 14 40 80 08 swi $r4,[$r1+#0x20]
2a22: 04 90 80 08 lwi $r9,[$r1+#0x20]
2a26: d5 05 j8 0x2a30
2a28: 14 40 80 07 swi $r4,[$r1+#0x1c]
2a2c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2a30: 54 92 80 40 andi $r9,$r5,#0x40
2a34: 14 31 00 08 swi $r3,[$r2+#0x20]
2a38: a8 d7 swi333 $r3,[$r2+#0x1c]
2a3a: 4e 92 00 07 beqz $r9,0x2a48
2a3e: 14 40 80 08 swi $r4,[$r1+#0x20]
2a42: 04 90 80 08 lwi $r9,[$r1+#0x20]
2a46: d5 05 j8 0x2a50
2a48: 14 40 80 07 swi $r4,[$r1+#0x1c]
2a4c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
; ---- This is the HW1-HW5 interrupt jump table
; ---- Address for HWn is 0x2a4c + (n << 2)
; ---- HW1: 0x2a50
; ---- HW2: 0x2454
; ---- HW3: 0x2458
; ---- HW4: 0x245c
; ---- HW5: 0x2460
2a50: 54 92 80 20 andi $r9,$r5,#0x20
2a54: 14 31 00 08 swi $r3,[$r2+#0x20]
2a58: a8 d7 swi333 $r3,[$r2+#0x1c]
2a5a: 4e 92 00 07 beqz $r9,0x2a68
2a5e: 14 40 80 08 swi $r4,[$r1+#0x20]
2a62: 04 90 80 08 lwi $r9,[$r1+#0x20]
2a66: d5 05 j8 0x2a70
2a68: 14 40 80 07 swi $r4,[$r1+#0x1c]
2a6c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2a70: 54 92 80 10 andi $r9,$r5,#0x10
2a74: 14 31 00 08 swi $r3,[$r2+#0x20]
2a78: a8 d7 swi333 $r3,[$r2+#0x1c]
2a7a: 4e 92 00 07 beqz $r9,0x2a88
2a7e: 14 40 80 08 swi $r4,[$r1+#0x20]
2a82: 04 90 80 08 lwi $r9,[$r1+#0x20]
2a86: d5 05 j8 0x2a90
2a88: 14 40 80 07 swi $r4,[$r1+#0x1c]
2a8c: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2a90: 54 92 80 08 andi $r9,$r5,#0x8
2a94: 14 31 00 08 swi $r3,[$r2+#0x20]
2a98: a8 d7 swi333 $r3,[$r2+#0x1c]
2a9a: 4e 92 00 07 beqz $r9,0x2aa8
2a9e: 14 40 80 08 swi $r4,[$r1+#0x20]
2aa2: 04 90 80 08 lwi $r9,[$r1+#0x20]
2aa6: d5 05 j8 0x2ab0
2aa8: 14 40 80 07 swi $r4,[$r1+#0x1c]
2aac: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ab0: 54 92 80 04 andi $r9,$r5,#0x4
2ab4: 14 31 00 08 swi $r3,[$r2+#0x20]
2ab8: a8 d7 swi333 $r3,[$r2+#0x1c]
2aba: 4e 92 00 07 beqz $r9,0x2ac8
2abe: 14 40 80 08 swi $r4,[$r1+#0x20]
2ac2: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ac6: d5 05 j8 0x2ad0
2ac8: 14 40 80 07 swi $r4,[$r1+#0x1c]
2acc: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ad0: 54 92 80 02 andi $r9,$r5,#0x2
2ad4: 14 31 00 08 swi $r3,[$r2+#0x20]
2ad8: a8 d7 swi333 $r3,[$r2+#0x1c]
2ada: 4e 92 00 07 beqz $r9,0x2ae8
2ade: 14 40 80 08 swi $r4,[$r1+#0x20]
2ae2: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ae6: d5 04 j8 0x2aee
2ae8: a9 0f swi333 $r4,[$r1+#0x1c]
2aea: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2aee: 97 6c xlsb33 $r5,$r5
2af0: 14 31 00 08 swi $r3,[$r2+#0x20]
2af4: a8 d7 swi333 $r3,[$r2+#0x1c]
2af6: c5 06 beqz38 $r5,0x2b02
2af8: 14 40 80 08 swi $r4,[$r1+#0x20]
2afc: 04 50 80 08 lwi $r5,[$r1+#0x20]
2b00: d5 04 j8 0x2b08
2b02: a9 0f swi333 $r4,[$r1+#0x1c]
2b04: 04 50 80 07 lwi $r5,[$r1+#0x1c]
2b08: 02 50 7f ff lhi $r5,[$r0+#-2]
2b0c: 14 31 00 08 swi $r3,[$r2+#0x20]
2b10: 40 92 80 11 seh $r9,$r5
2b14: a8 d7 swi333 $r3,[$r2+#0x1c]
2b16: 4e 94 00 07 bgez $r9,0x2b24
2b1a: 14 40 80 08 swi $r4,[$r1+#0x20]
2b1e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2b22: d5 05 j8 0x2b2c
2b24: 14 40 80 07 swi $r4,[$r1+#0x1c]
2b28: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2b2c: 54 92 c0 00 andi $r9,$r5,#0x4000
2b30: 14 31 00 08 swi $r3,[$r2+#0x20]
2b34: a8 d7 swi333 $r3,[$r2+#0x1c]
2b36: 4e 92 00 07 beqz $r9,0x2b44
2b3a: 14 40 80 08 swi $r4,[$r1+#0x20]
2b3e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2b42: d5 05 j8 0x2b4c
2b44: 14 40 80 07 swi $r4,[$r1+#0x1c]
2b48: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2b4c: 54 92 a0 00 andi $r9,$r5,#0x2000
2b50: 14 31 00 08 swi $r3,[$r2+#0x20]
2b54: a8 d7 swi333 $r3,[$r2+#0x1c]
2b56: 4e 92 00 07 beqz $r9,0x2b64
2b5a: 14 40 80 08 swi $r4,[$r1+#0x20]
2b5e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2b62: d5 05 j8 0x2b6c
2b64: 14 40 80 07 swi $r4,[$r1+#0x1c]
2b68: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2b6c: 54 92 90 00 andi $r9,$r5,#0x1000
2b70: 14 31 00 08 swi $r3,[$r2+#0x20]
2b74: a8 d7 swi333 $r3,[$r2+#0x1c]
2b76: 4e 92 00 07 beqz $r9,0x2b84
2b7a: 14 40 80 08 swi $r4,[$r1+#0x20]
2b7e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2b82: d5 05 j8 0x2b8c
2b84: 14 40 80 07 swi $r4,[$r1+#0x1c]
2b88: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2b8c: 54 92 88 00 andi $r9,$r5,#0x800
2b90: 14 31 00 08 swi $r3,[$r2+#0x20]
2b94: a8 d7 swi333 $r3,[$r2+#0x1c]
2b96: 4e 92 00 07 beqz $r9,0x2ba4
2b9a: 14 40 80 08 swi $r4,[$r1+#0x20]
2b9e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ba2: d5 05 j8 0x2bac
2ba4: 14 40 80 07 swi $r4,[$r1+#0x1c]
2ba8: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2bac: 54 92 84 00 andi $r9,$r5,#0x400
2bb0: 14 31 00 08 swi $r3,[$r2+#0x20]
2bb4: a8 d7 swi333 $r3,[$r2+#0x1c]
2bb6: 4e 92 00 07 beqz $r9,0x2bc4
2bba: 14 40 80 08 swi $r4,[$r1+#0x20]
2bbe: 04 90 80 08 lwi $r9,[$r1+#0x20]
2bc2: d5 05 j8 0x2bcc
2bc4: 14 40 80 07 swi $r4,[$r1+#0x1c]
2bc8: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2bcc: 54 92 82 00 andi $r9,$r5,#0x200
2bd0: 14 31 00 08 swi $r3,[$r2+#0x20]
2bd4: a8 d7 swi333 $r3,[$r2+#0x1c]
2bd6: 4e 92 00 07 beqz $r9,0x2be4
2bda: 14 40 80 08 swi $r4,[$r1+#0x20]
2bde: 04 90 80 08 lwi $r9,[$r1+#0x20]
2be2: d5 05 j8 0x2bec
2be4: 14 40 80 07 swi $r4,[$r1+#0x1c]
2be8: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2bec: 54 92 81 00 andi $r9,$r5,#0x100
2bf0: 14 31 00 08 swi $r3,[$r2+#0x20]
2bf4: a8 d7 swi333 $r3,[$r2+#0x1c]
2bf6: 4e 92 00 07 beqz $r9,0x2c04
2bfa: 14 40 80 08 swi $r4,[$r1+#0x20]
2bfe: 04 90 80 08 lwi $r9,[$r1+#0x20]
2c02: d5 05 j8 0x2c0c
2c04: 14 40 80 07 swi $r4,[$r1+#0x1c]
2c08: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2c0c: 54 92 80 80 andi $r9,$r5,#0x80
2c10: 14 31 00 08 swi $r3,[$r2+#0x20]
2c14: a8 d7 swi333 $r3,[$r2+#0x1c]
2c16: 4e 92 00 07 beqz $r9,0x2c24
2c1a: 14 40 80 08 swi $r4,[$r1+#0x20]
2c1e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2c22: d5 05 j8 0x2c2c
2c24: 14 40 80 07 swi $r4,[$r1+#0x1c]
2c28: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2c2c: 54 92 80 40 andi $r9,$r5,#0x40
2c30: 14 31 00 08 swi $r3,[$r2+#0x20]
2c34: a8 d7 swi333 $r3,[$r2+#0x1c]
2c36: 4e 92 00 07 beqz $r9,0x2c44
2c3a: 14 40 80 08 swi $r4,[$r1+#0x20]
2c3e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2c42: d5 05 j8 0x2c4c
2c44: 14 40 80 07 swi $r4,[$r1+#0x1c]
2c48: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2c4c: 54 92 80 20 andi $r9,$r5,#0x20
2c50: 14 31 00 08 swi $r3,[$r2+#0x20]
2c54: a8 d7 swi333 $r3,[$r2+#0x1c]
2c56: 4e 92 00 07 beqz $r9,0x2c64
2c5a: 14 40 80 08 swi $r4,[$r1+#0x20]
2c5e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2c62: d5 05 j8 0x2c6c
2c64: 14 40 80 07 swi $r4,[$r1+#0x1c]
2c68: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2c6c: 54 92 80 10 andi $r9,$r5,#0x10
2c70: 14 31 00 08 swi $r3,[$r2+#0x20]
2c74: a8 d7 swi333 $r3,[$r2+#0x1c]
2c76: 4e 92 00 07 beqz $r9,0x2c84
2c7a: 14 40 80 08 swi $r4,[$r1+#0x20]
2c7e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2c82: d5 05 j8 0x2c8c
2c84: 14 40 80 07 swi $r4,[$r1+#0x1c]
2c88: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2c8c: 54 92 80 08 andi $r9,$r5,#0x8
2c90: 14 31 00 08 swi $r3,[$r2+#0x20]
2c94: a8 d7 swi333 $r3,[$r2+#0x1c]
2c96: 4e 92 00 07 beqz $r9,0x2ca4
2c9a: 14 40 80 08 swi $r4,[$r1+#0x20]
2c9e: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ca2: d5 05 j8 0x2cac
2ca4: 14 40 80 07 swi $r4,[$r1+#0x1c]
2ca8: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2cac: 54 92 80 04 andi $r9,$r5,#0x4
2cb0: 14 31 00 08 swi $r3,[$r2+#0x20]
2cb4: a8 d7 swi333 $r3,[$r2+#0x1c]
2cb6: 4e 92 00 07 beqz $r9,0x2cc4
2cba: 14 40 80 08 swi $r4,[$r1+#0x20]
2cbe: 04 90 80 08 lwi $r9,[$r1+#0x20]
2cc2: d5 05 j8 0x2ccc
2cc4: 14 40 80 07 swi $r4,[$r1+#0x1c]
2cc8: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ccc: 54 92 80 02 andi $r9,$r5,#0x2
2cd0: 14 31 00 08 swi $r3,[$r2+#0x20]
2cd4: a8 d7 swi333 $r3,[$r2+#0x1c]
2cd6: 4e 92 00 07 beqz $r9,0x2ce4
2cda: 14 40 80 08 swi $r4,[$r1+#0x20]
2cde: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ce2: d5 04 j8 0x2cea
2ce4: a9 0f swi333 $r4,[$r1+#0x1c]
2ce6: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2cea: 97 6c xlsb33 $r5,$r5
2cec: 14 31 00 08 swi $r3,[$r2+#0x20]
2cf0: a8 d7 swi333 $r3,[$r2+#0x1c]
2cf2: c5 06 beqz38 $r5,0x2cfe
2cf4: 14 40 80 08 swi $r4,[$r1+#0x20]
2cf8: 04 50 80 08 lwi $r5,[$r1+#0x20]
2cfc: d5 04 j8 0x2d04
2cfe: a9 0f swi333 $r4,[$r1+#0x1c]
2d00: 04 50 80 07 lwi $r5,[$r1+#0x1c]
2d04: 02 50 7f fe lhi $r5,[$r0+#-4]
2d08: 14 31 00 08 swi $r3,[$r2+#0x20]
2d0c: 40 92 80 11 seh $r9,$r5
2d10: a8 d7 swi333 $r3,[$r2+#0x1c]
2d12: 4e 94 00 07 bgez $r9,0x2d20
2d16: 14 40 80 08 swi $r4,[$r1+#0x20]
2d1a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2d1e: d5 05 j8 0x2d28
2d20: 14 40 80 07 swi $r4,[$r1+#0x1c]
2d24: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2d28: 54 92 c0 00 andi $r9,$r5,#0x4000
2d2c: 14 31 00 08 swi $r3,[$r2+#0x20]
2d30: a8 d7 swi333 $r3,[$r2+#0x1c]
2d32: 4e 92 00 07 beqz $r9,0x2d40
2d36: 14 40 80 08 swi $r4,[$r1+#0x20]
2d3a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2d3e: d5 05 j8 0x2d48
; -------------- 0x2d40: entrypoint for some interrupt handlers
2d40: 14 40 80 07 swi $r4,[$r1+#0x1c]
; -------------- 0x2d44: entrypoint for some other interrupt handlers
2d44: 04 90 80 07 lwi $r9,[$r1+#0x1c]
; -------------- 0x2d48: HW0_int_handler($r0=0, $r1=0x2d48, $r2=caller's $sp, $r3=???, $r4=???, $r5=???)
2d48: 54 92 a0 00 andi $r9,$r5,#0x2000
2d4c: 14 31 00 08 swi $r3,[$r2+#0x20]
2d50: a8 d7 swi333 $r3,[$r2+#0x1c]
2d52: 4e 92 00 07 beqz $r9,0x2d60
2d56: 14 40 80 08 swi $r4,[$r1+#0x20]
2d5a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2d5e: d5 05 j8 0x2d68
2d60: 14 40 80 07 swi $r4,[$r1+#0x1c]
2d64: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2d68: 54 92 90 00 andi $r9,$r5,#0x1000
2d6c: 14 31 00 08 swi $r3,[$r2+#0x20]
2d70: a8 d7 swi333 $r3,[$r2+#0x1c]
2d72: 4e 92 00 07 beqz $r9,0x2d80
2d76: 14 40 80 08 swi $r4,[$r1+#0x20]
2d7a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2d7e: d5 05 j8 0x2d88
2d80: 14 40 80 07 swi $r4,[$r1+#0x1c]
2d84: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2d88: 54 92 88 00 andi $r9,$r5,#0x800
2d8c: 14 31 00 08 swi $r3,[$r2+#0x20]
2d90: a8 d7 swi333 $r3,[$r2+#0x1c]
2d92: 4e 92 00 07 beqz $r9,0x2da0
2d96: 14 40 80 08 swi $r4,[$r1+#0x20]
2d9a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2d9e: d5 05 j8 0x2da8
2da0: 14 40 80 07 swi $r4,[$r1+#0x1c]
2da4: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2da8: 54 92 84 00 andi $r9,$r5,#0x400
2dac: 14 31 00 08 swi $r3,[$r2+#0x20]
2db0: a8 d7 swi333 $r3,[$r2+#0x1c]
2db2: 4e 92 00 07 beqz $r9,0x2dc0
2db6: 14 40 80 08 swi $r4,[$r1+#0x20]
2dba: 04 90 80 08 lwi $r9,[$r1+#0x20]
2dbe: d5 05 j8 0x2dc8
2dc0: 14 40 80 07 swi $r4,[$r1+#0x1c]
2dc4: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2dc8: 54 92 82 00 andi $r9,$r5,#0x200
2dcc: 14 31 00 08 swi $r3,[$r2+#0x20]
2dd0: a8 d7 swi333 $r3,[$r2+#0x1c]
2dd2: 4e 92 00 07 beqz $r9,0x2de0
2dd6: 14 40 80 08 swi $r4,[$r1+#0x20]
2dda: 04 90 80 08 lwi $r9,[$r1+#0x20]
2dde: d5 05 j8 0x2de8
2de0: 14 40 80 07 swi $r4,[$r1+#0x1c]
2de4: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2de8: 54 92 81 00 andi $r9,$r5,#0x100
2dec: 14 31 00 08 swi $r3,[$r2+#0x20]
2df0: a8 d7 swi333 $r3,[$r2+#0x1c]
2df2: 4e 92 00 07 beqz $r9,0x2e00
2df6: 14 40 80 08 swi $r4,[$r1+#0x20]
2dfa: 04 90 80 08 lwi $r9,[$r1+#0x20]
2dfe: d5 05 j8 0x2e08
2e00: 14 40 80 07 swi $r4,[$r1+#0x1c]
2e04: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2e08: 54 92 80 80 andi $r9,$r5,#0x80
2e0c: 14 31 00 08 swi $r3,[$r2+#0x20]
2e10: a8 d7 swi333 $r3,[$r2+#0x1c]
2e12: 4e 92 00 07 beqz $r9,0x2e20
2e16: 14 40 80 08 swi $r4,[$r1+#0x20]
2e1a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2e1e: d5 05 j8 0x2e28
2e20: 14 40 80 07 swi $r4,[$r1+#0x1c]
2e24: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2e28: 54 92 80 40 andi $r9,$r5,#0x40
2e2c: 14 31 00 08 swi $r3,[$r2+#0x20]
2e30: a8 d7 swi333 $r3,[$r2+#0x1c]
2e32: 4e 92 00 07 beqz $r9,0x2e40
2e36: 14 40 80 08 swi $r4,[$r1+#0x20]
2e3a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2e3e: d5 05 j8 0x2e48
2e40: 14 40 80 07 swi $r4,[$r1+#0x1c]
2e44: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2e48: 54 92 80 20 andi $r9,$r5,#0x20
2e4c: 14 31 00 08 swi $r3,[$r2+#0x20]
2e50: a8 d7 swi333 $r3,[$r2+#0x1c]
2e52: 4e 92 00 07 beqz $r9,0x2e60
2e56: 14 40 80 08 swi $r4,[$r1+#0x20]
2e5a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2e5e: d5 05 j8 0x2e68
2e60: 14 40 80 07 swi $r4,[$r1+#0x1c]
2e64: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2e68: 54 92 80 10 andi $r9,$r5,#0x10
2e6c: 14 31 00 08 swi $r3,[$r2+#0x20]
2e70: a8 d7 swi333 $r3,[$r2+#0x1c]
2e72: 4e 92 00 07 beqz $r9,0x2e80
2e76: 14 40 80 08 swi $r4,[$r1+#0x20]
2e7a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2e7e: d5 05 j8 0x2e88
2e80: 14 40 80 07 swi $r4,[$r1+#0x1c]
2e84: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2e88: 54 92 80 08 andi $r9,$r5,#0x8
2e8c: 14 31 00 08 swi $r3,[$r2+#0x20]
2e90: a8 d7 swi333 $r3,[$r2+#0x1c]
2e92: 4e 92 00 07 beqz $r9,0x2ea0
2e96: 14 40 80 08 swi $r4,[$r1+#0x20]
2e9a: 04 90 80 08 lwi $r9,[$r1+#0x20]
2e9e: d5 05 j8 0x2ea8
2ea0: 14 40 80 07 swi $r4,[$r1+#0x1c]
2ea4: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ea8: 54 92 80 04 andi $r9,$r5,#0x4
2eac: 14 31 00 08 swi $r3,[$r2+#0x20]
2eb0: a8 d7 swi333 $r3,[$r2+#0x1c]
2eb2: 4e 92 00 07 beqz $r9,0x2ec0
2eb6: 14 40 80 08 swi $r4,[$r1+#0x20]
2eba: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ebe: d5 05 j8 0x2ec8
2ec0: 14 40 80 07 swi $r4,[$r1+#0x1c]
2ec4: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ec8: 54 92 80 02 andi $r9,$r5,#0x2
2ecc: 14 31 00 08 swi $r3,[$r2+#0x20]
2ed0: a8 d7 swi333 $r3,[$r2+#0x1c]
2ed2: 4e 92 00 07 beqz $r9,0x2ee0
2ed6: 14 40 80 08 swi $r4,[$r1+#0x20]
2eda: 04 90 80 08 lwi $r9,[$r1+#0x20]
2ede: d5 04 j8 0x2ee6
2ee0: a9 0f swi333 $r4,[$r1+#0x1c]
2ee2: 04 90 80 07 lwi $r9,[$r1+#0x1c]
2ee6: 97 6c xlsb33 $r5,$r5
2ee8: 14 31 00 08 swi $r3,[$r2+#0x20]
2eec: a8 d7 swi333 $r3,[$r2+#0x1c]
2eee: 14 83 80 08 swi $r8,[$r7+#0x20]
2ef2: c5 06 beqz38 $r5,0x2efe
2ef4: 14 40 80 08 swi $r4,[$r1+#0x20]
2ef8: 04 50 80 08 lwi $r5,[$r1+#0x20]
2efc: d5 03 j8 0x2f02
2efe: a9 0f swi333 $r4,[$r1+#0x1c]
2f00: a1 4f lwi333 $r5,[$r1+#0x1c]
2f02: 9f b1 subi333 $r6,$r6,#0x1
2f04: 97 b2 seb33 $r6,$r6
2f06: 84 bf movi55 $r5,#-1
2f08: 14 31 00 08 swi $r3,[$r2+#0x20]
2f0c: 9e 06 subi333 $r0,$r0,#0x6
2f0e: 14 83 80 07 swi $r8,[$r7+#0x1c]
2f12: 4c 62 fd 00 bne $r6,$r5,0x2912
2f16: 3a 6f a4 04 lmw.bim $r6,[$sp],$r9,#0x0 ! {$r6~$r9}
2f1a: dd 9e ret5 $lp
; ----------- 0x2f1c: messing with 0xcd80, called during system init
2f1c: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
2f20: ef ec addi10.sp #-20
2f22: 44 00 cd 80 movi $r0,#0xcd80
2f26: 3a 00 04 00 lmw.bi $r0,[$r0],$r1,#0x0 ! {$r0~$r1}
2f2a: 84 40 movi55 $r2,#0x0
2f2c: 50 7f 80 08 addi $r7,$sp,#0x8
2f30: 80 df mov55 $r6,$sp
2f32: b6 07 swi450 $r0,[$r7]
2f34: ac 7a shi333 $r1,[$r7+#0x4]
2f36: 12 2f 80 02 shi $r2,[$sp+#0x4]
2f3a: b6 5f swi450 $r2,[$sp]
2f3c: 85 09 movi55 $r8,#0x9
2f3e: 45 c0 51 18 movi $fp,#0x5118
2f42: d5 05 j8 0x2f4c
2f44: 4e 82 00 1c beqz $r8,0x2f7c
2f48: 40 80 80 10 seb $r8,$r1
2f4c: 44 00 00 14 movi $r0,#0x14
2f50: 49 00 09 86 jal 0x425c
2f54: dd 3c jral5 $fp
2f56: 80 07 mov55 $r0,$r7
2f58: 49 ff fc 1a jal 0x278c
2f5c: 80 1f mov55 $r0,$sp
2f5e: 49 ff fc 6d jal 0x2838
2f62: a4 30 lhi333 $r0,[$r6+#0x0]
2f64: 44 20 87 f0 movi $r2,#0x87f0
2f68: 50 14 7f ff addi $r1,$r8,#-1
2f6c: 4c 01 7f ec bne $r0,$r2,0x2f44
2f70: a4 b1 lhi333 $r2,[$r6+#0x2]
2f72: 4c 20 7f e9 bne $r2,$r0,0x2f44
2f76: a4 32 lhi333 $r0,[$r6+#0x4]
2f78: 4c 01 7f e6 bne $r0,$r2,0x2f44
2f7c: ec 14 addi10.sp #0x14
2f7e: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
2f82: dd 9e ret5 $lp
; ----------- 0x2f84 - ccf0_twiddle($r0)
2f84: 96 00 zeb33 $r0,$r0 ; clear all but the low byte (?)
2f86: c0 09 beqz38 $r0,0x2f98 ; if $r0 != 0:
2f88: 44 00 cc f0 movi $r0,#0xccf0 ; $r0 = 0xccf0
2f8c: a2 41 lwi333.bi $r1,[$r0],#0x4 ; $r1 = [0xccf0]
2f8e: b4 00 lwi450 $r0,[$r0] ; $r0 = [0xccf4]
2f90: 14 00 80 08 swi $r0,[$r1+#0x20] ; [$r1+0x20] = $r0
2f94: 48 00 00 07 j 0x2fa2 ; else:
2f98: 44 00 cc f0 movi $r0,#0xccf0 ; $r0 = 0xccf0
2f9c: a2 41 lwi333.bi $r1,[$r0],#0x4 ; $r1 = [0xccf0]
2f9e: b4 00 lwi450 $r0,[$r0] ; $r0 = [0xccf4]
2fa0: a8 0f swi333 $r0,[$r1+#0x1c] ; [$r1+0x1c] = $r0
2fa2: dd 9e ret5 $lp
; ---------- 0x2fa4 - func_2fa4(dest=$r0, b1=$r1, b2=$r2)
2fa4: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
2fa8: 97 90 zeb33 $r6,$r2
2faa: 96 48 zeb33 $r1,$r1
2fac: 84 47 movi55 $r2,#0x7
2fae: 4c 11 00 12 beq $r1,$r2,0x2fd2 ; if b1 == 7: goto BYTE1_7
2fb2: 84 48 movi55 $r2,#0x8
2fb4: 4c 11 00 19 beq $r1,$r2,0x2fe6 ; if b1 == 8: goto BYTE1_8
2fb8: 84 45 movi55 $r2,#0x5
2fba: 4c 11 40 20 bne $r1,$r2,0x2ffa ; if b1 != 5: goto EXIT_FAIL
2fbe: 84 21 movi55 $r1,#0x1
2fc0: 4c 60 c0 1d bne $r6,$r1,0x2ffa ; if b2 != 1: goto EXIT_FAIL
2fc4: 3e 1f ff 48 addi.gp $r1,#-184 ;label BYTE1_5_BYTE2_1:
2fc8: 84 46 movi55 $r2,#0x6
2fca: 49 00 38 6d jal 0xa0a4 ; memcpy(dest=$r0, src=$gp-184, n=6)
2fce: 80 06 mov55 $r0,$r6
2fd0: d5 16 j8 0x2ffc ; return 1
2fd2: 84 41 movi55 $r2,#0x1 ;label BYTE1_7:
2fd4: 4c 61 40 13 bne $r6,$r2,0x2ffa ; if b2 != 1: goto EXIT_FAIL
2fd8: 3e 1f ff 40 addi.gp $r1,#-192
2fdc: 84 46 movi55 $r2,#0x6
2fde: 49 00 38 63 jal 0xa0a4 ; memcpy(dest=$r0, src=$gp-192, n=6)
2fe2: 80 06 mov55 $r0,$r6
2fe4: d5 0c j8 0x2ffc ; return 1
2fe6: 84 21 movi55 $r1,#0x1 ;label BYTE1_8:
2fe8: 4c 60 c0 09 bne $r6,$r1,0x2ffa ; if b2 != 1: goto EXIT_FAIL
2fec: 3e 1f ff 30 addi.gp $r1,#-208
2ff0: 84 46 movi55 $r2,#0x6
2ff2: 49 00 38 59 jal 0xa0a4 ; memcpy(dest=$r0, src=$gp-208, n=6)
2ff6: 80 06 mov55 $r0,$r6
2ff8: d5 02 j8 0x2ffc ; return 1
2ffa: 84 00 movi55 $r0,#0x0 ;label EXIT_FAIL: return 0
2ffc: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
3000: dd 9e ret5 $lp
3002: 92 00 nop16
3004: 3a 6f aa 3c smw.adm $r6,[$sp],$r10,#0x8 ! {$r6~$r10, $fp}
3008: 3c 3c 00 07 lwi.gp $r3,[+#0x1c]
300c: 44 00 d3 04 movi $r0,#0xd304
3010: 44 20 d3 10 movi $r2,#0xd310
3014: 44 70 00 2c movi $r7,#0x2c
3018: 45 c0 00 16 movi $fp,#0x16
301c: 44 a0 ce 68 movi $r10,#0xce68
3020: 3e 98 01 00 addi.gp $r9,#0x100
3024: 20 60 00 00 lbsi $r6,[$r0+#0x0]
3028: 80 a3 mov55 $r5,$r3
302a: 20 10 00 01 lbsi $r1,[$r0+#0x1]
302e: 42 53 1c 73 maddr32 $r5,$r6,$r7
3032: 85 1f movi55 $r8,#-1
3034: 38 42 85 10 lbs $r4,[$r5+($r1<<#0x1)]
3038: 9c 02 addi333 $r0,$r0,#0x2
303a: 4c 44 40 21 bne $r4,$r8,0x307c
303e: 40 80 84 00 add $r8,$r1,$r1
3042: 88 a8 add45 $r5,$r8
3044: 20 52 80 01 lbsi $r5,[$r5+#0x1]
3048: dc 1a bnes38 $r4,0x307c
304a: 42 13 70 73 maddr32 $r1,$r6,$fp
304e: 99 89 add333 $r6,$r1,$r1
3050: 44 40 ce 68 movi $r4,#0xce68
3054: 99 b4 add333 $r6,$r6,$r4
3056: 38 45 05 00 lb $r4,[$r10+($r1<<#0x1)]
305a: a6 71 lbi333 $r1,[$r6+#0x1]
305c: 95 24 slli333 $r4,$r4,#0x4
305e: 99 21 add333 $r4,$r4,$r1
3060: 94 62 slli333 $r1,$r4,#0x2
3062: 3e 68 01 00 addi.gp $r6,#0x100
3066: 00 81 00 00 lbi $r8,[$r2+#0x0]
306a: 98 4e add333 $r1,$r1,$r6
306c: af 4b sbi333 $r5,[$r1+#0x3]
306e: 38 84 92 08 sb $r8,[$r9+($r4<<#0x2)]
3072: a7 52 lbi333 $r5,[$r2+#0x2]
3074: a7 11 lbi333 $r4,[$r2+#0x1]
3076: af 4a sbi333 $r5,[$r1+#0x2]
3078: 10 40 80 01 sbi $r4,[$r1+#0x1]
307c: 44 60 d3 10 movi $r6,#0xd310
3080: 9c 94 addi333 $r2,$r2,#0x4
3082: 4c 03 7f d1 bne $r0,$r6,0x3024
3086: 50 01 80 58 addi $r0,$r3,#0x58
308a: 20 10 00 14 lbsi $r1,[$r0+#0x14]
308e: 85 1f movi55 $r8,#-1
3090: 4c 14 40 1a bne $r1,$r8,0x30c4
3094: 2e 60 05 1b lbi.gp $r6,[+#0x51b]
3098: 44 10 00 ff movi $r1,#0xff
; ---------- 0x309c: weird_call_weird_math: $r1=multiplier, $r6=addr, $r7=mask(?), $r9=addr...
309c: 42 63 04 24 mul $r6,$r6,$r1 ; $r6 *= $r1
30a0: 46 25 1e b8 sethi $r2,#0x51eb8 ; $r2 = 0x51eb8000
30a4: 3e 18 02 68 addi.gp $r1,#0x268 ; $r1 = $gp+0x268
30a8: 58 21 05 1f ori $r2,$r2,#0x51f ; $r2 = 0x51eb851f (combine with >> 5 -> divide by 100)
30ac: 42 63 08 68 mulsr64 $r6,$r6,$r2 ; ($r6, $r7) = ($r6 * 0x51eb851f)
30b0: 80 81 mov55 $r4,$r1 ; $r4 = $gp+0x268
30b2: 84 5a movi55 $r2,#-6 ; $r2 = -6
30b4: 18 22 00 01 sbi.bi $r2,[$r4],#0x1 ; [$r4] = -6; $r4++
30b8: 40 53 94 0a srai $r5,$r7,#0x5 ; $r5 = $r6 // 100
30bc: af 4b sbi333 $r5,[$r1+#0x3] ; [$gp+0x26b] = $r6 // 100 (????)
30be: ae a0 sbi333 $r2,[$r4+#0x0]
30c0: 10 20 80 02 sbi $r2,[$r1+#0x2]
30c4: 20 00 00 16 lbsi $r0,[$r0+#0x16]
30c8: 84 3f movi55 $r1,#-1
30ca: 4c 00 c0 19 bne $r0,$r1,0x30fc
30ce: 2e 40 05 17 lbi.gp $r4,[+#0x517]
30d2: 44 00 00 ff movi $r0,#0xff
30d6: 42 42 00 24 mul $r4,$r4,$r0
30da: 46 15 1e b8 sethi $r1,#0x51eb8
30de: 3e 08 02 6c addi.gp $r0,#0x26c
30e2: 58 10 85 1f ori $r1,$r1,#0x51f
30e6: 42 42 04 68 mulsr64 $r4,$r4,$r1
30ea: 80 40 mov55 $r2,$r0
30ec: 84 3a movi55 $r1,#-6
30ee: 18 11 00 01 sbi.bi $r1,[$r2],#0x1
30f2: 40 42 94 0a srai $r4,$r5,#0x5
30f6: af 03 sbi333 $r4,[$r0+#0x3]
30f8: ae 50 sbi333 $r1,[$r2+#0x0]
30fa: ae 42 sbi333 $r1,[$r0+#0x2]
30fc: 50 01 80 84 addi $r0,$r3,#0x84
3100: 20 10 00 14 lbsi $r1,[$r0+#0x14]
3104: 84 5f movi55 $r2,#-1
3106: 4c 11 40 19 bne $r1,$r2,0x3138
310a: 2e 60 05 23 lbi.gp $r6,[+#0x523]
310e: 44 10 00 ff movi $r1,#0xff
3112: 42 63 04 24 mul $r6,$r6,$r1
3116: 46 25 1e b8 sethi $r2,#0x51eb8
311a: 3e 18 02 28 addi.gp $r1,#0x228
311e: 58 21 05 1f ori $r2,$r2,#0x51f
3122: 42 63 08 68 mulsr64 $r6,$r6,$r2
3126: 80 81 mov55 $r4,$r1
3128: 84 5a movi55 $r2,#-6
312a: 18 22 00 01 sbi.bi $r2,[$r4],#0x1
312e: 40 53 94 0a srai $r5,$r7,#0x5
3132: af 4b sbi333 $r5,[$r1+#0x3]
3134: ae a0 sbi333 $r2,[$r4+#0x0]
3136: ae 8a sbi333 $r2,[$r1+#0x2]
3138: 20 00 00 16 lbsi $r0,[$r0+#0x16]
313c: 84 9f movi55 $r4,#-1
313e: 4c 02 40 19 bne $r0,$r4,0x3170
3142: 2e 40 05 1f lbi.gp $r4,[+#0x51f]
3146: 44 00 00 ff movi $r0,#0xff
314a: 42 42 00 24 mul $r4,$r4,$r0
314e: 46 15 1e b8 sethi $r1,#0x51eb8
3152: 3e 08 02 2c addi.gp $r0,#0x22c
3156: 58 10 85 1f ori $r1,$r1,#0x51f
315a: 42 42 04 68 mulsr64 $r4,$r4,$r1
315e: 80 40 mov55 $r2,$r0
3160: 84 3a movi55 $r1,#-6
3162: 18 11 00 01 sbi.bi $r1,[$r2],#0x1
3166: 40 42 94 0a srai $r4,$r5,#0x5
316a: af 03 sbi333 $r4,[$r0+#0x3]
316c: ae 50 sbi333 $r1,[$r2+#0x0]
316e: ae 42 sbi333 $r1,[$r0+#0x2]
3170: 20 01 80 f8 lbsi $r0,[$r3+#0xf8]
3174: 84 bf movi55 $r5,#-1
3176: d8 19 bnes38 $r0,0x31a8
3178: 2e 40 05 13 lbi.gp $r4,[+#0x513]
317c: 44 00 00 ff movi $r0,#0xff
3180: 42 42 00 24 mul $r4,$r4,$r0
3184: 46 15 1e b8 sethi $r1,#0x51eb8
3188: 3e 08 01 b0 addi.gp $r0,#0x1b0
318c: 58 10 85 1f ori $r1,$r1,#0x51f
3190: 42 42 04 68 mulsr64 $r4,$r4,$r1
3194: 80 40 mov55 $r2,$r0
3196: 84 3a movi55 $r1,#-6
3198: 18 11 00 01 sbi.bi $r1,[$r2],#0x1
319c: 40 32 94 0a srai $r3,$r5,#0x5
31a0: ae c3 sbi333 $r3,[$r0+#0x3]
31a2: ae 50 sbi333 $r1,[$r2+#0x0]
31a4: 10 10 00 02 sbi $r1,[$r0+#0x2]
31a8: 3a 6f aa 04 lmw.bim $r6,[$sp],$r10,#0x8 ! {$r6~$r10, $fp}
31ac: dd 9e ret5 $lp
31ae: 92 00 nop16
; ----------- 0x31b0: func_31b0()
; ----------- callers: func_39c0, ...
31b0: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
31b4: ef ec addi10.sp #-20
31b6: 46 00 01 00 sethi $r0,#0x100
31ba: 3c ad ff 9f lwi.gp $r10,[+#-388]
31be: 4e a2 00 62 beqz $r10,0x3282
31c2: 84 00 movi55 $r0,#0x0
31c4: f0 81 swi37.sp $r0,[+#0x4]
31c6: 3c 0c 00 07 lwi.gp $r0,[+#0x1c]
31ca: 46 91 06 24 sethi $r9,#0x10624
31ce: 58 94 8d d3 ori $r9,$r9,#0xdd3 ; $r9 = 0x1062_4dd3 (probably part of an optimized integer divide)
31d2: f0 82 swi37.sp $r0,[+#0x8]
31d4: 84 00 movi55 $r0,#0x0
31d6: 14 9f 80 03 swi $r9,[$sp+#0xc]
31da: 2e 87 ff e3 lbi.gp $r8,[+#-29]
31de: 3e 68 03 5b addi.gp $r6,#0x35b
31e2: 3e 78 01 00 addi.gp $r7,#0x100
31e6: 83 c0 mov55 $lp,$r0
31e8: 45 c0 00 82 movi $fp,#0x82
31ec: 81 20 mov55 $r9,$r0
31ee: d5 3d j8 0x3268
31f0: 20 02 80 00 lbsi $r0,[$r5+#0x0]
31f4: 84 3f movi55 $r1,#-1
31f6: 4c 00 80 05 beq $r0,$r1,0x3200
31fa: 20 12 80 01 lbsi $r1,[$r5+#0x1]
31fe: d5 05 j8 0x3208
3200: 20 12 80 01 lbsi $r1,[$r5+#0x1]
3204: 4c 10 00 24 beq $r1,$r0,0x324c
3208: 00 22 7f fd lbi $r2,[$r4+#-3]
320c: 94 04 slli333 $r0,$r0,#0x4
320e: 98 01 add333 $r0,$r0,$r1
3210: 38 23 82 08 sb $r2,[$r7+($r0<<#0x2)]
3214: 94 42 slli333 $r1,$r0,#0x2
3216: 3e 08 01 00 addi.gp $r0,#0x100
321a: 98 88 add333 $r2,$r1,$r0
321c: 00 12 7f fe lbi $r1,[$r4+#-2]
3220: ae 51 sbi333 $r1,[$r2+#0x1]
3222: 00 02 7f ff lbi $r0,[$r4+#-1]
3226: ae 12 sbi333 $r0,[$r2+#0x2]
3228: 4e 83 00 10 bnez $r8,0x3248
322c: a6 60 lbi333 $r1,[$r4+#0x0]
322e: 00 05 00 00 lbi $r0,[$r10+#0x0]
3232: 42 00 80 24 mul $r0,$r1,$r0
3236: 42 00 70 24 mul $r0,$r0,$fp
323a: 42 00 0c 68 mulsr64 $r0,$r0,$r3
323e: 40 00 9c 0a srai $r0,$r1,#0x7
3242: ae 13 sbi333 $r0,[$r2+#0x3]
3244: 48 00 00 04 j 0x324c
3248: 11 e1 00 03 sbi $lp,[$r2+#0x3]
324c: 9d 24 addi333 $r4,$r4,#0x4
324e: 9d 6a addi333 $r5,$r5,#0x2
3250: 4c 62 7f d0 bne $r6,$r4,0x31f0
3254: f1 01 lwi37.sp $r1,[+#0x4]
3256: 8d 21 addi45 $r9,#0x1
3258: 50 10 80 2c addi $r1,$r1,#0x2c
325c: 84 46 movi55 $r2,#0x6
325e: f1 81 swi37.sp $r1,[+#0x4]
3260: 50 63 00 58 addi $r6,$r6,#0x58
3264: 4c 91 00 0f beq $r9,$r2,0x3282
3268: 44 40 00 58 movi $r4,#0x58
326c: 42 44 90 24 mul $r4,$r9,$r4
3270: f0 02 lwi37.sp $r0,[+#0x8]
3272: f1 01 lwi37.sp $r1,[+#0x4]
3274: 3e 28 03 00 addi.gp $r2,#0x300
3278: 99 22 add333 $r4,$r4,$r2
327a: 99 41 add333 $r5,$r0,$r1
327c: 9d 23 addi333 $r4,$r4,#0x3
327e: f3 03 lwi37.sp $r3,[+#0xc]
3280: d5 b8 j8 0x31f0
3282: ec 14 addi10.sp #0x14
3284: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
3288: dd 9e ret5 $lp
328a: 92 00 nop16
328c: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
3290: 3e 7f fe 7c addi.gp $r7,#-388
3294: b4 27 lwi450 $r1,[$r7]
3296: 97 80 zeb33 $r6,$r0
3298: c1 5e beqz38 $r1,0x3354
329a: 54 83 00 04 andi $r8,$r6,#0x4
329e: 4e 82 00 0f beqz $r8,0x32bc
32a2: a6 08 lbi333 $r0,[$r1+#0x0]
32a4: e6 14 slti45 $r0,#0x14
32a6: e8 07 beqzs8 0x32b4
32a8: 9c 01 addi333 $r0,$r0,#0x1
32aa: ae 08 sbi333 $r0,[$r1+#0x0]
32ac: 85 01 movi55 $r8,#0x1
32ae: 49 ff ff 81 jal 0x31b0
32b2: d5 05 j8 0x32bc
32b4: 84 2c movi55 $r1,#0xc
32b6: 3e 17 ff e6 sbi.gp $r1,[+#-26]
32ba: 85 00 movi55 $r8,#0x0
32bc: 54 03 00 08 andi $r0,$r6,#0x8
32c0: c0 0e beqz38 $r0,0x32dc
32c2: b4 07 lwi450 $r0,[$r7]
32c4: a6 40 lbi333 $r1,[$r0+#0x0]
32c6: c1 07 beqz38 $r1,0x32d4
32c8: 9e 49 subi333 $r1,$r1,#0x1
32ca: ae 40 sbi333 $r1,[$r0+#0x0]
32cc: 85 01 movi55 $r8,#0x1
32ce: 49 ff ff 71 jal 0x31b0
32d2: d5 05 j8 0x32dc
32d4: 44 10 00 0c movi $r1,#0xc
32d8: 3e 17 ff e7 sbi.gp $r1,[+#-25]
32dc: 54 03 00 30 andi $r0,$r6,#0x30
32e0: c0 08 beqz38 $r0,0x32f0
32e2: 3c 1d ff e2 lwi.gp $r1,[+#-120]
32e6: c1 05 beqz38 $r1,0x32f0
32e8: 80 06 mov55 $r0,$r6
32ea: dd 21 jral5 $r1
32ec: 48 00 00 20 j 0x332c
32f0: 54 03 00 10 andi $r0,$r6,#0x10
32f4: c0 0c beqz38 $r0,0x330c
32f6: b4 07 lwi450 $r0,[$r7]
32f8: a6 41 lbi333 $r1,[$r0+#0x1]
32fa: e6 24 slti45 $r1,#0x4
32fc: e8 05 beqzs8 0x3306
32fe: 9c 49 addi333 $r1,$r1,#0x1
3300: ae 41 sbi333 $r1,[$r0+#0x1]
3302: 85 01 movi55 $r8,#0x1
3304: d5 04 j8 0x330c
3306: 84 2c movi55 $r1,#0xc
3308: 3e 17 ff e4 sbi.gp $r1,[+#-28]
330c: 54 03 00 20 andi $r0,$r6,#0x20
3310: c0 0e beqz38 $r0,0x332c
3312: b4 07 lwi450 $r0,[$r7]
3314: a6 41 lbi333 $r1,[$r0+#0x1]
3316: c1 05 beqz38 $r1,0x3320
3318: 9e 49 subi333 $r1,$r1,#0x1
331a: ae 41 sbi333 $r1,[$r0+#0x1]
331c: 85 01 movi55 $r8,#0x1
331e: d5 07 j8 0x332c
3320: 46 00 01 00 sethi $r0,#0x100
3324: 44 10 00 0c movi $r1,#0xc
3328: 3e 17 ff e5 sbi.gp $r1,[+#-27]
332c: 54 63 00 40 andi $r6,$r6,#0x40
3330: 4e 62 00 0a beqz $r6,0x3344
3334: 46 00 01 00 sethi $r0,#0x100
3338: 2e 17 ff e2 lbi.gp $r1,[+#-30]
333c: 5c 10 80 01 slti $r1,$r1,#0x1
3340: 3e 17 ff e2 sbi.gp $r1,[+#-30]
3344: 4e 82 00 08 beqz $r8,0x3354
3348: 46 00 01 00 sethi $r0,#0x100
334c: 44 10 00 01 movi $r1,#0x1
3350: 3e 17 ff de sbi.gp $r1,[+#-34]
3354: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
3358: dd 9e ret5 $lp
335a: 92 00 nop16
335c: a6 40 lbi333 $r1,[$r0+#0x0]
335e: 9e 89 subi333 $r2,$r1,#0x1
3360: 96 90 zeb33 $r2,$r2
3362: 5c f1 00 f1 slti $r15,$r2,#0xf1
3366: e8 03 beqzs8 0x336c
3368: 3e 17 fe 78 sbi.gp $r1,[+#-392]
336c: 9c 81 addi333 $r2,$r0,#0x1
336e: a6 50 lbi333 $r1,[$r2+#0x0]
3370: 9e c9 subi333 $r3,$r1,#0x1
3372: 96 d8 zeb33 $r3,$r3
3374: e6 63 slti45 $r3,#0x3
3376: e8 03 beqzs8 0x337c
3378: 3e 17 fe 79 sbi.gp $r1,[+#-391]
337c: a6 40 lbi333 $r1,[$r0+#0x0]
337e: 84 68 movi55 $r3,#0x8
3380: 4c 11 80 27 beq $r1,$r3,0x33ce
3384: e6 29 slti45 $r1,#0x9
3386: e8 08 beqzs8 0x3396
3388: 84 65 movi55 $r3,#0x5
338a: 4c 11 80 0e beq $r1,$r3,0x33a6
338e: 84 67 movi55 $r3,#0x7
3390: 4c 11 c0 35 bne $r1,$r3,0x33fa
3394: d5 13 j8 0x33ba
3396: 84 4e movi55 $r2,#0xe
3398: 4c 11 00 2b beq $r1,$r2,0x33ee
339c: 44 30 00 f1 movi $r3,#0xf1
33a0: 4c 11 c0 2d bne $r1,$r3,0x33fa
33a4: d5 1f j8 0x33e2
33a6: a6 50 lbi333 $r1,[$r2+#0x0]
33a8: 84 41 movi55 $r2,#0x1
33aa: 4c 11 40 28 bne $r1,$r2,0x33fa
33ae: 9c 42 addi333 $r1,$r0,#0x2
33b0: 3e 0f ff 48 addi.gp $r0,#-184
33b4: 84 46 movi55 $r2,#0x6
33b6: 48 00 36 77 j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
33ba: a6 50 lbi333 $r1,[$r2+#0x0]
33bc: 84 61 movi55 $r3,#0x1
33be: 4c 11 c0 1e bne $r1,$r3,0x33fa
33c2: 9c 42 addi333 $r1,$r0,#0x2
33c4: 3e 0f ff 40 addi.gp $r0,#-192
33c8: 84 46 movi55 $r2,#0x6
33ca: 48 00 36 6d j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
33ce: a6 50 lbi333 $r1,[$r2+#0x0]
33d0: 84 41 movi55 $r2,#0x1
33d2: 4c 11 40 14 bne $r1,$r2,0x33fa
33d6: 9c 42 addi333 $r1,$r0,#0x2
33d8: 3e 0f ff 30 addi.gp $r0,#-208
33dc: 84 46 movi55 $r2,#0x6
33de: 48 00 36 63 j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
33e2: 9c 42 addi333 $r1,$r0,#0x2
33e4: 3e 0f ff 38 addi.gp $r0,#-200
33e8: 84 46 movi55 $r2,#0x6
33ea: 48 00 36 5d j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
33ee: 9c 42 addi333 $r1,$r0,#0x2
33f0: 3e 0f ff 28 addi.gp $r0,#-216
33f4: 84 46 movi55 $r2,#0x6
33f6: 48 00 36 57 j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
33fa: dd 9e ret5 $lp
; ----------- 0x33fc: what the FUCK is going on
33fc: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
3400: ef bc addi10.sp #-68
3402: 2e 07 ff e9 lbi.gp $r0,[+#-23]
3406: 9c 01 addi333 $r0,$r0,#0x1
3408: 55 e0 00 07 andi $lp,$r0,#0x7
340c: 40 2f 18 08 slli $r2,$lp,#0x6
3410: f2 82 swi37.sp $r2,[+#0x8]
3412: 3e a8 01 00 addi.gp $r10,#0x100
3416: 40 75 08 00 add $r7,$r10,$r2
341a: 01 c3 80 02 lbi $fp,[$r7+#0x2]
341e: a7 7b lbi333 $r5,[$r7+#0x3]
3420: 00 93 80 00 lbi $r9,[$r7+#0x0]
3424: 40 1f 10 08 slli $r1,$lp,#0x4
3428: 15 cf 80 03 swi $fp,[$sp+#0xc]
342c: 9d 09 addi333 $r4,$r1,#0x1
342e: 94 62 slli333 $r1,$r4,#0x2
3430: 38 45 12 00 lb $r4,[$r10+($r4<<#0x2)]
3434: 04 8f 80 02 lwi $r8,[$sp+#0x8]
3438: f4 84 swi37.sp $r4,[+#0x10]
343a: 50 35 00 0c addi $r3,$r10,#0xc
343e: 88 68 add45 $r3,$r8
3440: 40 85 04 00 add $r8,$r10,$r1
3444: 00 14 00 02 lbi $r1,[$r8+#0x2]
3448: 40 0f 0c 08 slli $r0,$lp,#0x3
344c: f1 85 swi37.sp $r1,[+#0x14]
344e: 9d 81 addi333 $r6,$r0,#0x1
3450: 94 33 slli333 $r0,$r6,#0x3
3452: 38 65 1b 00 lb $r6,[$r10+($r6<<#0x3)]
3456: 88 0a add45 $r0,$r10
3458: f6 8a swi37.sp $r6,[+#0x28]
345a: 42 92 a4 24 mul $r9,$r5,$r9
345e: 01 c0 00 02 lbi $fp,[$r0+#0x2]
3462: 8c 50 addi45 $r2,#0x10
3464: 15 cf 80 0b swi $fp,[$sp+#0x2c]
3468: 88 4a add45 $r2,$r10
346a: a6 5a lbi333 $r1,[$r3+#0x2]
346c: 14 9f 80 08 swi $r9,[$sp+#0x20]
3470: 40 9f 78 00 add $r9,$lp,$lp
3474: f1 8f swi37.sp $r1,[+#0x3c]
3476: 14 9f 80 09 swi $r9,[$sp+#0x24]
347a: 00 91 00 03 lbi $r9,[$r2+#0x3]
347e: 00 44 00 03 lbi $r4,[$r8+#0x3]
3482: 01 c0 00 03 lbi $fp,[$r0+#0x3]
3486: a6 5b lbi333 $r1,[$r3+#0x3]
3488: 14 9f 80 0c swi $r9,[$sp+#0x30]
348c: 3e 68 05 7c addi.gp $r6,#0x57c ; $r6 = $gp+0x57c
3490: a6 01 lbi333 $r0,[$r0+#0x1]
3492: a7 f9 lbi333 $r7,[$r7+#0x1]
3494: 00 84 00 01 lbi $r8,[$r8+#0x1]
3498: f0 86 swi37.sp $r0,[+#0x18]
349a: 42 82 20 24 mul $r8,$r4,$r8
349e: a6 18 lbi333 $r0,[$r3+#0x0]
34a0: f0 87 swi37.sp $r0,[+#0x1c]
34a2: a6 d9 lbi333 $r3,[$r3+#0x1]
34a4: f3 8e swi37.sp $r3,[+#0x38]
34a6: a6 d0 lbi333 $r3,[$r2+#0x0]
34a8: f3 81 swi37.sp $r3,[+#0x4]
34aa: 00 91 00 01 lbi $r9,[$r2+#0x1]
34ae: f0 09 lwi37.sp $r0,[+#0x24]
34b0: b7 3f swi450 $r9,[$sp]
34b2: 50 90 00 01 addi $r9,$r0,#0x1
34b6: f0 08 lwi37.sp $r0,[+#0x20]
34b8: 80 66 mov55 $r3,$r6
34ba: 1a 01 80 01 shi.bi $r0,[$r3],#0x2
34be: f0 05 lwi37.sp $r0,[+#0x14]
34c0: f3 89 swi37.sp $r3,[+#0x24]
34c2: f3 03 lwi37.sp $r3,[+#0xc]
34c4: 42 02 00 24 mul $r0,$r4,$r0
34c8: 42 32 8c 24 mul $r3,$r5,$r3
34cc: f0 8d swi37.sp $r0,[+#0x34]
34ce: f3 83 swi37.sp $r3,[+#0xc]
34d0: f3 0b lwi37.sp $r3,[+#0x2c]
34d2: f0 0f lwi37.sp $r0,[+#0x3c]
34d4: 42 3e 0c 24 mul $r3,$fp,$r3
34d8: 42 00 80 24 mul $r0,$r1,$r0
34dc: f3 8b swi37.sp $r3,[+#0x2c]
34de: f3 04 lwi37.sp $r3,[+#0x10]
34e0: f0 8f swi37.sp $r0,[+#0x3c]
34e2: 42 32 0c 24 mul $r3,$r4,$r3
34e6: f0 06 lwi37.sp $r0,[+#0x18]
34e8: f3 84 swi37.sp $r3,[+#0x10]
34ea: f3 07 lwi37.sp $r3,[+#0x1c]
34ec: 14 8f 80 05 swi $r8,[$sp+#0x14]
34f0: 42 30 8c 24 mul $r3,$r1,$r3
34f4: 04 8f 80 0a lwi $r8,[$sp+#0x28]
34f8: f3 86 swi37.sp $r3,[+#0x18]
34fa: 42 8e 20 24 mul $r8,$fp,$r8
34fe: f3 01 lwi37.sp $r3,[+#0x4]
3500: 43 ce 00 24 mul $fp,$fp,$r0
3504: f0 0c lwi37.sp $r0,[+#0x30]
3506: 14 8f 80 0a swi $r8,[$sp+#0x28]
350a: 42 00 0c 24 mul $r0,$r0,$r3
350e: 04 8f 80 0e lwi $r8,[$sp+#0x38]
3512: f0 87 swi37.sp $r0,[+#0x1c]
3514: 42 10 a0 24 mul $r1,$r1,$r8
3518: b4 1f lwi450 $r0,[$sp]
351a: 04 8f 80 0c lwi $r8,[$sp+#0x30]
351e: 42 52 9c 24 mul $r5,$r5,$r7
3522: 42 84 00 24 mul $r8,$r8,$r0
3526: f0 02 lwi37.sp $r0,[+#0x8]
3528: 14 8f 80 0e swi $r8,[$sp+#0x38]
352c: 50 85 00 24 addi $r8,$r10,#0x24
3530: 89 00 add45 $r8,$r0
3532: 50 75 00 14 addi $r7,$r10,#0x14
3536: 50 45 00 18 addi $r4,$r10,#0x18
353a: 50 35 00 1c addi $r3,$r10,#0x1c
353e: 98 d8 add333 $r3,$r3,$r0
3540: 99 f8 add333 $r7,$r7,$r0
3542: 99 20 add333 $r4,$r4,$r0
3544: 14 8f 80 08 swi $r8,[$sp+#0x20]
3548: f0 03 lwi37.sp $r0,[+#0xc]
354a: 04 8f 80 09 lwi $r8,[$sp+#0x24]
354e: 40 94 94 08 slli $r9,$r9,#0x5
3552: 12 54 00 00 shi $r5,[$r8+#0x0]
3556: ac 32 shi333 $r0,[$r6+#0x4]
3558: 04 8f 80 05 lwi $r8,[$sp+#0x14]
355c: f5 04 lwi37.sp $r5,[+#0x10]
355e: 12 83 00 04 shi $r8,[$r6+#0x8]
3562: f0 0d lwi37.sp $r0,[+#0x34]
3564: 04 8f 80 0b lwi $r8,[$sp+#0x2c]
3568: ad 73 shi333 $r5,[$r6+#0x6]
356a: f5 0a lwi37.sp $r5,[+#0x28]
356c: ac 35 shi333 $r0,[$r6+#0xa]
356e: 13 c3 00 07 shi $fp,[$r6+#0xe]
3572: 12 83 00 08 shi $r8,[$r6+#0x10]
3576: 12 13 00 0a shi $r1,[$r6+#0x14]
357a: 04 8f 80 0e lwi $r8,[$sp+#0x38]
357e: f1 07 lwi37.sp $r1,[+#0x1c]
3580: 05 cf 80 06 lwi $fp,[$sp+#0x18]
3584: f0 0f lwi37.sp $r0,[+#0x3c]
3586: ad 76 shi333 $r5,[$r6+#0xc]
3588: 13 c3 00 09 shi $fp,[$r6+#0x12]
358c: 12 03 00 0b shi $r0,[$r6+#0x16]
3590: 12 13 00 0c shi $r1,[$r6+#0x18]
3594: 3f e7 ff e9 sbi.gp $lp,[+#-23]
3598: 12 83 00 0d shi $r8,[$r6+#0x1a]
359c: 89 2a add45 $r9,$r10
359e: a6 92 lbi333 $r2,[$r2+#0x2]
35a0: f5 08 lwi37.sp $r5,[+#0x20]
35a2: f2 83 swi37.sp $r2,[+#0xc]
35a4: 01 c3 80 02 lbi $fp,[$r7+#0x2]
35a8: 15 cf 80 0d swi $fp,[$sp+#0x34]
35ac: a6 22 lbi333 $r0,[$r4+#0x2]
35ae: f0 8b swi37.sp $r0,[+#0x2c]
35b0: a6 5a lbi333 $r1,[$r3+#0x2]
35b2: f1 87 swi37.sp $r1,[+#0x1c]
35b4: 00 24 80 02 lbi $r2,[$r9+#0x2]
35b8: f2 8e swi37.sp $r2,[+#0x38]
35ba: a7 6b lbi333 $r5,[$r5+#0x3]
35bc: a6 3b lbi333 $r0,[$r7+#0x3]
35be: 01 c1 80 03 lbi $fp,[$r3+#0x3]
35c2: a6 a3 lbi333 $r2,[$r4+#0x3]
35c4: 01 e4 80 03 lbi $lp,[$r9+#0x3]
35c8: f5 89 swi37.sp $r5,[+#0x24]
35ca: 00 83 80 00 lbi $r8,[$r7+#0x0]
35ce: 14 8f 80 04 swi $r8,[$sp+#0x10]
35d2: a7 f9 lbi333 $r7,[$r7+#0x1]
35d4: f7 85 swi37.sp $r7,[+#0x14]
35d6: a6 60 lbi333 $r1,[$r4+#0x0]
35d8: f1 8a swi37.sp $r1,[+#0x28]
35da: a7 21 lbi333 $r4,[$r4+#0x1]
35dc: f4 86 swi37.sp $r4,[+#0x18]
35de: 00 44 80 01 lbi $r4,[$r9+#0x1]
35e2: 00 54 80 00 lbi $r5,[$r9+#0x0]
35e6: 04 9f 80 08 lwi $r9,[$sp+#0x20]
35ea: a7 d9 lbi333 $r7,[$r3+#0x1]
35ec: 00 14 80 01 lbi $r1,[$r9+#0x1]
35f0: 00 81 80 00 lbi $r8,[$r3+#0x0]
35f4: 00 34 80 00 lbi $r3,[$r9+#0x0]
35f8: b6 3f swi450 $r1,[$sp]
35fa: 04 9f 80 0c lwi $r9,[$sp+#0x30]
35fe: f1 03 lwi37.sp $r1,[+#0xc]
3600: 42 5f 14 24 mul $r5,$lp,$r5
3604: 42 94 84 24 mul $r9,$r9,$r1
3608: f1 0b lwi37.sp $r1,[+#0x2c]
360a: 14 9f 80 03 swi $r9,[$sp+#0xc]
360e: 04 9f 80 0d lwi $r9,[$sp+#0x34]
3612: 42 11 04 24 mul $r1,$r2,$r1
3616: 42 90 24 24 mul $r9,$r0,$r9
361a: f1 8b swi37.sp $r1,[+#0x2c]
361c: 14 9f 80 0d swi $r9,[$sp+#0x34]
3620: 04 9f 80 07 lwi $r9,[$sp+#0x1c]
3624: f1 0e lwi37.sp $r1,[+#0x38]
3626: 42 9e 24 24 mul $r9,$fp,$r9
362a: 42 1f 04 24 mul $r1,$lp,$r1
362e: 14 9f 80 07 swi $r9,[$sp+#0x1c]
3632: 04 9f 80 04 lwi $r9,[$sp+#0x10]
3636: f1 8f swi37.sp $r1,[+#0x3c]
3638: 42 90 24 24 mul $r9,$r0,$r9
363c: f1 05 lwi37.sp $r1,[+#0x14]
363e: 14 9f 80 04 swi $r9,[$sp+#0x10]
3642: 42 90 04 24 mul $r9,$r0,$r1
3646: f1 06 lwi37.sp $r1,[+#0x18]
3648: f0 0a lwi37.sp $r0,[+#0x28]
364a: 42 8e 20 24 mul $r8,$fp,$r8
364e: 42 01 00 24 mul $r0,$r2,$r0
3652: 42 21 04 24 mul $r2,$r2,$r1
3656: f0 85 swi37.sp $r0,[+#0x14]
3658: f2 8a swi37.sp $r2,[+#0x28]
365a: f2 09 lwi37.sp $r2,[+#0x24]
365c: f5 8e swi37.sp $r5,[+#0x38]
365e: 42 31 0c 24 mul $r3,$r2,$r3
3662: f5 02 lwi37.sp $r5,[+#0x8]
3664: f3 81 swi37.sp $r3,[+#0x4]
3666: b4 7f lwi450 $r3,[$sp]
3668: 50 05 00 38 addi $r0,$r10,#0x38
366c: 42 11 0c 24 mul $r1,$r2,$r3
3670: 98 05 add333 $r0,$r0,$r5
3672: 50 25 00 34 addi $r2,$r10,#0x34
3676: 14 8f 80 06 swi $r8,[$sp+#0x18]
367a: f0 8c swi37.sp $r0,[+#0x30]
367c: 42 8e 1c 24 mul $r8,$fp,$r7
3680: f0 03 lwi37.sp $r0,[+#0xc]
3682: 41 c1 14 00 add $fp,$r2,$r5
3686: f2 04 lwi37.sp $r2,[+#0x10]
3688: 43 ef 10 24 mul $lp,$lp,$r4
368c: 50 75 00 28 addi $r7,$r10,#0x28
3690: 50 45 00 2c addi $r4,$r10,#0x2c
3694: 50 35 00 30 addi $r3,$r10,#0x30
3698: 98 dd add333 $r3,$r3,$r5
369a: 99 fd add333 $r7,$r7,$r5
369c: 99 25 add333 $r4,$r4,$r5
369e: 12 03 00 0e shi $r0,[$r6+#0x1c]
36a2: 12 23 00 0f shi $r2,[$r6+#0x1e]
36a6: 12 93 00 10 shi $r9,[$r6+#0x20]
36aa: f5 0d lwi37.sp $r5,[+#0x34]
36ac: 04 9f 80 05 lwi $r9,[$sp+#0x14]
36b0: f0 0a lwi37.sp $r0,[+#0x28]
36b2: f2 0b lwi37.sp $r2,[+#0x2c]
36b4: 12 53 00 11 shi $r5,[$r6+#0x22]
36b8: 12 93 00 12 shi $r9,[$r6+#0x24]
36bc: 12 03 00 13 shi $r0,[$r6+#0x26]
36c0: 12 23 00 14 shi $r2,[$r6+#0x28]
36c4: f5 06 lwi37.sp $r5,[+#0x18]
36c6: 12 83 00 16 shi $r8,[$r6+#0x2c]
36ca: 04 9f 80 0e lwi $r9,[$sp+#0x38]
36ce: 04 8f 80 07 lwi $r8,[$sp+#0x1c]
36d2: f0 0f lwi37.sp $r0,[+#0x3c]
36d4: f2 01 lwi37.sp $r2,[+#0x4]
36d6: 12 53 00 15 shi $r5,[$r6+#0x2a]
36da: 12 83 00 17 shi $r8,[$r6+#0x2e]
36de: 12 93 00 18 shi $r9,[$r6+#0x30]
36e2: 13 e3 00 19 shi $lp,[$r6+#0x32]
36e6: 12 03 00 1a shi $r0,[$r6+#0x34]
36ea: 12 23 00 1b shi $r2,[$r6+#0x36]
36ee: 12 13 00 1c shi $r1,[$r6+#0x38]
36f2: f5 08 lwi37.sp $r5,[+#0x20]
36f4: a7 6a lbi333 $r5,[$r5+#0x2]
36f6: f5 88 swi37.sp $r5,[+#0x20]
36f8: 00 83 80 02 lbi $r8,[$r7+#0x2]
36fc: f5 0c lwi37.sp $r5,[+#0x30]
36fe: 14 8f 80 05 swi $r8,[$sp+#0x14]
3702: 00 92 00 02 lbi $r9,[$r4+#0x2]
3706: 14 9f 80 06 swi $r9,[$sp+#0x18]
370a: a6 1a lbi333 $r0,[$r3+#0x2]
370c: f0 87 swi37.sp $r0,[+#0x1c]
370e: 00 1e 00 02 lbi $r1,[$fp+#0x2]
3712: f1 8e swi37.sp $r1,[+#0x38]
3714: a6 78 lbi333 $r1,[$r7+#0x0]
3716: a6 2b lbi333 $r0,[$r5+#0x3]
3718: 00 83 80 03 lbi $r8,[$r7+#0x3]
371c: 00 92 00 03 lbi $r9,[$r4+#0x3]
3720: a6 9b lbi333 $r2,[$r3+#0x3]
3722: 01 ee 00 03 lbi $lp,[$fp+#0x3]
3726: f1 83 swi37.sp $r1,[+#0xc]
3728: a7 f9 lbi333 $r7,[$r7+#0x1]
372a: f7 84 swi37.sp $r7,[+#0x10]
372c: a7 60 lbi333 $r5,[$r4+#0x0]
372e: f5 8d swi37.sp $r5,[+#0x34]
3730: a7 21 lbi333 $r4,[$r4+#0x1]
3732: f4 8a swi37.sp $r4,[+#0x28]
3734: a6 58 lbi333 $r1,[$r3+#0x0]
3736: f1 8b swi37.sp $r1,[+#0x2c]
3738: f1 08 lwi37.sp $r1,[+#0x20]
373a: 00 4e 00 00 lbi $r4,[$fp+#0x0]
373e: 01 ce 00 01 lbi $fp,[$fp+#0x1]
3742: a7 59 lbi333 $r5,[$r3+#0x1]
3744: 15 cf 80 0f swi $fp,[$sp+#0x3c]
3748: 05 cf 80 09 lwi $fp,[$sp+#0x24]
374c: f3 0c lwi37.sp $r3,[+#0x30]
374e: 43 ce 04 24 mul $fp,$fp,$r1
3752: a7 d8 lbi333 $r7,[$r3+#0x0]
3754: a6 d9 lbi333 $r3,[$r3+#0x1]
3756: 15 cf 80 08 swi $fp,[$sp+#0x20]
375a: f1 06 lwi37.sp $r1,[+#0x18]
375c: 05 cf 80 05 lwi $fp,[$sp+#0x14]
3760: 42 14 84 24 mul $r1,$r9,$r1
3764: 43 c4 70 24 mul $fp,$r8,$fp
3768: f1 85 swi37.sp $r1,[+#0x14]
376a: f1 0e lwi37.sp $r1,[+#0x38]
376c: 15 cf 80 09 swi $fp,[$sp+#0x24]
3770: 42 1f 04 24 mul $r1,$lp,$r1
3774: 05 cf 80 07 lwi $fp,[$sp+#0x1c]
3778: f1 87 swi37.sp $r1,[+#0x1c]
377a: 43 c1 70 24 mul $fp,$r2,$fp
377e: f1 03 lwi37.sp $r1,[+#0xc]
3780: 15 cf 80 06 swi $fp,[$sp+#0x18]
3784: 43 c4 04 24 mul $fp,$r8,$r1
3788: f1 04 lwi37.sp $r1,[+#0x10]
378a: 42 4f 10 24 mul $r4,$lp,$r4
378e: 42 84 04 24 mul $r8,$r8,$r1
3792: f1 0d lwi37.sp $r1,[+#0x34]
3794: 13 c3 00 1e shi $fp,[$r6+#0x3c]
3798: 42 14 84 24 mul $r1,$r9,$r1
379c: 12 83 00 1f shi $r8,[$r6+#0x3e]
37a0: f1 83 swi37.sp $r1,[+#0xc]
37a2: f1 0a lwi37.sp $r1,[+#0x28]
37a4: 04 8f 80 09 lwi $r8,[$sp+#0x24]
37a8: 42 94 84 24 mul $r9,$r9,$r1
37ac: f1 0b lwi37.sp $r1,[+#0x2c]
37ae: 14 9f 80 04 swi $r9,[$sp+#0x10]
37b2: 42 91 04 24 mul $r9,$r2,$r1
37b6: 42 21 14 24 mul $r2,$r2,$r5
37ba: 50 15 00 3c addi $r1,$r10,#0x3c
37be: f5 0f lwi37.sp $r5,[+#0x3c]
37c0: 04 af 80 02 lwi $r10,[$sp+#0x8]
37c4: 43 ef 14 24 mul $lp,$lp,$r5
37c8: 40 50 a8 00 add $r5,$r1,$r10
37cc: f1 08 lwi37.sp $r1,[+#0x20]
37ce: 04 af 80 03 lwi $r10,[$sp+#0xc]
37d2: 12 13 00 1d shi $r1,[$r6+#0x3a]
37d6: 05 cf 80 04 lwi $fp,[$sp+#0x10]
37da: f1 05 lwi37.sp $r1,[+#0x14]
37dc: 12 23 00 25 shi $r2,[$r6+#0x4a]
37e0: f2 06 lwi37.sp $r2,[+#0x18]
37e2: 42 70 1c 24 mul $r7,$r0,$r7
37e6: 42 30 0c 24 mul $r3,$r0,$r3
37ea: 12 83 00 20 shi $r8,[$r6+#0x40]
37ee: 12 a3 00 21 shi $r10,[$r6+#0x42]
37f2: 13 c3 00 22 shi $fp,[$r6+#0x44]
37f6: 12 13 00 23 shi $r1,[$r6+#0x46]
37fa: 12 93 00 24 shi $r9,[$r6+#0x48]
37fe: 12 23 00 26 shi $r2,[$r6+#0x4c]
3802: 12 43 00 27 shi $r4,[$r6+#0x4e]
3806: 04 8f 80 07 lwi $r8,[$sp+#0x1c]
380a: 13 e3 00 28 shi $lp,[$r6+#0x50]
380e: 12 83 00 29 shi $r8,[$r6+#0x52]
3812: 12 73 00 2a shi $r7,[$r6+#0x54]
3816: 12 33 00 2b shi $r3,[$r6+#0x56]
381a: 04 9f 80 0c lwi $r9,[$sp+#0x30]
381e: a6 6b lbi333 $r1,[$r5+#0x3]
3820: 00 44 80 02 lbi $r4,[$r9+#0x2]
3824: a6 aa lbi333 $r2,[$r5+#0x2]
3826: a6 e8 lbi333 $r3,[$r5+#0x0]
3828: a7 69 lbi333 $r5,[$r5+#0x1]
382a: 42 40 10 24 mul $r4,$r0,$r4
382e: 42 20 88 24 mul $r2,$r1,$r2
3832: 42 30 8c 24 mul $r3,$r1,$r3
3836: 42 10 94 24 mul $r1,$r1,$r5
383a: 12 43 00 2c shi $r4,[$r6+#0x58]
383e: 12 33 00 2d shi $r3,[$r6+#0x5a]
3842: 12 23 00 2f shi $r2,[$r6+#0x5e]
3846: 12 13 00 2e shi $r1,[$r6+#0x5c]
384a: 80 06 mov55 $r0,$r6
384c: 49 ff f8 50 jal 0x28ec
3850: 2e 07 ff e9 lbi.gp $r0,[+#-23]
3854: 44 60 cd 20 movi $r6,#0xcd20
3858: 9c 07 addi333 $r0,$r0,#0x7
385a: 9d f4 addi333 $r7,$r6,#0x4
385c: 54 00 00 07 andi $r0,$r0,#0x7
3860: 38 13 83 02 lw $r1,[$r7+($r0<<#0x3)]
3864: 38 03 03 02 lw $r0,[$r6+($r0<<#0x3)]
3868: 14 10 00 08 swi $r1,[$r0+#0x20]
386c: 49 ff f8 2a jal 0x28c0
3870: 2e 07 ff e9 lbi.gp $r0,[+#-23]
3874: 38 13 83 02 lw $r1,[$r7+($r0<<#0x3)]
3878: 38 03 03 02 lw $r0,[$r6+($r0<<#0x3)]
387c: a8 47 swi333 $r1,[$r0+#0x1c]
387e: ec 44 addi10.sp #0x44
3880: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
3884: dd 9e ret5 $lp
3886: 92 00 nop16
; ---------- 0x3888: ??? interesting bit twiddling
3888: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
388c: ef f4 addi10.sp #-12
388e: 3f e8 05 3c addi.gp $lp,#0x53c
3892: 3f c8 05 24 addi.gp $fp,#0x524
3896: 3e a8 05 54 addi.gp $r10,#0x554
389a: 84 00 movi55 $r0,#0x0
389c: 80 7e mov55 $r3,$lp
389e: 80 5c mov55 $r2,$fp
38a0: 80 2a mov55 $r1,$r10
38a2: aa 19 swi333.bi $r0,[$r3],#0x4
38a4: aa 11 swi333.bi $r0,[$r2],#0x4
38a6: aa 09 swi333.bi $r0,[$r1],#0x4
38a8: b6 03 swi450 $r0,[$r3]
38aa: b6 02 swi450 $r0,[$r2]
38ac: 50 3f 00 08 addi $r3,$lp,#0x8
38b0: 50 2e 00 08 addi $r2,$fp,#0x8
38b4: b6 01 swi450 $r0,[$r1]
38b6: 50 15 00 08 addi $r1,$r10,#0x8
38ba: b6 03 swi450 $r0,[$r3]
38bc: b6 02 swi450 $r0,[$r2]
38be: 50 3f 00 0c addi $r3,$lp,#0xc
38c2: 50 2e 00 0c addi $r2,$fp,#0xc
38c6: b6 01 swi450 $r0,[$r1]
38c8: 50 15 00 0c addi $r1,$r10,#0xc
38cc: b6 03 swi450 $r0,[$r3]
38ce: b6 02 swi450 $r0,[$r2]
38d0: 50 3f 00 10 addi $r3,$lp,#0x10
38d4: 50 2e 00 10 addi $r2,$fp,#0x10
38d8: b6 01 swi450 $r0,[$r1]
38da: 50 15 00 10 addi $r1,$r10,#0x10
38de: b6 03 swi450 $r0,[$r3]
38e0: b6 02 swi450 $r0,[$r2]
38e2: b6 01 swi450 $r0,[$r1]
38e4: 50 3f 00 14 addi $r3,$lp,#0x14
38e8: 50 2e 00 14 addi $r2,$fp,#0x14
38ec: 50 15 00 14 addi $r1,$r10,#0x14
38f0: ac 18 shi333 $r0,[$r3+#0x0]
38f2: ac 10 shi333 $r0,[$r2+#0x0]
38f4: ac 08 shi333 $r0,[$r1+#0x0]
38f6: 81 00 mov55 $r8,$r0
38f8: 3e 08 10 a0 addi.gp $r0,#0x10a0
38fc: 3e 18 05 6c addi.gp $r1,#0x56c
3900: 38 70 20 00 lb $r7,[$r0+($r8<<#0x0)]
3904: 38 00 a0 00 lb $r0,[$r1+($r8<<#0x0)]
3908: 40 20 1c 04 or $r2,$r0,$r7
390c: 40 14 20 00 add $r1,$r8,$r8
3910: 44 30 cd 88 movi $r3,#0xcd88
3914: 40 00 00 05 nor $r0,$r0,$r0
3918: 98 4b add333 $r1,$r1,$r3
391a: 40 03 80 02 and $r0,$r7,$r0
391e: 40 91 1c 03 xor $r9,$r2,$r7
3922: 14 8f 80 01 swi $r8,[$sp+#0x4]
3926: 9d 49 addi333 $r5,$r1,#0x1
3928: 81 07 mov55 $r8,$r7
392a: 84 c0 movi55 $r6,#0x0
392c: 50 70 00 00 addi $r7,$r0,#0x0
3930: 40 03 98 0e sra $r0,$r7,$r6
3934: 40 24 18 0e sra $r2,$r8,$r6
3938: 40 14 98 0e sra $r1,$r9,$r6
393c: 96 04 xlsb33 $r0,$r0
393e: 96 94 xlsb33 $r2,$r2
3940: 96 4c xlsb33 $r1,$r1
3942: 9d b1 addi333 $r6,$r6,#0x1
3944: c0 0e beqz38 $r0,0x3960
3946: 20 32 80 00 lbsi $r3,[$r5+#0x0]
394a: 20 02 ff ff lbsi $r0,[$r5+#-1]
394e: 84 81 movi55 $r4,#0x1
3950: 40 02 00 0c sll $r0,$r4,$r0
3954: 38 4e 0c 00 lb $r4,[$fp+($r3<<#0x0)]
3958: 40 00 10 04 or $r0,$r0,$r4
395c: 38 0e 0c 08 sb $r0,[$fp+($r3<<#0x0)]
3960: c2 0e beqz38 $r2,0x397c
3962: 20 22 80 00 lbsi $r2,[$r5+#0x0]
3966: 20 02 ff ff lbsi $r0,[$r5+#-1]
396a: 38 3f 08 00 lb $r3,[$lp+($r2<<#0x0)]
396e: 84 81 movi55 $r4,#0x1
3970: 40 02 00 0c sll $r0,$r4,$r0
3974: 40 00 0c 04 or $r0,$r0,$r3
3978: 38 0f 08 08 sb $r0,[$lp+($r2<<#0x0)]
397c: c1 0e beqz38 $r1,0x3998
397e: 20 12 80 00 lbsi $r1,[$r5+#0x0]
3982: 20 02 ff ff lbsi $r0,[$r5+#-1]
3986: 38 25 04 00 lb $r2,[$r10+($r1<<#0x0)]
398a: 84 61 movi55 $r3,#0x1
398c: 40 01 80 0c sll $r0,$r3,$r0
3990: 40 00 08 04 or $r0,$r0,$r2
3994: 38 05 04 08 sb $r0,[$r10+($r1<<#0x0)]
3998: 84 88 movi55 $r4,#0x8
399a: 8c bc addi45 $r5,#0x1c
399c: 4c 62 7f ca bne $r6,$r4,0x3930
39a0: 04 8f 80 01 lwi $r8,[$sp+#0x4]
39a4: 84 0f movi55 $r0,#0xf
39a6: 8d 01 addi45 $r8,#0x1
39a8: 4c 80 7f a8 bne $r8,$r0,0x38f8
39ac: 80 48 mov55 $r2,$r8
39ae: 3e 08 05 6c addi.gp $r0,#0x56c
39b2: 3e 18 10 a0 addi.gp $r1,#0x10a0
39b6: ec 0c addi10.sp #0xc
39b8: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
39bc: 48 00 33 74 j 0xa0a4 ; memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2); return
; ----------- 0x39c0: func_39c0(arg=$r0)
39c0: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
39c4: 84 20 movi55 $r1,#0x0
39c6: 2e 27 ff fa lbi.gp $r2,[+#-6] ; $r2 = [$gp-6]
39ca: 3e 17 ff e3 sbi.gp $r1,[+#-29] ; [$gp-29] = 0
39ce: 3e 17 ff e2 sbi.gp $r1,[+#-30] ; [$gp-30] = 0
39d2: 96 00 zeb33 $r0,$r0
39d4: ca 04 bnez38 $r2,0x39dc ; if [$gp-6] == 0:
39d6: c0 75 beqz38 $r0,0x3ac0 ; if bytearg == 0: goto BYTEARG_EQ_0_SHORTCUT
39d8: 48 00 00 78 j 0x3ac8 ; else: goto 39c0_out
39dc: 84 40 movi55 $r2,#0x0
39de: 3c 2f ff e2 swi.gp $r2,[+#-120] ; [$gp-120] = 0
39e2: 84 47 movi55 $r2,#0x7 ;
39e4: 4c 01 00 40 beq $r0,$r2,0x3a64 ; if bytearg == 7: goto BYTEARG_EQ_7
39e8: e6 08 slti45 $r0,#0x8 ;
39ea: e8 06 beqzs8 0x39f6 ; if bytearg >= 8: goto BYTEARG_GE_8
39ec: c0 10 beqz38 $r0,0x3a0c ; if bytearg == 0: goto BYTEARG_EQ_0
39ee: 84 25 movi55 $r1,#0x5 ;
39f0: 4c 00 c0 4d bne $r0,$r1,0x3a8a ; if bytearg != 5: goto BYTEARG_IN_1234
39f4: d5 2e j8 0x3a50 ; else: goto BYTEARG_IN_56
; label BYTEARG_GE_8:
39f6: 84 4e movi55 $r2,#0xe
39f8: 4c 01 00 22 beq $r0,$r2,0x3a3c ; if bytearg == 14: goto BYTEARG_EQ_14
39fc: 44 20 00 f1 movi $r2,#0xf1
3a00: 4c 01 00 10 beq $r0,$r2,0x3a20 ; if bytearg == 0xf1: goto BYTEARG_EQ_0xf1
3a04: 84 28 movi55 $r1,#0x8
3a06: 4c 00 c0 42 bne $r0,$r1,0x3a8a ; if bytearg != 8: goto BYTEARG_DEFAULT
3a0a: d5 37 j8 0x3a78 ; goto BYTEARG_EQ_8
; label BYTEARG_EQ_0:
3a0c: 44 10 ac d0 movi $r1,#0xacd0 ;
3a10: 3c 1f ff e0 swi.gp $r1,[+#-128] ; [$gp-128] = 0xacd0
3a14: 44 00 ad 9c movi $r0,#0xad9c
3a18: 3c 0f ff e1 swi.gp $r0,[+#-124] ; target_func = 0xad9c
3a1c: 48 00 00 3c j 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_EQ_0xf1:
3a20: 44 20 a5 50 movi $r2,#0xa550
3a24: 3c 2f ff e0 swi.gp $r2,[+#-128]
3a28: 44 00 a2 e8 movi $r0,#0xa2e8
3a2c: 3c 0f ff e2 swi.gp $r0,[+#-120]
3a30: 44 00 a6 90 movi $r0,#0xa690
3a34: 3c 0f ff e1 swi.gp $r0,[+#-124] ; target_func = 0xa690
3a38: 48 00 00 2e j 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_EQ_14:
3a3c: 44 10 9b b0 movi $r1,#0x9bb0
3a40: 3c 1f ff e0 swi.gp $r1,[+#-128]
3a44: 44 00 9b 44 movi $r0,#0x9b44 ; target_func = 0x9bb4
3a48: 3c 0f ff e1 swi.gp $r0,[+#-124]
3a4c: 48 00 00 24 j 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_IN_56:
3a50: 44 10 aa a0 movi $r1,#0xaaa0
3a54: 3c 1f ff e0 swi.gp $r1,[+#-128]
3a58: 44 00 ac 74 movi $r0,#0xac74 ; target_func = 0xac74
3a5c: 3c 0f ff e1 swi.gp $r0,[+#-124]
3a60: 48 00 00 1a j 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_EQ_7:
3a64: 44 10 a9 7c movi $r1,#0xa97c
3a68: 3c 1f ff e0 swi.gp $r1,[+#-128]
3a6c: 44 00 aa 60 movi $r0,#0xaa60 ; target_func = 0xaa60
3a70: 3c 0f ff e1 swi.gp $r0,[+#-124]
3a74: 48 00 00 10 j 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_EQ_8:
3a78: 44 10 9c 40 movi $r1,#0x9c40
3a7c: 3c 1f ff e0 swi.gp $r1,[+#-128]
3a80: 44 00 9e 28 movi $r0,#0x9e28 ; target_func = 0x9e28
3a84: 3c 0f ff e1 swi.gp $r0,[+#-124]
3a88: d5 06 j8 0x3a94 ; goto BYTEARG_DONE
; label BYTEARG_IN_1234:
3a8a: 84 00 movi55 $r0,#0x0
3a8c: 3c 0f ff e0 swi.gp $r0,[+#-128]
3a90: 3c 0f ff e1 swi.gp $r0,[+#-124] ; target_func = 0
; label BYTEARG_DONE:
3a94: 44 10 00 00 movi $r1,#0x0
3a98: 44 20 02 10 movi $r2,#0x210
3a9c: 3e 08 03 00 addi.gp $r0,#0x300
3aa0: 49 00 33 0c jal 0xa0b8 ; memset(dest=$gp+0x300, byte=0x00, size=0x210)
3aa4: 3c 0d ff e1 lwi.gp $r0,[+#-124] ; $r0 = [$gp-124] (target_func)
3aa8: 46 10 01 00 sethi $r1,#0x100 ; $r1 = 0x0010_0000
3aac: 84 41 movi55 $r2,#0x1 ; $r2 = 1
3aae: 3e 27 ff e8 sbi.gp $r2,[+#-24] ; $gp-24 = 1
3ab2: c0 0b beqz38 $r0,0x3ac8 ; if target_func == 0: goto 39c0_out
3ab4: 4b e0 00 01 jral $lp,$r0 ; call target_func
3ab8: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
3abc: 48 ff fb 7a j 0x31b0 ; return func_31b0()
; label BYTEARG_EQ_0_SHORTCUT:
3ac0: 3c 0f ff e2 swi.gp $r0,[+#-120] ; [$gp-120] = 0
3ac4: 48 ff ff a4 j 0x3a0c ; jump back to BYTEARG_EQ_0
; label 39c0_out:
3ac8: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
3acc: dd 9e ret5 $lp
3ace: 92 00 nop16
; ----------- 0x3ad0: mainloop_3ad0()
3ad0: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
3ad4: ef fc addi10.sp #-4
3ad6: 46 f0 01 00 sethi $r15,#0x100
3ada: 2e 00 00 04 lbi.gp $r0,[+#0x4]
3ade: c0 33 beqz38 $r0,0x3b44
3ae0: 46 00 01 00 sethi $r0,#0x100
3ae4: 2e 50 00 05 lbi.gp $r5,[+#0x5]
3ae8: 2e 10 00 06 lbi.gp $r1,[+#0x6]
3aec: d1 5d beqs38 $r1,0x3ba6
3aee: 85 00 movi55 $r8,#0x0
3af0: 3e 50 00 06 sbi.gp $r5,[+#0x6]
3af4: 54 72 80 04 andi $r7,$r5,#0x4
3af8: 97 ac xlsb33 $r6,$r5
3afa: 80 48 mov55 $r2,$r8
3afc: 54 52 80 02 andi $r5,$r5,#0x2
3b00: 84 7f movi55 $r3,#-1
3b02: 44 4f ff 82 movi $r4,#-126
3b06: d5 17 j8 0x3b34
3b08: 9c 49 addi333 $r1,$r1,#0x1
3b0a: 96 48 zeb33 $r1,$r1
3b0c: ae 80 sbi333 $r2,[$r0+#0x0]
3b0e: ae 81 sbi333 $r2,[$r0+#0x1]
3b10: ae 82 sbi333 $r2,[$r0+#0x2]
3b12: c6 03 beqz38 $r6,0x3b18
3b14: 10 30 00 00 sbi $r3,[$r0+#0x0]
3b18: c5 02 beqz38 $r5,0x3b1c
3b1a: ae c1 sbi333 $r3,[$r0+#0x1]
3b1c: c7 02 beqz38 $r7,0x3b20
3b1e: ae c2 sbi333 $r3,[$r0+#0x2]
3b20: 44 90 00 10 movi $r9,#0x10
3b24: af 03 sbi333 $r4,[$r0+#0x3]
3b26: 9c 04 addi333 $r0,$r0,#0x4
3b28: 4c 14 ff f0 bne $r1,$r9,0x3b08
3b2c: 8d 01 addi45 $r8,#0x1
3b2e: 84 08 movi55 $r0,#0x8
3b30: 4c 80 00 3b beq $r8,$r0,0x3ba6
3b34: 3e 18 01 00 addi.gp $r1,#0x100
3b38: 40 04 18 08 slli $r0,$r8,#0x6
3b3c: 98 01 add333 $r0,$r0,$r1
3b3e: 84 20 movi55 $r1,#0x0
3b40: 48 ff ff e4 j 0x3b08
3b44: 3c 1d ff e3 lwi.gp $r1,[+#-116]
3b48: c9 10 bnez38 $r1,0x3b68
3b4a: 46 30 01 00 sethi $r3,#0x100
3b4e: 84 81 movi55 $r4,#0x1
3b50: 3e 08 01 00 addi.gp $r0,#0x100
3b54: 44 20 02 00 movi $r2,#0x200
3b58: 3e 47 ff e8 sbi.gp $r4,[+#-24]
3b5c: 51 ff 80 04 addi $sp,$sp,#0x4
3b60: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
3b64: 48 00 32 aa j 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2); return
3b68: 49 ff fe 90 jal 0x3888
3b6c: 49 00 24 40 jal 0x83ec
3b70: 49 00 24 62 jal 0x8434
3b74: 49 ff fa 48 jal 0x3004
3b78: 3c 0d ff e0 lwi.gp $r0,[+#-128]
3b7c: c0 08 beqz38 $r0,0x3b8c
3b7e: 2e 17 ff e2 lbi.gp $r1,[+#-30]
3b82: c9 05 bnez38 $r1,0x3b8c
3b84: 4b e0 00 01 jral $lp,$r0
3b88: c0 02 beqz38 $r0,0x3b8c
3b8a: d5 06 j8 0x3b96
3b8c: 46 00 01 00 sethi $r0,#0x100
3b90: 2e 17 ff e8 lbi.gp $r1,[+#-24]
3b94: c1 09 beqz38 $r1,0x3ba6
3b96: 84 20 movi55 $r1,#0x0
3b98: 3e 17 ff e8 sbi.gp $r1,[+#-24]
3b9c: ec 04 addi10.sp #0x4
3b9e: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
3ba2: 48 ff fb 07 j 0x31b0
3ba6: ec 04 addi10.sp #0x4
3ba8: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
3bac: dd 9e ret5 $lp
3bae: 92 00 nop16
3bb0: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
3bb4: ef fc addi10.sp #-4
3bb6: 49 00 02 eb jal 0x418c
3bba: 96 00 zeb33 $r0,$r0
3bbc: ec 04 addi10.sp #0x4
3bbe: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
3bc2: dd 9e ret5 $lp
3bc4: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
3bc8: 80 e1 mov55 $r7,$r1
3bca: 80 c2 mov55 $r6,$r2
3bcc: 50 80 00 00 addi $r8,$r0,#0x0
3bd0: 49 00 02 de jal 0x418c
3bd4: 46 3a aa aa sethi $r3,#0xaaaaa
3bd8: 58 31 8a ab ori $r3,$r3,#0xaab
3bdc: 42 40 0c 69 mulr64 $r4,$r0,$r3
3be0: 44 10 00 18 movi $r1,#0x18
3be4: 40 32 90 09 srli $r3,$r5,#0x4
3be8: 42 01 84 75 msubr32 $r0,$r3,$r1
3bec: 80 60 mov55 $r3,$r0
3bee: 44 00 d2 88 movi $r0,#0xd288
3bf2: 38 30 0e 02 lw $r3,[$r0+($r3<<#0x2)]
3bf6: 40 21 c0 09 srli $r2,$r3,#0x10
3bfa: 40 11 a0 09 srli $r1,$r3,#0x8
3bfe: 10 34 00 00 sbi $r3,[$r8+#0x0]
3c02: ae 78 sbi333 $r1,[$r7+#0x0]
3c04: ae b0 sbi333 $r2,[$r6+#0x0]
3c06: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
3c0a: dd 9e ret5 $lp
3c0c: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
3c10: ef fc addi10.sp #-4
3c12: 84 21 movi55 $r1,#0x1
3c14: 3e 0f fe 78 addi.gp $r0,#-392
3c18: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
3c1c: 10 10 00 00 sbi $r1,[$r0+#0x0]
3c20: 49 00 1b 08 jal 0x7230
3c24: 49 00 21 a4 jal 0x7f6c
3c28: 49 00 22 34 jal 0x8090
3c2c: 49 00 23 48 jal 0x82bc
3c30: ec 04 addi10.sp #0x4
3c32: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
3c36: 48 00 1a 7d j 0x7130
3c3a: 92 00 nop16
3c3c: ef f8 addi10.sp #-8
3c3e: f0 81 swi37.sp $r0,[+#0x4]
3c40: f0 01 lwi37.sp $r0,[+#0x4]
3c42: c0 06 beqz38 $r0,0x3c4e
3c44: f0 01 lwi37.sp $r0,[+#0x4]
3c46: 9e 01 subi333 $r0,$r0,#0x1
3c48: f0 81 swi37.sp $r0,[+#0x4]
3c4a: f0 01 lwi37.sp $r0,[+#0x4]
3c4c: c8 fc bnez38 $r0,0x3c44
3c4e: ec 08 addi10.sp #0x8
3c50: dd 9e ret5 $lp
3c52: 92 00 nop16
3c54: 46 00 02 00 sethi $r0,#0x200
3c58: 58 00 0c 04 ori $r0,$r0,#0xc04
3c5c: b4 40 lwi450 $r2,[$r0]
3c5e: 58 21 18 00 ori $r2,$r2,#0x1800
3c62: b6 40 swi450 $r2,[$r0]
3c64: 50 10 00 2c addi $r1,$r0,#0x2c
3c68: 84 01 movi55 $r0,#0x1
3c6a: b6 01 swi450 $r0,[$r1]
3c6c: dd 9e ret5 $lp
3c6e: 92 00 nop16
3c70: 46 00 02 00 sethi $r0,#0x200
3c74: 58 00 0c 04 ori $r0,$r0,#0xc04
3c78: b4 40 lwi450 $r2,[$r0]
3c7a: 44 3f e7 ff movi $r3,#-6145
3c7e: 40 21 0c 02 and $r2,$r2,$r3
3c82: b6 40 swi450 $r2,[$r0]
3c84: 50 10 00 2c addi $r1,$r0,#0x2c
3c88: 84 01 movi55 $r0,#0x1
3c8a: b6 01 swi450 $r0,[$r1]
3c8c: dd 9e ret5 $lp
3c8e: 92 00 nop16
; ---------- 0x3c90: standby_mode()
3c90: 46 10 02 00 sethi $r1,#0x200
3c94: 58 10 8c 04 ori $r1,$r1,#0xc04
3c98: b4 61 lwi450 $r3,[$r1]
3c9a: 46 20 02 00 sethi $r2,#0x200
3c9e: 58 31 98 00 ori $r3,$r3,#0x1800
3ca2: b6 61 swi450 $r3,[$r1]
3ca4: 58 21 0c 30 ori $r2,$r2,#0xc30
3ca8: 84 21 movi55 $r1,#0x1
3caa: 46 00 02 00 sethi $r0,#0x200
3cae: b6 22 swi450 $r1,[$r2]
3cb0: 44 10 00 2f movi $r1,#0x2f
3cb4: b6 20 swi450 $r1,[$r0]
3cb6: 84 2f movi55 $r1,#0xf
3cb8: b6 20 swi450 $r1,[$r0]
3cba: 92 00 nop16
3cbc: 92 00 nop16
3cbe: 92 00 nop16
3cc0: 92 00 nop16
3cc2: 46 00 02 00 sethi $r0,#0x200
3cc6: 04 00 03 06 lwi $r0,[$r0+#0xc18]
3cca: c8 07 bnez38 $r0,0x3cd8
3ccc: 64 00 00 40 standby wait_done ; go to low-power state until woken up by external agent
3cd0: 92 00 nop16
3cd2: 92 00 nop16
3cd4: 92 00 nop16
3cd6: 92 00 nop16
3cd8: 92 00 nop16
3cda: 46 00 02 00 sethi $r0,#0x200
3cde: 58 00 0c 04 ori $r0,$r0,#0xc04 ; 0x00200c04: GPIOA_WK
3ce2: b4 40 lwi450 $r2,[$r0]
3ce4: 44 3f e7 ff movi $r3,#-6145
3ce8: 40 21 0c 02 and $r2,$r2,$r3
3cec: 46 10 02 00 sethi $r1,#0x200
3cf0: b6 40 swi450 $r2,[$r0]
3cf2: 58 10 8c 30 ori $r1,$r1,#0xc30
3cf6: 84 01 movi55 $r0,#0x1
3cf8: b6 01 swi450 $r0,[$r1]
3cfa: dd 9e ret5 $lp
3cfc: 46 10 02 00 sethi $r1,#0x200
3d00: 58 10 8c 04 ori $r1,$r1,#0xc04
3d04: 44 20 00 ff movi $r2,#0xff
3d08: b6 41 swi450 $r2,[$r1]
3d0a: 50 00 80 2c addi $r0,$r1,#0x2c
3d0e: 84 21 movi55 $r1,#0x1
3d10: b6 20 swi450 $r1,[$r0]
3d12: dd 9e ret5 $lp
3d14: 46 10 02 00 sethi $r1,#0x200
3d18: 58 10 8c 04 ori $r1,$r1,#0xc04
3d1c: 84 40 movi55 $r2,#0x0
3d1e: b6 41 swi450 $r2,[$r1]
3d20: 50 00 80 2c addi $r0,$r1,#0x2c
3d24: 84 21 movi55 $r1,#0x1
3d26: b6 20 swi450 $r1,[$r0]
3d28: dd 9e ret5 $lp
3d2a: 92 00 nop16
; ---------- 0x3d2c: init_clocks()
3d2c: ef f8 addi10.sp #-8 ;
3d2e: 46 00 02 00 sethi $r0,#0x200 ; $r0 = 0x0020_0000 (System Control is 0x0020_0000~0x0020_03ff)
3d32: b4 20 lwi450 $r1,[$r0] ; $r1 = [$r0] (System Control index 0)
3d34: 44 2f ff e3 movi $r2,#-29 ; $r2 = 0b11111111111111111111111111100011
3d38: 58 10 80 02 ori $r1,$r1,#0x2 ; $r1 |= 0x0000_0002 (turn on bit 1)
3d3c: b6 20 swi450 $r1,[$r0] ; [$r0] = $r1 (turn on bit 1: HSEON, enable high-speed oscillator)
3d3e: b4 20 lwi450 $r1,[$r0] ; $r1 = [$r0] (grab control register again)
3d40: 40 10 88 02 and $r1,$r1,$r2 ; $r1 &= $r2 (clear bit 2,3,4)
3d44: b6 20 swi450 $r1,[$r0] ; [$r0] = $r1 (sets oscillator to 18MHz)
3d46: 44 00 27 10 movi $r0,#0x2710 ; $r0 = 0x2710
3d4a: f0 81 swi37.sp $r0,[+#0x4] ; [$sp+4] = $r0
3d4c: f0 01 lwi37.sp $r0,[+#0x4] ; $r0 = [$sp+4]
3d4e: c0 07 beqz38 $r0,0x3d5c ; if we got 0 (virt address check?)
3d50: f0 01 lwi37.sp $r0,[+#0x4] ; $r0 = [$sp+4]
3d52: 9e 01 subi333 $r0,$r0,#0x1 ; $r0--
3d54: f0 81 swi37.sp $r0,[+#0x4] ; [$sp+4] = $r0
3d56: f0 01 lwi37.sp $r0,[+#0x4] ; $r0 = [$sp+4]
3d58: 4e 03 ff fc bnez $r0,0x3d50 ; ...repeat until $r0 is 0. (delay loop??)
3d5c: 46 00 02 00 sethi $r0,#0x200 ; $r0 = 0x0020_0000
3d60: 58 00 00 34 ori $r0,$r0,#0x34 ; $r0 = 0x0020_0034 (PLL control)
3d64: 44 10 21 17 movi $r1,#0x2117 ; $r1 = 0x2117 / 0b10000100010111
3d68: b6 20 swi450 $r1,[$r0] ; [$r0] = 01 00001 00010111 (output select, pre-divider, feedback multiplier)
3d6a: 44 00 03 e8 movi $r0,#0x3e8 ; $r0 = 0x03e8
3d6e: f0 81 swi37.sp $r0,[+#0x4] ; ...delay loop again?
3d70: f0 01 lwi37.sp $r0,[+#0x4] ;
3d72: c0 07 beqz38 $r0,0x3d80 ;
3d74: f0 01 lwi37.sp $r0,[+#0x4] ;
3d76: 9e 01 subi333 $r0,$r0,#0x1 ;
3d78: f0 81 swi37.sp $r0,[+#0x4] ;
3d7a: f0 01 lwi37.sp $r0,[+#0x4] ;
3d7c: 4e 03 ff fc bnez $r0,0x3d74 ;
3d80: 46 00 02 00 sethi $r0,#0x200 ; $r0 = 0x0020_0000
3d84: 58 00 00 3c ori $r0,$r0,#0x3c ; $r0 = 0x0020_003c (HSE_CLK_MUX)
3d88: 84 23 movi55 $r1,#0x3 ; ...low 2 bits = USB_PLL_div_2
3d8a: b6 20 swi450 $r1,[$r0] ; set the USB clock (48MHz)
3d8c: 46 00 02 00 sethi $r0,#0x200 ;
3d90: 58 00 00 04 ori $r0,$r0,#0x4 ; $r0 = 0x0020_0004 (System Control 04: UART, JTAG, etc)
3d94: b4 20 lwi450 $r1,[$r0] ; get current value
3d96: 58 10 80 01 ori $r1,$r1,#0x1 ; set low bit
3d9a: b6 20 swi450 $r1,[$r0] ; set new value (System clock switch: select HSE as system clock)
3d9c: ec 08 addi10.sp #0x8 ; move stack pointer
3d9e: dd 9e ret5 $lp ; and return!
; ---------- 0x3da0: standby_for_event()
3da0: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
3da4: 44 00 00 00 movi $r0,#0x0
3da8: 49 ff f8 ee jal 0x2f84 ; ccf0_twiddle($r0)
3dac: 49 ff f3 a6 jal 0x24f8
3db0: 2e 07 ff f2 lbi.gp $r0,[+#-14] ; $r0 = $gp-14
3db4: 54 00 00 02 andi $r0,$r0,#0x2 ;
3db8: c0 0c beqz38 $r0,0x3dd0 ; if ([$gp-14].bit[1]):
3dba: 46 10 02 00 sethi $r1,#0x200 ;
3dbe: 58 10 8c 04 ori $r1,$r1,#0xc04 ; $r1 = 0x00200c04: GPIOA_WK
3dc2: 44 20 00 ff movi $r2,#0xff ; $r2 = 0xff
3dc6: b6 41 swi450 $r2,[$r1] ; set GPIOA_WK to 0xff: wakeup on GPIOA0-GPIOA15 toggle
3dc8: 50 00 80 2c addi $r0,$r1,#0x2c ; $r0 = $r1+0x2c (...offset 0x30: CLR_IN_TOG)
3dcc: 84 21 movi55 $r1,#0x1 ; $r1 = 0x01
3dce: b6 20 swi450 $r1,[$r0] ; set CLR_IN_TOG to 0x01: clear all input toggle GPIOA0 (?)
3dd0: 49 ff ff 60 jal 0x3c90 ; standby_mode(): go low-power until woken up
3dd4: 44 00 00 0a movi $r0,#0xa ; ....We're awake! Time to wake other stuff up!
3dd8: 49 00 02 1c jal 0x4210
3ddc: 46 20 02 00 sethi $r2,#0x200 ; $r2 = 0x0020_0000
3de0: 84 60 movi55 $r3,#0x0 ; $r3 = 0
3de2: 58 21 0c 04 ori $r2,$r2,#0xc04 ; $r2 = 0x0020_0c04 (Wakeup & interrupt: 0x0020_0c00~0x0020_0fff)
3de6: 84 01 movi55 $r0,#0x1 ; $r0 = 1 (...offset 0x04: GPIOA_WK)
3de8: 50 11 00 2c addi $r1,$r2,#0x2c ; $r1 = $r2+0x2c (...offset 0x30: CLR_IN_TOG)
3dec: b6 62 swi450 $r3,[$r2] ; set GPIOA_WK, bit 0: wake-up on GPIOA0 toggle
3dee: b6 01 swi450 $r0,[$r1] ; clear CLR_IN_TOG: "disable clear all input toggle"
3df0: 3e 37 ff ef sbi.gp $r3,[+#-17] ; $r3 = [$gp-17] (?)
3df4: 49 ff f8 c8 jal 0x2f84 ; , $r0=1
3df8: 49 ff f4 56 jal 0x26a4
3dfc: 46 00 02 07 sethi $r0,#0x207 ; $r0 = 0x0020_7000 (USB addr range: 0x0020_7800 - 0x0020_7bff)
3e00: 58 00 08 0c ori $r0,$r0,#0x80c ; $r0 = 0x0020_780c (USB 0x0c: SIE Interface Register)
3e04: b4 20 lwi450 $r1,[$r0] ; $r1 = USB SIEI
3e06: 58 10 80 01 ori $r1,$r1,#0x1 ; set bit 0 - WAKEUP
3e0a: b6 20 swi450 $r1,[$r0] ; write back to USB
3e0c: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
3e10: dd 9e ret5 $lp
3e12: 92 00 nop16
; ------ 0x3e14 - this is probably our app_setup() and maybe main()
3e14: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
3e18: ef fc addi10.sp #-4
3e1a: 46 10 02 00 sethi $r1,#0x200 ; $r1 = 0x0020_0000
3e1e: 44 20 00 80 movi $r2,#0x80 ; $r2 = 0x80
3e22: 58 10 88 00 ori $r1,$r1,#0x800 ; $r1 = 0x0020_0800
3e26: 46 00 02 00 sethi $r0,#0x200 ; $r0 = 0x0020_0000
3e2a: b6 41 swi450 $r2,[$r1] ; [0x0020_0800] = 0x80 (TODO: wha? datasheet sez that's reserved...)
3e2c: 84 e0 movi55 $r7,#0x0 ; $r7 = 0x0000_0000
3e2e: 84 3f movi55 $r1,#-1 ; $r1 = 0xffff_ffff
3e30: 58 00 00 0c ori $r0,$r0,#0xc ; $r0 = 0x0020_000c, System Control reset register
3e34: b6 20 swi450 $r1,[$r0] ; reset everything
3e36: b6 e0 swi450 $r7,[$r0] ; stop resetting everything (??)
3e38: 49 ff ff 7a jal 0x3d2c ; init_clocks()
3e3c: 44 00 00 0d movi $r0,#0xd ; $r0 = 0b1101
3e40: 49 00 31 04 jal 0xa048 ; set_int_mask($r0) - enable int 1, 3, 4
3e44: 49 00 31 1e jal 0xa080 ; setgie.e (enable global interrupts)
3e48: 49 00 01 84 jal 0x4150 ; twiddling data at 0xcd64 (not called elsewhere)
3e4c: 44 00 00 14 movi $r0,#0x14
3e50: 49 00 01 e0 jal 0x4210 ; twiddling data at 0xcd74 / 0xcd64
3e54: 49 00 25 54 jal 0x88fc ; twiddling data at 0xd568 (not called anywhere else)
3e58: 49 00 2b ec jal 0x9630 ; copy_d730_d9c0_and_memset_heap()
3e5c: 49 ff f3 d2 jal 0x2600 ; TODO
3e60: 44 00 00 14 movi $r0,#0x14
3e64: 49 00 01 d6 jal 0x4210 ; as above
3e68: 49 ff e4 08 jal 0x678 ; init_cd10() (TODO: wtf is at 0xcd10 etc)
3e6c: 49 ff e4 a0 jal 0x7ac ; TODO
3e70: 2e 07 ff ea lbi.gp $r0,[+#-22] ; $r0 = $gp-22
3e74: 49 ff ed 96 jal 0x19a0 ; TODO
3e78: 2e 07 ff ea lbi.gp $r0,[+#-22]
3e7c: 50 33 80 00 addi $r3,$r7,#0x0
3e80: 3e 18 13 4c addi.gp $r1,#0x134c
3e84: 44 20 01 e0 movi $r2,#0x1e0
3e88: 49 ff e9 d4 jal 0x1230 ; TODO
3e8c: 2e 07 ff ea lbi.gp $r0,[+#-22]
3e90: 50 33 80 00 addi $r3,$r7,#0x0
3e94: 3e 18 11 48 addi.gp $r1,#0x1148
3e98: 44 20 01 e0 movi $r2,#0x1e0
3e9c: 49 ff e9 66 jal 0x1168 ; TODO
3ea0: 2e 07 ff ea lbi.gp $r0,[+#-22]
3ea4: 50 33 80 00 addi $r3,$r7,#0x0
3ea8: 44 20 00 78 movi $r2,#0x78
3eac: 3e 18 10 d0 addi.gp $r1,#0x10d0
3eb0: 49 ff e8 ea jal 0x1084 ; TODO
3eb4: 49 ff ea b8 jal 0x1424 ; TODO
3eb8: 49 ff ea 28 jal 0x1308 ; TODO
3ebc: 49 00 2b a6 jal 0x9608 ; TODO
3ec0: 49 ff f1 e6 jal 0x228c ; setup_gpio_b8_output()
3ec4: 49 ff f1 fa jal 0x22b8 ; setup_gpiob_and_timer2()
3ec8: 49 ff f8 2a jal 0x2f1c ; TODO
3ecc: 49 ff f2 64 jal 0x2394 ; TODO
3ed0: 49 ff f2 46 jal 0x235c ; setup_timer1()
3ed4: 49 ff f3 4a jal 0x2568 ; TODO
3ed8: 80 07 mov55 $r0,$r7
3eda: 80 27 mov55 $r1,$r7
3edc: 49 ff fd 72 jal 0x39c0 ; TODO
3ee0: 49 00 18 e8 jal 0x70b0 ; enable_usb()
3ee4: 47 c0 01 00 sethi $fp,#0x100 ; $fp = 0x0010_0000 (start of SRAM)
3ee8: 49 00 19 02 jal 0x70ec ; watchdog_8s_reset()
; ---------- LABEL: mainloop_start - hey look, a mainloop()
3eec: 49 00 19 14 jal 0x7114 ; mainloop_twiddle_0x0200a800
3ef0: 2e 07 ff ee lbi.gp $r0,[+#-18] ; $r0 = [$gp-18]
3ef4: 44 10 00 40 movi $r1,#0x40 ; $r1 = 0x40
3ef8: 4c 00 c0 08 bne $r0,$r1,0x3f08 ; if [$gp-18] == 0x40: (USB endpoints are set up)
3efc: 2e 07 ff ef lbi.gp $r0,[+#-17] ; $r0 = $gp-17
3f00: 4e 02 00 04 beqz $r0,0x3f08 ; if $r0 != 0:
3f04: 49 ff ff 4e jal 0x3da0 ; standby_for_event()
3f08: 3e 1f ff 90 addi.gp $r1,#-112 ; $r1 = $gp-112
3f0c: 84 04 movi55 $r0,#0x4 ; $r0 = 0x04
3f0e: 49 00 01 cb jal 0x42a4 ; TODO - time-related?
3f12: c0 0d beqz38 $r0,0x3f2c ; if that returned non-zero:
3f14: 3c 0d ff e3 lwi.gp $r0,[+#-116] ; $r0 = [$gp-116]
3f18: 9e 41 subi333 $r1,$r0,#0x1 ; $r1 = $r0 - 1
3f1a: c0 03 beqz38 $r0,0x3f20 ; if [$gp-116] > 0:
3f1c: 3c 1f ff e3 swi.gp $r1,[+#-116] ; [$gp-116]--
3f20: 49 00 25 5e jal 0x89dc ; mainloop_89dc - ???
3f24: 49 00 25 22 jal 0x8968 ; mainloop_8968 - ???
3f28: 49 00 2d 56 jal 0x99d4 ; mainloop_99d4 - ???
3f2c: 49 00 17 60 jal 0x6dec ; mainloop_6dec - handles command packets, yeahhhh
3f30: 49 ff fd d0 jal 0x3ad0 ; mainloop_3ad0 - ???
3f34: 49 ff f1 64 jal 0x21fc ;
3f38: d5 da j8 0x3eec ; goto mainloop_start
3f3a: 92 00 nop16
; ---------- 0x3f3c: func_3f3c(byte byte1=$r0, byte byte2=$r1)
; ---------- callers: mainloop_6dec
3f3c: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
3f40: 97 88 zeb33 $r6,$r1 ; $r6 = byte2
3f42: 97 c0 zeb33 $r7,$r0 ; $r7 = byte1
3f44: 49 00 2b 76 jal 0x9630 ; copy_d730_d9c0_and_memset_heap()
3f48: 80 06 mov55 $r0,$r6 ; func_1230 arg1 = byte2
3f4a: 3e 18 13 4c addi.gp $r1,#0x134c ; func_1230 addr = $gp+0x134c
3f4e: 44 20 01 e0 movi $r2,#0x1e0 ; func_1230 size = 0x1e0 (this is the size of d730/d9c0)
3f52: 84 60 movi55 $r3,#0x0 ; func_1230 arg3 = 0
3f54: 49 ff e9 6e jal 0x1230 ; func_1230(arg1=byte2, addr=$gp+0x134c, size=0x1e0, arg3=0)
3f58: 3e 18 11 48 addi.gp $r1,#0x1148
3f5c: 44 20 01 e0 movi $r2,#0x1e0
3f60: 84 60 movi55 $r3,#0x0
3f62: 80 06 mov55 $r0,$r6
3f64: 49 ff e9 02 jal 0x1168 ; func_1168(arg1=byte2, addr=$gp+0x1148, size=0x1e0, arg3=0)
3f68: 80 06 mov55 $r0,$r6
3f6a: 3e 18 10 d0 addi.gp $r1,#0x10d0
3f6e: 44 20 00 78 movi $r2,#0x78
3f72: 84 60 movi55 $r3,#0x0
3f74: 49 ff e8 88 jal 0x1084 ; func_1084(arg1=byte2, addr=$gp+0x10d0, size=0x78, arg3=0)
3f78: 2e 07 ff fe lbi.gp $r0,[+#-2] ;
3f7c: c0 0c beqz38 $r0,0x3f94 ; if [$gp-2] != 0:
3f7e: 44 10 ce c2 movi $r1,#0xcec2 ;
3f82: 3e 08 07 ba addi.gp $r0,#0x7ba ;
3f86: 84 48 movi55 $r2,#0x8 ;
3f88: 49 00 30 8e jal 0xa0a4 ; memcpy(dest=$gp+0x7ba, src=0xcec2, n=0x8)
3f8c: 44 10 00 01 movi $r1,#0x1 ;
3f90: 3e 17 ff e8 sbi.gp $r1,[+#-24] ; [$gp-24] = 1
3f94: 3e 08 10 b0 addi.gp $r0,#0x10b0 ;
3f98: 84 20 movi55 $r1,#0x0
3f9a: 44 20 00 1d movi $r2,#0x1d
3f9e: 49 00 30 8d jal 0xa0b8 ; memset(dest=$gp+0x10b0, byte=0, size=0x1d)
3fa2: 84 02 movi55 $r0,#0x2
3fa4: 4c 70 00 22 beq $r7,$r0,0x3fe8 ; if byte1 == 2: goto BYTE1_EQ_2
3fa8: e6 e3 slti45 $r7,#0x3 ;
3faa: e8 05 beqzs8 0x3fb4 ; if byte1 >= 3: goto BYTE1_GE_3
3fac: 84 21 movi55 $r1,#0x1 ;
3fae: 4c 70 c0 34 bne $r7,$r1,0x4016 ; if byte1 != 1: goto PACKET_BUILD_DONE
3fb2: d5 09 j8 0x3fc4 ; else: goto BYTE1_EQ_1
; label BYTE1_GE_3:
3fb4: 84 03 movi55 $r0,#0x3 ;
3fb6: 4c 70 00 21 beq $r7,$r0,0x3ff8 ; if byte1 == 3: goto BYTE1_EQ_3
3fba: 84 24 movi55 $r1,#0x4 ;
3fbc: 4c 70 c0 2d bne $r7,$r1,0x4016 ; if byte1 == 4: goto BYTE1_EQ_4
3fc0: 48 00 00 24 j 0x4008 ; else: goto BYTE1_GE_5
; label BYTE1_EQ_1:
3fc4: 3e 4f fe 78 addi.gp $r4,#-392 ; $r4 = $gp-392
3fc8: 08 12 00 01 lbi.bi $r1,[$r4],#0x1 ; $r1 = [$gp-392]; $r4 = $gp-391
3fcc: 3e 08 08 68 addi.gp $r0,#0x868 ; $r0 = $gp+0x868
3fd0: 80 60 mov55 $r3,$r0 ; $r3 = $gp+0x868
3fd2: 18 11 80 01 sbi.bi $r1,[$r3],#0x1 ; [$gp+0x868] = $r1; $r3 = $gp+0x869
3fd6: a7 20 lbi333 $r4,[$r4+#0x0] ; $r4 = [$gp-391]
3fd8: af 18 sbi333 $r4,[$r3+#0x0] ; [$gp+0x869] = $r4
3fda: 3e 1f ff 38 addi.gp $r1,#-200 ; $r1 = $gp-200
3fde: 84 46 movi55 $r2,#0x6 ;
3fe0: 8c 02 addi45 $r0,#0x2
3fe2: 49 00 30 61 jal 0xa0a4 ; memcpy(dest=($gp+0x868+2), src=$gp-200, n=6)
3fe6: d5 18 j8 0x4016 ; goto PACKET_BUILD_DONE
; label BYTE1_EQ_2:
3fe8: 3e 1f ff 38 addi.gp $r1,#-200
3fec: 84 46 movi55 $r2,#0x6
3fee: 3e 0f fe 82 addi.gp $r0,#-382
3ff2: 49 00 30 59 jal 0xa0a4 ; memcpy(dest=$gp-382, src=$gp-200, n=6)
3ff6: d5 10 j8 0x4016
; label BYTE1_EQ_3
3ff8: 3e 1f ff 38 addi.gp $r1,#-200
3ffc: 84 46 movi55 $r2,#0x6 ; 0x3ffc: there are jumps here from Outside???
3ffe: 3e 0f fe 8a addi.gp $r0,#-374
4002: 49 00 30 51 jal 0xa0a4 ; memcpy(dest=$gp-374, src=$gp-200, n=6)
4006: d5 08 j8 0x4016
; label BYTE1_GE_5:
4008: 3e 0f fe 92 addi.gp $r0,#-366
400c: 3e 1f ff 38 addi.gp $r1,#-200
4010: 84 46 movi55 $r2,#0x6
4012: 49 00 30 49 jal 0xa0a4 ; memcpy(dest=$gp-366, src=$gp-200, n=6)
; label PACKET_BUILD_DONE:
4016: 84 03 movi55 $r0,#0x3
4018: 4c 60 00 5a beq $r6,$r0,0x40cc ; if byte2 == 3: goto BYTE2_EQ_3
401c: e6 c4 slti45 $r6,#0x4
401e: e8 08 beqzs8 0x402e ; if byte2 > 4: goto BYTE2_GT_4
4020: 84 21 movi55 $r1,#0x1
4022: 4c 60 80 0d beq $r6,$r1,0x403c ; if byte2 == 1: goto BYTE2_EQ_1
4026: 84 02 movi55 $r0,#0x2
4028: 4c 60 40 90 bne $r6,$r0,0x4148 ; if byte2 == 2: goto BYTE2_EQ_2
402c: d5 38 j8 0x409c ; else: goto BYTE2_EQ_0
; label BYTE2_GT_4:
402e: 84 24 movi55 $r1,#0x4
4030: 4c 60 80 66 beq $r6,$r1,0x40fc ; if byte2 == 4: goto BYTE2_EQ_4
4034: 84 05 movi55 $r0,#0x5
4036: 4c 60 40 89 bne $r6,$r0,0x4148 ; if byte2 == 5: goto BYTE2_EQ_5
403a: d5 19 j8 0x406c ; else: goto BYTE2_GE_6
; label BYTE2_EQ_1:
403c: 3e 48 08 68 addi.gp $r4,#0x868
4040: 80 44 mov55 $r2,$r4
4042: 08 71 00 01 lbi.bi $r7,[$r2],#0x1
4046: 3e 3f fe 78 addi.gp $r3,#-392
404a: a7 90 lbi333 $r6,[$r2+#0x0]
404c: 18 71 80 01 sbi.bi $r7,[$r3],#0x1
4050: af 98 sbi333 $r6,[$r3+#0x0]
4052: 9c 62 addi333 $r1,$r4,#0x2
4054: 84 46 movi55 $r2,#0x6
4056: 3e 0f ff 38 addi.gp $r0,#-200
405a: 49 00 30 25 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
405e: 80 07 mov55 $r0,$r7
4060: 50 13 00 00 addi $r1,$r6,#0x0
4064: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
4068: 48 ff fc ac j 0x39c0
; label BYTE2_GE_6:
406c: 3e 0f fe 78 addi.gp $r0,#-392
4070: 84 30 movi55 $r1,#-16
4072: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
4076: 84 40 movi55 $r2,#0x0
4078: 2e 17 ff fe lbi.gp $r1,[+#-2]
407c: ae 80 sbi333 $r2,[$r0+#0x0]
407e: c1 07 beqz38 $r1,0x408c
4080: 84 3f movi55 $r1,#-1
4082: 3e 08 07 bb addi.gp $r0,#0x7bb
4086: 18 10 7f ff sbi.bi $r1,[$r0],#-1
408a: ae 40 sbi333 $r1,[$r0+#0x0]
408c: 44 00 00 f0 movi $r0,#0xf0
4090: 44 10 00 00 movi $r1,#0x0
4094: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
4098: 48 ff fc 94 j 0x39c0
; label BYTE2_EQ_0:
409c: 3e 3f fe 78 addi.gp $r3,#-392
40a0: 84 11 movi55 $r0,#-15
40a2: 18 01 80 01 sbi.bi $r0,[$r3],#0x1
40a6: 84 80 movi55 $r4,#0x0
40a8: af 18 sbi333 $r4,[$r3+#0x0]
40aa: 3e 0f ff 38 addi.gp $r0,#-200
; ignore this, since it seems to be incorrectly parsed
;40ae: 3e 1f fe 82 addi.gp $r1,#-382
40b0: fe 82 neg33 $r2,$r0
40b2: 84 46 movi55 $r2,#0x6
40b4: 49 00 2f f8 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
40b8: 2e 07 ff fe lbi.gp $r0,[+#-2]
40bc: c0 38 beqz38 $r0,0x412c
40be: 84 3f movi55 $r1,#-1
40c0: 3e 08 07 bd addi.gp $r0,#0x7bd
40c4: 18 10 7f ff sbi.bi $r1,[$r0],#-1
40c8: ae 40 sbi333 $r1,[$r0+#0x0]
40ca: d5 31 j8 0x412c
; label BYTE2_EQ_3:
40cc: 3e 3f fe 78 addi.gp $r3,#-392
40d0: 84 11 movi55 $r0,#-15
40d2: 18 01 80 01 sbi.bi $r0,[$r3],#0x1
40d6: 84 80 movi55 $r4,#0x0
40d8: af 18 sbi333 $r4,[$r3+#0x0]
40da: 3e 0f ff 38 addi.gp $r0,#-200
40de: 3e 1f fe 8a addi.gp $r1,#-374
40e2: 84 46 movi55 $r2,#0x6
40e4: 49 00 2f e0 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
40e8: 2e 07 ff fe lbi.gp $r0,[+#-2]
40ec: c0 20 beqz38 $r0,0x412c
40ee: 84 3f movi55 $r1,#-1
40f0: 3e 08 07 bf addi.gp $r0,#0x7bf
40f4: 18 10 7f ff sbi.bi $r1,[$r0],#-1
40f8: ae 40 sbi333 $r1,[$r0+#0x0]
40fa: d5 19 j8 0x412c
40fc: 3e 3f fe 78 addi.gp $r3,#-392
4100: 84 11 movi55 $r0,#-15
4102: 18 01 80 01 sbi.bi $r0,[$r3],#0x1
4106: 84 80 movi55 $r4,#0x0
4108: af 18 sbi333 $r4,[$r3+#0x0]
410a: 3e 0f ff 38 addi.gp $r0,#-200
410e: 3e 1f fe 92 addi.gp $r1,#-366
4112: 84 46 movi55 $r2,#0x6
4114: 49 00 2f c8 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
4118: 2e 07 ff fe lbi.gp $r0,[+#-2]
411c: c0 08 beqz38 $r0,0x412c
411e: 84 3f movi55 $r1,#-1
4120: 3e 08 07 c1 addi.gp $r0,#0x7c1
4124: 18 10 7f ff sbi.bi $r1,[$r0],#-1
4128: 10 10 00 00 sbi $r1,[$r0+#0x0]
412c: 3e 2f ff 3d addi.gp $r2,#-195
4130: 84 01 movi55 $r0,#0x1
4132: 18 01 7f fe sbi.bi $r0,[$r2],#-2
4136: 84 60 movi55 $r3,#0x0
4138: 44 00 00 f1 movi $r0,#0xf1
413c: 84 21 movi55 $r1,#0x1
413e: ae d0 sbi333 $r3,[$r2+#0x0]
4140: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
4144: 48 ff fc 3e j 0x39c0
4148: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
414c: dd 9e ret5 $lp
414e: 92 00 nop16
; ---------- 0x4150: ???
4150: 46 00 00 0c sethi $r0,#0xc ; $r0 = 0x0000_c000
4154: 04 00 03 59 lwi $r0,[$r0+#0xd64] ; $r0 = [0x0000_cd64] (some builtin shit?)
4158: 44 10 ff fe movi $r1,#0xfffe ; $r1 = 0xfffe
415c: 14 10 00 0c swi $r1,[$r0+#0x30] ; [$r0+0x30] = $r1
4160: 84 22 movi55 $r1,#0x2
4162: a8 47 swi333 $r1,[$r0+#0x1c]
4164: 8c 2e addi45 $r1,#0xe
4166: 14 10 00 11 swi $r1,[$r0+#0x44]
416a: 94 4b slli333 $r1,$r1,#0x3
416c: b6 20 swi450 $r1,[$r0]
416e: 84 21 movi55 $r1,#0x1
4170: b6 20 swi450 $r1,[$r0]
4172: 46 10 00 0c sethi $r1,#0xc
4176: b4 40 lwi450 $r2,[$r0]
4178: 04 10 83 5d lwi $r1,[$r1+#0xd74]
417c: 42 21 3c 08 bset $r2,$r2,#0xf
4180: b6 40 swi450 $r2,[$r0]
4182: b4 01 lwi450 $r0,[$r1]
4184: 58 00 00 08 ori $r0,$r0,#0x8
4188: b6 01 swi450 $r0,[$r1]
418a: dd 9e ret5 $lp
; ----------- 0x418c: get_magic_word() -> $r0 = 0xAAAABBBB, AAAA=[$gp-38], BBBB=[[0xcd64]+4]
418c: 46 00 00 0c sethi $r0,#0xc ;
4190: 04 10 03 5d lwi $r1,[$r0+#0xd74] ;
4194: b4 41 lwi450 $r2,[$r1] ;
4196: 46 00 00 0c sethi $r0,#0xc ;
419a: 42 21 0c 09 bclr $r2,$r2,#0x3 ;
419e: b6 41 swi450 $r2,[$r1] ; clear ptr_table_cd74[0] bit 3
41a0: 04 00 03 59 lwi $r0,[$r0+#0xd64] ; $r0 = ptr_table_cd64[0]
41a4: 3c 23 ff ed lhi.gp $r2,[+#-38] ; $r2 = u16 $gp-38
41a8: a0 01 lwi333 $r0,[$r0+#0x4] ; $r0 = ptr_table_cd64[0][1]
41aa: b4 61 lwi450 $r3,[$r1] ;
41ac: 40 21 40 08 slli $r2,$r2,#0x10 ;
41b0: 96 01 zeh33 $r0,$r0 ;
41b2: 58 31 80 08 ori $r3,$r3,#0x8 ;
41b6: 40 01 00 04 or $r0,$r2,$r0 ;
41ba: b6 61 swi450 $r3,[$r1] ; set ptr_table_cd74[0] bit 3
41bc: dd 9e ret5 $lp
41be: 92 00 nop16
; ---------- 0x41c0 - check_cd74_size(arg=$r0) -> size $r0
; ---------- arg high halfword is [$gp-38], low halfword is ptr_table_cd64[1] (???)
41c0: 46 10 00 0c sethi $r1,#0xc
41c4: 04 30 83 5d lwi $r3,[$r1+#0xd74] ; $r3 = [0xcd74]
41c8: b4 23 lwi450 $r1,[$r3] ; $r1 = ptr_table_cd74[0]
41ca: 3c 43 ff ed lhi.gp $r4,[+#-38] ; $r4 = [$gp-38] halfword
41ce: 42 10 8c 09 bclr $r1,$r1,#0x3 ; clear bit 3 in $r1
41d2: 46 20 00 0c sethi $r2,#0xc ;
41d6: b6 23 swi450 $r1,[$r3] ; clear bit 3 in ptr_table_cd74[0]
41d8: 04 11 03 59 lwi $r1,[$r2+#0xd64] ; $r1 = [0xcd64]
41dc: 40 42 40 08 slli $r4,$r4,#0x10 ; $r4 high halfword is [$gp-38]
41e0: a0 49 lwi333 $r1,[$r1+#0x4] ; $r1 = ptr_table_cd64[1]
41e2: b4 43 lwi450 $r2,[$r3] ; $r2 = ptr_table_cd74[0]
41e4: 96 49 zeh33 $r1,$r1 ; $r1 = halfword($r1)
41e6: 58 21 00 08 ori $r2,$r2,#0x8 ; set bit 3 in $r2
41ea: 40 12 04 04 or $r1,$r4,$r1 ; $r1 = high halfword [$gp-38], low halfword ptr_table_cd64[1]
41ee: b6 43 swi450 $r2,[$r3] ; set bit 3 in ptr_table_cd74[0]
41f0: e2 20 slt45 $r1,$r0 ;
41f2: e8 05 beqzs8 0x41fc ; if $r1 < $r0:
41f4: 46 20 16 e0 sethi $r2,#0x16e0 ; $r2 = 0x016e_0000
41f8: 40 10 88 00 add $r1,$r1,$r2 ; $r1 += 0x016e_0000
41fc: 46 2a aa aa sethi $r2,#0xaaaaa ;
4200: 9a 48 sub333 $r1,$r1,$r0 ; $r1 -= $r0
4202: 58 21 0a ab ori $r2,$r2,#0xaab ;
4206: 42 20 88 69 mulr64 $r2,$r1,$r2 ;
420a: 40 01 90 09 srli $r0,$r3,#0x4 ; $r0 = ($r1 - $r0) / 48
420e: dd 9e ret5 $lp
; ---------- 0x4210: do_cd74_stuff(arg=$r0), sets $r15
4210: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
4214: 46 10 00 0c sethi $r1,#0xc ; $r1 = 0x0000c000
4218: 04 10 83 5d lwi $r1,[$r1+#0xd74] ; $r1 = [0xcd74] (void *ptr_table_cd74)
421c: b4 41 lwi450 $r2,[$r1] ; $r2 = ptr_table_cd74[0]
421e: 3c 73 ff ed lhi.gp $r7,[+#-38] ; $r7 = [$gp-38] (halfword)
4222: 42 21 0c 09 bclr $r2,$r2,#0x3 ; clear bit 3 of $r2
4226: b6 41 swi450 $r2,[$r1] ; clear bit 3 of ptr_table_cd74[0]
4228: 46 20 00 0c sethi $r2,#0xc ;
422c: 04 21 03 59 lwi $r2,[$r2+#0xd64] ; $r2 = [0xcd64] (void *ptr_table_cd64)
4230: 44 80 03 e8 movi $r8,#0x3e8 ; $r8 = 0x3e8
4234: a0 91 lwi333 $r2,[$r2+#0x4] ; $r2 = ptr_table_cd64[1]
4236: b4 61 lwi450 $r3,[$r1] ; $r3 = ptr_table_cd74[0]
4238: 42 80 20 24 mul $r8,$r0,$r8 ; $r8 = arg * 0x3e8
423c: 58 31 80 08 ori $r3,$r3,#0x8 ; set bit 3 of $r3
4240: 40 73 c0 08 slli $r7,$r7,#0x10 ; $r7 <<= 0x10 (move halfword to high 16 bits)
4244: 96 11 zeh33 $r0,$r2 ; $r0 = $r2 & 0x0000ffff
4246: b6 61 swi450 $r3,[$r1] ; set bit 3 of ptr_table_cd74[0]
4248: 40 73 80 04 or $r7,$r7,$r0 ; $r7 |= $r0 (low 16 bits are now low halfword of ptr_table_cd64[1]
424c: 80 07 mov55 $r0,$r7 ; loop:
424e: 49 ff ff b9 jal 0x41c0 ; ???
4252: e2 08 slt45 $r0,$r8 ;
4254: e9 fc bnezs8 0x424c ; until $r0 < $r8
4256: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
425a: dd 9e ret5 $lp
; ----------- 0x425c:
425c: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
4260: 46 10 00 0c sethi $r1,#0xc
4264: 04 10 83 5d lwi $r1,[$r1+#0xd74]
4268: b4 41 lwi450 $r2,[$r1]
426a: 3c 83 ff ed lhi.gp $r8,[+#-38]
426e: 42 21 0c 09 bclr $r2,$r2,#0x3
4272: b6 41 swi450 $r2,[$r1]
4274: 46 20 00 0c sethi $r2,#0xc
4278: 04 21 03 59 lwi $r2,[$r2+#0xd64]
427c: 40 84 40 08 slli $r8,$r8,#0x10
4280: a0 91 lwi333 $r2,[$r2+#0x4]
4282: b4 61 lwi450 $r3,[$r1]
4284: 58 31 80 08 ori $r3,$r3,#0x8
4288: b6 61 swi450 $r3,[$r1]
428a: 96 51 zeh33 $r1,$r2
428c: 40 84 04 04 or $r8,$r8,$r1
4290: 80 e0 mov55 $r7,$r0
4292: 80 08 mov55 $r0,$r8
4294: 49 ff ff 96 jal 0x41c0
4298: e2 07 slt45 $r0,$r7
429a: e9 fc bnezs8 0x4292
429c: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
42a0: dd 9e ret5 $lp
42a2: 92 00 nop16
; ---------- 0x42a4: time_check(u16 arg1=$r0, void *addr=$r1), uses pointer from 0xcd64
; ---------- mainloop calls with arg1=4, addr=$gp-0x70
; ---------- I honestly have no idea if this is a time check or a kb interface check or what
42a4: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
42a8: ef fc addi10.sp #-4 ;
42aa: 97 81 zeh33 $r6,$r0 ; $r6 = arg1
42ac: 80 e1 mov55 $r7,$r1 ; $r7 = addr
42ae: 5c f3 03 85 slti $r15,$r6,#0x385 ;
42b2: e8 26 beqzs8 0x42fe ; if arg1 >= 0x385: goto out_fail
42b4: 04 00 80 00 lwi $r0,[$r1+#0x0] ;
42b8: 49 ff ff 84 jal 0x41c0 ; $r0 = check_cd74_size(getword(addr))
42bc: 44 10 03 e8 movi $r1,#0x3e8 ;
42c0: 42 63 04 24 mul $r6,$r6,$r1 ;
42c4: e2 06 slt45 $r0,$r6 ;
42c6: e9 1c bnezs8 0x42fe ; if $r0 >= (arg1 * 0x3e8): goto out_fail
42c8: 46 00 00 0c sethi $r0,#0xc ;
42cc: 04 00 03 5d lwi $r0,[$r0+#0xd74] ; $r0 = cd74_table[0]
42d0: b4 20 lwi450 $r1,[$r0] ; $r1 = cd74_table[0][0]
42d2: 3c 33 ff ed lhi.gp $r3,[+#-38] ; $r3 = $gp-38
42d6: 42 10 8c 09 bclr $r1,$r1,#0x3 ;
42da: b6 20 swi450 $r1,[$r0] ; clear bit 3 in cd74_table[0][0]
42dc: 46 10 00 0c sethi $r1,#0xc ;
42e0: 04 10 83 59 lwi $r1,[$r1+#0xd64] ; $r1 = cd64_table[0]
42e4: 40 31 c0 08 slli $r3,$r3,#0x10 ; $r3 = $gp-38 << 16
42e8: a0 49 lwi333 $r1,[$r1+#0x4] ; $r1 = cd64_table[0][1]
42ea: b4 40 lwi450 $r2,[$r0] ; $r2 = cd74_table[0][0]
42ec: 96 49 zeh33 $r1,$r1 ; $r1 = 0x0000ffff & $r1
42ee: 40 11 84 04 or $r1,$r3,$r1 ; $r1 = $r1 | $r3 = ($gp-38 << 16) | (cd64_table[0][1] & 0x0000ffff)
42f2: 58 21 00 08 ori $r2,$r2,#0x8 ;
42f6: b6 40 swi450 $r2,[$r0] ; set bit 3 in cd74_table[0][0]
42f8: b6 27 swi450 $r1,[$r7] ; [addr] = $r1
42fa: 84 01 movi55 $r0,#0x1 ; $r0 = 1
42fc: d5 02 j8 0x4300 ; goto out
42fe: 84 00 movi55 $r0,#0x0 ; out_fail: $r0 = 0
4300: ec 04 addi10.sp #0x4 ; out: return
4302: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
4306: dd 9e ret5 $lp
; ---------- 0x4308: usb_stall(endpoint=$r0)
4308: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
430c: 51 cf 80 00 addi $fp,$sp,#0x0 ; $fp = $sp
4310: 51 ff ff f4 addi $sp,$sp,#-12 ; $sp -= 12
4314: 80 00 mov55 $r0,$r0 ; ????
4316: 10 0e 7f f8 sbi $r0,[$fp+#-8] ; Save $r0 at $fp-8
431a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
431e: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: Endpoint Index Register
4322: 00 1e 7f f8 lbi $r1,[$fp+#-8] ; $r1 = $r0 (from [$fp-8])
4326: 54 10 80 ff andi $r1,$r1,#0xff ; clear all but the low byte of $r1
432a: 14 10 00 00 swi $r1,[$r0+#0x0] ; Select USB endpoint
432e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4332: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
4336: 46 10 02 07 sethi $r1,#0x207 ; USB address range: 0x00207800~0x00207bff
433a: 58 10 88 18 ori $r1,$r1,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
433e: 04 10 80 00 lwi $r1,[$r1+#0x0] ; $r1 = EPCON
4342: 58 10 80 c0 ori $r1,$r1,#0xc0 ; EPCON |= 0xc0 (0b1100_0000 - RXSTL, TXSTL)
4346: 14 10 00 00 swi $r1,[$r0+#0x0] ; store EPCON - stall tx/rx for endpoint
434a: 51 fe 00 00 addi $sp,$fp,#0x0 ; set $sp to $fp
434e: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
4352: 4a 00 78 20 ret $lp
4356: 92 00 nop16
; ----------- 0x4358: usb_stall_clear(endpoint=$r0)
; ----------- NOTE: this should only get called "when the host has intervened through commands sent down endpoint 0"
4358: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
435c: 51 cf 80 00 addi $fp,$sp,#0x0
4360: 51 ff ff f4 addi $sp,$sp,#-12
4364: 80 00 mov55 $r0,$r0
4366: 10 0e 7f f8 sbi $r0,[$fp+#-8] ; save endpoint at $fp-8
436a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
436e: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
4372: 00 1e 7f f8 lbi $r1,[$fp+#-8] ; $r1 = endpoint
4376: 54 10 80 ff andi $r1,$r1,#0xff
437a: 14 10 00 00 swi $r1,[$r0+#0x0] ; send endpoint to EPINDEX
437e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4382: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
4386: 46 10 02 07 sethi $r1,#0x207 ; USB address range: 0x00207800~0x00207bff
438a: 58 10 88 18 ori $r1,$r1,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
438e: 04 10 80 00 lwi $r1,[$r1+#0x0] ; $r1 = EPCON
4392: 44 2f ff 3f movi $r2,#-193 ; -193 = ~0xc0
4396: 40 10 88 02 and $r1,$r1,$r2 ; EPCON &= ~0xc0 (clear RXSTL, TXSTL)
439a: 14 10 00 00 swi $r1,[$r0+#0x0] ; store EPCON
439e: 51 fe 00 00 addi $sp,$fp,#0x0
43a2: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
43a6: 4a 00 78 20 ret $lp
43aa: 92 00 nop16
43ac: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
43b0: 51 cf 80 04 addi $fp,$sp,#0x4
43b4: 44 00 00 00 movi $r0,#0x0
43b8: 49 ff ff a8 jal 0x4308 ; usb_stall(endpoint=$r0)
43bc: 51 fe 7f fc addi $sp,$fp,#-4
43c0: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
43c4: 4a 00 78 20 ret $lp
; ---------- 0x43c8: usb_tx_pktbuf2(endpoint=$r0, size=$r1)
43c8: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
43cc: 51 cf 80 00 addi $fp,$sp,#0x0 ; $fp = $sp
43d0: 51 ff ff ec addi $sp,$sp,#-20 ; $sp -= 20
43d4: 80 40 mov55 $r2,$r0 ; $r2 = endpoint
43d6: 80 01 mov55 $r0,$r1 ; $r0 = size
43d8: 80 22 mov55 $r1,$r2 ; $r1 = endpoint (we've swapped $r0 and $r1, clobbering $r2)
43da: 10 1e 7f f0 sbi $r1,[$fp+#-16] ; save endpoint to [$fp-16]
43de: 80 00 mov55 $r0,$r0
43e0: 10 0e 7f ec sbi $r0,[$fp+#-20] ; save size to [$fp-20]
43e4: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
43e8: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
43ec: 00 1e 7f f0 lbi $r1,[$fp+#-16]
43f0: 54 10 80 ff andi $r1,$r1,#0xff
43f4: 14 10 00 00 swi $r1,[$r0+#0x0] ; write endpoint to EPINDEX
43f8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
43fc: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
4400: 04 00 00 00 lwi $r0,[$r0+#0x0]
4404: 54 00 00 04 andi $r0,$r0,#0x4
4408: c8 46 bnez38 $r0,0x4494
440a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
440e: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
4412: 04 00 00 00 lwi $r0,[$r0+#0x0]
4416: 54 00 00 01 andi $r0,$r0,#0x1
441a: 54 00 00 ff andi $r0,$r0,#0xff
441e: c0 09 beqz38 $r0,0x4430
4420: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4424: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
4428: 44 10 00 80 movi $r1,#0x80
442c: 14 10 00 00 swi $r1,[$r0+#0x0]
4430: 44 00 00 00 movi $r0,#0x0
4434: 10 0e 7f fb sbi $r0,[$fp+#-5] ; $fp-5 (count) = 0
4438: d5 18 j8 0x4468
443a: 46 00 02 07 sethi $r0,#0x207 ; loop:
443e: 58 00 08 20 ori $r0,$r0,#0x820 ; $r0 = USB offset 0x20: TXDAT, Transmit USB FIFO Data Register
4442: 00 1e 7f fb lbi $r1,[$fp+#-5] ; $r1 = count
4446: 54 10 80 ff andi $r1,$r1,#0xff ;
444a: 3e 28 08 b0 addi.gp $r2,#0x8b0 ; $r2 = $gp+0x8b0 (pktbuf2)
444e: 38 11 04 00 lb $r1,[$r2+($r1<<#0x0)]; $r1 = [pktbuf2+count]
4452: 54 10 80 ff andi $r1,$r1,#0xff ;
4456: 14 10 00 00 swi $r1,[$r0+#0x0] ; write $r1 to TXDAT
445a: 00 0e 7f fb lbi $r0,[$fp+#-5] ;
445e: 50 00 00 01 addi $r0,$r0,#0x1 ;
4462: 80 00 mov55 $r0,$r0 ;
4464: 10 0e 7f fb sbi $r0,[$fp+#-5] ; count += 1
4468: 00 0e 7f fb lbi $r0,[$fp+#-5] ;
446c: 54 10 00 ff andi $r1,$r0,#0xff ;
4470: 00 0e 7f ec lbi $r0,[$fp+#-20] ;
4474: 54 00 00 ff andi $r0,$r0,#0xff ;
4478: 40 f0 80 06 slt $r15,$r1,$r0 ;
447c: e9 df bnezs8 0x443a ; while (count < size)
447e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4482: 58 00 08 2c ori $r0,$r0,#0x82c ; USB offset 0x2c: TXCNT, Transmit USB FIFO Byte Count Register
4486: 00 1e 7f ec lbi $r1,[$fp+#-20] ;
448a: 54 10 80 ff andi $r1,$r1,#0xff ;
448e: 14 10 00 00 swi $r1,[$r0+#0x0] ; write count to TXCNT
4492: d5 01 j8 0x4494
4494: 51 fe 00 00 addi $sp,$fp,#0x0
4498: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
449c: 4a 00 78 20 ret $lp
; ---------- 0x44a0: usb_tx_endpoint0()
44a0: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
44a4: 51 cf 80 04 addi $fp,$sp,#0x4 ; $fp = $sp+4
44a8: 51 ff ff f8 addi $sp,$sp,#-8
44ac: 3e 08 08 70 addi.gp $r0,#0x870
44b0: 00 00 00 07 lbi $r0,[$r0+#0x7]
44b4: 54 00 00 ff andi $r0,$r0,#0xff
44b8: 40 10 20 08 slli $r1,$r0,#0x8
44bc: 3e 08 08 70 addi.gp $r0,#0x870
44c0: 00 00 00 06 lbi $r0,[$r0+#0x6]
44c4: 54 00 00 ff andi $r0,$r0,#0xff
44c8: 40 00 80 00 add $r0,$r1,$r0
44cc: 14 0e 7f fe swi $r0,[$fp+#-8] ; $fp-8 = crc16 from packet at $gp+0x870
44d0: 3e 0f ff f0 addi.gp $r0,#-16
44d4: 00 00 00 00 lbi $r0,[$r0+#0x0] ; $r0 = [$gp-16]
44d8: 54 00 00 ff andi $r0,$r0,#0xff
44dc: 80 20 mov55 $r1,$r0 ; $r1 = [$gp-16]
44de: 04 0e 7f fe lwi $r0,[$fp+#-8] ; $r0 = gp870_packet_crc
44e2: 40 f0 80 06 slt $r15,$r1,$r0 ;
44e6: 4e f2 00 0a beqz $r15,0x44fa ; if gp870_packet_crc <= [$gp-16]:
44ea: 3e 0f ff f0 addi.gp $r0,#-16 ;
44ee: 00 00 00 00 lbi $r0,[$r0+#0x0] ;
44f2: 54 00 00 ff andi $r0,$r0,#0xff ;
44f6: 14 0e 7f fe swi $r0,[$fp+#-8] ; gp870_packet_crc = [$gp-16]
44fa: 04 0e 7f fe lwi $r0,[$fp+#-8] ; $r0 = gp870_packet_crc
44fe: 54 00 00 ff andi $r0,$r0,#0xff
4502: 80 20 mov55 $r1,$r0
4504: 44 00 00 00 movi $r0,#0x0
4508: 49 ff ff 60 jal 0x43c8 ; usb_tx_pktbuf2(endpoint=0, size=[$fp-8])
450c: 51 fe 7f fc addi $sp,$fp,#-4
4510: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4514: 4a 00 78 20 ret $lp
; ---------- 0x4518: usb_tx_pktbuf()
4518: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
451c: 51 cf 80 00 addi $fp,$sp,#0x0
4520: 51 ff ff e4 addi $sp,$sp,#-28
4524: 14 0e 7f fa swi $r0,[$fp+#-24]
4528: 44 00 00 00 movi $r0,#0x0
452c: 14 0e 7f fd swi $r0,[$fp+#-12]
4530: 3e 08 08 70 addi.gp $r0,#0x870 ; $r0 = $gp+0x870 (pktbuf)
4534: 00 00 00 07 lbi $r0,[$r0+#0x7]
4538: 54 00 00 ff andi $r0,$r0,#0xff
453c: 40 10 20 08 slli $r1,$r0,#0x8
4540: 3e 08 08 70 addi.gp $r0,#0x870
4544: 00 00 00 06 lbi $r0,[$r0+#0x6]
4548: 54 00 00 ff andi $r0,$r0,#0xff
454c: 40 00 80 00 add $r0,$r1,$r0
4550: 14 0e 7f fe swi $r0,[$fp+#-8]
4554: 04 0e 7f fa lwi $r0,[$fp+#-24]
4558: 00 00 00 00 lbi $r0,[$r0+#0x0]
455c: 54 00 00 ff andi $r0,$r0,#0xff
4560: 80 20 mov55 $r1,$r0
4562: 04 0e 7f fe lwi $r0,[$fp+#-8]
4566: 40 f0 80 06 slt $r15,$r1,$r0
456a: e8 09 beqzs8 0x457c
456c: 04 0e 7f fa lwi $r0,[$fp+#-24]
4570: 00 00 00 00 lbi $r0,[$r0+#0x0]
4574: 54 00 00 ff andi $r0,$r0,#0xff
4578: 14 0e 7f fe swi $r0,[$fp+#-8]
457c: 3e 0f ff a0 addi.gp $r0,#-96
4580: 04 1e 7f fe lwi $r1,[$fp+#-8]
4584: 14 10 00 00 swi $r1,[$r0+#0x0]
4588: 3e 0f ff a4 addi.gp $r0,#-92
458c: 44 10 00 00 movi $r1,#0x0
4590: 14 10 00 00 swi $r1,[$r0+#0x0]
4594: 3e 0f ff a8 addi.gp $r0,#-88
4598: 04 1e 7f fa lwi $r1,[$fp+#-24]
459c: 14 10 00 00 swi $r1,[$r0+#0x0]
45a0: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
45a4: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
45a8: 04 00 00 00 lwi $r0,[$r0+#0x0]
45ac: 54 00 00 04 andi $r0,$r0,#0x4
45b0: c8 64 bnez38 $r0,0x4678
45b2: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
45b6: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
45ba: 04 00 00 00 lwi $r0,[$r0+#0x0]
45be: 54 00 00 01 andi $r0,$r0,#0x1
45c2: 54 00 00 ff andi $r0,$r0,#0xff
45c6: c0 09 beqz38 $r0,0x45d8
45c8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
45cc: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
45d0: 44 10 00 80 movi $r1,#0x80
45d4: 14 10 00 00 swi $r1,[$r0+#0x0]
45d8: 04 0e 7f fe lwi $r0,[$fp+#-8]
45dc: c0 30 beqz38 $r0,0x463c
45de: 44 00 00 00 movi $r0,#0x0
45e2: 14 0e 7f fc swi $r0,[$fp+#-16]
45e6: d5 23 j8 0x462c
45e8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
45ec: 58 00 08 20 ori $r0,$r0,#0x820 ; USB offset 0x20: TXDAT, Transmit USB FIFO Data Register
45f0: 04 2e 7f fa lwi $r2,[$fp+#-24]
45f4: 04 1e 7f fc lwi $r1,[$fp+#-16]
45f8: 40 11 04 00 add $r1,$r2,$r1
45fc: 00 10 80 00 lbi $r1,[$r1+#0x0]
4600: 54 10 80 ff andi $r1,$r1,#0xff
4604: 14 10 00 00 swi $r1,[$r0+#0x0]
4608: 04 0e 7f fd lwi $r0,[$fp+#-12]
460c: 50 00 00 01 addi $r0,$r0,#0x1
4610: 14 0e 7f fd swi $r0,[$fp+#-12]
4614: 04 1e 7f fd lwi $r1,[$fp+#-12]
4618: 44 00 00 40 movi $r0,#0x40
461c: 4c 10 00 10 beq $r1,$r0,0x463c
4620: 04 0e 7f fc lwi $r0,[$fp+#-16]
4624: 50 00 00 01 addi $r0,$r0,#0x1
4628: 14 0e 7f fc swi $r0,[$fp+#-16]
462c: 04 1e 7f fc lwi $r1,[$fp+#-16]
4630: 04 0e 7f fe lwi $r0,[$fp+#-8]
4634: 40 f0 80 06 slt $r15,$r1,$r0
4638: e9 d8 bnezs8 0x45e8
463a: d5 01 j8 0x463c
463c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4640: 58 00 08 2c ori $r0,$r0,#0x82c ; USB offset 0x2c: TXCNT, Transmit USB FIFO Byte Count Register
4644: 04 1e 7f fd lwi $r1,[$fp+#-12]
4648: 14 10 00 00 swi $r1,[$r0+#0x0]
464c: 04 1e 7f fe lwi $r1,[$fp+#-8]
4650: 04 0e 7f fd lwi $r0,[$fp+#-12]
4654: 40 10 80 01 sub $r1,$r1,$r0
4658: 3e 0f ff a0 addi.gp $r0,#-96
465c: 14 10 00 00 swi $r1,[$r0+#0x0]
4660: 3e 0f ff a4 addi.gp $r0,#-92
4664: 04 10 00 00 lwi $r1,[$r0+#0x0]
4668: 04 0e 7f fd lwi $r0,[$fp+#-12]
466c: 40 10 80 00 add $r1,$r1,$r0
4670: 3e 0f ff a4 addi.gp $r0,#-92
4674: 14 10 00 00 swi $r1,[$r0+#0x0]
4678: 51 fe 00 00 addi $sp,$fp,#0x0
467c: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
4680: 4a 00 78 20 ret $lp
; ---------- 0x4684: usb_tx_data(addr=$r0, size=$r1)
; ---------- transmits size bytes (starting at addr) to previously-selected endpoint
; ---------- globals: $gp-92 (total_wrote), $gp-96 (tx_bytes_pending)
4684: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
4688: 51 cf 80 00 addi $fp,$sp,#0x0 ;
468c: 51 ff ff e4 addi $sp,$sp,#-28
4690: 14 0e 7f fa swi $r0,[$fp+#-24] ; [$fp-24] = addr
4694: 14 1e 7f f9 swi $r1,[$fp+#-28] ; [$fp-28] = size
4698: 3e 08 08 70 addi.gp $r0,#0x870
469c: 00 00 00 07 lbi $r0,[$r0+#0x7]
46a0: 54 00 00 ff andi $r0,$r0,#0xff
46a4: 40 10 20 08 slli $r1,$r0,#0x8
46a8: 3e 08 08 70 addi.gp $r0,#0x870
46ac: 00 00 00 06 lbi $r0,[$r0+#0x6]
46b0: 54 00 00 ff andi $r0,$r0,#0xff
46b4: 40 00 80 00 add $r0,$r1,$r0
46b8: 14 0e 7f fd swi $r0,[$fp+#-12]
46bc: 44 00 00 00 movi $r0,#0x0
46c0: 14 0e 7f fe swi $r0,[$fp+#-8] ; $fp-8 (wrote_count) = 0
46c4: 04 1e 7f fd lwi $r1,[$fp+#-12]
46c8: 04 0e 7f f9 lwi $r0,[$fp+#-28]
46cc: 40 f0 80 06 slt $r15,$r1,$r0
46d0: e8 05 beqzs8 0x46da
46d2: 04 0e 7f fd lwi $r0,[$fp+#-12]
46d6: 14 0e 7f f9 swi $r0,[$fp+#-28]
46da: 3e 0f ff a0 addi.gp $r0,#-96
46de: 04 1e 7f f9 lwi $r1,[$fp+#-28]
46e2: 14 10 00 00 swi $r1,[$r0+#0x0]
46e6: 3e 0f ff a4 addi.gp $r0,#-92
46ea: 44 10 00 00 movi $r1,#0x0
46ee: 14 10 00 00 swi $r1,[$r0+#0x0]
46f2: 3e 0f ff a8 addi.gp $r0,#-88
46f6: 04 1e 7f fa lwi $r1,[$fp+#-24] ; $r1 = addr
46fa: 14 10 00 00 swi $r1,[$r0+#0x0] ; [$gp-88] = addr
46fe: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4702: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
4706: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = addr
470a: 54 00 00 04 andi $r0,$r0,#0x4 ;
470e: c8 67 bnez38 $r0,0x47dc ; if addr & 0x4: goto out
4710: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4714: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
4718: 04 00 00 00 lwi $r0,[$r0+#0x0]
471c: 54 00 00 01 andi $r0,$r0,#0x1
4720: 54 00 00 ff andi $r0,$r0,#0xff
4724: c0 09 beqz38 $r0,0x4736
4726: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
472a: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
472e: 44 10 00 80 movi $r1,#0x80
4732: 14 10 00 00 swi $r1,[$r0+#0x0]
4736: 04 0e 7f f9 lwi $r0,[$fp+#-28]
473a: c0 31 beqz38 $r0,0x479c
473c: 44 00 00 00 movi $r0,#0x0
4740: 14 0e 7f fc swi $r0,[$fp+#-16] ; $fp-16 (offset) = 0
4744: d5 23 j8 0x478a ; goto LOOP_CHECK
; LOOP_START:
4746: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
474a: 58 00 08 20 ori $r0,$r0,#0x820 ; USB offset 0x20: TXDAT, Transmit USB FIFO Data Register
474e: 04 2e 7f fa lwi $r2,[$fp+#-24] ; $r2 = addr
4752: 04 1e 7f fc lwi $r1,[$fp+#-16] ; $r1 = offset
4756: 40 11 04 00 add $r1,$r2,$r1 ;
475a: 00 10 80 00 lbi $r1,[$r1+#0x0] ; $r1 = addr[offset]
475e: 54 10 80 ff andi $r1,$r1,#0xff ;
4762: 14 10 00 00 swi $r1,[$r0+#0x0] ; write $r1 to TXDAT
4766: 04 0e 7f fe lwi $r0,[$fp+#-8] ;
476a: 50 00 00 01 addi $r0,$r0,#0x1 ;
476e: 14 0e 7f fe swi $r0,[$fp+#-8] ; wrote_count++
4772: 04 1e 7f fe lwi $r1,[$fp+#-8] ;
4776: 44 00 00 40 movi $r0,#0x40 ;
477a: 4c 10 00 11 beq $r1,$r0,0x479c ; if wrote_count == 0x40: goto TX_DONE
477e: 04 0e 7f fc lwi $r0,[$fp+#-16] ;
4782: 50 00 00 01 addi $r0,$r0,#0x1 ;
4786: 14 0e 7f fc swi $r0,[$fp+#-16] ; offset++
478a: 04 1e 7f fc lwi $r1,[$fp+#-16] ; LOOP_CHECK: $r1 = offset
478e: 04 0e 7f f9 lwi $r0,[$fp+#-28] ; $r0 = size
4792: 40 f0 80 06 slt $r15,$r1,$r0 ;
4796: 4e f3 ff d8 bnez $r15,0x4746 ; if (offset < size): goto LOOP_START
479a: d5 01 j8 0x479c ; goto TX_DONE
; label TX_DONE:
479c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
47a0: 58 00 08 2c ori $r0,$r0,#0x82c ; USB offset 0x2c: TXCNT, Transmit USB FIFO Byte Count Register
47a4: 04 1e 7f fe lwi $r1,[$fp+#-8]
47a8: 54 10 80 ff andi $r1,$r1,#0xff
47ac: 14 10 00 00 swi $r1,[$r0+#0x0] ; write wrote_count to TXCNT
47b0: 04 1e 7f f9 lwi $r1,[$fp+#-28] ; $r1 = size
47b4: 04 0e 7f fe lwi $r0,[$fp+#-8] ; $r0 = wrote_count
47b8: 40 10 80 01 sub $r1,$r1,$r0 ; $r1 = size - wrote_count
47bc: 3e 0f ff a0 addi.gp $r0,#-96 ;
47c0: 14 10 00 00 swi $r1,[$r0+#0x0] ; [$gp-96] (tx_bytes_pending) = size-wrote_count
47c4: 3e 0f ff a4 addi.gp $r0,#-92 ;
47c8: 04 10 00 00 lwi $r1,[$r0+#0x0] ; $r1 = [$gp-92] (total_wrote)
47cc: 04 0e 7f fe lwi $r0,[$fp+#-8] ; $r0 = wrote_count
47d0: 40 10 80 00 add $r1,$r1,$r0 ; $r1 = total_wrote + wrote_count
47d4: 3e 0f ff a4 addi.gp $r0,#-92 ;
47d8: 14 10 00 00 swi $r1,[$r0+#0x0] ; wrote_count += total_wrote
47dc: 51 fe 00 00 addi $sp,$fp,#0x0
47e0: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
47e4: 4a 00 78 20 ret $lp
; ----------- 0x47e8: usb_tx_something()
47e8: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
47ec: 51 cf 80 00 addi $fp,$sp,#0x0
47f0: 51 ff ff ec addi $sp,$sp,#-20
47f4: 3e 0f ff a8 addi.gp $r0,#-88
47f8: 04 00 00 00 lwi $r0,[$r0+#0x0]
47fc: 14 0e 7f fc swi $r0,[$fp+#-16]
4800: 3e 0f ff a0 addi.gp $r0,#-96
4804: 04 00 00 00 lwi $r0,[$r0+#0x0]
4808: 14 0e 7f fd swi $r0,[$fp+#-12]
480c: 44 00 00 00 movi $r0,#0x0
4810: 14 0e 7f fe swi $r0,[$fp+#-8]
4814: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4818: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
481c: 04 00 00 00 lwi $r0,[$r0+#0x0]
4820: 54 00 00 04 andi $r0,$r0,#0x4
4824: c8 6e bnez38 $r0,0x4900
4826: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
482a: 58 00 08 28 ori $r0,$r0,#0x828 ; USB offset 0x28: TXFLG, Transmit USB FIFO Flag Register
482e: 04 00 00 00 lwi $r0,[$r0+#0x0]
4832: 54 00 00 01 andi $r0,$r0,#0x1
4836: 54 00 00 ff andi $r0,$r0,#0xff
483a: c0 09 beqz38 $r0,0x484c
483c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4840: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
4844: 44 10 00 80 movi $r1,#0x80
4848: 14 10 00 00 swi $r1,[$r0+#0x0]
484c: 04 0e 7f fd lwi $r0,[$fp+#-12]
4850: c0 3a beqz38 $r0,0x48c4
4852: 3e 0f ff a4 addi.gp $r0,#-92
4856: 04 00 00 00 lwi $r0,[$r0+#0x0]
485a: 04 1e 7f fc lwi $r1,[$fp+#-16]
485e: 40 00 80 00 add $r0,$r1,$r0
4862: 14 0e 7f fc swi $r0,[$fp+#-16]
4866: 44 00 00 00 movi $r0,#0x0
486a: 14 0e 7f fb swi $r0,[$fp+#-20]
486e: d5 23 j8 0x48b4
4870: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4874: 58 00 08 20 ori $r0,$r0,#0x820 ; USB offset 0x20: TXDAT, Transmit USB FIFO Data Register
4878: 04 2e 7f fc lwi $r2,[$fp+#-16]
487c: 04 1e 7f fb lwi $r1,[$fp+#-20]
4880: 40 11 04 00 add $r1,$r2,$r1
4884: 00 10 80 00 lbi $r1,[$r1+#0x0]
4888: 54 10 80 ff andi $r1,$r1,#0xff
488c: 14 10 00 00 swi $r1,[$r0+#0x0]
4890: 04 0e 7f fe lwi $r0,[$fp+#-8]
4894: 50 00 00 01 addi $r0,$r0,#0x1
4898: 14 0e 7f fe swi $r0,[$fp+#-8]
489c: 04 1e 7f fe lwi $r1,[$fp+#-8]
48a0: 44 00 00 40 movi $r0,#0x40
48a4: 4c 10 00 10 beq $r1,$r0,0x48c4
48a8: 04 0e 7f fb lwi $r0,[$fp+#-20]
48ac: 50 00 00 01 addi $r0,$r0,#0x1
48b0: 14 0e 7f fb swi $r0,[$fp+#-20]
48b4: 04 1e 7f fb lwi $r1,[$fp+#-20]
48b8: 04 0e 7f fd lwi $r0,[$fp+#-12]
48bc: 40 f0 80 06 slt $r15,$r1,$r0
48c0: e9 d8 bnezs8 0x4870
48c2: d5 01 j8 0x48c4
48c4: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
48c8: 58 00 08 2c ori $r0,$r0,#0x82c ; USB offset 0x2c: TXCNT, Transmit USB FIFO Byte Count Register
48cc: 04 1e 7f fe lwi $r1,[$fp+#-8]
48d0: 14 10 00 00 swi $r1,[$r0+#0x0]
48d4: 04 1e 7f fd lwi $r1,[$fp+#-12]
48d8: 04 0e 7f fe lwi $r0,[$fp+#-8]
48dc: 40 10 80 01 sub $r1,$r1,$r0
48e0: 3e 0f ff a0 addi.gp $r0,#-96
48e4: 14 10 00 00 swi $r1,[$r0+#0x0]
48e8: 3e 0f ff a4 addi.gp $r0,#-92
48ec: 04 10 00 00 lwi $r1,[$r0+#0x0]
48f0: 04 0e 7f fe lwi $r0,[$fp+#-8]
48f4: 40 10 80 00 add $r1,$r1,$r0
48f8: 3e 0f ff a4 addi.gp $r0,#-92
48fc: 14 10 00 00 swi $r1,[$r0+#0x0]
4900: 51 fe 00 00 addi $sp,$fp,#0x0
4904: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
4908: 4a 00 78 20 ret $lp
; ---------- 0x490c: usb_tx_init(endpoint=$r0)
490c: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
4910: 51 cf 80 00 addi $fp,$sp,#0x0
4914: 51 ff ff f4 addi $sp,$sp,#-12
4918: 80 00 mov55 $r0,$r0
491a: 10 0e 7f f8 sbi $r0,[$fp+#-8] ; [$fp-8] = endpoint
491e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4922: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
4926: 00 1e 7f f8 lbi $r1,[$fp+#-8] ;
492a: 54 10 80 ff andi $r1,$r1,#0xff ;
492e: 14 10 00 00 swi $r1,[$r0+#0x0] ; ..write endpoint to EPINDEX
4932: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4936: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
493a: 44 10 00 03 movi $r1,#0x3 ;
493e: 14 10 00 00 swi $r1,[$r0+#0x0] ; EPCON = 0b0000_0011: +TXOE, +TXEPEN
4942: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4946: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
494a: 44 10 00 80 movi $r1,#0x80 ;
494e: 14 10 00 00 swi $r1,[$r0+#0x0] ; TXCON = 0b1000_0000: flush TX FIFO, clear TXFLG
4952: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4956: 58 00 08 30 ori $r0,$r0,#0x830 ; USB offset 0x30: TXSTAT, Endpoint Transmit Status Register
495a: 44 1f ff 7f movi $r1,#-129 ; $r1 = 0xffffff7f
495e: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear TXSTAT bit 7 (TXSEQ - waiting for ACK, new config/interface)
4962: 51 fe 00 00 addi $sp,$fp,#0x0
4966: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
496a: 4a 00 78 20 ret $lp
496e: 92 00 nop16
; ---------- 0x4970: usb_rx_init(endpoint=$r0)
4970: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
4974: 51 cf 80 00 addi $fp,$sp,#0x0
4978: 51 ff ff f4 addi $sp,$sp,#-12
497c: 80 00 mov55 $r0,$r0
497e: 10 0e 7f f8 sbi $r0,[$fp+#-8]
4982: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4986: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
498a: 00 1e 7f f8 lbi $r1,[$fp+#-8]
498e: 54 10 80 ff andi $r1,$r1,#0xff
4992: 14 10 00 00 swi $r1,[$r0+#0x0] ; ...select endpoint
4996: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
499a: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
499e: 44 10 00 0c movi $r1,#0xc ;
49a2: 14 10 00 00 swi $r1,[$r0+#0x0] ; EPCON = 0b0000_1100, +RXIE, +RXEPEN
49a6: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
49aa: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
49ae: 44 10 00 90 movi $r1,#0x90
49b2: 14 10 00 00 swi $r1,[$r0+#0x0] ; RXCON = 0b1001_0000, flush RX FIFO, clear RXFLG, set Read Complete
49b6: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
49ba: 58 00 08 70 ori $r0,$r0,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
49be: 44 1f ff 7f movi $r1,#-129 ; $r1 = 0xffffff7f
49c2: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear RXSTAT bit 7 (RXSEQ - waiting for ACK, new config/interface)
49c6: 51 fe 00 00 addi $sp,$fp,#0x0
49ca: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
49ce: 4a 00 78 20 ret $lp
49d2: 92 00 nop16
; ----------- 0x49d4: usb_disable_endpoint(endpoint=$r0)
49d4: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
49d8: 51 cf 80 00 addi $fp,$sp,#0x0
49dc: 51 ff ff f4 addi $sp,$sp,#-12
49e0: 80 00 mov55 $r0,$r0
49e2: 10 0e 7f f8 sbi $r0,[$fp+#-8]
49e6: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
49ea: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
49ee: 00 1e 7f f8 lbi $r1,[$fp+#-8]
49f2: 54 10 80 ff andi $r1,$r1,#0xff
49f6: 14 10 00 00 swi $r1,[$r0+#0x0]
49fa: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
49fe: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
4a02: 44 10 00 00 movi $r1,#0x0
4a06: 14 10 00 00 swi $r1,[$r0+#0x0]
4a0a: 51 fe 00 00 addi $sp,$fp,#0x0
4a0e: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
4a12: 4a 00 78 20 ret $lp
4a16: 92 00 nop16
4a18: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4a1c: 51 cf 80 04 addi $fp,$sp,#0x4
4a20: 3e 08 08 b0 addi.gp $r0,#0x8b0
4a24: 44 10 00 00 movi $r1,#0x0
4a28: 10 10 00 00 sbi $r1,[$r0+#0x0]
4a2c: 3e 08 08 b0 addi.gp $r0,#0x8b0
4a30: 44 10 00 00 movi $r1,#0x0
4a34: 10 10 00 01 sbi $r1,[$r0+#0x1]
4a38: 3e 0f ff f0 addi.gp $r0,#-16
4a3c: 44 10 00 02 movi $r1,#0x2
4a40: 10 10 00 00 sbi $r1,[$r0+#0x0]
4a44: 3e 08 08 70 addi.gp $r0,#0x870
4a48: 00 00 00 00 lbi $r0,[$r0+#0x0]
4a4c: 54 10 00 ff andi $r1,$r0,#0xff
4a50: 44 00 00 80 movi $r0,#0x80
4a54: 4c 10 40 10 bne $r1,$r0,0x4a74
4a58: 3e 0f ff f2 addi.gp $r0,#-14
4a5c: 00 00 00 00 lbi $r0,[$r0+#0x0]
4a60: 54 10 00 ff andi $r1,$r0,#0xff
4a64: 3e 08 08 b0 addi.gp $r0,#0x8b0
4a68: 80 21 mov55 $r1,$r1
4a6a: 10 10 00 00 sbi $r1,[$r0+#0x0]
4a6e: 49 ff fd 19 jal 0x44a0 ; usb_tx_endpoint0()
4a72: d5 51 j8 0x4b14
4a74: 3e 08 08 70 addi.gp $r0,#0x870
4a78: 00 00 00 00 lbi $r0,[$r0+#0x0]
4a7c: 54 10 00 ff andi $r1,$r0,#0xff
4a80: 44 00 00 81 movi $r0,#0x81
4a84: 4c 10 40 05 bne $r1,$r0,0x4a8e
4a88: 49 ff fd 0c jal 0x44a0 ; usb_tx_endpoint0()
4a8c: d5 44 j8 0x4b14
4a8e: 3e 08 08 70 addi.gp $r0,#0x870
4a92: 00 00 00 00 lbi $r0,[$r0+#0x0]
4a96: 54 10 00 ff andi $r1,$r0,#0xff
4a9a: 44 00 00 82 movi $r0,#0x82
4a9e: 4c 10 40 37 bne $r1,$r0,0x4b0c
4aa2: 3e 08 08 70 addi.gp $r0,#0x870
4aa6: 00 00 00 04 lbi $r0,[$r0+#0x4]
4aaa: 54 00 00 ff andi $r0,$r0,#0xff
4aae: 54 00 00 7f andi $r0,$r0,#0x7f
4ab2: c8 0d bnez38 $r0,0x4acc
4ab4: 3e 0f ff f3 addi.gp $r0,#-13
4ab8: 00 00 00 00 lbi $r0,[$r0+#0x0]
4abc: 54 10 00 ff andi $r1,$r0,#0xff
4ac0: 3e 08 08 b0 addi.gp $r0,#0x8b0
4ac4: 80 21 mov55 $r1,$r1
4ac6: 10 10 00 00 sbi $r1,[$r0+#0x0]
4aca: d5 1e j8 0x4b06
4acc: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4ad0: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
4ad4: 3e 18 08 70 addi.gp $r1,#0x870
4ad8: 00 10 80 04 lbi $r1,[$r1+#0x4]
4adc: 54 10 80 ff andi $r1,$r1,#0xff
4ae0: 54 10 80 7f andi $r1,$r1,#0x7f
4ae4: 14 10 00 00 swi $r1,[$r0+#0x0]
4ae8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
4aec: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
4af0: 04 00 00 00 lwi $r0,[$r0+#0x0]
4af4: 54 00 00 40 andi $r0,$r0,#0x40
4af8: c0 07 beqz38 $r0,0x4b06
4afa: 3e 08 08 b0 addi.gp $r0,#0x8b0
4afe: 44 10 00 01 movi $r1,#0x1
4b02: 10 10 00 00 sbi $r1,[$r0+#0x0]
4b06: 49 ff fc cd jal 0x44a0 ; usb_tx_endpoint0()
4b0a: d5 05 j8 0x4b14
4b0c: 44 00 00 00 movi $r0,#0x0
4b10: 49 ff fb fc jal 0x4308 ; usb_stall(endpoint=$r0)
4b14: 51 fe 7f fc addi $sp,$fp,#-4
4b18: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4b1c: 4a 00 78 20 ret $lp
4b20: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4b24: 51 cf 80 04 addi $fp,$sp,#0x4
4b28: 3e 08 08 70 addi.gp $r0,#0x870
4b2c: 00 00 00 00 lbi $r0,[$r0+#0x0]
4b30: 54 00 00 ff andi $r0,$r0,#0xff
4b34: c8 1b bnez38 $r0,0x4b6a
4b36: 3e 08 08 70 addi.gp $r0,#0x870
4b3a: 00 00 00 02 lbi $r0,[$r0+#0x2]
4b3e: 54 10 00 ff andi $r1,$r0,#0xff
4b42: 44 00 00 01 movi $r0,#0x1
4b46: 4c 10 40 49 bne $r1,$r0,0x4bd8
4b4a: 3e 0f ff f2 addi.gp $r0,#-14
4b4e: 00 00 00 00 lbi $r0,[$r0+#0x0]
4b52: 54 00 00 ff andi $r0,$r0,#0xff
4b56: 54 00 00 fd andi $r0,$r0,#0xfd
4b5a: 3e 1f ff f2 addi.gp $r1,#-14
4b5e: 80 00 mov55 $r0,$r0
4b60: 10 00 80 00 sbi $r0,[$r1+#0x0]
4b64: 49 ff fc 9e jal 0x44a0 ; usb_tx_endpoint0()
4b68: d5 3c j8 0x4be0
4b6a: 3e 08 08 70 addi.gp $r0,#0x870
4b6e: 00 00 00 00 lbi $r0,[$r0+#0x0]
4b72: 54 10 00 ff andi $r1,$r0,#0xff
4b76: 44 00 00 02 movi $r0,#0x2
4b7a: 4c 10 40 2f bne $r1,$r0,0x4bd8
4b7e: 3e 08 08 70 addi.gp $r0,#0x870
4b82: 00 00 00 02 lbi $r0,[$r0+#0x2]
4b86: 54 00 00 ff andi $r0,$r0,#0xff
4b8a: c8 27 bnez38 $r0,0x4bd8
4b8c: 3e 08 08 70 addi.gp $r0,#0x870
4b90: 00 00 00 04 lbi $r0,[$r0+#0x4]
4b94: 54 00 00 ff andi $r0,$r0,#0xff
4b98: 54 00 00 7f andi $r0,$r0,#0x7f
4b9c: c8 11 bnez38 $r0,0x4bbe
4b9e: 3e 0f ff f3 addi.gp $r0,#-13
4ba2: 00 00 00 00 lbi $r0,[$r0+#0x0]
4ba6: 54 00 00 ff andi $r0,$r0,#0xff
4baa: 54 00 00 fe andi $r0,$r0,#0xfe
4bae: 3e 1f ff f3 addi.gp $r1,#-13
4bb2: 80 00 mov55 $r0,$r0
4bb4: 10 00 80 00 sbi $r0,[$r1+#0x0]
4bb8: 49 ff fc 74 jal 0x44a0 ; usb_tx_endpoint0()
4bbc: d5 12 j8 0x4be0
4bbe: 3e 08 08 70 addi.gp $r0,#0x870
4bc2: 00 00 00 04 lbi $r0,[$r0+#0x4]
4bc6: 54 00 00 ff andi $r0,$r0,#0xff
4bca: 54 00 00 7f andi $r0,$r0,#0x7f
4bce: 49 ff fb c5 jal 0x4358 ; usb_stall_clear(endpoint=$r0) (this is the only caller!)
4bd2: 49 ff fc 67 jal 0x44a0 ; usb_tx_endpoint0()
4bd6: d5 05 j8 0x4be0
4bd8: 44 00 00 00 movi $r0,#0x0
4bdc: 49 ff fb 96 jal 0x4308 ; usb_stall(endpoint=$r0)
4be0: 51 fe 7f fc addi $sp,$fp,#-4
4be4: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4be8: 4a 00 78 20 ret $lp
4bec: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4bf0: 51 cf 80 04 addi $fp,$sp,#0x4
4bf4: 3e 08 08 70 addi.gp $r0,#0x870
4bf8: 00 00 00 00 lbi $r0,[$r0+#0x0]
4bfc: 54 00 00 ff andi $r0,$r0,#0xff
4c00: c8 1d bnez38 $r0,0x4c3a
4c02: 3e 08 08 70 addi.gp $r0,#0x870
4c06: 00 00 00 02 lbi $r0,[$r0+#0x2]
4c0a: 54 10 00 ff andi $r1,$r0,#0xff
4c0e: 44 00 00 01 movi $r0,#0x1
4c12: 4c 10 40 4d bne $r1,$r0,0x4cac ; goto stall0:
4c16: 3e 0f ff f2 addi.gp $r0,#-14
4c1a: 00 00 00 00 lbi $r0,[$r0+#0x0]
4c1e: 54 00 00 ff andi $r0,$r0,#0xff
4c22: 58 00 00 02 ori $r0,$r0,#0x2
4c26: 54 10 00 ff andi $r1,$r0,#0xff
4c2a: 3e 0f ff f2 addi.gp $r0,#-14
4c2e: 80 21 mov55 $r1,$r1
4c30: 10 10 00 00 sbi $r1,[$r0+#0x0]
4c34: 49 ff fc 36 jal 0x44a0 ; usb_tx_endpoint0()
4c38: d5 3e j8 0x4cb4 ; goto out
4c3a: 3e 08 08 70 addi.gp $r0,#0x870
4c3e: 00 00 00 00 lbi $r0,[$r0+#0x0]
4c42: 54 10 00 ff andi $r1,$r0,#0xff
4c46: 44 00 00 02 movi $r0,#0x2
4c4a: 4c 10 40 31 bne $r1,$r0,0x4cac ; if ... goto stall0:
4c4e: 3e 08 08 70 addi.gp $r0,#0x870
4c52: 00 00 00 02 lbi $r0,[$r0+#0x2]
4c56: 54 00 00 ff andi $r0,$r0,#0xff
4c5a: c8 29 bnez38 $r0,0x4cac ; if ... goto stall0:
4c5c: 3e 08 08 70 addi.gp $r0,#0x870
4c60: 00 00 00 04 lbi $r0,[$r0+#0x4]
4c64: 54 00 00 ff andi $r0,$r0,#0xff
4c68: 54 00 00 7f andi $r0,$r0,#0x7f
4c6c: c8 13 bnez38 $r0,0x4c92
4c6e: 3e 0f ff f3 addi.gp $r0,#-13
4c72: 00 00 00 00 lbi $r0,[$r0+#0x0]
4c76: 54 00 00 ff andi $r0,$r0,#0xff
4c7a: 58 00 00 01 ori $r0,$r0,#0x1
4c7e: 54 10 00 ff andi $r1,$r0,#0xff
4c82: 3e 0f ff f3 addi.gp $r0,#-13
4c86: 80 21 mov55 $r1,$r1
4c88: 10 10 00 00 sbi $r1,[$r0+#0x0]
4c8c: 49 ff fc 0a jal 0x44a0 ; usb_tx_endpoint0()
4c90: d5 12 j8 0x4cb4 ; goto out
4c92: 3e 08 08 70 addi.gp $r0,#0x870
4c96: 00 00 00 04 lbi $r0,[$r0+#0x4]
4c9a: 54 00 00 ff andi $r0,$r0,#0xff
4c9e: 54 00 00 7f andi $r0,$r0,#0x7f
4ca2: 49 ff fb 33 jal 0x4308 ; usb_stall(endpoint=$r0)
4ca6: 49 ff fb fd jal 0x44a0 ; usb_tx_endpoint0()
4caa: d5 05 j8 0x4cb4 ; goto out
4cac: 44 00 00 00 movi $r0,#0x0 ;label stall0:
4cb0: 49 ff fb 2c jal 0x4308 ; usb_stall(endpoint=0)
4cb4: 51 fe 7f fc addi $sp,$fp,#-4 ;label out:
4cb8: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4cbc: 4a 00 78 20 ret $lp
4cc0: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4cc4: 51 cf 80 04 addi $fp,$sp,#0x4
4cc8: 3e 0f ff ee addi.gp $r0,#-18
4ccc: 00 00 00 00 lbi $r0,[$r0+#0x0]
4cd0: 54 00 00 ff andi $r0,$r0,#0xff
4cd4: 44 1f ff 80 movi $r1,#-128
4cd8: 40 00 04 04 or $r0,$r0,$r1
4cdc: 54 10 00 ff andi $r1,$r0,#0xff
4ce0: 3e 0f ff ee addi.gp $r0,#-18
4ce4: 80 21 mov55 $r1,$r1
4ce6: 10 10 00 00 sbi $r1,[$r0+#0x0]
4cea: 3e 08 08 70 addi.gp $r0,#0x870
4cee: 00 00 00 02 lbi $r0,[$r0+#0x2]
4cf2: 54 10 00 ff andi $r1,$r0,#0xff
4cf6: 3e 0f ff f1 addi.gp $r0,#-15
4cfa: 80 21 mov55 $r1,$r1
4cfc: 10 10 00 00 sbi $r1,[$r0+#0x0]
4d00: 49 ff fb d0 jal 0x44a0 ; usb_tx_endpoint0()
4d04: 51 fe 7f fc addi $sp,$fp,#-4
4d08: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4d0c: 4a 00 78 20 ret $lp
4d10: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4d14: 51 cf 80 04 addi $fp,$sp,#0x4
4d18: 3e 08 08 70 addi.gp $r0,#0x870
4d1c: 00 00 00 00 lbi $r0,[$r0+#0x0]
4d20: 54 10 00 ff andi $r1,$r0,#0xff
4d24: 44 00 00 80 movi $r0,#0x80
4d28: 4c 10 40 6a bne $r1,$r0,0x4dfc
4d2c: 3e 08 08 70 addi.gp $r0,#0x870
4d30: 00 00 00 03 lbi $r0,[$r0+#0x3]
4d34: 54 10 00 ff andi $r1,$r0,#0xff
4d38: 44 00 00 01 movi $r0,#0x1
4d3c: 4c 10 40 08 bne $r1,$r0,0x4d4c
4d40: 44 00 d3 28 movi $r0,#0xd328
4d44: 49 ff fb ea jal 0x4518 ; usb_tx_pktbuf()
4d48: 48 00 00 df j 0x4f06 ; pop {$fp, $lp} and return
4d4c: 3e 08 08 70 addi.gp $r0,#0x870
4d50: 00 00 00 03 lbi $r0,[$r0+#0x3]
4d54: 54 10 00 ff andi $r1,$r0,#0xff
4d58: 44 00 00 02 movi $r0,#0x2
4d5c: 4c 10 40 1a bne $r1,$r0,0x4d90
4d60: 44 00 d3 3c movi $r0,#0xd33c
4d64: 00 00 00 02 lbi $r0,[$r0+#0x2]
4d68: 54 00 00 ff andi $r0,$r0,#0xff
4d6c: 80 20 mov55 $r1,$r0
4d6e: 44 00 d3 3c movi $r0,#0xd33c
4d72: 00 00 00 03 lbi $r0,[$r0+#0x3]
4d76: 54 00 00 ff andi $r0,$r0,#0xff
4d7a: 40 00 20 08 slli $r0,$r0,#0x8
4d7e: 40 00 80 00 add $r0,$r1,$r0
4d82: 80 20 mov55 $r1,$r0
4d84: 44 00 d3 3c movi $r0,#0xd33c
4d88: 49 ff fc 7e jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4d8c: 48 00 00 bd j 0x4f06 ; pop {$fp, $lp} and return
4d90: 3e 08 08 70 addi.gp $r0,#0x870
4d94: 00 00 00 03 lbi $r0,[$r0+#0x3]
4d98: 54 10 00 ff andi $r1,$r0,#0xff
4d9c: 44 00 00 03 movi $r0,#0x3
4da0: 4c 10 40 ac bne $r1,$r0,0x4ef8
4da4: 3e 08 08 70 addi.gp $r0,#0x870
4da8: 00 00 00 02 lbi $r0,[$r0+#0x2]
4dac: 54 00 00 ff andi $r0,$r0,#0xff
4db0: 5c f0 00 04 slti $r15,$r0,#0x4
4db4: 4e f2 00 a3 beqz $r15,0x4efa
4db8: 3e 08 08 70 addi.gp $r0,#0x870
4dbc: 00 00 00 02 lbi $r0,[$r0+#0x2]
4dc0: 54 00 00 ff andi $r0,$r0,#0xff
4dc4: 40 00 08 08 slli $r0,$r0,#0x2
4dc8: 3e 1f fe 98 addi.gp $r1,#-360
4dcc: 40 00 04 00 add $r0,$r0,$r1
4dd0: 04 00 00 00 lwi $r0,[$r0+#0x0]
4dd4: 4e 02 00 94 beqz $r0,0x4efc
4dd8: 3e 08 08 70 addi.gp $r0,#0x870
4ddc: 00 00 00 02 lbi $r0,[$r0+#0x2]
4de0: 54 00 00 ff andi $r0,$r0,#0xff
4de4: 40 00 08 08 slli $r0,$r0,#0x2
4de8: 3e 1f fe 98 addi.gp $r1,#-360
4dec: 40 00 04 00 add $r0,$r0,$r1
4df0: 04 00 00 00 lwi $r0,[$r0+#0x0]
4df4: 49 ff fb 92 jal 0x4518 ; usb_tx_pktbuf()
4df8: 48 00 00 87 j 0x4f06 ; pop {$fp, $lp} and return
4dfc: 3e 08 08 70 addi.gp $r0,#0x870
4e00: 00 00 00 00 lbi $r0,[$r0+#0x0]
4e04: 54 10 00 ff andi $r1,$r0,#0xff
4e08: 44 00 00 81 movi $r0,#0x81
4e0c: 4c 10 40 79 bne $r1,$r0,0x4efe
4e10: 3e 08 08 70 addi.gp $r0,#0x870
4e14: 00 00 00 03 lbi $r0,[$r0+#0x3]
4e18: 54 10 00 ff andi $r1,$r0,#0xff
4e1c: 44 00 00 21 movi $r0,#0x21
4e20: 4c 10 40 32 bne $r1,$r0,0x4e84
4e24: 3e 08 08 70 addi.gp $r0,#0x870
4e28: 00 00 00 04 lbi $r0,[$r0+#0x4]
4e2c: 54 00 00 ff andi $r0,$r0,#0xff
4e30: c8 08 bnez38 $r0,0x4e40
4e32: 44 00 d3 4e movi $r0,#0xd34e
4e36: 44 10 00 09 movi $r1,#0x9
4e3a: 49 ff fc 25 jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4e3e: d5 64 j8 0x4f06 ; pop {$fp, $lp} and return
4e40: 3e 08 08 70 addi.gp $r0,#0x870
4e44: 00 00 00 04 lbi $r0,[$r0+#0x4]
4e48: 54 10 00 ff andi $r1,$r0,#0xff
4e4c: 44 00 00 01 movi $r0,#0x1
4e50: 4c 10 40 09 bne $r1,$r0,0x4e62
4e54: 44 00 d3 67 movi $r0,#0xd367
4e58: 44 10 00 09 movi $r1,#0x9
4e5c: 49 ff fc 14 jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4e60: d5 53 j8 0x4f06 ; pop {$fp, $lp} and return
4e62: 3e 08 08 70 addi.gp $r0,#0x870
4e66: 00 00 00 04 lbi $r0,[$r0+#0x4]
4e6a: 54 10 00 ff andi $r1,$r0,#0xff
4e6e: 44 00 00 02 movi $r0,#0x2
4e72: 4c 10 40 46 bne $r1,$r0,0x4efe
4e76: 44 00 d3 87 movi $r0,#0xd387
4e7a: 44 10 00 09 movi $r1,#0x9
4e7e: 49 ff fc 03 jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4e82: d5 42 j8 0x4f06 ; pop {$fp, $lp} and return
4e84: 3e 08 08 70 addi.gp $r0,#0x870
4e88: 00 00 00 03 lbi $r0,[$r0+#0x3]
4e8c: 54 10 00 ff andi $r1,$r0,#0xff
4e90: 44 00 00 22 movi $r0,#0x22
4e94: 4c 10 40 35 bne $r1,$r0,0x4efe
4e98: 3e 08 08 70 addi.gp $r0,#0x870
4e9c: 00 00 00 04 lbi $r0,[$r0+#0x4]
4ea0: 54 00 00 ff andi $r0,$r0,#0xff
4ea4: c8 08 bnez38 $r0,0x4eb4
4ea6: 44 00 d3 f8 movi $r0,#0xd3f8
4eaa: 44 10 00 40 movi $r1,#0x40
4eae: 49 ff fb eb jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4eb2: d5 2a j8 0x4f06 ; pop {$fp, $lp} and return
4eb4: 3e 08 08 70 addi.gp $r0,#0x870
4eb8: 00 00 00 04 lbi $r0,[$r0+#0x4]
4ebc: 54 10 00 ff andi $r1,$r0,#0xff
4ec0: 44 00 00 01 movi $r0,#0x1
4ec4: 4c 10 40 09 bne $r1,$r0,0x4ed6
4ec8: 44 00 d4 38 movi $r0,#0xd438
4ecc: 44 10 00 22 movi $r1,#0x22
4ed0: 49 ff fb da jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4ed4: d5 19 j8 0x4f06 ; pop {$fp, $lp} and return
4ed6: 3e 08 08 70 addi.gp $r0,#0x870
4eda: 00 00 00 04 lbi $r0,[$r0+#0x4]
4ede: 54 10 00 ff andi $r1,$r0,#0xff
4ee2: 44 00 00 02 movi $r0,#0x2
4ee6: 4c 10 40 0c bne $r1,$r0,0x4efe
4eea: 44 00 d4 5c movi $r0,#0xd45c
4eee: 44 10 00 cb movi $r1,#0xcb
4ef2: 49 ff fb c9 jal 0x4684 ; usb_tx_data(addr=$r0, size=$r1)
4ef6: d5 08 j8 0x4f06 ; pop {$fp, $lp} and return
4ef8: d5 03 j8 0x4efe
4efa: d5 02 j8 0x4efe
4efc: d5 01 j8 0x4efe
; ----------
4efe: 44 00 00 00 movi $r0,#0x0
4f02: 49 ff fa 03 jal 0x4308 ; usb_stall(endpoint=0)
; ---------- 0x4f06: pop {$fp, $lp} and return to $lp
4f06: 51 fe 7f fc addi $sp,$fp,#-4
4f0a: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4f0e: 4a 00 78 20 ret $lp
4f12: 92 00 nop16
4f14: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4f18: 51 cf 80 04 addi $fp,$sp,#0x4
4f1c: 3e 08 08 70 addi.gp $r0,#0x870
4f20: 00 00 00 00 lbi $r0,[$r0+#0x0]
4f24: 54 10 00 ff andi $r1,$r0,#0xff
4f28: 44 00 00 80 movi $r0,#0x80
4f2c: 4c 10 40 16 bne $r1,$r0,0x4f58
4f30: 3e 0f ff f4 addi.gp $r0,#-12
4f34: 00 00 00 00 lbi $r0,[$r0+#0x0]
4f38: 54 10 00 ff andi $r1,$r0,#0xff
4f3c: 3e 08 08 b0 addi.gp $r0,#0x8b0
4f40: 80 21 mov55 $r1,$r1
4f42: 10 10 00 00 sbi $r1,[$r0+#0x0]
4f46: 3e 0f ff f0 addi.gp $r0,#-16
4f4a: 44 10 00 01 movi $r1,#0x1
4f4e: 10 10 00 00 sbi $r1,[$r0+#0x0]
4f52: 49 ff fa a7 jal 0x44a0 ; usb_tx_endpoint0()
4f56: d5 05 j8 0x4f60
4f58: 44 00 00 00 movi $r0,#0x0
4f5c: 49 ff f9 d6 jal 0x4308 ; usb_stall(endpoint=$r0)
4f60: 51 fe 7f fc addi $sp,$fp,#-4
4f64: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4f68: 4a 00 78 20 ret $lp
4f6c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
4f70: 51 cf 80 04 addi $fp,$sp,#0x4
4f74: 3e 08 08 70 addi.gp $r0,#0x870
4f78: 00 00 00 00 lbi $r0,[$r0+#0x0]
4f7c: 54 00 00 ff andi $r0,$r0,#0xff
4f80: c8 62 bnez38 $r0,0x5044 ; if pktbuf[0] != 0: goto out
4f82: 3e 08 08 70 addi.gp $r0,#0x870
4f86: 00 00 00 02 lbi $r0,[$r0+#0x2] ; pktbuf+2 (lastresult?)
4f8a: 54 10 00 ff andi $r1,$r0,#0xff
4f8e: 3e 0f ff f4 addi.gp $r0,#-12 ;
4f92: 80 21 mov55 $r1,$r1
4f94: 10 10 00 00 sbi $r1,[$r0+#0x0] ; save lastresult to $gp-12
4f98: 3e 0f ff f4 addi.gp $r0,#-12
4f9c: 00 00 00 00 lbi $r0,[$r0+#0x0] ; $r0 = $r1
4fa0: 54 10 00 ff andi $r1,$r0,#0xff
4fa4: 44 00 00 01 movi $r0,#0x1
4fa8: 4c 10 40 22 bne $r1,$r0,0x4fec ; if lastresult == 0:
4fac: 3e 0f ff ee addi.gp $r0,#-18
4fb0: 00 00 00 00 lbi $r0,[$r0+#0x0] ;
4fb4: 54 00 00 ff andi $r0,$r0,#0xff
4fb8: 58 00 00 40 ori $r0,$r0,#0x40 ;
4fbc: 54 10 00 ff andi $r1,$r0,#0xff
4fc0: 3e 0f ff ee addi.gp $r0,#-18
4fc4: 80 21 mov55 $r1,$r1
4fc6: 10 10 00 00 sbi $r1,[$r0+#0x0] ; set bit 6 in [$gp-18]
4fca: 44 00 00 01 movi $r0,#0x1
4fce: 49 ff fc 9f jal 0x490c ; usb_tx_init(endpoint=1)
4fd2: 44 00 00 02 movi $r0,#0x2
4fd6: 49 ff fc 9b jal 0x490c ; usb_tx_init(endpoint=2)
4fda: 44 00 00 03 movi $r0,#0x3
4fde: 49 ff fc 97 jal 0x490c ; usb_tx_init(endpoint=3)
4fe2: 44 00 00 04 movi $r0,#0x4
4fe6: 49 ff fc c5 jal 0x4970 ; usb_rx_init(endpoint=4)
4fea: d5 2b j8 0x5040 ;
4fec: 3e 0f ff ee addi.gp $r0,#-18 ; else:
4ff0: 00 00 00 00 lbi $r0,[$r0+#0x0]
4ff4: 54 00 00 ff andi $r0,$r0,#0xff
4ff8: 54 00 00 bf andi $r0,$r0,#0xbf
4ffc: 3e 1f ff ee addi.gp $r1,#-18
5000: 80 00 mov55 $r0,$r0
5002: 10 00 80 00 sbi $r0,[$r1+#0x0] ; clear bit 6 in [$gp-18]
5006: 3e 0f ff f2 addi.gp $r0,#-14
500a: 00 00 00 00 lbi $r0,[$r0+#0x0]
500e: 54 00 00 ff andi $r0,$r0,#0xff
5012: 54 00 00 df andi $r0,$r0,#0xdf
5016: 3e 1f ff f2 addi.gp $r1,#-14
501a: 80 00 mov55 $r0,$r0
501c: 10 00 80 00 sbi $r0,[$r1+#0x0] ; clear bit 5 in [$gp-14]
5020: 44 00 00 01 movi $r0,#0x1
5024: 49 ff fc d8 jal 0x49d4 ; usb_disable_endpoint(endpoint=$r0)
5028: 44 00 00 02 movi $r0,#0x2
502c: 49 ff fc d4 jal 0x49d4 ; usb_disable_endpoint(endpoint=$r0)
5030: 44 00 00 03 movi $r0,#0x3
5034: 49 ff fc d0 jal 0x49d4 ; usb_disable_endpoint(endpoint=$r0)
5038: 44 00 00 04 movi $r0,#0x4
503c: 49 ff fc cc jal 0x49d4 ; usb_disable_endpoint(endpoint=$r0)
; endif
5040: 49 ff fa 30 jal 0x44a0 ; usb_tx_endpoint0()
5044: 51 fe 7f fc addi $sp,$fp,#-4 ; label out:
5048: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
504c: 4a 00 78 20 ret $lp
5050: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5054: 51 cf 80 04 addi $fp,$sp,#0x4
5058: 44 00 00 00 movi $r0,#0x0
505c: 49 ff f9 56 jal 0x4308 ; usb_stall(endpoint=$r0)
5060: 51 fe 7f fc addi $sp,$fp,#-4
5064: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5068: 4a 00 78 20 ret $lp
506c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5070: 51 cf 80 04 addi $fp,$sp,#0x4
5074: 3e 08 08 70 addi.gp $r0,#0x870
5078: 00 00 00 00 lbi $r0,[$r0+#0x0]
507c: 54 10 00 ff andi $r1,$r0,#0xff
5080: 44 00 00 a1 movi $r0,#0xa1
5084: 4c 10 40 38 bne $r1,$r0,0x50f4
5088: 3e 08 08 70 addi.gp $r0,#0x870
508c: 00 00 00 04 lbi $r0,[$r0+#0x4]
5090: 54 00 00 ff andi $r0,$r0,#0xff
5094: c0 15 beqz38 $r0,0x50be
5096: 3e 08 08 70 addi.gp $r0,#0x870
509a: 00 00 00 04 lbi $r0,[$r0+#0x4]
509e: 54 10 00 ff andi $r1,$r0,#0xff
50a2: 44 00 00 01 movi $r0,#0x1
50a6: 4c 10 00 0c beq $r1,$r0,0x50be
50aa: 3e 08 08 70 addi.gp $r0,#0x870
50ae: 00 00 00 04 lbi $r0,[$r0+#0x4]
50b2: 54 10 00 ff andi $r1,$r0,#0xff
50b6: 44 00 00 02 movi $r0,#0x2
50ba: 4c 10 40 1d bne $r1,$r0,0x50f4
50be: 3e 08 08 70 addi.gp $r0,#0x870
50c2: 00 00 00 04 lbi $r0,[$r0+#0x4]
50c6: 54 00 00 ff andi $r0,$r0,#0xff
50ca: 80 20 mov55 $r1,$r0
50cc: 3e 08 05 dc addi.gp $r0,#0x5dc
50d0: 38 00 06 02 lw $r0,[$r0+($r1<<#0x2)]
50d4: 54 10 00 ff andi $r1,$r0,#0xff
50d8: 3e 08 08 b0 addi.gp $r0,#0x8b0
50dc: 80 21 mov55 $r1,$r1
50de: 10 10 00 00 sbi $r1,[$r0+#0x0]
50e2: 3e 0f ff f0 addi.gp $r0,#-16
50e6: 44 10 00 01 movi $r1,#0x1
50ea: 10 10 00 00 sbi $r1,[$r0+#0x0]
50ee: 49 ff f9 d9 jal 0x44a0 ; usb_tx_endpoint0()
50f2: d5 05 j8 0x50fc
50f4: 44 00 00 00 movi $r0,#0x0
50f8: 49 ff f9 08 jal 0x4308 ; usb_stall(endpoint=$r0)
50fc: 51 fe 7f fc addi $sp,$fp,#-4
5100: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5104: 4a 00 78 20 ret $lp
5108: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
510c: 51 cf 80 04 addi $fp,$sp,#0x4
5110: 3e 08 08 70 addi.gp $r0,#0x870
5114: 00 00 00 00 lbi $r0,[$r0+#0x0]
5118: 54 10 00 ff andi $r1,$r0,#0xff
511c: 44 00 00 a1 movi $r0,#0xa1
5120: 4c 10 40 1e bne $r1,$r0,0x515c
5124: 3e 08 08 70 addi.gp $r0,#0x870
5128: 00 00 00 04 lbi $r0,[$r0+#0x4]
512c: 54 00 00 ff andi $r0,$r0,#0xff
5130: 4e 03 00 16 bnez $r0,0x515c
5134: 3e 0f ff ec addi.gp $r0,#-20
5138: 00 00 00 00 lbi $r0,[$r0+#0x0]
513c: 54 10 00 ff andi $r1,$r0,#0xff
5140: 3e 08 08 b0 addi.gp $r0,#0x8b0
5144: 80 21 mov55 $r1,$r1
5146: 10 10 00 00 sbi $r1,[$r0+#0x0]
514a: 3e 0f ff f0 addi.gp $r0,#-16
514e: 44 10 00 01 movi $r1,#0x1
5152: 10 10 00 00 sbi $r1,[$r0+#0x0]
5156: 49 ff f9 a5 jal 0x44a0 ; usb_tx_endpoint0()
515a: d5 05 j8 0x5164
515c: 44 00 00 00 movi $r0,#0x0
5160: 49 ff f8 d4 jal 0x4308 ; usb_stall(endpoint=$r0)
5164: 51 fe 7f fc addi $sp,$fp,#-4
5168: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
516c: 4a 00 78 20 ret $lp
5170: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5174: 51 cf 80 04 addi $fp,$sp,#0x4
5178: 3e 08 08 70 addi.gp $r0,#0x870
517c: 00 00 00 00 lbi $r0,[$r0+#0x0]
5180: 54 10 00 ff andi $r1,$r0,#0xff
5184: 44 00 00 21 movi $r0,#0x21
5188: 4c 10 40 24 bne $r1,$r0,0x51d0
518c: 3e 08 08 70 addi.gp $r0,#0x870
5190: 00 00 00 03 lbi $r0,[$r0+#0x3]
5194: 54 10 00 ff andi $r1,$r0,#0xff
5198: 44 00 00 02 movi $r0,#0x2
519c: 4c 10 40 1a bne $r1,$r0,0x51d0
51a0: 3e 08 08 70 addi.gp $r0,#0x870
51a4: 00 00 00 04 lbi $r0,[$r0+#0x4]
51a8: 54 00 00 ff andi $r0,$r0,#0xff
51ac: 4e 03 00 12 bnez $r0,0x51d0
51b0: 3e 0f ff ed addi.gp $r0,#-19
51b4: 00 00 00 00 lbi $r0,[$r0+#0x0]
51b8: 54 00 00 ff andi $r0,$r0,#0xff
51bc: 58 00 00 20 ori $r0,$r0,#0x20
51c0: 54 10 00 ff andi $r1,$r0,#0xff
51c4: 3e 0f ff ed addi.gp $r0,#-19
51c8: 80 21 mov55 $r1,$r1
51ca: 10 10 00 00 sbi $r1,[$r0+#0x0]
51ce: d5 05 j8 0x51d8
51d0: 44 00 00 00 movi $r0,#0x0
51d4: 49 ff f8 9a jal 0x4308 ; usb_stall(endpoint=$r0)
51d8: 51 fe 7f fc addi $sp,$fp,#-4
51dc: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
51e0: 4a 00 78 20 ret $lp
51e4: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
51e8: 51 cf 80 04 addi $fp,$sp,#0x4
51ec: 3e 08 08 70 addi.gp $r0,#0x870
51f0: 00 00 00 00 lbi $r0,[$r0+#0x0]
51f4: 54 10 00 ff andi $r1,$r0,#0xff
51f8: 44 00 00 21 movi $r0,#0x21
51fc: 4c 10 40 32 bne $r1,$r0,0x5260
5200: 3e 08 08 70 addi.gp $r0,#0x870
5204: 00 00 00 04 lbi $r0,[$r0+#0x4]
5208: 54 00 00 ff andi $r0,$r0,#0xff
520c: c0 15 beqz38 $r0,0x5236
520e: 3e 08 08 70 addi.gp $r0,#0x870
5212: 00 00 00 04 lbi $r0,[$r0+#0x4]
5216: 54 10 00 ff andi $r1,$r0,#0xff
521a: 44 00 00 01 movi $r0,#0x1
521e: 4c 10 00 0c beq $r1,$r0,0x5236
5222: 3e 08 08 70 addi.gp $r0,#0x870
5226: 00 00 00 04 lbi $r0,[$r0+#0x4]
522a: 54 10 00 ff andi $r1,$r0,#0xff
522e: 44 00 00 02 movi $r0,#0x2
5232: 4c 10 40 17 bne $r1,$r0,0x5260
5236: 3e 08 08 70 addi.gp $r0,#0x870
523a: 00 00 00 04 lbi $r0,[$r0+#0x4]
523e: 54 00 00 ff andi $r0,$r0,#0xff
5242: 80 20 mov55 $r1,$r0
5244: 3e 08 08 70 addi.gp $r0,#0x870
5248: 00 00 00 03 lbi $r0,[$r0+#0x3]
524c: 54 00 00 ff andi $r0,$r0,#0xff
5250: 80 40 mov55 $r2,$r0
5252: 3e 08 05 dc addi.gp $r0,#0x5dc
5256: 38 20 06 0a sw $r2,[$r0+($r1<<#0x2)]
525a: 49 ff f9 23 jal 0x44a0 ; usb_tx_endpoint0()
525e: d5 05 j8 0x5268
5260: 44 00 00 00 movi $r0,#0x0
5264: 49 ff f8 52 jal 0x4308 ; usb_stall(endpoint=0)
5268: 51 fe 7f fc addi $sp,$fp,#-4
526c: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5270: 4a 00 78 20 ret $lp
5274: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5278: 51 cf 80 04 addi $fp,$sp,#0x4
527c: 3e 08 08 70 addi.gp $r0,#0x870
5280: 00 00 00 00 lbi $r0,[$r0+#0x0]
5284: 54 10 00 ff andi $r1,$r0,#0xff
5288: 44 00 00 21 movi $r0,#0x21
528c: 4c 10 40 18 bne $r1,$r0,0x52bc
5290: 3e 08 08 70 addi.gp $r0,#0x870
5294: 00 00 00 04 lbi $r0,[$r0+#0x4]
5298: 54 00 00 ff andi $r0,$r0,#0xff
529c: 4e 03 00 10 bnez $r0,0x52bc
52a0: 3e 08 08 70 addi.gp $r0,#0x870
52a4: 00 00 00 02 lbi $r0,[$r0+#0x2]
52a8: 54 10 00 ff andi $r1,$r0,#0xff
52ac: 3e 0f ff ec addi.gp $r0,#-20
52b0: 80 21 mov55 $r1,$r1
52b2: 10 10 00 00 sbi $r1,[$r0+#0x0]
52b6: 49 ff f8 f5 jal 0x44a0 ; usb_tx_endpoint0()
52ba: d5 05 j8 0x52c4
52bc: 44 00 00 00 movi $r0,#0x0
52c0: 49 ff f8 24 jal 0x4308 ; usb_stall(endpoint=0)
52c4: 51 fe 7f fc addi $sp,$fp,#-4
52c8: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
52cc: 4a 00 78 20 ret $lp
52d0: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
52d4: 51 cf 80 04 addi $fp,$sp,#0x4
52d8: 51 ff ff f8 addi $sp,$sp,#-8
52dc: 3e 08 08 70 addi.gp $r0,#0x870
52e0: 00 00 00 00 lbi $r0,[$r0+#0x0]
52e4: 54 00 00 ff andi $r0,$r0,#0xff
52e8: 54 00 00 60 andi $r0,$r0,#0x60
52ec: 80 00 mov55 $r0,$r0
52ee: 10 0e 7f fb sbi $r0,[$fp+#-5]
52f2: 3e 0f ff ee addi.gp $r0,#-18
52f6: 00 00 00 00 lbi $r0,[$r0+#0x0]
52fa: 54 00 00 ff andi $r0,$r0,#0xff
52fe: 54 00 00 c2 andi $r0,$r0,#0xc2
5302: 3e 1f ff ee addi.gp $r1,#-18
5306: 80 00 mov55 $r0,$r0
5308: 10 00 80 00 sbi $r0,[$r1+#0x0]
530c: 00 0e 7f fb lbi $r0,[$fp+#-5]
5310: 54 00 00 ff andi $r0,$r0,#0xff
5314: 4e 03 00 11 bnez $r0,0x5336
5318: 3e 08 08 70 addi.gp $r0,#0x870
531c: 00 00 00 01 lbi $r0,[$r0+#0x1]
5320: 54 00 00 ff andi $r0,$r0,#0xff
5324: 54 10 00 0f andi $r1,$r0,#0xf
5328: 3e 0f fe a8 addi.gp $r0,#-344
532c: 38 00 06 02 lw $r0,[$r0+($r1<<#0x2)]
5330: 4b e0 00 01 jral $lp,$r0
5334: d5 1c j8 0x536c
5336: 00 0e 7f fb lbi $r0,[$fp+#-5]
533a: 54 10 00 ff andi $r1,$r0,#0xff
533e: 44 00 00 20 movi $r0,#0x20
5342: 4c 10 40 11 bne $r1,$r0,0x5364
5346: 3e 08 08 70 addi.gp $r0,#0x870
534a: 00 00 00 01 lbi $r0,[$r0+#0x1]
534e: 54 00 00 ff andi $r0,$r0,#0xff
5352: 54 10 00 0f andi $r1,$r0,#0xf
5356: 3e 0f fe e8 addi.gp $r0,#-280
535a: 38 00 06 02 lw $r0,[$r0+($r1<<#0x2)]
535e: 4b e0 00 01 jral $lp,$r0
5362: d5 05 j8 0x536c
5364: 44 00 00 00 movi $r0,#0x0
5368: 49 ff f7 d0 jal 0x4308 ; usb_stall(endpoint=$r0)
536c: 51 fe 7f fc addi $sp,$fp,#-4
5370: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5374: 4a 00 78 20 ret $lp
; ---------- 0x5378: usb_rx_ep0() (see also 0x57bc, usb_rx_bytes)
5378: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
537c: 51 cf 80 00 addi $fp,$sp,#0x0
5380: 51 ff ff f4 addi $sp,$sp,#-12
5384: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5388: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
538c: 44 10 00 00 movi $r1,#0x0 ;
5390: 14 10 00 00 swi $r1,[$r0+#0x0] ; send 0 to EPINDEX: select endpoint 0
5394: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5398: 58 00 08 70 ori $r0,$r0,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
539c: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = RXSTAT
53a0: 80 00 mov55 $r0,$r0 ;
53a2: 10 0e 7f f9 sbi $r0,[$fp+#-7] ; save RXSTAT at [$fp-7]
53a6: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
53aa: 58 00 08 6c ori $r0,$r0,#0x86c ; USB offset 0x6c: RXCNT, Receive FIFO Byte Count Register
53ae: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = RXCNT
53b2: 80 00 mov55 $r0,$r0 ;
53b4: 10 0e 7f fa sbi $r0,[$fp+#-6] ; [$fp-6] = RXCNT
53b8: 00 0e 7f f9 lbi $r0,[$fp+#-7] ; $r0 = RXSTAT
53bc: 54 00 00 ff andi $r0,$r0,#0xff ;
53c0: 54 00 00 01 andi $r0,$r0,#0x1 ;
53c4: 54 00 00 ff andi $r0,$r0,#0xff ;
53c8: 4e 02 00 9a beqz $r0,0x54fc ; if RXSTAT bit 0 (RXACK) is unset: go to NO_RXACK
53cc: 00 0e 7f f9 lbi $r0,[$fp+#-7]
53d0: 54 00 00 ff andi $r0,$r0,#0xff
53d4: 54 00 00 40 andi $r0,$r0,#0x40
53d8: c0 4b beqz38 $r0,0x546e
53da: 00 0e 7f f9 lbi $r0,[$fp+#-7]
53de: 54 00 00 ff andi $r0,$r0,#0xff
53e2: 54 00 00 10 andi $r0,$r0,#0x10
53e6: c0 3b beqz38 $r0,0x545c
53e8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
53ec: 58 00 08 70 ori $r0,$r0,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
53f0: 46 10 02 07 sethi $r1,#0x207 ; USB address range: 0x00207800~0x00207bff
53f4: 58 10 88 70 ori $r1,$r1,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
53f8: 04 10 80 00 lwi $r1,[$r1+#0x0]
53fc: 44 2f ff ef movi $r2,#-17
5400: 40 10 88 02 and $r1,$r1,$r2
5404: 14 10 00 00 swi $r1,[$r0+#0x0]
5408: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
540c: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
5410: 46 10 02 07 sethi $r1,#0x207 ; USB address range: 0x00207800~0x00207bff
5414: 58 10 88 18 ori $r1,$r1,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
5418: 04 10 80 00 lwi $r1,[$r1+#0x0]
541c: 44 2f ff 3f movi $r2,#-193
5420: 40 10 88 02 and $r1,$r1,$r2
5424: 14 10 00 00 swi $r1,[$r0+#0x0]
5428: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
542c: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
5430: 44 10 00 80 movi $r1,#0x80
5434: 14 10 00 00 swi $r1,[$r0+#0x0]
5438: 3e 0f ff ed addi.gp $r0,#-19
543c: 00 00 00 00 lbi $r0,[$r0+#0x0]
5440: 54 00 00 ff andi $r0,$r0,#0xff
5444: 44 1f ff 80 movi $r1,#-128
5448: 40 00 04 04 or $r0,$r0,$r1
544c: 54 10 00 ff andi $r1,$r0,#0xff
5450: 3e 0f ff ed addi.gp $r0,#-19
5454: 80 21 mov55 $r1,$r1
5456: 10 10 00 00 sbi $r1,[$r0+#0x0]
545a: d5 0a j8 0x546e
545c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5460: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
5464: 44 10 00 10 movi $r1,#0x10
5468: 14 10 00 00 swi $r1,[$r0+#0x0]
546c: d5 70 j8 0x554c
546e: 00 0e 7f fa lbi $r0,[$fp+#-6]
5472: 54 00 00 ff andi $r0,$r0,#0xff
5476: c8 0a bnez38 $r0,0x548a
5478: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
547c: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
5480: 44 10 00 10 movi $r1,#0x10
5484: 14 10 00 00 swi $r1,[$r0+#0x0]
5488: d5 62 j8 0x554c
548a: 44 00 00 00 movi $r0,#0x0
548e: 10 0e 7f fb sbi $r0,[$fp+#-5]
5492: d5 19 j8 0x54c4
5494: 00 0e 7f fb lbi $r0,[$fp+#-5]
5498: 54 10 00 ff andi $r1,$r0,#0xff
549c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
54a0: 58 00 08 60 ori $r0,$r0,#0x860 ; USB offset 0x60: RXDAT, Receive FIFO Data Register
54a4: 04 00 00 00 lwi $r0,[$r0+#0x0]
54a8: 54 20 00 ff andi $r2,$r0,#0xff
54ac: 3e 08 08 70 addi.gp $r0,#0x870
54b0: 80 42 mov55 $r2,$r2
54b2: 38 20 04 08 sb $r2,[$r0+($r1<<#0x0)]
54b6: 00 0e 7f fb lbi $r0,[$fp+#-5]
54ba: 50 00 00 01 addi $r0,$r0,#0x1
54be: 80 00 mov55 $r0,$r0
54c0: 10 0e 7f fb sbi $r0,[$fp+#-5]
54c4: 00 0e 7f fb lbi $r0,[$fp+#-5]
54c8: 54 10 00 ff andi $r1,$r0,#0xff
54cc: 00 0e 7f fa lbi $r0,[$fp+#-6]
54d0: 54 00 00 ff andi $r0,$r0,#0xff
54d4: 40 f0 80 06 slt $r15,$r1,$r0
54d8: e9 de bnezs8 0x5494
54da: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
54de: 58 00 08 70 ori $r0,$r0,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
54e2: 44 1f ff bf movi $r1,#-65
54e6: 14 10 00 00 swi $r1,[$r0+#0x0]
54ea: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
54ee: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
54f2: 44 10 00 90 movi $r1,#0x90 ; +RXFFRC,+RXCLR: clear USB RX FIFO, set Read Complete, clear RXFLG
54f6: 14 10 00 00 swi $r1,[$r0+#0x0]
54fa: d5 29 j8 0x554c ; goto OUT
; label NO_RXACK
54fc: 00 0e 7f f9 lbi $r0,[$fp+#-7] ;
5500: 54 00 00 ff andi $r0,$r0,#0xff ;
5504: 54 00 00 40 andi $r0,$r0,#0x40 ;
5508: c0 1a beqz38 $r0,0x553c ;
550a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
550e: 58 00 08 70 ori $r0,$r0,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
5512: 46 10 02 07 sethi $r1,#0x207 ; USB address range: 0x00207800~0x00207bff
5516: 58 10 88 70 ori $r1,$r1,#0x870 ; USB offset 0x70: RXSTAT, Endpoint Receive Status Register
551a: 04 10 80 00 lwi $r1,[$r1+#0x0]
551e: 44 2f ff bf movi $r2,#-65
5522: 40 10 88 02 and $r1,$r1,$r2
5526: 14 10 00 00 swi $r1,[$r0+#0x0]
552a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
552e: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
5532: 44 10 00 ef movi $r1,#0xef
5536: 14 10 00 00 swi $r1,[$r0+#0x0]
553a: d5 09 j8 0x554c
553c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5540: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
5544: 44 10 00 10 movi $r1,#0x10
5548: 14 10 00 00 swi $r1,[$r0+#0x0]
554c: 51 fe 00 00 addi $sp,$fp,#0x0
5550: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5554: 4a 00 78 20 ret $lp
; ---------- 0x5558: usb_handler_ep0_rx()
5558: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
555c: 51 cf 80 04 addi $fp,$sp,#0x4
5560: 49 ff ff 0c jal 0x5378 ; usb_rx_ep0() (this is the only caller)
5564: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5568: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
556c: 44 10 00 2f movi $r1,#0x2f
5570: 14 10 00 00 swi $r1,[$r0+#0x0]
5574: 3e 0f ff f0 addi.gp $r0,#-16
5578: 44 10 00 00 movi $r1,#0x0
557c: 10 10 00 00 sbi $r1,[$r0+#0x0]
5580: 3e 0f ff ed addi.gp $r0,#-19
5584: 00 00 00 00 lbi $r0,[$r0+#0x0]
5588: 54 00 00 ff andi $r0,$r0,#0xff
558c: 40 00 00 10 seb $r0,$r0
5590: 4e 04 00 12 bgez $r0,0x55b4
5594: 3e 0f ff ed addi.gp $r0,#-19
5598: 00 00 00 00 lbi $r0,[$r0+#0x0]
559c: 54 00 00 ff andi $r0,$r0,#0xff
55a0: 54 00 00 7f andi $r0,$r0,#0x7f
55a4: 3e 1f ff ed addi.gp $r1,#-19
55a8: 80 00 mov55 $r0,$r0
55aa: 10 00 80 00 sbi $r0,[$r1+#0x0]
55ae: 49 ff fe 91 jal 0x52d0
55b2: d5 2d j8 0x560c
55b4: 3e 0f ff ed addi.gp $r0,#-19
55b8: 00 00 00 00 lbi $r0,[$r0+#0x0]
55bc: 54 00 00 ff andi $r0,$r0,#0xff
55c0: 54 00 00 20 andi $r0,$r0,#0x20
55c4: 4e 02 00 24 beqz $r0,0x560c
55c8: 3e 0f ff ed addi.gp $r0,#-19
55cc: 00 00 00 00 lbi $r0,[$r0+#0x0]
55d0: 54 00 00 ff andi $r0,$r0,#0xff
55d4: 54 00 00 df andi $r0,$r0,#0xdf
55d8: 3e 1f ff ed addi.gp $r1,#-19
55dc: 80 00 mov55 $r0,$r0
55de: 10 00 80 00 sbi $r0,[$r1+#0x0]
55e2: 3e 08 08 70 addi.gp $r0,#0x870
55e6: 00 00 00 00 lbi $r0,[$r0+#0x0]
55ea: 54 00 00 ff andi $r0,$r0,#0xff
55ee: 54 00 00 07 andi $r0,$r0,#0x7
55f2: 3e 1f ff fb addi.gp $r1,#-5
55f6: 80 00 mov55 $r0,$r0
55f8: 10 00 80 00 sbi $r0,[$r1+#0x0]
55fc: 3e 0f ff f0 addi.gp $r0,#-16
5600: 44 10 00 00 movi $r1,#0x0
5604: 10 10 00 00 sbi $r1,[$r0+#0x0]
5608: 49 ff f7 4c jal 0x44a0 ; usb_tx_endpoint0()
560c: 51 fe 7f fc addi $sp,$fp,#-4
5610: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5614: 4a 00 78 20 ret $lp
5618: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
561c: 51 cf 80 00 addi $fp,$sp,#0x0
5620: 51 ff ff f4 addi $sp,$sp,#-12
5624: 80 00 mov55 $r0,$r0
5626: 10 0e 7f f8 sbi $r0,[$fp+#-8]
562a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
562e: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5632: 00 1e 7f f8 lbi $r1,[$fp+#-8]
5636: 54 10 80 ff andi $r1,$r1,#0xff
563a: 14 10 00 00 swi $r1,[$r0+#0x0]
563e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5642: 58 00 08 30 ori $r0,$r0,#0x830 ; USB offset 0x30: TXSTAT, Endpoint Transmit Status Register
5646: 04 00 00 00 lwi $r0,[$r0+#0x0]
564a: 54 00 00 01 andi $r0,$r0,#0x1
564e: 54 00 00 ff andi $r0,$r0,#0xff
5652: 4e 02 00 05 beqz $r0,0x565c
5656: 44 00 00 02 movi $r0,#0x2
565a: d5 03 j8 0x5660
565c: 44 00 00 00 movi $r0,#0x0
5660: 51 fe 00 00 addi $sp,$fp,#0x0
5664: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5668: 4a 00 78 20 ret $lp
; ----------- 0x566c - usb_handler_ep0_tx():
566c: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5670: 51 cf 80 04 addi $fp,$sp,#0x4
5674: 44 00 00 00 movi $r0,#0x0
5678: 49 ff ff d0 jal 0x5618
567c: 4e 02 00 32 beqz $r0,0x56e0
5680: 3e 0f ff ee addi.gp $r0,#-18
5684: 00 00 00 00 lbi $r0,[$r0+#0x0]
5688: 54 00 00 ff andi $r0,$r0,#0xff
568c: 40 00 00 10 seb $r0,$r0
5690: 4e 04 00 26 bgez $r0,0x56dc
5694: 3e 0f ff ee addi.gp $r0,#-18
5698: 00 00 00 00 lbi $r0,[$r0+#0x0]
569c: 54 00 00 ff andi $r0,$r0,#0xff
56a0: 54 00 00 7f andi $r0,$r0,#0x7f
56a4: 3e 1f ff ee addi.gp $r1,#-18
56a8: 80 00 mov55 $r0,$r0
56aa: 10 00 80 00 sbi $r0,[$r1+#0x0]
56ae: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
56b2: 58 00 08 00 ori $r0,$r0,#0x800 ; USB offset 0x00: FADDR, Function Address Register
56b6: 3e 1f ff f1 addi.gp $r1,#-15
56ba: 00 10 80 00 lbi $r1,[$r1+#0x0]
56be: 54 10 80 ff andi $r1,$r1,#0xff
56c2: 54 10 80 7f andi $r1,$r1,#0x7f
56c6: 14 10 00 00 swi $r1,[$r0+#0x0]
56ca: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
56ce: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
56d2: 44 10 00 ef movi $r1,#0xef
56d6: 14 10 00 00 swi $r1,[$r0+#0x0]
56da: d5 03 j8 0x56e0
56dc: 49 ff f8 86 jal 0x47e8
56e0: 51 fe 7f fc addi $sp,$fp,#-4
56e4: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
56e8: 4a 00 78 20 ret $lp
56ec: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
56f0: 51 cf 80 04 addi $fp,$sp,#0x4
56f4: 49 00 00 d0 jal 0x5894
56f8: 51 fe 7f fc addi $sp,$fp,#-4
56fc: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5700: 4a 00 78 20 ret $lp
; ----------- 0x5704: usb_transmit_bytes(endpoint=$r0, src=$r1, size=$r2)
5704: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
5708: 51 cf 80 00 addi $fp,$sp,#0x0
570c: 51 ff ff e4 addi $sp,$sp,#-28
5710: 80 60 mov55 $r3,$r0 ; $r3 = endpoint
5712: 14 1e 7f fb swi $r1,[$fp+#-20] ; [$fp-20] = src
5716: 80 02 mov55 $r0,$r2 ; $r0 = size
5718: 80 23 mov55 $r1,$r3 ; $r1 = endpoint
571a: 10 1e 7f f0 sbi $r1,[$fp+#-16] ; [$fp-16] = endpoint
571e: 80 00 mov55 $r0,$r0
5720: 10 0e 7f e8 sbi $r0,[$fp+#-24] ; [$fp-24] = size
5724: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5728: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
572c: 00 1e 7f f0 lbi $r1,[$fp+#-16] ;
5730: 54 10 80 ff andi $r1,$r1,#0xff ;
5734: 14 10 00 00 swi $r1,[$r0+#0x0] ; set EPINDEX to endpoint
5738: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
573c: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
5740: 44 10 00 80 movi $r1,#0x80 ;
5744: 14 10 00 00 swi $r1,[$r0+#0x0]
5748: 44 00 00 00 movi $r0,#0x0
574c: 10 0e 7f fb sbi $r0,[$fp+#-5]
5750: d5 1a j8 0x5784
5752: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5756: 58 00 08 20 ori $r0,$r0,#0x820 ; USB offset 0x20: TXDAT, Transmit USB FIFO Data Register
575a: 00 1e 7f fb lbi $r1,[$fp+#-5]
575e: 54 10 80 ff andi $r1,$r1,#0xff
5762: 04 2e 7f fb lwi $r2,[$fp+#-20]
5766: 40 11 04 00 add $r1,$r2,$r1
576a: 00 10 80 00 lbi $r1,[$r1+#0x0]
576e: 54 10 80 ff andi $r1,$r1,#0xff
5772: 14 10 00 00 swi $r1,[$r0+#0x0]
5776: 00 0e 7f fb lbi $r0,[$fp+#-5]
577a: 50 00 00 01 addi $r0,$r0,#0x1
577e: 80 00 mov55 $r0,$r0
5780: 10 0e 7f fb sbi $r0,[$fp+#-5]
5784: 00 0e 7f fb lbi $r0,[$fp+#-5]
5788: 54 10 00 ff andi $r1,$r0,#0xff
578c: 00 0e 7f e8 lbi $r0,[$fp+#-24]
5790: 54 00 00 ff andi $r0,$r0,#0xff
5794: 40 f0 80 06 slt $r15,$r1,$r0
5798: 4e f3 ff dd bnez $r15,0x5752
579c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
57a0: 58 00 08 2c ori $r0,$r0,#0x82c ; USB offset 0x2c: TXCNT, Transmit USB FIFO Byte Count Register
57a4: 00 1e 7f e8 lbi $r1,[$fp+#-24]
57a8: 54 10 80 ff andi $r1,$r1,#0xff
57ac: 14 10 00 00 swi $r1,[$r0+#0x0]
57b0: 51 fe 00 00 addi $sp,$fp,#0x0
57b4: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
57b8: 4a 00 78 20 ret $lp
; ----------- 0x57bc: usb_rx_bytes(u8 endpoint=$r0, void *addr=$r1, u8 size=$r2) (see also 0x5378)
; ----------- Reads size bytes from endpoint into the buffer at addr
57bc: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
57c0: 51 cf 80 00 addi $fp,$sp,#0x0
57c4: 51 ff ff e4 addi $sp,$sp,#-28
57c8: 80 60 mov55 $r3,$r0 ; save endpoint to $r3
57ca: 14 1e 7f fb swi $r1,[$fp+#-20] ; save addr at [$fp-20]
57ce: 80 02 mov55 $r0,$r2 ; $r0 = size
57d0: 80 23 mov55 $r1,$r3 ; $r1 = $r3 (endpoint)
57d2: 10 1e 7f f0 sbi $r1,[$fp+#-16] ; save endpoint at [$fp-16]
57d6: 80 00 mov55 $r0,$r0
57d8: 10 0e 7f e8 sbi $r0,[$fp+#-24] ; save size at [$fp-24]
57dc: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
57e0: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
57e4: 00 1e 7f f0 lbi $r1,[$fp+#-16] ; $r1 = endpoint
57e8: 54 10 80 ff andi $r1,$r1,#0xff
57ec: 14 10 00 00 swi $r1,[$r0+#0x0] ; write endpoint to EPINDEX
57f0: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
57f4: 58 00 08 6c ori $r0,$r0,#0x86c ; USB offset 0x6c: RXCNT, Receive FIFO Byte Count Register
57f8: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = u8 RXCNT
57fc: 80 00 mov55 $r0,$r0 ;
57fe: 10 0e 7f fa sbi $r0,[$fp+#-6] ; save RXCNT to [$fp-6]
5802: 00 0e 7f fa lbi $r0,[$fp+#-6] ; $r0 = RXCNT
5806: 54 00 00 ff andi $r0,$r0,#0xff ;
580a: c0 37 beqz38 $r0,0x5878 ; if RXCNT == 0: goto OUT
580c: 44 00 00 00 movi $r0,#0x0 ;
5810: 10 0e 7f fb sbi $r0,[$fp+#-5] ; [$fp-5] (count) = 0
5814: d5 1b j8 0x584a ; goto LOOPSTART
5816: 00 0e 7f fb lbi $r0,[$fp+#-5] ; do {
581a: 54 00 00 ff andi $r0,$r0,#0xff ;
581e: 04 1e 7f fb lwi $r1,[$fp+#-20] ;
5822: 40 10 80 00 add $r1,$r1,$r0 ; $r1 = addr+count
5826: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
582a: 58 00 08 60 ori $r0,$r0,#0x860 ; USB offset 0x60: RXDAT, Receive FIFO Data Register
582e: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = (read 1 byte from RXDAT)
5832: 54 00 00 ff andi $r0,$r0,#0xff ;
5836: 80 00 mov55 $r0,$r0 ;
5838: 10 00 80 00 sbi $r0,[$r1+#0x0] ; save RXDAT byte at addr[count]
583c: 00 0e 7f fb lbi $r0,[$fp+#-5] ;
5840: 50 00 00 01 addi $r0,$r0,#0x1 ;
5844: 80 00 mov55 $r0,$r0 ;
5846: 10 0e 7f fb sbi $r0,[$fp+#-5] ; count++
584a: 00 0e 7f fb lbi $r0,[$fp+#-5] ; LOOPSTART:
584e: 54 10 00 ff andi $r1,$r0,#0xff ; $r1 = count
5852: 00 0e 7f fa lbi $r0,[$fp+#-6] ;
5856: 54 00 00 ff andi $r0,$r0,#0xff ; $r0 = RXCNT
585a: 40 f0 80 06 slt $r15,$r1,$r0 ;
585e: e8 0d beqzs8 0x5878 ; if (count >= RXCNT): goto OUT
5860: 00 0e 7f fb lbi $r0,[$fp+#-5] ;
5864: 54 10 00 ff andi $r1,$r0,#0xff ; $r1 = count
5868: 00 0e 7f e8 lbi $r0,[$fp+#-24] ;
586c: 54 00 00 ff andi $r0,$r0,#0xff ; $r0 = size
5870: 40 f0 80 06 slt $r15,$r1,$r0 ;
5874: 4e f3 ff d1 bnez $r15,0x5816 ; } until (count == size)
5878: 46 00 02 07 sethi $r0,#0x207 ;OUT:
587c: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
5880: 44 10 00 90 movi $r1,#0x90 ; $r1 = 0b10010000 (bit 4 + 7): RXCLR + RXFFRC
5884: 14 10 00 00 swi $r1,[$r0+#0x0] ; Read Complete, Clear RX FIFO
5888: 51 fe 00 00 addi $sp,$fp,#0x0 ;
588c: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5890: 4a 00 78 20 ret $lp
5894: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
5898: 51 cf 80 00 addi $fp,$sp,#0x0
589c: 3e 0f ff ee addi.gp $r0,#-18
58a0: 44 10 00 00 movi $r1,#0x0
58a4: 10 10 00 00 sbi $r1,[$r0+#0x0]
58a8: 3e 0f ff f0 addi.gp $r0,#-16
58ac: 44 10 00 00 movi $r1,#0x0
58b0: 10 10 00 00 sbi $r1,[$r0+#0x0]
58b4: 3e 0f ff a0 addi.gp $r0,#-96
58b8: 44 10 00 00 movi $r1,#0x0
58bc: 14 10 00 00 swi $r1,[$r0+#0x0]
58c0: 3e 0f ff a4 addi.gp $r0,#-92
58c4: 44 10 00 00 movi $r1,#0x0
58c8: 14 10 00 00 swi $r1,[$r0+#0x0]
58cc: 3e 0f ff f2 addi.gp $r0,#-14
58d0: 44 10 00 00 movi $r1,#0x0
58d4: 10 10 00 00 sbi $r1,[$r0+#0x0]
58d8: 3e 0f ff f3 addi.gp $r0,#-13
58dc: 44 10 00 00 movi $r1,#0x0
58e0: 10 10 00 00 sbi $r1,[$r0+#0x0]
58e4: 3e 0f ff f4 addi.gp $r0,#-12
58e8: 44 10 00 00 movi $r1,#0x0
58ec: 10 10 00 00 sbi $r1,[$r0+#0x0]
58f0: 3e 0f ff ef addi.gp $r0,#-17
58f4: 44 10 00 00 movi $r1,#0x0
58f8: 10 10 00 00 sbi $r1,[$r0+#0x0]
58fc: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5900: 58 00 08 00 ori $r0,$r0,#0x800 ; USB offset 0x00: FADDR, Function Address Register
5904: 44 10 00 00 movi $r1,#0x0
5908: 14 10 00 00 swi $r1,[$r0+#0x0] ; FADDR = 0 - try to clear the host-assigned address?
590c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5910: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5914: 44 10 00 00 movi $r1,#0x0
5918: 14 10 00 00 swi $r1,[$r0+#0x0]
591c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5920: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
5924: 44 10 00 80 movi $r1,#0x80
5928: 14 10 00 00 swi $r1,[$r0+#0x0]
592c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5930: 58 00 08 64 ori $r0,$r0,#0x864 ; USB offset 0x64: RXCON, Receive FIFO Control Register
5934: 44 10 00 90 movi $r1,#0x90
5938: 14 10 00 00 swi $r1,[$r0+#0x0]
593c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5940: 58 00 08 18 ori $r0,$r0,#0x818 ; USB offset 0x18: EPCON, Endpoint Data-flow Control Register
5944: 44 10 00 2f movi $r1,#0x2f
5948: 14 10 00 00 swi $r1,[$r0+#0x0]
594c: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5950: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5954: 44 10 00 ff movi $r1,#0xff
5958: 14 10 00 00 swi $r1,[$r0+#0x0]
595c: 51 fe 00 00 addi $sp,$fp,#0x0
5960: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5964: 4a 00 78 20 ret $lp
; ----------- 0x5968: USB magic
5968: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
596c: 51 cf 80 04 addi $fp,$sp,#0x4
5970: 51 ff ff f8 addi $sp,$sp,#-8
5974: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5978: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
597c: 04 00 00 00 lwi $r0,[$r0+#0x0]
5980: 80 00 mov55 $r0,$r0
5982: 10 0e 7f fb sbi $r0,[$fp+#-5]
5986: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
598a: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
598e: 04 00 00 00 lwi $r0,[$r0+#0x0]
5992: 54 00 00 08 andi $r0,$r0,#0x8
5996: c0 36 beqz38 $r0,0x5a02
5998: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
599c: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
59a0: 44 1f ff f7 movi $r1,#-9
59a4: 14 10 00 00 swi $r1,[$r0+#0x0]
59a8: 3e 08 00 20 addi.gp $r0,#0x20
59ac: 04 00 00 00 lwi $r0,[$r0+#0x0]
59b0: 50 10 00 01 addi $r1,$r0,#0x1
59b4: 3e 08 00 20 addi.gp $r0,#0x20
59b8: 14 10 00 00 swi $r1,[$r0+#0x0]
59bc: 3e 0f ff d8 addi.gp $r0,#-40 ; $r0 = $gp-40
59c0: 02 00 00 00 lhi $r0,[$r0+#0x0]
59c4: 40 00 00 13 zeh $r0,$r0
59c8: c0 10 beqz38 $r0,0x59e8
59ca: 3e 0f ff d8 addi.gp $r0,#-40 ; $r0 = $gp-40
59ce: 02 00 00 00 lhi $r0,[$r0+#0x0]
59d2: 40 00 00 13 zeh $r0,$r0
59d6: 50 00 7f ff addi $r0,$r0,#-1
59da: 40 10 00 13 zeh $r1,$r0
59de: 3e 0f ff d8 addi.gp $r0,#-40 ; $r0 = $gp-40
59e2: 80 21 mov55 $r1,$r1
59e4: 12 10 00 00 shi $r1,[$r0+#0x0]
59e8: 3e 0f ff ee addi.gp $r0,#-18 ; $r0 = $gp-18
59ec: 00 00 00 00 lbi $r0,[$r0+#0x0]
59f0: 54 00 00 ff andi $r0,$r0,#0xff
59f4: 54 00 00 40 andi $r0,$r0,#0x40
59f8: c0 05 beqz38 $r0,0x5a02
59fa: 49 00 02 2d jal 0x5e54
59fe: 49 00 01 25 jal 0x5c48 ; usb_tx_queued()
5a02: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a06: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a0a: 04 00 00 00 lwi $r0,[$r0+#0x0]
5a0e: 54 00 00 80 andi $r0,$r0,#0x80
5a12: c0 0b beqz38 $r0,0x5a28
5a14: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a18: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a1c: 44 1f ff 7f movi $r1,#-129
5a20: 14 10 00 00 swi $r1,[$r0+#0x0]
5a24: 49 ff fe 64 jal 0x56ec
5a28: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a2c: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a30: 04 00 00 00 lwi $r0,[$r0+#0x0]
5a34: 54 00 00 40 andi $r0,$r0,#0x40
5a38: c0 0f beqz38 $r0,0x5a56
5a3a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a3e: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a42: 44 1f ff bf movi $r1,#-65
5a46: 14 10 00 00 swi $r1,[$r0+#0x0]
5a4a: 3e 0f ff ef addi.gp $r0,#-17
5a4e: 44 10 00 00 movi $r1,#0x0
5a52: 10 10 00 00 sbi $r1,[$r0+#0x0]
5a56: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a5a: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a5e: 04 00 00 00 lwi $r0,[$r0+#0x0]
5a62: 54 00 00 20 andi $r0,$r0,#0x20
5a66: c0 0f beqz38 $r0,0x5a84
5a68: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a6c: 58 00 08 44 ori $r0,$r0,#0x844 ; USB offset 0x44: USB Function Interrupt Register 2
5a70: 44 1f ff df movi $r1,#-33
5a74: 14 10 00 00 swi $r1,[$r0+#0x0]
5a78: 3e 0f ff ef addi.gp $r0,#-17
5a7c: 44 10 00 01 movi $r1,#0x1
5a80: 10 10 00 00 sbi $r1,[$r0+#0x0]
5a84: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5a88: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5a8c: 00 1e 7f fb lbi $r1,[$fp+#-5]
5a90: 54 10 80 ff andi $r1,$r1,#0xff
5a94: 14 10 00 00 swi $r1,[$r0+#0x0]
5a98: 51 fe 7f fc addi $sp,$fp,#-4
5a9c: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5aa0: 4a 00 78 20 ret $lp
; ----------- 0x5aa4: usb_handle_interrupt()
5aa4: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5aa8: 51 cf 80 04 addi $fp,$sp,#0x4
5aac: 51 ff ff f8 addi $sp,$sp,#-8
5ab0: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5ab4: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5ab8: 04 00 00 00 lwi $r0,[$r0+#0x0] ; read EPINDEX
5abc: 80 00 mov55 $r0,$r0
5abe: 10 0e 7f fb sbi $r0,[$fp+#-5] ; [$fp-5] = EPINDEX
5ac2: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5ac6: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5aca: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = USBFI
5ace: 54 00 00 01 andi $r0,$r0,#0x1 ; check bit 0 - USBTx0INT, transmit done for ep0
5ad2: 54 00 00 ff andi $r0,$r0,#0xff
5ad6: c0 0b beqz38 $r0,0x5aec ; if USBTx0INT:
5ad8: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5adc: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5ae0: 44 10 00 01 movi $r1,#0x1 ;
5ae4: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBTx0INT
5ae8: 49 ff fd c2 jal 0x566c ; usb_handler_ep0_tx() - TODO: twiddles FADDR and EPCON
5aec: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5af0: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5af4: 04 00 00 00 lwi $r0,[$r0+#0x0] ; $r0 = USBFI
5af8: 54 00 00 02 andi $r0,$r0,#0x2 ; check bit 1 - USBRx0INT, receive done for ep0
5afc: c0 0b beqz38 $r0,0x5b12 ; if USBRx0INT:
5afe: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b02: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5b06: 44 10 00 02 movi $r1,#0x2 ;
5b0a: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBRx0INT
5b0e: 49 ff fd 25 jal 0x5558 ; usb_handler_ep0_rx()
5b12: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b16: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5b1a: 04 00 00 00 lwi $r0,[$r0+#0x0] ;
5b1e: 54 00 00 04 andi $r0,$r0,#0x4 ; check bit 2 - USBx1INT, tx/rx done for ep1
5b22: c0 0b beqz38 $r0,0x5b38 ; if USBx1INT:
5b24: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b28: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5b2c: 44 10 00 04 movi $r1,#0x4 ;
5b30: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBx1INT
5b34: 49 00 00 4c jal 0x5bcc ; usb_handler_ep1()
5b38: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b3c: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5b40: 04 00 00 00 lwi $r0,[$r0+#0x0] ;
5b44: 54 00 00 08 andi $r0,$r0,#0x8 ; check bit 3 - USBx2INT, tx/rx done for ep2
5b48: c0 0b beqz38 $r0,0x5b5e ; if USBx2INT:
5b4a: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b4e: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5b52: 44 10 00 08 movi $r1,#0x8 ;
5b56: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBx2INT
5b5a: 49 00 00 43 jal 0x5be0 ; usb_handler_ep2(): set [$gp-104] = 1
5b5e: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b62: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5b66: 04 00 00 00 lwi $r0,[$r0+#0x0] ;
5b6a: 54 00 00 10 andi $r0,$r0,#0x10 ; check bit 4, USBx3INT, tx/rx done for ep3
5b6e: c0 0b beqz38 $r0,0x5b84 ; if USBx3INT:
5b70: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b74: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5b78: 44 10 00 10 movi $r1,#0x10 ;
5b7c: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBx3INT
5b80: 49 00 00 40 jal 0x5c00 ; usb_handler_ep3(): set [$gp-100] = 1
5b84: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b88: 58 00 08 04 ori $r0,$r0,#0x804 ; USB offset 0x04: USBFI, USB Function Interrupt Register
5b8c: 04 00 00 00 lwi $r0,[$r0+#0x0] ;
5b90: 54 00 00 20 andi $r0,$r0,#0x20 ; check bit 5, USBx4INT, tx/rx done for ep4 (surprise!)
5b94: c0 0b beqz38 $r0,0x5baa ; if USBx4INT:
5b96: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5b9a: 58 00 08 40 ori $r0,$r0,#0x840 ; USB offset 0x40: USBFI_CLR, USB Function Interrupt Clear Register
5b9e: 44 10 00 20 movi $r1,#0x20 ;
5ba2: 14 10 00 00 swi $r1,[$r0+#0x0] ; clear USBx4INT
5ba6: 49 00 00 3d jal 0x5c20 ; usb_handler_ep4(): read 0x40 byte command packet to $gp+0x978
5baa: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5bae: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5bb2: 00 1e 7f fb lbi $r1,[$fp+#-5] ; $r1 = saved EPINDEX
5bb6: 54 10 80 ff andi $r1,$r1,#0xff ;
5bba: 14 10 00 00 swi $r1,[$r0+#0x0] ; write old EPINDEX to EPINDEX
5bbe: 51 fe 7f fc addi $sp,$fp,#-4
5bc2: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5bc6: 4a 00 78 20 ret $lp
5bca: 92 00 nop16
; ----------- 0x5bcc: usb_handler_ep1(): noop
5bcc: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
5bd0: 51 cf 80 00 addi $fp,$sp,#0x0
5bd4: 51 fe 00 00 addi $sp,$fp,#0x0
5bd8: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5bdc: 4a 00 78 20 ret $lp
; ----------- 0x5be0: usb_handler_ep2(): set usb_ep2_intr [$gp-104] = 1
5be0: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
5be4: 51 cf 80 00 addi $fp,$sp,#0x0
5be8: 3e 0f ff 98 addi.gp $r0,#-104
5bec: 44 10 00 01 movi $r1,#0x1
5bf0: 14 10 00 00 swi $r1,[$r0+#0x0]
5bf4: 51 fe 00 00 addi $sp,$fp,#0x0
5bf8: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5bfc: 4a 00 78 20 ret $lp
; ----------- 0x5c00: usb_handler_ep3(): set usb_ep3_intr [$gp-100] = 1
5c00: 3b ff fe 3c smw.adm $sp,[$sp],$sp,#0x8 ! {$fp}
5c04: 51 cf 80 00 addi $fp,$sp,#0x0
5c08: 3e 0f ff 9c addi.gp $r0,#-100
5c0c: 44 10 00 01 movi $r1,#0x1
5c10: 14 10 00 00 swi $r1,[$r0+#0x0]
5c14: 51 fe 00 00 addi $sp,$fp,#0x0
5c18: 3b ff fe 04 lmw.bim $sp,[$sp],$sp,#0x8 ! {$fp}
5c1c: 4a 00 78 20 ret $lp
; ----------- 0x5c20: usb_handler_ep4(): read 0x40-byte packet to $gp+0x978
5c20: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5c24: 51 cf 80 04 addi $fp,$sp,#0x4
5c28: 44 00 00 04 movi $r0,#0x4 ; usb_rx_bytes endpoint = 4
5c2c: 3e 18 09 78 addi.gp $r1,#0x978 ; usb_rx_bytes addr = $gp+0x978
5c30: 44 20 00 40 movi $r2,#0x40 ; usb_rx_bytes size = 0x40
5c34: 49 ff fd c4 jal 0x57bc ; usb_rx_bytes()
5c38: 49 00 03 02 jal 0x623c ; validate_packet(): set [$gp-72]=1, copy packet to [$gp+0xb34]
5c3c: 51 fe 7f fc addi $sp,$fp,#-4
5c40: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5c44: 4a 00 78 20 ret $lp
; ----------- 0x5c48: usb_tx_queued(): transmit any waiting data on endpoint 1, 2, and 3
5c48: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5c4c: 51 cf 80 04 addi $fp,$sp,#0x4 ; NOTE this is the only caller for the following 3 functions
5c50: 49 00 00 0c jal 0x5c68 ; usb_tx_ep1()
5c54: 49 00 00 3a jal 0x5cc8 ; usb_tx_ep2()
5c58: 49 00 00 d4 jal 0x5e00 ; usb_tx_ep3()
5c5c: 51 fe 7f fc addi $sp,$fp,#-4
5c60: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5c64: 4a 00 78 20 ret $lp
; ----------- 0x5c68: usb_tx_ep1()
5c68: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5c6c: 51 cf 80 04 addi $fp,$sp,#0x4
5c70: 3e 0f ff ac addi.gp $r0,#-84
5c74: 04 10 00 00 lwi $r1,[$r0+#0x0]
5c78: 44 00 00 01 movi $r0,#0x1
5c7c: 4c 10 40 20 bne $r1,$r0,0x5cbc
5c80: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5c84: 58 00 08 14 ori $r0,$r0,#0x814 ; USB offset 0x14: EPINDEX, Endpoint Index Register
5c88: 44 10 00 01 movi $r1,#0x1
5c8c: 14 10 00 00 swi $r1,[$r0+#0x0]
5c90: 46 00 02 07 sethi $r0,#0x207 ; USB address range: 0x00207800~0x00207bff
5c94: 58 00 08 24 ori $r0,$r0,#0x824 ; USB offset 0x24: TXCON, Transmit USB FIFO Control Register
5c98: 44 10 00 80 movi $r1,#0x80
5c9c: 14 10 00 00 swi $r1,[$r0+#0x0]
5ca0: 44 00 00 01 movi $r0,#0x1
5ca4: 3e 18 09 30 addi.gp $r1,#0x930
5ca8: 44 20 00 08 movi $r2,#0x8
5cac: 49 ff fd 2c jal 0x5704 ; usb_transmit_bytes(endpoint=$r0, src=$r1, size=$r2)
5cb0: 3e 0f ff ac addi.gp $r0,#-84
5cb4: 44 10 00 00 movi $r1,#0x0
5cb8: 14 10 00 00 swi $r1,[$r0+#0x0]
5cbc: 51 fe 7f fc addi $sp,$fp,#-4
5cc0: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5cc4: 4a 00 78 20 ret $lp
; ----------- 0x5cc8: usb_tx_ep2()
5cc8: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5ccc: 51 cf 80 04 addi $fp,$sp,#0x4
5cd0: 3e 0f ff 98 addi.gp $r0,#-104
5cd4: 04 10 00 00 lwi $r1,[$r0+#0x0]
5cd8: 44 00 00 01 movi $r0,#0x1
5cdc: 4c 10 40 8c bne $r1,$r0,0x5df4 ; if !usb_ep2_intr: goto out
5ce0: 3e 08 0b 0c addi.gp $r0,#0xb0c
5ce4: 44 10 00 00 movi $r1,#0x0
5ce8: 44 20 00 1f movi $r2,#0x1f
5cec: 49 00 21 e6 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
5cf0: 3e 0f ff b0 addi.gp $r0,#-80
5cf4: 04 10 00 00 lwi $r1,[$r0+#0x0]
5cf8: 44 00 00 01 movi $r0,#0x1
5cfc: 4c 10 40 25 bne $r1,$r0,0x5d46
5d00: 3e 08 0b 0c addi.gp $r0,#0xb0c
5d04: 44 10 00 04 movi $r1,#0x4
5d08: 10 10 00 00 sbi $r1,[$r0+#0x0]
5d0c: 3e 08 0b 0e addi.gp $r0,#0xb0e
5d10: 3e 18 09 58 addi.gp $r1,#0x958
5d14: 44 20 00 1d movi $r2,#0x1d
5d18: 49 00 21 c6 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
5d1c: 3e 0f ff 98 addi.gp $r0,#-104
5d20: 44 10 00 00 movi $r1,#0x0
5d24: 14 10 00 00 swi $r1,[$r0+#0x0]
5d28: 44 00 00 02 movi $r0,#0x2
5d2c: 3e 18 0b 0c addi.gp $r1,#0xb0c
5d30: 44 20 00 1f movi $r2,#0x1f
5d34: 49 ff fc e8 jal 0x5704 ; usb_transmit_bytes(endpoint=$r0, src=$r1, size=$r2)
5d38: 3e 0f ff b0 addi.gp $r0,#-80
5d3c: 44 10 00 00 movi $r1,#0x0
5d40: 14 10 00 00 swi $r1,[$r0+#0x0]
5d44: d5 58 j8 0x5df4 ; goto out
5d46: 3e 0f ff b4 addi.gp $r0,#-76
5d4a: 04 10 00 00 lwi $r1,[$r0+#0x0]
5d4e: 44 00 00 01 movi $r0,#0x1
5d52: 4c 10 40 25 bne $r1,$r0,0x5d9c
5d56: 3e 08 0b 0c addi.gp $r0,#0xb0c
5d5a: 44 10 00 02 movi $r1,#0x2
5d5e: 10 10 00 00 sbi $r1,[$r0+#0x0]
5d62: 3e 08 0b 0d addi.gp $r0,#0xb0d
5d66: 3e 18 00 24 addi.gp $r1,#0x24
5d6a: 44 20 00 04 movi $r2,#0x4
5d6e: 49 00 21 9b jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
5d72: 3e 0f ff 98 addi.gp $r0,#-104
5d76: 44 10 00 00 movi $r1,#0x0
5d7a: 14 10 00 00 swi $r1,[$r0+#0x0]
5d7e: 44 00 00 02 movi $r0,#0x2
5d82: 3e 18 0b 0c addi.gp $r1,#0xb0c
5d86: 44 20 00 05 movi $r2,#0x5
5d8a: 49 ff fc bd jal 0x5704 ; usb_transmit_bytes(endpoint=$r0, src=$r1, size=$r2)
5d8e: 3e 0f ff b4 addi.gp $r0,#-76
5d92: 44 10 00 00 movi $r1,#0x0
5d96: 14 10 00 00 swi $r1,[$r0+#0x0]
5d9a: d5 2d j8 0x5df4 ; goto out
5d9c: 3e 0f ff f6 addi.gp $r0,#-10
5da0: 00 00 00 00 lbi $r0,[$r0+#0x0]
5da4: 54 10 00 ff andi $r1,$r0,#0xff
5da8: 44 00 00 01 movi $r0,#0x1
5dac: 4c 10 40 24 bne $r1,$r0,0x5df4
5db0: 3e 08 0b 0c addi.gp $r0,#0xb0c
5db4: 44 10 00 05 movi $r1,#0x5
5db8: 10 10 00 00 sbi $r1,[$r0+#0x0]
5dbc: 3e 08 0b 0d addi.gp $r0,#0xb0d
5dc0: 3e 18 0b 2c addi.gp $r1,#0xb2c
5dc4: 44 20 00 06 movi $r2,#0x6
5dc8: 49 00 21 6e jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
5dcc: 3e 0f ff 98 addi.gp $r0,#-104
5dd0: 44 10 00 00 movi $r1,#0x0
5dd4: 14 10 00 00 swi $r1,[$r0+#0x0]
5dd8: 44 00 00 02 movi $r0,#0x2
5ddc: 3e 18 0b 0c addi.gp $r1,#0xb0c
5de0: 44 20 00 07 movi $r2,#0x7
5de4: 49 ff fc 90 jal 0x5704 ; usb_transmit_bytes(endpoint=$r0, src=$r1, size=$r2)
5de8: 3e 0f ff f6 addi.gp $r0,#-10
5dec: 44 10 00 00 movi $r1,#0x0
5df0: 10 10 00 00 sbi $r1,[$r0+#0x0]
5df4: 51 fe 7f fc addi $sp,$fp,#-4
5df8: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5dfc: 4a 00 78 20 ret $lp
; ----------- 0x5e00: usb_tx_ep3()
5e00: 3b ff fe bc smw.adm $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5e04: 51 cf 80 04 addi $fp,$sp,#0x4
5e08: 51 ff ff c0 addi $sp,$sp,#-64
5e0c: 3e 0f ff 9c addi.gp $r0,#-100
5e10: 04 10 00 00 lwi $r1,[$r0+#0x0]
5e14: 44 00 00 01 movi $r0,#0x1
5e18: 4c 10 40 17 bne $r1,$r0,0x5e46 ; if !usb_ep3_intr: goto out
5e1c: 50 1e 7f bc addi $r1,$fp,#-68 ; $r1 = $fp-68 (localpacket)
5e20: 3e 08 09 c0 addi.gp $r0,#0x9c0
5e24: 49 ff d3 d0 jal 0x5c4 ; ringbuf_read(ringbuf, localpacket) - (this is the only caller)
5e28: c0 0f beqz38 $r0,0x5e46 ; if ringbuf_read failed, goto out
5e2a: 3e 0f ff 9c addi.gp $r0,#-100
5e2e: 44 10 00 00 movi $r1,#0x0
5e32: 14 10 00 00 swi $r1,[$r0+#0x0] ; usb_ep3_intr = 0
5e36: 50 1e 7f bc addi $r1,$fp,#-68
5e3a: 44 00 00 03 movi $r0,#0x3
5e3e: 44 20 00 40 movi $r2,#0x40
5e42: 49 ff fc 61 jal 0x5704 ; usb_transmit_bytes(endpoint=3, src=localpacket, size=0x40)
5e46: 51 fe 7f fc addi $sp,$fp,#-4
5e4a: 3b ff fe 84 lmw.bim $sp,[$sp],$sp,#0xa ! {$fp, $lp}
5e4e: 4a 00 78 20 ret $lp
5e52: 92 00 nop16
5e54: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
5e58: ef a4 addi10.sp #-92
5e5a: 2e 07 ff ea lbi.gp $r0,[+#-22]
5e5e: 84 25 movi55 $r1,#0x5
5e60: 4c 00 80 04 beq $r0,$r1,0x5e68
5e64: 49 00 1f a4 jal 0x9dac
5e68: 2e 07 ff f8 lbi.gp $r0,[+#-8]
5e6c: c8 08 bnez38 $r0,0x5e7c
5e6e: 46 30 01 00 sethi $r3,#0x100
5e72: 3e 28 10 b0 addi.gp $r2,#0x10b0
5e76: f3 81 swi37.sp $r3,[+#0x4]
5e78: 48 00 00 4a j 0x5f0c
5e7c: 3e 08 09 b9 addi.gp $r0,#0x9b9
5e80: 3e 38 0b 05 addi.gp $r3,#0xb05
5e84: 3e 28 10 b0 addi.gp $r2,#0x10b0
5e88: 84 a1 movi55 $r5,#0x1
5e8a: a6 40 lbi333 $r1,[$r0+#0x0]
5e8c: 9c 01 addi333 $r0,$r0,#0x1
5e8e: 54 60 80 07 andi $r6,$r1,#0x7
5e92: 40 62 98 0c sll $r6,$r5,$r6
5e96: 40 40 8c 09 srli $r4,$r1,#0x3
5e9a: 40 63 18 05 nor $r6,$r6,$r6
5e9e: c1 07 beqz38 $r1,0x5eac
5ea0: 38 11 10 00 lb $r1,[$r2+($r4<<#0x0)]
5ea4: 40 63 04 02 and $r6,$r6,$r1
5ea8: 38 61 10 08 sb $r6,[$r2+($r4<<#0x0)]
5eac: a6 58 lbi333 $r1,[$r3+#0x0]
5eae: 9c d9 addi333 $r3,$r3,#0x1
5eb0: 54 60 80 07 andi $r6,$r1,#0x7
5eb4: 40 40 8c 09 srli $r4,$r1,#0x3
5eb8: 40 62 98 0c sll $r6,$r5,$r6
5ebc: 4e 12 00 08 beqz $r1,0x5ecc
5ec0: 38 11 10 00 lb $r1,[$r2+($r4<<#0x0)]
5ec4: 40 63 04 04 or $r6,$r6,$r1
5ec8: 38 61 10 08 sb $r6,[$r2+($r4<<#0x0)]
5ecc: 3e 18 09 bd addi.gp $r1,#0x9bd
5ed0: 4c 00 ff dd bne $r0,$r1,0x5e8a
5ed4: 46 00 01 00 sethi $r0,#0x100
5ed8: 3e 48 0b 04 addi.gp $r4,#0xb04
5edc: 2e 60 00 02 lbi.gp $r6,[+#0x2]
5ee0: f0 81 swi37.sp $r0,[+#0x4]
5ee2: 3a 02 04 00 lmw.bi $r0,[$r4],$r1,#0x0 ! {$r0~$r1}
5ee6: 3e 38 09 b8 addi.gp $r3,#0x9b8
5eea: a7 58 lbi333 $r5,[$r3+#0x0]
5eec: aa 19 swi333.bi $r0,[$r3],#0x4
5eee: a7 20 lbi333 $r4,[$r4+#0x0]
5ef0: ae 58 sbi333 $r1,[$r3+#0x0]
5ef2: 40 52 94 05 nor $r5,$r5,$r5
5ef6: 84 20 movi55 $r1,#0x0
5ef8: 40 52 98 02 and $r5,$r5,$r6
5efc: 3e 17 ff f8 sbi.gp $r1,[+#-8]
5f00: 04 1f 80 01 lwi $r1,[$sp+#0x4]
5f04: 40 02 90 04 or $r0,$r5,$r4
5f08: 3e 00 00 02 sbi.gp $r0,[+#0x2]
5f0c: 2e 00 00 14 lbi.gp $r0,[+#0x14]
5f10: c8 05 bnez38 $r0,0x5f1a
5f12: f2 01 lwi37.sp $r2,[+#0x4]
5f14: 2e 70 00 02 lbi.gp $r7,[+#0x2]
5f18: d5 32 j8 0x5f7c
5f1a: 84 00 movi55 $r0,#0x0
5f1c: 3e 58 17 30 addi.gp $r5,#0x1730
5f20: 3e 18 09 38 addi.gp $r1,#0x938 ; $r1 = $gp+0x938
5f24: 38 40 80 00 lb $r4,[$r1+($r0<<#0x0)]
5f28: 38 61 00 00 lb $r6,[$r2+($r0<<#0x0)]
5f2c: 38 32 80 00 lb $r3,[$r5+($r0<<#0x0)]
5f30: 40 42 10 05 nor $r4,$r4,$r4
5f34: 40 42 18 02 and $r4,$r4,$r6
5f38: 40 41 90 04 or $r4,$r3,$r4
5f3c: 38 30 80 08 sb $r3,[$r1+($r0<<#0x0)]
5f40: 38 41 00 08 sb $r4,[$r2+($r0<<#0x0)]
5f44: 44 30 00 1d movi $r3,#0x1d
5f48: 9c 01 addi333 $r0,$r0,#0x1
5f4a: 4c 01 ff ed bne $r0,$r3,0x5f24
5f4e: f1 01 lwi37.sp $r1,[+#0x4]
5f50: 2e 20 00 08 lbi.gp $r2,[+#0x8]
5f54: 2e 70 00 02 lbi.gp $r7,[+#0x2]
5f58: 40 21 08 05 nor $r2,$r2,$r2
5f5c: 2e 10 00 13 lbi.gp $r1,[+#0x13]
5f60: 40 71 1c 02 and $r7,$r2,$r7
5f64: 40 70 9c 04 or $r7,$r1,$r7
5f68: f2 01 lwi37.sp $r2,[+#0x4]
5f6a: 97 f8 zeb33 $r7,$r7
5f6c: 3e 10 00 08 sbi.gp $r1,[+#0x8]
5f70: 44 00 00 00 movi $r0,#0x0
5f74: 3e 00 00 14 sbi.gp $r0,[+#0x14]
5f78: 3e 70 00 02 sbi.gp $r7,[+#0x2]
5f7c: 2e 10 00 15 lbi.gp $r1,[+#0x15]
5f80: c9 08 bnez38 $r1,0x5f90
5f82: 46 30 01 00 sethi $r3,#0x100
5f86: 14 3f 80 02 swi $r3,[$sp+#0x8]
5f8a: 2e 60 00 0d lbi.gp $r6,[+#0xd]
5f8e: d5 19 j8 0x5fc0
5f90: 2e 30 00 07 lbi.gp $r3,[+#0x7]
5f94: 46 20 01 00 sethi $r2,#0x100
5f98: 2e 60 00 0d lbi.gp $r6,[+#0xd]
5f9c: f2 82 swi37.sp $r2,[+#0x8]
5f9e: 40 31 8c 05 nor $r3,$r3,$r3
5fa2: 2e 20 00 12 lbi.gp $r2,[+#0x12]
5fa6: 40 61 98 02 and $r6,$r3,$r6
5faa: 40 61 18 04 or $r6,$r2,$r6
5fae: f3 02 lwi37.sp $r3,[+#0x8]
5fb0: 97 b0 zeb33 $r6,$r6
5fb2: 3e 20 00 07 sbi.gp $r2,[+#0x7]
5fb6: 84 20 movi55 $r1,#0x0
5fb8: 3e 10 00 15 sbi.gp $r1,[+#0x15]
5fbc: 3e 60 00 0d sbi.gp $r6,[+#0xd]
5fc0: 2e 00 00 0c lbi.gp $r0,[+#0xc]
5fc4: 4c 03 00 08 beq $r0,$r6,0x5fd4
5fc8: 84 21 movi55 $r1,#0x1
5fca: 3e 17 ff f6 sbi.gp $r1,[+#-10]
5fce: 3e 60 0b 2c sbi.gp $r6,[+#0xb2c]
5fd2: d5 0b j8 0x5fe8
5fd4: 2e 17 ff f7 lbi.gp $r1,[+#-9]
5fd8: c1 08 beqz38 $r1,0x5fe8
5fda: 84 20 movi55 $r1,#0x0
5fdc: 3e 17 ff f7 sbi.gp $r1,[+#-9]
5fe0: 44 10 00 01 movi $r1,#0x1
5fe4: 3e 17 ff f6 sbi.gp $r1,[+#-10]
5fe8: 3e 08 13 28 addi.gp $r0,#0x1328
5fec: 3e 18 17 2c addi.gp $r1,#0x172c
5ff0: 84 44 movi55 $r2,#0x4
5ff2: 49 00 20 4d jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
5ff6: c8 05 bnez38 $r0,0x6000
5ff8: 44 00 ca a4 movi $r0,#0xcaa4
5ffc: b6 1f swi450 $r0,[$sp]
5ffe: d5 11 j8 0x6020
6000: 44 10 ca a4 movi $r1,#0xcaa4
6004: b6 3f swi450 $r1,[$sp]
6006: 3e 18 13 28 addi.gp $r1,#0x1328
600a: 50 0f 80 0c addi $r0,$sp,#0xc
600e: 84 44 movi55 $r2,#0x4
6010: 49 00 20 4a jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6014: 84 21 movi55 $r1,#0x1
6016: 3c 1f ff ed swi.gp $r1,[+#-76]
601a: f1 03 lwi37.sp $r1,[+#0xc]
601c: 3c 1e 00 09 swi.gp $r1,[+#0x24]
6020: 2e 00 00 01 lbi.gp $r0,[+#0x1]
6024: 4c 03 80 08 beq $r0,$r7,0x6034
6028: 44 10 00 01 movi $r1,#0x1
602c: 3c 1f ff eb swi.gp $r1,[+#-84]
6030: 3e 70 09 30 sbi.gp $r7,[+#0x930]
6034: 3e 08 10 b0 addi.gp $r0,#0x10b0
6038: 3e 18 13 2c addi.gp $r1,#0x132c
603c: 44 20 00 1d movi $r2,#0x1d
6040: 49 00 20 26 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
6044: 4e 02 00 c8 beqz $r0,0x61d4
6048: b4 7f lwi450 $r3,[$sp]
604a: 50 9f 80 50 addi $r9,$sp,#0x50
604e: 3e 18 09 32 addi.gp $r1,#0x932
6052: 84 46 movi55 $r2,#0x6
6054: 80 09 mov55 $r0,$r9
6056: dd 23 jral5 $r3
6058: 50 af 80 30 addi $r10,$sp,#0x30
605c: b4 7f lwi450 $r3,[$sp]
605e: 3e 18 10 b0 addi.gp $r1,#0x10b0
6062: 44 20 00 1d movi $r2,#0x1d
6066: 80 0a mov55 $r0,$r10
6068: 3e 68 09 58 addi.gp $r6,#0x958
606c: 4b e0 0c 01 jral $lp,$r3
6070: 3a 03 0c 04 lmw.bim $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
6074: 50 7f 80 10 addi $r7,$sp,#0x10
6078: 80 a7 mov55 $r5,$r7
607a: 84 80 movi55 $r4,#0x0
607c: 3a 02 8c 24 smw.bim $r0,[$r5],$r3,#0x0 ! {$r0~$r3}
6080: 3a 03 0c 00 lmw.bi $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
6084: 3a 02 88 24 smw.bim $r0,[$r5],$r2,#0x0 ! {$r0~$r2}
6088: 10 32 80 00 sbi $r3,[$r5+#0x0]
608c: 38 15 10 00 lb $r1,[$r10+($r4<<#0x0)]
6090: 38 03 90 00 lb $r0,[$r7+($r4<<#0x0)]
6094: 40 00 80 02 and $r0,$r1,$r0
6098: 40 10 04 03 xor $r1,$r0,$r1
609c: 38 03 90 08 sb $r0,[$r7+($r4<<#0x0)]
60a0: 38 15 10 08 sb $r1,[$r10+($r4<<#0x0)]
60a4: 44 00 00 1d movi $r0,#0x1d
60a8: 9d 21 addi333 $r4,$r4,#0x1
60aa: 4c 40 7f f1 bne $r4,$r0,0x608c
60ae: 80 29 mov55 $r1,$r9
60b0: 50 5f 80 56 addi $r5,$sp,#0x56
60b4: 84 00 movi55 $r0,#0x0
60b6: 87 81 movi55 $fp,#0x1
60b8: a6 88 lbi333 $r2,[$r1+#0x0]
60ba: 40 81 0c 09 srli $r8,$r2,#0x3
60be: 54 31 00 07 andi $r3,$r2,#0x7
60c2: c2 13 beqz38 $r2,0x60e8
60c4: 38 45 20 00 lb $r4,[$r10+($r8<<#0x0)]
60c8: 40 2e 0c 0c sll $r2,$fp,$r3
60cc: 40 32 0c 0e sra $r3,$r4,$r3
60d0: 40 21 08 05 nor $r2,$r2,$r2
60d4: 96 dc xlsb33 $r3,$r3
60d6: 40 21 10 02 and $r2,$r2,$r4
60da: 9d 81 addi333 $r6,$r0,#0x1
60dc: c3 05 beqz38 $r3,0x60e6
60de: 38 25 20 08 sb $r2,[$r10+($r8<<#0x0)]
60e2: 96 30 zeb33 $r0,$r6
60e4: d5 02 j8 0x60e8
60e6: ae c8 sbi333 $r3,[$r1+#0x0]
60e8: 9c 49 addi333 $r1,$r1,#0x1
60ea: d9 e7 bnes38 $r1,0x60b8
60ec: 85 00 movi55 $r8,#0x0
60ee: 80 c8 mov55 $r6,$r8
60f0: 87 81 movi55 $fp,#0x1
60f2: 51 e4 00 00 addi $lp,$r8,#0x0
60f6: d5 2f j8 0x6154
60f8: 40 14 10 0e sra $r1,$r8,$r4
60fc: 96 4c xlsb33 $r1,$r1
60fe: c1 1b beqz38 $r1,0x6134
6100: e6 06 slti45 $r0,#0x6
6102: e8 11 beqzs8 0x6124
6104: 44 20 00 00 movi $r2,#0x0
6108: 38 14 88 00 lb $r1,[$r9+($r2<<#0x0)]
610c: c9 06 bnez38 $r1,0x6118
610e: 9c 01 addi333 $r0,$r0,#0x1
6110: 38 54 88 08 sb $r5,[$r9+($r2<<#0x0)]
6114: 96 00 zeb33 $r0,$r0
6116: d5 0f j8 0x6134
6118: 9c 91 addi333 $r2,$r2,#0x1
611a: 84 26 movi55 $r1,#0x6
611c: 4c 20 ff f6 bne $r2,$r1,0x6108
6120: 48 00 00 0a j 0x6134
6124: 38 23 98 00 lb $r2,[$r7+($r6<<#0x0)]
6128: 40 1e 10 0c sll $r1,$fp,$r4
612c: 40 10 88 04 or $r1,$r1,$r2
6130: 38 13 98 08 sb $r1,[$r7+($r6<<#0x0)]
6134: 9d 69 addi333 $r5,$r5,#0x1
6136: 9d 21 addi333 $r4,$r4,#0x1
6138: 84 48 movi55 $r2,#0x8
613a: 97 68 zeb33 $r5,$r5
613c: 4c 41 7f de bne $r4,$r2,0x60f8
6140: 40 1f 08 00 add $r1,$lp,$r2
6144: 50 63 00 01 addi $r6,$r6,#0x1
6148: 44 30 00 1d movi $r3,#0x1d
614c: 55 e0 80 ff andi $lp,$r1,#0xff
6150: 4c 61 80 07 beq $r6,$r3,0x615e
6154: 38 85 18 00 lb $r8,[$r10+($r6<<#0x0)]
6158: 80 be mov55 $r5,$lp
615a: 84 80 movi55 $r4,#0x0
615c: d5 ce j8 0x60f8
615e: 80 09 mov55 $r0,$r9
6160: 3e 18 09 32 addi.gp $r1,#0x932
6164: 84 46 movi55 $r2,#0x6
6166: 49 00 1f 93 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
616a: c0 0a beqz38 $r0,0x617e
616c: b4 7f lwi450 $r3,[$sp]
616e: 80 29 mov55 $r1,$r9
6170: 3e 08 09 32 addi.gp $r0,#0x932
6174: 84 46 movi55 $r2,#0x6
6176: dd 23 jral5 $r3
6178: 84 21 movi55 $r1,#0x1
617a: 3c 1f ff eb swi.gp $r1,[+#-84]
617e: 80 07 mov55 $r0,$r7
6180: 3e 18 09 58 addi.gp $r1,#0x958
6184: 44 20 00 1d movi $r2,#0x1d
6188: 49 00 1f 82 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
618c: c8 02 bnez38 $r0,0x6190
618e: d5 1c j8 0x61c6
6190: 3a 03 8c 04 lmw.bim $r0,[$r7],$r3,#0x0 ! {$r0~$r3}
6194: 3e 48 09 58 addi.gp $r4,#0x958
6198: 3a 02 0c 24 smw.bim $r0,[$r4],$r3,#0x0 ! {$r0~$r3}
619c: 3a 03 8c 00 lmw.bi $r0,[$r7],$r3,#0x0 ! {$r0~$r3}
61a0: 3a 02 08 24 smw.bim $r0,[$r4],$r2,#0x0 ! {$r0~$r2}
61a4: 84 21 movi55 $r1,#0x1
61a6: 2e 00 00 03 lbi.gp $r0,[+#0x3]
61aa: ae e0 sbi333 $r3,[$r4+#0x0]
61ac: 3c 1f ff ec swi.gp $r1,[+#-80]
61b0: c8 08 bnez38 $r0,0x61c0
61b2: f2 01 lwi37.sp $r2,[+#0x4]
61b4: f3 02 lwi37.sp $r3,[+#0x8]
61b6: 2e 70 00 02 lbi.gp $r7,[+#0x2]
61ba: 2e 60 00 0d lbi.gp $r6,[+#0xd]
61be: d5 0b j8 0x61d4
61c0: 84 00 movi55 $r0,#0x0
61c2: 3c 0f ff ec swi.gp $r0,[+#-80]
61c6: f0 01 lwi37.sp $r0,[+#0x4]
61c8: 04 1f 80 02 lwi $r1,[$sp+#0x8]
61cc: 2e 70 00 02 lbi.gp $r7,[+#0x2]
61d0: 2e 60 00 0d lbi.gp $r6,[+#0xd]
61d4: 3e 70 00 01 sbi.gp $r7,[+#0x1]
61d8: 3e 60 00 0c sbi.gp $r6,[+#0xc]
61dc: b4 7f lwi450 $r3,[$sp]
61de: 3e 18 10 b0 addi.gp $r1,#0x10b0
61e2: 44 20 00 1d movi $r2,#0x1d
61e6: 3e 08 13 2c addi.gp $r0,#0x132c
61ea: dd 23 jral5 $r3
61ec: b4 7f lwi450 $r3,[$sp]
61ee: 3e 18 13 28 addi.gp $r1,#0x1328
61f2: 84 44 movi55 $r2,#0x4
61f4: 3e 08 17 2c addi.gp $r0,#0x172c
61f8: dd 23 jral5 $r3
61fa: ec 5c addi10.sp #0x5c
61fc: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
6200: dd 9e ret5 $lp
6202: 92 00 nop16
; 0x6204: check_packet_crc16(pkt *$r0) -> $r0=1 if crc16 matches.
6204: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
6208: 9c 87 addi333 $r2,$r0,#0x7 ; $r2 = pkt+7
620a: a7 90 lbi333 $r6,[$r2+#0x0] ; $r6 = pkt[7]
620c: 9d 06 addi333 $r4,$r0,#0x6 ; $r4 = pkt+6
620e: 84 60 movi55 $r3,#0x0 ;
6210: a7 60 lbi333 $r5,[$r4+#0x0] ; $r5 = pkt[6]
6212: ae e0 sbi333 $r3,[$r4+#0x0] ; pkt[6] = 0
6214: ae d0 sbi333 $r3,[$r2+#0x0] ; pkg[7] = 0
6216: 80 20 mov55 $r1,$r0 ; crc16 src=$r0
6218: 44 20 00 40 movi $r2,#0x40 ; crc16 len=0x40
621c: 40 63 20 08 slli $r6,$r6,#0x8 ; $r6 = $r6 << 8
6220: 44 00 ff ff movi $r0,#0xffff ; crc16 iv=0xffff
6224: 40 63 14 04 or $r6,$r6,$r5 ; $r6 = $r6 | $r5 (the crc16 from the packet)
6228: 49 ff d1 4c jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> $r0
622c: 40 03 00 03 xor $r0,$r6,$r0 ; $r0 = $r6 ^ $r0 (=0 if $r6 == $r0)
6230: 5c 00 00 01 slti $r0,$r0,#0x1 ; if crc16 matched, $r0 will now be 1
6234: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
6238: dd 9e ret5 $lp
623a: 92 00 nop16
; ----------- 0x623c: validate_packet()
; ----------- if packet at $gp+0x978 has a good crc and [$gp-72] (packet_in_progress) == 0:
; ----------- packet_in_prog = 1; copy packet to $gp+0xb34
623c: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
6240: 3e 08 09 78 addi.gp $r0,#0x978 ; check_packet_crc pkt = $gp+0x978
6244: 49 ff ff e0 jal 0x6204 ; check_packet_crc16(pkt) -> $r0 crc_ok
6248: 80 80 mov55 $r4,$r0 ; $r4 = crc_ok
624a: 84 01 movi55 $r0,#0x1
624c: 4c 40 40 1c bne $r4,$r0,0x6284 ; if !crc_ok, goto out
6250: 3c 0d ff ee lwi.gp $r0,[+#-72] ; $r0 = [$gp-72] (packet_in_prog)
6254: 4e 03 00 18 bnez $r0,0x6284 ; if packet_in_prog, goto out
6258: 3e 68 09 78 addi.gp $r6,#0x978 ; $r6 = $gp+0x978
625c: 3a 03 0c 04 lmw.bim $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
6260: 3e 58 0b 34 addi.gp $r5,#0xb34 ; $r5 = $gp+0xb34
6264: 3a 02 8c 24 smw.bim $r0,[$r5],$r3,#0x0 ! {$r0~$r3}
6268: 3a 03 0c 04 lmw.bim $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
626c: 3a 02 8c 24 smw.bim $r0,[$r5],$r3,#0x0 ! {$r0~$r3}
6270: 3a 03 0c 04 lmw.bim $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
6274: 3a 02 8c 24 smw.bim $r0,[$r5],$r3,#0x0 ! {$r0~$r3}
6278: 3a 03 0c 00 lmw.bi $r0,[$r6],$r3,#0x0 ! {$r0~$r3}
627c: 3a 02 8c 20 smw.bi $r0,[$r5],$r3,#0x0 ! {$r0~$r3}
6280: 3c 4f ff ee swi.gp $r4,[+#-72] ; [$gp-72] = crc_ok
; label out:
6284: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
6288: dd 9e ret5 $lp
628a: 92 00 nop16
; ---------- 0x628c: add_packet_crc16(pkt=$r0)
628c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6290: ef fc addi10.sp #-4
6292: 84 20 movi55 $r1,#0x0
6294: 9d c6 addi333 $r7,$r0,#0x6
6296: 9d 87 addi333 $r6,$r0,#0x7
6298: ae 78 sbi333 $r1,[$r7+#0x0]
629a: ae 70 sbi333 $r1,[$r6+#0x0]
629c: 44 20 00 40 movi $r2,#0x40
62a0: 50 10 00 00 addi $r1,$r0,#0x0
62a4: 44 00 ff ff movi $r0,#0xffff
62a8: 49 ff d1 0c jal 0x4c0 ; crc16(int iv=$r0, void *src=$r1, int length=$r2) -> (short)$r0
62ac: 40 10 20 09 srli $r1,$r0,#0x8
62b0: ae 38 sbi333 $r0,[$r7+#0x0]
62b2: ae 70 sbi333 $r1,[$r6+#0x0]
62b4: ec 04 addi10.sp #0x4
62b6: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
62ba: dd 9e ret5 $lp
; ----------- 0x62bc: handle_command_27($r0=subcmd, $r1=offset, $r2=length, $r3=payload)
62bc: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
62c0: ef fc addi10.sp #-4
62c2: 80 81 mov55 $r4,$r1
62c4: 96 00 zeb33 $r0,$r0
62c6: 80 23 mov55 $r1,$r3 ; $r1 = payload
62c8: 96 90 zeb33 $r2,$r2
62ca: 80 64 mov55 $r3,$r4 ; $r3 = offset
; vvvv patch1: original: call this function to do.. stuff
62cc: 49 ff dc 0e jal 0x1ae8 ; command_27_thingy() -> $r0 result
; ++++ patch1: skip the function call, just set $r0
; 62cc: 44 00 00 69 movi $r0,#0x69 ; ............nice
; ^^^^ patch1: end hunk
62d0: 97 80 zeb33 $r6,$r0 ; $r6 = result
62d2: 84 01 movi55 $r0,#0x1
62d4: 4c 60 00 28 beq $r6,$r0,0x6324 ; if result == 1: goto out (NOTE: i don't think this is possible..?)
; vvvv patch2: original: memset replypacket to all 00
62d8: 3e 78 08 f0 addi.gp $r7,#0x8f0 ; $r7 = replypkt
62dc: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
62de: 80 07 mov55 $r0,$r7 ; memset dest = replypkt
62e0: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
62e4: 49 00 1e ea jal 0xa0b8 ; memset(replypkt, 0x00, 0x40)
; ++++ patch2: copy 0x38 bytes from the address into the given packet
; 62d8: 3e 08 08 f8 addi.gp $r0,#0x8f8 ; memcpy dest = replypkt+8
; 62dc: 80 23 mov55 $r1,$r3 ; memcpy src = offset
; 62de: 92 00 nop16 ; (padding so we don't mess up offsets)
; 62e0: 40 00 00 09 nop ; ($r2 is still size from above)
; 62e4: 49 00 1e e0 jal 0xa0a4 ; memcpy(dest=replypkt+8, src=offset, size)
; ^^^^ patch2: end hunk
62e8: 80 07 mov55 $r0,$r7 ; $r0 = replypkt
62ea: 44 10 00 27 movi $r1,#0x27
62ee: 18 10 00 01 sbi.bi $r1,[$r0],#0x1 ; replypkt[0] = 0x27
; vvvv patch3: original: set replypkt[1]
62f2: 58 13 00 08 ori $r1,$r6,#0x8 ; $r1 = result | 0x08
62f6: ae 40 sbi333 $r1,[$r0+#0x0] ; replypkt[1] = result | 0x08
62f8: ce 04 bnez38 $r6,0x6300 ; if result == 0:
62fa: 84 21 movi55 $r1,#0x1 ;
62fc: 10 10 00 00 sbi $r1,[$r0+#0x0] ; replypkt[1] = 1
; ++++ patch3: set replypkt[1:5]
; 62f2: ae 80 sbi333 $r2,[$r0+#0x0] ; replypkt[1] = size
; 62f4: 40 11 c0 09 srli $r1,$r3,#0x10 ; $r1 = high halfword of offset
; 62f8: ac 41 shi333 $r1,[$r0+#0x2] ; replypkt[2:3] = high halfword of offset
; 62fa: ac c2 shi333 $r3,[$r0+#0x4] ; replypkt[4:5] = low halfword of offset
; 62fc: 40 00 00 09 nop ; (padding to avoid messing up offsets)
; ^^^^ patch3: end hunk
6300: 3e 08 08 f0 addi.gp $r0,#0x8f0
6304: 49 ff ff c4 jal 0x628c ; add_packet_crc(replypkt)
6308: 46 20 01 00 sethi $r2,#0x100
630c: 84 60 movi55 $r3,#0x0
630e: 3e 08 09 c0 addi.gp $r0,#0x9c0
6312: 3e 18 08 f0 addi.gp $r1,#0x8f0
6316: 3c 3f ff ee swi.gp $r3,[+#-72] ; packet_in_progress = 0
631a: ec 04 addi10.sp #0x4
631c: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6320: 48 ff d1 0c j 0x538 ; return ringbuf_write(ringbuf, replypkt)
6324: ec 04 addi10.sp #0x4 ;label out:
6326: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
632a: dd 9e ret5 $lp
; ----------- 0x632c: handle_command_25(subcmd, offset, size)
632c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6330: ef fc addi10.sp #-4
6332: 97 09 zeh33 $r4,$r1
6334: 96 00 zeb33 $r0,$r0
6336: 80 23 mov55 $r1,$r3
6338: 96 90 zeb33 $r2,$r2
633a: 80 64 mov55 $r3,$r4
633c: 49 ff dc 2c jal 0x1b94
6340: 97 c0 zeb33 $r7,$r0
6342: 84 01 movi55 $r0,#0x1
6344: 4c 70 00 1f beq $r7,$r0,0x6382
6348: 3e 68 08 f0 addi.gp $r6,#0x8f0
634c: 94 86 slli333 $r2,$r0,#0x6
634e: 84 20 movi55 $r1,#0x0
6350: 80 06 mov55 $r0,$r6
6352: 49 00 1e b3 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6356: 80 26 mov55 $r1,$r6
6358: 44 00 00 25 movi $r0,#0x25
635c: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
6360: 80 06 mov55 $r0,$r6
6362: af c8 sbi333 $r7,[$r1+#0x0]
6364: 49 ff ff 94 jal 0x628c ; add_packet_crc(pkt=$r0)
6368: 46 20 01 00 sethi $r2,#0x100
636c: 84 60 movi55 $r3,#0x0
636e: 80 26 mov55 $r1,$r6
6370: 3e 08 09 c0 addi.gp $r0,#0x9c0
6374: 3c 3f ff ee swi.gp $r3,[+#-72]
6378: ec 04 addi10.sp #0x4
637a: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
637e: 48 ff d0 dd j 0x538 ; ringbuf_write()
6382: ec 04 addi10.sp #0x4
6384: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6388: dd 9e ret5 $lp
638a: 92 00 nop16
; ----------- 0x638c: handle_command_24(subcmd, offset, size)
638c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6390: ef fc addi10.sp #-4
6392: 97 09 zeh33 $r4,$r1
6394: 96 00 zeb33 $r0,$r0
6396: 80 23 mov55 $r1,$r3
6398: 96 90 zeb33 $r2,$r2
639a: 80 64 mov55 $r3,$r4
639c: 49 ff de 7a jal 0x2090
63a0: 97 c0 zeb33 $r7,$r0
63a2: 84 01 movi55 $r0,#0x1
63a4: 4c 70 00 1f beq $r7,$r0,0x63e2
63a8: 3e 68 08 f0 addi.gp $r6,#0x8f0
63ac: 94 86 slli333 $r2,$r0,#0x6
63ae: 84 20 movi55 $r1,#0x0
63b0: 80 06 mov55 $r0,$r6
63b2: 49 00 1e 83 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
63b6: 80 26 mov55 $r1,$r6
63b8: 44 00 00 24 movi $r0,#0x24
63bc: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
63c0: 80 06 mov55 $r0,$r6
63c2: af c8 sbi333 $r7,[$r1+#0x0]
63c4: 49 ff ff 64 jal 0x628c ; add_packet_crc(pkt=$r0)
63c8: 46 20 01 00 sethi $r2,#0x100
63cc: 84 60 movi55 $r3,#0x0
63ce: 80 26 mov55 $r1,$r6
63d0: 3e 08 09 c0 addi.gp $r0,#0x9c0
63d4: 3c 3f ff ee swi.gp $r3,[+#-72]
63d8: ec 04 addi10.sp #0x4
63da: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
63de: 48 ff d0 ad j 0x538 ; ringbuf_write()
63e2: ec 04 addi10.sp #0x4
63e4: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
63e8: dd 9e ret5 $lp
63ea: 92 00 nop16
63ec: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
63f0: ef fc addi10.sp #-4
63f2: 96 c8 zeb33 $r3,$r1
63f4: 96 00 zeb33 $r0,$r0
63f6: 80 22 mov55 $r1,$r2
63f8: 80 43 mov55 $r2,$r3
63fa: 49 ff de 8f jal 0x2118
63fe: 97 c0 zeb33 $r7,$r0
6400: 84 01 movi55 $r0,#0x1
6402: 4c 70 00 20 beq $r7,$r0,0x6442
6406: 3e 68 08 f0 addi.gp $r6,#0x8f0
640a: 94 86 slli333 $r2,$r0,#0x6
640c: 84 20 movi55 $r1,#0x0
640e: 80 06 mov55 $r0,$r6
6410: 49 00 1e 54 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6414: 80 26 mov55 $r1,$r6
6416: 44 00 00 23 movi $r0,#0x23
641a: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
641e: 80 06 mov55 $r0,$r6
6420: 10 70 80 00 sbi $r7,[$r1+#0x0]
6424: 49 ff ff 34 jal 0x628c ; add_packet_crc(pkt=$r0)
6428: 46 20 01 00 sethi $r2,#0x100
642c: 84 60 movi55 $r3,#0x0
642e: 80 26 mov55 $r1,$r6
6430: 3e 08 09 c0 addi.gp $r0,#0x9c0
6434: 3c 3f ff ee swi.gp $r3,[+#-72]
6438: ec 04 addi10.sp #0x4
643a: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
643e: 48 ff d0 7d j 0x538 ; ringbuf_write()
6442: ec 04 addi10.sp #0x4
6444: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6448: dd 9e ret5 $lp
644a: 92 00 nop16
; ----------- 0x644c: handle_command_26(subcmd, offset, size)
644c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6450: ef fc addi10.sp #-4
6452: 97 09 zeh33 $r4,$r1
6454: 96 00 zeb33 $r0,$r0
6456: 80 23 mov55 $r1,$r3
6458: 96 90 zeb33 $r2,$r2
645a: 80 64 mov55 $r3,$r4
645c: 49 ff dd 32 jal 0x1ec0
6460: 97 80 zeb33 $r6,$r0
6462: 84 01 movi55 $r0,#0x1
6464: 4c 60 00 28 beq $r6,$r0,0x64b4
6468: 3e 78 08 f0 addi.gp $r7,#0x8f0
646c: 84 20 movi55 $r1,#0x0
646e: 80 07 mov55 $r0,$r7
6470: 44 20 00 40 movi $r2,#0x40
6474: 49 00 1e 22 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6478: 80 07 mov55 $r0,$r7
647a: 44 10 00 26 movi $r1,#0x26
647e: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
6482: 58 13 00 08 ori $r1,$r6,#0x8
6486: ae 40 sbi333 $r1,[$r0+#0x0]
6488: ce 04 bnez38 $r6,0x6490
648a: 84 21 movi55 $r1,#0x1
648c: 10 10 00 00 sbi $r1,[$r0+#0x0]
6490: 3e 08 08 f0 addi.gp $r0,#0x8f0
6494: 49 ff fe fc jal 0x628c ; add_packet_crc(pkt=$r0)
6498: 46 20 01 00 sethi $r2,#0x100
649c: 84 60 movi55 $r3,#0x0
649e: 3e 08 09 c0 addi.gp $r0,#0x9c0
64a2: 3e 18 08 f0 addi.gp $r1,#0x8f0
64a6: 3c 3f ff ee swi.gp $r3,[+#-72]
64aa: ec 04 addi10.sp #0x4
64ac: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
64b0: 48 ff d0 44 j 0x538 ; ringbuf_write()
64b4: ec 04 addi10.sp #0x4
64b6: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
64ba: dd 9e ret5 $lp
64bc: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
64c0: ef fc addi10.sp #-4
64c2: 97 09 zeh33 $r4,$r1
64c4: 96 00 zeb33 $r0,$r0
64c6: 80 23 mov55 $r1,$r3
64c8: 96 90 zeb33 $r2,$r2
64ca: 80 64 mov55 $r3,$r4
64cc: 49 ff dd 4e jal 0x1f68
64d0: 97 c0 zeb33 $r7,$r0
64d2: 84 01 movi55 $r0,#0x1
64d4: 4c 70 00 1f beq $r7,$r0,0x6512
64d8: 3e 68 08 f0 addi.gp $r6,#0x8f0
64dc: 94 86 slli333 $r2,$r0,#0x6
64de: 84 20 movi55 $r1,#0x0
64e0: 80 06 mov55 $r0,$r6
64e2: 49 00 1d eb jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
64e6: 80 26 mov55 $r1,$r6
64e8: 44 00 00 31 movi $r0,#0x31
64ec: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
64f0: 80 06 mov55 $r0,$r6
64f2: af c8 sbi333 $r7,[$r1+#0x0]
64f4: 49 ff fe cc jal 0x628c ; add_packet_crc(pkt=$r0)
64f8: 46 20 01 00 sethi $r2,#0x100
64fc: 84 60 movi55 $r3,#0x0
64fe: 80 26 mov55 $r1,$r6
6500: 3e 08 09 c0 addi.gp $r0,#0x9c0
6504: 3c 3f ff ee swi.gp $r3,[+#-72]
6508: ec 04 addi10.sp #0x4
650a: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
650e: 48 ff d0 15 j 0x538 ; ringbuf_write()
6512: ec 04 addi10.sp #0x4
6514: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6518: dd 9e ret5 $lp
651a: 92 00 nop16
; ----------- 0x651c: handle_command_22(subcmd=$r0, offset=$r1, $r2=packet[4], $r3=packet+8)
651c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6520: ef fc addi10.sp #-4
6522: 97 09 zeh33 $r4,$r1
6524: 96 00 zeb33 $r0,$r0
6526: 80 23 mov55 $r1,$r3
6528: 96 90 zeb33 $r2,$r2
652a: 80 64 mov55 $r3,$r4
652c: 49 ff dd 62 jal 0x1ff0
6530: 97 c0 zeb33 $r7,$r0
6532: 84 01 movi55 $r0,#0x1
6534: 4c 70 00 1f beq $r7,$r0,0x6572
6538: 3e 68 08 f0 addi.gp $r6,#0x8f0
653c: 94 86 slli333 $r2,$r0,#0x6
653e: 84 20 movi55 $r1,#0x0
6540: 80 06 mov55 $r0,$r6
6542: 49 00 1d bb jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6546: 80 26 mov55 $r1,$r6
6548: 44 00 00 22 movi $r0,#0x22
654c: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
6550: 80 06 mov55 $r0,$r6
6552: af c8 sbi333 $r7,[$r1+#0x0]
6554: 49 ff fe 9c jal 0x628c ; add_packet_crc(pkt=$r0)
6558: 46 20 01 00 sethi $r2,#0x100
655c: 84 60 movi55 $r3,#0x0
655e: 80 26 mov55 $r1,$r6
6560: 3e 08 09 c0 addi.gp $r0,#0x9c0
6564: 3c 3f ff ee swi.gp $r3,[+#-72]
6568: ec 04 addi10.sp #0x4
656a: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
656e: 48 ff cf e5 j 0x538 ; ringbuf_write()
6572: ec 04 addi10.sp #0x4
6574: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6578: dd 9e ret5 $lp
657a: 92 00 nop16
657c: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6580: ef fc addi10.sp #-4
6582: 84 44 movi55 $r2,#0x4
6584: 96 48 zeb33 $r1,$r1
6586: 96 00 zeb33 $r0,$r0
6588: 4c 11 00 24 beq $r1,$r2,0x65d0
658c: e6 25 slti45 $r1,#0x5
658e: e8 0a beqzs8 0x65a2
6590: 84 42 movi55 $r2,#0x2
6592: 4c 11 00 17 beq $r1,$r2,0x65c0
6596: e6 23 slti45 $r1,#0x3
6598: e8 18 beqzs8 0x65c8
659a: 84 41 movi55 $r2,#0x1
659c: 4c 11 40 0b bne $r1,$r2,0x65b2
65a0: d5 0c j8 0x65b8
65a2: 84 46 movi55 $r2,#0x6
65a4: 4c 11 00 1e beq $r1,$r2,0x65e0
65a8: e2 22 slt45 $r1,$r2
65aa: e9 17 bnezs8 0x65d8
65ac: 84 47 movi55 $r2,#0x7
65ae: 4c 11 00 1d beq $r1,$r2,0x65e8
65b2: 84 c0 movi55 $r6,#0x0
65b4: 48 00 00 20 j 0x65f4
65b8: 49 ff d8 22 jal 0x15fc
65bc: 97 80 zeb33 $r6,$r0
65be: d5 18 j8 0x65ee
65c0: 49 ff d8 78 jal 0x16b0
65c4: 97 80 zeb33 $r6,$r0
65c6: d5 14 j8 0x65ee
65c8: 49 ff d8 4c jal 0x1660
65cc: 97 80 zeb33 $r6,$r0
65ce: d5 10 j8 0x65ee
65d0: 49 ff d4 aa jal 0xf24
65d4: 97 80 zeb33 $r6,$r0
65d6: d5 0c j8 0x65ee
65d8: 49 ff d7 b2 jal 0x153c
65dc: 97 80 zeb33 $r6,$r0
65de: d5 08 j8 0x65ee
65e0: 49 ff d4 4a jal 0xe74
65e4: 97 80 zeb33 $r6,$r0
65e6: d5 04 j8 0x65ee
65e8: 49 ff d7 e2 jal 0x15ac
65ec: 97 80 zeb33 $r6,$r0
65ee: 84 01 movi55 $r0,#0x1
65f0: 4c 60 00 21 beq $r6,$r0,0x6632
65f4: 3e 78 08 f0 addi.gp $r7,#0x8f0
65f8: 44 20 00 40 movi $r2,#0x40
65fc: 84 20 movi55 $r1,#0x0
65fe: 80 07 mov55 $r0,$r7
6600: 49 00 1d 5c jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6604: 80 27 mov55 $r1,$r7
6606: 44 00 00 21 movi $r0,#0x21
660a: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
660e: 80 07 mov55 $r0,$r7
6610: 10 60 80 00 sbi $r6,[$r1+#0x0]
6614: 49 ff fe 3c jal 0x628c ; add_packet_crc(pkt=$r0)
6618: 46 20 01 00 sethi $r2,#0x100
661c: 84 60 movi55 $r3,#0x0
661e: 80 27 mov55 $r1,$r7
6620: 3e 08 09 c0 addi.gp $r0,#0x9c0
6624: 3c 3f ff ee swi.gp $r3,[+#-72]
6628: ec 04 addi10.sp #0x4
662a: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
662e: 48 ff cf 85 j 0x538 ; ringbuf_write()
6632: ec 04 addi10.sp #0x4
6634: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6638: dd 9e ret5 $lp
663a: 92 00 nop16
; ---------- 0x663c: handle_command_1a($r0=packet[1], $r1=packet[2:3], $r2=packet+8, $r3=packet[5])
663c: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
6640: ef fc addi10.sp #-4
6642: 3e 68 08 f0 addi.gp $r6,#0x8f0
6646: 97 c0 zeb33 $r7,$r0
6648: 81 41 mov55 $r10,$r1
664a: 83 82 mov55 $fp,$r2
664c: 80 06 mov55 $r0,$r6
664e: 84 20 movi55 $r1,#0x0
6650: 44 20 00 40 movi $r2,#0x40
6654: 54 91 80 ff andi $r9,$r3,#0xff
6658: 49 00 1d 30 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
665c: 80 86 mov55 $r4,$r6
665e: 44 50 00 1a movi $r5,#0x1a
6662: 18 52 00 01 sbi.bi $r5,[$r4],#0x1
6666: 46 f0 01 00 sethi $r15,#0x100
666a: 2e 57 fe 78 lbi.gp $r5,[+#-392]
666e: 50 83 00 02 addi $r8,$r6,#0x2
6672: af e0 sbi333 $r7,[$r4+#0x0]
6674: 44 00 00 f0 movi $r0,#0xf0
6678: 84 80 movi55 $r4,#0x0
667a: 10 44 00 00 sbi $r4,[$r8+#0x0]
667e: d0 08 beqs38 $r0,0x668e
6680: 80 06 mov55 $r0,$r6
6682: 49 ff fe 05 jal 0x628c ; add_packet_crc(pkt=$r0)
6686: 80 26 mov55 $r1,$r6
6688: 3e 08 09 c0 addi.gp $r0,#0x9c0
668c: d5 28 j8 0x66dc
668e: 84 01 movi55 $r0,#0x1
6690: 4c 70 00 06 beq $r7,$r0,0x669c
6694: 84 22 movi55 $r1,#0x2
6696: 4c 70 c0 1b bne $r7,$r1,0x66cc
669a: d5 15 j8 0x66c4
669c: 5c f4 80 39 slti $r15,$r9,#0x39
66a0: e8 16 beqzs8 0x66cc
66a2: 40 04 a8 00 add $r0,$r9,$r10
66a6: 5c f0 02 11 slti $r15,$r0,#0x211
66aa: e8 11 beqzs8 0x66cc
66ac: 3e 18 03 00 addi.gp $r1,#0x300
66b0: 40 05 04 00 add $r0,$r10,$r1
66b4: 80 49 mov55 $r2,$r9
66b6: 80 3c mov55 $r1,$fp
66b8: 49 00 1c f6 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
66bc: 10 74 00 00 sbi $r7,[$r8+#0x0]
66c0: 48 00 00 06 j 0x66cc
66c4: 3e 07 ff e8 sbi.gp $r0,[+#-24]
66c8: 10 04 00 00 sbi $r0,[$r8+#0x0]
66cc: 3e 08 08 f0 addi.gp $r0,#0x8f0
66d0: 49 ff fd de jal 0x628c ; add_packet_crc(pkt=$r0)
66d4: 3e 08 09 c0 addi.gp $r0,#0x9c0
66d8: 3e 18 08 f0 addi.gp $r1,#0x8f0
66dc: 46 20 01 00 sethi $r2,#0x100
66e0: 84 60 movi55 $r3,#0x0
66e2: 3c 3f ff ee swi.gp $r3,[+#-72]
66e6: ec 04 addi10.sp #0x4
66e8: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
66ec: 48 ff cf 26 j 0x538 ; ringbuf_write()
; ----------- handle_command_17($r0=[$gp+b35], $r1=$gp+b3c):
66f0: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
66f4: ef fc addi10.sp #-4
66f6: 3e 88 08 f0 addi.gp $r8,#0x8f0
66fa: 97 c0 zeb33 $r7,$r0
66fc: 80 c1 mov55 $r6,$r1
66fe: 80 08 mov55 $r0,$r8
6700: 84 20 movi55 $r1,#0x0
6702: 44 20 00 40 movi $r2,#0x40
6706: 49 00 1c d9 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
670a: 80 28 mov55 $r1,$r8
670c: 44 00 00 17 movi $r0,#0x17
6710: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
6714: 84 01 movi55 $r0,#0x1
6716: af c8 sbi333 $r7,[$r1+#0x0]
6718: 4c 70 40 70 bne $r7,$r0,0x67f8
671c: 50 73 00 08 addi $r7,$r6,#0x8
6720: a6 38 lbi333 $r0,[$r7+#0x0]
6722: 96 44 xlsb33 $r1,$r0
6724: c9 04 bnez38 $r1,0x672c
6726: 3e 8f fe 78 addi.gp $r8,#-392
672a: d5 07 j8 0x6738
672c: a6 70 lbi333 $r1,[$r6+#0x0]
672e: 3e 8f fe 78 addi.gp $r8,#-392
6732: 10 14 00 00 sbi $r1,[$r8+#0x0]
6736: a6 38 lbi333 $r0,[$r7+#0x0]
6738: 54 10 00 02 andi $r1,$r0,#0x2
673c: c9 02 bnez38 $r1,0x6740
673e: d5 07 j8 0x674c
6740: a6 71 lbi333 $r1,[$r6+#0x1]
6742: 9e 89 subi333 $r2,$r1,#0x1
6744: 96 90 zeb33 $r2,$r2
6746: e6 43 slti45 $r2,#0x3
6748: 4e f3 00 08 bnez $r15,0x6758
674c: 3e 9f fe 79 addi.gp $r9,#-391
6750: 00 14 80 00 lbi $r1,[$r9+#0x0]
6754: 48 00 00 08 j 0x6764
6758: 3e 9f fe 79 addi.gp $r9,#-391
675c: 10 14 80 00 sbi $r1,[$r9+#0x0]
6760: 00 03 80 00 lbi $r0,[$r7+#0x0]
6764: 54 20 00 03 andi $r2,$r0,#0x3
6768: 4e 22 00 0a beqz $r2,0x677c
676c: 00 04 00 00 lbi $r0,[$r8+#0x0]
6770: 49 ff e9 28 jal 0x39c0
6774: 00 14 80 00 lbi $r1,[$r9+#0x0]
6778: 00 03 80 00 lbi $r0,[$r7+#0x0]
677c: 54 20 00 04 andi $r2,$r0,#0x4
6780: ca 04 bnez38 $r2,0x6788
6782: 3c 2d ff 9f lwi.gp $r2,[+#-388]
6786: d5 07 j8 0x6794
6788: 3c 2d ff 9f lwi.gp $r2,[+#-388]
678c: a6 32 lbi333 $r0,[$r6+#0x2]
678e: ae 10 sbi333 $r0,[$r2+#0x0]
6790: 00 03 80 00 lbi $r0,[$r7+#0x0]
6794: 54 30 00 08 andi $r3,$r0,#0x8
6798: c3 04 beqz38 $r3,0x67a0
679a: a6 33 lbi333 $r0,[$r6+#0x3]
679c: ae 11 sbi333 $r0,[$r2+#0x1]
679e: a6 38 lbi333 $r0,[$r7+#0x0]
67a0: 54 30 00 10 andi $r3,$r0,#0x10
67a4: c3 04 beqz38 $r3,0x67ac
67a6: a6 34 lbi333 $r0,[$r6+#0x4]
67a8: ae 12 sbi333 $r0,[$r2+#0x2]
67aa: a6 38 lbi333 $r0,[$r7+#0x0]
67ac: 54 30 00 20 andi $r3,$r0,#0x20
67b0: c3 04 beqz38 $r3,0x67b8
67b2: a6 35 lbi333 $r0,[$r6+#0x5]
67b4: ae 13 sbi333 $r0,[$r2+#0x3]
67b6: a6 38 lbi333 $r0,[$r7+#0x0]
67b8: 54 30 00 40 andi $r3,$r0,#0x40
67bc: c3 04 beqz38 $r3,0x67c4
67be: a6 36 lbi333 $r0,[$r6+#0x6]
67c0: ae 14 sbi333 $r0,[$r2+#0x4]
67c2: a6 38 lbi333 $r0,[$r7+#0x0]
67c4: 96 02 seb33 $r0,$r0
67c6: 4e 04 00 05 bgez $r0,0x67d0
67ca: a7 b7 lbi333 $r6,[$r6+#0x7]
67cc: 10 61 00 05 sbi $r6,[$r2+#0x5]
67d0: 3e 08 08 f8 addi.gp $r0,#0x8f8
67d4: 00 84 00 00 lbi $r8,[$r8+#0x0]
67d8: 80 60 mov55 $r3,$r0
67da: 18 81 80 01 sbi.bi $r8,[$r3],#0x1
67de: ae 58 sbi333 $r1,[$r3+#0x0]
67e0: a6 50 lbi333 $r1,[$r2+#0x0]
67e2: ae 42 sbi333 $r1,[$r0+#0x2]
67e4: a6 51 lbi333 $r1,[$r2+#0x1]
67e6: ae 43 sbi333 $r1,[$r0+#0x3]
67e8: a6 52 lbi333 $r1,[$r2+#0x2]
67ea: ae 44 sbi333 $r1,[$r0+#0x4]
67ec: a6 53 lbi333 $r1,[$r2+#0x3]
67ee: ae 45 sbi333 $r1,[$r0+#0x5]
67f0: a6 54 lbi333 $r1,[$r2+#0x4]
67f2: ae 46 sbi333 $r1,[$r0+#0x6]
67f4: a6 95 lbi333 $r2,[$r2+#0x5]
67f6: ae 87 sbi333 $r2,[$r0+#0x7]
67f8: 3e 08 08 f0 addi.gp $r0,#0x8f0
67fc: 49 ff fd 48 jal 0x628c ; add_packet_crc(pkt=$r0)
6800: 46 20 01 00 sethi $r2,#0x100
6804: 84 60 movi55 $r3,#0x0
6806: 3e 08 09 c0 addi.gp $r0,#0x9c0
680a: 3e 18 08 f0 addi.gp $r1,#0x8f0
680e: 3c 3f ff ee swi.gp $r3,[+#-72]
6812: ec 04 addi10.sp #0x4
6814: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6818: 48 ff ce 90 j 0x538 ; ringbuf_write()
681c: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
6820: 3e 78 08 f0 addi.gp $r7,#0x8f0
6824: 97 80 zeb33 $r6,$r0
6826: 81 21 mov55 $r9,$r1
6828: 80 07 mov55 $r0,$r7
682a: 81 42 mov55 $r10,$r2
682c: 84 20 movi55 $r1,#0x0
682e: 44 20 00 40 movi $r2,#0x40
6832: 54 81 80 ff andi $r8,$r3,#0xff
6836: 49 00 1c 41 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
683a: 80 87 mov55 $r4,$r7
683c: 44 00 00 16 movi $r0,#0x16
6840: 18 02 00 01 sbi.bi $r0,[$r4],#0x1
6844: 9d fa addi333 $r7,$r7,#0x2
6846: 84 00 movi55 $r0,#0x0
6848: ae 38 sbi333 $r0,[$r7+#0x0]
684a: 84 02 movi55 $r0,#0x2
684c: af a0 sbi333 $r6,[$r4+#0x0]
684e: 4c 60 00 09 beq $r6,$r0,0x6860
6852: 84 23 movi55 $r1,#0x3
6854: 4c 60 80 7c beq $r6,$r1,0x694c
6858: 84 61 movi55 $r3,#0x1
685a: 4c 61 c0 8b bne $r6,$r3,0x6970
685e: d5 3d j8 0x68d8
6860: 5c f4 00 39 slti $r15,$r8,#0x39
6864: 4e f2 00 86 beqz $r15,0x6970
6868: 40 64 24 00 add $r6,$r8,$r9
686c: 5c f3 01 e1 slti $r15,$r6,#0x1e1
6870: 4e f2 00 80 beqz $r15,0x6970
6874: 80 2a mov55 $r1,$r10
6876: 3e 38 11 48 addi.gp $r3,#0x1148
687a: 80 48 mov55 $r2,$r8
687c: 40 04 8c 00 add $r0,$r9,$r3
6880: 49 00 1c 12 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6884: 50 83 00 03 addi $r8,$r6,#0x3
6888: 84 1c movi55 $r0,#-4
688a: 3e 18 11 48 addi.gp $r1,#0x1148
688e: 40 94 80 02 and $r9,$r9,$r0
6892: 40 84 00 02 and $r8,$r8,$r0
6896: 89 01 add45 $r8,$r1
6898: 40 64 84 00 add $r6,$r9,$r1
689c: e2 c8 slt45 $r6,$r8
689e: e8 67 beqzs8 0x696c
68a0: 44 30 d9 c0 movi $r3,#0xd9c0
68a4: 89 23 add45 $r9,$r3
68a6: a6 30 lbi333 $r0,[$r6+#0x0]
68a8: 44 10 00 ff movi $r1,#0xff
68ac: 4c 00 c0 10 bne $r0,$r1,0x68cc
68b0: a6 71 lbi333 $r1,[$r6+#0x1]
68b2: 4c 10 40 0d bne $r1,$r0,0x68cc
68b6: a6 32 lbi333 $r0,[$r6+#0x2]
68b8: 4c 00 c0 0a bne $r0,$r1,0x68cc
68bc: a6 73 lbi333 $r1,[$r6+#0x3]
68be: 4c 10 40 07 bne $r1,$r0,0x68cc
68c2: 80 29 mov55 $r1,$r9
68c4: 80 06 mov55 $r0,$r6
68c6: 84 44 movi55 $r2,#0x4
68c8: 49 00 1b ee jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
68cc: 9d b4 addi333 $r6,$r6,#0x4
68ce: e2 c8 slt45 $r6,$r8
68d0: e8 4e beqzs8 0x696c
68d2: 8d 24 addi45 $r9,#0x4
68d4: 48 ff ff e9 j 0x68a6
68d8: 5c f4 00 39 slti $r15,$r8,#0x39
68dc: e8 4a beqzs8 0x6970
68de: 40 64 24 00 add $r6,$r8,$r9
68e2: 5c f3 01 e1 slti $r15,$r6,#0x1e1
68e6: e8 45 beqzs8 0x6970
68e8: 80 2a mov55 $r1,$r10
68ea: 3e 38 13 4c addi.gp $r3,#0x134c
68ee: 80 48 mov55 $r2,$r8
68f0: 40 04 8c 00 add $r0,$r9,$r3
68f4: 49 00 1b d8 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
68f8: 50 83 00 03 addi $r8,$r6,#0x3
68fc: 84 1c movi55 $r0,#-4
68fe: 3e 18 13 4c addi.gp $r1,#0x134c
6902: 40 94 80 02 and $r9,$r9,$r0
6906: 40 84 00 02 and $r8,$r8,$r0
690a: 89 01 add45 $r8,$r1
690c: 40 64 84 00 add $r6,$r9,$r1
6910: e2 c8 slt45 $r6,$r8
6912: e8 2d beqzs8 0x696c
6914: 44 30 d7 e0 movi $r3,#0xd7e0
6918: 89 23 add45 $r9,$r3
691a: a6 30 lbi333 $r0,[$r6+#0x0]
691c: 44 10 00 ff movi $r1,#0xff
6920: 4c 00 c0 10 bne $r0,$r1,0x6940
6924: a6 71 lbi333 $r1,[$r6+#0x1]
6926: 4c 10 40 0d bne $r1,$r0,0x6940
692a: a6 32 lbi333 $r0,[$r6+#0x2]
692c: 4c 00 c0 0a bne $r0,$r1,0x6940
6930: a6 73 lbi333 $r1,[$r6+#0x3]
6932: 4c 10 40 07 bne $r1,$r0,0x6940
6936: 80 29 mov55 $r1,$r9
6938: 80 06 mov55 $r0,$r6
693a: 84 44 movi55 $r2,#0x4
693c: 49 00 1b b4 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6940: 9d b4 addi333 $r6,$r6,#0x4
6942: e2 c8 slt45 $r6,$r8
6944: e8 14 beqzs8 0x696c
6946: 8d 24 addi45 $r9,#0x4
6948: 48 ff ff e9 j 0x691a
694c: 5c f4 00 39 slti $r15,$r8,#0x39
6950: e8 10 beqzs8 0x6970
6952: 40 04 24 00 add $r0,$r8,$r9
6956: 5c f0 00 79 slti $r15,$r0,#0x79
695a: e8 0b beqzs8 0x6970
695c: 3e 38 10 d0 addi.gp $r3,#0x10d0
6960: 40 04 8c 00 add $r0,$r9,$r3
6964: 80 2a mov55 $r1,$r10
6966: 80 48 mov55 $r2,$r8
6968: 49 00 1b 9e jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
696c: 84 01 movi55 $r0,#0x1
696e: ae 38 sbi333 $r0,[$r7+#0x0]
6970: 3e 08 08 f0 addi.gp $r0,#0x8f0
6974: 49 ff fc 8c jal 0x628c ; add_packet_crc(pkt=$r0)
6978: 46 20 01 00 sethi $r2,#0x100
697c: 84 60 movi55 $r3,#0x0
697e: 3e 08 09 c0 addi.gp $r0,#0x9c0
6982: 3e 18 08 f0 addi.gp $r1,#0x8f0
6986: 3c 3f ff ee swi.gp $r3,[+#-72]
698a: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
698e: 48 ff cd d5 j 0x538 ; ringbuf_write()
6992: 92 00 nop16
; ---------- 0x6994: handle_command_15(subcmd=$r0, packet_data=$r1)
6994: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
6998: 3e 78 08 f0 addi.gp $r7,#0x8f0
699c: 97 80 zeb33 $r6,$r0
699e: 44 20 00 40 movi $r2,#0x40
69a2: 80 07 mov55 $r0,$r7
69a4: 81 01 mov55 $r8,$r1
69a6: 84 20 movi55 $r1,#0x0
69a8: 49 00 1b 88 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
69ac: 80 47 mov55 $r2,$r7
69ae: 44 00 00 15 movi $r0,#0x15
69b2: 18 01 00 01 sbi.bi $r0,[$r2],#0x1
69b6: 9d fa addi333 $r7,$r7,#0x2
69b8: 84 00 movi55 $r0,#0x0
69ba: ae 38 sbi333 $r0,[$r7+#0x0]
69bc: 84 02 movi55 $r0,#0x2
69be: af 90 sbi333 $r6,[$r2+#0x0]
69c0: 4c 60 00 47 beq $r6,$r0,0x6a4e
69c4: 84 63 movi55 $r3,#0x3
69c6: 4c 61 80 4f beq $r6,$r3,0x6a64
69ca: 84 01 movi55 $r0,#0x1
69cc: 4c 60 40 58 bne $r6,$r0,0x6a7c
69d0: 3e 08 0b 2c addi.gp $r0,#0xb2c
69d4: 84 20 movi55 $r1,#0x0
69d6: b6 20 swi450 $r1,[$r0]
69d8: ac 42 shi333 $r1,[$r0+#0x4]
69da: 80 28 mov55 $r1,$r8
69dc: 08 30 80 01 lbi.bi $r3,[$r1],#0x1
69e0: a7 00 lbi333 $r4,[$r0+#0x0]
69e2: 80 40 mov55 $r2,$r0
69e4: 40 31 90 04 or $r3,$r3,$r4
69e8: 18 31 00 01 sbi.bi $r3,[$r2],#0x1
69ec: a6 c8 lbi333 $r3,[$r1+#0x0]
69ee: ae d0 sbi333 $r3,[$r2+#0x0]
69f0: 20 10 80 00 lbsi $r1,[$r1+#0x0]
69f4: 4e 15 00 05 bltz $r1,0x69fe
69f8: 9c 02 addi333 $r0,$r0,#0x2
69fa: a6 80 lbi333 $r2,[$r0+#0x0]
69fc: d5 07 j8 0x6a0a
69fe: 9c 02 addi333 $r0,$r0,#0x2
6a00: a6 80 lbi333 $r2,[$r0+#0x0]
6a02: 58 21 00 0f ori $r2,$r2,#0xf
6a06: 96 90 zeb33 $r2,$r2
6a08: ae 80 sbi333 $r2,[$r0+#0x0]
6a0a: 8d 02 addi45 $r8,#0x2
6a0c: 00 34 00 00 lbi $r3,[$r8+#0x0]
6a10: 94 dc slli333 $r3,$r3,#0x4
6a12: 40 21 0c 04 or $r2,$r2,$r3
6a16: ae 80 sbi333 $r2,[$r0+#0x0]
6a18: 3e 18 0b 2f addi.gp $r1,#0xb2f
6a1c: 00 04 00 00 lbi $r0,[$r8+#0x0]
6a20: a6 88 lbi333 $r2,[$r1+#0x0]
6a22: 92 04 srli45 $r0,#0x4
6a24: 40 00 08 04 or $r0,$r0,$r2
6a28: ae 08 sbi333 $r0,[$r1+#0x0]
6a2a: 20 24 00 00 lbsi $r2,[$r8+#0x0]
6a2e: 4e 24 00 05 bgez $r2,0x6a38
6a32: 58 00 00 f0 ori $r0,$r0,#0xf0
6a36: ae 08 sbi333 $r0,[$r1+#0x0]
6a38: 3e 18 0b 30 addi.gp $r1,#0xb30
6a3c: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
6a40: 84 40 movi55 $r2,#0x0
6a42: 84 01 movi55 $r0,#0x1
6a44: ae 88 sbi333 $r2,[$r1+#0x0]
6a46: ae 38 sbi333 $r0,[$r7+#0x0]
6a48: 3e 07 ff f7 sbi.gp $r0,[+#-9]
6a4c: d5 18 j8 0x6a7c
6a4e: 80 28 mov55 $r1,$r8
6a50: 3e 08 0b 04 addi.gp $r0,#0xb04
6a54: 84 45 movi55 $r2,#0x5
6a56: 49 00 1b 27 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6a5a: 84 01 movi55 $r0,#0x1
6a5c: ae 38 sbi333 $r0,[$r7+#0x0]
6a5e: 3e 07 ff f8 sbi.gp $r0,[+#-8]
6a62: d5 0d j8 0x6a7c
6a64: 00 04 00 00 lbi $r0,[$r8+#0x0]
6a68: c0 06 beqz38 $r0,0x6a74
6a6a: 44 10 00 01 movi $r1,#0x1
6a6e: 3e 17 ff f5 sbi.gp $r1,[+#-11]
6a72: d5 03 j8 0x6a78
6a74: 3e 07 ff f5 sbi.gp $r0,[+#-11]
6a78: 84 01 movi55 $r0,#0x1
6a7a: ae 38 sbi333 $r0,[$r7+#0x0]
6a7c: 3e 08 08 f0 addi.gp $r0,#0x8f0
6a80: 49 ff fc 06 jal 0x628c ; add_packet_crc(pkt=$r0)
6a84: 46 20 01 00 sethi $r2,#0x100
6a88: 84 60 movi55 $r3,#0x0
6a8a: 3e 08 09 c0 addi.gp $r0,#0x9c0
6a8e: 3e 18 08 f0 addi.gp $r1,#0x8f0
6a92: 3c 3f ff ee swi.gp $r3,[+#-72] ; packet_in_progress = 0
6a96: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
6a9a: 48 ff cd 4f j 0x538 ; ringbuf_write()
6a9e: 92 00 nop16
; ----------- 0x6aa0: handle_command_4(subcmd=$r0, offset=$r1, size=$r2)
6aa0: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
6aa4: 3e 68 08 f0 addi.gp $r6,#0x8f0 ; $r6 = replypacket
6aa8: 97 c0 zeb33 $r7,$r0 ; $r7 = subcmd
6aaa: 81 01 mov55 $r8,$r1 ; $r8 = offset
6aac: 54 91 00 ff andi $r9,$r2,#0xff ; $r9 = size
6ab0: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
6ab2: 80 06 mov55 $r0,$r6 ; memset dest = replypacket
6ab4: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
6ab8: 49 00 1b 00 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6abc: 80 06 mov55 $r0,$r6
6abe: 84 24 movi55 $r1,#0x4
6ac0: 18 10 00 01 sbi.bi $r1,[$r0],#0x1 ; replypacket[0] = 4
6ac4: af c0 sbi333 $r7,[$r0+#0x0] ; replypacket[1] = subcmd
6ac6: 84 02 movi55 $r0,#0x2
6ac8: 4c 70 00 1a beq $r7,$r0,0x6afc ; if subcmd == 2: goto CMD4_SUB2
6acc: e6 e3 slti45 $r7,#0x3
6ace: e8 05 beqzs8 0x6ad8 ; if subcmd >= 3: goto CMD4_SUBHIGH
6ad0: 84 41 movi55 $r2,#0x1
6ad2: 4c 71 40 6b bne $r7,$r2,0x6ba8 ; if subcmd != 1: goto CMD4_FINISH
6ad6: d5 09 j8 0x6ae8 ; goto CMD4_SUB1
; label CMD4_SUBHIGH
6ad8: 84 03 movi55 $r0,#0x3
6ada: 4c 70 00 31 beq $r7,$r0,0x6b3c ; if subcmd == 3: goto CMD4_SUB3
6ade: 84 44 movi55 $r2,#0x4
6ae0: 4c 71 40 64 bne $r7,$r2,0x6ba8 ; if subcmd != 4: goto CMD4_FINISH
6ae4: 48 00 00 44 j 0x6b6c ; goto CMD4_SUB4
; label CMD4_SUB1:
6ae8: 40 04 a0 00 add $r0,$r9,$r8 ; $r0 = offset + size
6aec: 5c f0 02 01 slti $r15,$r0,#0x201 ;
6af0: e8 5c beqzs8 0x6ba8 ; if (offset+size) > 0x200: goto CMD4_FINISH
6af2: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket+8
6af6: 3e 28 15 2c addi.gp $r2,#0x152c ; memcpy base = $r2 = $gp+0x152c
6afa: d5 2b j8 0x6b50 ; goto CMD4_MEMCPY
; label CMD4_SUB2:
6afc: 40 04 a0 00 add $r0,$r9,$r8
6b00: 5c f0 02 01 slti $r15,$r0,#0x201
6b04: e8 52 beqzs8 0x6ba8 ; if (offset+size) > 0x200: goto CMD4_FINISH
6b06: 3e 08 15 2c addi.gp $r0,#0x152c ; $r0 = $gp+0x152c
6b0a: 40 74 00 00 add $r7,$r8,$r0 ; $r7 = $gp+0x152c+offset
6b0e: 40 34 20 09 srli $r3,$r8,#0x8 ; $r3 = offset >> 8
6b12: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
6b14: 80 49 mov55 $r2,$r9 ; memset size = size
6b16: 80 07 mov55 $r0,$r7 ; memset dest = $gp+0x152c+offset
6b18: ae f3 sbi333 $r3,[$r6+#0x3] ; replypacket[3] = offset.hi
6b1a: 10 83 00 02 sbi $r8,[$r6+#0x2] ; replypacket[2] = offset.lo
6b1e: 10 93 00 05 sbi $r9,[$r6+#0x5] ; replypacket[5] = size
6b22: 49 00 1a cb jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6b26: 80 27 mov55 $r1,$r7 ; memcpy src = $gp+0x152c+offset
6b28: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket+8
6b2c: 50 24 80 00 addi $r2,$r9,#0x0 ; memcpy size = size
6b30: 49 00 1a ba jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6b34: 84 21 movi55 $r1,#0x1 ;
6b36: 3e 17 ff e0 sbi.gp $r1,[+#-32] ; [$gp-32] = 1
6b3a: d5 37 j8 0x6ba8 ; goto CMD4_FINISH
; label CMD4_SUB3:
6b3c: 40 04 a0 00 add $r0,$r9,$r8
6b40: 5c f0 00 81 slti $r15,$r0,#0x81
6b44: 4e f2 00 32 beqz $r15,0x6ba8 ; if (offset+size) > 0x80: goto CMD4_FINISH
6b48: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket+8
6b4c: 3e 28 06 60 addi.gp $r2,#0x660 ; memcpy base = $gp+0x660
; label CMD4_MEMCPY:
6b50: 40 14 08 00 add $r1,$r8,$r2 ; memcpy src = $r2 + offset
6b54: 40 34 20 09 srli $r3,$r8,#0x8 ;
6b58: 80 49 mov55 $r2,$r9 ; memcpy size = size
6b5a: ae f3 sbi333 $r3,[$r6+#0x3] ; replypacket[3] = offset.hi
6b5c: 10 83 00 02 sbi $r8,[$r6+#0x2] ; replypacket[2] = offset.lo
6b60: 10 93 00 05 sbi $r9,[$r6+#0x5] ; replypacket[5] = size
6b64: 49 00 1a a0 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6b68: 48 00 00 20 j 0x6ba8 ; goto CMD4_FINISH
; label CMD4_SUB4
6b6c: 40 04 a0 00 add $r0,$r9,$r8
6b70: 5c f0 00 81 slti $r15,$r0,#0x81
6b74: e8 1a beqzs8 0x6ba8 ; if (offset+size) > 0x80: goto CMD4_FINISH
6b76: 3e 08 06 60 addi.gp $r0,#0x660 ; $r0 = $gp+0x660
6b7a: 40 74 00 00 add $r7,$r8,$r0 ; $r7 = $gp+0x660+offset
6b7e: 40 34 20 09 srli $r3,$r8,#0x8 ;
6b82: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
6b84: 80 49 mov55 $r2,$r9 ; memset size = size
6b86: 80 07 mov55 $r0,$r7 ; memset dest = $r7
6b88: ae f3 sbi333 $r3,[$r6+#0x3] ; replypacket[3] = offset.hi
6b8a: 10 83 00 02 sbi $r8,[$r6+#0x2] ; replypacket[2] = offset.lo
6b8e: 10 93 00 05 sbi $r9,[$r6+#0x5] ; replypacket[5] = size
6b92: 49 00 1a 93 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6b96: 80 27 mov55 $r1,$r7 ; memcpy src = $r7
6b98: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket+8
6b9c: 80 49 mov55 $r2,$r9 ; memcpy size = size
6b9e: 49 00 1a 83 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6ba2: 84 21 movi55 $r1,#0x1
6ba4: 3e 17 ff e1 sbi.gp $r1,[+#-31] ; [$gp-31] = 1
; label CMD4_FINISH:
6ba8: 3e 08 08 f0 addi.gp $r0,#0x8f0
6bac: 49 ff fb 70 jal 0x628c ; add_packet_crc(pkt=$r0)
6bb0: 46 20 01 00 sethi $r2,#0x100
6bb4: 84 60 movi55 $r3,#0x0
6bb6: 3e 08 09 c0 addi.gp $r0,#0x9c0
6bba: 3e 18 08 f0 addi.gp $r1,#0x8f0
6bbe: 3c 3f ff ee swi.gp $r3,[+#-72] ; packet_in_progress = 0
6bc2: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
6bc6: 48 ff cc b9 j 0x538 ; ringbuf_write(ringbuf, replypkt)
6bca: 92 00 nop16
; ----------- 0x6bcc: handle_command_c()
6bcc: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
6bd0: 3e 68 08 f0 addi.gp $r6,#0x8f0
6bd4: 84 81 movi55 $r4,#0x1
6bd6: 94 a6 slli333 $r2,$r4,#0x6
6bd8: 3e 47 ff eb sbi.gp $r4,[+#-21]
6bdc: 84 20 movi55 $r1,#0x0
6bde: 44 40 0b b8 movi $r4,#0xbb8
6be2: 80 06 mov55 $r0,$r6
6be4: 3c 4b ff ec shi.gp $r4,[+#-40]
6be8: 49 00 1a 68 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6bec: 80 06 mov55 $r0,$r6
6bee: 84 2c movi55 $r1,#0xc
6bf0: 10 13 00 00 sbi $r1,[$r6+#0x0]
6bf4: 49 ff fb 4c jal 0x628c ; add_packet_crc(pkt=$r0)
6bf8: 46 20 01 00 sethi $r2,#0x100
6bfc: 84 60 movi55 $r3,#0x0
6bfe: 80 26 mov55 $r1,$r6
6c00: 3e 08 09 c0 addi.gp $r0,#0x9c0
6c04: 3c 3f ff ee swi.gp $r3,[+#-72]
6c08: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
6c0c: 48 ff cc 96 j 0x538 ; ringbuf_write()
; ----------- 0x6c10: handle_command_b(subcmd=$r0)
6c10: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6c14: ef fc addi10.sp #-4
6c16: 96 80 zeb33 $r2,$r0
6c18: 9e 11 subi333 $r0,$r2,#0x1
6c1a: 96 00 zeb33 $r0,$r0
6c1c: 5c f0 00 05 slti $r15,$r0,#0x5
6c20: e9 02 bnezs8 0x6c24
6c22: d5 0b j8 0x6c38
6c24: 2e 07 ff ea lbi.gp $r0,[+#-22]
6c28: 80 22 mov55 $r1,$r2
6c2a: 3e 27 ff ea sbi.gp $r2,[+#-22]
6c2e: 49 ff e9 87 jal 0x3f3c
6c32: 84 21 movi55 $r1,#0x1
6c34: 3e 17 ff de sbi.gp $r1,[+#-34]
6c38: 3e 68 08 f0 addi.gp $r6,#0x8f0
6c3c: 44 20 00 40 movi $r2,#0x40
6c40: 84 20 movi55 $r1,#0x0
6c42: 80 06 mov55 $r0,$r6
6c44: 49 00 1a 3a jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6c48: 80 26 mov55 $r1,$r6
6c4a: 84 0b movi55 $r0,#0xb
6c4c: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
6c50: 80 06 mov55 $r0,$r6
6c52: 2e 77 ff ea lbi.gp $r7,[+#-22]
6c56: af c8 sbi333 $r7,[$r1+#0x0]
6c58: 49 ff fb 1a jal 0x628c ; add_packet_crc(pkt=$r0)
6c5c: 46 20 01 00 sethi $r2,#0x100
6c60: 84 60 movi55 $r3,#0x0
6c62: 80 26 mov55 $r1,$r6
6c64: 3e 08 09 c0 addi.gp $r0,#0x9c0
6c68: 3c 3f ff ee swi.gp $r3,[+#-72] ; packet_in_progress = 0
6c6c: ec 04 addi10.sp #0x4
6c6e: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6c72: 48 ff cc 63 j 0x538 ; ringbuf_write()
6c76: 92 00 nop16
; ----------- 0x6c78: handle_reboot_cmd(subcmd=$r0)
6c78: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6c7c: ef fc addi10.sp #-4
6c7e: 3e 78 08 f0 addi.gp $r7,#0x8f0 ; $r7 = $gp+0x8f0 (replypkt)
6c82: 97 80 zeb33 $r6,$r0 ; $r6 = subcmd
6c84: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
6c86: 80 07 mov55 $r0,$r7 ; memset dest = $gp+0x8f0
6c88: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
6c8c: 49 00 1a 16 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6c90: 80 27 mov55 $r1,$r7 ; $r1 = replypkt
6c92: 84 03 movi55 $r0,#0x3 ;
6c94: 18 00 80 01 sbi.bi $r0,[$r1],#0x1 ; *replypkt++ = 3
6c98: 9e 31 subi333 $r0,$r6,#0x1 ; $r0 = subcmd-1
6c9a: 9d fa addi333 $r7,$r7,#0x2 ; $r7 = replypkt+2
6c9c: af 88 sbi333 $r6,[$r1+#0x0] ; *replypkt++ = subcmd
6c9e: 96 00 zeb33 $r0,$r0 ;
6ca0: 84 20 movi55 $r1,#0x0 ;
6ca2: ae 78 sbi333 $r1,[$r7+#0x0] ; replypkt[2] = 0
6ca4: e6 03 slti45 $r0,#0x3 ;
6ca6: e8 03 beqzs8 0x6cac ; if subcmd <= 3:
6ca8: 84 01 movi55 $r0,#0x1 ;
6caa: ae 38 sbi333 $r0,[$r7+#0x0] ; replypkt[2] = 1
6cac: 3e 08 08 f0 addi.gp $r0,#0x8f0 ;
6cb0: 49 ff fa ee jal 0x628c ; add_packet_crc(pkt=$r0)
6cb4: 46 20 01 00 sethi $r2,#0x100
6cb8: 44 30 00 00 movi $r3,#0x0
6cbc: 3e 18 08 f0 addi.gp $r1,#0x8f0
6cc0: 3e 08 09 c0 addi.gp $r0,#0x9c0
6cc4: 3c 3f ff ee swi.gp $r3,[+#-72]
6cc8: 49 ff cc 38 jal 0x538 ; ringbuf_write(ringbuf, replypkt)
6ccc: 49 ff f7 be jal 0x5c48 ; usb_tx_queued()
6cd0: 84 02 movi55 $r0,#0x2
6cd2: 4c 60 00 11 beq $r6,$r0,0x6cf4 ; if subcmd == 2: goto REBOOT_MODE2
6cd6: 84 03 movi55 $r0,#0x3
6cd8: 4c 60 00 18 beq $r6,$r0,0x6d08 ; if subcmd == 3: goto REBOOT_MODE3
6cdc: 84 01 movi55 $r0,#0x1
6cde: 4c 60 40 1e bne $r6,$r0,0x6d1a ; if subcmd != 1: goto REBOOT_FAIL
6ce2: 46 04 24 d4 sethi $r0,#0x424d4 ; else:
; label REBOOT_MODE1:
6ce6: 58 00 01 50 ori $r0,$r0,#0x150 ; 42 4d 41 50: "BMAP" - Boot Mode APplication?
6cea: ec 04 addi10.sp #0x4
6cec: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6cf0: 48 ff cb c6 j 0x47c ; return check_magic_and_reset("BMAP")
; label REBOOT_MODE2:
6cf4: 46 04 24 d4 sethi $r0,#0x424d4
6cf8: 58 00 09 41 ori $r0,$r0,#0x941 ; 42 4d 49 41: "BMIA" - Boot Mode In-App (programmer)?
6cfc: 51 ff 80 04 addi $sp,$sp,#0x4
6d00: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6d04: 48 ff cb bc j 0x47c ; return check_magic_and_reset("BMIA")
; label REBOOT_MODE3:
6d08: 46 04 24 d4 sethi $r0,#0x424d4
6d0c: 58 00 09 53 ori $r0,$r0,#0x953 ; 42 4d 49 53: "BMIS" - Boot Mode In-System (programmer)?
6d10: ec 04 addi10.sp #0x4
6d12: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6d16: 48 ff cb b3 j 0x47c ; return check_magic_and_reset("BMIS")
; label REBOOT_FAIL:
6d1a: ec 04 addi10.sp #0x4
6d1c: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6d20: dd 9e ret5 $lp
6d22: 92 00 nop16
; ----------- 0x6d24: handle_info_command(cmd=$r0)
6d24: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6d28: ef fc addi10.sp #-4
6d2a: 3e 68 08 f0 addi.gp $r6,#0x8f0 ; $r6 = $gp+0x8f0 (replypacket)
6d2e: 97 c0 zeb33 $r7,$r0 ; $r7 = cmd
6d30: 84 20 movi55 $r1,#0x0 ; memset byte = 0
6d32: 80 06 mov55 $r0,$r6 ; memset dest = replypacket
6d34: 44 20 00 40 movi $r2,#0x40 ; memset size = 0x40
6d38: 49 00 19 c0 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6d3c: 80 06 mov55 $r0,$r6 ; $r0 = replypacket
6d3e: 84 81 movi55 $r4,#0x1 ; $r4 = 1
6d40: 18 40 00 01 sbi.bi $r4,[$r0],#0x1 ; replypacket[0] = 1
6d44: 9c f2 addi333 $r3,$r6,#0x2 ; $r3 = replypacket+2
6d46: af c0 sbi333 $r7,[$r0+#0x0] ; replypacket[1] = subcmd
6d48: 84 00 movi55 $r0,#0x0 ;
6d4a: ae 18 sbi333 $r0,[$r3+#0x0] ; replypacket[2] = 0
6d4c: 84 02 movi55 $r0,#0x2 ;
6d4e: 4c 70 00 23 beq $r7,$r0,0x6d94 ; if subcmd == 2: goto INFO_SUBCMD_2
6d52: e6 e3 slti45 $r7,#0x3 ;
6d54: e8 05 beqzs8 0x6d5e ; if subcmd >= 3: goto INFO_SUBCMD_HIGH
6d56: 84 01 movi55 $r0,#0x1
6d58: 4c 70 40 38 bne $r7,$r0,0x6dc8 ; if subcmd != 1: goto INFO_FINALIZE
6d5c: d5 08 j8 0x6d6c ; goto INFO_SUBCMD_1
; label INFO_SUBCMD_HIGH:
6d5e: 84 08 movi55 $r0,#0x8 ;
6d60: 4c 70 00 24 beq $r7,$r0,0x6da8 ; if subcmd == 8: goto INFO_SUBCMD_8
6d64: 84 09 movi55 $r0,#0x9 ;
6d66: 4c 70 40 31 bne $r7,$r0,0x6dc8 ; if subcmd != 9: goto INFO_FINALIZE
6d6a: d5 28 j8 0x6dba ; goto INFO_SUBCMD_9
; label INFO_SUBCMD_1: ; Amazingly, it constructs the reply one byte at a time..
6d6c: 44 00 00 39 movi $r0,#0x39 ;
6d70: 10 03 00 09 sbi $r0,[$r6+#0x9] ; replypacket[9] = 0x39
6d74: 94 24 slli333 $r0,$r4,#0x4
6d76: 10 03 00 0a sbi $r0,[$r6+#0xa] ; replypacket[10] = 0x10
6d7a: 84 02 movi55 $r0,#0x2
6d7c: 10 03 00 0b sbi $r0,[$r6+#0xb] ; replypacket[11] = 2
6d80: 84 09 movi55 $r0,#0x9
6d82: 10 73 00 0d sbi $r7,[$r6+#0xd] ; replypacket[13] = 1
6d86: af d8 sbi333 $r7,[$r3+#0x0] ; replypacket[2] = 1
6d88: 10 03 00 0c sbi $r0,[$r6+#0xc] ; replypacket[12] = 9
6d8c: 10 73 00 08 sbi $r7,[$r6+#0x8] ; replypacket[8] = 1
6d90: 48 00 00 1c j 0x6dc8 ; goto INFO_FINALIZE
; (result: 01 39 10 02 09 01)
; label INFO_SUBCMD_2:
6d94: 3c 1d ff d9 lwi.gp $r1,[+#-156] ; memcpy src = [$gp-156]
6d98: af 18 sbi333 $r4,[$r3+#0x0] ; replypacket[2] = 1
6d9a: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket[8]
6d9e: 84 48 movi55 $r2,#0x8 ; memcpy size = 0x8
6da0: 49 00 19 82 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6da4: 48 00 00 12 j 0x6dc8 ; goto INFO_FINALIZE
; label INFO_SUBCMD_8:
6da8: 3c 1d ff d8 lwi.gp $r1,[+#-160] ; memcpy src = [$gp-160]
6dac: af 18 sbi333 $r4,[$r3+#0x0] ; replypacket[2] = 1
6dae: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = replypacket[8]
6db2: 80 47 mov55 $r2,$r7 ; memcpy size = subcmd (8!)
6db4: 49 00 19 78 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
6db8: d5 08 j8 0x6dc8 ; goto INFO_FINALIZE
; label INFO_SUBCMD_9:
6dba: 84 08 movi55 $r0,#0x8 ;
6dbc: 10 03 00 09 sbi $r0,[$r6+#0x9] ; replypacket[9] = 0x8
6dc0: 84 0f movi55 $r0,#0xf ;
6dc2: af 18 sbi333 $r4,[$r3+#0x0] ; replypacket[2] = 1
6dc4: 10 03 00 08 sbi $r0,[$r6+#0x8] ; replypacket[8] = 0xf
; label INFO_FINALIZE:
6dc8: 3e 08 08 f0 addi.gp $r0,#0x8f0
6dcc: 49 ff fa 60 jal 0x628c ; add_packet_crc(pkt=$r0)
6dd0: 46 20 01 00 sethi $r2,#0x100
6dd4: 84 60 movi55 $r3,#0x0
6dd6: 3e 08 09 c0 addi.gp $r0,#0x9c0
6dda: 3e 18 08 f0 addi.gp $r1,#0x8f0
6dde: 3c 3f ff ee swi.gp $r3,[+#-72] ; packet_in_progress = 0
6de2: ec 04 addi10.sp #0x4
6de4: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
6de8: 48 ff cb a8 j 0x538 ; ringbuf_write()
; ---------- 0x6dec: mainloop_6dec - command packet handler, yasssss
6dec: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6df0: ef fc addi10.sp #-4
6df2: 3c 63 ff ec lhi.gp $r6,[+#-40] ; $r6 = [$gp-40]
6df6: ce 27 bnez38 $r6,0x6e44 ; if [$gp-40] != 0:
6df8: 2e 07 ff ea lbi.gp $r0,[+#-22] ;
6dfc: 3e 67 ff eb sbi.gp $r6,[+#-21] ; [$gp-21] = [$gp-40]
6e00: 84 25 movi55 $r1,#0x5 ;
6e02: 4c 00 c0 21 bne $r0,$r1,0x6e44 ; if [$gp-22] != 5: (feel like this is a EAGAIN type error)
6e06: 3e 88 08 f0 addi.gp $r8,#0x8f0 ; $r8 = replypkt
6e0a: 85 21 movi55 $r9,#0x1 ; $r9 = 1
6e0c: 84 21 movi55 $r1,#0x1 ; $r1 = 1
6e0e: 3e 97 ff ea sbi.gp $r9,[+#-22] ; [$gp-22] = 1
6e12: 49 ff e8 95 jal 0x3f3c ; func_3f3c([$gp-40], 1)
6e16: 80 26 mov55 $r1,$r6 ; memset byte = [$gp-40]
6e18: 40 24 98 08 slli $r2,$r9,#0x6 ; memset size = $r9 * 0x40
6e1c: 80 08 mov55 $r0,$r8 ; memset dest = replypkt
6e1e: 3e 97 ff de sbi.gp $r9,[+#-34] ; [$gp-34] = 1
6e22: 49 00 19 4b jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
6e26: 80 28 mov55 $r1,$r8 ; $r1 = replypkt
6e28: 84 0b movi55 $r0,#0xb ; $r0 = 0xb
6e2a: 18 00 80 01 sbi.bi $r0,[$r1],#0x1 ; replypkt[0] = 0xb
6e2e: 80 08 mov55 $r0,$r8 ; $r0 = replypkt
6e30: 2e 77 ff ea lbi.gp $r7,[+#-22] ; $r7 = [$gp-22]
6e34: af c8 sbi333 $r7,[$r1+#0x0] ; replypkt[1] = [$gp-22]
6e36: 49 ff fa 2b jal 0x628c ; add_packet_crc(pkt=replypkt)
6e3a: 80 28 mov55 $r1,$r8 ; $r1 = replypkt
6e3c: 3e 08 09 c0 addi.gp $r0,#0x9c0 ; $r0 = ringbuf
6e40: 49 ff cb 7c jal 0x538 ; ringbuf_write(ringbuf, replypkt)
6e44: 46 10 01 00 sethi $r1,#0x100 ; endif (ps why is this sethi here??)
6e48: 3c 0d ff ee lwi.gp $r0,[+#-72] ; $r0 = [$gp-72] (packet_in_progress)
6e4c: 84 41 movi55 $r2,#0x1 ;
6e4e: 4c 01 41 2c bne $r0,$r2,0x70a6 ; if packet_in_progress != 1: goto mainloop_6dec_out
6e52: 3e 48 0b 34 addi.gp $r4,#0xb34 ; $r4 = $gp+0xb34, validpkt
6e56: a6 20 lbi333 $r0,[$r4+#0x0] ; $r0 = validpkt[0] (cmd)
6e58: 8c 59 addi45 $r2,#0x19 ; $r2 = 0x1a
6e5a: 4c 01 00 9f beq $r0,$r2,0x6f98 ; if cmd == 0x1a: goto CMD_EQ_1A
6e5e: e6 1b slti45 $r0,#0x1b ;
6e60: e8 20 beqzs8 0x6ea0 ; if cmd >= 0x1b: goto CMD_HIGH
6e62: 84 4b movi55 $r2,#0xb ;
6e64: 4c 01 00 4b beq $r0,$r2,0x6efa ; if cmd == 0xb: goto CMD_EQ_B
6e68: e6 0c slti45 $r0,#0xc ;
6e6a: e8 0b beqzs8 0x6e80 ; if cmd >= 0xc: goto CMD_GE_C
6e6c: 84 23 movi55 $r1,#0x3 ;
6e6e: 4c 00 80 40 beq $r0,$r1,0x6eee ; if cmd == 3: goto CMD_EQ_3
6e72: 84 44 movi55 $r2,#0x4 ;
6e74: 4c 01 00 4e beq $r0,$r2,0x6f10 ; if cmd == 4: goto CMD_EQ_4
6e78: 84 21 movi55 $r1,#0x1 ;
6e7a: 4c 00 c1 16 bne $r0,$r1,0x70a6 ; if cmd != 1: goto mainloop_6dec_out
6e7e: d5 32 j8 0x6ee2 ; goto CMD_EQ_1
; label CMD_GE_C:
6e80: 8c 4a addi45 $r2,#0xa ; $r2 = 0x15
6e82: 4c 01 00 55 beq $r0,$r2,0x6f2c ; if cmd == 0x15: goto CMD_EQ_15
6e86: e6 16 slti45 $r0,#0x16 ;
6e88: e8 05 beqzs8 0x6e92 ; if cmd >= 0x16: goto CMD_GE_16
6e8a: 84 2c movi55 $r1,#0xc ;
6e8c: 4c 00 c1 0d bne $r0,$r1,0x70a6 ; if cmd != 0xc: goto mainloop_6dec_out
6e90: d5 3b j8 0x6f06 ; goto CMD_EQ_C
; label CMD_GE_16:
6e92: 9c 91 addi333 $r2,$r2,#0x1 ; $r2 = 0x16
6e94: 4c 01 00 5c beq $r0,$r2,0x6f4c ; if cmd == 0x16: goto CMD_EQ_16
6e98: 9c 91 addi333 $r2,$r2,#0x1 ; $r2 = 0x17
6e9a: 4c 01 41 06 bne $r0,$r2,0x70a6 ; if cmd != 0x17: goto mainloop_6dec_out
6e9e: d5 6d j8 0x6f78 ; goto CMD_EQ_17
; label CMD_HIGH:
6ea0: 44 10 00 24 movi $r1,#0x24 ; $r1 = 0x24
6ea4: 4c 00 80 c0 beq $r0,$r1,0x7024 ; if cmd == 0x24: goto CMD_EQ_24
6ea8: 5c f0 00 25 slti $r15,$r0,#0x25 ;
6eac: e8 0d beqzs8 0x6ec6 ; if cmd >= 0x25: goto CMD_GE_25
6eae: 9e 8a subi333 $r2,$r1,#0x2 ; $r1 = 0x22
6eb0: 4c 01 00 93 beq $r0,$r2,0x6fd6 ; if cmd == 0x22: goto CMD_EQ_22
6eb4: 5c f0 00 23 slti $r15,$r0,#0x23 ;
6eb8: 4e f2 00 ad beqz $r15,0x7012 ; if cmd >= 0x23: goto CMD_EQ_23
6ebc: 9e 4b subi333 $r1,$r1,#0x3 ; $r1 = 0x1f
6ebe: 4c 00 c0 f4 bne $r0,$r1,0x70a6 ; if cmd != 0x1f: goto mainloop_6dec_out
6ec2: 48 00 00 83 j 0x6fc8 ; goto CMD_EQ_1F
; label CMD_GE_25:
6ec6: 9c 8a addi333 $r2,$r1,#0x2 ; $r2 = $r1 (0x24) + 2 = 0x26
6ec8: 4c 01 00 cc beq $r0,$r2,0x7060 ; if cmd == 0x26: goto CMD_EQ_26
6ecc: e2 02 slt45 $r0,$r2 ;
6ece: 4e f3 00 ba bnez $r15,0x7042 ; if cmd < 0x26: goto CMD_EQ_25
6ed2: 9c 4b addi333 $r1,$r1,#0x3 ; $r1 = 0x24 + 3 = 0x27
6ed4: 4c 00 80 d5 beq $r0,$r1,0x707e ; if cmd == 0x27: goto CMD_EQ_27
6ed8: 8c 4b addi45 $r2,#0xb ; $r2 = 0x26 + 0xb = 0x31
6eda: 4c 01 40 e6 bne $r0,$r2,0x70a6 ; if cmd != 0x31: goto mainloop_6dec_out
6ede: 48 00 00 8b j 0x6ff4 ; goto CMD_EQ_31
; label CMD_EQ_1:
6ee2: a6 21 lbi333 $r0,[$r4+#0x1] ; $r0 = packet[1] (subcmd)
6ee4: ec 04 addi10.sp #0x4
6ee6: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6eea: 48 ff ff 1d j 0x6d24 ; return handle_info_command(subcmd)
; label CMD_EQ_3:
6eee: a6 21 lbi333 $r0,[$r4+#0x1] ; $r0 = packet[1] (subcmd)
6ef0: ec 04 addi10.sp #0x4
6ef2: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6ef6: 48 ff fe c1 j 0x6c78 ; return handle_reboot_cmd(subcmd)
; label CMD_EQ_B:
6efa: a6 21 lbi333 $r0,[$r4+#0x1] ; $r0 = packet[1] (subcmd)
6efc: ec 04 addi10.sp #0x4
6efe: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f02: 48 ff fe 87 j 0x6c10 ; return handle_command_b(subcmd)
; label CMD_EQ_C:
6f06: ec 04 addi10.sp #0x4
6f08: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f0c: 48 ff fe 60 j 0x6bcc ; return handle_command_c()
; label CMD_EQ_4:
6f10: a6 e3 lbi333 $r3,[$r4+#0x3]
6f12: a6 62 lbi333 $r1,[$r4+#0x2]
6f14: 40 31 a0 08 slli $r3,$r3,#0x8
6f18: a6 a5 lbi333 $r2,[$r4+#0x5]
6f1a: a6 21 lbi333 $r0,[$r4+#0x1]
6f1c: 40 11 84 04 or $r1,$r3,$r1
6f20: 51 ff 80 04 addi $sp,$sp,#0x4
6f24: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f28: 48 ff fd bc j 0x6aa0 ; handle_command_4($r0=packet[1], $r1=packet[2:3], $r2=packet[5])
; label CMD_EQ_15:
6f2c: 46 f0 01 00 sethi $r15,#0x100
6f30: 2e 07 ff ea lbi.gp $r0,[+#-22]
6f34: 84 45 movi55 $r2,#0x5
6f36: 4c 01 40 45 bne $r0,$r2,0x6fc0 ; if [$gp-22] != 5: goto abandon_packet_and_exit
6f3a: a6 21 lbi333 $r0,[$r4+#0x1] ; get subcmd
6f3c: 50 12 00 08 addi $r1,$r4,#0x8 ; get address of packet_data
6f40: 51 ff 80 04 addi $sp,$sp,#0x4
6f44: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f48: 48 ff fd 26 j 0x6994 ; handle_command_15(subcmd=$r0, packet_data=$r1)
; label CMD_EQ_16:
6f4c: 46 f0 01 00 sethi $r15,#0x100
6f50: 2e 07 ff ea lbi.gp $r0,[+#-22]
6f54: 84 45 movi55 $r2,#0x5
6f56: 4c 01 40 35 bne $r0,$r2,0x6fc0 ; if [$gp-22] != 5: goto abandon_packet_and_exit
6f5a: a6 a3 lbi333 $r2,[$r4+#0x3]
6f5c: a6 62 lbi333 $r1,[$r4+#0x2]
6f5e: 40 21 20 08 slli $r2,$r2,#0x8
6f62: a6 e5 lbi333 $r3,[$r4+#0x5]
6f64: a6 21 lbi333 $r0,[$r4+#0x1]
6f66: 40 11 04 04 or $r1,$r2,$r1
6f6a: 50 22 00 08 addi $r2,$r4,#0x8
6f6e: ec 04 addi10.sp #0x4
6f70: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f74: 48 ff fc 54 j 0x681c ; return handle_command_16($r0=packet[1], $r1=packet[2:3], $r2=packet+8)
label CMD_EQ_17:
6f78: 46 f0 01 00 sethi $r15,#0x100
6f7c: 2e 07 ff ea lbi.gp $r0,[+#-22]
6f80: 84 45 movi55 $r2,#0x5
6f82: 4c 01 40 1f bne $r0,$r2,0x6fc0 ; if [$gp-22] != 5: goto abandon_packet_and_exit
6f86: 3e 18 0b 35 addi.gp $r1,#0xb35
6f8a: 08 00 80 07 lbi.bi $r0,[$r1],#0x7
6f8e: ec 04 addi10.sp #0x4
6f90: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6f94: 48 ff fb ae j 0x66f0 ; return handle_command_17($r0=[$gp+b35], $r1=$gp+b3c)
; label CMD_EQ_1A:
6f98: 2e 07 ff ea lbi.gp $r0,[+#-22]
6f9c: 84 45 movi55 $r2,#0x5
6f9e: 4c 01 40 11 bne $r0,$r2,0x6fc0 ; if [$gp-22] != 5: goto abandon_packet_and_exit
6fa2: a6 a3 lbi333 $r2,[$r4+#0x3]
6fa4: a6 62 lbi333 $r1,[$r4+#0x2]
6fa6: 40 21 20 08 slli $r2,$r2,#0x8
6faa: a6 e5 lbi333 $r3,[$r4+#0x5]
6fac: a6 21 lbi333 $r0,[$r4+#0x1]
6fae: 40 11 04 04 or $r1,$r2,$r1
6fb2: 50 22 00 08 addi $r2,$r4,#0x8
6fb6: ec 04 addi10.sp #0x4
6fb8: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6fbc: 48 ff fb 40 j 0x663c ; return handle_command_1a($r0=packet[1], $r1=packet[2:3], $r2=packet+8, $r3=packet[5])
; label abandon_packet_and_exit:
6fc0: 84 00 movi55 $r0,#0x0
6fc2: 3c 0f ff ee swi.gp $r0,[+#-72] ; packet_in_progress = 0
6fc6: d5 70 j8 0x70a6 ; goto mainloop_6dec_out
; label CMD_EQ_1F
6fc8: a6 62 lbi333 $r1,[$r4+#0x2]
6fca: a6 21 lbi333 $r0,[$r4+#0x1]
6fcc: ec 04 addi10.sp #0x4
6fce: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6fd2: 48 ff fa d5 j 0x657c ; return handle_command_1f(subcmd=$r0, byte2=$r1)
; label CMD_EQ_22:
6fd6: a6 e3 lbi333 $r3,[$r4+#0x3]
6fd8: a6 62 lbi333 $r1,[$r4+#0x2]
6fda: 40 31 a0 08 slli $r3,$r3,#0x8
6fde: a6 21 lbi333 $r0,[$r4+#0x1]
6fe0: a6 a4 lbi333 $r2,[$r4+#0x4]
6fe2: 40 11 84 04 or $r1,$r3,$r1
6fe6: 50 32 00 08 addi $r3,$r4,#0x8
6fea: ec 04 addi10.sp #0x4
6fec: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
6ff0: 48 ff fa 96 j 0x651c ; return handle_command_22(subcmd=$r0, offset=$r1, $r2=packet[4], $r3=packet+8)
; label CMD_EQ_31:
6ff4: a6 e3 lbi333 $r3,[$r4+#0x3]
6ff6: a6 62 lbi333 $r1,[$r4+#0x2]
6ff8: 40 31 a0 08 slli $r3,$r3,#0x8
6ffc: a6 21 lbi333 $r0,[$r4+#0x1]
6ffe: a6 a4 lbi333 $r2,[$r4+#0x4]
7000: 40 11 84 04 or $r1,$r3,$r1
7004: 50 32 00 08 addi $r3,$r4,#0x8
7008: ec 04 addi10.sp #0x4
700a: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
700e: 48 ff fa 57 j 0x64bc ; return handle_command_31(subcmd=$r0, offset=$r1, $r2=packet[4], $r3=packet+8)
; label CMD_EQ_23:
7012: a6 21 lbi333 $r0,[$r4+#0x1]
7014: a6 62 lbi333 $r1,[$r4+#0x2]
7016: 50 22 00 08 addi $r2,$r4,#0x8
701a: ec 04 addi10.sp #0x4
701c: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
7020: 48 ff f9 e6 j 0x63ec
; label CMD_EQ_24:
7024: a6 e3 lbi333 $r3,[$r4+#0x3]
7026: a6 62 lbi333 $r1,[$r4+#0x2]
7028: 40 31 a0 08 slli $r3,$r3,#0x8
702c: a6 21 lbi333 $r0,[$r4+#0x1]
702e: a6 a4 lbi333 $r2,[$r4+#0x4]
7030: 40 11 84 04 or $r1,$r3,$r1
7034: 50 32 00 08 addi $r3,$r4,#0x8
7038: ec 04 addi10.sp #0x4
703a: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
703e: 48 ff f9 a7 j 0x638c ; handle_command_24(subcmd, offset, size)
; label CMD_EQ_25:
7042: a6 e3 lbi333 $r3,[$r4+#0x3]
7044: a6 62 lbi333 $r1,[$r4+#0x2]
7046: 40 31 a0 08 slli $r3,$r3,#0x8
704a: a6 21 lbi333 $r0,[$r4+#0x1]
704c: a6 a4 lbi333 $r2,[$r4+#0x4]
704e: 40 11 84 04 or $r1,$r3,$r1
7052: 50 32 00 08 addi $r3,$r4,#0x8
7056: ec 04 addi10.sp #0x4
7058: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
705c: 48 ff f9 68 j 0x632c ; handle_command_25(subcmd, offset, size)
; label CMD_EQ_26:
7060: a6 e3 lbi333 $r3,[$r4+#0x3]
7062: a6 62 lbi333 $r1,[$r4+#0x2]
7064: 40 31 a0 08 slli $r3,$r3,#0x8
7068: a6 21 lbi333 $r0,[$r4+#0x1]
706a: a6 a4 lbi333 $r2,[$r4+#0x4]
706c: 40 11 84 04 or $r1,$r3,$r1
7070: 50 32 00 08 addi $r3,$r4,#0x8
7074: ec 04 addi10.sp #0x4
7076: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
707a: 48 ff f9 e9 j 0x644c ; handle_command_26(subcmd, offset, size)
; label CMD_EQ_27:
707e: a6 e4 lbi333 $r3,[$r4+#0x4] ; $r3 = packet[4] (p4)
7080: a6 23 lbi333 $r0,[$r4+#0x3] ; $r0 = packet[3] (p3)
7082: a6 62 lbi333 $r1,[$r4+#0x2] ; $r1 = packet[2] (p2)
7084: 40 00 20 08 slli $r0,$r0,#0x8 ; $r0 = 0x0000p300
7088: 40 31 c0 08 slli $r3,$r3,#0x10 ; $r3 = 0x00p40000
708c: 40 31 80 04 or $r3,$r3,$r0 ; $r3 = 0x00p4p300
7090: a6 a5 lbi333 $r2,[$r4+#0x5] ; $r2 = packet[5] (length)
7092: a6 21 lbi333 $r0,[$r4+#0x1] ; $r0 = packet[1] (subcmd)
7094: 40 11 84 04 or $r1,$r3,$r1 ; $r1 = 0x00p4p3p2
7098: 50 32 00 08 addi $r3,$r4,#0x8 ; $r3 = packet+8 (payload)
709c: ec 04 addi10.sp #0x4
709e: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
70a2: 48 ff f9 0d j 0x62bc ; return handle_command_27($r0=subcmd, $r1=offset, $r2=length, $r3=payload)
; label mainloop_6dec_out:
70a6: ec 04 addi10.sp #0x4
70a8: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
70ac: dd 9e ret5 $lp
70ae: 92 00 nop16
; ---------- 0x70b0: enable_usb()
70b0: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
70b4: 46 60 02 07 sethi $r6,#0x207 ; USB address range: 0x00207800~0x00207bff
70b8: 58 63 08 0c ori $r6,$r6,#0x80c ; USB offset 0x0c: SIEI, SIE Interface Register
70bc: b4 26 lwi450 $r1,[$r6] ; get SIEI value
70be: 58 10 80 20 ori $r1,$r1,#0x20 ; set bit 5 (USBEN - enable USB transceiver)
70c2: b6 26 swi450 $r1,[$r6] ; write SIEI. USB tranceiver is now enabled!
70c4: 9e 34 subi333 $r0,$r6,#0x4
70c6: b4 40 lwi450 $r2,[$r0]
70c8: 58 21 00 3f ori $r2,$r2,#0x3f
70cc: b6 40 swi450 $r2,[$r0]
70ce: 50 13 00 3c addi $r1,$r6,#0x3c
70d2: 44 00 00 66 movi $r0,#0x66
70d6: b6 01 swi450 $r0,[$r1]
70d8: 49 ff f3 de jal 0x5894
70dc: b4 06 lwi450 $r0,[$r6]
70de: 58 00 00 02 ori $r0,$r0,#0x2
70e2: b6 06 swi450 $r0,[$r6]
70e4: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
70e8: dd 9e ret5 $lp
70ea: 92 00 nop16
; ----------- 0x70ec: watchdog_8s_reset()
70ec: 46 00 02 00 sethi $r0,#0x200 ; 0x00200800~0x0020bff: watchdog timer
70f0: 58 00 08 00 ori $r0,$r0,#0x800 ; watchdog offset 0x00
70f4: b4 20 lwi450 $r1,[$r0] ; get watchdog settings
70f6: 58 10 80 80 ori $r1,$r1,#0x80 ; set bit 7 - DIS_WDT (disable watchdog)
70fa: b6 20 swi450 $r1,[$r0] ; write to watchdog
70fc: b4 20 lwi450 $r1,[$r0] ; get watchdog settings
70fe: 42 10 98 09 bclr $r1,$r1,#0x6 ; clear bit 6 - WDT_CLK_SEL, 0=RC (128kz), 1=MCU
7102: b6 20 swi450 $r1,[$r0] ; switch watchdog to RC clock
7104: 84 24 movi55 $r1,#0x4 ; $r1 = 0b100
7106: a8 41 swi333 $r1,[$r0+#0x4] ; watchdog offset 0x04, WDT_RST (reset time), 1xx = 8s
7108: b4 20 lwi450 $r1,[$r0] ; get watchdog settings
710a: 42 10 9c 09 bclr $r1,$r1,#0x7 ; clear bit 7 (enable watchdog)
710e: b6 20 swi450 $r1,[$r0] ; write to watchdog
7110: dd 9e ret5 $lp
7112: 92 00 nop16
; ---------- 0x7114: mainloop_twiddle_0x0200a800
7114: 46 00 02 00 sethi $r0,#0x200a ; $r0 = 0x0200_a000
7118: 58 00 08 00 ori $r0,$r0,#0x800 ; $r0 = 0x0200_a800
711c: b4 20 lwi450 $r1,[$r0] ; $r1 = [0x0200a800] (this is mapped memory..)
711e: 58 10 80 80 ori $r1,$r1,#0x80
7122: b6 20 swi450 $r1,[$r0]
7124: b4 20 lwi450 $r1,[$r0]
7126: 42 10 9c 09 bclr $r1,$r1,#0x7
712a: b6 20 swi450 $r1,[$r0]
712c: dd 9e ret5 $lp
712e: 92 00 nop16
7130: 3e 2f ff 28 addi.gp $r2,#-216
7134: 80 02 mov55 $r0,$r2
7136: 84 2a movi55 $r1,#0xa
7138: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
713c: 84 22 movi55 $r1,#0x2
713e: ae 52 sbi333 $r1,[$r2+#0x2]
7140: ae 40 sbi333 $r1,[$r0+#0x0]
7142: dd 9e ret5 $lp
7144: 3a 6f a0 3c smw.adm $r6,[$sp],$r8,#0x0 ! {$r6~$r8}
7148: 84 a0 movi55 $r5,#0x0
714a: 84 20 movi55 $r1,#0x0
714c: 3e 17 ff f9 sbi.gp $r1,[+#-7]
7150: 44 70 d2 88 movi $r7,#0xd288
7154: 80 c5 mov55 $r6,$r5
7156: d5 11 j8 0x7178
7158: 9c 49 addi333 $r1,$r1,#0x1
715a: 96 48 zeb33 $r1,$r1
715c: 85 06 movi55 $r8,#0x6
715e: ae 80 sbi333 $r2,[$r0+#0x0]
7160: af 01 sbi333 $r4,[$r0+#0x1]
7162: ae c2 sbi333 $r3,[$r0+#0x2]
7164: af 83 sbi333 $r6,[$r0+#0x3]
7166: 50 00 00 58 addi $r0,$r0,#0x58
716a: 4c 14 7f f7 bne $r1,$r8,0x7158
716e: 9d 69 addi333 $r5,$r5,#0x1
7170: 44 00 00 16 movi $r0,#0x16
7174: 9d fc addi333 $r7,$r7,#0x4
7176: d0 0f beqs38 $r0,0x7194
7178: b4 47 lwi450 $r2,[$r7]
717a: 40 31 40 09 srli $r3,$r2,#0x10
717e: 40 41 20 09 srli $r4,$r2,#0x8
7182: 3e 18 03 00 addi.gp $r1,#0x300
7186: 94 2a slli333 $r0,$r5,#0x2
7188: 98 01 add333 $r0,$r0,$r1
718a: 97 20 zeb33 $r4,$r4
718c: 96 d8 zeb33 $r3,$r3
718e: 96 90 zeb33 $r2,$r2
7190: 84 20 movi55 $r1,#0x0
7192: d5 e3 j8 0x7158
7194: 3e 3f ff 28 addi.gp $r3,#-216
7198: 46 20 01 00 sethi $r2,#0x100
719c: 84 00 movi55 $r0,#0x0
719e: 3e 1f ff 7c addi.gp $r1,#-132
71a2: 3c 3f ff 9f swi.gp $r3,[+#-388]
71a6: 3a 6f a0 04 lmw.bim $r6,[$sp],$r8,#0x0 ! {$r6~$r8}
71aa: 48 ff e8 7d j 0x42a4
71ae: 92 00 nop16
71b0: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
71b4: 44 00 00 32 movi $r0,#0x32
71b8: 3e 1f ff 7c addi.gp $r1,#-132
71bc: 49 ff e8 74 jal 0x42a4
71c0: 4e 02 00 34 beqz $r0,0x7228
71c4: 49 ff c9 38 jal 0x434 ; $r0 = max_adc_byte()
71c8: 2e 27 ff 29 lbi.gp $r2,[+#-215]
71cc: 44 10 d5 28 movi $r1,#0xd528
71d0: 38 20 89 01 lh $r2,[$r1+($r2<<#0x1)]
71d4: 40 20 08 16 divsr $r2,$r0,$r0,$r2
71d8: 96 90 zeb33 $r2,$r2
71da: 3e 27 ff f9 sbi.gp $r2,[+#-7]
71de: e6 57 slti45 $r2,#0x17
71e0: e9 06 bnezs8 0x71ec
71e2: 44 00 00 16 movi $r0,#0x16
71e6: 3e 07 ff f9 sbi.gp $r0,[+#-7]
71ea: 80 40 mov55 $r2,$r0
71ec: 84 60 movi55 $r3,#0x0
71ee: 3e 18 05 13 addi.gp $r1,#0x513
71f2: 80 c3 mov55 $r6,$r3
71f4: 44 50 00 64 movi $r5,#0x64
71f8: d5 10 j8 0x7218
71fa: e2 82 slt45 $r4,$r2
71fc: e8 03 beqzs8 0x7202
71fe: af 40 sbi333 $r5,[$r0+#0x0]
7200: d5 02 j8 0x7204
7202: af 80 sbi333 $r6,[$r0+#0x0]
7204: 50 00 00 58 addi $r0,$r0,#0x58
7208: 4c 10 7f f9 bne $r1,$r0,0x71fa
720c: 9c d9 addi333 $r3,$r3,#0x1
720e: 44 00 00 16 movi $r0,#0x16
7212: 9c 4c addi333 $r1,$r1,#0x4
7214: 4c 30 00 09 beq $r3,$r0,0x7226
7218: 3e 48 03 00 addi.gp $r4,#0x300
721c: 94 1a slli333 $r0,$r3,#0x2
721e: 98 04 add333 $r0,$r0,$r4
7220: 9c 03 addi333 $r0,$r0,#0x3
7222: 97 18 zeb33 $r4,$r3
7224: d5 eb j8 0x71fa
7226: 84 01 movi55 $r0,#0x1
7228: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
722c: dd 9e ret5 $lp
722e: 92 00 nop16
7230: 3e 0f ff 30 addi.gp $r0,#-208
7234: 84 2a movi55 $r1,#0xa
7236: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
723a: 84 22 movi55 $r1,#0x2
723c: ae 40 sbi333 $r1,[$r0+#0x0]
723e: dd 9e ret5 $lp
7240: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7244: 51 ff ff e4 addi $sp,$sp,#-28
7248: 2e 17 ff 31 lbi.gp $r1,[+#-207]
724c: 44 00 d5 34 movi $r0,#0xd534
7250: 38 00 05 01 lh $r0,[$r0+($r1<<#0x1)]
7254: 3e 1f ff 7c addi.gp $r1,#-132
7258: 49 ff e8 26 jal 0x42a4
725c: c0 06 beqz38 $r0,0x7268
725e: 84 a0 movi55 $r5,#0x0
7260: 44 70 00 58 movi $r7,#0x58
7264: 80 c5 mov55 $r6,$r5
7266: d5 23 j8 0x72ac
7268: 3e 18 05 24 addi.gp $r1,#0x524
726c: 84 40 movi55 $r2,#0x0
726e: f1 81 swi37.sp $r1,[+#0x4]
7270: f2 82 swi37.sp $r2,[+#0x8]
7272: 50 af 80 17 addi $r10,$sp,#0x17
7276: 50 9f 80 16 addi $r9,$sp,#0x16
727a: 48 00 00 cc j 0x7412
727e: a6 08 lbi333 $r0,[$r1+#0x0]
7280: 9e c1 subi333 $r3,$r0,#0x1
7282: 50 40 7f f6 addi $r4,$r0,#-10
7286: 96 d8 zeb33 $r3,$r3
7288: e6 0b slti45 $r0,#0xb
728a: e9 03 bnezs8 0x7290
728c: af 08 sbi333 $r4,[$r1+#0x0]
728e: d5 04 j8 0x7296
7290: e6 6a slti45 $r3,#0xa
7292: e8 02 beqzs8 0x7296
7294: af 88 sbi333 $r6,[$r1+#0x0]
7296: 9c 91 addi333 $r2,$r2,#0x1
7298: 96 92 seb33 $r2,$r2
729a: 44 30 00 16 movi $r3,#0x16
729e: 9c 4c addi333 $r1,$r1,#0x4
72a0: 4c 21 ff ef bne $r2,$r3,0x727e
72a4: 9d 69 addi333 $r5,$r5,#0x1
72a6: 87 c6 movi55 $lp,#0x6
72a8: 4c 5f 00 0a beq $r5,$lp,0x72bc
72ac: 42 12 9c 24 mul $r1,$r5,$r7
72b0: 3e 08 03 00 addi.gp $r0,#0x300
72b4: 98 48 add333 $r1,$r1,$r0
72b6: 84 40 movi55 $r2,#0x0
72b8: 9c 4b addi333 $r1,$r1,#0x3
72ba: d5 e2 j8 0x727e
72bc: 3e 58 03 00 addi.gp $r5,#0x300
72c0: 3e 08 05 ef addi.gp $r0,#0x5ef
72c4: 87 80 movi55 $fp,#0x0
72c6: 50 a2 80 01 addi $r10,$r5,#0x1
72ca: 50 92 80 02 addi $r9,$r5,#0x2
72ce: 50 82 80 03 addi $r8,$r5,#0x3
72d2: 8c ec addi45 $r7,#0xc
72d4: a6 40 lbi333 $r1,[$r0+#0x0]
72d6: c1 41 beqz38 $r1,0x7358
72d8: 00 10 7f ff lbi $r1,[$r0+#-1]
72dc: 00 40 7f fe lbi $r4,[$r0+#-2]
72e0: 9d 89 addi333 $r6,$r1,#0x1
72e2: 9a e1 sub333 $r3,$r4,$r1
72e4: 96 da seb33 $r3,$r3
72e6: 99 21 add333 $r4,$r4,$r1
72e8: 97 22 seb33 $r4,$r4
72ea: 4e 35 00 16 bltz $r3,0x7316
72ee: 20 10 7f fd lbsi $r1,[$r0+#-3]
72f2: 83 c3 mov55 $lp,$r3
72f4: 43 e0 88 73 maddr32 $lp,$r1,$r2
72f8: 38 74 7a 08 sb $r7,[$r8+($lp<<#0x2)]
72fc: 80 3e mov55 $r1,$lp
72fe: 01 e0 7f f9 lbi $lp,[$r0+#-7]
7302: 39 e2 86 08 sb $lp,[$r5+($r1<<#0x2)]
7306: 01 e0 7f fa lbi $lp,[$r0+#-6]
730a: 39 e5 06 08 sb $lp,[$r10+($r1<<#0x2)]
730e: 01 e0 7f fb lbi $lp,[$r0+#-5]
7312: 39 e4 86 08 sb $lp,[$r9+($r1<<#0x2)]
7316: e4 96 sltsi45 $r4,#0x16
7318: e8 16 beqzs8 0x7344
731a: 20 10 7f fd lbsi $r1,[$r0+#-3]
731e: 83 c4 mov55 $lp,$r4
7320: 43 e0 88 73 maddr32 $lp,$r1,$r2
7324: 38 74 7a 08 sb $r7,[$r8+($lp<<#0x2)]
7328: 50 1f 00 00 addi $r1,$lp,#0x0
732c: 01 e0 7f f9 lbi $lp,[$r0+#-7]
7330: 39 e2 86 08 sb $lp,[$r5+($r1<<#0x2)]
7334: 01 e0 7f fa lbi $lp,[$r0+#-6]
7338: 39 e5 06 08 sb $lp,[$r10+($r1<<#0x2)]
733c: 01 e0 7f fb lbi $lp,[$r0+#-5]
7340: 39 e4 86 08 sb $lp,[$r9+($r1<<#0x2)]
7344: 4e 36 00 08 bgtz $r3,0x7354
7348: 5e f2 00 15 sltsi $r15,$r4,#0x15
734c: e9 04 bnezs8 0x7354
734e: 11 c0 00 00 sbi $fp,[$r0+#0x0]
7352: d5 03 j8 0x7358
7354: 10 60 7f ff sbi $r6,[$r0+#-1]
7358: 8c 08 addi45 $r0,#0x8
735a: 3e 18 06 3f addi.gp $r1,#0x63f
735e: 4c 00 ff bb bne $r0,$r1,0x72d4
7362: 84 01 movi55 $r0,#0x1
7364: 48 ff ff 82 j 0x7268
7368: f2 01 lwi37.sp $r2,[+#0x4]
736a: 41 c4 00 10 seb $fp,$r8
736e: a6 50 lbi333 $r1,[$r2+#0x0]
7370: 40 10 a0 0e sra $r1,$r1,$r8
7374: 96 4c xlsb33 $r1,$r1
7376: c1 3f beqz38 $r1,0x73f4
7378: 3e 28 05 ef addi.gp $r2,#0x5ef
737c: 84 c0 movi55 $r6,#0x0
737e: a6 50 lbi333 $r1,[$r2+#0x0]
7380: 8c 48 addi45 $r2,#0x8
7382: c9 35 bnez38 $r1,0x73ec
7384: 80 0a mov55 $r0,$r10
7386: 80 29 mov55 $r1,$r9
7388: 80 47 mov55 $r2,$r7
738a: 49 ff e4 1d jal 0x3bc4
738e: f3 03 lwi37.sp $r3,[+#0xc]
7390: 44 00 00 16 movi $r0,#0x16
7394: 42 3e 00 73 maddr32 $r3,$fp,$r0
7398: 80 03 mov55 $r0,$r3
739a: 3e 58 03 02 addi.gp $r5,#0x302
739e: 94 73 slli333 $r1,$r6,#0x3
73a0: 3e 38 05 e8 addi.gp $r3,#0x5e8
73a4: 98 8b add333 $r2,$r1,$r3
73a6: 9c e9 addi333 $r3,$r5,#0x1
73a8: 44 10 00 64 movi $r1,#0x64
73ac: 01 ef 80 15 lbi $lp,[$sp+#0x15]
73b0: 38 11 82 08 sb $r1,[$r3+($r0<<#0x2)]
73b4: a6 fa lbi333 $r3,[$r7+#0x2]
73b6: 3e 18 05 e8 addi.gp $r1,#0x5e8
73ba: 38 30 9b 08 sb $r3,[$r1+($r6<<#0x3)]
73be: 84 81 movi55 $r4,#0x1
73c0: 3e 18 03 00 addi.gp $r1,#0x300
73c4: af 16 sbi333 $r4,[$r2+#0x6]
73c6: 11 e1 00 02 sbi $lp,[$r2+#0x2]
73ca: 38 30 82 08 sb $r3,[$r1+($r0<<#0x2)]
73ce: a6 79 lbi333 $r1,[$r7+#0x1]
73d0: 3e 38 03 01 addi.gp $r3,#0x301
73d4: 38 11 82 08 sb $r1,[$r3+($r0<<#0x2)]
73d8: 39 e2 82 08 sb $lp,[$r5+($r0<<#0x2)]
73dc: af 17 sbi333 $r4,[$r2+#0x7]
73de: 11 c1 00 04 sbi $fp,[$r2+#0x4]
73e2: 84 01 movi55 $r0,#0x1
73e4: f3 02 lwi37.sp $r3,[+#0x8]
73e6: ae 51 sbi333 $r1,[$r2+#0x1]
73e8: ae d5 sbi333 $r3,[$r2+#0x5]
73ea: d5 05 j8 0x73f4
73ec: 9d b1 addi333 $r6,$r6,#0x1
73ee: 87 ca movi55 $lp,#0xa
73f0: 4c 6f 7f c7 bne $r6,$lp,0x737e
73f4: 8d 01 addi45 $r8,#0x1
73f6: 84 26 movi55 $r1,#0x6
73f8: 4c 80 ff b8 bne $r8,$r1,0x7368
73fc: f2 02 lwi37.sp $r2,[+#0x8]
73fe: f3 01 lwi37.sp $r3,[+#0x4]
7400: 9c 51 addi333 $r1,$r2,#0x1
7402: 96 4a seb33 $r1,$r1
7404: 9c d9 addi333 $r3,$r3,#0x1
7406: 45 e0 00 16 movi $lp,#0x16
740a: f1 82 swi37.sp $r1,[+#0x8]
740c: f3 81 swi37.sp $r3,[+#0x4]
740e: 4c 1f 00 08 beq $r1,$lp,0x741e
7412: f1 02 lwi37.sp $r1,[+#0x8]
7414: 85 00 movi55 $r8,#0x0
7416: 50 7f 80 15 addi $r7,$sp,#0x15
741a: f1 83 swi37.sp $r1,[+#0xc]
741c: d5 a6 j8 0x7368
741e: ec 1c addi10.sp #0x1c
7420: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7424: dd 9e ret5 $lp
7426: 92 00 nop16
7428: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
742c: 44 10 00 00 movi $r1,#0x0
7430: 44 20 00 50 movi $r2,#0x50
7434: 3e 08 05 e8 addi.gp $r0,#0x5e8
7438: 49 00 16 40 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
743c: 3e 4f ff 30 addi.gp $r4,#-208
7440: 46 30 01 00 sethi $r3,#0x100
7444: 84 20 movi55 $r1,#0x0
7446: 44 20 02 10 movi $r2,#0x210
744a: 3e 08 03 00 addi.gp $r0,#0x300
744e: 3c 4f ff 9f swi.gp $r4,[+#-388]
7452: 49 00 16 33 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
7456: 84 00 movi55 $r0,#0x0
7458: 3e 1f ff 7c addi.gp $r1,#-132
745c: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
7460: 48 ff e7 22 j 0x42a4
7464: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7468: ef f4 addi10.sp #-12
746a: 55 e1 80 ff andi $lp,$r3,#0xff
746e: 55 c2 00 ff andi $fp,$r4,#0xff
7472: 46 8b a2 e8 sethi $r8,#0xba2e8
7476: 96 48 zeb33 $r1,$r1
7478: 96 90 zeb33 $r2,$r2
747a: 15 ef 80 00 swi $lp,[$sp+#0x0]
747e: 15 cf 80 01 swi $fp,[$sp+#0x4]
7482: 3e a8 03 00 addi.gp $r10,#0x300
7486: 58 84 0b a3 ori $r8,$r8,#0xba3
748a: 84 c0 movi55 $r6,#0x0
748c: 3e 78 0b 74 addi.gp $r7,#0xb74
7490: 44 90 00 16 movi $r9,#0x16
7494: 83 c2 mov55 $lp,$r2
7496: 83 81 mov55 $fp,$r1
7498: 40 13 0c 09 srli $r1,$r6,#0x3
749c: 97 08 zeb33 $r4,$r1
749e: 38 23 90 00 lb $r2,[$r7+($r4<<#0x0)]
74a2: 54 53 00 07 andi $r5,$r6,#0x7
74a6: 40 11 14 0e sra $r1,$r2,$r5
74aa: 96 4c xlsb33 $r1,$r1
74ac: c1 25 beqz38 $r1,0x74f6
74ae: 42 23 20 69 mulr64 $r2,$r6,$r8
74b2: 38 40 10 00 lb $r4,[$r0+($r4<<#0x0)]
74b6: 92 64 srli45 $r3,#0x4
74b8: 80 46 mov55 $r2,$r6
74ba: 42 21 a4 75 msubr32 $r2,$r3,$r9
74be: 40 12 14 0e sra $r1,$r4,$r5
74c2: 96 4c xlsb33 $r1,$r1
74c4: 96 90 zeb33 $r2,$r2
74c6: c1 18 beqz38 $r1,0x74f6
74c8: 96 58 zeb33 $r1,$r3
74ca: 80 62 mov55 $r3,$r2
74cc: 42 30 a4 73 maddr32 $r3,$r1,$r9
74d0: 80 23 mov55 $r1,$r3
74d2: e6 56 slti45 $r2,#0x16
74d4: e8 11 beqzs8 0x74f6
74d6: b4 7f lwi450 $r3,[$sp]
74d8: 3e 28 03 02 addi.gp $r2,#0x302
74dc: 38 31 06 08 sb $r3,[$r2+($r1<<#0x2)]
74e0: f3 01 lwi37.sp $r3,[+#0x4]
74e2: 3e 28 03 03 addi.gp $r2,#0x303
74e6: 38 31 06 08 sb $r3,[$r2+($r1<<#0x2)]
74ea: 3e 38 03 01 addi.gp $r3,#0x301
74ee: 39 c5 06 08 sb $fp,[$r10+($r1<<#0x2)]
74f2: 39 e1 86 08 sb $lp,[$r3+($r1<<#0x2)]
74f6: 9d b1 addi333 $r6,$r6,#0x1
74f8: 44 10 00 84 movi $r1,#0x84
74fc: 4c 60 ff ce bne $r6,$r1,0x7498
7500: ec 0c addi10.sp #0xc
7502: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7506: dd 9e ret5 $lp
7508: 00 30 00 19 lbi $r3,[$r0+#0x19]
750c: 00 10 00 17 lbi $r1,[$r0+#0x17]
7510: 00 20 00 18 lbi $r2,[$r0+#0x18]
7514: 44 40 00 64 movi $r4,#0x64
7518: 9c 01 addi333 $r0,$r0,#0x1
751a: d5 a5 j8 0x7464
751c: 00 30 00 19 lbi $r3,[$r0+#0x19]
7520: 00 10 00 17 lbi $r1,[$r0+#0x17]
7524: 00 20 00 18 lbi $r2,[$r0+#0x18]
7528: 44 40 00 64 movi $r4,#0x64
752c: 9c 01 addi333 $r0,$r0,#0x1
752e: d5 9b j8 0x7464
7530: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
7534: ef fc addi10.sp #-4
7536: 00 10 00 17 lbi $r1,[$r0+#0x17]
753a: 00 30 00 19 lbi $r3,[$r0+#0x19]
753e: 00 20 00 18 lbi $r2,[$r0+#0x18]
7542: 80 c0 mov55 $r6,$r0
7544: 44 40 00 64 movi $r4,#0x64
7548: 50 00 00 01 addi $r0,$r0,#0x1
754c: 49 ff ff 8c jal 0x7464
7550: 00 53 00 17 lbi $r5,[$r6+#0x17]
7554: 00 33 00 18 lbi $r3,[$r6+#0x18]
7558: 80 25 mov55 $r1,$r5
755a: 80 03 mov55 $r0,$r3
755c: 10 13 00 20 sbi $r1,[$r6+#0x20]
7560: e2 20 slt45 $r1,$r0
7562: e9 05 bnezs8 0x756c
7564: 80 01 mov55 $r0,$r1
7566: 44 70 00 00 movi $r7,#0x0
756a: d5 05 j8 0x7574
756c: 10 03 00 20 sbi $r0,[$r6+#0x20]
7570: 44 70 00 01 movi $r7,#0x1
7574: 00 43 00 19 lbi $r4,[$r6+#0x19]
7578: 80 24 mov55 $r1,$r4
757a: e2 01 slt45 $r0,$r1
757c: e8 04 beqzs8 0x7584
757e: 10 13 00 20 sbi $r1,[$r6+#0x20]
7582: 84 e2 movi55 $r7,#0x2
7584: 80 25 mov55 $r1,$r5
7586: 80 03 mov55 $r0,$r3
7588: 10 13 00 21 sbi $r1,[$r6+#0x21]
758c: e2 01 slt45 $r0,$r1
758e: e9 03 bnezs8 0x7594
7590: 80 01 mov55 $r0,$r1
7592: d5 03 j8 0x7598
7594: 10 03 00 21 sbi $r0,[$r6+#0x21]
7598: 80 44 mov55 $r2,$r4
759a: e2 40 slt45 $r2,$r0
759c: e9 04 bnezs8 0x75a4
759e: 50 20 00 00 addi $r2,$r0,#0x0
75a2: d5 03 j8 0x75a8
75a4: 10 23 00 21 sbi $r2,[$r6+#0x21]
75a8: 00 03 00 20 lbi $r0,[$r6+#0x20]
75ac: 46 18 88 88 sethi $r1,#0x88888
75b0: 9a 02 sub333 $r0,$r0,$r2
75b2: 58 10 88 89 ori $r1,$r1,#0x889
75b6: 42 80 04 68 mulsr64 $r8,$r0,$r1
75ba: 40 10 7c 0a srai $r1,$r0,#0x1f
75be: 88 09 add45 $r0,$r9
75c0: 90 05 srai45 $r0,#0x5
75c2: 02 23 00 0d lhi $r2,[$r6+#0x1a]
75c6: 9a 01 sub333 $r0,$r0,$r1
75c8: 42 00 08 24 mul $r0,$r0,$r2
75cc: 2e 10 00 0a lbi.gp $r1,[+#0xa]
75d0: 40 00 04 36 divsr $r0,$r1,$r0,$r1
75d4: 96 01 zeh33 $r0,$r0
75d6: 12 03 00 0f shi $r0,[$r6+#0x1e]
75da: c8 04 bnez38 $r0,0x75e2
75dc: 84 01 movi55 $r0,#0x1
75de: 12 03 00 0f shi $r0,[$r6+#0x1e]
75e2: cf 08 bnez38 $r7,0x75f2
75e4: e2 64 slt45 $r3,$r4
75e6: e9 02 bnezs8 0x75ea
75e8: d5 0e j8 0x7604
75ea: 84 05 movi55 $r0,#0x5
75ec: 10 03 00 22 sbi $r0,[$r6+#0x22]
75f0: d5 16 j8 0x761c
75f2: 84 01 movi55 $r0,#0x1
75f4: 4c 70 40 0b bne $r7,$r0,0x760a
75f8: e2 85 slt45 $r4,$r5
75fa: e9 05 bnezs8 0x7604
75fc: 84 02 movi55 $r0,#0x2
75fe: 10 03 00 22 sbi $r0,[$r6+#0x22]
7602: d5 0d j8 0x761c
7604: 10 73 00 22 sbi $r7,[$r6+#0x22]
7608: d5 0a j8 0x761c
760a: e2 a3 slt45 $r5,$r3
760c: e9 05 bnezs8 0x7616
760e: 84 04 movi55 $r0,#0x4
7610: 10 03 00 22 sbi $r0,[$r6+#0x22]
7614: d5 04 j8 0x761c
7616: 84 03 movi55 $r0,#0x3
7618: 10 03 00 22 sbi $r0,[$r6+#0x22]
761c: ec 04 addi10.sp #0x4
761e: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
7622: dd 9e ret5 $lp
7624: 00 10 00 22 lbi $r1,[$r0+#0x22]
7628: 84 42 movi55 $r2,#0x2
762a: 4c 11 00 53 beq $r1,$r2,0x76d0
762e: e6 23 slti45 $r1,#0x3
7630: e8 06 beqzs8 0x763c
7632: c1 15 beqz38 $r1,0x765c
7634: 84 41 movi55 $r2,#0x1
7636: 4c 11 40 0b bne $r1,$r2,0x764c
763a: d5 2f j8 0x7698
763c: 84 44 movi55 $r2,#0x4
763e: 4c 11 00 81 beq $r1,$r2,0x7740
7642: e2 22 slt45 $r1,$r2
7644: e9 62 bnezs8 0x7708
7646: 84 45 movi55 $r2,#0x5
7648: 4c 11 00 98 beq $r1,$r2,0x7778
764c: 00 10 00 17 lbi $r1,[$r0+#0x17]
7650: 00 20 00 18 lbi $r2,[$r0+#0x18]
7654: 00 30 00 19 lbi $r3,[$r0+#0x19]
7658: 48 00 00 ab j 0x77ae
765c: 00 10 00 18 lbi $r1,[$r0+#0x18]
7660: 02 30 00 0f lhi $r3,[$r0+#0x1e]
7664: 00 20 00 20 lbi $r2,[$r0+#0x20]
7668: 98 59 add333 $r1,$r3,$r1
766a: e0 22 slts45 $r1,$r2
766c: e8 0a beqzs8 0x7680
766e: 96 88 zeb33 $r2,$r1
7670: 10 20 00 18 sbi $r2,[$r0+#0x18]
7674: 00 10 00 17 lbi $r1,[$r0+#0x17]
7678: 00 30 00 19 lbi $r3,[$r0+#0x19]
767c: 48 00 00 99 j 0x77ae
7680: 44 10 00 01 movi $r1,#0x1
7684: 10 10 00 22 sbi $r1,[$r0+#0x22]
7688: 10 20 00 18 sbi $r2,[$r0+#0x18]
768c: 00 10 00 17 lbi $r1,[$r0+#0x17]
7690: 00 30 00 19 lbi $r3,[$r0+#0x19]
7694: 48 00 00 8d j 0x77ae
7698: 00 10 00 21 lbi $r1,[$r0+#0x21]
769c: 02 20 00 0f lhi $r2,[$r0+#0x1e]
76a0: 00 30 00 17 lbi $r3,[$r0+#0x17]
76a4: 99 11 add333 $r4,$r2,$r1
76a6: e0 83 slts45 $r4,$r3
76a8: e8 0a beqzs8 0x76bc
76aa: 9a 5a sub333 $r1,$r3,$r2
76ac: 96 48 zeb33 $r1,$r1
76ae: 10 10 00 17 sbi $r1,[$r0+#0x17]
76b2: 00 20 00 18 lbi $r2,[$r0+#0x18]
76b6: 00 30 00 19 lbi $r3,[$r0+#0x19]
76ba: d5 7a j8 0x77ae
76bc: 84 42 movi55 $r2,#0x2
76be: 10 20 00 22 sbi $r2,[$r0+#0x22]
76c2: 10 10 00 17 sbi $r1,[$r0+#0x17]
76c6: 00 20 00 18 lbi $r2,[$r0+#0x18]
76ca: 00 30 00 19 lbi $r3,[$r0+#0x19]
76ce: d5 70 j8 0x77ae
76d0: 00 10 00 19 lbi $r1,[$r0+#0x19]
76d4: 02 20 00 0f lhi $r2,[$r0+#0x1e]
76d8: 00 30 00 20 lbi $r3,[$r0+#0x20]
76dc: 98 51 add333 $r1,$r2,$r1
76de: e0 23 slts45 $r1,$r3
76e0: e8 09 beqzs8 0x76f2
76e2: 96 c8 zeb33 $r3,$r1
76e4: 10 30 00 19 sbi $r3,[$r0+#0x19]
76e8: 00 10 00 17 lbi $r1,[$r0+#0x17]
76ec: 00 20 00 18 lbi $r2,[$r0+#0x18]
76f0: d5 5f j8 0x77ae
76f2: 84 23 movi55 $r1,#0x3
76f4: 10 10 00 22 sbi $r1,[$r0+#0x22]
76f8: 10 30 00 19 sbi $r3,[$r0+#0x19]
76fc: 00 10 00 17 lbi $r1,[$r0+#0x17]
7700: 00 20 00 18 lbi $r2,[$r0+#0x18]
7704: 48 00 00 55 j 0x77ae
7708: 00 20 00 21 lbi $r2,[$r0+#0x21]
770c: 02 10 00 0f lhi $r1,[$r0+#0x1e]
7710: 00 30 00 18 lbi $r3,[$r0+#0x18]
7714: 99 0a add333 $r4,$r1,$r2
7716: e0 83 slts45 $r4,$r3
7718: e8 0a beqzs8 0x772c
771a: 9a 99 sub333 $r2,$r3,$r1
771c: 96 90 zeb33 $r2,$r2
771e: 10 20 00 18 sbi $r2,[$r0+#0x18]
7722: 00 10 00 17 lbi $r1,[$r0+#0x17]
7726: 00 30 00 19 lbi $r3,[$r0+#0x19]
772a: d5 42 j8 0x77ae
772c: 84 24 movi55 $r1,#0x4
772e: 10 10 00 22 sbi $r1,[$r0+#0x22]
7732: 10 20 00 18 sbi $r2,[$r0+#0x18]
7736: 00 10 00 17 lbi $r1,[$r0+#0x17]
773a: 00 30 00 19 lbi $r3,[$r0+#0x19]
773e: d5 38 j8 0x77ae
7740: 00 20 00 17 lbi $r2,[$r0+#0x17]
7744: 02 30 00 0f lhi $r3,[$r0+#0x1e]
7748: 00 10 00 20 lbi $r1,[$r0+#0x20]
774c: 98 9a add333 $r2,$r3,$r2
774e: e0 41 slts45 $r2,$r1
7750: e8 09 beqzs8 0x7762
7752: 96 50 zeb33 $r1,$r2
7754: 10 10 00 17 sbi $r1,[$r0+#0x17]
7758: 00 20 00 18 lbi $r2,[$r0+#0x18]
775c: 00 30 00 19 lbi $r3,[$r0+#0x19]
7760: d5 27 j8 0x77ae
7762: 84 45 movi55 $r2,#0x5
7764: 10 20 00 22 sbi $r2,[$r0+#0x22]
7768: 10 10 00 17 sbi $r1,[$r0+#0x17]
776c: 00 20 00 18 lbi $r2,[$r0+#0x18]
7770: 00 30 00 19 lbi $r3,[$r0+#0x19]
7774: 48 00 00 1d j 0x77ae
7778: 00 30 00 21 lbi $r3,[$r0+#0x21]
777c: 02 10 00 0f lhi $r1,[$r0+#0x1e]
7780: 00 20 00 19 lbi $r2,[$r0+#0x19]
7784: 99 0b add333 $r4,$r1,$r3
7786: e0 82 slts45 $r4,$r2
7788: e8 0a beqzs8 0x779c
778a: 9a d1 sub333 $r3,$r2,$r1
778c: 96 d8 zeb33 $r3,$r3
778e: 10 30 00 19 sbi $r3,[$r0+#0x19]
7792: 00 10 00 17 lbi $r1,[$r0+#0x17]
7796: 00 20 00 18 lbi $r2,[$r0+#0x18]
779a: d5 0a j8 0x77ae
779c: 84 20 movi55 $r1,#0x0
779e: 10 10 00 22 sbi $r1,[$r0+#0x22]
77a2: 10 30 00 19 sbi $r3,[$r0+#0x19]
77a6: 00 10 00 17 lbi $r1,[$r0+#0x17]
77aa: 00 20 00 18 lbi $r2,[$r0+#0x18]
77ae: 9c 01 addi333 $r0,$r0,#0x1
77b0: 44 40 00 64 movi $r4,#0x64
77b4: 48 ff fe 58 j 0x7464
77b8: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
77bc: 00 10 00 17 lbi $r1,[$r0+#0x17]
77c0: 00 20 00 18 lbi $r2,[$r0+#0x18]
77c4: 00 30 00 19 lbi $r3,[$r0+#0x19]
77c8: 80 c0 mov55 $r6,$r0
77ca: 84 80 movi55 $r4,#0x0
77cc: 50 00 00 01 addi $r0,$r0,#0x1
77d0: 49 ff fe 4a jal 0x7464
77d4: 02 03 00 0d lhi $r0,[$r6+#0x1a]
77d8: 2e 10 00 0a lbi.gp $r1,[+#0xa]
77dc: 40 00 20 08 slli $r0,$r0,#0x8
77e0: 40 00 04 56 divsr $r0,$r2,$r0,$r1
77e4: 96 01 zeh33 $r0,$r0
77e6: 12 03 00 0f shi $r0,[$r6+#0x1e]
77ea: c8 05 bnez38 $r0,0x77f4
77ec: 44 00 00 32 movi $r0,#0x32
77f0: 12 03 00 0f shi $r0,[$r6+#0x1e]
77f4: 00 23 00 1c lbi $r2,[$r6+#0x1c]
77f8: 84 00 movi55 $r0,#0x0
77fa: 42 10 88 24 mul $r1,$r1,$r2
77fe: 10 03 00 24 sbi $r0,[$r6+#0x24]
7802: 10 13 00 22 sbi $r1,[$r6+#0x22]
7806: 12 03 00 10 shi $r0,[$r6+#0x20]
780a: 10 03 00 23 sbi $r0,[$r6+#0x23]
780e: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
7812: dd 9e ret5 $lp
7814: 00 10 00 23 lbi $r1,[$r0+#0x23]
7818: c1 04 beqz38 $r1,0x7820
781a: 9e 49 subi333 $r1,$r1,#0x1
781c: 10 10 00 23 sbi $r1,[$r0+#0x23]
7820: 00 10 00 24 lbi $r1,[$r0+#0x24]
7824: 84 41 movi55 $r2,#0x1
7826: 4c 11 00 17 beq $r1,$r2,0x7854
782a: c1 09 beqz38 $r1,0x783c
782c: 84 42 movi55 $r2,#0x2
782e: 4c 11 00 2b beq $r1,$r2,0x7884
7832: 44 20 00 03 movi $r2,#0x3
7836: 4c 11 00 37 beq $r1,$r2,0x78a4
783a: d5 29 j8 0x788c
783c: 00 10 00 23 lbi $r1,[$r0+#0x23]
7840: c1 02 beqz38 $r1,0x7844
7842: d5 25 j8 0x788c
7844: 02 40 00 10 lhi $r4,[$r0+#0x20]
7848: 84 21 movi55 $r1,#0x1
784a: 10 10 00 24 sbi $r1,[$r0+#0x24]
784e: 92 88 srli45 $r4,#0x8
7850: 48 00 00 40 j 0x78d0
7854: 02 10 00 10 lhi $r1,[$r0+#0x20]
7858: 02 40 00 0f lhi $r4,[$r0+#0x1e]
785c: 99 21 add333 $r4,$r4,$r1
785e: 44 10 63 ff movi $r1,#0x63ff
7862: e0 24 slts45 $r1,$r4
7864: e9 02 bnezs8 0x7868
7866: d5 26 j8 0x78b2
7868: 9c 49 addi333 $r1,$r1,#0x1
786a: 12 10 00 10 shi $r1,[$r0+#0x20]
786e: 84 22 movi55 $r1,#0x2
7870: 10 10 00 24 sbi $r1,[$r0+#0x24]
7874: 00 10 00 22 lbi $r1,[$r0+#0x22]
7878: 44 40 00 64 movi $r4,#0x64
787c: 10 10 00 23 sbi $r1,[$r0+#0x23]
7880: 48 00 00 28 j 0x78d0
7884: 00 10 00 23 lbi $r1,[$r0+#0x23]
7888: 4e 12 00 06 beqz $r1,0x7894
788c: 02 40 00 10 lhi $r4,[$r0+#0x20]
7890: 92 88 srli45 $r4,#0x8
7892: d5 1f j8 0x78d0
7894: 02 40 00 10 lhi $r4,[$r0+#0x20]
7898: 84 23 movi55 $r1,#0x3
789a: 10 10 00 24 sbi $r1,[$r0+#0x24]
789e: 92 88 srli45 $r4,#0x8
78a0: 48 00 00 18 j 0x78d0
78a4: 02 20 00 10 lhi $r2,[$r0+#0x20]
78a8: 02 10 00 0f lhi $r1,[$r0+#0x1e]
78ac: e2 22 slt45 $r1,$r2
78ae: e8 07 beqzs8 0x78bc
78b0: 9b 11 sub333 $r4,$r2,$r1
78b2: 97 21 zeh33 $r4,$r4
78b4: 12 40 00 10 shi $r4,[$r0+#0x20]
78b8: 92 88 srli45 $r4,#0x8
78ba: d5 0b j8 0x78d0
78bc: 00 20 00 22 lbi $r2,[$r0+#0x22]
78c0: 84 20 movi55 $r1,#0x0
78c2: 10 10 00 24 sbi $r1,[$r0+#0x24]
78c6: 12 10 00 10 shi $r1,[$r0+#0x20]
78ca: 10 20 00 23 sbi $r2,[$r0+#0x23]
78ce: 84 80 movi55 $r4,#0x0
78d0: 00 30 00 19 lbi $r3,[$r0+#0x19]
78d4: 00 10 00 17 lbi $r1,[$r0+#0x17]
78d8: 00 20 00 18 lbi $r2,[$r0+#0x18]
78dc: 9c 01 addi333 $r0,$r0,#0x1
78de: 48 ff fd c3 j 0x7464
78e2: 92 00 nop16
78e4: 84 00 movi55 $r0,#0x0
78e6: dd 9e ret5 $lp
78e8: 3a 6f a8 3c smw.adm $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
78ec: 96 00 zeb33 $r0,$r0
78ee: 54 10 00 10 andi $r1,$r0,#0x10
78f2: c9 05 bnez38 $r1,0x78fc
78f4: 3e 2f ff 39 addi.gp $r2,#-199
78f8: a6 50 lbi333 $r1,[$r2+#0x0]
78fa: d5 11 j8 0x791c
78fc: 3e 2f ff 39 addi.gp $r2,#-199
7900: a6 50 lbi333 $r1,[$r2+#0x0]
7902: e6 24 slti45 $r1,#0x4
7904: e8 08 beqzs8 0x7914
7906: 9c 49 addi333 $r1,$r1,#0x1
7908: 96 48 zeb33 $r1,$r1
790a: 84 81 movi55 $r4,#0x1
790c: 3e 47 ff de sbi.gp $r4,[+#-34]
7910: ae 50 sbi333 $r1,[$r2+#0x0]
7912: d5 05 j8 0x791c
7914: 44 40 00 0c movi $r4,#0xc
7918: 3e 47 ff e4 sbi.gp $r4,[+#-28]
791c: 54 00 00 20 andi $r0,$r0,#0x20
7920: c0 0c beqz38 $r0,0x7938
7922: c1 08 beqz38 $r1,0x7932
7924: 9e 49 subi333 $r1,$r1,#0x1
7926: 96 48 zeb33 $r1,$r1
7928: 84 61 movi55 $r3,#0x1
792a: 3e 37 ff de sbi.gp $r3,[+#-34]
792e: ae 50 sbi333 $r1,[$r2+#0x0]
7930: d5 04 j8 0x7938
7932: 84 4c movi55 $r2,#0xc
7934: 3e 27 ff e5 sbi.gp $r2,[+#-27]
7938: 44 00 d5 40 movi $r0,#0xd540
793c: 38 10 05 01 lh $r1,[$r0+($r1<<#0x1)]
7940: 46 0c cc cc sethi $r0,#0xccccc
7944: 58 00 0c cd ori $r0,$r0,#0xccd
7948: 42 00 80 69 mulr64 $r0,$r1,$r0
794c: 2e 20 00 0b lbi.gp $r2,[+#0xb]
7950: 40 30 90 09 srli $r3,$r1,#0x4
7954: 96 d8 zeb33 $r3,$r3
7956: 46 00 01 00 sethi $r0,#0x100
795a: 3e 30 00 0a sbi.gp $r3,[+#0xa]
795e: c2 45 beqz38 $r2,0x79e8
7960: 9f 91 subi333 $r6,$r2,#0x1
7962: 44 00 00 26 movi $r0,#0x26
7966: 97 b0 zeb33 $r6,$r6
7968: 42 63 00 24 mul $r6,$r6,$r0
796c: 3e 08 0b d0 addi.gp $r0,#0xbd0
7970: 46 78 88 88 sethi $r7,#0x88888
7974: 40 63 00 00 add $r6,$r6,$r0
7978: 58 73 88 89 ori $r7,$r7,#0x889
797c: 3e 08 0b aa addi.gp $r0,#0xbaa
7980: 44 a0 00 32 movi $r10,#0x32
7984: 00 10 7f e2 lbi $r1,[$r0+#-30]
7988: 84 41 movi55 $r2,#0x1
798a: 4c 11 40 17 bne $r1,$r2,0x79b8
798e: a7 02 lbi333 $r4,[$r0+#0x2]
7990: a6 83 lbi333 $r2,[$r0+#0x3]
7992: 02 80 7f fe lhi $r8,[$r0+#-4]
7996: 9a a2 sub333 $r2,$r4,$r2
7998: 42 41 1c 68 mulsr64 $r4,$r2,$r7
799c: 40 91 7c 0a srai $r9,$r2,#0x1f
79a0: 98 95 add333 $r2,$r2,$r5
79a2: 90 45 srai45 $r2,#0x5
79a4: 8a 49 sub45 $r2,$r9
79a6: 42 21 20 24 mul $r2,$r2,$r8
79aa: 40 21 0c 96 divsr $r2,$r4,$r2,$r3
79ae: 96 91 zeh33 $r2,$r2
79b0: ac 80 shi333 $r2,[$r0+#0x0]
79b2: ca 17 bnez38 $r2,0x79e0
79b4: ac 40 shi333 $r1,[$r0+#0x0]
79b6: d5 15 j8 0x79e0
79b8: 84 42 movi55 $r2,#0x2
79ba: 4c 11 40 13 bne $r1,$r2,0x79e0
79be: 02 10 7f fe lhi $r1,[$r0+#-4]
79c2: 40 10 a0 08 slli $r1,$r1,#0x8
79c6: 40 10 8c 56 divsr $r1,$r2,$r1,$r3
79ca: 96 49 zeh33 $r1,$r1
79cc: ac 40 shi333 $r1,[$r0+#0x0]
79ce: c9 03 bnez38 $r1,0x79d4
79d0: 12 a0 00 00 shi $r10,[$r0+#0x0]
79d4: 00 10 7f fe lbi $r1,[$r0+#-2]
79d8: 42 11 84 24 mul $r1,$r3,$r1
79dc: 10 10 00 04 sbi $r1,[$r0+#0x4]
79e0: 50 00 00 26 addi $r0,$r0,#0x26
79e4: 4c 03 7f d0 bne $r0,$r6,0x7984
79e8: 3a 6f a8 04 lmw.bim $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
79ec: dd 9e ret5 $lp
79ee: 92 00 nop16
79f0: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
79f4: ef f4 addi10.sp #-12
79f6: 96 49 zeh33 $r1,$r1
79f8: 92 22 srli45 $r1,#0x2
79fa: 46 7b a2 e8 sethi $r7,#0xba2e8
79fe: 81 40 mov55 $r10,$r0
7a00: 50 90 ff ff addi $r9,$r1,#-1
7a04: 58 73 8b a3 ori $r7,$r7,#0xba3
7a08: 45 c0 00 00 movi $fp,#0x0
7a0c: 50 8f 80 04 addi $r8,$sp,#0x4
7a10: 2e 07 ff ea lbi.gp $r0,[+#-22]
7a14: 80 6a mov55 $r3,$r10
7a16: 80 28 mov55 $r1,$r8
7a18: 44 20 00 04 movi $r2,#0x4
7a1c: 49 ff ca b2 jal 0xf80
7a20: 00 14 00 03 lbi $r1,[$r8+#0x3]
7a24: 42 20 9c 69 mulr64 $r2,$r1,$r7
7a28: 40 50 8c 09 srli $r5,$r1,#0x3
7a2c: 40 21 90 09 srli $r2,$r3,#0x4
7a30: 3e 08 0b 74 addi.gp $r0,#0xb74
7a34: 44 30 00 16 movi $r3,#0x16
7a38: 38 60 14 00 lb $r6,[$r0+($r5<<#0x0)]
7a3c: 54 40 80 07 andi $r4,$r1,#0x7
7a40: 42 11 0c 75 msubr32 $r1,$r2,$r3
7a44: 84 61 movi55 $r3,#0x1
7a46: 40 01 90 0c sll $r0,$r3,$r4
7a4a: 40 00 18 04 or $r0,$r0,$r6
7a4e: 3e 48 0b 74 addi.gp $r4,#0xb74
7a52: 96 90 zeb33 $r2,$r2
7a54: 51 ce 00 01 addi $fp,$fp,#0x1
7a58: 96 48 zeb33 $r1,$r1
7a5a: 38 02 14 08 sb $r0,[$r4+($r5<<#0x0)]
7a5e: e6 46 slti45 $r2,#0x6
7a60: e8 20 beqzs8 0x7aa0
7a62: 80 01 mov55 $r0,$r1
7a64: 8c 75 addi45 $r3,#0x15
7a66: 42 01 0c 73 maddr32 $r0,$r2,$r3
7a6a: 80 40 mov55 $r2,$r0
7a6c: e2 23 slt45 $r1,$r3
7a6e: e8 19 beqzs8 0x7aa0
7a70: 44 00 00 64 movi $r0,#0x64
7a74: 3e 48 03 03 addi.gp $r4,#0x303
7a78: 38 02 0a 08 sb $r0,[$r4+($r2<<#0x2)]
7a7c: 00 34 00 02 lbi $r3,[$r8+#0x2]
7a80: 3e 18 03 02 addi.gp $r1,#0x302
7a84: 38 30 8a 08 sb $r3,[$r1+($r2<<#0x2)]
7a88: 00 04 00 00 lbi $r0,[$r8+#0x0]
7a8c: 3e 48 03 00 addi.gp $r4,#0x300
7a90: 38 02 0a 08 sb $r0,[$r4+($r2<<#0x2)]
7a94: 00 34 00 01 lbi $r3,[$r8+#0x1]
7a98: 3e 18 03 01 addi.gp $r1,#0x301
7a9c: 38 30 8a 08 sb $r3,[$r1+($r2<<#0x2)]
7aa0: 8d 44 addi45 $r10,#0x4
7aa2: e3 3c slt45 $r9,$fp
7aa4: e8 b6 beqzs8 0x7a10
7aa6: ec 0c addi10.sp #0xc
7aa8: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7aac: dd 9e ret5 $lp
7aae: 92 00 nop16
7ab0: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
7ab4: ef fc addi10.sp #-4
7ab6: 96 89 zeh33 $r2,$r1
7ab8: 5c 31 02 11 slti $r3,$r2,#0x211
7abc: 44 10 02 10 movi $r1,#0x210
7ac0: 40 20 8c 1a cmovz $r2,$r1,$r3
7ac4: 50 30 00 00 addi $r3,$r0,#0x0
7ac8: 46 f0 01 00 sethi $r15,#0x100
7acc: 2e 07 ff ea lbi.gp $r0,[+#-22]
7ad0: 3e 18 03 00 addi.gp $r1,#0x300
7ad4: 49 ff ca 56 jal 0xf80
7ad8: 3e 08 0b 74 addi.gp $r0,#0xb74
7adc: 44 10 00 ff movi $r1,#0xff
7ae0: 44 20 00 16 movi $r2,#0x16
7ae4: ec 04 addi10.sp #0x4
7ae6: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
7aea: 48 00 12 e7 j 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2); return
7aee: 92 00 nop16
7af0: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
7af4: ef e8 addi10.sp #-24
7af6: 80 e0 mov55 $r7,$r0
7af8: 44 10 00 00 movi $r1,#0x0
7afc: 44 20 02 10 movi $r2,#0x210
7b00: 3e 08 03 00 addi.gp $r0,#0x300
7b04: 49 00 12 da jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
7b08: 2e 07 ff ea lbi.gp $r0,[+#-22]
7b0c: 80 67 mov55 $r3,$r7
7b0e: 80 3f mov55 $r1,$sp
7b10: 44 20 00 16 movi $r2,#0x16
7b14: 50 7f 80 00 addi $r7,$sp,#0x0
7b18: 49 ff ca 34 jal 0xf80
7b1c: 3a 03 8c 04 lmw.bim $r0,[$r7],$r3,#0x0 ! {$r0~$r3}
7b20: 3e 58 0b 74 addi.gp $r5,#0xb74
7b24: 81 05 mov55 $r8,$r5
7b26: 44 40 00 64 movi $r4,#0x64
7b2a: 3a 04 0c 24 smw.bim $r0,[$r8],$r3,#0x0 ! {$r0~$r3}
7b2e: 80 df mov55 $r6,$sp
7b30: 3a 03 84 00 lmw.bi $r0,[$r7],$r1,#0x0 ! {$r0~$r1}
7b34: 12 12 80 0a shi $r1,[$r5+#0x14]
7b38: b6 08 swi450 $r0,[$r8]
7b3a: 44 10 00 ff movi $r1,#0xff
7b3e: 80 1f mov55 $r0,$sp
7b40: 80 41 mov55 $r2,$r1
7b42: 80 61 mov55 $r3,$r1
7b44: 49 ff fc 90 jal 0x7464
7b48: ec 18 addi10.sp #0x18
7b4a: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
7b4e: dd 9e ret5 $lp
7b50: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7b54: 51 ff ff f4 addi $sp,$sp,#-12
7b58: 44 00 00 14 movi $r0,#0x14
7b5c: 3e 1f ff 7c addi.gp $r1,#-132
7b60: 49 ff e3 a2 jal 0x42a4
7b64: 4e 02 00 92 beqz $r0,0x7c88
7b68: 3c 10 00 0c lhi.gp $r1,[+#0x18]
7b6c: 3c 00 00 0b lhi.gp $r0,[+#0x16]
7b70: 4c 10 00 06 beq $r1,$r0,0x7b7c
7b74: 3c 3c 00 0a lwi.gp $r3,[+#0x28]
7b78: 48 00 00 1e j 0x7bb4
7b7c: 3e 0f ff 3d addi.gp $r0,#-195
7b80: a7 80 lbi333 $r6,[$r0+#0x0]
7b82: ce 0f bnez38 $r6,0x7ba0
7b84: 80 40 mov55 $r2,$r0
7b86: 84 01 movi55 $r0,#0x1
7b88: 18 01 7f fe sbi.bi $r0,[$r2],#-2
7b8c: 84 21 movi55 $r1,#0x1
7b8e: af 90 sbi333 $r6,[$r2+#0x0]
7b90: 44 00 00 f1 movi $r0,#0xf1
7b94: 49 ff df 16 jal 0x39c0
7b98: 50 03 00 00 addi $r0,$r6,#0x0
7b9c: 48 00 00 76 j 0x7c88
7ba0: 3c 3c 00 0b lwi.gp $r3,[+#0x2c]
7ba4: 84 00 movi55 $r0,#0x0
7ba6: 3e 00 00 09 sbi.gp $r0,[+#0x9]
7baa: 84 00 movi55 $r0,#0x0
7bac: 3c 08 00 0c shi.gp $r0,[+#0x18]
7bb0: 3c 3e 00 0a swi.gp $r3,[+#0x28]
7bb4: 50 6f 80 04 addi $r6,$sp,#0x4
7bb8: 2e 07 ff ea lbi.gp $r0,[+#-22]
7bbc: 80 26 mov55 $r1,$r6
7bbe: 84 44 movi55 $r2,#0x4
7bc0: 49 ff c9 e0 jal 0xf80
7bc4: a6 30 lbi333 $r0,[$r6+#0x0]
7bc6: c8 08 bnez38 $r0,0x7bd6
7bc8: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7bcc: a4 71 lhi333 $r1,[$r6+#0x2]
7bce: 9c 04 addi333 $r0,$r0,#0x4
7bd0: 49 ff ff 70 jal 0x7ab0
7bd4: d5 15 j8 0x7bfe
7bd6: 9e 41 subi333 $r1,$r0,#0x1
7bd8: 96 48 zeb33 $r1,$r1
7bda: e6 22 slti45 $r1,#0x2
7bdc: e8 08 beqzs8 0x7bec
7bde: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7be2: a4 71 lhi333 $r1,[$r6+#0x2]
7be4: 8c 04 addi45 $r0,#0x4
7be6: 49 ff ff 05 jal 0x79f0
7bea: d5 0a j8 0x7bfe
7bec: 84 23 movi55 $r1,#0x3
7bee: 4c 00 c0 08 bne $r0,$r1,0x7bfe
7bf2: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7bf6: a4 71 lhi333 $r1,[$r6+#0x2]
7bf8: 9c 04 addi333 $r0,$r0,#0x4
7bfa: 49 ff ff 7b jal 0x7af0
7bfe: a6 31 lbi333 $r0,[$r6+#0x1]
7c00: 2e 20 00 0a lbi.gp $r2,[+#0xa]
7c04: 84 21 movi55 $r1,#0x1
7c06: 40 00 80 1a cmovz $r0,$r1,$r0
7c0a: 2e 10 00 09 lbi.gp $r1,[+#0x9]
7c0e: 42 00 08 24 mul $r0,$r0,$r2
7c12: 9c 49 addi333 $r1,$r1,#0x1
7c14: 96 00 zeb33 $r0,$r0
7c16: 96 48 zeb33 $r1,$r1
7c18: 3e 10 00 09 sbi.gp $r1,[+#0x9]
7c1c: ae 31 sbi333 $r0,[$r6+#0x1]
7c1e: e2 20 slt45 $r1,$r0
7c20: e9 10 bnezs8 0x7c40
7c22: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7c26: a4 b1 lhi333 $r2,[$r6+#0x2]
7c28: 3c 10 00 0c lhi.gp $r1,[+#0x18]
7c2c: 9c 04 addi333 $r0,$r0,#0x4
7c2e: 98 02 add333 $r0,$r0,$r2
7c30: 9c 49 addi333 $r1,$r1,#0x1
7c32: 84 60 movi55 $r3,#0x0
7c34: 3e 30 00 09 sbi.gp $r3,[+#0x9]
7c38: 3c 18 00 0c shi.gp $r1,[+#0x18]
7c3c: 3c 0e 00 0a swi.gp $r0,[+#0x28]
7c40: 2e 00 00 0b lbi.gp $r0,[+#0xb]
7c44: c0 21 beqz38 $r0,0x7c86
7c46: 84 c0 movi55 $r6,#0x0
7c48: 44 80 00 26 movi $r8,#0x26
7c4c: 45 c0 a2 14 movi $fp,#0xa214 ; 0xa214 is in our data section..
7c50: 42 03 20 24 mul $r0,$r6,$r8
7c54: 3e 28 0b 8c addi.gp $r2,#0xb8c
7c58: 98 02 add333 $r0,$r0,$r2
7c5a: a6 40 lbi333 $r1,[$r0+#0x0]
7c5c: c9 04 bnez38 $r1,0x7c64
7c5e: 49 ff fc 5f jal 0x751c
7c62: d5 0c j8 0x7c7a
7c64: 44 20 00 01 movi $r2,#0x1
7c68: 4c 11 40 05 bne $r1,$r2,0x7c72
7c6c: 49 ff fc dc jal 0x7624
7c70: d5 05 j8 0x7c7a
7c72: 84 42 movi55 $r2,#0x2
7c74: 4c 11 40 03 bne $r1,$r2,0x7c7a
7c78: dd 3c jral5 $fp
7c7a: 9d b1 addi333 $r6,$r6,#0x1
7c7c: 2e 00 00 0b lbi.gp $r0,[+#0xb]
7c80: 97 b0 zeb33 $r6,$r6
7c82: e2 c0 slt45 $r6,$r0
7c84: e9 e6 bnezs8 0x7c50
7c86: 84 01 movi55 $r0,#0x1
7c88: ec 0c addi10.sp #0xc
7c8a: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7c8e: dd 9e ret5 $lp
7c90: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7c94: ef c4 addi10.sp #-60
7c96: 3e 6f ff 38 addi.gp $r6,#-200
7c9a: 3c 6f ff 9f swi.gp $r6,[+#-388]
7c9e: 84 20 movi55 $r1,#0x0
7ca0: 44 20 02 10 movi $r2,#0x210
7ca4: 3e 08 03 00 addi.gp $r0,#0x300
7ca8: 49 00 12 08 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
7cac: 44 10 00 00 movi $r1,#0x0
7cb0: 44 20 04 74 movi $r2,#0x474
7cb4: 3e 08 0b 8c addi.gp $r0,#0xb8c
7cb8: 49 00 12 00 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
7cbc: 3e 28 0b 74 addi.gp $r2,#0xb74
7cc0: 84 a0 movi55 $r5,#0x0
7cc2: 80 82 mov55 $r4,$r2
7cc4: ab 61 swi333.bi $r5,[$r4],#0x4
7cc6: b6 a4 swi450 $r5,[$r4]
7cc8: 50 41 00 08 addi $r4,$r2,#0x8
7ccc: b6 a4 swi450 $r5,[$r4]
7cce: 50 41 00 0c addi $r4,$r2,#0xc
7cd2: b6 a4 swi450 $r5,[$r4]
7cd4: 50 41 00 10 addi $r4,$r2,#0x10
7cd8: 2e 07 ff ea lbi.gp $r0,[+#-22]
7cdc: a6 f3 lbi333 $r3,[$r6+#0x3]
7cde: b6 a4 swi450 $r5,[$r4]
7ce0: 50 41 00 14 addi $r4,$r2,#0x14
7ce4: 51 cf 80 14 addi $fp,$sp,#0x14
7ce8: ad 60 shi333 $r5,[$r4+#0x0]
7cea: 94 dc slli333 $r3,$r3,#0x4
7cec: 80 3c mov55 $r1,$fp
7cee: 44 20 00 10 movi $r2,#0x10
7cf2: 49 ff c9 47 jal 0xf80
7cf6: 80 1c mov55 $r0,$fp
7cf8: 50 3f 80 24 addi $r3,$sp,#0x24
7cfc: a6 40 lbi333 $r1,[$r0+#0x0]
7cfe: 44 50 00 ff movi $r5,#0xff
7d02: 9c 01 addi333 $r0,$r0,#0x1
7d04: 4c 12 c0 06 bne $r1,$r5,0x7d10
7d08: 4c 01 ff fa bne $r0,$r3,0x7cfc
7d0c: 48 00 01 26 j 0x7f58
7d10: 00 9e 00 01 lbi $r9,[$fp+#0x1]
7d14: 00 3e 00 02 lbi $r3,[$fp+#0x2]
7d18: 2e 17 ff 39 lbi.gp $r1,[+#-199]
7d1c: 44 00 d5 40 movi $r0,#0xd540
7d20: 00 5e 00 00 lbi $r5,[$fp+#0x0]
7d24: 00 4e 00 0a lbi $r4,[$fp+#0xa]
7d28: 00 6e 00 09 lbi $r6,[$fp+#0x9]
7d2c: 38 20 05 01 lh $r2,[$r0+($r1<<#0x1)]
7d30: 40 31 c0 08 slli $r3,$r3,#0x10
7d34: 40 94 a0 08 slli $r9,$r9,#0x8
7d38: 46 0c cc cc sethi $r0,#0xccccc
7d3c: 00 8e 00 05 lbi $r8,[$fp+#0x5]
7d40: 40 94 8c 04 or $r9,$r9,$r3
7d44: 58 00 0c cd ori $r0,$r0,#0xccd
7d48: 00 7e 00 04 lbi $r7,[$fp+#0x4]
7d4c: 42 21 00 69 mulr64 $r2,$r2,$r0
7d50: 40 94 94 04 or $r9,$r9,$r5
7d54: 40 02 40 08 slli $r0,$r4,#0x10
7d58: 00 5e 00 08 lbi $r5,[$fp+#0x8]
7d5c: 00 4e 00 0b lbi $r4,[$fp+#0xb]
7d60: 40 63 20 08 slli $r6,$r6,#0x8
7d64: 00 1e 00 03 lbi $r1,[$fp+#0x3]
7d68: 40 63 00 04 or $r6,$r6,$r0
7d6c: 40 84 20 08 slli $r8,$r8,#0x8
7d70: 40 74 1c 04 or $r7,$r8,$r7
7d74: 40 53 14 04 or $r5,$r6,$r5
7d78: 40 42 60 08 slli $r4,$r4,#0x18
7d7c: f5 81 swi37.sp $r5,[+#0x4]
7d7e: f4 82 swi37.sp $r4,[+#0x8]
7d80: 40 51 90 09 srli $r5,$r3,#0x4
7d84: 3c 78 00 0b shi.gp $r7,[+#0x16]
7d88: 40 10 e0 08 slli $r1,$r1,#0x18
7d8c: 41 e4 84 04 or $lp,$r9,$r1
7d90: 3e 50 00 0a sbi.gp $r5,[+#0xa]
7d94: 3d ee 00 0b swi.gp $lp,[+#0x2c]
7d98: f5 01 lwi37.sp $r5,[+#0x4]
7d9a: f7 02 lwi37.sp $r7,[+#0x8]
7d9c: 40 52 9c 04 or $r5,$r5,$r7
7da0: f5 83 swi37.sp $r5,[+#0xc]
7da2: 84 a0 movi55 $r5,#0x0
7da4: 3e 50 00 09 sbi.gp $r5,[+#0x9]
7da8: 3d ee 00 0a swi.gp $lp,[+#0x28]
7dac: 00 5e 00 0c lbi $r5,[$fp+#0xc]
7db0: 46 40 01 00 sethi $r4,#0x100
7db4: 3e 50 00 0b sbi.gp $r5,[+#0xb]
7db8: 84 e0 movi55 $r7,#0x0
7dba: 2e 07 ff ea lbi.gp $r0,[+#-22]
7dbe: 50 9f 80 34 addi $r9,$sp,#0x34
7dc2: 3c 78 00 0c shi.gp $r7,[+#0x18]
7dc6: b6 9f swi450 $r4,[$sp]
7dc8: 80 7e mov55 $r3,$lp
7dca: 80 29 mov55 $r1,$r9
7dcc: 44 20 00 04 movi $r2,#0x4
7dd0: 49 ff c8 d8 jal 0xf80
7dd4: 00 04 80 00 lbi $r0,[$r9+#0x0]
7dd8: b4 9f lwi450 $r4,[$sp]
7dda: c8 0a bnez38 $r0,0x7dee
7ddc: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7de0: 02 14 80 01 lhi $r1,[$r9+#0x2]
7de4: 9c 04 addi333 $r0,$r0,#0x4
7de6: 49 ff fe 65 jal 0x7ab0
7dea: b4 9f lwi450 $r4,[$sp]
7dec: d5 1c j8 0x7e24
7dee: 9e 81 subi333 $r2,$r0,#0x1
7df0: 96 90 zeb33 $r2,$r2
7df2: e6 42 slti45 $r2,#0x2
7df4: e8 0b beqzs8 0x7e0a
7df6: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7dfa: 02 14 80 01 lhi $r1,[$r9+#0x2]
7dfe: 9c 04 addi333 $r0,$r0,#0x4
7e00: b6 9f swi450 $r4,[$sp]
7e02: 49 ff fd f7 jal 0x79f0
7e06: b4 9f lwi450 $r4,[$sp]
7e08: d5 0e j8 0x7e24
7e0a: 84 e3 movi55 $r7,#0x3
7e0c: 4c 03 c0 0c bne $r0,$r7,0x7e24
7e10: 3c 0c 00 0a lwi.gp $r0,[+#0x28]
7e14: 02 14 80 01 lhi $r1,[$r9+#0x2]
7e18: 9c 04 addi333 $r0,$r0,#0x4
7e1a: b6 9f swi450 $r4,[$sp]
7e1c: 49 ff fe 6a jal 0x7af0
7e20: 04 4f 80 00 lwi $r4,[$sp+#0x0]
7e24: 00 04 80 01 lbi $r0,[$r9+#0x1]
7e28: 2e 70 00 0a lbi.gp $r7,[+#0xa]
7e2c: 84 41 movi55 $r2,#0x1
7e2e: 40 01 00 1a cmovz $r0,$r2,$r0
7e32: 2e 20 00 09 lbi.gp $r2,[+#0x9]
7e36: 42 00 1c 24 mul $r0,$r0,$r7
7e3a: 9c 91 addi333 $r2,$r2,#0x1
7e3c: 96 00 zeb33 $r0,$r0
7e3e: 96 90 zeb33 $r2,$r2
7e40: 3e 20 00 09 sbi.gp $r2,[+#0x9]
7e44: 10 04 80 01 sbi $r0,[$r9+#0x1]
7e48: e2 40 slt45 $r2,$r0
7e4a: e9 11 bnezs8 0x7e6c
7e4c: 3c 2c 00 0a lwi.gp $r2,[+#0x28]
7e50: 02 04 80 01 lhi $r0,[$r9+#0x2]
7e54: 3c 10 00 0c lhi.gp $r1,[+#0x18]
7e58: 9c 94 addi333 $r2,$r2,#0x4
7e5a: 98 10 add333 $r0,$r2,$r0
7e5c: 9c 49 addi333 $r1,$r1,#0x1
7e5e: 84 e0 movi55 $r7,#0x0
7e60: 3e 70 00 09 sbi.gp $r7,[+#0x9]
7e64: 3c 18 00 0c shi.gp $r1,[+#0x18]
7e68: 3c 0e 00 0a swi.gp $r0,[+#0x28]
7e6c: 2e 00 00 0b lbi.gp $r0,[+#0xb]
7e70: e6 1f slti45 $r0,#0x1f
7e72: e9 0a bnezs8 0x7e86
7e74: 44 10 00 1e movi $r1,#0x1e
7e78: 3e 10 00 0b sbi.gp $r1,[+#0xb]
7e7c: 84 60 movi55 $r3,#0x0
7e7e: f3 81 swi37.sp $r3,[+#0x4]
7e80: 50 8f 80 16 addi $r8,$sp,#0x16
7e84: d5 04 j8 0x7e8c
7e86: c8 fb bnez38 $r0,0x7e7c
7e88: 48 00 00 62 j 0x7f4c
7e8c: f4 01 lwi37.sp $r4,[+#0x4]
7e8e: 44 50 00 26 movi $r5,#0x26
7e92: 42 a2 14 24 mul $r10,$r4,$r5
7e96: 3e 18 0b 8c addi.gp $r1,#0xb8c
7e9a: 88 2a add45 $r1,$r10
7e9c: 2e 07 ff ea lbi.gp $r0,[+#-22]
7ea0: f3 03 lwi37.sp $r3,[+#0xc]
7ea2: f1 82 swi37.sp $r1,[+#0x8]
7ea4: 80 3c mov55 $r1,$fp
7ea6: 9e ae subi333 $r2,$r5,#0x6
7ea8: 49 ff c8 6c jal 0xf80
7eac: 00 5e 00 00 lbi $r5,[$fp+#0x0]
7eb0: f0 02 lwi37.sp $r0,[+#0x8]
7eb2: 18 50 00 01 sbi.bi $r5,[$r0],#0x1
7eb6: 80 28 mov55 $r1,$r8
7eb8: 44 20 00 16 movi $r2,#0x16
7ebc: 49 00 10 f4 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
7ec0: 00 2e 00 1d lbi $r2,[$fp+#0x1d]
7ec4: 00 5e 00 1f lbi $r5,[$fp+#0x1f]
7ec8: 00 7e 00 1c lbi $r7,[$fp+#0x1c]
7ecc: 00 6e 00 1e lbi $r6,[$fp+#0x1e]
7ed0: 40 21 20 08 slli $r2,$r2,#0x8
7ed4: 3e 18 0b a4 addi.gp $r1,#0xba4
7ed8: 40 52 a0 08 slli $r5,$r5,#0x8
7edc: 40 71 1c 04 or $r7,$r2,$r7
7ee0: 40 52 98 04 or $r5,$r5,$r6
7ee4: 40 25 04 00 add $r2,$r10,$r1
7ee8: ad 52 shi333 $r5,[$r2+#0x4]
7eea: 00 5e 00 18 lbi $r5,[$fp+#0x18]
7eee: 3e 38 0b 9c addi.gp $r3,#0xb9c
7ef2: 40 45 0c 00 add $r4,$r10,$r3
7ef6: f0 02 lwi37.sp $r0,[+#0x8]
7ef8: ad d1 shi333 $r7,[$r2+#0x2]
7efa: af 67 sbi333 $r5,[$r4+#0x7]
7efc: 00 90 00 00 lbi $r9,[$r0+#0x0]
7f00: 00 7e 00 19 lbi $r7,[$fp+#0x19]
7f04: af d0 sbi333 $r7,[$r2+#0x0]
7f06: 00 0e 00 1a lbi $r0,[$fp+#0x1a]
7f0a: ae 11 sbi333 $r0,[$r2+#0x1]
7f0c: f1 03 lwi37.sp $r1,[+#0xc]
7f0e: 50 10 80 20 addi $r1,$r1,#0x20
7f12: f1 83 swi37.sp $r1,[+#0xc]
7f14: 4e 93 00 06 bnez $r9,0x7f20
7f18: f0 02 lwi37.sp $r0,[+#0x8]
7f1a: 49 ff fa f7 jal 0x7508
7f1e: d5 0e j8 0x7f3a
7f20: 84 61 movi55 $r3,#0x1
7f22: 4c 91 c0 06 bne $r9,$r3,0x7f2e
7f26: f0 02 lwi37.sp $r0,[+#0x8]
7f28: 49 ff fb 04 jal 0x7530
7f2c: d5 07 j8 0x7f3a
7f2e: 84 a2 movi55 $r5,#0x2
7f30: 4c 92 c0 05 bne $r9,$r5,0x7f3a
7f34: f0 02 lwi37.sp $r0,[+#0x8]
7f36: 49 ff fc 41 jal 0x77b8
7f3a: f0 01 lwi37.sp $r0,[+#0x4]
7f3c: 9c 41 addi333 $r1,$r0,#0x1
7f3e: 2e 00 00 0b lbi.gp $r0,[+#0xb]
7f42: 96 48 zeb33 $r1,$r1
7f44: f1 81 swi37.sp $r1,[+#0x4]
7f46: e2 20 slt45 $r1,$r0
7f48: 4e f3 ff a2 bnez $r15,0x7e8c
7f4c: 3e 1f ff 7c addi.gp $r1,#-132
7f50: 84 00 movi55 $r0,#0x0
7f52: 49 ff e1 a9 jal 0x42a4
7f56: d5 06 j8 0x7f62
7f58: 46 00 01 00 sethi $r0,#0x100
7f5c: 84 20 movi55 $r1,#0x0
7f5e: 3c 1f ff e0 swi.gp $r1,[+#-128]
7f62: ec 3c addi10.sp #0x3c
7f64: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7f68: dd 9e ret5 $lp
7f6a: 92 00 nop16
7f6c: 3e 0f ff 40 addi.gp $r0,#-192
7f70: 84 2a movi55 $r1,#0xa
7f72: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
7f76: 84 22 movi55 $r1,#0x2
7f78: ae 40 sbi333 $r1,[$r0+#0x0]
7f7a: dd 9e ret5 $lp
7f7c: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
7f80: 51 ff ff ec addi $sp,$sp,#-20
7f84: 2e 17 ff 41 lbi.gp $r1,[+#-191]
7f88: 44 00 d5 4c movi $r0,#0xd54c
7f8c: 38 00 05 01 lh $r0,[$r0+($r1<<#0x1)]
7f90: 3e 1f ff 7c addi.gp $r1,#-132
7f94: 49 ff e1 88 jal 0x42a4
7f98: c0 06 beqz38 $r0,0x7fa4
7f9a: 84 a0 movi55 $r5,#0x0
7f9c: 80 05 mov55 $r0,$r5
7f9e: 44 60 00 58 movi $r6,#0x58
7fa2: d5 1b j8 0x7fd8
7fa4: 84 20 movi55 $r1,#0x0
7fa6: f1 81 swi37.sp $r1,[+#0x4]
7fa8: 44 30 00 64 movi $r3,#0x64
7fac: 50 8f 80 0f addi $r8,$sp,#0xf
7fb0: 50 7f 80 0e addi $r7,$sp,#0xe
7fb4: 50 6f 80 0d addi $r6,$sp,#0xd
7fb8: d5 41 j8 0x803a
7fba: a6 c8 lbi333 $r3,[$r1+#0x0]
7fbc: 9c 91 addi333 $r2,$r2,#0x1
7fbe: 96 90 zeb33 $r2,$r2
7fc0: 9f 19 subi333 $r4,$r3,#0x1
7fc2: c3 03 beqz38 $r3,0x7fc8
7fc4: af 08 sbi333 $r4,[$r1+#0x0]
7fc6: 84 01 movi55 $r0,#0x1
7fc8: 44 30 00 16 movi $r3,#0x16
7fcc: 9c 4c addi333 $r1,$r1,#0x4
7fce: 4c 21 ff f6 bne $r2,$r3,0x7fba
7fd2: 9d 69 addi333 $r5,$r5,#0x1
7fd4: 84 86 movi55 $r4,#0x6
7fd6: d4 e7 beqs38 $r4,0x7fa4
7fd8: 42 12 98 24 mul $r1,$r5,$r6
7fdc: 3e 38 03 00 addi.gp $r3,#0x300
7fe0: 98 4b add333 $r1,$r1,$r3
7fe2: 84 40 movi55 $r2,#0x0
7fe4: 9c 4b addi333 $r1,$r1,#0x3
7fe6: d5 ea j8 0x7fba
7fe8: 00 15 00 00 lbi $r1,[$r10+#0x0]
7fec: 8d 41 addi45 $r10,#0x1
7fee: 40 1e 04 02 and $r1,$fp,$r1
7ff2: c1 19 beqz38 $r1,0x8024
7ff4: 00 04 80 00 lbi $r0,[$r9+#0x0]
7ff8: c8 12 bnez38 $r0,0x801c
7ffa: b6 7f swi450 $r3,[$sp]
7ffc: 80 08 mov55 $r0,$r8
7ffe: 80 27 mov55 $r1,$r7
8000: 80 46 mov55 $r2,$r6
8002: 49 ff dd e1 jal 0x3bc4
8006: a6 32 lbi333 $r0,[$r6+#0x2]
8008: 10 04 ff fd sbi $r0,[$r9+#-3]
800c: a6 71 lbi333 $r1,[$r6+#0x1]
800e: 10 14 ff fe sbi $r1,[$r9+#-2]
8012: a6 b0 lbi333 $r2,[$r6+#0x0]
8014: 10 24 ff ff sbi $r2,[$r9+#-1]
8018: 04 3f 80 00 lwi $r3,[$sp+#0x0]
801c: 10 34 80 00 sbi $r3,[$r9+#0x0]
8020: 44 00 00 01 movi $r0,#0x1
8024: 3e 48 05 52 addi.gp $r4,#0x552
8028: 8d 24 addi45 $r9,#0x4
802a: 4c a2 7f df bne $r10,$r4,0x7fe8
802e: f1 01 lwi37.sp $r1,[+#0x4]
8030: 84 46 movi55 $r2,#0x6
8032: 9c 49 addi333 $r1,$r1,#0x1
8034: f1 81 swi37.sp $r1,[+#0x4]
8036: 4c 11 00 11 beq $r1,$r2,0x8058
803a: f4 01 lwi37.sp $r4,[+#0x4]
803c: 44 90 00 58 movi $r9,#0x58
8040: 42 92 24 24 mul $r9,$r4,$r9
8044: 3e 18 03 00 addi.gp $r1,#0x300
8048: 89 21 add45 $r9,$r1
804a: 87 81 movi55 $fp,#0x1
804c: 41 ce 10 0c sll $fp,$fp,$r4
8050: 8d 23 addi45 $r9,#0x3
8052: 3e a8 05 3c addi.gp $r10,#0x53c
8056: d5 c9 j8 0x7fe8
8058: ec 14 addi10.sp #0x14
805a: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
805e: dd 9e ret5 $lp
8060: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp}
8064: ef fc addi10.sp #-4
8066: 84 20 movi55 $r1,#0x0
8068: 44 20 02 10 movi $r2,#0x210
806c: 3e 08 03 00 addi.gp $r0,#0x300
8070: 49 00 10 24 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
8074: 3e 3f ff 40 addi.gp $r3,#-192
8078: 46 20 01 00 sethi $r2,#0x100
807c: 84 00 movi55 $r0,#0x0
807e: 3e 1f ff 7c addi.gp $r1,#-132
8082: 3c 3f ff 9f swi.gp $r3,[+#-388]
8086: ec 04 addi10.sp #0x4
8088: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp}
808c: 48 ff e1 0c j 0x42a4
8090: 3e 0f ff 48 addi.gp $r0,#-184
8094: 84 2a movi55 $r1,#0xa
8096: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
809a: 84 22 movi55 $r1,#0x2
809c: ae 40 sbi333 $r1,[$r0+#0x0]
809e: dd 9e ret5 $lp
80a0: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
80a4: 51 ff ff f4 addi $sp,$sp,#-12
80a8: 2e 17 ff 49 lbi.gp $r1,[+#-183]
80ac: 44 00 d5 58 movi $r0,#0xd558
80b0: 38 00 05 01 lh $r0,[$r0+($r1<<#0x1)]
80b4: 3e 1f ff 7c addi.gp $r1,#-132
80b8: 49 ff e0 f6 jal 0x42a4
80bc: c8 06 bnez38 $r0,0x80c8
80be: 83 c0 mov55 $lp,$r0
80c0: 44 a0 d2 e8 movi $r10,#0xd2e8
80c4: 48 00 00 84 j 0x81cc
80c8: 47 c2 49 24 sethi $fp,#0x24924
80cc: 59 ce 09 25 ori $fp,$fp,#0x925
80d0: 3e 08 03 00 addi.gp $r0,#0x300
80d4: 44 10 00 00 movi $r1,#0x0
80d8: 44 20 02 10 movi $r2,#0x210
80dc: 44 a0 d2 e8 movi $r10,#0xd2e8
80e0: 49 00 0f ec jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
80e4: 3e 88 06 3b addi.gp $r8,#0x63b
80e8: 15 cf 80 01 swi $fp,[$sp+#0x4]
80ec: 87 c7 movi55 $lp,#0x7
80ee: 44 90 00 64 movi $r9,#0x64
80f2: 83 8a mov55 $fp,$r10
80f4: 00 04 00 00 lbi $r0,[$r8+#0x0]
80f8: c0 63 beqz38 $r0,0x81be
80fa: 00 04 7f fe lbi $r0,[$r8+#-2]
80fe: 00 64 7f ff lbi $r6,[$r8+#-1]
8102: 9a 46 sub333 $r1,$r0,$r6
8104: 97 ca seb33 $r7,$r1
8106: 98 06 add333 $r0,$r0,$r6
8108: 40 a0 00 10 seb $r10,$r0
810c: 4e 75 00 26 bltz $r7,0x8158
8110: f2 01 lwi37.sp $r2,[+#0x4]
8112: 80 a6 mov55 $r5,$r6
8114: 42 03 08 69 mulr64 $r0,$r6,$r2
8118: 9b 31 sub333 $r4,$r6,$r1
811a: 92 81 srli45 $r4,#0x1
811c: 98 a1 add333 $r2,$r4,$r1
811e: 92 42 srli45 $r2,#0x2
8120: 42 51 78 75 msubr32 $r5,$r2,$lp
8124: 94 fa slli333 $r3,$r7,#0x2
8126: 96 a8 zeb33 $r2,$r5
8128: 38 2e 0a 02 lw $r2,[$fp+($r2<<#0x2)]
812c: 3e 08 03 00 addi.gp $r0,#0x300
8130: 98 58 add333 $r1,$r3,$r0
8132: 40 41 40 09 srli $r4,$r2,#0x10
8136: 40 31 20 09 srli $r3,$r2,#0x8
813a: 84 00 movi55 $r0,#0x0
813c: 96 d8 zeb33 $r3,$r3
813e: 97 20 zeb33 $r4,$r4
8140: 96 90 zeb33 $r2,$r2
8142: 9c 01 addi333 $r0,$r0,#0x1
8144: 96 00 zeb33 $r0,$r0
8146: 84 a6 movi55 $r5,#0x6
8148: ae 88 sbi333 $r2,[$r1+#0x0]
814a: ae c9 sbi333 $r3,[$r1+#0x1]
814c: af 0a sbi333 $r4,[$r1+#0x2]
814e: 10 90 80 03 sbi $r9,[$r1+#0x3]
8152: 50 10 80 58 addi $r1,$r1,#0x58
8156: d8 f6 bnes38 $r0,0x8142
8158: e5 56 sltsi45 $r10,#0x16
815a: e8 27 beqzs8 0x81a8
815c: f0 01 lwi37.sp $r0,[+#0x4]
815e: 80 26 mov55 $r1,$r6
8160: 42 43 00 69 mulr64 $r4,$r6,$r0
8164: 40 25 08 08 slli $r2,$r10,#0x2
8168: 9b 35 sub333 $r4,$r6,$r5
816a: 92 81 srli45 $r4,#0x1
816c: 98 e5 add333 $r3,$r4,$r5
816e: 92 62 srli45 $r3,#0x2
8170: 42 11 f8 75 msubr32 $r1,$r3,$lp
8174: 96 c8 zeb33 $r3,$r1
8176: 38 3e 0e 02 lw $r3,[$fp+($r3<<#0x2)]
817a: 3e 58 03 00 addi.gp $r5,#0x300
817e: 40 41 a0 09 srli $r4,$r3,#0x8
8182: 98 95 add333 $r2,$r2,$r5
8184: 40 51 c0 09 srli $r5,$r3,#0x10
8188: 84 00 movi55 $r0,#0x0
818a: 97 20 zeb33 $r4,$r4
818c: 97 68 zeb33 $r5,$r5
818e: 96 d8 zeb33 $r3,$r3
8190: 9c 01 addi333 $r0,$r0,#0x1
8192: 96 00 zeb33 $r0,$r0
8194: 84 26 movi55 $r1,#0x6
8196: ae d0 sbi333 $r3,[$r2+#0x0]
8198: af 11 sbi333 $r4,[$r2+#0x1]
819a: af 52 sbi333 $r5,[$r2+#0x2]
819c: 10 91 00 03 sbi $r9,[$r2+#0x3]
81a0: 50 21 00 58 addi $r2,$r2,#0x58
81a4: 4c 00 ff f6 bne $r0,$r1,0x8190
81a8: 4e 74 00 08 bgez $r7,0x81b8
81ac: e5 56 sltsi45 $r10,#0x16
81ae: e9 05 bnezs8 0x81b8
81b0: 84 40 movi55 $r2,#0x0
81b2: 10 24 00 00 sbi $r2,[$r8+#0x0]
81b6: d5 04 j8 0x81be
81b8: 9c 31 addi333 $r0,$r6,#0x1
81ba: 10 04 7f ff sbi $r0,[$r8+#-1]
81be: 8d 04 addi45 $r8,#0x4
81c0: 3e 38 06 63 addi.gp $r3,#0x663
81c4: 4c 81 ff 98 bne $r8,$r3,0x80f4
81c8: 81 5c mov55 $r10,$fp
81ca: 87 c1 movi55 $lp,#0x1
81cc: b5 0a lwi450 $r8,[$r10]
81ce: 84 c0 movi55 $r6,#0x0
81d0: 40 94 40 09 srli $r9,$r8,#0x10
81d4: 40 a4 20 09 srli $r10,$r8,#0x8
81d8: 54 a5 00 ff andi $r10,$r10,#0xff
81dc: 54 94 80 ff andi $r9,$r9,#0xff
81e0: 54 84 00 ff andi $r8,$r8,#0xff
81e4: 87 81 movi55 $fp,#0x1
81e6: 44 70 00 64 movi $r7,#0x64
81ea: d5 39 j8 0x825c
81ec: 40 02 8c 0e sra $r0,$r5,$r3
81f0: 96 04 xlsb33 $r0,$r0
81f2: 97 18 zeb33 $r4,$r3
81f4: c0 2a beqz38 $r0,0x8248
81f6: 3e 08 06 3b addi.gp $r0,#0x63b
81fa: 84 40 movi55 $r2,#0x0
81fc: a6 40 lbi333 $r1,[$r0+#0x0]
81fe: 9c 04 addi333 $r0,$r0,#0x4
8200: c9 20 bnez38 $r1,0x8240
8202: 94 12 slli333 $r0,$r2,#0x2
8204: 3e 58 06 38 addi.gp $r5,#0x638
8208: 98 05 add333 $r0,$r0,$r5
820a: 38 42 8a 08 sb $r4,[$r5+($r2<<#0x2)]
820e: af 81 sbi333 $r6,[$r0+#0x1]
8210: 11 c0 00 03 sbi $fp,[$r0+#0x3]
8214: 11 c0 00 02 sbi $fp,[$r0+#0x2]
8218: 3e 28 03 00 addi.gp $r2,#0x300
821c: 94 32 slli333 $r0,$r6,#0x2
821e: 98 02 add333 $r0,$r0,$r2
8220: 9c 49 addi333 $r1,$r1,#0x1
8222: 96 48 zeb33 $r1,$r1
8224: 84 66 movi55 $r3,#0x6
8226: 10 80 00 00 sbi $r8,[$r0+#0x0]
822a: 10 a0 00 01 sbi $r10,[$r0+#0x1]
822e: 10 90 00 02 sbi $r9,[$r0+#0x2]
8232: af c3 sbi333 $r7,[$r0+#0x3]
8234: 50 00 00 58 addi $r0,$r0,#0x58
8238: 4c 11 ff f4 bne $r1,$r3,0x8220
823c: 87 c1 movi55 $lp,#0x1
823e: d5 09 j8 0x8250
8240: 9c 91 addi333 $r2,$r2,#0x1
8242: 84 2a movi55 $r1,#0xa
8244: 4c 20 ff dc bne $r2,$r1,0x81fc
8248: 9c d9 addi333 $r3,$r3,#0x1
824a: 84 46 movi55 $r2,#0x6
824c: 4c 31 7f d0 bne $r3,$r2,0x81ec
8250: 50 63 00 01 addi $r6,$r6,#0x1
8254: 44 30 00 16 movi $r3,#0x16
8258: 4c 61 80 08 beq $r6,$r3,0x8268
825c: 3e 08 05 24 addi.gp $r0,#0x524
8260: 38 50 18 00 lb $r5,[$r0+($r6<<#0x0)]
8264: 84 60 movi55 $r3,#0x0
8266: d5 c3 j8 0x81ec
8268: 80 1e mov55 $r0,$lp
826a: ec 0c addi10.sp #0xc
826c: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
8270: dd 9e ret5 $lp
8272: 92 00 nop16
8274: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
8278: 84 c0 movi55 $r6,#0x0
827a: 3e 38 06 38 addi.gp $r3,#0x638
827e: ab 99 swi333.bi $r6,[$r3],#0x4
8280: ab 99 swi333.bi $r6,[$r3],#0x4
8282: 80 26 mov55 $r1,$r6
8284: ab 99 swi333.bi $r6,[$r3],#0x4
8286: 44 20 02 10 movi $r2,#0x210
828a: ab 99 swi333.bi $r6,[$r3],#0x4
828c: 3e 08 03 00 addi.gp $r0,#0x300
8290: ab 99 swi333.bi $r6,[$r3],#0x4
8292: ab 99 swi333.bi $r6,[$r3],#0x4
8294: ab 99 swi333.bi $r6,[$r3],#0x4
8296: ab 99 swi333.bi $r6,[$r3],#0x4
8298: ab 99 swi333.bi $r6,[$r3],#0x4
829a: b6 c3 swi450 $r6,[$r3]
829c: 49 00 0f 0e jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
82a0: 3e 3f ff 48 addi.gp $r3,#-184
82a4: 46 20 01 00 sethi $r2,#0x100
82a8: 80 06 mov55 $r0,$r6
82aa: 3e 1f ff 7c addi.gp $r1,#-132
82ae: 3c 3f ff 9f swi.gp $r3,[+#-388]
82b2: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
82b6: 48 ff df f7 j 0x42a4
82ba: 92 00 nop16
82bc: 3e 0f ff 50 addi.gp $r0,#-176
82c0: 44 10 00 14 movi $r1,#0x14
82c4: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
82c8: 84 20 movi55 $r1,#0x0
82ca: ae 40 sbi333 $r1,[$r0+#0x0]
82cc: dd 9e ret5 $lp
82ce: 92 00 nop16
82d0: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
82d4: 44 00 00 14 movi $r0,#0x14
82d8: 3e 1f ff 7c addi.gp $r1,#-132
82dc: 49 ff df e4 jal 0x42a4
82e0: c0 5a beqz38 $r0,0x8394
82e2: 3e 0f ff 5b addi.gp $r0,#-165
82e6: 28 30 7f ff lbsi.bi $r3,[$r0],#-1
82ea: 44 10 00 16 movi $r1,#0x16
82ee: 20 40 00 00 lbsi $r4,[$r0+#0x0]
82f2: 80 04 mov55 $r0,$r4
82f4: 42 01 84 73 maddr32 $r0,$r3,$r1
82f8: 2e 67 ff fa lbi.gp $r6,[+#-6]
82fc: 80 20 mov55 $r1,$r0
82fe: 3e 08 03 00 addi.gp $r0,#0x300
8302: 44 20 00 55 movi $r2,#0x55
8306: 50 90 00 03 addi $r9,$r0,#0x3
830a: 9d c1 addi333 $r7,$r0,#0x1
830c: 50 80 00 02 addi $r8,$r0,#0x2
8310: 44 a0 00 64 movi $r10,#0x64
8314: 38 a4 86 08 sb $r10,[$r9+($r1<<#0x2)]
8318: 38 24 06 08 sb $r2,[$r8+($r1<<#0x2)]
831c: 38 23 86 08 sb $r2,[$r7+($r1<<#0x2)]
8320: 38 20 06 08 sb $r2,[$r0+($r1<<#0x2)]
8324: c6 15 beqz38 $r6,0x834e
8326: 2e 67 ff ea lbi.gp $r6,[+#-22]
832a: 84 61 movi55 $r3,#0x1
832c: 4c 61 c0 0b bne $r6,$r3,0x8342
8330: 3e 1f fe 78 addi.gp $r1,#-392
8334: 08 00 80 01 lbi.bi $r0,[$r1],#0x1
8338: a6 48 lbi333 $r1,[$r1+#0x0]
833a: 49 ff db 43 jal 0x39c0
833e: 80 06 mov55 $r0,$r6
8340: d5 2a j8 0x8394
8342: 84 01 movi55 $r0,#0x1
8344: 80 26 mov55 $r1,$r6
8346: 49 ff dd fb jal 0x3f3c
834a: 84 01 movi55 $r0,#0x1
834c: d5 24 j8 0x8394
834e: 84 05 movi55 $r0,#0x5
8350: 4c 30 40 0c bne $r3,$r0,0x8368
8354: 84 6e movi55 $r3,#0xe
8356: 4c 41 c0 09 bne $r4,$r3,0x8368
835a: 84 01 movi55 $r0,#0x1
835c: 3e 07 ff fa sbi.gp $r0,[+#-6]
8360: 3e 18 07 60 addi.gp $r1,#0x760
8364: 3c 1e 00 07 swi.gp $r1,[+#0x1c]
8368: 3e 0f ff 5d addi.gp $r0,#-163
836c: 28 30 7f ff lbsi.bi $r3,[$r0],#-1
8370: 44 10 00 24 movi $r1,#0x24
8374: 20 20 00 00 lbsi $r2,[$r0+#0x0]
8378: 84 06 movi55 $r0,#0x6
837a: 42 11 04 24 mul $r1,$r2,$r1
837e: 80 40 mov55 $r2,$r0
8380: 42 11 80 73 maddr32 $r1,$r3,$r0
8384: 44 30 cf 70 movi $r3,#0xcf70
8388: 3e 0f ff 58 addi.gp $r0,#-168
838c: 98 4b add333 $r1,$r1,$r3
838e: 49 00 0e 8b jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
8392: 84 01 movi55 $r0,#0x1
8394: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
8398: dd 9e ret5 $lp
839a: 92 00 nop16
839c: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
83a0: 3e 3f ff 58 addi.gp $r3,#-168
83a4: 80 a3 mov55 $r5,$r3
83a6: 84 0e movi55 $r0,#0xe
83a8: 18 02 80 01 sbi.bi $r0,[$r5],#0x1
83ac: 85 05 movi55 $r8,#0x5
83ae: 84 81 movi55 $r4,#0x1
83b0: 10 82 80 00 sbi $r8,[$r5+#0x0]
83b4: 84 c0 movi55 $r6,#0x0
83b6: af 1d sbi333 $r4,[$r3+#0x5]
83b8: 9d da addi333 $r7,$r3,#0x2
83ba: 3e 67 ff fa sbi.gp $r6,[+#-6]
83be: 3e 8f ff 50 addi.gp $r8,#-176
83c2: 46 50 01 00 sethi $r5,#0x100
83c6: 3c 8f ff 9f swi.gp $r8,[+#-388]
83ca: af b8 sbi333 $r6,[$r7+#0x0]
83cc: af 1b sbi333 $r4,[$r3+#0x3]
83ce: af 1c sbi333 $r4,[$r3+#0x4]
83d0: 84 20 movi55 $r1,#0x0
83d2: 44 20 02 10 movi $r2,#0x210
83d6: 3e 08 03 00 addi.gp $r0,#0x300
83da: 49 00 0e 6f jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
83de: 84 00 movi55 $r0,#0x0
83e0: 3e 1f ff 7c addi.gp $r1,#-132
83e4: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
83e8: 48 ff df 5e j 0x42a4
83ec: 46 10 01 00 sethi $r1,#0x100
83f0: 2e 07 ff fb lbi.gp $r0,[+#-5]
83f4: 2e 27 ff fc lbi.gp $r2,[+#-4]
83f8: 4c 20 00 1d beq $r2,$r0,0x8432
83fc: 3e 07 ff fc sbi.gp $r0,[+#-4]
8400: e6 08 slti45 $r0,#0x8
8402: e8 18 beqzs8 0x8432
8404: 54 00 00 02 andi $r0,$r0,#0x2
8408: c0 08 beqz38 $r0,0x8418
840a: 84 3f movi55 $r1,#-1
840c: 3e 08 07 e4 addi.gp $r0,#0x7e4
8410: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
8414: ae 40 sbi333 $r1,[$r0+#0x0]
8416: d5 0e j8 0x8432
8418: 44 10 ce ec movi $r1,#0xceec
841c: 84 61 movi55 $r3,#0x1
841e: 3e 37 ff e8 sbi.gp $r3,[+#-24]
8422: 08 20 80 01 lbi.bi $r2,[$r1],#0x1
8426: 3e 08 07 e4 addi.gp $r0,#0x7e4
842a: 18 20 00 01 sbi.bi $r2,[$r0],#0x1
842e: a6 48 lbi333 $r1,[$r1+#0x0]
8430: ae 40 sbi333 $r1,[$r0+#0x0]
8432: dd 9e ret5 $lp
8434: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
8438: 51 ff ff fc addi $sp,$sp,#-4
843c: 44 00 00 64 movi $r0,#0x64
8440: 3e 1f ff bc addi.gp $r1,#-68
8444: 49 ff df 30 jal 0x42a4
8448: 4e 02 00 fb beqz $r0,0x863e
844c: 2e 37 ff e4 lbi.gp $r3,[+#-28]
8450: c3 08 beqz38 $r3,0x8460
8452: 2e 07 ff e5 lbi.gp $r0,[+#-27]
8456: 2e 27 ff e6 lbi.gp $r2,[+#-26]
845a: 2e 17 ff e7 lbi.gp $r1,[+#-25]
845e: d5 17 j8 0x848c
8460: 2e 07 ff e5 lbi.gp $r0,[+#-27]
8464: c0 06 beqz38 $r0,0x8470
8466: 2e 27 ff e6 lbi.gp $r2,[+#-26]
846a: 2e 17 ff e7 lbi.gp $r1,[+#-25]
846e: d5 0f j8 0x848c
8470: 2e 07 ff e6 lbi.gp $r0,[+#-26]
8474: c0 06 beqz38 $r0,0x8480
8476: 80 40 mov55 $r2,$r0
8478: 2e 17 ff e7 lbi.gp $r1,[+#-25]
847c: 80 03 mov55 $r0,$r3
847e: d5 07 j8 0x848c
8480: 2e 17 ff e7 lbi.gp $r1,[+#-25]
8484: 4e 12 00 dd beqz $r1,0x863e
8488: 50 20 00 00 addi $r2,$r0,#0x0
848c: 3f c8 08 50 addi.gp $fp,#0x850
8490: 85 5f movi55 $r10,#-1
8492: 80 9c mov55 $r4,$fp
8494: 18 a2 00 01 sbi.bi $r10,[$r4],#0x1
8498: 3e 78 05 13 addi.gp $r7,#0x513
849c: 01 e3 80 00 lbi $lp,[$r7+#0x0]
84a0: 10 a2 00 00 sbi $r10,[$r4+#0x0]
84a4: 4f e2 00 2c beqz $lp,0x84fc
84a8: 85 40 movi55 $r10,#0x0
84aa: 10 a3 80 00 sbi $r10,[$r7+#0x0]
84ae: c3 09 beqz38 $r3,0x84c0
84b0: 9e d9 subi333 $r3,$r3,#0x1
84b2: 96 d8 zeb33 $r3,$r3
84b4: 3e 78 05 1f addi.gp $r7,#0x51f
84b8: 10 a3 80 00 sbi $r10,[$r7+#0x0]
84bc: 3e 37 ff e4 sbi.gp $r3,[+#-28]
84c0: c0 0a beqz38 $r0,0x84d4
84c2: 9e 01 subi333 $r0,$r0,#0x1
84c4: 96 00 zeb33 $r0,$r0
84c6: 85 20 movi55 $r9,#0x0
84c8: 3e 78 05 23 addi.gp $r7,#0x523
84cc: 10 93 80 00 sbi $r9,[$r7+#0x0]
84d0: 3e 07 ff e5 sbi.gp $r0,[+#-27]
84d4: c2 0a beqz38 $r2,0x84e8
84d6: 9e 91 subi333 $r2,$r2,#0x1
84d8: 96 90 zeb33 $r2,$r2
84da: 85 00 movi55 $r8,#0x0
84dc: 3e 78 05 17 addi.gp $r7,#0x517
84e0: 10 83 80 00 sbi $r8,[$r7+#0x0]
84e4: 3e 27 ff e6 sbi.gp $r2,[+#-26]
84e8: c1 34 beqz38 $r1,0x8550
84ea: 9e 49 subi333 $r1,$r1,#0x1
84ec: 96 48 zeb33 $r1,$r1
84ee: 44 70 00 00 movi $r7,#0x0
84f2: 3e 70 05 1b sbi.gp $r7,[+#0x51b]
84f6: 3e 17 ff e7 sbi.gp $r1,[+#-25]
84fa: d5 2b j8 0x8550
84fc: 44 a0 00 64 movi $r10,#0x64
8500: 10 a3 80 00 sbi $r10,[$r7+#0x0]
8504: c3 0a beqz38 $r3,0x8518
8506: 9e d9 subi333 $r3,$r3,#0x1
8508: 54 31 80 ff andi $r3,$r3,#0xff
850c: 3e 78 05 1f addi.gp $r7,#0x51f
8510: 10 a3 80 00 sbi $r10,[$r7+#0x0]
8514: 3e 37 ff e4 sbi.gp $r3,[+#-28]
8518: c0 0a beqz38 $r0,0x852c
851a: 9e 01 subi333 $r0,$r0,#0x1
851c: 96 00 zeb33 $r0,$r0
851e: 81 2a mov55 $r9,$r10
8520: 3e 78 05 23 addi.gp $r7,#0x523
8524: 10 93 80 00 sbi $r9,[$r7+#0x0]
8528: 3e 07 ff e5 sbi.gp $r0,[+#-27]
852c: c2 0a beqz38 $r2,0x8540
852e: 9e 91 subi333 $r2,$r2,#0x1
8530: 96 90 zeb33 $r2,$r2
8532: 81 0a mov55 $r8,$r10
8534: 3e 78 05 17 addi.gp $r7,#0x517
8538: 10 83 80 00 sbi $r8,[$r7+#0x0]
853c: 3e 27 ff e6 sbi.gp $r2,[+#-26]
8540: c1 08 beqz38 $r1,0x8550
8542: 9e 49 subi333 $r1,$r1,#0x1
8544: 96 48 zeb33 $r1,$r1
8546: 80 ea mov55 $r7,$r10
8548: 3e 70 05 1b sbi.gp $r7,[+#0x51b]
854c: 3e 17 ff e7 sbi.gp $r1,[+#-25]
8550: c3 08 beqz38 $r3,0x8560
8552: 84 df movi55 $r6,#-1
8554: 3e 58 07 fa addi.gp $r5,#0x7fa
8558: 18 62 80 01 sbi.bi $r6,[$r5],#0x1
855c: af a8 sbi333 $r6,[$r5+#0x0]
855e: d5 13 j8 0x8584
8560: 3e 58 07 fa addi.gp $r5,#0x7fa
8564: 20 62 80 00 lbsi $r6,[$r5+#0x0]
8568: 84 ff movi55 $r7,#-1
856a: 4c 63 c0 0d bne $r6,$r7,0x8584
856e: 44 60 cf 02 movi $r6,#0xcf02
8572: 85 01 movi55 $r8,#0x1
8574: 3e 87 ff e8 sbi.gp $r8,[+#-24]
8578: 08 73 00 01 lbi.bi $r7,[$r6],#0x1
857c: 18 72 80 01 sbi.bi $r7,[$r5],#0x1
8580: a7 b0 lbi333 $r6,[$r6+#0x0]
8582: af a8 sbi333 $r6,[$r5+#0x0]
8584: c0 08 beqz38 $r0,0x8594
8586: 84 df movi55 $r6,#-1
8588: 3e 58 07 f8 addi.gp $r5,#0x7f8
858c: 18 62 80 01 sbi.bi $r6,[$r5],#0x1
8590: af a8 sbi333 $r6,[$r5+#0x0]
8592: d5 13 j8 0x85b8
8594: 3e 58 07 f8 addi.gp $r5,#0x7f8
8598: 20 62 80 00 lbsi $r6,[$r5+#0x0]
859c: 84 ff movi55 $r7,#-1
859e: 4c 63 c0 0d bne $r6,$r7,0x85b8
85a2: 44 60 cf 00 movi $r6,#0xcf00
85a6: 85 01 movi55 $r8,#0x1
85a8: 3e 87 ff e8 sbi.gp $r8,[+#-24]
85ac: 08 73 00 01 lbi.bi $r7,[$r6],#0x1
85b0: 18 72 80 01 sbi.bi $r7,[$r5],#0x1
85b4: a7 b0 lbi333 $r6,[$r6+#0x0]
85b6: af a8 sbi333 $r6,[$r5+#0x0]
85b8: c2 08 beqz38 $r2,0x85c8
85ba: 84 df movi55 $r6,#-1
85bc: 3e 58 07 ce addi.gp $r5,#0x7ce
85c0: 18 62 80 01 sbi.bi $r6,[$r5],#0x1
85c4: af a8 sbi333 $r6,[$r5+#0x0]
85c6: d5 13 j8 0x85ec
85c8: 3e 58 07 ce addi.gp $r5,#0x7ce
85cc: 20 62 80 00 lbsi $r6,[$r5+#0x0]
85d0: 84 ff movi55 $r7,#-1
85d2: 4c 63 c0 0d bne $r6,$r7,0x85ec
85d6: 44 60 ce d6 movi $r6,#0xced6
85da: 85 01 movi55 $r8,#0x1
85dc: 3e 87 ff e8 sbi.gp $r8,[+#-24]
85e0: 08 73 00 01 lbi.bi $r7,[$r6],#0x1
85e4: 18 72 80 01 sbi.bi $r7,[$r5],#0x1
85e8: a7 b0 lbi333 $r6,[$r6+#0x0]
85ea: af a8 sbi333 $r6,[$r5+#0x0]
85ec: c1 08 beqz38 $r1,0x85fc
85ee: 84 df movi55 $r6,#-1
85f0: 3e 58 07 cc addi.gp $r5,#0x7cc
85f4: 18 62 80 01 sbi.bi $r6,[$r5],#0x1
85f8: af a8 sbi333 $r6,[$r5+#0x0]
85fa: d5 13 j8 0x8620
85fc: 3e 58 07 cc addi.gp $r5,#0x7cc
8600: 20 62 80 00 lbsi $r6,[$r5+#0x0]
8604: 84 ff movi55 $r7,#-1
8606: 4c 63 c0 0d bne $r6,$r7,0x8620
860a: 44 60 ce d4 movi $r6,#0xced4
860e: 85 01 movi55 $r8,#0x1
8610: 3e 87 ff e8 sbi.gp $r8,[+#-24]
8614: 08 73 00 01 lbi.bi $r7,[$r6],#0x1
8618: 18 72 80 01 sbi.bi $r7,[$r5],#0x1
861c: a7 b0 lbi333 $r6,[$r6+#0x0]
861e: af a8 sbi333 $r6,[$r5+#0x0]
8620: cb 0f bnez38 $r3,0x863e
8622: c8 0e bnez38 $r0,0x863e
8624: ca 0d bnez38 $r2,0x863e
8626: c9 0c bnez38 $r1,0x863e
8628: 44 00 cf 58 movi $r0,#0xcf58
862c: 84 41 movi55 $r2,#0x1
862e: 3e 27 ff e8 sbi.gp $r2,[+#-24]
8632: 08 10 00 01 lbi.bi $r1,[$r0],#0x1
8636: a6 00 lbi333 $r0,[$r0+#0x0]
8638: 10 1e 00 00 sbi $r1,[$fp+#0x0]
863c: ae 20 sbi333 $r0,[$r4+#0x0]
863e: ec 04 addi10.sp #0x4
8640: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
8644: dd 9e ret5 $lp
8646: 92 00 nop16
8648: 3a 6f a0 bc smw.adm $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
864c: ef f8 addi10.sp #-8
864e: 84 e1 movi55 $r7,#0x1
8650: 50 2f 80 04 addi $r2,$sp,#0x4
8654: b6 02 swi450 $r0,[$r2]
8656: 4c 13 c0 21 bne $r1,$r7,0x8698
865a: 3e 68 10 07 addi.gp $r6,#0x1007
865e: a6 30 lbi333 $r0,[$r6+#0x0]
8660: 4e 03 00 88 bnez $r0,0x8770
8664: 3e 78 10 00 addi.gp $r7,#0x1000
8668: a6 d2 lbi333 $r3,[$r2+#0x2]
866a: 80 07 mov55 $r0,$r7
866c: aa 41 swi333.bi $r1,[$r0],#0x4
866e: a7 11 lbi333 $r4,[$r2+#0x1]
8670: a6 90 lbi333 $r2,[$r2+#0x0]
8672: 9e 59 subi333 $r1,$r3,#0x1
8674: ae 7e sbi333 $r1,[$r7+#0x6]
8676: ae b0 sbi333 $r2,[$r6+#0x0]
8678: ae fd sbi333 $r3,[$r7+#0x5]
867a: af 00 sbi333 $r4,[$r0+#0x0]
867c: 49 ff dd 88 jal 0x418c
8680: 46 10 01 00 sethi $r1,#0x100
8684: 2e 30 00 0d lbi.gp $r3,[+#0xd]
8688: a6 b0 lbi333 $r2,[$r6+#0x0]
868a: a8 3a swi333 $r0,[$r7+#0x8]
868c: 40 01 88 04 or $r0,$r3,$r2
8690: 3e 00 00 0d sbi.gp $r0,[+#0xd]
8694: 48 00 00 6e j 0x8770
8698: 84 02 movi55 $r0,#0x2
869a: 4c 10 40 2e bne $r1,$r0,0x86f6
869e: 3e 88 10 07 addi.gp $r8,#0x1007
86a2: 00 04 00 00 lbi $r0,[$r8+#0x0]
86a6: c0 65 beqz38 $r0,0x8770
86a8: 3e 68 10 00 addi.gp $r6,#0x1000
86ac: b4 46 lwi450 $r2,[$r6]
86ae: 84 81 movi55 $r4,#0x1
86b0: 4c 22 40 04 bne $r2,$r4,0x86b8
86b4: b6 26 swi450 $r1,[$r6]
86b6: d5 5d j8 0x8770
86b8: a6 34 lbi333 $r0,[$r6+#0x4]
86ba: 50 13 00 08 addi $r1,$r6,#0x8
86be: 49 ff dd f3 jal 0x42a4
86c2: c0 57 beqz38 $r0,0x8770
86c4: 46 00 01 00 sethi $r0,#0x100
86c8: 2e 30 00 0d lbi.gp $r3,[+#0xd]
86cc: 00 14 00 00 lbi $r1,[$r8+#0x0]
86d0: a6 b5 lbi333 $r2,[$r6+#0x5]
86d2: 40 11 84 04 or $r1,$r3,$r1
86d6: 96 48 zeb33 $r1,$r1
86d8: b6 e6 swi450 $r7,[$r6]
86da: 80 61 mov55 $r3,$r1
86dc: 3e 10 00 0d sbi.gp $r1,[+#0xd]
86e0: c2 48 beqz38 $r2,0x8770
86e2: 9d b6 addi333 $r6,$r6,#0x6
86e4: a6 70 lbi333 $r1,[$r6+#0x0]
86e6: 9e 89 subi333 $r2,$r1,#0x1
86e8: ae b0 sbi333 $r2,[$r6+#0x0]
86ea: c9 43 bnez38 $r1,0x8770
86ec: 10 14 00 00 sbi $r1,[$r8+#0x0]
86f0: 3e 30 00 0d sbi.gp $r3,[+#0xd]
86f4: d5 3e j8 0x8770
86f6: 9e 4b subi333 $r1,$r1,#0x3
86f8: e6 22 slti45 $r1,#0x2
86fa: e8 3b beqzs8 0x8770
86fc: 3e 88 10 07 addi.gp $r8,#0x1007
8700: 00 04 00 00 lbi $r0,[$r8+#0x0]
8704: c0 36 beqz38 $r0,0x8770
8706: 3e 68 10 00 addi.gp $r6,#0x1000
870a: b4 26 lwi450 $r1,[$r6]
870c: 84 41 movi55 $r2,#0x1
870e: 4c 11 40 05 bne $r1,$r2,0x8718
8712: 84 02 movi55 $r0,#0x2
8714: b6 06 swi450 $r0,[$r6]
8716: d5 2d j8 0x8770
8718: a6 75 lbi333 $r1,[$r6+#0x5]
871a: c9 0c bnez38 $r1,0x8732
871c: 2e 30 00 0d lbi.gp $r3,[+#0xd]
8720: 40 00 00 05 nor $r0,$r0,$r0
8724: 40 00 0c 02 and $r0,$r0,$r3
8728: 3e 00 00 0d sbi.gp $r0,[+#0xd]
872c: 10 14 00 00 sbi $r1,[$r8+#0x0]
8730: d5 20 j8 0x8770
8732: a6 34 lbi333 $r0,[$r6+#0x4]
8734: 50 13 00 08 addi $r1,$r6,#0x8
8738: 49 ff dd b6 jal 0x42a4
873c: c0 1a beqz38 $r0,0x8770
873e: 46 00 01 00 sethi $r0,#0x100
8742: 2e 30 00 0d lbi.gp $r3,[+#0xd]
8746: 9c b6 addi333 $r2,$r6,#0x6
8748: 00 44 00 00 lbi $r4,[$r8+#0x0]
874c: a6 50 lbi333 $r1,[$r2+#0x0]
874e: 40 31 90 04 or $r3,$r3,$r4
8752: 96 d8 zeb33 $r3,$r3
8754: 9f 49 subi333 $r5,$r1,#0x1
8756: af 50 sbi333 $r5,[$r2+#0x0]
8758: b6 e6 swi450 $r7,[$r6]
875a: 3e 30 00 0d sbi.gp $r3,[+#0xd]
875e: c9 09 bnez38 $r1,0x8770
8760: 40 42 10 05 nor $r4,$r4,$r4
8764: 40 31 90 02 and $r3,$r3,$r4
8768: 3e 30 00 0d sbi.gp $r3,[+#0xd]
876c: 10 14 00 00 sbi $r1,[$r8+#0x0]
8770: ec 08 addi10.sp #0x8
8772: 3a 6f a0 84 lmw.bim $r6,[$sp],$r8,#0x2 ! {$r6~$r8, $lp}
8776: dd 9e ret5 $lp
8778: 3a 6f a4 bc smw.adm $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
877c: ef f4 addi10.sp #-12
877e: 84 c1 movi55 $r6,#0x1
8780: 50 7f 80 04 addi $r7,$sp,#0x4
8784: b6 07 swi450 $r0,[$r7]
8786: 4c 13 40 2b bne $r1,$r6,0x87dc
878a: 3e 08 10 13 addi.gp $r0,#0x1013
878e: a6 80 lbi333 $r2,[$r0+#0x0]
8790: 4e 23 00 b2 bnez $r2,0x88f4
8794: 3e 68 10 0c addi.gp $r6,#0x100c
8798: a6 fa lbi333 $r3,[$r7+#0x2]
879a: 80 46 mov55 $r2,$r6
879c: 00 83 80 00 lbi $r8,[$r7+#0x0]
87a0: aa 51 swi333.bi $r1,[$r2],#0x4
87a2: a7 f9 lbi333 $r7,[$r7+#0x1]
87a4: 9f 19 subi333 $r4,$r3,#0x1
87a6: af d0 sbi333 $r7,[$r2+#0x0]
87a8: af 36 sbi333 $r4,[$r6+#0x6]
87aa: 10 80 00 00 sbi $r8,[$r0+#0x0]
87ae: ae f5 sbi333 $r3,[$r6+#0x5]
87b0: 14 1f 80 00 swi $r1,[$sp+#0x0]
87b4: 49 ff dc ec jal 0x418c
87b8: 40 24 0c 09 srli $r2,$r8,#0x3
87bc: 3e 38 10 b0 addi.gp $r3,#0x10b0
87c0: b4 3f lwi450 $r1,[$sp]
87c2: 38 41 88 00 lb $r4,[$r3+($r2<<#0x0)]
87c6: 54 84 00 07 andi $r8,$r8,#0x7
87ca: 40 10 a0 0c sll $r1,$r1,$r8
87ce: 40 10 90 04 or $r1,$r1,$r4
87d2: 38 11 88 08 sb $r1,[$r3+($r2<<#0x0)]
87d6: a8 32 swi333 $r0,[$r6+#0x8]
87d8: 48 00 00 8e j 0x88f4
87dc: 84 02 movi55 $r0,#0x2
87de: 4c 10 40 34 bne $r1,$r0,0x8846
87e2: 3e 98 10 13 addi.gp $r9,#0x1013
87e6: 00 04 80 00 lbi $r0,[$r9+#0x0]
87ea: 4e 02 00 85 beqz $r0,0x88f4
87ee: 3e 88 10 0c addi.gp $r8,#0x100c
87f2: b4 48 lwi450 $r2,[$r8]
87f4: 84 01 movi55 $r0,#0x1
87f6: 4c 20 40 05 bne $r2,$r0,0x8800
87fa: b6 28 swi450 $r1,[$r8]
87fc: 48 00 00 7c j 0x88f4
8800: 00 04 00 04 lbi $r0,[$r8+#0x4]
8804: 50 14 00 08 addi $r1,$r8,#0x8
8808: 49 ff dd 4e jal 0x42a4
880c: 4e 02 00 74 beqz $r0,0x88f4
8810: a6 b8 lbi333 $r2,[$r7+#0x0]
8812: 40 11 0c 09 srli $r1,$r2,#0x3
8816: 3e 08 10 b0 addi.gp $r0,#0x10b0
881a: 38 40 04 00 lb $r4,[$r0+($r1<<#0x0)]
881e: 54 21 00 07 andi $r2,$r2,#0x7
8822: 40 23 08 0c sll $r2,$r6,$r2
8826: 00 34 00 05 lbi $r3,[$r8+#0x5]
882a: 40 21 10 04 or $r2,$r2,$r4
882e: 38 20 04 08 sb $r2,[$r0+($r1<<#0x0)]
8832: b6 c8 swi450 $r6,[$r8]
8834: c3 60 beqz38 $r3,0x88f4
8836: 8d 06 addi45 $r8,#0x6
8838: 00 14 00 00 lbi $r1,[$r8+#0x0]
883c: 9e 89 subi333 $r2,$r1,#0x1
883e: 10 24 00 00 sbi $r2,[$r8+#0x0]
8842: c9 59 bnez38 $r1,0x88f4
8844: d5 46 j8 0x88d0
8846: 9e 4b subi333 $r1,$r1,#0x3
8848: e6 22 slti45 $r1,#0x2
884a: e8 55 beqzs8 0x88f4
884c: 3e 98 10 13 addi.gp $r9,#0x1013
8850: 00 04 80 00 lbi $r0,[$r9+#0x0]
8854: c0 50 beqz38 $r0,0x88f4
8856: 3e 88 10 0c addi.gp $r8,#0x100c
885a: b4 28 lwi450 $r1,[$r8]
885c: 84 41 movi55 $r2,#0x1
885e: 4c 11 40 05 bne $r1,$r2,0x8868
8862: 84 02 movi55 $r0,#0x2
8864: b6 08 swi450 $r0,[$r8]
8866: d5 47 j8 0x88f4
8868: 00 14 00 05 lbi $r1,[$r8+#0x5]
886c: c9 14 bnez38 $r1,0x8894
886e: 54 30 00 07 andi $r3,$r0,#0x7
8872: 3e 28 10 b0 addi.gp $r2,#0x10b0
8876: 40 00 0c 09 srli $r0,$r0,#0x3
887a: 40 63 0c 0c sll $r6,$r6,$r3
887e: 38 31 00 00 lb $r3,[$r2+($r0<<#0x0)]
8882: 40 63 18 05 nor $r6,$r6,$r6
8886: 40 33 0c 02 and $r3,$r6,$r3
888a: 38 31 00 08 sb $r3,[$r2+($r0<<#0x0)]
888e: 10 14 80 00 sbi $r1,[$r9+#0x0]
8892: d5 31 j8 0x88f4
8894: 00 04 00 04 lbi $r0,[$r8+#0x4]
8898: 50 14 00 08 addi $r1,$r8,#0x8
889c: 49 ff dd 04 jal 0x42a4
88a0: c0 2a beqz38 $r0,0x88f4
88a2: a6 78 lbi333 $r1,[$r7+#0x0]
88a4: 40 20 8c 09 srli $r2,$r1,#0x3
88a8: 50 34 00 06 addi $r3,$r8,#0x6
88ac: 3e 08 10 b0 addi.gp $r0,#0x10b0
88b0: 54 40 80 07 andi $r4,$r1,#0x7
88b4: 38 50 08 00 lb $r5,[$r0+($r2<<#0x0)]
88b8: a6 58 lbi333 $r1,[$r3+#0x0]
88ba: 40 43 10 0c sll $r4,$r6,$r4
88be: 40 52 14 04 or $r5,$r4,$r5
88c2: 9f 09 subi333 $r4,$r1,#0x1
88c4: 38 50 08 08 sb $r5,[$r0+($r2<<#0x0)]
88c8: af 18 sbi333 $r4,[$r3+#0x0]
88ca: 14 64 00 00 swi $r6,[$r8+#0x0]
88ce: c9 13 bnez38 $r1,0x88f4
88d0: 00 24 80 00 lbi $r2,[$r9+#0x0]
88d4: 10 14 80 00 sbi $r1,[$r9+#0x0]
88d8: 54 31 00 07 andi $r3,$r2,#0x7
88dc: 40 11 0c 09 srli $r1,$r2,#0x3
88e0: 40 63 0c 0c sll $r6,$r6,$r3
88e4: 38 30 04 00 lb $r3,[$r0+($r1<<#0x0)]
88e8: 40 23 18 05 nor $r2,$r6,$r6
88ec: 40 21 0c 02 and $r2,$r2,$r3
88f0: 38 20 04 08 sb $r2,[$r0+($r1<<#0x0)]
88f4: ec 0c addi10.sp #0xc
88f6: 3a 6f a4 84 lmw.bim $r6,[$sp],$r9,#0x2 ! {$r6~$r9, $lp}
88fa: dd 9e ret5 $lp
; ---------- 0x88fc - bit twiddling with 0xd568, only called at startup
88fc: 44 10 d5 68 movi $r1,#0xd568
8900: b4 01 lwi450 $r0,[$r1]
8902: a0 89 lwi333 $r2,[$r1+#0x4]
8904: b4 60 lwi450 $r3,[$r0]
8906: 40 41 08 05 nor $r4,$r2,$r2
890a: 40 31 0c 04 or $r3,$r2,$r3
890e: b6 60 swi450 $r3,[$r0]
8910: 8c 28 addi45 $r1,#0x8
8912: a0 c1 lwi333 $r3,[$r0+#0x4]
8914: 40 32 0c 02 and $r3,$r4,$r3
8918: a8 c1 swi333 $r3,[$r0+#0x4]
891a: a0 c2 lwi333 $r3,[$r0+#0x8]
891c: 40 31 88 04 or $r3,$r3,$r2
8920: a8 c2 swi333 $r3,[$r0+#0x8]
8922: 14 20 00 08 swi $r2,[$r0+#0x20]
8926: 44 00 d5 e0 movi $r0,#0xd5e0
892a: 4c 10 7f eb bne $r1,$r0,0x8900
892e: 44 10 d5 e0 movi $r1,#0xd5e0
8932: b4 01 lwi450 $r0,[$r1]
8934: a0 89 lwi333 $r2,[$r1+#0x4]
8936: b4 60 lwi450 $r3,[$r0]
8938: 40 41 08 05 nor $r4,$r2,$r2
893c: 40 31 0c 04 or $r3,$r2,$r3
8940: b6 60 swi450 $r3,[$r0]
8942: 8c 28 addi45 $r1,#0x8
8944: a0 c1 lwi333 $r3,[$r0+#0x4]
8946: 40 31 88 04 or $r3,$r3,$r2
894a: a8 c1 swi333 $r3,[$r0+#0x4]
894c: a0 c5 lwi333 $r3,[$r0+#0x14]
894e: 40 32 0c 02 and $r3,$r4,$r3
8952: a8 c5 swi333 $r3,[$r0+#0x14]
8954: a0 c6 lwi333 $r3,[$r0+#0x18]
8956: 40 21 88 04 or $r2,$r3,$r2
895a: a8 86 swi333 $r2,[$r0+#0x18]
895c: 44 00 d6 20 movi $r0,#0xd620
8960: 4c 10 7f e9 bne $r1,$r0,0x8932
8964: dd 9e ret5 $lp
8966: 92 00 nop16
; ---------- 0x8968: mainloop_8968
8968: 3a 6f aa 3c smw.adm $r6,[$sp],$r10,#0x8 ! {$r6~$r10, $fp}
896c: 84 80 movi55 $r4,#0x0
896e: 3e 78 10 a0 addi.gp $r7,#0x10a0
8972: 3f c8 10 90 addi.gp $fp,#0x1090
8976: 81 44 mov55 $r10,$r4
8978: 85 21 movi55 $r9,#0x1
897a: a6 f8 lbi333 $r3,[$r7+#0x0]
897c: 38 5e 10 00 lb $r5,[$fp+($r4<<#0x0)]
8980: 96 18 zeb33 $r0,$r3
8982: 40 50 14 04 or $r5,$r0,$r5
8986: 40 02 80 03 xor $r0,$r5,$r0
898a: 97 40 zeb33 $r5,$r0
898c: 3e 08 10 18 addi.gp $r0,#0x1018
8990: 94 63 slli333 $r1,$r4,#0x3
8992: 98 48 add333 $r1,$r1,$r0
8994: 44 00 00 00 movi $r0,#0x0
8998: 40 22 80 0e sra $r2,$r5,$r0
899c: 96 94 xlsb33 $r2,$r2
899e: c2 11 beqz38 $r2,0x89c0
89a0: a6 88 lbi333 $r2,[$r1+#0x0]
89a2: 40 64 80 0c sll $r6,$r9,$r0
89a6: 40 63 0c 04 or $r6,$r6,$r3
89aa: 50 81 00 01 addi $r8,$r2,#0x1
89ae: e6 44 slti45 $r2,#0x4
89b0: e8 06 beqzs8 0x89bc
89b2: 10 80 80 00 sbi $r8,[$r1+#0x0]
89b6: af b8 sbi333 $r6,[$r7+#0x0]
89b8: 80 66 mov55 $r3,$r6
89ba: d5 03 j8 0x89c0
89bc: 10 a0 80 00 sbi $r10,[$r1+#0x0]
89c0: 9c 01 addi333 $r0,$r0,#0x1
89c2: 84 48 movi55 $r2,#0x8
89c4: 9c 49 addi333 $r1,$r1,#0x1
89c6: 4c 01 7f e9 bne $r0,$r2,0x8998
89ca: 9d 21 addi333 $r4,$r4,#0x1
89cc: 84 0f movi55 $r0,#0xf
89ce: 9d f9 addi333 $r7,$r7,#0x1
89d0: 4c 40 7f d5 bne $r4,$r0,0x897a
89d4: 3a 6f aa 04 lmw.bim $r6,[$sp],$r10,#0x8 ! {$r6~$r10, $fp}
89d8: dd 9e ret5 $lp
89da: 92 00 nop16
; ---------- 0x89dc: mainloop_89dc
89dc: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
89e0: ef ec addi10.sp #-20
89e2: 3e 48 10 a0 addi.gp $r4,#0x10a0 ; $r4 = $gp+0x10a0
89e6: 3a 02 0c 00 lmw.bi $r0,[$r4],$r3,#0x0 ! {$r0~$r3} get loaded from [$r4]
89ea: 3e 68 10 90 addi.gp $r6,#0x1090 ; $r6 = $gp+0x1090
89ee: 80 e6 mov55 $r7,$r6 ; $r7 = $r6
89f0: 3a 03 88 24 smw.bim $r0,[$r7],$r2,#0x0 ! {$r0~$r2} get saved at [$r7], $r7 updated
89f4: 84 80 movi55 $r4,#0x0 ; $r4 = 0
89f6: 40 81 c0 09 srli $r8,$r3,#0x10 ; $r8 = $r3 >> 16 (top 16 bits)
89fa: 46 f0 00 0d sethi $r15,#0xd
89fe: 04 57 81 59 lwi $r5,[$r15+#0x564] ; $r5 = [0xd564]
8a02: 80 07 mov55 $r0,$r7 ; $r0 = $r7
8a04: 3e 18 10 a0 addi.gp $r1,#0x10a0 ; $r1 = $gp+0x10a0
8a08: ab 29 swi333.bi $r4,[$r5],#0x4 ; [$r5 (0xd564)] = $r4; $r5+=4
8a0a: 10 83 00 0e sbi $r8,[$r6+#0xe] ;
8a0e: 50 70 80 0c addi $r7,$r1,#0xc
8a12: ac c0 shi333 $r3,[$r0+#0x0]
8a14: 50 20 80 08 addi $r2,$r1,#0x8
8a18: 46 f0 00 0d sethi $r15,#0xd
8a1c: 04 87 81 59 lwi $r8,[$r15+#0x564]
8a20: ad 38 shi333 $r4,[$r7+#0x0]
8a22: b6 85 swi450 $r4,[$r5]
8a24: b6 82 swi450 $r4,[$r2]
8a26: 47 c0 01 f6 sethi $fp,#0x1f6
8a2a: 3e 40 10 ae sbi.gp $r4,[+#0x10ae]
8a2e: 59 ce 08 0c ori $fp,$fp,#0x80c ; $fp = GPIO offset 0x0c: PAD_PA, read input from GPIOA
8a32: 44 60 d5 68 movi $r6,#0xd568
8a36: 80 e8 mov55 $r7,$r8
8a38: b5 26 lwi450 $r9,[$r6]
8a3a: 04 a3 00 01 lwi $r10,[$r6+#0x4]
8a3e: 14 a4 80 07 swi $r10,[$r9+#0x1c]
8a42: 44 00 00 1e movi $r0,#0x1e
8a46: 49 ff dc 0b jal 0x425c
8a4a: b4 1c lwi450 $r0,[$fp]
8a4c: a6 78 lbi333 $r1,[$r7+#0x0]
8a4e: 40 00 00 05 nor $r0,$r0,$r0
8a52: 40 00 04 04 or $r0,$r0,$r1
8a56: 18 03 80 01 sbi.bi $r0,[$r7],#0x1
8a5a: 8c c8 addi45 $r6,#0x8
8a5c: 44 00 d5 e0 movi $r0,#0xd5e0
8a60: 14 a4 80 08 swi $r10,[$r9+#0x20]
8a64: 4c 60 7f ea bne $r6,$r0,0x8a38
8a68: 84 20 movi55 $r1,#0x0
8a6a: 50 0f 80 04 addi $r0,$sp,#0x4
8a6e: b6 20 swi450 $r1,[$r0]
8a70: 50 0f 80 08 addi $r0,$sp,#0x8
8a74: b6 20 swi450 $r1,[$r0]
8a76: 50 0f 80 0c addi $r0,$sp,#0xc
8a7a: ac 40 shi333 $r1,[$r0+#0x0]
8a7c: b6 3f swi450 $r1,[$sp]
8a7e: 80 5f mov55 $r2,$sp
8a80: 84 a8 movi55 $r5,#0x8
8a82: 44 90 d6 20 movi $r9,#0xd620
8a86: 84 e1 movi55 $r7,#0x1
8a88: 00 64 00 00 lbi $r6,[$r8+#0x0]
8a8c: 50 12 ff f8 addi $r1,$r5,#-8
8a90: 96 48 zeb33 $r1,$r1
8a92: c6 1d beqz38 $r6,0x8acc
8a94: 44 00 00 00 movi $r0,#0x0
8a98: 40 43 00 0e sra $r4,$r6,$r0
8a9c: 97 24 xlsb33 $r4,$r4
8a9e: 9c c9 addi333 $r3,$r1,#0x1
8aa0: 9c 01 addi333 $r0,$r0,#0x1
8aa2: c4 11 beqz38 $r4,0x8ac4
8aa4: 38 44 86 02 lw $r4,[$r9+($r1<<#0x2)]
8aa8: 40 12 10 09 srli $r1,$r4,#0x4
8aac: 54 10 80 0f andi $r1,$r1,#0xf
8ab0: 38 a1 04 00 lb $r10,[$r2+($r1<<#0x0)]
8ab4: 54 42 00 0f andi $r4,$r4,#0xf
8ab8: 40 43 90 0c sll $r4,$r7,$r4
8abc: 40 42 28 04 or $r4,$r4,$r10
8ac0: 38 41 04 08 sb $r4,[$r2+($r1<<#0x0)]
8ac4: 96 58 zeb33 $r1,$r3
8ac6: 84 68 movi55 $r3,#0x8
8ac8: 4c 01 ff e8 bne $r0,$r3,0x8a98
8acc: 8c a8 addi45 $r5,#0x8
8ace: 97 68 zeb33 $r5,$r5
8ad0: 44 40 00 78 movi $r4,#0x78
8ad4: 8d 01 addi45 $r8,#0x1
8ad6: dc d9 bnes38 $r4,0x8a88
8ad8: 3a 01 0c 00 lmw.bi $r0,[$r2],$r3,#0x0 ! {$r0~$r3}
8adc: 3e 48 10 a0 addi.gp $r4,#0x10a0
8ae0: 3a 02 08 24 smw.bim $r0,[$r4],$r2,#0x0 ! {$r0~$r2}
8ae4: 84 a0 movi55 $r5,#0x0
8ae6: 3e 68 10 ae addi.gp $r6,#0x10ae
8aea: af 70 sbi333 $r5,[$r6+#0x0]
8aec: ac e0 shi333 $r3,[$r4+#0x0]
8aee: 3e 08 10 a0 addi.gp $r0,#0x10a0
8af2: 3e 18 10 90 addi.gp $r1,#0x1090
8af6: 84 4f movi55 $r2,#0xf
8af8: 49 00 0a ca jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
8afc: c0 07 beqz38 $r0,0x8b0a
8afe: 46 00 01 00 sethi $r0,#0x100
8b02: 44 12 49 f0 movi $r1,#0x249f0
8b06: 3c 1f ff e3 swi.gp $r1,[+#-116]
8b0a: ec 14 addi10.sp #0x14
8b0c: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
8b10: dd 9e ret5 $lp
8b12: 92 00 nop16
8b14: 96 00 zeb33 $r0,$r0
8b16: 96 48 zeb33 $r1,$r1
8b18: 94 03 slli333 $r0,$r0,#0x3
8b1a: 3e 38 06 60 addi.gp $r3,#0x660
8b1e: 98 81 add333 $r2,$r0,$r1
8b20: 98 93 add333 $r2,$r2,$r3
8b22: a6 d0 lbi333 $r3,[$r2+#0x0]
8b24: 5c f1 80 c8 slti $r15,$r3,#0xc8
8b28: e8 06 beqzs8 0x8b34
8b2a: 9c d9 addi333 $r3,$r3,#0x1
8b2c: ae d0 sbi333 $r3,[$r2+#0x0]
8b2e: 84 61 movi55 $r3,#0x1
8b30: 3e 37 ff e1 sbi.gp $r3,[+#-31]
8b34: 98 01 add333 $r0,$r0,$r1
8b36: 3e 18 06 e0 addi.gp $r1,#0x6e0
8b3a: 98 01 add333 $r0,$r0,$r1
8b3c: 84 21 movi55 $r1,#0x1
8b3e: ae 40 sbi333 $r1,[$r0+#0x0]
8b40: dd 9e ret5 $lp
8b42: 92 00 nop16
8b44: 96 00 zeb33 $r0,$r0
8b46: 94 03 slli333 $r0,$r0,#0x3
8b48: 96 48 zeb33 $r1,$r1
8b4a: 98 41 add333 $r1,$r0,$r1
8b4c: 3e 38 15 2c addi.gp $r3,#0x152c
8b50: 46 00 01 00 sethi $r0,#0x100
8b54: 38 41 86 02 lw $r4,[$r3+($r1<<#0x2)]
8b58: 3c 2d ff f0 lwi.gp $r2,[+#-64]
8b5c: 9d 21 addi333 $r4,$r4,#0x1
8b5e: 9c 91 addi333 $r2,$r2,#0x1
8b60: 38 41 86 0a sw $r4,[$r3+($r1<<#0x2)]
8b64: 3c 2f ff f0 swi.gp $r2,[+#-64]
8b68: 5c f1 00 c9 slti $r15,$r2,#0xc9
8b6c: e9 04 bnezs8 0x8b74
8b6e: 3c 2d ff e5 lwi.gp $r2,[+#-108]
8b72: d5 0c j8 0x8b8a
8b74: c2 13 beqz38 $r2,0x8b9a
8b76: 46 10 01 00 sethi $r1,#0x100
8b7a: 3c 2d ff e5 lwi.gp $r2,[+#-108]
8b7e: 3c 3d ff f1 lwi.gp $r3,[+#-60]
8b82: 9a d3 sub333 $r3,$r2,$r3
8b84: 5c f1 82 59 slti $r15,$r3,#0x259
8b88: e9 09 bnezs8 0x8b9a
8b8a: 84 81 movi55 $r4,#0x1
8b8c: 3c 2f ff f1 swi.gp $r2,[+#-60]
8b90: 84 20 movi55 $r1,#0x0
8b92: 3e 47 ff e0 sbi.gp $r4,[+#-32]
8b96: 3c 1f ff f0 swi.gp $r1,[+#-64]
8b9a: dd 9e ret5 $lp
8b9c: ef f8 addi10.sp #-8
8b9e: 50 2f 80 04 addi $r2,$sp,#0x4
8ba2: b6 02 swi450 $r0,[$r2]
8ba4: 84 62 movi55 $r3,#0x2
8ba6: a6 13 lbi333 $r0,[$r2+#0x3]
8ba8: 4c 01 80 0a beq $r0,$r3,0x8bbc
8bac: 84 63 movi55 $r3,#0x3
8bae: 4c 01 80 9e beq $r0,$r3,0x8cea
8bb2: 84 61 movi55 $r3,#0x1
8bb4: 4c 01 c2 7c bne $r0,$r3,0x90ac
8bb8: 48 00 00 7c j 0x8cb0
8bbc: 84 01 movi55 $r0,#0x1
8bbe: 4c 10 40 39 bne $r1,$r0,0x8c30
8bc2: a6 11 lbi333 $r0,[$r2+#0x1]
8bc4: c0 0f beqz38 $r0,0x8be2
8bc6: 40 30 0c 09 srli $r3,$r0,#0x3
8bca: 3e 48 10 b0 addi.gp $r4,#0x10b0
8bce: 38 52 0c 00 lb $r5,[$r4+($r3<<#0x0)]
8bd2: 54 00 00 07 andi $r0,$r0,#0x7
8bd6: 40 10 80 0c sll $r1,$r1,$r0
8bda: 40 10 94 04 or $r1,$r1,$r5
8bde: 38 12 0c 08 sb $r1,[$r4+($r3<<#0x0)]
8be2: a6 12 lbi333 $r0,[$r2+#0x2]
8be4: c0 10 beqz38 $r0,0x8c04
8be6: 40 10 0c 09 srli $r1,$r0,#0x3
8bea: 3e 38 10 b0 addi.gp $r3,#0x10b0
8bee: 38 51 84 00 lb $r5,[$r3+($r1<<#0x0)]
8bf2: 54 00 00 07 andi $r0,$r0,#0x7
8bf6: 84 81 movi55 $r4,#0x1
8bf8: 40 02 00 0c sll $r0,$r4,$r0
8bfc: 40 00 14 04 or $r0,$r0,$r5
8c00: 38 01 84 08 sb $r0,[$r3+($r1<<#0x0)]
8c04: a6 10 lbi333 $r0,[$r2+#0x0]
8c06: 4e 02 02 53 beqz $r0,0x90ac
8c0a: 2e 17 ff ff lbi.gp $r1,[+#-1]
8c0e: c1 07 beqz38 $r1,0x8c1c
8c10: 84 28 movi55 $r1,#0x8
8c12: 4c 00 82 4d beq $r0,$r1,0x90ac
8c16: 94 8c slli333 $r2,$r1,#0x4
8c18: 4c 01 02 4a beq $r0,$r2,0x90ac
8c1c: 46 10 01 00 sethi $r1,#0x100
8c20: 2e 20 00 02 lbi.gp $r2,[+#0x2]
8c24: 40 00 08 04 or $r0,$r0,$r2
8c28: 3e 00 00 02 sbi.gp $r0,[+#0x2]
8c2c: 48 00 02 40 j 0x90ac
8c30: 84 63 movi55 $r3,#0x3
8c32: 4c 11 c2 3d bne $r1,$r3,0x90ac
8c36: a6 11 lbi333 $r0,[$r2+#0x1]
8c38: c0 11 beqz38 $r0,0x8c5a
8c3a: 54 30 00 07 andi $r3,$r0,#0x7
8c3e: 3e 18 10 b0 addi.gp $r1,#0x10b0
8c42: 92 03 srli45 $r0,#0x3
8c44: 84 81 movi55 $r4,#0x1
8c46: 40 32 0c 0c sll $r3,$r4,$r3
8c4a: 38 40 80 00 lb $r4,[$r1+($r0<<#0x0)]
8c4e: 40 31 8c 05 nor $r3,$r3,$r3
8c52: 40 31 90 02 and $r3,$r3,$r4
8c56: 38 30 80 08 sb $r3,[$r1+($r0<<#0x0)]
8c5a: a6 12 lbi333 $r0,[$r2+#0x2]
8c5c: c0 11 beqz38 $r0,0x8c7e
8c5e: 54 30 00 07 andi $r3,$r0,#0x7
8c62: 3e 18 10 b0 addi.gp $r1,#0x10b0
8c66: 92 03 srli45 $r0,#0x3
8c68: 84 81 movi55 $r4,#0x1
8c6a: 40 32 0c 0c sll $r3,$r4,$r3
8c6e: 38 40 80 00 lb $r4,[$r1+($r0<<#0x0)]
8c72: 40 31 8c 05 nor $r3,$r3,$r3
8c76: 40 31 90 02 and $r3,$r3,$r4
8c7a: 38 30 80 08 sb $r3,[$r1+($r0<<#0x0)]
8c7e: a6 10 lbi333 $r0,[$r2+#0x0]
8c80: 4e 02 02 16 beqz $r0,0x90ac
8c84: 2e 17 ff ff lbi.gp $r1,[+#-1]
8c88: c1 08 beqz38 $r1,0x8c98
8c8a: 84 28 movi55 $r1,#0x8
8c8c: 4c 00 82 10 beq $r0,$r1,0x90ac
8c90: 40 20 90 08 slli $r2,$r1,#0x4
8c94: 4c 01 02 0c beq $r0,$r2,0x90ac
8c98: 46 10 01 00 sethi $r1,#0x100
8c9c: 2e 20 00 02 lbi.gp $r2,[+#0x2]
8ca0: 40 00 00 05 nor $r0,$r0,$r0
8ca4: 40 00 08 02 and $r0,$r0,$r2
8ca8: 3e 00 00 02 sbi.gp $r0,[+#0x2]
8cac: 48 00 02 00 j 0x90ac
8cb0: 4c 10 40 0d bne $r1,$r0,0x8cca
8cb4: 46 00 01 00 sethi $r0,#0x100
8cb8: a6 50 lbi333 $r1,[$r2+#0x0]
8cba: 2e 20 00 0d lbi.gp $r2,[+#0xd]
8cbe: 40 11 04 04 or $r1,$r2,$r1
8cc2: 3e 10 00 0d sbi.gp $r1,[+#0xd]
8cc6: 48 00 01 f3 j 0x90ac
8cca: 84 63 movi55 $r3,#0x3
8ccc: 4c 11 c1 f0 bne $r1,$r3,0x90ac
8cd0: a6 50 lbi333 $r1,[$r2+#0x0]
8cd2: 46 00 01 00 sethi $r0,#0x100
8cd6: 2e 20 00 0d lbi.gp $r2,[+#0xd]
8cda: 40 10 84 05 nor $r1,$r1,$r1
8cde: 40 10 88 02 and $r1,$r1,$r2
8ce2: 3e 10 00 0d sbi.gp $r1,[+#0xd]
8ce6: 48 00 01 e3 j 0x90ac
8cea: 84 01 movi55 $r0,#0x1
8cec: 4c 10 40 f2 bne $r1,$r0,0x8ed0
8cf0: a6 11 lbi333 $r0,[$r2+#0x1]
8cf2: a6 50 lbi333 $r1,[$r2+#0x0]
8cf4: 40 00 20 08 slli $r0,$r0,#0x8
8cf8: 40 00 04 04 or $r0,$r0,$r1
8cfc: 44 10 01 8a movi $r1,#0x18a
8d00: 4c 00 80 5c beq $r0,$r1,0x8db8
8d04: 5c f0 01 8b slti $r15,$r0,#0x18b
8d08: e8 28 beqzs8 0x8d58
8d0a: 44 20 00 cd movi $r2,#0xcd
8d0e: 4c 01 00 6d beq $r0,$r2,0x8de8
8d12: 5c f0 00 ce slti $r15,$r0,#0xce
8d16: e8 0d beqzs8 0x8d30
8d18: 44 30 00 b6 movi $r3,#0xb6
8d1c: 4c 01 80 76 beq $r0,$r3,0x8e08
8d20: 9c 59 addi333 $r1,$r3,#0x1
8d22: 4c 00 80 6b beq $r0,$r1,0x8df8
8d26: 9e 8a subi333 $r2,$r1,#0x2
8d28: 4c 01 41 c2 bne $r0,$r2,0x90ac
8d2c: 48 00 00 76 j 0x8e18
8d30: 44 30 00 e9 movi $r3,#0xe9
8d34: 4c 01 80 8c beq $r0,$r3,0x8e4c
8d38: 5c f0 00 ea slti $r15,$r0,#0xea
8d3c: e8 06 beqzs8 0x8d48
8d3e: 9e 5f subi333 $r1,$r3,#0x7
8d40: 4c 00 c1 b6 bne $r0,$r1,0x90ac
8d44: 48 00 00 74 j 0x8e2c
8d48: 8c 5d addi45 $r2,#0x1d
8d4a: 4c 01 00 79 beq $r0,$r2,0x8e3c
8d4e: 50 30 ff f9 addi $r3,$r1,#-7
8d52: 4c 01 c1 ad bne $r0,$r3,0x90ac
8d56: d5 29 j8 0x8da8
8d58: 44 10 02 24 movi $r1,#0x224
8d5c: 4c 00 80 90 beq $r0,$r1,0x8e7c
8d60: 5c f0 02 25 slti $r15,$r0,#0x225
8d64: e8 14 beqzs8 0x8d8c
8d66: 44 20 01 94 movi $r2,#0x194
8d6a: 4c 01 00 37 beq $r0,$r2,0x8dd8
8d6e: 5c f0 01 95 slti $r15,$r0,#0x195
8d72: e8 05 beqzs8 0x8d7c
8d74: 9e d2 subi333 $r3,$r2,#0x2
8d76: 4c 01 c1 9b bne $r0,$r3,0x90ac
8d7a: d5 27 j8 0x8dc8
8d7c: 9e 4b subi333 $r1,$r1,#0x3
8d7e: 4c 00 80 6f beq $r0,$r1,0x8e5c
8d82: 9c 8a addi333 $r2,$r1,#0x2
8d84: 4c 01 41 94 bne $r0,$r2,0x90ac
8d88: 48 00 00 72 j 0x8e6c
8d8c: 9c ca addi333 $r3,$r1,#0x2
8d8e: 4c 01 80 87 beq $r0,$r3,0x8e9c
8d92: e2 03 slt45 $r0,$r3
8d94: 4e f3 00 7c bnez $r15,0x8e8c
8d98: 9c 4b addi333 $r1,$r1,#0x3
8d9a: 4c 00 80 8b beq $r0,$r1,0x8eb0
8d9e: 9c 8b addi333 $r2,$r1,#0x3
8da0: 4c 01 41 86 bne $r0,$r2,0x90ac
8da4: 48 00 00 8e j 0x8ec0
8da8: 3e 08 13 28 addi.gp $r0,#0x1328
8dac: a6 40 lbi333 $r1,[$r0+#0x0]
8dae: 58 10 80 01 ori $r1,$r1,#0x1
8db2: ae 40 sbi333 $r1,[$r0+#0x0]
8db4: 48 00 01 7c j 0x90ac
8db8: 3e 08 13 28 addi.gp $r0,#0x1328
8dbc: a6 40 lbi333 $r1,[$r0+#0x0]
8dbe: 58 10 80 02 ori $r1,$r1,#0x2
8dc2: ae 40 sbi333 $r1,[$r0+#0x0]
8dc4: 48 00 01 74 j 0x90ac
8dc8: 3e 08 13 28 addi.gp $r0,#0x1328
8dcc: a6 40 lbi333 $r1,[$r0+#0x0]
8dce: 58 10 80 04 ori $r1,$r1,#0x4
8dd2: ae 40 sbi333 $r1,[$r0+#0x0]
8dd4: 48 00 01 6c j 0x90ac
8dd8: 3e 08 13 28 addi.gp $r0,#0x1328
8ddc: a6 40 lbi333 $r1,[$r0+#0x0]
8dde: 58 10 80 08 ori $r1,$r1,#0x8
8de2: ae 40 sbi333 $r1,[$r0+#0x0]
8de4: 48 00 01 64 j 0x90ac
8de8: 3e 08 13 28 addi.gp $r0,#0x1328
8dec: a6 40 lbi333 $r1,[$r0+#0x0]
8dee: 58 10 80 10 ori $r1,$r1,#0x10
8df2: ae 40 sbi333 $r1,[$r0+#0x0]
8df4: 48 00 01 5c j 0x90ac
8df8: 3e 08 13 28 addi.gp $r0,#0x1328
8dfc: a6 40 lbi333 $r1,[$r0+#0x0]
8dfe: 58 10 80 20 ori $r1,$r1,#0x20
8e02: ae 40 sbi333 $r1,[$r0+#0x0]
8e04: 48 00 01 54 j 0x90ac
8e08: 3e 08 13 28 addi.gp $r0,#0x1328
8e0c: a6 40 lbi333 $r1,[$r0+#0x0]
8e0e: 58 10 80 40 ori $r1,$r1,#0x40
8e12: ae 40 sbi333 $r1,[$r0+#0x0]
8e14: 48 00 01 4c j 0x90ac
8e18: 3e 08 13 28 addi.gp $r0,#0x1328
8e1c: a6 40 lbi333 $r1,[$r0+#0x0]
8e1e: 44 3f ff 80 movi $r3,#-128
8e22: 40 10 8c 04 or $r1,$r1,$r3
8e26: ae 40 sbi333 $r1,[$r0+#0x0]
8e28: 48 00 01 42 j 0x90ac
8e2c: 3e 08 13 29 addi.gp $r0,#0x1329
8e30: a6 40 lbi333 $r1,[$r0+#0x0]
8e32: 58 10 80 01 ori $r1,$r1,#0x1
8e36: ae 40 sbi333 $r1,[$r0+#0x0]
8e38: 48 00 01 3a j 0x90ac
8e3c: 3e 08 13 29 addi.gp $r0,#0x1329
8e40: a6 40 lbi333 $r1,[$r0+#0x0]
8e42: 58 10 80 02 ori $r1,$r1,#0x2
8e46: ae 40 sbi333 $r1,[$r0+#0x0]
8e48: 48 00 01 32 j 0x90ac
8e4c: 3e 08 13 29 addi.gp $r0,#0x1329
8e50: a6 40 lbi333 $r1,[$r0+#0x0]
8e52: 58 10 80 04 ori $r1,$r1,#0x4
8e56: ae 40 sbi333 $r1,[$r0+#0x0]
8e58: 48 00 01 2a j 0x90ac
8e5c: 3e 08 13 29 addi.gp $r0,#0x1329
8e60: a6 40 lbi333 $r1,[$r0+#0x0]
8e62: 58 10 80 08 ori $r1,$r1,#0x8
8e66: ae 40 sbi333 $r1,[$r0+#0x0]
8e68: 48 00 01 22 j 0x90ac
8e6c: 3e 08 13 29 addi.gp $r0,#0x1329
8e70: a6 40 lbi333 $r1,[$r0+#0x0]
8e72: 58 10 80 10 ori $r1,$r1,#0x10
8e76: ae 40 sbi333 $r1,[$r0+#0x0]
8e78: 48 00 01 1a j 0x90ac
8e7c: 3e 08 13 29 addi.gp $r0,#0x1329
8e80: a6 40 lbi333 $r1,[$r0+#0x0]
8e82: 58 10 80 20 ori $r1,$r1,#0x20
8e86: ae 40 sbi333 $r1,[$r0+#0x0]
8e88: 48 00 01 12 j 0x90ac
8e8c: 3e 08 13 29 addi.gp $r0,#0x1329
8e90: a6 40 lbi333 $r1,[$r0+#0x0]
8e92: 58 10 80 40 ori $r1,$r1,#0x40
8e96: ae 40 sbi333 $r1,[$r0+#0x0]
8e98: 48 00 01 0a j 0x90ac
8e9c: 3e 08 13 29 addi.gp $r0,#0x1329
8ea0: a6 40 lbi333 $r1,[$r0+#0x0]
8ea2: 44 2f ff 80 movi $r2,#-128
8ea6: 40 10 88 04 or $r1,$r1,$r2
8eaa: ae 40 sbi333 $r1,[$r0+#0x0]
8eac: 48 00 01 00 j 0x90ac
8eb0: 3e 08 13 2a addi.gp $r0,#0x132a
8eb4: a6 40 lbi333 $r1,[$r0+#0x0]
8eb6: 58 10 80 01 ori $r1,$r1,#0x1
8eba: ae 40 sbi333 $r1,[$r0+#0x0]
8ebc: 48 00 00 f8 j 0x90ac
8ec0: 3e 08 13 2a addi.gp $r0,#0x132a
8ec4: a6 40 lbi333 $r1,[$r0+#0x0]
8ec6: 58 10 80 02 ori $r1,$r1,#0x2
8eca: ae 40 sbi333 $r1,[$r0+#0x0]
8ecc: 48 00 00 f0 j 0x90ac
8ed0: 84 63 movi55 $r3,#0x3
8ed2: 4c 11 c0 ed bne $r1,$r3,0x90ac
8ed6: a6 11 lbi333 $r0,[$r2+#0x1]
8ed8: a6 50 lbi333 $r1,[$r2+#0x0]
8eda: 40 00 20 08 slli $r0,$r0,#0x8
8ede: 40 00 04 04 or $r0,$r0,$r1
8ee2: 44 10 01 8a movi $r1,#0x18a
8ee6: 4c 00 80 5d beq $r0,$r1,0x8fa0
8eea: 5c f0 01 8b slti $r15,$r0,#0x18b
8eee: e8 29 beqzs8 0x8f40
8ef0: 44 20 00 cd movi $r2,#0xcd
8ef4: 4c 01 00 6e beq $r0,$r2,0x8fd0
8ef8: 5c f0 00 ce slti $r15,$r0,#0xce
8efc: e8 0e beqzs8 0x8f18
8efe: 44 30 00 b6 movi $r3,#0xb6
8f02: 4c 01 80 77 beq $r0,$r3,0x8ff0
8f06: 9c 59 addi333 $r1,$r3,#0x1
8f08: 4c 00 80 6c beq $r0,$r1,0x8fe0
8f0c: 50 20 ff fe addi $r2,$r1,#-2
8f10: 4c 01 40 ce bne $r0,$r2,0x90ac
8f14: 48 00 00 76 j 0x9000
8f18: 44 30 00 e9 movi $r3,#0xe9
8f1c: 4c 01 80 8a beq $r0,$r3,0x9030
8f20: 5c f0 00 ea slti $r15,$r0,#0xea
8f24: e8 06 beqzs8 0x8f30
8f26: 9e 5f subi333 $r1,$r3,#0x7
8f28: 4c 00 c0 c2 bne $r0,$r1,0x90ac
8f2c: 48 00 00 72 j 0x9010
8f30: 8c 5d addi45 $r2,#0x1d
8f32: 4c 01 00 77 beq $r0,$r2,0x9020
8f36: 50 30 ff f9 addi $r3,$r1,#-7
8f3a: 4c 01 c0 b9 bne $r0,$r3,0x90ac
8f3e: d5 29 j8 0x8f90
8f40: 44 10 02 24 movi $r1,#0x224
8f44: 4c 00 80 8e beq $r0,$r1,0x9060
8f48: 5c f0 02 25 slti $r15,$r0,#0x225
8f4c: e8 14 beqzs8 0x8f74
8f4e: 44 20 01 94 movi $r2,#0x194
8f52: 4c 01 00 37 beq $r0,$r2,0x8fc0
8f56: 5c f0 01 95 slti $r15,$r0,#0x195
8f5a: e8 05 beqzs8 0x8f64
8f5c: 9e d2 subi333 $r3,$r2,#0x2
8f5e: 4c 01 c0 a7 bne $r0,$r3,0x90ac
8f62: d5 27 j8 0x8fb0
8f64: 9e 4b subi333 $r1,$r1,#0x3
8f66: 4c 00 80 6d beq $r0,$r1,0x9040
8f6a: 9c 8a addi333 $r2,$r1,#0x2
8f6c: 4c 01 40 a0 bne $r0,$r2,0x90ac
8f70: 48 00 00 70 j 0x9050
8f74: 9c ca addi333 $r3,$r1,#0x2
8f76: 4c 01 80 85 beq $r0,$r3,0x9080
8f7a: e2 03 slt45 $r0,$r3
8f7c: 4e f3 00 7a bnez $r15,0x9070
8f80: 9c 4b addi333 $r1,$r1,#0x3
8f82: 4c 00 80 87 beq $r0,$r1,0x9090
8f86: 9c 8b addi333 $r2,$r1,#0x3
8f88: 4c 01 40 92 bne $r0,$r2,0x90ac
8f8c: 48 00 00 8a j 0x90a0
8f90: 3e 08 13 28 addi.gp $r0,#0x1328
8f94: a6 40 lbi333 $r1,[$r0+#0x0]
8f96: 42 10 80 09 bclr $r1,$r1,#0x0
8f9a: ae 40 sbi333 $r1,[$r0+#0x0]
8f9c: 48 00 00 88 j 0x90ac
8fa0: 3e 08 13 28 addi.gp $r0,#0x1328
8fa4: a6 40 lbi333 $r1,[$r0+#0x0]
8fa6: 42 10 84 09 bclr $r1,$r1,#0x1
8faa: ae 40 sbi333 $r1,[$r0+#0x0]
8fac: 48 00 00 80 j 0x90ac
8fb0: 3e 08 13 28 addi.gp $r0,#0x1328
8fb4: a6 40 lbi333 $r1,[$r0+#0x0]
8fb6: 42 10 88 09 bclr $r1,$r1,#0x2
8fba: ae 40 sbi333 $r1,[$r0+#0x0]
8fbc: 48 00 00 78 j 0x90ac
8fc0: 3e 08 13 28 addi.gp $r0,#0x1328
8fc4: a6 40 lbi333 $r1,[$r0+#0x0]
8fc6: 42 10 8c 09 bclr $r1,$r1,#0x3
8fca: ae 40 sbi333 $r1,[$r0+#0x0]
8fcc: 48 00 00 70 j 0x90ac
8fd0: 3e 08 13 28 addi.gp $r0,#0x1328
8fd4: a6 40 lbi333 $r1,[$r0+#0x0]
8fd6: 42 10 90 09 bclr $r1,$r1,#0x4
8fda: ae 40 sbi333 $r1,[$r0+#0x0]
8fdc: 48 00 00 68 j 0x90ac
8fe0: 3e 08 13 28 addi.gp $r0,#0x1328
8fe4: a6 40 lbi333 $r1,[$r0+#0x0]
8fe6: 42 10 94 09 bclr $r1,$r1,#0x5
8fea: ae 40 sbi333 $r1,[$r0+#0x0]
8fec: 48 00 00 60 j 0x90ac
8ff0: 3e 08 13 28 addi.gp $r0,#0x1328
8ff4: a6 40 lbi333 $r1,[$r0+#0x0]
8ff6: 42 10 98 09 bclr $r1,$r1,#0x6
8ffa: ae 40 sbi333 $r1,[$r0+#0x0]
8ffc: 48 00 00 58 j 0x90ac
9000: 3e 08 13 28 addi.gp $r0,#0x1328
9004: a6 40 lbi333 $r1,[$r0+#0x0]
9006: 54 10 80 7f andi $r1,$r1,#0x7f
900a: ae 40 sbi333 $r1,[$r0+#0x0]
900c: 48 00 00 50 j 0x90ac
9010: 3e 08 13 29 addi.gp $r0,#0x1329
9014: a6 40 lbi333 $r1,[$r0+#0x0]
9016: 42 10 80 09 bclr $r1,$r1,#0x0
901a: ae 40 sbi333 $r1,[$r0+#0x0]
901c: 48 00 00 48 j 0x90ac
9020: 3e 08 13 29 addi.gp $r0,#0x1329
9024: a6 40 lbi333 $r1,[$r0+#0x0]
9026: 42 10 84 09 bclr $r1,$r1,#0x1
902a: ae 40 sbi333 $r1,[$r0+#0x0]
902c: 48 00 00 40 j 0x90ac
9030: 3e 08 13 29 addi.gp $r0,#0x1329
9034: a6 40 lbi333 $r1,[$r0+#0x0]
9036: 42 10 88 09 bclr $r1,$r1,#0x2
903a: ae 40 sbi333 $r1,[$r0+#0x0]
903c: 48 00 00 38 j 0x90ac
9040: 3e 08 13 29 addi.gp $r0,#0x1329
9044: a6 40 lbi333 $r1,[$r0+#0x0]
9046: 42 10 8c 09 bclr $r1,$r1,#0x3
904a: ae 40 sbi333 $r1,[$r0+#0x0]
904c: 48 00 00 30 j 0x90ac
9050: 3e 08 13 29 addi.gp $r0,#0x1329
9054: a6 40 lbi333 $r1,[$r0+#0x0]
9056: 42 10 90 09 bclr $r1,$r1,#0x4
905a: ae 40 sbi333 $r1,[$r0+#0x0]
905c: 48 00 00 28 j 0x90ac
9060: 3e 08 13 29 addi.gp $r0,#0x1329
9064: a6 40 lbi333 $r1,[$r0+#0x0]
9066: 42 10 94 09 bclr $r1,$r1,#0x5
906a: ae 40 sbi333 $r1,[$r0+#0x0]
906c: 48 00 00 20 j 0x90ac
9070: 3e 08 13 29 addi.gp $r0,#0x1329
9074: a6 40 lbi333 $r1,[$r0+#0x0]
9076: 42 10 98 09 bclr $r1,$r1,#0x6
907a: ae 40 sbi333 $r1,[$r0+#0x0]
907c: 48 00 00 18 j 0x90ac
9080: 3e 08 13 29 addi.gp $r0,#0x1329
9084: a6 40 lbi333 $r1,[$r0+#0x0]
9086: 54 10 80 7f andi $r1,$r1,#0x7f
908a: ae 40 sbi333 $r1,[$r0+#0x0]
908c: 48 00 00 10 j 0x90ac
9090: 3e 08 13 2a addi.gp $r0,#0x132a
9094: a6 40 lbi333 $r1,[$r0+#0x0]
9096: 42 10 80 09 bclr $r1,$r1,#0x0
909a: ae 40 sbi333 $r1,[$r0+#0x0]
909c: 48 00 00 08 j 0x90ac
90a0: 3e 08 13 2a addi.gp $r0,#0x132a
90a4: a6 40 lbi333 $r1,[$r0+#0x0]
90a6: 42 10 84 09 bclr $r1,$r1,#0x1
90aa: ae 40 sbi333 $r1,[$r0+#0x0]
90ac: ec 08 addi10.sp #0x8
90ae: dd 9e ret5 $lp
90b0: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
90b4: ef e4 addi10.sp #-28
90b6: 50 3f 80 04 addi $r3,$sp,#0x4
90ba: b6 03 swi450 $r0,[$r3]
90bc: 84 03 movi55 $r0,#0x3
90be: a6 9a lbi333 $r2,[$r3+#0x2]
90c0: 80 c1 mov55 $r6,$r1
90c2: 4c 20 01 8b beq $r2,$r0,0x93d8
90c6: e6 44 slti45 $r2,#0x4
90c8: e8 09 beqzs8 0x90da
90ca: 84 01 movi55 $r0,#0x1
90cc: 4c 20 00 12 beq $r2,$r0,0x90f0
90d0: 84 22 movi55 $r1,#0x2
90d2: 4c 20 c2 27 bne $r2,$r1,0x9520
90d6: 48 00 01 2f j 0x9334
90da: 84 05 movi55 $r0,#0x5
90dc: 4c 20 01 b0 beq $r2,$r0,0x943c
90e0: e2 40 slt45 $r2,$r0
90e2: 4e f3 01 95 bnez $r15,0x940c
90e6: 84 26 movi55 $r1,#0x6
90e8: 4c 20 c2 1c bne $r2,$r1,0x9520
90ec: 48 00 01 05 j 0x92f6
90f0: 84 42 movi55 $r2,#0x2
90f2: 4c 11 40 25 bne $r1,$r2,0x913c
90f6: a6 18 lbi333 $r0,[$r3+#0x0]
90f8: 44 30 00 11 movi $r3,#0x11
90fc: 4c 01 c2 12 bne $r0,$r3,0x9520
9100: 46 00 01 00 sethi $r0,#0x100
9104: 2e 10 00 0e lbi.gp $r1,[+#0xe]
9108: 4e 12 02 0c beqz $r1,0x9520
910c: 3c 2d ff e5 lwi.gp $r2,[+#-108]
9110: 3c 1c 00 0c lwi.gp $r1,[+#0x30]
9114: 9a 51 sub333 $r1,$r2,$r1
9116: e6 23 slti45 $r1,#0x3
9118: 4e f3 02 04 bnez $r15,0x9520
911c: 2e 30 00 04 lbi.gp $r3,[+#0x4]
9120: 84 20 movi55 $r1,#0x0
9122: 5c 31 80 01 slti $r3,$r3,#0x1
9126: 3e 30 00 04 sbi.gp $r3,[+#0x4]
912a: 84 67 movi55 $r3,#0x7
912c: 3e 30 00 05 sbi.gp $r3,[+#0x5]
9130: 3e 10 00 06 sbi.gp $r1,[+#0x6]
9134: 3e 10 00 0e sbi.gp $r1,[+#0xe]
9138: 48 00 01 f4 j 0x9520
913c: 84 01 movi55 $r0,#0x1
913e: 4c 10 41 f1 bne $r1,$r0,0x9520
9142: a6 18 lbi333 $r0,[$r3+#0x0]
9144: 8c 4e addi45 $r2,#0xe
9146: 4c 01 00 67 beq $r0,$r2,0x9214
914a: 9c d1 addi333 $r3,$r2,#0x1
914c: 4c 01 80 07 beq $r0,$r3,0x915a
9150: 84 2a movi55 $r1,#0xa
9152: 4c 00 c1 e7 bne $r0,$r1,0x9520
9156: 48 00 00 b1 j 0x92b8
915a: 84 40 movi55 $r2,#0x0
915c: 3e 20 00 0f sbi.gp $r2,[+#0xf]
9160: 3c 2d ff e5 lwi.gp $r2,[+#-108]
9164: 2e 00 00 04 lbi.gp $r0,[+#0x4]
9168: 3c 2e 00 0c swi.gp $r2,[+#0x30]
916c: 3e 60 00 0e sbi.gp $r6,[+#0xe]
9170: c0 24 beqz38 $r0,0x91b8
9172: 46 10 01 00 sethi $r1,#0x100
9176: 2e 00 00 05 lbi.gp $r0,[+#0x5]
917a: 84 47 movi55 $r2,#0x7
917c: 4c 01 40 06 bne $r0,$r2,0x9188
9180: 3e 60 00 05 sbi.gp $r6,[+#0x5]
9184: 48 00 01 ce j 0x9520
9188: 84 61 movi55 $r3,#0x1
918a: 4c 01 c0 07 bne $r0,$r3,0x9198
918e: 84 02 movi55 $r0,#0x2
9190: 3e 00 00 05 sbi.gp $r0,[+#0x5]
9194: 48 00 01 c6 j 0x9520
9198: 84 42 movi55 $r2,#0x2
919a: 4c 01 40 07 bne $r0,$r2,0x91a8
919e: 84 04 movi55 $r0,#0x4
91a0: 3e 00 00 05 sbi.gp $r0,[+#0x5]
91a4: 48 00 01 be j 0x9520
91a8: 84 64 movi55 $r3,#0x4
91aa: 4c 01 c1 bb bne $r0,$r3,0x9520
91ae: 84 07 movi55 $r0,#0x7
91b0: 3e 00 00 05 sbi.gp $r0,[+#0x5]
91b4: 48 00 01 b6 j 0x9520
91b8: 2e 07 ff ea lbi.gp $r0,[+#-22]
91bc: 84 21 movi55 $r1,#0x1
91be: 4c 00 c1 b1 bne $r0,$r1,0x9520
91c2: 3e 8f fe 78 addi.gp $r8,#-392
91c6: 00 04 00 00 lbi $r0,[$r8+#0x0]
91ca: 84 47 movi55 $r2,#0x7
91cc: 4c 01 40 04 bne $r0,$r2,0x91d4
91d0: 80 01 mov55 $r0,$r1
91d2: d5 0d j8 0x91ec
91d4: 84 68 movi55 $r3,#0x8
91d6: 4c 01 c0 04 bne $r0,$r3,0x91de
91da: 84 02 movi55 $r0,#0x2
91dc: d5 08 j8 0x91ec
91de: 84 25 movi55 $r1,#0x5
91e0: 4c 00 80 04 beq $r0,$r1,0x91e8
91e4: 84 00 movi55 $r0,#0x0
91e6: d5 03 j8 0x91ec
91e8: 44 00 00 03 movi $r0,#0x3
91ec: 44 10 db a0 movi $r1,#0xdba0
91f0: 38 20 80 00 lb $r2,[$r1+($r0<<#0x0)]
91f4: 84 c1 movi55 $r6,#0x1
91f6: 80 02 mov55 $r0,$r2
91f8: 10 24 00 00 sbi $r2,[$r8+#0x0]
91fc: 44 10 00 01 movi $r1,#0x1
9200: 3e 67 fe 79 sbi.gp $r6,[+#-391]
9204: 49 ff d3 de jal 0x39c0
9208: 46 00 01 00 sethi $r0,#0x100
920c: 3e 67 ff de sbi.gp $r6,[+#-34]
9210: 48 00 01 88 j 0x9520
9214: 2e 27 ff ea lbi.gp $r2,[+#-22]
9218: 84 61 movi55 $r3,#0x1
921a: 4c 21 c1 83 bne $r2,$r3,0x9520
921e: 3e 8f fe 78 addi.gp $r8,#-392
9222: 00 04 00 00 lbi $r0,[$r8+#0x0]
9226: 44 30 00 f1 movi $r3,#0xf1
922a: 4c 01 80 13 beq $r0,$r3,0x9250
922e: 3e 3f ff 3d addi.gp $r3,#-195
9232: 18 21 ff fe sbi.bi $r2,[$r3],#-2
9236: 84 11 movi55 $r0,#-15
9238: 84 80 movi55 $r4,#0x0
923a: 18 04 00 01 sbi.bi $r0,[$r8],#0x1
923e: af 18 sbi333 $r4,[$r3+#0x0]
9240: 44 00 00 f1 movi $r0,#0xf1
9244: 10 24 00 00 sbi $r2,[$r8+#0x0]
9248: 49 ff d3 bc jal 0x39c0
924c: 48 00 00 4e j 0x92e8
9250: 3e 1f ff 3b addi.gp $r1,#-197
9254: a7 c8 lbi333 $r7,[$r1+#0x0]
9256: 9d f9 addi333 $r7,$r7,#0x1
9258: 97 f8 zeb33 $r7,$r7
925a: 5c f3 80 20 slti $r15,$r7,#0x20
925e: 4e f2 01 5c beqz $r15,0x9516
9262: 80 02 mov55 $r0,$r2
9264: 50 6f 80 08 addi $r6,$sp,#0x8
9268: 45 c0 39 80 movi $fp,#0x3980
926c: 80 26 mov55 $r1,$r6
926e: 94 fc slli333 $r3,$r7,#0x4
9270: 44 20 00 10 movi $r2,#0x10
9274: 4b e0 70 01 jral $lp,$fp
9278: 44 10 00 10 movi $r1,#0x10
927c: 80 06 mov55 $r0,$r6
927e: 49 ff bd e5 jal 0xe48
9282: 9c 79 addi333 $r1,$r7,#0x1
9284: c8 0e bnez38 $r0,0x92a0
9286: 54 70 80 ff andi $r7,$r1,#0xff
928a: 5c f3 80 20 slti $r15,$r7,#0x20
928e: e9 05 bnezs8 0x9298
9290: 00 04 00 00 lbi $r0,[$r8+#0x0]
9294: 48 00 01 41 j 0x9516
9298: 2e 07 ff ea lbi.gp $r0,[+#-22]
929c: 48 ff ff e8 j 0x926c
92a0: 3e 77 ff 3b sbi.gp $r7,[+#-197]
92a4: 00 04 00 00 lbi $r0,[$r8+#0x0]
92a8: 84 61 movi55 $r3,#0x1
92aa: 84 21 movi55 $r1,#0x1
92ac: 3e 37 ff 3d sbi.gp $r3,[+#-195]
92b0: 49 ff d3 88 jal 0x39c0
92b4: 48 00 00 1a j 0x92e8
92b8: 3e 8f fe 78 addi.gp $r8,#-392
92bc: 00 04 00 00 lbi $r0,[$r8+#0x0]
92c0: 84 69 movi55 $r3,#0x9
92c2: 4c 01 c0 13 bne $r0,$r3,0x92e8
92c6: 50 04 00 01 addi $r0,$r8,#0x1
92ca: a6 40 lbi333 $r1,[$r0+#0x0]
92cc: 84 41 movi55 $r2,#0x1
92ce: 4c 11 40 06 bne $r1,$r2,0x92da
92d2: 84 22 movi55 $r1,#0x2
92d4: ae 40 sbi333 $r1,[$r0+#0x0]
92d6: 84 22 movi55 $r1,#0x2
92d8: d5 04 j8 0x92e0
92da: 84 21 movi55 $r1,#0x1
92dc: ae 40 sbi333 $r1,[$r0+#0x0]
92de: 84 21 movi55 $r1,#0x1
92e0: 00 04 00 00 lbi $r0,[$r8+#0x0]
92e4: 49 ff d3 6e jal 0x39c0
92e8: 46 00 01 00 sethi $r0,#0x100
92ec: 84 21 movi55 $r1,#0x1
92ee: 3e 17 ff de sbi.gp $r1,[+#-34]
92f2: 48 00 01 17 j 0x9520
92f6: 84 01 movi55 $r0,#0x1
92f8: 4c 60 41 14 bne $r6,$r0,0x9520
92fc: a6 18 lbi333 $r0,[$r3+#0x0]
92fe: 4c 03 00 07 beq $r0,$r6,0x930c
9302: 84 22 movi55 $r1,#0x2
9304: 4c 00 c1 0e bne $r0,$r1,0x9520
9308: 48 00 00 0a j 0x931c
930c: 44 00 00 40 movi $r0,#0x40
9310: 44 10 00 00 movi $r1,#0x0
9314: 49 ff cf bc jal 0x328c
9318: 48 00 01 04 j 0x9520
931c: 2e 17 ff e3 lbi.gp $r1,[+#-29]
9320: 5c 10 80 01 slti $r1,$r1,#0x1
9324: 3e 17 ff e3 sbi.gp $r1,[+#-29]
9328: 46 00 01 00 sethi $r0,#0x100
932c: 3e 67 ff e8 sbi.gp $r6,[+#-24]
9330: 48 00 00 f8 j 0x9520
9334: a6 18 lbi333 $r0,[$r3+#0x0]
9336: 84 41 movi55 $r2,#0x1
9338: 4c 01 00 06 beq $r0,$r2,0x9344
933c: 84 62 movi55 $r3,#0x2
933e: 4c 01 c0 f1 bne $r0,$r3,0x9520
9342: d5 25 j8 0x938c
9344: 4c 60 40 0c bne $r6,$r0,0x935c
9348: 49 ff d7 22 jal 0x418c
934c: 3c 0f ff f3 swi.gp $r0,[+#-52]
9350: 84 20 movi55 $r1,#0x0
9352: 84 04 movi55 $r0,#0x4
9354: 49 ff cf 9c jal 0x328c
9358: 48 00 00 e4 j 0x9520
935c: 44 00 00 02 movi $r0,#0x2
9360: 4c 60 40 e0 bne $r6,$r0,0x9520
9364: 3c 0d ff f3 lwi.gp $r0,[+#-52]
9368: 49 ff d7 2c jal 0x41c0
936c: 44 12 49 f0 movi $r1,#0x249f0
9370: 40 f0 80 06 slt $r15,$r1,$r0
9374: 4e f2 00 d6 beqz $r15,0x9520
9378: 49 ff d7 0a jal 0x418c
937c: 3c 0f ff f3 swi.gp $r0,[+#-52]
9380: 84 20 movi55 $r1,#0x0
9382: 84 04 movi55 $r0,#0x4
9384: 49 ff cf 84 jal 0x328c
9388: 48 00 00 cc j 0x9520
938c: 44 10 00 01 movi $r1,#0x1
9390: 4c 60 c0 0c bne $r6,$r1,0x93a8
9394: 49 ff d6 fc jal 0x418c
9398: 3c 0f ff f3 swi.gp $r0,[+#-52]
939c: 84 20 movi55 $r1,#0x0
939e: 84 08 movi55 $r0,#0x8
93a0: 49 ff cf 76 jal 0x328c
93a4: 48 00 00 be j 0x9520
93a8: 44 20 00 02 movi $r2,#0x2
93ac: 4c 61 40 ba bne $r6,$r2,0x9520
93b0: 3c 0d ff f3 lwi.gp $r0,[+#-52]
93b4: 49 ff d7 06 jal 0x41c0
93b8: 44 12 49 f0 movi $r1,#0x249f0
93bc: 40 f0 80 06 slt $r15,$r1,$r0
93c0: 4e f2 00 b0 beqz $r15,0x9520
93c4: 49 ff d6 e4 jal 0x418c
93c8: 3c 0f ff f3 swi.gp $r0,[+#-52]
93cc: 84 20 movi55 $r1,#0x0
93ce: 84 08 movi55 $r0,#0x8
93d0: 49 ff cf 5e jal 0x328c
93d4: 48 00 00 a6 j 0x9520
93d8: a6 18 lbi333 $r0,[$r3+#0x0]
93da: 84 61 movi55 $r3,#0x1
93dc: 4c 01 80 06 beq $r0,$r3,0x93e8
93e0: 84 22 movi55 $r1,#0x2
93e2: 4c 00 c0 9f bne $r0,$r1,0x9520
93e6: d5 09 j8 0x93f8
93e8: 4c 10 40 9c bne $r1,$r0,0x9520
93ec: 94 1c slli333 $r0,$r3,#0x4
93ee: 84 20 movi55 $r1,#0x0
93f0: 49 ff cf 4e jal 0x328c
93f4: 48 00 00 96 j 0x9520
93f8: 84 41 movi55 $r2,#0x1
93fa: 4c 61 40 93 bne $r6,$r2,0x9520
93fe: 94 0c slli333 $r0,$r1,#0x4
9400: 44 10 00 00 movi $r1,#0x0
9404: 49 ff cf 44 jal 0x328c
9408: 48 00 00 8c j 0x9520
940c: a6 18 lbi333 $r0,[$r3+#0x0]
940e: 84 61 movi55 $r3,#0x1
9410: 4c 01 80 06 beq $r0,$r3,0x941c
9414: 84 22 movi55 $r1,#0x2
9416: 4c 00 c0 85 bne $r0,$r1,0x9520
941a: d5 09 j8 0x942c
941c: 4c 10 40 82 bne $r1,$r0,0x9520
9420: 80 01 mov55 $r0,$r1
9422: 84 20 movi55 $r1,#0x0
9424: 49 ff cf 34 jal 0x328c
9428: 48 00 00 7c j 0x9520
942c: 84 41 movi55 $r2,#0x1
942e: 4c 61 40 79 bne $r6,$r2,0x9520
9432: 84 20 movi55 $r1,#0x0
9434: 49 ff cf 2c jal 0x328c
9438: 48 00 00 74 j 0x9520
943c: a7 d8 lbi333 $r7,[$r3+#0x0]
943e: 84 62 movi55 $r3,#0x2
9440: 4c 71 80 2a beq $r7,$r3,0x9494
9444: 84 03 movi55 $r0,#0x3
9446: 4c 70 00 48 beq $r7,$r0,0x94d6
944a: 84 21 movi55 $r1,#0x1
944c: 4c 70 c0 6a bne $r7,$r1,0x9520
9450: 4c 63 c0 0c bne $r6,$r7,0x9468
9454: 49 ff d6 9c jal 0x418c
9458: 3c 0f ff f4 swi.gp $r0,[+#-48]
945c: 80 26 mov55 $r1,$r6
945e: 84 00 movi55 $r0,#0x0
9460: 49 ff cf 16 jal 0x328c
9464: 48 00 00 5e j 0x9520
9468: 44 20 00 02 movi $r2,#0x2
946c: 4c 61 40 5a bne $r6,$r2,0x9520
9470: 3c 0d ff f4 lwi.gp $r0,[+#-48]
9474: 49 ff d6 a6 jal 0x41c0
9478: 44 10 75 30 movi $r1,#0x7530
947c: e2 20 slt45 $r1,$r0
947e: e8 51 beqzs8 0x9520
9480: 49 ff d6 86 jal 0x418c
9484: 3c 0f ff f4 swi.gp $r0,[+#-48]
9488: 80 27 mov55 $r1,$r7
948a: 84 00 movi55 $r0,#0x0
948c: 49 ff cf 00 jal 0x328c
9490: 48 00 00 48 j 0x9520
9494: 44 30 00 01 movi $r3,#0x1
9498: 4c 11 c0 0b bne $r1,$r3,0x94ae
949c: 49 ff d6 78 jal 0x418c
94a0: 3c 0f ff f4 swi.gp $r0,[+#-48]
94a4: 80 27 mov55 $r1,$r7
94a6: 84 00 movi55 $r0,#0x0
94a8: 49 ff ce f2 jal 0x328c
94ac: d5 3a j8 0x9520
94ae: 84 02 movi55 $r0,#0x2
94b0: 4c 10 40 38 bne $r1,$r0,0x9520
94b4: 3c 0d ff f4 lwi.gp $r0,[+#-48]
94b8: 49 ff d6 84 jal 0x41c0
94bc: 44 10 75 30 movi $r1,#0x7530
94c0: e2 20 slt45 $r1,$r0
94c2: e8 2f beqzs8 0x9520
94c4: 49 ff d6 64 jal 0x418c
94c8: 3c 0f ff f4 swi.gp $r0,[+#-48]
94cc: 80 26 mov55 $r1,$r6
94ce: 84 00 movi55 $r0,#0x0
94d0: 49 ff ce de jal 0x328c
94d4: d5 26 j8 0x9520
94d6: 84 21 movi55 $r1,#0x1
94d8: 4c 60 c0 0b bne $r6,$r1,0x94ee
94dc: 49 ff d6 58 jal 0x418c
94e0: 3c 0f ff f4 swi.gp $r0,[+#-48]
94e4: 84 24 movi55 $r1,#0x4
94e6: 84 00 movi55 $r0,#0x0
94e8: 49 ff ce d2 jal 0x328c
94ec: d5 1a j8 0x9520
94ee: 84 42 movi55 $r2,#0x2
94f0: 4c 61 40 18 bne $r6,$r2,0x9520
94f4: 3c 0d ff f4 lwi.gp $r0,[+#-48]
94f8: 49 ff d6 64 jal 0x41c0
94fc: 44 10 75 30 movi $r1,#0x7530
9500: e2 20 slt45 $r1,$r0
9502: e8 0f beqzs8 0x9520
9504: 49 ff d6 44 jal 0x418c
9508: 3c 0f ff f4 swi.gp $r0,[+#-48]
950c: 84 24 movi55 $r1,#0x4
950e: 84 00 movi55 $r0,#0x0
9510: 49 ff ce be jal 0x328c
9514: d5 06 j8 0x9520
9516: 84 20 movi55 $r1,#0x0
9518: 3e 17 ff 3b sbi.gp $r1,[+#-197]
951c: 48 ff fe c6 j 0x92a8
9520: ec 1c addi10.sp #0x1c
9522: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
9526: dd 9e ret5 $lp
9528: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
952c: 96 80 zeb33 $r2,$r0
952e: 44 00 00 ff movi $r0,#0xff
9532: 80 61 mov55 $r3,$r1
9534: 4c 20 00 40 beq $r2,$r0,0x95b4
9538: 46 f0 01 00 sethi $r15,#0x100
953c: 2e 07 ff ea lbi.gp $r0,[+#-22]
9540: 84 85 movi55 $r4,#0x5
9542: 4c 02 40 2a bne $r0,$r4,0x9596
9546: 84 01 movi55 $r0,#0x1
9548: 4c 10 40 0e bne $r1,$r0,0x9564
954c: 3e 68 08 f0 addi.gp $r6,#0x8f0
9550: 80 26 mov55 $r1,$r6
9552: 8c 17 addi45 $r0,#0x17
9554: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
9558: 84 84 movi55 $r4,#0x4
955a: 80 06 mov55 $r0,$r6
955c: af 08 sbi333 $r4,[$r1+#0x0]
955e: ae b2 sbi333 $r2,[$r6+#0x2]
9560: ae f3 sbi333 $r3,[$r6+#0x3]
9562: d5 11 j8 0x9584
9564: 84 83 movi55 $r4,#0x3
9566: 4c 12 40 27 bne $r1,$r4,0x95b4
956a: 3e 68 08 f0 addi.gp $r6,#0x8f0
956e: 80 26 mov55 $r1,$r6
9570: 8c 17 addi45 $r0,#0x17
9572: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
9576: 98 f4 add333 $r3,$r6,$r4
9578: 84 84 movi55 $r4,#0x4
957a: af 08 sbi333 $r4,[$r1+#0x0]
957c: 84 20 movi55 $r1,#0x0
957e: ae 58 sbi333 $r1,[$r3+#0x0]
9580: ae b2 sbi333 $r2,[$r6+#0x2]
9582: 80 06 mov55 $r0,$r6
9584: 49 ff e6 84 jal 0x628c ; add_packet_crc(pkt=$r0)
9588: 80 26 mov55 $r1,$r6
958a: 3e 08 09 c0 addi.gp $r0,#0x9c0
958e: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
9592: 48 ff b7 d3 j 0x538
9596: 84 01 movi55 $r0,#0x1
9598: 4c 10 40 0e bne $r1,$r0,0x95b4
959c: 3e 3f ff 3d addi.gp $r3,#-195
95a0: 84 00 movi55 $r0,#0x0
95a2: 18 01 ff fe sbi.bi $r0,[$r3],#-2
95a6: 44 00 00 f1 movi $r0,#0xf1
95aa: ae 98 sbi333 $r2,[$r3+#0x0]
95ac: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
95b0: 48 ff d2 08 j 0x39c0
95b4: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
95b8: dd 9e ret5 $lp
95ba: 92 00 nop16
; ----------- 0x95bc: ???
95bc: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
95c0: 2e 00 00 00 lbi.gp $r0,[+#0x0]
95c4: c8 1e bnez38 $r0,0x9600
95c6: 3e 68 08 f0 addi.gp $r6,#0x8f0 ; $r6 = $gp+0x8f0
95ca: 80 86 mov55 $r4,$r6 ; $r4 = $r6
95cc: 44 00 00 15 movi $r0,#0x15 ; $r0 = 0x15
95d0: 18 02 00 01 sbi.bi $r0,[$r4],#0x1 ;
95d4: 84 a1 movi55 $r5,#0x1
95d6: 3e 50 00 00 sbi.gp $r5,[+#0x0]
95da: 84 64 movi55 $r3,#0x4
95dc: ae e0 sbi333 $r3,[$r4+#0x0]
95de: 3e 18 10 a0 addi.gp $r1,#0x10a0 ; memcpy src = $gp+0x10a0
95e2: 84 4f movi55 $r2,#0xf ; memcpy n = 15
95e4: 50 03 00 08 addi $r0,$r6,#0x8 ; memcpy dest = $r6 + 8
95e8: 49 00 05 5e jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
95ec: 80 06 mov55 $r0,$r6
95ee: 49 ff e6 4f jal 0x628c ; add_packet_crc(pkt=$r0)
95f2: 80 26 mov55 $r1,$r6
95f4: 3e 08 09 c0 addi.gp $r0,#0x9c0
95f8: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
95fc: 48 ff b7 9e j 0x538
9600: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
9604: dd 9e ret5 $lp
9606: 92 00 nop16
9608: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
960c: 3e 68 07 60 addi.gp $r6,#0x760
9610: 50 03 00 00 addi $r0,$r6,#0x0
9614: 44 10 ce 68 movi $r1,#0xce68
9618: 44 20 01 08 movi $r2,#0x108
961c: 49 00 05 44 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
9620: 46 00 01 00 sethi $r0,#0x100
9624: 3c 6e 00 07 swi.gp $r6,[+#0x1c]
9628: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
962c: dd 9e ret5 $lp
962e: 92 00 nop16
; ----------- 0x9630: copy_d730_d9c0_and_memset_heap()
9630: 3a 6f 9c bc smw.adm $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
9634: ef fc addi10.sp #-4 ; move $sp up 4
9636: 44 70 01 e0 movi $r7,#0x1e0 ; $r7 = 0x1e0
963a: 80 47 mov55 $r2,$r7 ; memcpy size: 0x1e0
963c: 44 10 d7 e0 movi $r1,#0xd7e0 ; memcpy src: 0xd730
9640: 3e 08 13 4c addi.gp $r0,#0x134c ; memcpy dest: $gp+0x134c (???)
9644: 49 00 05 30 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
9648: 50 23 80 00 addi $r2,$r7,#0x0 ; memcpy size: 0x1e0
964c: 44 10 d9 c0 movi $r1,#0xd9c0 ; memcpy src: 0xd9c0
9650: 3e 08 11 48 addi.gp $r0,#0x1148 ; memcpy dest: $gp+0x1148 (???)
9654: 49 00 05 28 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
9658: 3e 08 10 d0 addi.gp $r0,#0x10d0 ; memset dest: $gp+0x10d0
965c: 44 10 00 ff movi $r1,#0xff ; memset byte: 0xff
9660: 44 20 00 78 movi $r2,#0x78 ; memset count: 0x78
9664: ec 04 addi10.sp #0x4 ; move $sp down 4
9666: 3a 6f 9c 84 lmw.bim $r6,[$sp],$r7,#0x2 ! {$r6~$r7, $lp}
966a: 48 00 05 27 j 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2); return
966e: 92 00 nop16
; ----------- 0x9670: long_ass_func_9670($r0, $r1)
9670: 3a 6f a8 bc smw.adm $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
9674: ef f8 addi10.sp #-8
9676: 50 7f 80 04 addi $r7,$sp,#0x4
967a: b6 07 swi450 $r0,[$r7]
967c: 84 63 movi55 $r3,#0x3
967e: a6 ba lbi333 $r2,[$r7+#0x2]
9680: 80 c1 mov55 $r6,$r1
9682: 4c 21 80 a5 beq $r2,$r3,0x97cc
9686: e6 44 slti45 $r2,#0x4
9688: e8 08 beqzs8 0x9698
968a: 84 81 movi55 $r4,#0x1
968c: 4c 22 00 76 beq $r2,$r4,0x9778
9690: 84 02 movi55 $r0,#0x2
9692: 4c 20 41 73 bne $r2,$r0,0x9978
9696: d5 09 j8 0x96a8
9698: 84 26 movi55 $r1,#0x6
969a: 4c 20 80 c7 beq $r2,$r1,0x9828
969e: 84 67 movi55 $r3,#0x7
96a0: 4c 21 c1 6c bne $r2,$r3,0x9978
96a4: 48 00 00 f4 j 0x988c
96a8: a6 38 lbi333 $r0,[$r7+#0x0]
96aa: 84 83 movi55 $r4,#0x3
96ac: 4c 02 00 2a beq $r0,$r4,0x9700
96b0: 84 26 movi55 $r1,#0x6
96b2: 4c 00 80 56 beq $r0,$r1,0x975e
96b6: 84 42 movi55 $r2,#0x2
96b8: 4c 01 41 60 bne $r0,$r2,0x9978
96bc: 84 61 movi55 $r3,#0x1
96be: 4c 61 c1 5d bne $r6,$r3,0x9978
96c2: 2e 07 ff ff lbi.gp $r0,[+#-1]
96c6: 40 20 0c 06 slt $r2,$r0,$r3
96ca: 3e 27 ff ff sbi.gp $r2,[+#-1]
96ce: c8 09 bnez38 $r0,0x96e0
96d0: 84 3f movi55 $r1,#-1
96d2: 3e 08 08 3e addi.gp $r0,#0x83e
96d6: 18 10 00 01 sbi.bi $r1,[$r0],#0x1
96da: ae 40 sbi333 $r1,[$r0+#0x0]
96dc: 48 00 01 4e j 0x9978
96e0: 44 10 cf 46 movi $r1,#0xcf46
96e4: 08 40 80 01 lbi.bi $r4,[$r1],#0x1
96e8: 3e 08 08 3e addi.gp $r0,#0x83e
96ec: 18 40 00 01 sbi.bi $r4,[$r0],#0x1
96f0: a6 48 lbi333 $r1,[$r1+#0x0]
96f2: ae 40 sbi333 $r1,[$r0+#0x0]
96f4: 46 00 01 00 sethi $r0,#0x100
96f8: 3e 67 ff e8 sbi.gp $r6,[+#-24]
96fc: 48 00 01 3e j 0x9978
9700: 84 01 movi55 $r0,#0x1
9702: 4c 10 40 0c bne $r1,$r0,0x971a
9706: 3e 17 ff fd sbi.gp $r1,[+#-3]
970a: 3c 1d ff e5 lwi.gp $r1,[+#-108]
970e: 46 00 01 00 sethi $r0,#0x100
9712: 3c 1f ff f2 swi.gp $r1,[+#-56]
9716: 48 00 01 31 j 0x9978
971a: 84 22 movi55 $r1,#0x2
971c: 4c 60 c1 2e bne $r6,$r1,0x9978
9720: 46 00 01 00 sethi $r0,#0x100
9724: 2e 17 ff fd lbi.gp $r1,[+#-3]
9728: 4e 12 01 28 beqz $r1,0x9978
972c: 3c 2d ff e5 lwi.gp $r2,[+#-108]
9730: 3c 1d ff f2 lwi.gp $r1,[+#-56]
9734: 9a 51 sub333 $r1,$r2,$r1
9736: e6 22 slti45 $r1,#0x2
9738: 4e f3 01 20 bnez $r15,0x9978
973c: 44 10 00 00 movi $r1,#0x0
9740: 3e 17 ff fd sbi.gp $r1,[+#-3]
9744: 49 ff bf e6 jal 0x1710
9748: 49 ff ff 74 jal 0x9630 ; copy_d730_d9c0_and_memset_heap()
974c: 49 ff d2 60 jal 0x3c0c
9750: 84 00 movi55 $r0,#0x0
9752: 80 20 mov55 $r1,$r0
9754: ec 08 addi10.sp #0x8
9756: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
975a: 48 ff d1 33 j 0x39c0
975e: 84 41 movi55 $r2,#0x1
9760: 4c 61 41 0c bne $r6,$r2,0x9978
9764: 46 00 01 00 sethi $r0,#0x100
9768: 2e 10 00 03 lbi.gp $r1,[+#0x3]
976c: 40 10 88 06 slt $r1,$r1,$r2
9770: 3e 10 00 03 sbi.gp $r1,[+#0x3]
9774: 48 00 01 02 j 0x9978 ; goto OUT_9978
9778: 46 f0 01 00 sethi $r15,#0x100
977c: 2e 37 ff ea lbi.gp $r3,[+#-22]
9780: 84 85 movi55 $r4,#0x5
9782: 4c 32 40 20 bne $r3,$r4,0x97c2
9786: 84 01 movi55 $r0,#0x1
9788: 4c 10 40 0b bne $r1,$r0,0x979e
978c: 3e 88 08 f0 addi.gp $r8,#0x8f0
9790: 80 28 mov55 $r1,$r8
9792: 8c 17 addi45 $r0,#0x17
9794: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
9798: 80 08 mov55 $r0,$r8
979a: af 88 sbi333 $r6,[$r1+#0x0]
979c: d5 24 j8 0x97e4
979e: 84 23 movi55 $r1,#0x3
97a0: 4c 60 c0 ec bne $r6,$r1,0x9978
97a4: 3e 68 08 f0 addi.gp $r6,#0x8f0
97a8: 80 26 mov55 $r1,$r6
97aa: 8c 17 addi45 $r0,#0x17
97ac: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
97b0: a7 f8 lbi333 $r7,[$r7+#0x0]
97b2: 9c f3 addi333 $r3,$r6,#0x3
97b4: ae 88 sbi333 $r2,[$r1+#0x0]
97b6: 84 20 movi55 $r1,#0x0
97b8: 80 06 mov55 $r0,$r6
97ba: ae 58 sbi333 $r1,[$r3+#0x0]
97bc: af f2 sbi333 $r7,[$r6+#0x2]
97be: 48 00 00 d3 j 0x9964
97c2: ec 08 addi10.sp #0x8
97c4: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
97c8: 48 00 02 62 j 0x9c8c
97cc: 84 41 movi55 $r2,#0x1
97ce: 4c 11 40 1a bne $r1,$r2,0x9802
97d2: 3e 88 08 f0 addi.gp $r8,#0x8f0
97d6: 80 28 mov55 $r1,$r8
97d8: 94 1b slli333 $r0,$r3,#0x3
97da: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
97de: 84 42 movi55 $r2,#0x2
97e0: ae 88 sbi333 $r2,[$r1+#0x0]
97e2: 80 08 mov55 $r0,$r8
97e4: a7 f8 lbi333 $r7,[$r7+#0x0]
97e6: 10 64 00 03 sbi $r6,[$r8+#0x3]
97ea: 10 74 00 02 sbi $r7,[$r8+#0x2]
97ee: 49 ff e5 4f jal 0x628c ; add_packet_crc(pkt=$r0)
97f2: 80 28 mov55 $r1,$r8
97f4: 3e 08 09 c0 addi.gp $r0,#0x9c0
97f8: ec 08 addi10.sp #0x8
97fa: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
97fe: 48 ff b6 9d j 0x538
9802: 84 63 movi55 $r3,#0x3
9804: 4c 11 c0 ba bne $r1,$r3,0x9978
9808: 3e 68 08 f0 addi.gp $r6,#0x8f0
980c: 80 26 mov55 $r1,$r6
980e: 94 1b slli333 $r0,$r3,#0x3
9810: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
9814: 98 b3 add333 $r2,$r6,$r3
9816: a7 f8 lbi333 $r7,[$r7+#0x0]
9818: 84 62 movi55 $r3,#0x2
981a: ae c8 sbi333 $r3,[$r1+#0x0]
981c: 84 20 movi55 $r1,#0x0
981e: 80 06 mov55 $r0,$r6
9820: ae 50 sbi333 $r1,[$r2+#0x0]
9822: af f2 sbi333 $r7,[$r6+#0x2]
9824: 48 00 00 a0 j 0x9964
9828: 84 81 movi55 $r4,#0x1
982a: 2e 07 ff ea lbi.gp $r0,[+#-22]
982e: 4c 62 40 a5 bne $r6,$r4,0x9978
9832: a6 78 lbi333 $r1,[$r7+#0x0]
9834: 84 42 movi55 $r2,#0x2
9836: 4c 11 00 21 beq $r1,$r2,0x9878
983a: e6 23 slti45 $r1,#0x3
983c: e8 04 beqzs8 0x9844
983e: 4c 12 40 9d bne $r1,$r4,0x9978
9842: d5 09 j8 0x9854
9844: 84 63 movi55 $r3,#0x3
9846: 4c 11 80 19 beq $r1,$r3,0x9878
984a: 84 84 movi55 $r4,#0x4
984c: 4c 12 40 96 bne $r1,$r4,0x9978
9850: 48 00 00 14 j 0x9878
9854: 84 c5 movi55 $r6,#0x5
9856: 4c 03 40 03 bne $r0,$r6,0x985c
985a: d5 11 j8 0x987c
985c: 46 f0 01 00 sethi $r15,#0x100
9860: 2e 17 ff eb lbi.gp $r1,[+#-21]
9864: c1 02 beqz38 $r1,0x9868
9866: d5 0f j8 0x9884
9868: 84 21 movi55 $r1,#0x1
986a: 4c 00 80 87 beq $r0,$r1,0x9978
986e: 3e 17 ff ea sbi.gp $r1,[+#-22]
9872: 84 21 movi55 $r1,#0x1
9874: 48 00 00 5e j 0x9930
9878: 4c 00 80 06 beq $r0,$r1,0x9884
987c: 3e 17 ff ea sbi.gp $r1,[+#-22]
9880: 48 00 00 58 j 0x9930
9884: 3e 67 ff ea sbi.gp $r6,[+#-22]
9888: 80 26 mov55 $r1,$r6
988a: d5 53 j8 0x9930
988c: 84 41 movi55 $r2,#0x1
988e: 2e 97 ff ea lbi.gp $r9,[+#-22]
9892: 4c 61 40 39 bne $r6,$r2,0x9904
9896: a6 b8 lbi333 $r2,[$r7+#0x0]
9898: 4c 91 00 70 beq $r9,$r2,0x9978
989c: 80 22 mov55 $r1,$r2
989e: 80 09 mov55 $r0,$r9
98a0: 3e 27 ff ea sbi.gp $r2,[+#-22]
98a4: 49 ff d3 4c jal 0x3f3c
98a8: 46 50 01 00 sethi $r5,#0x100
98ac: 3e 67 ff de sbi.gp $r6,[+#-34]
98b0: 2e 40 00 10 lbi.gp $r4,[+#0x10]
98b4: 46 f0 01 00 sethi $r15,#0x100
98b8: 2e 00 00 11 lbi.gp $r0,[+#0x11]
98bc: b4 e7 lwi450 $r7,[$r7]
98be: 95 23 slli333 $r4,$r4,#0x3
98c0: 99 20 add333 $r4,$r4,$r0
98c2: 3e 38 13 4c addi.gp $r3,#0x134c
98c6: 3e a8 08 f0 addi.gp $r10,#0x8f0
98ca: 38 71 92 0a sw $r7,[$r3+($r4<<#0x2)]
98ce: 38 91 92 08 sb $r9,[$r3+($r4<<#0x2)]
98d2: 44 20 00 40 movi $r2,#0x40
98d6: 84 20 movi55 $r1,#0x0
98d8: 80 0a mov55 $r0,$r10
98da: 49 00 03 ef jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
98de: 80 2a mov55 $r1,$r10
98e0: 84 0b movi55 $r0,#0xb
98e2: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
98e6: 80 0a mov55 $r0,$r10
98e8: 2e 87 ff ea lbi.gp $r8,[+#-22]
98ec: 10 80 80 00 sbi $r8,[$r1+#0x0]
98f0: 49 ff e4 ce jal 0x628c ; add_packet_crc(pkt=$r0)
98f4: 80 2a mov55 $r1,$r10
98f6: 3e 08 09 c0 addi.gp $r0,#0x9c0
98fa: ec 08 addi10.sp #0x8
98fc: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
9900: 48 ff b6 1c j 0x538
9904: 84 63 movi55 $r3,#0x3
9906: 4c 61 c0 39 bne $r6,$r3,0x9978
990a: a6 b8 lbi333 $r2,[$r7+#0x0]
990c: 4c 91 00 36 beq $r9,$r2,0x9978
9910: 80 22 mov55 $r1,$r2
9912: 80 09 mov55 $r0,$r9
9914: 3e 68 08 f0 addi.gp $r6,#0x8f0
9918: 3e 27 ff ea sbi.gp $r2,[+#-22]
991c: 49 ff d3 10 jal 0x3f3c
9920: 84 20 movi55 $r1,#0x0
9922: 44 20 00 40 movi $r2,#0x40
9926: 80 06 mov55 $r0,$r6
9928: 46 30 01 00 sethi $r3,#0x100
992c: 84 81 movi55 $r4,#0x1
992e: d5 0d j8 0x9948
9930: 3e 68 08 f0 addi.gp $r6,#0x8f0
9934: 49 ff d3 04 jal 0x3f3c
9938: 84 20 movi55 $r1,#0x0
993a: 44 20 00 40 movi $r2,#0x40
993e: 80 06 mov55 $r0,$r6
9940: 46 30 01 00 sethi $r3,#0x100
9944: 44 40 00 01 movi $r4,#0x1
9948: 3e 47 ff de sbi.gp $r4,[+#-34]
994c: 49 00 03 b6 jal 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2)
9950: 80 26 mov55 $r1,$r6
9952: 84 0b movi55 $r0,#0xb
9954: 18 00 80 01 sbi.bi $r0,[$r1],#0x1
9958: 50 03 00 00 addi $r0,$r6,#0x0
995c: 2e 87 ff ea lbi.gp $r8,[+#-22]
9960: 10 80 80 00 sbi $r8,[$r1+#0x0]
9964: 49 ff e4 94 jal 0x628c ; add_packet_crc(pkt=$r0)
9968: 80 26 mov55 $r1,$r6
996a: 3e 08 09 c0 addi.gp $r0,#0x9c0
996e: ec 08 addi10.sp #0x8
9970: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
9974: 48 ff b5 e2 j 0x538
9978: ec 08 addi10.sp #0x8 ; 0x9978: label OUT_9978
997a: 3a 6f a8 84 lmw.bim $r6,[$sp],$r10,#0x2 ! {$r6~$r10, $lp}
997e: dd 9e ret5 $lp
9980: ef f8 addi10.sp #-8
9982: 50 2f 80 04 addi $r2,$sp,#0x4
9986: b6 02 swi450 $r0,[$r2]
9988: 84 67 movi55 $r3,#0x7
998a: a6 93 lbi333 $r2,[$r2+#0x3]
998c: 4c 21 80 1e beq $r2,$r3,0x99c8
9990: e6 48 slti45 $r2,#0x8
9992: e8 06 beqzs8 0x999e
9994: 9e 91 subi333 $r2,$r2,#0x1
9996: 84 62 movi55 $r3,#0x2
9998: e2 62 slt45 $r3,$r2
999a: e9 1a bnezs8 0x99ce
999c: d5 0a j8 0x99b0
999e: 84 69 movi55 $r3,#0x9
99a0: 4c 21 80 0e beq $r2,$r3,0x99bc
99a4: e2 43 slt45 $r2,$r3
99a6: e9 0e bnezs8 0x99c2
99a8: 84 6a movi55 $r3,#0xa
99aa: 4c 21 c0 12 bne $r2,$r3,0x99ce
99ae: d5 04 j8 0x99b6
99b0: ec 08 addi10.sp #0x8
99b2: 48 ff f8 f5 j 0x8b9c
99b6: ec 08 addi10.sp #0x8
99b8: 48 ff fe 5c j 0x9670
99bc: ec 08 addi10.sp #0x8
99be: 48 ff fb 79 j 0x90b0
99c2: ec 08 addi10.sp #0x8
99c4: 48 ff f6 da j 0x8778
99c8: ec 08 addi10.sp #0x8
99ca: 48 ff f6 3f j 0x8648
99ce: ec 08 addi10.sp #0x8
99d0: dd 9e ret5 $lp
99d2: 92 00 nop16
99d4: 3a 6f aa bc smw.adm $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
99d8: ef cc addi10.sp #-52
99da: 3e 18 10 a0 addi.gp $r1,#0x10a0
99de: a6 08 lbi333 $r0,[$r1+#0x0]
99e0: 84 c1 movi55 $r6,#0x1
99e2: 96 04 xlsb33 $r0,$r0
99e4: 3e 60 00 0f sbi.gp $r6,[+#0xf]
99e8: c0 3e beqz38 $r0,0x9a64
99ea: 46 00 01 00 sethi $r0,#0x100
99ee: 2e 17 ff fe lbi.gp $r1,[+#-2]
99f2: f0 84 swi37.sp $r0,[+#0x10]
99f4: c9 33 bnez38 $r1,0x9a5a
99f6: 2e 07 ff ea lbi.gp $r0,[+#-22]
99fa: 3e 10 00 0f sbi.gp $r1,[+#0xf]
99fe: 84 23 movi55 $r1,#0x3
9a00: 4c 00 80 1c beq $r0,$r1,0x9a38
9a04: e6 04 slti45 $r0,#0x4
9a06: e8 05 beqzs8 0x9a10
9a08: 84 42 movi55 $r2,#0x2
9a0a: 4c 01 40 25 bne $r0,$r2,0x9a54
9a0e: d5 0e j8 0x9a2a
9a10: 84 24 movi55 $r1,#0x4
9a12: 4c 00 80 1b beq $r0,$r1,0x9a48
9a16: 84 45 movi55 $r2,#0x5
9a18: 4c 01 40 1e bne $r0,$r2,0x9a54
9a1c: 84 3f movi55 $r1,#-1
9a1e: 3e 08 07 bb addi.gp $r0,#0x7bb
9a22: 18 10 7f ff sbi.bi $r1,[$r0],#-1
9a26: ae 40 sbi333 $r1,[$r0+#0x0]
9a28: d5 16 j8 0x9a54
9a2a: 84 3f movi55 $r1,#-1
9a2c: 3e 08 07 bd addi.gp $r0,#0x7bd
9a30: 18 10 7f ff sbi.bi $r1,[$r0],#-1
9a34: ae 40 sbi333 $r1,[$r0+#0x0]
9a36: d5 0f j8 0x9a54
9a38: 84 3f movi55 $r1,#-1
9a3a: 3e 08 07 bf addi.gp $r0,#0x7bf
9a3e: 18 10 7f ff sbi.bi $r1,[$r0],#-1
9a42: ae 40 sbi333 $r1,[$r0+#0x0]
9a44: 48 00 00 08 j 0x9a54
9a48: 84 3f movi55 $r1,#-1
9a4a: 3e 08 07 c1 addi.gp $r0,#0x7c1
9a4e: 18 10 7f ff sbi.bi $r1,[$r0],#-1
9a52: ae 40 sbi333 $r1,[$r0+#0x0]
9a54: 84 21 movi55 $r1,#0x1
9a56: 3e 17 ff e8 sbi.gp $r1,[+#-24]
9a5a: f1 04 lwi37.sp $r1,[+#0x10]
9a5c: 84 01 movi55 $r0,#0x1
9a5e: 3e 07 ff fe sbi.gp $r0,[+#-2]
9a62: d5 15 j8 0x9a8c
9a64: 46 20 01 00 sethi $r2,#0x100
9a68: 2e 07 ff fe lbi.gp $r0,[+#-2]
9a6c: f2 84 swi37.sp $r2,[+#0x10]
9a6e: c0 0b beqz38 $r0,0x9a84
9a70: 3e 08 07 ba addi.gp $r0,#0x7ba
9a74: 44 10 ce c2 movi $r1,#0xcec2
9a78: 44 20 00 08 movi $r2,#0x8
9a7c: 49 00 03 14 jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
9a80: 3e 67 ff e8 sbi.gp $r6,[+#-24]
9a84: f1 04 lwi37.sp $r1,[+#0x10]
9a86: 84 00 movi55 $r0,#0x0
9a88: 3e 07 ff fe sbi.gp $r0,[+#-2]
9a8c: 2e 07 ff f5 lbi.gp $r0,[+#-11]
9a90: 84 40 movi55 $r2,#0x0
9a92: 3e 20 00 00 sbi.gp $r2,[+#0x0]
9a96: c0 0b beqz38 $r0,0x9aac
9a98: 3e 08 10 a0 addi.gp $r0,#0x10a0
9a9c: 3e 18 10 90 addi.gp $r1,#0x1090
9aa0: 84 4f movi55 $r2,#0xf
9aa2: 49 00 02 f5 jal 0xa08c ; memcmp(s1=$r0, s2=$r1, n=$r2), $r0=0 if same, byte diff if not
9aa6: c0 03 beqz38 $r0,0x9aac
9aa8: 49 ff fd 8a jal 0x95bc
9aac: 84 40 movi55 $r2,#0x0
9aae: f2 85 swi37.sp $r2,[+#0x14]
9ab0: 46 50 01 00 sethi $r5,#0x100
9ab4: f1 05 lwi37.sp $r1,[+#0x14]
9ab6: 3e 08 10 a0 addi.gp $r0,#0x10a0
9aba: 38 40 04 00 lb $r4,[$r0+($r1<<#0x0)]
9abe: 3e 08 10 90 addi.gp $r0,#0x1090
9ac2: 38 20 04 00 lb $r2,[$r0+($r1<<#0x0)]
9ac6: 3e 10 00 10 sbi.gp $r1,[+#0x10]
9aca: 94 4b slli333 $r1,$r1,#0x3
9acc: f1 86 swi37.sp $r1,[+#0x18]
9ace: f1 05 lwi37.sp $r1,[+#0x14]
9ad0: 40 01 10 04 or $r0,$r2,$r4
9ad4: 94 cd slli333 $r3,$r1,#0x5
9ad6: 40 12 10 05 nor $r1,$r4,$r4
9ada: 40 11 04 02 and $r1,$r2,$r1
9ade: 40 00 00 05 nor $r0,$r0,$r0
9ae2: f1 87 swi37.sp $r1,[+#0x1c]
9ae4: 40 61 08 05 nor $r6,$r2,$r2
9ae8: 96 00 zeb33 $r0,$r0
9aea: 3e 18 11 48 addi.gp $r1,#0x1148
9aee: 40 62 18 02 and $r6,$r4,$r6
9af2: f0 89 swi37.sp $r0,[+#0x24]
9af4: 40 41 10 02 and $r4,$r2,$r4
9af8: 98 19 add333 $r0,$r3,$r1
9afa: f2 06 lwi37.sp $r2,[+#0x18]
9afc: 3e 18 06 e0 addi.gp $r1,#0x6e0
9b00: 40 81 04 00 add $r8,$r2,$r1
9b04: 3e 18 10 d0 addi.gp $r1,#0x10d0
9b08: f4 88 swi37.sp $r4,[+#0x20]
9b0a: 99 11 add333 $r4,$r2,$r1
9b0c: 3e 28 13 4c addi.gp $r2,#0x134c
9b10: 3e 18 15 2c addi.gp $r1,#0x152c
9b14: 41 c1 88 00 add $fp,$r3,$r2
9b18: 40 91 84 00 add $r9,$r3,$r1
9b1c: f2 06 lwi37.sp $r2,[+#0x18]
9b1e: 3e 18 06 60 addi.gp $r1,#0x660
9b22: f6 83 swi37.sp $r6,[+#0xc]
9b24: 40 a1 04 00 add $r10,$r2,$r1
9b28: 84 e0 movi55 $r7,#0x0
9b2a: 80 60 mov55 $r3,$r0
9b2c: 00 04 00 00 lbi $r0,[$r8+#0x0]
9b30: 96 78 zeb33 $r1,$r7
9b32: c0 04 beqz38 $r0,0x9b3a
9b34: 9c 01 addi333 $r0,$r0,#0x1
9b36: 10 04 00 00 sbi $r0,[$r8+#0x0]
9b3a: f2 04 lwi37.sp $r2,[+#0x10]
9b3c: 2e 07 ff fe lbi.gp $r0,[+#-2]
9b40: c0 04 beqz38 $r0,0x9b48
9b42: b4 03 lwi450 $r0,[$r3]
9b44: f0 8b swi37.sp $r0,[+#0x2c]
9b46: d5 03 j8 0x9b4c
9b48: b4 5c lwi450 $r2,[$fp]
9b4a: f2 8b swi37.sp $r2,[+#0x2c]
9b4c: f2 03 lwi37.sp $r2,[+#0xc]
9b4e: 40 01 1c 0e sra $r0,$r2,$r7
9b52: 96 04 xlsb33 $r0,$r0
9b54: 3e 10 00 11 sbi.gp $r1,[+#0x11]
9b58: c0 47 beqz38 $r0,0x9be6
9b5a: 00 05 00 00 lbi $r0,[$r10+#0x0]
9b5e: 5c f0 00 c8 slti $r15,$r0,#0xc8
9b62: e8 07 beqzs8 0x9b70
9b64: 9c 01 addi333 $r0,$r0,#0x1
9b66: 10 05 00 00 sbi $r0,[$r10+#0x0]
9b6a: 84 21 movi55 $r1,#0x1
9b6c: 3e 17 ff e1 sbi.gp $r1,[+#-31]
9b70: 3c 1d ff f0 lwi.gp $r1,[+#-64]
9b74: b4 09 lwi450 $r0,[$r9]
9b76: 9c 49 addi333 $r1,$r1,#0x1
9b78: 9c 01 addi333 $r0,$r0,#0x1
9b7a: 84 41 movi55 $r2,#0x1
9b7c: 14 04 80 00 swi $r0,[$r9+#0x0]
9b80: 10 24 00 00 sbi $r2,[$r8+#0x0]
9b84: 3c 1f ff f0 swi.gp $r1,[+#-64]
9b88: 5c f0 80 c9 slti $r15,$r1,#0xc9
9b8c: e9 04 bnezs8 0x9b94
9b8e: 3c 2d ff e5 lwi.gp $r2,[+#-108]
9b92: d5 0a j8 0x9ba6
9b94: c1 11 beqz38 $r1,0x9bb6
9b96: 3c 2d ff e5 lwi.gp $r2,[+#-108]
9b9a: 3c 0d ff f1 lwi.gp $r0,[+#-60]
9b9e: 9a 10 sub333 $r0,$r2,$r0
9ba0: 5c f0 02 59 slti $r15,$r0,#0x259
9ba4: e9 09 bnezs8 0x9bb6
9ba6: 84 00 movi55 $r0,#0x0
9ba8: 3c 2f ff f1 swi.gp $r2,[+#-60]
9bac: 3c 0f ff f0 swi.gp $r0,[+#-64]
9bb0: 84 21 movi55 $r1,#0x1
9bb2: 3e 17 ff e0 sbi.gp $r1,[+#-32]
9bb6: a6 20 lbi333 $r0,[$r4+#0x0]
9bb8: 84 21 movi55 $r1,#0x1
9bba: f3 81 swi37.sp $r3,[+#0x4]
9bbc: b6 9f swi450 $r4,[$sp]
9bbe: f5 82 swi37.sp $r5,[+#0x8]
9bc0: 49 ff fc b4 jal 0x9528
9bc4: f0 0b lwi37.sp $r0,[+#0x2c]
9bc6: 84 21 movi55 $r1,#0x1
9bc8: 49 ff fe dc jal 0x9980
9bcc: 2e 00 00 0f lbi.gp $r0,[+#0xf]
9bd0: f3 01 lwi37.sp $r3,[+#0x4]
9bd2: b4 9f lwi450 $r4,[$sp]
9bd4: f5 02 lwi37.sp $r5,[+#0x8]
9bd6: c0 46 beqz38 $r0,0x9c62
9bd8: 84 21 movi55 $r1,#0x1
9bda: 3e 17 ff e8 sbi.gp $r1,[+#-24]
9bde: 84 00 movi55 $r0,#0x0
9be0: 3e 00 00 04 sbi.gp $r0,[+#0x4]
9be4: d5 3f j8 0x9c62
9be6: f1 07 lwi37.sp $r1,[+#0x1c]
9be8: 40 00 9c 0e sra $r0,$r1,$r7
9bec: 96 04 xlsb33 $r0,$r0
9bee: c0 1b beqz38 $r0,0x9c24
9bf0: f2 06 lwi37.sp $r2,[+#0x18]
9bf2: 98 57 add333 $r1,$r2,$r7
9bf4: 3e 08 11 48 addi.gp $r0,#0x1148
9bf8: 38 00 06 02 lw $r0,[$r0+($r1<<#0x2)]
9bfc: f3 81 swi37.sp $r3,[+#0x4]
9bfe: f5 82 swi37.sp $r5,[+#0x8]
9c00: b6 9f swi450 $r4,[$sp]
9c02: 84 23 movi55 $r1,#0x3
9c04: 49 ff fe be jal 0x9980
9c08: b4 9f lwi450 $r4,[$sp]
9c0a: 84 23 movi55 $r1,#0x3
9c0c: a6 20 lbi333 $r0,[$r4+#0x0]
9c0e: 49 ff fc 8d jal 0x9528
9c12: b4 1c lwi450 $r0,[$fp]
9c14: 84 23 movi55 $r1,#0x3
9c16: f0 8b swi37.sp $r0,[+#0x2c]
9c18: 49 ff fe b4 jal 0x9980
9c1c: f3 01 lwi37.sp $r3,[+#0x4]
9c1e: b4 9f lwi450 $r4,[$sp]
9c20: f5 02 lwi37.sp $r5,[+#0x8]
9c22: d5 20 j8 0x9c62
9c24: f1 08 lwi37.sp $r1,[+#0x20]
9c26: 40 00 9c 0e sra $r0,$r1,$r7
9c2a: 96 04 xlsb33 $r0,$r0
9c2c: c0 0c beqz38 $r0,0x9c44
9c2e: f0 0b lwi37.sp $r0,[+#0x2c]
9c30: 84 22 movi55 $r1,#0x2
9c32: f3 81 swi37.sp $r3,[+#0x4]
9c34: b6 9f swi450 $r4,[$sp]
9c36: f5 82 swi37.sp $r5,[+#0x8]
9c38: 49 ff fe a4 jal 0x9980
9c3c: f3 01 lwi37.sp $r3,[+#0x4]
9c3e: b4 9f lwi450 $r4,[$sp]
9c40: f5 02 lwi37.sp $r5,[+#0x8]
9c42: d5 10 j8 0x9c62
9c44: f2 09 lwi37.sp $r2,[+#0x24]
9c46: 40 01 1c 0e sra $r0,$r2,$r7
9c4a: 96 04 xlsb33 $r0,$r0
9c4c: c0 0b beqz38 $r0,0x9c62
9c4e: f0 0b lwi37.sp $r0,[+#0x2c]
9c50: 84 24 movi55 $r1,#0x4
9c52: f3 81 swi37.sp $r3,[+#0x4]
9c54: b6 9f swi450 $r4,[$sp]
9c56: f5 82 swi37.sp $r5,[+#0x8]
9c58: 49 ff fe 94 jal 0x9980
9c5c: f5 02 lwi37.sp $r5,[+#0x8]
9c5e: b4 9f lwi450 $r4,[$sp]
9c60: f3 01 lwi37.sp $r3,[+#0x4]
9c62: 9d f9 addi333 $r7,$r7,#0x1
9c64: 84 08 movi55 $r0,#0x8
9c66: 8d 01 addi45 $r8,#0x1
9c68: 9d 21 addi333 $r4,$r4,#0x1
9c6a: 51 ce 00 04 addi $fp,$fp,#0x4
9c6e: 8d 24 addi45 $r9,#0x4
9c70: 8d 41 addi45 $r10,#0x1
9c72: 9c dc addi333 $r3,$r3,#0x4
9c74: 4c 70 7f 5c bne $r7,$r0,0x9b2c
9c78: f1 05 lwi37.sp $r1,[+#0x14]
9c7a: 84 4f movi55 $r2,#0xf
9c7c: 9c 49 addi333 $r1,$r1,#0x1
9c7e: f1 85 swi37.sp $r1,[+#0x14]
9c80: 4c 11 7f 1a bne $r1,$r2,0x9ab4
9c84: ec 34 addi10.sp #0x34
9c86: 3a 6f aa 84 lmw.bim $r6,[$sp],$r10,#0xa ! {$r6~$r10, $fp, $lp}
9c8a: dd 9e ret5 $lp
9c8c: 3a 6f 98 bc smw.adm $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
9c90: ef f8 addi10.sp #-8
9c92: 50 2f 80 04 addi $r2,$sp,#0x4
9c96: b6 02 swi450 $r0,[$r2]
9c98: 84 01 movi55 $r0,#0x1
9c9a: 3e 68 17 50 addi.gp $r6,#0x1750
9c9e: 4c 10 40 49 bne $r1,$r0,0x9d30
9ca2: a6 31 lbi333 $r0,[$r6+#0x1]
9ca4: a6 f0 lbi333 $r3,[$r6+#0x0]
9ca6: 40 00 20 08 slli $r0,$r0,#0x8
9caa: 40 00 0c 04 or $r0,$r0,$r3
9cae: 44 30 55 aa movi $r3,#0x55aa
9cb2: 4c 01 80 12 beq $r0,$r3,0x9cd6
9cb6: a6 50 lbi333 $r1,[$r2+#0x0]
9cb8: 2e 07 ff ea lbi.gp $r0,[+#-22]
9cbc: 80 46 mov55 $r2,$r6
9cbe: 49 ff b9 9b jal 0xff4
9cc2: c0 70 beqz38 $r0,0x9da2
9cc4: 84 20 movi55 $r1,#0x0
9cc6: a6 36 lbi333 $r0,[$r6+#0x6]
9cc8: ae 72 sbi333 $r1,[$r6+#0x2]
9cca: 84 21 movi55 $r1,#0x1
9ccc: 4c 00 c0 6b bne $r0,$r1,0x9da2
9cd0: a6 b7 lbi333 $r2,[$r6+#0x7]
9cd2: ae b3 sbi333 $r2,[$r6+#0x3]
9cd4: d5 67 j8 0x9da2
9cd6: a6 10 lbi333 $r0,[$r2+#0x0]
9cd8: a6 b5 lbi333 $r2,[$r6+#0x5]
9cda: 4c 20 40 64 bne $r2,$r0,0x9da2
9cde: a6 36 lbi333 $r0,[$r6+#0x6]
9ce0: 84 63 movi55 $r3,#0x3
9ce2: 4c 01 c0 60 bne $r0,$r3,0x9da2
9ce6: 3e 38 17 30 addi.gp $r3,#0x1730
9cea: 84 40 movi55 $r2,#0x0
9cec: 80 03 mov55 $r0,$r3
9cee: aa 81 swi333.bi $r2,[$r0],#0x4
9cf0: b6 40 swi450 $r2,[$r0]
9cf2: 50 01 80 08 addi $r0,$r3,#0x8
9cf6: b6 40 swi450 $r2,[$r0]
9cf8: 50 01 80 0c addi $r0,$r3,#0xc
9cfc: b6 40 swi450 $r2,[$r0]
9cfe: 50 01 80 10 addi $r0,$r3,#0x10
9d02: b6 40 swi450 $r2,[$r0]
9d04: 50 01 80 14 addi $r0,$r3,#0x14
9d08: b6 40 swi450 $r2,[$r0]
9d0a: 50 01 80 18 addi $r0,$r3,#0x18
9d0e: b6 40 swi450 $r2,[$r0]
9d10: 50 01 80 1c addi $r0,$r3,#0x1c
9d14: 3e 20 00 13 sbi.gp $r2,[+#0x13]
9d18: 3e 10 00 15 sbi.gp $r1,[+#0x15]
9d1c: ae b1 sbi333 $r2,[$r6+#0x1]
9d1e: ae 80 sbi333 $r2,[$r0+#0x0]
9d20: 3e 20 00 12 sbi.gp $r2,[+#0x12]
9d24: 46 00 01 00 sethi $r0,#0x100
9d28: 3e 10 00 14 sbi.gp $r1,[+#0x14]
9d2c: ae b0 sbi333 $r2,[$r6+#0x0]
9d2e: d5 3a j8 0x9da2
9d30: 84 63 movi55 $r3,#0x3
9d32: 4c 11 c0 38 bne $r1,$r3,0x9da2
9d36: a6 71 lbi333 $r1,[$r6+#0x1]
9d38: a6 f0 lbi333 $r3,[$r6+#0x0]
9d3a: 40 10 a0 08 slli $r1,$r1,#0x8
9d3e: 40 10 8c 04 or $r1,$r1,$r3
9d42: 44 30 55 aa movi $r3,#0x55aa
9d46: 4c 11 c0 2e bne $r1,$r3,0x9da2
9d4a: a6 50 lbi333 $r1,[$r2+#0x0]
9d4c: a6 b5 lbi333 $r2,[$r6+#0x5]
9d4e: 4c 20 c0 2a bne $r2,$r1,0x9da2
9d52: a6 76 lbi333 $r1,[$r6+#0x6]
9d54: 84 42 movi55 $r2,#0x2
9d56: 4c 11 40 26 bne $r1,$r2,0x9da2
9d5a: 3e 38 17 30 addi.gp $r3,#0x1730
9d5e: 84 40 movi55 $r2,#0x0
9d60: 80 23 mov55 $r1,$r3
9d62: aa 89 swi333.bi $r2,[$r1],#0x4
9d64: b6 41 swi450 $r2,[$r1]
9d66: 50 11 80 08 addi $r1,$r3,#0x8
9d6a: b6 41 swi450 $r2,[$r1]
9d6c: 50 11 80 0c addi $r1,$r3,#0xc
9d70: b6 41 swi450 $r2,[$r1]
9d72: 50 11 80 10 addi $r1,$r3,#0x10
9d76: b6 41 swi450 $r2,[$r1]
9d78: 50 11 80 14 addi $r1,$r3,#0x14
9d7c: b6 41 swi450 $r2,[$r1]
9d7e: 50 11 80 18 addi $r1,$r3,#0x18
9d82: b6 41 swi450 $r2,[$r1]
9d84: 50 11 80 1c addi $r1,$r3,#0x1c
9d88: 3e 20 00 13 sbi.gp $r2,[+#0x13]
9d8c: 3e 00 00 15 sbi.gp $r0,[+#0x15]
9d90: ae b1 sbi333 $r2,[$r6+#0x1]
9d92: ae 88 sbi333 $r2,[$r1+#0x0]
9d94: 3e 20 00 12 sbi.gp $r2,[+#0x12]
9d98: 46 10 01 00 sethi $r1,#0x100
9d9c: 3e 00 00 14 sbi.gp $r0,[+#0x14]
9da0: ae b0 sbi333 $r2,[$r6+#0x0]
9da2: ec 08 addi10.sp #0x8
9da4: 3a 6f 98 84 lmw.bim $r6,[$sp],$r6,#0x2 ! {$r6, $lp}
9da8: dd 9e ret5 $lp
9daa: 92 00 nop16
9dac: 3a 6f a8 3c smw.adm $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
9db0: 3e 08 17 50 addi.gp $r0,#0x1750
9db4: a6 81 lbi333 $r2,[$r0+#0x1]
9db6: a6 40 lbi333 $r1,[$r0+#0x0]
9db8: 40 21 20 08 slli $r2,$r2,#0x8
9dbc: 40 21 04 04 or $r2,$r2,$r1
9dc0: 44 30 55 aa movi $r3,#0x55aa
9dc4: a6 42 lbi333 $r1,[$r0+#0x2]
9dc6: 4c 21 c0 cb bne $r2,$r3,0x9f5c
9dca: a6 83 lbi333 $r2,[$r0+#0x3]
9dcc: ca 1d bnez38 $r2,0x9e06
9dce: a6 c6 lbi333 $r3,[$r0+#0x6]
9dd0: 84 81 movi55 $r4,#0x1
9dd2: 4c 32 40 1a bne $r3,$r4,0x9e06
9dd6: 3e 18 17 30 addi.gp $r1,#0x1730
9dda: 80 81 mov55 $r4,$r1
9ddc: aa a1 swi333.bi $r2,[$r4],#0x4
9dde: 3e 20 00 13 sbi.gp $r2,[+#0x13]
9de2: 3e 30 00 15 sbi.gp $r3,[+#0x15]
9de6: ae 81 sbi333 $r2,[$r0+#0x1]
9de8: b6 44 swi450 $r2,[$r4]
9dea: 10 20 80 1c sbi $r2,[$r1+#0x1c]
9dee: 3e 20 00 12 sbi.gp $r2,[+#0x12]
9df2: 3e 30 00 14 sbi.gp $r3,[+#0x14]
9df6: ae 80 sbi333 $r2,[$r0+#0x0]
9df8: a8 8a swi333 $r2,[$r1+#0x8]
9dfa: a8 8b swi333 $r2,[$r1+#0xc]
9dfc: a8 8c swi333 $r2,[$r1+#0x10]
9dfe: a8 8d swi333 $r2,[$r1+#0x14]
9e00: a8 8e swi333 $r2,[$r1+#0x18]
9e02: 48 00 00 ad j 0x9f5c
9e06: 9c ca addi333 $r3,$r1,#0x2
9e08: 94 da slli333 $r3,$r3,#0x2
9e0a: 3e 58 17 50 addi.gp $r5,#0x1750
9e0e: 98 dd add333 $r3,$r3,$r5
9e10: a7 1b lbi333 $r4,[$r3+#0x3]
9e12: 84 c1 movi55 $r6,#0x1
9e14: 4c 43 40 52 bne $r4,$r6,0x9eb8
9e18: a7 5a lbi333 $r5,[$r3+#0x2]
9e1a: dc 19 bnes38 $r4,0x9e4c
9e1c: 00 81 80 00 lbi $r8,[$r3+#0x0]
9e20: 40 64 0c 09 srli $r6,$r8,#0x3
9e24: 3e 78 17 30 addi.gp $r7,#0x1730
9e28: a6 d9 lbi333 $r3,[$r3+#0x1]
9e2a: 38 a3 98 00 lb $r10,[$r7+($r6<<#0x0)]
9e2e: 2e 90 00 13 lbi.gp $r9,[+#0x13]
9e32: 54 84 00 07 andi $r8,$r8,#0x7
9e36: 40 52 a0 0c sll $r5,$r5,$r8
9e3a: 40 52 a8 04 or $r5,$r5,$r10
9e3e: 40 34 8c 04 or $r3,$r9,$r3
9e42: 38 53 98 08 sb $r5,[$r7+($r6<<#0x0)]
9e46: 3e 30 00 13 sbi.gp $r3,[+#0x13]
9e4a: d5 1d j8 0x9e84
9e4c: 84 c2 movi55 $r6,#0x2
9e4e: de 1b bnes38 $r6,0x9e84
9e50: a7 58 lbi333 $r5,[$r3+#0x0]
9e52: 00 81 80 01 lbi $r8,[$r3+#0x1]
9e56: 54 72 80 07 andi $r7,$r5,#0x7
9e5a: 3e 68 17 30 addi.gp $r6,#0x1730
9e5e: 92 a3 srli45 $r5,#0x3
9e60: 38 a3 14 00 lb $r10,[$r6+($r5<<#0x0)]
9e64: 2e 90 00 13 lbi.gp $r9,[+#0x13]
9e68: 40 42 1c 0c sll $r4,$r4,$r7
9e6c: 40 72 10 05 nor $r7,$r4,$r4
9e70: 40 44 20 05 nor $r4,$r8,$r8
9e74: 40 73 a8 02 and $r7,$r7,$r10
9e78: 40 42 24 02 and $r4,$r4,$r9
9e7c: 38 73 14 08 sb $r7,[$r6+($r5<<#0x0)]
9e80: 3e 40 00 13 sbi.gp $r4,[+#0x13]
9e84: a6 c4 lbi333 $r3,[$r0+#0x4]
9e86: 9e d9 subi333 $r3,$r3,#0x1
9e88: e0 23 slts45 $r1,$r3
9e8a: e8 04 beqzs8 0x9e92
9e8c: 9c 49 addi333 $r1,$r1,#0x1
9e8e: ae 42 sbi333 $r1,[$r0+#0x2]
9e90: d5 0a j8 0x9ea4
9e92: a6 46 lbi333 $r1,[$r0+#0x6]
9e94: 84 61 movi55 $r3,#0x1
9e96: 4c 11 c0 04 bne $r1,$r3,0x9e9e
9e9a: 9e 91 subi333 $r2,$r2,#0x1
9e9c: ae 83 sbi333 $r2,[$r0+#0x3]
9e9e: 84 20 movi55 $r1,#0x0
9ea0: 10 10 00 02 sbi $r1,[$r0+#0x2]
9ea4: 3c 1c 00 08 lwi.gp $r1,[+#0x20]
9ea8: 3c 1e 00 0d swi.gp $r1,[+#0x34]
9eac: 46 00 01 00 sethi $r0,#0x100
9eb0: 84 21 movi55 $r1,#0x1
9eb2: 3e 10 00 14 sbi.gp $r1,[+#0x14]
9eb6: d5 53 j8 0x9f5c
9eb8: 84 a2 movi55 $r5,#0x2
9eba: dc 31 bnes38 $r4,0x9f1c
9ebc: a7 1a lbi333 $r4,[$r3+#0x2]
9ebe: 84 c1 movi55 $r6,#0x1
9ec0: 4c 43 40 0a bne $r4,$r6,0x9ed4
9ec4: a6 d8 lbi333 $r3,[$r3+#0x0]
9ec6: 2e 50 00 12 lbi.gp $r5,[+#0x12]
9eca: 40 32 8c 04 or $r3,$r5,$r3
9ece: 3e 30 00 12 sbi.gp $r3,[+#0x12]
9ed2: d5 0c j8 0x9eea
9ed4: 84 a2 movi55 $r5,#0x2
9ed6: dc 0a bnes38 $r4,0x9eea
9ed8: a7 18 lbi333 $r4,[$r3+#0x0]
9eda: 2e 50 00 12 lbi.gp $r5,[+#0x12]
9ede: 40 42 10 05 nor $r4,$r4,$r4
9ee2: 40 42 14 02 and $r4,$r4,$r5
9ee6: 3e 40 00 12 sbi.gp $r4,[+#0x12]
9eea: a6 c4 lbi333 $r3,[$r0+#0x4]
9eec: 9e d9 subi333 $r3,$r3,#0x1
9eee: e0 23 slts45 $r1,$r3
9ef0: e8 04 beqzs8 0x9ef8
9ef2: 9c 49 addi333 $r1,$r1,#0x1
9ef4: ae 42 sbi333 $r1,[$r0+#0x2]
9ef6: d5 09 j8 0x9f08
9ef8: a6 46 lbi333 $r1,[$r0+#0x6]
9efa: 84 c1 movi55 $r6,#0x1
9efc: 4c 13 40 04 bne $r1,$r6,0x9f04
9f00: 9e 91 subi333 $r2,$r2,#0x1
9f02: ae 83 sbi333 $r2,[$r0+#0x3]
9f04: 84 20 movi55 $r1,#0x0
9f06: ae 42 sbi333 $r1,[$r0+#0x2]
9f08: 3c 1c 00 08 lwi.gp $r1,[+#0x20]
9f0c: 3c 1e 00 0d swi.gp $r1,[+#0x34]
9f10: 46 00 01 00 sethi $r0,#0x100
9f14: 84 21 movi55 $r1,#0x1
9f16: 3e 10 00 15 sbi.gp $r1,[+#0x15]
9f1a: d5 21 j8 0x9f5c
9f1c: 84 a3 movi55 $r5,#0x3
9f1e: dc 1f bnes38 $r4,0x9f5c
9f20: a7 99 lbi333 $r6,[$r3+#0x1]
9f22: 3c 5c 00 08 lwi.gp $r5,[+#0x20]
9f26: 3c 7c 00 0d lwi.gp $r7,[+#0x34]
9f2a: a6 d8 lbi333 $r3,[$r3+#0x0]
9f2c: 40 63 20 08 slli $r6,$r6,#0x8
9f30: 40 33 0c 04 or $r3,$r6,$r3
9f34: 9b af sub333 $r6,$r5,$r7
9f36: e2 c3 slt45 $r6,$r3
9f38: e9 12 bnezs8 0x9f5c
9f3a: a6 c4 lbi333 $r3,[$r0+#0x4]
9f3c: 9e d9 subi333 $r3,$r3,#0x1
9f3e: e0 23 slts45 $r1,$r3
9f40: e8 04 beqzs8 0x9f48
9f42: 9c 49 addi333 $r1,$r1,#0x1
9f44: ae 42 sbi333 $r1,[$r0+#0x2]
9f46: d5 09 j8 0x9f58
9f48: a6 46 lbi333 $r1,[$r0+#0x6]
9f4a: 84 c1 movi55 $r6,#0x1
9f4c: 4c 13 40 04 bne $r1,$r6,0x9f54
9f50: 9e 91 subi333 $r2,$r2,#0x1
9f52: ae 83 sbi333 $r2,[$r0+#0x3]
9f54: 84 20 movi55 $r1,#0x0
9f56: ae 42 sbi333 $r1,[$r0+#0x2]
9f58: 3c 5e 00 0d swi.gp $r5,[+#0x34]
9f5c: 3a 6f a8 04 lmw.bim $r6,[$sp],$r10,#0x0 ! {$r6~$r10}
9f60: dd 9e ret5 $lp
9f62: 92 00 nop16
; ------------- 0x9f64: SYSTEM INIT / MAIN ENTRYPOINT / _entry() -------------
9f64: 64 02 00 43 setgie.d ; disable global interrupt
9f68: 64 00 00 08 dsb ; data serialization barrier
9f6c: 46 00 01 00 sethi $r0,#0x100 ; $r0 = 0x00100000
9f70: 58 00 00 03 ori $r0,$r0,#0x3 ; $r0 = 0x00100011
9f74: 64 04 e0 03 mtsr $r0,$dlmb ; Set up Data Local Memory: enabled, 8kb, addr 0x0010_0000~0x0010_1fff
9f78: 47 d0 01 00 sethi $gp,#0x100 ; $gp = 0x00100000
9f7c: 59 de 81 c8 ori $gp,$gp,#0x1c8 ; $gp = 0x001001c8 (SRAM: 0x0010_0000 - 0x0010_1fff)
9f80: 45 c0 00 00 movi $fp,#0x0 ; $fp = 0
9f84: 3f f8 1e 34 addi.gp $sp,#0x1e34 ; set $sp to $gp+0x1e34 (0x0010_1ffc, i.e. the end of SRAM)
9f88: 49 00 00 4e jal 0xa024 ; call 0xa024 (initialize stack, heap, interrupt table, etc)
9f8c: 49 ff cf 44 jal 0x3e14 ; call 0x3e14 (which might be main() since the next insn is a loop)
9f90: d5 00 j8 0x9f90 ; XXXX uhhh.. do what now
9f92: 92 00 nop16 ; these look like infinite loops?
9f94: d5 00 j8 0x9f94 ; another infinite loop
9f96: 92 00 nop16 ;
9f98: dd 9e ret5 $lp ; uh just return... something...
9f9a: 92 00 nop16
; ----------- 0x9f9c: (re)set interrupt table
9f9c: 46 00 01 00 sethi $r0,#0x100
9fa0: 46 10 01 5f sethi $r1,#0x15f
9fa4: 58 10 88 48 ori $r1,$r1,#0x848
9fa8: 46 20 01 00 sethi $r2,#0x100
9fac: aa 41 swi333.bi $r1,[$r0],#0x4
9fae: 58 21 00 40 ori $r2,$r2,#0x40
9fb2: 4c 01 7f fb bne $r0,$r2,0x9fa8
9fb6: dd 9e ret5 $lp
; ----------- 0x9fb8: init_interrupt_table()
9fb8: 46 00 01 00 sethi $r0,#0x100 ; $r0 = 0x0010_0000
9fbc: 46 10 01 5f sethi $r1,#0x15f ; $r1 = 0x0015_f000
9fc0: 58 10 88 48 ori $r1,$r1,#0x848 ; $r1 = 0x0015_f848
9fc4: 46 20 01 00 sethi $r2,#0x100 ; LOOP: $r2 = 0x0010_0000
9fc8: aa 41 swi333.bi $r1,[$r0],#0x4 ; copy $r1 (0x0015f848) to [$r0], $r0 += 4
9fca: 58 21 00 40 ori $r2,$r2,#0x40 ; $r2 = 0x0010_0040
9fce: 4c 01 7f fb bne $r0,$r2,0x9fc4 ; UNTIL: $r0 == 0x0010_0040
9fd2: 84 00 movi55 $r0,#0x0 ; (sets a (fake?) vector table at 0x0010_0000~0x0010_0040)
9fd4: 64 05 e4 03 mtsr $r0,$misc_ctl ; clear $misc_ctl
9fd8: 46 00 01 00 sethi $r0,#0x100 ; $r0 = 0x0010_0000
9fdc: 64 02 24 03 mtsr $r0,$ivb ; set ESZ=0 (4 byte vector entries), base addr 0x0010_0000
9fe0: 64 02 00 02 mfsr $r0,$psw ; (^^^ ignored if MCU)
9fe4: 42 00 04 09 bclr $r0,$r0,#0x1 ; clear $psw bit 1
9fe8: 64 02 00 03 mtsr $r0,$psw ; set $psw - INTLEVEL -> 0
9fec: 64 00 00 08 dsb
9ff0: dd 9e ret5 $lp
9ff2: 92 00 nop16
; ----------- 0x9ff4: init_globals_and_heap()
9ff4: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp} ; save $lp on the stack
9ff8: ef fc addi10.sp #-4 ; move stack pointer
9ffa: 3e 38 00 04 addi.gp $r3,#0x4 ; $r3 = $gp+4
9ffe: 3e 0f fe 78 addi.gp $r0,#-392 ; $r0 = $gp-392 (0x0010_0040, still in SRAM)
a002: 9a 98 sub333 $r2,$r3,$r0 ; $r2 = $r3 - $r0 (=396?)
a004: 44 10 db a4 movi $r1,#0xdba4 ; $r1 = 0xdba4 (???396 bytes of data already in flash???)
a008: 49 00 00 4e jal 0xa0a4 ; memcpy(dest=$r0, src=$r1, n=$r2)
a00c: 3e 08 00 04 addi.gp $r0,#0x4 ; memset dest = $gp+4
a010: 3e 38 19 50 addi.gp $r3,#0x1950 ; $r3 = $gp+0x1950
a014: 84 20 movi55 $r1,#0x0 ; memset byte = 0x00
a016: 9a 98 sub333 $r2,$r3,$r0 ; memset size = ($gp+0x1950) - ($gp+0x4)
a018: ec 04 addi10.sp #0x4 ; move stack pointer
a01a: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp} ; pop $lp off stack
a01e: 48 00 00 4d j 0xa0b8 ; memset(void *$r0, int $r1, size_t $r2); return
a022: 92 00 nop16
; ----------- 0xa024: initialize stack / heap / system setup / etc.
a024: 3b ff fc bc smw.adm $sp,[$sp],$sp,#0x2 ! {$lp} ; save $lp on the stack
a028: 51 ff ff fc addi $sp,$sp,#-4 ; move stack pointer
a02c: 49 ff ff e4 jal 0x9ff4 ; init_globals_and_heap()
a030: 49 ff ff c4 jal 0x9fb8 ; init_interrupt_table()
a034: ec 04 addi10.sp #0x4 ; pop $lp off the stack
a036: 3b ff fc 84 lmw.bim $sp,[$sp],$sp,#0x2 ! {$lp} ; load saved $lp from stack
a03a: 48 00 00 05 j 0xa044 ; jump to the ret5 $lp below
a03e: 92 00 nop16
a040: dd 9e ret5 $lp
a042: 92 00 nop16
a044: dd 9e ret5 $lp
a046: 92 00 nop16
; ----------- 0xa048: set_int_mask($r0)
a048: 64 03 00 03 mtsr $r0,$int_mask
a04c: dd 9e ret5 $lp
a04e: 92 00 nop16
a050: 64 03 20 02 mfsr $r0,$int_pend
a054: 42 00 40 08 bset $r0,$r0,#0x10
a058: 64 03 20 03 mtsr $r0,$int_pend
a05c: 64 00 00 08 dsb
a060: dd 9e ret5 $lp
a062: 92 00 nop16
a064: 44 00 00 10 movi $r0,#0x10
a068: 64 03 20 03 mtsr $r0,$int_pend
a06c: 64 00 00 08 dsb
a070: dd 9e ret5 $lp
a072: 92 00 nop16
; ---------- 0xa074: disable interrupts
a074: 64 02 00 43 setgie.d
a078: 64 00 00 08 dsb
a07c: dd 9e ret5 $lp
a07e: 92 00 nop16
; ---------- 0xa080: enable interrupts
a080: 64 12 00 43 setgie.e
a084: 64 00 00 08 dsb
a088: dd 9e ret5 $lp
a08a: 92 00 nop16
; ---------- 0xa08c: memcmp(void *s1=$r0, void *s2=$r1, n=$r2), $r0=0 if same, byte diff if not
a08c: 99 42 add333 $r5,$r0,$r2 ; $r5 = $r0+$r2
a08e: d0 09 beqs38 $r0,0xa0a0 ; do: if $r0 == $r5: return 0
a090: 08 30 00 01 lbi.bi $r3,[$r0],#0x1 ; $r3 = *$r0++
a094: 08 40 80 01 lbi.bi $r4,[$r1],#0x1 ; $r4 = *$r1++
a098: 4c 32 3f fb beq $r3,$r4,0xa08e ; while $r3 == $r4
a09c: 9a 1c sub333 $r0,$r3,$r4 ; $r0 = $r3 - $r4
a09e: dd 9e ret5 $lp ; return $r0
a0a0: 84 00 movi55 $r0,#0x0 ;
a0a2: dd 9e ret5 $lp ; return 0
; ---------- 0xa0a4: memcpy(void *dest=$r0, void *src=$r1, size_t n=$r2)
a0a4: 80 60 mov55 $r3,$r0 ; $r3 = $r0
a0a6: c2 07 beqz38 $r2,0xa0b4 ; if ($r2 == 0): return
a0a8: 99 4a add333 $r5,$r1,$r2 ; $r5 = $r1 + $r2
a0aa: 08 40 80 01 lbi.bi $r4,[$r1],#0x1 ; do: $r4 = [$r1++]
a0ae: 18 41 80 01 sbi.bi $r4,[$r3],#0x1 ; [$r3++] = $r4
a0b2: d9 fc bnes38 $r1,0xa0aa ; while $r1 != $r5
a0b4: dd 9e ret5 $lp ; return
a0b6: 92 00 nop16
; ----------- 0xa0b8: memset(void *$r0, int $r1, size_t $r2)
a0b8: 80 60 mov55 $r3,$r0 ; $r3 = $r0
a0ba: 99 5a add333 $r5,$r3,$r2 ; $r5 = $r3 + $r2
a0bc: d3 04 beqs38 $r3,0xa0c4 ; while $r3 != $r5:
a0be: 18 11 80 01 sbi.bi $r1,[$r3],#0x1 ; [$r3] = $r1; $r3+=1
a0c2: d5 fd j8 0xa0bc ; endwhile
a0c4: dd 9e ret5 $lp ; return
a0c6: 92 00 nop16
; ---- I think this section is actually data - or maybe we have the wrong
; ---- endianness? Wonder if something in the bimg hdr tells us this..
a0c8: 00 00 21 10 lbi $r0,[$r0+#0x2110]
a0cc: 42 20 63 30 *unknown*
a0d0: 84 40 movi55 $r2,#0x0
a0d2: a5 50 lhi333 $r5,[$r2+#0x0]
a0d4: c6 60 beqz38 $r6,0xa194
a0d6: e7 70 slti45 $r11,#0x10
a0d8: 08 81 29 91 lbi.bi $r8,[$r2],#0x2991
a0dc: 4a a1 6b b1 *unknown*
a0e0: 8c c1 addi45 $r6,#0x1
a0e2: ad d1 shi333 $r7,[$r2+#0x2]
a0e4: ce e1 bnez38 $r6,0xa0a6
a0e6: ef f1 addi10.sp #-15
a0e8: 31 12 10 02 flsi.bi $fs17,[$r4],#0x8
a0ec: 73 32 52 22 *unknown*
a0f0: b5 52 lwi450 $r10,[$r18]
a0f2: 94 42 slli333 $r1,$r0,#0x2
a0f4: f7 72 lwi37.sp $r7,[+#0x1c8]
a0f6: d6 62 beqs38 $r6,0xa1ba
a0f8: 39 93 18 83 *unknown*
a0fc: 7b b3 5a a3 *unknown*
a100: bd d3 swi37 $r5,[$fp+#0x14c]
a102: 9c c3 addi333 $r3,$r0,#0x3
a104: ff f3 not33 $r7,$r6
a106: de e3 bnes38 $r6,0xa0cc
a108: 62 24 43 34 *unknown*
a10c: 20 04 01 14 lbsi $r0,[$r8+#0x114]
a110: e6 64 slti45 $r3,#0x4
a112: c7 74 beqz38 $r7,0xa1fa
a114: a4 44 lhi333 $r1,[$r0+#0x8]
a116: 85 54 movi55 $r10,#-12
a118: 6a a5 4b b5 *unknown*
a11c: 28 85 09 95 lbsi.bi $r8,[$r10],#0x995
a120: ee e5 addi10.sp #-283
a122: cf f5 bnez38 $r7,0xa10c
a124: ac c5 shi333 $r3,[$r0+#0xa]
a126: 8d d5 addi45 $r18,#0x15
a128: 53 36 72 26 subri $r19,$r12,#-3546
a12c: 11 16 30 06 sbi $r17,[$r12+#0x3006]
a130: d7 76 beqs38 $r7,0xa21c
a132: f6 66 lwi37.sp $r6,[+#0x198]
a134: 95 56 slli333 $r5,$r2,#0x6
a136: b4 46 lwi450 $r2,[$r6]
a138: 5b b7 7a a7 beqc $p1,#-134,0xa086
a13c: 19 97 38 87 sbi.bi $r25,[$r14],#0x3887
a140: df f7 bnes38 $r7,0xa12e
a142: fe e7 or33 $r3,$r4
a144: 9d d7 addi333 $r7,$r2,#0x7
a146: bc c7 swi37 $r4,[$fp+#0x11c]
a148: c4 48 beqz38 $r4,0xa1d8
a14a: e5 58 sltsi45 $r10,#0x18
a14c: 86 68 movi55 $r19,#0x8
a14e: a7 78 lbi333 $r5,[$r7+#0x0]
a150: 40 08 61 18 *unknown*
a154: 02 28 23 38 lhi $r2,[$r16+#0x4670]
a158: cc c9 bnez38 $r4,0xa0ea
a15a: ed d9 addi10.sp #0x1d9
a15c: 8e e9 subi45 $r7,#0x9
a15e: af f9 sbi333 $r7,[$r7+#0x1]
a160: 48 89 69 99 j 0xff137492
a164: 0a a9 2b b9 lhi.bi $r10,[$r18],#0x5772
a168: f5 5a lwi37.sp $r5,[+#0x168]
a16a: d4 4a beqs38 $r4,0xa1fe
a16c: b7 7a swi450 $r11,[$p0]
a16e: 96 6a seb33 $r1,$r5
a170: 71 1a 50 0a *unknown*
a174: 33 3a 12 2a fssi.bi $fs19,[$r20],#0x8a8
a178: fd db movd44 $p0,$r22
a17a: dc cb bnes38 $r4,0xa110
a17c: bf fb swi37 $r7,[$fp+#0x1ec]
a17e: 9e eb subi333 $r3,$r5,#0x3
a180: 79 9b 58 8b *unknown*
a184: 3b bb 1a ab *unknown*
a188: a6 6c lbi333 $r1,[$r5+#0x4]
a18a: 87 7c movi55 $p1,#-4
a18c: e4 4c sltsi45 $r2,#0xc
a18e: c5 5c beqz38 $r5,0xa246
a190: 22 2c 03 3c lhsi $r2,[$r24+#0x678]
a194: 60 0c 41 1c amaddl2.s $d0,$r24,$r16,[$i0],[$i4],$m3,$m5
a198: ae ed sbi333 $r3,[$r5+#0x5]
a19a: 8f fd subi45 $r19,#0x1d
a19c: ec cd addi10.sp #0xcd
a19e: cd dd bnez38 $r5,0xa158
a1a0: 2a ad 0b bd lhsi.bi $r10,[$p0],#0x177a
a1a4: 68 8d 49 9d *unknown*
a1a8: 97 7e bmski33 $r5,#0x7
a1aa: b6 6e swi450 $r3,[$r14]
a1ac: d5 5e j8 0xa268
a1ae: f4 4e lwi37.sp $r4,[+#0x138]
a1b0: 13 3e 32 2e shi $r19,[$fp+#0x645c]
a1b4: 51 1e 70 0e addi $r17,$fp,#-4082
a1b8: 9f ff subi333 $r7,$r7,#0x7
a1ba: be ef swi37 $r6,[$fp+#0x1bc]
a1bc: dd df *unknown*
a1be: fc cf pop25 $r10,#120 ! {$r6~$r10, $fp, $gp, $lp}
a1c0: 1b bf 3a af shi.bi $p1,[$lp],#0x755e
a1c4: 59 9f 78 8f ori $r25,$lp,#0x788f
a1c8: 88 91 add45 $r4,$r17
a1ca: a9 81 swi333 $r6,[$r0+#0x4]
a1cc: ca b1 bnez38 $r2,0xa12e
a1ce: eb a1 ex9.it #417
a1d0: 0c d1 2d c1 lwi.bi $r13,[$r2],#0xb704
a1d4: 4e f1 6f e1 *unknown*
a1d8: 80 10 mov55 $r0,$r16
a1da: a1 00 lwi333 $r4,[$r0+#0x0]
a1dc: c2 30 beqz38 $r2,0xa23c
a1de: e3 20 slt45 $r9,$r0
a1e0: 04 50 25 40 lwi $r5,[$r0+#0x9500]
a1e4: 46 70 67 60 sethi $r7,#0x6760
a1e8: b9 83 swi37 $r1,[$fp+#0xc]
a1ea: 98 93 add333 $r2,$r2,$r3
a1ec: fb a3 movpi45 $r17,#0x13
a1ee: da b3 bnes38 $r2,0xa154
a1f0: 3d c3 1c d3 lhi.gp $fp,[+#-116314]
a1f4: 7f e3 5e f3 *unknown*
a1f8: b1 02 addri36.sp $r4,#0x8
a1fa: 90 12 srai45 $r0,#0x12
a1fc: f3 22 lwi37.sp $r3,[+#0x88]
a1fe: d2 32 beqs38 $r2,0xa262
a200: 35 42 14 52 fldi.bi $fd20,[$r4],#0x1148
a204: 77 62 56 72 *unknown*
a208: ea b5 ex9.it #181
a20a: cb a5 bnez38 $r3,0xa154
a20c: a8 95 swi333 $r2,[$r2+#0x14]
a20e: 89 85 add45 $r16,$r5
a210: 6e f5 4f e5 *unknown*
a214: 2c d5 0d c5 *unknown*
a218: e2 34 slt45 $r1,$r20
a21a: c3 24 beqz38 $r3,0xa262
a21c: a0 14 lwi333 $r0,[$r2+#0x10]
a21e: 81 04 mov55 $r8,$r4
a220: 66 74 47 64 bitci $r7,$r8,#0x4764
a224: 24 54 05 44 *unknown*
a228: db a7 bnes38 $r3,0xa176
a22a: fa b7 movpi45 $r5,#0x27
a22c: 99 87 add333 $r6,$r0,$r7
a22e: b8 97 swi37 $r0,[$fp+#0x5c]
a230: 5f e7 7e f7 sltsi $lp,$r14,#-265
a234: 1d c7 3c d7 swi.bi $fp,[$r14],#0xf35c
a238: d3 26 beqs38 $r3,0xa284
a23a: f2 36 lwi37.sp $r2,[+#0xd8]
a23c: 91 06 srai45 $r8,#0x6
a23e: b0 16 addri36.sp $r0,#0x58
a240: 57 66 76 76 xori $r22,$r12,#0x7676
a244: 15 46 34 56 swi $r20,[$r12+#0xd158]
a248: 4c d9 6d c9 bne $r13,$r18,0x7dda
a24c: 0e f9 2f e9 *unknown*
a250: c8 99 bnez38 $r0,0xa182
a252: e9 89 bnezs8 0xa164
a254: 8a b9 sub45 $r5,$r25
a256: ab a9 swi333.bi $r6,[$r5],#0x4
a258: 44 58 65 48 movi $r5,#-498360
a25c: 06 78 27 68 *unknown*
a260: c0 18 beqz38 $r0,0xa290
a262: e1 08 slts45 $r8,$r8
a264: 82 38 mov55 $r17,$r24
a266: a3 28 lwi333.bi $r4,[$r5],#0x0
a268: 7d cb 5c db *unknown*
a26c: 3f eb 1e fb addi.gp $lp,#0x31efb
a270: f9 8b ifcall9 0xa586
a272: d8 9b bnes38 $r0,0xa1a8
a274: bb ab swi37 $r3,[$fp+#0xac]
a276: 9a bb sub333 $r2,$r7,$r3
a278: 75 4a 54 5a *unknown*
a27c: 37 6a 16 7a fsdi.bi $fd22,[$r20],#0x19e8
a280: f1 0a lwi37.sp $r1,[+#0x28]
a282: d0 1a beqs38 $r0,0xa2b6
a284: b3 2a lwi45.fe $r9,#-88
a286: 92 3a srli45 $r1,#0x1a
a288: 2e fd 0f ed lbsi.gp $r15,[+#-192531]
a28c: 6c dd 4d cd *unknown*
a290: aa bd swi333.bi $r2,[$r7],#0x14
a292: 8b ad sub45 $r17,$r13
a294: e8 9d beqzs8 0xa1ce
a296: c9 8d bnez38 $r1,0xa1b0
a298: 26 7c 07 6c dprefi.w ???,[$r24+#0x1db0]
a29c: 64 5c 45 4c msync ???
a2a0: a2 3c lwi333.bi $r0,[$r7],#0x10
a2a2: 83 2c mov55 $r25,$r12
a2a4: e0 1c slts45 $r0,$fp
a2a6: c1 0c beqz38 $r1,0xa2be
a2a8: 1f ef 3e ff *unknown*
a2ac: 5d cf 7c df slti $fp,$lp,#-801
a2b0: 9b af sub333 $r6,$r5,$r7
a2b2: ba bf swi37 $r2,[$fp+#0xfc]
a2b4: d9 8f bnes38 $r1,0xa1d2
a2b6: f8 9f ifcall9 0xa3f4
a2b8: 17 6e 36 7e *unknown*
a2bc: 55 4e 74 5e andi $r20,$fp,#0x745e
a2c0: 93 2e srli45 $r9,#0xe
a2c2: b2 3e lwi45.fe $r1,#-8
a2c4: d1 0e beqs38 $r1,0xa2e0
a2c6: f0 1e lwi37.sp $r0,[+#0x78]
a2c8: 80 68 mov55 $r3,$r8
a2ca: 1f 00 00 10 *unknown*
a2ce: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2d2: 1f 00 00 20 *unknown*
a2d6: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2da: 1f 00 00 40 *unknown*
a2de: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2e2: 1f 00 00 80 *unknown*
a2e6: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2ea: 1f 00 40 00 *unknown*
a2ee: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2f2: 1f 00 00 01 *unknown*
a2f6: 00 00 80 68 lbi $r0,[$r1+#0x68]
a2fa: 1f 00 10 00 *unknown*
a2fe: 00 00 80 68 lbi $r0,[$r1+#0x68]
a302: 1f 00 08 00 *unknown*
a306: 00 00 80 69 lbi $r0,[$r1+#0x69]
a30a: 1f 00 08 00 *unknown*
a30e: 00 00 80 69 lbi $r0,[$r1+#0x69]
a312: 1f 00 04 00 *unknown*
a316: 00 00 80 68 lbi $r0,[$r1+#0x68]
a31a: 1f 00 01 00 *unknown*
a31e: 00 00 00 69 lbi $r0,[$r0+#0x69]
a322: 1f 00 00 04 *unknown*
a326: 00 00 00 68 lbi $r0,[$r0+#0x68]
a32a: 1f 00 00 20 *unknown*
a32e: 00 00 80 68 lbi $r0,[$r1+#0x68]
a332: 1f 00 00 08 *unknown*
a336: 00 00 80 68 lbi $r0,[$r1+#0x68]
a33a: 1f 00 00 04 *unknown*
a33e: 00 00 80 68 lbi $r0,[$r1+#0x68]
a342: 1f 00 04 00 *unknown*
a346: 00 00 80 68 lbi $r0,[$r1+#0x68]
a34a: 1f 00 80 00 *unknown*
a34e: 00 00 80 68 lbi $r0,[$r1+#0x68]
a352: 1f 00 20 00 *unknown*
a356: 00 00 80 68 lbi $r0,[$r1+#0x68]
a35a: 1f 00 00 02 *unknown*
a35e: 00 00 00 48 lbi $r0,[$r0+#0x48]
a362: 20 00 00 1c lbsi $r0,[$r0+#0x1c]
a366: 20 00 00 20 lbsi $r0,[$r0+#0x20]
a36a: 20 00 00 24 lbsi $r0,[$r0+#0x24]
a36e: 20 00 00 28 lbsi $r0,[$r0+#0x28]
a372: 20 00 00 0d lbsi $r0,[$r0+#0xd]
a376: 20 00 00 64 lbsi $r0,[$r0+#0x64]
a37a: 20 00 10 00 lbsi $r0,[$r0+#0x1000]
a37e: 30 00 f0 87 cplwi.bi cp3,$cpr0,[$r1],#0x21c
a382: f0 87 swi37.sp $r0,[+#0x1c]
a384: f0 87 swi37.sp $r0,[+#0x1c]
a386: 00 00 05 0a lbi $r0,[$r0+#0x50a]
a38a: 05 0a 03 05 lwi $r16,[$r20+#0xc14]
a38e: 02 09 02 02 lhi $r0,[$r18+#0x404]
a392: 01 05 01 0e lbi $r16,[$r10+#0x10e]
a396: 03 0a 00 03 lhi $r16,[$r20+#0x6]
a39a: 00 0c 01 11 lbi $r0,[$r24+#0x111]
a39e: 01 12 04 14 lbi $r17,[$r4+#0x414]
a3a2: 05 14 05 0b lwi $r17,[$r8+#0x142c]
a3a6: ff ff or33 $r7,$r7
a3a8: 03 06 02 0a lhi $r16,[$r12+#0x414]
a3ac: 04 03 01 06 lwi $r0,[$r6+#0x418]
a3b0: 02 00 03 0b lhi $r0,[$r0+#0x616]
a3b4: 00 04 00 0d lbi $r0,[$r8+#0xd]
a3b8: 04 0e 01 13 lwi $r0,[$fp+#0x44c]
a3bc: 03 12 00 12 lhi $r17,[$r4+#0x24]
a3c0: 05 00 03 01 lwi $r16,[$r0+#0xc04]
a3c4: 02 08 02 01 lhi $r0,[$r16+#0x402]
a3c8: 02 06 01 07 lhi $r0,[$r12+#0x20e]
a3cc: 05 06 01 00 lwi $r16,[$r12+#0x400]
a3d0: 00 05 00 0e lbi $r0,[$r10+#0xe]
a3d4: 02 10 01 14 lhi $r1,[$r0+#0x228]
a3d8: 03 13 00 13 lhi $r17,[$r6+#0x26]
a3dc: 04 00 04 06 lwi $r0,[$r0+#0x1018]
a3e0: 03 07 02 04 lhi $r16,[$r14+#0x408]
a3e4: 04 02 01 08 lwi $r0,[$r4+#0x420]
a3e8: 01 0b 04 09 lbi $r16,[$r22+#0x409]
a3ec: 00 07 00 0f lbi $r0,[$r14+#0xf]
a3f0: 02 11 01 15 lhi $r1,[$r2+#0x22a]
a3f4: 03 14 00 14 lhi $r17,[$r8+#0x28]
a3f8: 05 02 04 04 lwi $r16,[$r4+#0x1010]
a3fc: 03 08 03 02 lhi $r16,[$r16+#0x604]
a400: 01 01 01 09 lbi $r16,[$r2+#0x109]
a404: 01 0c 04 0a lbi $r16,[$r24+#0x40a]
a408: 00 08 00 10 lbi $r0,[$r16+#0x10]
a40c: 05 0e 02 15 lwi $r16,[$fp+#0x854]
a410: 02 12 00 15 lhi $r1,[$r4+#0x2a]
a414: 05 01 03 03 lwi $r16,[$r2+#0xc0c]
a418: 03 09 02 05 lhi $r16,[$r18+#0x40a]
a41c: 01 02 01 0a lbi $r16,[$r4+#0x10a]
a420: 02 0b 04 0b lhi $r0,[$r22+#0x816]
a424: 00 09 00 11 lbi $r0,[$r18+#0x11]
a428: 05 0c 04 15 lwi $r16,[$r24+#0x1054]
a42c: 02 13 ff ff lhi $r1,[$r7+#-2]
a430: 05 0b 02 03 lwi $r16,[$r22+#0x80c]
a434: 04 08 02 07 lwi $r0,[$r16+#0x81c]
a438: 01 03 03 0d lbi $r16,[$r6+#0x30d]
a43c: 02 0c 03 00 lhi $r0,[$r24+#0x600]
a440: 00 0a 01 0f lbi $r0,[$r20+#0x10f]
a444: 05 0d 04 12 lwi $r16,[$p0+#0x1048]
a448: 02 14 ff ff lhi $r1,[$r9+#-2]
a44c: 04 0c 03 04 lwi $r0,[$r24+#0xc10]
a450: 04 07 04 05 lwi $r0,[$r14+#0x1014]
a454: 01 04 01 00 lbi $r16,[$r8+#0x100]
a458: 02 0e 00 02 lhi $r0,[$fp+#0x4]
a45c: 00 0b 01 10 lbi $r0,[$r22+#0x110]
a460: 04 0d 04 13 lwi $r0,[$p0+#0x104c]
a464: 05 12 ff ff lwi $r17,[$r5+#-4]
a468: ff ff or33 $r7,$r7
a46a: ff ff or33 $r7,$r7
a46c: ff ff or33 $r7,$r7
a46e: ff ff or33 $r7,$r7
a470: ff ff or33 $r7,$r7
a472: ff ff or33 $r7,$r7
a474: ff ff or33 $r7,$r7
a476: ff ff or33 $r7,$r7
a478: ff ff or33 $r7,$r7
a47a: ff ff or33 $r7,$r7
a47c: ff ff or33 $r7,$r7
a47e: ff ff or33 $r7,$r7
a480: ff ff or33 $r7,$r7
a482: ff ff or33 $r7,$r7
a484: ff ff or33 $r7,$r7
a486: ff ff or33 $r7,$r7
a488: ff ff or33 $r7,$r7
a48a: ff ff or33 $r7,$r7
a48c: ff ff or33 $r7,$r7
a48e: ff ff or33 $r7,$r7
a490: ff ff or33 $r7,$r7
a492: ff ff or33 $r7,$r7
a494: 06 00 06 01 *unknown*
a498: 06 02 06 03 *unknown*
a49c: 06 04 06 05 *unknown*
a4a0: 06 06 06 07 *unknown*
a4a4: 06 08 06 09 *unknown*
a4a8: 06 0a 06 0b *unknown*
a4ac: 06 0c ff ff *unknown*
a4b0: 06 0d ff ff *unknown*
a4b4: ff ff or33 $r7,$r7
a4b6: ff ff or33 $r7,$r7
a4b8: ff ff or33 $r7,$r7
a4ba: ff ff or33 $r7,$r7
a4bc: ff ff or33 $r7,$r7
a4be: ff ff or33 $r7,$r7
a4c0: 05 00 05 01 lwi $r16,[$r0+#0x1404]
a4c4: 05 02 05 03 lwi $r16,[$r4+#0x140c]
a4c8: 05 04 05 05 lwi $r16,[$r8+#0x1414]
a4cc: 05 06 05 07 lwi $r16,[$r12+#0x141c]
a4d0: 05 08 05 09 lwi $r16,[$r16+#0x1424]
a4d4: 05 0a 05 0b lwi $r16,[$r20+#0x142c]
a4d8: 05 0c ff ff lwi $r16,[$r25+#-4]
a4dc: 05 0d ff ff lwi $r16,[$p1+#-4]
a4e0: ff ff or33 $r7,$r7
a4e2: ff ff or33 $r7,$r7
a4e4: ff ff or33 $r7,$r7
a4e6: ff ff or33 $r7,$r7
a4e8: ff ff or33 $r7,$r7
a4ea: ff ff or33 $r7,$r7
a4ec: 04 00 04 01 lwi $r0,[$r0+#0x1004]
a4f0: 04 02 04 03 lwi $r0,[$r4+#0x100c]
a4f4: 04 04 04 05 lwi $r0,[$r8+#0x1014]
a4f8: 04 06 04 07 lwi $r0,[$r12+#0x101c]
a4fc: 04 08 04 09 lwi $r0,[$r16+#0x1024]
a500: 04 0a 04 0b lwi $r0,[$r20+#0x102c]
a504: ff ff or33 $r7,$r7
a506: 04 0c ff ff lwi $r0,[$r25+#-4]
a50a: ff ff or33 $r7,$r7
a50c: ff ff or33 $r7,$r7
a50e: ff ff or33 $r7,$r7
a510: ff ff or33 $r7,$r7
a512: ff ff or33 $r7,$r7
a514: ff ff or33 $r7,$r7
a516: ff ff or33 $r7,$r7
a518: 03 00 ff ff lhi $r16,[$r1+#-2]
a51c: 03 01 03 02 lhi $r16,[$r2+#0x604]
a520: 03 03 03 04 lhi $r16,[$r6+#0x608]
a524: 03 05 03 06 lhi $r16,[$r10+#0x60c]
a528: 03 07 03 08 lhi $r16,[$r14+#0x610]
a52c: 03 09 03 0a lhi $r16,[$r18+#0x614]
a530: 03 0b 03 0c lhi $r16,[$r22+#0x618]
a534: 03 0d ff ff lhi $r16,[$p1+#-2]
a538: ff ff or33 $r7,$r7
a53a: ff ff or33 $r7,$r7
a53c: ff ff or33 $r7,$r7
a53e: ff ff or33 $r7,$r7
a540: ff ff or33 $r7,$r7
a542: ff ff or33 $r7,$r7
a544: 02 00 02 01 lhi $r0,[$r0+#0x402]
a548: 02 02 ff ff lhi $r0,[$r5+#-2]
a54c: ff ff or33 $r7,$r7
a54e: ff ff or33 $r7,$r7
a550: 02 03 ff ff lhi $r0,[$r7+#-2]
a554: ff ff or33 $r7,$r7
a556: ff ff or33 $r7,$r7
a558: 02 08 02 09 lhi $r0,[$r16+#0x412]
a55c: 02 0a 02 0b lhi $r0,[$r20+#0x416]
a560: 02 0c ff ff lhi $r0,[$r25+#-2]
a564: ff ff or33 $r7,$r7
a566: ff ff or33 $r7,$r7
a568: ff ff or33 $r7,$r7
a56a: ff ff or33 $r7,$r7
a56c: ff ff or33 $r7,$r7
a56e: ff ff or33 $r7,$r7
a570: 00 05 ff ff lbi $r0,[$r11+#-1]
a574: 02 00 0e 05 lhi $r0,[$r0+#0x1c0a]
a578: 00 01 01 01 lbi $r0,[$r2+#0x101]
a57c: 01 02 00 02 lbi $r16,[$r4+#0x2]
a580: 00 03 00 02 lbi $r0,[$r6+#0x2]
a584: 00 03 01 03 lbi $r0,[$r6+#0x103]
a588: 02 04 00 04 lhi $r0,[$r8+#0x8]
a58c: 00 05 00 04 lbi $r0,[$r10+#0x4]
a590: 00 05 01 05 lbi $r0,[$r10+#0x105]
a594: 00 00 ff ff lbi $r0,[$r1+#-1]
a598: 02 00 00 01 lhi $r0,[$r0+#0x2]
a59c: 01 01 02 01 lbi $r16,[$r2+#0x201]
a5a0: 02 02 01 02 lhi $r0,[$r4+#0x204]
a5a4: 00 02 00 03 lbi $r0,[$r4+#0x3]
a5a8: 01 03 02 03 lbi $r16,[$r6+#0x203]
a5ac: 02 04 ff ff lhi $r0,[$r9+#-2]
a5b0: 02 04 00 05 lhi $r0,[$r8+#0xa]
a5b4: 01 05 02 05 lbi $r16,[$r10+#0x205]
a5b8: 00 00 ff ff lbi $r0,[$r1+#-1]
a5bc: 03 00 01 01 lhi $r16,[$r0+#0x202]
a5c0: 02 01 03 01 lhi $r0,[$r2+#0x602]
a5c4: 03 02 02 02 lhi $r16,[$r4+#0x404]
a5c8: 01 02 01 03 lbi $r16,[$r4+#0x103]
a5cc: 02 03 03 03 lhi $r0,[$r6+#0x606]
a5d0: 03 04 02 04 lhi $r16,[$r8+#0x408]
a5d4: 00 04 01 05 lbi $r0,[$r8+#0x105]
a5d8: 02 05 06 05 lhi $r0,[$r10+#0xc0a]
a5dc: 02 00 ff ff lhi $r0,[$r1+#-2]
a5e0: 04 00 02 01 lwi $r0,[$r0+#0x804]
a5e4: 03 01 04 01 lhi $r16,[$r2+#0x802]
a5e8: 04 02 03 02 lwi $r0,[$r4+#0xc08]
a5ec: 02 02 02 03 lhi $r0,[$r4+#0x406]
a5f0: 03 03 04 03 lhi $r16,[$r6+#0x806]
a5f4: 04 04 03 04 lwi $r0,[$r8+#0xc10]
a5f8: 02 04 06 05 lhi $r0,[$r8+#0xc0a]
a5fc: ff ff or33 $r7,$r7
a5fe: 02 05 03 00 lhi $r0,[$r10+#0x600]
a602: ff ff or33 $r7,$r7
a604: 05 00 03 01 lwi $r16,[$r0+#0xc04]
a608: 04 01 05 01 lwi $r0,[$r2+#0x1404]
a60c: 05 02 04 02 lwi $r16,[$r4+#0x1008]
a610: 03 02 03 03 lhi $r16,[$r4+#0x606]
a614: 04 03 05 03 lwi $r0,[$r6+#0x140c]
a618: 05 04 04 04 lwi $r16,[$r8+#0x1010]
a61c: 03 04 06 05 lhi $r16,[$r8+#0xc0a]
a620: ff ff or33 $r7,$r7
a622: 02 05 04 00 lhi $r0,[$r10+#0x800]
a626: ff ff or33 $r7,$r7
a628: 07 00 04 01 *unknown*
a62c: 05 01 06 01 lwi $r16,[$r2+#0x1804]
a630: 06 02 05 02 *unknown*
a634: 04 02 04 03 lwi $r0,[$r4+#0x100c]
a638: 05 03 06 03 lwi $r16,[$r6+#0x180c]
a63c: 06 04 05 04 *unknown*
a640: 04 04 06 05 lwi $r0,[$r8+#0x1814]
a644: ff ff or33 $r7,$r7
a646: 02 05 05 00 lhi $r0,[$r10+#0xa00]
a64a: ff ff or33 $r7,$r7
a64c: 07 00 05 01 *unknown*
a650: 06 01 07 01 *unknown*
a654: 07 02 06 02 *unknown*
a658: 05 02 05 03 lwi $r16,[$r4+#0x140c]
a65c: 06 03 07 03 *unknown*
a660: 07 04 06 04 *unknown*
a664: 05 04 02 05 lwi $r16,[$r8+#0x814]
a668: 06 05 0a 05 *unknown*
a66c: 05 00 ff ff lwi $r16,[$r1+#-4]
a670: 08 00 06 01 lbi.bi $r0,[$r0],#0x601
a674: 07 01 08 01 *unknown*
a678: 08 02 07 02 lbi.bi $r0,[$r4],#0x702
a67c: 06 02 06 03 *unknown*
a680: 07 03 08 03 *unknown*
a684: 08 04 07 04 lbi.bi $r0,[$r8],#0x704
a688: 06 04 0a 05 *unknown*
a68c: ff ff or33 $r7,$r7
a68e: 06 05 07 00 *unknown*
a692: ff ff or33 $r7,$r7
a694: 09 00 07 01 lbi.bi $r16,[$r0],#0x701
a698: 08 01 09 01 lbi.bi $r0,[$r2],#0x901
a69c: 09 02 08 02 lbi.bi $r16,[$r4],#0x802
a6a0: 07 02 07 03 *unknown*
a6a4: 08 03 09 03 lbi.bi $r0,[$r6],#0x903
a6a8: 09 04 08 04 lbi.bi $r16,[$r8],#0x804
a6ac: 07 04 0a 05 *unknown*
a6b0: ff ff or33 $r7,$r7
a6b2: 06 05 08 00 *unknown*
a6b6: ff ff or33 $r7,$r7
a6b8: 0a 00 08 01 lhi.bi $r0,[$r0],#0x1002
a6bc: 09 01 0a 01 lbi.bi $r16,[$r2],#0xa01
a6c0: 0a 02 09 02 lhi.bi $r0,[$r4],#0x1204
a6c4: 08 02 08 03 lbi.bi $r0,[$r4],#0x803
a6c8: 09 03 0a 03 lbi.bi $r16,[$r6],#0xa03
a6cc: 0a 04 09 04 lhi.bi $r0,[$r8],#0x1208
a6d0: 08 04 0a 05 lbi.bi $r0,[$r8],#0xa05
a6d4: ff ff or33 $r7,$r7
a6d6: 06 05 09 00 *unknown*
a6da: ff ff or33 $r7,$r7
a6dc: 0b 00 09 01 lhi.bi $r16,[$r0],#0x1202
a6e0: 0a 01 0b 01 lhi.bi $r0,[$r2],#0x1602
a6e4: 0b 02 0a 02 lhi.bi $r16,[$r4],#0x1404
a6e8: 09 02 09 03 lbi.bi $r16,[$r4],#0x903
a6ec: 0a 03 0b 03 lhi.bi $r0,[$r6],#0x1606
a6f0: 0b 04 0a 04 lhi.bi $r16,[$r8],#0x1408
a6f4: 09 04 06 05 lbi.bi $r16,[$r8],#0x605
a6f8: 0a 05 0b 05 lhi.bi $r0,[$r10],#0x160a
a6fc: 0a 00 ff ff lhi.bi $r0,[$r1],#-2
a700: 0c 00 0a 01 lwi.bi $r0,[$r0],#0x2804
a704: 0b 01 0c 01 lhi.bi $r16,[$r2],#0x1802
a708: 0c 02 0b 02 lwi.bi $r0,[$r4],#0x2c08
a70c: 0a 02 0a 03 lhi.bi $r0,[$r4],#0x1406
a710: 0b 03 0d 03 lhi.bi $r16,[$r6],#0x1a06
a714: 0c 04 0b 04 lwi.bi $r0,[$r8],#0x2c10
a718: 0a 04 0a 05 lhi.bi $r0,[$r8],#0x140a
a71c: 0b 05 0c 05 lhi.bi $r16,[$r10],#0x180a
a720: 0b 00 ff ff lhi.bi $r16,[$r1],#-2
a724: 0d 00 0b 01 lwi.bi $r16,[$r0],#0x2c04
a728: 0c 01 0e 01 lwi.bi $r0,[$r2],#0x3804
a72c: 0e 02 0c 02 *unknown*
a730: 0b 02 0d 03 lhi.bi $r16,[$r4],#0x1a06
a734: ff ff or33 $r7,$r7
a736: 0b 03 0d 04 lhi.bi $r16,[$r6],#0x1a08
a73a: 0c 04 0b 04 lwi.bi $r0,[$r8],#0x2c10
a73e: 0b 05 0c 05 lhi.bi $r16,[$r10],#0x180a
a742: 0d 05 0c 00 lwi.bi $r16,[$r10],#0x3000
a746: ff ff or33 $r7,$r7
a748: 0e 00 0e 01 *unknown*
a74c: ff ff or33 $r7,$r7
a74e: 0c 01 0c 02 lwi.bi $r0,[$r2],#0x3008
a752: ff ff or33 $r7,$r7
a754: 0c 02 0b 03 lwi.bi $r0,[$r4],#0x2c0c
a758: 0d 03 0e 04 lwi.bi $r16,[$r6],#0x3810
a75c: 0e 04 0d 04 *unknown*
a760: 0c 04 0c 05 lwi.bi $r0,[$r8],#0x3014
a764: 0d 05 0e 05 lwi.bi $r16,[$r10],#0x3814
a768: 0d 00 ff ff lwi.bi $r16,[$r1],#-4
a76c: 0f 00 0c 01 *unknown*
a770: 0e 01 0e 02 *unknown*
a774: 0e 01 0e 02 *unknown*
a778: 0c 02 12 03 lwi.bi $r0,[$r4],#0x480c
a77c: ff ff or33 $r7,$r7
a77e: 0c 03 0d 03 lwi.bi $r0,[$r6],#0x340c
a782: 0e 04 0d 04 *unknown*
a786: 0d 05 0e 05 lwi.bi $r16,[$r10],#0x3814
a78a: 00 01 0e 00 lbi $r0,[$r2+#0xe00]
a78e: ff ff or33 $r7,$r7
a790: 10 00 10 01 sbi $r0,[$r0+#0x1001]
a794: ff ff or33 $r7,$r7
a796: 0e 01 0e 02 *unknown*
a79a: ff ff or33 $r7,$r7
a79c: 10 02 12 03 sbi $r0,[$r4+#0x1203]
a7a0: ff ff or33 $r7,$r7
a7a2: 0c 03 0d 04 lwi.bi $r0,[$r6],#0x3410
a7a6: ff ff or33 $r7,$r7
a7a8: 10 04 10 05 sbi $r0,[$r8+#0x1005]
a7ac: ff ff or33 $r7,$r7
a7ae: 0e 05 0f 00 *unknown*
a7b2: ff ff or33 $r7,$r7
a7b4: 11 00 11 01 sbi $r16,[$r0+#0x1101]
a7b8: ff ff or33 $r7,$r7
a7ba: 0f 01 0f 02 *unknown*
a7be: ff ff or33 $r7,$r7
a7c0: 11 02 12 03 sbi $r16,[$r4+#0x1203]
a7c4: ff ff or33 $r7,$r7
a7c6: 0c 03 0d 04 lwi.bi $r0,[$r6],#0x3410
a7ca: ff ff or33 $r7,$r7
a7cc: 12 04 11 05 shi $r0,[$r8+#0x220a]
a7d0: ff ff or33 $r7,$r7
a7d2: 0f 05 10 00 *unknown*
a7d6: ff ff or33 $r7,$r7
a7d8: 15 01 12 01 swi $r16,[$r2+#0x4804]
a7dc: ff ff or33 $r7,$r7
a7de: 10 01 10 02 sbi $r0,[$r2+#0x1002]
a7e2: ff ff or33 $r7,$r7
a7e4: 12 02 12 03 shi $r0,[$r4+#0x2406]
a7e8: ff ff or33 $r7,$r7
a7ea: 0c 03 10 04 lwi.bi $r0,[$r6],#0x4010
a7ee: ff ff or33 $r7,$r7
a7f0: 12 04 12 05 shi $r0,[$r8+#0x240a]
a7f4: ff ff or33 $r7,$r7
a7f6: 10 05 11 00 sbi $r0,[$r10+#0x1100]
a7fa: ff ff or33 $r7,$r7
a7fc: 15 01 13 01 swi $r16,[$r2+#0x4c04]
a800: ff ff or33 $r7,$r7
a802: 11 01 11 02 sbi $r16,[$r2+#0x1102]
a806: ff ff or33 $r7,$r7
a808: 13 02 13 03 shi $r16,[$r4+#0x2606]
a80c: ff ff or33 $r7,$r7
a80e: 0d 03 10 04 lwi.bi $r16,[$r6],#0x4010
a812: ff ff or33 $r7,$r7
a814: 13 04 14 05 shi $r16,[$r8+#0x280a]
a818: ff ff or33 $r7,$r7
a81a: 11 05 11 00 sbi $r16,[$r10+#0x1100]
a81e: ff ff or33 $r7,$r7
a820: 15 01 14 01 swi $r16,[$r2+#0x5004]
a824: ff ff or33 $r7,$r7
a826: 12 01 12 02 shi $r0,[$r2+#0x2404]
a82a: ff ff or33 $r7,$r7
a82c: 14 02 14 03 swi $r0,[$r4+#0x500c]
a830: ff ff or33 $r7,$r7
a832: 12 03 12 04 shi $r0,[$r6+#0x2408]
a836: ff ff or33 $r7,$r7
a838: 14 04 14 05 swi $r0,[$r8+#0x5014]
a83c: ff ff or33 $r7,$r7
a83e: 12 05 11 00 shi $r0,[$r10+#0x2200]
a842: ff ff or33 $r7,$r7
a844: 15 01 15 01 swi $r16,[$r2+#0x5404]
a848: ff ff or33 $r7,$r7
a84a: 13 01 13 02 shi $r16,[$r2+#0x2604]
a84e: ff ff or33 $r7,$r7
a850: 15 02 15 02 swi $r16,[$r4+#0x5408]
a854: ff ff or33 $r7,$r7
a856: 13 03 13 04 shi $r16,[$r6+#0x2608]
a85a: ff ff or33 $r7,$r7
a85c: 15 04 15 04 swi $r16,[$r8+#0x5410]
a860: ff ff or33 $r7,$r7
a862: 12 05 11 00 shi $r0,[$r10+#0x2200]
a866: ff ff or33 $r7,$r7
a868: 15 01 11 00 swi $r16,[$r2+#0x4400]
a86c: ff ff or33 $r7,$r7
a86e: 14 01 14 02 swi $r0,[$r2+#0x5008]
a872: ff ff or33 $r7,$r7
a874: 14 03 15 02 swi $r0,[$r6+#0x5408]
a878: ff ff or33 $r7,$r7
a87a: 14 03 14 04 swi $r0,[$r6+#0x5010]
a87e: ff ff or33 $r7,$r7
a880: 14 05 15 04 swi $r0,[$r10+#0x5410]
a884: ff ff or33 $r7,$r7
a886: 14 05 fe 00 swi $r0,[$r11+#-2048]
a88a: 00 00 e0 1e lbi $r0,[$r1+#-8162]
a88e: 00 00 c0 3e lbi $r0,[$r1+#-16322]
a892: 00 00 a0 5e lbi $r0,[$r1+#0x205e]
a896: 00 00 80 7e lbi $r0,[$r1+#0x7e]
a89a: 00 00 5e a0 lbi $r0,[$r0+#-8544]
a89e: 00 00 3e c0 lbi $r0,[$r0+#0x3ec0]
a8a2: 00 00 1e e0 lbi $r0,[$r0+#0x1ee0]
a8a6: 00 00 00 fe lbi $r0,[$r0+#0xfe]
a8aa: 00 00 00 e0 lbi $r0,[$r0+#0xe0]
a8ae: 1e 00 00 c0 *unknown*
a8b2: 3e 00 00 a0 sbi.gp $r0,[+#0xa0]
a8b6: 5e 00 00 80 sltsi $r0,$r0,#0x80
a8ba: 7e 00 00 5e *unknown*
a8be: a0 00 lwi333 $r0,[$r0+#0x0]
a8c0: 00 3e c0 00 lbi $r3,[$gp+#-16384]
a8c4: 00 1e e0 00 lbi $r1,[$gp+#-8192]
a8c8: 00 00 fe 00 lbi $r0,[$r1+#-512]
a8cc: 1e 00 e0 00 *unknown*
a8d0: 3e 00 c0 00 sbi.gp $r0,[+#0xc000]
a8d4: 5e 00 a0 00 sltsi $r0,$r1,#0x2000
a8d8: 7e 00 80 00 *unknown*
a8dc: a0 00 lwi333 $r0,[$r0+#0x0]
a8de: 5e 00 c0 00 sltsi $r0,$r1,#-16384
a8e2: 3e 00 e0 00 sbi.gp $r0,[+#0xe000]
a8e6: 1e 00 ff 00 *unknown*
a8ea: 00 00 00 ff lbi $r0,[$r0+#0xff]
a8ee: 00 00 00 00 lbi $r0,[$r0+#0x0]
a8f2: ff 00 *unknown*
a8f4: 80 80 mov55 $r4,$r0
a8f6: 00 00 80 00 lbi $r0,[$r1+#0x0]
a8fa: 80 00 mov55 $r0,$r0
a8fc: 00 80 80 00 lbi $r8,[$r1+#0x0]
a900: 55 55 55 00 andi $r21,$r10,#0x5500
a904: 03 00 05 01 lhi $r16,[$r0+#0xa02]
a908: 02 01 02 02 lhi $r0,[$r2+#0x404]
a90c: 02 03 02 04 lhi $r0,[$r6+#0x408]
a910: ff ff or33 $r7,$r7
a912: ff 64 mul33 $r5,$r4
a914: ff 00 *unknown*
a916: 00 64 ff ff lbi $r6,[$r9+#-1]
a91a: ff 64 mul33 $r5,$r4
a91c: ff ff or33 $r7,$r7
a91e: ff 64 mul33 $r5,$r4
a920: ff ff or33 $r7,$r7
a922: ff 64 mul33 $r5,$r4
a924: ff ff or33 $r7,$r7
a926: ff 64 mul33 $r5,$r4
a928: 12 01 10 01 shi $r0,[$r2+#0x2002]
a92c: 00 00 00 40 lbi $r0,[$r0+#0x40]
a930: a7 1e lbi333 $r4,[$r3+#0x6]
a932: 07 09 00 03 *unknown*
a936: 01 02 03 01 lbi $r16,[$r4+#0x301]
a93a: 00 00 09 02 lbi $r0,[$r0+#0x902]
a93e: 5b 00 03 01 beqc $r16,#0x3,0xa940
a942: 00 a0 32 09 lbi $r10,[$r0+#0x3209]
a946: 04 00 00 01 lwi $r0,[$r0+#0x4]
a94a: 03 01 01 00 lhi $r16,[$r2+#0x200]
a94e: 09 21 11 01 lbi.bi $r18,[$r2],#0x1101
a952: 00 01 22 40 lbi $r0,[$r2+#0x2240]
a956: 00 07 05 81 lbi $r0,[$r14+#0x581]
a95a: 03 08 00 01 lhi $r16,[$r16+#0x2]
a95e: 09 04 01 00 lbi.bi $r16,[$r8],#0x100
a962: 02 03 00 00 lhi $r0,[$r6+#0x0]
a966: 00 09 21 11 lbi $r0,[$r18+#0x2111]
a96a: 01 00 01 22 lbi $r16,[$r0+#0x122]
a96e: 22 00 07 05 lhsi $r0,[$r0+#0xe0a]
a972: 83 03 mov55 $r24,$r3
a974: 40 00 01 07 *unknown*
a978: 05 04 03 40 lwi $r16,[$r8+#0xd00]
a97c: 00 01 09 04 lbi $r0,[$r2+#0x904]
a980: 02 00 01 03 lhi $r0,[$r0+#0x206]
a984: 00 00 00 09 lbi $r0,[$r0+#0x9]
a988: 21 11 01 00 lbsi $r17,[$r2+#0x100]
a98c: 01 22 cb 00 lbi $r18,[$r5+#-13568]
a990: 07 05 82 03 *unknown*
a994: 40 00 01 00 add_slli $r0,$r0,$r0,#0x8
a998: 04 03 09 04 lwi $r0,[$r6+#0x2410]
a99c: 10 03 53 00 sbi $r0,[$r6+#-11520]
a9a0: 45 00 4d 00 movi $r16,#0x4d00
a9a4: 49 00 54 00 jal 0x151a4
a9a8: 45 00 4b 00 movi $r16,#0x4b00
a9ac: 30 03 55 00 cplwi.bi cp2,$cpr0,[$r6],#0x1400
a9b0: 53 00 42 00 subri $r16,$r0,#-15872
a9b4: 2d 00 48 00 *unknown*
a9b8: 49 00 44 00 jal 0x131b8
a9bc: 20 00 47 00 lbsi $r0,[$r0+#-14592]
a9c0: 61 00 6d 00 amabbsl2.s $d0,$r0,$p1,[$i0],[$i4],$m0,$m4
a9c4: 69 00 6e 00 *unknown*
a9c8: 67 00 20 00 bitci $r16,$r0,#0x2000
a9cc: 4b 00 65 00 *unknown*
a9d0: 79 00 62 00 *unknown*
a9d4: 6f 00 61 00 *unknown*
a9d8: 72 00 64 00 *unknown*
a9dc: 1a 03 53 00 shi.bi $r0,[$r6],#-23040
a9e0: 4e 00 30 00 ifcall 0x109e0
a9e4: 30 00 30 00 cplwi.bi cp1,$cpr0,[$r0],#0x0
a9e8: 30 00 30 00 cplwi.bi cp1,$cpr0,[$r0],#0x0
a9ec: 30 00 30 00 cplwi.bi cp1,$cpr0,[$r0],#0x0
a9f0: 30 00 30 00 cplwi.bi cp1,$cpr0,[$r0],#0x0
a9f4: 31 00 00 00 flsi $fs16,[$r0+#0x0]
a9f8: 05 01 09 06 lwi $r16,[$r2+#0x2418]
a9fc: a1 01 lwi333 $r4,[$r0+#0x4]
a9fe: 05 07 19 e0 lwi $r16,[$r14+#0x6780]
aa02: 29 e7 15 00 lbsi.bi $lp,[$r14],#0x1500
aa06: 25 01 75 01 *unknown*
aa0a: 95 08 slli333 $r4,$r1,#0x0
aa0c: 81 02 mov55 $r8,$r2
aa0e: 95 01 slli333 $r4,$r0,#0x1
aa10: 75 08 81 03 *unknown*
aa14: 95 03 slli333 $r4,$r0,#0x3
aa16: 75 01 05 08 *unknown*
aa1a: 19 01 29 03 sbi.bi $r16,[$r2],#0x2903
aa1e: 91 02 srai45 $r8,#0x2
aa20: 95 01 slli333 $r4,$r0,#0x1
aa22: 75 05 91 03 *unknown*
aa26: 95 06 slli333 $r4,$r0,#0x6
aa28: 75 08 15 00 *unknown*
aa2c: 26 a4 00 05 dprefi.w ???,[$r8+#0x14]
aa30: 07 19 00 29 *unknown*
aa34: a4 81 lhi333 $r2,[$r0+#0x2]
aa36: 00 c0 06 00 lbi $r12,[$r0+#0x600]
aa3a: ff 09 *unknown*
aa3c: 50 a1 01 09 addi $r10,$r2,#0x109
aa40: 02 15 00 26 lhi $r1,[$r10+#0x4c]
aa44: ff 00 *unknown*
aa46: 75 08 95 40 *unknown*
aa4a: 81 02 mov55 $r8,$r2
aa4c: 09 03 15 00 lbi.bi $r16,[$r6],#0x1500
aa50: 26 ff 00 75 dprefi.w ???,[$lp+#0x1d4]
aa54: 08 95 40 91 lbi.bi $r9,[$r10],#-16239
aa58: 02 c0 00 00 lhi $r12,[$r0+#0x0]
aa5c: 05 01 09 80 lwi $r16,[$r2+#0x2600]
aa60: a1 01 lwi333 $r4,[$r0+#0x4]
aa62: 85 01 movi55 $r8,#0x1
aa64: 19 81 29 83 sbi.bi $r24,[$r2],#0x2983
aa68: 15 00 25 01 swi $r16,[$r0+#0x9404]
aa6c: 95 03 slli333 $r4,$r0,#0x3
aa6e: 75 01 81 02 *unknown*
aa72: 95 01 slli333 $r4,$r0,#0x1
aa74: 75 05 81 01 *unknown*
aa78: c0 05 beqz38 $r0,0xaa82
aa7a: 0c 09 01 a1 lwi.bi $r0,[$r18],#0x684
aa7e: 01 85 02 15 lbi $r24,[$r10+#0x215]
aa82: 00 25 01 95 lbi $r2,[$r10+#0x195]
aa86: 12 75 01 0a shi $r7,[$r10+#0x214]
aa8a: 83 01 mov55 $r24,$r1
aa8c: 0a 8a 01 0a lhi.bi $r8,[$r20],#0x214
aa90: 92 01 srli45 $r0,#0x1
aa92: 0a 94 01 09 lhi.bi $r9,[$r8],#0x212
aa96: cd 09 bnez38 $r5,0xaaa8
aa98: b7 09 swi450 $r8,[$r9]
aa9a: b6 09 swi450 $r0,[$r9]
aa9c: b5 09 lwi450 $r8,[$r9]
aa9e: e2 09 slt45 $r0,$r9
aaa0: ea 09 break16 #9
aaa2: e9 0a bnezs8 0xaab6
aaa4: 21 02 0a 23 lbsi $r16,[$r4+#0xa23]
aaa8: 02 0a 24 02 lhi $r0,[$r20+#0x4804]
aaac: 0a 25 02 0a lhi.bi $r2,[$r10],#0x414
aab0: 26 02 0a 27 dprefi.w srd,[$r4+#0x289c]
aab4: 02 0a 2a 02 lhi $r0,[$r20+#0x5404]
aab8: 81 02 mov55 $r8,$r2
aaba: 95 01 slli333 $r4,$r0,#0x1
aabc: 75 0e 81 01 *unknown*
aac0: c0 05 beqz38 $r0,0xaaca
aac2: 01 09 06 a1 lbi $r16,[$r18+#0x6a1]
aac6: 01 85 04 05 lbi $r24,[$r10+#0x405]
aaca: 07 95 01 75 *unknown*
aace: 08 81 03 95 lbi.bi $r8,[$r2],#0x395
aad2: e8 75 beqzs8 0xabbc
aad4: 01 15 00 25 lbi $r17,[$r10+#0x25]
aad8: 01 05 07 19 lbi $r16,[$r10+#0x719]
aadc: 00 29 e7 81 lbi $r2,[$r19+#-6271]
aae0: 00 c0 05 01 lbi $r12,[$r0+#0x501]
aae4: 09 02 a1 01 lbi.bi $r16,[$r5],#0x2101
aae8: 85 05 movi55 $r8,#0x5
aaea: 09 01 a1 00 lbi.bi $r16,[$r3],#0x2100
aaee: 05 09 19 01 lwi $r16,[$r18+#0x6404]
aaf2: 29 08 15 00 lbsi.bi $r16,[$r16],#0x1500
aaf6: 25 01 95 08 *unknown*
aafa: 75 01 81 02 *unknown*
aafe: 05 01 09 30 lwi $r16,[$r2+#0x24c0]
ab02: 09 31 16 01 lbi.bi $r19,[$r2],#0x1601
ab06: f8 26 ifcall9 0xab52
ab08: ff 07 or33 $r4,$r0
ab0a: 95 02 slli333 $r4,$r0,#0x2
ab0c: 75 0c 81 06 *unknown*
ab10: 09 38 15 81 lbi.bi $r19,[$r16],#0x1581
ab14: 25 7f 95 01 *unknown*
ab18: 75 08 81 06 *unknown*
ab1c: 05 0c 0a 38 lwi $r16,[$r24+#0x28e0]
ab20: 02 95 01 81 lhi $r9,[$r10+#0x302]
ab24: 06 c0 c0 00 *unknown*
ab28: 0e 00 08 00 *unknown*
ab2c: 04 00 02 00 lwi $r0,[$r0+#0x800]
ab30: 01 00 00 00 lbi $r16,[$r0+#0x0]
ab34: 64 00 32 00 *unknown*
ab38: 14 00 0f 00 swi $r0,[$r0+#0x3c00]
ab3c: 0a 00 00 00 lhi.bi $r0,[$r0],#0x0
ab40: 64 00 50 00 *unknown*
ab44: 3c 00 28 00 lhi.gp $r0,[+#0x5000]
ab48: 14 00 00 00 swi $r0,[$r0+#0x0]
ab4c: 14 00 0f 00 swi $r0,[$r0+#0x3c00]
ab50: 05 00 03 00 lwi $r16,[$r0+#0xc00]
ab54: 01 00 00 00 lbi $r16,[$r0+#0x0]
ab58: c8 00 bnez38 $r0,0xab58
ab5a: 96 00 zeb33 $r0,$r0
ab5c: 64 00 32 00 *unknown*
ab60: 1e 00 00 00 *unknown*
ab64: 68 12 10 00 *unknown*
ab68: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab6c: 01 00 00 00 lbi $r16,[$r0+#0x0]
ab70: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab74: 02 00 00 00 lhi $r0,[$r0+#0x0]
ab78: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab7c: 04 00 00 00 lwi $r0,[$r0+#0x0]
ab80: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab84: 08 00 00 00 lbi.bi $r0,[$r0],#0x0
ab88: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab8c: 10 00 00 00 sbi $r0,[$r0+#0x0]
ab90: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab94: 20 00 00 00 lbsi $r0,[$r0+#0x0]
ab98: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
ab9c: 40 00 00 00 add $r0,$r0,$r0
aba0: 00 69 1f 00 lbi $r6,[$r18+#0x1f00]
aba4: 80 00 mov55 $r0,$r0
aba6: 00 00 00 69 lbi $r0,[$r0+#0x69]
abaa: 1f 00 00 01 *unknown*
abae: 00 00 00 69 lbi $r0,[$r0+#0x69]
abb2: 1f 00 00 02 *unknown*
abb6: 00 00 00 68 lbi $r0,[$r0+#0x68]
abba: 1f 00 00 01 *unknown*
abbe: 00 00 00 69 lbi $r0,[$r0+#0x69]
abc2: 1f 00 00 08 *unknown*
abc6: 00 00 00 69 lbi $r0,[$r0+#0x69]
abca: 1f 00 00 10 *unknown*
abce: 00 00 00 68 lbi $r0,[$r0+#0x68]
abd2: 1f 00 00 02 *unknown*
abd6: 00 00 00 68 lbi $r0,[$r0+#0x68]
abda: 1f 00 00 04 *unknown*
abde: 00 00 00 68 lbi $r0,[$r0+#0x68]
abe2: 1f 00 01 00 *unknown*
abe6: 00 00 00 68 lbi $r0,[$r0+#0x68]
abea: 1f 00 02 00 *unknown*
abee: 00 00 00 68 lbi $r0,[$r0+#0x68]
abf2: 1f 00 04 00 *unknown*
abf6: 00 00 00 68 lbi $r0,[$r0+#0x68]
abfa: 1f 00 08 00 *unknown*
abfe: 00 00 00 68 lbi $r0,[$r0+#0x68]
ac02: 1f 00 10 00 *unknown*
ac06: 00 00 00 68 lbi $r0,[$r0+#0x68]
ac0a: 1f 00 20 00 *unknown*
ac0e: 00 00 00 68 lbi $r0,[$r0+#0x68]
ac12: 1f 00 40 00 *unknown*
ac16: 00 00 00 68 lbi $r0,[$r0+#0x68]
ac1a: 1f 00 80 00 *unknown*
ac1e: 00 00 c7 00 lbi $r0,[$r1+#-14592]
ac22: 00 00 ff 00 lbi $r0,[$r1+#-256]
ac26: 00 00 02 00 lbi $r0,[$r0+#0x200]
ac2a: 00 00 03 00 lbi $r0,[$r0+#0x300]
ac2e: 00 00 76 00 lbi $r0,[$r0+#-2560]
ac32: 00 00 61 00 lbi $r0,[$r0+#-7936]
ac36: 00 00 57 00 lbi $r0,[$r0+#-10496]
ac3a: 00 00 57 00 lbi $r0,[$r0+#-10496]
ac3e: 00 00 ff 00 lbi $r0,[$r1+#-256]
ac42: 00 00 ff 00 lbi $r0,[$r1+#-256]
ac46: 00 00 05 00 lbi $r0,[$r0+#0x500]
ac4a: 00 00 43 00 lbi $r0,[$r0+#-15616]
ac4e: 00 00 12 00 lbi $r0,[$r0+#0x1200]
ac52: 00 00 32 00 lbi $r0,[$r0+#0x3200]
ac56: 00 00 44 00 lbi $r0,[$r0+#-15360]
ac5a: 00 00 ff 00 lbi $r0,[$r1+#-256]
ac5e: 00 00 c0 00 lbi $r0,[$r1+#-16384]
ac62: 00 00 c3 00 lbi $r0,[$r1+#-15616]
ac66: 00 00 04 00 lbi $r0,[$r0+#0x400]
ac6a: 00 00 41 00 lbi $r0,[$r0+#-16128]
ac6e: 00 00 34 00 lbi $r0,[$r0+#0x3400]
ac72: 00 00 40 00 lbi $r0,[$r0+#-16384]
ac76: 00 00 45 00 lbi $r0,[$r0+#-15104]
ac7a: 00 00 77 00 lbi $r0,[$r0+#-2304]
ac7e: 00 00 d0 00 lbi $r0,[$r1+#-12288]
ac82: 00 00 b5 00 lbi $r0,[$r1+#0x3500]
ac86: 00 00 62 00 lbi $r0,[$r0+#-7680]
ac8a: 00 00 14 00 lbi $r0,[$r0+#0x1400]
ac8e: 00 00 15 00 lbi $r0,[$r0+#0x1500]
ac92: 00 00 16 00 lbi $r0,[$r0+#0x1600]
ac96: 00 00 46 00 lbi $r0,[$r0+#-14848]
ac9a: 00 00 80 00 lbi $r0,[$r1+#0x0]
ac9e: 00 00 a1 00 lbi $r0,[$r1+#0x2100]
aca2: 00 00 96 00 lbi $r0,[$r1+#0x1600]
aca6: 00 00 93 00 lbi $r0,[$r1+#0x1300]
acaa: 00 00 37 00 lbi $r0,[$r0+#0x3700]
acae: 00 00 17 00 lbi $r0,[$r0+#0x1700]
acb2: 00 00 33 00 lbi $r0,[$r0+#0x3300]
acb6: 00 00 47 00 lbi $r0,[$r0+#-14592]
acba: 00 00 81 00 lbi $r0,[$r1+#0x100]
acbe: 00 00 a2 00 lbi $r0,[$r1+#0x2200]
acc2: 00 00 97 00 lbi $r0,[$r1+#0x1700]
acc6: 00 00 94 00 lbi $r0,[$r1+#0x1400]
acca: 00 00 13 00 lbi $r0,[$r0+#0x1300]
acce: 00 00 20 00 lbi $r0,[$r0+#0x2000]
acd2: 00 00 35 00 lbi $r0,[$r0+#0x3500]
acd6: 00 00 50 00 lbi $r0,[$r0+#-12288]
acda: 00 00 82 00 lbi $r0,[$r1+#0x200]
acde: 00 00 a3 00 lbi $r0,[$r1+#0x2300]
ace2: 00 00 a0 00 lbi $r0,[$r1+#0x2000]
ace6: 00 00 95 00 lbi $r0,[$r1+#0x1500]
acea: 00 00 27 00 lbi $r0,[$r0+#0x2700]
acee: 00 00 21 00 lbi $r0,[$r0+#0x2100]
acf2: 00 00 42 00 lbi $r0,[$r0+#-15872]
acf6: 00 00 51 00 lbi $r0,[$r0+#-12032]
acfa: 00 00 83 00 lbi $r0,[$r1+#0x300]
acfe: 00 00 d4 00 lbi $r0,[$r1+#-11264]
ad02: 00 00 d3 00 lbi $r0,[$r1+#-11520]
ad06: 00 00 d1 00 lbi $r0,[$r1+#-12032]
ad0a: 00 00 26 00 lbi $r0,[$r0+#0x2600]
ad0e: 00 00 23 00 lbi $r0,[$r0+#0x2300]
ad12: 00 00 36 00 lbi $r0,[$r0+#0x3600]
ad16: 00 00 52 00 lbi $r0,[$r0+#-11776]
ad1a: 00 00 84 00 lbi $r0,[$r1+#0x400]
ad1e: 00 00 c4 00 lbi $r0,[$r1+#-15360]
ad22: 00 00 b0 00 lbi $r0,[$r1+#0x3000]
ad26: 00 00 00 00 lbi $r0,[$r0+#0x0]
ad2a: 00 00 73 00 lbi $r0,[$r0+#-3328]
ad2e: 00 00 24 00 lbi $r0,[$r0+#0x2400]
ad32: 00 00 22 00 lbi $r0,[$r0+#0x2200]
ad36: 00 00 53 00 lbi $r0,[$r0+#-11520]
ad3a: 00 00 85 00 lbi $r0,[$r1+#0x500]
ad3e: 00 00 c5 00 lbi $r0,[$r1+#-15104]
ad42: 00 00 b1 00 lbi $r0,[$r1+#0x3100]
ad46: 00 00 06 00 lbi $r0,[$r0+#0x600]
ad4a: 00 00 74 00 lbi $r0,[$r0+#-3072]
ad4e: 00 00 25 00 lbi $r0,[$r0+#0x2500]
ad52: 00 00 30 00 lbi $r0,[$r0+#0x3000]
ad56: 00 00 54 00 lbi $r0,[$r0+#-11264]
ad5a: 00 00 86 00 lbi $r0,[$r1+#0x600]
ad5e: 00 00 c6 00 lbi $r0,[$r1+#-14848]
ad62: 00 00 b2 00 lbi $r0,[$r1+#0x3200]
ad66: 00 00 a5 00 lbi $r0,[$r1+#0x2500]
ad6a: 00 00 75 00 lbi $r0,[$r0+#-2816]
ad6e: 00 00 70 00 lbi $r0,[$r0+#-4096]
ad72: 00 00 31 00 lbi $r0,[$r0+#0x3100]
ad76: 00 00 55 00 lbi $r0,[$r0+#-11008]
ad7a: 00 00 87 00 lbi $r0,[$r1+#0x700]
ad7e: 00 00 b4 00 lbi $r0,[$r1+#0x3400]
ad82: 00 00 b3 00 lbi $r0,[$r1+#0x3300]
ad86: 00 00 a6 00 lbi $r0,[$r1+#0x2600]
ad8a: 00 00 07 00 lbi $r0,[$r0+#0x700]
ad8e: 00 00 71 00 lbi $r0,[$r0+#-3840]
ad92: 00 00 65 00 lbi $r0,[$r0+#-6912]
ad96: 00 00 63 00 lbi $r0,[$r0+#-7424]
ad9a: 00 00 90 00 lbi $r0,[$r1+#0x1000]
ad9e: 00 00 b6 00 lbi $r0,[$r1+#0x3600]
ada2: 00 00 c1 00 lbi $r0,[$r1+#-16128]
ada6: 00 00 a4 00 lbi $r0,[$r1+#0x2400]
adaa: 00 00 a7 00 lbi $r0,[$r1+#0x2700]
adae: 00 00 56 00 lbi $r0,[$r0+#-10752]
adb2: 00 00 66 00 lbi $r0,[$r0+#-6656]
adb6: 00 00 64 00 lbi $r0,[$r0+#-7168]
adba: 00 00 91 00 lbi $r0,[$r1+#0x1100]
adbe: 00 00 b7 00 lbi $r0,[$r1+#0x3700]
adc2: 00 00 c2 00 lbi $r0,[$r1+#-15872]
adc6: 00 00 a1 00 lbi $r0,[$r1+#0x2100]
adca: 00 00 a4 00 lbi $r0,[$r1+#0x2400]
adce: 00 00 d2 00 lbi $r0,[$r1+#-11776]
add2: 00 00 67 00 lbi $r0,[$r0+#-6400]
add6: 00 00 60 00 lbi $r0,[$r0+#-8192]
adda: 00 00 92 00 lbi $r0,[$r1+#0x1200]
adde: 00 00 01 00 lbi $r0,[$r0+#0x100]
ade2: 02 0a 00 65 lhi $r0,[$r20+#0xca]
ade6: 00 02 01 00 lbi $r0,[$r4+#0x100]
adea: 00 02 02 00 lbi $r0,[$r4+#0x200]
adee: 00 02 04 00 lbi $r0,[$r4+#0x400]
adf2: 00 02 08 00 lbi $r0,[$r4+#0x800]
adf6: 00 02 10 00 lbi $r0,[$r4+#0x1000]
adfa: 00 02 20 00 lbi $r0,[$r4+#0x2000]
adfe: 00 02 40 00 lbi $r0,[$r4+#-16384]
ae02: 00 02 80 00 lbi $r0,[$r5+#0x0]
ae06: 00 02 00 04 lbi $r0,[$r4+#0x4]
ae0a: 00 02 00 05 lbi $r0,[$r4+#0x5]
ae0e: 00 02 00 06 lbi $r0,[$r4+#0x6]
ae12: 00 02 00 07 lbi $r0,[$r4+#0x7]
ae16: 00 02 00 08 lbi $r0,[$r4+#0x8]
ae1a: 00 02 00 09 lbi $r0,[$r4+#0x9]
ae1e: 00 02 00 0a lbi $r0,[$r4+#0xa]
ae22: 00 02 00 0b lbi $r0,[$r4+#0xb]
ae26: 00 02 00 0c lbi $r0,[$r4+#0xc]
ae2a: 00 02 00 0d lbi $r0,[$r4+#0xd]
ae2e: 00 02 00 0e lbi $r0,[$r4+#0xe]
ae32: 00 02 00 0f lbi $r0,[$r4+#0xf]
ae36: 00 02 00 10 lbi $r0,[$r4+#0x10]
ae3a: 00 02 00 11 lbi $r0,[$r4+#0x11]
ae3e: 00 02 00 12 lbi $r0,[$r4+#0x12]
ae42: 00 02 00 13 lbi $r0,[$r4+#0x13]
ae46: 00 02 00 14 lbi $r0,[$r4+#0x14]
ae4a: 00 02 00 15 lbi $r0,[$r4+#0x15]
ae4e: 00 02 00 16 lbi $r0,[$r4+#0x16]
ae52: 00 02 00 17 lbi $r0,[$r4+#0x17]
ae56: 00 02 00 18 lbi $r0,[$r4+#0x18]
ae5a: 00 02 00 19 lbi $r0,[$r4+#0x19]
ae5e: 00 02 00 1a lbi $r0,[$r4+#0x1a]
ae62: 00 02 00 1b lbi $r0,[$r4+#0x1b]
ae66: 00 02 00 1c lbi $r0,[$r4+#0x1c]
ae6a: 00 02 00 1d lbi $r0,[$r4+#0x1d]
ae6e: 00 02 00 1e lbi $r0,[$r4+#0x1e]
ae72: 00 02 00 1f lbi $r0,[$r4+#0x1f]
ae76: 00 02 00 20 lbi $r0,[$r4+#0x20]
ae7a: 00 02 00 21 lbi $r0,[$r4+#0x21]
ae7e: 00 02 00 22 lbi $r0,[$r4+#0x22]
ae82: 00 02 00 23 lbi $r0,[$r4+#0x23]
ae86: 00 02 00 24 lbi $r0,[$r4+#0x24]
ae8a: 00 02 00 25 lbi $r0,[$r4+#0x25]
ae8e: 00 02 00 26 lbi $r0,[$r4+#0x26]
ae92: 00 02 00 27 lbi $r0,[$r4+#0x27]
ae96: 00 02 00 28 lbi $r0,[$r4+#0x28]
ae9a: 00 02 00 29 lbi $r0,[$r4+#0x29]
ae9e: 00 02 00 2a lbi $r0,[$r4+#0x2a]
aea2: 00 02 00 2b lbi $r0,[$r4+#0x2b]
aea6: 00 02 00 2c lbi $r0,[$r4+#0x2c]
aeaa: 00 02 00 2d lbi $r0,[$r4+#0x2d]
aeae: 00 02 00 2e lbi $r0,[$r4+#0x2e]
aeb2: 00 02 00 2f lbi $r0,[$r4+#0x2f]
aeb6: 00 02 00 30 lbi $r0,[$r4+#0x30]
aeba: 00 02 00 31 lbi $r0,[$r4+#0x31]
aebe: 00 02 00 33 lbi $r0,[$r4+#0x33]
aec2: 00 02 00 34 lbi $r0,[$r4+#0x34]
aec6: 00 02 00 35 lbi $r0,[$r4+#0x35]
aeca: 00 02 00 36 lbi $r0,[$r4+#0x36]
aece: 00 02 00 37 lbi $r0,[$r4+#0x37]
aed2: 00 02 00 38 lbi $r0,[$r4+#0x38]
aed6: 00 02 00 39 lbi $r0,[$r4+#0x39]
aeda: 00 02 00 3a lbi $r0,[$r4+#0x3a]
aede: 00 02 00 3b lbi $r0,[$r4+#0x3b]
aee2: 00 02 00 3c lbi $r0,[$r4+#0x3c]
aee6: 00 02 00 3d lbi $r0,[$r4+#0x3d]
aeea: 00 02 00 3e lbi $r0,[$r4+#0x3e]
aeee: 00 02 00 3f lbi $r0,[$r4+#0x3f]
aef2: 00 02 00 40 lbi $r0,[$r4+#0x40]
aef6: 00 02 00 41 lbi $r0,[$r4+#0x41]
aefa: 00 02 00 42 lbi $r0,[$r4+#0x42]
aefe: 00 02 00 43 lbi $r0,[$r4+#0x43]
af02: 00 02 00 44 lbi $r0,[$r4+#0x44]
af06: 00 02 00 45 lbi $r0,[$r4+#0x45]
af0a: 00 02 00 46 lbi $r0,[$r4+#0x46]
af0e: 00 02 00 47 lbi $r0,[$r4+#0x47]
af12: 00 02 00 48 lbi $r0,[$r4+#0x48]
af16: 00 02 00 49 lbi $r0,[$r4+#0x49]
af1a: 00 02 00 4a lbi $r0,[$r4+#0x4a]
af1e: 00 02 00 4b lbi $r0,[$r4+#0x4b]
af22: 00 02 00 4c lbi $r0,[$r4+#0x4c]
af26: 00 02 00 4d lbi $r0,[$r4+#0x4d]
af2a: 00 02 00 4e lbi $r0,[$r4+#0x4e]
af2e: 00 02 00 4f lbi $r0,[$r4+#0x4f]
af32: 00 02 00 50 lbi $r0,[$r4+#0x50]
af36: 00 02 00 51 lbi $r0,[$r4+#0x51]
af3a: 00 02 00 52 lbi $r0,[$r4+#0x52]
af3e: 00 02 00 53 lbi $r0,[$r4+#0x53]
af42: 00 02 00 54 lbi $r0,[$r4+#0x54]
af46: 00 02 00 55 lbi $r0,[$r4+#0x55]
af4a: 00 02 00 56 lbi $r0,[$r4+#0x56]
af4e: 00 02 00 57 lbi $r0,[$r4+#0x57]
af52: 00 02 00 58 lbi $r0,[$r4+#0x58]
af56: 00 02 00 59 lbi $r0,[$r4+#0x59]
af5a: 00 02 00 5a lbi $r0,[$r4+#0x5a]
af5e: 00 02 00 5b lbi $r0,[$r4+#0x5b]
af62: 00 02 00 5c lbi $r0,[$r4+#0x5c]
af66: 00 02 00 5d lbi $r0,[$r4+#0x5d]
af6a: 00 02 00 5e lbi $r0,[$r4+#0x5e]
af6e: 00 02 00 5f lbi $r0,[$r4+#0x5f]
af72: 00 02 00 60 lbi $r0,[$r4+#0x60]
af76: 00 02 00 61 lbi $r0,[$r4+#0x61]
af7a: 00 02 00 62 lbi $r0,[$r4+#0x62]
af7e: 00 02 00 63 lbi $r0,[$r4+#0x63]
af82: 00 02 02 00 lbi $r0,[$r4+#0x200]
af86: 02 0a b6 00 lhi $r0,[$r21+#0x6c00]
af8a: 00 03 b5 00 lbi $r0,[$r7+#0x3500]
af8e: 00 03 cd 00 lbi $r0,[$r7+#-13056]
af92: 00 03 00 00 lbi $r0,[$r6+#0x0]
af96: 00 02 00 00 lbi $r0,[$r4+#0x0]
af9a: 00 02 00 64 lbi $r0,[$r4+#0x64]
af9e: 00 02 00 00 lbi $r0,[$r4+#0x0]
...
afbe: 00 00 01 00 lbi $r0,[$r0+#0x100]
afc2: 02 0a 00 51 lhi $r0,[$r20+#0xa2]
afc6: 00 02 01 00 lbi $r0,[$r4+#0x100]
afca: 00 02 02 00 lbi $r0,[$r4+#0x200]
afce: 00 02 04 00 lbi $r0,[$r4+#0x400]
afd2: 00 02 02 00 lbi $r0,[$r4+#0x200]
afd6: 02 0a 10 00 lhi $r0,[$r20+#0x2000]
afda: 00 02 20 00 lbi $r0,[$r4+#0x2000]
afde: 00 02 00 50 lbi $r0,[$r4+#0x50]
afe2: 00 02 80 00 lbi $r0,[$r5+#0x0]
afe6: 00 02 00 04 lbi $r0,[$r4+#0x4]
afea: 00 02 00 05 lbi $r0,[$r4+#0x5]
afee: 00 02 00 06 lbi $r0,[$r4+#0x6]
aff2: 00 02 00 07 lbi $r0,[$r4+#0x7]
aff6: 00 02 03 00 lbi $r0,[$r4+#0x300]
affa: 06 0a 00 09 *unknown*
affe: 00 02 00 0a lbi $r0,[$r4+#0xa]
b002: 00 02 00 0b lbi $r0,[$r4+#0xb]
b006: 00 02 00 47 lbi $r0,[$r4+#0x47]
b00a: 00 02 00 49 lbi $r0,[$r4+#0x49]
b00e: 00 02 00 4a lbi $r0,[$r4+#0x4a]
b012: 00 02 00 4b lbi $r0,[$r4+#0x4b]
b016: 00 02 00 10 lbi $r0,[$r4+#0x10]
b01a: 00 02 00 11 lbi $r0,[$r4+#0x11]
b01e: 00 02 00 48 lbi $r0,[$r4+#0x48]
b022: 00 02 02 00 lbi $r0,[$r4+#0x200]
b026: 02 09 01 00 lhi $r0,[$r18+#0x200]
b02a: 06 0a 04 00 *unknown*
b02e: 06 0a 00 16 *unknown*
b032: 00 02 00 17 lbi $r0,[$r4+#0x17]
b036: 00 02 00 46 lbi $r0,[$r4+#0x46]
b03a: 00 02 00 19 lbi $r0,[$r4+#0x19]
b03e: 00 02 02 00 lbi $r0,[$r4+#0x200]
b042: 06 0a 00 1b *unknown*
b046: 00 02 00 1c lbi $r0,[$r4+#0x1c]
b04a: 00 02 00 1d lbi $r0,[$r4+#0x1d]
b04e: 00 02 00 3a lbi $r0,[$r4+#0x3a]
b052: 00 02 00 3b lbi $r0,[$r4+#0x3b]
b056: 00 02 00 3c lbi $r0,[$r4+#0x3c]
b05a: 00 02 00 3d lbi $r0,[$r4+#0x3d]
b05e: 00 02 00 3e lbi $r0,[$r4+#0x3e]
b062: 00 02 00 3f lbi $r0,[$r4+#0x3f]
b066: 00 02 00 40 lbi $r0,[$r4+#0x40]
b06a: 00 02 00 41 lbi $r0,[$r4+#0x41]
b06e: 00 02 00 42 lbi $r0,[$r4+#0x42]
b072: 00 02 00 43 lbi $r0,[$r4+#0x43]
b076: 00 02 00 28 lbi $r0,[$r4+#0x28]
b07a: 00 02 00 35 lbi $r0,[$r4+#0x35]
b07e: 00 02 02 00 lbi $r0,[$r4+#0x200]
b082: 06 09 00 2b *unknown*
b086: 00 02 00 2c lbi $r0,[$r4+#0x2c]
b08a: 00 02 00 44 lbi $r0,[$r4+#0x44]
b08e: 00 02 00 45 lbi $r0,[$r4+#0x45]
b092: 00 02 01 00 lbi $r0,[$r4+#0x100]
b096: 02 09 10 00 lhi $r0,[$r18+#0x2000]
b09a: 01 09 11 00 lbi $r16,[$r18+#0x1100]
b09e: 01 09 02 00 lbi $r16,[$r18+#0x200]
b0a2: 03 09 01 00 lhi $r16,[$r18+#0x200]
b0a6: 03 09 00 35 lhi $r16,[$r18+#0x6a]
b0aa: 00 02 00 4d lbi $r0,[$r4+#0x4d]
b0ae: 00 02 00 4e lbi $r0,[$r4+#0x4e]
b0b2: 00 02 00 38 lbi $r0,[$r4+#0x38]
b0b6: 00 02 00 39 lbi $r0,[$r4+#0x39]
b0ba: 00 02 e2 00 lbi $r0,[$r5+#-7680]
b0be: 00 03 ea 00 lbi $r0,[$r7+#-5632]
b0c2: 00 03 e9 00 lbi $r0,[$r7+#-5888]
b0c6: 00 03 b7 00 lbi $r0,[$r7+#0x3700]
b0ca: 00 03 94 01 lbi $r0,[$r7+#0x1401]
b0ce: 00 03 23 02 lbi $r0,[$r6+#0x2302]
b0d2: 00 03 08 0f lbi $r0,[$r6+#0x80f]
b0d6: 00 02 06 00 lbi $r0,[$r4+#0x600]
b0da: 02 0a 10 00 lhi $r0,[$r20+#0x2000]
b0de: 01 09 11 00 lbi $r16,[$r18+#0x1100]
b0e2: 01 09 01 00 lbi $r16,[$r18+#0x100]
b0e6: 06 09 02 00 *unknown*
b0ea: 06 09 02 00 *unknown*
b0ee: 01 09 07 13 lbi $r16,[$r18+#0x713]
b0f2: 01 09 06 00 lbi $r16,[$r18+#0x600]
b0f6: 01 09 08 00 lbi $r16,[$r18+#0x800]
b0fa: 01 09 09 00 lbi $r16,[$r18+#0x900]
b0fe: 01 09 04 00 lbi $r16,[$r18+#0x400]
b102: 01 09 03 00 lbi $r16,[$r18+#0x300]
b106: 01 09 05 00 lbi $r16,[$r18+#0x500]
b10a: 01 09 0a 00 lbi $r16,[$r18+#0xa00]
b10e: 01 09 00 4f lbi $r16,[$r18+#0x4f]
b112: 00 02 00 50 lbi $r0,[$r4+#0x50]
b116: 00 02 00 51 lbi $r0,[$r4+#0x51]
b11a: 00 02 00 52 lbi $r0,[$r4+#0x52]
b11e: 00 02 00 53 lbi $r0,[$r4+#0x53]
b122: 00 02 00 54 lbi $r0,[$r4+#0x54]
b126: 00 02 00 55 lbi $r0,[$r4+#0x55]
b12a: 00 02 00 56 lbi $r0,[$r4+#0x56]
b12e: 00 02 00 57 lbi $r0,[$r4+#0x57]
b132: 00 02 00 58 lbi $r0,[$r4+#0x58]
b136: 00 02 00 59 lbi $r0,[$r4+#0x59]
b13a: 00 02 00 5a lbi $r0,[$r4+#0x5a]
b13e: 00 02 00 5b lbi $r0,[$r4+#0x5b]
b142: 00 02 00 5c lbi $r0,[$r4+#0x5c]
b146: 00 02 00 5d lbi $r0,[$r4+#0x5d]
b14a: 00 02 00 5e lbi $r0,[$r4+#0x5e]
b14e: 00 02 00 5f lbi $r0,[$r4+#0x5f]
b152: 00 02 00 60 lbi $r0,[$r4+#0x60]
b156: 00 02 00 61 lbi $r0,[$r4+#0x61]
b15a: 00 02 00 62 lbi $r0,[$r4+#0x62]
b15e: 00 02 00 63 lbi $r0,[$r4+#0x63]
b162: 00 02 02 00 lbi $r0,[$r4+#0x200]
b166: 02 0a b6 00 lhi $r0,[$r21+#0x6c00]
b16a: 00 03 b5 00 lbi $r0,[$r7+#0x3500]
b16e: 00 03 cd 00 lbi $r0,[$r7+#-13056]
b172: 00 03 00 00 lbi $r0,[$r6+#0x0]
b176: 00 02 00 00 lbi $r0,[$r4+#0x0]
b17a: 00 02 00 64 lbi $r0,[$r4+#0x64]
b17e: 00 02 00 00 lbi $r0,[$r4+#0x0]
...
b19e: 00 00 07 08 lbi $r0,[$r0+#0x708]
b1a2: 05 0e 07 01 lwi $r16,[$fp+#0x1c04]
...
b1ae: 14 00 00 00 swi $r0,[$r0+#0x0]
b1b2: 00 00 00 00 lbi $r0,[$r0+#0x0]
b1b6: 14 00 00 00 swi $r0,[$r0+#0x0]
b1ba: 00 00 00 00 lbi $r0,[$r0+#0x0]
b1be: 14 00 00 00 swi $r0,[$r0+#0x0]
b1c2: 00 00 98 d3 lbi $r0,[$r1+#0x18d3]
b1c6: 00 00 9c d3 lbi $r0,[$r1+#0x1cd3]
b1ca: 00 00 ac d3 lbi $r0,[$r1+#0x2cd3]
b1ce: 00 00 dc d3 lbi $r0,[$r1+#-9005]
b1d2: 00 00 18 74 lbi $r0,[$r0+#0x1874]
b1d6: 00 00 20 75 lbi $r0,[$r0+#0x2075]
b1da: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b1de: 00 00 ec 75 lbi $r0,[$r1+#-5003]
b1e2: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b1e6: 00 00 c0 76 lbi $r0,[$r1+#-16266]
b1ea: 00 00 10 77 lbi $r0,[$r0+#0x1077]
b1ee: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b1f2: 00 00 14 79 lbi $r0,[$r0+#0x1479]
b1f6: 00 00 6c 79 lbi $r0,[$r0+#-4999]
b1fa: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b1fe: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b202: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b206: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b20a: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b20e: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b212: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b216: 00 00 50 7a lbi $r0,[$r0+#-12166]
b21a: 00 00 6c 7a lbi $r0,[$r0+#-4998]
b21e: 00 00 08 7b lbi $r0,[$r0+#0x87b]
b222: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b226: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b22a: 00 00 10 77 lbi $r0,[$r0+#0x1077]
b22e: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b232: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b236: 00 00 70 7b lbi $r0,[$r0+#-3973]
b23a: 00 00 e4 7b lbi $r0,[$r1+#-7045]
b23e: 00 00 74 7c lbi $r0,[$r0+#-2948]
b242: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b246: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b24a: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b24e: 00 00 ac 6d lbi $r0,[$r1+#0x2c6d]
b252: 00 00 0a 02 lbi $r0,[$r0+#0xa02]
b256: 02 00 00 00 lhi $r0,[$r0+#0x0]
b25a: 00 00 0a 02 lbi $r0,[$r0+#0xa02]
b25e: 00 00 00 00 lbi $r0,[$r0+#0x0]
b262: 00 00 14 00 lbi $r0,[$r0+#0x1400]
b266: 00 00 00 00 lbi $r0,[$r0+#0x0]
b26a: 00 00 0a 02 lbi $r0,[$r0+#0xa02]
b26e: 00 00 00 00 lbi $r0,[$r0+#0x0]
b272: 00 00 0a 02 lbi $r0,[$r0+#0xa02]
b276: 00 00 00 00 lbi $r0,[$r0+#0x0]
b27a: 00 00 14 00 lbi $r0,[$r0+#0x1400]
b27e: 00 00 00 00 lbi $r0,[$r0+#0x0]
b282: 00 00 00 05 lbi $r0,[$r0+#0x5]
b286: 00 00 02 00 lbi $r0,[$r0+#0x200]
b28a: 00 00 00 29 lbi $r0,[$r0+#0x29]
b28e: 00 00 00 fc lbi $r0,[$r0+#0xfc]
b292: 00 00 fc 1f lbi $r0,[$r1+#-993]
b296: 10 00 00 00 sbi $r0,[$r0+#0x0]
...
b2b6: 00 00 f0 49 lbi $r0,[$r1+#-4023]
b2ba: 02 00 00 00 lhi $r0,[$r0+#0x0]
b2be: 00 00 00 00 lbi $r0,[$r0+#0x0]
b2c2: 00 00 01 00 lbi $r0,[$r0+#0x100]
b2c6: 00 00 01 00 lbi $r0,[$r0+#0x100]
...
b316: 01 00 01 00 lbi $r16,[$r0+#0x100]
...
b326: 00 01 00 00 lbi $r0,[$r2+#0x0]
b32a: 00 00 00 00 lbi $r0,[$r0+#0x0]
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment