pokeplatinum/lib/crypto/asm/rc4s-arm4cw.s
2026-03-11 14:18:08 -07:00

42 lines
821 B
ArmAsm

.include "macros/function.inc"
.text
arm_func_start CRYPTO_RC4Encrypt
CRYPTO_RC4Encrypt: ; 0x02239420
stmfd sp!, {r4, r5, r6, r7, r8, sb, lr}
ldrb r7, [r0]
ldrb r6, [r0, #1]
add r0, r0, #4
mov lr, #0x1000000
add r7, lr, r7, lsl #24
mov r6, r6, lsl #0x18
ldrb sb, [r0, r7, lsr #24]
subs r2, r2, #1
bmi _02239480
_02239448:
add r6, r6, sb, lsl #24
subs r2, r2, #1
ldrb r8, [r0, r6, lsr #24]
ldrb r5, [r1], #1
strb r8, [r0, r7, lsr #24]
strb sb, [r0, r6, lsr #24]
add r4, sb, r8
and r4, r4, #0xff
add r7, r7, lr
ldrb r4, [r0, r4]
ldrb sb, [r0, r7, lsr #24]
eor r5, r5, r4
strb r5, [r3], #1
bge _02239448
_02239480:
sub r7, r7, lr
mov r7, r7, lsr #0x18
mov r6, r6, lsr #0x18
strb r7, [r0, #-4]
strb r6, [r0, #-3]
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
arm_func_end CRYPTO_RC4Encrypt