Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Processor : ARMB
- ; ARM architecture: metaarm
- ; Target assembler: Generic assembler for ARM
- ; Byte sex : Big endian
- ; ===========================================================================
- ; Segment type: Regular
- AREA NAND, DATA, ALIGN=0
- ; ORG 0xD010000
- NAND_CTRL % 4 ; DATA XREF: NAND_Read+2Eo
- ; SRAM:off_D4115E4o ...
- NAND_CONFIG % 4 ; DATA XREF: Main+27Co Main+27Ew ...
- NAND_ADDR1 % 4
- NAND_ADDR2 % 4 ; DATA XREF: sub_D4115EC+4Ao
- ; SRAM:off_D411760o
- NAND_DATABUF % 4 ; DATA XREF: NAND_Read+Co
- ; SRAM:off_D4115DCo ...
- NAND_ECCBUF % 4 ; DATA XREF: sub_D4115EC+74o
- ; SRAM:off_D411768o
- NAND_UNK1 % 4 ; DATA XREF: Main+28Ao Main+28Cw ...
- NAND_UNK2 % 4
- ; NAND ends
- ; ===========================================================================
- ; Segment type: Regular
- AREA AES, DATA, ALIGN=0
- ; ORG 0xD020000
- AES_CTRL % 4 ; DATA XREF: Main+52o Main+54w ...
- AES_SRC % 4 ; DATA XREF: Main+6Cw SRAM:0D411F76o ...
- AES_DEST % 4 ; DATA XREF: Main+70w
- AES_KEY % 4 ; DATA XREF: Main+58w Main+5Aw ...
- AES_IV_0 % 4 ; DATA XREF: Main+62w Main+64w ...
- ; AES ends
- ; ===========================================================================
- ; Segment type: Regular
- AREA SHA, DATA, ALIGN=0
- ; ORG 0xD030000
- SHA_CMD % 4 ; DATA XREF: Main+78o Main+7Aw ...
- SHA_SRC % 4 ; DATA XREF: Main+94w
- ; Update_HW_SHA+54o ...
- SHA_H0 % 4 ; DATA XREF: Main+7Ew
- ; Finale_HW_SHA+7Co ...
- SHA_H1 % 4 ; DATA XREF: Main+82w
- SHA_H2 % 4 ; DATA XREF: Main+86w
- ; SHA ends
- ; Segment type: Pure code
- AREA SRAM, CODE, READWRITE, ALIGN=0
- ; ORG 0xD400000
- CODE32
- ; =============== S U B R O U T I N E =======================================
- Boot0_Start
- MOV R0, #0
- MCR p15, 0, R0,c7,c5, 0
- MCR p15, 0, R0,c7,c6, 0
- MRC p15, 0, R0,c1,c0, 0
- ORR R0, R0, #0x1000
- MCR p15, 0, R0,c1,c0, 0
- LDR R0, =dword_D413720
- LDR R1, =unk_D416C3C
- MOV R2, #0
- MOV R3, #4
- BL memset
- MOV R1, #0
- MOV R4, #0
- MOV R11, #0
- MOV R11, #0
- MOV LR, #0
- LDR SP, =StackStart ; StackEND
- LDR R2, =StackSize
- LDR R2, [R2]
- ADD SP, SP, R2
- LDR LR, =ExecuteBoot1
- LDR PC, =(Main+1)
- ExecuteBoot1 ; DATA XREF: Boot0_Start+50o
- ; SRAM:off_D410134o
- MOV R1, R0
- MRC p15, 0, R0,c1,c0, 0
- BIC R0, R0, #0x1000
- MCR p15, 0, R0,c1,c0, 0
- MOV PC, R1
- ; End of function Boot0_Start
- ; ---------------------------------------------------------------------------
- HangLoop ; CODE XREF: SRAM:HangLoopj
- B HangLoop
- ; =============== S U B R O U T I N E =======================================
- memset ; CODE XREF: Boot0_Start+28p memset+Cj
- CMP R0, R1
- BCS locret_D410120
- STR R2, [R0],R3
- B memset
- ; ---------------------------------------------------------------------------
- locret_D410120 ; CODE XREF: memset+4j
- BX LR
- ; End of function memset
- ; ---------------------------------------------------------------------------
- off_D410124 DCD dword_D413720 ; DATA XREF: Boot0_Start+18r
- off_D410128 DCD unk_D416C3C ; DATA XREF: Boot0_Start+1Cr
- off_D41012C DCD StackStart ; DATA XREF: Boot0_Start+40r
- ; StackEND
- off_D410130 DCD StackSize ; DATA XREF: Boot0_Start+44r
- off_D410134 DCD ExecuteBoot1 ; DATA XREF: Boot0_Start+50r
- off_D410138 DCD Main+1 ; DATA XREF: Boot0_Start+54r
- CODE16
- ; =============== S U B R O U T I N E =======================================
- sub_D41013C ; CODE XREF: SRAM:0D4123E6p
- varg_r0 = -0x10
- varg_r1 = -0xC
- varg_r2 = -8
- varg_r3 = -4
- PUSH {R0-R3}
- MOVS R0, #0
- ADD SP, SP, #0x10
- BX LR
- ; End of function sub_D41013C
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl SendGPIODebugOut(unsigned __int8 Value)
- SendGPIODebugOut ; CODE XREF: CalcSHA_And_RSA:loc_D410226p
- ; Main+1Cp ...
- PUSH {LR}
- LDR R1, =HW_GPIO1OUT
- LDR R3, =0xFF00FFFF
- LDR R2, [R1]
- LSLS R0, R0, #0x18
- ANDS R3, R2
- LSRS R0, R0, #8
- ORRS R3, R0
- STR R3, [R1]
- MOVS R0, #1
- BL UDelay
- POP {R0}
- BX R0
- ; End of function SendGPIODebugOut
- ; ---------------------------------------------------------------------------
- off_D410160 DCD HW_GPIO1OUT ; DATA XREF: SendGPIODebugOut+2r
- dword_D410164 DCD 0xFF00FFFF ; DATA XREF: SendGPIODebugOut+4r
- ; =============== S U B R O U T I N E =======================================
- sub_D410168 ; CODE XREF: Main+210p Main+34Cp ...
- PUSH {R4-R6,LR}
- MOVS R5, R0
- MOVS R6, R1
- ADDS R4, R0, R1
- BL sub_D411CE8
- MOVS R0, R5
- SUBS R1, R6, #4
- BL sub_D411CAC
- SUBS R4, #4
- LDR R3, [R4]
- MOVS R2, #0
- CMP R3, R0
- BEQ loc_D41018E
- loc_D410186 ; CODE XREF: sub_D410168+28j
- MOVS R0, R2
- POP {R4-R6}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D41018E ; CODE XREF: sub_D410168+1Cj
- MOVS R2, #1
- B loc_D410186
- ; End of function sub_D410168
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- CalcSHA_And_RSA ; CODE XREF: Main+5EAp Main+702p
- var_20 = -0x20
- PUSH {R4-R7,LR}
- MOV R7, R10
- MOV R6, R8
- PUSH {R6,R7}
- LDR R2, =dword_D4137C0
- LDR R3, =HW_TIMER
- MOVS R5, R0
- LDR R3, [R3]
- MOV R8, R2
- MOVS R0, R2
- MOVS R2, #0xC0
- SUB SP, SP, #4
- MOVS R7, R1
- LSLS R2, R2, #1
- ADDS R1, #0x20
- MOV R10, R3
- BL sub_D4132E0
- LDR R6, =word_D413940
- MOVS R3, #0x1A0
- ADDS R1, R7, R3
- MOVS R2, #0x60
- MOVS R0, R6
- BL sub_D4132E0
- LDR R4, =dword_D413B40
- MOVS R2, #512
- MOVS R1, #96
- ADDS R7, R7, R2 ; 0xD400512
- MOVS R0, R6
- MOVS R2, R4
- BL Calc_HW_SHA
- MOVS R3, #4
- MOV R2, R8
- STR R3, [SP,#0x20+var_20]
- MOVS R0, R4
- MOVS R1, R5
- ADDS R2, #4
- LDR R3, =RSA_Exponent
- BL sub_D412588
- CMP R0, #0
- BNE loc_D41023A
- LDRH R3, [R6]
- CMP R3, #0
- BNE loc_D410224
- MOVS R4, #0
- ADDS R0, R6, #0
- loc_D4101FA ; CODE XREF: CalcSHA_And_RSA+72j
- ADDS R3, R4, R0
- LDRB R3, [R3,#(byte_D413942 - 0xD413940)]
- CMP R3, #0
- BNE loc_D4102D6
- ADDS R4, #1
- CMP R4, #1
- BLS loc_D4101FA
- MOVS R2, R0
- MOVS R4, #0
- ADDS R2, #0x28
- B loc_D410216
- ; ---------------------------------------------------------------------------
- loc_D410210 ; CODE XREF: CalcSHA_And_RSA+8Aj
- ADDS R4, #1
- CMP R4, #0x37
- BHI loc_D41023E
- loc_D410216 ; CODE XREF: CalcSHA_And_RSA+7Aj
- LDRB R3, [R2]
- LSLS R3, R3, #0x18
- ADDS R2, #1
- CMP R3, #0
- BEQ loc_D410210
- MOVS R0, #0xE4
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D410224 ; CODE XREF: CalcSHA_And_RSA+60j
- MOVS R0, #0xE2 ; Value
- loc_D410226 ; CODE XREF: CalcSHA_And_RSA+8Ej
- ; CalcSHA_And_RSA+A8j ...
- BL SendGPIODebugOut
- MOVS R0, #0
- loc_D41022C ; CODE XREF: CalcSHA_And_RSA+140j
- ADD SP, SP, #4
- POP {R3,R4}
- MOV R8, R3
- MOV R10, R4
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D41023A ; CODE XREF: CalcSHA_And_RSA+5Aj
- MOVS R0, #0xE1
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D41023E ; CODE XREF: CalcSHA_And_RSA+80j
- LDR R2, =dword_D413764
- LDR R3, [R0,#8]
- LDR R2, [R2]
- CMP R3, R2
- BEQ loc_D41024C
- MOVS R0, #0xE5
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D41024C ; CODE XREF: CalcSHA_And_RSA+B2j
- LDR R3, [R0,#4]
- CMP R3, #0x21
- BEQ loc_D41025A
- CMP R3, #0x22
- BEQ loc_D41027E
- loc_D410256 ; CODE XREF: CalcSHA_And_RSA+CCj
- MOVS R0, #0xE7
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D41025A ; CODE XREF: CalcSHA_And_RSA+BCj
- LDR R3, =HW_Time_Start
- LDR R3, [R3]
- CMP R3, #0
- BNE loc_D410256
- LDR R2, =dword_D413744
- LDR R3, [R0,#0x24]
- LDR R2, [R2]
- CMP R3, R2
- BNE loc_D4102DA
- loc_D41026C ; CODE XREF: CalcSHA_And_RSA+F0j
- LDR R0, [R0,#0xC]
- LSRS R5, R0, #0xC
- CMP R5, #0
- BEQ loc_D41027A
- LDR R3, =0xFFF
- TST R0, R3
- BEQ loc_D41028A
- loc_D41027A ; CODE XREF: CalcSHA_And_RSA+DEj
- MOVS R0, #0xE8
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D41027E ; CODE XREF: CalcSHA_And_RSA+C0j
- LDR R3, =HW_Time_Start
- LDR R3, [R3]
- CMP R3, #1
- BEQ loc_D41026C
- MOVS R0, #0xE7
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D41028A ; CODE XREF: CalcSHA_And_RSA+E4j
- LDR R0, =dword_D4139A0
- BL Init_HW_SHA
- CMP R5, #0
- BLS loc_D4102AE
- ADDS R4, R5, #0
- loc_D410296 ; CODE XREF: CalcSHA_And_RSA+118j
- MOVS R2, #0x80
- MOVS R1, R7
- LDR R0, =dword_D4139A0
- LSLS R2, R2, #5
- BL Update_HW_SHA
- MOVS R3, #0x1000
- SUBS R4, #1
- ADDS R7, R7, R3
- CMP R4, #0
- BNE loc_D410296
- loc_D4102AE ; CODE XREF: CalcSHA_And_RSA+FEj
- LDR R4, =dword_D413B40
- LDR R0, =dword_D4139A0
- MOVS R1, R4
- BL Finale_HW_SHA
- LDR R0, =dword_D413950
- MOVS R1, R4
- MOVS R2, #0x14
- BL sub_D411AF8
- CMP R0, #0
- BNE loc_D4102DE
- LDR R3, =HW_TIMER
- LDR R3, [R3]
- MOV R2, R10
- SUBS R3, R3, R2
- LDR R2, =0xD417FE8
- MOVS R0, R5
- STR R3, [R2]
- B loc_D41022C
- ; ---------------------------------------------------------------------------
- loc_D4102D6 ; CODE XREF: CalcSHA_And_RSA+6Cj
- MOVS R0, #0xE3
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D4102DA ; CODE XREF: CalcSHA_And_RSA+D6j
- MOVS R0, #0xE6
- B loc_D410226
- ; ---------------------------------------------------------------------------
- loc_D4102DE ; CODE XREF: CalcSHA_And_RSA+130j
- MOVS R0, #0xE9
- B loc_D410226
- ; End of function CalcSHA_And_RSA
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D4102E4 DCD dword_D4137C0 ; DATA XREF: CalcSHA_And_RSA+8r
- off_D4102E8 DCD HW_TIMER ; DATA XREF: CalcSHA_And_RSA+Ar
- ; CalcSHA_And_RSA+132r
- off_D4102EC DCD word_D413940 ; DATA XREF: CalcSHA_And_RSA+24r
- off_D4102F0 DCD dword_D413B40 ; DATA XREF: CalcSHA_And_RSA+34r
- ; CalcSHA_And_RSA:loc_D4102AEr
- off_D4102F4 DCD RSA_Exponent ; DATA XREF: CalcSHA_And_RSA+52r
- off_D4102F8 DCD dword_D413764 ; DATA XREF: CalcSHA_And_RSA:loc_D41023Er
- off_D4102FC DCD HW_Time_Start ; DATA XREF: CalcSHA_And_RSA:loc_D41025Ar
- ; CalcSHA_And_RSA:loc_D41027Er
- off_D410300 DCD dword_D413744 ; DATA XREF: CalcSHA_And_RSA+CEr
- dword_D410304 DCD 0xFFF ; DATA XREF: CalcSHA_And_RSA+E0r
- off_D410308 DCD dword_D4139A0 ; DATA XREF: CalcSHA_And_RSA:loc_D41028Ar
- ; CalcSHA_And_RSA+106r ...
- off_D41030C DCD dword_D413950 ; DATA XREF: CalcSHA_And_RSA+124r
- dword_D410310 DCD 0xD417FE8 ; DATA XREF: CalcSHA_And_RSA+13Ar
- ; =============== S U B R O U T I N E =======================================
- ; PAGE = 0x1000
- ; int __fastcall AES_Decrypt(unsigned __int8 *AESKey, unsigned __int8 *Buffer_IN, int BufferPagesCount)
- AES_Decrypt ; CODE XREF: Main+60Cp Main+71Cp
- SetZeroIV = -0x18
- PUSH {R4-R7,LR}
- LDR R3, =HW_TIMER
- SUB SP, SP, #4
- MOVS R4, R0
- MOVS R5, R1 ; R5 = Buffer_IN
- LDR R7, [R3]
- SUBS R6, R2, #0
- BNE loc_D41032C
- return ; CODE XREF: AES_Decrypt+5Ej
- ADD SP, SP, #4
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D41032C ; CODE XREF: AES_Decrypt+Ej
- MOVS R3, #0
- STR R3, [SP,#0x18+SetZeroIV] ; Set to 0 == No Zero IV
- LDR R0, =AES_Control_Buffer ; ControlBuffer
- LDR R3, =AES_IV ; IV
- MOVS R1, R4 ; AESKey
- MOVS R2, #0x10 ; AESKeyLen
- BL Init_HW_AES
- MOVS R3, #512
- ADDS R5, R5, R3 ; Buffer_IN + 0x200
- CMP R6, #0
- BLS Nothing_To_Decrypt
- ADDS R4, R6, #0
- AES_Decrypt_Loop ; CODE XREF: AES_Decrypt+4Cj
- MOVS R2, #0x80
- MOVS R3, R5 ; AES_DEST_Buffer
- MOVS R1, R5 ; AES_SRC_Buffer
- LDR R0, =AES_Control_Buffer ; ControlBuffer
- LSLS R2, R2, #5 ; R2 == 0x1000 <- BufferSize
- BL AES_HW_Decrypt
- MOVS R3, #0x1000
- SUBS R4, #1 ; Decrease PageCount
- ADDS R5, R5, R3 ; Increase buffer by 0x1000
- CMP R4, #0
- BNE AES_Decrypt_Loop
- Nothing_To_Decrypt ; CODE XREF: AES_Decrypt+30j
- LDR R0, =AES_Control_Buffer
- BL nullsub_1
- LDR R3, =HW_TIMER
- LDR R3, [R3]
- LDR R2, =HW_TIMER_Execution_Time
- SUBS R3, R3, R7
- STR R3, [R2]
- B return
- ; End of function AES_Decrypt
- ; ---------------------------------------------------------------------------
- off_D410374 DCD HW_TIMER ; DATA XREF: AES_Decrypt+2r
- ; AES_Decrypt+54r
- ; unsigned __int8 *ControlBuffer
- ControlBuffer DCD AES_Control_Buffer ; DATA XREF: AES_Decrypt+1Cr
- ; AES_Decrypt+3Ar ...
- ; unsigned __int8 *IV
- IV DCD AES_IV ; DATA XREF: AES_Decrypt+1Er
- off_D410380 DCD HW_TIMER_Execution_Time ; DATA XREF: AES_Decrypt+58r
- ; =============== S U B R O U T I N E =======================================
- Main ; CODE XREF: Boot0_Start+54j
- ; DATA XREF: Boot0_Start+54o ...
- var_30 = -0x30
- var_2C = -0x2C
- var_28 = -0x28
- ; FUNCTION CHUNK AT 0D41078C SIZE 00000336 BYTES
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- LDR R3, =HW_TIMER
- LDR R3, [R3]
- MOV R10, R3
- LDR R3, =HW_Time_Start
- MOVS R7, #0
- SUB SP, SP, #0xC
- STR R7, [R3]
- MOVS R0, #0 ; Value
- BL SendGPIODebugOut
- LDR R2, =HW_BOOT0 ; Maps boot0
- MOVS R4, #0xC0
- LDR R3, [R2] ; Maps boot0
- LSLS R4, R4, #4
- ORRS R3, R4
- STR R3, [R2] ; Maps boot0
- SUBS R2, #0xB0
- LDR R1, [R2]
- MOVS R3, #0xFF0000
- ORRS R1, R3
- STR R1, [R2]
- ADDS R2, #8
- LDR R1, [R2]
- ORRS R1, R3
- STR R1, [R2]
- MOVS R0, #1 ; Value
- BL SendGPIODebugOut
- LDR R3, =HW_MEMMIRR
- MOVS R6, #7
- STR R6, [R3]
- MOVS R0, #2 ; Value
- BL SendGPIODebugOut
- LDR R3, =AES_CTRL
- STR R7, [R3] ; Set AES_Init to 0
- ADDS R3, #0xC
- STR R7, [R3]
- STR R7, [R3]
- STR R7, [R3]
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- STR R7, [R3]
- STR R7, [R3]
- STR R7, [R3]
- SUBS R3, #0xC
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- MOVS R0, #3 ; Value
- BL SendGPIODebugOut
- LDR R3, =SHA_CMD
- STR R7, [R3] ; Set SHA_Init to 0
- ADDS R3, #8
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- ADDS R3, #4
- STR R7, [R3]
- SUBS R3, #0x14
- MOVS R0, #4 ; Value
- STR R7, [R3]
- BL SendGPIODebugOut
- LDR R1, =dword_D8005B4
- LDR R3, =0xFFFFF3FF
- LDR R2, [R1]
- ANDS R3, R2
- ORRS R3, R4
- STR R3, [R1]
- BL Set_HW_OTP_Command_RD
- MOVS R0, #5 ; Value
- BL SendGPIODebugOut
- LDR R1, =HW_RESETS
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #0xC
- ORRS R2, R3
- STR R2, [R1]
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #0xB
- ORRS R2, R3
- STR R2, [R1]
- LDR R2, =HW_EXICTRL
- LDR R3, [R2]
- MOVS R5, #1
- ORRS R3, R5
- STR R3, [R2]
- MOVS R0, #8 ; Value
- BL SendGPIODebugOut
- LDR R0, =OTP_100
- MOV R8, R0
- MOV R1, R8 ; OutputBuffer
- MOVS R0, #0x20 ; FIELD = 80000100
- MOVS R2, #4 ; Length
- loc_D410464
- BL Read_From_OTP
- LDR R4, =OTP_101
- MOVS R0, #0x21 ; Field = 80000101
- MOVS R1, R4 ; OutputBuffer
- MOVS R2, #4 ; Length
- BL Read_From_OTP
- LDR R2, =OTP_102
- MOVS R0, #0x22 ; Field = 80000102
- MOVS R1, R2 ; OutputBuffer
- MOV R9, R2
- MOVS R2, #4 ; Length
- BL Read_From_OTP
- LDR R3, =OTP_200
- MOVS R0, #40 ; Field = 80000200
- MOVS R1, R3 ; OutputBuffer
- MOVS R2, #16 ; Length
- MOV R11, R3
- BL Read_From_OTP
- LDR R1, =AES_Key_1 ; OutputBuffer
- MOVS R2, #16 ; Length
- MOVS R0, #0xE8 ; Field = 80000708
- BL Read_From_OTP
- MOVS R0, #9 ; Value
- BL SendGPIODebugOut
- LDR R4, [R4] ; R4 == OTP_101
- LDR R1, =Unknown_OTP_State_Value
- LSRS R3, R4, #0xF
- LDR R2, [R1]
- TST R3, R5 ; R5 == 1; Check if OTP_101 Bit 16 is set
- BEQ loc_D4104B8
- LDR R3, =0xFFFC7FFF
- ANDS R2, R3
- LSLS R3, R4, #0x11
- LSRS R3, R3, #0x1D
- LSLS R3, R3, #0xF
- ORRS R2, R3
- loc_D4104B8 ; CODE XREF: Main+126j
- STR R2, [R1]
- LDR R1, =dword_D8001E4
- LSRS R3, R4, #3
- LDR R2, [R1]
- TST R3, R5
- BEQ loc_D4104CE
- LDR R3, =0xFFFC7FFF
- ANDS R6, R4
- ANDS R2, R3
- LSLS R3, R6, #0xF
- ORRS R2, R3
- loc_D4104CE ; CODE XREF: Main+13Ej
- LSRS R3, R4, #7
- TST R3, R5
- BEQ loc_D4104E0
- LDR R3, =0xFFE3FFFF
- ANDS R2, R3
- LSLS R3, R4, #0x19
- LSRS R3, R3, #0x1D
- LSLS R3, R3, #0x12
- ORRS R2, R3
- loc_D4104E0 ; CODE XREF: Main+14Ej
- LSRS R3, R4, #0xB
- TST R3, R5
- BEQ loc_D4104F2
- LDR R3, =0xFFFF8FFF
- ANDS R2, R3
- LSLS R3, R4, #0x15
- LSRS R3, R3, #0x1D
- LSLS R3, R3, #0xC
- ORRS R2, R3
- loc_D4104F2 ; CODE XREF: Main+160j
- LSRS R3, R4, #0x13
- TST R3, R5
- BEQ loc_D410504
- LDR R3, =0xFF1FFFFF
- ANDS R2, R3
- LSLS R3, R4, #0xD
- LSRS R3, R3, #0x1D
- LSLS R3, R3, #0x15
- ORRS R2, R3
- loc_D410504 ; CODE XREF: Main+172j
- STR R2, [R1]
- MOVS R0, #0xA ; Value
- BL SendGPIODebugOut
- MOV R2, R9
- LDR R0, [R2]
- CMP R0, #0
- BNE loc_D410516
- MOVS R0, #0xFA
- loc_D410516 ; CODE XREF: Main+18Ej
- BL sub_D411774
- BL SetGPIO1OutputDirection
- MOVS R0, #0xB ; Value
- BL SendGPIODebugOut
- MOV R3, R8
- LDR R0, [R3]
- LSRS R3, R0, #0x1E
- TST R3, R5
- BEQ loc_D410530
- B loc_D4108DC
- ; ---------------------------------------------------------------------------
- loc_D410530 ; CODE XREF: Main+1A8j
- CMP R0, #0
- BGE loc_D410536
- B loc_D4108B4
- ; ---------------------------------------------------------------------------
- loc_D410536 ; CODE XREF: Main+1AEj
- LDR R3, =Dyn_AES_Key_Buffer
- MOVS R2, #0
- STR R2, [R3] ; Set D413B54 to 0
- LDR R3, =AES_Key_Ptr
- STR R2, [R3] ; set AES_KEY_Ptr to 0
- MOV R8, R2
- loc_D410542 ; CODE XREF: Main+5AAj Main+5C0j
- LDR R3, =dword_D413B5C
- MOVS R0, #0xC ; Value
- STR R2, [R3] ; Set D413B5C = 0
- BL SendGPIODebugOut
- BL sub_D411C74
- MOVS R0, #0xD ; Value
- BL SendGPIODebugOut
- LDR R5, =Dyn_AES_Key_Buffer
- LDR R0, [R5] ; AESKey
- BL Set_HW_AESKey
- LDR R6, =word_D41378C
- MOVS R0, #0x1C
- MOVS R1, R6
- MOVS R2, #1
- BL AES_HW_Decrypt_0
- LDR R4, =word_D41379C
- MOVS R0, #0x1D
- MOVS R1, R4
- MOVS R2, #1
- BL AES_HW_Decrypt_0
- MOVS R1, R4
- MOVS R0, #0x1E
- ADDS R1, #0x10
- MOVS R2, #1
- BL AES_HW_Decrypt_0
- MOVS R0, #0xE ; Value
- BL SendGPIODebugOut
- LDR R3, [R5]
- CMP R3, #0
- BNE loc_D410590
- B loc_D4106CC
- ; ---------------------------------------------------------------------------
- loc_D410590 ; CODE XREF: Main+208j
- MOVS R0, R6
- MOVS R1, #16
- BL sub_D410168
- CMP R0, #0
- BNE loc_D41059E
- B loc_D4108B0
- ; ---------------------------------------------------------------------------
- loc_D41059E ; CODE XREF: Main+216j Main+354j ...
- LDR R1, =word_D41378C
- LDR R4, =dword_D413754
- LDRH R3, [R1]
- LDRH R2, [R1,#(word_D41378E - 0xD41378C)]
- STR R3, [R4]
- LDR R3, =dword_D413750
- STR R2, [R3]
- LDRH R3, [R1,#(word_D413790 - 0xD41378C)]
- LDRH R2, [R1,#(word_D413792 - 0xD41378C)]
- LSLS R3, R3, #0x10
- ADDS R3, R3, R2
- LDR R2, =dword_D41374C
- STR R3, [R2]
- LDRH R3, [R1,#(word_D413794 - 0xD41378C)]
- LDRH R2, [R1,#(word_D413796 - 0xD41378C)]
- LSLS R3, R3, #0x10
- ADDS R3, R3, R2
- LDR R2, =dword_D413748
- STR R3, [R2]
- LDR R3, =Dyn_AES_Key_Buffer
- LDR R2, [R3]
- CMP R2, #0
- BEQ loc_D4105CE
- B loc_D410814
- ; ---------------------------------------------------------------------------
- loc_D4105CE ; CODE XREF: Main+246j
- LDR R3, =dword_D413744
- STR R2, [R3]
- LDR R3, =dword_D413740
- STR R2, [R3]
- loc_D4105D6 ; CODE XREF: Main+4D4j
- LDR R2, [R4]
- LDR R3, =0x3FF
- MOVS R0, R2
- ANDS R0, R3
- BEQ loc_D4105E2
- B loc_D41080C
- ; ---------------------------------------------------------------------------
- loc_D4105E2 ; CODE XREF: Main+25Aj Main+48Ej
- MOVS R6, #1
- LSLS R3, R2, #0x10
- BPL loc_D4105EA
- B loc_D4107EE
- ; ---------------------------------------------------------------------------
- loc_D4105EA ; CODE XREF: Main+262j Main+486j
- MOVS R0, #0x13 ; Value
- BL SendGPIODebugOut
- LDR R0, =dword_D413750
- LDR R1, [R0]
- LSRS R3, R1, #0xE
- MOV R9, R0
- TST R3, R6
- BEQ loc_D410604
- LDR R3, =dword_D41374C
- LDR R2, [R3]
- LDR R3, =NAND_CONFIG
- STR R2, [R3]
- loc_D410604 ; CODE XREF: Main+276j
- LSRS R3, R1, #0xD
- TST R3, R6
- BEQ loc_D410612
- LDR R3, =dword_D413748
- LDR R2, [R3]
- LDR R3, =NAND_UNK1
- STR R2, [R3]
- loc_D410612 ; CODE XREF: Main+284j
- LDR R2, =dword_D413740
- LDR R3, [R2]
- LSRS R0, R3, #0xC
- MOV R11, R2
- CMP R0, #0
- BEQ loc_D410620
- MOVS R0, #1
- loc_D410620 ; CODE XREF: Main+298j
- BL NAND_Read
- CMP R0, #0
- BEQ loc_D41062A
- B loc_D41078C
- ; ---------------------------------------------------------------------------
- loc_D41062A ; CODE XREF: Main+2A2j
- MOVS R7, #0xDA
- loc_D41062C ; CODE XREF: Main+468j Main+56Ej ...
- MOVS R0, #0x1B ; Value
- BL SendGPIODebugOut
- LDR R3, =dword_D413754
- LDR R2, [R3]
- MOVS R3, #0x7C00
- MOVS R0, R2
- ANDS R0, R3
- BEQ loc_D410654
- LDR R6, =HW_TIMER
- LDR R5, =0x2710
- LSRS R4, R0, #0xA
- loc_D410646 ; CODE XREF: Main+2CEj
- MOVS R0, R4
- MULS R0, R5
- BL sub_D412060
- LDR R3, [R6]
- CMP R3, R0 ; Compare HW_TIMER with result
- BCC loc_D410646
- loc_D410654 ; CODE XREF: Main+2BAj
- MOVS R0, #0x1C ; Value
- BL SendGPIODebugOut
- LDR R1, =HW_RESETS
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #9
- ORRS R2, R3
- STR R2, [R1]
- BL Init_EXI_Register
- MOVS R0, #0x1D ; Value
- BL SendGPIODebugOut
- ADD R0, SP, #0x30+var_28
- BL sub_D410D78
- CMP R0, #0
- BEQ loc_D410682
- LDR R3, [SP,#0x30+var_28]
- LSLS R0, R3, #0x14
- BPL loc_D410682
- B loc_D4108E8
- ; ---------------------------------------------------------------------------
- loc_D410682 ; CODE XREF: Main+2F4j Main+2FAj
- LDR R2, =HW_Time_Start
- loc_D410684 ; CODE XREF: Main+56Aj
- LDR R3, [R2]
- CMP R3, #1
- BNE loc_D41068C
- B loc_D410996
- ; ---------------------------------------------------------------------------
- loc_D41068C ; CODE XREF: Main+304j
- CMP R7, #0
- BEQ loc_D410692
- B loc_D410AA6
- ; ---------------------------------------------------------------------------
- loc_D410692 ; CODE XREF: Main+30Aj Main+6F2j ...
- MOVS R0, #0x25 ; Value
- BL SendGPIODebugOut
- MOVS R1, #0 ; Unknown
- MOVS R2, #16 ; AES Key Len
- LDR R0, =AES_Key_1 ; Buffer
- BL CheckBuffer_Maybe
- MOVS R1, #0 ; Unknown
- MOVS R2, #0x10 ; BufferLen
- LDR R0, =OTP_200 ; Buffer
- BL CheckBuffer_Maybe
- LDR R3, =HW_TIMER
- LDR R3, [R3]
- MOV R0, R10
- SUBS R3, R3, R0 ; ExecutionTime = HW_TIMER_END - HW_TIMER_START
- LDR R2, =ExecutionTime
- LDR R0, =dword_D400200
- ADD SP, SP, #0xC
- STR R3, [R2]
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D4106CC ; CODE XREF: Main+20Aj
- MOVS R0, R6
- MOVS R1, #0x10
- BL sub_D410168
- CMP R0, #0
- BEQ loc_D4106DA
- B loc_D41059E
- ; ---------------------------------------------------------------------------
- loc_D4106DA ; CODE XREF: Main+352j
- LDRH R3, [R6,#(word_D413798 - 0xD41378C)]
- CMP R3, #0
- BNE loc_D4106E8
- LDRH R3, [R6,#(word_D41379A - 0xD41378C)]
- CMP R3, #0
- BNE loc_D4106E8
- B loc_D41059E
- ; ---------------------------------------------------------------------------
- loc_D4106E8 ; CODE XREF: Main+35Aj Main+360j
- MOVS R0, R6 ; Buffer
- MOVS R1, #0 ; Unknown
- MOVS R2, #0x10 ; BufferLen
- BL CheckBuffer_Maybe
- B loc_D41059E
- ; End of function Main
- ; ---------------------------------------------------------------------------
- off_D4106F4 DCD HW_TIMER ; DATA XREF: Main+Cr Main+2BCr ...
- off_D4106F8 DCD HW_Time_Start ; DATA XREF: Main+12r
- ; Main:loc_D410682r
- off_D4106FC DCD HW_BOOT0 ; DATA XREF: Main+20r
- ; Maps boot0
- off_D410700 DCD HW_MEMMIRR ; DATA XREF: Main+46r
- off_D410704 DCD AES_CTRL ; DATA XREF: Main+52r
- off_D410708 DCD SHA_CMD ; DATA XREF: Main+78r
- off_D41070C DCD dword_D8005B4 ; DATA XREF: Main+9Ar
- dword_D410710 DCD 0xFFFFF3FF ; DATA XREF: Main+9Cr
- off_D410714 DCD HW_RESETS ; DATA XREF: Main+B0r Main+2D6r
- off_D410718 DCD HW_EXICTRL ; DATA XREF: Main+C6r
- ; unsigned __int8 *OutputBuffer
- OutputBuffer DCD OTP_100 ; DATA XREF: Main+D6r
- ; unsigned __int8 *off_D410720
- off_D410720 DCD OTP_101 ; DATA XREF: Main+E4r
- ; unsigned __int8 *off_D410724
- off_D410724 DCD OTP_102 ; DATA XREF: Main+F0r
- ; unsigned __int8 *off_D410728
- off_D410728 DCD OTP_200 ; DATA XREF: Main+FEr Main+322r
- ; unsigned __int8 *AESKey
- AESKey DCD AES_Key_1 ; DATA XREF: Main+10Cr Main+318r
- off_D410730 DCD Unknown_OTP_State_Value ; DATA XREF: Main+11Er
- dword_D410734 DCD 0xFFFC7FFF ; DATA XREF: Main+128r Main+140r
- off_D410738 DCD dword_D8001E4 ; DATA XREF: Main+136r
- dword_D41073C DCD 0xFFE3FFFF ; DATA XREF: Main+150r
- dword_D410740 DCD 0xFFFF8FFF ; DATA XREF: Main+162r
- dword_D410744 DCD 0xFF1FFFFF ; DATA XREF: Main+174r
- off_D410748 DCD Dyn_AES_Key_Buffer ; DATA XREF: Main:loc_D410536r
- ; Main+1D2r ...
- off_D41074C DCD AES_Key_Ptr ; DATA XREF: Main+1B8r
- off_D410750 DCD dword_D413B5C ; DATA XREF: Main:loc_D410542r
- off_D410754 DCD word_D41378C ; DATA XREF: Main+1DAr
- ; Main:loc_D41059Er
- off_D410758 DCD word_D41379C ; DATA XREF: Main+1E6r
- off_D41075C DCD dword_D413754 ; DATA XREF: Main+21Cr Main+2AEr
- off_D410760 DCD dword_D413750 ; DATA XREF: Main+224r Main+26Cr
- off_D410764 DCD dword_D41374C ; DATA XREF: Main+230r Main+278r
- off_D410768 DCD dword_D413748 ; DATA XREF: Main+23Cr Main+286r
- off_D41076C DCD dword_D413744 ; DATA XREF: Main:loc_D4105CEr
- off_D410770 DCD dword_D413740 ; DATA XREF: Main+24Er
- ; Main:loc_D410612r
- dword_D410774 DCD 0x3FF ; DATA XREF: Main+254r
- off_D410778 DCD NAND_CONFIG ; DATA XREF: Main+27Cr
- off_D41077C DCD NAND_UNK1 ; DATA XREF: Main+28Ar
- dword_D410780 DCD 0x2710 ; DATA XREF: Main+2BEr
- off_D410784 DCD ExecutionTime ; DATA XREF: Main+330r
- off_D410788 DCD dword_D400200 ; DATA XREF: Main+332r
- ; ---------------------------------------------------------------------------
- ; START OF FUNCTION CHUNK FOR Main
- loc_D41078C ; CODE XREF: Main+2A4j
- MOVS R0, #0x14 ; Value
- BL SendGPIODebugOut
- LDR R3, =HW_TIMER
- LDR R5, [R3]
- LDR R3, =HW_Time_Start
- LDR R3, [R3]
- CMP R3, #0
- BEQ loc_D4107A0
- B loc_D4108E4
- ; ---------------------------------------------------------------------------
- loc_D4107A0 ; CODE XREF: Main+418j
- MOVS R0, #0x15 ; Value
- BL SendGPIODebugOut
- MOVS R0, #0
- BL CheckBoot0_Maybe
- MOV R2, R9
- MOV R0, R11
- LDR R3, [R2]
- LDR R1, [R0]
- LSRS R3, R3, #0xF
- MOVS R0, #dword_D400000
- LSLS R1, R1, #6
- MOVS R2, #1
- ANDS R3, R6
- BL sub_D4115EC
- CMP R0, #0
- BNE loc_D4107CA
- B loc_D4108F0
- ; ---------------------------------------------------------------------------
- loc_D4107CA ; CODE XREF: Main+442j
- LDR R4, =word_D413940
- MOVS R2, #0x60
- MOVS R0, R4
- LDR R1, =unk_D4001A0
- BL sub_D4132E0
- LDR R3, [R4,#(dword_D41394C - 0xD413940)]
- LDR R0, =0x9FF
- ADDS R4, R3, R0
- LDR R3, =0xFFFFF800
- ANDS R4, R3
- LDR R3, =0xF7FF
- SUBS R2, R4, #1
- CMP R2, R3
- BHI loc_D4107EA
- B loc_D4108F4
- ; ---------------------------------------------------------------------------
- loc_D4107EA ; CODE XREF: Main+462j
- MOVS R7, #0xD6
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- loc_D4107EE ; CODE XREF: Main+264j
- MOVS R0, #0x10 ; Value
- BL SendGPIODebugOut
- LDR R4, =dword_D80047C
- MOVS R3, #0x1000
- STR R3, [R4]
- LDR R3, =dword_D8005BC
- MOVS R2, #3
- STR R2, [R3]
- BL sub_D4132E8
- MOVS R3, #0
- STR R3, [R4]
- B loc_D4105EA
- ; ---------------------------------------------------------------------------
- loc_D41080C ; CODE XREF: Main+25Cj
- BL sub_D41203C
- LDR R2, [R4]
- B loc_D4105E2
- ; ---------------------------------------------------------------------------
- loc_D410814 ; CODE XREF: Main+248j
- MOVS R0, #0xF ; Value
- BL SendGPIODebugOut
- LDR R6, =word_D41379C
- MOVS R1, #0x10
- MOVS R0, R6
- BL sub_D410168
- MOVS R4, R6
- ADDS R4, #0x10
- MOVS R5, R0
- MOVS R1, #0x10
- MOVS R0, R4
- BL sub_D410168
- CMP R5, #0
- BEQ loc_D41085A
- CMP R0, #0
- BEQ loc_D410842
- LDRH R2, [R6]
- LDRH R3, [R6,#(word_D4137AC - 0xD41379C)]
- CMP R2, R3
- BCC loc_D41085E
- loc_D410842 ; CODE XREF: Main+4B4j
- MOVS R2, #0
- loc_D410844 ; CODE XREF: Main+4DCj
- LDR R3, =word_D41379C
- LSLS R2, R2, #4
- ADDS R2, R2, R3
- LDRH R1, [R2]
- LDR R3, =dword_D413744
- LDRH R2, [R2,#(word_D41379E - 0xD41379C)]
- STR R1, [R3]
- LDR R4, =dword_D413754
- LDR R3, =dword_D413740
- STR R2, [R3]
- B loc_D4105D6
- ; ---------------------------------------------------------------------------
- loc_D41085A ; CODE XREF: Main+4B0j
- CMP R0, #0
- BEQ loc_D410862
- loc_D41085E ; CODE XREF: Main+4BCj
- MOVS R2, #1
- B loc_D410844
- ; ---------------------------------------------------------------------------
- loc_D410862 ; CODE XREF: Main+4D8j
- MOVS R0, #0xC4 ; Value
- loc_D410864 ; CODE XREF: Main+52Ej Main+556j ...
- BL SendGPIODebugOut
- loc_D410868 ; CODE XREF: Main+70Aj
- MOVS R1, #0 ; Unknown
- MOVS R2, #16 ; BufferLen
- LDR R0, =AES_Key_1 ; Buffer
- BL CheckBuffer_Maybe
- LDR R0, =OTP_200 ; Buffer
- MOVS R1, #0 ; Unknown
- MOVS R2, #16 ; BufferLen
- BL CheckBuffer_Maybe
- MOV R3, R8
- LSLS R5, R3, #0x18
- loc_D410880 ; CODE XREF: Main+52Aj
- LDR R3, =HW_GPIO1OUT
- LSRS R0, R5, #0x18
- LDR R4, [R3]
- BL SendGPIODebugOut
- LDR R0, =500000
- BL UDelay
- LDR R3, =HW_Time_Start
- LSLS R4, R4, #8
- LDRB R0, [R3,#(HW_Time_Start+3 - 0xD413768)] ; Value
- BL SendGPIODebugOut
- LSRS R4, R4, #0x18
- LDR R0, =500000
- BL UDelay
- MOVS R0, R4 ; Value
- BL SendGPIODebugOut
- LDR R0, =500000
- BL UDelay
- B loc_D410880
- ; ---------------------------------------------------------------------------
- loc_D4108B0 ; CODE XREF: Main+218j
- MOVS R0, #0xC3
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D4108B4 ; CODE XREF: Main+1B0j
- LDR R1, =dword_D800510
- LDR R2, =0xDFFFFFFF
- LDR R3, [R1]
- ANDS R3, R2
- MOVS R2, #1
- MOV R8, R2
- MOVS R2, #0xC0
- STR R3, [R1]
- LSLS R2, R2, #0x15
- MOVS R3, #0x80
- ANDS R2, R0
- LSLS R3, R3, #0x14
- CMP R2, R3
- BEQ loc_D410930
- MOVS R3, #0x10000000
- CMP R2, R3
- BEQ loc_D41091A
- MOVS R0, #0xC2
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D4108DC ; CODE XREF: Main+1AAj
- MOVS R0, #2
- MOV R8, R0
- MOVS R0, #0xC1
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D4108E4 ; CODE XREF: Main+41Aj
- MOVS R0, #0xD5
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D4108E8 ; CODE XREF: Main+2FCj
- LDR R2, =HW_Time_Start
- MOVS R3, #1
- STR R3, [R2]
- B loc_D410684
- ; ---------------------------------------------------------------------------
- loc_D4108F0 ; CODE XREF: Main+444j
- MOVS R7, #0xD1
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- loc_D4108F4 ; CODE XREF: Main+464j
- MOVS R0, #0
- BL CheckBoot0_Maybe
- MOV R0, R9
- MOV R2, R11
- LDR R3, [R0]
- LDR R1, [R2]
- LSRS R3, R3, #0xF
- MOVS R0, #dword_D400000
- LSLS R1, R1, #6
- LSRS R2, R4, #0xB
- ANDS R3, R6
- BL sub_D4115EC
- CMP R0, #0
- BNE loc_D410946
- MOVS R7, #0xD7
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- loc_D41091A ; CODE XREF: Main+552j
- LDR R3, =dword_D413764
- MOVS R2, #2
- STR R2, [R3]
- LDR R2, =OTP_200
- LDR R3, =Dyn_AES_Key_Buffer
- STR R2, [R3]
- LDR R2, =AES_Key_1
- LDR R3, =AES_Key_Ptr
- STR R2, [R3]
- LDR R2, =RSA_PUB_1
- B loc_D410542
- ; ---------------------------------------------------------------------------
- loc_D410930 ; CODE XREF: Main+54Aj
- LDR R3, =dword_D413764
- MOV R0, R8
- STR R0, [R3]
- LDR R3, =Dyn_AES_Key_Buffer
- MOV R2, R11
- STR R2, [R3]
- LDR R0, =AES_Key_1
- LDR R3, =AES_Key_Ptr
- LDR R2, =RSA_PUB_0
- STR R0, [R3]
- B loc_D410542
- ; ---------------------------------------------------------------------------
- loc_D410946 ; CODE XREF: Main+590j
- LDR R2, =HW_TIMER
- LDR R3, [R2]
- LDR R2, =dword_D417FE4
- SUBS R3, R3, R5
- STR R3, [R2]
- MOVS R0, #0x18 ; Value
- BL SendGPIODebugOut
- LDR R3, =Dyn_AES_Key_Buffer
- LDR R3, [R3]
- CMP R3, #0
- BNE loc_D410960
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- loc_D410960 ; CODE XREF: Main+5D8j
- MOVS R0, #0x19 ; Value
- BL SendGPIODebugOut
- LDR R3, =dword_D413B5C
- MOVS R1, #0xD4
- LDR R0, [R3]
- LSLS R1, R1, #0x14 ; R1 == 0xD400000
- BL CalcSHA_And_RSA
- SUBS R4, R0, #0
- BNE DecryptBuffer
- LDR R3, =HW_GPIO1OUT
- LDR R3, [R3]
- LSLS R3, R3, #8
- LSRS R7, R3, #0x18
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- DecryptBuffer ; CODE XREF: Main+5F0j
- MOVS R0, #0x1A ; Value
- BL SendGPIODebugOut
- LDR R3, =AES_Key_Ptr
- MOVS R1, #0xD4
- LDR R0, [R3] ; AESKey
- LSLS R1, R1, #0x14 ; R1 == 0xD400000
- MOVS R2, R4 ; BufferPagesCount
- BL AES_Decrypt ; PAGE = 0x1000
- B loc_D41062C
- ; ---------------------------------------------------------------------------
- loc_D410996 ; CODE XREF: Main+306j
- MOVS R0, #0x1E ; Value
- BL SendGPIODebugOut
- LDR R3, =HW_GPIO1INTENABLE
- LDR R1, =0xBFFFFFFF
- LDR R0, [R3]
- ANDS R0, R1
- STR R0, [R3]
- LDR R2, =HW_GPIO1DIR
- MOVS R3, #0x80
- LDR R0, [R2]
- LSLS R3, R3, #0x17
- ORRS R0, R3
- STR R0, [R2]
- SUBS R2, #8
- LDR R0, [R2]
- ORRS R0, R3
- STR R0, [R2]
- LDR R3, =HW_GPIO1OUT
- LDR R0, [R3]
- ANDS R0, R1
- STR R0, [R3]
- LDR R3, =dword_D413750
- LDR R2, [R3]
- LDR R3, =HW_TIMER
- LSLS R2, R2, #0x16
- LDR R6, [R3]
- MOVS R7, R3
- LDR R3, =20000
- LSRS R2, R2, #0x1E
- MOVS R5, R2
- MULS R5, R3
- loc_D4109D6 ; CODE XREF: Main+660j
- LDR R2, =20000
- LDR R4, [R7]
- ADDS R0, R5, R2
- SUBS R4, R4, R6
- BL sub_D412060
- CMP R4, R0
- BCC loc_D4109D6
- MOVS R0, #0
- MOVS R1, #0
- ADD R2, SP, #0b100
- BL sub_D411290
- CMP R0, #0
- BEQ loc_D410AAA
- LDR R3, =dword_D413750
- LDR R1, [R3]
- LDR R2, [SP,#0b100]
- LSLS R0, R1, #0x14
- BPL loc_D410ABE
- MOVS R4, #0xFF
- ANDS R4, R1
- loc_D410A02 ; CODE XREF: Main+73Cj
- LDR R3, [R3]
- LSLS R3, R3, #0x15
- LSRS R3, R3, #0x1F
- STR R3, [SP,#0x30+var_30]
- MOVS R0, #0
- MOVS R1, #0
- MOVS R3, R4
- BL sub_D41139C
- CMP R0, #0
- BEQ loc_D410ABA
- MOVS R0, #0
- BL CheckBoot0_Maybe
- MOVS R2, #0xD4
- MOVS R3, #0x80
- MOVS R0, #0
- MOVS R1, #0
- LSLS R2, R2, #0x14
- LSLS R3, R3, #3
- BL sub_D411544
- CMP R0, #0
- BEQ loc_D410AB6
- LDR R4, =word_D413940
- MOVS R2, #0x60
- MOVS R0, R4
- LDR R1, =unk_D4001A0
- BL sub_D4132E0
- LDR R3, [R4,#(dword_D41394C - 0xD413940)]
- LDR R2, =0x3FF
- ADDS R4, R3, R2
- LDR R3, =0xFFFFFE00
- ANDS R4, R3
- LDR R3, =0xF7FF
- SUBS R2, R4, #1
- CMP R2, R3
- BHI loc_D410AB2
- MOVS R0, #0
- BL CheckBoot0_Maybe
- MOVS R2, #0xD4
- MOVS R0, #0
- MOVS R1, #0
- LSLS R2, R2, #0x14
- MOVS R3, R4
- BL sub_D411544
- CMP R0, #0
- BEQ loc_D410AAE
- MOVS R0, #0x1F ; Value
- BL SendGPIODebugOut
- LDR R3, =Dyn_AES_Key_Buffer
- LDR R3, [R3]
- CMP R3, #0
- BNE loc_D410A78
- B loc_D410692
- ; ---------------------------------------------------------------------------
- loc_D410A78 ; CODE XREF: Main+6F0j
- MOVS R0, #0x20 ; Value
- BL SendGPIODebugOut
- LDR R3, =dword_D413B5C
- MOVS R1, #0xD4
- LDR R0, [R3]
- LSLS R1, R1, #0x14
- BL CalcSHA_And_RSA
- SUBS R4, R0, #0
- BNE loc_D410A90
- B loc_D410868
- ; ---------------------------------------------------------------------------
- loc_D410A90 ; CODE XREF: Main+708j
- MOVS R0, #0x21 ; Value
- BL SendGPIODebugOut
- LDR R3, =AES_Key_Ptr
- MOVS R1, #0xD4
- LDR R0, [R3] ; AESKey
- LSLS R1, R1, #0x14 ; R1 = 0xD400000
- MOVS R2, R4 ; BufferPagesCount
- BL AES_Decrypt ; PAGE = 0x1000
- B loc_D410692
- ; ---------------------------------------------------------------------------
- loc_D410AA6 ; CODE XREF: Main+30Cj
- MOVS R0, R7
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410AAA ; CODE XREF: Main+66Ej
- MOVS R0, #0xD2
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410AAE ; CODE XREF: Main+6E2j
- MOVS R0, #0xD9
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410AB2 ; CODE XREF: Main+6CAj
- MOVS R0, #0xD8
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410AB6 ; CODE XREF: Main+6ACj
- MOVS R0, #0xD4
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410ABA ; CODE XREF: Main+692j
- MOVS R0, #0xD3
- B loc_D410864
- ; ---------------------------------------------------------------------------
- loc_D410ABE ; CODE XREF: Main+678j
- MOVS R4, #1
- B loc_D410A02
- ; END OF FUNCTION CHUNK FOR Main
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D410AC4 DCD HW_TIMER ; DATA XREF: Main+40Er
- ; Main:loc_D410946r ...
- off_D410AC8 DCD HW_Time_Start ; DATA XREF: Main+412r Main+50Cr ...
- off_D410ACC DCD word_D413940 ; DATA XREF: Main:loc_D4107CAr
- ; Main+6AEr
- off_D410AD0 DCD unk_D4001A0 ; DATA XREF: Main+44Cr Main+6B4r
- dword_D410AD4 DCD 0x9FF ; DATA XREF: Main+454r
- dword_D410AD8 DCD 0xFFFFF800 ; DATA XREF: Main+458r
- dword_D410ADC DCD 0xF7FF ; DATA XREF: Main+45Cr Main+6C4r
- off_D410AE0 DCD dword_D80047C ; DATA XREF: Main+470r
- off_D410AE4 DCD dword_D8005BC ; DATA XREF: Main+478r
- off_D410AE8 DCD word_D41379C ; DATA XREF: Main+496r
- ; Main:loc_D410844r
- off_D410AEC DCD dword_D413744 ; DATA XREF: Main+4C8r
- off_D410AF0 DCD dword_D413754 ; DATA XREF: Main+4CEr
- off_D410AF4 DCD dword_D413740 ; DATA XREF: Main+4D0r
- ; unsigned __int8 *off_D410AF8
- off_D410AF8 DCD AES_Key_1 ; DATA XREF: Main+4E8r Main+5A2r ...
- ; unsigned __int8 *off_D410AFC
- off_D410AFC DCD OTP_200 ; DATA XREF: Main+4EEr Main+59Cr
- off_D410B00 DCD HW_GPIO1OUT ; DATA XREF: Main:loc_D410880r
- ; Main+5F2r ...
- UDelayValue DCD 500000 ; DATA XREF: Main+506r Main+518r ...
- off_D410B08 DCD dword_D800510 ; DATA XREF: Main:loc_D4108B4r
- dword_D410B0C DCD 0xDFFFFFFF ; DATA XREF: Main+532r
- off_D410B10 DCD dword_D413764 ; DATA XREF: Main:loc_D41091Ar
- ; Main:loc_D410930r
- off_D410B14 DCD Dyn_AES_Key_Buffer ; DATA XREF: Main+59Er Main+5B2r ...
- off_D410B18 DCD AES_Key_Ptr ; DATA XREF: Main+5A4r Main+5BAr ...
- off_D410B1C DCD RSA_PUB_1 ; DATA XREF: Main+5A8r
- off_D410B20 DCD RSA_PUB_0 ; DATA XREF: Main+5BCr
- off_D410B24 DCD dword_D417FE4 ; DATA XREF: Main+5C6r
- off_D410B28 DCD dword_D413B5C ; DATA XREF: Main+5E2r Main+6FAr
- off_D410B2C DCD HW_GPIO1INTENABLE ; DATA XREF: Main+618r
- dword_D410B30 DCD 0xBFFFFFFF ; DATA XREF: Main+61Ar
- off_D410B34 DCD HW_GPIO1DIR ; DATA XREF: Main+622r
- off_D410B38 DCD dword_D413750 ; DATA XREF: Main+63Er Main+670r
- dword_D410B3C DCD 20000 ; DATA XREF: Main+64Ar
- ; Main:loc_D4109D6r
- dword_D410B40 DCD 0x3FF ; DATA XREF: Main+6BCr
- dword_D410B44 DCD 0xFFFFFE00 ; DATA XREF: Main+6C0r
- ; =============== S U B R O U T I N E =======================================
- Set_HW_OTP_Command_RD ; CODE XREF: Main+A6p
- LDR R2, =HW_OTP_COMMAND
- MOVS R3, #0x80000000 ; Set RD HighBit
- STR R3, [R2]
- BX LR
- ; End of function Set_HW_OTP_Command_RD
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D410B54 DCD HW_OTP_COMMAND ; DATA XREF: Set_HW_OTP_Command_RDr
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl Read_From_OTP(int Field, unsigned __int8 *OutputBuffer, int Length)
- Read_From_OTP ; CODE XREF: Main:loc_D410464p
- ; Main+ECp ...
- PUSH {R4-R7,LR}
- MOV R7, R10
- MOV R6, R8
- PUSH {R6,R7}
- MOVS R4, R0
- MOVS R5, R1
- MOVS R0, R1 ; Buffer
- MOVS R6, R2
- MOVS R1, #0 ; Unknown
- BL CheckBuffer_Maybe
- MOVS R1, #0
- CMP R6, #0
- BLE Not_Valid
- LDR R2, =HW_OTP_COMMAND
- MOVS R7, #0xE0
- MOV R10, R2
- MOVS R3, #0x1F
- MOVS R0, #0x80
- ADDS R2, #4 ; R2 = HW_OTP_DATA
- LSLS R7, R7, #3 ; 0x700
- MOV R8, R3
- LSLS R0, R0, #0x18 ; 0x8000000 == HIGH_BIT == READ_COMMAND
- MOV R12, R2
- Read_From_HW_OTP_DATA ; CODE XREF: Read_From_OTP+4Cj
- LSLS R3, R4, #3 ; R4 == Field
- MOV R2, R8 ; R8 == 0x1F
- ANDS R2, R4 ; R2 = Field(R4) & 0x1F
- ANDS R3, R7 ; R3 = (Field(R4) << 3) & 0x700(R7)
- ORRS R3, R2 ; R3 = ((Field(R4) << 3) & 0x700(R7)) | (Field(R4) & 0x1F)
- ORRS R3, R0 ; SET RD BIT
- MOV R2, R10 ; HW_OTP_COMMAND
- STR R3, [R2] ; Set HW_OTP_COMMAND
- MOV R2, R12
- LDR R3, [R2] ; Load Data From HW_OTP_DATA
- ADDS R1, #4
- STMIA R5!, {R3}
- ADDS R4, #1
- CMP R1, R6
- BLT Read_From_HW_OTP_DATA ; R4 == Field
- Not_Valid ; CODE XREF: Read_From_OTP+1Aj
- POP {R3,R4}
- MOV R8, R3
- MOV R10, R4
- POP {R4-R7}
- POP {R0}
- BX R0
- ; End of function Read_From_OTP
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D410BB4 DCD HW_OTP_COMMAND ; DATA XREF: Read_From_OTP+1Cr
- ; ---------------------------------------------------------------------------
- Init_EXI_Register ; CODE XREF: Main+2E2p
- PUSH {R4,LR}
- LDR R1, =EXI0_CSR ; Communication Status Register
- LDR R0, =EXI1_CSR
- LDR R4, =EXI2_CSR
- MOVS R3, #0 ; EXI_CSR_EXIINTMSK
- STR R3, [R1] ; Communication Status Register
- STR R3, [R0]
- STR R3, [R4]
- MOVS R3, #0x2000 ; EXI_CSR_ROMDIS - disable IPL decryption logic
- STR R3, [R1] ; Communication Status Register
- LDR R2, =0x80A
- LDR R3, [R1] ; Communication Status Register
- ORRS R3, R2
- STR R3, [R1] ; Communication Status Register
- LDR R3, [R0]
- ORRS R3, R2
- STR R3, [R0]
- LDR R3, [R4]
- ORRS R3, R2
- STR R3, [R4]
- POP {R4}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- off_D410BE8 DCD EXI0_CSR ; DATA XREF: SRAM:0D410BBAr
- ; Communication Status Register
- off_D410BEC DCD EXI1_CSR ; DATA XREF: SRAM:0D410BBCr
- off_D410BF0 DCD EXI2_CSR ; DATA XREF: SRAM:0D410BBEr
- dword_D410BF4 DCD 0x80A ; DATA XREF: SRAM:0D410BCEr
- ; =============== S U B R O U T I N E =======================================
- Set_EXI1_CSR ; CODE XREF: SRAM:0D410D4Ap
- ; sub_D410D78+Cp ...
- PUSH {R4,LR}
- MOVS R3, #0x14
- MOVS R4, R0
- MULS R4, R3
- LDR R3, =0xD006800
- ADDS R4, R4, R3
- MOVS R3, #0x800000
- ORRS R4, R3
- LDR R0, [R4] ; D806814
- LDR R3, =0x405
- ANDS R0, R3
- MOVS R3, #0x80
- LSLS R3, R1
- LSLS R2, R2, #4
- ORRS R3, R2
- ORRS R0, R3
- STR R0, [R4]
- POP {R4}
- POP {R0}
- BX R0
- ; End of function Set_EXI1_CSR
- ; ---------------------------------------------------------------------------
- ALIGN 4
- dword_D410C24 DCD 0xD006800 ; DATA XREF: Set_EXI1_CSR+8r
- dword_D410C28 DCD 0x405 ; DATA XREF: Set_EXI1_CSR+14r
- ; =============== S U B R O U T I N E =======================================
- StoreToGC_EXI ; CODE XREF: SRAM:0D410D6Cp
- ; sub_D410D78+3Ap ...
- MOVS R3, #0x14
- MOVS R1, R0
- MULS R1, R3
- LDR R3, =0xD006800
- ADDS R1, R1, R3
- MOVS R3, #0x800000
- ORRS R1, R3 ; D806814
- LDR R3, [R1]
- LDR R2, =0x405
- ANDS R3, R2
- STR R3, [R1]
- BX LR
- ; End of function StoreToGC_EXI
- ; ---------------------------------------------------------------------------
- ALIGN 4
- dword_D410C48 DCD 0xD006800 ; DATA XREF: StoreToGC_EXI+6r
- dword_D410C4C DCD 0x405 ; DATA XREF: StoreToGC_EXI+12r
- ; =============== S U B R O U T I N E =======================================
- Set_EXI1_CR ; CODE XREF: sub_D410C70+32p
- ; sub_D410D78+22p ...
- PUSH {LR}
- MOVS R3, #0x14
- MULS R3, R0
- LDR R1, =0xD00680C
- ADDS R2, R3, R1
- MOVS R3, #0x800000
- ORRS R2, R3 ; D806820
- MOVS R1, #1
- loc_D410C62 ; CODE XREF: Set_EXI1_CR+16j
- LDR R3, [R2]
- TST R3, R1
- BNE loc_D410C62
- POP {R0}
- BX R0
- ; End of function Set_EXI1_CR
- ; ---------------------------------------------------------------------------
- dword_D410C6C DCD 0xD00680C ; DATA XREF: Set_EXI1_CR+6r
- ; =============== S U B R O U T I N E =======================================
- sub_D410C70 ; CODE XREF: SRAM:0D410D2Ap
- ; SRAM:0D410D5Ap ...
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOVS R7, R1
- MOVS R6, R3
- SUBS R4, R2, #0
- BEQ loc_D410CC8
- CMP R3, #0
- BNE loc_D410CD2
- loc_D410C82 ; CODE XREF: sub_D410C70+8Cj
- MOVS R3, #0x14
- MOVS R2, R0
- MULS R2, R3
- LDR R1, =0xD00680C
- SUBS R3, R4, #1
- MOV R8, R2
- LSLS R3, R3, #4
- MOVS R5, #0x80
- LSLS R2, R6, #2
- ORRS R2, R3
- ADD R1, R8
- LSLS R5, R5, #0x10
- MOVS R3, #1
- ORRS R1, R5
- ORRS R2, R3
- STR R2, [R1]
- BL Set_EXI1_CR
- CMP R6, #0
- BNE loc_D410CC8
- LDR R3, =0xD006810
- ADD R3, R8
- ORRS R3, R5
- LDR R5, [R3]
- MOVS R2, #0
- CMP R4, #0
- BLS loc_D410CC8
- MOVS R0, #0x18
- loc_D410CBA ; CODE XREF: sub_D410C70+56j
- MOVS R3, R5
- LSRS R3, R0
- STRB R3, [R7,R2]
- ADDS R2, #1
- SUBS R0, #8
- CMP R2, R4
- BCC loc_D410CBA
- loc_D410CC8 ; CODE XREF: sub_D410C70+Cj
- ; sub_D410C70+38j ...
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D410CD2 ; CODE XREF: sub_D410C70+10j
- MOVS R5, #0
- MOVS R2, #0
- CMP R4, #0
- BLS loc_D410CEA
- MOVS R1, #0x18
- loc_D410CDC ; CODE XREF: sub_D410C70+78j
- LDRB R3, [R7,R2]
- ADDS R2, #1
- LSLS R3, R1
- ORRS R5, R3
- SUBS R1, #8
- CMP R2, R4
- BCC loc_D410CDC
- loc_D410CEA ; CODE XREF: sub_D410C70+68j
- MOVS R3, #0x14
- MOVS R2, R0
- MULS R2, R3
- LDR R3, =0xD006810
- ADDS R2, R2, R3
- MOVS R3, #0x800000
- ORRS R2, R3
- STR R5, [R2]
- B loc_D410C82
- ; End of function sub_D410C70
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- dword_D410D00 DCD 0xD00680C ; DATA XREF: sub_D410C70+18r
- dword_D410D04 DCD 0xD006810 ; DATA XREF: sub_D410C70+3Ar
- ; sub_D410C70+80r
- ; ---------------------------------------------------------------------------
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOV R8, R0
- MOVS R7, R3
- MOVS R6, R1
- SUBS R5, R2, #0
- BEQ loc_D410D34
- loc_D410D18 ; CODE XREF: SRAM:0D410D32j
- MOVS R4, R5
- CMP R5, #4
- BLS loc_D410D20
- MOVS R4, #4
- loc_D410D20 ; CODE XREF: SRAM:0D410D1Cj
- MOVS R1, R6
- MOV R0, R8
- MOVS R2, R4
- MOVS R3, R7
- SUBS R5, R5, R4
- BL sub_D410C70
- ADDS R6, R6, R4
- CMP R5, #0
- BNE loc_D410D18
- loc_D410D34 ; CODE XREF: SRAM:0D410D16j
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- PUSH {R4,R5,LR}
- SUB SP, SP, #4
- MOVS R5, R2
- MOVS R2, #0
- MOVS R4, R0
- BL Set_EXI1_CSR
- MOVS R3, #0
- STR R3, [SP]
- MOVS R0, R4
- MOV R1, SP
- MOVS R2, #2
- MOVS R3, #1
- BL sub_D410C70
- MOVS R1, R5
- MOVS R0, R4
- MOVS R2, #4
- MOVS R3, #0
- BL sub_D410C70
- MOVS R0, R4
- BL StoreToGC_EXI
- ADD SP, SP, #4
- POP {R4,R5}
- POP {R0}
- BX R0
- ; =============== S U B R O U T I N E =======================================
- sub_D410D78 ; CODE XREF: Main+2EEp
- var_10 = -0x10
- PUSH {R4,R5,LR}
- SUB SP, SP, #4
- MOVS R1, #1
- MOVS R2, #0
- MOVS R5, R0
- MOVS R0, #0
- BL Set_EXI1_CSR
- LDR R3, =0x21000400
- MOV R1, SP
- MOVS R2, #4
- STR R3, [SP,#0x10+var_10]
- MOVS R0, #0
- MOVS R3, #1
- BL sub_D410C70
- MOVS R0, #0
- BL Set_EXI1_CR
- MOVS R2, #4
- MOVS R3, #0
- MOV R1, SP
- MOVS R0, #0
- BL sub_D410C70
- MOVS R0, #0
- BL Set_EXI1_CR
- MOVS R0, #0
- BL StoreToGC_EXI
- LDR R2, [SP,#0x10+var_10]
- LDR R3, =0x3030303
- CMP R2, R3
- BEQ loc_D410DC8
- MOVS R0, #0
- loc_D410DC0 ; CODE XREF: sub_D410D78+8Ej
- ADD SP, SP, #4
- POP {R4,R5}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D410DC8 ; CODE XREF: sub_D410D78+44j
- MOVS R0, #0
- MOVS R1, #1
- MOVS R2, #0
- BL Set_EXI1_CSR
- LDR R3, =0x21000C00
- MOV R1, SP
- MOVS R2, #4
- STR R3, [SP,#0x10+var_10]
- MOVS R0, #0
- MOVS R3, #1
- BL sub_D410C70
- MOVS R0, #0
- BL Set_EXI1_CR
- MOVS R3, #0
- MOV R1, SP
- MOVS R2, #4
- MOVS R0, #0
- BL sub_D410C70
- MOVS R0, #0
- BL Set_EXI1_CR
- MOVS R0, #0
- BL StoreToGC_EXI
- LDR R3, [SP,#0x10+var_10]
- MOVS R0, #1
- STR R3, [R5]
- B loc_D410DC0
- ; End of function sub_D410D78
- ; ---------------------------------------------------------------------------
- dword_D410E08 DCD 0x21000400 ; DATA XREF: sub_D410D78+10r
- dword_D410E0C DCD 0x3030303 ; DATA XREF: sub_D410D78+40r
- dword_D410E10 DCD 0x21000C00 ; DATA XREF: sub_D410D78+5Ar
- ; ---------------------------------------------------------------------------
- LDR R0, [R0,R1]
- BX LR
- ; ---------------------------------------------------------------------------
- STR R2, [R0,R1]
- BX LR
- ; =============== S U B R O U T I N E =======================================
- sub_D410E1C ; CODE XREF: sub_D410EA4+Ep
- LDR R3, =0xFF00FF
- STR R3, [R0,#0x34]
- STR R3, [R0,#0x38]
- BX LR
- ; End of function sub_D410E1C
- ; ---------------------------------------------------------------------------
- dword_D410E24 DCD 0xFF00FF ; DATA XREF: sub_D410E1Cr
- ; =============== S U B R O U T I N E =======================================
- sub_D410E28 ; CODE XREF: sub_D411290+40p
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R0, [R0,R3]
- LSLS R1, R1, #8
- ADDS R0, R0, R1
- LDR R3, [R0,#0x2C]
- MOVS R1, #0xF0000
- LSLS R2, R2, #0x10
- BICS R3, R1
- ANDS R2, R1
- ORRS R3, R2
- STR R3, [R0,#0x2C]
- LDR R3, [R0,#0x2C]
- BX LR
- ; End of function sub_D410E28
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D410E48 DCD SDHC_REG_BASE ; DATA XREF: sub_D410E28r
- ; =============== S U B R O U T I N E =======================================
- sub_D410E4C ; CODE XREF: sub_D411138+1Ep
- ; sub_D41143C+1Ep
- PUSH {LR}
- CMP R0, #0x38 ; switch 57 cases
- BHI def_D410E58 ; jumptable 0D410E58 default case
- LDR R2, =jpt_D410E58
- LSLS R3, R0, #2
- LDR R3, [R3,R2]
- MOV PC, R3 ; switch jump
- ; ---------------------------------------------------------------------------
- def_D410E58 ; CODE XREF: sub_D410E4C+4j
- ; sub_D410E4C+Cj
- ; DATA XREF: ...
- MOVS R0, #0 ; jumptable 0D410E58 default case
- loc_D410E5C ; CODE XREF: sub_D410E4C+16j
- ; sub_D410E4C+1Ej ...
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D410E60 ; CODE XREF: sub_D410E4C+Cj
- ; sub_D410E4C+1Aj
- ; DATA XREF: ...
- MOVS R0, #3 ; jumptable 0D410E58 cases 7,12,28,29,38
- B loc_D410E5C
- ; ---------------------------------------------------------------------------
- loc_D410E64 ; CODE XREF: sub_D410E4C+Cj
- ; DATA XREF: SRAM:0D41330Co ...
- CMP R1, #0 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- BNE loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- MOVS R0, #2
- B loc_D410E5C
- ; ---------------------------------------------------------------------------
- loc_D410E6C ; CODE XREF: sub_D410E4C+Cj
- ; DATA XREF: SRAM:0D413308o ...
- MOVS R0, #1 ; jumptable 0D410E58 cases 2,9,10
- B loc_D410E5C
- ; End of function sub_D410E4C
- ; ---------------------------------------------------------------------------
- off_D410E70 DCD jpt_D410E58 ; DATA XREF: sub_D410E4C+6r
- ; =============== S U B R O U T I N E =======================================
- sub_D410E74 ; CODE XREF: sub_D411290+1Ep
- PUSH {R4,R5,LR}
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R3, [R0,R3]
- LSLS R1, R1, #8
- ADDS R4, R3, R1
- LDR R3, [R4,#0x2C]
- ORRS R3, R2
- STR R3, [R4,#0x2C]
- LDR R3, [R4,#0x2C]
- MOVS R5, R2
- TST R3, R5
- BEQ loc_D410E9A
- loc_D410E8E ; CODE XREF: sub_D410E74+24j
- MOVS R0, #0xA
- BL UDelay
- LDR R3, [R4,#0x2C]
- TST R3, R5
- BNE loc_D410E8E
- loc_D410E9A ; CODE XREF: sub_D410E74+18j
- POP {R4,R5}
- POP {R0}
- BX R0
- ; End of function sub_D410E74
- ; ---------------------------------------------------------------------------
- off_D410EA0 DCD SDHC_REG_BASE ; DATA XREF: sub_D410E74+2r
- ; =============== S U B R O U T I N E =======================================
- sub_D410EA4 ; CODE XREF: sub_D411290+26p
- PUSH {R4-R7,LR}
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R3, [R0,R3]
- LSLS R1, R1, #8
- ADDS R4, R3, R1
- MOVS R0, R4
- BL sub_D410E1C
- LDR R3, =0x1FF01FF
- STR R3, [R4,#0x30]
- LDR R3, [R4,#0x24]
- MOVS R5, #0
- LSLS R2, R3, #0xF
- BMI loc_D410EE0
- MOVS R6, #0x3E8
- MOVS R7, #1
- loc_D410EC8 ; CODE XREF: sub_D410EA4+3Aj
- MOVS R0, #0x3E8
- BL UDelay
- CMP R5, R6
- BHI loc_D410EEC
- LDR R3, [R4,#0x24]
- MOVS R2, R7
- LSRS R3, R3, #0x10
- ADDS R5, #1
- BICS R2, R3
- BNE loc_D410EC8
- loc_D410EE0 ; CODE XREF: sub_D410EA4+1Cj
- MOVS R3, #0x40
- STR R3, [R4,#0x30]
- MOVS R0, #1
- loc_D410EE6 ; CODE XREF: sub_D410EA4+4Aj
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D410EEC ; CODE XREF: sub_D410EA4+2Ej
- MOVS R0, #0
- B loc_D410EE6
- ; End of function sub_D410EA4
- ; ---------------------------------------------------------------------------
- off_D410EF0 DCD SDHC_REG_BASE ; DATA XREF: sub_D410EA4+2r
- dword_D410EF4 DCD 0x1FF01FF ; DATA XREF: sub_D410EA4+12r
- ; =============== S U B R O U T I N E =======================================
- sub_D410EF8 ; CODE XREF: sub_D411290+4Ap
- ; sub_D41139C+10p
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R3, [R0,R3]
- LSLS R1, R1, #8
- ADDS R6, R3, R1
- LDR R1, [R6,#0x2C]
- LDR R3, =0xFFFF00FB
- ANDS R1, R3
- LSLS R7, R2, #8
- MOVS R3, R1
- ORRS R3, R7
- MOVS R4, #1
- ORRS R3, R4
- STR R3, [R6,#0x2C]
- MOVS R0, #0xA
- MOV R8, R1
- BL UDelay
- LDR R3, [R6,#0x2C]
- LSRS R3, R3, #1
- MOVS R5, #0
- BICS R4, R3
- BEQ loc_D410F44
- MOVS R4, #1
- loc_D410F2E ; CODE XREF: sub_D410EF8+4Aj
- MOVS R0, #0xA
- ADDS R5, #1
- BL UDelay
- CMP R5, #0x63
- BHI loc_D410F80
- LDR R3, [R6,#0x2C]
- MOVS R2, R4
- LSRS R3, R3, #1
- BICS R2, R3
- BNE loc_D410F2E
- loc_D410F44 ; CODE XREF: sub_D410EF8+32j
- MOV R3, R8
- ORRS R7, R3
- MOVS R3, #5
- ORRS R7, R3
- STR R7, [R6,#0x2C]
- MOVS R0, #0xA
- BL UDelay
- LDR R3, [R6,#0x2C]
- MOVS R5, #0
- LSLS R1, R3, #0x1E
- BMI loc_D410F74
- MOVS R4, #1
- loc_D410F5E ; CODE XREF: sub_D410EF8+7Aj
- MOVS R0, #0xA
- ADDS R5, #1
- BL UDelay
- CMP R5, #0x63
- BHI loc_D410F80
- LDR R3, [R6,#0x2C]
- MOVS R2, R4
- LSRS R3, R3, #1
- BICS R2, R3
- BNE loc_D410F5E
- loc_D410F74 ; CODE XREF: sub_D410EF8+62j
- MOVS R0, #1
- loc_D410F76 ; CODE XREF: sub_D410EF8+8Aj
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D410F80 ; CODE XREF: sub_D410EF8+40j
- ; sub_D410EF8+70j
- MOVS R0, #0
- B loc_D410F76
- ; End of function sub_D410EF8
- ; ---------------------------------------------------------------------------
- off_D410F84 DCD SDHC_REG_BASE ; DATA XREF: sub_D410EF8+6r
- dword_D410F88 DCD 0xFFFF00FB ; DATA XREF: sub_D410EF8+12r
- ; =============== S U B R O U T I N E =======================================
- sub_D410F8C ; CODE XREF: sub_D41105C+10p
- ; sub_D411078+18p ...
- arg_0 = 0
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOV R8, R3
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R3, [R0,R3]
- LSLS R1, R1, #8
- ADDS R4, R3, R1
- LDR R3, [R4,#0x24]
- MOVS R0, #1
- MOVS R5, #0
- TST R3, R0
- BNE loc_D41100A
- STR R2, [R4,#8]
- LDR R2, =0xFFFF0000
- MOV R3, R8
- ANDS R2, R3
- LDR R1, =0xFFFF
- LDR R3, [R4,#0xC]
- ANDS R3, R1
- ORRS R2, R3
- STR R2, [R4,#0xC]
- LDR R3, [R4,#0x30]
- BICS R0, R3
- BEQ loc_D410FE2
- LDR R7, =0x2710
- MOVS R6, #1
- loc_D410FC4 ; CODE XREF: sub_D410F8C+54j
- MOVS R0, #0xC8
- BL UDelay
- LDR R3, [R4,#0x30]
- LSRS R3, R3, #0xF
- TST R3, R6
- BNE loc_D41100A
- MOVS R3, R5
- ADDS R5, #1
- CMP R3, R7
- BHI loc_D41100A
- LDR R3, [R4,#0x30]
- MOVS R2, R6
- BICS R2, R3
- BNE loc_D410FC4
- loc_D410FE2 ; CODE XREF: sub_D410F8C+32j
- MOV R2, R8
- LSLS R3, R2, #2
- MOVS R1, #1
- LSRS R2, R3, #0x1A
- STR R1, [R4,#0x30]
- CMP R2, #7
- BEQ loc_D411016
- CMP R2, #0xC
- BEQ loc_D411016
- loc_D410FF4 ; CODE XREF: sub_D410F8C+BCj
- LDR R3, [R4,#0x30]
- LSLS R2, R3, #0x10
- BMI loc_D41100A
- LDR R3, [SP,#0x18+arg_0]
- CMP R3, #0
- BEQ loc_D411006
- LDR R3, [R4,#0x10]
- LDR R2, [SP,#0x18+arg_0]
- STR R3, [R2]
- loc_D411006 ; CODE XREF: sub_D410F8C+72j
- MOVS R0, #1
- B loc_D41100C
- ; ---------------------------------------------------------------------------
- loc_D41100A ; CODE XREF: sub_D410F8C+1Aj
- ; sub_D410F8C+44j ...
- MOVS R0, #0
- loc_D41100C ; CODE XREF: sub_D410F8C+7Cj
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411016 ; CODE XREF: sub_D410F8C+62j
- ; sub_D410F8C+66j
- LDR R3, [R4,#0x30]
- LSRS R3, R3, #1
- MOVS R5, #0
- BICS R1, R3
- BEQ loc_D411044
- MOVS R6, #1
- loc_D411022 ; CODE XREF: sub_D410F8C+B6j
- MOVS R0, #0xC8
- BL UDelay
- LDR R3, [R4,#0x30]
- LSRS R3, R3, #0xF
- TST R3, R6
- BNE loc_D41100A
- LDR R3, =0x2710
- MOVS R2, R5
- ADDS R5, #1
- CMP R2, R3
- BHI loc_D41100A
- LDR R3, [R4,#0x30]
- MOVS R2, R6
- LSRS R3, R3, #1
- BICS R2, R3
- BNE loc_D411022
- loc_D411044 ; CODE XREF: sub_D410F8C+92j
- MOVS R3, #2
- STR R3, [R4,#0x30]
- B loc_D410FF4
- ; End of function sub_D410F8C
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41104C DCD SDHC_REG_BASE ; DATA XREF: sub_D410F8C+8r
- dword_D411050 DCD 0xFFFF0000 ; DATA XREF: sub_D410F8C+1Er
- dword_D411054 DCD 0xFFFF ; DATA XREF: sub_D410F8C+24r
- dword_D411058 DCD 0x2710 ; DATA XREF: sub_D410F8C+34r
- ; sub_D410F8C+A4r
- ; =============== S U B R O U T I N E =======================================
- sub_D41105C ; CODE XREF: sub_D411290+96p
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #4
- MOVS R3, R0
- STR R2, [SP,#8+var_8]
- MOVS R0, R1
- MOVS R2, #0
- MOVS R1, R3
- MOVS R3, #0
- BL sub_D410F8C
- ADD SP, SP, #4
- POP {R1}
- BX R1
- ; End of function sub_D41105C
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- sub_D411078 ; CODE XREF: sub_D411290+E2p
- var_10 = -0x10
- PUSH {R4,R5,LR}
- LDR R3, =SDHC_REG_BASE
- MOVS R5, R2
- LSLS R2, R0, #2
- LDR R3, [R2,R3]
- LSLS R4, R1, #8
- SUB SP, SP, #4
- ADDS R4, R3, R4
- MOVS R3, #0
- STR R3, [SP,#0x10+var_10]
- MOVS R2, #0
- LDR R3, =0x2090000
- BL sub_D410F8C
- CMP R0, #0
- BEQ loc_D4110B0
- CMP R5, #0
- BEQ loc_D4110AE
- MOVS R2, #0
- MOVS R1, #3
- loc_D4110A0 ; CODE XREF: sub_D411078+34j
- MOVS R3, R2
- ADDS R3, #0x10
- LDR R3, [R4,R3]
- STR R3, [R2,R5]
- ADDS R2, #4
- SUBS R1, #1
- BPL loc_D4110A0
- loc_D4110AE ; CODE XREF: sub_D411078+22j
- MOVS R0, #1
- loc_D4110B0 ; CODE XREF: sub_D411078+1Ej
- ADD SP, SP, #4
- POP {R4,R5}
- POP {R1}
- BX R1
- ; End of function sub_D411078
- ; ---------------------------------------------------------------------------
- off_D4110B8 DCD SDHC_REG_BASE ; DATA XREF: sub_D411078+2r
- dword_D4110BC DCD 0x2090000 ; DATA XREF: sub_D411078+16r
- ; =============== S U B R O U T I N E =======================================
- sub_D4110C0 ; CODE XREF: sub_D411290+F0p
- var_18 = -0x18
- PUSH {R4-R7,LR}
- LDR R3, =SDHC_REG_BASE
- MOVS R7, R2
- LSLS R2, R0, #2
- LDR R3, [R2,R3]
- MOVS R5, R1
- LSLS R1, R1, #8
- SUB SP, SP, #4
- MOVS R6, R0
- ADDS R4, R3, R1
- loc_D4110D4 ; CODE XREF: sub_D4110C0+2Ej
- MOVS R3, #0
- STR R3, [SP,#0x18+var_18]
- MOVS R0, R6
- MOVS R1, R5
- MOVS R2, #0
- LDR R3, =0x31A0000
- BL sub_D410F8C
- CMP R0, #0
- BEQ loc_D4110F8
- LDR R3, [R4,#0x10]
- LSRS R3, R3, #0x10
- CMP R3, #0
- BEQ loc_D4110D4
- CMP R7, #0
- BEQ loc_D4110F6
- STR R3, [R7]
- loc_D4110F6 ; CODE XREF: sub_D4110C0+32j
- MOVS R0, #1
- loc_D4110F8 ; CODE XREF: sub_D4110C0+26j
- ADD SP, SP, #4
- POP {R4-R7}
- POP {R1}
- BX R1
- ; End of function sub_D4110C0
- ; ---------------------------------------------------------------------------
- off_D411100 DCD SDHC_REG_BASE ; DATA XREF: sub_D4110C0+2r
- dword_D411104 DCD 0x31A0000 ; DATA XREF: sub_D4110C0+1Er
- ; =============== S U B R O U T I N E =======================================
- sub_D411108 ; CODE XREF: sub_D411290+58p
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #4
- STR R2, [SP,#8+var_8]
- LDR R3, =0x5020000
- MOVS R2, #0
- BL sub_D410F8C
- ADD SP, SP, #4
- POP {R1}
- BX R1
- ; End of function sub_D411108
- ; ---------------------------------------------------------------------------
- dword_D41111C DCD 0x5020000 ; DATA XREF: sub_D411108+6r
- ; =============== S U B R O U T I N E =======================================
- sub_D411120 ; CODE XREF: sub_D41139C+2Cp
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #4
- STR R3, [SP,#8+var_8]
- LSLS R2, R2, #0x10
- LDR R3, =0x71B0000
- BL sub_D410F8C
- ADD SP, SP, #4
- POP {R1}
- BX R1
- ; End of function sub_D411120
- ; ---------------------------------------------------------------------------
- dword_D411134 DCD 0x71B0000 ; DATA XREF: sub_D411120+8r
- ; =============== S U B R O U T I N E =======================================
- sub_D411138
- var_1C = -0x1C
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOV R8, R3
- LDR R3, =SDHC_REG_BASE
- MOVS R6, R2
- LSLS R2, R0, #2
- LDR R3, [R2,R3]
- MOVS R5, R1
- LSLS R1, R1, #8
- MOVS R4, R0
- ADDS R7, R3, R1
- SUB SP, SP, #4
- MOVS R1, #0
- MOVS R0, #9
- BL sub_D410E4C
- LSLS R3, R0, #0x10
- MOVS R0, R4
- LDR R4, =0x9080000
- MOVS R2, #0
- STR R2, [SP,#0x1C+var_1C]
- MOVS R1, R5
- LSLS R2, R6, #0x10
- ORRS R3, R4
- BL sub_D410F8C
- CMP R0, #0
- BEQ loc_D41118E
- MOV R0, R8
- CMP R0, #0
- BEQ loc_D41118C
- MOVS R2, #0
- MOVS R1, #3
- loc_D41117C ; CODE XREF: sub_D411138+52j
- MOVS R3, R2
- ADDS R3, #0x10
- LDR R3, [R7,R3]
- MOV R0, R8
- STR R3, [R2,R0]
- ADDS R2, #4
- SUBS R1, #1
- BPL loc_D41117C
- loc_D41118C ; CODE XREF: sub_D411138+3Ej
- MOVS R0, #1
- loc_D41118E ; CODE XREF: sub_D411138+38j
- ADD SP, SP, #4
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; End of function sub_D411138
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41119C DCD SDHC_REG_BASE ; DATA XREF: sub_D411138+8r
- dword_D4111A0 DCD 0x9080000 ; DATA XREF: sub_D411138+26r
- ; =============== S U B R O U T I N E =======================================
- sub_D4111A4 ; CODE XREF: sub_D41139C+40p
- ; sub_D41139C+5Ep
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #4
- STR R3, [SP,#8+var_8]
- LSLS R2, R2, #0x10
- LDR R3, =0xD1A0000
- BL sub_D410F8C
- ADD SP, SP, #4
- POP {R1}
- BX R1
- ; End of function sub_D4111A4
- ; ---------------------------------------------------------------------------
- dword_D4111B8 DCD 0xD1A0000 ; DATA XREF: sub_D4111A4+8r
- ; =============== S U B R O U T I N E =======================================
- sub_D4111BC ; CODE XREF: sub_D41139C+7Ap
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #4
- STR R3, [SP,#8+var_8]
- LDR R3, =0x101A0000
- BL sub_D410F8C
- ADD SP, SP, #4
- POP {R1}
- BX R1
- ; End of function sub_D4111BC
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- dword_D4111D0 DCD 0x101A0000 ; DATA XREF: sub_D4111BC+6r
- ; =============== S U B R O U T I N E =======================================
- sub_D4111D4 ; CODE XREF: sub_D41139C+8Ep
- var_1C = -0x1C
- arg_0 = 0
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOVS R6, R2
- LDR R2, =SDHC_REG_BASE
- MOVS R5, R1
- LSLS R1, R0, #2
- LDR R2, [R1,R2]
- SUB SP, SP, #4
- MOVS R4, R0
- LSLS R0, R5, #8
- ADDS R2, R2, R0
- LDR R7, [SP,#0x1C+arg_0]
- MOV R8, R2
- MOVS R0, R4
- LSLS R2, R3, #0x10
- MOVS R1, R5
- LDR R3, =0x371A0000
- STR R7, [SP,#0x1C+var_1C]
- BL sub_D410F8C
- CMP R0, #0
- BNE loc_D41120E
- loc_D411202 ; CODE XREF: sub_D4111D4+4Cj
- ; sub_D4111D4+5Ej
- ADD SP, SP, #4
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D41120E ; CODE XREF: sub_D4111D4+2Cj
- LSLS R6, R6, #1
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, R6
- LDR R3, =0x6020000
- STR R7, [SP,#0x1C+var_1C]
- BL sub_D410F8C
- CMP R0, #0
- BEQ loc_D411202
- MOV R2, R8
- LDR R3, [R2,#0x28]
- MOVS R2, #2
- BICS R3, R2
- ORRS R3, R6
- MOV R2, R8
- MOVS R0, #1
- STR R3, [R2,#0x28]
- B loc_D411202
- ; End of function sub_D4111D4
- ; ---------------------------------------------------------------------------
- off_D411234 DCD SDHC_REG_BASE ; DATA XREF: sub_D4111D4+8r
- dword_D411238 DCD 0x371A0000 ; DATA XREF: sub_D4111D4+22r
- dword_D41123C DCD 0x6020000 ; DATA XREF: sub_D4111D4+42r
- ; =============== S U B R O U T I N E =======================================
- sub_D411240 ; CODE XREF: sub_D411290+A8p
- ; sub_D411290+BEp
- var_1C = -0x1C
- var_18 = -0x18
- PUSH {R4-R7,LR}
- SUB SP, SP, #8
- MOVS R7, R3
- MOVS R3, #0
- MOVS R6, R2
- STR R3, [SP,#0x1C+var_18]
- STR R3, [SP,#0x1C+var_1C]
- MOVS R2, #0
- LDR R3, =0x371A0000
- MOVS R4, R0
- MOVS R5, R1
- BL sub_D410F8C
- CMP R0, #0
- BNE loc_D411266
- loc_D41125E ; CODE XREF: sub_D411240+38j
- ; sub_D411240+44j
- ADD SP, SP, #8
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411266 ; CODE XREF: sub_D411240+1Cj
- ADD R3, SP, #0x1C+var_18
- STR R3, [SP,#0x1C+var_1C]
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, R6
- LDR R3, =0x29020000
- BL sub_D410F8C
- CMP R0, #0
- BEQ loc_D41125E
- CMP R7, #0
- BEQ loc_D411282
- LDR R3, [SP,#0x1C+var_18]
- STR R3, [R7]
- loc_D411282 ; CODE XREF: sub_D411240+3Cj
- MOVS R0, #1
- B loc_D41125E
- ; End of function sub_D411240
- ; ---------------------------------------------------------------------------
- ALIGN 4
- dword_D411288 DCD 0x371A0000 ; DATA XREF: sub_D411240+10r
- dword_D41128C DCD 0x29020000 ; DATA XREF: sub_D411240+30r
- ; =============== S U B R O U T I N E =======================================
- sub_D411290 ; CODE XREF: Main+668p
- var_2C = -0x2C
- var_28 = -0x28
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- LDR R3, =SDHC_REG_BASE
- MOV R8, R2
- LSLS R2, R0, #2
- LDR R3, [R2,R3]
- MOVS R5, R1
- MOVS R2, #0xE0
- LSLS R1, R1, #8
- MOVS R4, R0
- ADDS R6, R3, R1
- SUB SP, SP, #0x14
- MOVS R1, R5
- LSLS R2, R2, #0x13
- BL sub_D410E74
- MOVS R0, R4
- MOVS R1, R5
- BL sub_D410EA4
- CMP R0, #0
- BNE loc_D4112CA
- loc_D4112BE ; CODE XREF: sub_D411290+50j
- ; sub_D411290+9Cj ...
- ADD SP, SP, #0x14
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D4112CA ; CODE XREF: sub_D411290+2Cj
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, #0xA
- BL sub_D410E28
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, #0x40
- BL sub_D410EF8
- CMP R0, #0
- BEQ loc_D4112BE
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, #0
- BL sub_D411108
- CMP R0, #0
- BNE loc_D41138C
- LDR R3, [R6,#0x30]
- LSLS R2, R3, #0xF
- BPL loc_D41138C
- MOVS R3, #0x10000
- STR R3, [R6,#0x30]
- MOVS R3, #0x80
- LDR R2, [R6,#0x2C]
- LSLS R3, R3, #0x12
- ORRS R2, R3
- STR R2, [R6,#0x2C]
- LDR R2, [R6,#0x2C]
- MOVS R3, #1
- LSRS R2, R2, #0x19
- TST R2, R3
- BEQ loc_D411320
- MOVS R7, #1
- loc_D411312 ; CODE XREF: sub_D411290+8Ej
- MOVS R0, #0xA
- BL UDelay
- LDR R3, [R6,#0x2C]
- LSRS R3, R3, #0x19
- TST R3, R7
- BNE loc_D411312
- loc_D411320 ; CODE XREF: sub_D411290+7Ej
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, #0
- BL sub_D41105C
- CMP R0, #0
- BEQ loc_D4112BE
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, #0
- MOV R3, SP
- MOV R7, SP
- BL sub_D411240
- CMP R0, #0
- BEQ loc_D4112BE
- MOVS R6, #0
- B loc_D411366
- ; ---------------------------------------------------------------------------
- loc_D411344 ; CODE XREF: sub_D411290+DAj
- LDR R3, =0x1FFE00
- MOVS R0, R4
- ANDS R2, R3
- MOVS R1, R5
- MOVS R3, R7
- BL sub_D411240
- CMP R0, #0
- BEQ loc_D41138C
- MOVS R0, #0x64
- BL UDelay
- LDR R3, =0x1388
- MOVS R2, R6
- ADDS R6, #1
- CMP R2, R3
- BHI loc_D41138C
- loc_D411366 ; CODE XREF: sub_D411290+B2j
- LDR R2, [SP,#0x2C+var_2C]
- CMP R2, #0
- BGE loc_D411344
- MOVS R0, R4
- MOVS R1, R5
- ADD R2, SP, #0x2C+var_28
- BL sub_D411078
- CMP R0, #0
- BEQ loc_D4112BE
- MOVS R0, R4
- MOVS R1, R5
- MOV R2, R8
- BL sub_D4110C0
- CMP R0, #0
- BEQ loc_D4112BE
- MOVS R0, #1
- B loc_D4112BE
- ; ---------------------------------------------------------------------------
- loc_D41138C ; CODE XREF: sub_D411290+5Ej
- ; sub_D411290+64j ...
- MOVS R0, #0
- B loc_D4112BE
- ; End of function sub_D411290
- ; ---------------------------------------------------------------------------
- off_D411390 DCD SDHC_REG_BASE ; DATA XREF: sub_D411290+6r
- dword_D411394 DCD 0x1FFE00 ; DATA XREF: sub_D411290:loc_D411344r
- dword_D411398 DCD 0x1388 ; DATA XREF: sub_D411290+CCr
- ; =============== S U B R O U T I N E =======================================
- sub_D41139C ; CODE XREF: Main+68Cp
- var_20 = -0x20
- var_1C = -0x1C
- arg_0 = 0
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOVS R6, R2
- SUB SP, SP, #8
- MOVS R2, R3
- MOVS R4, R0
- MOVS R5, R1
- BL sub_D410EF8
- CMP R0, #0
- BNE loc_D4113C0
- loc_D4113B4 ; CODE XREF: sub_D41139C+32j
- ; sub_D41139C+46j ...
- ADD SP, SP, #8
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D4113C0 ; CODE XREF: sub_D41139C+16j
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, R6
- MOVS R3, #0
- BL sub_D411120
- CMP R0, #0
- BEQ loc_D4113B4
- ADD R2, SP, #0x20+var_1C
- MOV R8, R2
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, R6
- MOV R3, R8
- BL sub_D4111A4
- CMP R0, #0
- BEQ loc_D4113B4
- LDR R3, [SP,#0x20+var_1C]
- LSLS R2, R3, #0x17
- BMI loc_D41140C
- MOVS R7, #1
- loc_D4113EC ; CODE XREF: sub_D41139C+6Ej
- MOVS R0, #0x64
- BL UDelay
- MOVS R0, R4
- MOVS R1, R5
- MOVS R2, R6
- MOV R3, R8
- BL sub_D4111A4
- CMP R0, #0
- BEQ loc_D411436
- LDR R3, [SP,#0x20+var_1C]
- MOVS R2, R7
- LSRS R3, R3, #8
- BICS R2, R3
- BNE loc_D4113EC
- loc_D41140C ; CODE XREF: sub_D41139C+4Cj
- MOVS R2, #0x80
- MOVS R0, R4
- MOVS R1, R5
- LSLS R2, R2, #2
- MOVS R3, #0
- BL sub_D4111BC
- CMP R0, #0
- BEQ loc_D4113B4
- MOVS R3, #0
- STR R3, [SP,#0x20+var_20]
- MOVS R0, R4
- MOVS R1, R5
- LDR R2, [SP,#0x20+arg_0]
- MOVS R3, R6
- BL sub_D4111D4
- CMP R0, #0
- BEQ loc_D4113B4
- MOVS R0, #1
- B loc_D4113B4
- ; ---------------------------------------------------------------------------
- loc_D411436 ; CODE XREF: sub_D41139C+64j
- MOVS R0, #0
- B loc_D4113B4
- ; End of function sub_D41139C
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- sub_D41143C ; CODE XREF: sub_D411544+10p
- arg_0 = 0
- arg_4 = 4
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- MOV R11, R3
- LDR R3, =SDHC_REG_BASE
- LSLS R0, R0, #2
- LDR R3, [R0,R3]
- LSLS R1, R1, #8
- ADDS R5, R3, R1
- MOVS R0, #0x12
- MOVS R1, #0
- MOVS R4, R2
- BL sub_D410E4C
- LDR R2, [SP,#0x24+arg_0]
- LSLS R3, R2, #0x10
- MOV R2, R11
- ORRS R3, R2
- STR R3, [R5,#4]
- LDR R3, =0x12380036
- LSLS R0, R0, #0x10
- ORRS R0, R3
- STR R4, [R5,#8]
- STR R0, [R5,#0xC]
- LDR R3, [R5,#0x30]
- LSLS R2, R3, #0x1F
- BMI loc_D411488
- MOVS R4, #1
- loc_D41147A ; CODE XREF: sub_D41143C+4Aj
- MOVS R0, #1
- BL UDelay
- LDR R3, [R5,#0x30]
- MOVS R2, R4
- BICS R2, R3
- BNE loc_D41147A
- loc_D411488 ; CODE XREF: sub_D41143C+3Aj
- MOVS R3, #9
- STR R3, [R5,#0x30]
- LDR R2, [SP,#0x24+arg_0]
- MOVS R3, #0
- LDR R0, [R5,#0x30]
- MOV R8, R3
- CMP R2, #0
- BLS loc_D4114F6
- MOV R3, R11
- LSRS R3, R3, #2
- MOVS R2, #0
- MOV R9, R3
- MOV R10, R2
- loc_D4114A2 ; CODE XREF: sub_D41143C+B8j
- MOV R3, R9
- CMP R3, #0
- BLS loc_D4114EA
- LDR R7, [SP,#0x24+arg_4]
- MOV R6, R9
- ADD R7, R10
- loc_D4114AE ; CODE XREF: sub_D41143C+ACj
- LDR R3, [R5,#0x24]
- LSLS R2, R3, #0x14
- BMI loc_D4114C6
- MOVS R4, #1
- loc_D4114B6 ; CODE XREF: sub_D41143C+88j
- MOVS R0, #0xA
- BL UDelay
- LDR R3, [R5,#0x24]
- MOVS R2, R4
- LSRS R3, R3, #0xB
- BICS R2, R3
- BNE loc_D4114B6
- loc_D4114C6 ; CODE XREF: sub_D41143C+76j
- LDR R0, [R5,#0x20]
- MOVS R3, #0xFF00
- LSRS R2, R0, #8
- ANDS R2, R3
- LSRS R1, R0, #0x18
- MOVS R3, #0xFF
- ORRS R1, R2
- LSLS R3, R3, #0x10
- LSLS R2, R0, #8
- ANDS R2, R3
- ORRS R1, R2
- LSLS R3, R0, #0x18
- ORRS R1, R3
- SUBS R6, #1
- STMIA R7!, {R1}
- CMP R6, #0
- BNE loc_D4114AE
- loc_D4114EA ; CODE XREF: sub_D41143C+6Aj
- MOVS R3, #1
- LDR R2, [SP,#0x24+arg_0]
- ADD R8, R3
- ADD R10, R11
- CMP R8, R2
- BCC loc_D4114A2
- loc_D4114F6 ; CODE XREF: sub_D41143C+5Aj
- LDR R0, [R5,#0x30]
- LSLS R3, R0, #0x1E
- BMI loc_D411514
- MOVS R4, #1
- loc_D4114FE ; CODE XREF: sub_D41143C+D6j
- LSRS R3, R0, #0xF
- TST R3, R4
- BNE loc_D411532
- MOVS R0, #0xA
- BL UDelay
- LDR R0, [R5,#0x30]
- MOVS R2, R4
- LSRS R3, R0, #1
- BICS R2, R3
- BNE loc_D4114FE
- loc_D411514 ; CODE XREF: sub_D41143C+BEj
- LDR R0, [R5,#4]
- LDR R3, =0xFFFF0000
- TST R0, R3
- BNE loc_D411532
- MOVS R3, #2
- STR R3, [R5,#0x30]
- MOVS R0, #1
- loc_D411522 ; CODE XREF: sub_D41143C+F8j
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411532 ; CODE XREF: sub_D41143C+C6j
- ; sub_D41143C+DEj
- MOVS R0, #0
- B loc_D411522
- ; End of function sub_D41143C
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411538 DCD SDHC_REG_BASE ; DATA XREF: sub_D41143C+Er
- dword_D41153C DCD 0x12380036 ; DATA XREF: sub_D41143C+2Cr
- dword_D411540 DCD 0xFFFF0000 ; DATA XREF: sub_D41143C+DAr
- ; =============== S U B R O U T I N E =======================================
- sub_D411544 ; CODE XREF: Main+6A6p Main+6DCp
- var_C = -0xC
- var_8 = -8
- PUSH {LR}
- SUB SP, SP, #8
- LSRS R3, R3, #9
- STR R3, [SP,#0xC+var_C]
- MOVS R3, #0x80
- STR R2, [SP,#0xC+var_8]
- LSLS R3, R3, #2
- MOVS R2, #0
- BL sub_D41143C
- NEGS R3, R0
- ORRS R3, R0
- LSRS R0, R3, #0x1F
- ADD SP, SP, #8
- POP {R1}
- BX R1
- ; End of function sub_D411544
- ; =============== S U B R O U T I N E =======================================
- NAND_Read ; CODE XREF: Main:loc_D410620p
- PUSH {R4,R5,LR}
- LDR R1, =NAND_CONFIG
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #0x14
- ORRS R2, R3
- LDR R3, =NAND_DATABUF
- MOVS R4, #0
- STR R2, [R1]
- STR R4, [R3]
- ADDS R3, #4
- STR R4, [R3]
- SUBS R3, #0xC
- STR R4, [R3]
- ADDS R3, #4
- STR R4, [R3]
- CMP R0, #1
- BEQ loc_D4115CE
- LDR R3, =NAND_UNK1
- LDR R2, [R3]
- MOVS R1, #2
- BICS R2, R1
- loc_D411590 ; CODE XREF: NAND_Read+72j
- STR R2, [R3]
- LDR R2, =NAND_CTRL
- LDR R3, =0x80FF8000
- STR R3, [R2]
- LDR R3, [R2]
- MOVS R4, #0
- CMP R3, #0
- BLT loc_D4115B2
- loc_D4115A0 ; CODE XREF: NAND_Read+56j
- LDR R3, =NAND_UNK1
- LDR R2, [R3]
- MOVS R1, #2
- BICS R2, R1
- STR R2, [R3]
- MOVS R0, #1
- loc_D4115AC ; CODE XREF: NAND_Read+68j
- POP {R4,R5}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D4115B2 ; CODE XREF: NAND_Read+3Aj
- MOVS R5, R2
- B loc_D4115BC
- ; ---------------------------------------------------------------------------
- loc_D4115B6 ; CODE XREF: NAND_Read+64j
- LDR R3, [R5]
- CMP R3, #0
- BGE loc_D4115A0
- loc_D4115BC ; CODE XREF: NAND_Read+50j
- MOVS R0, #0xA
- BL UDelay
- MOVS R3, R4
- ADDS R4, #1
- CMP R3, #0x4B
- BLS loc_D4115B6
- MOVS R0, #0
- B loc_D4115AC
- ; ---------------------------------------------------------------------------
- loc_D4115CE ; CODE XREF: NAND_Read+22j
- ADDS R3, #0xC
- LDR R2, [R3]
- MOVS R1, #2
- ORRS R2, R1
- B loc_D411590
- ; End of function NAND_Read
- ; ---------------------------------------------------------------------------
- off_D4115D8 DCD NAND_CONFIG ; DATA XREF: NAND_Read+2r
- off_D4115DC DCD NAND_DATABUF ; DATA XREF: NAND_Read+Cr
- off_D4115E0 DCD NAND_UNK1 ; DATA XREF: NAND_Read+24r
- ; NAND_Read:loc_D4115A0r
- off_D4115E4 DCD NAND_CTRL ; DATA XREF: NAND_Read+2Er
- dword_D4115E8 DCD 0x80FF8000 ; DATA XREF: NAND_Read+30r
- ; =============== S U B R O U T I N E =======================================
- sub_D4115EC ; CODE XREF: Main+43Cp Main+58Ap
- var_34 = -0x34
- var_30 = -0x30
- var_2C = -0x2C
- var_28 = -0x28
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- SUB SP, SP, #0x10
- ADDS R5, R1, R2
- STR R3, [SP,#0x34+var_28]
- MOVS R4, R1
- ADDS R3, R5, #2
- MOV R8, R0
- MOVS R6, R1
- CMP R3, R4
- BLS loc_D411706
- LSLS R3, R2, #0xB
- ADD R3, R8
- MOVS R1, #1
- NEGS R2, R1
- STR R3, [SP,#0x34+var_2C]
- MOV R12, R2
- loc_D411616 ; CODE XREF: sub_D4115EC+30j
- ; sub_D4115EC+118j
- LDR R1, =NAND_CTRL
- LDR R3, [R1]
- CMP R3, #0
- BLT loc_D411616
- CMP R5, R4
- BLS loc_D411668
- LSRS R3, R4, #0x12
- CMP R3, #0
- BEQ loc_D41170A
- LDR R2, =NAND_UNK1
- LDR R3, [R2]
- MOVS R2, #2
- ORRS R3, R2
- ADDS R1, #0x18
- loc_D411632 ; CODE XREF: sub_D4115EC+128j
- STR R3, [R1]
- LDR R3, =0x3FFFF
- LDR R2, =NAND_ADDR2
- ANDS R3, R4
- STR R3, [R2]
- MOVS R3, #0x9F
- SUBS R2, #0xC
- LSLS R3, R3, #0x18
- STR R3, [R2]
- ADDS R1, R2, #0
- loc_D411646 ; CODE XREF: sub_D4115EC+5Ej
- LDR R3, [R1]
- CMP R3, #0
- BLT loc_D411646
- SUBS R3, R4, R6
- LDR R2, =NAND_DATABUF
- LSLS R3, R3, #0xB
- ADD R3, R8
- STR R3, [R2]
- MOVS R3, #1
- LDR R2, [SP,#0x34+var_2C]
- ANDS R3, R4
- LSLS R3, R3, #7
- ADDS R3, R2, R3
- LDR R2, =NAND_ECCBUF
- STR R3, [R2]
- LDR R3, =0x8030B840
- STR R3, [R1]
- loc_D411668 ; CODE XREF: sub_D4115EC+34j
- LDR R3, [SP,#0x34+var_28]
- CMP R3, #0
- BEQ loc_D4116FA
- CMP R4, R6
- BLS loc_D4116FA
- ADDS R3, R5, #1
- CMP R3, R4
- BLS loc_D4116FA
- MOV R1, R12
- LSLS R3, R1, #0xB
- ADD R3, R8
- MOVS R2, #1
- STR R3, [SP,#0x34+var_30]
- SUBS R3, R4, #1
- ANDS R3, R2
- LDR R1, [SP,#0x34+var_2C]
- LSLS R3, R3, #7
- ADDS R3, R1, R3
- MOVS R2, #0xFF
- LSLS R1, R2, #0x10
- STR R3, [SP,#0x34+var_34]
- LSLS R3, R2, #0x18
- LSLS R2, R2, #8
- MOVS R7, #0
- MOV R11, R3
- MOV R9, R1
- MOV R10, R2
- loc_D41169E ; CODE XREF: sub_D4115EC+10Cj
- LDR R1, [SP,#0x34+var_34]
- LSLS R3, R7, #2
- ADDS R2, R1, R3
- LDR R0, [R2,#0x40]
- MOVS R2, R1
- ADDS R2, #0x30
- LDR R2, [R2,R3]
- CMP R2, R0
- BEQ loc_D4116F4
- MOV R3, R11
- ANDS R3, R2
- LSRS R1, R3, #0x18
- MOV R3, R9
- ANDS R3, R2
- LSRS R3, R3, #8
- ORRS R1, R3
- MOV R3, R10
- ANDS R3, R2
- LSLS R3, R3, #8
- ORRS R1, R3
- MOVS R3, #0xFF
- ANDS R2, R3
- LSLS R3, R2, #0x18
- ORRS R1, R3
- MOV R2, R11
- MOV R3, R9
- ANDS R2, R0
- ANDS R3, R0
- LSRS R3, R3, #8
- LSRS R2, R2, #0x18
- ORRS R2, R3
- MOV R3, R10
- ANDS R3, R0
- LSLS R3, R3, #8
- ORRS R2, R3
- MOVS R3, #0xFF
- ANDS R0, R3
- LSLS R3, R0, #0x18
- ORRS R2, R3
- EORS R1, R2
- SUBS R3, R1, #1
- TST R3, R1
- BNE loc_D411716
- loc_D4116F4 ; CODE XREF: sub_D4115EC+C2j
- ; sub_D4115EC+164j
- ADDS R7, #1
- CMP R7, #4
- BCC loc_D41169E
- loc_D4116FA ; CODE XREF: sub_D4115EC+80j
- ; sub_D4115EC+84j ...
- MOVS R1, #1
- ADDS R4, #1
- ADDS R3, R5, #2
- ADD R12, R1
- CMP R3, R4
- BHI loc_D411616
- loc_D411706 ; CODE XREF: sub_D4115EC+1Cj
- MOVS R0, #1
- B loc_D411726
- ; ---------------------------------------------------------------------------
- loc_D41170A ; CODE XREF: sub_D4115EC+3Aj
- LDR R2, =NAND_UNK1
- LDR R3, [R2]
- LDR R1, =NAND_UNK1
- MOVS R2, #2
- BICS R3, R2
- B loc_D411632
- ; ---------------------------------------------------------------------------
- loc_D411716 ; CODE XREF: sub_D4115EC+106j
- LDR R3, =0xFFF
- LSRS R2, R1, #0x10
- ANDS R3, R1
- LDR R1, =0xFFF
- EORS R3, R2
- CMP R3, R1
- BEQ loc_D411738
- MOVS R0, #0
- loc_D411726 ; CODE XREF: sub_D4115EC+11Cj
- ADD SP, SP, #0x10
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411738 ; CODE XREF: sub_D4115EC+136j
- LDR R3, [SP,#0x34+var_30]
- LSLS R0, R7, #9
- ADDS R0, R0, R3
- LSLS R1, R2, #0x14
- MOVS R3, #7
- ANDS R2, R3
- LSRS R1, R1, #0x17
- MOVS R3, #1
- LSLS R3, R2
- LDRB R2, [R1,R0]
- EORS R3, R2
- STRB R3, [R1,R0]
- B loc_D4116F4
- ; End of function sub_D4115EC
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411754 DCD NAND_CTRL ; DATA XREF: sub_D4115EC:loc_D411616r
- off_D411758 DCD NAND_UNK1 ; DATA XREF: sub_D4115EC+3Cr
- ; sub_D4115EC:loc_D41170Ar ...
- dword_D41175C DCD 0x3FFFF ; DATA XREF: sub_D4115EC+48r
- off_D411760 DCD NAND_ADDR2 ; DATA XREF: sub_D4115EC+4Ar
- off_D411764 DCD NAND_DATABUF ; DATA XREF: sub_D4115EC+62r
- off_D411768 DCD NAND_ECCBUF ; DATA XREF: sub_D4115EC+74r
- dword_D41176C DCD 0x8030B840 ; DATA XREF: sub_D4115EC+78r
- dword_D411770 DCD 0xFFF ; DATA XREF: sub_D4115EC:loc_D411716r
- ; sub_D4115EC+130r
- ; =============== S U B R O U T I N E =======================================
- sub_D411774 ; CODE XREF: Main:loc_D410516p
- LDR R3, =dword_D413460
- STR R0, [R3]
- BX LR
- ; End of function sub_D411774
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41177C DCD dword_D413460 ; DATA XREF: sub_D411774r
- ; =============== S U B R O U T I N E =======================================
- SetGPIO1OutputDirection ; CODE XREF: Main+196p
- LDR R2, =HW_GPIO1INTENABLE
- LDR R1, =0xFFFFC3FF
- LDR R3, [R2]
- ANDS R3, R1
- STR R3, [R2]
- SUBS R2, #0x14
- LDR R3, [R2]
- ANDS R3, R1
- STR R3, [R2]
- LDR R1, =HW_GPIO1DIR
- MOVS R3, #0xE0
- LDR R2, [R1]
- LSLS R3, R3, #5
- ORRS R2, R3
- STR R2, [R1]
- SUBS R1, #8
- LDR R2, [R1]
- MOVS R3, #0x3C00
- ORRS R2, R3
- STR R2, [R1]
- BX LR
- ; End of function SetGPIO1OutputDirection
- ; ---------------------------------------------------------------------------
- off_D4117AC DCD HW_GPIO1INTENABLE ; DATA XREF: SetGPIO1OutputDirectionr
- dword_D4117B0 DCD 0xFFFFC3FF ; DATA XREF: SetGPIO1OutputDirection+2r
- off_D4117B4 DCD HW_GPIO1DIR ; DATA XREF: SetGPIO1OutputDirection+12r
- ; =============== S U B R O U T I N E =======================================
- Enable_EEP_CLK ; CODE XREF: sub_D411810+34p
- ; sub_D411810+5Ap ...
- LDR R1, =HW_GPIO1OUT
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #4 ; R3 == 0x800
- ORRS R2, R3
- STR R2, [R1]
- BX LR
- ; End of function Enable_EEP_CLK
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D4117C8 DCD HW_GPIO1OUT ; DATA XREF: Enable_EEP_CLKr
- ; =============== S U B R O U T I N E =======================================
- Disable_EEP_CLK ; CODE XREF: sub_D411810+1Ep
- ; sub_D411810:loc_D41185Ap ...
- LDR R3, =HW_GPIO1OUT
- LDR R1, =0xFFFFF7FF
- LDR R2, [R3]
- ANDS R2, R1
- STR R2, [R3]
- BX LR
- ; End of function Disable_EEP_CLK
- ; ---------------------------------------------------------------------------
- off_D4117D8 DCD HW_GPIO1OUT ; DATA XREF: Disable_EEP_CLKr
- dword_D4117DC DCD 0xFFFFF7FF ; DATA XREF: Disable_EEP_CLK+2r
- ; =============== S U B R O U T I N E =======================================
- Enable_EEP_CS ; CODE XREF: sub_D411810+22p
- ; sub_D411810+4Ep
- LDR R1, =HW_GPIO1OUT
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #3 ; R3 == 0x400
- ORRS R2, R3
- STR R2, [R1]
- BX LR
- ; End of function Enable_EEP_CS
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- off_D4117F0 DCD HW_GPIO1OUT ; DATA XREF: Enable_EEP_CSr
- ; =============== S U B R O U T I N E =======================================
- Disable_EEP_CS ; CODE XREF: sub_D411810+28p
- ; sub_D411810+8Ep
- LDR R1, =HW_GPIO1OUT
- LDR R2, =0xFFFFEFFF
- LDR R3, [R1]
- ANDS R2, R3
- MOVS R3, #1
- ANDS R3, R0
- LSLS R3, R3, #0xC
- ORRS R2, R3
- STR R2, [R1]
- BX LR
- ; End of function Disable_EEP_CS
- ; ---------------------------------------------------------------------------
- off_D411808
- ; DATA XREF: Disable_EEP_CSr
- dword_D41180C DCD 0xFFFFEFFF ; DATA XREF: Disable_EEP_CS+2r
- ; =============== S U B R O U T I N E =======================================
- sub_D411810 ; CODE XREF: AES_HW_Decrypt_0+24p
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOVS R7, #0xFF
- MOVS R3, #0xC0
- ANDS R7, R0
- LSLS R3, R3, #3
- LDR R6, =dword_D413460
- MOV R8, R1
- ORRS R7, R3
- MOVS R5, #0xA
- loc_D411826 ; CODE XREF: sub_D411810+42j
- MOVS R4, R7
- MOVS R3, #1
- LSRS R4, R5
- ANDS R4, R3
- BL Disable_EEP_CLK
- BL Enable_EEP_CS
- MOVS R0, R4
- BL Disable_EEP_CS
- LDR R0, [R6]
- LSRS R0, R0, #1
- BL sub_D411994
- BL Enable_EEP_CLK
- LDR R0, [R6]
- LSRS R0, R0, #1
- BL sub_D411994
- SUBS R5, #1
- BCS loc_D411826
- LDR R6, =dword_D413460
- MOVS R5, #0
- MOVS R4, #0xF
- loc_D41185A ; CODE XREF: sub_D411810+74j
- BL Disable_EEP_CLK
- BL Enable_EEP_CS
- LDR R0, [R6]
- LSRS R0, R0, #1
- BL sub_D411994
- BL Enable_EEP_CLK
- LDR R0, [R6]
- LSRS R0, R0, #1
- BL sub_D411994
- LDR R3, =HW_GPIO1IN
- LDR R3, [R3]
- LSLS R3, R3, #0x12
- LSRS R3, R3, #0x1F
- LSLS R3, R4
- ORRS R5, R3
- SUBS R4, #1
- BCS loc_D41185A
- MOV R3, R8
- STR R5, [R3]
- LDR R6, =HW_GPIO1OUT
- LDR R5, =dword_D413460
- MOVS R4, #1
- loc_D411890 ; CODE XREF: sub_D411810+A8j
- BL Disable_EEP_CLK
- LDR R2, =0xFFFFFBFF
- LDR R3, [R6]
- ANDS R3, R2
- STR R3, [R6]
- MOVS R0, #0
- BL Disable_EEP_CS
- LDR R0, [R5]
- LSRS R0, R0, #1
- BL sub_D411994
- BL Enable_EEP_CLK
- LDR R0, [R5]
- LSRS R0, R0, #1
- BL sub_D411994
- SUBS R4, #1
- BPL loc_D411890
- BL Disable_EEP_CLK
- MOVS R0, #0
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; End of function sub_D411810
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D4118CC DCD dword_D413460 ; DATA XREF: sub_D411810+Er
- ; sub_D411810+44r ...
- off_D4118D0 DCD HW_GPIO1IN ; DATA XREF: sub_D411810+66r
- off_D4118D4 DCD HW_GPIO1OUT ; DATA XREF: sub_D411810+7Ar
- dword_D4118D8 DCD 0xFFFFFBFF ; DATA XREF: sub_D411810+84r
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl Set_HW_AESKey(unsigned __int8 *AESKey)
- Set_HW_AESKey ; CODE XREF: Main+1D6p
- var_C = -0xC
- PUSH {R4,LR}
- SUB SP, SP, #4
- SUBS R1, R0, #0 ; AESKey
- BEQ EmptyKey
- MOVS R4, #1
- MOVS R3, #0 ; IV
- LDR R0, =AES_Control_Buffer_0 ; ControlBuffer
- MOVS R2, #16 ; AESKeyLen
- STR R4, [SP,#0xC+var_C]
- BL Init_HW_AES
- LDR R3, =dword_D413B80
- STR R4, [R3]
- EmptyKey ; CODE XREF: Set_HW_AESKey+6j
- ADD SP, SP, #4
- POP {R4}
- POP {R0}
- BX R0
- ; End of function Set_HW_AESKey
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- ; unsigned __int8 *off_D411900
- off_D411900 DCD AES_Control_Buffer_0 ; DATA XREF: Set_HW_AESKey+Cr
- off_D411904 DCD dword_D413B80 ; DATA XREF: Set_HW_AESKey+16r
- ; =============== S U B R O U T I N E =======================================
- AES_HW_Decrypt_0 ; CODE XREF: Main+1E2p Main+1EEp ...
- var_24 = -0x24
- PUSH {R4-R7,LR}
- MOV R7, R10
- MOV R6, R9
- MOV R5, R8
- PUSH {R5-R7}
- SUB SP, SP, #4
- MOV R8, R1
- LSLS R6, R0, #3
- CMP R2, #0
- BEQ loc_D411966
- LDR R3, =word_D413CC0
- MOV R10, SP
- MOV R9, R3
- ADDS R7, R2, #0
- loc_D411924 ; CODE XREF: AES_HW_Decrypt_0+5Cj
- MOVS R4, #0
- MOV R5, R9
- loc_D411928 ; CODE XREF: AES_HW_Decrypt_0+32j
- ADDS R0, R6, R4
- MOV R1, R10
- BL sub_D411810
- LDR R3, [SP,#0x24+var_24]
- ADDS R4, #1
- STRH R3, [R5]
- ADDS R5, #2
- CMP R4, #7
- BLE loc_D411928
- LDR R3, =dword_D413B80
- LDR R3, [R3]
- CMP R3, #0
- BEQ loc_D411976
- LDR R0, =AES_Control_Buffer_0 ; ControlBuffer
- MOV R1, R9 ; AES_SRC_Buffer
- MOVS R2, #16 ; BufferSize
- LDR R3, =AES_DEST_Buffer_0 ; AES_DEST_Buffer
- BL AES_HW_Decrypt
- loc_D411950 ; CODE XREF: AES_HW_Decrypt_0+78j
- MOV R0, R8
- LDR R1, =AES_DEST_Buffer_0
- MOVS R2, #0x10
- BL sub_D4132E0
- SUBS R7, #1
- MOVS R3, #0x10
- ADDS R6, #8
- ADD R8, R3
- CMP R7, #0
- BNE loc_D411924
- loc_D411966 ; CODE XREF: AES_HW_Decrypt_0+12j
- ADD SP, SP, #4
- POP {R3-R5}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D411976 ; CODE XREF: AES_HW_Decrypt_0+3Aj
- MOV R1, R9
- MOVS R2, #0x10
- LDR R0, =AES_DEST_Buffer_0
- BL sub_D4132E0
- B loc_D411950
- ; End of function AES_HW_Decrypt_0
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411984 DCD word_D413CC0 ; DATA XREF: AES_HW_Decrypt_0+14r
- off_D411988 DCD dword_D413B80 ; DATA XREF: AES_HW_Decrypt_0+34r
- ; void *off_D41198C
- off_D41198C DCD AES_Control_Buffer_0 ; DATA XREF: AES_HW_Decrypt_0+3Cr
- ; unsigned __int8 *AES_DEST_Buffer
- AES_DEST_Buffer DCD AES_DEST_Buffer_0 ; DATA XREF: AES_HW_Decrypt_0+42r
- ; AES_HW_Decrypt_0+4Ar ...
- ; =============== S U B R O U T I N E =======================================
- sub_D411994 ; CODE XREF: sub_D411810+30p
- ; sub_D411810+3Cp ...
- PUSH {LR}
- CMP R0, #4
- BEQ loc_D4119A2
- SUBS R0, #4
- loc_D41199C ; CODE XREF: sub_D411994+Cj
- SUBS R0, #1
- CMP R0, #0
- BNE loc_D41199C
- loc_D4119A2 ; CODE XREF: sub_D411994+4j
- POP {R0}
- BX R0
- ; End of function sub_D411994
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- sub_D4119A8 ; CODE XREF: CheckBuffer_Maybe+30p
- ; CheckBuffer_Maybe+BAp ...
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- LDR R3, =0x17FFFFF
- LSLS R1, R1, #0x18
- LSRS R6, R1, #0x18
- MOVS R4, R0
- CMP R0, R3
- BHI loc_D4119F4
- SUBS R5, R2, #1
- BCC loc_D4119EA
- MOVS R2, #3
- MOVS R3, #0x18
- MOV R8, R2
- MOV R12, R3
- MOVS R7, #0xFF
- loc_D4119C8 ; CODE XREF: sub_D4119A8+40j
- MOV R3, R8
- ANDS R3, R4
- SUBS R0, R4, R3
- MOV R2, R12
- LSLS R3, R3, #3
- SUBS R3, R2, R3
- LDR R1, [R0]
- MOVS R2, R7
- LSLS R2, R3
- BICS R1, R2
- MOVS R2, R6
- LSLS R2, R3
- ORRS R1, R2
- STR R1, [R0]
- ADDS R4, #1
- SUBS R5, #1
- BCS loc_D4119C8
- loc_D4119EA ; CODE XREF: sub_D4119A8+14j
- ; sub_D4119A8+4Ej ...
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D4119F4 ; CODE XREF: sub_D4119A8+10j
- SUBS R5, R2, #1
- BCC loc_D4119EA
- loc_D4119F8 ; CODE XREF: sub_D4119A8+5Ej
- STRB R6, [R4]
- ADDS R4, #1
- SUBS R5, #1
- BCC loc_D4119EA
- STRB R6, [R4]
- ADDS R4, #1
- SUBS R5, #1
- BCS loc_D4119F8
- B loc_D4119EA
- ; End of function sub_D4119A8
- ; ---------------------------------------------------------------------------
- ALIGN 4
- dword_D411A0C DCD 0x17FFFFF ; DATA XREF: sub_D4119A8+6r
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl CheckBuffer_Maybe(unsigned __int8 *Buffer, int Unknown, int BufferLen)
- CheckBuffer_Maybe ; CODE XREF: Main+31Ap Main+324p ...
- PUSH {R4-R7,LR}
- MOV R7, R10
- MOV R6, R8
- PUSH {R6,R7}
- MOVS R7, R0
- SUBS R5, R2, #0
- BEQ loc_D411ADE
- MOVS R2, #0xFF
- MOVS R3, R2
- ANDS R3, R1
- MOVS R6, #3
- MOVS R2, R0
- MOV R8, R0
- MOV R10, R3
- ANDS R2, R6
- MOV R12, R2
- BEQ loc_D411A4E
- MOVS R3, #4
- MOV R2, R12
- SUBS R4, R3, R2
- CMP R4, R5
- BCS loc_D411AC6
- MOV R1, R10
- MOVS R2, R4
- BL sub_D4119A8
- MOVS R3, R7
- BICS R3, R6
- ADDS R3, #4
- SUBS R5, R5, R4
- MOV R8, R3
- loc_D411A4E ; CODE XREF: CheckBuffer_Maybe+20j
- MOVS R3, #0x100
- CMP R5, R3
- BLS loc_D411AD0
- MOVS R3, #0xF
- MOV R2, R8
- ANDS R2, R3
- BEQ loc_D411AD0
- MOVS R3, #0x10
- SUBS R4, R3, R2
- CMP R5, R4
- BCS loc_D411A6A
- MOVS R4, R5
- MOVS R5, #0
- loc_D411A6A ; CODE XREF: CheckBuffer_Maybe+54j
- MOVS R3, #0xC
- ANDS R3, R4
- MOV R12, R3
- BEQ loc_D411A8E
- MOV R3, R10
- LSLS R1, R3, #8
- ORRS R1, R3
- LSLS R3, R1, #0x10
- ORRS R1, R3
- MOV R2, R12
- MOV R3, R8
- B loc_D411A86
- ; ---------------------------------------------------------------------------
- loc_D411A82 ; CODE XREF: CheckBuffer_Maybe+78j
- STMIA R3!, {R1}
- SUBS R2, #4
- loc_D411A86 ; CODE XREF: CheckBuffer_Maybe+70j
- CMP R2, #3
- BHI loc_D411A82
- MOVS R3, #3
- ANDS R4, R3
- loc_D411A8E ; CODE XREF: CheckBuffer_Maybe+60j
- CMP R4, #0
- BNE loc_D411AEC
- loc_D411A92 ; CODE XREF: CheckBuffer_Maybe+E6j
- CMP R5, #0
- BEQ loc_D411ADE
- MOVS R3, #0xF
- MOV R2, R8
- ANDS R2, R3
- ADDS R2, R2, R5
- MOVS R5, R2
- SUBS R5, #0x10
- MOV R2, R8
- BICS R2, R3
- MOVS R4, R5
- ADDS R2, #0x10
- BICS R4, R3
- MOV R8, R2
- CMP R4, #0
- BEQ loc_D411ADA
- loc_D411AB2 ; CODE XREF: CheckBuffer_Maybe+C8j
- MOV R0, R8
- MOV R1, R10
- MOVS R2, R4
- SUBS R5, R5, R4
- BL sub_D4132F0
- ADD R8, R4
- CMP R5, #0
- BEQ loc_D411ADE
- loc_D411AC4 ; CODE XREF: CheckBuffer_Maybe+CCj
- MOV R0, R8
- loc_D411AC6 ; CODE XREF: CheckBuffer_Maybe+2Aj
- MOV R1, R10
- MOVS R2, R5
- BL sub_D4119A8
- B loc_D411ADE
- ; ---------------------------------------------------------------------------
- loc_D411AD0 ; CODE XREF: CheckBuffer_Maybe+44j
- ; CheckBuffer_Maybe+4Cj
- MOVS R3, #3
- MOVS R4, R5
- BICS R4, R3
- CMP R4, #0
- BNE loc_D411AB2
- loc_D411ADA ; CODE XREF: CheckBuffer_Maybe+A0j
- CMP R5, #0
- BNE loc_D411AC4
- loc_D411ADE ; CODE XREF: CheckBuffer_Maybe+Cj
- ; CheckBuffer_Maybe+84j ...
- MOVS R0, R7
- POP {R3,R4}
- MOV R8, R3
- MOV R10, R4
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411AEC ; CODE XREF: CheckBuffer_Maybe+80j
- MOV R0, R8
- MOV R1, R10
- MOVS R2, R4
- BL sub_D4119A8
- B loc_D411A92
- ; End of function CheckBuffer_Maybe
- ; =============== S U B R O U T I N E =======================================
- sub_D411AF8 ; CODE XREF: CalcSHA_And_RSA+12Ap
- PUSH {R4-R6,LR}
- MOVS R3, R1
- MOVS R5, R0
- MOVS R1, R0
- MOVS R0, R3
- SUBS R4, R2, #0
- BNE loc_D411B0E
- MOVS R0, #0
- loc_D411B08 ; CODE XREF: sub_D411AF8+3Ej
- ; sub_D411AF8+4Ej
- POP {R4-R6}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411B0E ; CODE XREF: sub_D411AF8+Cj
- SUBS R4, #1
- CMP R4, #0
- BEQ loc_D411B38
- loc_D411B14 ; CODE XREF: sub_D411AF8+2Ej
- LDRB R5, [R0]
- LDRB R6, [R1]
- MOVS R3, R5
- CMP R6, R3
- BNE loc_D411B2C
- SUBS R4, #1
- ADDS R1, #1
- ADDS R0, #1
- CMP R4, #0
- BNE loc_D411B14
- LDRB R6, [R1]
- LDRB R5, [R0]
- loc_D411B2C ; CODE XREF: sub_D411AF8+24j
- LSLS R2, R6, #0x18
- LSLS R3, R5, #0x18
- LSRS R2, R2, #0x18
- LSRS R3, R3, #0x18
- SUBS R0, R2, R3
- B loc_D411B08
- ; ---------------------------------------------------------------------------
- loc_D411B38 ; CODE XREF: sub_D411AF8+1Aj
- LDRB R6, [R5]
- LDRB R5, [R3]
- LSLS R2, R6, #0x18
- LSLS R3, R5, #0x18
- LSRS R2, R2, #0x18
- LSRS R3, R3, #0x18
- SUBS R0, R2, R3
- B loc_D411B08
- ; End of function sub_D411AF8
- CODE32
- ; =============== S U B R O U T I N E =======================================
- sub_D411B48 ; CODE XREF: sub_D4132F0:loc_D4132F4j
- ORR R1, R1, R1,LSL#8
- ORR R1, R1, R1,LSL#16
- BIC R3, R2, #0xF
- CMP R3, #0
- BEQ loc_D411B7C
- STMFD SP!, {R4,R5}
- MOV R12, R1
- MOV R4, R1
- MOV R5, R1
- loc_D411B6C ; CODE XREF: sub_D411B48+2Cj
- STMIA R0!, {R1,R4,R5,R12}
- SUBS R3, R3, #0x10
- BNE loc_D411B6C
- LDMFD SP!, {R4,R5}
- loc_D411B7C ; CODE XREF: sub_D411B48+10j
- AND R2, R2, #0xF
- CMP R2, #0
- BEQ locret_D411B94
- loc_D411B88 ; CODE XREF: sub_D411B48+48j
- STR R1, [R0],#4
- SUBS R2, R2, #4
- BNE loc_D411B88
- locret_D411B94 ; CODE XREF: sub_D411B48+3Cj
- BX LR
- ; End of function sub_D411B48
- ; =============== S U B R O U T I N E =======================================
- sub_D411B98 ; CODE XREF: sub_D4132E0:loc_D4132E4j
- CMP R2, #0
- BXEQ LR
- STMFD SP!, {R4-R6}
- ORR R3, R0, R1
- TST R3, #3
- BNE loc_D411C10
- CMP R2, #0xF
- BLS loc_D411BF8
- CMP R2, #0x1F
- BLS loc_D411BE0
- STMFD SP!, {R7-R9}
- loc_D411BC4 ; CODE XREF: sub_D411B98+40j
- LDMIA R1!, {R3-R9,R12}
- STMIA R0!, {R3-R9,R12}
- SUB R2, R2, #0x20
- CMP R2, #0x1F
- BLS loc_D411BDC
- B loc_D411BC4
- ; ---------------------------------------------------------------------------
- loc_D411BDC ; CODE XREF: sub_D411B98+3Cj
- LDMFD SP!, {R7-R9}
- loc_D411BE0 ; CODE XREF: sub_D411B98+24j
- ; sub_D411B98+5Cj
- CMP R2, #0xF
- BLS loc_D411BF8
- LDMIA R1!, {R3-R6}
- STMIA R0!, {R3-R6}
- SUB R2, R2, #0x10
- B loc_D411BE0
- ; ---------------------------------------------------------------------------
- loc_D411BF8 ; CODE XREF: sub_D411B98+1Cj
- ; sub_D411B98+4Cj ...
- CMP R2, #3
- BLS loc_D411C10
- LDR R3, [R1],#4
- STR R3, [R0],#4
- SUB R2, R2, #4
- B loc_D411BF8
- ; ---------------------------------------------------------------------------
- loc_D411C10 ; CODE XREF: sub_D411B98+14j
- ; sub_D411B98+64j
- CMP R0, #0x1800000
- BCS loc_D411C54
- MOV R12, #0xFF
- loc_D411C1C ; CODE XREF: sub_D411B98+B8j
- CMP R2, #0
- BEQ loc_D411C6C
- MOV R6, R0
- AND R3, R6, #3
- LDR R4, [R6,-R3]!
- MOV R3, R3,LSL#3
- RSB R3, R3, #0x18
- BIC R5, R4, R12,LSL R3
- LDRB R4, [R1],#1
- ORR R4, R5, R4,LSL R3
- STR R4, [R6]
- ADD R0, R0, #1
- SUB R2, R2, #1
- B loc_D411C1C
- ; ---------------------------------------------------------------------------
- loc_D411C54 ; CODE XREF: sub_D411B98+7Cj
- ; sub_D411B98+D0j
- CMP R2, #0
- BEQ loc_D411C6C
- LDRB R3, [R1],#1
- STRB R3, [R0],#1
- SUB R2, R2, #1
- B loc_D411C54
- ; ---------------------------------------------------------------------------
- loc_D411C6C ; CODE XREF: sub_D411B98+88j
- ; sub_D411B98+C0j
- LDMFD SP!, {R4-R6}
- BX LR
- ; End of function sub_D411B98
- CODE16
- ; =============== S U B R O U T I N E =======================================
- sub_D411C74 ; CODE XREF: Main+1C8p
- PUSH {R4,R5,LR}
- LDR R4, =0xEDB88320
- LDR R5, =dword_D413D44
- MOVS R0, #0
- MOVS R1, #1
- loc_D411C7E ; CODE XREF: sub_D411C74+28j
- MOVS R3, R0
- MOVS R2, #7
- B loc_D411C8C
- ; ---------------------------------------------------------------------------
- loc_D411C84 ; CODE XREF: sub_D411C74+1Aj
- LSRS R3, R3, #1
- EORS R3, R4
- SUBS R2, #1
- BMI loc_D411C96
- loc_D411C8C ; CODE XREF: sub_D411C74+Ej
- ; sub_D411C74+20j
- TST R3, R1
- BNE loc_D411C84
- LSRS R3, R3, #1
- SUBS R2, #1
- BPL loc_D411C8C
- loc_D411C96 ; CODE XREF: sub_D411C74+16j
- ADDS R0, #1
- STMIA R5!, {R3}
- CMP R0, #0xFF
- BLS loc_D411C7E
- POP {R4,R5}
- POP {R0}
- BX R0
- ; End of function sub_D411C74
- ; ---------------------------------------------------------------------------
- dword_D411CA4 DCD 0xEDB88320 ; DATA XREF: sub_D411C74+2r
- off_D411CA8 DCD dword_D413D44 ; DATA XREF: sub_D411C74+4r
- ; =============== S U B R O U T I N E =======================================
- sub_D411CAC ; CODE XREF: sub_D410168+10p
- PUSH {R4-R6,LR}
- LDR R4, =dword_D413D40
- LDR R3, [R4]
- MVNS R3, R3
- STR R3, [R4]
- SUBS R1, #1
- BCC loc_D411CD6
- LDR R6, =dword_D413D44
- MOVS R5, #0xFF
- loc_D411CBE ; CODE XREF: sub_D411CAC+28j
- LDRB R3, [R0]
- LDR R2, [R4]
- EORS R3, R2
- ANDS R3, R5
- LSLS R3, R3, #2
- LDR R3, [R3,R6]
- LSRS R2, R2, #8
- EORS R3, R2
- STR R3, [R4]
- ADDS R0, #1
- SUBS R1, #1
- BCS loc_D411CBE
- loc_D411CD6 ; CODE XREF: sub_D411CAC+Cj
- LDR R0, [R4]
- MVNS R0, R0
- POP {R4-R6}
- POP {R1}
- BX R1
- ; End of function sub_D411CAC
- ; ---------------------------------------------------------------------------
- off_D411CE0 DCD dword_D413D40 ; DATA XREF: sub_D411CAC+2r
- off_D411CE4 DCD dword_D413D44 ; DATA XREF: sub_D411CAC+Er
- ; =============== S U B R O U T I N E =======================================
- sub_D411CE8 ; CODE XREF: sub_D410168+8p
- LDR R3, =dword_D413D40
- MOVS R2, #0
- STR R2, [R3]
- BX LR
- ; End of function sub_D411CE8
- ; ---------------------------------------------------------------------------
- off_D411CF0 DCD dword_D413D40 ; DATA XREF: sub_D411CE8r
- ; =============== S U B R O U T I N E =======================================
- Init_HW_SHA ; CODE XREF: CalcSHA_And_RSA+F8p
- ; Calc_HW_SHA+10p
- PUSH {R4,LR}
- LDR R3, =SHA_CMD
- MOVS R1, #0
- LDR R2, =0x67452301
- STR R1, [R3] ; SHA_SRC
- ADDS R3, #8
- STR R2, [R3]
- LDR R2, =0xEFCDAB89
- ADDS R3, #4
- STR R2, [R3]
- LDR R2, =0x98BADCFE
- ADDS R3, #4
- STR R2, [R3]
- LDR R2, =0x10325476
- ADDS R3, #4
- STR R2, [R3]
- LDR R2, =0xC3D2E1F0
- ADDS R3, #4
- STR R2, [R3]
- MOVS R4, #0
- MOVS R3, #0
- STR R3, [R0,#0x14]
- STR R4, [R0,#0x18]
- STRH R1, [R0,#0x1C]
- MOVS R0, #1
- POP {R4}
- POP {R1}
- BX R1
- ; End of function Init_HW_SHA
- ; ---------------------------------------------------------------------------
- off_D411D2C DCD SHA_CMD ; DATA XREF: Init_HW_SHA+2r
- dword_D411D30 DCD 0x67452301 ; DATA XREF: Init_HW_SHA+6r
- dword_D411D34 DCD 0xEFCDAB89 ; DATA XREF: Init_HW_SHA+Er
- dword_D411D38 DCD 0x98BADCFE ; DATA XREF: Init_HW_SHA+14r
- dword_D411D3C DCD 0x10325476 ; DATA XREF: Init_HW_SHA+1Ar
- dword_D411D40 DCD 0xC3D2E1F0 ; DATA XREF: Init_HW_SHA+20r
- ; =============== S U B R O U T I N E =======================================
- Update_HW_SHA ; CODE XREF: CalcSHA_And_RSA+10Ap
- ; Calc_HW_SHA+1Ap
- PUSH {R4-R7,LR}
- MOVS R3, #0x3F
- MOVS R6, R0
- MOVS R7, R1
- MOVS R5, R2
- ANDS R2, R3
- BNE loc_D411D70
- LSLS R3, R5, #3
- LDR R1, [R6,#0x14]
- LDR R2, [R6,#0x18]
- MOVS R4, R3
- MOVS R3, #0
- ADDS R2, R2, R4
- ADCS R1, R3
- STR R1, [R6,#0x14]
- STR R2, [R6,#0x18]
- CMP R5, #0x3F
- BHI loc_D411D92
- loc_D411D68 ; CODE XREF: Update_HW_SHA+4Cj
- ; Update_HW_SHA+6Ej
- MOVS R0, #1
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411D70 ; CODE XREF: Update_HW_SHA+Cj
- ADDS R1, R1, R5
- STRH R2, [R0,#0x1C]
- SUBS R1, R1, R2
- LDR R0, =unk_D414180
- BL sub_D4132E0
- LSLS R3, R5, #3
- LDR R1, [R6,#0x14]
- LDR R2, [R6,#0x18]
- MOVS R4, R3
- MOVS R3, #0
- ADDS R2, R2, R4
- ADCS R1, R3
- STR R1, [R6,#0x14]
- STR R2, [R6,#0x18]
- CMP R5, #0x3F
- BLS loc_D411D68
- loc_D411D92 ; CODE XREF: Update_HW_SHA+22j
- MOVS R0, #5
- BL CheckBoot0_Maybe
- LDR R3, =SHA_SRC
- MOVS R2, R5
- STR R7, [R3]
- SUBS R2, #0x40
- MOVS R3, #0xC0
- LDR R1, =SHA_CMD
- LSRS R2, R2, #6
- LSLS R3, R3, #0x18
- ORRS R2, R3
- STR R2, [R1]
- Loop_Until_HW_SHA_Ready ; CODE XREF: Update_HW_SHA+6Cj
- LDR R3, [R1]
- CMP R3, #0
- BLT Loop_Until_HW_SHA_Ready
- B loc_D411D68
- ; End of function Update_HW_SHA
- ; ---------------------------------------------------------------------------
- off_D411DB4 DCD unk_D414180 ; DATA XREF: Update_HW_SHA+32r
- off_D411DB8 DCD SHA_SRC ; DATA XREF: Update_HW_SHA+54r
- off_D411DBC DCD SHA_CMD ; DATA XREF: Update_HW_SHA+5Er
- ; =============== S U B R O U T I N E =======================================
- Finale_HW_SHA ; CODE XREF: CalcSHA_And_RSA+120p
- ; Calc_HW_SHA+22p
- PUSH {R4-R7,LR}
- MOV R7, R8
- PUSH {R7}
- MOVS R3, #0x40
- MOV R8, R3
- LDRH R3, [R0,#0x1C]
- LSLS R2, R3, #0x10
- LSRS R3, R2, #0x10
- LDR R7, =unk_D4141B8
- MOVS R5, R1
- CMP R3, #0x38
- BLS loc_D411DDE
- MOVS R3, #0x80
- ADDS R7, #0x40
- MOV R8, R3
- loc_D411DDE ; CODE XREF: Finale_HW_SHA+16j
- LSRS R3, R2, #0x10
- ADDS R3, #1
- STRH R3, [R0,#0x1C]
- LDR R6, =unk_D414180
- MOVS R3, #0x80
- LSRS R2, R2, #0x10
- NEGS R3, R3
- STRB R3, [R6,R2]
- LDRH R3, [R0,#0x1C]
- MOV R1, R8
- LSLS R2, R3, #0x10
- LSRS R3, R2, #0x10
- SUBS R1, #8
- CMP R3, R1
- BGE loc_D411E12
- MOVS R4, #0
- loc_D411DFE ; CODE XREF: Finale_HW_SHA+50j
- LSRS R3, R2, #0x10
- ADDS R3, #1
- STRH R3, [R0,#0x1C]
- LSRS R3, R2, #0x10
- STRB R4, [R6,R3]
- LDRH R3, [R0,#0x1C]
- LSLS R2, R3, #0x10
- LSRS R3, R2, #0x10
- CMP R3, R1
- BLT loc_D411DFE
- loc_D411E12 ; CODE XREF: Finale_HW_SHA+3Aj
- LDR R3, [R0,#0x14]
- LDR R4, [R0,#0x18]
- MOVS R0, #5
- STR R3, [R7]
- STR R4, [R7,#4]
- BL CheckBoot0_Maybe
- LDR R2, =unk_D414180
- LDR R3, =SHA_SRC
- STR R2, [R3]
- MOV R2, R8
- SUBS R2, #0x40
- MOVS R3, #0xC0
- LDR R1, =SHA_CMD
- ASRS R2, R2, #6
- LSLS R3, R3, #0x18
- ORRS R2, R3
- STR R2, [R1]
- loc_D411E36 ; CODE XREF: Finale_HW_SHA+7Aj
- LDR R3, [R1]
- CMP R3, #0
- BLT loc_D411E36
- LDR R1, =SHA_H0
- MOVS R2, #4
- Read_HW_SHA_HASH ; CODE XREF: Finale_HW_SHA+86j
- LDMIA R1!, {R3}
- STMIA R5!, {R3}
- SUBS R2, #1
- BPL Read_HW_SHA_HASH
- MOVS R0, #1
- POP {R3}
- MOV R8, R3
- POP {R4-R7}
- POP {R1}
- BX R1
- ; End of function Finale_HW_SHA
- ; ---------------------------------------------------------------------------
- off_D411E54 DCD unk_D4141B8 ; DATA XREF: Finale_HW_SHA+10r
- off_D411E58 DCD unk_D414180 ; DATA XREF: Finale_HW_SHA+24r
- ; Finale_HW_SHA+60r
- off_D411E5C DCD SHA_SRC ; DATA XREF: Finale_HW_SHA+62r
- off_D411E60 DCD SHA_CMD ; DATA XREF: Finale_HW_SHA+6Cr
- off_D411E64 DCD SHA_H0 ; DATA XREF: Finale_HW_SHA+7Cr
- ; =============== S U B R O U T I N E =======================================
- Calc_HW_SHA ; CODE XREF: CalcSHA_And_RSA+42p
- PUSH {R4-R6,LR}
- MOV R6, R8
- PUSH {R6}
- SUB SP, SP, #0x78
- MOVS R6, R1
- MOVS R5, R0
- MOV R0, SP
- MOV R8, R2
- BL Init_HW_SHA
- MOVS R1, R5
- MOVS R2, R6
- MOV R0, SP
- BL Update_HW_SHA
- MOV R1, R8
- MOV R0, SP
- BL Finale_HW_SHA
- MOVS R0, #1
- ADD SP, SP, #0x78
- POP {R3}
- MOV R8, R3
- POP {R4-R6}
- POP {R1}
- BX R1
- ; End of function Calc_HW_SHA
- ; =============== S U B R O U T I N E =======================================
- ; void __cdecl Init_HW_AES(unsigned __int8 *ControlBuffer, unsigned __int8 *AESKey, int AESKeyLen, unsigned __int8 *IV)
- Init_HW_AES ; CODE XREF: AES_Decrypt+24p
- ; Set_HW_AESKey+12p
- SetZeroIV = 0
- PUSH {R4-R7,LR}
- MOVS R5, R3 ; IV
- LDR R3, =AES_CTRL
- MOVS R6, R0
- LSRS R2, R2, #2
- MOVS R0, #0
- LDR R7, [SP,#0x14+SetZeroIV]
- STR R0, [R3]
- CMP R2, #0 ; Is KeyLen == 0
- BLS SetIVOnly
- LDR R4, =AES_KEY
- ADDS R0, R2, #0
- SetAesKey ; CODE XREF: Init_HW_AES+20j
- LDMIA R1!, {R3} ; R1 == AES_Key
- SUBS R0, #1
- STR R3, [R4]
- CMP R0, #0
- BNE SetAesKey ; R1 == AES_Key
- SetIVOnly ; CODE XREF: Init_HW_AES+12j
- MOVS R1, R5
- CMP R7, #1
- BEQ Set_IV_To_0
- LDR R2, =AES_IV_0
- MOVS R0, #3
- SetIV ; CODE XREF: Init_HW_AES+32j
- LDMIA R1!, {R3}
- STR R3, [R2]
- SUBS R0, #1
- BPL SetIV
- InitBuffer ; CODE XREF: Init_HW_AES+5Cj
- MOVS R2, #0x104
- ADDS R3, R6, R2 ; Buffer + 0x104
- MOVS R2, #0
- STR R2, [R3] ; *(Buffer + 0x104) = 0 == Set IV Flag (Use IV from last command)
- MOVS R2, #0x10C
- ADDS R3, R6, R2 ; Buffer + 0x10C
- MOVS R0, #1
- STR R7, [R3] ; *(Buffer + 0x10C) = 1 == Decrypt By Size
- POP {R4-R7}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- Set_IV_To_0 ; CODE XREF: Init_HW_AES+26j
- LDR R2, =AES_IV_0
- MOVS R3, #0
- MOVS R0, #0
- STR R3, [R2]
- STR R3, [R2]
- STR R3, [R2]
- STR R0, [R2]
- B InitBuffer
- ; End of function Init_HW_AES
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411EFC DCD AES_CTRL ; DATA XREF: Init_HW_AES+4r
- off_D411F00 DCD AES_KEY ; DATA XREF: Init_HW_AES+14r
- off_D411F04 DCD AES_IV_0 ; DATA XREF: Init_HW_AES+28r
- ; Init_HW_AES:Set_IV_To_0r
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl DecryptBuffer16Byte(unsigned int BufferSize, int ControlFlags, int EncDecModeFlag)
- DecryptBuffer16Byte ; CODE XREF: SRAM:0D411F9Cp
- ; AES_HW_Decrypt+2Cp
- PUSH {R4-R6,LR}
- MOVS R4, R2
- MOVS R5, R0
- MOVS R6, R1
- MOVS R0, #4
- LSLS R4, R4, #0x1B
- SUBS R5, #0x10
- BL CheckBoot0_Maybe
- ORRS R4, R6
- LSRS R5, R5, #4
- MOVS R3, #0xC0
- LDR R2, =AES_CTRL
- ORRS R4, R5
- LSLS R3, R3, #0x18 ; R3 = C0000000
- ORRS R4, R3
- STR R4, [R2]
- WaitUntilAESFinshedLoop ; CODE XREF: DecryptBuffer16Byte+26j
- LDR R3, [R2]
- CMP R3, #0
- BLT WaitUntilAESFinshedLoop
- MOVS R0, #1
- POP {R4-R6}
- POP {R1}
- BX R1
- ; End of function DecryptBuffer16Byte
- ; ---------------------------------------------------------------------------
- off_D411F38 DCD AES_CTRL ; DATA XREF: DecryptBuffer16Byte+18r
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl DecryptBuffer(unsigned int BufferSize, int ControlFlags, int EncDecModeFlag)
- DecryptBuffer ; CODE XREF: SRAM:0D411FB6p
- ; AES_HW_Decrypt+46p
- PUSH {R4-R6,LR}
- SUBS R5, R0, #0
- BEQ Done
- LSLS R6, R2, #0x1B ; R2 =3 -> 0x18000000
- MOVS R3, #0xC0
- ORRS R6, R1
- LSLS R3, R3, #0x18 ; SET EXEC and IRQ
- LDR R4, =AES_CTRL
- ORRS R6, R3
- AES_Decrypt ; CODE XREF: DecryptBuffer+24j
- MOVS R0, #4
- BL CheckBoot0_Maybe
- STR R6, [R4] ; Set AES_CTRL
- WaitUntilAESFinshed ; CODE XREF: DecryptBuffer+1Ej
- LDR R3, [R4]
- CMP R3, #0
- BLT WaitUntilAESFinshed
- SUBS R5, #0x10 ; Decrease size by 16 Byte
- CMP R5, #0
- BNE AES_Decrypt
- Done ; CODE XREF: DecryptBuffer+4j
- MOVS R0, #1
- POP {R4-R6}
- POP {R1}
- BX R1
- ; End of function DecryptBuffer
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411F6C DCD AES_CTRL ; DATA XREF: DecryptBuffer+Er
- ; ---------------------------------------------------------------------------
- PUSH {R4,R5,LR}
- MOVS R4, R0
- MOVS R0, R2
- LDR R2, =AES_SRC
- STR R1, [R2]
- ADDS R2, #4
- STR R3, [R2]
- MOVS R2, #0x10C
- ADDS R3, R4, R2
- LDR R3, [R3]
- MOVS R5, #0
- CMP R3, #1
- BEQ loc_D411FB2
- MOVS R2, #0x104
- ADDS R4, R4, R2
- LDR R3, [R4]
- CMP R3, #0
- BNE loc_D411FAC
- loc_D411F98 ; CODE XREF: SRAM:0D411FB0j
- MOVS R1, R5
- MOVS R2, #2
- BL DecryptBuffer16Byte
- loc_D411FA0 ; CODE XREF: SRAM:0D411FC0j
- MOVS R3, #1
- MOVS R0, #1
- STR R3, [R4]
- POP {R4,R5}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D411FAC ; CODE XREF: SRAM:0D411F96j
- MOVS R5, #0x1000
- B loc_D411F98
- ; ---------------------------------------------------------------------------
- loc_D411FB2 ; CODE XREF: SRAM:0D411F8Aj
- MOVS R1, #0
- MOVS R2, #2
- BL DecryptBuffer
- MOVS R3, #0x104
- ADDS R4, R4, R3
- B loc_D411FA0
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D411FC4 DCD AES_SRC ; DATA XREF: SRAM:0D411F76r
- ; =============== S U B R O U T I N E =======================================
- ; int __cdecl AES_HW_Decrypt(void *ControlBuffer, unsigned __int8 *AES_SRC_Buffer, int BufferSize, unsigned __int8 *AES_DEST_Buffer)
- AES_HW_Decrypt ; CODE XREF: AES_Decrypt+3Ep
- ; AES_HW_Decrypt_0+44p
- PUSH {R4,R5,LR}
- MOVS R4, R0
- MOVS R0, R2 ; BufferSize
- LDR R2, =AES_SRC
- STR R1, [R2] ; Set AES_Src
- ADDS R2, #4
- STR R3, [R2] ; Set AES_DEST
- MOVS R2, #0x10C
- ADDS R3, R4, R2 ; UnknownBuffer + 0x10C
- LDR R3, [R3] ; Init_HW_AES set this value to 1
- MOVS R5, #0
- CMP R3, #1
- BEQ DecryptBufferBySize
- MOVS R2, #0x104
- ADDS R4, R4, R2 ; UnknownBuffer + 0x104
- LDR R3, [R4] ; Init_HW_AES set this value to 0
- CMP R3, #0
- BNE USE_IV_FROM_LAST_Command ; Set IV flag, use IV from last command
- loc_D411FF0 ; CODE XREF: AES_HW_Decrypt+40j
- MOVS R1, R5 ; ControlFlags
- MOVS R2, #3 ; 3 -> SET ENA and DEC
- BL DecryptBuffer16Byte
- loc_D411FF8 ; CODE XREF: AES_HW_Decrypt+50j
- MOVS R3, #1
- MOVS R0, #1
- STR R3, [R4]
- POP {R4,R5}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- USE_IV_FROM_LAST_Command ; CODE XREF: AES_HW_Decrypt+26j
- MOVS R5, #0x1000 ; Set IV flag, use IV from last command
- B loc_D411FF0
- ; ---------------------------------------------------------------------------
- DecryptBufferBySize ; CODE XREF: AES_HW_Decrypt+1Aj
- MOVS R1, #0 ; ControlFlags
- MOVS R2, #3 ; 3 -> SET ENA and DEC
- BL DecryptBuffer ; R1 = 0; R2 = 3
- MOVS R3, #0x104
- ADDS R4, R4, R3
- B loc_D411FF8
- ; End of function AES_HW_Decrypt
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41201C DCD AES_SRC ; DATA XREF: AES_HW_Decrypt+6r
- ; [00000002 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD CTRL-"+" TO EXPAND]
- ALIGN 4
- CODE32
- ; =============== S U B R O U T I N E =======================================
- sub_D412024 ; CODE XREF: sub_D4132E8:loc_D4132ECj
- var_4 = -4
- SUB SP, SP, #4
- STR R0, [SP,#4+var_4]
- MCR p15, 0, R0,c7,c0, 4
- LDR R0, [SP,#4+var_4]
- ADD SP, SP, #4
- BX LR
- ; End of function sub_D412024
- CODE16
- ; =============== S U B R O U T I N E =======================================
- sub_D41203C ; CODE XREF: Main:loc_D41080Cp
- LDR R3, =unk_D414200
- STR R0, [R3]
- BX LR
- ; End of function sub_D41203C
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D412044 DCD unk_D414200 ; DATA XREF: sub_D41203Cr
- ; =============== S U B R O U T I N E =======================================
- sub_D412048 ; CODE XREF: sub_D412060+4p
- PUSH {LR}
- LDR R3, =unk_D414200
- LDR R0, [R3]
- CMP R0, #0
- BEQ loc_D412056
- loc_D412052 ; CODE XREF: sub_D412048+10j
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- loc_D412056 ; CODE XREF: sub_D412048+8j
- MOVS R0, #0xF3
- B loc_D412052
- ; End of function sub_D412048
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41205C DCD unk_D414200 ; DATA XREF: sub_D412048+2r
- ; =============== S U B R O U T I N E =======================================
- sub_D412060 ; CODE XREF: Main+2C6p Main+65Ap ...
- PUSH {R4,R5,LR}
- MOVS R5, R0
- BL sub_D412048
- MOVS R4, #0
- MOVS R3, R0
- MOVS R2, #0
- MOVS R1, R5
- MOVS R0, R4
- BL sub_D413268
- LSLS R2, R0, #0x19
- LSRS R3, R1, #7
- MOVS R1, R2
- ORRS R1, R3
- MOVS R0, R1
- POP {R4,R5}
- POP {R1}
- BX R1
- ; End of function sub_D412060
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- UDelay ; CODE XREF: SendGPIODebugOut+14p
- ; Main+508p ...
- PUSH {LR}
- BL sub_D412060
- CMP R0, #1
- BHI loc_D412094
- MOVS R0, #2
- loc_D412094 ; CODE XREF: UDelay+8j
- LDR R1, =HW_TIMER
- LDR R3, [R1]
- ADDS R2, R3, R0
- CMP R2, R3
- BLS loc_D4120A8
- loc_D41209E ; CODE XREF: UDelay+1Aj
- LDR R3, [R1]
- CMP R3, R2
- BCC loc_D41209E
- loc_D4120A4 ; CODE XREF: UDelay+2Cj
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D4120A8 ; CODE XREF: UDelay+14j
- ADDS R3, R1, #0
- loc_D4120AA ; CODE XREF: UDelay+26j UDelay+2Aj
- LDR R0, [R3]
- CMP R0, #0
- BLT loc_D4120AA
- CMP R0, R2
- BCC loc_D4120AA
- B loc_D4120A4
- ; End of function UDelay
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D4120B8 DCD HW_TIMER ; DATA XREF: UDelay:loc_D412094r
- ; =============== S U B R O U T I N E =======================================
- sub_D4120BC ; CODE XREF: Boot0_Checks_Maybe+26p
- ; Boot0_Checks_Maybe+E0p ...
- PUSH {R4,R5,LR}
- LDR R1, =HW_VERSION
- LDR R3, [R1]
- MOVS R5, #0xF0
- MOVS R4, #0
- TST R3, R5
- BNE loc_D4120E0
- LDR R2, =dword_D800130
- MOVS R3, #0x80
- LDR R4, [R2]
- LSLS R3, R3, #3
- ORRS R3, R4
- STR R3, [R2]
- LDR R3, =dword_D800138
- LDR R2, [R3]
- LDR R2, [R3]
- LDR R2, [R3]
- LDR R3, [R3]
- loc_D4120E0 ; CODE XREF: sub_D4120BC+Cj
- LDR R3, =0xD8B0000
- ORRS R3, R0
- LDR R0, [R3]
- LDR R3, [R1]
- LDR R3, [R1]
- TST R3, R5
- BNE loc_D4120F2
- LDR R3, =dword_D800130
- STR R4, [R3]
- loc_D4120F2 ; CODE XREF: sub_D4120BC+30j
- POP {R4,R5}
- POP {R1}
- BX R1
- ; End of function sub_D4120BC
- ; ---------------------------------------------------------------------------
- off_D4120F8 DCD HW_VERSION ; DATA XREF: sub_D4120BC+2r
- off_D4120FC DCD dword_D800130 ; DATA XREF: sub_D4120BC+Er
- ; sub_D4120BC+32r
- off_D412100 DCD dword_D800138 ; DATA XREF: sub_D4120BC+1Ar
- dword_D412104 DCD 0xD8B0000 ; DATA XREF: sub_D4120BC:loc_D4120E0r
- ; =============== S U B R O U T I N E =======================================
- Boot0_Checks_Maybe ; CODE XREF: sub_D412340+Ap
- ; SRAM:0D41240Ep ...
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- MOVS R4, R0
- CMP R0, #0xC
- BNE loc_D41211C
- B loc_D41229C
- ; ---------------------------------------------------------------------------
- loc_D41211C ; CODE XREF: Boot0_Checks_Maybe+10j
- CMP R0, #0xB
- BNE loc_D412122
- B loc_D4122C0
- ; ---------------------------------------------------------------------------
- loc_D412122 ; CODE XREF: Boot0_Checks_Maybe+16j
- CMP R0, #0
- BEQ loc_D412128
- B loc_D412272
- ; ---------------------------------------------------------------------------
- loc_D412128 ; CODE XREF: Boot0_Checks_Maybe+1Cj
- MOVS R7, #0x8000
- loc_D41212C ; CODE XREF: Boot0_Checks_Maybe+192j
- ; Boot0_Checks_Maybe+196j ...
- MOVS R0, #8
- BL sub_D4120BC
- TST R0, R7
- BEQ loc_D412138
- B loc_D412262
- ; ---------------------------------------------------------------------------
- loc_D412138 ; CODE XREF: Boot0_Checks_Maybe+2Cj
- SUBS R3, R4, #2
- CMP R3, #8
- BLS loc_D412140
- B loc_D4122A0
- ; ---------------------------------------------------------------------------
- loc_D412140 ; CODE XREF: Boot0_Checks_Maybe+34j
- LDR R4, =HW_BOOT0 ; Maps boot0
- LDR R3, [R4]
- MOVS R2, #0xF
- ANDS R3, R2
- CMP R3, #9
- BNE loc_D41214E
- B loc_D4122C6
- ; ---------------------------------------------------------------------------
- loc_D41214E ; CODE XREF: Boot0_Checks_Maybe+42j
- ; Boot0_Checks_Maybe+1D4j
- LDR R1, =dword_D800188
- LDR R2, =0xFFFEFFFF
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- MOVS R3, #0x80
- LDR R2, [R1]
- LSLS R3, R3, #0x12
- ORRS R2, R3
- STR R2, [R1]
- SUBS R1, #0x64
- LDR R2, [R1]
- LDR R3, =0xFFFFF83F
- ANDS R2, R3
- MOVS R3, #0x280
- ORRS R2, R3
- STR R2, [R1]
- ADDS R1, #0x10
- LDR R2, [R1]
- MOVS R3, #0x400
- ORRS R2, R3
- STR R2, [R1]
- ADDS R1, #0x58
- MOVS R2, #0xF
- loc_D412182 ; CODE XREF: Boot0_Checks_Maybe+80j
- LDR R3, [R1]
- ANDS R3, R2
- CMP R3, #9
- BNE loc_D412182
- LDR R1, =dword_D800100
- MOVS R2, #0x80
- LDR R3, [R1]
- LSLS R2, R2, #3
- ORRS R3, R2
- STR R3, [R1]
- ADDS R1, #4
- LDR R3, [R1]
- ORRS R3, R2
- STR R3, [R1]
- ADDS R1, #4
- LDR R3, [R1]
- ORRS R3, R2
- STR R3, [R1]
- LDR R3, =dword_D80010C
- MOV R11, R3
- LDR R3, [R3]
- MOV R1, R11
- ORRS R3, R2
- STR R3, [R1]
- LDR R3, =dword_D800110
- MOV R9, R3
- LDR R3, [R3]
- MOV R1, R9
- ORRS R3, R2
- STR R3, [R1]
- LDR R3, =dword_D800114
- MOV R10, R3
- LDR R3, [R3]
- MOV R1, R10
- ORRS R3, R2
- STR R3, [R1]
- LDR R3, =dword_D800118
- MOV R8, R3
- LDR R3, [R3]
- MOV R1, R8
- ORRS R3, R2
- STR R3, [R1]
- LDR R6, =dword_D80011C
- LDR R3, [R6]
- ORRS R3, R2
- LDR R5, =dword_D800120
- STR R3, [R6]
- LDR R3, [R5]
- ORRS R3, R2
- STR R3, [R5]
- MOVS R0, #8
- BL sub_D4120BC
- LDR R4, =unk_D8B0008
- BICS R0, R7
- STR R0, [R4]
- MOVS R0, #8
- BL sub_D4120BC
- ORRS R7, R0
- STR R7, [R4]
- LDR R1, =dword_D800134
- LDR R2, =0xFFFFFBFF
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- SUBS R1, #0x34
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- ADDS R1, #4
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- ADDS R1, #4
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- MOV R1, R11
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- MOV R1, R9
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- MOV R1, R10
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- MOV R1, R8
- LDR R3, [R1]
- ANDS R3, R2
- STR R3, [R1]
- LDR R3, [R6]
- ANDS R3, R2
- STR R3, [R6]
- LDR R3, [R5]
- ANDS R3, R2
- STR R3, [R5]
- ADDS R1, #0x70
- LDR R3, [R1]
- LDR R2, =0xFDFFFFFF
- ANDS R3, R2
- STR R3, [R1]
- SUBS R1, #0x64
- LDR R3, [R1]
- LDR R2, =0xFFFFF83F
- ANDS R3, R2
- MOVS R2, #0xC0
- ORRS R3, R2
- STR R3, [R1]
- loc_D412262 ; CODE XREF: Boot0_Checks_Maybe+2Ej
- ; Boot0_Checks_Maybe+1A2j ...
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D412272 ; CODE XREF: Boot0_Checks_Maybe+1Ej
- CMP R0, #1
- BEQ loc_D4122DE
- CMP R0, #2
- BEQ loc_D4122E4
- CMP R0, #3
- BEQ loc_D4122EC
- CMP R0, #4
- BEQ loc_D4122F0
- CMP R0, #5
- BEQ loc_D4122E8
- CMP R0, #6
- BEQ loc_D4122F4
- CMP R0, #7
- BEQ loc_D4122F8
- CMP R0, #8
- BEQ loc_D4122FC
- CMP R0, #9
- BEQ loc_D412300
- MOVS R7, #0x100
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D41229C ; CODE XREF: Boot0_Checks_Maybe+12j
- MOVS R7, #0
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122A0 ; CODE XREF: Boot0_Checks_Maybe+36j
- CMP R4, #0xB
- BEQ loc_D4122AC
- CMP R4, #0
- BEQ loc_D4122AC
- CMP R4, #1
- BNE loc_D412262
- loc_D4122AC ; CODE XREF: Boot0_Checks_Maybe+19Aj
- ; Boot0_Checks_Maybe+19Ej
- LDR R2, =unk_D8B0008
- MOVS R3, R0
- BICS R3, R7
- STR R3, [R2]
- MOVS R3, R0
- ORRS R3, R7
- STR R3, [R2]
- STR R3, [R2]
- STR R3, [R2]
- B loc_D412262
- ; ---------------------------------------------------------------------------
- loc_D4122C0 ; CODE XREF: Boot0_Checks_Maybe+18j
- MOVS R7, #0x1000
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122C6 ; CODE XREF: Boot0_Checks_Maybe+44j
- MOVS R2, #0x80
- LDR R1, =dword_D800188
- LSLS R2, R2, #9
- MOVS R0, #0xF
- loc_D4122CE ; CODE XREF: Boot0_Checks_Maybe+1D2j
- LDR R3, [R1]
- ORRS R3, R2
- STR R3, [R1]
- LDR R3, [R4]
- ANDS R3, R0
- CMP R3, #9
- BEQ loc_D4122CE
- B loc_D41214E
- ; ---------------------------------------------------------------------------
- loc_D4122DE ; CODE XREF: Boot0_Checks_Maybe+16Cj
- MOVS R7, #0x4000
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122E4 ; CODE XREF: Boot0_Checks_Maybe+170j
- MOVS R7, #1
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122E8 ; CODE XREF: Boot0_Checks_Maybe+17Cj
- MOVS R7, #8
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122EC ; CODE XREF: Boot0_Checks_Maybe+174j
- MOVS R7, #2
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122F0 ; CODE XREF: Boot0_Checks_Maybe+178j
- MOVS R7, #4
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122F4 ; CODE XREF: Boot0_Checks_Maybe+180j
- MOVS R7, #0x10
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122F8 ; CODE XREF: Boot0_Checks_Maybe+184j
- MOVS R7, #0x20
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D4122FC ; CODE XREF: Boot0_Checks_Maybe+188j
- MOVS R7, #0x40
- B loc_D41212C
- ; ---------------------------------------------------------------------------
- loc_D412300 ; CODE XREF: Boot0_Checks_Maybe+18Cj
- MOVS R7, #0x80
- B loc_D41212C
- ; End of function Boot0_Checks_Maybe
- ; ---------------------------------------------------------------------------
- off_D412304 DCD HW_BOOT0 ; DATA XREF: Boot0_Checks_Maybe:loc_D412140r
- ; Maps boot0
- off_D412308 DCD dword_D800188 ; DATA XREF: Boot0_Checks_Maybe:loc_D41214Er
- ; Boot0_Checks_Maybe+1C0r
- dword_D41230C DCD 0xFFFEFFFF ; DATA XREF: Boot0_Checks_Maybe+48r
- dword_D412310 DCD 0xFFFFF83F ; DATA XREF: Boot0_Checks_Maybe+5Er
- ; Boot0_Checks_Maybe+150r
- off_D412314 DCD dword_D800100 ; DATA XREF: Boot0_Checks_Maybe+82r
- off_D412318 DCD dword_D80010C ; DATA XREF: Boot0_Checks_Maybe+9Er
- off_D41231C DCD dword_D800110 ; DATA XREF: Boot0_Checks_Maybe+AAr
- off_D412320 DCD dword_D800114 ; DATA XREF: Boot0_Checks_Maybe+B6r
- off_D412324 DCD dword_D800118 ; DATA XREF: Boot0_Checks_Maybe+C2r
- off_D412328 DCD dword_D80011C ; DATA XREF: Boot0_Checks_Maybe+CEr
- off_D41232C DCD dword_D800120 ; DATA XREF: Boot0_Checks_Maybe+D4r
- off_D412330 DCD unk_D8B0008 ; DATA XREF: Boot0_Checks_Maybe+E4r
- ; Boot0_Checks_Maybe:loc_D4122ACr
- off_D412334 DCD dword_D800134 ; DATA XREF: Boot0_Checks_Maybe+F4r
- dword_D412338 DCD 0xFFFFFBFF ; DATA XREF: Boot0_Checks_Maybe+F6r
- dword_D41233C DCD 0xFDFFFFFF ; DATA XREF: Boot0_Checks_Maybe+146r
- ; =============== S U B R O U T I N E =======================================
- sub_D412340 ; CODE XREF: SRAM:0D412380p
- PUSH {R4,LR}
- LDR R3, =0xD8B4000
- ORRS R3, R0
- MOVS R0, #0
- LDRH R4, [R3]
- BL Boot0_Checks_Maybe
- LSLS R4, R4, #0x10
- LSRS R4, R4, #0x10
- MOVS R0, R4
- POP {R4}
- POP {R1}
- BX R1
- ; End of function sub_D412340
- ; ---------------------------------------------------------------------------
- ALIGN 4
- off_D41235C DCD 0xD8B4000 ; DATA XREF: sub_D412340+2r
- ; ---------------------------------------------------------------------------
- PUSH {R4-R6,LR}
- MOVS R5, #0
- CMP R0, #0xC ; switch 13 cases
- BHI def_D41236E ; jumptable 0D41236E default case
- LDR R2, =jpt_D41236E
- LSLS R3, R0, #2
- LDR R3, [R3,R2]
- MOV PC, R3 ; switch jump
- ; ---------------------------------------------------------------------------
- def_D41236E ; CODE XREF: SRAM:0D412366j
- SUBS R0, #0xD ; jumptable 0D41236E default case
- CMP R0, #4
- BLS loc_D4123AE
- def_D4123B4 ; CODE XREF: SRAM:0D4123B8j
- ; SRAM:0D4123BCj ...
- LDR R3, =0xD8B4228 ; jumptable 0D4123B4 default case
- STRH R5, [R3]
- MOVS R6, #0
- MOVS R4, #0
- loc_D41237E ; CODE XREF: SRAM:0D41239Aj
- LDR R0, =0x22A
- BL sub_D412340
- MOVS R3, R5
- EORS R3, R0
- LSLS R3, R3, #0x10
- CMP R3, #0
- BEQ loc_D4123D6
- MOVS R0, #1
- BL UDelay
- LDR R3, =0xF423F
- ADDS R4, #1
- CMP R4, R3
- BLS loc_D41237E
- LDR R3, =0xD8B4228
- MOVS R2, #0
- STRH R2, [R3]
- CMP R6, #0
- BEQ loc_D4123E2
- loc_D4123A6 ; CODE XREF: SRAM:0D4123E0j
- ; SRAM:0D4123EAj
- POP {R4-R6}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D4123AC ; CODE XREF: SRAM:0D41236Ej
- ; DATA XREF: SRAM:jpt_D41236Eo ...
- MOVS R0, #0 ; jumptable 0D41236E cases 0,1,11
- loc_D4123AE ; CODE XREF: SRAM:0D412374j
- ; SRAM:0D4123CCj ...
- LDR R2, =jpt_D4123B4
- LSLS R3, R0, #2
- LDR R3, [R3,R2]
- MOV PC, R3 ; switch jump
- ; ---------------------------------------------------------------------------
- loc_D4123B6 ; CODE XREF: SRAM:0D4123B4j
- ; DATA XREF: SRAM:0D413428o
- MOVS R5, #0xF ; jumptable 0D4123B4 case 17
- B def_D4123B4 ; jumptable 0D4123B4 default case
- ; ---------------------------------------------------------------------------
- loc_D4123BA ; CODE XREF: SRAM:0D4123B4j
- ; DATA XREF: SRAM:0D413424o
- MOVS R5, #8 ; jumptable 0D4123B4 case 16
- B def_D4123B4 ; jumptable 0D4123B4 default case
- ; ---------------------------------------------------------------------------
- loc_D4123BE ; CODE XREF: SRAM:0D4123B4j
- ; DATA XREF: SRAM:0D413420o
- MOVS R5, #4 ; jumptable 0D4123B4 case 15
- B def_D4123B4 ; jumptable 0D4123B4 default case
- ; ---------------------------------------------------------------------------
- loc_D4123C2 ; CODE XREF: SRAM:0D4123B4j
- ; DATA XREF: SRAM:0D41341Co
- MOVS R5, #2 ; jumptable 0D4123B4 case 14
- B def_D4123B4 ; jumptable 0D4123B4 default case
- ; ---------------------------------------------------------------------------
- loc_D4123C6 ; CODE XREF: SRAM:0D4123B4j
- ; DATA XREF: SRAM:jpt_D4123B4o
- MOVS R5, #1 ; jumptable 0D4123B4 case 13
- B def_D4123B4 ; jumptable 0D4123B4 default case
- ; ---------------------------------------------------------------------------
- loc_D4123CA ; CODE XREF: SRAM:0D41236Ej
- ; DATA XREF: SRAM:0D4133ECo ...
- MOVS R0, #2 ; jumptable 0D41236E cases 2,6
- B loc_D4123AE
- ; ---------------------------------------------------------------------------
- loc_D4123CE ; CODE XREF: SRAM:0D41236Ej
- ; DATA XREF: SRAM:0D4133F0o ...
- MOVS R0, #3 ; jumptable 0D41236E cases 3,7-10
- B loc_D4123AE
- ; ---------------------------------------------------------------------------
- loc_D4123D2 ; CODE XREF: SRAM:0D41236Ej
- ; DATA XREF: SRAM:0D4133F4o ...
- MOVS R0, #1 ; jumptable 0D41236E cases 4,5,12
- B loc_D4123AE
- ; ---------------------------------------------------------------------------
- loc_D4123D6 ; CODE XREF: SRAM:0D41238Cj
- LDR R3, =0xD8B4228
- MOVS R2, #0
- MOVS R6, #1
- STRH R2, [R3]
- CMP R6, #0
- BNE loc_D4123A6
- loc_D4123E2 ; CODE XREF: SRAM:0D4123A4j
- MOVS R1, R5
- LDR R0, =aErrorAhbmemflu ; "ERROR: ahbMemFlush(0x%x) did not ack!\n"
- BL sub_D41013C
- B loc_D4123A6
- ; ---------------------------------------------------------------------------
- off_D4123EC DCD jpt_D41236E ; DATA XREF: SRAM:0D412368r
- off_D4123F0 DCD 0xD8B4228 ; DATA XREF: SRAM:def_D4123B4r
- ; SRAM:0D41239Cr ...
- dword_D4123F4 DCD 0x22A ; DATA XREF: SRAM:loc_D41237Er
- dword_D4123F8 DCD 0xF423F ; DATA XREF: SRAM:0D412394r
- off_D4123FC DCD jpt_D4123B4 ; DATA XREF: SRAM:loc_D4123AEr
- off_D412400 DCD aErrorAhbmemflu ; DATA XREF: SRAM:0D4123E4r
- ; "ERROR: ahbMemFlush(0x%x) did not ack!\n"
- ; ---------------------------------------------------------------------------
- PUSH {R4,LR}
- BL sub_D4120BC
- MOVS R4, R0
- MOVS R0, #0
- BL Boot0_Checks_Maybe
- MOVS R0, R4
- POP {R4}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- CheckBoot0_Maybe ; CODE XREF: Main+424p Main+572p ...
- PUSH {R4,LR}
- MOVS R4, R0
- BL Boot0_Checks_Maybe
- CMP R4, #0
- BNE loc_D41242E
- loc_D412428 ; CODE XREF: CheckBoot0_Maybe+18j
- POP {R4}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- loc_D41242E ; CODE XREF: CheckBoot0_Maybe+Aj
- MOVS R0, #0
- BL Boot0_Checks_Maybe
- B loc_D412428
- ; End of function CheckBoot0_Maybe
- ; ---------------------------------------------------------------------------
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- sub_D412438 ; CODE XREF: sub_D412588+Ep
- ; SRAM:0D4125B2p
- var_A40 = -0xA40
- var_A3C = -0xA3C
- var_834 = -0x834
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- LDR R4, =0xFFFFF5E4
- ADD SP, R4
- MOVS R7, R0
- MOVS R4, R1
- MOVS R5, R2
- MOV R8, R3
- LDR R2, =0xA44
- ADD R2, SP
- LDR R2, [R2]
- MOV R11, R2
- LSRS R6, R2, #2
- LDR R3, =0x614
- ADD R3, SP
- MOV R9, R3
- MOVS R0, R3
- MOVS R1, R6
- MOVS R2, R4
- MOV R3, R11
- LDR R4, =(sub_D4130F8+1)
- BLX R4 ; sub_D4130F8
- MOVS R2, #0x410
- ADD R2, SP
- MOV R10, R2
- MOVS R0, R2
- MOVS R1, R6
- MOVS R2, R5
- MOV R3, R11
- BLX R4 ; sub_D4130F8
- ADD R0, SP, #0xA40+var_834
- MOVS R1, #1
- MOV R2, R8
- MOVS R5, #0xA40
- ADD R5, SP
- LDR R3, [R5]
- BLX R4 ; sub_D4130F8
- MOVS R2, #8
- ADD R2, SP
- MOV R8, R2
- MOV R3, R9
- STR R3, [SP,#0xA40+var_A40]
- STR R6, [SP,#0xA40+var_A3C]
- MOVS R0, R2
- MOV R1, R10
- ADD R2, SP, #0xA40+var_834
- MOVS R3, #1
- LDR R4, =sub_D412D38
- BLX R4 ; sub_D412D38
- MOV R4, R11
- LSLS R1, R4, #3
- LDR R5, =0x818
- ADD R5, SP
- MOVS R0, R5
- LSRS R1, R1, #3
- MOV R2, R8
- MOVS R3, R6
- LDR R4, =(sub_D4130AC+1)
- BLX R4 ; sub_D4130AC
- MOVS R0, #0
- LDRB R3, [R5]
- CMP R3, #0
- BNE loc_D4124C4
- MOVS R0, #1
- loc_D4124C4 ; CODE XREF: sub_D412438+88j
- MOVS R2, #0
- LDRB R3, [R5,#1]
- CMP R3, #1
- BNE loc_D4124CE
- MOVS R2, #1
- loc_D4124CE ; CODE XREF: sub_D412438+92j
- ANDS R0, R2
- ADDS R5, #2
- LDR R3, =0xA1C
- ADD R3, SP
- ADD R3, R11
- LDR R2, =0xFFFFFDD8
- ADDS R3, R3, R2
- CMP R3, R5
- BLS loc_D412502
- MOVS R2, #1
- LDR R3, =0xA1C
- ADD R3, SP
- ADD R3, R11
- LDR R4, =0xFFFFFDD8
- ADDS R1, R3, R4
- loc_D4124EC ; CODE XREF: sub_D412438+C8j
- LDRB R3, [R5]
- ADDS R5, #1
- LSLS R3, R3, #0x18
- LSRS R3, R3, #0x18
- CMP R3, #0xFF
- BNE loc_D4124FC
- ANDS R0, R2
- B loc_D4124FE
- ; ---------------------------------------------------------------------------
- loc_D4124FC ; CODE XREF: sub_D412438+BEj
- MOVS R0, #0
- loc_D4124FE ; CODE XREF: sub_D412438+C2j
- CMP R1, R5
- BHI loc_D4124EC
- loc_D412502 ; CODE XREF: sub_D412438+A6j
- MOVS R1, #0
- LDR R4, =SHA1_HASH
- MOVS R6, #1
- loc_D412508 ; CODE XREF: sub_D412438+E8j
- LDRB R3, [R5]
- ADDS R5, #1
- LSLS R3, R3, #0x18
- LSRS R3, R3, #0x18
- LDRB R2, [R4,R1]
- CMP R3, R2
- BNE loc_D41251A
- ANDS R0, R6
- B loc_D41251C
- ; ---------------------------------------------------------------------------
- loc_D41251A ; CODE XREF: sub_D412438+DCj
- MOVS R0, #0
- loc_D41251C ; CODE XREF: sub_D412438+E0j
- ADDS R1, #1
- CMP R1, #0xF
- BLS loc_D412508
- MOVS R1, #0
- MOVS R4, #1
- loc_D412526 ; CODE XREF: sub_D412438+108j
- LDRB R2, [R7]
- ADDS R7, #1
- LDRB R3, [R5]
- ADDS R5, #1
- LSLS R3, R3, #0x18
- LSLS R2, R2, #0x18
- CMP R2, R3
- BNE loc_D41253A
- ANDS R0, R4
- B loc_D41253C
- ; ---------------------------------------------------------------------------
- loc_D41253A ; CODE XREF: sub_D412438+FCj
- MOVS R0, #0
- loc_D41253C ; CODE XREF: sub_D412438+100j
- ADDS R1, #1
- CMP R1, #0x13
- BLS loc_D412526
- CMP R0, #0
- BEQ loc_D41254A
- MOVS R0, #0
- B loc_D41254C
- ; ---------------------------------------------------------------------------
- loc_D41254A ; CODE XREF: sub_D412438+10Cj
- MOVS R0, #7
- loc_D41254C ; CODE XREF: sub_D412438+110j
- LDR R3, =0xA1C
- ADD SP, R3
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R1}
- BX R1
- ; End of function sub_D412438
- ; ---------------------------------------------------------------------------
- dword_D412560 DCD 0xFFFFF5E4 ; DATA XREF: sub_D412438+Cr
- dword_D412564 DCD 0xA44 ; DATA XREF: sub_D412438+18r
- dword_D412568 DCD 0x614 ; DATA XREF: sub_D412438+22r
- off_D41256C DCD sub_D4130F8+1 ; DATA XREF: sub_D412438+30r
- off_D412570 DCD sub_D412D38 ; DATA XREF: sub_D412438+6Ar
- dword_D412574 DCD 0x818 ; DATA XREF: sub_D412438+72r
- off_D412578 DCD sub_D4130AC+1 ; DATA XREF: sub_D412438+7Er
- dword_D41257C DCD 0xA1C ; DATA XREF: sub_D412438+9Ar
- ; sub_D412438+AAr ...
- dword_D412580 DCD 0xFFFFFDD8 ; DATA XREF: sub_D412438+A0r
- ; sub_D412438+B0r
- off_D412584 DCD SHA1_HASH ; DATA XREF: sub_D412438+CCr
- ; =============== S U B R O U T I N E =======================================
- sub_D412588 ; CODE XREF: CalcSHA_And_RSA+54p
- var_10 = -0x10
- var_C = -0xC
- arg_0 = 0
- PUSH {R4,LR}
- SUB SP, SP, #8
- LDR R4, [SP,#0x10+arg_0]
- STR R4, [SP,#0x10+var_10]
- MOVS R4, #0x100
- STR R4, [SP,#0x10+var_C]
- BL sub_D412438
- ADD SP, SP, #8
- POP {R4}
- POP {R1}
- BX R1
- ; End of function sub_D412588
- ; ---------------------------------------------------------------------------
- ALIGN 4
- PUSH {R4,LR}
- SUB SP, SP, #8
- LDR R4, [SP,#0x10]
- STR R4, [SP]
- MOVS R4, #0x200
- STR R4, [SP,#4]
- BL sub_D412438
- ADD SP, SP, #8
- POP {R4}
- POP {R1}
- BX R1
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- PUSH {R4-R7,LR}
- MOV R7, R11
- MOV R6, R10
- MOV R5, R9
- MOV R4, R8
- PUSH {R4-R7}
- LDR R4, =0xFFFFF7E8
- ADD SP, R4
- MOVS R7, R0
- MOV R8, R1
- MOV R10, R3
- LDR R3, =0x83C
- ADD R3, SP
- LDR R5, [R3]
- LSRS R6, R5, #2
- LDR R3, =0x614
- ADD R3, SP
- MOV R11, R3
- MOVS R0, R3
- MOVS R1, R6
- MOVS R3, R5
- LDR R4, =(sub_D4130F8+1)
- BLX R4 ; sub_D4130F8
- MOVS R3, #0x410
- ADD R3, SP
- MOV R9, R3
- MOVS R0, R3
- MOVS R1, R6
- MOV R2, R8
- MOVS R3, R5
- BLX R4 ; sub_D4130F8
- MOVS R3, #0x20C
- ADD R3, SP
- MOV R8, R3
- MOVS R0, R3
- MOVS R1, R6
- MOV R2, R10
- MOVS R3, R5
- BLX R4 ; sub_D4130F8
- MOVS R3, #8
- ADD R3, SP
- MOV R10, R3
- MOV R3, R11
- STR R3, [SP]
- STR R6, [SP,#4]
- MOV R0, R10
- MOV R1, R9
- MOV R2, R8
- MOVS R3, R6
- LDR R4, =sub_D412D38
- BLX R4 ; sub_D412D38
- LSLS R5, R5, #3
- MOVS R0, R7
- LSRS R1, R5, #3
- MOV R2, R10
- MOVS R3, R6
- LDR R4, =(sub_D4130AC+1)
- BLX R4 ; sub_D4130AC
- LDR R3, =0x818
- ADD SP, R3
- POP {R3-R6}
- MOV R8, R3
- MOV R9, R4
- MOV R10, R5
- MOV R11, R6
- POP {R4-R7}
- POP {R0}
- BX R0
- ; ---------------------------------------------------------------------------
- dword_D41264C DCD 0xFFFFF7E8 ; DATA XREF: SRAM:0D4125CCr
- dword_D412650 DCD 0x83C ; DATA XREF: SRAM:0D4125D6r
- dword_D412654 DCD 0x614 ; DATA XREF: SRAM:0D4125DEr
- off_D412658 DCD sub_D4130F8+1 ; DATA XREF: SRAM:0D4125EAr
- off_D41265C DCD sub_D412D38 ; DATA XREF: SRAM:0D412626r
- off_D412660 DCD sub_D4130AC+1 ; DATA XREF: SRAM:0D412634r
- dword_D412664 DCD 0x818 ; DATA XREF: SRAM:0D412638r
- CODE32
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412668 ; CODE XREF: sub_D412AE0+E0p
- MOV R12, SP
- STMFD SP!, {R4-R12,LR,PC}
- SUB R11, R12, #4
- MOV R9, R0
- MOV R8, R2
- MOV R6, R2,LSR#16
- MOV R3, R2,LSL#16
- MOV R10, R3,LSR#16
- LDMIA R1, {R4,R5}
- MOV R3, #0xFFFF
- CMP R6, R3
- MOVEQ R7, R5,LSR#16
- BEQ loc_D4126BC
- MOV R0, R5
- ADD R1, R6, #1
- LDR R3, =(sub_D4131EC+1)
- MOV LR, PC
- BX R3 ; sub_D4131EC
- MOV R0, R0,LSL#16
- MOV R7, R0,LSR#16
- loc_D4126BC ; CODE XREF: sub_D412668+34j
- MUL R2, R10, R7
- MUL R1, R6, R7
- MOV R3, R2,LSL#16
- RSB R4, R3, R4
- MVN R3, R3
- CMP R3, R4
- SUBCC R5, R5, #1
- SUB R5, R5, R2,LSR#16
- RSB R5, R1, R5
- CMP R6, R5
- BCC loc_D4126F8
- BNE loc_D412730
- MOV R3, R10,LSL#16
- CMP R3, R4
- BHI loc_D412730
- loc_D4126F8 ; CODE XREF: sub_D412668+7Cj
- MOV R2, R10,LSL#16
- MVN R1, R2
- loc_D412700 ; CODE XREF: sub_D412668+B8j
- ; sub_D412668+C4j
- RSB R4, R2, R4
- CMP R1, R4
- SUBCC R5, R5, #1
- RSB R5, R6, R5
- ADD R3, R7, #1
- MOV R3, R3,LSL#16
- MOV R7, R3,LSR#16
- CMP R6, R5
- BCC loc_D412700
- BNE loc_D412730
- CMP R2, R4
- BLS loc_D412700
- loc_D412730 ; CODE XREF: sub_D412668+80j
- ; sub_D412668+8Cj ...
- MOV R3, #0xFFFF
- CMP R6, R3
- MOVEQ R3, R5,LSL#16
- MOVEQ R0, R3,LSR#16
- BEQ loc_D412768
- MOV R0, R4,LSR#16
- ADD R0, R0, R5,LSL#16
- ADD R1, R6, #1
- LDR R3, =(sub_D4131EC+1)
- MOV LR, PC
- BX R3 ; sub_D4131EC
- MOV R0, R0,LSL#16
- MOV R0, R0,LSR#16
- loc_D412768 ; CODE XREF: sub_D412668+DCj
- MUL R2, R10, R0
- MUL R1, R6, R0
- RSB R4, R2, R4
- MVN R3, R2
- CMP R3, R4
- SUBCC R5, R5, #1
- MOV R3, R1,LSL#16
- RSB R4, R3, R4
- MVN R3, R3
- CMP R3, R4
- SUBCC R5, R5, #1
- SUB R3, R5, R1,LSR#16
- MOV R5, R3
- CMP R3, #0
- BNE loc_D4127AC
- CMP R8, R4
- BHI loc_D4127D8
- loc_D4127AC ; CODE XREF: sub_D412668+138j
- MVN R2, R8
- loc_D4127B0 ; CODE XREF: sub_D412668+164j
- ; sub_D412668+16Cj
- RSB R4, R8, R4
- CMP R2, R4
- SUBCC R5, R5, #1
- ADD R3, R0, #1
- MOV R3, R3,LSL#16
- MOV R0, R3,LSR#16
- CMP R5, #0
- BNE loc_D4127B0
- CMP R8, R4
- BLS loc_D4127B0
- loc_D4127D8 ; CODE XREF: sub_D412668+140j
- ADD R3, R0, R7,LSL#16
- STR R3, [R9]
- LDMFD SP, {R4-R11,SP,LR}
- BX LR
- ; End of function sub_D412668
- ; ---------------------------------------------------------------------------
- off_D4127E8 DCD sub_D4131EC+1 ; DATA XREF: sub_D412668+40r
- ; sub_D412668+ECr
- ; =============== S U B R O U T I N E =======================================
- sub_D4127EC ; CODE XREF: sub_D412930+A8p
- ; sub_D412D38+8Cp ...
- MOV R12, #0
- CMP R12, R2
- BXGE LR
- loc_D4127F8 ; CODE XREF: sub_D4127EC+1Cj
- LDR R3, [R1,R12,LSL#2]
- STR R3, [R0,R12,LSL#2]
- ADD R12, R12, #1
- CMP R12, R2
- BLT loc_D4127F8
- BX LR
- ; End of function sub_D4127EC
- ; =============== S U B R O U T I N E =======================================
- sub_D412810 ; CODE XREF: sub_D412930+28p
- ; sub_D412AE0+60p ...
- MOV R3, #0
- CMP R3, R1
- BXGE LR
- MOV R2, R3
- loc_D412820 ; CODE XREF: sub_D412810+1Cj
- STR R2, [R0,R3,LSL#2]
- ADD R3, R3, #1
- CMP R3, R1
- BLT loc_D412820
- BX LR
- ; End of function sub_D412810
- ; =============== S U B R O U T I N E =======================================
- sub_D412834 ; CODE XREF: SRAM:0D413014p
- STMFD SP!, {R4,R5,LR}
- MOV R5, R0
- MOV R4, R1
- MOV R1, R2
- MOV R2, R3
- MOV R0, #0
- MOV LR, R0
- CMP R0, R3
- BGE loc_D412888
- loc_D412858 ; CODE XREF: sub_D412834+50j
- LDR R3, [R4,LR,LSL#2]
- ADDS R12, R0, R3
- LDRCS R12, [R1,LR,LSL#2]
- BCS loc_D412878
- LDR R3, [R1,LR,LSL#2]
- ADDS R12, R12, R3
- MOVCC R0, #0
- MOVCS R0, #1
- loc_D412878 ; CODE XREF: sub_D412834+30j
- STR R12, [R5,LR,LSL#2]
- ADD LR, LR, #1
- CMP LR, R2
- BLT loc_D412858
- loc_D412888 ; CODE XREF: sub_D412834+20j
- LDMFD SP!, {R4,R5,LR}
- BX LR
- ; End of function sub_D412834
- ; =============== S U B R O U T I N E =======================================
- sub_D412890 ; CODE XREF: sub_D412AE0+138p
- ; SRAM:0D413088p
- STMFD SP!, {R4,R5,LR}
- MOV R5, R0
- MOV R4, R1
- MOV R1, R2
- MOV R2, R3
- MOV R0, #0
- MOV LR, R0
- CMP R0, R3
- BGE loc_D412900
- loc_D4128B4 ; CODE XREF: sub_D412890+6Cj
- LDR R3, [R4,LR,LSL#2]
- RSB R12, R0, R3
- RSB R3, R0, #0xFF000000
- ADD R3, R3, #0x1000000
- SUB R3, R3, #1
- CMP R12, R3
- LDRHI R3, [R1,LR,LSL#2]
- MVNHI R12, R3
- BHI loc_D4128F0
- LDR R3, [R1,LR,LSL#2]
- RSB R12, R3, R12
- MVN R3, R3
- CMP R12, R3
- MOVLS R0, #0
- MOVHI R0, #1
- loc_D4128F0 ; CODE XREF: sub_D412890+44j
- STR R12, [R5,LR,LSL#2]
- ADD LR, LR, #1
- CMP LR, R2
- BLT loc_D4128B4
- loc_D412900 ; CODE XREF: sub_D412890+20j
- LDMFD SP!, {R4,R5,LR}
- BX LR
- ; End of function sub_D412890
- ; =============== S U B R O U T I N E =======================================
- sub_D412908 ; CODE XREF: sub_D412930+34p
- ; sub_D412930+44p ...
- MOV R2, R0
- SUBS R0, R1, #1
- BMI loc_D412928
- loc_D412914 ; CODE XREF: sub_D412908+1Cj
- LDR R3, [R2,R0,LSL#2]
- CMP R3, #0
- BNE loc_D412928
- SUBS R0, R0, #1
- BPL loc_D412914
- loc_D412928 ; CODE XREF: sub_D412908+8j
- ; sub_D412908+14j
- ADD R0, R0, #1
- BX LR
- ; End of function sub_D412908
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412930 ; CODE XREF: sub_D412CE8+24p
- ; SRAM:0D412FF8p
- var_34 = -0x34
- var_30 = -0x30
- var_2C = -0x2C
- MOV R12, SP
- STMFD SP!, {R4-R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #0xC
- STR R0, [R11,#var_2C]
- STR R1, [R11,#var_30]
- MOV R9, R2
- MOV R10, R3
- LDR R0, =unk_D415E20
- MOV R1, R3,LSL#1
- BL sub_D412810
- LDR R0, [R11,#var_30]
- MOV R1, R10
- BL sub_D412908
- MOV R8, R0
- MOV R0, R9
- MOV R1, R10
- BL sub_D412908
- MOV R7, R0
- MOV R5, #0
- CMP R5, R8
- BGE loc_D4129CC
- LDR R6, =unk_D415E20
- loc_D41298C ; CODE XREF: sub_D412930+98j
- ADD R4, R5, R7
- ADD R1, R6, R5,LSL#2
- LDR R3, [R11,#var_30]
- LDR R2, [R3,R5,LSL#2]
- STR R7, [SP,#0x34+var_34]
- MOV R0, R1
- MOV R3, R9
- LDR R12, =sub_D41314C
- MOV LR, PC
- BX R12 ; sub_D41314C
- LDR R3, [R6,R4,LSL#2]
- ADD R0, R0, R3
- STR R0, [R6,R4,LSL#2]
- ADD R5, R5, #1
- CMP R5, R8
- BLT loc_D41298C
- loc_D4129CC ; CODE XREF: sub_D412930+54j
- LDR R0, [R11,#var_2C]
- LDR R1, =unk_D415E20
- MOV R2, R10,LSL#1
- BL sub_D4127EC
- SUB SP, R11, #0x28
- LDMFD SP, {R4-R11,SP,LR}
- BX LR
- ; End of function sub_D412930
- ; ---------------------------------------------------------------------------
- off_D4129E8 DCD unk_D415E20 ; DATA XREF: sub_D412930+20r
- ; sub_D412930+58r ...
- off_D4129EC DCD sub_D41314C ; DATA XREF: sub_D412930+78r
- ; =============== S U B R O U T I N E =======================================
- sub_D4129F0 ; CODE XREF: sub_D412AE0+78p
- ; sub_D412AE0+90p
- STMFD SP!, {R4-R6,LR}
- MOV R5, R0
- MOV R4, R1
- MOV R1, R3
- CMP R2, #0x1F
- MOVGT R0, #0
- BGT loc_D412A44
- RSB R6, R2, #0x20
- MOV R0, #0
- MOV LR, R0
- CMP R0, R3
- BGE loc_D412A44
- loc_D412A20 ; CODE XREF: sub_D4129F0+50j
- LDR R12, [R4,LR,LSL#2]
- ORR R3, R0, R12,LSL R2
- STR R3, [R5,LR,LSL#2]
- CMP R2, #0
- MOVNE R0, R12,LSR R6
- MOVEQ R0, #0
- ADD LR, LR, #1
- CMP LR, R1
- BLT loc_D412A20
- loc_D412A44 ; CODE XREF: sub_D4129F0+18j
- ; sub_D4129F0+2Cj
- LDMFD SP!, {R4-R6,LR}
- BX LR
- ; End of function sub_D4129F0
- ; =============== S U B R O U T I N E =======================================
- sub_D412A4C ; CODE XREF: sub_D412AE0+198p
- STMFD SP!, {R4,R5,LR}
- MOV R4, R0
- CMP R2, #0x1F
- MOVGT R0, #0
- BGT loc_D412A90
- RSB R5, R2, #0x20
- MOV R0, #0
- SUBS R12, R3, #1
- BMI loc_D412A90
- loc_D412A70 ; CODE XREF: sub_D412A4C+40j
- LDR LR, [R1,R12,LSL#2]
- ORR R3, R0, LR,LSR R2
- STR R3, [R4,R12,LSL#2]
- CMP R2, #0
- MOVNE R0, LR,LSL R5
- MOVEQ R0, #0
- SUBS R12, R12, #1
- BPL loc_D412A70
- loc_D412A90 ; CODE XREF: sub_D412A4C+10j
- ; sub_D412A4C+20j
- LDMFD SP!, {R4,R5,LR}
- BX LR
- ; End of function sub_D412A4C
- ; =============== S U B R O U T I N E =======================================
- sub_D412A98 ; CODE XREF: sub_D412AE0+160p
- SUBS R12, R2, #1
- BMI loc_D412AD8
- loc_D412AA0 ; CODE XREF: sub_D412A98+3Cj
- LDR R2, [R0,R12,LSL#2]
- LDR R3, [R1,R12,LSL#2]
- CMP R2, R3
- BLS loc_D412AB8
- MOV R0, #1
- BX LR
- ; ---------------------------------------------------------------------------
- loc_D412AB8 ; CODE XREF: sub_D412A98+14j
- LDR R2, [R0,R12,LSL#2]
- LDR R3, [R1,R12,LSL#2]
- CMP R2, R3
- BCS loc_D412AD0
- MOV R0, #0xFFFFFFFF
- BX LR
- ; ---------------------------------------------------------------------------
- loc_D412AD0 ; CODE XREF: sub_D412A98+2Cj
- SUBS R12, R12, #1
- BPL loc_D412AA0
- loc_D412AD8 ; CODE XREF: sub_D412A98+4j
- MOV R0, #0
- BX LR
- ; End of function sub_D412A98
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412AE0 ; CODE XREF: sub_D412C9C+38p
- ; SRAM:0D412FDCp
- var_38 = -0x38
- var_34 = -0x34
- var_30 = -0x30
- var_2C = -0x2C
- arg_0 = 4
- arg_4 = 8
- MOV R12, SP
- STMFD SP!, {R4-R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #0x10
- MOV R9, R0
- STR R1, [R11,#var_30]
- MOV R10, R2
- MOV R6, R3
- LDR R8, [R11,#arg_0]
- MOV R0, R8
- LDR R1, [R11,#arg_4]
- BL sub_D412908
- SUBS R7, R0, #0
- BEQ loc_D412C7C
- MOV R5, R7,LSL#2
- ADD R3, R5, R8
- LDR R0, [R3,#-4]
- LDR R3, =sub_D4131E0
- MOV LR, PC
- BX R3 ; sub_D4131E0
- RSB R0, R0, #0x20
- STR R0, [R11,#var_34]
- LDR R0, =unk_D415408
- MOV R1, R7
- BL sub_D412810
- LDR R4, =unk_D415408
- MOV R0, R4
- MOV R1, R10
- LDR R2, [R11,#var_34]
- MOV R3, R6
- BL sub_D4129F0
- STR R0, [R4,R6,LSL#2]
- LDR R0, =unk_D415814
- MOV R1, R8
- LDR R2, [R11,#var_34]
- MOV R3, R7
- BL sub_D4129F0
- LDR R3, =unk_D415814
- ADD R5, R5, R3
- LDR R10, [R5,#-4]
- MOV R0, R9
- MOV R1, R6
- BL sub_D412810
- SUBS R6, R6, R7
- BMI loc_D412C5C
- MOV R8, R4
- loc_D412B98 ; CODE XREF: sub_D412AE0+178j
- CMN R10, #1
- ADDEQ R3, R6, R7
- LDREQ R3, [R8,R3,LSL#2]
- STREQ R3, [R11,#var_2C]
- BEQ loc_D412BC4
- ADD R1, R6, R7
- SUB R0, R11, #-var_2C
- LDR R3, =unk_D415404
- ADD R1, R3, R1,LSL#2
- ADD R2, R10, #1
- BL sub_D412668
- loc_D412BC4 ; CODE XREF: sub_D412AE0+C8j
- ADD R4, R6, R7
- ADD R1, R8, R6,LSL#2
- STR R7, [SP,#0x38+var_38]
- MOV R0, R1
- LDR R2, [R11,#var_2C]
- LDR R3, =unk_D415814
- LDR R12, =sub_D413194
- MOV LR, PC
- BX R12 ; sub_D413194
- LDR R3, [R8,R4,LSL#2]
- RSB R3, R0, R3
- STR R3, [R8,R4,LSL#2]
- LDR R5, =unk_D415408
- B loc_D412C28
- ; ---------------------------------------------------------------------------
- loc_D412BFC ; CODE XREF: sub_D412AE0+150j
- ; sub_D412AE0+168j
- LDR R3, [R11,#var_2C]
- ADD R3, R3, #1
- STR R3, [R11,#var_2C]
- ADD R1, R5, R6,LSL#2
- MOV R0, R1
- LDR R2, =unk_D415814
- MOV R3, R7
- BL sub_D412890
- LDR R3, [R5,R4,LSL#2]
- RSB R3, R0, R3
- STR R3, [R5,R4,LSL#2]
- loc_D412C28 ; CODE XREF: sub_D412AE0+118j
- LDR R3, [R5,R4,LSL#2]
- CMP R3, #0
- BNE loc_D412BFC
- ADD R0, R5, R6,LSL#2
- LDR R1, =unk_D415814
- MOV R2, R7
- BL sub_D412A98
- CMP R0, #0
- BGE loc_D412BFC
- LDR R3, [R11,#var_2C]
- STR R3, [R9,R6,LSL#2]
- SUBS R6, R6, #1
- BPL loc_D412B98
- loc_D412C5C ; CODE XREF: sub_D412AE0+B0j
- LDR R0, [R11,#var_30]
- LDR R1, [R11,#arg_4]
- BL sub_D412810
- LDR R0, [R11,#var_30]
- LDR R1, =unk_D415408
- LDR R2, [R11,#var_34]
- MOV R3, R7
- BL sub_D412A4C
- loc_D412C7C ; CODE XREF: sub_D412AE0+34j
- SUB SP, R11, #0x28
- LDMFD SP, {R4-R11,SP,LR}
- BX LR
- ; End of function sub_D412AE0
- ; ---------------------------------------------------------------------------
- off_D412C88 DCD sub_D4131E0 ; DATA XREF: sub_D412AE0+44r
- off_D412C8C DCD unk_D415408 ; DATA XREF: sub_D412AE0+58r
- ; sub_D412AE0+64r ...
- off_D412C90 DCD unk_D415814 ; DATA XREF: sub_D412AE0+80r
- ; sub_D412AE0+94r ...
- off_D412C94 DCD unk_D415404 ; DATA XREF: sub_D412AE0+D4r
- off_D412C98 DCD sub_D413194 ; DATA XREF: sub_D412AE0+FCr
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412C9C ; CODE XREF: sub_D412CE8+3Cp
- var_18 = -0x18
- var_14 = -0x14
- arg_0 = 4
- MOV R12, SP
- STMFD SP!, {R4,R11,R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #8
- MOV R12, R0
- MOV LR, R1
- MOV R4, R2
- STR R3, [SP,#0x18+var_18]
- LDR R3, [R11,#arg_0]
- STR R3, [SP,#0x18+var_14]
- LDR R0, =unk_D415A18
- MOV R1, R12
- MOV R2, LR
- MOV R3, R4
- BL sub_D412AE0
- SUB SP, R11, #0x10
- LDMFD SP, {R4,R11,SP,LR}
- BX LR
- ; End of function sub_D412C9C
- ; ---------------------------------------------------------------------------
- off_D412CE4 DCD unk_D415A18 ; DATA XREF: sub_D412C9C+28r
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412CE8 ; CODE XREF: sub_D412D38+B0p
- ; sub_D412D38+D4p ...
- var_1C = -0x1C
- arg_0 = 4
- MOV R12, SP
- STMFD SP!, {R4-R6,R11,R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #4
- MOV R4, R0
- MOV R6, R3
- LDR R5, [R11,#arg_0]
- LDR R0, =unk_D416834
- MOV R3, R5
- BL sub_D412930
- STR R5, [SP,#0x1C+var_1C]
- MOV R0, R4
- LDR R1, =unk_D416834
- MOV R2, R5,LSL#1
- MOV R3, R6
- BL sub_D412C9C
- SUB SP, R11, #0x18
- LDMFD SP, {R4-R6,R11,SP,LR}
- BX LR
- ; End of function sub_D412CE8
- ; ---------------------------------------------------------------------------
- off_D412D34 DCD unk_D416834 ; DATA XREF: sub_D412CE8+1Cr
- ; sub_D412CE8+30r
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: bp-based frame
- sub_D412D38 ; CODE XREF: sub_D412438+6Cp
- ; SRAM:0D412628p
- ; DATA XREF: ...
- var_48 = -0x48
- var_44 = -0x44
- var_40 = -0x40
- var_3C = -0x3C
- var_38 = -0x38
- var_34 = -0x34
- var_30 = -0x30
- var_2C = -0x2C
- var_28 = -0x28
- MOV R12, SP
- STMFD SP!, {R4-R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #0x20
- STR R0, [R11,#var_3C]
- MOV R4, R1
- STR R2, [R11,#var_40]
- STR R3, [R11,#var_44]
- LDMIB R11, {R9,R10}
- MOV R2, #0
- MOV R3, #1
- STR R3, [R11,#var_38]
- STR R3, [R11,#var_34]
- STR R2, [R11,#var_30]
- STR R2, [R11,#var_2C]
- LDR R3, [R11,#var_40]
- LDR R1, [R3]
- MOV R7, R2
- loc_D412D80 ; CODE XREF: sub_D412D38+6Cj
- AND R2, R1, #3
- SUB R3, R11, #-var_28
- ADD R2, R3, R2,LSL#2
- LDR R3, [R2,#-0x10]
- ADD R3, R3, #1
- STR R3, [R2,#-0x10]
- MOV R1, R1,LSR#2
- ADD R7, R7, #1
- CMP R7, #0xF
- BLE loc_D412D80
- LDR R3, [R11,#var_2C]
- CMP R3, #0
- MOVNE R3, #1
- STRNE R3, [R11,#var_30]
- LDR R0, =unk_D416228
- MOV R1, R4
- MOV R2, R10
- BL sub_D4127EC
- LDR R3, [R11,#var_30]
- CMP R3, #0
- BEQ loc_D412DEC
- STR R10, [SP,#0x48+var_48]
- LDR R0, =unk_D41642C
- SUB R1, R0, #0x204
- MOV R2, R4
- MOV R3, R9
- BL sub_D412CE8
- loc_D412DEC ; CODE XREF: sub_D412D38+98j
- LDR R3, [R11,#var_2C]
- CMP R3, #0
- BEQ loc_D412E10
- STR R10, [SP,#0x48+var_48]
- LDR R0, =unk_D416630
- SUB R1, R0, #0x204
- MOV R2, R4
- MOV R3, R9
- BL sub_D412CE8
- loc_D412E10 ; CODE XREF: sub_D412D38+BCj
- LDR R0, =dword_D415204 ; StackEnd
- MOV R1, R10
- BL sub_D412810
- MOV R2, #1
- LDR R3, =dword_D415204 ; StackEnd
- STR R2, [R3]
- LDR R0, [R11,#var_40]
- LDR R1, [R11,#var_44]
- BL sub_D412908
- STR R0, [R11,#var_44]
- SUBS R7, R0, #1
- BMI loc_D412EF4
- loc_D412E40 ; CODE XREF: sub_D412D38+1B8j
- LDR R2, [R11,#var_40]
- LDR R5, [R2,R7,LSL#2]
- MOV R8, #0x20
- LDR R2, [R11,#var_44]
- SUB R3, R2, #1
- CMP R3, R7
- BNE loc_D412E74
- MOVS R3, R5,LSR#30
- BNE loc_D412E74
- loc_D412E64 ; CODE XREF: sub_D412D38+138j
- MOV R5, R5,LSL#2
- SUB R8, R8, #2
- MOVS R2, R5,LSR#30
- BEQ loc_D412E64
- loc_D412E74 ; CODE XREF: sub_D412D38+120j
- ; sub_D412D38+128j
- MOV R6, #0
- CMP R6, R8
- BCS loc_D412EEC
- LDR R4, =dword_D415204 ; StackEnd
- loc_D412E84 ; CODE XREF: sub_D412D38+1B0j
- STR R10, [SP,#0x48+var_48]
- MOV R0, R4
- MOV R1, R4
- MOV R2, R4
- MOV R3, R9
- BL sub_D412CE8
- STR R10, [SP,#0x48+var_48]
- MOV R0, R4
- MOV R1, R4
- MOV R2, R4
- MOV R3, R9
- BL sub_D412CE8
- MOVS R3, R5,LSR#30
- BEQ loc_D412EDC
- ADD R2, R3, R3,LSL#7
- STR R10, [SP,#0x48+var_48]
- MOV R0, R4
- MOV R1, R4
- LDR R3, =unk_D416024
- ADD R2, R3, R2,LSL#2
- MOV R3, R9
- BL sub_D412CE8
- loc_D412EDC ; CODE XREF: sub_D412D38+180j
- ADD R6, R6, #2
- MOV R5, R5,LSL#2
- CMP R6, R8
- BCC loc_D412E84
- loc_D412EEC ; CODE XREF: sub_D412D38+144j
- SUBS R7, R7, #1
- BPL loc_D412E40
- loc_D412EF4 ; CODE XREF: sub_D412D38+104j
- LDR R0, [R11,#var_3C]
- LDR R1, =dword_D415204 ; StackEnd
- MOV R2, R10
- BL sub_D4127EC
- SUB SP, R11, #0x28
- LDMFD SP, {R4-R11,SP,LR}
- BX LR
- ; End of function sub_D412D38
- ; ---------------------------------------------------------------------------
- off_D412F10 DCD unk_D416228 ; DATA XREF: sub_D412D38+80r
- off_D412F14 DCD unk_D41642C ; DATA XREF: sub_D412D38+A0r
- off_D412F18 DCD unk_D416630 ; DATA XREF: sub_D412D38+C4r
- off_D412F1C DCD dword_D415204 ; DATA XREF: sub_D412D38:loc_D412E10r
- ; sub_D412D38+E8r ...
- ; StackEnd
- off_D412F20 DCD unk_D416024 ; DATA XREF: sub_D412D38+194r
- ; =============== S U B R O U T I N E =======================================
- sub_D412F24 ; CODE XREF: SRAM:0D413064p
- MOV R2, #0
- CMP R2, R1
- BGE loc_D412F50
- loc_D412F30 ; CODE XREF: sub_D412F24+28j
- LDR R3, [R0,R2,LSL#2]
- CMP R3, #0
- BEQ loc_D412F44
- MOV R0, #0
- BX LR
- ; ---------------------------------------------------------------------------
- loc_D412F44 ; CODE XREF: sub_D412F24+14j
- ADD R2, R2, #1
- CMP R2, R1
- BLT loc_D412F30
- loc_D412F50 ; CODE XREF: sub_D412F24+8j
- MOV R0, #1
- BX LR
- ; End of function sub_D412F24
- ; ---------------------------------------------------------------------------
- MOV R12, SP
- STMFD SP!, {R4-R12,LR,PC}
- SUB R11, R12, #4
- SUB SP, SP, #0x130
- STR R0, [R11,#-0x14C]
- MOV R5, R1
- STR R2, [R11,#-0x150]
- MOV R8, R3
- SUB R0, R11, #0xA8
- MOV R1, R3
- BL sub_D412810
- MOV R4, #1
- STR R4, [R11,#-0xA8]
- SUB R0, R11, #0xE8
- MOV R1, R8
- BL sub_D412810
- SUB R0, R11, #0xC8
- MOV R1, R5
- MOV R2, R8
- BL sub_D4127EC
- SUB R0, R11, #0x108
- LDR R1, [R11,#-0x150]
- MOV R2, R8
- BL sub_D4127EC
- MOV R9, R4
- SUB R10, R11, #0x108
- B loc_D41305C
- ; ---------------------------------------------------------------------------
- loc_D412FC4 ; CODE XREF: SRAM:0D41306Cj
- STR R10, [SP]
- STR R8, [SP,#4]
- SUB R0, R11, #0x48
- SUB R1, R11, #0x88
- SUB R2, R11, #0xC8
- MOV R3, R8
- BL sub_D412AE0
- SUB R6, R11, #0x148
- SUB R5, R11, #0xE8
- MOV R0, R6
- SUB R1, R11, #0x48
- MOV R2, R5
- MOV R3, R8
- BL sub_D412930
- SUB R7, R11, #0x68
- SUB R4, R11, #0xA8
- MOV R0, R7
- MOV R1, R4
- MOV R2, R6
- MOV R3, R8
- BL sub_D412834
- MOV R0, R4
- MOV R1, R5
- MOV R2, R8
- BL sub_D4127EC
- MOV R0, R5
- MOV R1, R7
- MOV R2, R8
- BL sub_D4127EC
- SUB R0, R11, #0xC8
- MOV R1, R10
- MOV R2, R8
- BL sub_D4127EC
- MOV R0, R10
- SUB R1, R11, #0x88
- MOV R2, R8
- BL sub_D4127EC
- RSB R9, R9, #0
- loc_D41305C ; CODE XREF: SRAM:0D412FC0j
- SUB R0, R11, #0x108
- MOV R1, R8
- BL sub_D412F24
- CMP R0, #0
- BEQ loc_D412FC4
- CMP R9, #0
- BGE loc_D413090
- LDR R0, [R11,#-0x14C]
- LDR R1, [R11,#-0x150]
- SUB R2, R11, #0xA8
- MOV R3, R8
- BL sub_D412890
- B loc_D4130A0
- ; ---------------------------------------------------------------------------
- loc_D413090 ; CODE XREF: SRAM:0D413074j
- LDR R0, [R11,#-0x14C]
- SUB R1, R11, #0xA8
- MOV R2, R8
- BL sub_D4127EC
- loc_D4130A0 ; CODE XREF: SRAM:0D41308Cj
- SUB SP, R11, #0x28
- LDMFD SP, {R4-R11,SP,LR}
- BX LR
- CODE16
- ; =============== S U B R O U T I N E =======================================
- sub_D4130AC ; CODE XREF: sub_D412438+80p
- ; SRAM:0D412636p
- ; DATA XREF: ...
- PUSH {R4-R7,LR}
- MOVS R4, R0
- MOVS R7, R2
- MOVS R6, R3
- MOVS R5, #0
- SUBS R1, #1
- CMP R3, R5
- BLS loc_D4130E6
- CMP R1, #0
- BLT loc_D4130F2
- loc_D4130C0 ; CODE XREF: sub_D4130AC+36j
- LSLS R3, R5, #2
- LDR R0, [R3,R7]
- MOVS R2, #0
- CMP R1, #0
- BLT loc_D4130DA
- loc_D4130CA ; CODE XREF: sub_D4130AC+2Cj
- MOVS R3, R0
- LSRS R3, R2
- STRB R3, [R4,R1]
- ADDS R2, #8
- SUBS R1, #1
- BMI loc_D4130DA
- CMP R2, #0x1F
- BLS loc_D4130CA
- loc_D4130DA ; CODE XREF: sub_D4130AC+1Cj
- ; sub_D4130AC+28j
- ADDS R5, #1
- CMP R6, R5
- BLS loc_D4130E6
- CMP R1, #0
- BGE loc_D4130C0
- B loc_D4130F2
- ; ---------------------------------------------------------------------------
- loc_D4130E6 ; CODE XREF: sub_D4130AC+Ej
- ; sub_D4130AC+32j
- CMP R1, #0
- BLT loc_D4130F2
- MOVS R3, #0
- loc_D4130EC ; CODE XREF: sub_D4130AC+44j
- STRB R3, [R4,R1]
- SUBS R1, #1
- BPL loc_D4130EC
- loc_D4130F2 ; CODE XREF: sub_D4130AC+12j
- ; sub_D4130AC+38j ...
- POP {R4-R7}
- POP {R0}
- BX R0
- ; End of function sub_D4130AC
- ; =============== S U B R O U T I N E =======================================
- sub_D4130F8 ; CODE XREF: sub_D412438+32p
- ; sub_D412438+44p ...
- PUSH {R4-R7,LR}
- MOVS R7, R0
- MOVS R6, R1
- MOVS R5, R2
- MOVS R4, #0
- SUBS R2, R3, #1
- CMP R4, R6
- BGE loc_D413144
- CMP R2, #0
- BLT loc_D413132
- loc_D41310C ; CODE XREF: sub_D4130F8+38j
- MOVS R0, #0
- MOVS R1, #0
- CMP R2, #0
- BLT loc_D413124
- loc_D413114 ; CODE XREF: sub_D4130F8+2Aj
- LDRB R3, [R5,R2]
- LSLS R3, R1
- ORRS R0, R3
- ADDS R1, #8
- SUBS R2, #1
- BMI loc_D413124
- CMP R1, #0x1F
- BLE loc_D413114
- loc_D413124 ; CODE XREF: sub_D4130F8+1Aj
- ; sub_D4130F8+26j
- LSLS R3, R4, #2
- STR R0, [R3,R7]
- ADDS R4, #1
- CMP R4, R6
- BGE loc_D413144
- CMP R2, #0
- BGE loc_D41310C
- loc_D413132 ; CODE XREF: sub_D4130F8+12j
- CMP R4, R6
- BGE loc_D413144
- MOVS R2, #0
- loc_D413138 ; CODE XREF: sub_D4130F8+4Aj
- LSLS R3, R4, #2
- ADDS R3, R3, R7
- STR R2, [R3]
- ADDS R4, #1
- CMP R4, R6
- BLT loc_D413138
- loc_D413144 ; CODE XREF: sub_D4130F8+Ej
- ; sub_D4130F8+34j ...
- POP {R4-R7}
- POP {R0}
- BX R0
- ; End of function sub_D4130F8
- ; ---------------------------------------------------------------------------
- ALIGN 4
- CODE32
- ; =============== S U B R O U T I N E =======================================
- sub_D41314C ; CODE XREF: sub_D412930+80p
- ; DATA XREF: sub_D412930+78o ...
- MOV R12, SP
- STMFD SP!, {R4-R7,LR}
- CMP R2, #0
- MOVEQ R0, R2
- BEQ locret_D413190
- MOV R5, #0
- LDR LR, [R12]
- loc_D413168 ; CODE XREF: sub_D41314C+3Cj
- MOV R4, #0
- LDR R6, [R3],#4
- LDR R7, [R1],#4
- UMLAL R5, R4, R2, R6
- ADDS R5, R5, R7
- STR R5, [R0],#4
- ADC R5, R4, #0
- SUBS LR, LR, #1
- BGT loc_D413168
- MOV R0, R5
- locret_D413190 ; CODE XREF: sub_D41314C+10j
- LDMFD SP!, {R4-R7,PC}
- ; End of function sub_D41314C
- ; =============== S U B R O U T I N E =======================================
- sub_D413194 ; CODE XREF: sub_D412AE0+104p
- ; DATA XREF: sub_D412AE0+FCo ...
- MOV R12, SP
- STMFD SP!, {R4-R7,LR}
- CMP R2, #0
- MOVEQ R0, R2
- BEQ locret_D4131DC
- MOV R5, #0
- LDR LR, [R12]
- loc_D4131B0 ; CODE XREF: sub_D413194+40j
- MOV R4, #0
- LDR R6, [R3],#4
- LDR R7, [R1],#4
- UMLAL R5, R4, R2, R6
- SUBS R5, R7, R5
- STR R5, [R0],#4
- ADDCC R5, R4, #1
- MOVCS R5, R4
- SUBS LR, LR, #1
- BGT loc_D4131B0
- MOV R0, R5
- locret_D4131DC ; CODE XREF: sub_D413194+10j
- LDMFD SP!, {R4-R7,PC}
- ; End of function sub_D413194
- ; =============== S U B R O U T I N E =======================================
- sub_D4131E0 ; CODE XREF: sub_D412AE0+4Cp
- ; DATA XREF: sub_D412AE0+44o ...
- CLZ R0, R0
- RSB R0, R0, #0x20
- BX LR
- ; End of function sub_D4131E0
- CODE16
- ; =============== S U B R O U T I N E =======================================
- sub_D4131EC ; CODE XREF: sub_D412668+48p
- ; sub_D412668+F4p
- ; DATA XREF: ...
- CMP R1, #0
- BEQ loc_D41325A
- MOVS R3, #1
- MOVS R2, #0
- PUSH {R4}
- CMP R0, R1
- BCC loc_D413254
- MOVS R4, #0x10000000
- loc_D4131FE ; CODE XREF: sub_D4131EC+1Ej
- CMP R1, R4
- BCS loc_D41320C
- CMP R1, R0
- BCS loc_D41320C
- LSLS R1, R1, #4
- LSLS R3, R3, #4
- B loc_D4131FE
- ; ---------------------------------------------------------------------------
- loc_D41320C ; CODE XREF: sub_D4131EC+14j
- ; sub_D4131EC+18j
- LSLS R4, R4, #3
- loc_D41320E ; CODE XREF: sub_D4131EC+2Ej
- CMP R1, R4
- BCS loc_D41321C
- CMP R1, R0
- BCS loc_D41321C
- LSLS R1, R1, #1
- LSLS R3, R3, #1
- B loc_D41320E
- ; ---------------------------------------------------------------------------
- loc_D41321C ; CODE XREF: sub_D4131EC+24j
- ; sub_D4131EC+28j ...
- CMP R0, R1
- BCC loc_D413224
- SUBS R0, R0, R1
- ORRS R2, R3
- loc_D413224 ; CODE XREF: sub_D4131EC+32j
- LSRS R4, R1, #1
- CMP R0, R4
- BCC loc_D413230
- SUBS R0, R0, R4
- LSRS R4, R3, #1
- ORRS R2, R4
- loc_D413230 ; CODE XREF: sub_D4131EC+3Cj
- LSRS R4, R1, #2
- CMP R0, R4
- BCC loc_D41323C
- SUBS R0, R0, R4
- LSRS R4, R3, #2
- ORRS R2, R4
- loc_D41323C ; CODE XREF: sub_D4131EC+48j
- LSRS R4, R1, #3
- CMP R0, R4
- BCC loc_D413248
- SUBS R0, R0, R4
- LSRS R4, R3, #3
- ORRS R2, R4
- loc_D413248 ; CODE XREF: sub_D4131EC+54j
- CMP R0, #0
- BEQ loc_D413254
- LSRS R3, R3, #4
- BEQ loc_D413254
- LSRS R1, R1, #4
- B loc_D41321C
- ; ---------------------------------------------------------------------------
- loc_D413254 ; CODE XREF: sub_D4131EC+Cj
- ; sub_D4131EC+5Ej ...
- MOVS R0, R2
- POP {R4}
- BX LR
- ; ---------------------------------------------------------------------------
- loc_D41325A ; CODE XREF: sub_D4131EC+2j
- PUSH {LR}
- BL nullsub_2
- MOVS R0, #0
- POP {PC}
- ; End of function sub_D4131EC
- ; [00000002 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD CTRL-"+" TO EXPAND]
- ALIGN 4
- ; =============== S U B R O U T I N E =======================================
- sub_D413268 ; CODE XREF: sub_D412060+12p
- var_24 = -0x24
- var_20 = -0x20
- var_1C = -0x1C
- var_18 = -0x18
- PUSH {R4-R7,LR}
- SUB SP, SP, #0x10
- MOVS R5, #0
- MOVS R4, #0
- STR R0, [SP,#0x24+var_1C]
- STR R1, [SP,#0x24+var_18]
- STR R4, [SP,#0x24+var_24]
- STR R5, [SP,#0x24+var_20]
- MOVS R6, R3
- MOVS R5, R2
- LDR R2, =0xFFFF
- LDR R3, [SP,#0x24+var_18]
- MOVS R1, R2
- ANDS R1, R3
- LSRS R0, R3, #0x10
- MOVS R3, R2
- ANDS R3, R6
- MOVS R7, R3
- MULS R7, R1
- MOV R12, R2
- LSRS R2, R6, #0x10
- MOVS R4, R2
- MULS R4, R1
- MOVS R1, R3
- MULS R1, R0
- LSRS R3, R7, #0x10
- ADDS R4, R4, R3
- ADDS R4, R4, R1
- MULS R2, R0
- CMP R4, R1
- BCS loc_D4132AC
- MOVS R3, #0x10000
- ADDS R2, R2, R3
- loc_D4132AC ; CODE XREF: sub_D413268+3Cj
- LSRS R3, R4, #0x10
- ADDS R2, R3, R2
- STR R2, [SP,#0x24+var_24]
- MOV R2, R12
- ANDS R4, R2
- LSLS R3, R4, #0x10
- LDR R4, [SP,#0x24+var_18]
- ANDS R7, R2
- ADDS R7, R3, R7
- MOVS R3, R5
- MULS R3, R4
- LDR R4, [SP,#0x24+var_1C]
- MOVS R2, R6
- MULS R2, R4
- STR R7, [SP,#0x24+var_20]
- LDR R0, [SP,#0x24+var_24]
- LDR R1, [SP,#0x24+var_20]
- ADDS R3, R3, R2
- ADDS R0, R3, R0
- ADD SP, SP, #0x10
- POP {R4-R7}
- POP {R2}
- BX R2
- ; End of function sub_D413268
- ; ---------------------------------------------------------------------------
- ALIGN 4
- dword_D4132DC DCD 0xFFFF ; DATA XREF: sub_D413268+14r
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: thunk
- sub_D4132E0 ; CODE XREF: CalcSHA_And_RSA+20p
- ; CalcSHA_And_RSA+30p ...
- BX PC
- ; ---------------------------------------------------------------------------
- ALIGN 4
- CODE32
- loc_D4132E4 ; CODE XREF: sub_D4132E0j
- B sub_D411B98
- ; End of function sub_D4132E0
- CODE16
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: thunk
- sub_D4132E8 ; CODE XREF: Main+47Ep
- BX PC
- ; ---------------------------------------------------------------------------
- ALIGN 4
- CODE32
- loc_D4132EC ; CODE XREF: sub_D4132E8j
- B sub_D412024
- ; End of function sub_D4132E8
- CODE16
- ; =============== S U B R O U T I N E =======================================
- ; Attributes: thunk
- sub_D4132F0 ; CODE XREF: CheckBuffer_Maybe+AAp
- BX PC
- ; ---------------------------------------------------------------------------
- ALIGN 4
- CODE32
- loc_D4132F4 ; CODE XREF: sub_D4132F0j
- B sub_D411B48
- ; End of function sub_D4132F0
- ; ---------------------------------------------------------------------------
- ALIGN 0x10
- jpt_D410E58 DCD def_D410E58 ; DATA XREF: sub_D410E4C+6o
- ; SRAM:off_D410E70o
- ; jump table for switch statement
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
- DCD loc_D410E6C ; jumptable 0D410E58 cases 2,9,10
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E60 ; jumptable 0D410E58 cases 7,12,28,29,38
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD def_D410E58 ; jumptable 0D410E58 default case
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- DCD loc_D410E64 ; jumptable 0D410E58 cases 3,6,13,16-18,22-25,27,30,33,41,42,51-53,55,56
- jpt_D41236E DCD loc_D4123AC ; DATA XREF: SRAM:0D412368o
- ; SRAM:off_D4123ECo
- ; jump table for switch statement
- DCD loc_D4123AC ; jumptable 0D41236E cases 0,1,11
- DCD loc_D4123CA ; jumptable 0D41236E cases 2,6
- DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
- DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
- DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
- DCD loc_D4123CA ; jumptable 0D41236E cases 2,6
- DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
- DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
- DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
- DCD loc_D4123CE ; jumptable 0D41236E cases 3,7-10
- DCD loc_D4123AC ; jumptable 0D41236E cases 0,1,11
- DCD loc_D4123D2 ; jumptable 0D41236E cases 4,5,12
- jpt_D4123B4 DCD loc_D4123C6 ; DATA XREF: SRAM:loc_D4123AEo
- ; SRAM:off_D4123FCo
- ; jump table for switch statement
- DCD loc_D4123C2 ; jumptable 0D4123B4 case 14
- DCD loc_D4123BE ; jumptable 0D4123B4 case 15
- DCD loc_D4123BA ; jumptable 0D4123B4 case 16
- DCD loc_D4123B6 ; jumptable 0D4123B4 case 17
- aErrorAhbmemflu DCB "ERROR: ahbMemFlush(0x%x) did not ack!",0xA,0
- ; DATA XREF: SRAM:0D4123E4o
- ; SRAM:off_D412400o
- DCB 0
- StackSize DCD 0x1000 ; DATA XREF: Boot0_Start+44o
- ; Boot0_Start+48r ...
- SDHC_REG_BASE DCD 0xD070000 ; DATA XREF: sub_D410E28o
- ; SRAM:off_D410E48o ...
- SDWIFI_REG_BASE DCD 0xD080000
- dword_D413460 DCD 0xFA ; DATA XREF: sub_D411774o
- ; sub_D411774+2w ...
- ALIGN 0x20
- RSA_Exponent DCD 0x10001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: CalcSHA_And_RSA+52o
- ; SRAM:off_D4102F4o
- DCD 0
- RSA_PUB_0 DCD 0x7F0A36D1, 0x3E32C3, 0xDCA663, 0x282522B, 0x5A992501
- ; DATA XREF: Main+5BCo
- ; SRAM:off_D410B20o
- DCD 0x11EF9CF, 0x88D1BF94, 0x69198E3C, 0x8AF95D8C, 0x8C78167
- DCD 0x722E769F, 0x638B0EA7, 0x3B2D2ABA, 0xF716FDE2, 0x44B62537
- DCD 0x9581824E, 0x540E6209, 0xF9B639FF, 0x51B5DFC5, 0x974BD6CC
- DCD 0x4244D019, 0xFFEF6F6A, 0x9BF1C752, 0xCB057A18, 0x2424B569
- DCD 0xFFA079AC, 0xD18BFD75, 0x1B29D8B9, 0xEB395C1E, 0xA075D6B1
- DCD 0x26B3A325, 0x4C0875D8, 0x7317E7E3, 0x19CD5290, 0xC50C4EE
- DCD 0xE2A85999, 0x1F842A14, 0xEAD7FE21, 0xA35EECAA, 0xD635B68F
- DCD 0xF8336DC2, 0x645D1814, 0x84A62ADA, 0x8CD109B2, 0x398BDC24
- DCD 0x14204465, 0xD8086367, 0xC37B60E4, 0xC701A724, 0x5799C4D0
- DCD 0xCEFD1E7D, 0xF9B0E83A, 0x196C0B14, 0x426AF63D, 0xAA652951
- DCD 0x1AF30477, 0x68902EFF, 0x4A2A9F77, 0x523D5702, 0xCCC8BFF8
- DCD 0xD919249F, 0x6645C1C, 0xCC28060C, 0xFBEFE33D
- RSA_PUB_1 DCD 0x9E2109BB, 0xE6D77252, 0x33DB6E7C, 0x6C31A097, 0x304FFCE7
- ; DATA XREF: Main+5A8o
- ; SRAM:off_D410B1Co
- DCD 0x8BEF6CAD, 0xA3C52C28, 0x4730F448, 0x86BCD63C, 0x459EA1C8
- DCD 0xEEE45165, 0x33BA3D43, 0xA869237E, 0x79274261, 0x808613D5
- DCD 0x8328E5AC, 0x7F8D9E8A, 0x877C8F96, 0xD22A8A6A, 0xA8F39790
- DCD 0x281D5729, 0x30492A8E, 0xF1D18FCC, 0x42F4F591, 0x26A2DB54
- DCD 0xC9988726, 0xF9183080, 0x9608243, 0xC7BB8423, 0x68366936
- DCD 0xB2A8003, 0x6D4C0606, 0x68759F37, 0x278D3C7C, 0x280C14E7
- DCD 0x7A1DC7D7, 0x4B7AB79F, 0xA2925749, 0xA198FE8B, 0x67888CBF
- DCD 0xE9CB15D4, 0x9CE8EA36, 0xB23C747F, 0xBC81AC19, 0xE28A8D3C
- DCD 0x1512B8, 0xE48D7991, 0xB05B228, 0x6F7B2BD, 0x8DBB1D86
- DCD 0x9D4F1B2D, 0xC5745717, 0x7436B551, 0xA466811B, 0xC7EEB779
- DCD 0x5B7F905F, 0xABA7D396, 0xF312385B, 0x9717A01D, 0x83534580
- DCD 0xD16944B7, 0x399AE52C, 0xCCF23D38, 0xD53DF7FB
- AES_IV DCB 0x4F, 0xCD, 0x24, 0xA0, 0xE4, 0xD3, 0xAB, 0x6F, 0xAE
- ; DATA XREF: AES_Decrypt+1Eo SRAM:IVo
- DCB 0x8D, 0xFD, 0x81, 8, 0x58, 0x1D, 0xCF
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- SHA1_HASH DCD 0x302130, 0x906052B, 0xE03021A, 0x5000414, 0, 0, 0
- ; DATA XREF: sub_D412438+CCo
- ; SRAM:off_D412584o
- DCD 0
- dword_D413720 DCD 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Boot0_Start+18o
- ; SRAM:off_D410124o
- dword_D413740 DCD 0 ; DATA XREF: Main+24Eo Main+250w ...
- dword_D413744 DCD 0 ; DATA XREF: CalcSHA_And_RSA+CEo
- ; CalcSHA_And_RSA+D2r ...
- dword_D413748 DCD 0 ; DATA XREF: Main+23Co Main+23Ew ...
- dword_D41374C DCD 0 ; DATA XREF: Main+230o Main+232w ...
- dword_D413750 DCD 0 ; DATA XREF: Main+224o Main+226w ...
- dword_D413754 DCD 0 ; DATA XREF: Main+21Co Main+222w ...
- OTP_102 DCD 0 ; DATA XREF: Main+F0o
- ; SRAM:off_D410724o
- OTP_101 DCD 0 ; DATA XREF: Main+E4o Main+11Cr ...
- OTP_100 DCD 0 ; DATA XREF: Main+D6o
- ; SRAM:OutputBuffero
- dword_D413764 DCD 0 ; DATA XREF: CalcSHA_And_RSA:loc_D41023Eo
- ; CalcSHA_And_RSA+AEr ...
- HW_Time_Start DCD 0 ; DATA XREF: CalcSHA_And_RSA:loc_D41025Ao
- ; CalcSHA_And_RSA+C8r ...
- OTP_200 DCB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Main+FEo
- ; Main+322o ...
- AES_Key_1 DCB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; DATA XREF: Main+10Co
- ; Main+318o ...
- word_D41378C DCW 0 ; DATA XREF: Main+1DAo
- ; Main:loc_D41059Eo ...
- word_D41378E DCW 0 ; DATA XREF: Main+220r
- word_D413790 DCW 0 ; DATA XREF: Main+228r
- word_D413792 DCW 0 ; DATA XREF: Main+22Ar
- word_D413794 DCW 0 ; DATA XREF: Main+234r
- word_D413796 DCW 0 ; DATA XREF: Main+236r
- word_D413798 DCW 0 ; DATA XREF: Main:loc_D4106DAr
- word_D41379A DCW 0 ; DATA XREF: Main+35Cr
- word_D41379C DCW 0 ; DATA XREF: Main+1E6o
- ; SRAM:off_D410758o ...
- word_D41379E DCW 0 ; DATA XREF: Main+4CAr
- DCD 0, 0, 0
- word_D4137AC DCW 0 ; DATA XREF: Main+4B8r
- DCW 0
- ALIGN 0x20
- dword_D4137C0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: CalcSHA_And_RSA+8o
- ; SRAM:off_D4102E4o
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- word_D413940 DCW 0 ; DATA XREF: CalcSHA_And_RSA+24o
- ; CalcSHA_And_RSA+5Cr ...
- byte_D413942 DCB 0 ; DATA XREF: CalcSHA_And_RSA+68r
- DCB 0
- DCD 0, 0
- dword_D41394C DCD 0 ; DATA XREF: Main+452r Main+6BAr
- dword_D413950 DCD 0, 0, 0, 0, 0, 0 ; DATA XREF: CalcSHA_And_RSA+124o
- ; SRAM:off_D41030Co
- DCB 0
- DCB 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- dword_D4139A0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: CalcSHA_And_RSA:loc_D41028Ao
- ; CalcSHA_And_RSA+106o ...
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- AES_Control_Buffer DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: AES_Decrypt+1Co
- ; AES_Decrypt+3Ao ...
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0
- dword_D413B40 DCD 0, 0, 0, 0, 0 ; DATA XREF: CalcSHA_And_RSA+34o
- ; CalcSHA_And_RSA:loc_D4102AEo ...
- Dyn_AES_Key_Buffer DCD 0 ; DATA XREF: Main:loc_D410536o
- ; Main+1B6w ...
- AES_Key_Ptr DCD 0 ; DATA XREF: Main+1B8o Main+1BAw ...
- dword_D413B5C DCD 0 ; DATA XREF: Main:loc_D410542o
- ; Main+1C2w ...
- ALIGN 0x40
- dword_D413B80 DCD 0 ; DATA XREF: Set_HW_AESKey+16o
- ; Set_HW_AESKey+18w ...
- AES_Control_Buffer_0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: Set_HW_AESKey+Co
- ; SRAM:off_D411900o ...
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- word_D413CC0 DCW 0 ; DATA XREF: AES_HW_Decrypt_0+14o
- ; AES_HW_Decrypt_0+2Cw ...
- DCW 0
- ALIGN 0x40
- AES_DEST_Buffer_0 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: AES_HW_Decrypt_0+42o
- ; AES_HW_Decrypt_0+4Ao ...
- dword_D413D40 DCD 0 ; DATA XREF: sub_D411CAC+2o
- ; sub_D411CAC+4r ...
- dword_D413D44 DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- ; DATA XREF: sub_D411C74+4o
- ; SRAM:off_D411CA8o ...
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- DCD 0, 0, 0, 0, 0
- ; ===========================================================================
- ; Segment type: Regular
- AREA GPIO, DATA, ALIGN=0
- ; ORG 0xD800000
- HW_IPC_PPCMSG % 4
- HW_IPC_PPCCTRL % 4
- HW_IPC_ARMMSG % 4
- HW_IPC_ARMCTRL % 4
- HW_TIMER % 4 ; DATA XREF: CalcSHA_And_RSA+Ao
- ; CalcSHA_And_RSA+132o ...
- HW_ALARM % 4
- HW_MEMMIRR % 4 ; DATA XREF: Main+46o Main+4Aw ...
- HW_EXICTRL % 4 ; DATA XREF: Main+C6o Main+C8r ...
- HW_GPIO1ENABLE % 4 ; DATA XREF: Main+2Er Main+36w ...
- HW_GPIO1OUT % 4 ; DATA XREF: SendGPIODebugOut+2o
- ; SRAM:off_D410160o ...
- HW_GPIO1DIR % 4 ; DATA XREF: Main+3Ar Main+3Ew ...
- HW_GPIO1IN % 4 ; DATA XREF: sub_D411810+66o
- ; SRAM:off_D4118D0o
- HW_GPIO1INTLVL % 4
- HW_GPIO1INTFLAG % 4
- HW_GPIO1INTENABLE % 4 ; DATA XREF: Main+618o Main+61Cr ...
- HW_GPIO_INMIR % 4
- HW_GPIO_OWNER % 4
- dword_D800100 % 4 ; DATA XREF: Boot0_Checks_Maybe+82o
- ; SRAM:off_D412314o
- % 4
- % 4
- dword_D80010C % 4 ; DATA XREF: Boot0_Checks_Maybe+9Eo
- ; SRAM:off_D412318o
- dword_D800110 % 4 ; DATA XREF: Boot0_Checks_Maybe+AAo
- ; SRAM:off_D41231Co
- dword_D800114 % 4 ; DATA XREF: Boot0_Checks_Maybe+B6o
- ; SRAM:off_D412320o
- dword_D800118 % 4 ; DATA XREF: Boot0_Checks_Maybe+C2o
- ; SRAM:off_D412324o
- dword_D80011C % 4 ; DATA XREF: Boot0_Checks_Maybe+CEo
- ; SRAM:off_D412328o
- dword_D800120 % 4 ; DATA XREF: Boot0_Checks_Maybe+D4o
- ; SRAM:off_D41232Co
- dword_D800130 % 4 ; DATA XREF: sub_D4120BC+Eo
- ; sub_D4120BC+32o ...
- dword_D800134 % 4 ; DATA XREF: Boot0_Checks_Maybe+F4o
- ; SRAM:off_D412334o
- dword_D800138 % 4 ; DATA XREF: sub_D4120BC+1Ao
- ; SRAM:off_D412100o
- dword_D800188 % 4 ; DATA XREF: Boot0_Checks_Maybe:loc_D41214Eo
- ; Boot0_Checks_Maybe+1C0o ...
- HW_BOOT0 % 4 ; DATA XREF: Main+20o Main+24r ...
- ; Maps boot0
- % 4
- HW_RESETS % 4 ; DATA XREF: Main+B0o Main+B4r ...
- % 4
- Unknown_OTP_State_Value % 4 ; DATA XREF: Main+11Eo Main+122r ...
- dword_D8001E4 % 4 ; DATA XREF: Main+136o Main+13Ar ...
- HW_OTP_COMMAND % 4 ; DATA XREF: Set_HW_OTP_Command_RDo
- ; SRAM:off_D410B54o ...
- HW_OTP_DATA % 4 ; DATA XREF: Read_From_OTP+42r
- HW_VERSION % 4 ; DATA XREF: sub_D4120BC+2o
- ; SRAM:off_D4120F8o
- dword_D80047C % 4 ; DATA XREF: Main+470o Main+476w ...
- dword_D800510 % 4 ; DATA XREF: Main:loc_D4108B4o
- ; Main+534r ...
- dword_D8005B4 % 4 ; DATA XREF: Main+9Ao Main+9Er ...
- % 1
- % 1
- % 10
- % 1
- dword_D8005BC % 4 ; DATA XREF: Main+478o Main+47Cw ...
- ; GC_EXI ends
- ; ===========================================================================
- ; Segment type: Regular
- AREA DRAMCtrl, DATA, ALIGN=0
- ; ORG 0xD8B0000
- % 1
- % 1
- % 1
- % 1
- % 1
- % 1
- % 1
- % 1
- unk_D8B0008 % 1 ; DATA XREF: Boot0_Checks_Maybe+E4o
- ; Boot0_Checks_Maybe:loc_D4122ACo ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement