Files
amigaos-cross-toolchain6/test/test13/bbb/rkiss.s
T

236 lines
3.3 KiB
ArmAsm

#NO_APP
.text
.align 2
.globl _rand64
_rand64:
movem.l #16188,-(sp)
lea _b,a3
move.l (a3),a0
move.l 4(a3),a2
move.l a2,d1
moveq #25,d0
lsr.l d0,d1
move.l a0,d2
lsl.l #7,d2
move.l d1,d0
or.l d2,d0
move.l a0,d2
moveq #25,d1
lsr.l d1,d2
move.l a2,d3
lsl.l #7,d3
move.l d2,d1
or.l d3,d1
move.l _a,d3
move.l _a+4,d4
sub.l d1,d4
subx.l d0,d3
move.l d3,a4
move.l d4,a5
move.l _c,d4
move.l _c+4,d5
move.l d5,d0
clr.w d0
swap d0
lsr.w #3,d0
move.l d4,d1
moveq #13,d2
lsl.l d2,d1
or.l d1,d0
move.l d0,a1
move.l d4,d1
clr.w d1
swap d1
lsr.w #3,d1
move.l d5,d0
lsl.l d2,d0
or.l d0,d1
move.l a1,d6
move.l a0,d0
eor.l d0,d6
move.l a2,d7
eor.l d1,d7
move.l d6,_a
move.l d7,_a+4
move.l _d,d2
move.l _d+4,d3
move.l d2,d0
lsl.l #5,d0
move.l d0,a0
move.l d3,d0
moveq #27,d1
lsr.l d1,d0
move.l a0,d1
or.l d0,d1
move.l d1,a1
move.l d3,d0
lsl.l #5,d0
move.l d0,a0
move.l d2,d1
moveq #27,d0
lsr.l d0,d1
move.l a0,d0
or.l d1,d0
move.l d0,a0
move.l a0,d0
move.l a1,d1
add.l d5,d1
addx.l d4,d0
move.l d0,(a3)
move.l d1,4(a3)
move.l a4,d0
move.l a5,d1
add.l d3,d1
addx.l d2,d0
move.l d0,_c
move.l d1,_c+4
move.l a4,d0
move.l a5,d1
add.l d7,d1
addx.l d6,d0
move.l d0,_d
move.l d1,_d+4
movem.l (sp)+,#15612
rts
.align 2
.globl _rkissSeed
_rkissSeed:
lea (-32,sp),sp
movem.l #16188,-(sp)
move.l 76(sp),a5
cmp.w #0,a5
jeq .L6
clr.l _a
move.l #-236298515,_a+4
clr.l _d
move.l #-723440521,_d+4
clr.l _c
move.l #-723440521,_c+4
clr.l _b
move.l #-723440521,_b+4
cmp.w #0,a5
jle .L2
clr.l d2
move.l #-723440521,d3
move.l d2,d4
move.l d3,d5
move.l d2,d0
move.l d3,d1
clr.l d6
move.l #-236298515,d7
sub.l a1,a1
move.l a1,a0
move.l d6,48(sp)
move.l d7,52(sp)
move.l d2,40(sp)
move.l d3,44(sp)
move.l a5,68(sp)
.L4:
move.l d1,d2
moveq #25,d3
lsr.l d3,d2
move.l d0,d6
lsl.l #7,d6
or.l d6,d2
move.l d2,a4
move.l d0,d6
lsr.l d3,d6
move.l d1,d2
lsl.l #7,d2
or.l d2,d6
move.l d6,a5
move.l 48(sp),d6
move.l 52(sp),d7
move.l a4,d2
sub.l a5,d7
subx.l d2,d6
move.l d6,a2
move.l d7,a3
move.l d5,d3
clr.w d3
swap d3
lsr.w #3,d3
move.l d4,d2
moveq #13,d7
lsl.l d7,d2
or.l d2,d3
move.l d4,d2
clr.w d2
swap d2
lsr.w #3,d2
move.l d5,d6
lsl.l d7,d6
or.l d6,d2
eor.l d0,d3
move.l d3,48(sp)
eor.l d1,d2
move.l d2,52(sp)
move.l 40(sp),d1
lsl.l #5,d1
move.l 44(sp),d0
moveq #27,d2
lsr.l d2,d0
or.l d0,d1
move.l d1,60(sp)
move.l 44(sp),d1
lsl.l #5,d1
move.l 40(sp),d0
lsr.l d2,d0
or.l d0,d1
move.l d1,56(sp)
move.l 56(sp),d0
move.l 60(sp),d1
add.l d5,d1
addx.l d4,d0
move.l 40(sp),d4
move.l 44(sp),d5
move.l a2,d6
add.l a3,d5
addx.l d6,d4
move.l 48(sp),d2
move.l 52(sp),d3
move.l a2,d6
add.l a3,d3
addx.l d6,d2
move.l d2,40(sp)
move.l d3,44(sp)
addq.l #1,a0
cmp.l 68(sp),a0
jlt .L4
move.l 48(sp),d6
move.l 52(sp),d7
move.l d6,_a
move.l d7,_a+4
move.l d0,_b
move.l d1,_b+4
move.l d4,_c
move.l d5,_c+4
move.l d2,_d
move.l d3,_d+4
.L2:
movem.l (sp)+,#15612
lea (32,sp),sp
rts
.L6:
move.w #73,a1
clr.l d2
move.l #-723440521,d3
move.l d2,d4
move.l d3,d5
move.l d2,d0
move.l d3,d1
clr.l d6
move.l #-236298515,d7
sub.l a2,a2
move.l a2,a0
move.l d6,48(sp)
move.l d7,52(sp)
move.l d2,40(sp)
move.l d3,44(sp)
move.l a1,68(sp)
jra .L4
.lcomm _d,8
.lcomm _c,8
.lcomm _b,8
.lcomm _a,8