mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-25 07:29:01 -05:00
133 lines
2.8 KiB
ArmAsm
133 lines
2.8 KiB
ArmAsm
.include "macros/function.inc"
|
|
|
|
|
|
|
|
.text
|
|
|
|
|
|
arm_func_start CRYPTO_RC4FastEncrypt
|
|
CRYPTO_RC4FastEncrypt: ; 0x020A4A34
|
|
stmfd sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r7, [r0, #0]
|
|
ldr r6, [r0, #4]
|
|
add r0, r0, #8
|
|
mov lr, #0x1000000
|
|
add r7, r7, lr
|
|
subs r2, r2, #8
|
|
ldr sb, [r0, r7, lsr #22]
|
|
bmi _020A4BC0
|
|
_020A4A58:
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
add r6, r6, sb
|
|
subs r2, r2, #8
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
bpl _020A4A58
|
|
_020A4BC0:
|
|
adds r2, r2, #8
|
|
ble _020A4BFC
|
|
_020A4BC8:
|
|
add r6, r6, sb
|
|
subs r2, r2, #1
|
|
ldr r8, [r0, r6, lsr #22]
|
|
ldrb r5, [r1], #1
|
|
str r8, [r0, r7, lsr #22]
|
|
str sb, [r0, r6, lsr #22]
|
|
add r4, sb, r8
|
|
add r7, r7, lr
|
|
ldr r4, [r0, r4, lsr #22]
|
|
ldr sb, [r0, r7, lsr #22]
|
|
eor r5, r5, r4, lsr #24
|
|
strb r5, [r3], #1
|
|
bgt _020A4BC8
|
|
_020A4BFC:
|
|
sub r7, r7, lr
|
|
and r7, r7, #0xff000000
|
|
str r6, [r0, #-4]
|
|
str r7, [r0, #-8]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
arm_func_end CRYPTO_RC4FastEncrypt |