.file "arith-rand-ll.c" .data .align 2 .type seed.0, @object .size seed.0, 8 seed.0: .long 0 .long 47114711 .text .align 2 .globl simple_rand .type simple_rand, @function simple_rand: link.w %a6,#0 move.l %d3,-(%sp) move.l %d2,-(%sp) move.l (seed.0),%d2 move.l seed.0+4,%d3 move.l %d3,%d1 mulu.l #1103515245,%d0:%d1 muls.l #1103515245,%d2 add.l %d2,%d0 clr.l %d2 add.l #12345,%d1 addx.l %d2,%d0 move.l %d0,(seed.0) move.l %d1,seed.0+4 move.b %d0,%d1 lsr.l #8,%d0 ror.l #8,%d1 move.l (%sp)+,%d2 move.l (%sp)+,%d3 unlk %a6 rts .size simple_rand, .-simple_rand .globl __ashldi3 .align 2 .globl random_bitstring .type random_bitstring, @function random_bitstring: link.w %a6,#-4 movm.l #0x3f3c,-(%sp) clr.l -4(%a6) sub.l %a4,%a4 sub.l %a5,%a5 .align 2 .L3: jbsr simple_rand move.l %d0,%a2 move.l %d1,%a3 move.l %d0,%d6 move.l %d1,%d7 asr.l #1,%d6 roxr.l #1,%d7 move.l %d6,%d4 move.l %d7,%d5 tst.l %d6 jbmi .L11 .L6: move.l %d4,%d1 moveq.l #28,%d0 lsl.l %d0,%d1 move.l %d5,%d0 lsr.l #4,%d0 move.l %d1,%d3 or.l %d0,%d3 move.l %d4,%d2 asr.l #4,%d2 move.l %d3,%d5 moveq.l #28,%d1 lsr.l %d1,%d5 move.l %d2,%d4 lsl.l #4,%d4 move.l %d5,%d0 or.l %d4,%d0 move.l %d3,%d1 lsl.l #4,%d1 sub.l %d1,%d7 subx.l %d0,%d6 move.l %d6,%d0 move.l %d7,%d1 move.l %d1,%d2 add.l %d1,-4(%a6) tst.l %d1 jbeq .L2 move.l %d1,-(%sp) move.l %a5,-(%sp) move.l %a4,-(%sp) jbsr __ashldi3 lea (12,%sp),%sp move.l %d0,%a4 move.l %d1,%a5 move.l %a2,%d0 move.l %a3,%d1 clr.l %d0 and.l #1,%d1 move.l %d0,%a2 move.l %d1,%a3 tst.l %a3 jbeq .L9 moveq.l #1,%d0 lsl.l %d2,%d0 move.l #-1,%d1 add.l %d0,%d1 smi %d0 extb.l %d0 move.l %a4,%d2 move.l %a5,%d3 or.l %d0,%d2 or.l %d1,%d3 move.l %d2,%a4 move.l %d3,%a5 .L9: moveq.l #70,%d3 cmp.l -4(%a6),%d3 jbcc .L3 jbra .L2 .align 2 .L11: clr.l %d4 moveq.l #15,%d5 add.l %d7,%d5 addx.l %d6,%d4 jbra .L6 .align 2 .L2: move.l %a4,%d0 move.l %a5,%d1 movm.l -44(%a6),#0x3cfc unlk %a6 rts .size random_bitstring, .-random_bitstring .globl __udivdi3 .globl __umoddi3 .globl __divdi3 .globl __moddi3 .align 2 .globl main .type main, @function main: link.w %a6,#-36 movm.l #0x3f3c,-(%sp) clr.l -16(%a6) clr.l -12(%a6) clr.l -24(%a6) clr.l -20(%a6) clr.l -28(%a6) clr.w -34(%a6) clr.l -8(%a6) move.l #9999,-4(%a6) clr.l -32(%a6) clr.w -36(%a6) .align 2 .L49: jbsr random_bitstring move.l %d0,%a4 move.l %d1,%a5 jbsr random_bitstring move.l %d0,%d4 move.l %d1,%d5 move.l %d4,%d0 or.l %d5,%d0 jbne .L52 .L15: moveq.l #-1,%d1 moveq.l #-1,%d2 add.l %d2,-4(%a6) move.l -8(%a6),%d3 addx.l %d1,%d3 move.l %d3,-8(%a6) tst.l -8(%a6) jbpl .L49 jbra .L53 .align 2 .L52: move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %a5,-(%sp) move.l %a4,-(%sp) jbsr __udivdi3 lea (16,%sp),%sp move.l %d0,%d2 move.l %d1,%d3 move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %a5,-(%sp) move.l %a4,-(%sp) jbsr __umoddi3 lea (16,%sp),%sp move.l %d0,%d6 move.l %d1,%d7 sub.l %d5,%d1 subx.l %d4,%d0 jbcc .L46 move.l %d3,%d1 mulu.l %d5,%d0:%d1 move.l %d0,-16(%a6) move.l %d1,-12(%a6) move.l %d3,%d0 muls.l %d4,%d0 add.l -16(%a6),%d0 move.l %d5,%d1 muls.l %d2,%d1 add.l %d1,%d0 move.l %d0,-16(%a6) move.l -16(%a6),%d0 move.l -12(%a6),%d1 add.l %d7,%d1 addx.l %d6,%d0 move.l %a4,%d2 move.l %a5,%d3 sub.l %d3,%d1 subx.l %d2,%d0 jbne .L46 move.l %a4,%d0 move.l %a5,%d1 add.l %d1,%d1 addx.l %d0,%d0 jbne .L22 moveq.l #-1,%d0 moveq.l #-1,%d1 sub.l %d5,%d1 subx.l %d4,%d0 jbeq .L15 .L22: move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %a5,-(%sp) move.l %a4,-(%sp) jbsr __divdi3 lea (16,%sp),%sp move.l %d0,%a2 move.l %d1,%a3 move.l %d5,-(%sp) move.l %d4,-(%sp) move.l %a5,-(%sp) move.l %a4,-(%sp) jbsr __moddi3 lea (16,%sp),%sp move.l %d0,%d2 move.l %d1,%d3 move.l %d0,%a0 move.l %d1,%a1 tst.l %d0 jbmi .L54 .L25: move.l %d4,%d6 move.l %d5,%d7 tst.l %d4 jbmi .L55 .L26: move.l %a0,%d0 move.l %a1,%d1 sub.l %d7,%d1 subx.l %d6,%d0 jbcc .L46 move.l %a3,%d1 mulu.l %d5,%d0:%d1 move.l %d0,-24(%a6) move.l %d1,-20(%a6) move.l %a3,%d0 muls.l %d4,%d0 add.l -24(%a6),%d0 move.l %a2,%d1 muls.l %d5,%d1 add.l %d1,%d0 move.l %d0,-24(%a6) move.l -24(%a6),%d0 move.l -20(%a6),%d1 add.l %d3,%d1 addx.l %d2,%d0 move.l %a4,%d2 move.l %a5,%d3 sub.l %d3,%d1 subx.l %d2,%d0 jbne .L46 .L18: move.l %d5,%d2 jbeq .L15 move.l %a5,%d0 divul.l %d5,%d3:%d0 cmp.l %d3,%d5 jbls .L46 muls.l %d5,%d0 add.l %d0,%d3 cmp.l %d3,%a5 jbne .L46 move.l %d3,%d0 add.l %d0,%d0 jbne .L30 moveq.l #-1,%d0 cmp.l %d5,%d0 jbeq .L15 .L30: move.l %d3,%d6 divsl.l %d2,%d0:%d6 move.l %d0,%d7 jblt .L56 .L33: move.l %d5,%d1 jblt .L57 .L34: cmp.l %d7,%d1 jbls .L46 muls.l %d2,%d6 add.l %d6,%d0 cmp.l %d0,%d3 jbne .L46 move.w %a5,%d6 move.w %d5,%d3 jbeq .L15 move.w %a5,%d0 and.l #0xFFFF,%d0 divu.w %d5,%d0 move.l %d0,%d1 swap %d1 cmp.w %d1,%d5 jbls .L46 mulu.w %d5,%d0 move.w %d1,-26(%a6) add.l -28(%a6),%d0 move.w %a5,-30(%a6) cmp.l -32(%a6),%d0 jbne .L46 move.w %a5,%d0 ext.l %d0 move.w %d5,%d2 ext.l %d2 divsl.l %d2,%d1:%d0 move.w %d0,%d7 move.w %d1,%a0 tst.l %a0 jblt .L58 .L40: move.l %d2,%d0 jblt .L59 .L41: and.l #0xFFFF,%d0 cmp.l %a0,%d0 jble .L46 muls.w %d3,%d7 add.w %d1,%d7 cmp.w %d7,%d6 jbne .L46 move.w %a5,%d7 move.b %d5,%d6 jbeq .L15 move.b %d7,-33(%a6) move.b %d5,-35(%a6) move.w -34(%a6),%d1 and.l #0xFFFF,%d1 divu.w -36(%a6),%d1 move.l %d1,%d2 swap %d2 cmp.b %d5,%d2 jbcc .L46 and.l #0xFF,%d1 clr.l %d0 move.b %d5,%d0 muls.l %d0,%d1 clr.l %d0 move.b %d2,%d0 add.l %d0,%d1 clr.l %d0 move.b %d7,%d0 cmp.l %d1,%d0 jbne .L46 move.w %a5,%d0 extb.l %d0 move.b %d5,%d2 extb.l %d2 divsl.l %d2,%d1:%d0 move.b %d0,%d4 move.b %d1,%d3 extb.l %d3 jblt .L60 .L47: move.l %d2,%d0 jblt .L61 .L48: and.l #0xFF,%d0 cmp.l %d3,%d0 jble .L46 move.w %d4,%d0 muls.w %d6,%d0 add.b %d0,%d1 cmp.b %d1,%d7 jbeq .L15 jbra .L46 .align 2 .L61: neg.l %d0 jbra .L48 .align 2 .L60: neg.l %d3 jbra .L47 .align 2 .L59: neg.l %d0 jbra .L41 .align 2 .L58: move.l %a0,%d0 neg.l %d0 move.l %d0,%a0 jbra .L40 .align 2 .L57: move.l %d2,%d1 neg.l %d1 jbra .L34 .align 2 .L56: neg.l %d7 jbra .L33 .align 2 .L55: neg.l %d7 negx.l %d6 jbra .L26 .align 2 .L54: neg.l %d1 negx.l %d0 move.l %d0,%a0 move.l %d1,%a1 jbra .L25 .align 2 .L46: jbsr abort .align 2 .L53: clr.l -(%sp) jbsr exit nop .size main, .-main .ident "GCC: (GNU) 3.3.2"