Albert Max Lai <[EMAIL PROTECTED]>:
> On Fri, 26 Mar 1999 [EMAIL PROTECTED] wrote:

>> [...]

> I've been having the same problems under sparc as you have. I've moved
> down to SSLeay-0.8.1b (since I can get it to compile), but would like to
> use openssl. I haven't gotten any responses as to why this is happening,
> or how fo fix this. If anyone has information on how I would do this, I
> would be happy to hear about it.
> 
>> Undefined                       first referenced
>>  symbol                             in file
>> bn_mul_comba4                       ../libcrypto.a(bn_mul.o)
>> bn_mul_comba8                       ../libcrypto.a(bn_mul.o)
>> bn_sqr_comba4                       ../libcrypto.a(bn_sqr.o)
>> bn_sqr_comba8                       ../libcrypto.a(bn_sqr.o)
>> bn_sub_words                        ../libcrypto.a(bn_mul.o)
>> bn_div_words                        ../libcrypto.a(bn_word.o)
>> ld: fatal: Symbol referencing errors. No output written to openssl
>> 
>> Either asm/sparc.s needs to be fixed, or Configure needs to have all
>> references to it removed.

This problem does not occur if OpenSSL is configured for GCC
("./Configure solaris-sparc-gcc"), which explains why it wasn't
noticed by everyone.  The file openssl-0.9.2b/crypto/bn/asm reveals
the cause of your problems:

     All assember in this directory are just version of the file
     crypto/bn/bn_mulw.c.

     Quite a few of these files are just the assember output from gcc since on 
     quite a few machines they are 2 times faster than the system compiler.

sparc.s is one of those gcc-produced files (which is also why
solaris-sparc-gcc does not use it); but crypto/bn/bn_mulw.c is just an 
old file (now deleted) now superseded by bn_asm.c.  bn_asm.c has
additional functions that are missing in the old sparc.s.  If you
want a gcc-compiled version instead of the cc-compiled version that
no_asm produces, but don't want to install gcc yourself, try the
attached file (and please report if it works for you).

What I don't understand though is the redifinition of BN_ASM in
openssl-0.9.2b/crypto/bn/Makefile:

     BN_ASM=            bn_asm.o
     # or use
     #BN_ASM=   bn86-elf.o

The real definition is in openssl-0.9.2b/Makefile.ssl:

     # Set BN_ASM to bn_asm.o if you want to use the C version
     BN_ASM= asm/sparc.o
     #BN_ASM= bn_asm.o
     #BN_ASM= asm/bn86-elf.o    # elf, linux-elf
     #BN_ASM= asm/bn86-sol.o # solaris
     #BN_ASM= asm/bn86-out.o # a.out, FreeBSD
     #BN_ASM= asm/bn86bsdi.o # bsdi
     #BN_ASM= asm/alpha.o    # DEC Alpha
     #BN_ASM= asm/pa-risc2.o # HP-UX PA-RISC
     #BN_ASM= asm/r3000.o    # SGI MIPS cpu
     #BN_ASM= asm/sparc.o    # Sun solaris/SunOS
     #BN_ASM= asm/bn-win32.o # Windows 95/NT
     #BN_ASM= asm/x86w16.o   # 16 bit code for Windows 3.1/DOS
     #BN_ASM= asm/x86w32.o   # 32 bit code for Windows 3.1

What's this redefinition about, and why does the make procedure still
try to cope with asm/sparc.s?  Or is it only
openssl-0.9.2b/shlib/solaris.sh that causes trouble (in that case I
wonder when any assembler version are used for libcrypto.a at all --
will the Configure script ever touch openssl-0.9.2b/crypto/bn/Makefile)?
        .file   "bn_asm.c"
gcc2_compiled.:
.section        ".text"
        .align 4
        .global bn_mul_add_words
        .type    bn_mul_add_words,#function
        .proc   016
bn_mul_add_words:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o0
        mov %i1,%o1
        mov %i2,%g1
        mov 0,%g2
        cmp %g1,%g2
        ble .LL4
        mov %i3,%o2
        add %o0,12,%g4
        add %o1,12,%o7
.LL3:
        ld [%o0],%i3
        mov 0,%i2
        mov %g2,%i1
        mov %i2,%i0
        ld [%o1],%g2
        umul %o2,%g2,%g3
        rd %y,%g2
        addcc %g3,%i3,%g3
        addx %g2,%i2,%g2
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        st %g3,[%o0]
        mov %g2,%i5
        mov %i2,%i4
        addcc %g1,-1,%g1
        be .LL4
        mov %i5,%g2
        ld [%g4-8],%i3
        mov 0,%i2
        mov %i5,%i1
        mov %i2,%i0
        ld [%o7-8],%g2
        umul %o2,%g2,%g3
        rd %y,%g2
        addcc %g3,%i3,%g3
        addx %g2,%i2,%g2
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        st %g3,[%g4-8]
        mov %g2,%i5
        mov %i2,%i4
        addcc %g1,-1,%g1
        be .LL4
        mov %i5,%g2
        ld [%g4-4],%i3
        mov 0,%i2
        mov %i5,%i1
        mov %i2,%i0
        ld [%o7-4],%g2
        umul %o2,%g2,%g3
        rd %y,%g2
        addcc %g3,%i3,%g3
        addx %g2,%i2,%g2
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        st %g3,[%g4-4]
        mov %g2,%i5
        mov %i2,%i4
        addcc %g1,-1,%g1
        be .LL4
        mov %i5,%g2
        ld [%g4],%i3
        mov 0,%i2
        mov %i5,%i1
        mov %i2,%i0
        ld [%o7],%g2
        umul %o2,%g2,%g3
        rd %y,%g2
        addcc %g3,%i3,%g3
        addx %g2,%i2,%g2
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        st %g3,[%g4]
        mov %g2,%g3
        mov %i2,%g2
        addcc %g1,-1,%g1
        be .LL4
        mov %g3,%g2
        add %o7,16,%o7
        add %o1,16,%o1
        add %g4,16,%g4
        b .LL3
        add %o0,16,%o0
.LL4:
        ret
        restore %g0,%g2,%o0
.LLfe1:
        .size    bn_mul_add_words,.LLfe1-bn_mul_add_words
.section        ".rodata"
        .align 8
.LLC0:
        .asciz  "Division would overflow (%d)\n"
.section        ".text"
        .align 4
        .global bn_div_words
        .type    bn_div_words,#function
        .proc   016
bn_div_words:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov 0,%l1
        cmp %i2,%l1
        bne .LL49
        mov 2,%l0
        b .LL66
        mov -1,%i0
.LL49:
        call BN_num_bits_word,0
        mov %i2,%o0
        mov %o0,%o2
        cmp %o2,32
        be .LL50
        mov 1,%o0
        sll %o0,%o2,%o0
        cmp %i0,%o0
        bleu .LL67
        mov 32,%o0
        sethi %hi(__iob+32),%o0
        or %o0,%lo(__iob+32),%o0
        sethi %hi(.LLC0),%o1
        call fprintf,0
        or %o1,%lo(.LLC0),%o1
        call abort,0
        nop
.LL50:
        mov 32,%o0
.LL67:
        cmp %i0,%i2
        blu .LL51
        sub %o0,%o2,%o2
        sub %i0,%i2,%i0
.LL51:
        cmp %o2,0
        be .LL52
        sll %i0,%o2,%o1
        sll %i2,%o2,%i2
        sub %o0,%o2,%o0
        srl %i1,%o0,%o0
        or %o1,%o0,%i0
        sll %i1,%o2,%i1
.LL52:
        srl %i2,16,%g2
        sethi %hi(65535),%o0
        or %o0,%lo(65535),%o1
        and %i2,%o1,%g3
        mov %o0,%g4
        sethi %hi(-65536),%o7
        mov %o1,%g1
.LL53:
        srl %i0,16,%o0
        cmp %o0,%g2
        be .LL57
        or %g4,%lo(65535),%o3
        wr %g0,%g0,%y
        nop
        nop
        nop
        udiv %i0,%g2,%o3
.LL57:
        and %i1,%o7,%o0
        srl %o0,16,%o5
        smul %o3,%g3,%o4
        smul %o3,%g2,%o2
.LL58:
        sub %i0,%o2,%o1
        andcc %o1,%o7,%g0
        bne .LL59
        sll %o1,16,%o0
        add %o0,%o5,%o0
        cmp %o4,%o0
        bleu .LL59
        sub %o4,%g3,%o4
        sub %o2,%g2,%o2
        b .LL58
        add %o3,-1,%o3
.LL59:
        smul %o3,%g2,%o2
        smul %o3,%g3,%o0
        srl %o0,16,%o1
        sll %o0,16,%o0
        and %o0,%o7,%o0
        cmp %i1,%o0
        bgeu .LL63
        add %o2,%o1,%o2
        add %o2,1,%o2
.LL63:
        cmp %i0,%o2
        bgeu .LL64
        sub %i1,%o0,%i1
        add %i0,%i2,%i0
        add %o3,-1,%o3
.LL64:
        addcc %l0,-1,%l0
        be .LL54
        sub %i0,%o2,%i0
        sll %o3,16,%l1
        sll %i0,16,%o0
        srl %i1,16,%o1
        or %o0,%o1,%i0
        and %i1,%g1,%o0
        b .LL53
        sll %o0,16,%i1
.LL54:
        or %l1,%o3,%i0
.LL66:
        ret
        restore
.LLfe2:
        .size    bn_div_words,.LLfe2-bn_div_words
        .align 4
        .global bn_mul_comba8
        .type    bn_mul_comba8,#function
        .proc   020
bn_mul_comba8:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o7
        mov %i1,%g4
        ld [%g4],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i4,%i1
        mov 0,%i0
        st %i5,[%o7]
        mov %i0,%g1
        ld [%g4],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL119
        mov %g3,%g2
        add %g2,1,%g2
.LL119:
        mov %g2,%i0
        ld [%g4+4],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL121
        mov %g3,%g2
        add %g2,1,%g2
.LL121:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL122
        add %g1,1,%g1
.LL122:
        st %i1,[%o7+4]
        mov 0,%i1
        ld [%g4+8],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL123
        mov %g3,%g2
        add %g2,1,%g2
.LL123:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL124
        mov 1,%i1
.LL124:
        ld [%g4+4],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL125
        mov %g3,%g2
        add %g2,1,%g2
.LL125:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL126
        add %i1,1,%i1
.LL126:
        ld [%g4],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL127
        mov %g3,%g2
        add %g2,1,%g2
.LL127:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL128
        add %i1,1,%i1
.LL128:
        st %i0,[%o7+8]
        mov 0,%i0
        ld [%g4],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL129
        mov %g3,%g2
        add %g2,1,%g2
.LL129:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL130
        mov 1,%i0
.LL130:
        ld [%g4+4],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL131
        mov %g3,%g2
        add %g2,1,%g2
.LL131:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL132
        add %i0,1,%i0
.LL132:
        ld [%g4+8],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL133
        mov %g3,%g2
        add %g2,1,%g2
.LL133:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL134
        add %i0,1,%i0
.LL134:
        ld [%g4+12],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL135
        mov %g3,%g2
        add %g2,1,%g2
.LL135:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL136
        add %i0,1,%i0
.LL136:
        st %g1,[%o7+12]
        mov 0,%g1
        ld [%g4+16],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %g1,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL137
        mov %g3,%g2
        add %g2,1,%g2
.LL137:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL138
        mov 1,%g1
.LL138:
        ld [%g4+12],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL139
        mov %g3,%g2
        add %g2,1,%g2
.LL139:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL140
        add %g1,1,%g1
.LL140:
        ld [%g4+8],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL141
        mov %g3,%g2
        add %g2,1,%g2
.LL141:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL142
        add %g1,1,%g1
.LL142:
        ld [%g4+4],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL143
        mov %g3,%g2
        add %g2,1,%g2
.LL143:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL144
        add %g1,1,%g1
.LL144:
        ld [%g4],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL145
        mov %g3,%g2
        add %g2,1,%g2
.LL145:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL146
        add %g1,1,%g1
.LL146:
        st %i1,[%o7+16]
        mov 0,%i1
        ld [%g4],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL147
        mov %g3,%g2
        add %g2,1,%g2
.LL147:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL148
        mov 1,%i1
.LL148:
        ld [%g4+4],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL149
        mov %g3,%g2
        add %g2,1,%g2
.LL149:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL150
        add %i1,1,%i1
.LL150:
        ld [%g4+8],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL151
        mov %g3,%g2
        add %g2,1,%g2
.LL151:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL152
        add %i1,1,%i1
.LL152:
        ld [%g4+12],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL153
        mov %g3,%g2
        add %g2,1,%g2
.LL153:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL154
        add %i1,1,%i1
.LL154:
        ld [%g4+16],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL155
        mov %g3,%g2
        add %g2,1,%g2
.LL155:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL156
        add %i1,1,%i1
.LL156:
        ld [%g4+20],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL157
        mov %g3,%g2
        add %g2,1,%g2
.LL157:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL158
        add %i1,1,%i1
.LL158:
        st %i0,[%o7+20]
        mov 0,%i0
        ld [%g4+24],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL159
        mov %g3,%g2
        add %g2,1,%g2
.LL159:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL160
        mov 1,%i0
.LL160:
        ld [%g4+20],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL161
        mov %g3,%g2
        add %g2,1,%g2
.LL161:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL162
        add %i0,1,%i0
.LL162:
        ld [%g4+16],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL163
        mov %g3,%g2
        add %g2,1,%g2
.LL163:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL164
        add %i0,1,%i0
.LL164:
        ld [%g4+12],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL165
        mov %g3,%g2
        add %g2,1,%g2
.LL165:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL166
        add %i0,1,%i0
.LL166:
        ld [%g4+8],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL167
        mov %g3,%g2
        add %g2,1,%g2
.LL167:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL168
        add %i0,1,%i0
.LL168:
        ld [%g4+4],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL169
        mov %g3,%g2
        add %g2,1,%g2
.LL169:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL170
        add %i0,1,%i0
.LL170:
        ld [%g4],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL171
        mov %g3,%g2
        add %g2,1,%g2
.LL171:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL172
        add %i0,1,%i0
.LL172:
        st %g1,[%o7+24]
        mov 0,%g1
        ld [%g4],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %g1,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL173
        mov %g3,%g2
        add %g2,1,%g2
.LL173:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL174
        mov 1,%g1
.LL174:
        ld [%g4+4],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL175
        mov %g3,%g2
        add %g2,1,%g2
.LL175:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL176
        add %g1,1,%g1
.LL176:
        ld [%g4+8],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL177
        mov %g3,%g2
        add %g2,1,%g2
.LL177:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL178
        add %g1,1,%g1
.LL178:
        ld [%g4+12],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL179
        mov %g3,%g2
        add %g2,1,%g2
.LL179:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL180
        add %g1,1,%g1
.LL180:
        ld [%g4+16],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL181
        mov %g3,%g2
        add %g2,1,%g2
.LL181:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL182
        add %g1,1,%g1
.LL182:
        ld [%g4+20],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL183
        mov %g3,%g2
        add %g2,1,%g2
.LL183:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL184
        add %g1,1,%g1
.LL184:
        ld [%g4+24],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL185
        mov %g3,%g2
        add %g2,1,%g2
.LL185:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL186
        add %g1,1,%g1
.LL186:
        ld [%g4+28],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL187
        mov %g3,%g2
        add %g2,1,%g2
.LL187:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL188
        add %g1,1,%g1
.LL188:
        st %i1,[%o7+28]
        mov 0,%i1
        ld [%g4+28],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL189
        mov %g3,%g2
        add %g2,1,%g2
.LL189:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL190
        mov 1,%i1
.LL190:
        ld [%g4+24],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL191
        mov %g3,%g2
        add %g2,1,%g2
.LL191:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL192
        add %i1,1,%i1
.LL192:
        ld [%g4+20],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL193
        mov %g3,%g2
        add %g2,1,%g2
.LL193:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL194
        add %i1,1,%i1
.LL194:
        ld [%g4+16],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL195
        mov %g3,%g2
        add %g2,1,%g2
.LL195:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL196
        add %i1,1,%i1
.LL196:
        ld [%g4+12],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL197
        mov %g3,%g2
        add %g2,1,%g2
.LL197:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL198
        add %i1,1,%i1
.LL198:
        ld [%g4+8],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL199
        mov %g3,%g2
        add %g2,1,%g2
.LL199:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL200
        add %i1,1,%i1
.LL200:
        ld [%g4+4],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL201
        mov %g3,%g2
        add %g2,1,%g2
.LL201:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL202
        add %i1,1,%i1
.LL202:
        st %i0,[%o7+32]
        mov 0,%i0
        ld [%g4+8],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL203
        mov %g3,%g2
        add %g2,1,%g2
.LL203:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL204
        mov 1,%i0
.LL204:
        ld [%g4+12],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL205
        mov %g3,%g2
        add %g2,1,%g2
.LL205:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL206
        add %i0,1,%i0
.LL206:
        ld [%g4+16],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL207
        mov %g3,%g2
        add %g2,1,%g2
.LL207:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL208
        add %i0,1,%i0
.LL208:
        ld [%g4+20],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL209
        mov %g3,%g2
        add %g2,1,%g2
.LL209:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL210
        add %i0,1,%i0
.LL210:
        ld [%g4+24],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL211
        mov %g3,%g2
        add %g2,1,%g2
.LL211:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL212
        add %i0,1,%i0
.LL212:
        ld [%g4+28],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL213
        mov %g3,%g2
        add %g2,1,%g2
.LL213:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL214
        add %i0,1,%i0
.LL214:
        st %g1,[%o7+36]
        mov 0,%g1
        ld [%g4+28],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %g1,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL215
        mov %g3,%g2
        add %g2,1,%g2
.LL215:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL216
        mov 1,%g1
.LL216:
        ld [%g4+24],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL217
        mov %g3,%g2
        add %g2,1,%g2
.LL217:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL218
        add %g1,1,%g1
.LL218:
        ld [%g4+20],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL219
        mov %g3,%g2
        add %g2,1,%g2
.LL219:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL220
        add %g1,1,%g1
.LL220:
        ld [%g4+16],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL221
        mov %g3,%g2
        add %g2,1,%g2
.LL221:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL222
        add %g1,1,%g1
.LL222:
        ld [%g4+12],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL223
        mov %g3,%g2
        add %g2,1,%g2
.LL223:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL224
        add %g1,1,%g1
.LL224:
        st %i1,[%o7+40]
        mov 0,%i1
        ld [%g4+16],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL225
        mov %g3,%g2
        add %g2,1,%g2
.LL225:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL226
        mov 1,%i1
.LL226:
        ld [%g4+20],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL227
        mov %g3,%g2
        add %g2,1,%g2
.LL227:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL228
        add %i1,1,%i1
.LL228:
        ld [%g4+24],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL229
        mov %g3,%g2
        add %g2,1,%g2
.LL229:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL230
        add %i1,1,%i1
.LL230:
        ld [%g4+28],%g3
        ld [%i2+16],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL231
        mov %g3,%g2
        add %g2,1,%g2
.LL231:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL232
        add %i1,1,%i1
.LL232:
        st %i0,[%o7+44]
        mov 0,%i0
        ld [%g4+28],%g3
        ld [%i2+20],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL233
        mov %g3,%g2
        add %g2,1,%g2
.LL233:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL234
        mov 1,%i0
.LL234:
        ld [%g4+24],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL235
        mov %g3,%g2
        add %g2,1,%g2
.LL235:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL236
        add %i0,1,%i0
.LL236:
        ld [%g4+20],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL237
        mov %g3,%g2
        add %g2,1,%g2
.LL237:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL238
        add %i0,1,%i0
.LL238:
        st %g1,[%o7+48]
        mov 0,%g1
        ld [%g4+24],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %g1,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL239
        mov %g3,%g2
        add %g2,1,%g2
.LL239:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL240
        mov 1,%g1
.LL240:
        ld [%g4+28],%g3
        ld [%i2+24],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL241
        mov %g3,%g2
        add %g2,1,%g2
.LL241:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL242
        add %g1,1,%g1
.LL242:
        st %i1,[%o7+52]
        ld [%g4+28],%g3
        ld [%i2+28],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL243
        mov %g3,%g2
        add %g2,1,%g2
.LL243:
        add %g1,%g2,%g1
        st %i0,[%o7+56]
        st %g1,[%o7+60]
        ret
        restore
.LLfe3:
        .size    bn_mul_comba8,.LLfe3-bn_mul_comba8
        .align 4
        .global bn_mul_comba4
        .type    bn_mul_comba4,#function
        .proc   020
bn_mul_comba4:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o7
        mov %i1,%g4
        ld [%g4],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i4,%i1
        mov 0,%i0
        st %i5,[%o7]
        mov %i0,%g1
        ld [%g4],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL248
        mov %g3,%g2
        add %g2,1,%g2
.LL248:
        mov %g2,%i0
        ld [%g4+4],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL250
        mov %g3,%g2
        add %g2,1,%g2
.LL250:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL251
        add %g1,1,%g1
.LL251:
        st %i1,[%o7+4]
        mov 0,%i1
        ld [%g4+8],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL252
        mov %g3,%g2
        add %g2,1,%g2
.LL252:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL253
        mov 1,%i1
.LL253:
        ld [%g4+4],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL254
        mov %g3,%g2
        add %g2,1,%g2
.LL254:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL255
        add %i1,1,%i1
.LL255:
        ld [%g4],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL256
        mov %g3,%g2
        add %g2,1,%g2
.LL256:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL257
        add %i1,1,%i1
.LL257:
        st %i0,[%o7+8]
        mov 0,%i0
        ld [%g4],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL258
        mov %g3,%g2
        add %g2,1,%g2
.LL258:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL259
        mov 1,%i0
.LL259:
        ld [%g4+4],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL260
        mov %g3,%g2
        add %g2,1,%g2
.LL260:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL261
        add %i0,1,%i0
.LL261:
        ld [%g4+8],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL262
        mov %g3,%g2
        add %g2,1,%g2
.LL262:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL263
        add %i0,1,%i0
.LL263:
        ld [%g4+12],%g3
        ld [%i2],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL264
        mov %g3,%g2
        add %g2,1,%g2
.LL264:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL265
        add %i0,1,%i0
.LL265:
        st %g1,[%o7+12]
        mov 0,%g1
        ld [%g4+12],%g3
        ld [%i2+4],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %g1,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL266
        mov %g3,%g2
        add %g2,1,%g2
.LL266:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL267
        mov 1,%g1
.LL267:
        ld [%g4+8],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL268
        mov %g3,%g2
        add %g2,1,%g2
.LL268:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL269
        add %g1,1,%g1
.LL269:
        ld [%g4+4],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i1,%i3,%i1
        cmp %i1,%i3
        bgeu .LL270
        mov %g3,%g2
        add %g2,1,%g2
.LL270:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL271
        add %g1,1,%g1
.LL271:
        st %i1,[%o7+16]
        mov 0,%i1
        ld [%g4+8],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov %i1,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL272
        mov %g3,%g2
        add %g2,1,%g2
.LL272:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL273
        mov 1,%i1
.LL273:
        ld [%g4+12],%g3
        ld [%i2+8],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %i0,%i3,%i0
        cmp %i0,%i3
        bgeu .LL274
        mov %g3,%g2
        add %g2,1,%g2
.LL274:
        add %g1,%g2,%g1
        cmp %g1,%g2
        blu,a .LL275
        add %i1,1,%i1
.LL275:
        st %i0,[%o7+20]
        ld [%g4+12],%g3
        ld [%i2+12],%g2
        umul %g3,%g2,%i5
        rd %y,%i4
        mov %i5,%i3
        mov %i4,%g3
        mov 0,%g2
        add %g1,%i3,%g1
        cmp %g1,%i3
        bgeu .LL276
        mov %g3,%g2
        add %g2,1,%g2
.LL276:
        add %i1,%g2,%i1
        st %g1,[%o7+24]
        st %i1,[%o7+28]
        ret
        restore
.LLfe4:
        .size    bn_mul_comba4,.LLfe4-bn_mul_comba4
        .align 4
        .global bn_sqr_comba8
        .type    bn_sqr_comba8,#function
        .proc   020
bn_sqr_comba8:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o0
        mov %i1,%o7
        mov 0,%i1
        ld [%o7],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i2,%g3
        mov %i1,%g2
        mov %g3,%i0
        st %i3,[%o0]
        ld [%o7+4],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL282
        mov %i1,%g4
        bne .LL407
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL408
        mov %i4,%g3
.LL282:
        add %g4,1,%g4
        mov %i5,%g1
.LL407:
        mov %i4,%g3
.LL408:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL283
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL283
        add %g4,1,%g4
.LL283:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL284
        add %g4,1,%g4
.LL284:
        st %i0,[%o0+4]
        mov 0,%i0
        ld [%o7+4],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %i0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL285
        mov %g3,%g2
        add %g2,1,%g2
.LL285:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL286
        mov 1,%i0
.LL286:
        ld [%o7+8],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL287
        add %i0,1,%i0
        bne .LL409
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL410
        mov %i4,%g3
        add %i0,1,%i0
.LL287:
        mov %i5,%g1
.LL409:
        mov %i4,%g3
.LL410:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL289
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL289
        add %i0,1,%i0
.LL289:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL290
        add %i0,1,%i0
.LL290:
        st %i1,[%o0+8]
        ld [%o7+12],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL292
        mov 0,%i1
        bne .LL411
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL412
        mov %i4,%g3
.LL292:
        add %i1,1,%i1
        mov %i5,%g1
.LL411:
        mov %i4,%g3
.LL412:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL293
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL293
        add %i1,1,%i1
.LL293:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL294
        add %i1,1,%i1
.LL294:
        ld [%o7+8],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL295
        add %i1,1,%i1
        bne .LL413
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL414
        mov %i4,%g3
        add %i1,1,%i1
.LL295:
        mov %i5,%g1
.LL413:
        mov %i4,%g3
.LL414:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL297
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL297
        add %i1,1,%i1
.LL297:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL298
        add %i1,1,%i1
.LL298:
        st %g4,[%o0+12]
        mov 0,%g4
        ld [%o7+8],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %g4,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL299
        mov %g3,%g2
        add %g2,1,%g2
.LL299:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL300
        mov 1,%g4
.LL300:
        ld [%o7+12],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL301
        add %g4,1,%g4
        bne .LL415
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL416
        mov %i4,%g3
        add %g4,1,%g4
.LL301:
        mov %i5,%g1
.LL415:
        mov %i4,%g3
.LL416:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL303
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL303
        add %g4,1,%g4
.LL303:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL304
        add %g4,1,%g4
.LL304:
        ld [%o7+16],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL305
        add %g4,1,%g4
        bne .LL417
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL418
        mov %i4,%g3
        add %g4,1,%g4
.LL305:
        mov %i5,%g1
.LL417:
        mov %i4,%g3
.LL418:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL307
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL307
        add %g4,1,%g4
.LL307:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL308
        add %g4,1,%g4
.LL308:
        st %i0,[%o0+16]
        ld [%o7+20],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL310
        mov 0,%i0
        bne .LL419
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL420
        mov %i4,%g3
.LL310:
        add %i0,1,%i0
        mov %i5,%g1
.LL419:
        mov %i4,%g3
.LL420:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL311
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL311
        add %i0,1,%i0
.LL311:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL312
        add %i0,1,%i0
.LL312:
        ld [%o7+16],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL313
        add %i0,1,%i0
        bne .LL421
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL422
        mov %i4,%g3
        add %i0,1,%i0
.LL313:
        mov %i5,%g1
.LL421:
        mov %i4,%g3
.LL422:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL315
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL315
        add %i0,1,%i0
.LL315:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL316
        add %i0,1,%i0
.LL316:
        ld [%o7+12],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL317
        add %i0,1,%i0
        bne .LL423
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL424
        mov %i4,%g3
        add %i0,1,%i0
.LL317:
        mov %i5,%g1
.LL423:
        mov %i4,%g3
.LL424:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL319
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL319
        add %i0,1,%i0
.LL319:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL320
        add %i0,1,%i0
.LL320:
        st %i1,[%o0+20]
        mov 0,%i1
        ld [%o7+12],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %i1,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL321
        mov %g3,%g2
        add %g2,1,%g2
.LL321:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL322
        mov 1,%i1
.LL322:
        ld [%o7+16],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL323
        add %i1,1,%i1
        bne .LL425
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL426
        mov %i4,%g3
        add %i1,1,%i1
.LL323:
        mov %i5,%g1
.LL425:
        mov %i4,%g3
.LL426:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL325
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL325
        add %i1,1,%i1
.LL325:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL326
        add %i1,1,%i1
.LL326:
        ld [%o7+20],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL327
        add %i1,1,%i1
        bne .LL427
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL428
        mov %i4,%g3
        add %i1,1,%i1
.LL327:
        mov %i5,%g1
.LL427:
        mov %i4,%g3
.LL428:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL329
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL329
        add %i1,1,%i1
.LL329:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL330
        add %i1,1,%i1
.LL330:
        ld [%o7+24],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL331
        add %i1,1,%i1
        bne .LL429
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL430
        mov %i4,%g3
        add %i1,1,%i1
.LL331:
        mov %i5,%g1
.LL429:
        mov %i4,%g3
.LL430:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL333
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL333
        add %i1,1,%i1
.LL333:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL334
        add %i1,1,%i1
.LL334:
        st %g4,[%o0+24]
        ld [%o7+28],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL336
        mov 0,%g4
        bne .LL431
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL432
        mov %i4,%g3
.LL336:
        add %g4,1,%g4
        mov %i5,%g1
.LL431:
        mov %i4,%g3
.LL432:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL337
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL337
        add %g4,1,%g4
.LL337:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL338
        add %g4,1,%g4
.LL338:
        ld [%o7+24],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL339
        add %g4,1,%g4
        bne .LL433
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL434
        mov %i4,%g3
        add %g4,1,%g4
.LL339:
        mov %i5,%g1
.LL433:
        mov %i4,%g3
.LL434:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL341
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL341
        add %g4,1,%g4
.LL341:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL342
        add %g4,1,%g4
.LL342:
        ld [%o7+20],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL343
        add %g4,1,%g4
        bne .LL435
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL436
        mov %i4,%g3
        add %g4,1,%g4
.LL343:
        mov %i5,%g1
.LL435:
        mov %i4,%g3
.LL436:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL345
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL345
        add %g4,1,%g4
.LL345:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL346
        add %g4,1,%g4
.LL346:
        ld [%o7+16],%g3
        ld [%o7+12],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL347
        add %g4,1,%g4
        bne .LL437
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL438
        mov %i4,%g3
        add %g4,1,%g4
.LL347:
        mov %i5,%g1
.LL437:
        mov %i4,%g3
.LL438:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL349
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL349
        add %g4,1,%g4
.LL349:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL350
        add %g4,1,%g4
.LL350:
        st %i0,[%o0+28]
        mov 0,%i0
        ld [%o7+16],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %i0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL351
        mov %g3,%g2
        add %g2,1,%g2
.LL351:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL352
        mov 1,%i0
.LL352:
        ld [%o7+20],%g3
        ld [%o7+12],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL353
        add %i0,1,%i0
        bne .LL439
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL440
        mov %i4,%g3
        add %i0,1,%i0
.LL353:
        mov %i5,%g1
.LL439:
        mov %i4,%g3
.LL440:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL355
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL355
        add %i0,1,%i0
.LL355:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL356
        add %i0,1,%i0
.LL356:
        ld [%o7+24],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL357
        add %i0,1,%i0
        bne .LL441
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL442
        mov %i4,%g3
        add %i0,1,%i0
.LL357:
        mov %i5,%g1
.LL441:
        mov %i4,%g3
.LL442:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL359
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL359
        add %i0,1,%i0
.LL359:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL360
        add %i0,1,%i0
.LL360:
        ld [%o7+28],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL361
        add %i0,1,%i0
        bne .LL443
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL444
        mov %i4,%g3
        add %i0,1,%i0
.LL361:
        mov %i5,%g1
.LL443:
        mov %i4,%g3
.LL444:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL363
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL363
        add %i0,1,%i0
.LL363:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL364
        add %i0,1,%i0
.LL364:
        st %i1,[%o0+32]
        ld [%o7+28],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL366
        mov 0,%i1
        bne .LL445
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL446
        mov %i4,%g3
.LL366:
        add %i1,1,%i1
        mov %i5,%g1
.LL445:
        mov %i4,%g3
.LL446:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL367
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL367
        add %i1,1,%i1
.LL367:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL368
        add %i1,1,%i1
.LL368:
        ld [%o7+24],%g3
        ld [%o7+12],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL369
        add %i1,1,%i1
        bne .LL447
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL448
        mov %i4,%g3
        add %i1,1,%i1
.LL369:
        mov %i5,%g1
.LL447:
        mov %i4,%g3
.LL448:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL371
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL371
        add %i1,1,%i1
.LL371:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL372
        add %i1,1,%i1
.LL372:
        ld [%o7+20],%g3
        ld [%o7+16],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL373
        add %i1,1,%i1
        bne .LL449
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL450
        mov %i4,%g3
        add %i1,1,%i1
.LL373:
        mov %i5,%g1
.LL449:
        mov %i4,%g3
.LL450:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL375
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL375
        add %i1,1,%i1
.LL375:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL376
        add %i1,1,%i1
.LL376:
        st %g4,[%o0+36]
        mov 0,%g4
        ld [%o7+20],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %g4,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL377
        mov %g3,%g2
        add %g2,1,%g2
.LL377:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL378
        mov 1,%g4
.LL378:
        ld [%o7+24],%g3
        ld [%o7+16],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL379
        add %g4,1,%g4
        bne .LL451
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL452
        mov %i4,%g3
        add %g4,1,%g4
.LL379:
        mov %i5,%g1
.LL451:
        mov %i4,%g3
.LL452:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL381
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL381
        add %g4,1,%g4
.LL381:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL382
        add %g4,1,%g4
.LL382:
        ld [%o7+28],%g3
        ld [%o7+12],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL383
        add %g4,1,%g4
        bne .LL453
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL454
        mov %i4,%g3
        add %g4,1,%g4
.LL383:
        mov %i5,%g1
.LL453:
        mov %i4,%g3
.LL454:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL385
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL385
        add %g4,1,%g4
.LL385:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL386
        add %g4,1,%g4
.LL386:
        st %i0,[%o0+40]
        ld [%o7+28],%g3
        ld [%o7+16],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL388
        mov 0,%i0
        bne .LL455
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL456
        mov %i4,%g3
.LL388:
        add %i0,1,%i0
        mov %i5,%g1
.LL455:
        mov %i4,%g3
.LL456:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL389
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL389
        add %i0,1,%i0
.LL389:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL390
        add %i0,1,%i0
.LL390:
        ld [%o7+24],%g3
        ld [%o7+20],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL391
        add %i0,1,%i0
        bne .LL457
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL458
        mov %i4,%g3
        add %i0,1,%i0
.LL391:
        mov %i5,%g1
.LL457:
        mov %i4,%g3
.LL458:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL393
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL393
        add %i0,1,%i0
.LL393:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL394
        add %i0,1,%i0
.LL394:
        st %i1,[%o0+44]
        mov 0,%i1
        ld [%o7+24],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %i1,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL395
        mov %g3,%g2
        add %g2,1,%g2
.LL395:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL396
        mov 1,%i1
.LL396:
        ld [%o7+28],%g3
        ld [%o7+20],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL397
        add %i1,1,%i1
        bne .LL459
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL460
        mov %i4,%g3
        add %i1,1,%i1
.LL397:
        mov %i5,%g1
.LL459:
        mov %i4,%g3
.LL460:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL399
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL399
        add %i1,1,%i1
.LL399:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL400
        add %i1,1,%i1
.LL400:
        st %g4,[%o0+48]
        ld [%o7+28],%g3
        ld [%o7+24],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL402
        mov 0,%g4
        bne .LL461
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL462
        mov %i4,%g3
.LL402:
        add %g4,1,%g4
        mov %i5,%g1
.LL461:
        mov %i4,%g3
.LL462:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL403
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL403
        add %g4,1,%g4
.LL403:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL404
        add %g4,1,%g4
.LL404:
        st %i0,[%o0+52]
        ld [%o7+28],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL405
        mov %g3,%g2
        add %g2,1,%g2
.LL405:
        add %g4,%g2,%g4
        st %i1,[%o0+56]
        st %g4,[%o0+60]
        ret
        restore
.LLfe5:
        .size    bn_sqr_comba8,.LLfe5-bn_sqr_comba8
        .align 4
        .global bn_sqr_comba4
        .type    bn_sqr_comba4,#function
        .proc   020
bn_sqr_comba4:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o0
        mov %i1,%o7
        mov 0,%i0
        ld [%o7],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i2,%g3
        mov %i0,%g2
        mov %g3,%g4
        st %i3,[%o0]
        ld [%o7+4],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL467
        mov %i0,%i1
        bne .LL496
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL497
        mov %i4,%g3
.LL467:
        add %i1,1,%i1
        mov %i5,%g1
.LL496:
        mov %i4,%g3
.LL497:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL468
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL468
        add %i1,1,%i1
.LL468:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL469
        add %i1,1,%i1
.LL469:
        st %g4,[%o0+4]
        mov 0,%g4
        ld [%o7+4],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %g4,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL470
        mov %g3,%g2
        add %g2,1,%g2
.LL470:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL471
        mov 1,%g4
.LL471:
        ld [%o7+8],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL472
        add %g4,1,%g4
        bne .LL498
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL499
        mov %i4,%g3
        add %g4,1,%g4
.LL472:
        mov %i5,%g1
.LL498:
        mov %i4,%g3
.LL499:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL474
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL474
        add %g4,1,%g4
.LL474:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL475
        add %g4,1,%g4
.LL475:
        st %i0,[%o0+8]
        ld [%o7+12],%g3
        ld [%o7],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL477
        mov 0,%i0
        bne .LL500
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL501
        mov %i4,%g3
.LL477:
        add %i0,1,%i0
        mov %i5,%g1
.LL500:
        mov %i4,%g3
.LL501:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL478
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL478
        add %i0,1,%i0
.LL478:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL479
        add %i0,1,%i0
.LL479:
        ld [%o7+8],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL480
        add %i0,1,%i0
        bne .LL502
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL503
        mov %i4,%g3
        add %i0,1,%i0
.LL480:
        mov %i5,%g1
.LL502:
        mov %i4,%g3
.LL503:
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL482
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL482
        add %i0,1,%i0
.LL482:
        add %g4,%g2,%g4
        cmp %g4,%g2
        blu,a .LL483
        add %i0,1,%i0
.LL483:
        st %i1,[%o0+12]
        mov 0,%i1
        ld [%o7+8],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov %i1,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL484
        mov %g3,%g2
        add %g2,1,%g2
.LL484:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL485
        mov 1,%i1
.LL485:
        ld [%o7+12],%g3
        ld [%o7+4],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu,a .LL486
        add %i1,1,%i1
        bne .LL504
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL505
        mov %i4,%g3
        add %i1,1,%i1
.LL486:
        mov %i5,%g1
.LL504:
        mov %i4,%g3
.LL505:
        mov 0,%g2
        add %g4,%g1,%g4
        cmp %g4,%g1
        bgeu .LL488
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL488
        add %i1,1,%i1
.LL488:
        add %i0,%g2,%i0
        cmp %i0,%g2
        blu,a .LL489
        add %i1,1,%i1
.LL489:
        st %g4,[%o0+16]
        ld [%o7+12],%g3
        ld [%o7+8],%g2
        umul %g3,%g2,%i3
        rd %y,%i2
        addcc %i3,%i3,%i5
        addx %i2,%i2,%i4
        cmp %i2,%i4
        bgu .LL491
        mov 0,%g4
        bne .LL506
        mov %i5,%g1
        cmp %i3,%i5
        bleu .LL507
        mov %i4,%g3
.LL491:
        add %g4,1,%g4
        mov %i5,%g1
.LL506:
        mov %i4,%g3
.LL507:
        mov 0,%g2
        add %i0,%g1,%i0
        cmp %i0,%g1
        bgeu .LL492
        mov %g3,%g2
        addcc %g2,1,%g2
        be,a .LL492
        add %g4,1,%g4
.LL492:
        add %i1,%g2,%i1
        cmp %i1,%g2
        blu,a .LL493
        add %g4,1,%g4
.LL493:
        st %i0,[%o0+20]
        ld [%o7+12],%g2
        umul %g2,%g2,%i3
        rd %y,%i2
        mov %i3,%g1
        mov %i2,%g3
        mov 0,%g2
        add %i1,%g1,%i1
        cmp %i1,%g1
        bgeu .LL494
        mov %g3,%g2
        add %g2,1,%g2
.LL494:
        add %g4,%g2,%g4
        st %i1,[%o0+24]
        st %g4,[%o0+28]
        ret
        restore
.LLfe6:
        .size    bn_sqr_comba4,.LLfe6-bn_sqr_comba4
        .align 4
        .global bn_mul_words
        .type    bn_mul_words,#function
        .proc   016
bn_mul_words:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o7
        mov 0,%i0
        cmp %i2,%i0
        ble .LL508
        mov %i1,%o0
        add %o7,12,%g4
        add %o0,12,%g1
.LL13:
        mov %i0,%g3
        mov 0,%g2
        ld [%o0],%i0
        umul %i3,%i0,%i1
        rd %y,%i0
        addcc %i1,%g3,%i1
        addx %i0,%g2,%i0
        st %i1,[%o7]
        mov %i0,%i5
        mov %g2,%i4
        addcc %i2,-1,%i2
        be .LL508
        mov %i5,%i0
        mov %i5,%g3
        mov 0,%g2
        ld [%g1-8],%i0
        umul %i3,%i0,%i1
        rd %y,%i0
        addcc %i1,%g3,%i1
        addx %i0,%g2,%i0
        st %i1,[%g4-8]
        mov %i0,%i5
        mov %g2,%i4
        addcc %i2,-1,%i2
        be .LL508
        mov %i5,%i0
        mov %i5,%g3
        mov 0,%g2
        ld [%g1-4],%i0
        umul %i3,%i0,%i1
        rd %y,%i0
        addcc %i1,%g3,%i1
        addx %i0,%g2,%i0
        st %i1,[%g4-4]
        mov %i0,%g3
        mov 0,%g2
        addcc %i2,-1,%i2
        be .LL508
        mov %g3,%i0
        mov %g3,%i1
        mov %g2,%i0
        ld [%g1],%g2
        umul %i3,%g2,%g3
        rd %y,%g2
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        st %g3,[%g4]
        mov %g2,%g3
        mov 0,%g2
        addcc %i2,-1,%i2
        be .LL508
        mov %g3,%i0
        add %g1,16,%g1
        add %o0,16,%o0
        add %g4,16,%g4
        b .LL13
        add %o7,16,%o7
.LL508:
        ret
        restore
.LLfe7:
        .size    bn_mul_words,.LLfe7-bn_mul_words
        .align 4
        .global bn_sqr_words
        .type    bn_sqr_words,#function
        .proc   020
bn_sqr_words:
        !#PROLOGUE# 0
        !#PROLOGUE# 1
        mov %o0,%o3
        cmp %o2,0
        ble .LL30
        mov %o1,%g1
        add %o0,28,%o0
        add %o1,12,%o1
.LL32:
        ld [%g1],%g2
        umul %g2,%g2,%o5
        rd %y,%o4
        st %o5,[%o3]
        mov %o4,%g3
        mov 0,%g2
        addcc %o2,-1,%o2
        be .LL30
        st %g3,[%o0-24]
        ld [%o1-8],%g2
        umul %g2,%g2,%o5
        rd %y,%o4
        st %o5,[%o0-20]
        mov %o4,%g3
        mov 0,%g2
        addcc %o2,-1,%o2
        be .LL30
        st %g3,[%o0-16]
        ld [%o1-4],%g2
        umul %g2,%g2,%o5
        rd %y,%o4
        st %o5,[%o0-12]
        mov %o4,%g3
        mov 0,%g2
        addcc %o2,-1,%o2
        be .LL30
        st %g3,[%o0-8]
        ld [%o1],%g2
        umul %g2,%g2,%o5
        rd %y,%o4
        st %o5,[%o0-4]
        mov %o4,%g3
        mov 0,%g2
        addcc %o2,-1,%o2
        be .LL30
        st %g3,[%o0]
        add %o1,16,%o1
        add %g1,16,%g1
        add %o0,32,%o0
        b .LL32
        add %o3,32,%o3
.LL30:
        retl
        nop
.LLfe8:
        .size    bn_sqr_words,.LLfe8-bn_sqr_words
        .align 4
        .global bn_add_words
        .type    bn_add_words,#function
        .proc   016
bn_add_words:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o7
        mov %i1,%o0
        mov 0,%i4
        mov 0,%i5
        cmp %i3,0
        bg .LL69
        mov %i2,%o1
        b .LL509
        mov 0,%i0
.LL69:
        add %o7,12,%i2
        add %o1,12,%g4
        b .LL70
        add %o0,12,%g1
.LL510:
        ld [%g4-8],%i1
        mov %g2,%i0
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        addcc %i5,%g3,%i5
        addx %i4,%g2,%i4
        st %i5,[%i2-8]
        mov %i4,%g3
        mov 0,%g2
        mov %g2,%i4
        mov %g3,%i5
        add %i3,-1,%i3
        cmp %i3,%g2
        ble .LL71
        mov %g2,%i0
        ld [%g1-4],%g3
        ld [%g4-4],%i1
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        addcc %i5,%g3,%i5
        addx %i4,%g2,%i4
        st %i5,[%i2-4]
        mov %i4,%g3
        mov 0,%g2
        mov %g2,%i4
        mov %g3,%i5
        add %i3,-1,%i3
        cmp %i3,%g2
        ble .LL71
        mov %g2,%i0
        ld [%g1],%g3
        ld [%g4],%i1
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        addcc %i5,%g3,%i5
        addx %i4,%g2,%i4
        st %i5,[%i2]
        mov %i4,%g3
        mov 0,%g2
        mov %g2,%i4
        mov %g3,%i5
        add %i3,-1,%i3
        cmp %i3,%g2
        ble .LL509
        mov %i5,%i0
        add %g1,16,%g1
        add %o0,16,%o0
        add %g4,16,%g4
        add %o1,16,%o1
        add %i2,16,%i2
        add %o7,16,%o7
.LL70:
        ld [%o0],%g3
        mov 0,%g2
        ld [%o1],%i1
        mov %g2,%i0
        addcc %g3,%i1,%g3
        addx %g2,%i0,%g2
        addcc %i5,%g3,%i5
        addx %i4,%g2,%i4
        st %i5,[%o7]
        mov %i4,%g3
        mov 0,%g2
        mov %g2,%i4
        mov %g3,%i5
        add %i3,-1,%i3
        cmp %i3,%g2
        bg,a .LL510
        ld [%g1-8],%g3
.LL71:
        mov %i5,%i0
.LL509:
        ret
        restore
.LLfe9:
        .size    bn_add_words,.LLfe9-bn_add_words
        .align 4
        .global bn_sub_words
        .type    bn_sub_words,#function
        .proc   016
bn_sub_words:
        !#PROLOGUE# 0
        save %sp,-112,%sp
        !#PROLOGUE# 1
        mov %i0,%o7
        mov 0,%i0
        cmp %i3,%i0
        ble .LL511
        add %o7,12,%g4
        add %i2,12,%g1
        add %i1,12,%i5
.LL91:
        ld [%i1],%i4
        ld [%i2],%g3
        sub %i4,%g3,%g2
        sub %g2,%i0,%g2
        cmp %i4,%g3
        be .LL94
        st %g2,[%o7]
        addx %g0,0,%i0
.LL94:
        add %i3,-1,%i3
        cmp %i3,0
        ble .LL511
        nop
        ld [%i5-8],%i4
        ld [%g1-8],%g3
        sub %i4,%g3,%g2
        sub %g2,%i0,%g2
        cmp %i4,%g3
        be .LL96
        st %g2,[%g4-8]
        addx %g0,0,%i0
.LL96:
        add %i3,-1,%i3
        cmp %i3,0
        ble .LL511
        nop
        ld [%i5-4],%i4
        ld [%g1-4],%g3
        sub %i4,%g3,%g2
        sub %g2,%i0,%g2
        cmp %i4,%g3
        be .LL98
        st %g2,[%g4-4]
        addx %g0,0,%i0
.LL98:
        add %i3,-1,%i3
        cmp %i3,0
        ble .LL511
        nop
        ld [%i5],%i4
        ld [%g1],%g3
        sub %i4,%g3,%g2
        sub %g2,%i0,%g2
        cmp %i4,%g3
        be .LL100
        st %g2,[%g4]
        addx %g0,0,%i0
.LL100:
        add %i3,-1,%i3
        cmp %i3,0
        ble .LL511
        add %i5,16,%i5
        add %i1,16,%i1
        add %g1,16,%g1
        add %i2,16,%i2
        add %g4,16,%g4
        b .LL91
        add %o7,16,%o7
.LL511:
        ret
        restore
.LLfe10:
        .size    bn_sub_words,.LLfe10-bn_sub_words
        .ident  "GCC: (GNU) 2.8.1"

Reply via email to