3f4: 9c21 ff9c addi $1, $1, -0x64 3f8: d401 4800 sw $0, $1, $9, 0x0 3fc: d401 5004 sw $0, $1, $10, 0x4 400: d401 6008 sw $0, $1, $12, 0x8 404: d401 700c sw $0, $1, $14, 0xc 408: d401 8010 sw $0, $1, $16, 0x10 40c: d401 9014 sw $0, $1, $18, 0x14 410: d401 a018 sw $0, $1, $20, 0x18 414: d401 b01c sw $0, $1, $22, 0x1c 418: d401 c020 sw $0, $1, $24, 0x20 41c: d401 d024 sw $0, $1, $26, 0x24 420: d401 e028 sw $0, $1, $28, 0x28 424: d401 f02c sw $0, $1, $30, 0x2c 428: 1500 8001 nop $8, $0, -0x7fff 42c: 9c60 0338 addi $3, $0, 0x338 430: 9c63 ffff addi $3, $3, -0x1 label_434: 434: bd63 0000 cmpi ne1, $3, 0x0 438: 13ff ffff jc label_434 43c: 9c63 ffff addi $3, $3, -0x1 440: 1880 c000 lh $4, $0, -0x4000 444: 9c60 0202 addi $3, $0, 0x202 448: 9ca0 ffff addi $5, $0, -0x1 44c: e063 2000 ext_add $3, $3, $4 450: 9cc0 8000 addi $6, $0, -0x8000 454: dc03 2800 ss $0, $3, $5, 0x0 458: 9ce0 0aaa addi $7, $0, 0xaaa 45c: 9c60 001c addi $3, $0, 0x1c 460: 1960 c000 lh $11, $0, -0x4000 464: e063 2000 ext_add $3, $3, $4 468: dc03 3000 ss $0, $3, $6, 0x0 46c: 9c60 001e addi $3, $0, 0x1e 470: e063 2000 ext_add $3, $3, $4 474: dc03 3800 ss $0, $3, $7, 0x0 478: 1880 de00 lh $4, $0, -0x2200 47c: 9c60 0020 addi $3, $0, 0x20 480: a8a4 0090 ori $5, $4, 0x90 // ITH_GPIO1_MODE 484: e063 5800 ext_add $3, $3, $11 488: a884 00a0 ori $4, $4, 0xa0 // ITH_GPIO1_DRIVING_SET 48c: dc03 3800 ss $0, $3, $7, 0x0 490: 1960 00a8 lh $11, $0, 0xa8 494: 1860 00fc lh $3, $0, 0xfc 498: 18e0 0054 lh $7, $0, 0x54 49c: a863 c000 ori $3, $3, -0x4000 // fcc000 4a0: a8e7 4000 ori $7, $7, 0x4000 // 544000 4a4: acc3 ffff xori $6, $3, -0x1 4a8: a96b 8000 ori $11, $11, -0x8000 // a88000 4ac: 8465 0000 lw $3, $5, $0, 0x0 4b0: e063 3003 ext_and $3, $3, $6 4b4: e063 3804 ext_or $3, $3, $7 4b8: d405 1800 sw $0, $5, $3, 0x0 4bc: 8464 0000 lw $3, $4, $0, 0x0 4c0: a8a0 c15b ori $5, $0, -0x3ea5 // c15b 4c4: e063 3003 ext_and $3, $3, $6 4c8: e063 5804 ext_or $3, $3, $11 4cc: d404 1800 sw $0, $4, $3, 0x0 4d0: 1860 0010 lh $3, $0, 0x10 4d4: a883 1200 ori $4, $3, 0x1200 // 101200 4d8: 1860 d000 lh $3, $0, -0x3000 4dc: a863 0088 ori $3, $3, 0x88 // ITH_AHB00_CTRL 4e0: d403 2000 sw $0, $3, $4, 0x0 4e4: 9ca5 ffff addi $5, $5, -0x1 label_4e8: 4e8: bd65 0000 cmpi ne1, $5, 0x0 4ec: 13ff ffff jc label_4e8 4f0: 9ca5 ffff addi $5, $5, -0x1 4f4: 9dc0 0000 addi $14, $0, 0x0 4f8: 1860 de80 lh $3, $0, -0x2180 4fc: 9ce0 0000 addi $7, $0, 0x0 500: a883 0008 ori $4, $3, 0x8 // ITH_SSP_BASE+0x8 504: a8a3 0004 ori $5, $3, 0x4 // ITH_SSP_BASE+0x4 508: 18c0 001f lh $6, $0, 0x1f 50c: 9c60 004c addi $3, $0, 0x4c 510: a987 0000 ori $12, $7, 0x0 // 544000 514: d404 1800 sw $0, $4, $3, 0x0 518: e06e 3004 ext_or $3, $14, $6 51c: d404 3800 sw $0, $4, $7, 0x0 520: d405 1800 sw $0, $5, $3, 0x0 524: 18c0 de80 lh $6, $0, -0x2180 528: 9d60 0000 addi $11, $0, 0x0 52c: a8a6 0008 ori $5, $6, 0x8 // ITH_SSP_BASE+0x8 530: a88c 1028 ori $4, $12, 0x1028 // 545028 534: d405 5800 sw $0, $5, $11, 0x0 538: a86b 0000 ori $3, $11, 0x0 // a88000 53c: d406 2000 sw $0, $6, $4, 0x0 540: 9c80 0001 addi $4, $0, 0x1 544: d405 2000 sw $0, $5, $4, 0x0 548: 07ff ff74 call SpiReadWordToR11AtR3Addr // Read 0x0 54c: 1500 0000 nop $8, $0, 0x0 550: a94b 0000 ori $10, $11, 0x0 // a88000 554: 07ff ff71 call SpiReadWordToR11AtR3Addr // Read 0x4 558: 9c60 0004 addi $3, $0, 0x4 55c: 1860 534d lh $3, $0, 0x534d 560: a863 4544 ori $3, $3, 0x4544 // 534d4544 - SMED 564: e42a 1800 cmp $1, $10, $3, 0x0 568: 1000 0006 jc label_580 56c: 1880 4941 lh $4, $0, 0x4941 570: a884 3032 ori $4, $4, 0x3032 // 49413032 - IA02 574: e42b 2000 cmp $1, $11, $4, 0x0 578: 0c00 0008 jnc $pc+(8*4) // 598 57c: bc0c 0004 cmpi eq, $12, 0x4 label_580: 580: 9d8c 0001 addi $12, $12, 0x1 584: bc0c 0004 cmpi eq, $12, 0x4 588: 0fff ffe8 jnc $pc+(-24*4) // 528 58c: 18c0 de80 lh $6, $0, -0x2180 590: 0000 0005 jmpi $pc+(5*4) // 5a4 594: 9dce 0001 addi $14, $14, 0x1 598: 0c00 0007 jnc $pc+(7*4) // 5b4 59c: bc2e 0004 cmpi ne, $14, 0x4 5a0: 9dce 0001 addi $14, $14, 0x1 5a4: bc0e 0004 cmpi eq, $14, 0x4 5a8: 0fff ffd5 jnc $pc+(-43*4) // 4fc 5ac: 1860 de80 lh $3, $0, -0x2180 5b0: bc2e 0004 cmpi ne, $14, 0x4 5b4: 0c00 034a jnc $pc+(842*4) // 12dc 5b8: 9c80 4001 addi $4, $0, 0x4001 5bc: 9c60 0008 addi $3, $0, 0x8 5c0: 07ff ff56 call SpiReadWordToR11AtR3Addr // <---- Read 0x8 (Unknown) -> $11 -> $14 5c4: 9e40 0000 addi $18, $0, 0x0 5c8: 9c60 0020 addi $3, $0, 0x20 5cc: a9cb 0000 ori $14, $11, 0x0 // a88000 5d0: 07ff ff52 call SpiReadWordToR11AtR3Addr // <---- Read 0x20 (header_length) -> $11 -> $10 5d4: a992 0000 ori $12, $18, 0x0 // 0 5d8: a94b 0000 ori $10, $11, 0x0 // a88000 5dc: 9c60 0024 addi $3, $0, 0x24 5e0: 07ff ff4e call SpiReadWordToR11AtR3Addr // <---- Read 0x24 (data_length) -> $11 -> 0x80000464 5e4: 1a80 8000 lh $20, $0, -0x8000 5e8: 1860 c010 lh $3, $0, -0x3ff0 5ec: a863 0464 ori $3, $3, 0x464 // ITH_SRAM_ISP_BASE+0x464 5f0: d401 9058 sw $0, $1, $18, 0x58 5f4: d403 5800 sw $0, $3, $11, 0x0 5f8: ab92 0000 ori $28, $18, 0x0 // 0 5fc: d401 9054 sw $0, $1, $18, 0x54 600: abd2 0000 ori $30, $18, 0x0 // 0 604: d401 9050 sw $0, $1, $18, 0x50 608: d401 904c sw $0, $1, $18, 0x4c 60c: ab52 0000 ori $26, $18, 0x0 // 0 610: aad2 0000 ori $22, $18, 0x0 // 0 614: ab12 0000 ori $24, $18, 0x0 // 0 618: bc0a ffff cmpi eq, $10, -0x1 61c: 1000 004e jc $pc+(78*4) // 754 620: d401 9048 sw $0, $1, $18, 0x48 624: bdaa 001f cmpi ne3, $10, 0x1f 628: 1000 0005 jc $pc+(5*4) // 63c 62c: 1860 de00 lh $3, $0, -0x2200 630: 9d4a ffe0 addi $10, $10, -0x20 634: 0000 0003 jmpi $pc+(3*4) // 640 638: a863 0044 ori $3, $3, 0x44 // ITH_GPIO2_DATAIN 63c: a863 0004 ori $3, $3, 0x4 // ITH_GPIO2_DATAOUT 640: 8483 0000 lw $4, $3, $0, 0x0 644: 9c60 0001 addi $3, $0, 0x1 648: e163 5008 ext_shl $11, $3, $10 64c: e164 5803 ext_and $11, $4, $11 650: bc2b 0000 cmpi ne, $11, 0x0 654: 1000 003f jc label_750 658: 1500 0000 nop $8, $0, 0x0 65c: 0400 0365 call SDRoutine 660: 1500 0000 nop $8, $0, 0x0 664: bc0b 0000 cmpi eq, $11, 0x0 668: 1000 0037 jc $pc+(55*4) // 744 -> 12dc 66c: 1500 0000 nop $8, $0, 0x0 670: 1500 8068 nop $8, $0, -0x7f98 674: 18a0 c000 lh $5, $0, -0x4000 678: 9c60 16a0 addi $3, $0, 0x16a0 67c: a56b ffff andi $11, $11, -0x1 680: e063 2800 ext_add $3, $3, $5 684: 9cc0 ffff addi $6, $0, -0x1 688: dc03 5800 ss $0, $3, $11, 0x0 68c: 9ce0 8000 addi $7, $0, -0x8000 690: 1860 dee0 lh $3, $0, -0x2120 694: 9d60 0aaa addi $11, $0, 0xaaa 698: a863 0004 ori $3, $3, 0x4 // ITH_SD_BASE+0x4 69c: 8463 0000 lw $3, $3, $0, 0x0 6a0: a483 ffff andi $4, $3, -0x1 6a4: 9c60 16a2 addi $3, $0, 0x16a2 6a8: e063 2800 ext_add $3, $3, $5 6ac: dc03 2000 ss $0, $3, $4, 0x0 6b0: 9c60 0202 addi $3, $0, 0x202 6b4: 1880 de00 lh $4, $0, -0x2200 6b8: e063 2800 ext_add $3, $3, $5 6bc: dc03 3000 ss $0, $3, $6, 0x0 6c0: 9c60 001c addi $3, $0, 0x1c 6c4: e063 2800 ext_add $3, $3, $5 6c8: dc03 3800 ss $0, $3, $7, 0x0 6cc: 9c60 001e addi $3, $0, 0x1e 6d0: 18e0 0054 lh $7, $0, 0x54 6d4: e063 2800 ext_add $3, $3, $5 6d8: a8e7 4000 ori $7, $7, 0x4000 // 544000 6dc: dc03 5800 ss $0, $3, $11, 0x0 6e0: 9c60 0020 addi $3, $0, 0x20 6e4: e063 2800 ext_add $3, $3, $5 6e8: dc03 5800 ss $0, $3, $11, 0x0 6ec: a8a4 0090 ori $5, $4, 0x90 // ITH_GPIO1_MODE 6f0: 1860 00fc lh $3, $0, 0xfc 6f4: a884 00a0 ori $4, $4, 0xa0 // ITH_GPIO1_DRIVING_SET 6f8: a863 c000 ori $3, $3, -0x4000 // fcc000 6fc: 1960 00a8 lh $11, $0, 0xa8 700: acc3 ffff xori $6, $3, -0x1 704: a96b 8000 ori $11, $11, -0x8000 // a88000 708: 8465 0000 lw $3, $5, $0, 0x0 70c: e063 3003 ext_and $3, $3, $6 710: e063 3804 ext_or $3, $3, $7 714: d405 1800 sw $0, $5, $3, 0x0 718: 8464 0000 lw $3, $4, $0, 0x0 71c: e063 3003 ext_and $3, $3, $6 720: e063 5804 ext_or $3, $3, $11 724: d404 1800 sw $0, $4, $3, 0x0 728: 1860 0010 lh $3, $0, 0x10 72c: a883 1200 ori $4, $3, 0x1200 // 101200 730: 1860 d000 lh $3, $0, -0x3000 734: a863 0088 ori $3, $3, 0x88 // ITH_AHB00_CTRL 738: d403 2000 sw $0, $3, $4, 0x0 73c: 0000 0005 jmpi label_750 740: 1500 0000 nop $8, $0, 0x0 744: 1500 8066 nop $8, $0, -0x7f9a 748: 0000 02e5 jmpi $pc+(741*4) // 12dc 74c: 9c80 4006 addi $4, $0, 0x4006 // ---------------------------------------------------------------------------------------------- // Setup Script Parser label_750: 750: 1500 8069 nop $8, $0, -0x7f97 754: 1500 8067 nop $8, $0, -0x7f99 758: a86e 0000 ori $3, $14, 0x0 // a88000 75c: 07ff feef call SpiReadWordToR11AtR3Addr // <---- header_word_count -> stack 0x5c 760: 9d40 0000 addi $10, $0, 0x0 764: d401 585c sw $0, $1, $11, 0x5c 768: 9e4e 0004 addi $18, $14, 0x4 76c: aa0a 0000 ori $16, $10, 0x0 // a88000 label_770: 770: 8461 005c lw $3, $1, $0, 0x5c 774: e590 1800 cmp $12, $16, $3, 0x0 $16 < $3 778: 0c00 0114 jnc label_bc8 77c: 9dd2 0004 addi $14, $18, 0x4 780: a872 0000 ori $3, $18, 0x0 // 0 784: 07ff fee5 call SpiReadWordToR11AtR3Addr // <--- Main header (0x4) 788: 9e10 0001 addi $16, $16, 0x1 78c: bc4a 0014 cmpi $2, $10, 0x14 790: 1000 010c jc label_bc0 794: aa4e 0000 ori $18, $14, 0x0 // a88000 798: b86a 0002 shfti $3, $10, 0x2 79c: 1880 0000 lh $4, $0, 0x0 7a0: a884 4794 ori $4, $4, 0x4794 // 4794 7a4: e063 2000 ext_add $3, $3, $4 7a8: 8463 0000 lw $3, $3, $0, 0x0 7ac: 4400 1800 jmp $3 // a: switch() { 7b0: 1500 0000 nop $8, $0, 0x0 a_case_0: 7b4: bc2b ffff cmpi ne, $11, -0x1 7b8: 0fff ffee jnc label_770 7bc: 9d40 0002 addi $10, $0, 0x2 7c0: bc2b fffe cmpi ne, $11, -0x2 7c4: 0fff ffeb jnc label_770 7c8: 9d40 0003 addi $10, $0, 0x3 7cc: bc2b fffd cmpi ne, $11, -0x3 7d0: 0fff ffe8 jnc label_770 7d4: 9d40 0008 addi $10, $0, 0x8 7d8: bc2b fffc cmpi ne, $11, -0x4 7dc: 0fff ffe5 jnc label_770 7e0: 9d40 0009 addi $10, $0, 0x9 7e4: bc2b fffb cmpi ne, $11, -0x5 7e8: 0fff ffe2 jnc label_770 7ec: 9d40 000b addi $10, $0, 0xb 7f0: bc2b fffa cmpi ne, $11, -0x6 7f4: 0fff ffdf jnc label_770 7f8: 9d40 000c addi $10, $0, 0xc 7fc: bc2b fff9 cmpi ne, $11, -0x7 800: 0fff ffdc jnc label_770 804: 9d40 000f addi $10, $0, 0xf 808: bc2b fff8 cmpi ne, $11, -0x8 80c: 0fff ffd9 jnc label_770 810: 9d40 0010 addi $10, $0, 0x10 814: bc2b fff7 cmpi ne, $11, -0x9 818: 0fff ffd6 jnc label_770 81c: 9d40 0014 addi $10, $0, 0x14 820: 9ca0 fff0 addi $5, $0, -0x10 824: e06b 2803 ext_and $3, $11, $5 828: bc23 ffe0 cmpi ne, $3, -0x20 82c: 1000 0006 jc label_844 830: 1500 0000 nop $8, $0, 0x0 834: a56b 000f andi $11, $11, 0xf 838: 9d40 0012 addi $10, $0, 0x12 83c: 03ff ffcd jmpi label_770 840: d401 5858 sw $0, $1, $11, 0x58 label_844: 844: a98b 0000 ori $12, $11, 0x0 // a88000 848: 03ff ffca jmpi label_770 84c: 9d40 0001 addi $10, $0, 0x1 a_case_8: 850: 9cc0 0000 addi $6, $0, 0x0 854: a98b 0000 ori $12, $11, 0x0 // a88000 858: 0000 0005 jmpi $pc+(5*4) // 86c 85c: d401 304c sw $0, $1, $6, 0x4c a_case_9: 860: 9ce0 0001 addi $7, $0, 0x1 864: a98b 0000 ori $12, $11, 0x0 // a88000 868: d401 384c sw $0, $1, $7, 0x4c 86c: 03ff ffc1 jmpi label_770 870: 9d40 000a addi $10, $0, 0xa a_case_10: 874: 1860 c000 lh $3, $0, -0x4000 878: 8481 004c lw $4, $1, $0, 0x4c 87c: bc04 0000 cmpi eq, $4, 0x0 880: 1000 0016 jc $pc+(22*4) // 8d8 884: e0ac 1800 ext_add $5, $12, $3 888: a8c0 ffff ori $6, $0, -0x1 // ffff 88c: e44c 3000 cmp gt, $12, $6, 0x0 890: 1000 0006 jc $pc+(6*4) // 8a8 894: 1500 0000 nop $8, $0, 0x0 898: 9465 0000 ls $3, $5, $0, 0x0 89c: b863 0010 shfti $3, $3, 0x10 8a0: 0000 0003 jmpi $pc+(3*4) // 8ac 8a4: b883 0090 shfti $4, $3, 0x90 8a8: 848c 0000 lw $4, $12, $0, 0x0 8ac: 9c60 03e7 addi $3, $0, 0x3e7 8b0: 9c63 ffff addi $3, $3, -0x1 8b4: bd63 0000 cmpi ne1, $3, 0x0 8b8: 13ff ffff jc $pc+(-1*4) // 8b4 8bc: 9c63 ffff addi $3, $3, -0x1 8c0: e064 5803 ext_and $3, $4, $11 8c4: bc23 0000 cmpi ne, $3, 0x0 8c8: 0fff fff1 jnc $pc+(-15*4) // 88c 8cc: a8c0 ffff ori $6, $0, -0x1 // ffff 8d0: 03ff ffa8 jmpi label_770 8d4: 9d40 0000 addi $10, $0, 0x0 8d8: a8e0 ffff ori $7, $0, -0x1 // ffff 8dc: e44c 3800 cmp gt, $12, $7, 0x0 8e0: 1000 0006 jc $pc+(6*4) // 8f8 8e4: 1500 0000 nop $8, $0, 0x0 8e8: 9465 0000 ls $3, $5, $0, 0x0 8ec: b863 0010 shfti $3, $3, 0x10 8f0: 0000 0003 jmpi $pc+(3*4) // 8fc 8f4: b883 0090 shfti $4, $3, 0x90 8f8: 848c 0000 lw $4, $12, $0, 0x0 8fc: 9c60 03e7 addi $3, $0, 0x3e7 900: 9c63 ffff addi $3, $3, -0x1 904: bd63 0000 cmpi ne1, $3, 0x0 908: 13ff ffff jc $pc+(-1*4) // 904 90c: 9c63 ffff addi $3, $3, -0x1 910: e064 5803 ext_and $3, $4, $11 914: bc03 0000 cmpi eq, $3, 0x0 918: 0fff fff1 jnc $pc+(-15*4) // 8dc 91c: a8e0 ffff ori $7, $0, -0x1 // ffff 920: 03ff ff94 jmpi label_770 924: 9d40 0000 addi $10, $0, 0x0 a_case_1: 928: a860 ffff ori $3, $0, -0x1 // ffff 92c: e44c 1800 cmp gt, $12, $3, 0x0 930: 1000 005b jc label_a9c 934: 1880 ffff lh $4, $0, -0x1 938: a4cb ffff andi $6, $11, -0x1 93c: e06b 2003 ext_and $3, $11, $4 940: bc03 0000 cmpi eq, $3, 0x0 944: 1000 0009 jc label_968 948: a48c ffff andi $4, $12, -0x1 94c: b96b 0050 shfti $11, $11, 0x50 950: 18e0 c000 lh $7, $0, -0x4000 954: e0a4 3800 ext_add $5, $4, $7 958: ac6b ffff xori $3, $11, -0x1 95c: 9485 0000 ls $4, $5, $0, 0x0 960: 0000 0046 jmpi label_a78 964: e166 5803 ext_and $11, $6, $11 label_968: 968: 1960 c000 lh $11, $0, -0x4000 96c: e064 5800 ext_add $3, $4, $11 970: dc03 3000 ss $0, $3, $6, 0x0 974: 03ff ff7f jmpi label_770 978: 9d40 0000 addi $10, $0, 0x0 a_case_2: // Wait??? 97c: bc0b 0000 cmpi eq, $11, 0x0 980: 13ff ff7c jc label_770 984: 9d40 0000 addi $10, $0, 0x0 988: 9d6b ffff addi $11, $11, -0x1 98c: bc2b 0000 cmpi ne, $11, 0x0 990: 13ff ffff jc $pc+(-1*4) // 98c 994: 9d6b ffff addi $11, $11, -0x1 998: 03ff ff76 jmpi label_770 99c: 9d40 0000 addi $10, $0, 0x0 a_case_3: 9a0: 1860 8000 lh $3, $0, -0x8000 9a4: 9d40 0004 addi $10, $0, 0x4 9a8: 03ff ff72 jmpi label_770 9ac: e38b 1800 ext_add $28, $11, $3 a_case_4: 9b0: d401 5854 sw $0, $1, $11, 0x54 9b4: 03ff ff6f jmpi label_770 9b8: 9d40 0005 addi $10, $0, 0x5 a_case_5: 9bc: abcb 0000 ori $30, $11, 0x0 // ITH_MMIO_BASE+0x0 9c0: 03ff ff6c jmpi label_770 9c4: 9d40 0006 addi $10, $0, 0x6 a_case_6: 9c8: 9d80 0000 addi $12, $0, 0x0 9cc: d401 5850 sw $0, $1, $11, 0x50 9d0: d401 6048 sw $0, $1, $12, 0x48 9d4: 03ff ff67 jmpi label_770 9d8: 9d40 0007 addi $10, $0, 0x7 a_case_7: 9dc: e07c 6000 ext_add $3, $28, $12 9e0: 9d8c 0004 addi $12, $12, 0x4 9e4: d403 5800 sw $0, $3, $11, 0x0 9e8: e48c f000 cmp $4, $12, $30, 0x0 9ec: 1000 0005 jc $pc+(5*4) // a00 9f0: 84a1 0054 lw $5, $1, $0, 0x54 9f4: 8481 0050 lw $4, $1, $0, 0x50 9f8: 9d80 0000 addi $12, $0, 0x0 9fc: e39c 2000 ext_add $28, $28, $4 a00: 84c1 0048 lw $6, $1, $0, 0x48 a04: e065 f306 ext_and $3, $5, $3006 a08: 9cc6 0004 addi $6, $6, 0x4 a0c: e486 1800 cmp $4, $6, $3, 0x0 a10: 13ff ff58 jc label_770 a14: d401 3048 sw $0, $1, $6, 0x48 a18: 03ff ff56 jmpi label_770 a1c: 9d40 0000 addi $10, $0, 0x0 a_case_11: a20: 9c60 0001 addi $3, $0, 0x1 a24: 4800 5800 unk12 $0, $0, $11, 0x0 a28: 9d40 0000 addi $10, $0, 0x0 a2c: 03ff ff52 jmpi $pc+(-174*4) // 774 a30: 8461 005c lw $3, $1, $0, 0x5c a_case_12: a34: a98b 0000 ori $12, $11, 0x0 // ITH_MMIO_BASE+0x0 a38: 03ff ff4e jmpi label_770 a3c: 9d40 000d addi $10, $0, 0xd a_case_13: a40: ab4b 0000 ori $26, $11, 0x0 // ITH_MMIO_BASE+0x0 a44: 03ff ff4b jmpi label_770 a48: 9d40 000e addi $10, $0, 0xe a_case_14: a4c: a8e0 ffff ori $7, $0, -0x1 // ffff a50: e44c 3800 cmp gt, $12, $7, 0x0 a54: 1000 000e jc label_a8c a58: ac6b ffff xori $3, $11, -0x1 a5c: a46c ffff andi $3, $12, -0x1 a60: 1880 c000 lh $4, $0, -0x4000 a64: a56b ffff andi $11, $11, -0x1 a68: e0a3 2000 ext_add $5, $3, $4 a6c: ac8b ffff xori $4, $11, -0x1 a70: 9465 0000 ls $3, $5, $0, 0x0 a74: e17a 5803 ext_and $11, $26, $11 label_a78: a78: e063 2003 ext_and $3, $3, $4 a7c: e163 5804 ext_or $11, $3, $11 a80: dc05 5800 ss $0, $5, $11, 0x0 a84: 03ff ff3b jmpi label_770 a88: 9d40 0000 addi $10, $0, 0x0 label_a8c: a8c: 848c 0000 lw $4, $12, $0, 0x0 a90: e17a 5803 ext_and $11, $26, $11 a94: e064 1803 ext_and $3, $4, $3 a98: e163 5804 ext_or $11, $3, label_a9c: a9c: d40c 5800 sw $0, $12, $11, 0x0 aa0: 03ff ff34 jmpi label_770 aa4: 9d40 0000 addi $10, $0, 0x0 a_case_15: // JumpToAddress aa8: 4400 5800 jmp $11 aac: 03ff ff31 jmpi label_770 ab0: 9d40 0000 addi $10, $0, 0x0 a_case_16: ab4: a98b 0000 ori $12, $11, 0x0 // ITH_MMIO_BASE+0x0 ab8: 03ff ff2e jmpi label_770 abc: 9d40 0011 addi $10, $0, 0x11 a_case_17: ac0: a8a0 ffff ori $5, $0, -0x1 // ffff ac4: e44c 2800 cmp gt, $12, $5, 0x0 ac8: 1000 0008 jc $pc+(8*4) // ae8 acc: a46c ffff andi $3, $12, -0x1 ad0: 18c0 c000 lh $6, $0, -0x4000 ad4: e063 3000 ext_add $3, $3, $6 ad8: 9463 0000 ls $3, $3, $0, 0x0 adc: b863 0010 shfti $3, $3, 0x10 ae0: 0000 0003 jmpi $pc+(3*4) // aec ae4: bb43 0090 shfti $26, $3, 0x90 ae8: 874c 0000 lw $26, $12, $0, 0x0 aec: 0000 002e jmpi $pc+(46*4) // ba4 af0: e2da 5803 ext_and $22, $26, $11 a_case_18: af4: ab0b 0000 ori $24, $11, 0x0 // ITH_MMIO_BASE+0x0 af8: 03ff ff1e jmpi label_770 afc: 9d40 0013 addi $10, $0, 0x13 b_case_0: b00: 84e1 0058 lw $7, $1, $0, 0x58 // Reload first word b04: bc47 0005 cmpi $2, $7, 0x5 b08: 13ff ff1a jc label_770 b0c: 9d40 0000 addi $10, $0, 0x0 b10: b867 0002 shfti $3, $7, 0x2 b14: 1880 0000 lh $4, $0, 0x0 b18: a884 47e8 ori $4, $4, 0x47e8 // 47e8 b1c: e063 2000 ext_add $3, $3, $4 b20: 8463 0000 lw $3, $3, $0, 0x0 b24: 4400 1800 jmp $3 // b: switch () { b28: 1500 0000 nop $8, $0, 0x0 b_case_2: b2c: e436 c000 cmp $1, $22, $24, 0x0 b30: 1000 001d jc label_ba4 b34: b86b 0002 shfti $3, $11, 0x2 b38: 0000 001a jmpi label_ba0 b3c: e210 5800 ext_add $16, $16, $11 b_case_3: b40: e416 c000 cmp $0, $22, $24, 0x0 b44: 1000 0018 jc label_ba4 b48: b86b 0002 shfti $3, $11, 0x2 b4c: 0000 0015 jmpi label_ba0 b50: e210 5800 ext_add $16, $16, $11 b_case_4: b54: e4b6 c000 cmp $5, $22, $24, 0x0 b58: 1000 0013 jc label_ba4 b5c: b86b 0002 shfti $3, $11, 0x2 b60: 0000 0010 jmpi label_ba0 b64: e210 5800 ext_add $16, $16, $11 b_case_5: b68: e496 c000 cmp $4, $22, $24, 0x0 b6c: 1000 000e jc label_ba4 b70: b86b 0002 shfti $3, $11, 0x2 b74: 0000 000b jmpi label_ba0 b78: e210 5800 ext_add $16, $16, $11 b_case_6: b7c: e476 c000 cmp ge, $22, $24, 0x0 b80: 1000 0009 jc label_ba4 b84: b86b 0002 shfti $3, $11, 0x2 b88: 0000 0006 jmpi label_ba0 b8c: e210 5800 ext_add $16, $16, $11 b_case_7: b90: e456 c000 cmp gt, $22, $24, 0x0 b94: 1000 0004 jc label_ba4 b98: b86b 0002 shfti $3, $11, 0x2 b9c: e210 5800 ext_add $16, $16, $11 label_ba0: ba0: e24e 1800 ext_add $18, $14, $3 label_ba4: ba4: 03ff fef3 jmpi label_770 ba8: 9d40 0000 addi $10, $0, 0x0 b_case_1: bac: b86b 0002 shfti $3, $11, 0x2 bb0: e210 5800 ext_add $16, $16, $11 bb4: 9d40 0000 addi $10, $0, 0x0 bb8: 03ff feee jmpi label_770 bbc: e24e 1800 ext_add $18, $14, $3 label_bc0: bc0: 0000 01c7 jmpi label_12dc bc4: 9c80 4002 addi $4, $0, 0x4002 // ---------------------------------------------------------------------------------------------- // Decompress SMAZ label_bc8: bc8: 07ff fdd4 call SpiReadWordToR11AtR3Addr // <---- SMAZ Checksum -> stack 0x60 bcc: a872 0000 ori $3, $18, 0x0 // a88000 bd0: d401 5860 sw $0, $1, $11, 0x60 bd4: a86e 0000 ori $3, $14, 0x0 // a88000 bd8: 07ff fdd0 call SpiReadWordToR11AtR3Addr // <---- packed_length bdc: 9e4e 0004 addi $18, $14, 0x4 be0: abcb 0000 ori $30, $11, 0x0 be4: 1500 8002 nop $8, $0, -0x7ffe be8: 07ff fdcc call SpiReadWordToR11AtR3Addr // <---- SMAZ signature bec: a872 0000 ori $3, $18, 0x0 // a88000 bf0: 18a0 534d lh $5, $0, 0x534d bf4: a8a5 415a ori $5, $5, 0x415a // 534d415a - SMAZ bf8: e42b 2800 cmp ne, $11, $5, 0x0 bfc: 0c00 0005 jnc label_c10 c00: 9c60 0001 addi $3, $0, 0x1 c04: d414 5800 sw $0, $20, $11, 0x0 c08: 9c60 0000 addi $3, $0, 0x0 c0c: 9e94 0004 addi $20, $20, 0x4 label_c10: c10: bc03 0000 cmpi eq, $3, 0x0 c14: 1000 0135 jc label_10e8 c18: 9e52 0004 addi $18, $18, 0x4 c1c: 18c0 8000 lh $6, $0, -0x8000 c20: 9ce0 ff80 addi $7, $0, -0x80 c24: a8c6 007f ori $6, $6, 0x7f // 8000007f c28: a872 0000 ori $3, $18, 0x0 // a88000 c2c: e09e 3000 ext_add $4, $30, $6 c30: 9d40 0000 addi $10, $0, 0x0 c34: e0e4 3803 ext_and $7, $4, $7 c38: 9dd2 0004 addi $14, $18, 0x4 c3c: d401 3844 sw $0, $1, $7, 0x44 c40: 07ff fdca call SpiRead16WordsAtR3Addr c44: 9d80 0001 addi $12, $0, 0x1 c48: 07ff fddf call SpiReadWordToR11 c4c: 9e00 0004 addi $16, $0, 0x4 c50: b86b 0058 shfti $3, $11, 0x58 c54: 86c1 0044 lw $22, $1, $0, 0x44 c58: d401 5034 sw $0, $1, $10, 0x34 c5c: b96b 0008 shfti $11, $11, 0x8 c60: b8c3 0018 shfti $6, $3, 0x18 c64: d401 a040 sw $0, $1, $20, 0x40 c68: b86b 0058 shfti $3, $11, 0x58 c6c: d401 5030 sw $0, $1, $10, 0x30 c70: b96b 0008 shfti $11, $11, 0x8 c74: b8a3 0010 shfti $5, $3, 0x10 c78: b86b 0058 shfti $3, $11, 0x58 c7c: b96b 0008 shfti $11, $11, 0x8 c80: b883 0008 shfti $4, $3, 0x8 c84: b86b 0058 shfti $3, $11, 0x58 c88: e063 2000 ext_add $3, $3, $4 c8c: e063 2800 ext_add $3, $3, $5 c90: 9c80 ff80 addi $4, $0, -0x80 c94: e063 3000 ext_add $3, $3, $6 c98: d401 183c sw $0, $1, $3, 0x3c c9c: e076 1800 ext_add $3, $22, $3 ca0: 9c63 00ff addi $3, $3, 0xff ca4: e083 2003 ext_and $4, $3, $4 ca8: d401 2038 sw $0, $1, $4, 0x38 smaz_loop: cac: a550 0003 andi $10, $16, 0x3 cb0: b96b 0008 shfti $11, $11, 0x8 cb4: bc0a 0000 cmpi eq, $10, 0x0 cb8: 0c00 000c jnc label_ce8 cbc: 9e10 0001 addi $16, $16, 0x1 cc0: bc2c 0000 cmpi ne, $12, 0x0 cc4: 1000 0004 jc label_cd4 cc8: 1500 0000 nop $8, $0, 0x0 ccc: 07ff fda7 call SpiRead16WordsAtR3Addr cd0: a86e 0000 ori $3, $14, 0x0 // a88000 label_cd4: cd4: 07ff fdbc call SpiReadWordToR11 cd8: 9d8c 0001 addi $12, $12, 0x1 cdc: bc2c 000f cmpi ne, $12, 0xf ce0: 9dce 0004 addi $14, $14, 0x4 ce4: e18c 500e ext $12, $12, $10, 0xe label_ce8: ce8: bacb 0058 shfti $22, $11, 0x58 cec: a550 0003 andi $10, $16, 0x3 cf0: b96b 0008 shfti $11, $11, 0x8 cf4: bc0a 0000 cmpi eq, $10, 0x0 cf8: 0c00 000c jnc label_d28 cfc: 9e10 0001 addi $16, $16, 0x1 d00: bc2c 0000 cmpi ne, $12, 0x0 d04: 1000 0004 jc label_d14 d08: 1500 0000 nop $8, $0, 0x0 d0c: 07ff fd97 call SpiRead16WordsAtR3Addr d10: a86e 0000 ori $3, $14, 0x0 // a88000 label_d14: d14: 07ff fdac call SpiReadWordToR11 d18: 9d8c 0001 addi $12, $12, 0x1 d1c: bc2c 000f cmpi ne, $12, 0xf d20: 9dce 0004 addi $14, $14, 0x4 d24: e18c 500e ext $12, $12, $10, 0xe label_d28: d28: ba8b 0058 shfti $20, $11, 0x58 d2c: a550 0003 andi $10, $16, 0x3 d30: b96b 0008 shfti $11, $11, 0x8 d34: bc0a 0000 cmpi eq, $10, 0x0 d38: 0c00 000c jnc label_d68 d3c: 9e10 0001 addi $16, $16, 0x1 d40: bc2c 0000 cmpi ne, $12, 0x0 d44: 1000 0004 jc label_d54 d48: 1500 0000 nop $8, $0, 0x0 d4c: 07ff fd87 call SpiRead16WordsAtR3Addr d50: a86e 0000 ori $3, $14, 0x0 // a88000 label_d54: d54: 07ff fd9c call SpiReadWordToR11 d58: 9d8c 0001 addi $12, $12, 0x1 d5c: bc2c 000f cmpi ne, $12, 0xf d60: 9dce 0004 addi $14, $14, 0x4 d64: e18c 500e ext $12, $12, $10, 0xe label_d68: d68: ba4b 0058 shfti $18, $11, 0x58 d6c: a550 0003 andi $10, $16, 0x3 d70: b96b 0008 shfti $11, $11, 0x8 d74: bc0a 0000 cmpi eq, $10, 0x0 d78: 0c00 000c jnc label_da8 d7c: 9e10 0001 addi $16, $16, 0x1 d80: bc2c 0000 cmpi ne, $12, 0x0 d84: 1000 0004 jc label_d94 d88: 1500 0000 nop $8, $0, 0x0 d8c: 07ff fd77 call SpiRead16WordsAtR3Addr d90: a86e 0000 ori $3, $14, 0x0 // a88000 label_d94: d94: 07ff fd8c call SpiReadWordToR11 d98: 9d8c 0001 addi $12, $12, 0x1 d9c: bc2c 000f cmpi ne, $12, 0xf da0: 9dce 0004 addi $14, $14, 0x4 da4: e18c 500e ext $12, $12, $10, 0xe label_da8: da8: b8d2 0008 shfti $6, $18, 0x8 dac: b86b 0058 shfti $3, $11, 0x58 db0: b894 0010 shfti $4, $20, 0x10 db4: b8b6 0018 shfti $5, $22, 0x18 db8: e063 3000 ext_add $3, $3, $6 dbc: e063 2000 ext_add $3, $3, $4 dc0: e383 2800 ext_add $28, $3, $5 dc4: bc3c 0000 cmpi ne, $28, 0x0 dc8: 0c00 00a2 jnc label_1050 dcc: a550 0003 andi $10, $16, 0x3 dd0: b96b 0008 shfti $11, $11, 0x8 dd4: bc0a 0000 cmpi eq, $10, 0x0 dd8: 0c00 000c jnc label_e08 ddc: 9e10 0001 addi $16, $16, 0x1 de0: bc2c 0000 cmpi ne, $12, 0x0 de4: 1000 0004 jc label_df4 de8: 1500 0000 nop $8, $0, 0x0 dec: 07ff fd5f call SpiRead16WordsAtR3Addr df0: a86e 0000 ori $3, $14, 0x0 // a88000 label_df4: df4: 07ff fd74 call SpiReadWordToR11 df8: 9d8c 0001 addi $12, $12, 0x1 dfc: bc2c 000f cmpi ne, $12, 0xf e00: 9dce 0004 addi $14, $14, 0x4 e04: e18c 500e ext $12, $12, $10, 0xe label_e08: e08: bacb 0058 shfti $22, $11, 0x58 e0c: a550 0003 andi $10, $16, 0x3 e10: b96b 0008 shfti $11, $11, 0x8 e14: bc0a 0000 cmpi eq, $10, 0x0 e18: 0c00 000c jnc label_e48 e1c: 9e10 0001 addi $16, $16, 0x1 e20: bc2c 0000 cmpi ne, $12, 0x0 e24: 1000 0004 jc label_e34 e28: 1500 0000 nop $8, $0, 0x0 e2c: 07ff fd4f call SpiRead16WordsAtR3Addr e30: a86e 0000 ori $3, $14, 0x0 // a88000 label_e34 e34: 07ff fd64 call SpiReadWordToR11 e38: 9d8c 0001 addi $12, $12, 0x1 e3c: bc2c 000f cmpi ne, $12, 0xf e40: 9dce 0004 addi $14, $14, 0x4 e44: e18c 500e ext $12, $12, $10, 0xe label_e48: e48: ba8b 0058 shfti $20, $11, 0x58 e4c: a550 0003 andi $10, $16, 0x3 e50: b96b 0008 shfti $11, $11, 0x8 e54: bc0a 0000 cmpi eq, $10, 0x0 e58: 0c00 000c jnc label_e88 e5c: 9e10 0001 addi $16, $16, 0x1 e60: bc2c 0000 cmpi ne, $12, 0x0 e64: 1000 0004 jc label_e74 e68: 1500 0000 nop $8, $0, 0x0 e6c: 07ff fd3f call SpiRead16WordsAtR3Addr e70: a86e 0000 ori $3, $14, 0x0 // a88000 label_e74: e74: 07ff fd54 call SpiReadWordToR11 e78: 9d8c 0001 addi $12, $12, 0x1 e7c: bc2c 000f cmpi ne, $12, 0xf e80: 9dce 0004 addi $14, $14, 0x4 e84: e18c 500e ext $12, $12, $10, 0xe label_e88: e88: ba4b 0058 shfti $18, $11, 0x58 e8c: a550 0003 andi $10, $16, 0x3 e90: b96b 0008 shfti $11, $11, 0x8 e94: bc0a 0000 cmpi eq, $10, 0x0 e98: 0c00 000c jnc label_ec8 e9c: 9e10 0001 addi $16, $16, 0x1 ea0: bc2c 0000 cmpi ne, $12, 0x0 ea4: 1000 0004 jc label_eb4 ea8: 1500 0000 nop $8, $0, 0x0 eac: 07ff fd2f call SpiRead16WordsAtR3Addr eb0: a86e 0000 ori $3, $14, 0x0 // a88000 label_eb4: eb4: 07ff fd44 call SpiReadWordToR11 eb8: 9d8c 0001 addi $12, $12, 0x1 ebc: bc2c 000f cmpi ne, $12, 0xf ec0: 9dce 0004 addi $14, $14, 0x4 ec4: e18c 500e ext $12, $12, $10, 0xe label_ec8: ec8: b892 0008 shfti $4, $18, 0x8 ecc: b86b 0058 shfti $3, $11, 0x58 ed0: b8b4 0010 shfti $5, $20, 0x10 ed4: b8d6 0018 shfti $6, $22, 0x18 ed8: e063 2000 ext_add $3, $3, $4 edc: 84e1 003c lw $7, $1, $0, 0x3c ee0: e063 2800 ext_add $3, $3, $5 ee4: e4bc 3800 cmp $5, $28, $7, 0x0 ee8: 0c00 007c jnc label_10d8 eec: e303 3000 ext_add $24, $3, $6 ef0: ab50 0000 ori $26, $16, 0x0 // a88000 ef4: 1500 8014 nop $8, $0, -0x7fec ef8: 8461 0034 lw $3, $1, $0, 0x34 efc: 8481 0038 lw $4, $1, $0, 0x38 f00: 84a1 0044 lw $5, $1, $0, 0x44 f04: bc23 0000 cmpi ne, $3, 0x0 f08: e2c4 280e ext $22, $4, $5, 0xe f0c: bc18 0000 cmpi eq, $24, 0x0 f10: 1000 0018 jc label_f70 f14: aa96 0000 ori $20, $22, 0x0 // 0 label_f18: f18: a550 0003 andi $10, $16, 0x3 f1c: aa54 0000 ori $18, $20, 0x0 // 0 f20: b96b 0008 shfti $11, $11, 0x8 f24: 9e10 0001 addi $16, $16, 0x1 f28: bc0a 0000 cmpi eq, $10, 0x0 f2c: 0c00 000c jnc label_f5c f30: 9e94 0001 addi $20, $20, 0x1 f34: bc2c 0000 cmpi ne, $12, 0x0 f38: 1000 0004 jc label_f48 f3c: 1500 0000 nop $8, $0, 0x0 f40: 07ff fd0a call SpiRead16WordsAtR3Addr f44: a86e 0000 ori $3, $14, 0x0 // a88000 label_f48: f48: 07ff fd1f call SpiReadWordToR11 f4c: 9d8c 0001 addi $12, $12, 0x1 f50: bc2c 000f cmpi ne, $12, 0xf f54: 9dce 0004 addi $14, $14, 0x4 f58: e18c 500e ext $12, $12, $10, 0xe label_f5c: f5c: b88b 0058 shfti $4, $11, 0x58 f60: e070 d002 ext_sub $3, $16, $26 f64: e463 c000 cmp ge, $3, $24, 0x0 f68: 0fff ffec jnc label_f18 f6c: d812 2000 sb $0, $18, $4, 0x0 // <----- Write byte label_f70: f70: 84c1 0030 lw $6, $1, $0, 0x30 f74: bc26 0001 cmpi ne, $6, 0x1 f78: 1000 001f jc label_ff4 f7c: 9ce0 0001 addi $7, $0, 0x1 f80: 1860 d090 lh $3, $0, -0x2f70 f84: a8a3 031c ori $5, $3, 0x31c // ITH_DPU_BASE+0x31c = DPU_SMAZ_STAT check_smaz_decode_ready: f88: 8465 0000 lw $3, $5, $0, 0x0 f8c: ac83 0001 xori $4, $3, 0x1 f90: a484 0001 andi $4, $4, 0x1 f94: bc04 0000 cmpi eq, $4, 0x0 f98: 1000 0008 jc smaz_decode_ready f9c: 9d40 0031 addi $10, $0, 0x31 fa0: 9d4a ffff addi $10, $10, -0x1 label_fa4: // Delay loop fa4: bd6a 0000 cmpi ne1, $10, 0x0 fa8: 13ff ffff jc label_fa4 fac: 9d4a ffff addi $10, $10, -0x1 fb0: 03ff fff6 jmpi check_smaz_decode_ready fb4: 9d4a 0001 addi $10, $10, 0x1 smaz_decode_ready: fb8: a483 0010 andi $4, $3, 0x10 fbc: bc04 0000 cmpi eq, $4, 0x0 fc0: 0c00 0044 jnc label_10d0 fc4: a483 0020 andi $4, $3, 0x20 fc8: bc04 0000 cmpi eq, $4, 0x0 fcc: 0c00 0043 jnc label_10d8 fd0: a483 0040 andi $4, $3, 0x40 fd4: bc04 0000 cmpi eq, $4, 0x0 fd8: 0c00 0042 jnc label_10e0 fdc: a463 0080 andi $3, $3, 0x80 fe0: bc03 0000 cmpi eq, $3, 0x0 fe4: 1000 0006 jc label_ffc fe8: 8481 0034 lw $4, $1, $0, 0x34 fec: 0000 00b9 jmpi label_12d0 ff0: 9ca0 3005 addi $5, $0, 0x3005 label_ff4: ff4: d401 3830 sw $0, $1, $7, 0x30 ff8: 8481 0034 lw $4, $1, $0, 0x34 label_ffc: ffc: 1860 d090 lh $3, $0, -0x2f70 1000: 9c84 0001 addi $4, $4, 0x1 1004: a8a3 030c ori $5, $3, 0x30c // ITH_DPU_BASE+0x30c - DST_ADDR 1008: d401 2034 sw $0, $1, $4, 0x34 100c: 84c1 0040 lw $6, $1, $0, 0x40 1010: a883 0308 ori $4, $3, 0x308 // ITH_DPU_BASE+0x308 - SRC_ADDR 1014: 84e1 0034 lw $7, $1, $0, 0x34 1018: d404 b000 sw $0, $4, $22, 0x0 101c: a4e7 0001 andi $7, $7, 0x1 1020: d405 3000 sw $0, $5, $6, 0x0 1024: a883 0310 ori $4, $3, 0x310 // ITH_DPU_BASE+0x310 - SRC_LEN 1028: a8a3 0314 ori $5, $3, 0x314 // ITH_DPU_BASE+0x314 - DST_LEN 102c: d404 c000 sw $0, $4, $24, 0x0 1030: e0c6 e000 ext_add $6, $6, $28 1034: a883 0300 ori $4, $3, 0x300 // ITH_DPU_BASE+0x300 - CTRL 1038: d405 e000 sw $0, $5, $28, 0x0 103c: 9c60 0022 addi $3, $0, 0x22 1040: d401 3040 sw $0, $1, $6, 0x40 1044: d404 1800 sw $0, $4, $3, 0x0 1048: 03ff ff19 jmpi smaz_loop 104c: d401 3834 sw $0, $1, $7, 0x34 label_1050: 1050: 1860 d090 lh $3, $0, -0x2f70 1054: a8a3 031c ori $5, $3, 0x31c // ITH_DPU_BASE+0x31c = DPU_SMAZ_STAT check_smaz_status: 1058: 8465 0000 lw $3, $5, $0, 0x0 105c: ac83 0001 xori $4, $3, 0x1 1060: a484 0001 andi $4, $4, 0x1 1064: bc04 0000 cmpi eq, $4, 0x0 1068: 1000 0008 jc smaz_decode_done 106c: 9d40 0031 addi $10, $0, 0x31 1070: 9d4a ffff addi $10, $10, -0x1 label_1074: // Delay loop 1074: bd6a 0000 cmpi ne1, $10, 0x0 1078: 13ff ffff jc label_1074 107c: 9d4a ffff addi $10, $10, -0x1 1080: 03ff fff6 jmpi check_smaz_status 1084: 9d4a 0001 addi $10, $10, 0x1 smaz_decode_done: 1088: a483 0010 andi $4, $3, 0x10 108c: bc04 0000 cmpi eq, $4, 0x0 1090: 0c00 0090 jnc label_12d0 1094: 9ca0 3001 addi $5, $0, 0x3001 1098: a483 0020 andi $4, $3, 0x20 109c: bc04 0000 cmpi eq, $4, 0x0 10a0: 0c00 008c jnc label_12d0 10a4: 9ca0 3002 addi $5, $0, 0x3002 10a8: a483 0040 andi $4, $3, 0x40 10ac: bc04 0000 cmpi eq, $4, 0x0 10b0: 0c00 0088 jnc label_12d0 10b4: 9ca0 3003 addi $5, $0, 0x3003 10b8: a463 0080 andi $3, $3, 0x80 10bc: bc03 0000 cmpi eq, $3, 0x0 10c0: 0c00 0084 jnc label_12d0 10c4: 9ca0 3005 addi $5, $0, 0x3005 10c8: 0000 002d jmpi label_117c 10cc: 1500 0000 nop $8, $0, 0x0 label_10d0: 10d0: 0000 0080 jmpi label_12d0 10d4: 9ca0 3001 addi $5, $0, 0x3001 label_10d8: 10d8: 0000 007e jmpi label_12d0 10dc: 9ca0 3002 addi $5, $0, 0x3002 label_10e0: 10e0: 0000 007c jmpi label_12d0 10e4: 9ca0 3003 addi $5, $0, 0x3003 label_10e8 10e8: aa03 0000 ori $16, $3, 0x0 // ITH_DPU_BASE+0x0 10ec: a9de 0000 ori $14, $30, 0x0 // ITH_MMIO_BASE+0x0 10f0: bcbe 003b cmpi $5, $30, 0x3b label_10f4: 10f4: 1000 0006 jc label_110c 10f8: 9d40 0000 addi $10, $0, 0x0 10fc: 9dce ffc4 addi $14, $14, -0x3c 1100: 9e10 0001 addi $16, $16, 0x1 1104: 03ff fffc jmpi label_10f4 1108: bcae 003b cmpi $5, $14, 0x3b label_110c: 110c: e56a 8000 cmp $11, $10, $16, 0x0 1110: 1000 000e jc label_1148 1114: a872 0000 ori $3, $18, 0x0 // 0 1118: 07ff fc94 call SpiRead16WordsAtR3Addr 111c: 9d80 0000 addi $12, $0, 0x0 label_1120: 1120: 07ff fca9 call SpiReadWordToR11 1124: 1500 0000 nop $8, $0, 0x0 1128: d414 5800 sw $0, $20, $11, 0x0 112c: 9d8c 0001 addi $12, $12, 0x1 1130: bc0c 000f cmpi eq, $12, 0xf 1134: 0fff fffb jnc label_1120 1138: 9e94 0004 addi $20, $20, 0x4 113c: 9d4a 0001 addi $10, $10, 0x1 1140: 03ff fff3 jmpi label_110c 1144: 9e52 003c addi $18, $18, 0x3c label_1148: 1148: b86e 0042 shfti $3, $14, 0x42 114c: bc03 0000 cmpi eq, $3, 0x0 1150: 1000 000b jc label_117c 1154: 1500 0000 nop $8, $0, 0x0 1158: a943 0000 ori $10, $3, 0x0 // 0 label_115c: 115c: a872 0000 ori $3, $18, 0x0 // 0 1160: 07ff fc6e call SpiReadWordToR11AtR3Addr 1164: 9d4a ffff addi $10, $10, -0x1 1168: d414 5800 sw $0, $20, $11, 0x0 116c: 9e52 0004 addi $18, $18, 0x4 1170: bc2a 0000 cmpi ne, $10, 0x0 1174: 13ff fffa jc label_115c 1178: 9e94 0004 addi $20, $20, 0x4 // ---------------------------------------------------------------------------------------------- // Compute Checksum label_117c: 117c: 1500 8003 nop $8, $0, -0x7ffd 1180: 8561 0060 lw $11, $1, $0, 0x60 // Load SMAZ checksum -> $11 1184: bc0b ffff cmpi eq, $11, -0x1 1188: 1000 0047 jc label_12a4 118c: 1860 c000 lh $3, $0, -0x4000 1190: 9d60 8000 addi $11, $0, -0x8000 1194: a8a3 1690 ori $5, $3, 0x1690 // ITH_MMIO_BASE+0x1690 1198: a903 16a4 ori $8, $3, 0x16a4 // ITH_MMIO_BASE+0x16a4 119c: 1880 d090 lh $4, $0, -0x2f70 11a0: 9465 0000 ls $3, $5, $0, 0x0 11a4: a8e4 0018 ori $7, $4, 0x18 // ITH_DPU_BASE+0x18 11a8: 9cc0 0000 addi $6, $0, 0x0 11ac: dc05 5800 ss $0, $5, $11, 0x0 11b0: b863 0010 shfti $3, $3, 0x10 11b4: 94a8 0000 ls $5, $8, $0, 0x0 11b8: b983 0090 shfti $12, $3, 0x90 11bc: d407 3000 sw $0, $7, $6, 0x0 // SMAZ Checksum: 0 -> $6 -> ITH_DPU_BASE+0x18 11c0: bc25 0000 cmpi ne, $5, 0x0 11c4: 1000 0012 jc $pc+(18*4) // 120c 11c8: 18e0 8000 lh $7, $0, -0x8000 11cc: a864 0004 ori $3, $4, 0x4 // ITH_DPU_BASE+0x4 11d0: a8a4 000c ori $5, $4, 0xc // ITH_DPU_BASE+0xc 11d4: d403 3800 sw $0, $3, $7, 0x0 11d8: 1860 2300 lh $3, $0, 0x2300 11dc: d405 f000 sw $0, $5, $30, 0x0 11e0: a863 0002 ori $3, $3, 0x2 // 23000002 11e4: a8a4 0014 ori $5, $4, 0x14 // ITH_DPU_BASE+0x14 11e8: d404 1800 sw $0, $4, $3, 0x0 label_11ec: 11ec: 8465 0000 lw $3, $5, $0, 0x0 11f0: ac63 0001 xori $3, $3, 0x1 11f4: a463 0001 andi $3, $3, 0x1 11f8: bc03 0000 cmpi eq, $3, 0x0 11fc: 0fff fffc jnc label_11ec 1200: 1500 0000 nop $8, $0, 0x0 1204: 0000 001b jmpi label_1270 1208: 18a0 d090 lh $5, $0, -0x2f70 120c: b97e 0042 shfti $11, $30, 0x42 1210: 1860 0008 lh $3, $0, 0x8 1214: d404 1800 sw $0, $4, $3, 0x0 1218: e466 5800 cmp ge, $6, $11, 0x0 121c: 1000 0015 jc label_1270 1220: 18a0 d090 lh $5, $0, -0x2f70 1224: a944 0020 ori $10, $4, 0x20 // ITH_DPU_BASE+0x20 1228: a907 0000 ori $8, $7, 0x0 // 80000000 label_122c: 122c: 8468 0000 lw $3, $8, $0, 0x0 1230: 18e0 00ff lh $7, $0, 0xff 1234: b883 0008 shfti $4, $3, 0x8 1238: b8a3 0018 shfti $5, $3, 0x18 123c: b8c3 0048 shfti $6, $3, 0x48 1240: e084 3803 ext_and $4, $4, $7 1244: 9d6b ffff addi $11, $11, -0x1 1248: b8e3 0058 shfti $7, $3, 0x58 124c: e085 2004 ext_or $4, $5, $4 1250: 9d08 0004 addi $8, $8, 0x4 1254: a466 ff00 andi $3, $6, -0x100 1258: bc2b 0000 cmpi ne, $11, 0x0 125c: e064 1804 ext_or $3, $4, $3 1260: e063 3804 ext_or $3, $3, $7 1264: d40a 1800 sw $0, $10, $3, 0x0 1268: 13ff fff1 jc label_122c 126c: 18a0 d090 lh $5, $0, -0x2f70 label_1270: 1270: 9d60 0000 addi $11, $0, 0x0 1274: a865 0018 ori $3, $5, 0x18 // ITH_DPU_BASE+0x18 1278: 9c80 4005 addi $4, $0, 0x4005 127c: 84c3 0000 lw $6, $3, $0, 0x0 // Load calculated SMAZ checksum ITH_DPU_BASE+0x18 -> $6 1280: 8461 0060 lw $3, $1, $0, 0x60 // Load SMAZ checksum -> $3 1284: d405 5800 sw $0, $5, $11, 0x0 1288: e406 1800 cmp $0, $6, $3, 0x0 // <-- Compare SMAZ checksum to $6 128c: 9c60 1690 addi $3, $0, 0x1690 1290: 18a0 c000 lh $5, $0, -0x4000 1294: e063 2800 ext_add $3, $3, $5 1298: dc03 6000 ss $0, $3, $12, 0x0 129c: 0c00 0011 jnc label_12e0 12a0: 9c60 1698 addi $3, $0, 0x1698 label_12a4: 12a4: 1500 8004 nop $8, $0, -0x7ffc 12a8: 1860 dea0 lh $3, $0, -0x2160 12ac: 9cc0 0000 addi $6, $0, 0x0 12b0: a883 0070 ori $4, $3, 0x70 // ITH_TIMER_BASE+0x70 12b4: a863 0040 ori $3, $3, 0x40 // ITH_TIMER_BASE+0x40 12b8: d404 3000 sw $0, $4, $6, 0x0 12bc: d403 3000 sw $0, $3, $6, 0x0 12c0: 07ff fb52 call $pc+(-1198*4) // 8 12c4: 1500 0000 nop $8, $0, 0x0 12c8: 0000 003c jmpi label_13b8 12cc: 1500 0000 nop $8, $0, 0x0 label_12d0: 12d0: bc05 0000 cmpi eq, $5, 0x0 12d4: 1000 0039 jc label_13b8 12d8: a885 0000 ori $4, $5, 0x0 // ITH_MMIO_BASE+0x0 label_12dc 12dc: 9c60 1698 addi $3, $0, 0x1698 label_12e0: 12e0: 18e0 c000 lh $7, $0, -0x4000 12e4: a4a4 ffff andi $5, $4, -0x1 12e8: e063 3800 ext_add $3, $3, $7 12ec: bc24 4001 cmpi ne, $4, 0x4001 12f0: dc03 2800 ss $0, $3, $5, 0x0 12f4: 1000 0017 jc $pc+(23*4) // 1350 12f8: bc04 4001 cmpi eq, $4, 0x4001 12fc: 1500 8065 nop $8, $0, -0x7f9b 1300: 0400 003c call $pc+(60*4) // 13f0 1304: 9c60 0001 addi $3, $0, 0x1 1308: bc0b 0000 cmpi eq, $11, 0x0 130c: 1000 0015 jc label_1360 1310: 1880 c000 lh $4, $0, -0x4000 1314: 9c60 16a0 addi $3, $0, 0x16a0 1318: a56b ffff andi $11, $11, -0x1 131c: e063 2000 ext_add $3, $3, $4 1320: 18a0 c000 lh $5, $0, -0x4000 1324: dc03 5800 ss $0, $3, $11, 0x0 1328: 1860 dee0 lh $3, $0, -0x2120 132c: a863 0004 ori $3, $3, 0x4 // ITH_SD_BASE+0x4 1330: 8463 0000 lw $3, $3, $0, 0x0 1334: a483 ffff andi $4, $3, -0x1 1338: 9c60 16a2 addi $3, $0, 0x16a2 133c: e063 2800 ext_add $3, $3, $5 1340: dc03 2000 ss $0, $3, $4, 0x0 1344: 1500 5566 nop $8, $0, 0x5566 1348: 0000 0000 jmpi $pc+(0*4) // 1348 134c: 1500 0000 nop $8, $0, 0x0 1350: 1000 0004 jc label_1360 1354: bc04 4006 cmpi eq, $4, 0x4006 1358: 0c00 0015 jnc label_13ac 135c: 1500 0000 nop $8, $0, 0x0 label_1360: 1360: 0400 00b7 call $pc+(183*4) // 163c 1364: 1500 0000 nop $8, $0, 0x0 1368: bc0b 0000 cmpi eq, $11, 0x0 136c: 1000 0010 jc label_13ac 1370: 18c0 c000 lh $6, $0, -0x4000 1374: 9c60 16a0 addi $3, $0, 0x16a0 1378: a56b ffff andi $11, $11, -0x1 137c: e063 3000 ext_add $3, $3, $6 1380: dc03 5800 ss $0, $3, $11, 0x0 1384: 1860 dee0 lh $3, $0, -0x2120 1388: a863 0004 ori $3, $3, 0x4 // ITH_SD_BASE+0x4 138c: 8463 0000 lw $3, $3, $0, 0x0 1390: a483 ffff andi $4, $3, -0x1 1394: 9c60 16a2 addi $3, $0, 0x16a2 1398: e063 3000 ext_add $3, $3, $6 139c: dc03 2000 ss $0, $3, $4, 0x0 13a0: 1500 5566 nop $8, $0, 0x5566 13a4: 0000 0000 jmpi $pc+(0*4) // 13a4 13a8: 1500 0000 nop $8, $0, 0x0 label_13ac: 13ac: 1500 5566 nop $8, $0, 0x5566 13b0: 0000 0000 jmpi $pc+(0*4) // 13b0 13b4: 1500 0000 nop $8, $0, 0x0 label_13b8: 13b8: 8521 0000 lw $9, $1, $0, 0x0 13bc: 8541 0004 lw $10, $1, $0, 0x4 13c0: 8581 0008 lw $12, $1, $0, 0x8 13c4: 85c1 000c lw $14, $1, $0, 0xc 13c8: 8601 0010 lw $16, $1, $0, 0x10 13cc: 8641 0014 lw $18, $1, $0, 0x14 13d0: 8681 0018 lw $20, $1, $0, 0x18 13d4: 86c1 001c lw $22, $1, $0, 0x1c 13d8: 8701 0020 lw $24, $1, $0, 0x20 13dc: 8741 0024 lw $26, $1, $0, 0x24 13e0: 8781 0028 lw $28, $1, $0, 0x28 13e4: 87c1 002c lw $30, $1, $0, 0x2c 13e8: 4400 4800 jmp $9 13ec: 9c21 0064 addi $1, $1, 0x64