pokeplatinum/subprojects/libcrypto/asm/rc4-arm4cw.s

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