00010000 ; 00010000 ; +-------------------------------------------------------------------------+ 00010000 ; | This file is generated by The Interactive Disassembler (IDA) | 00010000 ; | Copyright (c) 2007 by DataRescue sa/nv, | 00010000 ; +-------------------------------------------------------------------------+ 00010000 ; 00010000 ; Input MD5 : 3F398BF57069686DB08DB49477612CA7 00010000 ; Processor : ARMB 00010000 ; Target assembler: Generic assembler for ARM 00010000 ; Byte sex : Big endian 00010000 ; =========================================================================== 00010000 ; Segment type: Regular 00010000 AREA ram, DATA, ALIGN=0 00010000 ?? ?? ?? ??+ % 0x18000 00028000 ?? ?? ?? ??+nand_page_buf % 0x800 ; DATA XREF: boot1_main+96o 00028000 ?? ?? ?? ??+ ; boot1_main+A6o 00028000 ?? ?? ?? ??+ ; boot1_main:first_and_third_matcho ... 00028800 ?? ?? ?? ??+nand_spare_buf % 0x40 ; DATA XREF: boot1_main+1EAo 00028840 ?? ?? ?? ??+ % 0x3C 0002887C ?? ?? ?? % 3 0002887F ?? ?? ?? ?? dword_2887F % 4 ; DATA XREF: boot1_main:off_D400A58o 00028883 ?? ALIGN 4 00028884 ?? ?? ?? ?? dword_28884 % 4 ; DATA XREF: boot1_main:off_D400A4Co 00028888 ?? ?? ?? ??+ % 0x40 000288C8 ?? ?? ?? ??+dword_288C8 % 0x100 ; DATA XREF: boot1_main:off_D400DA8o 000289C8 ?? ?? ?? ??+dword_289C8 % 0x17638 ; DATA XREF: boot1_main:off_D400DA4o 000289C8 ?? ?? ?? ??+; ram ends 0D010000 ; =========================================================================== 0D010000 ; Segment type: Regular 0D010000 AREA NAND, DATA, ALIGN=0 0D010000 ?? ?? ?? ?? nand_flash_command % 4 ; DATA XREF: read_nand_page:off_D400378o 0D010000 ; boot1_main:off_D40074Co 0D010000 ; boot1_main:off_D400A14o ... 0D010004 ?? ?? ?? ?? nand_flash_config % 4 0D010008 ?? ?? ?? ?? nand_flash_address_pageoffset % 4 ; DATA XREF: read_nand_page:off_D400374o 0D01000C ?? ?? ?? ?? nand_flash_address_pageno % 4 0D010010 ?? ?? ?? ?? nand_flash_dma_addr_data % 4 ; DATA XREF: read_nand_page:off_D40037Co 0D010014 ?? ?? ?? ??+nand_flash_dma_addr_spare % 0xEC 0D010014 ?? ?? ?? ??+; NAND ends 0D020000 ; =========================================================================== 0D020000 ; Segment type: Regular 0D020000 AREA AES, DATA, ALIGN=0 0D020000 ?? ?? ?? ??+aes_io % 0x100 ; DATA XREF: aes_init:off_D4000CCo 0D020000 ?? ?? ?? ??+ ; boot1_main:off_D40075Co 0D020000 ?? ?? ?? ??+ ; boot1_main:off_D400D98o ... 0D020000 ?? ?? ?? ??+; AES ends 0D030000 ; =========================================================================== 0D030000 ; Segment type: Regular 0D030000 AREA SHA, DATA, ALIGN=0 0D030000 ?? ?? ?? ??+sha_io % 0x100 ; DATA XREF: sha1:off_D400230o 0D030000 ?? ?? ?? ??+ ; boot1_main:off_D400760o 0D030000 ?? ?? ?? ??+ ; boot1_main:off_D400D9Co ... 0D030000 ?? ?? ?? ??+; SHA ends 0D400000 ; =========================================================================== 0D400000 ; Segment type: Pure code 0D400000 AREA boot1, CODE, READWRITE, ALIGN=0 0D400000 ; =============== S U B R O U T I N E ======================================= 0D400000 boot1_start 0D400000 E3 A0 00 00 MOV R0, #0 0D400004 EE 07 0F 15 MCR p15, 0, R0,c7,c5 0D400008 EE 07 0F 16 MCR p15, 0, R0,c7,c6 0D40000C EE 11 0F 10 MRC p15, 0, R0,c1,c0 0D400010 E3 80 0A 01 ORR R0, R0, #0x1000 0D400014 EE 01 0F 10 MCR p15, 0, R0,c1,c0 0D400018 E5 9F 00 50 LDR R0, =dword_D404320 ; start 0D40001C E5 9F 10 50 LDR R1, =dword_D404320 ; end 0D400020 E3 A0 20 00 MOV R2, #0 ; val 0D400024 E3 A0 30 04 MOV R3, #4 ; stride 0D400028 EB 00 00 0B BL memfill 0D40002C E3 A0 10 00 MOV R1, #0 0D400030 E3 A0 40 00 MOV R4, #0 0D400034 E3 A0 B0 00 MOV R11, #0 0D400038 E3 A0 B0 00 MOV R11, #0 0D40003C E3 A0 E0 00 MOV LR, #0 0D400040 E5 9F D0 30 LDR SP, =boot1_stack 0D400044 EB 00 0F D9 BL jump_to_main 0D400048 E1 A0 10 00 MOV R1, R0 0D40004C EE 11 0F 10 MRC p15, 0, R0,c1,c0 0D400050 E3 C0 0A 01 BIC R0, R0, #0x1000 0D400054 EE 01 0F 10 MCR p15, 0, R0,c1,c0 0D400058 E1 A0 F0 01 MOV PC, R1 0D400058 ; End of function boot1_start 0D40005C ; =============== S U B R O U T I N E ======================================= 0D40005C ; int __stdcall memfill(void *start, void *end, unsigned int val, unsigned int stride) 0D40005C memfill ; CODE XREF: boot1_start+28p 0D40005C ; memfill+Cj 0D40005C E1 50 00 01 CMP R0, R1 0D400060 2A 00 00 01 BCS locret_D40006C 0D400064 E6 80 20 03 STR R2, [R0],R3 0D400068 EA FF FF FB B memfill 0D40006C ; --------------------------------------------------------------------------- 0D40006C locret_D40006C ; CODE XREF: memfill+4j 0D40006C E1 2F FF 1E BX LR 0D40006C ; --------------------------------------------------------------------------- 0D400070 ; void *start 0D400070 0D 40 43 20 start DCD dword_D404320 ; DATA XREF: boot1_start+18r 0D400074 ; void *end 0D400074 0D 40 43 20 end DCD dword_D404320 ; DATA XREF: boot1_start+1Cr 0D400078 0D 40 EF FC off_D400078 DCD boot1_stack ; DATA XREF: boot1_start+40r 0D400078 ; End of function memfill 0D40007C ; =============== S U B R O U T I N E ======================================= 0D40007C boot1_debug_output ; CODE XREF: boot1_main+16p 0D40007C ; boot1_main+138p 0D40007C ; boot1_main+144p ... 0D40007C 49 04 LDR R1, =starlet_gpio2_data 0D40007E 4B 05 LDR R3, =0xFF00FFFF 0D400080 68 0A LDR R2, [R1] 0D400082 06 00 LSLS R0, R0, #0x18 0D400084 40 13 ANDS R3, R2 0D400086 0A 00 LSRS R0, R0, #8 0D400088 43 03 ORRS R3, R0 0D40008A 60 0B STR R3, [R1] 0D40008C 47 70 BX LR 0D40008C ; --------------------------------------------------------------------------- 0D40008E 00 00 ALIGN 0x10 0D400090 0D 80 00 E0 off_D400090 DCD starlet_gpio2_data ; DATA XREF: boot1_debug_outputr 0D400094 FF 00 FF FF dword_D400094 DCD 0xFF00FFFF ; DATA XREF: boot1_debug_output+2r 0D400094 ; End of function boot1_debug_output 0D400098 ; =============== S U B R O U T I N E ======================================= 0D400098 aes_init ; CODE XREF: boot1_main+49Ap 0D400098 ; boot1_main+82Ap 0D400098 B5 30 PUSH {R4,R5,LR} 0D40009A 4B 0C LDR R3, =aes_io 0D40009C 1C 0C ADDS R4, R1, #0 0D40009E 1C 15 ADDS R5, R2, #0 0D4000A0 49 0B LDR R1, =(aes_io+0xC) 0D4000A2 22 00 MOVS R2, #0 0D4000A4 60 1A STR R2, [R3] 0D4000A6 22 03 MOVS R2, #3 0D4000A8 loc_D4000A8 ; CODE XREF: aes_init+16j 0D4000A8 C8 08 LDMIA R0!, {R3} 0D4000AA 60 0B STR R3, [R1] 0D4000AC 3A 01 SUBS R2, #1 0D4000AE D5 FB BPL loc_D4000A8 0D4000B0 49 08 LDR R1, =(aes_io+0x10) 0D4000B2 1C 20 ADDS R0, R4, #0 0D4000B4 22 03 MOVS R2, #3 0D4000B6 loc_D4000B6 ; CODE XREF: aes_init+24j 0D4000B6 C8 08 LDMIA R0!, {R3} 0D4000B8 60 0B STR R3, [R1] 0D4000BA 3A 01 SUBS R2, #1 0D4000BC D5 FB BPL loc_D4000B6 0D4000BE 4B 06 LDR R3, =(aes_io+4) 0D4000C0 60 1D STR R5, [R3] 0D4000C2 33 04 ADDS R3, #4 0D4000C4 60 1D STR R5, [R3] 0D4000C6 BC 30 POP {R4,R5} 0D4000C8 BC 01 POP {R0} 0D4000CA 47 00 BX R0 0D4000CA ; --------------------------------------------------------------------------- 0D4000CC 0D 02 00 00 off_D4000CC DCD aes_io ; DATA XREF: aes_init+2r 0D4000D0 0D 02 00 0C off_D4000D0 DCD aes_io+0xC ; DATA XREF: aes_init+8r 0D4000D4 0D 02 00 10 off_D4000D4 DCD aes_io+0x10 ; DATA XREF: aes_init+18r 0D4000D8 0D 02 00 04 off_D4000D8 DCD aes_io+4 ; DATA XREF: aes_init+26r 0D4000D8 ; End of function aes_init 0D4000DC ; =============== S U B R O U T I N E ======================================= 0D4000DC sha1 ; CODE XREF: verify_certificate+74p 0D4000DC ; verify_certificate+8Ap 0D4000DC ; boot1_main+6E8p 0D4000DC arg_0 = 0 0D4000DC B5 F0 PUSH {R4-R7,LR} 0D4000DE 46 57 MOV R7, R10 0D4000E0 46 4E MOV R6, R9 0D4000E2 46 45 MOV R5, R8 0D4000E4 B4 E0 PUSH {R5-R7} 0D4000E6 46 91 MOV R9, R2 0D4000E8 22 A8 MOVS R2, #0xA8 0D4000EA 1C 07 ADDS R7, R0, #0 0D4000EC 1C 1C ADDS R4, R3, #0 0D4000EE 20 00 MOVS R0, #0 0D4000F0 03 13 LSLS R3, R2, #0xC 0D4000F2 B0 81 SUB SP, SP, #4 0D4000F4 1C 0D ADDS R5, R1, #0 0D4000F6 46 82 MOV R10, R0 0D4000F8 26 00 MOVS R6, #0 0D4000FA 46 98 MOV R8, R3 0D4000FC 29 02 CMP R1, #2 0D4000FE D0 3C BEQ loc_D40017A 0D400100 29 02 CMP R1, #2 0D400102 D9 23 BLS loc_D40014C 0D400104 29 03 CMP R1, #3 0D400106 D1 00 BNE loc_D40010A 0D400108 E0 7E B loc_D400208 0D40010A ; --------------------------------------------------------------------------- 0D40010A loc_D40010A ; CODE XREF: sha1+2Aj 0D40010A ; sha1+72j 0D40010A 22 07 MOVS R2, #7 0D40010C 42 53 NEGS R3, R2 0D40010E 46 9A MOV R10, R3 0D400110 loc_D400110 ; CODE XREF: sha1+9Aj 0D400110 ; sha1+A4j sha1+136j 0D400110 42 B4 CMP R4, R6 0D400112 D0 10 BEQ loc_D400136 0D400114 20 01 MOVS R0, #1 0D400116 F0 01 FB 15 BL call_ahbMemFlush 0D40011A 20 05 MOVS R0, #5 0D40011C F0 01 FB 70 BL call_ahbMemFlush2 0D400120 4B 42 LDR R3, =(sha_io+4) 0D400122 46 48 MOV R0, R9 0D400124 1B A2 SUBS R2, R4, R6 0D400126 60 18 STR R0, [R3] 0D400128 3A 40 SUBS R2, #0x40 0D40012A 23 80 06 1B MOVLS R3, 0x80000000 0D40012E 09 92 LSRS R2, R2, #6 0D400130 43 1A ORRS R2, R3 0D400132 4B 3F LDR R3, =sha_io 0D400134 60 1A STR R2, [R3] 0D400136 loc_D400136 ; CODE XREF: sha1+36j 0D400136 2D 03 CMP R5, #3 0D400138 D0 23 BEQ loc_D400182 0D40013A loc_D40013A ; CODE XREF: sha1+9Cj 0D40013A ; sha1+12Aj 0D40013A 46 50 MOV R0, R10 0D40013C B0 01 ADD SP, SP, #4 0D40013E BC 38 POP {R3-R5} 0D400140 46 98 MOV R8, R3 0D400142 46 A1 MOV R9, R4 0D400144 46 AA MOV R10, R5 0D400146 BC F0 POP {R4-R7} 0D400148 BC 02 POP {R1} 0D40014A 47 08 BX R1 0D40014C ; --------------------------------------------------------------------------- 0D40014C loc_D40014C ; CODE XREF: sha1+26j 0D40014C 29 01 CMP R1, #1 0D40014E D1 DC BNE loc_D40010A 0D400150 4B 37 LDR R3, =sha_io 0D400152 4A 38 LDR R2, =0x67452301 0D400154 60 18 STR R0, [R3] 0D400156 33 08 ADDS R3, #8 0D400158 60 1A STR R2, [R3] 0D40015A 4A 37 LDR R2, =0xEFCDAB89 0D40015C 33 04 ADDS R3, #4 0D40015E 60 1A STR R2, [R3] 0D400160 4A 36 LDR R2, =0x98BADCFE 0D400162 33 04 ADDS R3, #4 0D400164 60 1A STR R2, [R3] 0D400166 4A 36 LDR R2, =0x10325476 0D400168 33 04 ADDS R3, #4 0D40016A 60 1A STR R2, [R3] 0D40016C 4A 35 LDR R2, =0xC3D2E1F0 0D40016E 33 04 ADDS R3, #4 0D400170 60 1A STR R2, [R3] 0D400172 60 3C STR R4, [R7] 0D400174 2C 00 CMP R4, #0 0D400176 D1 CB BNE loc_D400110 0D400178 E7 DF B loc_D40013A 0D40017A ; --------------------------------------------------------------------------- 0D40017A loc_D40017A ; CODE XREF: sha1+22j 0D40017A 68 3B LDR R3, [R7] 0D40017C 19 1B ADDS R3, R3, R4 0D40017E 60 3B STR R3, [R7] 0D400180 E7 C6 B loc_D400110 0D400182 ; --------------------------------------------------------------------------- 0D400182 loc_D400182 ; CODE XREF: sha1+5Cj 0D400182 20 A8 03 00 MOVLS R0, 0xA8000 0D400186 21 00 MOVS R1, #0 0D400188 22 80 MOVS R2, #0x80 0D40018A F0 03 FC DD BL memcmp_0 0D40018E 2E 00 CMP R6, #0 0D400190 D1 43 BNE loc_D40021A 0D400192 loc_D400192 ; CODE XREF: sha1+14Ej 0D400192 46 69 MOV R1, SP 0D400194 23 80 MOVS R3, #0x80 0D400196 31 03 ADDS R1, #3 0D400198 42 5B NEGS R3, R3 0D40019A 70 0B STRB R3, [R1] 0D40019C 23 A8 03 1B MOVLS R3, 0xA8000 0D4001A0 18 F0 ADDS R0, R6, R3 0D4001A2 22 01 MOVS R2, #1 0D4001A4 F0 03 FC 8A BL memcpy 0D4001A8 23 40 MOVS R3, #0x40 0D4001AA 1B 9B SUBS R3, R3, R6 0D4001AC 2B 08 CMP R3, #8 0D4001AE D8 01 BHI loc_D4001B4 0D4001B0 2E 00 CMP R6, #0 0D4001B2 D1 2F BNE loc_D400214 0D4001B4 loc_D4001B4 ; CODE XREF: sha1+D2j 0D4001B4 4A 24 LDR R2, =0xA803C 0D4001B6 25 40 MOVS R5, #0x40 0D4001B8 loc_D4001B8 ; CODE XREF: sha1+13Cj 0D4001B8 68 3B LDR R3, [R7] 0D4001BA 00 DB LSLS R3, R3, #3 0D4001BC 60 13 STR R3, [R2] 0D4001BE 4C 1C LDR R4, =sha_io 0D4001C0 loc_D4001C0 ; CODE XREF: sha1+E8j 0D4001C0 68 23 LDR R3, [R4] 0D4001C2 2B 00 CMP R3, #0 0D4001C4 DB FC BLT loc_D4001C0 0D4001C6 20 01 MOVS R0, #1 0D4001C8 F0 01 FA BC BL call_ahbMemFlush 0D4001CC 20 05 MOVS R0, #5 0D4001CE F0 01 FB 17 BL call_ahbMemFlush2 0D4001D2 4B 16 LDR R3, =(sha_io+4) 0D4001D4 46 40 MOV R0, R8 0D4001D6 1C 2A ADDS R2, R5, #0 0D4001D8 60 18 STR R0, [R3] 0D4001DA 3A 40 SUBS R2, #0x40 0D4001DC 23 80 MOVS R3, #0x80 0D4001DE 09 92 LSRS R2, R2, #6 0D4001E0 06 1B LSLS R3, R3, #0x18 0D4001E2 43 1A ORRS R2, R3 0D4001E4 60 22 STR R2, [R4] 0D4001E6 4A 12 LDR R2, =sha_io 0D4001E8 loc_D4001E8 ; CODE XREF: sha1+110j 0D4001E8 68 13 LDR R3, [R2] 0D4001EA 2B 00 CMP R3, #0 0D4001EC DB FC BLT loc_D4001E8 0D4001EE 22 00 MOVS R2, #0 0D4001F0 21 04 MOVS R1, #4 0D4001F2 loc_D4001F2 ; CODE XREF: sha1+124j 0D4001F2 48 16 LDR R0, =(sha_io+8) 0D4001F4 18 13 ADDS R3, R2, R0 0D4001F6 68 1B LDR R3, [R3] 0D4001F8 98 09 LDR R0, [SP,#0x24+arg_0] 0D4001FA 50 13 STR R3, [R2,R0] 0D4001FC 32 04 ADDS R2, #4 0D4001FE 39 01 SUBS R1, #1 0D400200 D5 F7 BPL loc_D4001F2 0D400202 23 00 MOVS R3, #0 0D400204 60 3B STR R3, [R7] 0D400206 E7 98 B loc_D40013A 0D400208 ; --------------------------------------------------------------------------- 0D400208 loc_D400208 ; CODE XREF: sha1+2Cj 0D400208 68 3B LDR R3, [R7] 0D40020A 26 3F MOVS R6, #0x3F 0D40020C 19 1B ADDS R3, R3, R4 0D40020E 40 26 ANDS R6, R4 0D400210 60 3B STR R3, [R7] 0D400212 E7 7D B loc_D400110 0D400214 ; --------------------------------------------------------------------------- 0D400214 loc_D400214 ; CODE XREF: sha1+D6j 0D400214 4A 0E LDR R2, =0xA807C 0D400216 25 80 MOVS R5, #0x80 0D400218 E7 CE B loc_D4001B8 0D40021A ; --------------------------------------------------------------------------- 0D40021A loc_D40021A ; CODE XREF: sha1+B4j 0D40021A 46 4A MOV R2, R9 0D40021C 19 11 ADDS R1, R2, R4 0D40021E 20 A8 MOVS R0, #0xA8 0D400220 1B 89 SUBS R1, R1, R6 0D400222 1C 32 ADDS R2, R6, #0 0D400224 03 00 LSLS R0, R0, #0xC 0D400226 F0 03 FC 49 BL memcpy 0D40022A E7 B2 B loc_D400192 0D40022A ; --------------------------------------------------------------------------- 0D40022C 0D 03 00 04 off_D40022C DCD sha_io+4 ; DATA XREF: sha1+44r 0D40022C ; sha1+F6r 0D400230 0D 03 00 00 off_D400230 DCD sha_io ; DATA XREF: sha1+56r 0D400230 ; sha1+74r sha1+E2r ... 0D400234 67 45 23 01 dword_D400234 DCD 0x67452301 ; DATA XREF: sha1+76r 0D400238 EF CD AB 89 dword_D400238 DCD 0xEFCDAB89 ; DATA XREF: sha1+7Er 0D40023C 98 BA DC FE dword_D40023C DCD 0x98BADCFE ; DATA XREF: sha1+84r 0D400240 10 32 54 76 dword_D400240 DCD 0x10325476 ; DATA XREF: sha1+8Ar 0D400244 C3 D2 E1 F0 dword_D400244 DCD 0xC3D2E1F0 ; DATA XREF: sha1+90r 0D400248 00 0A 80 3C dword_D400248 DCD 0xA803C ; DATA XREF: sha1:loc_D4001B4r 0D40024C 0D 03 00 08 off_D40024C DCD sha_io+8 ; DATA XREF: sha1:loc_D4001F2r 0D400250 00 0A 80 7C dword_D400250 DCD 0xA807C ; DATA XREF: sha1:loc_D400214r 0D400250 ; End of function sha1 0D400254 ; =============== S U B R O U T I N E ======================================= 0D400254 calc_ecc ; CODE XREF: boot1_main+218p 0D400254 ; boot1_main+476p 0D400254 ; boot1_main+738p 0D400254 var_34 = -0x34 0D400254 retval = -0x30 0D400254 var_2C = -0x2C 0D400254 var_25 = -0x25 0D400254 B5 F0 PUSH {R4-R7,LR} 0D400256 46 5F MOV R7, R11 0D400258 46 56 MOV R6, R10 0D40025A 46 4D MOV R5, R9 0D40025C 46 44 MOV R4, R8 0D40025E B4 F0 PUSH {R4-R7} 0D400260 B0 84 SUB SP, SP, #0x10 0D400262 09 53 LSRS R3, R2, #5 0D400264 46 88 MOV R8, R1 0D400266 0A 52 LSRS R2, R2, #9 0D400268 21 00 MOVS R1, #0 0D40026A 90 02 STR R0, [SP,#0x34+var_2C] 0D40026C 91 01 STR R1, [SP,#0x34+retval] 0D40026E 46 9B MOV R11, R3 0D400270 25 00 MOVS R5, #0 0D400272 46 91 MOV R9, R2 0D400274 2A 00 CMP R2, #0 0D400276 D9 43 BLS loc_D400300 0D400278 10 9B ASRS R3, R3, #2 0D40027A 24 FF MOVS R4, #0xFF 0D40027C 06 21 LSLS R1, R4, #0x18 0D40027E 27 FF MOVS R7, #0xFF 0D400280 26 FF MOVS R6, #0xFF 0D400282 93 00 STR R3, [SP,#0x34+var_34] 0D400284 46 8A MOV R10, R1 0D400286 04 3F LSLS R7, R7, #0x10 0D400288 02 36 LSLS R6, R6, #8 0D40028A loc_D40028A ; CODE XREF: calc_ecc+94j 0D40028A 00 AA LSLS R2, R5, #2 0D40028C 46 44 MOV R4, R8 0D40028E 18 A3 ADDS R3, R4, R2 0D400290 9C 00 LDR R4, [SP,#0x34+var_34] 0D400292 46 59 MOV R1, R11 0D400294 6C 18 LDR R0, [R3,#0x40] 0D400296 1B 0B SUBS R3, R1, R4 0D400298 44 43 ADD R3, R8 0D40029A 58 9A LDR R2, [R3,R2] 0D40029C 42 82 CMP R2, R0 0D40029E D0 21 BEQ loc_D4002E4 0D4002A0 46 53 MOV R3, R10 0D4002A2 40 13 ANDS R3, R2 0D4002A4 0E 19 LSRS R1, R3, #0x18 0D4002A6 1C 13 ADDS R3, R2, #0 0D4002A8 40 3B ANDS R3, R7 0D4002AA 0A 1B LSRS R3, R3, #8 0D4002AC 43 19 ORRS R1, R3 0D4002AE 1C 13 ADDS R3, R2, #0 0D4002B0 40 33 ANDS R3, R6 0D4002B2 02 1B LSLS R3, R3, #8 0D4002B4 43 19 ORRS R1, R3 0D4002B6 23 FF MOVS R3, #0xFF 0D4002B8 40 1A ANDS R2, R3 0D4002BA 06 13 LSLS R3, R2, #0x18 0D4002BC 43 19 ORRS R1, R3 0D4002BE 46 52 MOV R2, R10 0D4002C0 1C 03 ADDS R3, R0, #0 0D4002C2 40 02 ANDS R2, R0 0D4002C4 40 3B ANDS R3, R7 0D4002C6 0A 1B LSRS R3, R3, #8 0D4002C8 0E 12 LSRS R2, R2, #0x18 0D4002CA 43 1A ORRS R2, R3 0D4002CC 1C 03 ADDS R3, R0, #0 0D4002CE 40 33 ANDS R3, R6 0D4002D0 24 FF MOVS R4, #0xFF 0D4002D2 02 1B LSLS R3, R3, #8 0D4002D4 40 20 ANDS R0, R4 0D4002D6 43 1A ORRS R2, R3 0D4002D8 06 03 LSLS R3, R0, #0x18 0D4002DA 43 1A ORRS R2, R3 0D4002DC 40 51 EORS R1, R2 0D4002DE 1E 4B SUBS R3, R1, #1 0D4002E0 42 0B TST R3, R1 0D4002E2 D1 03 BNE loc_D4002EC 0D4002E4 loc_D4002E4 ; CODE XREF: calc_ecc+4Aj 0D4002E4 ; calc_ecc+E6j 0D4002E4 35 01 ADDS R5, #1 0D4002E6 45 4D CMP R5, R9 0D4002E8 D3 CF BCC loc_D40028A 0D4002EA E0 09 B loc_D400300 0D4002EC ; --------------------------------------------------------------------------- 0D4002EC loc_D4002EC ; CODE XREF: calc_ecc+8Ej 0D4002EC 4A 13 LDR R2, =0xFFF 0D4002EE 1C 0B ADDS R3, R1, #0 0D4002F0 0C 0C LSRS R4, R1, #0x10 0D4002F2 40 13 ANDS R3, R2 0D4002F4 40 63 EORS R3, R4 0D4002F6 42 93 CMP R3, R2 0D4002F8 D0 0C BEQ ecc_ok 0D4002FA 21 01 MOVS R1, #1 ; ECC fail 0D4002FC 42 49 NEGS R1, R1 0D4002FE 91 01 STR R1, [SP,#0x34+retval] 0D400300 loc_D400300 ; CODE XREF: calc_ecc+22j 0D400300 ; calc_ecc+96j 0D400300 98 01 LDR R0, [SP,#0x34+retval] 0D400302 B0 04 ADD SP, SP, #0x10 0D400304 BC 78 POP {R3-R6} 0D400306 46 98 MOV R8, R3 0D400308 46 A1 MOV R9, R4 0D40030A 46 AA MOV R10, R5 0D40030C 46 B3 MOV R11, R6 0D40030E BC F0 POP {R4-R7} 0D400310 BC 02 POP {R1} 0D400312 47 08 BX R1 0D400314 ; --------------------------------------------------------------------------- 0D400314 ecc_ok ; CODE XREF: calc_ecc+A4j 0D400314 99 02 LDR R1, [SP,#0x34+var_2C] 0D400316 02 6A LSLS R2, R5, #9 0D400318 05 20 LSLS R0, R4, #0x14 0D40031A 18 52 ADDS R2, R2, R1 0D40031C 0D C0 LSRS R0, R0, #0x17 0D40031E 23 07 MOVS R3, #7 0D400320 5C 81 LDRB R1, [R0,R2] 0D400322 40 1C ANDS R4, R3 0D400324 23 01 MOVS R3, #1 0D400326 40 A3 LSLS R3, R4 0D400328 40 4B EORS R3, R1 0D40032A 46 6C MOV R4, SP 0D40032C 21 0F MOVS R1, #0xF 0D40032E 73 E3 STRB R3, [R4,#0x34+var_25] 0D400330 18 80 ADDS R0, R0, R2 0D400332 44 69 ADD R1, SP 0D400334 22 01 MOVS R2, #1 0D400336 F0 03 FB C1 BL memcpy 0D40033A E7 D3 B loc_D4002E4 0D40033A ; --------------------------------------------------------------------------- 0D40033C 00 00 0F FF off_D40033C DCD 0xFFF ; DATA XREF: calc_ecc:loc_D4002ECr 0D40033C ; End of function calc_ecc 0D400340 ; =============== S U B R O U T I N E ======================================= 0D400340 ; int __stdcall read_nand_page(int pageno, void *data_addr, void *ecc_addr) 0D400340 read_nand_page ; CODE XREF: boot1_main+80p 0D400340 ; boot1_main+1F2p 0D400340 ; boot1_main+260p ... 0D400340 B5 30 PUSH {R4,R5,LR} 0D400342 4B 0C LDR R3, =nand_flash_address_pageoffset 0D400344 1C 0C ADDS R4, R1, #0 0D400346 49 0C LDR R1, =nand_flash_command 0D400348 1C 15 ADDS R5, R2, #0 0D40034A 22 00 MOVS R2, #0 0D40034C 60 0A STR R2, [R1] 0D40034E 60 1A STR R2, [R3] 0D400350 33 04 ADDS R3, #4 0D400352 60 18 STR R0, [R3] 0D400354 23 9F 06 1B MOVLS R3, 0x9F000000 0D400358 60 0B STR R3, [R1] 0D40035A loc_D40035A ; CODE XREF: read_nand_page+1Ej 0D40035A 68 0B LDR R3, [R1] 0D40035C 2B 00 CMP R3, #0 0D40035E DB FC BLT loc_D40035A 0D400360 4B 06 LDR R3, =nand_flash_dma_addr_data 0D400362 60 1C STR R4, [R3] 0D400364 33 04 ADDS R3, #4 0D400366 60 1D STR R5, [R3] 0D400368 4B 05 LDR R3, =0x8030B840 0D40036A 60 0B STR R3, [R1] 0D40036C BC 30 POP {R4,R5} 0D40036E BC 01 POP {R0} 0D400370 47 00 BX R0 0D400370 ; --------------------------------------------------------------------------- 0D400372 00 00 ALIGN 4 0D400374 0D 01 00 08 off_D400374 DCD nand_flash_address_pageoffset ; DATA XREF: read_nand_page+2r 0D400378 0D 01 00 00 off_D400378 DCD nand_flash_command ; DATA XREF: read_nand_page+6r 0D40037C 0D 01 00 10 off_D40037C DCD nand_flash_dma_addr_data ; DATA XREF: read_nand_page+20r 0D400380 80 30 B8 40 dword_D400380 DCD 0x8030B840 ; DATA XREF: read_nand_page+28r 0D400380 ; End of function read_nand_page 0D400384 ; =============== S U B R O U T I N E ======================================= 0D400384 strlen_maybe ; CODE XREF: verify_certificate+A2p 0D400384 ; verify_certificate+C2p 0D400384 B5 10 PUSH {R4,LR} 0D400386 1C 04 ADDS R4, R0, #0 0D400388 1C 08 ADDS R0, R1, #0 0D40038A 21 00 MOVS R1, #0 0D40038C 1E 42 SUBS R2, R0, #1 0D40038E D4 05 BMI loc_D40039C 0D400390 loc_D400390 ; CODE XREF: strlen_maybe+16j 0D400390 5C A3 LDRB R3, [R4,R2] 0D400392 2B 00 CMP R3, #0 0D400394 D1 02 BNE loc_D40039C 0D400396 31 01 ADDS R1, #1 0D400398 3A 01 SUBS R2, #1 0D40039A D5 F9 BPL loc_D400390 0D40039C loc_D40039C ; CODE XREF: strlen_maybe+Aj 0D40039C ; strlen_maybe+10j 0D40039C 1A 40 SUBS R0, R0, R1 0D40039E BC 10 POP {R4} 0D4003A0 BC 02 POP {R1} 0D4003A2 47 08 BX R1 0D4003A2 ; End of function strlen_maybe 0D4003A4 ; =============== S U B R O U T I N E ======================================= 0D4003A4 verify_certificate ; CODE XREF: boot1_main+336p 0D4003A4 ; boot1_main+392p 0D4003A4 ; boot1_main+3EEp ... 0D4003A4 var_3C = -0x3C 0D4003A4 var_38 = -0x38 0D4003A4 var_34 = -0x34 0D4003A4 arg_0 = 0 0D4003A4 arg_4 = 4 0D4003A4 B5 F0 PUSH {R4-R7,LR} 0D4003A6 46 57 MOV R7, R10 0D4003A8 46 4E MOV R6, R9 0D4003AA 46 45 MOV R5, R8 0D4003AC B4 E0 PUSH {R5-R7} 0D4003AE B0 87 SUB SP, SP, #0x1C 0D4003B0 9E 10 LDR R6, [SP,#0x3C+arg_4] 0D4003B2 1C 04 ADDS R4, R0, #0 0D4003B4 9D 0F LDR R5, [SP,#0x3C+arg_0] 0D4003B6 20 AC MOVS R0, #0xAC 0D4003B8 1C 0F ADDS R7, R1, #0 0D4003BA 46 92 MOV R10, R2 0D4003BC 03 00 LSLS R0, R0, #0xC 0D4003BE 1C 21 ADDS R1, R4, #0 0D4003C0 1C 32 ADDS R2, R6, #0 0D4003C2 46 98 MOV R8, R3 0D4003C4 F0 03 FB 7A BL memcpy 0D4003C8 2D 02 CMP R5, #2 0D4003CA D0 15 BEQ loc_D4003F8 0D4003CC 2D 02 CMP R5, #2 0D4003CE D9 0D BLS loc_D4003EC 0D4003D0 2D 03 CMP R5, #3 0D4003D2 D0 11 BEQ loc_D4003F8 0D4003D4 2D 04 CMP R5, #4 0D4003D6 D0 0F BEQ loc_D4003F8 0D4003D8 rsa_sig_fail ; CODE XREF: verify_certificate+4Aj 0D4003D8 ; verify_certificate+66j 0D4003D8 ; verify_certificate+9Cj ... 0D4003D8 20 08 MOVS R0, #8 0D4003DA 42 40 NEGS R0, R0 0D4003DC rsa_sig_ok ; CODE XREF: verify_certificate+7Aj 0D4003DC ; verify_certificate+90j 0D4003DC ; verify_certificate+D6j 0D4003DC B0 07 ADD SP, SP, #0x1C 0D4003DE BC 38 POP {R3-R5} 0D4003E0 46 98 MOV R8, R3 0D4003E2 46 A1 MOV R9, R4 0D4003E4 46 AA MOV R10, R5 0D4003E6 BC F0 POP {R4-R7} 0D4003E8 BC 02 POP {R1} 0D4003EA 47 08 BX R1 0D4003EC ; --------------------------------------------------------------------------- 0D4003EC loc_D4003EC ; CODE XREF: verify_certificate+2Aj 0D4003EC 2D 01 CMP R5, #1 0D4003EE D1 F3 BNE rsa_sig_fail 0D4003F0 4C 23 LDR R4, =0xAC240 0D4003F2 4B 24 LDR R3, =0xFFFFFDC0 0D4003F4 1C 20 ADDS R0, R4, #0 0D4003F6 E0 02 B loc_D4003FE 0D4003F8 ; --------------------------------------------------------------------------- 0D4003F8 loc_D4003F8 ; CODE XREF: verify_certificate+26j 0D4003F8 ; verify_certificate+2Ej 0D4003F8 ; verify_certificate+32j 0D4003F8 4C 23 LDR R4, =0xAC140 0D4003FA 4B 24 LDR R3, =0xFFFFFEC0 0D4003FC 1C 20 ADDS R0, R4, #0 ; haystack 0D4003FE loc_D4003FE ; CODE XREF: verify_certificate+52j 0D4003FE 1C 39 ADDS R1, R7, #0 ; needle 0D400400 22 40 MOVS R2, #0x40 ; len 0D400402 18 F6 ADDS R6, R6, R3 0D400404 F0 03 FA E6 BL memcmp 0D400408 28 00 CMP R0, #0 0D40040A D1 E5 BNE rsa_sig_fail 0D40040C AF 01 ADD R7, SP, #0x3C+var_38 0D40040E 90 00 STR R0, [SP,#0x3C+var_3C] 0D400410 21 01 MOVS R1, #1 0D400412 1C 38 ADDS R0, R7, #0 0D400414 1C 22 ADDS R2, R4, #0 0D400416 23 00 MOVS R3, #0 0D400418 F7 FF FE 60 BL sha1 0D40041C 28 00 CMP R0, #0 0D40041E DB DD BLT rsa_sig_ok 0D400420 AB 02 ADD R3, SP, #0x3C+var_34 0D400422 46 99 MOV R9, R3 0D400424 93 00 STR R3, [SP,#0x3C+var_3C] 0D400426 1C 38 ADDS R0, R7, #0 0D400428 21 03 MOVS R1, #3 0D40042A 1C 22 ADDS R2, R4, #0 0D40042C 1C 33 ADDS R3, R6, #0 0D40042E F7 FF FE 55 BL sha1 0D400432 28 00 CMP R0, #0 0D400434 DB D2 BLT rsa_sig_ok 0D400436 2D 02 CMP R5, #2 0D400438 D0 13 BEQ loc_D400462 0D40043A 2D 02 CMP R5, #2 0D40043C D8 0D BHI loc_D40045A 0D40043E 2D 01 CMP R5, #1 0D400440 D1 CA BNE rsa_sig_fail 0D400442 46 40 MOV R0, R8 0D400444 21 04 MOVS R1, #4 0D400446 F7 FF FF 9D BL strlen_maybe 0D40044A 46 51 MOV R1, R10 0D40044C 90 00 STR R0, [SP,#0x3C+var_3C] 0D40044E 4A 10 LDR R2, =0xAC004 0D400450 46 48 MOV R0, R9 0D400452 46 43 MOV R3, R8 0D400454 F0 02 F9 20 BL verify_sig_RSA4096 0D400458 E0 0E B loc_D400478 0D40045A ; --------------------------------------------------------------------------- 0D40045A loc_D40045A ; CODE XREF: verify_certificate+98j 0D40045A 2D 03 CMP R5, #3 0D40045C D0 01 BEQ loc_D400462 0D40045E 2D 04 CMP R5, #4 0D400460 D1 BA BNE rsa_sig_fail 0D400462 loc_D400462 ; CODE XREF: verify_certificate+94j 0D400462 ; verify_certificate+B8j 0D400462 21 04 MOVS R1, #4 0D400464 46 40 MOV R0, R8 0D400466 F7 FF FF 8D BL strlen_maybe 0D40046A 46 51 MOV R1, R10 0D40046C 90 00 STR R0, [SP,#0x3C+var_3C] 0D40046E 4A 08 LDR R2, =0xAC004 0D400470 46 48 MOV R0, R9 0D400472 46 43 MOV R3, R8 0D400474 F0 02 F9 02 BL verify_sig_RSA2048 0D400478 loc_D400478 ; CODE XREF: verify_certificate+B4j 0D400478 28 00 CMP R0, #0 0D40047A D0 AF BEQ rsa_sig_ok 0D40047C E7 AC B rsa_sig_fail 0D40047C ; --------------------------------------------------------------------------- 0D40047E 00 00 ALIGN 0x10 0D400480 00 0A C2 40 off_D400480 DCD 0xAC240 ; DATA XREF: verify_certificate+4Cr 0D400484 FF FF FD C0 dword_D400484 DCD 0xFFFFFDC0 ; DATA XREF: verify_certificate+4Er 0D400488 00 0A C1 40 off_D400488 DCD 0xAC140 ; DATA XREF: verify_certificate:loc_D4003F8r 0D40048C FF FF FE C0 dword_D40048C DCD 0xFFFFFEC0 ; DATA XREF: verify_certificate+56r 0D400490 00 0A C0 04 off_D400490 DCD 0xAC004 ; DATA XREF: verify_certificate+AAr 0D400490 ; verify_certificate+CAr 0D400490 ; End of function verify_certificate 0D400494 ; =============== S U B R O U T I N E ======================================= 0D400494 boot1_main ; CODE XREF: jump_to_main+8j 0D400494 ; DATA XREF: jump_to_main+4o 0D400494 ; jump_to_main:off_D403FBCo 0D400494 var_2C8 = -0x2C8 0D400494 var_2C4 = -0x2C4 0D400494 var_2C0 = -0x2C0 0D400494 var_2BC = -0x2BC 0D400494 var_2B8 = -0x2B8 0D400494 var_2B4 = -0x2B4 0D400494 var_2B0 = -0x2B0 0D400494 var_2AC = -0x2AC 0D400494 var_2A8 = -0x2A8 0D400494 var_2A4 = -0x2A4 0D400494 var_2A0 = -0x2A0 0D400494 var_29C = -0x29C 0D400494 var_298 = -0x298 0D400494 var_294 = -0x294 0D400494 var_290 = -0x290 0D400494 var_28C = -0x28C 0D400494 var_288 = -0x288 0D400494 var_284 = -0x284 0D400494 var_280 = -0x280 0D400494 var_27C = -0x27C 0D400494 var_278 = -0x278 0D400494 var_274 = -0x274 0D400494 var_270 = -0x270 0D400494 var_26C = -0x26C 0D400494 var_268 = -0x268 0D400494 var_264 = -0x264 0D400494 var_260 = -0x260 0D400494 var_24C = -0x24C 0D400494 var_1BC = -0x1BC 0D400494 var_17C = -0x17C 0D400494 boot2_magic = -0x13C 0D400494 var_134 = -0x134 0D400494 var_A0 = -0xA0 0D400494 var_90 = -0x90 0D400494 var_8C = -0x8C 0D400494 var_88 = -0x88 0D400494 var_84 = -0x84 0D400494 var_80 = -0x80 0D400494 bad_block_map = -0x70 0D400494 B5 F0 PUSH {R4-R7,LR} 0D400496 46 5F MOV R7, R11 0D400498 46 56 MOV R6, R10 0D40049A 46 4D MOV R5, R9 0D40049C 46 44 MOV R4, R8 0D40049E B4 F0 PUSH {R4-R7} 0D4004A0 4C A5 LDR R4, =-0x2A4 0D4004A2 20 00 MOVS R0, #0 0D4004A4 44 A5 ADD SP, R4 0D4004A6 46 81 MOV R9, R0 0D4004A8 20 11 MOVS R0, #0x11 0D4004AA F7 FF FD E7 BL boot1_debug_output ; output 11h 0D4004AE A8 19 ADD R0, SP, #0x2C8+var_264 0D4004B0 A9 18 ADD R1, SP, #0x2C8+var_268 0D4004B2 F0 00 FF E9 BL read_214 0D4004B6 9B 19 LDR R3, [SP,#0x2C8+var_264] 0D4004B8 24 07 MOVS R4, #7 0D4004BA 2B 00 CMP R3, #0 0D4004BC D1 00 BNE loc_D4004C0 0D4004BE 24 47 MOVS R4, #0x47 0D4004C0 loc_D4004C0 ; CODE XREF: boot1_main+28j 0D4004C0 4B 9E LDR R3, =mem_mirror_config_reg 0D4004C2 60 1C STR R4, [R3] 0D4004C4 4B 9E LDR R3, =0xD8B0010 0D4004C6 46 49 MOV R1, R9 0D4004C8 60 19 STR R1, [R3] 0D4004CA 20 00 MOVS R0, #0 0D4004CC 21 00 MOVS R1, #0 0D4004CE F0 01 FF 41 BL call_init_dram 0D4004D2 F0 00 FC 6F BL init_gpios 0D4004D6 4B 9B LDR R3, =0x1E7 0D4004D8 46 6D MOV R5, SP 0D4004DA 24 3F MOVS R4, #0b111111 0D4004DC 44 6B ADD R3, SP 0D4004DE 35 CB ADDS R5, #0b11001011 0D4004E0 43 A3 BICS R3, R4 0D4004E2 43 A5 BICS R5, R4 0D4004E4 22 01 MOVS R2, #1 0D4004E6 93 03 STR R3, [SP,#0x2C8+var_2BC] 0D4004E8 95 02 STR R5, [SP,#0x2C8+var_2C0] 0D4004EA 46 93 MOV R11, R2 ; R11 = blockmap_found_flag = 1 0D4004EC boot2_blockmap_search ; CODE XREF: boot1_main+12Cj 0D4004EC 46 58 MOV R0, R11 0D4004EE 28 02 CMP R0, #2 0D4004F0 D1 00 BNE loc_D4004F4 0D4004F2 E0 8F B blockmap_found2 0D4004F4 ; --------------------------------------------------------------------------- 0D4004F4 loc_D4004F4 ; CODE XREF: boot1_main+5Cj 0D4004F4 ; boot1_main+1C8j 0D4004F4 24 00 MOVS R4, #0 0D4004F6 A8 63 ADD R0, SP, #0x2C8+boot2_magic 0D4004F8 49 93 LDR R1, =boot2_magic 0D4004FA 22 08 MOVS R2, #8 0D4004FC F0 03 FA DE BL memcpy 0D400500 94 98 STR R4, [SP,#0x2C8+bad_block_map+8] 0D400502 4C 92 LDR R4, =nand_flash_command 0D400504 23 01 MOVS R3, #1 0D400506 keep_looking ; CODE XREF: boot1_main+D4j 0D400506 1C 5D ADDS R5, R3, #1 ; R5 = blockno 0D400508 01 A8 LSLS R0, R5, #6 0D40050A 21 A0 MOVS R1, #0xA0 0D40050C 22 A2 MOVS R2, #0xA2 0D40050E 38 01 SUBS R0, #1 ; pageno = R3 * 0x40 - 1 0D400510 02 89 LSLS R1, R1, #0xA ; 0x28000 0D400512 02 92 LSLS R2, R2, #0xA ; 0x28800 0D400514 F7 FF FF 14 BL read_nand_page 0D400518 read_NAND_status ; CODE XREF: boot1_main+88j 0D400518 68 23 LDR R3, [R4] ; read NAND status 0D40051A 2B 00 CMP R3, #0 0D40051C DB FC BLT read_NAND_status 0D40051E 20 03 MOVS R0, #3 0D400520 F0 01 F9 10 BL call_ahbMemFlush 0D400524 20 00 MOVS R0, #0 0D400526 F0 01 F9 6B BL call_ahbMemFlush2 0D40052A 20 A0 02 80 MOVLS R0, nand_page_buf ; haystack 0D40052E A9 63 ADD R1, SP, #0x2C8+boot2_magic ; needle 0D400530 22 08 MOVS R2, #8 ; len 0D400532 F0 03 FA 4F BL memcmp ; does page begin with boot2 magic? 0D400536 28 00 CMP R0, #0 0D400538 D1 5C BNE no_boot2_magic 0D40053A 20 A0 02 80 MOVLS R0, nand_page_buf ; haystack 0D40053E 49 84 LDR R1, =(nand_page_buf+0x4C) ; needle 0D400540 22 4C MOVS R2, #0x4C ; len 0D400542 F0 03 FA 47 BL memcmp ; are the first two blockmaps identical? 0D400546 28 00 CMP R0, #0 0D400548 D1 4C BNE not_a_blockmap 0D40054A first_and_third_match ; CODE XREF: boot1_main+15Ej 0D40054A 21 A0 02 89 MOVLS R1, nand_page_buf 0D40054E blockmap_found ; CODE XREF: boot1_main+17Ej 0D40054E 68 8A LDR R2, [R1,#blockmap.id] 0D400550 9B 98 LDR R3, [SP,#0x2C8+bad_block_map+8] 0D400552 42 9A CMP R2, R3 0D400554 D9 06 BLS invalid_blockmap 0D400556 A8 96 ADD R0, SP, #0x2C8+bad_block_map 0D400558 92 98 STR R2, [SP,#0x2C8+bad_block_map+8] 0D40055A 30 0C ADDS R0, #0xC 0D40055C 31 0C ADDS R1, #0xC 0D40055E 22 40 MOVS R2, #0x40 0D400560 F0 03 FA AC BL memcpy ; copy blockmap to stack 0D400564 invalid_blockmap ; CODE XREF: boot1_main+C0j 0D400564 ; boot1_main+16Cj 0D400564 ; boot1_main+17Aj 0D400564 1C 2B ADDS R3, R5, #0 0D400566 2D 08 CMP R5, #8 0D400568 D3 CD BCC keep_looking 0D40056A 46 59 MOV R1, R11 0D40056C 29 01 CMP R1, #1 0D40056E D1 00 BNE loc_D400572 0D400570 E0 DD B set_r2_to_1 0D400572 ; --------------------------------------------------------------------------- 0D400572 loc_D400572 ; CODE XREF: boot1_main+DAj 0D400572 22 07 MOVS R2, #7 0D400574 loc_D400574 ; CODE XREF: boot1_main+29Cj 0D400574 27 A2 MOVS R7, #0xA2 0D400576 46 5B MOV R3, R11 0D400578 1C 14 ADDS R4, R2, #0 0D40057A 02 BF LSLS R7, R7, #0xA ; r7 = 0x28800 0D40057C 2B 01 CMP R3, #1 0D40057E D1 00 BNE loc_D400582 0D400580 E0 D2 B loc_D400728 0D400582 ; --------------------------------------------------------------------------- 0D400582 loc_D400582 ; CODE XREF: boot1_main+EAj 0D400582 20 01 MOVS R0, #1 0D400584 42 41 NEGS R1, R0 0D400586 46 8A MOV R10, R1 0D400588 loc_D400588 ; CODE XREF: boot1_main+298j 0D400588 9B 98 LDR R3, [SP,#0x2C8+bad_block_map+8] 0D40058A 2B 01 CMP R3, #1 0D40058C D8 00 BHI loc_D400590 0D40058E E0 A5 B loc_D4006DC 0D400590 ; --------------------------------------------------------------------------- 0D400590 loc_D400590 ; CODE XREF: boot1_main+F8j 0D400590 1E 51 SUBS R1, R2, #1 0D400592 29 06 CMP R1, #6 0D400594 D9 00 BLS loc_D400598 0D400596 E0 CC B dec_r2 0D400598 ; --------------------------------------------------------------------------- 0D400598 loc_D400598 ; CODE XREF: boot1_main+100j 0D400598 AD 96 ADD R5, SP, #0x2C8+bad_block_map 0D40059A 19 53 ADDS R3, R2, R5 0D40059C 7B 1B LDRB R3, [R3,#0xC] 0D40059E 2B 01 CMP R3, #1 ; is bad_block_map[R2] == 1? 0D4005A0 D0 62 BEQ loc_D400668 0D4005A2 1C 0A ADDS R2, R1, #0 0D4005A4 loc_D4005A4 ; CODE XREF: boot1_main+1D2j 0D4005A4 ; boot1_main+2A0j 0D4005A4 ; boot1_main+57Aj 0D4005A4 2A 06 CMP R2, #6 0D4005A6 D9 64 BLS loc_D400672 0D4005A8 error_4 ; CODE XREF: boot1_main+1DCj 0D4005A8 ; boot1_main+292j 0D4005A8 23 04 MOVS R3, #4 0D4005AA 42 5C NEGS R4, R3 0D4005AC 46 A0 MOV R8, R4 0D4005AE loc_D4005AE ; CODE XREF: boot1_main+1E2j 0D4005AE 46 44 MOV R4, R8 0D4005B0 check_for_error ; CODE XREF: boot1_main+246j 0D4005B0 ; boot1_main+6FCj 0D4005B0 2C 00 CMP R4, #0 0D4005B2 DB 00 BLT error 0D4005B4 E2 0F B ok 0D4005B6 ; --------------------------------------------------------------------------- 0D4005B6 error ; CODE XREF: boot1_main+11Ej 0D4005B6 ; boot1_main+2D4j 0D4005B6 ; boot1_main+484j ... 0D4005B6 46 A1 MOV R9, R4 ; r9 = error code 0D4005B8 24 01 MOVS R4, #1 0D4005BA 44 A3 ADD R11, R4 ; increment blockmap flag 0D4005BC 46 5D MOV R5, R11 0D4005BE 2D 02 CMP R5, #2 0D4005C0 D9 94 BLS boot2_blockmap_search 0D4005C2 blockmap_search_failed ; CODE XREF: boot1_main+548j 0D4005C2 46 49 MOV R1, R9 0D4005C4 43 CB MVNS R3, R1 0D4005C6 06 0D LSLS R5, R1, #0x18 0D4005C8 06 1C LSLS R4, R3, #0x18 0D4005CA boot1_main_panic ; CODE XREF: boot1_main+14Ej 0D4005CA 0E 28 LSRS R0, R5, #0x18 0D4005CC F7 FF FD 56 BL boot1_debug_output ; panic1 0D4005D0 48 60 LDR R0, =1000000 0D4005D2 F0 03 FB 7F BL delay_1 0D4005D6 0E 20 LSRS R0, R4, #0x18 0D4005D8 F7 FF FD 50 BL boot1_debug_output ; panic2 0D4005DC 48 5D LDR R0, =1000000 0D4005DE F0 03 FB 79 BL delay_1 0D4005E2 E7 F2 B boot1_main_panic 0D4005E4 ; --------------------------------------------------------------------------- 0D4005E4 not_a_blockmap ; CODE XREF: boot1_main+B4j 0D4005E4 20 A0 02 80 MOVLS R0, nand_page_buf ; haystack 0D4005E8 49 5B LDR R1, =(nand_page_buf+0x98) ; needle 0D4005EA 22 4C MOVS R2, #0x4C ; len 0D4005EC F0 03 F9 F2 BL memcmp ; are the first and third copies identical? 0D4005F0 28 00 CMP R0, #0 0D4005F2 D0 AA BEQ first_and_third_match 0D4005F4 no_boot2_magic ; CODE XREF: boot1_main+A4j 0D4005F4 48 56 LDR R0, =(nand_page_buf+0x4C) ; haystack 0D4005F6 A9 63 ADD R1, SP, #0x2C8+boot2_magic ; needle 0D4005F8 22 08 MOVS R2, #8 ; len 0D4005FA F0 03 F9 EB BL memcmp ; does the blockmap begin with correct magic? 0D4005FE 28 00 CMP R0, #0 0D400600 D1 B0 BNE invalid_blockmap 0D400602 48 53 LDR R0, =(nand_page_buf+0x4C) ; haystack 0D400604 49 54 LDR R1, =(nand_page_buf+0x98) ; needle 0D400606 22 4C MOVS R2, #0x4C ; len 0D400608 F0 03 F9 E4 BL memcmp ; are both copies of the blockmap identical? 0D40060C 28 00 CMP R0, #0 0D40060E D1 A9 BNE invalid_blockmap 0D400610 49 4F LDR R1, =(nand_page_buf+0x4C) 0D400612 E7 9C B blockmap_found 0D400614 ; --------------------------------------------------------------------------- 0D400614 blockmap_found2 ; CODE XREF: boot1_main+5Ej 0D400614 4A 4D LDR R2, =nand_flash_command 0D400616 loc_D400616 ; CODE XREF: boot1_main+186j 0D400616 68 13 LDR R3, [R2] 0D400618 2B 00 CMP R3, #0 0D40061A DB FC BLT loc_D400616 0D40061C 4A 4F LDR R2, =aes_io 0D40061E check_AES_status ; CODE XREF: boot1_main+18Ej 0D40061E 68 13 LDR R3, [R2] 0D400620 2B 00 CMP R3, #0 0D400622 DB FC BLT check_AES_status 0D400624 4A 4E LDR R2, =sha_io 0D400626 check_SHA_status ; CODE XREF: boot1_main+196j 0D400626 68 13 LDR R3, [R2] 0D400628 2B 00 CMP R3, #0 0D40062A DB FC BLT check_SHA_status 0D40062C 20 01 MOVS R0, #1 0D40062E F0 01 F8 89 BL call_ahbMemFlush 0D400632 20 03 MOVS R0, #3 0D400634 F0 01 F8 86 BL call_ahbMemFlush 0D400638 20 04 MOVS R0, #4 0D40063A F0 01 F8 83 BL call_ahbMemFlush 0D40063E 20 05 MOVS R0, #5 0D400640 F0 01 F8 80 BL call_ahbMemFlush 0D400644 20 00 MOVS R0, #0 0D400646 F0 01 F8 DB BL call_ahbMemFlush2 0D40064A 20 03 MOVS R0, #3 0D40064C F0 01 F8 D8 BL call_ahbMemFlush2 0D400650 20 04 MOVS R0, #4 0D400652 F0 01 F8 D5 BL call_ahbMemFlush2 0D400656 20 05 MOVS R0, #5 0D400658 F0 01 F8 D2 BL call_ahbMemFlush2 0D40065C E7 4A B loc_D4004F4 0D40065E ; --------------------------------------------------------------------------- 0D40065E loc_D40065E ; CODE XREF: boot1_main+1DAj 0D40065E A8 96 ADD R0, SP, #0x2C8+bad_block_map 0D400660 18 23 ADDS R3, R4, R0 0D400662 7B 1B LDRB R3, [R3,#0xC] 0D400664 2B 01 CMP R3, #1 0D400666 D1 9D BNE loc_D4005A4 0D400668 loc_D400668 ; CODE XREF: boot1_main+10Cj 0D400668 44 54 ADD R4, R10 0D40066A 1E 62 SUBS R2, R4, #1 0D40066C 2A 06 CMP R2, #6 0D40066E D9 F6 BLS loc_D40065E 0D400670 E7 9A B error_4 0D400672 ; --------------------------------------------------------------------------- 0D400672 loc_D400672 ; CODE XREF: boot1_main+112j 0D400672 2C 00 CMP R4, #0 0D400674 46 A0 MOV R8, R4 0D400676 DB 9A BLT loc_D4005AE 0D400678 46 45 MOV R5, R8 0D40067A 01 AD LSLS R5, R5, #6 0D40067C 21 A0 MOVS R1, #0xA0 0D40067E 22 A2 02 92 MOVLS R2, nand_spare_buf ; ecc_addr 0D400682 1C 28 ADDS R0, R5, #0 ; pageno 0D400684 02 89 LSLS R1, R1, #0xA 0D400686 F7 FF FE 5B BL read_nand_page 0D40068A 4A 30 LDR R2, =nand_flash_command 0D40068C 46 AA MOV R10, R5 0D40068E wait_for_nand2 ; CODE XREF: boot1_main+1FEj 0D40068E 68 13 LDR R3, [R2] 0D400690 2B 00 CMP R3, #0 0D400692 DB FC BLT wait_for_nand2 0D400694 20 03 MOVS R0, #3 0D400696 F0 01 F8 55 BL call_ahbMemFlush 0D40069A 20 00 MOVS R0, #0 0D40069C F0 01 F8 B0 BL call_ahbMemFlush2 0D4006A0 20 A0 MOVS R0, #0xA0 0D4006A2 21 A2 MOVS R1, #0xA2 0D4006A4 22 80 MOVS R2, #0x80 0D4006A6 02 80 LSLS R0, R0, #0xA 0D4006A8 02 89 LSLS R1, R1, #0xA 0D4006AA 01 12 LSLS R2, R2, #4 0D4006AC F7 FF FD D2 BL calc_ecc 0D4006B0 28 00 CMP R0, #0 0D4006B2 D1 57 BNE loc_D400764 0D4006B4 21 A0 MOVS R1, #0xA0 0D4006B6 A8 8E ADD R0, SP, #0x2C8+var_90 0D4006B8 02 89 LSLS R1, R1, #0xA 0D4006BA 22 20 MOVS R2, #0x20 0D4006BC F0 03 F9 FE BL memcpy 0D4006C0 9B 8E LDR R3, [SP,#0x2C8+var_90] 0D4006C2 2B 20 CMP R3, #0x20 0D4006C4 D1 07 BNE error_5 0D4006C6 23 80 MOVS R3, #0x80 0D4006C8 9A 8F LDR R2, [SP,#0x2C8+var_8C] 0D4006CA 02 9B LSLS R3, R3, #0xA 0D4006CC 42 9A CMP R2, R3 0D4006CE D8 02 BHI error_5 0D4006D0 20 3F MOVS R0, #0x3F 0D4006D2 42 02 TST R2, R0 0D4006D4 D0 49 BEQ loc_D40076A 0D4006D6 error_5 ; CODE XREF: boot1_main+230j 0D4006D6 ; boot1_main+23Aj 0D4006D6 24 05 MOVS R4, #5 0D4006D8 return_error ; CODE XREF: boot1_main+43Ej 0D4006D8 ; boot1_main+576j 0D4006D8 ; boot1_main+71Ej ... 0D4006D8 42 64 NEGS R4, R4 0D4006DA E7 69 B check_for_error 0D4006DC ; --------------------------------------------------------------------------- 0D4006DC loc_D4006DC ; CODE XREF: boot1_main+FAj 0D4006DC 1E 53 SUBS R3, R2, #1 0D4006DE 2B 06 CMP R3, #6 0D4006E0 D8 27 BHI dec_r2 0D4006E2 49 1A LDR R1, =nand_flash_command 0D4006E4 46 88 MOV R8, R1 0D4006E6 loc_D4006E6 ; CODE XREF: boot1_main+290j 0D4006E6 01 A6 LSLS R6, R4, #6 0D4006E8 25 00 MOVS R5, #0 0D4006EA loc_D4006EA ; CODE XREF: boot1_main+284j 0D4006EA 21 A0 MOVS R1, #0xA0 0D4006EC 22 A2 MOVS R2, #0xA2 0D4006EE 19 70 ADDS R0, R6, R5 ; pageno 0D4006F0 02 89 LSLS R1, R1, #0xA 0D4006F2 02 92 LSLS R2, R2, #0xA 0D4006F4 F7 FF FE 24 BL read_nand_page 0D4006F8 loc_D4006F8 ; CODE XREF: boot1_main+26Aj 0D4006F8 46 42 MOV R2, R8 0D4006FA 68 13 LDR R3, [R2] 0D4006FC 2B 00 CMP R3, #0 0D4006FE DB FB BLT loc_D4006F8 0D400700 20 03 MOVS R0, #3 0D400702 F0 01 F8 1F BL call_ahbMemFlush 0D400706 20 00 MOVS R0, #0 0D400708 F0 01 F8 7A BL call_ahbMemFlush2 0D40070C 78 3B LDRB R3, [R7] 0D40070E 2B FF CMP R3, #0xFF 0D400710 D0 00 BEQ loc_D400714 0D400712 E1 7D B loc_D400A10 0D400714 ; --------------------------------------------------------------------------- 0D400714 loc_D400714 ; CODE XREF: boot1_main+27Cj 0D400714 35 01 ADDS R5, #1 0D400716 2D 01 CMP R5, #1 0D400718 D9 E7 BLS loc_D4006EA 0D40071A loc_D40071A ; CODE XREF: boot1_main+57Ej 0D40071A 2D 02 CMP R5, #2 0D40071C D1 00 BNE loc_D400720 0D40071E E1 75 B loc_D400A0C 0D400720 ; --------------------------------------------------------------------------- 0D400720 loc_D400720 ; CODE XREF: boot1_main+288j 0D400720 1E 62 SUBS R2, R4, #1 0D400722 2A 06 CMP R2, #6 0D400724 D9 DF BLS loc_D4006E6 0D400726 E7 3F B error_4 0D400728 ; --------------------------------------------------------------------------- 0D400728 loc_D400728 ; CODE XREF: boot1_main+ECj 0D400728 25 01 MOVS R5, #1 0D40072A 46 AA MOV R10, R5 0D40072C E7 2C B loc_D400588 0D40072E ; --------------------------------------------------------------------------- 0D40072E set_r2_to_1 ; CODE XREF: boot1_main+DCj 0D40072E 22 01 MOVS R2, #1 0D400730 E7 20 B loc_D400574 0D400732 ; --------------------------------------------------------------------------- 0D400732 dec_r2 ; CODE XREF: boot1_main+102j 0D400732 ; boot1_main+24Cj 0D400732 3A 01 SUBS R2, #1 0D400734 E7 36 B loc_D4005A4 0D400734 ; --------------------------------------------------------------------------- 0D400736 00 00 ALIGN 4 0D400738 FF FF FD 5C dword_D400738 DCD -0x2A4 ; DATA XREF: boot1_main+Cr 0D40073C 0D 80 00 60 off_D40073C DCD mem_mirror_config_reg ; DATA XREF: boot1_main:loc_D4004C0r 0D400740 0D 8B 00 10 dword_D400740 DCD 0xD8B0010 ; DATA XREF: boot1_main+30r 0D400744 00 00 01 E7 off_D400744 DCD 0x1E7 ; DATA XREF: boot1_main+42r 0D400748 0D 40 3F C0 off_D400748 DCD boot2_magic ; DATA XREF: boot1_main+64r 0D40074C 0D 01 00 00 off_D40074C DCD nand_flash_command ; DATA XREF: boot1_main+6Er 0D40074C ; boot1_main:blockmap_found2r 0D40074C ; boot1_main+1F6r ... 0D400750 ; void *needle 0D400750 00 02 80 4C needle DCD nand_page_buf+0x4C ; DATA XREF: boot1_main+AAr 0D400750 ; boot1_main:no_boot2_magicr 0D400750 ; boot1_main+16Er ... 0D400754 00 0F 42 40 dword_D400754 DCD 1000000 ; DATA XREF: boot1_main+13Cr 0D400754 ; boot1_main+148r 0D400758 ; void *off_D400758 0D400758 00 02 80 98 off_D400758 DCD nand_page_buf+0x98 ; DATA XREF: boot1_main+154r 0D400758 ; boot1_main+170r 0D40075C 0D 02 00 00 off_D40075C DCD aes_io ; DATA XREF: boot1_main+188r 0D400760 0D 03 00 00 off_D400760 DCD sha_io ; DATA XREF: boot1_main+190r 0D400764 ; --------------------------------------------------------------------------- 0D400764 loc_D400764 ; CODE XREF: boot1_main+21Ej 0D400764 1E 04 SUBS R4, R0, #0 0D400766 DA 00 BGE loc_D40076A 0D400768 E7 25 B error 0D40076A ; --------------------------------------------------------------------------- 0D40076A loc_D40076A ; CODE XREF: boot1_main+240j 0D40076A ; boot1_main+2D2j 0D40076A 9B 8F LDR R3, [SP,#0x2C8+var_8C] 0D40076C 4E A9 LDR R6, =nand_flash_command 0D40076E 0A DD LSRS R5, R3, #0xB 0D400770 24 00 MOVS R4, #0 0D400772 27 01 MOVS R7, #1 0D400774 loc_D400774 ; CODE XREF: boot1_main+2E4j 0D400774 ; boot1_main+304j 0D400774 68 33 LDR R3, [R6] 0D400776 2B 00 CMP R3, #0 0D400778 DB FC BLT loc_D400774 0D40077A 20 03 MOVS R0, #3 0D40077C F0 00 FF E2 BL call_ahbMemFlush 0D400780 20 00 MOVS R0, #0 0D400782 F0 01 F8 3D BL call_ahbMemFlush2 0D400786 42 AC CMP R4, R5 0D400788 D8 00 BHI loc_D40078C 0D40078A E0 A3 B loc_D4008D4 0D40078C ; --------------------------------------------------------------------------- 0D40078C loc_D40078C ; CODE XREF: boot1_main+2F4j 0D40078C ; boot1_main+45Cj 0D40078C 2C 00 CMP R4, #0 0D40078E D0 00 BEQ ecc_ok 0D400790 E0 AF B loc_D4008F2 0D400792 ; --------------------------------------------------------------------------- 0D400792 ecc_ok ; CODE XREF: boot1_main+2FAj 0D400792 ; boot1_main+47Ej 0D400792 34 01 ADDS R4, #1 0D400794 1C 6B ADDS R3, R5, #1 0D400796 42 A3 CMP R3, R4 0D400798 D2 EC BCS loc_D400774 0D40079A 21 00 MOVS R1, #0 0D40079C 22 40 MOVS R2, #0x40 0D40079E A8 53 ADD R0, SP, #0x2C8+var_17C 0D4007A0 9E 8E LDR R6, [SP,#0x2C8+var_90] 0D4007A2 25 A0 MOVS R5, #0xA0 0D4007A4 F0 03 F9 D0 BL memcmp_0 0D4007A8 49 9B LDR R1, =a_Root 0D4007AA 22 40 MOVS R2, #0x40 0D4007AC A8 53 ADD R0, SP, #0x2C8+var_17C 0D4007AE F0 03 F9 2D BL memmove_maybe 0D4007B2 02 AD LSLS R5, R5, #0xA 0D4007B4 23 01 MOVS R3, #1 0D4007B6 19 74 ADDS R4, R6, R5 0D4007B8 93 00 STR R3, [SP,#0x2C8+var_2C8] 0D4007BA 4D 98 LDR R5, =root_exponent 0D4007BC 23 80 00 DB MOVLS R3, 0x400 0D4007C0 93 01 STR R3, [SP,#0x2C8+var_2C4] 0D4007C2 1C 20 ADDS R0, R4, #0 0D4007C4 A9 53 ADD R1, SP, #0x2C8+var_17C 0D4007C6 4A 96 LDR R2, =root_key 0D4007C8 1C 2B ADDS R3, R5, #0 0D4007CA F7 FF FD EB BL verify_certificate 0D4007CE 28 00 CMP R0, #0 0D4007D0 D0 00 BEQ loc_D4007D4 0D4007D2 E0 9F B ecc_fail 0D4007D4 ; --------------------------------------------------------------------------- 0D4007D4 loc_D4007D4 ; CODE XREF: boot1_main+33Cj 0D4007D4 48 93 LDR R0, =(nand_page_buf+0x284) 0D4007D6 18 35 ADDS R5, R6, R0 0D4007D8 1C 28 ADDS R0, R5, #0 ; haystack 0D4007DA 49 93 LDR R1, =a_CA ; needle 0D4007DC 22 02 MOVS R2, #2 ; len 0D4007DE F0 03 F8 F9 BL memcmp 0D4007E2 28 00 CMP R0, #0 0D4007E4 D1 74 BNE error_9 0D4007E6 4A 91 LDR R2, =dash 0D4007E8 9F 8E LDR R7, [SP,#0x2C8+var_90] 0D4007EA 21 A1 02 89 MOVLS R1, (nand_page_buf+0x400) 0D4007EE 18 7C ADDS R4, R7, R1 0D4007F0 46 92 MOV R10, R2 0D4007F2 1C 11 ADDS R1, R2, #0 0D4007F4 A8 53 ADD R0, SP, #0x2C8+var_17C 0D4007F6 22 40 MOVS R2, #0x40 0D4007F8 F0 03 F9 EE BL memcpy_maybe 0D4007FC 1C 29 ADDS R1, R5, #0 0D4007FE 22 40 MOVS R2, #0x40 0D400800 A8 53 ADD R0, SP, #0x2C8+var_17C 0D400802 F0 03 F9 E9 BL memcpy_maybe 0D400806 4D 8A LDR R5, =(nand_page_buf+0x2C8) 0D400808 48 8A LDR R0, =(nand_page_buf+0x3C8) 0D40080A 22 C0 MOVS R2, #0xC0 0D40080C 19 73 ADDS R3, R6, R5 0D40080E 00 92 LSLS R2, R2, #2 0D400810 18 35 ADDS R5, R6, R0 0D400812 21 02 MOVS R1, #2 0D400814 93 07 STR R3, [SP,#0x2C8+var_2AC] 0D400816 91 00 STR R1, [SP,#0x2C8+var_2C8] 0D400818 92 15 STR R2, [SP,#0x2C8+var_274] 0D40081A 92 01 STR R2, [SP,#0x2C8+var_2C4] 0D40081C 1C 20 ADDS R0, R4, #0 0D40081E 1C 1A ADDS R2, R3, #0 0D400820 A9 53 ADD R1, SP, #0x2C8+var_17C 0D400822 1C 2B ADDS R3, R5, #0 0D400824 95 06 STR R5, [SP,#0x2C8+var_2B0] 0D400826 F7 FF FD BD BL verify_certificate 0D40082A 28 00 CMP R0, #0 0D40082C D1 72 BNE ecc_fail 0D40082E 4B 82 LDR R3, =(nand_page_buf+0x584) 0D400830 18 FC ADDS R4, R7, R3 0D400832 1C 20 ADDS R0, R4, #0 ; haystack 0D400834 49 81 LDR R1, =a_CP ; needle 0D400836 22 02 MOVS R2, #2 ; len 0D400838 F0 03 F8 CC BL memcmp 0D40083C 28 00 CMP R0, #0 0D40083E D1 47 BNE error_9 0D400840 A9 53 ADD R1, SP, #0x2C8+var_17C 0D400842 22 40 MOVS R2, #0x40 0D400844 A8 43 ADD R0, SP, #0x2C8+var_1BC 0D400846 F0 03 F9 39 BL memcpy 0D40084A 25 A0 MOVS R5, #0xA0 0D40084C 9B 8E LDR R3, [SP,#0x2C8+var_90] 0D40084E 9A 90 LDR R2, [SP,#0x2C8+var_88] 0D400850 02 AD LSLS R5, R5, #0xA 0D400852 19 5B ADDS R3, R3, R5 0D400854 18 9B ADDS R3, R3, R2 0D400856 9A 91 LDR R2, [SP,#0x2C8+var_84] 0D400858 46 51 MOV R1, R10 0D40085A 18 9E ADDS R6, R3, R2 0D40085C A8 53 ADD R0, SP, #0x2C8+var_17C 0D40085E 22 40 MOVS R2, #0x40 0D400860 F0 03 F9 BA BL memcpy_maybe 0D400864 1C 21 ADDS R1, R4, #0 0D400866 22 40 MOVS R2, #0x40 0D400868 A8 53 ADD R0, SP, #0x2C8+var_17C 0D40086A F0 03 F9 B5 BL memcpy_maybe 0D40086E 23 03 MOVS R3, #3 0D400870 93 00 STR R3, [SP,#0x2C8+var_2C8] 0D400872 9B 92 LDR R3, [SP,#0x2C8+var_80] 0D400874 4C 72 LDR R4, =(nand_page_buf+0x6C8) 0D400876 93 01 STR R3, [SP,#0x2C8+var_2C4] 0D400878 4B 72 LDR R3, =(nand_page_buf+0x5C8) 0D40087A 1C 30 ADDS R0, R6, #0 0D40087C 18 FA ADDS R2, R7, R3 0D40087E A9 53 ADD R1, SP, #0x2C8+var_17C 0D400880 19 3B ADDS R3, R7, R4 0D400882 F7 FF FD 8F BL verify_certificate 0D400886 28 00 CMP R0, #0 0D400888 D1 44 BNE ecc_fail 0D40088A 9D 8E LDR R5, [SP,#0x2C8+var_90] 0D40088C 48 6E LDR R0, =(nand_page_buf+0x700) 0D40088E 21 00 MOVS R1, #0 0D400890 18 2C ADDS R4, R5, R0 0D400892 22 40 MOVS R2, #0x40 0D400894 A8 53 ADD R0, SP, #0x2C8+var_17C 0D400896 F0 03 F9 57 BL memcmp_0 0D40089A A9 43 ADD R1, SP, #0x2C8+var_1BC 0D40089C 22 40 MOVS R2, #0x40 0D40089E A8 53 ADD R0, SP, #0x2C8+var_17C 0D4008A0 F0 03 F8 B4 BL memmove_maybe 0D4008A4 9A 15 LDR R2, [SP,#0x2C8+var_274] 0D4008A6 21 02 MOVS R1, #2 0D4008A8 91 00 STR R1, [SP,#0x2C8+var_2C8] 0D4008AA 92 01 STR R2, [SP,#0x2C8+var_2C4] 0D4008AC 1C 20 ADDS R0, R4, #0 0D4008AE A9 53 ADD R1, SP, #0x2C8+var_17C 0D4008B0 9A 07 LDR R2, [SP,#0x2C8+var_2AC] 0D4008B2 9B 06 LDR R3, [SP,#0x2C8+var_2B0] 0D4008B4 F7 FF FD 76 BL verify_certificate 0D4008B8 28 00 CMP R0, #0 0D4008BA D1 2B BNE ecc_fail 0D4008BC 4B 63 LDR R3, =dword_28884 0D4008BE 18 EC ADDS R4, R5, R3 0D4008C0 1C 20 ADDS R0, R4, #0 ; haystack 0D4008C2 49 63 LDR R1, =a_XS ; needle 0D4008C4 22 02 MOVS R2, #2 ; len 0D4008C6 F0 03 F8 85 BL memcmp 0D4008CA 28 00 CMP R0, #0 0D4008CC D1 00 BNE error_9 0D4008CE E1 B8 B found_XS 0D4008D0 ; --------------------------------------------------------------------------- 0D4008D0 error_9 ; CODE XREF: boot1_main+350j 0D4008D0 ; boot1_main+3AAj 0D4008D0 ; boot1_main+438j 0D4008D0 24 09 MOVS R4, #9 0D4008D2 E7 01 B return_error 0D4008D4 ; --------------------------------------------------------------------------- 0D4008D4 loc_D4008D4 ; CODE XREF: boot1_main+2F6j 0D4008D4 46 53 MOV R3, R10 0D4008D6 18 E0 ADDS R0, R4, R3 ; pageno 0D4008D8 23 A0 MOVS R3, #0xA0 0D4008DA 02 E1 LSLS R1, R4, #0xB 0D4008DC 1C 22 ADDS R2, R4, #0 0D4008DE 02 9B LSLS R3, R3, #0xA 0D4008E0 40 3A ANDS R2, R7 0D4008E2 18 C9 ADDS R1, R1, R3 ; data_addr 0D4008E4 23 90 02 DB MOVLS R3, 0x48000 0D4008E8 01 D2 LSLS R2, R2, #7 0D4008EA 18 D2 ADDS R2, R2, R3 ; ecc_addr 0D4008EC F7 FF FD 28 BL read_nand_page 0D4008F0 E7 4C B loc_D40078C 0D4008F2 ; --------------------------------------------------------------------------- 0D4008F2 loc_D4008F2 ; CODE XREF: boot1_main+2FCj 0D4008F2 1E 61 SUBS R1, R4, #1 0D4008F4 22 A0 MOVS R2, #0xA0 0D4008F6 02 C8 LSLS R0, R1, #0xB 0D4008F8 02 92 LSLS R2, R2, #0xA 0D4008FA 40 39 ANDS R1, R7 0D4008FC 23 90 MOVS R3, #0x90 0D4008FE 01 C9 LSLS R1, R1, #7 0D400900 18 80 ADDS R0, R0, R2 0D400902 02 DB LSLS R3, R3, #0xB 0D400904 22 80 MOVS R2, #0x80 0D400906 18 C9 ADDS R1, R1, R3 0D400908 01 12 LSLS R2, R2, #4 0D40090A F7 FF FC A3 BL calc_ecc 0D40090E 28 00 CMP R0, #0 0D400910 D1 00 BNE ecc_fail 0D400912 E7 3E B ecc_ok 0D400914 ; --------------------------------------------------------------------------- 0D400914 ecc_fail ; CODE XREF: boot1_main+33Ej 0D400914 ; boot1_main+398j 0D400914 ; boot1_main+3F4j ... 0D400914 1E 04 SUBS R4, R0, #0 0D400916 DA 00 BGE loc_D40091A 0D400918 E6 4D B error 0D40091A ; --------------------------------------------------------------------------- 0D40091A loc_D40091A ; CODE XREF: boot1_main+482j 0D40091A ; boot1_main+8CAj 0D40091A 9B 8F LDR R3, [SP,#0x2C8+var_8C] 0D40091C 4C 4D LDR R4, =0x7FF 0D40091E 20 A0 MOVS R0, #0xA0 0D400920 40 23 ANDS R3, R4 0D400922 02 80 LSLS R0, R0, #0xA 0D400924 18 18 ADDS R0, R3, R0 0D400926 90 08 STR R0, [SP,#0x2C8+var_2A8] 0D400928 99 03 LDR R1, [SP,#0x2C8+var_2BC] 0D40092A A8 8A ADD R0, SP, #0x2C8+var_A0 0D40092C 9A 08 LDR R2, [SP,#0x2C8+var_2A8] 0D40092E F7 FF FB B3 BL aes_init 0D400932 9A 17 LDR R2, [SP,#0x2C8+var_26C] 0D400934 23 00 MOVS R3, #0 0D400936 99 8F LDR R1, [SP,#0x2C8+var_8C] 0D400938 92 14 STR R2, [SP,#0x2C8+var_278] 0D40093A 93 13 STR R3, [SP,#0x2C8+var_27C] 0D40093C 32 0F ADDS R2, #0xF 0D40093E 23 0F MOVS R3, #0xF 0D400940 43 9A BICS R2, R3 0D400942 18 53 ADDS R3, R2, R1 0D400944 19 1B ADDS R3, R3, R4 0D400946 0A DB LSRS R3, R3, #0xB 0D400948 92 09 STR R2, [SP,#0x2C8+var_2A4] 0D40094A 1C 1A ADDS R2, R3, #0 0D40094C 32 3F ADDS R2, #0x3F 0D40094E 09 92 LSRS R2, R2, #6 0D400950 20 80 MOVS R0, #0x80 0D400952 92 12 STR R2, [SP,#0x2C8+var_280] 0D400954 0A CD LSRS R5, R1, #0xB 0D400956 22 3F MOVS R2, #0x3F 0D400958 46 46 MOV R6, R8 0D40095A 01 00 LSLS R0, R0, #4 0D40095C 95 0E STR R5, [SP,#0x2C8+var_290] 0D40095E 40 1A ANDS R2, R3 0D400960 92 0C STR R2, [SP,#0x2C8+var_298] 0D400962 D1 01 BNE loc_D400968 0D400964 23 40 MOVS R3, #0x40 0D400966 93 0C STR R3, [SP,#0x2C8+var_298] 0D400968 loc_D400968 ; CODE XREF: boot1_main+4CEj 0D400968 9A 09 LDR R2, [SP,#0x2C8+var_2A4] 0D40096A 40 21 ANDS R1, R4 0D40096C 1A 45 SUBS R5, R0, R1 0D40096E 18 53 ADDS R3, R2, R1 0D400970 95 0B STR R5, [SP,#0x2C8+var_29C] 0D400972 1C 1D ADDS R5, R3, #0 0D400974 91 10 STR R1, [SP,#0x2C8+var_288] 0D400976 40 25 ANDS R5, R4 0D400978 95 0A STR R5, [SP,#0x2C8+var_2A0] 0D40097A D1 00 BNE loc_D40097E 0D40097C 90 0A STR R0, [SP,#0x2C8+var_2A0] 0D40097E loc_D40097E ; CODE XREF: boot1_main+4E6j 0D40097E 98 09 LDR R0, [SP,#0x2C8+var_2A4] 0D400980 99 10 LDR R1, [SP,#0x2C8+var_288] 0D400982 4A 35 LDR R2, =dword_2887F 0D400984 18 43 ADDS R3, R0, R1 0D400986 18 9A ADDS R2, R3, R2 0D400988 23 7F MOVS R3, #0x7F 0D40098A 43 9A BICS R2, R3 0D40098C 33 81 ADDS R3, #0x81 0D40098E 92 0F STR R2, [SP,#0x2C8+var_28C] 0D400990 18 D2 ADDS R2, R2, R3 0D400992 4B 32 LDR R3, =0x7FFFF 0D400994 42 9A CMP R2, R3 0D400996 D8 37 BHI error_6 0D400998 46 5C MOV R4, R11 0D40099A 2C 01 CMP R4, #1 0D40099C D0 31 BEQ loc_D400A02 0D40099E 20 01 MOVS R0, #1 0D4009A0 42 40 NEGS R0, R0 0D4009A2 90 11 STR R0, [SP,#0x2C8+var_284] 0D4009A4 loc_D4009A4 ; CODE XREF: boot1_main+572j 0D4009A4 9A 12 LDR R2, [SP,#0x2C8+var_280] 0D4009A6 21 00 MOVS R1, #0 0D4009A8 46 88 MOV R8, R1 0D4009AA 2A 00 CMP R2, #0 0D4009AC D8 00 BHI loc_D4009B0 0D4009AE E0 A7 B loc_D400B00 0D4009B0 ; --------------------------------------------------------------------------- 0D4009B0 loc_D4009B0 ; CODE XREF: boot1_main+518j 0D4009B0 ; boot1_main+66Aj 0D4009B0 9B 98 LDR R3, [SP,#0x2C8+bad_block_map+8] 0D4009B2 2B 01 CMP R3, #1 0D4009B4 D9 54 BLS loc_D400A60 0D4009B6 1E 72 SUBS R2, R6, #1 0D4009B8 2A 06 CMP R2, #6 0D4009BA D8 25 BHI error_6 0D4009BC AC 96 ADD R4, SP, #0x2C8+bad_block_map 0D4009BE 19 33 ADDS R3, R6, R4 0D4009C0 loc_D4009C0 ; CODE XREF: boot1_main+540j 0D4009C0 7B 1B LDRB R3, [R3,#0xC] 0D4009C2 2B 01 CMP R3, #1 0D4009C4 D1 4D BNE loc_D400A62 0D4009C6 9D 11 LDR R5, [SP,#0x2C8+var_284] 0D4009C8 19 76 ADDS R6, R6, R5 0D4009CA 1E 72 SUBS R2, R6, #1 0D4009CC 2A 06 CMP R2, #6 0D4009CE D8 1B BHI error_6 0D4009D0 A8 96 ADD R0, SP, #0x2C8+bad_block_map 0D4009D2 18 33 ADDS R3, R6, R0 0D4009D4 E7 F4 B loc_D4009C0 0D4009D6 ; --------------------------------------------------------------------------- 0D4009D6 ok ; CODE XREF: boot1_main+120j 0D4009D6 46 58 MOV R0, R11 0D4009D8 28 02 CMP R0, #2 0D4009DA D9 00 BLS chainload_boot2 0D4009DC E5 F1 B blockmap_search_failed 0D4009DE ; --------------------------------------------------------------------------- 0D4009DE chainload_boot2 ; CODE XREF: boot1_main+546j 0D4009DE 23 01 MOVS R3, #1 0D4009E0 60 E3 STR R3, [R4,#0xC] 0D4009E2 20 22 MOVS R0, #0x22 0D4009E4 F7 FF FB 4A BL boot1_debug_output ; output 22h 0D4009E8 68 20 LDR R0, [R4] 0D4009EA 23 A9 00 9B MOVLS R3, 0x2A4 0D4009EE 19 00 ADDS R0, R0, R4 0D4009F0 44 9D ADD SP, R3 0D4009F2 BC 78 POP {R3-R6} 0D4009F4 46 98 MOV R8, R3 0D4009F6 46 A1 MOV R9, R4 0D4009F8 46 AA MOV R10, R5 0D4009FA 46 B3 MOV R11, R6 0D4009FC BC F0 POP {R4-R7} 0D4009FE BC 02 POP {R1} 0D400A00 47 08 BX R1 0D400A02 ; --------------------------------------------------------------------------- 0D400A02 loc_D400A02 ; CODE XREF: boot1_main+508j 0D400A02 25 01 MOVS R5, #1 0D400A04 95 11 STR R5, [SP,#0x2C8+var_284] 0D400A06 E7 CD B loc_D4009A4 0D400A08 ; --------------------------------------------------------------------------- 0D400A08 error_6 ; CODE XREF: boot1_main+502j 0D400A08 ; boot1_main+526j 0D400A08 ; boot1_main+53Aj ... 0D400A08 24 06 MOVS R4, #6 0D400A0A E6 65 B return_error 0D400A0C ; --------------------------------------------------------------------------- 0D400A0C loc_D400A0C ; CODE XREF: boot1_main+28Aj 0D400A0C 1E 62 SUBS R2, R4, #1 0D400A0E E5 C9 B loc_D4005A4 0D400A10 ; --------------------------------------------------------------------------- 0D400A10 loc_D400A10 ; CODE XREF: boot1_main+27Ej 0D400A10 44 54 ADD R4, R10 0D400A12 E6 82 B loc_D40071A 0D400A12 ; --------------------------------------------------------------------------- 0D400A14 0D 01 00 00 off_D400A14 DCD nand_flash_command ; DATA XREF: boot1_main+2D8r 0D400A18 0D 40 40 94 off_D400A18 DCD a_Root ; DATA XREF: boot1_main+314r 0D400A18 ; "Root" 0D400A1C 0D 40 41 10 off_D400A1C DCD root_exponent ; DATA XREF: boot1_main+326r 0D400A20 0D 40 41 14 off_D400A20 DCD root_key ; DATA XREF: boot1_main+332r 0D400A24 00 02 82 84 off_D400A24 DCD nand_page_buf+0x284 ; DATA XREF: boot1_main:loc_D4007D4r 0D400A28 ; void *off_D400A28 0D400A28 0D 40 40 9C off_D400A28 DCD a_CA ; DATA XREF: boot1_main+346r 0D400A28 ; "CA" 0D400A2C 0D 40 40 A0 off_D400A2C DCD dash ; DATA XREF: boot1_main+352r 0D400A2C ; "-" 0D400A30 00 02 82 C8 off_D400A30 DCD nand_page_buf+0x2C8 ; DATA XREF: boot1_main+372r 0D400A34 00 02 83 C8 off_D400A34 DCD nand_page_buf+0x3C8 ; DATA XREF: boot1_main+374r 0D400A38 00 02 85 84 off_D400A38 DCD nand_page_buf+0x584 ; DATA XREF: boot1_main+39Ar 0D400A3C ; void *off_D400A3C 0D400A3C 0D 40 40 A4 off_D400A3C DCD a_CP ; DATA XREF: boot1_main+3A0r 0D400A3C ; "CP" 0D400A40 00 02 86 C8 off_D400A40 DCD nand_page_buf+0x6C8 ; DATA XREF: boot1_main+3E0r 0D400A44 00 02 85 C8 off_D400A44 DCD nand_page_buf+0x5C8 ; DATA XREF: boot1_main+3E4r 0D400A48 00 02 87 00 off_D400A48 DCD nand_page_buf+0x700 ; DATA XREF: boot1_main+3F8r 0D400A4C 00 02 88 84 off_D400A4C DCD dword_28884 ; DATA XREF: boot1_main+428r 0D400A50 ; void *off_D400A50 0D400A50 0D 40 40 A8 off_D400A50 DCD a_XS ; DATA XREF: boot1_main+42Er 0D400A50 ; "XS" 0D400A54 00 00 07 FF off_D400A54 DCD 0x7FF ; DATA XREF: boot1_main+488r 0D400A58 00 02 88 7F off_D400A58 DCD dword_2887F ; DATA XREF: boot1_main+4EEr 0D400A5C 00 07 FF FF off_D400A5C DCD 0x7FFFF ; DATA XREF: boot1_main+4FEr 0D400A60 ; --------------------------------------------------------------------------- 0D400A60 loc_D400A60 ; CODE XREF: boot1_main+520j 0D400A60 1E 72 SUBS R2, R6, #1 0D400A62 loc_D400A62 ; CODE XREF: boot1_main+530j 0D400A62 2A 06 CMP R2, #6 0D400A64 D8 D0 BHI error_6 0D400A66 46 41 MOV R1, R8 0D400A68 29 00 CMP R1, #0 0D400A6A D0 00 BEQ loc_D400A6E 0D400A6C E1 8F B loc_D400D8E 0D400A6E ; --------------------------------------------------------------------------- 0D400A6E loc_D400A6E ; CODE XREF: boot1_main+5D6j 0D400A6E 9A 0E LDR R2, [SP,#0x2C8+var_290] 0D400A70 46 92 MOV R10, R2 0D400A72 loc_D400A72 ; CODE XREF: boot1_main+8FEj 0D400A72 24 40 MOVS R4, #0x40 0D400A74 46 55 MOV R5, R10 0D400A76 94 0D STR R4, [SP,#0x2C8+var_294] 0D400A78 2D 42 CMP R5, #0x42 0D400A7A D3 00 BCC loc_D400A7E 0D400A7C E1 85 B loc_D400D8A 0D400A7E ; --------------------------------------------------------------------------- 0D400A7E loc_D400A7E ; CODE XREF: boot1_main+5E6j 0D400A7E 46 41 MOV R1, R8 0D400A80 01 B0 LSLS R0, R6, #6 0D400A82 01 89 LSLS R1, R1, #6 0D400A84 90 05 STR R0, [SP,#0x2C8+var_2B4] 0D400A86 91 04 STR R1, [SP,#0x2C8+var_2B8] 0D400A88 loc_D400A88 ; CODE XREF: boot1_main+656j 0D400A88 2D 02 CMP R5, #2 0D400A8A D1 00 BNE loc_D400A8E 0D400A8C E1 75 B loc_D400D7A 0D400A8E ; --------------------------------------------------------------------------- 0D400A8E loc_D400A8E ; CODE XREF: boot1_main+5F6j 0D400A8E ; boot1_main+8EEj 0D400A8E ; boot1_main+8F4j 0D400A8E 9B 05 LDR R3, [SP,#0x2C8+var_2B4] 0D400A90 98 04 LDR R0, [SP,#0x2C8+var_2B8] 0D400A92 99 0E LDR R1, [SP,#0x2C8+var_290] 0D400A94 19 5C ADDS R4, R3, R5 0D400A96 4A BF LDR R2, =nand_flash_command 0D400A98 19 43 ADDS R3, R0, R5 0D400A9A 1A 5F SUBS R7, R3, R1 0D400A9C loc_D400A9C ; CODE XREF: boot1_main+60Cj 0D400A9C 68 13 LDR R3, [R2] 0D400A9E 2B 00 CMP R3, #0 0D400AA0 DB FC BLT loc_D400A9C 0D400AA2 20 03 MOVS R0, #3 0D400AA4 F0 00 FE 4E BL call_ahbMemFlush 0D400AA8 20 00 MOVS R0, #0 0D400AAA F0 00 FE A9 BL call_ahbMemFlush2 0D400AAE 9A 0D LDR R2, [SP,#0x2C8+var_294] 0D400AB0 42 95 CMP R5, R2 0D400AB2 D2 00 BCS loc_D400AB6 0D400AB4 E1 54 B loc_D400D60 0D400AB6 ; --------------------------------------------------------------------------- 0D400AB6 loc_D400AB6 ; CODE XREF: boot1_main+61Ej 0D400AB6 ; boot1_main+8E4j 0D400AB6 2D 01 CMP R5, #1 0D400AB8 D8 32 BHI loc_D400B20 0D400ABA 4A B6 LDR R2, =nand_flash_command 0D400ABC loc_D400ABC ; CODE XREF: boot1_main+62Cj 0D400ABC 68 13 LDR R3, [R2] 0D400ABE 2B 00 CMP R3, #0 0D400AC0 DB FC BLT loc_D400ABC 0D400AC2 20 03 MOVS R0, #3 0D400AC4 F0 00 FE 3E BL call_ahbMemFlush 0D400AC8 20 00 MOVS R0, #0 0D400ACA F0 00 FE 99 BL call_ahbMemFlush2 0D400ACE 23 01 MOVS R3, #1 0D400AD0 40 2B ANDS R3, R5 0D400AD2 98 0F LDR R0, [SP,#0x2C8+var_28C] 0D400AD4 01 DB LSLS R3, R3, #7 0D400AD6 5C 1B LDRB R3, [R3,R0] 0D400AD8 2B FF CMP R3, #0xFF 0D400ADA D0 00 BEQ loc_D400ADE 0D400ADC E1 18 B loc_D400D10 0D400ADE ; --------------------------------------------------------------------------- 0D400ADE loc_D400ADE ; CODE XREF: boot1_main+646j 0D400ADE 2D 00 CMP R5, #0 0D400AE0 D1 1E BNE loc_D400B20 0D400AE2 loc_D400AE2 ; CODE XREF: boot1_main+6BAj 0D400AE2 ; boot1_main+6F0j 0D400AE2 9B 0D LDR R3, [SP,#0x2C8+var_294] 0D400AE4 35 01 ADDS R5, #1 0D400AE6 33 02 ADDS R3, #2 0D400AE8 42 AB CMP R3, R5 0D400AEA D8 CD BHI loc_D400A88 0D400AEC loc_D400AEC ; CODE XREF: boot1_main+880j 0D400AEC ; boot1_main+8F8j 0D400AEC 42 AB CMP R3, R5 0D400AEE D1 01 BNE loc_D400AF4 0D400AF0 22 01 MOVS R2, #1 0D400AF2 44 90 ADD R8, R2 0D400AF4 loc_D400AF4 ; CODE XREF: boot1_main+65Aj 0D400AF4 9B 11 LDR R3, [SP,#0x2C8+var_284] 0D400AF6 9C 12 LDR R4, [SP,#0x2C8+var_280] 0D400AF8 18 F6 ADDS R6, R6, R3 0D400AFA 45 A0 CMP R8, R4 0D400AFC D2 00 BCS loc_D400B00 0D400AFE E7 57 B loc_D4009B0 0D400B00 ; --------------------------------------------------------------------------- 0D400B00 loc_D400B00 ; CODE XREF: boot1_main+51Aj 0D400B00 ; boot1_main+668j 0D400B00 AC 1A ADD R4, SP, #0x2C8+var_260 0D400B02 20 00 MOVS R0, #0 0D400B04 21 00 MOVS R1, #0 0D400B06 loc_D400B06 ; CODE XREF: boot1_main+688j 0D400B06 23 CA 00 5B MOVLS R3, 0x194 0D400B0A 18 5B ADDS R3, R3, R1 0D400B0C 46 6D MOV R5, SP 0D400B0E 59 5A LDR R2, [R3,R5] 0D400B10 59 0B LDR R3, [R1,R4] 0D400B12 42 9A CMP R2, R3 0D400B14 D1 4C BNE error_7 0D400B16 30 01 ADDS R0, #1 0D400B18 31 04 ADDS R1, #4 0D400B1A 28 04 CMP R0, #4 0D400B1C D9 F3 BLS loc_D400B06 0D400B1E E0 32 B loc_D400B86 0D400B20 ; --------------------------------------------------------------------------- 0D400B20 loc_D400B20 ; CODE XREF: boot1_main+624j 0D400B20 ; boot1_main+64Cj 0D400B20 4A 9D LDR R2, =aes_io 0D400B22 loc_D400B22 ; CODE XREF: boot1_main+692j 0D400B22 68 13 LDR R3, [R2] 0D400B24 2B 00 CMP R3, #0 0D400B26 DB FC BLT loc_D400B22 0D400B28 20 04 MOVS R0, #4 0D400B2A F0 00 FE 0B BL call_ahbMemFlush 0D400B2E 20 00 MOVS R0, #0 0D400B30 F0 00 FE 66 BL call_ahbMemFlush2 0D400B34 45 55 CMP R5, R10 0D400B36 D9 03 BLS loc_D400B40 0D400B38 9B 0D LDR R3, [SP,#0x2C8+var_294] 0D400B3A 33 01 ADDS R3, #1 0D400B3C 42 AB CMP R3, R5 0D400B3E D8 39 BHI loc_D400BB4 0D400B40 loc_D400B40 ; CODE XREF: boot1_main+6A2j 0D400B40 46 51 MOV R1, R10 0D400B42 31 01 ADDS R1, #1 0D400B44 loc_D400B44 ; CODE XREF: boot1_main+784j 0D400B44 4A 95 LDR R2, =sha_io 0D400B46 loc_D400B46 ; CODE XREF: boot1_main+6B6j 0D400B46 68 13 LDR R3, [R2] 0D400B48 2B 00 CMP R3, #0 0D400B4A DB FC BLT loc_D400B46 0D400B4C 42 A9 CMP R1, R5 0D400B4E D2 C8 BCS loc_D400AE2 0D400B50 46 42 MOV R2, R8 0D400B52 2A 00 CMP R2, #0 0D400B54 D1 03 BNE loc_D400B5E 0D400B56 9B 0E LDR R3, [SP,#0x2C8+var_290] 0D400B58 33 02 ADDS R3, #2 0D400B5A 42 AB CMP R3, R5 0D400B5C D0 5D BEQ loc_D400C1A 0D400B5E loc_D400B5E ; CODE XREF: boot1_main+6C0j 0D400B5E 9B 12 LDR R3, [SP,#0x2C8+var_280] 0D400B60 3B 01 SUBS R3, #1 0D400B62 45 43 CMP R3, R8 0D400B64 D0 15 BEQ loc_D400B92 0D400B66 loc_D400B66 ; CODE XREF: boot1_main+704j 0D400B66 21 9C 02 89 MOVLS R1, 0x27000 0D400B6A 02 FB LSLS R3, R7, #0xB 0D400B6C 24 80 MOVS R4, #0x80 0D400B6E 18 5A ADDS R2, R3, R1 0D400B70 01 24 LSLS R4, R4, #4 0D400B72 21 02 MOVS R1, #2 0D400B74 loc_D400B74 ; CODE XREF: boot1_main+71Aj 0D400B74 ; boot1_main+792j 0D400B74 AB 1A ADD R3, SP, #0x2C8+var_260 0D400B76 93 00 STR R3, [SP,#0x2C8+var_2C8] 0D400B78 A8 16 ADD R0, SP, #0x2C8+var_270 0D400B7A 1C 23 ADDS R3, R4, #0 0D400B7C F7 FF FA AE BL sha1 0D400B80 28 00 CMP R0, #0 0D400B82 90 13 STR R0, [SP,#0x2C8+var_27C] 0D400B84 DA AD BGE loc_D400AE2 0D400B86 loc_D400B86 ; CODE XREF: boot1_main+68Aj 0D400B86 ; boot1_main+740j 0D400B86 9C 13 LDR R4, [SP,#0x2C8+var_27C] 0D400B88 2C 00 CMP R4, #0 0D400B8A DA 00 BGE loc_D400B8E 0D400B8C E5 13 B error 0D400B8E ; --------------------------------------------------------------------------- 0D400B8E loc_D400B8E ; CODE XREF: boot1_main+6F6j 0D400B8E 9C 08 LDR R4, [SP,#0x2C8+var_2A8] 0D400B90 E5 0E B check_for_error 0D400B92 ; --------------------------------------------------------------------------- 0D400B92 loc_D400B92 ; CODE XREF: boot1_main+6D0j 0D400B92 9B 0D LDR R3, [SP,#0x2C8+var_294] 0D400B94 33 01 ADDS R3, #1 0D400B96 42 AB CMP R3, R5 0D400B98 D1 E5 BNE loc_D400B66 0D400B9A 20 9C MOVS R0, #0x9C 0D400B9C 02 FB LSLS R3, R7, #0xB 0D400B9E 02 80 LSLS R0, R0, #0xA 0D400BA0 99 0A LDR R1, [SP,#0x2C8+var_2A0] 0D400BA2 9C 14 LDR R4, [SP,#0x2C8+var_278] 0D400BA4 18 1A ADDS R2, R3, R0 0D400BA6 98 09 LDR R0, [SP,#0x2C8+var_2A4] 0D400BA8 19 0B ADDS R3, R1, R4 0D400BAA 1A 1C SUBS R4, R3, R0 0D400BAC 21 03 MOVS R1, #3 0D400BAE E7 E1 B loc_D400B74 0D400BB0 ; --------------------------------------------------------------------------- 0D400BB0 error_7 ; CODE XREF: boot1_main+680j 0D400BB0 24 07 MOVS R4, #7 0D400BB2 E5 91 B return_error 0D400BB4 ; --------------------------------------------------------------------------- 0D400BB4 loc_D400BB4 ; CODE XREF: boot1_main+6AAj 0D400BB4 23 01 MOVS R3, #1 0D400BB6 1E 69 SUBS R1, R5, #1 0D400BB8 22 9E MOVS R2, #0x9E 0D400BBA 40 19 ANDS R1, R3 0D400BBC 02 92 LSLS R2, R2, #0xA 0D400BBE 02 F8 LSLS R0, R7, #0xB 0D400BC0 9B 0F LDR R3, [SP,#0x2C8+var_28C] 0D400BC2 01 C9 LSLS R1, R1, #7 0D400BC4 18 80 ADDS R0, R0, R2 0D400BC6 22 80 MOVS R2, #0x80 0D400BC8 18 C9 ADDS R1, R1, R3 0D400BCA 01 12 LSLS R2, R2, #4 0D400BCC F7 FF FB 42 BL calc_ecc 0D400BD0 28 00 CMP R0, #0 0D400BD2 90 13 STR R0, [SP,#0x2C8+var_27C] 0D400BD4 DB D7 BLT loc_D400B86 0D400BD6 46 44 MOV R4, R8 0D400BD8 2C 00 CMP R4, #0 0D400BDA D1 03 BNE loc_D400BE4 0D400BDC 9B 0E LDR R3, [SP,#0x2C8+var_290] 0D400BDE 33 01 ADDS R3, #1 0D400BE0 42 AB CMP R3, R5 0D400BE2 D0 21 BEQ loc_D400C28 0D400BE4 loc_D400BE4 ; CODE XREF: boot1_main+746j 0D400BE4 9B 12 LDR R3, [SP,#0x2C8+var_280] 0D400BE6 3B 01 SUBS R3, #1 0D400BE8 45 43 CMP R3, R8 0D400BEA D0 25 BEQ loc_D400C38 0D400BEC loc_D400BEC ; CODE XREF: boot1_main+7A8j 0D400BEC 24 80 01 24 MOVLS R4, 0x800 0D400BF0 loc_D400BF0 ; CODE XREF: boot1_main+796j 0D400BF0 ; boot1_main+7ACj 0D400BF0 20 01 MOVS R0, #1 0D400BF2 F0 00 FD A7 BL call_ahbMemFlush 0D400BF6 20 04 MOVS R0, #4 0D400BF8 F0 00 FE 02 BL call_ahbMemFlush2 0D400BFC 1C 23 ADDS R3, R4, #0 0D400BFE 3B 10 SUBS R3, #0x10 0D400C00 46 41 MOV R1, R8 0D400C02 09 1B LSRS R3, R3, #4 0D400C04 29 00 CMP R1, #0 0D400C06 D1 14 BNE loc_D400C32 0D400C08 46 51 MOV R1, R10 0D400C0A 31 01 ADDS R1, #1 0D400C0C 42 A9 CMP R1, R5 0D400C0E D0 0D BEQ loc_D400C2C 0D400C10 loc_D400C10 ; CODE XREF: boot1_main+7A2j 0D400C10 4A 63 LDR R2, =0x98001000 0D400C12 loc_D400C12 ; CODE XREF: boot1_main+79Cj 0D400C12 43 1A ORRS R2, R3 0D400C14 4B 60 LDR R3, =aes_io 0D400C16 60 1A STR R2, [R3] 0D400C18 E7 94 B loc_D400B44 0D400C1A ; --------------------------------------------------------------------------- 0D400C1A loc_D400C1A ; CODE XREF: boot1_main+6C8j 0D400C1A 9B 10 LDR R3, [SP,#0x2C8+var_288] 0D400C1C 24 A0 02 A4 MOVLS R4, 0x28000 0D400C20 19 1A ADDS R2, R3, R4 0D400C22 9C 0B LDR R4, [SP,#0x2C8+var_29C] 0D400C24 21 01 MOVS R1, #1 0D400C26 E7 A5 B loc_D400B74 0D400C28 ; --------------------------------------------------------------------------- 0D400C28 loc_D400C28 ; CODE XREF: boot1_main+74Ej 0D400C28 9C 0B LDR R4, [SP,#0x2C8+var_29C] 0D400C2A E7 E1 B loc_D400BF0 0D400C2C ; --------------------------------------------------------------------------- 0D400C2C loc_D400C2C ; CODE XREF: boot1_main+77Aj 0D400C2C 22 98 06 12 MOVLS R2, 0x98000000 0D400C30 E7 EF B loc_D400C12 0D400C32 ; --------------------------------------------------------------------------- 0D400C32 loc_D400C32 ; CODE XREF: boot1_main+772j 0D400C32 46 51 MOV R1, R10 0D400C34 31 01 ADDS R1, #1 0D400C36 E7 EB B loc_D400C10 0D400C38 ; --------------------------------------------------------------------------- 0D400C38 loc_D400C38 ; CODE XREF: boot1_main+756j 0D400C38 98 0D LDR R0, [SP,#0x2C8+var_294] 0D400C3A 42 85 CMP R5, R0 0D400C3C D1 D6 BNE loc_D400BEC 0D400C3E 9C 0A LDR R4, [SP,#0x2C8+var_2A0] 0D400C40 E7 D6 B loc_D400BF0 0D400C42 ; --------------------------------------------------------------------------- 0D400C42 found_XS ; CODE XREF: boot1_main+43Aj 0D400C42 9B 8E LDR R3, [SP,#0x2C8+var_90] 0D400C44 20 A0 MOVS R0, #0xA0 0D400C46 9A 90 LDR R2, [SP,#0x2C8+var_88] 0D400C48 02 80 LSLS R0, R0, #0xA 0D400C4A 18 1B ADDS R3, R3, R0 0D400C4C 18 9F ADDS R7, R3, R2 0D400C4E 46 51 MOV R1, R10 0D400C50 22 40 MOVS R2, #0x40 0D400C52 A8 53 ADD R0, SP, #0x2C8+var_17C 0D400C54 F0 02 FF C0 BL memcpy_maybe 0D400C58 1C 21 ADDS R1, R4, #0 0D400C5A 22 40 MOVS R2, #0x40 0D400C5C A8 53 ADD R0, SP, #0x2C8+var_17C 0D400C5E F0 02 FF BB BL memcpy_maybe 0D400C62 23 04 MOVS R3, #4 0D400C64 93 00 STR R3, [SP,#0x2C8+var_2C8] 0D400C66 23 A9 00 9B MOVLS R3, 0x2A4 0D400C6A 93 01 STR R3, [SP,#0x2C8+var_2C4] 0D400C6C 4C 4D LDR R4, =dword_289C8 0D400C6E 4B 4E LDR R3, =dword_288C8 0D400C70 1C 38 ADDS R0, R7, #0 0D400C72 18 EA ADDS R2, R5, R3 0D400C74 A9 53 ADD R1, SP, #0x2C8+var_17C 0D400C76 19 2B ADDS R3, R5, R4 0D400C78 F7 FF FB 94 BL verify_certificate 0D400C7C 28 00 CMP R0, #0 0D400C7E D0 00 BEQ loc_D400C82 0D400C80 E6 48 B ecc_fail 0D400C82 ; --------------------------------------------------------------------------- 0D400C82 loc_D400C82 ; CODE XREF: boot1_main+7EAj 0D400C82 AC 1F ADD R4, SP, #0x2C8+var_24C 0D400C84 49 49 LDR R1, =common_key 0D400C86 22 10 MOVS R2, #0x10 0D400C88 4D 49 LDR R5, =0x1BF 0D400C8A 1C 20 ADDS R0, R4, #0 0D400C8C F0 02 FF 16 BL memcpy 0D400C90 20 B0 MOVS R0, #0xB0 0D400C92 19 79 ADDS R1, R7, R5 0D400C94 22 10 MOVS R2, #0x10 0D400C96 03 00 LSLS R0, R0, #0xC 0D400C98 F0 02 FF 10 BL memcpy 0D400C9C 21 00 MOVS R1, #0 0D400C9E 22 10 MOVS R2, #0x10 0D400CA0 98 02 LDR R0, [SP,#0x2C8+var_2C0] 0D400CA2 F0 02 FF 51 BL memcmp_0 0D400CA6 20 C6 00 40 MOVLS R0, 0x18C 0D400CAA 18 35 ADDS R5, R6, R0 0D400CAC 1C 29 ADDS R1, R5, #0 0D400CAE 22 08 MOVS R2, #8 0D400CB0 98 02 LDR R0, [SP,#0x2C8+var_2C0] 0D400CB2 F0 02 FF 03 BL memcpy 0D400CB6 22 B0 03 12 MOVLS R2, 0xB0000 0D400CBA 99 02 LDR R1, [SP,#0x2C8+var_2C0] 0D400CBC 1C 20 ADDS R0, R4, #0 0D400CBE F7 FF F9 EB BL aes_init 0D400CC2 20 01 MOVS R0, #1 0D400CC4 F0 00 FD 3E BL call_ahbMemFlush 0D400CC8 20 04 MOVS R0, #4 0D400CCA F0 00 FD 99 BL call_ahbMemFlush2 0D400CCE 4A 32 LDR R2, =aes_io 0D400CD0 23 98 06 1B MOVLS R3, 0x98000000 0D400CD4 60 13 STR R3, [R2] 0D400CD6 loc_D400CD6 ; CODE XREF: boot1_main+846j 0D400CD6 68 13 LDR R3, [R2] 0D400CD8 2B 00 CMP R3, #0 0D400CDA DB FC BLT loc_D400CD6 0D400CDC 20 04 MOVS R0, #4 0D400CDE F0 00 FD 31 BL call_ahbMemFlush 0D400CE2 20 00 MOVS R0, #0 0D400CE4 F0 00 FD 8C BL call_ahbMemFlush2 0D400CE8 21 B0 03 09 MOVLS R1, 0xB0000 0D400CEC 22 10 MOVS R2, #0x10 0D400CEE A8 8A ADD R0, SP, #0x2C8+var_A0 0D400CF0 F0 02 FE E4 BL memcpy 0D400CF4 20 B0 MOVS R0, #0xB0 0D400CF6 21 00 MOVS R1, #0 0D400CF8 22 10 MOVS R2, #0x10 0D400CFA 03 00 LSLS R0, R0, #0xC 0D400CFC F0 02 FF 24 BL memcmp_0 0D400D00 68 29 LDR R1, [R5] 0D400D02 68 6A LDR R2, [R5,#4] 0D400D04 29 01 CMP R1, #1 0D400D06 D1 01 BNE error_11 0D400D08 2A 01 CMP R2, #1 0D400D0A D0 04 BEQ loc_D400D16 0D400D0C error_11 ; CODE XREF: boot1_main+872j 0D400D0C 24 0B MOVS R4, #11 0D400D0E E4 E3 B return_error 0D400D10 ; --------------------------------------------------------------------------- 0D400D10 loc_D400D10 ; CODE XREF: boot1_main+648j 0D400D10 9B 0D LDR R3, [SP,#0x2C8+var_294] 0D400D12 33 02 ADDS R3, #2 0D400D14 E6 EA B loc_D400AEC 0D400D16 ; --------------------------------------------------------------------------- 0D400D16 loc_D400D16 ; CODE XREF: boot1_main+876j 0D400D16 F0 00 FA F9 BL sub_D40130C 0D400D1A 28 00 CMP R0, #0 0D400D1C DB 05 BLT error_10 0D400D1E 21 C2 00 49 MOVLS R1, 0x184 0D400D22 18 73 ADDS R3, R6, R1 0D400D24 79 DB LDRB R3, [R3,#7] 0D400D26 42 83 CMP R3, R0 0D400D28 DA 01 BGE loc_D400D2E 0D400D2A error_10 ; CODE XREF: boot1_main+888j 0D400D2A 24 0A MOVS R4, #10 0D400D2C E4 D4 B return_error 0D400D2E ; --------------------------------------------------------------------------- 0D400D2E loc_D400D2E ; CODE XREF: boot1_main+894j 0D400D2E 98 03 LDR R0, [SP,#0x2C8+var_2BC] 0D400D30 21 00 MOVS R1, #0 0D400D32 22 10 MOVS R2, #0x10 0D400D34 F0 02 FF 08 BL memcmp_0 0D400D38 22 F4 00 52 MOVLS R2, 0x1E8 0D400D3C 24 F6 MOVS R4, #0xF6 0D400D3E 18 B1 ADDS R1, R6, R2 0D400D40 98 03 LDR R0, [SP,#0x2C8+var_2BC] 0D400D42 22 02 MOVS R2, #2 0D400D44 00 64 LSLS R4, R4, #1 0D400D46 F0 02 FE B9 BL memcpy 0D400D4A 25 FA MOVS R5, #0xFA 0D400D4C 19 33 ADDS R3, R6, R4 0D400D4E 68 5B LDR R3, [R3,#4] 0D400D50 00 6D LSLS R5, R5, #1 0D400D52 A8 65 ADD R0, SP, #0x2C8+var_134 0D400D54 19 71 ADDS R1, R6, R5 0D400D56 22 14 MOVS R2, #0x14 0D400D58 93 17 STR R3, [SP,#0x2C8+var_26C] 0D400D5A F0 02 FE AF BL memcpy 0D400D5E E5 DC B loc_D40091A 0D400D60 ; --------------------------------------------------------------------------- 0D400D60 loc_D400D60 ; CODE XREF: boot1_main+620j 0D400D60 22 01 MOVS R2, #1 0D400D62 40 2A ANDS R2, R5 0D400D64 1C 20 ADDS R0, R4, #0 ; pageno 0D400D66 23 A0 MOVS R3, #0xA0 0D400D68 9C 0F LDR R4, [SP,#0x2C8+var_28C] 0D400D6A 02 F9 LSLS R1, R7, #0xB 0D400D6C 02 9B LSLS R3, R3, #0xA 0D400D6E 01 D2 LSLS R2, R2, #7 0D400D70 18 C9 ADDS R1, R1, R3 ; data_addr 0D400D72 19 12 ADDS R2, R2, R4 ; ecc_addr 0D400D74 F7 FF FA E4 BL read_nand_page 0D400D78 E6 9D B loc_D400AB6 0D400D7A ; --------------------------------------------------------------------------- 0D400D7A loc_D400D7A ; CODE XREF: boot1_main+5F8j 0D400D7A 9B 12 LDR R3, [SP,#0x2C8+var_280] 0D400D7C 3B 01 SUBS R3, #1 0D400D7E 45 43 CMP R3, R8 0D400D80 D0 00 BEQ loc_D400D84 0D400D82 E6 84 B loc_D400A8E 0D400D84 ; --------------------------------------------------------------------------- 0D400D84 loc_D400D84 ; CODE XREF: boot1_main+8ECj 0D400D84 9A 0C LDR R2, [SP,#0x2C8+var_298] 0D400D86 92 0D STR R2, [SP,#0x2C8+var_294] 0D400D88 E6 81 B loc_D400A8E 0D400D8A ; --------------------------------------------------------------------------- 0D400D8A loc_D400D8A ; CODE XREF: boot1_main+5E8j 0D400D8A 23 42 MOVS R3, #0x42 0D400D8C E6 AE B loc_D400AEC 0D400D8E ; --------------------------------------------------------------------------- 0D400D8E loc_D400D8E ; CODE XREF: boot1_main+5D8j 0D400D8E 23 00 MOVS R3, #0 0D400D90 46 9A MOV R10, R3 0D400D92 E6 6E B loc_D400A72 0D400D92 ; --------------------------------------------------------------------------- 0D400D94 0D 01 00 00 off_D400D94 DCD nand_flash_command ; DATA XREF: boot1_main+602r 0D400D94 ; boot1_main+626r 0D400D98 0D 02 00 00 off_D400D98 DCD aes_io ; DATA XREF: boot1_main:loc_D400B20r 0D400D98 ; boot1_main+780r 0D400D98 ; boot1_main+83Ar 0D400D9C 0D 03 00 00 off_D400D9C DCD sha_io ; DATA XREF: boot1_main:loc_D400B44r 0D400DA0 98 00 10 00 dword_D400DA0 DCD 0x98001000 ; DATA XREF: boot1_main:loc_D400C10r 0D400DA4 00 02 89 C8 off_D400DA4 DCD dword_289C8 ; DATA XREF: boot1_main+7D8r 0D400DA8 00 02 88 C8 off_D400DA8 DCD dword_288C8 ; DATA XREF: boot1_main+7DAr 0D400DAC 0D 40 41 00 off_D400DAC DCD common_key ; DATA XREF: boot1_main+7F0r 0D400DB0 00 00 01 BF off_D400DB0 DCD 0x1BF ; DATA XREF: boot1_main+7F4r 0D400DB0 ; End of function boot1_main 0D400DB4 ; =============== S U B R O U T I N E ======================================= 0D400DB4 init_gpios ; CODE XREF: boot1_main+3Ep 0D400DB4 B5 00 PUSH {LR} 0D400DB6 F0 00 FD 69 BL gpio_stuff 0D400DBA 4A 0B LDR R2, =dword_D8000F4 0D400DBC 49 0B LDR R1, =0xFFFFC3FF 0D400DBE 68 13 LDR R3, [R2] 0D400DC0 40 0B ANDS R3, R1 0D400DC2 60 13 STR R3, [R2] 0D400DC4 3A 14 SUBS R2, #0x14 0D400DC6 68 13 LDR R3, [R2] 0D400DC8 40 0B ANDS R3, R1 0D400DCA 60 13 STR R3, [R2] 0D400DCC 49 08 LDR R1, =starlet_gpio2_dir 0D400DCE 23 E0 MOVS R3, #0xE0 0D400DD0 68 0A LDR R2, [R1] 0D400DD2 01 5B LSLS R3, R3, #5 0D400DD4 43 1A ORRS R2, R3 0D400DD6 60 0A STR R2, [R1] 0D400DD8 39 08 SUBS R1, #8 0D400DDA 68 0A LDR R2, [R1] 0D400DDC 23 F0 01 9B MOVLS R3, 0x3C00 0D400DE0 43 1A ORRS R2, R3 0D400DE2 60 0A STR R2, [R1] 0D400DE4 BC 01 POP {R0} 0D400DE6 47 00 BX R0 0D400DE6 ; --------------------------------------------------------------------------- 0D400DE8 0D 80 00 F4 off_D400DE8 DCD dword_D8000F4 ; DATA XREF: init_gpios+6r 0D400DEC FF FF C3 FF dword_D400DEC DCD 0xFFFFC3FF ; DATA XREF: init_gpios+8r 0D400DF0 0D 80 00 E4 off_D400DF0 DCD starlet_gpio2_dir ; DATA XREF: init_gpios+18r 0D400DF0 ; End of function init_gpios 0D400DF4 ; =============== S U B R O U T I N E ======================================= 0D400DF4 set_C ; CODE XREF: clear_S+24p 0D400DF4 ; seeprom1+34p 0D400DF4 ; read_SEEPROM+22p 0D400DF4 49 03 LDR R1, =starlet_gpio2_data 0D400DF6 23 80 MOVS R3, #0x80 0D400DF8 68 0A LDR R2, [R1] 0D400DFA 01 1B LSLS R3, R3, #4 0D400DFC 43 1A ORRS R2, R3 0D400DFE 60 0A STR R2, [R1] 0D400E00 47 70 BX LR 0D400E00 ; --------------------------------------------------------------------------- 0D400E02 00 00 ALIGN 4 0D400E04 0D 80 00 E0 off_D400E04 DCD starlet_gpio2_data ; DATA XREF: set_Cr 0D400E04 ; End of function set_C 0D400E08 ; =============== S U B R O U T I N E ======================================= 0D400E08 clear_C ; CODE XREF: clear_S:loc_D400E58p 0D400E08 ; clear_S:loc_D400E7Ep 0D400E08 ; seeprom1+20p ... 0D400E08 4B 02 LDR R3, =starlet_gpio2_data 0D400E0A 49 03 LDR R1, =0xFFFFF7FF 0D400E0C 68 1A LDR R2, [R3] 0D400E0E 40 0A ANDS R2, R1 0D400E10 60 1A STR R2, [R3] 0D400E12 47 70 BX LR 0D400E12 ; --------------------------------------------------------------------------- 0D400E14 0D 80 00 E0 off_D400E14 DCD starlet_gpio2_data ; DATA XREF: clear_Cr 0D400E18 FF FF F7 FF dword_D400E18 DCD 0xFFFFF7FF ; DATA XREF: clear_C+2r 0D400E18 ; End of function clear_C 0D400E1C ; =============== S U B R O U T I N E ======================================= 0D400E1C set_S ; CODE XREF: seeprom1+24p 0D400E1C ; read_SEEPROM+18p 0D400E1C 49 03 LDR R1, =starlet_gpio2_data 0D400E1E 23 80 MOVS R3, #0x80 0D400E20 68 0A LDR R2, [R1] 0D400E22 00 DB LSLS R3, R3, #3 0D400E24 43 1A ORRS R2, R3 0D400E26 60 0A STR R2, [R1] 0D400E28 47 70 BX LR 0D400E28 ; --------------------------------------------------------------------------- 0D400E2A 00 00 ALIGN 4 0D400E2C 0D 80 00 E0 off_D400E2C DCD starlet_gpio2_data ; DATA XREF: set_Sr 0D400E2C ; End of function set_S 0D400E30 ; =============== S U B R O U T I N E ======================================= 0D400E30 clear_D ; CODE XREF: clear_S+18p 0D400E30 ; seeprom1+2Ap 0D400E30 49 04 LDR R1, =starlet_gpio2_data 0D400E32 4A 05 LDR R2, =0xFFFFEFFF 0D400E34 68 0B LDR R3, [R1] 0D400E36 40 1A ANDS R2, R3 0D400E38 23 01 MOVS R3, #1 0D400E3A 40 03 ANDS R3, R0 0D400E3C 03 1B LSLS R3, R3, #0xC 0D400E3E 43 1A ORRS R2, R3 0D400E40 60 0A STR R2, [R1] 0D400E42 47 70 BX LR 0D400E42 ; --------------------------------------------------------------------------- 0D400E44 0D 80 00 E0 off_D400E44 DCD starlet_gpio2_data ; DATA XREF: clear_Dr 0D400E48 FF FF EF FF dword_D400E48 DCD 0xFFFFEFFF ; DATA XREF: clear_D+2r 0D400E48 ; End of function clear_D 0D400E4C ; =============== S U B R O U T I N E ======================================= 0D400E4C clear_S ; CODE XREF: seeprom2+2Ap 0D400E4C ; seeprom_read+26p 0D400E4C ; seeprom4+22p ... 0D400E4C B5 70 PUSH {R4-R6,LR} 0D400E4E 28 00 CMP R0, #0 0D400E50 D0 15 BEQ loc_D400E7E 0D400E52 4D 0D LDR R5, =starlet_gpio2_data 0D400E54 4E 0D LDR R6, =0xFFFFFBFF 0D400E56 1C 04 ADDS R4, R0, #0 0D400E58 loc_D400E58 ; CODE XREF: clear_S+30j 0D400E58 F7 FF FF D6 BL clear_C 0D400E5C 68 2B LDR R3, [R5] 0D400E5E 40 33 ANDS R3, R6 0D400E60 60 2B STR R3, [R5] 0D400E62 20 00 MOVS R0, #0 0D400E64 F7 FF FF E4 BL clear_D 0D400E68 20 7D MOVS R0, #125 0D400E6A F0 02 FF 33 BL delay_1 0D400E6E 3C 01 SUBS R4, #1 0D400E70 F7 FF FF C0 BL set_C 0D400E74 20 7D MOVS R0, #125 0D400E76 F0 02 FF 2D BL delay_1 0D400E7A 2C 00 CMP R4, #0 0D400E7C D1 EC BNE loc_D400E58 0D400E7E loc_D400E7E ; CODE XREF: clear_S+4j 0D400E7E F7 FF FF C3 BL clear_C 0D400E82 BC 70 POP {R4-R6} 0D400E84 BC 01 POP {R0} 0D400E86 47 00 BX R0 0D400E86 ; --------------------------------------------------------------------------- 0D400E88 0D 80 00 E0 off_D400E88 DCD starlet_gpio2_data ; DATA XREF: clear_S+6r 0D400E8C FF FF FB FF dword_D400E8C DCD 0xFFFFFBFF ; DATA XREF: clear_S+8r 0D400E8C ; End of function clear_S 0D400E90 ; =============== S U B R O U T I N E ======================================= 0D400E90 seeprom1 ; CODE XREF: seeprom_read+10p 0D400E90 ; seeprom4+18p seeprom5+Ep ... 0D400E90 B5 F0 PUSH {R4-R7,LR} 0D400E92 46 47 MOV R7, R8 0D400E94 B4 80 PUSH {R7} 0D400E96 23 00 MOVS R3, #0 0D400E98 38 01 SUBS R0, #1 0D400E9A 1C 0E ADDS R6, R1, #0 0D400E9C 46 98 MOV R8, R3 0D400E9E 28 1F CMP R0, #0x1F 0D400EA0 D8 1D BHI loc_D400EDE 0D400EA2 1C 05 ADDS R5, R0, #0 0D400EA4 1C 43 ADDS R3, R0, #1 0D400EA6 D0 14 BEQ loc_D400ED2 0D400EA8 27 01 MOVS R7, #1 0D400EAA loc_D400EAA ; CODE XREF: seeprom1+40j 0D400EAA 1C 34 ADDS R4, R6, #0 0D400EAC 40 EC LSRS R4, R5 0D400EAE 40 3C ANDS R4, R7 0D400EB0 F7 FF FF AA BL clear_C 0D400EB4 F7 FF FF B2 BL set_S 0D400EB8 1C 20 ADDS R0, R4, #0 0D400EBA F7 FF FF B9 BL clear_D 0D400EBE 20 7D MOVS R0, #0x7D 0D400EC0 F0 02 FF 08 BL delay_1 0D400EC4 F7 FF FF 96 BL set_C 0D400EC8 20 7D MOVS R0, #0x7D 0D400ECA F0 02 FF 03 BL delay_1 0D400ECE 3D 01 SUBS R5, #1 0D400ED0 D2 EB BCS loc_D400EAA 0D400ED2 loc_D400ED2 ; CODE XREF: seeprom1+16j 0D400ED2 ; seeprom1+54j 0D400ED2 46 40 MOV R0, R8 0D400ED4 BC 08 POP {R3} 0D400ED6 46 98 MOV R8, R3 0D400ED8 BC F0 POP {R4-R7} 0D400EDA BC 02 POP {R1} 0D400EDC 47 08 BX R1 0D400EDE ; --------------------------------------------------------------------------- 0D400EDE loc_D400EDE ; CODE XREF: seeprom1+10j 0D400EDE 23 04 MOVS R3, #4 0D400EE0 42 5B NEGS R3, R3 0D400EE2 46 98 MOV R8, R3 0D400EE4 E7 F5 B loc_D400ED2 0D400EE4 ; End of function seeprom1 0D400EE4 ; --------------------------------------------------------------------------- 0D400EE6 00 00 ALIGN 4 0D400EE8 ; =============== S U B R O U T I N E ======================================= 0D400EE8 read_SEEPROM ; CODE XREF: seeprom2+18p 0D400EE8 ; seeprom_read+1Cp 0D400EE8 B5 F0 PUSH {R4-R7,LR} 0D400EEA 38 01 SUBS R0, #1 0D400EEC 1C 0F ADDS R7, R1, #0 0D400EEE 26 00 MOVS R6, #0 0D400EF0 28 1F CMP R0, #0x1F 0D400EF2 D8 1C BHI loc_D400F2E 0D400EF4 25 00 MOVS R5, #0 0D400EF6 1C 04 ADDS R4, R0, #0 0D400EF8 1C 43 ADDS R3, R0, #1 0D400EFA D0 13 BEQ loc_D400F24 0D400EFC loc_D400EFC ; CODE XREF: read_SEEPROM+3Aj 0D400EFC F7 FF FF 84 BL clear_C 0D400F00 F7 FF FF 8C BL set_S 0D400F04 20 7D MOVS R0, #0x7D 0D400F06 F0 02 FE E5 BL delay_1 0D400F0A F7 FF FF 73 BL set_C 0D400F0E 20 7D MOVS R0, #0x7D 0D400F10 F0 02 FE E0 BL delay_1 0D400F14 4B 07 LDR R3, =dword_D8000E8 0D400F16 68 1B LDR R3, [R3] 0D400F18 04 9B LSLS R3, R3, #0x12 0D400F1A 0F DB LSRS R3, R3, #0x1F 0D400F1C 40 A3 LSLS R3, R4 0D400F1E 43 1D ORRS R5, R3 0D400F20 3C 01 SUBS R4, #1 0D400F22 D2 EB BCS loc_D400EFC 0D400F24 loc_D400F24 ; CODE XREF: read_SEEPROM+12j 0D400F24 60 3D STR R5, [R7] 0D400F26 loc_D400F26 ; CODE XREF: read_SEEPROM+4Aj 0D400F26 1C 30 ADDS R0, R6, #0 0D400F28 BC F0 POP {R4-R7} 0D400F2A BC 02 POP {R1} 0D400F2C 47 08 BX R1 0D400F2E ; --------------------------------------------------------------------------- 0D400F2E loc_D400F2E ; CODE XREF: read_SEEPROM+Aj 0D400F2E 26 04 MOVS R6, #4 0D400F30 42 76 NEGS R6, R6 0D400F32 E7 F8 B loc_D400F26 0D400F32 ; --------------------------------------------------------------------------- 0D400F34 0D 80 00 E8 off_D400F34 DCD dword_D8000E8 ; DATA XREF: read_SEEPROM+2Cr 0D400F34 ; End of function read_SEEPROM 0D400F38 ; =============== S U B R O U T I N E ======================================= 0D400F38 seeprom2 ; CODE XREF: seeprom4+26p 0D400F38 ; seeprom5+1Cp seeprom6+1Cp ... 0D400F38 var_18 = -0x18 0D400F38 B5 F0 PUSH {R4-R7,LR} 0D400F3A B0 81 SUB SP, SP, #4 0D400F3C 25 00 MOVS R5, #0 0D400F3E 24 00 MOVS R4, #0 0D400F40 46 6F MOV R7, SP 0D400F42 26 01 MOVS R6, #1 0D400F44 95 00 STR R5, [SP,#0x18+var_18] 0D400F46 E0 01 B loc_D400F4C 0D400F48 ; --------------------------------------------------------------------------- 0D400F48 loc_D400F48 ; CODE XREF: seeprom2+26j 0D400F48 2C 63 CMP R4, #0x63 0D400F4A D8 09 BHI loc_D400F60 0D400F4C loc_D400F4C ; CODE XREF: seeprom2+Ej 0D400F4C 20 0A MOVS R0, #0xA 0D400F4E 1C 39 ADDS R1, R7, #0 0D400F50 F7 FF FF CA BL read_SEEPROM 0D400F54 9B 00 LDR R3, [SP,#0x18+var_18] 0D400F56 1C 32 ADDS R2, R6, #0 0D400F58 1C 05 ADDS R5, R0, #0 0D400F5A 34 01 ADDS R4, #1 0D400F5C 43 9A BICS R2, R3 0D400F5E D1 F3 BNE loc_D400F48 0D400F60 loc_D400F60 ; CODE XREF: seeprom2+12j 0D400F60 20 02 MOVS R0, #2 0D400F62 F7 FF FF 73 BL clear_S 0D400F66 2C 63 CMP R4, #0x63 0D400F68 D9 01 BLS loc_D400F6E 0D400F6A 25 09 MOVS R5, #9 0D400F6C 42 6D NEGS R5, R5 0D400F6E loc_D400F6E ; CODE XREF: seeprom2+30j 0D400F6E 1C 28 ADDS R0, R5, #0 0D400F70 B0 01 ADD SP, SP, #4 0D400F72 BC F0 POP {R4-R7} 0D400F74 BC 02 POP {R1} 0D400F76 47 08 BX R1 0D400F76 ; End of function seeprom2 0D400F78 ; =============== S U B R O U T I N E ======================================= 0D400F78 seeprom_read ; CODE XREF: sub_D40110C+40p 0D400F78 ; sub_D40120C+40p 0D400F78 B5 30 PUSH {R4,R5,LR} 0D400F7A 1C 0D ADDS R5, R1, #0 0D400F7C 23 C0 MOVS R3, #0xC0 0D400F7E 21 FF MOVS R1, #0xFF 0D400F80 40 01 ANDS R1, R0 0D400F82 00 DB LSLS R3, R3, #3 0D400F84 20 0B MOVS R0, #0xB 0D400F86 43 19 ORRS R1, R3 0D400F88 F7 FF FF 82 BL seeprom1 0D400F8C 1E 04 SUBS R4, R0, #0 0D400F8E D1 08 BNE loc_D400FA2 0D400F90 20 10 MOVS R0, #0x10 0D400F92 1C 29 ADDS R1, R5, #0 0D400F94 F7 FF FF A8 BL read_SEEPROM 0D400F98 1E 04 SUBS R4, R0, #0 0D400F9A D1 02 BNE loc_D400FA2 0D400F9C 20 02 MOVS R0, #2 0D400F9E F7 FF FF 55 BL clear_S 0D400FA2 loc_D400FA2 ; CODE XREF: seeprom_read+16j 0D400FA2 ; seeprom_read+22j 0D400FA2 1C 20 ADDS R0, R4, #0 0D400FA4 BC 30 POP {R4,R5} 0D400FA6 BC 02 POP {R1} 0D400FA8 47 08 BX R1 0D400FA8 ; End of function seeprom_read 0D400FA8 ; --------------------------------------------------------------------------- 0D400FAA 00 00 ALIGN 4 0D400FAC ; =============== S U B R O U T I N E ======================================= 0D400FAC seeprom4 ; CODE XREF: seeprom10+32p 0D400FAC ; sub_D401420+52p 0D400FAC B5 00 PUSH {LR} 0D400FAE 23 FF MOVS R3, #0xFF 0D400FB0 22 A0 MOVS R2, #0xA0 0D400FB2 40 03 ANDS R3, R0 0D400FB4 00 D2 LSLS R2, R2, #3 0D400FB6 43 13 ORRS R3, R2 0D400FB8 4A 08 LDR R2, =0xFFFF 0D400FBA 04 1B LSLS R3, R3, #0x10 0D400FBC 40 0A ANDS R2, R1 0D400FBE 1C 19 ADDS R1, R3, #0 0D400FC0 20 1B MOVS R0, #0x1B 0D400FC2 43 11 ORRS R1, R2 0D400FC4 F7 FF FF 64 BL seeprom1 0D400FC8 28 00 CMP R0, #0 0D400FCA D1 04 BNE loc_D400FD6 0D400FCC 20 02 MOVS R0, #2 0D400FCE F7 FF FF 3D BL clear_S 0D400FD2 F7 FF FF B1 BL seeprom2 0D400FD6 loc_D400FD6 ; CODE XREF: seeprom4+1Ej 0D400FD6 BC 02 POP {R1} 0D400FD8 47 08 BX R1 0D400FD8 ; --------------------------------------------------------------------------- 0D400FDA 00 00 ALIGN 4 0D400FDC 00 00 FF FF off_D400FDC DCD 0xFFFF ; DATA XREF: seeprom4+Cr 0D400FDC ; End of function seeprom4 0D400FE0 ; =============== S U B R O U T I N E ======================================= 0D400FE0 seeprom5 0D400FE0 B5 00 PUSH {LR} 0D400FE2 21 FF MOVS R1, #0xFF 0D400FE4 23 E0 MOVS R3, #0xE0 0D400FE6 40 01 ANDS R1, R0 0D400FE8 00 DB LSLS R3, R3, #3 0D400FEA 20 0B MOVS R0, #0xB 0D400FEC 43 19 ORRS R1, R3 0D400FEE F7 FF FF 4F BL seeprom1 0D400FF2 28 00 CMP R0, #0 0D400FF4 D1 04 BNE loc_D401000 0D400FF6 20 02 MOVS R0, #2 0D400FF8 F7 FF FF 28 BL clear_S 0D400FFC F7 FF FF 9C BL seeprom2 0D401000 loc_D401000 ; CODE XREF: seeprom5+14j 0D401000 BC 02 POP {R1} 0D401002 47 08 BX R1 0D401002 ; End of function seeprom5 0D401004 ; =============== S U B R O U T I N E ======================================= 0D401004 seeprom6 0D401004 B5 00 PUSH {LR} 0D401006 49 08 LDR R1, =0xFFFF 0D401008 23 88 MOVS R3, #0x88 0D40100A 40 01 ANDS R1, R0 0D40100C 04 DB LSLS R3, R3, #0x13 0D40100E 20 1B MOVS R0, #0x1B 0D401010 43 19 ORRS R1, R3 0D401012 F7 FF FF 3D BL seeprom1 0D401016 28 00 CMP R0, #0 0D401018 D1 04 BNE loc_D401024 0D40101A 20 02 MOVS R0, #2 0D40101C F7 FF FF 16 BL clear_S 0D401020 F7 FF FF 8A BL seeprom2 0D401024 loc_D401024 ; CODE XREF: seeprom6+14j 0D401024 BC 02 POP {R1} 0D401026 47 08 BX R1 0D401026 ; --------------------------------------------------------------------------- 0D401028 00 00 FF FF off_D401028 DCD 0xFFFF ; DATA XREF: seeprom6+2r 0D401028 ; End of function seeprom6 0D40102C ; =============== S U B R O U T I N E ======================================= 0D40102C seeprom7 0D40102C B5 00 PUSH {LR} 0D40102E 21 90 MOVS R1, #0x90 0D401030 20 0B MOVS R0, #0xB 0D401032 00 C9 LSLS R1, R1, #3 0D401034 F7 FF FF 2C BL seeprom1 0D401038 28 00 CMP R0, #0 0D40103A D1 04 BNE loc_D401046 0D40103C 20 02 MOVS R0, #2 0D40103E F7 FF FF 05 BL clear_S 0D401042 F7 FF FF 79 BL seeprom2 0D401046 loc_D401046 ; CODE XREF: seeprom7+Ej 0D401046 BC 02 POP {R1} 0D401048 47 08 BX R1 0D401048 ; End of function seeprom7 0D401048 ; --------------------------------------------------------------------------- 0D40104A 00 00 ALIGN 4 0D40104C ; =============== S U B R O U T I N E ======================================= 0D40104C seeprom8 ; CODE XREF: seeprom10+1Ep 0D40104C ; sub_D401420+3Ep 0D40104C B5 10 PUSH {R4,LR} 0D40104E 21 98 MOVS R1, #0x98 0D401050 20 0B MOVS R0, #0xB 0D401052 00 C9 LSLS R1, R1, #3 0D401054 F7 FF FF 1C BL seeprom1 0D401058 1E 04 SUBS R4, R0, #0 0D40105A D1 02 BNE loc_D401062 0D40105C 20 02 MOVS R0, #2 0D40105E F7 FF FE F5 BL clear_S 0D401062 loc_D401062 ; CODE XREF: seeprom8+Ej 0D401062 1C 20 ADDS R0, R4, #0 0D401064 BC 10 POP {R4} 0D401066 BC 02 POP {R1} 0D401068 47 08 BX R1 0D401068 ; End of function seeprom8 0D401068 ; --------------------------------------------------------------------------- 0D40106A 00 00 ALIGN 4 0D40106C ; =============== S U B R O U T I N E ======================================= 0D40106C seeprom9 ; CODE XREF: seeprom10:loc_D4010CCp 0D40106C ; sub_D401420:loc_D401480p 0D40106C B5 10 PUSH {R4,LR} 0D40106E 21 80 MOVS R1, #0x80 0D401070 20 0B MOVS R0, #0xB 0D401072 00 C9 LSLS R1, R1, #3 0D401074 F7 FF FF 0C BL seeprom1 0D401078 1E 04 SUBS R4, R0, #0 0D40107A D1 02 BNE loc_D401082 0D40107C 20 02 MOVS R0, #2 0D40107E F7 FF FE E5 BL clear_S 0D401082 loc_D401082 ; CODE XREF: seeprom9+Ej 0D401082 1C 20 ADDS R0, R4, #0 0D401084 BC 10 POP {R4} 0D401086 BC 02 POP {R1} 0D401088 47 08 BX R1 0D401088 ; End of function seeprom9 0D401088 ; --------------------------------------------------------------------------- 0D40108A 46 C0 ALIGN 4 0D40108C ; =============== S U B R O U T I N E ======================================= 0D40108C seeprom10 ; CODE XREF: sub_D401378+2Ap 0D40108C ; sub_D4013B0+2Ap 0D40108C ; sub_D4013E8+2Ap 0D40108C B5 F0 PUSH {R4-R7,LR} 0D40108E 1C 04 ADDS R4, R0, #0 0D401090 29 01 CMP R1, #1 0D401092 D9 05 BLS loc_D4010A0 0D401094 26 04 MOVS R6, #4 0D401096 42 76 NEGS R6, R6 0D401098 loc_D401098 ; CODE XREF: seeprom10+24j 0D401098 ; seeprom10+44j 0D401098 1C 30 ADDS R0, R6, #0 0D40109A BC F0 POP {R4-R7} 0D40109C BC 02 POP {R1} 0D40109E 47 08 BX R1 0D4010A0 ; --------------------------------------------------------------------------- 0D4010A0 loc_D4010A0 ; CODE XREF: seeprom10+6j 0D4010A0 23 0A MOVS R3, #0xA 0D4010A2 43 4B MULS R3, R1 0D4010A4 1C 1F ADDS R7, R3, #0 0D4010A6 37 48 ADDS R7, #0x48 0D4010A8 08 7F LSRS R7, R7, #1 0D4010AA F7 FF FF CF BL seeprom8 0D4010AE 1E 06 SUBS R6, R0, #0 0D4010B0 D1 F2 BNE loc_D401098 0D4010B2 25 00 MOVS R5, #0 0D4010B4 loc_D4010B4 ; CODE XREF: seeprom10+3Ej 0D4010B4 88 21 LDRH R1, [R4] 0D4010B6 04 09 LSLS R1, R1, #0x10 0D4010B8 19 78 ADDS R0, R7, R5 0D4010BA 0C 09 LSRS R1, R1, #0x10 0D4010BC 34 02 ADDS R4, #2 0D4010BE F7 FF FF 75 BL seeprom4 0D4010C2 1E 06 SUBS R6, R0, #0 0D4010C4 D1 02 BNE loc_D4010CC 0D4010C6 35 01 ADDS R5, #1 0D4010C8 2D 04 CMP R5, #4 0D4010CA D9 F3 BLS loc_D4010B4 0D4010CC loc_D4010CC ; CODE XREF: seeprom10+38j 0D4010CC F7 FF FF CE BL seeprom9 0D4010D0 E7 E2 B loc_D401098 0D4010D0 ; End of function seeprom10 0D4010D0 ; --------------------------------------------------------------------------- 0D4010D2 00 00 ALIGN 4 0D4010D4 ; =============== S U B R O U T I N E ======================================= 0D4010D4 sub_D4010D4 ; CODE XREF: sub_D40110C+6Ep 0D4010D4 ; sub_D401378+20p 0D4010D4 ; sub_D4013B0+20p ... 0D4010D4 B5 00 PUSH {LR} 0D4010D6 21 00 MOVS R1, #0 0D4010D8 22 03 MOVS R2, #3 0D4010DA loc_D4010DA ; CODE XREF: sub_D4010D4+12j 0D4010DA 88 03 LDRH R3, [R0] 0D4010DC 18 CB ADDS R3, R1, R3 0D4010DE 04 1B LSLS R3, R3, #0x10 0D4010E0 30 02 ADDS R0, #2 0D4010E2 0C 19 LSRS R1, R3, #0x10 0D4010E4 3A 01 SUBS R2, #1 0D4010E6 D5 F8 BPL loc_D4010DA 0D4010E8 1C 08 ADDS R0, R1, #0 0D4010EA BC 02 POP {R1} 0D4010EC 47 08 BX R1 0D4010EC ; End of function sub_D4010D4 0D4010EC ; --------------------------------------------------------------------------- 0D4010EE 00 00 ALIGN 4 0D4010F0 ; =============== S U B R O U T I N E ======================================= 0D4010F0 sub_D4010F0 ; CODE XREF: sub_D40120C+6Ep 0D4010F0 ; sub_D401420+1Ap 0D4010F0 B5 00 PUSH {LR} 0D4010F2 21 00 MOVS R1, #0 0D4010F4 22 01 MOVS R2, #1 0D4010F6 loc_D4010F6 ; CODE XREF: sub_D4010F0+12j 0D4010F6 88 03 LDRH R3, [R0] 0D4010F8 18 CB ADDS R3, R1, R3 0D4010FA 04 1B LSLS R3, R3, #0x10 0D4010FC 30 02 ADDS R0, #2 0D4010FE 0C 19 LSRS R1, R3, #0x10 0D401100 3A 01 SUBS R2, #1 0D401102 D5 F8 BPL loc_D4010F6 0D401104 1C 08 ADDS R0, R1, #0 0D401106 BC 02 POP {R1} 0D401108 47 08 BX R1 0D401108 ; End of function sub_D4010F0 0D401108 ; --------------------------------------------------------------------------- 0D40110A 00 00 ALIGN 4 0D40110C ; =============== S U B R O U T I N E ======================================= 0D40110C sub_D40110C ; CODE XREF: sub_D40130C+Ap 0D40110C ; sub_D401328+Ap 0D40110C ; sub_D401344+Ap ... 0D40110C var_50 = -0x50 0D40110C var_4C = -0x4C 0D40110C var_48 = -0x48 0D40110C var_44 = -0x44 0D40110C var_40 = -0x40 0D40110C var_3C = -0x3C 0D40110C var_38 = -0x38 0D40110C B5 F0 PUSH {R4-R7,LR} 0D40110E 46 5F MOV R7, R11 0D401110 46 56 MOV R6, R10 0D401112 46 4D MOV R5, R9 0D401114 46 44 MOV R4, R8 0D401116 B4 F0 PUSH {R4-R7} 0D401118 B0 8B SUB SP, SP, #0x2C 0D40111A 22 01 MOVS R2, #1 0D40111C 91 03 STR R1, [SP,#0x50+var_44] 0D40111E 21 00 MOVS R1, #0 0D401120 42 53 NEGS R3, R2 0D401122 91 02 STR R1, [SP,#0x50+var_48] 0D401124 91 01 STR R1, [SP,#0x50+var_4C] 0D401126 90 04 STR R0, [SP,#0x50+var_40] 0D401128 A9 05 ADD R1, SP, #0x50+var_3C 0D40112A 46 9A MOV R10, R3 0D40112C 46 9B MOV R11, R3 0D40112E 27 00 MOVS R7, #0 0D401130 46 88 MOV R8, R1 0D401132 22 00 MOVS R2, #0 0D401134 loc_D401134 ; CODE XREF: sub_D40110C+60j 0D401134 A9 06 ADD R1, SP, #0x50+var_38 0D401136 18 8B ADDS R3, R1, R2 0D401138 2F 01 CMP R7, #1 0D40113A D8 62 BHI loc_D401202 0D40113C 1C 16 ADDS R6, R2, #0 0D40113E 36 48 ADDS R6, #0x48 0D401140 08 76 LSRS R6, R6, #1 0D401142 25 00 MOVS R5, #0 0D401144 1C 1C ADDS R4, R3, #0 0D401146 loc_D401146 ; CODE XREF: sub_D40110C+54j 0D401146 19 70 ADDS R0, R6, R5 0D401148 46 41 MOV R1, R8 0D40114A 92 00 STR R2, [SP,#0x50+var_50] 0D40114C F7 FF FF 14 BL seeprom_read 0D401150 9B 05 LDR R3, [SP,#0x50+var_3C] 0D401152 9A 00 LDR R2, [SP,#0x50+var_50] 0D401154 80 23 STRH R3, [R4] 0D401156 34 02 ADDS R4, #2 0D401158 28 00 CMP R0, #0 0D40115A D1 4A BNE loc_D4011F2 0D40115C 35 01 ADDS R5, #1 0D40115E 2D 04 CMP R5, #4 0D401160 D9 F1 BLS loc_D401146 0D401162 21 00 MOVS R1, #0 0D401164 46 89 MOV R9, R1 0D401166 loc_D401166 ; CODE XREF: sub_D40110C+EAj 0D401166 37 01 ADDS R7, #1 0D401168 32 0A ADDS R2, #0xA 0D40116A 2F 01 CMP R7, #1 0D40116C D9 E2 BLS loc_D401134 0D40116E 27 00 MOVS R7, #0 0D401170 AC 06 ADD R4, SP, #0x50+var_38 0D401172 26 00 MOVS R6, #0 0D401174 loc_D401174 ; CODE XREF: sub_D40110C+8Cj 0D401174 AA 06 ADD R2, SP, #0x50+var_38 0D401176 19 95 ADDS R5, R2, R6 0D401178 1C 28 ADDS R0, R5, #0 0D40117A F7 FF FF AB BL sub_D4010D4 0D40117E 7A 22 LDRB R2, [R4,#8] 0D401180 7A 63 LDRB R3, [R4,#9] 0D401182 02 12 LSLS R2, R2, #8 0D401184 43 13 ORRS R3, R2 0D401186 42 83 CMP R3, R0 0D401188 D0 1F BEQ loc_D4011CA 0D40118A 23 00 MOVS R3, #0 0D40118C 46 9B MOV R11, R3 0D40118E 46 BA MOV R10, R7 0D401190 loc_D401190 ; CODE XREF: sub_D40110C+DEj 0D401190 ; sub_D40110C+E4j 0D401190 37 01 ADDS R7, #1 0D401192 36 0A ADDS R6, #0xA 0D401194 34 0A ADDS R4, #0xA 0D401196 2F 01 CMP R7, #1 0D401198 D9 EC BLS loc_D401174 0D40119A 9A 01 LDR R2, [SP,#0x50+var_4C] 0D40119C 2A 00 CMP R2, #0 0D40119E D0 2C BEQ loc_D4011FA 0D4011A0 46 53 MOV R3, R10 0D4011A2 2B 00 CMP R3, #0 0D4011A4 DB 29 BLT loc_D4011FA 0D4011A6 99 01 LDR R1, [SP,#0x50+var_4C] 0D4011A8 98 04 LDR R0, [SP,#0x50+var_40] 0D4011AA 22 0A MOVS R2, #0xA 0D4011AC F0 02 FC 86 BL memcpy 0D4011B0 99 03 LDR R1, [SP,#0x50+var_44] 0D4011B2 46 53 MOV R3, R10 0D4011B4 60 0B STR R3, [R1] 0D4011B6 loc_D4011B6 ; CODE XREF: sub_D40110C+ECj 0D4011B6 ; sub_D40110C+F4j 0D4011B6 ; sub_D40110C+FCj 0D4011B6 46 48 MOV R0, R9 0D4011B8 B0 0B ADD SP, SP, #0x2C 0D4011BA BC 78 POP {R3-R6} 0D4011BC 46 98 MOV R8, R3 0D4011BE 46 A1 MOV R9, R4 0D4011C0 46 AA MOV R10, R5 0D4011C2 46 B3 MOV R11, R6 0D4011C4 BC F0 POP {R4-R7} 0D4011C6 BC 02 POP {R1} 0D4011C8 47 08 BX R1 0D4011CA ; --------------------------------------------------------------------------- 0D4011CA loc_D4011CA ; CODE XREF: sub_D40110C+7Cj 0D4011CA 79 23 LDRB R3, [R4,#4] 0D4011CC 79 62 LDRB R2, [R4,#5] 0D4011CE 06 1B LSLS R3, R3, #0x18 0D4011D0 04 12 LSLS R2, R2, #0x10 0D4011D2 43 1A ORRS R2, R3 0D4011D4 79 A3 LDRB R3, [R4,#6] 0D4011D6 02 1B LSLS R3, R3, #8 0D4011D8 43 13 ORRS R3, R2 0D4011DA 79 E2 LDRB R2, [R4,#7] 0D4011DC 99 02 LDR R1, [SP,#0x50+var_48] 0D4011DE 43 1A ORRS R2, R3 0D4011E0 42 8A CMP R2, R1 0D4011E2 D3 01 BCC loc_D4011E8 0D4011E4 95 01 STR R5, [SP,#0x50+var_4C] 0D4011E6 92 02 STR R2, [SP,#0x50+var_48] 0D4011E8 loc_D4011E8 ; CODE XREF: sub_D40110C+D6j 0D4011E8 45 5A CMP R2, R11 0D4011EA D2 D1 BCS loc_D401190 0D4011EC 46 BA MOV R10, R7 0D4011EE 46 93 MOV R11, R2 0D4011F0 E7 CE B loc_D401190 0D4011F2 ; --------------------------------------------------------------------------- 0D4011F2 loc_D4011F2 ; CODE XREF: sub_D40110C+4Ej 0D4011F2 28 00 CMP R0, #0 0D4011F4 46 81 MOV R9, R0 0D4011F6 D0 B6 BEQ loc_D401166 0D4011F8 E7 DD B loc_D4011B6 0D4011FA ; --------------------------------------------------------------------------- 0D4011FA loc_D4011FA ; CODE XREF: sub_D40110C+92j 0D4011FA ; sub_D40110C+98j 0D4011FA 21 05 MOVS R1, #5 0D4011FC 42 4A NEGS R2, R1 0D4011FE 46 91 MOV R9, R2 0D401200 E7 D9 B loc_D4011B6 0D401202 ; --------------------------------------------------------------------------- 0D401202 loc_D401202 ; CODE XREF: sub_D40110C+2Ej 0D401202 22 04 MOVS R2, #4 0D401204 42 53 NEGS R3, R2 0D401206 46 99 MOV R9, R3 0D401208 E7 D5 B loc_D4011B6 0D401208 ; End of function sub_D40110C 0D401208 ; --------------------------------------------------------------------------- 0D40120A 00 00 ALIGN 4 0D40120C ; =============== S U B R O U T I N E ======================================= 0D40120C sub_D40120C ; CODE XREF: sub_D401360+8p 0D40120C ; sub_D401420+Ap 0D40120C var_50 = -0x50 0D40120C var_4C = -0x4C 0D40120C var_48 = -0x48 0D40120C var_44 = -0x44 0D40120C var_40 = -0x40 0D40120C var_3C = -0x3C 0D40120C var_38 = -0x38 0D40120C B5 F0 PUSH {R4-R7,LR} 0D40120E 46 5F MOV R7, R11 0D401210 46 56 MOV R6, R10 0D401212 46 4D MOV R5, R9 0D401214 46 44 MOV R4, R8 0D401216 B4 F0 PUSH {R4-R7} 0D401218 B0 8B SUB SP, SP, #0x2C 0D40121A 22 01 MOVS R2, #1 0D40121C 91 03 STR R1, [SP,#0x50+var_44] 0D40121E 21 00 MOVS R1, #0 0D401220 42 53 NEGS R3, R2 0D401222 91 02 STR R1, [SP,#0x50+var_48] 0D401224 91 01 STR R1, [SP,#0x50+var_4C] 0D401226 90 04 STR R0, [SP,#0x50+var_40] 0D401228 A9 05 ADD R1, SP, #0x50+var_3C 0D40122A 46 9A MOV R10, R3 0D40122C 46 9B MOV R11, R3 0D40122E 27 00 MOVS R7, #0 0D401230 46 88 MOV R8, R1 0D401232 22 00 MOVS R2, #0 0D401234 loc_D401234 ; CODE XREF: sub_D40120C+60j 0D401234 A9 06 ADD R1, SP, #0x50+var_38 0D401236 18 8B ADDS R3, R1, R2 0D401238 2F 02 CMP R7, #2 0D40123A D8 62 BHI loc_D401302 0D40123C 1C 16 ADDS R6, R2, #0 0D40123E 36 5C ADDS R6, #0x5C 0D401240 08 76 LSRS R6, R6, #1 0D401242 25 00 MOVS R5, #0 0D401244 1C 1C ADDS R4, R3, #0 0D401246 loc_D401246 ; CODE XREF: sub_D40120C+54j 0D401246 19 70 ADDS R0, R6, R5 0D401248 46 41 MOV R1, R8 0D40124A 92 00 STR R2, [SP,#0x50+var_50] 0D40124C F7 FF FE 94 BL seeprom_read 0D401250 9B 05 LDR R3, [SP,#0x50+var_3C] 0D401252 9A 00 LDR R2, [SP,#0x50+var_50] 0D401254 80 23 STRH R3, [R4] 0D401256 34 02 ADDS R4, #2 0D401258 28 00 CMP R0, #0 0D40125A D1 4A BNE loc_D4012F2 0D40125C 35 01 ADDS R5, #1 0D40125E 2D 02 CMP R5, #2 0D401260 D9 F1 BLS loc_D401246 0D401262 21 00 MOVS R1, #0 0D401264 46 89 MOV R9, R1 0D401266 loc_D401266 ; CODE XREF: sub_D40120C+EAj 0D401266 37 01 ADDS R7, #1 0D401268 32 06 ADDS R2, #6 0D40126A 2F 02 CMP R7, #2 0D40126C D9 E2 BLS loc_D401234 0D40126E 27 00 MOVS R7, #0 0D401270 AC 06 ADD R4, SP, #0x50+var_38 0D401272 26 00 MOVS R6, #0 0D401274 loc_D401274 ; CODE XREF: sub_D40120C+8Cj 0D401274 AA 06 ADD R2, SP, #0x50+var_38 0D401276 19 95 ADDS R5, R2, R6 0D401278 1C 28 ADDS R0, R5, #0 0D40127A F7 FF FF 39 BL sub_D4010F0 0D40127E 79 22 LDRB R2, [R4,#4] 0D401280 79 63 LDRB R3, [R4,#5] 0D401282 02 12 LSLS R2, R2, #8 0D401284 43 13 ORRS R3, R2 0D401286 42 83 CMP R3, R0 0D401288 D0 1F BEQ loc_D4012CA 0D40128A 23 00 MOVS R3, #0 0D40128C 46 9B MOV R11, R3 0D40128E 46 BA MOV R10, R7 0D401290 loc_D401290 ; CODE XREF: sub_D40120C+DEj 0D401290 ; sub_D40120C+E4j 0D401290 37 01 ADDS R7, #1 0D401292 36 06 ADDS R6, #6 0D401294 34 06 ADDS R4, #6 0D401296 2F 02 CMP R7, #2 0D401298 D9 EC BLS loc_D401274 0D40129A 9A 01 LDR R2, [SP,#0x50+var_4C] 0D40129C 2A 00 CMP R2, #0 0D40129E D0 2C BEQ loc_D4012FA 0D4012A0 46 53 MOV R3, R10 0D4012A2 2B 00 CMP R3, #0 0D4012A4 DB 29 BLT loc_D4012FA 0D4012A6 99 01 LDR R1, [SP,#0x50+var_4C] 0D4012A8 98 04 LDR R0, [SP,#0x50+var_40] 0D4012AA 22 06 MOVS R2, #6 0D4012AC F0 02 FC 06 BL memcpy 0D4012B0 99 03 LDR R1, [SP,#0x50+var_44] 0D4012B2 46 53 MOV R3, R10 0D4012B4 60 0B STR R3, [R1] 0D4012B6 loc_D4012B6 ; CODE XREF: sub_D40120C+ECj 0D4012B6 ; sub_D40120C+F4j 0D4012B6 ; sub_D40120C+FCj 0D4012B6 46 48 MOV R0, R9 0D4012B8 B0 0B ADD SP, SP, #0x2C 0D4012BA BC 78 POP {R3-R6} 0D4012BC 46 98 MOV R8, R3 0D4012BE 46 A1 MOV R9, R4 0D4012C0 46 AA MOV R10, R5 0D4012C2 46 B3 MOV R11, R6 0D4012C4 BC F0 POP {R4-R7} 0D4012C6 BC 02 POP {R1} 0D4012C8 47 08 BX R1 0D4012CA ; --------------------------------------------------------------------------- 0D4012CA loc_D4012CA ; CODE XREF: sub_D40120C+7Cj 0D4012CA 78 23 LDRB R3, [R4] 0D4012CC 78 62 LDRB R2, [R4,#1] 0D4012CE 06 1B LSLS R3, R3, #0x18 0D4012D0 04 12 LSLS R2, R2, #0x10 0D4012D2 43 1A ORRS R2, R3 0D4012D4 78 A3 LDRB R3, [R4,#2] 0D4012D6 02 1B LSLS R3, R3, #8 0D4012D8 43 13 ORRS R3, R2 0D4012DA 78 E2 LDRB R2, [R4,#3] 0D4012DC 99 02 LDR R1, [SP,#0x50+var_48] 0D4012DE 43 1A ORRS R2, R3 0D4012E0 42 8A CMP R2, R1 0D4012E2 D3 01 BCC loc_D4012E8 0D4012E4 95 01 STR R5, [SP,#0x50+var_4C] 0D4012E6 92 02 STR R2, [SP,#0x50+var_48] 0D4012E8 loc_D4012E8 ; CODE XREF: sub_D40120C+D6j 0D4012E8 45 5A CMP R2, R11 0D4012EA D2 D1 BCS loc_D401290 0D4012EC 46 BA MOV R10, R7 0D4012EE 46 93 MOV R11, R2 0D4012F0 E7 CE B loc_D401290 0D4012F2 ; --------------------------------------------------------------------------- 0D4012F2 loc_D4012F2 ; CODE XREF: sub_D40120C+4Ej 0D4012F2 28 00 CMP R0, #0 0D4012F4 46 81 MOV R9, R0 0D4012F6 D0 B6 BEQ loc_D401266 0D4012F8 E7 DD B loc_D4012B6 0D4012FA ; --------------------------------------------------------------------------- 0D4012FA loc_D4012FA ; CODE XREF: sub_D40120C+92j 0D4012FA ; sub_D40120C+98j 0D4012FA 21 05 MOVS R1, #5 0D4012FC 42 4A NEGS R2, R1 0D4012FE 46 91 MOV R9, R2 0D401300 E7 D9 B loc_D4012B6 0D401302 ; --------------------------------------------------------------------------- 0D401302 loc_D401302 ; CODE XREF: sub_D40120C+2Ej 0D401302 22 04 MOVS R2, #4 0D401304 42 53 NEGS R3, R2 0D401306 46 99 MOV R9, R3 0D401308 E7 D5 B loc_D4012B6 0D401308 ; End of function sub_D40120C 0D401308 ; --------------------------------------------------------------------------- 0D40130A 00 00 ALIGN 4 0D40130C ; =============== S U B R O U T I N E ======================================= 0D40130C sub_D40130C ; CODE XREF: boot1_main:loc_D400D16p 0D40130C var_14 = -0x14 0D40130C B5 10 PUSH {R4,LR} 0D40130E B0 84 SUB SP, SP, #0x10 0D401310 AC 01 ADD R4, SP, #0x18+var_14 0D401312 1C 20 ADDS R0, R4, #0 0D401314 46 69 MOV R1, SP 0D401316 F7 FF FE F9 BL sub_D40110C 0D40131A 28 00 CMP R0, #0 0D40131C D1 00 BNE loc_D401320 0D40131E 78 20 LDRB R0, [R4] 0D401320 loc_D401320 ; CODE XREF: sub_D40130C+10j 0D401320 B0 04 ADD SP, SP, #0x10 0D401322 BC 10 POP {R4} 0D401324 BC 02 POP {R1} 0D401326 47 08 BX R1 0D401326 ; End of function sub_D40130C 0D401328 ; =============== S U B R O U T I N E ======================================= 0D401328 sub_D401328 0D401328 var_14 = -0x14 0D401328 B5 10 PUSH {R4,LR} 0D40132A B0 84 SUB SP, SP, #0x10 0D40132C AC 01 ADD R4, SP, #0x18+var_14 0D40132E 1C 20 ADDS R0, R4, #0 0D401330 46 69 MOV R1, SP 0D401332 F7 FF FE EB BL sub_D40110C 0D401336 28 00 CMP R0, #0 0D401338 D1 00 BNE loc_D40133C 0D40133A 78 60 LDRB R0, [R4,#1] 0D40133C loc_D40133C ; CODE XREF: sub_D401328+10j 0D40133C B0 04 ADD SP, SP, #0x10 0D40133E BC 10 POP {R4} 0D401340 BC 02 POP {R1} 0D401342 47 08 BX R1 0D401342 ; End of function sub_D401328 0D401344 ; =============== S U B R O U T I N E ======================================= 0D401344 sub_D401344 0D401344 var_14 = -0x14 0D401344 B5 10 PUSH {R4,LR} 0D401346 B0 84 SUB SP, SP, #0x10 0D401348 AC 01 ADD R4, SP, #0x18+var_14 0D40134A 1C 20 ADDS R0, R4, #0 0D40134C 46 69 MOV R1, SP 0D40134E F7 FF FE DD BL sub_D40110C 0D401352 28 00 CMP R0, #0 0D401354 D1 00 BNE loc_D401358 0D401356 78 A0 LDRB R0, [R4,#2] 0D401358 loc_D401358 ; CODE XREF: sub_D401344+10j 0D401358 B0 04 ADD SP, SP, #0x10 0D40135A BC 10 POP {R4} 0D40135C BC 02 POP {R1} 0D40135E 47 08 BX R1 0D40135E ; End of function sub_D401344 0D401360 ; =============== S U B R O U T I N E ======================================= 0D401360 sub_D401360 0D401360 var_C = -0xC 0D401360 B5 00 PUSH {LR} 0D401362 B0 83 SUB SP, SP, #0xC 0D401364 A8 01 ADD R0, SP, #0x10+var_C 0D401366 46 69 MOV R1, SP 0D401368 F7 FF FF 50 BL sub_D40120C 0D40136C 28 00 CMP R0, #0 0D40136E D1 00 BNE loc_D401372 0D401370 98 01 LDR R0, [SP,#0x10+var_C] 0D401372 loc_D401372 ; CODE XREF: sub_D401360+Ej 0D401372 B0 03 ADD SP, SP, #0xC 0D401374 BC 02 POP {R1} 0D401376 47 08 BX R1 0D401376 ; End of function sub_D401360 0D401378 ; =============== S U B R O U T I N E ======================================= 0D401378 sub_D401378 0D401378 var_18 = -0x18 0D401378 var_14 = -0x14 0D401378 var_10 = -0x10 0D401378 B5 10 PUSH {R4,LR} 0D40137A B0 84 SUB SP, SP, #0x10 0D40137C AC 01 ADD R4, SP, #0x18+var_14 0D40137E 1C 20 ADDS R0, R4, #0 0D401380 46 69 MOV R1, SP 0D401382 F7 FF FE C3 BL sub_D40110C 0D401386 28 00 CMP R0, #0 0D401388 D1 0D BNE loc_D4013A6 0D40138A 78 23 LDRB R3, [R4] 0D40138C 33 01 ADDS R3, #1 0D40138E 70 23 STRB R3, [R4] 0D401390 9B 02 LDR R3, [SP,#0x18+var_10] 0D401392 1C 20 ADDS R0, R4, #0 0D401394 33 01 ADDS R3, #1 0D401396 93 02 STR R3, [SP,#0x18+var_10] 0D401398 F7 FF FE 9C BL sub_D4010D4 0D40139C 99 00 LDR R1, [SP,#0x18+var_18] 0D40139E 81 20 STRH R0, [R4,#8] 0D4013A0 1C 20 ADDS R0, R4, #0 0D4013A2 F7 FF FE 73 BL seeprom10 0D4013A6 loc_D4013A6 ; CODE XREF: sub_D401378+10j 0D4013A6 B0 04 ADD SP, SP, #0x10 0D4013A8 BC 10 POP {R4} 0D4013AA BC 02 POP {R1} 0D4013AC 47 08 BX R1 0D4013AC ; End of function sub_D401378 0D4013AC ; --------------------------------------------------------------------------- 0D4013AE 00 00 ALIGN 0x10 0D4013B0 ; =============== S U B R O U T I N E ======================================= 0D4013B0 sub_D4013B0 0D4013B0 var_18 = -0x18 0D4013B0 var_14 = -0x14 0D4013B0 var_10 = -0x10 0D4013B0 B5 10 PUSH {R4,LR} 0D4013B2 B0 84 SUB SP, SP, #0x10 0D4013B4 AC 01 ADD R4, SP, #0x18+var_14 0D4013B6 1C 20 ADDS R0, R4, #0 0D4013B8 46 69 MOV R1, SP 0D4013BA F7 FF FE A7 BL sub_D40110C 0D4013BE 28 00 CMP R0, #0 0D4013C0 D1 0D BNE loc_D4013DE 0D4013C2 78 63 LDRB R3, [R4,#1] 0D4013C4 33 01 ADDS R3, #1 0D4013C6 70 63 STRB R3, [R4,#1] 0D4013C8 9B 02 LDR R3, [SP,#0x18+var_10] 0D4013CA 1C 20 ADDS R0, R4, #0 0D4013CC 33 01 ADDS R3, #1 0D4013CE 93 02 STR R3, [SP,#0x18+var_10] 0D4013D0 F7 FF FE 80 BL sub_D4010D4 0D4013D4 99 00 LDR R1, [SP,#0x18+var_18] 0D4013D6 81 20 STRH R0, [R4,#8] 0D4013D8 1C 20 ADDS R0, R4, #0 0D4013DA F7 FF FE 57 BL seeprom10 0D4013DE loc_D4013DE ; CODE XREF: sub_D4013B0+10j 0D4013DE B0 04 ADD SP, SP, #0x10 0D4013E0 BC 10 POP {R4} 0D4013E2 BC 02 POP {R1} 0D4013E4 47 08 BX R1 0D4013E4 ; End of function sub_D4013B0 0D4013E4 ; --------------------------------------------------------------------------- 0D4013E6 00 00 ALIGN 4 0D4013E8 ; =============== S U B R O U T I N E ======================================= 0D4013E8 sub_D4013E8 0D4013E8 var_18 = -0x18 0D4013E8 var_14 = -0x14 0D4013E8 var_10 = -0x10 0D4013E8 B5 10 PUSH {R4,LR} 0D4013EA B0 84 SUB SP, SP, #0x10 0D4013EC AC 01 ADD R4, SP, #0x18+var_14 0D4013EE 1C 20 ADDS R0, R4, #0 0D4013F0 46 69 MOV R1, SP 0D4013F2 F7 FF FE 8B BL sub_D40110C 0D4013F6 28 00 CMP R0, #0 0D4013F8 D1 0D BNE loc_D401416 0D4013FA 78 A3 LDRB R3, [R4,#2] 0D4013FC 33 01 ADDS R3, #1 0D4013FE 70 A3 STRB R3, [R4,#2] 0D401400 9B 02 LDR R3, [SP,#0x18+var_10] 0D401402 1C 20 ADDS R0, R4, #0 0D401404 33 01 ADDS R3, #1 0D401406 93 02 STR R3, [SP,#0x18+var_10] 0D401408 F7 FF FE 64 BL sub_D4010D4 0D40140C 99 00 LDR R1, [SP,#0x18+var_18] 0D40140E 81 20 STRH R0, [R4,#8] 0D401410 1C 20 ADDS R0, R4, #0 0D401412 F7 FF FE 3B BL seeprom10 0D401416 loc_D401416 ; CODE XREF: sub_D4013E8+10j 0D401416 B0 04 ADD SP, SP, #0x10 0D401418 BC 10 POP {R4} 0D40141A BC 02 POP {R1} 0D40141C 47 08 BX R1 0D40141C ; End of function sub_D4013E8 0D40141C ; --------------------------------------------------------------------------- 0D40141E 00 00 ALIGN 0x10 0D401420 ; =============== S U B R O U T I N E ======================================= 0D401420 sub_D401420 0D401420 var_20 = -0x20 0D401420 var_1C = -0x1C 0D401420 B5 F0 PUSH {R4-R7,LR} 0D401422 B0 83 SUB SP, SP, #0xC 0D401424 AC 01 ADD R4, SP, #0x20+var_1C 0D401426 1C 20 ADDS R0, R4, #0 0D401428 46 69 MOV R1, SP 0D40142A F7 FF FE EF BL sub_D40120C 0D40142E 28 00 CMP R0, #0 0D401430 D1 0C BNE loc_D40144C 0D401432 9B 01 LDR R3, [SP,#0x20+var_1C] 0D401434 1C 20 ADDS R0, R4, #0 0D401436 33 01 ADDS R3, #1 0D401438 93 01 STR R3, [SP,#0x20+var_1C] 0D40143A F7 FF FE 59 BL sub_D4010F0 0D40143E 9A 00 LDR R2, [SP,#0x20+var_20] 0D401440 80 A0 STRH R0, [R4,#4] 0D401442 2A 02 CMP R2, #2 0D401444 D9 06 BLS loc_D401454 0D401446 25 04 MOVS R5, #4 0D401448 42 6D NEGS R5, R5 0D40144A loc_D40144A ; CODE XREF: sub_D401420+44j 0D40144A 1C 28 ADDS R0, R5, #0 0D40144C loc_D40144C ; CODE XREF: sub_D401420+10j 0D40144C ; sub_D401420+66j 0D40144C B0 03 ADD SP, SP, #0xC 0D40144E BC F0 POP {R4-R7} 0D401450 BC 02 POP {R1} 0D401452 47 08 BX R1 0D401454 ; --------------------------------------------------------------------------- 0D401454 loc_D401454 ; CODE XREF: sub_D401420+24j 0D401454 23 06 MOVS R3, #6 0D401456 43 53 MULS R3, R2 0D401458 1C 1F ADDS R7, R3, #0 0D40145A 37 5C ADDS R7, #0x5C 0D40145C 08 7F LSRS R7, R7, #1 0D40145E F7 FF FD F5 BL seeprom8 0D401462 1E 05 SUBS R5, R0, #0 0D401464 D1 F1 BNE loc_D40144A 0D401466 26 00 MOVS R6, #0 0D401468 loc_D401468 ; CODE XREF: sub_D401420+5Ej 0D401468 88 21 LDRH R1, [R4] 0D40146A 04 09 LSLS R1, R1, #0x10 0D40146C 19 B8 ADDS R0, R7, R6 0D40146E 0C 09 LSRS R1, R1, #0x10 0D401470 34 02 ADDS R4, #2 0D401472 F7 FF FD 9B BL seeprom4 0D401476 1E 05 SUBS R5, R0, #0 0D401478 D1 02 BNE loc_D401480 0D40147A 36 01 ADDS R6, #1 0D40147C 2E 02 CMP R6, #2 0D40147E D9 F3 BLS loc_D401468 0D401480 loc_D401480 ; CODE XREF: sub_D401420+58j 0D401480 F7 FF FD F4 BL seeprom9 0D401484 1C 28 ADDS R0, R5, #0 0D401486 E7 E1 B loc_D40144C 0D401486 ; End of function sub_D401420 0D401488 ; =============== S U B R O U T I N E ======================================= 0D401488 read_214 ; CODE XREF: boot1_main+1Ep 0D401488 ; call_init_dram+10p 0D401488 4B 04 LDR R3, =(dword_D8001C0+0x54) 0D40148A 68 1A LDR R2, [R3] 0D40148C 06 13 LSLS R3, R2, #0x18 0D40148E 0F 1B LSRS R3, R3, #0x1C 0D401490 60 03 STR R3, [R0] 0D401492 23 0F MOVS R3, #0xF 0D401494 40 1A ANDS R2, R3 0D401496 60 0A STR R2, [R1] 0D401498 47 70 BX LR 0D401498 ; --------------------------------------------------------------------------- 0D40149A 00 00 ALIGN 4 0D40149C 0D 80 02 14 off_D40149C DCD dword_D8001C0+0x54 ; DATA XREF: read_214r 0D40149C ; End of function read_214 0D4014A0 ; =============== S U B R O U T I N E ======================================= 0D4014A0 sub_D4014A0 ; CODE XREF: _ahbMemFlush+26p 0D4014A0 ; _ahbMemFlush+E0p 0D4014A0 ; _ahbMemFlush+ECp ... 0D4014A0 B5 30 PUSH {R4,R5,LR} 0D4014A2 49 0E LDR R1, =(dword_D8001C0+0x54) 0D4014A4 68 0B LDR R3, [R1] 0D4014A6 25 F0 MOVS R5, #0xF0 0D4014A8 24 00 MOVS R4, #0 0D4014AA 42 2B TST R3, R5 0D4014AC D1 0A BNE loc_D4014C4 0D4014AE 4A 0C LDR R2, =dword_D800130 0D4014B0 23 80 MOVS R3, #0x80 0D4014B2 68 14 LDR R4, [R2] 0D4014B4 00 DB LSLS R3, R3, #3 0D4014B6 43 23 ORRS R3, R4 0D4014B8 60 13 STR R3, [R2] 0D4014BA 4B 0A LDR R3, =dword_D800138 0D4014BC 68 1A LDR R2, [R3] 0D4014BE 68 1A LDR R2, [R3] 0D4014C0 68 1A LDR R2, [R3] 0D4014C2 68 1B LDR R3, [R3] 0D4014C4 loc_D4014C4 ; CODE XREF: sub_D4014A0+Cj 0D4014C4 4B 08 LDR R3, =0xD8B0000 0D4014C6 43 03 ORRS R3, R0 0D4014C8 68 18 LDR R0, [R3] 0D4014CA 68 0B LDR R3, [R1] 0D4014CC 68 0B LDR R3, [R1] 0D4014CE 42 2B TST R3, R5 0D4014D0 D1 01 BNE loc_D4014D6 0D4014D2 4B 03 LDR R3, =dword_D800130 0D4014D4 60 1C STR R4, [R3] 0D4014D6 loc_D4014D6 ; CODE XREF: sub_D4014A0+30j 0D4014D6 BC 30 POP {R4,R5} 0D4014D8 BC 02 POP {R1} 0D4014DA 47 08 BX R1 0D4014DA ; --------------------------------------------------------------------------- 0D4014DC 0D 80 02 14 off_D4014DC DCD dword_D8001C0+0x54 ; DATA XREF: sub_D4014A0+2r 0D4014E0 0D 80 01 30 off_D4014E0 DCD dword_D800130 ; DATA XREF: sub_D4014A0+Er 0D4014E0 ; sub_D4014A0+32r 0D4014E4 0D 80 01 38 off_D4014E4 DCD dword_D800138 ; DATA XREF: sub_D4014A0+1Ar 0D4014E8 0D 8B 00 00 dword_D4014E8 DCD 0xD8B0000 ; DATA XREF: sub_D4014A0:loc_D4014C4r 0D4014E8 ; End of function sub_D4014A0 0D4014EC ; =============== S U B R O U T I N E ======================================= 0D4014EC _ahbMemFlush ; CODE XREF: ahbMemFlush+Ap 0D4014EC ; sub_D4017E8+Ap 0D4014EC ; call_ahbMemFlush2+4p ... 0D4014EC B5 F0 PUSH {R4-R7,LR} 0D4014EE 46 5F MOV R7, R11 0D4014F0 46 56 MOV R6, R10 0D4014F2 46 4D MOV R5, R9 0D4014F4 46 44 MOV R4, R8 0D4014F6 B4 F0 PUSH {R4-R7} 0D4014F8 1C 04 ADDS R4, R0, #0 0D4014FA 28 0C CMP R0, #0xC 0D4014FC D1 00 BNE loc_D401500 0D4014FE E0 BF B loc_D401680 0D401500 ; --------------------------------------------------------------------------- 0D401500 loc_D401500 ; CODE XREF: _ahbMemFlush+10j 0D401500 28 0B CMP R0, #0xB 0D401502 D1 00 BNE loc_D401506 0D401504 E0 CE B loc_D4016A4 0D401506 ; --------------------------------------------------------------------------- 0D401506 loc_D401506 ; CODE XREF: _ahbMemFlush+16j 0D401506 28 00 CMP R0, #0 0D401508 D0 00 BEQ loc_D40150C 0D40150A E0 A4 B loc_D401656 0D40150C ; --------------------------------------------------------------------------- 0D40150C loc_D40150C ; CODE XREF: _ahbMemFlush+1Cj 0D40150C 27 80 02 3F MOVLS R7, 0x8000 0D401510 loc_D401510 ; CODE XREF: _ahbMemFlush+192j 0D401510 ; _ahbMemFlush+196j 0D401510 ; _ahbMemFlush+1BCj ... 0D401510 20 08 MOVS R0, #8 0D401512 F7 FF FF C5 BL sub_D4014A0 0D401516 42 38 TST R0, R7 0D401518 D0 00 BEQ loc_D40151C 0D40151A E0 94 B loc_D401646 0D40151C ; --------------------------------------------------------------------------- 0D40151C loc_D40151C ; CODE XREF: _ahbMemFlush+2Cj 0D40151C 1E A3 SUBS R3, R4, #2 0D40151E 2B 08 CMP R3, #8 0D401520 D9 00 BLS loc_D401524 0D401522 E0 AF B loc_D401684 0D401524 ; --------------------------------------------------------------------------- 0D401524 loc_D401524 ; CODE XREF: _ahbMemFlush+34j 0D401524 4C 70 LDR R4, =dword_D80018C 0D401526 68 23 LDR R3, [R4] 0D401528 22 0F MOVS R2, #0xF 0D40152A 40 13 ANDS R3, R2 0D40152C 2B 09 CMP R3, #9 0D40152E D1 00 BNE loc_D401532 0D401530 E0 BB B loc_D4016AA 0D401532 ; --------------------------------------------------------------------------- 0D401532 loc_D401532 ; CODE XREF: _ahbMemFlush+42j 0D401532 ; _ahbMemFlush+1D4j 0D401532 49 6E LDR R1, =dword_D800188 0D401534 4A 6E LDR R2, =0xFFFEFFFF 0D401536 68 0B LDR R3, [R1] 0D401538 40 13 ANDS R3, R2 0D40153A 60 0B STR R3, [R1] 0D40153C 23 80 MOVS R3, #0x80 0D40153E 68 0A LDR R2, [R1] 0D401540 04 9B LSLS R3, R3, #0x12 0D401542 43 1A ORRS R2, R3 0D401544 60 0A STR R2, [R1] 0D401546 39 64 SUBS R1, #0x64 0D401548 68 0A LDR R2, [R1] 0D40154A 4B 6A LDR R3, =0xFFFFF83F 0D40154C 40 1A ANDS R2, R3 0D40154E 23 A0 00 9B MOVLS R3, 0x280 0D401552 43 1A ORRS R2, R3 0D401554 60 0A STR R2, [R1] 0D401556 31 10 ADDS R1, #0x10 0D401558 68 0A LDR R2, [R1] 0D40155A 23 80 00 DB MOVLS R3, 0x400 0D40155E 43 1A ORRS R2, R3 0D401560 60 0A STR R2, [R1] 0D401562 31 58 ADDS R1, #0x58 0D401564 22 0F MOVS R2, #0xF 0D401566 loc_D401566 ; CODE XREF: _ahbMemFlush+80j 0D401566 68 0B LDR R3, [R1] 0D401568 40 13 ANDS R3, R2 0D40156A 2B 09 CMP R3, #9 0D40156C D1 FB BNE loc_D401566 0D40156E 49 62 LDR R1, =dword_D800100 0D401570 22 80 MOVS R2, #0x80 0D401572 68 0B LDR R3, [R1] 0D401574 00 D2 LSLS R2, R2, #3 0D401576 43 13 ORRS R3, R2 0D401578 60 0B STR R3, [R1] 0D40157A 31 04 ADDS R1, #4 0D40157C 68 0B LDR R3, [R1] 0D40157E 43 13 ORRS R3, R2 0D401580 60 0B STR R3, [R1] 0D401582 31 04 ADDS R1, #4 0D401584 68 0B LDR R3, [R1] 0D401586 43 13 ORRS R3, R2 0D401588 60 0B STR R3, [R1] 0D40158A 4B 5C LDR R3, =dword_D80010C 0D40158C 46 9B MOV R11, R3 0D40158E 68 1B LDR R3, [R3] 0D401590 46 59 MOV R1, R11 0D401592 43 13 ORRS R3, R2 0D401594 60 0B STR R3, [R1] 0D401596 4B 5A LDR R3, =dword_D800110 0D401598 46 99 MOV R9, R3 0D40159A 68 1B LDR R3, [R3] 0D40159C 46 49 MOV R1, R9 0D40159E 43 13 ORRS R3, R2 0D4015A0 60 0B STR R3, [R1] 0D4015A2 4B 58 LDR R3, =dword_D800114 0D4015A4 46 9A MOV R10, R3 0D4015A6 68 1B LDR R3, [R3] 0D4015A8 46 51 MOV R1, R10 0D4015AA 43 13 ORRS R3, R2 0D4015AC 60 0B STR R3, [R1] 0D4015AE 4B 56 LDR R3, =dword_D800118 0D4015B0 46 98 MOV R8, R3 0D4015B2 68 1B LDR R3, [R3] 0D4015B4 46 41 MOV R1, R8 0D4015B6 43 13 ORRS R3, R2 0D4015B8 60 0B STR R3, [R1] 0D4015BA 4E 54 LDR R6, =dword_D80011C 0D4015BC 68 33 LDR R3, [R6] 0D4015BE 43 13 ORRS R3, R2 0D4015C0 4D 53 LDR R5, =dword_D800120 0D4015C2 60 33 STR R3, [R6] 0D4015C4 68 2B LDR R3, [R5] 0D4015C6 43 13 ORRS R3, R2 0D4015C8 60 2B STR R3, [R5] 0D4015CA 20 08 MOVS R0, #8 0D4015CC F7 FF FF 68 BL sub_D4014A0 0D4015D0 4C 50 LDR R4, =0xD8B0008 0D4015D2 43 B8 BICS R0, R7 0D4015D4 60 20 STR R0, [R4] 0D4015D6 20 08 MOVS R0, #8 0D4015D8 F7 FF FF 62 BL sub_D4014A0 0D4015DC 43 07 ORRS R7, R0 0D4015DE 60 27 STR R7, [R4] 0D4015E0 49 4D LDR R1, =dword_D800134 0D4015E2 4A 4E LDR R2, =0xFFFFFBFF 0D4015E4 68 0B LDR R3, [R1] 0D4015E6 40 13 ANDS R3, R2 0D4015E8 60 0B STR R3, [R1] 0D4015EA 39 34 SUBS R1, #0x34 0D4015EC 68 0B LDR R3, [R1] 0D4015EE 40 13 ANDS R3, R2 0D4015F0 60 0B STR R3, [R1] 0D4015F2 31 04 ADDS R1, #4 0D4015F4 68 0B LDR R3, [R1] 0D4015F6 40 13 ANDS R3, R2 0D4015F8 60 0B STR R3, [R1] 0D4015FA 31 04 ADDS R1, #4 0D4015FC 68 0B LDR R3, [R1] 0D4015FE 40 13 ANDS R3, R2 0D401600 60 0B STR R3, [R1] 0D401602 46 59 MOV R1, R11 0D401604 68 0B LDR R3, [R1] 0D401606 40 13 ANDS R3, R2 0D401608 60 0B STR R3, [R1] 0D40160A 46 49 MOV R1, R9 0D40160C 68 0B LDR R3, [R1] 0D40160E 40 13 ANDS R3, R2 0D401610 60 0B STR R3, [R1] 0D401612 46 51 MOV R1, R10 0D401614 68 0B LDR R3, [R1] 0D401616 40 13 ANDS R3, R2 0D401618 60 0B STR R3, [R1] 0D40161A 46 41 MOV R1, R8 0D40161C 68 0B LDR R3, [R1] 0D40161E 40 13 ANDS R3, R2 0D401620 60 0B STR R3, [R1] 0D401622 68 33 LDR R3, [R6] 0D401624 40 13 ANDS R3, R2 0D401626 60 33 STR R3, [R6] 0D401628 68 2B LDR R3, [R5] 0D40162A 40 13 ANDS R3, R2 0D40162C 60 2B STR R3, [R5] 0D40162E 31 70 ADDS R1, #0x70 0D401630 68 0B LDR R3, [R1] 0D401632 4A 3B LDR R2, =0xFDFFFFFF 0D401634 40 13 ANDS R3, R2 0D401636 60 0B STR R3, [R1] 0D401638 39 64 SUBS R1, #0x64 0D40163A 68 0B LDR R3, [R1] 0D40163C 4A 2D LDR R2, =0xFFFFF83F 0D40163E 40 13 ANDS R3, R2 0D401640 22 C0 MOVS R2, #0xC0 0D401642 43 13 ORRS R3, R2 0D401644 60 0B STR R3, [R1] 0D401646 loc_D401646 ; CODE XREF: _ahbMemFlush+2Ej 0D401646 ; _ahbMemFlush+1A2j 0D401646 ; _ahbMemFlush+1B6j 0D401646 BC 78 POP {R3-R6} 0D401648 46 98 MOV R8, R3 0D40164A 46 A1 MOV R9, R4 0D40164C 46 AA MOV R10, R5 0D40164E 46 B3 MOV R11, R6 0D401650 BC F0 POP {R4-R7} 0D401652 BC 01 POP {R0} 0D401654 47 00 BX R0 0D401656 ; --------------------------------------------------------------------------- 0D401656 loc_D401656 ; CODE XREF: _ahbMemFlush+1Ej 0D401656 28 01 CMP R0, #1 0D401658 D0 33 BEQ loc_D4016C2 0D40165A 28 02 CMP R0, #2 0D40165C D0 34 BEQ loc_D4016C8 0D40165E 28 03 CMP R0, #3 0D401660 D0 36 BEQ loc_D4016D0 0D401662 28 04 CMP R0, #4 0D401664 D0 36 BEQ loc_D4016D4 0D401666 28 05 CMP R0, #5 0D401668 D0 30 BEQ loc_D4016CC 0D40166A 28 06 CMP R0, #6 0D40166C D0 34 BEQ loc_D4016D8 0D40166E 28 07 CMP R0, #7 0D401670 D0 34 BEQ loc_D4016DC 0D401672 28 08 CMP R0, #8 0D401674 D0 34 BEQ loc_D4016E0 0D401676 28 09 CMP R0, #9 0D401678 D0 34 BEQ loc_D4016E4 0D40167A 27 80 00 7F MOVLS R7, 0x100 0D40167E E7 47 B loc_D401510 0D401680 ; --------------------------------------------------------------------------- 0D401680 loc_D401680 ; CODE XREF: _ahbMemFlush+12j 0D401680 27 00 MOVS R7, #0 0D401682 E7 45 B loc_D401510 0D401684 ; --------------------------------------------------------------------------- 0D401684 loc_D401684 ; CODE XREF: _ahbMemFlush+36j 0D401684 2C 0B CMP R4, #0xB 0D401686 D0 03 BEQ loc_D401690 0D401688 2C 00 CMP R4, #0 0D40168A D0 01 BEQ loc_D401690 0D40168C 2C 01 CMP R4, #1 0D40168E D1 DA BNE loc_D401646 0D401690 loc_D401690 ; CODE XREF: _ahbMemFlush+19Aj 0D401690 ; _ahbMemFlush+19Ej 0D401690 4A 20 LDR R2, =0xD8B0008 0D401692 1C 03 ADDS R3, R0, #0 0D401694 43 BB BICS R3, R7 0D401696 60 13 STR R3, [R2] 0D401698 1C 03 ADDS R3, R0, #0 0D40169A 43 3B ORRS R3, R7 0D40169C 60 13 STR R3, [R2] 0D40169E 60 13 STR R3, [R2] 0D4016A0 60 13 STR R3, [R2] 0D4016A2 E7 D0 B loc_D401646 0D4016A4 ; --------------------------------------------------------------------------- 0D4016A4 loc_D4016A4 ; CODE XREF: _ahbMemFlush+18j 0D4016A4 27 80 01 7F MOVLS R7, 0x1000 0D4016A8 E7 32 B loc_D401510 0D4016AA ; --------------------------------------------------------------------------- 0D4016AA loc_D4016AA ; CODE XREF: _ahbMemFlush+44j 0D4016AA 22 80 MOVS R2, #0x80 0D4016AC 49 0F LDR R1, =dword_D800188 0D4016AE 02 52 LSLS R2, R2, #9 0D4016B0 20 0F MOVS R0, #0xF 0D4016B2 loc_D4016B2 ; CODE XREF: _ahbMemFlush+1D2j 0D4016B2 68 0B LDR R3, [R1] 0D4016B4 43 13 ORRS R3, R2 0D4016B6 60 0B STR R3, [R1] 0D4016B8 68 23 LDR R3, [R4] 0D4016BA 40 03 ANDS R3, R0 0D4016BC 2B 09 CMP R3, #9 0D4016BE D0 F8 BEQ loc_D4016B2 0D4016C0 E7 37 B loc_D401532 0D4016C2 ; --------------------------------------------------------------------------- 0D4016C2 loc_D4016C2 ; CODE XREF: _ahbMemFlush+16Cj 0D4016C2 27 80 01 FF MOVLS R7, 0x4000 0D4016C6 E7 23 B loc_D401510 0D4016C8 ; --------------------------------------------------------------------------- 0D4016C8 loc_D4016C8 ; CODE XREF: _ahbMemFlush+170j 0D4016C8 27 01 MOVS R7, #1 0D4016CA E7 21 B loc_D401510 0D4016CC ; --------------------------------------------------------------------------- 0D4016CC loc_D4016CC ; CODE XREF: _ahbMemFlush+17Cj 0D4016CC 27 08 MOVS R7, #8 0D4016CE E7 1F B loc_D401510 0D4016D0 ; --------------------------------------------------------------------------- 0D4016D0 loc_D4016D0 ; CODE XREF: _ahbMemFlush+174j 0D4016D0 27 02 MOVS R7, #2 0D4016D2 E7 1D B loc_D401510 0D4016D4 ; --------------------------------------------------------------------------- 0D4016D4 loc_D4016D4 ; CODE XREF: _ahbMemFlush+178j 0D4016D4 27 04 MOVS R7, #4 0D4016D6 E7 1B B loc_D401510 0D4016D8 ; --------------------------------------------------------------------------- 0D4016D8 loc_D4016D8 ; CODE XREF: _ahbMemFlush+180j 0D4016D8 27 10 MOVS R7, #0x10 0D4016DA E7 19 B loc_D401510 0D4016DC ; --------------------------------------------------------------------------- 0D4016DC loc_D4016DC ; CODE XREF: _ahbMemFlush+184j 0D4016DC 27 20 MOVS R7, #0x20 0D4016DE E7 17 B loc_D401510 0D4016E0 ; --------------------------------------------------------------------------- 0D4016E0 loc_D4016E0 ; CODE XREF: _ahbMemFlush+188j 0D4016E0 27 40 MOVS R7, #0x40 0D4016E2 E7 15 B loc_D401510 0D4016E4 ; --------------------------------------------------------------------------- 0D4016E4 loc_D4016E4 ; CODE XREF: _ahbMemFlush+18Cj 0D4016E4 27 80 MOVS R7, #0x80 0D4016E6 E7 13 B loc_D401510 0D4016E6 ; --------------------------------------------------------------------------- 0D4016E8 0D 80 01 8C off_D4016E8 DCD dword_D80018C ; DATA XREF: _ahbMemFlush:loc_D401524r 0D4016EC 0D 80 01 88 off_D4016EC DCD dword_D800188 ; DATA XREF: _ahbMemFlush:loc_D401532r 0D4016EC ; _ahbMemFlush+1C0r 0D4016F0 FF FE FF FF dword_D4016F0 DCD 0xFFFEFFFF ; DATA XREF: _ahbMemFlush+48r 0D4016F4 FF FF F8 3F dword_D4016F4 DCD 0xFFFFF83F ; DATA XREF: _ahbMemFlush+5Er 0D4016F4 ; _ahbMemFlush+150r 0D4016F8 0D 80 01 00 off_D4016F8 DCD dword_D800100 ; DATA XREF: _ahbMemFlush+82r 0D4016FC 0D 80 01 0C off_D4016FC DCD dword_D80010C ; DATA XREF: _ahbMemFlush+9Er 0D401700 0D 80 01 10 off_D401700 DCD dword_D800110 ; DATA XREF: _ahbMemFlush+AAr 0D401704 0D 80 01 14 off_D401704 DCD dword_D800114 ; DATA XREF: _ahbMemFlush+B6r 0D401708 0D 80 01 18 off_D401708 DCD dword_D800118 ; DATA XREF: _ahbMemFlush+C2r 0D40170C 0D 80 01 1C off_D40170C DCD dword_D80011C ; DATA XREF: _ahbMemFlush+CEr 0D401710 0D 80 01 20 off_D401710 DCD dword_D800120 ; DATA XREF: _ahbMemFlush+D4r 0D401714 0D 8B 00 08 dword_D401714 DCD 0xD8B0008 ; DATA XREF: _ahbMemFlush+E4r 0D401714 ; _ahbMemFlush:loc_D401690r 0D401718 0D 80 01 34 off_D401718 DCD dword_D800134 ; DATA XREF: _ahbMemFlush+F4r 0D40171C FF FF FB FF dword_D40171C DCD 0xFFFFFBFF ; DATA XREF: _ahbMemFlush+F6r 0D401720 FD FF FF FF dword_D401720 DCD 0xFDFFFFFF ; DATA XREF: _ahbMemFlush+146r 0D401720 ; End of function _ahbMemFlush 0D401724 ; =============== S U B R O U T I N E ======================================= 0D401724 ahbMemFlush ; CODE XREF: call_ahbMemFlush+20p 0D401724 B5 10 PUSH {R4,LR} 0D401726 4B 06 LDR R3, =0xD8B4000 0D401728 43 03 ORRS R3, R0 0D40172A 20 00 MOVS R0, #0 0D40172C 88 1C LDRH R4, [R3] 0D40172E F7 FF FE DD BL _ahbMemFlush 0D401732 04 24 LSLS R4, R4, #0x10 0D401734 0C 24 LSRS R4, R4, #0x10 0D401736 1C 20 ADDS R0, R4, #0 0D401738 BC 10 POP {R4} 0D40173A BC 02 POP {R1} 0D40173C 47 08 BX R1 0D40173C ; --------------------------------------------------------------------------- 0D40173E 00 00 ALIGN 0x10 0D401740 0D 8B 40 00 dword_D401740 DCD 0xD8B4000 ; DATA XREF: ahbMemFlush+2r 0D401740 ; End of function ahbMemFlush 0D401744 ; =============== S U B R O U T I N E ======================================= 0D401744 call_ahbMemFlush ; CODE XREF: sha1+3Ap 0D401744 ; sha1+ECp boot1_main+8Cp ... 0D401744 B5 70 PUSH {R4-R6,LR} 0D401746 25 00 MOVS R5, #0 0D401748 28 0C CMP R0, #0xC ; switch 13 cases 0D40174A D8 03 BHI loc_D401754 0D40174C 4A 20 LDR R2, =jpt_D403FC8 0D40174E 00 83 LSLS R3, R0, #2 0D401750 58 9B LDR R3, [R3,R2] 0D401752 46 9F MOV PC, R3 ; switch jump 0D401754 ; --------------------------------------------------------------------------- 0D401754 loc_D401754 ; CODE XREF: call_ahbMemFlush+6j 0D401754 38 0D SUBS R0, #0xD 0D401756 28 04 CMP R0, #4 0D401758 D9 1B BLS loc_D401792 0D40175A loc_D40175A ; CODE XREF: call_ahbMemFlush+58j 0D40175A ; call_ahbMemFlush+5Cj 0D40175A ; call_ahbMemFlush+60j ... 0D40175A 4B 1E LDR R3, =0xD8B4228 0D40175C 80 1D STRH R5, [R3] 0D40175E 26 00 MOVS R6, #0 0D401760 24 00 MOVS R4, #0 0D401762 loc_D401762 ; CODE XREF: call_ahbMemFlush+3Aj 0D401762 48 1D LDR R0, =0x22A 0D401764 F7 FF FF DE BL ahbMemFlush 0D401768 1C 2B ADDS R3, R5, #0 0D40176A 40 43 EORS R3, R0 0D40176C 04 1B LSLS R3, R3, #0x10 0D40176E 2B 00 CMP R3, #0 0D401770 D0 23 BEQ ahbmemflush_didack 0D401772 20 01 MOVS R0, #1 0D401774 F0 00 FE B2 BL delay_0 0D401778 4B 18 LDR R3, =999999 0D40177A 34 01 ADDS R4, #1 0D40177C 42 9C CMP R4, R3 0D40177E D9 F0 BLS loc_D401762 0D401780 4B 14 LDR R3, =0xD8B4228 0D401782 22 00 MOVS R2, #0 0D401784 80 1A STRH R2, [R3] 0D401786 2E 00 CMP R6, #0 0D401788 D0 1D BEQ ahbmemflush_didnotack 0D40178A loc_D40178A ; CODE XREF: call_ahbMemFlush+80j 0D40178A ; call_ahbMemFlush+8Aj 0D40178A BC 70 POP {R4-R6} 0D40178C BC 01 POP {R0} 0D40178E 47 00 BX R0 0D401790 ; --------------------------------------------------------------------------- 0D401790 loc_D401790 ; DATA XREF: boot1:0D403FF4o 0D401790 20 00 MOVS R0, #0 0D401792 loc_D401792 ; CODE XREF: call_ahbMemFlush+14j 0D401792 ; call_ahbMemFlush+6Cj 0D401792 ; call_ahbMemFlush+70j ... 0D401792 4A 13 LDR R2, =jpt_D403FFC 0D401794 00 83 LSLS R3, R0, #2 0D401796 58 9B LDR R3, [R3,R2] 0D401798 46 9F MOV PC, R3 ; switch 0 cases 0D40179A ; --------------------------------------------------------------------------- 0D40179A loc_D40179A ; DATA XREF: boot1:0D40400Co 0D40179A 25 0F MOVS R5, #0xF 0D40179C E7 DD B loc_D40175A 0D40179E ; --------------------------------------------------------------------------- 0D40179E loc_D40179E ; DATA XREF: boot1:jpt_D403FFCo 0D40179E 25 08 MOVS R5, #8 0D4017A0 E7 DB B loc_D40175A 0D4017A2 ; --------------------------------------------------------------------------- 0D4017A2 loc_D4017A2 ; DATA XREF: boot1:jpt_D403FFCo 0D4017A2 25 04 MOVS R5, #4 0D4017A4 E7 D9 B loc_D40175A 0D4017A6 ; --------------------------------------------------------------------------- 0D4017A6 loc_D4017A6 ; DATA XREF: boot1:jpt_D403FFCo 0D4017A6 25 02 MOVS R5, #2 0D4017A8 E7 D7 B loc_D40175A 0D4017AA ; --------------------------------------------------------------------------- 0D4017AA loc_D4017AA ; DATA XREF: boot1:jpt_D403FFCo 0D4017AA 25 01 MOVS R5, #1 0D4017AC E7 D5 B loc_D40175A 0D4017AE ; --------------------------------------------------------------------------- 0D4017AE 20 02 MOVS R0, #2 0D4017B0 E7 EF B loc_D401792 0D4017B2 ; --------------------------------------------------------------------------- 0D4017B2 loc_D4017B2 ; DATA XREF: boot1:0D403FE4o 0D4017B2 ; boot1:0D403FE8o 0D4017B2 ; boot1:0D403FECo ... 0D4017B2 20 03 MOVS R0, #3 0D4017B4 E7 ED B loc_D401792 0D4017B6 ; --------------------------------------------------------------------------- 0D4017B6 loc_D4017B6 ; DATA XREF: boot1:0D403FF8o 0D4017B6 20 01 MOVS R0, #1 0D4017B8 E7 EB B loc_D401792 0D4017BA ; --------------------------------------------------------------------------- 0D4017BA ahbmemflush_didack ; CODE XREF: call_ahbMemFlush+2Cj 0D4017BA 4B 06 LDR R3, =0xD8B4228 0D4017BC 22 00 MOVS R2, #0 0D4017BE 26 01 MOVS R6, #1 0D4017C0 80 1A STRH R2, [R3] 0D4017C2 2E 00 CMP R6, #0 0D4017C4 D1 E1 BNE loc_D40178A 0D4017C6 ahbmemflush_didnotack ; CODE XREF: call_ahbMemFlush+44j 0D4017C6 1C 29 ADDS R1, R5, #0 0D4017C8 48 06 LDR R0, =a_ERRORahbMemFlush0xxdidnotack 0D4017CA F0 01 FE AB BL do_debug_log 0D4017CE E7 DC B loc_D40178A 0D4017CE ; --------------------------------------------------------------------------- 0D4017D0 0D 40 3F C8 off_D4017D0 DCD jpt_D403FC8 ; DATA XREF: call_ahbMemFlush+8r 0D4017D4 0D 8B 42 28 dword_D4017D4 DCD 0xD8B4228 ; DATA XREF: call_ahbMemFlush:loc_D40175Ar 0D4017D4 ; call_ahbMemFlush+3Cr 0D4017D4 ; call_ahbMemFlush:ahbmemflush_didackr 0D4017D8 00 00 02 2A off_D4017D8 DCD 0x22A ; DATA XREF: call_ahbMemFlush:loc_D401762r 0D4017DC 00 0F 42 3F dword_D4017DC DCD 999999 ; DATA XREF: call_ahbMemFlush+34r 0D4017E0 0D 40 3F FC off_D4017E0 DCD jpt_D403FFC ; DATA XREF: call_ahbMemFlush:loc_D401792r 0D4017E4 0D 40 40 AC off_D4017E4 DCD a_ERRORahbMemFlush0xxdidnotack 0D4017E4 ; DATA XREF: call_ahbMemFlush+84r 0D4017E4 ; End of function call_ahbMemFlush ; "ERROR: ahbMemFlush(0x%x) did not ack!\n" 0D4017E8 ; =============== S U B R O U T I N E ======================================= 0D4017E8 sub_D4017E8 0D4017E8 B5 10 PUSH {R4,LR} 0D4017EA F7 FF FE 59 BL sub_D4014A0 0D4017EE 1C 04 ADDS R4, R0, #0 0D4017F0 20 00 MOVS R0, #0 0D4017F2 F7 FF FE 7B BL _ahbMemFlush 0D4017F6 1C 20 ADDS R0, R4, #0 0D4017F8 BC 10 POP {R4} 0D4017FA BC 02 POP {R1} 0D4017FC 47 08 BX R1 0D4017FC ; End of function sub_D4017E8 0D4017FC ; --------------------------------------------------------------------------- 0D4017FE 00 00 ALIGN 0x10 0D401800 ; =============== S U B R O U T I N E ======================================= 0D401800 call_ahbMemFlush2 ; CODE XREF: sha1+40p 0D401800 ; sha1+F2p boot1_main+92p ... 0D401800 B5 10 PUSH {R4,LR} 0D401802 1C 04 ADDS R4, R0, #0 0D401804 F7 FF FE 72 BL _ahbMemFlush 0D401808 2C 00 CMP R4, #0 0D40180A D1 02 BNE loc_D401812 0D40180C loc_D40180C ; CODE XREF: call_ahbMemFlush2+18j 0D40180C BC 10 POP {R4} 0D40180E BC 01 POP {R0} 0D401810 47 00 BX R0 0D401812 ; --------------------------------------------------------------------------- 0D401812 loc_D401812 ; CODE XREF: call_ahbMemFlush2+Aj 0D401812 20 00 MOVS R0, #0 0D401814 F7 FF FE 6A BL _ahbMemFlush 0D401818 E7 F8 B loc_D40180C 0D401818 ; End of function call_ahbMemFlush2 0D401818 ; --------------------------------------------------------------------------- 0D40181A 46 C0 ALIGN 4 0D40181C ; =============== S U B R O U T I N E ======================================= 0D40181C poke_f4 ; CODE XREF: gpio_stuff+38p 0D40181C 4A 02 LDR R2, =dword_D8000F4 0D40181E 68 13 LDR R3, [R2] 0D401820 43 03 ORRS R3, R0 0D401822 60 13 STR R3, [R2] 0D401824 47 70 BX LR 0D401824 ; --------------------------------------------------------------------------- 0D401826 00 00 ALIGN 4 0D401828 0D 80 00 F4 off_D401828 DCD dword_D8000F4 ; DATA XREF: poke_f4r 0D401828 ; End of function poke_f4 0D40182C ; =============== S U B R O U T I N E ======================================= 0D40182C poke_ec ; CODE XREF: gpio_stuff+3Ep 0D40182C 4A 02 LDR R2, =dword_D8000EC 0D40182E 68 13 LDR R3, [R2] 0D401830 43 03 ORRS R3, R0 0D401832 60 13 STR R3, [R2] 0D401834 47 70 BX LR 0D401834 ; --------------------------------------------------------------------------- 0D401836 00 00 ALIGN 4 0D401838 0D 80 00 EC off_D401838 DCD dword_D8000EC ; DATA XREF: poke_ecr 0D401838 ; End of function poke_ec 0D40183C ; =============== S U B R O U T I N E ======================================= 0D40183C poke_fc ; CODE XREF: gpio_stuff+6p 0D40183C ; sub_D4018FC+Ep 0D40183C 4B 01 LDR R3, =dword_D8000FC 0D40183E 60 18 STR R0, [R3] 0D401840 47 70 BX LR 0D401840 ; --------------------------------------------------------------------------- 0D401842 00 00 ALIGN 4 0D401844 0D 80 00 FC off_D401844 DCD dword_D8000FC ; DATA XREF: poke_fcr 0D401844 ; End of function poke_fc 0D401848 ; =============== S U B R O U T I N E ======================================= 0D401848 set_gpio2_bits ; CODE XREF: gpio_stuff+Ep 0D401848 ; sub_D4018E8+Ap 0D401848 ; sub_D4018FC+8p 0D401848 4A 02 LDR R2, =starlet_gpio2_data 0D40184A 68 13 LDR R3, [R2] 0D40184C 43 83 BICS R3, R0 0D40184E 43 0B ORRS R3, R1 0D401850 60 13 STR R3, [R2] 0D401852 47 70 BX LR 0D401852 ; --------------------------------------------------------------------------- 0D401854 0D 80 00 E0 off_D401854 DCD starlet_gpio2_data ; DATA XREF: set_gpio2_bitsr 0D401854 ; End of function set_gpio2_bits 0D401858 ; =============== S U B R O U T I N E ======================================= 0D401858 set_gpio2_dir ; CODE XREF: gpio_stuff+16p 0D401858 ; sub_D4018FC+14p 0D401858 4B 01 LDR R3, =starlet_gpio2_dir 0D40185A 60 18 STR R0, [R3] 0D40185C 47 70 BX LR 0D40185C ; --------------------------------------------------------------------------- 0D40185E 00 00 ALIGN 0x10 0D401860 0D 80 00 E4 off_D401860 DCD starlet_gpio2_dir ; DATA XREF: set_gpio2_dirr 0D401860 ; End of function set_gpio2_dir 0D401864 ; =============== S U B R O U T I N E ======================================= 0D401864 set_gpio1_bits ; CODE XREF: gpio_stuff+1Ep 0D401864 4A 02 LDR R2, =starlet_gpio1_data 0D401866 68 13 LDR R3, [R2] 0D401868 43 83 BICS R3, R0 0D40186A 43 0B ORRS R3, R1 0D40186C 60 13 STR R3, [R2] 0D40186E 47 70 BX LR 0D40186E ; --------------------------------------------------------------------------- 0D401870 0D 80 00 C0 off_D401870 DCD starlet_gpio1_data ; DATA XREF: set_gpio1_bitsr 0D401870 ; End of function set_gpio1_bits 0D401874 ; =============== S U B R O U T I N E ======================================= 0D401874 set_gpio1_dir ; CODE XREF: gpio_stuff+24p 0D401874 4B 01 LDR R3, =starlet_gpio1_dir 0D401876 60 18 STR R0, [R3] 0D401878 47 70 BX LR 0D401878 ; --------------------------------------------------------------------------- 0D40187A 00 00 ALIGN 4 0D40187C 0D 80 00 C4 off_D40187C DCD starlet_gpio1_dir ; DATA XREF: set_gpio1_dirr 0D40187C ; End of function set_gpio1_dir 0D401880 ; =============== S U B R O U T I N E ======================================= 0D401880 poke_dc ; CODE XREF: gpio_stuff+2Ap 0D401880 4B 01 LDR R3, =dword_D8000DC 0D401882 60 18 STR R0, [R3] 0D401884 47 70 BX LR 0D401884 ; --------------------------------------------------------------------------- 0D401886 00 00 ALIGN 4 0D401888 0D 80 00 DC off_D401888 DCD dword_D8000DC ; DATA XREF: poke_dcr 0D401888 ; End of function poke_dc 0D40188C ; =============== S U B R O U T I N E ======================================= 0D40188C gpio_stuff ; CODE XREF: init_gpios+2p 0D40188C B5 10 PUSH {R4,LR} 0D40188E 4C 11 LDR R4, =0xFF1C1E 0D401890 48 11 LDR R0, =0xC3A0 0D401892 F7 FF FF D3 BL poke_fc 0D401896 1C 20 ADDS R0, R4, #0 0D401898 21 0C MOVS R1, #0xC 0D40189A F7 FF FF D5 BL set_gpio2_bits 0D40189E 1C 20 ADDS R0, R4, #0 0D4018A0 4C 0E LDR R4, =0xC320 0D4018A2 F7 FF FF D9 BL set_gpio2_dir 0D4018A6 21 00 MOVS R1, #0 0D4018A8 1C 20 ADDS R0, R4, #0 0D4018AA F7 FF FF DB BL set_gpio1_bits 0D4018AE 1C 20 ADDS R0, R4, #0 0D4018B0 F7 FF FF E0 BL set_gpio1_dir 0D4018B4 48 0A LDR R0, =0xFFFFFF 0D4018B6 F7 FF FF E3 BL poke_dc 0D4018BA 20 FA 00 C0 MOVLS R0, 2000 0D4018BE F0 00 FE 0D BL delay_0 0D4018C2 20 01 MOVS R0, #1 0D4018C4 F7 FF FF AA BL poke_f4 0D4018C8 20 01 MOVS R0, #1 0D4018CA F7 FF FF AF BL poke_ec 0D4018CE BC 10 POP {R4} 0D4018D0 BC 01 POP {R0} 0D4018D2 47 00 BX R0 0D4018D2 ; --------------------------------------------------------------------------- 0D4018D4 00 FF 1C 1E dword_D4018D4 DCD 0xFF1C1E ; DATA XREF: gpio_stuff+2r 0D4018D8 00 00 C3 A0 off_D4018D8 DCD 0xC3A0 ; DATA XREF: gpio_stuff+4r 0D4018DC 00 00 C3 20 off_D4018DC DCD 0xC320 ; DATA XREF: gpio_stuff+14r 0D4018E0 00 FF FF FF dword_D4018E0 DCD 0xFFFFFF ; DATA XREF: gpio_stuff+28r 0D4018E0 ; End of function gpio_stuff 0D4018E4 ; =============== S U B R O U T I N E ======================================= 0D4018E4 sub_D4018E4 0D4018E4 20 00 MOVS R0, #0 0D4018E6 47 70 BX LR 0D4018E6 ; End of function sub_D4018E4 0D4018E8 ; =============== S U B R O U T I N E ======================================= 0D4018E8 sub_D4018E8 0D4018E8 B5 00 PUSH {LR} 0D4018EA 06 01 LSLS R1, R0, #0x18 0D4018EC 20 FF 04 00 MOVLS R0, 0xFF0000 0D4018F0 0A 09 LSRS R1, R1, #8 0D4018F2 F7 FF FF A9 BL set_gpio2_bits 0D4018F6 BC 01 POP {R0} 0D4018F8 47 00 BX R0 0D4018F8 ; End of function sub_D4018E8 0D4018F8 ; --------------------------------------------------------------------------- 0D4018FA 00 00 ALIGN 4 0D4018FC ; =============== S U B R O U T I N E ======================================= 0D4018FC sub_D4018FC 0D4018FC B5 00 PUSH {LR} 0D4018FE 4B 06 LDR R3, =starlet_gpio1_data 0D401900 48 06 LDR R0, =0xC120 0D401902 68 19 LDR R1, [R3] 0D401904 F7 FF FF A0 BL set_gpio2_bits 0D401908 20 00 MOVS R0, #0 0D40190A F7 FF FF 97 BL poke_fc 0D40190E 48 04 LDR R0, =0xFFDF3E 0D401910 F7 FF FF A2 BL set_gpio2_dir 0D401914 BC 01 POP {R0} 0D401916 47 00 BX R0 0D401916 ; --------------------------------------------------------------------------- 0D401918 0D 80 00 C0 off_D401918 DCD starlet_gpio1_data ; DATA XREF: sub_D4018FC+2r 0D40191C 00 00 C1 20 off_D40191C DCD 0xC120 ; DATA XREF: sub_D4018FC+4r 0D401920 00 FF DF 3E dword_D401920 DCD 0xFFDF3E ; DATA XREF: sub_D4018FC+12r 0D401920 ; End of function sub_D4018FC 0D401924 ; =============== S U B R O U T I N E ======================================= 0D401924 init_dram ; CODE XREF: call_init_dram+2Cp 0D401924 var_30 = -0x30 0D401924 var_2C = -0x2C 0D401924 var_28 = -0x28 0D401924 arg_0 = 0 0D401924 B5 F0 PUSH {R4-R7,LR} 0D401926 46 5F MOV R7, R11 0D401928 46 56 MOV R6, R10 0D40192A 46 4D MOV R5, R9 0D40192C 46 44 MOV R4, R8 0D40192E B4 F0 PUSH {R4-R7} 0D401930 06 1B LSLS R3, R3, #0x18 0D401932 B0 83 SUB SP, SP, #0xC 0D401934 0E 1B LSRS R3, R3, #0x18 0D401936 93 01 STR R3, [SP,#0x30+var_2C] 0D401938 4F 2C LDR R7, =dword_D800194 0D40193A 9B 0C LDR R3, [SP,#0x30+arg_0] 0D40193C 90 02 STR R0, [SP,#0x30+var_28] 0D40193E 04 09 LSLS R1, R1, #0x10 0D401940 06 1B LSLS R3, R3, #0x18 0D401942 20 80 MOVS R0, #0x80 0D401944 68 3E LDR R6, [R7] 0D401946 0C 09 LSRS R1, R1, #0x10 0D401948 0E 1B LSRS R3, R3, #0x18 0D40194A 01 02 LSLS R2, R0, #4 0D40194C 46 8A MOV R10, R1 0D40194E 93 00 STR R3, [SP,#0x30+var_30] 0D401950 46 90 MOV R8, R2 0D401952 42 16 TST R6, R2 0D401954 D0 01 BEQ loc_D40195A 0D401956 F0 00 FC 57 BL sub_D402208 0D40195A ; --------------------------------------------------------------------------- 0D40195A loc_D40195A ; CODE XREF: init_dram+30j 0D40195A ; sub_D402208+1Ej 0D40195A 68 3E LDR R6, [R7] 0D40195C 4D 24 LDR R5, =0xFFFFF7FF 0D40195E 40 2E ANDS R6, R5 0D401960 60 3E STR R6, [R7] 0D401962 20 64 MOVS R0, #0x64 0D401964 F0 00 FD BA BL delay_0 0D401968 4A 22 LDR R2, =dword_D800180 0D40196A 68 16 LDR R6, [R2] 0D40196C 23 20 MOVS R3, #0x20 0D40196E 43 9E BICS R6, R3 0D401970 60 16 STR R6, [R2] 0D401972 4C 21 LDR R4, =0xFFFFFEFF 0D401974 68 3E LDR R6, [R7] 0D401976 40 26 ANDS R6, R4 0D401978 60 3E STR R6, [R7] 0D40197A 20 0A MOVS R0, #0xA 0D40197C F0 00 FD AE BL delay_0 0D401980 68 3E LDR R6, [R7] 0D401982 46 43 MOV R3, R8 0D401984 40 35 ANDS R5, R6 0D401986 43 1D ORRS R5, R3 0D401988 60 3D STR R5, [R7] 0D40198A 20 05 MOVS R0, #5 0D40198C F0 00 FD A6 BL delay_0 0D401990 68 3B LDR R3, [R7] 0D401992 25 80 MOVS R5, #0x80 0D401994 40 23 ANDS R3, R4 0D401996 00 6D LSLS R5, R5, #1 0D401998 43 2B ORRS R3, R5 0D40199A 60 3B STR R3, [R7] 0D40199C 20 0A MOVS R0, #0xA 0D40199E F0 00 FD 9D BL delay_0 0D4019A2 68 3E LDR R6, [R7] 0D4019A4 40 26 ANDS R6, R4 0D4019A6 40 34 ANDS R4, R6 0D4019A8 20 64 MOVS R0, #0x64 0D4019AA 60 3E STR R6, [R7] 0D4019AC 43 2C ORRS R4, R5 0D4019AE F0 00 FD 95 BL delay_0 0D4019B2 20 05 MOVS R0, #5 0D4019B4 60 3C STR R4, [R7] 0D4019B6 F0 00 FD 91 BL delay_0 0D4019BA 46 50 MOV R0, R10 0D4019BC 21 1B MOVS R1, #0x1B 0D4019BE F0 02 FA 03 BL sub_D403DC8 0D4019C2 04 00 LSLS R0, R0, #0x10 0D4019C4 0C 00 LSRS R0, R0, #0x10 0D4019C6 23 1B MOVS R3, #0x1B 0D4019C8 43 43 MULS R3, R0 0D4019CA 45 53 CMP R3, R10 0D4019CC D1 01 BNE loc_D4019D2 0D4019CE F0 00 FC 57 BL sub_D402280 0D4019D2 ; --------------------------------------------------------------------------- 0D4019D2 loc_D4019D2 ; CODE XREF: init_dram+A8j 0D4019D2 23 FA 00 9B MOVLS R3, 0x3E8 0D4019D6 45 9A CMP R10, R3 0D4019D8 D9 10 BLS loc_D4019FC 0D4019DA 20 01 MOVS R0, #1 0D4019DC 22 00 MOVS R2, #0 0D4019DE 23 1A MOVS R3, #0x1A 0D4019E0 46 57 MOV R7, R10 0D4019E2 46 81 MOV R9, R0 0D4019E4 46 90 MOV R8, R2 0D4019E6 46 9B MOV R11, R3 0D4019E8 3F 01 SUBS R7, #1 0D4019EA E0 10 B loc_D401A0E 0D4019EA ; --------------------------------------------------------------------------- 0D4019EC 0D 80 01 94 off_D4019EC DCD dword_D800194 ; DATA XREF: init_dram+14r 0D4019F0 FF FF F7 FF dword_D4019F0 DCD 0xFFFFF7FF ; DATA XREF: init_dram+38r 0D4019F4 0D 80 01 80 off_D4019F4 DCD dword_D800180 ; DATA XREF: init_dram+44r 0D4019F8 FF FF FE FF dword_D4019F8 DCD 0xFFFFFEFF ; DATA XREF: init_dram+4Er 0D4019FC ; --------------------------------------------------------------------------- 0D4019FC loc_D4019FC ; CODE XREF: init_dram+B4j 0D4019FC 20 00 MOVS R0, #0 0D4019FE 22 04 MOVS R2, #4 0D401A00 23 1A MOVS R3, #0x1A 0D401A02 46 81 MOV R9, R0 0D401A04 46 90 MOV R8, R2 0D401A06 46 9B MOV R11, R3 0D401A08 46 50 MOV R0, R10 0D401A0A loc_D401A0A ; CODE XREF: sub_D402280+66p 0D401A0A 00 43 LSLS R3, R0, #1 0D401A0C 1E 5F SUBS R7, R3, #1 0D401A0E loc_D401A0E ; CODE XREF: init_dram+C6j 0D401A0E ; sub_D402280+14j 0D401A0E 4E FC LDR R6, =dword_D8001C0 0D401A10 4D FC LDR R5, =0x7FFFFFFF 0D401A12 68 33 LDR R3, [R6] 0D401A14 4C FC LDR R4, =0xBFFFFFFF 0D401A16 40 2B ANDS R3, R5 0D401A18 40 23 ANDS R3, R4 0D401A1A 60 33 STR R3, [R6] 0D401A1C 20 64 MOVS R0, #0x64 0D401A1E F0 00 FD 5D BL delay_0 0D401A22 49 FA LDR R1, =dword_D8001BC 0D401A24 68 0B LDR R3, [R1] 0D401A26 22 3F MOVS R2, #0x3F 0D401A28 43 93 BICS R3, R2 0D401A2A 46 5A MOV R2, R11 0D401A2C 43 13 ORRS R3, R2 0D401A2E 4A F8 LDR R2, =0xFFFC003F 0D401A30 40 13 ANDS R3, R2 0D401A32 01 BA LSLS R2, R7, #6 0D401A34 43 13 ORRS R3, R2 0D401A36 4A F7 LDR R2, =0xF803FFFF 0D401A38 46 40 MOV R0, R8 0D401A3A 40 13 ANDS R3, R2 0D401A3C 04 82 LSLS R2, R0, #0x12 0D401A3E 43 13 ORRS R3, R2 0D401A40 4A F5 LDR R2, =0xEFFFFFFF 0D401A42 46 48 MOV R0, R9 0D401A44 46 90 MOV R8, R2 0D401A46 40 13 ANDS R3, R2 0D401A48 07 02 LSLS R2, R0, #0x1C 0D401A4A 43 13 ORRS R3, R2 0D401A4C 60 0B STR R3, [R1] 0D401A4E 20 64 MOVS R0, #0x64 0D401A50 F0 00 FD 44 BL delay_0 0D401A54 68 33 LDR R3, [R6] 0D401A56 40 2B ANDS R3, R5 0D401A58 40 1C ANDS R4, R3 0D401A5A 23 80 05 DB MOVLS R3, 0x40000000 0D401A5E 46 42 MOV R2, R8 0D401A60 43 1C ORRS R4, R3 0D401A62 23 80 MOVS R3, #0x80 0D401A64 40 14 ANDS R4, R2 0D401A66 05 5B LSLS R3, R3, #0x15 0D401A68 43 1C ORRS R4, R3 0D401A6A 4B EC LDR R3, =0xF7FFFFFF 0D401A6C 40 1C ANDS R4, R3 0D401A6E 23 80 05 1B MOVLS R3, 0x8000000 0D401A72 43 1C ORRS R4, R3 0D401A74 20 FA 00 80 MOVLS R0, 0x3E8 0D401A78 60 34 STR R4, [R6] 0D401A7A F0 00 FD 2F BL delay_0 0D401A7E 68 33 LDR R3, [R6] 0D401A80 40 1D ANDS R5, R3 0D401A82 23 80 06 1B MOVLS R3, 0x80000000 0D401A86 43 1D ORRS R5, R3 0D401A88 20 FA 00 80 MOVLS R0, 0x3E8 0D401A8C 60 35 STR R5, [R6] 0D401A8E F0 00 FD 25 BL delay_0 0D401A92 20 80 MOVS R0, #0x80 0D401A94 21 24 MOVS R1, #0x24 0D401A96 00 40 LSLS R0, R0, #1 0D401A98 F0 00 FC CC BL d8b4_stuff_1 0D401A9C 20 05 MOVS R0, #5 0D401A9E F0 00 FD 1D BL delay_0 0D401AA2 20 80 00 40 MOVLS R0, 0x100 0D401AA6 21 20 MOVS R1, #0x20 0D401AA8 F0 00 FC C4 BL d8b4_stuff_1 0D401AAC 20 4B MOVS R0, #0x4B 0D401AAE 21 00 MOVS R1, #0 0D401AB0 F0 00 FC E0 BL d8b4_stuff_3 0D401AB4 9B 00 LDR R3, [SP,#0x30+var_30] 0D401AB6 2B 01 CMP R3, #1 0D401AB8 D1 00 BNE loc_D401ABC 0D401ABA E3 B6 B sub_D40222A 0D401ABC ; --------------------------------------------------------------------------- 0D401ABC loc_D401ABC ; CODE XREF: init_dram+194j 0D401ABC 20 48 MOVS R0, #0x48 0D401ABE 49 D8 LDR R1, =0xD0B 0D401AC0 F0 00 FC D8 BL d8b4_stuff_3 0D401AC4 20 32 MOVS R0, #0x32 0D401AC6 F0 00 FD 09 BL delay_0 0D401ACA 98 00 LDR R0, [SP,#0x30+var_30] 0D401ACC 28 01 CMP R0, #1 0D401ACE D1 00 BNE loc_D401AD2 0D401AD0 E3 B6 B loc_D402240 0D401AD2 ; --------------------------------------------------------------------------- 0D401AD2 loc_D401AD2 ; CODE XREF: init_dram+1AAj 0D401AD2 ; sub_D40222A+14j 0D401AD2 49 D4 LDR R1, =0x50B 0D401AD4 20 48 MOVS R0, #0x48 0D401AD6 loc_D401AD6 ; CODE XREF: sub_D40222A+1Aj 0D401AD6 F0 00 FC CD BL d8b4_stuff_3 0D401ADA 20 32 MOVS R0, #0x32 0D401ADC F0 00 FC FE BL delay_0 0D401AE0 20 3E MOVS R0, #0x3E 0D401AE2 49 D1 LDR R1, =0xF0F0 0D401AE4 F0 00 FC C6 BL d8b4_stuff_3 0D401AE8 20 3F MOVS R0, #0x3F 0D401AEA 49 CF LDR R1, =0xF0F0 0D401AEC F0 00 FC C2 BL d8b4_stuff_3 0D401AF0 20 40 MOVS R0, #0x40 0D401AF2 49 CE LDR R1, =0x1616 0D401AF4 F0 00 FC BE BL d8b4_stuff_3 0D401AF8 20 41 MOVS R0, #0x41 0D401AFA 49 CC LDR R1, =0x1616 0D401AFC F0 00 FC BA BL d8b4_stuff_3 0D401B00 20 42 MOVS R0, #0x42 0D401B02 49 CA LDR R1, =0x1616 0D401B04 F0 00 FC B6 BL d8b4_stuff_3 0D401B08 20 43 MOVS R0, #0x43 0D401B0A 49 C8 LDR R1, =0x1616 0D401B0C F0 00 FC B2 BL d8b4_stuff_3 0D401B10 20 32 MOVS R0, #0x32 0D401B12 F0 00 FC E3 BL delay_0 0D401B16 9A 00 LDR R2, [SP,#0x30+var_30] 0D401B18 2A 01 CMP R2, #1 0D401B1A D1 00 BNE loc_D401B1E 0D401B1C E3 DB B loc_D4022D6 0D401B1E ; --------------------------------------------------------------------------- 0D401B1E loc_D401B1E ; CODE XREF: init_dram+1F6j 0D401B1E 49 C4 LDR R1, =0x10B 0D401B20 20 48 MOVS R0, #0x48 0D401B22 loc_D401B22 ; CODE XREF: sub_D402280+5Aj 0D401B22 F0 00 FC A7 BL d8b4_stuff_3 0D401B26 20 0A MOVS R0, #0xA 0D401B28 F0 00 FC D8 BL delay_0 0D401B2C 21 80 MOVS R1, #0x80 0D401B2E 20 47 MOVS R0, #0x47 0D401B30 02 09 LSLS R1, R1, #8 0D401B32 F0 00 FC 9F BL d8b4_stuff_3 0D401B36 20 27 MOVS R0, #0x27 0D401B38 21 00 MOVS R1, #0 0D401B3A F0 00 FC 9B BL d8b4_stuff_3 0D401B3E 20 86 00 40 MOVLS R0, 0x10C 0D401B42 49 BC LDR R1, =0x1FF 0D401B44 F0 00 FC 76 BL d8b4_stuff_1 0D401B48 48 BB LDR R0, =0x10D 0D401B4A 49 BC LDR R1, =0xFFF 0D401B4C F0 00 FC 72 BL d8b4_stuff_1 0D401B50 20 87 00 40 MOVLS R0, 0x10E 0D401B54 21 07 MOVS R1, #7 0D401B56 F0 00 FC 6D BL d8b4_stuff_1 0D401B5A 48 B5 LDR R0, =0x10B 0D401B5C 21 01 MOVS R1, #1 0D401B5E F0 00 FC 69 BL d8b4_stuff_1 0D401B62 48 B7 LDR R0, =0x109 0D401B64 21 04 MOVS R1, #4 0D401B66 F0 00 FC 65 BL d8b4_stuff_1 0D401B6A 20 84 00 40 MOVLS R0, 0x108 0D401B6E 21 06 MOVS R1, #6 0D401B70 F0 00 FC 60 BL d8b4_stuff_1 0D401B74 20 85 00 40 MOVLS R0, 0x10A 0D401B78 21 02 MOVS R1, #2 0D401B7A F0 00 FC 5B BL d8b4_stuff_1 0D401B7E 48 B1 LDR R0, =0x15B 0D401B80 49 B1 LDR R1, =0xEFF 0D401B82 F0 00 FC 57 BL d8b4_stuff_1 0D401B86 20 9A 00 40 MOVLS R0, 0x134 0D401B8A 21 08 MOVS R1, #8 0D401B8C F0 00 FC 52 BL d8b4_stuff_1 0D401B90 48 AE LDR R0, =0x135 0D401B92 21 0C MOVS R1, #0xC 0D401B94 F0 00 FC 4E BL d8b4_stuff_1 0D401B98 20 9B 00 40 MOVLS R0, 0x136 0D401B9C 21 18 MOVS R1, #0x18 0D401B9E F0 00 FC 49 BL d8b4_stuff_1 0D401BA2 20 A0 00 40 MOVLS R0, 0x140 0D401BA6 21 06 MOVS R1, #6 0D401BA8 F0 00 FC 44 BL d8b4_stuff_1 0D401BAC 20 AD 00 40 MOVLS R0, 0x15A 0D401BB0 21 05 MOVS R1, #5 0D401BB2 F0 00 FC 3F BL d8b4_stuff_1 0D401BB6 48 A6 LDR R0, =0x137 0D401BB8 21 05 MOVS R1, #5 0D401BBA F0 00 FC 3B BL d8b4_stuff_1 0D401BBE 20 9C 00 40 MOVLS R0, 0x138 0D401BC2 21 05 MOVS R1, #5 0D401BC4 F0 00 FC 36 BL d8b4_stuff_1 0D401BC8 48 A2 LDR R0, =0x139 0D401BCA 21 05 MOVS R1, #5 0D401BCC F0 00 FC 32 BL d8b4_stuff_1 0D401BD0 20 9D 00 40 MOVLS R0, 0x13A 0D401BD4 21 05 MOVS R1, #5 0D401BD6 F0 00 FC 2D BL d8b4_stuff_1 0D401BDA 48 9F LDR R0, =0x13B 0D401BDC 21 05 MOVS R1, #5 0D401BDE F0 00 FC 29 BL d8b4_stuff_1 0D401BE2 20 9E 00 40 MOVLS R0, 0x13C 0D401BE6 21 05 MOVS R1, #5 0D401BE8 F0 00 FC 24 BL d8b4_stuff_1 0D401BEC 48 9B LDR R0, =0x13D 0D401BEE 21 05 MOVS R1, #5 0D401BF0 F0 00 FC 20 BL d8b4_stuff_1 0D401BF4 20 9F 00 40 MOVLS R0, 0x13E 0D401BF8 21 05 MOVS R1, #5 0D401BFA F0 00 FC 1B BL d8b4_stuff_1 0D401BFE 48 98 LDR R0, =0x13F 0D401C00 21 05 MOVS R1, #5 0D401C02 F0 00 FC 17 BL d8b4_stuff_1 0D401C06 20 1C MOVS R0, #0x1C 0D401C08 21 00 MOVS R1, #0 0D401C0A F0 00 FC 33 BL d8b4_stuff_3 0D401C0E 20 1B MOVS R0, #0x1B 0D401C10 21 00 MOVS R1, #0 0D401C12 F0 00 FC 2F BL d8b4_stuff_3 0D401C16 20 00 MOVS R0, #0 0D401C18 21 00 MOVS R1, #0 0D401C1A F0 00 FC 2B BL d8b4_stuff_3 0D401C1E 20 15 MOVS R0, #0x15 0D401C20 21 01 MOVS R1, #1 0D401C22 F0 00 FC 27 BL d8b4_stuff_3 0D401C26 20 16 MOVS R0, #0x16 0D401C28 21 00 MOVS R1, #0 0D401C2A F0 00 FC 23 BL d8b4_stuff_3 0D401C2E 20 25 MOVS R0, #0x25 0D401C30 21 01 MOVS R1, #1 0D401C32 F0 00 FC 1F BL d8b4_stuff_3 0D401C36 20 10 MOVS R0, #0x10 0D401C38 21 00 MOVS R1, #0 0D401C3A F0 00 FC 1B BL d8b4_stuff_3 0D401C3E 20 23 MOVS R0, #0x23 0D401C40 21 08 MOVS R1, #8 0D401C42 F0 00 FC 17 BL d8b4_stuff_3 0D401C46 20 01 MOVS R0, #1 0D401C48 21 07 MOVS R1, #7 0D401C4A F0 00 FC 13 BL d8b4_stuff_3 0D401C4E 20 02 MOVS R0, #2 0D401C50 21 04 MOVS R1, #4 0D401C52 F0 00 FC 0F BL d8b4_stuff_3 0D401C56 20 05 MOVS R0, #5 0D401C58 21 07 MOVS R1, #7 0D401C5A F0 00 FC 0B BL d8b4_stuff_3 0D401C5E 20 08 MOVS R0, #8 0D401C60 21 04 MOVS R1, #4 0D401C62 F0 00 FC 07 BL d8b4_stuff_3 0D401C66 20 09 MOVS R0, #9 0D401C68 21 18 MOVS R1, #0x18 0D401C6A F0 00 FC 03 BL d8b4_stuff_3 0D401C6E 20 0A MOVS R0, #0xA 0D401C70 21 1B MOVS R1, #0x1B 0D401C72 F0 00 FB FF BL d8b4_stuff_3 0D401C76 20 04 MOVS R0, #4 0D401C78 21 17 MOVS R1, #0x17 0D401C7A F0 00 FB FB BL d8b4_stuff_3 0D401C7E 20 21 MOVS R0, #0x21 0D401C80 21 0B MOVS R1, #0xB 0D401C82 F0 00 FB F7 BL d8b4_stuff_3 0D401C86 20 0B MOVS R0, #0xB 0D401C88 21 09 MOVS R1, #9 0D401C8A F0 00 FB F3 BL d8b4_stuff_3 0D401C8E 20 0C MOVS R0, #0xC 0D401C90 21 0B MOVS R1, #0xB 0D401C92 F0 00 FB EF BL d8b4_stuff_3 0D401C96 20 0D MOVS R0, #0xD 0D401C98 21 06 MOVS R1, #6 0D401C9A F0 00 FB EB BL d8b4_stuff_3 0D401C9E 20 0E MOVS R0, #0xE 0D401CA0 21 0C MOVS R1, #0xC 0D401CA2 F0 00 FB E7 BL d8b4_stuff_3 0D401CA6 20 0F MOVS R0, #0xF 0D401CA8 21 17 MOVS R1, #0x17 0D401CAA F0 00 FB E3 BL d8b4_stuff_3 0D401CAE 21 FC MOVS R1, #0xFC 0D401CB0 20 11 MOVS R0, #0x11 0D401CB2 02 09 LSLS R1, R1, #8 0D401CB4 F0 00 FB DE BL d8b4_stuff_3 0D401CB8 20 12 MOVS R0, #0x12 0D401CBA 21 1F MOVS R1, #0x1F 0D401CBC F0 00 FB DA BL d8b4_stuff_3 0D401CC0 20 13 MOVS R0, #0x13 0D401CC2 21 00 MOVS R1, #0 0D401CC4 F0 00 FB D6 BL d8b4_stuff_3 0D401CC8 20 14 MOVS R0, #0x14 0D401CCA 21 00 MOVS R1, #0 0D401CCC F0 00 FB D2 BL d8b4_stuff_3 0D401CD0 20 06 MOVS R0, #6 0D401CD2 21 02 MOVS R1, #2 0D401CD4 F0 00 FB CE BL d8b4_stuff_3 0D401CD8 20 07 MOVS R0, #7 0D401CDA 21 0A MOVS R1, #0xA 0D401CDC F0 00 FB CA BL d8b4_stuff_3 0D401CE0 20 22 MOVS R0, #0x22 0D401CE2 21 08 MOVS R1, #8 0D401CE4 F0 00 FB C6 BL d8b4_stuff_3 0D401CE8 21 FF MOVS R1, #0xFF 0D401CEA 20 1F MOVS R0, #0x1F 0D401CEC 01 49 LSLS R1, R1, #5 0D401CEE F0 00 FB C1 BL d8b4_stuff_3 0D401CF2 20 20 MOVS R0, #0x20 0D401CF4 21 00 MOVS R1, #0 0D401CF6 F0 00 FB BD BL d8b4_stuff_3 0D401CFA 20 2C MOVS R0, #0x2C 0D401CFC 49 59 LDR R1, =0x7252 0D401CFE F0 00 FB B9 BL d8b4_stuff_3 0D401D02 20 2D MOVS R0, #0x2D 0D401D04 49 58 LDR R1, =0x4A5E 0D401D06 F0 00 FB B5 BL d8b4_stuff_3 0D401D0A 20 2E MOVS R0, #0x2E 0D401D0C 49 57 LDR R1, =0x7BDE 0D401D0E F0 00 FB B1 BL d8b4_stuff_3 0D401D12 20 2F MOVS R0, #0x2F 0D401D14 21 DE MOVS R1, #0xDE 0D401D16 F0 00 FB AD BL d8b4_stuff_3 0D401D1A 20 30 MOVS R0, #0x30 0D401D1C 21 CC MOVS R1, #0xCC 0D401D1E F0 00 FB A9 BL d8b4_stuff_3 0D401D22 20 31 MOVS R0, #0x31 0D401D24 21 00 MOVS R1, #0 0D401D26 F0 00 FB A5 BL d8b4_stuff_3 0D401D2A 20 32 MOVS R0, #0x32 0D401D2C 21 CC MOVS R1, #0xCC 0D401D2E F0 00 FB A1 BL d8b4_stuff_3 0D401D32 20 33 MOVS R0, #0x33 0D401D34 21 00 MOVS R1, #0 0D401D36 F0 00 FB 9D BL d8b4_stuff_3 0D401D3A 20 34 MOVS R0, #0x34 0D401D3C 21 CC MOVS R1, #0xCC 0D401D3E F0 00 FB 99 BL d8b4_stuff_3 0D401D42 20 35 MOVS R0, #0x35 0D401D44 21 00 MOVS R1, #0 0D401D46 F0 00 FB 95 BL d8b4_stuff_3 0D401D4A 20 36 MOVS R0, #0x36 0D401D4C 49 48 LDR R1, =0x8EC 0D401D4E F0 00 FB 91 BL d8b4_stuff_3 0D401D52 20 37 MOVS R0, #0x37 0D401D54 21 00 MOVS R1, #0 0D401D56 F0 00 FB 8D BL d8b4_stuff_3 0D401D5A 20 38 MOVS R0, #0x38 0D401D5C 49 45 LDR R1, =0x476 0D401D5E F0 00 FB 89 BL d8b4_stuff_3 0D401D62 20 39 MOVS R0, #0x39 0D401D64 21 00 MOVS R1, #0 0D401D66 F0 00 FB 85 BL d8b4_stuff_3 0D401D6A 9B 00 LDR R3, [SP,#0x30+var_30] 0D401D6C 2B 01 CMP R3, #1 0D401D6E D1 00 BNE loc_D401D72 0D401D70 E2 A2 B loc_D4022B8 0D401D72 ; --------------------------------------------------------------------------- 0D401D72 loc_D401D72 ; CODE XREF: init_dram+44Aj 0D401D72 20 3A MOVS R0, #0x3A 0D401D74 21 00 MOVS R1, #0 0D401D76 F0 00 FB 7D BL d8b4_stuff_3 0D401D7A 20 3B MOVS R0, #0x3B 0D401D7C 21 00 MOVS R1, #0 0D401D7E F0 00 FB 79 BL d8b4_stuff_3 0D401D82 20 3C MOVS R0, #0x3C 0D401D84 21 00 MOVS R1, #0 0D401D86 F0 00 FB 75 BL d8b4_stuff_3 0D401D8A 20 3D MOVS R0, #0x3D 0D401D8C 21 00 MOVS R1, #0 0D401D8E loc_D401D8E ; CODE XREF: sub_D402280+54j 0D401D8E F0 00 FB 71 BL d8b4_stuff_3 0D401D92 F0 00 FB DB BL get_stack_ptr_maybe 0D401D96 1C 04 ADDS R4, R0, #0 0D401D98 20 3A MOVS R0, #0x3A 0D401D9A F0 00 FB 81 BL sub_D4024A0 0D401D9E 60 60 STR R0, [R4,#4] 0D401DA0 20 3B MOVS R0, #0x3B 0D401DA2 F0 00 FB 7D BL sub_D4024A0 0D401DA6 60 A0 STR R0, [R4,#8] 0D401DA8 20 3C MOVS R0, #0x3C 0D401DAA F0 00 FB 79 BL sub_D4024A0 0D401DAE 60 E0 STR R0, [R4,#0xC] 0D401DB0 20 3D MOVS R0, #0x3D 0D401DB2 F0 00 FB 75 BL sub_D4024A0 0D401DB6 4B 30 LDR R3, =0xCAFEBABE 0D401DB8 61 20 STR R0, [R4,#0x10] 0D401DBA 21 00 MOVS R1, #0 0D401DBC 61 63 STR R3, [R4,#0x14] 0D401DBE 20 45 MOVS R0, #0x45 0D401DC0 F0 00 FB 58 BL d8b4_stuff_3 0D401DC4 20 80 MOVS R0, #0x80 0D401DC6 21 00 MOVS R1, #0 0D401DC8 00 40 LSLS R0, R0, #1 0D401DCA F0 00 FB 33 BL d8b4_stuff_1 0D401DCE 20 05 MOVS R0, #5 0D401DD0 F0 00 FB 84 BL delay_0 0D401DD4 21 01 MOVS R1, #1 0D401DD6 20 18 MOVS R0, #0x18 0D401DD8 F0 00 FB 4C BL d8b4_stuff_3 0D401DDC 20 05 MOVS R0, #5 0D401DDE F0 00 FB 7D BL delay_0 0D401DE2 21 01 MOVS R1, #1 0D401DE4 20 17 MOVS R0, #0x17 0D401DE6 F0 00 FB 45 BL d8b4_stuff_3 0D401DEA 20 C8 MOVS R0, #0xC8 0D401DEC F0 00 FB 76 BL delay_0 0D401DF0 20 4B MOVS R0, #0x4B 0D401DF2 21 00 MOVS R1, #0 0D401DF4 F0 00 FB 3E BL d8b4_stuff_3 0D401DF8 20 4C MOVS R0, #0x4C 0D401DFA 21 01 MOVS R1, #1 0D401DFC E0 3E B loc_D401E7C 0D401DFC ; --------------------------------------------------------------------------- 0D401DFE 00 00 ALIGN 0x10 0D401E00 0D 80 01 C0 off_D401E00 DCD dword_D8001C0 ; DATA XREF: init_dram:loc_D401A0Er 0D401E04 7F FF FF FF dword_D401E04 DCD 0x7FFFFFFF ; DATA XREF: init_dram+ECr 0D401E08 BF FF FF FF dword_D401E08 DCD 0xBFFFFFFF ; DATA XREF: init_dram+F0r 0D401E0C 0D 80 01 BC off_D401E0C DCD dword_D8001BC ; DATA XREF: init_dram+FEr 0D401E10 FF FC 00 3F dword_D401E10 DCD 0xFFFC003F ; DATA XREF: init_dram+10Ar 0D401E14 F8 03 FF FF dword_D401E14 DCD 0xF803FFFF ; DATA XREF: init_dram+112r 0D401E18 EF FF FF FF dword_D401E18 DCD 0xEFFFFFFF ; DATA XREF: init_dram+11Cr 0D401E1C F7 FF FF FF dword_D401E1C DCD 0xF7FFFFFF ; DATA XREF: init_dram+146r 0D401E20 00 00 0D 0B dword_D401E20 DCD 0xD0B ; DATA XREF: init_dram+19Ar 0D401E24 00 00 05 0B dword_D401E24 DCD 0x50B ; DATA XREF: init_dram:loc_D401AD2r 0D401E28 00 00 F0 F0 off_D401E28 DCD 0xF0F0 ; DATA XREF: init_dram+1BEr 0D401E28 ; init_dram+1C6r 0D401E2C 00 00 16 16 off_D401E2C DCD 0x1616 ; DATA XREF: init_dram+1CEr 0D401E2C ; init_dram+1D6r 0D401E2C ; init_dram+1DEr ... 0D401E30 00 00 01 0B dword_D401E30 DCD 0x10B ; DATA XREF: init_dram:loc_D401B1Er 0D401E30 ; init_dram+236r 0D401E34 00 00 01 FF dword_D401E34 DCD 0x1FF ; DATA XREF: init_dram+21Er 0D401E38 00 00 01 0D dword_D401E38 DCD 0x10D ; DATA XREF: init_dram+224r 0D401E3C 00 00 0F FF dword_D401E3C DCD 0xFFF ; DATA XREF: init_dram+226r 0D401E40 00 00 01 09 dword_D401E40 DCD 0x109 ; DATA XREF: init_dram+23Er 0D401E44 00 00 01 5B dword_D401E44 DCD 0x15B ; DATA XREF: init_dram+25Ar 0D401E48 00 00 0E FF dword_D401E48 DCD 0xEFF ; DATA XREF: init_dram+25Cr 0D401E4C 00 00 01 35 dword_D401E4C DCD 0x135 ; DATA XREF: init_dram+26Cr 0D401E50 00 00 01 37 dword_D401E50 DCD 0x137 ; DATA XREF: init_dram+292r 0D401E54 00 00 01 39 dword_D401E54 DCD 0x139 ; DATA XREF: init_dram+2A4r 0D401E58 00 00 01 3B dword_D401E58 DCD 0x13B ; DATA XREF: init_dram+2B6r 0D401E5C 00 00 01 3D dword_D401E5C DCD 0x13D ; DATA XREF: init_dram+2C8r 0D401E60 00 00 01 3F dword_D401E60 DCD 0x13F ; DATA XREF: init_dram+2DAr 0D401E64 00 00 72 52 off_D401E64 DCD 0x7252 ; DATA XREF: init_dram+3D8r 0D401E68 00 00 4A 5E off_D401E68 DCD 0x4A5E ; DATA XREF: init_dram+3E0r 0D401E6C 00 00 7B DE off_D401E6C DCD 0x7BDE ; DATA XREF: init_dram+3E8r 0D401E70 00 00 08 EC dword_D401E70 DCD 0x8EC ; DATA XREF: init_dram+428r 0D401E74 00 00 04 76 dword_D401E74 DCD 0x476 ; DATA XREF: init_dram+438r 0D401E78 CA FE BA BE dword_D401E78 DCD 0xCAFEBABE ; DATA XREF: init_dram+492r 0D401E7C ; --------------------------------------------------------------------------- 0D401E7C loc_D401E7C ; CODE XREF: init_dram+4D8j 0D401E7C F0 00 FA FA BL d8b4_stuff_3 0D401E80 20 B0 00 40 MOVLS R0, 0x160 0D401E84 49 F0 LDR R1, =0xFFFF 0D401E86 F0 00 FA D5 BL d8b4_stuff_1 0D401E8A 48 F0 LDR R0, =0x161 0D401E8C 21 20 MOVS R1, #0x20 0D401E8E F0 00 FA D1 BL d8b4_stuff_1 0D401E92 48 EE LDR R0, =0x161 0D401E94 21 21 MOVS R1, #0x21 0D401E96 F0 00 FA CD BL d8b4_stuff_1 0D401E9A 21 20 MOVS R1, #0x20 0D401E9C 48 EB LDR R0, =0x161 0D401E9E F0 00 FA C9 BL d8b4_stuff_1 0D401EA2 20 01 MOVS R0, #1 0D401EA4 F0 00 FB 1A BL delay_0 0D401EA8 20 B0 00 40 MOVLS R0, 0x160 0D401EAC 49 E8 LDR R1, =0x2882 0D401EAE F0 00 FA C1 BL d8b4_stuff_1 0D401EB2 48 E6 LDR R0, =0x161 0D401EB4 21 22 MOVS R1, #0x22 0D401EB6 F0 00 FA BD BL d8b4_stuff_1 0D401EBA 48 E4 LDR R0, =0x161 0D401EBC 21 23 MOVS R1, #0x23 0D401EBE F0 00 FA B9 BL d8b4_stuff_1 0D401EC2 21 22 MOVS R1, #0x22 0D401EC4 48 E1 LDR R0, =0x161 0D401EC6 F0 00 FA B5 BL d8b4_stuff_1 0D401ECA 20 05 MOVS R0, #5 0D401ECC F0 00 FB 06 BL delay_0 0D401ED0 20 B0 00 40 MOVLS R0, 0x160 0D401ED4 49 DE LDR R1, =0x2882 0D401ED6 F0 00 FA AD BL d8b4_stuff_1 0D401EDA 48 DC LDR R0, =0x161 0D401EDC 21 24 MOVS R1, #0x24 0D401EDE F0 00 FA A9 BL d8b4_stuff_1 0D401EE2 48 DA LDR R0, =0x161 0D401EE4 21 25 MOVS R1, #0x25 0D401EE6 F0 00 FA A5 BL d8b4_stuff_1 0D401EEA 21 24 MOVS R1, #0x24 0D401EEC 48 D7 LDR R0, =0x161 0D401EEE F0 00 FA A1 BL d8b4_stuff_1 0D401EF2 20 05 MOVS R0, #5 0D401EF4 F0 00 FA F2 BL delay_0 0D401EF8 20 B0 00 40 MOVLS R0, 0x160 0D401EFC 49 D5 LDR R1, =0x2C82 0D401EFE F0 00 FA 99 BL d8b4_stuff_1 0D401F02 48 D2 LDR R0, =0x161 0D401F04 21 22 MOVS R1, #0x22 0D401F06 F0 00 FA 95 BL d8b4_stuff_1 0D401F0A 48 D0 LDR R0, =0x161 0D401F0C 21 23 MOVS R1, #0x23 0D401F0E F0 00 FA 91 BL d8b4_stuff_1 0D401F12 21 22 MOVS R1, #0x22 0D401F14 48 CD LDR R0, =0x161 0D401F16 F0 00 FA 8D BL d8b4_stuff_1 0D401F1A 20 05 MOVS R0, #5 0D401F1C F0 00 FA DE BL delay_0 0D401F20 20 29 MOVS R0, #0x29 0D401F22 F0 00 FA BD BL sub_D4024A0 0D401F26 06 00 LSLS R0, R0, #0x18 0D401F28 0E 05 LSRS R5, R0, #0x18 0D401F2A 20 B0 00 40 MOVLS R0, 0x160 0D401F2E 49 C8 LDR R1, =0x2882 0D401F30 F0 00 FA 80 BL d8b4_stuff_1 0D401F34 48 C5 LDR R0, =0x161 0D401F36 21 22 MOVS R1, #0x22 0D401F38 F0 00 FA 7C BL d8b4_stuff_1 0D401F3C 48 C3 LDR R0, =0x161 0D401F3E 21 23 MOVS R1, #0x23 0D401F40 F0 00 FA 78 BL d8b4_stuff_1 0D401F44 21 22 MOVS R1, #0x22 0D401F46 48 C1 LDR R0, =0x161 0D401F48 F0 00 FA 74 BL d8b4_stuff_1 0D401F4C 20 05 MOVS R0, #5 0D401F4E F0 00 FA C5 BL delay_0 0D401F52 20 B0 00 40 MOVLS R0, 0x160 0D401F56 49 BF LDR R1, =0x2C82 0D401F58 F0 00 FA 6C BL d8b4_stuff_1 0D401F5C 48 BB LDR R0, =0x161 0D401F5E 21 24 MOVS R1, #0x24 0D401F60 F0 00 FA 68 BL d8b4_stuff_1 0D401F64 48 B9 LDR R0, =0x161 0D401F66 21 25 MOVS R1, #0x25 0D401F68 F0 00 FA 64 BL d8b4_stuff_1 0D401F6C 21 24 MOVS R1, #0x24 0D401F6E 48 B7 LDR R0, =0x161 0D401F70 F0 00 FA 60 BL d8b4_stuff_1 0D401F74 20 05 MOVS R0, #5 0D401F76 F0 00 FA B1 BL delay_0 0D401F7A 20 29 MOVS R0, #0x29 0D401F7C F0 00 FA 90 BL sub_D4024A0 0D401F80 04 00 LSLS R0, R0, #0x10 0D401F82 0E 04 LSRS R4, R0, #0x18 0D401F84 20 B0 00 40 MOVLS R0, 0x160 0D401F88 49 B1 LDR R1, =0x2882 0D401F8A F0 00 FA 53 BL d8b4_stuff_1 0D401F8E 48 AF LDR R0, =0x161 0D401F90 21 24 MOVS R1, #0x24 0D401F92 F0 00 FA 4F BL d8b4_stuff_1 0D401F96 48 AD LDR R0, =0x161 0D401F98 21 25 MOVS R1, #0x25 0D401F9A F0 00 FA 4B BL d8b4_stuff_1 0D401F9E 21 24 MOVS R1, #0x24 0D401FA0 48 AA LDR R0, =0x161 0D401FA2 F0 00 FA 47 BL d8b4_stuff_1 0D401FA6 20 05 MOVS R0, #5 0D401FA8 F0 00 FA 98 BL delay_0 0D401FAC 20 B0 00 40 MOVLS R0, 0x160 0D401FB0 49 A9 LDR R1, =0x903 0D401FB2 F0 00 FA 3F BL d8b4_stuff_1 0D401FB6 48 A5 LDR R0, =0x161 0D401FB8 21 22 MOVS R1, #0x22 0D401FBA F0 00 FA 3B BL d8b4_stuff_1 0D401FBE 48 A3 LDR R0, =0x161 0D401FC0 21 23 MOVS R1, #0x23 0D401FC2 F0 00 FA 37 BL d8b4_stuff_1 0D401FC6 21 22 MOVS R1, #0x22 0D401FC8 48 A0 LDR R0, =0x161 0D401FCA F0 00 FA 33 BL d8b4_stuff_1 0D401FCE 20 01 MOVS R0, #1 0D401FD0 F0 00 FA 84 BL delay_0 0D401FD4 20 B0 00 40 MOVLS R0, 0x160 0D401FD8 49 9F LDR R1, =0x903 0D401FDA F0 00 FA 2B BL d8b4_stuff_1 0D401FDE 48 9B LDR R0, =0x161 0D401FE0 21 24 MOVS R1, #0x24 0D401FE2 F0 00 FA 27 BL d8b4_stuff_1 0D401FE6 48 99 LDR R0, =0x161 0D401FE8 21 25 MOVS R1, #0x25 0D401FEA F0 00 FA 23 BL d8b4_stuff_1 0D401FEE 21 24 MOVS R1, #0x24 0D401FF0 48 96 LDR R0, =0x161 0D401FF2 F0 00 FA 1F BL d8b4_stuff_1 0D401FF6 20 01 MOVS R0, #1 0D401FF8 F0 00 FA 70 BL delay_0 0D401FFC 20 4C MOVS R0, #0x4C 0D401FFE 21 00 MOVS R1, #0 0D402000 F0 00 FA 38 BL d8b4_stuff_3 0D402004 20 18 MOVS R0, #0x18 0D402006 21 00 MOVS R1, #0 0D402008 F0 00 FA 34 BL d8b4_stuff_3 0D40200C 20 17 MOVS R0, #0x17 0D40200E 21 00 MOVS R1, #0 0D402010 F0 00 FA 30 BL d8b4_stuff_3 0D402014 20 C8 MOVS R0, #0xC8 0D402016 F0 00 FA 61 BL delay_0 0D40201A 42 A5 CMP R5, R4 0D40201C D1 00 BNE loc_D402020 0D40201E E1 42 B loc_D4022A6 0D402020 ; --------------------------------------------------------------------------- 0D402020 loc_D402020 ; CODE XREF: init_dram+6F8j 0D402020 20 17 MOVS R0, #0x17 0D402022 21 01 MOVS R1, #1 0D402024 F0 00 FA 26 BL d8b4_stuff_3 0D402028 20 05 MOVS R0, #5 0D40202A F0 00 FA 57 BL delay_0 0D40202E 20 18 MOVS R0, #0x18 0D402030 loc_D402030 ; CODE XREF: sub_D402280+36j 0D402030 21 01 MOVS R1, #1 0D402032 F0 00 FA 1F BL d8b4_stuff_3 0D402036 20 C8 MOVS R0, #0xC8 0D402038 F0 00 FA 50 BL delay_0 0D40203C 20 4B MOVS R0, #0x4B 0D40203E 21 00 MOVS R1, #0 0D402040 F0 00 FA 18 BL d8b4_stuff_3 0D402044 42 A5 CMP R5, R4 0D402046 D0 07 BEQ loc_D402058 0D402048 48 84 LDR R0, =0x10B 0D40204A 21 07 MOVS R1, #7 0D40204C F0 00 F9 F2 BL d8b4_stuff_1 0D402050 20 15 MOVS R0, #0x15 0D402052 21 00 MOVS R1, #0 0D402054 F0 00 FA 0E BL d8b4_stuff_3 0D402058 loc_D402058 ; CODE XREF: init_dram+722j 0D402058 20 B0 00 40 MOVLS R0, 0x160 0D40205C 49 7A LDR R1, =0xFFFF 0D40205E F0 00 F9 E9 BL d8b4_stuff_1 0D402062 48 7A LDR R0, =0x161 0D402064 21 20 MOVS R1, #0x20 0D402066 F0 00 F9 E5 BL d8b4_stuff_1 0D40206A 48 78 LDR R0, =0x161 0D40206C 21 21 MOVS R1, #0x21 0D40206E F0 00 F9 E1 BL d8b4_stuff_1 0D402072 48 76 LDR R0, =0x161 0D402074 21 20 MOVS R1, #0x20 0D402076 F0 00 F9 DD BL d8b4_stuff_1 0D40207A 20 02 MOVS R0, #2 0D40207C F0 00 FA 2E BL delay_0 0D402080 42 A5 CMP R5, R4 0D402082 D1 00 BNE loc_D402086 0D402084 E1 0B B loc_D40229E 0D402086 ; --------------------------------------------------------------------------- 0D402086 loc_D402086 ; CODE XREF: init_dram+75Ej 0D402086 20 B0 MOVS R0, #0xB0 0D402088 49 75 LDR R1, =0x288A 0D40208A 00 40 LSLS R0, R0, #1 0D40208C loc_D40208C ; CODE XREF: sub_D402280+24j 0D40208C F0 00 F9 D2 BL d8b4_stuff_1 0D402090 48 6E LDR R0, =0x161 0D402092 21 22 MOVS R1, #0x22 0D402094 F0 00 F9 CE BL d8b4_stuff_1 0D402098 48 6C LDR R0, =0x161 0D40209A 21 23 MOVS R1, #0x23 0D40209C F0 00 F9 CA BL d8b4_stuff_1 0D4020A0 48 6A LDR R0, =0x161 0D4020A2 21 22 MOVS R1, #0x22 0D4020A4 F0 00 F9 C6 BL d8b4_stuff_1 0D4020A8 20 01 MOVS R0, #1 0D4020AA F0 00 FA 17 BL delay_0 0D4020AE 42 A5 CMP R5, R4 0D4020B0 D1 00 BNE loc_D4020B4 0D4020B2 E1 2F B sub_D402314 0D4020B4 ; --------------------------------------------------------------------------- 0D4020B4 loc_D4020B4 ; CODE XREF: init_dram+78Cj 0D4020B4 ; sub_D402314+28j 0D4020B4 20 B0 00 40 MOVLS R0, 0x160 0D4020B8 49 67 LDR R1, =0x903 0D4020BA F0 00 F9 BB BL d8b4_stuff_1 0D4020BE 48 63 LDR R0, =0x161 0D4020C0 21 22 MOVS R1, #0x22 0D4020C2 F0 00 F9 B7 BL d8b4_stuff_1 0D4020C6 48 61 LDR R0, =0x161 0D4020C8 21 23 MOVS R1, #0x23 0D4020CA F0 00 F9 B3 BL d8b4_stuff_1 0D4020CE 48 5F LDR R0, =0x161 0D4020D0 21 22 MOVS R1, #0x22 0D4020D2 F0 00 F9 AF BL d8b4_stuff_1 0D4020D6 20 01 MOVS R0, #1 0D4020D8 F0 00 FA 00 BL delay_0 0D4020DC 42 A5 CMP R5, R4 0D4020DE D1 00 BNE loc_D4020E2 0D4020E0 E1 03 B loc_D4022EA 0D4020E2 ; --------------------------------------------------------------------------- 0D4020E2 loc_D4020E2 ; CODE XREF: init_dram+7BAj 0D4020E2 ; sub_D402280+92j 0D4020E2 20 46 MOVS R0, #0x46 0D4020E4 F0 00 F9 FA BL delay_0 0D4020E8 20 B0 00 40 MOVLS R0, 0x160 0D4020EC 49 56 LDR R1, =0xFFFF 0D4020EE F0 00 F9 A1 BL d8b4_stuff_1 0D4020F2 48 56 LDR R0, =0x161 0D4020F4 21 20 MOVS R1, #0x20 0D4020F6 F0 00 F9 9D BL d8b4_stuff_1 0D4020FA 48 54 LDR R0, =0x161 0D4020FC 21 21 MOVS R1, #0x21 0D4020FE F0 00 F9 99 BL d8b4_stuff_1 0D402102 21 20 MOVS R1, #0x20 0D402104 48 51 LDR R0, =0x161 0D402106 F0 00 F9 95 BL d8b4_stuff_1 0D40210A 20 02 MOVS R0, #2 0D40210C F0 00 F9 E6 BL delay_0 0D402110 20 B0 00 40 MOVLS R0, 0x160 0D402114 49 4C LDR R1, =0xFFFF 0D402116 F0 00 F9 8D BL d8b4_stuff_1 0D40211A 48 4C LDR R0, =0x161 0D40211C 21 02 MOVS R1, #2 0D40211E F0 00 F9 89 BL d8b4_stuff_1 0D402122 48 4A LDR R0, =0x161 0D402124 21 03 MOVS R1, #3 0D402126 F0 00 F9 85 BL d8b4_stuff_1 0D40212A 21 02 MOVS R1, #2 0D40212C 48 47 LDR R0, =0x161 0D40212E F0 00 F9 81 BL d8b4_stuff_1 0D402132 20 05 MOVS R0, #5 0D402134 F0 00 F9 D2 BL delay_0 0D402138 20 B0 00 40 MOVLS R0, 0x160 0D40213C 49 42 LDR R1, =0xFFFF 0D40213E F0 00 F9 79 BL d8b4_stuff_1 0D402142 48 42 LDR R0, =0x161 0D402144 21 02 MOVS R1, #2 0D402146 F0 00 F9 75 BL d8b4_stuff_1 0D40214A 48 40 LDR R0, =0x161 0D40214C 21 03 MOVS R1, #3 0D40214E F0 00 F9 71 BL d8b4_stuff_1 0D402152 21 02 MOVS R1, #2 0D402154 48 3D LDR R0, =0x161 0D402156 F0 00 F9 6D BL d8b4_stuff_1 0D40215A 20 05 MOVS R0, #5 0D40215C F0 00 F9 BE BL delay_0 0D402160 4B 40 LDR R3, =0xD8B4000 0D402162 22 00 MOVS R2, #0 0D402164 80 1A STRH R2, [R3] 0D402166 33 02 ADDS R3, #2 0D402168 80 1A STRH R2, [R3] 0D40216A 33 02 ADDS R3, #2 0D40216C 80 1A STRH R2, [R3] 0D40216E 33 02 ADDS R3, #2 0D402170 80 1A STRH R2, [R3] 0D402172 33 02 ADDS R3, #2 0D402174 80 1A STRH R2, [R3] 0D402176 33 02 ADDS R3, #2 0D402178 80 1A STRH R2, [R3] 0D40217A 33 02 ADDS R3, #2 0D40217C 80 1A STRH R2, [R3] 0D40217E 33 02 ADDS R3, #2 0D402180 80 1A STRH R2, [R3] 0D402182 9A 02 LDR R2, [SP,#0x30+var_28] 0D402184 23 FB 01 1B MOVLS R3, 0xFB0 0D402188 1C 10 ADDS R0, R2, #0 0D40218A 43 58 MULS R0, R3 0D40218C 49 36 LDR R1, =0x2710 0D40218E F0 01 FE 1B BL sub_D403DC8 0D402192 4B 36 LDR R3, =0xD8B4026 0D402194 1E 46 SUBS R6, R0, #1 0D402196 80 1E STRH R6, [R3] 0D402198 9B 01 LDR R3, [SP,#0x30+var_2C] 0D40219A 2B 01 CMP R3, #1 0D40219C D1 00 BNE loc_D4021A0 0D40219E E0 7B B loc_D402298 0D4021A0 ; --------------------------------------------------------------------------- 0D4021A0 loc_D4021A0 ; CODE XREF: init_dram+878j 0D4021A0 20 18 MOVS R0, #0x18 0D4021A2 21 00 MOVS R1, #0 0D4021A4 F0 00 F9 66 BL d8b4_stuff_3 0D4021A8 20 19 MOVS R0, #0x19 0D4021AA 21 01 MOVS R1, #1 0D4021AC F0 00 F9 62 BL d8b4_stuff_3 0D4021B0 9A 02 LDR R2, [SP,#0x30+var_28] 0D4021B2 23 27 MOVS R3, #0x27 0D4021B4 21 0A MOVS R1, #0xA 0D4021B6 1C 10 ADDS R0, R2, #0 0D4021B8 43 58 MULS R0, R3 0D4021BA F0 01 FE 05 BL sub_D403DC8 0D4021BE 1C 06 ADDS R6, R0, #0 0D4021C0 1C 31 ADDS R1, R6, #0 0D4021C2 48 2B LDR R0, =0x113 0D4021C4 F0 00 F9 36 BL d8b4_stuff_1 0D4021C8 loc_D4021C8 ; CODE XREF: sub_D402280+1Cj 0D4021C8 48 2A LDR R0, =0x165 0D4021CA 21 29 MOVS R1, #0x29 0D4021CC F0 00 F9 32 BL d8b4_stuff_1 0D4021D0 20 B2 MOVS R0, #0xB2 0D4021D2 1C 29 ADDS R1, R5, #0 0D4021D4 00 40 LSLS R0, R0, #1 0D4021D6 F0 00 F9 2D BL d8b4_stuff_1 0D4021DA 48 26 LDR R0, =0x165 0D4021DC 21 2B MOVS R1, #0x2B 0D4021DE F0 00 F9 29 BL d8b4_stuff_1 0D4021E2 20 B2 MOVS R0, #0xB2 0D4021E4 1C 21 ADDS R1, R4, #0 0D4021E6 00 40 LSLS R0, R0, #1 0D4021E8 F0 00 F9 24 BL d8b4_stuff_1 0D4021EC F0 00 F9 AE BL get_stack_ptr_maybe 0D4021F0 02 23 LSLS R3, R4, #8 0D4021F2 19 5B ADDS R3, R3, R5 0D4021F4 B0 03 ADD SP, SP, #0xC 0D4021F6 60 03 STR R3, [R0] 0D4021F8 BC 78 POP {R3-R6} 0D4021FA 46 98 MOV R8, R3 0D4021FC 46 A1 MOV R9, R4 0D4021FE 46 AA MOV R10, R5 0D402200 46 B3 MOV R11, R6 0D402202 BC F0 POP {R4-R7} 0D402204 BC 01 POP {R0} 0D402206 47 00 BX R0 0D402206 ; End of function init_dram 0D402208 ; =============== S U B R O U T I N E ======================================= 0D402208 sub_D402208 ; CODE XREF: init_dram+32j 0D402208 20 18 MOVS R0, #0x18 0D40220A 21 00 MOVS R1, #0 0D40220C F0 00 F9 32 BL d8b4_stuff_3 0D402210 20 19 MOVS R0, #0x19 0D402212 21 00 MOVS R1, #0 0D402214 F0 00 F9 2E BL d8b4_stuff_3 0D402218 20 17 MOVS R0, #0x17 0D40221A 21 00 MOVS R1, #0 0D40221C F0 00 F9 2A BL d8b4_stuff_3 0D402220 20 0A MOVS R0, #0xA 0D402222 F0 00 F9 5B BL delay_0 0D402226 F7 FF FB 98 BL loc_D40195A 0D402226 ; End of function sub_D402208 0D40222A ; =============== S U B R O U T I N E ======================================= 0D40222A sub_D40222A ; CODE XREF: init_dram+196j 0D40222A arg_0 = 0 0D40222A 20 48 MOVS R0, #0x48 0D40222C 49 12 LDR R1, =0xD09 0D40222E F0 00 F9 21 BL d8b4_stuff_3 0D402232 20 32 MOVS R0, #0x32 0D402234 F0 00 F9 52 BL delay_0 0D402238 98 00 LDR R0, [SP,#arg_0] 0D40223A 28 01 CMP R0, #1 0D40223C D0 00 BEQ loc_D402240 0D40223E E4 48 B loc_D401AD2 0D402240 ; --------------------------------------------------------------------------- 0D402240 loc_D402240 ; CODE XREF: init_dram+1ACj 0D402240 ; sub_D40222A+12j 0D402240 49 0E LDR R1, =0x509 0D402242 20 48 MOVS R0, #0x48 0D402244 E4 47 B loc_D401AD6 0D402244 ; --------------------------------------------------------------------------- 0D402246 00 00 ALIGN 4 0D402248 00 00 FF FF off_D402248 DCD 0xFFFF ; DATA XREF: init_dram+560r 0D402248 ; init_dram+738r 0D402248 ; init_dram+7C8r ... 0D40224C 00 00 01 61 dword_D40224C DCD 0x161 ; DATA XREF: init_dram+566r 0D40224C ; init_dram+56Er 0D40224C ; init_dram+578r ... 0D402250 00 00 28 82 off_D402250 DCD 0x2882 ; DATA XREF: init_dram+588r 0D402250 ; init_dram+5B0r 0D402250 ; init_dram+60Ar ... 0D402254 00 00 2C 82 off_D402254 DCD 0x2C82 ; DATA XREF: init_dram+5D8r 0D402254 ; init_dram+632r 0D402258 00 00 09 03 dword_D402258 DCD 0x903 ; DATA XREF: init_dram+68Cr 0D402258 ; init_dram+6B4r 0D402258 ; init_dram+794r 0D40225C 00 00 01 0B dword_D40225C DCD 0x10B ; DATA XREF: init_dram+724r 0D402260 00 00 28 8A off_D402260 DCD 0x288A ; DATA XREF: init_dram+764r 0D402264 0D 8B 40 00 dword_D402264 DCD 0xD8B4000 ; DATA XREF: init_dram+83Cr 0D402268 00 00 27 10 off_D402268 DCD 0x2710 ; DATA XREF: init_dram+868r 0D40226C 0D 8B 40 26 dword_D40226C DCD 0xD8B4026 ; DATA XREF: init_dram+86Er 0D402270 00 00 01 13 dword_D402270 DCD 0x113 ; DATA XREF: init_dram+89Er 0D402274 00 00 01 65 dword_D402274 DCD 0x165 ; DATA XREF: init_dram:loc_D4021C8r 0D402274 ; init_dram+8B6r 0D402278 00 00 0D 09 dword_D402278 DCD 0xD09 ; DATA XREF: sub_D40222A+2r 0D40227C 00 00 05 09 dword_D40227C DCD 0x509 ; DATA XREF: sub_D40222A:loc_D402240r 0D40227C ; End of function sub_D40222A 0D402280 ; =============== S U B R O U T I N E ======================================= 0D402280 sub_D402280 ; CODE XREF: init_dram+AAj 0D402280 23 FA 00 9B MOVLS R3, 0x3E8 0D402284 45 9A CMP R10, R3 0D402286 D9 29 BLS loc_D4022DC 0D402288 23 00 MOVS R3, #0 0D40228A 22 01 MOVS R2, #1 0D40228C 46 91 MOV R9, R2 0D40228E 46 98 MOV R8, R3 0D402290 46 9B MOV R11, R3 0D402292 1E 47 SUBS R7, R0, #1 0D402294 F7 FF FB BB BL loc_D401A0E 0D402298 ; --------------------------------------------------------------------------- 0D402298 loc_D402298 ; CODE XREF: init_dram+87Aj 0D402298 F0 00 F8 8A BL sub_D4023B0 0D40229C E7 94 B loc_D4021C8 0D40229E ; --------------------------------------------------------------------------- 0D40229E loc_D40229E ; CODE XREF: init_dram+760j 0D40229E 20 B0 MOVS R0, #0xB0 0D4022A0 49 27 LDR R1, =0x288E 0D4022A2 00 40 LSLS R0, R0, #1 0D4022A4 E6 F2 B loc_D40208C 0D4022A6 ; --------------------------------------------------------------------------- 0D4022A6 loc_D4022A6 ; CODE XREF: init_dram+6FAj 0D4022A6 20 18 MOVS R0, #0x18 0D4022A8 21 01 MOVS R1, #1 0D4022AA F0 00 F8 E3 BL d8b4_stuff_3 0D4022AE 20 05 MOVS R0, #5 0D4022B0 loc_D4022B0 0D4022B0 F0 00 F9 14 BL delay_0 0D4022B4 20 17 MOVS R0, #0x17 0D4022B6 E6 BB B loc_D402030 0D4022B8 ; --------------------------------------------------------------------------- 0D4022B8 loc_D4022B8 ; CODE XREF: init_dram+44Cj 0D4022B8 20 3A MOVS R0, #0x3A 0D4022BA 49 22 LDR R1, =0x800F 0D4022BC F0 00 F8 DA BL d8b4_stuff_3 0D4022C0 20 3B MOVS R0, #0x3B 0D4022C2 21 07 MOVS R1, #7 0D4022C4 F0 00 F8 D6 BL d8b4_stuff_3 0D4022C8 20 3C MOVS R0, #0x3C 0D4022CA 49 1E LDR R1, =0x800F 0D4022CC F0 00 F8 D2 BL d8b4_stuff_3 0D4022D0 20 3D MOVS R0, #0x3D 0D4022D2 21 07 MOVS R1, #7 0D4022D4 E5 5B B loc_D401D8E 0D4022D6 ; --------------------------------------------------------------------------- 0D4022D6 loc_D4022D6 ; CODE XREF: init_dram+1F8j 0D4022D6 49 1C LDR R1, =0x109 0D4022D8 20 48 MOVS R0, #0x48 0D4022DA E4 22 B loc_D401B22 0D4022DC ; --------------------------------------------------------------------------- 0D4022DC loc_D4022DC ; CODE XREF: sub_D402280+6j 0D4022DC 22 00 MOVS R2, #0 0D4022DE 23 04 MOVS R3, #4 0D4022E0 46 91 MOV R9, R2 0D4022E2 46 98 MOV R8, R3 0D4022E4 46 93 MOV R11, R2 0D4022E6 F7 FF FB 90 BL loc_D401A0A 0D4022EA loc_D4022EA ; CODE XREF: init_dram+7BCj 0D4022EA 20 B0 00 40 MOVLS R0, 0x160 0D4022EE 49 17 LDR R1, =0x903 0D4022F0 F0 00 F8 A0 BL d8b4_stuff_1 0D4022F4 48 16 LDR R0, =0x161 0D4022F6 21 24 MOVS R1, #0x24 0D4022F8 F0 00 F8 9C BL d8b4_stuff_1 0D4022FC 48 14 LDR R0, =0x161 0D4022FE 21 25 MOVS R1, #0x25 0D402300 F0 00 F8 98 BL d8b4_stuff_1 0D402304 48 12 LDR R0, =0x161 0D402306 21 24 MOVS R1, #0x24 0D402308 F0 00 F8 94 BL d8b4_stuff_1 0D40230C 20 01 MOVS R0, #1 0D40230E F0 00 F8 E5 BL delay_0 0D402312 E6 E6 B loc_D4020E2 0D402312 ; End of function sub_D402280 0D402314 ; =============== S U B R O U T I N E ======================================= 0D402314 sub_D402314 ; CODE XREF: init_dram+78Ej 0D402314 20 B0 00 40 MOVLS R0, 0x160 0D402318 49 09 LDR R1, =0x288E 0D40231A F0 00 F8 8B BL d8b4_stuff_1 0D40231E 48 0C LDR R0, =0x161 0D402320 21 24 MOVS R1, #0x24 0D402322 F0 00 F8 87 BL d8b4_stuff_1 0D402326 48 0A LDR R0, =0x161 0D402328 21 25 MOVS R1, #0x25 0D40232A F0 00 F8 83 BL d8b4_stuff_1 0D40232E 48 08 LDR R0, =0x161 0D402330 21 24 MOVS R1, #0x24 0D402332 F0 00 F8 7F BL d8b4_stuff_1 0D402336 20 01 MOVS R0, #1 0D402338 F0 00 F8 D0 BL delay_0 0D40233C E6 BA B loc_D4020B4 0D40233C ; --------------------------------------------------------------------------- 0D40233E 00 00 ALIGN 0x10 0D402340 00 00 28 8E off_D402340 DCD 0x288E ; DATA XREF: sub_D402280+20r 0D402340 ; sub_D402314+4r 0D402344 00 00 80 0F off_D402344 DCD 0x800F ; DATA XREF: sub_D402280+3Ar 0D402344 ; sub_D402280+4Ar 0D402348 00 00 01 09 off_D402348 DCD 0x109 ; DATA XREF: sub_D402280:loc_D4022D6r 0D40234C 00 00 09 03 off_D40234C DCD 0x903 ; DATA XREF: sub_D402280+6Er 0D402350 00 00 01 61 off_D402350 DCD 0x161 ; DATA XREF: sub_D402280+74r 0D402350 ; sub_D402280+7Cr 0D402350 ; sub_D402280+84r ... 0D402350 ; End of function sub_D402314 0D402354 ; =============== S U B R O U T I N E ======================================= 0D402354 call_init_dram ; CODE XREF: boot1_main+3Ap 0D402354 var_18 = -0x18 0D402354 var_14 = -0x14 0D402354 var_10 = -0x10 0D402354 B5 30 PUSH {R4,R5,LR} 0D402356 B0 83 SUB SP, SP, #0xC 0D402358 06 00 LSLS R0, R0, #0x18 0D40235A 06 09 LSLS R1, R1, #0x18 0D40235C 0E 04 LSRS R4, R0, #0x18 0D40235E 0E 0D LSRS R5, R1, #0x18 0D402360 A8 02 ADD R0, SP, #0x18+var_10 0D402362 A9 01 ADD R1, SP, #0x18+var_14 0D402364 F7 FF F8 90 BL read_214 0D402368 9B 02 LDR R3, [SP,#0x18+var_10] 0D40236A 2B 00 CMP R3, #0 0D40236C D0 0E BEQ loc_D40238C 0D40236E 20 00 MOVS R0, #0 0D402370 2C 01 CMP R4, #1 0D402372 D0 11 BEQ loc_D402398 0D402374 loc_D402374 ; CODE XREF: call_init_dram+42j 0D402374 23 F3 MOVS R3, #0xF3 0D402376 loc_D402376 ; CODE XREF: call_init_dram+46j 0D402376 90 00 STR R0, [SP,#0x18+var_18] 0D402378 49 08 LDR R1, =0x3E7 0D40237A 1C 18 ADDS R0, R3, #0 0D40237C 1C 22 ADDS R2, R4, #0 0D40237E 1C 2B ADDS R3, R5, #0 0D402380 F7 FF FA D0 BL init_dram 0D402384 B0 03 ADD SP, SP, #0xC 0D402386 BC 30 POP {R4,R5} 0D402388 BC 01 POP {R0} 0D40238A 47 00 BX R0 0D40238C ; --------------------------------------------------------------------------- 0D40238C loc_D40238C ; CODE XREF: call_init_dram+18j 0D40238C F0 00 F8 D8 BL read_6024 0D402390 07 40 LSLS R0, R0, #0x1D 0D402392 0F C0 LSRS R0, R0, #0x1F 0D402394 2C 01 CMP R4, #1 0D402396 D1 ED BNE loc_D402374 0D402398 loc_D402398 ; CODE XREF: call_init_dram+1Ej 0D402398 23 A2 MOVS R3, #0xA2 0D40239A E7 EC B loc_D402376 0D40239A ; --------------------------------------------------------------------------- 0D40239C 00 00 03 E7 off_D40239C DCD 0x3E7 ; DATA XREF: call_init_dram+24r 0D40239C ; End of function call_init_dram 0D4023A0 ; =============== S U B R O U T I N E ======================================= 0D4023A0 sub_D4023A0 0D4023A0 B5 00 PUSH {LR} 0D4023A2 20 80 00 40 MOVLS R0, 0x100 0D4023A6 21 01 MOVS R1, #1 0D4023A8 F0 00 F8 44 BL d8b4_stuff_1 0D4023AC BC 01 POP {R0} 0D4023AE 47 00 BX R0 0D4023AE ; End of function sub_D4023A0 0D4023B0 ; =============== S U B R O U T I N E ======================================= 0D4023B0 sub_D4023B0 ; CODE XREF: sub_D402280:loc_D402298p 0D4023B0 B5 00 PUSH {LR} 0D4023B2 48 16 LDR R0, =0x10B 0D4023B4 21 07 MOVS R1, #7 0D4023B6 F0 00 F8 3D BL d8b4_stuff_1 0D4023BA 20 15 MOVS R0, #0x15 0D4023BC 21 00 MOVS R1, #0 0D4023BE F0 00 F8 59 BL d8b4_stuff_3 0D4023C2 20 18 MOVS R0, #0x18 0D4023C4 21 01 MOVS R1, #1 0D4023C6 F0 00 F8 55 BL d8b4_stuff_3 0D4023CA 20 19 MOVS R0, #0x19 0D4023CC 21 00 MOVS R1, #0 0D4023CE F0 00 F8 51 BL d8b4_stuff_3 0D4023D2 20 4A MOVS R0, #0x4A 0D4023D4 21 0E MOVS R1, #0xE 0D4023D6 F0 00 F8 4D BL d8b4_stuff_3 0D4023DA 20 0F MOVS R0, #0xF 0D4023DC 21 08 MOVS R1, #8 0D4023DE F0 00 F8 49 BL d8b4_stuff_3 0D4023E2 20 03 MOVS R0, #3 0D4023E4 21 0E MOVS R1, #0xE 0D4023E6 F0 00 F8 45 BL d8b4_stuff_3 0D4023EA 21 0E MOVS R1, #0xE 0D4023EC 20 49 MOVS R0, #0x49 0D4023EE F0 00 F8 41 BL d8b4_stuff_3 0D4023F2 20 02 MOVS R0, #2 0D4023F4 F0 00 F8 72 BL delay_0 0D4023F8 20 49 MOVS R0, #0x49 0D4023FA 21 0F MOVS R1, #0xF 0D4023FC F0 00 F8 3A BL d8b4_stuff_3 0D402400 20 02 MOVS R0, #2 0D402402 F0 00 F8 6B BL delay_0 0D402406 BC 01 POP {R0} 0D402408 47 00 BX R0 0D402408 ; --------------------------------------------------------------------------- 0D40240A 00 00 ALIGN 4 0D40240C 00 00 01 0B off_D40240C DCD 0x10B ; DATA XREF: sub_D4023B0+2r 0D40240C ; End of function sub_D4023B0 0D402410 ; =============== S U B R O U T I N E ======================================= 0D402410 write_to_d8b4 ; CODE XREF: d8b4_stuff_1+Ap 0D402410 ; d8b4_stuff_1+18p 0D402410 ; d8b4_stuff_2+6p 0D402410 4B 02 LDR R3, =0xD8B4000 0D402412 00 40 LSLS R0, R0, #1 0D402414 18 C0 ADDS R0, R0, R3 0D402416 80 01 STRH R1, [R0] 0D402418 47 70 BX LR 0D402418 ; --------------------------------------------------------------------------- 0D40241A 00 00 ALIGN 4 0D40241C 0D 8B 40 00 dword_D40241C DCD 0xD8B4000 ; DATA XREF: write_to_d8b4r 0D40241C ; End of function write_to_d8b4 0D402420 ; =============== S U B R O U T I N E ======================================= 0D402420 read_from_d8b4 ; CODE XREF: d8b4_stuff_1+10p 0D402420 ; d8b4_stuff_2+Cp 0D402420 ; d8b4_stuff_2+12p 0D402420 4B 03 LDR R3, =0xD8B4000 0D402422 00 40 LSLS R0, R0, #1 0D402424 18 C0 ADDS R0, R0, R3 0D402426 88 00 LDRH R0, [R0] 0D402428 04 00 LSLS R0, R0, #0x10 0D40242A 0C 00 LSRS R0, R0, #0x10 0D40242C 47 70 BX LR 0D40242C ; --------------------------------------------------------------------------- 0D40242E 00 00 ALIGN 0x10 0D402430 0D 8B 40 00 dword_D402430 DCD 0xD8B4000 ; DATA XREF: read_from_d8b4r 0D402430 ; End of function read_from_d8b4 0D402434 ; =============== S U B R O U T I N E ======================================= 0D402434 d8b4_stuff_1 ; CODE XREF: init_dram+174p 0D402434 ; init_dram+184p 0D402434 ; init_dram+220p ... 0D402434 B5 10 PUSH {R4,LR} 0D402436 1C 03 ADDS R3, R0, #0 0D402438 1C 0C ADDS R4, R1, #0 0D40243A 20 3A MOVS R0, #0x3A 0D40243C 1C 19 ADDS R1, R3, #0 0D40243E F7 FF FF E7 BL write_to_d8b4 0D402442 20 3A MOVS R0, #0x3A 0D402444 F7 FF FF EC BL read_from_d8b4 0D402448 20 3B MOVS R0, #0x3B 0D40244A 1C 21 ADDS R1, R4, #0 0D40244C F7 FF FF E0 BL write_to_d8b4 0D402450 BC 10 POP {R4} 0D402452 BC 01 POP {R0} 0D402454 47 00 BX R0 0D402454 ; End of function d8b4_stuff_1 0D402454 ; --------------------------------------------------------------------------- 0D402456 00 00 ALIGN 4 0D402458 ; =============== S U B R O U T I N E ======================================= 0D402458 d8b4_stuff_2 ; CODE XREF: d8b4_stuff_3+12p 0D402458 ; sub_D4024A0+Ep 0D402458 ; sub_D4024A0+16p 0D402458 B5 00 PUSH {LR} 0D40245A 1C 01 ADDS R1, R0, #0 0D40245C 20 3A MOVS R0, #0x3A 0D40245E F7 FF FF D7 BL write_to_d8b4 0D402462 20 3A MOVS R0, #0x3A 0D402464 F7 FF FF DC BL read_from_d8b4 0D402468 20 3B MOVS R0, #0x3B 0D40246A F7 FF FF D9 BL read_from_d8b4 0D40246E BC 02 POP {R1} 0D402470 47 08 BX R1 0D402470 ; End of function d8b4_stuff_2 0D402470 ; --------------------------------------------------------------------------- 0D402472 00 00 ALIGN 4 0D402474 ; =============== S U B R O U T I N E ======================================= 0D402474 d8b4_stuff_3 ; CODE XREF: init_dram+18Cp 0D402474 ; init_dram+19Cp 0D402474 ; init_dram:loc_D401AD6p ... 0D402474 B5 30 PUSH {R4,R5,LR} 0D402476 4C 09 LDR R4, =0x163 0D402478 1C 03 ADDS R3, R0, #0 0D40247A 1C 0D ADDS R5, R1, #0 0D40247C 1C 20 ADDS R0, R4, #0 0D40247E 1C 19 ADDS R1, R3, #0 0D402480 F7 FF FF D8 BL d8b4_stuff_1 0D402484 1C 20 ADDS R0, R4, #0 0D402486 F7 FF FF E7 BL d8b4_stuff_2 0D40248A 20 B1 MOVS R0, #0xB1 0D40248C 1C 29 ADDS R1, R5, #0 0D40248E 00 40 LSLS R0, R0, #1 0D402490 F7 FF FF D0 BL d8b4_stuff_1 0D402494 BC 30 POP {R4,R5} 0D402496 BC 01 POP {R0} 0D402498 47 00 BX R0 0D402498 ; --------------------------------------------------------------------------- 0D40249A 00 00 ALIGN 4 0D40249C 00 00 01 63 off_D40249C DCD 0x163 ; DATA XREF: d8b4_stuff_3+2r 0D40249C ; End of function d8b4_stuff_3 0D4024A0 ; =============== S U B R O U T I N E ======================================= 0D4024A0 sub_D4024A0 ; CODE XREF: init_dram+476p 0D4024A0 ; init_dram+47Ep 0D4024A0 ; init_dram+486p ... 0D4024A0 B5 10 PUSH {R4,LR} 0D4024A2 4C 07 LDR R4, =0x163 0D4024A4 1C 01 ADDS R1, R0, #0 0D4024A6 1C 20 ADDS R0, R4, #0 0D4024A8 F7 FF FF C4 BL d8b4_stuff_1 0D4024AC 1C 20 ADDS R0, R4, #0 0D4024AE F7 FF FF D3 BL d8b4_stuff_2 0D4024B2 20 B1 00 40 MOVLS R0, 0x162 0D4024B6 F7 FF FF CF BL d8b4_stuff_2 0D4024BA BC 10 POP {R4} 0D4024BC BC 02 POP {R1} 0D4024BE 47 08 BX R1 0D4024BE ; --------------------------------------------------------------------------- 0D4024C0 00 00 01 63 off_D4024C0 DCD 0x163 ; DATA XREF: sub_D4024A0+2r 0D4024C0 ; End of function sub_D4024A0 0D4024C4 ; =============== S U B R O U T I N E ======================================= 0D4024C4 sub_D4024C4 0D4024C4 23 D8 05 1B MOVLS R3, 0xD800000 0D4024C8 18 C0 ADDS R0, R0, R3 0D4024CA 68 00 LDR R0, [R0] 0D4024CC 47 70 BX LR 0D4024CC ; End of function sub_D4024C4 0D4024CC ; --------------------------------------------------------------------------- 0D4024CE 00 00 ALIGN 0x10 0D4024D0 ; =============== S U B R O U T I N E ======================================= 0D4024D0 sub_D4024D0 0D4024D0 23 D8 05 1B MOVLS R3, 0xD800000 0D4024D4 18 C0 ADDS R0, R0, R3 0D4024D6 60 01 STR R1, [R0] 0D4024D8 47 70 BX LR 0D4024D8 ; End of function sub_D4024D0 0D4024D8 ; --------------------------------------------------------------------------- 0D4024DA 46 C0 ALIGN 4 0D4024DC ; =============== S U B R O U T I N E ======================================= 0D4024DC delay_0 ; CODE XREF: call_ahbMemFlush+30p 0D4024DC ; gpio_stuff+32p 0D4024DC ; init_dram+40p ... 0D4024DC B5 00 PUSH {LR} ; default 0D4024DE 4B 16 LDR R3, =dword_D404314 0D4024E0 68 1B LDR R3, [R3] 0D4024E2 2B 00 CMP R3, #0 0D4024E4 D1 10 BNE loc_D402508 0D4024E6 08 83 LSRS R3, R0, #2 0D4024E8 18 1B ADDS R3, R3, R0 0D4024EA 09 82 LSRS R2, R0, #6 0D4024EC loc_D4024EC ; CODE XREF: delay_0+4Aj 0D4024EC 18 98 ADDS R0, R3, R2 0D4024EE 28 01 CMP R0, #1 0D4024F0 D8 00 BHI loc_D4024F4 0D4024F2 20 02 MOVS R0, #2 0D4024F4 loc_D4024F4 ; CODE XREF: delay_0+14j 0D4024F4 49 11 LDR R1, =starlet_timer 0D4024F6 68 0B LDR R3, [R1] 0D4024F8 18 1A ADDS R2, R3, R0 0D4024FA 42 9A CMP R2, R3 0D4024FC D9 14 BLS loc_D402528 0D4024FE loc_D4024FE ; CODE XREF: delay_0+26j 0D4024FE 68 0B LDR R3, [R1] 0D402500 42 93 CMP R3, R2 0D402502 D3 FC BCC loc_D4024FE 0D402504 loc_D402504 ; CODE XREF: delay_0+58j 0D402504 BC 01 POP {R0} 0D402506 47 00 BX R0 0D402508 ; --------------------------------------------------------------------------- 0D402508 loc_D402508 ; CODE XREF: delay_0+8j 0D402508 08 43 LSRS R3, R0, #1 0D40250A 08 82 LSRS R2, R0, #2 0D40250C 18 1B ADDS R3, R3, R0 0D40250E 18 9B ADDS R3, R3, R2 0D402510 08 C2 LSRS R2, R0, #3 0D402512 18 9B ADDS R3, R3, R2 0D402514 09 82 LSRS R2, R0, #6 0D402516 18 9B ADDS R3, R3, R2 0D402518 0A 02 LSRS R2, R0, #8 0D40251A 18 9B ADDS R3, R3, R2 0D40251C 0A 42 LSRS R2, R0, #9 0D40251E 18 9B ADDS R3, R3, R2 0D402520 0A 82 LSRS R2, R0, #0xA 0D402522 18 9B ADDS R3, R3, R2 0D402524 0B 02 LSRS R2, R0, #0xC 0D402526 E7 E1 B loc_D4024EC 0D402528 ; --------------------------------------------------------------------------- 0D402528 loc_D402528 ; CODE XREF: delay_0+20j 0D402528 1C 0B ADDS R3, R1, #0 0D40252A loc_D40252A ; CODE XREF: delay_0+52j 0D40252A ; delay_0+56j 0D40252A 68 18 LDR R0, [R3] 0D40252C 28 00 CMP R0, #0 0D40252E DB FC BLT loc_D40252A 0D402530 42 90 CMP R0, R2 0D402532 D3 FA BCC loc_D40252A 0D402534 E7 E6 B loc_D402504 0D402534 ; --------------------------------------------------------------------------- 0D402536 00 00 ALIGN 4 0D402538 0D 40 43 14 off_D402538 DCD dword_D404314 ; DATA XREF: delay_0+2r 0D40253C 0D 80 00 10 off_D40253C DCD starlet_timer ; DATA XREF: delay_0:loc_D4024F4r 0D40253C ; End of function delay_0 0D402540 ; =============== S U B R O U T I N E ======================================= 0D402540 read_6024 ; CODE XREF: call_init_dram:loc_D40238Cp 0D402540 4B 01 LDR R3, =0xD806024 0D402542 68 18 LDR R0, [R3] 0D402544 47 70 BX LR 0D402544 ; --------------------------------------------------------------------------- 0D402546 00 00 ALIGN 4 0D402548 0D 80 60 24 dword_D402548 DCD 0xD806024 ; DATA XREF: read_6024r 0D402548 ; End of function read_6024 0D40254C ; =============== S U B R O U T I N E ======================================= 0D40254C get_stack_ptr_maybe ; CODE XREF: init_dram+46Ep 0D40254C ; init_dram+8C8p 0D40254C B5 00 PUSH {LR} 0D40254E 4B 0E LDR R3, =mem_mirror_config_reg 0D402550 68 19 LDR R1, [R3] ; R1 = *D800060 0D402552 4B 0E LDR R3, =(dword_D8001C0+0x54) 0D402554 68 1A LDR R2, [R3] ; R2 = *D800214 0D402556 06 12 LSLS R2, R2, #24 0D402558 3B 88 SUBS R3, #0x88 0D40255A 06 89 LSLS R1, R1, #26 0D40255C 0F 12 LSRS R2, R2, #28 ; R2 = (*D800214 & 0xFF) >> 4 0D40255E 68 1B LDR R3, [R3] ; R3 = *D80018C 0D402560 0F C9 LSRS R1, R1, #31 ; R1 = bit 6 of *D800060 0D402562 2A 00 CMP R2, #0 0D402564 D0 02 BEQ loc_D40256C 0D402566 23 00 MOVS R3, #0 0D402568 2B 01 CMP R3, #1 0D40256A D0 06 BEQ never 0D40256C loc_D40256C ; CODE XREF: get_stack_ptr_maybe+18j 0D40256C 29 00 CMP R1, #0 0D40256E D0 02 BEQ return_d40ff00 0D402570 48 07 LDR R0, =0xFFFFFF00 0D402572 loc_D402572 ; CODE XREF: get_stack_ptr_maybe+2Cj 0D402572 ; get_stack_ptr_maybe+34j 0D402572 ; get_stack_ptr_maybe+38j 0D402572 BC 02 POP {R1} 0D402574 47 08 BX R1 0D402576 ; --------------------------------------------------------------------------- 0D402576 return_d40ff00 ; CODE XREF: get_stack_ptr_maybe+22j 0D402576 48 07 LDR R0, =0xD40FF00 0D402578 E7 FB B loc_D402572 0D40257A ; --------------------------------------------------------------------------- 0D40257A never ; CODE XREF: get_stack_ptr_maybe+1Ej 0D40257A 29 00 CMP R1, #0 0D40257C D1 01 BNE loc_D402582 0D40257E 48 06 LDR R0, =0xD417F00 0D402580 E7 F7 B loc_D402572 0D402582 ; --------------------------------------------------------------------------- 0D402582 loc_D402582 ; CODE XREF: get_stack_ptr_maybe+30j 0D402582 48 06 LDR R0, =0xFFFF7F00 0D402584 E7 F5 B loc_D402572 0D402584 ; --------------------------------------------------------------------------- 0D402586 00 00 ALIGN 4 0D402588 0D 80 00 60 off_D402588 DCD mem_mirror_config_reg ; DATA XREF: get_stack_ptr_maybe+2r 0D40258C 0D 80 02 14 off_D40258C DCD dword_D8001C0+0x54 ; DATA XREF: get_stack_ptr_maybe+6r 0D402590 FF FF FF 00 dword_D402590 DCD 0xFFFFFF00 ; DATA XREF: get_stack_ptr_maybe+24r 0D402594 0D 40 FF 00 off_D402594 DCD 0xD40FF00 ; DATA XREF: get_stack_ptr_maybe:return_d40ff00r 0D402598 0D 41 7F 00 dword_D402598 DCD 0xD417F00 ; DATA XREF: get_stack_ptr_maybe+32r 0D40259C FF FF 7F 00 dword_D40259C DCD 0xFFFF7F00 ; DATA XREF: get_stack_ptr_maybe:loc_D402582r 0D40259C ; End of function get_stack_ptr_maybe 0D4025A0 ; =============== S U B R O U T I N E ======================================= 0D4025A0 sub_D4025A0 0D4025A0 4B 01 LDR R3, =dword_D404314 0D4025A2 60 18 STR R0, [R3] 0D4025A4 47 70 BX LR 0D4025A4 ; --------------------------------------------------------------------------- 0D4025A6 00 00 ALIGN 4 0D4025A8 0D 40 43 14 off_D4025A8 DCD dword_D404314 ; DATA XREF: sub_D4025A0r 0D4025A8 ; End of function sub_D4025A0 0D4025AC ; =============== S U B R O U T I N E ======================================= 0D4025AC ; int __cdecl verify_RSA_sig(void *sig, int keylen) 0D4025AC verify_RSA_sig ; CODE XREF: verify_sig_RSA2048+Ep 0D4025AC ; verify_sig_RSA4096+Ep 0D4025AC var_A44 = -0xA44 0D4025AC var_A40 = -0xA40 0D4025AC var_A3C = -0xA3C 0D4025AC var_834 = -0x834 0D4025AC B5 F0 PUSH {R4-R7,LR} 0D4025AE 46 5F MOV R7, R11 0D4025B0 46 56 MOV R6, R10 0D4025B2 46 4D MOV R5, R9 0D4025B4 46 44 MOV R4, R8 0D4025B6 B4 F0 PUSH {R4-R7} 0D4025B8 4C 27 LDR R4, =-0xA20 0D4025BA 44 A5 ADD SP, R4 0D4025BC 90 02 STR R0, [SP,#0xA44+var_A3C] 0D4025BE 1C 0C ADDS R4, R1, #0 0D4025C0 1C 15 ADDS R5, R2, #0 0D4025C2 46 9A MOV R10, R3 0D4025C4 4B 25 LDR R3, =0xA48 0D4025C6 44 6B ADD R3, SP 0D4025C8 68 1E LDR R6, [R3] 0D4025CA 27 C3 00 FF MOVLS R7, 0x618 0D4025CE 44 6F ADD R7, SP 0D4025D0 46 BB MOV R11, R7 0D4025D2 08 B3 LSRS R3, R6, #2 0D4025D4 46 98 MOV R8, R3 0D4025D6 1C 38 ADDS R0, R7, #0 0D4025D8 1C 19 ADDS R1, R3, #0 0D4025DA 1C 22 ADDS R2, R4, #0 0D4025DC 1C 33 ADDS R3, R6, #0 0D4025DE 4C 20 LDR R4, =(rsa1+1) 0D4025E0 47 A0 BLX R4 0D4025E2 4F 20 LDR R7, =0x414 0D4025E4 44 6F ADD R7, SP 0D4025E6 46 B9 MOV R9, R7 0D4025E8 1C 38 ADDS R0, R7, #0 0D4025EA 46 41 MOV R1, R8 0D4025EC 1C 2A ADDS R2, R5, #0 0D4025EE 1C 33 ADDS R3, R6, #0 0D4025F0 47 A0 BLX R4 0D4025F2 AD 84 ADD R5, SP, #0xA44+var_834 0D4025F4 1C 28 ADDS R0, R5, #0 0D4025F6 21 01 MOVS R1, #1 0D4025F8 46 52 MOV R2, R10 0D4025FA 4F 1B LDR R7, =0xA44 0D4025FC 44 6F ADD R7, SP 0D4025FE 68 3B LDR R3, [R7] 0D402600 47 A0 BLX R4 0D402602 23 0C MOVS R3, #0xC 0D402604 44 6B ADD R3, SP 0D402606 46 9A MOV R10, R3 0D402608 46 5F MOV R7, R11 0D40260A 97 00 STR R7, [SP,#0xA44+var_A44] 0D40260C 46 43 MOV R3, R8 0D40260E 93 01 STR R3, [SP,#0xA44+var_A40] 0D402610 46 50 MOV R0, R10 0D402612 46 49 MOV R1, R9 0D402614 1C 2A ADDS R2, R5, #0 0D402616 23 01 MOVS R3, #1 0D402618 4C 14 LDR R4, =rsa2 0D40261A 47 A0 BLX R4 0D40261C 00 F1 LSLS R1, R6, #3 0D40261E 4D 14 LDR R5, =0x81C 0D402620 44 6D ADD R5, SP 0D402622 1C 28 ADDS R0, R5, #0 0D402624 08 C9 LSRS R1, R1, #3 0D402626 46 52 MOV R2, R10 0D402628 46 43 MOV R3, R8 0D40262A 4C 12 LDR R4, =(rsa3+1) 0D40262C 47 A0 BLX R4 0D40262E 19 AD ADDS R5, R5, R6 0D402630 1C 28 ADDS R0, R5, #0 0D402632 38 14 SUBS R0, #0x14 0D402634 99 02 LDR R1, [SP,#0xA44+var_A3C] 0D402636 22 14 MOVS R2, #0x14 0D402638 4B 0F LDR R3, =(strncmp+1) 0D40263A 47 98 BLX R3 0D40263C 28 00 CMP R0, #0 0D40263E D0 00 BEQ loc_D402642 0D402640 20 07 MOVS R0, #7 0D402642 loc_D402642 ; CODE XREF: verify_RSA_sig+92j 0D402642 23 A2 01 1B MOVLS R3, 0xA20 0D402646 44 9D ADD SP, R3 0D402648 BC 78 POP {R3-R6} 0D40264A 46 98 MOV R8, R3 0D40264C 46 A1 MOV R9, R4 0D40264E 46 AA MOV R10, R5 0D402650 46 B3 MOV R11, R6 0D402652 BC F0 POP {R4-R7} 0D402654 BC 02 POP {R1} 0D402656 47 08 BX R1 0D402656 ; --------------------------------------------------------------------------- 0D402658 FF FF F5 E0 dword_D402658 DCD -0xA20 ; DATA XREF: verify_RSA_sig+Cr 0D40265C 00 00 0A 48 off_D40265C DCD 0xA48 ; DATA XREF: verify_RSA_sig+18r 0D402660 0D 40 34 65 off_D402660 DCD rsa1+1 ; DATA XREF: verify_RSA_sig+32r 0D402664 00 00 04 14 off_D402664 DCD 0x414 ; DATA XREF: verify_RSA_sig+36r 0D402668 00 00 0A 44 off_D402668 DCD 0xA44 ; DATA XREF: verify_RSA_sig+4Er 0D40266C 0D 40 30 48 off_D40266C DCD rsa2 ; DATA XREF: verify_RSA_sig+6Cr 0D402670 00 00 08 1C off_D402670 DCD 0x81C ; DATA XREF: verify_RSA_sig+72r 0D402674 0D 40 34 19 off_D402674 DCD rsa3+1 ; DATA XREF: verify_RSA_sig+7Er 0D402678 0D 40 3C 75 off_D402678 DCD strncmp+1 ; DATA XREF: verify_RSA_sig+8Cr 0D402678 ; End of function verify_RSA_sig 0D40267C ; =============== S U B R O U T I N E ======================================= 0D40267C verify_sig_RSA2048 ; CODE XREF: verify_certificate+D0p 0D40267C var_10 = -0x10 0D40267C var_C = -0xC 0D40267C arg_0 = 0 0D40267C B5 10 PUSH {R4,LR} 0D40267E B0 82 SUB SP, SP, #8 0D402680 9C 04 LDR R4, [SP,#0x10+arg_0] 0D402682 94 00 STR R4, [SP,#0x10+var_10] 0D402684 24 80 00 64 MOVLS R4, 0x100 0D402688 94 01 STR R4, [SP,#0x10+var_C] 0D40268A F7 FF FF 8F BL verify_RSA_sig 0D40268E B0 02 ADD SP, SP, #8 0D402690 BC 10 POP {R4} 0D402692 BC 02 POP {R1} 0D402694 47 08 BX R1 0D402694 ; End of function verify_sig_RSA2048 0D402694 ; --------------------------------------------------------------------------- 0D402696 00 00 ALIGN 4 0D402698 ; =============== S U B R O U T I N E ======================================= 0D402698 verify_sig_RSA4096 ; CODE XREF: verify_certificate+B0p 0D402698 var_10 = -0x10 0D402698 var_C = -0xC 0D402698 arg_0 = 0 0D402698 B5 10 PUSH {R4,LR} 0D40269A B0 82 SUB SP, SP, #8 0D40269C 9C 04 LDR R4, [SP,#0x10+arg_0] 0D40269E 94 00 STR R4, [SP,#0x10+var_10] 0D4026A0 24 80 00 A4 MOVLS R4, 0x200 0D4026A4 94 01 STR R4, [SP,#0x10+var_C] 0D4026A6 F7 FF FF 81 BL verify_RSA_sig 0D4026AA B0 02 ADD SP, SP, #8 0D4026AC BC 10 POP {R4} 0D4026AE BC 02 POP {R1} 0D4026B0 47 08 BX R1 0D4026B0 ; End of function verify_sig_RSA4096 0D4026B0 ; --------------------------------------------------------------------------- 0D4026B2 00 00 ALIGN 4 0D4026B4 ; =============== S U B R O U T I N E ======================================= 0D4026B4 rsa4 0D4026B4 var_83C = -0x83C 0D4026B4 var_838 = -0x838 0D4026B4 B5 F0 PUSH {R4-R7,LR} 0D4026B6 46 5F MOV R7, R11 0D4026B8 46 56 MOV R6, R10 0D4026BA 46 4D MOV R5, R9 0D4026BC 46 44 MOV R4, R8 0D4026BE B4 F0 PUSH {R4-R7} 0D4026C0 4C 1F LDR R4, =-0x818 0D4026C2 44 A5 ADD SP, R4 0D4026C4 1C 07 ADDS R7, R0, #0 0D4026C6 46 88 MOV R8, R1 0D4026C8 46 9A MOV R10, R3 0D4026CA 4B 1E LDR R3, =0x83C 0D4026CC 44 6B ADD R3, SP 0D4026CE 68 1D LDR R5, [R3] 0D4026D0 4B 1D LDR R3, =0x614 0D4026D2 44 6B ADD R3, SP 0D4026D4 46 9B MOV R11, R3 0D4026D6 08 AE LSRS R6, R5, #2 0D4026D8 1C 18 ADDS R0, R3, #0 0D4026DA 1C 31 ADDS R1, R6, #0 0D4026DC 1C 2B ADDS R3, R5, #0 0D4026DE 4C 1B LDR R4, =(rsa1+1) 0D4026E0 47 A0 BLX R4 0D4026E2 23 82 00 DB MOVLS R3, 0x410 0D4026E6 44 6B ADD R3, SP 0D4026E8 46 99 MOV R9, R3 0D4026EA 1C 18 ADDS R0, R3, #0 0D4026EC 1C 31 ADDS R1, R6, #0 0D4026EE 46 42 MOV R2, R8 0D4026F0 1C 2B ADDS R3, R5, #0 0D4026F2 47 A0 BLX R4 0D4026F4 23 83 00 9B MOVLS R3, 0x20C 0D4026F8 44 6B ADD R3, SP 0D4026FA 46 98 MOV R8, R3 0D4026FC 1C 18 ADDS R0, R3, #0 0D4026FE 1C 31 ADDS R1, R6, #0 0D402700 46 52 MOV R2, R10 0D402702 1C 2B ADDS R3, R5, #0 0D402704 47 A0 BLX R4 0D402706 23 08 MOVS R3, #8 0D402708 44 6B ADD R3, SP 0D40270A 46 9A MOV R10, R3 0D40270C 46 5B MOV R3, R11 0D40270E 93 00 STR R3, [SP,#0x83C+var_83C] 0D402710 96 01 STR R6, [SP,#0x83C+var_838] 0D402712 46 50 MOV R0, R10 0D402714 46 49 MOV R1, R9 0D402716 46 42 MOV R2, R8 0D402718 1C 33 ADDS R3, R6, #0 0D40271A 4C 0D LDR R4, =rsa2 0D40271C 47 A0 BLX R4 0D40271E 00 ED LSLS R5, R5, #3 0D402720 1C 38 ADDS R0, R7, #0 0D402722 08 E9 LSRS R1, R5, #3 0D402724 46 52 MOV R2, R10 0D402726 1C 33 ADDS R3, R6, #0 0D402728 4C 0A LDR R4, =(rsa3+1) 0D40272A 47 A0 BLX R4 0D40272C 4B 0A LDR R3, =0x818 0D40272E 44 9D ADD SP, R3 0D402730 BC 78 POP {R3-R6} 0D402732 46 98 MOV R8, R3 0D402734 46 A1 MOV R9, R4 0D402736 46 AA MOV R10, R5 0D402738 46 B3 MOV R11, R6 0D40273A BC F0 POP {R4-R7} 0D40273C BC 01 POP {R0} 0D40273E 47 00 BX R0 0D40273E ; --------------------------------------------------------------------------- 0D402740 FF FF F7 E8 dword_D402740 DCD -0x818 ; DATA XREF: rsa4+Cr 0D402744 00 00 08 3C off_D402744 DCD 0x83C ; DATA XREF: rsa4+16r 0D402748 00 00 06 14 off_D402748 DCD 0x614 ; DATA XREF: rsa4+1Cr 0D40274C 0D 40 34 65 off_D40274C DCD rsa1+1 ; DATA XREF: rsa4+2Ar 0D402750 0D 40 30 48 off_D402750 DCD rsa2 ; DATA XREF: rsa4+66r 0D402754 0D 40 34 19 off_D402754 DCD rsa3+1 ; DATA XREF: rsa4+74r 0D402758 00 00 08 18 off_D402758 DCD 0x818 ; DATA XREF: rsa4+78r 0D402758 ; End of function rsa4 0D40275C ; =============== S U B R O U T I N E ======================================= 0D40275C sub_D40275C ; CODE XREF: sub_D402778+48p 0D40275C ; sub_D402810+48p 0D40275C var_4 = -4 0D40275C E5 2D 40 04 STR R4, [SP,#var_4]! 0D402760 E0 83 42 91 UMULL R4, R3, R1, R2 0D402764 E5 80 40 00 STR R4, [R0] 0D402768 E1 A0 40 03 MOV R4, R3 0D40276C E5 80 40 04 STR R4, [R0,#4] 0D402770 E8 BD 00 10 LDMFD SP!, {R4} 0D402774 E1 2F FF 1E BX LR 0D402774 ; End of function sub_D40275C 0D402778 ; =============== S U B R O U T I N E ======================================= 0D402778 ; Attributes: bp-based frame 0D402778 sub_D402778 ; CODE XREF: sub_D402BA0+98p 0D402778 var_30 = -0x30 0D402778 var_2C = -0x2C 0D402778 oldR4 = -0x28 0D402778 oldR5 = -0x24 0D402778 oldR6 = -0x20 0D402778 oldR7 = -0x1C 0D402778 oldR8 = -0x18 0D402778 oldR9 = -0x14 0D402778 oldR10 = -0x10 0D402778 oldR11 = -0xC 0D402778 oldSP = -8 0D402778 oldLR = -4 0D402778 arg_4 = 4 0D402778 E1 A0 C0 0D MOV R12, SP 0D40277C E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D402780 E2 4C B0 04 SUB R11, R12, #4 0D402784 E2 4D D0 08 SUB SP, SP, #8 0D402788 E1 A0 60 00 MOV R6, R0 0D40278C E1 A0 A0 01 MOV R10, R1 0D402790 E1 A0 80 03 MOV R8, R3 0D402794 E5 9B 90 04 LDR R9, [R11,#arg_4] 0D402798 loc_D402798 0D402798 E2 52 70 00 SUBS R7, R2, #0 0D40279C 01 A0 00 07 MOVEQ R0, R7 0D4027A0 0A 00 00 17 BEQ loc_D402804 0D4027A4 E3 A0 50 00 MOV R5, #0 0D4027A8 E1 A0 40 05 MOV R4, R5 0D4027AC E1 55 00 09 CMP R5, R9 0D4027B0 AA 00 00 12 BGE loc_D402800 0D4027B4 loc_D4027B4 ; CODE XREF: sub_D402778+84j 0D4027B4 E2 4B 00 30 SUB R0, R11, #0x30 0D4027B8 E1 A0 10 07 MOV R1, R7 0D4027BC E7 98 21 04 LDR R2, [R8,R4,LSL#2] 0D4027C0 EB FF FF E5 BL sub_D40275C 0D4027C4 E7 9A 31 04 LDR R3, [R10,R4,LSL#2] 0D4027C8 E0 85 30 03 ADD R3, R5, R3 0D4027CC E1 53 00 05 CMP R3, R5 0D4027D0 23 A0 50 00 MOVCS R5, #0 0D4027D4 loc_D4027D4 0D4027D4 33 A0 50 01 MOVCC R5, #1 0D4027D8 E5 1B 20 30 LDR R2, [R11,#var_30] 0D4027DC E0 83 30 02 ADD R3, R3, R2 0D4027E0 E7 86 31 04 STR R3, [R6,R4,LSL#2] 0D4027E4 E1 53 00 02 CMP R3, R2 0D4027E8 32 85 50 01 ADDCC R5, R5, #1 0D4027EC E5 1B 30 2C LDR R3, [R11,#var_2C] 0D4027F0 E0 85 50 03 ADD R5, R5, R3 0D4027F4 E2 84 40 01 ADD R4, R4, #1 0D4027F8 E1 54 00 09 CMP R4, R9 0D4027FC BA FF FF EC BLT loc_D4027B4 0D402800 loc_D402800 ; CODE XREF: sub_D402778+38j 0D402800 E1 A0 00 05 MOV R0, R5 0D402804 loc_D402804 ; CODE XREF: sub_D402778+28j 0D402804 E2 4B D0 28 SUB SP, R11, #0x28 0D402808 E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D40280C E1 2F FF 1E BX LR 0D40280C ; End of function sub_D402778 0D402810 ; =============== S U B R O U T I N E ======================================= 0D402810 ; Attributes: bp-based frame 0D402810 sub_D402810 ; CODE XREF: rsa5+15Cp 0D402810 var_30 = -0x30 0D402810 var_2C = -0x2C 0D402810 oldR4 = -0x28 0D402810 oldR5 = -0x24 0D402810 oldR6 = -0x20 0D402810 oldR7 = -0x1C 0D402810 oldR8 = -0x18 0D402810 oldR9 = -0x14 0D402810 oldR10 = -0x10 0D402810 oldR11 = -0xC 0D402810 oldSP = -8 0D402810 oldLR = -4 0D402810 arg_4 = 4 0D402810 E1 A0 C0 0D MOV R12, SP 0D402814 E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D402818 E2 4C B0 04 SUB R11, R12, #4 0D40281C E2 4D D0 08 SUB SP, SP, #8 0D402820 E1 A0 60 00 MOV R6, R0 0D402824 E1 A0 A0 01 MOV R10, R1 0D402828 E1 A0 80 03 MOV R8, R3 0D40282C E5 9B 90 04 LDR R9, [R11,#arg_4] 0D402830 E2 52 70 00 SUBS R7, R2, #0 0D402834 01 A0 00 07 MOVEQ R0, R7 0D402838 0A 00 00 1A BEQ loc_D4028A8 0D40283C E3 A0 50 00 MOV R5, #0 0D402840 E1 A0 40 05 MOV R4, R5 0D402844 E1 55 00 09 CMP R5, R9 0D402848 AA 00 00 15 BGE loc_D4028A4 0D40284C loc_D40284C ; CODE XREF: sub_D402810+90j 0D40284C E2 4B 00 30 SUB R0, R11, #0x30 0D402850 E1 A0 10 07 MOV R1, R7 0D402854 E7 98 21 04 LDR R2, [R8,R4,LSL#2] 0D402858 EB FF FF BF BL sub_D40275C 0D40285C E7 9A 31 04 LDR R3, [R10,R4,LSL#2] 0D402860 E0 65 30 03 RSB R3, R5, R3 0D402864 E1 E0 20 05 MVN R2, R5 0D402868 E1 53 00 02 CMP R3, R2 0D40286C 93 A0 50 00 MOVLS R5, #0 0D402870 83 A0 50 01 MOVHI R5, #1 0D402874 E1 A0 20 03 MOV R2, R3 0D402878 E5 1B 30 30 LDR R3, [R11,#var_30] 0D40287C E0 63 20 02 RSB R2, R3, R2 0D402880 E7 86 21 04 STR R2, [R6,R4,LSL#2] 0D402884 E1 E0 30 03 MVN R3, R3 0D402888 E1 52 00 03 CMP R2, R3 0D40288C 82 85 50 01 ADDHI R5, R5, #1 0D402890 E5 1B 30 2C LDR R3, [R11,#var_2C] 0D402894 E0 85 50 03 ADD R5, R5, R3 0D402898 E2 84 40 01 ADD R4, R4, #1 0D40289C E1 54 00 09 CMP R4, R9 0D4028A0 BA FF FF E9 BLT loc_D40284C 0D4028A4 loc_D4028A4 ; CODE XREF: sub_D402810+38j 0D4028A4 E1 A0 00 05 MOV R0, R5 0D4028A8 loc_D4028A8 ; CODE XREF: sub_D402810+28j 0D4028A8 E2 4B D0 28 SUB SP, R11, #0x28 0D4028AC E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D4028B0 E1 2F FF 1E BX LR 0D4028B0 ; End of function sub_D402810 0D4028B4 ; =============== S U B R O U T I N E ======================================= 0D4028B4 ; Attributes: bp-based frame 0D4028B4 sub_D4028B4 ; CODE XREF: rsa5+48p 0D4028B4 ; sub_D403288+28p 0D4028B4 oldR4 = -0x28 0D4028B4 oldR5 = -0x24 0D4028B4 oldR6 = -0x20 0D4028B4 oldR7 = -0x1C 0D4028B4 oldR8 = -0x18 0D4028B4 oldR9 = -0x14 0D4028B4 oldR10 = -0x10 0D4028B4 oldR11 = -0xC 0D4028B4 oldSP = -8 0D4028B4 oldLR = -4 0D4028B4 E3 A0 30 00 MOV R3, #0 0D4028B8 loc_D4028B8 ; CODE XREF: sub_D4028B4+18j 0D4028B8 E3 50 00 00 CMP R0, #0 0D4028BC 0A 00 00 03 BEQ loc_D4028D0 0D4028C0 E2 83 30 01 ADD R3, R3, #1 0D4028C4 E1 A0 00 A0 MOV R0, R0,LSR#1 0D4028C8 E3 53 00 1F CMP R3, #0x1F 0D4028CC DA FF FF F9 BLE loc_D4028B8 0D4028D0 loc_D4028D0 ; CODE XREF: sub_D4028B4+8j 0D4028D0 E1 A0 00 03 MOV R0, R3 0D4028D4 E1 2F FF 1E BX LR 0D4028D4 ; End of function sub_D4028B4 0D4028D8 ; =============== S U B R O U T I N E ======================================= 0D4028D8 ; Attributes: bp-based frame 0D4028D8 rsa6 ; CODE XREF: rsa5+128p 0D4028D8 oldR4 = -0x28 0D4028D8 oldR5 = -0x24 0D4028D8 oldR6 = -0x20 0D4028D8 oldR7 = -0x1C 0D4028D8 oldR8 = -0x18 0D4028D8 oldR9 = -0x14 0D4028D8 oldR10 = -0x10 0D4028D8 oldR11 = -0xC 0D4028D8 oldSP = -8 0D4028D8 oldLR = -4 0D4028D8 E1 A0 C0 0D MOV R12, SP 0D4028DC E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D4028E0 E2 4C B0 04 SUB R11, R12, #4 0D4028E4 E1 A0 90 00 MOV R9, R0 0D4028E8 E1 A0 80 02 MOV R8, R2 0D4028EC E1 A0 68 22 MOV R6, R2,LSR#16 0D4028F0 E1 A0 38 02 MOV R3, R2,LSL#16 0D4028F4 E1 A0 A8 23 MOV R10, R3,LSR#16 0D4028F8 E8 91 00 30 LDMIA R1, {R4,R5} 0D4028FC E3 A0 3C FF+ MOVL R3, 0xFFFF 0D402904 E1 56 00 03 CMP R6, R3 0D402908 01 A0 78 25 MOVEQ R7, R5,LSR#16 0D40290C 0A 00 00 06 BEQ loc_D40292C 0D402910 E1 A0 00 05 MOV R0, R5 0D402914 E2 86 10 01 ADD R1, R6, #1 0D402918 E5 9F 31 38 LDR R3, =(sub_D403DC8+1) 0D40291C E1 A0 E0 0F MOV LR, PC 0D402920 E1 2F FF 13 BX R3 0D402924 E1 A0 08 00 MOV R0, R0,LSL#16 0D402928 E1 A0 78 20 MOV R7, R0,LSR#16 0D40292C loc_D40292C ; CODE XREF: rsa6+34j 0D40292C E0 02 07 9A MUL R2, R10, R7 0D402930 E0 01 07 96 MUL R1, R6, R7 0D402934 E1 A0 38 02 MOV R3, R2,LSL#16 0D402938 E0 63 40 04 RSB R4, R3, R4 0D40293C E1 E0 30 03 MVN R3, R3 0D402940 E1 53 00 04 CMP R3, R4 0D402944 32 45 50 01 SUBCC R5, R5, #1 0D402948 E0 45 58 22 SUB R5, R5, R2,LSR#16 0D40294C E0 61 50 05 RSB R5, R1, R5 0D402950 E1 56 00 05 CMP R6, R5 0D402954 3A 00 00 03 BCC loc_D402968 0D402958 1A 00 00 10 BNE loc_D4029A0 0D40295C E1 A0 38 0A MOV R3, R10,LSL#16 0D402960 E1 53 00 04 CMP R3, R4 0D402964 8A 00 00 0D BHI loc_D4029A0 0D402968 loc_D402968 ; CODE XREF: rsa6+7Cj 0D402968 E1 A0 28 0A MOV R2, R10,LSL#16 0D40296C E1 E0 10 02 MVN R1, R2 0D402970 loc_D402970 ; CODE XREF: rsa6+B8j 0D402970 ; rsa6+C4j 0D402970 E0 62 40 04 RSB R4, R2, R4 0D402974 E1 51 00 04 CMP R1, R4 0D402978 32 45 50 01 SUBCC R5, R5, #1 0D40297C E0 66 50 05 RSB R5, R6, R5 0D402980 E2 87 30 01 ADD R3, R7, #1 0D402984 E1 A0 38 03 MOV R3, R3,LSL#16 0D402988 E1 A0 78 23 MOV R7, R3,LSR#16 0D40298C E1 56 00 05 CMP R6, R5 0D402990 3A FF FF F6 BCC loc_D402970 0D402994 1A 00 00 01 BNE loc_D4029A0 0D402998 E1 52 00 04 CMP R2, R4 0D40299C 9A FF FF F3 BLS loc_D402970 0D4029A0 loc_D4029A0 ; CODE XREF: rsa6+80j 0D4029A0 ; rsa6+8Cj rsa6+BCj 0D4029A0 E3 A0 3C FF+ MOVL R3, 0xFFFF 0D4029A8 E1 56 00 03 CMP R6, R3 0D4029AC 01 A0 38 05 MOVEQ R3, R5,LSL#16 0D4029B0 loc_D4029B0 0D4029B0 01 A0 08 23 MOVEQ R0, R3,LSR#16 0D4029B4 0A 00 00 07 BEQ loc_D4029D8 0D4029B8 E1 A0 08 24 MOV R0, R4,LSR#16 0D4029BC E0 80 08 05 ADD R0, R0, R5,LSL#16 0D4029C0 E2 86 10 01 ADD R1, R6, #1 0D4029C4 E5 9F 30 8C LDR R3, =(sub_D403DC8+1) 0D4029C8 E1 A0 E0 0F MOV LR, PC 0D4029CC E1 2F FF 13 BX R3 0D4029D0 E1 A0 08 00 MOV R0, R0,LSL#16 0D4029D4 E1 A0 08 20 MOV R0, R0,LSR#16 0D4029D8 loc_D4029D8 ; CODE XREF: rsa6+DCj 0D4029D8 E0 02 00 9A MUL R2, R10, R0 0D4029DC E0 01 00 96 MUL R1, R6, R0 0D4029E0 E0 62 40 04 RSB R4, R2, R4 0D4029E4 E1 E0 30 02 MVN R3, R2 0D4029E8 E1 53 00 04 CMP R3, R4 0D4029EC 32 45 50 01 SUBCC R5, R5, #1 0D4029F0 E1 A0 38 01 MOV R3, R1,LSL#16 0D4029F4 E0 63 40 04 RSB R4, R3, R4 0D4029F8 E1 E0 30 03 MVN R3, R3 0D4029FC E1 53 00 04 CMP R3, R4 0D402A00 32 45 50 01 SUBCC R5, R5, #1 0D402A04 E0 45 38 21 SUB R3, R5, R1,LSR#16 0D402A08 E1 A0 50 03 MOV R5, R3 0D402A0C E3 53 00 00 CMP R3, #0 0D402A10 1A 00 00 01 BNE loc_D402A1C 0D402A14 E1 58 00 04 CMP R8, R4 0D402A18 8A 00 00 0A BHI loc_D402A48 0D402A1C loc_D402A1C ; CODE XREF: rsa6+138j 0D402A1C E1 E0 20 08 MVN R2, R8 0D402A20 loc_D402A20 ; CODE XREF: rsa6+164j 0D402A20 ; rsa6+16Cj 0D402A20 E0 68 40 04 RSB R4, R8, R4 0D402A24 E1 52 00 04 CMP R2, R4 0D402A28 32 45 50 01 SUBCC R5, R5, #1 0D402A2C E2 80 30 01 ADD R3, R0, #1 0D402A30 E1 A0 38 03 MOV R3, R3,LSL#16 0D402A34 E1 A0 08 23 MOV R0, R3,LSR#16 0D402A38 E3 55 00 00 CMP R5, #0 0D402A3C 1A FF FF F7 BNE loc_D402A20 0D402A40 E1 58 00 04 CMP R8, R4 0D402A44 9A FF FF F5 BLS loc_D402A20 0D402A48 loc_D402A48 ; CODE XREF: rsa6+140j 0D402A48 E0 80 38 07 ADD R3, R0, R7,LSL#16 0D402A4C E5 89 30 00 STR R3, [R9] 0D402A50 E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D402A54 E1 2F FF 1E BX LR 0D402A54 ; --------------------------------------------------------------------------- 0D402A58 0D 40 3D C9 off_D402A58 DCD sub_D403DC8+1 ; DATA XREF: rsa6+40r 0D402A58 ; rsa6+ECr 0D402A58 ; End of function rsa6 0D402A5C ; =============== S U B R O U T I N E ======================================= 0D402A5C sub_D402A5C ; CODE XREF: sub_D402BA0:loc_D402C68p 0D402A5C ; rsa2+9Cp rsa2+1FCp ... 0D402A5C E3 A0 C0 00 MOV R12, #0 0D402A60 E1 5C 00 02 CMP R12, R2 0D402A64 A1 2F FF 1E BXGE LR 0D402A68 loc_D402A68 ; CODE XREF: sub_D402A5C+1Cj 0D402A68 E7 91 31 0C LDR R3, [R1,R12,LSL#2] 0D402A6C E7 80 31 0C STR R3, [R0,R12,LSL#2] 0D402A70 E2 8C C0 01 ADD R12, R12, #1 0D402A74 E1 5C 00 02 CMP R12, R2 0D402A78 BA FF FF FA BLT loc_D402A68 0D402A7C E1 2F FF 1E BX LR 0D402A7C ; End of function sub_D402A5C 0D402A80 ; =============== S U B R O U T I N E ======================================= 0D402A80 sub_D402A80 ; CODE XREF: sub_D402BA0+34p 0D402A80 ; rsa5+68p 0D402A80 ; rsa5:loc_D402E20p ... 0D402A80 E3 A0 30 00 MOV R3, #0 0D402A84 E1 53 00 01 CMP R3, R1 0D402A88 A1 2F FF 1E BXGE LR 0D402A8C E1 A0 20 03 MOV R2, R3 0D402A90 loc_D402A90 ; CODE XREF: sub_D402A80+1Cj 0D402A90 E7 80 21 03 STR R2, [R0,R3,LSL#2] 0D402A94 E2 83 30 01 ADD R3, R3, #1 0D402A98 E1 53 00 01 CMP R3, R1 0D402A9C BA FF FF FB BLT loc_D402A90 0D402AA0 E1 2F FF 1E BX LR 0D402AA0 ; End of function sub_D402A80 0D402AA4 ; =============== S U B R O U T I N E ======================================= 0D402AA4 sub_D402AA4 ; CODE XREF: sub_D4032C4+BCp 0D402AA4 E9 2D 40 30 STMFD SP!, {R4,R5,LR} 0D402AA8 E1 A0 50 00 MOV R5, R0 0D402AAC E1 A0 40 01 MOV R4, R1 0D402AB0 E1 A0 10 02 MOV R1, R2 0D402AB4 E1 A0 20 03 MOV R2, R3 0D402AB8 E3 A0 00 00 MOV R0, #0 0D402ABC E1 A0 E0 00 MOV LR, R0 0D402AC0 E1 50 00 03 CMP R0, R3 0D402AC4 AA 00 00 0B BGE loc_D402AF8 0D402AC8 loc_D402AC8 ; CODE XREF: sub_D402AA4+50j 0D402AC8 E7 94 31 0E LDR R3, [R4,LR,LSL#2] 0D402ACC E0 90 C0 03 ADDS R12, R0, R3 0D402AD0 27 91 C1 0E LDRCS R12, [R1,LR,LSL#2] 0D402AD4 2A 00 00 03 BCS loc_D402AE8 0D402AD8 E7 91 31 0E LDR R3, [R1,LR,LSL#2] 0D402ADC E0 9C C0 03 ADDS R12, R12, R3 0D402AE0 33 A0 00 00 MOVCC R0, #0 0D402AE4 23 A0 00 01 MOVCS R0, #1 0D402AE8 loc_D402AE8 ; CODE XREF: sub_D402AA4+30j 0D402AE8 E7 85 C1 0E STR R12, [R5,LR,LSL#2] 0D402AEC E2 8E E0 01 ADD LR, LR, #1 0D402AF0 E1 5E 00 02 CMP LR, R2 0D402AF4 BA FF FF F3 BLT loc_D402AC8 0D402AF8 loc_D402AF8 ; CODE XREF: sub_D402AA4+20j 0D402AF8 E8 BD 40 30 LDMFD SP!, {R4,R5,LR} 0D402AFC E1 2F FF 1E BX LR 0D402AFC ; End of function sub_D402AA4 0D402B00 ; =============== S U B R O U T I N E ======================================= 0D402B00 sub_D402B00 ; CODE XREF: rsa5+1B8p 0D402B00 ; sub_D4032C4+130p 0D402B00 E9 2D 40 30 STMFD SP!, {R4,R5,LR} 0D402B04 E1 A0 50 00 MOV R5, R0 0D402B08 E1 A0 40 01 MOV R4, R1 0D402B0C E1 A0 10 02 MOV R1, R2 0D402B10 E1 A0 20 03 MOV R2, R3 0D402B14 E3 A0 00 00 MOV R0, #0 0D402B18 E1 A0 E0 00 MOV LR, R0 0D402B1C E1 50 00 03 CMP R0, R3 0D402B20 loc_D402B20 0D402B20 AA 00 00 12 BGE loc_D402B70 0D402B24 loc_D402B24 ; CODE XREF: sub_D402B00+6Cj 0D402B24 E7 94 31 0E LDR R3, [R4,LR,LSL#2] 0D402B28 E0 60 C0 03 RSB R12, R0, R3 0D402B2C E2 60 34 FF RSB R3, R0, #0xFF000000 0D402B30 E2 83 34 01 ADD R3, R3, #0x1000000 0D402B34 E2 43 30 01 SUB R3, R3, #1 0D402B38 E1 5C 00 03 CMP R12, R3 0D402B3C 87 91 31 0E LDRHI R3, [R1,LR,LSL#2] 0D402B40 loc_D402B40 0D402B40 81 E0 C0 03 MVNHI R12, R3 0D402B44 8A 00 00 05 BHI loc_D402B60 0D402B48 E7 91 31 0E LDR R3, [R1,LR,LSL#2] 0D402B4C E0 63 C0 0C RSB R12, R3, R12 0D402B50 E1 E0 30 03 MVN R3, R3 0D402B54 E1 5C 00 03 CMP R12, R3 0D402B58 93 A0 00 00 MOVLS R0, #0 0D402B5C 83 A0 00 01 MOVHI R0, #1 0D402B60 loc_D402B60 ; CODE XREF: sub_D402B00+44j 0D402B60 E7 85 C1 0E STR R12, [R5,LR,LSL#2] 0D402B64 E2 8E E0 01 ADD LR, LR, #1 0D402B68 E1 5E 00 02 CMP LR, R2 0D402B6C BA FF FF EC BLT loc_D402B24 0D402B70 loc_D402B70 ; CODE XREF: sub_D402B00:loc_D402B20j 0D402B70 E8 BD 40 30 LDMFD SP!, {R4,R5,LR} 0D402B74 locret_D402B74 0D402B74 E1 2F FF 1E BX LR 0D402B74 ; End of function sub_D402B00 0D402B78 ; =============== S U B R O U T I N E ======================================= 0D402B78 ; Attributes: bp-based frame 0D402B78 sub_D402B78 ; CODE XREF: sub_D402BA0+40p 0D402B78 ; sub_D402BA0+50p rsa5+30p ... 0D402B78 oldR4 = -0x28 0D402B78 oldR5 = -0x24 0D402B78 oldR6 = -0x20 0D402B78 oldR7 = -0x1C 0D402B78 oldR8 = -0x18 0D402B78 oldR9 = -0x14 0D402B78 oldR10 = -0x10 0D402B78 oldR11 = -0xC 0D402B78 oldSP = -8 0D402B78 oldLR = -4 0D402B78 E1 A0 20 00 MOV R2, R0 0D402B7C E2 51 00 01 SUBS R0, R1, #1 0D402B80 4A 00 00 04 BMI loc_D402B98 0D402B84 loc_D402B84 ; CODE XREF: sub_D402B78+1Cj 0D402B84 E7 92 31 00 LDR R3, [R2,R0,LSL#2] 0D402B88 E3 53 00 00 CMP R3, #0 0D402B8C 1A 00 00 01 BNE loc_D402B98 0D402B90 E2 50 00 01 SUBS R0, R0, #1 0D402B94 5A FF FF FA BPL loc_D402B84 0D402B98 loc_D402B98 ; CODE XREF: sub_D402B78+8j 0D402B98 ; sub_D402B78+14j 0D402B98 E2 80 00 01 ADD R0, R0, #1 0D402B9C E1 2F FF 1E BX LR 0D402B9C ; End of function sub_D402B78 0D402BA0 ; =============== S U B R O U T I N E ======================================= 0D402BA0 ; Attributes: bp-based frame 0D402BA0 sub_D402BA0 ; CODE XREF: sub_D402FEC+34p 0D402BA0 ; sub_D4032C4+A0p 0D402BA0 var_440 = -0x440 0D402BA0 var_438 = -0x438 0D402BA0 var_434 = -0x434 0D402BA0 oldR4 = -0x28 0D402BA0 oldR5 = -0x24 0D402BA0 oldR6 = -0x20 0D402BA0 oldR7 = -0x1C 0D402BA0 oldR8 = -0x18 0D402BA0 oldR9 = -0x14 0D402BA0 oldR10 = -0x10 0D402BA0 oldR11 = -0xC 0D402BA0 oldSP = -8 0D402BA0 oldLR = -4 0D402BA0 E1 A0 C0 0D MOV R12, SP 0D402BA4 E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D402BA8 E2 4C B0 04 SUB R11, R12, #4 0D402BAC E2 4D DE 41 SUB SP, SP, #0x410 0D402BB0 E2 4D D0 04 SUB SP, SP, #4 0D402BB4 E5 0B 04 34 STR R0, [R11,#var_434] 0D402BB8 E5 0B 14 38 STR R1, [R11,#var_438] 0D402BBC E1 A0 90 02 MOV R9, R2 0D402BC0 E1 A0 A0 03 MOV R10, R3 0D402BC4 E2 4B 0E 42 SUB R0, R11, #0x420 0D402BC8 E2 40 00 08 SUB R0, R0, #8 0D402BCC E2 40 00 08 SUB R0, R0, #8 0D402BD0 E1 A0 10 83 MOV R1, R3,LSL#1 0D402BD4 EB FF FF A9 BL sub_D402A80 0D402BD8 E5 1B 04 38 LDR R0, [R11,#var_438] 0D402BDC E1 A0 10 0A MOV R1, R10 0D402BE0 EB FF FF E4 BL sub_D402B78 0D402BE4 E1 A0 80 00 MOV R8, R0 0D402BE8 E1 A0 00 09 MOV R0, R9 0D402BEC E1 A0 10 0A MOV R1, R10 0D402BF0 EB FF FF E0 BL sub_D402B78 0D402BF4 E1 A0 70 00 MOV R7, R0 0D402BF8 E3 A0 50 00 MOV R5, #0 0D402BFC E1 55 00 08 CMP R5, R8 0D402C00 AA 00 00 13 BGE loc_D402C54 0D402C04 E3 E0 6B 01 MOVL R6, 0xFFFFFBFF 0D402C08 E2 46 60 07 SUB R6, R6, #7 0D402C0C loc_D402C0C ; CODE XREF: sub_D402BA0+B0j 0D402C0C E0 85 30 07 ADD R3, R5, R7 0D402C10 loc_D402C10 0D402C10 E2 4B 20 28 SUB R2, R11, #0x28 0D402C14 E0 82 41 03 ADD R4, R2, R3,LSL#2 0D402C18 E2 4B 30 28 SUB R3, R11, #0x28 0D402C1C E0 83 10 06 ADD R1, R3, R6 0D402C20 E0 81 11 05 ADD R1, R1, R5,LSL#2 0D402C24 E5 1B 34 38 LDR R3, [R11,#var_438] 0D402C28 E7 93 21 05 LDR R2, [R3,R5,LSL#2] 0D402C2C E5 8D 70 00 STR R7, [SP,#0x440+var_440] 0D402C30 E1 A0 00 01 MOV R0, R1 0D402C34 E1 A0 30 09 MOV R3, R9 0D402C38 EB FF FE CE BL sub_D402778 0D402C3C E7 94 30 06 LDR R3, [R4,R6] 0D402C40 E0 80 00 03 ADD R0, R0, R3 0D402C44 E7 84 00 06 STR R0, [R4,R6] 0D402C48 E2 85 50 01 ADD R5, R5, #1 0D402C4C E1 55 00 08 CMP R5, R8 0D402C50 BA FF FF ED BLT loc_D402C0C 0D402C54 loc_D402C54 ; CODE XREF: sub_D402BA0+60j 0D402C54 E5 1B 04 34 LDR R0, [R11,#var_434] 0D402C58 E2 4B 1E 42 SUB R1, R11, #0x420 0D402C5C E2 41 10 08 SUB R1, R1, #8 0D402C60 E2 41 10 08 SUB R1, R1, #8 0D402C64 E1 A0 20 8A MOV R2, R10,LSL#1 0D402C68 loc_D402C68 0D402C68 EB FF FF 7B BL sub_D402A5C 0D402C6C E2 4B D0 28 SUB SP, R11, #0x28 0D402C70 E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D402C74 E1 2F FF 1E BX LR 0D402C74 ; End of function sub_D402BA0 0D402C78 ; =============== S U B R O U T I N E ======================================= 0D402C78 sub_D402C78 ; CODE XREF: rsa5+84p 0D402C78 ; rsa5+A0p 0D402C78 E9 2D 40 70 PUSH.W {R4-R6,LR} 0D402C7C E1 A0 50 00 MOV R5, R0 0D402C80 E1 A0 40 01 MOV R4, R1 0D402C84 E1 A0 10 03 MOV R1, R3 0D402C88 E3 52 00 1F CMP R2, #0x1F 0D402C8C C3 A0 00 00 MOVGT R0, #0 0D402C90 CA 00 00 0D BGT loc_D402CCC 0D402C94 E2 62 60 20 RSB R6, R2, #0x20 0D402C98 E3 A0 00 00 MOV R0, #0 0D402C9C E1 A0 E0 00 MOV LR, R0 0D402CA0 E1 50 00 03 CMP R0, R3 0D402CA4 AA 00 00 08 BGE loc_D402CCC 0D402CA8 loc_D402CA8 ; CODE XREF: sub_D402C78+50j 0D402CA8 E7 94 C1 0E LDR R12, [R4,LR,LSL#2] 0D402CAC E1 80 32 1C ORR R3, R0, R12,LSL R2 0D402CB0 E7 85 31 0E STR R3, [R5,LR,LSL#2] 0D402CB4 E3 52 00 00 CMP R2, #0 0D402CB8 11 A0 06 3C MOVNE R0, R12,LSR R6 0D402CBC 03 A0 00 00 MOVEQ R0, #0 0D402CC0 E2 8E E0 01 ADD LR, LR, #1 0D402CC4 E1 5E 00 01 CMP LR, R1 0D402CC8 BA FF FF F6 BLT loc_D402CA8 0D402CCC loc_D402CCC ; CODE XREF: sub_D402C78+18j 0D402CCC ; sub_D402C78+2Cj 0D402CCC E8 BD 40 70 LDMFD SP!, {R4-R6,LR} 0D402CD0 E1 2F FF 1E BX LR 0D402CD0 ; End of function sub_D402C78 0D402CD4 ; =============== S U B R O U T I N E ======================================= 0D402CD4 sub_D402CD4 ; CODE XREF: rsa5+228p 0D402CD4 E9 2D 40 30 STMFD SP!, {R4,R5,LR} 0D402CD8 E1 A0 40 00 MOV R4, R0 0D402CDC E3 52 00 1F CMP R2, #0x1F 0D402CE0 C3 A0 00 00 MOVGT R0, #0 0D402CE4 CA 00 00 0B BGT loc_D402D18 0D402CE8 E2 62 50 20 RSB R5, R2, #0x20 0D402CEC loc_D402CEC 0D402CEC E3 A0 00 00 MOV R0, #0 0D402CF0 E2 53 C0 01 SUBS R12, R3, #1 0D402CF4 4A 00 00 07 BMI loc_D402D18 0D402CF8 loc_D402CF8 ; CODE XREF: sub_D402CD4+40j 0D402CF8 E7 91 E1 0C LDR LR, [R1,R12,LSL#2] 0D402CFC E1 80 32 3E ORR R3, R0, LR,LSR R2 0D402D00 E7 84 31 0C STR R3, [R4,R12,LSL#2] 0D402D04 E3 52 00 00 CMP R2, #0 0D402D08 11 A0 05 1E MOVNE R0, LR,LSL R5 0D402D0C 03 A0 00 00 MOVEQ R0, #0 0D402D10 E2 5C C0 01 SUBS R12, R12, #1 0D402D14 5A FF FF F7 BPL loc_D402CF8 0D402D18 loc_D402D18 ; CODE XREF: sub_D402CD4+10j 0D402D18 ; sub_D402CD4+20j 0D402D18 E8 BD 40 30 LDMFD SP!, {R4,R5,LR} 0D402D1C E1 2F FF 1E BX LR 0D402D1C ; End of function sub_D402CD4 0D402D20 ; =============== S U B R O U T I N E ======================================= 0D402D20 sub_D402D20 ; CODE XREF: rsa5+1E4p 0D402D20 arg_0 = 0 0D402D20 E2 52 C0 01 SUBS R12, R2, #1 0D402D24 4A 00 00 0D BMI loc_D402D60 0D402D28 loc_D402D28 ; CODE XREF: sub_D402D20+3Cj 0D402D28 E7 90 21 0C LDR R2, [R0,R12,LSL#2] 0D402D2C E7 91 31 0C LDR R3, [R1,R12,LSL#2] 0D402D30 E1 52 00 03 CMP R2, R3 0D402D34 9A 00 LDR R2, [SP,#arg_0] 0D402D36 00 01 LSLS R1, R0, #0 0D402D38 E3 A0 00 01 MOV R0, #1 0D402D3C E1 2F FF 1E BX LR 0D402D40 ; --------------------------------------------------------------------------- 0D402D40 E7 90 21 0C LDR R2, [R0,R12,LSL#2] 0D402D44 E7 91 31 0C LDR R3, [R1,R12,LSL#2] 0D402D48 E1 52 00 03 CMP R2, R3 0D402D4C 2A 00 00 01 BCS loc_D402D58 0D402D50 loc_D402D50 0D402D50 E3 E0 00 00 MOVL R0, 0xFFFFFFFF 0D402D54 E1 2F FF 1E BX LR 0D402D58 ; --------------------------------------------------------------------------- 0D402D58 loc_D402D58 ; CODE XREF: sub_D402D20+2Cj 0D402D58 E2 5C C0 01 SUBS R12, R12, #1 0D402D5C 5A FF FF F1 BPL loc_D402D28 0D402D60 loc_D402D60 ; CODE XREF: sub_D402D20+4j 0D402D60 E3 A0 00 00 MOV R0, #0 0D402D64 E1 2F FF 1E BX LR 0D402D64 ; End of function sub_D402D20 0D402D68 ; =============== S U B R O U T I N E ======================================= 0D402D68 ; Attributes: bp-based frame 0D402D68 rsa5 ; CODE XREF: sub_D402FA0+3Cp 0D402D68 ; sub_D4032C4+84p 0D402D68 var_658 = -0x658 0D402D68 var_650 = -0x650 0D402D68 var_64C = -0x64C 0D402D68 var_648 = -0x648 0D402D68 var_644 = -0x644 0D402D68 var_640 = -0x640 0D402D68 var_63C = -0x63C 0D402D68 oldR4 = -0x28 0D402D68 oldR5 = -0x24 0D402D68 oldR6 = -0x20 0D402D68 oldR7 = -0x1C 0D402D68 oldR8 = -0x18 0D402D68 oldR9 = -0x14 0D402D68 oldR10 = -0x10 0D402D68 oldR11 = -0xC 0D402D68 oldSP = -8 0D402D68 oldLR = -4 0D402D68 arg_4 = 4 0D402D68 arg_8 = 8 0D402D68 E1 A0 C0 0D MOV R12, SP 0D402D6C E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D402D70 E2 4C B0 04 SUB R11, R12, #4 0D402D74 E2 4D DE 62 SUB SP, SP, #0x620 0D402D78 E2 4D D0 0C SUB SP, SP, #0xC 0D402D7C E5 0B 06 40 STR R0, [R11,#var_640] 0D402D80 E5 0B 16 44 STR R1, [R11,#var_644] 0D402D84 E1 A0 90 02 MOV R9, R2 0D402D88 E1 A0 80 03 MOV R8, R3 0D402D8C E5 9B A0 04 LDR R10, [R11,#arg_4] 0D402D90 E1 A0 00 0A MOV R0, R10 0D402D94 E5 9B 10 08 LDR R1, [R11,#arg_8] 0D402D98 EB FF FF 76 BL sub_D402B78 0D402D9C E2 50 70 00 SUBS R7, R0, #0 0D402DA0 0A 00 00 7B BEQ loc_D402F94 0D402DA4 E1 A0 51 07 MOV R5, R7,LSL#2 0D402DA8 E0 85 30 0A ADD R3, R5, R10 0D402DAC E5 13 00 04 LDR R0, [R3,#-4] 0D402DB0 EB FF FE BF BL sub_D4028B4 0D402DB4 E2 60 00 20 RSB R0, R0, #0x20 0D402DB8 E5 0B 06 48 STR R0, [R11,#var_648] 0D402DBC E2 4B 4E 42 SUB R4, R11, #0x420 0D402DC0 E2 44 40 08 SUB R4, R4, #8 0D402DC4 E2 44 40 0C SUB R4, R4, #0xC 0D402DC8 E1 A0 00 04 MOV R0, R4 0D402DCC E1 A0 10 07 MOV R1, R7 0D402DD0 EB FF FF 2A BL sub_D402A80 0D402DD4 E2 4B 20 28 SUB R2, R11, #0x28 0D402DD8 E0 82 61 08 ADD R6, R2, R8,LSL#2 0D402DDC E1 A0 00 04 MOV R0, R4 0D402DE0 E1 A0 10 09 MOV R1, R9 0D402DE4 E5 1B 26 48 LDR R2, [R11,#var_648] 0D402DE8 E1 A0 30 08 MOV R3, R8 0D402DEC EB FF FF A1 BL sub_D402C78 0D402DF0 E5 06 04 0C STR R0, [R6,#-0x40C] 0D402DF4 E2 4B 0E 63 SUB R0, R11, #0x630 0D402DF8 E2 40 00 08 SUB R0, R0, #8 0D402DFC E1 A0 10 0A MOV R1, R10 0D402E00 E5 1B 26 48 LDR R2, [R11,#var_648] 0D402E04 E1 A0 30 07 MOV R3, R7 0D402E08 EB FF FF 9A BL sub_D402C78 0D402E0C E2 4B 30 28 SUB R3, R11, #0x28 0D402E10 E0 85 50 03 ADD R5, R5, R3 0D402E14 E5 15 96 14 LDR R9, [R5,#-0x614] 0D402E18 E5 1B 06 40 LDR R0, [R11,#var_640] 0D402E1C loc_D402E1C 0D402E1C E1 A0 10 08 MOV R1, R8 0D402E20 loc_D402E20 0D402E20 EB FF FF 16 BL sub_D402A80 0D402E24 E0 58 60 07 SUBS R6, R8, R7 0D402E28 4A 00 00 4F BMI loc_D402F6C 0D402E2C E3 E0 2B 01 MOVL R2, 0xFFFFFBFF 0D402E30 E2 42 20 0B SUB R2, R2, #0xB 0D402E34 loc_D402E34 0D402E34 E5 0B 26 4C STR R2, [R11,#var_64C] 0D402E38 E2 4B 30 28 SUB R3, R11, #0x28 0D402E3C E0 83 30 02 ADD R3, R3, R2 0D402E40 E5 0B 36 50 STR R3, [R11,#var_650] 0D402E44 E3 E0 AB 01 MOVL R10, 0xFFFFFBFF 0D402E48 E2 4A A0 0B SUB R10, R10, #0xB 0D402E4C loc_D402E4C ; CODE XREF: rsa5+200j 0D402E4C E3 79 00 01 CMN R9, #1 0D402E50 loc_D402E50 0D402E50 1A 00 00 06 BNE loc_D402E70 0D402E54 E0 86 30 07 ADD R3, R6, R7 0D402E58 E2 4B 20 28 SUB R2, R11, #0x28 0D402E5C E0 82 31 03 ADD R3, R2, R3,LSL#2 0D402E60 E5 1B 26 4C LDR R2, [R11,#var_64C] 0D402E64 E7 93 30 02 LDR R3, [R3,R2] 0D402E68 E5 0B 36 3C STR R3, [R11,#var_63C] 0D402E6C EA 00 00 08 B loc_D402E94 0D402E70 ; --------------------------------------------------------------------------- 0D402E70 loc_D402E70 ; CODE XREF: rsa5:loc_D402E50j 0D402E70 E0 86 10 07 ADD R1, R6, R7 0D402E74 E5 1B 36 50 LDR R3, [R11,#var_650] 0D402E78 E0 83 11 01 ADD R1, R3, R1,LSL#2 0D402E7C E2 4B 0E 63 SUB R0, R11, #0x630 0D402E80 E2 40 00 08 SUB R0, R0, #8 0D402E84 E2 40 00 04 SUB R0, R0, #4 0D402E88 E2 41 10 04 SUB R1, R1, #4 0D402E8C E2 89 20 01 ADD R2, R9, #1 0D402E90 EB FF FE 90 BL rsa6 0D402E94 loc_D402E94 ; CODE XREF: rsa5+104j 0D402E94 E0 86 30 07 ADD R3, R6, R7 0D402E98 E2 4B 20 28 SUB R2, R11, #0x28 0D402E9C E0 82 41 03 ADD R4, R2, R3,LSL#2 0D402EA0 E2 4B 1E 42 SUB R1, R11, #0x420 0D402EA4 E2 41 10 08 SUB R1, R1, #8 0D402EA8 E2 41 10 0C SUB R1, R1, #0xC 0D402EAC E0 81 11 06 ADD R1, R1, R6,LSL#2 0D402EB0 E5 8D 70 00 STR R7, [SP,#0x658+var_658] 0D402EB4 E1 A0 00 01 MOV R0, R1 0D402EB8 E5 1B 26 3C LDR R2, [R11,#var_63C] 0D402EBC E2 4B 3E 63 SUB R3, R11, #0x630 0D402EC0 E2 43 30 08 SUB R3, R3, #8 0D402EC4 EB FF FE 51 BL sub_D402810 0D402EC8 E7 94 30 0A LDR R3, [R4,R10] 0D402ECC E0 60 30 03 RSB R3, R0, R3 0D402ED0 E7 84 30 0A STR R3, [R4,R10] 0D402ED4 E0 86 30 07 ADD R3, R6, R7 0D402ED8 E3 E0 5B 01 MOVL R5, 0xFFFFFBFF 0D402EDC E2 45 50 0B SUB R5, R5, #0xB 0D402EE0 E2 4B 20 28 SUB R2, R11, #0x28 0D402EE4 E0 82 41 03 ADD R4, R2, R3,LSL#2 0D402EE8 E2 4B 30 28 SUB R3, R11, #0x28 0D402EEC E0 83 80 05 ADD R8, R3, R5 0D402EF0 EA 00 00 0E B loc_D402F30 0D402EF4 ; --------------------------------------------------------------------------- 0D402EF4 loc_D402EF4 ; CODE XREF: rsa5+1D0j 0D402EF4 ; rsa5+1ECj 0D402EF4 E5 1B 36 3C LDR R3, [R11,#var_63C] 0D402EF8 E2 83 30 01 ADD R3, R3, #1 0D402EFC E5 0B 36 3C STR R3, [R11,#var_63C] 0D402F00 E2 4B 1E 42 SUB R1, R11, #0x420 0D402F04 E2 41 10 08 SUB R1, R1, #8 0D402F08 E2 41 10 0C SUB R1, R1, #0xC 0D402F0C E0 81 11 06 ADD R1, R1, R6,LSL#2 0D402F10 E1 A0 00 01 MOV R0, R1 0D402F14 E2 4B 2E 63 SUB R2, R11, #0x630 0D402F18 E2 42 20 08 SUB R2, R2, #8 0D402F1C E1 A0 30 07 MOV R3, R7 0D402F20 EB FF FE F6 BL sub_D402B00 0D402F24 E7 94 30 05 LDR R3, [R4,R5] 0D402F28 E0 60 30 03 RSB R3, R0, R3 0D402F2C E7 84 30 05 STR R3, [R4,R5] 0D402F30 loc_D402F30 ; CODE XREF: rsa5+188j 0D402F30 E7 94 30 05 LDR R3, [R4,R5] 0D402F34 E3 53 00 00 CMP R3, #0 0D402F38 1A FF FF ED BNE loc_D402EF4 0D402F3C E0 88 01 06 ADD R0, R8, R6,LSL#2 0D402F40 E2 4B 1E 63 SUB R1, R11, #0x630 0D402F44 E2 41 10 08 SUB R1, R1, #8 0D402F48 E1 A0 20 07 MOV R2, R7 0D402F4C EB FF FF 73 BL sub_D402D20 0D402F50 E3 50 00 00 CMP R0, #0 0D402F54 AA FF FF E6 BGE loc_D402EF4 0D402F58 E2 4B 2D 19 SUB R2, R11, #0x640 0D402F5C E8 92 00 0C LDMIA R2, {R2,R3} 0D402F60 E7 82 31 06 STR R3, [R2,R6,LSL#2] 0D402F64 E2 56 60 01 SUBS R6, R6, #1 0D402F68 5A FF FF B7 BPL loc_D402E4C 0D402F6C loc_D402F6C ; CODE XREF: rsa5+C0j 0D402F6C E5 1B 06 44 LDR R0, [R11,#var_644] 0D402F70 E5 9B 10 08 LDR R1, [R11,#arg_8] 0D402F74 EB FF FE C1 BL sub_D402A80 0D402F78 E5 1B 06 44 LDR R0, [R11,#var_644] 0D402F7C E2 4B 1E 42 SUB R1, R11, #0x420 0D402F80 E2 41 10 08 SUB R1, R1, #8 0D402F84 E2 41 10 0C SUB R1, R1, #0xC 0D402F88 E5 1B 26 48 LDR R2, [R11,#var_648] 0D402F8C E1 A0 30 07 MOV R3, R7 0D402F90 EB FF FF 4F BL sub_D402CD4 0D402F94 loc_D402F94 ; CODE XREF: rsa5+38j 0D402F94 E2 4B D0 28 SUB SP, R11, #0x28 0D402F98 E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D402F9C E1 2F FF 1E BX LR 0D402F9C ; End of function rsa5 0D402FA0 ; =============== S U B R O U T I N E ======================================= 0D402FA0 ; Attributes: bp-based frame 0D402FA0 sub_D402FA0 ; CODE XREF: sub_D402FEC+4Cp 0D402FA0 var_424 = -0x424 0D402FA0 var_420 = -0x420 0D402FA0 oldR4 = -0x10 0D402FA0 oldR11 = -0xC 0D402FA0 oldSP = -8 0D402FA0 oldLR = -4 0D402FA0 arg_4 = 4 0D402FA0 E1 A0 C0 0D MOV R12, SP 0D402FA4 E9 2D D8 10 STMFD SP!, {R4,R11,R12,LR,PC} 0D402FA8 E2 4C B0 04 SUB R11, R12, #4 0D402FAC E2 4D DE 41 SUB SP, SP, #0x410 0D402FB0 E1 A0 C0 00 MOV R12, R0 0D402FB4 E1 A0 E0 01 MOV LR, R1 0D402FB8 E1 A0 40 02 MOV R4, R2 0D402FBC E5 8D 30 00 STR R3, [SP,#0x424+var_424] 0D402FC0 E5 9B 30 04 LDR R3, [R11,#arg_4] 0D402FC4 E5 8D 30 04 STR R3, [SP,#0x424+var_420] 0D402FC8 E2 4B 0E 41 SUB R0, R11, #0x410 0D402FCC E2 40 00 08 SUB R0, R0, #8 0D402FD0 E1 A0 10 0C MOV R1, R12 0D402FD4 E1 A0 20 0E MOV R2, LR 0D402FD8 E1 A0 30 04 MOV R3, R4 0D402FDC EB FF FF 61 BL rsa5 0D402FE0 E2 4B D0 10 SUB SP, R11, #0x10 0D402FE4 E8 9D 68 10 LDMFD SP, {R4,R11,SP,LR} 0D402FE8 E1 2F FF 1E BX LR 0D402FE8 ; End of function sub_D402FA0 0D402FEC ; =============== S U B R O U T I N E ======================================= 0D402FEC ; Attributes: bp-based frame 0D402FEC sub_D402FEC ; CODE XREF: rsa2+C0p 0D402FEC ; rsa2+ECp rsa2+18Cp ... 0D402FEC var_42C = -0x42C 0D402FEC oldR4 = -0x1C 0D402FEC oldR5 = -0x18 0D402FEC oldR6 = -0x14 0D402FEC oldR7 = -0x10 0D402FEC oldR11 = -0xC 0D402FEC oldSP = -8 0D402FEC oldLR = -4 0D402FEC arg_4 = 4 0D402FEC E1 A0 C0 0D MOV R12, SP 0D402FF0 E9 2D D8 F0 STMFD SP!, {R4-R7,R11,R12,LR,PC} 0D402FF4 E2 4C B0 04 SUB R11, R12, #4 0D402FF8 E2 4D DB 01 SUB SP, SP, #0x400 0D402FFC E2 4D D0 0C SUB SP, SP, #0xC 0D403000 E1 A0 60 00 MOV R6, R0 0D403004 E1 A0 70 03 MOV R7, R3 0D403008 E5 9B 50 04 LDR R5, [R11,#arg_4] 0D40300C E2 4B 4E 41 SUB R4, R11, #0x410 0D403010 E2 44 40 0C SUB R4, R4, #0xC 0D403014 E2 44 40 08 SUB R4, R4, #8 0D403018 E1 A0 00 04 MOV R0, R4 0D40301C E1 A0 30 05 MOV R3, R5 0D403020 EB FF FE DE BL sub_D402BA0 0D403024 E5 8D 50 00 STR R5, [SP,#0x42C+var_42C] 0D403028 E1 A0 00 06 MOV R0, R6 0D40302C E1 A0 10 04 MOV R1, R4 0D403030 E1 A0 20 85 MOV R2, R5,LSL#1 0D403034 E1 A0 30 07 MOV R3, R7 0D403038 EB FF FF D8 BL sub_D402FA0 0D40303C E2 4B D0 1C SUB SP, R11, #0x1C 0D403040 E8 9D 68 F0 LDMFD SP, {R4-R7,R11,SP,LR} 0D403044 E1 2F FF 1E BX LR 0D403044 ; End of function sub_D402FEC 0D403048 ; =============== S U B R O U T I N E ======================================= 0D403048 ; Attributes: bp-based frame 0D403048 rsa2 ; CODE XREF: verify_RSA_sig+6Ej 0D403048 ; rsa4+68j 0D403048 ; DATA XREF: verify_RSA_sig:off_D40266Co ... 0D403048 var_860 = -0x860 0D403048 var_858 = -0x858 0D403048 var_854 = -0x854 0D403048 var_850 = -0x850 0D403048 var_84C = -0x84C 0D403048 var_848 = -0x848 0D403048 var_844 = -0x844 0D403048 var_840 = -0x840 0D403048 var_83C = -0x83C 0D403048 var_838 = -0x838 0D403048 oldR4 = -0x28 0D403048 oldR5 = -0x24 0D403048 oldR6 = -0x20 0D403048 oldR7 = -0x1C 0D403048 oldR8 = -0x18 0D403048 oldR9 = -0x14 0D403048 oldR10 = -0x10 0D403048 oldR11 = -0xC 0D403048 oldSP = -8 0D403048 oldLR = -4 0D403048 E1 A0 C0 0D MOV R12, SP 0D40304C E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D403050 E2 4C B0 04 SUB R11, R12, #4 0D403054 E2 4D DE 83 SUB SP, SP, #0x830 0D403058 E2 4D D0 04 SUB SP, SP, #4 0D40305C E5 0B 08 4C STR R0, [R11,#var_84C] 0D403060 E1 A0 50 01 MOV R5, R1 0D403064 E5 0B 28 50 STR R2, [R11,#var_850] 0D403068 E5 0B 38 54 STR R3, [R11,#var_854] 0D40306C E9 9B 06 00 LDMIB R11, {R9,R10} 0D403070 E3 A0 20 00 MOV R2, #0 0D403074 E3 A0 30 01 MOV R3, #1 0D403078 E5 0B 38 48 STR R3, [R11,#var_848] 0D40307C E5 0B 38 44 STR R3, [R11,#var_844] 0D403080 E5 0B 28 40 STR R2, [R11,#var_840] 0D403084 E5 0B 28 3C STR R2, [R11,#var_83C] 0D403088 E5 1B 38 50 LDR R3, [R11,#var_850] 0D40308C E5 93 10 00 LDR R1, [R3] 0D403090 E1 A0 70 02 MOV R7, R2 0D403094 loc_D403094 ; CODE XREF: rsa2+70j 0D403094 E2 01 20 03 AND R2, R1, #3 0D403098 E2 4B 30 28 SUB R3, R11, #0x28 0D40309C E0 83 21 02 ADD R2, R3, R2,LSL#2 0D4030A0 E5 12 38 20 LDR R3, [R2,#-0x820] 0D4030A4 E2 83 30 01 ADD R3, R3, #1 0D4030A8 E5 02 38 20 STR R3, [R2,#-0x820] 0D4030AC E1 A0 11 21 MOV R1, R1,LSR#2 0D4030B0 E2 87 70 01 ADD R7, R7, #1 0D4030B4 E3 57 00 0F CMP R7, #0xF 0D4030B8 DA FF FF F5 BLE loc_D403094 0D4030BC E5 1B 38 3C LDR R3, [R11,#var_83C] 0D4030C0 E3 53 00 00 CMP R3, #0 0D4030C4 13 A0 30 01 MOVNE R3, #1 0D4030C8 15 0B 38 40 STRNE R3, [R11,#var_840] 0D4030CC E2 4B 4E 62 SUB R4, R11, #0x620 0D4030D0 E2 44 40 08 SUB R4, R4, #8 0D4030D4 E2 44 40 0C SUB R4, R4, #0xC 0D4030D8 E1 A0 00 04 MOV R0, R4 0D4030DC E1 A0 10 05 MOV R1, R5 0D4030E0 E1 A0 20 0A MOV R2, R10 0D4030E4 EB FF FE 5C BL sub_D402A5C 0D4030E8 E5 1B 38 40 LDR R3, [R11,#var_840] 0D4030EC E3 53 00 00 CMP R3, #0 0D4030F0 0A 00 00 05 BEQ loc_D40310C 0D4030F4 E5 8D A0 00 STR R10, [SP,#0x860+var_860] 0D4030F8 E2 84 0F 81 ADD R0, R4, #0x204 0D4030FC E1 A0 10 04 MOV R1, R4 0D403100 E1 A0 20 05 MOV R2, R5 0D403104 E1 A0 30 09 MOV R3, R9 0D403108 EB FF FF B7 BL sub_D402FEC 0D40310C loc_D40310C ; CODE XREF: rsa2+A8j 0D40310C E5 1B 38 3C LDR R3, [R11,#var_83C] 0D403110 E3 53 00 00 CMP R3, #0 0D403114 0A 00 00 07 BEQ loc_D403138 0D403118 E5 8D A0 00 STR R10, [SP,#0x860+var_860] 0D40311C E2 4B 0F 8B SUB R0, R11, #0x22C 0D403120 E2 4B 1E 42 SUB R1, R11, #0x420 0D403124 E2 41 10 08 SUB R1, R1, #8 0D403128 E2 41 10 08 SUB R1, R1, #8 0D40312C E1 A0 20 05 MOV R2, R5 0D403130 E1 A0 30 09 MOV R3, R9 0D403134 EB FF FF AC BL sub_D402FEC 0D403138 loc_D403138 ; CODE XREF: rsa2+CCj 0D403138 E2 4B 0E 83 SUB R0, R11, #0x830 0D40313C E2 40 00 08 SUB R0, R0, #8 0D403140 E1 A0 10 0A MOV R1, R10 0D403144 EB FF FE 4D BL sub_D402A80 0D403148 E3 A0 30 01 MOV R3, #1 0D40314C E5 0B 38 38 STR R3, [R11,#var_838] 0D403150 E5 1B 08 50 LDR R0, [R11,#var_850] 0D403154 E5 1B 18 54 LDR R1, [R11,#var_854] 0D403158 EB FF FE 86 BL sub_D402B78 0D40315C E5 0B 08 54 STR R0, [R11,#var_854] 0D403160 E2 50 70 01 SUBS R7, R0, #1 0D403164 4A 00 00 32 BMI loc_D403234 0D403168 loc_D403168 ; CODE XREF: rsa2+1E8j 0D403168 E5 1B 28 50 LDR R2, [R11,#var_850] 0D40316C E7 92 51 07 LDR R5, [R2,R7,LSL#2] 0D403170 E3 A0 80 20 MOV R8, #0x20 0D403174 E5 1B 28 54 LDR R2, [R11,#var_854] 0D403178 E2 42 30 01 SUB R3, R2, #1 0D40317C E1 53 00 07 CMP R3, R7 0D403180 1A 00 00 05 BNE loc_D40319C 0D403184 E1 B0 3F 25 MOVS R3, R5,LSR#30 0D403188 1A 00 00 03 BNE loc_D40319C 0D40318C loc_D40318C ; CODE XREF: rsa2+150j 0D40318C E1 A0 51 05 MOV R5, R5,LSL#2 0D403190 E2 48 80 02 SUB R8, R8, #2 0D403194 E1 B0 2F 25 MOVS R2, R5,LSR#30 0D403198 0A FF FF FB BEQ loc_D40318C 0D40319C loc_D40319C ; CODE XREF: rsa2+138j 0D40319C ; rsa2+140j 0D40319C E3 A0 60 00 MOV R6, #0 0D4031A0 E1 56 00 08 CMP R6, R8 0D4031A4 2A 00 00 20 BCS loc_D40322C 0D4031A8 E2 4B 4E 83 SUB R4, R11, #0x830 0D4031AC E2 44 40 08 SUB R4, R4, #8 0D4031B0 E2 4B 3E 62 SUB R3, R11, #0x620 0D4031B4 E2 43 30 08 SUB R3, R3, #8 0D4031B8 E2 43 30 0C SUB R3, R3, #0xC 0D4031BC E5 0B 38 58 STR R3, [R11,#var_858] 0D4031C0 loc_D4031C0 ; CODE XREF: rsa2+1E0j 0D4031C0 E5 8D A0 00 STR R10, [SP,#0x860+var_860] 0D4031C4 E1 A0 00 04 MOV R0, R4 0D4031C8 E1 A0 10 04 MOV R1, R4 0D4031CC E1 A0 20 04 MOV R2, R4 0D4031D0 E1 A0 30 09 MOV R3, R9 0D4031D4 EB FF FF 84 BL sub_D402FEC 0D4031D8 E5 8D A0 00 STR R10, [SP,#0x860+var_860] 0D4031DC E1 A0 00 04 MOV R0, R4 0D4031E0 E1 A0 10 04 MOV R1, R4 0D4031E4 E1 A0 20 04 MOV R2, R4 0D4031E8 E1 A0 30 09 MOV R3, R9 0D4031EC EB FF FF 7E BL sub_D402FEC 0D4031F0 E1 B0 3F 25 MOVS R3, R5,LSR#30 0D4031F4 0A 00 00 08 BEQ loc_D40321C 0D4031F8 E0 83 23 83 ADD R2, R3, R3,LSL#7 0D4031FC E5 1B 38 58 LDR R3, [R11,#var_858] 0D403200 E0 83 21 02 ADD R2, R3, R2,LSL#2 0D403204 E5 8D A0 00 STR R10, [SP,#0x860+var_860] 0D403208 E1 A0 00 04 MOV R0, R4 0D40320C E1 A0 10 04 MOV R1, R4 0D403210 E2 42 2F 81 SUB R2, R2, #0x204 0D403214 E1 A0 30 09 MOV R3, R9 0D403218 EB FF FF 73 BL sub_D402FEC 0D40321C loc_D40321C ; CODE XREF: rsa2+1ACj 0D40321C E2 86 60 02 ADD R6, R6, #2 0D403220 E1 A0 51 05 MOV R5, R5,LSL#2 0D403224 E1 56 00 08 CMP R6, R8 0D403228 3A FF FF E4 BCC loc_D4031C0 0D40322C loc_D40322C ; CODE XREF: rsa2+15Cj 0D40322C E2 57 70 01 SUBS R7, R7, #1 0D403230 5A FF FF CC BPL loc_D403168 0D403234 loc_D403234 ; CODE XREF: rsa2+11Cj 0D403234 E5 1B 08 4C LDR R0, [R11,#var_84C] 0D403238 E2 4B 1E 83 SUB R1, R11, #0x830 0D40323C E2 41 10 08 SUB R1, R1, #8 0D403240 E1 A0 20 0A MOV R2, R10 0D403244 EB FF FE 04 BL sub_D402A5C 0D403248 E2 4B D0 28 SUB SP, R11, #0x28 0D40324C E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D403250 E1 2F FF 1E BX LR 0D403250 ; End of function rsa2 0D403254 ; =============== S U B R O U T I N E ======================================= 0D403254 ; Attributes: bp-based frame 0D403254 sub_D403254 ; CODE XREF: sub_D4032C4+10Cp 0D403254 oldR4 = -0x14 0D403254 oldR5 = -0x10 0D403254 oldR11 = -0xC 0D403254 oldSP = -8 0D403254 oldLR = -4 0D403254 E3 A0 20 00 MOV R2, #0 0D403258 E1 52 00 01 CMP R2, R1 0D40325C AA 00 00 07 BGE loc_D403280 0D403260 loc_D403260 ; CODE XREF: sub_D403254+28j 0D403260 E7 90 31 02 LDR R3, [R0,R2,LSL#2] 0D403264 E3 53 00 00 CMP R3, #0 0D403268 0A 00 00 01 BEQ loc_D403274 0D40326C E3 A0 00 00 MOV R0, #0 0D403270 E1 2F FF 1E BX LR 0D403274 ; --------------------------------------------------------------------------- 0D403274 loc_D403274 ; CODE XREF: sub_D403254+14j 0D403274 E2 82 20 01 ADD R2, R2, #1 0D403278 E1 52 00 01 CMP R2, R1 0D40327C BA FF FF F7 BLT loc_D403260 0D403280 loc_D403280 ; CODE XREF: sub_D403254+8j 0D403280 E3 A0 00 01 MOV R0, #1 0D403284 E1 2F FF 1E BX LR 0D403284 ; End of function sub_D403254 0D403288 ; =============== S U B R O U T I N E ======================================= 0D403288 ; Attributes: bp-based frame 0D403288 sub_D403288 0D403288 oldR4 = -0x14 0D403288 oldR5 = -0x10 0D403288 oldR11 = -0xC 0D403288 oldSP = -8 0D403288 oldLR = -4 0D403288 E1 A0 C0 0D MOV R12, SP 0D40328C E9 2D D8 30 STMFD SP!, {R4,R5,R11,R12,LR,PC} 0D403290 E2 4C B0 04 SUB R11, R12, #4 0D403294 E1 A0 50 00 MOV R5, R0 0D403298 EB FF FE 36 BL sub_D402B78 0D40329C E3 50 00 00 CMP R0, #0 0D4032A0 0A 00 00 05 BEQ loc_D4032BC 0D4032A4 E1 A0 42 80 MOV R4, R0,LSL#5 0D4032A8 E0 85 31 00 ADD R3, R5, R0,LSL#2 0D4032AC E5 13 00 04 LDR R0, [R3,#-4] 0D4032B0 EB FF FD 7F BL sub_D4028B4 0D4032B4 E0 84 40 00 ADD R4, R4, R0 0D4032B8 E2 44 00 20 SUB R0, R4, #0x20 0D4032BC loc_D4032BC ; CODE XREF: sub_D403288+18j 0D4032BC E8 9D 68 30 LDMFD SP, {R4,R5,R11,SP,LR} 0D4032C0 E1 2F FF 1E BX LR 0D4032C0 ; End of function sub_D403288 0D4032C4 ; =============== S U B R O U T I N E ======================================= 0D4032C4 ; Attributes: bp-based frame 0D4032C4 sub_D4032C4 0D4032C4 var_15C = -0x15C 0D4032C4 var_158 = -0x158 0D4032C4 var_150 = -0x150 0D4032C4 var_14C = -0x14C 0D4032C4 var_A8 = -0xA8 0D4032C4 oldR4 = -0x28 0D4032C4 oldR5 = -0x24 0D4032C4 oldR6 = -0x20 0D4032C4 oldR7 = -0x1C 0D4032C4 oldR8 = -0x18 0D4032C4 oldR9 = -0x14 0D4032C4 oldR10 = -0x10 0D4032C4 oldR11 = -0xC 0D4032C4 oldSP = -8 0D4032C4 oldLR = -4 0D4032C4 E1 A0 C0 0D MOV R12, SP 0D4032C8 E9 2D DF F0 STMFD SP!, {R4-R12,LR,PC} 0D4032CC E2 4C B0 04 SUB R11, R12, #4 0D4032D0 E2 4D DE 13 SUB SP, SP, #0x130 0D4032D4 E5 0B 01 4C STR R0, [R11,#var_14C] 0D4032D8 E1 A0 50 01 MOV R5, R1 0D4032DC E5 0B 21 50 STR R2, [R11,#var_150] 0D4032E0 E1 A0 80 03 MOV R8, R3 0D4032E4 E2 4B 00 A8 SUB R0, R11, #0xA8 0D4032E8 E1 A0 10 03 MOV R1, R3 0D4032EC EB FF FD E3 BL sub_D402A80 0D4032F0 E3 A0 40 01 MOV R4, #1 0D4032F4 E5 0B 40 A8 STR R4, [R11,#var_A8] 0D4032F8 E2 4B 00 E8 SUB R0, R11, #0xE8 0D4032FC E1 A0 10 08 MOV R1, R8 0D403300 loc_D403300 0D403300 EB FF FD DE BL sub_D402A80 0D403304 E2 4B 00 C8 SUB R0, R11, #0xC8 0D403308 E1 A0 10 05 MOV R1, R5 0D40330C E1 A0 20 08 MOV R2, R8 0D403310 EB FF FD D1 BL sub_D402A5C 0D403314 E2 4B 0F 42 SUB R0, R11, #0x108 0D403318 E5 1B 11 50 LDR R1, [R11,#var_150] 0D40331C E1 A0 20 08 MOV R2, R8 0D403320 EB FF FD CD BL sub_D402A5C 0D403324 E1 A0 90 04 MOV R9, R4 0D403328 E2 4B AF 42 SUB R10, R11, #0x108 0D40332C EA 00 00 25 B loc_D4033C8 0D403330 ; --------------------------------------------------------------------------- 0D403330 loc_D403330 ; CODE XREF: sub_D4032C4+114j 0D403330 E5 8D A0 00 STR R10, [SP,#0x15C+var_15C] 0D403334 E5 8D 80 04 STR R8, [SP,#0x15C+var_158] 0D403338 E2 4B 00 48 SUB R0, R11, #0x48 0D40333C E2 4B 10 88 SUB R1, R11, #0x88 0D403340 E2 4B 20 C8 SUB R2, R11, #0xC8 0D403344 E1 A0 30 08 MOV R3, R8 0D403348 EB FF FE 86 BL rsa5 0D40334C E2 4B 6F 52 SUB R6, R11, #0x148 0D403350 E2 4B 50 E8 SUB R5, R11, #0xE8 0D403354 E1 A0 00 06 MOV R0, R6 0D403358 E2 4B 10 48 SUB R1, R11, #0x48 0D40335C E1 A0 20 05 MOV R2, R5 0D403360 E1 A0 30 08 MOV R3, R8 0D403364 EB FF FE 0D BL sub_D402BA0 0D403368 E2 4B 70 68 SUB R7, R11, #0x68 0D40336C E2 4B 40 A8 SUB R4, R11, #0xA8 0D403370 E1 A0 00 07 MOV R0, R7 0D403374 E1 A0 10 04 MOV R1, R4 0D403378 E1 A0 20 06 MOV R2, R6 0D40337C E1 A0 30 08 MOV R3, R8 0D403380 EB FF FD C7 BL sub_D402AA4 0D403384 E1 A0 00 04 MOV R0, R4 0D403388 E1 A0 10 05 MOV R1, R5 0D40338C E1 A0 20 08 MOV R2, R8 0D403390 EB FF FD B1 BL sub_D402A5C 0D403394 E1 A0 00 05 MOV R0, R5 0D403398 E1 A0 10 07 MOV R1, R7 0D40339C E1 A0 20 08 MOV R2, R8 0D4033A0 EB FF FD AD BL sub_D402A5C 0D4033A4 E2 4B 00 C8 SUB R0, R11, #0xC8 0D4033A8 E1 A0 10 0A MOV R1, R10 0D4033AC E1 A0 20 08 MOV R2, R8 0D4033B0 EB FF FD A9 BL sub_D402A5C 0D4033B4 E1 A0 00 0A MOV R0, R10 0D4033B8 E2 4B 10 88 SUB R1, R11, #0x88 0D4033BC E1 A0 20 08 MOV R2, R8 0D4033C0 EB FF FD A5 BL sub_D402A5C 0D4033C4 E2 69 90 00 RSB R9, R9, #0 0D4033C8 loc_D4033C8 ; CODE XREF: sub_D4032C4+68j 0D4033C8 E2 4B 0F 42 SUB R0, R11, #0x108 0D4033CC E1 A0 10 08 MOV R1, R8 0D4033D0 EB FF FF 9F BL sub_D403254 0D4033D4 E3 50 00 00 CMP R0, #0 0D4033D8 0A FF FF D4 BEQ loc_D403330 0D4033DC E3 59 00 00 CMP R9, #0 0D4033E0 AA 00 00 05 BGE loc_D4033FC 0D4033E4 E5 1B 01 4C LDR R0, [R11,#var_14C] 0D4033E8 E5 1B 11 50 LDR R1, [R11,#var_150] 0D4033EC E2 4B 20 A8 SUB R2, R11, #0xA8 0D4033F0 E1 A0 30 08 MOV R3, R8 0D4033F4 EB FF FD C1 BL sub_D402B00 0D4033F8 EA 00 00 03 B loc_D40340C 0D4033FC ; --------------------------------------------------------------------------- 0D4033FC loc_D4033FC ; CODE XREF: sub_D4032C4+11Cj 0D4033FC E5 1B 01 4C LDR R0, [R11,#var_14C] 0D403400 E2 4B 10 A8 SUB R1, R11, #0xA8 0D403404 E1 A0 20 08 MOV R2, R8 0D403408 EB FF FD 93 BL sub_D402A5C 0D40340C loc_D40340C ; CODE XREF: sub_D4032C4+134j 0D40340C E2 4B D0 28 SUB SP, R11, #0x28 0D403410 E8 9D 6F F0 LDMFD SP, {R4-R11,SP,LR} 0D403414 E1 2F FF 1E BX LR 0D403414 ; End of function sub_D4032C4 0D403418 ; =============== S U B R O U T I N E ======================================= 0D403418 rsa3 ; CODE XREF: verify_RSA_sig+80j 0D403418 ; rsa4+76j 0D403418 ; DATA XREF: verify_RSA_sig:off_D402674o ... 0D403418 B5 F0 PUSH {R4-R7,LR} 0D40341A 1C 04 ADDS R4, R0, #0 0D40341C 1C 17 ADDS R7, R2, #0 0D40341E 1C 1E ADDS R6, R3, #0 0D403420 25 00 MOVS R5, #0 0D403422 39 01 SUBS R1, #1 0D403424 42 AB CMP R3, R5 0D403426 D9 14 BLS loc_D403452 0D403428 29 00 CMP R1, #0 0D40342A DB 18 BLT loc_D40345E 0D40342C loc_D40342C ; CODE XREF: rsa3+36j 0D40342C 00 AB LSLS R3, R5, #2 0D40342E 59 D8 LDR R0, [R3,R7] 0D403430 22 00 MOVS R2, #0 0D403432 29 00 CMP R1, #0 0D403434 DB 07 BLT loc_D403446 0D403436 loc_D403436 ; CODE XREF: rsa3+2Cj 0D403436 1C 03 ADDS R3, R0, #0 0D403438 40 D3 LSRS R3, R2 0D40343A 54 63 STRB R3, [R4,R1] 0D40343C 32 08 ADDS R2, #8 0D40343E 39 01 SUBS R1, #1 0D403440 D4 01 BMI loc_D403446 0D403442 2A 1F CMP R2, #0x1F 0D403444 D9 F7 BLS loc_D403436 0D403446 loc_D403446 ; CODE XREF: rsa3+1Cj 0D403446 ; rsa3+28j 0D403446 35 01 ADDS R5, #1 0D403448 42 AE CMP R6, R5 0D40344A D9 02 BLS loc_D403452 0D40344C 29 00 CMP R1, #0 0D40344E DA ED BGE loc_D40342C 0D403450 E0 05 B loc_D40345E 0D403452 ; --------------------------------------------------------------------------- 0D403452 loc_D403452 ; CODE XREF: rsa3+Ej 0D403452 ; rsa3+32j 0D403452 29 00 CMP R1, #0 0D403454 DB 03 BLT loc_D40345E 0D403456 23 00 MOVS R3, #0 0D403458 loc_D403458 ; CODE XREF: rsa3+44j 0D403458 54 63 STRB R3, [R4,R1] 0D40345A 39 01 SUBS R1, #1 0D40345C D5 FC BPL loc_D403458 0D40345E loc_D40345E ; CODE XREF: rsa3+12j 0D40345E ; rsa3+38j rsa3+3Cj 0D40345E BC F0 POP {R4-R7} 0D403460 BC 01 POP {R0} 0D403462 47 00 BX R0 0D403462 ; End of function rsa3 0D403464 ; =============== S U B R O U T I N E ======================================= 0D403464 rsa1 ; CODE XREF: verify_RSA_sig+34j 0D403464 ; verify_RSA_sig+44j 0D403464 ; verify_RSA_sig+54j ... 0D403464 B5 F0 PUSH {R4-R7,LR} 0D403466 1C 07 ADDS R7, R0, #0 0D403468 1C 0E ADDS R6, R1, #0 0D40346A 1C 15 ADDS R5, R2, #0 0D40346C 24 00 MOVS R4, #0 0D40346E 1E 5A SUBS R2, R3, #1 0D403470 42 B4 CMP R4, R6 0D403472 DA 1D BGE loc_D4034B0 0D403474 2A 00 CMP R2, #0 0D403476 DB 12 BLT loc_D40349E 0D403478 loc_D403478 ; CODE XREF: rsa1+38j 0D403478 20 00 MOVS R0, #0 0D40347A 21 00 MOVS R1, #0 0D40347C 2A 00 CMP R2, #0 0D40347E DB 07 BLT loc_D403490 0D403480 loc_D403480 ; CODE XREF: rsa1+2Aj 0D403480 5C AB LDRB R3, [R5,R2] 0D403482 40 8B LSLS R3, R1 0D403484 43 18 ORRS R0, R3 0D403486 31 08 ADDS R1, #8 0D403488 3A 01 SUBS R2, #1 0D40348A D4 01 BMI loc_D403490 0D40348C 29 1F CMP R1, #0x1F 0D40348E DD F7 BLE loc_D403480 0D403490 loc_D403490 ; CODE XREF: rsa1+1Aj 0D403490 ; rsa1+26j 0D403490 00 A3 LSLS R3, R4, #2 0D403492 51 D8 STR R0, [R3,R7] 0D403494 34 01 ADDS R4, #1 0D403496 42 B4 CMP R4, R6 0D403498 DA 0A BGE loc_D4034B0 0D40349A 2A 00 CMP R2, #0 0D40349C DA EC BGE loc_D403478 0D40349E loc_D40349E ; CODE XREF: rsa1+12j 0D40349E 42 B4 CMP R4, R6 0D4034A0 DA 06 BGE loc_D4034B0 0D4034A2 22 00 MOVS R2, #0 0D4034A4 loc_D4034A4 ; CODE XREF: rsa1+4Aj 0D4034A4 00 A3 LSLS R3, R4, #2 0D4034A6 19 DB ADDS R3, R3, R7 0D4034A8 60 1A STR R2, [R3] 0D4034AA 34 01 ADDS R4, #1 0D4034AC 42 B4 CMP R4, R6 0D4034AE DB F9 BLT loc_D4034A4 0D4034B0 loc_D4034B0 ; CODE XREF: rsa1+Ej 0D4034B0 ; rsa1+34j rsa1+3Cj 0D4034B0 BC F0 POP {R4-R7} 0D4034B2 BC 01 POP {R0} 0D4034B4 47 00 BX R0 0D4034B4 ; End of function rsa1 0D4034B4 ; --------------------------------------------------------------------------- 0D4034B6 46 C0 ALIGN 4 0D4034B8 ; =============== S U B R O U T I N E ======================================= 0D4034B8 sub_D4034B8 ; DATA XREF: call_printf:off_D403520o 0D4034B8 B5 00 PUSH {LR} 0D4034BA 69 83 LDR R3, [R0,#0x18] 0D4034BC 2B 00 CMP R3, #0 0D4034BE D0 07 BEQ loc_D4034D0 0D4034C0 18 1B ADDS R3, R3, R0 0D4034C2 22 00 MOVS R2, #0 0D4034C4 72 1A STRB R2, [R3,#8] 0D4034C6 23 00 MOVS R3, #0 0D4034C8 61 83 STR R3, [R0,#0x18] 0D4034CA 30 08 ADDS R0, #8 0D4034CC F0 00 FC 1D BL debug_write 0D4034D0 loc_D4034D0 ; CODE XREF: sub_D4034B8+6j 0D4034D0 BC 01 POP {R0} 0D4034D2 47 00 BX R0 0D4034D2 ; End of function sub_D4034B8 0D4034D4 ; =============== S U B R O U T I N E ======================================= 0D4034D4 sub_D4034D4 ; DATA XREF: call_printf:off_D40351Co 0D4034D4 B5 00 PUSH {LR} 0D4034D6 69 82 LDR R2, [R0,#0x18] 0D4034D8 18 13 ADDS R3, R2, R0 0D4034DA 72 19 STRB R1, [R3,#8] 0D4034DC 32 01 ADDS R2, #1 0D4034DE 61 82 STR R2, [R0,#0x18] 0D4034E0 69 C3 LDR R3, [R0,#0x1C] 0D4034E2 33 01 ADDS R3, #1 0D4034E4 61 C3 STR R3, [R0,#0x1C] 0D4034E6 2A 0F CMP R2, #0xF 0D4034E8 D1 01 BNE loc_D4034EE 0D4034EA 68 43 LDR R3, [R0,#4] 0D4034EC 47 98 BLX R3 0D4034EE loc_D4034EE ; CODE XREF: sub_D4034D4+14j 0D4034EE BC 01 POP {R0} 0D4034F0 47 00 BX R0 0D4034F0 ; End of function sub_D4034D4 0D4034F0 ; --------------------------------------------------------------------------- 0D4034F2 00 00 ALIGN 4 0D4034F4 ; =============== S U B R O U T I N E ======================================= 0D4034F4 call_printf ; CODE XREF: do_debug_log+8p 0D4034F4 var_28 = -0x28 0D4034F4 var_24 = -0x24 0D4034F4 var_10 = -0x10 0D4034F4 var_C = -0xC 0D4034F4 B5 10 PUSH {R4,LR} 0D4034F6 B0 88 SUB SP, SP, #0x20 0D4034F8 1C 04 ADDS R4, R0, #0 0D4034FA 1C 0A ADDS R2, R1, #0 0D4034FC 23 00 MOVS R3, #0 0D4034FE 93 07 STR R3, [SP,#0x28+var_C] 0D403500 93 06 STR R3, [SP,#0x28+var_10] 0D403502 4B 06 LDR R3, =(sub_D4034D4+1) 0D403504 93 00 STR R3, [SP,#0x28+var_28] 0D403506 4B 06 LDR R3, =(sub_D4034B8+1) 0D403508 93 01 STR R3, [SP,#0x28+var_24] 0D40350A 46 68 MOV R0, SP 0D40350C 1C 21 ADDS R1, R4, #0 0D40350E loc_D40350E 0D40350E F0 00 F8 55 BL printf 0D403512 98 07 LDR R0, [SP,#0x28+var_C] 0D403514 B0 08 ADD SP, SP, #0x20 0D403516 BC 10 POP {R4} 0D403518 BC 02 POP {R1} 0D40351A 47 08 BX R1 0D40351A ; --------------------------------------------------------------------------- 0D40351C 0D 40 34 D5 off_D40351C DCD sub_D4034D4+1 ; DATA XREF: call_printf+Er 0D403520 0D 40 34 B9 off_D403520 DCD sub_D4034B8+1 ; DATA XREF: call_printf+12r 0D403520 ; End of function call_printf 0D403524 ; =============== S U B R O U T I N E ======================================= 0D403524 do_debug_log ; CODE XREF: call_ahbMemFlush+86p 0D403524 var_10 = -0x10 0D403524 B4 0F PUSH {R0-R3} 0D403526 B5 00 PUSH {LR} 0D403528 A9 01 ADD R1, SP, #0x14+var_10 0D40352A C9 01 LDMIA R1!, {R0} 0D40352C F7 FF FF E2 BL call_printf 0D403530 BC 08 POP {R3} 0D403532 B0 04 ADD SP, SP, #0x10 0D403534 47 18 BX R3 0D403534 ; End of function do_debug_log 0D403534 ; --------------------------------------------------------------------------- 0D403536 46 C0 ALIGN 4 0D403538 ; =============== S U B R O U T I N E ======================================= 0D403538 sub_D403538 ; DATA XREF: call_printf2:off_D4039BCo 0D403538 B5 00 PUSH {LR} 0D40353A 68 C1 LDR R1, [R0,#0xC] 0D40353C 69 03 LDR R3, [R0,#0x10] 0D40353E 42 99 CMP R1, R3 0D403540 D2 03 BCS loc_D40354A 0D403542 68 82 LDR R2, [R0,#8] 0D403544 23 00 MOVS R3, #0 0D403546 54 53 STRB R3, [R2,R1] 0D403548 E0 05 B loc_D403556 0D40354A ; --------------------------------------------------------------------------- 0D40354A loc_D40354A ; CODE XREF: sub_D403538+8j 0D40354A 68 83 LDR R3, [R0,#8] 0D40354C 69 02 LDR R2, [R0,#0x10] 0D40354E 18 9B ADDS R3, R3, R2 0D403550 3B 01 SUBS R3, #1 0D403552 22 00 MOVS R2, #0 0D403554 70 1A STRB R2, [R3] 0D403556 loc_D403556 ; CODE XREF: sub_D403538+10j 0D403556 BC 01 POP {R0} 0D403558 47 00 BX R0 0D403558 ; End of function sub_D403538 0D403558 ; --------------------------------------------------------------------------- 0D40355A 00 00 ALIGN 4 0D40355C ; =============== S U B R O U T I N E ======================================= 0D40355C sub_D40355C ; DATA XREF: call_printf2:off_D4039B8o 0D40355C B5 00 PUSH {LR} 0D40355E 06 09 LSLS R1, R1, #0x18 0D403560 0E 09 LSRS R1, R1, #0x18 0D403562 68 C2 LDR R2, [R0,#0xC] 0D403564 69 03 LDR R3, [R0,#0x10] 0D403566 42 9A CMP R2, R3 0D403568 D2 01 BCS loc_D40356E 0D40356A 68 83 LDR R3, [R0,#8] 0D40356C 54 99 STRB R1, [R3,R2] 0D40356E loc_D40356E ; CODE XREF: sub_D40355C+Cj 0D40356E 68 C3 LDR R3, [R0,#0xC] 0D403570 33 01 ADDS R3, #1 0D403572 60 C3 STR R3, [R0,#0xC] 0D403574 BC 01 POP {R0} 0D403576 47 00 BX R0 0D403576 ; End of function sub_D40355C 0D403578 ; =============== S U B R O U T I N E ======================================= 0D403578 sub_D403578 ; CODE XREF: printf+130p 0D403578 ; printf+292p printf+36Ep 0D403578 B5 30 PUSH {R4,R5,LR} 0D40357A 1C 05 ADDS R5, R0, #0 0D40357C 1C 0C ADDS R4, R1, #0 0D40357E 78 0B LDRB R3, [R1] 0D403580 2B 00 CMP R3, #0 0D403582 D0 07 BEQ loc_D403594 0D403584 loc_D403584 ; CODE XREF: sub_D403578+1Aj 0D403584 68 2B LDR R3, [R5] 0D403586 1C 28 ADDS R0, R5, #0 0D403588 78 21 LDRB R1, [R4] 0D40358A 47 98 BLX R3 0D40358C 34 01 ADDS R4, #1 0D40358E 78 23 LDRB R3, [R4] 0D403590 2B 00 CMP R3, #0 0D403592 D1 F7 BNE loc_D403584 0D403594 loc_D403594 ; CODE XREF: sub_D403578+Aj 0D403594 BC 30 POP {R4,R5} 0D403596 BC 01 POP {R0} 0D403598 47 00 BX R0 0D403598 ; End of function sub_D403578 0D403598 ; --------------------------------------------------------------------------- 0D40359A 00 00 ALIGN 4 0D40359C ; =============== S U B R O U T I N E ======================================= 0D40359C sub_D40359C ; CODE XREF: printf+D4p 0D40359C ; printf:loc_D4036B2p 0D40359C ; printf+128p ... 0D40359C B5 70 PUSH {R4-R6,LR} 0D40359E 1C 05 ADDS R5, R0, #0 0D4035A0 06 12 LSLS R2, R2, #0x18 0D4035A2 0E 16 LSRS R6, R2, #0x18 0D4035A4 1E 4C SUBS R4, R1, #1 0D4035A6 D3 05 BCC loc_D4035B4 0D4035A8 loc_D4035A8 ; CODE XREF: sub_D40359C+16j 0D4035A8 68 2B LDR R3, [R5] 0D4035AA 1C 28 ADDS R0, R5, #0 0D4035AC 1C 31 ADDS R1, R6, #0 0D4035AE 47 98 BLX R3 0D4035B0 3C 01 SUBS R4, #1 0D4035B2 D2 F9 BCS loc_D4035A8 0D4035B4 loc_D4035B4 ; CODE XREF: sub_D40359C+Aj 0D4035B4 BC 70 POP {R4-R6} 0D4035B6 BC 01 POP {R0} 0D4035B8 47 00 BX R0 0D4035B8 ; End of function sub_D40359C 0D4035B8 ; --------------------------------------------------------------------------- 0D4035BA 00 00 ALIGN 4 0D4035BC ; =============== S U B R O U T I N E ======================================= 0D4035BC printf ; CODE XREF: call_printf:loc_D40350Ep 0D4035BC ; call_printf2+1Ap 0D4035BC var_4C = -0x4C 0D4035BC var_48 = -0x48 0D4035BC var_44 = -0x44 0D4035BC var_40 = -0x40 0D4035BC var_3C = -0x3C 0D4035BC var_24 = -0x24 0D4035BC B5 F0 PUSH {R4-R7,LR} 0D4035BE 46 5F MOV R7, R11 0D4035C0 46 56 MOV R6, R10 0D4035C2 46 4D MOV R5, R9 0D4035C4 46 44 MOV R4, R8 0D4035C6 B4 F0 PUSH {R4-R7} 0D4035C8 B0 8A SUB SP, SP, #0x28 0D4035CA 46 80 MOV R8, R0 0D4035CC 1C 0D ADDS R5, R1, #0 0D4035CE 46 93 MOV R11, R2 0D4035D0 21 00 MOVS R1, #0 0D4035D2 91 03 STR R1, [SP,#0x4C+var_40] 0D4035D4 78 2C LDRB R4, [R5] 0D4035D6 35 01 ADDS R5, #1 0D4035D8 2C 00 CMP R4, #0 0D4035DA D1 00 BNE loc_D4035DE 0D4035DC E1 CA B loc_D403974 0D4035DE ; --------------------------------------------------------------------------- 0D4035DE loc_D4035DE ; CODE XREF: printf+1Ej 0D4035DE ; printf+3B6j 0D4035DE 2C 25 CMP R4, #0x25 0D4035E0 D0 00 BEQ loc_D4035E4 0D4035E2 E1 BD B loc_D403960 0D4035E4 ; --------------------------------------------------------------------------- 0D4035E4 loc_D4035E4 ; CODE XREF: printf+24j 0D4035E4 22 00 MOVS R2, #0 0D4035E6 92 02 STR R2, [SP,#0x4C+var_44] 0D4035E8 46 92 MOV R10, R2 0D4035EA 92 01 STR R2, [SP,#0x4C+var_48] 0D4035EC 92 00 STR R2, [SP,#0x4C+var_4C] 0D4035EE 27 00 MOVS R7, #0 0D4035F0 78 2C LDRB R4, [R5] 0D4035F2 35 01 ADDS R5, #1 0D4035F4 2C 00 CMP R4, #0 0D4035F6 D0 1A BEQ loc_D40362E 0D4035F8 loc_D4035F8 ; CODE XREF: printf+70j 0D4035F8 2C 2D CMP R4, #0x2D 0D4035FA D0 0F BEQ loc_D40361C 0D4035FC 2C 2D CMP R4, #0x2D 0D4035FE DC 04 BGT loc_D40360A 0D403600 2C 23 CMP R4, #0x23 0D403602 D0 05 BEQ loc_D403610 0D403604 2C 2B CMP R4, #0x2B 0D403606 D0 06 BEQ loc_D403616 0D403608 E0 11 B loc_D40362E 0D40360A ; --------------------------------------------------------------------------- 0D40360A loc_D40360A ; CODE XREF: printf+42j 0D40360A 2C 30 CMP R4, #0x30 0D40360C D0 09 BEQ loc_D403622 0D40360E E0 0E B loc_D40362E 0D403610 ; --------------------------------------------------------------------------- 0D403610 loc_D403610 ; CODE XREF: printf+46j 0D403610 23 01 MOVS R3, #1 0D403612 93 00 STR R3, [SP,#0x4C+var_4C] 0D403614 E0 07 B loc_D403626 0D403616 ; --------------------------------------------------------------------------- 0D403616 loc_D403616 ; CODE XREF: printf+4Aj 0D403616 21 01 MOVS R1, #1 0D403618 46 8A MOV R10, R1 0D40361A E0 04 B loc_D403626 0D40361C ; --------------------------------------------------------------------------- 0D40361C loc_D40361C ; CODE XREF: printf+3Ej 0D40361C 22 01 MOVS R2, #1 0D40361E 92 01 STR R2, [SP,#0x4C+var_48] 0D403620 E0 01 B loc_D403626 0D403622 ; --------------------------------------------------------------------------- 0D403622 loc_D403622 ; CODE XREF: printf+50j 0D403622 23 01 MOVS R3, #1 0D403624 93 02 STR R3, [SP,#0x4C+var_44] 0D403626 loc_D403626 ; CODE XREF: printf+58j 0D403626 ; printf+5Ej printf+64j 0D403626 78 2C LDRB R4, [R5] 0D403628 35 01 ADDS R5, #1 0D40362A 2C 00 CMP R4, #0 0D40362C D1 E4 BNE loc_D4035F8 0D40362E loc_D40362E ; CODE XREF: printf+3Aj 0D40362E ; printf+4Cj printf+52j 0D40362E 1C 23 ADDS R3, R4, #0 0D403630 3B 30 SUBS R3, #0x30 0D403632 06 1B LSLS R3, R3, #0x18 0D403634 0E 1B LSRS R3, R3, #0x18 0D403636 2B 09 CMP R3, #9 0D403638 D8 0D BHI loc_D403656 0D40363A 22 0A MOVS R2, #0xA 0D40363C loc_D40363C ; CODE XREF: printf+98j 0D40363C 1C 3B ADDS R3, R7, #0 0D40363E 43 53 MULS R3, R2 0D403640 19 1B ADDS R3, R3, R4 0D403642 1C 1F ADDS R7, R3, #0 0D403644 3F 30 SUBS R7, #0x30 0D403646 78 2C LDRB R4, [R5] 0D403648 35 01 ADDS R5, #1 0D40364A 1C 23 ADDS R3, R4, #0 0D40364C 3B 30 SUBS R3, #0x30 0D40364E 06 1B LSLS R3, R3, #0x18 0D403650 0E 1B LSRS R3, R3, #0x18 0D403652 2B 09 CMP R3, #9 0D403654 D9 F2 BLS loc_D40363C 0D403656 loc_D403656 ; CODE XREF: printf+7Cj 0D403656 21 00 MOVS R1, #0 0D403658 2C 6C CMP R4, #0x6C 0D40365A D1 04 BNE loc_D403666 0D40365C loc_D40365C ; CODE XREF: printf+A8j 0D40365C 31 01 ADDS R1, #1 0D40365E 78 2C LDRB R4, [R5] 0D403660 35 01 ADDS R5, #1 0D403662 2C 6C CMP R4, #0x6C 0D403664 D0 FA BEQ loc_D40365C 0D403666 loc_D403666 ; CODE XREF: printf+9Ej 0D403666 1C 23 ADDS R3, R4, #0 0D403668 3B 58 SUBS R3, #0x58 ; switch 33 cases 0D40366A 2B 20 CMP R3, #0x20 0D40366C D9 00 BLS loc_D403670 0D40366E E1 6A B loc_D403946 0D403670 ; --------------------------------------------------------------------------- 0D403670 loc_D403670 ; CODE XREF: printf+B0j 0D403670 00 9B LSLS R3, R3, #2 0D403672 4A B8 LDR R2, =off_D404010 0D403674 58 9B LDR R3, [R3,R2] 0D403676 46 9F MOV PC, R3 ; switch jump 0D403678 ; --------------------------------------------------------------------------- 0D403678 46 5B MOV R3, R11 0D40367A 21 04 MOVS R1, #4 0D40367C 44 8B ADD R11, R1 0D40367E 78 DC LDRB R4, [R3,#3] 0D403680 2F 01 CMP R7, #1 0D403682 DD 07 BLE loc_D403694 0D403684 9A 01 LDR R2, [SP,#0x4C+var_48] 0D403686 2A 00 CMP R2, #0 0D403688 D1 04 BNE loc_D403694 0D40368A 46 40 MOV R0, R8 0D40368C 1E 79 SUBS R1, R7, #1 0D40368E 22 20 MOVS R2, #0x20 0D403690 F7 FF FF 84 BL sub_D40359C 0D403694 loc_D403694 ; CODE XREF: printf+C6j 0D403694 ; printf+CCj 0D403694 46 41 MOV R1, R8 0D403696 68 0B LDR R3, [R1] 0D403698 46 40 MOV R0, R8 0D40369A 1C 21 ADDS R1, R4, #0 0D40369C 47 98 BLX R3 0D40369E 2F 01 CMP R7, #1 0D4036A0 DC 00 BGT loc_D4036A4 0D4036A2 E1 62 B loc_D40396A 0D4036A4 ; --------------------------------------------------------------------------- 0D4036A4 loc_D4036A4 ; CODE XREF: printf+E4j 0D4036A4 9A 01 LDR R2, [SP,#0x4C+var_48] 0D4036A6 2A 00 CMP R2, #0 0D4036A8 D1 00 BNE loc_D4036AC 0D4036AA E1 5E B loc_D40396A 0D4036AC ; --------------------------------------------------------------------------- 0D4036AC loc_D4036AC ; CODE XREF: printf+ECj 0D4036AC 46 40 MOV R0, R8 0D4036AE 1E 79 SUBS R1, R7, #1 0D4036B0 22 20 MOVS R2, #0x20 0D4036B2 loc_D4036B2 0D4036B2 F7 FF FF 73 BL sub_D40359C 0D4036B6 E1 58 B loc_D40396A 0D4036B8 ; --------------------------------------------------------------------------- 0D4036B8 loc_D4036B8 ; DATA XREF: boot1:0D40407Co 0D4036B8 46 5B MOV R3, R11 0D4036BA 21 04 MOVS R1, #4 0D4036BC 44 8B ADD R11, R1 0D4036BE 68 1C LDR R4, [R3] 0D4036C0 2C 00 CMP R4, #0 0D4036C2 D1 00 BNE loc_D4036C6 0D4036C4 4C A4 LDR R4, =a_null 0D4036C6 loc_D4036C6 ; CODE XREF: printf+106j 0D4036C6 ; printf+17Aj 0D4036C6 1C 20 ADDS R0, R4, #0 0D4036C8 21 80 00 C9 MOVLS R1, 0x400 0D4036CC F0 00 FA F2 BL sub_D403CB4 0D4036D0 46 82 MOV R10, R0 0D4036D2 45 57 CMP R7, R10 0D4036D4 DD 08 BLE loc_D4036E8 0D4036D6 9A 01 LDR R2, [SP,#0x4C+var_48] 0D4036D8 2A 00 CMP R2, #0 0D4036DA D1 05 BNE loc_D4036E8 0D4036DC 46 40 MOV R0, R8 0D4036DE 46 53 MOV R3, R10 0D4036E0 1A F9 SUBS R1, R7, R3 0D4036E2 22 20 MOVS R2, #0x20 0D4036E4 F7 FF FF 5A BL sub_D40359C 0D4036E8 loc_D4036E8 ; CODE XREF: printf+118j 0D4036E8 ; printf+11Ej 0D4036E8 46 40 MOV R0, R8 0D4036EA 1C 21 ADDS R1, R4, #0 0D4036EC F7 FF FF 44 BL sub_D403578 0D4036F0 45 57 CMP R7, R10 0D4036F2 DC 00 BGT loc_D4036F6 0D4036F4 E1 39 B loc_D40396A 0D4036F6 ; --------------------------------------------------------------------------- 0D4036F6 loc_D4036F6 ; CODE XREF: printf+136j 0D4036F6 99 01 LDR R1, [SP,#0x4C+var_48] 0D4036F8 29 00 CMP R1, #0 0D4036FA D1 00 BNE loc_D4036FE 0D4036FC E1 35 B loc_D40396A 0D4036FE ; --------------------------------------------------------------------------- 0D4036FE loc_D4036FE ; CODE XREF: printf+13Ej 0D4036FE 46 40 MOV R0, R8 0D403700 46 52 MOV R2, R10 0D403702 1A B9 SUBS R1, R7, R2 0D403704 22 20 MOVS R2, #0x20 0D403706 F7 FF FF 49 BL sub_D40359C 0D40370A E1 2E B loc_D40396A 0D40370C ; --------------------------------------------------------------------------- 0D40370C loc_D40370C ; DATA XREF: boot1:0D404070o 0D40370C ; boot1:0D404090o 0D40370C 46 5B MOV R3, R11 0D40370E 22 04 MOVS R2, #4 0D403710 44 93 ADD R11, R2 0D403712 68 1B LDR R3, [R3] 0D403714 46 99 MOV R9, R3 0D403716 29 02 CMP R1, #2 0D403718 D1 03 BNE loc_D403722 0D40371A 46 5B MOV R3, R11 0D40371C 44 93 ADD R11, R2 0D40371E 68 1B LDR R3, [R3] 0D403720 93 03 STR R3, [SP,#0x4C+var_40] 0D403722 loc_D403722 ; CODE XREF: printf+15Cj 0D403722 2C 70 CMP R4, #0x70 0D403724 D1 08 BNE loc_D403738 0D403726 46 4B MOV R3, R9 0D403728 2B 00 CMP R3, #0 0D40372A D0 03 BEQ loc_D403734 0D40372C 24 78 MOVS R4, #0x78 0D40372E 22 01 MOVS R2, #1 0D403730 92 00 STR R2, [SP,#0x4C+var_4C] 0D403732 E0 01 B loc_D403738 0D403734 ; --------------------------------------------------------------------------- 0D403734 loc_D403734 ; CODE XREF: printf+16Ej 0D403734 4C 89 LDR R4, =a_nil 0D403736 E7 C6 B loc_D4036C6 0D403738 ; --------------------------------------------------------------------------- 0D403738 loc_D403738 ; CODE XREF: printf+168j 0D403738 ; printf+176j 0D403738 2C 78 CMP R4, #0x78 0D40373A D1 02 BNE loc_D403742 0D40373C 23 57 MOVS R3, #0x57 0D40373E 46 9A MOV R10, R3 0D403740 E0 01 B loc_D403746 0D403742 ; --------------------------------------------------------------------------- 0D403742 loc_D403742 ; CODE XREF: printf+17Ej 0D403742 22 37 MOVS R2, #0x37 0D403744 46 92 MOV R10, R2 0D403746 loc_D403746 ; CODE XREF: printf+184j 0D403746 AE 04 ADD R6, SP, #0x4C+var_3C 0D403748 20 01 MOVS R0, #1 0D40374A 29 02 CMP R1, #2 0D40374C D1 01 BNE loc_D403752 0D40374E 22 3C MOVS R2, #0x3C 0D403750 E0 00 B loc_D403754 0D403752 ; --------------------------------------------------------------------------- 0D403752 loc_D403752 ; CODE XREF: printf+190j 0D403752 22 1C MOVS R2, #0x1C 0D403754 loc_D403754 ; CODE XREF: printf+194j 0D403754 2A 00 CMP R2, #0 0D403756 DB 1E BLT loc_D403796 0D403758 23 0F MOVS R3, #0xF 0D40375A 46 9C MOV R12, R3 0D40375C loc_D40375C ; CODE XREF: printf+1D8j 0D40375C 2A 1C CMP R2, #0x1C 0D40375E DD 07 BLE loc_D403770 0D403760 1C 13 ADDS R3, R2, #0 0D403762 3B 20 SUBS R3, #0x20 0D403764 99 03 LDR R1, [SP,#0x4C+var_40] 0D403766 40 D9 LSRS R1, R3 0D403768 1C 0B ADDS R3, R1, #0 0D40376A 46 61 MOV R1, R12 0D40376C 40 0B ANDS R3, R1 0D40376E E0 03 B loc_D403778 0D403770 ; --------------------------------------------------------------------------- 0D403770 loc_D403770 ; CODE XREF: printf+1A2j 0D403770 46 4B MOV R3, R9 0D403772 40 D3 LSRS R3, R2 0D403774 46 61 MOV R1, R12 0D403776 40 0B ANDS R3, R1 0D403778 loc_D403778 ; CODE XREF: printf+1B2j 0D403778 2B 00 CMP R3, #0 0D40377A D1 01 BNE loc_D403780 0D40377C 28 00 CMP R0, #0 0D40377E D1 08 BNE loc_D403792 0D403780 loc_D403780 ; CODE XREF: printf+1BEj 0D403780 20 00 MOVS R0, #0 0D403782 1C 31 ADDS R1, R6, #0 0D403784 36 01 ADDS R6, #1 0D403786 2B 09 CMP R3, #9 0D403788 D8 01 BHI loc_D40378E 0D40378A 33 30 ADDS R3, #0x30 0D40378C E0 00 B loc_D403790 0D40378E ; --------------------------------------------------------------------------- 0D40378E loc_D40378E ; CODE XREF: printf+1CCj 0D40378E 44 53 ADD R3, R10 0D403790 loc_D403790 ; CODE XREF: printf+1D0j 0D403790 70 0B STRB R3, [R1] 0D403792 loc_D403792 ; CODE XREF: printf+1C2j 0D403792 3A 04 SUBS R2, #4 0D403794 D5 E2 BPL loc_D40375C 0D403796 loc_D403796 ; CODE XREF: printf+19Aj 0D403796 28 00 CMP R0, #0 0D403798 D0 02 BEQ loc_D4037A0 0D40379A 23 30 MOVS R3, #0x30 0D40379C 70 33 STRB R3, [R6] 0D40379E 36 01 ADDS R6, #1 0D4037A0 loc_D4037A0 ; CODE XREF: printf+1DCj 0D4037A0 23 00 MOVS R3, #0 0D4037A2 70 33 STRB R3, [R6] 0D4037A4 A8 04 ADD R0, SP, #0x4C+var_3C 0D4037A6 21 18 MOVS R1, #0x18 0D4037A8 F0 00 FA 84 BL sub_D403CB4 0D4037AC 46 82 MOV R10, R0 0D4037AE 46 4A MOV R2, R9 0D4037B0 2A 00 CMP R2, #0 0D4037B2 D0 04 BEQ loc_D4037BE 0D4037B4 9B 00 LDR R3, [SP,#0x4C+var_4C] 0D4037B6 2B 00 CMP R3, #0 0D4037B8 D0 01 BEQ loc_D4037BE 0D4037BA 21 02 MOVS R1, #2 0D4037BC 44 8A ADD R10, R1 0D4037BE loc_D4037BE ; CODE XREF: printf+1F6j 0D4037BE ; printf+1FCj 0D4037BE 45 57 CMP R7, R10 0D4037C0 DD 33 BLE loc_D40382A 0D4037C2 9A 01 LDR R2, [SP,#0x4C+var_48] 0D4037C4 2A 00 CMP R2, #0 0D4037C6 D1 30 BNE loc_D40382A 0D4037C8 9B 02 LDR R3, [SP,#0x4C+var_44] 0D4037CA 2B 00 CMP R3, #0 0D4037CC D0 16 BEQ loc_D4037FC 0D4037CE 46 49 MOV R1, R9 0D4037D0 29 00 CMP R1, #0 0D4037D2 D0 0C BEQ loc_D4037EE 0D4037D4 9A 00 LDR R2, [SP,#0x4C+var_4C] 0D4037D6 2A 00 CMP R2, #0 0D4037D8 D0 09 BEQ loc_D4037EE 0D4037DA 46 40 MOV R0, R8 0D4037DC 21 01 MOVS R1, #1 0D4037DE 22 30 MOVS R2, #0x30 0D4037E0 F7 FF FE DC BL sub_D40359C 0D4037E4 46 40 MOV R0, R8 0D4037E6 21 01 MOVS R1, #1 0D4037E8 1C 22 ADDS R2, R4, #0 0D4037EA F7 FF FE D7 BL sub_D40359C 0D4037EE loc_D4037EE ; CODE XREF: printf+216j 0D4037EE ; printf+21Cj 0D4037EE 46 40 MOV R0, R8 0D4037F0 46 53 MOV R3, R10 0D4037F2 1A F9 SUBS R1, R7, R3 0D4037F4 22 30 MOVS R2, #0x30 0D4037F6 F7 FF FE D1 BL sub_D40359C 0D4037FA E0 26 B loc_D40384A 0D4037FC ; --------------------------------------------------------------------------- 0D4037FC loc_D4037FC ; CODE XREF: printf+210j 0D4037FC 46 40 MOV R0, R8 0D4037FE 46 52 MOV R2, R10 0D403800 1A B9 SUBS R1, R7, R2 0D403802 22 20 MOVS R2, #0x20 0D403804 loc_D403804 0D403804 F7 FF FE CA BL sub_D40359C 0D403808 46 4B MOV R3, R9 0D40380A 2B 00 CMP R3, #0 0D40380C D0 1D BEQ loc_D40384A 0D40380E 99 00 LDR R1, [SP,#0x4C+var_4C] 0D403810 29 00 CMP R1, #0 0D403812 D0 1A BEQ loc_D40384A 0D403814 46 40 MOV R0, R8 0D403816 21 01 MOVS R1, #1 0D403818 22 30 MOVS R2, #0x30 0D40381A F7 FF FE BF BL sub_D40359C 0D40381E 46 40 MOV R0, R8 0D403820 21 01 MOVS R1, #1 0D403822 1C 22 ADDS R2, R4, #0 0D403824 F7 FF FE BA BL sub_D40359C 0D403828 E0 0F B loc_D40384A 0D40382A ; --------------------------------------------------------------------------- 0D40382A loc_D40382A ; CODE XREF: printf+204j 0D40382A ; printf+20Aj 0D40382A 46 4A MOV R2, R9 0D40382C 2A 00 CMP R2, #0 0D40382E D0 0C BEQ loc_D40384A 0D403830 9B 00 LDR R3, [SP,#0x4C+var_4C] 0D403832 2B 00 CMP R3, #0 0D403834 D0 09 BEQ loc_D40384A 0D403836 46 40 MOV R0, R8 0D403838 21 01 MOVS R1, #1 0D40383A 22 30 MOVS R2, #0x30 0D40383C loc_D40383C 0D40383C F7 FF FE AE BL sub_D40359C 0D403840 46 40 MOV R0, R8 0D403842 21 01 MOVS R1, #1 0D403844 1C 22 ADDS R2, R4, #0 0D403846 F7 FF FE A9 BL sub_D40359C 0D40384A loc_D40384A ; CODE XREF: printf+23Ej 0D40384A ; printf+250j printf+256j ... 0D40384A 46 40 MOV R0, R8 0D40384C A9 04 ADD R1, SP, #0x4C+var_3C 0D40384E F7 FF FE 93 BL sub_D403578 0D403852 45 57 CMP R7, R10 0D403854 DC 00 BGT loc_D403858 0D403856 E0 88 B loc_D40396A 0D403858 ; --------------------------------------------------------------------------- 0D403858 loc_D403858 ; CODE XREF: printf+298j 0D403858 99 01 LDR R1, [SP,#0x4C+var_48] 0D40385A 29 00 CMP R1, #0 0D40385C D1 00 BNE loc_D403860 0D40385E E0 84 B loc_D40396A 0D403860 ; --------------------------------------------------------------------------- 0D403860 loc_D403860 ; CODE XREF: printf+2A0j 0D403860 46 40 MOV R0, R8 0D403862 46 52 MOV R2, R10 0D403864 1A B9 SUBS R1, R7, R2 0D403866 22 20 MOVS R2, #0x20 0D403868 F7 FF FE 98 BL sub_D40359C 0D40386C E0 7D B loc_D40396A 0D40386E ; --------------------------------------------------------------------------- 0D40386E loc_D40386E ; DATA XREF: boot1:0D404084o 0D40386E 46 5B MOV R3, R11 0D403870 21 04 MOVS R1, #4 0D403872 44 8B ADD R11, R1 0D403874 68 1C LDR R4, [R3] 0D403876 AE 0A ADD R6, SP, #0x4C+var_24 0D403878 22 00 MOVS R2, #0 0D40387A 46 91 MOV R9, R2 0D40387C 2C 00 CMP R4, #0 0D40387E DA 02 BGE loc_D403886 0D403880 23 01 MOVS R3, #1 0D403882 46 99 MOV R9, R3 0D403884 42 64 NEGS R4, R4 0D403886 loc_D403886 ; CODE XREF: printf+2C2j 0D403886 3E 01 SUBS R6, #1 0D403888 23 00 MOVS R3, #0 0D40388A 70 33 STRB R3, [R6] 0D40388C loc_D40388C ; CODE XREF: printf+2EAj 0D40388C 3E 01 SUBS R6, #1 0D40388E 1C 20 ADDS R0, R4, #0 0D403890 21 0A MOVS R1, #0xA 0D403892 F0 00 FB 1F BL sub_D403ED4 0D403896 30 30 ADDS R0, #0x30 0D403898 70 30 STRB R0, [R6] 0D40389A 1C 20 ADDS R0, R4, #0 0D40389C 21 0A MOVS R1, #0xA 0D40389E F0 00 FA CF BL sub_D403E40 0D4038A2 1C 04 ADDS R4, R0, #0 0D4038A4 28 00 CMP R0, #0 0D4038A6 D1 F1 BNE loc_D40388C 0D4038A8 46 49 MOV R1, R9 0D4038AA 29 00 CMP R1, #0 0D4038AC D0 01 BEQ loc_D4038B2 0D4038AE 24 2D MOVS R4, #0x2D 0D4038B0 E0 05 B loc_D4038BE 0D4038B2 ; --------------------------------------------------------------------------- 0D4038B2 loc_D4038B2 ; CODE XREF: printf+2F0j 0D4038B2 46 52 MOV R2, R10 0D4038B4 2A 00 CMP R2, #0 0D4038B6 D0 01 BEQ loc_D4038BC 0D4038B8 24 2B MOVS R4, #0x2B 0D4038BA E0 00 B loc_D4038BE 0D4038BC ; --------------------------------------------------------------------------- 0D4038BC loc_D4038BC ; CODE XREF: printf+2FAj 0D4038BC 24 00 MOVS R4, #0 0D4038BE loc_D4038BE ; CODE XREF: printf+2F4j 0D4038BE ; printf+2FEj 0D4038BE 1C 30 ADDS R0, R6, #0 0D4038C0 21 18 MOVS R1, #0x18 0D4038C2 F0 00 F9 F7 BL sub_D403CB4 0D4038C6 46 82 MOV R10, R0 0D4038C8 2C 00 CMP R4, #0 0D4038CA D0 01 BEQ loc_D4038D0 0D4038CC 23 01 MOVS R3, #1 0D4038CE 44 9A ADD R10, R3 0D4038D0 loc_D4038D0 ; CODE XREF: printf+30Ej 0D4038D0 45 57 CMP R7, R10 0D4038D2 DD 21 BLE loc_D403918 0D4038D4 99 01 LDR R1, [SP,#0x4C+var_48] 0D4038D6 29 00 CMP R1, #0 0D4038D8 D1 1E BNE loc_D403918 0D4038DA 9A 02 LDR R2, [SP,#0x4C+var_44] 0D4038DC 2A 00 CMP R2, #0 0D4038DE D0 0D BEQ loc_D4038FC 0D4038E0 2C 00 CMP R4, #0 0D4038E2 D0 04 BEQ loc_D4038EE 0D4038E4 46 40 MOV R0, R8 0D4038E6 21 01 MOVS R1, #1 0D4038E8 1C 22 ADDS R2, R4, #0 0D4038EA F7 FF FE 57 BL sub_D40359C 0D4038EE loc_D4038EE ; CODE XREF: printf+326j 0D4038EE 46 40 MOV R0, R8 0D4038F0 46 53 MOV R3, R10 0D4038F2 1A F9 SUBS R1, R7, R3 0D4038F4 22 30 MOVS R2, #0x30 0D4038F6 F7 FF FE 51 BL sub_D40359C 0D4038FA E0 14 B loc_D403926 0D4038FC ; --------------------------------------------------------------------------- 0D4038FC loc_D4038FC ; CODE XREF: printf+322j 0D4038FC 46 40 MOV R0, R8 0D4038FE 46 52 MOV R2, R10 0D403900 1A B9 SUBS R1, R7, R2 0D403902 22 20 MOVS R2, #0x20 0D403904 F7 FF FE 4A BL sub_D40359C 0D403908 2C 00 CMP R4, #0 0D40390A D0 0C BEQ loc_D403926 0D40390C 46 40 MOV R0, R8 0D40390E 21 01 MOVS R1, #1 0D403910 1C 22 ADDS R2, R4, #0 0D403912 F7 FF FE 43 BL sub_D40359C 0D403916 E0 06 B loc_D403926 0D403918 ; --------------------------------------------------------------------------- 0D403918 loc_D403918 ; CODE XREF: printf+316j 0D403918 ; printf+31Cj 0D403918 2C 00 CMP R4, #0 0D40391A D0 04 BEQ loc_D403926 0D40391C 46 40 MOV R0, R8 0D40391E 21 01 MOVS R1, #1 0D403920 1C 22 ADDS R2, R4, #0 0D403922 F7 FF FE 3B BL sub_D40359C 0D403926 loc_D403926 ; CODE XREF: printf+33Ej 0D403926 ; printf+34Ej printf+35Aj ... 0D403926 46 40 MOV R0, R8 0D403928 1C 31 ADDS R1, R6, #0 0D40392A F7 FF FE 25 BL sub_D403578 0D40392E 45 57 CMP R7, R10 0D403930 DD 1B BLE loc_D40396A 0D403932 9B 01 LDR R3, [SP,#0x4C+var_48] 0D403934 2B 00 CMP R3, #0 0D403936 D0 18 BEQ loc_D40396A 0D403938 46 40 MOV R0, R8 0D40393A 46 52 MOV R2, R10 0D40393C 1A B9 SUBS R1, R7, R2 0D40393E 22 20 MOVS R2, #0x20 0D403940 F7 FF FE 2C BL sub_D40359C 0D403944 E0 11 B loc_D40396A 0D403946 ; --------------------------------------------------------------------------- 0D403946 loc_D403946 ; CODE XREF: printf+B2j 0D403946 ; DATA XREF: boot1:0D404054o 0D403946 ; boot1:0D404058o ... 0D403946 46 41 MOV R1, R8 0D403948 68 0B LDR R3, [R1] 0D40394A 46 40 MOV R0, R8 0D40394C 1C 21 ADDS R1, R4, #0 0D40394E 47 98 BLX R3 0D403950 E0 0B B loc_D40396A 0D403950 ; --------------------------------------------------------------------------- 0D403952 00 00 ALIGN 4 0D403954 0D 40 40 10 off_D403954 DCD off_D404010 ; DATA XREF: printf+B6r 0D403958 0D 40 40 D4 off_D403958 DCD a_null ; DATA XREF: printf+108r 0D403958 ; "(null)" 0D40395C 0D 40 40 DC off_D40395C DCD a_nil ; DATA XREF: printf:loc_D403734r 0D40395C ; "(nil)" 0D403960 ; --------------------------------------------------------------------------- 0D403960 loc_D403960 ; CODE XREF: printf+26j 0D403960 46 42 MOV R2, R8 0D403962 68 13 LDR R3, [R2] 0D403964 46 40 MOV R0, R8 0D403966 1C 21 ADDS R1, R4, #0 0D403968 47 98 BLX R3 0D40396A loc_D40396A ; CODE XREF: printf+E6j 0D40396A ; printf+EEj printf+FAj ... 0D40396A 78 2C LDRB R4, [R5] 0D40396C 35 01 ADDS R5, #1 0D40396E 2C 00 CMP R4, #0 0D403970 D0 00 BEQ loc_D403974 0D403972 E6 34 B loc_D4035DE 0D403974 ; --------------------------------------------------------------------------- 0D403974 loc_D403974 ; CODE XREF: printf+20j 0D403974 ; printf+3B4j 0D403974 46 41 MOV R1, R8 0D403976 68 4B LDR R3, [R1,#4] 0D403978 46 40 MOV R0, R8 0D40397A 47 98 BLX R3 0D40397C B0 0A ADD SP, SP, #0x28 0D40397E BC 78 POP {R3-R6} 0D403980 46 98 MOV R8, R3 0D403982 46 A1 MOV R9, R4 0D403984 46 AA MOV R10, R5 0D403986 46 B3 MOV R11, R6 0D403988 BC F0 POP {R4-R7} 0D40398A BC 01 POP {R0} 0D40398C 47 00 BX R0 0D40398C ; End of function printf 0D40398C ; --------------------------------------------------------------------------- 0D40398E 00 00 ALIGN 0x10 0D403990 ; =============== S U B R O U T I N E ======================================= 0D403990 call_printf2 ; CODE XREF: sub_D4039C0+8p 0D403990 var_1C = -0x1C 0D403990 var_18 = -0x18 0D403990 var_14 = -0x14 0D403990 var_10 = -0x10 0D403990 var_C = -0xC 0D403990 B5 10 PUSH {R4,LR} 0D403992 B0 85 SUB SP, SP, #0x14 0D403994 24 00 MOVS R4, #0 0D403996 94 03 STR R4, [SP,#0x1C+var_10] 0D403998 90 02 STR R0, [SP,#0x1C+var_14] 0D40399A 91 04 STR R1, [SP,#0x1C+var_C] 0D40399C 49 06 LDR R1, =(sub_D40355C+1) 0D40399E 91 00 STR R1, [SP,#0x1C+var_1C] 0D4039A0 49 06 LDR R1, =(sub_D403538+1) 0D4039A2 91 01 STR R1, [SP,#0x1C+var_18] 0D4039A4 46 68 MOV R0, SP 0D4039A6 1C 11 ADDS R1, R2, #0 0D4039A8 1C 1A ADDS R2, R3, #0 0D4039AA F7 FF FE 07 BL printf 0D4039AE 98 03 LDR R0, [SP,#0x1C+var_10] 0D4039B0 B0 05 ADD SP, SP, #0x14 0D4039B2 BC 10 POP {R4} 0D4039B4 BC 02 POP {R1} 0D4039B6 47 08 BX R1 0D4039B6 ; --------------------------------------------------------------------------- 0D4039B8 0D 40 35 5D off_D4039B8 DCD sub_D40355C+1 ; DATA XREF: call_printf2+Cr 0D4039BC 0D 40 35 39 off_D4039BC DCD sub_D403538+1 ; DATA XREF: call_printf2+10r 0D4039BC ; End of function call_printf2 0D4039C0 ; =============== S U B R O U T I N E ======================================= 0D4039C0 sub_D4039C0 0D4039C0 var_8 = -8 0D4039C0 B4 0C PUSH {R2,R3} 0D4039C2 B5 00 PUSH {LR} 0D4039C4 AB 01 ADD R3, SP, #0xC+var_8 0D4039C6 CB 04 LDMIA R3!, {R2} 0D4039C8 F7 FF FF E2 BL call_printf2 0D4039CC BC 08 POP {R3} 0D4039CE B0 02 ADD SP, SP, #8 0D4039D0 47 18 BX R3 0D4039D0 ; End of function sub_D4039C0 0D4039D0 ; --------------------------------------------------------------------------- 0D4039D2 46 C0 ALIGN 4 0D4039D4 ; =============== S U B R O U T I N E ======================================= 0D4039D4 ; int __stdcall memcmp(void *haystack, void *needle, unsigned int len) 0D4039D4 memcmp ; CODE XREF: verify_certificate+60p 0D4039D4 ; boot1_main+9Ep 0D4039D4 ; boot1_main+AEp ... 0D4039D4 B5 10 PUSH {R4,LR} 0D4039D6 1C 0C ADDS R4, R1, #0 0D4039D8 1E 11 SUBS R1, R2, #0 0D4039DA D1 01 BNE loc_D4039E0 0D4039DC 20 00 MOVS R0, #0 0D4039DE E0 12 B loc_D403A06 0D4039E0 ; --------------------------------------------------------------------------- 0D4039E0 loc_D4039E0 ; CODE XREF: memcmp+6j 0D4039E0 39 01 SUBS R1, #1 0D4039E2 29 00 CMP R1, #0 0D4039E4 D0 0C BEQ loc_D403A00 0D4039E6 78 02 LDRB R2, [R0] 0D4039E8 78 23 LDRB R3, [R4] 0D4039EA 42 9A CMP R2, R3 0D4039EC D1 08 BNE loc_D403A00 0D4039EE loc_D4039EE ; CODE XREF: memcmp+2Aj 0D4039EE 30 01 ADDS R0, #1 0D4039F0 34 01 ADDS R4, #1 0D4039F2 39 01 SUBS R1, #1 0D4039F4 29 00 CMP R1, #0 0D4039F6 D0 03 BEQ loc_D403A00 0D4039F8 78 02 LDRB R2, [R0] 0D4039FA 78 23 LDRB R3, [R4] 0D4039FC 42 9A CMP R2, R3 0D4039FE D0 F6 BEQ loc_D4039EE 0D403A00 loc_D403A00 ; CODE XREF: memcmp+10j 0D403A00 ; memcmp+18j memcmp+22j 0D403A00 78 02 LDRB R2, [R0] 0D403A02 78 23 LDRB R3, [R4] 0D403A04 1A D0 SUBS R0, R2, R3 0D403A06 loc_D403A06 ; CODE XREF: memcmp+Aj 0D403A06 BC 10 POP {R4} 0D403A08 BC 02 POP {R1} 0D403A0A 47 08 BX R1 0D403A0A ; End of function memcmp 0D403A0C ; =============== S U B R O U T I N E ======================================= 0D403A0C memmove_maybe ; CODE XREF: boot1_main+31Ap 0D403A0C ; boot1_main+40Cp 0D403A0C B5 F0 PUSH {R4-R7,LR} 0D403A0E 46 57 MOV R7, R10 0D403A10 46 46 MOV R6, R8 0D403A12 B4 C0 PUSH {R6,R7} 0D403A14 46 84 MOV R12, R0 0D403A16 1C 14 ADDS R4, R2, #0 0D403A18 1C 05 ADDS R5, R0, #0 0D403A1A 1C 0E ADDS R6, R1, #0 0D403A1C 4B 26 LDR R3, =0x17FFFFF 0D403A1E 45 9C CMP R12, R3 0D403A20 D8 30 BHI loc_D403A84 0D403A22 2A 00 CMP R2, #0 0D403A24 D0 1A BEQ loc_D403A5C 0D403A26 20 03 MOVS R0, #3 0D403A28 46 82 MOV R10, R0 0D403A2A 23 18 MOVS R3, #0x18 0D403A2C 46 98 MOV R8, R3 0D403A2E 27 FF MOVS R7, #0xFF 0D403A30 loc_D403A30 ; CODE XREF: memmove_maybe+4Ej 0D403A30 3C 01 SUBS R4, #1 0D403A32 46 52 MOV R2, R10 0D403A34 40 2A ANDS R2, R5 0D403A36 1A A8 SUBS R0, R5, R2 0D403A38 68 01 LDR R1, [R0] 0D403A3A 00 D2 LSLS R2, R2, #3 0D403A3C 46 43 MOV R3, R8 0D403A3E 1A 9A SUBS R2, R3, R2 0D403A40 1C 3B ADDS R3, R7, #0 0D403A42 40 93 LSLS R3, R2 0D403A44 43 99 BICS R1, R3 0D403A46 78 33 LDRB R3, [R6] 0D403A48 40 93 LSLS R3, R2 0D403A4A 43 19 ORRS R1, R3 0D403A4C 60 01 STR R1, [R0] 0D403A4E 35 01 ADDS R5, #1 0D403A50 78 33 LDRB R3, [R6] 0D403A52 2B 00 CMP R3, #0 0D403A54 D0 02 BEQ loc_D403A5C 0D403A56 36 01 ADDS R6, #1 0D403A58 2C 00 CMP R4, #0 0D403A5A D1 E9 BNE loc_D403A30 0D403A5C loc_D403A5C ; CODE XREF: memmove_maybe+18j 0D403A5C ; memmove_maybe+48j 0D403A5C 3C 01 SUBS R4, #1 0D403A5E D3 24 BCC loc_D403AAA 0D403A60 27 03 MOVS R7, #3 0D403A62 26 18 MOVS R6, #0x18 0D403A64 20 FF MOVS R0, #0xFF 0D403A66 46 80 MOV R8, R0 0D403A68 loc_D403A68 ; CODE XREF: memmove_maybe+74j 0D403A68 1C 2B ADDS R3, R5, #0 0D403A6A 40 3B ANDS R3, R7 0D403A6C 1A E9 SUBS R1, R5, R3 0D403A6E 68 0A LDR R2, [R1] 0D403A70 00 DB LSLS R3, R3, #3 0D403A72 1A F3 SUBS R3, R6, R3 0D403A74 46 40 MOV R0, R8 0D403A76 40 98 LSLS R0, R3 0D403A78 43 82 BICS R2, R0 0D403A7A 60 0A STR R2, [R1] 0D403A7C 35 01 ADDS R5, #1 0D403A7E 3C 01 SUBS R4, #1 0D403A80 D2 F2 BCS loc_D403A68 0D403A82 E0 12 B loc_D403AAA 0D403A84 ; --------------------------------------------------------------------------- 0D403A84 loc_D403A84 ; CODE XREF: memmove_maybe+14j 0D403A84 2A 00 CMP R2, #0 0D403A86 D0 09 BEQ loc_D403A9C 0D403A88 loc_D403A88 ; CODE XREF: memmove_maybe+8Ej 0D403A88 3C 01 SUBS R4, #1 0D403A8A 78 33 LDRB R3, [R6] 0D403A8C 36 01 ADDS R6, #1 0D403A8E 70 2B STRB R3, [R5] 0D403A90 35 01 ADDS R5, #1 0D403A92 06 1B LSLS R3, R3, #0x18 0D403A94 2B 00 CMP R3, #0 0D403A96 D0 01 BEQ loc_D403A9C 0D403A98 2C 00 CMP R4, #0 0D403A9A D1 F5 BNE loc_D403A88 0D403A9C loc_D403A9C ; CODE XREF: memmove_maybe+7Aj 0D403A9C ; memmove_maybe+8Aj 0D403A9C 3C 01 SUBS R4, #1 0D403A9E D3 04 BCC loc_D403AAA 0D403AA0 23 00 MOVS R3, #0 0D403AA2 loc_D403AA2 ; CODE XREF: memmove_maybe+9Cj 0D403AA2 70 2B STRB R3, [R5] 0D403AA4 35 01 ADDS R5, #1 0D403AA6 3C 01 SUBS R4, #1 0D403AA8 D2 FB BCS loc_D403AA2 0D403AAA loc_D403AAA ; CODE XREF: memmove_maybe+52j 0D403AAA ; memmove_maybe+76j 0D403AAA ; memmove_maybe+92j 0D403AAA 46 60 MOV R0, R12 0D403AAC BC 18 POP {R3,R4} 0D403AAE 46 98 MOV R8, R3 0D403AB0 46 A2 MOV R10, R4 0D403AB2 BC F0 POP {R4-R7} 0D403AB4 BC 02 POP {R1} 0D403AB6 47 08 BX R1 0D403AB6 ; --------------------------------------------------------------------------- 0D403AB8 01 7F FF FF dword_D403AB8 DCD 0x17FFFFF ; DATA XREF: memmove_maybe+10r 0D403AB8 ; End of function memmove_maybe 0D403ABC ; =============== S U B R O U T I N E ======================================= 0D403ABC memcpy ; CODE XREF: sha1+C8p 0D403ABC ; sha1+14Ap calc_ecc+E2p ... 0D403ABC B5 F0 PUSH {R4-R7,LR} 0D403ABE 46 57 MOV R7, R10 0D403AC0 46 46 MOV R6, R8 0D403AC2 B4 C0 PUSH {R6,R7} 0D403AC4 1C 07 ADDS R7, R0, #0 0D403AC6 1C 14 ADDS R4, R2, #0 0D403AC8 1C 05 ADDS R5, R0, #0 0D403ACA 1C 0E ADDS R6, R1, #0 0D403ACC 2A 03 CMP R2, #3 0D403ACE D9 0B BLS loc_D403AE8 0D403AD0 1C 02 ADDS R2, R0, #0 0D403AD2 43 0A ORRS R2, R1 0D403AD4 23 03 MOVS R3, #3 0D403AD6 42 1A TST R2, R3 0D403AD8 D1 06 BNE loc_D403AE8 0D403ADA loc_D403ADA ; CODE XREF: memcpy+26j 0D403ADA C9 08 LDMIA R1!, {R3} 0D403ADC C0 08 STMIA R0!, {R3} 0D403ADE 3C 04 SUBS R4, #4 0D403AE0 2C 03 CMP R4, #3 0D403AE2 D8 FA BHI loc_D403ADA 0D403AE4 1C 05 ADDS R5, R0, #0 0D403AE6 1C 0E ADDS R6, R1, #0 0D403AE8 loc_D403AE8 ; CODE XREF: memcpy+12j 0D403AE8 ; memcpy+1Cj 0D403AE8 4B 16 LDR R3, =0x17FFFFF 0D403AEA 42 9F CMP R7, R3 0D403AEC D8 1A BHI loc_D403B24 0D403AEE 3C 01 SUBS R4, #1 0D403AF0 D3 20 BCC loc_D403B34 0D403AF2 23 03 MOVS R3, #3 0D403AF4 46 9A MOV R10, R3 0D403AF6 23 18 MOVS R3, #0x18 0D403AF8 46 98 MOV R8, R3 0D403AFA 23 FF MOVS R3, #0xFF 0D403AFC 46 9C MOV R12, R3 0D403AFE loc_D403AFE ; CODE XREF: memcpy+64j 0D403AFE 46 52 MOV R2, R10 0D403B00 40 2A ANDS R2, R5 0D403B02 1A A8 SUBS R0, R5, R2 0D403B04 68 01 LDR R1, [R0] 0D403B06 00 D2 LSLS R2, R2, #3 0D403B08 46 43 MOV R3, R8 0D403B0A 1A 9A SUBS R2, R3, R2 0D403B0C 46 63 MOV R3, R12 0D403B0E 40 93 LSLS R3, R2 0D403B10 43 99 BICS R1, R3 0D403B12 78 33 LDRB R3, [R6] 0D403B14 40 93 LSLS R3, R2 0D403B16 43 19 ORRS R1, R3 0D403B18 60 01 STR R1, [R0] 0D403B1A 35 01 ADDS R5, #1 0D403B1C 36 01 ADDS R6, #1 0D403B1E 3C 01 SUBS R4, #1 0D403B20 D2 ED BCS loc_D403AFE 0D403B22 E0 07 B loc_D403B34 0D403B24 ; --------------------------------------------------------------------------- 0D403B24 loc_D403B24 ; CODE XREF: memcpy+30j 0D403B24 3C 01 SUBS R4, #1 0D403B26 D3 05 BCC loc_D403B34 0D403B28 loc_D403B28 ; CODE XREF: memcpy+76j 0D403B28 78 33 LDRB R3, [R6] 0D403B2A 36 01 ADDS R6, #1 0D403B2C 70 2B STRB R3, [R5] 0D403B2E 35 01 ADDS R5, #1 0D403B30 3C 01 SUBS R4, #1 0D403B32 D2 F9 BCS loc_D403B28 0D403B34 loc_D403B34 ; CODE XREF: memcpy+34j 0D403B34 ; memcpy+66j memcpy+6Aj 0D403B34 1C 38 ADDS R0, R7, #0 0D403B36 BC 18 POP {R3,R4} 0D403B38 46 98 MOV R8, R3 0D403B3A 46 A2 MOV R10, R4 0D403B3C BC F0 POP {R4-R7} 0D403B3E BC 02 POP {R1} 0D403B40 47 08 BX R1 0D403B40 ; --------------------------------------------------------------------------- 0D403B42 00 00 ALIGN 4 0D403B44 01 7F FF FF dword_D403B44 DCD 0x17FFFFF ; DATA XREF: memcpy:loc_D403AE8r 0D403B44 ; End of function memcpy 0D403B48 ; =============== S U B R O U T I N E ======================================= 0D403B48 memcmp_0 ; CODE XREF: sha1+AEp 0D403B48 ; boot1_main+310p 0D403B48 ; boot1_main+402p ... 0D403B48 B5 F0 PUSH {R4-R7,LR} 0D403B4A 46 57 MOV R7, R10 0D403B4C 46 46 MOV R6, R8 0D403B4E B4 C0 PUSH {R6,R7} 0D403B50 1C 07 ADDS R7, R0, #0 0D403B52 1C 14 ADDS R4, R2, #0 0D403B54 1C 05 ADDS R5, R0, #0 0D403B56 06 09 LSLS R1, R1, #0x18 0D403B58 0E 0E LSRS R6, R1, #0x18 0D403B5A 2A 03 CMP R2, #3 0D403B5C D9 0D BLS loc_D403B7A 0D403B5E 23 03 MOVS R3, #3 0D403B60 42 18 TST R0, R3 0D403B62 D1 0A BNE loc_D403B7A 0D403B64 02 33 LSLS R3, R6, #8 0D403B66 1C 32 ADDS R2, R6, #0 0D403B68 43 1A ORRS R2, R3 0D403B6A 04 13 LSLS R3, R2, #0x10 0D403B6C 43 1A ORRS R2, R3 0D403B6E 1C 01 ADDS R1, R0, #0 0D403B70 loc_D403B70 ; CODE XREF: memcmp_0+2Ej 0D403B70 C1 04 STMIA R1!, {R2} 0D403B72 3C 04 SUBS R4, #4 0D403B74 2C 03 CMP R4, #3 0D403B76 D8 FB BHI loc_D403B70 0D403B78 1C 0D ADDS R5, R1, #0 0D403B7A loc_D403B7A ; CODE XREF: memcmp_0+14j 0D403B7A ; memcmp_0+1Aj 0D403B7A 4B 16 LDR R3, =0x17FFFFF 0D403B7C 42 9F CMP R7, R3 0D403B7E D8 1C BHI loc_D403BBA 0D403B80 3C 01 SUBS R4, #1 0D403B82 D3 20 BCC loc_D403BC6 0D403B84 20 03 MOVS R0, #3 0D403B86 46 82 MOV R10, R0 0D403B88 22 18 MOVS R2, #0x18 0D403B8A 46 90 MOV R8, R2 0D403B8C 23 FF MOVS R3, #0xFF 0D403B8E 46 9C MOV R12, R3 0D403B90 loc_D403B90 ; CODE XREF: memcmp_0+6Ej 0D403B90 46 53 MOV R3, R10 0D403B92 40 2B ANDS R3, R5 0D403B94 1A E9 SUBS R1, R5, R3 0D403B96 68 08 LDR R0, [R1] 0D403B98 00 DB LSLS R3, R3, #3 0D403B9A 46 42 MOV R2, R8 0D403B9C 1A D3 SUBS R3, R2, R3 0D403B9E 46 62 MOV R2, R12 0D403BA0 40 9A LSLS R2, R3 0D403BA2 43 90 BICS R0, R2 0D403BA4 1C 02 ADDS R2, R0, #0 0D403BA6 1C 30 ADDS R0, R6, #0 0D403BA8 40 98 LSLS R0, R3 0D403BAA 1C 03 ADDS R3, R0, #0 0D403BAC 1C 10 ADDS R0, R2, #0 0D403BAE 43 18 ORRS R0, R3 0D403BB0 60 08 STR R0, [R1] 0D403BB2 35 01 ADDS R5, #1 0D403BB4 3C 01 SUBS R4, #1 0D403BB6 D2 EB BCS loc_D403B90 0D403BB8 E0 05 B loc_D403BC6 0D403BBA ; --------------------------------------------------------------------------- 0D403BBA loc_D403BBA ; CODE XREF: memcmp_0+36j 0D403BBA 3C 01 SUBS R4, #1 0D403BBC D3 03 BCC loc_D403BC6 0D403BBE loc_D403BBE ; CODE XREF: memcmp_0+7Cj 0D403BBE 70 2E STRB R6, [R5] 0D403BC0 35 01 ADDS R5, #1 0D403BC2 3C 01 SUBS R4, #1 0D403BC4 D2 FB BCS loc_D403BBE 0D403BC6 loc_D403BC6 ; CODE XREF: memcmp_0+3Aj 0D403BC6 ; memcmp_0+70j memcmp_0+74j 0D403BC6 1C 38 ADDS R0, R7, #0 0D403BC8 BC 18 POP {R3,R4} 0D403BCA 46 98 MOV R8, R3 0D403BCC 46 A2 MOV R10, R4 0D403BCE BC F0 POP {R4-R7} 0D403BD0 BC 02 POP {R1} 0D403BD2 47 08 BX R1 0D403BD2 ; --------------------------------------------------------------------------- 0D403BD4 01 7F FF FF dword_D403BD4 DCD 0x17FFFFF ; DATA XREF: memcmp_0:loc_D403B7Ar 0D403BD4 ; End of function memcmp_0 0D403BD8 ; =============== S U B R O U T I N E ======================================= 0D403BD8 memcpy_maybe ; CODE XREF: boot1_main+364p 0D403BD8 ; boot1_main+36Ep 0D403BD8 ; boot1_main+3CCp ... 0D403BD8 B5 F0 PUSH {R4-R7,LR} 0D403BDA 46 47 MOV R7, R8 0D403BDC B4 80 PUSH {R7} 0D403BDE 1C 07 ADDS R7, R0, #0 0D403BE0 1C 15 ADDS R5, R2, #0 0D403BE2 1C 04 ADDS R4, R0, #0 0D403BE4 1C 0E ADDS R6, R1, #0 0D403BE6 78 03 LDRB R3, [R0] 0D403BE8 2B 00 CMP R3, #0 0D403BEA D0 03 BEQ loc_D403BF4 0D403BEC loc_D403BEC ; CODE XREF: memcpy_maybe+1Aj 0D403BEC 34 01 ADDS R4, #1 0D403BEE 78 23 LDRB R3, [R4] 0D403BF0 2B 00 CMP R3, #0 0D403BF2 D1 FB BNE loc_D403BEC 0D403BF4 loc_D403BF4 ; CODE XREF: memcpy_maybe+12j 0D403BF4 4B 1E LDR R3, =0x17FFFFF 0D403BF6 42 9C CMP R4, R3 0D403BF8 D8 1E BHI loc_D403C38 0D403BFA 3D 01 SUBS R5, #1 0D403BFC D3 31 BCC loc_D403C62 0D403BFE 23 03 MOVS R3, #3 0D403C00 46 98 MOV R8, R3 0D403C02 23 18 MOVS R3, #0x18 0D403C04 46 9C MOV R12, R3 0D403C06 loc_D403C06 ; CODE XREF: memcpy_maybe+5Cj 0D403C06 46 42 MOV R2, R8 0D403C08 40 22 ANDS R2, R4 0D403C0A 1A A0 SUBS R0, R4, R2 0D403C0C 68 01 LDR R1, [R0] 0D403C0E 00 D2 LSLS R2, R2, #3 0D403C10 46 63 MOV R3, R12 0D403C12 1A 9A SUBS R2, R3, R2 0D403C14 23 FF MOVS R3, #0xFF 0D403C16 40 93 LSLS R3, R2 0D403C18 43 99 BICS R1, R3 0D403C1A 78 33 LDRB R3, [R6] 0D403C1C 40 93 LSLS R3, R2 0D403C1E 43 19 ORRS R1, R3 0D403C20 60 01 STR R1, [R0] 0D403C22 34 01 ADDS R4, #1 0D403C24 78 33 LDRB R3, [R6] 0D403C26 2B 00 CMP R3, #0 0D403C28 D0 1B BEQ loc_D403C62 0D403C2A 2D 00 CMP R5, #0 0D403C2C D1 00 BNE loc_D403C30 0D403C2E 70 25 STRB R5, [R4] 0D403C30 loc_D403C30 ; CODE XREF: memcpy_maybe+54j 0D403C30 36 01 ADDS R6, #1 0D403C32 3D 01 SUBS R5, #1 0D403C34 D2 E7 BCS loc_D403C06 0D403C36 E0 14 B loc_D403C62 0D403C38 ; --------------------------------------------------------------------------- 0D403C38 loc_D403C38 ; CODE XREF: memcpy_maybe+20j 0D403C38 3D 01 SUBS R5, #1 0D403C3A D3 12 BCC loc_D403C62 0D403C3C 78 33 LDRB R3, [R6] 0D403C3E 36 01 ADDS R6, #1 0D403C40 70 23 STRB R3, [R4] 0D403C42 34 01 ADDS R4, #1 0D403C44 06 1B LSLS R3, R3, #0x18 0D403C46 2B 00 CMP R3, #0 0D403C48 D0 0B BEQ loc_D403C62 0D403C4A loc_D403C4A ; CODE XREF: memcpy_maybe+88j 0D403C4A 2D 00 CMP R5, #0 0D403C4C D1 00 BNE loc_D403C50 0D403C4E 70 25 STRB R5, [R4] 0D403C50 loc_D403C50 ; CODE XREF: memcpy_maybe+74j 0D403C50 3D 01 SUBS R5, #1 0D403C52 D3 06 BCC loc_D403C62 0D403C54 78 33 LDRB R3, [R6] 0D403C56 36 01 ADDS R6, #1 0D403C58 70 23 STRB R3, [R4] 0D403C5A 34 01 ADDS R4, #1 0D403C5C 06 1B LSLS R3, R3, #0x18 0D403C5E 2B 00 CMP R3, #0 0D403C60 D1 F3 BNE loc_D403C4A 0D403C62 loc_D403C62 ; CODE XREF: memcpy_maybe+24j 0D403C62 ; memcpy_maybe+50j 0D403C62 ; memcpy_maybe+5Ej ... 0D403C62 1C 38 ADDS R0, R7, #0 0D403C64 BC 08 POP {R3} 0D403C66 46 98 MOV R8, R3 0D403C68 BC F0 POP {R4-R7} 0D403C6A BC 02 POP {R1} 0D403C6C 47 08 BX R1 0D403C6C ; --------------------------------------------------------------------------- 0D403C6E 00 00 ALIGN 0x10 0D403C70 01 7F FF FF dword_D403C70 DCD 0x17FFFFF ; DATA XREF: memcpy_maybe:loc_D403BF4r 0D403C70 ; End of function memcpy_maybe 0D403C74 ; =============== S U B R O U T I N E ======================================= 0D403C74 strncmp ; CODE XREF: verify_RSA_sig+8Ej 0D403C74 ; DATA XREF: verify_RSA_sig:off_D402678o 0D403C74 B5 30 PUSH {R4,R5,LR} 0D403C76 1C 04 ADDS R4, R0, #0 0D403C78 1C 0D ADDS R5, R1, #0 0D403C7A 1E 11 SUBS R1, R2, #0 0D403C7C D1 01 BNE loc_D403C82 0D403C7E 20 00 MOVS R0, #0 0D403C80 E0 15 B loc_D403CAE 0D403C82 ; --------------------------------------------------------------------------- 0D403C82 loc_D403C82 ; CODE XREF: strncmp+8j 0D403C82 39 01 SUBS R1, #1 0D403C84 D3 10 BCC loc_D403CA8 0D403C86 78 02 LDRB R2, [R0] 0D403C88 1C 10 ADDS R0, R2, #0 0D403C8A 78 2B LDRB R3, [R5] 0D403C8C 42 9A CMP R2, R3 0D403C8E D1 0B BNE loc_D403CA8 0D403C90 loc_D403C90 ; CODE XREF: strncmp+32j 0D403C90 29 00 CMP R1, #0 0D403C92 D0 09 BEQ loc_D403CA8 0D403C94 28 00 CMP R0, #0 0D403C96 D0 07 BEQ loc_D403CA8 0D403C98 34 01 ADDS R4, #1 0D403C9A 35 01 ADDS R5, #1 0D403C9C 39 01 SUBS R1, #1 0D403C9E D3 03 BCC loc_D403CA8 0D403CA0 78 20 LDRB R0, [R4] 0D403CA2 78 2B LDRB R3, [R5] 0D403CA4 42 98 CMP R0, R3 0D403CA6 D0 F3 BEQ loc_D403C90 0D403CA8 loc_D403CA8 ; CODE XREF: strncmp+10j 0D403CA8 ; strncmp+1Aj strncmp+1Ej ... 0D403CA8 78 22 LDRB R2, [R4] 0D403CAA 78 2B LDRB R3, [R5] 0D403CAC 1A D0 SUBS R0, R2, R3 0D403CAE loc_D403CAE ; CODE XREF: strncmp+Cj 0D403CAE BC 30 POP {R4,R5} 0D403CB0 BC 02 POP {R1} 0D403CB2 47 08 BX R1 0D403CB2 ; End of function strncmp 0D403CB4 ; =============== S U B R O U T I N E ======================================= 0D403CB4 sub_D403CB4 ; CODE XREF: printf+110p 0D403CB4 ; printf+1ECp printf+306p 0D403CB4 B5 00 PUSH {LR} 0D403CB6 1C 02 ADDS R2, R0, #0 0D403CB8 78 13 LDRB R3, [R2] 0D403CBA 2B 00 CMP R3, #0 0D403CBC D0 07 BEQ loc_D403CCE 0D403CBE 39 01 SUBS R1, #1 0D403CC0 D3 05 BCC loc_D403CCE 0D403CC2 loc_D403CC2 ; CODE XREF: sub_D403CB4+18j 0D403CC2 30 01 ADDS R0, #1 0D403CC4 78 03 LDRB R3, [R0] 0D403CC6 2B 00 CMP R3, #0 0D403CC8 D0 01 BEQ loc_D403CCE 0D403CCA 39 01 SUBS R1, #1 0D403CCC D2 F9 BCS loc_D403CC2 0D403CCE loc_D403CCE ; CODE XREF: sub_D403CB4+8j 0D403CCE ; sub_D403CB4+Cj 0D403CCE ; sub_D403CB4+14j 0D403CCE 1A 80 SUBS R0, R0, R2 0D403CD0 BC 02 POP {R1} 0D403CD2 47 08 BX R1 0D403CD2 ; End of function sub_D403CB4 0D403CD4 ; =============== S U B R O U T I N E ======================================= 0D403CD4 delay_1 ; CODE XREF: boot1_main+13Ep 0D403CD4 ; boot1_main+14Ap 0D403CD4 ; clear_S+1Ep ... 0D403CD4 B5 00 PUSH {LR} 0D403CD6 23 00 MOVS R3, #0 0D403CD8 38 04 SUBS R0, #4 0D403CDA 1C 02 ADDS R2, R0, #0 0D403CDC 42 83 CMP R3, R0 0D403CDE D2 02 BCS loc_D403CE6 0D403CE0 loc_D403CE0 ; CODE XREF: delay_1+10j 0D403CE0 33 01 ADDS R3, #1 0D403CE2 42 93 CMP R3, R2 0D403CE4 D3 FC BCC loc_D403CE0 0D403CE6 loc_D403CE6 ; CODE XREF: delay_1+Aj 0D403CE6 BC 01 POP {R0} 0D403CE8 47 00 BX R0 0D403CE8 ; End of function delay_1 0D403CE8 ; --------------------------------------------------------------------------- 0D403CEA 46 C0 ALIGN 4 0D403CEC ; =============== S U B R O U T I N E ======================================= 0D403CEC sub_D403CEC 0D403CEC 46 72 MOV R2, LR 0D403CEE 1C 01 ADDS R1, R0, #0 0D403CF0 20 01 MOVS R0, #1 0D403CF2 DF AB SVC 0xAB 0D403CF4 47 10 BX R2 0D403CF4 ; End of function sub_D403CEC 0D403CF6 ; =============== S U B R O U T I N E ======================================= 0D403CF6 sub_D403CF6 0D403CF6 46 72 MOV R2, LR 0D403CF8 1C 01 ADDS R1, R0, #0 0D403CFA 20 02 MOVS R0, #2 0D403CFC DF AB SVC 0xAB 0D403CFE 47 10 BX R2 0D403CFE ; End of function sub_D403CF6 0D403D00 ; =============== S U B R O U T I N E ======================================= 0D403D00 sub_D403D00 0D403D00 46 72 MOV R2, LR 0D403D02 1C 01 ADDS R1, R0, #0 0D403D04 20 03 MOVS R0, #3 0D403D06 DF AB SVC 0xAB 0D403D08 47 10 BX R2 0D403D08 ; End of function sub_D403D00 0D403D0A ; =============== S U B R O U T I N E ======================================= 0D403D0A debug_write ; CODE XREF: sub_D4034B8+14p 0D403D0A 46 72 MOV R2, LR 0D403D0C 1C 01 ADDS R1, R0, #0 0D403D0E 20 04 MOVS R0, #4 0D403D10 DF AB SVC 0xAB 0D403D12 47 10 BX R2 0D403D12 ; End of function debug_write 0D403D14 ; =============== S U B R O U T I N E ======================================= 0D403D14 sub_D403D14 0D403D14 46 72 MOV R2, LR 0D403D16 1C 01 ADDS R1, R0, #0 0D403D18 20 05 MOVS R0, #5 0D403D1A DF AB SVC 0xAB 0D403D1C 47 10 BX R2 0D403D1C ; End of function sub_D403D14 0D403D1E ; =============== S U B R O U T I N E ======================================= 0D403D1E sub_D403D1E 0D403D1E 46 72 MOV R2, LR 0D403D20 1C 01 ADDS R1, R0, #0 0D403D22 20 06 MOVS R0, #6 0D403D24 DF AB SVC 0xAB 0D403D26 47 10 BX R2 0D403D26 ; End of function sub_D403D1E 0D403D28 ; =============== S U B R O U T I N E ======================================= 0D403D28 sub_D403D28 0D403D28 46 72 MOV R2, LR 0D403D2A 1C 01 ADDS R1, R0, #0 0D403D2C 20 07 MOVS R0, #7 0D403D2E DF AB SVC 0xAB 0D403D30 47 10 BX R2 0D403D30 ; End of function sub_D403D28 0D403D32 ; =============== S U B R O U T I N E ======================================= 0D403D32 sub_D403D32 0D403D32 46 72 MOV R2, LR 0D403D34 1C 01 ADDS R1, R0, #0 0D403D36 20 08 MOVS R0, #8 0D403D38 DF AB SVC 0xAB 0D403D3A 47 10 BX R2 0D403D3A ; End of function sub_D403D32 0D403D3C ; =============== S U B R O U T I N E ======================================= 0D403D3C sub_D403D3C 0D403D3C 46 72 MOV R2, LR 0D403D3E 1C 01 ADDS R1, R0, #0 0D403D40 20 09 MOVS R0, #9 0D403D42 DF AB SVC 0xAB 0D403D44 47 10 BX R2 0D403D44 ; End of function sub_D403D3C 0D403D46 ; =============== S U B R O U T I N E ======================================= 0D403D46 sub_D403D46 0D403D46 46 72 MOV R2, LR 0D403D48 1C 01 ADDS R1, R0, #0 0D403D4A 20 0A MOVS R0, #0xA 0D403D4C DF AB SVC 0xAB 0D403D4E 47 10 BX R2 0D403D4E ; End of function sub_D403D46 0D403D50 ; =============== S U B R O U T I N E ======================================= 0D403D50 sub_D403D50 0D403D50 46 72 MOV R2, LR 0D403D52 1C 01 ADDS R1, R0, #0 0D403D54 20 0C MOVS R0, #0xC 0D403D56 DF AB SVC 0xAB 0D403D58 47 10 BX R2 0D403D58 ; End of function sub_D403D50 0D403D5A ; =============== S U B R O U T I N E ======================================= 0D403D5A sub_D403D5A 0D403D5A 46 72 MOV R2, LR 0D403D5C 1C 01 ADDS R1, R0, #0 0D403D5E 20 0D MOVS R0, #0xD 0D403D60 DF AB SVC 0xAB 0D403D62 47 10 BX R2 0D403D62 ; End of function sub_D403D5A 0D403D64 ; =============== S U B R O U T I N E ======================================= 0D403D64 sub_D403D64 0D403D64 46 72 MOV R2, LR 0D403D66 1C 01 ADDS R1, R0, #0 0D403D68 20 0E MOVS R0, #0xE 0D403D6A DF AB SVC 0xAB 0D403D6C 47 10 BX R2 0D403D6C ; End of function sub_D403D64 0D403D6E ; =============== S U B R O U T I N E ======================================= 0D403D6E sub_D403D6E 0D403D6E 46 72 MOV R2, LR 0D403D70 1C 01 ADDS R1, R0, #0 0D403D72 20 0F MOVS R0, #0xF 0D403D74 DF AB SVC 0xAB 0D403D76 47 10 BX R2 0D403D76 ; End of function sub_D403D6E 0D403D78 ; =============== S U B R O U T I N E ======================================= 0D403D78 sub_D403D78 0D403D78 46 72 MOV R2, LR 0D403D7A 1C 01 ADDS R1, R0, #0 0D403D7C 20 10 MOVS R0, #0x10 0D403D7E DF AB SVC 0xAB 0D403D80 47 10 BX R2 0D403D80 ; End of function sub_D403D78 0D403D82 ; =============== S U B R O U T I N E ======================================= 0D403D82 sub_D403D82 0D403D82 46 72 MOV R2, LR 0D403D84 1C 01 ADDS R1, R0, #0 0D403D86 20 11 MOVS R0, #0x11 0D403D88 DF AB SVC 0xAB 0D403D8A 47 10 BX R2 0D403D8A ; End of function sub_D403D82 0D403D8C ; =============== S U B R O U T I N E ======================================= 0D403D8C sub_D403D8C 0D403D8C 46 72 MOV R2, LR 0D403D8E 1C 01 ADDS R1, R0, #0 0D403D90 20 12 MOVS R0, #0x12 0D403D92 DF AB SVC 0xAB 0D403D94 47 10 BX R2 0D403D94 ; End of function sub_D403D8C 0D403D96 ; =============== S U B R O U T I N E ======================================= 0D403D96 sub_D403D96 0D403D96 46 72 MOV R2, LR 0D403D98 1C 01 ADDS R1, R0, #0 0D403D9A 20 13 MOVS R0, #0x13 0D403D9C DF AB SVC 0xAB 0D403D9E 47 10 BX R2 0D403D9E ; End of function sub_D403D96 0D403DA0 ; =============== S U B R O U T I N E ======================================= 0D403DA0 sub_D403DA0 0D403DA0 46 72 MOV R2, LR 0D403DA2 1C 01 ADDS R1, R0, #0 0D403DA4 20 15 MOVS R0, #0x15 0D403DA6 DF AB SVC 0xAB 0D403DA8 47 10 BX R2 0D403DA8 ; End of function sub_D403DA0 0D403DAA ; =============== S U B R O U T I N E ======================================= 0D403DAA sub_D403DAA 0D403DAA 46 72 MOV R2, LR 0D403DAC 1C 01 ADDS R1, R0, #0 0D403DAE 20 16 MOVS R0, #0x16 0D403DB0 DF AB SVC 0xAB 0D403DB2 47 10 BX R2 0D403DB2 ; End of function sub_D403DAA 0D403DB4 ; =============== S U B R O U T I N E ======================================= 0D403DB4 sub_D403DB4 0D403DB4 46 72 MOV R2, LR 0D403DB6 1C 01 ADDS R1, R0, #0 0D403DB8 20 30 MOVS R0, #0x30 0D403DBA DF AB SVC 0xAB 0D403DBC 47 10 BX R2 0D403DBC ; End of function sub_D403DB4 0D403DBE ; =============== S U B R O U T I N E ======================================= 0D403DBE sub_D403DBE 0D403DBE 46 72 MOV R2, LR 0D403DC0 1C 01 ADDS R1, R0, #0 0D403DC2 20 31 MOVS R0, #0x31 0D403DC4 DF AB SVC 0xAB 0D403DC6 47 10 BX R2 0D403DC6 ; End of function sub_D403DBE 0D403DC8 ; =============== S U B R O U T I N E ======================================= 0D403DC8 sub_D403DC8 ; CODE XREF: init_dram+9Ap 0D403DC8 ; init_dram+86Ap 0D403DC8 ; init_dram+896p ... 0D403DC8 29 00 CMP R1, #0 0D403DCA D0 34 BEQ loc_D403E36 0D403DCC 23 01 MOVS R3, #1 0D403DCE 22 00 MOVS R2, #0 0D403DD0 B4 10 PUSH {R4} 0D403DD2 42 88 CMP R0, R1 0D403DD4 D3 2C BCC loc_D403E30 0D403DD6 24 01 07 24 MOVLS R4, 0x10000000 0D403DDA loc_D403DDA ; CODE XREF: sub_D403DC8+1Ej 0D403DDA 42 A1 CMP R1, R4 0D403DDC D2 04 BCS loc_D403DE8 0D403DDE 42 81 CMP R1, R0 0D403DE0 D2 02 BCS loc_D403DE8 0D403DE2 01 09 LSLS R1, R1, #4 0D403DE4 01 1B LSLS R3, R3, #4 0D403DE6 E7 F8 B loc_D403DDA 0D403DE8 ; --------------------------------------------------------------------------- 0D403DE8 loc_D403DE8 ; CODE XREF: sub_D403DC8+14j 0D403DE8 ; sub_D403DC8+18j 0D403DE8 00 E4 LSLS R4, R4, #3 0D403DEA loc_D403DEA ; CODE XREF: sub_D403DC8+2Ej 0D403DEA 42 A1 CMP R1, R4 0D403DEC D2 04 BCS loc_D403DF8 0D403DEE 42 81 CMP R1, R0 0D403DF0 D2 02 BCS loc_D403DF8 0D403DF2 00 49 LSLS R1, R1, #1 0D403DF4 00 5B LSLS R3, R3, #1 0D403DF6 E7 F8 B loc_D403DEA 0D403DF8 ; --------------------------------------------------------------------------- 0D403DF8 loc_D403DF8 ; CODE XREF: sub_D403DC8+24j 0D403DF8 ; sub_D403DC8+28j 0D403DF8 ; sub_D403DC8+66j 0D403DF8 42 88 CMP R0, R1 0D403DFA D3 01 BCC loc_D403E00 0D403DFC 1A 40 SUBS R0, R0, R1 0D403DFE 43 1A ORRS R2, R3 0D403E00 loc_D403E00 ; CODE XREF: sub_D403DC8+32j 0D403E00 08 4C LSRS R4, R1, #1 0D403E02 42 A0 CMP R0, R4 0D403E04 D3 02 BCC loc_D403E0C 0D403E06 1B 00 SUBS R0, R0, R4 0D403E08 08 5C LSRS R4, R3, #1 0D403E0A 43 22 ORRS R2, R4 0D403E0C loc_D403E0C ; CODE XREF: sub_D403DC8+3Cj 0D403E0C 08 8C LSRS R4, R1, #2 0D403E0E 42 A0 CMP R0, R4 0D403E10 D3 02 BCC loc_D403E18 0D403E12 1B 00 SUBS R0, R0, R4 0D403E14 08 9C LSRS R4, R3, #2 0D403E16 43 22 ORRS R2, R4 0D403E18 loc_D403E18 ; CODE XREF: sub_D403DC8+48j 0D403E18 08 CC LSRS R4, R1, #3 0D403E1A 42 A0 CMP R0, R4 0D403E1C D3 02 BCC loc_D403E24 0D403E1E 1B 00 SUBS R0, R0, R4 0D403E20 08 DC LSRS R4, R3, #3 0D403E22 43 22 ORRS R2, R4 0D403E24 loc_D403E24 ; CODE XREF: sub_D403DC8+54j 0D403E24 28 00 CMP R0, #0 0D403E26 D0 03 BEQ loc_D403E30 0D403E28 09 1B LSRS R3, R3, #4 0D403E2A D0 01 BEQ loc_D403E30 0D403E2C 09 09 LSRS R1, R1, #4 0D403E2E E7 E3 B loc_D403DF8 0D403E30 ; --------------------------------------------------------------------------- 0D403E30 loc_D403E30 ; CODE XREF: sub_D403DC8+Cj 0D403E30 ; sub_D403DC8+5Ej 0D403E30 ; sub_D403DC8+62j 0D403E30 1C 10 ADDS R0, R2, #0 0D403E32 BC 10 POP {R4} 0D403E34 47 70 BX LR 0D403E36 ; --------------------------------------------------------------------------- 0D403E36 loc_D403E36 ; CODE XREF: sub_D403DC8+2j 0D403E36 B5 00 PUSH {LR} 0D403E38 F0 00 F8 B8 BL nullsub_2 0D403E3C 20 00 MOVS R0, #0 0D403E3E BD 00 POP {PC} 0D403E3E ; End of function sub_D403DC8 0D403E40 ; =============== S U B R O U T I N E ======================================= 0D403E40 sub_D403E40 ; CODE XREF: printf+2E2p 0D403E40 29 00 CMP R1, #0 0D403E42 D0 41 BEQ loc_D403EC8 0D403E44 B4 10 PUSH {R4} 0D403E46 1C 04 ADDS R4, R0, #0 0D403E48 40 4C EORS R4, R1 0D403E4A 46 A4 MOV R12, R4 0D403E4C 23 01 MOVS R3, #1 0D403E4E 22 00 MOVS R2, #0 0D403E50 29 00 CMP R1, #0 0D403E52 D5 00 BPL loc_D403E56 0D403E54 42 49 NEGS R1, R1 0D403E56 loc_D403E56 ; CODE XREF: sub_D403E40+12j 0D403E56 28 00 CMP R0, #0 0D403E58 D5 00 BPL loc_D403E5C 0D403E5A 42 40 NEGS R0, R0 0D403E5C loc_D403E5C ; CODE XREF: sub_D403E40+18j 0D403E5C 42 88 CMP R0, R1 0D403E5E D3 2C BCC loc_D403EBA 0D403E60 24 01 07 24 MOVLS R4, 0x10000000 0D403E64 loc_D403E64 ; CODE XREF: sub_D403E40+30j 0D403E64 42 A1 CMP R1, R4 0D403E66 D2 04 BCS loc_D403E72 0D403E68 42 81 CMP R1, R0 0D403E6A D2 02 BCS loc_D403E72 0D403E6C 01 09 LSLS R1, R1, #4 0D403E6E 01 1B LSLS R3, R3, #4 0D403E70 E7 F8 B loc_D403E64 0D403E72 ; --------------------------------------------------------------------------- 0D403E72 loc_D403E72 ; CODE XREF: sub_D403E40+26j 0D403E72 ; sub_D403E40+2Aj 0D403E72 00 E4 LSLS R4, R4, #3 0D403E74 loc_D403E74 ; CODE XREF: sub_D403E40+40j 0D403E74 42 A1 CMP R1, R4 0D403E76 D2 04 BCS loc_D403E82 0D403E78 42 81 CMP R1, R0 0D403E7A D2 02 BCS loc_D403E82 0D403E7C 00 49 LSLS R1, R1, #1 0D403E7E 00 5B LSLS R3, R3, #1 0D403E80 E7 F8 B loc_D403E74 0D403E82 ; --------------------------------------------------------------------------- 0D403E82 loc_D403E82 ; CODE XREF: sub_D403E40+36j 0D403E82 ; sub_D403E40+3Aj 0D403E82 ; sub_D403E40+78j 0D403E82 42 88 CMP R0, R1 0D403E84 D3 01 BCC loc_D403E8A 0D403E86 1A 40 SUBS R0, R0, R1 0D403E88 43 1A ORRS R2, R3 0D403E8A loc_D403E8A ; CODE XREF: sub_D403E40+44j 0D403E8A 08 4C LSRS R4, R1, #1 0D403E8C 42 A0 CMP R0, R4 0D403E8E D3 02 BCC loc_D403E96 0D403E90 1B 00 SUBS R0, R0, R4 0D403E92 08 5C LSRS R4, R3, #1 0D403E94 43 22 ORRS R2, R4 0D403E96 loc_D403E96 ; CODE XREF: sub_D403E40+4Ej 0D403E96 08 8C LSRS R4, R1, #2 0D403E98 42 A0 CMP R0, R4 0D403E9A D3 02 BCC loc_D403EA2 0D403E9C 1B 00 SUBS R0, R0, R4 0D403E9E 08 9C LSRS R4, R3, #2 0D403EA0 43 22 ORRS R2, R4 0D403EA2 loc_D403EA2 ; CODE XREF: sub_D403E40+5Aj 0D403EA2 08 CC LSRS R4, R1, #3 0D403EA4 42 A0 CMP R0, R4 0D403EA6 D3 02 BCC loc_D403EAE 0D403EA8 1B 00 SUBS R0, R0, R4 0D403EAA 08 DC LSRS R4, R3, #3 0D403EAC 43 22 ORRS R2, R4 0D403EAE loc_D403EAE ; CODE XREF: sub_D403E40+66j 0D403EAE 28 00 CMP R0, #0 0D403EB0 D0 03 BEQ loc_D403EBA 0D403EB2 09 1B LSRS R3, R3, #4 0D403EB4 D0 01 BEQ loc_D403EBA 0D403EB6 09 09 LSRS R1, R1, #4 0D403EB8 E7 E3 B loc_D403E82 0D403EBA ; --------------------------------------------------------------------------- 0D403EBA loc_D403EBA ; CODE XREF: sub_D403E40+1Ej 0D403EBA ; sub_D403E40+70j 0D403EBA ; sub_D403E40+74j 0D403EBA 1C 10 ADDS R0, R2, #0 0D403EBC 46 64 MOV R4, R12 0D403EBE 2C 00 CMP R4, #0 0D403EC0 D5 00 BPL loc_D403EC4 0D403EC2 42 40 NEGS R0, R0 0D403EC4 loc_D403EC4 ; CODE XREF: sub_D403E40+80j 0D403EC4 BC 10 POP {R4} 0D403EC6 47 70 BX LR 0D403EC8 ; --------------------------------------------------------------------------- 0D403EC8 loc_D403EC8 ; CODE XREF: sub_D403E40+2j 0D403EC8 B5 00 PUSH {LR} 0D403ECA F0 00 F8 6F BL nullsub_2 0D403ECE 20 00 MOVS R0, #0 0D403ED0 BD 00 POP {PC} 0D403ED0 ; End of function sub_D403E40 0D403ED0 ; --------------------------------------------------------------------------- 0D403ED2 46 C0 ALIGN 4 0D403ED4 ; =============== S U B R O U T I N E ======================================= 0D403ED4 sub_D403ED4 ; CODE XREF: printf+2D6p 0D403ED4 23 01 MOVS R3, #1 0D403ED6 29 00 CMP R1, #0 0D403ED8 D0 62 BEQ loc_D403FA0 0D403EDA D5 00 BPL loc_D403EDE 0D403EDC 42 49 NEGS R1, R1 0D403EDE loc_D403EDE ; CODE XREF: sub_D403ED4+6j 0D403EDE B4 10 PUSH {R4} 0D403EE0 B4 01 PUSH {R0} 0D403EE2 28 00 CMP R0, #0 0D403EE4 D5 00 BPL loc_D403EE8 0D403EE6 42 40 NEGS R0, R0 0D403EE8 loc_D403EE8 ; CODE XREF: sub_D403ED4+10j 0D403EE8 42 88 CMP R0, R1 0D403EEA D3 53 BCC loc_D403F94 0D403EEC 24 01 07 24 MOVLS R4, 0x10000000 0D403EF0 loc_D403EF0 ; CODE XREF: sub_D403ED4+28j 0D403EF0 42 A1 CMP R1, R4 0D403EF2 D2 04 BCS loc_D403EFE 0D403EF4 42 81 CMP R1, R0 0D403EF6 D2 02 BCS loc_D403EFE 0D403EF8 01 09 LSLS R1, R1, #4 0D403EFA 01 1B LSLS R3, R3, #4 0D403EFC E7 F8 B loc_D403EF0 0D403EFE ; --------------------------------------------------------------------------- 0D403EFE loc_D403EFE ; CODE XREF: sub_D403ED4+1Ej 0D403EFE ; sub_D403ED4+22j 0D403EFE 00 E4 LSLS R4, R4, #3 0D403F00 loc_D403F00 ; CODE XREF: sub_D403ED4+38j 0D403F00 42 A1 CMP R1, R4 0D403F02 D2 04 BCS loc_D403F0E 0D403F04 42 81 CMP R1, R0 0D403F06 D2 02 BCS loc_D403F0E 0D403F08 00 49 LSLS R1, R1, #1 0D403F0A 00 5B LSLS R3, R3, #1 0D403F0C E7 F8 B loc_D403F00 0D403F0E ; --------------------------------------------------------------------------- 0D403F0E loc_D403F0E ; CODE XREF: sub_D403ED4+2Ej 0D403F0E ; sub_D403ED4+32j 0D403F0E ; sub_D403ED4+84j 0D403F0E 22 00 MOVS R2, #0 0D403F10 42 88 CMP R0, R1 0D403F12 D3 00 BCC loc_D403F16 0D403F14 1A 40 SUBS R0, R0, R1 0D403F16 loc_D403F16 ; CODE XREF: sub_D403ED4+3Ej 0D403F16 08 4C LSRS R4, R1, #1 0D403F18 42 A0 CMP R0, R4 0D403F1A D3 05 BCC loc_D403F28 0D403F1C 1B 00 SUBS R0, R0, R4 0D403F1E 46 9C MOV R12, R3 0D403F20 24 01 MOVS R4, #1 0D403F22 41 E3 RORS R3, R4 0D403F24 43 1A ORRS R2, R3 0D403F26 46 63 MOV R3, R12 0D403F28 loc_D403F28 ; CODE XREF: sub_D403ED4+46j 0D403F28 08 8C LSRS R4, R1, #2 0D403F2A 42 A0 CMP R0, R4 0D403F2C D3 05 BCC loc_D403F3A 0D403F2E 1B 00 SUBS R0, R0, R4 0D403F30 46 9C MOV R12, R3 0D403F32 24 02 MOVS R4, #2 0D403F34 41 E3 RORS R3, R4 0D403F36 43 1A ORRS R2, R3 0D403F38 46 63 MOV R3, R12 0D403F3A loc_D403F3A ; CODE XREF: sub_D403ED4+58j 0D403F3A 08 CC LSRS R4, R1, #3 0D403F3C 42 A0 CMP R0, R4 0D403F3E D3 05 BCC loc_D403F4C 0D403F40 1B 00 SUBS R0, R0, R4 0D403F42 46 9C MOV R12, R3 0D403F44 24 03 MOVS R4, #3 0D403F46 41 E3 RORS R3, R4 0D403F48 43 1A ORRS R2, R3 0D403F4A 46 63 MOV R3, R12 0D403F4C loc_D403F4C ; CODE XREF: sub_D403ED4+6Aj 0D403F4C 46 9C MOV R12, R3 0D403F4E 28 00 CMP R0, #0 0D403F50 D0 03 BEQ loc_D403F5A 0D403F52 09 1B LSRS R3, R3, #4 0D403F54 D0 01 BEQ loc_D403F5A 0D403F56 09 09 LSRS R1, R1, #4 0D403F58 E7 D9 B loc_D403F0E 0D403F5A ; --------------------------------------------------------------------------- 0D403F5A loc_D403F5A ; CODE XREF: sub_D403ED4+7Cj 0D403F5A ; sub_D403ED4+80j 0D403F5A 24 0E 07 24 MOVLS R4, 0xE0000000 0D403F5E 40 22 ANDS R2, R4 0D403F60 D0 18 BEQ loc_D403F94 0D403F62 46 63 MOV R3, R12 0D403F64 24 07 MOVS R4, #7 0D403F66 42 23 TST R3, R4 0D403F68 D0 14 BEQ loc_D403F94 0D403F6A 46 63 MOV R3, R12 0D403F6C 24 03 MOVS R4, #3 0D403F6E 41 E3 RORS R3, R4 0D403F70 42 1A TST R2, R3 0D403F72 D0 01 BEQ loc_D403F78 0D403F74 08 CC LSRS R4, R1, #3 0D403F76 19 00 ADDS R0, R0, R4 0D403F78 loc_D403F78 ; CODE XREF: sub_D403ED4+9Ej 0D403F78 46 63 MOV R3, R12 0D403F7A 24 02 MOVS R4, #2 0D403F7C 41 E3 RORS R3, R4 0D403F7E 42 1A TST R2, R3 0D403F80 D0 01 BEQ loc_D403F86 0D403F82 08 8C LSRS R4, R1, #2 0D403F84 19 00 ADDS R0, R0, R4 0D403F86 loc_D403F86 ; CODE XREF: sub_D403ED4+ACj 0D403F86 46 63 MOV R3, R12 0D403F88 24 01 MOVS R4, #1 0D403F8A 41 E3 RORS R3, R4 0D403F8C 42 1A TST R2, R3 0D403F8E D0 01 BEQ loc_D403F94 0D403F90 08 4C LSRS R4, R1, #1 0D403F92 19 00 ADDS R0, R0, R4 0D403F94 loc_D403F94 ; CODE XREF: sub_D403ED4+16j 0D403F94 ; sub_D403ED4+8Cj 0D403F94 ; sub_D403ED4+94j ... 0D403F94 BC 10 POP {R4} 0D403F96 2C 00 CMP R4, #0 0D403F98 D5 00 BPL loc_D403F9C 0D403F9A 42 40 NEGS R0, R0 0D403F9C loc_D403F9C ; CODE XREF: sub_D403ED4+C4j 0D403F9C BC 10 POP {R4} 0D403F9E 47 70 BX LR 0D403FA0 ; --------------------------------------------------------------------------- 0D403FA0 loc_D403FA0 ; CODE XREF: sub_D403ED4+4j 0D403FA0 B5 00 PUSH {LR} 0D403FA2 F0 00 F8 03 BL nullsub_2 0D403FA6 20 00 MOVS R0, #0 0D403FA8 BD 00 POP {PC} 0D403FA8 ; End of function sub_D403ED4 0D403FA8 ; --------------------------------------------------------------------------- 0D403FAA 46 C0 ALIGN 4 0D403FAC ; [00000002 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] 0D403FAE 46 C0 ALIGN 0x10 0D403FB0 ; =============== S U B R O U T I N E ======================================= 0D403FB0 ; Attributes: thunk 0D403FB0 jump_to_main ; CODE XREF: boot1_start+44p 0D403FB0 E5 9F C0 04 LDR R12, =(boot1_main+1 - off_D403FBC) 0D403FB4 E0 8C C0 0F ADD R12, R12, PC 0D403FB8 E1 2F FF 1C BX R12 0D403FB8 ; --------------------------------------------------------------------------- 0D403FBC FF FF C4 D9 off_D403FBC DCD boot1_main+1 - off_D403FBC ; DATA XREF: jump_to_mainr 0D403FBC ; jump_to_main:off_D403FBCo 0D403FBC ; End of function jump_to_main 0D403FC0 26 F2 9A 40+boot2_magic DCD 0x26F29A40,0x1EE684CF ; DATA XREF: boot1_main:off_D400748o 0D403FC8 0D 40 17 90+jpt_D403FC8 DCW 0xD40 ; DATA XREF: call_ahbMemFlush:off_D4017D0o 0D403FC8 0D 40 17 90+ DCW 0x1790 ; jump table for switch statement 0D403FC8 0D 40 17 AE+ DCW 0xD40 0D403FC8 0D 40 17 B2+ DCW 0x1790 0D403FC8 0D 40 17 B6+ DCW 0xD40 0D403FC8 0D 40 17 B6+ DCW 0x17AE 0D403FC8 0D 40 DCW 0xD40 0D403FC8 DCW 0x17B2 0D403FC8 DCW 0xD40 0D403FC8 DCW 0x17B6 0D403FC8 DCW 0xD40 0D403FC8 DCW 0x17B6 0D403FC8 DCW 0xD40 0D403FE2 17 AE DCW 0x17AE 0D403FE4 0D 40 17 B2 DCD loc_D4017B2 0D403FE8 0D 40 17 B2 DCD loc_D4017B2 0D403FEC 0D 40 17 B2 DCD loc_D4017B2 0D403FF0 0D 40 17 B2 DCD loc_D4017B2 0D403FF4 0D 40 17 90 DCD loc_D401790 0D403FF8 0D 40 17 B6 DCD loc_D4017B6 0D403FFC 0D 40 17 AA+jpt_D403FFC DCD loc_D4017AA, loc_D4017A6, loc_D4017A2, loc_D40179E 0D403FFC 0D 40 17 A6+ ; DATA XREF: call_ahbMemFlush:off_D4017E0o 0D403FFC 0D 40 17 A2+ ; jump table for switch statement 0D40400C 0D 40 17 9A DCD loc_D40179A 0D404010 0D 40 37 0C+off_D404010 DCW 0xD40 ; DATA XREF: printf:off_D403954o 0D404010 0D 40 39 46+ DCW 0x370C ; jump table for switch statement 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 36 78+ DCW 0x3946 0D404010 0D 40 38 6E+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 39 46+ DCW 0xD40 0D404010 0D 40 39 46+ DCW 0x3946 0D404010 0D 40 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404010 DCW 0x3678 0D404010 DCW 0xD40 0D404010 DCW 0x386E 0D404010 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404010 DCW 0x3946 0D404010 DCW 0xD40 0D404052 39 46 DCW 0x3946 0D404054 0D 40 39 46 DCD loc_D403946 0D404058 0D 40 39 46 DCD loc_D403946 0D40405C 0D 40 39 46 DCD loc_D403946 0D404060 0D 40 39 46 DCD loc_D403946 0D404064 0D 40 39 46 DCD loc_D403946 0D404068 0D 40 39 46 DCD loc_D403946 0D40406C 0D 40 39 46 DCD loc_D403946 0D404070 0D 40 37 0C DCD loc_D40370C 0D404074 0D 40 39 46 DCD loc_D403946 0D404078 0D 40 39 46 DCD loc_D403946 0D40407C 0D 40 36 B8 DCD loc_D4036B8 0D404080 0D 40 39 46 DCD loc_D403946 0D404084 0D 40 38 6E DCD loc_D40386E 0D404088 0D 40 39 46 DCD loc_D403946 0D40408C 0D 40 39 46 DCD loc_D403946 0D404090 0D 40 37 0C DCD loc_D40370C 0D404094 52 6F 6F 74+a_Root DCB "Root",0 ; DATA XREF: boot1_main:off_D400A18o 0D404099 00 00 00 DCB 0, 0, 0 0D40409C 43 41 00 a_CA DCB "CA",0 ; DATA XREF: boot1_main:off_D400A28o 0D40409F 00 DCB 0 0D4040A0 2D 00 dash DCB "-",0 ; DATA XREF: boot1_main:off_D400A2Co 0D4040A2 00 00 DCW 0 0D4040A4 43 50 00 a_CP DCB "CP",0 ; DATA XREF: boot1_main:off_D400A3Co 0D4040A7 00 DCB 0 0D4040A8 58 53 00 a_XS DCB "XS",0 ; DATA XREF: boot1_main:off_D400A50o 0D4040AB 00 DCB 0 0D4040AC 45 52 52 4F+a_ERRORahbMemFlush0xxdidnotack DCB "ERROR: ahbMemFlush(0x%x) did not ack!",0xA,0 0D4040AC 52 3A 20 61+ ; DATA XREF: call_ahbMemFlush:off_D4017E4o 0D4040D3 00 DCB 0 0D4040D4 28 6E 75 6C+a_null DCB "(null)",0 ; DATA XREF: printf:off_D403958o 0D4040DB 00 DCB 0 0D4040DC 28 6E 69 6C+a_nil DCB "(nil)",0 ; DATA XREF: printf:off_D40395Co 0D4040E2 00 00 DCW 0 0D4040E4 00 00 00 00+ ALIGN 0x20 0D404100 EB E4 2A 22+common_key DCD 0xEBE42A22,0x5E8593E4,0x48D9C545,0x7381AAF7 0D404100 5E 85 93 E4+ ; DATA XREF: boot1_main:off_D400DACo 0D404110 01 00 01 00 root_exponent DCD 0x1000100 ; DATA XREF: boot1_main:off_D400A1Co 0D404114 F8 24 6C 58+root_key DCD 0xF8246C58,0xBAE75003,0x1FBB7C2,0xEBE00105,0x71DA9223,0x78F0514E,0xC0031DD0,0xD21ED3D0,0x7EFC8520,0x69B5DE9B,0xB951A8BC,0x90A24492 0D404114 BA E7 50 03+ ; DATA XREF: boot1_main:off_D400A20o 0D404114 01 FB B7 C2+ DCD 0x6D379295,0xAE9436AA,0xA6A30251,0xC7B1DED,0xD5FB2086,0x9D7F3016,0xF6BE65D3,0x83A16DB3,0x321B9535,0x1890B170,0x2937EE1,0x93F57E99 0D404114 EB E0 01 05+ DCD 0xA2474E9D,0x3824C7AE,0xE38541F5,0x67E7518C,0x7A0E38E7,0xEBAF4119,0x1BCFF17B,0x42A6B4ED,0xE6CE8DE7,0x318F7F52,0x4B3990E,0x226745AF 0D404114 71 DA 92 23+ DCD 0xD485B244,0x93008B08,0xC7F6B7E5,0x6B02B3E8,0xFE0C9D85,0x9CB8B682,0x23B8AB27,0xEE5F6538,0x78B2DB9,0x1E2A153E,0x85818072,0xA23B6DD9 0D404114 78 F0 51 4E+ DCD 0x3281054F,0x6FB0F6F5,0xAD283ECA,0xB7AF354,0x55E03DA7,0xB68326F3,0xEC834AF3,0x14048AC6,0xDF20D285,0x8673CAB,0x62A2C7BC,0x131A533E 0D404114 C0 03 1D D0+ DCD 0xB66806B,0x1C30664B,0x372331BD,0xC4B0CAD8,0xD11EE7BB,0xD9285548,0xAAEC1F66,0xE821B3C8,0xA0476900,0xC5E688E8,0xCCE3C61,0xD69CBBA1 0D404114 D2 1E D3 D0+ DCD 0x37C6604F,0x7A72DD8C,0x7B3E3D51,0x290DAA6A,0x597B081F,0x9D3633A3,0x467A3561,0x9ACA7DD,0x7D2E2FB2,0xC1AEB8E2,0xF4892D8,0xB9F8B46F 0D404114 7E FC 85 20+ DCD 0x4E3C11F4,0xF47D8B75,0x7DFEFEA3,0x899C3359,0x5C5EFDEB,0xCBABE841,0x3E3A9A80,0x3C69356E,0xB2B2AD5C,0xC4C85845,0x5EF5F7B3,0x644B47C 0D404114 69 B5 DE 9B+ DCD 0x64068CDF,0x809F7602,0x5A2DB446,0xE03D7CF6,0x2F34E702,0x457B02A4,0xCF5D9DD5,0x3CA53A7C,0xA629788C,0x67CA08BF,0xECCA43A9,0x57AD16C9 0D404114 B9 51 A8 BC+ DCD 0x4E1CD875,0xCA107DCE,0x7E0118F0,0xDF6BFEE5,0x1DDBD991,0xC26E60CD,0x4858AA59,0x2C820075,0xF29F526C,0x917C6FE5,0x403EA7D4,0xA50CEC3B 0D404114 90 A2 44 92+ DCD 0x7384DE88,0x6E82D2EB,0x4D4E42B5,0xF2B149A8,0x1EA7CE71,0x44DC2994,0xCFC44E1F 0D404310 91 CB D4 95 DCD 0x91CBD495 0D404314 00 00 00 01 dword_D404314 DCD 1 ; DATA XREF: delay_0:off_D402538o 0D404314 ; sub_D4025A0:off_D4025A8o 0D404318 00 00 00 01 DCD 1 0D40431C 00 00 00 00 DCD 0 0D404320 ?? ?? ?? ??+dword_D404320 % 0xACDC ; DATA XREF: memfill:starto 0D404320 ?? ?? ?? ??+ ; memfill:endo 0D40EFFC ?? ?? ?? ?? boot1_stack % 4 ; DATA XREF: memfill:off_D400078o 0D40EFFC ; boot1 ends