        .seg "text"

        .global mulu16_,mulu32_,mulu32_unchecked
        .global divu_6432_3232_,divu_3216_1616_
        .global copy_loop_up,copy_loop_down,fill_loop_up,fill_loop_down
        .global clear_loop_up,clear_loop_down
        .global or_loop_up,xor_loop_up,and_loop_up,eqv_loop_up
        .global nand_loop_up,nor_loop_up,andc2_loop_up,orc2_loop_up
        .global not_loop_up
        .global and_test_loop_up,test_loop_up,compare_loop_up
        .global add_loop_down,addto_loop_down,inc_loop_down
        .global sub_loop_down,subx_loop_down,subfrom_loop_down,dec_loop_down
        .global neg_loop_down
        .global shift1left_loop_down,shiftleft_loop_down,shiftleftcopy_loop_down
        .global shift1right_loop_up,shiftright_loop_up,shiftrightsigned_loop_up,shiftrightcopy_loop_up
        .global mulusmall_loop_down,mulu_loop_down,muluadd_loop_down,mulusub_loop_down
        .global divu_loop_up,divucopy_loop_up
mulu16_:





        mov %o1,%y
        nop
        andcc %g0,%g0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2


        rd %y,%o0
        srl %o0,17,%o0
        sll %o2,15,%o2
        jmp %o7+8
       or %o2,%o0,%o0




mulu32_:





        mov %o1,%y
        sra %o0,31,%o3
        andcc %g0,%g0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%g0,%o2
        and %o3,%o1,%o3
        add %o2,%o3,%g1
        jmp %o7+8
       rd %y,%o0




mulu32_unchecked:





        subcc %o0,%o1,%g0
        bcc,a Ll01
       mov %o1,%y

        mov %o0,%y
        nop
        andcc %g0,%g0,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2
        mulscc %o2,%o1,%o2


        rd %y,%o0
        srl %o0,17,%o0
        sll %o2,15,%o2
        jmp %o7+8
       or %o2,%o0,%o0
Ll01:
        nop
        andcc %g0,%g0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2
        mulscc %o2,%o0,%o2


        rd %y,%o0
        srl %o0,17,%o0
        sll %o2,15,%o2
        jmp %o7+8
       or %o2,%o0,%o0




divu_6432_3232_:
        addcc %o2,%o2,%g0
        bcc Lsmalldiv
       andcc %o2,1,%g0
        be Levendiv
       srl %o2,1,%o2




        add %o2,1,%o2



        subcc %o0,%o2,%o3; bcc Lb01; addxcc %o1,%o1,%o1
La01: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb02; addxcc %o1,%o1,%o1
La02: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb03; addxcc %o1,%o1,%o1
La03: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb04; addxcc %o1,%o1,%o1
La04: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb05; addxcc %o1,%o1,%o1
La05: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb06; addxcc %o1,%o1,%o1
La06: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb07; addxcc %o1,%o1,%o1
La07: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb08; addxcc %o1,%o1,%o1
La08: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb09; addxcc %o1,%o1,%o1
La09: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb10; addxcc %o1,%o1,%o1
La10: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb11; addxcc %o1,%o1,%o1
La11: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb12; addxcc %o1,%o1,%o1
La12: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb13; addxcc %o1,%o1,%o1
La13: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb14; addxcc %o1,%o1,%o1
La14: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb15; addxcc %o1,%o1,%o1
La15: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb16; addxcc %o1,%o1,%o1
La16: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb17; addxcc %o1,%o1,%o1
La17: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb18; addxcc %o1,%o1,%o1
La18: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb19; addxcc %o1,%o1,%o1
La19: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb20; addxcc %o1,%o1,%o1
La20: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb21; addxcc %o1,%o1,%o1
La21: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb22; addxcc %o1,%o1,%o1
La22: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb23; addxcc %o1,%o1,%o1
La23: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb24; addxcc %o1,%o1,%o1
La24: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb25; addxcc %o1,%o1,%o1
La25: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb26; addxcc %o1,%o1,%o1
La26: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb27; addxcc %o1,%o1,%o1
La27: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb28; addxcc %o1,%o1,%o1
La28: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb29; addxcc %o1,%o1,%o1
La29: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb30; addxcc %o1,%o1,%o1
La30: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb31; addxcc %o1,%o1,%o1
La31: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lb32; addxcc %o1,%o1,%o1
La32: addx %o0,%o0,%o0
        xor %o1,-1,%o1
        add %o2,%o2,%o2
        sub %o2,1,%o2




        addcc %o1,%o0,%o0
        bcc Ll02
       subcc %o0,%o2,%o3
        subcc %o3,%o2,%o0
        bcs Ll03
       mov %o3,%g1

        mov %o0,%g1
        jmp %o7+8
       add %o1,2,%o0
Ll02:

        bcs Ll04
       mov %o3,%g1
Ll03:
        jmp %o7+8
       add %o1,1,%o0
Ll04:
        mov %o0,%g1
        jmp %o7+8
       mov %o1,%o0

Lb01: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La02; addxcc %o1,%o1,%o1
Lb02: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La03; addxcc %o1,%o1,%o1
Lb03: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La04; addxcc %o1,%o1,%o1
Lb04: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La05; addxcc %o1,%o1,%o1
Lb05: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La06; addxcc %o1,%o1,%o1
Lb06: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La07; addxcc %o1,%o1,%o1
Lb07: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La08; addxcc %o1,%o1,%o1
Lb08: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La09; addxcc %o1,%o1,%o1
Lb09: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La10; addxcc %o1,%o1,%o1
Lb10: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La11; addxcc %o1,%o1,%o1
Lb11: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La12; addxcc %o1,%o1,%o1
Lb12: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La13; addxcc %o1,%o1,%o1
Lb13: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La14; addxcc %o1,%o1,%o1
Lb14: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La15; addxcc %o1,%o1,%o1
Lb15: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La16; addxcc %o1,%o1,%o1
Lb16: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La17; addxcc %o1,%o1,%o1
Lb17: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La18; addxcc %o1,%o1,%o1
Lb18: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La19; addxcc %o1,%o1,%o1
Lb19: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La20; addxcc %o1,%o1,%o1
Lb20: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La21; addxcc %o1,%o1,%o1
Lb21: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La22; addxcc %o1,%o1,%o1
Lb22: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La23; addxcc %o1,%o1,%o1
Lb23: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La24; addxcc %o1,%o1,%o1
Lb24: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La25; addxcc %o1,%o1,%o1
Lb25: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La26; addxcc %o1,%o1,%o1
Lb26: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La27; addxcc %o1,%o1,%o1
Lb27: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La28; addxcc %o1,%o1,%o1
Lb28: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La29; addxcc %o1,%o1,%o1
Lb29: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La30; addxcc %o1,%o1,%o1
Lb30: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La31; addxcc %o1,%o1,%o1
Lb31: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc La32; addxcc %o1,%o1,%o1
Lb32: addx %o3,%o3,%o3
        xor %o1,-1,%o1
        add %o2,%o2,%o2
        sub %o2,1,%o2




        addcc %o1,%o3,%o3
        bcc Ll05
       subcc %o3,%o2,%o0
        subcc %o0,%o2,%o3
        bcs Ll06
       mov %o0,%g1

        mov %o3,%g1
        jmp %o7+8
       add %o1,2,%o0
Ll05:

        bcs Ll07
       mov %o0,%g1
Ll06:
        jmp %o7+8
       add %o1,1,%o0
Ll07:
        mov %o3,%g1
        jmp %o7+8
       mov %o1,%o0
Lsmalldiv:
        addcc %o1,%o1,%o1
Lc00: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld01; addxcc %o1,%o1,%o1
Lc01: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld02; addxcc %o1,%o1,%o1
Lc02: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld03; addxcc %o1,%o1,%o1
Lc03: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld04; addxcc %o1,%o1,%o1
Lc04: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld05; addxcc %o1,%o1,%o1
Lc05: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld06; addxcc %o1,%o1,%o1
Lc06: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld07; addxcc %o1,%o1,%o1
Lc07: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld08; addxcc %o1,%o1,%o1
Lc08: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld09; addxcc %o1,%o1,%o1
Lc09: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld10; addxcc %o1,%o1,%o1
Lc10: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld11; addxcc %o1,%o1,%o1
Lc11: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld12; addxcc %o1,%o1,%o1
Lc12: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld13; addxcc %o1,%o1,%o1
Lc13: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld14; addxcc %o1,%o1,%o1
Lc14: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld15; addxcc %o1,%o1,%o1
Lc15: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld16; addxcc %o1,%o1,%o1
Lc16: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld17; addxcc %o1,%o1,%o1
Lc17: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld18; addxcc %o1,%o1,%o1
Lc18: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld19; addxcc %o1,%o1,%o1
Lc19: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld20; addxcc %o1,%o1,%o1
Lc20: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld21; addxcc %o1,%o1,%o1
Lc21: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld22; addxcc %o1,%o1,%o1
Lc22: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld23; addxcc %o1,%o1,%o1
Lc23: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld24; addxcc %o1,%o1,%o1
Lc24: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld25; addxcc %o1,%o1,%o1
Lc25: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld26; addxcc %o1,%o1,%o1
Lc26: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld27; addxcc %o1,%o1,%o1
Lc27: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld28; addxcc %o1,%o1,%o1
Lc28: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld29; addxcc %o1,%o1,%o1
Lc29: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld30; addxcc %o1,%o1,%o1
Lc30: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld31; addxcc %o1,%o1,%o1
Lc31: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Ld32; addxcc %o1,%o1,%o1
Lc32: mov %o0,%g1
        jmp %o7+8
       xor %o1,-1,%o0

Ld01: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc02; addxcc %o1,%o1,%o1
Ld02: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc03; addxcc %o1,%o1,%o1
Ld03: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc04; addxcc %o1,%o1,%o1
Ld04: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc05; addxcc %o1,%o1,%o1
Ld05: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc06; addxcc %o1,%o1,%o1
Ld06: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc07; addxcc %o1,%o1,%o1
Ld07: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc08; addxcc %o1,%o1,%o1
Ld08: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc09; addxcc %o1,%o1,%o1
Ld09: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc10; addxcc %o1,%o1,%o1
Ld10: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc11; addxcc %o1,%o1,%o1
Ld11: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc12; addxcc %o1,%o1,%o1
Ld12: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc13; addxcc %o1,%o1,%o1
Ld13: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc14; addxcc %o1,%o1,%o1
Ld14: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc15; addxcc %o1,%o1,%o1
Ld15: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc16; addxcc %o1,%o1,%o1
Ld16: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc17; addxcc %o1,%o1,%o1
Ld17: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc18; addxcc %o1,%o1,%o1
Ld18: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc19; addxcc %o1,%o1,%o1
Ld19: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc20; addxcc %o1,%o1,%o1
Ld20: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc21; addxcc %o1,%o1,%o1
Ld21: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc22; addxcc %o1,%o1,%o1
Ld22: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc23; addxcc %o1,%o1,%o1
Ld23: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc24; addxcc %o1,%o1,%o1
Ld24: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc25; addxcc %o1,%o1,%o1
Ld25: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc26; addxcc %o1,%o1,%o1
Ld26: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc27; addxcc %o1,%o1,%o1
Ld27: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc28; addxcc %o1,%o1,%o1
Ld28: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc29; addxcc %o1,%o1,%o1
Ld29: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc30; addxcc %o1,%o1,%o1
Ld30: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc31; addxcc %o1,%o1,%o1
Ld31: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Lc32; addxcc %o1,%o1,%o1
Ld32: mov %o3,%g1
        jmp %o7+8
       xor %o1,-1,%o0
Levendiv:





        subcc %o0,%o2,%o3; bcc Lf01; addxcc %o1,%o1,%o1
Le01: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf02; addxcc %o1,%o1,%o1
Le02: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf03; addxcc %o1,%o1,%o1
Le03: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf04; addxcc %o1,%o1,%o1
Le04: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf05; addxcc %o1,%o1,%o1
Le05: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf06; addxcc %o1,%o1,%o1
Le06: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf07; addxcc %o1,%o1,%o1
Le07: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf08; addxcc %o1,%o1,%o1
Le08: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf09; addxcc %o1,%o1,%o1
Le09: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf10; addxcc %o1,%o1,%o1
Le10: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf11; addxcc %o1,%o1,%o1
Le11: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf12; addxcc %o1,%o1,%o1
Le12: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf13; addxcc %o1,%o1,%o1
Le13: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf14; addxcc %o1,%o1,%o1
Le14: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf15; addxcc %o1,%o1,%o1
Le15: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf16; addxcc %o1,%o1,%o1
Le16: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf17; addxcc %o1,%o1,%o1
Le17: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf18; addxcc %o1,%o1,%o1
Le18: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf19; addxcc %o1,%o1,%o1
Le19: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf20; addxcc %o1,%o1,%o1
Le20: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf21; addxcc %o1,%o1,%o1
Le21: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf22; addxcc %o1,%o1,%o1
Le22: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf23; addxcc %o1,%o1,%o1
Le23: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf24; addxcc %o1,%o1,%o1
Le24: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf25; addxcc %o1,%o1,%o1
Le25: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf26; addxcc %o1,%o1,%o1
Le26: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf27; addxcc %o1,%o1,%o1
Le27: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf28; addxcc %o1,%o1,%o1
Le28: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf29; addxcc %o1,%o1,%o1
Le29: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf30; addxcc %o1,%o1,%o1
Le30: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf31; addxcc %o1,%o1,%o1
Le31: addx %o0,%o0,%o0; subcc %o0,%o2,%o3; bcc Lf32; addxcc %o1,%o1,%o1
Le32: addx %o0,%o0,%o0
        mov %o0,%g1
        jmp %o7+8
       xor %o1,-1,%o0

Lf01: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le02; addxcc %o1,%o1,%o1
Lf02: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le03; addxcc %o1,%o1,%o1
Lf03: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le04; addxcc %o1,%o1,%o1
Lf04: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le05; addxcc %o1,%o1,%o1
Lf05: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le06; addxcc %o1,%o1,%o1
Lf06: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le07; addxcc %o1,%o1,%o1
Lf07: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le08; addxcc %o1,%o1,%o1
Lf08: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le09; addxcc %o1,%o1,%o1
Lf09: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le10; addxcc %o1,%o1,%o1
Lf10: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le11; addxcc %o1,%o1,%o1
Lf11: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le12; addxcc %o1,%o1,%o1
Lf12: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le13; addxcc %o1,%o1,%o1
Lf13: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le14; addxcc %o1,%o1,%o1
Lf14: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le15; addxcc %o1,%o1,%o1
Lf15: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le16; addxcc %o1,%o1,%o1
Lf16: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le17; addxcc %o1,%o1,%o1
Lf17: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le18; addxcc %o1,%o1,%o1
Lf18: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le19; addxcc %o1,%o1,%o1
Lf19: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le20; addxcc %o1,%o1,%o1
Lf20: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le21; addxcc %o1,%o1,%o1
Lf21: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le22; addxcc %o1,%o1,%o1
Lf22: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le23; addxcc %o1,%o1,%o1
Lf23: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le24; addxcc %o1,%o1,%o1
Lf24: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le25; addxcc %o1,%o1,%o1
Lf25: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le26; addxcc %o1,%o1,%o1
Lf26: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le27; addxcc %o1,%o1,%o1
Lf27: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le28; addxcc %o1,%o1,%o1
Lf28: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le29; addxcc %o1,%o1,%o1
Lf29: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le30; addxcc %o1,%o1,%o1
Lf30: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le31; addxcc %o1,%o1,%o1
Lf31: addx %o3,%o3,%o3; subcc %o3,%o2,%o0; bcc Le32; addxcc %o1,%o1,%o1
Lf32: addx %o3,%o3,%o3
        mov %o3,%g1
        jmp %o7+8
       xor %o1,-1,%o0




divu_3216_1616_:
        sll %o1,16,%o1
        srl %o1,1,%o1
        sub %g0,%o1,%o2
        addcc %o0,%o2,%o0; bcc Lh01; addx %o0,%o0,%o0
Lg01: addcc %o0,%o2,%o0; bcc Lh02; addx %o0,%o0,%o0
Lg02: addcc %o0,%o2,%o0; bcc Lh03; addx %o0,%o0,%o0
Lg03: addcc %o0,%o2,%o0; bcc Lh04; addx %o0,%o0,%o0
Lg04: addcc %o0,%o2,%o0; bcc Lh05; addx %o0,%o0,%o0
Lg05: addcc %o0,%o2,%o0; bcc Lh06; addx %o0,%o0,%o0
Lg06: addcc %o0,%o2,%o0; bcc Lh07; addx %o0,%o0,%o0
Lg07: addcc %o0,%o2,%o0; bcc Lh08; addx %o0,%o0,%o0
Lg08: addcc %o0,%o2,%o0; bcc Lh09; addx %o0,%o0,%o0
Lg09: addcc %o0,%o2,%o0; bcc Lh10; addx %o0,%o0,%o0
Lg10: addcc %o0,%o2,%o0; bcc Lh11; addx %o0,%o0,%o0
Lg11: addcc %o0,%o2,%o0; bcc Lh12; addx %o0,%o0,%o0
Lg12: addcc %o0,%o2,%o0; bcc Lh13; addx %o0,%o0,%o0
Lg13: addcc %o0,%o2,%o0; bcc Lh14; addx %o0,%o0,%o0
Lg14: addcc %o0,%o2,%o0; bcc Lh15; addx %o0,%o0,%o0
Lg15: addcc %o0,%o2,%o0; bcc Lh16; addx %o0,%o0,%o0
Lg16:

        jmp %o7+8
       nop
Lh01: addcc %o0,%o1,%o0; bcs Lg02; addx %o0,%o0,%o0
Lh02: addcc %o0,%o1,%o0; bcs Lg03; addx %o0,%o0,%o0
Lh03: addcc %o0,%o1,%o0; bcs Lg04; addx %o0,%o0,%o0
Lh04: addcc %o0,%o1,%o0; bcs Lg05; addx %o0,%o0,%o0
Lh05: addcc %o0,%o1,%o0; bcs Lg06; addx %o0,%o0,%o0
Lh06: addcc %o0,%o1,%o0; bcs Lg07; addx %o0,%o0,%o0
Lh07: addcc %o0,%o1,%o0; bcs Lg08; addx %o0,%o0,%o0
Lh08: addcc %o0,%o1,%o0; bcs Lg09; addx %o0,%o0,%o0
Lh09: addcc %o0,%o1,%o0; bcs Lg10; addx %o0,%o0,%o0
Lh10: addcc %o0,%o1,%o0; bcs Lg11; addx %o0,%o0,%o0
Lh11: addcc %o0,%o1,%o0; bcs Lg12; addx %o0,%o0,%o0
Lh12: addcc %o0,%o1,%o0; bcs Lg13; addx %o0,%o0,%o0
Lh13: addcc %o0,%o1,%o0; bcs Lg14; addx %o0,%o0,%o0
Lh14: addcc %o0,%o1,%o0; bcs Lg15; addx %o0,%o0,%o0
Lh15: addcc %o0,%o1,%o0; bcs Lg16; addx %o0,%o0,%o0
Lh16:
        add %o0,%o1,%o0
        jmp %o7+8
       add %o0,%o1,%o0



copy_loop_up:

        andcc %o2,%o2,%g0
        be Ll09
       nop
Ll08: ld [%o0],%o3
          add %o0,4,%o0
          st %o3,[%o1]
          subcc %o2,1,%o2
          bne Ll08
         add %o1,4,%o1
Ll09: jmp %o7+8
       mov %o1,%o0
copy_loop_down:

        andcc %o2,%o2,%g0
        be Ll11
       sub %o0,4,%o0
Ll10: ld [%o0],%o3
          sub %o1,4,%o1
          st %o3,[%o1]
          subcc %o2,1,%o2
          bne Ll10
         sub %o0,4,%o0
Ll11: jmp %o7+8
       mov %o1,%o0
fill_loop_up:

        andcc %o1,%o1,%g0
        be Ll13
       nop
Ll12: st %o2,[%o0]
          subcc %o1,1,%o1
          bne Ll12
         add %o0,4,%o0
Ll13: jmp %o7+8
       nop
fill_loop_down:

        andcc %o1,%o1,%g0
        be Ll15
       sub %o0,4,%o0
Ll14: st %o2,[%o0]
          subcc %o1,1,%o1
          bne Ll14
         sub %o0,4,%o0
Ll15: jmp %o7+8
       add %o0,4,%o0
clear_loop_up:

        andcc %o1,%o1,%g0
        be Ll17
       nop
Ll16: st %g0,[%o0]
          subcc %o1,1,%o1
          bne Ll16
         add %o0,4,%o0
Ll17: jmp %o7+8
       nop
clear_loop_down:

        andcc %o1,%o1,%g0
        be Ll19
       sub %o0,4,%o0
Ll18: st %g0,[%o0]
          subcc %o1,1,%o1
          bne Ll18
         sub %o0,4,%o0
Ll19: jmp %o7+8
       add %o0,4,%o0
or_loop_up:

        andcc %o2,%o2,%g0
        be Ll21
       nop
Ll20: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          or %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll20
         add %o0,4,%o0
Ll21: jmp %o7+8
       nop
xor_loop_up:

        andcc %o2,%o2,%g0
        be Ll23
       nop
Ll22: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          xor %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll22
         add %o0,4,%o0
Ll23: jmp %o7+8
       nop
and_loop_up:

        andcc %o2,%o2,%g0
        be Ll25
       nop
Ll24: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          and %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll24
         add %o0,4,%o0
Ll25: jmp %o7+8
       nop
eqv_loop_up:

        andcc %o2,%o2,%g0
        be Ll27
       nop
Ll26: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          xnor %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll26
         add %o0,4,%o0
Ll27: jmp %o7+8
       nop
nand_loop_up:

        andcc %o2,%o2,%g0
        be Ll29
       nop
Ll28: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          and %o3,%o4,%o3
          xor %o3,-1,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll28
         add %o0,4,%o0
Ll29: jmp %o7+8
       nop
nor_loop_up:

        andcc %o2,%o2,%g0
        be Ll31
       nop
Ll30: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          or %o3,%o4,%o3
          xor %o3,-1,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll30
         add %o0,4,%o0
Ll31: jmp %o7+8
       nop
andc2_loop_up:

        andcc %o2,%o2,%g0
        be Ll33
       nop
Ll32: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          andn %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll32
         add %o0,4,%o0
Ll33: jmp %o7+8
       nop
orc2_loop_up:

        andcc %o2,%o2,%g0
        be Ll35
       nop
Ll34: ld [%o0],%o3
          ld [%o1],%o4
          add %o1,4,%o1
          orn %o3,%o4,%o3
          st %o3,[%o0]
          subcc %o2,1,%o2
          bne Ll34
         add %o0,4,%o0
Ll35: jmp %o7+8
       nop
not_loop_up:

        andcc %o1,%o1,%g0
        be Ll37
       nop
Ll36: ld [%o0],%o2
          subcc %o1,1,%o1
          xor %o2,-1,%o2
          st %o2,[%o0]
          bne Ll36
         add %o0,4,%o0
Ll37: jmp %o7+8
       nop
and_test_loop_up:

        andcc %o2,%o2,%g0
        be Ll39
       nop
Ll38: ld [%o0],%o3
          ld [%o1],%o4
          add %o0,4,%o0
          andcc %o3,%o4,%g0
          bne Ll40
         subcc %o2,1,%o2
          bne Ll38
         add %o1,4,%o1
Ll39: jmp %o7+8
       mov 0,%o0
Ll40: jmp %o7+8
       mov 1,%o0
test_loop_up:

        andcc %o1,%o1,%g0
        be Ll42
       nop
          ld [%o0],%o2
Ll41: add %o0,4,%o0
          andcc %o2,%o2,%g0
          bne Ll43
         subcc %o1,1,%o1
          bne,a Ll41
         ld [%o0],%o2
Ll42: jmp %o7+8
       mov 0,%o0
Ll43: jmp %o7+8
       mov 1,%o0
compare_loop_up:

        andcc %o2,%o2,%g0
        be Ll45
       nop
          ld [%o0],%o3
Ll44: ld [%o1],%o4
          add %o0,4,%o0
          subcc %o3,%o4,%g0
          bne Ll46
         add %o1,4,%o1
          subcc %o2,1,%o2
          bne,a Ll44
         ld [%o0],%o3
Ll45: jmp %o7+8
       mov 0,%o0
Ll46: blu Ll47
       nop
        jmp %o7+8
       mov 1,%o0
Ll47: jmp %o7+8
       mov -1,%o0
add_loop_down:

        andcc %o3,%o3,%g0
        be Ll49
       mov %g0,%g1
        sub %o0,4,%o0
Ll48: ld [%o0],%o4
          sub %o1,4,%o1
          ld [%o1],%o5
          subcc %g0,%g1,%g0
          addxcc %o4,%o5,%o4
          addx %g0,%g0,%g1
          sub %o2,4,%o2
          st %o4,[%o2]
          subcc %o3,1,%o3
          bne Ll48
         sub %o0,4,%o0
Ll49: jmp %o7+8
       mov %g1,%o0
addto_loop_down:

        andcc %o2,%o2,%g0
        be Ll51
       mov %g0,%o5
        sub %o0,4,%o0
Ll50: ld [%o0],%o3
          sub %o1,4,%o1
          ld [%o1],%o4
          subcc %g0,%o5,%g0
          addxcc %o4,%o3,%o4
          addx %g0,%g0,%o5
          st %o4,[%o1]
          subcc %o2,1,%o2
          bne Ll50
         sub %o0,4,%o0
Ll51: jmp %o7+8
       mov %o5,%o0
inc_loop_down:

        andcc %o1,%o1,%g0
        be Ll53
       sub %o0,4,%o0
Ll52: ld [%o0],%o2
          addcc %o2,1,%o2
          bne Ll54
         st %o2,[%o0]
          subcc %o1,1,%o1
          bne Ll52
         sub %o0,4,%o0
Ll53: jmp %o7+8
       mov 1,%o0
Ll54: jmp %o7+8
       mov 0,%o0
sub_loop_down:

        andcc %o3,%o3,%g0
        be Ll56
       mov %g0,%g1
        sub %o0,4,%o0
Ll55: ld [%o0],%o4
          sub %o1,4,%o1
          ld [%o1],%o5
          subcc %g0,%g1,%g0
          subxcc %o4,%o5,%o4
          addx %g0,%g0,%g1
          sub %o2,4,%o2
          st %o4,[%o2]
          subcc %o3,1,%o3
          bne Ll55
         sub %o0,4,%o0
Ll56: jmp %o7+8
       mov %g1,%o0
subx_loop_down:

        andcc %o3,%o3,%g0
        be Ll58
       mov %o4,%g1
        sub %o0,4,%o0
Ll57: ld [%o0],%o4
          sub %o1,4,%o1
          ld [%o1],%o5
          subcc %g0,%g1,%g0
          subxcc %o4,%o5,%o4
          addx %g0,%g0,%g1
          sub %o2,4,%o2
          st %o4,[%o2]
          subcc %o3,1,%o3
          bne Ll57
         sub %o0,4,%o0
Ll58: jmp %o7+8
       mov %g1,%o0
subfrom_loop_down:

        andcc %o2,%o2,%g0
        be Ll60
       mov %g0,%o5
        sub %o0,4,%o0
Ll59: ld [%o0],%o3
          sub %o1,4,%o1
          ld [%o1],%o4
          subcc %g0,%o5,%g0
          subxcc %o4,%o3,%o4
          addx %g0,%g0,%o5
          st %o4,[%o1]
          subcc %o2,1,%o2
          bne Ll59
         sub %o0,4,%o0
Ll60: jmp %o7+8
       mov %o5,%o0
dec_loop_down:

        andcc %o1,%o1,%g0
        be Ll62
       sub %o0,4,%o0
Ll61: ld [%o0],%o2
          subcc %o2,1,%o2
          bcc Ll63
         st %o2,[%o0]
          subcc %o1,1,%o1
          bne Ll61
         sub %o0,4,%o0
Ll62: jmp %o7+8
       mov -1,%o0
Ll63: jmp %o7+8
       mov 0,%o0
neg_loop_down:


        andcc %o1,%o1,%g0
        be Ll65
       sub %o0,4,%o0
Ll64: ld [%o0],%o2
          subcc %g0,%o2,%o2
          bne Ll66
         subcc %o1,1,%o1
          bne Ll64
         sub %o0,4,%o0
Ll65: jmp %o7+8
       mov 0,%o0
Ll66:
        st %o2,[%o0]

        be Ll68
       sub %o0,4,%o0
Ll67: ld [%o0],%o2
          subcc %o1,1,%o1
          xor %o2,-1,%o2
          st %o2,[%o0]
          bne Ll67
         sub %o0,4,%o0
Ll68: jmp %o7+8
       mov -1,%o0
shift1left_loop_down:
        andcc %o1,%o1,%g0
        be Ll70
       mov 0,%o3
        sub %o0,4,%o0
Ll69: ld [%o0],%o2
          subcc %g0,%o3,%g0
          addxcc %o2,%o2,%o2
          addx %g0,%g0,%o3
          st %o2,[%o0]
          subcc %o1,1,%o1
          bne Ll69
         sub %o0,4,%o0
Ll70: jmp %o7+8
       mov %o3,%o0


shiftleft_loop_down:
        andcc %o1,%o1,%g0
        be Ll72
       sub %g0,%o2,%g1
        sub %o0,4,%o0
Ll71: ld [%o0],%o4
          subcc %o1,1,%o1
          sll %o4,%o2,%o5
          or %o3,%o5,%o5
          st %o5,[%o0]
          srl %o4,%g1,%o3
          bne Ll71
         sub %o0,4,%o0
Ll72: jmp %o7+8
       mov %o3,%o0


shiftleftcopy_loop_down:
        andcc %o2,%o2,%g0
        be Ll74
       mov 0,%o4
        sub %g0,%o3,%g1
        sub %o0,4,%o0
Ll73: ld [%o0],%o5
          subcc %o2,1,%o2
          sll %o5,%o3,%g2
          or %o4,%g2,%g2
          sub %o1,4,%o1
          st %g2,[%o1]
          srl %o5,%g1,%o4
          bne Ll73
         sub %o0,4,%o0
Ll74: jmp %o7+8
       mov %o4,%o0


shift1right_loop_up:
        andcc %o1,%o1,%g0
        be Ll76
       sll %o2,31,%o2
Ll75: ld [%o0],%o3
          subcc %o1,1,%o1
          srl %o3,1,%o4
          or %o2,%o4,%o4
          st %o4,[%o0]
          sll %o3,31,%o2
          bne Ll75
         add %o0,4,%o0
Ll76: jmp %o7+8
       mov %o2,%o0


shiftright_loop_up:
        andcc %o1,%o1,%g0
        be Ll78
       or %g0,%g0,%o3
        sub %g0,%o2,%g1
Ll77: ld [%o0],%o4
          subcc %o1,1,%o1
          srl %o4,%o2,%o5
          or %o3,%o5,%o5
          st %o5,[%o0]
          sll %o4,%g1,%o3
          bne Ll77
         add %o0,4,%o0
Ll78: jmp %o7+8
       mov %o3,%o0


shiftrightsigned_loop_up:
        ld [%o0],%o4
        sub %g0,%o2,%g1
        sra %o4,%o2,%o5
        st %o5,[%o0]
        sll %o4,%g1,%o3
        subcc %o1,1,%o1
        be Ll80
       add %o0,4,%o0
Ll79: ld [%o0],%o4
          subcc %o1,1,%o1
          srl %o4,%o2,%o5
          or %o3,%o5,%o5
          st %o5,[%o0]
          sll %o4,%g1,%o3
          bne Ll79
         add %o0,4,%o0
Ll80: jmp %o7+8
       mov %o3,%o0


shiftrightcopy_loop_up:
        sub %g0,%o3,%g1
        andcc %o2,%o2,%g0
        be Ll82
       sll %o4,%g1,%g2
Ll81: ld [%o0],%o4
          add %o0,4,%o0
          srl %o4,%o3,%o5
          or %g2,%o5,%o5
          st %o5,[%o1]
          sll %o4,%g1,%g2
          subcc %o2,1,%o2
          bne Ll81
         add %o1,4,%o1
Ll82: jmp %o7+8
       mov %g2,%o0


mulusmall_loop_down:
        andcc %o2,%o2,%g0
        be Ll85
       sub %o1,4,%o1
Ll83:

          mov %o0,%y
          ld [%o1],%o4
          addcc %o3,%o3,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%o4,%o5
          mulscc %o5,%g0,%o5


          tst %o4
          bge Ll84
         sra %o5,26,%o3
          add %o3,%o0,%o3
Ll84: rd %y,%o4
          srl %o4,26,%o4
          sll %o5,6,%o5
          or %o5,%o4,%o4
          st %o4,[%o1]
          subcc %o2,1,%o2
          bne Ll83
         sub %o1,4,%o1
Ll85: jmp %o7+8
       mov %o3,%o0
mulu_loop_down:
        mov 0,%o4
Ll87: ld [%o1-4],%g1






          mov %g1,%y
          sub %o1,4,%o1
          andcc %g0,%g0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%o0,%o5
          mulscc %o5,%g0,%o5
          tst %o0
          bl,a Ll88
         add %o5,%g1,%o5
Ll88: rd %y,%g1

          addcc %o4,%g1,%g1
          addx %g0,%o5,%o4
          sub %o2,4,%o2
          subcc %o3,1,%o3
          bne Ll87
         st %g1,[%o2]
        jmp %o7+8
       st %o4,[%o2-4]



muluadd_loop_down:
        save %sp,-96,%sp
        mov 0,%l0

        sra %i0,31,%l1

Ll89: ld [%i1-4],%o1
          sub %i1,4,%i1





          mov %o1,%y
          and %o1,%l1,%o3
          andcc %g0,%g0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%g0,%o2
          add %o2,%o3,%o2
          rd %y,%o0

          sub %i2,4,%i2
          ld [%i2],%o1
          addcc %l0,%o0,%o0
          addx %g0,%o2,%l0
          addcc %o1,%o0,%o0
          addx %g0,%l0,%l0
          subcc %i3,1,%i3
          bne Ll89
         st %o0,[%i2]
        mov %l0,%i0
        jmp %i7+8
       restore



mulusub_loop_down:
        save %sp,-96,%sp
        mov 0,%l0

        sra %i0,31,%l1

Ll90: ld [%i1-4],%o1
          sub %i1,4,%i1





          mov %o1,%y
          and %o1,%l1,%o3
          andcc %g0,%g0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%i0,%o2
          mulscc %o2,%g0,%o2
          add %o2,%o3,%o2
          rd %y,%o0

          sub %i2,4,%i2
          ld [%i2],%o1
          addcc %l0,%o0,%o0
          addx %g0,%o2,%l0
          subcc %o1,%o0,%o1
          addx %g0,%l0,%l0
          subcc %i3,1,%i3
          bne Ll90
         st %o1,[%i2]
        mov %l0,%i0
        jmp %i7+8
       restore



divu_loop_up:
        save %sp,-96,%sp
        andcc %i2,%i2,%g0
        be Ll92
       mov 0,%g1
Ll91: mov %g1,%o0
          ld [%i1],%o1
          call divu_6432_3232_
         mov %i0,%o2
          st %o0,[%i1]
          subcc %i2,1,%i2
          bne Ll91
         add %i1,4,%i1
Ll92: mov %g1,%i0
        jmp %i7+8
       restore


divucopy_loop_up:
        save %sp,-96,%sp
        andcc %i3,%i3,%g0
        be Ll94
       mov 0,%g1
Ll93: mov %g1,%o0
          ld [%i1],%o1
          call divu_6432_3232_
         mov %i0,%o2
          st %o0,[%i2]
          add %i1,4,%i1
          subcc %i3,1,%i3
          bne Ll93
         add %i2,4,%i2
Ll94: mov %g1,%i0
        jmp %i7+8
       restore
