mirror of
https://github.com/pret/pokediamond.git
synced 2026-10-01 12:56:48 -05:00
Merge branch 'master' of https://github.com/martmists/pokediamond into pikalax_work
This commit is contained in:
@@ -210,7 +210,9 @@ SECTIONS {
|
||||
FS_file.o (.text)
|
||||
FS_rom.o (.text)
|
||||
FS_overlay.o (.text)
|
||||
libdgt.o (.text)
|
||||
DGT_hash1.o (.text)
|
||||
DGT_hash2.o (.text)
|
||||
DGT_sha1s_arm4cw.o (.text)
|
||||
libcp.o (.text)
|
||||
libspi.o (.text)
|
||||
libpm.o (.text)
|
||||
|
||||
404
arm9/asm/DGT_hash1.s
Normal file
404
arm9/asm/DGT_hash1.s
Normal file
@@ -0,0 +1,404 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ProcessBlock
|
||||
ProcessBlock: ; 0x020D2798
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x4
|
||||
add r3, r0, #0x18
|
||||
ldr r5, [r0, #0x0]
|
||||
ldr r4, [r0, #0x4]
|
||||
ldr lr, [r0, #0x8]
|
||||
ldr r12, [r0, #0xc]
|
||||
ldr r2, _020D2B78 ; =0x02106900
|
||||
mov r8, r3
|
||||
mov r7, #0x0
|
||||
_020D27C0:
|
||||
mvn r1, r4
|
||||
and r6, r4, lr
|
||||
and r1, r1, r12
|
||||
orr r1, r6, r1
|
||||
ldr r6, [r8, #0x0]
|
||||
add r1, r5, r1
|
||||
ldr r5, [r2, #0x0]
|
||||
add r1, r6, r1
|
||||
add r5, r5, r1
|
||||
mov r1, r5, lsl #0x7
|
||||
orr r1, r1, r5, lsr #0x19
|
||||
add r5, r4, r1
|
||||
mvn r1, r5
|
||||
and r6, r5, r4
|
||||
and r1, r1, lr
|
||||
orr r1, r6, r1
|
||||
ldr r6, [r8, #0x4]
|
||||
add r1, r12, r1
|
||||
ldr r9, [r2, #0x4]
|
||||
add r1, r6, r1
|
||||
add r6, r9, r1
|
||||
mov r1, r6, lsl #0xc
|
||||
orr r1, r1, r6, lsr #0x14
|
||||
add r12, r5, r1
|
||||
mvn r1, r12
|
||||
and r6, r12, r5
|
||||
and r1, r1, r4
|
||||
orr r6, r6, r1
|
||||
add r1, r8, #0xc
|
||||
ldr r9, [r8, #0x8]
|
||||
add r6, lr, r6
|
||||
add r6, r9, r6
|
||||
ldr r9, [r2, #0x8]
|
||||
ldr r1, [r1, #0x0]
|
||||
add r10, r9, r6
|
||||
add r6, r2, #0xc
|
||||
ldr r6, [r6, #0x0]
|
||||
mov r9, r10, lsl #0x11
|
||||
orr r9, r9, r10, lsr #0xf
|
||||
add lr, r12, r9
|
||||
add r2, r2, #0x10
|
||||
add r8, r8, #0x10
|
||||
and r10, lr, r12
|
||||
mvn r9, lr
|
||||
and r9, r9, r5
|
||||
orr r9, r10, r9
|
||||
add r4, r4, r9
|
||||
add r1, r1, r4
|
||||
add r4, r6, r1
|
||||
mov r1, r4, lsl #0x16
|
||||
orr r1, r1, r4, lsr #0xa
|
||||
add r4, lr, r1
|
||||
add r7, r7, #0x1
|
||||
cmp r7, #0x4
|
||||
blt _020D27C0
|
||||
ldr r6, _020D2B7C ; =0x02106840
|
||||
mov r1, #0x0
|
||||
_020D28A4:
|
||||
mvn r7, r12
|
||||
ldr r9, [r6, #0x0]
|
||||
and r8, r4, r12
|
||||
and r7, lr, r7
|
||||
orr r7, r8, r7
|
||||
ldr r8, [r3, r9, lsl #0x2]
|
||||
add r5, r5, r7
|
||||
ldr r7, [r2, #0x0]
|
||||
add r5, r8, r5
|
||||
add r7, r7, r5
|
||||
mov r5, r7, lsl #0x5
|
||||
orr r5, r5, r7, lsr #0x1b
|
||||
add r5, r4, r5
|
||||
mvn r8, lr
|
||||
ldr r7, [r6, #0x4]
|
||||
and r9, r5, lr
|
||||
and r8, r4, r8
|
||||
orr r10, r9, r8
|
||||
mvn r8, r4
|
||||
ldr r9, [r6, #0x8]
|
||||
ldr r11, [r3, r7, lsl #0x2]
|
||||
add r7, r12, r10
|
||||
add r10, r11, r7
|
||||
add r7, r6, #0xc
|
||||
ldr r9, [r3, r9, lsl #0x2]
|
||||
and r8, r5, r8
|
||||
ldr r7, [r7, #0x0]
|
||||
ldr r11, [r2, #0x4]
|
||||
ldr r7, [r3, r7, lsl #0x2]
|
||||
add r11, r11, r10
|
||||
mov r10, r11, lsl #0x9
|
||||
orr r10, r10, r11, lsr #0x17
|
||||
add r12, r5, r10
|
||||
ldr r10, [r2, #0x8]
|
||||
and r11, r12, r4
|
||||
orr r8, r11, r8
|
||||
add r8, lr, r8
|
||||
add r8, r9, r8
|
||||
add r10, r10, r8
|
||||
add r8, r2, #0xc
|
||||
ldr r8, [r8, #0x0]
|
||||
mov r9, r10, lsl #0xe
|
||||
orr r9, r9, r10, lsr #0x12
|
||||
add lr, r12, r9
|
||||
add r2, r2, #0x10
|
||||
add r6, r6, #0x10
|
||||
and r10, lr, r5
|
||||
mvn r9, r5
|
||||
and r9, r12, r9
|
||||
orr r9, r10, r9
|
||||
add r4, r4, r9
|
||||
add r4, r7, r4
|
||||
add r7, r8, r4
|
||||
mov r4, r7, lsl #0x14
|
||||
orr r4, r4, r7, lsr #0xc
|
||||
add r4, lr, r4
|
||||
add r1, r1, #0x1
|
||||
cmp r1, #0x4
|
||||
blt _020D28A4
|
||||
mov r7, #0x0
|
||||
_020D2994:
|
||||
ldr r8, [r6, #0x0]
|
||||
eor r1, r4, lr
|
||||
eor r1, r12, r1
|
||||
add r1, r5, r1
|
||||
ldr r8, [r3, r8, lsl #0x2]
|
||||
ldr r5, [r2, #0x0]
|
||||
add r1, r8, r1
|
||||
add r5, r5, r1
|
||||
mov r1, r5, lsl #0x4
|
||||
orr r1, r1, r5, lsr #0x1c
|
||||
add r5, r4, r1
|
||||
ldr r8, [r6, #0x4]
|
||||
eor r1, r5, r4
|
||||
eor r1, lr, r1
|
||||
ldr r8, [r3, r8, lsl #0x2]
|
||||
add r1, r12, r1
|
||||
ldr r9, [r6, #0x8]
|
||||
ldr r10, [r2, #0x4]
|
||||
add r1, r8, r1
|
||||
add r8, r10, r1
|
||||
mov r1, r8, lsl #0xb
|
||||
orr r1, r1, r8, lsr #0x15
|
||||
add r12, r5, r1
|
||||
eor r8, r12, r5
|
||||
eor r8, r4, r8
|
||||
ldr r9, [r3, r9, lsl #0x2]
|
||||
add r8, lr, r8
|
||||
add r9, r9, r8
|
||||
ldr r10, [r2, #0x8]
|
||||
add r1, r2, #0xc
|
||||
ldr r8, [r6, #0xc]
|
||||
add r10, r10, r9
|
||||
ldr r9, [r3, r8, lsl #0x2]
|
||||
mov r8, r10, lsl #0x10
|
||||
orr r8, r8, r10, lsr #0x10
|
||||
add lr, r12, r8
|
||||
eor r8, lr, r12
|
||||
eor r8, r5, r8
|
||||
add r4, r4, r8
|
||||
add r7, r7, #0x1
|
||||
ldr r1, [r1, #0x0]
|
||||
add r4, r9, r4
|
||||
add r4, r1, r4
|
||||
mov r1, r4, lsl #0x17
|
||||
orr r1, r1, r4, lsr #0x9
|
||||
add r2, r2, #0x10
|
||||
add r6, r6, #0x10
|
||||
add r4, lr, r1
|
||||
cmp r7, #0x4
|
||||
blt _020D2994
|
||||
mov r10, #0x0
|
||||
_020D2A60:
|
||||
mvn r1, r12
|
||||
ldr r7, [r6, #0x0]
|
||||
orr r1, r4, r1
|
||||
eor r1, lr, r1
|
||||
ldr r7, [r3, r7, lsl #0x2]
|
||||
add r1, r5, r1
|
||||
ldr r5, [r2, #0x0]
|
||||
add r1, r7, r1
|
||||
add r5, r5, r1
|
||||
mov r1, r5, lsl #0x6
|
||||
orr r1, r1, r5, lsr #0x1a
|
||||
add r5, r4, r1
|
||||
mvn r1, lr
|
||||
ldr r7, [r6, #0x4]
|
||||
orr r1, r5, r1
|
||||
eor r1, r4, r1
|
||||
ldr r8, [r6, #0x8]
|
||||
ldr r7, [r3, r7, lsl #0x2]
|
||||
add r1, r12, r1
|
||||
ldr r9, [r2, #0x4]
|
||||
add r1, r7, r1
|
||||
add r9, r9, r1
|
||||
mov r7, r9, lsl #0xa
|
||||
add r1, r6, #0xc
|
||||
orr r9, r7, r9, lsr #0x16
|
||||
ldr r1, [r1, #0x0]
|
||||
add r7, r2, #0xc
|
||||
add r12, r5, r9
|
||||
ldr r8, [r3, r8, lsl #0x2]
|
||||
ldr r7, [r7, #0x0]
|
||||
ldr r1, [r3, r1, lsl #0x2]
|
||||
ldr r9, [r2, #0x8]
|
||||
mvn r11, r4
|
||||
orr r11, r12, r11
|
||||
eor r11, r5, r11
|
||||
add r11, lr, r11
|
||||
add r8, r8, r11
|
||||
add r9, r9, r8
|
||||
mov r8, r9, lsl #0xf
|
||||
orr r8, r8, r9, lsr #0x11
|
||||
add lr, r12, r8
|
||||
add r2, r2, #0x10
|
||||
add r6, r6, #0x10
|
||||
mvn r8, r5
|
||||
orr r8, lr, r8
|
||||
eor r8, r12, r8
|
||||
add r4, r4, r8
|
||||
add r1, r1, r4
|
||||
add r4, r7, r1
|
||||
mov r1, r4, lsl #0x15
|
||||
orr r1, r1, r4, lsr #0xb
|
||||
add r4, lr, r1
|
||||
add r10, r10, #0x1
|
||||
cmp r10, #0x4
|
||||
blt _020D2A60
|
||||
ldr r1, [r0, #0x0]
|
||||
add r1, r1, r5
|
||||
str r1, [r0, #0x0]
|
||||
ldr r1, [r0, #0x4]
|
||||
add r1, r1, r4
|
||||
str r1, [r0, #0x4]
|
||||
ldr r1, [r0, #0x8]
|
||||
add r1, r1, lr
|
||||
str r1, [r0, #0x8]
|
||||
ldr r1, [r0, #0xc]
|
||||
add r1, r1, r12
|
||||
str r1, [r0, #0xc]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r11,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D2B78: .word Unk_02106900 ; = 0x02106900
|
||||
_020D2B7C: .word Unk_02106840 ; = 0x02106840
|
||||
|
||||
arm_func_start DGT_Hash1GetDigest_R
|
||||
DGT_Hash1GetDigest_R: ; 0x020D2B80
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r6, r1
|
||||
ldr r1, [r6, #0x14]
|
||||
ldr r3, [r6, #0x10]
|
||||
mov r7, r0
|
||||
mov r4, r1, lsl #0x3
|
||||
ldr r1, _020D2C40 ; =0x0210683C
|
||||
mov r0, r6
|
||||
mov r2, #0x1
|
||||
orr r4, r4, r3, lsr #0x1d
|
||||
mov r5, r3, lsl #0x3
|
||||
bl DGT_Hash1SetSource
|
||||
ldr r0, [r6, #0x10]
|
||||
mov r1, #0x0
|
||||
and r3, r0, #0x3f
|
||||
rsb r2, r3, #0x40
|
||||
cmp r2, #0x8
|
||||
bhs _020D2BE8
|
||||
add r0, r6, #0x18
|
||||
add r0, r0, r3
|
||||
bl MI_CpuFill8
|
||||
mov r0, r6
|
||||
bl ProcessBlock
|
||||
mov r3, #0x0
|
||||
mov r2, #0x40
|
||||
_020D2BE8:
|
||||
cmp r2, #0x8
|
||||
bls _020D2C04
|
||||
add r0, r6, #0x18
|
||||
add r0, r0, r3
|
||||
sub r2, r2, #0x8
|
||||
mov r1, #0x0
|
||||
bl MI_CpuFill8
|
||||
_020D2C04:
|
||||
str r5, [r6, #0x50]
|
||||
mov r0, r6
|
||||
str r4, [r6, #0x54]
|
||||
bl ProcessBlock
|
||||
mov r0, r6
|
||||
mov r1, r7
|
||||
mov r2, #0x10
|
||||
bl MI_CpuCopy8
|
||||
mov r0, r6
|
||||
mov r1, #0x0
|
||||
mov r2, #0x58
|
||||
bl MI_CpuFill8
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D2C40: .word Unk_0210683C ; = 0x0210683C
|
||||
|
||||
arm_func_start DGT_Hash1SetSource
|
||||
DGT_Hash1SetSource: ; 0x020D2C44
|
||||
stmdb sp!, {r4-r9,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r8, r0
|
||||
add r12, r8, #0x10
|
||||
ldr r4, [r8, #0x10]
|
||||
mov r6, r2
|
||||
and r3, r4, #0x3f
|
||||
ldr r0, [r12, #0x4]
|
||||
adds r4, r4, r6
|
||||
str r4, [r8, #0x10]
|
||||
adc r0, r0, #0x0
|
||||
rsb r5, r3, #0x40
|
||||
mov r7, r1
|
||||
str r0, [r12, #0x4]
|
||||
cmp r5, r6
|
||||
bls _020D2CB0
|
||||
cmp r6, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
add r1, r8, #0x18
|
||||
mov r0, r7
|
||||
add r1, r1, r3
|
||||
bl MI_CpuCopy8
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r9,lr}
|
||||
bx lr
|
||||
_020D2CB0:
|
||||
add r1, r8, #0x18
|
||||
mov r0, r7
|
||||
mov r2, r5
|
||||
add r1, r1, r3
|
||||
bl MI_CpuCopy8
|
||||
mov r0, r8
|
||||
bl ProcessBlock
|
||||
sub r6, r6, r5
|
||||
mov r4, r6, lsr #0x6
|
||||
cmp r4, #0x0
|
||||
add r9, r7, r5
|
||||
ble _020D2D10
|
||||
add r7, r8, #0x18
|
||||
mov r5, #0x40
|
||||
_020D2CE8:
|
||||
mov r0, r9
|
||||
mov r1, r7
|
||||
mov r2, r5
|
||||
bl MI_CpuCopy8
|
||||
mov r0, r8
|
||||
add r9, r9, #0x40
|
||||
bl ProcessBlock
|
||||
sub r4, r4, #0x1
|
||||
cmp r4, #0x0
|
||||
bgt _020D2CE8
|
||||
_020D2D10:
|
||||
ands r2, r6, #0x3f
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
mov r0, r9
|
||||
add r1, r8, #0x18
|
||||
bl MI_CpuCopy8
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r9,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start DGT_Hash1Reset
|
||||
DGT_Hash1Reset: ; 0x020D2D38
|
||||
ldr r2, _020D2D68 ; =0x67452301
|
||||
ldr r1, _020D2D6C ; =0xEFCDAB89
|
||||
str r2, [r0, #0x0]
|
||||
ldr r2, _020D2D70 ; =0x98BADCFE
|
||||
str r1, [r0, #0x4]
|
||||
ldr r1, _020D2D74 ; =0x10325476
|
||||
str r2, [r0, #0x8]
|
||||
str r1, [r0, #0xc]
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x10]
|
||||
str r1, [r0, #0x14]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D2D68: .word 0x67452301
|
||||
_020D2D6C: .word 0xEFCDAB89
|
||||
_020D2D70: .word 0x98BADCFE
|
||||
_020D2D74: .word 0x10325476
|
||||
443
arm9/asm/DGT_hash2.s
Normal file
443
arm9/asm/DGT_hash2.s
Normal file
@@ -0,0 +1,443 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DGT_Hash2CalcHmac
|
||||
DGT_Hash2CalcHmac: ; 0x020D2D78
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
sub sp, sp, #0xa0
|
||||
ldr lr, _020D2E00 ; =0x02106A04
|
||||
add r12, sp, #0x1c
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, r3
|
||||
mov r4, r12
|
||||
ldmia lr!, {r0-r3}
|
||||
stmia r12!, {r0-r3}
|
||||
ldmia lr, {r0-r2}
|
||||
stmia r12, {r0-r2}
|
||||
add lr, sp, #0x38
|
||||
add r12, sp, #0x8
|
||||
str lr, [sp, #0x24]
|
||||
ldr lr, _020D2E04 ; =DGT_Hash2Reset
|
||||
str r12, [sp, #0x28]
|
||||
ldr ip, _020D2E08 ; =DGT_Hash2SetSource
|
||||
str lr, [sp, #0x2c]
|
||||
ldr lr, _020D2E0C ; =DGT_Hash2GetDigest
|
||||
str r12, [sp, #0x30]
|
||||
ldr r12, [sp, #0xb8]
|
||||
str lr, [sp, #0x34]
|
||||
str r12, [sp, #0x0]
|
||||
mov r3, r5
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r6
|
||||
str r4, [sp, #0x4]
|
||||
bl DGTi_Hash2CalcHmac
|
||||
add sp, sp, #0xa0
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D2E00: .word Unk_02106A04 ; = 0x02106A04
|
||||
_020D2E04: .word DGT_Hash2Reset
|
||||
_020D2E08: .word DGT_Hash2SetSource
|
||||
_020D2E0C: .word DGT_Hash2GetDigest
|
||||
|
||||
arm_func_start DGT_Hash2GetDigest
|
||||
DGT_Hash2GetDigest: ; 0x020D2E10
|
||||
stmdb sp!, {r0-r3}
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r6, r1
|
||||
ldr r3, [r0, #0x1c]
|
||||
add r5, r0, #0x20
|
||||
ands r1, r3, #0x3
|
||||
mov r0, r3, asr #0x2
|
||||
moveq r1, #0x0
|
||||
streq r1, [r5, r0, lsl #0x2]
|
||||
ldr r2, [sp, #0x10]
|
||||
mov r1, #0x80
|
||||
add r4, r2, #0x20
|
||||
strb r1, [r4, r3]
|
||||
add r3, r3, #0x1
|
||||
ands r1, r3, #0x3
|
||||
beq _020D2E68
|
||||
mov r2, #0x0
|
||||
_020D2E58:
|
||||
strb r2, [r4, r3]
|
||||
add r3, r3, #0x1
|
||||
ands r1, r3, #0x3
|
||||
bne _020D2E58
|
||||
_020D2E68:
|
||||
ldr r1, [sp, #0x10]
|
||||
add r0, r0, #0x1
|
||||
ldr r1, [r1, #0x1c]
|
||||
cmp r1, #0x38
|
||||
blt _020D2EB4
|
||||
cmp r0, #0x10
|
||||
bge _020D2E98
|
||||
mov r1, #0x0
|
||||
_020D2E88:
|
||||
str r1, [r5, r0, lsl #0x2]
|
||||
add r0, r0, #0x1
|
||||
cmp r0, #0x10
|
||||
blt _020D2E88
|
||||
_020D2E98:
|
||||
ldr r1, _020D3008 ; =0x02106A00
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r3, [r1, #0x0]
|
||||
mov r1, r5
|
||||
mov r2, #0x40
|
||||
blx r3
|
||||
mov r0, #0x0
|
||||
_020D2EB4:
|
||||
cmp r0, #0xe
|
||||
bge _020D2ED0
|
||||
mov r1, #0x0
|
||||
_020D2EC0:
|
||||
str r1, [r5, r0, lsl #0x2]
|
||||
add r0, r0, #0x1
|
||||
cmp r0, #0xe
|
||||
blt _020D2EC0
|
||||
_020D2ED0:
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r1, r5
|
||||
ldr r2, [r0, #0x14]
|
||||
ldr r3, _020D3008 ; =0x02106A00
|
||||
strb r2, [r4, #0x3f]
|
||||
mov r0, r2, lsr #0x8
|
||||
strb r0, [r4, #0x3e]
|
||||
mov r0, r2, lsr #0x10
|
||||
strb r0, [r4, #0x3d]
|
||||
mov r0, r2, lsr #0x18
|
||||
strb r0, [r4, #0x3c]
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r2, #0x40
|
||||
ldr r5, [r0, #0x18]
|
||||
strb r5, [r4, #0x3b]
|
||||
mov r0, r5, lsr #0x8
|
||||
strb r0, [r4, #0x3a]
|
||||
mov r0, r5, lsr #0x10
|
||||
strb r0, [r4, #0x39]
|
||||
mov r0, r5, lsr #0x18
|
||||
strb r0, [r4, #0x38]
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r3, [r3, #0x0]
|
||||
blx r3
|
||||
ldr r0, [sp, #0x10]
|
||||
add r1, sp, #0x10
|
||||
ldr r3, [r0, #0x0]
|
||||
mov r0, #0x0
|
||||
mov r2, r3, lsr #0x18
|
||||
strb r2, [r6, #0x0]
|
||||
mov r2, r3, lsr #0x10
|
||||
strb r2, [r6, #0x1]
|
||||
mov r2, r3, lsr #0x8
|
||||
strb r2, [r6, #0x2]
|
||||
strb r3, [r6, #0x3]
|
||||
ldr r3, [sp, #0x10]
|
||||
mov r2, #0x4
|
||||
ldr r4, [r3, #0x4]
|
||||
mov r3, r4, lsr #0x18
|
||||
strb r3, [r6, #0x4]
|
||||
mov r3, r4, lsr #0x10
|
||||
strb r3, [r6, #0x5]
|
||||
mov r3, r4, lsr #0x8
|
||||
strb r3, [r6, #0x6]
|
||||
strb r4, [r6, #0x7]
|
||||
ldr r3, [sp, #0x10]
|
||||
ldr r4, [r3, #0x8]
|
||||
mov r3, r4, lsr #0x18
|
||||
strb r3, [r6, #0x8]
|
||||
mov r3, r4, lsr #0x10
|
||||
strb r3, [r6, #0x9]
|
||||
mov r3, r4, lsr #0x8
|
||||
strb r3, [r6, #0xa]
|
||||
strb r4, [r6, #0xb]
|
||||
ldr r3, [sp, #0x10]
|
||||
ldr r4, [r3, #0xc]
|
||||
mov r3, r4, lsr #0x18
|
||||
strb r3, [r6, #0xc]
|
||||
mov r3, r4, lsr #0x10
|
||||
strb r3, [r6, #0xd]
|
||||
mov r3, r4, lsr #0x8
|
||||
strb r3, [r6, #0xe]
|
||||
strb r4, [r6, #0xf]
|
||||
ldr r3, [sp, #0x10]
|
||||
ldr r4, [r3, #0x10]
|
||||
mov r3, r4, lsr #0x18
|
||||
strb r3, [r6, #0x10]
|
||||
mov r3, r4, lsr #0x10
|
||||
strb r3, [r6, #0x11]
|
||||
mov r3, r4, lsr #0x8
|
||||
strb r3, [r6, #0x12]
|
||||
strb r4, [r6, #0x13]
|
||||
ldr r3, [sp, #0x10]
|
||||
str r0, [r3, #0x1c]
|
||||
bl MIi_CpuClear32
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D3008: .word Unk_02106A00 ; = 0x02106A00
|
||||
|
||||
arm_func_start DGT_Hash2SetSource
|
||||
DGT_Hash2SetSource: ; 0x020D300C
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
mov r8, r0
|
||||
movs r6, r2
|
||||
mov r7, r1
|
||||
add r5, r8, #0x20
|
||||
ldmeqia sp!, {r4-r8,lr}
|
||||
bxeq lr
|
||||
ldr r0, [r8, #0x14]
|
||||
add r1, r0, r6, lsl #0x3
|
||||
cmp r1, r0
|
||||
ldrcc r0, [r8, #0x18]
|
||||
addcc r0, r0, #0x1
|
||||
strcc r0, [r8, #0x18]
|
||||
ldr r0, [r8, #0x18]
|
||||
add r0, r0, r6, lsr #0x1d
|
||||
str r0, [r8, #0x18]
|
||||
str r1, [r8, #0x14]
|
||||
ldr r1, [r8, #0x1c]
|
||||
cmp r1, #0x0
|
||||
beq _020D30CC
|
||||
add r0, r1, r6
|
||||
cmp r0, #0x40
|
||||
blo _020D30A8
|
||||
rsb r4, r1, #0x40
|
||||
mov r0, r7
|
||||
mov r2, r4
|
||||
add r1, r5, r1
|
||||
bl MI_CpuCopy8
|
||||
ldr r1, _020D3164 ; =0x02106A00
|
||||
mov r0, r8
|
||||
ldr r3, [r1, #0x0]
|
||||
mov r1, r5
|
||||
mov r2, #0x40
|
||||
sub r6, r6, r4
|
||||
add r7, r7, r4
|
||||
blx r3
|
||||
mov r0, #0x0
|
||||
str r0, [r8, #0x1c]
|
||||
b _020D30CC
|
||||
_020D30A8:
|
||||
mov r0, r7
|
||||
mov r2, r6
|
||||
add r1, r5, r1
|
||||
bl MI_CpuCopy8
|
||||
ldr r0, [r8, #0x1c]
|
||||
add r0, r0, r6
|
||||
str r0, [r8, #0x1c]
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020D30CC:
|
||||
cmp r6, #0x40
|
||||
blo _020D313C
|
||||
bic r4, r6, #0x3f
|
||||
sub r6, r6, r4
|
||||
ands r0, r7, #0x3
|
||||
bne _020D3104
|
||||
ldr r1, _020D3164 ; =0x02106A00
|
||||
mov r0, r8
|
||||
ldr r3, [r1, #0x0]
|
||||
mov r1, r7
|
||||
mov r2, r4
|
||||
blx r3
|
||||
add r7, r7, r4
|
||||
b _020D313C
|
||||
_020D3104:
|
||||
mov r0, r7
|
||||
mov r1, r5
|
||||
mov r2, #0x40
|
||||
bl MI_CpuCopy8
|
||||
ldr r1, _020D3164 ; =0x02106A00
|
||||
mov r0, r8
|
||||
ldr r3, [r1, #0x0]
|
||||
mov r1, r5
|
||||
mov r2, #0x40
|
||||
add r7, r7, #0x40
|
||||
blx r3
|
||||
sub r4, r4, #0x40
|
||||
cmp r4, #0x0
|
||||
bgt _020D3104
|
||||
_020D313C:
|
||||
str r6, [r8, #0x1c]
|
||||
cmp r6, #0x0
|
||||
ldmeqia sp!, {r4-r8,lr}
|
||||
bxeq lr
|
||||
mov r0, r7
|
||||
mov r1, r5
|
||||
mov r2, r6
|
||||
bl MI_CpuCopy8
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D3164: .word Unk_02106A00 ; = 0x02106A00
|
||||
|
||||
arm_func_start DGT_Hash2Reset
|
||||
DGT_Hash2Reset: ; 0x020D3168
|
||||
ldr r1, _020D31A4 ; =0x67452301
|
||||
ldr r2, _020D31A8 ; =0xEFCDAB89
|
||||
str r1, [r0, #0x0]
|
||||
ldr r1, _020D31AC ; =0x98BADCFE
|
||||
str r2, [r0, #0x4]
|
||||
ldr r2, _020D31B0 ; =0x10325476
|
||||
str r1, [r0, #0x8]
|
||||
ldr r1, _020D31B4 ; =0xC3D2E1F0
|
||||
str r2, [r0, #0xc]
|
||||
str r1, [r0, #0x10]
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x14]
|
||||
str r1, [r0, #0x18]
|
||||
str r1, [r0, #0x1c]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020D31A4: .word 0x67452301
|
||||
_020D31A8: .word 0xEFCDAB89
|
||||
_020D31AC: .word 0x98BADCFE
|
||||
_020D31B0: .word 0x10325476
|
||||
_020D31B4: .word 0xC3D2E1F0
|
||||
|
||||
arm_func_start DGTi_Hash2CalcHmac
|
||||
DGTi_Hash2CalcHmac: ; 0x020D31B8
|
||||
stmdb sp!, {r4-r9,lr}
|
||||
sub sp, sp, #0xc4
|
||||
ldr r5, [sp, #0xe0]
|
||||
ldr r4, [sp, #0xe4]
|
||||
movs r9, r0
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
cmp r8, #0x0
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
cmp r7, #0x0
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
cmp r6, #0x0
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
cmp r5, #0x0
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
cmp r4, #0x0
|
||||
addeq sp, sp, #0xc4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
ldr r0, [r4, #0x4]
|
||||
cmp r5, r0
|
||||
ble _020D3278
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r1, [r4, #0x10]
|
||||
blx r1
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r3, [r4, #0x14]
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
blx r3
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r2, [r4, #0x18]
|
||||
add r1, sp, #0x0
|
||||
blx r2
|
||||
ldr r5, [r4, #0x0]
|
||||
add r6, sp, #0x0
|
||||
_020D3278:
|
||||
cmp r5, #0x0
|
||||
mov r0, #0x0
|
||||
ble _020D32A0
|
||||
add r2, sp, #0x40
|
||||
_020D3288:
|
||||
ldrb r1, [r6, r0]
|
||||
add r0, r0, #0x1
|
||||
cmp r0, r5
|
||||
eor r1, r1, #0x36
|
||||
strb r1, [r2], #0x1
|
||||
blt _020D3288
|
||||
_020D32A0:
|
||||
ldr r1, [r4, #0x4]
|
||||
cmp r0, r1
|
||||
bge _020D32CC
|
||||
add r1, sp, #0x40
|
||||
add r3, r1, r0
|
||||
mov r2, #0x36
|
||||
_020D32B8:
|
||||
strb r2, [r3], #0x1
|
||||
ldr r1, [r4, #0x4]
|
||||
add r0, r0, #0x1
|
||||
cmp r0, r1
|
||||
blt _020D32B8
|
||||
_020D32CC:
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r1, [r4, #0x10]
|
||||
blx r1
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r2, [r4, #0x4]
|
||||
ldr r3, [r4, #0x14]
|
||||
add r1, sp, #0x40
|
||||
blx r3
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r3, [r4, #0x14]
|
||||
mov r1, r8
|
||||
mov r2, r7
|
||||
blx r3
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r1, [r4, #0xc]
|
||||
ldr r2, [r4, #0x18]
|
||||
blx r2
|
||||
cmp r5, #0x0
|
||||
mov r2, #0x0
|
||||
ble _020D3338
|
||||
add r1, sp, #0x80
|
||||
_020D3320:
|
||||
ldrb r0, [r6, r2]
|
||||
add r2, r2, #0x1
|
||||
cmp r2, r5
|
||||
eor r0, r0, #0x5c
|
||||
strb r0, [r1], #0x1
|
||||
blt _020D3320
|
||||
_020D3338:
|
||||
ldr r0, [r4, #0x4]
|
||||
cmp r2, r0
|
||||
bge _020D3364
|
||||
add r0, sp, #0x80
|
||||
add r3, r0, r2
|
||||
mov r1, #0x5c
|
||||
_020D3350:
|
||||
strb r1, [r3], #0x1
|
||||
ldr r0, [r4, #0x4]
|
||||
add r2, r2, #0x1
|
||||
cmp r2, r0
|
||||
blt _020D3350
|
||||
_020D3364:
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r1, [r4, #0x10]
|
||||
blx r1
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r2, [r4, #0x4]
|
||||
ldr r3, [r4, #0x14]
|
||||
add r1, sp, #0x80
|
||||
blx r3
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r1, [r4, #0xc]
|
||||
ldr r2, [r4, #0x0]
|
||||
ldr r3, [r4, #0x14]
|
||||
blx r3
|
||||
ldr r0, [r4, #0x8]
|
||||
ldr r2, [r4, #0x18]
|
||||
mov r1, r9
|
||||
blx r2
|
||||
add sp, sp, #0xc4
|
||||
ldmia sp!, {r4-r9,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
179
arm9/asm/DGT_sha1s_arm4cw.s
Normal file
179
arm9/asm/DGT_sha1s_arm4cw.s
Normal file
@@ -0,0 +1,179 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
_020D33B4: .word 0x00FF00FF
|
||||
_020D33B8: .word 0x5A827999
|
||||
_020D33BC: .word 0x6ED9EBA1
|
||||
_020D33C0: .word 0x8F1BBCDC
|
||||
_020D33C4: .word 0xCA62C1D6
|
||||
|
||||
arm_func_start DGTi_hash2_arm4_small
|
||||
DGTi_hash2_arm4_small: ; 0x020D33C8
|
||||
stmdb sp!, {r4-r12,lr}
|
||||
ldmia r0, {r3,r9-r12}
|
||||
sub sp, sp, #0x84
|
||||
str r2, [sp, #0x80]
|
||||
_020D33D8:
|
||||
ldr r8, _020D33B8 ; =0x5A827999
|
||||
ldr r7, _020D33B4 ; =0x00FF00FF
|
||||
mov r6, sp
|
||||
mov r5, #0x0
|
||||
_020D33E8:
|
||||
ldr r4, [r1], #0x4
|
||||
add r2, r8, r12
|
||||
add r2, r2, r3, ror #0x1B
|
||||
and lr, r4, r7
|
||||
and r4, r7, r4, ror #0x18
|
||||
orr r4, r4, lr, ror #0x8
|
||||
str r4, [r6, #0x40]
|
||||
str r4, [r6], #0x4
|
||||
add r2, r2, r4
|
||||
eor r4, r10, r11
|
||||
and r4, r4, r9
|
||||
eor r4, r4, r11
|
||||
add r2, r2, r4
|
||||
mov r9, r9, ror #0x2
|
||||
mov r12, r11
|
||||
mov r11, r10
|
||||
mov r10, r9
|
||||
mov r9, r3
|
||||
mov r3, r2
|
||||
add r5, r5, #0x4
|
||||
cmp r5, #0x40
|
||||
blt _020D33E8
|
||||
mov r7, #0x0
|
||||
mov r6, sp
|
||||
_020D3448:
|
||||
ldr r2, [r6, #0x0]
|
||||
ldr r5, [r6, #0x8]
|
||||
ldr r4, [r6, #0x20]
|
||||
ldr lr, [r6, #0x34]
|
||||
eor r2, r2, r5
|
||||
eor r4, r4, lr
|
||||
eor r2, r2, r4
|
||||
mov r2, r2, ror #0x1F
|
||||
str r2, [r6, #0x40]
|
||||
str r2, [r6], #0x4
|
||||
add r2, r2, r12
|
||||
add r2, r2, r8
|
||||
add r2, r2, r3, ror #0x1B
|
||||
eor r4, r10, r11
|
||||
and r4, r4, r9
|
||||
eor r4, r4, r11
|
||||
add r2, r2, r4
|
||||
mov r9, r9, ror #0x2
|
||||
mov r12, r11
|
||||
mov r11, r10
|
||||
mov r10, r9
|
||||
mov r9, r3
|
||||
mov r3, r2
|
||||
add r7, r7, #0x4
|
||||
cmp r7, #0x10
|
||||
blt _020D3448
|
||||
ldr r8, _020D33BC ; =0x6ED9EBA1
|
||||
mov r7, #0x0
|
||||
_020D34B8:
|
||||
ldr r2, [r6, #0x0]
|
||||
ldr r4, [r6, #0x8]
|
||||
ldr lr, [r6, #0x20]
|
||||
ldr r5, [r6, #0x34]
|
||||
eor r2, r2, r4
|
||||
eor lr, lr, r5
|
||||
eor r2, r2, lr
|
||||
mov r2, r2, ror #0x1F
|
||||
str r2, [r6, #0x40]
|
||||
str r2, [r6], #0x4
|
||||
add r2, r2, r12
|
||||
add r2, r2, r8
|
||||
add r2, r2, r3, ror #0x1B
|
||||
eor lr, r9, r10
|
||||
eor lr, lr, r11
|
||||
add r2, r2, lr
|
||||
mov r9, r9, ror #0x2
|
||||
mov r12, r11
|
||||
mov r11, r10
|
||||
mov r10, r9
|
||||
mov r9, r3
|
||||
mov r3, r2
|
||||
add r7, r7, #0x1
|
||||
cmp r7, #0xc
|
||||
moveq r6, sp
|
||||
cmp r7, #0x14
|
||||
blt _020D34B8
|
||||
ldr r8, _020D33C0 ; =0x8F1BBCDC
|
||||
mov r7, #0x0
|
||||
_020D352C:
|
||||
ldr r2, [r6, #0x0]
|
||||
ldr lr, [r6, #0x8]
|
||||
ldr r5, [r6, #0x20]
|
||||
ldr r4, [r6, #0x34]
|
||||
eor r2, r2, lr
|
||||
eor r5, r5, r4
|
||||
eor r2, r2, r5
|
||||
mov r2, r2, ror #0x1F
|
||||
str r2, [r6, #0x40]
|
||||
str r2, [r6], #0x4
|
||||
add r2, r2, r12
|
||||
add r2, r2, r8
|
||||
add r2, r2, r3, ror #0x1B
|
||||
orr r5, r9, r10
|
||||
and r5, r5, r11
|
||||
and r4, r9, r10
|
||||
orr r5, r5, r4
|
||||
add r2, r2, r5
|
||||
mov r9, r9, ror #0x2
|
||||
mov r12, r11
|
||||
mov r11, r10
|
||||
mov r10, r9
|
||||
mov r9, r3
|
||||
mov r3, r2
|
||||
add r7, r7, #0x1
|
||||
cmp r7, #0x8
|
||||
moveq r6, sp
|
||||
cmp r7, #0x14
|
||||
blt _020D352C
|
||||
ldr r8, _020D33C4 ; =0xCA62C1D6
|
||||
mov r7, #0x0
|
||||
_020D35A8:
|
||||
ldr r2, [r6, #0x0]
|
||||
ldr r5, [r6, #0x8]
|
||||
ldr r4, [r6, #0x20]
|
||||
ldr lr, [r6, #0x34]
|
||||
eor r2, r2, r5
|
||||
eor r4, r4, lr
|
||||
eor r2, r2, r4
|
||||
mov r2, r2, ror #0x1F
|
||||
str r2, [r6, #0x40]
|
||||
str r2, [r6], #0x4
|
||||
add r2, r2, r12
|
||||
add r2, r2, r8
|
||||
add r2, r2, r3, ror #0x1B
|
||||
eor r4, r9, r10
|
||||
eor r4, r4, r11
|
||||
add r2, r2, r4
|
||||
mov r9, r9, ror #0x2
|
||||
mov r12, r11
|
||||
mov r11, r10
|
||||
mov r10, r9
|
||||
mov r9, r3
|
||||
mov r3, r2
|
||||
add r7, r7, #0x1
|
||||
cmp r7, #0x4
|
||||
moveq r6, sp
|
||||
cmp r7, #0x14
|
||||
blt _020D35A8
|
||||
ldmia r0, {r2,r4,r6-r7,lr}
|
||||
add r3, r3, r2
|
||||
add r9, r9, r4
|
||||
add r10, r10, r6
|
||||
add r11, r11, r7
|
||||
add r12, r12, lr
|
||||
stmia r0, {r3,r9-r12}
|
||||
ldr lr, [sp, #0x80]
|
||||
subs lr, lr, #0x40
|
||||
str lr, [sp, #0x80]
|
||||
bgt _020D33D8
|
||||
add sp, sp, #0x84
|
||||
ldmia sp!, {r4-r12,pc}
|
||||
1017
arm9/asm/libdgt.s
1017
arm9/asm/libdgt.s
File diff suppressed because it is too large
Load Diff
@@ -32,16 +32,16 @@ MATH_CalcSHA1: ; 0x020DDCA0
|
||||
add r0, sp, #0x0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl MATH_SHA1Init
|
||||
bl DGT_Hash2Reset
|
||||
_020DDCBC: ; 0x020DDCBC
|
||||
add r0, sp, #0x0
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl MATH_SHA1Update
|
||||
bl DGT_Hash2SetSource
|
||||
_020DDCCC: ; 0x020DDCCC
|
||||
add r0, sp, #0x0
|
||||
mov r1, r6
|
||||
bl MATH_SHA1GetHash
|
||||
bl DGT_Hash2GetDigest
|
||||
add sp, sp, #0x68
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
.extern DGT_Hash1GetDigest_R
|
||||
.extern DGT_Hash1Reset
|
||||
.extern DGT_Hash1SetSource
|
||||
.extern DGT_Hash2GetDigest
|
||||
.extern DGT_Hash2Reset
|
||||
.extern DGT_Hash2SetSource
|
||||
.extern DGTi_hash2_arm4_small
|
||||
.extern ErrorHandling
|
||||
.extern FS_CloseFile
|
||||
@@ -3327,14 +3330,11 @@
|
||||
.extern MATH_MD5GetHash
|
||||
.extern MATH_MD5Init
|
||||
.extern MATH_MD5Update
|
||||
.extern MATH_SHA1GetHash
|
||||
.extern MATH_SHA1Init
|
||||
.extern MATH_SHA1Update
|
||||
.extern MATHi_CRC16InitTable
|
||||
.extern MATHi_CRC16InitTableRev
|
||||
.extern MATHi_CRC32InitTableRev
|
||||
.extern MATHi_CRC8InitTable
|
||||
.extern MATHi_CalcHMAC
|
||||
.extern DGTi_Hash2CalcHmac
|
||||
.extern MIC_DoSamplingAsync
|
||||
.extern MIC_GetLastSamplingAddress
|
||||
.extern MIC_Init
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
.extern DGT_Hash1GetDigest_R
|
||||
.extern DGT_Hash1Reset
|
||||
.extern DGT_Hash1SetSource
|
||||
.extern DGT_Hash2GetDigest
|
||||
.extern DGT_Hash2Reset
|
||||
.extern DGT_Hash2SetSource
|
||||
.extern DGTi_hash2_arm4_small
|
||||
.extern ErrorHandling
|
||||
.extern FS_CloseFile
|
||||
@@ -3129,14 +3132,11 @@
|
||||
.extern MATH_MD5GetHash
|
||||
.extern MATH_MD5Init
|
||||
.extern MATH_MD5Update
|
||||
.extern MATH_SHA1GetHash
|
||||
.extern MATH_SHA1Init
|
||||
.extern MATH_SHA1Update
|
||||
.extern MATHi_CRC16InitTable
|
||||
.extern MATHi_CRC16InitTableRev
|
||||
.extern MATHi_CRC32InitTableRev
|
||||
.extern MATHi_CRC8InitTable
|
||||
.extern MATHi_CalcHMAC
|
||||
.extern DGTi_Hash2CalcHmac
|
||||
.extern MIC_DoSamplingAsync
|
||||
.extern MIC_Init
|
||||
.extern MIC_StartAutoSampling
|
||||
|
||||
Reference in New Issue
Block a user