; Annotated ESP8266 bootrom disassembly. ; ; ********************** ; On 5/2/2021, I found I had to redo the transfer of my comments ; to the new disassembly that I generated back in July of 2018. ; ; On 7/7/2018, I redid the entire disassembly using my ; espdis script that I developed for the esp32 bootrom. ; This fixes lots of problems with this disassembly, ; but I am keeping this (for now anyway) since it has all ; of my hand generated comments -- which I wrote a script ; to merge into the new file, but just in case that botched ; anything, I want to have that for reference. ; ; ********************** ; ; Tom Trebisky 1-7-2016 began studying Kongo's disassembly ; Tom Trebisky 1-24-2016 migrated to my own disassembly ; Tom Trebisky 2-28-2017 busy with this again. ; Tom Trebisky 7-5-2018 pull request by quietboil ; Tom Trebisky 7-7-2018 redo entire disassembly with "espdis" ; Tom Trebisky 5-2-2021 redo comment transfer to new disassembly ; ; This is the ESP8266 bootrom -- 64K in size. ; ; TODO -- ; 1 - Use my esp32 disassembler to redo this since it should clean ; up many sections that are now badly mangled. (DONE) ; 2 - Get a firm understanding of ESP8266 interrupts. ; ;--------------------------------------------------- ; In early 2018 I got a pull request from "quietboil" that added ; annotation for flash erase commands. ; See: esp_spi_erase_sector -and- esp_spi_erase_block ; as well as other code. ;--------------------------------------------------- ; ; The following comments are obsolete and historical given the new disassembly. ; ; I began with the bin file and made multiple passes to get ; this into an initial form that I liked. Then I began adding ; annotation in the form of comments (like this one). ; ; ; I did a couple of special things to generate the initial disassembly. ; - I converted the ".bin" file to a ".elf" file using a C program ; that I wrote. This let me add a symbol table derived from ; the list of symbols in PROVIDE statements in eagle.rom.addr.v6.ld ; This also let me set the proper text addresses for the ; disassembly. I keep the byte order correct (which is ; reversed, i.e. little endian for 32 bit constants). ; ; - then I did the disassembly in sections based on those symbol ; table addresses as starting points. This greatly reduced but ; did not eliminate the mis-aligned disassembly. ; - then I wrote some scripts to find all the l32r statements ; and the 32 bit constants they reference and make the ; display of these values civilized. ; - sometime late I understood the relocation of a large block ; of data near the end of the ROM and rewrote the addresses ; for that, which was a great help. ; I still find it necessary to "polish" the disassembly by ; hand, finding improperly disassmbled sections of code and ; so forth. ; ; --------------------------------------------------------------- ; ; I was first inspired by the work done by "Kongo" ; http://dflund.se/~kongo/esp8266.bin/iram0.txt ; I began studying and annotating what he had done, then ; migrated to my own disassembly. ; ; The ESP8266 bootrom is in some on-chip immutable ROM at ; a base address of 0x40000000 ; ; It is easy to dump the bootrom as binary using: ; PORT = /dev/ttyUSB1 ; esptool -p $(PORT) dump_mem 0x40000000 65536 bootrom.bin ; ; A naive disassembly can be done using: ; ; xtensa-lx106-elf-objdump -D -b binary -mxtensa bootrom.bin >naive.dis ; ; The problem with this is that disassembly is not done properly at subroutine ; boundaries. The disassembler looses track of alignment and does ugly thing. ; Kongo did something to remedy this, probably disassembling in sections using ; start addresses for each subroutine. A big improvement over the naive ; disassembly and very much something to start work from. ; ; I compared the binary I pulled from my chips with the one Kongo began ; with and found them identical. As far as I know there is only one version ; of the bootrom in the wild. ; ; --------------------------------------------------------------- ; ; The processor inside the ESP8266 is an Xtensa LX106 ; This is a 32 bit RISC processor with 16 registers. ; Register use as I understand them so far is: ; ; a0 - used for subroutine return address ; a1 - stack pointer ; a2 - first subroutine argument and return value if there is any ; ; There is a 662 page "instruction set architecture" manual available, ; which is almost indispensible for sorting this stuff out. ; ; Here is a first cut at the address map which shows ; the locations of big items. ; ; 0x0000 0000 to 0x1fff ffff - empty, causes fault when reading ; 0x3ff0 0000 to 0x3ff0 0fff - "dport0" IO registers, see below ; 0x3ffe 8000 to 0x3ffb ffff - user data ram (80k) ; 0x3fff c000 to 0x3fff ffff - ETS system data ram (16k) ; 0x4000 0000 to 0x4000 ffff - bootrom, read only, cannot be changed (64k) ; 0x4010 0000 to 0x4010 7fff - iRam, used by bootloader to load SPI flash (32k) ; 0x4010 8000 to 0x4010 bfff - iRam, cache, used by OTA bootloader (16k) ; 0x4010 c000 to 0x4010 ffff - iRam, cache (16k) ; 0x4020 0000 to 0x401f ffff - SPI flash ; ; The claim is that up to 1M of flash can be "mapped", typically to 0x4010 0000 ; but reputedly at any 1M boundary. ; There are two 16k RAM objects than can be used either as cache or as iRam. ; My understanding of this is that if you designate them to be used as cache ; then you don't get to use them as iRAM at a specific address, but they get ; used dynamically for the 1M of mapped flash. ; ; ----------------------------------------------------------------------- ; ----------------------------------------------------------------------- ; ; Notes on the dport0 registers ; These are accessed (as is often done), by a base address 0x200 behind ; their actual location, namely 0x3feffe00 ; 0x3feffe00 - base for three IO registers in an odd spot - call it "Poochie" ; +204 = 0x3ff0 0004 = INTC_EDGE_EN ; 0x3ff0 0014 = CPU_SPEED (not used in this boot code) ; +20c = 0x3ff0 000C = SPI_READY ; +224 = 0x3ff0 0024 = SPI__bank (see comments where used). ; ; Three bits are understood in INTC_EDGE_EN ; 0x01 enables watchdog interrupts ; 0x02 enables TIMER_FRC1 interrupts (not used in this ROM) ; 0x04 enables TIMER_FRCC interrupts ; ; The CPU speed control is done by the low bit, i.e 0x0001 ; when it is clear, the cpu runs at 80 Mhz. ; when it is set, the cpu runs at 160 Mhz. ; The bootrom runs at 52 Mhz and we have no clue why, or how to jump to 80. ; ; MAC address and chip info can be found here as follows: ; 0x3FF00050 OTP_MAC0[1] OTP Memory (Contains byte 6 of MAC address at 0x3FF00053) ; 0x3FF00054 OTP_MAC1[1] OTP Memory (Contains bytes 4-5 of MAC address at 0x3FF00055, 0x3FF00054) ; 0x3FF00058 OTP_CHIPID[1] OTP Memory (Apparently contains info about chip model/version) ; 0x3FF0005C OTP_MAC3 OTP Memory (Contains vendor portion (bytes 1-3) of MAC address) ; ; ----------------------------------------------------------------------- ; ; How do things get started? The reset vector goes to 0x40000080. ; ; Early on, it sets the vector base to 0x40000000 (right here!!) ; Which is how it is for the bootrom. ; User code may set a new Vec_base value later and do ; as it pleases. Vec_base: 40000000: 00000000000000000000000000000000 ; This sets the interrupt level to 2 and then sits here waiting ; for an interrupt, and spins in a loop doing this. _DebugExceptionVector: 40000010: 007200 waiti 2 40000013: 46feff j 0x40000010 40000016: 00000000000000000000 ; RFI is "return from high priority interrupt" ; The "3" is the level to restore from. ; ps is restored from EPS[3] ; pc is restored from EPC[3] ; Effectively, it looks to me like if an NMI happens, ; we ignore it and return immediately. _NMIExceptionVector: 40000020: 103300 rfi 3 40000023: 00000000000000000000000000 ; spin with break exception _KernelExceptionVector: 40000030: 004100 break 1, 0 ; breakpoint exception 40000033: 46feff j 0x40000030 40000036: 0000 40000038: 00000000 4000003c: 00000000 40000040: 00000000 40000044: 00000000 40000048: 00000000 4000004c: 00000000 ; Here are the intial values of the interrupt dispatch ; table as first set up by the ROM ; The table has 64 entries ; 3fffc000: 4000dc44 4000dbe4 4000dc44 4000dc44 ; 3fffc010: 4000048c 4000dbe0 4000dc44 4000dc44 ; 3fffc020: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc030: 40000590 40000590 40000590 40000590 ; 3fffc040: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc050: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc060: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc070: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc080: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc090: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0a0: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0b0: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0c0: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0d0: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0e0: 4000dc44 4000dc44 4000dc44 4000dc44 ; 3fffc0f0: 4000dc44 4000dc44 4000dc44 4000dc44 ; ; 3fffc100: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc110: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc120: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc130: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc140: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc150: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc160: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc170: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc180: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc190: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1a0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1b0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1c0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1d0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1e0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; 3fffc1f0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ; ; 4000dc44 is _xtos_unhandled_exception (nice return via rfe) ; 4000dbe4 is _xtos_syscall_handler (nice return via rfe) ; 4000048c is _xtos_l1int_handler (tricky) ; 4000dbe0 is _xtos_alloca_handler ( stub - just an rfe ) ; 40000590 is _xtos_cause3_handler (tricky) ; 4000dbf8 is _xtos_p_none ( stub - just a return ) ; Here is the code that handles all interrupts. ; Note 3fffdaac holds 3fffc000 ; There is a jump table, initially as shown above _UserExceptionVector: 40000050: 12d1ff addmi a1, a1, 0xffffff00 ; stack adjust -256 40000053: 2951 s32i.n a2, a1, 20 ; save a2 40000055: 3961 s32i.n a3, a1, 24 ; save a3 40000057: 3195f6 l32r a3, [----] ; [----] 0x3fffdaac 4000005a: 20e803 rsr.exccause a2 4000005d: 3032a0 addx4 a3, a2, a3 ; add to base 40000060: 3803 l32i.n a3, a3, 0 ; fetch from there 40000062: 4971 s32i.n a4, a1, 28 ; save a4 40000064: a00300 jx a3 ; << dispatch via JUMP table 40000067: 000000000000000000 ; spin with break exception _DoubleExceptionVector: 40000070: 404100 break 1, 4 ; breakpoint exception 40000073: 46feff j 0x40000070 40000076: 00000000000000000000 ; Reset apparently sets the PC to 0x40000080, so we end up here ; and immediately jump to _ResetHandler _ResetVector: 40000080: 060800 j 0x400000a4 40000083: 00 ; We seem to be done with vectors and it is code from here on out. ; Reset jumps immediately to here. ; wsr = write special register ; rsr = read special register ; synch waits till all prior wsr are done ; ; What about all these special registers? ; there are a bunch (up to 256 are possible) ; (see pages 205-208 in the ISA manual) ; The following are the ones that appear in this ROM ; ; -intenable is an interrupt enable mask ; -interrupt is an interrupt request mask ; it has aliases intset and intclear ; intset is never used in this rom ; -intclear is used, presumably to clear ; a pending interrupt flag when it is handled. ; -litbase is the "literal base" for L32R insructions ; this is the only use of "litbase" ; -ps is the processor state (table 4-63, page 87) ; -sar is the shift amount register ; -epc1 is the level 1 exception PC ; (also epc2 and epc3) ; -ccount - cycle counter (runs at 80 Mhz clock rate) ; -ccompare0 is the cycle number to interrupt ; (there can be 0,1,2 of these, maybe not on the lx106) ; this is for generating timer interrupts. ; -prid is processor id (table 5-181) ; -exccause is cause of last exception ; -excvaddr is the exception virtual address ; -depc is the double exception PC ; -ddr is the debug data register ; ************************************************************* ; ************************************************************* ; ************************************************************* ; ; the processor starts here (at 400000a4) ; which calls start(), ; which calls main(). ; Since the processor has 16 and 24 bit instructions, there is no ; way to hold 32 bit constants in the instruction. ; So the compiler dumps them as constants (like right here). ; Then loads them into registers, typically with PC relative ; address in a l32r instruction. ; Typically they are dumped ahead of where they are referenced. ; In fact they must be, as the offsets from the l32r instruction ; are all negative (it one extends the offset). 40000084: 00000000 ; l32r 40000088: 40000000 ; l32r 4000008c: 2222211f ; l32r 40000090: e0000000 ; l32r 40000094: 400000f3 ; l32r 40000098: 4000e328 ; l32r 4000009c: 0000000000000000 _ResetHandler: 400000a4: 0c00 movi.n a0, 0 ; a0 = 0 400000a6: 00e413 wsr.intenable a0 ; write to interrupt enable register 400000a9: 000513 wsr.litbase a0 ; and to litbase 400000ac: 102000 rsync ; allow those to take effect 400000af: 21f5ff l32r a2, [0x00000000] ; 0x40000084 400000b2: 30eb03 rsr.prid a3 ; read processor ID 400000b5: 303074 extui a3, a3, 0, 8 ; extract low 8 bits 400000b8: 8c42 beqz.n a2, 0x400000c0 ; branch if a2==0 (and it is!) 400000ba: 562300 bnez a3, 0x400000c0 400000bd: 026200 s32i a0, a2, 0 400000c0: 21f2ff l32r a2, [Vec_base] ; [0x40000000] 0x40000088 400000c3: 20e713 wsr.vecbase a2 ; store to vector base 400000c6: 206100 rsil a2, 1 ; set interrupt level to 1 400000c9: 21f0ff l32r a2, [0x2222211f] ; 0x4000008c 400000cc: 51f1ff l32r a5, [0xe0000000] ; 0x40000090 400000cf: 61f1ff l32r a6, [0x400000f3] ; 0x40000094 400000d2: 0c03 movi.n a3, 0 ; a3 = 0 400000d4: 7d02 mov.n a7, a2 ; old interrut level 400000d6: 506610 and a6, a6, a5 400000d9: 860500 j 0x400000f3 ; jump !! 400000dc: 00000000 ; The "witlb" instruction writes an instruction TLB entry ; The "wdtlb" instruction writes an data TLB entry ; (this is clearly a harvard architecture processor) ; The first register is the value to be written ; The second register is the TLB to write to 400000e0: 406350 witlb a4, a3 400000e3: 002000 isync 400000e6: 3df0 nop.n 400000e8: 3df0 nop.n 400000ea: 5033c0 sub a3, a3, a5 400000ed: b6b314 bltui a3, 16, 0x40000105 400000f0: 707441 srli a7, a7, 4 ; code above jumps in here. 400000f3: 704034 extui a4, a7, 0, 4 ; extract low 4 bits 400000f6: 6713e6 beq a3, a6, 0x400000e0 400000f9: 406350 witlb a4, a3 400000fc: 5033c0 sub a3, a3, a5 400000ff: f6b3ed bgeui a3, 16, 0x400000f0 40000102: 002000 isync 40000105: 51e2ff l32r a5, [0xe0000000] ; 0x40000090 40000108: 0c03 movi.n a3, 0 4000010a: 207220 or a7, a2, a2 4000010d: 704034 extui a4, a7, 0, 4 40000110: 40e350 wdtlb a4, a3 40000113: 5033c0 sub a3, a3, a5 40000116: 707441 srli a7, a7, 4 40000119: f6b3f0 bgeui a3, 16, 0x4000010d 4000011c: 302000 dsync ; ---------------------- ; The following table control the copy of blocks of stuff ; stored in the bootrom into the data RAM for use. ; ; Each block is specified by 3 words. ; -- target start ; -- target end ; -- source start ; 4000e328: 3fffc000 3fffc857 4000e388 ; 4000e334: 3fffc860 3fffdaac 4000ebe8 ; 4000e340: 3fffdaac 3fffdab0 4000fe34 ; 4000e34c: 3fffdab0 3fffdab0 4000fe38 ; null ; 4000e358: 3fffdab0 3fffdab0 4000fe38 ; null ; 4000e364: 3fffdab0 3fffdab0 4000fe38 ; null ; 4000e370: 3fffdab0 3fffdab0 4000fe38 ; null ; 4000e37c: 00000000 00000000 00000000 ; END ; ; 4000e388: 4000dc44 ..... ; For some reason, the table has 8 "slots", ; but only the first 3 actually do anything. 4000011f: 21deff l32r a2, [_rom_store_table] ; [0x4000e328] 0x40000098 40000122: ac02 beqz.n a2, 0x40000146 40000124: 3802 l32i.n a3, a2, 0 ; target 40000126: 4812 l32i.n a4, a2, 4 ; target end 40000128: 5822 l32i.n a5, a2, 8 ; source 4000012a: 22c20c addi a2, a2, 12 4000012d: 47b30f bgeu a3, a4, 0x40000140 40000130: 6805 l32i.n a6, a5, 0 ; from table 40000132: 4b55 addi.n a5, a5, 4 ; ++ 40000134: 6903 s32i.n a6, a3, 0 ; to dRAM 40000136: 4b33 addi.n a3, a3, 4 ; ++ 40000138: 4733f4 bltu a3, a4, 0x40000130 4000013b: 46f9ff j 0x40000124 4000013e: 0000 40000140: 5603fe bnez a3, 0x40000124 40000143: 56d5fd bnez a5, 0x40000124 40000146: 002000 isync 40000149: 052e00 call0 _start ; 0x4000042c ; probably everything above this was coded in assembly language ; and the call to _start is the transition to C code. ; a lot of zero padding follows here ; betwixt the assembly section and what ; I think is the C section 4000014c: 00000000 40000150: 00000000 40000154: 00000000 40000158: 00000000 4000015c: 00000000 40000160: 00000000 40000164: 00000000 40000168: 00000000 4000016c: 00000000 40000170: 00000000 40000174: 00000000 40000178: 00000000 4000017c: 00000000 40000180: 00000000 40000184: 00000000 40000188: 00000000 4000018c: 00000000 40000190: 00000000 40000194: 00000000 40000198: 00000000 4000019c: 00000000 400001a0: 00000000 400001a4: 00000000 400001a8: 00000000 400001ac: 00000000 400001b0: 00000000 400001b4: 00000000 400001b8: 00000000 400001bc: 00000000 400001c0: 00000000 400001c4: 00000000 400001c8: 00000000 400001cc: 00000000 400001d0: 00000000 400001d4: 00000000 400001d8: 00000000 400001dc: 00000000 400001e0: 00000000 400001e4: 00000000 400001e8: 00000000 400001ec: 00000000 400001f0: 00000000 400001f4: 00000000 400001f8: 00000000 400001fc: 00000000 40000200: 00000000 40000204: 00000000 40000208: 00000000 4000020c: 00000000 40000210: 00000000 40000214: 00000000 40000218: 00000000 4000021c: 00000000 40000220: 00000000 40000224: 00000000 40000228: 00000000 4000022c: 00000000 40000230: 00000000 40000234: 00000000 40000238: 00000000 4000023c: 00000000 40000240: 00000000 40000244: 00000000 40000248: 00000000 4000024c: 00000000 40000250: 00000000 40000254: 00000000 40000258: 00000000 4000025c: 00000000 40000260: 00000000 40000264: 00000000 40000268: 00000000 4000026c: 00000000 40000270: 00000000 40000274: 00000000 40000278: 00000000 4000027c: 00000000 40000280: 00000000 40000284: 00000000 40000288: 00000000 4000028c: 00000000 40000290: 00000000 40000294: 00000000 40000298: 00000000 4000029c: 00000000 400002a0: 00000000 400002a4: 00000000 400002a8: 00000000 400002ac: 00000000 400002b0: 00000000 400002b4: 00000000 400002b8: 00000000 400002bc: 00000000 400002c0: 00000000 400002c4: 00000000 400002c8: 00000000 400002cc: 00000000 400002d0: 00000000 400002d4: 00000000 400002d8: 00000000 400002dc: 00000000 400002e0: 00000000 400002e4: 00000000 400002e8: 00000000 400002ec: 00000000 400002f0: 00000000 400002f4: 00000000 400002f8: 00000000 400002fc: 00000000 40000300: 00000000 40000304: 00000000 40000308: 00000000 4000030c: 00000000 40000310: 00000000 40000314: 00000000 40000318: 00000000 4000031c: 00000000 40000320: 00000000 40000324: 00000000 40000328: 00000000 4000032c: 00000000 40000330: 00000000 40000334: 00000000 40000338: 00000000 4000033c: 00000000 40000340: 00000000 40000344: 00000000 40000348: 00000000 4000034c: 00000000 40000350: 00000000 40000354: 00000000 40000358: 00000000 4000035c: 00000000 40000360: 00000000 40000364: 00000000 40000368: 00000000 4000036c: 00000000 40000370: 00000000 40000374: 00000000 40000378: 00000000 .... .... .... .... 4000037c: 00000000 40000380: 40000000 ; l32r 40000384: 3fffdab0 ; l32r 40000388: 3fffeb30 ; l32r 4000038c: 4000dbf8 ; l32r 40000390: 3fffc100 ; l32r 40000394: 40000598 ; l32r 40000398: 3fffc000 ; l32r 4000039c: 4000dc44 ; l32r 400003a0: 3fffc200 ; l32r 400003a4: 80000000 ; l32r 400003a8: 3fffc180 ; l32r 400003ac: 4000dc54 ; l32r 400003b0: 3fffc6f8 ; l32r 400003b4: 5851f42d ; l32r 400003b8: 4c957f2d ; l32r 400003bc: 7fffffff ; l32r 400003c0: 00000060 ; l32r 400003c4: 00000064 ; l32r 400003c8: 00000068 ; l32r 400003cc: 0000006c ; l32r 400003d0: 00000010 ; l32r 400003d4: 00000014 ; l32r 400003d8: 00000018 ; l32r 400003dc: 00000020 ; l32r 400003e0: 00000024 ; l32r 400003e4: 3fffd650 ; l32r 400003e8: 3fffc208 ; l32r 400003ec: 4000dc3c ; l32r 400003f0: ff000000 400003f4: 0000ff00 ; l32r 400003f8: 00ff0000 ; l32r 400003fc: ff000000 ; l32r 40000400: 40404040 40000404: 40404040 ; l32r 40000408: 80808080 ; l32r 4000040c: fefefeff ; l32r 40000410: 7f800000 ; l32r 40000414: 00400000 ; l32r 40000418: 00ffffff ; l32r 4000041c: 7ff00000 ; l32r 40000420: 00080000 ; l32r 40000424: 001fffff ; l32r 40000428: 38000000 ; l32r ; Some notes: ; There are two 32 bit values at 3fffc200 that I call idata ; sets the stack pointer to 0x40000000 so it will drop into ; ram at 0x3fffffff and so forth. ; ; On reset PS = 0x2F ; This sets PS = 0x20 ; This sets the interrupt level to 0 (enables all interrupts) ; And it sets the EXCM bit to 1 (exception mode). _start: 4000042c: 0c00 movi.n a0, 0 4000042e: 11d4ff l32r a1, [Vec_base] ; [0x40000000] 0x40000380 40000431: 2c03 movi.n a3, 32 40000433: 30e613 wsr.ps a3 40000436: 102000 rsync ; zero memory from 3fffdab0 to 3fffeb30 40000439: 61d2ff l32r a6, [0x3fffdab0] ; 0x40000384 4000043c: 71d3ff l32r a7, [0x3fffeb30] ; 0x40000388 4000043f: 77b606 bgeu a6, a7, 0x40000449 ; branch if a6 > a7 (not) 40000442: 0906 s32i.n a0, a6, 0 40000444: 4b66 addi.n a6, a6, 4 40000446: 7736f8 bltu a6, a7, 0x40000442 40000449: 05ba00 call0 main ; 0x40000fec - call to main <<<<<<<<<< ; should never return 4000044c: f04100 break 1, 15 ; breakpoint exception 4000044f: 46feff j 0x4000044c ; spin if main returns 40000452: 0000 ; ----------------- ; ; call with: ; a2 = "vector number" 0-63 ; a3 = .... ; ; 40000598 is _xtos_c_wrapper_handler ; 4000dbf8 is _xtos_p_none (stub routine) ; 4000dc44 is _xtos_unhandled_exception _xtos_set_exception_handler: 40000454: f6d22e bgeui a2, 64, 0x40000486 ; in range ? 40000457: 0c09 movi.n a9, 0 ; a9 = 0 40000459: 61ceff l32r a6, [_xtos_c_wrapper_handler] ; [0x40000598] 0x40000394 4000045c: 41d0ff l32r a4, [_xtos_unhandled_exception] ; [0x4000dc44] 0x4000039c 4000045f: 81ceff l32r a8, [0x3fffc000] ; 0x40000398 40000462: a1caff l32r a10, [_xtos_p_none] ; [0x4000dbf8] 0x4000038c 40000465: b1caff l32r a11, [0x3fffc100] ; 0x40000390 40000468: e05211 slli a5, a2, 2 ; a5 = a2 << 2 4000046b: bab5 add.n a11, a5, a11 ; a11 += a5 4000046d: 303a83 moveqz a3, a10, a3 ; a3 = a10 if a3 == 0 40000470: 8a55 add.n a5, a5, a8 ; a5 += a8 40000472: 280b l32i.n a2, a11, 0 ; a2 = *a11 40000474: a073c0 sub a7, a3, a10 ; a7 = a3 - a10 40000477: 704693 movnez a4, a6, a7 ; a4 = a6 if a7 != 0 4000047a: 390b s32i.n a3, a11, 0 ; store a3 to *a11 4000047c: 4905 s32i.n a4, a5, 0 ; store a4 to *a5 4000047e: a0a2c0 sub a10, a2, a10 ; a10 = a2 - a10 40000481: a02983 moveqz a2, a9, a10 ; a2 = a9 if a10 == 0 40000484: 0df0 ret.n 40000486: 0c02 movi.n a2, 0 ; return 0 (out of range) 40000488: 0df0 ret.n 4000048a: 0000 ; referenced in rom_store table _xtos_l1int_handler: 4000048c: 5981 s32i.n a5, a1, 32 4000048e: 2c12 movi.n a2, 33 40000490: 30b103 rsr.epc1 a3 40000493: 20e661 xsr.ps a2 40000496: 3901 s32i.n a3, a1, 0 40000498: 2911 s32i.n a2, a1, 4 4000049a: 0941 s32i.n a0, a1, 16 4000049c: 6991 s32i.n a6, a1, 36 4000049e: 79a1 s32i.n a7, a1, 40 400004a0: 89b1 s32i.n a8, a1, 44 400004a2: 99c1 s32i.n a9, a1, 48 400004a4: a9d1 s32i.n a10, a1, 52 400004a6: b9e1 s32i.n a11, a1, 56 400004a8: c9f1 s32i.n a12, a1, 60 400004aa: d26110 s32i a13, a1, 64 400004ad: e26111 s32i a14, a1, 68 400004b0: f26112 s32i a15, a1, 72 400004b3: 102000 rsync 400004b6: e1baff l32r a14, [0x3fffc200] ; 0x400003a0 400004b9: f0e203 rsr.interrupt a15 400004bc: c0e403 rsr.intenable a12 400004bf: d81e l32i.n a13, a14, 4 ; read idata[1] 400004c1: c0ff10 and a15, a15, a12 400004c4: c00303 rsr.sar a12 400004c7: d931 s32i.n a13, a1, 12 400004c9: 163f06 beqz a15, 0x40000530 400004cc: c921 s32i.n a12, a1, 8 400004ce: 226113 s32i a2, a1, 76 400004d1: 22afff movi a2, -1 400004d4: c0ff40 nsau a12, a15 400004d7: f1b3ff l32r a15, [0x80000000] ; 0x400003a4 400004da: 000c40 ssr a12 400004dd: f0f091 srl a15, a15 400004e0: f02230 xor a2, a2, a15 400004e3: d1b1ff l32r a13, [0x3fffc180] ; 0x400003a8 400004e6: f0e313 wsr.intclear a15 400004e9: d0ccb0 addx8 a12, a12, a13 400004ec: d22c1e l32i a13, a12, 120 400004ef: f06200 rsil a15, 2 ; set interrupt level to 2 400004f2: f80e l32i.n a15, a14, 0 ; read idata[0] 400004f4: d91e s32i.n a13, a14, 4 ; write idata[1] 400004f6: d0ff10 and a15, a15, a13 400004f9: f0e413 wsr.intenable a15 400004fc: 102000 rsync 400004ff: f06000 rsil a15, 0 ; set interrupt level to 0 40000502: d80c l32i.n a13, a12, 0 40000504: 281c l32i.n a2, a12, 4 40000506: 103120 or a3, a1, a1 40000509: c00d00 callx0 a13 4000050c: e1a5ff l32r a14, [0x3fffc200] ; 0x400003a0 4000050f: f0e203 rsr.interrupt a15 40000512: d06200 rsil a13, 2 40000515: d80e l32i.n a13, a14, 0 ; read idata[0] 40000517: c831 l32i.n a12, a1, 12 40000519: c0dd10 and a13, a13, a12 4000051c: d0ff10 and a15, a15, a13 4000051f: 566f01 bnez a15, 0x40000539 40000522: 222113 l32i a2, a1, 76 40000525: c91e s32i.n a12, a14, 4 ; write idata[1] 40000527: c22102 l32i a12, a1, 8 4000052a: d0e413 wsr.intenable a13 4000052d: d06100 rsil a13, 1 40000530: 019fff l32r a0, [xtos_return_from_exc] ; [0x4000dc54] 0x400003ac 40000533: c00313 wsr.sar a12 40000536: a00000 jx a0 ; indirect jump to _xtos_return_from_exc 40000539: d0ff40 nsau a13, a15 4000053c: c19bff l32r a12, [0x3fffc180] ; 0x400003a8 4000053f: c0cdb0 addx8 a12, a13, a12 40000542: e22c1f l32i a14, a12, 124 40000545: 20ff10 and a15, a15, a2 40000548: e0ff10 and a15, a15, a14 4000054b: e195ff l32r a14, [0x3fffc200] ; 0x400003a0 4000054e: 562ff8 bnez a15, 0x400004d4 40000551: f194ff l32r a15, [0x80000000] ; 0x400003a4 40000554: 000d40 ssr a13 40000557: f0d091 srl a13, a15 4000055a: f22c1f l32i a15, a12, 124 4000055d: d0e313 wsr.intclear a13 40000560: f02220 or a2, a2, a15 40000563: d02230 xor a2, a2, a13 40000566: 86e0ff j 0x400004ec 40000569: 000000 _xtos_restore_intlevel: 4000056c: 20e613 wsr.ps a2 4000056f: 102000 rsync 40000572: 0df0 ret.n ; xtos_set_vpri ( mask ) ; idata[1] = mask ; intenable = idata[0] & mask ; never called _xtos_set_vpri: 40000574: 3d02 mov.n a3, a2 40000576: 418aff l32r a4, [0x3fffc200] ; 0x400003a0 40000579: 706200 rsil a7, 2 4000057c: 2814 l32i.n a2, a4, 4 ; idata[1] 4000057e: 5804 l32i.n a5, a4, 0 ; idata[0] 40000580: 3914 s32i.n a3, a4, 4 ; idata[1] 40000582: 305510 and a5, a5, a3 40000585: 50e413 wsr.intenable a5 40000588: 70e613 wsr.ps a7 4000058b: 102000 rsync 4000058e: 0df0 ret.n _xtos_cause3_handler: 40000590: 0c32 movi.n a2, 3 40000592: 860000 j 0x40000598 40000595: 000000 _xtos_c_wrapper_handler: 40000598: 5981 s32i.n a5, a1, 32 4000059a: 226113 s32i a2, a1, 76 4000059d: 2c12 movi.n a2, 33 4000059f: 30b103 rsr.epc1 a3 400005a2: 20e661 xsr.ps a2 400005a5: 3901 s32i.n a3, a1, 0 400005a7: 2911 s32i.n a2, a1, 4 400005a9: 0941 s32i.n a0, a1, 16 400005ab: 6991 s32i.n a6, a1, 36 400005ad: 79a1 s32i.n a7, a1, 40 400005af: 89b1 s32i.n a8, a1, 44 400005b1: 99c1 s32i.n a9, a1, 48 400005b3: a9d1 s32i.n a10, a1, 52 400005b5: b9e1 s32i.n a11, a1, 56 400005b7: c9f1 s32i.n a12, a1, 60 400005b9: d26110 s32i a13, a1, 64 400005bc: e26111 s32i a14, a1, 68 400005bf: f26112 s32i a15, a1, 72 400005c2: 102000 rsync 400005c5: c00303 rsr.sar a12 400005c8: d06000 rsil a13, 0 400005cb: d171ff l32r a13, [0x3fffc100] ; 0x40000390 400005ce: f22113 l32i a15, a1, 76 400005d1: c921 s32i.n a12, a1, 8 400005d3: d0cfa0 addx4 a12, a15, a13 400005d6: c80c l32i.n a12, a12, 0 400005d8: 2d01 mov.n a2, a1 400005da: 3d0f mov.n a3, a15 400005dc: 8c1c beqz.n a12, 0x400005e1 400005de: c00c00 callx0 a12 400005e1: e821 l32i.n a14, a1, 8 400005e3: c06100 rsil a12, 1 400005e6: e00313 wsr.sar a14 400005e9: 0170ff l32r a0, [xtos_return_from_exc] ; [0x4000dc54] 0x400003ac 400005ec: a00000 jx a0 ; indirect jump to: _xtos_return_from_exc 400005ef: 00 ; never called, but here it is. ; rand is used. srand: 400005f0: 4170ff l32r a4, [0x3fffc6f8] ; 0x400003b0 400005f3: 4804 l32i.n a4, a4, 0 400005f5: 0c03 movi.n a3, 0 400005f7: 22642a s32i a2, a4, 168 ; save seed 400005fa: 32642b s32i a3, a4, 172 ; seed Z 400005fd: 0df0 ret.n 400005ff: 00 rand: 40000600: 516dff l32r a5, [0x5851f42d] ; 0x400003b4 40000603: 416dff l32r a4, [0x4c957f2d] ; 0x400003b8 40000606: 216aff l32r a2, [0x3fffc6f8] ; 0x400003b0 40000609: 12c1f0 addi a1, a1, -16 ; stack space 4000060c: 026100 s32i a0, a1, 0 ; save return 4000060f: 222200 l32i a2, a2, 0 40000612: 226101 s32i a2, a1, 4 40000615: 32222b l32i a3, a2, 172 ; seed Z 40000618: 22222a l32i a2, a2, 168 ; seed 4000061b: 450300 call0 __muldi3 ; 0x40000650 4000061e: 0811 l32i.n a0, a1, 4 40000620: 4d02 mov.n a4, a2 40000622: 1b22 addi.n a2, a2, 1 40000624: 47b214 bgeu a2, a4, 0x4000063c 40000627: 22602a s32i a2, a0, 168 4000062a: 4164ff l32r a4, [0x7fffffff] ; 0x400003bc 4000062d: 1b23 addi.n a2, a3, 1 ; add one 4000062f: 22602b s32i a2, a0, 172 ; save it 40000632: 402210 and a2, a2, a4 ; return this 40000635: 0801 l32i.n a0, a1, 0 40000637: 12c110 addi a1, a1, 16 4000063a: 0df0 ret.n 4000063c: 22602a s32i a2, a0, 168 ; save seed 4000063f: 32602b s32i a3, a0, 172 ; save seed Z 40000642: 215eff l32r a2, [0x7fffffff] ; 0x400003bc 40000645: 0801 l32i.n a0, a1, 0 40000647: 202310 and a2, a3, a2 ; return this 4000064a: 12c110 addi a1, a1, 16 4000064d: 0df0 ret.n 4000064f: 00 ; Used only by rand above ; ; This is one of the Gcc long math support routines. ; Apparently the lx106 processor ain't got no hardware multiple or divide. ; ; __muldi3 does long = long * long ; __umulsidi3 does longlong = long * long ; __divsi3 does int = int / int ; __divdi3 does long = long / long ; __udivdi3 does u_long = u_long / u_long ; __umoddi3 does u_long = u_long % u_long __muldi3: 40000650: 12c1d0 addi a1, a1, -48 40000653: 226100 s32i a2, a1, 0 40000656: 526103 s32i a5, a1, 12 40000659: 426102 s32i a4, a1, 8 4000065c: 0961 s32i.n a0, a1, 24 4000065e: 3911 s32i.n a3, a1, 4 40000660: c971 s32i.n a12, a1, 28 40000662: d981 s32i.n a13, a1, 32 40000664: cd02 mov.n a12, a2 40000666: dd04 mov.n a13, a4 40000668: 3d04 mov.n a3, a4 4000066a: 45680d call0 __umulsidi3 ; 0x4000dcf0 4000066d: 4831 l32i.n a4, a1, 12 4000066f: 0811 l32i.n a0, a1, 4 40000671: c04482 mull a4, a4, a12 40000674: d00082 mull a0, a0, a13 40000677: c871 l32i.n a12, a1, 28 40000679: d881 l32i.n a13, a1, 32 4000067b: 4a00 add.n a0, a0, a4 4000067d: 0a33 add.n a3, a3, a0 4000067f: 0861 l32i.n a0, a1, 24 40000681: 12c130 addi a1, a1, 48 40000684: 0df0 ret.n 40000686: 0000 ; oddly, this routine and the next (xthal_memcpy) ; bounce back and forth between each other. xthal_bcopy: 40000688: 12c1e0 addi a1, a1, -32 4000068b: c941 s32i.n a12, a1, 16 4000068d: 5d03 mov.n a5, a3 4000068f: 3d02 mov.n a3, a2 40000691: 2d05 mov.n a2, a5 40000693: 060d00 j 0x400006cb 40000696: 0000 40000698: ad05 mov.n a10, a5 4000069a: bd03 mov.n a11, a3 4000069c: 0c4c movi.n a12, 4 4000069e: 606cc0 sub a6, a12, a6 400006a1: cd06 mov.n a12, a6 400006a3: 0901 s32i.n a0, a1, 0 400006a5: 3911 s32i.n a3, a1, 4 400006a7: 4921 s32i.n a4, a1, 8 400006a9: 5931 s32i.n a5, a1, 12 400006ab: 050a00 call0 xthal_copy123 ; 0x4000074c 400006ae: 0801 l32i.n a0, a1, 0 400006b0: 3811 l32i.n a3, a1, 4 400006b2: 4821 l32i.n a4, a1, 8 400006b4: 5831 l32i.n a5, a1, 12 400006b6: 6d0c mov.n a6, a12 400006b8: 6a55 add.n a5, a5, a6 400006ba: 6a33 add.n a3, a3, a6 400006bc: 6044c0 sub a4, a4, a6 400006bf: c60700 j 0x400006e2 400006c2: 0000 xthal_memcpy: 400006c4: 12c1e0 addi a1, a1, -32 400006c7: c941 s32i.n a12, a1, 16 400006c9: 5d02 mov.n a5, a2 400006cb: f6440d bgeui a4, 4, 0x400006dc 400006ce: cd00 mov.n a12, a0 400006d0: 850700 call0 xthal_copy123 ; 0x4000074c 400006d3: 0d0c mov.n a0, a12 400006d5: c841 l32i.n a12, a1, 16 400006d7: 12c120 addi a1, a1, 32 400006da: 0df0 ret.n 400006dc: 206014 extui a6, a2, 0, 2 400006df: 5656fb bnez a6, 0x40000698 400006e2: 407441 srli a7, a4, 4 400006e5: 30b014 extui a11, a3, 0, 2 400006e8: 568b0a bnez a11, 0x40000794 400006eb: 9ce7 beqz.n a7, 0x4000070d 400006ed: c08711 slli a8, a7, 4 400006f0: 3a88 add.n a8, a8, a3 400006f2: 6803 l32i.n a6, a3, 0 400006f4: 7813 l32i.n a7, a3, 4 400006f6: 6905 s32i.n a6, a5, 0 400006f8: 6823 l32i.n a6, a3, 8 400006fa: 7915 s32i.n a7, a5, 4 400006fc: 7833 l32i.n a7, a3, 12 400006fe: 626502 s32i a6, a5, 8 40000701: 32c310 addi a3, a3, 16 40000704: 726503 s32i a7, a5, 12 40000707: 52c510 addi a5, a5, 16 4000070a: 8723e4 blt a3, a8, 0x400006f2 4000070d: 37640c bbci a4, 3, 0x4000071d 40000710: 6803 l32i.n a6, a3, 0 40000712: 7813 l32i.n a7, a3, 4 40000714: 8b33 addi.n a3, a3, 8 40000716: 6905 s32i.n a6, a5, 0 40000718: 7915 s32i.n a7, a5, 4 4000071a: 52c508 addi a5, a5, 8 4000071d: 276407 bbci a4, 2, 0x40000728 40000720: 6803 l32i.n a6, a3, 0 40000722: 4b33 addi.n a3, a3, 4 40000724: 6905 s32i.n a6, a5, 0 40000726: 4b55 addi.n a5, a5, 4 40000728: 404014 extui a4, a4, 0, 2 4000072b: 9c34 beqz.n a4, 0x40000742 4000072d: 6803 l32i.n a6, a3, 0 4000072f: 7805 l32i.n a7, a5, 0 40000731: 002440 ssa8l a4 40000734: 0066a1 sll a6, a6 40000737: 707091 srl a7, a7 4000073a: 003440 ssa8b a4 4000073d: 607781 src a7, a7, a6 40000740: 7905 s32i.n a7, a5, 0 40000742: c841 l32i.n a12, a1, 16 40000744: 12c120 addi a1, a1, 32 40000747: 0df0 ret.n 40000749: 000000 xthal_copy123: 4000074c: 161404 beqz a4, 0x40000791 4000074f: 7cc5 movi.n a5, -4 40000751: 505310 and a5, a3, a5 40000754: 6805 l32i.n a6, a5, 0 40000756: 7815 l32i.n a7, a5, 4 40000758: 002340 ssa8l a3 4000075b: 603781 src a3, a7, a6 4000075e: 20a014 extui a10, a2, 0, 2 40000761: a052c0 sub a5, a2, a10 40000764: 8805 l32i.n a8, a5, 0 40000766: 4a6a add.n a6, a10, a4 40000768: 002240 ssa8l a2 4000076b: 00a8a1 sll a10, a8 4000076e: b6460b bltui a6, 4, 0x4000077d 40000771: 8815 l32i.n a8, a5, 4 40000773: 003240 ssa8b a2 40000776: a0a381 src a10, a3, a10 40000779: a905 s32i.n a10, a5, 0 4000077b: 4b55 addi.n a5, a5, 4 4000077d: 002440 ssa8l a4 40000780: a03381 src a3, a3, a10 40000783: 002640 ssa8l a6 40000786: 808091 srl a8, a8 40000789: 003640 ssa8b a6 4000078c: 308881 src a8, a8, a3 4000078f: 8905 s32i.n a8, a5, 0 40000791: 0df0 ret.n 40000793: 00 40000794: 002340 ssa8l a3 40000797: 30b014 extui a11, a3, 0, 2 4000079a: b033c0 sub a3, a3, a11 4000079d: 6803 l32i.n a6, a3, 0 4000079f: ac97 beqz.n a7, 0x400007cc 400007a1: c0a711 slli a10, a7, 4 400007a4: 3aaa add.n a10, a10, a3 400007a6: 7813 l32i.n a7, a3, 4 400007a8: 8823 l32i.n a8, a3, 8 400007aa: 606781 src a6, a7, a6 400007ad: 6905 s32i.n a6, a5, 0 400007af: 9833 l32i.n a9, a3, 12 400007b1: 707881 src a7, a8, a7 400007b4: 7915 s32i.n a7, a5, 4 400007b6: 6843 l32i.n a6, a3, 16 400007b8: 808981 src a8, a9, a8 400007bb: 8925 s32i.n a8, a5, 8 400007bd: 32c310 addi a3, a3, 16 400007c0: 909681 src a9, a6, a9 400007c3: 926503 s32i a9, a5, 12 400007c6: 52c510 addi a5, a5, 16 400007c9: a723d9 blt a3, a10, 0x400007a6 400007cc: 376414 bbci a4, 3, 0x400007e4 400007cf: 7813 l32i.n a7, a3, 4 400007d1: 8823 l32i.n a8, a3, 8 400007d3: 606781 src a6, a7, a6 400007d6: 6905 s32i.n a6, a5, 0 400007d8: 8b33 addi.n a3, a3, 8 400007da: 707881 src a7, a8, a7 400007dd: 7915 s32i.n a7, a5, 4 400007df: 8b55 addi.n a5, a5, 8 400007e1: 806820 or a6, a8, a8 400007e4: 27640c bbci a4, 2, 0x400007f4 400007e7: 7813 l32i.n a7, a3, 4 400007e9: 4b33 addi.n a3, a3, 4 400007eb: 606781 src a6, a7, a6 400007ee: 6905 s32i.n a6, a5, 0 400007f0: 4b55 addi.n a5, a5, 4 400007f2: 6d07 mov.n a6, a7 400007f4: 7813 l32i.n a7, a3, 4 400007f6: 3805 l32i.n a3, a5, 0 400007f8: 606781 src a6, a7, a6 400007fb: 002440 ssa8l a4 400007fe: 0066a1 sll a6, a6 40000801: 303091 srl a3, a3 40000804: 003440 ssa8b a4 40000807: 603381 src a3, a3, a6 4000080a: 3905 s32i.n a3, a5, 0 4000080c: c841 l32i.n a12, a1, 16 4000080e: 12c120 addi a1, a1, 32 40000811: 0df0 ret.n 40000813: 00 ; never called ?? cmd_parse: 40000814: 12c190 addi a1, a1, -112 40000817: 026113 s32i a0, a1, 76 4000081a: 71e9fe l32r a7, [0x00000060] ; 0x400003c0 4000081d: 7a71 add.n a7, a1, a7 4000081f: 2907 s32i.n a2, a7, 0 40000821: 61e8fe l32r a6, [0x00000064] ; 0x400003c4 40000824: 6a61 add.n a6, a1, a6 40000826: 3906 s32i.n a3, a6, 0 40000828: 21e8fe l32r a2, [0x00000068] ; 0x400003c8 4000082b: 2a21 add.n a2, a1, a2 4000082d: 4902 s32i.n a4, a2, 0 4000082f: 01e7fe l32r a0, [0x0000006c] ; 0x400003cc 40000832: 0a01 add.n a0, a1, a0 40000834: 5900 s32i.n a5, a0, 0 40000836: 0c03 movi.n a3, 0 40000838: 324100 s8i a3, a1, 0 4000083b: 21e1fe l32r a2, [0x00000060] ; 0x400003c0 4000083e: 2a21 add.n a2, a1, a2 40000840: 2802 l32i.n a2, a2, 0 40000842: 32c110 addi a3, a1, 16 40000845: 42c140 addi a4, a1, 64 40000848: 050d00 call0 get_first_seg ; 0x4000091c 4000084b: 0c05 movi.n a5, 0 4000084d: 420110 l8ui a4, a1, 16 40000850: 579412 bne a4, a5, 0x40000866 40000853: 81ddfe l32r a8, [0x00000068] ; 0x400003c8 40000856: 8a81 add.n a8, a1, a8 40000858: 8808 l32i.n a8, a8, 0 4000085a: 0c27 movi.n a7, 2 4000085c: 7908 s32i.n a7, a8, 0 4000085e: 0c16 movi.n a6, 1 40000860: 626114 s32i a6, a1, 80 40000863: 462a00 j 0x40000910 40000866: 21d7fe l32r a2, [0x00000064] ; 0x400003c4 40000869: 2a21 add.n a2, a1, a2 4000086b: 2802 l32i.n a2, a2, 0 4000086d: 32c110 addi a3, a1, 16 40000870: 45650b call0 strcpy ; 0x4000bec8 40000873: 0c03 movi.n a3, 0 40000875: 379212 bne a2, a3, 0x4000088b 40000878: 61d4fe l32r a6, [0x00000068] ; 0x400003c8 4000087b: 6a61 add.n a6, a1, a6 4000087d: 6806 l32i.n a6, a6, 0 4000087f: 0c25 movi.n a5, 2 40000881: 5906 s32i.n a5, a6, 0 40000883: 0c14 movi.n a4, 1 40000885: 426114 s32i a4, a1, 80 40000888: 062100 j 0x40000910 4000088b: 922110 l32i a9, a1, 64 4000088e: 926111 s32i a9, a1, 68 40000891: 0c08 movi.n a8, 0 40000893: 722111 l32i a7, a1, 68 40000896: 871765 beq a7, a8, 0x400008ff 40000899: 222111 l32i a2, a1, 68 4000089c: 32c110 addi a3, a1, 16 4000089f: 42c140 addi a4, a1, 64 400008a2: 850700 call0 get_first_seg ; 0x4000091c 400008a5: 022110 l32i a0, a1, 64 400008a8: 026111 s32i a0, a1, 68 400008ab: 0c0b movi.n a11, 0 400008ad: a20110 l8ui a10, a1, 16 400008b0: b71a43 beq a10, a11, 0x400008f7 400008b3: 22c110 addi a2, a1, 16 400008b6: 32c148 addi a3, a1, 72 400008b9: 451a00 call0 convert_para_str ; 0x40000a60 400008bc: 661213 bnei a2, 1, 0x400008d3 400008bf: 41c2fe l32r a4, [0x00000068] ; 0x400003c8 400008c2: 4a41 add.n a4, a1, a4 400008c4: 4804 l32i.n a4, a4, 0 400008c6: 322112 l32i a3, a1, 72 400008c9: 3904 s32i.n a3, a4, 0 400008cb: 0c12 movi.n a2, 1 400008cd: 226114 s32i a2, a1, 80 400008d0: 060f00 j 0x40000910 400008d3: 81befe l32r a8, [0x0000006c] ; 0x400003cc 400008d6: 8a81 add.n a8, a1, a8 400008d8: 8808 l32i.n a8, a8, 0 400008da: 722112 l32i a7, a1, 72 400008dd: 7908 s32i.n a7, a8, 0 400008df: 620100 l8ui a6, a1, 0 400008e2: 1b66 addi.n a6, a6, 1 400008e4: 624100 s8i a6, a1, 0 400008e7: 51b9fe l32r a5, [0x0000006c] ; 0x400003cc 400008ea: 5a51 add.n a5, a1, a5 400008ec: 5805 l32i.n a5, a5, 0 400008ee: 4b55 addi.n a5, a5, 4 400008f0: 61b7fe l32r a6, [0x0000006c] ; 0x400003cc 400008f3: 6a61 add.n a6, a1, a6 400008f5: 5906 s32i.n a5, a6, 0 400008f7: 0c0a movi.n a10, 0 400008f9: 922111 l32i a9, a1, 68 400008fc: a79999 bne a9, a10, 0x40000899 400008ff: 21b2fe l32r a2, [0x00000068] ; 0x400003c8 40000902: 2a21 add.n a2, a1, a2 40000904: 2802 l32i.n a2, a2, 0 40000906: 020100 l8ui a0, a1, 0 40000909: 0902 s32i.n a0, a2, 0 4000090b: 0c0b movi.n a11, 0 4000090d: b26114 s32i a11, a1, 80 40000910: 222114 l32i a2, a1, 80 40000913: 022113 l32i a0, a1, 76 40000916: 12c170 addi a1, a1, 112 40000919: 0df0 ret.n 4000091b: 00 get_first_seg: 4000091c: 12c1e0 addi a1, a1, -32 4000091f: 0911 s32i.n a0, a1, 4 40000921: 51abfe l32r a5, [0x00000010] ; 0x400003d0 40000924: 5a51 add.n a5, a1, a5 40000926: 2905 s32i.n a2, a5, 0 40000928: 21abfe l32r a2, [0x00000014] ; 0x400003d4 4000092b: 2a21 add.n a2, a1, a2 4000092d: 3902 s32i.n a3, a2, 0 4000092f: 01aafe l32r a0, [0x00000018] ; 0x400003d8 40000932: 0a01 add.n a0, a1, a0 40000934: 4900 s32i.n a4, a0, 0 40000936: 31a6fe l32r a3, [0x00000010] ; 0x400003d0 40000939: 3a31 add.n a3, a1, a3 4000093b: 3803 l32i.n a3, a3, 0 4000093d: 3901 s32i.n a3, a1, 0 4000093f: 21a4fe l32r a2, [0x00000010] ; 0x400003d0 40000942: 2a21 add.n a2, a1, a2 40000944: 2802 l32i.n a2, a2, 0 40000946: 3d01 mov.n a3, a1 40000948: 850b00 call0 remove_head_space ; 0x40000a04 4000094b: 0c05 movi.n a5, 0 4000094d: 4801 l32i.n a4, a1, 0 4000094f: 420400 l8ui a4, a4, 0 40000952: 579402 bne a4, a5, 0x40000958 40000955: 462100 j 0x400009de 40000958: 0cd6 movi.n a6, 13 4000095a: 5801 l32i.n a5, a1, 0 4000095c: 520500 l8ui a5, a5, 0 4000095f: 67157b beq a5, a6, 0x400009de 40000962: 6801 l32i.n a6, a1, 0 40000964: 620600 l8ui a6, a6, 0 40000967: 269673 beqi a6, 10, 0x400009de 4000096a: 7801 l32i.n a7, a1, 0 4000096c: 720700 l8ui a7, a7, 0 4000096f: 26c731 beqi a7, 32, 0x400009a4 40000972: 0c99 movi.n a9, 9 40000974: 8801 l32i.n a8, a1, 0 40000976: 820800 l8ui a8, a8, 0 40000979: 971827 beq a8, a9, 0x400009a4 4000097c: 0196fe l32r a0, [0x00000014] ; 0x400003d4 4000097f: 0a01 add.n a0, a1, a0 40000981: 0800 l32i.n a0, a0, 0 40000983: b801 l32i.n a11, a1, 0 40000985: b20b00 l8ui a11, a11, 0 40000988: b24000 s8i a11, a0, 0 4000098b: a801 l32i.n a10, a1, 0 4000098d: 1baa addi.n a10, a10, 1 4000098f: a901 s32i.n a10, a1, 0 40000991: 9190fe l32r a9, [0x00000014] ; 0x400003d4 40000994: 9a91 add.n a9, a1, a9 40000996: 9809 l32i.n a9, a9, 0 40000998: 1b99 addi.n a9, a9, 1 4000099a: a18efe l32r a10, [0x00000014] ; 0x400003d4 4000099d: aaa1 add.n a10, a1, a10 4000099f: 990a s32i.n a9, a10, 0 400009a1: 460700 j 0x400009c2 400009a4: 618cfe l32r a6, [0x00000014] ; 0x400003d4 400009a7: 6a61 add.n a6, a1, a6 400009a9: 6806 l32i.n a6, a6, 0 400009ab: 0c05 movi.n a5, 0 400009ad: 524600 s8i a5, a6, 0 400009b0: 418afe l32r a4, [0x00000018] ; 0x400003d8 400009b3: 4a41 add.n a4, a1, a4 400009b5: 4804 l32i.n a4, a4, 0 400009b7: 3801 l32i.n a3, a1, 0 400009b9: 3904 s32i.n a3, a4, 0 400009bb: 0c02 movi.n a2, 0 400009bd: 2921 s32i.n a2, a1, 8 400009bf: 860d00 j 0x400009f9 400009c2: 0c08 movi.n a8, 0 400009c4: 7801 l32i.n a7, a1, 0 400009c6: 720700 l8ui a7, a7, 0 400009c9: 871711 beq a7, a8, 0x400009de 400009cc: 0cd9 movi.n a9, 13 400009ce: 8801 l32i.n a8, a1, 0 400009d0: 820800 l8ui a8, a8, 0 400009d3: 971807 beq a8, a9, 0x400009de 400009d6: 9801 l32i.n a9, a1, 0 400009d8: 920900 l8ui a9, a9, 0 400009db: 66998b bnei a9, 10, 0x4000096a 400009de: 317dfe l32r a3, [0x00000014] ; 0x400003d4 400009e1: 3a31 add.n a3, a1, a3 400009e3: 3803 l32i.n a3, a3, 0 400009e5: 0c02 movi.n a2, 0 400009e7: 224300 s8i a2, a3, 0 400009ea: 017bfe l32r a0, [0x00000018] ; 0x400003d8 400009ed: 0a01 add.n a0, a1, a0 400009ef: 0800 l32i.n a0, a0, 0 400009f1: 0c0b movi.n a11, 0 400009f3: b900 s32i.n a11, a0, 0 400009f5: 0c0a movi.n a10, 0 400009f7: a921 s32i.n a10, a1, 8 400009f9: 2821 l32i.n a2, a1, 8 400009fb: 0811 l32i.n a0, a1, 4 400009fd: 12c120 addi a1, a1, 32 40000a00: 0df0 ret.n 40000a02: 0000 remove_head_space: 40000a04: 12c1e0 addi a1, a1, -32 40000a07: 0911 s32i.n a0, a1, 4 40000a09: 4171fe l32r a4, [0x00000010] ; 0x400003d0 40000a0c: 4a41 add.n a4, a1, a4 40000a0e: 2904 s32i.n a2, a4, 0 40000a10: 0171fe l32r a0, [0x00000014] ; 0x400003d4 40000a13: 0a01 add.n a0, a1, a0 40000a15: 3900 s32i.n a3, a0, 0 40000a17: 616efe l32r a6, [0x00000010] ; 0x400003d0 40000a1a: 6a61 add.n a6, a1, a6 40000a1c: 6806 l32i.n a6, a6, 0 40000a1e: 6901 s32i.n a6, a1, 0 40000a20: 5801 l32i.n a5, a1, 0 40000a22: 520500 l8ui a5, a5, 0 40000a25: 26c509 beqi a5, 32, 0x40000a32 40000a28: 0c98 movi.n a8, 9 40000a2a: 7801 l32i.n a7, a1, 0 40000a2c: 720700 l8ui a7, a7, 0 40000a2f: 879717 bne a7, a8, 0x40000a4a 40000a32: 9801 l32i.n a9, a1, 0 40000a34: 1b99 addi.n a9, a9, 1 40000a36: 9901 s32i.n a9, a1, 0 40000a38: 8801 l32i.n a8, a1, 0 40000a3a: 820800 l8ui a8, a8, 0 40000a3d: 26c8f1 beqi a8, 32, 0x40000a32 40000a40: 0c9b movi.n a11, 9 40000a42: a801 l32i.n a10, a1, 0 40000a44: a20a00 l8ui a10, a10, 0 40000a47: b71ae7 beq a10, a11, 0x40000a32 40000a4a: 0162fe l32r a0, [0x00000014] ; 0x400003d4 40000a4d: 0a01 add.n a0, a1, a0 40000a4f: 0800 l32i.n a0, a0, 0 40000a51: b801 l32i.n a11, a1, 0 40000a53: b900 s32i.n a11, a0, 0 40000a55: 0c02 movi.n a2, 0 40000a57: 0811 l32i.n a0, a1, 4 40000a59: 12c120 addi a1, a1, 32 40000a5c: 0df0 ret.n 40000a5e: 0000 convert_para_str: 40000a60: 12c1e0 addi a1, a1, -32 40000a63: 0921 s32i.n a0, a1, 8 40000a65: 415afe l32r a4, [0x00000010] ; 0x400003d0 40000a68: 4a41 add.n a4, a1, a4 40000a6a: 2904 s32i.n a2, a4, 0 40000a6c: 015afe l32r a0, [0x00000014] ; 0x400003d4 40000a6f: 0a01 add.n a0, a1, a0 40000a71: 3900 s32i.n a3, a0, 0 40000a73: 6157fe l32r a6, [0x00000010] ; 0x400003d0 40000a76: 6a61 add.n a6, a1, a6 40000a78: 6806 l32i.n a6, a6, 0 40000a7a: 6901 s32i.n a6, a1, 0 40000a7c: 3c06 movi.n a6, 48 40000a7e: 5801 l32i.n a5, a1, 0 40000a80: 520500 l8ui a5, a5, 0 40000a83: 679562 bne a5, a6, 0x40000ae9 40000a86: 8801 l32i.n a8, a1, 0 40000a88: 1b88 addi.n a8, a8, 1 40000a8a: 8901 s32i.n a8, a1, 0 40000a8c: 5c88 movi.n a8, 88 40000a8e: 7801 l32i.n a7, a1, 0 40000a90: 720700 l8ui a7, a7, 0 40000a93: 87170a beq a7, a8, 0x40000aa1 40000a96: a2a078 movi a10, 120 40000a99: 9801 l32i.n a9, a1, 0 40000a9b: 920900 l8ui a9, a9, 0 40000a9e: a79923 bne a9, a10, 0x40000ac5 40000aa1: 214bfe l32r a2, [0x00000010] ; 0x400003d0 40000aa4: 2a21 add.n a2, a1, a2 40000aa6: 2802 l32i.n a2, a2, 0 40000aa8: 4b31 addi.n a3, a1, 4 40000aaa: c52000 call0 conv_str_hex ; 0x40000cb8 40000aad: 661211 bnei a2, 1, 0x40000ac2 40000ab0: 5149fe l32r a5, [0x00000014] ; 0x400003d4 40000ab3: 5a51 add.n a5, a1, a5 40000ab5: 5805 l32i.n a5, a5, 0 40000ab7: 4811 l32i.n a4, a1, 4 40000ab9: 4905 s32i.n a4, a5, 0 40000abb: 0c13 movi.n a3, 1 40000abd: 3931 s32i.n a3, a1, 12 40000abf: 861500 j 0x40000b19 40000ac2: 060800 j 0x40000ae6 40000ac5: 2142fe l32r a2, [0x00000010] ; 0x400003d0 40000ac8: 2a21 add.n a2, a1, a2 40000aca: 2802 l32i.n a2, a2, 0 40000acc: 4b31 addi.n a3, a1, 4 40000ace: 450500 call0 conv_str_decimal ; 0x40000b24 40000ad1: 661211 bnei a2, 1, 0x40000ae6 40000ad4: 5140fe l32r a5, [0x00000014] ; 0x400003d4 40000ad7: 5a51 add.n a5, a1, a5 40000ad9: 5805 l32i.n a5, a5, 0 40000adb: 4811 l32i.n a4, a1, 4 40000add: 4905 s32i.n a4, a5, 0 40000adf: 0c13 movi.n a3, 1 40000ae1: 3931 s32i.n a3, a1, 12 40000ae3: 860c00 j 0x40000b19 40000ae6: 060800 j 0x40000b0a 40000ae9: 2139fe l32r a2, [0x00000010] ; 0x400003d0 40000aec: 2a21 add.n a2, a1, a2 40000aee: 2802 l32i.n a2, a2, 0 40000af0: 4b31 addi.n a3, a1, 4 40000af2: 050300 call0 conv_str_decimal ; 0x40000b24 40000af5: 661211 bnei a2, 1, 0x40000b0a 40000af8: 5137fe l32r a5, [0x00000014] ; 0x400003d4 40000afb: 5a51 add.n a5, a1, a5 40000afd: 5805 l32i.n a5, a5, 0 40000aff: 4811 l32i.n a4, a1, 4 40000b01: 4905 s32i.n a4, a5, 0 40000b03: 0c13 movi.n a3, 1 40000b05: 3931 s32i.n a3, a1, 12 40000b07: 860300 j 0x40000b19 40000b0a: 8132fe l32r a8, [0x00000014] ; 0x400003d4 40000b0d: 8a81 add.n a8, a1, a8 40000b0f: 8808 l32i.n a8, a8, 0 40000b11: 7811 l32i.n a7, a1, 4 40000b13: 7908 s32i.n a7, a8, 0 40000b15: 0c06 movi.n a6, 0 40000b17: 6931 s32i.n a6, a1, 12 40000b19: 2831 l32i.n a2, a1, 12 40000b1b: 0821 l32i.n a0, a1, 8 40000b1d: 12c120 addi a1, a1, 32 40000b20: 0df0 ret.n 40000b22: 0000 conv_str_decimal: 40000b24: 12c1d0 addi a1, a1, -48 40000b27: 0941 s32i.n a0, a1, 16 40000b29: 412cfe l32r a4, [0x00000020] ; 0x400003dc 40000b2c: 4a41 add.n a4, a1, a4 40000b2e: 2904 s32i.n a2, a4, 0 40000b30: 012cfe l32r a0, [0x00000024] ; 0x400003e0 40000b33: 0a01 add.n a0, a1, a0 40000b35: 3900 s32i.n a3, a0, 0 40000b37: 8129fe l32r a8, [0x00000020] ; 0x400003dc 40000b3a: 8a81 add.n a8, a1, a8 40000b3c: 8808 l32i.n a8, a8, 0 40000b3e: 8901 s32i.n a8, a1, 0 40000b40: 0c07 movi.n a7, 0 40000b42: 724104 s8i a7, a1, 4 40000b45: 0c06 movi.n a6, 0 40000b47: 6921 s32i.n a6, a1, 8 40000b49: 0c06 movi.n a6, 0 40000b4b: 5801 l32i.n a5, a1, 0 40000b4d: 520500 l8ui a5, a5, 0 40000b50: 671535 beq a5, a6, 0x40000b89 40000b53: a801 l32i.n a10, a1, 0 40000b55: a20a00 l8ui a10, a10, 0 40000b58: 2cf9 movi.n a9, 47 40000b5a: a7b909 bgeu a9, a10, 0x40000b67 40000b5d: 0801 l32i.n a0, a1, 0 40000b5f: 020000 l8ui a0, a0, 0 40000b62: 3c9b movi.n a11, 57 40000b64: 07bb11 bgeu a11, a0, 0x40000b79 40000b67: 411efe l32r a4, [0x00000024] ; 0x400003e0 40000b6a: 4a41 add.n a4, a1, a4 40000b6c: 4804 l32i.n a4, a4, 0 40000b6e: 0c13 movi.n a3, 1 40000b70: 3904 s32i.n a3, a4, 0 40000b72: 0c12 movi.n a2, 1 40000b74: 2951 s32i.n a2, a1, 20 40000b76: 864c00 j 0x40000cac 40000b79: 6801 l32i.n a6, a1, 0 40000b7b: 1b66 addi.n a6, a6, 1 40000b7d: 6901 s32i.n a6, a1, 0 40000b7f: 0c06 movi.n a6, 0 40000b81: 5801 l32i.n a5, a1, 0 40000b83: 520500 l8ui a5, a5, 0 40000b86: 6795c9 bne a5, a6, 0x40000b53 40000b89: b114fe l32r a11, [0x00000020] ; 0x400003dc 40000b8c: bab1 add.n a11, a1, a11 40000b8e: b80b l32i.n a11, a11, 0 40000b90: a801 l32i.n a10, a1, 0 40000b92: b0aac0 sub a10, a10, a11 40000b95: a24104 s8i a10, a1, 4 40000b98: 9111fe l32r a9, [0x00000020] ; 0x400003dc 40000b9b: 9a91 add.n a9, a1, a9 40000b9d: 9809 l32i.n a9, a9, 0 40000b9f: 9901 s32i.n a9, a1, 0 40000ba1: 820104 l8ui a8, a1, 4 40000ba4: 0ca7 movi.n a7, 10 40000ba6: 87b711 bgeu a7, a8, 0x40000bbb 40000ba9: 310dfe l32r a3, [0x00000024] ; 0x400003e0 40000bac: 3a31 add.n a3, a1, a3 40000bae: 3803 l32i.n a3, a3, 0 40000bb0: 0c02 movi.n a2, 0 40000bb2: 2903 s32i.n a2, a3, 0 40000bb4: 0c10 movi.n a0, 1 40000bb6: 0951 s32i.n a0, a1, 20 40000bb8: 063c00 j 0x40000cac 40000bbb: 420104 l8ui a4, a1, 4 40000bbe: 269402 beqi a4, 10, 0x40000bc4 40000bc1: c62800 j 0x40000c68 40000bc4: 6801 l32i.n a6, a1, 0 40000bc6: 620600 l8ui a6, a6, 0 40000bc9: 3c45 movi.n a5, 52 40000bcb: 67b511 bgeu a5, a6, 0x40000be0 40000bce: 9104fe l32r a9, [0x00000024] ; 0x400003e0 40000bd1: 9a91 add.n a9, a1, a9 40000bd3: 9809 l32i.n a9, a9, 0 40000bd5: 0c08 movi.n a8, 0 40000bd7: 8909 s32i.n a8, a9, 0 40000bd9: 0c17 movi.n a7, 1 40000bdb: 7951 s32i.n a7, a1, 20 40000bdd: c63200 j 0x40000cac 40000be0: 0c00 movi.n a0, 0 40000be2: 02410c s8i a0, a1, 12 40000be5: b2010c l8ui a11, a1, 12 40000be8: 0c8a movi.n a10, 8 40000bea: b73a29 bltu a10, a11, 0x40000c17 40000bed: 6821 l32i.n a6, a1, 8 40000bef: 7821 l32i.n a7, a1, 8 40000bf1: 7066a0 addx4 a6, a6, a7 40000bf4: 7801 l32i.n a7, a1, 0 40000bf6: 720700 l8ui a7, a7, 0 40000bf9: 706690 addx2 a6, a6, a7 40000bfc: 62c6d0 addi a6, a6, -48 40000bff: 6921 s32i.n a6, a1, 8 40000c01: 5801 l32i.n a5, a1, 0 40000c03: 1b55 addi.n a5, a5, 1 40000c05: 5901 s32i.n a5, a1, 0 40000c07: 42010c l8ui a4, a1, 12 40000c0a: 1b44 addi.n a4, a4, 1 40000c0c: 42410c s8i a4, a1, 12 40000c0f: 32010c l8ui a3, a1, 12 40000c12: 0c82 movi.n a2, 8 40000c14: 37b2d5 bgeu a2, a3, 0x40000bed 40000c17: 9801 l32i.n a9, a1, 0 40000c19: 920900 l8ui a9, a9, 0 40000c1c: 92c9d0 addi a9, a9, -48 40000c1f: a821 l32i.n a10, a1, 8 40000c21: b821 l32i.n a11, a1, 8 40000c23: b0aaa0 addx4 a10, a10, a11 40000c26: f0aa11 slli a10, a10, 1 40000c29: 7cf8 movi.n a8, -1 40000c2b: a088c0 sub a8, a8, a10 40000c2e: 97b811 bgeu a8, a9, 0x40000c43 40000c31: 01ebfd l32r a0, [0x00000024] ; 0x400003e0 40000c34: 0a01 add.n a0, a1, a0 40000c36: 0800 l32i.n a0, a0, 0 40000c38: 0c0b movi.n a11, 0 40000c3a: b900 s32i.n a11, a0, 0 40000c3c: 0c1a movi.n a10, 1 40000c3e: a951 s32i.n a10, a1, 20 40000c40: 061a00 j 0x40000cac 40000c43: 41e7fd l32r a4, [0x00000024] ; 0x400003e0 40000c46: 4a41 add.n a4, a1, a4 40000c48: 4804 l32i.n a4, a4, 0 40000c4a: 3821 l32i.n a3, a1, 8 40000c4c: 5821 l32i.n a5, a1, 8 40000c4e: 5033a0 addx4 a3, a3, a5 40000c51: 5801 l32i.n a5, a1, 0 40000c53: 520500 l8ui a5, a5, 0 40000c56: 503390 addx2 a3, a3, a5 40000c59: 32c3d0 addi a3, a3, -48 40000c5c: 3904 s32i.n a3, a4, 0 40000c5e: 0c02 movi.n a2, 0 40000c60: 2951 s32i.n a2, a1, 20 40000c62: 861100 j 0x40000cac 40000c65: c61000 40000c68: 0c06 movi.n a6, 0 40000c6a: 520104 l8ui a5, a1, 4 40000c6d: 671529 beq a5, a6, 0x40000c9a 40000c70: b821 l32i.n a11, a1, 8 40000c72: 0821 l32i.n a0, a1, 8 40000c74: 00bba0 addx4 a11, a11, a0 40000c77: 0801 l32i.n a0, a1, 0 40000c79: 020000 l8ui a0, a0, 0 40000c7c: 00bb90 addx2 a11, a11, a0 40000c7f: b2cbd0 addi a11, a11, -48 40000c82: b921 s32i.n a11, a1, 8 40000c84: a801 l32i.n a10, a1, 0 40000c86: 1baa addi.n a10, a10, 1 40000c88: a901 s32i.n a10, a1, 0 40000c8a: 920104 l8ui a9, a1, 4 40000c8d: 0b99 addi.n a9, a9, -1 40000c8f: 924104 s8i a9, a1, 4 40000c92: 0c08 movi.n a8, 0 40000c94: 720104 l8ui a7, a1, 4 40000c97: 8797d5 bne a7, a8, 0x40000c70 40000c9a: 41d1fd l32r a4, [0x00000024] ; 0x400003e0 40000c9d: 4a41 add.n a4, a1, a4 40000c9f: 4804 l32i.n a4, a4, 0 40000ca1: 3821 l32i.n a3, a1, 8 40000ca3: 3904 s32i.n a3, a4, 0 40000ca5: 0c02 movi.n a2, 0 40000ca7: 2951 s32i.n a2, a1, 20 40000ca9: c6ffff j 0x40000cac 40000cac: 2851 l32i.n a2, a1, 20 40000cae: 0841 l32i.n a0, a1, 16 40000cb0: 12c130 addi a1, a1, 48 40000cb3: 0df0 ret.n 40000cb5: 000000 conv_str_hex: 40000cb8: 12c1d0 addi a1, a1, -48 40000cbb: 0931 s32i.n a0, a1, 12 40000cbd: 41c7fd l32r a4, [0x00000020] ; 0x400003dc 40000cc0: 4a41 add.n a4, a1, a4 40000cc2: 2904 s32i.n a2, a4, 0 40000cc4: 01c7fd l32r a0, [0x00000024] ; 0x400003e0 40000cc7: 0a01 add.n a0, a1, a0 40000cc9: 3900 s32i.n a3, a0, 0 40000ccb: 0c07 movi.n a7, 0 40000ccd: 7901 s32i.n a7, a1, 0 40000ccf: 61c3fd l32r a6, [0x00000020] ; 0x400003dc 40000cd2: 6a61 add.n a6, a1, a6 40000cd4: 6806 l32i.n a6, a6, 0 40000cd6: 2b66 addi.n a6, a6, 2 40000cd8: 6911 s32i.n a6, a1, 4 40000cda: 0c06 movi.n a6, 0 40000cdc: 5811 l32i.n a5, a1, 4 40000cde: 520500 l8ui a5, a5, 0 40000ce1: 679502 bne a5, a6, 0x40000ce7 40000ce4: c62e00 j 0x40000da3 40000ce7: 9811 l32i.n a9, a1, 4 40000ce9: 920900 l8ui a9, a9, 0 40000cec: 2cf8 movi.n a8, 47 40000cee: 97b817 bgeu a8, a9, 0x40000d09 40000cf1: b811 l32i.n a11, a1, 4 40000cf3: b20b00 l8ui a11, a11, 0 40000cf6: 3c9a movi.n a10, 57 40000cf8: b73a0d bltu a10, a11, 0x40000d09 40000cfb: 0811 l32i.n a0, a1, 4 40000cfd: 020000 l8ui a0, a0, 0 40000d00: 02c0d0 addi a0, a0, -48 40000d03: 024108 s8i a0, a1, 8 40000d06: c61500 j 0x40000d61 40000d09: 3811 l32i.n a3, a1, 4 40000d0b: 320300 l8ui a3, a3, 0 40000d0e: 4c02 movi.n a2, 64 40000d10: 37b217 bgeu a2, a3, 0x40000d2b 40000d13: 5811 l32i.n a5, a1, 4 40000d15: 520500 l8ui a5, a5, 0 40000d18: 4c64 movi.n a4, 70 40000d1a: 57340d bltu a4, a5, 0x40000d2b 40000d1d: 6811 l32i.n a6, a1, 4 40000d1f: 620600 l8ui a6, a6, 0 40000d22: 62c6c9 addi a6, a6, -55 40000d25: 624108 s8i a6, a1, 8 40000d28: 460d00 j 0x40000d61 40000d2b: 8811 l32i.n a8, a1, 4 40000d2d: 820800 l8ui a8, a8, 0 40000d30: 72a060 movi a7, 96 40000d33: 87b718 bgeu a7, a8, 0x40000d4f 40000d36: a811 l32i.n a10, a1, 4 40000d38: a20a00 l8ui a10, a10, 0 40000d3b: 92a066 movi a9, 102 40000d3e: a7390d bltu a9, a10, 0x40000d4f 40000d41: b811 l32i.n a11, a1, 4 40000d43: b20b00 l8ui a11, a11, 0 40000d46: b2cba9 addi a11, a11, -87 40000d49: b24108 s8i a11, a1, 8 40000d4c: 460400 j 0x40000d61 40000d4f: 31a4fd l32r a3, [0x00000024] ; 0x400003e0 40000d52: 3a31 add.n a3, a1, a3 40000d54: 3803 l32i.n a3, a3, 0 40000d56: 0c12 movi.n a2, 1 40000d58: 2903 s32i.n a2, a3, 0 40000d5a: 0c10 movi.n a0, 1 40000d5c: 0941 s32i.n a0, a1, 16 40000d5e: 061400 j 0x40000db2 40000d61: 619efd l32r a6, [0x00000020] ; 0x400003dc 40000d64: 6a61 add.n a6, a1, a6 40000d66: 6806 l32i.n a6, a6, 0 40000d68: 5811 l32i.n a5, a1, 4 40000d6a: 6055c0 sub a5, a5, a6 40000d6d: 0c94 movi.n a4, 9 40000d6f: 57a411 bge a4, a5, 0x40000d84 40000d72: 919bfd l32r a9, [0x00000024] ; 0x400003e0 40000d75: 9a91 add.n a9, a1, a9 40000d77: 9809 l32i.n a9, a9, 0 40000d79: 0c08 movi.n a8, 0 40000d7b: 8909 s32i.n a8, a9, 0 40000d7d: 0c17 movi.n a7, 1 40000d7f: 7941 s32i.n a7, a1, 16 40000d81: 460b00 j 0x40000db2 40000d84: 2801 l32i.n a2, a1, 0 40000d86: c02211 slli a2, a2, 4 40000d89: 020108 l8ui a0, a1, 8 40000d8c: 2a00 add.n a0, a0, a2 40000d8e: 0901 s32i.n a0, a1, 0 40000d90: b811 l32i.n a11, a1, 4 40000d92: 1bbb addi.n a11, a11, 1 40000d94: b911 s32i.n a11, a1, 4 40000d96: 0c0b movi.n a11, 0 40000d98: a811 l32i.n a10, a1, 4 40000d9a: a20a00 l8ui a10, a10, 0 40000d9d: b71a02 beq a10, a11, 0x40000da3 40000da0: c6d0ff j 0x40000ce7 40000da3: 518ffd l32r a5, [0x00000024] ; 0x400003e0 40000da6: 5a51 add.n a5, a1, a5 40000da8: 5805 l32i.n a5, a5, 0 40000daa: 4801 l32i.n a4, a1, 0 40000dac: 4905 s32i.n a4, a5, 0 40000dae: 0c03 movi.n a3, 0 40000db0: 3941 s32i.n a3, a1, 16 40000db2: 2841 l32i.n a2, a1, 16 40000db4: 0831 l32i.n a0, a1, 12 40000db6: 12c130 addi a1, a1, 48 40000db9: 0df0 ret.n 40000dbb: 00 40000dbc: 3fffdab0 ; l32r ; Set idle callback ets_set_idle_cb: 40000dc0: 41ffff l32r a4, [0x3fffdab0] ; 0x40000dbc 40000dc3: 2904 s32i.n a2, a4, 0 40000dc5: 3914 s32i.n a3, a4, 4 40000dc7: 0df0 ret.n 40000dc9: 000000 40000dcc: 3fffdac0 ; l32r ets_task: 40000dd0: 0c16 movi.n a6, 1 40000dd2: c08311 slli a8, a3, 4 40000dd5: 71fdff l32r a7, [0x3fffdac0] ; 0x40000dcc 40000dd8: 0c09 movi.n a9, 0 40000dda: 8a77 add.n a7, a7, a8 40000ddc: 0b83 addi.n a8, a3, -1 40000dde: 72c7f0 addi a7, a7, -16 40000de1: 2907 s32i.n a2, a7, 0 40000de3: 4917 s32i.n a4, a7, 4 40000de5: 524708 s8i a5, a7, 8 40000de8: 924709 s8i a9, a7, 9 40000deb: 92470a s8i a9, a7, 10 40000dee: 92470b s8i a9, a7, 11 40000df1: 001840 ssl a8 40000df4: 0066a1 sll a6, a6 40000df7: 6937 s32i.n a6, a7, 12 40000df9: 0df0 ret.n 40000dfb: 00 ; Cute little stub routine ; called just below in ets_run() sub_dfc: 40000dfc: 0df0 ret.n 40000dfe: 0000 40000e00: 3fffc6fc ; l32r ets_run: 40000e04: 12c1f0 addi a1, a1, -16 ; stack 40000e07: 21feff l32r a2, [0x3fffc6fc] ; 0x40000e00 40000e0a: 026100 s32i a0, a1, 0 ; save return 40000e0d: 02a000 movi a0, 0 ; a0 = 0 40000e10: 024200 s8i a0, a2, 0 ; 0 byte --> 3fffc6fc 40000e13: 85feff call0 sub_dfc ; 0x40000dfc 40000e16: 450b00 call0 sub_ecc ; 0x40000ecc 40000e19: 022100 l32i a0, a1, 0 ; restore return 40000e1c: 12c110 addi a1, a1, 16 ; stack 40000e1f: 0df0 ret.n 40000e21: 000000 ets_post: 40000e24: 12c1f0 addi a1, a1, -16 40000e27: 226102 s32i a2, a1, 8 40000e2a: 326100 s32i a3, a1, 0 40000e2d: 426101 s32i a4, a1, 4 40000e30: 0931 s32i.n a0, a1, 12 40000e32: 051400 call0 ets_intr_lock ; 0x40000f74 40000e35: 2821 l32i.n a2, a1, 8 40000e37: 01e5ff l32r a0, [0x3fffdac0] ; 0x40000dcc 40000e3a: c02211 slli a2, a2, 4 40000e3d: 2a00 add.n a0, a0, a2 40000e3f: 72d0ff addmi a7, a0, 0xffffff00 40000e42: 3207f8 l8ui a3, a7, 248 40000e45: 2207fb l8ui a2, a7, 251 40000e48: 6811 l32i.n a6, a1, 4 40000e4a: 37b25f bgeu a2, a3, 0x40000ead ; return 1 40000e4d: 22c0f0 addi a2, a0, -16 40000e50: 820209 l8ui a8, a2, 9 40000e53: 9812 l32i.n a9, a2, 4 40000e55: 1b58 addi.n a5, a8, 1 40000e57: 9088b0 addx8 a8, a8, a9 40000e5a: 6918 s32i.n a6, a8, 4 40000e5c: 9801 l32i.n a9, a1, 0 40000e5e: 9908 s32i.n a9, a8, 0 40000e60: 3207f8 l8ui a3, a7, 248 40000e63: 524209 s8i a5, a2, 9 40000e66: 4207f9 l8ui a4, a7, 249 40000e69: 02d0ff addmi a0, a0, 0xffffff00 40000e6c: 479304 bne a3, a4, 0x40000e74 40000e6f: 0c0a movi.n a10, 0 40000e71: a24209 s8i a10, a2, 9 40000e74: 32020b l8ui a3, a2, 11 40000e77: 32c301 addi a3, a3, 1 40000e7a: 32420b s8i a3, a2, 11 40000e7d: b200fb l8ui a11, a0, 251 40000e80: 261b0d beqi a11, 1, 0x40000e91 ; return 0 40000e83: c50f00 call0 ets_intr_unlock ; 0x40000f80 40000e86: 22a000 movi a2, 0 40000e89: 022103 l32i a0, a1, 12 40000e8c: 12c110 addi a1, a1, 16 40000e8f: 0df0 ret.n 40000e91: 51caff l32r a5, [0x3fffdab0] ; 0x40000dbc 40000e94: 42203f l32i a4, a0, 252 ; read 3fffdac0 + 252 40000e97: 622502 l32i a6, a5, 8 ; read 3fffdab8 40000e9a: 604420 or a4, a4, a6 40000e9d: 426502 s32i a4, a5, 8 ; write 3fffdab8 ; return 0 40000ea0: c50d00 call0 ets_intr_unlock ; 0x40000f80 40000ea3: 22a000 movi a2, 0 40000ea6: 0831 l32i.n a0, a1, 12 40000ea8: 12c110 addi a1, a1, 16 40000eab: 0df0 ret.n ; return 1 40000ead: 050d00 call0 ets_intr_unlock ; 0x40000f80 40000eb0: 22a001 movi a2, 1 40000eb3: 022103 l32i a0, a1, 12 40000eb6: 12c110 addi a1, a1, 16 40000eb9: 800000 ret ; called only from one place below ... sub_ebc: 40000ebc: 30f240 nsau a3, a2 ; a3 = shift to normalize a2 40000ebf: 2c02 movi.n a2, 32 ; a2 = 32 40000ec1: 3022c0 sub a2, a2, a3 ; a2 = a2 - a3 40000ec4: 202074 extui a2, a2, 0, 8 ; a2 = low 8 bits of a2 40000ec7: 0df0 ret.n 40000ec9: 000000 ; called by ets_run above (and only from ets_run) ; this is the "heart" of ets_run sub_ecc: 40000ecc: 12c1e0 addi a1, a1, -32 ; stack 40000ecf: 0901 s32i.n a0, a1, 0 ; return 40000ed1: f941 s32i.n a15, a1, 16 ; save a15 40000ed3: e931 s32i.n a14, a1, 12 ; save a14 40000ed5: d921 s32i.n a13, a1, 8 ; save a13 40000ed7: c911 s32i.n a12, a1, 4 ; save a12 40000ed9: d1c9ff l32r a13, [0x3fffc6fc] ; 0x40000e00 40000edc: c1b8ff l32r a12, [0x3fffdab0] ; 0x40000dbc 40000edf: d20d00 l8ui a13, a13, 0 ; fetch from 3fffc6fc 40000ee2: 461a00 j 0x40000f4f 40000ee5: e1b9ff l32r a14, [0x3fffdac0] ; 0x40000dcc 40000ee8: c0f211 slli a15, a2, 4 40000eeb: faee add.n a14, a14, a15 40000eed: 02cef0 addi a0, a14, -16 40000ef0: 42deff addmi a4, a14, 0xffffff00 40000ef3: 3204f8 l8ui a3, a4, 248 40000ef6: 52243d l32i a5, a4, 244 40000ef9: 62000a l8ui a6, a0, 10 40000efc: f204fa l8ui a15, a4, 250 40000eff: 62c601 addi a6, a6, 1 40000f02: 62400a s8i a6, a0, 10 40000f05: 4204fa l8ui a4, a4, 250 40000f08: 50ffb0 addx8 a15, a15, a5 40000f0b: 479305 bne a3, a4, 0x40000f14 40000f0e: 32a000 movi a3, 0 40000f11: 32400a s8i a3, a0, 10 40000f14: 62000b l8ui a6, a0, 11 40000f17: 42deff addmi a4, a14, 0xffffff00 40000f1a: 0b66 addi.n a6, a6, -1 40000f1c: 62400b s8i a6, a0, 11 40000f1f: 5204fb l8ui a5, a4, 251 40000f22: 782c l32i.n a7, a12, 8 40000f24: ccc5 bnez.n a5, 0x40000f34 40000f26: 82243f l32i a8, a4, 252 40000f29: 7cf9 movi.n a9, -1 40000f2b: 908830 xor a8, a8, a9 40000f2e: 807710 and a7, a7, a8 40000f31: 726c02 s32i a7, a12, 8 40000f34: a1b3ff l32r a10, [0x3fffc6fc] ; 0x40000e00 40000f37: 224a00 s8i a2, a10, 0 40000f3a: 450400 call0 ets_intr_unlock ; 0x40000f80 40000f3d: 02deff addmi a0, a14, 0xffffff00 40000f40: 02203c l32i a0, a0, 240 40000f43: f02f20 or a2, a15, a15 40000f46: c00000 callx0 a0 40000f49: 21adff l32r a2, [0x3fffc6fc] ; 0x40000e00 40000f4c: d24200 s8i a13, a2, 0 ; things come here - this loops. 40000f4f: 450200 call0 ets_intr_lock ; 0x40000f74 40000f52: 222c02 l32i a2, a12, 8 ; 32 bit load from 3fffdab8 40000f55: 45f6ff call0 sub_ebc ; 0x40000ebc 40000f58: 273d89 bltu a13, a2, 0x40000ee5 ; branch if a13 < a2 ; check for an idle callback function in 3fffdab0 ; if we find one, call it with a2 loaded from 3fffdab4 40000f5b: 422c00 l32i a4, a12, 0 ; load from 3fffdab0 40000f5e: 8c34 beqz.n a4, 0x40000f65 40000f60: 281c l32i.n a2, a12, 4 ; load from 3fffdab4 40000f62: c00400 callx0 a4 40000f65: 007000 waiti 0 ; wait at level 0 40000f68: 450100 call0 ets_intr_unlock ; 0x40000f80 40000f6b: 06f8ff j 0x40000f4f 40000f6e: 0000 40000f70: 3fffdcc0 ; l32r ; rsil is "read and set interrupt level" ; it reads the ps register first (to the specified register) ; then it sets ps.intlevel to the specified value. ; interrupts at and below the specified level are disabled. ets_intr_lock: 40000f74: 206300 rsil a2, 3 40000f77: 31feff l32r a3, [0x3fffdcc0] ; 0x40000f70 40000f7a: 2903 s32i.n a2, a3, 0 ; save prior level 40000f7c: 0df0 ret.n 40000f7e: 0000 ets_intr_unlock: 40000f80: 206000 rsil a2, 0 40000f83: 0df0 ret.n 40000f85: 000000 ; ets_isr_attach ( int_no, function, xx ) ; ; As an example for the Uart == ets_isr_attach ( 5, uart_rx_intr_handler, 3fffde28 ) ; ets_isr_attach: 40000f88: 12c1f0 addi a1, a1, -16 40000f8b: 0901 s32i.n a0, a1, 0 40000f8d: 85d90a call0 _xtos_set_interrupt_handler_arg ; 0x4000bd28 40000f90: 0801 l32i.n a0, a1, 0 40000f92: 12c110 addi a1, a1, 16 40000f95: 0df0 ret.n 40000f97: 00 ; ets_isr_mask ( mask ) ; ; simply calls _xtos_ints_off ( mask ) - could be a macro or alias ; ; mask is 1 << int_no ets_isr_mask: 40000f98: 12c1f0 addi a1, a1, -16 40000f9b: 0901 s32i.n a0, a1, 0 40000f9d: 45e00a call0 _xtos_ints_off ; 0x4000bda4 40000fa0: 0801 l32i.n a0, a1, 0 40000fa2: 12c110 addi a1, a1, 16 40000fa5: 0df0 ret.n 40000fa7: 00 ; ets_isr_unmask ( mask ) ; simply calls _xtos_ints_on ( mask ) - could be a macro or alias ets_isr_unmask: 40000fa8: 12c1f0 addi a1, a1, -16 40000fab: 0901 s32i.n a0, a1, 0 40000fad: 45dd0a call0 _xtos_ints_on ; 0x4000bd84 40000fb0: 0801 l32i.n a0, a1, 0 40000fb2: 12c110 addi a1, a1, 16 40000fb5: 0df0 ret.n 40000fb7: 00 40000fb8: 3fffdcd0 ; l32r ; This just saves its argument (in a2) to location 3fffdcd0 ; (which is the user code start address) ; It will be fetched from there and branched to when the time comes. ets_set_user_start: 40000fbc: 31ffff l32r a3, [0x3fffdcd0] ; 0x40000fb8 40000fbf: 2903 s32i.n a2, a3, 0 40000fc1: 0df0 ret.n 40000fc3: 00 40000fc4: 60000200 ; l32r - IO base address 40000fc8: 3fffd6a0 ; l32r 40000fcc: 3fffd674 ; l32r 40000fd0: 3fffd6b8 ; l32r 40000fd4: 3fffd6c0 ; l32r 40000fd8: 400017e0 ; l32r 40000fdc: 40001878 ; l32r 40000fe0: 3fffd6dc ; l32r 40000fe4: 3fffd6ac ; l32r 40000fe8: 3fffd6cc ; l32r ; Aha ... here is main() ; *** MAIN *** main: 40000fec: 12c1f0 addi a1, a1, -16 40000fef: c911 s32i.n a12, a1, 4 40000ff1: d921 s32i.n a13, a1, 8 40000ff3: 026100 s32i a0, a1, 0 40000ff6: 458402 call0 uartAttach ; 0x4000383c 40000ff9: 0c02 movi.n a2, 0 40000ffb: 85a102 call0 Uart_Init ; 0x40003a14 40000ffe: 854301 call0 ets_install_uart_printf ; 0x40002438 ; Read the GPIO pins to determine the boot mode. ; The claims are that to get the boot loader to run you must: ; Pull GPIO 0 low (this is the usual pin a jumper manipulates) ; Pull GPIO 2 high ; Pull GPIO 15 low (do we see this below ???) ; I am skeptical about GPIO 15, I never see it being tested here. 40001001: c1f0ff l32r a12, [0x60000200] ; 0x40000fc4 40001004: c02000 memw 40001007: 022c46 l32i a0, a12, 0x118 ; read GPIO inputs 4000100a: 000025 extui a0, a0, 16, 3 4000100d: 266033 beqi a0, 6, 0x40001044 ; 110 40001010: c02000 memw 40001013: 322c46 l32i a3, a12, 0x118 ; read GPIO inputs 40001016: 303025 extui a3, a3, 16, 3 40001019: 32c3f9 addi a3, a3, -7 4000101c: 168312 beqz a3, 0x40001148 ; 111 4000101f: c02000 memw 40001022: 422c46 l32i a4, a12, 0x118 ; read GPIO inputs 40001025: 404025 extui a4, a4, 16, 3 40001028: 42c4fc addi a4, a4, -4 4000102b: 161412 beqz a4, 0x40001150 ; 100 4000102e: c02000 memw 40001031: 522c46 l32i a5, a12, 0x118 ; read GPIO inputs 40001034: 505025 extui a5, a5, 16, 3 40001037: 66550f bnei a5, 5, 0x4000104a ; not 101 ; What the heck is SIP? ; silicon in package ? ; session initialization protocol ? 4000103a: 22a003 movi a2, 3 ; is 101 4000103d: c56304 call0 sip_init_attach ; 0x4000567c 40001040: 860100 j 0x4000104a 40001043: 00 ; Here if boot bits match 110 40001044: 22a000 movi a2, 0 40001047: 456304 call0 sip_init_attach ; 0x4000567c 4000104a: 455901 call0 rtc_get_reset_reason ; 0x400025e0 4000104d: 4d02 mov.n a4, a2 ; arg2 for printf (cause) 4000104f: dd02 mov.n a13, a2 40001051: 31ddff l32r a3, [0x3fffd6a0] ; 0x40000fc8 40001054: 21deff l32r a2, [0x3fffd674] ; 0x40000fcc 40001057: c02000 memw ; This will be arg3 for printf - for "mode:(a5,a6)" 4000105a: 522c46 l32i a5, a12, 0x118 ; read GPIO inputs 4000105d: 505025 extui a5, a5, 16, 3 ; low 3 40001060: c02000 memw ; This will be arg4 for printf - for "mode:(a5,a6)" 40001063: 622c46 l32i a6, a12, 0x118 ; read GPIO inputs 40001066: 606d25 extui a6, a6, 29, 3 ; top 3 ; When I hold down the boot button (grounding GPIO 0) and hit reset, ; I see one line of output: ; ets Jan 8 2013,rst cause:2, boot mode:(1,6) ; ; When I don't hold the button and let it start my application, I see: ; ; ets Jan 8 2013,rst cause:2, boot mode:(3,7) ; ; load 0x40100000, len 27188, room 16 ; tail 4 ; chksum 0xc0 ; load 0x3ffe8000, len 884, room 4 ; tail 0 ; chksum 0x30 ; load 0x3ffe8378, len 280, room 8 ; tail 0 ; chksum 0x12 ; csum 0x12 ; ; This all comes out at 74880 baud (since the processor is running at 52 Mhz), ; so you only see garbled characters unless you take special pains ; to listen at 74880 baud. ; If the boot loader runs, it will do auto baud detection and crank up the ; baud rate to match an external 115200 or whatever is used. ; ; How, you may ask, does esptool talk to this ROM? ; It turns out that the ROM autodetects baud rate, so esptool can talk at ; 115200 and the ROM makes adjustments to "get it right" ; ; This particular call uses the format: ; ; 3fffd674: "\n ets %s,rst cause:%d, boot mode:(%d,%d)\n\n" ; 3fffd6a0: "Jan 8 2013" ; 40001069: 054601 call0 ets_printf ; 0x400024cc ; 3fffdcd0 will hold the user start address. 4000106c: 01d3ff l32r a0, [0x3fffdcd0] ; 0x40000fb8 4000106f: f63d02 bgeui a13, 3, 0x40001075 40001072: 56bd0a bnez a13, 0x40001121 ; << ** uart loader 40001075: 263d11 beqi a13, 3, 0x4000108a 40001078: 62cdfc addi a6, a13, -4 4000107b: 169609 beqz a6, 0x40001118 ; wdt reset 4000107e: b67d02 bltui a13, 7, 0x40001084 40001081: c62a00 j 0x40001130 ; << unknown reset 40001084: f65d02 bgeui a13, 5, 0x4000108a 40001087: 462900 j 0x40001130 ; << unknown reset ; uart_loader will come here when done 4000108a: c02000 memw 4000108d: 722c46 l32i a7, a12, 0x118 40001090: 707025 extui a7, a7, 16, 3 40001093: 263711 beqi a7, 3, 0x400010a8 ; << ** load APP 40001096: c02000 memw 40001099: 822c46 l32i a8, a12, 0x118 4000109c: 922000 l32i a9, a0, 0 4000109f: 808025 extui a8, a8, 16, 3 400010a2: 661818 bnei a8, 1, 0x400010be ; just run APP again 400010a5: 565901 bnez a9, 0x400010be ; just run APP again ; This call is what copies an app out of flash and gets it ready to run. ; It returns 0 if everything is good to go. ; It returns 1 if there is trouble (read error or bad cksum). 400010a8: c52500 call0 sub_1308 ; 0x40001308 - SPI_load() 400010ab: 16f200 beqz a2, 0x400010be ; run APP ; Some kind of trouble loading the app. ; ; Format is "%s %s \n" ; a3 points to "ets_main.c" ; a4 = 181 seems fishy for something to pass to a %s ; however, this format is used for each and every error ; panic throughout the bootrom -- it looks like a coding ; error to me, and probably doesn't get exercised much 400010ae: 21c8ff l32r a2, [0x3fffd6b8] ; 0x40000fd0 400010b1: 31c8ff l32r a3, [0x3fffd6c0] ; 0x40000fd4 400010b4: 42a0b5 movi a4, 181 ; printf arg2 400010b7: 454101 call0 ets_printf ; 0x400024cc 400010ba: 06ffff j 0x400010ba ; ** spin !! 400010bd: 00 ; APP code loaded correctly and we are good to go. ; set a raft of exception handlers ; then make the call to run APP code. 400010be: 22a009 movi a2, 9 400010c1: 31c5ff l32r a3, [sub_17e0] ; [0x400017e0] 0x40000fd8 400010c4: c538ff call0 _xtos_set_exception_handler ; 0x40000454 400010c7: c1c5ff l32r a12, [sub_1878] ; [0x40001878] 0x40000fdc 400010ca: 0c02 movi.n a2, 0 400010cc: 3d0c mov.n a3, a12 400010ce: 4538ff call0 _xtos_set_exception_handler ; 0x40000454 400010d1: 0c22 movi.n a2, 2 400010d3: 3d0c mov.n a3, a12 400010d5: c537ff call0 _xtos_set_exception_handler ; 0x40000454 400010d8: 0c32 movi.n a2, 3 400010da: 3d0c mov.n a3, a12 400010dc: 4537ff call0 _xtos_set_exception_handler ; 0x40000454 400010df: 1cc2 movi.n a2, 28 400010e1: 3d0c mov.n a3, a12 400010e3: 0537ff call0 _xtos_set_exception_handler ; 0x40000454 400010e6: 1cd2 movi.n a2, 29 400010e8: 3d0c mov.n a3, a12 400010ea: 8536ff call0 _xtos_set_exception_handler ; 0x40000454 400010ed: 3d0c mov.n a3, a12 400010ef: 22a008 movi a2, 8 400010f2: 0536ff call0 _xtos_set_exception_handler ; 0x40000454 ; fetch the start address. 400010f5: 21b0ff l32r a2, [0x3fffdcd0] ; 0x40000fb8 400010f8: 2802 l32i.n a2, a2, 0 400010fa: 162200 beqz a2, 0x40001100 ; No start !!?? ; ******************************************** ; ; **** **** This is what branches to user code 400010fd: c00200 callx0 a2 ; The user code probably won't return, but it might !! ; Format follows: "user code done" ; ets_printf ( "user code done" ) 40001100: 21b8ff l32r a2, [0x3fffd6dc] ; 0x40000fe0 40001103: 853c01 call0 ets_printf ; 0x400024cc 40001106: c5cfff call0 ets_run ; 0x40000e04 40001109: 22a000 movi a2, 0 4000110c: c22101 l32i a12, a1, 4 4000110f: d821 l32i.n a13, a1, 8 40001111: 0801 l32i.n a0, a1, 0 40001113: 12c110 addi a1, a1, 16 40001116: 0df0 ret.n ; Format: "wdt reset" 40001118: 21b3ff l32r a2, [0x3fffd6ac] ; 0x40000fe4 4000111b: 101120 or a1, a1, a1 4000111e: c53a01 call0 ets_printf ; 0x400024cc ; ******************* ; The following calls the uart loader <<< ***** ; call uart_loader (sub_11ac) 40001121: 21a5ff l32r a2, [0x3fffdcd0] ; 0x40000fb8 40001124: 450800 call0 uart_loader ; 0x400011ac 40001127: 01a4ff l32r a0, [0x3fffdcd0] ; 0x40000fb8 4000112a: 06d7ff j 0x4000108a 4000112d: 000000 ; Format: "unknown reset" 40001130: 21aeff l32r a2, [0x3fffd6cc] ; 0x40000fe8 40001133: 853901 call0 ets_printf ; 0x400024cc ; Format: "%s %s " 40001136: 21a6ff l32r a2, [0x3fffd6b8] ; 0x40000fd0 40001139: 31a6ff l32r a3, [0x3fffd6c0] ; 0x40000fd4 4000113c: 42a0bb movi a4, 187 4000113f: c53801 call0 ets_printf ; 0x400024cc 40001142: 06ffff j 0x40001142 ; *** spin !! 40001145: 000000 ; Here if boot bits match 111 40001148: 0c12 movi.n a2, 1 4000114a: 055304 call0 sip_init_attach ; 0x4000567c 4000114d: 46beff j 0x4000104a ; Here if boot bits match 100 40001150: 0c22 movi.n a2, 2 40001152: 855204 call0 sip_init_attach ; 0x4000567c 40001155: 46bcff j 0x4000104a ; END of main() ; ; **************************************** 40001158: 00000000 4000115c: 60000600 ; l32r ; subroutine - called from below in one place ; fiddles with IOMUX_SD_DATA1 (60000824) sub_1160: 40001160: 12c1f0 addi a1, a1, -16 ; stack space 40001163: 0901 s32i.n a0, a1, 0 ; save return 40001165: 52aecf movi a5, 0xfffffecf 40001168: 31fdff l32r a3, [0x60000600] ; 0x4000115c 4000116b: c02000 memw 4000116e: 422389 l32i a4, a3, 0x224 ; read 40001171: 504410 and a4, a4, a5 ; clear bits 40001174: c02000 memw 40001177: 426389 s32i a4, a3, 0x224 ; write 4000117a: c02000 memw 4000117d: 022389 l32i a0, a3, 0x224 ; read 40001180: c02000 memw 40001183: 026389 s32i a0, a3, 0x224 ; write again as is ! 40001186: 860000 j 0x4000118c ; spin here polling sip_get_state 40001189: 007000 waiti 0 4000118c: 854d04 call0 sip_get_state ; 0x40005668 4000118f: 6622f6 bnei a2, 2, 0x40001189 40001192: 0801 l32i.n a0, a1, 0 ; restore return 40001194: 12c110 addi a1, a1, 16 ; restore stack 40001197: 0df0 ret.n 40001199: 000000 4000119c: 3fffd6ec ; l32r 400011a0: 3fffa000 ; l32r 400011a4: 00002000 ; l32r 400011a8: 40100000 ; l32r ; This is the main call for the uart loader ; "uart_loader" ; argument is a pointer where we are expected to return something ; (the something seems to be an address) uart_loader: 400011ac: 12c1e0 addi a1, a1, -32 ; stack space 400011af: 0931 s32i.n a0, a1, 12 ; save return 400011b1: c941 s32i.n a12, a1, 16 ; save a12 400011b3: c184ff l32r a12, [0x60000200] ; 0x40000fc4 400011b6: c02000 memw 400011b9: 022c46 l32i a0, a12, 0x118 ; GPIO read 400011bc: 2911 s32i.n a2, a1, 4 ; save a2 ; Test bit 18 in the GPIO read ; (this is GPIO 2 in the upper half of 318)) 400011be: 277010 bbci a0, 18, 0x400011d2 400011c1: c02000 memw 400011c4: 222c46 l32i a2, a12, 0x118 ; GPIO read 400011c7: 0c10 movi.n a0, 1 400011c9: 202d25 extui a2, a2, 29, 3 ; upper 3 bits 400011cc: 22c2fe addi a2, a2, -2 400011cf: 162209 beqz a2, 0x40001265 ; bounces to 400011d4 ; Here if GPIO 2 is zero ; or if GPIO 2 is one and GPIO 15 (?) is one 400011d2: 0c00 movi.n a0, 0 ; Here with either a0 = 0 or 1 400011d4: c02000 memw 400011d7: 322c46 l32i a3, a12, 0x118 ; GPIO read 400011da: 303025 extui a3, a3, 16, 3 ; low 3 bits 400011dd: 32c3fd addi a3, a3, -3 400011e0: 16c30c beqz a3, 0x400012b0 ; *** 400011e3: c02000 memw 400011e6: 422c46 l32i a4, a12, 0x118 ; GPIO read 400011e9: 006074 extui a6, a0, 0, 8 400011ec: 404025 extui a4, a4, 16, 3 400011ef: 262475 beqi a4, 2, 0x40001268 ; return 0x40100000 400011f2: 6921 s32i.n a6, a1, 8 400011f4: c02000 memw 400011f7: 522c46 l32i a5, a12, 0x118 ; GPIO read 400011fa: 0c00 movi.n a0, 0 400011fc: 505025 extui a5, a5, 16, 3 400011ff: 261577 beqi a5, 1, 0x4000127a ; baud detect 40001202: c02000 memw 40001205: 722c46 l32i a7, a12, 0x118 ; GPIO read 40001208: 277717 bbci a7, 18, 0x40001223 4000120b: c02000 memw 4000120e: 822c46 l32i a8, a12, 0x118 ; GPIO read 40001211: f02000 nop 40001214: 808d25 extui a8, a8, 29, 3 40001217: 262808 beqi a8, 2, 0x40001223 ; Format: "waiting for host" 4000121a: 21e0ff l32r a2, [0x3fffd6ec] ; 0x4000119c 4000121d: c52a01 call0 ets_printf ; 0x400024cc 40001220: 02a001 movi a0, 1 40001223: c02000 memw 40001226: 922c46 l32i a9, a12, 0x118 ; GPIO read 40001229: 27790e bbci a9, 18, 0x4000123b ; *** 4000122c: c02000 memw 4000122f: a22c46 l32i a10, a12, 0x118 ; GPIO read 40001232: 026100 s32i a0, a1, 0 40001235: a0ad25 extui a10, a10, 29, 3 40001238: 262a55 beqi a10, 2, 0x40001291 4000123b: 66200e bnei a0, 2, 0x4000124d ; return XXX 4000123e: 21d8ff l32r a2, [0x3fffa000] ; 0x400011a0 40001241: 31d8ff l32r a3, [0x00002000] ; 0x400011a4 40001244: 4811 l32i.n a4, a1, 4 ; The following call gets a command from the host and handles it 40001246: 051202 call0 UartDwnLdProc ; 0x40003368 40001249: c60000 j 0x40001250 4000124c: 00 4000124d: 05f1ff call0 sub_1160 ; 0x40001160 - above 40001250: b22102 l32i a11, a1, 8 40001253: 165b00 beqz a11, 0x4000125c 40001256: 22a000 movi a2, 0 40001259: 856402 call0 uart_buff_switch ; 0x400038a4 4000125c: c841 l32i.n a12, a1, 16 ; restore a12 4000125e: 0831 l32i.n a0, a1, 12 ; restore return 40001260: 12c120 addi a1, a1, 32 ; restore stack 40001263: 0df0 ret.n 40001265: c6daff j 0x400011d4 40001268: 0811 l32i.n a0, a1, 4 ; from stack 4000126a: c1cfff l32r a12, [0x40100000] ; 0x400011a8 4000126d: c900 s32i.n a12, a0, 0 4000126f: c841 l32i.n a12, a1, 16 ; restore a12 40001271: 0831 l32i.n a0, a1, 12 ; restore return 40001273: 12c120 addi a1, a1, 32 ; restore stack 40001276: 0df0 ret.n 40001278: 0000 4000127a: 222102 l32i a2, a1, 8 4000127d: 32a000 movi a3, 0 40001280: 056a02 call0 uart_baudrate_detect ; 0x40003924 40001283: 2030f4 extui a3, a2, 0, 16 40001286: 222102 l32i a2, a1, 8 40001289: c57402 call0 uart_div_modify ; 0x400039d8 4000128c: 0c20 movi.n a0, 2 4000128e: 06dcff j 0x40001202 40001291: 222102 l32i a2, a1, 8 40001294: c57702 call0 Uart_Init ; 0x40003a14 40001297: 2821 l32i.n a2, a1, 8 40001299: 856002 call0 uart_buff_switch ; 0x400038a4 4000129c: 2c02 movi.n a2, 32 4000129e: 85d0ff call0 ets_isr_unmask ; 0x40000fa8 400012a1: 3801 l32i.n a3, a1, 0 400012a3: 9ce3 beqz.n a3, 0x400012c5 400012a5: 2c02 movi.n a2, 32 ; 0x20 400012a7: 05cfff call0 ets_isr_mask ; 0x40000f98 400012aa: 0801 l32i.n a0, a1, 0 400012ac: c6e2ff j 0x4000123b 400012af: 00 400012b0: 053903 call0 spi_flash_attach ; 0x40004644 400012b3: 022103 l32i a0, a1, 12 400012b6: 522101 l32i a5, a1, 4 400012b9: 42a000 movi a4, 0 400012bc: c841 l32i.n a12, a1, 16 400012be: 4905 s32i.n a4, a5, 0 400012c0: 12c120 addi a1, a1, 32 400012c3: 0df0 ret.n 400012c5: 85f601 call0 UartConnCheck ; 0x40003230 400012c8: 206074 extui a6, a2, 0, 8 400012cb: 626100 s32i a6, a1, 0 400012ce: 5636fd bnez a6, 0x400012a5 400012d1: 453904 call0 sip_get_state ; 0x40005668 400012d4: 92c2fe addi a9, a2, -2 400012d7: 82a001 movi a8, 1 400012da: 0c07 movi.n a7, 0 400012dc: 907883 moveqz a7, a8, a9 400012df: 7901 s32i.n a7, a1, 0 400012e1: 1607fe beqz a7, 0x400012c5 400012e4: 46efff j 0x400012a5 400012e7: 00 400012e8: 3fffd700 ; l32r 400012ec: 3fffd734 ; l32r 400012f0: 3fffd740 ; l32r 400012f4: 3fffd720 ; l32r 400012f8: 3fffc870 ; l32r 400012fc: 3fffd76c ; l32r 40001300: 3fffd750 ; l32r 40001304: 3fffd760 ; l32r ; ================================================ ; SPI load spi_load SPI_load ; called from main() ; This seems to be what is called to load an app ; from flash and get it ready to run. sub_1308: 40001308: 22a000 movi a2, 0 ; a2 = 0 4000130b: 42a010 movi a4, 16 ; a4 = 16 4000130e: 12c1a0 addi a1, a1, -96 ; stack space 40001311: c2610f s32i a12, a1, 60 ; save a12 40001314: d26110 s32i a13, a1, 64 ; save a13 40001317: e26111 s32i a14, a1, 68 ; save a14 4000131a: f26112 s32i a15, a1, 72 ; save a15 4000131d: 3d01 mov.n a3, a1 ; a3 = a1 (stack) 4000131f: 09e1 s32i.n a0, a1, 56 ; save a0 for return ; calls SPIRead ( 0, stack, 16 ) 40001321: 857f03 call0 SPIRead ; 0x40004b1c 40001324: ccc2 bnez.n a2, 0x40001334 40001326: e20101 l8ui a14, a1, 1 ; num segments 40001329: c811 l32i.n a12, a1, 4 ; entry point 4000132b: 020100 l8ui a0, a1, 0 ; image magic 4000132e: 22a0e9 movi a2, 233 ; E9 40001331: 271013 beq a0, a2, 0x40001348 ; trouble ; could not read first 16 bytes 40001334: 0c12 movi.n a2, 1 ; return 1 40001336: c8f1 l32i.n a12, a1, 60 ; restore a12 40001338: d22110 l32i a13, a1, 64 ; restore a13 4000133b: e22111 l32i a14, a1, 68 ; restore a14 4000133e: f22112 l32i a15, a1, 72 ; restore a15 40001341: 08e1 l32i.n a0, a1, 56 ; restore return 40001343: 12c160 addi a1, a1, 96 40001346: 0df0 ret.n ; looking good, continue the load 40001348: 220102 l8ui a2, a1, 2 ; flash mode 4000134b: 055a03 call0 SPIReadModeCnfig ; 0x400048ec 4000134e: 3d01 mov.n a3, a1 ; read to here. 40001350: 1c04 movi.n a4, 16 ; another 16 bytes 40001352: 22010e l8ui a2, a1, 14 ; buf[12..15] >> section size 40001355: f20108 l8ui a15, a1, 8 ; buf[8..11] >> section addr 40001358: d2010b l8ui a13, a1, 11 ; 4000135b: 02010a l8ui a0, a1, 10 4000135e: 80dd11 slli a13, a13, 8 40001361: 00dd20 or a13, a13, a0 40001364: 020109 l8ui a0, a1, 9 40001367: 80dd11 slli a13, a13, 8 4000136a: 00dd20 or a13, a13, a0 4000136d: 80dd11 slli a13, a13, 8 40001370: f0dd20 or a13, a13, a15 ; a13 = section addr 40001373: f2010f l8ui a15, a1, 15 40001376: 02010c l8ui a0, a1, 12 40001379: 80ff11 slli a15, a15, 8 4000137c: 20ff20 or a15, a15, a2 4000137f: 22010d l8ui a2, a1, 13 40001382: 80ff11 slli a15, a15, 8 40001385: 20ff20 or a15, a15, a2 40001388: 22a010 movi a2, 16 ; starting offset in flash 4000138b: 80ff11 slli a15, a15, 8 4000138e: 00ff20 or a15, a15, a0 ; a15 = section size 40001391: 857803 call0 SPIRead ; 0x40004b1c 40001394: 56c2f9 bnez a2, 0x40001334 ; return 1 40001397: d26114 s32i a13, a1, 80 ; section addr 4000139a: c9b1 s32i.n a12, a1, 44 ; entry point 4000139c: 169e21 beqz a14, 0x400015b9 ; num segments == 0? 4000139f: 322114 l32i a3, a1, 80 400013a2: 1961 s32i.n a1, a1, 24 400013a4: c2a0ef movi a12, 239 ; EF 400013a7: dd01 mov.n a13, a1 400013a9: f26115 s32i a15, a1, 84 400013ac: e981 s32i.n a14, a1, 32 ; num segments remaining 400013ae: 0c07 movi.n a7, 0 400013b0: 2c08 movi.n a8, 32 400013b2: 826113 s32i a8, a1, 76 400013b5: 79c1 s32i.n a7, a1, 48 400013b7: e22115 l32i a14, a1, 84 400013ba: 30f320 or a15, a3, a3 ; section addr ; Here is the message we see when an app is being ; loaded from flash ; Something like: ; load 0x40100000, len 27188, room 16 ; tail 4 ; chksum 0xc0 ; load 0x3ffe8000, len 884, room 4 ; tail 0 ; chksum 0x30 ; ; Format: "load 0x%08x, len %d, room %d " 400013bd: 21caff l32r a2, [0x3fffd700] ; 0x400012e8 400013c0: 62210c l32i a6, a1, 48 400013c3: 52a010 movi a5, 16 400013c6: 4d0e mov.n a4, a14 400013c8: 6055c0 sub a5, a5, a6 400013cb: 505074 extui a5, a5, 0, 8 400013ce: 526116 s32i a5, a1, 88 400013d1: 850f01 call0 ets_printf ; 0x400024cc 400013d4: 0861 l32i.n a0, a1, 24 400013d6: a8c1 l32i.n a10, a1, 48 400013d8: 0c03 movi.n a3, 0 400013da: 522116 l32i a5, a1, 88 400013dd: 0c1b movi.n a11, 1 400013df: 57be01 bgeu a14, a5, 0x400013e4 400013e2: 0c0b movi.n a11, 0 400013e4: b9a1 s32i.n a11, a1, 40 400013e6: 4d0a mov.n a4, a10 400013e8: b04393 movnez a4, a3, a11 400013eb: 165b32 beqz a11, 0x40001714 400013ee: 0c38 movi.n a8, 3 400013f0: 578802 bany a8, a5, 0x400013f6 400013f3: 467700 j 0x400015d4 400013f6: e26115 s32i a14, a1, 84 400013f9: a61543 blti a5, 1, 0x40001440 400013fc: 0c0e movi.n a14, 0 400013fe: 0c13 movi.n a3, 1 40001400: 076511 bbci a5, 0, 0x40001415 40001403: e20000 l8ui a14, a0, 0 40001406: e24f00 s8i a14, a15, 0 40001409: 1b00 addi.n a0, a0, 1 4000140b: 1bff addi.n a15, a15, 1 4000140d: c0ce30 xor a12, a14, a12 40001410: ed03 mov.n a14, a3 40001412: c0c074 extui a12, a12, 0, 8 40001415: 502141 srli a2, a5, 1 40001418: ac12 beqz.n a2, 0x4000143d 4000141a: 2bee addi.n a14, a14, 2 4000141c: 220000 l8ui a2, a0, 0 4000141f: 224f00 s8i a2, a15, 0 40001422: c02230 xor a2, a2, a12 40001425: 202074 extui a2, a2, 0, 8 40001428: c20001 l8ui a12, a0, 1 4000142b: c24f01 s8i a12, a15, 1 4000142e: 02c002 addi a0, a0, 2 40001431: f2cf02 addi a15, a15, 2 40001434: 20cc30 xor a12, a12, a2 40001437: c0c074 extui a12, a12, 0, 8 4000143a: 579edc bne a14, a5, 0x4000141a 4000143d: e22115 l32i a14, a1, 84 40001440: 503ec0 sub a3, a14, a5 40001443: 303441 srli a3, a3, 4 40001446: 39d1 s32i.n a3, a1, 52 40001448: 160b32 beqz a11, 0x4000176c 4000144b: aa5e add.n a5, a14, a10 4000144d: 52c5f0 addi a5, a5, -16 40001450: 505034 extui a5, a5, 0, 4 40001453: 5991 s32i.n a5, a1, 36 40001455: 407074 extui a7, a4, 0, 8 40001458: 68d1 l32i.n a6, a1, 52 4000145a: 79c1 s32i.n a7, a1, 48 4000145c: a61655 blti a6, 1, 0x400014b5 4000145f: 0c0e movi.n a14, 0 40001461: 026106 s32i a0, a1, 24 40001464: 222113 l32i a2, a1, 76 40001467: 3d01 mov.n a3, a1 40001469: 1c04 movi.n a4, 16 4000146b: 056b03 call0 SPIRead ; 0x40004b1c 4000146e: 56221f bnez a2, 0x40001664 40001471: 822113 l32i a8, a1, 76 40001474: 0c00 movi.n a0, 0 40001476: 82c810 addi a8, a8, 16 40001479: 826113 s32i a8, a1, 76 4000147c: 1b20 addi.n a2, a0, 1 4000147e: da30 add.n a3, a0, a13 40001480: 320300 l8ui a3, a3, 0 40001483: 200074 extui a0, a2, 0, 8 40001486: da20 add.n a2, a0, a13 40001488: c0c330 xor a12, a3, a12 4000148b: c0c074 extui a12, a12, 0, 8 4000148e: 220200 l8ui a2, a2, 0 40001491: 1b00 addi.n a0, a0, 1 40001493: 000074 extui a0, a0, 0, 8 40001496: c0c230 xor a12, a2, a12 40001499: c0c074 extui a12, a12, 0, 8 4000149c: 66b0dc bnei a0, 16, 0x4000147c 4000149f: 2d0f mov.n a2, a15 400014a1: 3d01 mov.n a3, a1 400014a3: 42a010 movi a4, 16 400014a6: 05aa0c call0 memcpy ; 0x4000df48 400014a9: 0861 l32i.n a0, a1, 24 400014ab: f2cf10 addi a15, a15, 16 400014ae: 48d1 l32i.n a4, a1, 52 400014b0: 1bee addi.n a14, a14, 1 400014b2: 479eae bne a14, a4, 0x40001464 400014b5: 52210a l32i a5, a1, 40 400014b8: 026106 s32i a0, a1, 24 400014bb: 167501 beqz a5, 0x400014d6 400014be: 222113 l32i a2, a1, 76 400014c1: 3d01 mov.n a3, a1 400014c3: 1c04 movi.n a4, 16 400014c5: 456503 call0 SPIRead ; 0x40004b1c 400014c8: 56422d bnez a2, 0x400017a0 400014cb: 722113 l32i a7, a1, 76 400014ce: 1961 s32i.n a1, a1, 24 400014d0: 72c710 addi a7, a7, 16 400014d3: 726113 s32i a7, a1, 76 400014d6: 3891 l32i.n a3, a1, 36 ; Aha, here is the tail message ... ; Format: "tail %d" 400014d8: 2185ff l32r a2, [0x3fffd734] ; 0x400012ec 400014db: 303074 extui a3, a3, 0, 8 400014de: 3971 s32i.n a3, a1, 28 400014e0: 85fe00 call0 ets_printf ; 0x400024cc 400014e3: 0871 l32i.n a0, a1, 28 400014e5: 0c34 movi.n a4, 3 400014e7: 078402 bany a4, a0, 0x400014ed 400014ea: 866500 j 0x40001684 400014ed: a6104b blti a0, 1, 0x4000153c 400014f0: 3d00 mov.n a3, a0 400014f2: 0c0e movi.n a14, 0 400014f4: 0c15 movi.n a5, 1 400014f6: 076016 bbci a0, 0, 0x40001510 400014f9: 2861 l32i.n a2, a1, 24 400014fb: ed05 mov.n a14, a5 400014fd: 420200 l8ui a4, a2, 0 40001500: 424f00 s8i a4, a15, 0 40001503: 1b22 addi.n a2, a2, 1 40001505: 2961 s32i.n a2, a1, 24 40001507: f2cf01 addi a15, a15, 1 4000150a: c0c430 xor a12, a4, a12 4000150d: c0c074 extui a12, a12, 0, 8 40001510: 305141 srli a5, a3, 1 40001513: 165502 beqz a5, 0x4000153c 40001516: 2861 l32i.n a2, a1, 24 40001518: 2bee addi.n a14, a14, 2 4000151a: 320200 l8ui a3, a2, 0 4000151d: 324f00 s8i a3, a15, 0 40001520: c03330 xor a3, a3, a12 40001523: 303074 extui a3, a3, 0, 8 40001526: c20201 l8ui a12, a2, 1 40001529: c24f01 s8i a12, a15, 1 4000152c: 2b22 addi.n a2, a2, 2 4000152e: 2961 s32i.n a2, a1, 24 40001530: f2cf02 addi a15, a15, 2 40001533: 30cc30 xor a12, a12, a3 40001536: c0c074 extui a12, a12, 0, 8 40001539: 079ed9 bne a14, a0, 0x40001516 ; And here is the chksum !! ; Format: "chksum 0x%02x" 4000153c: 216dff l32r a2, [0x3fffd740] ; 0x400012f0 4000153f: 3d0c mov.n a3, a12 40001541: 85f800 call0 ets_printf ; 0x400024cc 40001544: 4881 l32i.n a4, a1, 32 ; num segments remaining 40001546: 0871 l32i.n a0, a1, 28 40001548: 0b44 addi.n a4, a4, -1 4000154a: 163422 beqz a4, 0x40001771 4000154d: e8c1 l32i.n a14, a1, 48 4000154f: 1c0f movi.n a15, 16 40001551: eae0 add.n a14, a0, a14 40001553: e0ffc0 sub a15, a15, a14 40001556: f0f074 extui a15, a15, 0, 8 40001559: f68f02 bgeui a15, 8, 0x4000155f 4000155c: 467000 j 0x40001721 4000155f: 7861 l32i.n a7, a1, 24 40001561: 8b8e addi.n a8, a14, 8 40001563: 808074 extui a8, a8, 0, 8 40001566: 89c1 s32i.n a8, a1, 48 40001568: f20704 l8ui a15, a7, 4 4000156b: 420700 l8ui a4, a7, 0 4000156e: 020705 l8ui a0, a7, 5 40001571: 220706 l8ui a2, a7, 6 40001574: 520701 l8ui a5, a7, 1 40001577: 320703 l8ui a3, a7, 3 4000157a: 620702 l8ui a6, a7, 2 4000157d: 803311 slli a3, a3, 8 40001580: 603320 or a3, a3, a6 40001583: 803311 slli a3, a3, 8 40001586: 503320 or a3, a3, a5 40001589: 803311 slli a3, a3, 8 4000158c: 720707 l8ui a7, a7, 7 4000158f: 403320 or a3, a3, a4 40001592: 80e711 slli a14, a7, 8 40001595: 20ee20 or a14, a14, a2 40001598: 80ee11 slli a14, a14, 8 4000159b: 00ee20 or a14, a14, a0 4000159e: 80ee11 slli a14, a14, 8 400015a1: f0ee20 or a14, a14, a15 400015a4: e26115 s32i a14, a1, 84 400015a7: 8881 l32i.n a8, a1, 32 400015a9: 98c1 l32i.n a9, a1, 48 400015ab: 0ba8 addi.n a10, a8, -1 400015ad: da99 add.n a9, a9, a13 400015af: 9961 s32i.n a9, a1, 24 400015b1: a08074 extui a8, a10, 0, 8 400015b4: 8981 s32i.n a8, a1, 32 400015b6: 5608e0 bnez a8, 0x400013ba ; num segments remaining != 0? 400015b9: 28b1 l32i.n a2, a1, 44 ; Execution will start at the address we stash here. 400015bb: 05a0ff call0 ets_set_user_start ; 0x40000fbc 400015be: 0c02 movi.n a2, 0 ; return 0 400015c0: c8f1 l32i.n a12, a1, 60 400015c2: d22110 l32i a13, a1, 64 400015c5: e22111 l32i a14, a1, 68 400015c8: f22112 l32i a15, a1, 72 400015cb: 08e1 l32i.n a0, a1, 56 ; restore return 400015cd: 12c160 addi a1, a1, 96 ; restore stack 400015d0: 0df0 ret.n 400015d2: 0000 400015d4: 1685e6 beqz a5, 0x40001440 400015d7: e26115 s32i a14, a1, 84 400015da: 509241 srli a9, a5, 2 400015dd: e61902 bgei a9, 1, 0x400015e3 400015e0: 0697ff j 0x40001440 400015e3: 0c0e movi.n a14, 0 400015e5: 0c18 movi.n a8, 1 400015e7: 276525 bbci a5, 2, 0x40001610 400015ea: ed08 mov.n a14, a8 400015ec: 620001 l8ui a6, a0, 1 400015ef: 220003 l8ui a2, a0, 3 400015f2: 320000 l8ui a3, a0, 0 400015f5: c02230 xor a2, a2, a12 400015f8: c20002 l8ui a12, a0, 2 400015fb: 603330 xor a3, a3, a6 400015fe: 30cc30 xor a12, a12, a3 40001601: 20cc30 xor a12, a12, a2 40001604: 2800 l32i.n a2, a0, 0 40001606: c0c074 extui a12, a12, 0, 8 40001609: 4b00 addi.n a0, a0, 4 4000160b: 226f00 s32i a2, a15, 0 4000160e: 4bff addi.n a15, a15, 4 40001610: 903141 srli a3, a9, 1 40001613: 166304 beqz a3, 0x4000165d 40001616: 2bee addi.n a14, a14, 2 40001618: 320002 l8ui a3, a0, 2 4000161b: 820001 l8ui a8, a0, 1 4000161e: 620003 l8ui a6, a0, 3 40001621: 720000 l8ui a7, a0, 0 40001624: c06630 xor a6, a6, a12 40001627: 807730 xor a7, a7, a8 4000162a: 703330 xor a3, a3, a7 4000162d: 603330 xor a3, a3, a6 40001630: 303074 extui a3, a3, 0, 8 40001633: 6800 l32i.n a6, a0, 0 40001635: 690f s32i.n a6, a15, 0 40001637: 220007 l8ui a2, a0, 7 4000163a: 620005 l8ui a6, a0, 5 4000163d: 302230 xor a2, a2, a3 40001640: 320004 l8ui a3, a0, 4 40001643: c20006 l8ui a12, a0, 6 40001646: 603330 xor a3, a3, a6 40001649: 30cc30 xor a12, a12, a3 4000164c: 20cc30 xor a12, a12, a2 4000164f: c0c074 extui a12, a12, 0, 8 40001652: 2810 l32i.n a2, a0, 4 40001654: 291f s32i.n a2, a15, 4 40001656: 8b00 addi.n a0, a0, 8 40001658: 8bff addi.n a15, a15, 8 4000165a: 979eb8 bne a14, a9, 0x40001616 4000165d: e22115 l32i a14, a1, 84 40001660: 0677ff j 0x40001440 40001663: 00 ; Format: "flash read err, %s" 40001664: 2124ff l32r a2, [0x3fffd720] ; 0x400012f4 40001667: 3124ff l32r a3, [0x3fffc870] ; 0x400012f8 4000166a: 05e600 call0 ets_printf ; 0x400024cc 4000166d: 22a001 movi a2, 1 ; return 1 40001670: c2210f l32i a12, a1, 60 40001673: d22110 l32i a13, a1, 64 40001676: e22111 l32i a14, a1, 68 40001679: f22112 l32i a15, a1, 72 4000167c: 02210e l32i a0, a1, 56 ; restore return 4000167f: 12c160 addi a1, a1, 96 ; restore stack 40001682: 0df0 ret.n 40001684: 1640eb beqz a0, 0x4000153c 40001687: 008241 srli a8, a0, 2 4000168a: e61802 bgei a8, 1, 0x40001690 4000168d: c6aaff j 0x4000153c 40001690: 0c0e movi.n a14, 0 40001692: 0c19 movi.n a9, 1 40001694: 276028 bbci a0, 2, 0x400016c0 40001697: 2861 l32i.n a2, a1, 24 40001699: ed09 mov.n a14, a9 4000169b: 520201 l8ui a5, a2, 1 4000169e: 320203 l8ui a3, a2, 3 400016a1: 420200 l8ui a4, a2, 0 400016a4: c03330 xor a3, a3, a12 400016a7: c20202 l8ui a12, a2, 2 400016aa: 504430 xor a4, a4, a5 400016ad: 40cc30 xor a12, a12, a4 400016b0: 30cc30 xor a12, a12, a3 400016b3: c0c074 extui a12, a12, 0, 8 400016b6: 3802 l32i.n a3, a2, 0 400016b8: 390f s32i.n a3, a15, 0 400016ba: 4b22 addi.n a2, a2, 4 400016bc: 2961 s32i.n a2, a1, 24 400016be: 4bff addi.n a15, a15, 4 400016c0: 804141 srli a4, a8, 1 400016c3: 1654e7 beqz a4, 0x4000153c 400016c6: 2861 l32i.n a2, a1, 24 400016c8: 2bee addi.n a14, a14, 2 400016ca: 420202 l8ui a4, a2, 2 400016cd: 720201 l8ui a7, a2, 1 400016d0: 520203 l8ui a5, a2, 3 400016d3: 620200 l8ui a6, a2, 0 400016d6: c05530 xor a5, a5, a12 400016d9: 706630 xor a6, a6, a7 400016dc: 604430 xor a4, a4, a6 400016df: 504430 xor a4, a4, a5 400016e2: 404074 extui a4, a4, 0, 8 400016e5: 5802 l32i.n a5, a2, 0 400016e7: 590f s32i.n a5, a15, 0 400016e9: 320207 l8ui a3, a2, 7 400016ec: 520205 l8ui a5, a2, 5 400016ef: 403330 xor a3, a3, a4 400016f2: 420204 l8ui a4, a2, 4 400016f5: c20206 l8ui a12, a2, 6 400016f8: 504430 xor a4, a4, a5 400016fb: 40cc30 xor a12, a12, a4 400016fe: 30cc30 xor a12, a12, a3 40001701: c0c074 extui a12, a12, 0, 8 40001704: 3812 l32i.n a3, a2, 4 40001706: 391f s32i.n a3, a15, 4 40001708: 8b22 addi.n a2, a2, 8 4000170a: 2961 s32i.n a2, a1, 24 4000170c: 8bff addi.n a15, a15, 8 4000170e: 879eb4 bne a14, a8, 0x400016c6 40001711: c689ff j 0x4000153c 40001714: e991 s32i.n a14, a1, 36 40001716: 406074 extui a6, a4, 0, 8 40001719: 69c1 s32i.n a6, a1, 48 4000171b: 8665ff j 0x400014b5 4000171e: 000000 ; Format: "ho %d tail %d room %d" 40001721: 21f6fe l32r a2, [0x3fffd76c] ; 0x400012fc 40001724: 38c1 l32i.n a3, a1, 48 40001726: 5d0f mov.n a5, a15 40001728: 4d00 mov.n a4, a0 4000172a: 05da00 call0 ets_printf ; 0x400024cc 4000172d: da3e add.n a3, a14, a13 4000172f: 22c110 addi a2, a1, 16 40001732: 4d0f mov.n a4, a15 40001734: 05810c call0 memcpy ; 0x4000df48 40001737: 222113 l32i a2, a1, 76 4000173a: 103120 or a3, a1, a1 4000173d: 42a010 movi a4, 16 40001740: 853d03 call0 SPIRead ; 0x40004b1c 40001743: 569207 bnez a2, 0x400017c0 40001746: 322113 l32i a3, a1, 76 40001749: 0c84 movi.n a4, 8 4000174b: 22c110 addi a2, a1, 16 4000174e: 2a2f add.n a2, a15, a2 40001750: f044c0 sub a4, a4, a15 40001753: 404074 extui a4, a4, 0, 8 40001756: 32c310 addi a3, a3, 16 40001759: 326113 s32i a3, a1, 76 4000175c: 49c1 s32i.n a4, a1, 48 4000175e: 103120 or a3, a1, a1 40001761: 457e0c call0 memcpy ; 0x4000df48 40001764: 3841 l32i.n a3, a1, 16 40001766: e851 l32i.n a14, a1, 20 40001768: 068eff j 0x400015a4 4000176b: 00 4000176c: e991 s32i.n a14, a1, 36 4000176e: c638ff j 0x40001455 ; Format: "csum 0x%02x" 40001771: 21e3fe l32r a2, [0x3fffd750] ; 0x40001300 40001774: c03c20 or a3, a12, a12 40001777: 45d500 call0 ets_printf ; 0x400024cc 4000177a: 62010f l8ui a6, a1, 15 4000177d: c066c0 sub a6, a6, a12 40001780: 1656e3 beqz a6, 0x400015b9 ; Format: "csum err....ho %" 40001783: 21e0fe l32r a2, [0x3fffd760] ; 0x40001304 40001786: 45d400 call0 ets_printf ; 0x400024cc 40001789: 22a001 movi a2, 1 ; return 1 4000178c: c8f1 l32i.n a12, a1, 60 4000178e: d22110 l32i a13, a1, 64 40001791: e22111 l32i a14, a1, 68 40001794: f22112 l32i a15, a1, 72 40001797: 08e1 l32i.n a0, a1, 56 ; restore return 40001799: 12c160 addi a1, a1, 96 ; restore stack 4000179c: 0df0 ret.n 4000179e: 0000 ; Format: "flash read err, %s" 400017a0: 21d5fe l32r a2, [0x3fffd720] ; 0x400012f4 400017a3: 32a1d0 movi a3, 0x1d0 400017a6: 45d200 call0 ets_printf ; 0x400024cc 400017a9: 22a001 movi a2, 1 ; return 0 400017ac: c2210f l32i a12, a1, 60 400017af: d22110 l32i a13, a1, 64 400017b2: e22111 l32i a14, a1, 68 400017b5: f22112 l32i a15, a1, 72 400017b8: 02210e l32i a0, a1, 56 ; restore return 400017bb: 12c160 addi a1, a1, 96 ; restore stack 400017be: 0df0 ret.n ; Format: "flash read err, %s" 400017c0: 21cdfe l32r a2, [0x3fffd720] ; 0x400012f4 400017c3: 32a20d movi a3, 0x20d 400017c6: 45d000 call0 ets_printf ; 0x400024cc 400017c9: 067bff j 0x400015b9 400017cc: 00000000 400017d0: 3fffdce0 ; l32r 400017d4: 3fffd784 ; l32r 400017d8: 3fffd78c ; l32r 400017dc: 3fffd7cc ; l32r ; Subroutine, set as exception handler sub_17e0: 400017e0: 12c1f0 addi a1, a1, -16 400017e3: d921 s32i.n a13, a1, 8 400017e5: e931 s32i.n a14, a1, 12 400017e7: c911 s32i.n a12, a1, 4 400017e9: 0901 s32i.n a0, a1, 0 400017eb: cd01 mov.n a12, a1 400017ed: 45b30c call0 xthal_window_spill ; 0x4000e324 400017f0: 0c0e movi.n a14, 0 400017f2: d1f7ff l32r a13, [0x3fffdce0] ; 0x400017d0 400017f5: 62adf8 movi a6, 0xfffffdf8 400017f8: d00d20 or a0, a13, a13 400017fb: 52cd50 addi a5, a13, 80 400017fe: 6a4c add.n a4, a12, a6 40001800: 22247e l32i a2, a4, 0x1f8 40001803: 2900 s32i.n a2, a0, 0 40001805: 32247f l32i a3, a4, 0x1fc 40001808: 3910 s32i.n a3, a0, 4 4000180a: 722480 l32i a7, a4, 0x200 4000180d: 7920 s32i.n a7, a0, 8 4000180f: 422481 l32i a4, a4, 0x204 40001812: 4930 s32i.n a4, a0, 12 40001814: 8c92 beqz.n a2, 0x40001821 40001816: 1bee addi.n a14, a14, 1 40001818: 30c320 or a12, a3, a3 4000181b: 02c010 addi a0, a0, 16 4000181e: 5790dc bne a0, a5, 0x400017fe 40001821: 3d0c mov.n a3, a12 ; Format: "sp %p " 40001823: 21ecff l32r a2, [0x3fffd784] ; 0x400017d4 40001826: 101120 or a1, a1, a1 40001829: 05ca00 call0 ets_printf ; 0x400024cc 4000182c: 0c0c movi.n a12, 0 4000182e: a61e1a blti a14, 1, 0x4000184c ; Format: "sf_dump[%d] a0: 0x%08x a1: 0x%08x a2: 0x%08x a3: 0x%08x " 40001831: 21e9ff l32r a2, [0x3fffd78c] ; 0x400017d8 40001834: c03c20 or a3, a12, a12 40001837: 422d00 l32i a4, a13, 0 4000183a: 522d01 l32i a5, a13, 4 4000183d: 682d l32i.n a6, a13, 8 4000183f: 783d l32i.n a7, a13, 12 40001841: 85c800 call0 ets_printf ; 0x400024cc 40001844: d2cd10 addi a13, a13, 16 40001847: 1bcc addi.n a12, a12, 1 40001849: e79ce4 bne a12, a14, 0x40001831 ; Format: "epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x" 4000184c: 21e4ff l32r a2, [0x3fffd7cc] ; 0x400017dc 4000184f: 30b103 rsr.epc1 a3 40001852: 40b203 rsr.epc2 a4 40001855: 50b303 rsr.epc3 a5 40001858: 60ee03 rsr.excvaddr a6 4000185b: 70c003 rsr.depc a7 4000185e: c5c600 call0 ets_printf ; 0x400024cc 40001861: c22101 l32i a12, a1, 4 40001864: d22102 l32i a13, a1, 8 40001867: e22103 l32i a14, a1, 12 4000186a: 0801 l32i.n a0, a1, 0 4000186c: 12c110 addi a1, a1, 16 4000186f: 0df0 ret.n 40001871: 000000 40001874: 3fffd814 ; l32r ; gets installed as exception handler sub_1878: 40001878: 30e803 rsr.exccause a3 ; Format: "Fatal exception (%d): " 4000187b: 21feff l32r a2, [0x3fffd814] ; 0x40001874 4000187e: 12c1f0 addi a1, a1, -16 40001881: 026100 s32i a0, a1, 0 40001884: 45c400 call0 ets_printf ; 0x400024cc ; Format: "epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x" 40001887: 21d5ff l32r a2, [0x3fffd7cc] ; 0x400017dc 4000188a: 30b103 rsr.epc1 a3 4000188d: 40b203 rsr.epc2 a4 40001890: 50b303 rsr.epc3 a5 40001893: 60ee03 rsr.excvaddr a6 40001896: 70c003 rsr.depc a7 40001899: 05c300 call0 ets_printf ; 0x400024cc 4000189c: 022100 l32i a0, a1, 0 4000189f: 12c110 addi a1, a1, 16 400018a2: 0df0 ret.n ; pointless wrappers (as per the str*** family elsewhere) ets_memset: 400018a4: 12c1f0 addi a1, a1, -16 400018a7: 0901 s32i.n a0, a1, 0 400018a9: 458e0c call0 memset ; 0x4000e190 400018ac: 0801 l32i.n a0, a1, 0 400018ae: 12c110 addi a1, a1, 16 400018b1: 0df0 ret.n 400018b3: 00 ets_memcpy: 400018b4: 12c1f0 addi a1, a1, -16 400018b7: 0901 s32i.n a0, a1, 0 400018b9: c5680c call0 memcpy ; 0x4000df48 400018bc: 0801 l32i.n a0, a1, 0 400018be: 12c110 addi a1, a1, 16 400018c1: 0df0 ret.n 400018c3: 00 ets_memmove: 400018c4: 12c1f0 addi a1, a1, -16 400018c7: 0901 s32i.n a0, a1, 0 400018c9: 05780c call0 memmove ; 0x4000e04c 400018cc: 0801 l32i.n a0, a1, 0 400018ce: 12c110 addi a1, a1, 16 400018d1: 0df0 ret.n 400018d3: 00 ets_memcmp: 400018d4: 12c1f0 addi a1, a1, -16 400018d7: 0901 s32i.n a0, a1, 0 400018d9: c55c0c call0 memcmp ; 0x4000dea8 400018dc: 0801 l32i.n a0, a1, 0 400018de: 12c110 addi a1, a1, 16 400018e1: 0df0 ret.n 400018e3: 00 400018e4: 3fffdd30 ; l32r sub_18e8: 400018e8: 720200 l8ui a7, a2, 0 400018eb: 81feff l32r a8, [0x3fffdd30] ; 0x400018e4 400018ee: 620201 l8ui a6, a2, 1 400018f1: 5808 l32i.n a5, a8, 0 400018f3: 806611 slli a6, a6, 8 400018f6: 706620 or a6, a6, a7 400018f9: 606580 add a6, a5, a6 400018fc: 671205 beq a2, a6, 0x40001905 400018ff: 720604 l8ui a7, a6, 4 40001902: 16c704 beqz a7, 0x40001952 40001905: 720203 l8ui a7, a2, 3 40001908: 920202 l8ui a9, a2, 2 4000190b: 807711 slli a7, a7, 8 4000190e: 907720 or a7, a7, a9 40001911: 7a65 add.n a6, a5, a7 40001913: 671239 beq a2, a6, 0x40001950 40001916: 920604 l8ui a9, a6, 4 40001919: a828 l32i.n a10, a8, 8 4000191b: fc19 bnez.n a9, 0x40001950 4000191d: 420201 l8ui a4, a2, 1 40001920: 70b841 srli a11, a7, 8 40001923: 279a01 bne a10, a2, 0x40001928 40001926: 6928 s32i.n a6, a8, 8 40001928: 820200 l8ui a8, a2, 0 4000192b: 804411 slli a4, a4, 8 4000192e: 804420 or a4, a4, a8 40001931: 424600 s8i a4, a6, 0 40001934: 404841 srli a4, a4, 8 40001937: 424601 s8i a4, a6, 1 4000193a: 320201 l8ui a3, a2, 1 4000193d: 420200 l8ui a4, a2, 0 40001940: 803311 slli a3, a3, 8 40001943: 403320 or a3, a3, a4 40001946: 3a35 add.n a3, a5, a3 40001948: 724302 s8i a7, a3, 2 4000194b: b24303 s8i a11, a3, 3 4000194e: 0df0 ret.n 40001950: 0df0 ret.n 40001952: 7818 l32i.n a7, a8, 4 40001954: 9828 l32i.n a9, a8, 8 40001956: 6717ab beq a7, a6, 0x40001905 40001959: 320601 l8ui a3, a6, 1 4000195c: 50a2c0 sub a10, a2, a5 4000195f: 679901 bne a9, a6, 0x40001964 40001962: 2928 s32i.n a2, a8, 8 40001964: 420600 l8ui a4, a6, 0 40001967: 803311 slli a3, a3, 8 4000196a: 403320 or a3, a3, a4 4000196d: 324200 s8i a3, a2, 0 40001970: 303841 srli a3, a3, 8 40001973: 324201 s8i a3, a2, 1 40001976: b20601 l8ui a11, a6, 1 40001979: 320600 l8ui a3, a6, 0 4000197c: 80bb11 slli a11, a11, 8 4000197f: 30bb20 or a11, a11, a3 40001982: bab5 add.n a11, a5, a11 40001984: a24b02 s8i a10, a11, 2 40001987: a0a841 srli a10, a10, 8 4000198a: a24b03 s8i a10, a11, 3 4000198d: 06ddff j 0x40001905 40001990: 00000f84 ; l32r 40001994: 00001000 ; l32r mem_init: 40001998: 1c03 movi.n a3, 16 4000199a: 1c06 movi.n a6, 16 4000199c: 81d2ff l32r a8, [0x3fffdd30] ; 0x400018e4 4000199f: 0c09 movi.n a9, 0 400019a1: 7cc5 movi.n a5, -4 400019a3: 3b42 addi.n a4, a2, 3 400019a5: 504410 and a4, a4, a5 400019a8: 924404 s8i a9, a4, 4 400019ab: 924403 s8i a9, a4, 3 400019ae: 924402 s8i a9, a4, 2 400019b1: 4908 s32i.n a4, a8, 0 400019b3: 4928 s32i.n a4, a8, 8 400019b5: 51f6ff l32r a5, [0x00000f84] ; 0x40001990 400019b8: 624401 s8i a6, a4, 1 400019bb: 72d410 addmi a7, a4, 0x1000 400019be: 7918 s32i.n a7, a8, 4 400019c0: 0c16 movi.n a6, 1 400019c2: 71f4ff l32r a7, [0x00001000] ; 0x40001994 400019c5: 724400 s8i a7, a4, 0 400019c8: 5a44 add.n a4, a4, a5 400019ca: 72447c s8i a7, a4, 124 400019cd: 72447e s8i a7, a4, 126 400019d0: 624480 s8i a6, a4, 128 400019d3: 32447f s8i a3, a4, 127 400019d6: 1c05 movi.n a5, 16 400019d8: 52447d s8i a5, a4, 125 400019db: 0df0 ret.n 400019dd: 000000 mem_free: 400019e0: 12c1f0 addi a1, a1, -16 400019e3: 0901 s32i.n a0, a1, 0 400019e5: ac02 beqz.n a2, 0x40001a09 400019e7: 01bfff l32r a0, [0x3fffdd30] ; 0x400018e4 400019ea: 3800 l32i.n a3, a0, 0 400019ec: 4810 l32i.n a4, a0, 4 400019ee: 373217 bltu a2, a3, 0x40001a09 400019f1: 47b214 bgeu a2, a4, 0x40001a09 400019f4: 22c2f8 addi a2, a2, -8 400019f7: 0c06 movi.n a6, 0 400019f9: 5820 l32i.n a5, a0, 8 400019fb: 624204 s8i a6, a2, 4 400019fe: 57b202 bgeu a2, a5, 0x40001a04 40001a01: 205220 or a5, a2, a2 40001a04: 5920 s32i.n a5, a0, 8 40001a06: 05eeff call0 sub_18e8 ; 0x400018e8 40001a09: 0801 l32i.n a0, a1, 0 40001a0b: 12c110 addi a1, a1, 16 40001a0e: 0df0 ret.n 40001a10: 0000fffc ; l32r mem_trim: 40001a14: 12c1f0 addi a1, a1, -16 40001a17: 3b53 addi.n a5, a3, 3 40001a19: 61fdff l32r a6, [0x0000fffc] ; 0x40001a10 40001a1c: 0cc3 movi.n a3, 12 40001a1e: 605510 and a5, a5, a6 40001a21: 61dcff l32r a6, [0x00001000] ; 0x40001994 40001a24: b6a501 bltui a5, 12, 0x40001a29 40001a27: 3d05 mov.n a3, a5 40001a29: 3030f4 extui a3, a3, 0, 16 40001a2c: 37b602 bgeu a6, a3, 0x40001a32 40001a2f: 862900 j 0x40001ad9 40001a32: 91acff l32r a9, [0x3fffdd30] ; 0x400018e4 40001a35: 7809 l32i.n a7, a9, 0 40001a37: 8819 l32i.n a8, a9, 4 40001a39: 77b202 bgeu a2, a7, 0x40001a3f 40001a3c: 062500 j 0x40001ad4 40001a3f: 873202 bltu a2, a8, 0x40001a45 40001a42: 862300 j 0x40001ad4 40001a45: b2c2f8 addi a11, a2, -8 40001a48: a20b01 l8ui a10, a11, 1 40001a4b: b20b00 l8ui a11, a11, 0 40001a4e: 80aa11 slli a10, a10, 8 40001a51: b0aa20 or a10, a10, a11 40001a54: 70b2c0 sub a11, a2, a7 40001a57: b2cbf8 addi a11, a11, -8 40001a5a: b08ac0 sub a8, a10, a11 40001a5d: 82c8f8 addi a8, a8, -8 40001a60: 8080f4 extui a8, a8, 0, 16 40001a63: 373872 bltu a8, a3, 0x40001ad9 40001a66: 87136a beq a3, a8, 0x40001ad4 40001a69: 7aaa add.n a10, a10, a7 40001a6b: 420a04 l8ui a4, a10, 4 40001a6e: 16e406 beqz a4, 0x40001ae0 40001a71: a2c314 addi a10, a3, 20 40001a74: a7385c bltu a8, a10, 0x40001ad4 40001a77: a829 l32i.n a10, a9, 8 40001a79: ba33 add.n a3, a3, a11 40001a7b: 42c2f8 addi a4, a2, -8 40001a7e: 520400 l8ui a5, a4, 0 40001a81: 8b33 addi.n a3, a3, 8 40001a83: 3080f4 extui a8, a3, 0, 16 40001a86: 8a87 add.n a8, a7, a8 40001a88: a7b801 bgeu a8, a10, 0x40001a8d 40001a8b: ad08 mov.n a10, a8 40001a8d: a929 s32i.n a10, a9, 8 40001a8f: 920401 l8ui a9, a4, 1 40001a92: b24802 s8i a11, a8, 2 40001a95: 809911 slli a9, a9, 8 40001a98: 509920 or a9, a9, a5 40001a9b: 924800 s8i a9, a8, 0 40001a9e: b05841 srli a5, a11, 8 40001aa1: 524803 s8i a5, a8, 3 40001aa4: 909841 srli a9, a9, 8 40001aa7: 924801 s8i a9, a8, 1 40001aaa: 0c05 movi.n a5, 0 40001aac: 309841 srli a9, a3, 8 40001aaf: 524804 s8i a5, a8, 4 40001ab2: 324400 s8i a3, a4, 0 40001ab5: 924401 s8i a9, a4, 1 40001ab8: 520801 l8ui a5, a8, 1 40001abb: 420800 l8ui a4, a8, 0 40001abe: 808511 slli a8, a5, 8 40001ac1: 408820 or a8, a8, a4 40001ac4: 67180c beq a8, a6, 0x40001ad4 40001ac7: 12c110 addi a1, a1, 16 40001aca: 7aa8 add.n a10, a8, a7 40001acc: 324a02 s8i a3, a10, 2 40001acf: 924a03 s8i a9, a10, 3 40001ad2: 0df0 ret.n 40001ad4: 12c110 addi a1, a1, 16 40001ad7: 0df0 ret.n 40001ad9: 0c02 movi.n a2, 0 40001adb: 12c110 addi a1, a1, 16 40001ade: 0df0 ret.n 40001ae0: 520a00 l8ui a5, a10, 0 40001ae3: 420a01 l8ui a4, a10, 1 40001ae6: ba33 add.n a3, a3, a11 40001ae8: 8b33 addi.n a3, a3, 8 40001aea: 3080f4 extui a8, a3, 0, 16 40001aed: 804411 slli a4, a4, 8 40001af0: 504420 or a4, a4, a5 40001af3: 8a87 add.n a8, a7, a8 40001af5: b24802 s8i a11, a8, 2 40001af8: 4901 s32i.n a4, a1, 0 40001afa: 4829 l32i.n a4, a9, 8 40001afc: 52c2f8 addi a5, a2, -8 40001aff: a79401 bne a4, a10, 0x40001b04 40001b02: 8929 s32i.n a8, a9, 8 40001b04: b0a841 srli a10, a11, 8 40001b07: 9801 l32i.n a9, a1, 0 40001b09: 0c04 movi.n a4, 0 40001b0b: 424804 s8i a4, a8, 4 40001b0e: 924800 s8i a9, a8, 0 40001b11: a24803 s8i a10, a8, 3 40001b14: 909841 srli a9, a9, 8 40001b17: 924801 s8i a9, a8, 1 40001b1a: 309841 srli a9, a3, 8 40001b1d: 324500 s8i a3, a5, 0 40001b20: 924501 s8i a9, a5, 1 40001b23: 420801 l8ui a4, a8, 1 40001b26: a20800 l8ui a10, a8, 0 40001b29: 808411 slli a8, a4, 8 40001b2c: a08820 or a8, a8, a10 40001b2f: 6718a1 beq a8, a6, 0x40001ad4 40001b32: 12c110 addi a1, a1, 16 40001b35: 7a58 add.n a5, a8, a7 40001b37: 324502 s8i a3, a5, 2 40001b3a: 924503 s8i a9, a5, 3 40001b3d: 0df0 ret.n 40001b3f: 00 mem_malloc: 40001b40: 12c1f0 addi a1, a1, -16 40001b43: 16520a beqz a2, 0x40001bec 40001b46: a193ff l32r a10, [0x00001000] ; 0x40001994 40001b49: 3b42 addi.n a4, a2, 3 40001b4b: 51b1ff l32r a5, [0x0000fffc] ; 0x40001a10 40001b4e: 0cc2 movi.n a2, 12 40001b50: 504410 and a4, a4, a5 40001b53: b6a401 bltui a4, 12, 0x40001b58 40001b56: 2d04 mov.n a2, a4 40001b58: 2020f4 extui a2, a2, 0, 16 40001b5b: 27ba02 bgeu a10, a2, 0x40001b61 40001b5e: 862200 j 0x40001bec 40001b61: 6160ff l32r a6, [0x3fffdd30] ; 0x400018e4 40001b64: 7806 l32i.n a7, a6, 0 40001b66: b826 l32i.n a11, a6, 8 40001b68: 208ac0 sub a8, a10, a2 40001b6b: 705bc0 sub a5, a11, a7 40001b6e: 5050f4 extui a5, a5, 0, 16 40001b71: 872508 blt a5, a8, 0x40001b7d 40001b74: 061d00 j 0x40001bec 40001b77: 00 40001b78: 5d06 mov.n a5, a6 40001b7a: 87a66e bge a6, a8, 0x40001bec 40001b7d: 5a97 add.n a9, a7, a5 40001b7f: 320904 l8ui a3, a9, 4 40001b82: 620901 l8ui a6, a9, 1 40001b85: 420900 l8ui a4, a9, 0 40001b88: 806611 slli a6, a6, 8 40001b8b: 406620 or a6, a6, a4 40001b8e: 5663fe bnez a3, 0x40001b78 40001b91: 5036c0 sub a3, a6, a5 40001b94: 32c3f8 addi a3, a3, -8 40001b97: 3901 s32i.n a3, a1, 0 40001b99: 2733db bltu a3, a2, 0x40001b78 40001b9c: 0c18 movi.n a8, 1 40001b9e: 4801 l32i.n a4, a1, 0 40001ba0: 32c214 addi a3, a2, 20 40001ba3: 37344e bltu a4, a3, 0x40001bf5 40001ba6: 504841 srli a4, a5, 8 40001ba9: 5a22 add.n a2, a2, a5 40001bab: 8b22 addi.n a2, a2, 8 40001bad: 2030f4 extui a3, a2, 0, 16 40001bb0: 3a37 add.n a3, a7, a3 40001bb2: 624300 s8i a6, a3, 0 40001bb5: 524302 s8i a5, a3, 2 40001bb8: 424303 s8i a4, a3, 3 40001bbb: 605841 srli a5, a6, 8 40001bbe: 0c04 movi.n a4, 0 40001bc0: 206841 srli a6, a2, 8 40001bc3: 524301 s8i a5, a3, 1 40001bc6: 424304 s8i a4, a3, 4 40001bc9: 824904 s8i a8, a9, 4 40001bcc: 224900 s8i a2, a9, 0 40001bcf: 624901 s8i a6, a9, 1 40001bd2: 520301 l8ui a5, a3, 1 40001bd5: 320300 l8ui a3, a3, 0 40001bd8: 805511 slli a5, a5, 8 40001bdb: 305520 or a5, a5, a3 40001bde: a71516 beq a5, a10, 0x40001bf8 40001be1: 5a37 add.n a3, a7, a5 40001be3: 224302 s8i a2, a3, 2 40001be6: 624303 s8i a6, a3, 3 40001be9: c60200 j 0x40001bf8 40001bec: 0c02 movi.n a2, 0 40001bee: 12c110 addi a1, a1, 16 40001bf1: 0df0 ret.n 40001bf3: 0000 40001bf5: 824904 s8i a8, a9, 4 40001bf8: 979b28 bne a11, a9, 0x40001c24 40001bfb: 420b04 l8ui a4, a11, 4 40001bfe: 2139ff l32r a2, [0x3fffdd30] ; 0x400018e4 40001c01: 9cf4 beqz.n a4, 0x40001c24 40001c03: 222201 l32i a2, a2, 4 40001c06: b7121a beq a2, a11, 0x40001c24 40001c09: 420b01 l8ui a4, a11, 1 40001c0c: 320b00 l8ui a3, a11, 0 40001c0f: 80b411 slli a11, a4, 8 40001c12: 4134ff l32r a4, [0x3fffdd30] ; 0x400018e4 40001c15: 30bb20 or a11, a11, a3 40001c18: bab7 add.n a11, a7, a11 40001c1a: 320b04 l8ui a3, a11, 4 40001c1d: b924 s32i.n a11, a4, 8 40001c1f: 8c13 beqz.n a3, 0x40001c24 40001c21: b792e4 bne a2, a11, 0x40001c09 40001c24: 8b29 addi.n a2, a9, 8 40001c26: 12c110 addi a1, a1, 16 40001c29: 0df0 ret.n 40001c2b: 00 ; Only called by zalloc below mem_calloc: 40001c2c: 12c1f0 addi a1, a1, -16 40001c2f: 026101 s32i a0, a1, 4 ; save a0 40001c32: c26102 s32i a12, a1, 8 ; save a12 40001c35: 3002c1 mul16u a0, a2, a3 40001c38: 026100 s32i a0, a1, 0 40001c3b: 0020f4 extui a2, a0, 0, 16 40001c3e: 05f0ff call0 mem_malloc ; 0x40001b40 40001c41: cd02 mov.n a12, a2 40001c43: 8c52 beqz.n a2, 0x40001c4c 40001c45: 0c03 movi.n a3, 0 40001c47: 4801 l32i.n a4, a1, 0 40001c49: 85c5ff call0 ets_memset ; 0x400018a4 40001c4c: 2d0c mov.n a2, a12 40001c4e: 0811 l32i.n a0, a1, 4 ; restore a0 40001c50: c821 l32i.n a12, a1, 8 ; restore a12 40001c52: 12c110 addi a1, a1, 16 40001c55: 0df0 ret.n 40001c57: 00 ; never called mem_zalloc: 40001c58: 3d02 mov.n a3, a2 40001c5a: 12c1f0 addi a1, a1, -16 40001c5d: 0c12 movi.n a2, 1 40001c5f: 0901 s32i.n a0, a1, 0 40001c61: 85fcff call0 mem_calloc ; 0x40001c2c 40001c64: 0801 l32i.n a0, a1, 0 40001c66: 12c110 addi a1, a1, 16 40001c69: 0df0 ret.n 40001c6b: 00 mem_realloc: 40001c6c: 9d02 mov.n a9, a2 40001c6e: 12c1f0 addi a1, a1, -16 40001c71: c921 s32i.n a12, a1, 8 40001c73: 2d03 mov.n a2, a3 40001c75: d931 s32i.n a13, a1, 12 40001c77: 0911 s32i.n a0, a1, 4 40001c79: dd03 mov.n a13, a3 40001c7b: 9901 s32i.n a9, a1, 0 40001c7d: 05ecff call0 mem_malloc ; 0x40001b40 40001c80: cd02 mov.n a12, a2 40001c82: ccc2 bnez.n a2, 0x40001c92 40001c84: c821 l32i.n a12, a1, 8 40001c86: d831 l32i.n a13, a1, 12 40001c88: 0811 l32i.n a0, a1, 4 40001c8a: 12c110 addi a1, a1, 16 40001c8d: 0df0 ret.n 40001c8f: 000000 40001c92: d04d20 or a4, a13, a13 40001c95: 322100 l32i a3, a1, 0 40001c98: 85c1ff call0 ets_memcpy ; 0x400018b4 40001c9b: 222100 l32i a2, a1, 0 40001c9e: 05d4ff call0 mem_free ; 0x400019e0 40001ca1: 0811 l32i.n a0, a1, 4 40001ca3: 2d0c mov.n a2, a12 40001ca5: d831 l32i.n a13, a1, 12 40001ca7: c821 l32i.n a12, a1, 8 40001ca9: 12c110 addi a1, a1, 16 40001cac: 0df0 ret.n 40001cae: 0000 40001cb0: 3fffdd3c ; l32r 40001cb4: 0000fff2 ; l32r eprintf_init_buf: 40001cb8: 41feff l32r a4, [0x3fffdd3c] ; 0x40001cb0 40001cbb: 5812 l32i.n a5, a2, 4 40001cbd: 2904 s32i.n a2, a4, 0 40001cbf: eb55 addi.n a5, a5, 14 40001cc1: 5914 s32i.n a5, a4, 4 40001cc3: 51fcff l32r a5, [0x0000fff2] ; 0x40001cb4 40001cc6: c02000 memw 40001cc9: 321200 l16ui a3, a2, 0 40001ccc: 3030b4 extui a3, a3, 0, 12 40001ccf: 5a33 add.n a3, a3, a5 40001cd1: 325404 s16i a3, a4, 8 40001cd4: 0df0 ret.n 40001cd6: 0000 40001cd8: 3fffd82c ; l32r ; subroutine referenced by eprintf below. sub_1cdc: 40001cdc: 12c1f0 addi a1, a1, -16 40001cdf: 51f4ff l32r a5, [0x3fffdd3c] ; 0x40001cb0 40001ce2: 0901 s32i.n a0, a1, 0 40001ce4: 021504 l16ui a0, a5, 8 40001ce7: 9c50 beqz.n a0, 0x40001d00 40001ce9: 0b30 addi.n a3, a0, -1 40001ceb: 0815 l32i.n a0, a5, 4 40001ced: 325504 s16i a3, a5, 8 40001cf0: 224000 s8i a2, a0, 0 40001cf3: 1b00 addi.n a0, a0, 1 40001cf5: 0915 s32i.n a0, a5, 4 40001cf7: 0801 l32i.n a0, a1, 0 40001cf9: 12c110 addi a1, a1, 16 40001cfc: 0df0 ret.n 40001cfe: 0000 ; Format: "eprintf no buf" 40001d00: 21f6ff l32r a2, [0x3fffd82c] ; 0x40001cd8 40001d03: 857c00 call0 ets_printf ; 0x400024cc 40001d06: 0801 l32i.n a0, a1, 0 40001d08: 12c110 addi a1, a1, 16 40001d0b: 0df0 ret.n 40001d0d: 000000 40001d10: 40001cdc ; l32r ; many calls to this -- apparently to print debug only eprintf: 40001d14: 9d03 mov.n a9, a3 ; a9 = a3 (second arg) 40001d16: 12c1d0 addi a1, a1, -48 ; make space on stack 40001d19: 7991 s32i.n a7, a1, 36 40001d1b: 6981 s32i.n a6, a1, 32 40001d1d: 3d02 mov.n a3, a2 40001d1f: 2941 s32i.n a2, a1, 16 40001d21: 4961 s32i.n a4, a1, 24 40001d23: 5971 s32i.n a5, a1, 28 40001d25: 0931 s32i.n a0, a1, 12 ; save a0 (return address) 40001d27: 82c110 addi a8, a1, 16 40001d2a: 8911 s32i.n a8, a1, 4 40001d2c: 9951 s32i.n a9, a1, 20 40001d2e: 8901 s32i.n a8, a1, 0 40001d30: 0c40 movi.n a0, 4 40001d32: 5d08 mov.n a5, a8 40001d34: 4d08 mov.n a4, a8 40001d36: 21f6ff l32r a2, [sub_1cdc] ; [0x40001cdc] 0x40001d10 40001d39: 0921 s32i.n a0, a1, 8 40001d3b: 6d00 mov.n a6, a0 40001d3d: 051c00 call0 ets_vprintf ; 0x40001f00 40001d40: 0831 l32i.n a0, a1, 12 ; restore a0 40001d42: 12c130 addi a1, a1, 48 ; restore stack 40001d45: 0df0 ret.n 40001d47: 00 ; never called eprintf_to_host: 40001d48: 41daff l32r a4, [0x3fffdd3c] ; 0x40001cb0 40001d4b: 12c1f0 addi a1, a1, -16 40001d4e: 322400 l32i a3, a4, 0 40001d51: 026100 s32i a0, a1, 0 40001d54: 622301 l32i a6, a3, 4 40001d57: cb26 addi.n a2, a6, 12 40001d59: c02000 memw 40001d5c: 82a0f0 movi a8, 240 40001d5f: 0c85 movi.n a5, 8 40001d61: 921300 l16ui a9, a3, 0 40001d64: 2ba6 addi.n a10, a6, 2 40001d66: 9090b4 extui a9, a9, 0, 12 40001d69: 924a00 s8i a9, a10, 0 40001d6c: 909841 srli a9, a9, 8 40001d6f: 924a01 s8i a9, a10, 1 40001d72: 720600 l8ui a7, a6, 0 40001d75: 524601 s8i a5, a6, 1 40001d78: 807710 and a7, a7, a8 40001d7b: 724600 s8i a7, a6, 0 40001d7e: 421404 l16ui a4, a4, 8 40001d81: c02000 memw 40001d84: 021300 l16ui a0, a3, 0 40001d87: 0000b4 extui a0, a0, 0, 12 40001d8a: 4000c0 sub a0, a0, a4 40001d8d: 02c0f2 addi a0, a0, -14 40001d90: 025200 s16i a0, a2, 0 40001d93: 2d03 mov.n a2, a3 40001d95: 05a703 call0 sip_send ; 0x40005808 40001d98: 0801 l32i.n a0, a1, 0 40001d9a: 12c110 addi a1, a1, 16 40001d9d: 0df0 ret.n 40001d9f: 00 ; On my running system, ; the first pointer at 3fffdd3c + 12 (3fffdd48) is 40100490 ; the second pointer at 3fffdd3c + 16 (3fffdd4c) is 0 ; ; Note that the first pointer is not in the bootrom, but in ; application code. ets_write_char: 40001da0: 12c1f0 addi a1, a1, -16 ; space on stack 40001da3: 0901 s32i.n a0, a1, 0 ; save return 40001da5: 01c2ff l32r a0, [0x3fffdd3c] ; 0x40001cb0 40001da8: c911 s32i.n a12, a1, 4 ; save a12 40001daa: 4830 l32i.n a4, a0, 12 ; fetch first call addr 40001dac: cd02 mov.n a12, a2 ; save character 40001dae: 165400 beqz a4, 0x40001db7 ; is first call valid? 40001db1: c00400 callx0 a4 40001db4: 01bfff l32r a0, [0x3fffdd3c] ; 0x40001cb0 40001db7: 4840 l32i.n a4, a0, 16 ; fetch second call addr 40001db9: 8c34 beqz.n a4, 0x40001dc0 ; is it valid 40001dbb: 2d0c mov.n a2, a12 ; restore character 40001dbd: c00400 callx0 a4 40001dc0: c811 l32i.n a12, a1, 4 ; restore a12 40001dc2: 0801 l32i.n a0, a1, 0 ; restore return 40001dc4: 12c110 addi a1, a1, 16 ; restore stack 40001dc7: 0df0 ret.n 40001dc9: 000000 ; installed by ets_install_uart_printf() sub_1dcc: 40001dcc: 12c1f0 addi a1, a1, -16 ; space on stack 40001dcf: 0901 s32i.n a0, a1, 0 ; save return 40001dd1: 26920f beqi a2, 10, 0x40001de4 ; newline ? 40001dd4: 0cd0 movi.n a0, 13 40001dd6: 071202 beq a2, a0, 0x40001ddc 40001dd9: 45d501 call0 uart_tx_one_char ; 0x40003b30 40001ddc: 0801 l32i.n a0, a1, 0 ; restore a0 40001dde: 12c110 addi a1, a1, 16 ; restore stack 40001de1: 0df0 ret.n 40001de3: 00 40001de4: 22a00d movi a2, 13 ; send CR 40001de7: 85d401 call0 uart_tx_one_char ; 0x40003b30 40001dea: 22a00a movi a2, 10 ; send NL 40001ded: 05d401 call0 uart_tx_one_char ; 0x40003b30 40001df0: 0801 l32i.n a0, a1, 0 ; restore a0 40001df2: 12c110 addi a1, a1, 16 ; restore stack 40001df5: 0df0 ret.n 40001df7: 00 sub_1df8: 40001df8: 12c180 addi a1, a1, -128 40001dfb: c26116 s32i a12, a1, 88 40001dfe: f26119 s32i a15, a1, 100 40001e01: 32611c s32i a3, a1, 112 40001e04: d26117 s32i a13, a1, 92 40001e07: e26118 s32i a14, a1, 96 40001e0a: 026115 s32i a0, a1, 84 40001e0d: ed02 mov.n a14, a2 40001e0f: 0c00 movi.n a0, 0 40001e11: dd04 mov.n a13, a4 40001e13: 0c03 movi.n a3, 0 40001e15: 4d05 mov.n a4, a5 40001e17: f2211c l32i a15, a1, 112 40001e1a: 0c15 movi.n a5, 1 40001e1c: f03583 moveqz a3, a5, a15 40001e1f: 200583 moveqz a0, a5, a2 40001e22: 37000a bnone a0, a3, 0x40001e30 40001e25: 1bc1 addi.n a12, a1, 1 40001e27: 3c06 movi.n a6, 48 40001e29: 624100 s8i a6, a1, 0 40001e2c: c61100 j 0x40001e77 40001e2f: 00 40001e30: cd01 mov.n a12, a1 40001e32: 42611b s32i a4, a1, 108 40001e35: 626114 s32i a6, a1, 80 40001e38: 407f31 srai a7, a4, 31 40001e3b: 72611a s32i a7, a1, 104 40001e3e: 3d0f mov.n a3, a15 40001e40: 2d0e mov.n a2, a14 40001e42: 52211a l32i a5, a1, 104 40001e45: 42211b l32i a4, a1, 108 40001e48: 45920b call0 __umoddi3 ; 0x4000d770 40001e4b: 3d0f mov.n a3, a15 40001e4d: 52211a l32i a5, a1, 104 40001e50: 922114 l32i a9, a1, 80 40001e53: 42211b l32i a4, a1, 108 40001e56: 2a99 add.n a9, a9, a2 40001e58: 920900 l8ui a9, a9, 0 40001e5b: 2d0e mov.n a2, a14 40001e5d: 924c00 s8i a9, a12, 0 40001e60: 1bcc addi.n a12, a12, 1 40001e62: c54a0b call0 __udivdi3 ; 0x4000d310 40001e65: ed02 mov.n a14, a2 40001e67: fd03 mov.n a15, a3 40001e69: 0c10 movi.n a0, 1 40001e6b: 303093 movnez a3, a0, a3 40001e6e: 202093 movnez a2, a0, a2 40001e71: 30a220 or a10, a2, a3 40001e74: 566afc bnez a10, 0x40001e3e 40001e77: 0d01 mov.n a0, a1 40001e79: 171c47 beq a12, a1, 0x40001ec4 40001e7c: 102cc0 sub a2, a12, a1 40001e7f: 204141 srli a4, a2, 1 40001e82: 07620a bbci a2, 0, 0x40001e90 40001e85: 0bcc addi.n a12, a12, -1 40001e87: 320c00 l8ui a3, a12, 0 40001e8a: 324d00 s8i a3, a13, 0 40001e8d: d2cd01 addi a13, a13, 1 40001e90: e22118 l32i a14, a1, 96 40001e93: f22119 l32i a15, a1, 100 40001e96: 0c07 movi.n a7, 0 40001e98: 9c44 beqz.n a4, 0x40001eb0 40001e9a: 0b6c addi.n a6, a12, -1 40001e9c: 620600 l8ui a6, a6, 0 40001e9f: c2ccfe addi a12, a12, -2 40001ea2: 520c00 l8ui a5, a12, 0 40001ea5: 624d00 s8i a6, a13, 0 40001ea8: 524d01 s8i a5, a13, 1 40001eab: 2bdd addi.n a13, a13, 2 40001ead: c730e9 bltu a0, a12, 0x40001e9a 40001eb0: 022115 l32i a0, a1, 84 40001eb3: c22116 l32i a12, a1, 88 40001eb6: 724d00 s8i a7, a13, 0 40001eb9: 32a080 movi a3, 128 40001ebc: d22117 l32i a13, a1, 92 40001ebf: 3a11 add.n a1, a1, a3 40001ec1: 0df0 ret.n 40001ec3: 00 40001ec4: 0c02 movi.n a2, 0 40001ec6: 022115 l32i a0, a1, 84 40001ec9: c22116 l32i a12, a1, 88 40001ecc: e22118 l32i a14, a1, 96 40001ecf: f22119 l32i a15, a1, 100 40001ed2: 0c08 movi.n a8, 0 40001ed4: 32a080 movi a3, 128 40001ed7: 824d00 s8i a8, a13, 0 40001eda: d22117 l32i a13, a1, 92 40001edd: 3a11 add.n a1, a1, a3 40001edf: 0df0 ret.n 40001ee1: 000000 40001ee4: 3fffc890 ; l32r 40001ee8: 3fffc970 ; l32r 40001eec: 3fffcac0 ; l32r 40001ef0: 3fffd870 ; l32r 40001ef4: 3fffd848 ; l32r 40001ef8: 3fffd85c ; l32r 40001efc: 3fffd83c ; l32r ets_vprintf: 40001f00: 72a090 movi a7, 144 40001f03: 7011c0 sub a1, a1, a7 40001f06: c26115 s32i a12, a1, 84 40001f09: d26116 s32i a13, a1, 88 40001f0c: 62611a s32i a6, a1, 104 40001f0f: f26118 s32i a15, a1, 96 40001f12: e26117 s32i a14, a1, 92 40001f15: 026114 s32i a0, a1, 80 40001f18: ed02 mov.n a14, a2 40001f1a: 1b03 addi.n a0, a3, 1 40001f1c: f20300 l8ui a15, a3, 0 40001f1f: 026113 s32i a0, a1, 76 40001f22: 164f4d beqz a15, 0x400023fa 40001f25: 0c0d movi.n a13, 0 40001f27: 0c0c movi.n a12, 0 40001f29: 12611f s32i a1, a1, 124 40001f2c: 426112 s32i a4, a1, 72 40001f2f: 526111 s32i a5, a1, 68 40001f32: 2c52 movi.n a2, 37 40001f34: 0c0b movi.n a11, 0 40001f36: 0c00 movi.n a0, 0 40001f38: 02611e s32i a0, a1, 120 40001f3b: b2611d s32i a11, a1, 116 40001f3e: 271f1a beq a15, a2, 0x40001f5c 40001f41: 2d0f mov.n a2, a15 40001f43: c00e00 callx0 a14 40001f46: c2cc01 addi a12, a12, 1 40001f49: 022113 l32i a0, a1, 76 40001f4c: 2c52 movi.n a2, 37 40001f4e: f20000 l8ui a15, a0, 0 40001f51: 1b00 addi.n a0, a0, 1 40001f53: 16af1e beqz a15, 0x40002141 40001f56: 026113 s32i a0, a1, 76 40001f59: 279fe4 bne a15, a2, 0x40001f41 40001f5c: 422113 l32i a4, a1, 76 40001f5f: 2cd3 movi.n a3, 45 40001f61: f20400 l8ui a15, a4, 0 40001f64: 1b44 addi.n a4, a4, 1 40001f66: 426113 s32i a4, a1, 76 40001f69: 371f1f beq a15, a3, 0x40001f8c 40001f6c: 3c05 movi.n a5, 48 40001f6e: 0c06 movi.n a6, 0 40001f70: 62611c s32i a6, a1, 112 40001f73: 571f27 beq a15, a5, 0x40001f9e 40001f76: 2cf7 movi.n a7, 47 40001f78: 0c08 movi.n a8, 0 40001f7a: 82611b s32i a8, a1, 108 40001f7d: f7b733 bgeu a7, a15, 0x40001fb4 40001f80: 3c99 movi.n a9, 57 40001f82: f7392e bltu a9, a15, 0x40001fb4 40001f85: 0c06 movi.n a6, 0 40001f87: 2cf0 movi.n a0, 47 40001f89: 461a00 j 0x40001ff6 40001f8c: 3c0a movi.n a10, 48 40001f8e: f20400 l8ui a15, a4, 0 40001f91: 0c1b movi.n a11, 1 40001f93: 1b04 addi.n a0, a4, 1 40001f95: 026113 s32i a0, a1, 76 40001f98: b2611c s32i a11, a1, 112 40001f9b: a79fd7 bne a15, a10, 0x40001f76 40001f9e: 2cf2 movi.n a2, 47 40001fa0: 422113 l32i a4, a1, 76 40001fa3: 32a001 movi a3, 1 40001fa6: 32611b s32i a3, a1, 108 40001fa9: f20400 l8ui a15, a4, 0 40001fac: 1b44 addi.n a4, a4, 1 40001fae: 426113 s32i a4, a1, 76 40001fb1: f732cb bltu a2, a15, 0x40001f80 40001fb4: 0c06 movi.n a6, 0 40001fb6: 52cfd2 addi a5, a15, -46 40001fb9: 16b524 beqz a5, 0x40002208 40001fbc: 3c78 movi.n a8, 55 40001fbe: 72cf94 addi a7, a15, -108 40001fc1: 167720 beqz a7, 0x400021cc 40001fc4: 0c09 movi.n a9, 0 40001fc6: 0c0a movi.n a10, 0 40001fc8: 02cfbe addi a0, a15, -66 40001fcb: 87b00a bgeu a0, a8, 0x40001fd9 40001fce: b1c5ff l32r a11, [0x3fffc890] ; 0x40001ee4 40001fd1: b0b0a0 addx4 a11, a0, a11 40001fd4: b80b l32i.n a11, a11, 0 40001fd6: a00b00 jx a11 ; indirect jump 40001fd9: 0c00 movi.n a0, 0 40001fdb: 026110 s32i a0, a1, 64 40001fde: 5c42 movi.n a2, 84 40001fe0: 02cfdb addi a0, a15, -37 40001fe3: 27b04d bgeu a0, a2, 0x40002034 40001fe6: 31c0ff l32r a3, [0x3fffc970] ; 0x40001ee8 40001fe9: 3030a0 addx4 a3, a0, a3 40001fec: 3803 l32i.n a3, a3, 0 40001fee: a00300 jx a3 ; indirect jump 40001ff1: 3c94 movi.n a4, 57 40001ff3: f734bf bltu a4, a15, 0x40001fb6 40001ff6: 522113 l32i a5, a1, 76 40001ff9: 6066a0 addx4 a6, a6, a6 40001ffc: f06690 addx2 a6, a6, a15 40001fff: 62c6d0 addi a6, a6, -48 40002002: f20500 l8ui a15, a5, 0 40002005: 1b55 addi.n a5, a5, 1 40002007: 526113 s32i a5, a1, 76 4000200a: f730e3 bltu a0, a15, 0x40001ff1 4000200d: 46e9ff j 0x40001fb6 sub_2010: 40002010: 0c1a movi.n a10, 1 40002012: 16e92f beqz a9, 0x40002314 40002015: 1c87 movi.n a7, 24 40002017: 82211a l32i a8, a1, 104 4000201a: 7c82 movi.n a2, -8 4000201c: 7b08 addi.n a0, a8, 7 4000201e: 200010 and a0, a0, a2 40002021: 8b80 addi.n a8, a0, 8 40002023: 82611a s32i a8, a1, 104 40002026: 87a702 bge a7, a8, 0x4000202c 40002029: 464b00 j 0x4000215a 4000202c: 022111 l32i a0, a1, 68 4000202f: 064d00 j 0x40002167 40002032: 0000 40002034: 626120 s32i a6, a1, 128 40002037: 2c52 movi.n a2, 37 40002039: c00e00 callx0 a14 4000203c: 2d0f mov.n a2, a15 4000203e: c00e00 callx0 a14 40002041: 622120 l32i a6, a1, 128 40002044: 2bcc addi.n a12, a12, 2 40002046: 461f00 j 0x400020c7 sub_2049: 40002049: dd06 mov.n a13, a6 4000204b: 16d635 beqz a6, 0x400023ac 4000204e: 0bf6 addi.n a15, a6, -1 40002050: a61f70 blti a15, 1, 0x400020c4 40002053: 9d01 mov.n a9, a1 40002055: 0c00 movi.n a0, 0 40002057: 0c1a movi.n a10, 1 40002059: 076f1c bbci a15, 0, 0x40002079 4000205c: 1b91 addi.n a9, a1, 1 4000205e: 3c14 movi.n a4, 49 40002060: 2ce3 movi.n a3, 46 40002062: 72211d l32i a7, a1, 116 40002065: 000040 ssr a0 40002068: 52211e l32i a5, a1, 120 4000206b: 0d0a mov.n a0, a10 4000206d: 705581 src a5, a5, a7 40002070: 505004 extui a5, a5, 0, 1 40002073: 503493 movnez a3, a4, a5 40002076: 324100 s8i a3, a1, 0 40002079: f08121 srai a8, a15, 1 4000207c: 164804 beqz a8, 0x400020c4 4000207f: 2ce7 movi.n a7, 46 40002081: 1b50 addi.n a5, a0, 1 40002083: b2c0e0 addi a11, a0, -32 40002086: 42211d l32i a4, a1, 116 40002089: 22211e l32i a2, a1, 120 4000208c: 000040 ssr a0 4000208f: 20a0b1 sra a10, a2 40002092: 408281 src a8, a2, a4 40002095: b08ab3 movgez a8, a10, a11 40002098: 000540 ssr a5 4000209b: ad07 mov.n a10, a7 4000209d: 2030b1 sra a3, a2 400020a0: 808004 extui a8, a8, 0, 1 400020a3: 402281 src a2, a2, a4 400020a6: 3c1b movi.n a11, 49 400020a8: 42c0e1 addi a4, a0, -31 400020ab: 2b00 addi.n a0, a0, 2 400020ad: 807b93 movnez a7, a11, a8 400020b0: 4023b3 movgez a2, a3, a4 400020b3: 202004 extui a2, a2, 0, 1 400020b6: 724900 s8i a7, a9, 0 400020b9: 20ab93 movnez a10, a11, a2 400020bc: a24901 s8i a10, a9, 1 400020bf: 2b99 addi.n a9, a9, 2 400020c1: 079fba bne a15, a0, 0x4000207f 400020c4: 12611f s32i a1, a1, 124 400020c7: d26119 s32i a13, a1, 100 400020ca: 22211b l32i a2, a1, 108 400020cd: 022110 l32i a0, a1, 64 400020d0: d0f6c0 sub a15, a6, a13 400020d3: 0b4f addi.n a4, a15, -1 400020d5: 00f493 movnez a15, a4, a0 400020d8: 168210 beqz a2, 0x400021e4 400020db: 8c70 beqz.n a0, 0x400020e6 400020dd: 2d00 mov.n a2, a0 400020df: c00e00 callx0 a14 400020e2: 1bcc addi.n a12, a12, 1 400020e4: 0c00 movi.n a0, 0 400020e6: 3c0d movi.n a13, 48 400020e8: 52211c l32i a5, a1, 112 400020eb: 026110 s32i a0, a1, 64 400020ee: 16a50f beqz a5, 0x400021ec 400020f1: 022110 l32i a0, a1, 64 400020f4: f02000 nop 400020f7: 8c50 beqz.n a0, 0x40002100 400020f9: 2d00 mov.n a2, a0 400020fb: c00e00 callx0 a14 400020fe: 1bcc addi.n a12, a12, 1 40002100: 622119 l32i a6, a1, 100 40002103: 0bd6 addi.n a13, a6, -1 40002105: a61617 blti a6, 1, 0x40002120 40002108: 72211f l32i a7, a1, 124 4000210b: 220700 l8ui a2, a7, 0 4000210e: 1b77 addi.n a7, a7, 1 40002110: 72611f s32i a7, a1, 124 40002113: c00e00 callx0 a14 40002116: 1bcc addi.n a12, a12, 1 40002118: 8d0d mov.n a8, a13 4000211a: d2cdff addi a13, a13, -1 4000211d: e618e7 bgei a8, 1, 0x40002108 40002120: 92211c l32i a9, a1, 112 40002123: 0d0f mov.n a0, a15 40002125: 1609e2 beqz a9, 0x40001f49 40002128: 0bff addi.n a15, a15, -1 4000212a: e61002 bgei a0, 1, 0x40002130 4000212d: 0686ff j 0x40001f49 40002130: 2c02 movi.n a2, 32 40002132: c00e00 callx0 a14 40002135: 1bcc addi.n a12, a12, 1 40002137: ad0f mov.n a10, a15 40002139: 0bff addi.n a15, a15, -1 4000213b: e61af1 bgei a10, 1, 0x40002130 4000213e: c681ff j 0x40001f49 40002141: 022114 l32i a0, a1, 80 40002144: d22116 l32i a13, a1, 88 40002147: e22117 l32i a14, a1, 92 4000214a: f22118 l32i a15, a1, 96 4000214d: 2d0c mov.n a2, a12 4000214f: 32a090 movi a3, 144 40002152: c22115 l32i a12, a1, 84 40002155: 3a11 add.n a1, a1, a3 40002157: 0df0 ret.n 40002159: 00 4000215a: 1c8b movi.n a11, 24 4000215c: 072b04 blt a11, a0, 0x40002164 4000215f: 2c80 movi.n a0, 40 40002161: 02611a s32i a0, a1, 104 40002164: 022112 l32i a0, a1, 72 40002167: 22211a l32i a2, a1, 104 4000216a: 0a22 add.n a2, a2, a0 4000216c: 22d2ff addmi a2, a2, 0xffffff00 4000216f: 32223f l32i a3, a2, 252 40002172: 32611e s32i a3, a1, 120 40002175: 22223e l32i a2, a2, 248 40002178: 22611d s32i a2, a1, 116 4000217b: 32cf9c addi a3, a15, -100 4000217e: 162314 beqz a3, 0x400022c4 40002181: 42cfbc addi a4, a15, -68 40002184: 16c413 beqz a4, 0x400022c4 40002187: 0c05 movi.n a5, 0 40002189: 82211d l32i a8, a1, 116 4000218c: 82611d s32i a8, a1, 116 4000218f: 52611e s32i a5, a1, 120 40002192: 0c0b movi.n a11, 0 40002194: b26110 s32i a11, a1, 64 40002197: c690ff j 0x40001fde 4000219a: 0000 sub_219c: 4000219c: 626120 s32i a6, a1, 128 4000219f: 3c02 movi.n a2, 48 400021a1: c00e00 callx0 a14 400021a4: 22a078 movi a2, 120 400021a7: c00e00 callx0 a14 400021aa: 0c86 movi.n a6, 8 400021ac: 0c10 movi.n a0, 1 400021ae: 02611b s32i a0, a1, 108 400021b1: 3c52 movi.n a2, 53 400021b3: 02cfbc addi a0, a15, -68 400021b6: 273002 bltu a0, a2, 0x400021bc 400021b9: c6c1ff j 0x400020c4 400021bc: 314cff l32r a3, [0x3fffcac0] ; 0x40001eec 400021bf: 3030a0 addx4 a3, a0, a3 400021c2: 3803 l32i.n a3, a3, 0 400021c4: 626120 s32i a6, a1, 128 400021c7: a00300 jx a3 ; indirect jump 400021ca: 0000 400021cc: 522113 l32i a5, a1, 76 400021cf: f20500 l8ui a15, a5, 0 400021d2: 1b55 addi.n a5, a5, 1 400021d4: 526113 s32i a5, a1, 76 400021d7: 42cf94 addi a4, a15, -108 400021da: 16e41b beqz a4, 0x4000239c 400021dd: 0c09 movi.n a9, 0 400021df: 0c1a movi.n a10, 1 400021e1: c678ff j 0x40001fc8 400021e4: 62211c l32i a6, a1, 112 400021e7: 2c0d movi.n a13, 32 400021e9: 5646f0 bnez a6, 0x400020f1 400021ec: 0d0f mov.n a0, a15 400021ee: 0bff addi.n a15, a15, -1 400021f0: e61002 bgei a0, 1, 0x400021f6 400021f3: 86beff j 0x400020f1 400021f6: 2d0d mov.n a2, a13 400021f8: c00e00 callx0 a14 400021fb: 1bcc addi.n a12, a12, 1 400021fd: 7d0f mov.n a7, a15 400021ff: 0bff addi.n a15, a15, -1 40002201: e617f1 bgei a7, 1, 0x400021f6 40002204: 46baff j 0x400020f1 40002207: 00 40002208: 2cf8 movi.n a8, 47 4000220a: 922113 l32i a9, a1, 76 4000220d: a2211b l32i a10, a1, 108 40002210: f20900 l8ui a15, a9, 0 40002213: 1baa addi.n a10, a10, 1 40002215: a2611b s32i a10, a1, 108 40002218: 1b99 addi.n a9, a9, 1 4000221a: 926113 s32i a9, a1, 76 4000221d: f73802 bltu a8, a15, 0x40002223 40002220: 0666ff j 0x40001fbc 40002223: 3c9b movi.n a11, 57 40002225: f73b02 bltu a11, a15, 0x4000222b 40002228: 063500 j 0x40002300 4000222b: 4663ff j 0x40001fbc sub_222e: 4000222e: f2211a l32i a15, a1, 104 40002231: 1c8d movi.n a13, 24 40002233: 0d0f mov.n a0, a15 40002235: 4bff addi.n a15, a15, 4 40002237: f2611a s32i a15, a1, 104 4000223a: f72d2c blt a13, a15, 0x4000226a 4000223d: 022111 l32i a0, a1, 68 40002240: c60c00 j 0x40002277 sub_2243: 40002243: 626120 s32i a6, a1, 128 40002246: 32211a l32i a3, a1, 104 40002249: 1c82 movi.n a2, 24 4000224b: 0d03 mov.n a0, a3 4000224d: 4b33 addi.n a3, a3, 4 4000224f: 32611a s32i a3, a1, 104 40002252: 372250 blt a2, a3, 0x400022a6 40002255: 022111 l32i a0, a1, 68 40002258: c61500 j 0x400022b3 4000225b: 006261202c52c00e006221200697ff 4000226a: 1c84 movi.n a4, 24 4000226c: 072404 blt a4, a0, 0x40002274 4000226f: 2c45 movi.n a5, 36 40002271: 52611a s32i a5, a1, 104 40002274: 022112 l32i a0, a1, 72 40002277: 72211a l32i a7, a1, 104 4000227a: 811dff l32r a8, [0x3fffd870] ; 0x40001ef0 4000227d: 0a77 add.n a7, a7, a0 4000227f: 72d7ff addmi a7, a7, 0xffffff00 40002282: 72273f l32i a7, a7, 252 40002285: 707883 moveqz a7, a8, a7 40002288: 72611f s32i a7, a1, 124 4000228b: 720700 l8ui a7, a7, 0 4000228e: 160718 beqz a7, 0x40002412 40002291: 02211f l32i a0, a1, 124 40002294: 0c0d movi.n a13, 0 40002296: 1bdd addi.n a13, a13, 1 40002298: 820001 l8ui a8, a0, 1 4000229b: 1b00 addi.n a0, a0, 1 4000229d: 5658ff bnez a8, 0x40002296 400022a0: c688ff j 0x400020c7 400022a3: 000000 400022a6: 1c89 movi.n a9, 24 400022a8: 072904 blt a9, a0, 0x400022b0 400022ab: 2c4a movi.n a10, 36 400022ad: a2611a s32i a10, a1, 104 400022b0: 022112 l32i a0, a1, 72 400022b3: 22211a l32i a2, a1, 104 400022b6: 0a22 add.n a2, a2, a0 400022b8: 22d2ff addmi a2, a2, 0xffffff00 400022bb: 2202fc l8ui a2, a2, 252 400022be: c00e00 callx0 a14 400022c1: 4620ff j 0x40001f46 400022c4: 22211d l32i a2, a1, 116 400022c7: 0c0a movi.n a10, 0 400022c9: 32211e l32i a3, a1, 120 400022cc: 0c00 movi.n a0, 0 400022ce: e61302 bgei a3, 1, 0x400022d4 400022d1: c63800 j 0x400023b8 400022d4: 16a0eb beqz a0, 0x40002192 400022d7: 52211d l32i a5, a1, 116 400022da: 7cfb movi.n a11, -1 400022dc: 82211e l32i a8, a1, 120 400022df: 2cd4 movi.n a4, 45 400022e1: 426110 s32i a4, a1, 64 400022e4: b08830 xor a8, a8, a11 400022e7: 507060 neg a7, a5 400022ea: 72611d s32i a7, a1, 116 400022ed: 1ba8 addi.n a10, a8, 1 400022ef: 508a83 moveqz a8, a10, a5 400022f2: 82611e s32i a8, a1, 120 400022f5: 4639ff j 0x40001fde 400022f8: 3c90 movi.n a0, 57 400022fa: f7b002 bgeu a0, a15, 0x40002300 400022fd: c62eff j 0x40001fbc 40002300: 322113 l32i a3, a1, 76 40002303: 2cf2 movi.n a2, 47 40002305: f20300 l8ui a15, a3, 0 40002308: 1b33 addi.n a3, a3, 1 4000230a: 326113 s32i a3, a1, 76 4000230d: f732e7 bltu a2, a15, 0x400022f8 40002310: 062aff j 0x40001fbc 40002313: 00 40002314: 168a0a beqz a10, 0x400023c0 40002317: 52211a l32i a5, a1, 104 4000231a: 1c84 movi.n a4, 24 4000231c: 0d05 mov.n a0, a5 4000231e: 4b55 addi.n a5, a5, 4 40002320: 52611a s32i a5, a1, 104 40002323: 572407 blt a4, a5, 0x4000232e 40002326: 022111 l32i a0, a1, 68 40002329: 860300 j 0x4000233b 4000232c: 0000 4000232e: 1c87 movi.n a7, 24 40002330: 072704 blt a7, a0, 0x40002338 40002333: 2c48 movi.n a8, 36 40002335: 82611a s32i a8, a1, 104 40002338: 022112 l32i a0, a1, 72 4000233b: a2211a l32i a10, a1, 104 4000233e: 0aaa add.n a10, a10, a0 40002340: a2daff addmi a10, a10, 0xffffff00 40002343: a22a3f l32i a10, a10, 252 40002346: a2611d s32i a10, a1, 116 40002349: a0af31 srai a10, a10, 31 4000234c: a2611e s32i a10, a1, 120 4000234f: 068aff j 0x4000217b 40002352: 0000 sub_2354: 40002354: 32211e l32i a3, a1, 120 40002357: 22211d l32i a2, a1, 116 4000235a: 4d01 mov.n a4, a1 4000235c: 1c05 movi.n a5, 16 4000235e: 61e5fe l32r a6, [0x3fffd848] ; 0x40001ef4 40002361: 45a9ff call0 sub_1df8 ; 0x40001df8 40002364: 622120 l32i a6, a1, 128 40002367: dd02 mov.n a13, a2 40002369: c655ff j 0x400020c4 sub_236c: 4000236c: 32211e l32i a3, a1, 120 4000236f: 22211d l32i a2, a1, 116 40002372: 4d01 mov.n a4, a1 40002374: 1c05 movi.n a5, 16 40002376: 61e0fe l32r a6, [0x3fffd85c] ; 0x40001ef8 40002379: c5a7ff call0 sub_1df8 ; 0x40001df8 4000237c: 622120 l32i a6, a1, 128 4000237f: dd02 mov.n a13, a2 40002381: c64fff j 0x400020c4 sub_2384: 40002384: 32211e l32i a3, a1, 120 40002387: 22211d l32i a2, a1, 116 4000238a: 4d01 mov.n a4, a1 4000238c: 0ca5 movi.n a5, 10 4000238e: 61dbfe l32r a6, [0x3fffd83c] ; 0x40001efc 40002391: 45a6ff call0 sub_1df8 ; 0x40001df8 40002394: 622120 l32i a6, a1, 128 40002397: dd02 mov.n a13, a2 40002399: c649ff j 0x400020c4 4000239c: f20500 l8ui a15, a5, 0 4000239f: 0c19 movi.n a9, 1 400023a1: 1bb5 addi.n a11, a5, 1 400023a3: b26113 s32i a11, a1, 76 400023a6: 468dff j 0x400021df 400023a9: 000000 400023ac: 168906 beqz a9, 0x40002418 400023af: 3cff movi.n a15, 63 400023b1: 4c0d movi.n a13, 64 400023b3: 0627ff j 0x40002053 400023b6: 0000 400023b8: 164306 beqz a3, 0x40002420 400023bb: 0c10 movi.n a0, 1 400023bd: c6c4ff j 0x400022d4 400023c0: 52211a l32i a5, a1, 104 400023c3: 1c84 movi.n a4, 24 400023c5: 0d05 mov.n a0, a5 400023c7: 4b55 addi.n a5, a5, 4 400023c9: 52611a s32i a5, a1, 104 400023cc: 572406 blt a4, a5, 0x400023d6 400023cf: 022111 l32i a0, a1, 68 400023d2: 460300 j 0x400023e3 400023d5: 00 400023d6: 1c87 movi.n a7, 24 400023d8: 072704 blt a7, a0, 0x400023e0 400023db: 2c48 movi.n a8, 36 400023dd: 82611a s32i a8, a1, 104 400023e0: 022112 l32i a0, a1, 72 400023e3: a2211a l32i a10, a1, 104 400023e6: 0aaa add.n a10, a10, a0 400023e8: a2daff addmi a10, a10, 0xffffff00 400023eb: a22a3f l32i a10, a10, 252 400023ee: a2611d s32i a10, a1, 116 400023f1: a0af31 srai a10, a10, 31 400023f4: a2611e s32i a10, a1, 120 400023f7: 0660ff j 0x4000217b 400023fa: 0c02 movi.n a2, 0 400023fc: c22115 l32i a12, a1, 84 400023ff: d22116 l32i a13, a1, 88 40002402: e22117 l32i a14, a1, 92 40002405: f22118 l32i a15, a1, 96 40002408: 32a090 movi a3, 144 4000240b: 022114 l32i a0, a1, 80 4000240e: 3a11 add.n a1, a1, a3 40002410: 0df0 ret.n 40002412: 0c0d movi.n a13, 0 40002414: c62bff j 0x400020c7 40002417: 00 40002418: 1cff movi.n a15, 31 4000241a: 2c0d movi.n a13, 32 4000241c: c60cff j 0x40002053 4000241f: 00 40002420: a73202 bltu a2, a10, 0x40002426 40002423: 46abff j 0x400022d4 40002426: 46e4ff j 0x400023bb 40002429: 000000 ; ** End of ets_vprintf ; ets_install_putc1 ( arg ) ; only called from ets_install_uart_printf() below ets_install_putc1: 4000242c: 3121fe l32r a3, [0x3fffdd3c] ; 0x40001cb0 4000242f: 2933 s32i.n a2, a3, 12 40002431: 0df0 ret.n 40002433: 00 40002434: 40001dcc ; l32r ets_install_uart_printf: 40002438: 21ffff l32r a2, [sub_1dcc] ; [0x40001dcc] 0x40002434 4000243b: 12c1f0 addi a1, a1, -16 4000243e: 026100 s32i a0, a1, 0 40002441: 85feff call0 ets_install_putc1 ; 0x4000242c 40002444: 0801 l32i.n a0, a1, 0 40002446: 12c110 addi a1, a1, 16 40002449: 0df0 ret.n 4000244b: 00 4000244c: 400024a8 ; l32r ets_install_external_printf: 40002450: 12c1f0 addi a1, a1, -16 40002453: 026101 s32i a0, a1, 4 40002456: 0116fe l32r a0, [0x3fffdd3c] ; 0x40001cb0 40002459: 426100 s32i a4, a1, 0 4000245c: 226005 s32i a2, a0, 20 4000245f: 9c13 beqz.n a3, 0x40002474 40002461: 2d03 mov.n a2, a3 40002463: 850200 call0 ets_install_putc2 ; 0x4000248c 40002466: 0811 l32i.n a0, a1, 4 40002468: 3112fe l32r a3, [0x3fffdd3c] ; 0x40001cb0 4000246b: 2801 l32i.n a2, a1, 0 4000246d: 2963 s32i.n a2, a3, 24 4000246f: 12c110 addi a1, a1, 16 40002472: 0df0 ret.n 40002474: 21f6ff l32r a2, [sub_24a8] ; [0x400024a8] 0x4000244c 40002477: 450100 call0 ets_install_putc2 ; 0x4000248c 4000247a: 022101 l32i a0, a1, 4 4000247d: 510cfe l32r a5, [0x3fffdd3c] ; 0x40001cb0 40002480: 422100 l32i a4, a1, 0 40002483: 426506 s32i a4, a5, 24 40002486: 12c110 addi a1, a1, 16 40002489: 0df0 ret.n 4000248b: 00 ets_install_putc2: 4000248c: 3109fe l32r a3, [0x3fffdd3c] ; 0x40001cb0 4000248f: 2943 s32i.n a2, a3, 16 40002491: 0df0 ret.n 40002493: 00 est_get_printf_buf_remain_len: 40002494: 2107fe l32r a2, [0x3fffdd3c] ; 0x40001cb0 40002497: 22120e l16ui a2, a2, 28 4000249a: 0df0 ret.n est_reset_printf_buf_len: 4000249c: 3105fe l32r a3, [0x3fffdd3c] ; 0x40001cb0 4000249f: 0c02 movi.n a2, 0 400024a1: 22530e s16i a2, a3, 28 400024a4: 0df0 ret.n 400024a6: 0000 ; subroutine, installed as "putc2" just above. sub_24a8: 400024a8: 6102fe l32r a6, [0x3fffdd3c] ; 0x40001cb0 400024ab: 42160e l16ui a4, a6, 28 400024ae: 3886 l32i.n a3, a6, 32 400024b0: 8cc4 beqz.n a4, 0x400024c0 400024b2: 224300 s8i a2, a3, 0 400024b5: 0b54 addi.n a5, a4, -1 400024b7: 1b33 addi.n a3, a3, 1 400024b9: 52560e s16i a5, a6, 28 400024bc: 3986 s32i.n a3, a6, 32 400024be: 0df0 ret.n 400024c0: 0df0 ret.n 400024c2: 0000 400024c4: 3fffdd5c ; l32r 400024c8: 40001da0 ; l32r ; ets_printf -- many calls to this ets_printf: 400024cc: 12c1c0 addi a1, a1, -64 ; space on stack 400024cf: 69c1 s32i.n a6, a1, 48 ; save a6 400024d1: 79d1 s32i.n a7, a1, 52 ; save a7 400024d3: 2981 s32i.n a2, a1, 32 ; save a2 400024d5: 59b1 s32i.n a5, a1, 44 ; save a5 400024d7: 49a1 s32i.n a4, a1, 40 ; save a4 400024d9: 3991 s32i.n a3, a1, 36 ; save a3 400024db: c941 s32i.n a12, a1, 16 ; save a12 400024dd: c1f4fd l32r a12, [0x3fffdd3c] ; 0x40001cb0 400024e0: 0931 s32i.n a0, a1, 12 ; save a0 to stack 400024e2: 083c l32i.n a0, a12, 12 400024e4: 3d02 mov.n a3, a2 400024e6: cc40 bnez.n a0, 0x400024ee 400024e8: 422c04 l32i a4, a12, 16 400024eb: 167404 beqz a4, 0x40002536 400024ee: 585c l32i.n a5, a12, 20 400024f0: 8cc5 beqz.n a5, 0x40002500 400024f2: 21f4ff l32r a2, [0x3fffdd5c] ; 0x400024c4 400024f5: 32c2fc addi a3, a2, -4 400024f8: 4b42 addi.n a4, a2, 4 400024fa: c00500 callx0 a5 400024fd: 322108 l32i a3, a1, 32 40002500: 21f2ff l32r a2, [ets_write_char] ; [0x40001da0] 0x400024c8 40002503: 42c120 addi a4, a1, 32 40002506: 0c46 movi.n a6, 4 40002508: 6921 s32i.n a6, a1, 8 4000250a: 4901 s32i.n a4, a1, 0 4000250c: 5d04 mov.n a5, a4 4000250e: 426101 s32i a4, a1, 4 40002511: c59eff call0 ets_vprintf ; 0x40001f00 40002514: 386c l32i.n a3, a12, 24 40002516: 2951 s32i.n a2, a1, 20 40002518: 9c13 beqz.n a3, 0x4000252d 4000251a: 222c09 l32i a2, a12, 36 4000251d: c00300 callx0 a3 40002520: 0851 l32i.n a0, a1, 20 40002522: c841 l32i.n a12, a1, 16 40002524: 2d00 mov.n a2, a0 40002526: 0831 l32i.n a0, a1, 12 ; return address 40002528: 12c140 addi a1, a1, 64 ; restore stack 4000252b: 0df0 ret.n 4000252d: c841 l32i.n a12, a1, 16 ; restore a12 4000252f: 0831 l32i.n a0, a1, 12 ; return address 40002531: 12c140 addi a1, a1, 64 ; restore stack 40002534: 0df0 ret.n 40002536: 0c02 movi.n a2, 0 ; return ( 0 ); 40002538: c841 l32i.n a12, a1, 16 ; restore a12 4000253a: 0831 l32i.n a0, a1, 12 ; return address 4000253c: 12c140 addi a1, a1, 64 ; restore stack 4000253f: 0df0 ret.n 40002541: 000000 ets_uart_printf: 40002544: 9d03 mov.n a9, a3 40002546: 12c1d0 addi a1, a1, -48 40002549: 7991 s32i.n a7, a1, 36 4000254b: 6981 s32i.n a6, a1, 32 4000254d: 3d02 mov.n a3, a2 4000254f: 2941 s32i.n a2, a1, 16 40002551: 4961 s32i.n a4, a1, 24 40002553: 5971 s32i.n a5, a1, 28 40002555: 0931 s32i.n a0, a1, 12 40002557: 82c110 addi a8, a1, 16 4000255a: 8911 s32i.n a8, a1, 4 4000255c: 9951 s32i.n a9, a1, 20 4000255e: 8901 s32i.n a8, a1, 0 40002560: 0c40 movi.n a0, 4 40002562: 5d08 mov.n a5, a8 40002564: 4d08 mov.n a4, a8 40002566: 21b3ff l32r a2, [sub_1dcc] ; [0x40001dcc] 0x40002434 40002569: 0921 s32i.n a0, a1, 8 4000256b: 6d00 mov.n a6, a0 4000256d: 0599ff call0 ets_vprintf ; 0x40001f00 40002570: 0831 l32i.n a0, a1, 12 40002572: 12c130 addi a1, a1, 48 40002575: 0df0 ret.n 40002577: 00 ; never called ets_external_printf: 40002578: a1cefd l32r a10, [0x3fffdd3c] ; 0x40001cb0 4000257b: 12c1c0 addi a1, a1, -64 4000257e: 49a1 s32i.n a4, a1, 40 40002580: 59b1 s32i.n a5, a1, 44 40002582: 69c1 s32i.n a6, a1, 48 40002584: 79d1 s32i.n a7, a1, 52 40002586: 0931 s32i.n a0, a1, 12 40002588: 2981 s32i.n a2, a1, 32 4000258a: 3991 s32i.n a3, a1, 36 4000258c: a85a l32i.n a10, a10, 20 4000258e: 3d02 mov.n a3, a2 40002590: 9c0a beqz.n a10, 0x400025a4 40002592: 41c7fd l32r a4, [0x3fffdd3c] ; 0x40001cb0 40002595: 22c420 addi a2, a4, 32 40002598: 32c41c addi a3, a4, 28 4000259b: 42c424 addi a4, a4, 36 4000259e: c00a00 callx0 a10 400025a1: 322108 l32i a3, a1, 32 400025a4: 21aaff l32r a2, [sub_24a8] ; [0x400024a8] 0x4000244c 400025a7: 42c120 addi a4, a1, 32 400025aa: 0c46 movi.n a6, 4 400025ac: 6921 s32i.n a6, a1, 8 400025ae: 4901 s32i.n a4, a1, 0 400025b0: 5d04 mov.n a5, a4 400025b2: 426101 s32i a4, a1, 4 400025b5: 8594ff call0 ets_vprintf ; 0x40001f00 400025b8: 31befd l32r a3, [0x3fffdd3c] ; 0x40001cb0 400025bb: 2941 s32i.n a2, a1, 16 400025bd: 4863 l32i.n a4, a3, 24 400025bf: 0831 l32i.n a0, a1, 12 400025c1: 8cf4 beqz.n a4, 0x400025d4 400025c3: 2893 l32i.n a2, a3, 36 400025c5: c00400 callx0 a4 400025c8: 0841 l32i.n a0, a1, 16 400025ca: 2d00 mov.n a2, a0 400025cc: 0831 l32i.n a0, a1, 12 400025ce: 12c140 addi a1, a1, 64 400025d1: 0df0 ret.n 400025d3: 00 400025d4: 12c140 addi a1, a1, 64 400025d7: 0df0 ret.n 400025d9: 000000 400025dc: ffdfffff ; l32r ; Called once during startup. ; 60000700 are RTC registers rtc_get_reset_reason: 400025e0: 41dffa l32r a4, [0x60000600] ; 0x4000115c 400025e3: c02000 memw 400025e6: 222445 l32i a2, a4, 0x114 ; RTC 400025e9: a1fcff l32r a10, [0xffdfffff] ; 0x400025dc 400025ec: 202034 extui a2, a2, 0, 4 400025ef: 665231 bnei a2, 5, 0x40002624 400025f2: c02000 memw 400025f5: 322446 l32i a3, a4, 0x118 ; RTC 400025f8: 303854 extui a3, a3, 8, 6 400025fb: 261336 beqi a3, 1, 0x40002635 400025fe: c02000 memw 40002601: 61f6ff l32r a6, [0xffdfffff] ; 0x400025dc 40002604: 822446 l32i a8, a4, 0x118 ; RTC 40002607: 0c07 movi.n a7, 0 40002609: 808854 extui a8, a8, 8, 6 4000260c: 82c8f8 addi a8, a8, -8 4000260f: 802793 movnez a2, a7, a8 40002612: c02000 memw 40002615: 522442 l32i a5, a4, 0x108 ; RTC 40002618: 605510 and a5, a5, a6 4000261b: c02000 memw 4000261e: 526442 s32i a5, a4, 0x108 ; RTC 40002621: 0df0 ret.n 40002623: 00 40002624: c02000 memw 40002627: 922442 l32i a9, a4, 0x108 ; RTC 4000262a: a09910 and a9, a9, a10 4000262d: c02000 memw 40002630: 926442 s32i a9, a4, 0x108 ; RTC 40002633: 0df0 ret.n 40002635: 31e9ff l32r a3, [0xffdfffff] ; 0x400025dc 40002638: 0c62 movi.n a2, 6 4000263a: c02000 memw 4000263d: b22442 l32i a11, a4, 0x108 ; RTC 40002640: 30bb10 and a11, a11, a3 40002643: c02000 memw 40002646: b26442 s32i a11, a4, 0x108 ; RTC 40002649: 0df0 ret.n 4000264b: 00 ; Interesting, we get a soft reset by setting a bit ; in 0x60000700 (the first RTC clock register) software_reset: 4000264c: 4156f7 l32r a4, [0x80000000] ; 0x400003a4 4000264f: 31c3fa l32r a3, [0x60000600] ; 0x4000115c 40002652: c02000 memw 40002655: 222340 l32i a2, a3, 0x100 40002658: 402220 or a2, a2, a4 4000265b: c02000 memw 4000265e: 226340 s32i a2, a3, 0x100 40002661: 0df0 ret.n 40002663: 00 40002664: 000186a0 ; l32r rtc_set_sleep_mode: 40002668: 61bdfa l32r a6, [0x60000600] ; 0x4000115c 4000266b: c02000 memw 4000266e: 71fdff l32r a7, [0x000186a0] ; 0x40002664 40002671: 822647 l32i a8, a6, 0x11c 40002674: 707382 mull a7, a3, a7 40002677: 8a77 add.n a7, a7, a8 40002679: c02000 memw 4000267c: 726641 s32i a7, a6, 0x104 4000267f: c02000 memw 40002682: 426646 s32i a4, a6, 0x118 40002685: c02000 memw 40002688: 522642 l32i a5, a6, 0x108 4000268b: 205520 or a5, a5, a2 4000268e: c02000 memw 40002691: 526642 s32i a5, a6, 0x108 40002694: 0df0 ret.n 40002696: 0000 40002698: 3fffdd64 ; l32r dtm_params_init: 4000269c: 42a044 movi a4, 68 4000269f: 12c1f0 addi a1, a1, -16 400026a2: 026102 s32i a0, a1, 8 400026a5: 326101 s32i a3, a1, 4 400026a8: 2901 s32i.n a2, a1, 0 400026aa: 0c03 movi.n a3, 0 400026ac: 21fbff l32r a2, [0x3fffdd64] ; 0x40002698 400026af: 451fff call0 ets_memset ; 0x400018a4 400026b2: 0811 l32i.n a0, a1, 4 400026b4: 21f9ff l32r a2, [0x3fffdd64] ; 0x40002698 400026b7: 3801 l32i.n a3, a1, 0 400026b9: 39f2 s32i.n a3, a2, 60 400026bb: 026210 s32i a0, a2, 64 400026be: 0821 l32i.n a0, a1, 8 400026c0: 12c110 addi a1, a1, 16 400026c3: 0df0 ret.n 400026c5: 000000 dtm_set_intr_mask: 400026c8: 31f4ff l32r a3, [0x3fffdd64] ; 0x40002698 400026cb: 29e3 s32i.n a2, a3, 56 400026cd: 0df0 ret.n 400026cf: 00 dtm_get_intr_mask: 400026d0: 21f2ff l32r a2, [0x3fffdd64] ; 0x40002698 400026d3: 28e2 l32i.n a2, a2, 56 400026d5: 0df0 ret.n 400026d7: 00 400026d8: 3e000000 ; l32r dtm_set_params: 400026dc: 91efff l32r a9, [0x3fffdd64] ; 0x40002698 400026df: 8d05 mov.n a8, a5 ; ( 3fffdd64 ) 400026e1: 12c1d0 addi a1, a1, -48 400026e4: 6941 s32i.n a6, a1, 16 400026e6: c991 s32i.n a12, a1, 36 400026e8: 0981 s32i.n a0, a1, 32 400026ea: d9a1 s32i.n a13, a1, 40 400026ec: 51fbff l32r a5, [0x3e000000] ; 0x400026d8 400026ef: dd02 mov.n a13, a2 400026f1: 5961 s32i.n a5, a1, 24 400026f3: 29c9 s32i.n a2, a9, 48 400026f5: 8951 s32i.n a8, a1, 20 400026f7: 02a3e8 movi a0, 0x3e8 400026fa: cd04 mov.n a12, a4 400026fc: c9b9 s32i.n a12, a9, 44 400026fe: 000382 mull a0, a3, a0 40002701: 0c04 movi.n a4, 0 40002703: 4971 s32i.n a4, a1, 28 40002705: 0931 s32i.n a0, a1, 12 40002707: 09a9 s32i.n a0, a9, 40 40002709: 07e223 bbsi a2, 0, 0x40002730 4000270c: 2d00 mov.n a2, a0 4000270e: 2989 s32i.n a2, a9, 32 40002710: 17ed48 bbsi a13, 1, 0x4000275c 40002713: 0881 l32i.n a0, a1, 32 40002715: d8a1 l32i.n a13, a1, 40 40002717: 0c07 movi.n a7, 0 40002719: 8851 l32i.n a8, a1, 20 4000271b: c999 s32i.n a12, a9, 36 4000271d: a841 l32i.n a10, a1, 16 4000271f: a959 s32i.n a10, a9, 20 40002721: c891 l32i.n a12, a1, 36 40002723: 1b68 addi.n a6, a8, 1 40002725: 806783 moveqz a6, a7, a8 40002728: 69d9 s32i.n a6, a9, 52 4000272a: 12c130 addi a1, a1, 48 4000272d: 0df0 ret.n 4000272f: 00 40002730: c5ecfd call0 rand ; 0x40000600 40002733: c5bb0b call0 __floatsidf ; 0x4000e2f0 40002736: 226101 s32i a2, a1, 4 40002739: 326100 s32i a3, a1, 0 4000273c: 2831 l32i.n a2, a1, 12 4000273e: 85ba0b call0 __floatunsidf ; 0x4000e2e8 40002741: 5d03 mov.n a5, a3 40002743: 4d02 mov.n a4, a2 40002745: 3801 l32i.n a3, a1, 0 40002747: 2811 l32i.n a2, a1, 4 40002749: 451a0a call0 __muldf3 ; 0x4000c8f0 4000274c: 5861 l32i.n a5, a1, 24 4000274e: 4871 l32i.n a4, a1, 28 40002750: c5190a call0 __muldf3 ; 0x4000c8f0 40002753: c55a0a call0 __fixunsdfsi ; 0x4000cd00 40002756: 91d0ff l32r a9, [0x3fffdd64] ; 0x40002698 40002759: 46ecff j 0x4000270e 4000275c: 05eafd call0 rand ; 0x40000600 4000275f: 05b90b call0 __floatsidf ; 0x4000e2f0 40002762: 20d220 or a13, a2, a2 40002765: 326102 s32i a3, a1, 8 40002768: 2d0c mov.n a2, a12 4000276a: c5b70b call0 __floatunsidf ; 0x4000e2e8 4000276d: 4d02 mov.n a4, a2 4000276f: 5d03 mov.n a5, a3 40002771: 2d0d mov.n a2, a13 40002773: 3821 l32i.n a3, a1, 8 40002775: 85170a call0 __muldf3 ; 0x4000c8f0 40002778: 5861 l32i.n a5, a1, 24 4000277a: 4871 l32i.n a4, a1, 28 4000277c: 05170a call0 __muldf3 ; 0x4000c8f0 4000277f: 05580a call0 __fixunsdfsi ; 0x4000cd00 40002782: 0c0d movi.n a13, 0 40002784: c1c5ff l32r a12, [0x3fffdd64] ; 0x40002698 40002787: 0851 l32i.n a0, a1, 20 40002789: 299c s32i.n a2, a12, 36 4000278b: 1bb0 addi.n a11, a0, 1 4000278d: 00bd83 moveqz a11, a13, a0 40002790: 2841 l32i.n a2, a1, 16 40002792: 0881 l32i.n a0, a1, 32 40002794: 295c s32i.n a2, a12, 20 40002796: b9dc s32i.n a11, a12, 52 40002798: d8a1 l32i.n a13, a1, 40 4000279a: c891 l32i.n a12, a1, 36 4000279c: 12c130 addi a1, a1, 48 4000279f: 0df0 ret.n 400027a1: 000000 save_rxbcn_mactime: 400027a4: 31bdff l32r a3, [0x3fffdd64] ; 0x40002698 400027a7: 2963 s32i.n a2, a3, 24 400027a9: 0df0 ret.n 400027ab: 00 save_tsf_us: 400027ac: 31bbff l32r a3, [0x3fffdd64] ; 0x40002698 400027af: 2973 s32i.n a2, a3, 28 400027b1: 0df0 ret.n 400027b3: 00 400027b4: 40002870 ; l32r - rtc_enter_sleep ets_enter_sleep: 400027b8: 21ffff l32r a2, [rtc_enter_sleep] ; [0x40002870] 0x400027b4 400027bb: 32a000 movi a3, 0 ; 0 400027be: 12c1f0 addi a1, a1, -16 ; stack 400027c1: 026100 s32i a0, a1, 0 ; return 400027c4: 855ffe call0 ets_set_idle_cb ; 0x40000dc0 400027c7: 022100 l32i a0, a1, 0 ; return 400027ca: 12c110 addi a1, a1, 16 ; stack 400027cd: 0df0 ret.n 400027cf: 00 400027d0: 400027b8 ; l32r sub_27d4: 400027d4: 12c1e0 addi a1, a1, -32 400027d7: c941 s32i.n a12, a1, 16 400027d9: c1afff l32r a12, [0x3fffdd64] ; 0x40002698 400027dc: 222c10 l32i a2, a12, 64 400027df: 0931 s32i.n a0, a1, 12 400027e1: 8c12 beqz.n a2, 0x400027e6 400027e3: c00200 callx0 a2 400027e6: 28ec l32i.n a2, a12, 56 400027e8: 8c12 beqz.n a2, 0x400027ed 400027ea: c57bfe call0 ets_isr_unmask ; 0x40000fa8 400027ed: 2d0c mov.n a2, a12 400027ef: 055500 call0 ets_timer_disarm ; 0x40002d40 400027f2: 08dc l32i.n a0, a12, 52 400027f4: 261022 beqi a0, 1, 0x4000281a 400027f7: 2d0c mov.n a2, a12 400027f9: 31f5ff l32r a3, [ets_enter_sleep] ; [0x400027b8] 0x400027d0 400027fc: 0c04 movi.n a4, 0 400027fe: 854400 call0 ets_timer_setfn ; 0x40002c48 40002801: 08bc l32i.n a0, a12, 44 40002803: 48cc l32i.n a4, a12, 48 40002805: 0921 s32i.n a0, a1, 8 40002807: 17e426 bbsi a4, 1, 0x40002831 4000280a: 3d00 mov.n a3, a0 4000280c: 399c s32i.n a3, a12, 36 4000280e: 2d0c mov.n a2, a12 40002810: 0c04 movi.n a4, 0 40002812: 054b00 call0 ets_timer_arm ; 0x40002cc4 40002815: 08dc l32i.n a0, a12, 52 40002817: f62009 bgeui a0, 2, 0x40002824 4000281a: c841 l32i.n a12, a1, 16 4000281c: 0831 l32i.n a0, a1, 12 4000281e: 12c120 addi a1, a1, 32 40002821: 0df0 ret.n 40002823: 00 40002824: 0b50 addi.n a5, a0, -1 40002826: 59dc s32i.n a5, a12, 52 40002828: c841 l32i.n a12, a1, 16 4000282a: 0831 l32i.n a0, a1, 12 4000282c: 12c120 addi a1, a1, 32 4000282f: 0df0 ret.n 40002831: c5dcfd call0 rand ; 0x40000600 40002834: 85ab0b call0 __floatsidf ; 0x4000e2f0 40002837: 2911 s32i.n a2, a1, 4 40002839: 3901 s32i.n a3, a1, 0 4000283b: 2821 l32i.n a2, a1, 8 4000283d: 85aa0b call0 __floatunsidf ; 0x4000e2e8 40002840: 5d03 mov.n a5, a3 40002842: 4d02 mov.n a4, a2 40002844: 3801 l32i.n a3, a1, 0 40002846: 2811 l32i.n a2, a1, 4 40002848: 450a0a call0 __muldf3 ; 0x4000c8f0 4000284b: 51a3ff l32r a5, [0x3e000000] ; 0x400026d8 4000284e: 0c04 movi.n a4, 0 40002850: c5090a call0 __muldf3 ; 0x4000c8f0 40002853: c54a0a call0 __fixunsdfsi ; 0x4000cd00 40002856: 3d02 mov.n a3, a2 40002858: 06ecff j 0x4000280c 4000285b: 00 4000285c: 000fffff ; l32r 40002860: 3fffc700 ; l32r 40002864: fffed400 ; l32r 40002868: 00100000 ; l32r 4000286c: 3fe00000 ; l32r rtc_enter_sleep: 40002870: 42a000 movi a4, 0 40002873: 12c1d0 addi a1, a1, -48 40002876: 026107 s32i a0, a1, 28 40002879: c26108 s32i a12, a1, 32 4000287c: e9a1 s32i.n a14, a1, 40 4000287e: d991 s32i.n a13, a1, 36 40002880: d1d1f9 l32r a13, [0x60000200] ; 0x40000fc4 40002883: e185ff l32r a14, [0x3fffdd64] ; 0x40002698 40002886: c135fa l32r a12, [0x60000600] ; 0x4000115c 40002889: c02000 memw 4000288c: 426c44 s32i a4, a12, 0x110 4000288f: 0c93 movi.n a3, 9 40002891: c02000 memw 40002894: 326d5b s32i a3, a13, 0x16c 40002897: 21c3f6 l32r a2, [0x80000000] ; 0x400003a4 4000289a: c02000 memw 4000289d: 022d5b l32i a0, a13, 0x16c 400028a0: 200020 or a0, a0, a2 400028a3: c02000 memw 400028a6: 026d5b s32i a0, a13, 0x16c 400028a9: 28ee l32i.n a2, a14, 56 400028ab: 162200 beqz a2, 0x400028b1 400028ae: 856efe call0 ets_isr_mask ; 0x40000f98 400028b1: c54302 call0 gpio_input_get ; 0x40004cf0 400028b4: 27e20e bbsi a2, 2, 0x400028c6 400028b7: 22a002 movi a2, 2 400028ba: 32a005 movi a3, 5 400028bd: 055d02 call0 gpio_pin_wakeup_enable ; 0x40004e90 400028c0: c60200 j 0x400028cf 400028c3: 000000 400028c6: 22a002 movi a2, 2 400028c9: 32a004 movi a3, 4 400028cc: 055c02 call0 gpio_pin_wakeup_enable ; 0x40004e90 400028cf: 72a018 movi a7, 24 400028d2: 0c16 movi.n a6, 1 400028d4: c02000 memw 400028d7: 726c46 s32i a7, a12, 0x118 400028da: c02000 memw 400028dd: 626c6a s32i a6, a12, 0x1a8 400028e0: c02000 memw 400028e3: 522d5c l32i a5, a13, 0x170 400028e6: f7f50a bbsi a5, 31, 0x400028f4 400028e9: c02000 memw 400028ec: 822d5c l32i a8, a13, 0x170 400028ef: 3df0 nop.n 400028f1: f778f4 bbci a8, 31, 0x400028e9 400028f4: b1daff l32r a11, [0x000fffff] ; 0x4000285c 400028f7: c02000 memw 400028fa: 28fe l32i.n a2, a14, 60 400028fc: 922d5c l32i a9, a13, 0x170 400028ff: a1d8ff l32r a10, [0x3fffc700] ; 0x40002860 40002902: b09910 and a9, a9, a11 40002905: 9961 s32i.n a9, a1, 24 40002907: 990a s32i.n a9, a10, 0 40002909: 8c12 beqz.n a2, 0x4000290e 4000290b: c00200 callx0 a2 4000290e: 08ce l32i.n a0, a14, 48 40002910: d8ae l32i.n a13, a14, 40 40002912: 076002 bbci a0, 0, 0x40002918 40002915: c61e00 j 0x40002994 40002918: d98e s32i.n a13, a14, 32 4000291a: 287e l32i.n a2, a14, 28 4000291c: 385e l32i.n a3, a14, 20 4000291e: 202dc0 sub a2, a13, a2 40002921: d03311 slli a3, a3, 3 40002924: 0c3d movi.n a13, 3 40002926: 3022c0 sub a2, a2, a3 40002929: 3022c0 sub a2, a2, a3 4000292c: 2022a0 addx4 a2, a2, a2 4000292f: 31cdff l32r a3, [0xfffed400] ; 0x40002864 40002932: a02211 slli a2, a2, 6 40002935: 3a22 add.n a2, a2, a3 40002937: 3861 l32i.n a3, a1, 24 40002939: 058e0b call0 __udivsi3 ; 0x4000e21c 4000293c: 82aecf movi a8, 0xfffffecf 4000293f: c02000 memw 40002942: 922e11 l32i a9, a14, 68 40002945: 722c47 l32i a7, a12, 0x11c 40002948: 1b99 addi.n a9, a9, 1 4000294a: 926e11 s32i a9, a14, 68 4000294d: 7a72 add.n a7, a2, a7 4000294f: 8a77 add.n a7, a7, a8 40002951: c02000 memw 40002954: 726c41 s32i a7, a12, 0x104 40002957: c02000 memw 4000295a: 622c49 l32i a6, a12, 0x124 4000295d: d06620 or a6, a6, a13 40002960: c02000 memw 40002963: 626c49 s32i a6, a12, 0x124 40002966: c02000 memw 40002969: 522c48 l32i a5, a12, 0x120 4000296c: d05520 or a5, a5, a13 4000296f: c02000 memw 40002972: 526c48 s32i a5, a12, 0x120 40002975: 41bcff l32r a4, [0x00100000] ; 0x40002868 40002978: c02000 memw 4000297b: 322c42 l32i a3, a12, 0x108 4000297e: 403320 or a3, a3, a4 40002981: c02000 memw 40002984: d891 l32i.n a13, a1, 36 40002986: 326c42 s32i a3, a12, 0x108 40002989: e8a1 l32i.n a14, a1, 40 4000298b: c881 l32i.n a12, a1, 32 4000298d: 0871 l32i.n a0, a1, 28 4000298f: 12c130 addi a1, a1, 48 40002992: 0df0 ret.n 40002994: 85c6fd call0 rand ; 0x40000600 40002997: 0c0a movi.n a10, 0 40002999: 2901 s32i.n a2, a1, 0 4000299b: b1b4ff l32r a11, [0x3fe00000] ; 0x4000286c 4000299e: 2d0d mov.n a2, a13 400029a0: b951 s32i.n a11, a1, 20 400029a2: a9b1 s32i.n a10, a1, 44 400029a4: 05940b call0 __floatunsidf ; 0x4000e2e8 400029a7: 2921 s32i.n a2, a1, 8 400029a9: 3911 s32i.n a3, a1, 4 400029ab: d8b1 l32i.n a13, a1, 44 400029ad: 5851 l32i.n a5, a1, 20 400029af: 4d0d mov.n a4, a13 400029b1: c5f309 call0 __muldf3 ; 0x4000c8f0 400029b4: 2931 s32i.n a2, a1, 12 400029b6: 326104 s32i a3, a1, 16 400029b9: 222100 l32i a2, a1, 0 400029bc: 05930b call0 __floatsidf ; 0x4000e2f0 400029bf: 4d0d mov.n a4, a13 400029c1: 5851 l32i.n a5, a1, 20 400029c3: c5f209 call0 __muldf3 ; 0x4000c8f0 400029c6: 5811 l32i.n a5, a1, 4 400029c8: 4821 l32i.n a4, a1, 8 400029ca: 45f209 call0 __muldf3 ; 0x4000c8f0 400029cd: d831 l32i.n a13, a1, 12 400029cf: 5142ff l32r a5, [0x3e000000] ; 0x400026d8 400029d2: 42a000 movi a4, 0 400029d5: 85f109 call0 __muldf3 ; 0x4000c8f0 400029d8: 4d02 mov.n a4, a2 400029da: 5d03 mov.n a5, a3 400029dc: 2d0d mov.n a2, a13 400029de: 3841 l32i.n a3, a1, 16 400029e0: 45b509 call0 __adddf3 ; 0x4000c538 400029e3: c5310a call0 __fixunsdfsi ; 0x4000cd00 400029e6: dd02 mov.n a13, a2 400029e8: 06cbff j 0x40002918 400029eb: 00 rtc_intr_handler: 400029ec: 12c1f0 addi a1, a1, -16 400029ef: 0911 s32i.n a0, a1, 4 400029f1: 01daf9 l32r a0, [0x60000600] ; 0x4000115c 400029f4: c02000 memw 400029f7: 22204a l32i a2, a0, 0x128 400029fa: 202024 extui a2, a2, 0, 3 400029fd: 2901 s32i.n a2, a1, 0 400029ff: c02000 memw 40002a02: 0c02 movi.n a2, 0 40002a04: 0c03 movi.n a3, 0 40002a06: 022046 l32i a0, a0, 0x118 40002a09: 453bfe call0 ets_set_idle_cb ; 0x40000dc0 40002a0c: c02000 memw 40002a0f: 41d3f9 l32r a4, [0x60000600] ; 0x4000115c 40002a12: 7801 l32i.n a7, a1, 0 40002a14: 622449 l32i a6, a4, 0x124 40002a17: 706620 or a6, a6, a7 40002a1a: c02000 memw 40002a1d: 626449 s32i a6, a4, 0x124 40002a20: 7c85 movi.n a5, -8 40002a22: c02000 memw 40002a25: 322448 l32i a3, a4, 0x120 40002a28: 503310 and a3, a3, a5 40002a2b: c02000 memw 40002a2e: 326448 s32i a3, a4, 0x120 40002a31: 05daff call0 sub_27d4 ; 0x400027d4 40002a34: 0811 l32i.n a0, a1, 4 40002a36: 12c110 addi a1, a1, 16 40002a39: 0df0 ret.n 40002a3b: 00 40002a3c: 400029ec ; l32r ets_rtc_int_register: 40002a40: 12c1f0 addi a1, a1, -16 40002a43: 026100 s32i a0, a1, 0 40002a46: 32aff8 movi a3, -8 40002a49: 21c4f9 l32r a2, [0x60000600] ; 0x4000115c 40002a4c: c02000 memw 40002a4f: 022248 l32i a0, a2, 0x120 40002a52: 300010 and a0, a0, a3 40002a55: c02000 memw 40002a58: 31f9ff l32r a3, [rtc_intr_handler] ; [0x400029ec] 0x40002a3c 40002a5b: 026248 s32i a0, a2, 0x120 40002a5e: 0c04 movi.n a4, 0 40002a60: 0c32 movi.n a2, 3 40002a62: 4552fe call0 ets_isr_attach ; 0x40000f88 40002a65: 0c76 movi.n a6, 7 40002a67: c02000 memw 40002a6a: 51bcf9 l32r a5, [0x60000600] ; 0x4000115c 40002a6d: 422549 l32i a4, a5, 0x124 40002a70: 604420 or a4, a4, a6 40002a73: c02000 memw 40002a76: 426549 s32i a4, a5, 0x124 40002a79: 0c82 movi.n a2, 8 40002a7b: c552fe call0 ets_isr_unmask ; 0x40000fa8 40002a7e: 0801 l32i.n a0, a1, 0 40002a80: 12c110 addi a1, a1, 16 40002a83: 0df0 ret.n 40002a85: 000000 ; A bunch of wrappers around various string routines. ; As near as I can see, these are totally pointless. ; They simply save space on the stack and then save a0 ; in order to make the call to the wrapped routine. ; arguments are in a2 (and a3 sometimes) ; result gets returned in a2 ets_strcpy: 40002a88: 12c1f0 addi a1, a1, -16 40002a8b: 0901 s32i.n a0, a1, 0 40002a8d: 854309 call0 strcpy ; 0x4000bec8 40002a90: 0801 l32i.n a0, a1, 0 40002a92: 12c110 addi a1, a1, 16 40002a95: 0df0 ret.n 40002a97: 00 ets_strncpy: 40002a98: 12c1f0 addi a1, a1, -16 40002a9b: 0901 s32i.n a0, a1, 0 40002a9d: 056009 call0 strncpy ; 0x4000c0a0 40002aa0: 0801 l32i.n a0, a1, 0 40002aa2: 12c110 addi a1, a1, 16 40002aa5: 0df0 ret.n 40002aa7: 00 ets_strcmp: 40002aa8: 12c1f0 addi a1, a1, -16 40002aab: 0901 s32i.n a0, a1, 0 40002aad: 853109 call0 strcmp ; 0x4000bdc8 40002ab0: 0801 l32i.n a0, a1, 0 40002ab2: 12c110 addi a1, a1, 16 40002ab5: 0df0 ret.n 40002ab7: 00 ets_strncmp: 40002ab8: 12c1f0 addi a1, a1, -16 40002abb: 0901 s32i.n a0, a1, 0 40002abd: 854e09 call0 strncmp ; 0x4000bfa8 40002ac0: 0801 l32i.n a0, a1, 0 40002ac2: 12c110 addi a1, a1, 16 40002ac5: 0df0 ret.n 40002ac7: 00 ets_strlen: 40002ac8: 12c1f0 addi a1, a1, -16 40002acb: 0901 s32i.n a0, a1, 0 40002acd: c54709 call0 strlen ; 0x4000bf4c 40002ad0: 0801 l32i.n a0, a1, 0 40002ad2: 12c110 addi a1, a1, 16 40002ad5: 0df0 ret.n 40002ad7: 00 ets_strstr: 40002ad8: 12c1f0 addi a1, a1, -16 40002adb: 0901 s32i.n a0, a1, 0 40002add: 05700b call0 strstr ; 0x4000e1e0 40002ae0: 0801 l32i.n a0, a1, 0 40002ae2: 12c110 addi a1, a1, 16 40002ae5: 0df0 ret.n 40002ae7: 00 ets_bzero: 40002ae8: 12c1f0 addi a1, a1, -16 40002aeb: 0901 s32i.n a0, a1, 0 40002aed: 45390b call0 bzero ; 0x4000de84 40002af0: 0801 l32i.n a0, a1, 0 40002af2: 12c110 addi a1, a1, 16 40002af5: 0df0 ret.n 40002af7: 00 ets_str2macaddr: 40002af8: 12c1e0 addi a1, a1, -32 40002afb: e931 s32i.n a14, a1, 12 40002afd: d921 s32i.n a13, a1, 8 40002aff: 2951 s32i.n a2, a1, 20 40002b01: 0901 s32i.n a0, a1, 0 40002b03: c911 s32i.n a12, a1, 4 40002b05: f941 s32i.n a15, a1, 16 40002b07: 30c320 or a12, a3, a3 40002b0a: 20f220 or a15, a2, a2 40002b0d: 020300 l8ui a0, a3, 0 40002b10: 22a009 movi a2, 9 40002b13: 26c002 beqi a0, 32, 0x40002b19 40002b16: 27900a bne a0, a2, 0x40002b24 40002b19: 020c01 l8ui a0, a12, 1 40002b1c: 1bcc addi.n a12, a12, 1 40002b1e: 26c0f7 beqi a0, 32, 0x40002b19 40002b21: 2710f4 beq a0, a2, 0x40002b19 40002b24: d2a000 movi a13, 0 40002b27: 220c00 l8ui a2, a12, 0 40002b2a: 850400 call0 ets_char2xdigit ; 0x40002b74 40002b2d: 20e220 or a14, a2, a2 40002b30: 96d202 bltz a2, 0x40002b61 40002b33: 220c01 l8ui a2, a12, 1 40002b36: c50300 call0 ets_char2xdigit ; 0x40002b74 40002b39: 964202 bltz a2, 0x40002b61 40002b3c: 3bcc addi.n a12, a12, 3 40002b3e: da3f add.n a3, a15, a13 40002b40: c00e11 slli a0, a14, 4 40002b43: 1bdd addi.n a13, a13, 1 40002b45: 0a02 add.n a0, a2, a0 40002b47: 024300 s8i a0, a3, 0 40002b4a: d0d074 extui a13, a13, 0, 8 40002b4d: 666dd6 bnei a13, 6, 0x40002b27 40002b50: 2851 l32i.n a2, a1, 20 40002b52: c811 l32i.n a12, a1, 4 40002b54: d821 l32i.n a13, a1, 8 40002b56: e831 l32i.n a14, a1, 12 40002b58: f841 l32i.n a15, a1, 16 40002b5a: 0801 l32i.n a0, a1, 0 40002b5c: 12c120 addi a1, a1, 32 40002b5f: 0df0 ret.n 40002b61: 0c02 movi.n a2, 0 40002b63: c811 l32i.n a12, a1, 4 40002b65: d821 l32i.n a13, a1, 8 40002b67: e831 l32i.n a14, a1, 12 40002b69: f841 l32i.n a15, a1, 16 40002b6b: 0801 l32i.n a0, a1, 0 40002b6d: 12c120 addi a1, a1, 32 40002b70: 0df0 ret.n 40002b72: 0000 ets_char2xdigit: 40002b74: 52a039 movi a5, 57 40002b77: 62a02f movi a6, 47 40002b7a: 27b602 bgeu a6, a2, 0x40002b80 40002b7d: 27b53f bgeu a5, a2, 0x40002bc0 40002b80: 32a060 movi a3, 96 40002b83: 27b305 bgeu a3, a2, 0x40002b8c 40002b86: 42a066 movi a4, 102 40002b89: 27b409 bgeu a4, a2, 0x40002b96 40002b8c: 4c07 movi.n a7, 64 40002b8e: 27b71f bgeu a7, a2, 0x40002bb1 40002b91: 4c68 movi.n a8, 70 40002b93: 27381a bltu a8, a2, 0x40002bb1 40002b96: 27b602 bgeu a6, a2, 0x40002b9c 40002b99: 27b523 bgeu a5, a2, 0x40002bc0 40002b9c: 4c09 movi.n a9, 64 40002b9e: 27b913 bgeu a9, a2, 0x40002bb5 40002ba1: 5caa movi.n a10, 90 40002ba3: 273a0e bltu a10, a2, 0x40002bb5 40002ba6: 22c2c9 addi a2, a2, -55 40002ba9: 802201 slli a2, a2, 24 40002bac: 202831 srai a2, a2, 24 40002baf: 0df0 ret.n 40002bb1: 7cf2 movi.n a2, -1 40002bb3: 0df0 ret.n 40002bb5: 22c2a9 addi a2, a2, -87 40002bb8: 802201 slli a2, a2, 24 40002bbb: 202831 srai a2, a2, 24 40002bbe: 0df0 ret.n 40002bc0: 22c2d0 addi a2, a2, -48 40002bc3: 802201 slli a2, a2, 24 40002bc6: 202831 srai a2, a2, 24 40002bc9: 0df0 ret.n 40002bcb: 00 ets_getc: 40002bcc: 12c1f0 addi a1, a1, -16 40002bcf: 226100 s32i a2, a1, 0 40002bd2: 026101 s32i a0, a1, 4 40002bd5: c5f800 call0 uart_rx_one_char_block ; 0x40003b64 40002bd8: 022100 l32i a0, a1, 0 40002bdb: 224000 s8i a2, a0, 0 40002bde: 0811 l32i.n a0, a1, 4 40002be0: 12c110 addi a1, a1, 16 40002be3: 0df0 ret.n 40002be5: 000000 ; ets_putc - just a wrapper around uart_tx_one_char() ets_putc: 40002be8: 12c1f0 addi a1, a1, -16 ; Space on stack 40002beb: 0901 s32i.n a0, a1, 0 ; save return 40002bed: 05f400 call0 uart_tx_one_char ; 0x40003b30 40002bf0: 0801 l32i.n a0, a1, 0 ; restore return 40002bf2: 12c110 addi a1, a1, 16 ; restore stack 40002bf5: 0df0 ret.n 40002bf7: 00 ; *********************** start timer stuff *********************8 ; called from sub_2c04 in 3 places (just below) ; writes arg to 6000_0630 ; This is the Timer 2 "alarm" register aka TIMER_FRC2_ALARM ; There are two timers with registers like so. ; One is at 6000_0600, Two is at 6000_0620 ; +0 = load ; +4 = count ; +8 = control ; +c = intack ; +10 = alarm (only timer 2 has this) sub_2bf8: 40002bf8: 3159f9 l32r a3, [0x60000600] ; 0x4000115c 40002bfb: c02000 memw 40002bfe: 29c3 s32i.n a2, a3, 48 ; iobase + 0x30 40002c00: 0df0 ret.n 40002c02: 0000 ; ------------- ; called from 2 places ; -- from timer_insert (just below) ; it fiddles around and then calls the above routine to load ; a value into the Timer 2 alarm register sub_2c04: 40002c04: 12c1f0 addi a1, a1, -16 ; stack 40002c07: 0901 s32i.n a0, a1, 0 ; save 40002c09: 4154f9 l32r a4, [0x60000600] ; 0x4000115c 40002c0c: c02000 memw 40002c0f: 422409 l32i a4, a4, 36 ; read 624 = Timer 2 count 40002c12: 4002c0 sub a0, a2, a4 ; a0 = arg - count 40002c15: 32c0d8 addi a3, a0, -40 ; a3 = arg - count - 40 40002c18: e61311 bgei a3, 1, 0x40002c2d ; arg > (count+40) 40002c1b: a61019 blti a0, 1, 0x40002c38 ; arg < count 40002c1e: 22c22c addi a2, a2, 44 ; bump count by 44 40002c21: 45fdff call0 sub_2bf8 ; 0x40002bf8 40002c24: 0801 l32i.n a0, a1, 0 40002c26: 12c110 addi a1, a1, 16 40002c29: 0df0 ret.n 40002c2b: 0000 40002c2d: 85fcff call0 sub_2bf8 ; 0x40002bf8 - use count as is 40002c30: 0801 l32i.n a0, a1, 0 40002c32: 12c110 addi a1, a1, 16 40002c35: 0df0 ret.n 40002c37: 00 40002c38: 22c428 addi a2, a4, 40 ; bump count by 40 40002c3b: c5fbff call0 sub_2bf8 ; 0x40002bf8 40002c3e: 0801 l32i.n a0, a1, 0 40002c40: 12c110 addi a1, a1, 16 40002c43: 0df0 ret.n 40002c45: 000000 ; ets_timer_setfn ( p, a, b ) ; simply initializes a structure ; (presumably a timer management structure) ; "p" points to the structure ; p + 0 = -1 ; p + 4 = 0 ; p + 8 = 0 ; p + 12 = a ; p + 16 = b ets_timer_setfn: 40002c48: 3932 s32i.n a3, a2, 12 40002c4a: 4942 s32i.n a4, a2, 16 40002c4c: 7cf5 movi.n a5, -1 40002c4e: 0c06 movi.n a6, 0 40002c50: 6912 s32i.n a6, a2, 4 40002c52: 6922 s32i.n a6, a2, 8 40002c54: 5902 s32i.n a5, a2, 0 40002c56: 0df0 ret.n ; timer_insert ( arg ) ; Called from 2 places 40002c58: 3fffddb0 ; l32r 40002c5c: 3fffd6b8 ; l32r 40002c60: 3fffd878 ; l32r timer_insert: 40002c64: 51fdff l32r a5, [0x3fffddb0] ; 0x40002c58 40002c67: 12c1f0 addi a1, a1, -16 ; stack 40002c6a: c911 s32i.n a12, a1, 4 ; save 40002c6c: 0901 s32i.n a0, a1, 0 ; save 40002c6e: 0805 l32i.n a0, a5, 0 40002c70: cd03 mov.n a12, a3 40002c72: bca0 beqz.n a0, 0x40002cb0 40002c74: 0c03 movi.n a3, 0 40002c76: 4810 l32i.n a4, a0, 4 40002c78: 4042c0 sub a4, a2, a4 40002c7b: a61407 blti a4, 1, 0x40002c86 40002c7e: 3d00 mov.n a3, a0 40002c80: 022000 l32i a0, a0, 0 40002c83: 56f0fe bnez a0, 0x40002c76 40002c86: 026c00 s32i a0, a12, 0 40002c89: 226c01 s32i a2, a12, 4 40002c8c: 164302 beqz a3, 0x40002cb4 40002c8f: c903 s32i.n a12, a3, 0 40002c91: 580c l32i.n a5, a12, 0 40002c93: 0801 l32i.n a0, a1, 0 ; restore return 40002c95: c7950f bne a5, a12, 0x40002ca8 ; Trouble ; Format: "%s %s " 40002c98: 21f1ff l32r a2, [0x3fffd6b8] ; 0x40002c5c 40002c9b: 31f1ff l32r a3, [0x3fffd878] ; 0x40002c60 40002c9e: 42a0ad movi a4, 173 40002ca1: 8582ff call0 ets_printf ; 0x400024cc 40002ca4: 06ffff j 0x40002ca4 ; *** spin !!! 40002ca7: 00 40002ca8: c811 l32i.n a12, a1, 4 ; restore 40002caa: 12c110 addi a1, a1, 16 ; stack 40002cad: 0df0 ret.n 40002caf: 00 40002cb0: 0903 s32i.n a0, a3, 0 40002cb2: 2913 s32i.n a2, a3, 4 40002cb4: c905 s32i.n a12, a5, 0 40002cb6: c5f4ff call0 sub_2c04 ; 0x40002c04 - fiddle timer 2 alarm 40002cb9: 06f5ff j 0x40002c91 ; ets_timer_arm ; Called with 3 arguments like so: ; ; call ets_timer_arm ( &wdt_timer, rate, 1 ); ; i.e. ; call ets_timer_arm ( &object, rate, mode ); ; ; The first argument is a pointer to a timer management object ; as set up by timer_setfn, maybe with a call like this: ; ; call timer_setfn ( &wdt_timer, wdt_isr, 0 ); ; ; note that timer_setfn sets the first field to -1, ; which makes the object palatable to this routine 40002cbc: 000030ce ; l32r 40002cc0: 0004c4b4 ; l32r ets_timer_arm: 40002cc4: 12c1f0 addi a1, a1, -16 ; stack 40002cc7: c26101 s32i a12, a1, 4 ; save 40002cca: 026100 s32i a0, a1, 0 ; save 40002ccd: 20c220 or a12, a2, a2 ; timer object 40002cd0: 2d03 mov.n a2, a3 ; rate 40002cd2: 080c l32i.n a0, a12, 0 ; first field in object 40002cd4: 3d04 mov.n a3, a4 ; mode 40002cd6: 26000e beqi a0, -1, 0x40002ce8 ; Here if first entry in control structure is NOT -1 ; (this is a "panic" situation). ; Format: "%s %s\n" ; ; ets_printf ( "%s %s\n", "ets_timer.c", 185 ); 40002cd9: 21e0ff l32r a2, [0x3fffd6b8] ; 0x40002c5c 40002cdc: 31e1ff l32r a3, [0x3fffd878] ; 0x40002c60 40002cdf: 42a0b9 movi a4, 185 40002ce2: 857eff call0 ets_printf ; 0x400024cc 40002ce5: 06ffff j 0x40002ce5 ; spin !!! ; Here when we are satified with the timer object 40002ce8: 16c204 beqz a2, 0x40002d38 ; is rate == 0 ? 40002ceb: 41f4ff l32r a4, [0x000030ce] ; 0x40002cbc 40002cee: 3921 s32i.n a3, a1, 8 ; save a3 (mode) on stack 40002cf0: 27b431 bgeu a4, a2, 0x40002d25 ; Here when requested rate is large (greater than 12494) ; The goal with these gyrations is to avoid overflow ; when multiplying the rate by 312500 ; the following does: y = x%4 * 313 + x/4 * 1250 40002cf3: 200014 extui a0, a2, 0, 2 ; last 2 bits of rate 40002cf6: 52a4e2 movi a5, 0x4e2 ; a5 = 1250 40002cf9: 204241 srli a4, a2, 2 ; a4 = a2 / 4 40002cfc: 504482 mull a4, a4, a5 ; a4 *= 1250 40002cff: 52a139 movi a5, 0x139 ; a5 = 313 40002d02: 5000c1 mul16u a0, a0, a5 ; a0 *= 313 40002d05: 4a00 add.n a0, a0, a4 ; a0 += a4 ; One way or the other, we end up here with a0 being the value we ; want to load into the timer register 40002d07: 162300 beqz a3, 0x40002d0d ; test mode 40002d0a: 026c02 s32i a0, a12, 8 ; save result to timer_object + 8 40002d0d: 3d0c mov.n a3, a12 40002d0f: 2113f9 l32r a2, [0x60000600] ; 0x4000115c 40002d12: c02000 memw 40002d15: 2892 l32i.n a2, a2, 36 ; read from iobase + 0x24 (0x624) TIMER_FRC2_COUNT 40002d17: 2a20 add.n a2, a0, a2 ; add our load value from above 40002d19: 85f4ff call0 timer_insert ; 0x40002c64 40002d1c: c811 l32i.n a12, a1, 4 ; restore 40002d1e: 0801 l32i.n a0, a1, 0 ; restore 40002d20: 12c110 addi a1, a1, 16 ; stack 40002d23: 0df0 ret.n ; Here when rate is small (less than 12494) ; we ask for rate "r" ; set a0 = 1 + (r*312500)/1000 ; Note that 80000000 / 256 = 312500 40002d25: 41e6ff l32r a4, [0x0004c4b4] ; 0x40002cc0 40002d28: 32a3e8 movi a3, 0x3e8 ; a3 = 1000 40002d2b: 402282 mull a2, a2, a4 ; a2 *= 312500 40002d2e: c54e0b call0 __udivsi3 ; 0x4000e21c - a2 = a2 / 1000 40002d31: 3821 l32i.n a3, a1, 8 ; restore "mode" 40002d33: 1b02 addi.n a0, a2, 1 ; a0 = 1 + a2 40002d35: 86f3ff j 0x40002d07 40002d38: 0c00 movi.n a0, 0 ; here when rate == 0 40002d3a: 46f2ff j 0x40002d07 40002d3d: 000000 ; called with a pointer to .... ets_timer_disarm: 40002d40: 71c6ff l32r a7, [0x3fffddb0] ; 0x40002c58 40002d43: 5807 l32i.n a5, a7, 0 40002d45: 0c06 movi.n a6, 0 40002d47: acb5 beqz.n a5, 0x40002d76 40002d49: 571209 beq a2, a5, 0x40002d56 40002d4c: 6d05 mov.n a6, a5 40002d4e: 5805 l32i.n a5, a5, 0 40002d50: 5655ff bnez a5, 0x40002d49 40002d53: c60700 j 0x40002d76 40002d56: 9cc5 beqz.n a5, 0x40002d76 40002d58: 8cc6 beqz.n a6, 0x40002d68 40002d5a: 0c03 movi.n a3, 0 40002d5c: 7cf4 movi.n a4, -1 40002d5e: 7805 l32i.n a7, a5, 0 40002d60: 7906 s32i.n a7, a6, 0 40002d62: 4902 s32i.n a4, a2, 0 40002d64: 3922 s32i.n a3, a2, 8 40002d66: 0df0 ret.n 40002d68: 0c08 movi.n a8, 0 40002d6a: 7cf9 movi.n a9, -1 40002d6c: a805 l32i.n a10, a5, 0 40002d6e: a907 s32i.n a10, a7, 0 40002d70: 9902 s32i.n a9, a2, 0 40002d72: 8922 s32i.n a8, a2, 8 40002d74: 0df0 ret.n 40002d76: 0c0b movi.n a11, 0 40002d78: 7cf3 movi.n a3, -1 40002d7a: 3902 s32i.n a3, a2, 0 40002d7c: b922 s32i.n a11, a2, 8 40002d7e: 0df0 ret.n ets_timer_done: 40002d80: 12c1f0 addi a1, a1, -16 40002d83: 0901 s32i.n a0, a1, 0 40002d85: 0802 l32i.n a0, a2, 0 40002d87: 26000e beqi a0, -1, 0x40002d99 ; Format: "%s %s " ; ets_printf ( "%s %s\n", "ets_timer.c", 231 ); 40002d8a: 21b4ff l32r a2, [0x3fffd6b8] ; 0x40002c5c 40002d8d: 31b4ff l32r a3, [0x3fffd878] ; 0x40002c60 40002d90: 42a0e7 movi a4, 231 40002d93: 8573ff call0 ets_printf ; 0x400024cc 40002d96: 06ffff j 0x40002d96 40002d99: 0c03 movi.n a3, 0 40002d9b: 0c04 movi.n a4, 0 40002d9d: 85eaff call0 ets_timer_setfn ; 0x40002c48 40002da0: 0801 l32i.n a0, a1, 0 40002da2: 12c110 addi a1, a1, 16 40002da5: 0df0 ret.n 40002da7: 00 ets_timer_handler_isr: 40002da8: 12c1f0 addi a1, a1, -16 40002dab: c911 s32i.n a12, a1, 4 40002dad: 0901 s32i.n a0, a1, 0 40002daf: e931 s32i.n a14, a1, 12 40002db1: d921 s32i.n a13, a1, 8 40002db3: d1eaf8 l32r a13, [0x60000600] ; 0x4000115c 40002db6: e1a8ff l32r a14, [0x3fffddb0] ; 0x40002c58 40002db9: c02000 memw 40002dbc: c80e l32i.n a12, a14, 0 40002dbe: 089d l32i.n a0, a13, 36 40002dc0: 8cdc beqz.n a12, 0x40002dd1 40002dc2: 281c l32i.n a2, a12, 4 40002dc4: 0022c0 sub a2, a2, a0 40002dc7: a61227 blti a2, 1, 0x40002df2 40002dca: 8c3c beqz.n a12, 0x40002dd1 40002dcc: 281c l32i.n a2, a12, 4 40002dce: 45e3ff call0 sub_2c04 ; 0x40002c04 - fiddle timer 2 alarm 40002dd1: c811 l32i.n a12, a1, 4 40002dd3: d821 l32i.n a13, a1, 8 40002dd5: e831 l32i.n a14, a1, 12 40002dd7: 0801 l32i.n a0, a1, 0 40002dd9: 12c110 addi a1, a1, 16 40002ddc: 0df0 ret.n 40002dde: 0000 40002de0: c02000 memw 40002de3: c80e l32i.n a12, a14, 0 40002de5: 089d l32i.n a0, a13, 36 40002de7: 166cfe beqz a12, 0x40002dd1 40002dea: 481c l32i.n a4, a12, 4 40002dec: 0044c0 sub a4, a4, a0 40002def: e614d7 bgei a4, 1, 0x40002dca 40002df2: 7cf2 movi.n a2, -1 40002df4: c91e s32i.n a12, a14, 4 40002df6: 483c l32i.n a4, a12, 12 40002df8: 492e s32i.n a4, a14, 8 40002dfa: 083c l32i.n a0, a12, 12 40002dfc: 380c l32i.n a3, a12, 0 40002dfe: 326e00 s32i a3, a14, 0 40002e01: 226c00 s32i a2, a12, 0 40002e04: 284c l32i.n a2, a12, 16 40002e06: c00000 callx0 a0 40002e09: 580c l32i.n a5, a12, 0 40002e0b: 082c l32i.n a0, a12, 8 40002e0d: 6605cf bnei a5, -1, 0x40002de0 40002e10: 16c0fc beqz a0, 0x40002de0 40002e13: 281c l32i.n a2, a12, 4 40002e15: 3d0c mov.n a3, a12 40002e17: 002280 add a2, a2, a0 40002e1a: 226c01 s32i a2, a12, 4 40002e1d: 45e4ff call0 timer_insert ; 0x40002c64 40002e20: 06efff j 0x40002de0 40002e23: 00 sub_2e24: 40002e24: 22a01f movi a2, 31 40002e27: 32a000 movi a3, 0 40002e2a: 42a000 movi a4, 0 40002e2d: 12c1f0 addi a1, a1, -16 40002e30: 0901 s32i.n a0, a1, 0 40002e32: 05fffd call0 ets_post ; 0x40000e24 40002e35: 0801 l32i.n a0, a1, 0 40002e37: 12c110 addi a1, a1, 16 40002e3a: 0df0 ret.n ; The little routine that follows is referenced below ; and passed as an argument to ets_task sub_2e3c: 40002e3c: 12c1f0 addi a1, a1, -16 ; stack 40002e3f: 0901 s32i.n a0, a1, 0 ; return 40002e41: 0802 l32i.n a0, a2, 0 40002e43: 8c50 beqz.n a0, 0x40002e4c 40002e45: 0801 l32i.n a0, a1, 0 40002e47: 12c110 addi a1, a1, 16 40002e4a: 0df0 ret.n 40002e4c: 0c02 movi.n a2, 0 40002e4e: 85f5ff call0 ets_timer_handler_isr ; 0x40002da8 40002e51: 0801 l32i.n a0, a1, 0 40002e53: 12c110 addi a1, a1, 16 40002e56: 0df0 ret.n 40002e58: 40002e24 ; l32r 40002e5c: 3feffe00 ; l32r - Poochie 40002e60: 40002e3c ; l32r 40002e64: 3fffddc0 ; l32r ets_timer_init: 40002e68: 22a00a movi a2, 10 ; a2 = 10 40002e6b: 12c1f0 addi a1, a1, -16 ; stack 40002e6e: 31faff l32r a3, [sub_2e24] ; [0x40002e24] 0x40002e58 40002e71: 026100 s32i a0, a1, 0 ; return 40002e74: 0179ff l32r a0, [0x3fffddb0] ; 0x40002c58 40002e77: 42a000 movi a4, 0 ; a4 = 0 40002e7a: 4900 s32i.n a4, a0, 0 ; 0 --> 3fffddb0 40002e7c: 8510fe call0 ets_isr_attach ; 0x40000f88 ; Enable TIMER_FRC2 interrupt 40002e7f: 0c44 movi.n a4, 4 ; a4 = 4 40002e81: 31f6ff l32r a3, [0x3feffe00] ; 0x40002e5c 40002e84: c02000 memw 40002e87: 222381 l32i a2, a3, 0x204 ; INTC_EDGE_EN 40002e8a: 3df0 nop.n 40002e8c: 402220 or a2, a2, a4 ; HW |= 4 40002e8f: c02000 memw 40002e92: 226381 s32i a2, a3, 0x204 ; INTC_EDGE_EN 40002e95: 22a400 movi a2, 0x400 ; a2 = 0x400 40002e98: c510fe call0 ets_isr_unmask ; 0x40000fa8 40002e9b: 21f1ff l32r a2, [sub_2e3c] ; [0x40002e3c] 0x40002e60 40002e9e: 1cf3 movi.n a3, 31 ; a3 = 31 40002ea0: 41f1ff l32r a4, [0x3fffddc0] ; 0x40002e64 40002ea3: 0c45 movi.n a5, 4 ; a5 = 4 40002ea5: 85f2fd call0 ets_task ; 0x40000dd0 40002ea8: 61adf8 l32r a6, [0x60000600] ; 0x4000115c 40002eab: c02000 memw 40002eae: 0c05 movi.n a5, 0 ; a5 = 0; 40002eb0: 59c6 s32i.n a5, a6, 48 ; 0 --> 600000630 40002eb2: 72a088 movi a7, 136 ; a7 = 136 40002eb5: c02000 memw 40002eb8: 79a6 s32i.n a7, a6, 40 ; 136 --> 60000628 40002eba: c02000 memw 40002ebd: 5986 s32i.n a5, a6, 32 ; 0 --> 69999620 40002ebf: 0801 l32i.n a0, a1, 0 ; return 40002ec1: 12c110 addi a1, a1, 16 ; stack 40002ec4: 0df0 ret.n 40002ec6: 0000 40002ec8: 3fffc704 ; l32r ets_delay_us: 40002ecc: 12c1f0 addi a1, a1, -16 ; stack 40002ecf: d26102 s32i a13, a1, 8 ; save a13 40002ed2: c911 s32i.n a12, a1, 4 ; save a12 40002ed4: 0901 s32i.n a0, a1, 0 ; save return 40002ed6: cd02 mov.n a12, a2 40002ed8: c5e50a call0 xthal_get_ccount ; 0x4000dd38 40002edb: 01fbff l32r a0, [0x3fffc704] ; 0x40002ec8 40002ede: 0800 l32i.n a0, a0, 0 ; reads 80 if 80 Mhz 40002ee0: dd02 mov.n a13, a2 40002ee2: c0c082 mull a12, a0, a12 40002ee5: 05e50a call0 xthal_get_ccount ; 0x4000dd38 40002ee8: d032c0 sub a3, a2, a13 40002eeb: c7b308 bgeu a3, a12, 0x40002ef7 ; polling loop does delay 40002eee: 85e40a call0 xthal_get_ccount ; 0x4000dd38 40002ef1: d042c0 sub a4, a2, a13 40002ef4: c734f6 bltu a4, a12, 0x40002eee 40002ef7: c811 l32i.n a12, a1, 4 ; restore a12 40002ef9: d821 l32i.n a13, a1, 8 ; restore a13 40002efb: 0801 l32i.n a0, a1, 0 ; return 40002efd: 12c110 addi a1, a1, 16 ; stack 40002f00: 0df0 ret.n 40002f02: 0000 ; Note that 3fffxxxx is in ETS system memory ets_update_cpu_frequency: 40002f04: 31f1ff l32r a3, [0x3fffc704] ; 0x40002ec8 40002f07: 2903 s32i.n a2, a3, 0 40002f09: 0df0 ret.n 40002f0b: 00 ets_get_cpu_frequency: 40002f0c: 21efff l32r a2, [0x3fffc704] ; 0x40002ec8 40002f0f: 2802 l32i.n a2, a2, 0 40002f11: 0df0 ret.n 40002f13: 00 ; called by WDT routines below ; It just maps its argument to a return value ; ; 3 --> 11 ; 6 --> 12 ; 12 --> 13 ; else 0 ; ; call this wdt_map(arg) sub_2f14: 40002f14: 26320e beqi a2, 3, 0x40002f26 40002f17: 26620f beqi a2, 6, 0x40002f2a 40002f1a: 42c2f4 addi a4, a2, -12 ; a4 = a2 - 12 40002f1d: 0cd3 movi.n a3, 13 ; a3 = 13 40002f1f: 0c02 movi.n a2, 0 ; a2 = 0 40002f21: 402383 moveqz a2, a3, a4 ; a2 = a3 if a4 == 0 40002f24: 0df0 ret.n 40002f26: 0cb2 movi.n a2, 11 ; return 11 40002f28: 0df0 ret.n 40002f2a: 0cc2 movi.n a2, 12 ; return 12 40002f2c: 0df0 ret.n 40002f2e: 0000 ; The following points to a 3 word object wdt_info ; +0 = mode ; +4 = A ; +8 = B ; Watchdog timer registers: ; ; +300 = 60000900 = WD_CTRL ; +304 = 60000904 = WD_R1 ; +308 = 60000908 = WD_R2 ; +30C = 6000090C = WD_x (apparently never used) ; +310 = 60000910 = WD_y ; +314 = 60000914 = WD_FEED ; +318 = 60000918 = WD_z 40002f30: 3fffc708 ; l32r - wdt_info ets_wdt_get_mode: 40002f34: 21ffff l32r a2, [0x3fffc708] ; 0x40002f30 40002f37: 2802 l32i.n a2, a2, 0 ; return wdt_info.mode 40002f39: 0df0 ret.n 40002f3b: 00 ; called from wrapper below, used as an ISR. ; wdt_xxx ( arg ) sub_2f3c: 40002f3c: 12c1f0 addi a1, a1, -16 40002f3f: 0901 s32i.n a0, a1, 0 40002f41: 05ffff call0 ets_wdt_get_mode ; 0x40002f34 40002f44: 42a073 movi a4, 115 ; 0x73 40002f47: 0185f8 l32r a0, [0x60000600] ; 0x4000115c 40002f4a: 261212 beqi a2, 1, 0x40002f60 ; arg == 1 40002f4d: 662208 bnei a2, 2, 0x40002f59 ; arg != 2 ; arg == 0 ?? 40002f50: c02000 memw 40002f53: 2220c4 l32i a2, a0, 0x310 ; WD_y 40002f56: 26121a beqi a2, 1, 0x40002f74 40002f59: 0801 l32i.n a0, a1, 0 ; return 40002f5b: 12c110 addi a1, a1, 16 40002f5e: 0df0 ret.n ; arg == 1 40002f60: c02000 memw 40002f63: 4260c5 s32i a4, a0, 0x314 ; WD_FEED = 0x73 40002f66: c02000 memw 40002f69: 3220c4 l32i a3, a0, 0x310 ; WD_y 40002f6c: 0801 l32i.n a0, a1, 0 40002f6e: 12c110 addi a1, a1, 16 40002f71: 0df0 ret.n 40002f73: 00 ; here when WD_y == 1 40002f74: c02000 memw 40002f77: 4260c6 s32i a4, a0, 0x318 ; WD_z = 0x73 40002f7a: c02000 memw 40002f7d: 4260c5 s32i a4, a0, 0x314 ; WD_FEED = 0x73 40002f80: 0801 l32i.n a0, a1, 0 40002f82: 12c110 addi a1, a1, 16 40002f85: 0df0 ret.n 40002f87: 00 ; wdt_isr () ; subroutine, wrapper on above ; used in two places ; -- handed to ets_timer_setfn () in ets_wdt_enable ( 1, y, z ) ; -- handed to ets_isr_attach ( 8, wdt_isr, 0 ) in ets_wdt_init() ; ; Note that the WDT interrupt is 8 ( with mask 0x100 ) sub_2f88: 40002f88: 12c1f0 addi a1, a1, -16 40002f8b: 0901 s32i.n a0, a1, 0 40002f8d: c5faff call0 sub_2f3c ; 0x40002f3c 40002f90: 0801 l32i.n a0, a1, 0 40002f92: 12c110 addi a1, a1, 16 40002f95: 0df0 ret.n 40002f97: 00 ; wdt_timer is a pointer to a 20 byte timer management structure 40002f98: 40002f88 ; l32r - wdt_isr () 40002f9c: 3fffdde0 ; l32r - wdt_timer ; ets_wdt_enable ( mode, y, z ) ets_wdt_enable: 40002fa0: 12c1f0 addi a1, a1, -16 ; stack 40002fa3: d921 s32i.n a13, a1, 8 ; save 40002fa5: 0901 s32i.n a0, a1, 0 ; save 40002fa7: e931 s32i.n a14, a1, 12 ; save 40002fa9: c911 s32i.n a12, a1, 4 ; save 40002fab: ed03 mov.n a14, a3 ; Y 40002fad: 31e0ff l32r a3, [0x3fffc708] ; 0x40002f30 40002fb0: cd02 mov.n a12, a2 ; mode 40002fb2: 022300 l32i a0, a3, 0 ; wdt_info.mode 40002fb5: 40d420 or a13, a4, a4 ; Z 40002fb8: 662008 bnei a0, 2, 0x40002fc4 ; Z != 2 40002fbb: 22a100 movi a2, 0x100 ; ets_isr_mask ( 0x100 ) 40002fbe: 85fdfd call0 ets_isr_mask ; 0x40000f98 - disable interrupts 40002fc1: 31dbff l32r a3, [0x3fffc708] ; 0x40002f30 ; The last 2 arguments just get saved in wdt_info 40002fc4: d923 s32i.n a13, a3, 8 ; wdt_info.B = Z 40002fc6: e913 s32i.n a14, a3, 4 ; wdt_info.A = Y ; The a14 value may be the rate in some form. ; (it gets divided by 1024 for mode 1 and passed to ets_timer_arm() ) 40002fc8: 7ce6 movi.n a6, -2 40002fca: 0164f8 l32r a0, [0x60000600] ; 0x4000115c 40002fcd: c02000 memw 40002fd0: 5220c0 l32i a5, a0, 0x300 ; WD_CTRL 40002fd3: 605510 and a5, a5, a6 40002fd6: c02000 memw 40002fd9: 5260c0 s32i a5, a0, 0x300 ; WD_CTRL 40002fdc: 0b4c addi.n a4, a12, -1 ; mode is in a12 40002fde: 16a40b beqz a4, 0x4000309c ; mode == 1 40002fe1: 262c25 beqi a12, 2, 0x4000300a ; mode == 2 40002fe4: 264c22 beqi a12, 4, 0x4000300a ; mode == 4 40002fe7: 263c75 beqi a12, 3, 0x40003060 ; mode == 3 ; mode == 0 (and everything else) falls through 40002fea: 0c18 movi.n a8, 1 ; a8 = 1 40002fec: c02000 memw 40002fef: 7220c0 l32i a7, a0, 0x300 ; WD_CTRL 40002ff2: 807720 or a7, a7, a8 ; a7 |= 1 40002ff5: c02000 memw 40002ff8: d821 l32i.n a13, a1, 8 ; restore 40002ffa: e831 l32i.n a14, a1, 12 ; restore 40002ffc: c903 s32i.n a12, a3, 0 ; wdt_info.mode = mode 40002ffe: 7260c0 s32i a7, a0, 0x300 ; WD_CTRL 40003001: c811 l32i.n a12, a1, 4 ; restore 40003003: 0801 l32i.n a0, a1, 0 ; restore 40003005: 12c110 addi a1, a1, 16 ; restore 40003008: 0df0 ret.n ; mode == 2 or 4 4000300a: 92a038 movi a9, 56 ; a9 = 0x38 4000300d: c02000 memw 40003010: a153f8 l32r a10, [0x60000600] ; 0x4000115c 40003013: e02e20 or a2, a14, a14 40003016: 926ac0 s32i a9, a10, 0x300 ; WD_CTRL = 0x38 40003019: 85efff call0 sub_2f14 ; 0x40002f14 - wdt_map ( a2 ) 4000301c: 31c5ff l32r a3, [0x3fffc708] ; 0x40002f30 4000301f: c02000 memw 40003022: 014ef8 l32r a0, [0x60000600] ; 0x4000115c 40003025: 2260c1 s32i a2, a0, 0x304 ; WD_R1 40003028: c02000 memw 4000302b: 2260c2 s32i a2, a0, 0x308 ; WD_R2 4000302e: 662cb8 bnei a12, 2, 0x40002fea ; mode != 2 40003031: 22a100 movi a2, 0x100 40003034: 05f7fd call0 ets_isr_unmask ; 0x40000fa8 - enable interrupts !! 40003037: 02a001 movi a0, 1 4000303a: c02000 memw 4000303d: e147f8 l32r a14, [0x60000600] ; 0x4000115c 40003040: d22ec0 l32i a13, a14, 0x300 ; WD_CTRL 40003043: 00dd20 or a13, a13, a0 40003046: c02000 memw 40003049: 0801 l32i.n a0, a1, 0 4000304b: d26ec0 s32i a13, a14, 0x300 ; WD_CTRL 4000304e: b1b8ff l32r a11, [0x3fffc708] ; 0x40002f30 40003051: d821 l32i.n a13, a1, 8 40003053: c90b s32i.n a12, a11, 0 ; wdt_info.mode = mode 40003055: e831 l32i.n a14, a1, 12 40003057: c811 l32i.n a12, a1, 4 40003059: 12c110 addi a1, a1, 16 4000305c: 0df0 ret.n 4000305e: 0000 ; mode == 3 40003060: c02000 memw 40003063: 313ef8 l32r a3, [0x60000600] ; 0x4000115c 40003066: 3cc2 movi.n a2, 60 40003068: 2263c0 s32i a2, a3, 0x300 ; WD_CTRL 4000306b: 2d0d mov.n a2, a13 4000306d: 45eaff call0 sub_2f14 ; 0x40002f14 - wdt_map ( a2 ) 40003070: 31b0ff l32r a3, [0x3fffc708] ; 0x40002f30 40003073: c02000 memw 40003076: 0139f8 l32r a0, [0x60000600] ; 0x4000115c 40003079: 2260c1 s32i a2, a0, 0x304 ; WD_R1 4000307c: 0c18 movi.n a8, 1 4000307e: c02000 memw 40003081: 7220c0 l32i a7, a0, 0x300 ; WD_CTRL 40003084: 807720 or a7, a7, a8 40003087: c02000 memw 4000308a: d821 l32i.n a13, a1, 8 4000308c: e831 l32i.n a14, a1, 12 4000308e: c903 s32i.n a12, a3, 0 ; wdt_info.mode = mode 40003090: 7260c0 s32i a7, a0, 0x300 ; WD_CTRL 40003093: c811 l32i.n a12, a1, 4 40003095: 0801 l32i.n a0, a1, 0 40003097: 12c110 addi a1, a1, 16 4000309a: 0df0 ret.n ; mode == 1 4000309c: 31bfff l32r a3, [sub_2f88] ; [0x40002f88] 0x40002f98 4000309f: 21bfff l32r a2, [0x3fffdde0] ; 0x40002f9c 400030a2: 42a000 movi a4, 0 ; call timer_setfn ( &wdt_timer, wdt_isr, 0 ); 400030a5: 05baff call0 ets_timer_setfn ; 0x40002c48 400030a8: 21bdff l32r a2, [0x3fffdde0] ; 0x40002f9c 400030ab: e03a41 srli a3, a14, 10 ; a3 = a14 / 2^10 (i.e. 1024) 400030ae: 42a001 movi a4, 1 ; call ets_timer_arm ( &wdt_timer, rate/1024, 1 ); 400030b1: 05c1ff call0 ets_timer_arm ; 0x40002cc4 400030b4: 2d0d mov.n a2, a13 400030b6: c02000 memw 400030b9: e128f8 l32r a14, [0x60000600] ; 0x4000115c 400030bc: 3cc4 movi.n a4, 60 400030be: 426ec0 s32i a4, a14, 0x300 ; WD_CTRL 400030c1: 05e5ff call0 sub_2f14 ; 0x40002f14 - wdt_map ( a2 ) 400030c4: c02000 memw 400030c7: 226ec1 s32i a2, a14, 0x304 ; WD_R1 400030ca: 0c17 movi.n a7, 1 400030cc: c02000 memw 400030cf: 622ec0 l32i a6, a14, 0x300 ; WD_CTRL 400030d2: 706620 or a6, a6, a7 400030d5: c02000 memw 400030d8: 0801 l32i.n a0, a1, 0 400030da: d821 l32i.n a13, a1, 8 400030dc: 5195ff l32r a5, [0x3fffc708] ; 0x40002f30 400030df: 626ec0 s32i a6, a14, 0x300 ; WD_CTRL 400030e2: c905 s32i.n a12, a5, 0 ; wdt_info.mode = mode 400030e4: e831 l32i.n a14, a1, 12 400030e6: c811 l32i.n a12, a1, 4 400030e8: 12c110 addi a1, a1, 16 400030eb: 0df0 ret.n 400030ed: 000000 ; Not called in bootrom ; sets wdt_info.mode = 0; ; returns old value of wdt_info.mode ets_wdt_disable: 400030f0: 7ce6 movi.n a6, -2 ; a6 = -2 = 0xfff..ffe 400030f2: 12c1f0 addi a1, a1, -16 ; stack 400030f5: 0901 s32i.n a0, a1, 0 ; save 400030f7: c911 s32i.n a12, a1, 4 ; save 400030f9: 218dff l32r a2, [0x3fffc708] ; 0x40002f30 400030fc: 4118f8 l32r a4, [0x60000600] ; 0x4000115c 400030ff: c802 l32i.n a12, a2, 0 ; wdt_info.mode 40003101: c02000 memw 40003104: 5224c0 l32i a5, a4, 0x300 ; WD_CTRL 40003107: 605510 and a5, a5, a6 4000310a: c02000 memw 4000310d: 5264c0 s32i a5, a4, 0x300 ; WD_CTRL 40003110: 32a073 movi a3, 115 ; 0x73 40003113: c02000 memw 40003116: 3264c5 s32i a3, a4, 0x314 ; WD_FEED = 0x73 40003119: 0c00 movi.n a0, 0 4000311b: 0902 s32i.n a0, a2, 0 ; wdt_info.mode = 0 4000311d: 261c0f beqi a12, 1, 0x40003130 ; mode == 1 40003120: 262c20 beqi a12, 2, 0x40003144 ; mode == 2 40003123: 2d0c mov.n a2, a12 ; return mode 40003125: 0801 l32i.n a0, a1, 0 40003127: c811 l32i.n a12, a1, 4 40003129: 12c110 addi a1, a1, 16 4000312c: 0df0 ret.n 4000312e: 0000 40003130: 219bff l32r a2, [0x3fffdde0] ; 0x40002f9c 40003133: c5c0ff call0 ets_timer_disarm ; 0x40002d40 40003136: c02c20 or a2, a12, a12 ; return mode 40003139: 022100 l32i a0, a1, 0 4000313c: c22101 l32i a12, a1, 4 4000313f: 12c110 addi a1, a1, 16 40003142: 0df0 ret.n 40003144: 22a100 movi a2, 0x100 40003147: 05e5fd call0 ets_isr_mask ; 0x40000f98 - disable interrupts 4000314a: c02c20 or a2, a12, a12 ; return mode 4000314d: 022100 l32i a0, a1, 0 40003150: c22101 l32i a12, a1, 4 40003153: 12c110 addi a1, a1, 16 40003156: 0df0 ret.n ; ets_wdt_restore ( mode ) ; note that if mode == 0 this just returns. ; otherwise calls ets_wdt_enable ( mode, Y, Z ) ; Not called in bootrom ets_wdt_restore: 40003158: 12c1f0 addi a1, a1, -16 ; save 4000315b: 0901 s32i.n a0, a1, 0 ; save 4000315d: 8c82 beqz.n a2, 0x40003169 4000315f: 4174ff l32r a4, [0x3fffc708] ; 0x40002f30 40003162: 3814 l32i.n a3, a4, 4 ; Y 40003164: 4824 l32i.n a4, a4, 8 ; Z 40003166: 85e3ff call0 ets_wdt_enable ; 0x40002fa0 40003169: 0801 l32i.n a0, a1, 0 ; restore 4000316b: 12c110 addi a1, a1, 16 ; restore 4000316e: 0df0 ret.n ; ets_wdt_init ( void ) ; Not called in bootrom ets_wdt_init: 40003170: 12c1f0 addi a1, a1, -16 ; stack 40003173: 026100 s32i a0, a1, 0 ; save 40003176: 32affe movi a3, -2 ; a3 = fffffffe 40003179: 21f8f7 l32r a2, [0x60000600] ; 0x4000115c 4000317c: c02000 memw 4000317f: 0222c0 l32i a0, a2, 0x300 ; WD_CTRL 40003182: 300010 and a0, a0, a3 ; clear last bit 40003185: c02000 memw 40003188: 3184ff l32r a3, [sub_2f88] ; [0x40002f88] 0x40002f98 4000318b: 0262c0 s32i a0, a2, 0x300 ; WD_CTRL ; call ets_isr_attach ( 8, wdt_isr, 0 ) 4000318e: 42a000 movi a4, 0 40003191: 0c82 movi.n a2, 8 40003193: 45dffd call0 ets_isr_attach ; 0x40000f88 ; Enable Watchdog interrupt. 40003196: 0c16 movi.n a6, 1 40003198: 5131ff l32r a5, [0x3feffe00] ; 0x40002e5c 4000319b: c02000 memw 4000319e: 422581 l32i a4, a5, 0x204 ; INTC_EDGE_EN 400031a1: 604420 or a4, a4, a6 400031a4: c02000 memw 400031a7: 426581 s32i a4, a5, 0x204 ; INTC_EDGE_EN 400031aa: 0801 l32i.n a0, a1, 0 ; restore 400031ac: 12c110 addi a1, a1, 16 ; stack 400031af: 0df0 ret.n 400031b1: 000000 ; **************************** END of wdt section roundup2: 400031b4: 304060 neg a4, a3 400031b7: 3a22 add.n a2, a2, a3 400031b9: 0b22 addi.n a2, a2, -1 400031bb: 402210 and a2, a2, a4 400031be: 0df0 ret.n multofup: 400031c0: 12c1f0 addi a1, a1, -16 400031c3: 0901 s32i.n a0, a1, 0 400031c5: 3a02 add.n a0, a2, a3 400031c7: 0b20 addi.n a2, a0, -1 400031c9: 05050b call0 __udivsi3 ; 0x4000e21c 400031cc: 0801 l32i.n a0, a1, 0 400031ce: 12c110 addi a1, a1, 16 400031d1: 0df0 ret.n 400031d3: 00 sub_31d4: 400031d4: 12c1f0 addi a1, a1, -16 400031d7: 0901 s32i.n a0, a1, 0 400031d9: a6133f blti a3, 1, 0x4000321c 400031dc: 0c15 movi.n a5, 1 400031de: 0c06 movi.n a6, 0 400031e0: 02a0ef movi a0, 239 400031e3: 07630d bbci a3, 0, 0x400031f4 400031e6: 506520 or a6, a5, a5 400031e9: 420200 l8ui a4, a2, 0 400031ec: 1b22 addi.n a2, a2, 1 400031ee: 000430 xor a0, a4, a0 400031f1: 000074 extui a0, a0, 0, 8 400031f4: 305121 srai a5, a3, 1 400031f7: 9c75 beqz.n a5, 0x40003212 400031f9: 420200 l8ui a4, a2, 0 400031fc: 2b66 addi.n a6, a6, 2 400031fe: 004430 xor a4, a4, a0 40003201: 404074 extui a4, a4, 0, 8 40003204: 020201 l8ui a0, a2, 1 40003207: 2b22 addi.n a2, a2, 2 40003209: 400030 xor a0, a0, a4 4000320c: 000074 extui a0, a0, 0, 8 4000320f: 6793e6 bne a3, a6, 0x400031f9 40003212: 2d00 mov.n a2, a0 40003214: 0801 l32i.n a0, a1, 0 40003216: 12c110 addi a1, a1, 16 40003219: 0df0 ret.n 4000321b: 00 4000321c: 22a0ef movi a2, 239 4000321f: 12c110 addi a1, a1, 16 40003222: 0df0 ret.n 40003224: 3fffde10 ; l32r 40003228: 3fff9f80 ; l32r 4000322c: 3fffde00 ; l32r ; 3fffde10 UartDev ; This is some kind of Uart control block UartConnCheck: 40003230: 21fdff l32r a2, [UartDev] ; [0x3fffde10] 0x40003224 40003233: 12c1f0 addi a1, a1, -16 40003236: 32220e l32i a3, a2, 56 40003239: 026102 s32i a0, a1, 8 4000323c: 166302 beqz a3, 0x40003266 4000323f: 261323 beqi a3, 1, 0x40003266 ; falls through if not 0 or 1 40003242: 21d7f7 l32r a2, [0x3fffa000] ; 0x400011a0 40003245: 31d7f7 l32r a3, [0x00002000] ; 0x400011a4 40003248: 0c14 movi.n a4, 1 4000324a: 05c600 call0 RcvMsg ; 0x40003eac 4000324d: ccc2 bnez.n a2, 0x4000325d 4000324f: 01f6ff l32r a0, [0x3fff9f80] ; 0x40003228 40003252: 220080 l8ui a2, a0, 128 40003255: 320081 l8ui a3, a0, 129 40003258: cc12 bnez.n a2, 0x4000325d 4000325a: 268327 beqi a3, 8, 0x40003285 4000325d: 0c02 movi.n a2, 0 ; a2 = 0 4000325f: 0821 l32i.n a0, a1, 8 ; return 40003261: 12c110 addi a1, a1, 16 ; stack 40003264: 0df0 ret.n 40003266: 22a001 movi a2, 1 40003269: 32a001 movi a3, 1 4000326c: 456b00 call0 uart_baudrate_detect ; 0x40003924 4000326f: 2030f4 extui a3, a2, 0, 16 40003272: 1673fe beqz a3, 0x4000325d 40003275: 0c12 movi.n a2, 1 40003277: 057600 call0 uart_div_modify ; 0x400039d8 4000327a: 51eaff l32r a5, [UartDev] ; [0x3fffde10] 0x40003224 4000327d: 0c24 movi.n a4, 2 4000327f: 49e5 s32i.n a4, a5, 56 40003281: 46efff j 0x40003242 40003284: 00 40003285: 21c6f7 l32r a2, [0x3fffa000] ; 0x400011a0 40003288: 3d01 mov.n a3, a1 4000328a: 0c85 movi.n a5, 8 4000328c: 0c16 movi.n a6, 1 4000328e: 41e7ff l32r a4, [0x3fffde00] ; 0x4000322c 40003291: 0c27 movi.n a7, 2 40003293: 725401 s16i a7, a4, 2 40003296: 624400 s8i a6, a4, 0 40003299: 524401 s8i a5, a4, 1 4000329c: 4b44 addi.n a4, a4, 4 4000329e: 055000 call0 UartConnectProc ; 0x400037a0 400032a1: 61e2ff l32r a6, [0x3fffde00] ; 0x4000322c 400032a4: 0c05 movi.n a5, 0 400032a6: 524608 s8i a5, a6, 8 400032a9: 524609 s8i a5, a6, 9 ; Screw with IOmux registers 400032ac: b2a100 movi a11, 0x100 400032af: 22aecf movi a2, 0xfffffecf 400032b2: a1aaf7 l32r a10, [0x60000600] ; 0x4000115c 400032b5: c02000 memw 400032b8: 422a88 l32i a4, a10, 0x220 ; IOMUX_SD_DATA0 400032bb: 204410 and a4, a4, a2 400032be: c02000 memw 400032c1: 426a88 s32i a4, a10, 0x220 400032c4: c02000 memw 400032c7: 322a88 l32i a3, a10, 0x220 400032ca: b03320 or a3, a3, a11 400032cd: c02000 memw 400032d0: 326a88 s32i a3, a10, 0x220 400032d3: c02000 memw 400032d6: 022a89 l32i a0, a10, 0x224 ; IOMUX_SD_DATA1 400032d9: 200010 and a0, a0, a2 400032dc: c02000 memw 400032df: 026a89 s32i a0, a10, 0x224 400032e2: c02000 memw 400032e5: 922a89 l32i a9, a10, 0x224 400032e8: b09920 or a9, a9, a11 400032eb: c02000 memw 400032ee: 926a89 s32i a9, a10, 0x224 400032f1: 0c88 movi.n a8, 8 400032f3: 8911 s32i.n a8, a1, 4 400032f5: 21cdff l32r a2, [0x3fffde00] ; 0x4000322c 400032f8: 32a00a movi a3, 10 400032fb: 859f00 call0 SendMsg ; 0x40003cf4 400032fe: 261213 beqi a2, 1, 0x40003315 40003301: 722101 l32i a7, a1, 4 40003304: 72c7ff addi a7, a7, -1 40003307: 7911 s32i.n a7, a1, 4 40003309: 5687fe bnez a7, 0x400032f5 4000330c: 0c22 movi.n a2, 2 4000330e: 0821 l32i.n a0, a1, 8 40003310: 12c110 addi a1, a1, 16 40003313: 0df0 ret.n 40003315: c02000 memw 40003318: 9191f7 l32r a9, [0x60000600] ; 0x4000115c 4000331b: 322988 l32i a3, a9, 0x220 4000331e: 02aecf movi a0, 0xfffffecf 40003321: 003310 and a3, a3, a0 40003324: c02000 memw 40003327: 326988 s32i a3, a9, 0x220 4000332a: c02000 memw 4000332d: 222988 l32i a2, a9, 0x220 40003330: c02000 memw 40003333: 226988 s32i a2, a9, 0x220 40003336: c02000 memw 40003339: b22989 l32i a11, a9, 0x224 4000333c: 00bb10 and a11, a11, a0 4000333f: c02000 memw 40003342: b26989 s32i a11, a9, 0x224 40003345: a2a130 movi a10, 0x130 40003348: c02000 memw 4000334b: 822989 l32i a8, a9, 0x224 4000334e: a08820 or a8, a8, a10 40003351: c02000 memw 40003354: 826989 s32i a8, a9, 0x224 40003357: 0c02 movi.n a2, 0 40003359: 0821 l32i.n a0, a1, 8 4000335b: 12c110 addi a1, a1, 16 4000335e: 0df0 ret.n 40003360: 3fffde04 ; l32r 40003364: 3fffcba0 ; l32r ; This seems to be what handles serial download ; returns 1 on problem UartDwnLdProc: 40003368: 12c1c0 addi a1, a1, -64 4000336b: 426109 s32i a4, a1, 36 4000336e: f2610e s32i a15, a1, 56 40003371: e2610d s32i a14, a1, 52 40003374: c9b1 s32i.n a12, a1, 44 40003376: d9c1 s32i.n a13, a1, 48 40003378: 09a1 s32i.n a0, a1, 40 4000337a: dd03 mov.n a13, a3 4000337c: 0c20 movi.n a0, 2 4000337e: c1abff l32r a12, [0x3fffde00] ; 0x4000322c 40003381: ed02 mov.n a14, a2 40003383: 0c0f movi.n a15, 0 40003385: f961 s32i.n a15, a1, 24 40003387: 0c12 movi.n a2, 1 40003389: 224c00 s8i a2, a12, 0 4000338c: 025c01 s16i a0, a12, 2 4000338f: 2c02 movi.n a2, 32 40003391: 45c1fd call0 ets_isr_unmask ; 0x40000fa8 40003394: 3861 l32i.n a3, a1, 24 40003396: 262357 beqi a3, 2, 0x400033f1 40003399: d0f0f4 extui a15, a13, 0, 16 4000339c: 21f1ff l32r a2, [0x3fffde04] ; 0x40003360 4000339f: 2981 s32i.n a2, a1, 32 ; loop below to here 400033a1: f03f20 or a3, a15, a15 400033a4: e02e20 or a2, a14, a14 400033a7: 42a000 movi a4, 0 400033aa: 05b000 call0 RcvMsg ; 0x40003eac 400033ad: 0b32 addi.n a3, a2, -1 400033af: 165316 beqz a3, 0x40003518 ; return 1 (bad) 400033b2: 420e00 l8ui a4, a14, 0 400033b5: 0c12 movi.n a2, 1 400033b7: 169406 beqz a4, 0x40003424 ; to dispatch loop 400033ba: 0c50 movi.n a0, 5 400033bc: 0971 s32i.n a0, a1, 28 ; dispatch table below loops back to here. 400033be: 024c09 s8i a0, a12, 9 400033c1: 0c86 movi.n a6, 8 400033c3: 0c15 movi.n a5, 1 400033c5: 720c01 l8ui a7, a12, 1 400033c8: 0c18 movi.n a8, 1 400033ca: 202893 movnez a2, a8, a2 400033cd: 224c08 s8i a2, a12, 8 400033d0: 72c7f8 addi a7, a7, -8 400033d3: 705683 moveqz a5, a6, a7 400033d6: dd05 mov.n a13, a5 400033d8: 9c05 beqz.n a5, 0x400033ec 400033da: c02c20 or a2, a12, a12 400033dd: 32a00a movi a3, 10 400033e0: 059100 call0 SendMsg ; 0x40003cf4 400033e3: 261223 beqi a2, 1, 0x4000340a 400033e6: d2cdff addi a13, a13, -1 400033e9: 56ddfe bnez a13, 0x400033da 400033ec: 9861 l32i.n a9, a1, 24 400033ee: 6629af bnei a9, 2, 0x400033a1 ; good return, return 0 400033f1: 22a020 movi a2, 32 ; 0x20 400033f4: 05bafd call0 ets_isr_mask ; 0x40000f98 400033f7: 22a000 movi a2, 0 ; a2 = 0 400033fa: c2210b l32i a12, a1, 44 400033fd: d8c1 l32i.n a13, a1, 48 400033ff: e8d1 l32i.n a14, a1, 52 40003401: f8e1 l32i.n a15, a1, 56 40003403: 08a1 l32i.n a0, a1, 40 40003405: 12c140 addi a1, a1, 64 40003408: 0df0 ret.n ; bad return, return 1 4000340a: 22a020 movi a2, 32 ; 0x20 4000340d: 85b8fd call0 ets_isr_mask ; 0x40000f98 40003410: 22a001 movi a2, 1 40003413: c2210b l32i a12, a1, 44 40003416: d8c1 l32i.n a13, a1, 48 40003418: e8d1 l32i.n a14, a1, 52 4000341a: f8e1 l32i.n a15, a1, 56 4000341c: 08a1 l32i.n a0, a1, 40 4000341e: 12c140 addi a1, a1, 64 40003421: 0df0 ret.n 40003423: 00 ; This does some clever business using a jump table ; The table is at 0x3fffcba0 with 12 entries: ; Entries at 0 and 1 are invalid ; These are exactly the "opcodes" used by esptool! ; 3fffcba0: 40003435 40003435 40003500 400034eb ; 0 1 2 3 ; 3fffcbb0: 400034d0 40003440 400034b9 400034a3 ; 4 5 6 7 ; 3fffcbc0: 4000348d 4000347d 40003468 40003455 ; 8 9 10 11 40003424: 020e01 l8ui a0, a14, 1 40003427: a1cfff l32r a10, [0x3fffcba0] ; 0x40003364 4000342a: f6a007 bgeui a0, 12, 0x40003435 4000342d: a0a0a0 addx4 a10, a0, a10 40003430: a80a l32i.n a10, a10, 0 40003432: a00a00 jx a10 ; jump via table ; Here when we try to index beyond table ; (or when we fetch an "invalid" entry in the table) 40003435: 0c12 movi.n a2, 1 40003437: 0c5b movi.n a11, 5 40003439: b971 s32i.n a11, a1, 28 ; everybody comes here when done. 4000343b: 0871 l32i.n a0, a1, 28 4000343d: 46dfff j 0x400033be ; Table index 5 ; start memory download sub_3440: 40003440: e02e20 or a2, a14, a14 40003443: 32c11c addi a3, a1, 28 40003446: 104120 or a4, a1, a1 40003449: 852700 call0 MemDwnLdStartMsgProc ; 0x400036c4 4000344c: d2a005 movi a13, 5 4000344f: d24c01 s8i a13, a12, 1 40003452: 46f9ff j 0x4000343b ; Table index 11 ; new flash parameters sub_3455: 40003455: 2d0e mov.n a2, a14 40003457: 32c11c addi a3, a1, 28 4000345a: 052300 call0 FlashDwnLdParamCfgMsgProc ; 0x4000368c 4000345d: 0cb0 movi.n a0, 11 4000345f: 024c01 s8i a0, a12, 1 40003462: 46f5ff j 0x4000343b 40003465: 000000 ; Table index 10 (0xa) ; Read register sub_3468: 40003468: e02e20 or a2, a14, a14 4000346b: 32c11c addi a3, a1, 28 4000346e: 422108 l32i a4, a1, 32 40003471: 853a00 call0 UartRegReadProc ; 0x4000381c 40003474: 32a00a movi a3, 10 40003477: 324c01 s8i a3, a12, 1 4000347a: 46efff j 0x4000343b ; Table index 9 ; Write register sub_347d: 4000347d: 2d0e mov.n a2, a14 4000347f: 32c11c addi a3, a1, 28 40003482: 853200 call0 UartRegWriteProc ; 0x400037ac 40003485: 0c94 movi.n a4, 9 40003487: 424c01 s8i a4, a12, 1 4000348a: 46ebff j 0x4000343b ; Table index 8 ; Connect (Sync) sub_348d: 4000348d: e02e20 or a2, a14, a14 40003490: 32c11c addi a3, a1, 28 40003493: 422108 l32i a4, a1, 32 40003496: 853000 call0 UartConnectProc ; 0x400037a0 40003499: 52a008 movi a5, 8 4000349c: 524c01 s8i a5, a12, 1 4000349f: 06e6ff j 0x4000343b 400034a2: 00 ; Table index 7 ; memory data sub_34a3: 400034a3: e02e20 or a2, a14, a14 400034a6: 32c11c addi a3, a1, 28 400034a9: 104120 or a4, a1, a1 400034ac: 052400 call0 MemPacketSendReqMsgProc ; 0x400036f0 400034af: 62a007 movi a6, 7 400034b2: 624c01 s8i a6, a12, 1 400034b5: 86e0ff j 0x4000343b 400034b8: 00 ; Table index 6 ; end of memory download sub_34b9: 400034b9: e02e20 or a2, a14, a14 400034bc: 32c11c addi a3, a1, 28 400034bf: 104120 or a4, a1, a1 400034c2: 522109 l32i a5, a1, 36 400034c5: 452b00 call0 MemDwnLdStopReqMsgProc ; 0x4000377c 400034c8: 0c67 movi.n a7, 6 400034ca: 724c01 s8i a7, a12, 1 400034cd: 86daff j 0x4000343b ; Table index 4 ; end of flash download sub_34d0: 400034d0: e02e20 or a2, a14, a14 400034d3: 32c11c addi a3, a1, 28 400034d6: 104120 or a4, a1, a1 400034d9: c51700 call0 FlashDwnLdStopReqMsgProc ; 0x40003658 400034dc: 82a004 movi a8, 4 400034df: a891 l32i.n a10, a1, 36 400034e1: 0c09 movi.n a9, 0 400034e3: 990a s32i.n a9, a10, 0 400034e5: 824c01 s8i a8, a12, 1 400034e8: c6d3ff j 0x4000343b ; Table index 3 ; flash data sub_34eb: 400034eb: e02e20 or a2, a14, a14 400034ee: 32c11c addi a3, a1, 28 400034f1: 104120 or a4, a1, a1 400034f4: 850a00 call0 FilePacketSendReqMsgProc ; 0x400035a0 400034f7: b2a003 movi a11, 3 400034fa: b24c01 s8i a11, a12, 1 400034fd: 86ceff j 0x4000343b ; Table index 2 ; start of flash download sub_3500: 40003500: 051401 call0 spi_flash_attach ; 0x40004644 40003503: e02e20 or a2, a14, a14 40003506: 32c11c addi a3, a1, 28 40003509: 104120 or a4, a1, a1 4000350c: 850200 call0 FlashDwnLdStartMsgProc ; 0x40003538 4000350f: d2a002 movi a13, 2 40003512: d24c01 s8i a13, a12, 1 40003515: 86c8ff j 0x4000343b ; all done -- return 1 sub_3518: 40003518: 22a020 movi a2, 32 ; 0x20 4000351b: c5a7fd call0 ets_isr_mask ; 0x40000f98 4000351e: 22a001 movi a2, 1 40003521: c2210b l32i a12, a1, 44 40003524: d8c1 l32i.n a13, a1, 48 40003526: e8d1 l32i.n a14, a1, 52 40003528: f8e1 l32i.n a15, a1, 56 4000352a: 08a1 l32i.n a0, a1, 40 4000352c: 12c140 addi a1, a1, 64 4000352f: 0df0 ret.n 40003531: 000000 40003534: 00001800 ; l32r FlashDwnLdStartMsgProc: 40003538: 12c1f0 addi a1, a1, -16 4000353b: 0921 s32i.n a0, a1, 8 4000353d: 521201 l16ui a5, a2, 2 40003540: 0c50 movi.n a0, 5 40003542: 26b50a beqi a5, 16, 0x40003550 40003545: 0c12 movi.n a2, 1 40003547: 0903 s32i.n a0, a3, 0 40003549: 0821 l32i.n a0, a1, 8 4000354b: 12c110 addi a1, a1, 16 4000354e: 0df0 ret.n 40003550: 722204 l32i a7, a2, 16 40003553: 61f8ff l32r a6, [0x00001800] ; 0x40003534 40003556: 426101 s32i a4, a1, 4 40003559: 7736e8 bltu a6, a7, 0x40003545 4000355c: 3901 s32i.n a3, a1, 0 4000355e: 8811 l32i.n a8, a1, 4 40003560: b822 l32i.n a11, a2, 8 40003562: b908 s32i.n a11, a8, 0 40003564: a832 l32i.n a10, a2, 12 40003566: 7928 s32i.n a7, a8, 8 40003568: a918 s32i.n a10, a8, 4 4000356a: 0c07 movi.n a7, 0 4000356c: 9852 l32i.n a9, a2, 20 4000356e: 9958 s32i.n a9, a8, 20 40003570: 7938 s32i.n a7, a8, 12 40003572: 7948 s32i.n a7, a8, 16 40003574: 852701 call0 Cache_Read_Disable ; 0x400047f0 40003577: 3811 l32i.n a3, a1, 4 40003579: 2853 l32i.n a2, a3, 20 4000357b: 3803 l32i.n a3, a3, 0 4000357d: 455c01 call0 SPIEraseArea ; 0x40004b44 40003580: 8cd2 beqz.n a2, 0x40003591 40003582: 0c12 movi.n a2, 1 40003584: 5801 l32i.n a5, a1, 0 40003586: 0c64 movi.n a4, 6 40003588: 0821 l32i.n a0, a1, 8 4000358a: 4905 s32i.n a4, a5, 0 4000358c: 12c110 addi a1, a1, 16 4000358f: 0df0 ret.n 40003591: 0c02 movi.n a2, 0 40003593: 0821 l32i.n a0, a1, 8 40003595: 12c110 addi a1, a1, 16 40003598: 0df0 ret.n 4000359a: 0000 4000359c: 00001810 ; l32r FilePacketSendReqMsgProc: 400035a0: 12c1e0 addi a1, a1, -32 400035a3: c951 s32i.n a12, a1, 20 400035a5: 0941 s32i.n a0, a1, 16 400035a7: cd02 mov.n a12, a2 400035a9: 521c01 l16ui a5, a12, 2 400035ac: 2d03 mov.n a2, a3 400035ae: 31fbff l32r a3, [0x00001810] ; 0x4000359c 400035b1: 0c50 movi.n a0, 5 400035b3: 57b30d bgeu a3, a5, 0x400035c4 400035b6: 0902 s32i.n a0, a2, 0 400035b8: c851 l32i.n a12, a1, 20 400035ba: 0c12 movi.n a2, 1 400035bc: 0841 l32i.n a0, a1, 16 400035be: 12c120 addi a1, a1, 32 400035c1: 0df0 ret.n 400035c3: 00 400035c4: 7834 l32i.n a7, a4, 12 400035c6: 683c l32i.n a6, a12, 12 400035c8: 382c l32i.n a3, a12, 8 400035ca: 7796e8 bne a6, a7, 0x400035b6 400035cd: 8824 l32i.n a8, a4, 8 400035cf: 0c39 movi.n a9, 3 400035d1: 3738e1 bltu a8, a3, 0x400035b6 400035d4: 4911 s32i.n a4, a1, 4 400035d6: 2901 s32i.n a2, a1, 0 400035d8: 3789da bany a9, a3, 0x400035b6 400035db: 0811 l32i.n a0, a1, 4 400035dd: 1bb7 addi.n a11, a7, 1 400035df: 22cc18 addi a2, a12, 24 400035e2: 2921 s32i.n a2, a1, 8 400035e4: b930 s32i.n a11, a0, 12 400035e6: a20c04 l8ui a10, a12, 4 400035e9: a931 s32i.n a10, a1, 12 400035eb: 85beff call0 sub_31d4 ; 0x400031d4 400035ee: 3831 l32i.n a3, a1, 12 400035f0: 0841 l32i.n a0, a1, 16 400035f2: 27130e beq a3, a2, 0x40003604 400035f5: 0c12 movi.n a2, 1 400035f7: 5801 l32i.n a5, a1, 0 400035f9: 0c74 movi.n a4, 7 400035fb: c851 l32i.n a12, a1, 20 400035fd: 4905 s32i.n a4, a5, 0 400035ff: 12c120 addi a1, a1, 32 40003602: 0df0 ret.n 40003604: 322102 l32i a3, a1, 8 40003607: 222101 l32i a2, a1, 4 4000360a: 482c l32i.n a4, a12, 8 4000360c: 2852 l32i.n a2, a2, 20 4000360e: c54301 call0 SPIWrite ; 0x40004a4c 40003611: 3821 l32i.n a3, a1, 8 40003613: 2811 l32i.n a2, a1, 4 40003615: 482c l32i.n a4, a12, 8 40003617: 222205 l32i a2, a2, 20 4000361a: 055001 call0 SPIRead ; 0x40004b1c 4000361d: 2821 l32i.n a2, a1, 8 4000361f: 382c l32i.n a3, a12, 8 40003621: 05bbff call0 sub_31d4 ; 0x400031d4 40003624: 3831 l32i.n a3, a1, 12 40003626: 271310 beq a3, a2, 0x4000363a 40003629: 0c12 movi.n a2, 1 4000362b: 0841 l32i.n a0, a1, 16 4000362d: 5801 l32i.n a5, a1, 0 4000362f: 0c84 movi.n a4, 8 40003631: c851 l32i.n a12, a1, 20 40003633: 4905 s32i.n a4, a5, 0 40003635: 12c120 addi a1, a1, 32 40003638: 0df0 ret.n 4000363a: 0c02 movi.n a2, 0 4000363c: 0841 l32i.n a0, a1, 16 4000363e: 882c l32i.n a8, a12, 8 40003640: 7811 l32i.n a7, a1, 4 40003642: c851 l32i.n a12, a1, 20 40003644: 9847 l32i.n a9, a7, 16 40003646: 6857 l32i.n a6, a7, 20 40003648: 8a99 add.n a9, a9, a8 4000364a: 8a66 add.n a6, a6, a8 4000364c: 6957 s32i.n a6, a7, 20 4000364e: 9947 s32i.n a9, a7, 16 40003650: 12c120 addi a1, a1, 32 40003653: 0df0 ret.n 40003655: 000000 FlashDwnLdStopReqMsgProc: 40003658: 12c1f0 addi a1, a1, -16 4000365b: 0c26 movi.n a6, 2 4000365d: 5834 l32i.n a5, a4, 12 4000365f: 2814 l32i.n a2, a4, 4 40003661: 0901 s32i.n a0, a1, 0 40003663: 6964 s32i.n a6, a4, 24 40003665: 0c60 movi.n a0, 6 40003667: 579206 bne a2, a5, 0x40003671 4000366a: 8844 l32i.n a8, a4, 16 4000366c: 7804 l32i.n a7, a4, 0 4000366e: 87170a beq a7, a8, 0x4000367c 40003671: 0c12 movi.n a2, 1 40003673: 0903 s32i.n a0, a3, 0 40003675: 0801 l32i.n a0, a1, 0 40003677: 12c110 addi a1, a1, 16 4000367a: 0df0 ret.n 4000367c: 852201 call0 SPILock ; 0x400048a8 4000367f: 22a000 movi a2, 0 40003682: 022100 l32i a0, a1, 0 40003685: 12c110 addi a1, a1, 16 40003688: 800000 ret 4000368b: 00 FlashDwnLdParamCfgMsgProc: 4000368c: 7d02 mov.n a7, a2 4000368e: 12c1f0 addi a1, a1, -16 40003691: 0901 s32i.n a0, a1, 0 40003693: 021201 l16ui a0, a2, 2 40003696: 1c82 movi.n a2, 24 40003698: 27100c beq a0, a2, 0x400036a8 4000369b: 0c12 movi.n a2, 1 4000369d: 0c54 movi.n a4, 5 4000369f: 0801 l32i.n a0, a1, 0 400036a1: 4903 s32i.n a4, a3, 0 400036a3: 12c110 addi a1, a1, 16 400036a6: 0df0 ret.n 400036a8: 222702 l32i a2, a7, 8 400036ab: 322703 l32i a3, a7, 12 400036ae: 422704 l32i a4, a7, 16 400036b1: 5857 l32i.n a5, a7, 20 400036b3: 6867 l32i.n a6, a7, 24 400036b5: 7877 l32i.n a7, a7, 28 400036b7: 455701 call0 SPIParamCfg ; 0x40004c2c 400036ba: 0c02 movi.n a2, 0 400036bc: 0801 l32i.n a0, a1, 0 400036be: 12c110 addi a1, a1, 16 400036c1: 0df0 ret.n 400036c3: 00 MemDwnLdStartMsgProc: 400036c4: 521201 l16ui a5, a2, 2 400036c7: 0c57 movi.n a7, 5 400036c9: 26b505 beqi a5, 16, 0x400036d2 400036cc: 7903 s32i.n a7, a3, 0 400036ce: 0c12 movi.n a2, 1 400036d0: 0df0 ret.n 400036d2: 8842 l32i.n a8, a2, 16 400036d4: 6198ff l32r a6, [0x00001800] ; 0x40003534 400036d7: a822 l32i.n a10, a2, 8 400036d9: 8736ef bltu a6, a8, 0x400036cc 400036dc: a904 s32i.n a10, a4, 0 400036de: 9832 l32i.n a9, a2, 12 400036e0: 9914 s32i.n a9, a4, 4 400036e2: 8924 s32i.n a8, a4, 8 400036e4: 7852 l32i.n a7, a2, 20 400036e6: 7954 s32i.n a7, a4, 20 400036e8: 0c02 movi.n a2, 0 400036ea: 2934 s32i.n a2, a4, 12 400036ec: 2944 s32i.n a2, a4, 16 400036ee: 0df0 ret.n MemPacketSendReqMsgProc: 400036f0: 12c1e0 addi a1, a1, -32 400036f3: c951 s32i.n a12, a1, 20 400036f5: 0941 s32i.n a0, a1, 16 400036f7: cd02 mov.n a12, a2 400036f9: 521c01 l16ui a5, a12, 2 400036fc: 2d03 mov.n a2, a3 400036fe: 31a7ff l32r a3, [0x00001810] ; 0x4000359c 40003701: 0c50 movi.n a0, 5 40003703: 57b30d bgeu a3, a5, 0x40003714 40003706: 0902 s32i.n a0, a2, 0 40003708: c851 l32i.n a12, a1, 20 4000370a: 0c12 movi.n a2, 1 4000370c: 0841 l32i.n a0, a1, 16 4000370e: 12c120 addi a1, a1, 32 40003711: 0df0 ret.n 40003713: 00 40003714: 7834 l32i.n a7, a4, 12 40003716: 683c l32i.n a6, a12, 12 40003718: 382c l32i.n a3, a12, 8 4000371a: 7796e8 bne a6, a7, 0x40003706 4000371d: 4931 s32i.n a4, a1, 12 4000371f: 8824 l32i.n a8, a4, 8 40003721: 2921 s32i.n a2, a1, 8 40003723: 3738df bltu a8, a3, 0x40003706 40003726: b831 l32i.n a11, a1, 12 40003728: 1ba7 addi.n a10, a7, 1 4000372a: 22cc18 addi a2, a12, 24 4000372d: 2911 s32i.n a2, a1, 4 4000372f: a93b s32i.n a10, a11, 12 40003731: 920c04 l8ui a9, a12, 4 40003734: 9901 s32i.n a9, a1, 0 40003736: c5a9ff call0 sub_31d4 ; 0x400031d4 40003739: 0801 l32i.n a0, a1, 0 4000373b: 3821 l32i.n a3, a1, 8 4000373d: 27100f beq a0, a2, 0x40003750 40003740: 0841 l32i.n a0, a1, 16 40003742: 0c72 movi.n a2, 7 40003744: c851 l32i.n a12, a1, 20 40003746: 2903 s32i.n a2, a3, 0 40003748: 0c12 movi.n a2, 1 4000374a: 12c120 addi a1, a1, 32 4000374d: 0df0 ret.n 4000374f: 00 40003750: 322101 l32i a3, a1, 4 40003753: 222103 l32i a2, a1, 12 40003756: 422c02 l32i a4, a12, 8 40003759: 2852 l32i.n a2, a2, 20 4000375b: 8515fe call0 ets_memcpy ; 0x400018b4 4000375e: 0c02 movi.n a2, 0 40003760: 0841 l32i.n a0, a1, 16 40003762: 582c l32i.n a5, a12, 8 40003764: 4831 l32i.n a4, a1, 12 40003766: c851 l32i.n a12, a1, 20 40003768: 6844 l32i.n a6, a4, 16 4000376a: 3854 l32i.n a3, a4, 20 4000376c: 5a66 add.n a6, a6, a5 4000376e: 5a33 add.n a3, a3, a5 40003770: 3954 s32i.n a3, a4, 20 40003772: 6944 s32i.n a6, a4, 16 40003774: 12c120 addi a1, a1, 32 40003777: 0df0 ret.n 40003779: 000000 MemDwnLdStopReqMsgProc: 4000377c: 721201 l16ui a7, a2, 2 4000377f: 0c86 movi.n a6, 8 40003781: 77b607 bgeu a6, a7, 0x4000378c 40003784: 0c12 movi.n a2, 1 40003786: 0c58 movi.n a8, 5 40003788: 8903 s32i.n a8, a3, 0 4000378a: 0df0 ret.n 4000378c: 320208 l8ui a3, a2, 8 4000378f: 0c2b movi.n a11, 2 40003791: 0c0a movi.n a10, 0 40003793: 30ab83 moveqz a10, a11, a3 40003796: a964 s32i.n a10, a4, 24 40003798: 9832 l32i.n a9, a2, 12 4000379a: 9905 s32i.n a9, a5, 0 4000379c: 0c02 movi.n a2, 0 4000379e: 0df0 ret.n ; ------------------------------------------------------------- ; Uart routines follow ... ; note that there are two uarts (uart0 and uart1). ; uart0 base is at 0x60000000 ; uart1 base is at 0x60000f00 ; both are 128 bytes in size UartConnectProc: 400037a0: 2822 l32i.n a2, a2, 8 400037a2: 2904 s32i.n a2, a4, 0 400037a4: 0c02 movi.n a2, 0 400037a6: 2903 s32i.n a2, a3, 0 400037a8: 0df0 ret.n 400037aa: 0000 UartRegWriteProc: 400037ac: 12c1e0 addi a1, a1, -32 400037af: 0901 s32i.n a0, a1, 0 400037b1: e931 s32i.n a14, a1, 12 400037b3: c911 s32i.n a12, a1, 4 400037b5: d921 s32i.n a13, a1, 8 400037b7: d21201 l16ui a13, a2, 2 400037ba: c2c208 addi a12, a2, 8 400037bd: d0d441 srli a13, a13, 4 400037c0: 164d04 beqz a13, 0x40003808 400037c3: 7cfe movi.n a14, -1 400037c5: 326104 s32i a3, a1, 16 400037c8: 221c06 l16ui a2, a12, 12 400037cb: 0570ff call0 ets_delay_us ; 0x40002ecc 400037ce: 222c00 l32i a2, a12, 0 400037d1: c02000 memw 400037d4: 022c01 l32i a0, a12, 4 400037d7: 422c02 l32i a4, a12, 8 400037da: 3802 l32i.n a3, a2, 0 400037dc: e05430 xor a5, a4, a14 400037df: 503310 and a3, a3, a5 400037e2: 400010 and a0, a0, a4 400037e5: 300020 or a0, a0, a3 400037e8: c02000 memw 400037eb: 0902 s32i.n a0, a2, 0 400037ed: c2cc10 addi a12, a12, 16 400037f0: 0bdd addi.n a13, a13, -1 400037f2: e61dd2 bgei a13, 1, 0x400037c8 400037f5: 0801 l32i.n a0, a1, 0 400037f7: c811 l32i.n a12, a1, 4 400037f9: d821 l32i.n a13, a1, 8 400037fb: 3841 l32i.n a3, a1, 16 400037fd: 0c02 movi.n a2, 0 400037ff: e831 l32i.n a14, a1, 12 40003801: 2903 s32i.n a2, a3, 0 40003803: 12c120 addi a1, a1, 32 40003806: 0df0 ret.n 40003808: 0801 l32i.n a0, a1, 0 4000380a: c811 l32i.n a12, a1, 4 4000380c: d821 l32i.n a13, a1, 8 4000380e: 0c02 movi.n a2, 0 40003810: e831 l32i.n a14, a1, 12 40003812: 2903 s32i.n a2, a3, 0 40003814: 12c120 addi a1, a1, 32 40003817: 0df0 ret.n 40003819: 000000 UartRegReadProc: 4000381c: 2822 l32i.n a2, a2, 8 4000381e: c02000 memw 40003821: 2802 l32i.n a2, a2, 0 40003823: 2904 s32i.n a2, a4, 0 40003825: 0c02 movi.n a2, 0 40003827: 2903 s32i.n a2, a3, 0 40003829: 0df0 ret.n 4000382b: 00 4000382c: 3fffde60 ; l32r 40003830: 0001c200 ; l32r 40003834: 40003bbc ; l32r 40003838: 3fffde28 ; l32r ; uartAttach() ; This is pretty much the first Uart routine called. ; Note the odd business of starting with the address 0x3fffde60 ; and then subtracting 0x50 to get the UartDev pointer. ; Almost makes you wonder if they are trying to obsfuscate code. ; ; This initializes the UartDev block as follows: ; ; +0 = 0x00 = 0x0001c200 ; +4 = 0x04 = 3 ; +8 = 0x08 = 0 ; +12 = 0x0c = 0 ; +16 = 0x10 = 0 ; +20 = 0x14 = 0 ; +24 = 0x18 = 0x100 ; +28 = 0x1C = 3fffde60 ; +32 = 0x20 = 3fffde60 ; +36 = 0x24 = 3fffde60 ; +40 = 0x28 = 1 (byte only) ; +44 = 0x2C = 0 ; +48 = 0x30 = 100 ; +52 = 0x34 = 3fffde60 + 0x100 = 3fffdf60 ; +56 = 0x38 = 0 ; +60 = 0x3C = 0 ; +64 = 0x40 = 0 ; 3 words follow not initialized ; The above block lives at 3fffde10 ; It is followed at efffde60 by a 256 byte buffer uartAttach: 4000383c: 32a001 movi a3, 1 ; a3 = 1 4000383f: 42a100 movi a4, 0x100 ; a4 = 0x100 40003842: 52a003 movi a5, 3 ; a5 = 3 40003845: 61faff l32r a6, [0x0001c200] ; 0x40003830 40003848: 0c08 movi.n a8, 0 ; a8 = 0 4000384a: 12c1f0 addi a1, a1, -16 ; space on stack 4000384d: 71f7ff l32r a7, [0x3fffde60] ; 0x4000382c 40003850: 0901 s32i.n a0, a1, 0 ; save return 40003852: 02a064 movi a0, 100 ; a0 = 100 40003855: 22c7b0 addi a2, a7, -80 ; a2 = 0x3fffde10 UartDev 40003858: 8952 s32i.n a8, a2, 20 4000385a: 8922 s32i.n a8, a2, 8 4000385c: 8932 s32i.n a8, a2, 12 4000385e: 8942 s32i.n a8, a2, 16 40003860: 89b2 s32i.n a8, a2, 44 40003862: 89e2 s32i.n a8, a2, 56 40003864: 89f2 s32i.n a8, a2, 60 40003866: 826210 s32i a8, a2, 64 40003869: 6902 s32i.n a6, a2, 0 4000386b: 5912 s32i.n a5, a2, 4 4000386d: 4962 s32i.n a4, a2, 24 4000386f: 324228 s8i a3, a2, 40 40003872: 7972 s32i.n a7, a2, 28 40003874: 7982 s32i.n a7, a2, 32 40003876: 7992 s32i.n a7, a2, 36 40003878: 09c2 s32i.n a0, a2, 48 4000387a: 72d701 addmi a7, a7, 0x100 4000387d: 79d2 s32i.n a7, a2, 52 ; now do some interrupt setup. ; interrupt 5 gets 1<<5 = 0x20 for mask ; disable uart interrupt 4000387f: 22a020 movi a2, 32 ; a2 = 0x20 40003882: 4571fd call0 ets_isr_mask ; 0x40000f98 40003885: 0c52 movi.n a2, 5 ; a2 = 5 40003887: 31ebff l32r a3, [uart_rx_intr_handler] ; [0x40003bbc] 0x40003834 4000388a: 41ebff l32r a4, [0x3fffde28] ; 0x40003838 4000388d: 856ffd call0 ets_isr_attach ; 0x40000f88 40003890: 0801 l32i.n a0, a1, 0 40003892: 12c110 addi a1, a1, 16 ; restore stack 40003895: 0df0 ret.n 40003897: 00 40003898: 00000f00 ; l32r 4000389c: 5ffffe00 ; l32r 400038a0: 0000ffff ; l32r uart_buff_switch: 400038a4: 12c1f0 addi a1, a1, -16 400038a7: d931 s32i.n a13, a1, 12 400038a9: c921 s32i.n a12, a1, 8 400038ab: 0911 s32i.n a0, a1, 4 400038ad: cd02 mov.n a12, a2 400038af: 015dfe l32r a0, [UartDev] ; [0x3fffde10] 0x40003224 400038b2: 8cf2 beqz.n a2, 0x400038c5 ; buffer address ? 400038b4: d831 l32i.n a13, a1, 12 400038b6: c821 l32i.n a12, a1, 8 400038b8: 226010 s32i a2, a0, 64 400038bb: 0811 l32i.n a0, a1, 4 400038bd: 12c110 addi a1, a1, 16 400038c0: 0df0 ret.n 400038c2: 000000 400038c5: 41f5ff l32r a4, [0x5ffffe00] ; 0x4000389c 400038c8: 51f4ff l32r a5, [0x00000f00] ; 0x40003898 400038cb: 0c16 movi.n a6, 1 400038cd: 0c03 movi.n a3, 0 400038cf: 203683 moveqz a3, a6, a2 400038d2: 503382 mull a3, a3, a5 400038d5: 403380 add a3, a3, a4 400038d8: 51f2ff l32r a5, [0x0000ffff] ; 0x400038a0 400038db: c02000 memw 400038de: 526384 s32i a5, a3, 0x210 400038e1: 42ae00 movi a4, 0xfffffe00 400038e4: c02000 memw 400038e7: 222383 l32i a2, a3, 0x20c 400038ea: 402210 and a2, a2, a4 400038ed: c02000 memw 400038f0: 226383 s32i a2, a3, 0x20c 400038f3: d2c018 addi a13, a0, 24 400038f6: 102120 or a2, a1, a1 400038f9: 052900 call0 uart_rx_one_char ; 0x40003b8c 400038fc: 1662ff beqz a2, 0x400038f6 400038ff: d02d20 or a2, a13, a13 40003902: 103120 or a3, a1, a1 40003905: 055c00 call0 uart_rx_readbuff ; 0x40003ec8 40003908: 16a2fe beqz a2, 0x400038f6 4000390b: 0811 l32i.n a0, a1, 4 4000390d: d831 l32i.n a13, a1, 12 4000390f: 8145fe l32r a8, [UartDev] ; [0x3fffde10] 0x40003224 40003912: 0c07 movi.n a7, 0 40003914: c26810 s32i a12, a8, 64 40003917: 79b8 s32i.n a7, a8, 44 40003919: c821 l32i.n a12, a1, 8 4000391b: 12c110 addi a1, a1, 16 4000391e: 0df0 ret.n 40003920: 00000801 ; l32r ; The usual business of setting the uart base address to 5ffffe00 and ; then adding offsets of 0x200 to get 60000000 ; ; 0x18 is the autobaud register uart_baudrate_detect: 40003924: 41deff l32r a4, [0x5ffffe00] ; 0x4000389c 40003927: 12c1f0 addi a1, a1, -16 ; stack 4000392a: 0901 s32i.n a0, a1, 0 ; save return 4000392c: d921 s32i.n a13, a1, 8 ; save a13 4000392e: c911 s32i.n a12, a1, 4 ; save a12 40003930: d1daff l32r a13, [0x00000f00] ; 0x40003898 40003933: cd03 mov.n a12, a3 40003935: 313bfe l32r a3, [UartDev] ; [0x3fffde10] 0x40003224 40003938: 20ddd1 mul16s a13, a13, a2 4000393b: 08e3 l32i.n a0, a3, 56 4000393d: 4add add.n a13, a13, a4 ; uart base addr 4000393f: dce0 bnez.n a0, 0x40003961 40003941: c02000 memw ; clear the autobaud enable register 40003944: 522d86 l32i a5, a13, 0x218 40003947: 7ce6 movi.n a6, -2 40003949: 605510 and a5, a5, a6 4000394c: c02000 memw 4000394f: 526d86 s32i a5, a13, 0x218 ; now enable it and set glitch filter to 0x08 40003952: 41f3ff l32r a4, [0x00000801] ; 0x40003920 40003955: c02000 memw 40003958: 426d86 s32i a4, a13, 0x218 4000395b: 22a001 movi a2, 1 ; a2 = 1 4000395e: 22630e s32i a2, a3, 56 ; now look at RxD count 40003961: 1cd0 movi.n a0, 29 40003963: c02000 memw 40003966: 722d8c l32i a7, a13, 0x230 40003969: 773020 bltu a0, a7, 0x4000398d 4000396c: 8ccc beqz.n a12, 0x4000397c 4000396e: 0c02 movi.n a2, 0 ; return 0 (failure?) 40003970: c811 l32i.n a12, a1, 4 ; restore a12 40003972: d821 l32i.n a13, a1, 8 ; restore a13 40003974: 0801 l32i.n a0, a1, 0 ; return address. 40003976: 12c110 addi a1, a1, 16 ; restore stack 40003979: 0df0 ret.n 4000397b: 00 4000397c: 22a3e8 movi a2, 0x3e8 4000397f: c554ff call0 ets_delay_us ; 0x40002ecc 40003982: c02000 memw 40003985: 822d8c l32i a8, a13, 0x230 40003988: 1cd0 movi.n a0, 29 4000398a: 87b0de bgeu a0, a8, 0x4000396c 4000398d: 71b3fb l32r a7, [0x000fffff] ; 0x4000285c 40003990: c02000 memw 40003993: 522d8a l32i a5, a13, 0x228 40003996: 705510 and a5, a5, a7 40003999: c02000 memw 4000399c: 622d8b l32i a6, a13, 0x22c 4000399f: 0c02 movi.n a2, 0 ; a2 = 0 400039a1: 706610 and a6, a6, a7 400039a4: 6a55 add.n a5, a5, a6 400039a6: 505121 srai a5, a5, 1 400039a9: 5025b3 movgez a2, a5, a5 400039ac: c02000 memw ; clear the autobaud enable register 400039af: 322d86 l32i a3, a13, 0x218 400039b2: 7ce4 movi.n a4, -2 400039b4: 403310 and a3, a3, a4 400039b7: c02000 memw 400039ba: cb22 addi.n a2, a2, 12 ; return value 400039bc: 326d86 s32i a3, a13, 0x218 400039bf: c811 l32i.n a12, a1, 4 ; restore a12 400039c1: d821 l32i.n a13, a1, 8 ; restore a13 400039c3: 0801 l32i.n a0, a1, 0 ; return address 400039c5: 12c110 addi a1, a1, 16 ; restore stack 400039c8: 0df0 ret.n 400039ca: 000000000000 400039d0: 00060000 ; l32r 400039d4: fff9ffff ; l32r ; uart_div_modify ( 0 or 1, arg ) ; ; uart0 base is at 0x60000000 ; uart1 base is at 0x60000f00 ; So n * 0xf00 gives the offset for one or the other. ; Why drop back 0x200 bytes to 0x5ffffe00? ; A mystery to me, but seems to be something this ; compiler does with most base registers. ; ; offset 0x14 is the clock divider (baud = basic/clock / divider) ; this is a 20 bit value in a 32 bit register. ; offset 0x20 is uart_conf0 register ; this holds many bits, here we reset the fifos. uart_div_modify: 400039d8: 51b0ff l32r a5, [0x00000f00] ; 0x40003898 400039db: 61b0ff l32r a6, [0x5ffffe00] ; 0x4000389c 400039de: 2055d1 mul16s a5, a5, a2 400039e1: 6a55 add.n a5, a5, a6 400039e3: c02000 memw 400039e6: 326585 s32i a3, a5, 0x214 ; set the divisor ; reset both Rx and Tx fifos, first set the bits 400039e9: 81f9ff l32r a8, [0x00060000] ; 0x400039d0 400039ec: c02000 memw 400039ef: 722588 l32i a7, a5, 0x220 400039f2: 807720 or a7, a7, a8 400039f5: c02000 memw 400039f8: 726588 s32i a7, a5, 0x220 ; then clear them 400039fb: 61f6ff l32r a6, [0xfff9ffff] ; 0x400039d4 400039fe: c02000 memw 40003a01: 422588 l32i a4, a5, 0x220 40003a04: 604410 and a4, a4, a6 40003a07: c02000 memw 40003a0a: 426588 s32i a4, a5, 0x220 40003a0d: 0df0 ret.n 40003a0f: 00 40003a10: 04c4b400 ; l32r ; Uart_Init ( x ) ; ; in main() the calls are like so: ; uartAttach (); ; Uart_Init ( 0 ); ; ets_install_uart_printf (); Uart_Init: 40003a14: 42aecf movi a4, 0xfffffecf 40003a17: 12c1f0 addi a1, a1, -16 ; stack space 40003a1a: c26101 s32i a12, a1, 4 ; save a12 40003a1d: 026100 s32i a0, a1, 0 ; save a0 40003a20: 20c220 or a12, a2, a2 ; a12 = a2 40003a23: 01cef5 l32r a0, [0x60000600] ; 0x4000115c 40003a26: 16220b beqz a2, 0x40003adc ; arg ; here when called as Uart_Init ( non-zero ) ; screws with 0x60000600 + 0x224 ( 0x60000824 ) ; this is in the iomux section -- IOMUX_SD_DATA1 ; ; a4 = fecf = ~0x130 40003a29: c02000 memw 40003a2c: 522089 l32i a5, a0, 0x224 ; IO 824 40003a2f: 405510 and a5, a5, a4 ; clear 40003a32: c02000 memw 40003a35: 526089 s32i a5, a0, 0x224 ; IO 824 40003a38: 32a130 movi a3, 0x130 40003a3b: c02000 memw 40003a3e: 222089 l32i a2, a0, 0x224 ; IO 824 40003a41: 302220 or a2, a2, a3 ; set again 40003a44: c02000 memw 40003a47: 226089 s32i a2, a0, 0x224 ; IO 824 ; code from below joins here. ; a2 has been copied to a12 40003a4a: 31f6fd l32r a3, [UartDev] ; [0x3fffde10] 0x40003224 40003a4d: 21f0ff l32r a2, [0x04c4b400] ; 0x40003a10 40003a50: 3803 l32i.n a3, a3, 0 40003a52: 857c0a call0 __udivsi3 ; 0x4000e21c 40003a55: 2030f4 extui a3, a2, 0, 16 40003a58: 2d0c mov.n a2, a12 40003a5a: c5f7ff call0 uart_div_modify ; 0x400039d8 40003a5d: 618fff l32r a6, [0x5ffffe00] ; 0x4000389c 40003a60: 81f1fd l32r a8, [UartDev] ; [0x3fffde10] 0x40003224 40003a63: 518dff l32r a5, [0x00000f00] ; 0x40003898 40003a66: 3848 l32i.n a3, a8, 16 40003a68: 2838 l32i.n a2, a8, 12 40003a6a: 0828 l32i.n a0, a8, 8 40003a6c: c055d1 mul16s a5, a5, a12 40003a6f: 6a55 add.n a5, a5, a6 40003a71: 200020 or a0, a0, a2 40003a74: 2818 l32i.n a2, a8, 4 40003a76: c03311 slli a3, a3, 4 40003a79: e02211 slli a2, a2, 2 40003a7c: 302220 or a2, a2, a3 40003a7f: 200020 or a0, a0, a2 40003a82: c02000 memw 40003a85: 026588 s32i a0, a5, 0x220 40003a88: c1d2ff l32r a12, [0x00060000] ; 0x400039d0 40003a8b: c02000 memw 40003a8e: b22588 l32i a11, a5, 0x220 40003a91: c0bb20 or a11, a11, a12 40003a94: c02000 memw 40003a97: b26588 s32i a11, a5, 0x220 40003a9a: a1ceff l32r a10, [0xfff9ffff] ; 0x400039d4 40003a9d: c02000 memw 40003aa0: 922588 l32i a9, a5, 0x220 40003aa3: a09910 and a9, a9, a10 40003aa6: c02000 memw 40003aa9: 926588 s32i a9, a5, 0x220 40003aac: 820828 l8ui a8, a8, 40 40003aaf: 808064 extui a8, a8, 0, 7 40003ab2: c02000 memw 40003ab5: 826589 s32i a8, a5, 0x224 40003ab8: 717aff l32r a7, [0x0000ffff] ; 0x400038a0 40003abb: c02000 memw 40003abe: 726584 s32i a7, a5, 0x210 40003ac1: 0c16 movi.n a6, 1 40003ac3: c02000 memw 40003ac6: 422583 l32i a4, a5, 0x20c 40003ac9: 604420 or a4, a4, a6 40003acc: c02000 memw 40003acf: 426583 s32i a4, a5, 0x20c 40003ad2: c811 l32i.n a12, a1, 4 40003ad4: 0801 l32i.n a0, a1, 0 40003ad6: 12c110 addi a1, a1, 16 40003ad9: 0df0 ret.n 40003adb: 00 ; here when called as Uart_Init ( 0 ) ; Note that a0 = 0x60000600 ; Note that a4 = 0xfffffecf ; this screws with 60000818 and 60000838 in the iomux area. ; 60000818 is IOMUX_U0TXD ; 60000838 is IOMUX_GPIO2 40003adc: 22af7f movi a2, -129 ; 0x7f 40003adf: c02000 memw 40003ae2: b22086 l32i a11, a0, 0x218 ; IO 818 40003ae5: 20bb10 and a11, a11, a2 ; clear 40003ae8: c02000 memw 40003aeb: b26086 s32i a11, a0, 0x218 ; IO 818 40003aee: c02000 memw 40003af1: a22086 l32i a10, a0, 0x218 ; IO 818 40003af4: 40aa10 and a10, a10, a4 ; clear 40003af7: c02000 memw 40003afa: a26086 s32i a10, a0, 0x218 ; IO 818 40003afd: c02000 memw 40003b00: 922086 l32i a9, a0, 0x218 ; IO 818 40003b03: c02000 memw 40003b06: 926086 s32i a9, a0, 0x218 ; IO 818 40003b09: c02000 memw 40003b0c: 82208e l32i a8, a0, 0x238 ; IO 838 40003b0f: 408810 and a8, a8, a4 ; clear 40003b12: c02000 memw 40003b15: 82608e s32i a8, a0, 0x238 ; IO 838 40003b18: 72a100 movi a7, 0x100 40003b1b: c02000 memw 40003b1e: 62208e l32i a6, a0, 0x238 ; IO 838 40003b21: 706620 or a6, a6, a7 ; set 40003b24: c02000 memw 40003b27: 62608e s32i a6, a0, 0x238 ; IO 838 40003b2a: 06c7ff j 0x40003a4a 40003b2d: 000000 ; uart_tx_one_char() - a2 holds character to be written ; uart0 base is at 0x60000000 ; uart1 base is at 0x60000f00 ; uart_tx_one_char: 40003b30: 5132f2 l32r a5, [0x00ff0000] ; 0x400003f8 40003b33: 81bcfd l32r a8, [UartDev] ; [0x3fffde10] 0x40003224 40003b36: 6158ff l32r a6, [0x00000f00] ; 0x40003898 40003b39: 820840 l8ui a8, a8, 64 40003b3c: 7158ff l32r a7, [0x5ffffe00] ; 0x4000389c 40003b3f: 8066d1 mul16s a6, a6, a8 ; a6 *= a8 40003b42: 7a66 add.n a6, a6, a7 ; a6 += a7 40003b44: c02000 memw ; once we get here, a6 has the proper "base address" ; a5 is a mask to select bits to test. ; l8ui is an 8 bit load from memory - ; in this case it fetches from 3fffde10 + 40 ; on my running system this contains 0x00 ; apparently this poking around will determine which uart is being used. ; so the multiply above will yield zero and a6 will be 0x5ffffe00 ; note that l32i and s32i multiply the offset by 4 (shift it by 2) ; also note that the raw offset is 0x87 which becomes 0x21c when shifted ; (i.e. the disassembler nicely shows us the shifted result). ; adding this to 0x5ffffe00 gives 0x6000001c ; offset 0x1c is the uart status register ; offset 0x00 is the uart fifo (shared by read and write) 40003b47: 322687 l32i a3, a6, 0x21c 40003b4a: 37050a bnone a5, a3, 0x40003b58 40003b4d: c02000 memw ; polling loop 40003b50: 922687 l32i a9, a6, 0x21c 40003b53: 3df0 nop.n 40003b55: 5789f4 bany a9, a5, 0x40003b4d 40003b58: c02000 memw 40003b5b: 226680 s32i a2, a6, 0x200 ; write it 40003b5e: 0c02 movi.n a2, 0 40003b60: 0df0 ret.n 40003b62: 0000 uart_rx_one_char_block: 40003b64: 52a0ff movi a5, 255 40003b67: 41affd l32r a4, [UartDev] ; [0x3fffde10] 0x40003224 40003b6a: 214bff l32r a2, [0x00000f00] ; 0x40003898 40003b6d: 420440 l8ui a4, a4, 64 40003b70: 314bff l32r a3, [0x5ffffe00] ; 0x4000389c 40003b73: 4022d1 mul16s a2, a2, a4 40003b76: 3a22 add.n a2, a2, a3 40003b78: c02000 memw ; loop 40003b7b: 622287 l32i a6, a2, 0x21c 40003b7e: 6705f6 bnone a5, a6, 0x40003b78 40003b81: c02000 memw 40003b84: 222280 l32i a2, a2, 0x200 40003b87: 202074 extui a2, a2, 0, 8 40003b8a: 0df0 ret.n ; Read a single character ; call with a2 the pointer where to place character ; returns 0 on success, 1 if nothing to read ; does not spin or block uart_rx_one_char: 40003b8c: 61a6fd l32r a6, [UartDev] ; [0x3fffde10] 0x40003224 40003b8f: 4142ff l32r a4, [0x00000f00] ; 0x40003898 40003b92: 620640 l8ui a6, a6, 64 40003b95: 5141ff l32r a5, [0x5ffffe00] ; 0x4000389c 40003b98: 6044d1 mul16s a4, a4, a6 40003b9b: 5a44 add.n a4, a4, a5 40003b9d: c02000 memw 40003ba0: 322487 l32i a3, a4, 0x21c ; uart status reg 40003ba3: 303074 extui a3, a3, 0, 8 40003ba6: 8cb3 beqz.n a3, 0x40003bb5 40003ba8: c02000 memw 40003bab: 722480 l32i a7, a4, 0x200 ; uart data 40003bae: 724200 s8i a7, a2, 0 ; store at pointer 40003bb1: 0c02 movi.n a2, 0 ; return 0 40003bb3: 0df0 ret.n 40003bb5: 0c12 movi.n a2, 1 ; return 1 40003bb7: 0df0 ret.n 40003bb9: 000000 uart_rx_intr_handler: 40003bbc: 0c18 movi.n a8, 1 40003bbe: 6199fd l32r a6, [UartDev] ; [0x3fffde10] 0x40003224 40003bc1: 7136ff l32r a7, [0x5ffffe00] ; 0x4000389c 40003bc4: 622610 l32i a6, a6, 64 40003bc7: 5134ff l32r a5, [0x00000f00] ; 0x40003898 40003bca: 606074 extui a6, a6, 0, 8 40003bcd: 5056d1 mul16s a5, a6, a5 40003bd0: 7a55 add.n a5, a5, a7 40003bd2: c02000 memw 40003bd5: 322582 l32i a3, a5, 0x208 40003bd8: 92a0ff movi a9, 255 40003bdb: 07634d bbci a3, 0, 0x40003c2c ; return 40003bde: c02000 memw 40003be1: a12dff l32r a10, [0x00000f00] ; 0x40003898 40003be4: 826584 s32i a8, a5, 0x210 40003be7: 606ad1 mul16s a6, a10, a6 40003bea: 7a66 add.n a6, a6, a7 40003bec: c02000 memw 40003bef: a22687 l32i a10, a6, 0x21c 40003bf2: 0cd8 movi.n a8, 13 40003bf4: a70934 bnone a9, a10, 0x40003c2c ; return 40003bf7: 522202 l32i a5, a2, 8 40003bfa: 0c29 movi.n a9, 2 40003bfc: c02000 memw 40003bff: b22680 l32i a11, a6, 0x200 40003c02: b0b074 extui a11, a11, 0, 8 40003c05: b24500 s8i a11, a5, 0 40003c08: 7812 l32i.n a7, a2, 4 40003c0a: 5822 l32i.n a5, a2, 8 40003c0c: 32d701 addmi a3, a7, 0x100 40003c0f: 1b55 addi.n a5, a5, 1 40003c11: 879b01 bne a11, a8, 0x40003c16 40003c14: 9952 s32i.n a9, a2, 20 40003c16: 5922 s32i.n a5, a2, 8 40003c18: 379504 bne a5, a3, 0x40003c20 40003c1b: 5d07 mov.n a5, a7 40003c1d: 726202 s32i a7, a2, 8 40003c20: c02000 memw 40003c23: 722687 l32i a7, a6, 0x21c 40003c26: 707074 extui a7, a7, 0, 8 40003c29: 56f7fc bnez a7, 0x40003bfc 40003c2c: 0df0 ret.n 40003c2e: 0000 UartRxString: 40003c30: 12c1e0 addi a1, a1, -32 40003c33: d921 s32i.n a13, a1, 8 40003c35: f941 s32i.n a15, a1, 16 40003c37: 0901 s32i.n a0, a1, 0 40003c39: c911 s32i.n a12, a1, 4 40003c3b: e931 s32i.n a14, a1, 12 40003c3d: cd02 mov.n a12, a2 40003c3f: ed03 mov.n a14, a3 40003c41: b62327 bltui a3, 2, 0x40003c6c 40003c44: 0c1d movi.n a13, 1 40003c46: 0cdf movi.n a15, 13 40003c48: 2d0c mov.n a2, a12 40003c4a: 05f4ff call0 uart_rx_one_char ; 0x40003b8c 40003c4d: 661207 bnei a2, 1, 0x40003c58 40003c50: 2d0c mov.n a2, a12 40003c52: 85f3ff call0 uart_rx_one_char ; 0x40003b8c 40003c55: 2612f7 beqi a2, 1, 0x40003c50 40003c58: 020c00 l8ui a0, a12, 0 40003c5b: 26900d beqi a0, 10, 0x40003c6c 40003c5e: f7100a beq a0, a15, 0x40003c6c 40003c61: 1bcc addi.n a12, a12, 1 40003c63: d2cd01 addi a13, a13, 1 40003c66: d0d074 extui a13, a13, 0, 8 40003c69: d79edb bne a14, a13, 0x40003c48 40003c6c: 0801 l32i.n a0, a1, 0 40003c6e: d821 l32i.n a13, a1, 8 40003c70: e831 l32i.n a14, a1, 12 40003c72: 0c02 movi.n a2, 0 40003c74: f841 l32i.n a15, a1, 16 40003c76: 224c01 s8i a2, a12, 1 40003c79: c811 l32i.n a12, a1, 4 40003c7b: 12c120 addi a1, a1, 32 40003c7e: 0df0 ret.n ; ----------------------------------------------------------- ; called once from below send_packet: 40003c80: 12c1e0 addi a1, a1, -32 40003c83: e931 s32i.n a14, a1, 12 40003c85: f941 s32i.n a15, a1, 16 40003c87: 0901 s32i.n a0, a1, 0 40003c89: c911 s32i.n a12, a1, 4 40003c8b: d921 s32i.n a13, a1, 8 40003c8d: cd02 mov.n a12, a2 40003c8f: 30d320 or a13, a3, a3 40003c92: 22a0c0 movi a2, 192 40003c95: 85e9ff call0 uart_tx_one_char ; 0x40003b30 40003c98: 0bdd addi.n a13, a13, -1 40003c9a: 260d3e beqi a13, -1, 0x40003cdc 40003c9d: f2a0db movi a15, 219 40003ca0: e2a0c0 movi a14, 192 40003ca3: 860300 j 0x40003cb5 40003ca6: 000000 40003ca9: 45e8ff call0 uart_tx_one_char ; 0x40003b30 40003cac: c2cc01 addi a12, a12, 1 40003caf: d2cdff addi a13, a13, -1 40003cb2: 966d02 bltz a13, 0x40003cdc 40003cb5: 220c00 l8ui a2, a12, 0 40003cb8: e71211 beq a2, a14, 0x40003ccd 40003cbb: f792ea bne a2, a15, 0x40003ca9 40003cbe: 22a0db movi a2, 219 40003cc1: c5e6ff call0 uart_tx_one_char ; 0x40003b30 40003cc4: 22a0dd movi a2, 221 40003cc7: 85e6ff call0 uart_tx_one_char ; 0x40003b30 40003cca: 86f7ff j 0x40003cac 40003ccd: 22a0db movi a2, 219 40003cd0: c5e5ff call0 uart_tx_one_char ; 0x40003b30 40003cd3: 22a0dc movi a2, 220 40003cd6: 85e5ff call0 uart_tx_one_char ; 0x40003b30 40003cd9: c6f3ff j 0x40003cac 40003cdc: 22a0c0 movi a2, 192 40003cdf: 05e5ff call0 uart_tx_one_char ; 0x40003b30 40003ce2: c811 l32i.n a12, a1, 4 40003ce4: d821 l32i.n a13, a1, 8 40003ce6: e831 l32i.n a14, a1, 12 40003ce8: f841 l32i.n a15, a1, 16 40003cea: 0801 l32i.n a0, a1, 0 40003cec: 12c120 addi a1, a1, 32 40003cef: 0df0 ret.n 40003cf1: 000000 ; wrapper on send_packet ; (which is silly as this is the only thing that calls send_packet) SendMsg: 40003cf4: 12c1f0 addi a1, a1, -16 40003cf7: 0901 s32i.n a0, a1, 0 40003cf9: 45f8ff call0 send_packet ; 0x40003c80 40003cfc: 0c02 movi.n a2, 0 40003cfe: 0801 l32i.n a0, a1, 0 40003d00: 12c110 addi a1, a1, 16 40003d03: 0df0 ret.n 40003d05: 000000 recv_packet: 40003d08: 0c17 movi.n a7, 1 40003d0a: 6d04 mov.n a6, a4 40003d0c: 12c1d0 addi a1, a1, -48 40003d0f: 0941 s32i.n a0, a1, 16 40003d11: 3991 s32i.n a3, a1, 36 40003d13: 2911 s32i.n a2, a1, 4 40003d15: e971 s32i.n a14, a1, 28 40003d17: c951 s32i.n a12, a1, 20 40003d19: d961 s32i.n a13, a1, 24 40003d1b: f981 s32i.n a15, a1, 32 40003d1d: dd04 mov.n a13, a4 40003d1f: f141fd l32r a15, [UartDev] ; [0x3fffde10] 0x40003224 40003d22: 406793 movnez a6, a7, a4 40003d25: 6931 s32i.n a6, a1, 12 40003d27: c2cf18 addi a12, a15, 24 40003d2a: 0c04 movi.n a4, 0 40003d2c: 58ff l32i.n a5, a15, 60 40003d2e: 424100 s8i a4, a1, 0 40003d31: 604593 movnez a4, a5, a6 40003d34: ed04 mov.n a14, a4 40003d36: 16cd10 beqz a13, 0x40003e46 40003d39: 88ef l32i.n a8, a15, 56 40003d3b: 262872 beqi a8, 2, 0x40003db1 40003d3e: c02c20 or a2, a12, a12 40003d41: 103120 or a3, a1, a1 40003d44: 051800 call0 uart_rx_readbuff ; 0x40003ec8 40003d47: 163201 beqz a2, 0x40003d5e 40003d4a: 160dff beqz a13, 0x40003d3e 40003d4d: 0c02 movi.n a2, 0 40003d4f: c851 l32i.n a12, a1, 20 40003d51: d861 l32i.n a13, a1, 24 40003d53: e871 l32i.n a14, a1, 28 40003d55: f881 l32i.n a15, a1, 32 40003d57: 0841 l32i.n a0, a1, 16 40003d59: 12c130 addi a1, a1, 48 40003d5c: 0df0 ret.n 40003d5e: 8c6d beqz.n a13, 0x40003d68 40003d60: 28ef l32i.n a2, a15, 56 40003d62: 22c2fc addi a2, a2, -4 40003d65: 16720b beqz a2, 0x40003e20 40003d68: 020100 l8ui a0, a1, 0 40003d6b: 32a0c0 movi a3, 192 40003d6e: 37101e beq a0, a3, 0x40003d90 40003d71: 42a0db movi a4, 219 40003d74: 47106c beq a0, a4, 0x40003de4 40003d77: 5891 l32i.n a5, a1, 36 40003d79: 57aec1 bge a14, a5, 0x40003d3e 40003d7c: 7811 l32i.n a7, a1, 4 40003d7e: 7a7e add.n a7, a14, a7 40003d80: 024700 s8i a0, a7, 0 40003d83: 68ff l32i.n a6, a15, 60 40003d85: 1bee addi.n a14, a14, 1 40003d87: 1b66 addi.n a6, a6, 1 40003d89: 69ff s32i.n a6, a15, 60 40003d8b: c6ebff j 0x40003d3e 40003d8e: 0000 40003d90: 16aefa beqz a14, 0x40003d3e 40003d93: 163d10 beqz a13, 0x40003e9a 40003d96: 0841 l32i.n a0, a1, 16 40003d98: c851 l32i.n a12, a1, 20 40003d9a: d861 l32i.n a13, a1, 24 40003d9c: 2d0e mov.n a2, a14 40003d9e: 0c28 movi.n a8, 2 40003da0: 0c09 movi.n a9, 0 40003da2: 99ff s32i.n a9, a15, 60 40003da4: 89ef s32i.n a8, a15, 56 40003da6: e871 l32i.n a14, a1, 28 40003da8: f881 l32i.n a15, a1, 32 40003daa: 12c130 addi a1, a1, 48 40003dad: 0df0 ret.n 40003daf: 0000 40003db1: c02c20 or a2, a12, a12 40003db4: 103120 or a3, a1, a1 40003db7: 051100 call0 uart_rx_readbuff ; 0x40003ec8 40003dba: 565201 bnez a2, 0x40003dd3 40003dbd: 020100 l8ui a0, a1, 0 40003dc0: a2a0c0 movi a10, 192 40003dc3: a0a0c0 sub a10, a0, a10 40003dc6: 16ba0a beqz a10, 0x40003e75 40003dc9: 2d0c mov.n a2, a12 40003dcb: 3d01 mov.n a3, a1 40003dcd: 850f00 call0 uart_rx_readbuff ; 0x40003ec8 40003dd0: 1692fe beqz a2, 0x40003dbd 40003dd3: b20100 l8ui a11, a1, 0 40003dd6: 02a0c0 movi a0, 192 40003dd9: 071b02 beq a11, a0, 0x40003ddf 40003ddc: 46dbff j 0x40003d4d 40003ddf: c6d6ff j 0x40003d3e 40003de2: 0000 40003de4: 166d04 beqz a13, 0x40003e2e 40003de7: 48ef l32i.n a4, a15, 56 40003de9: 2821 l32i.n a2, a1, 8 40003deb: 663402 bnei a4, 3, 0x40003df1 40003dee: 062400 j 0x40003e82 40003df1: 224100 s8i a2, a1, 0 40003df4: 32a0dc movi a3, 220 40003df7: 020100 l8ui a0, a1, 0 40003dfa: 7831 l32i.n a7, a1, 12 40003dfc: 0c36 movi.n a6, 3 40003dfe: 704693 movnez a4, a6, a7 40003e01: 49ef s32i.n a4, a15, 56 40003e03: 37100e beq a0, a3, 0x40003e15 40003e06: 52a0dd movi a5, 221 40003e09: 57900e bne a0, a5, 0x40003e1b 40003e0c: 02a0db movi a0, 219 40003e0f: 024100 s8i a0, a1, 0 40003e12: 460100 j 0x40003e1b 40003e15: 02a0c0 movi a0, 192 40003e18: 024100 s8i a0, a1, 0 40003e1b: 06d6ff j 0x40003d77 40003e1e: 0000 40003e20: 82a0db movi a8, 219 40003e23: 920100 l8ui a9, a1, 0 40003e26: 9921 s32i.n a9, a1, 8 40003e28: 824100 s8i a8, a1, 0 40003e2b: 568dfb bnez a13, 0x40003de7 40003e2e: 2d0c mov.n a2, a12 40003e30: 3d01 mov.n a3, a1 40003e32: 450900 call0 uart_rx_readbuff ; 0x40003ec8 40003e35: 66125c bnei a2, 1, 0x40003e95 40003e38: 2d0c mov.n a2, a12 40003e3a: 3d01 mov.n a3, a1 40003e3c: 850800 call0 uart_rx_readbuff ; 0x40003ec8 40003e3f: 2612f5 beqi a2, 1, 0x40003e38 40003e42: c61300 j 0x40003e95 40003e45: 00 40003e46: 2d0c mov.n a2, a12 40003e48: 3d01 mov.n a3, a1 40003e4a: c50700 call0 uart_rx_readbuff ; 0x40003ec8 40003e4d: 26120b beqi a2, 1, 0x40003e5c 40003e50: a20100 l8ui a10, a1, 0 40003e53: b2a0c0 movi a11, 192 40003e56: b0aac0 sub a10, a10, a11 40003e59: 161aee beqz a10, 0x40003d3e 40003e5c: 2d0c mov.n a2, a12 40003e5e: 3d01 mov.n a3, a1 40003e60: 450600 call0 uart_rx_readbuff ; 0x40003ec8 40003e63: 2612f5 beqi a2, 1, 0x40003e5c 40003e66: 020100 l8ui a0, a1, 0 40003e69: 22a0c0 movi a2, 192 40003e6c: 2790ec bne a0, a2, 0x40003e5c 40003e6f: c6b2ff j 0x40003d3e 40003e72: 000000 40003e75: 0c34 movi.n a4, 3 40003e77: 49ef s32i.n a4, a15, 56 40003e79: 560aed bnez a10, 0x40003d4d 40003e7c: 86afff j 0x40003d3e 40003e7f: 000000 40003e82: c02c20 or a2, a12, a12 40003e85: 103120 or a3, a1, a1 40003e88: 52a004 movi a5, 4 40003e8b: 59ef s32i.n a5, a15, 56 40003e8d: 850300 call0 uart_rx_readbuff ; 0x40003ec8 40003e90: 0b62 addi.n a6, a2, -1 40003e92: 1676eb beqz a6, 0x40003d4d 40003e95: 48ef l32i.n a4, a15, 56 40003e97: 46d6ff j 0x40003df4 40003e9a: 0841 l32i.n a0, a1, 16 40003e9c: c851 l32i.n a12, a1, 20 40003e9e: d861 l32i.n a13, a1, 24 40003ea0: 2d0e mov.n a2, a14 40003ea2: f881 l32i.n a15, a1, 32 40003ea4: e871 l32i.n a14, a1, 28 40003ea6: 12c130 addi a1, a1, 48 40003ea9: 0df0 ret.n 40003eab: 00 ; RcvMsg ; calls recv_packet, returns 0 if OK, 1 if bad ; (which is silly as this is the only thing that calls recv_packet) RcvMsg: 40003eac: 12c1f0 addi a1, a1, -16 ; space on stack 40003eaf: 0901 s32i.n a0, a1, 0 ; save return 40003eb1: 45e5ff call0 recv_packet ; 0x40003d08 40003eb4: 0c14 movi.n a4, 1 ; a4 = 1 40003eb6: 3801 l32i.n a3, a1, 0 ; get return 40003eb8: 0c00 movi.n a0, 0 ; a0 = 0 40003eba: 12c110 addi a1, a1, 16 ; restore stack 40003ebd: 200483 moveqz a0, a4, a2 ; a0 = a4 if a2 == 0 40003ec0: 2d00 mov.n a2, a0 ; return 0 or 1 40003ec2: 0d03 mov.n a0, a3 40003ec4: 0df0 ret.n 40003ec6: 0000 ; called by recv_packet and UartGetCmdLn uart_rx_readbuff: 40003ec8: 6832 l32i.n a6, a2, 12 40003eca: 4822 l32i.n a4, a2, 8 40003ecc: 679404 bne a4, a6, 0x40003ed4 40003ecf: 0c12 movi.n a2, 1 ; return 1 40003ed1: 0df0 ret.n 40003ed3: 00 40003ed4: 720600 l8ui a7, a6, 0 40003ed7: 724300 s8i a7, a3, 0 40003eda: 3812 l32i.n a3, a2, 4 40003edc: 5832 l32i.n a5, a2, 12 40003ede: 72d301 addmi a7, a3, 0x100 40003ee1: 1b55 addi.n a5, a5, 1 40003ee3: 5932 s32i.n a5, a2, 12 40003ee5: 779505 bne a5, a7, 0x40003eee 40003ee8: 3932 s32i.n a3, a2, 12 40003eea: 0c02 movi.n a2, 0 ; return 0 40003eec: 0df0 ret.n 40003eee: 0c02 movi.n a2, 0 ; return 0 40003ef0: 0df0 ret.n 40003ef2: 0000 ; never called that I have found UartGetCmdLn: 40003ef4: 12c1f0 addi a1, a1, -16 40003ef7: 0931 s32i.n a0, a1, 12 40003ef9: 01cafc l32r a0, [UartDev] ; [0x3fffde10] 0x40003224 40003efc: 2921 s32i.n a2, a1, 8 40003efe: 08b0 l32i.n a0, a0, 44 40003f00: 0c12 movi.n a2, 1 40003f02: 262006 beqi a0, 2, 0x40003f0c 40003f05: 0831 l32i.n a0, a1, 12 40003f07: 12c110 addi a1, a1, 16 40003f0a: 0df0 ret.n 40003f0c: 21c6fc l32r a2, [UartDev] ; [0x3fffde10] 0x40003224 40003f0f: 3d01 mov.n a3, a1 40003f11: 22c218 addi a2, a2, 24 40003f14: 2911 s32i.n a2, a1, 4 40003f16: 05fbff call0 uart_rx_readbuff ; 0x40003ec8 40003f19: 9c12 beqz.n a2, 0x40003f2e 40003f1b: 0831 l32i.n a0, a1, 12 40003f1d: 31c1fc l32r a3, [UartDev] ; [0x3fffde10] 0x40003224 40003f20: 4821 l32i.n a4, a1, 8 40003f22: 0c02 movi.n a2, 0 40003f24: 224400 s8i a2, a4, 0 40003f27: 29b3 s32i.n a2, a3, 44 40003f29: 12c110 addi a1, a1, 16 40003f2c: 0df0 ret.n 40003f2e: 2811 l32i.n a2, a1, 4 40003f30: 5821 l32i.n a5, a1, 8 40003f32: 620100 l8ui a6, a1, 0 40003f35: 103120 or a3, a1, a1 40003f38: 624500 s8i a6, a5, 0 40003f3b: 52c501 addi a5, a5, 1 40003f3e: 526102 s32i a5, a1, 8 40003f41: 45f8ff call0 uart_rx_readbuff ; 0x40003ec8 40003f44: 1662fe beqz a2, 0x40003f2e 40003f47: 06f4ff j 0x40003f1b 40003f4a: 0000 ; Simply an accessor method to return the pointer to the ; Uart control block ; never used in the bootrom, so this is for external use. GetUartDevice: 40003f4c: 21b6fc l32r a2, [UartDev] ; [0x3fffde10] 0x40003224 40003f4f: 0df0 ret.n 40003f51: 000000 40003f54: 60000a00 ; l32r SelectSpiFunction: 40003f58: 82aecf movi a8, 0xfffffecf 40003f5b: a2af7f movi a10, -129 40003f5e: 1c06 movi.n a6, 16 40003f60: 517ff4 l32r a5, [0x60000600] ; 0x4000115c 40003f63: c02000 memw 40003f66: 322587 l32i a3, a5, 0x21c 40003f69: a03310 and a3, a3, a10 40003f6c: c02000 memw 40003f6f: 326587 s32i a3, a5, 0x21c 40003f72: c02000 memw 40003f75: 222587 l32i a2, a5, 0x21c 40003f78: 802210 and a2, a2, a8 40003f7b: c02000 memw 40003f7e: 226587 s32i a2, a5, 0x21c 40003f81: c02000 memw 40003f84: b22587 l32i a11, a5, 0x21c 40003f87: 60bb20 or a11, a11, a6 40003f8a: c02000 memw 40003f8d: b26587 s32i a11, a5, 0x21c 40003f90: c02000 memw 40003f93: 922588 l32i a9, a5, 0x220 40003f96: a09910 and a9, a9, a10 40003f99: c02000 memw 40003f9c: 926588 s32i a9, a5, 0x220 40003f9f: c02000 memw 40003fa2: 722588 l32i a7, a5, 0x220 40003fa5: 807710 and a7, a7, a8 40003fa8: c02000 memw 40003fab: 726588 s32i a7, a5, 0x220 40003fae: c02000 memw 40003fb1: 422588 l32i a4, a5, 0x220 40003fb4: 604420 or a4, a4, a6 40003fb7: c02000 memw 40003fba: 426588 s32i a4, a5, 0x220 40003fbd: c02000 memw 40003fc0: 322589 l32i a3, a5, 0x224 40003fc3: a03310 and a3, a3, a10 40003fc6: c02000 memw 40003fc9: 326589 s32i a3, a5, 0x224 40003fcc: c02000 memw 40003fcf: 222589 l32i a2, a5, 0x224 40003fd2: 802210 and a2, a2, a8 40003fd5: c02000 memw 40003fd8: 226589 s32i a2, a5, 0x224 40003fdb: c02000 memw 40003fde: b22589 l32i a11, a5, 0x224 40003fe1: 60bb20 or a11, a11, a6 40003fe4: c02000 memw 40003fe7: b26589 s32i a11, a5, 0x224 40003fea: c02000 memw 40003fed: 92258a l32i a9, a5, 0x228 40003ff0: a09910 and a9, a9, a10 40003ff3: c02000 memw 40003ff6: 92658a s32i a9, a5, 0x228 40003ff9: c02000 memw 40003ffc: 72258a l32i a7, a5, 0x228 40003fff: 807710 and a7, a7, a8 40004002: c02000 memw 40004005: 72658a s32i a7, a5, 0x228 40004008: c02000 memw 4000400b: 42258a l32i a4, a5, 0x228 4000400e: 604420 or a4, a4, a6 40004011: c02000 memw 40004014: 42658a s32i a4, a5, 0x228 40004017: c02000 memw 4000401a: 32258b l32i a3, a5, 0x22c 4000401d: a03310 and a3, a3, a10 40004020: c02000 memw 40004023: 32658b s32i a3, a5, 0x22c 40004026: c02000 memw 40004029: 22258b l32i a2, a5, 0x22c 4000402c: 802210 and a2, a2, a8 4000402f: c02000 memw 40004032: 22658b s32i a2, a5, 0x22c 40004035: c02000 memw 40004038: b2258b l32i a11, a5, 0x22c 4000403b: 60bb20 or a11, a11, a6 4000403e: c02000 memw 40004041: b2658b s32i a11, a5, 0x22c 40004044: c02000 memw 40004047: 92258c l32i a9, a5, 0x230 4000404a: a09910 and a9, a9, a10 4000404d: c02000 memw 40004050: 92658c s32i a9, a5, 0x230 40004053: c02000 memw 40004056: 72258c l32i a7, a5, 0x230 40004059: 807710 and a7, a7, a8 4000405c: c02000 memw 4000405f: 72658c s32i a7, a5, 0x230 40004062: c02000 memw 40004065: 42258c l32i a4, a5, 0x230 40004068: 604420 or a4, a4, a6 4000406b: c02000 memw 4000406e: 42658c s32i a4, a5, 0x230 40004071: 0c02 movi.n a2, 0 40004073: 31b8ff l32r a3, [0x60000a00] ; 0x40003f54 40004076: c02000 memw 40004079: 2263d2 s32i a2, a3, 0x348 4000407c: 0df0 ret.n 4000407e: 0000 esp_spi_erase_chip: 40004080: 12c1f0 addi a1, a1, -16 40004083: c911 s32i.n a12, a1, 4 40004085: 0901 s32i.n a0, a1, 0 40004087: cd02 mov.n a12, a2 40004089: 054000 call0 Wait_SPI_Idle ; 0x4000448c 4000408c: 31e2f0 l32r a3, [0x00400000] ; 0x40000414 4000408f: 01cdf3 l32r a0, [0x60000200] ; 0x40000fc4 40004092: c02000 memw 40004095: 3900 s32i.n a3, a0, 0 ; SPI_CMD = SPI_FLASH_CE 40004097: c02000 memw 4000409a: 222000 l32i a2, a0, 0 4000409d: 167200 beqz a2, 0x400040a8 ; if already finished... 400040a0: c02000 memw 400040a3: 4800 l32i.n a4, a0, 0 400040a5: 5674ff bnez a4, 0x400040a0 ; wait while the command is running 400040a8: c02c20 or a2, a12, a12 400040ab: 053e00 call0 Wait_SPI_Idle ; 0x4000448c 400040ae: 22a000 movi a2, 0 400040b1: c22101 l32i a12, a1, 4 400040b4: 0801 l32i.n a0, a1, 0 400040b6: 12c110 addi a1, a1, 16 400040b9: 0df0 ret.n 400040bb: 00 400040bc: 01000000 ; l32r esp_spi_erase_sector: 400040c0: 12c1f0 addi a1, a1, -16 400040c3: 2901 s32i.n a2, a1, 0 400040c5: c921 s32i.n a12, a1, 8 400040c7: 0911 s32i.n a0, a1, 4 400040c9: cd03 mov.n a12, a3 ; from_address 400040cb: 3000b4 extui a0, a3, 0, 12 ; from_address & 0xfff 400040ce: 8ca0 beqz.n a0, 0x400040dc ; is it at a sector (4K here) boundary? 400040d0: 0c12 movi.n a2, 1 ; return 1 400040d2: c821 l32i.n a12, a1, 8 400040d4: 0811 l32i.n a0, a1, 4 400040d6: 12c110 addi a1, a1, 16 400040d9: 0df0 ret.n 400040db: 00 400040dc: c53a00 call0 Wait_SPI_Idle ; 0x4000448c 400040df: 022100 l32i a0, a1, 0 400040e2: 51cdf0 l32r a5, [0x00ffffff] ; 0x40000418 400040e5: 21b7f3 l32r a2, [0x60000200] ; 0x40000fc4 400040e8: 505c10 and a5, a12, a5 ; from_address & 0xffffff (i.e. max 16M) 400040eb: c02000 memw 400040ee: 526201 s32i a5, a2, 4 ; SPI_ADDR = from_address & 0xffffff 400040f1: 41f2ff l32r a4, [0x01000000] ; 0x400040bc 400040f4: c02000 memw 400040f7: 426200 s32i a4, a2, 0 ; SPI_CMD = SPI_FLASH_SE 400040fa: c02000 memw 400040fd: 3802 l32i.n a3, a2, 0 400040ff: 8c63 beqz.n a3, 0x40004109 ; SPI_CMD == 0? i.e. command completed 40004101: c02000 memw 40004104: 6802 l32i.n a6, a2, 0 40004106: 5676ff bnez a6, 0x40004101 ; wait while command is running 40004109: 002020 or a2, a0, a0 4000410c: c53700 call0 Wait_SPI_Idle ; 0x4000448c 4000410f: 22a000 movi a2, 0 ; return 0 40004112: c22102 l32i a12, a1, 8 40004115: 0811 l32i.n a0, a1, 4 40004117: 12c110 addi a1, a1, 16 4000411a: 0df0 ret.n 4000411c: 00800000 ; l32r esp_spi_erase_block: 40004120: 12c1f0 addi a1, a1, -16 40004123: 326100 s32i a3, a1, 0 40004126: c26102 s32i a12, a1, 8 40004129: 026101 s32i a0, a1, 4 4000412c: cd02 mov.n a12, a2 4000412e: c53500 call0 Wait_SPI_Idle ; 0x4000448c 40004131: 51b9f0 l32r a5, [0x00ffffff] ; 0x40000418 40004134: 4801 l32i.n a4, a1, 0 40004136: 01a3f3 l32r a0, [0x60000200] ; 0x40000fc4 40004139: 504410 and a4, a4, a5 4000413c: c02000 memw 4000413f: 4910 s32i.n a4, a0, 4 40004141: 31f6ff l32r a3, [0x00800000] ; 0x4000411c 40004144: c02000 memw 40004147: 3900 s32i.n a3, a0, 0 ; SPI_CMD = SPI_FLASH_BE 40004149: c02000 memw 4000414c: 2800 l32i.n a2, a0, 0 4000414e: 8c62 beqz.n a2, 0x40004158 ; if already finished... 40004150: c02000 memw 40004153: 6800 l32i.n a6, a0, 0 40004155: 5676ff bnez a6, 0x40004150 ; wait while command is running 40004158: c02c20 or a2, a12, a12 4000415b: 053300 call0 Wait_SPI_Idle ; 0x4000448c 4000415e: 22a000 movi a2, 0 40004161: c22102 l32i a12, a1, 8 40004164: 0811 l32i.n a0, a1, 4 40004166: 12c110 addi a1, a1, 16 40004169: 0df0 ret.n 4000416b: 00 4000416c: 20000000 ; l32r 40004170: 02000000 ; l32r sub_4174: 40004174: 12c1e0 addi a1, a1, -32 40004177: f951 s32i.n a15, a1, 20 40004179: 3971 s32i.n a3, a1, 28 4000417b: 0911 s32i.n a0, a1, 4 4000417d: e941 s32i.n a14, a1, 16 4000417f: c921 s32i.n a12, a1, 8 40004181: d931 s32i.n a13, a1, 12 40004183: cd02 mov.n a12, a2 40004185: dd04 mov.n a13, a4 40004187: ed05 mov.n a14, a5 40004189: 0c30 movi.n a0, 3 4000418b: 570011 bnone a0, a5, 0x400041a0 4000418e: 0c12 movi.n a2, 1 40004190: c821 l32i.n a12, a1, 8 40004192: d831 l32i.n a13, a1, 12 40004194: e841 l32i.n a14, a1, 16 40004196: f851 l32i.n a15, a1, 20 40004198: 0811 l32i.n a0, a1, 4 4000419a: 12c120 addi a1, a1, 32 4000419d: 0df0 ret.n 4000419f: 00 400041a0: f22107 l32i a15, a1, 28 400041a3: 322204 l32i a3, a2, 16 400041a6: 3901 s32i.n a3, a1, 0 400041a8: 2d0f mov.n a2, a15 400041aa: c50b0a call0 __umodsi3 ; 0x4000e268 400041ad: 2a3e add.n a3, a14, a2 400041af: 2801 l32i.n a2, a1, 0 400041b1: 3732d9 bltu a2, a3, 0x4000418e 400041b4: 2d0c mov.n a2, a12 400041b6: c26106 s32i a12, a1, 24 400041b9: 052d00 call0 Wait_SPI_Idle ; 0x4000448c 400041bc: e61e02 bgei a14, 1, 0x400041c2 400041bf: 863500 j 0x40004299 400041c2: c180f3 l32r a12, [0x60000200] ; 0x40000fc4 400041c5: 0194f0 l32r a0, [0x00ffffff] ; 0x40000418 400041c8: 061a00 j 0x40004234 400041cb: 00 400041cc: 31e8ff l32r a3, [0x20000000] ; 0x4000416c 400041cf: 306720 or a6, a7, a3 400041d2: c02000 memw 400041d5: 691c s32i.n a6, a12, 4 400041d7: 0c04 movi.n a4, 0 400041d9: c064a0 addx4 a6, a4, a12 400041dc: 580d l32i.n a5, a13, 0 400041de: c02000 memw 400041e1: 526610 s32i a5, a6, 64 400041e4: 1b44 addi.n a4, a4, 1 400041e6: 4b5d addi.n a5, a13, 4 400041e8: 404074 extui a4, a4, 0, 8 400041eb: c064a0 addx4 a6, a4, a12 400041ee: 5805 l32i.n a5, a5, 0 400041f0: c02000 memw 400041f3: 526610 s32i a5, a6, 64 400041f6: 8bdd addi.n a13, a13, 8 400041f8: 1b44 addi.n a4, a4, 1 400041fa: 404074 extui a4, a4, 0, 8 400041fd: 6684d8 bnei a4, 8, 0x400041d9 40004200: e2cee0 addi a14, a14, -32 40004203: f2cf20 addi a15, a15, 32 40004206: 222106 l32i a2, a1, 24 40004209: 052300 call0 SPI_write_enable ; 0x4000443c 4000420c: 56e2f7 bnez a2, 0x4000418e 4000420f: c02000 memw 40004212: 81d7ff l32r a8, [0x02000000] ; 0x40004170 40004215: 890c s32i.n a8, a12, 0 40004217: c02000 memw 4000421a: 722c00 l32i a7, a12, 0 4000421d: 167700 beqz a7, 0x40004228 40004220: c02000 memw 40004223: 980c l32i.n a9, a12, 0 40004225: 5679ff bnez a9, 0x40004220 40004228: 222106 l32i a2, a1, 24 4000422b: 052600 call0 Wait_SPI_Idle ; 0x4000448c 4000422e: 017af0 l32r a0, [0x00ffffff] ; 0x40000418 40004231: a61e64 blti a14, 1, 0x40004299 40004234: 007f10 and a7, a15, a0 40004237: e6ce91 bgei a14, 32, 0x400041cc 4000423a: 804e01 slli a4, a14, 24 4000423d: 404720 or a4, a7, a4 40004240: c02000 memw 40004243: 426c01 s32i a4, a12, 4 40004246: e06014 extui a6, a14, 0, 2 40004249: e03221 srai a3, a14, 2 4000424c: 52c301 addi a5, a3, 1 4000424f: 603593 movnez a3, a5, a6 40004252: 303074 extui a3, a3, 0, 8 40004255: bcb3 beqz.n a3, 0x40004294 40004257: 0c04 movi.n a4, 0 40004259: 07630b bbci a3, 0, 0x40004268 4000425c: 580d l32i.n a5, a13, 0 4000425e: c02000 memw 40004261: 526c10 s32i a5, a12, 64 40004264: 4bdd addi.n a13, a13, 4 40004266: 0c14 movi.n a4, 1 40004268: 306141 srli a6, a3, 1 4000426b: ac56 beqz.n a6, 0x40004294 ; XXX - no calls found to this yet. 4000426d: c064a0 addx4 a6, a4, a12 40004270: 580d l32i.n a5, a13, 0 40004272: c02000 memw 40004275: 526610 s32i a5, a6, 64 40004278: 1b44 addi.n a4, a4, 1 4000427a: 4b5d addi.n a5, a13, 4 4000427c: 404074 extui a4, a4, 0, 8 4000427f: c064a0 addx4 a6, a4, a12 40004282: 5805 l32i.n a5, a5, 0 40004284: c02000 memw 40004287: 526610 s32i a5, a6, 64 4000428a: 8bdd addi.n a13, a13, 8 4000428c: 1b44 addi.n a4, a4, 1 4000428e: 404074 extui a4, a4, 0, 8 40004291: 4793d8 bne a3, a4, 0x4000426d 40004294: 0c0e movi.n a14, 0 40004296: 06dbff j 0x40004206 40004299: 0c02 movi.n a2, 0 4000429b: c821 l32i.n a12, a1, 8 4000429d: d831 l32i.n a13, a1, 12 4000429f: e841 l32i.n a14, a1, 16 400042a1: f851 l32i.n a15, a1, 20 400042a3: 0811 l32i.n a0, a1, 4 400042a5: 12c120 addi a1, a1, 32 400042a8: 0df0 ret.n 400042aa: 0000 ; called from SPIRead only ; with: ; a2 = (SpiFlashChip*) flashchip ; a3 = offset in flash ; a4 = buffer address ; - must be uint32_t aligned, ; - must have space for extra bytes - 1..3 - if byte_count % 4 != 0 ; a5 = byte count sub_42ac: 400042ac: 12c1f0 addi a1, a1, -16 ; stack 400042af: d921 s32i.n a13, a1, 8 ; save a13 400042b1: e931 s32i.n a14, a1, 12 ; save a14 400042b3: c911 s32i.n a12, a1, 4 ; save a12 400042b5: 0901 s32i.n a0, a1, 0 ; return 400042b7: cd04 mov.n a12, a4 ; - target buffer 400042b9: 0812 l32i.n a0, a2, 4 ; flashchip->chip_size 400042bb: 3a45 add.n a4, a5, a3 ; a4 = a3 + a5 (offset+count) 400042bd: 47b011 bgeu a0, a4, 0x400042d2 ; trouble (end of read is beyond end of device) 400042c0: 0c12 movi.n a2, 1 ; a2 = 1 400042c2: c811 l32i.n a12, a1, 4 ; restore 400042c4: d821 l32i.n a13, a1, 8 ; restore 400042c6: e831 l32i.n a14, a1, 12 ; restore 400042c8: 0801 l32i.n a0, a1, 0 ; restore return 400042ca: 12c110 addi a1, a1, 16 400042cd: 0df0 ret.n 400042cf: 000000 ; continue after range validation 400042d2: 30e320 or a14, a3, a3 400042d5: 50d520 or a13, a5, a5 400042d8: 051b00 call0 Wait_SPI_Idle ; 0x4000448c 400042db: e61d02 bgei a13, 1, 0x400042e1 ; byte_count >= 1 400042de: 863400 j 0x400043b4 ; goto return 0 400042e1: 0138f3 l32r a0, [0x60000200] ; 0x40000fc4 400042e4: 51a2ff l32r a5, [0x20000000] ; 0x4000416c 400042e7: 412ff0 l32r a4, [0x80000000] ; 0x400003a4 400042ea: e6cd76 bgei a13, 32, 0x40004364 ; byte_count >= 32 ; apparently (todo: confirm this) SPI_W array is split into 2 groups of 8 ; probably by SPI_USR_MOSI_HIGHPART as SPIRead uses 0..7 for reading, thus ; only registers 0..7 (i.e. 32 bytes) are available for MISO 400042ed: 807d01 slli a7, a13, 24 ; byte_count << 24 400042f0: 707e20 or a7, a14, a7 ; byte_count << 24 | offset_in_flash 400042f3: c02000 memw 400042f6: 726001 s32i a7, a0, 4 ; SPI_ADDR = byte_count << 24 | offset_in_flash 400042f9: c02000 memw 400042fc: 4900 s32i.n a4, a0, 0 ; SPI_CMD = SPI_FLASH_READ 400042fe: c02000 memw ;; 40004301: 6800 l32i.n a6, a0, 0 ;; 40004303: 8c66 beqz.n a6, 0x4000430d ;; while (SPI_CMD != 0) /* wait */; 40004305: c02000 memw ;; 40004308: 8800 l32i.n a8, a0, 0 ;; 4000430a: 5678ff bnez a8, 0x40004305 ;; ; note that in _this_ block it reads 1 to 31 bytes, so all those count/index maskings are meaningless ; they were probably defined as uint8_t, so compiler inserted those extui to ensure they are bytes 4000430d: d0a014 extui a10, a13, 0, 2 ; byte_count & 0x3 // any "tail" bytes outside of uint32 40004310: d07221 srai a7, a13, 2 ; byte_count >> 2 // uin32_count 40004313: 1b97 addi.n a9, a7, 1 40004315: a07993 movnez a7, a9, a10 ; uin32_count = tail_bytes ? uin32_count + 1 : uin32_count 40004318: 703074 extui a3, a7, 0, 8 4000431b: 165309 beqz a3, 0x400043b4 ; if done, then goto return 0 4000431e: 0c02 movi.n a2, 0 ; i = 0 ; the block below looks like a manual loop unrolling to make it copy from 2 SPI_W registers at a time 40004320: 07670c bbci a7, 0, 0x40004330 ; even uin32_count? 40004323: c02000 memw 40004326: 0c12 movi.n a2, 1 ; i = 1 40004328: b22010 l32i a11, a0, 64 ; *SPI_W 4000432b: b26c00 s32i a11, a12, 0 ; *uint32_buf = *SPI_W 4000432e: 4bcc addi.n a12, a12, 4 ; ++uint32_buf 40004330: 30d141 srli a13, a3, 1 40004333: 16dd07 beqz a13, 0x400043b4 ; if done, then goto return 0 ; the unrolled loop 40004336: 0062a0 addx4 a6, a2, a0 ; spi_base = SPI_BASE + i * 4 40004339: c02000 memw 4000433c: 1b22 addi.n a2, a2, 1 ; i++ 4000433e: 622610 l32i a6, a6, 64 ; *spi_w 40004341: 690c s32i.n a6, a12, 0 ; *uint32_buf = *spi_w 40004343: 202074 extui a2, a2, 0, 8 40004346: 4b7c addi.n a7, a12, 4 ; buf_next_uint32 = uint32_buf + 4 40004348: 0062a0 addx4 a6, a2, a0 ; spi_base = SPI_BASE + i * 4 4000434b: c02000 memw 4000434e: 8bcc addi.n a12, a12, 8 ; uint32_buf += 2 40004350: 1b22 addi.n a2, a2, 1 ; i++ 40004352: 622610 l32i a6, a6, 64 ; *spi_w 40004355: 6907 s32i.n a6, a7, 0 ; *buf_next_uint32 = *spi_w 40004357: 202074 extui a2, a2, 0, 8 4000435a: 2793d8 bne a3, a2, 0x40004336 ; while (i != uin32_count) 4000435d: c61400 j 0x400043b4 ; goto return 0 40004360: 00 40004361: a6cd88 blti a13, 32, 0x400042ed ; if (byte_count < 32) ; the loop below reads 32 bytes at a time ; and as in the loop above (that reads the tail) extui are likely just leftovers from uint8_t declarations 40004364: 508e20 or a8, a14, a5 ; offset_in_flash | 0x20000000 40004367: c02000 memw 4000436a: 8910 s32i.n a8, a0, 4 ; SPI_ADDR = offset_in_flash | 32 << 24 4000436c: c02000 memw 4000436f: 4900 s32i.n a4, a0, 0 ; SPI_CMD = SPI_FLASH_READ 40004371: c02000 memw ;; 40004374: 7800 l32i.n a7, a0, 0 ;; while (SPI_CMD != 0) /* wait */; 40004376: 8c87 beqz.n a7, 0x40004382 ;; 40004378: c02000 memw ;; 4000437b: 9800 l32i.n a9, a0, 0 ;; 4000437d: 3df0 nop.n ;; 4000437f: 5659ff bnez a9, 0x40004378 ;; 40004382: 0c02 movi.n a2, 0 ; i = 0 40004384: 0032a0 addx4 a3, a2, a0 ; spi_base = SPI_BASE + i * 4 40004387: c02000 memw 4000438a: 1b22 addi.n a2, a2, 1 ; i++ 4000438c: 322310 l32i a3, a3, 64 ; *spi_w 4000438f: 390c s32i.n a3, a12, 0 ; *uint32_buf = *spi_w 40004391: 202074 extui a2, a2, 0, 8 40004394: 4b6c addi.n a6, a12, 4 ; buf_next_uint32 = uint32_buf + 4 40004396: 0032a0 addx4 a3, a2, a0 ; spi_base = SPI_BASE + i * 4 40004399: c02000 memw 4000439c: 8bcc addi.n a12, a12, 8 ; uint32_buf += 2 4000439e: 1b22 addi.n a2, a2, 1 ; i++ 400043a0: 322310 l32i a3, a3, 64 ; *spi_w 400043a3: 3906 s32i.n a3, a6, 0 ; *buf_next_uint32 = *spi_w 400043a5: 202074 extui a2, a2, 0, 8 400043a8: 6682d8 bnei a2, 8, 0x40004384 ; while (i != 8) 400043ab: e2ce20 addi a14, a14, 32 ; offset_in_flash += 32 400043ae: d2cde0 addi a13, a13, -32 ; byte_count -= 32 400043b1: e61dac bgei a13, 1, 0x40004361 ; while (byte_count >= 1) 400043b4: 0c02 movi.n a2, 0 400043b6: c811 l32i.n a12, a1, 4 400043b8: d821 l32i.n a13, a1, 8 400043ba: e831 l32i.n a14, a1, 12 400043bc: 0801 l32i.n a0, a1, 0 400043be: 12c110 addi a1, a1, 16 400043c1: 0df0 ret.n 400043c3: 00 400043c4: 08000000 ; l32r SPI_read_status: 400043c8: 61ffff l32r a6, [0x08000000] ; 0x400043c4 400043cb: 51fef2 l32r a5, [0x60000200] ; 0x40000fc4 400043ce: 0c08 movi.n a8, 0 400043d0: c02000 memw 400043d3: 8945 s32i.n a8, a5, 16 400043d5: c02000 memw 400043d8: 6905 s32i.n a6, a5, 0 400043da: c02000 memw 400043dd: 4805 l32i.n a4, a5, 0 400043df: 8c64 beqz.n a4, 0x400043e9 400043e1: c02000 memw 400043e4: 7805 l32i.n a7, a5, 0 400043e6: 5677ff bnez a7, 0x400043e1 400043e9: 9852 l32i.n a9, a2, 20 400043eb: c02000 memw 400043ee: 7845 l32i.n a7, a5, 16 400043f0: 907710 and a7, a7, a9 400043f3: 07e7d9 bbsi a7, 0, 0x400043d0 400043f6: 7903 s32i.n a7, a3, 0 400043f8: 0c02 movi.n a2, 0 400043fa: 0df0 ret.n 400043fc: 04000000 ; l32r SPI_write_status: 40004400: 12c1f0 addi a1, a1, -16 40004403: 3901 s32i.n a3, a1, 0 40004405: 0911 s32i.n a0, a1, 4 40004407: 450800 call0 Wait_SPI_Idle ; 0x4000448c 4000440a: 01eef2 l32r a0, [0x60000200] ; 0x40000fc4 4000440d: c02000 memw 40004410: 4801 l32i.n a4, a1, 0 40004412: 4940 s32i.n a4, a0, 16 40004414: 31faff l32r a3, [0x04000000] ; 0x400043fc 40004417: c02000 memw 4000441a: 3900 s32i.n a3, a0, 0 4000441c: c02000 memw 4000441f: 2800 l32i.n a2, a0, 0 40004421: 167200 beqz a2, 0x4000442c 40004424: c02000 memw 40004427: 5800 l32i.n a5, a0, 0 40004429: 5675ff bnez a5, 0x40004424 4000442c: 0c02 movi.n a2, 0 4000442e: 0811 l32i.n a0, a1, 4 40004430: 12c110 addi a1, a1, 16 40004433: 0df0 ret.n 40004435: 000000 40004438: 40000000 ; l32r ; Called with one argument, a pointer to the SPI-param block SPI_write_enable: 4000443c: 12c1f0 addi a1, a1, -16 ; stack space 4000443f: d931 s32i.n a13, a1, 12 40004441: c921 s32i.n a12, a1, 8 40004443: 0911 s32i.n a0, a1, 4 ; save return 40004445: cd02 mov.n a12, a2 ; SPI-param 40004447: 0c00 movi.n a0, 0 ; a0 = 0 40004449: 0901 s32i.n a0, a1, 0 ; write to stack 4000444b: 050400 call0 Wait_SPI_Idle ; 0x4000448c 4000444e: 31faff l32r a3, [Vec_base] ; [0x40000000] 0x40004438 40004451: 01dcf2 l32r a0, [0x60000200] ; 0x40000fc4 40004454: c02000 memw 40004457: 3900 s32i.n a3, a0, 0 ; write to IO 40004459: c02000 memw 4000445c: 2800 l32i.n a2, a0, 0 ; read back 4000445e: 168200 beqz a2, 0x4000446a 40004461: c02000 memw 40004464: 422000 l32i a4, a0, 0 ; read back again 40004467: 5664ff bnez a4, 0x40004461 ; spin till zero 4000446a: 5801 l32i.n a5, a1, 0 4000446c: 0c2d movi.n a13, 2 4000446e: 17e50b bbsi a5, 1, 0x4000447d 40004471: 2d0c mov.n a2, a12 40004473: 3d01 mov.n a3, a1 40004475: 05f5ff call0 SPI_read_status ; 0x400043c8 40004478: 6801 l32i.n a6, a1, 0 4000447a: d706f3 bnone a6, a13, 0x40004471 4000447d: 0c02 movi.n a2, 0 4000447f: c821 l32i.n a12, a1, 8 40004481: d831 l32i.n a13, a1, 12 40004483: 0811 l32i.n a0, a1, 4 40004485: 12c110 addi a1, a1, 16 40004488: 0df0 ret.n 4000448a: 0000 ; Bit 9 in the SPI_READY register indicates SPI ready/idle status Wait_SPI_Idle: 4000448c: 12c1f0 addi a1, a1, -16 4000448f: 0911 s32i.n a0, a1, 4 ; save return 40004491: 0172fa l32r a0, [0x3feffe00] ; 0x40002e5c 40004494: c02000 memw 40004497: 322083 l32i a3, a0, 0x20c ; SPI_READY 4000449a: 976308 bbci a3, 9, 0x400044a6 ; clear ? 4000449d: c02000 memw 400044a0: 422083 l32i a4, a0, 0x20c ; SPI_READY 400044a3: 97e4f6 bbsi a4, 9, 0x4000449d ; spin till clear 400044a6: 3d01 mov.n a3, a1 400044a8: c5f1ff call0 SPI_read_status ; 0x400043c8 400044ab: 0c06 movi.n a6, 0 ; a6 = 0 400044ad: 5811 l32i.n a5, a1, 4 ; fetch return 400044af: 0c10 movi.n a0, 1 ; a0 = 1 400044b1: 12c110 addi a1, a1, 16 ; restore stack 400044b4: 200683 moveqz a0, a6, a2 400044b7: 2d00 mov.n a2, a0 ; a2 = a0 (return value) 400044b9: 0d05 mov.n a0, a5 ; restore return 400044bb: 0df0 ret.n 400044bd: 000000 sub_44c0: 400044c0: 12c1f0 addi a1, a1, -16 400044c3: 0901 s32i.n a0, a1, 0 400044c5: c911 s32i.n a12, a1, 4 400044c7: 31d3ef l32r a3, [0x00400000] ; 0x40000414 400044ca: cd02 mov.n a12, a2 400044cc: 21bef2 l32r a2, [0x60000200] ; 0x40000fc4 400044cf: c02000 memw 400044d2: 0822 l32i.n a0, a2, 8 400044d4: 300020 or a0, a0, a3 400044d7: c02000 memw 400044da: 0922 s32i.n a0, a2, 8 400044dc: c02c20 or a2, a12, a12 400044df: c5f5ff call0 SPI_write_enable ; 0x4000443c 400044e2: 8ca2 beqz.n a2, 0x400044f0 400044e4: 0c12 movi.n a2, 1 400044e6: c811 l32i.n a12, a1, 4 400044e8: 0801 l32i.n a0, a1, 0 400044ea: 12c110 addi a1, a1, 16 400044ed: 0df0 ret.n 400044ef: 00 400044f0: 2d0c mov.n a2, a12 400044f2: 32a200 movi a3, 0x200 400044f5: 85f0ff call0 SPI_write_status ; 0x40004400 400044f8: 5682fe bnez a2, 0x400044e4 400044fb: 0c02 movi.n a2, 0 400044fd: c811 l32i.n a12, a1, 4 400044ff: 0801 l32i.n a0, a1, 0 40004501: 12c110 addi a1, a1, 16 40004504: 0df0 ret.n 40004506: 0000 sub_4508: 40004508: 12c1f0 addi a1, a1, -16 4000450b: 0911 s32i.n a0, a1, 4 4000450d: c921 s32i.n a12, a1, 8 4000450f: 31c1ef l32r a3, [0x00400000] ; 0x40000414 40004512: cd02 mov.n a12, a2 40004514: 21acf2 l32r a2, [0x60000200] ; 0x40000fc4 40004517: c02000 memw 4000451a: 0822 l32i.n a0, a2, 8 4000451c: 300020 or a0, a0, a3 4000451f: c02000 memw 40004522: 0922 s32i.n a0, a2, 8 40004524: c02c20 or a2, a12, a12 40004527: 45f1ff call0 SPI_write_enable ; 0x4000443c 4000452a: 8cb2 beqz.n a2, 0x40004539 4000452c: 0c12 movi.n a2, 1 4000452e: c821 l32i.n a12, a1, 8 40004530: 0811 l32i.n a0, a1, 4 40004532: 12c110 addi a1, a1, 16 40004535: 0df0 ret.n 40004537: 0000 40004539: 2d0c mov.n a2, a12 4000453b: 3d01 mov.n a3, a1 4000453d: 85e8ff call0 SPI_read_status ; 0x400043c8 40004540: 322100 l32i a3, a1, 0 40004543: c02c20 or a2, a12, a12 40004546: 303074 extui a3, a3, 0, 8 40004549: 45ebff call0 SPI_write_status ; 0x40004400 4000454c: 56c2fd bnez a2, 0x4000452c 4000454f: 0c02 movi.n a2, 0 40004551: c821 l32i.n a12, a1, 8 40004553: 0811 l32i.n a0, a1, 4 40004555: 12c110 addi a1, a1, 16 40004558: 0df0 ret.n 4000455a: 0000 4000455c: ffffefff ; l32r 40004560: 00288000 ; l32r 40004564: 00004000 ; l32r sub_4568: 40004568: 0c46 movi.n a6, 4 4000456a: 5196f2 l32r a5, [0x60000200] ; 0x40000fc4 4000456d: c02000 memw 40004570: 4875 l32i.n a4, a5, 28 40004572: 604420 or a4, a4, a6 40004575: c02000 memw 40004578: 4975 s32i.n a4, a5, 28 4000457a: 16620a beqz a2, 0x40004624 4000457d: 0b72 addi.n a7, a2, -1 4000457f: 16970a beqz a7, 0x4000462c 40004582: 82c2fe addi a8, a2, -2 40004585: 16b80a beqz a8, 0x40004634 40004588: 92c2fd addi a9, a2, -3 4000458b: 16d90a beqz a9, 0x4000463c 4000458e: b2c2fc addi a11, a2, -4 40004591: a104f3 l32r a10, [0x00002000] ; 0x400011a4 40004594: 0c06 movi.n a6, 0 40004596: b06a83 moveqz a6, a10, a11 40004599: 71f0f2 l32r a7, [0x60000600] ; 0x4000115c 4000459c: f62324 bgeui a3, 2, 0x400045c4 4000459f: 21fdf4 l32r a2, [0x00001000] ; 0x40001994 400045a2: c02000 memw 400045a5: 8825 l32i.n a8, a5, 8 400045a7: 208820 or a8, a8, a2 400045aa: c02000 memw 400045ad: 8925 s32i.n a8, a5, 8 400045af: 42a100 movi a4, 0x100 400045b2: c02000 memw 400045b5: 322780 l32i a3, a7, 0x200 400045b8: 403320 or a3, a3, a4 400045bb: c02000 memw 400045be: 326780 s32i a3, a7, 0x200 400045c1: 060d00 j 0x400045f9 400045c4: 304141 srli a4, a3, 1 400045c7: 0b23 addi.n a2, a3, -1 400045c9: 802211 slli a2, a2, 8 400045cc: 0b44 addi.n a4, a4, -1 400045ce: c04411 slli a4, a4, 4 400045d1: 4a22 add.n a2, a2, a4 400045d3: 2a23 add.n a2, a3, a2 400045d5: 41e1ff l32r a4, [0xffffefff] ; 0x4000455c 400045d8: 0b22 addi.n a2, a2, -1 400045da: c02000 memw 400045dd: b825 l32i.n a11, a5, 8 400045df: 40bb10 and a11, a11, a4 400045e2: c02000 memw 400045e5: b925 s32i.n a11, a5, 8 400045e7: a2aeff movi a10, 0xfffffeff 400045ea: c02000 memw 400045ed: 922780 l32i a9, a7, 0x200 400045f0: a09910 and a9, a9, a10 400045f3: c02000 memw 400045f6: 926780 s32i a9, a7, 0x200 400045f9: 81d9ff l32r a8, [0x00288000] ; 0x40004560 400045fc: 607220 or a7, a2, a6 400045ff: 807720 or a7, a7, a8 40004602: c02000 memw 40004605: 7925 s32i.n a7, a5, 8 40004607: 4198f8 l32r a4, [0x00100000] ; 0x40002868 4000460a: c02000 memw 4000460d: 4905 s32i.n a4, a5, 0 4000460f: c02000 memw 40004612: 322500 l32i a3, a5, 0 40004615: 167300 beqz a3, 0x40004620 40004618: c02000 memw 4000461b: 9805 l32i.n a9, a5, 0 4000461d: 5679ff bnez a9, 0x40004618 40004620: 0df0 ret.n 40004622: 0000 40004624: 61a6fe l32r a6, [0x01000000] ; 0x400040bc 40004627: 86dbff j 0x40004599 4000462a: 0000 4000462c: 618ff8 l32r a6, [0x00100000] ; 0x40002868 4000462f: 86d9ff j 0x40004599 40004632: 0000 40004634: 61bafe l32r a6, [0x00800000] ; 0x4000411c 40004637: 86d7ff j 0x40004599 4000463a: 0000 4000463c: 61caff l32r a6, [0x00004000] ; 0x40004564 4000463f: 86d5ff j 0x40004599 40004642: 0000 spi_flash_attach: 40004644: 12c1f0 addi a1, a1, -16 40004647: 0901 s32i.n a0, a1, 0 40004649: c590ff call0 SelectSpiFunction ; 0x40003f58 4000464c: 0c52 movi.n a2, 5 4000464e: 0c43 movi.n a3, 4 40004650: 45f1ff call0 sub_4568 ; 0x40004568 40004653: 0c52 movi.n a2, 5 40004655: 452900 call0 SPIReadModeCnfig ; 0x400048ec 40004658: 0801 l32i.n a0, a1, 0 4000465a: 12c110 addi a1, a1, 16 4000465d: 0df0 ret.n 4000465f: 00 40004660: fffdffff ; l32r 40004664: 00020000 ; l32r 40004668: fdffffff ; l32r 4000466c: fbf8ffff ; l32r 40004670: feffffff ; l32r 40004674: fcffffff ; l32r ; Cache Read Enable - enable SPI mapping via cache ; What is meant by cache here? Apparently the cache mapped over SPI flash ? ; This is controlled by bits in the SPI_READY register. ; ; 0x0001 - cache flush start ; 0x0002 - cache is empty ; 0x0100 - (bit 8) undocumented, but gets lots of attention here. ; 0x0200 - (bit 9) SPI is ready/idle Cache_Read_Enable: 40004678: 82a100 movi a8, 0x100 ; used way down below 4000467b: 71f8f9 l32r a7, [0x3feffe00] ; 0x40002e5c 4000467e: c02000 memw ; spin here until bit 8 in SPI_READY is clear ; (we loop while clearing the bit) 40004681: 522783 l32i a5, a7, 0x20c ; SPI_READY 40004684: 62aeff movi a6, 0xfffffeff ; ~0x100 40004687: 876519 bbci a5, 8, 0x400046a4 4000468a: c02000 memw 4000468d: a22783 l32i a10, a7, 0x20c ; SPI_READY 40004690: 60aa10 and a10, a10, a6 40004693: c02000 memw 40004696: a26783 s32i a10, a7, 0x20c ; SPI_READY 40004699: c02000 memw 4000469c: 922783 l32i a9, a7, 0x20c ; SPI_READY 4000469f: 3df0 nop.n 400046a1: 87e9e5 bbsi a9, 8, 0x4000468a 400046a4: 51efff l32r a5, [0xfffdffff] ; 0x40004660 400046a7: 7ceb movi.n a11, -2 400046a9: a2a001 movi a10, 1 400046ac: 9146f2 l32r a9, [0x60000200] ; 0x40000fc4 400046af: c02000 memw 400046b2: 6829 l32i.n a6, a9, 8 400046b4: 506610 and a6, a6, a5 400046b7: c02000 memw 400046ba: 626902 s32i a6, a9, 8 400046bd: c02000 memw 400046c0: 522783 l32i a5, a7, 0x20c ; SPI_READY 400046c3: b05510 and a5, a5, a11 ; -2 (clear bit 0) 400046c6: c02000 memw 400046c9: 526783 s32i a5, a7, 0x20c ; SPI_READY 400046cc: c02000 memw 400046cf: 622783 l32i a6, a7, 0x20c ; SPI_READY 400046d2: a06620 or a6, a6, a10 ; 1 (set bit 0) 400046d5: c02000 memw 400046d8: 626783 s32i a6, a7, 0x20c ; SPI_READY 400046db: c02000 memw ; spin until cache empty bit is set. 400046de: 522783 l32i a5, a7, 0x20c ; SPI_READY 400046e1: 17e508 bbsi a5, 1, 0x400046ed 400046e4: c02000 memw 400046e7: 622783 l32i a6, a7, 0x20c ; SPI_READY 400046ea: 1766f6 bbci a6, 1, 0x400046e4 400046ed: c02000 memw 400046f0: 622783 l32i a6, a7, 0x20c ; SPI_READY 400046f3: b06610 and a6, a6, a11 ; clear bit 0 400046f6: c02000 memw 400046f9: 626783 s32i a6, a7, 0x20c ; SPI_READY 400046fc: 51daff l32r a5, [0x00020000] ; 0x40004664 400046ff: c02000 memw 40004702: a829 l32i.n a10, a9, 8 40004704: 50aa20 or a10, a10, a5 40004707: c02000 memw 4000470a: a929 s32i.n a10, a9, 8 4000470c: c02000 memw 4000470f: 622783 l32i a6, a7, 0x20c ; SPI_READY 40004712: 16220c beqz a2, 0x400047d8 40004715: 92c2ff addi a9, a2, -1 40004718: 164909 beqz a9, 0x400047b0 4000471b: 51d3ff l32r a5, [0xfdffffff] ; 0x40004668 4000471e: c02000 memw 40004721: 222783 l32i a2, a7, 0x20c ; SPI_READY 40004724: 502210 and a2, a2, a5 40004727: c02000 memw 4000472a: 226783 s32i a2, a7, 0x20c ; SPI_READY 4000472d: b163fe l32r a11, [0x01000000] ; 0x400040bc 40004730: c02000 memw 40004733: a22783 l32i a10, a7, 0x20c ; SPI_READY 40004736: b0aa20 or a10, a10, a11 40004739: c02000 memw 4000473c: a26783 s32i a10, a7, 0x20c ; SPI_READY 4000473f: 51cbff l32r a5, [0xfbf8ffff] ; 0x4000466c 40004742: c02000 memw 40004745: 222783 l32i a2, a7, 0x20c ; SPI_READY 40004748: 502210 and a2, a2, a5 4000474b: c02000 memw 4000474e: 226783 s32i a2, a7, 0x20c ; SPI_READY 40004751: 60b401 slli a11, a4, 26 40004754: 00a311 slli a10, a3, 16 40004757: b0aa20 or a10, a10, a11 4000475a: c02000 memw 4000475d: 922783 l32i a9, a7, 0x20c ; SPI_READY 40004760: a09920 or a9, a9, a10 40004763: c02000 memw 40004766: 926783 s32i a9, a7, 0x20c ; SPI_READY 40004769: acd4 beqz.n a4, 0x4000479a ; set two bits in the SPI__bank register ; 0x08 When clear IRAM is mapped at 40108000h..4010BFFFh. ; When set that region reads as 0. ; 0x10 When clear IRAM is mapped at 4010C000h..4010FFFFh. ; When set that region reads as 0. ; When they are both set ?? who can say. 4000476b: a2a018 movi a10, 24 ; 0x18 4000476e: c02000 memw 40004771: 922789 l32i a9, a7, 0x224 ; SPI__bank 40004774: a09920 or a9, a9, a10 40004777: c02000 memw 4000477a: 926789 s32i a9, a7, 0x224 ; SPI__bank ; Check bit 8 (0x100) if it is set, we are happy. ; If not, spin trying to set it until we can read it back set. ; then return. 4000477d: 87e617 bbsi a6, 8, 0x40004798 40004780: c02000 memw 40004783: 222783 l32i a2, a7, 0x20c ; SPI_READY 40004786: 802220 or a2, a2, a8 ; 0x100 - undocumented 40004789: c02000 memw 4000478c: 226783 s32i a2, a7, 0x20c ; SPI_READY 4000478f: c02000 memw 40004792: b22783 l32i a11, a7, 0x20c ; SPI_READY 40004795: 870be7 bnone a11, a8, 0x40004780 40004798: 0df0 ret.n ; set one bit in the SPI__bank register 4000479a: 0c84 movi.n a4, 8 ; 0x08 4000479c: c02000 memw 4000479f: 322789 l32i a3, a7, 0x224 ; SPI__bank 400047a2: 403320 or a3, a3, a4 400047a5: c02000 memw 400047a8: 326789 s32i a3, a7, 0x224 ; SPI__bank 400047ab: 86f3ff j 0x4000477d 400047ae: 0000 400047b0: b1b0ff l32r a11, [0xfeffffff] ; 0x40004670 400047b3: c02000 memw 400047b6: a22783 l32i a10, a7, 0x20c 400047b9: b0aa10 and a10, a10, a11 400047bc: c02000 memw 400047bf: a26783 s32i a10, a7, 0x20c ; SPI_READY 400047c2: 916bfe l32r a9, [0x02000000] ; 0x40004170 400047c5: c02000 memw 400047c8: 522783 l32i a5, a7, 0x20c ; SPI_READY 400047cb: 905520 or a5, a5, a9 400047ce: c02000 memw 400047d1: 526783 s32i a5, a7, 0x20c ; SPI_READY 400047d4: c6d9ff j 0x4000473f 400047d7: 00 400047d8: 51a7ff l32r a5, [0xfcffffff] ; 0x40004674 400047db: c02000 memw 400047de: 222783 l32i a2, a7, 0x20c ; SPI_READY 400047e1: 502210 and a2, a2, a5 400047e4: c02000 memw 400047e7: 226783 s32i a2, a7, 0x20c ; SPI_READY 400047ea: 46d4ff j 0x4000473f 400047ed: 000000 ; Cache Read Disable - disable SPI mapping via cache Cache_Read_Disable: 400047f0: 319bf9 l32r a3, [0x3feffe00] ; 0x40002e5c 400047f3: c02000 memw ; spin until bit 0x100 in SPI_READY is clear ; (clearing it while spinning). 400047f6: 222383 l32i a2, a3, 0x20c ; SPI_READY 400047f9: 42aeff movi a4, 0xfffffeff 400047fc: 876217 bbci a2, 8, 0x40004817 400047ff: c02000 memw 40004802: 622383 l32i a6, a3, 0x20c ; SPI_READY 40004805: 406610 and a6, a6, a4 40004808: c02000 memw 4000480b: 626383 s32i a6, a3, 0x20c ; SPI_READY 4000480e: c02000 memw 40004811: 522383 l32i a5, a3, 0x20c ; SPI_READY 40004814: 87e5e7 bbsi a5, 8, 0x400047ff ; clear bit 0x20000 (bit 17) in 0x60000200 40004817: 5192ff l32r a5, [0xfffdffff] ; 0x40004660 4000481a: 7ce7 movi.n a7, -2 4000481c: 0c1a movi.n a10, 1 4000481e: 41e9f1 l32r a4, [0x60000200] ; 0x40000fc4 40004821: c02000 memw 40004824: 2824 l32i.n a2, a4, 8 ; 60000208 40004826: 502210 and a2, a2, a5 ; clear bit 17 40004829: c02000 memw 4000482c: 2924 s32i.n a2, a4, 8 ; 60000208 4000482e: c02000 memw ; clear then set bit 0 in SPI_READY 40004831: b22383 l32i a11, a3, 0x20c ; SPI_READY 40004834: 70bb10 and a11, a11, a7 ; -2 40004837: c02000 memw 4000483a: b26383 s32i a11, a3, 0x20c ; SPI_READY 4000483d: c02000 memw 40004840: 922383 l32i a9, a3, 0x20c ; SPI_READY 40004843: a09920 or a9, a9, a10 40004846: c02000 memw 40004849: 926383 s32i a9, a3, 0x20c ; SPI_READY 4000484c: c02000 memw ; spin until bit 1 in SPI_READY is set 4000484f: 822383 l32i a8, a3, 0x20c ; SPI_READY 40004852: 17e80a bbsi a8, 1, 0x40004860 40004855: c02000 memw 40004858: 622383 l32i a6, a3, 0x20c ; SPI_READY 4000485b: 3df0 nop.n 4000485d: 1766f4 bbci a6, 1, 0x40004855 40004860: c02000 memw ; clear bit 0 in SPI_READY, then return 40004863: 822383 l32i a8, a3, 0x20c ; SPI_READY 40004866: 708810 and a8, a8, a7 40004869: c02000 memw 4000486c: 826383 s32i a8, a3, 0x20c ; SPI_READY 4000486f: 0df0 ret.n 40004871: 000000 : ------------------------------------------------------------ ; The following is a pointer to a pointer to a block of Flash ; Config parameters. The initial setup looks like this. ; The block itself holds 6 values. ; These initial parameters hold unless they are overridden by ; a call to SPIParamCfg() in response to a UART command. ; This is the SPI-param block 40004874: 3fffc714 ; l32r ; 3fffc714: 3fffc718 ; pointer ; 3fffc718: 001640ef ; + 0 ; 3fffc71c: 00400000 ; + 4 ; 3fffc720: 00010000 ; + 8 ; 3fffc724: 00001000 ; + 12 ; 3fffc728: 00000100 ; + 16 ; 3fffc72c: 0000ffff ; + 20 SPIUnlock: 40004878: 21ffff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 4000487b: 12c1f0 addi a1, a1, -16 4000487e: 0901 s32i.n a0, a1, 0 40004880: 222200 l32i a2, a2, 0 ; deref 40004883: 85bbff call0 SPI_write_enable ; 0x4000443c 40004886: 8c72 beqz.n a2, 0x40004891 40004888: 0c12 movi.n a2, 1 4000488a: 0801 l32i.n a0, a1, 0 4000488c: 12c110 addi a1, a1, 16 4000488f: 0df0 ret.n 40004891: 21f8ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004894: 0c03 movi.n a3, 0 40004896: 222200 l32i a2, a2, 0 ; deref 40004899: 45b6ff call0 SPI_write_status ; 0x40004400 4000489c: 5682fe bnez a2, 0x40004888 4000489f: 0c02 movi.n a2, 0 400048a1: 0801 l32i.n a0, a1, 0 400048a3: 12c110 addi a1, a1, 16 400048a6: 0df0 ret.n SPILock: 400048a8: 21f3ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 400048ab: 12c1f0 addi a1, a1, -16 400048ae: 0901 s32i.n a0, a1, 0 400048b0: 222200 l32i a2, a2, 0 ; deref 400048b3: 85b8ff call0 SPI_write_enable ; 0x4000443c 400048b6: 8c72 beqz.n a2, 0x400048c1 400048b8: 0c12 movi.n a2, 1 400048ba: 0801 l32i.n a0, a1, 0 400048bc: 12c110 addi a1, a1, 16 400048bf: 0df0 ret.n 400048c1: 21ecff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 400048c4: 1cc3 movi.n a3, 28 400048c6: 222200 l32i a2, a2, 0 400048c9: 45b3ff call0 SPI_write_status ; 0x40004400 400048cc: 5682fe bnez a2, 0x400048b8 400048cf: 0c02 movi.n a2, 0 400048d1: 0801 l32i.n a0, a1, 0 400048d3: 12c110 addi a1, a1, 16 400048d6: 0df0 ret.n 400048d8: fe6f9fff ; l32r 400048dc: 01002000 ; l32r 400048e0: 00102000 ; l32r 400048e4: 00802000 ; l32r 400048e8: 00006000 ; l32r SPIReadModeCnfig: 400048ec: 12c1f0 addi a1, a1, -16 400048ef: 0911 s32i.n a0, a1, 4 400048f1: 41f9ff l32r a4, [0xfe6f9fff] ; 0x400048d8 400048f4: 51e0ff l32r a5, [flashchip] ; [0x3fffc714] 0x40004874 400048f7: 01b3f1 l32r a0, [0x60000200] ; 0x40000fc4 400048fa: c02000 memw 400048fd: 3820 l32i.n a3, a0, 8 400048ff: 403310 and a3, a3, a4 40004902: c02000 memw 40004905: 3920 s32i.n a3, a0, 8 40004907: bc92 beqz.n a2, 0x40004944 40004909: 26125c beqi a2, 1, 0x40004969 4000490c: 262261 beqi a2, 2, 0x40004971 4000490f: 263266 beqi a2, 3, 0x40004979 40004912: 82c2fc addi a8, a2, -4 40004915: 7123f2 l32r a7, [0x00002000] ; 0x400011a4 40004918: 0c06 movi.n a6, 0 4000491a: 806783 moveqz a6, a7, a8 4000491d: 6901 s32i.n a6, a1, 0 4000491f: 261226 beqi a2, 1, 0x40004949 40004922: 222500 l32i a2, a5, 0 40004925: 05beff call0 sub_4508 ; 0x40004508 40004928: c02000 memw 4000492b: a1a6f1 l32r a10, [0x60000200] ; 0x40000fc4 4000492e: b801 l32i.n a11, a1, 0 40004930: 982a l32i.n a9, a10, 8 40004932: b09920 or a9, a9, a11 40004935: c02000 memw 40004938: 992a s32i.n a9, a10, 8 4000493a: 0c02 movi.n a2, 0 4000493c: 0811 l32i.n a0, a1, 4 4000493e: 12c110 addi a1, a1, 16 40004941: 0df0 ret.n 40004943: 00 40004944: 01e6ff l32r a0, [0x01002000] ; 0x400048dc 40004947: 0901 s32i.n a0, a1, 0 40004949: 2805 l32i.n a2, a5, 0 4000494b: 45b7ff call0 sub_44c0 ; 0x400044c0 4000494e: c02000 memw 40004951: 319cf1 l32r a3, [0x60000200] ; 0x40000fc4 40004954: 4801 l32i.n a4, a1, 0 40004956: 2823 l32i.n a2, a3, 8 40004958: 402220 or a2, a2, a4 4000495b: c02000 memw 4000495e: 2923 s32i.n a2, a3, 8 40004960: 0811 l32i.n a0, a1, 4 40004962: 0c02 movi.n a2, 0 40004964: 12c110 addi a1, a1, 16 40004967: 0df0 ret.n 40004969: 61ddff l32r a6, [0x00102000] ; 0x400048e0 4000496c: 6901 s32i.n a6, a1, 0 4000496e: 46ebff j 0x4000491f 40004971: 71dcff l32r a7, [0x00802000] ; 0x400048e4 40004974: 7901 s32i.n a7, a1, 0 40004976: 46e9ff j 0x4000491f 40004979: 81dbff l32r a8, [0x00006000] ; 0x400048e8 4000497c: 8901 s32i.n a8, a1, 0 4000497e: 46e7ff j 0x4000491f 40004981: 000000 SPIEraseChip: 40004984: 21bcff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004987: 12c1f0 addi a1, a1, -16 4000498a: 0901 s32i.n a0, a1, 0 4000498c: 222200 l32i a2, a2, 0 ; deref 4000498f: c5aaff call0 SPI_write_enable ; 0x4000443c 40004992: 8c72 beqz.n a2, 0x4000499d 40004994: 0c12 movi.n a2, 1 40004996: 0801 l32i.n a0, a1, 0 40004998: 12c110 addi a1, a1, 16 4000499b: 0df0 ret.n 4000499d: 21b5ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 400049a0: f02000 nop 400049a3: 2802 l32i.n a2, a2, 0 400049a5: 856dff call0 esp_spi_erase_chip ; 0x40004080 400049a8: 5682fe bnez a2, 0x40004994 400049ab: 0c02 movi.n a2, 0 400049ad: 0801 l32i.n a0, a1, 0 400049af: 12c110 addi a1, a1, 16 400049b2: 0df0 ret.n SPIEraseBlock: 400049b4: 31b0ff l32r a3, [flashchip] ; [0x3fffc714] 0x40004874 400049b7: 12c1f0 addi a1, a1, -16 400049ba: c921 s32i.n a12, a1, 8 400049bc: 0911 s32i.n a0, a1, 4 400049be: cd02 mov.n a12, a2 400049c0: 3803 l32i.n a3, a3, 0 400049c2: 3901 s32i.n a3, a1, 0 400049c4: 2813 l32i.n a2, a3, 4 400049c6: 322302 l32i a3, a3, 8 400049c9: 058509 call0 __udivsi3 ; 0x4000e21c 400049cc: 273c0a bltu a12, a2, 0x400049da 400049cf: 0c12 movi.n a2, 1 400049d1: c821 l32i.n a12, a1, 8 400049d3: 0811 l32i.n a0, a1, 4 400049d5: 12c110 addi a1, a1, 16 400049d8: 0df0 ret.n 400049da: 2801 l32i.n a2, a1, 0 400049dc: c5a5ff call0 SPI_write_enable ; 0x4000443c 400049df: 56c2fe bnez a2, 0x400049cf 400049e2: 21a4ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 400049e5: 2802 l32i.n a2, a2, 0 400049e7: 322202 l32i a3, a2, 8 400049ea: c03382 mull a3, a3, a12 400049ed: 0573ff call0 esp_spi_erase_block ; 0x40004120 400049f0: 56b2fd bnez a2, 0x400049cf 400049f3: 0c02 movi.n a2, 0 400049f5: c821 l32i.n a12, a1, 8 400049f7: 0811 l32i.n a0, a1, 4 400049f9: 12c110 addi a1, a1, 16 400049fc: 0df0 ret.n 400049fe: 0000 SPIEraseSector: 40004a00: 319dff l32r a3, [flashchip] ; [0x3fffc714] 0x40004874 40004a03: 12c1f0 addi a1, a1, -16 40004a06: c921 s32i.n a12, a1, 8 40004a08: 0911 s32i.n a0, a1, 4 40004a0a: cd02 mov.n a12, a2 ; sector 40004a0c: 3803 l32i.n a3, a3, 0 ; *flashchip 40004a0e: 3901 s32i.n a3, a1, 0 40004a10: 2813 l32i.n a2, a3, 4 ; flashchip->chip_size 40004a12: 322303 l32i a3, a3, 12 ; flashchip->sector_size 40004a15: 458009 call0 __udivsi3 ; 0x4000e21c 40004a18: 273c0a bltu a12, a2, 0x40004a26 ; if (sector < chip_size / sector_size) 40004a1b: 0c12 movi.n a2, 1 ; return 1 40004a1d: c821 l32i.n a12, a1, 8 40004a1f: 0811 l32i.n a0, a1, 4 40004a21: 12c110 addi a1, a1, 16 40004a24: 0df0 ret.n 40004a26: 2801 l32i.n a2, a1, 0 ; *flashchip 40004a28: 05a1ff call0 SPI_write_enable ; 0x4000443c 40004a2b: 56c2fe bnez a2, 0x40004a1b ; if (SPI_write_enable() != 0) return 1 40004a2e: 2191ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004a31: 2802 l32i.n a2, a2, 0 ; *flashchip 40004a33: 322203 l32i a3, a2, 12 ; flashchip->sector_size 40004a36: c03382 mull a3, a3, a12 ; = sector * sector_size 40004a39: 4568ff call0 esp_spi_erase_sector ; 0x400040c0 40004a3c: 56b2fd bnez a2, 0x40004a1b ; if ( != 0) return 1 40004a3f: 0c02 movi.n a2, 0 ; return 0 40004a41: c821 l32i.n a12, a1, 8 40004a43: 0811 l32i.n a0, a1, 4 40004a45: 12c110 addi a1, a1, 16 40004a48: 0df0 ret.n 40004a4a: 0000 SPIWrite: 40004a4c: 5d04 mov.n a5, a4 40004a4e: 8189ff l32r a8, [flashchip] ; [0x3fffc714] 0x40004874 40004a51: 12c1d0 addi a1, a1, -48 40004a54: c931 s32i.n a12, a1, 12 40004a56: e951 s32i.n a14, a1, 20 40004a58: 3991 s32i.n a3, a1, 36 40004a5a: 0921 s32i.n a0, a1, 8 40004a5c: f961 s32i.n a15, a1, 24 40004a5e: d941 s32i.n a13, a1, 16 40004a60: fd03 mov.n a15, a3 40004a62: 4808 l32i.n a4, a8, 0 ; *flashchip 40004a64: dd02 mov.n a13, a2 40004a66: 0814 l32i.n a0, a4, 4 ; flashchip.chip_size 40004a68: 2a25 add.n a2, a5, a2 ; offset + size 40004a6a: 27b010 bgeu a0, a2, 0x40004a7e 40004a6d: 0c12 movi.n a2, 1 ; return 1 40004a6f: c831 l32i.n a12, a1, 12 40004a71: d841 l32i.n a13, a1, 16 40004a73: e851 l32i.n a14, a1, 20 40004a75: f861 l32i.n a15, a1, 24 40004a77: 0821 l32i.n a0, a1, 8 40004a79: 12c130 addi a1, a1, 48 40004a7c: 0df0 ret.n 40004a7e: 4981 s32i.n a4, a1, 32 40004a80: 2d0d mov.n a2, a13 40004a82: e844 l32i.n a14, a4, 16 40004a84: 5901 s32i.n a5, a1, 0 40004a86: 3d0e mov.n a3, a14 40004a88: c57d09 call0 __umodsi3 ; 0x4000e268 40004a8b: 0881 l32i.n a0, a1, 32 40004a8d: 3801 l32i.n a3, a1, 0 40004a8f: 20cec0 sub a12, a14, a2 40004a92: c7b31f bgeu a3, a12, 0x40004ab5 40004a95: 4d0f mov.n a4, a15 40004a97: 3d0d mov.n a3, a13 40004a99: 5801 l32i.n a5, a1, 0 40004a9b: 2d00 mov.n a2, a0 40004a9d: 456dff call0 sub_4174 ; 0x40004174 40004aa0: 5692fc bnez a2, 0x40004a6d 40004aa3: 0c02 movi.n a2, 0 40004aa5: c831 l32i.n a12, a1, 12 40004aa7: d841 l32i.n a13, a1, 16 40004aa9: e851 l32i.n a14, a1, 20 40004aab: f861 l32i.n a15, a1, 24 40004aad: 0821 l32i.n a0, a1, 8 40004aaf: 12c130 addi a1, a1, 48 40004ab2: 0df0 ret.n 40004ab4: 00 40004ab5: 3d0d mov.n a3, a13 40004ab7: 4d0f mov.n a4, a15 40004ab9: 5d0c mov.n a5, a12 40004abb: 2d00 mov.n a2, a0 40004abd: 456bff call0 sub_4174 ; 0x40004174 40004ac0: 5692fa bnez a2, 0x40004a6d 40004ac3: 2801 l32i.n a2, a1, 0 40004ac5: 3d0e mov.n a3, a14 40004ac7: c022c0 sub a2, a2, a12 40004aca: 057509 call0 __udivsi3 ; 0x4000e21c 40004acd: 2911 s32i.n a2, a1, 4 40004acf: aca2 beqz.n a2, 0x40004afd 40004ad1: 0c03 movi.n a3, 0 40004ad3: 326107 s32i a3, a1, 28 40004ad6: ca3d add.n a3, a13, a12 40004ad8: 5d0e mov.n a5, a14 40004ada: 2166ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004add: c04241 srli a4, a12, 2 40004ae0: f044a0 addx4 a4, a4, a15 40004ae3: 2802 l32i.n a2, a2, 0 40004ae5: c568ff call0 sub_4174 ; 0x40004174 40004ae8: 5612f8 bnez a2, 0x40004a6d 40004aeb: cace add.n a12, a14, a12 40004aed: 6871 l32i.n a6, a1, 28 40004aef: 522101 l32i a5, a1, 4 40004af2: 72c601 addi a7, a6, 1 40004af5: 706074 extui a6, a7, 0, 8 40004af8: 6971 s32i.n a6, a1, 28 40004afa: 6795d8 bne a5, a6, 0x40004ad6 40004afd: ca3d add.n a3, a13, a12 40004aff: 215dff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004b02: 522100 l32i a5, a1, 0 40004b05: c04241 srli a4, a12, 2 40004b08: f044a0 addx4 a4, a4, a15 40004b0b: c055c0 sub a5, a5, a12 40004b0e: 222200 l32i a2, a2, 0 40004b11: 0566ff call0 sub_4174 ; 0x40004174 40004b14: 5652f5 bnez a2, 0x40004a6d 40004b17: 06e2ff j 0x40004aa3 40004b1a: 0000 ; *************************************************************** ; it looks to me like SPIRead gets called with 3 arguments ; a2 is the offset in SPI to read from ; a3 is the address to read to ; a4 is a byte count SPIRead: 40004b1c: 5d04 mov.n a5, a4 ; byte count 40004b1e: 7d03 mov.n a7, a3 ; buffer address 40004b20: 12c1f0 addi a1, a1, -16 ; stack 40004b23: 3d02 mov.n a3, a2 ; offset in SPI 40004b25: 0901 s32i.n a0, a1, 0 ; save return 40004b27: 2153ff l32r a2, [flashchip] ; [0x3fffc714] 0x40004874 40004b2a: 4d07 mov.n a4, a7 40004b2c: 2802 l32i.n a2, a2, 0 ; flashchip 40004b2e: c577ff call0 sub_42ac ; 0x400042ac 40004b31: 0c04 movi.n a4, 0 ; a4 = 0 40004b33: 3801 l32i.n a3, a1, 0 ; restore return (but to a3) 40004b35: 0c10 movi.n a0, 1 ; a0 = 1 40004b37: 12c110 addi a1, a1, 16 ; restore stack 40004b3a: 200483 moveqz a0, a4, a2 ; a0 = a4 if a2 == 0 40004b3d: 2d00 mov.n a2, a0 ; a2 = a0 -- really restore return 40004b3f: 0d03 mov.n a0, a3 ; return 40004b41: 0df0 ret.n 40004b43: 00 SPIEraseArea: 40004b44: 12c1e0 addi a1, a1, -32 40004b47: 0951 s32i.n a0, a1, 20 40004b49: c961 s32i.n a12, a1, 24 40004b4b: d971 s32i.n a13, a1, 28 40004b4d: cd02 mov.n a12, a2 40004b4f: 30d320 or a13, a3, a3 40004b52: 22a005 movi a2, 5 40004b55: 45d9ff call0 SPIReadModeCnfig ; 0x400048ec 40004b58: 0147ff l32r a0, [flashchip] ; [0x3fffc714] 0x40004874 40004b5b: 0800 l32i.n a0, a0, 0 40004b5d: 0941 s32i.n a0, a1, 16 40004b5f: 0810 l32i.n a0, a0, 4 40004b61: da2c add.n a2, a12, a13 40004b63: 27b00d bgeu a0, a2, 0x40004b74 40004b66: 0c12 movi.n a2, 1 40004b68: c861 l32i.n a12, a1, 24 40004b6a: d871 l32i.n a13, a1, 28 40004b6c: 0851 l32i.n a0, a1, 20 40004b6e: 12c120 addi a1, a1, 32 40004b71: 0df0 ret.n 40004b73: 00 40004b74: 3841 l32i.n a3, a1, 16 40004b76: 2d0c mov.n a2, a12 40004b78: 3833 l32i.n a3, a3, 12 40004b7a: c56e09 call0 __umodsi3 ; 0x4000e268 40004b7d: 5652fe bnez a2, 0x40004b66 40004b80: 2841 l32i.n a2, a1, 16 40004b82: 45cfff call0 SPIUnlock ; 0x40004878 40004b85: 56d2fd bnez a2, 0x40004b66 40004b88: 313bff l32r a3, [flashchip] ; [0x3fffc714] 0x40004874 40004b8b: 2d0c mov.n a2, a12 40004b8d: 3803 l32i.n a3, a3, 0 40004b8f: 3941 s32i.n a3, a1, 16 40004b91: 3833 l32i.n a3, a3, 12 40004b93: 3921 s32i.n a3, a1, 8 40004b95: 456809 call0 __udivsi3 ; 0x4000e21c 40004b98: cd02 mov.n a12, a2 40004b9a: 2841 l32i.n a2, a1, 16 40004b9c: 3821 l32i.n a3, a1, 8 40004b9e: 2822 l32i.n a2, a2, 8 40004ba0: 856709 call0 __udivsi3 ; 0x4000e21c 40004ba3: 2931 s32i.n a2, a1, 12 40004ba5: 3821 l32i.n a3, a1, 8 40004ba7: 2d0d mov.n a2, a13 40004ba9: 056709 call0 __udivsi3 ; 0x4000e21c 40004bac: 2901 s32i.n a2, a1, 0 40004bae: 3821 l32i.n a3, a1, 8 40004bb0: 2d0d mov.n a2, a13 40004bb2: 456b09 call0 __umodsi3 ; 0x4000e268 40004bb5: 3801 l32i.n a3, a1, 0 40004bb7: 1b43 addi.n a4, a3, 1 40004bb9: 203493 movnez a3, a4, a2 40004bbc: 3901 s32i.n a3, a1, 0 40004bbe: 3911 s32i.n a3, a1, 4 40004bc0: 2d0c mov.n a2, a12 40004bc2: 3831 l32i.n a3, a1, 12 40004bc4: 056a09 call0 __umodsi3 ; 0x4000e268 40004bc7: 5801 l32i.n a5, a1, 0 40004bc9: 0831 l32i.n a0, a1, 12 40004bcb: dd05 mov.n a13, a5 40004bcd: 2000c0 sub a0, a0, a2 40004bd0: 57a002 bge a0, a5, 0x40004bd6 40004bd3: 00d020 or a13, a0, a0 40004bd6: 8ced beqz.n a13, 0x40004be8 40004bd8: 2d0c mov.n a2, a12 40004bda: 45e2ff call0 SPIEraseSector ; 0x40004a00 40004bdd: 5652f8 bnez a2, 0x40004b66 40004be0: 1bcc addi.n a12, a12, 1 40004be2: d2cdff addi a13, a13, -1 40004be5: 56fdfe bnez a13, 0x40004bd8 40004be8: 3811 l32i.n a3, a1, 4 40004bea: 2831 l32i.n a2, a1, 12 40004bec: d0d3c0 sub a13, a3, a13 40004bef: d7b216 bgeu a2, a13, 0x40004c09 40004bf2: 2d0c mov.n a2, a12 40004bf4: 3831 l32i.n a3, a1, 12 40004bf6: 456209 call0 __udivsi3 ; 0x4000e21c 40004bf9: 85dbff call0 SPIEraseBlock ; 0x400049b4 40004bfc: 5662f6 bnez a2, 0x40004b66 40004bff: 4831 l32i.n a4, a1, 12 40004c01: 4acc add.n a12, a12, a4 40004c03: 40ddc0 sub a13, a13, a4 40004c06: d734e8 bltu a4, a13, 0x40004bf2 40004c09: a61d0f blti a13, 1, 0x40004c1c 40004c0c: 2d0c mov.n a2, a12 40004c0e: 05dfff call0 SPIEraseSector ; 0x40004a00 40004c11: 5612f5 bnez a2, 0x40004b66 40004c14: 1bcc addi.n a12, a12, 1 40004c16: d2cdff addi a13, a13, -1 40004c19: 56fdfe bnez a13, 0x40004c0c 40004c1c: 0c02 movi.n a2, 0 40004c1e: c861 l32i.n a12, a1, 24 40004c20: d871 l32i.n a13, a1, 28 40004c22: 0851 l32i.n a0, a1, 20 40004c24: 12c120 addi a1, a1, 32 40004c27: 0df0 ret.n 40004c29: 000000 SPIParamCfg: 40004c2c: 8112ff l32r a8, [flashchip] ; [0x3fffc714] 0x40004874 40004c2f: 8808 l32i.n a8, a8, 0 ; deref 40004c31: 3918 s32i.n a3, a8, 4 40004c33: 4928 s32i.n a4, a8, 8 40004c35: 5938 s32i.n a5, a8, 12 40004c37: 6948 s32i.n a6, a8, 16 40004c39: 2908 s32i.n a2, a8, 0 40004c3b: 7958 s32i.n a7, a8, 20 40004c3d: 0c02 movi.n a2, 0 ; always return 0 40004c3f: 0df0 ret.n 40004c41: 000000 40004c44: 40004e34 ; l32r 40004c48: 3fffdfd0 ; l32r 40004c4c: 40004efc ; l32r ; Some notes on GPIO -- ; ; Registers are like this: ; ; 60000304 - set ; 60000308 - clear ; 6000030c - ?? ; 60000310 - enable ; 60000314 - disable ; 60000318 - disable gpio_init: 40004c50: 22a004 movi a2, 4 ; a2 = 4 40004c53: 31fcff l32r a3, [sub_4e34] ; [0x40004e34] 0x40004c44 40004c56: 0c04 movi.n a4, 0 ; a4 = 0 40004c58: 12c1e0 addi a1, a1, -32 ; space on stack 40004c5b: c911 s32i.n a12, a1, 4 ; save 4 regs ... 40004c5d: d921 s32i.n a13, a1, 8 40004c5f: e931 s32i.n a14, a1, 12 40004c61: f941 s32i.n a15, a1, 16 40004c63: 0901 s32i.n a0, a1, 0 ; save return ; GPIO is interrupt 4 (mask 0x10) 40004c65: 0532fc call0 ets_isr_attach ; 0x40000f88 40004c68: 1c02 movi.n a2, 16 ; 0x10 40004c6a: c532fc call0 ets_isr_mask ; 0x40000f98 ; set all pins as inputs 40004c6d: 0c02 movi.n a2, 0 40004c6f: 0c03 movi.n a3, 0 40004c71: 0c04 movi.n a4, 0 40004c73: 510bfb l32r a5, [0x0000ffff] ; 0x400038a0 40004c76: 850500 call0 gpio_output_set ; 0x40004cd0 40004c79: 2c8c movi.n a12, 40 40004c7b: d1d2f0 l32r a13, [0x60000200] ; 0x40000fc4 40004c7e: f2a068 movi a15, 104 ; a15 = 0x68 40004c81: e1f1ff l32r a14, [0x3fffdfd0] ; 0x40004c48 40004c84: 02a000 movi a0, 0 40004c87: 026e00 s32i a0, a14, 0 40004c8a: c02c20 or a2, a12, a12 40004c8d: 0c03 movi.n a3, 0 40004c8f: 450700 call0 gpio_register_set ; 0x40004d04 40004c92: c02000 memw 40004c95: 4bcc addi.n a12, a12, 4 40004c97: 1bee addi.n a14, a14, 1 40004c99: 222d4a l32i a2, a13, 0x128 40004c9c: 4bdd addi.n a13, a13, 4 40004c9e: 202724 extui a2, a2, 7, 3 40004ca1: 224e0f s8i a2, a14, 15 40004ca4: f79ce2 bne a12, a15, 0x40004c8a 40004ca7: 31fefa l32r a3, [0x0000ffff] ; 0x400038a0 40004caa: 41c6f0 l32r a4, [0x60000200] ; 0x40000fc4 40004cad: c02000 memw 40004cb0: 326449 s32i a3, a4, 0x124 ; ffff --> 60000324 40004cb3: 21e6ff l32r a2, [gpio_intr_test] ; [0x40004efc] 0x40004c4c 40004cb6: 0c03 movi.n a3, 0 40004cb8: c51600 call0 gpio_intr_handler_register ; 0x40004e28 40004cbb: 1c02 movi.n a2, 16 40004cbd: 852efc call0 ets_isr_unmask ; 0x40000fa8 40004cc0: c811 l32i.n a12, a1, 4 ; restore 4 regs 40004cc2: d821 l32i.n a13, a1, 8 40004cc4: e831 l32i.n a14, a1, 12 40004cc6: f841 l32i.n a15, a1, 16 40004cc8: 0801 l32i.n a0, a1, 0 ; restore return 40004cca: 12c120 addi a1, a1, 32 ; restore stack 40004ccd: 0df0 ret.n 40004ccf: 00 ; This is advertised in the SDK document -- ; ; gpio_output_set ( set, clear, enable, disable ) ; ; 0x60000304 <-- set ; 0x60000308 <-- clear ; 0x60000310 <-- enable ; 0x60000314 <-- disable ; ; to set high: gpio_output_set ( m, 0, m, 0 ) ; to set low: gpio_output_set ( 0, m, m, 0 ) ; for input: gpio_output_set ( 0, 0, 0, m ) gpio_output_set: 40004cd0: 61bdf0 l32r a6, [0x60000200] ; 0x40000fc4 40004cd3: c02000 memw 40004cd6: 226641 s32i a2, a6, 0x104 40004cd9: c02000 memw 40004cdc: 326642 s32i a3, a6, 0x108 40004cdf: c02000 memw 40004ce2: 426644 s32i a4, a6, 0x110 40004ce5: c02000 memw 40004ce8: 526645 s32i a5, a6, 0x114 40004ceb: 0df0 ret.n 40004ced: 000000 ; simply reads from 0x60000318 gpio_input_get: 40004cf0: 21b5f0 l32r a2, [0x60000200] ; 0x40000fc4 40004cf3: c02000 memw 40004cf6: 222246 l32i a2, a2, 0x118 40004cf9: 0df0 ret.n 40004cfb: 00 40004cfc: 60000328 ; l32r 40004d00: 3fffdfe0 ; l32r ; call as gpio_register_set ( reg, val ) gpio_register_set: 40004d04: 12c1f0 addi a1, a1, -16 ; stack 40004d07: 026100 s32i a0, a1, 0 ; save a0 40004d0a: c26101 s32i a12, a1, 4 ; save a12 40004d0d: d921 s32i.n a13, a1, 8 ; save a13 40004d0f: cd02 mov.n a12, a2 ; a12 = reg 40004d11: 30d320 or a13, a3, a3 ; a13 = val 40004d14: c525fc call0 ets_intr_lock ; 0x40000f74 40004d17: 21f9ff l32r a2, [0x60000328] ; 0x40004cfc 40004d1a: e00c11 slli a0, a12, 2 ; a0 = a12 << 2 40004d1d: 2a00 add.n a0, a0, a2 ; a0 = a0 + a2 40004d1f: c02000 memw 40004d22: d900 s32i.n a13, a0, 0 ; write value 40004d24: f6bc0c bgeui a12, 16, 0x40004d34 40004d27: 51f6ff l32r a5, [0x3fffdfe0] ; 0x40004d00 40004d2a: d03724 extui a3, a13, 7, 3 40004d2d: 5a4c add.n a4, a12, a5 40004d2f: 324400 s8i a3, a4, 0 40004d32: 8cc3 beqz.n a3, 0x40004d42 40004d34: 8524fc call0 ets_intr_unlock ; 0x40000f80 40004d37: c811 l32i.n a12, a1, 4 ; restore a12 40004d39: d821 l32i.n a13, a1, 8 ; restore a13 40004d3b: 0801 l32i.n a0, a1, 0 ; restore a0 40004d3d: 12c110 addi a1, a1, 16 ; stack 40004d40: 0df0 ret.n 40004d42: 7cf9 movi.n a9, -1 ; a9 = -1 40004d44: 001c40 ssl a12 ; set shift left amount 40004d47: 0c18 movi.n a8, 1 ; a8 = 1 40004d49: 72c5f0 addi a7, a5, -16 ; a7 = a5 -16 40004d4c: 6807 l32i.n a6, a7, 0 40004d4e: 0088a1 sll a8, a8 40004d51: 908830 xor a8, a8, a9 40004d54: 806610 and a6, a6, a8 40004d57: 6907 s32i.n a6, a7, 0 40004d59: c6f5ff j 0x40004d34 gpio_register_get: 40004d5c: 51e8ff l32r a5, [0x60000328] ; 0x40004cfc 40004d5f: e04211 slli a4, a2, 2 40004d62: 5a44 add.n a4, a4, a5 40004d64: c02000 memw 40004d67: 4804 l32i.n a4, a4, 0 40004d69: f6b215 bgeui a2, 16, 0x40004d82 40004d6c: 31e5ff l32r a3, [0x3fffdfe0] ; 0x40004d00 40004d6f: 3a22 add.n a2, a2, a3 40004d71: 220200 l8ui a2, a2, 0 40004d74: 32ac7f movi a3, 0xfffffc7f 40004d77: 303410 and a3, a4, a3 40004d7a: 902211 slli a2, a2, 7 40004d7d: 302220 or a2, a2, a3 40004d80: 0df0 ret.n 40004d82: 2d04 mov.n a2, a4 40004d84: 0df0 ret.n 40004d86: 0000 gpio_intr_pending: 40004d88: 21b0ff l32r a2, [0x3fffdfd0] ; 0x40004c48 40004d8b: 2802 l32i.n a2, a2, 0 40004d8d: 0df0 ret.n 40004d8f: 00 gpio_pin_intr_state_set: 40004d90: 12c1f0 addi a1, a1, -16 40004d93: 226100 s32i a2, a1, 0 40004d96: 326101 s32i a3, a1, 4 40004d99: 026102 s32i a0, a1, 8 40004d9c: 451dfc call0 ets_intr_lock ; 0x40000f74 40004d9f: 3189f0 l32r a3, [0x60000200] ; 0x40000fc4 40004da2: 2801 l32i.n a2, a1, 0 40004da4: 3022a0 addx4 a2, a2, a3 40004da7: c02000 memw 40004daa: 42ac7f movi a4, 0xfffffc7f 40004dad: 3811 l32i.n a3, a1, 4 40004daf: 02224a l32i a0, a2, 0x128 40004db2: 903311 slli a3, a3, 7 40004db5: 400010 and a0, a0, a4 40004db8: 300020 or a0, a0, a3 40004dbb: c02000 memw 40004dbe: 02624a s32i a0, a2, 0x128 40004dc1: c51bfc call0 ets_intr_unlock ; 0x40000f80 40004dc4: 0821 l32i.n a0, a1, 8 40004dc6: 12c110 addi a1, a1, 16 40004dc9: 0df0 ret.n 40004dcb: 00 gpio_intr_ack: 40004dcc: 12c1f0 addi a1, a1, -16 40004dcf: c911 s32i.n a12, a1, 4 40004dd1: d921 s32i.n a13, a1, 8 40004dd3: e931 s32i.n a14, a1, 12 40004dd5: 0901 s32i.n a0, a1, 0 40004dd7: ed02 mov.n a14, a2 40004dd9: 8519fc call0 ets_intr_lock ; 0x40000f74 40004ddc: 219bff l32r a2, [0x3fffdfd0] ; 0x40004c48 40004ddf: 7cf4 movi.n a4, -1 40004de1: 3802 l32i.n a3, a2, 0 40004de3: 404e30 xor a4, a14, a4 40004de6: 400310 and a0, a3, a4 40004de9: 0902 s32i.n a0, a2, 0 40004deb: 47030d bnone a3, a4, 0x40004dfc 40004dee: 6175f0 l32r a6, [0x60000200] ; 0x40000fc4 40004df1: c02000 memw 40004df4: 026648 s32i a0, a6, 0x120 40004df7: 0c05 movi.n a5, 0 40004df9: 526200 s32i a5, a2, 0 40004dfc: d1c1ff l32r a13, [0x3fffdfe0] ; 0x40004d00 40004dff: 0c0c movi.n a12, 0 40004e01: c75e07 bbc a14, a12, 0x40004e0c 40004e04: 2d0c mov.n a2, a12 40004e06: 320d00 l8ui a3, a13, 0 40004e09: 45f8ff call0 gpio_pin_intr_state_set ; 0x40004d90 40004e0c: d2cd01 addi a13, a13, 1 40004e0f: c2cc01 addi a12, a12, 1 40004e12: 66bceb bnei a12, 16, 0x40004e01 40004e15: 8516fc call0 ets_intr_unlock ; 0x40000f80 40004e18: c22101 l32i a12, a1, 4 40004e1b: d821 l32i.n a13, a1, 8 40004e1d: e831 l32i.n a14, a1, 12 40004e1f: 0801 l32i.n a0, a1, 0 40004e21: 12c110 addi a1, a1, 16 40004e24: 0df0 ret.n 40004e26: 0000 gpio_intr_handler_register: 40004e28: 4188ff l32r a4, [0x3fffdfd0] ; 0x40004c48 40004e2b: 2914 s32i.n a2, a4, 4 40004e2d: 3924 s32i.n a3, a4, 8 40004e2f: 0df0 ret.n 40004e31: 000000 sub_4e34: 40004e34: 12c1f0 addi a1, a1, -16 40004e37: c911 s32i.n a12, a1, 4 40004e39: 0901 s32i.n a0, a1, 0 40004e3b: d921 s32i.n a13, a1, 8 40004e3d: d161f0 l32r a13, [0x60000200] ; 0x40000fc4 40004e40: c02000 memw 40004e43: d22d47 l32i a13, a13, 0x11c 40004e46: 0c0c movi.n a12, 0 40004e48: c75d06 bbc a13, a12, 0x40004e52 40004e4b: 2d0c mov.n a2, a12 40004e4d: 0c03 movi.n a3, 0 40004e4f: 05f4ff call0 gpio_pin_intr_state_set ; 0x40004d90 40004e52: 1bcc addi.n a12, a12, 1 40004e54: 66bcf0 bnei a12, 16, 0x40004e48 40004e57: 517cff l32r a5, [0x3fffdfd0] ; 0x40004c48 40004e5a: c02000 memw 40004e5d: 0159f0 l32r a0, [0x60000200] ; 0x40000fc4 40004e60: d26049 s32i a13, a0, 0x124 40004e63: 0805 l32i.n a0, a5, 0 40004e65: c811 l32i.n a12, a1, 4 40004e67: 8ce0 beqz.n a0, 0x40004e79 40004e69: 002d20 or a2, a13, a0 40004e6c: 2905 s32i.n a2, a5, 0 40004e6e: d821 l32i.n a13, a1, 8 40004e70: 0801 l32i.n a0, a1, 0 40004e72: 12c110 addi a1, a1, 16 40004e75: 0df0 ret.n 40004e77: 0000 40004e79: 2d0d mov.n a2, a13 40004e7b: d905 s32i.n a13, a5, 0 40004e7d: 0815 l32i.n a0, a5, 4 40004e7f: 3825 l32i.n a3, a5, 8 40004e81: c00000 callx0 a0 40004e84: c811 l32i.n a12, a1, 4 40004e86: d821 l32i.n a13, a1, 8 40004e88: 0801 l32i.n a0, a1, 0 40004e8a: 12c110 addi a1, a1, 16 40004e8d: 0df0 ret.n 40004e8f: 00 gpio_pin_wakeup_enable: 40004e90: 12c1f0 addi a1, a1, -16 40004e93: 226100 s32i a2, a1, 0 40004e96: 326101 s32i a3, a1, 4 40004e99: 026102 s32i a0, a1, 8 40004e9c: 450dfc call0 ets_intr_lock ; 0x40000f74 40004e9f: 3149f0 l32r a3, [0x60000200] ; 0x40000fc4 40004ea2: 2801 l32i.n a2, a1, 0 40004ea4: 3022a0 addx4 a2, a2, a3 40004ea7: c02000 memw 40004eaa: 42ac7f movi a4, 0xfffffc7f 40004ead: 3811 l32i.n a3, a1, 4 40004eaf: 02224a l32i a0, a2, 0x128 40004eb2: 903311 slli a3, a3, 7 40004eb5: 400010 and a0, a0, a4 40004eb8: 300020 or a0, a0, a3 40004ebb: 32a400 movi a3, 0x400 40004ebe: 300020 or a0, a0, a3 40004ec1: c02000 memw 40004ec4: 02624a s32i a0, a2, 0x128 40004ec7: 850bfc call0 ets_intr_unlock ; 0x40000f80 40004eca: 0821 l32i.n a0, a1, 8 40004ecc: 12c110 addi a1, a1, 16 40004ecf: 0df0 ret.n 40004ed1: 000000 gpio_pin_wakeup_disable: 40004ed4: 0c03 movi.n a3, 0 40004ed6: 413bf0 l32r a4, [0x60000200] ; 0x40000fc4 40004ed9: 72a87f movi a7, 0xfffff87f 40004edc: 4063a0 addx4 a6, a3, a4 40004edf: c02000 memw 40004ee2: 52264a l32i a5, a6, 0x128 40004ee5: a76508 bbci a5, 10, 0x40004ef1 40004ee8: 702510 and a2, a5, a7 40004eeb: c02000 memw 40004eee: 22664a s32i a2, a6, 0x128 40004ef1: 1b33 addi.n a3, a3, 1 40004ef3: 303074 extui a3, a3, 0, 8 40004ef6: 66b3e2 bnei a3, 16, 0x40004edc 40004ef9: 0df0 ret.n 40004efb: 00 gpio_intr_test: 40004efc: 12c1f0 addi a1, a1, -16 40004eff: 226100 s32i a2, a1, 0 40004f02: 026101 s32i a0, a1, 4 40004f05: 85deff call0 gpio_input_get ; 0x40004cf0 40004f08: 376212 bbci a2, 3, 0x40004f1e 40004f0b: 0c22 movi.n a2, 2 40004f0d: 7cc3 movi.n a3, -4 40004f0f: 0c24 movi.n a4, 2 40004f11: 0c05 movi.n a5, 0 40004f13: c5dbff call0 gpio_output_set ; 0x40004cd0 40004f16: 0801 l32i.n a0, a1, 0 40004f18: c60300 j 0x40004f2b 40004f1b: 000000 40004f1e: 0c02 movi.n a2, 0 40004f20: 7ce3 movi.n a3, -2 40004f22: 0c24 movi.n a4, 2 40004f24: 0c05 movi.n a5, 0 40004f26: 85daff call0 gpio_output_set ; 0x40004cd0 40004f29: 0801 l32i.n a0, a1, 0 40004f2b: 2d00 mov.n a2, a0 40004f2d: c5e9ff call0 gpio_intr_ack ; 0x40004dcc 40004f30: 0811 l32i.n a0, a1, 4 40004f32: 12c110 addi a1, a1, 16 40004f35: 0df0 ret.n 40004f37: 00 40004f38: ff000fff ; l32r 40004f3c: 0000f000 ; l32r lldesc_build_chain: 40004f40: 3d06 mov.n a3, a6 40004f42: 12c1d0 addi a1, a1, -48 40004f45: f971 s32i.n a15, a1, 28 40004f47: 7981 s32i.n a7, a1, 32 40004f49: 0931 s32i.n a0, a1, 12 40004f4b: e961 s32i.n a14, a1, 24 40004f4d: d951 s32i.n a13, a1, 20 40004f4f: c941 s32i.n a12, a1, 16 40004f51: dd04 mov.n a13, a4 40004f53: cd02 mov.n a12, a2 40004f55: ed06 mov.n a14, a6 40004f57: 2d05 mov.n a2, a5 40004f59: 052c09 call0 __udivsi3 ; 0x4000e21c 40004f5c: 0881 l32i.n a0, a1, 32 40004f5e: e070b4 extui a7, a14, 0, 12 40004f61: 0c04 movi.n a4, 0 40004f63: 3d01 mov.n a3, a1 40004f65: 61f4ff l32r a6, [0xff000fff] ; 0x40004f38 40004f68: f2a080 movi a15, 128 40004f6b: b2a0df movi a11, 223 40004f6e: 51f3ff l32r a5, [0x0000f000] ; 0x40004f3c 40004f71: a2a000 movi a10, 0 40004f74: d91c s32i.n a13, a12, 4 40004f76: c02000 memw 40004f79: 921c00 l16ui a9, a12, 0 40004f7c: 509910 and a9, a9, a5 40004f7f: 709920 or a9, a9, a7 40004f82: c02000 memw 40004f85: 925c00 s16i a9, a12, 0 40004f88: c02000 memw 40004f8b: 820c03 l8ui a8, a12, 3 40004f8e: 808064 extui a8, a8, 0, 7 40004f91: f08820 or a8, a8, a15 40004f94: c02000 memw 40004f97: 824c03 s8i a8, a12, 3 40004f9a: eca0 bnez.n a0, 0x40004fc8 40004f9c: c02000 memw 40004f9f: 821c01 l16ui a8, a12, 2 40004fa2: 008811 slli a8, a8, 16 40004fa5: c02000 memw 40004fa8: 921c00 l16ui a9, a12, 0 40004fab: 908820 or a8, a8, a9 40004fae: 608810 and a8, a8, a6 40004fb1: a08820 or a8, a8, a10 40004fb4: c02000 memw 40004fb7: 825c00 s16i a8, a12, 0 40004fba: 8080f5 extui a8, a8, 16, 16 40004fbd: c02000 memw 40004fc0: 825c01 s16i a8, a12, 2 40004fc3: 060d00 j 0x40004ffb 40004fc6: 0000 40004fc8: c02000 memw 40004fcb: f21c00 l16ui a15, a12, 0 40004fce: f0f0b4 extui a15, a15, 0, 12 40004fd1: 40ff11 slli a15, a15, 12 40004fd4: c02000 memw 40004fd7: 921c01 l16ui a9, a12, 2 40004fda: 009911 slli a9, a9, 16 40004fdd: c02000 memw 40004fe0: 821c00 l16ui a8, a12, 0 40004fe3: 809920 or a9, a9, a8 40004fe6: 609910 and a9, a9, a6 40004fe9: f09920 or a9, a9, a15 40004fec: c02000 memw 40004fef: 925c00 s16i a9, a12, 0 40004ff2: 9090f5 extui a9, a9, 16, 16 40004ff5: c02000 memw 40004ff8: 925c01 s16i a9, a12, 2 40004ffb: f2a080 movi a15, 128 40004ffe: c02000 memw 40005001: 920c03 l8ui a9, a12, 3 40005004: 82a0bf movi a8, 191 40005007: 809910 and a9, a9, a8 4000500a: a09920 or a9, a9, a10 4000500d: c02000 memw 40005010: 924c03 s8i a9, a12, 3 40005013: c02000 memw 40005016: 820c03 l8ui a8, a12, 3 40005019: b08810 and a8, a8, a11 4000501c: a08820 or a8, a8, a10 4000501f: c02000 memw 40005022: dade add.n a13, a14, a13 40005024: 1b44 addi.n a4, a4, 1 40005026: 824c03 s8i a8, a12, 3 40005029: c923 s32i.n a12, a3, 8 4000502b: 3823 l32i.n a3, a3, 8 4000502d: cbcc addi.n a12, a12, 12 4000502f: 27b402 bgeu a4, a2, 0x40005035 40005032: 86cfff j 0x40004f74 40005035: 0831 l32i.n a0, a1, 12 40005037: d851 l32i.n a13, a1, 20 40005039: e861 l32i.n a14, a1, 24 4000503b: f871 l32i.n a15, a1, 28 4000503d: 98d1 l32i.n a9, a1, 52 4000503f: c8c1 l32i.n a12, a1, 48 40005041: a923 s32i.n a10, a3, 8 40005043: b821 l32i.n a11, a1, 8 40005045: b90c s32i.n a11, a12, 0 40005047: 3909 s32i.n a3, a9, 0 40005049: c841 l32i.n a12, a1, 16 4000504b: 12c130 addi a1, a1, 48 4000504e: 0df0 ret.n lldesc_num2link: 40005050: 0b53 addi.n a5, a3, -1 40005052: 5030f4 extui a3, a5, 0, 16 40005055: ac03 beqz.n a3, 0x40005079 40005057: 6d03 mov.n a6, a3 40005059: 604141 srli a4, a6, 1 4000505c: 076506 bbci a5, 0, 0x40005066 4000505f: 2822 l32i.n a2, a2, 8 40005061: 0b33 addi.n a3, a3, -1 40005063: 3030f4 extui a3, a3, 0, 16 40005066: 8cf4 beqz.n a4, 0x40005079 40005068: 2822 l32i.n a2, a2, 8 4000506a: 0b33 addi.n a3, a3, -1 4000506c: 3030f4 extui a3, a3, 0, 16 4000506f: 2822 l32i.n a2, a2, 8 40005071: 0b33 addi.n a3, a3, -1 40005073: 3030f4 extui a3, a3, 0, 16 40005076: 56e3fe bnez a3, 0x40005068 40005079: 0df0 ret.n 4000507b: 00 lldesc_set_owner: 4000507c: 407004 extui a7, a4, 0, 1 4000507f: 904711 slli a4, a7, 7 40005082: c02000 memw 40005085: 620203 l8ui a6, a2, 3 40005088: 606064 extui a6, a6, 0, 7 4000508b: 406620 or a6, a6, a4 4000508e: c02000 memw 40005091: 624203 s8i a6, a2, 3 40005094: 0b53 addi.n a5, a3, -1 40005096: 5030f4 extui a3, a5, 0, 16 40005099: 169305 beqz a3, 0x400050f6 4000509c: 306320 or a6, a3, a3 4000509f: 076319 bbci a3, 0, 0x400050bc 400050a2: 2822 l32i.n a2, a2, 8 400050a4: c02000 memw 400050a7: 520203 l8ui a5, a2, 3 400050aa: 505064 extui a5, a5, 0, 7 400050ad: 405520 or a5, a5, a4 400050b0: c02000 memw 400050b3: 524203 s8i a5, a2, 3 400050b6: 32c3ff addi a3, a3, -1 400050b9: 3030f4 extui a3, a3, 0, 16 400050bc: 607141 srli a7, a6, 1 400050bf: bc37 beqz.n a7, 0x400050f6 400050c1: 2822 l32i.n a2, a2, 8 400050c3: c02000 memw 400050c6: 520203 l8ui a5, a2, 3 400050c9: 505064 extui a5, a5, 0, 7 400050cc: 405520 or a5, a5, a4 400050cf: c02000 memw 400050d2: 524203 s8i a5, a2, 3 400050d5: 0b33 addi.n a3, a3, -1 400050d7: 3030f4 extui a3, a3, 0, 16 400050da: 2822 l32i.n a2, a2, 8 400050dc: c02000 memw 400050df: 520203 l8ui a5, a2, 3 400050e2: 505064 extui a5, a5, 0, 7 400050e5: 405520 or a5, a5, a4 400050e8: c02000 memw 400050eb: 524203 s8i a5, a2, 3 400050ee: 0b33 addi.n a3, a3, -1 400050f0: 3030f4 extui a3, a3, 0, 16 400050f3: 56a3fc bnez a3, 0x400050c1 400050f6: 0df0 ret.n 400050f8: 3fffe050 ; l32r sip_post: 400050fc: 12c1f0 addi a1, a1, -16 400050ff: 6d02 mov.n a6, a2 40005101: 21fdff l32r a2, [0x3fffe050] ; 0x400050f8 40005104: 0901 s32i.n a0, a1, 0 40005106: 2026a0 addx4 a2, a6, a2 40005109: 0802 l32i.n a0, a2, 0 4000510b: 4d03 mov.n a4, a3 4000510d: 8c70 beqz.n a0, 0x40005118 4000510f: 0c02 movi.n a2, 0 40005111: 0801 l32i.n a0, a1, 0 40005113: 12c110 addi a1, a1, 16 40005116: 0df0 ret.n 40005118: 32c001 addi a3, a0, 1 4000511b: 326200 s32i a3, a2, 0 4000511e: 603620 or a3, a6, a6 40005121: 1cd2 movi.n a2, 29 40005123: 05d0fb call0 ets_post ; 0x40000e24 40005126: 0801 l32i.n a0, a1, 0 40005128: 12c110 addi a1, a1, 16 4000512b: 0df0 ret.n 4000512d: 000000 40005130: 3fffdff0 ; l32r 40005134: 3fffe090 ; l32r sub_5138: 40005138: 21feff l32r a2, [0x3fffdff0] ; 0x40005130 4000513b: 72a040 movi a7, 64 4000513e: 12c1e0 addi a1, a1, -32 40005141: 026106 s32i a0, a1, 24 40005144: 42c110 addi a4, a1, 16 40005147: 32c114 addi a3, a1, 20 4000514a: 706720 or a6, a7, a7 4000514d: 725200 s16i a7, a2, 0 40005150: 8b52 addi.n a5, a2, 8 40005152: 5932 s32i.n a5, a2, 12 40005154: 0c07 movi.n a7, 0 40005156: 52a100 movi a5, 0x100 40005159: 7922 s32i.n a7, a2, 8 4000515b: 3911 s32i.n a3, a1, 4 4000515d: 4901 s32i.n a4, a1, 0 4000515f: 3c03 movi.n a3, 48 40005161: 41f4ff l32r a4, [0x3fffe090] ; 0x40005134 40005164: 22c270 addi a2, a2, 112 40005167: 85ddff call0 lldesc_build_chain ; 0x40004f40 4000516a: 0861 l32i.n a0, a1, 24 4000516c: 8851 l32i.n a8, a1, 20 4000516e: 91f0ff l32r a9, [0x3fffdff0] ; 0x40005130 40005171: a841 l32i.n a10, a1, 16 40005173: a929 s32i.n a10, a9, 8 40005175: 8b88 addi.n a8, a8, 8 40005177: 8939 s32i.n a8, a9, 12 40005179: 12c120 addi a1, a1, 32 4000517c: 0df0 ret.n 4000517e: 0000 sip_alloc_to_host_evt: 40005180: 12c1e0 addi a1, a1, -32 40005183: 026104 s32i a0, a1, 16 40005186: 01eaff l32r a0, [0x3fffdff0] ; 0x40005130 40005189: 3901 s32i.n a3, a1, 0 4000518b: 022002 l32i a0, a0, 8 4000518e: 2911 s32i.n a2, a1, 4 40005190: 16d008 beqz a0, 0x40005221 40005193: 05defb call0 ets_intr_lock ; 0x40000f74 40005196: 41e6ff l32r a4, [0x3fffdff0] ; 0x40005130 40005199: 3824 l32i.n a3, a4, 8 4000519b: 3931 s32i.n a3, a1, 12 4000519d: 3921 s32i.n a3, a1, 8 4000519f: 2823 l32i.n a2, a3, 8 400051a1: 2924 s32i.n a2, a4, 8 400051a3: 163208 beqz a2, 0x4000522a 400051a6: 85ddfb call0 ets_intr_unlock ; 0x40000f80 400051a9: 2831 l32i.n a2, a1, 12 400051ab: 0c03 movi.n a3, 0 400051ad: 3922 s32i.n a3, a2, 8 400051af: 2812 l32i.n a2, a2, 4 400051b1: 0cc3 movi.n a3, 12 400051b3: 4593fd call0 ets_bzero ; 0x40002ae8 400051b6: 0821 l32i.n a0, a1, 8 400051b8: a801 l32i.n a10, a1, 0 400051ba: 6831 l32i.n a6, a1, 12 400051bc: 7811 l32i.n a7, a1, 4 400051be: 9816 l32i.n a9, a6, 4 400051c0: cb77 addi.n a7, a7, 12 400051c2: 708841 srli a8, a7, 8 400051c5: a24901 s8i a10, a9, 1 400051c8: 724902 s8i a7, a9, 2 400051cb: 824903 s8i a8, a9, 3 400051ce: 707874 extui a7, a7, 8, 8 400051d1: 820902 l8ui a8, a9, 2 400051d4: 807711 slli a7, a7, 8 400051d7: 807720 or a7, a7, a8 400051da: 820900 l8ui a8, a9, 0 400051dd: a2a0f0 movi a10, 240 400051e0: a08810 and a8, a8, a10 400051e3: 824900 s8i a8, a9, 0 400051e6: 7070b4 extui a7, a7, 0, 12 400051e9: 407711 slli a7, a7, 12 400051ec: 8153ff l32r a8, [0xff000fff] ; 0x40004f38 400051ef: c02000 memw 400051f2: 521601 l16ui a5, a6, 2 400051f5: 005511 slli a5, a5, 16 400051f8: c02000 memw 400051fb: 921600 l16ui a9, a6, 0 400051fe: 905520 or a5, a5, a9 40005201: 805510 and a5, a5, a8 40005204: 705520 or a5, a5, a7 40005207: c02000 memw 4000520a: 525600 s16i a5, a6, 0 4000520d: 5050f5 extui a5, a5, 16, 16 40005210: c02000 memw 40005213: 2d00 mov.n a2, a0 40005215: 525601 s16i a5, a6, 2 40005218: 4841 l32i.n a4, a1, 16 4000521a: 12c120 addi a1, a1, 32 4000521d: 0d04 mov.n a0, a4 4000521f: 0df0 ret.n 40005221: 0c02 movi.n a2, 0 40005223: 0841 l32i.n a0, a1, 16 40005225: 12c120 addi a1, a1, 32 40005228: 0df0 ret.n 4000522a: 9d04 mov.n a9, a4 4000522c: 8b84 addi.n a8, a4, 8 4000522e: 8939 s32i.n a8, a9, 12 40005230: 86dcff j 0x400051a6 40005233: 00 sip_to_host_evt_send_done: 40005234: 12c1f0 addi a1, a1, -16 40005237: 026100 s32i a0, a1, 0 4000523a: c26101 s32i a12, a1, 4 4000523d: 72a080 movi a7, 128 40005240: 20c220 or a12, a2, a2 40005243: c02000 memw 40005246: 620203 l8ui a6, a2, 3 40005249: 606064 extui a6, a6, 0, 7 4000524c: 706620 or a6, a6, a7 4000524f: c02000 memw 40005252: 624203 s8i a6, a2, 3 40005255: 52a0bf movi a5, 191 40005258: c02000 memw 4000525b: 420203 l8ui a4, a2, 3 4000525e: 504410 and a4, a4, a5 40005261: c02000 memw 40005264: 424203 s8i a4, a2, 3 40005267: 32a0df movi a3, 223 4000526a: c02000 memw 4000526d: 220203 l8ui a2, a2, 3 40005270: 302210 and a2, a2, a3 40005273: c02000 memw 40005276: 224c03 s8i a2, a12, 3 40005279: 212fff l32r a2, [0xff000fff] ; 0x40004f38 4000527c: c02000 memw 4000527f: 021c01 l16ui a0, a12, 2 40005282: 000011 slli a0, a0, 16 40005285: c02000 memw 40005288: 321c00 l16ui a3, a12, 0 4000528b: 300020 or a0, a0, a3 4000528e: 200010 and a0, a0, a2 40005291: c02000 memw 40005294: 025c00 s16i a0, a12, 0 40005297: 0000f5 extui a0, a0, 16, 16 4000529a: c02000 memw 4000529d: 025c01 s16i a0, a12, 2 400052a0: 05cdfb call0 ets_intr_lock ; 0x40000f74 400052a3: 8b9c addi.n a9, a12, 8 400052a5: a1a2ff l32r a10, [0x3fffdff0] ; 0x40005130 400052a8: 0c00 movi.n a0, 0 400052aa: b83a l32i.n a11, a10, 12 400052ac: 092c s32i.n a0, a12, 8 400052ae: c90b s32i.n a12, a11, 0 400052b0: 993a s32i.n a9, a10, 12 400052b2: c5ccfb call0 ets_intr_unlock ; 0x40000f80 400052b5: c811 l32i.n a12, a1, 4 400052b7: 0801 l32i.n a0, a1, 0 400052b9: 12c110 addi a1, a1, 16 400052bc: 0df0 ret.n 400052be: 0000 sip_reclaim_tx_data_pkt: 400052c0: 12c1f0 addi a1, a1, -16 400052c3: 0901 s32i.n a0, a1, 0 400052c5: 0d02 mov.n a0, a2 400052c7: 161207 beqz a2, 0x4000533c 400052ca: 0c08 movi.n a8, 0 400052cc: 92a0df movi a9, 223 400052cf: a2a0bf movi a10, 191 400052d2: b2a080 movi a11, 128 400052d5: 6118ff l32r a6, [0xff000fff] ; 0x40004f38 400052d8: c02000 memw 400052db: 720003 l8ui a7, a0, 3 400052de: 707064 extui a7, a7, 0, 7 400052e1: b07720 or a7, a7, a11 400052e4: c02000 memw 400052e7: 724003 s8i a7, a0, 3 400052ea: c02000 memw 400052ed: 520003 l8ui a5, a0, 3 400052f0: a05510 and a5, a5, a10 400052f3: 805520 or a5, a5, a8 400052f6: c02000 memw 400052f9: 524003 s8i a5, a0, 3 400052fc: c02000 memw 400052ff: 720003 l8ui a7, a0, 3 40005302: 907710 and a7, a7, a9 40005305: 807720 or a7, a7, a8 40005308: c02000 memw 4000530b: 724003 s8i a7, a0, 3 4000530e: c02000 memw 40005311: 521001 l16ui a5, a0, 2 40005314: 005511 slli a5, a5, 16 40005317: c02000 memw 4000531a: 721000 l16ui a7, a0, 0 4000531d: 705520 or a5, a5, a7 40005320: 605510 and a5, a5, a6 40005323: 805520 or a5, a5, a8 40005326: c02000 memw 40005329: 525000 s16i a5, a0, 0 4000532c: 5050f5 extui a5, a5, 16, 16 4000532f: c02000 memw 40005332: 525001 s16i a5, a0, 2 40005335: 0820 l32i.n a0, a0, 8 40005337: 3df0 nop.n 40005339: 56b0f9 bnez a0, 0x400052d8 4000533c: 45b500 call0 slc_from_host_chain_recycle ; 0x40005e94 4000533f: 0801 l32i.n a0, a1, 0 40005341: 12c110 addi a1, a1, 16 40005344: 0df0 ret.n 40005346: 000000000000 sip_reclaim_from_host_cmd: 4000534c: 12c1f0 addi a1, a1, -16 4000534f: 026100 s32i a0, a1, 0 40005352: 203220 or a3, a2, a2 40005355: 82a080 movi a8, 128 40005358: c02000 memw 4000535b: 720203 l8ui a7, a2, 3 4000535e: 707064 extui a7, a7, 0, 7 40005361: 807720 or a7, a7, a8 40005364: c02000 memw 40005367: 724203 s8i a7, a2, 3 4000536a: 62a0bf movi a6, 191 4000536d: c02000 memw 40005370: 520203 l8ui a5, a2, 3 40005373: 605510 and a5, a5, a6 40005376: c02000 memw 40005379: 524203 s8i a5, a2, 3 4000537c: 42a0df movi a4, 223 4000537f: c02000 memw 40005382: 220203 l8ui a2, a2, 3 40005385: 402210 and a2, a2, a4 40005388: c02000 memw 4000538b: 224303 s8i a2, a3, 3 4000538e: 21eafe l32r a2, [0xff000fff] ; 0x40004f38 40005391: c02000 memw 40005394: 021301 l16ui a0, a3, 2 40005397: 000011 slli a0, a0, 16 4000539a: c02000 memw 4000539d: 421300 l16ui a4, a3, 0 400053a0: 400020 or a0, a0, a4 400053a3: 200010 and a0, a0, a2 400053a6: c02000 memw 400053a9: 025300 s16i a0, a3, 0 400053ac: 0000f5 extui a0, a0, 16, 16 400053af: c02000 memw 400053b2: 302320 or a2, a3, a3 400053b5: 0c14 movi.n a4, 1 400053b7: 025301 s16i a0, a3, 2 400053ba: 85ad00 call0 slc_from_host_chain_recycle ; 0x40005e94 400053bd: 0801 l32i.n a0, a1, 0 400053bf: 12c110 addi a1, a1, 16 400053c2: 0df0 ret.n sub_53c4: 400053c4: 12c1f0 addi a1, a1, -16 400053c7: 2d01 mov.n a2, a1 400053c9: 4b31 addi.n a3, a1, 4 400053cb: 0921 s32i.n a0, a1, 8 400053cd: 05b400 call0 slc_to_host_chain_recycle ; 0x40005f10 400053d0: 4801 l32i.n a4, a1, 0 400053d2: 3814 l32i.n a3, a4, 4 400053d4: 6157ff l32r a6, [0x3fffdff0] ; 0x40005130 400053d7: 4b53 addi.n a5, a3, 4 400053d9: c02000 memw 400053dc: 220503 l8ui a2, a5, 3 400053df: 802211 slli a2, a2, 8 400053e2: c02000 memw 400053e5: 720502 l8ui a7, a5, 2 400053e8: 702220 or a2, a2, a7 400053eb: 802211 slli a2, a2, 8 400053ee: c02000 memw 400053f1: 720501 l8ui a7, a5, 1 400053f4: 702220 or a2, a2, a7 400053f7: 802211 slli a2, a2, 8 400053fa: c02000 memw 400053fd: 0866 l32i.n a0, a6, 24 400053ff: 520500 l8ui a5, a5, 0 40005402: 2b33 addi.n a3, a3, 2 40005404: 502220 or a2, a2, a5 40005407: 202c41 srli a2, a2, 12 4000540a: 224300 s8i a2, a3, 0 4000540d: 202841 srli a2, a2, 8 40005410: 224301 s8i a2, a3, 1 40005413: 9c20 beqz.n a0, 0x40005429 40005415: 4920 s32i.n a4, a0, 8 40005417: 0c03 movi.n a3, 0 40005419: 0821 l32i.n a0, a1, 8 4000541b: 5811 l32i.n a5, a1, 4 4000541d: 324644 s8i a3, a6, 68 40005420: 5966 s32i.n a5, a6, 24 40005422: 12c110 addi a1, a1, 16 40005425: 0df0 ret.n 40005427: 0000 40005429: 22a01d movi a2, 29 4000542c: 32a000 movi a3, 0 4000542f: 7140ff l32r a7, [0x3fffdff0] ; 0x40005130 40005432: 622101 l32i a6, a1, 4 40005435: 4957 s32i.n a4, a7, 20 40005437: 6967 s32i.n a6, a7, 24 40005439: 859efb call0 ets_post ; 0x40000e24 4000543c: 913dff l32r a9, [0x3fffdff0] ; 0x40005130 4000543f: 0c08 movi.n a8, 0 40005441: 0821 l32i.n a0, a1, 8 40005443: 12c110 addi a1, a1, 16 40005446: 824944 s8i a8, a9, 68 40005449: 0df0 ret.n 4000544b: 00 sip_install_rx_ctrl_cb: 4000544c: 4139ff l32r a4, [0x3fffdff0] ; 0x40005130 4000544f: 322414 l32i a3, a4, 80 40005452: 203293 movnez a3, a2, a2 40005455: 326414 s32i a3, a4, 80 40005458: 0df0 ret.n 4000545a: 0000 sip_install_rx_data_cb: 4000545c: 4135ff l32r a4, [0x3fffdff0] ; 0x40005130 4000545f: 322415 l32i a3, a4, 84 40005462: 203293 movnez a3, a2, a2 40005465: 326415 s32i a3, a4, 84 40005468: 0df0 ret.n 4000546a: 0000 sub_546c: 4000546c: 12c1f0 addi a1, a1, -16 4000546f: 2d01 mov.n a2, a1 40005471: 4b31 addi.n a3, a1, 4 40005473: 0921 s32i.n a0, a1, 8 40005475: c5aa00 call0 slc_from_host_chain_fetch ; 0x40005f24 40005478: 42a0bf movi a4, 191 4000547b: 212dff l32r a2, [0x3fffdff0] ; 0x40005130 4000547e: 3811 l32i.n a3, a1, 4 40005480: c02000 memw 40005483: 020303 l8ui a0, a3, 3 40005486: 400010 and a0, a0, a4 40005489: c02000 memw 4000548c: 522216 l32i a5, a2, 88 4000548f: 024303 s8i a0, a3, 3 40005492: 3801 l32i.n a3, a1, 0 40005494: 8cc5 beqz.n a5, 0x400054a4 40005496: 2d03 mov.n a2, a3 40005498: 3811 l32i.n a3, a1, 4 4000549a: c00500 callx0 a5 4000549d: 0821 l32i.n a0, a1, 8 4000549f: 12c110 addi a1, a1, 16 400054a2: 0df0 ret.n 400054a4: 0882 l32i.n a0, a2, 32 400054a6: 8cb0 beqz.n a0, 0x400054b5 400054a8: 3920 s32i.n a3, a0, 8 400054aa: 0821 l32i.n a0, a1, 8 400054ac: 5811 l32i.n a5, a1, 4 400054ae: 5982 s32i.n a5, a2, 32 400054b0: 12c110 addi a1, a1, 16 400054b3: 0df0 ret.n 400054b5: 6811 l32i.n a6, a1, 4 400054b7: 3972 s32i.n a3, a2, 28 400054b9: 6982 s32i.n a6, a2, 32 400054bb: 0c22 movi.n a2, 2 400054bd: c5c3ff call0 sip_post ; 0x400050fc 400054c0: 0821 l32i.n a0, a1, 8 400054c2: 12c110 addi a1, a1, 16 400054c5: 0df0 ret.n 400054c7: 00 400054c8: 3fffd89c ; l32r 400054cc: 3fffd884 ; l32r sub_54d0: 400054d0: 12c1e0 addi a1, a1, -32 400054d3: c951 s32i.n a12, a1, 20 400054d5: cd02 mov.n a12, a2 400054d7: 2812 l32i.n a2, a2, 4 400054d9: 0941 s32i.n a0, a1, 16 400054db: 020207 l8ui a0, a2, 7 400054de: 320206 l8ui a3, a2, 6 400054e1: 800011 slli a0, a0, 8 400054e4: 300020 or a0, a0, a3 400054e7: 320205 l8ui a3, a2, 5 400054ea: 800011 slli a0, a0, 8 400054ed: 300020 or a0, a0, a3 400054f0: 320204 l8ui a3, a2, 4 400054f3: 800011 slli a0, a0, 8 400054f6: 300020 or a0, a0, a3 400054f9: 0b30 addi.n a3, a0, -1 400054fb: 16e311 beqz a3, 0x4000561d 400054fe: 26306e beqi a0, 3, 0x40005570 40005501: 32c0fb addi a3, a0, -5 40005504: 16d30a beqz a3, 0x400055b5 40005507: 26a00e beqi a0, 12, 0x40005519 4000550a: c02c20 or a2, a12, a12 4000550d: c5e3ff call0 sip_reclaim_from_host_cmd ; 0x4000534c 40005510: c851 l32i.n a12, a1, 20 40005512: 0841 l32i.n a0, a1, 16 40005514: 12c120 addi a1, a1, 32 40005517: 0df0 ret.n 40005519: 0c73 movi.n a3, 7 4000551b: 42c218 addi a4, a2, 24 4000551e: cb52 addi.n a5, a2, 12 40005520: 5921 s32i.n a5, a1, 8 40005522: 4931 s32i.n a4, a1, 12 40005524: 0cc2 movi.n a2, 12 40005526: 85c5ff call0 sip_alloc_to_host_evt ; 0x40005180 40005529: 2911 s32i.n a2, a1, 4 4000552b: 56b200 bnez a2, 0x4000553a ; Format: "no rds" 4000552e: 21e6ff l32r a2, [0x3fffd89c] ; 0x400054c8 40005531: 85f9fc call0 ets_printf ; 0x400024cc 40005534: 86f4ff j 0x4000550a 40005537: 000000 4000553a: 322103 l32i a3, a1, 12 4000553d: 222201 l32i a2, a2, 4 40005540: 5821 l32i.n a5, a1, 8 40005542: cb22 addi.n a2, a2, 12 40005544: 420507 l8ui a4, a5, 7 40005547: 620506 l8ui a6, a5, 6 4000554a: 804411 slli a4, a4, 8 4000554d: 604420 or a4, a4, a6 40005550: 804411 slli a4, a4, 8 40005553: 620505 l8ui a6, a5, 5 40005556: 520504 l8ui a5, a5, 4 40005559: 604420 or a4, a4, a6 4000555c: 804411 slli a4, a4, 8 4000555f: 504420 or a4, a4, a5 40005562: 0535fc call0 ets_memcpy ; 0x400018b4 40005565: 3811 l32i.n a3, a1, 4 40005567: 2d03 mov.n a2, a3 40005569: c52900 call0 sip_send ; 0x40005808 4000556c: 86e6ff j 0x4000550a 4000556f: 00 40005570: 82020d l8ui a8, a2, 13 40005573: 72020e l8ui a7, a2, 14 40005576: 62020f l8ui a6, a2, 15 40005579: 520213 l8ui a5, a2, 19 4000557c: 806611 slli a6, a6, 8 4000557f: 805511 slli a5, a5, 8 40005582: 706620 or a6, a6, a7 40005585: 720212 l8ui a7, a2, 18 40005588: 806611 slli a6, a6, 8 4000558b: 806620 or a6, a6, a8 4000558e: 705520 or a5, a5, a7 40005591: 720211 l8ui a7, a2, 17 40005594: 805511 slli a5, a5, 8 40005597: 705520 or a5, a5, a7 4000559a: 720210 l8ui a7, a2, 16 4000559d: 805511 slli a5, a5, 8 400055a0: 705520 or a5, a5, a7 400055a3: 72020c l8ui a7, a2, 12 400055a6: 806611 slli a6, a6, 8 400055a9: 706620 or a6, a6, a7 400055ac: c02000 memw 400055af: 5906 s32i.n a5, a6, 0 400055b1: 46d5ff j 0x4000550a 400055b4: 00 400055b5: 72020f l8ui a7, a2, 15 400055b8: 82020e l8ui a8, a2, 14 400055bb: 807711 slli a7, a7, 8 400055be: 807720 or a7, a7, a8 400055c1: 82020d l8ui a8, a2, 13 400055c4: 807711 slli a7, a7, 8 400055c7: 807720 or a7, a7, a8 400055ca: 82020c l8ui a8, a2, 12 400055cd: 807711 slli a7, a7, 8 400055d0: 807720 or a7, a7, a8 400055d3: 82c20c addi a8, a2, 12 400055d6: 702720 or a2, a7, a7 400055d9: 826100 s32i a8, a1, 0 400055dc: c59dfb call0 ets_set_user_start ; 0x40000fbc 400055df: 01d4fe l32r a0, [0x3fffdff0] ; 0x40005130 400055e2: 8840 l32i.n a8, a0, 16 400055e4: 076828 bbci a8, 0, 0x40005610 400055e7: 4801 l32i.n a4, a1, 0 ; Format: "bootup , addr 0x%08x" 400055e9: 21b8ff l32r a2, [0x3fffd884] ; 0x400054cc 400055ec: 320403 l8ui a3, a4, 3 400055ef: 520402 l8ui a5, a4, 2 400055f2: 803311 slli a3, a3, 8 400055f5: 503320 or a3, a3, a5 400055f8: 803311 slli a3, a3, 8 400055fb: 520401 l8ui a5, a4, 1 400055fe: 420400 l8ui a4, a4, 0 40005601: 503320 or a3, a3, a5 40005604: 803311 slli a3, a3, 8 40005607: 403320 or a3, a3, a4 4000560a: 05ecfc call0 ets_printf ; 0x400024cc 4000560d: 01c8fe l32r a0, [0x3fffdff0] ; 0x40005130 40005610: 0c24 movi.n a4, 2 40005612: 0c05 movi.n a5, 0 40005614: 526016 s32i a5, a0, 88 40005617: 49b0 s32i.n a4, a0, 44 40005619: 46bbff j 0x4000550a 4000561c: 00 4000561d: 32c214 addi a3, a2, 20 40005620: 62020e l8ui a6, a2, 14 40005623: 720211 l8ui a7, a2, 17 40005626: 420213 l8ui a4, a2, 19 40005629: 520212 l8ui a5, a2, 18 4000562c: 804411 slli a4, a4, 8 4000562f: 504420 or a4, a4, a5 40005632: 804411 slli a4, a4, 8 40005635: 52020f l8ui a5, a2, 15 40005638: 704420 or a4, a4, a7 4000563b: 720210 l8ui a7, a2, 16 4000563e: 805511 slli a5, a5, 8 40005641: 804411 slli a4, a4, 8 40005644: 605520 or a5, a5, a6 40005647: 62020d l8ui a6, a2, 13 4000564a: 805511 slli a5, a5, 8 4000564d: 704420 or a4, a4, a7 40005650: 605520 or a5, a5, a6 40005653: 62020c l8ui a6, a2, 12 40005656: 805511 slli a5, a5, 8 40005659: 605520 or a5, a5, a6 4000565c: 2d05 mov.n a2, a5 4000565e: 4525fc call0 ets_memcpy ; 0x400018b4 40005661: 46a9ff j 0x4000550a 40005664: 00000000 sip_get_state: 40005668: 21b2fe l32r a2, [0x3fffdff0] ; 0x40005130 4000566b: 28b2 l32i.n a2, a2, 44 4000566d: 0df0 ret.n 4000566f: 00 40005670: 400053c4 ; l32r 40005674: 4000546c ; l32r 40005678: 400054d0 ; l32r ; Called by main() with a2 set to 0, 1, 2, or 3 ; ; what the heck is sip, not to mention slc ; ; A fellow at Espressif (Angus Gratton) says: ; ; the acronym is "SLC = SDIO/SPI Link Connection"? ; ; SLC involves DMA with SDIO and I2S interfaces. sip_init_attach: 4000567c: 31feff l32r a3, [sub_546c] ; [0x4000546c] 0x40005674 4000567f: 5d02 mov.n a5, a2 40005681: 12c1f0 addi a1, a1, -16 ; stack space 40005684: 21fbff l32r a2, [sub_53c4] ; [0x400053c4] 0x40005670 40005687: c911 s32i.n a12, a1, 4 ; save a12 40005689: 0901 s32i.n a0, a1, 0 ; save return 4000568b: c1a9fe l32r a12, [0x3fffdff0] ; 0x40005130 4000568e: 0c00 movi.n a0, 0 40005690: 4d0c mov.n a4, a12 40005692: 09bc s32i.n a0, a12, 44 40005694: 855b00 call0 slc_init_attach ; 0x40005c50 40005697: 29cc s32i.n a2, a12, 48 40005699: c5a9ff call0 sub_5138 ; 0x40005138 4000569c: 28cc l32i.n a2, a12, 48 4000569e: 31f6ff l32r a3, [sub_54d0] ; [0x400054d0] 0x40005678 400056a1: 326c16 s32i a3, a12, 88 400056a4: 221200 l16ui a2, a2, 0 400056a7: 225c01 s16i a2, a12, 2 400056aa: 456e00 call0 slc_enable ; 0x40005d90 400056ad: 0c14 movi.n a4, 1 400056af: 0801 l32i.n a0, a1, 0 ; restore return 400056b1: 49bc s32i.n a4, a12, 44 400056b3: c811 l32i.n a12, a1, 4 ; restore a12 400056b5: 12c110 addi a1, a1, 16 ; restore stack 400056b8: 0df0 ret.n 400056ba: 0000 400056bc: 40005bbc ; l32r 400056c0: 3fffe190 ; l32r sip_post_init: 400056c4: 32a01d movi a3, 29 400056c7: 41feff l32r a4, [0x3fffe190] ; 0x400056c0 400056ca: 52a008 movi a5, 8 400056cd: 12c1f0 addi a1, a1, -16 400056d0: 2198fe l32r a2, [0x3fffdff0] ; 0x40005130 400056d3: 026100 s32i a0, a1, 0 400056d6: 0c00 movi.n a0, 0 400056d8: 09a2 s32i.n a0, a2, 40 400056da: 0992 s32i.n a0, a2, 36 400056dc: 21f8ff l32r a2, [sub_5bbc] ; [0x40005bbc] 0x400056bc 400056df: 056ffb call0 ets_task ; 0x40000dd0 400056e2: 0801 l32i.n a0, a1, 0 400056e4: 12c110 addi a1, a1, 16 400056e7: 0df0 ret.n 400056e9: 000000 sub_56ec: 400056ec: 12c1f0 addi a1, a1, -16 400056ef: 0911 s32i.n a0, a1, 4 400056f1: 0c0a movi.n a10, 0 400056f3: 918ffe l32r a9, [0x3fffdff0] ; 0x40005130 400056f6: c02000 memw 400056f9: a901 s32i.n a10, a1, 0 400056fb: 28e9 l32i.n a2, a9, 56 400056fd: 38f9 l32i.n a3, a9, 60 400056ff: 5d02 mov.n a5, a2 40005701: 16c20f beqz a2, 0x40005801 40005704: 7145eb l32r a7, [0x00ffffff] ; 0x40000418 40005707: 0c00 movi.n a0, 0 40005709: c02000 memw 4000570c: 421501 l16ui a4, a5, 2 4000570f: 004411 slli a4, a4, 16 40005712: c02000 memw 40005715: 621500 l16ui a6, a5, 0 40005718: 522502 l32i a5, a5, 8 4000571b: 604420 or a4, a4, a6 4000571e: 704410 and a4, a4, a7 40005721: 404c41 srli a4, a4, 12 40005724: 000480 add a0, a4, a0 40005727: 56e5fd bnez a5, 0x40005709 4000572a: 510afa l32r a5, [0x60000a00] ; 0x40003f54 4000572d: c02000 memw 40005730: 026100 s32i a0, a1, 0 40005733: b2a0bf movi a11, 191 40005736: 4c08 movi.n a8, 64 40005738: c02000 memw 4000573b: 720303 l8ui a7, a3, 3 4000573e: b07710 and a7, a7, a11 40005741: 807720 or a7, a7, a8 40005744: c02000 memw 40005747: 724303 s8i a7, a3, 3 4000574a: 8812 l32i.n a8, a2, 4 4000574c: 4b78 addi.n a7, a8, 4 4000574e: c02000 memw 40005751: a24700 s8i a10, a7, 0 40005754: a06841 srli a6, a10, 8 40005757: c02000 memw 4000575a: 624701 s8i a6, a7, 1 4000575d: 606841 srli a6, a6, 8 40005760: c02000 memw 40005763: 624702 s8i a6, a7, 2 40005766: 606841 srli a6, a6, 8 40005769: c02000 memw 4000576c: 624703 s8i a6, a7, 3 4000576f: 2b48 addi.n a4, a8, 2 40005771: 020401 l8ui a0, a4, 1 40005774: 420400 l8ui a4, a4, 0 40005777: 800011 slli a0, a0, 8 4000577a: 400020 or a0, a0, a4 4000577d: 400011 slli a0, a0, 12 40005780: 4b48 addi.n a4, a8, 4 40005782: c02000 memw 40005785: b20403 l8ui a11, a4, 3 40005788: 80bb11 slli a11, a11, 8 4000578b: c02000 memw 4000578e: 620402 l8ui a6, a4, 2 40005791: 60bb20 or a11, a11, a6 40005794: 80bb11 slli a11, a11, 8 40005797: c02000 memw 4000579a: 620401 l8ui a6, a4, 1 4000579d: 60bb20 or a11, a11, a6 400057a0: 80bb11 slli a11, a11, 8 400057a3: c02000 memw 400057a6: 420400 l8ui a4, a4, 0 400057a9: 40bb20 or a11, a11, a4 400057ac: 00bb20 or a11, a11, a0 400057af: 4b08 addi.n a0, a8, 4 400057b1: c02000 memw 400057b4: b24000 s8i a11, a0, 0 400057b7: b0b841 srli a11, a11, 8 400057ba: c02000 memw 400057bd: b24001 s8i a11, a0, 1 400057c0: b0b841 srli a11, a11, 8 400057c3: c02000 memw 400057c6: b24002 s8i a11, a0, 2 400057c9: b0b841 srli a11, a11, 8 400057cc: c02000 memw 400057cf: b24003 s8i a11, a0, 3 400057d2: c02000 memw 400057d5: 2b88 addi.n a8, a8, 2 400057d7: 7801 l32i.n a7, a1, 0 400057d9: 724800 s8i a7, a8, 0 400057dc: 707841 srli a7, a7, 8 400057df: 724801 s8i a7, a8, 1 400057e2: c02000 memw 400057e5: 6801 l32i.n a6, a1, 0 400057e7: c02000 memw 400057ea: 626565 s32i a6, a5, 0x194 400057ed: c02000 memw 400057f0: 522565 l32i a5, a5, 0x194 400057f3: a9e9 s32i.n a10, a9, 56 400057f5: a9f9 s32i.n a10, a9, 60 400057f7: c55e00 call0 slc_send_to_host_chain ; 0x40005de4 400057fa: 0811 l32i.n a0, a1, 4 400057fc: 12c110 addi a1, a1, 16 400057ff: 0df0 ret.n 40005801: 0c00 movi.n a0, 0 40005803: c6c8ff j 0x4000572a 40005806: 0000 sip_send: 40005808: 414afe l32r a4, [0x3fffdff0] ; 0x40005130 4000580b: 12c1f0 addi a1, a1, -16 4000580e: 026100 s32i a0, a1, 0 40005811: 522201 l32i a5, a2, 4 40005814: 08a4 l32i.n a0, a4, 40 40005816: 024508 s8i a0, a5, 8 40005819: 006841 srli a6, a0, 8 4000581c: 624509 s8i a6, a5, 9 4000581f: 1b00 addi.n a0, a0, 1 40005821: 606841 srli a6, a6, 8 40005824: 62450a s8i a6, a5, 10 40005827: 606841 srli a6, a6, 8 4000582a: 62450b s8i a6, a5, 11 4000582d: 09a4 s32i.n a0, a4, 40 4000582f: 450300 call0 sip_to_host_chain_append ; 0x40005864 40005832: 0574fb call0 ets_intr_lock ; 0x40000f74 40005835: 013efe l32r a0, [0x3fffdff0] ; 0x40005130 40005838: 720044 l8ui a7, a0, 68 4000583b: 8cb7 beqz.n a7, 0x4000584a 4000583d: 0574fb call0 ets_intr_unlock ; 0x40000f80 40005840: 0c02 movi.n a2, 0 40005842: 0801 l32i.n a0, a1, 0 40005844: 12c110 addi a1, a1, 16 40005847: 0df0 ret.n 40005849: 00 4000584a: 82a001 movi a8, 1 4000584d: 824044 s8i a8, a0, 68 40005850: c572fb call0 ets_intr_unlock ; 0x40000f80 40005853: 85e9ff call0 sub_56ec ; 0x400056ec 40005856: 22a000 movi a2, 0 40005859: 022100 l32i a0, a1, 0 4000585c: 12c110 addi a1, a1, 16 4000585f: 0df0 ret.n 40005861: 000000 sip_to_host_chain_append: 40005864: 9133fe l32r a9, [0x3fffdff0] ; 0x40005130 40005867: 5812 l32i.n a5, a2, 4 40005869: 68f9 l32i.n a6, a9, 60 4000586b: 722910 l32i a7, a9, 64 4000586e: 9c76 beqz.n a6, 0x40005889 40005870: 820502 l8ui a8, a5, 2 40005873: 420503 l8ui a4, a5, 3 40005876: 2926 s32i.n a2, a6, 8 40005878: 804411 slli a4, a4, 8 4000587b: 804420 or a4, a4, a8 4000587e: 39f9 s32i.n a3, a9, 60 40005880: 39f9 s32i.n a3, a9, 60 40005882: 7a44 add.n a4, a4, a7 40005884: 426910 s32i a4, a9, 64 40005887: 0df0 ret.n 40005889: 29e9 s32i.n a2, a9, 56 4000588b: 620503 l8ui a6, a5, 3 4000588e: 720502 l8ui a7, a5, 2 40005891: 39f9 s32i.n a3, a9, 60 40005893: 806611 slli a6, a6, 8 40005896: 706620 or a6, a6, a7 40005899: 39f9 s32i.n a3, a9, 60 4000589b: 0c07 movi.n a7, 0 4000589d: 726910 s32i a7, a9, 64 400058a0: 626910 s32i a6, a9, 64 400058a3: 0df0 ret.n 400058a5: 000000 sip_get_ptr: 400058a8: 2122fe l32r a2, [0x3fffdff0] ; 0x40005130 400058ab: 0df0 ret.n 400058ad: 000000 400058b0: 3fffd8b8 ; l32r 400058b4: 3fffd8a4 ; l32r sub_58b8: 400058b8: 12c1e0 addi a1, a1, -32 400058bb: c26103 s32i a12, a1, 12 400058be: d26104 s32i a13, a1, 16 400058c1: e951 s32i.n a14, a1, 20 400058c3: 0921 s32i.n a0, a1, 8 400058c5: c56afb call0 ets_intr_lock ; 0x40000f74 400058c8: d11afe l32r a13, [0x3fffdff0] ; 0x40005130 400058cb: 0c10 movi.n a0, 1 400058cd: 28ed l32i.n a2, a13, 56 400058cf: 320d44 l8ui a3, a13, 68 400058d2: 8c12 beqz.n a2, 0x400058d7 400058d4: 168311 beqz a3, 0x400059f0 400058d7: 856afb call0 ets_intr_unlock ; 0x40000f80 400058da: 485d l32i.n a4, a13, 20 400058dc: 584d l32i.n a5, a13, 16 400058de: dc24 bnez.n a4, 0x400058f4 400058e0: 505004 extui a5, a5, 0, 1 400058e3: 56150f bnez a5, 0x400059d8 400058e6: c831 l32i.n a12, a1, 12 400058e8: d841 l32i.n a13, a1, 16 400058ea: e851 l32i.n a14, a1, 20 400058ec: 0821 l32i.n a0, a1, 8 400058ee: 12c120 addi a1, a1, 32 400058f1: 0df0 ret.n 400058f3: 00 400058f4: c567fb call0 ets_intr_lock ; 0x40000f74 400058f7: c22d05 l32i a12, a13, 20 400058fa: 62a000 movi a6, 0 400058fd: 696d s32i.n a6, a13, 24 400058ff: 695d s32i.n a6, a13, 20 40005901: c567fb call0 ets_intr_unlock ; 0x40000f80 40005904: dc8c bnez.n a12, 0x40005920 40005906: 06f7ff j 0x400058e6 40005909: 261047 beqi a0, 1, 0x40005954 4000590c: 662002 bnei a0, 2, 0x40005912 4000590f: 461e00 j 0x4000598c 40005912: 784d l32i.n a7, a13, 16 40005914: 076705 bbci a7, 0, 0x4000591d ; Format: "rx done unknown" 40005917: 21e6ff l32r a2, [0x3fffd8b8] ; 0x400058b0 4000591a: 05bbfc call0 ets_printf ; 0x400024cc 4000591d: 165cfc beqz a12, 0x400058e6 40005920: 281c l32i.n a2, a12, 4 40005922: 020200 l8ui a0, a2, 0 40005925: ed0c mov.n a14, a12 40005927: 000034 extui a0, a0, 0, 4 4000592a: 56b0fd bnez a0, 0x40005909 4000592d: c82c l32i.n a12, a12, 8 4000592f: 0c04 movi.n a4, 0 40005931: 492e s32i.n a4, a14, 8 40005933: 320201 l8ui a3, a2, 1 40005936: 622d13 l32i a6, a13, 76 40005939: 66830f bnei a3, 8, 0x4000594c 4000593c: 16d6fd beqz a6, 0x4000591d 4000593f: 2d0e mov.n a2, a14 40005941: 3d0e mov.n a3, a14 40005943: 0c14 movi.n a4, 1 40005945: c00600 callx0 a6 40005948: 46f4ff j 0x4000591d 4000594b: 00 4000594c: 2d0e mov.n a2, a14 4000594e: 458eff call0 sip_to_host_evt_send_done ; 0x40005234 40005951: 06f2ff j 0x4000591d 40005954: 420203 l8ui a4, a2, 3 40005957: 320202 l8ui a3, a2, 2 4000595a: 802411 slli a2, a4, 8 4000595d: 302220 or a2, a2, a3 40005960: 321d03 l16ui a3, a13, 6 40005963: c585fd call0 multofup ; 0x400031c0 40005966: 2030f4 extui a3, a2, 0, 16 40005969: 326101 s32i a3, a1, 4 4000596c: c02c20 or a2, a12, a12 4000596f: 056eff call0 lldesc_num2link ; 0x40005050 40005972: 3d02 mov.n a3, a2 40005974: c822 l32i.n a12, a2, 8 40005976: 0c05 movi.n a5, 0 40005978: 622d12 l32i a6, a13, 72 4000597b: 5922 s32i.n a5, a2, 8 4000597d: 16c6f9 beqz a6, 0x4000591d 40005980: 2d0e mov.n a2, a14 40005982: 422101 l32i a4, a1, 4 40005985: c00600 callx0 a6 40005988: 46e4ff j 0x4000591d 4000598b: 00 4000598c: 420203 l8ui a4, a2, 3 4000598f: 320202 l8ui a3, a2, 2 40005992: 802411 slli a2, a4, 8 40005995: 302220 or a2, a2, a3 40005998: 321d03 l16ui a3, a13, 6 4000599b: 4582fd call0 multofup ; 0x400031c0 4000599e: 32c2ff addi a3, a2, -1 400059a1: c02c20 or a2, a12, a12 400059a4: 3030f4 extui a3, a3, 0, 16 400059a7: 3901 s32i.n a3, a1, 0 400059a9: 456aff call0 lldesc_num2link ; 0x40005050 400059ac: 3d02 mov.n a3, a2 400059ae: c822 l32i.n a12, a2, 8 400059b0: 0c04 movi.n a4, 0 400059b2: 622d12 l32i a6, a13, 72 400059b5: 4922 s32i.n a4, a2, 8 400059b7: 8c56 beqz.n a6, 0x400059c0 400059b9: 2d0e mov.n a2, a14 400059bb: 4801 l32i.n a4, a1, 0 400059bd: c00600 callx0 a6 400059c0: 622d13 l32i a6, a13, 76 400059c3: 3d0c mov.n a3, a12 400059c5: 0c05 movi.n a5, 0 400059c7: c82c l32i.n a12, a12, 8 400059c9: 5923 s32i.n a5, a3, 8 400059cb: 16e6f4 beqz a6, 0x4000591d 400059ce: 2d03 mov.n a2, a3 400059d0: 0c14 movi.n a4, 1 400059d2: c00600 callx0 a6 400059d5: 06d1ff j 0x4000591d ; Format: "sip bogus rx done" 400059d8: 21b7ff l32r a2, [0x3fffd8a4] ; 0x400058b4 400059db: 05affc call0 ets_printf ; 0x400024cc 400059de: c22103 l32i a12, a1, 12 400059e1: d22104 l32i a13, a1, 16 400059e4: e22105 l32i a14, a1, 20 400059e7: 0821 l32i.n a0, a1, 8 400059e9: 12c120 addi a1, a1, 32 400059ec: 0df0 ret.n 400059ee: 0000 400059f0: 024d44 s8i a0, a13, 68 400059f3: c558fb call0 ets_intr_unlock ; 0x40000f80 400059f6: 45cfff call0 sub_56ec ; 0x400056ec 400059f9: 46b7ff j 0x400058da 400059fc: 00000000 40005a00: 3fffd8f0 ; l32r 40005a04: 3fffd8dc ; l32r 40005a08: 3fffd8cc ; l32r sub_5a0c: 40005a0c: 12c1e0 addi a1, a1, -32 40005a0f: c921 s32i.n a12, a1, 8 40005a11: d931 s32i.n a13, a1, 12 40005a13: e941 s32i.n a14, a1, 16 40005a15: e1c6fd l32r a14, [0x3fffdff0] ; 0x40005130 40005a18: 0911 s32i.n a0, a1, 4 40005a1a: 087e l32i.n a0, a14, 28 40005a1c: f951 s32i.n a15, a1, 20 40005a1e: dc60 bnez.n a0, 0x40005a38 40005a20: 284e l32i.n a2, a14, 16 40005a22: 202004 extui a2, a2, 0, 1 40005a25: 56b217 bnez a2, 0x40005ba4 40005a28: c821 l32i.n a12, a1, 8 40005a2a: d831 l32i.n a13, a1, 12 40005a2c: e841 l32i.n a14, a1, 16 40005a2e: f851 l32i.n a15, a1, 20 40005a30: 0811 l32i.n a0, a1, 4 40005a32: 12c120 addi a1, a1, 32 40005a35: 0df0 ret.n 40005a37: 00 40005a38: 8553fb call0 ets_intr_lock ; 0x40000f74 40005a3b: d22e07 l32i a13, a14, 28 40005a3e: c2a000 movi a12, 0 40005a41: c98e s32i.n a12, a14, 32 40005a43: c97e s32i.n a12, a14, 28 40005a45: 8553fb call0 ets_intr_unlock ; 0x40000f80 40005a48: 16cdfd beqz a13, 0x40005a28 40005a4b: 0c05 movi.n a5, 0 40005a4d: 5961 s32i.n a5, a1, 24 40005a4f: c61600 j 0x40005aae 40005a52: 0000 40005a54: 37601c bbci a0, 3, 0x40005a74 40005a57: 720c0a l8ui a7, a12, 10 40005a5a: 806611 slli a6, a6, 8 40005a5d: 706620 or a6, a6, a7 40005a60: 720c09 l8ui a7, a12, 9 40005a63: 806611 slli a6, a6, 8 40005a66: 706620 or a6, a6, a7 40005a69: 720c08 l8ui a7, a12, 8 40005a6c: 806611 slli a6, a6, 8 40005a6f: 706620 or a6, a6, a7 40005a72: 699e s32i.n a6, a14, 36 40005a74: 722106 l32i a7, a1, 24 40005a77: dc47 bnez.n a7, 0x40005a8f 40005a79: 820c01 l8ui a8, a12, 1 40005a7c: 920e44 l8ui a9, a14, 68 40005a7f: 17680c bbci a8, 1, 0x40005a8f 40005a82: cc99 bnez.n a9, 0x40005a8f 40005a84: a8ee l32i.n a10, a14, 56 40005a86: cc5a bnez.n a10, 0x40005a8f 40005a88: 451700 call0 sub_5c00 ; 0x40005c00 40005a8b: 0c1b movi.n a11, 1 40005a8d: b961 s32i.n a11, a1, 24 40005a8f: 020c00 l8ui a0, a12, 0 40005a92: 000034 extui a0, a0, 0, 4 40005a95: 16b005 beqz a0, 0x40005af4 40005a98: 261070 beqi a0, 1, 0x40005b0c 40005a9b: 26206d beqi a0, 2, 0x40005b0c 40005a9e: 284e l32i.n a2, a14, 16 40005aa0: 3df0 nop.n 40005aa2: 076205 bbci a2, 0, 0x40005aab ; Format: "tx unknown" 40005aa5: 21d6ff l32r a2, [0x3fffd8f0] ; 0x40005a00 40005aa8: 05a2fc call0 ets_printf ; 0x400024cc 40005aab: 169df7 beqz a13, 0x40005a28 40005aae: c81d l32i.n a12, a13, 4 40005ab0: fd0d mov.n a15, a13 40005ab2: 020c01 l8ui a0, a12, 1 40005ab5: 620c0b l8ui a6, a12, 11 40005ab8: 003214 extui a3, a0, 2, 2 40005abb: 5653f9 bnez a3, 0x40005a54 40005abe: 489e l32i.n a4, a14, 36 40005ac0: 1b24 addi.n a2, a4, 1 40005ac2: 299e s32i.n a2, a14, 36 40005ac4: 020c0b l8ui a0, a12, 11 40005ac7: 220c0a l8ui a2, a12, 10 40005aca: 800011 slli a0, a0, 8 40005acd: 200020 or a0, a0, a2 40005ad0: 220c09 l8ui a2, a12, 9 40005ad3: 800011 slli a0, a0, 8 40005ad6: 200020 or a0, a0, a2 40005ad9: 220c08 l8ui a2, a12, 8 40005adc: 800011 slli a0, a0, 8 40005adf: 200020 or a0, a0, a2 40005ae2: 47108e beq a0, a4, 0x40005a74 ; Format: "seq %u, %u ds %p" 40005ae5: 21c7ff l32r a2, [0x3fffd8dc] ; 0x40005a04 40005ae8: 5d0d mov.n a5, a13 40005aea: 003020 or a3, a0, a0 40005aed: c59dfc call0 ets_printf ; 0x400024cc 40005af0: 06e0ff j 0x40005a74 40005af3: 00 40005af4: 2d0f mov.n a2, a15 40005af6: 3d0f mov.n a3, a15 40005af8: d82f l32i.n a13, a15, 8 40005afa: 0c0c movi.n a12, 0 40005afc: 022e14 l32i a0, a14, 80 40005aff: c92f s32i.n a12, a15, 8 40005b01: c00000 callx0 a0 40005b04: 2d0f mov.n a2, a15 40005b06: 4584ff call0 sip_reclaim_from_host_cmd ; 0x4000534c 40005b09: 86e7ff j 0x40005aab 40005b0c: 220c03 l8ui a2, a12, 3 40005b0f: 320c02 l8ui a3, a12, 2 40005b12: 802211 slli a2, a2, 8 40005b15: 302220 or a2, a2, a3 40005b18: 321e02 l16ui a3, a14, 4 40005b1b: 456afd call0 multofup ; 0x400031c0 40005b1e: 226100 s32i a2, a1, 0 40005b21: 203220 or a3, a2, a2 40005b24: 3030f4 extui a3, a3, 0, 16 40005b27: 2d0f mov.n a2, a15 40005b29: 4552ff call0 lldesc_num2link ; 0x40005050 40005b2c: d822 l32i.n a13, a2, 8 40005b2e: 0c07 movi.n a7, 0 40005b30: 520c03 l8ui a5, a12, 3 40005b33: 620c02 l8ui a6, a12, 2 40005b36: 805511 slli a5, a5, 8 40005b39: 605520 or a5, a5, a6 40005b3c: 7922 s32i.n a7, a2, 8 40005b3e: 6801 l32i.n a6, a1, 0 40005b40: 721e02 l16ui a7, a14, 4 40005b43: 3d02 mov.n a3, a2 40005b45: 706682 mull a6, a6, a7 40005b48: 6055c0 sub a5, a5, a6 40005b4b: c02000 memw 40005b4e: 421201 l16ui a4, a2, 2 40005b51: 004411 slli a4, a4, 16 40005b54: c02000 memw 40005b57: 621200 l16ui a6, a2, 0 40005b5a: 604420 or a4, a4, a6 40005b5d: 612eea l32r a6, [0x00ffffff] ; 0x40000418 40005b60: 604410 and a4, a4, a6 40005b63: 404c41 srli a4, a4, 12 40005b66: 5a44 add.n a4, a4, a5 40005b68: 4040b4 extui a4, a4, 0, 12 40005b6b: 404411 slli a4, a4, 12 40005b6e: c02000 memw 40005b71: 221201 l16ui a2, a2, 2 40005b74: 002211 slli a2, a2, 16 40005b77: c02000 memw 40005b7a: 521300 l16ui a5, a3, 0 40005b7d: 502220 or a2, a2, a5 40005b80: 51eefc l32r a5, [0xff000fff] ; 0x40004f38 40005b83: 502210 and a2, a2, a5 40005b86: 402220 or a2, a2, a4 40005b89: c02000 memw 40005b8c: 225300 s16i a2, a3, 0 40005b8f: 2020f5 extui a2, a2, 16, 16 40005b92: c02000 memw 40005b95: 225301 s16i a2, a3, 2 40005b98: 022e15 l32i a0, a14, 84 40005b9b: 2d0f mov.n a2, a15 40005b9d: c00000 callx0 a0 40005ba0: c6c1ff j 0x40005aab 40005ba3: 00 ; Format: "sip bogus tx" 40005ba4: 2199ff l32r a2, [0x3fffd8cc] ; 0x40005a08 40005ba7: 4592fc call0 ets_printf ; 0x400024cc 40005baa: c22102 l32i a12, a1, 8 40005bad: d22103 l32i a13, a1, 12 40005bb0: e22104 l32i a14, a1, 16 40005bb3: f851 l32i.n a15, a1, 20 40005bb5: 0811 l32i.n a0, a1, 4 40005bb7: 12c120 addi a1, a1, 32 40005bba: 0df0 ret.n sub_5bbc: 40005bbc: 12c1f0 addi a1, a1, -16 40005bbf: 0901 s32i.n a0, a1, 0 40005bc1: 0802 l32i.n a0, a2, 0 40005bc3: 414dfd l32r a4, [0x3fffe050] ; 0x400050f8 40005bc6: 9cf0 beqz.n a0, 0x40005be9 40005bc8: 262008 beqi a0, 2, 0x40005bd4 40005bcb: 0801 l32i.n a0, a1, 0 40005bcd: 12c110 addi a1, a1, 16 40005bd0: 0df0 ret.n 40005bd2: 0000 40005bd4: 4030a0 addx4 a3, a0, a4 40005bd7: 0803 l32i.n a0, a3, 0 40005bd9: 0b00 addi.n a0, a0, -1 40005bdb: 0903 s32i.n a0, a3, 0 40005bdd: 2812 l32i.n a2, a2, 4 40005bdf: c5e2ff call0 sub_5a0c ; 0x40005a0c 40005be2: 0801 l32i.n a0, a1, 0 40005be4: 12c110 addi a1, a1, 16 40005be7: 0df0 ret.n 40005be9: 4040a0 addx4 a4, a0, a4 40005bec: 3804 l32i.n a3, a4, 0 40005bee: 0b33 addi.n a3, a3, -1 40005bf0: 3904 s32i.n a3, a4, 0 40005bf2: 222201 l32i a2, a2, 4 40005bf5: 05ccff call0 sub_58b8 ; 0x400058b8 40005bf8: 0801 l32i.n a0, a1, 0 40005bfa: 12c110 addi a1, a1, 16 40005bfd: 0df0 ret.n 40005bff: 00 sub_5c00: 40005c00: 0c02 movi.n a2, 0 40005c02: 0c53 movi.n a3, 5 40005c04: 12c1f0 addi a1, a1, -16 40005c07: 0901 s32i.n a0, a1, 0 40005c09: 4557ff call0 sip_alloc_to_host_evt ; 0x40005180 40005c0c: 3d02 mov.n a3, a2 40005c0e: 85bfff call0 sip_send ; 0x40005808 40005c11: 0801 l32i.n a0, a1, 0 40005c13: 12c110 addi a1, a1, 16 40005c16: 0df0 ret.n 40005c18: 3fffe1d0 ; l32r slc_reattach: 40005c1c: 51ffff l32r a5, [0x3fffe1d0] ; 0x40005c18 40005c1f: 2955 s32i.n a2, a5, 20 40005c21: 3965 s32i.n a3, a5, 24 40005c23: 4985 s32i.n a4, a5, 32 40005c25: 0df0 ret.n 40005c27: 00 40005c28: 3fffe1e4 ; l32r 40005c2c: ffff0000 ; l32r 40005c30: 11116666 ; l32r 40005c34: 3fffe260 ; l32r 40005c38: 00000820 ; l32r 40005c3c: 10000000 ; l32r 40005c40: 00040000 ; l32r 40005c44: 02321007 ; l32r 40005c48: 02320007 ; l32r 40005c4c: 00002003 ; l32r slc_init_attach: 40005c50: 61f6ff l32r a6, [0x3fffe1e4] ; 0x40005c28 40005c53: 12c1e0 addi a1, a1, -32 40005c56: 0961 s32i.n a0, a1, 24 40005c58: c971 s32i.n a12, a1, 28 40005c5a: 0c30 movi.n a0, 3 40005c5c: c1bef8 l32r a12, [0x60000a00] ; 0x40003f54 40005c5f: 2906 s32i.n a2, a6, 0 40005c61: 3916 s32i.n a3, a6, 4 40005c63: 4936 s32i.n a4, a6, 12 40005c65: 16b50d beqz a5, 0x40005d44 40005c68: 0b75 addi.n a7, a5, -1 40005c6a: 16270e beqz a7, 0x40005d50 40005c6d: 21efff l32r a2, [0xffff0000] ; 0x40005c2c 40005c70: 82c5fe addi a8, a5, -2 40005c73: 16580e beqz a8, 0x40005d5c 40005c76: 92c5fd addi a9, a5, -3 40005c79: 16390f beqz a9, 0x40005d70 40005c7c: a1edff l32r a10, [0x11116666] ; 0x40005c30 40005c7f: c02000 memw 40005c82: a90c s32i.n a10, a12, 0 40005c84: 053e00 call0 slc_set_host_io_max_window ; 0x40006068 40005c87: 21e4ff l32r a2, [0x3fffe1d0] ; 0x40005c18 40005c8a: c02000 memw 40005c8d: 0c3a movi.n a10, 3 40005c8f: a26c40 s32i a10, a12, 0x100 40005c92: c02000 memw 40005c95: 0c08 movi.n a8, 0 40005c97: 922c40 l32i a9, a12, 0x100 40005c9a: c02000 memw 40005c9d: 826c40 s32i a8, a12, 0x100 40005ca0: c02000 memw 40005ca3: 62a310 movi a6, 0x310 40005ca6: 722c40 l32i a7, a12, 0x100 40005ca9: c02000 memw 40005cac: 522c40 l32i a5, a12, 0x100 40005caf: 605520 or a5, a5, a6 40005cb2: c02000 memw 40005cb5: 0c17 movi.n a7, 1 40005cb7: 42c110 addi a4, a1, 16 40005cba: 32c114 addi a3, a1, 20 40005cbd: 526c40 s32i a5, a12, 0x100 40005cc0: 62a104 movi a6, 0x104 40005cc3: 51ddff l32r a5, [0x00000820] ; 0x40005c38 40005cc6: 625200 s16i a6, a2, 0 40005cc9: 22c230 addi a2, a2, 48 40005ccc: 3911 s32i.n a3, a1, 4 40005cce: 4901 s32i.n a4, a1, 0 40005cd0: 32a060 movi a3, 96 40005cd3: 41d8ff l32r a4, [0x3fffe260] ; 0x40005c34 40005cd6: 8526ff call0 lldesc_build_chain ; 0x40004f40 40005cd9: 3841 l32i.n a3, a1, 16 40005cdb: 01cfff l32r a0, [0x3fffe1d0] ; 0x40005c18 40005cde: 2851 l32i.n a2, a1, 20 40005ce0: 2930 s32i.n a2, a0, 12 40005ce2: 3910 s32i.n a3, a0, 4 40005ce4: b1d6ff l32r a11, [0x10000000] ; 0x40005c3c 40005ce7: c02000 memw 40005cea: b26c4a s32i a11, a12, 0x128 40005ced: c02000 memw 40005cf0: 422c4a l32i a4, a12, 0x128 40005cf3: d664ff bgez a4, 0x40005ced 40005cf6: 2d00 mov.n a2, a0 40005cf8: 7cf5 movi.n a5, -1 40005cfa: a1d8f2 l32r a10, [0x000fffff] ; 0x4000285c 40005cfd: b11bf9 l32r a11, [0x20000000] ; 0x4000416c 40005d00: a0a310 and a10, a3, a10 40005d03: b0aa20 or a10, a10, a11 40005d06: c02000 memw 40005d09: a26c4a s32i a10, a12, 0x128 40005d0c: c02000 memw 40005d0f: 81ccff l32r a8, [0x00040000] ; 0x40005c40 40005d12: 922c4a l32i a9, a12, 0x128 40005d15: c02000 memw 40005d18: 722c57 l32i a7, a12, 0x15c 40005d1b: 807720 or a7, a7, a8 40005d1e: c02000 memw 40005d21: 726c57 s32i a7, a12, 0x15c 40005d24: 61fef8 l32r a6, [0x00800000] ; 0x4000411c 40005d27: c02000 memw 40005d2a: 626c6d s32i a6, a12, 0x1b4 40005d2d: c02000 memw 40005d30: 526c6c s32i a5, a12, 0x1b0 40005d33: c02000 memw 40005d36: 526c44 s32i a5, a12, 0x110 40005d39: c871 l32i.n a12, a1, 28 40005d3b: 0861 l32i.n a0, a1, 24 40005d3d: 12c120 addi a1, a1, 32 40005d40: 0df0 ret.n 40005d42: 0000 40005d44: b1c0ff l32r a11, [0x02321007] ; 0x40005c44 40005d47: c02000 memw 40005d4a: b91c s32i.n a11, a12, 4 40005d4c: 06cbff j 0x40005c7c 40005d4f: 00 40005d50: 21beff l32r a2, [0x02320007] ; 0x40005c48 40005d53: c02000 memw 40005d56: 291c s32i.n a2, a12, 4 40005d58: 06c8ff j 0x40005c7c 40005d5b: 00 40005d5c: c02000 memw 40005d5f: 381c l32i.n a3, a12, 4 40005d61: 203310 and a3, a3, a2 40005d64: 003320 or a3, a3, a0 40005d67: c02000 memw 40005d6a: 391c s32i.n a3, a12, 4 40005d6c: 06c3ff j 0x40005c7c 40005d6f: 00 40005d70: c02000 memw 40005d73: 481c l32i.n a4, a12, 4 40005d75: 51b5ff l32r a5, [0x00002003] ; 0x40005c4c 40005d78: 204410 and a4, a4, a2 40005d7b: 504420 or a4, a4, a5 40005d7e: c02000 memw 40005d81: 491c s32i.n a4, a12, 4 40005d83: 46bdff j 0x40005c7c 40005d86: 0000 40005d88: 40005f50 ; l32r 40005d8c: 002a8400 ; l32r slc_enable: 40005d90: 0c12 movi.n a2, 1 40005d92: 31fdff l32r a3, [sub_5f50] ; [0x40005f50] 0x40005d88 40005d95: 0c04 movi.n a4, 0 40005d97: 12c1f0 addi a1, a1, -16 ; stack space 40005d9a: 0901 s32i.n a0, a1, 0 ; save return 40005d9c: 851efb call0 ets_isr_attach ; 0x40000f88 40005d9f: 01fbff l32r a0, [0x002a8400] ; 0x40005d8c 40005da2: 216cf8 l32r a2, [0x60000a00] ; 0x40003f54 40005da5: c02000 memw 40005da8: 026243 s32i a0, a2, 0x10c 40005dab: 0c22 movi.n a2, 2 40005dad: 851ffb call0 ets_isr_unmask ; 0x40000fa8 40005db0: 0801 l32i.n a0, a1, 0 ; restore return 40005db2: 12c110 addi a1, a1, 16 ; restore stack 40005db5: 0df0 ret.n 40005db7: 00 slc_select_tohost_gpio_mode: 40005db8: 3198ff l32r a3, [0x3fffe1d0] ; 0x40005c18 40005dbb: 29a3 s32i.n a2, a3, 40 40005dbd: 0df0 ret.n 40005dbf: 00 slc_select_tohost_gpio: 40005dc0: f6b210 bgeui a2, 16, 0x40005dd4 40005dc3: 4195ff l32r a4, [0x3fffe1d0] ; 0x40005c18 40005dc6: 001240 ssl a2 40005dc9: 0c13 movi.n a3, 1 40005dcb: 0033a1 sll a3, a3 40005dce: 325416 s16i a3, a4, 44 40005dd1: 0df0 ret.n 40005dd3: 00 40005dd4: 5191ff l32r a5, [0x3fffe1d0] ; 0x40005c18 40005dd7: 0c04 movi.n a4, 0 40005dd9: 425516 s16i a4, a5, 44 40005ddc: 0df0 ret.n 40005dde: 0000 40005de0: 00010000 ; l32r slc_send_to_host_chain: 40005de4: 615cf8 l32r a6, [0x60000a00] ; 0x40003f54 40005de7: 419df2 l32r a4, [0x000fffff] ; 0x4000285c 40005dea: 718bff l32r a7, [0x3fffe1d0] ; 0x40005c18 40005ded: 12c1f0 addi a1, a1, -16 40005df0: 0901 s32i.n a0, a1, 0 40005df2: 2927 s32i.n a2, a7, 8 40005df4: 3947 s32i.n a3, a7, 16 40005df6: 51ddf8 l32r a5, [0x20000000] ; 0x4000416c 40005df9: 404210 and a4, a2, a4 40005dfc: 504420 or a4, a4, a5 40005dff: c02000 memw 40005e02: 08a7 l32i.n a0, a7, 40 40005e04: 426649 s32i a4, a6, 0x124 40005e07: 8cd0 beqz.n a0, 0x40005e18 40005e09: 216eec l32r a2, [0x60000200] ; 0x40000fc4 40005e0c: 261050 beqi a0, 1, 0x40005e60 40005e0f: 31f4ff l32r a3, [0x00010000] ; 0x40005de0 40005e12: 26202a beqi a0, 2, 0x40005e40 40005e15: 263007 beqi a0, 3, 0x40005e20 40005e18: 0801 l32i.n a0, a1, 0 40005e1a: 12c110 addi a1, a1, 16 40005e1d: 0df0 ret.n 40005e1f: 00 40005e20: c02000 memw 40005e23: 822643 l32i a8, a6, 0x10c 40005e26: 308820 or a8, a8, a3 40005e29: c02000 memw 40005e2c: 826643 s32i a8, a6, 0x10c 40005e2f: 521716 l16ui a5, a7, 44 40005e32: c02000 memw 40005e35: 526242 s32i a5, a2, 0x108 40005e38: 0801 l32i.n a0, a1, 0 40005e3a: 12c110 addi a1, a1, 16 40005e3d: 0df0 ret.n 40005e3f: 00 40005e40: c02000 memw 40005e43: a22643 l32i a10, a6, 0x10c 40005e46: 30aa20 or a10, a10, a3 40005e49: c02000 memw 40005e4c: a26643 s32i a10, a6, 0x10c 40005e4f: 921716 l16ui a9, a7, 44 40005e52: c02000 memw 40005e55: 926241 s32i a9, a2, 0x104 40005e58: 0801 l32i.n a0, a1, 0 40005e5a: 12c110 addi a1, a1, 16 40005e5d: 0df0 ret.n 40005e5f: 00 40005e60: c5e8fe call0 gpio_input_get ; 0x40004cf0 40005e63: 016dff l32r a0, [0x3fffe1d0] ; 0x40005c18 40005e66: 021016 l16ui a0, a0, 44 40005e69: 00b210 and a11, a2, a0 40005e6c: b0b0f4 extui a11, a11, 0, 16 40005e6f: 161b01 beqz a11, 0x40005e84 40005e72: c02000 memw 40005e75: 2153ec l32r a2, [0x60000200] ; 0x40000fc4 40005e78: 026242 s32i a0, a2, 0x108 40005e7b: 022100 l32i a0, a1, 0 40005e7e: 12c110 addi a1, a1, 16 40005e81: 800000 ret 40005e84: c02000 memw 40005e87: 314fec l32r a3, [0x60000200] ; 0x40000fc4 40005e8a: 026341 s32i a0, a3, 0x104 40005e8d: 0801 l32i.n a0, a1, 0 40005e8f: 12c110 addi a1, a1, 16 40005e92: 0df0 ret.n slc_from_host_chain_recycle: 40005e94: 12c1e0 addi a1, a1, -32 40005e97: 326101 s32i a3, a1, 4 40005e9a: 426106 s32i a4, a1, 24 40005e9d: d951 s32i.n a13, a1, 20 40005e9f: c941 s32i.n a12, a1, 16 40005ea1: 0931 s32i.n a0, a1, 12 40005ea3: cd02 mov.n a12, a2 40005ea5: 015cff l32r a0, [0x3fffe1d0] ; 0x40005c18 40005ea8: 0c0d movi.n a13, 0 40005eaa: 0830 l32i.n a0, a0, 12 40005eac: 0921 s32i.n a0, a1, 8 40005eae: 163004 beqz a0, 0x40005ef5 40005eb1: 050cfb call0 ets_intr_lock ; 0x40000f74 40005eb4: 3159ff l32r a3, [0x3fffe1d0] ; 0x40005c18 40005eb7: 4821 l32i.n a4, a1, 8 40005eb9: 2811 l32i.n a2, a1, 4 40005ebb: c924 s32i.n a12, a4, 8 40005ebd: 2933 s32i.n a2, a3, 12 40005ebf: 050cfb call0 ets_intr_unlock ; 0x40000f80 40005ec2: 0861 l32i.n a0, a1, 24 40005ec4: 9c9d beqz.n a13, 0x40005ee1 40005ec6: 5123f8 l32r a5, [0x60000a00] ; 0x40003f54 40005ec9: 6164f2 l32r a6, [0x000fffff] ; 0x4000285c 40005ecc: 71a8f8 l32r a7, [0x20000000] ; 0x4000416c 40005ecf: 606c10 and a6, a12, a6 40005ed2: 706620 or a6, a6, a7 40005ed5: c02000 memw 40005ed8: 62654a s32i a6, a5, 0x128 40005edb: c02000 memw 40005ede: 52254a l32i a5, a5, 0x128 40005ee1: 0020f4 extui a2, a0, 0, 16 40005ee4: 451c00 call0 slc_add_credits ; 0x400060ac 40005ee7: c22104 l32i a12, a1, 16 40005eea: d22105 l32i a13, a1, 20 40005eed: 022103 l32i a0, a1, 12 40005ef0: 12c120 addi a1, a1, 32 40005ef3: 0df0 ret.n 40005ef5: c507fb call0 ets_intr_lock ; 0x40000f74 40005ef8: 7148ff l32r a7, [0x3fffe1d0] ; 0x40005c18 40005efb: 822101 l32i a8, a1, 4 40005efe: 826703 s32i a8, a7, 12 40005f01: c917 s32i.n a12, a7, 4 40005f03: c507fb call0 ets_intr_unlock ; 0x40000f80 40005f06: 0861 l32i.n a0, a1, 24 40005f08: 0c1d movi.n a13, 1 40005f0a: 86edff j 0x40005ec4 40005f0d: 000000 slc_to_host_chain_recycle: 40005f10: 5142ff l32r a5, [0x3fffe1d0] ; 0x40005c18 40005f13: 5825 l32i.n a5, a5, 8 40005f15: 5902 s32i.n a5, a2, 0 40005f17: 410ff8 l32r a4, [0x60000a00] ; 0x40003f54 40005f1a: c02000 memw 40005f1d: 422452 l32i a4, a4, 0x148 40005f20: 4903 s32i.n a4, a3, 0 40005f22: 0df0 ret.n slc_from_host_chain_fetch: 40005f24: 613dff l32r a6, [0x3fffe1d0] ; 0x40005c18 40005f27: 7816 l32i.n a7, a6, 4 40005f29: 7902 s32i.n a7, a2, 0 40005f2b: 510af8 l32r a5, [0x60000a00] ; 0x40003f54 40005f2e: c02000 memw 40005f31: 522553 l32i a5, a5, 0x14c 40005f34: 5903 s32i.n a5, a3, 0 40005f36: 5825 l32i.n a5, a5, 8 40005f38: 5916 s32i.n a5, a6, 4 40005f3a: 4803 l32i.n a4, a3, 0 40005f3c: 0c02 movi.n a2, 0 40005f3e: 2924 s32i.n a2, a4, 8 40005f40: 0df0 ret.n 40005f42: 0000 40005f44: fffeffff ; l32r 40005f48: 00280000 ; l32r 40005f4c: 00008000 ; l32r sub_5f50: 40005f50: 41fdff l32r a4, [0xfffeffff] ; 0x40005f44 40005f53: 12c1e0 addi a1, a1, -32 40005f56: c911 s32i.n a12, a1, 4 40005f58: f941 s32i.n a15, a1, 16 40005f5a: d921 s32i.n a13, a1, 8 40005f5c: e931 s32i.n a14, a1, 12 40005f5e: 026100 s32i a0, a1, 0 40005f61: e1f9ff l32r a14, [0x00280000] ; 0x40005f48 40005f64: 019fff l32r a0, [0x00010000] ; 0x40005de0 40005f67: d1fbf7 l32r a13, [0x60000a00] ; 0x40003f54 40005f6a: f12bff l32r a15, [0x3fffe1d0] ; 0x40005c18 40005f6d: c02000 memw 40005f70: c22d42 l32i a12, a13, 0x108 40005f73: 16bc06 beqz a12, 0x40005fe2 40005f76: 177c1d bbci a12, 17, 0x40005f97 40005f79: c02000 memw 40005f7c: 31baf9 l32r a3, [0x00020000] ; 0x40004664 40005f7f: 326d44 s32i a3, a13, 0x110 40005f82: c02000 memw 40005f85: 222d44 l32i a2, a13, 0x110 40005f88: 022f05 l32i a0, a15, 20 40005f8b: 222f08 l32i a2, a15, 32 40005f8e: c00000 callx0 a0 40005f91: 0193ff l32r a0, [0x00010000] ; 0x40005de0 40005f94: 41ecff l32r a4, [0xfffeffff] ; 0x40005f44 40005f97: f76c1b bbci a12, 15, 0x40005fb6 40005f9a: c02000 memw 40005f9d: 31ebff l32r a3, [0x00008000] ; 0x40005f4c 40005fa0: 326d44 s32i a3, a13, 0x110 40005fa3: c02000 memw 40005fa6: 222d44 l32i a2, a13, 0x110 40005fa9: 086f l32i.n a0, a15, 24 40005fab: 288f l32i.n a2, a15, 32 40005fad: c00000 callx0 a0 40005fb0: 018cff l32r a0, [0x00010000] ; 0x40005de0 40005fb3: 41e4ff l32r a4, [0xfffeffff] ; 0x40005f44 40005fb6: 077c22 bbci a12, 16, 0x40005fdc 40005fb9: 38af l32i.n a3, a15, 40 40005fbb: 262332 beqi a3, 2, 0x40005ff1 40005fbe: 26333e beqi a3, 3, 0x40006000 40005fc1: c02000 memw 40005fc4: 622d43 l32i a6, a13, 0x10c 40005fc7: 406610 and a6, a6, a4 40005fca: c02000 memw 40005fcd: 626d43 s32i a6, a13, 0x10c 40005fd0: c02000 memw 40005fd3: 026d44 s32i a0, a13, 0x110 40005fd6: c02000 memw 40005fd9: 522d44 l32i a5, a13, 0x110 40005fdc: e78c02 bany a12, a14, 0x40005fe2 40005fdf: a76c8a bbci a12, 10, 0x40005f6d 40005fe2: c811 l32i.n a12, a1, 4 40005fe4: d821 l32i.n a13, a1, 8 40005fe6: e831 l32i.n a14, a1, 12 40005fe8: f841 l32i.n a15, a1, 16 40005fea: 0801 l32i.n a0, a1, 0 40005fec: 12c120 addi a1, a1, 32 40005fef: 0df0 ret.n 40005ff1: 721f16 l16ui a7, a15, 44 40005ff4: c02000 memw 40005ff7: 81f3eb l32r a8, [0x60000200] ; 0x40000fc4 40005ffa: 726842 s32i a7, a8, 0x108 40005ffd: 06f0ff j 0x40005fc1 40006000: 921f16 l16ui a9, a15, 44 40006003: c02000 memw 40006006: a1efeb l32r a10, [0x60000200] ; 0x40000fc4 40006009: 926a41 s32i a9, a10, 0x104 4000600c: 46ecff j 0x40005fc1 4000600f: 00 40006010: ffff7fff ; l32r slc_pause_from_host: 40006014: 6101ff l32r a6, [0x3fffe1d0] ; 0x40005c18 40006017: 0c05 movi.n a5, 0 40006019: 524624 s8i a5, a6, 36 4000601c: 41fdff l32r a4, [0xffff7fff] ; 0x40006010 4000601f: 21cdf7 l32r a2, [0x60000a00] ; 0x40003f54 40006022: c02000 memw 40006025: 322243 l32i a3, a2, 0x10c 40006028: 403310 and a3, a3, a4 4000602b: c02000 memw 4000602e: 326243 s32i a3, a2, 0x10c 40006031: c02000 memw 40006034: 222243 l32i a2, a2, 0x10c 40006037: 0df0 ret.n 40006039: 000000 slc_resume_from_host: 4000603c: 61f7fe l32r a6, [0x3fffe1d0] ; 0x40005c18 4000603f: 0c15 movi.n a5, 1 40006041: 524624 s8i a5, a6, 36 40006044: 41c2ff l32r a4, [0x00008000] ; 0x40005f4c 40006047: 21c3f7 l32r a2, [0x60000a00] ; 0x40003f54 4000604a: c02000 memw 4000604d: 322243 l32i a3, a2, 0x10c 40006050: 403320 or a3, a3, a4 40006053: c02000 memw 40006056: 326243 s32i a3, a2, 0x10c 40006059: c02000 memw 4000605c: 222243 l32i a2, a2, 0x10c 4000605f: 0df0 ret.n 40006061: 000000 40006064: fffff7c0 ; l32r slc_set_host_io_max_window: 40006068: 21bbf7 l32r a2, [0x60000a00] ; 0x40003f54 4000606b: c02000 memw 4000606e: 41fdff l32r a4, [0xfffff7c0] ; 0x40006064 40006071: 322251 l32i a3, a2, 0x144 40006074: 403310 and a3, a3, a4 40006077: 42a720 movi a4, 0x720 4000607a: 403320 or a3, a3, a4 4000607d: c02000 memw 40006080: 326251 s32i a3, a2, 0x144 40006083: c02000 memw 40006086: 222251 l32i a2, a2, 0x144 40006089: 0df0 ret.n 4000608b: 00 slc_init_credit: 4000608c: 12c1f0 addi a1, a1, -16 4000608f: 0901 s32i.n a0, a1, 0 40006091: 21b0f7 l32r a2, [0x60000a00] ; 0x40003f54 40006094: 0140ee l32r a0, [0x00001000] ; 0x40001994 40006097: c02000 memw 4000609a: 02624d s32i a0, a2, 0x134 4000609d: 0c82 movi.n a2, 8 4000609f: c50000 call0 slc_add_credits ; 0x400060ac 400060a2: 0801 l32i.n a0, a1, 0 400060a4: 12c110 addi a1, a1, 16 400060a7: 0df0 ret.n 400060a9: 000000 slc_add_credits: 400060ac: 412ef9 l32r a4, [0x00004000] ; 0x40004564 400060af: 2030b4 extui a3, a2, 0, 12 400060b2: 403320 or a3, a3, a4 400060b5: 41a7f7 l32r a4, [0x60000a00] ; 0x40003f54 400060b8: c02000 memw 400060bb: 32644d s32i a3, a4, 0x134 400060be: 0df0 ret.n rom_abs_temp: 400060c0: 204060 neg a4, a2 400060c3: 2042b3 movgez a4, a2, a2 400060c6: 2d04 mov.n a2, a4 400060c8: 0df0 ret.n 400060ca: 0000 400060cc: 60009a00 ; l32r rom_chip_v5_disable_cca: 400060d0: 41dbfe l32r a4, [0x10000000] ; 0x40005c3c 400060d3: 31feff l32r a3, [0x60009a00] ; 0x400060cc 400060d6: c02000 memw 400060d9: 222340 l32i a2, a3, 0x100 400060dc: 402220 or a2, a2, a4 400060df: c02000 memw 400060e2: 226340 s32i a2, a3, 0x100 400060e5: 0df0 ret.n 400060e7: 00 400060e8: efffffff ; l32r rom_chip_v5_enable_cca: 400060ec: 41ffff l32r a4, [0xefffffff] ; 0x400060e8 400060ef: 31f7ff l32r a3, [0x60009a00] ; 0x400060cc 400060f2: c02000 memw 400060f5: 222340 l32i a2, a3, 0x100 400060f8: 402210 and a2, a2, a4 400060fb: c02000 memw 400060fe: 226340 s32i a2, a3, 0x100 40006101: 0df0 ret.n 40006103: 00 40006104: 0001fc00 ; l32r 40006108: fffe03ff ; l32r rom_chip_v5_sense_backoff: 4000610c: 31ffff l32r a3, [0xfffe03ff] ; 0x40006108 4000610f: 71efff l32r a7, [0x60009a00] ; 0x400060cc 40006112: 805201 slli a5, a2, 24 40006115: 505831 srai a5, a5, 24 40006118: 77e205 bbsi a2, 7, 0x40006121 4000611b: 604211 slli a4, a2, 10 4000611e: 860000 j 0x40006124 40006121: 41f8ff l32r a4, [0x0001fc00] ; 0x40006104 40006124: c02000 memw 40006127: b2278a l32i a11, a7, 0x228 4000612a: 30bb10 and a11, a11, a3 4000612d: 40bb20 or a11, a11, a4 40006130: c02000 memw 40006133: b2678a s32i a11, a7, 0x228 40006136: a2a0fe movi a10, 254 40006139: f08211 slli a8, a2, 1 4000613c: 92af01 movi a9, -255 4000613f: 508aa3 movltz a8, a10, a5 40006142: c02000 memw 40006145: 6227c9 l32i a6, a7, 0x324 40006148: 906610 and a6, a6, a9 4000614b: 806620 or a6, a6, a8 4000614e: c02000 memw 40006151: 6267c9 s32i a6, a7, 0x324 40006154: 0df0 ret.n 40006156: 0000 40006158: 3fffc730 ; l32r rom_dc_iq_est: 4000615c: 12c1f0 addi a1, a1, -16 4000615f: d26102 s32i a13, a1, 8 40006162: 026100 s32i a0, a1, 0 40006165: 01fcff l32r a0, [0x3fffc730] ; 0x40006158 40006168: c911 s32i.n a12, a1, 4 4000616a: 0800 l32i.n a0, a0, 0 4000616c: cd04 mov.n a12, a4 4000616e: 02200d l32i a0, a0, 52 40006171: dd03 mov.n a13, a3 40006173: c00000 callx0 a0 40006176: 1bdd addi.n a13, a13, 1 40006178: 2193eb l32r a2, [0x60000200] ; 0x40000fc4 4000617b: c02000 memw 4000617e: 2222f7 l32i a2, a2, 0x3dc 40006181: 3d0d mov.n a3, a13 40006183: 202621 srai a2, a2, 6 40006186: 05b007 call0 __divsi3 ; 0x4000dc88 40006189: 290c s32i.n a2, a12, 0 4000618b: 3d0d mov.n a3, a13 4000618d: c02000 memw 40006190: 218deb l32r a2, [0x60000200] ; 0x40000fc4 40006193: 2222f8 l32i a2, a2, 0x3e0 40006196: 202621 srai a2, a2, 6 40006199: c5ae07 call0 __divsi3 ; 0x4000dc88 4000619c: 01efff l32r a0, [0x3fffc730] ; 0x40006158 4000619f: 0800 l32i.n a0, a0, 0 400061a1: 08c0 l32i.n a0, a0, 48 400061a3: 291c s32i.n a2, a12, 4 400061a5: c00000 callx0 a0 400061a8: c811 l32i.n a12, a1, 4 400061aa: d821 l32i.n a13, a1, 8 400061ac: 0801 l32i.n a0, a1, 0 400061ae: 12c110 addi a1, a1, 16 400061b1: 0df0 ret.n 400061b3: 00 400061b4: ff7fffff ; l32r rom_en_pwdet: 400061b8: 12c1f0 addi a1, a1, -16 400061bb: 0901 s32i.n a0, a1, 0 400061bd: 01e6ff l32r a0, [0x3fffc730] ; 0x40006158 400061c0: 0800 l32i.n a0, a0, 0 400061c2: c911 s32i.n a12, a1, 4 400061c4: 022013 l32i a0, a0, 76 400061c7: cd02 mov.n a12, a2 400061c9: c00000 callx0 a0 400061cc: 6104f1 l32r a6, [0xffdfffff] ; 0x400025dc 400061cf: 2161f7 l32r a2, [0x60000a00] ; 0x40003f54 400061d2: c02000 memw 400061d5: 5222d7 l32i a5, a2, 0x35c 400061d8: 605510 and a5, a5, a6 400061db: c02000 memw 400061de: 5262d7 s32i a5, a2, 0x35c 400061e1: 41f4ff l32r a4, [0xff7fffff] ; 0x400061b4 400061e4: c02000 memw 400061e7: 3222d7 l32i a3, a2, 0x35c 400061ea: 403310 and a3, a3, a4 400061ed: c02000 memw 400061f0: 3262d7 s32i a3, a2, 0x35c 400061f3: ac5c beqz.n a12, 0x4000621c 400061f5: 261c08 beqi a12, 1, 0x40006201 400061f8: c811 l32i.n a12, a1, 4 400061fa: 0801 l32i.n a0, a1, 0 400061fc: 12c110 addi a1, a1, 16 400061ff: 0df0 ret.n 40006201: 0c18 movi.n a8, 1 40006203: c02000 memw 40006206: 7222d4 l32i a7, a2, 0x350 40006209: 807720 or a7, a7, a8 4000620c: c02000 memw 4000620f: 7262d4 s32i a7, a2, 0x350 40006212: c811 l32i.n a12, a1, 4 40006214: 0801 l32i.n a0, a1, 0 40006216: 12c110 addi a1, a1, 16 40006219: 0df0 ret.n 4000621b: 00 4000621c: 7cea movi.n a10, -2 4000621e: c02000 memw 40006221: 9222d4 l32i a9, a2, 0x350 40006224: a09910 and a9, a9, a10 40006227: c02000 memw 4000622a: 9262d4 s32i a9, a2, 0x350 4000622d: c811 l32i.n a12, a1, 4 4000622f: 0801 l32i.n a0, a1, 0 40006231: 12c110 addi a1, a1, 16 40006234: 0df0 ret.n 40006236: 0000 rom_get_bb_atten: 40006238: 0c04 movi.n a4, 0 4000623a: 8b52 addi.n a5, a2, 8 4000623c: 3055e0 subx4 a5, a5, a3 4000623f: 005511 slli a5, a5, 16 40006242: 505031 srai a5, a5, 16 40006245: 5045b3 movgez a4, a5, a5 40006248: 004411 slli a4, a4, 16 4000624b: 402031 srai a2, a4, 16 4000624e: e6e207 bgei a2, 128, 0x40006259 40006251: 802201 slli a2, a2, 24 40006254: 202831 srai a2, a2, 24 40006257: 0df0 ret.n 40006259: 22a07f movi a2, 127 4000625c: 0df0 ret.n 4000625e: 0000 rom_get_corr_power: 40006260: 7159eb l32r a7, [0x60000200] ; 0x40000fc4 40006263: c02000 memw 40006266: 4227e0 l32i a4, a7, 0x380 40006269: 404231 srai a4, a4, 18 4000626c: c02000 memw 4000626f: 5227e1 l32i a5, a7, 0x384 40006272: 505231 srai a5, a5, 18 40006275: c02000 memw 40006278: a227e2 l32i a10, a7, 0x388 4000627b: a0a231 srai a10, a10, 18 4000627e: c02000 memw 40006281: b227e3 l32i a11, a7, 0x38c 40006284: 82c3fe addi a8, a3, -2 40006287: b0b231 srai a11, a11, 18 4000628a: c02000 memw 4000628d: 6227f7 l32i a6, a7, 0x3dc 40006290: 000840 ssr a8 40006293: 6060b1 sra a6, a6 40006296: c02000 memw 40006299: 9227f8 l32i a9, a7, 0x3e0 4000629c: 000840 ssr a8 4000629f: 9090b1 sra a9, a9 400062a2: c02000 memw 400062a5: 000840 ssr a8 400062a8: 7227f9 l32i a7, a7, 0x3e4 400062ab: 909982 mull a9, a9, a9 400062ae: 606682 mull a6, a6, a6 400062b1: ba44 add.n a4, a4, a11 400062b3: a055c0 sub a5, a5, a10 400062b6: 505582 mull a5, a5, a5 400062b9: 404482 mull a4, a4, a4 400062bc: 9a66 add.n a6, a6, a9 400062be: 7070b1 sra a7, a7 400062c1: 7902 s32i.n a7, a2, 0 400062c3: 5a44 add.n a4, a4, a5 400062c5: 606031 srai a6, a6, 16 400062c8: 6922 s32i.n a6, a2, 8 400062ca: 6ca5 movi.n a5, -22 400062cc: 505390 addx2 a5, a3, a5 400062cf: 000540 ssr a5 400062d2: 4040b1 sra a4, a4 400062d5: 4912 s32i.n a4, a2, 4 400062d7: 0df0 ret.n 400062d9: 000000 rom_get_fm_sar_dout: 400062dc: 12c1e0 addi a1, a1, -32 400062df: 0941 s32i.n a0, a1, 16 400062e1: c951 s32i.n a12, a1, 20 400062e3: 5d02 mov.n a5, a2 400062e5: 7cd6 movi.n a6, -3 400062e7: c11bf7 l32r a12, [0x60000a00] ; 0x40003f54 400062ea: c02000 memw 400062ed: 422cd4 l32i a4, a12, 0x350 400062f0: 604410 and a4, a4, a6 400062f3: c02000 memw 400062f6: 426cd4 s32i a4, a12, 0x350 400062f9: 0c22 movi.n a2, 2 400062fb: c02000 memw 400062fe: 022cd4 l32i a0, a12, 0x350 40006301: 200020 or a0, a0, a2 40006304: c02000 memw 40006307: 1c92 movi.n a2, 25 40006309: 5961 s32i.n a5, a1, 24 4000630b: 3971 s32i.n a3, a1, 28 4000630d: 026cd4 s32i a0, a12, 0x350 40006310: 85bbfc call0 ets_delay_us ; 0x40002ecc 40006313: 0871 l32i.n a0, a1, 28 40006315: 2861 l32i.n a2, a1, 24 40006317: 0c03 movi.n a3, 0 40006319: 106120 or a6, a1, a1 4000631c: c043a0 addx4 a4, a3, a12 4000631f: 605390 addx2 a5, a3, a6 40006322: c02000 memw 40006325: 4224e0 l32i a4, a4, 0x380 40006328: 1b33 addi.n a3, a3, 1 4000632a: 4040b4 extui a4, a4, 0, 12 4000632d: 404060 neg a4, a4 40006330: 42d408 addmi a4, a4, 0x800 40006333: 425500 s16i a4, a5, 0 40006336: 303074 extui a3, a3, 0, 8 40006339: c073a0 addx4 a7, a3, a12 4000633c: 608390 addx2 a8, a3, a6 4000633f: c02000 memw 40006342: 7227e0 l32i a7, a7, 0x380 40006345: 1b33 addi.n a3, a3, 1 40006347: 303074 extui a3, a3, 0, 8 4000634a: 7070b4 extui a7, a7, 0, 12 4000634d: 707060 neg a7, a7 40006350: 72d708 addmi a7, a7, 0x800 40006353: 725800 s16i a7, a8, 0 40006356: 6683c2 bnei a3, 8, 0x4000631c 40006359: c851 l32i.n a12, a1, 20 4000635b: 521104 l16ui a5, a1, 8 4000635e: 821103 l16ui a8, a1, 6 40006361: 721107 l16ui a7, a1, 14 40006364: a21102 l16ui a10, a1, 4 40006367: 921101 l16ui a9, a1, 2 4000636a: 621106 l16ui a6, a1, 12 4000636d: aa99 add.n a9, a9, a10 4000636f: 7a66 add.n a6, a6, a7 40006371: 606690 addx2 a6, a6, a6 40006374: 721105 l16ui a7, a1, 10 40006377: 9a88 add.n a8, a8, a9 40006379: 7a55 add.n a5, a5, a7 4000637b: 6088d0 subx2 a8, a8, a6 4000637e: 825200 s16i a8, a2, 0 40006381: 505590 addx2 a5, a5, a5 40006384: 6055c0 sub a5, a5, a6 40006387: 525000 s16i a5, a0, 0 4000638a: 0841 l32i.n a0, a1, 16 4000638c: 12c120 addi a1, a1, 32 4000638f: 0df0 ret.n 40006391: 000000 rom_get_noisefloor: 40006394: 214eff l32r a2, [0x60009a00] ; 0x400060cc 40006397: c02000 memw 4000639a: 222259 l32i a2, a2, 0x164 4000639d: 2024b5 extui a2, a2, 20, 12 400063a0: 202341 srli a2, a2, 3 400063a3: 22d2fe addmi a2, a2, 0xfffffe00 400063a6: 002211 slli a2, a2, 16 400063a9: 202031 srai a2, a2, 16 400063ac: 0df0 ret.n 400063ae: 0000 rom_get_power_db: 400063b0: 12c1f0 addi a1, a1, -16 400063b3: 0931 s32i.n a0, a1, 12 400063b5: 0168ff l32r a0, [0x3fffc730] ; 0x40006158 400063b8: 2b31 addi.n a3, a1, 2 400063ba: 0800 l32i.n a0, a0, 0 400063bc: 2911 s32i.n a2, a1, 4 400063be: 0890 l32i.n a0, a0, 36 400063c0: 2d01 mov.n a2, a1 400063c2: c00000 callx0 a0 400063c5: 0164ff l32r a0, [0x3fffc730] ; 0x40006158 400063c8: 0800 l32i.n a0, a0, 0 400063ca: 229100 l16si a2, a1, 0 400063cd: 08e0 l32i.n a0, a0, 56 400063cf: 0c33 movi.n a3, 3 400063d1: c00000 callx0 a0 400063d4: 0161ff l32r a0, [0x3fffc730] ; 0x40006158 400063d7: 0c33 movi.n a3, 3 400063d9: 0800 l32i.n a0, a0, 0 400063db: 2921 s32i.n a2, a1, 8 400063dd: 08e0 l32i.n a0, a0, 56 400063df: 229101 l16si a2, a1, 2 400063e2: c00000 callx0 a0 400063e5: 3821 l32i.n a3, a1, 8 400063e7: 0831 l32i.n a0, a1, 12 400063e9: 2033c0 sub a3, a3, a2 400063ec: 2811 l32i.n a2, a1, 4 400063ee: 12c110 addi a1, a1, 16 400063f1: 3a22 add.n a2, a2, a3 400063f3: 002211 slli a2, a2, 16 400063f6: 202031 srai a2, a2, 16 400063f9: 0df0 ret.n 400063fb: 00 400063fc: fffa0001 ; l32r rom_iq_est_disable: 40006400: 71ffff l32r a7, [0xfffa0001] ; 0x400063fc 40006403: 6164ed l32r a6, [0x00001000] ; 0x40001994 40006406: 31efea l32r a3, [0x60000200] ; 0x40000fc4 40006409: c02000 memw 4000640c: 5223df l32i a5, a3, 0x37c 4000640f: 705510 and a5, a5, a7 40006412: 605520 or a5, a5, a6 40006415: c02000 memw 40006418: 5263df s32i a5, a3, 0x37c 4000641b: 7ce4 movi.n a4, -2 4000641d: c02000 memw 40006420: 2223df l32i a2, a3, 0x37c 40006423: 402210 and a2, a2, a4 40006426: c02000 memw 40006429: 2263df s32i a2, a3, 0x37c 4000642c: 0df0 ret.n 4000642e: 0000 rom_iq_est_enable: 40006430: 0c19 movi.n a9, 1 40006432: 51e4ea l32r a5, [0x60000200] ; 0x40000fc4 40006435: c02000 memw 40006438: 8225df l32i a8, a5, 0x37c 4000643b: 908820 or a8, a8, a9 4000643e: c02000 memw 40006441: 8265df s32i a8, a5, 0x37c 40006444: 3070e4 extui a7, a3, 0, 15 40006447: 82a002 movi a8, 2 4000644a: e07711 slli a7, a7, 2 4000644d: 91ebff l32r a9, [0xfffa0001] ; 0x400063fc 40006450: 807720 or a7, a7, a8 40006453: e08201 slli a8, a2, 18 40006456: c02000 memw 40006459: 6225df l32i a6, a5, 0x37c 4000645c: 906610 and a6, a6, a9 4000645f: 806620 or a6, a6, a8 40006462: 706620 or a6, a6, a7 40006465: c02000 memw 40006468: 6265df s32i a6, a5, 0x37c 4000646b: c02000 memw 4000646e: 4225df l32i a4, a5, 0x37c 40006471: 968400 bltz a4, 0x4000647d 40006474: c02000 memw 40006477: a225df l32i a10, a5, 0x37c 4000647a: d66aff bgez a10, 0x40006474 4000647d: 0df0 ret.n 4000647f: 00 40006480: 3fffcbd0 ; l32r rom_linear_to_db: 40006484: 42a010 movi a4, 16 40006487: 12c1e0 addi a1, a1, -32 4000648a: 026105 s32i a0, a1, 20 4000648d: c26106 s32i a12, a1, 24 40006490: 2941 s32i.n a2, a1, 16 40006492: cd03 mov.n a12, a3 40006494: 2d01 mov.n a2, a1 40006496: 31faff l32r a3, [0x3fffcbd0] ; 0x40006480 40006499: c5aa07 call0 memcpy ; 0x4000df48 4000649c: 1cc3 movi.n a3, 28 4000649e: f63c0f bgeui a12, 3, 0x400064b1 400064a1: 0841 l32i.n a0, a1, 16 400064a3: 0c32 movi.n a2, 3 400064a5: c022c0 sub a2, a2, a12 400064a8: 001240 ssl a2 400064ab: 0000a1 sll a0, a0 400064ae: 860200 j 0x400064bc 400064b1: 0841 l32i.n a0, a1, 16 400064b3: 22ccfd addi a2, a12, -3 400064b6: 000240 ssr a2 400064b9: 0000b1 sra a0, a0 400064bc: 40f040 nsau a4, a0 400064bf: 4033c0 sub a3, a3, a4 400064c2: 803301 slli a3, a3, 24 400064c5: 303831 srai a3, a3, 24 400064c8: a61328 blti a3, 1, 0x400064f4 400064cb: c861 l32i.n a12, a1, 24 400064cd: b04311 slli a4, a3, 5 400064d0: 0b63 addi.n a6, a3, -1 400064d2: 000640 ssr a6 400064d5: 0050b1 sra a5, a0 400064d8: c03311 slli a3, a3, 4 400064db: 4a33 add.n a3, a3, a4 400064dd: 0851 l32i.n a0, a1, 20 400064df: 505034 extui a5, a5, 0, 4 400064e2: 1a55 add.n a5, a5, a1 400064e4: 220500 l8ui a2, a5, 0 400064e7: 12c120 addi a1, a1, 32 400064ea: 3a22 add.n a2, a2, a3 400064ec: 002211 slli a2, a2, 16 400064ef: 202031 srai a2, a2, 16 400064f2: 0df0 ret.n 400064f4: 002034 extui a2, a0, 0, 4 400064f7: c861 l32i.n a12, a1, 24 400064f9: 0851 l32i.n a0, a1, 20 400064fb: 1a22 add.n a2, a2, a1 400064fd: 220200 l8ui a2, a2, 0 40006500: 12c120 addi a1, a1, 32 40006503: 002211 slli a2, a2, 16 40006506: 202031 srai a2, a2, 16 40006509: 0df0 ret.n 4000650b: 00 rom_set_txclk_en: 4000650c: 0c03 movi.n a3, 0 4000650e: 1cc4 movi.n a4, 28 40006510: 0c65 movi.n a5, 6 40006512: 0c66 movi.n a6, 6 40006514: 12c1f0 addi a1, a1, -16 40006517: c911 s32i.n a12, a1, 4 40006519: 0901 s32i.n a0, a1, 0 4000651b: 010fff l32r a0, [0x3fffc730] ; 0x40006158 4000651e: cd02 mov.n a12, a2 40006520: 0800 l32i.n a0, a0, 0 40006522: 22a077 movi a2, 119 40006525: 022027 l32i a0, a0, 156 40006528: 7d0c mov.n a7, a12 4000652a: c00000 callx0 a0 4000652d: 7d0c mov.n a7, a12 4000652f: 22a07c movi a2, 124 40006532: 0c13 movi.n a3, 1 40006534: 0109ff l32r a0, [0x3fffc730] ; 0x40006158 40006537: 1c54 movi.n a4, 21 40006539: 0800 l32i.n a0, a0, 0 4000653b: 0c05 movi.n a5, 0 4000653d: 022027 l32i a0, a0, 156 40006540: 0c06 movi.n a6, 0 40006542: c00000 callx0 a0 40006545: c811 l32i.n a12, a1, 4 40006547: 0801 l32i.n a0, a1, 0 40006549: 12c110 addi a1, a1, 16 4000654c: 0df0 ret.n 4000654e: 0000 rom_set_rxclk_en: 40006550: 0c03 movi.n a3, 0 40006552: 1cc4 movi.n a4, 28 40006554: 0c55 movi.n a5, 5 40006556: 0c56 movi.n a6, 5 40006558: 12c1f0 addi a1, a1, -16 4000655b: c911 s32i.n a12, a1, 4 4000655d: 0901 s32i.n a0, a1, 0 4000655f: 01fefe l32r a0, [0x3fffc730] ; 0x40006158 40006562: cd02 mov.n a12, a2 40006564: 0800 l32i.n a0, a0, 0 40006566: 22a077 movi a2, 119 40006569: 022027 l32i a0, a0, 156 4000656c: 7d0c mov.n a7, a12 4000656e: c00000 callx0 a0 40006571: 7d0c mov.n a7, a12 40006573: 22a07c movi a2, 124 40006576: 0c13 movi.n a3, 1 40006578: 01f8fe l32r a0, [0x3fffc730] ; 0x40006158 4000657b: 1c54 movi.n a4, 21 4000657d: 0800 l32i.n a0, a0, 0 4000657f: 0c15 movi.n a5, 1 40006581: 022027 l32i a0, a0, 156 40006584: 0c16 movi.n a6, 1 40006586: c00000 callx0 a0 40006589: c811 l32i.n a12, a1, 4 4000658b: 0801 l32i.n a0, a1, 0 4000658d: 12c110 addi a1, a1, 16 40006590: 0df0 ret.n 40006592: 0000 40006594: 000009b4 ; l32r 40006598: 000009b3 ; l32r 4000659c: fffff699 ; l32r 400065a0: fffff630 ; l32r rom_mhz2ieee: 400065a4: 61fdff l32r a6, [0x000009b3] ; 0x40006598 400065a7: 71fdff l32r a7, [0xfffff699] ; 0x4000659c 400065aa: 12c1f0 addi a1, a1, -16 400065ad: 026100 s32i a0, a1, 0 400065b0: 01f9ff l32r a0, [0x000009b4] ; 0x40006594 400065b3: 77631d bbci a3, 7, 0x400065d4 400065b6: 07125e beq a2, a0, 0x40006618 400065b9: 273627 bltu a6, a2, 0x400065e4 400065bc: 702280 add a2, a2, a7 400065bf: 32a005 movi a3, 5 400065c2: 456c07 call0 __divsi3 ; 0x4000dc88 400065c5: 0801 l32i.n a0, a1, 0 400065c7: 802201 slli a2, a2, 24 400065ca: 202831 srai a2, a2, 24 400065cd: 12c110 addi a1, a1, 16 400065d0: 0df0 ret.n 400065d2: 0000 400065d4: 071240 beq a2, a0, 0x40006618 400065d7: 27b625 bgeu a6, a2, 0x40006600 400065da: 7cf2 movi.n a2, -1 400065dc: 0801 l32i.n a0, a1, 0 400065de: 12c110 addi a1, a1, 16 400065e1: 0df0 ret.n 400065e3: 00 400065e4: 41efff l32r a4, [0xfffff630] ; 0x400065a0 400065e7: 32a014 movi a3, 20 400065ea: 402280 add a2, a2, a4 400065ed: 856907 call0 __divsi3 ; 0x4000dc88 400065f0: 022100 l32i a0, a1, 0 400065f3: fb22 addi.n a2, a2, 15 400065f5: 12c110 addi a1, a1, 16 400065f8: 802201 slli a2, a2, 24 400065fb: 202831 srai a2, a2, 24 400065fe: 0df0 ret.n 40006600: 702280 add a2, a2, a7 40006603: 32a005 movi a3, 5 40006606: 056807 call0 __divsi3 ; 0x4000dc88 40006609: 022100 l32i a0, a1, 0 4000660c: 802201 slli a2, a2, 24 4000660f: 202831 srai a2, a2, 24 40006612: 12c110 addi a1, a1, 16 40006615: 0df0 ret.n 40006617: 00 40006618: 0ce2 movi.n a2, 14 4000661a: 0801 l32i.n a0, a1, 0 4000661c: 12c110 addi a1, a1, 16 4000661f: 0df0 ret.n 40006621: 000000 40006624: 3fffd8fc ; l32r rom_rxiq_get_mis: 40006628: 12c1d0 addi a1, a1, -48 4000662b: c911 s32i.n a12, a1, 4 4000662d: d921 s32i.n a13, a1, 8 4000662f: e931 s32i.n a14, a1, 12 40006631: f941 s32i.n a15, a1, 16 40006633: 5951 s32i.n a5, a1, 20 40006635: 7971 s32i.n a7, a1, 28 40006637: 0901 s32i.n a0, a1, 0 40006639: 6961 s32i.n a6, a1, 24 4000663b: 62c2fe addi a6, a2, -2 4000663e: 0161ea l32r a0, [0x60000200] ; 0x40000fc4 40006641: c02000 memw 40006644: 7220e0 l32i a7, a0, 0x380 40006647: 000640 ssr a6 4000664a: 7070b1 sra a7, a7 4000664d: c02000 memw 40006650: 8220e3 l32i a8, a0, 0x38c 40006653: 000640 ssr a6 40006656: 8080b1 sra a8, a8 40006659: 80f7c0 sub a15, a7, a8 4000665c: c02000 memw 4000665f: 5220e2 l32i a5, a0, 0x388 40006662: 000640 ssr a6 40006665: 5050b1 sra a5, a5 40006668: c02000 memw 4000666b: 0c09 movi.n a9, 0 4000666d: 0220e1 l32i a0, a0, 0x384 40006670: 000640 ssr a6 40006673: 8a27 add.n a2, a7, a8 40006675: dd02 mov.n a13, a2 40006677: 0c08 movi.n a8, 0 40006679: 7861 l32i.n a7, a1, 24 4000667b: 6851 l32i.n a6, a1, 20 4000667d: 0000b1 sra a0, a0 40006680: 0ae5 add.n a14, a5, a0 40006682: 706630 xor a6, a6, a7 40006685: 5000c0 sub a0, a0, a5 40006688: cd00 mov.n a12, a0 4000668a: 405330 xor a5, a3, a4 4000668d: 605530 xor a5, a5, a6 40006690: 505074 extui a5, a5, 0, 8 40006693: 8c65 beqz.n a5, 0x4000669d 40006695: cd0e mov.n a12, a14 40006697: dd0f mov.n a13, a15 40006699: ed00 mov.n a14, a0 4000669b: fd02 mov.n a15, a2 4000669d: 0c10 movi.n a0, 1 4000669f: c0bc82 mull a11, a12, a12 400066a2: d0ad82 mull a10, a13, a13 400066a5: baaa add.n a10, a10, a11 400066a7: a991 s32i.n a10, a1, 36 400066a9: a09083 moveqz a9, a0, a10 400066ac: a0af31 srai a10, a10, 31 400066af: a981 s32i.n a10, a1, 32 400066b1: a08083 moveqz a8, a0, a10 400066b4: 970805 bnone a8, a9, 0x400066bd 400066b7: 0991 s32i.n a0, a1, 36 400066b9: 0c02 movi.n a2, 0 400066bb: 2981 s32i.n a2, a1, 32 400066bd: 522108 l32i a5, a1, 32 400066c0: c04e82 mull a4, a14, a12 400066c3: d03f82 mull a3, a15, a13 400066c6: 4033c0 sub a3, a3, a4 400066c9: 802311 slli a2, a3, 8 400066cc: 4891 l32i.n a4, a1, 36 400066ce: 303831 srai a3, a3, 24 400066d1: c57806 call0 __divdi3 ; 0x4000ce60 400066d4: 5871 l32i.n a5, a1, 28 400066d6: 7861 l32i.n a7, a1, 24 400066d8: d04e82 mull a4, a14, a13 400066db: c03f82 mull a3, a15, a12 400066de: 806201 slli a6, a2, 24 400066e1: 606831 srai a6, a6, 24 400066e4: cd02 mov.n a12, a2 400066e6: 4a33 add.n a3, a3, a4 400066e8: 204060 neg a4, a2 400066eb: 802311 slli a2, a3, 8 400066ee: 704683 moveqz a4, a6, a7 400066f1: 424500 s8i a4, a5, 0 400066f4: 303831 srai a3, a3, 24 400066f7: 5881 l32i.n a5, a1, 32 400066f9: 422109 l32i a4, a1, 36 400066fc: 057606 call0 __divdi3 ; 0x4000ce60 400066ff: 8851 l32i.n a8, a1, 20 40006701: 807201 slli a7, a2, 24 40006704: 206060 neg a6, a2 40006707: 707831 srai a7, a7, 24 4000670a: 806783 moveqz a6, a7, a8 4000670d: 8871 l32i.n a8, a1, 28 4000670f: 520130 l8ui a5, a1, 48 40006712: 624801 s8i a6, a8, 1 40006715: 8cf5 beqz.n a5, 0x40006728 40006717: 5881 l32i.n a5, a1, 32 40006719: 422109 l32i a4, a1, 36 ; format follows: "rxiq_get_mis: s_pwr=%lld, %d-%d, " 4000671c: 21c2ff l32r a2, [0x3fffd8fc] ; 0x40006624 4000671f: 806c01 slli a6, a12, 24 40006722: 606831 srai a6, a6, 24 40006725: c55efb call0 eprintf ; 0x40001d14 40006728: c811 l32i.n a12, a1, 4 4000672a: d821 l32i.n a13, a1, 8 4000672c: e831 l32i.n a14, a1, 12 4000672e: f841 l32i.n a15, a1, 16 40006730: 0801 l32i.n a0, a1, 0 40006732: 12c130 addi a1, a1, 48 40006735: 0df0 ret.n 40006737: 00 rom_sar_init: 40006738: 12c1f0 addi a1, a1, -16 4000673b: 0901 s32i.n a0, a1, 0 4000673d: 418cf6 l32r a4, [0x02000000] ; 0x40004170 40006740: 3187ea l32r a3, [0x60000600] ; 0x4000115c 40006743: 0185fe l32r a0, [0x3fffc730] ; 0x40006158 40006746: c02000 memw 40006749: 222344 l32i a2, a3, 0x110 4000674c: 402220 or a2, a2, a4 4000674f: c02000 memw 40006752: 0c04 movi.n a4, 0 40006754: 0c45 movi.n a5, 4 40006756: 0c46 movi.n a6, 4 40006758: 0c17 movi.n a7, 1 4000675a: 022000 l32i a0, a0, 0 4000675d: 226344 s32i a2, a3, 0x110 40006760: 22a06c movi a2, 108 40006763: 022027 l32i a0, a0, 156 40006766: 32a002 movi a3, 2 40006769: c00000 callx0 a0 4000676c: 22a06c movi a2, 108 4000676f: 0c23 movi.n a3, 2 40006771: 0c14 movi.n a4, 1 40006773: 0179fe l32r a0, [0x3fffc730] ; 0x40006158 40006776: 0c15 movi.n a5, 1 40006778: 0800 l32i.n a0, a0, 0 4000677a: 0c06 movi.n a6, 0 4000677c: 022027 l32i a0, a0, 156 4000677f: 0c27 movi.n a7, 2 40006781: c00000 callx0 a0 40006784: 0801 l32i.n a0, a1, 0 40006786: 12c110 addi a1, a1, 16 40006789: 0df0 ret.n 4000678b: 00 rom_set_ana_inf_tx_scale: 4000678c: 12c1f0 addi a1, a1, -16 4000678f: 0901 s32i.n a0, a1, 0 40006791: b6d20b bltui a2, 64, 0x400067a0 40006794: 3cf9 movi.n a9, 63 40006796: 2079c0 sub a7, a9, a2 40006799: 707074 extui a7, a7, 0, 8 4000679c: 060100 j 0x400067a4 4000679f: 00 400067a0: 0c07 movi.n a7, 0 400067a2: 9d02 mov.n a9, a2 400067a4: 22a077 movi a2, 119 400067a7: 0c03 movi.n a3, 0 400067a9: 0c94 movi.n a4, 9 400067ab: 016bfe l32r a0, [0x3fffc730] ; 0x40006158 400067ae: 0c75 movi.n a5, 7 400067b0: 0800 l32i.n a0, a0, 0 400067b2: 0c06 movi.n a6, 0 400067b4: 022027 l32i a0, a0, 156 400067b7: 9911 s32i.n a9, a1, 4 400067b9: c00000 callx0 a0 400067bc: 3801 l32i.n a3, a1, 0 400067be: 2811 l32i.n a2, a1, 4 400067c0: 0d03 mov.n a0, a3 400067c2: 12c110 addi a1, a1, 16 400067c5: 0df0 ret.n 400067c7: 00 rom_set_loopback_gain: 400067c8: 12c1e0 addi a1, a1, -32 400067cb: 5931 s32i.n a5, a1, 12 400067cd: 4921 s32i.n a4, a1, 8 400067cf: 3911 s32i.n a3, a1, 4 400067d1: 0941 s32i.n a0, a1, 16 400067d3: 2901 s32i.n a2, a1, 0 400067d5: c951 s32i.n a12, a1, 20 400067d7: c160fe l32r a12, [0x3fffc730] ; 0x40006158 400067da: 0c22 movi.n a2, 2 400067dc: 080c l32i.n a0, a12, 0 400067de: 32a001 movi a3, 1 400067e1: 02202b l32i a0, a0, 172 400067e4: 42a185 movi a4, 0x185 400067e7: c00000 callx0 a0 400067ea: 4801 l32i.n a4, a1, 0 400067ec: 080c l32i.n a0, a12, 0 400067ee: 0c72 movi.n a2, 7 400067f0: 02202b l32i a0, a0, 172 400067f3: 0c13 movi.n a3, 1 400067f5: c00000 callx0 a0 400067f8: 4811 l32i.n a4, a1, 4 400067fa: 080c l32i.n a0, a12, 0 400067fc: 0c22 movi.n a2, 2 400067fe: 02202b l32i a0, a0, 172 40006801: 0c13 movi.n a3, 1 40006803: c00000 callx0 a0 40006806: 4821 l32i.n a4, a1, 8 40006808: 080c l32i.n a0, a12, 0 4000680a: 0c32 movi.n a2, 3 4000680c: 02202b l32i a0, a0, 172 4000680f: 0c13 movi.n a3, 1 40006811: c00000 callx0 a0 40006814: 4831 l32i.n a4, a1, 12 40006816: 080c l32i.n a0, a12, 0 40006818: 0c32 movi.n a2, 3 4000681a: 02202b l32i a0, a0, 172 4000681d: 0c23 movi.n a3, 2 4000681f: c00000 callx0 a0 40006822: c851 l32i.n a12, a1, 20 40006824: 0841 l32i.n a0, a1, 16 40006826: 12c120 addi a1, a1, 32 40006829: 0df0 ret.n 4000682b: 00 4000682c: fffd7ffd ; l32r rom_set_noise_floor: 40006830: 92ae00 movi a9, 0xfffffe00 40006833: f08211 slli a8, a2, 1 40006836: 4125fe l32r a4, [0x60009a00] ; 0x400060cc 40006839: 82d802 addmi a8, a8, 0x200 4000683c: 808084 extui a8, a8, 0, 9 4000683f: c02000 memw 40006842: 722459 l32i a7, a4, 0x164 40006845: 907710 and a7, a7, a9 40006848: 807720 or a7, a7, a8 4000684b: c02000 memw 4000684e: 726459 s32i a7, a4, 0x164 40006851: 61f6ff l32r a6, [0xfffd7ffd] ; 0x4000682c 40006854: 0c25 movi.n a5, 2 40006856: c02000 memw 40006859: 322458 l32i a3, a4, 0x160 4000685c: 603310 and a3, a3, a6 4000685f: 503320 or a3, a3, a5 40006862: c02000 memw 40006865: 326458 s32i a3, a4, 0x160 40006868: 0df0 ret.n 4000686a: 0000 4000686c: fffff000 ; l32r 40006870: 00028002 ; l32r rom_start_noisefloor: 40006874: 91feff l32r a9, [0xfffff000] ; 0x4000686c 40006877: 72a1a0 movi a7, 0x1a0 4000687a: 208024 extui a8, a2, 0, 3 4000687d: 4113fe l32r a4, [0x60009a00] ; 0x400060cc 40006880: 708811 slli a8, a8, 9 40006883: c02000 memw 40006886: 622459 l32i a6, a4, 0x164 40006889: 906610 and a6, a6, a9 4000688c: 806620 or a6, a6, a8 4000688f: 706620 or a6, a6, a7 40006892: c02000 memw 40006895: 626459 s32i a6, a4, 0x164 40006898: 51f6ff l32r a5, [0x00028002] ; 0x40006870 4000689b: c02000 memw 4000689e: 322458 l32i a3, a4, 0x160 400068a1: 503320 or a3, a3, a5 400068a4: c02000 memw 400068a7: 326458 s32i a3, a4, 0x160 400068aa: 0df0 ret.n 400068ac: f0000000 ; l32r 400068b0: e0000000 ; l32r rom_start_tx_tone: 400068b4: 12c1e0 addi a1, a1, -32 400068b7: 3901 s32i.n a3, a1, 0 400068b9: 4911 s32i.n a4, a1, 4 400068bb: 6921 s32i.n a6, a1, 8 400068bd: 7931 s32i.n a7, a1, 12 400068bf: d961 s32i.n a13, a1, 24 400068c1: c951 s32i.n a12, a1, 20 400068c3: 0941 s32i.n a0, a1, 16 400068c5: 0124fe l32r a0, [0x3fffc730] ; 0x40006158 400068c8: cd05 mov.n a12, a5 400068ca: 0800 l32i.n a0, a0, 0 400068cc: dd02 mov.n a13, a2 400068ce: 08f0 l32i.n a0, a0, 60 400068d0: 0c12 movi.n a2, 1 400068d2: c00000 callx0 a0 400068d5: 0c0b movi.n a11, 0 400068d7: 52a100 movi a5, 0x100 400068da: 01bae9 l32r a0, [0x60000200] ; 0x40000fc4 400068dd: 21f3ff l32r a2, [0xf0000000] ; 0x400068ac 400068e0: ac6d beqz.n a13, 0x4000690a 400068e2: 6811 l32i.n a6, a1, 4 400068e4: 4801 l32i.n a4, a1, 0 400068e6: 6065c0 sub a6, a5, a6 400068e9: 606074 extui a6, a6, 0, 8 400068ec: 606611 slli a6, a6, 10 400068ef: 604420 or a4, a4, a6 400068f2: e06d01 slli a6, a13, 18 400068f5: c02000 memw 400068f8: 3220ee l32i a3, a0, 0x3b8 400068fb: 203310 and a3, a3, a2 400068fe: 603320 or a3, a3, a6 40006901: 403320 or a3, a3, a4 40006904: c02000 memw 40006907: 3260ee s32i a3, a0, 0x3b8 4000690a: acac beqz.n a12, 0x40006938 4000690c: 9831 l32i.n a9, a1, 12 4000690e: 822102 l32i a8, a1, 8 40006911: 9095c0 sub a9, a5, a9 40006914: 909074 extui a9, a9, 0, 8 40006917: 609911 slli a9, a9, 10 4000691a: 908820 or a8, a8, a9 4000691d: e09c01 slli a9, a12, 18 40006920: c02000 memw 40006923: 7220ef l32i a7, a0, 0x3bc 40006926: 207710 and a7, a7, a2 40006929: b07720 or a7, a7, a11 4000692c: 907720 or a7, a7, a9 4000692f: 807720 or a7, a7, a8 40006932: c02000 memw 40006935: 7260ef s32i a7, a0, 0x3bc 40006938: 220120 l8ui a2, a1, 32 4000693b: 81ddff l32r a8, [0xe0000000] ; 0x400068b0 4000693e: bca2 beqz.n a2, 0x4000697c 40006940: 407201 slli a7, a2, 28 40006943: 620128 l8ui a6, a1, 40 40006946: 429112 l16si a4, a1, 36 40006949: 6065c0 sub a6, a5, a6 4000694c: 606074 extui a6, a6, 0, 8 4000694f: 606611 slli a6, a6, 10 40006952: 604420 or a4, a4, a6 40006955: e06201 slli a6, a2, 18 40006958: c02000 memw 4000695b: 3220f1 l32i a3, a0, 0x3c4 4000695e: 803310 and a3, a3, a8 40006961: 703320 or a3, a3, a7 40006964: 603320 or a3, a3, a6 40006967: 403320 or a3, a3, a4 4000696a: c02000 memw 4000696d: c851 l32i.n a12, a1, 20 4000696f: d861 l32i.n a13, a1, 24 40006971: 3260f1 s32i a3, a0, 0x3c4 40006974: 0841 l32i.n a0, a1, 16 40006976: 12c120 addi a1, a1, 32 40006979: 0df0 ret.n 4000697b: 00 4000697c: c851 l32i.n a12, a1, 20 4000697e: d861 l32i.n a13, a1, 24 40006980: 0841 l32i.n a0, a1, 16 40006982: 12c120 addi a1, a1, 32 40006985: 0df0 ret.n 40006987: 00 40006988: fffbffff ; l32r rom_stop_tx_tone: 4000698c: 12c1f0 addi a1, a1, -16 4000698f: 41feff l32r a4, [0xfffbffff] ; 0x40006988 40006992: 0901 s32i.n a0, a1, 0 40006994: 018ce9 l32r a0, [0x60000200] ; 0x40000fc4 40006997: 261259 beqi a2, 1, 0x400069f4 4000699a: 26226a beqi a2, 2, 0x40006a08 4000699d: 26323f beqi a2, 3, 0x400069e0 400069a0: c02000 memw 400069a3: 5220ee l32i a5, a0, 0x3b8 400069a6: 405510 and a5, a5, a4 400069a9: c02000 memw 400069ac: 5260ee s32i a5, a0, 0x3b8 400069af: c02000 memw 400069b2: 3220ef l32i a3, a0, 0x3bc 400069b5: 403310 and a3, a3, a4 400069b8: c02000 memw 400069bb: 3260ef s32i a3, a0, 0x3bc 400069be: c02000 memw 400069c1: 2220f1 l32i a2, a0, 0x3c4 400069c4: 402210 and a2, a2, a4 400069c7: c02000 memw 400069ca: 2260f1 s32i a2, a0, 0x3c4 400069cd: 01e2fd l32r a0, [0x3fffc730] ; 0x40006158 400069d0: 0800 l32i.n a0, a0, 0 400069d2: 08f0 l32i.n a0, a0, 60 400069d4: 0c02 movi.n a2, 0 400069d6: c00000 callx0 a0 400069d9: 0801 l32i.n a0, a1, 0 400069db: 12c110 addi a1, a1, 16 400069de: 0df0 ret.n 400069e0: c02000 memw 400069e3: 2220f1 l32i a2, a0, 0x3c4 400069e6: 402210 and a2, a2, a4 400069e9: c02000 memw 400069ec: 2260f1 s32i a2, a0, 0x3c4 400069ef: 86f6ff j 0x400069cd 400069f2: 0000 400069f4: c02000 memw 400069f7: 3220ee l32i a3, a0, 0x3b8 400069fa: 403310 and a3, a3, a4 400069fd: c02000 memw 40006a00: 3260ee s32i a3, a0, 0x3b8 40006a03: 86f1ff j 0x400069cd 40006a06: 0000 40006a08: c02000 memw 40006a0b: 5220ef l32i a5, a0, 0x3bc 40006a0e: 405510 and a5, a5, a4 40006a11: c02000 memw 40006a14: 5260ef s32i a5, a0, 0x3bc 40006a17: 86ecff j 0x400069cd 40006a1a: 0000 rom_txtone_linear_pwr: 40006a1c: 12c1e0 addi a1, a1, -32 40006a1f: 0911 s32i.n a0, a1, 4 40006a21: 3961 s32i.n a3, a1, 24 40006a23: f951 s32i.n a15, a1, 20 40006a25: d931 s32i.n a13, a1, 12 40006a27: e941 s32i.n a14, a1, 16 40006a29: c921 s32i.n a12, a1, 8 40006a2b: ed02 mov.n a14, a2 40006a2d: 160205 beqz a2, 0x40006a81 40006a30: 0c0c movi.n a12, 0 40006a32: d2a000 movi a13, 0 40006a35: 30f320 or a15, a3, a3 40006a38: 01c8fd l32r a0, [0x3fffc730] ; 0x40006158 40006a3b: 022000 l32i a0, a0, 0 40006a3e: 102120 or a2, a1, a1 40006a41: 022009 l32i a0, a0, 36 40006a44: 2b31 addi.n a3, a1, 2 40006a46: c00000 callx0 a0 40006a49: 0c14 movi.n a4, 1 40006a4b: 329101 l16si a3, a1, 2 40006a4e: 229100 l16si a2, a1, 0 40006a51: 001f40 ssl a15 40006a54: 0022a1 sll a2, a2 40006a57: 303483 moveqz a3, a4, a3 40006a5a: 325101 s16i a3, a1, 2 40006a5d: 852207 call0 __divsi3 ; 0x4000dc88 40006a60: 2acc add.n a12, a12, a2 40006a62: 1bdd addi.n a13, a13, 1 40006a64: d0d074 extui a13, a13, 0, 8 40006a67: 00cc11 slli a12, a12, 16 40006a6a: c0c031 srai a12, a12, 16 40006a6d: d79ec7 bne a14, a13, 0x40006a38 40006a70: 0811 l32i.n a0, a1, 4 40006a72: d831 l32i.n a13, a1, 12 40006a74: e841 l32i.n a14, a1, 16 40006a76: 2d0c mov.n a2, a12 40006a78: f851 l32i.n a15, a1, 20 40006a7a: c821 l32i.n a12, a1, 8 40006a7c: 12c120 addi a1, a1, 32 40006a7f: 0df0 ret.n 40006a81: 0c02 movi.n a2, 0 40006a83: c821 l32i.n a12, a1, 8 40006a85: d831 l32i.n a13, a1, 12 40006a87: e841 l32i.n a14, a1, 16 40006a89: f851 l32i.n a15, a1, 20 40006a8b: 0811 l32i.n a0, a1, 4 40006a8d: 12c120 addi a1, a1, 32 40006a90: 0df0 ret.n 40006a92: 0000 40006a94: 3ff20a00 ; l32r rom_tx_mac_disable: 40006a98: 31ffff l32r a3, [0x3ff20a00] ; 0x40006a94 40006a9b: c02000 memw 40006a9e: 5223f8 l32i a5, a3, 0x3e0 40006aa1: 715be6 l32r a7, [0x7f800000] ; 0x40000410 40006aa4: 506141 srli a6, a5, 1 40006aa7: 706610 and a6, a6, a7 40006aaa: 72a0fc movi a7, 252 40006aad: 705510 and a5, a5, a7 40006ab0: 605520 or a5, a5, a6 40006ab3: 0c36 movi.n a6, 3 40006ab5: 605520 or a5, a5, a6 40006ab8: c02000 memw 40006abb: 5263f8 s32i a5, a3, 0x3e0 40006abe: 7ce4 movi.n a4, -2 40006ac0: c02000 memw 40006ac3: 2223a5 l32i a2, a3, 0x294 40006ac6: 402210 and a2, a2, a4 40006ac9: c02000 memw 40006acc: 2263a5 s32i a2, a3, 0x294 40006acf: 0df0 ret.n 40006ad1: 000000 rom_tx_mac_enable: 40006ad4: 31f0ff l32r a3, [0x3ff20a00] ; 0x40006a94 40006ad7: c02000 memw 40006ada: 5223f8 l32i a5, a3, 0x3e0 40006add: 714ce6 l32r a7, [0x7f800000] ; 0x40000410 40006ae0: 506141 srli a6, a5, 1 40006ae3: 706610 and a6, a6, a7 40006ae6: 72a0fc movi a7, 252 40006ae9: 705510 and a5, a5, a7 40006aec: 605520 or a5, a5, a6 40006aef: c02000 memw 40006af2: 5263f8 s32i a5, a3, 0x3e0 40006af5: 0c14 movi.n a4, 1 40006af7: c02000 memw 40006afa: 2223a5 l32i a2, a3, 0x294 40006afd: 402220 or a2, a2, a4 40006b00: c02000 memw 40006b03: 2263a5 s32i a2, a3, 0x294 40006b06: 0df0 ret.n phy_get_romfuncs: 40006b08: 2194fd l32r a2, [0x3fffc730] ; 0x40006158 40006b0b: 2802 l32i.n a2, a2, 0 40006b0d: 0df0 ret.n 40006b0f: 00 rom_ana_inf_gating_en: 40006b10: 12c1e0 addi a1, a1, -32 40006b13: 0911 s32i.n a0, a1, 4 40006b15: 3901 s32i.n a3, a1, 0 40006b17: c921 s32i.n a12, a1, 8 40006b19: d931 s32i.n a13, a1, 12 40006b1b: e941 s32i.n a14, a1, 16 40006b1d: dd02 mov.n a13, a2 40006b1f: ed04 mov.n a14, a4 40006b21: c18dfd l32r a12, [0x3fffc730] ; 0x40006158 40006b24: 16e208 beqz a2, 0x40006bb6 40006b27: 22a077 movi a2, 119 40006b2a: 0c03 movi.n a3, 0 40006b2c: 0c04 movi.n a4, 0 40006b2e: 0c75 movi.n a5, 7 40006b30: 0c06 movi.n a6, 0 40006b32: 080c l32i.n a0, a12, 0 40006b34: 722100 l32i a7, a1, 0 40006b37: 022027 l32i a0, a0, 156 40006b3a: 707c74 extui a7, a7, 12, 8 40006b3d: c00000 callx0 a0 40006b40: 22a077 movi a2, 119 40006b43: 0c03 movi.n a3, 0 40006b45: 0c14 movi.n a4, 1 40006b47: 0c75 movi.n a5, 7 40006b49: 0c06 movi.n a6, 0 40006b4b: 080c l32i.n a0, a12, 0 40006b4d: 7801 l32i.n a7, a1, 0 40006b4f: 022027 l32i a0, a0, 156 40006b52: 707474 extui a7, a7, 4, 8 40006b55: c00000 callx0 a0 40006b58: 22a077 movi a2, 119 40006b5b: 0c03 movi.n a3, 0 40006b5d: 0c24 movi.n a4, 2 40006b5f: 0c35 movi.n a5, 3 40006b61: 0c06 movi.n a6, 0 40006b63: 080c l32i.n a0, a12, 0 40006b65: 7801 l32i.n a7, a1, 0 40006b67: 022027 l32i a0, a0, 156 40006b6a: 707034 extui a7, a7, 0, 4 40006b6d: c00000 callx0 a0 40006b70: 22a077 movi a2, 119 40006b73: 0c03 movi.n a3, 0 40006b75: 0c44 movi.n a4, 4 40006b77: 52a007 movi a5, 7 40006b7a: 022c00 l32i a0, a12, 0 40006b7d: 0c06 movi.n a6, 0 40006b7f: 022027 l32i a0, a0, 156 40006b82: e07074 extui a7, a14, 0, 8 40006b85: c00000 callx0 a0 40006b88: 22a077 movi a2, 119 40006b8b: 0c03 movi.n a3, 0 40006b8d: 0c34 movi.n a4, 3 40006b8f: 52a007 movi a5, 7 40006b92: 022c00 l32i a0, a12, 0 40006b95: 0c06 movi.n a6, 0 40006b97: 022027 l32i a0, a0, 156 40006b9a: e07874 extui a7, a14, 8, 8 40006b9d: c00000 callx0 a0 40006ba0: e07035 extui a7, a14, 16, 4 40006ba3: 22a077 movi a2, 119 40006ba6: 0c03 movi.n a3, 0 40006ba8: 0c24 movi.n a4, 2 40006baa: 080c l32i.n a0, a12, 0 40006bac: 0c75 movi.n a5, 7 40006bae: 022027 l32i a0, a0, 156 40006bb1: 0c46 movi.n a6, 4 40006bb3: c00000 callx0 a0 40006bb6: 0cf4 movi.n a4, 15 40006bb8: 0c35 movi.n a5, 3 40006bba: 0c36 movi.n a6, 3 40006bbc: d03004 extui a3, a13, 0, 1 40006bbf: 0c12 movi.n a2, 1 40006bc1: 080c l32i.n a0, a12, 0 40006bc3: 0c0e movi.n a14, 0 40006bc5: 022027 l32i a0, a0, 156 40006bc8: 30e283 moveqz a14, a2, a3 40006bcb: 7d0e mov.n a7, a14 40006bcd: 22a077 movi a2, 119 40006bd0: 0c03 movi.n a3, 0 40006bd2: c00000 callx0 a0 40006bd5: 7d0e mov.n a7, a14 40006bd7: 22a077 movi a2, 119 40006bda: 0c03 movi.n a3, 0 40006bdc: 1c84 movi.n a4, 24 40006bde: 080c l32i.n a0, a12, 0 40006be0: 0c05 movi.n a5, 0 40006be2: 022027 l32i a0, a0, 156 40006be5: 0c06 movi.n a6, 0 40006be7: c00000 callx0 a0 40006bea: 7d0d mov.n a7, a13 40006bec: 22a077 movi a2, 119 40006bef: 0c03 movi.n a3, 0 40006bf1: 1cc4 movi.n a4, 28 40006bf3: 080c l32i.n a0, a12, 0 40006bf5: 0c05 movi.n a5, 0 40006bf7: 022027 l32i a0, a0, 156 40006bfa: 62a000 movi a6, 0 40006bfd: c00000 callx0 a0 40006c00: c821 l32i.n a12, a1, 8 40006c02: d831 l32i.n a13, a1, 12 40006c04: e841 l32i.n a14, a1, 16 40006c06: 0811 l32i.n a0, a1, 4 40006c08: 12c120 addi a1, a1, 32 40006c0b: 0df0 ret.n 40006c0d: 000000 40006c10: 3fffcbe0 ; l32r 40006c14: 3fffcc20 ; l32r 40006c18: 0000096c ; l32r 40006c1c: 000009a8 ; l32r 40006c20: 000009a3 ; l32r 40006c24: 0000099e ; l32r 40006c28: 00000999 ; l32r 40006c2c: 00000994 ; l32r 40006c30: 0000098f ; l32r 40006c34: 0000098a ; l32r 40006c38: 00000985 ; l32r 40006c3c: 00000980 ; l32r 40006c40: 0000097b ; l32r 40006c44: 00000976 ; l32r 40006c48: 00000971 ; l32r 40006c4c: 3fffcc60 ; l32r rom_set_channel_freq: 40006c50: 12c1d0 addi a1, a1, -48 40006c53: e981 s32i.n a14, a1, 32 40006c55: 4941 s32i.n a4, a1, 16 40006c57: 6921 s32i.n a6, a1, 8 40006c59: 5911 s32i.n a5, a1, 4 40006c5b: 0951 s32i.n a0, a1, 20 40006c5d: c961 s32i.n a12, a1, 24 40006c5f: d971 s32i.n a13, a1, 28 40006c61: cd02 mov.n a12, a2 40006c63: 2d07 mov.n a2, a7 40006c65: a61c10 blti a12, 1, 0x40006c79 40006c68: 0cd0 movi.n a0, 13 40006c6a: c7200b blt a0, a12, 0x40006c79 40006c6d: 3931 s32i.n a3, a1, 12 40006c6f: 7991 s32i.n a7, a1, 36 40006c71: 0bdc addi.n a13, a12, -1 40006c73: d0d074 extui a13, a13, 0, 8 40006c76: 460100 j 0x40006c7f 40006c79: 0cdd movi.n a13, 13 40006c7b: 3931 s32i.n a3, a1, 12 40006c7d: 2991 s32i.n a2, a1, 36 40006c7f: e136fd l32r a14, [0x3fffc730] ; 0x40006158 40006c82: 080e l32i.n a0, a14, 0 40006c84: 022037 l32i a0, a0, 220 40006c87: c00000 callx0 a0 40006c8a: 4841 l32i.n a4, a1, 16 40006c8c: 0ce2 movi.n a2, 14 40006c8e: 404d90 addx2 a4, a13, a4 40006c91: 429400 l16si a4, a4, 0 40006c94: 27bc0d bgeu a12, a2, 0x40006ca5 40006c97: 31deff l32r a3, [0x3fffcbe0] ; 0x40006c10 40006c9a: 303ca0 addx4 a3, a12, a3 40006c9d: 3803 l32i.n a3, a3, 0 40006c9f: e1deff l32r a14, [0x0000096c] ; 0x40006c18 40006ca2: a00300 jx a3 ; << JUMP table 40006ca5: e13bfe l32r a14, [0x000009b4] ; 0x40006594 40006ca8: 16c409 beqz a4, 0x40006d48 40006cab: 02a001 movi a0, 1 40006cae: 000d40 ssr a13 40006cb1: 522101 l32i a5, a1, 4 40006cb4: c22102 l32i a12, a1, 8 40006cb7: 5805 l32i.n a5, a5, 0 40006cb9: c0cda0 addx4 a12, a13, a12 40006cbc: 505091 srl a5, a5 40006cbf: 076549 bbci a5, 0, 0x40006d0c 40006cc2: 380c l32i.n a3, a12, 0 40006cc4: 3030f5 extui a3, a3, 16, 16 40006cc7: 303093 movnez a3, a0, a3 40006cca: 324100 s8i a3, a1, 0 40006ccd: 280c l32i.n a2, a12, 0 40006ccf: 202841 srli a2, a2, 8 40006cd2: 202093 movnez a2, a0, a2 40006cd5: 224101 s8i a2, a1, 1 40006cd8: d80c l32i.n a13, a12, 0 40006cda: d0d093 movnez a13, a0, a13 40006cdd: d24102 s8i a13, a1, 2 40006ce0: d11efd l32r a13, [0x3fffc730] ; 0x40006158 40006ce3: 080d l32i.n a0, a13, 0 40006ce5: 022038 l32i a0, a0, 224 40006ce8: 2d01 mov.n a2, a1 40006cea: c00000 callx0 a0 40006ced: 080d l32i.n a0, a13, 0 40006cef: 022036 l32i a0, a0, 216 40006cf2: c891 l32i.n a12, a1, 36 40006cf4: c00000 callx0 a0 40006cf7: 2d0c mov.n a2, a12 40006cf9: 051dfc call0 ets_delay_us ; 0x40002ecc 40006cfc: 0851 l32i.n a0, a1, 20 40006cfe: c861 l32i.n a12, a1, 24 40006d00: 2d0e mov.n a2, a14 40006d02: d871 l32i.n a13, a1, 28 40006d04: e881 l32i.n a14, a1, 32 40006d06: 12c130 addi a1, a1, 48 40006d09: 0df0 ret.n 40006d0b: 00 40006d0c: 0113fd l32r a0, [0x3fffc730] ; 0x40006158 40006d0f: 3831 l32i.n a3, a1, 12 40006d11: 0800 l32i.n a0, a0, 0 40006d13: 2d0e mov.n a2, a14 40006d15: 022039 l32i a0, a0, 228 40006d18: 5d01 mov.n a5, a1 40006d1a: c00000 callx0 a0 40006d1d: 001d40 ssl a13 40006d20: 0c14 movi.n a4, 1 40006d22: 3811 l32i.n a3, a1, 4 40006d24: 520102 l8ui a5, a1, 2 40006d27: 720101 l8ui a7, a1, 1 40006d2a: 620100 l8ui a6, a1, 0 40006d2d: 807711 slli a7, a7, 8 40006d30: 006611 slli a6, a6, 16 40006d33: 706620 or a6, a6, a7 40006d36: 605520 or a5, a5, a6 40006d39: 590c s32i.n a5, a12, 0 40006d3b: 2803 l32i.n a2, a3, 0 40006d3d: 0044a1 sll a4, a4 40006d40: 402220 or a2, a2, a4 40006d43: 2903 s32i.n a2, a3, 0 40006d45: c6e5ff j 0x40006ce0 40006d48: 8831 l32i.n a8, a1, 12 40006d4a: 3cba movi.n a10, 59 40006d4c: 16c807 beqz a8, 0x40006dcc 40006d4f: 5cb5 movi.n a5, 91 40006d51: 5cc3 movi.n a3, 92 40006d53: 5cd6 movi.n a6, 93 40006d55: 5ce4 movi.n a4, 94 40006d57: 02a076 movi a0, 118 40006d5a: b2af83 movi a11, -125 40006d5d: d2afb7 movi a13, -73 40006d60: 0ce9 movi.n a9, 14 40006d62: 97bc0a bgeu a12, a9, 0x40006d70 40006d65: 21abff l32r a2, [0x3fffcc20] ; 0x40006c14 40006d68: 202ca0 addx4 a2, a12, a2 40006d6b: 2802 l32i.n a2, a2, 0 40006d6d: a00200 jx a2 ; << JUMP table 40006d70: 024102 s8i a0, a1, 2 40006d73: 32a062 movi a3, 98 40006d76: 5cf4 movi.n a4, 95 40006d78: 424100 s8i a4, a1, 0 40006d7b: 324101 s8i a3, a1, 1 40006d7e: 86d7ff j 0x40006ce0 sub_6d81: 40006d81: c6c8ff j 0x40006ca8 sub_6d84: 40006d84: e1a6ff l32r a14, [0x000009a8] ; 0x40006c1c 40006d87: 46c7ff j 0x40006ca8 sub_6d8a: 40006d8a: e1a5ff l32r a14, [0x000009a3] ; 0x40006c20 40006d8d: c6c5ff j 0x40006ca8 sub_6d90: 40006d90: e1a5ff l32r a14, [0x0000099e] ; 0x40006c24 40006d93: 46c4ff j 0x40006ca8 sub_6d96: 40006d96: e1a4ff l32r a14, [0x00000999] ; 0x40006c28 40006d99: c6c2ff j 0x40006ca8 sub_6d9c: 40006d9c: e1a4ff l32r a14, [0x00000994] ; 0x40006c2c 40006d9f: 46c1ff j 0x40006ca8 sub_6da2: 40006da2: e1a3ff l32r a14, [0x0000098f] ; 0x40006c30 40006da5: c6bfff j 0x40006ca8 sub_6da8: 40006da8: e1a3ff l32r a14, [0x0000098a] ; 0x40006c34 40006dab: 46beff j 0x40006ca8 sub_6dae: 40006dae: e1a2ff l32r a14, [0x00000985] ; 0x40006c38 40006db1: c6bcff j 0x40006ca8 sub_6db4: 40006db4: e1a2ff l32r a14, [0x00000980] ; 0x40006c3c 40006db7: 46bbff j 0x40006ca8 sub_6dba: 40006dba: e1a1ff l32r a14, [0x0000097b] ; 0x40006c40 40006dbd: c6b9ff j 0x40006ca8 sub_6dc0: 40006dc0: e1a1ff l32r a14, [0x00000976] ; 0x40006c44 40006dc3: 46b8ff j 0x40006ca8 sub_6dc6: 40006dc6: e1a0ff l32r a14, [0x00000971] ; 0x40006c48 40006dc9: c6b6ff j 0x40006ca8 40006dcc: 1c1b movi.n a11, 17 40006dce: 6c67 movi.n a7, -26 40006dd0: 62afbb movi a6, -69 40006dd3: d2af91 movi a13, -111 40006dd6: 42a066 movi a4, 102 40006dd9: 3c20 movi.n a0, 50 40006ddb: 3c13 movi.n a3, 49 40006ddd: 3c05 movi.n a5, 48 40006ddf: 0ce8 movi.n a8, 14 40006de1: 87bc0b bgeu a12, a8, 0x40006df0 40006de4: 919aff l32r a9, [0x3fffcc60] ; 0x40006c4c 40006de7: 909ca0 addx4 a9, a12, a9 40006dea: 9809 l32i.n a9, a9, 0 40006dec: a00900 jx a9 ; << JUMP table 40006def: 00 40006df0: 024100 s8i a0, a1, 0 40006df3: a2afcc movi a10, -52 40006df6: a24101 s8i a10, a1, 1 40006df9: a24102 s8i a10, a1, 2 40006dfc: 06b8ff j 0x40006ce0 sub_6dff: 40006dff: 524100 s8i a5, a1, 0 40006e02: a24102 s8i a10, a1, 2 40006e05: b2afb1 movi a11, -79 40006e08: b24101 s8i a11, a1, 1 40006e0b: 46b4ff j 0x40006ce0 sub_6e0e: 40006e0e: 424100 s8i a4, a1, 0 40006e11: 6ccc movi.n a12, -20 40006e13: d2afc4 movi a13, -60 40006e16: d24101 s8i a13, a1, 1 40006e19: c24102 s8i a12, a1, 2 40006e1c: 06b0ff j 0x40006ce0 sub_6e1f: 40006e1f: 424100 s8i a4, a1, 0 40006e22: b24101 s8i a11, a1, 1 40006e25: 4c80 movi.n a0, 72 40006e27: 024102 s8i a0, a1, 2 40006e2a: 86acff j 0x40006ce0 sub_6e2d: 40006e2d: 424100 s8i a4, a1, 0 40006e30: 22afa4 movi a2, -92 40006e33: 4c13 movi.n a3, 65 40006e35: 324101 s8i a3, a1, 1 40006e38: 224102 s8i a2, a1, 2 40006e3b: 46a8ff j 0x40006ce0 sub_6e3e: 40006e3e: 424100 s8i a4, a1, 0 40006e41: 0c05 movi.n a5, 0 40006e43: 524101 s8i a5, a1, 1 40006e46: 524102 s8i a5, a1, 2 40006e49: c6a4ff j 0x40006ce0 sub_6e4c: 40006e4c: 624100 s8i a6, a1, 0 40006e4f: 524102 s8i a5, a1, 2 40006e52: 72afbe movi a7, -66 40006e55: 724101 s8i a7, a1, 1 40006e58: 06a1ff j 0x40006ce0 sub_6e5b: 40006e5b: 624100 s8i a6, a1, 0 40006e5e: d24102 s8i a13, a1, 2 40006e61: 82a07c movi a8, 124 40006e64: 824101 s8i a8, a1, 1 40006e67: 469dff j 0x40006ce0 sub_6e6a: 40006e6a: 624100 s8i a6, a1, 0 40006e6d: a24101 s8i a10, a1, 1 40006e70: 1c39 movi.n a9, 19 40006e72: 924102 s8i a9, a1, 2 40006e75: c699ff j 0x40006ce0 sub_6e78: 40006e78: 324100 s8i a3, a1, 0 40006e7b: a2a06f movi a10, 111 40006e7e: 7c9b movi.n a11, -7 40006e80: b24101 s8i a11, a1, 1 40006e83: a24102 s8i a10, a1, 2 40006e86: 8695ff j 0x40006ce0 sub_6e89: 40006e89: 324100 s8i a3, a1, 0 40006e8c: d24101 s8i a13, a1, 1 40006e8f: c2afcb movi a12, -53 40006e92: c24102 s8i a12, a1, 2 40006e95: c691ff j 0x40006ce0 sub_6e98: 40006e98: 324100 s8i a3, a1, 0 40006e9b: 024101 s8i a0, a1, 1 40006e9e: 2c7d movi.n a13, 39 40006ea0: d24102 s8i a13, a1, 2 40006ea3: 468eff j 0x40006ce0 sub_6ea6: 40006ea6: 324100 s8i a3, a1, 0 40006ea9: b24102 s8i a11, a1, 2 40006eac: 3c40 movi.n a0, 52 40006eae: 024101 s8i a0, a1, 1 40006eb1: c68aff j 0x40006ce0 sub_6eb4: 40006eb4: 524100 s8i a5, a1, 0 40006eb7: 22afdf movi a2, -33 40006eba: 7c23 movi.n a3, -14 40006ebc: 324101 s8i a3, a1, 1 40006ebf: 224102 s8i a2, a1, 2 40006ec2: 8686ff j 0x40006ce0 sub_6ec5: 40006ec5: 524100 s8i a5, a1, 0 40006ec8: 424101 s8i a4, a1, 1 40006ecb: 424102 s8i a4, a1, 2 40006ece: 8683ff j 0x40006ce0 sub_6ed1: 40006ed1: 024100 s8i a0, a1, 0 40006ed4: 424101 s8i a4, a1, 1 40006ed7: 424102 s8i a4, a1, 2 40006eda: 8680ff j 0x40006ce0 sub_6edd: 40006edd: 024100 s8i a0, a1, 0 40006ee0: a24101 s8i a10, a1, 1 40006ee3: 624102 s8i a6, a1, 2 40006ee6: 867dff j 0x40006ce0 sub_6ee9: 40006ee9: 024100 s8i a0, a1, 0 40006eec: b24101 s8i a11, a1, 1 40006eef: b24102 s8i a11, a1, 2 40006ef2: 867aff j 0x40006ce0 sub_6ef5: 40006ef5: 324100 s8i a3, a1, 0 40006ef8: 724101 s8i a7, a1, 1 40006efb: 424102 s8i a4, a1, 2 40006efe: 8677ff j 0x40006ce0 sub_6f01: 40006f01: 324100 s8i a3, a1, 0 40006f04: 624101 s8i a6, a1, 1 40006f07: 624102 s8i a6, a1, 2 40006f0a: 8674ff j 0x40006ce0 sub_6f0d: 40006f0d: 324100 s8i a3, a1, 0 40006f10: d24101 s8i a13, a1, 1 40006f13: b24102 s8i a11, a1, 2 40006f16: 8671ff j 0x40006ce0 sub_6f19: 40006f19: 324100 s8i a3, a1, 0 40006f1c: 424101 s8i a4, a1, 1 40006f1f: 424102 s8i a4, a1, 2 40006f22: 866eff j 0x40006ce0 sub_6f25: 40006f25: 324100 s8i a3, a1, 0 40006f28: a24101 s8i a10, a1, 1 40006f2b: 624102 s8i a6, a1, 2 40006f2e: 866bff j 0x40006ce0 sub_6f31: 40006f31: 324100 s8i a3, a1, 0 40006f34: b24101 s8i a11, a1, 1 40006f37: b24102 s8i a11, a1, 2 40006f3a: 8668ff j 0x40006ce0 sub_6f3d: 40006f3d: 524100 s8i a5, a1, 0 40006f40: 724101 s8i a7, a1, 1 40006f43: 424102 s8i a4, a1, 2 40006f46: 8665ff j 0x40006ce0 sub_6f49: 40006f49: 524100 s8i a5, a1, 0 40006f4c: 624101 s8i a6, a1, 1 40006f4f: 624102 s8i a6, a1, 2 40006f52: 8662ff j 0x40006ce0 sub_6f55: 40006f55: 524100 s8i a5, a1, 0 40006f58: d24101 s8i a13, a1, 1 40006f5b: b24102 s8i a11, a1, 2 40006f5e: 865fff j 0x40006ce0 40006f61: 000000 40006f64: 00096000 ; l32r 40006f68: 3fffcca0 ; l32r 40006f6c: 00005208 ; l32r 40006f70: 40499999 ; l32r 40006f74: 9999999a ; l32r 40006f78: 40e99999 ; l32r 40006f7c: 60009600 ; l32r 40006f80: c0000000 ; l32r rom_chip_50_set_channel: 40006f84: 12c1e0 addi a1, a1, -32 40006f87: 0931 s32i.n a0, a1, 12 40006f89: d951 s32i.n a13, a1, 20 40006f8b: c941 s32i.n a12, a1, 16 40006f8d: dd04 mov.n a13, a4 40006f8f: cd02 mov.n a12, a2 40006f91: 4d05 mov.n a4, a5 40006f93: 0171fc l32r a0, [0x3fffc730] ; 0x40006158 40006f96: 5d06 mov.n a5, a6 40006f98: 0800 l32i.n a0, a0, 0 40006f9a: 706720 or a6, a7, a7 40006f9d: 022020 l32i a0, a0, 128 40006fa0: 721110 l16ui a7, a1, 32 40006fa3: c00000 callx0 a0 40006fa6: 0d02 mov.n a0, a2 40006fa8: 160d04 beqz a13, 0x40006fec 40006fab: 81bafe l32r a8, [0x3ff20a00] ; 0x40006a94 40006fae: c02000 memw 40006fb1: 82289c l32i a8, a8, 0x270 40006fb4: 2961 s32i.n a2, a1, 24 40006fb6: 17e817 bbsi a8, 1, 0x40006fd1 40006fb9: 22a067 movi a2, 103 40006fbc: 0167fc l32r a0, [0x3fffc730] ; 0x40006158 40006fbf: 0c43 movi.n a3, 4 40006fc1: 0800 l32i.n a0, a0, 0 40006fc3: 0c74 movi.n a4, 7 40006fc5: 022026 l32i a0, a0, 152 40006fc8: 52a004 movi a5, 4 40006fcb: c00000 callx0 a0 40006fce: 022106 l32i a0, a1, 24 40006fd1: 2161fc l32r a2, [0x3fffc730] ; 0x40006158 40006fd4: 41e4ff l32r a4, [0x00096000] ; 0x40006f64 40006fd7: 222200 l32i a2, a2, 0 40006fda: 803011 slli a3, a0, 8 40006fdd: 02221f l32i a0, a2, 124 40006fe0: 22a001 movi a2, 1 40006fe3: c00000 callx0 a0 40006fe6: 22a005 movi a2, 5 40006fe9: 05eefb call0 ets_delay_us ; 0x40002ecc 40006fec: 913ff6 l32r a9, [0x00006000] ; 0x400048e8 40006fef: a1dfff l32r a10, [0x00005208] ; 0x40006f6c 40006ff2: 8136fc l32r a8, [0x60009a00] ; 0x400060cc 40006ff5: 0ce4 movi.n a4, 14 40006ff7: 47bc0a bgeu a12, a4, 0x40007005 40006ffa: 51dbff l32r a5, [0x3fffcca0] ; 0x40006f68 40006ffd: 505ca0 addx4 a5, a12, a5 40007000: 5805 l32i.n a5, a5, 0 40007002: a00500 jx a5 ; << JUMP table 40007005: 02a06a movi a0, 106 40007008: a0a080 add a10, a0, a10 4000700b: f0aa01 slli a10, a10, 17 4000700e: c02000 memw 40007011: 722845 l32i a7, a8, 0x114 40007014: 7070c4 extui a7, a7, 0, 13 40007017: a07720 or a7, a7, a10 4000701a: 907720 or a7, a7, a9 4000701d: c02000 memw 40007020: 726845 s32i a7, a8, 0x114 40007023: 62ccfb addi a6, a12, -5 40007026: 16e608 beqz a6, 0x400070b8 40007029: b2ccfa addi a11, a12, -6 4000702c: 16db08 beqz a11, 0x400070bd 4000702f: d2ccf9 addi a13, a12, -7 40007032: 16cd08 beqz a13, 0x400070c2 40007035: 02ccf8 addi a0, a12, -8 40007038: 16c008 beqz a0, 0x400070c8 4000703b: 22ccf3 addi a2, a12, -13 4000703e: 166207 beqz a2, 0x400070b8 40007041: 52ccf2 addi a5, a12, -14 40007044: 7cc4 movi.n a4, -4 40007046: 0c02 movi.n a2, 0 40007048: 502483 moveqz a2, a4, a5 4000704b: d108ee l32r a13, [0x3fe00000] ; 0x4000286c 4000704e: c2a000 movi a12, 0 40007051: c52907 call0 __floatsidf ; 0x4000e2f0 40007054: 2921 s32i.n a2, a1, 8 40007056: 3911 s32i.n a3, a1, 4 40007058: 51c6ff l32r a5, [0x40499999] ; 0x40006f70 4000705b: 41c6ff l32r a4, [0x9999999a] ; 0x40006f74 4000705e: 058905 call0 __muldf3 ; 0x4000c8f0 40007061: 5d0d mov.n a5, a13 40007063: 4d0c mov.n a4, a12 40007065: 054d05 call0 __adddf3 ; 0x4000c538 40007068: c5c405 call0 __fixdfsi ; 0x4000ccb8 4000706b: 3811 l32i.n a3, a1, 4 4000706d: 51c2ff l32r a5, [0x40e99999] ; 0x40006f78 40007070: 2901 s32i.n a2, a1, 0 40007072: 41c0ff l32r a4, [0x9999999a] ; 0x40006f74 40007075: 2821 l32i.n a2, a1, 8 40007077: 858705 call0 __muldf3 ; 0x4000c8f0 4000707a: 4d0c mov.n a4, a12 4000707c: 5d0d mov.n a5, a13 4000707e: 854b05 call0 __adddf3 ; 0x4000c538 40007081: c801 l32i.n a12, a1, 0 40007083: d1beff l32r a13, [0x60009600] ; 0x40006f7c 40007086: 05c305 call0 __fixdfsi ; 0x4000ccb8 40007089: a1bdff l32r a10, [0xc0000000] ; 0x40006f80 4000708c: 81f4ed l32r a8, [0x000fffff] ; 0x4000285c 4000708f: c09094 extui a9, a12, 0, 10 40007092: c09901 slli a9, a9, 20 40007095: 808210 and a8, a2, a8 40007098: c02000 memw 4000709b: 722da8 l32i a7, a13, 0x2a0 4000709e: a07710 and a7, a7, a10 400070a1: 907720 or a7, a7, a9 400070a4: 807720 or a7, a7, a8 400070a7: c02000 memw 400070aa: 726da8 s32i a7, a13, 0x2a0 400070ad: c841 l32i.n a12, a1, 16 400070af: d851 l32i.n a13, a1, 20 400070b1: 0831 l32i.n a0, a1, 12 400070b3: 12c120 addi a1, a1, 32 400070b6: 0df0 ret.n 400070b8: 0c82 movi.n a2, 8 400070ba: 46e3ff j 0x4000704b 400070bd: 0c32 movi.n a2, 3 400070bf: 06e2ff j 0x4000704b 400070c2: 7ce2 movi.n a2, -2 400070c4: c6e0ff j 0x4000704b 400070c7: 00 400070c8: 7c92 movi.n a2, -7 400070ca: 46dfff j 0x4000704b sub_70cd: 400070cd: 02a2e1 movi a0, 0x2e1 400070d0: 06cdff j 0x40007008 sub_70d3: 400070d3: 02a0d1 movi a0, 209 400070d6: 86cbff j 0x40007008 sub_70d9: 400070d9: 02a0fc movi a0, 252 400070dc: 06caff j 0x40007008 sub_70df: 400070df: 02a127 movi a0, 0x127 400070e2: 86c8ff j 0x40007008 sub_70e5: 400070e5: 02a153 movi a0, 0x153 400070e8: 06c7ff j 0x40007008 sub_70eb: 400070eb: 02a17e movi a0, 0x17e 400070ee: 86c5ff j 0x40007008 sub_70f1: 400070f1: 02a1aa movi a0, 0x1aa 400070f4: 06c4ff j 0x40007008 sub_70f7: 400070f7: 02a1d6 movi a0, 0x1d6 400070fa: 86c2ff j 0x40007008 sub_70fd: 400070fd: 02a202 movi a0, 0x202 40007100: 06c1ff j 0x40007008 sub_7103: 40007103: 02a22e movi a0, 0x22e 40007106: 86bfff j 0x40007008 sub_7109: 40007109: 02a25a movi a0, 0x25a 4000710c: 06beff j 0x40007008 sub_710f: 4000710f: 02a287 movi a0, 0x287 40007112: 86bcff j 0x40007008 sub_7115: 40007115: 02a2b4 movi a0, 0x2b4 40007118: 06bbff j 0x40007008 4000711b: 00 rom_chip_v5_rx_init: 4000711c: 22a061 movi a2, 97 4000711f: 0c13 movi.n a3, 1 40007121: 12c1f0 addi a1, a1, -16 40007124: c911 s32i.n a12, a1, 4 40007126: c10cfc l32r a12, [0x3fffc730] ; 0x40006158 40007129: 0901 s32i.n a0, a1, 0 4000712b: 080c l32i.n a0, a12, 0 4000712d: 42a008 movi a4, 8 40007130: 022026 l32i a0, a0, 152 40007133: 1c15 movi.n a5, 17 40007135: c00000 callx0 a0 40007138: 22a061 movi a2, 97 4000713b: 0c13 movi.n a3, 1 4000713d: 080c l32i.n a0, a12, 0 4000713f: 0c64 movi.n a4, 6 40007141: 022026 l32i a0, a0, 152 40007144: 1c55 movi.n a5, 21 40007146: c00000 callx0 a0 40007149: 22a061 movi a2, 97 4000714c: 0c13 movi.n a3, 1 4000714e: 080c l32i.n a0, a12, 0 40007150: 42a007 movi a4, 7 40007153: 022026 l32i a0, a0, 152 40007156: 52a051 movi a5, 81 40007159: c00000 callx0 a0 4000715c: 22a064 movi a2, 100 4000715f: 0c03 movi.n a3, 0 40007161: 022c00 l32i a0, a12, 0 40007164: 42a004 movi a4, 4 40007167: 022026 l32i a0, a0, 152 4000716a: 52a079 movi a5, 121 4000716d: c00000 callx0 a0 40007170: 22a064 movi a2, 100 40007173: 0c03 movi.n a3, 0 40007175: 080c l32i.n a0, a12, 0 40007177: 0c74 movi.n a4, 7 40007179: 022026 l32i a0, a0, 152 4000717c: 52a07b movi a5, 123 4000717f: c00000 callx0 a0 40007182: c811 l32i.n a12, a1, 4 40007184: 0801 l32i.n a0, a1, 0 40007186: 12c110 addi a1, a1, 16 40007189: 0df0 ret.n 4000718b: 00 rom_chip_v5_tx_init: 4000718c: 22a06b movi a2, 107 4000718f: 0c23 movi.n a3, 2 40007191: 12c1f0 addi a1, a1, -16 40007194: c911 s32i.n a12, a1, 4 40007196: c1f0fb l32r a12, [0x3fffc730] ; 0x40006158 40007199: 0901 s32i.n a0, a1, 0 4000719b: 080c l32i.n a0, a12, 0 4000719d: 0c14 movi.n a4, 1 4000719f: 022026 l32i a0, a0, 152 400071a2: 52a068 movi a5, 104 400071a5: c00000 callx0 a0 400071a8: 22a06b movi a2, 107 400071ab: 0c23 movi.n a3, 2 400071ad: 080c l32i.n a0, a12, 0 400071af: 0c24 movi.n a4, 2 400071b1: 022026 l32i a0, a0, 152 400071b4: 0cf5 movi.n a5, 15 400071b6: c00000 callx0 a0 400071b9: 22a06b movi a2, 107 400071bc: 0c23 movi.n a3, 2 400071be: 022c00 l32i a0, a12, 0 400071c1: 0c34 movi.n a4, 3 400071c3: 022026 l32i a0, a0, 152 400071c6: 52a0a8 movi a5, 168 400071c9: c00000 callx0 a0 400071cc: 22a06b movi a2, 107 400071cf: 0c23 movi.n a3, 2 400071d1: 080c l32i.n a0, a12, 0 400071d3: 0c44 movi.n a4, 4 400071d5: 022026 l32i a0, a0, 152 400071d8: 0c65 movi.n a5, 6 400071da: c00000 callx0 a0 400071dd: 22a06b movi a2, 107 400071e0: 0c23 movi.n a3, 2 400071e2: 022c00 l32i a0, a12, 0 400071e5: 42a005 movi a4, 5 400071e8: 022026 l32i a0, a0, 152 400071eb: 0c85 movi.n a5, 8 400071ed: c00000 callx0 a0 400071f0: 22a06b movi a2, 107 400071f3: 32a002 movi a3, 2 400071f6: 022c00 l32i a0, a12, 0 400071f9: 0c64 movi.n a4, 6 400071fb: 022026 l32i a0, a0, 152 400071fe: 52a0b8 movi a5, 184 40007201: c00000 callx0 a0 40007204: 22a06b movi a2, 107 40007207: 0c23 movi.n a3, 2 40007209: 080c l32i.n a0, a12, 0 4000720b: 0c74 movi.n a4, 7 4000720d: 022026 l32i a0, a0, 152 40007210: 5cb5 movi.n a5, 91 40007212: c00000 callx0 a0 40007215: 22a06b movi a2, 107 40007218: 0c23 movi.n a3, 2 4000721a: 022c00 l32i a0, a12, 0 4000721d: 0c84 movi.n a4, 8 4000721f: 022026 l32i a0, a0, 152 40007222: 52a004 movi a5, 4 40007225: c00000 callx0 a0 40007228: 22a06b movi a2, 107 4000722b: 0c23 movi.n a3, 2 4000722d: 080c l32i.n a0, a12, 0 4000722f: 0c94 movi.n a4, 9 40007231: 022026 l32i a0, a0, 152 40007234: 0c05 movi.n a5, 0 40007236: c00000 callx0 a0 40007239: 22a06b movi a2, 107 4000723c: 0c23 movi.n a3, 2 4000723e: 080c l32i.n a0, a12, 0 40007240: 42a00a movi a4, 10 40007243: 022026 l32i a0, a0, 152 40007246: 52a074 movi a5, 116 40007249: c00000 callx0 a0 4000724c: 22a06b movi a2, 107 4000724f: 0c23 movi.n a3, 2 40007251: 080c l32i.n a0, a12, 0 40007253: 0cb4 movi.n a4, 11 40007255: 022026 l32i a0, a0, 152 40007258: 0c75 movi.n a5, 7 4000725a: c00000 callx0 a0 4000725d: c811 l32i.n a12, a1, 4 4000725f: 0801 l32i.n a0, a1, 0 40007261: 12c110 addi a1, a1, 16 40007264: 0df0 ret.n 40007266: 0000 ; This gets called, among other things, to set the CPU frequency ; The following code was posted online: ; ; rom_i2c_readReg(103,4,1) != 136) { // 8: 40MHz, 136: 26MHz ; //if(get_sys_const(sys_const_crystal_26m_en) == 1) { // soc_param0: 0: 40MHz, 1: 26MHz, 2: 24MHz ; // set 80MHz PLL CPU ; rom_i2c_writeReg(103,4,1,136); ; rom_i2c_writeReg(103,4,2,145) ; ------ ; ; rom_i2c_readReg ( cmd, ctl, reg ) ; rom_i2c_writeReg ( cmd, ctl, reg, val ) ; ; ctl is an index to which i2c registers in the ESP8266 get used. ; note that here a magic offset of 0x300 is used, so the base ; for the i2c registers is actually 0x60000d00 ; These calls use register "4" at offset 16, i.e. at 0x60000d10 rom_i2c_readReg: 40007268: 813bf3 l32r a8, [0x60000a00] ; 0x40003f54 4000726b: 806411 slli a6, a4, 8 ; a6 = reg << 8 4000726e: e07311 slli a7, a3, 2 ; a7 = ctl << 2 40007271: 606220 or a6, a2, a6 ; a6 |= cmd 40007274: 8a27 add.n a2, a7, a8 ; a2 = a7 + 0x60000a00 40007276: c02000 memw 40007279: 6262c0 s32i a6, a2, 0x300 ; a6 -> addr 4000727c: c02000 memw 4000727f: 5222c0 l32i a5, a2, 0x300 ; a5 <- addr 40007282: 97750a bbci a5, 25, 0x40007290 ; branch if bit clear 40007285: c02000 memw 40007288: 7222c0 l32i a7, a2, 0x300 ; a7 <- addr 4000728b: 3df0 nop.n 4000728d: 97f7f4 bbsi a7, 25, 0x40007285 ; spin until clear 40007290: c02000 memw 40007293: 2222c0 l32i a2, a2, 0x300 ; a2 <- addr 40007296: 202075 extui a2, a2, 16, 8 ; a2 = (a2>>16) & 0xff 40007299: 0df0 ret.n 4000729b: 00 rom_i2c_readReg_Mask: 4000729c: 12c1f0 addi a1, a1, -16 ; allocate 16 bytes on stack 4000729f: 0921 s32i.n a0, a1, 8 ; save a0 400072a1: 01adfb l32r a0, [0x3fffc730] ; 0x40006158 400072a4: 0800 l32i.n a0, a0, 0 400072a6: 5901 s32i.n a5, a1, 0 400072a8: 022024 l32i a0, a0, 144 400072ab: 6911 s32i.n a6, a1, 4 400072ad: c00000 callx0 a0 ; ***** 400072b0: 4801 l32i.n a4, a1, 0 400072b2: 5811 l32i.n a5, a1, 4 400072b4: 0821 l32i.n a0, a1, 8 ; restore a0 400072b6: 000540 ssr a5 400072b9: 12c110 addi a1, a1, 16 ; restore stack 400072bc: 2030b1 sra a3, a2 400072bf: 5044c0 sub a4, a4, a5 400072c2: 0c12 movi.n a2, 1 400072c4: 1b44 addi.n a4, a4, 1 400072c6: 001440 ssl a4 400072c9: 0022a1 sll a2, a2 400072cc: 0b22 addi.n a2, a2, -1 400072ce: 302210 and a2, a2, a3 400072d1: 202074 extui a2, a2, 0, 8 400072d4: 0df0 ret.n 400072d6: 0000 ; rom_i2c_writeReg ( cmd, ctl, reg, val ) rom_i2c_writeReg: 400072d8: 008511 slli a8, a5, 16 ; a8 = val << 16 400072db: 807411 slli a7, a4, 8 ; a7 = reg << 8 400072de: 911df3 l32r a9, [0x60000a00] ; 0x40003f54 400072e1: 807720 or a7, a7, a8 ; a7 |= a8 400072e4: 8176f3 l32r a8, [0x01000000] ; 0x400040bc 400072e7: 707220 or a7, a2, a7 ; a7 |= cmd 400072ea: 807720 or a7, a7, a8 ; a7 |= a8 (redundant) 400072ed: e08311 slli a8, a3, 2 ; a8 = ctl << 2 400072f0: 9a28 add.n a2, a8, a9 400072f2: c02000 memw 400072f5: 7262c0 s32i a7, a2, 0x300 ; a7 -> addr 400072f8: c02000 memw 400072fb: 6222c0 l32i a6, a2, 0x300 ; a6 <- addr 400072fe: 977608 bbci a6, 25, 0x4000730a ; branch if bit clear 40007301: c02000 memw 40007304: 9222c0 l32i a9, a2, 0x300 ; a9 <- addr 40007307: 97f9f6 bbsi a9, 25, 0x40007301 ; spin until clear 4000730a: 0df0 ret.n rom_i2c_writeReg_Mask: 4000730c: 12c1e0 addi a1, a1, -32 4000730f: 5901 s32i.n a5, a1, 0 40007311: 6911 s32i.n a6, a1, 4 40007313: 7921 s32i.n a7, a1, 8 40007315: c941 s32i.n a12, a1, 16 40007317: d951 s32i.n a13, a1, 20 40007319: e961 s32i.n a14, a1, 24 4000731b: 0931 s32i.n a0, a1, 12 4000731d: 018efb l32r a0, [0x3fffc730] ; 0x40006158 40007320: ed02 mov.n a14, a2 40007322: 0800 l32i.n a0, a0, 0 40007324: dd03 mov.n a13, a3 40007326: 022024 l32i a0, a0, 144 40007329: cd04 mov.n a12, a4 4000732b: c00000 callx0 a0 ; ***** 4000732e: 4d0c mov.n a4, a12 40007330: 3d0d mov.n a3, a13 40007332: 0c15 movi.n a5, 1 40007334: 8801 l32i.n a8, a1, 0 40007336: 6821 l32i.n a6, a1, 8 40007338: 0188fb l32r a0, [0x3fffc730] ; 0x40006158 4000733b: 7811 l32i.n a7, a1, 4 4000733d: 0800 l32i.n a0, a0, 0 4000733f: 001740 ssl a7 40007342: 0066a1 sll a6, a6 40007345: 7088c0 sub a8, a8, a7 40007348: 1b88 addi.n a8, a8, 1 4000734a: 022026 l32i a0, a0, 152 4000734d: 001840 ssl a8 40007350: 0055a1 sll a5, a5 40007353: 001740 ssl a7 40007356: 0b55 addi.n a5, a5, -1 40007358: 7cf7 movi.n a7, -1 4000735a: 0055a1 sll a5, a5 4000735d: 705530 xor a5, a5, a7 40007360: 505210 and a5, a2, a5 40007363: 2d0e mov.n a2, a14 40007365: 605520 or a5, a5, a6 40007368: 505074 extui a5, a5, 0, 8 4000736b: c00000 callx0 a0 ; ***** 4000736e: c841 l32i.n a12, a1, 16 40007370: d851 l32i.n a13, a1, 20 40007372: e861 l32i.n a14, a1, 24 40007374: 0831 l32i.n a0, a1, 12 40007376: 12c120 addi a1, a1, 32 40007379: 0df0 ret.n 4000737b: 00 rom_pbus_debugmode: 4000737c: 12c1f0 addi a1, a1, -16 4000737f: 026100 s32i a0, a1, 0 40007382: e26103 s32i a14, a1, 12 40007385: d26102 s32i a13, a1, 8 40007388: c911 s32i.n a12, a1, 4 4000738a: 5d00 mov.n a5, a0 4000738c: 210ee7 l32r a2, [0x60000200] ; 0x40000fc4 4000738f: c02000 memw 40007392: 2222e5 l32i a2, a2, 0x394 40007395: 61bffd l32r a6, [0x3ff20a00] ; 0x40006a94 40007398: 07e23e bbsi a2, 0, 0x400073da 4000739b: c02000 memw 4000739e: 62269c l32i a6, a6, 0x270 400073a1: 176635 bbci a6, 1, 0x400073da 400073a4: c16dfb l32r a12, [0x3fffc730] ; 0x40006158 400073a7: 080c l32i.n a0, a12, 0 400073a9: 02201d l32i a0, a0, 116 400073ac: c00000 callx0 a0 400073af: 0c52 movi.n a2, 5 400073b1: 85b1fb call0 ets_delay_us ; 0x40002ecc 400073b4: 0c6e movi.n a14, 6 400073b6: d2a184 movi a13, 0x184 400073b9: 080c l32i.n a0, a12, 0 400073bb: 0c22 movi.n a2, 2 400073bd: 02202c l32i a0, a0, 176 400073c0: 0c13 movi.n a3, 1 400073c2: c00000 callx0 a0 400073c5: d7c2f0 bnall a2, a13, 0x400073b9 400073c8: 080c l32i.n a0, a12, 0 400073ca: 0c32 movi.n a2, 3 400073cc: 02202c l32i a0, a0, 176 400073cf: 0c23 movi.n a3, 2 400073d1: c00000 callx0 a0 400073d4: e02210 and a2, a2, a14 400073d7: 6662de bnei a2, 6, 0x400073b9 400073da: 91faf3 l32r a9, [0x08000000] ; 0x400043c4 400073dd: 813bfb l32r a8, [0x60009a00] ; 0x400060cc 400073e0: c02000 memw 400073e3: 722842 l32i a7, a8, 0x108 400073e6: 907720 or a7, a7, a9 400073e9: c02000 memw 400073ec: 726842 s32i a7, a8, 0x108 400073ef: c02000 memw 400073f2: 51f4e6 l32r a5, [0x60000200] ; 0x40000fc4 400073f5: 4225e5 l32i a4, a5, 0x394 400073f8: 0c16 movi.n a6, 1 400073fa: 604420 or a4, a4, a6 400073fd: c02000 memw 40007400: 4265e5 s32i a4, a5, 0x394 40007403: c811 l32i.n a12, a1, 4 40007405: d821 l32i.n a13, a1, 8 40007407: e831 l32i.n a14, a1, 12 40007409: 0801 l32i.n a0, a1, 0 4000740b: 12c110 addi a1, a1, 16 4000740e: 0df0 ret.n rom_pbus_enter_debugmode: 40007410: 12c1f0 addi a1, a1, -16 40007413: 026101 s32i a0, a1, 4 40007416: 0150fb l32r a0, [0x3fffc730] ; 0x40006158 40007419: 022000 l32i a0, a0, 0 4000741c: 022028 l32i a0, a0, 160 4000741f: 2901 s32i.n a2, a1, 0 40007421: c00000 callx0 a0 40007424: 014dfb l32r a0, [0x3fffc730] ; 0x40006158 40007427: 0800 l32i.n a0, a0, 0 40007429: 022030 l32i a0, a0, 192 4000742c: 0c12 movi.n a2, 1 4000742e: c00000 callx0 a0 40007431: 0149fb l32r a0, [0x3fffc730] ; 0x40006158 40007434: 0800 l32i.n a0, a0, 0 40007436: 022034 l32i a0, a0, 208 40007439: 2801 l32i.n a2, a1, 0 4000743b: c00000 callx0 a0 4000743e: 0811 l32i.n a0, a1, 4 40007440: 12c110 addi a1, a1, 16 40007443: 0df0 ret.n 40007445: 000000 rom_pbus_exit_debugmode: 40007448: 12c1f0 addi a1, a1, -16 4000744b: 0901 s32i.n a0, a1, 0 4000744d: 0142fb l32r a0, [0x3fffc730] ; 0x40006158 40007450: 022000 l32i a0, a0, 0 40007453: 022032 l32i a0, a0, 200 40007456: c00000 callx0 a0 40007459: 013ffb l32r a0, [0x3fffc730] ; 0x40006158 4000745c: 022000 l32i a0, a0, 0 4000745f: 022031 l32i a0, a0, 196 40007462: c00000 callx0 a0 40007465: 013cfb l32r a0, [0x3fffc730] ; 0x40006158 40007468: 0800 l32i.n a0, a0, 0 4000746a: 02202f l32i a0, a0, 188 4000746d: c00000 callx0 a0 40007470: 0801 l32i.n a0, a1, 0 40007472: 12c110 addi a1, a1, 16 40007475: 0df0 ret.n 40007477: 00 40007478: ffff0001 ; l32r rom_pbus_force_test: 4000747c: 209311 slli a9, a3, 14 4000747f: a1feff l32r a10, [0xffff0001] ; 0x40007478 40007482: 0c28 movi.n a8, 2 40007484: e07211 slli a7, a2, 2 40007487: 807720 or a7, a7, a8 4000748a: 21cee6 l32r a2, [0x60000200] ; 0x40000fc4 4000748d: b08411 slli a8, a4, 5 40007490: c02000 memw 40007493: 6222e5 l32i a6, a2, 0x394 40007496: a06610 and a6, a6, a10 40007499: 906620 or a6, a6, a9 4000749c: 806620 or a6, a6, a8 4000749f: 706620 or a6, a6, a7 400074a2: c02000 memw 400074a5: 6262e5 s32i a6, a2, 0x394 400074a8: c02000 memw 400074ab: 5222e8 l32i a5, a2, 0x3a0 400074ae: d68500 bgez a5, 0x400074ba 400074b1: c02000 memw 400074b4: 9222e8 l32i a9, a2, 0x3a0 400074b7: 9669ff bltz a9, 0x400074b1 400074ba: 7cdb movi.n a11, -3 400074bc: c02000 memw 400074bf: a222e5 l32i a10, a2, 0x394 400074c2: b0aa10 and a10, a10, a11 400074c5: c02000 memw 400074c8: a262e5 s32i a10, a2, 0x394 400074cb: 0df0 ret.n 400074cd: 000000 400074d0: 3fffcce0 ; l32r 400074d4: 600005a4 ; l32r rom_pbus_rd: 400074d8: 12c1f0 addi a1, a1, -16 400074db: 0911 s32i.n a0, a1, 4 400074dd: 01fcff l32r a0, [0x3fffcce0] ; 0x400074d0 400074e0: c921 s32i.n a12, a1, 8 400074e2: 0a02 add.n a0, a2, a0 400074e4: 020000 l8ui a0, a0, 0 400074e7: 264355 beqi a3, 4, 0x40007540 400074ea: 0bc3 addi.n a12, a3, -1 400074ec: 0acc add.n a12, a12, a0 400074ee: c0c074 extui a12, a12, 0, 8 400074f1: 26ac19 beqi a12, 12, 0x4000750e 400074f4: c02c20 or a2, a12, a12 400074f7: 32a003 movi a3, 3 400074fa: c5d606 call0 __umodsi3 ; 0x4000e268 400074fd: 02a012 movi a0, 18 40007500: 202074 extui a2, a2, 0, 8 40007503: 2022b0 addx8 a2, a2, a2 40007506: 2000c0 sub a0, a0, a2 40007509: 0901 s32i.n a0, a1, 0 4000750b: 460100 j 0x40007514 4000750e: 32a000 movi a3, 0 40007511: 326100 s32i a3, a1, 0 40007514: c02c20 or a2, a12, a12 40007517: 0c33 movi.n a3, 3 40007519: 05d006 call0 __udivsi3 ; 0x4000e21c 4000751c: 202074 extui a2, a2, 0, 8 4000751f: 31edff l32r a3, [0x600005a4] ; 0x400074d4 40007522: e02211 slli a2, a2, 2 40007525: 3a22 add.n a2, a2, a3 40007527: c02000 memw 4000752a: 2802 l32i.n a2, a2, 0 4000752c: 0811 l32i.n a0, a1, 4 4000752e: 3801 l32i.n a3, a1, 0 40007530: c821 l32i.n a12, a1, 8 40007532: 000340 ssr a3 40007535: 12c110 addi a1, a1, 16 40007538: 202091 srl a2, a2 4000753b: 202084 extui a2, a2, 0, 9 4000753e: 0df0 ret.n 40007540: 2bc0 addi.n a12, a0, 2 40007542: c0c074 extui a12, a12, 0, 8 40007545: 66acab bnei a12, 12, 0x400074f4 40007548: 86f0ff j 0x4000750e 4000754b: 00 rom_pbus_set_rxgain: 4000754c: 0c23 movi.n a3, 2 4000754e: 12c1e0 addi a1, a1, -32 40007551: c941 s32i.n a12, a1, 16 40007553: d951 s32i.n a13, a1, 20 40007555: d100fb l32r a13, [0x3fffc730] ; 0x40006158 40007558: 0931 s32i.n a0, a1, 12 4000755a: 080d l32i.n a0, a13, 0 4000755c: cd02 mov.n a12, a2 4000755e: 02202c l32i a0, a0, 176 40007561: 0c32 movi.n a2, 3 40007563: c00000 callx0 a0 40007566: 0c13 movi.n a3, 1 40007568: 080d l32i.n a0, a13, 0 4000756a: 2901 s32i.n a2, a1, 0 4000756c: 02202c l32i a0, a0, 176 4000756f: 0c22 movi.n a2, 2 40007571: c00000 callx0 a0 40007574: 0c13 movi.n a3, 1 40007576: 080d l32i.n a0, a13, 0 40007578: c06604 extui a6, a12, 6, 1 4000757b: c07704 extui a7, a12, 7, 1 4000757e: c04804 extui a4, a12, 8, 1 40007581: 2911 s32i.n a2, a1, 4 40007583: c05304 extui a5, a12, 3, 1 40007586: 0c32 movi.n a2, 3 40007588: a05511 slli a5, a5, 6 4000758b: f04411 slli a4, a4, 1 4000758e: e07711 slli a7, a7, 2 40007591: d06611 slli a6, a6, 3 40007594: 02202b l32i a0, a0, 172 40007597: 706620 or a6, a6, a7 4000759a: 4921 s32i.n a4, a1, 8 4000759c: c07404 extui a7, a12, 4, 1 4000759f: b07711 slli a7, a7, 5 400075a2: 705520 or a5, a5, a7 400075a5: c07504 extui a7, a12, 5, 1 400075a8: c07711 slli a7, a7, 4 400075ab: 705520 or a5, a5, a7 400075ae: 605520 or a5, a5, a6 400075b1: c06904 extui a6, a12, 9, 1 400075b4: 604420 or a4, a4, a6 400075b7: 504420 or a4, a4, a5 400075ba: 4040f4 extui a4, a4, 0, 16 400075bd: c00000 callx0 a0 400075c0: 0c32 movi.n a2, 3 400075c2: 0c23 movi.n a3, 2 400075c4: 080d l32i.n a0, a13, 0 400075c6: 4801 l32i.n a4, a1, 0 400075c8: 52a1c7 movi a5, 0x1c7 400075cb: 504410 and a4, a4, a5 400075ce: 02202b l32i a0, a0, 172 400075d1: c05024 extui a5, a12, 0, 3 400075d4: d05511 slli a5, a5, 3 400075d7: 504420 or a4, a4, a5 400075da: 4040f4 extui a4, a4, 0, 16 400075dd: c00000 callx0 a0 400075e0: 0c22 movi.n a2, 2 400075e2: 0c13 movi.n a3, 1 400075e4: 4821 l32i.n a4, a1, 8 400075e6: 72a185 movi a7, 0x185 400075e9: 5811 l32i.n a5, a1, 4 400075eb: 080d l32i.n a0, a13, 0 400075ed: c06b34 extui a6, a12, 11, 4 400075f0: d06611 slli a6, a6, 3 400075f3: 02202b l32i a0, a0, 172 400075f6: 705510 and a5, a5, a7 400075f9: 605520 or a5, a5, a6 400075fc: 504420 or a4, a4, a5 400075ff: 4040f4 extui a4, a4, 0, 16 40007602: c00000 callx0 a0 40007605: c841 l32i.n a12, a1, 16 40007607: d851 l32i.n a13, a1, 20 40007609: 0831 l32i.n a0, a1, 12 4000760b: 12c120 addi a1, a1, 32 4000760e: 0df0 ret.n rom_pbus_set_txgain: 40007610: 0c13 movi.n a3, 1 40007612: 204714 extui a4, a2, 7, 2 40007615: 205044 extui a5, a2, 0, 5 40007618: 12c1f0 addi a1, a1, -16 4000761b: 206514 extui a6, a2, 5, 2 4000761e: e06611 slli a6, a6, 2 40007621: 0901 s32i.n a0, a1, 0 40007623: c05511 slli a5, a5, 4 40007626: 01ccfa l32r a0, [0x3fffc730] ; 0x40006158 40007629: 0c42 movi.n a2, 4 4000762b: 605520 or a5, a5, a6 4000762e: 0800 l32i.n a0, a0, 0 40007630: 504420 or a4, a4, a5 40007633: 02202b l32i a0, a0, 172 40007636: 4040f4 extui a4, a4, 0, 16 40007639: c00000 callx0 a0 4000763c: 0801 l32i.n a0, a1, 0 4000763e: 12c110 addi a1, a1, 16 40007641: 0df0 ret.n 40007643: 00 40007644: f7ffffff ; l32r rom_pbus_workmode: 40007648: 12c1f0 addi a1, a1, -16 4000764b: 0901 s32i.n a0, a1, 0 4000764d: 7ce7 movi.n a7, -2 4000764f: 319ffa l32r a3, [0x60009a00] ; 0x400060cc 40007652: 615ce6 l32r a6, [0x60000200] ; 0x40000fc4 40007655: c02000 memw 40007658: 5226e5 l32i a5, a6, 0x394 4000765b: 705510 and a5, a5, a7 4000765e: c02000 memw 40007661: 5266e5 s32i a5, a6, 0x394 40007664: 41f8ff l32r a4, [0xf7ffffff] ; 0x40007644 40007667: c02000 memw 4000766a: 222342 l32i a2, a3, 0x108 4000766d: 402210 and a2, a2, a4 40007670: c02000 memw 40007673: 01b9fa l32r a0, [0x3fffc730] ; 0x40006158 40007676: 0800 l32i.n a0, a0, 0 40007678: 02201e l32i a0, a0, 120 4000767b: 226342 s32i a2, a3, 0x108 4000767e: c00000 callx0 a0 40007681: 0801 l32i.n a0, a1, 0 40007683: 12c110 addi a1, a1, 16 40007686: 0df0 ret.n rom_pbus_xpd_rx_off: 40007688: 12c1f0 addi a1, a1, -16 4000768b: 0901 s32i.n a0, a1, 0 4000768d: 01b2fa l32r a0, [0x3fffc730] ; 0x40006158 40007690: 0c13 movi.n a3, 1 40007692: 022000 l32i a0, a0, 0 40007695: 204220 or a4, a2, a2 40007698: 02202b l32i a0, a0, 172 4000769b: 0c22 movi.n a2, 2 4000769d: c00000 callx0 a0 400076a0: 01aefa l32r a0, [0x3fffc730] ; 0x40006158 400076a3: 0c32 movi.n a2, 3 400076a5: 0800 l32i.n a0, a0, 0 400076a7: 0c13 movi.n a3, 1 400076a9: 02202b l32i a0, a0, 172 400076ac: 0c04 movi.n a4, 0 400076ae: c00000 callx0 a0 400076b1: 01a9fa l32r a0, [0x3fffc730] ; 0x40006158 400076b4: 0c32 movi.n a2, 3 400076b6: 0800 l32i.n a0, a0, 0 400076b8: 0c23 movi.n a3, 2 400076ba: 02202b l32i a0, a0, 172 400076bd: 0c04 movi.n a4, 0 400076bf: c00000 callx0 a0 400076c2: 0801 l32i.n a0, a1, 0 400076c4: 12c110 addi a1, a1, 16 400076c7: 0df0 ret.n 400076c9: 000000 rom_pbus_xpd_rx_on: 400076cc: 12c1f0 addi a1, a1, -16 400076cf: 0901 s32i.n a0, a1, 0 400076d1: 01a1fa l32r a0, [0x3fffc730] ; 0x40006158 400076d4: 0c22 movi.n a2, 2 400076d6: 0800 l32i.n a0, a0, 0 400076d8: 32a001 movi a3, 1 400076db: 02202b l32i a0, a0, 172 400076de: 42a184 movi a4, 0x184 400076e1: c00000 callx0 a0 400076e4: 019dfa l32r a0, [0x3fffc730] ; 0x40006158 400076e7: 0c32 movi.n a2, 3 400076e9: 0800 l32i.n a0, a0, 0 400076eb: 0c23 movi.n a3, 2 400076ed: 02202b l32i a0, a0, 172 400076f0: 0c64 movi.n a4, 6 400076f2: c00000 callx0 a0 400076f5: 0801 l32i.n a0, a1, 0 400076f7: 12c110 addi a1, a1, 16 400076fa: 0df0 ret.n rom_pbus_xpd_tx_off: 400076fc: 12c1f0 addi a1, a1, -16 400076ff: 0901 s32i.n a0, a1, 0 40007701: 0195fa l32r a0, [0x3fffc730] ; 0x40006158 40007704: 0c62 movi.n a2, 6 40007706: 022000 l32i a0, a0, 0 40007709: 32a001 movi a3, 1 4000770c: 02202b l32i a0, a0, 172 4000770f: 0c04 movi.n a4, 0 40007711: c00000 callx0 a0 40007714: 0191fa l32r a0, [0x3fffc730] ; 0x40006158 40007717: 0c12 movi.n a2, 1 40007719: 0800 l32i.n a0, a0, 0 4000771b: 0c13 movi.n a3, 1 4000771d: 02202b l32i a0, a0, 172 40007720: 0cc4 movi.n a4, 12 40007722: c00000 callx0 a0 40007725: 018cfa l32r a0, [0x3fffc730] ; 0x40006158 40007728: 0c22 movi.n a2, 2 4000772a: 0800 l32i.n a0, a0, 0 4000772c: 0c13 movi.n a3, 1 4000772e: 02202b l32i a0, a0, 172 40007731: 0c04 movi.n a4, 0 40007733: c00000 callx0 a0 40007736: 0801 l32i.n a0, a1, 0 40007738: 12c110 addi a1, a1, 16 4000773b: 0df0 ret.n 4000773d: 000000 rom_pbus_xpd_tx_on: 40007740: 0c13 movi.n a3, 1 40007742: 0c14 movi.n a4, 1 40007744: 12c1f0 addi a1, a1, -16 40007747: c921 s32i.n a12, a1, 8 40007749: c183fa l32r a12, [0x3fffc730] ; 0x40006158 4000774c: 0911 s32i.n a0, a1, 4 4000774e: 080c l32i.n a0, a12, 0 40007750: 2901 s32i.n a2, a1, 0 40007752: 02202b l32i a0, a0, 172 40007755: 0c22 movi.n a2, 2 40007757: c00000 callx0 a0 4000775a: 0c72 movi.n a2, 7 4000775c: 080c l32i.n a0, a12, 0 4000775e: 0c13 movi.n a3, 1 40007760: 02202b l32i a0, a0, 172 40007763: 5cf4 movi.n a4, 95 40007765: c00000 callx0 a0 40007768: 4801 l32i.n a4, a1, 0 4000776a: 080c l32i.n a0, a12, 0 4000776c: 0c02 movi.n a2, 0 4000776e: 02202b l32i a0, a0, 172 40007771: 0c13 movi.n a3, 1 40007773: c00000 callx0 a0 40007776: 0c12 movi.n a2, 1 40007778: 080c l32i.n a0, a12, 0 4000777a: 0c13 movi.n a3, 1 4000777c: 02202b l32i a0, a0, 172 4000777f: 42a07f movi a4, 127 40007782: c00000 callx0 a0 40007785: 0c62 movi.n a2, 6 40007787: 080c l32i.n a0, a12, 0 40007789: 0c13 movi.n a3, 1 4000778b: 02202b l32i a0, a0, 172 4000778e: 42a07f movi a4, 127 40007791: c00000 callx0 a0 40007794: c821 l32i.n a12, a1, 8 40007796: 0811 l32i.n a0, a1, 4 40007798: 12c110 addi a1, a1, 16 4000779b: 0df0 ret.n 4000779d: 000000 rom_pbus_xpd_tx_on__low_gain: 400077a0: 0c13 movi.n a3, 1 400077a2: 0c14 movi.n a4, 1 400077a4: 12c1f0 addi a1, a1, -16 400077a7: c921 s32i.n a12, a1, 8 400077a9: c16bfa l32r a12, [0x3fffc730] ; 0x40006158 400077ac: 0911 s32i.n a0, a1, 4 400077ae: 080c l32i.n a0, a12, 0 400077b0: 2901 s32i.n a2, a1, 0 400077b2: 02202b l32i a0, a0, 172 400077b5: 0c22 movi.n a2, 2 400077b7: c00000 callx0 a0 400077ba: 0c72 movi.n a2, 7 400077bc: 080c l32i.n a0, a12, 0 400077be: 0c13 movi.n a3, 1 400077c0: 02202b l32i a0, a0, 172 400077c3: 0c04 movi.n a4, 0 400077c5: c00000 callx0 a0 400077c8: 4801 l32i.n a4, a1, 0 400077ca: 080c l32i.n a0, a12, 0 400077cc: 0c02 movi.n a2, 0 400077ce: 02202b l32i a0, a0, 172 400077d1: 0c13 movi.n a3, 1 400077d3: c00000 callx0 a0 400077d6: 0c12 movi.n a2, 1 400077d8: 080c l32i.n a0, a12, 0 400077da: 0c13 movi.n a3, 1 400077dc: 02202b l32i a0, a0, 172 400077df: 42a07f movi a4, 127 400077e2: c00000 callx0 a0 400077e5: 0c62 movi.n a2, 6 400077e7: 080c l32i.n a0, a12, 0 400077e9: 0c13 movi.n a3, 1 400077eb: 02202b l32i a0, a0, 172 400077ee: 42a07f movi a4, 127 400077f1: c00000 callx0 a0 400077f4: c821 l32i.n a12, a1, 8 400077f6: 0811 l32i.n a0, a1, 4 400077f8: 12c110 addi a1, a1, 16 400077fb: 0df0 ret.n 400077fd: 000000 40007800: c3ffffff ; l32r rom_phy_reset_req: 40007804: 41ffff l32r a4, [0xc3ffffff] ; 0x40007800 40007807: 3155e6 l32r a3, [0x60000600] ; 0x4000115c 4000780a: c02000 memw 4000780d: 222344 l32i a2, a3, 0x110 40007810: 402210 and a2, a2, a4 40007813: c02000 memw 40007816: 226344 s32i a2, a3, 0x110 40007819: 0df0 ret.n 4000781b: 00 rom_restart_cal: 4000781c: 22a062 movi a2, 98 4000781f: 12c1f0 addi a1, a1, -16 40007822: 0901 s32i.n a0, a1, 0 40007824: 014dfa l32r a0, [0x3fffc730] ; 0x40006158 40007827: 0c13 movi.n a3, 1 40007829: 0800 l32i.n a0, a0, 0 4000782b: 0c04 movi.n a4, 0 4000782d: 022026 l32i a0, a0, 152 40007830: 5cf5 movi.n a5, 95 40007832: c00000 callx0 a0 40007835: 22a062 movi a2, 98 40007838: 0148fa l32r a0, [0x3fffc730] ; 0x40006158 4000783b: 0c13 movi.n a3, 1 4000783d: 022000 l32i a0, a0, 0 40007840: 42a000 movi a4, 0 40007843: 022026 l32i a0, a0, 152 40007846: 52a07f movi a5, 127 40007849: c00000 callx0 a0 4000784c: 22a062 movi a2, 98 4000784f: 0142fa l32r a0, [0x3fffc730] ; 0x40006158 40007852: 0c13 movi.n a3, 1 40007854: 0800 l32i.n a0, a0, 0 40007856: 0c04 movi.n a4, 0 40007858: 022026 l32i a0, a0, 152 4000785b: 3cf5 movi.n a5, 63 4000785d: c00000 callx0 a0 40007860: 0801 l32i.n a0, a1, 0 40007862: 12c110 addi a1, a1, 16 40007865: 0df0 ret.n 40007867: 00 rom_rfpll_reset: 40007868: 22a062 movi a2, 98 4000786b: 0c13 movi.n a3, 1 4000786d: 12c1f0 addi a1, a1, -16 40007870: c911 s32i.n a12, a1, 4 40007872: c139fa l32r a12, [0x3fffc730] ; 0x40006158 40007875: 0901 s32i.n a0, a1, 0 40007877: 080c l32i.n a0, a12, 0 40007879: 0ca4 movi.n a4, 10 4000787b: 022026 l32i a0, a0, 152 4000787e: 52a0a6 movi a5, 166 40007881: c00000 callx0 a0 40007884: 22a062 movi a2, 98 40007887: 0c13 movi.n a3, 1 40007889: 022c00 l32i a0, a12, 0 4000788c: 42a00a movi a4, 10 4000788f: 022026 l32i a0, a0, 152 40007892: 52a0a7 movi a5, 167 40007895: c00000 callx0 a0 40007898: 22a062 movi a2, 98 4000789b: 0c13 movi.n a3, 1 4000789d: 022c00 l32i a0, a12, 0 400078a0: 42a00a movi a4, 10 400078a3: 022026 l32i a0, a0, 152 400078a6: 52a0a5 movi a5, 165 400078a9: c00000 callx0 a0 400078ac: 22a063 movi a2, 99 400078af: 0c03 movi.n a3, 0 400078b1: 022c00 l32i a0, a12, 0 400078b4: 42a001 movi a4, 1 400078b7: 022026 l32i a0, a0, 152 400078ba: 52a0f3 movi a5, 243 400078bd: c00000 callx0 a0 400078c0: 22a062 movi a2, 98 400078c3: 0c13 movi.n a3, 1 400078c5: 080c l32i.n a0, a12, 0 400078c7: 0cb4 movi.n a4, 11 400078c9: 022026 l32i a0, a0, 152 400078cc: 52a0c0 movi a5, 192 400078cf: c00000 callx0 a0 400078d2: c811 l32i.n a12, a1, 4 400078d4: 0801 l32i.n a0, a1, 0 400078d6: 12c110 addi a1, a1, 16 400078d9: 0df0 ret.n 400078db: 00 rom_write_rfpll_sdm: 400078dc: 0c03 movi.n a3, 0 400078de: 0c04 movi.n a4, 0 400078e0: 0c75 movi.n a5, 7 400078e2: 12c1f0 addi a1, a1, -16 400078e5: c911 s32i.n a12, a1, 4 400078e7: d921 s32i.n a13, a1, 8 400078e9: d11bfa l32r a13, [0x3fffc730] ; 0x40006158 400078ec: 0901 s32i.n a0, a1, 0 400078ee: 022d00 l32i a0, a13, 0 400078f1: cd02 mov.n a12, a2 400078f3: 022026 l32i a0, a0, 152 400078f6: 22a063 movi a2, 99 400078f9: c00000 callx0 a0 400078fc: 22a063 movi a2, 99 400078ff: 32a000 movi a3, 0 40007902: 022d00 l32i a0, a13, 0 40007905: 0c34 movi.n a4, 3 40007907: 022026 l32i a0, a0, 152 4000790a: 520c00 l8ui a5, a12, 0 4000790d: c00000 callx0 a0 40007910: 22a063 movi a2, 99 40007913: 32a000 movi a3, 0 40007916: 022d00 l32i a0, a13, 0 40007919: 0c44 movi.n a4, 4 4000791b: 022026 l32i a0, a0, 152 4000791e: 520c01 l8ui a5, a12, 1 40007921: c00000 callx0 a0 40007924: 520c02 l8ui a5, a12, 2 40007927: 22a063 movi a2, 99 4000792a: 022d00 l32i a0, a13, 0 4000792d: 0c03 movi.n a3, 0 4000792f: 022026 l32i a0, a0, 152 40007932: 42a005 movi a4, 5 40007935: c00000 callx0 a0 40007938: 22a063 movi a2, 99 4000793b: 0c03 movi.n a3, 0 4000793d: 080d l32i.n a0, a13, 0 4000793f: 0c04 movi.n a4, 0 40007941: 022026 l32i a0, a0, 152 40007944: 1c75 movi.n a5, 23 40007946: c00000 callx0 a0 40007949: c811 l32i.n a12, a1, 4 4000794b: d821 l32i.n a13, a1, 8 4000794d: 0801 l32i.n a0, a1, 0 4000794f: 12c110 addi a1, a1, 16 40007952: 0df0 ret.n 40007954: c0400000 ; l32r 40007958: 40080000 ; l32r 4000795c: 40da0000 ; l32r 40007960: 43800000 ; l32r 40007964: 40e40000 ; l32r rom_rfpll_set_freq: 40007968: 12c1e0 addi a1, a1, -32 4000796b: 3901 s32i.n a3, a1, 0 4000796d: 0911 s32i.n a0, a1, 4 4000796f: d931 s32i.n a13, a1, 12 40007971: c921 s32i.n a12, a1, 8 40007973: e941 s32i.n a14, a1, 16 40007975: cd05 mov.n a12, a5 40007977: e1f7ff l32r a14, [0xc0400000] ; 0x40007954 4000797a: 0c0d movi.n a13, 0 4000797c: 600211 slli a0, a2, 10 4000797f: 0a04 add.n a0, a4, a0 40007981: e02011 slli a2, a0, 2 40007984: 059606 call0 __floatunsidf ; 0x4000e2e8 40007987: 51f4ff l32r a5, [0x40080000] ; 0x40007958 4000798a: 0c04 movi.n a4, 0 4000798c: 452005 call0 __divdf3 ; 0x4000cb94 4000798f: c53c05 call0 __truncdfsf2 ; 0x4000cd5c 40007992: 854605 call0 __extendsfdf2 ; 0x4000cdfc 40007995: 4801 l32i.n a4, a1, 0 40007997: 162406 beqz a4, 0x400079fd 4000799a: 51f0ff l32r a5, [0x40da0000] ; 0x4000795c 4000799d: 42a000 movi a4, 0 400079a0: 051f05 call0 __divdf3 ; 0x4000cb94 400079a3: 4d0d mov.n a4, a13 400079a5: e05e20 or a5, a14, a14 400079a8: c5b804 call0 __adddf3 ; 0x4000c538 400079ab: 053b05 call0 __truncdfsf2 ; 0x4000cd5c 400079ae: ed02 mov.n a14, a2 400079b0: d1ecff l32r a13, [0x43800000] ; 0x40007960 400079b3: 2d0e mov.n a2, a14 400079b5: c5b004 call0 __fixunssfsi ; 0x4000c4c4 400079b8: 224c00 s8i a2, a12, 0 400079bb: 202074 extui a2, a2, 0, 8 400079be: c58e06 call0 __floatsisf ; 0x4000e2ac 400079c1: 3d02 mov.n a3, a2 400079c3: 2d0e mov.n a2, a14 400079c5: 058a04 call0 __subsf3 ; 0x4000c268 400079c8: 3d0d mov.n a3, a13 400079ca: 05a104 call0 __mulsf3 ; 0x4000c3dc 400079cd: ed02 mov.n a14, a2 400079cf: 45af04 call0 __fixunssfsi ; 0x4000c4c4 400079d2: 224c01 s8i a2, a12, 1 400079d5: 202074 extui a2, a2, 0, 8 400079d8: 058d06 call0 __floatsisf ; 0x4000e2ac 400079db: 3d02 mov.n a3, a2 400079dd: 2d0e mov.n a2, a14 400079df: 858804 call0 __subsf3 ; 0x4000c268 400079e2: 3d0d mov.n a3, a13 400079e4: 459f04 call0 __mulsf3 ; 0x4000c3dc 400079e7: c5ad04 call0 __fixunssfsi ; 0x4000c4c4 400079ea: 0811 l32i.n a0, a1, 4 400079ec: d831 l32i.n a13, a1, 12 400079ee: 224c02 s8i a2, a12, 2 400079f1: e841 l32i.n a14, a1, 16 400079f3: c821 l32i.n a12, a1, 8 400079f5: 12c120 addi a1, a1, 32 400079f8: 0df0 ret.n 400079fa: 000000 400079fd: 51d9ff l32r a5, [0x40e40000] ; 0x40007964 40007a00: 42a000 movi a4, 0 40007a03: 051905 call0 __divdf3 ; 0x4000cb94 40007a06: d04d20 or a4, a13, a13 40007a09: e05e20 or a5, a14, a14 40007a0c: 85b204 call0 __adddf3 ; 0x4000c538 40007a0f: c53405 call0 __truncdfsf2 ; 0x4000cd5c 40007a12: ed02 mov.n a14, a2 40007a14: 06e6ff j 0x400079b0 40007a17: 00 40007a18: 01113cf1 ; l32r 40007a1c: 01113cf3 ; l32r 40007a20: 01113cf0 ; l32r 40007a24: 0003ffff ; l32r rom_cal_tos_v50: 40007a28: 8d04 mov.n a8, a4 40007a2a: 12c1d0 addi a1, a1, -48 40007a2d: d971 s32i.n a13, a1, 28 40007a2f: 59b1 s32i.n a5, a1, 44 40007a31: 6941 s32i.n a6, a1, 16 40007a33: 3040f4 extui a4, a3, 0, 16 40007a36: 0951 s32i.n a0, a1, 20 40007a38: 2931 s32i.n a2, a1, 12 40007a3a: c961 s32i.n a12, a1, 24 40007a3c: f991 s32i.n a15, a1, 36 40007a3e: e981 s32i.n a14, a1, 32 40007a40: 4c0f movi.n a15, 64 40007a42: 4c0e movi.n a14, 64 40007a44: c1c5f9 l32r a12, [0x3fffc730] ; 0x40006158 40007a47: 0c02 movi.n a2, 0 40007a49: 080c l32i.n a0, a12, 0 40007a4b: 0c13 movi.n a3, 1 40007a4d: 02202b l32i a0, a0, 172 40007a50: 82610a s32i a8, a1, 40 40007a53: c00000 callx0 a0 40007a56: 28b1 l32i.n a2, a1, 44 40007a58: d13ff1 l32r a13, [0x60000a00] ; 0x40003f54 40007a5b: 16720e beqz a2, 0x40007b46 40007a5e: 1c4c movi.n a12, 20 40007a60: 0c08 movi.n a8, 0 40007a62: 8921 s32i.n a8, a1, 8 40007a64: 01bdf9 l32r a0, [0x3fffc730] ; 0x40006158 40007a67: 0c12 movi.n a2, 1 40007a69: 0800 l32i.n a0, a0, 0 40007a6b: 0c23 movi.n a3, 2 40007a6d: 02202b l32i a0, a0, 172 40007a70: e040f4 extui a4, a14, 0, 16 40007a73: c00000 callx0 a0 40007a76: 01b8f9 l32r a0, [0x3fffc730] ; 0x40006158 40007a79: 0c02 movi.n a2, 0 40007a7b: 0800 l32i.n a0, a0, 0 40007a7d: 0c23 movi.n a3, 2 40007a7f: 02202b l32i a0, a0, 172 40007a82: f040f4 extui a4, a15, 0, 16 40007a85: c00000 callx0 a0 40007a88: c02000 memw 40007a8b: 31e3ff l32r a3, [0x01113cf1] ; 0x40007a18 40007a8e: 326dd3 s32i a3, a13, 0x34c 40007a91: c02000 memw 40007a94: 21e2ff l32r a2, [0x01113cf3] ; 0x40007a1c 40007a97: 226dd3 s32i a2, a13, 0x34c 40007a9a: 28a1 l32i.n a2, a1, 40 40007a9c: c542fb call0 ets_delay_us ; 0x40002ecc 40007a9f: 92a07f movi a9, 127 40007aa2: c02000 memw 40007aa5: 422dd3 l32i a4, a13, 0x34c 40007aa8: 0c15 movi.n a5, 1 40007aaa: 404f05 extui a4, a4, 31, 1 40007aad: 504430 xor a4, a4, a5 40007ab0: c02000 memw 40007ab3: 3161f2 l32r a3, [Vec_base] ; [0x40000000] 0x40004438 40007ab6: 622dd3 l32i a6, a13, 0x34c 40007ab9: 0c0a movi.n a10, 0 40007abb: 306610 and a6, a6, a3 40007abe: 60a583 moveqz a10, a5, a6 40007ac1: 160405 beqz a4, 0x40007b15 40007ac4: 0d09 mov.n a0, a9 40007ac6: fabc add.n a11, a12, a15 40007ac8: 80bb01 slli a11, a11, 24 40007acb: b0b831 srai a11, a11, 24 40007ace: b72902 blt a9, a11, 0x40007ad4 40007ad1: b00b20 or a0, a11, a11 40007ad4: 80f001 slli a15, a0, 24 40007ad7: f0f831 srai a15, a15, 24 40007ada: 16ea04 beqz a10, 0x40007b2c 40007add: 0d09 mov.n a0, a9 40007adf: eaac add.n a10, a12, a14 40007ae1: 80aa01 slli a10, a10, 24 40007ae4: a0a831 srai a10, a10, 24 40007ae7: a72901 blt a9, a10, 0x40007aec 40007aea: 0d0a mov.n a0, a10 40007aec: 80e001 slli a14, a0, 24 40007aef: e0e831 srai a14, a14, 24 40007af2: 0821 l32i.n a0, a1, 8 40007af4: 28b1 l32i.n a2, a1, 44 40007af6: 1b00 addi.n a0, a0, 1 40007af8: 000074 extui a0, a0, 0, 8 40007afb: 0921 s32i.n a0, a1, 8 40007afd: 0022c0 sub a2, a2, a0 40007b00: 261c08 beqi a12, 1, 0x40007b0c 40007b03: c0c121 srai a12, a12, 1 40007b06: 80cc01 slli a12, a12, 24 40007b09: c0c831 srai a12, a12, 24 40007b0c: 5642f5 bnez a2, 0x40007a64 40007b0f: c192f9 l32r a12, [0x3fffc730] ; 0x40006158 40007b12: 060c00 j 0x40007b46 40007b15: c00fc0 sub a0, a15, a12 40007b18: 0c0f movi.n a15, 0 40007b1a: 800001 slli a0, a0, 24 40007b1d: 000831 srai a0, a0, 24 40007b20: 00f0b3 movgez a15, a0, a0 40007b23: 80ff01 slli a15, a15, 24 40007b26: f0f831 srai a15, a15, 24 40007b29: 560afb bnez a10, 0x40007add 40007b2c: c00ec0 sub a0, a14, a12 40007b2f: 0c0e movi.n a14, 0 40007b31: 800001 slli a0, a0, 24 40007b34: 000831 srai a0, a0, 24 40007b37: 00e0b3 movgez a14, a0, a0 40007b3a: 80ee01 slli a14, a14, 24 40007b3d: e0e831 srai a14, a14, 24 40007b40: 86ebff j 0x40007af2 40007b43: 000000 40007b46: 0c12 movi.n a2, 1 40007b48: 0c23 movi.n a3, 2 40007b4a: 080c l32i.n a0, a12, 0 40007b4c: 804e01 slli a4, a14, 24 40007b4f: 404831 srai a4, a4, 24 40007b52: 4901 s32i.n a4, a1, 0 40007b54: 02202b l32i a0, a0, 172 40007b57: 4040f4 extui a4, a4, 0, 16 40007b5a: c00000 callx0 a0 40007b5d: 0c02 movi.n a2, 0 40007b5f: 0c23 movi.n a3, 2 40007b61: 080c l32i.n a0, a12, 0 40007b63: 804f01 slli a4, a15, 24 40007b66: 404831 srai a4, a4, 24 40007b69: 426101 s32i a4, a1, 4 40007b6c: 02202b l32i a0, a0, 172 40007b6f: 4040f4 extui a4, a4, 0, 16 40007b72: c00000 callx0 a0 40007b75: 0c12 movi.n a2, 1 40007b77: 080c l32i.n a0, a12, 0 40007b79: 0c13 movi.n a3, 1 40007b7b: 02202b l32i a0, a0, 172 40007b7e: 42a07f movi a4, 127 40007b81: c00000 callx0 a0 40007b84: 41a7ff l32r a4, [0x01113cf0] ; 0x40007a20 40007b87: c02000 memw 40007b8a: 2831 l32i.n a2, a1, 12 40007b8c: 3841 l32i.n a3, a1, 16 40007b8e: 426dd3 s32i a4, a13, 0x34c 40007b91: f24300 s8i a15, a3, 0 40007b94: e24301 s8i a14, a3, 1 40007b97: bc22 beqz.n a2, 0x40007bcd 40007b99: 61f8fc l32r a6, [0x60009600] ; 0x40006f7c 40007b9c: 91a2ff l32r a9, [0x0003ffff] ; 0x40007a24 40007b9f: 7811 l32i.n a7, a1, 4 40007ba1: 8801 l32i.n a8, a1, 0 40007ba3: e07701 slli a7, a7, 18 40007ba6: 708801 slli a8, a8, 25 40007ba9: c02000 memw 40007bac: 522699 l32i a5, a6, 0x264 40007baf: 905510 and a5, a5, a9 40007bb2: 805520 or a5, a5, a8 40007bb5: 705520 or a5, a5, a7 40007bb8: c02000 memw 40007bbb: 526699 s32i a5, a6, 0x264 40007bbe: c861 l32i.n a12, a1, 24 40007bc0: d871 l32i.n a13, a1, 28 40007bc2: e881 l32i.n a14, a1, 32 40007bc4: f891 l32i.n a15, a1, 36 40007bc6: 0851 l32i.n a0, a1, 20 40007bc8: 12c130 addi a1, a1, 48 40007bcb: 0df0 ret.n 40007bcd: c861 l32i.n a12, a1, 24 40007bcf: d871 l32i.n a13, a1, 28 40007bd1: e881 l32i.n a14, a1, 32 40007bd3: f891 l32i.n a15, a1, 36 40007bd5: 0851 l32i.n a0, a1, 20 40007bd7: 12c130 addi a1, a1, 48 40007bda: 0df0 ret.n 40007bdc: 3fffc850 ; l32r 40007be0: 3fffd920 ; l32r 40007be4: 3fffd92c ; l32r 40007be8: 3fffd934 ; l32r 40007bec: 3fffd96c ; l32r rom_pbus_dco___SA2: 40007bf0: 8d02 mov.n a8, a2 40007bf2: 12c180 addi a1, a1, -128 40007bf5: c981 s32i.n a12, a1, 32 40007bf7: d991 s32i.n a13, a1, 36 40007bf9: f9b1 s32i.n a15, a1, 44 40007bfb: 59f1 s32i.n a5, a1, 60 40007bfd: 626118 s32i a6, a1, 96 40007c00: 0c32 movi.n a2, 3 40007c02: 426116 s32i a4, a1, 88 40007c05: 39d1 s32i.n a3, a1, 52 40007c07: e9a1 s32i.n a14, a1, 40 40007c09: e153f9 l32r a14, [0x3fffc730] ; 0x40006158 40007c0c: 0971 s32i.n a0, a1, 28 40007c0e: 080e l32i.n a0, a14, 0 40007c10: 32a001 movi a3, 1 40007c13: 02202c l32i a0, a0, 176 40007c16: 826117 s32i a8, a1, 92 40007c19: c00000 callx0 a0 40007c1c: 226115 s32i a2, a1, 84 40007c1f: 32a07c movi a3, 124 40007c22: 304210 and a4, a2, a3 40007c25: 42611b s32i a4, a1, 108 40007c28: 278302 bany a3, a2, 0x40007c2e 40007c2b: 469e00 j 0x40007ea8 40007c2e: 0c0c movi.n a12, 0 40007c30: 52211b l32i a5, a1, 108 40007c33: 50d004 extui a13, a5, 0, 1 40007c36: dacc add.n a12, a12, a13 40007c38: 505141 srli a5, a5, 1 40007c3b: 52611b s32i a5, a1, 108 40007c3e: c0c074 extui a12, a12, 0, 8 40007c41: 56b5fe bnez a5, 0x40007c30 40007c44: 080e l32i.n a0, a14, 0 40007c46: 0c32 movi.n a2, 3 40007c48: 02202c l32i a0, a0, 176 40007c4b: 0c23 movi.n a3, 2 40007c4d: c00000 callx0 a0 40007c50: 0c23 movi.n a3, 2 40007c52: 42a100 movi a4, 0x100 40007c55: 080e l32i.n a0, a14, 0 40007c57: dd02 mov.n a13, a2 40007c59: 02202b l32i a0, a0, 172 40007c5c: 0c42 movi.n a2, 4 40007c5e: c00000 callx0 a0 40007c61: 0c52 movi.n a2, 5 40007c63: 022e00 l32i a0, a14, 0 40007c66: 32a002 movi a3, 2 40007c69: 02202b l32i a0, a0, 172 40007c6c: 42a100 movi a4, 0x100 40007c6f: c00000 callx0 a0 40007c72: 6b2c addi.n a2, a12, 6 40007c74: 0c10 movi.n a0, 1 40007c76: 226114 s32i a2, a1, 80 40007c79: 202074 extui a2, a2, 0, 8 40007c7c: 22611b s32i a2, a1, 108 40007c7f: b64c01 bltui a12, 4, 0x40007c84 40007c82: 0c00 movi.n a0, 0 40007c84: b63c09 bltui a12, 3, 0x40007c91 40007c87: 0c54 movi.n a4, 5 40007c89: 0ca8 movi.n a8, 10 40007c8b: 008493 movnez a8, a4, a0 40007c8e: 460000 j 0x40007c93 40007c91: 0c28 movi.n a8, 2 40007c93: 0c06 movi.n a6, 0 40007c95: 21d1ff l32r a2, [0x3fffc850] ; 0x40007bdc 40007c98: 0c53 movi.n a3, 5 40007c9a: b22114 l32i a11, a1, 80 40007c9d: c961 s32i.n a12, a1, 24 40007c9f: d0f374 extui a15, a13, 3, 8 40007ca2: 0c25 movi.n a5, 2 40007ca4: 0c0a movi.n a10, 0 40007ca6: 804074 extui a4, a8, 0, 8 40007ca9: 42611a s32i a4, a1, 104 40007cac: a26119 s32i a10, a1, 100 40007caf: 526112 s32i a5, a1, 72 40007cb2: d2a200 movi a13, 0x200 40007cb5: c2a200 movi a12, 0x200 40007cb8: f9c1 s32i.n a15, a1, 48 40007cba: b0b074 extui a11, a11, 0, 8 40007cbd: 003593 movnez a3, a5, a0 40007cc0: 39e1 s32i.n a3, a1, 56 40007cc2: b26110 s32i a11, a1, 64 40007cc5: 2aff add.n a15, a15, a2 40007cc7: f26111 s32i a15, a1, 68 40007cca: f8d1 l32i.n a15, a1, 52 40007ccc: 522119 l32i a5, a1, 100 40007ccf: 62611c s32i a6, a1, 112 40007cd2: f0f5a0 addx4 a15, a5, a15 40007cd5: 52c501 addi a5, a5, 1 40007cd8: 526113 s32i a5, a1, 76 40007cdb: 505074 extui a5, a5, 0, 8 40007cde: 52611d s32i a5, a1, 116 40007ce1: 22a004 movi a2, 4 40007ce4: 32211d l32i a3, a1, 116 40007ce7: 080e l32i.n a0, a14, 0 40007ce9: 1b4c addi.n a4, a12, 1 40007ceb: 405121 srai a5, a4, 1 40007cee: 525f00 s16i a5, a15, 0 40007cf1: 02202b l32i a0, a0, 172 40007cf4: 4041f4 extui a4, a4, 1, 16 40007cf7: c00000 callx0 a0 40007cfa: 0c52 movi.n a2, 5 40007cfc: 32211d l32i a3, a1, 116 40007cff: 080e l32i.n a0, a14, 0 40007d01: 1b4d addi.n a4, a13, 1 40007d03: 405121 srai a5, a4, 1 40007d06: 525f01 s16i a5, a15, 2 40007d09: 02202b l32i a0, a0, 172 40007d0c: 4041f4 extui a4, a4, 1, 16 40007d0f: c00000 callx0 a0 40007d12: 222116 l32i a2, a1, 88 40007d15: 451bfb call0 ets_delay_us ; 0x40002ecc 40007d18: 0c12 movi.n a2, 1 40007d1a: 080e l32i.n a0, a14, 0 40007d1c: 322117 l32i a3, a1, 92 40007d1f: 0840 l32i.n a0, a0, 16 40007d21: 42c110 addi a4, a1, 16 40007d24: c00000 callx0 a0 40007d27: 222118 l32i a2, a1, 96 40007d2a: 9c32 beqz.n a2, 0x40007d41 ; format follows --- " (%d,%d)" 40007d2c: 21adff l32r a2, [0x3fffd920] ; 0x40007be0 40007d2f: 3d0c mov.n a3, a12 40007d31: d04d20 or a4, a13, a13 40007d34: c5fdf9 call0 eprintf ; 0x40001d14 ; format follows --- "%d,%d " 40007d37: 21abff l32r a2, [0x3fffd92c] ; 0x40007be4 40007d3a: 3841 l32i.n a3, a1, 16 40007d3c: 4851 l32i.n a4, a1, 20 40007d3e: 45fdf9 call0 eprintf ; 0x40001d14 40007d41: 080e l32i.n a0, a14, 0 40007d43: 0800 l32i.n a0, a0, 0 40007d45: 2841 l32i.n a2, a1, 16 40007d47: c00000 callx0 a0 40007d4a: 0c00 movi.n a0, 0 40007d4c: 32211a l32i a3, a1, 104 40007d4f: 92a3ff movi a9, 0x3ff 40007d52: 27a33e bge a3, a2, 0x40007d94 40007d55: a851 l32i.n a10, a1, 20 40007d57: 422119 l32i a4, a1, 100 40007d5a: 8841 l32i.n a8, a1, 16 40007d5c: 16c404 beqz a4, 0x40007dac 40007d5f: 42211b l32i a4, a1, 108 40007d62: a02aa0 addx4 a2, a10, a10 40007d65: 8038a0 addx4 a3, a8, a8 40007d68: d03311 slli a3, a3, 3 40007d6b: d02211 slli a2, a2, 3 40007d6e: 000440 ssr a4 40007d71: 2020b1 sra a2, a2 40007d74: 3030b1 sra a3, a3 40007d77: 30ccc0 sub a12, a12, a3 40007d7a: 20ddc0 sub a13, a13, a2 40007d7d: 00dd11 slli a13, a13, 16 40007d80: 00cc11 slli a12, a12, 16 40007d83: c0c031 srai a12, a12, 16 40007d86: d0d031 srai a13, a13, 16 40007d89: ad09 mov.n a10, a9 40007d8b: c72953 blt a9, a12, 0x40007de2 40007d8e: ad0c mov.n a10, a12 40007d90: 861300 j 0x40007de2 40007d93: 00 40007d94: 080e l32i.n a0, a14, 0 40007d96: 0800 l32i.n a0, a0, 0 40007d98: 2851 l32i.n a2, a1, 20 40007d9a: c00000 callx0 a0 40007d9d: 0c00 movi.n a0, 0 40007d9f: 32211a l32i a3, a1, 104 40007da2: 92a3ff movi a9, 0x3ff 40007da5: 2723ac blt a3, a2, 0x40007d55 40007da8: 061900 j 0x40007e10 40007dab: 00 40007dac: 322114 l32i a3, a1, 80 40007daf: 222111 l32i a2, a1, 68 40007db2: 303074 extui a3, a3, 0, 8 40007db5: 32611b s32i a3, a1, 108 40007db8: 322110 l32i a3, a1, 64 40007dbb: 220200 l8ui a2, a2, 0 40007dbe: 000340 ssr a3 40007dc1: 203882 mull a3, a8, a2 40007dc4: 202a82 mull a2, a10, a2 40007dc7: 3030b1 sra a3, a3 40007dca: 30ccc0 sub a12, a12, a3 40007dcd: 2020b1 sra a2, a2 40007dd0: 20ddc0 sub a13, a13, a2 40007dd3: 00cc11 slli a12, a12, 16 40007dd6: c0c031 srai a12, a12, 16 40007dd9: 00dd11 slli a13, a13, 16 40007ddc: d0d031 srai a13, a13, 16 40007ddf: 86e9ff j 0x40007d89 40007de2: cd00 mov.n a12, a0 40007de4: 22211c l32i a2, a1, 112 40007de7: a0cab3 movgez a12, a10, a10 40007dea: 90a920 or a10, a9, a9 40007ded: 00cc11 slli a12, a12, 16 40007df0: 1b32 addi.n a3, a2, 1 40007df2: 302074 extui a2, a3, 0, 8 40007df5: c0c031 srai a12, a12, 16 40007df8: 22611c s32i a2, a1, 112 40007dfb: 22c2f4 addi a2, a2, -12 40007dfe: d72902 blt a9, a13, 0x40007e04 40007e01: d0ad20 or a10, a13, a13 40007e04: a00ab3 movgez a0, a10, a10 40007e07: 00d011 slli a13, a0, 16 40007e0a: d0d031 srai a13, a13, 16 40007e0d: 5602ed bnez a2, 0x40007ce1 40007e10: 98f1 l32i.n a9, a1, 60 40007e12: 422115 l32i a4, a1, 84 40007e15: 58e1 l32i.n a5, a1, 56 40007e17: 407404 extui a7, a4, 4, 1 40007e1a: 406214 extui a6, a4, 2, 2 40007e1d: 505074 extui a5, a5, 0, 8 40007e20: 52611a s32i a5, a1, 104 40007e23: 7a66 add.n a6, a6, a7 40007e25: 604074 extui a4, a6, 0, 8 40007e28: 426115 s32i a4, a1, 84 40007e2b: 163407 beqz a4, 0x40007ea2 40007e2e: 822115 l32i a8, a1, 84 40007e31: 0c50 movi.n a0, 5 40007e33: b62801 bltui a8, 2, 0x40007e38 40007e36: 0c60 movi.n a0, 6 40007e38: 00a074 extui a10, a0, 0, 8 40007e3b: a2611b s32i a10, a1, 108 40007e3e: 9ca9 beqz.n a9, 0x40007e5c ; Format follows: "stage %d: CGAIN=%d FGAIN=%d, DC_OS=(%d,%d), DAC=(%d,%d) " 40007e40: 216aff l32r a2, [0x3fffd934] ; 0x40007be8 40007e43: 322113 l32i a3, a1, 76 40007e46: 4861 l32i.n a4, a1, 24 40007e48: 58c1 l32i.n a5, a1, 48 40007e4a: 7851 l32i.n a7, a1, 20 40007e4c: 6841 l32i.n a6, a1, 16 40007e4e: c29f00 l16si a12, a15, 0 40007e51: c26100 s32i a12, a1, 0 40007e54: b29f01 l16si a11, a15, 2 40007e57: b911 s32i.n a11, a1, 4 40007e59: 85ebf9 call0 eprintf ; 0x40001d14 40007e5c: d22118 l32i a13, a1, 96 40007e5f: 3df0 nop.n 40007e61: 8c4d beqz.n a13, 0x40007e69 ; Format follows: "\n" 40007e63: 2162ff l32r a2, [0x3fffd96c] ; 0x40007bec 40007e66: c5eaf9 call0 eprintf ; 0x40001d14 40007e69: d2a200 movi a13, 0x200 40007e6c: c2a200 movi a12, 0x200 40007e6f: 0c06 movi.n a6, 0 40007e71: f22112 l32i a15, a1, 72 40007e74: 022113 l32i a0, a1, 76 40007e77: f2cfff addi a15, a15, -1 40007e7a: 000074 extui a0, a0, 0, 8 40007e7d: 026119 s32i a0, a1, 100 40007e80: f26112 s32i a15, a1, 72 40007e83: 563fe4 bnez a15, 0x40007cca 40007e86: 22210f l32i a2, a1, 60 40007e89: 8c42 beqz.n a2, 0x40007e91 ; Format follows: "\n" 40007e8b: 2158ff l32r a2, [0x3fffd96c] ; 0x40007bec 40007e8e: 45e8f9 call0 eprintf ; 0x40001d14 40007e91: c881 l32i.n a12, a1, 32 40007e93: d891 l32i.n a13, a1, 36 40007e95: e8a1 l32i.n a14, a1, 40 40007e97: f8b1 l32i.n a15, a1, 44 40007e99: 22a080 movi a2, 128 40007e9c: 0871 l32i.n a0, a1, 28 40007e9e: 2a11 add.n a1, a1, a2 40007ea0: 0df0 ret.n 40007ea2: 0c40 movi.n a0, 4 40007ea4: 06e4ff j 0x40007e38 40007ea7: 00 40007ea8: 0c0c movi.n a12, 0 40007eaa: 8665ff j 0x40007c44 40007ead: 000000 40007eb0: 3fffd970 ; l32r rom_rfcal_pwrctrl: 40007eb4: 12c1a0 addi a1, a1, -96 40007eb7: f981 s32i.n a15, a1, 32 40007eb9: 39c1 s32i.n a3, a1, 48 40007ebb: 49e1 s32i.n a4, a1, 56 40007ebd: 526110 s32i a5, a1, 64 40007ec0: 79d1 s32i.n a7, a1, 52 40007ec2: e971 s32i.n a14, a1, 28 40007ec4: d961 s32i.n a13, a1, 24 40007ec6: c951 s32i.n a12, a1, 20 40007ec8: c1a4f8 l32r a12, [0x3fffc730] ; 0x40006158 40007ecb: 0941 s32i.n a0, a1, 16 40007ecd: 080c l32i.n a0, a12, 0 40007ecf: dd06 mov.n a13, a6 40007ed1: 022028 l32i a0, a0, 160 40007ed4: 20e220 or a14, a2, a2 40007ed7: c00000 callx0 a0 40007eda: 080c l32i.n a0, a12, 0 40007edc: 022030 l32i a0, a0, 192 40007edf: 22a001 movi a2, 1 40007ee2: c00000 callx0 a0 40007ee5: 080c l32i.n a0, a12, 0 40007ee7: 022033 l32i a0, a0, 204 40007eea: d02044 extui a2, a13, 0, 5 40007eed: c00000 callx0 a0 40007ef0: 080c l32i.n a0, a12, 0 40007ef2: 0860 l32i.n a0, a0, 24 40007ef4: 0c02 movi.n a2, 0 40007ef6: c00000 callx0 a0 40007ef9: 28e1 l32i.n a2, a1, 56 40007efb: 169211 beqz a2, 0x40008018 40007efe: e9a1 s32i.n a14, a1, 40 40007f00: d05024 extui a5, a13, 0, 3 40007f03: d04314 extui a4, a13, 3, 2 40007f06: 321130 l16ui a3, a1, 96 40007f09: 326116 s32i a3, a1, 88 40007f0c: 404490 addx2 a4, a4, a4 40007f0f: 504490 addx2 a4, a4, a5 40007f12: 0c0d movi.n a13, 0 40007f14: 521132 l16ui a5, a1, 100 40007f17: 404074 extui a4, a4, 0, 8 40007f1a: 49f1 s32i.n a4, a1, 60 40007f1c: 5991 s32i.n a5, a1, 36 40007f1e: 420168 l8ui a4, a1, 104 40007f21: 49b1 s32i.n a4, a1, 44 40007f23: c60900 j 0x40007f4e 40007f26: 62a000 movi a6, 0 40007f29: 624700 s8i a6, a7, 0 40007f2c: 161501 beqz a5, 0x40007f41 40007f2f: 422114 l32i a4, a1, 80 ; Format follows: "pwctrl: rate_i=%d, target_power=%d, detect_power=%d" 40007f32: 21dfff l32r a2, [0x3fffd970] ; 0x40007eb0 40007f35: d03d20 or a3, a13, a13 40007f38: 805001 slli a5, a0, 24 40007f3b: 505831 srai a5, a5, 24 40007f3e: 45ddf9 call0 eprintf ; 0x40001d14 40007f41: 68e1 l32i.n a6, a1, 56 40007f43: 1bdd addi.n a13, a13, 1 40007f45: d0d074 extui a13, a13, 0, 8 40007f48: d066c0 sub a6, a6, a13 40007f4b: 16960c beqz a6, 0x40008018 40007f4e: 0c0e movi.n a14, 0 40007f50: 0c0f movi.n a15, 0 40007f52: 08c1 l32i.n a0, a1, 48 40007f54: 222110 l32i a2, a1, 64 40007f57: d00080 add a0, a0, a13 40007f5a: 020000 l8ui a0, a0, 0 40007f5d: 026114 s32i a0, a1, 80 40007f60: 2000c0 sub a0, a0, a2 40007f63: 026112 s32i a0, a1, 72 40007f66: 28f1 l32i.n a2, a1, 60 40007f68: 322112 l32i a3, a1, 72 40007f6b: 080c l32i.n a0, a12, 0 40007f6d: e033c0 sub a3, a3, a14 40007f70: 0870 l32i.n a0, a0, 28 40007f72: 303074 extui a3, a3, 0, 8 40007f75: c00000 callx0 a0 40007f78: 226111 s32i a2, a1, 68 40007f7b: 080c l32i.n a0, a12, 0 40007f7d: 202074 extui a2, a2, 0, 8 40007f80: 022014 l32i a0, a0, 80 40007f83: 226113 s32i a2, a1, 76 40007f86: c00000 callx0 a0 40007f89: 0c05 movi.n a5, 0 40007f8b: 0c06 movi.n a6, 0 40007f8d: 0c07 movi.n a7, 0 40007f8f: 4d02 mov.n a4, a2 40007f91: 0c03 movi.n a3, 0 40007f93: 3921 s32i.n a3, a1, 8 40007f95: 3911 s32i.n a3, a1, 4 40007f97: 3901 s32i.n a3, a1, 0 40007f99: 080c l32i.n a0, a12, 0 40007f9b: 0c12 movi.n a2, 1 40007f9d: 02201a l32i a0, a0, 104 40007fa0: 32210a l32i a3, a1, 40 40007fa3: c00000 callx0 a0 40007fa6: bcad beqz.n a13, 0x40007fe4 40007fa8: 080c l32i.n a0, a12, 0 40007faa: 08b0 l32i.n a0, a0, 44 40007fac: 222116 l32i a2, a1, 88 40007faf: c00000 callx0 a0 40007fb2: 080c l32i.n a0, a12, 0 40007fb4: 226115 s32i a2, a1, 84 40007fb7: 02200b l32i a0, a0, 44 40007fba: 222116 l32i a2, a1, 88 40007fbd: c00000 callx0 a0 40007fc0: 022115 l32i a0, a1, 84 40007fc3: 622114 l32i a6, a1, 80 40007fc6: 2a00 add.n a0, a0, a2 40007fc8: 000011 slli a0, a0, 16 40007fcb: 000031 srai a0, a0, 16 40007fce: 4b00 addi.n a0, a0, 4 40007fd0: 000321 srai a0, a0, 3 40007fd3: 6060c0 sub a6, a0, a6 40007fd6: 006611 slli a6, a6, 16 40007fd9: 606031 srai a6, a6, 16 40007fdc: dc06 bnez.n a6, 0x40007ff0 40007fde: c60600 j 0x40007ffd 40007fe1: 000000 40007fe4: 560ffc bnez a15, 0x40007fa8 40007fe7: 2891 l32i.n a2, a1, 36 40007fe9: 05eefa call0 ets_delay_us ; 0x40002ecc 40007fec: 06eeff j 0x40007fa8 40007fef: 00 40007ff0: eae6 add.n a14, a6, a14 40007ff2: 1bff addi.n a15, a15, 1 40007ff4: f0f074 extui a15, a15, 0, 8 40007ff7: 22cffc addi a2, a15, -4 40007ffa: 5682f6 bnez a2, 0x40007f66 40007ffd: 58b1 l32i.n a5, a1, 44 40007fff: 322110 l32i a3, a1, 64 40008002: 78d1 l32i.n a7, a1, 52 40008004: 222113 l32i a2, a1, 76 40008007: da77 add.n a7, a7, a13 40008009: 37b202 bgeu a2, a3, 0x4000800f 4000800c: 86c5ff j 0x40007f26 4000800f: 622111 l32i a6, a1, 68 40008012: 3066c0 sub a6, a6, a3 40008015: 06c4ff j 0x40007f29 40008018: 080c l32i.n a0, a12, 0 4000801a: 02201b l32i a0, a0, 108 4000801d: 0c12 movi.n a2, 1 4000801f: c00000 callx0 a0 40008022: 080c l32i.n a0, a12, 0 40008024: 022032 l32i a0, a0, 200 40008027: c00000 callx0 a0 4000802a: 080c l32i.n a0, a12, 0 4000802c: 022031 l32i a0, a0, 196 4000802f: c00000 callx0 a0 40008032: 080c l32i.n a0, a12, 0 40008034: 02202f l32i a0, a0, 188 40008037: c00000 callx0 a0 4000803a: c851 l32i.n a12, a1, 20 4000803c: d861 l32i.n a13, a1, 24 4000803e: e871 l32i.n a14, a1, 28 40008040: f881 l32i.n a15, a1, 32 40008042: 0841 l32i.n a0, a1, 16 40008044: 12c160 addi a1, a1, 96 40008047: 0df0 ret.n 40008049: 000000 rom_rfcal_rxiq: 4000804c: 9d05 mov.n a9, a5 4000804e: ad03 mov.n a10, a3 40008050: 12c1b0 addi a1, a1, -80 40008053: d9e1 s32i.n a13, a1, 56 40008055: e9f1 s32i.n a14, a1, 60 40008057: 7981 s32i.n a7, a1, 32 40008059: 0c03 movi.n a3, 0 4000805b: 0c05 movi.n a5, 0 4000805d: f26110 s32i a15, a1, 64 40008060: 09c1 s32i.n a0, a1, 48 40008062: c9d1 s32i.n a12, a1, 52 40008064: 626113 s32i a6, a1, 76 40008067: 2951 s32i.n a2, a1, 20 40008069: 4961 s32i.n a4, a1, 24 4000806b: 22a077 movi a2, 119 4000806e: 1c04 movi.n a4, 16 40008070: 0c06 movi.n a6, 0 40008072: c139f8 l32r a12, [0x3fffc730] ; 0x40006158 40008075: a26111 s32i a10, a1, 68 40008078: 080c l32i.n a0, a12, 0 4000807a: 926112 s32i a9, a1, 72 4000807d: 022025 l32i a0, a0, 148 40008080: f22113 l32i a15, a1, 76 40008083: c00000 callx0 a0 40008086: 0c03 movi.n a3, 0 40008088: 0cf4 movi.n a4, 15 4000808a: 0c65 movi.n a5, 6 4000808c: 0c66 movi.n a6, 6 4000808e: 080c l32i.n a0, a12, 0 40008090: 20e220 or a14, a2, a2 40008093: 022025 l32i a0, a0, 148 40008096: 22a077 movi a2, 119 40008099: c00000 callx0 a0 4000809c: 0c03 movi.n a3, 0 4000809e: 1c84 movi.n a4, 24 400080a0: 0c55 movi.n a5, 5 400080a2: 0c56 movi.n a6, 5 400080a4: 080c l32i.n a0, a12, 0 400080a6: dd02 mov.n a13, a2 400080a8: 022025 l32i a0, a0, 148 400080ab: 22a077 movi a2, 119 400080ae: c00000 callx0 a0 400080b1: 0c03 movi.n a3, 0 400080b3: 1c84 movi.n a4, 24 400080b5: 0c35 movi.n a5, 3 400080b7: 0c36 movi.n a6, 3 400080b9: 080c l32i.n a0, a12, 0 400080bb: 2991 s32i.n a2, a1, 36 400080bd: 022025 l32i a0, a0, 148 400080c0: 22a077 movi a2, 119 400080c3: c00000 callx0 a0 400080c6: 0c03 movi.n a3, 0 400080c8: 0c94 movi.n a4, 9 400080ca: 0c75 movi.n a5, 7 400080cc: 0c06 movi.n a6, 0 400080ce: 080c l32i.n a0, a12, 0 400080d0: 22610a s32i a2, a1, 40 400080d3: 022025 l32i a0, a0, 148 400080d6: 22a077 movi a2, 119 400080d9: c00000 callx0 a0 400080dc: 080c l32i.n a0, a12, 0 400080de: 2971 s32i.n a2, a1, 28 400080e0: 022010 l32i a0, a0, 64 400080e3: 22a001 movi a2, 1 400080e6: c00000 callx0 a0 400080e9: e24110 s8i a14, a1, 16 400080ec: d24111 s8i a13, a1, 17 400080ef: 8cdf beqz.n a15, 0x40008100 400080f1: 022c00 l32i a0, a12, 0 400080f4: 22c110 addi a2, a1, 16 400080f7: 022045 l32i a0, a0, 0x114 400080fa: 32c111 addi a3, a1, 17 400080fd: c00000 callx0 a0 40008100: 22a077 movi a2, 119 40008103: 0c03 movi.n a3, 0 40008105: 1c04 movi.n a4, 16 40008107: 0c25 movi.n a5, 2 40008109: 080c l32i.n a0, a12, 0 4000810b: 0c26 movi.n a6, 2 4000810d: 022027 l32i a0, a0, 156 40008110: 72a001 movi a7, 1 40008113: c00000 callx0 a0 40008116: e9b1 s32i.n a14, a1, 44 40008118: 22a077 movi a2, 119 4000811b: 0c03 movi.n a3, 0 4000811d: 1c84 movi.n a4, 24 4000811f: 0c75 movi.n a5, 7 40008121: 080c l32i.n a0, a12, 0 40008123: 0c17 movi.n a7, 1 40008125: 920110 l8ui a9, a1, 16 40008128: 820111 l8ui a8, a1, 17 4000812b: e099c0 sub a9, a9, a14 4000812e: d088c0 sub a8, a8, a13 40008131: 808793 movnez a8, a7, a8 40008134: 909793 movnez a9, a7, a9 40008137: 924110 s8i a9, a1, 16 4000813a: 824111 s8i a8, a1, 17 4000813d: 022027 l32i a0, a0, 156 40008140: 0c76 movi.n a6, 7 40008142: c00000 callx0 a0 40008145: 080c l32i.n a0, a12, 0 40008147: e22111 l32i a14, a1, 68 4000814a: 022014 l32i a0, a0, 80 4000814d: 2861 l32i.n a2, a1, 24 4000814f: c00000 callx0 a0 40008152: 0c05 movi.n a5, 0 40008154: 0c06 movi.n a6, 0 40008156: 0c07 movi.n a7, 0 40008158: 4d02 mov.n a4, a2 4000815a: 0c03 movi.n a3, 0 4000815c: 3921 s32i.n a3, a1, 8 4000815e: 3911 s32i.n a3, a1, 4 40008160: 3901 s32i.n a3, a1, 0 40008162: 080c l32i.n a0, a12, 0 40008164: 0c12 movi.n a2, 1 40008166: 02201a l32i a0, a0, 104 40008169: 3d0e mov.n a3, a14 4000816b: c00000 callx0 a0 4000816e: 2851 l32i.n a2, a1, 20 40008170: 7881 l32i.n a7, a1, 32 40008172: 62c113 addi a6, a1, 19 40008175: 420111 l8ui a4, a1, 17 40008178: 5891 l32i.n a5, a1, 36 4000817a: 320110 l8ui a3, a1, 16 4000817d: ed05 mov.n a14, a5 4000817f: f911 s32i.n a15, a1, 4 40008181: 6901 s32i.n a6, a1, 0 40008183: 7921 s32i.n a7, a1, 8 40008185: 72c112 addi a7, a1, 18 40008188: 080c l32i.n a0, a12, 0 4000818a: 62210a l32i a6, a1, 40 4000818d: 022043 l32i a0, a0, 0x10c 40008190: 60f620 or a15, a6, a6 40008193: c00000 callx0 a0 40008196: 080c l32i.n a0, a12, 0 40008198: 02201b l32i a0, a0, 108 4000819b: 22a001 movi a2, 1 4000819e: c00000 callx0 a0 400081a1: 78b1 l32i.n a7, a1, 44 400081a3: 22a077 movi a2, 119 400081a6: 0c03 movi.n a3, 0 400081a8: 1c04 movi.n a4, 16 400081aa: 080c l32i.n a0, a12, 0 400081ac: 0c05 movi.n a5, 0 400081ae: 022027 l32i a0, a0, 156 400081b1: 0c06 movi.n a6, 0 400081b3: c00000 callx0 a0 400081b6: 7d0d mov.n a7, a13 400081b8: 22a077 movi a2, 119 400081bb: 0c03 movi.n a3, 0 400081bd: 0cf4 movi.n a4, 15 400081bf: 080c l32i.n a0, a12, 0 400081c1: 0c65 movi.n a5, 6 400081c3: 022027 l32i a0, a0, 156 400081c6: 62a006 movi a6, 6 400081c9: c00000 callx0 a0 400081cc: 7d0e mov.n a7, a14 400081ce: 22a077 movi a2, 119 400081d1: 0c03 movi.n a3, 0 400081d3: 1c84 movi.n a4, 24 400081d5: 080c l32i.n a0, a12, 0 400081d7: 0c55 movi.n a5, 5 400081d9: 022027 l32i a0, a0, 156 400081dc: 0c56 movi.n a6, 5 400081de: c00000 callx0 a0 400081e1: 7d0f mov.n a7, a15 400081e3: 22a077 movi a2, 119 400081e6: 0c03 movi.n a3, 0 400081e8: 1c84 movi.n a4, 24 400081ea: 0c35 movi.n a5, 3 400081ec: 080c l32i.n a0, a12, 0 400081ee: 0c36 movi.n a6, 3 400081f0: 022027 l32i a0, a0, 156 400081f3: d871 l32i.n a13, a1, 28 400081f5: c00000 callx0 a0 400081f8: 7d0d mov.n a7, a13 400081fa: 22a077 movi a2, 119 400081fd: 0c03 movi.n a3, 0 400081ff: 0c94 movi.n a4, 9 40008201: 080c l32i.n a0, a12, 0 40008203: 0c75 movi.n a5, 7 40008205: 022027 l32i a0, a0, 156 40008208: 0c06 movi.n a6, 0 4000820a: c00000 callx0 a0 4000820d: 22a077 movi a2, 119 40008210: 0c03 movi.n a3, 0 40008212: 1c84 movi.n a4, 24 40008214: 0c75 movi.n a5, 7 40008216: 022c00 l32i a0, a12, 0 40008219: 0c76 movi.n a6, 7 4000821b: 022027 l32i a0, a0, 156 4000821e: 72a000 movi a7, 0 40008221: c00000 callx0 a0 40008224: 22a077 movi a2, 119 40008227: 0c03 movi.n a3, 0 40008229: 1c04 movi.n a4, 16 4000822b: 0c25 movi.n a5, 2 4000822d: 080c l32i.n a0, a12, 0 4000822f: 0c26 movi.n a6, 2 40008231: 022027 l32i a0, a0, 156 40008234: 0c07 movi.n a7, 0 40008236: c00000 callx0 a0 40008239: 080c l32i.n a0, a12, 0 4000823b: d22112 l32i a13, a1, 72 4000823e: 022010 l32i a0, a0, 64 40008241: 0c02 movi.n a2, 0 40008243: c00000 callx0 a0 40008246: 08c1 l32i.n a0, a1, 48 40008248: c8d1 l32i.n a12, a1, 52 4000824a: e8f1 l32i.n a14, a1, 60 4000824c: 320112 l8ui a3, a1, 18 4000824f: f22110 l32i a15, a1, 64 40008252: 324d00 s8i a3, a13, 0 40008255: 220113 l8ui a2, a1, 19 40008258: 224d01 s8i a2, a13, 1 4000825b: d8e1 l32i.n a13, a1, 56 4000825d: 12c150 addi a1, a1, 80 40008260: 0df0 ret.n 40008262: 0000 rom_rfcal_rxiq_set_reg: 40008264: 1cf7 movi.n a7, 31 40008266: 12c1e0 addi a1, a1, -32 40008269: c931 s32i.n a12, a1, 12 4000826b: e951 s32i.n a14, a1, 20 4000826d: 5911 s32i.n a5, a1, 4 4000826f: 0921 s32i.n a0, a1, 8 40008271: d941 s32i.n a13, a1, 16 40008273: 0cf0 movi.n a0, 15 40008275: dd04 mov.n a13, a4 40008277: 407093 movnez a7, a0, a4 4000827a: 01b7f7 l32r a0, [0x3fffc730] ; 0x40006158 4000827d: 16350b beqz a5, 0x40008334 40008280: 96420d bltz a2, 0x40008358 40008283: e2a000 movi a14, 0 40008286: 20c220 or a12, a2, a2 40008289: e24300 s8i a14, a3, 0 4000828c: 77ac02 bge a12, a7, 0x40008292 4000828f: c07c20 or a7, a12, a12 40008292: 9800 l32i.n a9, a0, 0 40008294: 80c701 slli a12, a7, 24 40008297: c0c831 srai a12, a12, 24 4000829a: 922927 l32i a9, a9, 156 4000829d: 167d0c beqz a13, 0x40008368 400082a0: 22a077 movi a2, 119 400082a3: 0c03 movi.n a3, 0 400082a5: 1c84 movi.n a4, 24 400082a7: 0c55 movi.n a5, 5 400082a9: 0c56 movi.n a6, 5 400082ab: e07e20 or a7, a14, a14 400082ae: c00900 callx0 a9 400082b1: 01a9f7 l32r a0, [0x3fffc730] ; 0x40006158 400082b4: bc4d beqz.n a13, 0x400082ec 400082b6: 22a077 movi a2, 119 400082b9: 0c03 movi.n a3, 0 400082bb: 1c94 movi.n a4, 25 400082bd: 0c45 movi.n a5, 4 400082bf: 0800 l32i.n a0, a0, 0 400082c1: 0c06 movi.n a6, 0 400082c3: 022027 l32i a0, a0, 156 400082c6: c07044 extui a7, a12, 0, 5 400082c9: c00000 callx0 a0 400082cc: 2811 l32i.n a2, a1, 4 400082ce: 270e53 bnone a14, a2, 0x40008325 400082d1: 0821 l32i.n a0, a1, 8 400082d3: d841 l32i.n a13, a1, 16 400082d5: c02060 neg a2, a12 400082d8: e851 l32i.n a14, a1, 20 400082da: c831 l32i.n a12, a1, 12 400082dc: 802201 slli a2, a2, 24 400082df: 202831 srai a2, a2, 24 400082e2: 12c120 addi a1, a1, 32 400082e5: 0df0 ret.n 400082e7: 0000 400082e9: e20100 l8ui a14, a1, 0 400082ec: 22a077 movi a2, 119 400082ef: 0c03 movi.n a3, 0 400082f1: 1c94 movi.n a4, 25 400082f3: 0199f7 l32r a0, [0x3fffc730] ; 0x40006158 400082f6: 0c75 movi.n a5, 7 400082f8: 0800 l32i.n a0, a0, 0 400082fa: 0c56 movi.n a6, 5 400082fc: 022027 l32i a0, a0, 156 400082ff: c07324 extui a7, a12, 3, 3 40008302: c00000 callx0 a0 40008305: c07024 extui a7, a12, 0, 3 40008308: 22a077 movi a2, 119 4000830b: 0c03 movi.n a3, 0 4000830d: 0192f7 l32r a0, [0x3fffc730] ; 0x40006158 40008310: 1ca4 movi.n a4, 26 40008312: 0800 l32i.n a0, a0, 0 40008314: 52a002 movi a5, 2 40008317: 022027 l32i a0, a0, 156 4000831a: 62a000 movi a6, 0 4000831d: c00000 callx0 a0 40008320: 2811 l32i.n a2, a1, 4 40008322: 278eab bany a14, a2, 0x400082d1 40008325: 0821 l32i.n a0, a1, 8 40008327: d841 l32i.n a13, a1, 16 40008329: 2d0c mov.n a2, a12 4000832b: e851 l32i.n a14, a1, 20 4000832d: c831 l32i.n a12, a1, 12 4000832f: 12c120 addi a1, a1, 32 40008332: 0df0 ret.n 40008334: 27a708 bge a7, a2, 0x40008340 40008337: 80c701 slli a12, a7, 24 4000833a: c0c831 srai a12, a12, 24 4000833d: 460300 j 0x4000834e 40008340: 703060 neg a3, a7 40008343: 37a201 bge a2, a3, 0x40008348 40008346: 2d03 mov.n a2, a3 40008348: 80c201 slli a12, a2, 24 4000834b: c0c831 srai a12, a12, 24 4000834e: 167df9 beqz a13, 0x400082e9 40008351: e20100 l8ui a14, a1, 0 40008354: 86d7ff j 0x400082b6 40008357: 00 40008358: 0c1e movi.n a14, 1 4000835a: 20c060 neg a12, a2 4000835d: 80cc01 slli a12, a12, 24 40008360: c0c831 srai a12, a12, 24 40008363: 86c8ff j 0x40008289 40008366: 0000 40008368: 22a077 movi a2, 119 4000836b: 0c03 movi.n a3, 0 4000836d: 1c84 movi.n a4, 24 4000836f: 0c35 movi.n a5, 3 40008371: 0c36 movi.n a6, 3 40008373: 7d0e mov.n a7, a14 40008375: c00900 callx0 a9 40008378: 0178f7 l32r a0, [0x3fffc730] ; 0x40006158 4000837b: 46cdff j 0x400082b4 4000837e: 0000 40008380: 3fffd9a8 ; l32r 40008384: 3fffd9c4 ; l32r rom_rfcal_txcap: 40008388: 9d02 mov.n a9, a2 4000838a: 12c1b0 addi a1, a1, -80 4000838d: f991 s32i.n a15, a1, 36 4000838f: 39b1 s32i.n a3, a1, 44 40008391: 79e1 s32i.n a7, a1, 56 40008393: 0951 s32i.n a0, a1, 20 40008395: e981 s32i.n a14, a1, 32 40008397: c961 s32i.n a12, a1, 24 40008399: d971 s32i.n a13, a1, 28 4000839b: cd06 mov.n a12, a6 4000839d: dd05 mov.n a13, a5 4000839f: ed04 mov.n a14, a4 400083a1: 016df7 l32r a0, [0x3fffc730] ; 0x40006158 400083a4: 2802 l32i.n a2, a2, 0 400083a6: 0800 l32i.n a0, a0, 0 400083a8: 202205 extui a2, a2, 18, 1 400083ab: 56121a bnez a2, 0x40008550 400083ae: 926111 s32i a9, a1, 68 400083b1: 38b1 l32i.n a3, a1, 44 400083b3: 0c02 movi.n a2, 0 400083b5: 022028 l32i a0, a0, 160 400083b8: 2903 s32i.n a2, a3, 0 400083ba: c00000 callx0 a0 400083bd: 0166f7 l32r a0, [0x3fffc730] ; 0x40006158 400083c0: 022000 l32i a0, a0, 0 400083c3: 3df0 nop.n 400083c5: 022030 l32i a0, a0, 192 400083c8: 0c12 movi.n a2, 1 400083ca: c00000 callx0 a0 400083cd: 0162f7 l32r a0, [0x3fffc730] ; 0x40006158 400083d0: 022000 l32i a0, a0, 0 400083d3: 022033 l32i a0, a0, 204 400083d6: e02044 extui a2, a14, 0, 5 400083d9: c00000 callx0 a0 400083dc: 015ff7 l32r a0, [0x3fffc730] ; 0x40006158 400083df: 0800 l32i.n a0, a0, 0 400083e1: 0860 l32i.n a0, a0, 24 400083e3: 0c02 movi.n a2, 0 400083e5: c00000 callx0 a0 400083e8: 015cf7 l32r a0, [0x3fffc730] ; 0x40006158 400083eb: 0800 l32i.n a0, a0, 0 400083ed: 022014 l32i a0, a0, 80 400083f0: 2d0c mov.n a2, a12 400083f2: c00000 callx0 a0 400083f5: 0c05 movi.n a5, 0 400083f7: 0c06 movi.n a6, 0 400083f9: 0c07 movi.n a7, 0 400083fb: 4d02 mov.n a4, a2 400083fd: 0156f7 l32r a0, [0x3fffc730] ; 0x40006158 40008400: 0c03 movi.n a3, 0 40008402: 3901 s32i.n a3, a1, 0 40008404: 3911 s32i.n a3, a1, 4 40008406: 3921 s32i.n a3, a1, 8 40008408: 0800 l32i.n a0, a0, 0 4000840a: 0c12 movi.n a2, 1 4000840c: 02201a l32i a0, a0, 104 4000840f: 3d0d mov.n a3, a13 40008411: c00000 callx0 a0 40008414: 0c0d movi.n a13, 0 40008416: 420150 l8ui a4, a1, 80 40008419: 0c35 movi.n a5, 3 4000841b: 620110 l8ui a6, a1, 16 4000841e: 69a1 s32i.n a6, a1, 40 40008420: 59c1 s32i.n a5, a1, 48 40008422: 426110 s32i a4, a1, 64 40008425: 8c1d beqz.n a13, 0x4000842a 40008427: 661d06 bnei a13, 1, 0x40008431 4000842a: 0cf9 movi.n a9, 15 4000842c: 99a1 s32i.n a9, a1, 40 4000842e: c60200 j 0x4000843d 40008431: 02cdfe addi a0, a13, -2 40008434: 78a1 l32i.n a7, a1, 40 40008436: 0c78 movi.n a8, 7 40008438: 007883 moveqz a7, a8, a0 4000843b: 79a1 s32i.n a7, a1, 40 4000843d: 0c0c movi.n a12, 0 4000843f: 0c0f movi.n a15, 0 40008441: 0c0a movi.n a10, 0 40008443: b8a1 l32i.n a11, a1, 40 40008445: a9d1 s32i.n a10, a1, 52 40008447: 1bbb addi.n a11, a11, 1 40008449: b2610f s32i a11, a1, 60 4000844c: bccd beqz.n a13, 0x4000848c 4000844e: 261d1e beqi a13, 1, 0x40008470 40008451: 662d50 bnei a13, 2, 0x400084a5 40008454: 22a06b movi a2, 107 40008457: 0c23 movi.n a3, 2 40008459: 0c24 movi.n a4, 2 4000845b: 013ff7 l32r a0, [0x3fffc730] ; 0x40006158 4000845e: 0c65 movi.n a5, 6 40008460: 0800 l32i.n a0, a0, 0 40008462: 0c46 movi.n a6, 4 40008464: 022027 l32i a0, a0, 156 40008467: 7d0c mov.n a7, a12 40008469: c00000 callx0 a0 4000846c: 460d00 j 0x400084a5 4000846f: 00 40008470: 22a06b movi a2, 107 40008473: 0c23 movi.n a3, 2 40008475: 0c24 movi.n a4, 2 40008477: 0138f7 l32r a0, [0x3fffc730] ; 0x40006158 4000847a: 0c35 movi.n a5, 3 4000847c: 0800 l32i.n a0, a0, 0 4000847e: 0c06 movi.n a6, 0 40008480: 022027 l32i a0, a0, 156 40008483: 7d0c mov.n a7, a12 40008485: c00000 callx0 a0 40008488: 460600 j 0x400084a5 4000848b: 00 4000848c: 22a06b movi a2, 107 4000848f: 0c23 movi.n a3, 2 40008491: 0c14 movi.n a4, 1 40008493: 0131f7 l32r a0, [0x3fffc730] ; 0x40006158 40008496: 0c35 movi.n a5, 3 40008498: 0800 l32i.n a0, a0, 0 4000849a: 0c06 movi.n a6, 0 4000849c: 022027 l32i a0, a0, 156 4000849f: c07c20 or a7, a12, a12 400084a2: c00000 callx0 a0 400084a5: 012cf7 l32r a0, [0x3fffc730] ; 0x40006158 400084a8: 022000 l32i a0, a0, 0 400084ab: 22210e l32i a2, a1, 56 400084ae: 02201c l32i a0, a0, 112 400084b1: 32a00a movi a3, 10 400084b4: c00000 callx0 a0 400084b7: ed02 mov.n a14, a2 400084b9: 222110 l32i a2, a1, 64 400084bc: 8c82 beqz.n a2, 0x400084c8 ; Format follows: -- "num_k=%d, power_out=%d, " 400084be: 21b0ff l32r a2, [0x3fffd9a8] ; 0x40008380 400084c1: 3d0c mov.n a3, a12 400084c3: 4d0e mov.n a4, a14 400084c5: c584f9 call0 eprintf ; 0x40001d14 400084c8: 48f1 l32i.n a4, a1, 60 400084ca: e7af03 bge a15, a14, 0x400084d1 400084cd: c9d1 s32i.n a12, a1, 52 400084cf: fd0e mov.n a15, a14 400084d1: 1bcc addi.n a12, a12, 1 400084d3: c0c074 extui a12, a12, 0, 8 400084d6: c71402 beq a4, a12, 0x400084dc 400084d9: c6dbff j 0x4000844c 400084dc: e22110 l32i a14, a1, 64 400084df: 8c9e beqz.n a14, 0x400084ec ; Format follows: -- "reg_i=%d, indata=%d" 400084e1: 21a8ff l32r a2, [0x3fffd9c4] ; 0x40008384 400084e4: 3d0d mov.n a3, a13 400084e6: 42210d l32i a4, a1, 52 400084e9: 8582f9 call0 eprintf ; 0x40001d14 400084ec: 160d0c beqz a13, 0x400085b0 400084ef: 0bfd addi.n a15, a13, -1 400084f1: 167f0d beqz a15, 0x400085cc 400084f4: 02cdfe addi a0, a13, -2 400084f7: 16d00e beqz a0, 0x400085e8 400084fa: e8d1 l32i.n a14, a1, 52 400084fc: f8b1 l32i.n a15, a1, 44 400084fe: d02d11 slli a2, a13, 3 40008501: 001240 ssl a2 40008504: 1bdd addi.n a13, a13, 1 40008506: d0d074 extui a13, a13, 0, 8 40008509: 080f l32i.n a0, a15, 0 4000850b: 28c1 l32i.n a2, a1, 48 4000850d: 0000a1 sll a0, a0 40008510: 0b22 addi.n a2, a2, -1 40008512: 29c1 s32i.n a2, a1, 48 40008514: 00ee20 or a14, a14, a0 40008517: e90f s32i.n a14, a15, 0 40008519: 5682f0 bnez a2, 0x40008425 4000851c: 010ff7 l32r a0, [0x3fffc730] ; 0x40006158 4000851f: 0800 l32i.n a0, a0, 0 40008521: 02201b l32i a0, a0, 108 40008524: 0c12 movi.n a2, 1 40008526: c00000 callx0 a0 40008529: 010bf7 l32r a0, [0x3fffc730] ; 0x40006158 4000852c: 0800 l32i.n a0, a0, 0 4000852e: c1c4f5 l32r a12, [0x00040000] ; 0x40005c40 40008531: 02202a l32i a0, a0, 168 40008534: d22111 l32i a13, a1, 68 40008537: c00000 callx0 a0 4000853a: 0851 l32i.n a0, a1, 20 4000853c: e881 l32i.n a14, a1, 32 4000853e: 280d l32i.n a2, a13, 0 40008540: f891 l32i.n a15, a1, 36 40008542: c02220 or a2, a2, a12 40008545: 290d s32i.n a2, a13, 0 40008547: c861 l32i.n a12, a1, 24 40008549: d871 l32i.n a13, a1, 28 4000854b: 12c150 addi a1, a1, 80 4000854e: 0df0 ret.n 40008550: 22a06b movi a2, 107 40008553: 0c23 movi.n a3, 2 40008555: 0c14 movi.n a4, 1 40008557: 0c35 movi.n a5, 3 40008559: 78b1 l32i.n a7, a1, 44 4000855b: 0c06 movi.n a6, 0 4000855d: 7807 l32i.n a7, a7, 0 4000855f: 022027 l32i a0, a0, 156 40008562: 707075 extui a7, a7, 16, 8 40008565: c00000 callx0 a0 40008568: 22a06b movi a2, 107 4000856b: 0c23 movi.n a3, 2 4000856d: 0c24 movi.n a4, 2 4000856f: 0c35 movi.n a5, 3 40008571: 0c06 movi.n a6, 0 40008573: 01f9f6 l32r a0, [0x3fffc730] ; 0x40006158 40008576: 78b1 l32i.n a7, a1, 44 40008578: 0800 l32i.n a0, a0, 0 4000857a: 7807 l32i.n a7, a7, 0 4000857c: 022027 l32i a0, a0, 156 4000857f: 707874 extui a7, a7, 8, 8 40008582: c00000 callx0 a0 40008585: 22a06b movi a2, 107 40008588: 0c23 movi.n a3, 2 4000858a: 0c24 movi.n a4, 2 4000858c: 0c65 movi.n a5, 6 4000858e: 01f2f6 l32r a0, [0x3fffc730] ; 0x40006158 40008591: 0c46 movi.n a6, 4 40008593: 0800 l32i.n a0, a0, 0 40008595: 78b1 l32i.n a7, a1, 44 40008597: 022027 l32i a0, a0, 156 4000859a: 720700 l8ui a7, a7, 0 4000859d: c00000 callx0 a0 400085a0: c861 l32i.n a12, a1, 24 400085a2: d871 l32i.n a13, a1, 28 400085a4: e881 l32i.n a14, a1, 32 400085a6: f891 l32i.n a15, a1, 36 400085a8: 0851 l32i.n a0, a1, 20 400085aa: 12c150 addi a1, a1, 80 400085ad: 0df0 ret.n 400085af: 00 400085b0: 22a06b movi a2, 107 400085b3: 0c23 movi.n a3, 2 400085b5: 0c14 movi.n a4, 1 400085b7: 01e8f6 l32r a0, [0x3fffc730] ; 0x40006158 400085ba: 0c35 movi.n a5, 3 400085bc: 0800 l32i.n a0, a0, 0 400085be: 0c06 movi.n a6, 0 400085c0: 022027 l32i a0, a0, 156 400085c3: 78d1 l32i.n a7, a1, 52 400085c5: c00000 callx0 a0 400085c8: 86cbff j 0x400084fa 400085cb: 00 400085cc: 22a06b movi a2, 107 400085cf: 0c23 movi.n a3, 2 400085d1: 0c24 movi.n a4, 2 400085d3: 01e1f6 l32r a0, [0x3fffc730] ; 0x40006158 400085d6: 0c35 movi.n a5, 3 400085d8: 0800 l32i.n a0, a0, 0 400085da: 0c06 movi.n a6, 0 400085dc: 022027 l32i a0, a0, 156 400085df: 78d1 l32i.n a7, a1, 52 400085e1: c00000 callx0 a0 400085e4: 86c4ff j 0x400084fa 400085e7: 00 400085e8: 22a06b movi a2, 107 400085eb: 0c23 movi.n a3, 2 400085ed: 0c24 movi.n a4, 2 400085ef: 01daf6 l32r a0, [0x3fffc730] ; 0x40006158 400085f2: 0c65 movi.n a5, 6 400085f4: 0800 l32i.n a0, a0, 0 400085f6: 0c46 movi.n a6, 4 400085f8: 022027 l32i a0, a0, 156 400085fb: 78d1 l32i.n a7, a1, 52 400085fd: c00000 callx0 a0 40008600: 86bdff j 0x400084fa 40008603: 00 40008604: 3fffd9dc ; l32r 40008608: 00030000 ; l32r 4000860c: e000ffff ; l32r rom_rfcal_txiq: 40008610: 9d03 mov.n a9, a3 40008612: 12c1b0 addi a1, a1, -80 40008615: c26110 s32i a12, a1, 64 40008618: 4961 s32i.n a4, a1, 24 4000861a: 7941 s32i.n a7, a1, 16 4000861c: 09f1 s32i.n a0, a1, 60 4000861e: d26111 s32i a13, a1, 68 40008621: e26112 s32i a14, a1, 72 40008624: 3d05 mov.n a3, a5 40008626: e155fa l32r a14, [0x60009600] ; 0x40006f7c 40008629: 3951 s32i.n a3, a1, 20 4000862b: dd02 mov.n a13, a2 4000862d: 2d06 mov.n a2, a6 4000862f: 080d l32i.n a0, a13, 0 40008631: 2921 s32i.n a2, a1, 8 40008633: 000105 extui a0, a0, 17, 1 40008636: 562022 bnez a0, 0x4000885c 40008639: 9931 s32i.n a9, a1, 12 4000863b: 22a077 movi a2, 119 4000863e: 0c03 movi.n a3, 0 40008640: c1c6f6 l32r a12, [0x3fffc730] ; 0x40006158 40008643: 1c04 movi.n a4, 16 40008645: 080c l32i.n a0, a12, 0 40008647: 0c05 movi.n a5, 0 40008649: 022025 l32i a0, a0, 148 4000864c: 0c06 movi.n a6, 0 4000864e: c00000 callx0 a0 40008651: 0c03 movi.n a3, 0 40008653: 0cf4 movi.n a4, 15 40008655: 0c65 movi.n a5, 6 40008657: 0c66 movi.n a6, 6 40008659: 080c l32i.n a0, a12, 0 4000865b: 2991 s32i.n a2, a1, 36 4000865d: 022025 l32i a0, a0, 148 40008660: 22a077 movi a2, 119 40008663: c00000 callx0 a0 40008666: 0c03 movi.n a3, 0 40008668: 0c94 movi.n a4, 9 4000866a: 0c75 movi.n a5, 7 4000866c: 0c06 movi.n a6, 0 4000866e: 080c l32i.n a0, a12, 0 40008670: 29a1 s32i.n a2, a1, 40 40008672: 022025 l32i a0, a0, 148 40008675: 22a077 movi a2, 119 40008678: c00000 callx0 a0 4000867b: 080c l32i.n a0, a12, 0 4000867d: 022028 l32i a0, a0, 160 40008680: 29b1 s32i.n a2, a1, 44 40008682: c00000 callx0 a0 40008685: 080c l32i.n a0, a12, 0 40008687: 022030 l32i a0, a0, 192 4000868a: 0c12 movi.n a2, 1 4000868c: c00000 callx0 a0 4000868f: 080c l32i.n a0, a12, 0 40008691: 2861 l32i.n a2, a1, 24 40008693: 022033 l32i a0, a0, 204 40008696: 202044 extui a2, a2, 0, 5 40008699: c00000 callx0 a0 4000869c: 080c l32i.n a0, a12, 0 4000869e: 0860 l32i.n a0, a0, 24 400086a0: 0c02 movi.n a2, 0 400086a2: c00000 callx0 a0 400086a5: 080c l32i.n a0, a12, 0 400086a7: 02200f l32i a0, a0, 60 400086aa: 0c12 movi.n a2, 1 400086ac: c00000 callx0 a0 400086af: 22a077 movi a2, 119 400086b2: 0c03 movi.n a3, 0 400086b4: 1c04 movi.n a4, 16 400086b6: 0c25 movi.n a5, 2 400086b8: 080c l32i.n a0, a12, 0 400086ba: 0c26 movi.n a6, 2 400086bc: 022027 l32i a0, a0, 156 400086bf: 0c17 movi.n a7, 1 400086c1: c00000 callx0 a0 400086c4: 220150 l8ui a2, a1, 80 400086c7: 22610e s32i a2, a1, 56 400086ca: 168200 beqz a2, 0x400086d6 ; Format follows: -- "txiq: tone_atten=%d" 400086cd: 21cdff l32r a2, [0x3fffd9dc] ; 0x40008604 400086d0: 322102 l32i a3, a1, 8 400086d3: 0564f9 call0 eprintf ; 0x40001d14 400086d6: 2821 l32i.n a2, a1, 8 400086d8: 3851 l32i.n a3, a1, 20 400086da: 0c14 movi.n a4, 1 400086dc: 5841 l32i.n a5, a1, 16 400086de: 68e1 l32i.n a6, a1, 56 400086e0: 080c l32i.n a0, a12, 0 400086e2: 720154 l8ui a7, a1, 84 400086e5: 022041 l32i a0, a0, 0x104 400086e8: 72610c s32i a7, a1, 48 400086eb: c00000 callx0 a0 400086ee: 3851 l32i.n a3, a1, 20 400086f0: 5841 l32i.n a5, a1, 16 400086f2: 68e1 l32i.n a6, a1, 56 400086f4: 78c1 l32i.n a7, a1, 48 400086f6: 0c04 movi.n a4, 0 400086f8: 080c l32i.n a0, a12, 0 400086fa: 2911 s32i.n a2, a1, 4 400086fc: 022041 l32i a0, a0, 0x104 400086ff: 222102 l32i a2, a1, 8 40008702: c00000 callx0 a0 40008705: 080c l32i.n a0, a12, 0 40008707: 2901 s32i.n a2, a1, 0 40008709: 02201b l32i a0, a0, 108 4000870c: 0c12 movi.n a2, 1 4000870e: c00000 callx0 a0 40008711: 7891 l32i.n a7, a1, 36 40008713: 22a077 movi a2, 119 40008716: 0c03 movi.n a3, 0 40008718: 1c04 movi.n a4, 16 4000871a: 080c l32i.n a0, a12, 0 4000871c: 0c05 movi.n a5, 0 4000871e: 022027 l32i a0, a0, 156 40008721: 0c06 movi.n a6, 0 40008723: c00000 callx0 a0 40008726: 78a1 l32i.n a7, a1, 40 40008728: 22a077 movi a2, 119 4000872b: 0c03 movi.n a3, 0 4000872d: 0cf4 movi.n a4, 15 4000872f: 022c00 l32i a0, a12, 0 40008732: 52a006 movi a5, 6 40008735: 022027 l32i a0, a0, 156 40008738: 62a006 movi a6, 6 4000873b: c00000 callx0 a0 4000873e: 78b1 l32i.n a7, a1, 44 40008740: 22a077 movi a2, 119 40008743: 0c03 movi.n a3, 0 40008745: 0c94 movi.n a4, 9 40008747: 080c l32i.n a0, a12, 0 40008749: 0c75 movi.n a5, 7 4000874b: 022027 l32i a0, a0, 156 4000874e: 62a000 movi a6, 0 40008751: c00000 callx0 a0 40008754: 22a077 movi a2, 119 40008757: 0c03 movi.n a3, 0 40008759: 1c04 movi.n a4, 16 4000875b: 0c25 movi.n a5, 2 4000875d: 080c l32i.n a0, a12, 0 4000875f: 0c26 movi.n a6, 2 40008761: 022027 l32i a0, a0, 156 40008764: 0c07 movi.n a7, 0 40008766: c00000 callx0 a0 40008769: 0801 l32i.n a0, a1, 0 4000876b: 2c06 movi.n a6, 32 4000876d: a157f6 l32r a10, [0x60009a00] ; 0x400060cc 40008770: c02000 memw 40008773: 98aa l32i.n a9, a10, 40 40008775: 609920 or a9, a9, a6 40008778: c02000 memw 4000877b: 99aa s32i.n a9, a10, 40 4000877d: 7c08 movi.n a8, -16 4000877f: 0c27 movi.n a7, 2 40008781: c02000 memw 40008784: 522e8f l32i a5, a14, 0x23c 40008787: 805510 and a5, a5, a8 4000878a: 705520 or a5, a5, a7 4000878d: c02000 memw 40008790: 526e8f s32i a5, a14, 0x23c 40008793: 42ae0e movi a4, 0xfffffe0e 40008796: 0c13 movi.n a3, 1 40008798: c02000 memw 4000879b: 222e99 l32i a2, a14, 0x264 4000879e: 402210 and a2, a2, a4 400087a1: 302220 or a2, a2, a3 400087a4: c02000 memw 400087a7: 0cf5 movi.n a5, 15 400087a9: 226e99 s32i a2, a14, 0x264 400087ac: 2811 l32i.n a2, a1, 4 400087ae: 7c14 movi.n a4, -15 400087b0: 472201 blt a2, a4, 0x400087b5 400087b3: 4d02 mov.n a4, a2 400087b5: 6c12 movi.n a2, -31 400087b7: 472501 blt a5, a4, 0x400087bc 400087ba: 5d04 mov.n a5, a4 400087bc: 804501 slli a4, a5, 24 400087bf: 404831 srai a4, a4, 24 400087c2: 1cf5 movi.n a5, 31 400087c4: 272001 blt a0, a2, 0x400087c9 400087c7: 2d00 mov.n a2, a0 400087c9: 0d05 mov.n a0, a5 400087cb: e6c201 bgei a2, 32, 0x400087d0 400087ce: 0d02 mov.n a0, a2 400087d0: 800001 slli a0, a0, 24 400087d3: 000831 srai a0, a0, 24 400087d6: e61402 bgei a4, 1, 0x400087dc 400087d9: c62f00 j 0x4000889c 400087dc: 4026c0 sub a2, a6, a4 400087df: 29d1 s32i.n a2, a1, 52 400087e1: 380c l32i.n a3, a12, 0 400087e3: 28d1 l32i.n a2, a1, 52 400087e5: c2c040 addi a12, a0, 64 400087e8: 00c0b3 movgez a12, a0, a0 400087eb: 802201 slli a2, a2, 24 400087ee: 02232a l32i a0, a3, 168 400087f1: c981 s32i.n a12, a1, 32 400087f3: 202831 srai a2, a2, 24 400087f6: 2971 s32i.n a2, a1, 28 400087f8: 80cc01 slli a12, a12, 24 400087fb: c0c831 srai a12, a12, 24 400087fe: c00000 callx0 a0 40008801: e05c01 slli a5, a12, 18 40008804: 9881 l32i.n a9, a1, 32 40008806: a8d1 l32i.n a10, a1, 52 40008808: 809901 slli a9, a9, 24 4000880b: 80aa01 slli a10, a10, 24 4000880e: a0a831 srai a10, a10, 24 40008811: 909831 srai a9, a9, 24 40008814: 80aa11 slli a10, a10, 8 40008817: a09920 or a9, a9, a10 4000881a: a831 l32i.n a10, a1, 12 4000881c: 8192ef l32r a8, [0x00020000] ; 0x40004664 4000881f: 990a s32i.n a9, a10, 0 40008821: 780d l32i.n a7, a13, 0 40008823: 6871 l32i.n a6, a1, 28 40008825: 807720 or a7, a7, a8 40008828: 790d s32i.n a7, a13, 0 4000882a: 7177ff l32r a7, [0x00030000] ; 0x40008608 4000882d: 806601 slli a6, a6, 24 40008830: 705520 or a5, a5, a7 40008833: 7176ff l32r a7, [0xe000ffff] ; 0x4000860c 40008836: c02000 memw 40008839: 422e98 l32i a4, a14, 0x260 4000883c: 704410 and a4, a4, a7 4000883f: 604420 or a4, a4, a6 40008842: 504420 or a4, a4, a5 40008845: c02000 memw 40008848: c22110 l32i a12, a1, 64 4000884b: 426e98 s32i a4, a14, 0x260 4000884e: d22111 l32i a13, a1, 68 40008851: e22112 l32i a14, a1, 72 40008854: 08f1 l32i.n a0, a1, 60 40008856: 12c150 addi a1, a1, 80 40008859: 0df0 ret.n 4000885b: 00 4000885c: d809 l32i.n a13, a9, 0 4000885e: 016aff l32r a0, [0x00030000] ; 0x40008608 40008861: 80cd01 slli a12, a13, 24 40008864: d0d841 srli a13, a13, 8 40008867: c0c831 srai a12, a12, 24 4000886a: e0cc01 slli a12, a12, 18 4000886d: 00cc20 or a12, a12, a0 40008870: 80dd01 slli a13, a13, 24 40008873: 0166ff l32r a0, [0xe000ffff] ; 0x4000860c 40008876: c02000 memw 40008879: b22e98 l32i a11, a14, 0x260 4000887c: 00bb10 and a11, a11, a0 4000887f: d0bb20 or a11, a11, a13 40008882: c0bb20 or a11, a11, a12 40008885: c02000 memw 40008888: c22110 l32i a12, a1, 64 4000888b: b26e98 s32i a11, a14, 0x260 4000888e: d22111 l32i a13, a1, 68 40008891: e22112 l32i a14, a1, 72 40008894: 08f1 l32i.n a0, a1, 60 40008896: 12c150 addi a1, a1, 80 40008899: 0df0 ret.n 4000889b: 00 4000889c: 402060 neg a2, a4 4000889f: 29d1 s32i.n a2, a1, 52 400088a1: 06cfff j 0x400087e1 400088a4: 002c0000 ; l32r 400088a8: f0ffffff ; l32r 400088ac: 3fffd9f4 ; l32r 400088b0: 3fffd9f8 ; l32r 400088b4: 3fffda08 ; l32r rom_rfcal_txiq_cover: 400088b8: 12c1c0 addi a1, a1, -64 400088bb: c921 s32i.n a12, a1, 8 400088bd: d931 s32i.n a13, a1, 12 400088bf: e941 s32i.n a14, a1, 16 400088c1: 0911 s32i.n a0, a1, 4 400088c3: 59d1 s32i.n a5, a1, 52 400088c5: 69b1 s32i.n a6, a1, 44 400088c7: 7901 s32i.n a7, a1, 0 400088c9: f951 s32i.n a15, a1, 20 400088cb: 49f1 s32i.n a4, a1, 60 400088cd: f8f1 l32i.n a15, a1, 60 400088cf: 3961 s32i.n a3, a1, 24 400088d1: 8c4f beqz.n a15, 0x400088d9 400088d3: 22c2f4 addi a2, a2, -12 400088d6: 202074 extui a2, a2, 0, 8 400088d9: 011ff6 l32r a0, [0x3fffc730] ; 0x40006158 400088dc: 0800 l32i.n a0, a0, 0 400088de: 022014 l32i a0, a0, 80 400088e1: 3df0 nop.n 400088e3: c00000 callx0 a0 400088e6: 0c0c movi.n a12, 0 400088e8: 0c0e movi.n a14, 0 400088ea: d1b6e1 l32r a13, [0x60000200] ; 0x40000fc4 400088ed: d03f11 slli a3, a15, 3 400088f0: a801 l32i.n a10, a1, 0 400088f2: 0c79 movi.n a9, 7 400088f4: 0c38 movi.n a8, 3 400088f6: f07004 extui a7, a15, 0, 1 400088f9: 0c16 movi.n a6, 1 400088fb: 0c04 movi.n a4, 0 400088fd: 605f01 slli a5, a15, 26 40008900: 5981 s32i.n a5, a1, 32 40008902: 49c1 s32i.n a4, a1, 48 40008904: 52a100 movi a5, 0x100 40008907: 0c04 movi.n a4, 0 40008909: 704683 moveqz a4, a6, a7 4000890c: 2055c0 sub a5, a5, a2 4000890f: a08993 movnez a8, a9, a10 40008912: 8971 s32i.n a8, a1, 28 40008914: 505074 extui a5, a5, 0, 8 40008917: 402320 or a2, a3, a4 4000891a: 605511 slli a5, a5, 10 4000891d: 5991 s32i.n a5, a1, 36 4000891f: 802201 slli a2, a2, 24 40008922: 29a1 s32i.n a2, a1, 40 40008924: 010df6 l32r a0, [0x3fffc730] ; 0x40006158 40008927: 2d0e mov.n a2, a14 40008929: 0800 l32i.n a0, a0, 0 4000892b: 3d0f mov.n a3, a15 4000892d: 022042 l32i a0, a0, 0x108 40008930: 48d1 l32i.n a4, a1, 52 40008932: c00000 callx0 a0 40008935: 41dbff l32r a4, [0x002c0000] ; 0x400088a4 40008938: 3861 l32i.n a3, a1, 24 4000893a: ed02 mov.n a14, a2 4000893c: 403320 or a3, a3, a4 4000893f: c02000 memw 40008942: 41daf7 l32r a4, [0xf0000000] ; 0x400068ac 40008945: 222dee l32i a2, a13, 0x3b8 40008948: 402210 and a2, a2, a4 4000894b: 4881 l32i.n a4, a1, 32 4000894d: 402220 or a2, a2, a4 40008950: 4891 l32i.n a4, a1, 36 40008952: 402220 or a2, a2, a4 40008955: 302220 or a2, a2, a3 40008958: c02000 memw 4000895b: 01fff5 l32r a0, [0x3fffc730] ; 0x40006158 4000895e: 0ca3 movi.n a3, 10 40008960: 0800 l32i.n a0, a0, 0 40008962: 226dee s32i a2, a13, 0x3b8 40008965: 02201c l32i a0, a0, 112 40008968: 0c42 movi.n a2, 4 4000896a: c00000 callx0 a0 4000896d: 29e1 s32i.n a2, a1, 56 4000896f: c02000 memw 40008972: 31cdff l32r a3, [0xf0ffffff] ; 0x400088a8 40008975: 222dee l32i a2, a13, 0x3b8 40008978: 302210 and a2, a2, a3 4000897b: 38a1 l32i.n a3, a1, 40 4000897d: 302220 or a2, a2, a3 40008980: c02000 memw 40008983: 01f5f5 l32r a0, [0x3fffc730] ; 0x40006158 40008986: 0ca3 movi.n a3, 10 40008988: 0800 l32i.n a0, a0, 0 4000898a: 226dee s32i a2, a13, 0x3b8 4000898d: 02201c l32i a0, a0, 112 40008990: 0c42 movi.n a2, 4 40008992: c00000 callx0 a0 40008995: 48d1 l32i.n a4, a1, 52 40008997: e05f05 extui a5, a14, 31, 1 4000899a: 08e1 l32i.n a0, a1, 56 4000899c: 8cef beqz.n a15, 0x400089ae 4000899e: 7d00 mov.n a7, a0 400089a0: 07a201 bge a2, a0, 0x400089a5 400089a3: 7d02 mov.n a7, a2 400089a5: 57040b bnone a4, a5, 0x400089b4 400089a8: 0002c0 sub a0, a2, a0 400089ab: 060200 j 0x400089b7 400089ae: 2a70 add.n a7, a0, a2 400089b0: 46fcff j 0x400089a5 400089b3: 00 400089b4: 2000c0 sub a0, a0, a2 400089b7: 0c14 movi.n a4, 1 400089b9: 003711 slli a3, a7, 16 400089bc: 002011 slli a2, a0, 16 400089bf: 202031 srai a2, a2, 16 400089c2: 303031 srai a3, a3, 16 400089c5: 303483 moveqz a3, a4, a3 400089c8: 902211 slli a2, a2, 7 400089cb: 101120 or a1, a1, a1 400089ce: 852b05 call0 __divsi3 ; 0x4000dc88 400089d1: 803201 slli a3, a2, 24 400089d4: 303831 srai a3, a3, 24 400089d7: 8caf beqz.n a15, 0x400089e5 400089d9: 303121 srai a3, a3, 1 400089dc: 303060 neg a3, a3 400089df: 803301 slli a3, a3, 24 400089e2: 303831 srai a3, a3, 24 400089e5: f63c2b bgeui a12, 3, 0x40008a14 400089e8: 30eec0 sub a14, a14, a3 400089eb: 80ee01 slli a14, a14, 24 400089ee: e0e831 srai a14, a14, 24 400089f1: 08b1 l32i.n a0, a1, 44 400089f3: 8c70 beqz.n a0, 0x400089fe ; Format: "%d," 400089f5: 21adff l32r a2, [0x3fffd9f4] ; 0x400088ac 400089f8: 101120 or a1, a1, a1 400089fb: 8531f9 call0 eprintf ; 0x40001d14 400089fe: 2871 l32i.n a2, a1, 28 40008a00: 1bcc addi.n a12, a12, 1 40008a02: c0c074 extui a12, a12, 0, 8 40008a05: c022c0 sub a2, a2, a12 40008a08: 5682f1 bnez a2, 0x40008924 40008a0b: 28b1 l32i.n a2, a1, 44 40008a0d: 169204 beqz a2, 0x40008a5a 40008a10: c60700 j 0x40008a33 40008a13: 00 40008a14: 08c1 l32i.n a0, a1, 48 40008a16: 0a23 add.n a2, a3, a0 40008a18: 802201 slli a2, a2, 24 40008a1b: 200831 srai a0, a2, 24 40008a1e: 09c1 s32i.n a0, a1, 48 40008a20: 666ccd bnei a12, 6, 0x400089f1 40008a23: 000221 srai a0, a0, 2 40008a26: 00eec0 sub a14, a14, a0 40008a29: 80ee01 slli a14, a14, 24 40008a2c: e0e831 srai a14, a14, 24 40008a2f: 86efff j 0x400089f1 40008a32: 00 40008a33: 16af01 beqz a15, 0x40008a51 ; Format: "txiq_gain=%d" 40008a36: 219eff l32r a2, [0x3fffd9f8] ; 0x400088b0 40008a39: e03e20 or a3, a14, a14 40008a3c: 452df9 call0 eprintf ; 0x40001d14 40008a3f: 022101 l32i a0, a1, 4 40008a42: c821 l32i.n a12, a1, 8 40008a44: d831 l32i.n a13, a1, 12 40008a46: 2d0e mov.n a2, a14 40008a48: f851 l32i.n a15, a1, 20 40008a4a: e841 l32i.n a14, a1, 16 40008a4c: 12c140 addi a1, a1, 64 40008a4f: 0df0 ret.n ; Format follows: txiq_phase=%d 40008a51: 2198ff l32r a2, [0x3fffda08] ; 0x400088b4 40008a54: e03e20 or a3, a14, a14 40008a57: c52bf9 call0 eprintf ; 0x40001d14 40008a5a: 022101 l32i a0, a1, 4 40008a5d: c22102 l32i a12, a1, 8 40008a60: d831 l32i.n a13, a1, 12 40008a62: 2d0e mov.n a2, a14 40008a64: f851 l32i.n a15, a1, 20 40008a66: e841 l32i.n a14, a1, 16 40008a68: 12c140 addi a1, a1, 64 40008a6b: 0df0 ret.n 40008a6d: 000000 rom_rfcal_txiq_set_reg: 40008a70: 12c1e0 addi a1, a1, -32 40008a73: c921 s32i.n a12, a1, 8 40008a75: f951 s32i.n a15, a1, 20 40008a77: 0911 s32i.n a0, a1, 4 40008a79: e941 s32i.n a14, a1, 16 40008a7b: d931 s32i.n a13, a1, 12 40008a7d: ed04 mov.n a14, a4 40008a7f: dd03 mov.n a13, a3 40008a81: 0cf0 movi.n a0, 15 40008a83: 1cf3 movi.n a3, 31 40008a85: d03093 movnez a3, a0, a13 40008a88: 01b4f5 l32r a0, [0x3fffc730] ; 0x40006158 40008a8b: 161409 beqz a4, 0x40008b20 40008a8e: 96220b bltz a2, 0x40008b44 40008a91: 0c0f movi.n a15, 0 40008a93: cd02 mov.n a12, a2 40008a95: 9800 l32i.n a9, a0, 0 40008a97: 37ac02 bge a12, a3, 0x40008a9d 40008a9a: c03c20 or a3, a12, a12 40008a9d: 922927 l32i a9, a9, 156 40008aa0: 80c301 slli a12, a3, 24 40008aa3: c0c831 srai a12, a12, 24 40008aa6: 16ad0a beqz a13, 0x40008b54 40008aa9: 22a077 movi a2, 119 40008aac: 0c03 movi.n a3, 0 40008aae: 1c04 movi.n a4, 16 40008ab0: 0c05 movi.n a5, 0 40008ab2: 0c06 movi.n a6, 0 40008ab4: 7d0f mov.n a7, a15 40008ab6: c00900 callx0 a9 40008ab9: 01a7f5 l32r a0, [0x3fffc730] ; 0x40006158 40008abc: bc4d beqz.n a13, 0x40008af4 40008abe: 22a077 movi a2, 119 40008ac1: 0c03 movi.n a3, 0 40008ac3: 1c04 movi.n a4, 16 40008ac5: 0c75 movi.n a5, 7 40008ac7: 0800 l32i.n a0, a0, 0 40008ac9: 62a003 movi a6, 3 40008acc: 022027 l32i a0, a0, 156 40008acf: c07044 extui a7, a12, 0, 5 40008ad2: c00000 callx0 a0 40008ad5: e70f36 bnone a15, a14, 0x40008b0f 40008ad8: 0811 l32i.n a0, a1, 4 40008ada: d831 l32i.n a13, a1, 12 40008adc: e841 l32i.n a14, a1, 16 40008ade: c02060 neg a2, a12 40008ae1: f851 l32i.n a15, a1, 20 40008ae3: c821 l32i.n a12, a1, 8 40008ae5: 802201 slli a2, a2, 24 40008ae8: 202831 srai a2, a2, 24 40008aeb: 12c120 addi a1, a1, 32 40008aee: 0df0 ret.n 40008af0: 00 40008af1: f20100 l8ui a15, a1, 0 40008af4: 22a077 movi a2, 119 40008af7: 0c03 movi.n a3, 0 40008af9: 1c14 movi.n a4, 17 40008afb: 0c55 movi.n a5, 5 40008afd: 022000 l32i a0, a0, 0 40008b00: 62a000 movi a6, 0 40008b03: 022027 l32i a0, a0, 156 40008b06: c07054 extui a7, a12, 0, 6 40008b09: c00000 callx0 a0 40008b0c: e78fc8 bany a15, a14, 0x40008ad8 40008b0f: 0811 l32i.n a0, a1, 4 40008b11: d831 l32i.n a13, a1, 12 40008b13: e841 l32i.n a14, a1, 16 40008b15: 2d0c mov.n a2, a12 40008b17: f851 l32i.n a15, a1, 20 40008b19: c821 l32i.n a12, a1, 8 40008b1b: 12c120 addi a1, a1, 32 40008b1e: 0df0 ret.n 40008b20: 27a308 bge a3, a2, 0x40008b2c 40008b23: 80c301 slli a12, a3, 24 40008b26: c0c831 srai a12, a12, 24 40008b29: 460300 j 0x40008b3a 40008b2c: 303060 neg a3, a3 40008b2f: 37a201 bge a2, a3, 0x40008b34 40008b32: 2d03 mov.n a2, a3 40008b34: 80c201 slli a12, a2, 24 40008b37: c0c831 srai a12, a12, 24 40008b3a: 163dfb beqz a13, 0x40008af1 40008b3d: f20100 l8ui a15, a1, 0 40008b40: 86deff j 0x40008abe 40008b43: 00 40008b44: 0c1f movi.n a15, 1 40008b46: 20c060 neg a12, a2 40008b49: 80cc01 slli a12, a12, 24 40008b4c: c0c831 srai a12, a12, 24 40008b4f: 86d0ff j 0x40008a95 40008b52: 0000 40008b54: 22a077 movi a2, 119 40008b57: 0c03 movi.n a3, 0 40008b59: 0cf4 movi.n a4, 15 40008b5b: 0c65 movi.n a5, 6 40008b5d: 0c66 movi.n a6, 6 40008b5f: 7d0f mov.n a7, a15 40008b61: c00900 callx0 a9 40008b64: 017df5 l32r a0, [0x3fffc730] ; 0x40006158 40008b67: 46d4ff j 0x40008abc 40008b6a: 0000 rom_rxiq_cover_mg_mp: 40008b6c: 001240 ssl a2 40008b6f: ad03 mov.n a10, a3 40008b71: 9d05 mov.n a9, a5 40008b73: 12c1b0 addi a1, a1, -80 40008b76: 79a1 s32i.n a7, a1, 40 40008b78: 2951 s32i.n a2, a1, 20 40008b7a: 4981 s32i.n a4, a1, 32 40008b7c: 6961 s32i.n a6, a1, 24 40008b7e: 09b1 s32i.n a0, a1, 44 40008b80: 0c15 movi.n a5, 1 40008b82: f9f1 s32i.n a15, a1, 60 40008b84: c9c1 s32i.n a12, a1, 48 40008b86: e9e1 s32i.n a14, a1, 56 40008b88: d9d1 s32i.n a13, a1, 52 40008b8a: 0c0e movi.n a14, 0 40008b8c: 0c0d movi.n a13, 0 40008b8e: c172f5 l32r a12, [0x3fffc730] ; 0x40006158 40008b91: 0c2f movi.n a15, 2 40008b93: a26109 s32i a10, a1, 36 40008b96: 926107 s32i a9, a1, 28 40008b99: 0055a1 sll a5, a5 40008b9c: 020154 l8ui a0, a1, 84 40008b9f: 320158 l8ui a3, a1, 88 40008ba2: 326111 s32i a3, a1, 68 40008ba5: 026112 s32i a0, a1, 72 40008ba8: 5050f4 extui a5, a5, 0, 16 40008bab: 526110 s32i a5, a1, 64 40008bae: 2d0e mov.n a2, a14 40008bb0: 32c110 addi a3, a1, 16 40008bb3: 080c l32i.n a0, a12, 0 40008bb5: 0c14 movi.n a4, 1 40008bb7: 02203e l32i a0, a0, 248 40008bba: 522112 l32i a5, a1, 72 40008bbd: c00000 callx0 a0 40008bc0: 32c111 addi a3, a1, 17 40008bc3: 0c04 movi.n a4, 0 40008bc5: 522112 l32i a5, a1, 72 40008bc8: 080c l32i.n a0, a12, 0 40008bca: ed02 mov.n a14, a2 40008bcc: 02203e l32i a0, a0, 248 40008bcf: 2d0d mov.n a2, a13 40008bd1: c00000 callx0 a0 40008bd4: 322110 l32i a3, a1, 64 40008bd7: 080c l32i.n a0, a12, 0 40008bd9: dd02 mov.n a13, a2 40008bdb: 08d0 l32i.n a0, a0, 52 40008bdd: 0c12 movi.n a2, 1 40008bdf: c00000 callx0 a0 40008be2: 2851 l32i.n a2, a1, 20 40008be4: 3891 l32i.n a3, a1, 36 40008be6: 520111 l8ui a5, a1, 17 40008be9: 8871 l32i.n a8, a1, 28 40008beb: 620110 l8ui a6, a1, 16 40008bee: 0c19 movi.n a9, 1 40008bf0: 8066c0 sub a6, a6, a8 40008bf3: 8861 l32i.n a8, a1, 24 40008bf5: 606993 movnez a6, a9, a6 40008bf8: 624110 s8i a6, a1, 16 40008bfb: 8055c0 sub a5, a5, a8 40008bfe: 822111 l32i a8, a1, 68 40008c01: 505993 movnez a5, a9, a5 40008c04: 524111 s8i a5, a1, 17 40008c07: 8901 s32i.n a8, a1, 0 40008c09: 022c00 l32i a0, a12, 0 40008c0c: 422108 l32i a4, a1, 32 40008c0f: 022012 l32i a0, a0, 72 40008c12: 72c112 addi a7, a1, 18 40008c15: c00000 callx0 a0 40008c18: 220113 l8ui a2, a1, 19 40008c1b: 080c l32i.n a0, a12, 0 40008c1d: 320112 l8ui a3, a1, 18 40008c20: 08c0 l32i.n a0, a0, 48 40008c22: 803301 slli a3, a3, 24 40008c25: 802201 slli a2, a2, 24 40008c28: 202831 srai a2, a2, 24 40008c2b: 303831 srai a3, a3, 24 40008c2e: eae3 add.n a14, a3, a14 40008c30: 20ddc0 sub a13, a13, a2 40008c33: 80dd01 slli a13, a13, 24 40008c36: 80ee01 slli a14, a14, 24 40008c39: e0e831 srai a14, a14, 24 40008c3c: d0d831 srai a13, a13, 24 40008c3f: c00000 callx0 a0 40008c42: 0bff addi.n a15, a15, -1 40008c44: 566ff6 bnez a15, 0x40008bae 40008c47: 08b1 l32i.n a0, a1, 44 40008c49: c8c1 l32i.n a12, a1, 48 40008c4b: f8f1 l32i.n a15, a1, 60 40008c4d: 38a1 l32i.n a3, a1, 40 40008c4f: 222114 l32i a2, a1, 80 40008c52: e24300 s8i a14, a3, 0 40008c55: d24200 s8i a13, a2, 0 40008c58: e8e1 l32i.n a14, a1, 56 40008c5a: d8d1 l32i.n a13, a1, 52 40008c5c: 12c150 addi a1, a1, 80 40008c5f: 0df0 ret.n 40008c61: 000000 40008c64: 3fffda18 ; l32r 40008c68: 3fffd9bc ; l32r rom_set_txbb_atten: 40008c6c: 12c1e0 addi a1, a1, -32 40008c6f: f26104 s32i a15, a1, 16 40008c72: 026100 s32i a0, a1, 0 40008c75: 226105 s32i a2, a1, 20 40008c78: e931 s32i.n a14, a1, 12 40008c7a: c911 s32i.n a12, a1, 4 40008c7c: d921 s32i.n a13, a1, 8 40008c7e: cd04 mov.n a12, a4 40008c80: dd05 mov.n a13, a5 40008c82: ed03 mov.n a14, a3 40008c84: acd6 beqz.n a6, 0x40008cb5 ; Format follows: "bt: " 40008c86: 21f7ff l32r a2, [0x3fffda18] ; 0x40008c64 40008c89: 8508f9 call0 eprintf ; 0x40001d14 40008c8c: d961 s32i.n a13, a1, 24 40008c8e: 9cde beqz.n a14, 0x40008caf 40008c90: fd0d mov.n a15, a13 40008c92: 0c0d movi.n a13, 0 40008c94: da3c add.n a3, a12, a13 40008c96: da4f add.n a4, a15, a13 40008c98: 420400 l8ui a4, a4, 0 40008c9b: 320300 l8ui a3, a3, 0 ; Format follows: "%d, " 40008c9e: 21f2ff l32r a2, [0x3fffd9bc] ; 0x40008c68 40008ca1: 4033c0 sub a3, a3, a4 40008ca4: c506f9 call0 eprintf ; 0x40001d14 40008ca7: 1bdd addi.n a13, a13, 1 40008ca9: d0d074 extui a13, a13, 0, 8 40008cac: d79ee4 bne a14, a13, 0x40008c94 ; Format: "\n" 40008caf: 21cffb l32r a2, [0x3fffd96c] ; 0x40007bec 40008cb2: 0506f9 call0 eprintf ; 0x40001d14 40008cb5: 22a077 movi a2, 119 40008cb8: 0c03 movi.n a3, 0 40008cba: 0c94 movi.n a4, 9 40008cbc: 0127f5 l32r a0, [0x3fffc730] ; 0x40006158 40008cbf: 0c75 movi.n a5, 7 40008cc1: 0800 l32i.n a0, a0, 0 40008cc3: 0c06 movi.n a6, 0 40008cc5: 022027 l32i a0, a0, 156 40008cc8: 0c07 movi.n a7, 0 40008cca: c00000 callx0 a0 40008ccd: 0851 l32i.n a0, a1, 20 40008ccf: 0c0d movi.n a13, 0 40008cd1: 92a018 movi a9, 24 40008cd4: 62a100 movi a6, 0x100 40008cd7: 52af00 movi a5, 0xffffff00 40008cda: 31bae0 l32r a3, [0x60000200] ; 0x40000fc4 40008cdd: a2af7a movi a10, -134 40008ce0: 30fda0 addx4 a15, a13, a3 40008ce3: f68d0a bgeui a13, 8, 0x40008cf1 40008ce6: 420c00 l8ui a4, a12, 0 40008ce9: 220000 l8ui a2, a0, 0 40008cec: 4a22 add.n a2, a2, a4 40008cee: c60200 j 0x40008cfd 40008cf1: da20 add.n a2, a0, a13 40008cf3: aa22 add.n a2, a2, a10 40008cf5: 22027f l8ui a2, a2, 127 40008cf8: ca22 add.n a2, a2, a12 40008cfa: 220200 l8ui a2, a2, 0 40008cfd: 2046c0 sub a4, a6, a2 40008d00: 404074 extui a4, a4, 0, 8 40008d03: c02000 memw 40008d06: e22fc1 l32i a14, a15, 0x304 40008d09: 50ee10 and a14, a14, a5 40008d0c: 40ee20 or a14, a14, a4 40008d0f: c02000 memw 40008d12: e26fc1 s32i a14, a15, 0x304 40008d15: 1bdd addi.n a13, a13, 1 40008d17: d0d074 extui a13, a13, 0, 8 40008d1a: 979dc2 bne a13, a9, 0x40008ce0 40008d1d: c811 l32i.n a12, a1, 4 40008d1f: d821 l32i.n a13, a1, 8 40008d21: e831 l32i.n a14, a1, 12 40008d23: f841 l32i.n a15, a1, 16 40008d25: 0801 l32i.n a0, a1, 0 40008d27: 12c120 addi a1, a1, 32 40008d2a: 0df0 ret.n 40008d2c: 1f000000 ; l32r 40008d30: 00fc0000 ; l32r rom_set_txiq_cal: 40008d34: 12c1f0 addi a1, a1, -16 40008d37: 0901 s32i.n a0, a1, 0 40008d39: c911 s32i.n a12, a1, 4 40008d3b: 51fcff l32r a5, [0x1f000000] ; 0x40008d2c 40008d3e: cd03 mov.n a12, a3 40008d40: 018ff8 l32r a0, [0x60009600] ; 0x40006f7c 40008d43: c02000 memw 40008d46: 322098 l32i a3, a0, 0x260 40008d49: 41f9ff l32r a4, [0x00fc0000] ; 0x40008d30 40008d4c: 503310 and a3, a3, a5 40008d4f: 303875 extui a3, a3, 24, 8 40008d52: 803301 slli a3, a3, 24 40008d55: 303831 srai a3, a3, 24 40008d58: c02000 memw 40008d5b: 022098 l32i a0, a0, 0x260 40008d5e: 400010 and a0, a0, a4 40008d61: 0002d5 extui a0, a0, 18, 14 40008d64: 800001 slli a0, a0, 24 40008d67: 000831 srai a0, a0, 24 40008d6a: a6b302 blti a3, 16, 0x40008d70 40008d6d: 32c3e0 addi a3, a3, -32 40008d70: a6c008 blti a0, 32, 0x40008d7c 40008d73: 02c0c0 addi a0, a0, -64 40008d76: 800001 slli a0, a0, 24 40008d79: 000831 srai a0, a0, 24 40008d7c: 0c05 movi.n a5, 0 40008d7e: 304060 neg a4, a3 40008d81: 0c06 movi.n a6, 0 40008d83: 003f05 extui a3, a0, 31, 1 40008d86: 404704 extui a4, a4, 7, 1 40008d89: 424200 s8i a4, a2, 0 40008d8c: 01f3f4 l32r a0, [0x3fffc730] ; 0x40006158 40008d8f: 1c04 movi.n a4, 16 40008d91: 324c00 s8i a3, a12, 0 40008d94: 0c03 movi.n a3, 0 40008d96: 0800 l32i.n a0, a0, 0 40008d98: 720200 l8ui a7, a2, 0 40008d9b: 022027 l32i a0, a0, 156 40008d9e: 22a077 movi a2, 119 40008da1: c00000 callx0 a0 40008da4: 720c00 l8ui a7, a12, 0 40008da7: 22a077 movi a2, 119 40008daa: 0c03 movi.n a3, 0 40008dac: 01ebf4 l32r a0, [0x3fffc730] ; 0x40006158 40008daf: 0cf4 movi.n a4, 15 40008db1: 0800 l32i.n a0, a0, 0 40008db3: 0c65 movi.n a5, 6 40008db5: 022027 l32i a0, a0, 156 40008db8: 0c66 movi.n a6, 6 40008dba: c00000 callx0 a0 40008dbd: c811 l32i.n a12, a1, 4 40008dbf: 0801 l32i.n a0, a1, 0 40008dc1: 12c110 addi a1, a1, 16 40008dc4: 0df0 ret.n 40008dc6: 0000 40008dc8: 3fffccf0 ; l32r 40008dcc: 3fffd100 ; l32r rijndaelKeySetupDec: 40008dd0: 12c1f0 addi a1, a1, -16 40008dd3: c911 s32i.n a12, a1, 4 40008dd5: 0901 s32i.n a0, a1, 0 40008dd7: cd02 mov.n a12, a2 40008dd9: 455200 call0 rijndaelKeySetupEnc ; 0x40009300 40008ddc: 6d0c mov.n a6, a12 40008dde: 2c83 movi.n a3, 40 40008de0: 0c02 movi.n a2, 0 40008de2: 02a0a0 movi a0, 160 40008de5: 000c80 add a0, a12, a0 40008de8: 32c3fc addi a3, a3, -4 40008deb: 4b22 addi.n a2, a2, 4 40008ded: b806 l32i.n a11, a6, 0 40008def: 4800 l32i.n a4, a0, 0 40008df1: 02c0f0 addi a0, a0, -16 40008df4: 4906 s32i.n a4, a6, 0 40008df6: a850 l32i.n a10, a0, 20 40008df8: b940 s32i.n a11, a0, 16 40008dfa: 9816 l32i.n a9, a6, 4 40008dfc: a916 s32i.n a10, a6, 4 40008dfe: 8860 l32i.n a8, a0, 24 40008e00: 9950 s32i.n a9, a0, 20 40008e02: 7826 l32i.n a7, a6, 8 40008e04: 8926 s32i.n a8, a6, 8 40008e06: 5870 l32i.n a5, a0, 28 40008e08: 7960 s32i.n a7, a0, 24 40008e0a: 4836 l32i.n a4, a6, 12 40008e0c: 5936 s32i.n a5, a6, 12 40008e0e: 4970 s32i.n a4, a0, 28 40008e10: 62c610 addi a6, a6, 16 40008e13: 3722d1 blt a2, a3, 0x40008de8 40008e16: 0c12 movi.n a2, 1 40008e18: 91ecff l32r a9, [Te0] ; [0x3fffccf0] 0x40008dc8 40008e1b: 81ecff l32r a8, [Td0] ; [0x3fffd100] 0x40008dcc 40008e1e: c2cc10 addi a12, a12, 16 40008e21: c00c20 or a0, a12, a12 40008e24: 1b22 addi.n a2, a2, 1 40008e26: 62cc10 addi a6, a12, 16 40008e29: c2cc10 addi a12, a12, 16 40008e2c: a800 l32i.n a10, a0, 0 40008e2e: 104840 ssai 24 40008e31: a0b074 extui a11, a10, 0, 8 40008e34: a07874 extui a7, a10, 8, 8 40008e37: a05875 extui a5, a10, 24, 8 40008e3a: 9055a0 addx4 a5, a5, a9 40008e3d: 9077a0 addx4 a7, a7, a9 40008e40: 90bba0 addx4 a11, a11, a9 40008e43: b80b l32i.n a11, a11, 0 40008e45: 7807 l32i.n a7, a7, 0 40008e47: 5805 l32i.n a5, a5, 0 40008e49: a0a075 extui a10, a10, 16, 8 40008e4c: 505874 extui a5, a5, 8, 8 40008e4f: 707874 extui a7, a7, 8, 8 40008e52: b0b874 extui a11, a11, 8, 8 40008e55: 90aaa0 addx4 a10, a10, a9 40008e58: a80a l32i.n a10, a10, 0 40008e5a: 80bba0 addx4 a11, a11, a8 40008e5d: 8077a0 addx4 a7, a7, a8 40008e60: 8055a0 addx4 a5, a5, a8 40008e63: 5805 l32i.n a5, a5, 0 40008e65: 7807 l32i.n a7, a7, 0 40008e67: b80b l32i.n a11, a11, 0 40008e69: a0a874 extui a10, a10, 8, 8 40008e6c: b0bb81 src a11, a11, a11 40008e6f: 80aaa0 addx4 a10, a10, a8 40008e72: a80a l32i.n a10, a10, 0 40008e74: 104040 ssai 16 40008e77: 707781 src a7, a7, a7 40008e7a: b07730 xor a7, a7, a11 40008e7d: 004840 ssai 8 40008e80: a0aa81 src a10, a10, a10 40008e83: a05530 xor a5, a5, a10 40008e86: 705530 xor a5, a5, a7 40008e89: 5900 s32i.n a5, a0, 0 40008e8b: 4b00 addi.n a0, a0, 4 40008e8d: 67909b bne a0, a6, 0x40008e2c 40008e90: 0d0c mov.n a0, a12 40008e92: 66928e bnei a2, 10, 0x40008e24 40008e95: c811 l32i.n a12, a1, 4 40008e97: 0801 l32i.n a0, a1, 0 40008e99: 12c110 addi a1, a1, 16 40008e9c: 0df0 ret.n 40008e9e: 0000 40008ea0: 3fffea80 ; l32r aes_decrypt_init: 40008ea4: 12c1f0 addi a1, a1, -16 40008ea7: 0901 s32i.n a0, a1, 0 40008ea9: 26b307 beqi a3, 16, 0x40008eb4 40008eac: 0c02 movi.n a2, 0 40008eae: 12c110 addi a1, a1, 16 40008eb1: 0df0 ret.n 40008eb3: 00 40008eb4: 3d02 mov.n a3, a2 40008eb6: 21faff l32r a2, [0x3fffea80] ; 0x40008ea0 40008eb9: 45f1ff call0 rijndaelKeySetupDec ; 0x40008dd0 40008ebc: 21f9ff l32r a2, [0x3fffea80] ; 0x40008ea0 40008ebf: 3801 l32i.n a3, a1, 0 40008ec1: 12c110 addi a1, a1, 16 40008ec4: 0d03 mov.n a0, a3 40008ec6: 0df0 ret.n 40008ec8: 3fffd500 ; l32r sub_8ecc: 40008ecc: 12c1c0 addi a1, a1, -64 40008ecf: e941 s32i.n a14, a1, 16 40008ed1: c921 s32i.n a12, a1, 8 40008ed3: 8812 l32i.n a8, a2, 4 40008ed5: 7822 l32i.n a7, a2, 8 40008ed7: 62030b l8ui a6, a3, 11 40008eda: 5802 l32i.n a5, a2, 0 40008edc: 920304 l8ui a9, a3, 4 40008edf: a20305 l8ui a10, a3, 5 40008ee2: b2030d l8ui a11, a3, 13 40008ee5: 4901 s32i.n a4, a1, 0 40008ee7: d931 s32i.n a13, a1, 12 40008ee9: 0911 s32i.n a0, a1, 4 40008eeb: f951 s32i.n a15, a1, 20 40008eed: 0c50 movi.n a0, 5 40008eef: f1b7ff l32r a15, [Td0] ; [0x3fffd100] 0x40008dcc 40008ef2: d2030e l8ui a13, a3, 14 40008ef5: 420303 l8ui a4, a3, 3 40008ef8: 00bb11 slli a11, a11, 16 40008efb: 00aa11 slli a10, a10, 16 40008efe: 809901 slli a9, a9, 24 40008f01: 504430 xor a4, a4, a5 40008f04: 706630 xor a6, a6, a7 40008f07: 520300 l8ui a5, a3, 0 40008f0a: a09930 xor a9, a9, a10 40008f0d: 720307 l8ui a7, a3, 7 40008f10: a20309 l8ui a10, a3, 9 40008f13: 807730 xor a7, a7, a8 40008f16: 820301 l8ui a8, a3, 1 40008f19: 805501 slli a5, a5, 24 40008f1c: 008811 slli a8, a8, 16 40008f1f: 805530 xor a5, a5, a8 40008f22: 820308 l8ui a8, a3, 8 40008f25: 00aa11 slli a10, a10, 16 40008f28: 808801 slli a8, a8, 24 40008f2b: a08830 xor a8, a8, a10 40008f2e: a2030c l8ui a10, a3, 12 40008f31: 80dd11 slli a13, a13, 8 40008f34: 80aa01 slli a10, a10, 24 40008f37: b0aa30 xor a10, a10, a11 40008f3a: d0aa30 xor a10, a10, a13 40008f3d: b2030a l8ui a11, a3, 10 40008f40: d20306 l8ui a13, a3, 6 40008f43: 80bb11 slli a11, a11, 8 40008f46: 80dd11 slli a13, a13, 8 40008f49: b08830 xor a8, a8, a11 40008f4c: 806630 xor a6, a6, a8 40008f4f: d09930 xor a9, a9, a13 40008f52: b20302 l8ui a11, a3, 2 40008f55: 907730 xor a7, a7, a9 40008f58: 92030f l8ui a9, a3, 15 40008f5b: 80bb11 slli a11, a11, 8 40008f5e: b05530 xor a5, a5, a11 40008f61: b832 l32i.n a11, a2, 12 40008f63: 504430 xor a4, a4, a5 40008f66: b09930 xor a9, a9, a11 40008f69: a03930 xor a3, a9, a10 40008f6c: 0b00 addi.n a0, a0, -1 40008f6e: 004840 ssai 8 40008f71: 409874 extui a9, a4, 8, 8 40008f74: 60a875 extui a10, a6, 24, 8 40008f77: 708075 extui a8, a7, 16, 8 40008f7a: 60c074 extui a12, a6, 0, 8 40008f7d: 30b874 extui a11, a3, 8, 8 40008f80: 405075 extui a5, a4, 16, 8 40008f83: 30e075 extui a14, a3, 16, 8 40008f86: 60d874 extui a13, a6, 8, 8 40008f89: f0dda0 addx4 a13, a13, a15 40008f8c: f0eea0 addx4 a14, a14, a15 40008f8f: f055a0 addx4 a5, a5, a15 40008f92: f0bba0 addx4 a11, a11, a15 40008f95: f0cca0 addx4 a12, a12, a15 40008f98: f088a0 addx4 a8, a8, a15 40008f9b: f0aaa0 addx4 a10, a10, a15 40008f9e: f099a0 addx4 a9, a9, a15 40008fa1: 9809 l32i.n a9, a9, 0 40008fa3: a80a l32i.n a10, a10, 0 40008fa5: 8808 l32i.n a8, a8, 0 40008fa7: c80c l32i.n a12, a12, 0 40008fa9: b80b l32i.n a11, a11, 0 40008fab: 5805 l32i.n a5, a5, 0 40008fad: e80e l32i.n a14, a14, 0 40008faf: d80d l32i.n a13, a13, 0 40008fb1: e0ee81 src a14, a14, a14 40008fb4: e961 s32i.n a14, a1, 24 40008fb6: 104040 ssai 16 40008fb9: d0dd81 src a13, a13, a13 40008fbc: 70e074 extui a14, a7, 0, 8 40008fbf: f0eea0 addx4 a14, a14, a15 40008fc2: e80e l32i.n a14, a14, 0 40008fc4: 104840 ssai 24 40008fc7: e0ee81 src a14, a14, a14 40008fca: 004840 ssai 8 40008fcd: 505581 src a5, a5, a5 40008fd0: 104040 ssai 16 40008fd3: b0bb81 src a11, a11, a11 40008fd6: 104840 ssai 24 40008fd9: c0cc81 src a12, a12, a12 40008fdc: 004840 ssai 8 40008fdf: 808881 src a8, a8, a8 40008fe2: 80aa30 xor a10, a10, a8 40008fe5: 104040 ssai 16 40008fe8: 909981 src a9, a9, a9 40008feb: 608075 extui a8, a6, 16, 8 40008fee: 104840 ssai 24 40008ff1: 306875 extui a6, a3, 24, 8 40008ff4: a09930 xor a9, a9, a10 40008ff7: f088a0 addx4 a8, a8, a15 40008ffa: 8808 l32i.n a8, a8, 0 40008ffc: 30a074 extui a10, a3, 0, 8 40008fff: f066a0 addx4 a6, a6, a15 40009002: 6806 l32i.n a6, a6, 0 40009004: 703875 extui a3, a7, 24, 8 40009007: f0aaa0 addx4 a10, a10, a15 4000900a: a80a l32i.n a10, a10, 0 4000900c: f033a0 addx4 a3, a3, a15 4000900f: 3803 l32i.n a3, a3, 0 40009011: a0aa81 src a10, a10, a10 40009014: 004840 ssai 8 40009017: 503330 xor a3, a3, a5 4000901a: 30bb30 xor a11, a11, a3 4000901d: 808881 src a8, a8, a8 40009020: 705874 extui a5, a7, 8, 8 40009023: 104040 ssai 16 40009026: 7852 l32i.n a7, a2, 20 40009028: 403875 extui a3, a4, 24, 8 4000902b: 806630 xor a6, a6, a8 4000902e: f055a0 addx4 a5, a5, a15 40009031: 8842 l32i.n a8, a2, 16 40009033: 5805 l32i.n a5, a5, 0 40009035: f033a0 addx4 a3, a3, a15 40009038: 3803 l32i.n a3, a3, 0 4000903a: c07730 xor a7, a7, a12 4000903d: b07730 xor a7, a7, a11 40009040: 505581 src a5, a5, a5 40009043: e08830 xor a8, a8, a14 40009046: 605530 xor a5, a5, a6 40009049: 6861 l32i.n a6, a1, 24 4000904b: 104840 ssai 24 4000904e: 603330 xor a3, a3, a6 40009051: 6862 l32i.n a6, a2, 24 40009053: 30dd30 xor a13, a13, a3 40009056: d08830 xor a8, a8, a13 40009059: 3872 l32i.n a3, a2, 28 4000905b: a06630 xor a6, a6, a10 4000905e: 906630 xor a6, a6, a9 40009061: 409074 extui a9, a4, 0, 8 40009064: f099a0 addx4 a9, a9, a15 40009067: 9809 l32i.n a9, a9, 0 40009069: 22c220 addi a2, a2, 32 4000906c: 909981 src a9, a9, a9 4000906f: 903330 xor a3, a3, a9 40009072: 503330 xor a3, a3, a5 40009075: 167010 beqz a0, 0x40009180 40009078: 004840 ssai 8 4000907b: 809874 extui a9, a8, 8, 8 4000907e: 60a875 extui a10, a6, 24, 8 40009081: 704075 extui a4, a7, 16, 8 40009084: 60c074 extui a12, a6, 0, 8 40009087: 30b874 extui a11, a3, 8, 8 4000908a: 805075 extui a5, a8, 16, 8 4000908d: 0971 s32i.n a0, a1, 28 4000908f: 60e874 extui a14, a6, 8, 8 40009092: 70d074 extui a13, a7, 0, 8 40009095: f0dda0 addx4 a13, a13, a15 40009098: f0eea0 addx4 a14, a14, a15 4000909b: 300075 extui a0, a3, 16, 8 4000909e: f055a0 addx4 a5, a5, a15 400090a1: f0bba0 addx4 a11, a11, a15 400090a4: f0cca0 addx4 a12, a12, a15 400090a7: f044a0 addx4 a4, a4, a15 400090aa: f0aaa0 addx4 a10, a10, a15 400090ad: f099a0 addx4 a9, a9, a15 400090b0: 9809 l32i.n a9, a9, 0 400090b2: a80a l32i.n a10, a10, 0 400090b4: 4804 l32i.n a4, a4, 0 400090b6: c80c l32i.n a12, a12, 0 400090b8: b80b l32i.n a11, a11, 0 400090ba: 5805 l32i.n a5, a5, 0 400090bc: f000a0 addx4 a0, a0, a15 400090bf: 0800 l32i.n a0, a0, 0 400090c1: e80e l32i.n a14, a14, 0 400090c3: 000081 src a0, a0, a0 400090c6: 104040 ssai 16 400090c9: d80d l32i.n a13, a13, 0 400090cb: e0ee81 src a14, a14, a14 400090ce: 104840 ssai 24 400090d1: d0dd81 src a13, a13, a13 400090d4: 004840 ssai 8 400090d7: 505581 src a5, a5, a5 400090da: 104040 ssai 16 400090dd: b0bb81 src a11, a11, a11 400090e0: 104840 ssai 24 400090e3: c0cc81 src a12, a12, a12 400090e6: 004840 ssai 8 400090e9: 404481 src a4, a4, a4 400090ec: 40aa30 xor a10, a10, a4 400090ef: 104040 ssai 16 400090f2: 909981 src a9, a9, a9 400090f5: 604075 extui a4, a6, 16, 8 400090f8: 104840 ssai 24 400090fb: 806875 extui a6, a8, 24, 8 400090fe: a09930 xor a9, a9, a10 40009101: f044a0 addx4 a4, a4, a15 40009104: 4804 l32i.n a4, a4, 0 40009106: 30a074 extui a10, a3, 0, 8 40009109: f066a0 addx4 a6, a6, a15 4000910c: 6806 l32i.n a6, a6, 0 4000910e: 303875 extui a3, a3, 24, 8 40009111: f0aaa0 addx4 a10, a10, a15 40009114: a80a l32i.n a10, a10, 0 40009116: f033a0 addx4 a3, a3, a15 40009119: 006630 xor a6, a6, a0 4000911c: 3803 l32i.n a3, a3, 0 4000911e: 0871 l32i.n a0, a1, 28 40009120: a0aa81 src a10, a10, a10 40009123: 606e30 xor a6, a14, a6 40009126: 004840 ssai 8 40009129: 404481 src a4, a4, a4 4000912c: 403330 xor a3, a3, a4 4000912f: 704875 extui a4, a7, 24, 8 40009132: f044a0 addx4 a4, a4, a15 40009135: 4804 l32i.n a4, a4, 0 40009137: 104040 ssai 16 4000913a: 504430 xor a4, a4, a5 4000913d: 705874 extui a5, a7, 8, 8 40009140: 40bb30 xor a11, a11, a4 40009143: 7812 l32i.n a7, a2, 4 40009145: 4802 l32i.n a4, a2, 0 40009147: f055a0 addx4 a5, a5, a15 4000914a: 5805 l32i.n a5, a5, 0 4000914c: d04430 xor a4, a4, a13 4000914f: c07730 xor a7, a7, a12 40009152: b07730 xor a7, a7, a11 40009155: 505581 src a5, a5, a5 40009158: 604430 xor a4, a4, a6 4000915b: 104840 ssai 24 4000915e: 6822 l32i.n a6, a2, 8 40009160: 305530 xor a5, a5, a3 40009163: a06630 xor a6, a6, a10 40009166: 906630 xor a6, a6, a9 40009169: 809074 extui a9, a8, 0, 8 4000916c: f099a0 addx4 a9, a9, a15 4000916f: 9809 l32i.n a9, a9, 0 40009171: 3832 l32i.n a3, a2, 12 40009173: 909981 src a9, a9, a9 40009176: 903330 xor a3, a3, a9 40009179: 503330 xor a3, a3, a5 4000917c: 067bff j 0x40008f6c 4000917f: 00 40009180: 30a075 extui a10, a3, 16, 8 40009183: 80b875 extui a11, a8, 24, 8 40009186: 304074 extui a4, a3, 0, 8 40009189: 80e874 extui a14, a8, 8, 8 4000918c: 305875 extui a5, a3, 24, 8 4000918f: 60c074 extui a12, a6, 0, 8 40009192: 609875 extui a9, a6, 24, 8 40009195: 80d075 extui a13, a8, 16, 8 40009198: f14cff l32r a15, [Td4s] ; [0x3fffd500] 0x40008ec8 4000919b: 300874 extui a0, a3, 8, 8 4000919e: 0a0f add.n a0, a15, a0 400091a0: dadf add.n a13, a15, a13 400091a2: 9a9f add.n a9, a15, a9 400091a4: cacf add.n a12, a15, a12 400091a6: 5a5f add.n a5, a15, a5 400091a8: eaef add.n a14, a15, a14 400091aa: 4a4f add.n a4, a15, a4 400091ac: babf add.n a11, a15, a11 400091ae: aaaf add.n a10, a15, a10 400091b0: a20a00 l8ui a10, a10, 0 400091b3: b20b00 l8ui a11, a11, 0 400091b6: 49b1 s32i.n a4, a1, 44 400091b8: e9d1 s32i.n a14, a1, 52 400091ba: 5961 s32i.n a5, a1, 24 400091bc: 803074 extui a3, a8, 0, 8 400091bf: 605874 extui a5, a6, 8, 8 400091c2: 3a3f add.n a3, a15, a3 400091c4: 70e875 extui a14, a7, 24, 8 400091c7: 708075 extui a8, a7, 16, 8 400091ca: 704874 extui a4, a7, 8, 8 400091cd: 4a4f add.n a4, a15, a4 400091cf: 8a8f add.n a8, a15, a8 400091d1: eaef add.n a14, a15, a14 400091d3: 80bb01 slli a11, a11, 24 400091d6: 39c1 s32i.n a3, a1, 48 400091d8: 00aa11 slli a10, a10, 16 400091db: 603075 extui a3, a6, 16, 8 400091de: b0aa30 xor a10, a10, a11 400091e1: 3a3f add.n a3, a15, a3 400091e3: 707074 extui a7, a7, 0, 8 400091e6: 7a7f add.n a7, a15, a7 400091e8: 720700 l8ui a7, a7, 0 400091eb: 5aff add.n a15, a15, a5 400091ed: f20f00 l8ui a15, a15, 0 400091f0: 5802 l32i.n a5, a2, 0 400091f2: 80ff11 slli a15, a15, 8 400091f5: f07730 xor a7, a7, a15 400091f8: f801 l32i.n a15, a1, 0 400091fa: a07730 xor a7, a7, a10 400091fd: 705530 xor a5, a5, a7 40009200: 524f03 s8i a5, a15, 3 40009203: 5070f5 extui a7, a5, 16, 16 40009206: 50a875 extui a10, a5, 24, 8 40009209: a24f00 s8i a10, a15, 0 4000920c: 724f01 s8i a7, a15, 1 4000920f: a8d1 l32i.n a10, a1, 52 40009211: 78b1 l32i.n a7, a1, 44 40009213: 505841 srli a5, a5, 8 40009216: 524f02 s8i a5, a15, 2 40009219: b812 l32i.n a11, a2, 4 4000921b: c20c00 l8ui a12, a12, 0 4000921e: d20d00 l8ui a13, a13, 0 40009221: e20e00 l8ui a14, a14, 0 40009224: 020000 l8ui a0, a0, 0 40009227: 80ee01 slli a14, a14, 24 4000922a: 800011 slli a0, a0, 8 4000922d: 00dd11 slli a13, a13, 16 40009230: 00cc30 xor a12, a12, a0 40009233: 08c1 l32i.n a0, a1, 48 40009235: e0dd30 xor a13, a13, a14 40009238: d0cc30 xor a12, a12, a13 4000923b: c0bb30 xor a11, a11, a12 4000923e: b24f07 s8i a11, a15, 7 40009241: b0d875 extui a13, a11, 24, 8 40009244: b0c0f5 extui a12, a11, 16, 16 40009247: c24f05 s8i a12, a15, 5 4000924a: d24f04 s8i a13, a15, 4 4000924d: c821 l32i.n a12, a1, 8 4000924f: d831 l32i.n a13, a1, 12 40009251: b0b841 srli a11, a11, 8 40009254: b24f06 s8i a11, a15, 6 40009257: 5822 l32i.n a5, a2, 8 40009259: 720700 l8ui a7, a7, 0 4000925c: a20a00 l8ui a10, a10, 0 4000925f: 920900 l8ui a9, a9, 0 40009262: 820800 l8ui a8, a8, 0 40009265: 809901 slli a9, a9, 24 40009268: 008811 slli a8, a8, 16 4000926b: 80aa11 slli a10, a10, 8 4000926e: a07730 xor a7, a7, a10 40009271: 908830 xor a8, a8, a9 40009274: 807730 xor a7, a7, a8 40009277: 705530 xor a5, a5, a7 4000927a: 524f0b s8i a5, a15, 11 4000927d: 5070f5 extui a7, a5, 16, 16 40009280: 508875 extui a8, a5, 24, 8 40009283: 824f08 s8i a8, a15, 8 40009286: 724f09 s8i a7, a15, 9 40009289: 505841 srli a5, a5, 8 4000928c: 524f0a s8i a5, a15, 10 4000928f: e832 l32i.n a14, a2, 12 40009291: 420400 l8ui a4, a4, 0 40009294: 020000 l8ui a0, a0, 0 40009297: 804411 slli a4, a4, 8 4000929a: 400030 xor a0, a0, a4 4000929d: 4861 l32i.n a4, a1, 24 4000929f: 320300 l8ui a3, a3, 0 400092a2: 420400 l8ui a4, a4, 0 400092a5: 003311 slli a3, a3, 16 400092a8: 804401 slli a4, a4, 24 400092ab: 403330 xor a3, a3, a4 400092ae: 300030 xor a0, a0, a3 400092b1: 00ee30 xor a14, a14, a0 400092b4: e24f0f s8i a14, a15, 15 400092b7: e03875 extui a3, a14, 24, 8 400092ba: e000f5 extui a0, a14, 16, 16 400092bd: 024f0d s8i a0, a15, 13 400092c0: 324f0c s8i a3, a15, 12 400092c3: 0811 l32i.n a0, a1, 4 400092c5: e0e841 srli a14, a14, 8 400092c8: e24f0e s8i a14, a15, 14 400092cb: f851 l32i.n a15, a1, 20 400092cd: e841 l32i.n a14, a1, 16 400092cf: 12c140 addi a1, a1, 64 400092d2: 0df0 ret.n aes_decrypt: 400092d4: 12c1f0 addi a1, a1, -16 400092d7: 0901 s32i.n a0, a1, 0 400092d9: 05bfff call0 sub_8ecc ; 0x40008ecc 400092dc: 0801 l32i.n a0, a1, 0 400092de: 12c110 addi a1, a1, 16 400092e1: 0df0 ret.n 400092e3: 00 aes_decrypt_deinit: 400092e4: 32a000 movi a3, 0 400092e7: 42a0b0 movi a4, 176 400092ea: 12c1f0 addi a1, a1, -16 400092ed: 026100 s32i a0, a1, 0 400092f0: 055bf8 call0 ets_memset ; 0x400018a4 400092f3: 022100 l32i a0, a1, 0 400092f6: 12c110 addi a1, a1, 16 400092f9: 0df0 ret.n 400092fb: 00 400092fc: 3fffd0f0 ; l32r rijndaelKeySetupEnc: 40009300: 913edc l32r a9, [0x00ff0000] ; 0x400003f8 40009303: 813cdc l32r a8, [0x0000ff00] ; 0x400003f4 40009306: 12c1f0 addi a1, a1, -16 40009309: 613cdc l32r a6, [0xff000000] ; 0x400003fc 4000930c: a20303 l8ui a10, a3, 3 4000930f: c911 s32i.n a12, a1, 4 40009311: 420302 l8ui a4, a3, 2 40009314: 0901 s32i.n a0, a1, 0 40009316: d921 s32i.n a13, a1, 8 40009318: e931 s32i.n a14, a1, 12 4000931a: d20300 l8ui a13, a3, 0 4000931d: e20301 l8ui a14, a3, 1 40009320: 01f7ff l32r a0, [rcons] ; [0x3fffd0f0] 0x400092fc 40009323: 804411 slli a4, a4, 8 40009326: abb0 addi.n a11, a0, 10 40009328: c2d0fc addmi a12, a0, 0xfffffc00 4000932b: 40aa30 xor a10, a10, a4 4000932e: 00ee11 slli a14, a14, 16 40009331: 80dd01 slli a13, a13, 24 40009334: e0dd30 xor a13, a13, a14 40009337: d0aa30 xor a10, a10, a13 4000933a: a902 s32i.n a10, a2, 0 4000933c: 420307 l8ui a4, a3, 7 4000933f: a20306 l8ui a10, a3, 6 40009342: 720305 l8ui a7, a3, 5 40009345: 520304 l8ui a5, a3, 4 40009348: 007711 slli a7, a7, 16 4000934b: 805501 slli a5, a5, 24 4000934e: 80aa11 slli a10, a10, 8 40009351: a04430 xor a4, a4, a10 40009354: 705530 xor a5, a5, a7 40009357: 504430 xor a4, a4, a5 4000935a: 4912 s32i.n a4, a2, 4 4000935c: a2030b l8ui a10, a3, 11 4000935f: 42030a l8ui a4, a3, 10 40009362: e20309 l8ui a14, a3, 9 40009365: d20308 l8ui a13, a3, 8 40009368: 00ee11 slli a14, a14, 16 4000936b: 80dd01 slli a13, a13, 24 4000936e: 804411 slli a4, a4, 8 40009371: 40aa30 xor a10, a10, a4 40009374: e0dd30 xor a13, a13, a14 40009377: d0aa30 xor a10, a10, a13 4000937a: a922 s32i.n a10, a2, 8 4000937c: 42030f l8ui a4, a3, 15 4000937f: a2030e l8ui a10, a3, 14 40009382: 72030d l8ui a7, a3, 13 40009385: 52030c l8ui a5, a3, 12 40009388: 007711 slli a7, a7, 16 4000938b: 805501 slli a5, a5, 24 4000938e: 80aa11 slli a10, a10, 8 40009391: a04430 xor a4, a4, a10 40009394: 705530 xor a5, a5, a7 40009397: 504430 xor a4, a4, a5 4000939a: 4932 s32i.n a4, a2, 12 4000939c: 4812 l32i.n a4, a2, 4 4000939e: 3832 l32i.n a3, a2, 12 400093a0: 520000 l8ui a5, a0, 0 400093a3: 1b00 addi.n a0, a0, 1 400093a5: 805501 slli a5, a5, 24 400093a8: 30d075 extui a13, a3, 16, 8 400093ab: 307875 extui a7, a3, 24, 8 400093ae: 30e874 extui a14, a3, 8, 8 400093b1: 30a074 extui a10, a3, 0, 8 400093b4: c0aaa0 addx4 a10, a10, a12 400093b7: c0eea0 addx4 a14, a14, a12 400093ba: c077a0 addx4 a7, a7, a12 400093bd: c0dda0 addx4 a13, a13, a12 400093c0: d80d l32i.n a13, a13, 0 400093c2: 7807 l32i.n a7, a7, 0 400093c4: e80e l32i.n a14, a14, 0 400093c6: a80a l32i.n a10, a10, 0 400093c8: 90ee10 and a14, a14, a9 400093cb: 80aa10 and a10, a10, a8 400093ce: 707874 extui a7, a7, 8, 8 400093d1: 80dd11 slli a13, a13, 8 400093d4: 60dd10 and a13, a13, a6 400093d7: 705530 xor a5, a5, a7 400093da: e0aa30 xor a10, a10, a14 400093dd: 7802 l32i.n a7, a2, 0 400093df: e822 l32i.n a14, a2, 8 400093e1: d07730 xor a7, a7, a13 400093e4: a07730 xor a7, a7, a10 400093e7: 705530 xor a5, a5, a7 400093ea: 5942 s32i.n a5, a2, 16 400093ec: 504430 xor a4, a4, a5 400093ef: 40ee30 xor a14, a14, a4 400093f2: 4952 s32i.n a4, a2, 20 400093f4: e962 s32i.n a14, a2, 24 400093f6: 30ee30 xor a14, a14, a3 400093f9: e972 s32i.n a14, a2, 28 400093fb: 22c210 addi a2, a2, 16 400093fe: b7909a bne a0, a11, 0x4000939c 40009401: c811 l32i.n a12, a1, 4 40009403: d821 l32i.n a13, a1, 8 40009405: e831 l32i.n a14, a1, 12 40009407: 0801 l32i.n a0, a1, 0 40009409: 12c110 addi a1, a1, 16 4000940c: 0df0 ret.n 4000940e: 0000 aes_unwrap: 40009410: 12c1b0 addi a1, a1, -80 40009413: f9c1 s32i.n a15, a1, 48 40009415: 0981 s32i.n a0, a1, 32 40009417: c991 s32i.n a12, a1, 36 40009419: e9b1 s32i.n a14, a1, 44 4000941b: d9a1 s32i.n a13, a1, 40 4000941d: 39f1 s32i.n a3, a1, 60 4000941f: dd05 mov.n a13, a5 40009421: 3d04 mov.n a3, a4 40009423: ed02 mov.n a14, a2 40009425: cd04 mov.n a12, a4 40009427: 2d01 mov.n a2, a1 40009429: 0c84 movi.n a4, 8 4000942b: 8548f8 call0 ets_memcpy ; 0x400018b4 4000942e: 8b3c addi.n a3, a12, 8 40009430: c8f1 l32i.n a12, a1, 60 40009432: 2d0d mov.n a2, a13 40009434: d0cc11 slli a12, a12, 3 40009437: 4d0c mov.n a4, a12 40009439: 8547f8 call0 ets_memcpy ; 0x400018b4 4000943c: 2d0e mov.n a2, a14 4000943e: 1c03 movi.n a3, 16 40009440: 05a6ff call0 aes_decrypt_init ; 0x40008ea4 40009443: 0d02 mov.n a0, a2 40009445: 16b209 beqz a2, 0x400094e4 40009448: e2c118 addi a14, a1, 24 4000944b: 026110 s32i a0, a1, 64 4000944e: f8f1 l32i.n a15, a1, 60 40009450: da2c add.n a2, a12, a13 40009452: 0c53 movi.n a3, 5 40009454: 39e1 s32i.n a3, a1, 56 40009456: 22c2f8 addi a2, a2, -8 40009459: f0ffa0 addx4 a15, a15, a15 4000945c: 29d1 s32i.n a2, a1, 52 4000945e: 08f1 l32i.n a0, a1, 60 40009460: c8d1 l32i.n a12, a1, 52 40009462: a61044 blti a0, 1, 0x400094aa 40009465: 00df80 add a13, a15, a0 40009468: 22c110 addi a2, a1, 16 4000946b: 3d01 mov.n a3, a1 4000946d: 0c84 movi.n a4, 8 4000946f: 4544f8 call0 ets_memcpy ; 0x400018b4 40009472: 2d0e mov.n a2, a14 40009474: 3d0c mov.n a3, a12 40009476: 020117 l8ui a0, a1, 23 40009479: 0c84 movi.n a4, 8 4000947b: 000d30 xor a0, a13, a0 4000947e: 024117 s8i a0, a1, 23 40009481: 0543f8 call0 ets_memcpy ; 0x400018b4 40009484: 222110 l32i a2, a1, 64 40009487: 32c110 addi a3, a1, 16 4000948a: 4d03 mov.n a4, a3 4000948c: 45e4ff call0 aes_decrypt ; 0x400092d4 4000948f: 2d01 mov.n a2, a1 40009491: 32c110 addi a3, a1, 16 40009494: 0c84 movi.n a4, 8 40009496: c541f8 call0 ets_memcpy ; 0x400018b4 40009499: 2d0c mov.n a2, a12 4000949b: 3d0e mov.n a3, a14 4000949d: 0c84 movi.n a4, 8 4000949f: 4541f8 call0 ets_memcpy ; 0x400018b4 400094a2: c2ccf8 addi a12, a12, -8 400094a5: 0bdd addi.n a13, a13, -1 400094a7: d79fbd bne a15, a13, 0x40009468 400094aa: 32210f l32i a3, a1, 60 400094ad: 22210e l32i a2, a1, 56 400094b0: 30ffc0 sub a15, a15, a3 400094b3: 22c2ff addi a2, a2, -1 400094b6: 29e1 s32i.n a2, a1, 56 400094b8: 6602a2 bnei a2, -1, 0x4000945e 400094bb: 222110 l32i a2, a1, 64 400094be: 45e2ff call0 aes_decrypt_deinit ; 0x400092e4 400094c1: 0d01 mov.n a0, a1 400094c3: 8b21 addi.n a2, a1, 8 400094c5: 32a0a6 movi a3, 166 400094c8: 420000 l8ui a4, a0, 0 400094cb: 1b00 addi.n a0, a0, 1 400094cd: 379413 bne a4, a3, 0x400094e4 400094d0: 2790f4 bne a0, a2, 0x400094c8 400094d3: 0c02 movi.n a2, 0 400094d5: c891 l32i.n a12, a1, 36 400094d7: d8a1 l32i.n a13, a1, 40 400094d9: e8b1 l32i.n a14, a1, 44 400094db: f8c1 l32i.n a15, a1, 48 400094dd: 0881 l32i.n a0, a1, 32 400094df: 12c150 addi a1, a1, 80 400094e2: 0df0 ret.n 400094e4: 7cf2 movi.n a2, -1 400094e6: c891 l32i.n a12, a1, 36 400094e8: d8a1 l32i.n a13, a1, 40 400094ea: e8b1 l32i.n a14, a1, 44 400094ec: f8c1 l32i.n a15, a1, 48 400094ee: 0881 l32i.n a0, a1, 32 400094f0: 12c150 addi a1, a1, 80 400094f3: 0df0 ret.n 400094f5: 000000 400094f8: 3fffd600 ; l32r base64_encode: 400094fc: 12c1e0 addi a1, a1, -32 400094ff: 426101 s32i a4, a1, 4 40009502: 026103 s32i a0, a1, 12 40009505: c941 s32i.n a12, a1, 16 40009507: 2901 s32i.n a2, a1, 0 40009509: cd03 mov.n a12, a3 4000950b: e02311 slli a2, a3, 2 4000950e: 0c33 movi.n a3, 3 40009510: 85d004 call0 __udivsi3 ; 0x4000e21c 40009513: 2921 s32i.n a2, a1, 8 40009515: 4c83 movi.n a3, 72 40009517: 4b22 addi.n a2, a2, 4 40009519: 05d004 call0 __udivsi3 ; 0x4000e21c 4000951c: 0821 l32i.n a0, a1, 8 4000951e: 2a00 add.n a0, a0, a2 40009520: 5b00 addi.n a0, a0, 5 40009522: c7b00a bgeu a0, a12, 0x40009530 40009525: 0c02 movi.n a2, 0 40009527: c841 l32i.n a12, a1, 16 40009529: 0831 l32i.n a0, a1, 12 4000952b: 12c120 addi a1, a1, 32 4000952e: 0df0 ret.n 40009530: 0020f4 extui a2, a0, 0, 16 40009533: c560f8 call0 mem_malloc ; 0x40001b40 40009536: 20a220 or a10, a2, a2 40009539: 1682fe beqz a2, 0x40009525 4000953c: 71efff l32r a7, [0x3fffd600] ; 0x400094f8 4000953f: 82a00a movi a8, 10 40009542: b22100 l32i a11, a1, 0 40009545: 0d0a mov.n a0, a10 40009547: 2d0b mov.n a2, a11 40009549: babc add.n a11, a12, a11 4000954b: e63c02 bgei a12, 3, 0x40009551 4000954e: c63400 j 0x40009625 40009551: 4c79 movi.n a9, 71 40009553: 0c03 movi.n a3, 0 40009555: c2ccfd addi a12, a12, -3 40009558: 520200 l8ui a5, a2, 0 4000955b: 4b33 addi.n a3, a3, 4 4000955d: 505241 srli a5, a5, 2 40009560: 5a57 add.n a5, a7, a5 40009562: 520500 l8ui a5, a5, 0 40009565: 524000 s8i a5, a0, 0 40009568: 420201 l8ui a4, a2, 1 4000956b: 620200 l8ui a6, a2, 0 4000956e: 404441 srli a4, a4, 4 40009571: 606014 extui a6, a6, 0, 2 40009574: c06611 slli a6, a6, 4 40009577: 406620 or a6, a6, a4 4000957a: 6a67 add.n a6, a7, a6 4000957c: 620600 l8ui a6, a6, 0 4000957f: 624001 s8i a6, a0, 1 40009582: 520201 l8ui a5, a2, 1 40009585: 620202 l8ui a6, a2, 2 40009588: 505034 extui a5, a5, 0, 4 4000958b: 606641 srli a6, a6, 6 4000958e: e05511 slli a5, a5, 2 40009591: 605520 or a5, a5, a6 40009594: 5a57 add.n a5, a7, a5 40009596: 520500 l8ui a5, a5, 0 40009599: 524002 s8i a5, a0, 2 4000959c: 420202 l8ui a4, a2, 2 4000959f: 3b22 addi.n a2, a2, 3 400095a1: 404054 extui a4, a4, 0, 6 400095a4: 4a47 add.n a4, a7, a4 400095a6: 420400 l8ui a4, a4, 0 400095a9: 424003 s8i a4, a0, 3 400095ac: 4b00 addi.n a0, a0, 4 400095ae: 37a907 bge a9, a3, 0x400095b9 400095b1: 0c03 movi.n a3, 0 400095b3: 824000 s8i a8, a0, 0 400095b6: 02c001 addi a0, a0, 1 400095b9: e63c98 bgei a12, 3, 0x40009555 400095bc: 271b45 beq a11, a2, 0x40009605 400095bf: 920200 l8ui a9, a2, 0 400095c2: 4b33 addi.n a3, a3, 4 400095c4: 909241 srli a9, a9, 2 400095c7: 9a97 add.n a9, a7, a9 400095c9: 920900 l8ui a9, a9, 0 400095cc: 924000 s8i a9, a0, 0 400095cf: 620200 l8ui a6, a2, 0 400095d2: 3cd9 movi.n a9, 61 400095d4: 606014 extui a6, a6, 0, 2 400095d7: c06611 slli a6, a6, 4 400095da: 261c5a beqi a12, 1, 0x40009638 400095dd: c20201 l8ui a12, a2, 1 400095e0: c0c441 srli a12, a12, 4 400095e3: c0c620 or a12, a6, a12 400095e6: cac7 add.n a12, a7, a12 400095e8: c20c00 l8ui a12, a12, 0 400095eb: c24001 s8i a12, a0, 1 400095ee: b20201 l8ui a11, a2, 1 400095f1: 3b20 addi.n a2, a0, 3 400095f3: b0b034 extui a11, a11, 0, 4 400095f6: 70bba0 addx4 a11, a11, a7 400095f9: b20b00 l8ui a11, a11, 0 400095fc: b24002 s8i a11, a0, 2 400095ff: 924200 s8i a9, a2, 0 40009602: 02c201 addi a0, a2, 1 40009605: 8c33 beqz.n a3, 0x4000960c 40009607: 824000 s8i a8, a0, 0 4000960a: 1b00 addi.n a0, a0, 1 4000960c: 0c03 movi.n a3, 0 4000960e: 2811 l32i.n a2, a1, 4 40009610: 324000 s8i a3, a0, 0 40009613: 9c62 beqz.n a2, 0x4000962d 40009615: c841 l32i.n a12, a1, 16 40009617: a040c0 sub a4, a0, a10 4000961a: 4902 s32i.n a4, a2, 0 4000961c: 0831 l32i.n a0, a1, 12 4000961e: 2d0a mov.n a2, a10 40009620: 12c120 addi a1, a1, 32 40009623: 0df0 ret.n 40009625: 271be3 beq a11, a2, 0x4000960c 40009628: 0c03 movi.n a3, 0 4000962a: 46e4ff j 0x400095bf 4000962d: 2d0a mov.n a2, a10 4000962f: c841 l32i.n a12, a1, 16 40009631: 0831 l32i.n a0, a1, 12 40009633: 12c120 addi a1, a1, 32 40009636: 0df0 ret.n 40009638: 924002 s8i a9, a0, 2 4000963b: 3b20 addi.n a2, a0, 3 4000963d: 7ab6 add.n a11, a6, a7 4000963f: b20b00 l8ui a11, a11, 0 40009642: b24001 s8i a11, a0, 1 40009645: 86edff j 0x400095ff base64_decode: 40009648: 40a420 or a10, a4, a4 4000964b: 82a120 movi a8, 0x120 4000964e: 42a100 movi a4, 0x100 40009651: 8011c0 sub a1, a1, a8 40009654: e26145 s32i a14, a1, 0x114 40009657: a26141 s32i a10, a1, 0x104 4000965a: 026142 s32i a0, a1, 0x108 4000965d: d26144 s32i a13, a1, 0x110 40009660: c26143 s32i a12, a1, 0x10c 40009663: 20d220 or a13, a2, a2 40009666: 30c320 or a12, a3, a3 40009669: 2d01 mov.n a2, a1 4000966b: 32a080 movi a3, 128 4000966e: 4523f8 call0 ets_memset ; 0x400018a4 40009671: 21a1ff l32r a2, [0x3fffd600] ; 0x400094f8 40009674: 0c00 movi.n a0, 0 40009676: ed01 mov.n a14, a1 40009678: 1b30 addi.n a3, a0, 1 4000967a: 520200 l8ui a5, a2, 0 4000967d: 420201 l8ui a4, a2, 1 40009680: 2b22 addi.n a2, a2, 2 40009682: ea44 add.n a4, a4, a14 40009684: ea55 add.n a5, a5, a14 40009686: 024500 s8i a0, a5, 0 40009689: 324400 s8i a3, a4, 0 4000968c: 2b00 addi.n a0, a0, 2 4000968e: 66d0e6 bnei a0, 64, 0x40009678 40009691: 0c03 movi.n a3, 0 40009693: 32413d s8i a3, a1, 61 40009696: 9ccc beqz.n a12, 0x400096b6 40009698: 0c00 movi.n a0, 0 4000969a: 0a5d add.n a5, a13, a0 4000969c: 520500 l8ui a5, a5, 0 4000969f: ea55 add.n a5, a5, a14 400096a1: 520500 l8ui a5, a5, 0 400096a4: 02c001 addi a0, a0, 1 400096a7: 26e501 beqi a5, 128, 0x400096ac 400096aa: 1b33 addi.n a3, a3, 1 400096ac: 079cea bne a12, a0, 0x4000969a 400096af: 8c33 beqz.n a3, 0x400096b6 400096b1: 0c36 movi.n a6, 3 400096b3: 370616 bnone a6, a3, 0x400096cd 400096b6: 0c02 movi.n a2, 0 400096b8: c22143 l32i a12, a1, 0x10c 400096bb: d22144 l32i a13, a1, 0x110 400096be: e22145 l32i a14, a1, 0x114 400096c1: 32a120 movi a3, 0x120 400096c4: 022142 l32i a0, a1, 0x108 400096c7: 3a11 add.n a1, a1, a3 400096c9: 0df0 ret.n 400096cb: 0000 400096cd: 302241 srli a2, a3, 2 400096d0: 202290 addx2 a2, a2, a2 400096d3: 2020f4 extui a2, a2, 0, 16 400096d6: 8546f8 call0 mem_malloc ; 0x40001b40 400096d9: 20b220 or a11, a2, a2 400096dc: 1662fd beqz a2, 0x400096b6 400096df: 162c07 beqz a12, 0x40009755 400096e2: 92d101 addmi a9, a1, 0x100 400096e5: a2a03d movi a10, 61 400096e8: 42a000 movi a4, 0 400096eb: 0c00 movi.n a0, 0 400096ed: 0c03 movi.n a3, 0 400096ef: 060100 j 0x400096f7 400096f2: 0c03 movi.n a3, 0 400096f4: 071c5d beq a12, a0, 0x40009755 400096f7: 0a8d add.n a8, a13, a0 400096f9: 820800 l8ui a8, a8, 0 400096fc: ea78 add.n a7, a8, a14 400096fe: 720700 l8ui a7, a7, 0 40009701: 1b00 addi.n a0, a0, 1 40009703: 26e7ed beqi a7, 128, 0x400096f4 40009706: 905380 add a5, a3, a9 40009709: 724500 s8i a7, a5, 0 4000970c: 1b33 addi.n a3, a3, 1 4000970e: a79802 bne a8, a10, 0x40009714 40009711: 42c401 addi a4, a4, 1 40009714: 6643dc bnei a3, 4, 0x400096f4 40009717: 82d101 addmi a8, a1, 0x100 4000971a: 520803 l8ui a5, a8, 3 4000971d: 320802 l8ui a3, a8, 2 40009720: 720800 l8ui a7, a8, 0 40009723: a06311 slli a6, a3, 6 40009726: e07711 slli a7, a7, 2 40009729: 303241 srli a3, a3, 2 4000972c: 820801 l8ui a8, a8, 1 4000972f: 605520 or a5, a5, a6 40009732: 524b02 s8i a5, a11, 2 40009735: c06811 slli a6, a8, 4 40009738: 306620 or a6, a6, a3 4000973b: 808441 srli a8, a8, 4 4000973e: 807720 or a7, a7, a8 40009741: 624b01 s8i a6, a11, 1 40009744: 724b00 s8i a7, a11, 0 40009747: 3bbb addi.n a11, a11, 3 40009749: 1654fa beqz a4, 0x400096f2 4000974c: 26143c beqi a4, 1, 0x4000978c 4000974f: 66241d bnei a4, 2, 0x40009770 40009752: b2cbfe addi a11, a11, -2 40009755: 022142 l32i a0, a1, 0x108 40009758: c22143 l32i a12, a1, 0x10c 4000975b: d22144 l32i a13, a1, 0x110 4000975e: e22145 l32i a14, a1, 0x114 40009761: 822141 l32i a8, a1, 0x104 40009764: 207bc0 sub a7, a11, a2 40009767: 32a120 movi a3, 0x120 4000976a: 7908 s32i.n a7, a8, 0 4000976c: 3a11 add.n a1, a1, a3 4000976e: 0df0 ret.n 40009770: c526f8 call0 mem_free ; 0x400019e0 40009773: 22a000 movi a2, 0 40009776: c22143 l32i a12, a1, 0x10c 40009779: d22144 l32i a13, a1, 0x110 4000977c: e22145 l32i a14, a1, 0x114 4000977f: 32a120 movi a3, 0x120 40009782: 022142 l32i a0, a1, 0x108 40009785: 301180 add a1, a1, a3 40009788: 800000 ret 4000978b: 00 4000978c: 022142 l32i a0, a1, 0x108 4000978f: c22143 l32i a12, a1, 0x10c 40009792: d22144 l32i a13, a1, 0x110 40009795: e22145 l32i a14, a1, 0x114 40009798: 32a120 movi a3, 0x120 4000979b: 0bbb addi.n a11, a11, -1 4000979d: 822141 l32i a8, a1, 0x104 400097a0: 207bc0 sub a7, a11, a2 400097a3: 7908 s32i.n a7, a8, 0 400097a5: 3a11 add.n a1, a1, a3 400097a7: 0df0 ret.n 400097a9: 000000 md5_vector: 400097ac: 12c190 addi a1, a1, -112 400097af: 326116 s32i a3, a1, 88 400097b2: 026117 s32i a0, a1, 92 400097b5: d26119 s32i a13, a1, 100 400097b8: c26118 s32i a12, a1, 96 400097bb: e2611a s32i a14, a1, 104 400097be: cd04 mov.n a12, a4 400097c0: ed02 mov.n a14, a2 400097c2: dd05 mov.n a13, a5 400097c4: 2d01 mov.n a2, a1 400097c6: 050500 call0 MD5Init ; 0x40009818 400097c9: d2611b s32i a13, a1, 108 400097cc: 9cae beqz.n a14, 0x400097ea 400097ce: d22116 l32i a13, a1, 88 400097d1: d0eea0 addx4 a14, a14, a13 400097d4: 102120 or a2, a1, a1 400097d7: 322d00 l32i a3, a13, 0 400097da: 422c00 l32i a4, a12, 0 400097dd: 450500 call0 MD5Update ; 0x40009834 400097e0: 4bcc addi.n a12, a12, 4 400097e2: 4bdd addi.n a13, a13, 4 400097e4: e79dec bne a13, a14, 0x400097d4 400097e7: d2211b l32i a13, a1, 108 400097ea: 103120 or a3, a1, a1 400097ed: d02d20 or a2, a13, a13 400097f0: c51000 call0 MD5Final ; 0x40009900 400097f3: 22a000 movi a2, 0 400097f6: c22118 l32i a12, a1, 96 400097f9: d22119 l32i a13, a1, 100 400097fc: e2211a l32i a14, a1, 104 400097ff: 022117 l32i a0, a1, 92 40009802: 12c170 addi a1, a1, 112 40009805: 0df0 ret.n 40009807: 00 40009808: 67452301 ; l32r 4000980c: efcdab89 ; l32r 40009810: 98badcfe ; l32r 40009814: 10325476 ; l32r MD5Init: 40009818: 31ffff l32r a3, [0x10325476] ; 0x40009814 4000981b: 41fdff l32r a4, [0x98badcfe] ; 0x40009810 4000981e: 51fbff l32r a5, [0xefcdab89] ; 0x4000980c 40009821: 61f9ff l32r a6, [0x67452301] ; 0x40009808 40009824: 0c07 movi.n a7, 0 40009826: 7942 s32i.n a7, a2, 16 40009828: 7952 s32i.n a7, a2, 20 4000982a: 6902 s32i.n a6, a2, 0 4000982c: 5912 s32i.n a5, a2, 4 4000982e: 4922 s32i.n a4, a2, 8 40009830: 3932 s32i.n a3, a2, 12 40009832: 0df0 ret.n MD5Update: 40009834: 12c1d0 addi a1, a1, -48 40009837: e961 s32i.n a14, a1, 24 40009839: 0931 s32i.n a0, a1, 12 4000983b: 2981 s32i.n a2, a1, 32 4000983d: c941 s32i.n a12, a1, 16 4000983f: d951 s32i.n a13, a1, 20 40009841: f971 s32i.n a15, a1, 28 40009843: dd04 mov.n a13, a4 40009845: fd02 mov.n a15, a2 40009847: cd03 mov.n a12, a3 40009849: 2842 l32i.n a2, a2, 16 4000984b: 085f l32i.n a0, a15, 20 4000984d: 207354 extui a7, a2, 3, 6 40009850: 2034b0 addx8 a3, a4, a2 40009853: 326f04 s32i a3, a15, 16 40009856: d04d25 extui a4, a13, 29, 3 40009859: 27b303 bgeu a3, a2, 0x40009860 4000985c: 1b00 addi.n a0, a0, 1 4000985e: 095f s32i.n a0, a15, 20 40009860: 4a40 add.n a4, a0, a4 40009862: 495f s32i.n a4, a15, 20 40009864: 161709 beqz a7, 0x400098f9 40009867: 4c04 movi.n a4, 64 40009869: fa27 add.n a2, a7, a15 4000986b: 22c218 addi a2, a2, 24 4000986e: 7044c0 sub a4, a4, a7 40009871: 473d6b bltu a13, a4, 0x400098e0 40009874: 3d0c mov.n a3, a12 40009876: 7921 s32i.n a7, a1, 8 40009878: 8503f8 call0 ets_memcpy ; 0x400018b4 4000987b: 2d0f mov.n a2, a15 4000987d: e2cf18 addi a14, a15, 24 40009880: 3d0e mov.n a3, a14 40009882: 851f00 call0 sub_9a7c ; 0x40009a7c 40009885: 0821 l32i.n a0, a1, 8 40009887: dad0 add.n a13, a0, a13 40009889: 00ccc0 sub a12, a12, a0 4000988c: c2cc40 addi a12, a12, 64 4000988f: d2cdc0 addi a13, a13, -64 40009892: b6dd2e bltui a13, 64, 0x400098c4 40009895: d26100 s32i a13, a1, 0 40009898: d02641 srli a2, a13, 6 4000989b: 226101 s32i a2, a1, 4 4000989e: e02e20 or a2, a14, a14 400098a1: c03c20 or a3, a12, a12 400098a4: 4c04 movi.n a4, 64 400098a6: c500f8 call0 ets_memcpy ; 0x400018b4 400098a9: 2d0f mov.n a2, a15 400098ab: e03e20 or a3, a14, a14 400098ae: c51c00 call0 sub_9a7c ; 0x40009a7c 400098b1: c2cc40 addi a12, a12, 64 400098b4: d2cdc0 addi a13, a13, -64 400098b7: f6dde3 bgeui a13, 64, 0x4000989e 400098ba: f811 l32i.n a15, a1, 4 400098bc: d801 l32i.n a13, a1, 0 400098be: a0ff11 slli a15, a15, 6 400098c1: f0ddc0 sub a13, a13, a15 400098c4: e02e20 or a2, a14, a14 400098c7: c03c20 or a3, a12, a12 400098ca: d04d20 or a4, a13, a13 400098cd: 45fef7 call0 ets_memcpy ; 0x400018b4 400098d0: c841 l32i.n a12, a1, 16 400098d2: d851 l32i.n a13, a1, 20 400098d4: e861 l32i.n a14, a1, 24 400098d6: f871 l32i.n a15, a1, 28 400098d8: 0831 l32i.n a0, a1, 12 400098da: 12c130 addi a1, a1, 48 400098dd: 0df0 ret.n 400098df: 00 400098e0: d04d20 or a4, a13, a13 400098e3: c03c20 or a3, a12, a12 400098e6: c5fcf7 call0 ets_memcpy ; 0x400018b4 400098e9: c22104 l32i a12, a1, 16 400098ec: d851 l32i.n a13, a1, 20 400098ee: e861 l32i.n a14, a1, 24 400098f0: f871 l32i.n a15, a1, 28 400098f2: 0831 l32i.n a0, a1, 12 400098f4: 12c130 addi a1, a1, 48 400098f7: 0df0 ret.n 400098f9: e2cf18 addi a14, a15, 24 400098fc: 86e4ff j 0x40009892 400098ff: 00 MD5Final: 40009900: 42a03f movi a4, 63 40009903: 12c1f0 addi a1, a1, -16 40009906: 2901 s32i.n a2, a1, 0 40009908: 0911 s32i.n a0, a1, 4 4000990a: d931 s32i.n a13, a1, 12 4000990c: c921 s32i.n a12, a1, 8 4000990e: d2c318 addi a13, a3, 24 40009911: cd03 mov.n a12, a3 40009913: 084c l32i.n a0, a12, 16 40009915: 32af80 movi a3, -128 40009918: 000354 extui a0, a0, 3, 6 4000991b: 0a2c add.n a2, a12, a0 4000991d: 0044c0 sub a4, a4, a0 40009920: 324218 s8i a3, a2, 24 40009923: 22c219 addi a2, a2, 25 40009926: f6841a bgeui a4, 8, 0x40009944 40009929: 0c03 movi.n a3, 0 4000992b: 85f7f7 call0 ets_memset ; 0x400018a4 4000992e: 2d0c mov.n a2, a12 40009930: 3d0d mov.n a3, a13 40009932: 851400 call0 sub_9a7c ; 0x40009a7c 40009935: 2d0d mov.n a2, a13 40009937: 32a000 movi a3, 0 4000993a: 42a038 movi a4, 56 4000993d: 45f6f7 call0 ets_memset ; 0x400018a4 40009940: 860200 j 0x4000994e 40009943: 00 40009944: 0c03 movi.n a3, 0 40009946: 3c74 movi.n a4, 55 40009948: 0044c0 sub a4, a4, a0 4000994b: 85f5f7 call0 ets_memset ; 0x400018a4 4000994e: 3d0d mov.n a3, a13 40009950: 2d0c mov.n a2, a12 40009952: 585c l32i.n a5, a12, 20 40009954: 684c l32i.n a6, a12, 16 40009956: 626c14 s32i a6, a12, 80 40009959: 526c15 s32i a5, a12, 84 4000995c: c51100 call0 sub_9a7c ; 0x40009a7c 4000995f: 2801 l32i.n a2, a1, 0 40009961: 3d0c mov.n a3, a12 40009963: 1c04 movi.n a4, 16 40009965: c5f4f7 call0 ets_memcpy ; 0x400018b4 40009968: 2d0c mov.n a2, a12 4000996a: 0c03 movi.n a3, 0 4000996c: 0c44 movi.n a4, 4 4000996e: 45f3f7 call0 ets_memset ; 0x400018a4 40009971: c821 l32i.n a12, a1, 8 40009973: d831 l32i.n a13, a1, 12 40009975: 0811 l32i.n a0, a1, 4 40009977: 12c110 addi a1, a1, 16 4000997a: 0df0 ret.n 4000997c: d76aa478 ; l32r 40009980: e8c7b756 ; l32r 40009984: 242070db ; l32r 40009988: c1bdceee ; l32r 4000998c: f57c0faf ; l32r 40009990: 4787c62a ; l32r 40009994: a8304613 ; l32r 40009998: fd469501 ; l32r 4000999c: 698098d8 ; l32r 400099a0: 8b44f7af ; l32r 400099a4: ffff5bb1 ; l32r 400099a8: 895cd7be ; l32r 400099ac: 6b901122 ; l32r 400099b0: fd987193 ; l32r 400099b4: a679438e ; l32r 400099b8: 49b40821 ; l32r 400099bc: f61e2562 ; l32r 400099c0: c040b340 ; l32r 400099c4: 265e5a51 ; l32r 400099c8: e9b6c7aa ; l32r 400099cc: d62f105d ; l32r 400099d0: 02441453 ; l32r 400099d4: d8a1e681 ; l32r 400099d8: e7d3fbc8 ; l32r 400099dc: 21e1cde6 ; l32r 400099e0: c33707d6 ; l32r 400099e4: f4d50d87 ; l32r 400099e8: 455a14ed ; l32r 400099ec: a9e3e905 ; l32r 400099f0: fcefa3f8 ; l32r 400099f4: 676f02d9 ; l32r 400099f8: 8d2a4c8a ; l32r 400099fc: fffa3942 ; l32r 40009a00: 8771f681 ; l32r 40009a04: 6d9d6122 ; l32r 40009a08: fde5380c ; l32r 40009a0c: a4beea44 ; l32r 40009a10: 4bdecfa9 ; l32r 40009a14: f6bb4b60 ; l32r 40009a18: bebfbc70 ; l32r 40009a1c: 289b7ec6 ; l32r 40009a20: eaa127fa ; l32r 40009a24: d4ef3085 ; l32r 40009a28: 04881d05 ; l32r 40009a2c: d9d4d039 ; l32r 40009a30: e6db99e5 ; l32r 40009a34: 1fa27cf8 ; l32r 40009a38: c4ac5665 ; l32r 40009a3c: f4292244 ; l32r 40009a40: 432aff97 ; l32r 40009a44: ab9423a7 ; l32r 40009a48: fc93a039 ; l32r 40009a4c: 655b59c3 ; l32r 40009a50: 8f0ccc92 ; l32r 40009a54: ffeff47d ; l32r 40009a58: 85845dd1 ; l32r 40009a5c: 6fa87e4f ; l32r 40009a60: fe2ce6e0 ; l32r 40009a64: a3014314 ; l32r 40009a68: 4e0811a1 ; l32r 40009a6c: f7537e82 ; l32r 40009a70: bd3af235 ; l32r 40009a74: 2ad7d2bb ; l32r 40009a78: eb86d391 ; l32r sub_9a7c: 40009a7c: 12c1e0 addi a1, a1, -32 40009a7f: 104940 ssai 25 40009a82: 6873 l32i.n a6, a3, 28 40009a84: 4853 l32i.n a4, a3, 20 40009a86: a823 l32i.n a10, a3, 8 40009a88: 7803 l32i.n a7, a3, 0 40009a8a: 9812 l32i.n a9, a2, 4 40009a8c: 0901 s32i.n a0, a1, 0 40009a8e: 8822 l32i.n a8, a2, 8 40009a90: e931 s32i.n a14, a1, 12 40009a92: c911 s32i.n a12, a1, 4 40009a94: d921 s32i.n a13, a1, 8 40009a96: f941 s32i.n a15, a1, 16 40009a98: d813 l32i.n a13, a3, 4 40009a9a: f1b8ff l32r a15, [0xd76aa478] ; 0x4000997c 40009a9d: c832 l32i.n a12, a2, 12 40009a9f: e802 l32i.n a14, a2, 0 40009aa1: 800c30 xor a0, a12, a8 40009aa4: 000910 and a0, a9, a0 40009aa7: 000c30 xor a0, a12, a0 40009aaa: 0a07 add.n a0, a7, a0 40009aac: 0aee add.n a14, a14, a0 40009aae: faee add.n a14, a14, a15 40009ab0: e0ee81 src a14, a14, a14 40009ab3: 90f830 xor a15, a8, a9 40009ab6: 104440 ssai 20 40009ab9: eae9 add.n a14, a9, a14 40009abb: f0fe10 and a15, a14, a15 40009abe: e0b930 xor a11, a9, a14 40009ac1: f0f830 xor a15, a8, a15 40009ac4: fadd add.n a13, a13, a15 40009ac6: dacc add.n a12, a12, a13 40009ac8: d1aeff l32r a13, [0xe8c7b756] ; 0x40009980 40009acb: f843 l32i.n a15, a3, 16 40009acd: dacc add.n a12, a12, a13 40009acf: c0cc81 src a12, a12, a12 40009ad2: cace add.n a12, a14, a12 40009ad4: 004f40 ssai 15 40009ad7: b0bc10 and a11, a12, a11 40009ada: b0b930 xor a11, a9, a11 40009add: baba add.n a11, a10, a11 40009adf: ba88 add.n a8, a8, a11 40009ae1: b1a8ff l32r a11, [0x242070db] ; 0x40009984 40009ae4: c0de30 xor a13, a14, a12 40009ae7: ba88 add.n a8, a8, a11 40009ae9: b833 l32i.n a11, a3, 12 40009aeb: 808881 src a8, a8, a8 40009aee: 8a8c add.n a8, a12, a8 40009af0: 004a40 ssai 10 40009af3: d0d810 and a13, a8, a13 40009af6: d0de30 xor a13, a14, a13 40009af9: dabb add.n a11, a11, a13 40009afb: ba99 add.n a9, a9, a11 40009afd: b1a2ff l32r a11, [0xc1bdceee] ; 0x40009988 40009b00: c00830 xor a0, a8, a12 40009b03: ba99 add.n a9, a9, a11 40009b05: b863 l32i.n a11, a3, 24 40009b07: 909981 src a9, a9, a9 40009b0a: 9a98 add.n a9, a8, a9 40009b0c: 104940 ssai 25 40009b0f: 000910 and a0, a9, a0 40009b12: 000c30 xor a0, a12, a0 40009b15: 0aff add.n a15, a15, a0 40009b17: faee add.n a14, a14, a15 40009b19: f19cff l32r a15, [0xf57c0faf] ; 0x4000998c 40009b1c: 80d930 xor a13, a9, a8 40009b1f: faee add.n a14, a14, a15 40009b21: e0ee81 src a14, a14, a14 40009b24: f883 l32i.n a15, a3, 32 40009b26: eae9 add.n a14, a9, a14 40009b28: d0de10 and a13, a14, a13 40009b2b: d0d830 xor a13, a8, a13 40009b2e: dad4 add.n a13, a4, a13 40009b30: dacc add.n a12, a12, a13 40009b32: d197ff l32r a13, [0x4787c62a] ; 0x40009990 40009b35: 104440 ssai 20 40009b38: dacc add.n a12, a12, a13 40009b3a: c0cc81 src a12, a12, a12 40009b3d: 90de30 xor a13, a14, a9 40009b40: cace add.n a12, a14, a12 40009b42: d0dc10 and a13, a12, a13 40009b45: d0d930 xor a13, a9, a13 40009b48: dabb add.n a11, a11, a13 40009b4a: ba88 add.n a8, a8, a11 40009b4c: b192ff l32r a11, [0xa8304613] ; 0x40009994 40009b4f: 004f40 ssai 15 40009b52: ba88 add.n a8, a8, a11 40009b54: c0be30 xor a11, a14, a12 40009b57: 808881 src a8, a8, a8 40009b5a: 8a8c add.n a8, a12, a8 40009b5c: 004a40 ssai 10 40009b5f: b0b810 and a11, a8, a11 40009b62: b0be30 xor a11, a14, a11 40009b65: bab6 add.n a11, a6, a11 40009b67: ba99 add.n a9, a9, a11 40009b69: b18bff l32r a11, [0xfd469501] ; 0x40009998 40009b6c: c00830 xor a0, a8, a12 40009b6f: ba99 add.n a9, a9, a11 40009b71: 909981 src a9, a9, a9 40009b74: b893 l32i.n a11, a3, 36 40009b76: 104940 ssai 25 40009b79: 9a98 add.n a9, a8, a9 40009b7b: 000910 and a0, a9, a0 40009b7e: 80d930 xor a13, a9, a8 40009b81: 000c30 xor a0, a12, a0 40009b84: 0aff add.n a15, a15, a0 40009b86: faee add.n a14, a14, a15 40009b88: f185ff l32r a15, [0x698098d8] ; 0x4000999c 40009b8b: 08c3 l32i.n a0, a3, 48 40009b8d: faee add.n a14, a14, a15 40009b8f: e0ee81 src a14, a14, a14 40009b92: eae9 add.n a14, a9, a14 40009b94: 104440 ssai 20 40009b97: d0de10 and a13, a14, a13 40009b9a: d0d830 xor a13, a8, a13 40009b9d: dadb add.n a13, a11, a13 40009b9f: dacc add.n a12, a12, a13 40009ba1: d17fff l32r a13, [0x8b44f7af] ; 0x400099a0 40009ba4: 90fe30 xor a15, a14, a9 40009ba7: dacc add.n a12, a12, a13 40009ba9: d8a3 l32i.n a13, a3, 40 40009bab: c0cc81 src a12, a12, a12 40009bae: cace add.n a12, a14, a12 40009bb0: 004f40 ssai 15 40009bb3: f0fc10 and a15, a12, a15 40009bb6: f0f930 xor a15, a9, a15 40009bb9: fadd add.n a13, a13, a15 40009bbb: da88 add.n a8, a8, a13 40009bbd: d179ff l32r a13, [0xffff5bb1] ; 0x400099a4 40009bc0: f8b3 l32i.n a15, a3, 44 40009bc2: da88 add.n a8, a8, a13 40009bc4: c0de30 xor a13, a14, a12 40009bc7: 808881 src a8, a8, a8 40009bca: 8a8c add.n a8, a12, a8 40009bcc: 004a40 ssai 10 40009bcf: d0d810 and a13, a8, a13 40009bd2: d0de30 xor a13, a14, a13 40009bd5: dadf add.n a13, a15, a13 40009bd7: da99 add.n a9, a9, a13 40009bd9: d173ff l32r a13, [0x895cd7be] ; 0x400099a8 40009bdc: c05830 xor a5, a8, a12 40009bdf: da99 add.n a9, a9, a13 40009be1: d8d3 l32i.n a13, a3, 52 40009be3: 909981 src a9, a9, a9 40009be6: 9a98 add.n a9, a8, a9 40009be8: 104940 ssai 25 40009beb: 505910 and a5, a9, a5 40009bee: 505c30 xor a5, a12, a5 40009bf1: 5a00 add.n a0, a0, a5 40009bf3: 0aee add.n a14, a14, a0 40009bf5: 016dff l32r a0, [0x6b901122] ; 0x400099ac 40009bf8: 58e3 l32i.n a5, a3, 56 40009bfa: 0aee add.n a14, a14, a0 40009bfc: e0ee81 src a14, a14, a14 40009bff: 800930 xor a0, a9, a8 40009c02: eae9 add.n a14, a9, a14 40009c04: 000e10 and a0, a14, a0 40009c07: 000830 xor a0, a8, a0 40009c0a: 0add add.n a13, a13, a0 40009c0c: dacc add.n a12, a12, a13 40009c0e: d168ff l32r a13, [0xfd987193] ; 0x400099b0 40009c11: 104440 ssai 20 40009c14: dacc add.n a12, a12, a13 40009c16: 90de30 xor a13, a14, a9 40009c19: c0cc81 src a12, a12, a12 40009c1c: cace add.n a12, a14, a12 40009c1e: 004f40 ssai 15 40009c21: d0dc10 and a13, a12, a13 40009c24: d0d930 xor a13, a9, a13 40009c27: dad5 add.n a13, a5, a13 40009c29: da88 add.n a8, a8, a13 40009c2b: d162ff l32r a13, [0xa679438e] ; 0x400099b4 40009c2e: c00e30 xor a0, a14, a12 40009c31: da88 add.n a8, a8, a13 40009c33: d8f3 l32i.n a13, a3, 60 40009c35: 808881 src a8, a8, a8 40009c38: 8a8c add.n a8, a12, a8 40009c3a: 004a40 ssai 10 40009c3d: 000810 and a0, a8, a0 40009c40: 000e30 xor a0, a14, a0 40009c43: 0add add.n a13, a13, a0 40009c45: da99 add.n a9, a9, a13 40009c47: d15cff l32r a13, [0x49b40821] ; 0x400099b8 40009c4a: 0813 l32i.n a0, a3, 4 40009c4c: da99 add.n a9, a9, a13 40009c4e: 909981 src a9, a9, a9 40009c51: 9a98 add.n a9, a8, a9 40009c53: 104b40 ssai 27 40009c56: 80d930 xor a13, a9, a8 40009c59: d0dc10 and a13, a12, a13 40009c5c: d0d830 xor a13, a8, a13 40009c5f: da00 add.n a0, a0, a13 40009c61: 0aee add.n a14, a14, a0 40009c63: 0156ff l32r a0, [0xf61e2562] ; 0x400099bc 40009c66: d863 l32i.n a13, a3, 24 40009c68: 0aee add.n a14, a14, a0 40009c6a: e0ee81 src a14, a14, a14 40009c6d: eae9 add.n a14, a9, a14 40009c6f: 900e30 xor a0, a14, a9 40009c72: 000810 and a0, a8, a0 40009c75: 000930 xor a0, a9, a0 40009c78: 0add add.n a13, a13, a0 40009c7a: dacc add.n a12, a12, a13 40009c7c: d151ff l32r a13, [0xc040b340] ; 0x400099c0 40009c7f: 104740 ssai 23 40009c82: dacc add.n a12, a12, a13 40009c84: c0cc81 src a12, a12, a12 40009c87: cace add.n a12, a14, a12 40009c89: c0de30 xor a13, a14, a12 40009c8c: d0d910 and a13, a9, a13 40009c8f: d0de30 xor a13, a14, a13 40009c92: dadf add.n a13, a15, a13 40009c94: da88 add.n a8, a8, a13 40009c96: d14bff l32r a13, [0x265e5a51] ; 0x400099c4 40009c99: 104240 ssai 18 40009c9c: da88 add.n a8, a8, a13 40009c9e: 808881 src a8, a8, a8 40009ca1: 8a8c add.n a8, a12, a8 40009ca3: c0d830 xor a13, a8, a12 40009ca6: d0de10 and a13, a14, a13 40009ca9: d0dc30 xor a13, a12, a13 40009cac: dad7 add.n a13, a7, a13 40009cae: da99 add.n a9, a9, a13 40009cb0: d146ff l32r a13, [0xe9b6c7aa] ; 0x400099c8 40009cb3: 004c40 ssai 12 40009cb6: da99 add.n a9, a9, a13 40009cb8: 909981 src a9, a9, a9 40009cbb: d8a3 l32i.n a13, a3, 40 40009cbd: 9a98 add.n a9, a8, a9 40009cbf: 800930 xor a0, a9, a8 40009cc2: 000c10 and a0, a12, a0 40009cc5: 000830 xor a0, a8, a0 40009cc8: 0a04 add.n a0, a4, a0 40009cca: 0aee add.n a14, a14, a0 40009ccc: 0140ff l32r a0, [0xd62f105d] ; 0x400099cc 40009ccf: 104b40 ssai 27 40009cd2: 0aee add.n a14, a14, a0 40009cd4: e0ee81 src a14, a14, a14 40009cd7: eae9 add.n a14, a9, a14 40009cd9: 900e30 xor a0, a14, a9 40009cdc: 000810 and a0, a8, a0 40009cdf: 000930 xor a0, a9, a0 40009ce2: 0add add.n a13, a13, a0 40009ce4: dacc add.n a12, a12, a13 40009ce6: d13aff l32r a13, [0x02441453] ; 0x400099d0 40009ce9: 104740 ssai 23 40009cec: dacc add.n a12, a12, a13 40009cee: c0cc81 src a12, a12, a12 40009cf1: d8f3 l32i.n a13, a3, 60 40009cf3: cace add.n a12, a14, a12 40009cf5: c00e30 xor a0, a14, a12 40009cf8: 000910 and a0, a9, a0 40009cfb: 000e30 xor a0, a14, a0 40009cfe: 0add add.n a13, a13, a0 40009d00: da88 add.n a8, a8, a13 40009d02: d134ff l32r a13, [0xd8a1e681] ; 0x400099d4 40009d05: 104240 ssai 18 40009d08: da88 add.n a8, a8, a13 40009d0a: 808881 src a8, a8, a8 40009d0d: d843 l32i.n a13, a3, 16 40009d0f: 8a8c add.n a8, a12, a8 40009d11: c00830 xor a0, a8, a12 40009d14: 000e10 and a0, a14, a0 40009d17: 000c30 xor a0, a12, a0 40009d1a: 0add add.n a13, a13, a0 40009d1c: da99 add.n a9, a9, a13 40009d1e: d12eff l32r a13, [0xe7d3fbc8] ; 0x400099d8 40009d21: 004c40 ssai 12 40009d24: da99 add.n a9, a9, a13 40009d26: 909981 src a9, a9, a9 40009d29: 9a98 add.n a9, a8, a9 40009d2b: 800930 xor a0, a9, a8 40009d2e: 000c10 and a0, a12, a0 40009d31: 000830 xor a0, a8, a0 40009d34: 0a0b add.n a0, a11, a0 40009d36: 0aee add.n a14, a14, a0 40009d38: 0129ff l32r a0, [0x21e1cde6] ; 0x400099dc 40009d3b: 104b40 ssai 27 40009d3e: 0aee add.n a14, a14, a0 40009d40: e0ee81 src a14, a14, a14 40009d43: eae9 add.n a14, a9, a14 40009d45: 90de30 xor a13, a14, a9 40009d48: d0d810 and a13, a8, a13 40009d4b: d0d930 xor a13, a9, a13 40009d4e: dad5 add.n a13, a5, a13 40009d50: dacc add.n a12, a12, a13 40009d52: d123ff l32r a13, [0xc33707d6] ; 0x400099e0 40009d55: 104740 ssai 23 40009d58: dacc add.n a12, a12, a13 40009d5a: c0cc81 src a12, a12, a12 40009d5d: d833 l32i.n a13, a3, 12 40009d5f: cace add.n a12, a14, a12 40009d61: c00e30 xor a0, a14, a12 40009d64: 000910 and a0, a9, a0 40009d67: 000e30 xor a0, a14, a0 40009d6a: 0add add.n a13, a13, a0 40009d6c: da88 add.n a8, a8, a13 40009d6e: d11dff l32r a13, [0xf4d50d87] ; 0x400099e4 40009d71: 104240 ssai 18 40009d74: da88 add.n a8, a8, a13 40009d76: d883 l32i.n a13, a3, 32 40009d78: 808881 src a8, a8, a8 40009d7b: 8a8c add.n a8, a12, a8 40009d7d: 004c40 ssai 12 40009d80: c00830 xor a0, a8, a12 40009d83: 000e10 and a0, a14, a0 40009d86: 000c30 xor a0, a12, a0 40009d89: 0add add.n a13, a13, a0 40009d8b: da99 add.n a9, a9, a13 40009d8d: d116ff l32r a13, [0x455a14ed] ; 0x400099e8 40009d90: 08d3 l32i.n a0, a3, 52 40009d92: da99 add.n a9, a9, a13 40009d94: 909981 src a9, a9, a9 40009d97: 9a98 add.n a9, a8, a9 40009d99: 80d930 xor a13, a9, a8 40009d9c: d0dc10 and a13, a12, a13 40009d9f: d0d830 xor a13, a8, a13 40009da2: da00 add.n a0, a0, a13 40009da4: 0aee add.n a14, a14, a0 40009da6: 0111ff l32r a0, [0xa9e3e905] ; 0x400099ec 40009da9: 104b40 ssai 27 40009dac: 0aee add.n a14, a14, a0 40009dae: e0ee81 src a14, a14, a14 40009db1: eae9 add.n a14, a9, a14 40009db3: 90de30 xor a13, a14, a9 40009db6: d0d810 and a13, a8, a13 40009db9: d0d930 xor a13, a9, a13 40009dbc: dada add.n a13, a10, a13 40009dbe: dacc add.n a12, a12, a13 40009dc0: d10cff l32r a13, [0xfcefa3f8] ; 0x400099f0 40009dc3: 104740 ssai 23 40009dc6: dacc add.n a12, a12, a13 40009dc8: c0cc81 src a12, a12, a12 40009dcb: cace add.n a12, a14, a12 40009dcd: c0de30 xor a13, a14, a12 40009dd0: d0d910 and a13, a9, a13 40009dd3: d0de30 xor a13, a14, a13 40009dd6: dad6 add.n a13, a6, a13 40009dd8: da88 add.n a8, a8, a13 40009dda: d106ff l32r a13, [0x676f02d9] ; 0x400099f4 40009ddd: 104240 ssai 18 40009de0: da88 add.n a8, a8, a13 40009de2: 808881 src a8, a8, a8 40009de5: d8c3 l32i.n a13, a3, 48 40009de7: 8a8c add.n a8, a12, a8 40009de9: c00830 xor a0, a8, a12 40009dec: 000e10 and a0, a14, a0 40009def: 000c30 xor a0, a12, a0 40009df2: 0add add.n a13, a13, a0 40009df4: da99 add.n a9, a9, a13 40009df6: d100ff l32r a13, [0x8d2a4c8a] ; 0x400099f8 40009df9: 004c40 ssai 12 40009dfc: da99 add.n a9, a9, a13 40009dfe: 909981 src a9, a9, a9 40009e01: d883 l32i.n a13, a3, 32 40009e03: 9a98 add.n a9, a8, a9 40009e05: 800930 xor a0, a9, a8 40009e08: 000c30 xor a0, a12, a0 40009e0b: 0a04 add.n a0, a4, a0 40009e0d: 0aee add.n a14, a14, a0 40009e0f: 01fbfe l32r a0, [0xfffa3942] ; 0x400099fc 40009e12: 104c40 ssai 28 40009e15: 0aee add.n a14, a14, a0 40009e17: e0ee81 src a14, a14, a14 40009e1a: eae9 add.n a14, a9, a14 40009e1c: 104540 ssai 21 40009e1f: 900e30 xor a0, a14, a9 40009e22: 000830 xor a0, a8, a0 40009e25: 0add add.n a13, a13, a0 40009e27: dacc add.n a12, a12, a13 40009e29: d1f5fe l32r a13, [0x8771f681] ; 0x40009a00 40009e2c: 0813 l32i.n a0, a3, 4 40009e2e: dacc add.n a12, a12, a13 40009e30: c0cc81 src a12, a12, a12 40009e33: cace add.n a12, a14, a12 40009e35: c0de30 xor a13, a14, a12 40009e38: d0d930 xor a13, a9, a13 40009e3b: dadf add.n a13, a15, a13 40009e3d: da88 add.n a8, a8, a13 40009e3f: d1f1fe l32r a13, [0x6d9d6122] ; 0x40009a04 40009e42: 104040 ssai 16 40009e45: da88 add.n a8, a8, a13 40009e47: 808881 src a8, a8, a8 40009e4a: 8a8c add.n a8, a12, a8 40009e4c: c0d830 xor a13, a8, a12 40009e4f: d0de30 xor a13, a14, a13 40009e52: dad5 add.n a13, a5, a13 40009e54: da99 add.n a9, a9, a13 40009e56: d1ecfe l32r a13, [0xfde5380c] ; 0x40009a08 40009e59: 004940 ssai 9 40009e5c: da99 add.n a9, a9, a13 40009e5e: 909981 src a9, a9, a9 40009e61: 9a98 add.n a9, a8, a9 40009e63: 104c40 ssai 28 40009e66: 80d930 xor a13, a9, a8 40009e69: d0dc30 xor a13, a12, a13 40009e6c: da00 add.n a0, a0, a13 40009e6e: 0aee add.n a14, a14, a0 40009e70: 01e7fe l32r a0, [0xa4beea44] ; 0x40009a0c 40009e73: d843 l32i.n a13, a3, 16 40009e75: 0aee add.n a14, a14, a0 40009e77: e0ee81 src a14, a14, a14 40009e7a: eae9 add.n a14, a9, a14 40009e7c: 900e30 xor a0, a14, a9 40009e7f: 000830 xor a0, a8, a0 40009e82: 0add add.n a13, a13, a0 40009e84: dacc add.n a12, a12, a13 40009e86: d1e2fe l32r a13, [0x4bdecfa9] ; 0x40009a10 40009e89: 104540 ssai 21 40009e8c: dacc add.n a12, a12, a13 40009e8e: c0cc81 src a12, a12, a12 40009e91: cace add.n a12, a14, a12 40009e93: c0de30 xor a13, a14, a12 40009e96: d0d930 xor a13, a9, a13 40009e99: dad6 add.n a13, a6, a13 40009e9b: da88 add.n a8, a8, a13 40009e9d: d1ddfe l32r a13, [0xf6bb4b60] ; 0x40009a14 40009ea0: 104040 ssai 16 40009ea3: da88 add.n a8, a8, a13 40009ea5: d8a3 l32i.n a13, a3, 40 40009ea7: 808881 src a8, a8, a8 40009eaa: 8a8c add.n a8, a12, a8 40009eac: 004940 ssai 9 40009eaf: c00830 xor a0, a8, a12 40009eb2: 000e30 xor a0, a14, a0 40009eb5: 0add add.n a13, a13, a0 40009eb7: da99 add.n a9, a9, a13 40009eb9: d1d7fe l32r a13, [0xbebfbc70] ; 0x40009a18 40009ebc: 08d3 l32i.n a0, a3, 52 40009ebe: da99 add.n a9, a9, a13 40009ec0: 909981 src a9, a9, a9 40009ec3: 9a98 add.n a9, a8, a9 40009ec5: 80d930 xor a13, a9, a8 40009ec8: d0dc30 xor a13, a12, a13 40009ecb: da00 add.n a0, a0, a13 40009ecd: 0aee add.n a14, a14, a0 40009ecf: 01d3fe l32r a0, [0x289b7ec6] ; 0x40009a1c 40009ed2: 104c40 ssai 28 40009ed5: 0aee add.n a14, a14, a0 40009ed7: e0ee81 src a14, a14, a14 40009eda: eae9 add.n a14, a9, a14 40009edc: 90de30 xor a13, a14, a9 40009edf: d0d830 xor a13, a8, a13 40009ee2: dad7 add.n a13, a7, a13 40009ee4: dacc add.n a12, a12, a13 40009ee6: d1cefe l32r a13, [0xeaa127fa] ; 0x40009a20 40009ee9: 104540 ssai 21 40009eec: dacc add.n a12, a12, a13 40009eee: c0cc81 src a12, a12, a12 40009ef1: d833 l32i.n a13, a3, 12 40009ef3: cace add.n a12, a14, a12 40009ef5: c00e30 xor a0, a14, a12 40009ef8: 000930 xor a0, a9, a0 40009efb: 0add add.n a13, a13, a0 40009efd: da88 add.n a8, a8, a13 40009eff: d1c9fe l32r a13, [0xd4ef3085] ; 0x40009a24 40009f02: 104040 ssai 16 40009f05: da88 add.n a8, a8, a13 40009f07: 808881 src a8, a8, a8 40009f0a: d863 l32i.n a13, a3, 24 40009f0c: 8a8c add.n a8, a12, a8 40009f0e: c00830 xor a0, a8, a12 40009f11: 000e30 xor a0, a14, a0 40009f14: 0add add.n a13, a13, a0 40009f16: da99 add.n a9, a9, a13 40009f18: d1c4fe l32r a13, [0x04881d05] ; 0x40009a28 40009f1b: 004940 ssai 9 40009f1e: da99 add.n a9, a9, a13 40009f20: 909981 src a9, a9, a9 40009f23: d8c3 l32i.n a13, a3, 48 40009f25: 9a98 add.n a9, a8, a9 40009f27: 800930 xor a0, a9, a8 40009f2a: 000c30 xor a0, a12, a0 40009f2d: 0a0b add.n a0, a11, a0 40009f2f: 0aee add.n a14, a14, a0 40009f31: 01befe l32r a0, [0xd9d4d039] ; 0x40009a2c 40009f34: 104c40 ssai 28 40009f37: 0aee add.n a14, a14, a0 40009f39: e0ee81 src a14, a14, a14 40009f3c: eae9 add.n a14, a9, a14 40009f3e: 104540 ssai 21 40009f41: 900e30 xor a0, a14, a9 40009f44: 000830 xor a0, a8, a0 40009f47: 0add add.n a13, a13, a0 40009f49: dacc add.n a12, a12, a13 40009f4b: d1b9fe l32r a13, [0xe6db99e5] ; 0x40009a30 40009f4e: 08f3 l32i.n a0, a3, 60 40009f50: dacc add.n a12, a12, a13 40009f52: c0cc81 src a12, a12, a12 40009f55: cace add.n a12, a14, a12 40009f57: c0de30 xor a13, a14, a12 40009f5a: d0d930 xor a13, a9, a13 40009f5d: dad0 add.n a13, a0, a13 40009f5f: da88 add.n a8, a8, a13 40009f61: d1b4fe l32r a13, [0x1fa27cf8] ; 0x40009a34 40009f64: 104040 ssai 16 40009f67: da88 add.n a8, a8, a13 40009f69: 808881 src a8, a8, a8 40009f6c: 8a8c add.n a8, a12, a8 40009f6e: c0d830 xor a13, a8, a12 40009f71: d0de30 xor a13, a14, a13 40009f74: dada add.n a13, a10, a13 40009f76: da99 add.n a9, a9, a13 40009f78: d1b0fe l32r a13, [0xc4ac5665] ; 0x40009a38 40009f7b: 004940 ssai 9 40009f7e: da99 add.n a9, a9, a13 40009f80: 909981 src a9, a9, a9 40009f83: 7cfd movi.n a13, -1 40009f85: d0dc30 xor a13, a12, a13 40009f88: 9a98 add.n a9, a8, a9 40009f8a: 104a40 ssai 26 40009f8d: d0d920 or a13, a9, a13 40009f90: d0d830 xor a13, a8, a13 40009f93: da77 add.n a7, a7, a13 40009f95: 7aee add.n a14, a14, a7 40009f97: 71a9fe l32r a7, [0xf4292244] ; 0x40009a3c 40009f9a: 7cfd movi.n a13, -1 40009f9c: 7aee add.n a14, a14, a7 40009f9e: d07830 xor a7, a8, a13 40009fa1: e0ee81 src a14, a14, a14 40009fa4: eae9 add.n a14, a9, a14 40009fa6: 104640 ssai 22 40009fa9: 707e20 or a7, a14, a7 40009fac: 707930 xor a7, a9, a7 40009faf: 7a66 add.n a6, a6, a7 40009fb1: 6acc add.n a12, a12, a6 40009fb3: 61a3fe l32r a6, [0x432aff97] ; 0x40009a40 40009fb6: 7812 l32i.n a7, a2, 4 40009fb8: 6acc add.n a12, a12, a6 40009fba: c0cc81 src a12, a12, a12 40009fbd: d06930 xor a6, a9, a13 40009fc0: cace add.n a12, a14, a12 40009fc2: 606c20 or a6, a12, a6 40009fc5: 606e30 xor a6, a14, a6 40009fc8: 6a55 add.n a5, a5, a6 40009fca: 5a88 add.n a8, a8, a5 40009fcc: 519efe l32r a5, [0xab9423a7] ; 0x40009a44 40009fcf: 104140 ssai 17 40009fd2: 5a88 add.n a8, a8, a5 40009fd4: d05e30 xor a5, a14, a13 40009fd7: 808881 src a8, a8, a8 40009fda: 8a8c add.n a8, a12, a8 40009fdc: 004b40 ssai 11 40009fdf: 505820 or a5, a8, a5 40009fe2: 505c30 xor a5, a12, a5 40009fe5: 5a44 add.n a4, a4, a5 40009fe7: 4a99 add.n a9, a9, a4 40009fe9: 4197fe l32r a4, [0xfc93a039] ; 0x40009a48 40009fec: d05c30 xor a5, a12, a13 40009fef: 4a99 add.n a9, a9, a4 40009ff1: 48c3 l32i.n a4, a3, 48 40009ff3: 909981 src a9, a9, a9 40009ff6: 9a98 add.n a9, a8, a9 40009ff8: 104a40 ssai 26 40009ffb: 505920 or a5, a9, a5 40009ffe: 505830 xor a5, a8, a5 4000a001: 5a44 add.n a4, a4, a5 4000a003: 4aee add.n a14, a14, a4 4000a005: 4191fe l32r a4, [0x655b59c3] ; 0x40009a4c 4000a008: d05830 xor a5, a8, a13 4000a00b: 4aee add.n a14, a14, a4 4000a00d: 4833 l32i.n a4, a3, 12 4000a00f: e0ee81 src a14, a14, a14 4000a012: eae9 add.n a14, a9, a14 4000a014: 104640 ssai 22 4000a017: 505e20 or a5, a14, a5 4000a01a: 505930 xor a5, a9, a5 4000a01d: 5a44 add.n a4, a4, a5 4000a01f: 4acc add.n a12, a12, a4 4000a021: 418bfe l32r a4, [0x8f0ccc92] ; 0x40009a50 4000a024: d05930 xor a5, a9, a13 4000a027: 4acc add.n a12, a12, a4 4000a029: 48a3 l32i.n a4, a3, 40 4000a02b: c0cc81 src a12, a12, a12 4000a02e: cace add.n a12, a14, a12 4000a030: 104140 ssai 17 4000a033: 505c20 or a5, a12, a5 4000a036: 505e30 xor a5, a14, a5 4000a039: 5a44 add.n a4, a4, a5 4000a03b: 4a88 add.n a8, a8, a4 4000a03d: 4185fe l32r a4, [0xffeff47d] ; 0x40009a54 4000a040: d05e30 xor a5, a14, a13 4000a043: 4a88 add.n a8, a8, a4 4000a045: 4813 l32i.n a4, a3, 4 4000a047: 808881 src a8, a8, a8 4000a04a: 8a8c add.n a8, a12, a8 4000a04c: 004b40 ssai 11 4000a04f: 505820 or a5, a8, a5 4000a052: 505c30 xor a5, a12, a5 4000a055: 5a44 add.n a4, a4, a5 4000a057: 4a99 add.n a9, a9, a4 4000a059: 417ffe l32r a4, [0x85845dd1] ; 0x40009a58 4000a05c: d05c30 xor a5, a12, a13 4000a05f: 4a99 add.n a9, a9, a4 4000a061: 909981 src a9, a9, a9 4000a064: 4883 l32i.n a4, a3, 32 4000a066: 9a98 add.n a9, a8, a9 4000a068: 505920 or a5, a9, a5 4000a06b: 505830 xor a5, a8, a5 4000a06e: 5a44 add.n a4, a4, a5 4000a070: 4aee add.n a14, a14, a4 4000a072: 417afe l32r a4, [0x6fa87e4f] ; 0x40009a5c 4000a075: 104a40 ssai 26 4000a078: 4aee add.n a14, a14, a4 4000a07a: d04830 xor a4, a8, a13 4000a07d: e0ee81 src a14, a14, a14 4000a080: eae9 add.n a14, a9, a14 4000a082: 104640 ssai 22 4000a085: 404e20 or a4, a14, a4 4000a088: 404930 xor a4, a9, a4 4000a08b: 4a00 add.n a0, a0, a4 4000a08d: 0acc add.n a12, a12, a0 4000a08f: 0174fe l32r a0, [0xfe2ce6e0] ; 0x40009a60 4000a092: d04930 xor a4, a9, a13 4000a095: 0acc add.n a12, a12, a0 4000a097: 0863 l32i.n a0, a3, 24 4000a099: c0cc81 src a12, a12, a12 4000a09c: cace add.n a12, a14, a12 4000a09e: 104140 ssai 17 4000a0a1: 404c20 or a4, a12, a4 4000a0a4: 404e30 xor a4, a14, a4 4000a0a7: 4a00 add.n a0, a0, a4 4000a0a9: 0a88 add.n a8, a8, a0 4000a0ab: 016efe l32r a0, [0xa3014314] ; 0x40009a64 4000a0ae: d04e30 xor a4, a14, a13 4000a0b1: 0a88 add.n a8, a8, a0 4000a0b3: 08d3 l32i.n a0, a3, 52 4000a0b5: 808881 src a8, a8, a8 4000a0b8: 8a8c add.n a8, a12, a8 4000a0ba: 004b40 ssai 11 4000a0bd: 404820 or a4, a8, a4 4000a0c0: 404c30 xor a4, a12, a4 4000a0c3: 4a00 add.n a0, a0, a4 4000a0c5: 0a99 add.n a9, a9, a0 4000a0c7: 0168fe l32r a0, [0x4e0811a1] ; 0x40009a68 4000a0ca: d04c30 xor a4, a12, a13 4000a0cd: 0a99 add.n a9, a9, a0 4000a0cf: 0843 l32i.n a0, a3, 16 4000a0d1: 909981 src a9, a9, a9 4000a0d4: 9a98 add.n a9, a8, a9 4000a0d6: 104a40 ssai 26 4000a0d9: 404920 or a4, a9, a4 4000a0dc: 404830 xor a4, a8, a4 4000a0df: 4a00 add.n a0, a0, a4 4000a0e1: 0aee add.n a14, a14, a0 4000a0e3: 0162fe l32r a0, [0xf7537e82] ; 0x40009a6c 4000a0e6: 4802 l32i.n a4, a2, 0 4000a0e8: 0aee add.n a14, a14, a0 4000a0ea: e0ee81 src a14, a14, a14 4000a0ed: d00830 xor a0, a8, a13 4000a0f0: 104640 ssai 22 4000a0f3: eae9 add.n a14, a9, a14 4000a0f5: ea44 add.n a4, a4, a14 4000a0f7: 000e20 or a0, a14, a0 4000a0fa: 000930 xor a0, a9, a0 4000a0fd: 4902 s32i.n a4, a2, 0 4000a0ff: 0aff add.n a15, a15, a0 4000a101: facc add.n a12, a12, a15 4000a103: f15bfe l32r a15, [0xbd3af235] ; 0x40009a70 4000a106: 0801 l32i.n a0, a1, 0 4000a108: facc add.n a12, a12, a15 4000a10a: f832 l32i.n a15, a2, 12 4000a10c: c0cc81 src a12, a12, a12 4000a10f: cace add.n a12, a14, a12 4000a111: caff add.n a15, a15, a12 4000a113: 104140 ssai 17 4000a116: f932 s32i.n a15, a2, 12 4000a118: d0f930 xor a15, a9, a13 4000a11b: d0de30 xor a13, a14, a13 4000a11e: f0fc20 or a15, a12, a15 4000a121: f0ee30 xor a14, a14, a15 4000a124: eaaa add.n a10, a10, a14 4000a126: f841 l32i.n a15, a1, 16 4000a128: aa88 add.n a8, a8, a10 4000a12a: a152fe l32r a10, [0x2ad7d2bb] ; 0x40009a74 4000a12d: e822 l32i.n a14, a2, 8 4000a12f: aa88 add.n a8, a8, a10 4000a131: 808881 src a8, a8, a8 4000a134: a151fe l32r a10, [0xeb86d391] ; 0x40009a78 4000a137: 004b40 ssai 11 4000a13a: 8a8c add.n a8, a12, a8 4000a13c: 8aee add.n a14, a14, a8 4000a13e: d0d820 or a13, a8, a13 4000a141: d0cc30 xor a12, a12, a13 4000a144: e922 s32i.n a14, a2, 8 4000a146: d821 l32i.n a13, a1, 8 4000a148: e831 l32i.n a14, a1, 12 4000a14a: cabb add.n a11, a11, a12 4000a14c: ba99 add.n a9, a9, a11 4000a14e: c811 l32i.n a12, a1, 4 4000a150: aa99 add.n a9, a9, a10 4000a152: 909981 src a9, a9, a9 4000a155: 9a88 add.n a8, a8, a9 4000a157: 8a77 add.n a7, a7, a8 4000a159: 7912 s32i.n a7, a2, 4 4000a15b: 12c120 addi a1, a1, 32 4000a15e: 0df0 ret.n hmac_md5_vector: 4000a160: 82a0d0 movi a8, 208 4000a163: 8011c0 sub a1, a1, a8 4000a166: 32612d s32i a3, a1, 180 4000a169: 22612c s32i a2, a1, 176 4000a16c: 026126 s32i a0, a1, 152 4000a16f: c26127 s32i a12, a1, 156 4000a172: d26128 s32i a13, a1, 160 4000a175: cd06 mov.n a12, a6 4000a177: dd04 mov.n a13, a4 4000a179: 02a0b4 movi a0, 180 4000a17c: 0a01 add.n a0, a1, a0 4000a17e: 4d05 mov.n a4, a5 4000a180: 62a0b0 movi a6, 176 4000a183: 5d07 mov.n a5, a7 4000a185: 6a61 add.n a6, a1, a6 4000a187: b66d02 bltui a13, 6, 0x4000a18d 4000a18a: c63000 j 0x4000a251 4000a18d: 526125 s32i a5, a1, 148 4000a190: 426124 s32i a4, a1, 144 4000a193: 4c02 movi.n a2, 64 4000a195: 37b217 bgeu a2, a3, 0x4000a1b0 4000a198: 3d06 mov.n a3, a6 4000a19a: 0c12 movi.n a2, 1 4000a19c: 5d01 mov.n a5, a1 4000a19e: 004020 or a4, a0, a0 4000a1a1: 8560ff call0 md5_vector ; 0x400097ac 4000a1a4: 56920a bnez a2, 0x4000a251 4000a1a7: 12612c s32i a1, a1, 176 4000a1aa: 82a010 movi a8, 16 4000a1ad: 82612d s32i a8, a1, 180 4000a1b0: 22c110 addi a2, a1, 16 4000a1b3: 32a000 movi a3, 0 4000a1b6: 42a040 movi a4, 64 4000a1b9: 856ef7 call0 ets_memset ; 0x400018a4 4000a1bc: 32212c l32i a3, a1, 176 4000a1bf: 42212d l32i a4, a1, 180 4000a1c2: 22c110 addi a2, a1, 16 4000a1c5: c26129 s32i a12, a1, 164 4000a1c8: 856ef7 call0 ets_memcpy ; 0x400018b4 4000a1cb: 622129 l32i a6, a1, 164 4000a1ce: 02c110 addi a0, a1, 16 4000a1d1: c2c150 addi a12, a1, 80 4000a1d4: 3c62 movi.n a2, 54 4000a1d6: 42c110 addi a4, a1, 16 4000a1d9: 426114 s32i a4, a1, 80 4000a1dc: 520001 l8ui a5, a0, 1 4000a1df: 720000 l8ui a7, a0, 0 4000a1e2: 205530 xor a5, a5, a2 4000a1e5: 207730 xor a7, a7, a2 4000a1e8: 724000 s8i a7, a0, 0 4000a1eb: 524001 s8i a5, a0, 1 4000a1ee: 2b00 addi.n a0, a0, 2 4000a1f0: c790e8 bne a0, a12, 0x4000a1dc 4000a1f3: 4c07 movi.n a7, 64 4000a1f5: 72611c s32i a7, a1, 112 4000a1f8: 165d04 beqz a13, 0x4000a241 4000a1fb: 02c170 addi a0, a1, 112 4000a1fe: 22c150 addi a2, a1, 80 4000a201: b22124 l32i a11, a1, 144 4000a204: 3d06 mov.n a3, a6 4000a206: ad0b mov.n a10, a11 4000a208: b0bda0 addx4 a11, a13, a11 4000a20b: 076d12 bbci a13, 0, 0x4000a221 4000a20e: 4b36 addi.n a3, a6, 4 4000a210: 4b00 addi.n a0, a0, 4 4000a212: 4806 l32i.n a4, a6, 0 4000a214: 522124 l32i a5, a1, 144 4000a217: 4b22 addi.n a2, a2, 4 4000a219: 4ba5 addi.n a10, a5, 4 4000a21b: 5805 l32i.n a5, a5, 0 4000a21d: 5902 s32i.n a5, a2, 0 4000a21f: 4900 s32i.n a4, a0, 0 4000a221: d06141 srli a6, a13, 1 4000a224: 9c96 beqz.n a6, 0x4000a241 4000a226: 9803 l32i.n a9, a3, 0 4000a228: 480a l32i.n a4, a10, 0 4000a22a: 4912 s32i.n a4, a2, 4 4000a22c: 881a l32i.n a8, a10, 4 4000a22e: 9910 s32i.n a9, a0, 4 4000a230: 8baa addi.n a10, a10, 8 4000a232: 7813 l32i.n a7, a3, 4 4000a234: 8922 s32i.n a8, a2, 8 4000a236: 8b33 addi.n a3, a3, 8 4000a238: 7920 s32i.n a7, a0, 8 4000a23a: 8b22 addi.n a2, a2, 8 4000a23c: 8b00 addi.n a0, a0, 8 4000a23e: b79ae4 bne a10, a11, 0x4000a226 4000a241: 1b2d addi.n a2, a13, 1 4000a243: 32c150 addi a3, a1, 80 4000a246: 42c170 addi a4, a1, 112 4000a249: 522125 l32i a5, a1, 148 4000a24c: c555ff call0 md5_vector ; 0x400097ac 4000a24f: 9c12 beqz.n a2, 0x4000a264 4000a251: 7cf2 movi.n a2, -1 4000a253: c22127 l32i a12, a1, 156 4000a256: d22128 l32i a13, a1, 160 4000a259: 32a0d0 movi a3, 208 4000a25c: 022126 l32i a0, a1, 152 4000a25f: 3a11 add.n a1, a1, a3 4000a261: 0df0 ret.n 4000a263: 00 4000a264: 22c110 addi a2, a1, 16 4000a267: 32a000 movi a3, 0 4000a26a: 42a040 movi a4, 64 4000a26d: 4563f7 call0 ets_memset ; 0x400018a4 4000a270: 32212c l32i a3, a1, 176 4000a273: 42212d l32i a4, a1, 180 4000a276: 22c110 addi a2, a1, 16 4000a279: 8563f7 call0 ets_memcpy ; 0x400018b4 4000a27c: 02c110 addi a0, a1, 16 4000a27f: 5cc2 movi.n a2, 92 4000a281: 520001 l8ui a5, a0, 1 4000a284: 620000 l8ui a6, a0, 0 4000a287: 205530 xor a5, a5, a2 4000a28a: 206630 xor a6, a6, a2 4000a28d: 624000 s8i a6, a0, 0 4000a290: 524001 s8i a5, a0, 1 4000a293: 02c002 addi a0, a0, 2 4000a296: c790e7 bne a0, a12, 0x4000a281 4000a299: 22a002 movi a2, 2 4000a29c: 32c150 addi a3, a1, 80 4000a29f: 42c170 addi a4, a1, 112 4000a2a2: 62a010 movi a6, 16 4000a2a5: 522125 l32i a5, a1, 148 4000a2a8: 4c07 movi.n a7, 64 4000a2aa: 82c110 addi a8, a1, 16 4000a2ad: 826114 s32i a8, a1, 80 4000a2b0: 72611c s32i a7, a1, 112 4000a2b3: 526115 s32i a5, a1, 84 4000a2b6: 62611d s32i a6, a1, 116 4000a2b9: 054fff call0 md5_vector ; 0x400097ac 4000a2bc: c22127 l32i a12, a1, 156 4000a2bf: d22128 l32i a13, a1, 160 4000a2c2: 32a0d0 movi a3, 208 4000a2c5: 022126 l32i a0, a1, 152 4000a2c8: 3a11 add.n a1, a1, a3 4000a2ca: 0df0 ret.n hmac_md5: 4000a2cc: 7d06 mov.n a7, a6 4000a2ce: 9d05 mov.n a9, a5 4000a2d0: 12c1d0 addi a1, a1, -48 4000a2d3: 0901 s32i.n a0, a1, 0 4000a2d5: 4961 s32i.n a4, a1, 24 4000a2d7: 52c118 addi a5, a1, 24 4000a2da: 62c11c addi a6, a1, 28 4000a2dd: 9971 s32i.n a9, a1, 28 4000a2df: 0c14 movi.n a4, 1 4000a2e1: c5e7ff call0 hmac_md5_vector ; 0x4000a160 4000a2e4: 0801 l32i.n a0, a1, 0 4000a2e6: 12c130 addi a1, a1, 48 4000a2e9: 0df0 ret.n 4000a2eb: 00 sha1_vector: 4000a2ec: 12c180 addi a1, a1, -128 4000a2ef: 326117 s32i a3, a1, 92 4000a2f2: 026118 s32i a0, a1, 96 4000a2f5: d2611a s32i a13, a1, 104 4000a2f8: c26119 s32i a12, a1, 100 4000a2fb: e2611b s32i a14, a1, 108 4000a2fe: cd04 mov.n a12, a4 4000a300: ed02 mov.n a14, a2 4000a302: dd05 mov.n a13, a5 4000a304: 2d01 mov.n a2, a1 4000a306: c52701 call0 SHA1Init ; 0x4000b584 4000a309: d2611c s32i a13, a1, 112 4000a30c: 9cae beqz.n a14, 0x4000a32a 4000a30e: d22117 l32i a13, a1, 92 4000a311: d0eea0 addx4 a14, a14, a13 4000a314: 102120 or a2, a1, a1 4000a317: 322d00 l32i a3, a13, 0 4000a31a: 422c00 l32i a4, a12, 0 4000a31d: 852801 call0 SHA1Update ; 0x4000b5a8 4000a320: 4bcc addi.n a12, a12, 4 4000a322: 4bdd addi.n a13, a13, 4 4000a324: e79dec bne a13, a14, 0x4000a314 4000a327: d2211c l32i a13, a1, 112 4000a32a: 103120 or a3, a1, a1 4000a32d: d02d20 or a2, a13, a13 4000a330: 453101 call0 SHA1Final ; 0x4000b648 4000a333: 22a000 movi a2, 0 4000a336: c22119 l32i a12, a1, 100 4000a339: d2211a l32i a13, a1, 104 4000a33c: e2211b l32i a14, a1, 108 4000a33f: 32a080 movi a3, 128 4000a342: 022118 l32i a0, a1, 96 4000a345: 3a11 add.n a1, a1, a3 4000a347: 0df0 ret.n 4000a349: 000000 4000a34c: 00ff00ff ; l32r 4000a350: ff00ff00 ; l32r 4000a354: 5a827999 ; l32r 4000a358: 6ed9eba1 ; l32r 4000a35c: 8f1bbcdc ; l32r 4000a360: ca62c1d6 ; l32r SHA1Transform: 4000a364: 42a110 movi a4, 0x110 4000a367: 4011c0 sub a1, a1, a4 4000a36a: 42a040 movi a4, 64 4000a36d: c2611d s32i a12, a1, 116 4000a370: 02611c s32i a0, a1, 112 4000a373: 20c220 or a12, a2, a2 4000a376: 102120 or a2, a1, a1 4000a379: 8553f7 call0 ets_memcpy ; 0x400018b4 4000a37c: c26121 s32i a12, a1, 132 4000a37f: b831 l32i.n a11, a1, 12 4000a381: 3811 l32i.n a3, a1, 4 4000a383: 480c l32i.n a4, a12, 0 4000a385: 51f2ff l32r a5, [0xff00ff00] ; 0x4000a350 4000a388: 91f1ff l32r a9, [0x00ff00ff] ; 0x4000a34c 4000a38b: 104840 ssai 24 4000a38e: 0801 l32i.n a0, a1, 0 4000a390: d2611e s32i a13, a1, 120 4000a393: e2611f s32i a14, a1, 124 4000a396: f26120 s32i a15, a1, 128 4000a399: e84c l32i.n a14, a12, 16 4000a39b: f83c l32i.n a15, a12, 12 4000a39d: d82c l32i.n a13, a12, 8 4000a39f: 002081 src a2, a0, a0 4000a3a2: f08d30 xor a8, a13, a15 4000a3a5: 902210 and a2, a2, a9 4000a3a8: 004840 ssai 8 4000a3ab: 000081 src a0, a0, a0 4000a3ae: 500010 and a0, a0, a5 4000a3b1: 104b40 ssai 27 4000a3b4: 406481 src a6, a4, a4 4000a3b7: 200020 or a0, a0, a2 4000a3ba: 026131 s32i a0, a1, 196 4000a3bd: 104840 ssai 24 4000a3c0: 307381 src a7, a3, a3 4000a3c3: 907710 and a7, a7, a9 4000a3c6: 004840 ssai 8 4000a3c9: 303381 src a3, a3, a3 4000a3cc: 503310 and a3, a3, a5 4000a3cf: 004240 ssai 2 4000a3d2: 703320 or a3, a3, a7 4000a3d5: 781c l32i.n a7, a12, 4 4000a3d7: 3911 s32i.n a3, a1, 4 4000a3d9: 702781 src a2, a7, a7 4000a3dc: 807710 and a7, a7, a8 4000a3df: 104b40 ssai 27 4000a3e2: 8821 l32i.n a8, a1, 8 4000a3e4: 707f30 xor a7, a15, a7 4000a3e7: 7a00 add.n a0, a0, a7 4000a3e9: 6a00 add.n a0, a0, a6 4000a3eb: 71daff l32r a7, [0x5a827999] ; 0x4000a354 4000a3ee: 0aee add.n a14, a14, a0 4000a3f0: d00230 xor a0, a2, a13 4000a3f3: 7aee add.n a14, a14, a7 4000a3f5: e06e81 src a6, a14, a14 4000a3f8: 000410 and a0, a4, a0 4000a3fb: 104840 ssai 24 4000a3fe: 000d30 xor a0, a13, a0 4000a401: 0a03 add.n a0, a3, a0 4000a403: 80a881 src a10, a8, a8 4000a406: 90aa10 and a10, a10, a9 4000a409: 6a00 add.n a0, a0, a6 4000a40b: 004840 ssai 8 4000a40e: 808881 src a8, a8, a8 4000a411: 0aff add.n a15, a15, a0 4000a413: 7aff add.n a15, a15, a7 4000a415: 508810 and a8, a8, a5 4000a418: 004240 ssai 2 4000a41b: 404481 src a4, a4, a4 4000a41e: a08820 or a8, a8, a10 4000a421: 8921 s32i.n a8, a1, 8 4000a423: 400230 xor a0, a2, a4 4000a426: 104b40 ssai 27 4000a429: f06f81 src a6, a15, a15 4000a42c: 000e10 and a0, a14, a0 4000a42f: 104840 ssai 24 4000a432: 000230 xor a0, a2, a0 4000a435: 0a08 add.n a0, a8, a0 4000a437: b0cb81 src a12, a11, a11 4000a43a: 90cc10 and a12, a12, a9 4000a43d: 6a00 add.n a0, a0, a6 4000a43f: 004840 ssai 8 4000a442: b0bb81 src a11, a11, a11 4000a445: 0add add.n a13, a13, a0 4000a447: 7add add.n a13, a13, a7 4000a449: 50bb10 and a11, a11, a5 4000a44c: 004240 ssai 2 4000a44f: e0ee81 src a14, a14, a14 4000a452: c0bb20 or a11, a11, a12 4000a455: b931 s32i.n a11, a1, 12 4000a457: b03330 xor a3, a3, a11 4000a45a: c841 l32i.n a12, a1, 16 4000a45c: e06430 xor a6, a4, a14 4000a45f: 104b40 ssai 27 4000a462: d0ad81 src a10, a13, a13 4000a465: 606f10 and a6, a15, a6 4000a468: 104840 ssai 24 4000a46b: 606430 xor a6, a4, a6 4000a46e: 6a6b add.n a6, a11, a6 4000a470: c00c81 src a0, a12, a12 4000a473: 900010 and a0, a0, a9 4000a476: aa66 add.n a6, a6, a10 4000a478: 004840 ssai 8 4000a47b: c0cc81 src a12, a12, a12 4000a47e: 6a22 add.n a2, a2, a6 4000a480: 7a22 add.n a2, a2, a7 4000a482: 004240 ssai 2 4000a485: 50cc10 and a12, a12, a5 4000a488: 00cc20 or a12, a12, a0 4000a48b: f0ff81 src a15, a15, a15 4000a48e: 0851 l32i.n a0, a1, 20 4000a490: c26130 s32i a12, a1, 192 4000a493: 104b40 ssai 27 4000a496: 20a281 src a10, a2, a2 4000a499: f0ce30 xor a12, a14, a15 4000a49c: 104840 ssai 24 4000a49f: 006081 src a6, a0, a0 4000a4a2: c0cd10 and a12, a13, a12 4000a4a5: c0ce30 xor a12, a14, a12 4000a4a8: 906610 and a6, a6, a9 4000a4ab: 004840 ssai 8 4000a4ae: 000081 src a0, a0, a0 4000a4b1: 500010 and a0, a0, a5 4000a4b4: 004240 ssai 2 4000a4b7: d0dd81 src a13, a13, a13 4000a4ba: 600020 or a0, a0, a6 4000a4bd: 026139 s32i a0, a1, 228 4000a4c0: 622130 l32i a6, a1, 192 4000a4c3: 104b40 ssai 27 4000a4c6: ca66 add.n a6, a6, a12 4000a4c8: aa66 add.n a6, a6, a10 4000a4ca: c861 l32i.n a12, a1, 24 4000a4cc: 6a44 add.n a4, a4, a6 4000a4ce: 7a44 add.n a4, a4, a7 4000a4d0: 406481 src a6, a4, a4 4000a4d3: 104840 ssai 24 4000a4d6: c0ac81 src a10, a12, a12 4000a4d9: 90aa10 and a10, a10, a9 4000a4dc: 004840 ssai 8 4000a4df: c0cc81 src a12, a12, a12 4000a4e2: 50cc10 and a12, a12, a5 4000a4e5: 004240 ssai 2 4000a4e8: a0cc20 or a12, a12, a10 4000a4eb: d0af30 xor a10, a15, a13 4000a4ee: c961 s32i.n a12, a1, 24 4000a4f0: a0a210 and a10, a2, a10 4000a4f3: 202281 src a2, a2, a2 4000a4f6: a0af30 xor a10, a15, a10 4000a4f9: 104b40 ssai 27 4000a4fc: aa00 add.n a0, a0, a10 4000a4fe: 6a00 add.n a0, a0, a6 4000a500: a871 l32i.n a10, a1, 28 4000a502: 0aee add.n a14, a14, a0 4000a504: 7aee add.n a14, a14, a7 4000a506: e06e81 src a6, a14, a14 4000a509: 104840 ssai 24 4000a50c: a00a81 src a0, a10, a10 4000a50f: 900010 and a0, a0, a9 4000a512: 004840 ssai 8 4000a515: a0aa81 src a10, a10, a10 4000a518: 50aa10 and a10, a10, a5 4000a51b: 004240 ssai 2 4000a51e: 00aa20 or a10, a10, a0 4000a521: d00230 xor a0, a2, a13 4000a524: a2612f s32i a10, a1, 188 4000a527: 000410 and a0, a4, a0 4000a52a: 404481 src a4, a4, a4 4000a52d: 000d30 xor a0, a13, a0 4000a530: 104b40 ssai 27 4000a533: 0a0c add.n a0, a12, a0 4000a535: 6a00 add.n a0, a0, a6 4000a537: 0aff add.n a15, a15, a0 4000a539: 7aff add.n a15, a15, a7 4000a53b: f06f81 src a6, a15, a15 4000a53e: 0881 l32i.n a0, a1, 32 4000a540: 104840 ssai 24 4000a543: 00a081 src a10, a0, a0 4000a546: 004840 ssai 8 4000a549: 90aa10 and a10, a10, a9 4000a54c: 000081 src a0, a0, a0 4000a54f: 004240 ssai 2 4000a552: 500010 and a0, a0, a5 4000a555: a00020 or a0, a0, a10 4000a558: 02612e s32i a0, a1, 184 4000a55b: 40a230 xor a10, a2, a4 4000a55e: a0ae10 and a10, a14, a10 4000a561: 02212f l32i a0, a1, 188 4000a564: e0ee81 src a14, a14, a14 4000a567: a0a230 xor a10, a2, a10 4000a56a: 104b40 ssai 27 4000a56d: aa00 add.n a0, a0, a10 4000a56f: 6a00 add.n a0, a0, a6 4000a571: 0add add.n a13, a13, a0 4000a573: 7add add.n a13, a13, a7 4000a575: 6891 l32i.n a6, a1, 36 4000a577: d0ad81 src a10, a13, a13 4000a57a: 104840 ssai 24 4000a57d: 600681 src a0, a6, a6 4000a580: 004840 ssai 8 4000a583: 900010 and a0, a0, a9 4000a586: 606681 src a6, a6, a6 4000a589: 004240 ssai 2 4000a58c: 506610 and a6, a6, a5 4000a58f: 006620 or a6, a6, a0 4000a592: 62612d s32i a6, a1, 180 4000a595: e00430 xor a0, a4, a14 4000a598: 000f10 and a0, a15, a0 4000a59b: 62212e l32i a6, a1, 184 4000a59e: f0ff81 src a15, a15, a15 4000a5a1: 000430 xor a0, a4, a0 4000a5a4: 104b40 ssai 27 4000a5a7: 0a66 add.n a6, a6, a0 4000a5a9: aa66 add.n a6, a6, a10 4000a5ab: 6a22 add.n a2, a2, a6 4000a5ad: 7a22 add.n a2, a2, a7 4000a5af: 20a281 src a10, a2, a2 4000a5b2: 68a1 l32i.n a6, a1, 40 4000a5b4: 104840 ssai 24 4000a5b7: 600681 src a0, a6, a6 4000a5ba: 004840 ssai 8 4000a5bd: 900010 and a0, a0, a9 4000a5c0: 606681 src a6, a6, a6 4000a5c3: 004240 ssai 2 4000a5c6: 506610 and a6, a6, a5 4000a5c9: 006620 or a6, a6, a0 4000a5cc: 62612c s32i a6, a1, 176 4000a5cf: f00e30 xor a0, a14, a15 4000a5d2: 000d10 and a0, a13, a0 4000a5d5: 62212d l32i a6, a1, 180 4000a5d8: d0dd81 src a13, a13, a13 4000a5db: 000e30 xor a0, a14, a0 4000a5de: 104b40 ssai 27 4000a5e1: 0a66 add.n a6, a6, a0 4000a5e3: aa66 add.n a6, a6, a10 4000a5e5: 6a44 add.n a4, a4, a6 4000a5e7: 08b1 l32i.n a0, a1, 44 4000a5e9: 7a44 add.n a4, a4, a7 4000a5eb: 406481 src a6, a4, a4 4000a5ee: 104840 ssai 24 4000a5f1: 00a081 src a10, a0, a0 4000a5f4: 004840 ssai 8 4000a5f7: 90aa10 and a10, a10, a9 4000a5fa: 000081 src a0, a0, a0 4000a5fd: 004240 ssai 2 4000a600: 500010 and a0, a0, a5 4000a603: a00020 or a0, a0, a10 4000a606: 02612b s32i a0, a1, 172 4000a609: d0af30 xor a10, a15, a13 4000a60c: a0a210 and a10, a2, a10 4000a60f: 02212c l32i a0, a1, 176 4000a612: 202281 src a2, a2, a2 4000a615: a0af30 xor a10, a15, a10 4000a618: 104b40 ssai 27 4000a61b: aa00 add.n a0, a0, a10 4000a61d: 6a00 add.n a0, a0, a6 4000a61f: 0aee add.n a14, a14, a0 4000a621: 7aee add.n a14, a14, a7 4000a623: e06e81 src a6, a14, a14 4000a626: 08c1 l32i.n a0, a1, 48 4000a628: 104840 ssai 24 4000a62b: 00a081 src a10, a0, a0 4000a62e: 004840 ssai 8 4000a631: 90aa10 and a10, a10, a9 4000a634: 000081 src a0, a0, a0 4000a637: 004240 ssai 2 4000a63a: 500010 and a0, a0, a5 4000a63d: a00020 or a0, a0, a10 4000a640: 02612a s32i a0, a1, 168 4000a643: d0a230 xor a10, a2, a13 4000a646: a0a410 and a10, a4, a10 4000a649: 02212b l32i a0, a1, 172 4000a64c: 404481 src a4, a4, a4 4000a64f: a0ad30 xor a10, a13, a10 4000a652: 104b40 ssai 27 4000a655: aa00 add.n a0, a0, a10 4000a657: 6a00 add.n a0, a0, a6 4000a659: 0aff add.n a15, a15, a0 4000a65b: 7aff add.n a15, a15, a7 4000a65d: f06f81 src a6, a15, a15 4000a660: 08d1 l32i.n a0, a1, 52 4000a662: 104840 ssai 24 4000a665: 00a081 src a10, a0, a0 4000a668: 004840 ssai 8 4000a66b: 90aa10 and a10, a10, a9 4000a66e: 000081 src a0, a0, a0 4000a671: 004240 ssai 2 4000a674: 500010 and a0, a0, a5 4000a677: a00020 or a0, a0, a10 4000a67a: 026129 s32i a0, a1, 164 4000a67d: 40a230 xor a10, a2, a4 4000a680: a0ae10 and a10, a14, a10 4000a683: 02212a l32i a0, a1, 168 4000a686: e0ee81 src a14, a14, a14 4000a689: a0a230 xor a10, a2, a10 4000a68c: 104b40 ssai 27 4000a68f: aa00 add.n a0, a0, a10 4000a691: 6a00 add.n a0, a0, a6 4000a693: 0add add.n a13, a13, a0 4000a695: 7add add.n a13, a13, a7 4000a697: 68e1 l32i.n a6, a1, 56 4000a699: d0ad81 src a10, a13, a13 4000a69c: 104840 ssai 24 4000a69f: 600681 src a0, a6, a6 4000a6a2: 004840 ssai 8 4000a6a5: 900010 and a0, a0, a9 4000a6a8: 606681 src a6, a6, a6 4000a6ab: 004240 ssai 2 4000a6ae: 506610 and a6, a6, a5 4000a6b1: 006620 or a6, a6, a0 4000a6b4: 626128 s32i a6, a1, 160 4000a6b7: e00430 xor a0, a4, a14 4000a6ba: 000f10 and a0, a15, a0 4000a6bd: 622129 l32i a6, a1, 164 4000a6c0: f0ff81 src a15, a15, a15 4000a6c3: 000430 xor a0, a4, a0 4000a6c6: 104b40 ssai 27 4000a6c9: 0a66 add.n a6, a6, a0 4000a6cb: aa66 add.n a6, a6, a10 4000a6cd: 6a22 add.n a2, a2, a6 4000a6cf: a8f1 l32i.n a10, a1, 60 4000a6d1: 7a22 add.n a2, a2, a7 4000a6d3: 206281 src a6, a2, a2 4000a6d6: 104840 ssai 24 4000a6d9: a00a81 src a0, a10, a10 4000a6dc: 900010 and a0, a0, a9 4000a6df: 004840 ssai 8 4000a6e2: a0aa81 src a10, a10, a10 4000a6e5: f09e30 xor a9, a14, a15 4000a6e8: 004240 ssai 2 4000a6eb: 50aa10 and a10, a10, a5 4000a6ee: 909d10 and a9, a13, a9 4000a6f1: 909e30 xor a9, a14, a9 4000a6f4: 522128 l32i a5, a1, 160 4000a6f7: 00aa20 or a10, a10, a0 4000a6fa: d0dd81 src a13, a13, a13 4000a6fd: a26127 s32i a10, a1, 156 4000a700: 104b40 ssai 27 4000a703: 9a55 add.n a5, a5, a9 4000a705: 6a55 add.n a5, a5, a6 4000a707: 922129 l32i a9, a1, 164 4000a70a: 62212e l32i a6, a1, 184 4000a70d: 5a44 add.n a4, a4, a5 4000a70f: 7a44 add.n a4, a4, a7 4000a711: d05f30 xor a5, a15, a13 4000a714: 906630 xor a6, a6, a9 4000a717: 505210 and a5, a2, a5 4000a71a: 505f30 xor a5, a15, a5 4000a71d: 92212c l32i a9, a1, 176 4000a720: 5a0a add.n a0, a10, a5 4000a722: 405481 src a5, a4, a4 4000a725: a22127 l32i a10, a1, 156 4000a728: 104f40 ssai 31 4000a72b: 5a00 add.n a0, a0, a5 4000a72d: a09930 xor a9, a9, a10 4000a730: 522131 l32i a5, a1, 196 4000a733: 0aee add.n a14, a14, a0 4000a735: 7aee add.n a14, a14, a7 4000a737: 805530 xor a5, a5, a8 4000a73a: 605530 xor a5, a5, a6 4000a73d: 505581 src a5, a5, a5 4000a740: 622128 l32i a6, a1, 160 4000a743: 004240 ssai 2 4000a746: 526126 s32i a5, a1, 152 4000a749: a22126 l32i a10, a1, 152 4000a74c: 022126 l32i a0, a1, 152 4000a74f: 202281 src a2, a2, a2 4000a752: 52212d l32i a5, a1, 180 4000a755: 104b40 ssai 27 4000a758: 605530 xor a5, a5, a6 4000a75b: 503330 xor a3, a3, a5 4000a75e: 622130 l32i a6, a1, 192 4000a761: d05230 xor a5, a2, a13 4000a764: 608830 xor a8, a8, a6 4000a767: 505410 and a5, a4, a5 4000a76a: c06630 xor a6, a6, a12 4000a76d: 505d30 xor a5, a13, a5 4000a770: 5a00 add.n a0, a0, a5 4000a772: 908830 xor a8, a8, a9 4000a775: e05e81 src a5, a14, a14 4000a778: 104f40 ssai 31 4000a77b: 5a00 add.n a0, a0, a5 4000a77d: 0aff add.n a15, a15, a0 4000a77f: 303381 src a3, a3, a3 4000a782: 32613a s32i a3, a1, 232 4000a785: 7aff add.n a15, a15, a7 4000a787: 004240 ssai 2 4000a78a: 404481 src a4, a4, a4 4000a78d: 400230 xor a0, a2, a4 4000a790: 104b40 ssai 27 4000a793: f05f81 src a5, a15, a15 4000a796: 000e10 and a0, a14, a0 4000a799: 104f40 ssai 31 4000a79c: 000230 xor a0, a2, a0 4000a79f: 0a03 add.n a0, a3, a0 4000a7a1: 808881 src a8, a8, a8 4000a7a4: 8921 s32i.n a8, a1, 8 4000a7a6: 004240 ssai 2 4000a7a9: 5a00 add.n a0, a0, a5 4000a7ab: 0add add.n a13, a13, a0 4000a7ad: e0ee81 src a14, a14, a14 4000a7b0: 522139 l32i a5, a1, 228 4000a7b3: 5951 s32i.n a5, a1, 20 4000a7b5: 104b40 ssai 27 4000a7b8: 7add add.n a13, a13, a7 4000a7ba: 02212b l32i a0, a1, 172 4000a7bd: e09430 xor a9, a4, a14 4000a7c0: 50bb30 xor a11, a11, a5 4000a7c3: 909f10 and a9, a15, a9 4000a7c6: 00aa30 xor a10, a10, a0 4000a7c9: 909430 xor a9, a4, a9 4000a7cc: 02212a l32i a0, a1, 168 4000a7cf: b0aa30 xor a10, a10, a11 4000a7d2: 9a98 add.n a9, a8, a9 4000a7d4: d0bd81 src a11, a13, a13 4000a7d7: 104f40 ssai 31 4000a7da: ba99 add.n a9, a9, a11 4000a7dc: 000330 xor a0, a3, a0 4000a7df: 600030 xor a0, a0, a6 4000a7e2: 9a22 add.n a2, a2, a9 4000a7e4: a0aa81 src a10, a10, a10 4000a7e7: a931 s32i.n a10, a1, 12 4000a7e9: 7a22 add.n a2, a2, a7 4000a7eb: 62212f l32i a6, a1, 188 4000a7ee: 004240 ssai 2 4000a7f1: f0ff81 src a15, a15, a15 4000a7f4: 605530 xor a5, a5, a6 4000a7f7: f09e30 xor a9, a14, a15 4000a7fa: 104b40 ssai 27 4000a7fd: 20b281 src a11, a2, a2 4000a800: 909d10 and a9, a13, a9 4000a803: 909e30 xor a9, a14, a9 4000a806: 104f40 ssai 31 4000a809: 000081 src a0, a0, a0 4000a80c: 9a9a add.n a9, a10, a9 4000a80e: 004240 ssai 2 4000a811: ba99 add.n a9, a9, a11 4000a813: 026125 s32i a0, a1, 148 4000a816: b22128 l32i a11, a1, 160 4000a819: 022129 l32i a0, a1, 164 4000a81c: 9a44 add.n a4, a4, a9 4000a81e: d0dd81 src a13, a13, a13 4000a821: 92212d l32i a9, a1, 180 4000a824: 104b40 ssai 27 4000a827: 7a44 add.n a4, a4, a7 4000a829: 206d30 xor a6, a13, a2 4000a82c: 000830 xor a0, a8, a0 4000a82f: 606f30 xor a6, a15, a6 4000a832: 500030 xor a0, a0, a5 4000a835: 522125 l32i a5, a1, 148 4000a838: b0ba30 xor a11, a10, a11 4000a83b: 6a55 add.n a5, a5, a6 4000a83d: 406481 src a6, a4, a4 4000a840: 104f40 ssai 31 4000a843: 6a55 add.n a5, a5, a6 4000a845: 5aee add.n a14, a14, a5 4000a847: 000081 src a0, a0, a0 4000a84a: 0951 s32i.n a0, a1, 20 4000a84c: 004240 ssai 2 4000a84f: 52212e l32i a5, a1, 184 4000a852: 202281 src a2, a2, a2 4000a855: 104b40 ssai 27 4000a858: 50cc30 xor a12, a12, a5 4000a85b: 406230 xor a6, a2, a4 4000a85e: 51befe l32r a5, [0x6ed9eba1] ; 0x4000a358 4000a861: c0bb30 xor a11, a11, a12 4000a864: 606d30 xor a6, a13, a6 4000a867: c22129 l32i a12, a1, 164 4000a86a: 6a60 add.n a6, a0, a6 4000a86c: 5aee add.n a14, a14, a5 4000a86e: e07e81 src a7, a14, a14 4000a871: 104f40 ssai 31 4000a874: 7a66 add.n a6, a6, a7 4000a876: 6aff add.n a15, a15, a6 4000a878: b0bb81 src a11, a11, a11 4000a87b: b961 s32i.n a11, a1, 24 4000a87d: b03330 xor a3, a3, a11 4000a880: 5aff add.n a15, a15, a5 4000a882: 004240 ssai 2 4000a885: 404481 src a4, a4, a4 4000a888: e06430 xor a6, a4, a14 4000a88b: 104b40 ssai 27 4000a88e: f07f81 src a7, a15, a15 4000a891: 606230 xor a6, a2, a6 4000a894: 6a6b add.n a6, a11, a6 4000a896: 7a66 add.n a6, a6, a7 4000a898: 6add add.n a13, a13, a6 4000a89a: 722127 l32i a7, a1, 156 4000a89d: 622125 l32i a6, a1, 148 4000a8a0: 104f40 ssai 31 4000a8a3: 706630 xor a6, a6, a7 4000a8a6: 72212f l32i a7, a1, 188 4000a8a9: 5add add.n a13, a13, a5 4000a8ab: 907730 xor a7, a7, a9 4000a8ae: 92212c l32i a9, a1, 176 4000a8b1: 706630 xor a6, a6, a7 4000a8b4: 606681 src a6, a6, a6 4000a8b7: 626124 s32i a6, a1, 144 4000a8ba: 004240 ssai 2 4000a8bd: e0ee81 src a14, a14, a14 4000a8c0: f07e30 xor a7, a14, a15 4000a8c3: 104b40 ssai 27 4000a8c6: 707430 xor a7, a4, a7 4000a8c9: 7a66 add.n a6, a6, a7 4000a8cb: d07d81 src a7, a13, a13 4000a8ce: 7a66 add.n a6, a6, a7 4000a8d0: 104f40 ssai 31 4000a8d3: 72212e l32i a7, a1, 184 4000a8d6: 6a22 add.n a2, a2, a6 4000a8d8: 5a22 add.n a2, a2, a5 4000a8da: 622126 l32i a6, a1, 152 4000a8dd: 907730 xor a7, a7, a9 4000a8e0: 92212a l32i a9, a1, 168 4000a8e3: 006630 xor a6, a6, a0 4000a8e6: 706630 xor a6, a6, a7 4000a8e9: 606681 src a6, a6, a6 4000a8ec: 626123 s32i a6, a1, 140 4000a8ef: 004240 ssai 2 4000a8f2: f0ff81 src a15, a15, a15 4000a8f5: d07f30 xor a7, a15, a13 4000a8f8: 707e30 xor a7, a14, a7 4000a8fb: 104b40 ssai 27 4000a8fe: 7a66 add.n a6, a6, a7 4000a900: 207281 src a7, a2, a2 4000a903: 104f40 ssai 31 4000a906: 7a66 add.n a6, a6, a7 4000a908: 6a44 add.n a4, a4, a6 4000a90a: 72212b l32i a7, a1, 172 4000a90d: 62212d l32i a6, a1, 180 4000a910: 5a44 add.n a4, a4, a5 4000a912: 706630 xor a6, a6, a7 4000a915: 72212c l32i a7, a1, 176 4000a918: 603330 xor a3, a3, a6 4000a91b: 303381 src a3, a3, a3 4000a91e: 326122 s32i a3, a1, 136 4000a921: 907730 xor a7, a7, a9 4000a924: 004240 ssai 2 4000a927: d0dd81 src a13, a13, a13 4000a92a: 92212b l32i a9, a1, 172 4000a92d: 104b40 ssai 27 4000a930: 206d30 xor a6, a13, a2 4000a933: c09930 xor a9, a9, a12 4000a936: 606f30 xor a6, a15, a6 4000a939: 6a33 add.n a3, a3, a6 4000a93b: c22128 l32i a12, a1, 160 4000a93e: 406481 src a6, a4, a4 4000a941: 6a33 add.n a3, a3, a6 4000a943: 104f40 ssai 31 4000a946: 622124 l32i a6, a1, 144 4000a949: 3aee add.n a14, a14, a3 4000a94b: 5aee add.n a14, a14, a5 4000a94d: 606830 xor a6, a8, a6 4000a950: 706630 xor a6, a6, a7 4000a953: 606681 src a6, a6, a6 4000a956: 626133 s32i a6, a1, 204 4000a959: 004240 ssai 2 4000a95c: 202281 src a2, a2, a2 4000a95f: 403230 xor a3, a2, a4 4000a962: 104b40 ssai 27 4000a965: e07e81 src a7, a14, a14 4000a968: 303d30 xor a3, a13, a3 4000a96b: 104f40 ssai 31 4000a96e: 3a36 add.n a3, a6, a3 4000a970: 7a33 add.n a3, a3, a7 4000a972: 606030 xor a6, a0, a6 4000a975: 722123 l32i a7, a1, 140 4000a978: 3aff add.n a15, a15, a3 4000a97a: 5aff add.n a15, a15, a5 4000a97c: 707a30 xor a7, a10, a7 4000a97f: 907730 xor a7, a7, a9 4000a982: 707781 src a7, a7, a7 4000a985: 726137 s32i a7, a1, 220 4000a988: 004240 ssai 2 4000a98b: 404481 src a4, a4, a4 4000a98e: e03430 xor a3, a4, a14 4000a991: 104b40 ssai 27 4000a994: f09f81 src a9, a15, a15 4000a997: 303230 xor a3, a2, a3 4000a99a: 3a37 add.n a3, a7, a3 4000a99c: 9a33 add.n a3, a3, a9 4000a99e: 3add add.n a13, a13, a3 4000a9a0: 922122 l32i a9, a1, 136 4000a9a3: 322125 l32i a3, a1, 148 4000a9a6: 104f40 ssai 31 4000a9a9: 903330 xor a3, a3, a9 4000a9ac: 92212a l32i a9, a1, 168 4000a9af: 5add add.n a13, a13, a5 4000a9b1: c09930 xor a9, a9, a12 4000a9b4: c22127 l32i a12, a1, 156 4000a9b7: 903330 xor a3, a3, a9 4000a9ba: 303381 src a3, a3, a3 4000a9bd: 326132 s32i a3, a1, 200 4000a9c0: 004240 ssai 2 4000a9c3: e0ee81 src a14, a14, a14 4000a9c6: f09e30 xor a9, a14, a15 4000a9c9: 909430 xor a9, a4, a9 4000a9cc: 104b40 ssai 27 4000a9cf: 9a33 add.n a3, a3, a9 4000a9d1: d09d81 src a9, a13, a13 4000a9d4: 104f40 ssai 31 4000a9d7: 9a33 add.n a3, a3, a9 4000a9d9: 3a22 add.n a2, a2, a3 4000a9db: 922129 l32i a9, a1, 164 4000a9de: 322126 l32i a3, a1, 152 4000a9e1: 5a22 add.n a2, a2, a5 4000a9e3: c09930 xor a9, a9, a12 4000a9e6: 906630 xor a6, a6, a9 4000a9e9: 606681 src a6, a6, a6 4000a9ec: 626136 s32i a6, a1, 216 4000a9ef: 004240 ssai 2 4000a9f2: f0ff81 src a15, a15, a15 4000a9f5: d09f30 xor a9, a15, a13 4000a9f8: 104b40 ssai 27 4000a9fb: 20c281 src a12, a2, a2 4000a9fe: 909e30 xor a9, a14, a9 4000aa01: 9a96 add.n a9, a6, a9 4000aa03: 104f40 ssai 31 4000aa06: ca99 add.n a9, a9, a12 4000aa08: c22128 l32i a12, a1, 160 4000aa0b: 9a44 add.n a4, a4, a9 4000aa0d: 5a44 add.n a4, a4, a5 4000aa0f: 709b30 xor a9, a11, a7 4000aa12: c03330 xor a3, a3, a12 4000aa15: c22124 l32i a12, a1, 144 4000aa18: 903330 xor a3, a3, a9 4000aa1b: 303381 src a3, a3, a3 4000aa1e: 326134 s32i a3, a1, 208 4000aa21: 004240 ssai 2 4000aa24: d0dd81 src a13, a13, a13 4000aa27: 209d30 xor a9, a13, a2 4000aa2a: 909f30 xor a9, a15, a9 4000aa2d: 104b40 ssai 27 4000aa30: 9a33 add.n a3, a3, a9 4000aa32: 409481 src a9, a4, a4 4000aa35: 104f40 ssai 31 4000aa38: 9a33 add.n a3, a3, a9 4000aa3a: 3aee add.n a14, a14, a3 4000aa3c: 92213a l32i a9, a1, 232 4000aa3f: 322132 l32i a3, a1, 200 4000aa42: 5aee add.n a14, a14, a5 4000aa44: 30cc30 xor a12, a12, a3 4000aa47: 322127 l32i a3, a1, 156 4000aa4a: 9911 s32i.n a9, a1, 4 4000aa4c: 303930 xor a3, a9, a3 4000aa4f: a09930 xor a9, a9, a10 4000aa52: c03330 xor a3, a3, a12 4000aa55: 00aa30 xor a10, a10, a0 4000aa58: 303381 src a3, a3, a3 4000aa5b: 326135 s32i a3, a1, 212 4000aa5e: 004240 ssai 2 4000aa61: 202281 src a2, a2, a2 4000aa64: 40c230 xor a12, a2, a4 4000aa67: 104b40 ssai 27 4000aa6a: c0cd30 xor a12, a13, a12 4000aa6d: ca33 add.n a3, a3, a12 4000aa6f: e0ce81 src a12, a14, a14 4000aa72: ca33 add.n a3, a3, a12 4000aa74: 104f40 ssai 31 4000aa77: c22126 l32i a12, a1, 152 4000aa7a: 3aff add.n a15, a15, a3 4000aa7c: 5aff add.n a15, a15, a5 4000aa7e: 322123 l32i a3, a1, 140 4000aa81: 80cc30 xor a12, a12, a8 4000aa84: 603330 xor a3, a3, a6 4000aa87: 30cc30 xor a12, a12, a3 4000aa8a: 622134 l32i a6, a1, 208 4000aa8d: 322122 l32i a3, a1, 136 4000aa90: c0cc81 src a12, a12, a12 4000aa93: c26113 s32i a12, a1, 76 4000aa96: 004240 ssai 2 4000aa99: 707c30 xor a7, a12, a7 4000aa9c: a07730 xor a7, a7, a10 4000aa9f: 404481 src a4, a4, a4 4000aaa2: 603330 xor a3, a3, a6 4000aaa5: 104b40 ssai 27 4000aaa8: 309930 xor a9, a9, a3 4000aaab: f06f81 src a6, a15, a15 4000aaae: 104f40 ssai 31 4000aab1: e03430 xor a3, a4, a14 4000aab4: 303230 xor a3, a2, a3 4000aab7: 909981 src a9, a9, a9 4000aaba: 926114 s32i a9, a1, 80 4000aabd: 9911 s32i.n a9, a1, 4 4000aabf: 3a3c add.n a3, a12, a3 4000aac1: 004240 ssai 2 4000aac4: e0ee81 src a14, a14, a14 4000aac7: 6a33 add.n a3, a3, a6 4000aac9: 3add add.n a13, a13, a3 4000aacb: 104b40 ssai 27 4000aace: 322125 l32i a3, a1, 148 4000aad1: 622135 l32i a6, a1, 212 4000aad4: 308830 xor a8, a8, a3 4000aad7: 322133 l32i a3, a1, 204 4000aada: 5add add.n a13, a13, a5 4000aadc: 603330 xor a3, a3, a6 4000aadf: d06d81 src a6, a13, a13 4000aae2: 308830 xor a8, a8, a3 4000aae5: 104f40 ssai 31 4000aae8: f03e30 xor a3, a14, a15 4000aaeb: 303430 xor a3, a4, a3 4000aaee: 808881 src a8, a8, a8 4000aaf1: 826115 s32i a8, a1, 84 4000aaf4: 8921 s32i.n a8, a1, 8 4000aaf6: 3a39 add.n a3, a9, a3 4000aaf8: 004240 ssai 2 4000aafb: f0ff81 src a15, a15, a15 4000aafe: 6a33 add.n a3, a3, a6 4000ab00: 104b40 ssai 27 4000ab03: 3a22 add.n a2, a2, a3 4000ab05: d06f30 xor a6, a15, a13 4000ab08: 5a22 add.n a2, a2, a5 4000ab0a: 20a281 src a10, a2, a2 4000ab0d: 606e30 xor a6, a14, a6 4000ab10: 104f40 ssai 31 4000ab13: 6a68 add.n a6, a8, a6 4000ab15: aa66 add.n a6, a6, a10 4000ab17: 707781 src a7, a7, a7 4000ab1a: 726117 s32i a7, a1, 92 4000ab1d: 7931 s32i.n a7, a1, 12 4000ab1f: a22125 l32i a10, a1, 148 4000ab22: 004240 ssai 2 4000ab25: 6a44 add.n a4, a4, a6 4000ab27: 5a44 add.n a4, a4, a5 4000ab29: d0dd81 src a13, a13, a13 4000ab2c: b0aa30 xor a10, a10, a11 4000ab2f: 203d30 xor a3, a13, a2 4000ab32: 104b40 ssai 27 4000ab35: 406481 src a6, a4, a4 4000ab38: 303f30 xor a3, a15, a3 4000ab3b: 3a37 add.n a3, a7, a3 4000ab3d: 104f40 ssai 31 4000ab40: 6a33 add.n a3, a3, a6 4000ab42: 622132 l32i a6, a1, 200 4000ab45: 3aee add.n a14, a14, a3 4000ab47: 5aee add.n a14, a14, a5 4000ab49: 322124 l32i a3, a1, 144 4000ab4c: 606930 xor a6, a9, a6 4000ab4f: a06630 xor a6, a6, a10 4000ab52: 300030 xor a0, a0, a3 4000ab55: a22136 l32i a10, a1, 216 4000ab58: 606681 src a6, a6, a6 4000ab5b: 626119 s32i a6, a1, 100 4000ab5e: 004240 ssai 2 4000ab61: 202281 src a2, a2, a2 4000ab64: a0a830 xor a10, a8, a10 4000ab67: 00aa30 xor a10, a10, a0 4000ab6a: 104b40 ssai 27 4000ab6d: e03e81 src a3, a14, a14 4000ab70: 400230 xor a0, a2, a4 4000ab73: 104f40 ssai 31 4000ab76: 000d30 xor a0, a13, a0 4000ab79: 0a06 add.n a0, a6, a0 4000ab7b: a0aa81 src a10, a10, a10 4000ab7e: a2611a s32i a10, a1, 104 4000ab81: a951 s32i.n a10, a1, 20 4000ab83: 3a00 add.n a0, a0, a3 4000ab85: 004240 ssai 2 4000ab88: 322134 l32i a3, a1, 208 4000ab8b: 404481 src a4, a4, a4 4000ab8e: 0aff add.n a15, a15, a0 4000ab90: 104b40 ssai 27 4000ab93: 5aff add.n a15, a15, a5 4000ab95: 022123 l32i a0, a1, 140 4000ab98: 303730 xor a3, a7, a3 4000ab9b: 00bb30 xor a11, a11, a0 4000ab9e: b03330 xor a3, a3, a11 4000aba1: e00430 xor a0, a4, a14 4000aba4: f0bf81 src a11, a15, a15 4000aba7: 000230 xor a0, a2, a0 4000abaa: 0a0a add.n a0, a10, a0 4000abac: 104f40 ssai 31 4000abaf: a0ac30 xor a10, a12, a10 4000abb2: ba00 add.n a0, a0, a11 4000abb4: 303381 src a3, a3, a3 4000abb7: 32611b s32i a3, a1, 108 4000abba: 3961 s32i.n a3, a1, 24 4000abbc: 309930 xor a9, a9, a3 4000abbf: 0add add.n a13, a13, a0 4000abc1: 004240 ssai 2 4000abc4: 022124 l32i a0, a1, 144 4000abc7: 5add add.n a13, a13, a5 4000abc9: e0ee81 src a14, a14, a14 4000abcc: f0be30 xor a11, a14, a15 4000abcf: 104b40 ssai 27 4000abd2: b0b430 xor a11, a4, a11 4000abd5: ba33 add.n a3, a3, a11 4000abd7: d0bd81 src a11, a13, a13 4000abda: ba33 add.n a3, a3, a11 4000abdc: 104f40 ssai 31 4000abdf: b22135 l32i a11, a1, 212 4000abe2: 3a22 add.n a2, a2, a3 4000abe4: 5a22 add.n a2, a2, a5 4000abe6: 322122 l32i a3, a1, 136 4000abe9: b0b630 xor a11, a6, a11 4000abec: 300030 xor a0, a0, a3 4000abef: 00bb30 xor a11, a11, a0 4000abf2: b0bb81 src a11, a11, a11 4000abf5: b08830 xor a8, a8, a11 4000abf8: 004240 ssai 2 4000abfb: f0ff81 src a15, a15, a15 4000abfe: d00f30 xor a0, a15, a13 4000ac01: 104b40 ssai 27 4000ac04: 203281 src a3, a2, a2 4000ac07: 000e30 xor a0, a14, a0 4000ac0a: 104f40 ssai 31 4000ac0d: 0a0b add.n a0, a11, a0 4000ac0f: 3a00 add.n a0, a0, a3 4000ac11: 0a44 add.n a4, a4, a0 4000ac13: 322133 l32i a3, a1, 204 4000ac16: 022123 l32i a0, a1, 140 4000ac19: 5a44 add.n a4, a4, a5 4000ac1b: 300030 xor a0, a0, a3 4000ac1e: 00aa30 xor a10, a10, a0 4000ac21: 322137 l32i a3, a1, 220 4000ac24: 022122 l32i a0, a1, 136 4000ac27: a0aa81 src a10, a10, a10 4000ac2a: a07730 xor a7, a7, a10 4000ac2d: 004240 ssai 2 4000ac30: 300030 xor a0, a0, a3 4000ac33: d0dd81 src a13, a13, a13 4000ac36: d26138 s32i a13, a1, 224 4000ac39: 205d10 and a5, a13, a2 4000ac3c: 009930 xor a9, a9, a0 4000ac3f: 104b40 ssai 27 4000ac42: 403481 src a3, a4, a4 4000ac45: 200d20 or a0, a13, a2 4000ac48: 104f40 ssai 31 4000ac4b: 909981 src a9, a9, a9 4000ac4e: 000f10 and a0, a15, a0 4000ac51: 500020 or a0, a0, a5 4000ac54: 004240 ssai 2 4000ac57: 202281 src a2, a2, a2 4000ac5a: 0a0a add.n a0, a10, a0 4000ac5c: 3a00 add.n a0, a0, a3 4000ac5e: 0aee add.n a14, a14, a0 4000ac60: 322132 l32i a3, a1, 200 4000ac63: 022133 l32i a0, a1, 204 4000ac66: 104b40 ssai 27 4000ac69: 300030 xor a0, a0, a3 4000ac6c: 008830 xor a8, a8, a0 4000ac6f: 31bbfd l32r a3, [0x8f1bbcdc] ; 0x4000a35c 4000ac72: 400220 or a0, a2, a4 4000ac75: 00dd10 and a13, a13, a0 4000ac78: 3aee add.n a14, a14, a3 4000ac7a: e05e81 src a5, a14, a14 4000ac7d: 400210 and a0, a2, a4 4000ac80: d00020 or a0, a0, a13 4000ac83: 104f40 ssai 31 4000ac86: d22137 l32i a13, a1, 220 4000ac89: 808881 src a8, a8, a8 4000ac8c: 0a09 add.n a0, a9, a0 4000ac8e: 004240 ssai 2 4000ac91: 5a00 add.n a0, a0, a5 4000ac93: 0aff add.n a15, a15, a0 4000ac95: 404481 src a4, a4, a4 4000ac98: 426116 s32i a4, a1, 88 4000ac9b: e05410 and a5, a4, a14 4000ac9e: 104b40 ssai 27 4000aca1: 022136 l32i a0, a1, 216 4000aca4: 3aff add.n a15, a15, a3 4000aca6: f26112 s32i a15, a1, 72 4000aca9: 00dd30 xor a13, a13, a0 4000acac: d07730 xor a7, a7, a13 4000acaf: f00f81 src a0, a15, a15 4000acb2: e0d420 or a13, a4, a14 4000acb5: 104f40 ssai 31 4000acb8: d0d210 and a13, a2, a13 4000acbb: 50dd20 or a13, a13, a5 4000acbe: 707781 src a7, a7, a7 4000acc1: 522138 l32i a5, a1, 224 4000acc4: 004240 ssai 2 4000acc7: dad8 add.n a13, a8, a13 4000acc9: 0add add.n a13, a13, a0 4000accb: e0ee81 src a14, a14, a14 4000acce: e26118 s32i a14, a1, 96 4000acd1: 104b40 ssai 27 4000acd4: da55 add.n a5, a5, a13 4000acd6: 022135 l32i a0, a1, 212 4000acd9: 09f1 s32i.n a0, a1, 60 4000acdb: 3a55 add.n a5, a5, a3 4000acdd: 526111 s32i a5, a1, 68 4000ace0: f0de10 and a13, a14, a15 4000ace3: 505581 src a5, a5, a5 4000ace6: f0ee20 or a14, a14, a15 4000ace9: 104f40 ssai 31 4000acec: e04410 and a4, a4, a14 4000acef: f22131 l32i a15, a1, 196 4000acf2: e22132 l32i a14, a1, 200 4000acf5: f901 s32i.n a15, a1, 0 4000acf7: d04420 or a4, a4, a13 4000acfa: f2212d l32i a15, a1, 180 4000acfd: d22130 l32i a13, a1, 192 4000ad00: 4a47 add.n a4, a7, a4 4000ad02: 5a44 add.n a4, a4, a5 4000ad04: d941 s32i.n a13, a1, 16 4000ad06: f991 s32i.n a15, a1, 36 4000ad08: d2212c l32i a13, a1, 176 4000ad0b: f22129 l32i a15, a1, 164 4000ad0e: 6941 s32i.n a6, a1, 16 4000ad10: 4a22 add.n a2, a2, a4 4000ad12: 906630 xor a6, a6, a9 4000ad15: 3a22 add.n a2, a2, a3 4000ad17: 42212f l32i a4, a1, 188 4000ad1a: f9d1 s32i.n a15, a1, 52 4000ad1c: d9a1 s32i.n a13, a1, 40 4000ad1e: 89a1 s32i.n a8, a1, 40 4000ad20: f22120 l32i a15, a1, 128 4000ad23: 4971 s32i.n a4, a1, 28 4000ad25: 226110 s32i a2, a1, 64 4000ad28: d22128 l32i a13, a1, 160 4000ad2b: 322136 l32i a3, a1, 216 4000ad2e: 39d1 s32i.n a3, a1, 52 4000ad30: d9e1 s32i.n a13, a1, 56 4000ad32: 22212e l32i a2, a1, 184 4000ad35: d22124 l32i a13, a1, 144 4000ad38: 2981 s32i.n a2, a1, 32 4000ad3a: a981 s32i.n a10, a1, 32 4000ad3c: 22212a l32i a2, a1, 168 4000ad3f: d971 s32i.n a13, a1, 28 4000ad41: b971 s32i.n a11, a1, 28 4000ad43: d22137 l32i a13, a1, 220 4000ad46: 29c1 s32i.n a2, a1, 48 4000ad48: e9c1 s32i.n a14, a1, 48 4000ad4a: 222126 l32i a2, a1, 152 4000ad4d: d9b1 s32i.n a13, a1, 44 4000ad4f: 79b1 s32i.n a7, a1, 44 4000ad51: 2901 s32i.n a2, a1, 0 4000ad53: c901 s32i.n a12, a1, 0 4000ad55: 222122 l32i a2, a1, 136 4000ad58: c22121 l32i a12, a1, 132 4000ad5b: 2991 s32i.n a2, a1, 36 4000ad5d: 9991 s32i.n a9, a1, 36 4000ad5f: 222134 l32i a2, a1, 208 4000ad62: 29e1 s32i.n a2, a1, 56 4000ad64: 20de30 xor a13, a14, a2 4000ad67: e2211f l32i a14, a1, 124 4000ad6a: d06630 xor a6, a6, a13 4000ad6d: 606681 src a6, a6, a6 4000ad70: d2211e l32i a13, a1, 120 4000ad73: a26140 s32i a10, a1, 0x100 4000ad76: b2613f s32i a11, a1, 252 4000ad79: f26120 s32i a15, a1, 128 4000ad7c: c26121 s32i a12, a1, 132 4000ad7f: 82613d s32i a8, a1, 244 4000ad82: 004240 ssai 2 4000ad85: 005330 xor a5, a3, a0 4000ad88: 42211a l32i a4, a1, 104 4000ad8b: 62613b s32i a6, a1, 236 4000ad8e: 92613e s32i a9, a1, 248 4000ad91: d2611e s32i a13, a1, 120 4000ad94: e2611f s32i a14, a1, 124 4000ad97: 72613c s32i a7, a1, 240 4000ad9a: e22118 l32i a14, a1, 96 4000ad9d: 722110 l32i a7, a1, 64 4000ada0: d22112 l32i a13, a1, 72 4000ada3: 92213b l32i a9, a1, 236 4000ada6: 803430 xor a3, a4, a8 4000ada9: d0dd81 src a13, a13, a13 4000adac: 822116 l32i a8, a1, 88 4000adaf: 104b40 ssai 27 4000adb2: 70c781 src a12, a7, a7 4000adb5: 503330 xor a3, a3, a5 4000adb8: 104f40 ssai 31 4000adbb: 303381 src a3, a3, a3 4000adbe: 326129 s32i a3, a1, 164 4000adc1: 322111 l32i a3, a1, 68 4000adc4: 004240 ssai 2 4000adc7: 305d10 and a5, a13, a3 4000adca: 30fd20 or a15, a13, a3 4000adcd: f0fe10 and a15, a14, a15 4000add0: 303381 src a3, a3, a3 4000add3: 50ff20 or a15, a15, a5 4000add6: 104b40 ssai 27 4000add9: fa99 add.n a9, a9, a15 4000addb: 706310 and a6, a3, a7 4000adde: f22129 l32i a15, a1, 164 4000ade1: ca99 add.n a9, a9, a12 4000ade3: 705320 or a5, a3, a7 4000ade6: c22113 l32i a12, a1, 76 4000ade9: 505d10 and a5, a13, a5 4000adec: 9a88 add.n a8, a8, a9 4000adee: 605520 or a5, a5, a6 4000adf1: 5aff add.n a15, a15, a5 4000adf3: 515afd l32r a5, [0x8f1bbcdc] ; 0x4000a35c 4000adf6: 92213c l32i a9, a1, 240 4000adf9: 5a88 add.n a8, a8, a5 4000adfb: 806881 src a6, a8, a8 4000adfe: 6aff add.n a15, a15, a6 4000ae00: 104f40 ssai 31 4000ae03: 62211b l32i a6, a1, 108 4000ae06: faee add.n a14, a14, a15 4000ae08: 5aee add.n a14, a14, a5 4000ae0a: 20fc30 xor a15, a12, a2 4000ae0d: 909630 xor a9, a6, a9 4000ae10: 90ff30 xor a15, a15, a9 4000ae13: f0ff81 src a15, a15, a15 4000ae16: 004240 ssai 2 4000ae19: f26128 s32i a15, a1, 160 4000ae1c: 702781 src a2, a7, a7 4000ae1f: 104b40 ssai 27 4000ae22: 807220 or a7, a2, a8 4000ae25: 805210 and a5, a2, a8 4000ae28: 707310 and a7, a3, a7 4000ae2b: 705520 or a5, a5, a7 4000ae2e: e07e81 src a7, a14, a14 4000ae31: 5a5f add.n a5, a15, a5 4000ae33: 104f40 ssai 31 4000ae36: 7a55 add.n a5, a5, a7 4000ae38: 5add add.n a13, a13, a5 4000ae3a: 722114 l32i a7, a1, 80 4000ae3d: 52213b l32i a5, a1, 236 4000ae40: 009730 xor a9, a7, a0 4000ae43: 50bb30 xor a11, a11, a5 4000ae46: 0145fd l32r a0, [0x8f1bbcdc] ; 0x4000a35c 4000ae49: 522115 l32i a5, a1, 84 4000ae4c: b09930 xor a9, a9, a11 4000ae4f: 909981 src a9, a9, a9 4000ae52: 0add add.n a13, a13, a0 4000ae54: 004240 ssai 2 4000ae57: 50cc30 xor a12, a12, a5 4000ae5a: 808881 src a8, a8, a8 4000ae5d: 104b40 ssai 27 4000ae60: e0b820 or a11, a8, a14 4000ae63: e00810 and a0, a8, a14 4000ae66: b0b210 and a11, a2, a11 4000ae69: 00bb20 or a11, a11, a0 4000ae6c: d00d81 src a0, a13, a13 4000ae6f: bab9 add.n a11, a9, a11 4000ae71: 104f40 ssai 31 4000ae74: 0abb add.n a11, a11, a0 4000ae76: 022129 l32i a0, a1, 164 4000ae79: bab3 add.n a11, a3, a11 4000ae7b: 000a30 xor a0, a10, a0 4000ae7e: 00cc30 xor a12, a12, a0 4000ae81: c0cc81 src a12, a12, a12 4000ae84: 0136fd l32r a0, [0x8f1bbcdc] ; 0x4000a35c 4000ae87: 004240 ssai 2 4000ae8a: 0abb add.n a11, a11, a0 4000ae8c: e0ee81 src a14, a14, a14 4000ae8f: 0133fd l32r a0, [0x8f1bbcdc] ; 0x4000a35c 4000ae92: 104b40 ssai 27 4000ae95: d03e20 or a3, a14, a13 4000ae98: d0ae10 and a10, a14, a13 4000ae9b: 303810 and a3, a8, a3 4000ae9e: a03320 or a3, a3, a10 4000aea1: b0ab81 src a10, a11, a11 4000aea4: 3a3c add.n a3, a12, a3 4000aea6: 104f40 ssai 31 4000aea9: aa33 add.n a3, a3, a10 4000aeab: a2213e l32i a10, a1, 248 4000aeae: 3a22 add.n a2, a2, a3 4000aeb0: 0a22 add.n a2, a2, a0 4000aeb2: 322117 l32i a3, a1, 92 4000aeb5: f0aa30 xor a10, a10, a15 4000aeb8: 307730 xor a7, a7, a3 4000aebb: a07730 xor a7, a7, a10 4000aebe: 707781 src a7, a7, a7 4000aec1: 403330 xor a3, a3, a4 4000aec4: 004240 ssai 2 4000aec7: d0dd81 src a13, a13, a13 4000aeca: 104b40 ssai 27 4000aecd: b0ad20 or a10, a13, a11 4000aed0: b0fd10 and a15, a13, a11 4000aed3: a0ae10 and a10, a14, a10 4000aed6: f0aa20 or a10, a10, a15 4000aed9: 20f281 src a15, a2, a2 4000aedc: aaa7 add.n a10, a7, a10 4000aede: 104f40 ssai 31 4000aee1: faaa add.n a10, a10, a15 4000aee3: f22119 l32i a15, a1, 100 4000aee6: aaa8 add.n a10, a8, a10 4000aee8: 0aaa add.n a10, a10, a0 4000aeea: 82213d l32i a8, a1, 244 4000aeed: f05530 xor a5, a5, a15 4000aef0: 60ff30 xor a15, a15, a6 4000aef3: 908830 xor a8, a8, a9 4000aef6: 805530 xor a5, a5, a8 4000aef9: 505581 src a5, a5, a5 4000aefc: 82213c l32i a8, a1, 240 4000aeff: 004240 ssai 2 4000af02: b0bb81 src a11, a11, a11 4000af05: 808c30 xor a8, a12, a8 4000af08: 308830 xor a8, a8, a3 4000af0b: 104b40 ssai 27 4000af0e: 200b20 or a0, a11, a2 4000af11: 000d10 and a0, a13, a0 4000af14: a03a81 src a3, a10, a10 4000af17: 104f40 ssai 31 4000af1a: 808881 src a8, a8, a8 4000af1d: 82612a s32i a8, a1, 168 4000af20: 004240 ssai 2 4000af23: 208b10 and a8, a11, a2 4000af26: 202281 src a2, a2, a2 4000af29: 800020 or a0, a0, a8 4000af2c: 104b40 ssai 27 4000af2f: 82213b l32i a8, a1, 236 4000af32: 0a05 add.n a0, a5, a0 4000af34: 3a00 add.n a0, a0, a3 4000af36: 0aee add.n a14, a14, a0 4000af38: 808730 xor a8, a7, a8 4000af3b: f08830 xor a8, a8, a15 4000af3e: a00220 or a0, a2, a10 4000af41: f106fd l32r a15, [0x8f1bbcdc] ; 0x4000a35c 4000af44: 000b10 and a0, a11, a0 4000af47: faee add.n a14, a14, a15 4000af49: e03e81 src a3, a14, a14 4000af4c: 104f40 ssai 31 4000af4f: 808881 src a8, a8, a8 4000af52: 82612b s32i a8, a1, 172 4000af55: 004240 ssai 2 4000af58: a08210 and a8, a2, a10 4000af5b: 008820 or a8, a8, a0 4000af5e: a0aa81 src a10, a10, a10 4000af61: 02212a l32i a0, a1, 168 4000af64: 104b40 ssai 27 4000af67: 8a00 add.n a0, a0, a8 4000af69: 822129 l32i a8, a1, 164 4000af6c: 3a00 add.n a0, a0, a3 4000af6e: 0add add.n a13, a13, a0 4000af70: 808530 xor a8, a5, a8 4000af73: fadd add.n a13, a13, a15 4000af75: 02213f l32i a0, a1, 252 4000af78: d03d81 src a3, a13, a13 4000af7b: 104f40 ssai 31 4000af7e: 000430 xor a0, a4, a0 4000af81: 008830 xor a8, a8, a0 4000af84: e04a20 or a4, a10, a14 4000af87: 02212b l32i a0, a1, 172 4000af8a: 404210 and a4, a2, a4 4000af8d: 808881 src a8, a8, a8 4000af90: 82612d s32i a8, a1, 180 4000af93: 004240 ssai 2 4000af96: e08a10 and a8, a10, a14 4000af99: e0ee81 src a14, a14, a14 4000af9c: 804420 or a4, a4, a8 4000af9f: 4a00 add.n a0, a0, a4 4000afa1: 104b40 ssai 27 4000afa4: 42212a l32i a4, a1, 168 4000afa7: 3a00 add.n a0, a0, a3 4000afa9: d08e20 or a8, a14, a13 4000afac: 808a10 and a8, a10, a8 4000afaf: 322128 l32i a3, a1, 160 4000afb2: 0abb add.n a11, a11, a0 4000afb4: fabb add.n a11, a11, a15 4000afb6: 022140 l32i a0, a1, 0x100 4000afb9: 304430 xor a4, a4, a3 4000afbc: 006630 xor a6, a6, a0 4000afbf: 604430 xor a4, a4, a6 4000afc2: b06b81 src a6, a11, a11 4000afc5: 104f40 ssai 31 4000afc8: 404481 src a4, a4, a4 4000afcb: 42612c s32i a4, a1, 176 4000afce: 004240 ssai 2 4000afd1: d04e10 and a4, a14, a13 4000afd4: 408820 or a8, a8, a4 4000afd7: d0dd81 src a13, a13, a13 4000afda: 42212d l32i a4, a1, 180 4000afdd: 104b40 ssai 27 4000afe0: 8a44 add.n a4, a4, a8 4000afe2: 6a44 add.n a4, a4, a6 4000afe4: 82213e l32i a8, a1, 248 4000afe7: 62213f l32i a6, a1, 252 4000afea: 4a22 add.n a2, a2, a4 4000afec: fa22 add.n a2, a2, a15 4000afee: 42212b l32i a4, a1, 172 4000aff1: 806630 xor a6, a6, a8 4000aff4: b08d20 or a8, a13, a11 4000aff7: 904430 xor a4, a4, a9 4000affa: 604430 xor a4, a4, a6 4000affd: 808e10 and a8, a14, a8 4000b000: 206281 src a6, a2, a2 4000b003: 104f40 ssai 31 4000b006: 404481 src a4, a4, a4 4000b009: 426130 s32i a4, a1, 192 4000b00c: 004240 ssai 2 4000b00f: b04d10 and a4, a13, a11 4000b012: 408820 or a8, a8, a4 4000b015: b0bb81 src a11, a11, a11 4000b018: 42212c l32i a4, a1, 176 4000b01b: 104b40 ssai 27 4000b01e: 8a44 add.n a4, a4, a8 4000b020: 82212d l32i a8, a1, 180 4000b023: 6a44 add.n a4, a4, a6 4000b025: 4aaa add.n a10, a10, a4 4000b027: 206b20 or a6, a11, a2 4000b02a: 606d10 and a6, a13, a6 4000b02d: faaa add.n a10, a10, a15 4000b02f: 42213d l32i a4, a1, 244 4000b032: 808c30 xor a8, a12, a8 4000b035: 400030 xor a0, a0, a4 4000b038: 008830 xor a8, a8, a0 4000b03b: a04a81 src a4, a10, a10 4000b03e: 022130 l32i a0, a1, 192 4000b041: 104f40 ssai 31 4000b044: 808881 src a8, a8, a8 4000b047: 82612e s32i a8, a1, 184 4000b04a: 004240 ssai 2 4000b04d: 208b10 and a8, a11, a2 4000b050: 202281 src a2, a2, a2 4000b053: 806620 or a6, a6, a8 4000b056: 6a00 add.n a0, a0, a6 4000b058: 104b40 ssai 27 4000b05b: 62213c l32i a6, a1, 240 4000b05e: 4a00 add.n a0, a0, a4 4000b060: a08220 or a8, a2, a10 4000b063: 808b10 and a8, a11, a8 4000b066: 42213e l32i a4, a1, 248 4000b069: 0aee add.n a14, a14, a0 4000b06b: faee add.n a14, a14, a15 4000b06d: 02212c l32i a0, a1, 176 4000b070: 604430 xor a4, a4, a6 4000b073: a06210 and a6, a2, a10 4000b076: 000730 xor a0, a7, a0 4000b079: 400030 xor a0, a0, a4 4000b07c: 806620 or a6, a6, a8 4000b07f: e04e81 src a4, a14, a14 4000b082: 82213b l32i a8, a1, 236 4000b085: 104f40 ssai 31 4000b088: 000081 src a0, a0, a0 4000b08b: 026131 s32i a0, a1, 196 4000b08e: 004240 ssai 2 4000b091: a0aa81 src a10, a10, a10 4000b094: 02212e l32i a0, a1, 184 4000b097: 104b40 ssai 27 4000b09a: 6a00 add.n a0, a0, a6 4000b09c: 4a00 add.n a0, a0, a4 4000b09e: 62213d l32i a6, a1, 244 4000b0a1: 422130 l32i a4, a1, 192 4000b0a4: 0add add.n a13, a13, a0 4000b0a6: fadd add.n a13, a13, a15 4000b0a8: 806630 xor a6, a6, a8 4000b0ab: e00a10 and a0, a10, a14 4000b0ae: e08a20 or a8, a10, a14 4000b0b1: 404530 xor a4, a5, a4 4000b0b4: 604430 xor a4, a4, a6 4000b0b7: 808210 and a8, a2, a8 4000b0ba: 008820 or a8, a8, a0 4000b0bd: d06d81 src a6, a13, a13 4000b0c0: 022131 l32i a0, a1, 196 4000b0c3: 104f40 ssai 31 4000b0c6: 404481 src a4, a4, a4 4000b0c9: 8a00 add.n a0, a0, a8 4000b0cb: 004240 ssai 2 4000b0ce: 822129 l32i a8, a1, 164 4000b0d1: e0ee81 src a14, a14, a14 4000b0d4: 6a00 add.n a0, a0, a6 4000b0d6: 104b40 ssai 27 4000b0d9: 0abb add.n a11, a11, a0 4000b0db: 62213c l32i a6, a1, 240 4000b0de: 02212a l32i a0, a1, 168 4000b0e1: 806630 xor a6, a6, a8 4000b0e4: 82212e l32i a8, a1, 184 4000b0e7: fabb add.n a11, a11, a15 4000b0e9: 800030 xor a0, a0, a8 4000b0ec: b08b81 src a8, a11, a11 4000b0ef: 600030 xor a0, a0, a6 4000b0f2: 104f40 ssai 31 4000b0f5: d06e20 or a6, a14, a13 4000b0f8: 606a10 and a6, a10, a6 4000b0fb: 000081 src a0, a0, a0 4000b0fe: 02612f s32i a0, a1, 188 4000b101: 004240 ssai 2 4000b104: d00e10 and a0, a14, a13 4000b107: d0dd81 src a13, a13, a13 4000b10a: 006620 or a6, a6, a0 4000b10d: 104b40 ssai 27 4000b110: 6a64 add.n a6, a4, a6 4000b112: 02212f l32i a0, a1, 188 4000b115: 8a66 add.n a6, a6, a8 4000b117: b08d10 and a8, a13, a11 4000b11a: 6a22 add.n a2, a2, a6 4000b11c: fa22 add.n a2, a2, a15 4000b11e: b06d20 or a6, a13, a11 4000b121: 606e10 and a6, a14, a6 4000b124: 806620 or a6, a6, a8 4000b127: 6a00 add.n a0, a0, a6 4000b129: 822131 l32i a8, a1, 196 4000b12c: 206281 src a6, a2, a2 4000b12f: 6a00 add.n a0, a0, a6 4000b131: 104f40 ssai 31 4000b134: 62213b l32i a6, a1, 236 4000b137: 0aaa add.n a10, a10, a0 4000b139: faaa add.n a10, a10, a15 4000b13b: 02212b l32i a0, a1, 172 4000b13e: 306630 xor a6, a6, a3 4000b141: 303c30 xor a3, a12, a3 4000b144: 800030 xor a0, a0, a8 4000b147: 50cc30 xor a12, a12, a5 4000b14a: 600030 xor a0, a0, a6 4000b14d: 822129 l32i a8, a1, 164 4000b150: 62212d l32i a6, a1, 180 4000b153: 000081 src a0, a0, a0 4000b156: 908830 xor a8, a8, a9 4000b159: 004240 ssai 2 4000b15c: 909730 xor a9, a7, a9 4000b15f: b0bb81 src a11, a11, a11 4000b162: 406630 xor a6, a6, a4 4000b165: 806630 xor a6, a6, a8 4000b168: 104b40 ssai 27 4000b16b: 20fb30 xor a15, a11, a2 4000b16e: f0fd30 xor a15, a13, a15 4000b171: a08a81 src a8, a10, a10 4000b174: faf0 add.n a15, a0, a15 4000b176: 104f40 ssai 31 4000b179: 8aff add.n a15, a15, a8 4000b17b: 606681 src a6, a6, a6 4000b17e: 82212c l32i a8, a1, 176 4000b181: faee add.n a14, a14, a15 4000b183: 004240 ssai 2 4000b186: 202281 src a2, a2, a2 4000b189: f2212f l32i a15, a1, 188 4000b18c: 104b40 ssai 27 4000b18f: f08830 xor a8, a8, a15 4000b192: f173fc l32r a15, [0xca62c1d6] ; 0x4000a360 4000b195: 803330 xor a3, a3, a8 4000b198: faee add.n a14, a14, a15 4000b19a: e08e81 src a8, a14, a14 4000b19d: a0f230 xor a15, a2, a10 4000b1a0: f0fb30 xor a15, a11, a15 4000b1a3: 104f40 ssai 31 4000b1a6: 303381 src a3, a3, a3 4000b1a9: faf6 add.n a15, a6, a15 4000b1ab: 8aff add.n a15, a15, a8 4000b1ad: 004240 ssai 2 4000b1b0: fadd add.n a13, a13, a15 4000b1b2: f22130 l32i a15, a1, 192 4000b1b5: a0aa81 src a10, a10, a10 4000b1b8: 00ff30 xor a15, a15, a0 4000b1bb: f09930 xor a9, a9, a15 4000b1be: f168fc l32r a15, [0xca62c1d6] ; 0x4000a360 4000b1c1: 104b40 ssai 27 4000b1c4: fadd add.n a13, a13, a15 4000b1c6: d08d81 src a8, a13, a13 4000b1c9: e0fa30 xor a15, a10, a14 4000b1cc: f0f230 xor a15, a2, a15 4000b1cf: 104f40 ssai 31 4000b1d2: 909981 src a9, a9, a9 4000b1d5: faf3 add.n a15, a3, a15 4000b1d7: 8aff add.n a15, a15, a8 4000b1d9: 004240 ssai 2 4000b1dc: e0ee81 src a14, a14, a14 4000b1df: fabb add.n a11, a11, a15 4000b1e1: 104b40 ssai 27 4000b1e4: f2212e l32i a15, a1, 184 4000b1e7: d08e30 xor a8, a14, a13 4000b1ea: 808a30 xor a8, a10, a8 4000b1ed: 60ff30 xor a15, a15, a6 4000b1f0: f0cc30 xor a12, a12, a15 4000b1f3: f15bfc l32r a15, [0xca62c1d6] ; 0x4000a360 4000b1f6: 8a89 add.n a8, a9, a8 4000b1f8: fabb add.n a11, a11, a15 4000b1fa: b0fb81 src a15, a11, a11 4000b1fd: 104f40 ssai 31 4000b200: fa88 add.n a8, a8, a15 4000b202: 8a22 add.n a2, a2, a8 4000b204: c0cc81 src a12, a12, a12 4000b207: c901 s32i.n a12, a1, 0 4000b209: 004240 ssai 2 4000b20c: 82212a l32i a8, a1, 168 4000b20f: d0dd81 src a13, a13, a13 4000b212: 104b40 ssai 27 4000b215: 807730 xor a7, a7, a8 4000b218: b0fd30 xor a15, a13, a11 4000b21b: 822131 l32i a8, a1, 196 4000b21e: f0fe30 xor a15, a14, a15 4000b221: 308830 xor a8, a8, a3 4000b224: 807730 xor a7, a7, a8 4000b227: 814efc l32r a8, [0xca62c1d6] ; 0x4000a360 4000b22a: fafc add.n a15, a12, a15 4000b22c: 8a22 add.n a2, a2, a8 4000b22e: 208281 src a8, a2, a2 4000b231: 8aff add.n a15, a15, a8 4000b233: 104f40 ssai 31 4000b236: 82212b l32i a8, a1, 172 4000b239: faaa add.n a10, a10, a15 4000b23b: 707781 src a7, a7, a7 4000b23e: f148fc l32r a15, [0xca62c1d6] ; 0x4000a360 4000b241: 004240 ssai 2 4000b244: b0bb81 src a11, a11, a11 4000b247: 805530 xor a5, a5, a8 4000b24a: 104b40 ssai 27 4000b24d: faaa add.n a10, a10, a15 4000b24f: 908430 xor a8, a4, a9 4000b252: 805530 xor a5, a5, a8 4000b255: 20fb30 xor a15, a11, a2 4000b258: f0fd30 xor a15, a13, a15 4000b25b: faf7 add.n a15, a7, a15 4000b25d: a08a81 src a8, a10, a10 4000b260: 8aff add.n a15, a15, a8 4000b262: 104f40 ssai 31 4000b265: 82212d l32i a8, a1, 180 4000b268: faee add.n a14, a14, a15 4000b26a: 505581 src a5, a5, a5 4000b26d: f2212f l32i a15, a1, 188 4000b270: 526132 s32i a5, a1, 200 4000b273: 004240 ssai 2 4000b276: 202281 src a2, a2, a2 4000b279: 52212a l32i a5, a1, 168 4000b27c: 104b40 ssai 27 4000b27f: f0fc30 xor a15, a12, a15 4000b282: 805530 xor a5, a5, a8 4000b285: 50ff30 xor a15, a15, a5 4000b288: 5136fc l32r a5, [0xca62c1d6] ; 0x4000a360 4000b28b: a08230 xor a8, a2, a10 4000b28e: 5aee add.n a14, a14, a5 4000b290: 522132 l32i a5, a1, 200 4000b293: 808b30 xor a8, a11, a8 4000b296: 8a55 add.n a5, a5, a8 4000b298: e08e81 src a8, a14, a14 4000b29b: 8a55 add.n a5, a5, a8 4000b29d: 104f40 ssai 31 4000b2a0: 82212c l32i a8, a1, 176 4000b2a3: 5add add.n a13, a13, a5 4000b2a5: f0ff81 src a15, a15, a15 4000b2a8: 52212b l32i a5, a1, 172 4000b2ab: f26133 s32i a15, a1, 204 4000b2ae: 004240 ssai 2 4000b2b1: 00f730 xor a15, a7, a0 4000b2b4: a0aa81 src a10, a10, a10 4000b2b7: 805530 xor a5, a5, a8 4000b2ba: 104b40 ssai 27 4000b2bd: 50ff30 xor a15, a15, a5 4000b2c0: 5128fc l32r a5, [0xca62c1d6] ; 0x4000a360 4000b2c3: e08a30 xor a8, a10, a14 4000b2c6: 5add add.n a13, a13, a5 4000b2c8: 522133 l32i a5, a1, 204 4000b2cb: 808230 xor a8, a2, a8 4000b2ce: 8a55 add.n a5, a5, a8 4000b2d0: d08d81 src a8, a13, a13 4000b2d3: 8a55 add.n a5, a5, a8 4000b2d5: 104f40 ssai 31 4000b2d8: 822130 l32i a8, a1, 192 4000b2db: 5abb add.n a11, a11, a5 4000b2dd: f0ff81 src a15, a15, a15 4000b2e0: 52212d l32i a5, a1, 180 4000b2e3: f26138 s32i a15, a1, 224 4000b2e6: 004240 ssai 2 4000b2e9: e0ee81 src a14, a14, a14 4000b2ec: f22132 l32i a15, a1, 200 4000b2ef: 805530 xor a5, a5, a8 4000b2f2: 60ff30 xor a15, a15, a6 4000b2f5: 50ff30 xor a15, a15, a5 4000b2f8: 511afc l32r a5, [0xca62c1d6] ; 0x4000a360 4000b2fb: 104b40 ssai 27 4000b2fe: 5abb add.n a11, a11, a5 4000b300: b08b81 src a8, a11, a11 4000b303: 52212e l32i a5, a1, 184 4000b306: 104f40 ssai 31 4000b309: f0ff81 src a15, a15, a15 4000b30c: f2613a s32i a15, a1, 232 4000b30f: f2212c l32i a15, a1, 176 4000b312: 7911 s32i.n a7, a1, 4 4000b314: 50ff30 xor a15, a15, a5 4000b317: 522133 l32i a5, a1, 204 4000b31a: a26127 s32i a10, a1, 156 4000b31d: 305530 xor a5, a5, a3 4000b320: f05530 xor a5, a5, a15 4000b323: f2212e l32i a15, a1, 184 4000b326: 004240 ssai 2 4000b329: 40ff30 xor a15, a15, a4 4000b32c: 004430 xor a4, a4, a0 4000b32f: 300030 xor a0, a0, a3 4000b332: 026137 s32i a0, a1, 220 4000b335: 303c30 xor a3, a12, a3 4000b338: 326139 s32i a3, a1, 228 4000b33b: 02213a l32i a0, a1, 232 4000b33e: 322138 l32i a3, a1, 224 4000b341: 00cc30 xor a12, a12, a0 4000b344: f0cc30 xor a12, a12, a15 4000b347: 022138 l32i a0, a1, 224 4000b34a: d0fe30 xor a15, a14, a13 4000b34d: 900030 xor a0, a0, a9 4000b350: f0aa30 xor a10, a10, a15 4000b353: d0dd81 src a13, a13, a13 4000b356: f2212f l32i a15, a1, 188 4000b359: aa33 add.n a3, a3, a10 4000b35b: 104b40 ssai 27 4000b35e: 8a33 add.n a3, a3, a8 4000b360: 3a22 add.n a2, a2, a3 4000b362: 31fffb l32r a3, [0xca62c1d6] ; 0x4000a360 4000b365: a22131 l32i a10, a1, 196 4000b368: 3a22 add.n a2, a2, a3 4000b36a: 208281 src a8, a2, a2 4000b36d: 322130 l32i a3, a1, 192 4000b370: 104f40 ssai 31 4000b373: a03330 xor a3, a3, a10 4000b376: 505581 src a5, a5, a5 4000b379: 5961 s32i.n a5, a1, 24 4000b37b: 004240 ssai 2 4000b37e: f0aa30 xor a10, a10, a15 4000b381: 300030 xor a0, a0, a3 4000b384: 60ff30 xor a15, a15, a6 4000b387: 906630 xor a6, a6, a9 4000b38a: 32213a l32i a3, a1, 232 4000b38d: 909730 xor a9, a7, a9 4000b390: 507730 xor a7, a7, a5 4000b393: a07730 xor a7, a7, a10 4000b396: b0ad30 xor a10, a13, a11 4000b399: a0ae30 xor a10, a14, a10 4000b39c: b0bb81 src a11, a11, a11 4000b39f: aa33 add.n a3, a3, a10 4000b3a1: a22127 l32i a10, a1, 156 4000b3a4: 8a33 add.n a3, a3, a8 4000b3a6: 3aaa add.n a10, a10, a3 4000b3a8: 31eefb l32r a3, [0xca62c1d6] ; 0x4000a360 4000b3ab: 104b40 ssai 27 4000b3ae: 3aaa add.n a10, a10, a3 4000b3b0: a08a81 src a8, a10, a10 4000b3b3: 322132 l32i a3, a1, 200 4000b3b6: 3921 s32i.n a3, a1, 8 4000b3b8: 104f40 ssai 31 4000b3bb: 000081 src a0, a0, a0 4000b3be: 0971 s32i.n a0, a1, 28 4000b3c0: 003330 xor a3, a3, a0 4000b3c3: 004240 ssai 2 4000b3c6: 403330 xor a3, a3, a4 4000b3c9: 204b30 xor a4, a11, a2 4000b3cc: 404d30 xor a4, a13, a4 4000b3cf: 202281 src a2, a2, a2 4000b3d2: 4a45 add.n a4, a5, a4 4000b3d4: 8a44 add.n a4, a4, a8 4000b3d6: 4aee add.n a14, a14, a4 4000b3d8: 41e2fb l32r a4, [0xca62c1d6] ; 0x4000a360 4000b3db: 104b40 ssai 27 4000b3de: 4aee add.n a14, a14, a4 4000b3e0: e08e81 src a8, a14, a14 4000b3e3: 422133 l32i a4, a1, 204 4000b3e6: 4931 s32i.n a4, a1, 12 4000b3e8: 104f40 ssai 31 4000b3eb: c0cc81 src a12, a12, a12 4000b3ee: c981 s32i.n a12, a1, 32 4000b3f0: c04430 xor a4, a4, a12 4000b3f3: f04430 xor a4, a4, a15 4000b3f6: 004240 ssai 2 4000b3f9: a0f230 xor a15, a2, a10 4000b3fc: a0aa81 src a10, a10, a10 4000b3ff: f0fb30 xor a15, a11, a15 4000b402: 104b40 ssai 27 4000b405: faf0 add.n a15, a0, a15 4000b407: 8aff add.n a15, a15, a8 4000b409: fadd add.n a13, a13, a15 4000b40b: 81d5fb l32r a8, [0xca62c1d6] ; 0x4000a360 4000b40e: e0fa30 xor a15, a10, a14 4000b411: f0f230 xor a15, a2, a15 4000b414: facc add.n a12, a12, a15 4000b416: 8add add.n a13, a13, a8 4000b418: d0fd81 src a15, a13, a13 4000b41b: facc add.n a12, a12, a15 4000b41d: 104f40 ssai 31 4000b420: f22138 l32i a15, a1, 224 4000b423: 707781 src a7, a7, a7 4000b426: cabb add.n a11, a11, a12 4000b428: 8abb add.n a11, a11, a8 4000b42a: 7991 s32i.n a7, a1, 36 4000b42c: c22137 l32i a12, a1, 220 4000b42f: f941 s32i.n a15, a1, 16 4000b431: 004240 ssai 2 4000b434: e0ee81 src a14, a14, a14 4000b437: 70ff30 xor a15, a15, a7 4000b43a: c0ff30 xor a15, a15, a12 4000b43d: 104b40 ssai 27 4000b440: d0ce30 xor a12, a14, a13 4000b443: c0ca30 xor a12, a10, a12 4000b446: ca77 add.n a7, a7, a12 4000b448: b0cb81 src a12, a11, a11 4000b44b: ca77 add.n a7, a7, a12 4000b44d: 104f40 ssai 31 4000b450: c2213a l32i a12, a1, 232 4000b453: 7a22 add.n a2, a2, a7 4000b455: 303381 src a3, a3, a3 4000b458: 722121 l32i a7, a1, 132 4000b45b: 8a22 add.n a2, a2, a8 4000b45d: 39a1 s32i.n a3, a1, 40 4000b45f: c951 s32i.n a12, a1, 20 4000b461: 004240 ssai 2 4000b464: d0dd81 src a13, a13, a13 4000b467: 30cc30 xor a12, a12, a3 4000b46a: 60cc30 xor a12, a12, a6 4000b46d: 104b40 ssai 27 4000b470: b06d30 xor a6, a13, a11 4000b473: 606e30 xor a6, a14, a6 4000b476: 6a33 add.n a3, a3, a6 4000b478: 206281 src a6, a2, a2 4000b47b: 6a33 add.n a3, a3, a6 4000b47d: 104f40 ssai 31 4000b480: 404481 src a4, a4, a4 4000b483: 3aaa add.n a10, a10, a3 4000b485: 8aaa add.n a10, a10, a8 4000b487: 49b1 s32i.n a4, a1, 44 4000b489: 405530 xor a5, a5, a4 4000b48c: 322139 l32i a3, a1, 228 4000b48f: 004240 ssai 2 4000b492: b0bb81 src a11, a11, a11 4000b495: 503330 xor a3, a3, a5 4000b498: 104b40 ssai 27 4000b49b: 205b30 xor a5, a11, a2 4000b49e: 505d30 xor a5, a13, a5 4000b4a1: 5a44 add.n a4, a4, a5 4000b4a3: a05a81 src a5, a10, a10 4000b4a6: 5a44 add.n a4, a4, a5 4000b4a8: 104f40 ssai 31 4000b4ab: f0ff81 src a15, a15, a15 4000b4ae: 4aee add.n a14, a14, a4 4000b4b0: 8aee add.n a14, a14, a8 4000b4b2: f9c1 s32i.n a15, a1, 48 4000b4b4: f00030 xor a0, a0, a15 4000b4b7: 004240 ssai 2 4000b4ba: 202281 src a2, a2, a2 4000b4bd: 009930 xor a9, a9, a0 4000b4c0: 104b40 ssai 27 4000b4c3: a00230 xor a0, a2, a10 4000b4c6: 000b30 xor a0, a11, a0 4000b4c9: 0aff add.n a15, a15, a0 4000b4cb: e00e81 src a0, a14, a14 4000b4ce: 0aff add.n a15, a15, a0 4000b4d0: 104f40 ssai 31 4000b4d3: c0cc81 src a12, a12, a12 4000b4d6: fadd add.n a13, a13, a15 4000b4d8: 8add add.n a13, a13, a8 4000b4da: c9d1 s32i.n a12, a1, 52 4000b4dc: 004240 ssai 2 4000b4df: a0aa81 src a10, a10, a10 4000b4e2: e0fa30 xor a15, a10, a14 4000b4e5: 104b40 ssai 27 4000b4e8: f0f230 xor a15, a2, a15 4000b4eb: facc add.n a12, a12, a15 4000b4ed: d0fd81 src a15, a13, a13 4000b4f0: facc add.n a12, a12, a15 4000b4f2: 104f40 ssai 31 4000b4f5: 303381 src a3, a3, a3 4000b4f8: cabb add.n a11, a11, a12 4000b4fa: 8abb add.n a11, a11, a8 4000b4fc: 39e1 s32i.n a3, a1, 56 4000b4fe: 004240 ssai 2 4000b501: e0ee81 src a14, a14, a14 4000b504: d04e30 xor a4, a14, a13 4000b507: 104b40 ssai 27 4000b50a: 404a30 xor a4, a10, a4 4000b50d: 4a33 add.n a3, a3, a4 4000b50f: b04b81 src a4, a11, a11 4000b512: 4a33 add.n a3, a3, a4 4000b514: 104f40 ssai 31 4000b517: 4c04 movi.n a4, 64 4000b519: 3a22 add.n a2, a2, a3 4000b51b: 909981 src a9, a9, a9 4000b51e: 0c03 movi.n a3, 0 4000b520: 8a22 add.n a2, a2, a8 4000b522: 004240 ssai 2 4000b525: 99f1 s32i.n a9, a1, 60 4000b527: 6807 l32i.n a6, a7, 0 4000b529: 0817 l32i.n a0, a7, 4 4000b52b: d0dd81 src a13, a13, a13 4000b52e: f847 l32i.n a15, a7, 16 4000b530: 104b40 ssai 27 4000b533: eaff add.n a15, a15, a14 4000b535: 20c281 src a12, a2, a2 4000b538: 2a00 add.n a0, a0, a2 4000b53a: 0917 s32i.n a0, a7, 4 4000b53c: 004240 ssai 2 4000b53f: f947 s32i.n a15, a7, 16 4000b541: caaa add.n a10, a10, a12 4000b543: 2d01 mov.n a2, a1 4000b545: c837 l32i.n a12, a7, 12 4000b547: b0fd30 xor a15, a13, a11 4000b54a: f0ee30 xor a14, a14, a15 4000b54d: b0bb81 src a11, a11, a11 4000b550: f22120 l32i a15, a1, 128 4000b553: ea99 add.n a9, a9, a14 4000b555: dacc add.n a12, a12, a13 4000b557: c937 s32i.n a12, a7, 12 4000b559: d2211e l32i a13, a1, 120 4000b55c: aa99 add.n a9, a9, a10 4000b55e: e2211f l32i a14, a1, 124 4000b561: a827 l32i.n a10, a7, 8 4000b563: 9a66 add.n a6, a6, a9 4000b565: 8a66 add.n a6, a6, a8 4000b567: 6907 s32i.n a6, a7, 0 4000b569: baaa add.n a10, a10, a11 4000b56b: a927 s32i.n a10, a7, 8 4000b56d: 4533f6 call0 ets_memset ; 0x400018a4 4000b570: c2211d l32i a12, a1, 116 4000b573: 22a110 movi a2, 0x110 4000b576: 02211c l32i a0, a1, 112 4000b579: 2a11 add.n a1, a1, a2 4000b57b: 0df0 ret.n 4000b57d: 000000 4000b580: c3d2e1f0 ; l32r SHA1Init: 4000b584: 31ffff l32r a3, [0xc3d2e1f0] ; 0x4000b580 4000b587: 41a3f8 l32r a4, [0x10325476] ; 0x40009814 4000b58a: 51a1f8 l32r a5, [0x98badcfe] ; 0x40009810 4000b58d: 619ff8 l32r a6, [0xefcdab89] ; 0x4000980c 4000b590: 719ef8 l32r a7, [0x67452301] ; 0x40009808 4000b593: 0c08 movi.n a8, 0 4000b595: 8962 s32i.n a8, a2, 24 4000b597: 8952 s32i.n a8, a2, 20 4000b599: 7902 s32i.n a7, a2, 0 4000b59b: 6912 s32i.n a6, a2, 4 4000b59d: 5922 s32i.n a5, a2, 8 4000b59f: 4932 s32i.n a4, a2, 12 4000b5a1: 3942 s32i.n a3, a2, 16 4000b5a3: 0df0 ret.n 4000b5a5: 000000 SHA1Update: 4000b5a8: 12c1e0 addi a1, a1, -32 4000b5ab: c911 s32i.n a12, a1, 4 4000b5ad: d921 s32i.n a13, a1, 8 4000b5af: 4961 s32i.n a4, a1, 24 4000b5b1: f941 s32i.n a15, a1, 16 4000b5b3: e931 s32i.n a14, a1, 12 4000b5b5: 0901 s32i.n a0, a1, 0 4000b5b7: ed02 mov.n a14, a2 4000b5b9: 0862 l32i.n a0, a2, 24 4000b5bb: fd04 mov.n a15, a4 4000b5bd: f05d25 extui a5, a15, 29, 3 4000b5c0: 2852 l32i.n a2, a2, 20 4000b5c2: d04411 slli a4, a4, 3 4000b5c5: 20d354 extui a13, a2, 3, 6 4000b5c8: 202fb0 addx8 a2, a15, a2 4000b5cb: 295e s32i.n a2, a14, 20 4000b5cd: 47b203 bgeu a2, a4, 0x4000b5d4 4000b5d0: 1b00 addi.n a0, a0, 1 4000b5d2: 096e s32i.n a0, a14, 24 4000b5d4: d04f80 add a4, a15, a13 4000b5d7: 505080 add a5, a0, a5 4000b5da: 526e06 s32i a5, a14, 24 4000b5dd: b6d43b bltui a4, 64, 0x4000b61c 4000b5e0: 3951 s32i.n a3, a1, 20 4000b5e2: 4c0c movi.n a12, 64 4000b5e4: da2e add.n a2, a14, a13 4000b5e6: 22c21c addi a2, a2, 28 4000b5e9: d0ccc0 sub a12, a12, a13 4000b5ec: 4d0c mov.n a4, a12 4000b5ee: 452cf6 call0 ets_memcpy ; 0x400018b4 4000b5f1: 2d0e mov.n a2, a14 4000b5f3: 32ce1c addi a3, a14, 28 4000b5f6: c5d6fe call0 SHA1Transform ; 0x4000a364 4000b5f9: 02a07f movi a0, 127 4000b5fc: d0d0c0 sub a13, a0, a13 4000b5ff: f7bd12 bgeu a13, a15, 0x4000b615 4000b602: 3851 l32i.n a3, a1, 20 4000b604: 2d0e mov.n a2, a14 4000b606: c03380 add a3, a3, a12 4000b609: 85d5fe call0 SHA1Transform ; 0x4000a364 4000b60c: c2cc40 addi a12, a12, 64 4000b60f: d2cd40 addi a13, a13, 64 4000b612: f73dec bltu a13, a15, 0x4000b602 4000b615: 3851 l32i.n a3, a1, 20 4000b617: 0c0d movi.n a13, 0 4000b619: 860000 j 0x4000b61f 4000b61c: c2a000 movi a12, 0 4000b61f: c03380 add a3, a3, a12 4000b622: c04fc0 sub a4, a15, a12 4000b625: d02e80 add a2, a14, a13 4000b628: 22c21c addi a2, a2, 28 4000b62b: 8528f6 call0 ets_memcpy ; 0x400018b4 4000b62e: c811 l32i.n a12, a1, 4 4000b630: d821 l32i.n a13, a1, 8 4000b632: e831 l32i.n a14, a1, 12 4000b634: f841 l32i.n a15, a1, 16 4000b636: 0801 l32i.n a0, a1, 0 4000b638: 12c120 addi a1, a1, 32 4000b63b: 0df0 ret.n 4000b63d: 000000 4000b640: 3fffda20 ; l32r 4000b644: 3fffd644 ; l32r SHA1Final: 4000b648: 12c1e0 addi a1, a1, -32 4000b64b: f961 s32i.n a15, a1, 24 4000b64d: d941 s32i.n a13, a1, 16 4000b64f: c931 s32i.n a12, a1, 12 4000b651: 0921 s32i.n a0, a1, 8 4000b653: e951 s32i.n a14, a1, 20 4000b655: 0c00 movi.n a0, 0 4000b657: 7cfe movi.n a14, -1 4000b659: cd03 mov.n a12, a3 4000b65b: dd02 mov.n a13, a2 4000b65d: 3d01 mov.n a3, a1 4000b65f: 0c12 movi.n a2, 1 4000b661: e05030 xor a5, a0, a14 4000b664: 505014 extui a5, a5, 0, 2 4000b667: d05511 slli a5, a5, 3 4000b66a: 000540 ssr a5 4000b66d: b64001 bltui a0, 4, 0x4000b672 4000b670: 0c02 movi.n a2, 0 4000b672: 1b00 addi.n a0, a0, 1 4000b674: c042a0 addx4 a4, a2, a12 4000b677: 4854 l32i.n a4, a4, 20 4000b679: 0c12 movi.n a2, 1 4000b67b: 404091 srl a4, a4 4000b67e: 424300 s8i a4, a3, 0 4000b681: 1b33 addi.n a3, a3, 1 4000b683: 6680da bnei a0, 8, 0x4000b661 4000b686: 2d0c mov.n a2, a12 4000b688: 31eeff l32r a3, [0x3fffda20] ; 0x4000b640 4000b68b: 0c14 movi.n a4, 1 4000b68d: 85f1ff call0 SHA1Update ; 0x4000b5a8 4000b690: 585c l32i.n a5, a12, 20 4000b692: 62a1f8 movi a6, 0x1f8 4000b695: 605510 and a5, a5, a6 4000b698: 62a1c0 movi a6, 0x1c0 4000b69b: 67151b beq a5, a6, 0x4000b6ba 4000b69e: f1e9ff l32r a15, [0x3fffd644] ; 0x4000b644 4000b6a1: 2d0c mov.n a2, a12 4000b6a3: 42a001 movi a4, 1 4000b6a6: f03f20 or a3, a15, a15 4000b6a9: c5efff call0 SHA1Update ; 0x4000b5a8 4000b6ac: 785c l32i.n a7, a12, 20 4000b6ae: 82a1f8 movi a8, 0x1f8 4000b6b1: 807710 and a7, a7, a8 4000b6b4: 82a1c0 movi a8, 0x1c0 4000b6b7: 8797e6 bne a7, a8, 0x4000b6a1 4000b6ba: 2d0c mov.n a2, a12 4000b6bc: 103120 or a3, a1, a1 4000b6bf: 0c84 movi.n a4, 8 4000b6c1: 45eeff call0 SHA1Update ; 0x4000b5a8 4000b6c4: 02a000 movi a0, 0 4000b6c7: 22a014 movi a2, 20 4000b6ca: 1b90 addi.n a9, a0, 1 4000b6cc: 00a241 srli a10, a0, 2 4000b6cf: e0b030 xor a11, a0, a14 4000b6d2: b0b014 extui a11, a11, 0, 2 4000b6d5: c0aaa0 addx4 a10, a10, a12 4000b6d8: a80a l32i.n a10, a10, 0 4000b6da: d0bb11 slli a11, a11, 3 4000b6dd: 000b40 ssr a11 4000b6e0: a0a091 srl a10, a10 4000b6e3: 2b00 addi.n a0, a0, 2 4000b6e5: a24d00 s8i a10, a13, 0 4000b6e8: e0a930 xor a10, a9, a14 4000b6eb: 909241 srli a9, a9, 2 4000b6ee: a0a014 extui a10, a10, 0, 2 4000b6f1: d0aa11 slli a10, a10, 3 4000b6f4: c099a0 addx4 a9, a9, a12 4000b6f7: 9809 l32i.n a9, a9, 0 4000b6f9: 000a40 ssr a10 4000b6fc: 909091 srl a9, a9 4000b6ff: 924d01 s8i a9, a13, 1 4000b702: 2bdd addi.n a13, a13, 2 4000b704: 2790c2 bne a0, a2, 0x4000b6ca 4000b707: 22cc1c addi a2, a12, 28 4000b70a: 0c03 movi.n a3, 0 4000b70c: 42a040 movi a4, 64 4000b70f: 4519f6 call0 ets_memset ; 0x400018a4 4000b712: 2d0c mov.n a2, a12 4000b714: 0c03 movi.n a3, 0 4000b716: 1c44 movi.n a4, 20 4000b718: 8518f6 call0 ets_memset ; 0x400018a4 4000b71b: 22cc14 addi a2, a12, 20 4000b71e: 0c03 movi.n a3, 0 4000b720: 0c84 movi.n a4, 8 4000b722: 0518f6 call0 ets_memset ; 0x400018a4 4000b725: 2d01 mov.n a2, a1 4000b727: 0c03 movi.n a3, 0 4000b729: 0c84 movi.n a4, 8 4000b72b: 8517f6 call0 ets_memset ; 0x400018a4 4000b72e: c831 l32i.n a12, a1, 12 4000b730: d841 l32i.n a13, a1, 16 4000b732: e851 l32i.n a14, a1, 20 4000b734: f861 l32i.n a15, a1, 24 4000b736: 0821 l32i.n a0, a1, 8 4000b738: 12c120 addi a1, a1, 32 4000b73b: 0df0 ret.n 4000b73d: 000000 sub_b740: 4000b740: 82a090 movi a8, 144 4000b743: 8011c0 sub a1, a1, a8 4000b746: 52611f s32i a5, a1, 124 4000b749: 726118 s32i a7, a1, 96 4000b74c: 026119 s32i a0, a1, 100 4000b74f: 326120 s32i a3, a1, 128 4000b752: f2611d s32i a15, a1, 116 4000b755: e2611c s32i a14, a1, 112 4000b758: c2611a s32i a12, a1, 104 4000b75b: d2611b s32i a13, a1, 108 4000b75e: 60c620 or a12, a6, a6 4000b761: 40d420 or a13, a4, a4 4000b764: ed02 mov.n a14, a2 4000b766: f22120 l32i a15, a1, 128 4000b769: c535f7 call0 ets_strlen ; 0x40002ac8 4000b76c: f901 s32i.n a15, a1, 0 4000b76e: d921 s32i.n a13, a1, 8 4000b770: 8b61 addi.n a6, a1, 8 4000b772: 72c120 addi a7, a1, 32 4000b775: c24113 s8i a12, a1, 19 4000b778: c05875 extui a5, a12, 24, 8 4000b77b: c040f5 extui a4, a12, 16, 16 4000b77e: c03841 srli a3, a12, 8 4000b781: 0c40 movi.n a0, 4 4000b783: 0931 s32i.n a0, a1, 12 4000b785: 324112 s8i a3, a1, 18 4000b788: 424111 s8i a4, a1, 17 4000b78b: 524110 s8i a5, a1, 16 4000b78e: 0c24 movi.n a4, 2 4000b790: 5d01 mov.n a5, a1 4000b792: cd02 mov.n a12, a2 4000b794: 22c110 addi a2, a1, 16 4000b797: 3d0c mov.n a3, a12 4000b799: 2911 s32i.n a2, a1, 4 4000b79b: 2d0e mov.n a2, a14 4000b79d: 451100 call0 hmac_sha1_vector ; 0x4000b8b4 4000b7a0: 9c92 beqz.n a2, 0x4000b7bd 4000b7a2: 7cf2 movi.n a2, -1 4000b7a4: c2211a l32i a12, a1, 104 4000b7a7: d2211b l32i a13, a1, 108 4000b7aa: e2211c l32i a14, a1, 112 4000b7ad: f2211d l32i a15, a1, 116 4000b7b0: 32a090 movi a3, 144 4000b7b3: 022119 l32i a0, a1, 100 4000b7b6: 3a11 add.n a1, a1, a3 4000b7b8: 0df0 ret.n 4000b7ba: 000000 4000b7bd: 32c120 addi a3, a1, 32 4000b7c0: 1c44 movi.n a4, 20 4000b7c2: f22118 l32i a15, a1, 96 4000b7c5: c2611e s32i a12, a1, 120 4000b7c8: 2d0f mov.n a2, a15 4000b7ca: 850ef6 call0 ets_memcpy ; 0x400018b4 4000b7cd: 62211f l32i a6, a1, 124 4000b7d0: a62652 blti a6, 2, 0x4000b826 4000b7d3: c2cf14 addi a12, a15, 20 4000b7d6: d2a001 movi a13, 1 4000b7d9: e02e20 or a2, a14, a14 4000b7dc: 32211e l32i a3, a1, 120 4000b7df: 42c120 addi a4, a1, 32 4000b7e2: 52a014 movi a5, 20 4000b7e5: 62c140 addi a6, a1, 64 4000b7e8: c52300 call0 hmac_sha1 ; 0x4000ba28 4000b7eb: 5632fb bnez a2, 0x4000b7a2 4000b7ee: 22c120 addi a2, a1, 32 4000b7f1: 32c140 addi a3, a1, 64 4000b7f4: 42a014 movi a4, 20 4000b7f7: c50bf6 call0 ets_memcpy ; 0x400018b4 4000b7fa: 0d0f mov.n a0, a15 4000b7fc: 22c140 addi a2, a1, 64 4000b7ff: b2211f l32i a11, a1, 124 4000b802: 1bdd addi.n a13, a13, 1 4000b804: a20200 l8ui a10, a2, 0 4000b807: 920000 l8ui a9, a0, 0 4000b80a: 720001 l8ui a7, a0, 1 4000b80d: a09930 xor a9, a9, a10 4000b810: 924000 s8i a9, a0, 0 4000b813: 820201 l8ui a8, a2, 1 4000b816: 2b22 addi.n a2, a2, 2 4000b818: 807730 xor a7, a7, a8 4000b81b: 724001 s8i a7, a0, 1 4000b81e: 2b00 addi.n a0, a0, 2 4000b820: c790e0 bne a0, a12, 0x4000b804 4000b823: d79bb2 bne a11, a13, 0x4000b7d9 4000b826: 0c02 movi.n a2, 0 4000b828: c2211a l32i a12, a1, 104 4000b82b: d2211b l32i a13, a1, 108 4000b82e: e2211c l32i a14, a1, 112 4000b831: f2211d l32i a15, a1, 116 4000b834: 32a090 movi a3, 144 4000b837: 022119 l32i a0, a1, 100 4000b83a: 3a11 add.n a1, a1, a3 4000b83c: 0df0 ret.n 4000b83e: 0000 pbkdf2_sha1: 4000b840: 12c1b0 addi a1, a1, -80 4000b843: f9c1 s32i.n a15, a1, 48 4000b845: 0981 s32i.n a0, a1, 32 4000b847: 29d1 s32i.n a2, a1, 52 4000b849: 39e1 s32i.n a3, a1, 56 4000b84b: 49f1 s32i.n a4, a1, 60 4000b84d: 526110 s32i a5, a1, 64 4000b850: e9b1 s32i.n a14, a1, 44 4000b852: d9a1 s32i.n a13, a1, 40 4000b854: c991 s32i.n a12, a1, 36 4000b856: dd06 mov.n a13, a6 4000b858: 70c720 or a12, a7, a7 4000b85b: 163704 beqz a7, 0x4000b8a2 4000b85e: 0c0e movi.n a14, 0 4000b860: 28d1 l32i.n a2, a1, 52 4000b862: 38e1 l32i.n a3, a1, 56 4000b864: 48f1 l32i.n a4, a1, 60 4000b866: 522110 l32i a5, a1, 64 4000b869: 7d01 mov.n a7, a1 4000b86b: 1bee addi.n a14, a14, 1 4000b86d: 6d0e mov.n a6, a14 4000b86f: 05edff call0 sub_b740 ; 0x4000b740 4000b872: 8cf2 beqz.n a2, 0x4000b885 4000b874: 7cf2 movi.n a2, -1 4000b876: c891 l32i.n a12, a1, 36 4000b878: d8a1 l32i.n a13, a1, 40 4000b87a: e8b1 l32i.n a14, a1, 44 4000b87c: f8c1 l32i.n a15, a1, 48 4000b87e: 0881 l32i.n a0, a1, 32 4000b880: 12c150 addi a1, a1, 80 4000b883: 0df0 ret.n 4000b885: 1c42 movi.n a2, 20 4000b887: fd02 mov.n a15, a2 4000b889: c73201 bltu a2, a12, 0x4000b88e 4000b88c: fd0c mov.n a15, a12 4000b88e: d02d20 or a2, a13, a13 4000b891: 103120 or a3, a1, a1 4000b894: f04f20 or a4, a15, a15 4000b897: c501f6 call0 ets_memcpy ; 0x400018b4 4000b89a: fadd add.n a13, a13, a15 4000b89c: f0ccc0 sub a12, a12, a15 4000b89f: 56dcfb bnez a12, 0x4000b860 4000b8a2: 0c02 movi.n a2, 0 4000b8a4: c891 l32i.n a12, a1, 36 4000b8a6: d8a1 l32i.n a13, a1, 40 4000b8a8: e8b1 l32i.n a14, a1, 44 4000b8aa: f8c1 l32i.n a15, a1, 48 4000b8ac: 0881 l32i.n a0, a1, 32 4000b8ae: 12c150 addi a1, a1, 80 4000b8b1: 0df0 ret.n 4000b8b3: 00 hmac_sha1_vector: 4000b8b4: 82a0e0 movi a8, 224 4000b8b7: 8011c0 sub a1, a1, a8 4000b8ba: 326131 s32i a3, a1, 196 4000b8bd: 226130 s32i a2, a1, 192 4000b8c0: 02612a s32i a0, a1, 168 4000b8c3: c2612b s32i a12, a1, 172 4000b8c6: d2612c s32i a13, a1, 176 4000b8c9: cd06 mov.n a12, a6 4000b8cb: dd04 mov.n a13, a4 4000b8cd: 02a0c4 movi a0, 196 4000b8d0: 0a01 add.n a0, a1, a0 4000b8d2: 4d05 mov.n a4, a5 4000b8d4: 62a0c0 movi a6, 192 4000b8d7: 5d07 mov.n a5, a7 4000b8d9: 6a61 add.n a6, a1, a6 4000b8db: b66d02 bltui a13, 6, 0x4000b8e1 4000b8de: 063300 j 0x4000b9ae 4000b8e1: 526129 s32i a5, a1, 164 4000b8e4: 426128 s32i a4, a1, 160 4000b8e7: 4c02 movi.n a2, 64 4000b8e9: 37b217 bgeu a2, a3, 0x4000b904 4000b8ec: 3d06 mov.n a3, a6 4000b8ee: 0c12 movi.n a2, 1 4000b8f0: 5d01 mov.n a5, a1 4000b8f2: 004020 or a4, a0, a0 4000b8f5: 459ffe call0 sha1_vector ; 0x4000a2ec 4000b8f8: 56220b bnez a2, 0x4000b9ae 4000b8fb: 126130 s32i a1, a1, 192 4000b8fe: 82a014 movi a8, 20 4000b901: 826131 s32i a8, a1, 196 4000b904: 22c120 addi a2, a1, 32 4000b907: 32a000 movi a3, 0 4000b90a: 42a040 movi a4, 64 4000b90d: 45f9f5 call0 ets_memset ; 0x400018a4 4000b910: 322130 l32i a3, a1, 192 4000b913: 422131 l32i a4, a1, 196 4000b916: 22c120 addi a2, a1, 32 4000b919: c2612d s32i a12, a1, 180 4000b91c: 45f9f5 call0 ets_memcpy ; 0x400018b4 4000b91f: 62212d l32i a6, a1, 180 4000b922: 02c120 addi a0, a1, 32 4000b925: c2c160 addi a12, a1, 96 4000b928: 22a036 movi a2, 54 4000b92b: 42c120 addi a4, a1, 32 4000b92e: 426118 s32i a4, a1, 96 4000b931: 520001 l8ui a5, a0, 1 4000b934: 720000 l8ui a7, a0, 0 4000b937: 205530 xor a5, a5, a2 4000b93a: 207730 xor a7, a7, a2 4000b93d: 724000 s8i a7, a0, 0 4000b940: 524001 s8i a5, a0, 1 4000b943: 2b00 addi.n a0, a0, 2 4000b945: c790e8 bne a0, a12, 0x4000b931 4000b948: 4c07 movi.n a7, 64 4000b94a: 726120 s32i a7, a1, 128 4000b94d: 168d04 beqz a13, 0x4000b999 4000b950: 22c160 addi a2, a1, 96 4000b953: 3d06 mov.n a3, a6 4000b955: b22128 l32i a11, a1, 160 4000b958: 02c17f addi a0, a1, 127 4000b95b: 1b00 addi.n a0, a0, 1 4000b95d: ad0b mov.n a10, a11 4000b95f: b0bda0 addx4 a11, a13, a11 4000b962: 076d12 bbci a13, 0, 0x4000b978 4000b965: 4b36 addi.n a3, a6, 4 4000b967: 4b00 addi.n a0, a0, 4 4000b969: 4806 l32i.n a4, a6, 0 4000b96b: 522128 l32i a5, a1, 160 4000b96e: 4b22 addi.n a2, a2, 4 4000b970: 4ba5 addi.n a10, a5, 4 4000b972: 5805 l32i.n a5, a5, 0 4000b974: 5902 s32i.n a5, a2, 0 4000b976: 4900 s32i.n a4, a0, 0 4000b978: d06141 srli a6, a13, 1 4000b97b: 9ca6 beqz.n a6, 0x4000b999 4000b97d: 9803 l32i.n a9, a3, 0 4000b97f: 480a l32i.n a4, a10, 0 4000b981: 4912 s32i.n a4, a2, 4 4000b983: 881a l32i.n a8, a10, 4 4000b985: 9910 s32i.n a9, a0, 4 4000b987: 8baa addi.n a10, a10, 8 4000b989: 7813 l32i.n a7, a3, 4 4000b98b: 8922 s32i.n a8, a2, 8 4000b98d: 8b33 addi.n a3, a3, 8 4000b98f: 7920 s32i.n a7, a0, 8 4000b991: 8b22 addi.n a2, a2, 8 4000b993: 02c008 addi a0, a0, 8 4000b996: b79ae3 bne a10, a11, 0x4000b97d 4000b999: 22cd01 addi a2, a13, 1 4000b99c: 32c160 addi a3, a1, 96 4000b99f: 522129 l32i a5, a1, 164 4000b9a2: 42c17f addi a4, a1, 127 4000b9a5: 42c401 addi a4, a4, 1 4000b9a8: 0594fe call0 sha1_vector ; 0x4000a2ec 4000b9ab: 161201 beqz a2, 0x4000b9c0 4000b9ae: 7cf2 movi.n a2, -1 4000b9b0: c2212b l32i a12, a1, 172 4000b9b3: d2212c l32i a13, a1, 176 4000b9b6: 32a0e0 movi a3, 224 4000b9b9: 02212a l32i a0, a1, 168 4000b9bc: 3a11 add.n a1, a1, a3 4000b9be: 0df0 ret.n 4000b9c0: 22c120 addi a2, a1, 32 4000b9c3: 32a000 movi a3, 0 4000b9c6: 42a040 movi a4, 64 4000b9c9: 85edf5 call0 ets_memset ; 0x400018a4 4000b9cc: 322130 l32i a3, a1, 192 4000b9cf: 422131 l32i a4, a1, 196 4000b9d2: 22c120 addi a2, a1, 32 4000b9d5: c5edf5 call0 ets_memcpy ; 0x400018b4 4000b9d8: 02c120 addi a0, a1, 32 4000b9db: 5cc2 movi.n a2, 92 4000b9dd: 520001 l8ui a5, a0, 1 4000b9e0: 620000 l8ui a6, a0, 0 4000b9e3: 205530 xor a5, a5, a2 4000b9e6: 206630 xor a6, a6, a2 4000b9e9: 624000 s8i a6, a0, 0 4000b9ec: 524001 s8i a5, a0, 1 4000b9ef: 2b00 addi.n a0, a0, 2 4000b9f1: c790e8 bne a0, a12, 0x4000b9dd 4000b9f4: 0c22 movi.n a2, 2 4000b9f6: 32c160 addi a3, a1, 96 4000b9f9: 42c17f addi a4, a1, 127 4000b9fc: 1c46 movi.n a6, 20 4000b9fe: 522129 l32i a5, a1, 164 4000ba01: 4c07 movi.n a7, 64 4000ba03: 82c120 addi a8, a1, 32 4000ba06: 826118 s32i a8, a1, 96 4000ba09: 726120 s32i a7, a1, 128 4000ba0c: 526119 s32i a5, a1, 100 4000ba0f: 626121 s32i a6, a1, 132 4000ba12: 42c401 addi a4, a4, 1 4000ba15: 458dfe call0 sha1_vector ; 0x4000a2ec 4000ba18: c2212b l32i a12, a1, 172 4000ba1b: d2212c l32i a13, a1, 176 4000ba1e: 32a0e0 movi a3, 224 4000ba21: 02212a l32i a0, a1, 168 4000ba24: 3a11 add.n a1, a1, a3 4000ba26: 0df0 ret.n hmac_sha1: 4000ba28: 7d06 mov.n a7, a6 4000ba2a: 9d05 mov.n a9, a5 4000ba2c: 12c1d0 addi a1, a1, -48 4000ba2f: 0901 s32i.n a0, a1, 0 4000ba31: 4961 s32i.n a4, a1, 24 4000ba33: 52c118 addi a5, a1, 24 4000ba36: 62c11c addi a6, a1, 28 4000ba39: 9971 s32i.n a9, a1, 28 4000ba3b: 0c14 movi.n a4, 1 4000ba3d: 45e7ff call0 hmac_sha1_vector ; 0x4000b8b4 4000ba40: 0801 l32i.n a0, a1, 0 4000ba42: 12c130 addi a1, a1, 48 4000ba45: 0df0 ret.n 4000ba47: 00 sha1_prf: 4000ba48: 12c180 addi a1, a1, -128 4000ba4b: 526116 s32i a5, a1, 88 4000ba4e: 726115 s32i a7, a1, 84 4000ba51: f2611b s32i a15, a1, 108 4000ba54: 026117 s32i a0, a1, 92 4000ba57: c26118 s32i a12, a1, 96 4000ba5a: 22611c s32i a2, a1, 112 4000ba5d: d26119 s32i a13, a1, 100 4000ba60: e2611a s32i a14, a1, 104 4000ba63: 60d620 or a13, a6, a6 4000ba66: 30e320 or a14, a3, a3 4000ba69: 402420 or a2, a4, a4 4000ba6c: cd04 mov.n a12, a4 4000ba6e: 0c00 movi.n a0, 0 4000ba70: f2211c l32i a15, a1, 112 4000ba73: 024100 s8i a0, a1, 0 4000ba76: 0505f7 call0 ets_strlen ; 0x40002ac8 4000ba79: 1961 s32i.n a1, a1, 24 4000ba7b: c941 s32i.n a12, a1, 16 4000ba7d: d991 s32i.n a13, a1, 36 4000ba7f: 1b22 addi.n a2, a2, 1 4000ba81: 322116 l32i a3, a1, 88 4000ba84: 3951 s32i.n a3, a1, 20 4000ba86: 2981 s32i.n a2, a1, 32 4000ba88: d22120 l32i a13, a1, 128 4000ba8b: 0c12 movi.n a2, 1 4000ba8d: 29a1 s32i.n a2, a1, 40 4000ba8f: bc1d beqz.n a13, 0x4000bac4 4000ba91: 1c30 movi.n a0, 19 4000ba93: 0c0c movi.n a12, 0 4000ba95: c04dc0 sub a4, a13, a12 4000ba98: 426114 s32i a4, a1, 80 4000ba9b: 47b03d bgeu a0, a4, 0x4000badc 4000ba9e: 2d0f mov.n a2, a15 4000baa0: 3d0e mov.n a3, a14 4000baa2: 0c34 movi.n a4, 3 4000baa4: 52c110 addi a5, a1, 16 4000baa7: 722115 l32i a7, a1, 84 4000baaa: 62c120 addi a6, a1, 32 4000baad: ca77 add.n a7, a7, a12 4000baaf: 45e0ff call0 hmac_sha1_vector ; 0x4000b8b4 4000bab2: fca2 bnez.n a2, 0x4000baf0 4000bab4: 1c30 movi.n a0, 19 4000bab6: 820100 l8ui a8, a1, 0 4000bab9: c2cc14 addi a12, a12, 20 4000babc: 1b88 addi.n a8, a8, 1 4000babe: 824100 s8i a8, a1, 0 4000bac1: d73cd0 bltu a12, a13, 0x4000ba95 4000bac4: 0c02 movi.n a2, 0 4000bac6: c22118 l32i a12, a1, 96 4000bac9: d22119 l32i a13, a1, 100 4000bacc: e2211a l32i a14, a1, 104 4000bacf: f2211b l32i a15, a1, 108 4000bad2: 32a080 movi a3, 128 4000bad5: 022117 l32i a0, a1, 92 4000bad8: 3a11 add.n a1, a1, a3 4000bada: 0df0 ret.n 4000badc: 3d0e mov.n a3, a14 4000bade: 2d0f mov.n a2, a15 4000bae0: 0c34 movi.n a4, 3 4000bae2: 52c110 addi a5, a1, 16 4000bae5: 62c120 addi a6, a1, 32 4000bae8: 72c130 addi a7, a1, 48 4000baeb: 85dcff call0 hmac_sha1_vector ; 0x4000b8b4 4000baee: 9c62 beqz.n a2, 0x4000bb08 4000baf0: 7cf2 movi.n a2, -1 4000baf2: c22118 l32i a12, a1, 96 4000baf5: d22119 l32i a13, a1, 100 4000baf8: e2211a l32i a14, a1, 104 4000bafb: f2211b l32i a15, a1, 108 4000bafe: 32a080 movi a3, 128 4000bb01: 022117 l32i a0, a1, 92 4000bb04: 3a11 add.n a1, a1, a3 4000bb06: 0df0 ret.n 4000bb08: 32c130 addi a3, a1, 48 4000bb0b: 222115 l32i a2, a1, 84 4000bb0e: 422114 l32i a4, a1, 80 4000bb11: c02280 add a2, a2, a12 4000bb14: c5d9f5 call0 ets_memcpy ; 0x400018b4 4000bb17: 22a000 movi a2, 0 4000bb1a: c22118 l32i a12, a1, 96 4000bb1d: d22119 l32i a13, a1, 100 4000bb20: e2211a l32i a14, a1, 104 4000bb23: f2211b l32i a15, a1, 108 4000bb26: 32a080 movi a3, 128 4000bb29: 022117 l32i a0, a1, 92 4000bb2c: 301180 add a1, a1, a3 4000bb2f: 0df0 ret.n 4000bb31: 000000 4000bb34: 00269ec3 ; l32r 4000bb38: 000343fd ; l32r wepkey_64: 4000bb3c: 12c1f0 addi a1, a1, -16 4000bb3f: 0911 s32i.n a0, a1, 4 4000bb41: c921 s32i.n a12, a1, 8 4000bb43: d931 s32i.n a13, a1, 12 4000bb45: cd04 mov.n a12, a4 4000bb47: dd05 mov.n a13, a5 4000bb49: f65302 bgeui a3, 5, 0x4000bb4f 4000bb4c: 863700 j 0x4000bc2e 4000bb4f: 96b50d bltz a5, 0x4000bc2e 4000bb52: 2901 s32i.n a2, a1, 0 4000bb54: a64502 blti a5, 4, 0x4000bb5a 4000bb57: c63400 j 0x4000bc2e 4000bb5a: 402420 or a2, a4, a4 4000bb5d: 85f6f6 call0 ets_strlen ; 0x40002ac8 4000bb60: 16a20c beqz a2, 0x4000bc2e 4000bb63: 0c14 movi.n a4, 1 4000bb65: 0c00 movi.n a0, 0 4000bb67: 0c03 movi.n a3, 0 4000bb69: 206121 srai a6, a2, 1 4000bb6c: 07620e bbci a2, 0, 0x4000bb7e 4000bb6f: 3d04 mov.n a3, a4 4000bb71: 0c05 movi.n a5, 0 4000bb73: 020c00 l8ui a0, a12, 0 4000bb76: 1bcc addi.n a12, a12, 1 4000bb78: 001540 ssl a5 4000bb7b: 0000a1 sll a0, a0 4000bb7e: acb6 beqz.n a6, 0x4000bbad 4000bb80: 620c00 l8ui a6, a12, 0 4000bb83: 420c01 l8ui a4, a12, 1 4000bb86: 1b53 addi.n a5, a3, 1 4000bb88: 307014 extui a7, a3, 0, 2 4000bb8b: d07711 slli a7, a7, 3 4000bb8e: 505014 extui a5, a5, 0, 2 4000bb91: 2bcc addi.n a12, a12, 2 4000bb93: 2b33 addi.n a3, a3, 2 4000bb95: d05511 slli a5, a5, 3 4000bb98: 001740 ssl a7 4000bb9b: 0066a1 sll a6, a6 4000bb9e: 600030 xor a0, a0, a6 4000bba1: 001540 ssl a5 4000bba4: 0044a1 sll a4, a4 4000bba7: 400030 xor a0, a0, a4 4000bbaa: 3792d2 bne a2, a3, 0x4000bb80 4000bbad: 41e1ff l32r a4, [0x00269ec3] ; 0x4000bb34 4000bbb0: c821 l32i.n a12, a1, 8 4000bbb2: acad beqz.n a13, 0x4000bbe0 4000bbb4: 0c17 movi.n a7, 1 4000bbb6: 51e0ff l32r a5, [0x000343fd] ; 0x4000bb38 4000bbb9: 32a000 movi a3, 0 4000bbbc: d08da0 addx4 a8, a13, a13 4000bbbf: 802121 srai a2, a8, 1 4000bbc2: 076808 bbci a8, 0, 0x4000bbce 4000bbc5: 703720 or a3, a7, a7 4000bbc8: 500082 mull a0, a0, a5 4000bbcb: 400080 add a0, a0, a4 4000bbce: 16e200 beqz a2, 0x4000bbe0 4000bbd1: 2b33 addi.n a3, a3, 2 4000bbd3: 500082 mull a0, a0, a5 4000bbd6: 4a00 add.n a0, a0, a4 4000bbd8: 500082 mull a0, a0, a5 4000bbdb: 4a00 add.n a0, a0, a4 4000bbdd: 3798f0 bne a8, a3, 0x4000bbd1 4000bbe0: 5801 l32i.n a5, a1, 0 4000bbe2: d831 l32i.n a13, a1, 12 4000bbe4: 2d05 mov.n a2, a5 4000bbe6: 5b35 addi.n a3, a5, 5 4000bbe8: 571339 beq a3, a5, 0x4000bc25 4000bbeb: 51d3ff l32r a5, [0x000343fd] ; 0x4000bb38 4000bbee: 507082 mull a7, a0, a5 4000bbf1: 4a77 add.n a7, a7, a4 4000bbf3: 7080f5 extui a8, a7, 16, 16 4000bbf6: 824200 s8i a8, a2, 0 4000bbf9: 507782 mull a7, a7, a5 4000bbfc: 4a77 add.n a7, a7, a4 4000bbfe: 7080f5 extui a8, a7, 16, 16 4000bc01: 824201 s8i a8, a2, 1 4000bc04: 507782 mull a7, a7, a5 4000bc07: 4a77 add.n a7, a7, a4 4000bc09: 7080f5 extui a8, a7, 16, 16 4000bc0c: 824202 s8i a8, a2, 2 4000bc0f: 507782 mull a7, a7, a5 4000bc12: 4a77 add.n a7, a7, a4 4000bc14: 506782 mull a6, a7, a5 4000bc17: 4a66 add.n a6, a6, a4 4000bc19: 7070f5 extui a7, a7, 16, 16 4000bc1c: 724203 s8i a7, a2, 3 4000bc1f: 6060f5 extui a6, a6, 16, 16 4000bc22: 624204 s8i a6, a2, 4 4000bc25: 0c52 movi.n a2, 5 4000bc27: 0811 l32i.n a0, a1, 4 4000bc29: 12c110 addi a1, a1, 16 4000bc2c: 0df0 ret.n 4000bc2e: 7cf2 movi.n a2, -1 4000bc30: c821 l32i.n a12, a1, 8 4000bc32: d831 l32i.n a13, a1, 12 4000bc34: 0811 l32i.n a0, a1, 4 4000bc36: 12c110 addi a1, a1, 16 4000bc39: 0df0 ret.n 4000bc3b: 00 4000bc3c: 3fffda24 ; l32r wepkey_128: 4000bc40: 20b220 or a11, a2, a2 4000bc43: 62a0e0 movi a6, 224 4000bc46: 6011c0 sub a1, a1, a6 4000bc49: c26133 s32i a12, a1, 204 4000bc4c: d26134 s32i a13, a1, 208 4000bc4f: e26135 s32i a14, a1, 212 4000bc52: f26136 s32i a15, a1, 216 4000bc55: 426137 s32i a4, a1, 220 4000bc58: 026132 s32i a0, a1, 200 4000bc5b: 61f8ff l32r a6, [0x3fffda24] ; 0x4000bc3c 4000bc5e: 02a00c movi a0, 12 4000bc61: 221604 l16ui a2, a6, 8 4000bc64: 225104 s16i a2, a1, 8 4000bc67: 422601 l32i a4, a6, 4 4000bc6a: 4911 s32i.n a4, a1, 4 4000bc6c: 6806 l32i.n a6, a6, 0 4000bc6e: 6901 s32i.n a6, a1, 0 4000bc70: 37b050 bgeu a0, a3, 0x4000bcc4 4000bc73: 96d504 bltz a5, 0x4000bcc4 4000bc76: e6454a bgei a5, 4, 0x4000bcc4 4000bc79: 222137 l32i a2, a1, 220 4000bc7c: b26131 s32i a11, a1, 196 4000bc7f: 526130 s32i a5, a1, 192 4000bc82: 45e4f6 call0 ets_strlen ; 0x40002ac8 4000bc85: ed02 mov.n a14, a2 4000bc87: bc92 beqz.n a2, 0x4000bcc4 4000bc89: 0c0c movi.n a12, 0 4000bc8b: f22130 l32i a15, a1, 192 4000bc8e: d2c110 addi a13, a1, 16 4000bc91: f0ff90 addx2 a15, a15, a15 4000bc94: faf2 add.n a15, a2, a15 4000bc96: f03f20 or a3, a15, a15 4000bc99: c02c20 or a2, a12, a12 4000bc9c: 855c02 call0 __umodsi3 ; 0x4000e268 4000bc9f: c2cc01 addi a12, a12, 1 4000bca2: e7b20a bgeu a2, a14, 0x4000bcb0 4000bca5: 022137 l32i a0, a1, 220 4000bca8: 0a02 add.n a0, a2, a0 4000bcaa: 020000 l8ui a0, a0, 0 4000bcad: c60100 j 0x4000bcb8 4000bcb0: e032c0 sub a3, a2, a14 4000bcb3: 3a01 add.n a0, a1, a3 4000bcb5: 020000 l8ui a0, a0, 0 4000bcb8: 024d00 s8i a0, a13, 0 4000bcbb: 1bdd addi.n a13, a13, 1 4000bcbd: 66dcd5 bnei a12, 64, 0x4000bc96 4000bcc0: 060600 j 0x4000bcdc 4000bcc3: 00 4000bcc4: 7cf2 movi.n a2, -1 4000bcc6: c22133 l32i a12, a1, 204 4000bcc9: d22134 l32i a13, a1, 208 4000bccc: e22135 l32i a14, a1, 212 4000bccf: f22136 l32i a15, a1, 216 4000bcd2: 32a0e0 movi a3, 224 4000bcd5: 022132 l32i a0, a1, 200 4000bcd8: 3a11 add.n a1, a1, a3 4000bcda: 0df0 ret.n 4000bcdc: 22c150 addi a2, a1, 80 4000bcdf: 85b3fd call0 MD5Init ; 0x40009818 4000bce2: 22c150 addi a2, a1, 80 4000bce5: 32c110 addi a3, a1, 16 4000bce8: 42a040 movi a4, 64 4000bceb: 85b4fd call0 MD5Update ; 0x40009834 4000bcee: 32c150 addi a3, a1, 80 4000bcf1: 22c17f addi a2, a1, 127 4000bcf4: 22c231 addi a2, a2, 49 4000bcf7: 85c0fd call0 MD5Final ; 0x40009900 4000bcfa: 222131 l32i a2, a1, 196 4000bcfd: 42c17f addi a4, a1, 127 4000bd00: 322130 l32i a3, a1, 192 4000bd03: 42c431 addi a4, a4, 49 4000bd06: 4a33 add.n a3, a3, a4 4000bd08: 0cd4 movi.n a4, 13 4000bd0a: 85baf5 call0 ets_memcpy ; 0x400018b4 4000bd0d: 0cd2 movi.n a2, 13 4000bd0f: c22133 l32i a12, a1, 204 4000bd12: d22134 l32i a13, a1, 208 4000bd15: e22135 l32i a14, a1, 212 4000bd18: f22136 l32i a15, a1, 216 4000bd1b: 32a0e0 movi a3, 224 4000bd1e: 022132 l32i a0, a1, 200 4000bd21: 3a11 add.n a1, a1, a3 4000bd23: 0df0 ret.n 4000bd25: 000000 ; a2 - int number (0-14) ; a3 - function ; a4 - arg ; -- always returns 0 _xtos_set_interrupt_handler_arg: 4000bd28: 960203 bltz a2, 0x4000bd5c 4000bd2b: 0ce5 movi.n a5, 14 4000bd2d: 27252b blt a5, a2, 0x4000bd5c 4000bd30: 61add1 l32r a6, [0x3fffd650] ; 0x400003e4 4000bd33: d08211 slli a8, a2, 3 ; n*8 4000bd36: 6a62 add.n a6, a2, a6 4000bd38: 620600 l8ui a6, a6, 0 4000bd3b: 71abd1 l32r a7, [0x3fffc208] ; 0x400003e8 4000bd3e: f6361a bgeui a6, 3, 0x4000bd5c 4000bd41: 8077c0 sub a7, a7, a8 4000bd44: 81aad1 l32r a8, [_xtos_unhandled_interrupt] ; [0x4000dc3c] 0x400003ec 4000bd47: 62271c l32i a6, a7, 112 4000bd4a: dc23 bnez.n a3, 0x4000bd60 4000bd4c: 82671c s32i a8, a7, 112 4000bd4f: 22671d s32i a2, a7, 116 4000bd52: 8096c0 sub a9, a6, a8 4000bd55: 0c02 movi.n a2, 0 4000bd57: 902693 movnez a2, a6, a9 4000bd5a: 0df0 ret.n 4000bd5c: 0c02 movi.n a2, 0 ; return 0 4000bd5e: 0df0 ret.n 4000bd60: 32671c s32i a3, a7, 112 4000bd63: 42671d s32i a4, a7, 116 4000bd66: 80a6c0 sub a10, a6, a8 4000bd69: 0c02 movi.n a2, 0 4000bd6b: a02693 movnez a2, a6, a10 4000bd6e: 0df0 ret.n ; call the above with 0 argument _xtos_set_interrupt_handler: 4000bd70: 4d02 mov.n a4, a2 4000bd72: 12c1f0 addi a1, a1, -16 4000bd75: 0901 s32i.n a0, a1, 0 4000bd77: 05fbff call0 _xtos_set_interrupt_handler_arg ; 0x4000bd28 4000bd7a: 0801 l32i.n a0, a1, 0 4000bd7c: 12c110 addi a1, a1, 16 4000bd7f: 0df0 ret.n 4000bd81: 000000 ; alias for ets_isr_unmask ( mask ) ; mask is in a2 _xtos_ints_on: 4000bd84: 4187d1 l32r a4, [0x3fffc200] ; 0x400003a0 4000bd87: 706200 rsil a7, 2 ; read and set interrupt level 4000bd8a: 3804 l32i.n a3, a4, 0 ; fetch idata[0] 4000bd8c: 6814 l32i.n a6, a4, 4 ; fetch idata[1] 4000bd8e: 205320 or a5, a3, a2 4000bd91: 5904 s32i.n a5, a4, 0 ; idata[0] |= mask 4000bd93: 605510 and a5, a5, a6 ; allow only these 4000bd96: 50e413 wsr.intenable a5 4000bd99: 70e613 wsr.ps a7 4000bd9c: 102000 rsync 4000bd9f: 2d03 mov.n a2, a3 4000bda1: 0df0 ret.n 4000bda3: 00 ; alias for ets_isr_mask ( mask ) ; mask is in a2 _xtos_ints_off: 4000bda4: 417fd1 l32r a4, [0x3fffc200] ; 0x400003a0 4000bda7: 706200 rsil a7, 2 4000bdaa: 3804 l32i.n a3, a4, 0 ; fetch idata[0] 4000bdac: 6814 l32i.n a6, a4, 4 ; fetch idata[1] 4000bdae: 205320 or a5, a3, a2 ; OR our bit 4000bdb1: 205530 xor a5, a5, a2 ; flip it to zero 4000bdb4: 5904 s32i.n a5, a4, 0 ; store back to idata[0] 4000bdb6: 605510 and a5, a5, a6 ; only allow these 4000bdb9: 50e413 wsr.intenable a5 4000bdbc: 70e613 wsr.ps a7 4000bdbf: 102000 rsync 4000bdc2: 2d03 mov.n a2, a3 ; return prior x[0] 4000bdc4: 0df0 ret.n 4000bdc6: 0000 ; Compare two strings (pointed to by a2 and a3). ; The result is returned in a2. strcmp: 4000bdc8: 820200 l8ui a8, a2, 0 4000bdcb: 920300 l8ui a9, a3, 0 4000bdce: 0c3a movi.n a10, 3 4000bdd0: 97984c bne a8, a9, 0x4000be20 ; quick check for non-match 4000bdd3: 30b220 or a11, a2, a3 4000bdd6: a70b4e bnone a11, a10, 0x4000be28 4000bdd9: 30b230 xor a11, a2, a3 4000bddc: a78b30 bany a11, a10, 0x4000be10 4000bddf: 1b22 addi.n a2, a2, 1 4000bde1: 163809 beqz a8, 0x4000be78 4000bde4: 1b33 addi.n a3, a3, 1 4000bde6: a7023e bnone a2, a10, 0x4000be28 4000bde9: 820200 l8ui a8, a2, 0 4000bdec: 920300 l8ui a9, a3, 0 4000bdef: 1b22 addi.n a2, a2, 1 4000bdf1: 97982b bne a8, a9, 0x4000be20 4000bdf4: 160808 beqz a8, 0x4000be78 4000bdf7: 1b33 addi.n a3, a3, 1 4000bdf9: a7022b bnone a2, a10, 0x4000be28 4000bdfc: 820200 l8ui a8, a2, 0 4000bdff: 920300 l8ui a9, a3, 0 4000be02: 1b22 addi.n a2, a2, 1 4000be04: 979818 bne a8, a9, 0x4000be20 4000be07: 16d806 beqz a8, 0x4000be78 4000be0a: 1b33 addi.n a3, a3, 1 4000be0c: 060600 j 0x4000be28 4000be0f: 00 4000be10: 820200 l8ui a8, a2, 0 4000be13: 920300 l8ui a9, a3, 0 4000be16: 1b22 addi.n a2, a2, 1 4000be18: 979804 bne a8, a9, 0x4000be20 4000be1b: 1b33 addi.n a3, a3, 1 4000be1d: 56f8fe bnez a8, 0x4000be10 ; here when two bytes differ 4000be20: 9028c0 sub a2, a8, a9 4000be23: 0df0 ret.n 4000be25: 000000 4000be28: 42a0ff movi a4, 255 4000be2b: 7176d1 l32r a7, [0x40404040] ; 0x40000404 4000be2e: c60000 j 0x4000be35 4000be31: 4b22 addi.n a2, a2, 4 4000be33: 4b33 addi.n a3, a3, 4 4000be35: 8802 l32i.n a8, a2, 0 4000be37: 9803 l32i.n a9, a3, 0 4000be39: f05811 slli a5, a8, 1 4000be3c: 97983c bne a8, a9, 0x4000be7c 4000be3f: 509820 or a9, a8, a5 4000be42: 7749eb ball a9, a7, 0x4000be31 4000be45: 47082f bnone a8, a4, 0x4000be78 4000be48: 516bd1 l32r a5, [0x0000ff00] ; 0x400003f4 4000be4b: 616bd1 l32r a6, [0x00ff0000] ; 0x400003f8 4000be4e: 570826 bnone a8, a5, 0x4000be78 4000be51: 716ad1 l32r a7, [0xff000000] ; 0x400003fc 4000be54: 670820 bnone a8, a6, 0x4000be78 4000be57: 77081d bnone a8, a7, 0x4000be78 4000be5a: 4b22 addi.n a2, a2, 4 4000be5c: 4b33 addi.n a3, a3, 4 4000be5e: 460000 j 0x4000be63 4000be61: 4b33 addi.n a3, a3, 4 4000be63: 8802 l32i.n a8, a2, 0 4000be65: 9803 l32i.n a9, a3, 0 4000be67: 4b22 addi.n a2, a2, 4 4000be69: 97980f bne a8, a9, 0x4000be7c 4000be6c: 470808 bnone a8, a4, 0x4000be78 4000be6f: 570805 bnone a8, a5, 0x4000be78 4000be72: 670802 bnone a8, a6, 0x4000be78 4000be75: 7788e8 bany a8, a7, 0x4000be61 ; comparison done, strings match 4000be78: 0c02 movi.n a2, 0 4000be7a: 0df0 ret.n 4000be7c: 902830 xor a2, a8, a9 4000be7f: 478221 bany a2, a4, 0x4000bea4 4000be82: 515cd1 l32r a5, [0x0000ff00] ; 0x400003f4 4000be85: 4708ef bnone a8, a4, 0x4000be78 4000be88: 578224 bany a2, a5, 0x4000beb0 4000be8b: 615bd1 l32r a6, [0x00ff0000] ; 0x400003f8 4000be8e: 5708e6 bnone a8, a5, 0x4000be78 4000be91: 678227 bany a2, a6, 0x4000bebc 4000be94: 6708e0 bnone a8, a6, 0x4000be78 4000be97: 80a875 extui a10, a8, 24, 8 4000be9a: 90b875 extui a11, a9, 24, 8 4000be9d: b02ac0 sub a2, a10, a11 4000bea0: 0df0 ret.n 4000bea2: 0000 4000bea4: 80a074 extui a10, a8, 0, 8 4000bea7: 90b074 extui a11, a9, 0, 8 4000beaa: b02ac0 sub a2, a10, a11 4000bead: 0df0 ret.n 4000beaf: 00 4000beb0: 80a874 extui a10, a8, 8, 8 4000beb3: 90b874 extui a11, a9, 8, 8 4000beb6: b02ac0 sub a2, a10, a11 4000beb9: 0df0 ret.n 4000bebb: 00 4000bebc: 80a075 extui a10, a8, 16, 8 4000bebf: 90b075 extui a11, a9, 16, 8 4000bec2: b02ac0 sub a2, a10, a11 4000bec5: 0df0 ret.n 4000bec7: 00 strcpy: 4000bec8: ad02 mov.n a10, a2 4000beca: 42a0ff movi a4, 255 4000becd: 5149d1 l32r a5, [0x0000ff00] ; 0x400003f4 4000bed0: 614ad1 l32r a6, [0x00ff0000] ; 0x400003f8 4000bed3: 714ad1 l32r a7, [0xff000000] ; 0x400003fc 4000bed6: 07e30b bbsi a3, 0, 0x4000bee5 4000bed9: 17e317 bbsi a3, 1, 0x4000bef4 4000bedc: 0c38 movi.n a8, 3 4000bede: 870a2c bnone a10, a8, 0x4000bf0e 4000bee1: c61500 j 0x4000bf3c 4000bee4: 00 4000bee5: 820300 l8ui a8, a3, 0 4000bee8: 1b33 addi.n a3, a3, 1 4000beea: 824a00 s8i a8, a10, 0 4000beed: 9c88 beqz.n a8, 0x4000bf09 4000beef: 1baa addi.n a10, a10, 1 4000bef1: 1763e7 bbci a3, 1, 0x4000bedc 4000bef4: 820300 l8ui a8, a3, 0 4000bef7: 824a00 s8i a8, a10, 0 4000befa: 8cb8 beqz.n a8, 0x4000bf09 4000befc: 820301 l8ui a8, a3, 1 4000beff: 2b33 addi.n a3, a3, 2 4000bf01: 824a01 s8i a8, a10, 1 4000bf04: 2baa addi.n a10, a10, 2 4000bf06: 5628fd bnez a8, 0x4000bedc 4000bf09: 0df0 ret.n 4000bf0b: 00 4000bf0c: 4baa addi.n a10, a10, 4 4000bf0e: 8803 l32i.n a8, a3, 0 4000bf10: 4b33 addi.n a3, a3, 4 4000bf12: 47080e bnone a8, a4, 0x4000bf24 4000bf15: 570810 bnone a8, a5, 0x4000bf29 4000bf18: 670814 bnone a8, a6, 0x4000bf30 4000bf1b: 890a s32i.n a8, a10, 0 4000bf1d: 7788eb bany a8, a7, 0x4000bf0c 4000bf20: 0df0 ret.n 4000bf22: 0000 4000bf24: 824a00 s8i a8, a10, 0 4000bf27: 0df0 ret.n 4000bf29: 825a00 s16i a8, a10, 0 4000bf2c: 0df0 ret.n 4000bf2e: 0000 4000bf30: 825a00 s16i a8, a10, 0 4000bf33: 0c08 movi.n a8, 0 4000bf35: 824a02 s8i a8, a10, 2 4000bf38: 0df0 ret.n 4000bf3a: 0000 4000bf3c: 820300 l8ui a8, a3, 0 4000bf3f: 1b33 addi.n a3, a3, 1 4000bf41: 824a00 s8i a8, a10, 0 4000bf44: 1baa addi.n a10, a10, 1 4000bf46: 5628ff bnez a8, 0x4000bf3c 4000bf49: 0df0 ret.n 4000bf4b: 00 ; Calculate the length of the string in a2 ; return length in a2 strlen: 4000bf4c: 32c2fc addi a3, a2, -4 4000bf4f: 42a0ff movi a4, 255 4000bf52: 5128d1 l32r a5, [0x0000ff00] ; 0x400003f4 4000bf55: 6128d1 l32r a6, [0x00ff0000] ; 0x400003f8 4000bf58: 7129d1 l32r a7, [0xff000000] ; 0x400003fc 4000bf5b: 07e205 bbsi a2, 0, 0x4000bf64 ; branch if bit 0 set 4000bf5e: 17e20c bbsi a2, 1, 0x4000bf6e ; branch if bit 1 set 4000bf61: c60600 j 0x4000bf80 ; neither bit 0 or 1 set ; odd starting address, fetch first byte all by itself 4000bf64: 820304 l8ui a8, a3, 4 ; fetch first byte 4000bf67: 1b33 addi.n a3, a3, 1 ; a3++ 4000bf69: ac38 beqz.n a8, 0x4000bf90 4000bf6b: 176311 bbci a3, 1, 0x4000bf80 ; even starting address, but not 4 byte boundary 4000bf6e: 2b33 addi.n a3, a3, 2 4000bf70: 8803 l32i.n a8, a3, 0 4000bf72: 67082a bnone a8, a6, 0x4000bfa0 4000bf75: 778807 bany a8, a7, 0x4000bf80 4000bf78: 3b33 addi.n a3, a3, 3 4000bf7a: 2023c0 sub a2, a3, a2 4000bf7d: 0df0 ret.n 4000bf7f: 00 ; loop fetching 32 bit words, then test the 4 bytes 4000bf80: 8813 l32i.n a8, a3, 4 ; a8 = [a3 + 4] 4000bf82: 4b33 addi.n a3, a3, 4 ; a3 += 4 4000bf84: 47080a bnone a8, a4, 0x4000bf92 ; lsb zero 4000bf87: 57080d bnone a8, a5, 0x4000bf98 4000bf8a: 670812 bnone a8, a6, 0x4000bfa0 4000bf8d: 7788ef bany a8, a7, 0x4000bf80 ; fall through when last byte is null ; a2 is the original starting address ; a3 is our working position. ; the difference is the string length 4000bf90: 3b33 addi.n a3, a3, 3 ; a3 += 3 4000bf92: 2023c0 sub a2, a3, a2 ; a2 = a3 - a2 4000bf95: 0df0 ret.n 4000bf97: 00 4000bf98: 1b33 addi.n a3, a3, 1 ; a3 += 1 4000bf9a: 2023c0 sub a2, a3, a2 ; a2 = a3 - a2 4000bf9d: 0df0 ret.n 4000bf9f: 00 4000bfa0: 2b33 addi.n a3, a3, 2 ; a3 += 2 4000bfa2: 2023c0 sub a2, a3, a2 ; a2 = a3 - a2 4000bfa5: 0df0 ret.n 4000bfa7: 00 strncmp: 4000bfa8: 12c1f0 addi a1, a1, -16 4000bfab: 169404 beqz a4, 0x4000bff8 4000bfae: 305220 or a5, a2, a3 4000bfb1: 505014 extui a5, a5, 0, 2 4000bfb4: 168504 beqz a5, 0x4000c000 4000bfb7: 72a000 movi a7, 0 4000bfba: 920200 l8ui a9, a2, 0 4000bfbd: 820300 l8ui a8, a3, 0 4000bfc0: acc4 beqz.n a4, 0x4000bff0 4000bfc2: 87992a bne a9, a8, 0x4000bff0 4000bfc5: 408420 or a8, a4, a4 4000bfc8: 26182c beqi a8, 1, 0x4000bff8 4000bfcb: 2a67 add.n a6, a7, a2 4000bfcd: 620600 l8ui a6, a6, 0 4000bfd0: 1b77 addi.n a7, a7, 1 4000bfd2: ac26 beqz.n a6, 0x4000bff8 4000bfd4: 7084c0 sub a8, a4, a7 4000bfd7: 169807 beqz a8, 0x4000c054 4000bfda: 3a97 add.n a9, a7, a3 4000bfdc: 2aa7 add.n a10, a7, a2 4000bfde: a20a00 l8ui a10, a10, 0 4000bfe1: 920900 l8ui a9, a9, 0 4000bfe4: a719e0 beq a9, a10, 0x4000bfc8 4000bfe7: 902ac0 sub a2, a10, a9 4000bfea: 12c110 addi a1, a1, 16 4000bfed: 0df0 ret.n 4000bfef: 00 4000bff0: 8029c0 sub a2, a9, a8 4000bff3: 12c110 addi a1, a1, 16 4000bff6: 0df0 ret.n 4000bff8: 0c02 movi.n a2, 0 4000bffa: 12c110 addi a1, a1, 16 4000bffd: 0df0 ret.n 4000bfff: 00 4000c000: 0c08 movi.n a8, 0 4000c002: b6443e bltui a4, 4, 0x4000c044 4000c005: 5803 l32i.n a5, a3, 0 4000c007: b802 l32i.n a11, a2, 0 4000c009: ad03 mov.n a10, a3 4000c00b: 579b35 bne a11, a5, 0x4000c044 4000c00e: 9d04 mov.n a9, a4 4000c010: 7d02 mov.n a7, a2 4000c012: b1fdd0 l32r a11, [0x80808080] ; 0x40000408 4000c015: 860100 j 0x4000c01f 4000c018: 680a l32i.n a6, a10, 0 4000c01a: 5807 l32i.n a5, a7, 0 4000c01c: 679524 bne a5, a6, 0x4000c044 4000c01f: 2649d5 beqi a9, 4, 0x4000bff8 4000c022: 51fad0 l32r a5, [0xfefefeff] ; 0x4000040c 4000c025: 0901 s32i.n a0, a1, 0 4000c027: 6807 l32i.n a6, a7, 0 4000c029: 7cf0 movi.n a0, -1 4000c02b: 000630 xor a0, a6, a0 4000c02e: 5a66 add.n a6, a6, a5 4000c030: 006610 and a6, a6, a0 4000c033: 0801 l32i.n a0, a1, 0 4000c035: 678bbf bany a11, a6, 0x4000bff8 4000c038: 4b77 addi.n a7, a7, 4 4000c03a: 4baa addi.n a10, a10, 4 4000c03c: 1b88 addi.n a8, a8, 1 4000c03e: 92c9fc addi a9, a9, -4 4000c041: f649d3 bgeui a9, 4, 0x4000c018 4000c044: 2028a0 addx4 a2, a8, a2 4000c047: 3038a0 addx4 a3, a8, a3 4000c04a: e05811 slli a5, a8, 2 4000c04d: 5044c0 sub a4, a4, a5 4000c050: c6d8ff j 0x4000bfb7 4000c053: 00 4000c054: 2a27 add.n a2, a7, a2 4000c056: 3a47 add.n a4, a7, a3 4000c058: 420400 l8ui a4, a4, 0 4000c05b: 220200 l8ui a2, a2, 0 4000c05e: 12c110 addi a1, a1, 16 4000c061: 4022c0 sub a2, a2, a4 4000c064: 0df0 ret.n 4000c066: 0000 4000c068: 820300 l8ui a8, a3, 0 4000c06b: 1b33 addi.n a3, a3, 1 4000c06d: 824a00 s8i a8, a10, 0 4000c070: 0b44 addi.n a4, a4, -1 4000c072: ac74 beqz.n a4, 0x4000c09d 4000c074: 1baa addi.n a10, a10, 1 4000c076: 167804 beqz a8, 0x4000c0c1 4000c079: 17633b bbci a3, 1, 0x4000c0b8 4000c07c: 820300 l8ui a8, a3, 0 4000c07f: 0b44 addi.n a4, a4, -1 4000c081: 824a00 s8i a8, a10, 0 4000c084: 9c54 beqz.n a4, 0x4000c09d 4000c086: 1baa addi.n a10, a10, 1 4000c088: bc58 beqz.n a8, 0x4000c0c1 4000c08a: 820301 l8ui a8, a3, 1 4000c08d: 2b33 addi.n a3, a3, 2 4000c08f: 824a00 s8i a8, a10, 0 4000c092: 0b44 addi.n a4, a4, -1 4000c094: 8c54 beqz.n a4, 0x4000c09d 4000c096: 1baa addi.n a10, a10, 1 4000c098: dcc8 bnez.n a8, 0x4000c0b8 4000c09a: c60800 j 0x4000c0c1 4000c09d: 0df0 ret.n 4000c09f: 00 strncpy: 4000c0a0: 20a220 or a10, a2, a2 4000c0a3: 1664ff beqz a4, 0x4000c09d 4000c0a6: b2a0ff movi a11, 255 4000c0a9: 51d2d0 l32r a5, [0x0000ff00] ; 0x400003f4 4000c0ac: 61d3d0 l32r a6, [0x00ff0000] ; 0x400003f8 4000c0af: 71d3d0 l32r a7, [0xff000000] ; 0x400003fc 4000c0b2: 07e3b2 bbsi a3, 0, 0x4000c068 4000c0b5: 17e3c3 bbsi a3, 1, 0x4000c07c 4000c0b8: 0c38 movi.n a8, 3 4000c0ba: 870a4a bnone a10, a8, 0x4000c108 4000c0bd: c62200 j 0x4000c14c 4000c0c0: 00 4000c0c1: 0c09 movi.n a9, 0 4000c0c3: 07ea1d bbsi a10, 0, 0x4000c0e4 4000c0c6: 17ea27 bbsi a10, 1, 0x4000c0f1 4000c0c9: a6440b blti a4, 4, 0x4000c0d8 4000c0cc: 990a s32i.n a9, a10, 0 4000c0ce: 4baa addi.n a10, a10, 4 4000c0d0: 42c4fc addi a4, a4, -4 4000c0d3: e644f5 bgei a4, 4, 0x4000c0cc 4000c0d6: 8c84 beqz.n a4, 0x4000c0e2 4000c0d8: 924a00 s8i a9, a10, 0 4000c0db: 0b44 addi.n a4, a4, -1 4000c0dd: 1baa addi.n a10, a10, 1 4000c0df: 5654ff bnez a4, 0x4000c0d8 4000c0e2: 0df0 ret.n 4000c0e4: 924a00 s8i a9, a10, 0 4000c0e7: 0b44 addi.n a4, a4, -1 4000c0e9: 1654ff beqz a4, 0x4000c0e2 4000c0ec: 1baa addi.n a10, a10, 1 4000c0ee: 176ad7 bbci a10, 1, 0x4000c0c9 4000c0f1: 924a00 s8i a9, a10, 0 4000c0f4: 0b44 addi.n a4, a4, -1 4000c0f6: 1684fe beqz a4, 0x4000c0e2 4000c0f9: 924a01 s8i a9, a10, 1 4000c0fc: 0b44 addi.n a4, a4, -1 4000c0fe: 1604fe beqz a4, 0x4000c0e2 4000c101: 2baa addi.n a10, a10, 2 4000c103: 86f0ff j 0x4000c0c9 4000c106: 0000 4000c108: a65440 blti a4, 5, 0x4000c14c 4000c10b: 8803 l32i.n a8, a3, 0 4000c10d: 4b33 addi.n a3, a3, 4 4000c10f: b70812 bnone a8, a11, 0x4000c125 4000c112: 57081a bnone a8, a5, 0x4000c130 4000c115: 670823 bnone a8, a6, 0x4000c13c 4000c118: 890a s32i.n a8, a10, 0 4000c11a: 42c4fc addi a4, a4, -4 4000c11d: 4baa addi.n a10, a10, 4 4000c11f: 7788e5 bany a8, a7, 0x4000c108 4000c122: c6e6ff j 0x4000c0c1 4000c125: 824a00 s8i a8, a10, 0 4000c128: 0b44 addi.n a4, a4, -1 4000c12a: 1baa addi.n a10, a10, 1 4000c12c: 46e4ff j 0x4000c0c1 4000c12f: 00 4000c130: 825a00 s16i a8, a10, 0 4000c133: 42c4fe addi a4, a4, -2 4000c136: 2baa addi.n a10, a10, 2 4000c138: 46e1ff j 0x4000c0c1 4000c13b: 00 4000c13c: 825a00 s16i a8, a10, 0 4000c13f: 0c08 movi.n a8, 0 4000c141: 824a02 s8i a8, a10, 2 4000c144: 42c4fd addi a4, a4, -3 4000c147: 3baa addi.n a10, a10, 3 4000c149: 06ddff j 0x4000c0c1 4000c14c: 820300 l8ui a8, a3, 0 4000c14f: 1b33 addi.n a3, a3, 1 4000c151: 824a00 s8i a8, a10, 0 4000c154: 0b44 addi.n a4, a4, -1 4000c156: 8c64 beqz.n a4, 0x4000c160 4000c158: 1baa addi.n a10, a10, 1 4000c15a: 56e8fe bnez a8, 0x4000c14c 4000c15d: 06d8ff j 0x4000c0c1 4000c160: 0df0 ret.n 4000c162: 0000 4000c164: 67c304 bnall a3, a6, 0x4000c16c 4000c167: 707211 slli a7, a2, 9 4000c16a: 8c07 beqz.n a7, 0x4000c16e 4000c16c: 0df0 ret.n 4000c16e: 2d03 mov.n a2, a3 4000c170: 0df0 ret.n 4000c172: 0000 4000c174: 807611 slli a7, a6, 8 4000c177: 703330 xor a3, a3, a7 4000c17a: c63c00 j 0x4000c271 4000c17d: 000000 __addsf3: 4000c180: 61a4d0 l32r a6, [0x7f800000] ; 0x40000410 4000c183: 307230 xor a7, a2, a3 4000c186: 96a7fe bltz a7, 0x4000c174 4000c189: 6742d7 ball a2, a6, 0x4000c164 4000c18c: 6743de ball a3, a6, 0x4000c16e 4000c18f: 207785 extui a7, a2, 23, 9 4000c192: 308785 extui a8, a3, 23, 9 4000c195: 87374c bltu a7, a8, 0x4000c1e5 4000c198: 670328 bnone a3, a6, 0x4000c1c4 4000c19b: 603320 or a3, a3, a6 4000c19e: 803311 slli a3, a3, 8 4000c1a1: 303841 srli a3, a3, 8 4000c1a4: 80a7c0 sub a10, a7, a8 4000c1a7: f6ca29 bgeui a10, 32, 0x4000c1d4 4000c1aa: 000a40 ssr a10 4000c1ad: 0c09 movi.n a9, 0 4000c1af: 909381 src a9, a3, a9 4000c1b2: 303091 srl a3, a3 4000c1b5: 3a22 add.n a2, a2, a3 4000c1b7: 20a785 extui a10, a2, 23, 9 4000c1ba: 771a4a beq a10, a7, 0x4000c208 4000c1bd: 8d07 mov.n a8, a7 4000c1bf: 461500 j 0x4000c218 4000c1c2: 0000 4000c1c4: 703311 slli a3, a3, 9 4000c1c7: 303941 srli a3, a3, 9 4000c1ca: 670204 bnone a2, a6, 0x4000c1d2 4000c1cd: 1b88 addi.n a8, a8, 1 4000c1cf: 46f4ff j 0x4000c1a4 4000c1d2: 3a22 add.n a2, a2, a3 4000c1d4: 0df0 ret.n 4000c1d6: 0000 4000c1d8: 702211 slli a2, a2, 9 4000c1db: 202941 srli a2, a2, 9 4000c1de: 1b77 addi.n a7, a7, 1 4000c1e0: 460300 j 0x4000c1f1 4000c1e3: 0000 4000c1e5: 6702ef bnone a2, a6, 0x4000c1d8 4000c1e8: 602220 or a2, a2, a6 4000c1eb: 802211 slli a2, a2, 8 4000c1ee: 202841 srli a2, a2, 8 4000c1f1: 70a8c0 sub a10, a8, a7 4000c1f4: f6ca1c bgeui a10, 32, 0x4000c214 4000c1f7: 000a40 ssr a10 4000c1fa: 0092a1 sll a9, a2 4000c1fd: 202091 srl a2, a2 4000c200: 3a22 add.n a2, a2, a3 4000c202: 20a785 extui a10, a2, 23, 9 4000c205: 879a0f bne a10, a8, 0x4000c218 4000c208: d66900 bgez a9, 0x4000c212 4000c20b: 1b22 addi.n a2, a2, 1 4000c20d: f09911 slli a9, a9, 1 4000c210: acc9 beqz.n a9, 0x4000c240 4000c212: 0df0 ret.n 4000c214: 2d03 mov.n a2, a3 4000c216: 0df0 ret.n 4000c218: ad02 mov.n a10, a2 4000c21a: 202141 srli a2, a2, 1 4000c21d: 1b88 addi.n a8, a8, 1 4000c21f: a08801 slli a8, a8, 22 4000c222: 8a22 add.n a2, a2, a8 4000c224: 674208 ball a2, a6, 0x4000c230 4000c227: 076a03 bbci a10, 0, 0x4000c22e 4000c22a: 1b22 addi.n a2, a2, 1 4000c22c: 9c09 beqz.n a9, 0x4000c240 4000c22e: 0df0 ret.n 4000c230: 202785 extui a2, a2, 23, 9 4000c233: 902201 slli a2, a2, 23 4000c236: f08811 slli a8, a8, 1 4000c239: 802220 or a2, a2, a8 4000c23c: 0df0 ret.n 4000c23e: 0000 4000c240: 202141 srli a2, a2, 1 4000c243: f02211 slli a2, a2, 1 ; ( c001c280 ) 4000c246: 0df0 ret.n 4000c248: 67c305 bnall a3, a6, 0x4000c251 4000c24b: 4172d0 l32r a4, [0x00400000] ; 0x40000414 4000c24e: 402220 or a2, a2, a4 4000c251: 0df0 ret.n 4000c253: 00 4000c254: 807611 slli a7, a6, 8 4000c257: 702330 xor a2, a3, a7 4000c25a: 0df0 ret.n 4000c25c: 807611 slli a7, a6, 8 4000c25f: 703330 xor a3, a3, a7 4000c262: c6c8ff j 0x4000c189 4000c265: 000000 __subsf3: 4000c268: 616ad0 l32r a6, [0x7f800000] ; 0x40000410 4000c26b: 307230 xor a7, a2, a3 4000c26e: 96a7fe bltz a7, 0x4000c25c 4000c271: 6742d3 ball a2, a6, 0x4000c248 4000c274: 6743dc ball a3, a6, 0x4000c254 4000c277: 207775 extui a7, a2, 23, 8 4000c27a: 308775 extui a8, a3, 23, 8 4000c27d: 37324b bltu a2, a3, 0x4000c2cc 4000c280: 67032d bnone a3, a6, 0x4000c2b1 4000c283: 603320 or a3, a3, a6 4000c286: 803311 slli a3, a3, 8 4000c289: 303841 srli a3, a3, 8 4000c28c: 80a7c0 sub a10, a7, a8 4000c28f: f6ca37 bgeui a10, 32, 0x4000c2ca 4000c292: 000a40 ssr a10 4000c295: 0c09 movi.n a9, 0 4000c297: 909381 src a9, a3, a9 4000c29a: 303091 srl a3, a3 4000c29d: 3022c0 sub a2, a2, a3 4000c2a0: 909060 neg a9, a9 4000c2a3: 0ba2 addi.n a10, a2, -1 4000c2a5: 902a93 movnez a2, a10, a9 4000c2a8: 20a775 extui a10, a2, 23, 8 4000c2ab: 771a51 beq a10, a7, 0x4000c300 4000c2ae: c61b00 j 0x4000c321 4000c2b1: 371268 beq a2, a3, 0x4000c31d 4000c2b4: 703311 slli a3, a3, 9 4000c2b7: 303941 srli a3, a3, 9 4000c2ba: 6702ce bnone a2, a6, 0x4000c28c 4000c2bd: 1b88 addi.n a8, a8, 1 4000c2bf: 46f2ff j 0x4000c28c 4000c2c2: 0000 4000c2c4: 807611 slli a7, a6, 8 4000c2c7: 702330 xor a2, a3, a7 4000c2ca: 0df0 ret.n 4000c2cc: 67023c bnone a2, a6, 0x4000c30c 4000c2cf: 602220 or a2, a2, a6 4000c2d2: 802211 slli a2, a2, 8 4000c2d5: 202841 srli a2, a2, 8 4000c2d8: 70a8c0 sub a10, a8, a7 4000c2db: f6cae5 bgeui a10, 32, 0x4000c2c4 4000c2de: 000a40 ssr a10 4000c2e1: 0c09 movi.n a9, 0 4000c2e3: 909281 src a9, a2, a9 4000c2e6: 202091 srl a2, a2 4000c2e9: 80b611 slli a11, a6, 8 4000c2ec: b03330 xor a3, a3, a11 4000c2ef: 2023c0 sub a2, a3, a2 4000c2f2: 909060 neg a9, a9 4000c2f5: 0ba2 addi.n a10, a2, -1 4000c2f7: 902a93 movnez a2, a10, a9 4000c2fa: 20a775 extui a10, a2, 23, 8 4000c2fd: 879a20 bne a10, a8, 0x4000c321 4000c300: d66900 bgez a9, 0x4000c30a 4000c303: 1b22 addi.n a2, a2, 1 4000c305: f09911 slli a9, a9, 1 4000c308: bcc9 beqz.n a9, 0x4000c348 4000c30a: 0df0 ret.n 4000c30c: 37120d beq a2, a3, 0x4000c31d 4000c30f: 702211 slli a2, a2, 9 4000c312: 202941 srli a2, a2, 9 4000c315: 6703bf bnone a3, a6, 0x4000c2d8 4000c318: 1b77 addi.n a7, a7, 1 4000c31a: 86eeff j 0x4000c2d8 4000c31d: 0c02 movi.n a2, 0 4000c31f: 0df0 ret.n 4000c321: 708211 slli a8, a2, 9 4000c324: ac88 beqz.n a8, 0x4000c350 4000c326: 60f840 nsau a6, a8 4000c329: 808941 srli a8, a8, 9 4000c32c: a7a62e bge a6, a10, 0x4000c35e 4000c32f: 1b66 addi.n a6, a6, 1 4000c331: 001640 ssl a6 4000c334: 908881 src a8, a8, a9 4000c337: 0099a1 sll a9, a9 4000c33a: 202785 extui a2, a2, 23, 9 4000c33d: 6022c0 sub a2, a2, a6 4000c340: 902201 slli a2, a2, 23 4000c343: 8a22 add.n a2, a2, a8 4000c345: c6edff j 0x4000c300 4000c348: 202141 srli a2, a2, 1 4000c34b: f02211 slli a2, a2, 1 4000c34e: 0df0 ret.n 4000c350: 1699fc beqz a9, 0x4000c31d 4000c353: b2cae8 addi a11, a10, -24 4000c356: 1c86 movi.n a6, 24 4000c358: b06aa3 movltz a6, a10, a11 4000c35b: 86f4ff j 0x4000c331 4000c35e: 6d0a mov.n a6, a10 4000c360: 46f3ff j 0x4000c331 4000c363: 00 4000c364: f02211 slli a2, a2, 1 4000c367: 202141 srli a2, a2, 1 4000c36a: ace2 beqz.n a2, 0x4000c39c ; ( 0831e821 ) *** Weird 4000c36c: a0f240 nsau a10, a2 4000c36f: a2caf8 addi a10, a10, -8 4000c372: 001a40 ssl a10 4000c375: 0022a1 sll a2, a2 4000c378: 0c18 movi.n a8, 1 4000c37a: a088c0 sub a8, a8, a10 4000c37d: c61e00 j 0x4000c3fc 4000c380: f03311 slli a3, a3, 1 4000c383: 303141 srli a3, a3, 1 4000c386: 9c23 beqz.n a3, 0x4000c39c 4000c388: a0f340 nsau a10, a3 4000c38b: a2caf8 addi a10, a10, -8 4000c38e: 001a40 ssl a10 4000c391: 0033a1 sll a3, a3 4000c394: 0c19 movi.n a9, 1 4000c396: a099c0 sub a9, a9, a10 4000c399: 861800 j 0x4000c3ff 4000c39c: 702f05 extui a2, a7, 31, 1 4000c39f: 102201 slli a2, a2, 31 4000c3a2: 063400 j 0x4000c476 4000c3a5: f08311 slli a8, a3, 1 4000c3a8: cc88 bnez.n a8, 0x4000c3b4 4000c3aa: 411ad0 l32r a4, [0x00400000] ; 0x40000414 4000c3ad: 402220 or a2, a2, a4 4000c3b0: 863000 j 0x4000c476 4000c3b3: 00 4000c3b4: 67c306 bnall a3, a6, 0x4000c3be 4000c3b7: 708311 slli a8, a3, 9 4000c3ba: 8c08 beqz.n a8, 0x4000c3be 4000c3bc: 2d03 mov.n a2, a3 4000c3be: 707f05 extui a7, a7, 31, 1 4000c3c1: f02211 slli a2, a2, 1 4000c3c4: 004140 ssai 1 4000c3c7: 202781 src a2, a7, a2 4000c3ca: 062a00 j 0x4000c476 4000c3cd: f08211 slli a8, a2, 1 4000c3d0: 5688fe bnez a8, 0x4000c3bc 4000c3d3: 7110d0 l32r a7, [0x00400000] ; 0x40000414 4000c3d6: 702320 or a2, a3, a7 4000c3d9: 462600 j 0x4000c476 __mulsf3: 4000c3dc: 12c1e0 addi a1, a1, -32 4000c3df: c941 s32i.n a12, a1, 16 4000c3e1: d951 s32i.n a13, a1, 20 4000c3e3: e961 s32i.n a14, a1, 24 4000c3e5: f971 s32i.n a15, a1, 28 4000c3e7: 610ad0 l32r a6, [0x7f800000] ; 0x40000410 4000c3ea: 307230 xor a7, a2, a3 4000c3ed: 6742b4 ball a2, a6, 0x4000c3a5 4000c3f0: 6743d9 ball a3, a6, 0x4000c3cd 4000c3f3: 208775 extui a8, a2, 23, 8 4000c3f6: 309775 extui a9, a3, 23, 8 4000c3f9: 1678f6 beqz a8, 0x4000c364 4000c3fc: 1609f8 beqz a9, 0x4000c380 4000c3ff: 9a88 add.n a8, a8, a9 4000c401: a105d0 l32r a10, [0x00ffffff] ; 0x40000418 4000c404: 602220 or a2, a2, a6 4000c407: a02210 and a2, a2, a10 4000c40a: 603320 or a3, a3, a6 4000c40d: a03310 and a3, a3, a10 4000c410: 2040f5 extui a4, a2, 16, 16 4000c413: 3050f5 extui a5, a3, 16, 16 4000c416: 5062c1 mul16u a6, a2, a5 4000c419: 30b4c1 mul16u a11, a4, a3 4000c41c: 0c09 movi.n a9, 0 4000c41e: ba66 add.n a6, a6, a11 4000c420: b7b601 bgeu a6, a11, 0x4000c425 4000c423: 1b99 addi.n a9, a9, 1 4000c425: 104040 ssai 16 4000c428: 609981 src a9, a9, a6 4000c42b: 30b2c1 mul16u a11, a2, a3 4000c42e: 0066a1 sll a6, a6 4000c431: ba66 add.n a6, a6, a11 4000c433: b7b601 bgeu a6, a11, 0x4000c438 4000c436: 1b99 addi.n a9, a9, 1 4000c438: 5024c1 mul16u a2, a4, a5 4000c43b: 9a22 add.n a2, a2, a9 4000c43d: 0c94 movi.n a4, 9 4000c43f: 205f41 srli a5, a2, 15 4000c442: 8c25 beqz.n a5, 0x4000c448 4000c444: 0b44 addi.n a4, a4, -1 4000c446: 1b88 addi.n a8, a8, 1 4000c448: 001440 ssl a4 4000c44b: 602281 src a2, a2, a6 4000c44e: 0066a1 sll a6, a6 4000c451: 42a080 movi a4, 128 4000c454: 4088c0 sub a8, a8, a4 4000c457: 42a0fe movi a4, 254 4000c45a: 47b82f bgeu a8, a4, 0x4000c48d 4000c45d: d67600 bgez a6, 0x4000c468 4000c460: 1b22 addi.n a2, a2, 1 4000c462: f06611 slli a6, a6, 1 4000c465: 16b601 beqz a6, 0x4000c484 4000c468: 908801 slli a8, a8, 23 4000c46b: 8a22 add.n a2, a2, a8 4000c46d: 707f05 extui a7, a7, 31, 1 4000c470: 107701 slli a7, a7, 31 4000c473: 702220 or a2, a2, a7 4000c476: c841 l32i.n a12, a1, 16 4000c478: d851 l32i.n a13, a1, 20 4000c47a: e861 l32i.n a14, a1, 24 4000c47c: f871 l32i.n a15, a1, 28 4000c47e: 12c120 addi a1, a1, 32 4000c481: 0df0 ret.n 4000c483: 00 4000c484: 202141 srli a2, a2, 1 4000c487: f02211 slli a2, a2, 1 4000c48a: 86f6ff j 0x4000c468 ; ( 80a3d888 ) 4000c48d: 968800 bltz a8, 0x4000c499 4000c490: 82a0ff movi a8, 255 4000c493: 902801 slli a2, a8, 23 4000c496: c6f4ff j 0x4000c46d 4000c499: 808060 neg a8, a8 4000c49c: 9d06 mov.n a9, a6 4000c49e: 000840 ssr a8 4000c4a1: f6c813 bgeui a8, 32, 0x4000c4b8 4000c4a4: 0062a1 sll a6, a2 4000c4a7: 202091 srl a2, a2 4000c4aa: 0c08 movi.n a8, 0 4000c4ac: 16d9fa beqz a9, 0x4000c45d 4000c4af: 0c19 movi.n a9, 1 4000c4b1: 906620 or a6, a6, a9 4000c4b4: 46e9ff j 0x4000c45d 4000c4b7: 00 4000c4b8: 702f05 extui a2, a7, 31, 1 4000c4bb: 102201 slli a2, a2, 31 4000c4be: 06edff j 0x4000c476 ; ( 00f00d10 ) 4000c4c1: 000000 __fixunssfsi: 4000c4c4: 61d3cf l32r a6, [0x7f800000] ; 0x40000410 4000c4c7: 674225 ball a2, a6, 0x4000c4f0 4000c4ca: 204775 extui a4, a2, 23, 8 4000c4cd: 42c481 addi a4, a4, -127 4000c4d0: e6c425 bgei a4, 32, 0x4000c4f9 4000c4d3: 96e402 bltz a4, 0x4000c505 4000c4d6: 607220 or a7, a2, a6 4000c4d9: 805711 slli a5, a7, 8 4000c4dc: 1b44 addi.n a4, a4, 1 4000c4de: 26c427 beqi a4, 32, 0x4000c509 4000c4e1: 001440 ssl a4 4000c4e4: 505091 srl a5, a5 4000c4e7: 502060 neg a2, a5 4000c4ea: 7025b3 movgez a2, a5, a7 4000c4ed: 0df0 ret.n 4000c4ef: 00 4000c4f0: 704211 slli a4, a2, 9 4000c4f3: 8c24 beqz.n a4, 0x4000c4f9 4000c4f5: 7cf2 movi.n a2, -1 4000c4f7: 0df0 ret.n 4000c4f9: 804611 slli a4, a6, 8 4000c4fc: 7cf5 movi.n a5, -1 4000c4fe: 2045b3 movgez a4, a5, a2 4000c501: 2d04 mov.n a2, a4 4000c503: 0df0 ret.n 4000c505: 0c02 movi.n a2, 0 4000c507: 0df0 ret.n 4000c509: 963200 bltz a2, 0x4000c510 4000c50c: 2d05 mov.n a2, a5 4000c50e: 0df0 ret.n 4000c510: 802611 slli a2, a6, 8 4000c513: 0df0 ret.n 4000c515: 000000 4000c518: 67c508 bnall a5, a6, 0x4000c524 4000c51b: 407311 slli a7, a3, 12 4000c51e: 207720 or a7, a7, a2 4000c521: 161700 beqz a7, 0x4000c526 4000c524: 0df0 ret.n 4000c526: 3d05 mov.n a3, a5 4000c528: 2d04 mov.n a2, a4 4000c52a: 0df0 ret.n 4000c52c: 507611 slli a7, a6, 11 4000c52f: 705530 xor a5, a5, a7 4000c532: c65600 j 0x4000c691 4000c535: 000000 __adddf3: 4000c538: 61b9cf l32r a6, [0x7ff00000] ; 0x4000041c 4000c53b: 507330 xor a7, a3, a5 4000c53e: 96a7fe bltz a7, 0x4000c52c 4000c541: 6743d3 ball a3, a6, 0x4000c518 4000c544: 6745de ball a5, a6, 0x4000c526 4000c547: 3074b5 extui a7, a3, 20, 12 4000c54a: 5084b5 extui a8, a5, 20, 12 4000c54d: 873777 bltu a7, a8, 0x4000c5c8 4000c550: 670530 bnone a5, a6, 0x4000c584 4000c553: 605520 or a5, a5, a6 4000c556: 505511 slli a5, a5, 11 4000c559: 505b41 srli a5, a5, 11 4000c55c: 80a7c0 sub a10, a7, a8 4000c55f: f6ca3d bgeui a10, 32, 0x4000c5a0 4000c562: 000a40 ssr a10 4000c565: 0c09 movi.n a9, 0 4000c567: 909481 src a9, a4, a9 4000c56a: 404581 src a4, a5, a4 4000c56d: 505091 srl a5, a5 4000c570: 4a22 add.n a2, a2, a4 4000c572: 5a33 add.n a3, a3, a5 4000c574: 47b201 bgeu a2, a4, 0x4000c579 4000c577: 1b33 addi.n a3, a3, 1 4000c579: 30a4b5 extui a10, a3, 20, 12 4000c57c: 771a76 beq a10, a7, 0x4000c5f6 4000c57f: 8d07 mov.n a8, a7 4000c581: c62800 j 0x4000c628 4000c584: 405511 slli a5, a5, 12 4000c587: 505c41 srli a5, a5, 12 4000c58a: 670304 bnone a3, a6, 0x4000c592 4000c58d: 1b88 addi.n a8, a8, 1 4000c58f: 46f2ff j 0x4000c55c 4000c592: 4a22 add.n a2, a2, a4 4000c594: 5a33 add.n a3, a3, a5 4000c596: 47b202 bgeu a2, a4, 0x4000c59c 4000c599: 32c301 addi a3, a3, 1 4000c59c: 0df0 ret.n 4000c59e: 0000 4000c5a0: f6daf8 bgeui a10, 64, 0x4000c59c 4000c5a3: 000a40 ssr a10 4000c5a6: 00b4a1 sll a11, a4 4000c5a9: 409581 src a9, a5, a4 4000c5ac: 504091 srl a4, a5 4000c5af: 0c05 movi.n a5, 0 4000c5b1: 16bbfb beqz a11, 0x4000c570 4000c5b4: a09920 or a9, a9, a10 4000c5b7: 46edff j 0x4000c570 4000c5ba: 0000 4000c5bc: 403311 slli a3, a3, 12 4000c5bf: 303c41 srli a3, a3, 12 4000c5c2: 1b77 addi.n a7, a7, 1 4000c5c4: 060300 j 0x4000c5d4 4000c5c7: 00 4000c5c8: 6703f0 bnone a3, a6, 0x4000c5bc 4000c5cb: 603320 or a3, a3, a6 4000c5ce: 503311 slli a3, a3, 11 4000c5d1: 303b41 srli a3, a3, 11 4000c5d4: 70a8c0 sub a10, a8, a7 4000c5d7: f6ca2d bgeui a10, 32, 0x4000c608 4000c5da: 000a40 ssr a10 4000c5dd: 0092a1 sll a9, a2 4000c5e0: 202381 src a2, a3, a2 4000c5e3: 303091 srl a3, a3 4000c5e6: 4a22 add.n a2, a2, a4 4000c5e8: 503380 add a3, a3, a5 4000c5eb: 47b201 bgeu a2, a4, 0x4000c5f0 4000c5ee: 1b33 addi.n a3, a3, 1 4000c5f0: 30a4b5 extui a10, a3, 20, 12 4000c5f3: 879a31 bne a10, a8, 0x4000c628 4000c5f6: d6a900 bgez a9, 0x4000c604 4000c5f9: 1b22 addi.n a2, a2, 1 4000c5fb: 161206 beqz a2, 0x4000c660 4000c5fe: f09911 slli a9, a9, 1 4000c601: 163905 beqz a9, 0x4000c658 4000c604: 0df0 ret.n 4000c606: 0000 4000c608: f6da16 bgeui a10, 64, 0x4000c622 4000c60b: 000a40 ssr a10 4000c60e: 00b2a1 sll a11, a2 4000c611: 209381 src a9, a3, a2 4000c614: 302091 srl a2, a3 4000c617: 0c03 movi.n a3, 0 4000c619: 169bfc beqz a11, 0x4000c5e6 4000c61c: a09920 or a9, a9, a10 4000c61f: c6f0ff j 0x4000c5e6 4000c622: 3d05 mov.n a3, a5 4000c624: 2d04 mov.n a2, a4 4000c626: 0df0 ret.n 4000c628: ad02 mov.n a10, a2 4000c62a: 004140 ssai 1 4000c62d: 202381 src a2, a3, a2 4000c630: 303091 srl a3, a3 4000c633: 1b88 addi.n a8, a8, 1 4000c635: d08801 slli a8, a8, 19 4000c638: 8a33 add.n a3, a3, a8 4000c63a: 67430a ball a3, a6, 0x4000c648 4000c63d: 076a05 bbci a10, 0, 0x4000c646 4000c640: 1b22 addi.n a2, a2, 1 4000c642: 9ca2 beqz.n a2, 0x4000c660 4000c644: 9c09 beqz.n a9, 0x4000c658 4000c646: 0df0 ret.n 4000c648: 0c02 movi.n a2, 0 4000c64a: 3034b5 extui a3, a3, 20, 12 4000c64d: c03301 slli a3, a3, 20 4000c650: f08811 slli a8, a8, 1 4000c653: 803320 or a3, a3, a8 4000c656: 0df0 ret.n 4000c658: 202141 srli a2, a2, 1 4000c65b: f02211 slli a2, a2, 1 4000c65e: 0df0 ret.n 4000c660: 1b33 addi.n a3, a3, 1 4000c662: 0df0 ret.n 4000c664: 67c505 bnall a5, a6, 0x4000c66d 4000c667: 416ecf l32r a4, [0x00080000] ; 0x40000420 4000c66a: 403320 or a3, a3, a4 4000c66d: 0df0 ret.n 4000c66f: 00 4000c670: 507611 slli a7, a6, 11 4000c673: 703530 xor a3, a5, a7 4000c676: 2d04 mov.n a2, a4 4000c678: 0df0 ret.n 4000c67a: 0000 4000c67c: 507611 slli a7, a6, 11 4000c67f: 705530 xor a5, a5, a7 4000c682: c6aeff j 0x4000c541 4000c685: 000000 __subdf3: 4000c688: 6165cf l32r a6, [0x7ff00000] ; 0x4000041c 4000c68b: 507330 xor a7, a3, a5 4000c68e: 96a7fe bltz a7, 0x4000c67c 4000c691: 6743cf ball a3, a6, 0x4000c664 4000c694: 6745d8 ball a5, a6, 0x4000c670 4000c697: 3074a5 extui a7, a3, 20, 11 4000c69a: 5084a5 extui a8, a5, 20, 11 4000c69d: 57337f bltu a3, a5, 0x4000c720 4000c6a0: 571344 beq a3, a5, 0x4000c6e8 4000c6a3: 67054d bnone a5, a6, 0x4000c6f4 4000c6a6: 605520 or a5, a5, a6 4000c6a9: 505511 slli a5, a5, 11 4000c6ac: 505b41 srli a5, a5, 11 4000c6af: 80a7c0 sub a10, a7, a8 4000c6b2: f6ca4e bgeui a10, 32, 0x4000c704 4000c6b5: 000a40 ssr a10 4000c6b8: 92a000 movi a9, 0 4000c6bb: 909481 src a9, a4, a9 4000c6be: 404581 src a4, a5, a4 4000c6c1: 505091 srl a5, a5 4000c6c4: 5033c0 sub a3, a3, a5 4000c6c7: 47b202 bgeu a2, a4, 0x4000c6cd 4000c6ca: 32c3ff addi a3, a3, -1 4000c6cd: 4022c0 sub a2, a2, a4 4000c6d0: 909060 neg a9, a9 4000c6d3: 8c59 beqz.n a9, 0x4000c6dc 4000c6d5: 0b53 addi.n a5, a3, -1 4000c6d7: 203583 moveqz a3, a5, a2 4000c6da: 0b22 addi.n a2, a2, -1 4000c6dc: 30a4a5 extui a10, a3, 20, 11 4000c6df: 779a02 bne a10, a7, 0x4000c6e5 4000c6e2: 461f00 j 0x4000c763 4000c6e5: c63000 j 0x4000c7ac 4000c6e8: 473234 bltu a2, a4, 0x4000c720 4000c6eb: 2734b4 bltu a4, a2, 0x4000c6a3 4000c6ee: 0c03 movi.n a3, 0 4000c6f0: 0c02 movi.n a2, 0 4000c6f2: 0df0 ret.n 4000c6f4: 405511 slli a5, a5, 12 4000c6f7: 505c41 srli a5, a5, 12 4000c6fa: 6703b1 bnone a3, a6, 0x4000c6af 4000c6fd: 1b88 addi.n a8, a8, 1 4000c6ff: 06ebff j 0x4000c6af 4000c702: 0000 4000c704: f6daea bgeui a10, 64, 0x4000c6f2 4000c707: 000a40 ssr a10 4000c70a: 00b4a1 sll a11, a4 4000c70d: 409581 src a9, a5, a4 4000c710: 504091 srl a4, a5 4000c713: 0c05 movi.n a5, 0 4000c715: 16bbfa beqz a11, 0x4000c6c4 4000c718: a09920 or a9, a9, a10 4000c71b: 46e9ff j 0x4000c6c4 4000c71e: 0000 4000c720: 670350 bnone a3, a6, 0x4000c774 4000c723: 603320 or a3, a3, a6 4000c726: 503311 slli a3, a3, 11 4000c729: 303b41 srli a3, a3, 11 4000c72c: 70a8c0 sub a10, a8, a7 4000c72f: f6ca51 bgeui a10, 32, 0x4000c784 4000c732: 000a40 ssr a10 4000c735: 0c09 movi.n a9, 0 4000c737: 909281 src a9, a2, a9 4000c73a: 202381 src a2, a3, a2 4000c73d: 303091 srl a3, a3 4000c740: 50b611 slli a11, a6, 11 4000c743: b05530 xor a5, a5, a11 4000c746: 2024c0 sub a2, a4, a2 4000c749: 3035c0 sub a3, a5, a3 4000c74c: 27b401 bgeu a4, a2, 0x4000c751 4000c74f: 0b33 addi.n a3, a3, -1 4000c751: 909060 neg a9, a9 4000c754: 8c59 beqz.n a9, 0x4000c75d 4000c756: 0b53 addi.n a5, a3, -1 4000c758: 203583 moveqz a3, a5, a2 4000c75b: 0b22 addi.n a2, a2, -1 4000c75d: 30a4a5 extui a10, a3, 20, 11 4000c760: 879a48 bne a10, a8, 0x4000c7ac 4000c763: d6a900 bgez a9, 0x4000c771 4000c766: 1b22 addi.n a2, a2, 1 4000c768: 164207 beqz a2, 0x4000c7e0 4000c76b: f09911 slli a9, a9, 1 4000c76e: 166906 beqz a9, 0x4000c7d8 4000c771: 0df0 ret.n 4000c773: 00 4000c774: 403311 slli a3, a3, 12 4000c777: 303c41 srli a3, a3, 12 4000c77a: 6705ae bnone a5, a6, 0x4000c72c 4000c77d: 1b77 addi.n a7, a7, 1 4000c77f: 46eaff j 0x4000c72c 4000c782: 0000 4000c784: f6da18 bgeui a10, 64, 0x4000c7a0 4000c787: 000a40 ssr a10 4000c78a: 00b2a1 sll a11, a2 4000c78d: 209381 src a9, a3, a2 4000c790: 302091 srl a2, a3 4000c793: 503611 slli a3, a6, 11 4000c796: 16cbfa beqz a11, 0x4000c746 4000c799: a09920 or a9, a9, a10 4000c79c: 86e9ff j 0x4000c746 4000c79f: 00 4000c7a0: 507611 slli a7, a6, 11 4000c7a3: 703530 xor a3, a5, a7 4000c7a6: 2d04 mov.n a2, a4 4000c7a8: 0df0 ret.n 4000c7aa: 0000 4000c7ac: 408311 slli a8, a3, 12 4000c7af: bc18 beqz.n a8, 0x4000c7e4 4000c7b1: 60f840 nsau a6, a8 4000c7b4: 808c41 srli a8, a8, 12 4000c7b7: a7a64e bge a6, a10, 0x4000c809 4000c7ba: 1b66 addi.n a6, a6, 1 4000c7bc: 001640 ssl a6 4000c7bf: 208881 src a8, a8, a2 4000c7c2: 902281 src a2, a2, a9 4000c7c5: 0099a1 sll a9, a9 4000c7c8: 3034b5 extui a3, a3, 20, 12 4000c7cb: 6033c0 sub a3, a3, a6 4000c7ce: c03301 slli a3, a3, 20 4000c7d1: 8a33 add.n a3, a3, a8 4000c7d3: 06e3ff j 0x4000c763 4000c7d6: 0000 4000c7d8: 202141 srli a2, a2, 1 4000c7db: f02211 slli a2, a2, 1 ; ( c0f03d14 ) 4000c7de: 0df0 ret.n 4000c7e0: 1b33 addi.n a3, a3, 1 4000c7e2: 0df0 ret.n 4000c7e4: 60f240 nsau a6, a2 4000c7e7: 62c615 addi a6, a6, 21 4000c7ea: 672a1b blt a10, a6, 0x4000c809 4000c7ed: b6c6cb bltui a6, 32, 0x4000c7bc 4000c7f0: 001640 ssl a6 4000c7f3: 908281 src a8, a2, a9 4000c7f6: 0029a1 sll a2, a9 4000c7f9: 0c09 movi.n a9, 0 4000c7fb: 3034b5 extui a3, a3, 20, 12 4000c7fe: 6033c0 sub a3, a3, a6 4000c801: c03301 slli a3, a3, 20 4000c804: 8a33 add.n a3, a3, a8 4000c806: 46d6ff j 0x4000c763 4000c809: 6d0a mov.n a6, a10 4000c80b: 86f7ff j 0x4000c7ed 4000c80e: 0000 4000c810: f03311 slli a3, a3, 1 4000c813: 303141 srli a3, a3, 1 4000c816: 20a320 or a10, a3, a2 4000c819: 164a08 beqz a10, 0x4000c8a1 4000c81c: 9c53 beqz.n a3, 0x4000c835 4000c81e: a0f340 nsau a10, a3 4000c821: a2caf5 addi a10, a10, -11 4000c824: 001a40 ssl a10 4000c827: 203381 src a3, a3, a2 4000c82a: 0022a1 sll a2, a2 4000c82d: 0c18 movi.n a8, 1 4000c82f: a088c0 sub a8, a8, a10 4000c832: 863600 j 0x4000c910 4000c835: a0f240 nsau a10, a2 4000c838: a2caf5 addi a10, a10, -11 4000c83b: 6c18 movi.n a8, -31 4000c83d: a088c0 sub a8, a8, a10 4000c840: 001a40 ssl a10 4000c843: 969a00 bltz a10, 0x4000c850 4000c846: 0032a1 sll a3, a2 4000c849: 0c02 movi.n a2, 0 4000c84b: 463000 j 0x4000c910 4000c84e: 0000 4000c850: 203091 srl a3, a2 4000c853: 0022a1 sll a2, a2 4000c856: 862d00 j 0x4000c910 4000c859: f05511 slli a5, a5, 1 4000c85c: 505141 srli a5, a5, 1 4000c85f: 40a520 or a10, a5, a4 4000c862: bcba beqz.n a10, 0x4000c8a1 4000c864: 9c55 beqz.n a5, 0x4000c87d 4000c866: a0f540 nsau a10, a5 4000c869: a2caf5 addi a10, a10, -11 4000c86c: 001a40 ssl a10 4000c86f: 405581 src a5, a5, a4 4000c872: 0044a1 sll a4, a4 4000c875: 0c19 movi.n a9, 1 4000c877: a099c0 sub a9, a9, a10 4000c87a: 462500 j 0x4000c913 4000c87d: a0f440 nsau a10, a4 4000c880: a2caf5 addi a10, a10, -11 4000c883: 6c19 movi.n a9, -31 4000c885: a099c0 sub a9, a9, a10 4000c888: 001a40 ssl a10 4000c88b: 969a00 bltz a10, 0x4000c898 4000c88e: 0054a1 sll a5, a4 4000c891: 0c04 movi.n a4, 0 4000c893: 061f00 j 0x4000c913 4000c896: 0000 4000c898: 405091 srl a5, a4 4000c89b: 0044a1 sll a4, a4 4000c89e: 461c00 j 0x4000c913 4000c8a1: 703f05 extui a3, a7, 31, 1 4000c8a4: 103301 slli a3, a3, 31 4000c8a7: 0c02 movi.n a2, 0 4000c8a9: 466400 j 0x4000ca3e 4000c8ac: ccd4 bnez.n a4, 0x4000c8bd 4000c8ae: f08511 slli a8, a5, 1 4000c8b1: cc88 bnez.n a8, 0x4000c8bd 4000c8b3: 41dbce l32r a4, [0x00080000] ; 0x40000420 4000c8b6: 403320 or a3, a3, a4 4000c8b9: 466000 j 0x4000ca3e 4000c8bc: 00 4000c8bd: 67c50b bnall a5, a6, 0x4000c8cc 4000c8c0: 408511 slli a8, a5, 12 4000c8c3: 408820 or a8, a8, a4 4000c8c6: 8c28 beqz.n a8, 0x4000c8cc 4000c8c8: 3d05 mov.n a3, a5 4000c8ca: 2d04 mov.n a2, a4 4000c8cc: 707f05 extui a7, a7, 31, 1 4000c8cf: f03311 slli a3, a3, 1 4000c8d2: 004140 ssai 1 4000c8d5: 303781 src a3, a7, a3 4000c8d8: 865800 j 0x4000ca3e 4000c8db: 00 4000c8dc: 5682fe bnez a2, 0x4000c8c8 4000c8df: f08311 slli a8, a3, 1 4000c8e2: 5628fe bnez a8, 0x4000c8c8 4000c8e5: 71cece l32r a7, [0x00080000] ; 0x40000420 4000c8e8: 703520 or a3, a5, a7 4000c8eb: c65300 j 0x4000ca3e 4000c8ee: 0000 __muldf3: 4000c8f0: 12c1e0 addi a1, a1, -32 4000c8f3: c941 s32i.n a12, a1, 16 4000c8f5: d951 s32i.n a13, a1, 20 4000c8f7: e961 s32i.n a14, a1, 24 4000c8f9: f971 s32i.n a15, a1, 28 4000c8fb: 61c8ce l32r a6, [0x7ff00000] ; 0x4000041c 4000c8fe: 507330 xor a7, a3, a5 4000c901: 6743a7 ball a3, a6, 0x4000c8ac 4000c904: 6745d4 ball a5, a6, 0x4000c8dc 4000c907: 3084a5 extui a8, a3, 20, 11 4000c90a: 5094a5 extui a9, a5, 20, 11 4000c90d: 16f8ef beqz a8, 0x4000c810 4000c910: 1659f4 beqz a9, 0x4000c859 4000c913: 9a88 add.n a8, a8, a9 4000c915: a1c3ce l32r a10, [0x001fffff] ; 0x40000424 4000c918: 603320 or a3, a3, a6 4000c91b: a03310 and a3, a3, a10 4000c91e: 605520 or a5, a5, a6 4000c921: a05510 and a5, a5, a10 4000c924: 7911 s32i.n a7, a1, 4 4000c926: 20c0f5 extui a12, a2, 16, 16 4000c929: 40d0f5 extui a13, a4, 16, 16 4000c92c: 30e0f5 extui a14, a3, 16, 16 4000c92f: 50f0f5 extui a15, a5, 16, 16 4000c932: d0a2c1 mul16u a10, a2, a13 4000c935: 40bcc1 mul16u a11, a12, a4 4000c938: 0c09 movi.n a9, 0 4000c93a: baaa add.n a10, a10, a11 4000c93c: b7ba01 bgeu a10, a11, 0x4000c941 4000c93f: 1b99 addi.n a9, a9, 1 4000c941: 104040 ssai 16 4000c944: a06981 src a6, a9, a10 4000c947: 40b2c1 mul16u a11, a2, a4 4000c94a: 00aaa1 sll a10, a10 4000c94d: baaa add.n a10, a10, a11 4000c94f: b7ba02 bgeu a10, a11, 0x4000c955 4000c952: 62c601 addi a6, a6, 1 4000c955: 0c09 movi.n a9, 0 4000c957: 50b2c1 mul16u a11, a2, a5 4000c95a: ba66 add.n a6, a6, a11 4000c95c: b7b601 bgeu a6, a11, 0x4000c961 4000c95f: 1b99 addi.n a9, a9, 1 4000c961: d0bcc1 mul16u a11, a12, a13 4000c964: b06680 add a6, a6, a11 4000c967: b7b601 bgeu a6, a11, 0x4000c96c 4000c96a: 1b99 addi.n a9, a9, 1 4000c96c: 40b3c1 mul16u a11, a3, a4 4000c96f: ba66 add.n a6, a6, a11 4000c971: b7b601 bgeu a6, a11, 0x4000c976 4000c974: 1b99 addi.n a9, a9, 1 4000c976: 8c3a beqz.n a10, 0x4000c97d 4000c978: 0c1b movi.n a11, 1 4000c97a: b06620 or a6, a6, a11 4000c97d: f072c1 mul16u a7, a2, a15 4000c980: 40bec1 mul16u a11, a14, a4 4000c983: 0c0a movi.n a10, 0 4000c985: 7abb add.n a11, a11, a7 4000c987: 77bb02 bgeu a11, a7, 0x4000c98d 4000c98a: a2ca01 addi a10, a10, 1 4000c98d: 507cc1 mul16u a7, a12, a5 4000c990: 70bb80 add a11, a11, a7 4000c993: 77bb02 bgeu a11, a7, 0x4000c999 4000c996: a2ca01 addi a10, a10, 1 4000c999: d073c1 mul16u a7, a3, a13 4000c99c: 70bb80 add a11, a11, a7 4000c99f: 77bb02 bgeu a11, a7, 0x4000c9a5 4000c9a2: a2ca01 addi a10, a10, 1 4000c9a5: b0aa81 src a10, a10, a11 4000c9a8: 9aaa add.n a10, a10, a9 4000c9aa: 00bba1 sll a11, a11 4000c9ad: ba66 add.n a6, a6, a11 4000c9af: b7b602 bgeu a6, a11, 0x4000c9b5 4000c9b2: a2ca01 addi a10, a10, 1 4000c9b5: 0c09 movi.n a9, 0 4000c9b7: f02cc1 mul16u a2, a12, a15 4000c9ba: aa22 add.n a2, a2, a10 4000c9bc: a7b201 bgeu a2, a10, 0x4000c9c1 4000c9bf: 1b99 addi.n a9, a9, 1 4000c9c1: 50a3c1 mul16u a10, a3, a5 4000c9c4: a02280 add a2, a2, a10 4000c9c7: a7b202 bgeu a2, a10, 0x4000c9cd 4000c9ca: 92c901 addi a9, a9, 1 4000c9cd: d0aec1 mul16u a10, a14, a13 4000c9d0: aa22 add.n a2, a2, a10 4000c9d2: a7b202 bgeu a2, a10, 0x4000c9d8 4000c9d5: 92c901 addi a9, a9, 1 4000c9d8: f0b3c1 mul16u a11, a3, a15 4000c9db: 507ec1 mul16u a7, a14, a5 4000c9de: 0c0a movi.n a10, 0 4000c9e0: 70bb80 add a11, a11, a7 4000c9e3: 77bb02 bgeu a11, a7, 0x4000c9e9 4000c9e6: a2ca01 addi a10, a10, 1 4000c9e9: b0aa81 src a10, a10, a11 4000c9ec: 9aaa add.n a10, a10, a9 4000c9ee: 00bba1 sll a11, a11 4000c9f1: ba22 add.n a2, a2, a11 4000c9f3: b7b201 bgeu a2, a11, 0x4000c9f8 4000c9f6: 1baa addi.n a10, a10, 1 4000c9f8: f03ec1 mul16u a3, a14, a15 4000c9fb: aa33 add.n a3, a3, a10 4000c9fd: 7811 l32i.n a7, a1, 4 4000c9ff: 0cb4 movi.n a4, 11 4000ca01: 305941 srli a5, a3, 9 4000ca04: cc45 bnez.n a5, 0x4000ca0c 4000ca06: 42c401 addi a4, a4, 1 4000ca09: 82c8ff addi a8, a8, -1 4000ca0c: 001440 ssl a4 4000ca0f: 203381 src a3, a3, a2 4000ca12: 602281 src a2, a2, a6 4000ca15: 0066a1 sll a6, a6 4000ca18: 42a3ff movi a4, 0x3ff 4000ca1b: 4088c0 sub a8, a8, a4 4000ca1e: f04411 slli a4, a4, 1 4000ca21: 47b837 bgeu a8, a4, 0x4000ca5c 4000ca24: d68600 bgez a6, 0x4000ca30 4000ca27: 1b22 addi.n a2, a2, 1 4000ca29: ac82 beqz.n a2, 0x4000ca55 4000ca2b: f06611 slli a6, a6, 1 4000ca2e: 9ca6 beqz.n a6, 0x4000ca4c 4000ca30: c08801 slli a8, a8, 20 4000ca33: 8a33 add.n a3, a3, a8 4000ca35: 707f05 extui a7, a7, 31, 1 4000ca38: 107701 slli a7, a7, 31 4000ca3b: 703320 or a3, a3, a7 4000ca3e: c841 l32i.n a12, a1, 16 4000ca40: d851 l32i.n a13, a1, 20 4000ca42: e861 l32i.n a14, a1, 24 4000ca44: f871 l32i.n a15, a1, 28 4000ca46: 12c120 addi a1, a1, 32 4000ca49: 0df0 ret.n 4000ca4b: 00 4000ca4c: 202141 srli a2, a2, 1 4000ca4f: f02211 slli a2, a2, 1 4000ca52: 86f6ff j 0x4000ca30 ; ( 6b6a3064 ) 4000ca55: 1b33 addi.n a3, a3, 1 4000ca57: 46f5ff j 0x4000ca30 4000ca5a: 0000 4000ca5c: 969800 bltz a8, 0x4000ca69 4000ca5f: 1b84 addi.n a8, a4, 1 4000ca61: c03801 slli a3, a8, 20 4000ca64: 0c02 movi.n a2, 0 4000ca66: c6f2ff j 0x4000ca35 4000ca69: 808060 neg a8, a8 4000ca6c: 9d06 mov.n a9, a6 4000ca6e: 000840 ssr a8 4000ca71: f6c80b bgeui a8, 32, 0x4000ca80 4000ca74: 0062a1 sll a6, a2 4000ca77: 202381 src a2, a3, a2 4000ca7a: 303091 srl a3, a3 4000ca7d: 060400 j 0x4000ca91 4000ca80: f6d81c bgeui a8, 64, 0x4000caa0 4000ca83: 00a2a1 sll a10, a2 4000ca86: 206381 src a6, a3, a2 4000ca89: 302091 srl a2, a3 4000ca8c: 0c03 movi.n a3, 0 4000ca8e: a09920 or a9, a9, a10 4000ca91: 0c08 movi.n a8, 0 4000ca93: 16d9f8 beqz a9, 0x4000ca24 4000ca96: 0c19 movi.n a9, 1 4000ca98: 906620 or a6, a6, a9 4000ca9b: 46e1ff j 0x4000ca24 4000ca9e: 0000 4000caa0: 703f05 extui a3, a7, 31, 1 4000caa3: 103301 slli a3, a3, 31 4000caa6: 0c02 movi.n a2, 0 4000caa8: 86e4ff j 0x4000ca3e 4000caab: 00 4000caac: f05511 slli a5, a5, 1 4000caaf: 505141 srli a5, a5, 1 4000cab2: 40a520 or a10, a5, a4 4000cab5: bcba beqz.n a10, 0x4000caf4 4000cab7: 9c55 beqz.n a5, 0x4000cad0 4000cab9: a0f540 nsau a10, a5 4000cabc: a2caf5 addi a10, a10, -11 4000cabf: 001a40 ssl a10 4000cac2: 405581 src a5, a5, a4 4000cac5: 0044a1 sll a4, a4 4000cac8: 0c19 movi.n a9, 1 4000caca: a099c0 sub a9, a9, a10 4000cacd: 063600 j 0x4000cba9 4000cad0: a0f440 nsau a10, a4 4000cad3: a2caf5 addi a10, a10, -11 4000cad6: 6c19 movi.n a9, -31 4000cad8: a099c0 sub a9, a9, a10 4000cadb: 001a40 ssl a10 4000cade: 967a00 bltz a10, 0x4000cae9 4000cae1: 0054a1 sll a5, a4 4000cae4: 0c04 movi.n a4, 0 4000cae6: c62f00 j 0x4000cba9 4000cae9: 405091 srl a5, a4 4000caec: 0044a1 sll a4, a4 4000caef: 862d00 j 0x4000cba9 4000caf2: 0000 4000caf4: f03311 slli a3, a3, 1 4000caf7: 303141 srli a3, a3, 1 4000cafa: 302220 or a2, a2, a3 4000cafd: 703f05 extui a3, a7, 31, 1 4000cb00: 103301 slli a3, a3, 31 4000cb03: 603320 or a3, a3, a6 4000cb06: cc42 bnez.n a2, 0x4000cb0e 4000cb08: 4146ce l32r a4, [0x00080000] ; 0x40000420 4000cb0b: 403320 or a3, a3, a4 4000cb0e: 0c02 movi.n a2, 0 4000cb10: 0df0 ret.n 4000cb12: 0000 4000cb14: f03311 slli a3, a3, 1 4000cb17: 303141 srli a3, a3, 1 4000cb1a: 20a320 or a10, a3, a2 4000cb1d: bcba beqz.n a10, 0x4000cb5c 4000cb1f: 9c53 beqz.n a3, 0x4000cb38 4000cb21: a0f340 nsau a10, a3 4000cb24: a2caf5 addi a10, a10, -11 4000cb27: 001a40 ssl a10 4000cb2a: 203381 src a3, a3, a2 4000cb2d: 0022a1 sll a2, a2 4000cb30: 0c18 movi.n a8, 1 4000cb32: a088c0 sub a8, a8, a10 4000cb35: c61c00 j 0x4000cbac 4000cb38: a0f240 nsau a10, a2 4000cb3b: a2caf5 addi a10, a10, -11 4000cb3e: 6c18 movi.n a8, -31 4000cb40: a088c0 sub a8, a8, a10 4000cb43: 001a40 ssl a10 4000cb46: 967a00 bltz a10, 0x4000cb51 4000cb49: 0032a1 sll a3, a2 4000cb4c: 0c02 movi.n a2, 0 4000cb4e: 861600 j 0x4000cbac 4000cb51: 203091 srl a3, a2 4000cb54: 0022a1 sll a2, a2 4000cb57: 461400 j 0x4000cbac 4000cb5a: 0000 4000cb5c: 703f05 extui a3, a7, 31, 1 4000cb5f: 103301 slli a3, a3, 31 4000cb62: 0c02 movi.n a2, 0 4000cb64: 0df0 ret.n 4000cb66: 0000 4000cb68: 507f05 extui a7, a5, 31, 1 4000cb6b: 107701 slli a7, a7, 31 4000cb6e: 703330 xor a3, a3, a7 4000cb71: 67c505 bnall a5, a6, 0x4000cb7a 4000cb74: 412bce l32r a4, [0x00080000] ; 0x40000420 4000cb77: 403320 or a3, a3, a4 4000cb7a: 0df0 ret.n 4000cb7c: 408511 slli a8, a5, 12 4000cb7f: 408820 or a8, a8, a4 4000cb82: 1668fd beqz a8, 0x4000cb5c 4000cb85: 3d05 mov.n a3, a5 4000cb87: 2d04 mov.n a2, a4 4000cb89: 0df0 ret.n 4000cb8b: 00 4000cb8c: 473237 bltu a2, a4, 0x4000cbc7 4000cb8f: 460f00 j 0x4000cbd0 4000cb92: 0000 __divdf3: 4000cb94: 6122ce l32r a6, [0x7ff00000] ; 0x4000041c 4000cb97: 507330 xor a7, a3, a5 4000cb9a: 6743ca ball a3, a6, 0x4000cb68 4000cb9d: 6745db ball a5, a6, 0x4000cb7c 4000cba0: 3084a5 extui a8, a3, 20, 11 4000cba3: 5094a5 extui a9, a5, 20, 11 4000cba6: 1629f0 beqz a9, 0x4000caac 4000cba9: 1678f6 beqz a8, 0x4000cb14 4000cbac: 9088c0 sub a8, a8, a9 4000cbaf: a11dce l32r a10, [0x001fffff] ; 0x40000424 4000cbb2: 603320 or a3, a3, a6 4000cbb5: a03310 and a3, a3, a10 4000cbb8: 605520 or a5, a5, a6 4000cbbb: a05510 and a5, a5, a10 4000cbbe: 104f40 ssai 31 4000cbc1: 37350b bltu a5, a3, 0x4000cbd0 4000cbc4: 3715c4 beq a5, a3, 0x4000cb8c 4000cbc7: 203381 src a3, a3, a2 4000cbca: 0022a1 sll a2, a2 4000cbcd: 82c8ff addi a8, a8, -1 4000cbd0: 5033c0 sub a3, a3, a5 4000cbd3: 47b202 bgeu a2, a4, 0x4000cbd9 4000cbd6: 32c3ff addi a3, a3, -1 4000cbd9: 4022c0 sub a2, a2, a4 4000cbdc: 203381 src a3, a3, a2 4000cbdf: 0022a1 sll a2, a2 4000cbe2: 0c0a movi.n a10, 0 4000cbe4: 0c1b movi.n a11, 1 4000cbe6: 3c49 movi.n a9, 52 4000cbe8: b0aa81 src a10, a10, a11 4000cbeb: 00bba1 sll a11, a11 4000cbee: 57330f bltu a3, a5, 0x4000cc01 4000cbf1: 57133f beq a3, a5, 0x4000cc34 4000cbf4: 1bbb addi.n a11, a11, 1 4000cbf6: 5033c0 sub a3, a3, a5 4000cbf9: 47b201 bgeu a2, a4, 0x4000cbfe 4000cbfc: 0b33 addi.n a3, a3, -1 4000cbfe: 4022c0 sub a2, a2, a4 4000cc01: 203381 src a3, a3, a2 4000cc04: 0022a1 sll a2, a2 4000cc07: 0b99 addi.n a9, a9, -1 4000cc09: 56b9fd bnez a9, 0x4000cbe8 4000cc0c: 92a3fe movi a9, 0x3fe 4000cc0f: 9a88 add.n a8, a8, a9 4000cc11: 92d904 addmi a9, a9, 0x400 4000cc14: 97b838 bgeu a8, a9, 0x4000cc50 4000cc17: 573307 bltu a3, a5, 0x4000cc22 4000cc1a: 57131e beq a3, a5, 0x4000cc3c 4000cc1d: 1bbb addi.n a11, a11, 1 4000cc1f: 165b08 beqz a11, 0x4000cca8 4000cc22: 2d0b mov.n a2, a11 4000cc24: c08801 slli a8, a8, 20 4000cc27: 8a3a add.n a3, a10, a8 4000cc29: 707f05 extui a7, a7, 31, 1 4000cc2c: 107701 slli a7, a7, 31 4000cc2f: 703320 or a3, a3, a7 4000cc32: 0df0 ret.n 4000cc34: 47b2bc bgeu a2, a4, 0x4000cbf4 4000cc37: 86f1ff j 0x4000cc01 4000cc3a: 0000 4000cc3c: 4732e2 bltu a2, a4, 0x4000cc22 4000cc3f: 4792da bne a2, a4, 0x4000cc1d 4000cc42: 1bbb addi.n a11, a11, 1 4000cc44: 160b06 beqz a11, 0x4000cca8 4000cc47: b0b141 srli a11, a11, 1 4000cc4a: f0bb11 slli a11, a11, 1 4000cc4d: 46f4ff j 0x4000cc22 4000cc50: 969800 bltz a8, 0x4000cc5d 4000cc53: 1b89 addi.n a8, a9, 1 4000cc55: c03801 slli a3, a8, 20 4000cc58: 0c02 movi.n a2, 0 4000cc5a: c6f2ff j 0x4000cc29 4000cc5d: 808060 neg a8, a8 4000cc60: 000840 ssr a8 4000cc63: f6c80d bgeui a8, 32, 0x4000cc74 4000cc66: 006ba1 sll a6, a11 4000cc69: b0ba81 src a11, a10, a11 4000cc6c: a0a091 srl a10, a10 4000cc6f: 860400 j 0x4000cc85 4000cc72: 0000 4000cc74: f6d835 bgeui a8, 64, 0x4000ccad 4000cc77: 009ba1 sll a9, a11 4000cc7a: b06a81 src a6, a10, a11 4000cc7d: a0b091 srl a11, a10 4000cc80: 0c0a movi.n a10, 0 4000cc82: 902220 or a2, a2, a9 4000cc85: 0c08 movi.n a8, 0 4000cc87: 203320 or a3, a3, a2 4000cc8a: 8c33 beqz.n a3, 0x4000cc91 4000cc8c: 0c19 movi.n a9, 1 4000cc8e: 906620 or a6, a6, a9 4000cc91: d6d6f8 bgez a6, 0x4000cc22 4000cc94: 1bbb addi.n a11, a11, 1 4000cc96: 8ceb beqz.n a11, 0x4000cca8 4000cc98: f06611 slli a6, a6, 1 4000cc9b: 5636f8 bnez a6, 0x4000cc22 4000cc9e: b0b141 srli a11, a11, 1 4000cca1: f0bb11 slli a11, a11, 1 4000cca4: 86deff j 0x4000cc22 4000cca7: 00 4000cca8: 1baa addi.n a10, a10, 1 4000ccaa: 06ddff j 0x4000cc22 4000ccad: 703f05 extui a3, a7, 31, 1 4000ccb0: 103301 slli a3, a3, 31 4000ccb3: 0c02 movi.n a2, 0 4000ccb5: 0df0 ret.n 4000ccb7: 00 __fixdfsi: 4000ccb8: 61d9cd l32r a6, [0x7ff00000] ; 0x4000041c 4000ccbb: 674325 ball a3, a6, 0x4000cce4 4000ccbe: 3044a5 extui a4, a3, 20, 11 4000ccc1: 605395 extui a5, a6, 19, 10 4000ccc4: 5044c0 sub a4, a4, a5 4000ccc7: e6c425 bgei a4, 32, 0x4000ccf0 4000ccca: a6142e blti a4, 1, 0x4000ccfc 4000cccd: 607320 or a7, a3, a6 4000ccd0: 104540 ssai 21 4000ccd3: 205781 src a5, a7, a2 4000ccd6: 001440 ssl a4 4000ccd9: 505091 srl a5, a5 4000ccdc: 502060 neg a2, a5 4000ccdf: 7025b3 movgez a2, a5, a7 4000cce2: 0df0 ret.n 4000cce4: 404311 slli a4, a3, 12 4000cce7: 204420 or a4, a4, a2 4000ccea: 162400 beqz a4, 0x4000ccf0 4000cced: 32a000 movi a3, 0 4000ccf0: 504611 slli a4, a6, 11 4000ccf3: 0b54 addi.n a5, a4, -1 4000ccf5: 3045b3 movgez a4, a5, a3 4000ccf8: 2d04 mov.n a2, a4 4000ccfa: 0df0 ret.n 4000ccfc: 0c02 movi.n a2, 0 4000ccfe: 0df0 ret.n __fixunsdfsi: 4000cd00: 61c7cd l32r a6, [0x7ff00000] ; 0x4000041c 4000cd03: 67432a ball a3, a6, 0x4000cd31 4000cd06: 3044a5 extui a4, a3, 20, 11 4000cd09: 605495 extui a5, a6, 20, 10 4000cd0c: 5044c0 sub a4, a4, a5 4000cd0f: e6c42a bgei a4, 32, 0x4000cd3d 4000cd12: 963403 bltz a4, 0x4000cd49 4000cd15: 607320 or a7, a3, a6 4000cd18: 104540 ssai 21 4000cd1b: 205781 src a5, a7, a2 4000cd1e: 1b44 addi.n a4, a4, 1 4000cd20: 26c429 beqi a4, 32, 0x4000cd4d 4000cd23: 001440 ssl a4 4000cd26: 505091 srl a5, a5 4000cd29: 502060 neg a2, a5 4000cd2c: 7025b3 movgez a2, a5, a7 4000cd2f: 0df0 ret.n 4000cd31: 404311 slli a4, a3, 12 4000cd34: 204420 or a4, a4, a2 4000cd37: 8c24 beqz.n a4, 0x4000cd3d 4000cd39: 7cf2 movi.n a2, -1 4000cd3b: 0df0 ret.n 4000cd3d: 504611 slli a4, a6, 11 4000cd40: 7cf5 movi.n a5, -1 4000cd42: 3045b3 movgez a4, a5, a3 4000cd45: 2d04 mov.n a2, a4 4000cd47: 0df0 ret.n 4000cd49: 0c02 movi.n a2, 0 4000cd4b: 0df0 ret.n 4000cd4d: 963300 bltz a3, 0x4000cd54 4000cd50: 2d05 mov.n a2, a5 4000cd52: 0df0 ret.n 4000cd54: 502611 slli a2, a6, 11 4000cd57: 0df0 ret.n 4000cd59: 000000 __truncdfsf2: 4000cd5c: 41b3cd l32r a4, [0x38000000] ; 0x40000428 4000cd5f: 4053c0 sub a5, a3, a4 4000cd62: 506330 xor a6, a3, a5 4000cd65: 963605 bltz a6, 0x4000cdbc 4000cd68: 5064a5 extui a6, a5, 20, 11 4000cd6b: 16d604 beqz a6, 0x4000cdbc 4000cd6e: 42a0ff movi a4, 255 4000cd71: 47a627 bge a6, a4, 0x4000cd9c 4000cd74: 104d40 ssai 29 4000cd77: 205581 src a5, a5, a2 4000cd7a: 0042a1 sll a4, a2 4000cd7d: 306f05 extui a6, a3, 31, 1 4000cd80: 106601 slli a6, a6, 31 4000cd83: 502620 or a2, a6, a5 4000cd86: d66400 bgez a4, 0x4000cd90 4000cd89: 1b22 addi.n a2, a2, 1 4000cd8b: f04411 slli a4, a4, 1 4000cd8e: 8c24 beqz.n a4, 0x4000cd94 4000cd90: 0df0 ret.n 4000cd92: 0000 4000cd94: 202141 srli a2, a2, 1 4000cd97: f02211 slli a2, a2, 1 ; ( 0000f00d ) 4000cd9a: 0df0 ret.n 4000cd9c: 41a0cd l32r a4, [0x7ff00000] ; 0x4000041c 4000cd9f: 47c30a bnall a3, a4, 0x4000cdad 4000cda2: 405311 slli a5, a3, 12 4000cda5: 205520 or a5, a5, a2 4000cda8: 8c15 beqz.n a5, 0x4000cdad 4000cdaa: 404141 srli a4, a4, 1 4000cdad: c04411 slli a4, a4, 4 4000cdb0: 306f05 extui a6, a3, 31, 1 4000cdb3: 004140 ssai 1 4000cdb6: 402681 src a2, a6, a4 4000cdb9: 0df0 ret.n ; ( 4806b822 ) 4000cdbb: 00 4000cdbc: 3064a5 extui a6, a3, 20, 11 4000cdbf: 52a380 movi a5, 0x380 4000cdc2: 6065c0 sub a6, a5, a6 4000cdc5: 1b66 addi.n a6, a6, 1 4000cdc7: f6c629 bgeui a6, 32, 0x4000cdf4 4000cdca: 305511 slli a5, a5, 13 4000cdcd: 305520 or a5, a5, a3 4000cdd0: 505511 slli a5, a5, 11 4000cdd3: 505b41 srli a5, a5, 11 4000cdd6: 104d40 ssai 29 4000cdd9: 205581 src a5, a5, a2 4000cddc: 0042a1 sll a4, a2 4000cddf: 000640 ssr a6 4000cde2: 0074a1 sll a7, a4 4000cde5: 404581 src a4, a5, a4 4000cde8: 505091 srl a5, a5 4000cdeb: 16e7f8 beqz a7, 0x4000cd7d 4000cdee: 604420 or a4, a4, a6 4000cdf1: 06e2ff j 0x4000cd7d 4000cdf4: 302f05 extui a2, a3, 31, 1 4000cdf7: 102201 slli a2, a2, 31 4000cdfa: 0df0 ret.n __extendsfdf2: 4000cdfc: 205f05 extui a5, a2, 31, 1 4000cdff: 105501 slli a5, a5, 31 4000ce02: f04211 slli a4, a2, 1 4000ce05: 206775 extui a6, a2, 23, 8 4000ce08: acc6 beqz.n a6, 0x4000ce38 4000ce0a: 1b66 addi.n a6, a6, 1 4000ce0c: 26f610 beqi a6, 0x100, 0x4000ce20 4000ce0f: 404441 srli a4, a4, 4 4000ce12: 6185cd l32r a6, [0x38000000] ; 0x40000428 4000ce15: 302201 slli a2, a2, 29 4000ce18: 6a44 add.n a4, a4, a6 4000ce1a: 503420 or a3, a4, a5 4000ce1d: 0df0 ret.n 4000ce1f: 00 4000ce20: 417fcd l32r a4, [0x7ff00000] ; 0x4000041c 4000ce23: 707211 slli a7, a2, 9 4000ce26: 8c47 beqz.n a7, 0x4000ce2e 4000ce28: 506611 slli a6, a6, 11 4000ce2b: 604420 or a4, a4, a6 4000ce2e: 503420 or a3, a4, a5 4000ce31: 0c02 movi.n a2, 0 4000ce33: 0df0 ret.n 4000ce35: 000000 4000ce38: 1624ff beqz a4, 0x4000ce2e 4000ce3b: 70f440 nsau a7, a4 4000ce3e: 72c7f8 addi a7, a7, -8 4000ce41: 001740 ssl a7 4000ce44: 0044a1 sll a4, a4 4000ce47: 302401 slli a2, a4, 29 4000ce4a: 404341 srli a4, a4, 3 4000ce4d: 62a37f movi a6, 0x37f 4000ce50: 7066c0 sub a6, a6, a7 4000ce53: c06601 slli a6, a6, 20 4000ce56: 6a44 add.n a4, a4, a6 4000ce58: 503420 or a3, a4, a5 4000ce5b: 0df0 ret.n 4000ce5d: 000000 ; gcc long division ; long = long / long __divdi3: 4000ce60: 8d04 mov.n a8, a4 4000ce62: 7d05 mov.n a7, a5 4000ce64: 62a0f0 movi a6, 240 4000ce67: 6011c0 sub a1, a1, a6 4000ce6a: 3911 s32i.n a3, a1, 4 4000ce6c: 2901 s32i.n a2, a1, 0 4000ce6e: 5931 s32i.n a5, a1, 12 4000ce70: 4921 s32i.n a4, a1, 8 4000ce72: d2612b s32i a13, a1, 172 4000ce75: 026129 s32i a0, a1, 164 4000ce78: c2612a s32i a12, a1, 168 4000ce7b: 0d02 mov.n a0, a2 4000ce7d: cd03 mov.n a12, a3 4000ce7f: 965319 bltz a3, 0x4000d018 4000ce82: 0c0d movi.n a13, 0 4000ce84: c951 s32i.n a12, a1, 20 4000ce86: 9d00 mov.n a9, a0 4000ce88: 2831 l32i.n a2, a1, 12 4000ce8a: 9941 s32i.n a9, a1, 16 4000ce8c: d60201 bgez a2, 0x4000cea0 4000ce8f: 408060 neg a8, a4 4000ce92: 72afff movi a7, -1 4000ce95: 70dd30 xor a13, a13, a7 4000ce98: 707530 xor a7, a5, a7 4000ce9b: 1b37 addi.n a3, a7, 1 4000ce9d: 407383 moveqz a7, a3, a4 4000cea0: 7971 s32i.n a7, a1, 28 4000cea2: 8961 s32i.n a8, a1, 24 4000cea4: 5d00 mov.n a5, a0 4000cea6: 3d08 mov.n a3, a8 4000cea8: 0d08 mov.n a0, a8 4000ceaa: 16a717 beqz a7, 0x4000d028 4000cead: 77bc27 bgeu a12, a7, 0x4000ced8 4000ceb0: 0c0c movi.n a12, 0 4000ceb2: 0c00 movi.n a0, 0 4000ceb4: 3d00 mov.n a3, a0 4000ceb6: 16ed43 beqz a13, 0x4000d2f8 4000ceb9: d2212b l32i a13, a1, 172 4000cebc: 42a0f0 movi a4, 240 4000cebf: c02060 neg a2, a12 4000cec2: 7cf9 movi.n a9, -1 4000cec4: 903030 xor a3, a0, a9 4000cec7: 1b83 addi.n a8, a3, 1 4000cec9: c03883 moveqz a3, a8, a12 4000cecc: 022129 l32i a0, a1, 164 4000cecf: c2212a l32i a12, a1, 168 4000ced2: 4a11 add.n a1, a1, a4 4000ced4: 0df0 ret.n 4000ced6: 0000 4000ced8: 826126 s32i a8, a1, 152 4000cedb: a0f740 nsau a10, a7 4000cede: a26127 s32i a10, a1, 156 4000cee1: ccca bnez.n a10, 0x4000cef1 4000cee3: c73705 bltu a7, a12, 0x4000ceec 4000cee6: 87b502 bgeu a5, a8, 0x4000ceec 4000cee9: 460701 j 0x4000d30a 4000ceec: 0c1c movi.n a12, 1 4000ceee: 06f0ff j 0x4000ceb2 4000cef1: 526114 s32i a5, a1, 80 4000cef4: 322126 l32i a3, a1, 152 4000cef7: 522127 l32i a5, a1, 156 4000cefa: 2c06 movi.n a6, 32 4000cefc: 5066c0 sub a6, a6, a5 4000ceff: 000640 ssr a6 4000cf02: 62611e s32i a6, a1, 120 4000cf05: c02091 srl a2, a12 4000cf08: 001540 ssl a5 4000cf0b: 22611f s32i a2, a1, 124 4000cf0e: 303781 src a3, a7, a3 4000cf11: 326124 s32i a3, a1, 144 4000cf14: 3030f5 extui a3, a3, 16, 16 4000cf17: 326125 s32i a3, a1, 148 4000cf1a: 053001 call0 __udivsi3 ; 0x4000e21c 4000cf1d: 022114 l32i a0, a1, 80 4000cf20: 32211e l32i a3, a1, 120 4000cf23: 226123 s32i a2, a1, 140 4000cf26: 422127 l32i a4, a1, 156 4000cf29: 226135 s32i a2, a1, 212 4000cf2c: 001440 ssl a4 4000cf2f: 22211f l32i a2, a1, 124 4000cf32: 00cca1 sll a12, a12 4000cf35: 000340 ssr a3 4000cf38: 000091 srl a0, a0 4000cf3b: 322125 l32i a3, a1, 148 4000cf3e: 00cc20 or a12, a12, a0 4000cf41: c26120 s32i a12, a1, 128 4000cf44: c0c0f5 extui a12, a12, 16, 16 4000cf47: 053201 call0 __umodsi3 ; 0x4000e268 4000cf4a: 004211 slli a4, a2, 16 4000cf4d: 022135 l32i a0, a1, 212 4000cf50: 222124 l32i a2, a1, 144 4000cf53: 404c20 or a4, a12, a4 4000cf56: cd04 mov.n a12, a4 4000cf58: 2020f4 extui a2, a2, 0, 16 4000cf5b: 226121 s32i a2, a1, 132 4000cf5e: 002282 mull a2, a2, a0 4000cf61: 27b41a bgeu a4, a2, 0x4000cf7f 4000cf64: 0b60 addi.n a6, a0, -1 4000cf66: 522124 l32i a5, a1, 144 4000cf69: 626123 s32i a6, a1, 140 4000cf6c: 4ac5 add.n a12, a5, a4 4000cf6e: 573c0d bltu a12, a5, 0x4000cf7f 4000cf71: 27bc0a bgeu a12, a2, 0x4000cf7f 4000cf74: 82c0fe addi a8, a0, -2 4000cf77: 722124 l32i a7, a1, 144 4000cf7a: 826123 s32i a8, a1, 140 4000cf7d: cac7 add.n a12, a7, a12 4000cf7f: 322125 l32i a3, a1, 148 4000cf82: 20ccc0 sub a12, a12, a2 4000cf85: 2d0c mov.n a2, a12 4000cf87: 452901 call0 __udivsi3 ; 0x4000e21c 4000cf8a: 322125 l32i a3, a1, 148 4000cf8d: 226137 s32i a2, a1, 220 4000cf90: 226136 s32i a2, a1, 216 4000cf93: 922120 l32i a9, a1, 128 4000cf96: 2d0c mov.n a2, a12 4000cf98: 9090f4 extui a9, a9, 0, 16 4000cf9b: 926122 s32i a9, a1, 136 4000cf9e: 852c01 call0 __umodsi3 ; 0x4000e268 4000cfa1: 022137 l32i a0, a1, 220 4000cfa4: 522136 l32i a5, a1, 216 4000cfa7: 00a211 slli a10, a2, 16 4000cfaa: 922122 l32i a9, a1, 136 4000cfad: 222121 l32i a2, a1, 132 4000cfb0: a09920 or a9, a9, a10 4000cfb3: 4d09 mov.n a4, a9 4000cfb5: 502282 mull a2, a2, a5 4000cfb8: 27b913 bgeu a9, a2, 0x4000cfcf 4000cfbb: b22124 l32i a11, a1, 144 4000cfbe: 0b05 addi.n a0, a5, -1 4000cfc0: 904b80 add a4, a11, a9 4000cfc3: b73408 bltu a4, a11, 0x4000cfcf 4000cfc6: 27b405 bgeu a4, a2, 0x4000cfcf 4000cfc9: 404b80 add a4, a11, a4 4000cfcc: 02c5fe addi a0, a5, -2 4000cfcf: 322126 l32i a3, a1, 152 4000cfd2: 522127 l32i a5, a1, 156 4000cfd5: 2044c0 sub a4, a4, a2 4000cfd8: 426138 s32i a4, a1, 224 4000cfdb: 222123 l32i a2, a1, 140 4000cfde: 001540 ssl a5 4000cfe1: 0033a1 sll a3, a3 4000cfe4: 002211 slli a2, a2, 16 4000cfe7: 202020 or a2, a0, a2 4000cfea: 22611b s32i a2, a1, 108 4000cfed: cd02 mov.n a12, a2 4000cfef: 05d000 call0 __umulsidi3 ; 0x4000dcf0 4000cff2: 022138 l32i a0, a1, 224 4000cff5: 373017 bltu a0, a3, 0x4000d010 4000cff8: 3040c0 sub a4, a0, a3 4000cffb: 5634eb bnez a4, 0x4000ceb2 4000cffe: 622127 l32i a6, a1, 156 4000d001: 522114 l32i a5, a1, 80 4000d004: 001640 ssl a6 4000d007: 0055a1 sll a5, a5 4000d00a: 273502 bltu a5, a2, 0x4000d010 4000d00d: 46a8ff j 0x4000ceb2 4000d010: c2211b l32i a12, a1, 108 4000d013: 0bcc addi.n a12, a12, -1 4000d015: 46a6ff j 0x4000ceb2 4000d018: 7cfd movi.n a13, -1 4000d01a: d0c330 xor a12, a3, a13 4000d01d: 1b0c addi.n a0, a12, 1 4000d01f: 20c083 moveqz a12, a0, a2 4000d022: 200060 neg a0, a2 4000d025: c696ff j 0x4000ce84 4000d028: 926115 s32i a9, a1, 84 4000d02b: 873c02 bltu a12, a8, 0x4000d031 4000d02e: 863900 j 0x4000d118 4000d031: c26128 s32i a12, a1, 160 4000d034: 82611c s32i a8, a1, 112 4000d037: 40f840 nsau a4, a8 4000d03a: 9c34 beqz.n a4, 0x4000d051 4000d03c: 001440 ssl a4 4000d03f: 0025a1 sll a2, a5 4000d042: 506c81 src a6, a12, a5 4000d045: 0078a1 sll a7, a8 4000d048: 72611c s32i a7, a1, 112 4000d04b: 626128 s32i a6, a1, 160 4000d04e: 226115 s32i a2, a1, 84 4000d051: c22115 l32i a12, a1, 84 4000d054: 32211c l32i a3, a1, 112 4000d057: 222128 l32i a2, a1, 160 4000d05a: 3030f5 extui a3, a3, 16, 16 4000d05d: 326118 s32i a3, a1, 96 4000d060: 851b01 call0 __udivsi3 ; 0x4000e21c 4000d063: 322118 l32i a3, a1, 96 4000d066: 226110 s32i a2, a1, 64 4000d069: 22612f s32i a2, a1, 188 4000d06c: c040f5 extui a4, a12, 16, 16 4000d06f: 426116 s32i a4, a1, 88 4000d072: 222128 l32i a2, a1, 160 4000d075: 051f01 call0 __umodsi3 ; 0x4000e268 4000d078: 42212f l32i a4, a1, 188 4000d07b: 006211 slli a6, a2, 16 4000d07e: 02211c l32i a0, a1, 112 4000d081: 522116 l32i a5, a1, 88 4000d084: 0000f4 extui a0, a0, 0, 16 4000d087: 605520 or a5, a5, a6 4000d08a: 526119 s32i a5, a1, 100 4000d08d: 02611d s32i a0, a1, 116 4000d090: 400082 mull a0, a0, a4 4000d093: 07b527 bgeu a5, a0, 0x4000d0be 4000d096: 82211c l32i a8, a1, 112 4000d099: 0b94 addi.n a9, a4, -1 4000d09b: 926110 s32i a9, a1, 64 4000d09e: 807580 add a7, a5, a8 4000d0a1: 726119 s32i a7, a1, 100 4000d0a4: 873716 bltu a7, a8, 0x4000d0be 4000d0a7: a22119 l32i a10, a1, 100 4000d0aa: 07ba10 bgeu a10, a0, 0x4000d0be 4000d0ad: b22119 l32i a11, a1, 100 4000d0b0: 32c4fe addi a3, a4, -2 4000d0b3: 22211c l32i a2, a1, 112 4000d0b6: 326110 s32i a3, a1, 64 4000d0b9: bab2 add.n a11, a2, a11 4000d0bb: b26119 s32i a11, a1, 100 4000d0be: 222119 l32i a2, a1, 100 4000d0c1: 322118 l32i a3, a1, 96 4000d0c4: 0022c0 sub a2, a2, a0 4000d0c7: 226119 s32i a2, a1, 100 4000d0ca: 051501 call0 __udivsi3 ; 0x4000e21c 4000d0cd: 322118 l32i a3, a1, 96 4000d0d0: 226131 s32i a2, a1, 196 4000d0d3: 226130 s32i a2, a1, 192 4000d0d6: c040f4 extui a4, a12, 0, 16 4000d0d9: 426117 s32i a4, a1, 92 4000d0dc: 222119 l32i a2, a1, 100 4000d0df: 851801 call0 __umodsi3 ; 0x4000e268 4000d0e2: 022131 l32i a0, a1, 196 4000d0e5: 422110 l32i a4, a1, 64 4000d0e8: 322130 l32i a3, a1, 192 4000d0eb: 006211 slli a6, a2, 16 4000d0ee: 522117 l32i a5, a1, 92 4000d0f1: 82211d l32i a8, a1, 116 4000d0f4: 605520 or a5, a5, a6 4000d0f7: 308882 mull a8, a8, a3 4000d0fa: 87b50f bgeu a5, a8, 0x4000d10d 4000d0fd: 72211c l32i a7, a1, 112 4000d100: 0b03 addi.n a0, a3, -1 4000d102: 7a55 add.n a5, a5, a7 4000d104: 773505 bltu a5, a7, 0x4000d10d 4000d107: 87b502 bgeu a5, a8, 0x4000d10d 4000d10a: 02c3fe addi a0, a3, -2 4000d10d: 00c411 slli a12, a4, 16 4000d110: c0c020 or a12, a0, a12 4000d113: 0c00 movi.n a0, 0 4000d115: c666ff j 0x4000ceb4 4000d118: 56e800 bnez a8, 0x4000d12a 4000d11b: 526114 s32i a5, a1, 80 4000d11e: 22a001 movi a2, 1 4000d121: 850f01 call0 __udivsi3 ; 0x4000e21c 4000d124: 200220 or a0, a2, a2 4000d127: 522114 l32i a5, a1, 80 4000d12a: 02611c s32i a0, a1, 112 4000d12d: 30f040 nsau a3, a0 4000d130: ec03 bnez.n a3, 0x4000d154 4000d132: 02611c s32i a0, a1, 112 4000d135: 0040f5 extui a4, a0, 16, 16 4000d138: 0c12 movi.n a2, 1 4000d13a: 0030f4 extui a3, a0, 0, 16 4000d13d: 005cc0 sub a5, a12, a0 4000d140: 526128 s32i a5, a1, 160 4000d143: 32611d s32i a3, a1, 116 4000d146: 226111 s32i a2, a1, 68 4000d149: 426118 s32i a4, a1, 96 4000d14c: c22118 l32i a12, a1, 96 4000d14f: 063a00 j 0x4000d23b 4000d152: 0000 4000d154: 001340 ssl a3 4000d157: 2c0a movi.n a10, 32 4000d159: 30aac0 sub a10, a10, a3 4000d15c: 0060a1 sll a6, a0 4000d15f: 62611c s32i a6, a1, 112 4000d162: 000a40 ssr a10 4000d165: c02091 srl a2, a12 4000d168: 001340 ssl a3 4000d16b: 29c1 s32i.n a2, a1, 48 4000d16d: 6030f5 extui a3, a6, 16, 16 4000d170: 0075a1 sll a7, a5 4000d173: 508c81 src a8, a12, a5 4000d176: 826128 s32i a8, a1, 160 4000d179: 726115 s32i a7, a1, 84 4000d17c: 326118 s32i a3, a1, 96 4000d17f: c50901 call0 __udivsi3 ; 0x4000e21c 4000d182: b22128 l32i a11, a1, 160 4000d185: 29f1 s32i.n a2, a1, 60 4000d187: 22612c s32i a2, a1, 176 4000d18a: c22118 l32i a12, a1, 96 4000d18d: 28c1 l32i.n a2, a1, 48 4000d18f: 3d0c mov.n a3, a12 4000d191: b0b0f5 extui a11, a11, 16, 16 4000d194: b9d1 s32i.n a11, a1, 52 4000d196: 050d01 call0 __umodsi3 ; 0x4000e268 4000d199: 02212c l32i a0, a1, 176 4000d19c: 005211 slli a5, a2, 16 4000d19f: 32211c l32i a3, a1, 112 4000d1a2: 48d1 l32i.n a4, a1, 52 4000d1a4: 3030f4 extui a3, a3, 0, 16 4000d1a7: 504420 or a4, a4, a5 4000d1aa: 426113 s32i a4, a1, 76 4000d1ad: 32611d s32i a3, a1, 116 4000d1b0: 003382 mull a3, a3, a0 4000d1b3: 37b424 bgeu a4, a3, 0x4000d1db 4000d1b6: 72211c l32i a7, a1, 112 4000d1b9: 0b80 addi.n a8, a0, -1 4000d1bb: 89f1 s32i.n a8, a1, 60 4000d1bd: 7a64 add.n a6, a4, a7 4000d1bf: 626113 s32i a6, a1, 76 4000d1c2: 773615 bltu a6, a7, 0x4000d1db 4000d1c5: 922113 l32i a9, a1, 76 4000d1c8: 37b90f bgeu a9, a3, 0x4000d1db 4000d1cb: a22113 l32i a10, a1, 76 4000d1ce: 22c0fe addi a2, a0, -2 4000d1d1: b2211c l32i a11, a1, 112 4000d1d4: 29f1 s32i.n a2, a1, 60 4000d1d6: aaab add.n a10, a11, a10 4000d1d8: a26113 s32i a10, a1, 76 4000d1db: 222113 l32i a2, a1, 76 4000d1de: 3022c0 sub a2, a2, a3 4000d1e1: 226113 s32i a2, a1, 76 4000d1e4: 3d0c mov.n a3, a12 4000d1e6: 450301 call0 __udivsi3 ; 0x4000e21c 4000d1e9: 22612e s32i a2, a1, 184 4000d1ec: 322128 l32i a3, a1, 160 4000d1ef: 22612d s32i a2, a1, 180 4000d1f2: 3030f4 extui a3, a3, 0, 16 4000d1f5: 222113 l32i a2, a1, 76 4000d1f8: 39e1 s32i.n a3, a1, 56 4000d1fa: 3d0c mov.n a3, a12 4000d1fc: 850601 call0 __umodsi3 ; 0x4000e268 4000d1ff: 02212e l32i a0, a1, 184 4000d202: 32212d l32i a3, a1, 180 4000d205: 52211d l32i a5, a1, 116 4000d208: 88e1 l32i.n a8, a1, 56 4000d20a: 009211 slli a9, a2, 16 4000d20d: 908820 or a8, a8, a9 4000d210: 4d08 mov.n a4, a8 4000d212: 305582 mull a5, a5, a3 4000d215: 57b811 bgeu a8, a5, 0x4000d22a 4000d218: a2211c l32i a10, a1, 112 4000d21b: 0b03 addi.n a0, a3, -1 4000d21d: aa48 add.n a4, a8, a10 4000d21f: a73407 bltu a4, a10, 0x4000d22a 4000d222: 57b404 bgeu a4, a5, 0x4000d22a 4000d225: 02c3fe addi a0, a3, -2 4000d228: 4a4a add.n a4, a10, a4 4000d22a: 5034c0 sub a3, a4, a5 4000d22d: 28f1 l32i.n a2, a1, 60 4000d22f: 326128 s32i a3, a1, 160 4000d232: 002211 slli a2, a2, 16 4000d235: 202020 or a2, a0, a2 4000d238: 226111 s32i a2, a1, 68 4000d23b: 222128 l32i a2, a1, 160 4000d23e: 3d0c mov.n a3, a12 4000d240: 85fd00 call0 __udivsi3 ; 0x4000e21c 4000d243: c03c20 or a3, a12, a12 4000d246: 226112 s32i a2, a1, 72 4000d249: 226132 s32i a2, a1, 200 4000d24c: 422115 l32i a4, a1, 84 4000d24f: 222128 l32i a2, a1, 160 4000d252: 4040f5 extui a4, a4, 16, 16 4000d255: 426116 s32i a4, a1, 88 4000d258: c50001 call0 __umodsi3 ; 0x4000e268 4000d25b: 422132 l32i a4, a1, 200 4000d25e: 02211d l32i a0, a1, 116 4000d261: 522116 l32i a5, a1, 88 4000d264: 006211 slli a6, a2, 16 4000d267: 605520 or a5, a5, a6 4000d26a: 52611a s32i a5, a1, 104 4000d26d: 400082 mull a0, a0, a4 4000d270: 07b527 bgeu a5, a0, 0x4000d29b 4000d273: 82211c l32i a8, a1, 112 4000d276: 0b94 addi.n a9, a4, -1 4000d278: 926112 s32i a9, a1, 72 4000d27b: 8a75 add.n a7, a5, a8 4000d27d: 72611a s32i a7, a1, 104 4000d280: 873717 bltu a7, a8, 0x4000d29b 4000d283: a2211a l32i a10, a1, 104 4000d286: 07ba11 bgeu a10, a0, 0x4000d29b 4000d289: b2211a l32i a11, a1, 104 4000d28c: 32c4fe addi a3, a4, -2 4000d28f: 22211c l32i a2, a1, 112 4000d292: 326112 s32i a3, a1, 72 4000d295: b0b280 add a11, a2, a11 4000d298: b2611a s32i a11, a1, 104 4000d29b: 22211a l32i a2, a1, 104 4000d29e: 3d0c mov.n a3, a12 4000d2a0: 0022c0 sub a2, a2, a0 4000d2a3: 22611a s32i a2, a1, 104 4000d2a6: 45f700 call0 __udivsi3 ; 0x4000e21c 4000d2a9: c03c20 or a3, a12, a12 4000d2ac: 226134 s32i a2, a1, 208 4000d2af: 226133 s32i a2, a1, 204 4000d2b2: 422115 l32i a4, a1, 84 4000d2b5: 22211a l32i a2, a1, 104 4000d2b8: 4040f4 extui a4, a4, 0, 16 4000d2bb: 426117 s32i a4, a1, 92 4000d2be: 85fa00 call0 __umodsi3 ; 0x4000e268 4000d2c1: 422134 l32i a4, a1, 208 4000d2c4: 022133 l32i a0, a1, 204 4000d2c7: 822117 l32i a8, a1, 92 4000d2ca: 009211 slli a9, a2, 16 4000d2cd: 908820 or a8, a8, a9 4000d2d0: 92211d l32i a9, a1, 116 4000d2d3: 522112 l32i a5, a1, 72 4000d2d6: 009982 mull a9, a9, a0 4000d2d9: 97b80f bgeu a8, a9, 0x4000d2ec 4000d2dc: a2211c l32i a10, a1, 112 4000d2df: 0b40 addi.n a4, a0, -1 4000d2e1: aa88 add.n a8, a8, a10 4000d2e3: a73805 bltu a8, a10, 0x4000d2ec 4000d2e6: 97b802 bgeu a8, a9, 0x4000d2ec 4000d2e9: 42c0fe addi a4, a0, -2 4000d2ec: 022111 l32i a0, a1, 68 4000d2ef: 00c511 slli a12, a5, 16 4000d2f2: c0c420 or a12, a4, a12 4000d2f5: c6eefe j 0x4000ceb4 4000d2f8: 022129 l32i a0, a1, 164 4000d2fb: d2212b l32i a13, a1, 172 4000d2fe: 2d0c mov.n a2, a12 4000d300: 42a0f0 movi a4, 240 4000d303: c2212a l32i a12, a1, 168 4000d306: 4a11 add.n a1, a1, a4 4000d308: 0df0 ret.n 4000d30a: 0c0c movi.n a12, 0 4000d30c: 86e8fe j 0x4000ceb2 4000d30f: 00 ; does u_long = u_long / u_long __udivdi3: 4000d310: 8d02 mov.n a8, a2 4000d312: 62a0c0 movi a6, 192 4000d315: 6011c0 sub a1, a1, a6 4000d318: 8901 s32i.n a8, a1, 0 4000d31a: 5931 s32i.n a5, a1, 12 4000d31c: 4921 s32i.n a4, a1, 8 4000d31e: 3911 s32i.n a3, a1, 4 4000d320: 02611e s32i a0, a1, 120 4000d323: d26120 s32i a13, a1, 128 4000d326: e26121 s32i a14, a1, 132 4000d329: c2611f s32i a12, a1, 124 4000d32c: ed02 mov.n a14, a2 4000d32e: cd03 mov.n a12, a3 4000d330: dd03 mov.n a13, a3 4000d332: 0d04 mov.n a0, a4 4000d334: 3d04 mov.n a3, a4 4000d336: 16b517 beqz a5, 0x4000d4b5 4000d339: 57bc17 bgeu a12, a5, 0x4000d354 4000d33c: 0c03 movi.n a3, 0 4000d33e: 0c02 movi.n a2, 0 4000d340: e22121 l32i a14, a1, 132 4000d343: d22120 l32i a13, a1, 128 4000d346: c2211f l32i a12, a1, 124 4000d349: 42a0c0 movi a4, 192 4000d34c: 02211e l32i a0, a1, 120 4000d34f: 4a11 add.n a1, a1, a4 4000d351: 0df0 ret.n 4000d353: 00 4000d354: 42612e s32i a4, a1, 184 4000d357: d0f540 nsau a13, a5 4000d35a: dced bnez.n a13, 0x4000d37c 4000d35c: c73505 bltu a5, a12, 0x4000d365 4000d35f: 47b202 bgeu a2, a4, 0x4000d365 4000d362: c6fc00 j 0x4000d759 4000d365: 0c03 movi.n a3, 0 4000d367: 0c12 movi.n a2, 1 4000d369: e22121 l32i a14, a1, 132 4000d36c: d22120 l32i a13, a1, 128 4000d36f: c2211f l32i a12, a1, 124 4000d372: 42a0c0 movi a4, 192 4000d375: 02211e l32i a0, a1, 120 4000d378: 4a11 add.n a1, a1, a4 4000d37a: 0df0 ret.n 4000d37c: 826112 s32i a8, a1, 72 4000d37f: e2212e l32i a14, a1, 184 4000d382: 2c04 movi.n a4, 32 4000d384: d044c0 sub a4, a4, a13 4000d387: 000440 ssr a4 4000d38a: 426116 s32i a4, a1, 88 4000d38d: c02091 srl a2, a12 4000d390: 001d40 ssl a13 4000d393: 226117 s32i a2, a1, 92 4000d396: e03581 src a3, a5, a14 4000d399: 32611c s32i a3, a1, 112 4000d39c: 3030f5 extui a3, a3, 16, 16 4000d39f: 32611d s32i a3, a1, 116 4000d3a2: 85e700 call0 __udivsi3 ; 0x4000e21c 4000d3a5: 022112 l32i a0, a1, 72 4000d3a8: 322116 l32i a3, a1, 88 4000d3ab: 22611b s32i a2, a1, 108 4000d3ae: 22612b s32i a2, a1, 172 4000d3b1: 001d40 ssl a13 4000d3b4: 00cca1 sll a12, a12 4000d3b7: 222117 l32i a2, a1, 92 4000d3ba: 000340 ssr a3 4000d3bd: 000091 srl a0, a0 4000d3c0: 32211d l32i a3, a1, 116 4000d3c3: 00cc20 or a12, a12, a0 4000d3c6: c26118 s32i a12, a1, 96 4000d3c9: c0c0f5 extui a12, a12, 16, 16 4000d3cc: 85e900 call0 __umodsi3 ; 0x4000e268 4000d3cf: 004211 slli a4, a2, 16 4000d3d2: 02212b l32i a0, a1, 172 4000d3d5: 22211c l32i a2, a1, 112 4000d3d8: 404c20 or a4, a12, a4 4000d3db: cd04 mov.n a12, a4 4000d3dd: 2020f4 extui a2, a2, 0, 16 4000d3e0: 226119 s32i a2, a1, 100 4000d3e3: 002282 mull a2, a2, a0 4000d3e6: 27b41b bgeu a4, a2, 0x4000d405 4000d3e9: 0b60 addi.n a6, a0, -1 4000d3eb: 52211c l32i a5, a1, 112 4000d3ee: 62611b s32i a6, a1, 108 4000d3f1: 40c580 add a12, a5, a4 4000d3f4: 573c0d bltu a12, a5, 0x4000d405 4000d3f7: 27bc0a bgeu a12, a2, 0x4000d405 4000d3fa: 82c0fe addi a8, a0, -2 4000d3fd: 72211c l32i a7, a1, 112 4000d400: 82611b s32i a8, a1, 108 4000d403: cac7 add.n a12, a7, a12 4000d405: 32211d l32i a3, a1, 116 4000d408: 20ccc0 sub a12, a12, a2 4000d40b: 2d0c mov.n a2, a12 4000d40d: c5e000 call0 __udivsi3 ; 0x4000e21c 4000d410: 32211d l32i a3, a1, 116 4000d413: 22612d s32i a2, a1, 180 4000d416: 22612c s32i a2, a1, 176 4000d419: 922118 l32i a9, a1, 96 4000d41c: 2d0c mov.n a2, a12 4000d41e: 9090f4 extui a9, a9, 0, 16 4000d421: 92611a s32i a9, a1, 104 4000d424: 05e400 call0 __umodsi3 ; 0x4000e268 4000d427: 02212d l32i a0, a1, 180 4000d42a: 32212c l32i a3, a1, 176 4000d42d: 005211 slli a5, a2, 16 4000d430: 42211a l32i a4, a1, 104 4000d433: 222119 l32i a2, a1, 100 4000d436: 504420 or a4, a4, a5 4000d439: cd04 mov.n a12, a4 4000d43b: 302282 mull a2, a2, a3 4000d43e: 27b411 bgeu a4, a2, 0x4000d453 4000d441: 62211c l32i a6, a1, 112 4000d444: 0b03 addi.n a0, a3, -1 4000d446: 4ac6 add.n a12, a6, a4 4000d448: 673c07 bltu a12, a6, 0x4000d453 4000d44b: 27bc04 bgeu a12, a2, 0x4000d453 4000d44e: cac6 add.n a12, a6, a12 4000d450: 02c3fe addi a0, a3, -2 4000d453: 20ccc0 sub a12, a12, a2 4000d456: 001d40 ssl a13 4000d459: 22211b l32i a2, a1, 108 4000d45c: 003ea1 sll a3, a14 4000d45f: 002211 slli a2, a2, 16 4000d462: 202020 or a2, a0, a2 4000d465: 226115 s32i a2, a1, 84 4000d468: ed02 mov.n a14, a2 4000d46a: 458800 call0 __umulsidi3 ; 0x4000dcf0 4000d46d: 373c0e bltu a12, a3, 0x4000d47f 4000d470: 379c28 bne a12, a3, 0x4000d49c 4000d473: 322112 l32i a3, a1, 72 4000d476: 001d40 ssl a13 4000d479: 0033a1 sll a3, a3 4000d47c: 27b31c bgeu a3, a2, 0x4000d49c 4000d47f: 0c03 movi.n a3, 0 4000d481: 02211e l32i a0, a1, 120 4000d484: c2211f l32i a12, a1, 124 4000d487: d22120 l32i a13, a1, 128 4000d48a: e22115 l32i a14, a1, 84 4000d48d: 42a0c0 movi a4, 192 4000d490: 0bee addi.n a14, a14, -1 4000d492: 2d0e mov.n a2, a14 4000d494: e22121 l32i a14, a1, 132 4000d497: 4a11 add.n a1, a1, a4 4000d499: 0df0 ret.n 4000d49b: 00 4000d49c: 0c03 movi.n a3, 0 4000d49e: 02211e l32i a0, a1, 120 4000d4a1: c2211f l32i a12, a1, 124 4000d4a4: d22120 l32i a13, a1, 128 4000d4a7: 2d0e mov.n a2, a14 4000d4a9: 42a0c0 movi a4, 192 4000d4ac: e22121 l32i a14, a1, 132 4000d4af: 4a11 add.n a1, a1, a4 4000d4b1: 0df0 ret.n 4000d4b3: 0000 4000d4b5: 473c02 bltu a12, a4, 0x4000d4bb 4000d4b8: 863600 j 0x4000d596 4000d4bb: 09d1 s32i.n a0, a1, 52 4000d4bd: 40f440 nsau a4, a4 4000d4c0: 16e400 beqz a4, 0x4000d4d2 4000d4c3: 001440 ssl a4 4000d4c6: 20dc81 src a13, a12, a2 4000d4c9: 00e2a1 sll a14, a2 4000d4cc: 0003a1 sll a0, a3 4000d4cf: 02610d s32i a0, a1, 52 4000d4d2: c8d1 l32i.n a12, a1, 52 4000d4d4: 2d0d mov.n a2, a13 4000d4d6: c030f5 extui a3, a12, 16, 16 4000d4d9: 326113 s32i a3, a1, 76 4000d4dc: c5d300 call0 __udivsi3 ; 0x4000e21c 4000d4df: 29c1 s32i.n a2, a1, 48 4000d4e1: 226125 s32i a2, a1, 148 4000d4e4: e030f5 extui a3, a14, 16, 16 4000d4e7: 326110 s32i a3, a1, 64 4000d4ea: 2d0d mov.n a2, a13 4000d4ec: 322113 l32i a3, a1, 76 4000d4ef: 85d700 call0 __umodsi3 ; 0x4000e268 4000d4f2: 422125 l32i a4, a1, 148 4000d4f5: 003211 slli a3, a2, 16 4000d4f8: c000f4 extui a0, a12, 0, 16 4000d4fb: 222110 l32i a2, a1, 64 4000d4fe: 09e1 s32i.n a0, a1, 56 4000d500: 302220 or a2, a2, a3 4000d503: dd02 mov.n a13, a2 4000d505: 400082 mull a0, a0, a4 4000d508: 07b212 bgeu a2, a0, 0x4000d51e 4000d50b: cad2 add.n a13, a2, a12 4000d50d: 0b54 addi.n a5, a4, -1 4000d50f: 59c1 s32i.n a5, a1, 48 4000d511: c73d09 bltu a13, a12, 0x4000d51e 4000d514: 07bd06 bgeu a13, a0, 0x4000d51e 4000d517: dadc add.n a13, a12, a13 4000d519: 62c4fe addi a6, a4, -2 4000d51c: 69c1 s32i.n a6, a1, 48 4000d51e: 322113 l32i a3, a1, 76 4000d521: 00ddc0 sub a13, a13, a0 4000d524: 2d0d mov.n a2, a13 4000d526: 45cf00 call0 __udivsi3 ; 0x4000e21c 4000d529: e0e0f4 extui a14, a14, 0, 16 4000d52c: 226127 s32i a2, a1, 156 4000d52f: 226126 s32i a2, a1, 152 4000d532: 322113 l32i a3, a1, 76 4000d535: 2d0d mov.n a2, a13 4000d537: 05d300 call0 __umodsi3 ; 0x4000e268 4000d53a: 022127 l32i a0, a1, 156 4000d53d: 322126 l32i a3, a1, 152 4000d540: 002211 slli a2, a2, 16 4000d543: 48e1 l32i.n a4, a1, 56 4000d545: 202e20 or a2, a14, a2 4000d548: 304482 mull a4, a4, a3 4000d54b: 47b229 bgeu a2, a4, 0x4000d578 4000d54e: 0b03 addi.n a0, a3, -1 4000d550: ca22 add.n a2, a2, a12 4000d552: c73222 bltu a2, a12, 0x4000d578 4000d555: 47b21f bgeu a2, a4, 0x4000d578 4000d558: c2211f l32i a12, a1, 124 4000d55b: d22120 l32i a13, a1, 128 4000d55e: e22121 l32i a14, a1, 132 4000d561: 42a0c0 movi a4, 192 4000d564: 02c3fe addi a0, a3, -2 4000d567: 28c1 l32i.n a2, a1, 48 4000d569: 0c03 movi.n a3, 0 4000d56b: 002211 slli a2, a2, 16 4000d56e: 202020 or a2, a0, a2 4000d571: 02211e l32i a0, a1, 120 4000d574: 4a11 add.n a1, a1, a4 4000d576: 0df0 ret.n 4000d578: 0c03 movi.n a3, 0 4000d57a: c2211f l32i a12, a1, 124 4000d57d: d22120 l32i a13, a1, 128 4000d580: e22121 l32i a14, a1, 132 4000d583: 28c1 l32i.n a2, a1, 48 4000d585: 42a0c0 movi a4, 192 4000d588: 002211 slli a2, a2, 16 4000d58b: 202020 or a2, a0, a2 4000d58e: 02211e l32i a0, a1, 120 4000d591: 4a11 add.n a1, a1, a4 4000d593: 0df0 ret.n 4000d595: 00 4000d596: ccb4 bnez.n a4, 0x4000d5a5 4000d598: 826112 s32i a8, a1, 72 4000d59b: 0c12 movi.n a2, 1 4000d59d: c5c700 call0 __udivsi3 ; 0x4000e21c 4000d5a0: 822112 l32i a8, a1, 72 4000d5a3: 0d02 mov.n a0, a2 4000d5a5: 09d1 s32i.n a0, a1, 52 4000d5a7: 30f040 nsau a3, a0 4000d5aa: dc33 bnez.n a3, 0x4000d5c1 4000d5ac: 09d1 s32i.n a0, a1, 52 4000d5ae: 0c13 movi.n a3, 1 4000d5b0: 00dcc0 sub a13, a12, a0 4000d5b3: 0040f4 extui a4, a0, 0, 16 4000d5b6: 00c0f5 extui a12, a0, 16, 16 4000d5b9: 49e1 s32i.n a4, a1, 56 4000d5bb: 39b1 s32i.n a3, a1, 44 4000d5bd: 863200 j 0x4000d68b 4000d5c0: 00 4000d5c1: 001340 ssl a3 4000d5c4: 58d1 l32i.n a5, a1, 52 4000d5c6: 2c00 movi.n a0, 32 4000d5c8: 3000c0 sub a0, a0, a3 4000d5cb: 0055a1 sll a5, a5 4000d5ce: 59d1 s32i.n a5, a1, 52 4000d5d0: 000040 ssr a0 4000d5d3: c02091 srl a2, a12 4000d5d6: 2981 s32i.n a2, a1, 32 4000d5d8: 001340 ssl a3 4000d5db: 80dc81 src a13, a12, a8 4000d5de: 00e8a1 sll a14, a8 4000d5e1: 50c0f5 extui a12, a5, 16, 16 4000d5e4: 3d0c mov.n a3, a12 4000d5e6: 45c300 call0 __udivsi3 ; 0x4000e21c 4000d5e9: 29a1 s32i.n a2, a1, 40 4000d5eb: 226122 s32i a2, a1, 136 4000d5ee: d030f5 extui a3, a13, 16, 16 4000d5f1: 3991 s32i.n a3, a1, 36 4000d5f3: 2881 l32i.n a2, a1, 32 4000d5f5: 3d0c mov.n a3, a12 4000d5f7: 05c700 call0 __umodsi3 ; 0x4000e268 4000d5fa: 022122 l32i a0, a1, 136 4000d5fd: 005211 slli a5, a2, 16 4000d600: 38d1 l32i.n a3, a1, 52 4000d602: 4891 l32i.n a4, a1, 36 4000d604: 3030f4 extui a3, a3, 0, 16 4000d607: 504420 or a4, a4, a5 4000d60a: 426111 s32i a4, a1, 68 4000d60d: 39e1 s32i.n a3, a1, 56 4000d60f: 003382 mull a3, a3, a0 4000d612: 37b422 bgeu a4, a3, 0x4000d638 4000d615: 78d1 l32i.n a7, a1, 52 4000d617: 0b80 addi.n a8, a0, -1 4000d619: 89a1 s32i.n a8, a1, 40 4000d61b: 7a64 add.n a6, a4, a7 4000d61d: 626111 s32i a6, a1, 68 4000d620: 773614 bltu a6, a7, 0x4000d638 4000d623: 922111 l32i a9, a1, 68 4000d626: 37b90e bgeu a9, a3, 0x4000d638 4000d629: a22111 l32i a10, a1, 68 4000d62c: 22c0fe addi a2, a0, -2 4000d62f: b8d1 l32i.n a11, a1, 52 4000d631: 29a1 s32i.n a2, a1, 40 4000d633: aaab add.n a10, a11, a10 4000d635: a26111 s32i a10, a1, 68 4000d638: 222111 l32i a2, a1, 68 4000d63b: 3022c0 sub a2, a2, a3 4000d63e: 226111 s32i a2, a1, 68 4000d641: 3d0c mov.n a3, a12 4000d643: 85bd00 call0 __udivsi3 ; 0x4000e21c 4000d646: d0d0f4 extui a13, a13, 0, 16 4000d649: 226124 s32i a2, a1, 144 4000d64c: 226123 s32i a2, a1, 140 4000d64f: 3d0c mov.n a3, a12 4000d651: 222111 l32i a2, a1, 68 4000d654: 05c100 call0 __umodsi3 ; 0x4000e268 4000d657: 022124 l32i a0, a1, 144 4000d65a: 322123 l32i a3, a1, 140 4000d65d: 58e1 l32i.n a5, a1, 56 4000d65f: 008211 slli a8, a2, 16 4000d662: 808d20 or a8, a13, a8 4000d665: 4d08 mov.n a4, a8 4000d667: 305582 mull a5, a5, a3 4000d66a: 57b810 bgeu a8, a5, 0x4000d67e 4000d66d: 98d1 l32i.n a9, a1, 52 4000d66f: 0b03 addi.n a0, a3, -1 4000d671: 9a48 add.n a4, a8, a9 4000d673: 973407 bltu a4, a9, 0x4000d67e 4000d676: 57b404 bgeu a4, a5, 0x4000d67e 4000d679: 02c3fe addi a0, a3, -2 4000d67c: 4a49 add.n a4, a9, a4 4000d67e: b8a1 l32i.n a11, a1, 40 4000d680: 50d4c0 sub a13, a4, a5 4000d683: 00bb11 slli a11, a11, 16 4000d686: b0b020 or a11, a0, a11 4000d689: b9b1 s32i.n a11, a1, 44 4000d68b: 2d0d mov.n a2, a13 4000d68d: 3d0c mov.n a3, a12 4000d68f: c5b800 call0 __udivsi3 ; 0x4000e21c 4000d692: 3d0c mov.n a3, a12 4000d694: 29f1 s32i.n a2, a1, 60 4000d696: 226128 s32i a2, a1, 160 4000d699: e000f5 extui a0, a14, 16, 16 4000d69c: 026110 s32i a0, a1, 64 4000d69f: 2d0d mov.n a2, a13 4000d6a1: 45bc00 call0 __umodsi3 ; 0x4000e268 4000d6a4: 422128 l32i a4, a1, 160 4000d6a7: d8e1 l32i.n a13, a1, 56 4000d6a9: 522110 l32i a5, a1, 64 4000d6ac: 006211 slli a6, a2, 16 4000d6af: 605520 or a5, a5, a6 4000d6b2: 526114 s32i a5, a1, 80 4000d6b5: 400d82 mull a0, a13, a4 4000d6b8: 07b522 bgeu a5, a0, 0x4000d6de 4000d6bb: 88d1 l32i.n a8, a1, 52 4000d6bd: 0b94 addi.n a9, a4, -1 4000d6bf: 99f1 s32i.n a9, a1, 60 4000d6c1: 8a75 add.n a7, a5, a8 4000d6c3: 726114 s32i a7, a1, 80 4000d6c6: 873714 bltu a7, a8, 0x4000d6de 4000d6c9: a22114 l32i a10, a1, 80 4000d6cc: 07ba0e bgeu a10, a0, 0x4000d6de 4000d6cf: b22114 l32i a11, a1, 80 4000d6d2: 32c4fe addi a3, a4, -2 4000d6d5: 28d1 l32i.n a2, a1, 52 4000d6d7: 39f1 s32i.n a3, a1, 60 4000d6d9: bab2 add.n a11, a2, a11 4000d6db: b26114 s32i a11, a1, 80 4000d6de: 222114 l32i a2, a1, 80 4000d6e1: 3d0c mov.n a3, a12 4000d6e3: 0022c0 sub a2, a2, a0 4000d6e6: 226114 s32i a2, a1, 80 4000d6e9: 05b300 call0 __udivsi3 ; 0x4000e21c 4000d6ec: e0e0f4 extui a14, a14, 0, 16 4000d6ef: 22612a s32i a2, a1, 168 4000d6f2: 226129 s32i a2, a1, 164 4000d6f5: 3d0c mov.n a3, a12 4000d6f7: 222114 l32i a2, a1, 80 4000d6fa: c5b600 call0 __umodsi3 ; 0x4000e268 4000d6fd: 02212a l32i a0, a1, 168 4000d700: 005211 slli a5, a2, 16 4000d703: 422129 l32i a4, a1, 164 4000d706: 505e20 or a5, a14, a5 4000d709: 408d82 mull a8, a13, a4 4000d70c: 87b52c bgeu a5, a8, 0x4000d73c 4000d70f: 68d1 l32i.n a6, a1, 52 4000d711: 0b04 addi.n a0, a4, -1 4000d713: 6a55 add.n a5, a5, a6 4000d715: 673523 bltu a5, a6, 0x4000d73c 4000d718: 87b520 bgeu a5, a8, 0x4000d73c 4000d71b: 38b1 l32i.n a3, a1, 44 4000d71d: c2211f l32i a12, a1, 124 4000d720: d22120 l32i a13, a1, 128 4000d723: e22121 l32i a14, a1, 132 4000d726: 02c4fe addi a0, a4, -2 4000d729: 28f1 l32i.n a2, a1, 60 4000d72b: 42a0c0 movi a4, 192 4000d72e: 002211 slli a2, a2, 16 4000d731: 202020 or a2, a0, a2 4000d734: 02211e l32i a0, a1, 120 4000d737: 4a11 add.n a1, a1, a4 4000d739: 0df0 ret.n 4000d73b: 00 4000d73c: 38b1 l32i.n a3, a1, 44 4000d73e: c2211f l32i a12, a1, 124 4000d741: d22120 l32i a13, a1, 128 4000d744: e22121 l32i a14, a1, 132 4000d747: 28f1 l32i.n a2, a1, 60 4000d749: 42a0c0 movi a4, 192 4000d74c: 002211 slli a2, a2, 16 4000d74f: 202020 or a2, a0, a2 4000d752: 02211e l32i a0, a1, 120 4000d755: 4a11 add.n a1, a1, a4 4000d757: 0df0 ret.n 4000d759: 0c02 movi.n a2, 0 4000d75b: 0c03 movi.n a3, 0 4000d75d: c2211f l32i a12, a1, 124 4000d760: d22120 l32i a13, a1, 128 4000d763: e22121 l32i a14, a1, 132 4000d766: 42a0c0 movi a4, 192 4000d769: 02211e l32i a0, a1, 120 4000d76c: 4a11 add.n a1, a1, a4 4000d76e: 0df0 ret.n ; does u_long = u_long % u_long __umoddi3: 4000d770: 62a0b0 movi a6, 176 4000d773: 6011c0 sub a1, a1, a6 4000d776: 5931 s32i.n a5, a1, 12 4000d778: 4921 s32i.n a4, a1, 8 4000d77a: 3911 s32i.n a3, a1, 4 4000d77c: 02611f s32i a0, a1, 124 4000d77f: d26121 s32i a13, a1, 132 4000d782: c26120 s32i a12, a1, 128 4000d785: e26122 s32i a14, a1, 136 4000d788: f26123 s32i a15, a1, 140 4000d78b: ed02 mov.n a14, a2 4000d78d: fd04 mov.n a15, a4 4000d78f: cd03 mov.n a12, a3 4000d791: dd03 mov.n a13, a3 4000d793: 0d02 mov.n a0, a2 4000d795: 0901 s32i.n a0, a1, 0 4000d797: 403420 or a3, a4, a4 4000d79a: 16b51e beqz a5, 0x4000d989 4000d79d: 57bc02 bgeu a12, a5, 0x4000d7a3 4000d7a0: 067300 j 0x4000d970 4000d7a3: 426129 s32i a4, a1, 164 4000d7a6: 02612a s32i a0, a1, 168 4000d7a9: f0f540 nsau a15, a5 4000d7ac: 565f04 bnez a15, 0x4000d7f5 4000d7af: c73505 bltu a5, a12, 0x4000d7b8 4000d7b2: 47b202 bgeu a2, a4, 0x4000d7b8 4000d7b5: c60301 j 0x4000dbc8 4000d7b8: 3020c0 sub a2, a0, a3 4000d7bb: 27301a bltu a0, a2, 0x4000d7d9 4000d7be: d22121 l32i a13, a1, 132 4000d7c1: e22122 l32i a14, a1, 136 4000d7c4: f22123 l32i a15, a1, 140 4000d7c7: 500cc0 sub a0, a12, a5 4000d7ca: 42a0b0 movi a4, 176 4000d7cd: c22120 l32i a12, a1, 128 4000d7d0: 3d00 mov.n a3, a0 4000d7d2: 02211f l32i a0, a1, 124 4000d7d5: 4a11 add.n a1, a1, a4 4000d7d7: 0df0 ret.n 4000d7d9: d22121 l32i a13, a1, 132 4000d7dc: e22122 l32i a14, a1, 136 4000d7df: f22123 l32i a15, a1, 140 4000d7e2: 500cc0 sub a0, a12, a5 4000d7e5: 42a0b0 movi a4, 176 4000d7e8: c22120 l32i a12, a1, 128 4000d7eb: 0b30 addi.n a3, a0, -1 4000d7ed: 02211f l32i a0, a1, 124 4000d7f0: 4a11 add.n a1, a1, a4 4000d7f2: 0df0 ret.n 4000d7f4: 00 4000d7f5: d22129 l32i a13, a1, 164 4000d7f8: ed02 mov.n a14, a2 4000d7fa: 2c04 movi.n a4, 32 4000d7fc: f044c0 sub a4, a4, a15 4000d7ff: 000440 ssr a4 4000d802: 426117 s32i a4, a1, 92 4000d805: c02091 srl a2, a12 4000d808: 001f40 ssl a15 4000d80b: 226118 s32i a2, a1, 96 4000d80e: d03581 src a3, a5, a13 4000d811: 32611d s32i a3, a1, 116 4000d814: 3030f5 extui a3, a3, 16, 16 4000d817: 32611e s32i a3, a1, 120 4000d81a: 05a000 call0 __udivsi3 ; 0x4000e21c 4000d81d: 322117 l32i a3, a1, 92 4000d820: 22611a s32i a2, a1, 104 4000d823: 226126 s32i a2, a1, 152 4000d826: 001f40 ssl a15 4000d829: 00cca1 sll a12, a12 4000d82c: 222118 l32i a2, a1, 96 4000d82f: 000340 ssr a3 4000d832: e00091 srl a0, a14 4000d835: 32211e l32i a3, a1, 120 4000d838: 00cc20 or a12, a12, a0 4000d83b: c26119 s32i a12, a1, 100 4000d83e: c0c0f5 extui a12, a12, 16, 16 4000d841: 45a200 call0 __umodsi3 ; 0x4000e268 4000d844: 004211 slli a4, a2, 16 4000d847: 022126 l32i a0, a1, 152 4000d84a: 22211d l32i a2, a1, 116 4000d84d: 404c20 or a4, a12, a4 4000d850: cd04 mov.n a12, a4 4000d852: 2020f4 extui a2, a2, 0, 16 4000d855: 22611b s32i a2, a1, 108 4000d858: 002282 mull a2, a2, a0 4000d85b: 27b41b bgeu a4, a2, 0x4000d87a 4000d85e: 0b60 addi.n a6, a0, -1 4000d860: 52211d l32i a5, a1, 116 4000d863: 62611a s32i a6, a1, 104 4000d866: 4ac5 add.n a12, a5, a4 4000d868: 573c0e bltu a12, a5, 0x4000d87a 4000d86b: 27bc0b bgeu a12, a2, 0x4000d87a 4000d86e: 82c0fe addi a8, a0, -2 4000d871: 72211d l32i a7, a1, 116 4000d874: 82611a s32i a8, a1, 104 4000d877: c0c780 add a12, a7, a12 4000d87a: 32211e l32i a3, a1, 120 4000d87d: 20ccc0 sub a12, a12, a2 4000d880: c02c20 or a2, a12, a12 4000d883: 859900 call0 __udivsi3 ; 0x4000e21c 4000d886: 32211e l32i a3, a1, 120 4000d889: 226128 s32i a2, a1, 160 4000d88c: 226127 s32i a2, a1, 156 4000d88f: 922119 l32i a9, a1, 100 4000d892: 2d0c mov.n a2, a12 4000d894: 9090f4 extui a9, a9, 0, 16 4000d897: 92611c s32i a9, a1, 112 4000d89a: c59c00 call0 __umodsi3 ; 0x4000e268 4000d89d: 022128 l32i a0, a1, 160 4000d8a0: 42211a l32i a4, a1, 104 4000d8a3: 322127 l32i a3, a1, 156 4000d8a6: 006211 slli a6, a2, 16 4000d8a9: 52211c l32i a5, a1, 112 4000d8ac: 22211b l32i a2, a1, 108 4000d8af: 605520 or a5, a5, a6 4000d8b2: cd05 mov.n a12, a5 4000d8b4: 302282 mull a2, a2, a3 4000d8b7: 27b511 bgeu a5, a2, 0x4000d8cc 4000d8ba: 72211d l32i a7, a1, 116 4000d8bd: 0b03 addi.n a0, a3, -1 4000d8bf: 5ac7 add.n a12, a7, a5 4000d8c1: 773c07 bltu a12, a7, 0x4000d8cc 4000d8c4: 27bc04 bgeu a12, a2, 0x4000d8cc 4000d8c7: 02c3fe addi a0, a3, -2 4000d8ca: cac7 add.n a12, a7, a12 4000d8cc: 20ccc0 sub a12, a12, a2 4000d8cf: 001f40 ssl a15 4000d8d2: 002411 slli a2, a4, 16 4000d8d5: 00dda1 sll a13, a13 4000d8d8: 3d0d mov.n a3, a13 4000d8da: 202020 or a2, a0, a2 4000d8dd: 054100 call0 __umulsidi3 ; 0x4000dcf0 4000d8e0: 5d02 mov.n a5, a2 4000d8e2: 0d03 mov.n a0, a3 4000d8e4: 373c10 bltu a12, a3, 0x4000d8f8 4000d8e7: 001f40 ssl a15 4000d8ea: 004ea1 sll a4, a14 4000d8ed: 379c20 bne a12, a3, 0x4000d911 4000d8f0: 27b41d bgeu a4, a2, 0x4000d911 4000d8f3: c60100 j 0x4000d8fe 4000d8f6: 0000 4000d8f8: 001f40 ssl a15 4000d8fb: 004ea1 sll a4, a14 4000d8fe: 0c13 movi.n a3, 1 4000d900: d025c0 sub a2, a5, a13 4000d903: 273501 bltu a5, a2, 0x4000d908 4000d906: 0c03 movi.n a3, 0 4000d908: 52211d l32i a5, a1, 116 4000d90b: 5050c0 sub a5, a0, a5 4000d90e: 3035c0 sub a3, a5, a3 4000d911: 303cc0 sub a3, a12, a3 4000d914: 022117 l32i a0, a1, 92 4000d917: 2054c0 sub a5, a4, a2 4000d91a: 573427 bltu a4, a5, 0x4000d945 4000d91d: e22122 l32i a14, a1, 136 4000d920: d22121 l32i a13, a1, 132 4000d923: c22120 l32i a12, a1, 128 4000d926: 001040 ssl a0 4000d929: 0043a1 sll a4, a3 4000d92c: 02211f l32i a0, a1, 124 4000d92f: 000f40 ssr a15 4000d932: 303091 srl a3, a3 4000d935: 502091 srl a2, a5 4000d938: f22123 l32i a15, a1, 140 4000d93b: 402220 or a2, a2, a4 4000d93e: 42a0b0 movi a4, 176 4000d941: 4a11 add.n a1, a1, a4 4000d943: 0df0 ret.n 4000d945: c22120 l32i a12, a1, 128 4000d948: d22121 l32i a13, a1, 132 4000d94b: e22122 l32i a14, a1, 136 4000d94e: 001040 ssl a0 4000d951: 0b33 addi.n a3, a3, -1 4000d953: 02211f l32i a0, a1, 124 4000d956: 0043a1 sll a4, a3 4000d959: 000f40 ssr a15 4000d95c: 303091 srl a3, a3 4000d95f: 502091 srl a2, a5 4000d962: f22123 l32i a15, a1, 140 4000d965: 402220 or a2, a2, a4 4000d968: 42a0b0 movi a4, 176 4000d96b: 4a11 add.n a1, a1, a4 4000d96d: 0df0 ret.n 4000d96f: 00 4000d970: 02211f l32i a0, a1, 124 4000d973: d22121 l32i a13, a1, 132 4000d976: e22122 l32i a14, a1, 136 4000d979: f22123 l32i a15, a1, 140 4000d97c: 3d0c mov.n a3, a12 4000d97e: 42a0b0 movi a4, 176 4000d981: c22120 l32i a12, a1, 128 4000d984: 4a11 add.n a1, a1, a4 4000d986: 0df0 ret.n 4000d988: 00 4000d989: 473c02 bltu a12, a4, 0x4000d98f 4000d98c: 062a00 j 0x4000da38 4000d98f: 20f440 nsau a2, a4 4000d992: 29b1 s32i.n a2, a1, 44 4000d994: 8cc2 beqz.n a2, 0x4000d9a4 4000d996: 29b1 s32i.n a2, a1, 44 4000d998: 001240 ssl a2 4000d99b: 00f4a1 sll a15, a4 4000d99e: 00dc81 src a13, a12, a0 4000d9a1: 00e0a1 sll a14, a0 4000d9a4: 2d0d mov.n a2, a13 4000d9a6: e040f5 extui a4, a14, 16, 16 4000d9a9: f030f5 extui a3, a15, 16, 16 4000d9ac: 326114 s32i a3, a1, 80 4000d9af: 426112 s32i a4, a1, 72 4000d9b2: 458b00 call0 __umodsi3 ; 0x4000e268 4000d9b5: 322114 l32i a3, a1, 80 4000d9b8: c22112 l32i a12, a1, 72 4000d9bb: 000211 slli a0, a2, 16 4000d9be: f050f4 extui a5, a15, 0, 16 4000d9c1: 526111 s32i a5, a1, 68 4000d9c4: 2d0d mov.n a2, a13 4000d9c6: 00cc20 or a12, a12, a0 4000d9c9: c9e1 s32i.n a12, a1, 56 4000d9cb: 058500 call0 __udivsi3 ; 0x4000e21c 4000d9ce: 022111 l32i a0, a1, 68 4000d9d1: 200082 mull a0, a0, a2 4000d9d4: 07bc0b bgeu a12, a0, 0x4000d9e3 4000d9d7: c8e1 l32i.n a12, a1, 56 4000d9d9: facc add.n a12, a12, a15 4000d9db: f73c04 bltu a12, a15, 0x4000d9e3 4000d9de: 07bc01 bgeu a12, a0, 0x4000d9e3 4000d9e1: cacf add.n a12, a15, a12 4000d9e3: e0d0f4 extui a13, a14, 0, 16 4000d9e6: 322114 l32i a3, a1, 80 4000d9e9: 00ccc0 sub a12, a12, a0 4000d9ec: 2d0c mov.n a2, a12 4000d9ee: 858700 call0 __umodsi3 ; 0x4000e268 4000d9f1: 00e211 slli a14, a2, 16 4000d9f4: 322114 l32i a3, a1, 80 4000d9f7: 2d0c mov.n a2, a12 4000d9f9: e0ed20 or a14, a13, a14 4000d9fc: dd0e mov.n a13, a14 4000d9fe: c58100 call0 __udivsi3 ; 0x4000e21c 4000da01: 022111 l32i a0, a1, 68 4000da04: 200082 mull a0, a0, a2 4000da07: 07be09 bgeu a14, a0, 0x4000da14 4000da0a: fade add.n a13, a14, a15 4000da0c: f73d04 bltu a13, a15, 0x4000da14 4000da0f: 07bd01 bgeu a13, a0, 0x4000da14 4000da12: dadf add.n a13, a15, a13 4000da14: c22120 l32i a12, a1, 128 4000da17: e22122 l32i a14, a1, 136 4000da1a: f22123 l32i a15, a1, 140 4000da1d: 42a0b0 movi a4, 176 4000da20: 002dc0 sub a2, a13, a0 4000da23: 38b1 l32i.n a3, a1, 44 4000da25: 02211f l32i a0, a1, 124 4000da28: d22121 l32i a13, a1, 132 4000da2b: 000340 ssr a3 4000da2e: 202091 srl a2, a2 4000da31: 0c03 movi.n a3, 0 4000da33: 4a11 add.n a1, a1, a4 4000da35: 0df0 ret.n 4000da37: 00 4000da38: 02612a s32i a0, a1, 168 4000da3b: 56b400 bnez a4, 0x4000da4a 4000da3e: 22a001 movi a2, 1 4000da41: 857d00 call0 __udivsi3 ; 0x4000e21c 4000da44: 02212a l32i a0, a1, 168 4000da47: 20f220 or a15, a2, a2 4000da4a: 40ff40 nsau a4, a15 4000da4d: dc14 bnez.n a4, 0x4000da62 4000da4f: 49b1 s32i.n a4, a1, 44 4000da51: f0d0f4 extui a13, a15, 0, 16 4000da54: f04cc0 sub a4, a12, a15 4000da57: 426115 s32i a4, a1, 84 4000da5a: f0c0f5 extui a12, a15, 16, 16 4000da5d: c62800 j 0x4000db04 4000da60: 0000 4000da62: 49b1 s32i.n a4, a1, 44 4000da64: 2c03 movi.n a3, 32 4000da66: 001440 ssl a4 4000da69: 00ffa1 sll a15, a15 4000da6c: 4033c0 sub a3, a3, a4 4000da6f: 000340 ssr a3 4000da72: c02091 srl a2, a12 4000da75: 29c1 s32i.n a2, a1, 48 4000da77: 001440 ssl a4 4000da7a: 00e0a1 sll a14, a0 4000da7d: 00dc81 src a13, a12, a0 4000da80: d26115 s32i a13, a1, 84 4000da83: f0c0f5 extui a12, a15, 16, 16 4000da86: d0d0f5 extui a13, a13, 16, 16 4000da89: 3d0c mov.n a3, a12 4000da8b: c57d00 call0 __umodsi3 ; 0x4000e268 4000da8e: 004211 slli a4, a2, 16 4000da91: 3d0c mov.n a3, a12 4000da93: 28c1 l32i.n a2, a1, 48 4000da95: 404d20 or a4, a13, a4 4000da98: 4991 s32i.n a4, a1, 36 4000da9a: 426110 s32i a4, a1, 64 4000da9d: f0d0f4 extui a13, a15, 0, 16 4000daa0: 857700 call0 __udivsi3 ; 0x4000e21c 4000daa3: 522110 l32i a5, a1, 64 4000daa6: 200d82 mull a0, a13, a2 4000daa9: 07b511 bgeu a5, a0, 0x4000dabe 4000daac: 66fa9168 ; l32r 4000dab0: 626110f7360707b6046a8f826110 4000dabe: 3d0c mov.n a3, a12 4000dac0: 922115 l32i a9, a1, 84 4000dac3: 222110 l32i a2, a1, 64 4000dac6: 9090f4 extui a9, a9, 0, 16 4000dac9: 0022c0 sub a2, a2, a0 4000dacc: 226110 s32i a2, a1, 64 4000dacf: 99d1 s32i.n a9, a1, 52 4000dad1: 457900 call0 __umodsi3 ; 0x4000e268 4000dad4: 3d0c mov.n a3, a12 4000dad6: 00b211 slli a11, a2, 16 4000dad9: a8d1 l32i.n a10, a1, 52 4000dadb: 222110 l32i a2, a1, 64 4000dade: b0aa20 or a10, a10, a11 4000dae1: a9a1 s32i.n a10, a1, 40 4000dae3: a26125 s32i a10, a1, 148 4000dae6: 457300 call0 __udivsi3 ; 0x4000e21c 4000dae9: 022125 l32i a0, a1, 148 4000daec: 202d82 mull a2, a13, a2 4000daef: 27b00b bgeu a0, a2, 0x4000dafe 4000daf2: 08a1 l32i.n a0, a1, 40 4000daf4: fa00 add.n a0, a0, a15 4000daf6: f73004 bltu a0, a15, 0x4000dafe 4000daf9: 27b001 bgeu a0, a2, 0x4000dafe 4000dafc: 0a0f add.n a0, a15, a0 4000dafe: 2030c0 sub a3, a0, a2 4000db01: 326115 s32i a3, a1, 84 4000db04: 222115 l32i a2, a1, 84 4000db07: 3d0c mov.n a3, a12 4000db09: e040f5 extui a4, a14, 16, 16 4000db0c: 426112 s32i a4, a1, 72 4000db0f: 857500 call0 __umodsi3 ; 0x4000e268 4000db12: 3d0c mov.n a3, a12 4000db14: 006211 slli a6, a2, 16 4000db17: 522112 l32i a5, a1, 72 4000db1a: 222115 l32i a2, a1, 84 4000db1d: 605520 or a5, a5, a6 4000db20: 59f1 s32i.n a5, a1, 60 4000db22: 526116 s32i a5, a1, 88 4000db25: 456f00 call0 __udivsi3 ; 0x4000e21c 4000db28: 722116 l32i a7, a1, 88 4000db2b: 200d82 mull a0, a13, a2 4000db2e: 07b712 bgeu a7, a0, 0x4000db44 4000db31: 88f1 l32i.n a8, a1, 60 4000db33: fa88 add.n a8, a8, a15 4000db35: 826116 s32i a8, a1, 88 4000db38: f73808 bltu a8, a15, 0x4000db44 4000db3b: 07b805 bgeu a8, a0, 0x4000db44 4000db3e: 80af80 add a10, a15, a8 4000db41: a26116 s32i a10, a1, 88 4000db44: 3d0c mov.n a3, a12 4000db46: 222116 l32i a2, a1, 88 4000db49: e0b0f4 extui a11, a14, 0, 16 4000db4c: b26113 s32i a11, a1, 76 4000db4f: 0022c0 sub a2, a2, a0 4000db52: 226116 s32i a2, a1, 88 4000db55: 057100 call0 __umodsi3 ; 0x4000e268 4000db58: e8b1 l32i.n a14, a1, 44 4000db5a: 002211 slli a2, a2, 16 4000db5d: 022113 l32i a0, a1, 76 4000db60: 3d0c mov.n a3, a12 4000db62: 200020 or a0, a0, a2 4000db65: 222116 l32i a2, a1, 88 4000db68: 0981 s32i.n a0, a1, 32 4000db6a: 026124 s32i a0, a1, 144 4000db6d: c56a00 call0 __udivsi3 ; 0x4000e21c 4000db70: 022124 l32i a0, a1, 144 4000db73: 202d82 mull a2, a13, a2 4000db76: 27b02c bgeu a0, a2, 0x4000dba6 4000db79: 0881 l32i.n a0, a1, 32 4000db7b: fa00 add.n a0, a0, a15 4000db7d: f73025 bltu a0, a15, 0x4000dba6 4000db80: 27b022 bgeu a0, a2, 0x4000dba6 4000db83: 0c03 movi.n a3, 0 4000db85: c22120 l32i a12, a1, 128 4000db88: d22121 l32i a13, a1, 132 4000db8b: 42a0b0 movi a4, 176 4000db8e: 000e40 ssr a14 4000db91: 0a0f add.n a0, a15, a0 4000db93: e22122 l32i a14, a1, 136 4000db96: f22123 l32i a15, a1, 140 4000db99: 2020c0 sub a2, a0, a2 4000db9c: 202091 srl a2, a2 4000db9f: 02211f l32i a0, a1, 124 4000dba2: 4a11 add.n a1, a1, a4 4000dba4: 0df0 ret.n 4000dba6: 0c03 movi.n a3, 0 4000dba8: c22120 l32i a12, a1, 128 4000dbab: d22121 l32i a13, a1, 132 4000dbae: f22123 l32i a15, a1, 140 4000dbb1: 42a0b0 movi a4, 176 4000dbb4: 2020c0 sub a2, a0, a2 4000dbb7: 000e40 ssr a14 4000dbba: 02211f l32i a0, a1, 124 4000dbbd: e22122 l32i a14, a1, 136 4000dbc0: 202091 srl a2, a2 4000dbc3: 4a11 add.n a1, a1, a4 4000dbc5: 0df0 ret.n 4000dbc7: 00 4000dbc8: 02211f l32i a0, a1, 124 4000dbcb: c22120 l32i a12, a1, 128 4000dbce: e22122 l32i a14, a1, 136 4000dbd1: f22123 l32i a15, a1, 140 4000dbd4: 3d0d mov.n a3, a13 4000dbd6: 42a0b0 movi a4, 176 4000dbd9: d22121 l32i a13, a1, 132 4000dbdc: 4a11 add.n a1, a1, a4 4000dbde: 0df0 ret.n _xtos_alloca_handler: 4000dbe0: 003000 rfe 4000dbe3: 00 _xtos_syscall_handler: 4000dbe4: 30b103 rsr.epc1 a3 4000dbe7: 2851 l32i.n a2, a1, 20 ; why ? 4000dbe9: 3b33 addi.n a3, a3, 3 4000dbeb: 30b113 wsr.epc1 a3 4000dbee: 3861 l32i.n a3, a1, 24 4000dbf0: 7cf2 movi.n a2, -1 4000dbf2: 12d101 addmi a1, a1, 0x100 4000dbf5: 003000 rfe _xtos_p_none: 4000dbf8: 0df0 ret.n 4000dbfa: 0000 _xtos_set_intlevel: 4000dbfc: 30e603 rsr.ps a3 4000dbff: 7c04 movi.n a4, -16 4000dc01: 202034 extui a2, a2, 0, 4 4000dc04: 304410 and a4, a4, a3 4000dc07: 204420 or a4, a4, a2 4000dc0a: 40e613 wsr.ps a4 4000dc0d: 302034 extui a2, a3, 0, 4 4000dc10: 102000 rsync 4000dc13: 0df0 ret.n 4000dc15: 000000 _xtos_set_min_intlevel: 4000dc18: 30e603 rsr.ps a3 4000dc1b: 7c04 movi.n a4, -16 4000dc1d: 202034 extui a2, a2, 0, 4 4000dc20: 305034 extui a5, a3, 0, 4 4000dc23: 5052c0 sub a5, a2, a5 4000dc26: 304410 and a4, a4, a3 4000dc29: 204420 or a4, a4, a2 4000dc2c: 5043a3 movltz a4, a3, a5 4000dc2f: 40e613 wsr.ps a4 4000dc32: 302034 extui a2, a3, 0, 4 4000dc35: 102000 rsync 4000dc38: 0df0 ret.n 4000dc3a: 0000 _xtos_unhandled_interrupt: 4000dc3c: f04100 break 1, 15 ; breakpoint exception 4000dc3f: 0df0 ret.n 4000dc41: 000000 _xtos_unhandled_exception: 4000dc44: 2851 l32i.n a2, a1, 20 4000dc46: 3861 l32i.n a3, a1, 24 4000dc48: 12d101 addmi a1, a1, 0x100 4000dc4b: 104100 break 1, 1 ; breakpoint exception 4000dc4e: 003000 rfe 4000dc51: 000000 ; Used by the following to return from an exception. ; _xtos_l1int_handler xtos_return_from_exc: 4000dc54: 0841 l32i.n a0, a1, 16 4000dc56: 4871 l32i.n a4, a1, 28 4000dc58: 5881 l32i.n a5, a1, 32 4000dc5a: 6891 l32i.n a6, a1, 36 4000dc5c: 78a1 l32i.n a7, a1, 40 4000dc5e: 88b1 l32i.n a8, a1, 44 4000dc60: 98c1 l32i.n a9, a1, 48 4000dc62: a8d1 l32i.n a10, a1, 52 4000dc64: b8e1 l32i.n a11, a1, 56 4000dc66: c8f1 l32i.n a12, a1, 60 4000dc68: d22110 l32i a13, a1, 64 4000dc6b: e22111 l32i a14, a1, 68 4000dc6e: f22112 l32i a15, a1, 72 4000dc71: 2801 l32i.n a2, a1, 0 4000dc73: 3811 l32i.n a3, a1, 4 4000dc75: 20b113 wsr.epc1 a2 4000dc78: 30e613 wsr.ps a3 4000dc7b: 2851 l32i.n a2, a1, 20 4000dc7d: 3861 l32i.n a3, a1, 24 4000dc7f: 102000 rsync 4000dc82: 12d101 addmi a1, a1, 0x100 4000dc85: 003000 rfe ; does int = int / int __divsi3: 4000dc88: 307230 xor a7, a2, a3 4000dc8b: 206160 abs a6, a2 4000dc8e: 303160 abs a3, a3 4000dc91: b62337 bltui a3, 2, 0x4000dccc 4000dc94: 605141 srli a5, a6, 1 4000dc97: 37353d bltu a5, a3, 0x4000dcd8 4000dc9a: 50f640 nsau a5, a6 4000dc9d: 40f340 nsau a4, a3 4000dca0: 5044c0 sub a4, a4, a5 4000dca3: 001440 ssl a4 4000dca6: 0033a1 sll a3, a3 4000dca9: 22a000 movi a2, 0 4000dcac: 373604 bltu a6, a3, 0x4000dcb4 4000dcaf: 3066c0 sub a6, a6, a3 4000dcb2: 1b22 addi.n a2, a2, 1 4000dcb4: f02211 slli a2, a2, 1 4000dcb7: 303141 srli a3, a3, 1 4000dcba: 0b44 addi.n a4, a4, -1 4000dcbc: 56c4fe bnez a4, 0x4000dcac 4000dcbf: 373601 bltu a6, a3, 0x4000dcc4 4000dcc2: 1b22 addi.n a2, a2, 1 4000dcc4: 205060 neg a5, a2 4000dcc7: 7025a3 movltz a2, a5, a7 4000dcca: 0df0 ret.n 4000dccc: 9c53 beqz.n a3, 0x4000dce5 4000dcce: 602060 neg a2, a6 4000dcd1: 7026b3 movgez a2, a6, a7 4000dcd4: 0df0 ret.n 4000dcd6: 0000 4000dcd8: 373610 bltu a6, a3, 0x4000dcec 4000dcdb: 0c12 movi.n a2, 1 4000dcdd: 7cf4 movi.n a4, -1 4000dcdf: 7024a3 movltz a2, a4, a7 4000dce2: 0df0 ret.n 4000dce4: 0000000044495630 ; ?? 4000dcec: 0c02 movi.n a2, 0 ; ?? 4000dcee: 0df0 ret.n ; Multiply ; ; __umulsidi3 does longlong = long * long ; Used many places. __umulsidi3: 4000dcf0: 12c1e0 addi a1, a1, -32 4000dcf3: c941 s32i.n a12, a1, 16 4000dcf5: d951 s32i.n a13, a1, 20 4000dcf7: e961 s32i.n a14, a1, 24 4000dcf9: f971 s32i.n a15, a1, 28 4000dcfb: 2040f5 extui a4, a2, 16, 16 4000dcfe: 3050f5 extui a5, a3, 16, 16 4000dd01: 5062c1 mul16u a6, a2, a5 4000dd04: 30b4c1 mul16u a11, a4, a3 4000dd07: 0c09 movi.n a9, 0 4000dd09: ba66 add.n a6, a6, a11 4000dd0b: b7b602 bgeu a6, a11, 0x4000dd11 4000dd0e: 92c901 addi a9, a9, 1 4000dd11: 104040 ssai 16 4000dd14: 609981 src a9, a9, a6 4000dd17: 30b2c1 mul16u a11, a2, a3 4000dd1a: 0066a1 sll a6, a6 4000dd1d: ba66 add.n a6, a6, a11 4000dd1f: b7b601 bgeu a6, a11, 0x4000dd24 4000dd22: 1b99 addi.n a9, a9, 1 4000dd24: 5034c1 mul16u a3, a4, a5 4000dd27: 9a33 add.n a3, a3, a9 4000dd29: 2d06 mov.n a2, a6 4000dd2b: c841 l32i.n a12, a1, 16 4000dd2d: d851 l32i.n a13, a1, 20 4000dd2f: e861 l32i.n a14, a1, 24 4000dd31: f871 l32i.n a15, a1, 28 4000dd33: 12c120 addi a1, a1, 32 4000dd36: 0df0 ret.n xthal_get_ccount: 4000dd38: 20ea03 rsr.ccount a2 4000dd3b: 0df0 ret.n 4000dd3d: 000000 xthal_set_ccompare: 4000dd40: cc42 bnez.n a2, 0x4000dd48 4000dd42: 30f013 wsr.ccompare0 a3 4000dd45: 002000 isync 4000dd48: 0df0 ret.n 4000dd4a: 0000 ; XXX - testing a2 up front seems odd and broken ; so this only works when called with a zero argument ; as if it allows multiple compare regs, but handles only one. xthal_get_ccompare: 4000dd4c: cc42 bnez.n a2, 0x4000dd54 4000dd4e: 20f003 rsr.ccompare0 a2 4000dd51: 0df0 ret.n 4000dd53: 00 4000dd54: 0c02 movi.n a2, 0 4000dd56: 0df0 ret.n xthal_get_interrupt: 4000dd58: 20e203 rsr.interrupt a2 4000dd5b: 0df0 ret.n 4000dd5d: 000000 xthal_set_intclear: 4000dd60: 20e313 wsr.intclear a2 4000dd63: 0df0 ret.n 4000dd65: 000000 rc4_skip: 4000dd68: 0c0a movi.n a10, 0 4000dd6a: 72a120 movi a7, 0x120 4000dd6d: 7011c0 sub a1, a1, a7 4000dd70: c26142 s32i a12, a1, 0x108 4000dd73: 026141 s32i a0, a1, 0x104 4000dd76: 109120 or a9, a1, a1 4000dd79: e26144 s32i a14, a1, 0x110 4000dd7c: d26143 s32i a13, a1, 0x10c 4000dd7f: 526140 s32i a5, a1, 0x100 4000dd82: 1b0a addi.n a0, a10, 1 4000dd84: a24900 s8i a10, a9, 0 4000dd87: 024901 s8i a0, a9, 1 4000dd8a: 2b99 addi.n a9, a9, 2 4000dd8c: 2baa addi.n a10, a10, 2 4000dd8e: 66faf0 bnei a10, 0x100, 0x4000dd82 4000dd91: dd01 mov.n a13, a1 4000dd93: e2d101 addmi a14, a1, 0x100 4000dd96: 9d01 mov.n a9, a1 4000dd98: 0c00 movi.n a0, 0 4000dd9a: 0c05 movi.n a5, 0 4000dd9c: 0c0a movi.n a10, 0 4000dd9e: aa72 add.n a7, a2, a10 4000dda0: 1bca addi.n a12, a10, 1 4000dda2: ad05 mov.n a10, a5 4000dda4: b20900 l8ui a11, a9, 0 4000dda7: 720700 l8ui a7, a7, 0 4000ddaa: 0a0b add.n a0, a11, a0 4000ddac: 0a07 add.n a0, a7, a0 4000ddae: 000074 extui a0, a0, 0, 8 4000ddb1: da80 add.n a8, a0, a13 4000ddb3: 37bc01 bgeu a12, a3, 0x4000ddb8 4000ddb6: ad0c mov.n a10, a12 4000ddb8: aa72 add.n a7, a2, a10 4000ddba: c20800 l8ui a12, a8, 0 4000ddbd: c24900 s8i a12, a9, 0 4000ddc0: b24800 s8i a11, a8, 0 4000ddc3: 1bca addi.n a12, a10, 1 4000ddc5: 1b99 addi.n a9, a9, 1 4000ddc7: ad05 mov.n a10, a5 4000ddc9: e799d7 bne a9, a14, 0x4000dda4 4000ddcc: 16d40a beqz a4, 0x4000de7d 4000ddcf: 0c0a movi.n a10, 0 4000ddd1: 0c00 movi.n a0, 0 4000ddd3: 0c02 movi.n a2, 0 4000ddd5: 405141 srli a5, a4, 1 4000ddd8: 076412 bbci a4, 0, 0x4000ddee 4000dddb: 0c1a movi.n a10, 1 4000dddd: 020d01 l8ui a0, a13, 1 4000dde0: 0c12 movi.n a2, 1 4000dde2: d0e080 add a14, a0, a13 4000dde5: 320e00 l8ui a3, a14, 0 4000dde8: 324d01 s8i a3, a13, 1 4000ddeb: 024e00 s8i a0, a14, 0 4000ddee: bc75 beqz.n a5, 0x4000de29 4000ddf0: 1b8a addi.n a8, a10, 1 4000ddf2: 808074 extui a8, a8, 0, 8 4000ddf5: 1ba8 addi.n a10, a8, 1 4000ddf7: a0a074 extui a10, a10, 0, 8 4000ddfa: da88 add.n a8, a8, a13 4000ddfc: 320800 l8ui a3, a8, 0 4000ddff: daba add.n a11, a10, a13 4000de01: 0a03 add.n a0, a3, a0 4000de03: 000074 extui a0, a0, 0, 8 4000de06: da50 add.n a5, a0, a13 4000de08: 720500 l8ui a7, a5, 0 4000de0b: 724800 s8i a7, a8, 0 4000de0e: 324500 s8i a3, a5, 0 4000de11: 720b00 l8ui a7, a11, 0 4000de14: 2b22 addi.n a2, a2, 2 4000de16: 0a07 add.n a0, a7, a0 4000de18: 000074 extui a0, a0, 0, 8 4000de1b: da80 add.n a8, a0, a13 4000de1d: 920800 l8ui a9, a8, 0 4000de20: 924b00 s8i a9, a11, 0 4000de23: 724800 s8i a7, a8, 0 4000de26: 2794c6 bne a4, a2, 0x4000ddf0 4000de29: 522140 l32i a5, a1, 0x100 4000de2c: bc86 beqz.n a6, 0x4000de68 4000de2e: 22a000 movi a2, 0 4000de31: 1baa addi.n a10, a10, 1 4000de33: a0a074 extui a10, a10, 0, 8 4000de36: daba add.n a11, a10, a13 4000de38: c20b00 l8ui a12, a11, 0 4000de3b: 0a0c add.n a0, a12, a0 4000de3d: 000074 extui a0, a0, 0, 8 4000de40: dae0 add.n a14, a0, a13 4000de42: 320e00 l8ui a3, a14, 0 4000de45: 324b00 s8i a3, a11, 0 4000de48: c24e00 s8i a12, a14, 0 4000de4b: b20b00 l8ui a11, a11, 0 4000de4e: 920500 l8ui a9, a5, 0 4000de51: cabb add.n a11, a11, a12 4000de53: b0b074 extui a11, a11, 0, 8 4000de56: babd add.n a11, a13, a11 4000de58: b20b00 l8ui a11, a11, 0 4000de5b: 1b22 addi.n a2, a2, 1 4000de5d: b09930 xor a9, a9, a11 4000de60: 924500 s8i a9, a5, 0 4000de63: 1b55 addi.n a5, a5, 1 4000de65: 2796c8 bne a6, a2, 0x4000de31 4000de68: 0c02 movi.n a2, 0 4000de6a: c22142 l32i a12, a1, 0x108 4000de6d: d22143 l32i a13, a1, 0x10c 4000de70: e22144 l32i a14, a1, 0x110 4000de73: 32a120 movi a3, 0x120 4000de76: 022141 l32i a0, a1, 0x104 4000de79: 3a11 add.n a1, a1, a3 4000de7b: 0df0 ret.n 4000de7d: 0c0a movi.n a10, 0 4000de7f: 0c00 movi.n a0, 0 4000de81: 06e9ff j 0x4000de29 bzero: 4000de84: 9cc3 beqz.n a3, 0x4000dea4 4000de86: 0c08 movi.n a8, 0 4000de88: 3a72 add.n a7, a2, a3 4000de8a: 6d02 mov.n a6, a2 4000de8c: 076304 bbci a3, 0, 0x4000de94 4000de8f: 824200 s8i a8, a2, 0 4000de92: 1b62 addi.n a6, a2, 1 4000de94: 302141 srli a2, a3, 1 4000de97: 8c92 beqz.n a2, 0x4000dea4 4000de99: 824600 s8i a8, a6, 0 4000de9c: 824601 s8i a8, a6, 1 4000de9f: 2b66 addi.n a6, a6, 2 4000dea1: 7796f4 bne a6, a7, 0x4000de99 4000dea4: 0df0 ret.n 4000dea6: 0000 memcmp: 4000dea8: b64436 bltui a4, 4, 0x4000dee2 4000deab: 205320 or a5, a3, a2 4000deae: 505014 extui a5, a5, 0, 2 4000deb1: ecd5 bnez.n a5, 0x4000dee2 4000deb3: 0c0a movi.n a10, 0 4000deb5: 8d02 mov.n a8, a2 4000deb7: 307320 or a7, a3, a3 4000deba: 9d04 mov.n a9, a4 4000debc: b807 l32i.n a11, a7, 0 4000debe: 6808 l32i.n a6, a8, 0 4000dec0: 1baa addi.n a10, a10, 1 4000dec2: b79616 bne a6, a11, 0x4000dedc 4000dec5: 72c704 addi a7, a7, 4 4000dec8: 4b88 addi.n a8, a8, 4 4000deca: 92c9fc addi a9, a9, -4 4000decd: f649eb bgeui a9, 4, 0x4000debc 4000ded0: 208aa0 addx4 a8, a10, a2 4000ded3: 307aa0 addx4 a7, a10, a3 4000ded6: e09a11 slli a9, a10, 2 4000ded9: 9094c0 sub a9, a4, a9 4000dedc: 3d07 mov.n a3, a7 4000dede: 2d08 mov.n a2, a8 4000dee0: 4d09 mov.n a4, a9 4000dee2: 0c07 movi.n a7, 0 4000dee4: 9c04 beqz.n a4, 0x4000def8 4000dee6: 2a97 add.n a9, a7, a2 4000dee8: 3a87 add.n a8, a7, a3 4000deea: 820800 l8ui a8, a8, 0 4000deed: 920900 l8ui a9, a9, 0 4000def0: 1b77 addi.n a7, a7, 1 4000def2: 879906 bne a9, a8, 0x4000defc 4000def5: 4797ed bne a7, a4, 0x4000dee6 4000def8: 0c02 movi.n a2, 0 4000defa: 0df0 ret.n 4000defc: 8029c0 sub a2, a9, a8 4000deff: 0df0 ret.n 4000df01: 00000000 4000df05: 8cd4 beqz.n a4, 0x4000df16 4000df07: 4a73 add.n a7, a3, a4 4000df09: 620300 l8ui a6, a3, 0 4000df0c: 1b33 addi.n a3, a3, 1 4000df0e: 624500 s8i a6, a5, 0 4000df11: 1b55 addi.n a5, a5, 1 4000df13: 7723f2 blt a3, a7, 0x4000df09 4000df16: 0df0 ret.n 4000df18: b674e9 bltui a4, 7, 0x4000df05 4000df1b: 620300 l8ui a6, a3, 0 4000df1e: 1b33 addi.n a3, a3, 1 4000df20: 42c4ff addi a4, a4, -1 4000df23: 624500 s8i a6, a5, 0 4000df26: 52c501 addi a5, a5, 1 4000df29: 176524 bbci a5, 1, 0x4000df51 4000df2c: b664d5 bltui a4, 6, 0x4000df05 4000df2f: 620300 l8ui a6, a3, 0 4000df32: 720301 l8ui a7, a3, 1 4000df35: 2b33 addi.n a3, a3, 2 4000df37: 42c4fe addi a4, a4, -2 4000df3a: 624500 s8i a6, a5, 0 4000df3d: 724501 s8i a7, a5, 1 4000df40: 2b55 addi.n a5, a5, 2 4000df42: c60200 j 0x4000df51 4000df45: 000000 memcpy: 4000df48: 205220 or a5, a2, a2 4000df4b: 07e2c9 bbsi a2, 0, 0x4000df18 4000df4e: 17e2da bbsi a2, 1, 0x4000df2c 4000df51: 407441 srli a7, a4, 4 4000df54: 0c38 movi.n a8, 3 4000df56: 878362 bany a3, a8, 0x4000dfbc 4000df59: 9cc7 beqz.n a7, 0x4000df79 4000df5b: c08711 slli a8, a7, 4 4000df5e: 3a88 add.n a8, a8, a3 4000df60: 6803 l32i.n a6, a3, 0 4000df62: 7813 l32i.n a7, a3, 4 4000df64: 6905 s32i.n a6, a5, 0 4000df66: 6823 l32i.n a6, a3, 8 4000df68: 7915 s32i.n a7, a5, 4 4000df6a: 7833 l32i.n a7, a3, 12 4000df6c: 6925 s32i.n a6, a5, 8 4000df6e: 32c310 addi a3, a3, 16 4000df71: 7935 s32i.n a7, a5, 12 4000df73: 52c510 addi a5, a5, 16 4000df76: 8723e6 blt a3, a8, 0x4000df60 4000df79: 37640b bbci a4, 3, 0x4000df88 4000df7c: 6803 l32i.n a6, a3, 0 4000df7e: 7813 l32i.n a7, a3, 4 4000df80: 8b33 addi.n a3, a3, 8 4000df82: 6905 s32i.n a6, a5, 0 4000df84: 7915 s32i.n a7, a5, 4 4000df86: 8b55 addi.n a5, a5, 8 4000df88: 27e408 bbsi a4, 2, 0x4000df94 4000df8b: 17e415 bbsi a4, 1, 0x4000dfa4 4000df8e: 07e422 bbsi a4, 0, 0x4000dfb4 4000df91: 0df0 ret.n 4000df93: 00 4000df94: 6803 l32i.n a6, a3, 0 4000df96: 4b33 addi.n a3, a3, 4 4000df98: 6905 s32i.n a6, a5, 0 4000df9a: 4b55 addi.n a5, a5, 4 4000df9c: 17e404 bbsi a4, 1, 0x4000dfa4 4000df9f: 07e411 bbsi a4, 0, 0x4000dfb4 4000dfa2: 0df0 ret.n 4000dfa4: 621300 l16ui a6, a3, 0 4000dfa7: 2b33 addi.n a3, a3, 2 4000dfa9: 625500 s16i a6, a5, 0 4000dfac: 2b55 addi.n a5, a5, 2 4000dfae: 07e402 bbsi a4, 0, 0x4000dfb4 4000dfb1: 0df0 ret.n 4000dfb3: 00 4000dfb4: 620300 l8ui a6, a3, 0 4000dfb7: 624500 s8i a6, a5, 0 4000dfba: 0df0 ret.n 4000dfbc: 16a4ff beqz a4, 0x4000dfba 4000dfbf: 002340 ssa8l a3 4000dfc2: 80b310 and a11, a3, a8 4000dfc5: b033c0 sub a3, a3, a11 4000dfc8: 6803 l32i.n a6, a3, 0 4000dfca: aca7 beqz.n a7, 0x4000dff8 4000dfcc: c0a711 slli a10, a7, 4 4000dfcf: 30aa80 add a10, a10, a3 4000dfd2: 7813 l32i.n a7, a3, 4 4000dfd4: 8823 l32i.n a8, a3, 8 4000dfd6: 606781 src a6, a7, a6 4000dfd9: 6905 s32i.n a6, a5, 0 4000dfdb: 9833 l32i.n a9, a3, 12 4000dfdd: 707881 src a7, a8, a7 4000dfe0: 7915 s32i.n a7, a5, 4 4000dfe2: 6843 l32i.n a6, a3, 16 4000dfe4: 808981 src a8, a9, a8 4000dfe7: 8925 s32i.n a8, a5, 8 4000dfe9: 32c310 addi a3, a3, 16 4000dfec: 909681 src a9, a6, a9 4000dfef: 926503 s32i a9, a5, 12 4000dff2: 52c510 addi a5, a5, 16 4000dff5: a723d9 blt a3, a10, 0x4000dfd2 4000dff8: 376414 bbci a4, 3, 0x4000e010 4000dffb: 7813 l32i.n a7, a3, 4 4000dffd: 8823 l32i.n a8, a3, 8 4000dfff: 606781 src a6, a7, a6 4000e002: 6905 s32i.n a6, a5, 0 4000e004: 8b33 addi.n a3, a3, 8 4000e006: 707881 src a7, a8, a7 4000e009: 7915 s32i.n a7, a5, 4 4000e00b: 8b55 addi.n a5, a5, 8 4000e00d: 806820 or a6, a8, a8 4000e010: 27640c bbci a4, 2, 0x4000e020 4000e013: 7813 l32i.n a7, a3, 4 4000e015: 4b33 addi.n a3, a3, 4 4000e017: 606781 src a6, a7, a6 4000e01a: 6905 s32i.n a6, a5, 0 4000e01c: 4b55 addi.n a5, a5, 4 4000e01e: 6d07 mov.n a6, a7 4000e020: ba33 add.n a3, a3, a11 4000e022: 17e406 bbsi a4, 1, 0x4000e02c 4000e025: 07e418 bbsi a4, 0, 0x4000e041 4000e028: 0df0 ret.n 4000e02a: 0000 4000e02c: 620300 l8ui a6, a3, 0 4000e02f: 720301 l8ui a7, a3, 1 4000e032: 2b33 addi.n a3, a3, 2 4000e034: 624500 s8i a6, a5, 0 4000e037: 724501 s8i a7, a5, 1 4000e03a: 2b55 addi.n a5, a5, 2 4000e03c: 07e401 bbsi a4, 0, 0x4000e041 4000e03f: 0df0 ret.n 4000e041: 620300 l8ui a6, a3, 0 4000e044: 624500 s8i a6, a5, 0 4000e047: 0df0 ret.n 4000e049: 000000 memmove: 4000e04c: 8d03 mov.n a8, a3 4000e04e: 9d02 mov.n a9, a2 4000e050: 27b341 bgeu a3, a2, 0x4000e095 4000e053: 3a74 add.n a7, a4, a3 4000e055: 77b23c bgeu a2, a7, 0x4000e095 4000e058: e61402 bgei a4, 1, 0x4000e05e 4000e05b: 463f00 j 0x4000e15c 4000e05e: 82c380 addi a8, a3, -128 4000e061: 72c780 addi a7, a7, -128 4000e064: 2a34 add.n a3, a4, a2 4000e066: 07640a bbci a4, 0, 0x4000e074 4000e069: 32c3ff addi a3, a3, -1 4000e06c: 52077f l8ui a5, a7, 127 4000e06f: 0b77 addi.n a7, a7, -1 4000e071: 524300 s8i a5, a3, 0 4000e074: 406141 srli a6, a4, 1 4000e077: 16160e beqz a6, 0x4000e15c 4000e07a: a2077f l8ui a10, a7, 127 4000e07d: 0bb3 addi.n a11, a3, -1 4000e07f: 72c7fe addi a7, a7, -2 4000e082: 32c3fe addi a3, a3, -2 4000e085: a24b00 s8i a10, a11, 0 4000e088: 920780 l8ui a9, a7, 128 4000e08b: 924300 s8i a9, a3, 0 4000e08e: 8797e8 bne a7, a8, 0x4000e07a 4000e091: c63100 j 0x4000e15c 4000e094: 00 4000e095: f6b402 bgeui a4, 16, 0x4000e09b 4000e098: 062400 j 0x4000e12c 4000e09b: 205320 or a5, a3, a2 4000e09e: 505014 extui a5, a5, 0, 2 4000e0a1: 567508 bnez a5, 0x4000e12c 4000e0a4: 7d02 mov.n a7, a2 4000e0a6: 8d03 mov.n a8, a3 4000e0a8: 0c06 movi.n a6, 0 4000e0aa: 409441 srli a9, a4, 4 4000e0ad: 47641b bbci a4, 4, 0x4000e0cc 4000e0b0: 42c4f0 addi a4, a4, -16 4000e0b3: 82c310 addi a8, a3, 16 4000e0b6: 7803 l32i.n a7, a3, 0 4000e0b8: 6813 l32i.n a6, a3, 4 4000e0ba: b833 l32i.n a11, a3, 12 4000e0bc: 5823 l32i.n a5, a3, 8 4000e0be: 5922 s32i.n a5, a2, 8 4000e0c0: b932 s32i.n a11, a2, 12 4000e0c2: 6912 s32i.n a6, a2, 4 4000e0c4: 7902 s32i.n a7, a2, 0 4000e0c6: 62a001 movi a6, 1 4000e0c9: 72c210 addi a7, a2, 16 4000e0cc: 90a141 srli a10, a9, 1 4000e0cf: acda beqz.n a10, 0x4000e100 4000e0d1: 2b66 addi.n a6, a6, 2 4000e0d3: 42c4e0 addi a4, a4, -32 4000e0d6: a838 l32i.n a10, a8, 12 4000e0d8: b808 l32i.n a11, a8, 0 4000e0da: 5818 l32i.n a5, a8, 4 4000e0dc: 9828 l32i.n a9, a8, 8 4000e0de: 9927 s32i.n a9, a7, 8 4000e0e0: 5917 s32i.n a5, a7, 4 4000e0e2: b907 s32i.n a11, a7, 0 4000e0e4: a937 s32i.n a10, a7, 12 4000e0e6: b878 l32i.n a11, a8, 28 4000e0e8: 5868 l32i.n a5, a8, 24 4000e0ea: 9858 l32i.n a9, a8, 20 4000e0ec: a848 l32i.n a10, a8, 16 4000e0ee: a947 s32i.n a10, a7, 16 4000e0f0: 9957 s32i.n a9, a7, 20 4000e0f2: 526706 s32i a5, a7, 24 4000e0f5: b977 s32i.n a11, a7, 28 4000e0f7: 82c820 addi a8, a8, 32 4000e0fa: 72c720 addi a7, a7, 32 4000e0fd: f6b4d0 bgeui a4, 16, 0x4000e0d1 4000e100: b6445a bltui a4, 4, 0x4000e15e 4000e103: 0c07 movi.n a7, 0 4000e105: e08611 slli a8, a6, 2 4000e108: 3098a0 addx4 a9, a8, a3 4000e10b: 2088a0 addx4 a8, a8, a2 4000e10e: 1b77 addi.n a7, a7, 1 4000e110: 42c4fc addi a4, a4, -4 4000e113: a809 l32i.n a10, a9, 0 4000e115: a908 s32i.n a10, a8, 0 4000e117: 4b99 addi.n a9, a9, 4 4000e119: 4b88 addi.n a8, a8, 4 4000e11b: f644ef bgeui a4, 4, 0x4000e10e 4000e11e: c09611 slli a9, a6, 4 4000e121: 3a89 add.n a8, a9, a3 4000e123: 8087a0 addx4 a8, a7, a8 4000e126: 209980 add a9, a9, a2 4000e129: 9097a0 addx4 a9, a7, a9 4000e12c: a6142c blti a4, 1, 0x4000e15c 4000e12f: 8aa4 add.n a10, a4, a8 4000e131: 3d09 mov.n a3, a9 4000e133: 7d08 mov.n a7, a8 4000e135: 405121 srai a5, a4, 1 4000e138: 07640a bbci a4, 0, 0x4000e146 4000e13b: 1b39 addi.n a3, a9, 1 4000e13d: 72c801 addi a7, a8, 1 4000e140: b20800 l8ui a11, a8, 0 4000e143: b24900 s8i a11, a9, 0 4000e146: 162501 beqz a5, 0x4000e15c 4000e149: 820700 l8ui a8, a7, 0 4000e14c: 824300 s8i a8, a3, 0 4000e14f: 620701 l8ui a6, a7, 1 4000e152: 624301 s8i a6, a3, 1 4000e155: 2b77 addi.n a7, a7, 2 4000e157: 2b33 addi.n a3, a3, 2 4000e159: a797ec bne a7, a10, 0x4000e149 4000e15c: 0df0 ret.n 4000e15e: 0c07 movi.n a7, 0 4000e160: 86eeff j 0x4000e11e 4000e163: 0000 4000e165: 8c84 beqz.n a4, 0x4000e171 4000e167: 4a65 add.n a6, a5, a4 4000e169: 324500 s8i a3, a5, 0 4000e16c: 1b55 addi.n a5, a5, 1 4000e16e: 6725f7 blt a5, a6, 0x4000e169 4000e171: 0df0 ret.n 4000e173: 00 4000e174: b684ed bltui a4, 8, 0x4000e165 4000e177: 324500 s8i a3, a5, 0 4000e17a: 1b55 addi.n a5, a5, 1 4000e17c: 0b44 addi.n a4, a4, -1 4000e17e: 176526 bbci a5, 1, 0x4000e1a8 4000e181: b684e0 bltui a4, 8, 0x4000e165 4000e184: 325500 s16i a3, a5, 0 4000e187: 2b55 addi.n a5, a5, 2 4000e189: 42c4fe addi a4, a4, -2 4000e18c: 060600 j 0x4000e1a8 4000e18f: 00 memset: 4000e190: 303074 extui a3, a3, 0, 8 4000e193: 807311 slli a7, a3, 8 4000e196: 703320 or a3, a3, a7 4000e199: 007311 slli a7, a3, 16 4000e19c: 703320 or a3, a3, a7 4000e19f: 205220 or a5, a2, a2 4000e1a2: 07e2ce bbsi a2, 0, 0x4000e174 4000e1a5: 17e2d8 bbsi a2, 1, 0x4000e181 4000e1a8: 407441 srli a7, a4, 4 4000e1ab: 9c17 beqz.n a7, 0x4000e1c0 4000e1ad: c06711 slli a6, a7, 4 4000e1b0: 5a66 add.n a6, a6, a5 4000e1b2: 3905 s32i.n a3, a5, 0 4000e1b4: 3915 s32i.n a3, a5, 4 4000e1b6: 3925 s32i.n a3, a5, 8 4000e1b8: 3935 s32i.n a3, a5, 12 4000e1ba: 52c510 addi a5, a5, 16 4000e1bd: 6725f1 blt a5, a6, 0x4000e1b2 4000e1c0: 376405 bbci a4, 3, 0x4000e1c9 4000e1c3: 3905 s32i.n a3, a5, 0 4000e1c5: 3915 s32i.n a3, a5, 4 4000e1c7: 8b55 addi.n a5, a5, 8 4000e1c9: 276403 bbci a4, 2, 0x4000e1d0 4000e1cc: 3905 s32i.n a3, a5, 0 4000e1ce: 4b55 addi.n a5, a5, 4 4000e1d0: 176404 bbci a4, 1, 0x4000e1d8 4000e1d3: 325500 s16i a3, a5, 0 4000e1d6: 2b55 addi.n a5, a5, 2 4000e1d8: 076402 bbci a4, 0, 0x4000e1de 4000e1db: 324500 s8i a3, a5, 0 4000e1de: 0df0 ret.n strstr: 4000e1e0: 420200 l8ui a4, a2, 0 4000e1e3: 8d02 mov.n a8, a2 4000e1e5: ac84 beqz.n a4, 0x4000e211 4000e1e7: 0c09 movi.n a9, 0 4000e1e9: 0c06 movi.n a6, 0 4000e1eb: c60600 j 0x4000e20a 4000e1ee: 6a73 add.n a7, a3, a6 4000e1f0: 720700 l8ui a7, a7, 0 4000e1f3: 6aa8 add.n a10, a8, a6 4000e1f5: 9c47 beqz.n a7, 0x4000e20d 4000e1f7: a20a00 l8ui a10, a10, 0 4000e1fa: 1b66 addi.n a6, a6, 1 4000e1fc: 771aee beq a10, a7, 0x4000e1ee 4000e1ff: 1b99 addi.n a9, a9, 1 4000e201: 2a89 add.n a8, a9, a2 4000e203: b20800 l8ui a11, a8, 0 4000e206: 0c06 movi.n a6, 0 4000e208: 8cab beqz.n a11, 0x4000e216 4000e20a: 06f8ff j 0x4000e1ee 4000e20d: 2a29 add.n a2, a9, a2 4000e20f: 0df0 ret.n 4000e211: 420300 l8ui a4, a3, 0 4000e214: 8c24 beqz.n a4, 0x4000e21a 4000e216: 0c02 movi.n a2, 0 4000e218: 0df0 ret.n 4000e21a: 0df0 ret.n ; unsigned int = unsigned int / unsigned int __udivsi3: 4000e21c: b62330 bltui a3, 2, 0x4000e250 4000e21f: 6d02 mov.n a6, a2 4000e221: 50f640 nsau a5, a6 4000e224: 40f340 nsau a4, a3 4000e227: 47b529 bgeu a5, a4, 0x4000e254 4000e22a: 5044c0 sub a4, a4, a5 4000e22d: 001440 ssl a4 4000e230: 0033a1 sll a3, a3 4000e233: 0c02 movi.n a2, 0 4000e235: 373604 bltu a6, a3, 0x4000e23d 4000e238: 3066c0 sub a6, a6, a3 4000e23b: 1b22 addi.n a2, a2, 1 4000e23d: f02211 slli a2, a2, 1 4000e240: 303141 srli a3, a3, 1 4000e243: 0b44 addi.n a4, a4, -1 4000e245: 56c4fe bnez a4, 0x4000e235 4000e248: 373601 bltu a6, a3, 0x4000e24d 4000e24b: 1b22 addi.n a2, a2, 1 4000e24d: 0df0 ret.n 4000e24f: 00 4000e250: 8c93 beqz.n a3, 0x4000e25d 4000e252: 0df0 ret.n 4000e254: 37360c bltu a6, a3, 0x4000e264 4000e257: 0c12 movi.n a2, 1 4000e259: 0df0 ret.n 4000e25b: 000000000044495630 ; We actually branch here ! 4000e264: 0c02 movi.n a2, 0 ; DIV0 4000e266: 0df0 ret.n ; unsigned int = unsigned int % unsigned int __umodsi3: 4000e268: b62328 bltui a3, 2, 0x4000e294 4000e26b: 50f240 nsau a5, a2 4000e26e: 40f340 nsau a4, a3 4000e271: 47b517 bgeu a5, a4, 0x4000e28c 4000e274: 5044c0 sub a4, a4, a5 4000e277: 001440 ssl a4 4000e27a: 0033a1 sll a3, a3 4000e27d: 373202 bltu a2, a3, 0x4000e283 4000e280: 3022c0 sub a2, a2, a3 4000e283: 303141 srli a3, a3, 1 4000e286: 42c4ff addi a4, a4, -1 4000e289: 5604ff bnez a4, 0x4000e27d 4000e28c: 373202 bltu a2, a3, 0x4000e292 4000e28f: 3022c0 sub a2, a2, a3 4000e292: 0df0 ret.n 4000e294: cc53 bnez.n a3, 0x4000e29d ; We actually fall through to here ! 4000e296: 000000 ill 4000e299: 444956 lsi f4, a9, 0x158 ; DIV0 4000e29c: 300c02 andb b0, b12, b3 4000e29f: 0df0 ret.n 4000e296: 00000044495630 4000e29d: 0c02 movi.n a2, 0 4000e29f: 0df0 ret.n 4000e2a1: 000000 ; unsigned integer -> single-precision conversion __floatunsisf: 4000e2a4: bc62 beqz.n a2, 0x4000e2de 4000e2a6: 0c07 movi.n a7, 0 4000e2a8: 060200 j 0x4000e2b4 4000e2ab: 00 ; integer -> single-precision conversion __floatsisf: 4000e2ac: ace2 beqz.n a2, 0x4000e2de 4000e2ae: 207f05 extui a7, a2, 31, 1 4000e2b1: 202160 abs a2, a2 4000e2b4: 40f240 nsau a4, a2 4000e2b7: 001440 ssl a4 4000e2ba: 0052a1 sll a5, a2 4000e2bd: 502841 srli a2, a5, 8 4000e2c0: 806501 slli a6, a5, 24 4000e2c3: 52a09d movi a5, 157 4000e2c6: 4055c0 sub a5, a5, a4 4000e2c9: 905501 slli a5, a5, 23 4000e2cc: 5a22 add.n a2, a2, a5 4000e2ce: 107701 slli a7, a7, 31 4000e2d1: 702220 or a2, a2, a7 4000e2d4: d66600 bgez a6, 0x4000e2de 4000e2d7: 1b22 addi.n a2, a2, 1 4000e2d9: f06611 slli a6, a6, 1 4000e2dc: 8c06 beqz.n a6, 0x4000e2e0 4000e2de: 0df0 ret.n 4000e2e0: 202141 srli a2, a2, 1 4000e2e3: f02211 slli a2, a2, 1 4000e2e6: 0df0 ret.n ; unsigned integer to double-precision conversion __floatunsidf: 4000e2e8: ace2 beqz.n a2, 0x4000e31a 4000e2ea: 0c07 movi.n a7, 0 4000e2ec: 060200 j 0x4000e2f8 4000e2ef: 00 ; integer -> double-precision conversion __floatsidf: 4000e2f0: ac62 beqz.n a2, 0x4000e31a 4000e2f2: 207f05 extui a7, a2, 31, 1 4000e2f5: 202160 abs a2, a2 4000e2f8: 40f240 nsau a4, a2 4000e2fb: 001440 ssl a4 4000e2fe: 0052a1 sll a5, a2 4000e301: 503b41 srli a3, a5, 11 4000e304: b02501 slli a2, a5, 21 4000e307: 52a41d movi a5, 0x41d 4000e30a: 4055c0 sub a5, a5, a4 4000e30d: c05501 slli a5, a5, 20 4000e310: 5a33 add.n a3, a3, a5 4000e312: 107701 slli a7, a7, 31 4000e315: 703320 or a3, a3, a7 4000e318: 0df0 ret.n 4000e31a: 0c03 movi.n a3, 0 4000e31c: 0df0 ret.n 4000e31e: 0000 xthal_window_spill_nw: 4000e320: 0c02 movi.n a2, 0 4000e322: 0df0 ret.n xthal_window_spill: 4000e324: 0df0 ret.n 4000e326: 0000 ; ---------------------------------------------------------------- ; ---------------------------------------------------------------- ; Here we have an 8 entry table to move stuff ; from the bootrom into data RAM ; Only the first 3 entries in the table actually do anything. ; Then there are 4 zero length entries, ; followed by an end sentinel of all zeros. 4000e328 <_rom_store_table>: 4000e328: 3fffc000 3fffc857 4000e388 4000e334: 3fffc860 3fffdaac 4000ebe8 4000e340: 3fffdaac 3fffdab0 4000fe34 4000e34c: 3fffdab0 3fffdab0 4000fe38 ; null 4000e358: 3fffdab0 3fffdab0 4000fe38 ; null 4000e364: 3fffdab0 3fffdab0 4000fe38 ; null 4000e370: 3fffdab0 3fffdab0 4000fe38 ; null 4000e37c: 00000000 00000000 00000000 ; END ; The clever reader will notice that all of these blocks get moved ; the same amount, in other words the whole mess could be moved ; as one big lump. Perhaps there is a reason to move it in three pieces. ; The real mystery is why all this fancy business, just code ; up memcpy in assembly and call it. ; Block 1: 4000e388 to 4000ebdf 74632 ; Block 2: 4000ebe8 to 4000fe34 74632 ; Block 3: 4000fe34 to 4000fe38 74632 ; I have translated these addresses to what they would be at their ; final relocated destination in RAM, since those addresses are what ; is referenced through the bootrom. ; These are the only defined symbols I have yet found for RAM objects. ; ; 3fffc714 flashchip ; 3fffccf0 Te0 ; 3fffd0f0 rcons ; 3fffd100 Td0 ; 3fffd500 Td4s ; 3fffde10 UartDev 4000e388 <_rom_store>: ; Block 1 ; 3fffc000 3fffc857 <-- 4000e388 3fffc000: 4000dc44 4000dbe4 4000dc44 4000dc44 D..@...@D..@D..@ 3fffc010: 4000048c 4000dbe0 4000dc44 4000dc44 ...@...@D..@D..@ 3fffc020: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc030: 40000590 40000590 40000590 40000590 ...@...@...@...@ 3fffc040: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc050: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc060: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc070: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc080: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc090: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0a0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0b0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0c0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0d0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0e0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc0f0: 4000dc44 4000dc44 4000dc44 4000dc44 D..@D..@D..@D..@ 3fffc100: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc110: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc120: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc130: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc140: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc150: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc160: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc170: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc180: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc190: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1a0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1b0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1c0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1d0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1e0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc1f0: 4000dbf8 4000dbf8 4000dbf8 4000dbf8 ...@...@...@...@ 3fffc200: 00000000 ffffffff 4000dc3c 0000000e ........<..@.... 3fffc210: 4000dc3c 0000000d 4000dc3c 0000000c <..@....<..@.... 3fffc220: 4000dc3c 0000000b 4000dc3c 0000000a <..@....<..@.... 3fffc230: 4000dc3c 00000009 4000dc3c 00000008 <..@....<..@.... 3fffc240: 4000dc3c 00000007 4000dc3c 00000006 <..@....<..@.... 3fffc250: 4000dc3c 00000005 4000dc3c 00000004 <..@....<..@.... 3fffc260: 4000dc3c 00000003 4000dc3c 00000002 <..@....<..@.... 3fffc270: 4000dc3c 00000001 4000dc3c 00000000 <..@....<..@.... 3fffc280: ffffc000 00004000 ffffc000 00002000 .....@....... .. 3fffc290: ffffe000 00001000 fffff000 00000800 ................ 3fffc2a0: fffff800 00000400 fffffc00 00000200 ................ 3fffc2b0: fffffe00 00000100 ffffff00 00000080 ................ 3fffc2c0: ffffff80 00000040 ffffffc0 00000020 ....@....... ... 3fffc2d0: ffffffe0 00000010 fffffff0 00000008 ................ 3fffc2e0: fffffff8 00000004 fffffffc 00000002 ................ 3fffc2f0: fffffffe 00000001 00000000 3fffc5e4 ...............? 3fffc300: 3fffc640 3fffc69c 00000000 00000000 @..?...?........ 3fffc310: 00000000 00000000 00000000 00000000 ................ 3fffc320: 00000000 00000000 00000000 3fffd670 ............p..? 3fffc330: 00000000 00000000 00000000 00000000 ................ 3fffc340: 00000000 00000000 00000000 00000000 ................ 3fffc350: 00000000 00000000 00000000 00000000 ................ 3fffc360: 00000000 00000000 00000000 00000000 ................ 3fffc370: 00000000 00000000 00000000 00000000 ................ 3fffc380: 00000000 00000000 00000000 00000000 ................ 3fffc390: 00000000 00000000 00000000 00000000 ................ 3fffc3a0: 00000001 00000000 abcd330e e66d1234 .........3..4.m. 3fffc3b0: 0005deec 0000000b 00000000 00000000 ................ 3fffc3c0: 00000000 00000000 00000000 00000000 ................ 3fffc3d0: 00000000 00000000 00000000 00000000 ................ 3fffc3e0: 00000000 00000000 00000000 00000000 ................ 3fffc3f0: 00000000 00000000 00000000 00000000 ................ 3fffc400: 00000000 00000000 00000000 00000000 ................ 3fffc410: 00000000 00000000 00000000 00000000 ................ 3fffc420: 00000000 00000000 00000000 00000000 ................ 3fffc430: 00000000 00000000 00000000 00000000 ................ 3fffc440: 00000000 00000000 00000000 00000000 ................ 3fffc450: 00000000 00000000 00000000 00000000 ................ 3fffc460: 00000000 00000000 00000000 00000000 ................ 3fffc470: 00000000 00000000 00000000 00000000 ................ 3fffc480: 00000000 00000000 00000000 00000000 ................ 3fffc490: 00000000 00000000 00000000 00000000 ................ 3fffc4a0: 00000000 00000000 00000000 00000000 ................ 3fffc4b0: 00000000 00000000 00000000 00000000 ................ 3fffc4c0: 00000000 00000000 00000000 00000000 ................ 3fffc4d0: 00000000 00000000 00000000 00000000 ................ 3fffc4e0: 00000000 00000000 00000000 00000000 ................ 3fffc4f0: 00000000 00000000 00000000 00000000 ................ 3fffc500: 00000000 00000000 00000000 00000000 ................ 3fffc510: 00000000 00000000 00000000 00000000 ................ 3fffc520: 00000000 00000000 00000000 00000000 ................ 3fffc530: 00000000 00000000 00000000 00000000 ................ 3fffc540: 00000000 00000000 00000000 00000000 ................ 3fffc550: 00000000 00000000 00000000 00000000 ................ 3fffc560: 00000000 00000000 00000000 00000000 ................ 3fffc570: 00000000 00000000 00000000 00000000 ................ 3fffc580: 00000000 00000000 00000000 00000000 ................ 3fffc590: 00000000 00000000 00000000 00000000 ................ 3fffc5a0: 00000000 00000000 00000000 00000000 ................ 3fffc5b0: 00000000 00000000 00000000 00000000 ................ 3fffc5c0: 00000000 00000000 00000000 00000000 ................ 3fffc5d0: 00000000 00000000 00000000 00000000 ................ 3fffc5e0: 00000000 00000000 00000000 00000000 ................ 3fffc5f0: 00000000 00000000 00000000 00000000 ................ 3fffc600: 00000000 00000000 00000000 00000000 ................ 3fffc610: 00000000 00000000 00000000 00000000 ................ 3fffc620: 00000000 00000000 00000000 00000000 ................ 3fffc630: 00000000 00000000 00000000 00000000 ................ 3fffc640: 00000000 00000000 00000000 00000000 ................ 3fffc650: 00000000 00000000 00000000 00000000 ................ 3fffc660: 00000000 00000000 00000000 00000000 ................ 3fffc670: 00000000 00000000 00000000 00000000 ................ 3fffc680: 00000000 00000000 00000000 00000000 ................ 3fffc690: 00000000 00000000 00000000 00000000 ................ 3fffc6a0: 00000000 00000000 00000000 00000000 ................ 3fffc6b0: 00000000 00000000 00000000 00000000 ................ 3fffc6c0: 00000000 00000000 00000000 00000000 ................ 3fffc6d0: 00000000 00000000 00000000 00000000 ................ 3fffc6e0: 00000000 00000000 00000000 00000000 ................ 3fffc6f0: 00000000 00000000 3fffc2f8 000000ff ...........?.... 3fffc700: 00007073 00000050 ffffffff 00000006 sp..P........... 3fffc710: 0000000c 3fffc718 001640ef 00400000 .......?.@....@. 3fffc720: 00010000 00001000 00000100 0000ffff ................ 3fffc730: 3fffc734 400060c0 400060d0 400060ec 4..?.`.@.`.@.`.@ 3fffc740: 4000610c 4000615c 00000000 400061b8 .a.@\a.@.....a.@ 3fffc750: 40006238 40006260 400062dc 40006394 8b.@`b.@.b.@.c.@ 3fffc760: 400063b0 40006400 40006430 40006484 .c.@.d.@0d.@.d.@ 3fffc770: 4000650c 40006550 400065a4 40006628 .e.@Pe.@.e.@(f.@ 3fffc780: 40006738 4000678c 400067c8 40006830 8g.@.g.@.g.@0h.@ 3fffc790: 00000000 00000000 40006874 400068b4 ........th.@.h.@ 3fffc7a0: 4000698c 40006a1c 40006a98 40006ad4 .i.@.j.@.j.@.j.@ 3fffc7b0: 40006b10 40006c50 40006f84 4000711c .k.@Pl.@.o.@.q.@ 3fffc7c0: 4000718c 40007268 4000729c 400072d8 .q.@hr.@.r.@.r.@ 3fffc7d0: 4000730c 4000737c 40007410 40007448 .s.@|s.@.t.@Ht.@ 3fffc7e0: 4000747c 400074d8 4000754c 40007610 |t.@.t.@Lu.@.v.@ 3fffc7f0: 40007648 40007688 400076cc 400076fc Hv.@.v.@.v.@.v.@ 3fffc800: 40007740 400077a0 40007804 4000781c @w.@.w.@.x.@.x.@ 3fffc810: 40007868 400078dc 40007968 40007a28 hx.@.x.@hy.@(z.@ 3fffc820: 40007bf0 40007eb4 4000804c 40008264 .{.@.~.@L..@d..@ 3fffc830: 40008388 40008610 400088b8 40008a70 ...@...@...@p..@ 3fffc840: 40008b6c 40008c6c 40008d34 00000000 l..@l..@4..@.... 3fffc850: 48505669 00323740 00000000 00000000 iVPH@72......... ; Block 2 ; 3fffc860 3fffdaac <-- 4000ebe8 3fffc860: 3fffc2f8 00000000 00000000 00000000 ...?............ 3fffc870: 5f737465 61706e75 665f6b63 6873616c ets_unpack_flash 3fffc880: 646f635f 00000065 00000000 00000000 _code........... 3fffc890: 40002012 40001fd9 40002012 40001fd9 . .@...@. .@...@ 3fffc8a0: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc8b0: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc8c0: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc8d0: 40001fd9 40001fd9 40001fd9 40002012 ...@...@...@. .@ 3fffc8e0: 40001fd9 40001fd9 40002012 40001fd9 ...@...@. .@...@ 3fffc8f0: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc900: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc910: 40002012 40001fd9 40002012 40001fd9 . .@...@. .@...@ 3fffc920: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc930: 40001fd9 40001fd9 40001fd9 40001fd9 ...@...@...@...@ 3fffc940: 40001fd9 40001fd9 40002010 40001fd9 ...@...@. .@...@ 3fffc950: 40001fd9 40001fd9 40001fd9 40002012 ...@...@...@. .@ 3fffc960: 40001fd9 40001fd9 40002012 00000000 ...@...@. .@.... 3fffc970: 4000225c 40002034 40002034 40002034 \".@4 .@4 .@4 .@ 3fffc980: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc990: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc9a0: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc9b0: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc9c0: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc9d0: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffc9e0: 40002034 40002049 40002243 400021b1 4 .@I .@C".@.!.@ 3fffc9f0: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca00: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca10: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca20: 40002034 40002034 4000222e 40002034 4 .@4 .@.".@4 .@ 3fffca30: 400021b1 40002034 40002034 400021b1 .!.@4 .@4 .@.!.@ 3fffca40: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca50: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca60: 40002034 40002049 40002243 400021b1 4 .@I .@C".@.!.@ 3fffca70: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca80: 40002034 40002034 40002034 40002034 4 .@4 .@4 .@4 .@ 3fffca90: 40002034 40002034 40002034 4000219c 4 .@4 .@4 .@.!.@ 3fffcaa0: 40002034 40002034 4000222e 40002034 4 .@4 .@.".@4 .@ 3fffcab0: 400021b1 40002034 40002034 400021b1 .!.@4 .@4 .@.!.@ 3fffcac0: 40002384 400020c4 400020c4 400020c4 .#.@. .@. .@. .@ 3fffcad0: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcae0: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcaf0: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcb00: 400020c4 40002384 400020c4 400020c4 . .@.#.@. .@. .@ 3fffcb10: 4000236c 400020c4 400020c4 400020c4 l#.@. .@. .@. .@ 3fffcb20: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcb30: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcb40: 40002384 400020c4 400020c4 400020c4 .#.@. .@. .@. .@ 3fffcb50: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcb60: 400020c4 400020c4 400020c4 400020c4 . .@. .@. .@. .@ 3fffcb70: 40002354 400020c4 400020c4 400020c4 T#.@. .@. .@. .@ 3fffcb80: 400020c4 40002384 400020c4 400020c4 . .@.#.@. .@. .@ 3fffcb90: 40002354 00000000 00000000 00000000 T#.@............ 3fffcba0: 40003435 40003435 40003500 400034eb 54.@54.@.5.@.4.@ 3fffcbb0: 400034d0 40003440 400034b9 400034a3 .4.@@4.@.4.@.4.@ 3fffcbc0: 4000348d 4000347d 40003468 40003455 .4.@}4.@h4.@U4.@ 3fffcbd0: 0c080400 19161310 24221f1c 2e2c2927 .........."$'),. 3fffcbe0: 40006ca5 40006d81 40006dc6 40006dc0 .l.@.m.@.m.@.m.@ 3fffcbf0: 40006dba 40006db4 40006dae 40006da8 .m.@.m.@.m.@.m.@ 3fffcc00: 40006da2 40006d9c 40006d96 40006d90 .m.@.m.@.m.@.m.@ 3fffcc10: 40006d8a 40006d84 00000000 00000000 .m.@.m.@........ 3fffcc20: 40006d70 40006dff 40006eb4 40006ea6 pm.@.m.@.n.@.n.@ 3fffcc30: 40006e98 40006e89 40006e78 40006e6a .n.@.n.@xn.@jn.@ 3fffcc40: 40006e5b 40006e4c 40006e3e 40006e2d [n.@Ln.@>n.@-n.@ 3fffcc50: 40006e1f 40006e0e 00000000 00000000 .n.@.n.@........ 3fffcc60: 40006df0 40006ec5 40006f55 40006f49 .m.@.n.@Uo.@Io.@ 3fffcc70: 40006f3d 40006f31 40006f25 40006f19 =o.@1o.@%o.@.o.@ 3fffcc80: 40006f0d 40006f01 40006ef5 40006ee9 .o.@.o.@.n.@.n.@ 3fffcc90: 40006edd 40006ed1 00000000 00000000 .n.@.n.@........ 3fffcca0: 40007005 400070cd 40007115 4000710f .p.@.p.@.q.@.q.@ 3fffccb0: 40007109 40007103 400070fd 400070f7 .q.@.q.@.p.@.p.@ 3fffccc0: 400070f1 400070eb 400070e5 400070df .p.@.p.@.p.@.p.@ 3fffccd0: 400070d9 400070d3 00000000 00000000 .p.@.p.@........ 3fffcce0: 05040200 0c0b0907 43800000 00000000 ...........C.... 3fffccf0: c66363a5 f87c7c84 ee777799 f67b7b8d .cc..||..ww..{{. 3fffcd00: fff2f20d d66b6bbd de6f6fb1 91c5c554 .....kk..oo.T... 3fffcd10: 60303050 02010103 ce6767a9 562b2b7d P00`.....gg.}++V 3fffcd20: e7fefe19 b5d7d762 4dababe6 ec76769a ....b......M.vv. 3fffcd30: 8fcaca45 1f82829d 89c9c940 fa7d7d87 E.......@....}}. 3fffcd40: effafa15 b25959eb 8e4747c9 fbf0f00b .....YY..GG..... 3fffcd50: 41adadec b3d4d467 5fa2a2fd 45afafea ...Ag......_...E 3fffcd60: 239c9cbf 53a4a4f7 e4727296 9bc0c05b ...#...S.rr.[... 3fffcd70: 75b7b7c2 e1fdfd1c 3d9393ae 4c26266a ...u.......=j&&L 3fffcd80: 6c36365a 7e3f3f41 f5f7f702 83cccc4f Z66lA??~....O... 3fffcd90: 6834345c 51a5a5f4 d1e5e534 f9f1f108 \44h...Q4....... 3fffcda0: e2717193 abd8d873 62313153 2a15153f .qq.s...S11b?..* 3fffcdb0: 0804040c 95c7c752 46232365 9dc3c35e ....R...e##F^... 3fffcdc0: 30181828 379696a1 0a05050f 2f9a9ab5 (..0...7......./ 3fffcdd0: 0e070709 24121236 1b80809b dfe2e23d ....6..$....=... 3fffcde0: cdebeb26 4e272769 7fb2b2cd ea75759f &...i''N.....uu. 3fffcdf0: 1209091b 1d83839e 582c2c74 341a1a2e ........t,,X...4 3fffce00: 361b1b2d dc6e6eb2 b45a5aee 5ba0a0fb -..6.nn..ZZ....[ 3fffce10: a45252f6 763b3b4d b7d6d661 7db3b3ce .RR.M;;va......} 3fffce20: 5229297b dde3e33e 5e2f2f71 13848497 {))R>...q//^.... 3fffce30: a65353f5 b9d1d168 00000000 c1eded2c .SS.h.......,... 3fffce40: 40202060 e3fcfc1f 79b1b1c8 b65b5bed ` @.......y.[[. 3fffce50: d46a6abe 8dcbcb46 67bebed9 7239394b .jj.F......gK99r 3fffce60: 944a4ade 984c4cd4 b05858e8 85cfcf4a .JJ..LL..XX.J... 3fffce70: bbd0d06b c5efef2a 4faaaae5 edfbfb16 k...*......O.... 3fffce80: 864343c5 9a4d4dd7 66333355 11858594 .CC..MM.U33f.... 3fffce90: 8a4545cf e9f9f910 04020206 fe7f7f81 .EE............. 3fffcea0: a05050f0 783c3c44 259f9fba 4ba8a8e3 .PP.D< 3fffd020: 964b4bdd 61bdbddc 0d8b8b86 0f8a8a85 .KK....a........ 3fffd030: e0707090 7c3e3e42 71b5b5c4 cc6666aa .pp.B>>|...q.ff. 3fffd040: 904848d8 06030305 f7f6f601 1c0e0e12 .HH............. 3fffd050: c26161a3 6a35355f ae5757f9 69b9b9d0 .aa._55j.WW....i 3fffd060: 17868691 99c1c158 3a1d1d27 279e9eb9 ....X...'..:...' 3fffd070: d9e1e138 ebf8f813 2b9898b3 22111133 8..........+3.." 3fffd080: d26969bb a9d9d970 078e8e89 339494a7 .ii.p..........3 3fffd090: 2d9b9bb6 3c1e1e22 15878792 c9e9e920 ...-"..<.... ... 3fffd0a0: 87cece49 aa5555ff 50282878 a5dfdf7a I....UU.x((Pz... 3fffd0b0: 038c8c8f 59a1a1f8 09898980 1a0d0d17 .......Y........ 3fffd0c0: 65bfbfda d7e6e631 844242c6 d06868b8 ...e1....BB..hh. 3fffd0d0: 824141c3 299999b0 5a2d2d77 1e0f0f11 .AA....)w--Z.... 3fffd0e0: 7bb0b0cb a85454fc 6dbbbbd6 2c16163a ...{.TT....m:.., 3fffd0f0: 08040201 80402010 0000361b 00000000 ..... @..6...... 3fffd100: 51f4a750 7e416553 1a17a4c3 3a275e96 P..QSeA~.....^': 3fffd110: 3bab6bcb 1f9d45f1 acfa58ab 4be30393 .k.;.E...X.....K 3fffd120: 2030fa55 ad766df6 88cc7691 f5024c25 U.0 .mv..v..%L.. 3fffd130: 4fe5d7fc c52acbd7 26354480 b562a38f ...O..*..D5&..b. 3fffd140: deb15a49 25ba1b67 45ea0e98 5dfec0e1 IZ..g..%...E...] 3fffd150: c32f7502 814cf012 8d4697a3 6bd3f9c6 .u/...L...F....k 3fffd160: 038f5fe7 15929c95 bf6d7aeb 955259da ._.......zm..YR. 3fffd170: d4be832d 587421d3 49e06929 8ec9c844 -....!tX)i.ID... 3fffd180: 75c2896a f48e7978 99583e6b 27b971dd j..uxy..k>X..q.' 3fffd190: bee14fb6 f088ad17 c920ac66 7dce3ab4 .O......f. ..:.} 3fffd1a0: 63df4a18 e51a3182 97513360 62537f45 .J.c.1..`3Q.E.Sb 3fffd1b0: b16477e0 bb6bae84 fe81a01c f9082b94 .wd...k......+.. 3fffd1c0: 70486858 8f45fd19 94de6c87 527bf8b7 XhHp..E..l....{R 3fffd1d0: ab73d323 724b02e2 e31f8f57 6655ab2a #.s...KrW...*.Uf 3fffd1e0: b2eb2807 2fb5c203 86c57b9a d33708a5 .(...../.{....7. 3fffd1f0: 302887f2 23bfa5b2 02036aba ed16825c ..(0...#.j..\... 3fffd200: 8acf1c2b a779b492 f307f2f0 4e69e2a1 +.....y.......iN 3fffd210: 65daf4cd 0605bed5 d134621f c4a6fe8a ...e.....b4..... 3fffd220: 342e539d a2f355a0 058ae132 a4f6eb75 .S.4.U..2...u... 3fffd230: 0b83ec39 4060efaa 5e719f06 bd6e1051 9.....`@..q^Q.n. 3fffd240: 3e218af9 96dd063d dd3e05ae 4de6bd46 ..!>=.....>.F..M 3fffd250: 91548db5 71c45d05 0406d46f 605015ff ..T..].qo.....P` 3fffd260: 1998fb24 d6bde997 894043cc 67d99e77 $........C@.w..g 3fffd270: b0e842bd 07898b88 e7195b38 79c8eedb .B......8[.....y 3fffd280: a17c0a47 7c420fe9 f8841ec9 00000000 G.|...B|........ 3fffd290: 09808683 322bed48 1e1170ac 6c5a724e ....H.+2.p..NrZl 3fffd2a0: fd0efffb 0f853856 3daed51e 362d3927 ....V8.....='9-6 3fffd2b0: 0a0fd964 685ca621 9b5b54d1 24362e3a d...!.\h.T[.:.6$ 3fffd2c0: 0c0a67b1 9357e70f b4ee96d2 1b9b919e .g....W......... 3fffd2d0: 80c0c54f 61dc20a2 5a774b69 1c121a16 O.... .aiKwZ.... 3fffd2e0: e293ba0a c0a02ae5 3c22e043 121b171d .....*..C."<.... 3fffd2f0: 0e090d0b f28bc7ad 2db6a8b9 141ea9c8 ...........-.... 3fffd300: 57f11985 af75074c ee99ddbb a37f60fd ...WL.u......`.. 3fffd310: f701269f 5c72f5bc 44663bc5 5bfb7e34 .&....r\.;fD4~.[ 3fffd320: 8b432976 cb23c6dc b6edfc68 b8e4f163 v)C...#.h...c... 3fffd330: d731dcca 42638510 13972240 84c61120 ..1...cB@".. ... 3fffd340: 854a247d d2bb3df8 aef93211 c729a16d }$J..=...2..m.). 3fffd350: 1d9e2f4b dcb230f3 0d8652ec 77c1e3d0 K/...0...R.....w 3fffd360: 2bb3166c a970b999 119448fa 47e96422 l..+..p..H.."d.G 3fffd370: a8fc8cc4 a0f03f1a 567d2cd8 223390ef .....?...,}V..3" 3fffd380: 87494ec7 d938d1c1 8ccaa2fe 98d40b36 .NI...8.....6... 3fffd390: a6f581cf a57ade28 dab78e26 3fadbfa4 ....(.z.&......? 3fffd3a0: 2c3a9de4 5078920d 6a5fcc9b 547e4662 ..:,..xP.._jbF~T 3fffd3b0: f68d13c2 90d8b8e8 2e39f75e 82c3aff5 ........^.9..... 3fffd3c0: 9f5d80be 69d0937c 6fd52da9 cf2512b3 ..].|..i.-.o..%. 3fffd3d0: c8ac993b 10187da7 e89c636e db3bbb7b ;....}..nc..{.;. 3fffd3e0: cd267809 6e5918f4 ec9ab701 834f9aa8 .x&...Yn......O. 3fffd3f0: e6956e65 aaffe67e 21bccf08 ef15e8e6 en..~......!.... 3fffd400: bae79bd9 4a6f36ce ea9f09d4 29b07cd6 .....6oJ.....|.) 3fffd410: 31a4b2af 2a3f2331 c6a59430 35a266c0 ...11#?*0....f.5 3fffd420: 744ebc37 fc82caa6 e090d0b0 33a7d815 7.Nt...........3 3fffd430: f104984a 41ecdaf7 7fcd500e 1791f62f J......A.P../... 3fffd440: 764dd68d 43efb04d ccaa4d54 e49604df ..MvM..CTM...... 3fffd450: 9ed1b5e3 4c6a881b c12c1fb8 4665517f ......jL..,..QeF 3fffd460: 9d5eea04 018c355d fa877473 fb0b412e ..^.]5..st...A.. 3fffd470: b3671d5a 92dbd252 e9105633 6dd64713 Z.g.R...3V...G.m 3fffd480: 9ad7618c 37a10c7a 59f8148e eb133c89 .a..z..7...Y.<.. 3fffd490: cea927ee b761c935 e11ce5ed 7a47b13c .'..5.a.....<.Gz 3fffd4a0: 9cd2df59 55f2733f 1814ce79 73c737bf Y...?s.Uy....7.s 3fffd4b0: 53f7cdea 5ffdaa5b df3d6f14 7844db86 ...S[.._.o=...Dx 3fffd4c0: caaff381 b968c43e 3824342c c2a3405f ....>.h.,4$8_@.. 3fffd4d0: 161dc372 bce2250c 283c498b ff0d9541 r....%...I<(A... 3fffd4e0: 39a80171 080cb3de d8b4e49c 6456c190 q..9..........Vd 3fffd4f0: 7bcb8461 d532b670 486c5c74 d0b85742 a..{p.2.t\lHBW.. 3fffd500: d56a0952 38a53630 9ea340bf fbd7f381 R.j.06.8.@...... 3fffd510: 8239e37c 87ff2f9b 44438e34 cbe9dec4 |.9../..4.CD.... 3fffd520: 32947b54 3d23c2a6 0b954cee 4ec3fa42 T{.2..#=.L..B..N 3fffd530: 66a12e08 b224d928 49a25b76 25d18b6d ...f(.$.v[.Im..% 3fffd540: 64f6f872 16986886 cc5ca4d4 92b6655d r..d.h....\.]e.. 3fffd550: 5048706c dab9edfd 5746155e 849d8da7 lpHP....^.FW.... 3fffd560: 00abd890 0ad3bc8c 0558e4f7 0645b3b8 ..........X...E. 3fffd570: 8f1e2cd0 020f3fca 03bdafc1 6b8a1301 .,...?.........k 3fffd580: 4111913a eadc674f cecff297 73e6b4f0 :..AOg.........s 3fffd590: 2274ac96 8535ade7 e837f9e2 6edf751c ..t"..5...7..u.n 3fffd5a0: 711af147 89c5291d 0e62b76f 1bbe18aa G..q.)..o.b..... 3fffd5b0: 4b3e56fc 2079d2c6 fec0db9a f45acd78 .V>K..y ....x.Z. 3fffd5c0: 33a8dd1f 31c70788 591012b1 5fec8027 ...3...1...Y'.._ 3fffd5d0: a97f5160 0d4ab519 9f7ae52d ef9cc993 `Q....J.-.z..... 3fffd5e0: 4d3be0a0 b0f52aae 3cbbebc8 61995383 ..;M.*.....<.S.a 3fffd5f0: 7e042b17 26d677ba 631469e1 7d0c2155 .+.~.w.&.i.cU!.} 3fffd600: 44434241 48474645 4c4b4a49 504f4e4d ABCDEFGHIJKLMNOP 3fffd610: 54535251 58575655 62615a59 66656463 QRSTUVWXYZabcdef 3fffd620: 6a696867 6e6d6c6b 7271706f 76757473 ghijklmnopqrstuv 3fffd630: 7a797877 33323130 37363534 2f2b3938 wxyz0123456789+/ 3fffd640: 00000000 00000000 00000000 00000000 ................ 3fffd650: 01010101 01010101 01010101 00030101 ................ 3fffd660: 00000000 00000000 00000000 00000000 ................ 3fffd670: 00000043 7465200a 73252073 7473722c C.... ets %s,rst 3fffd680: 75616320 253a6573 62202c64 20746f6f cause:%d, boot 3fffd690: 65646f6d 6425283a 2964252c 00000a0a mode:(%d,%d).... 3fffd6a0: 206e614a 32203820 00333130 20746477 Jan 8 2013.wdt 3fffd6b0: 65736572 00000a74 25207325 000a2073 reset...%s %s .. 3fffd6c0: 5f737465 6e69616d 0000632e 6e6b6e75 ets_main.c..unkn 3fffd6d0: 206e776f 65736572 00000a74 72657375 own reset...user 3fffd6e0: 646f6320 6f642065 000a656e 74696177 code done..wait 3fffd6f0: 20676e69 20726f66 74736f68 0000000a ing for host.... 3fffd700: 64616f6c 25783020 2c783830 6e656c20 load 0x%08x, len 3fffd710: 2c642520 6f6f7220 6425206d 00000a20 %d, room %d ... 3fffd720: 73616c66 65722068 65206461 202c7272 flash read err, 3fffd730: 000a7325 6c696174 0a642520 00000000 %s..tail %d..... 3fffd740: 736b6863 30206d75 32302578 00000a78 chksum 0x%02x... 3fffd750: 6d757363 25783020 0a783230 00000000 csum 0x%02x..... 3fffd760: 6d757363 72726520 0000000a 25206f68 csum err....ho % 3fffd770: 61742064 25206c69 6f722064 25206d6f d tail %d room % 3fffd780: 00000a64 25207073 000a2070 645f6673 d...sp %p ..sf_d 3fffd790: 5b706d75 205d6425 203a3061 30257830 ump[%d] a0: 0x%0 3fffd7a0: 20207838 203a3161 30257830 20207838 8x a1: 0x%08x 3fffd7b0: 203a3261 30257830 20207838 203a3361 a2: 0x%08x a3: 3fffd7c0: 30257830 0a207838 00000000 31637065 0x%08x .....epc1 3fffd7d0: 2578303d 2c783830 63706520 78303d32 =0x%08x, epc2=0x 3fffd7e0: 78383025 7065202c 303d3363 38302578 %08x, epc3=0x%08 3fffd7f0: 65202c78 61766378 3d726464 30257830 x, excvaddr=0x%0 3fffd800: 202c7838 63706564 2578303d 0a783830 8x, depc=0x%08x. 3fffd810: 00000000 61746146 7865206c 74706563 ....Fatal except 3fffd820: 206e6f69 29642528 000a203a 69727065 ion (%d): ..epri 3fffd830: 2066746e 62206f6e 000a6675 33323130 ntf no buf..0123 3fffd840: 37363534 00003938 33323130 37363534 456789..01234567 3fffd850: 62613938 66656463 00000000 33323130 89abcdef....0123 3fffd860: 37363534 42413938 46454443 00000000 456789ABCDEF.... 3fffd870: 6c756e3c 00003e6c 5f737465 656d6974 ..ets_time 3fffd880: 00632e72 746f6f62 2c207075 64646120 r.c.bootup , add 3fffd890: 78302072 78383025 0000000a 72206f6e r 0x%08x....no r 3fffd8a0: 000a7364 20706973 75676f62 78722073 ds..sip bogus rx 3fffd8b0: 6e6f6420 00000a65 64207872 20656e6f done...rx done 3fffd8c0: 6e6b6e75 0a6e776f 00000000 20706973 unknown.....sip 3fffd8d0: 75676f62 78742073 0000000a 20716573 bogus tx....seq 3fffd8e0: 202c7525 64207525 70252073 0000000a %u, %u ds %p.... 3fffd8f0: 75207874 6f6e6b6e 000a6e77 71697872 tx unknown..rxiq 3fffd900: 7465675f 73696d5f 5f73203a 3d727770 _get_mis: s_pwr= 3fffd910: 646c6c25 6425202c 2c64252d 00000020 %lld, %d-%d, ... 3fffd920: 64252820 2964252c 00000020 252c6425 (%d,%d) ...%d,% 3fffd930: 00002064 67617473 64252065 4743203a d ..stage %d: CG 3fffd940: 3d4e4941 46206425 4e494147 2c64253d AIN=%d FGAIN=%d, 3fffd950: 5f434420 283d534f 252c6425 202c2964 DC_OS=(%d,%d), 3fffd960: 3d434144 2c642528 20296425 0000000a DAC=(%d,%d) .... 3fffd970: 74637770 203a6c72 65746172 253d695f pwctrl: rate_i=% 3fffd980: 74202c64 65677261 6f705f74 3d726577 d, target_power= 3fffd990: 202c6425 65746564 705f7463 7265776f %d, detect_power 3fffd9a0: 0a64253d 00000000 5f6d756e 64253d6b =%d.....num_k=%d 3fffd9b0: 6f70202c 5f726577 3d74756f 202c6425 , power_out=%d, 3fffd9c0: 00000000 5f676572 64253d69 6e69202c ....reg_i=%d, in 3fffd9d0: 61746164 0a64253d 00000000 71697874 data=%d.....txiq 3fffd9e0: 6f74203a 615f656e 6e657474 0a64253d : tone_atten=%d. 3fffd9f0: 00000000 002c6425 71697874 6961675f ....%d,.txiq_gai 3fffda00: 64253d6e 0000000a 71697874 6168705f n=%d....txiq_pha 3fffda10: 253d6573 00000a64 203a7462 00000000 se=%d...bt: .... 3fffda20: 00000080 21252423 26252340 0000005e ....#$%!@#%&^... 3fffda30: 00000018 00000000 7c010001 00010c00 ...........|.... 3fffda40: 0c080108 0e080d08 00000f08 00000018 ................ 3fffda50: 00000020 4000ce60 000004af 8001f00e ...`..@........ 3fffda60: 8d128c13 00000011 00000018 0000003c ............<... 3fffda70: 4000d310 00000460 8001c00e 8d118c12 ...@`........... 3fffda80: 000f8e10 0000001c 00000058 4000d770 ........X...p..@ 3fffda90: 00000470 8001b00e 8d0c8c0d 8f0a8e0b p............... 3fffdaa0: 00000009 3fffdab0 3fffeb30 ; Here is part of the result of running "strings" on bootrom.bin ; This is handier than trying to yank strings out of the dump above. ; ; }ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ ; ets %s,rst cause:%d, boot mode:(%d,%d) ; Jan 8 2013 ; wdt reset ; %s %s ; ets_main.c ; unknown reset ; user code done ; waiting for host ; load 0x%08x, len %d, room %d ; flash read err, %s ; tail %d ; chksum 0x%02x ; csum 0x%02x ; csum err ; ho %d tail %d room %d ; sp %p ; sf_dump[%d] a0: 0x%08x a1: 0x%08x a2: 0x%08x a3: 0x%08x ; epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x ; Fatal exception (%d): ; eprintf no buf ; 0123456789 ; 0123456789abcdef ; 0123456789ABCDEF ; ets_timer.c ; bootup , addr 0x%08x ; no rds ; sip bogus rx done ; rx done unknown ; sip bogus tx ; seq %u, %u ds %p ; tx unknown ; rxiq_get_mis: s_pwr=%lld, %d-%d, ; (%d,%d) ; %d,%d ; stage %d: CGAIN=%d FGAIN=%d, DC_OS=(%d,%d), DAC=(%d,%d) ; pwctrl: rate_i=%d, target_power=%d, detect_power=%d ; num_k=%d, power_out=%d, ; reg_i=%d, indata=%d ; txiq: tone_atten=%d ; txiq_gain=%d ; txiq_phase=%d ; bt: ; #$%!@#%&^ ; Block 3 4000fe34 ; 3fffdaac 3fffdab0 <-- 4000fe34 ; These 4 bytes get their own block ; (they must be very special !!!) 3fffdaac: 3fffc000 ; And what follows are just unused bytes at the end of the ROM 4000fe38: 00000000 00000000 00000000 00000000 ................ 4000fe48: 00000000 00000000 00000000 00000000 ................ 4000fe58: 00000000 00000000 00000000 00000000 ................ 4000fe68: 00000000 00000000 00000000 00000000 ................ 4000fe78: 00000000 00000000 00000000 00000000 ................ 4000fe88: 00000000 00000000 00000000 00000000 ................ 4000fe98: 00000000 00000000 00000000 00000000 ................ 4000fea8: 00000000 00000000 00000000 00000000 ................ 4000feb8: 00000000 00000000 00000000 00000000 ................ 4000fec8: 00000000 00000000 00000000 00000000 ................ 4000fed8: 00000000 00000000 00000000 00000000 ................ 4000fee8: 00000000 00000000 00000000 00000000 ................ 4000fef8: 00000000 00000000 00000000 00000000 ................ 4000ff08: 00000000 00000000 00000000 00000000 ................ 4000ff18: 00000000 00000000 00000000 00000000 ................ 4000ff28: 00000000 00000000 00000000 00000000 ................ 4000ff38: 00000000 00000000 00000000 00000000 ................ 4000ff48: 00000000 00000000 00000000 00000000 ................ 4000ff58: 00000000 00000000 00000000 00000000 ................ 4000ff68: 00000000 00000000 00000000 00000000 ................ 4000ff78: 00000000 00000000 00000000 00000000 ................ 4000ff88: 00000000 00000000 00000000 00000000 ................ 4000ff98: 00000000 00000000 00000000 00000000 ................ 4000ffa8: 00000000 00000000 00000000 00000000 ................ 4000ffb8: 00000000 00000000 00000000 00000000 ................ 4000ffc8: 00000000 00000000 00000000 00000000 ................ 4000ffd8: 00000000 00000000 00000000 00000000 ................ 4000ffe8: 00000000 00000000 00000000 00000000 ................ 4000fff8: 00000000 00000000 ........ ; THE END