pmd-sky/lib/NitroSDK/asm/md5.s
2026-06-07 11:12:22 -07:00

383 lines
6.7 KiB
ArmAsm

.include "asm/macros.inc"
.include "main_0207F894.inc"
.text
arm_func_start MD5_Init
MD5_Init: ; 0x020800FC
ldr r2, _0208012C ; =0x67452301
ldr r1, _02080130 ; =0xEFCDAB89
str r2, [r0]
ldr r2, _02080134 ; =0x98BADCFE
str r1, [r0, #4]
ldr r1, _02080138 ; =0x10325476
str r2, [r0, #8]
str r1, [r0, #0xc]
mov r1, #0
str r1, [r0, #0x10]
str r1, [r0, #0x14]
bx lr
.align 2, 0
_0208012C: .word 0x67452301
_02080130: .word 0xEFCDAB89
_02080134: .word 0x98BADCFE
_02080138: .word 0x10325476
arm_func_end MD5_Init
arm_func_start MD5_Update
MD5_Update: ; 0x0208013C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
ldr r3, [r6, #0x10]
mov r4, r2
and ip, r3, #0x3f
ldr r0, [r6, #0x14]
adds r3, r3, r4
str r3, [r6, #0x10]
adc r0, r0, #0
rsb r7, ip, #0x40
mov r5, r1
str r0, [r6, #0x14]
cmp r7, r4
bls _02080190
cmp r4, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r1, r6, #0x18
mov r0, r5
add r1, r1, ip
bl MI_CpuCopy8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_02080190:
add r1, r6, #0x18
mov r0, r5
mov r2, r7
add r1, r1, ip
bl MI_CpuCopy8
mov r0, r6
bl MD5_Transform
sub r4, r4, r7
mov r8, r4, lsr #6
cmp r8, #0
add r7, r5, r7
ble _020801EC
mov r5, #0x40
_020801C4:
mov r0, r7
mov r2, r5
add r1, r6, #0x18
bl MI_CpuCopy8
mov r0, r6
add r7, r7, #0x40
bl MD5_Transform
sub r8, r8, #1
cmp r8, #0
bgt _020801C4
_020801EC:
ands r2, r4, #0x3f
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r7
add r1, r6, #0x18
bl MI_CpuCopy8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
arm_func_end MD5_Update
arm_func_start MD5_Digest
MD5_Digest: ; 0x02080204
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r4, r1
ldr r1, [r4, #0x14]
ldr r3, [r4, #0x10]
mov r5, r0
mov r6, r1, lsl #3
ldr r1, _020802B8 ; =_020B2BC0
mov r0, r4
mov r2, #1
orr r6, r6, r3, lsr #29
mov r7, r3, lsl #3
bl MD5_Update
ldr r0, [r4, #0x10]
mov r1, #0
and r3, r0, #0x3f
rsb r2, r3, #0x40
cmp r2, #8
bhs _02080268
add r0, r4, #0x18
add r0, r0, r3
bl MI_CpuFill8
mov r0, r4
bl MD5_Transform
mov r3, #0
mov r2, #0x40
_02080268:
cmp r2, #8
bls _02080284
add r0, r4, #0x18
add r0, r0, r3
sub r2, r2, #8
mov r1, #0
bl MI_CpuFill8
_02080284:
str r7, [r4, #0x50]
mov r0, r4
str r6, [r4, #0x54]
bl MD5_Transform
mov r0, r4
mov r1, r5
mov r2, #0x10
bl MI_CpuCopy8
mov r0, r4
mov r1, #0
mov r2, #0x58
bl MI_CpuFill8
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020802B8: .word _020B2BC0
arm_func_end MD5_Digest
arm_func_start MD5_Transform
MD5_Transform: ; 0x020802BC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldmia r0, {r2, r3, ip, lr}
add r4, r0, #0x18
ldr r5, _02080668 ; =_020B2C84
mov r7, r4
mov r8, #0
_020802D4:
mvn r1, r3
and r6, r3, ip
and r1, r1, lr
orr r1, r6, r1
ldr r6, [r7]
add r1, r2, r1
ldr r2, [r5]
add r1, r6, r1
add r2, r2, r1
mov r1, r2, lsr #0x19
orr r1, r1, r2, lsl #7
add r2, r3, r1
mvn r1, r2
and r6, r2, r3
and r1, r1, ip
orr r1, r6, r1
ldr r6, [r7, #4]
add r1, lr, r1
ldr sb, [r5, #4]
add r1, r6, r1
add r6, sb, r1
mov r1, r6, lsr #0x14
orr r1, r1, r6, lsl #12
add lr, r2, r1
mvn r1, lr
and r6, lr, r2
and r1, r1, r3
orr r1, r6, r1
ldr sb, [r7, #8]
add r6, ip, r1
ldr r1, [r7, #0xc]
add sb, sb, r6
ldr sl, [r5, #8]
ldr r6, [r5, #0xc]
add sl, sl, sb
mov sb, sl, lsr #0xf
orr sb, sb, sl, lsl #17
add ip, lr, sb
add r5, r5, #0x10
add r7, r7, #0x10
and sl, ip, lr
mvn sb, ip
and sb, sb, r2
orr sb, sl, sb
add r3, r3, sb
add r1, r1, r3
add r3, r6, r1
mov r1, r3, lsr #0xa
orr r1, r1, r3, lsl #22
add r3, ip, r1
add r8, r8, #1
cmp r8, #4
blt _020802D4
ldr r1, _0208066C ; =_020B2BC4
mov r6, #0
_020803B0:
mvn r7, lr
ldr sb, [r1]
and r8, r3, lr
and r7, ip, r7
orr r7, r8, r7
ldr r8, [r4, sb, lsl #2]
add r2, r2, r7
ldr r7, [r5]
add r2, r8, r2
add r7, r7, r2
mov r2, r7, lsr #0x1b
orr r2, r2, r7, lsl #5
add r2, r3, r2
mvn r8, ip
ldr r7, [r1, #4]
and sb, r2, ip
and r8, r3, r8
orr sl, sb, r8
mvn r8, r3
ldr sb, [r1, #8]
ldr fp, [r4, r7, lsl #2]
add r7, lr, sl
add r7, fp, r7
ldr sl, [r5, #4]
ldr sb, [r4, sb, lsl #2]
add sl, sl, r7
ldr r7, [r1, #0xc]
and r8, r2, r8
ldr r7, [r4, r7, lsl #2]
mov fp, sl, lsr #0x17
orr sl, fp, sl, lsl #9
add lr, r2, sl
ldr sl, [r5, #8]
and fp, lr, r3
orr r8, fp, r8
add r8, ip, r8
add r8, sb, r8
add sb, sl, r8
mov r8, sb, lsr #0x12
orr r8, r8, sb, lsl #14
add ip, lr, r8
mvn r8, r2
and sb, lr, r8
ldr r8, [r5, #0xc]
add r5, r5, #0x10
add r1, r1, #0x10
and sl, ip, r2
orr sb, sl, sb
add r3, r3, sb
add r3, r7, r3
add r7, r8, r3
mov r3, r7, lsr #0xc
orr r3, r3, r7, lsl #20
add r3, ip, r3
add r6, r6, #1
cmp r6, #4
blt _020803B0
mov r6, #0
_02080498:
ldr r8, [r1]
eor r7, r3, ip
eor r7, lr, r7
ldr r8, [r4, r8, lsl #2]
add r2, r2, r7
ldr r7, [r5]
add r2, r8, r2
add r7, r7, r2
mov r2, r7, lsr #0x1c
orr r2, r2, r7, lsl #4
add r2, r3, r2
ldr r8, [r1, #4]
eor r7, r2, r3
eor r7, ip, r7
ldr r8, [r4, r8, lsl #2]
add r7, lr, r7
ldr sb, [r1, #8]
ldr sl, [r5, #4]
add r7, r8, r7
add r8, sl, r7
mov r7, r8, lsr #0x15
orr r7, r7, r8, lsl #11
add lr, r2, r7
eor r8, lr, r2
ldr r7, [r1, #0xc]
ldr sb, [r4, sb, lsl #2]
eor r8, r3, r8
add r8, ip, r8
add sb, sb, r8
ldr sl, [r5, #8]
ldr r8, [r4, r7, lsl #2]
add sb, sl, sb
mov r7, sb, lsr #0x10
orr r7, r7, sb, lsl #16
add ip, lr, r7
eor r7, ip, lr
eor r7, r2, r7
add r3, r3, r7
add r3, r8, r3
ldr r7, [r5, #0xc]
add r5, r5, #0x10
add r7, r7, r3
add r1, r1, #0x10
mov r3, r7, lsr #9
orr r3, r3, r7, lsl #23
add r3, ip, r3
add r6, r6, #1
cmp r6, #4
blt _02080498
mov r8, #0
_02080560:
mvn r6, lr
ldr r7, [r1]
orr r6, r3, r6
eor r6, ip, r6
ldr r7, [r4, r7, lsl #2]
add r2, r2, r6
ldr r6, [r5]
add r2, r7, r2
add r6, r6, r2
mov r2, r6, lsr #0x1a
orr r2, r2, r6, lsl #6
add r2, r3, r2
mvn r6, ip
ldr sb, [r1, #4]
orr r6, r2, r6
eor r7, r3, r6
ldr r6, [r1, #8]
ldr sb, [r4, sb, lsl #2]
add r7, lr, r7
ldr sl, [r5, #4]
add r7, sb, r7
add sb, sl, r7
mov r7, sb, lsr #0x16
orr sb, r7, sb, lsl #10
ldr r7, [r1, #0xc]
add lr, r2, sb
mvn sb, r3
ldr r6, [r4, r6, lsl #2]
orr sb, lr, sb
eor sb, r2, sb
add sb, ip, sb
add sb, r6, sb
ldr sl, [r5, #8]
ldr r6, [r4, r7, lsl #2]
add sb, sl, sb
mov r7, sb, lsr #0x11
orr sb, r7, sb, lsl #15
ldr r7, [r5, #0xc]
add ip, lr, sb
add r5, r5, #0x10
add r1, r1, #0x10
mvn sb, r2
orr sb, ip, sb
eor sb, lr, sb
add r3, r3, sb
add r3, r6, r3
add r6, r7, r3
mov r3, r6, lsr #0xb
orr r3, r3, r6, lsl #21
add r3, ip, r3
add r8, r8, #1
cmp r8, #4
blt _02080560
ldr r1, [r0]
add r1, r1, r2
str r1, [r0]
ldr r1, [r0, #4]
add r1, r1, r3
str r1, [r0, #4]
ldr r1, [r0, #8]
add r1, r1, ip
str r1, [r0, #8]
ldr r1, [r0, #0xc]
add r1, r1, lr
str r1, [r0, #0xc]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02080668: .word _020B2C84
_0208066C: .word _020B2BC4
arm_func_end MD5_Transform