mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-19 23:34:51 -05:00
75 lines
1.2 KiB
ArmAsm
75 lines
1.2 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.section .text
|
|
|
|
arm_func_start CPSi_rc4_crypt
|
|
CPSi_rc4_crypt: ; 0x020A49CC
|
|
stmdb sp!, {r4-r6,lr}
|
|
cmp r2, #0x0
|
|
add r3, r0, #0x2
|
|
ldrb lr, [r0, #0x0]
|
|
ldrb r12, [r0, #0x1]
|
|
mov r4, #0x0
|
|
ble _020A4A2C
|
|
_020A49E8:
|
|
add r5, lr, #0x1
|
|
and lr, r5, #0xff
|
|
ldrb r6, [r3, lr]
|
|
add r5, r12, r6
|
|
and r12, r5, #0xff
|
|
ldrb r5, [r3, r12]
|
|
strb r5, [r3, lr]
|
|
add r5, r6, r5
|
|
strb r6, [r3, r12]
|
|
and r5, r5, #0xff
|
|
ldrb r6, [r1, r4]
|
|
ldrb r5, [r3, r5]
|
|
eor r5, r6, r5
|
|
strb r5, [r1, r4]
|
|
add r4, r4, #0x1
|
|
cmp r4, r2
|
|
blt _020A49E8
|
|
_020A4A2C:
|
|
strb lr, [r0, #0x0]
|
|
strb r12, [r0, #0x1]
|
|
ldmia sp!, {r4-r6,lr}
|
|
bx lr
|
|
|
|
arm_func_start CPSi_rc4_init
|
|
CPSi_rc4_init: ; 0x020A4A3C
|
|
stmdb sp!, {r4-r7,lr}
|
|
sub sp, sp, #0x4
|
|
mov r3, #0x0
|
|
strb r3, [r0, #0x0]
|
|
strb r3, [r0, #0x1]
|
|
add r7, r0, #0x2
|
|
_020A4A54:
|
|
strb r3, [r7, r3]
|
|
add r3, r3, #0x1
|
|
cmp r3, #0x100
|
|
blt _020A4A54
|
|
mov r5, #0x0
|
|
mov r6, r5
|
|
mov r4, r5
|
|
mov r0, r5
|
|
_020A4A74:
|
|
ldrb lr, [r7, r4]
|
|
ldrb r12, [r1, r5]
|
|
add r3, r5, #0x1
|
|
and r5, r3, #0xff
|
|
add r3, lr, r12
|
|
add r3, r6, r3
|
|
and r6, r3, #0xff
|
|
ldrb r3, [r7, r6]
|
|
cmp r5, r2
|
|
movge r5, r0
|
|
strb r3, [r7, r4]
|
|
add r4, r4, #0x1
|
|
strb lr, [r7, r6]
|
|
cmp r4, #0x100
|
|
blt _020A4A74
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r7,lr}
|
|
bx lr
|