1276 lines
23 KiB
ArmAsm
1276 lines
23 KiB
ArmAsm
.syntax unified
|
|
.thumb
|
|
.file "bmw_small-asm-cstub.c"
|
|
.text
|
|
.align 2
|
|
.global s32_0
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_0, %function
|
|
s32_0:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r0
|
|
lsrs r0, r0, #1
|
|
eor r0, r0, r3, lsl #3
|
|
eor r0, r0, r3, ror #28
|
|
eor r0, r0, r3, ror #13
|
|
bx lr
|
|
.size s32_0, .-s32_0
|
|
.align 2
|
|
.global s32_1
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_1, %function
|
|
s32_1:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r0
|
|
lsrs r0, r0, #1
|
|
eor r0, r0, r3, lsl #2
|
|
eor r0, r0, r3, ror #24
|
|
eor r0, r0, r3, ror #9
|
|
bx lr
|
|
.size s32_1, .-s32_1
|
|
.align 2
|
|
.global s32_2
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_2, %function
|
|
s32_2:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r0
|
|
lsrs r0, r0, #2
|
|
eor r0, r0, r3, lsl #1
|
|
eor r0, r0, r3, ror #20
|
|
eor r0, r0, r3, ror #7
|
|
bx lr
|
|
.size s32_2, .-s32_2
|
|
.align 2
|
|
.global s32_3
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_3, %function
|
|
s32_3:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r0
|
|
lsrs r0, r0, #2
|
|
eor r0, r0, r3, lsl #2
|
|
eor r0, r0, r3, ror #17
|
|
eor r0, r0, r3, ror #3
|
|
bx lr
|
|
.size s32_3, .-s32_3
|
|
.align 2
|
|
.global s32_4
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_4, %function
|
|
s32_4:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
eor r0, r0, r0, lsr #1
|
|
bx lr
|
|
.size s32_4, .-s32_4
|
|
.align 2
|
|
.global s32_5
|
|
.thumb
|
|
.thumb_func
|
|
.type s32_5, %function
|
|
s32_5:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
eor r0, r0, r0, lsr #2
|
|
bx lr
|
|
.size s32_5, .-s32_5
|
|
.align 2
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_expand1, %function
|
|
bmw_small_expand1:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
uxtb r0, r0
|
|
and ip, r0, #15
|
|
push {r4, r5, r6, r7, r8, r9, sl, fp}
|
|
ldr r4, [r2, ip, lsl #2]
|
|
mvn sl, ip
|
|
add sl, sl, #32
|
|
add ip, ip, #1
|
|
lsr sl, r4, sl
|
|
lsl r4, r4, ip
|
|
add fp, r0, #3
|
|
add r7, r0, #10
|
|
and r5, fp, #15
|
|
and r8, r7, #15
|
|
ldr r6, [r2, r5, lsl #2]
|
|
ldr r9, [r2, r8, lsl #2]
|
|
ldr r2, .L15
|
|
orr sl, sl, r4
|
|
ldr ip, [r2, r0, lsl #2]
|
|
mvn r2, r5
|
|
add sl, sl, ip
|
|
adds r5, r5, #1
|
|
adds r2, r2, #32
|
|
mvn ip, r8
|
|
lsrs r2, r6, r2
|
|
add r8, r8, #1
|
|
lsls r6, r6, r5
|
|
add ip, ip, #32
|
|
lsr ip, r9, ip
|
|
lsl r9, r9, r8
|
|
sub sp, sp, #32
|
|
orrs r2, r2, r6
|
|
str r7, [sp, #0]
|
|
adds r7, r0, #7
|
|
orr ip, ip, r9
|
|
add sl, sl, r2
|
|
and r2, r7, #15
|
|
rsb sl, ip, sl
|
|
ldr ip, [r3, r2, lsl #2]
|
|
adds r2, r0, #2
|
|
ldr r4, [r1, r2, lsl #2]
|
|
adds r3, r0, #1
|
|
adds r2, r0, #5
|
|
ldr r9, [r1, r2, lsl #2]
|
|
eor sl, sl, ip
|
|
add r2, r0, #9
|
|
ldr ip, [r1, r3, lsl #2]
|
|
adds r3, r0, #4
|
|
ldr r8, [r1, r3, lsl #2]
|
|
ldr r2, [r1, r2, lsl #2]
|
|
adds r3, r0, #6
|
|
ldr r6, [r1, fp, lsl #2]
|
|
ldr fp, [r1, r3, lsl #2]
|
|
add r3, r0, #8
|
|
ldr r3, [r1, r3, lsl #2]
|
|
str r2, [sp, #8]
|
|
ldr r2, [sp, #0]
|
|
str r3, [sp, #4]
|
|
ldr r2, [r1, r2, lsl #2]
|
|
add r3, r0, #11
|
|
ldr r3, [r1, r3, lsl #2]
|
|
str r2, [sp, #12]
|
|
add r2, r0, #12
|
|
ldr r2, [r1, r2, lsl #2]
|
|
str r3, [sp, #16]
|
|
add r3, r0, #13
|
|
ldr r3, [r1, r3, lsl #2]
|
|
ldr r5, [r1, r0, lsl #2]
|
|
str r2, [sp, #20]
|
|
add r2, r0, #14
|
|
adds r0, r0, #15
|
|
ldr r7, [r1, r7, lsl #2]
|
|
ldr r2, [r1, r2, lsl #2]
|
|
str r3, [sp, #24]
|
|
ldr r1, [r1, r0, lsl #2]
|
|
lsrs r3, r4, #2
|
|
lsr r0, ip, #2
|
|
eor r0, r0, ip, lsl #1
|
|
eor r3, r3, r4, lsl #2
|
|
eor r0, r0, ip, ror #20
|
|
eor r3, r3, r4, ror #17
|
|
str r2, [sp, #28]
|
|
eor r3, r3, r4, ror #3
|
|
lsrs r2, r5, #1
|
|
eor r0, r0, ip, ror #7
|
|
adds r0, r0, r3
|
|
eor r2, r2, r5, lsl #2
|
|
lsrs r3, r6, #1
|
|
eor r2, r2, r5, ror #24
|
|
eor r3, r3, r6, lsl #3
|
|
eor r2, r2, r5, ror #9
|
|
eor r3, r3, r6, ror #28
|
|
adds r0, r0, r2
|
|
eor r3, r3, r6, ror #13
|
|
lsr r2, r8, #1
|
|
adds r0, r0, r3
|
|
eor r2, r2, r8, lsl #2
|
|
lsr r3, r9, #2
|
|
eor r2, r2, r8, ror #24
|
|
eor r3, r3, r9, lsl #1
|
|
eor r2, r2, r8, ror #9
|
|
eor r3, r3, r9, ror #20
|
|
adds r0, r0, r2
|
|
eor r3, r3, r9, ror #7
|
|
lsr r2, fp, #2
|
|
adds r0, r0, r3
|
|
eor r2, r2, fp, lsl #2
|
|
lsrs r3, r7, #1
|
|
eor r2, r2, fp, ror #17
|
|
eor r3, r3, r7, lsl #3
|
|
eor r2, r2, fp, ror #3
|
|
eor r3, r3, r7, ror #28
|
|
adds r0, r0, r2
|
|
eor r3, r3, r7, ror #13
|
|
adds r0, r0, r3
|
|
ldr r3, [sp, #4]
|
|
ldr r7, [sp, #8]
|
|
lsrs r2, r3, #1
|
|
eor r2, r2, r3, lsl #2
|
|
eor r2, r2, r3, ror #24
|
|
eor r2, r2, r3, ror #9
|
|
lsrs r3, r7, #2
|
|
eor r3, r3, r7, lsl #1
|
|
eor r3, r3, r7, ror #20
|
|
adds r0, r0, r2
|
|
eor r3, r3, r7, ror #7
|
|
adds r0, r0, r3
|
|
ldr r3, [sp, #12]
|
|
ldr r7, [sp, #16]
|
|
lsrs r2, r3, #2
|
|
eor r2, r2, r3, lsl #2
|
|
eor r2, r2, r3, ror #17
|
|
eor r2, r2, r3, ror #3
|
|
lsrs r3, r7, #1
|
|
eor r3, r3, r7, lsl #3
|
|
eor r3, r3, r7, ror #28
|
|
adds r0, r0, r2
|
|
eor r3, r3, r7, ror #13
|
|
adds r0, r0, r3
|
|
ldr r3, [sp, #20]
|
|
ldr r7, [sp, #24]
|
|
lsrs r2, r3, #1
|
|
eor r2, r2, r3, lsl #2
|
|
eor r2, r2, r3, ror #24
|
|
eor r2, r2, r3, ror #9
|
|
adds r0, r0, r2
|
|
lsrs r3, r7, #2
|
|
eor r3, r3, r7, lsl #1
|
|
eor r3, r3, r7, ror #20
|
|
eor r3, r3, r7, ror #7
|
|
adds r0, r0, r3
|
|
ldr r3, [sp, #28]
|
|
lsrs r2, r3, #2
|
|
eor r2, r2, r3, lsl #2
|
|
eor r2, r2, r3, ror #17
|
|
eor r2, r2, r3, ror #3
|
|
lsrs r3, r1, #1
|
|
eor r3, r3, r1, lsl #3
|
|
eor r3, r3, r1, ror #28
|
|
adds r0, r0, r2
|
|
eor r3, r3, r1, ror #13
|
|
adds r0, r0, r3
|
|
add r0, r0, sl
|
|
add sp, sp, #32
|
|
pop {r4, r5, r6, r7, r8, r9, sl, fp}
|
|
bx lr
|
|
.L16:
|
|
.align 2
|
|
.L15:
|
|
.word k_lut
|
|
.size bmw_small_expand1, .-bmw_small_expand1
|
|
.align 2
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_f0, %function
|
|
bmw_small_f0:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
push {r4, r5}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
mov r0, r2
|
|
movs r1, #0
|
|
.L18:
|
|
ldr r3, [r4, r1]
|
|
ldr r2, [r0, r1]
|
|
eors r3, r3, r2
|
|
str r3, [r4, r1]
|
|
adds r1, r1, #4
|
|
cmp r1, #64
|
|
bne .L18
|
|
ldr r2, [r4, #20]
|
|
ldr r3, [r4, #40]
|
|
ldr r1, [r4, #52]
|
|
adds r3, r3, r2
|
|
ldr r2, [r4, #56]
|
|
adds r3, r3, r1
|
|
ldr r1, [r4, #28]
|
|
adds r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #0]
|
|
ldr r3, [r4, #24]
|
|
ldr r2, [r4, #44]
|
|
ldr r1, [r4, #56]
|
|
adds r2, r2, r3
|
|
ldr r3, [r4, #60]
|
|
adds r2, r2, r1
|
|
ldr r1, [r4, #32]
|
|
subs r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #4]
|
|
ldr r2, [r4, #36]
|
|
ldr r3, [r4, #28]
|
|
ldr r1, [r4, #0]
|
|
adds r3, r3, r2
|
|
ldr r2, [r4, #60]
|
|
adds r3, r3, r1
|
|
ldr r1, [r4, #48]
|
|
adds r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #8]
|
|
ldr r3, [r4, #52]
|
|
ldr r2, [r4, #32]
|
|
ldr r1, [r4, #0]
|
|
adds r2, r2, r3
|
|
ldr r3, [r4, #4]
|
|
adds r2, r2, r1
|
|
ldr r1, [r4, #40]
|
|
subs r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #12]
|
|
ldr r2, [r4, #4]
|
|
ldr r3, [r4, #8]
|
|
ldr r1, [r4, #36]
|
|
adds r3, r3, r2
|
|
ldr r2, [r4, #56]
|
|
adds r3, r3, r1
|
|
ldr r1, [r4, #44]
|
|
subs r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #16]
|
|
ldr r3, [r4, #12]
|
|
ldr r2, [r4, #40]
|
|
ldr r1, [r4, #60]
|
|
adds r2, r2, r3
|
|
ldr r3, [r4, #8]
|
|
adds r2, r2, r1
|
|
ldr r1, [r4, #48]
|
|
subs r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #20]
|
|
ldr r2, [r4, #0]
|
|
ldr r3, [r4, #16]
|
|
ldr r1, [r4, #44]
|
|
subs r3, r3, r2
|
|
ldr r2, [r4, #52]
|
|
subs r3, r3, r1
|
|
ldr r1, [r4, #12]
|
|
adds r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #24]
|
|
ldr r3, [r4, #16]
|
|
ldr r2, [r4, #4]
|
|
ldr r1, [r4, #20]
|
|
subs r2, r2, r3
|
|
ldr r3, [r4, #48]
|
|
subs r2, r2, r1
|
|
ldr r1, [r4, #56]
|
|
subs r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #28]
|
|
ldr r2, [r4, #20]
|
|
ldr r3, [r4, #8]
|
|
ldr r1, [r4, #60]
|
|
subs r3, r3, r2
|
|
ldr r2, [r4, #52]
|
|
subs r3, r3, r1
|
|
ldr r1, [r4, #24]
|
|
adds r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #32]
|
|
ldr r3, [r4, #56]
|
|
ldr r2, [r4, #24]
|
|
ldr r1, [r4, #0]
|
|
adds r2, r2, r3
|
|
ldr r3, [r4, #12]
|
|
adds r2, r2, r1
|
|
ldr r1, [r4, #28]
|
|
subs r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #36]
|
|
ldr r2, [r4, #4]
|
|
ldr r3, [r4, #32]
|
|
ldr r1, [r4, #28]
|
|
subs r3, r3, r2
|
|
ldr r2, [r4, #60]
|
|
subs r3, r3, r1
|
|
ldr r1, [r4, #16]
|
|
adds r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #40]
|
|
ldr r3, [r4, #0]
|
|
ldr r2, [r4, #32]
|
|
ldr r1, [r4, #20]
|
|
subs r2, r2, r3
|
|
ldr r3, [r4, #36]
|
|
subs r2, r2, r1
|
|
ldr r1, [r4, #8]
|
|
adds r2, r2, r3
|
|
subs r2, r2, r1
|
|
str r2, [r5, #44]
|
|
ldr r2, [r4, #4]
|
|
ldr r3, [r4, #12]
|
|
ldr r1, [r4, #40]
|
|
adds r3, r3, r2
|
|
ldr r2, [r4, #36]
|
|
adds r3, r3, r1
|
|
ldr r1, [r4, #24]
|
|
subs r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #48]
|
|
ldr r3, [r4, #8]
|
|
ldr r2, [r4, #16]
|
|
ldr r1, [r4, #28]
|
|
adds r2, r2, r3
|
|
ldr r3, [r4, #40]
|
|
adds r2, r2, r1
|
|
ldr r1, [r4, #44]
|
|
adds r2, r2, r3
|
|
adds r2, r2, r1
|
|
str r2, [r5, #52]
|
|
ldr r2, [r4, #12]
|
|
ldr r3, [r4, #32]
|
|
ldr r1, [r4, #48]
|
|
adds r3, r3, r2
|
|
ldr r2, [r4, #44]
|
|
subs r3, r3, r1
|
|
ldr r1, [r4, #20]
|
|
subs r3, r3, r2
|
|
subs r3, r3, r1
|
|
str r3, [r5, #56]
|
|
ldr r2, [r4, #36]
|
|
ldr r3, [r4, #24]
|
|
ldr r1, [r4, #52]
|
|
rsb r2, r2, #0
|
|
subs r2, r2, r3
|
|
adds r2, r2, r1
|
|
ldr r3, [r4, #48]
|
|
ldr r1, [r4, #16]
|
|
subs r3, r3, r1
|
|
ldr r1, [r5, #0]
|
|
adds r2, r2, r3
|
|
lsrs r3, r1, #1
|
|
eor r3, r3, r1, lsl #3
|
|
str r2, [r5, #60]
|
|
eor r3, r3, r1, ror #28
|
|
ldr r2, [r5, #4]
|
|
eor r3, r3, r1, ror #13
|
|
str r3, [r5, #0]
|
|
lsrs r3, r2, #1
|
|
eor r3, r3, r2, lsl #2
|
|
eor r3, r3, r2, ror #24
|
|
eor r3, r3, r2, ror #9
|
|
ldr r2, [r5, #8]
|
|
str r3, [r5, #4]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #1
|
|
eor r3, r3, r2, ror #20
|
|
eor r3, r3, r2, ror #7
|
|
ldr r2, [r5, #12]
|
|
str r3, [r5, #8]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #2
|
|
eor r3, r3, r2, ror #17
|
|
eor r3, r3, r2, ror #3
|
|
ldr r2, [r5, #16]
|
|
str r3, [r5, #12]
|
|
eor r2, r2, r2, lsr #1
|
|
str r2, [r5, #16]
|
|
ldr r1, [r5, #20]
|
|
ldr r2, [r5, #24]
|
|
lsrs r3, r1, #1
|
|
eor r3, r3, r1, lsl #3
|
|
eor r3, r3, r1, ror #28
|
|
eor r3, r3, r1, ror #13
|
|
str r3, [r5, #20]
|
|
lsrs r3, r2, #1
|
|
eor r3, r3, r2, lsl #2
|
|
eor r3, r3, r2, ror #24
|
|
eor r3, r3, r2, ror #9
|
|
ldr r2, [r5, #28]
|
|
str r3, [r5, #24]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #1
|
|
eor r3, r3, r2, ror #20
|
|
eor r3, r3, r2, ror #7
|
|
ldr r2, [r5, #32]
|
|
str r3, [r5, #28]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #2
|
|
ldr r1, [r5, #40]
|
|
eor r3, r3, r2, ror #17
|
|
eor r3, r3, r2, ror #3
|
|
ldr r2, [r5, #36]
|
|
str r3, [r5, #32]
|
|
lsrs r3, r1, #1
|
|
eor r2, r2, r2, lsr #1
|
|
eor r3, r3, r1, lsl #3
|
|
eor r3, r3, r1, ror #28
|
|
str r2, [r5, #36]
|
|
ldr r2, [r5, #44]
|
|
eor r3, r3, r1, ror #13
|
|
str r3, [r5, #40]
|
|
lsrs r3, r2, #1
|
|
eor r3, r3, r2, lsl #2
|
|
eor r3, r3, r2, ror #24
|
|
eor r3, r3, r2, ror #9
|
|
ldr r2, [r5, #48]
|
|
str r3, [r5, #44]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #1
|
|
eor r3, r3, r2, ror #20
|
|
eor r3, r3, r2, ror #7
|
|
ldr r2, [r5, #52]
|
|
str r3, [r5, #48]
|
|
lsrs r3, r2, #2
|
|
eor r3, r3, r2, lsl #2
|
|
ldr r1, [r5, #60]
|
|
eor r3, r3, r2, ror #17
|
|
eor r3, r3, r2, ror #3
|
|
str r3, [r5, #52]
|
|
lsrs r3, r1, #1
|
|
ldr r2, [r5, #56]
|
|
eor r3, r3, r1, lsl #3
|
|
eor r3, r3, r1, ror #28
|
|
eor r3, r3, r1, ror #13
|
|
eor r2, r2, r2, lsr #1
|
|
str r2, [r5, #56]
|
|
str r3, [r5, #60]
|
|
movs r1, #0
|
|
.L19:
|
|
ldr r3, [r4, r1]
|
|
ldr r2, [r0, r1]
|
|
eors r3, r3, r2
|
|
str r3, [r4, r1]
|
|
adds r1, r1, #4
|
|
cmp r1, #64
|
|
bne .L19
|
|
mov ip, #0
|
|
movs r0, #1
|
|
.L20:
|
|
and r3, r0, #15
|
|
ldr r2, [r5, ip]
|
|
ldr r1, [r4, r3, lsl #2]
|
|
adds r0, r0, #1
|
|
adds r2, r2, r1
|
|
str r2, [r5, ip]
|
|
add ip, ip, #4
|
|
cmp ip, #64
|
|
bne .L20
|
|
pop {r4, r5}
|
|
bx lr
|
|
.size bmw_small_f0, .-bmw_small_f0
|
|
.align 2
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_f1, %function
|
|
bmw_small_f1:
|
|
@ args = 0, pretend = 0, frame = 4
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
|
|
sub sp, sp, #4
|
|
mov r4, r0
|
|
mov fp, r1
|
|
str r2, [sp, #0]
|
|
mov r1, r4
|
|
mov r2, fp
|
|
ldr r3, [sp, #0]
|
|
movs r0, #0
|
|
bl bmw_small_expand1
|
|
mov r1, r4
|
|
str r0, [r4, #64]
|
|
mov r2, fp
|
|
movs r0, #1
|
|
ldr r3, [sp, #0]
|
|
bl bmw_small_expand1
|
|
ldr r9, .L30
|
|
str r0, [r4, #68]
|
|
mov lr, r4
|
|
movs r6, #0
|
|
mov sl, #2
|
|
mov r8, #5
|
|
movs r7, #12
|
|
.L27:
|
|
and r3, sl, #15
|
|
ldr r2, [fp, r3, lsl #2]
|
|
mvn r0, r3
|
|
and r1, r8, #15
|
|
adds r3, r3, #1
|
|
adds r0, r0, #32
|
|
ldr ip, [fp, r1, lsl #2]
|
|
lsrs r0, r2, r0
|
|
lsls r2, r2, r3
|
|
mvn r3, r1
|
|
adds r3, r3, #32
|
|
adds r1, r1, #1
|
|
lsr r3, ip, r3
|
|
lsl ip, ip, r1
|
|
and r4, r7, #15
|
|
orrs r0, r0, r2
|
|
orr r3, r3, ip
|
|
ldr r5, [fp, r4, lsl #2]
|
|
adds r0, r0, r3
|
|
mvn r3, r4
|
|
adds r3, r3, #32
|
|
adds r4, r4, #1
|
|
lsrs r3, r5, r3
|
|
lsls r5, r5, r4
|
|
ldr r2, [r9, #8]
|
|
ldr r1, [sp, #0]
|
|
adds r0, r0, r2
|
|
add r2, r6, #9
|
|
orrs r3, r3, r5
|
|
and r2, r2, #15
|
|
subs r0, r0, r3
|
|
ldr r3, [r1, r2, lsl #2]
|
|
ldr r2, [lr, #8]
|
|
eors r0, r0, r3
|
|
ldr r3, [lr, #16]
|
|
ldr r1, [lr, #24]
|
|
adds r3, r3, r2
|
|
ldr r2, [lr, #32]
|
|
adds r3, r3, r1
|
|
ldr r1, [lr, #40]
|
|
adds r3, r3, r2
|
|
ldr r2, [lr, #48]
|
|
adds r3, r3, r1
|
|
ldr r1, [lr, #56]
|
|
adds r3, r3, r2
|
|
ldr r2, [lr, #12]
|
|
adds r3, r3, r1
|
|
ldr r1, [lr, #20]
|
|
add r3, r3, r2, ror #29
|
|
ldr r2, [lr, #28]
|
|
add r3, r3, r1, ror #25
|
|
ldr r1, [lr, #36]
|
|
add r3, r3, r2, ror #19
|
|
ldr r2, [lr, #44]
|
|
add r3, r3, r1, ror #16
|
|
ldr r1, [lr, #52]
|
|
ldr ip, [lr, #64]
|
|
add r3, r3, r2, ror #13
|
|
ldr r2, [lr, #60]
|
|
ldr r4, [lr, #68]
|
|
add r3, r3, r1, ror #9
|
|
add r3, r3, r2, ror #5
|
|
eor ip, ip, ip, lsr #1
|
|
add r3, r3, ip
|
|
eor r4, r4, r4, lsr #2
|
|
adds r3, r3, r4
|
|
adds r6, r6, #1
|
|
adds r3, r3, r0
|
|
adds r7, r7, #1
|
|
cmp r6, #14
|
|
str r3, [lr, #72]
|
|
add sl, sl, #1
|
|
add r8, r8, #1
|
|
add r9, r9, #4
|
|
add lr, lr, #4
|
|
bne .L27
|
|
add sp, sp, #4
|
|
pop {r4, r5, r6, r7, r8, r9, sl, fp, pc}
|
|
.L31:
|
|
.align 2
|
|
.L30:
|
|
.word k_lut
|
|
.size bmw_small_f1, .-bmw_small_f1
|
|
.align 2
|
|
.global bmw224_init
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw224_init, %function
|
|
bmw224_init:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L36
|
|
mov r2, r0
|
|
str r3, [r0, #0]
|
|
add r1, r0, #60
|
|
.L33:
|
|
ldr r3, [r2, #0]
|
|
add r3, r3, #67372036
|
|
str r3, [r2, #4]!
|
|
cmp r2, r1
|
|
bne .L33
|
|
movs r3, #0
|
|
str r3, [r0, #64]
|
|
bx lr
|
|
.L37:
|
|
.align 2
|
|
.L36:
|
|
.word 66051
|
|
.size bmw224_init, .-bmw224_init
|
|
.align 2
|
|
.global bmw256_init
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw256_init, %function
|
|
bmw256_init:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L42
|
|
mov r2, r0
|
|
str r3, [r0, #0]
|
|
add r1, r0, #60
|
|
.L39:
|
|
ldr r3, [r2, #0]
|
|
add r3, r3, #67372036
|
|
str r3, [r2, #4]!
|
|
cmp r2, r1
|
|
bne .L39
|
|
movs r3, #0
|
|
str r3, [r0, #64]
|
|
bx lr
|
|
.L43:
|
|
.align 2
|
|
.L42:
|
|
.word 1078018627
|
|
.size bmw256_init, .-bmw256_init
|
|
.align 2
|
|
.global bmw256_ctx2hash
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw256_ctx2hash, %function
|
|
bmw256_ctx2hash:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
adds r1, r1, #32
|
|
movs r2, #32
|
|
bl memcpy
|
|
pop {pc}
|
|
.size bmw256_ctx2hash, .-bmw256_ctx2hash
|
|
.align 2
|
|
.global bmw224_ctx2hash
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw224_ctx2hash, %function
|
|
bmw224_ctx2hash:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
adds r1, r1, #36
|
|
movs r2, #28
|
|
bl memcpy
|
|
pop {pc}
|
|
.size bmw224_ctx2hash, .-bmw224_ctx2hash
|
|
.align 2
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_f2, %function
|
|
bmw_small_f2:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
mov r8, #0
|
|
mov r5, r0
|
|
mov r6, r1
|
|
mov r0, r8
|
|
mov r1, r2
|
|
.L49:
|
|
add r3, r6, r0
|
|
ldr r2, [r3, #64]
|
|
adds r0, r0, #4
|
|
cmp r0, #32
|
|
eor r8, r8, r2
|
|
bne .L49
|
|
mov r7, r8
|
|
subs r0, r0, #32
|
|
.L50:
|
|
add r3, r6, r0
|
|
ldr r2, [r3, #96]
|
|
adds r0, r0, #4
|
|
eors r7, r7, r2
|
|
cmp r0, #32
|
|
bne .L50
|
|
movs r2, #64
|
|
mov r0, r5
|
|
bl memcpy
|
|
ldr r2, [r6, #64]
|
|
ldr r3, [r5, #0]
|
|
movs r0, #0
|
|
eor r3, r3, r2, lsr #5
|
|
eor r3, r3, r7, lsl #5
|
|
str r3, [r5, #0]
|
|
ldr r2, [r6, #68]
|
|
ldr r3, [r5, #4]
|
|
eor r3, r3, r2, lsl #8
|
|
eor r3, r3, r7, lsr #7
|
|
str r3, [r5, #4]
|
|
ldr r2, [r6, #72]
|
|
ldr r3, [r5, #8]
|
|
eor r3, r3, r2, lsl #5
|
|
eor r3, r3, r7, lsr #5
|
|
str r3, [r5, #8]
|
|
ldr r2, [r6, #76]
|
|
ldr r3, [r5, #12]
|
|
eor r3, r3, r2, lsl #5
|
|
eor r3, r3, r7, lsr #1
|
|
str r3, [r5, #12]
|
|
ldr r2, [r6, #80]
|
|
ldr r3, [r5, #16]
|
|
eors r2, r2, r3
|
|
eor r2, r2, r7, lsr #3
|
|
str r2, [r5, #16]
|
|
ldr r1, [r6, #84]
|
|
ldr r3, [r5, #20]
|
|
eor r3, r3, r1, lsr #6
|
|
eor r3, r3, r7, lsl #6
|
|
str r3, [r5, #20]
|
|
ldr r2, [r6, #88]
|
|
ldr r3, [r5, #24]
|
|
eor r3, r3, r2, lsl #6
|
|
eor r3, r3, r7, lsr #4
|
|
str r3, [r5, #24]
|
|
ldr r2, [r6, #92]
|
|
ldr r3, [r5, #28]
|
|
eor r3, r3, r2, lsl #2
|
|
eor r3, r3, r7, lsr #11
|
|
str r3, [r5, #28]
|
|
.L51:
|
|
add r1, r6, r0
|
|
ldr r2, [r6, r0]
|
|
ldr r3, [r1, #96]
|
|
eors r2, r2, r3
|
|
ldr r3, [r5, r0]
|
|
eor r2, r2, r8
|
|
adds r3, r3, r2
|
|
str r3, [r5, r0]
|
|
adds r0, r0, #4
|
|
cmp r0, #32
|
|
bne .L51
|
|
mov lr, r5
|
|
mov r4, r6
|
|
mov ip, #4
|
|
.L52:
|
|
ldr r3, [lr, #32]
|
|
ldr r0, [r4, #96]
|
|
and r2, ip, #7
|
|
eors r0, r0, r3
|
|
eors r0, r0, r7
|
|
str r0, [lr, #32]
|
|
ldr r1, [r5, r2, lsl #2]
|
|
rsb r3, ip, #27
|
|
add r2, ip, #5
|
|
lsrs r3, r1, r3
|
|
lsls r1, r1, r2
|
|
add ip, ip, #1
|
|
orrs r3, r3, r1
|
|
adds r3, r3, r0
|
|
adds r4, r4, #4
|
|
cmp ip, #12
|
|
str r3, [lr, #32]
|
|
add lr, lr, #4
|
|
bne .L52
|
|
movs r2, #28
|
|
add r0, r6, #36
|
|
add r1, r6, #64
|
|
bl memxor
|
|
ldr r3, [r6, #32]
|
|
ldr r2, [r6, #92]
|
|
eors r2, r2, r3
|
|
str r2, [r6, #32]
|
|
ldr r3, [r5, #32]
|
|
eor r2, r2, r8, lsl #8
|
|
adds r3, r3, r2
|
|
str r3, [r5, #32]
|
|
ldr r2, [r6, #36]
|
|
ldr r3, [r5, #36]
|
|
eor r2, r2, r8, lsr #6
|
|
adds r3, r3, r2
|
|
str r3, [r5, #36]
|
|
ldr r2, [r6, #40]
|
|
ldr r3, [r5, #40]
|
|
eor r2, r2, r8, lsl #6
|
|
adds r3, r3, r2
|
|
str r3, [r5, #40]
|
|
ldr r2, [r6, #44]
|
|
ldr r3, [r5, #44]
|
|
eor r2, r2, r8, lsl #4
|
|
adds r3, r3, r2
|
|
str r3, [r5, #44]
|
|
ldr r2, [r6, #48]
|
|
ldr r3, [r5, #48]
|
|
eor r2, r2, r8, lsr #3
|
|
adds r3, r3, r2
|
|
str r3, [r5, #48]
|
|
ldr r2, [r6, #52]
|
|
ldr r3, [r5, #52]
|
|
eor r2, r2, r8, lsr #4
|
|
adds r3, r3, r2
|
|
str r3, [r5, #52]
|
|
ldr r2, [r6, #56]
|
|
ldr r3, [r5, #56]
|
|
eor r2, r2, r8, lsr #7
|
|
adds r3, r3, r2
|
|
str r3, [r5, #56]
|
|
ldr r2, [r6, #60]
|
|
ldr r3, [r5, #60]
|
|
eor r2, r2, r8, lsr #2
|
|
adds r3, r3, r2
|
|
str r3, [r5, #60]
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.size bmw_small_f2, .-bmw_small_f2
|
|
.align 2
|
|
.global bmw_small_nextBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_nextBlock, %function
|
|
bmw_small_nextBlock:
|
|
@ args = 0, pretend = 0, frame = 128
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
sub sp, sp, #128
|
|
mov r6, r1
|
|
mov r0, sp
|
|
mov r1, r5
|
|
mov r2, r6
|
|
bl bmw_small_f0
|
|
mov r0, sp
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl bmw_small_f1
|
|
mov r0, r5
|
|
mov r1, sp
|
|
mov r2, r6
|
|
bl bmw_small_f2
|
|
ldr r3, [r5, #64]
|
|
mov r4, sp
|
|
adds r3, r3, #1
|
|
str r3, [r5, #64]
|
|
add sp, sp, #128
|
|
pop {r4, r5, r6, pc}
|
|
.size bmw_small_nextBlock, .-bmw_small_nextBlock
|
|
.align 2
|
|
.global bmw256_nextBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw256_nextBlock, %function
|
|
bmw256_nextBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
bl bmw_small_nextBlock
|
|
pop {pc}
|
|
.size bmw256_nextBlock, .-bmw256_nextBlock
|
|
.align 2
|
|
.global bmw224_nextBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw224_nextBlock, %function
|
|
bmw224_nextBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
bl bmw_small_nextBlock
|
|
pop {pc}
|
|
.size bmw224_nextBlock, .-bmw224_nextBlock
|
|
.align 2
|
|
.global bmw_small_lastBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw_small_lastBlock, %function
|
|
bmw_small_lastBlock:
|
|
@ args = 0, pretend = 0, frame = 192
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, sl, lr}
|
|
movw r3, #511
|
|
uxth r8, r2
|
|
cmp r8, r3
|
|
sub sp, sp, #192
|
|
mov r6, r0
|
|
mov sl, r1
|
|
bls .L65
|
|
mov r5, r1
|
|
mov r4, r8
|
|
mov r7, r3
|
|
.L66:
|
|
mov r1, r5
|
|
mov r0, r6
|
|
bl bmw_small_nextBlock
|
|
sub r3, r4, #512
|
|
uxth r4, r3
|
|
adds r5, r5, #64
|
|
cmp r4, r7
|
|
bhi .L66
|
|
sub r2, r8, #512
|
|
uxth r2, r2
|
|
lsrs r3, r2, #9
|
|
adds r3, r3, #1
|
|
lsls r3, r3, #6
|
|
lsl r8, r2, #23
|
|
add sl, sl, r3
|
|
lsr r8, r8, #23
|
|
.L65:
|
|
add r5, sp, #128
|
|
movs r1, #0
|
|
movs r2, #64
|
|
mov r0, r5
|
|
bl memset
|
|
add r2, r8, #7
|
|
asrs r2, r2, #3
|
|
mov r1, sl
|
|
mov r0, r5
|
|
bl memcpy
|
|
add r3, sp, #192
|
|
add ip, r3, r8, lsr #3
|
|
and r1, r8, #7
|
|
movs r3, #128
|
|
asrs r3, r3, r1
|
|
ldrb r2, [ip, #-64] @ zero_extendqisi2
|
|
orrs r3, r3, r2
|
|
strb r3, [ip, #-64]
|
|
cmp r8, #448
|
|
it lt
|
|
ldrlt r1, [r6, #64]
|
|
bge .L74
|
|
.L67:
|
|
mov r2, #512
|
|
mov r3, r8
|
|
mov r4, #0
|
|
umlal r3, r4, r2, r1
|
|
mov r0, r6
|
|
str r3, [r5, #56]
|
|
str r4, [r5, #60]
|
|
mov r1, r5
|
|
bl bmw_small_nextBlock
|
|
movs r2, #64
|
|
mov r0, r5
|
|
movs r1, #170
|
|
bl memset
|
|
movs r2, #0
|
|
movs r3, #160
|
|
.L68:
|
|
strb r3, [r5, r2]
|
|
adds r2, r2, #4
|
|
adds r3, r3, #1
|
|
cmp r2, #64
|
|
uxtb r3, r3
|
|
bne .L68
|
|
mov r1, r5
|
|
mov r0, sp
|
|
mov r2, r6
|
|
bl bmw_small_f0
|
|
mov r2, r5
|
|
mov r0, sp
|
|
mov r1, r6
|
|
bl bmw_small_f1
|
|
mov r4, r6
|
|
mov r0, r5
|
|
mov r1, sp
|
|
mov r2, r6
|
|
bl bmw_small_f2
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
mov ip, r5
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia ip!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia ip, {r0, r1, r2, r3}
|
|
stmia r4, {r0, r1, r2, r3}
|
|
add sp, sp, #192
|
|
pop {r4, r5, r6, r7, r8, sl, pc}
|
|
.L74:
|
|
mov r1, r5
|
|
mov r0, r6
|
|
bl bmw_small_nextBlock
|
|
ldr r1, [r6, #64]
|
|
movs r3, #0
|
|
subs r1, r1, #1
|
|
str r3, [sp, #128]
|
|
str r3, [sp, #132]
|
|
str r3, [sp, #136]
|
|
str r3, [sp, #140]
|
|
str r3, [sp, #144]
|
|
str r3, [sp, #148]
|
|
str r3, [sp, #152]
|
|
str r3, [sp, #156]
|
|
str r3, [sp, #160]
|
|
str r3, [sp, #164]
|
|
str r3, [sp, #168]
|
|
str r3, [sp, #172]
|
|
str r3, [sp, #176]
|
|
str r3, [sp, #180]
|
|
str r1, [r6, #64]
|
|
b .L67
|
|
.size bmw_small_lastBlock, .-bmw_small_lastBlock
|
|
.align 2
|
|
.global bmw256
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw256, %function
|
|
bmw256:
|
|
@ args = 0, pretend = 0, frame = 68
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, sl, lr}
|
|
ldr r3, .L82
|
|
sub sp, sp, #68
|
|
add r6, sp, #68
|
|
mov sl, r1
|
|
mov r7, r2
|
|
mov r9, r0
|
|
str r3, [r6, #-68]!
|
|
mov r2, sp
|
|
add r1, sp, #60
|
|
.L76:
|
|
ldr r3, [r2, #0]
|
|
add r3, r3, #67372036
|
|
str r3, [r2, #4]!
|
|
cmp r2, r1
|
|
bne .L76
|
|
movs r3, #0
|
|
str r3, [sp, #64]
|
|
movw r3, #511
|
|
cmp r7, r3
|
|
bls .L77
|
|
mov r5, sl
|
|
mov r4, r7
|
|
mov r8, r3
|
|
.L78:
|
|
mov r1, r5
|
|
mov r0, sp
|
|
sub r4, r4, #512
|
|
bl bmw_small_nextBlock
|
|
adds r5, r5, #64
|
|
cmp r4, r8
|
|
bhi .L78
|
|
sub r2, r7, #512
|
|
lsrs r3, r2, #9
|
|
adds r3, r3, #1
|
|
lsls r3, r3, #6
|
|
lsls r7, r2, #23
|
|
add sl, sl, r3
|
|
lsrs r7, r7, #23
|
|
.L77:
|
|
uxth r2, r7
|
|
mov r0, sp
|
|
mov r1, sl
|
|
bl bmw_small_lastBlock
|
|
mov r0, r9
|
|
add r1, sp, #32
|
|
movs r2, #32
|
|
bl memcpy
|
|
add sp, sp, #68
|
|
pop {r4, r5, r6, r7, r8, r9, sl, pc}
|
|
.L83:
|
|
.align 2
|
|
.L82:
|
|
.word 1078018627
|
|
.size bmw256, .-bmw256
|
|
.align 2
|
|
.global bmw224
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw224, %function
|
|
bmw224:
|
|
@ args = 0, pretend = 0, frame = 68
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, sl, lr}
|
|
ldr r3, .L91
|
|
sub sp, sp, #68
|
|
add r6, sp, #68
|
|
mov sl, r1
|
|
mov r7, r2
|
|
mov r9, r0
|
|
str r3, [r6, #-68]!
|
|
mov r2, sp
|
|
add r1, sp, #60
|
|
.L85:
|
|
ldr r3, [r2, #0]
|
|
add r3, r3, #67372036
|
|
str r3, [r2, #4]!
|
|
cmp r2, r1
|
|
bne .L85
|
|
movs r3, #0
|
|
str r3, [sp, #64]
|
|
movw r3, #511
|
|
cmp r7, r3
|
|
bls .L86
|
|
mov r5, sl
|
|
mov r4, r7
|
|
mov r8, r3
|
|
.L87:
|
|
mov r1, r5
|
|
mov r0, sp
|
|
sub r4, r4, #512
|
|
bl bmw_small_nextBlock
|
|
adds r5, r5, #64
|
|
cmp r4, r8
|
|
bhi .L87
|
|
sub r2, r7, #512
|
|
lsrs r3, r2, #9
|
|
adds r3, r3, #1
|
|
lsls r3, r3, #6
|
|
lsls r7, r2, #23
|
|
add sl, sl, r3
|
|
lsrs r7, r7, #23
|
|
.L86:
|
|
uxth r2, r7
|
|
mov r0, sp
|
|
mov r1, sl
|
|
bl bmw_small_lastBlock
|
|
mov r0, r9
|
|
add r1, sp, #36
|
|
movs r2, #28
|
|
bl memcpy
|
|
add sp, sp, #68
|
|
pop {r4, r5, r6, r7, r8, r9, sl, pc}
|
|
.L92:
|
|
.align 2
|
|
.L91:
|
|
.word 66051
|
|
.size bmw224, .-bmw224
|
|
.align 2
|
|
.global bmw256_lastBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw256_lastBlock, %function
|
|
bmw256_lastBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
uxth r2, r2
|
|
bl bmw_small_lastBlock
|
|
pop {pc}
|
|
.size bmw256_lastBlock, .-bmw256_lastBlock
|
|
.align 2
|
|
.global bmw224_lastBlock
|
|
.thumb
|
|
.thumb_func
|
|
.type bmw224_lastBlock, %function
|
|
bmw224_lastBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {lr}
|
|
uxth r2, r2
|
|
bl bmw_small_lastBlock
|
|
pop {pc}
|
|
.size bmw224_lastBlock, .-bmw224_lastBlock
|
|
.section .rodata
|
|
.align 2
|
|
.type k_lut, %object
|
|
.size k_lut, 64
|
|
k_lut:
|
|
.word 1431655760
|
|
.word 1521134245
|
|
.word 1610612730
|
|
.word 1700091215
|
|
.word 1789569700
|
|
.word 1879048185
|
|
.word 1968526670
|
|
.word 2058005155
|
|
.word 2147483640
|
|
.word -2058005171
|
|
.word -1968526686
|
|
.word -1879048201
|
|
.word -1789569716
|
|
.word -1700091231
|
|
.word -1610612746
|
|
.word -1521134261
|
|
.ident "GCC: (GNU) 4.3.2"
|