Fix assembler for Alpha (tested only on DEC OSF not Linux or *BSD). The
authorMark J. Cox <mark@openssl.org>
Wed, 3 Nov 1999 14:10:10 +0000 (14:10 +0000)
committerMark J. Cox <mark@openssl.org>
Wed, 3 Nov 1999 14:10:10 +0000 (14:10 +0000)
problem was that one of the replacement routines had not been working since
SSLeay releases.  For now the offending routine has been replaced with
non-optimised assembler.  Even so, this now gives around 95% performance
improvement for 1024 bit RSA signs.

CHANGES
Configure
crypto/bn/asm/alpha.s

diff --git a/CHANGES b/CHANGES
index 27a6a80..5a017ce 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,13 @@
 
  Changes between 0.9.4 and 0.9.5  [xx XXX 1999]
 
+  *) Fix assembler for Alpha (tested only on DEC OSF not Linux or *BSD).  The
+     problem was that one of the replacement routines had not been working since
+     SSLeay releases.  For now the offending routine has been replaced with
+     non-optimised assembler.  Even so, this now gives around 95% performance
+     improvement for 1024 bit RSA signs.
+     [Mark Cox]
+
   *) Hack to fix PKCS#7 decryption when used with some unorthodox RC2 
      handling. Most clients have the effective key size in bits equal to
      the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key.
index f4fe84c..fb5a194 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -198,15 +198,12 @@ my %table=(
 # Dec Alpha, OSF/1 - the alpha164-cc is the flags for a 21164A with
 # the new compiler
 # For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
-"alpha-gcc","gcc:-O3::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:::",
-"alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:::",
-"alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:::",
+"alpha-gcc","gcc:-O3::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:asm/alpha.o::",
+"alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/alpha.o::",
+"alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/alpha.o::",
 "FreeBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2:::",
 
 # assembler versions -- currently defunct:
-##"alpha-gcc","gcc:-O3::(unknown)::SIXTY_FOUR_BIT_LONG DES_UNROLL DES_RISC1:asm/alpha.o::",
-##"alpha-cc", "cc:-tune host -O4 -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG:asm/alpha.o::",
-##"alpha164-cc", "cc:-tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG:asm/alpha.o::",
 ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:asm/alpha.o::",
 
 # The intel boxes :-), It would be worth seeing if bsdi-gcc can use the
index a351694..555ff0b 100644 (file)
@@ -694,567 +694,1868 @@ bn_mul_comba8:
 bn_mul_comba8..ng:
        .frame $30,0,$26,0
        .prologue 0
-
-       subq    $30,    16,     $30
-       ldq     $0,     0($17)
+       ldq     $1,     0($17)
+       ldq     $2,     0($18)
+       zapnot  $1,     15,     $7
+       srl     $2,     32,     $8
+       mulq    $8,     $7,     $22
+       srl     $1,     32,     $6
+       zapnot  $2,     15,     $5
+       mulq    $5,     $6,     $4
+       mulq    $7,     $5,     $24
+       addq    $22,    $4,     $22
+       cmpult  $22,    $4,     $1
+       mulq    $6,     $8,     $3
+       beq     $1,     $173
+       bis     $31,    1,      $1
+       sll     $1,     32,     $1
+       addq    $3,     $1,     $3
+$173:
+       sll     $22,    32,     $4
+       addq    $24,    $4,     $24
+       stq     $24,    0($16)
+       ldq     $2,     0($17)
+       ldq     $1,     8($18)
+       zapnot  $2,     15,     $7
+       srl     $1,     32,     $8
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $2,     32,     $6
+       mulq    $5,     $6,     $23
+       mulq    $6,     $8,     $6
+       srl     $22,    32,     $1
+       cmpult  $24,    $4,     $2
+       addq    $3,     $1,     $3
+       addq    $2,     $3,     $22
+       addq    $25,    $23,    $25
+       cmpult  $25,    $23,    $1
+       bis     $31,    1,      $2
+       beq     $1,     $177
+       sll     $2,     32,     $1
+       addq    $6,     $1,     $6
+$177:
+       sll     $25,    32,     $23
        ldq     $1,     0($18)
-       stq     $9,     0($30)
-       stq     $10,    8($30)
-       ldq     $2,     8($17)
-       ldq     $3,     8($18)
-       ldq     $4,     16($17)
-       ldq     $5,     16($18)
-       ldq     $6,     24($17)
-       ldq     $7,     24($18)
-       ldq     $8,     8($17)
-       ldq     $22,    8($18)
-       ldq     $23,    8($17)
-       ldq     $24,    8($18)
-       ldq     $25,    8($17)
-       ldq     $27,    8($18)
-       ldq     $28,    8($17)
-       ldq     $21,    8($18)
-       bis     $31,    $31,    $9
-       mulq    $0,     $1,     $20
-       umulh   $0,     $1,     $19
-       stq     $20,    0($16)
-       bis     $31,    $31,    $20
-       mulq    $0,     $3,     $10
-       umulh   $0,     $3,     $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $10
-       addq    $20,    $10,    $20
-       mulq    $2,     $1,     $18
-       umulh   $2,     $1,     $17
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $20,    $18,    $20
-       stq     $19,    8($16)
-       bis     $31,    $31,    $19
-       mulq    $0,     $5,     $10
-       umulh   $0,     $5,     $17
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $18
-       addq    $18,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       mulq    $2,     $3,     $18
-       umulh   $2,     $3,     $17
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $10
-       addq    $10,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $18
-       addq    $19,    $18,    $19
-       mulq    $4,     $1,     $10
-       umulh   $4,     $1,     $17
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $18
-       addq    $18,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       stq     $9,     16($16)
-       bis     $31,    $31,    $9
-       mulq    $0,     $7,     $18
-       umulh   $0,     $7,     $17
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $9,     $18,    $9
-       mulq    $2,     $5,     $10
-       umulh   $2,     $5,     $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       mulq    $4,     $3,     $18
-       umulh   $4,     $3,     $17
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $9,     $18,    $9
-       mulq    $6,     $1,     $10
-       umulh   $6,     $1,     $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       stq     $20,    24($16)
-       bis     $31,    $31,    $20
-       mulq    $0,     $22,    $18
-       umulh   $0,     $22,    $17
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $20,    $18,    $20
-       mulq    $2,     $7,     $10
-       umulh   $2,     $7,     $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $10
-       addq    $20,    $10,    $20
-       mulq    $4,     $5,     $18
-       umulh   $4,     $5,     $17
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $20,    $18,    $20
-       mulq    $6,     $3,     $10
-       umulh   $6,     $3,     $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $10
-       addq    $20,    $10,    $20
-       mulq    $8,     $1,     $18
-       umulh   $8,     $1,     $17
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $20,    $18,    $20
-       stq     $19,    32($16)
-       bis     $31,    $31,    $19
-       mulq    $0,     $24,    $10
-       umulh   $0,     $24,    $17
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $18
-       addq    $18,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       mulq    $2,     $22,    $18
-       umulh   $2,     $22,    $17
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $10
-       addq    $10,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $18
-       addq    $19,    $18,    $19
-       mulq    $4,     $7,     $10
-       umulh   $4,     $7,     $17
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $18
-       addq    $18,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       mulq    $6,     $5,     $18
-       umulh   $6,     $5,     $17
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $10
-       addq    $10,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $18
-       addq    $19,    $18,    $19
-       mulq    $8,     $3,     $10
-       umulh   $8,     $3,     $17
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $18
-       addq    $18,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       mulq    $23,    $1,     $18
-       umulh   $23,    $1,     $17
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $10
-       addq    $10,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $18
-       addq    $19,    $18,    $19
-       stq     $9,     40($16)
-       bis     $31,    $31,    $9
-       mulq    $0,     $27,    $10
-       umulh   $0,     $27,    $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       mulq    $2,     $24,    $18
-       umulh   $2,     $24,    $17
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $9,     $18,    $9
-       mulq    $4,     $22,    $10
-       umulh   $4,     $22,    $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       mulq    $6,     $7,     $18
-       umulh   $6,     $7,     $17
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $9,     $18,    $9
-       mulq    $8,     $5,     $10
-       umulh   $8,     $5,     $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       mulq    $23,    $3,     $18
-       umulh   $23,    $3,     $17
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $9,     $18,    $9
-       mulq    $25,    $1,     $10
-       umulh   $25,    $1,     $17
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $10
-       addq    $9,     $10,    $9
-       stq     $20,    48($16)
-       bis     $31,    $31,    $20
-       mulq    $0,     $21,    $18
-       umulh   $0,     $21,    $17
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $10
-       addq    $10,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $20,    $18,    $20
-       mulq    $2,     $27,    $10
-       umulh   $2,     $27,    $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $0
-       addq    $20,    $0,     $20
-       mulq    $4,     $24,    $10
-       umulh   $4,     $24,    $18
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $17
-       addq    $17,    $18,    $18
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $0
-       addq    $20,    $0,     $20
-       mulq    $6,     $22,    $10
-       umulh   $6,     $22,    $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $0
-       addq    $20,    $0,     $20
-       mulq    $8,     $7,     $10
-       umulh   $8,     $7,     $18
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $17
-       addq    $17,    $18,    $18
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $0
-       addq    $20,    $0,     $20
-       mulq    $23,    $5,     $10
-       umulh   $23,    $5,     $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $0
-       addq    $20,    $0,     $20
-       mulq    $25,    $3,     $10
-       umulh   $25,    $3,     $18
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $17
-       addq    $17,    $18,    $18
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $0
-       addq    $20,    $0,     $20
-       mulq    $28,    $1,     $10
-       umulh   $28,    $1,     $17
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $0
-       addq    $20,    $0,     $20
-       stq     $19,    56($16)
-       bis     $31,    $31,    $19
-       mulq    $2,     $21,    $10
-       umulh   $2,     $21,    $18
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $17
-       addq    $17,    $18,    $18
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $0
-       addq    $19,    $0,     $19
-       mulq    $4,     $27,    $1
-       umulh   $4,     $27,    $10
-       addq    $9,     $1,     $9
-       cmpult  $9,     $1,     $17
-       addq    $17,    $10,    $10
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $18
-       addq    $19,    $18,    $19
-       mulq    $6,     $24,    $0
-       umulh   $6,     $24,    $2
-       addq    $9,     $0,     $9
-       cmpult  $9,     $0,     $1
-       addq    $1,     $2,     $2
-       addq    $20,    $2,     $20
-       cmpult  $20,    $2,     $17
-       addq    $19,    $17,    $19
-       mulq    $8,     $22,    $10
-       umulh   $8,     $22,    $18
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $0
-       addq    $0,     $18,    $18
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $1
-       addq    $19,    $1,     $19
-       mulq    $23,    $7,     $2
-       umulh   $23,    $7,     $17
-       addq    $9,     $2,     $9
-       cmpult  $9,     $2,     $10
-       addq    $10,    $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $0
-       addq    $19,    $0,     $19
-       mulq    $25,    $5,     $18
-       umulh   $25,    $5,     $1
-       addq    $9,     $18,    $9
-       cmpult  $9,     $18,    $2
-       addq    $2,     $1,     $1
-       addq    $20,    $1,     $20
-       cmpult  $20,    $1,     $10
-       addq    $19,    $10,    $19
-       mulq    $28,    $3,     $17
-       umulh   $28,    $3,     $0
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $18
-       addq    $18,    $0,     $0
-       addq    $20,    $0,     $20
-       cmpult  $20,    $0,     $2
-       addq    $19,    $2,     $19
-       stq     $9,     64($16)
-       bis     $31,    $31,    $9
-       mulq    $4,     $21,    $1
-       umulh   $4,     $21,    $10
-       addq    $20,    $1,     $20
-       cmpult  $20,    $1,     $17
-       addq    $17,    $10,    $10
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $18
-       addq    $9,     $18,    $9
-       mulq    $6,     $27,    $0
-       umulh   $6,     $27,    $2
-       addq    $20,    $0,     $20
-       cmpult  $20,    $0,     $3
-       addq    $3,     $2,     $2
-       addq    $19,    $2,     $19
-       cmpult  $19,    $2,     $1
-       addq    $9,     $1,     $9
-       mulq    $8,     $24,    $17
-       umulh   $8,     $24,    $10
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $18
-       addq    $18,    $10,    $10
-       addq    $19,    $10,    $19
-       cmpult  $19,    $10,    $4
-       addq    $9,     $4,     $9
-       mulq    $23,    $22,    $0
-       umulh   $23,    $22,    $3
-       addq    $20,    $0,     $20
-       cmpult  $20,    $0,     $2
-       addq    $2,     $3,     $3
-       addq    $19,    $3,     $19
-       cmpult  $19,    $3,     $1
-       addq    $9,     $1,     $9
-       mulq    $25,    $7,     $17
-       umulh   $25,    $7,     $18
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $10,    $18,    $18
-       addq    $19,    $18,    $19
-       cmpult  $19,    $18,    $4
-       addq    $9,     $4,     $9
-       mulq    $28,    $5,     $0
-       umulh   $28,    $5,     $2
-       addq    $20,    $0,     $20
-       cmpult  $20,    $0,     $3
-       addq    $3,     $2,     $2
-       addq    $19,    $2,     $19
-       cmpult  $19,    $2,     $1
-       addq    $9,     $1,     $9
-       stq     $20,    72($16)
-       bis     $31,    $31,    $20
-       mulq    $6,     $21,    $17
-       umulh   $6,     $21,    $10
-       addq    $19,    $17,    $19
-       cmpult  $19,    $17,    $18
-       addq    $18,    $10,    $10
-       addq    $9,     $10,    $9
-       cmpult  $9,     $10,    $4
-       addq    $20,    $4,     $20
-       mulq    $8,     $27,    $0
-       umulh   $8,     $27,    $3
-       addq    $19,    $0,     $19
-       cmpult  $19,    $0,     $2
-       addq    $2,     $3,     $3
-       addq    $9,     $3,     $9
-       cmpult  $9,     $3,     $1
-       addq    $20,    $1,     $20
-       mulq    $23,    $24,    $5
-       umulh   $23,    $24,    $17
-       addq    $19,    $5,     $19
-       cmpult  $19,    $5,     $18
-       addq    $18,    $17,    $17
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $10
-       addq    $20,    $10,    $20
-       mulq    $25,    $22,    $4
-       umulh   $25,    $22,    $6
-       addq    $19,    $4,     $19
-       cmpult  $19,    $4,     $0
-       addq    $0,     $6,     $6
-       addq    $9,     $6,     $9
-       cmpult  $9,     $6,     $2
-       addq    $20,    $2,     $20
-       mulq    $28,    $7,     $3
-       umulh   $28,    $7,     $1
-       addq    $19,    $3,     $19
-       cmpult  $19,    $3,     $5
-       addq    $5,     $1,     $1
-       addq    $9,     $1,     $9
-       cmpult  $9,     $1,     $18
-       addq    $20,    $18,    $20
-       stq     $19,    80($16)
-       bis     $31,    $31,    $19
-       mulq    $8,     $21,    $17
-       umulh   $8,     $21,    $10
-       addq    $9,     $17,    $9
-       cmpult  $9,     $17,    $4
-       addq    $4,     $10,    $10
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $0
-       addq    $19,    $0,     $19
-       mulq    $23,    $27,    $6
-       umulh   $23,    $27,    $2
-       addq    $9,     $6,     $9
-       cmpult  $9,     $6,     $3
-       addq    $3,     $2,     $2
+       addq    $0,     $23,    $0
+       bis     $0,     $0,     $7
+       ldq     $3,     8($17)
+       addq    $22,    $7,     $22
+       srl     $1,     32,     $8
+       cmpult  $22,    $7,     $4
+       zapnot  $3,     15,     $7
+       mulq    $8,     $7,     $28
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $25,    32,     $1
+       cmpult  $0,     $23,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $4,     $6,     $24
+       srl     $3,     32,     $6
+       mulq    $5,     $6,     $2
+       mulq    $6,     $8,     $6
+       addq    $28,    $2,     $28
+       cmpult  $28,    $2,     $1
+       bis     $31,    1,      $2
+       beq     $1,     $181
+       sll     $2,     32,     $1
+       addq    $6,     $1,     $6
+$181:
+       sll     $28,    32,     $2
+       addq    $21,    $2,     $21
+       bis     $21,    $21,    $7
+       addq    $22,    $7,     $22
+       stq     $22,    8($16)
+       ldq     $3,     16($17)
+       ldq     $1,     0($18)
+       cmpult  $22,    $7,     $4
+       zapnot  $3,     15,     $7
+       srl     $1,     32,     $8
+       mulq    $8,     $7,     $22
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $20
+       srl     $28,    32,     $1
+       cmpult  $21,    $2,     $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $4,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $23
+       srl     $3,     32,     $6
+       mulq    $5,     $6,     $2
+       mulq    $6,     $8,     $6
+       addq    $22,    $2,     $22
+       cmpult  $22,    $2,     $1
+       bis     $31,    1,      $2
+       beq     $1,     $185
+       sll     $2,     32,     $1
+       addq    $6,     $1,     $6
+$185:
+       sll     $22,    32,     $2
+       ldq     $1,     8($18)
        addq    $20,    $2,     $20
-       cmpult  $20,    $2,     $5
-       addq    $19,    $5,     $19
-       mulq    $25,    $24,    $1
-       umulh   $25,    $24,    $18
-       addq    $9,     $1,     $9
-       cmpult  $9,     $1,     $7
-       addq    $7,     $18,    $18
-       addq    $20,    $18,    $20
-       cmpult  $20,    $18,    $17
-       addq    $19,    $17,    $19
-       mulq    $28,    $22,    $4
-       umulh   $28,    $22,    $10
-       addq    $9,     $4,     $9
-       cmpult  $9,     $4,     $0
-       addq    $0,     $10,    $10
-       addq    $20,    $10,    $20
-       cmpult  $20,    $10,    $8
-       addq    $19,    $8,     $19
-       stq     $9,     88($16)
-       bis     $31,    $31,    $9
-       mulq    $23,    $21,    $6
-       umulh   $23,    $21,    $3
-       addq    $20,    $6,     $20
-       cmpult  $20,    $6,     $2
-       addq    $2,     $3,     $3
-       addq    $19,    $3,     $19
-       cmpult  $19,    $3,     $5
-       addq    $9,     $5,     $9
-       mulq    $25,    $27,    $1
-       umulh   $25,    $27,    $7
-       addq    $20,    $1,     $20
-       cmpult  $20,    $1,     $18
-       addq    $18,    $7,     $7
-       addq    $19,    $7,     $19
-       cmpult  $19,    $7,     $17
-       addq    $9,     $17,    $9
-       mulq    $28,    $24,    $4
-       umulh   $28,    $24,    $0
-       addq    $20,    $4,     $20
-       cmpult  $20,    $4,     $10
-       addq    $10,    $0,     $0
-       addq    $19,    $0,     $19
-       cmpult  $19,    $0,     $8
-       addq    $9,     $8,     $9
-       stq     $20,    96($16)
-       bis     $31,    $31,    $20
-       mulq    $25,    $21,    $22
-       umulh   $25,    $21,    $6
-       addq    $19,    $22,    $19
-       cmpult  $19,    $22,    $2
+       bis     $20,    $20,    $7
+       ldq     $4,     8($17)
+       addq    $24,    $7,     $24
+       srl     $1,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $22,    32,     $1
+       cmpult  $20,    $2,     $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $22
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $21
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $189
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$189:
+       sll     $25,    32,     $5
+       ldq     $2,     16($18)
+       addq    $0,     $5,     $0
+       bis     $0,     $0,     $7
+       ldq     $4,     0($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $0,     $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $193
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$193:
+       sll     $28,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $24,    $7,     $24
+       stq     $24,    16($16)
+       ldq     $4,     0($17)
+       ldq     $5,     24($18)
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $24
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $0,     $24,    $0
+       cmpult  $0,     $24,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $197
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$197:
+       sll     $0,     32,     $24
+       ldq     $1,     16($18)
+       addq    $2,     $24,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     8($17)
+       addq    $23,    $7,     $23
+       srl     $1,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $0,     32,     $1
+       cmpult  $2,     $24,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $24
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $20
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $201
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$201:
+       sll     $25,    32,     $5
+       ldq     $2,     8($18)
+       addq    $21,    $5,     $21
+       bis     $21,    $21,    $7
+       ldq     $4,     16($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $21,    $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $205
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$205:
+       sll     $28,    32,     $25
+       ldq     $2,     0($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $209
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$209:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $23,    $7,     $23
+       stq     $23,    24($16)
+       ldq     $4,     32($17)
+       ldq     $5,     0($18)
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $23
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $28,    $23,    $28
+       cmpult  $28,    $23,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $213
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$213:
+       sll     $28,    32,     $23
+       ldq     $1,     8($18)
+       addq    $2,     $23,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     24($17)
+       addq    $22,    $7,     $22
+       srl     $1,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $23,    $2
+       addq    $6,     $1,     $6
        addq    $2,     $6,     $6
-       addq    $9,     $6,     $9
-       cmpult  $9,     $6,     $3
-       addq    $20,    $3,     $20
-       mulq    $28,    $27,    $5
-       umulh   $28,    $27,    $23
-       addq    $19,    $5,     $19
-       cmpult  $19,    $5,     $1
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $23
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $21
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $217
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$217:
+       sll     $25,    32,     $5
+       ldq     $2,     16($18)
+       addq    $0,     $5,     $0
+       bis     $0,     $0,     $7
+       ldq     $4,     16($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $0,     $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
        addq    $1,     $23,    $23
-       addq    $9,     $23,    $9
-       cmpult  $9,     $23,    $18
-       addq    $20,    $18,    $20
-       stq     $19,    104($16)
-       bis     $31,    $31,    $19
-       mulq    $28,    $21,    $7
-       umulh   $28,    $21,    $17
-       addq    $9,     $7,     $9
-       cmpult  $9,     $7,     $4
-       addq    $4,     $17,    $17
-       addq    $20,    $17,    $20
-       cmpult  $20,    $17,    $10
-       addq    $19,    $10,    $19
-       stq     $9,     112($16)
-       stq     $20,    120($16)
-       ldq     $9,     0($30)
-       ldq     $10,    8($30)
-       addq    $30,    16,     $30
-       ret     $31,($26),1
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $221
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$221:
+       sll     $28,    32,     $25
+       ldq     $2,     24($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     8($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $225
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$225:
+       sll     $0,     32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     0($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $229
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$229:
+       sll     $28,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $22,    $7,     $22
+       stq     $22,    32($16)
+       ldq     $4,     0($17)
+       ldq     $5,     40($18)
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $22
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $0,     $22,    $0
+       cmpult  $0,     $22,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $233
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$233:
+       sll     $0,     32,     $22
+       ldq     $1,     32($18)
+       addq    $2,     $22,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     8($17)
+       addq    $24,    $7,     $24
+       srl     $1,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $0,     32,     $1
+       cmpult  $2,     $22,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $22
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $20
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $237
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$237:
+       sll     $25,    32,     $5
+       ldq     $2,     24($18)
+       addq    $21,    $5,     $21
+       bis     $21,    $21,    $7
+       ldq     $4,     16($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $21,    $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $241
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$241:
+       sll     $28,    32,     $25
+       ldq     $2,     16($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $245
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$245:
+       sll     $0,     32,     $25
+       ldq     $2,     8($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     32($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $249
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$249:
+       sll     $28,    32,     $25
+       ldq     $2,     0($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     40($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $253
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$253:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $24,    $7,     $24
+       stq     $24,    40($16)
+       ldq     $4,     48($17)
+       ldq     $5,     0($18)
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $24
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $28,    $24,    $28
+       cmpult  $28,    $24,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $257
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$257:
+       sll     $28,    32,     $24
+       ldq     $1,     8($18)
+       addq    $2,     $24,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     40($17)
+       addq    $23,    $7,     $23
+       srl     $1,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $24,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $24
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $21
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $261
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$261:
+       sll     $25,    32,     $5
+       ldq     $2,     16($18)
+       addq    $0,     $5,     $0
+       bis     $0,     $0,     $7
+       ldq     $4,     32($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $0,     $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $265
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$265:
+       sll     $28,    32,     $25
+       ldq     $2,     24($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $269
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$269:
+       sll     $0,     32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     16($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $273
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$273:
+       sll     $28,    32,     $25
+       ldq     $2,     40($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     8($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $277
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$277:
+       sll     $0,     32,     $25
+       ldq     $2,     48($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     0($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $281
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$281:
+       sll     $28,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $23,    $7,     $23
+       stq     $23,    48($16)
+       ldq     $4,     0($17)
+       ldq     $5,     56($18)
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $23
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $0,     $23,    $0
+       cmpult  $0,     $23,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $285
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$285:
+       sll     $0,     32,     $23
+       ldq     $1,     48($18)
+       addq    $2,     $23,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     8($17)
+       addq    $22,    $7,     $22
+       srl     $1,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $0,     32,     $1
+       cmpult  $2,     $23,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $23
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $20
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $289
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$289:
+       sll     $25,    32,     $5
+       ldq     $2,     40($18)
+       addq    $21,    $5,     $21
+       bis     $21,    $21,    $7
+       ldq     $4,     16($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $21,    $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $293
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$293:
+       sll     $28,    32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $297
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$297:
+       sll     $0,     32,     $25
+       ldq     $2,     24($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     32($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $301
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$301:
+       sll     $28,    32,     $25
+       ldq     $2,     16($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     40($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $305
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$305:
+       sll     $0,     32,     $25
+       ldq     $2,     8($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     48($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $309
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$309:
+       sll     $28,    32,     $25
+       ldq     $2,     0($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     56($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $313
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$313:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $22,    $7,     $22
+       stq     $22,    56($16)
+       ldq     $4,     56($17)
+       ldq     $5,     8($18)
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $22
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $28,    $22,    $28
+       cmpult  $28,    $22,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $317
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$317:
+       sll     $28,    32,     $22
+       ldq     $1,     16($18)
+       addq    $2,     $22,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     48($17)
+       addq    $24,    $7,     $24
+       srl     $1,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $22,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $22
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $21
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $321
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$321:
+       sll     $25,    32,     $5
+       ldq     $2,     24($18)
+       addq    $0,     $5,     $0
+       bis     $0,     $0,     $7
+       ldq     $4,     40($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $0,     $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $325
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$325:
+       sll     $28,    32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     32($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $329
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$329:
+       sll     $0,     32,     $25
+       ldq     $2,     40($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $333
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$333:
+       sll     $28,    32,     $25
+       ldq     $2,     48($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     16($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $337
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$337:
+       sll     $0,     32,     $25
+       ldq     $2,     56($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     8($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $341
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$341:
+       sll     $28,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $24,    $7,     $24
+       stq     $24,    64($16)
+       ldq     $4,     16($17)
+       ldq     $5,     56($18)
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $24
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $0,     $24,    $0
+       cmpult  $0,     $24,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $345
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$345:
+       sll     $0,     32,     $24
+       ldq     $1,     48($18)
+       addq    $2,     $24,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     24($17)
+       addq    $23,    $7,     $23
+       srl     $1,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $0,     32,     $1
+       cmpult  $2,     $24,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $24
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $20
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $349
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$349:
+       sll     $25,    32,     $5
+       ldq     $2,     40($18)
+       addq    $21,    $5,     $21
+       bis     $21,    $21,    $7
+       ldq     $4,     32($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $21,    $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $353
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$353:
+       sll     $28,    32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     40($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $357
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$357:
+       sll     $0,     32,     $25
+       ldq     $2,     24($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     48($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $361
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$361:
+       sll     $28,    32,     $25
+       ldq     $2,     16($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     56($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $365
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$365:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $23,    $7,     $23
+       stq     $23,    72($16)
+       ldq     $4,     56($17)
+       ldq     $5,     24($18)
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $23
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $28,    $23,    $28
+       cmpult  $28,    $23,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $369
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$369:
+       sll     $28,    32,     $23
+       ldq     $1,     32($18)
+       addq    $2,     $23,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     48($17)
+       addq    $22,    $7,     $22
+       srl     $1,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $23,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $23
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $21
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $373
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$373:
+       sll     $25,    32,     $5
+       ldq     $2,     40($18)
+       addq    $0,     $5,     $0
+       bis     $0,     $0,     $7
+       ldq     $4,     40($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $0,     $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $377
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$377:
+       sll     $28,    32,     $25
+       ldq     $2,     48($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     32($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $23,    $23
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $381
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$381:
+       sll     $0,     32,     $25
+       ldq     $2,     56($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     24($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $385
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$385:
+       sll     $28,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $22,    $7,     $22
+       stq     $22,    80($16)
+       ldq     $4,     32($17)
+       ldq     $5,     56($18)
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $22
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $0,     $22,    $0
+       cmpult  $0,     $22,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $389
+       sll     $21,    32,     $1
+       addq    $6,     $1,     $6
+$389:
+       sll     $0,     32,     $22
+       ldq     $1,     48($18)
+       addq    $2,     $22,    $2
+       bis     $2,     $2,     $7
+       ldq     $4,     40($17)
+       addq    $24,    $7,     $24
+       srl     $1,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $25
+       zapnot  $1,     15,     $5
+       mulq    $7,     $5,     $21
+       srl     $0,     32,     $1
+       cmpult  $2,     $22,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $22
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $5
+       bis     $31,    1,      $20
+       addq    $25,    $5,     $25
+       cmpult  $25,    $5,     $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $393
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$393:
+       sll     $25,    32,     $5
+       ldq     $2,     40($18)
+       addq    $21,    $5,     $21
+       bis     $21,    $21,    $7
+       ldq     $4,     48($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $25,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $21,    $5,     $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $397
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$397:
+       sll     $28,    32,     $25
+       ldq     $2,     32($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     56($17)
+       addq    $24,    $7,     $24
+       srl     $2,     32,     $8
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $21
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $22,    $22
+       addq    $21,    $25,    $21
+       cmpult  $21,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $401
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$401:
+       sll     $21,    32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $24,    $7,     $24
+       stq     $24,    88($16)
+       ldq     $4,     56($17)
+       ldq     $5,     40($18)
+       cmpult  $24,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $0
+       srl     $21,    32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $23,    $6,     $23
+       cmpult  $23,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $24
+       mulq    $7,     $5,     $5
+       addq    $1,     $22,    $22
+       addq    $0,     $24,    $0
+       cmpult  $0,     $24,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $405
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$405:
+       sll     $0,     32,     $24
+       ldq     $2,     48($18)
+       addq    $5,     $24,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     48($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $24,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $24
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $5
+       addq    $28,    $25,    $28
+       cmpult  $28,    $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $409
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$409:
+       sll     $28,    32,     $25
+       ldq     $2,     56($18)
+       addq    $5,     $25,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     40($17)
+       addq    $23,    $7,     $23
+       srl     $2,     32,     $8
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $25,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $1,     $24,    $24
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $413
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$413:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $23,    $7,     $23
+       stq     $23,    96($16)
+       ldq     $4,     48($17)
+       ldq     $5,     56($18)
+       cmpult  $23,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $22,    $6,     $22
+       cmpult  $22,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $23
+       mulq    $7,     $5,     $5
+       addq    $1,     $24,    $24
+       addq    $28,    $23,    $28
+       cmpult  $28,    $23,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $417
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$417:
+       sll     $28,    32,     $23
+       ldq     $2,     48($18)
+       addq    $5,     $23,    $5
+       bis     $5,     $5,     $7
+       ldq     $4,     56($17)
+       addq    $22,    $7,     $22
+       srl     $2,     32,     $8
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       mulq    $8,     $7,     $0
+       srl     $28,    32,     $1
+       addq    $6,     $1,     $6
+       cmpult  $5,     $23,    $1
+       zapnot  $2,     15,     $5
+       addq    $1,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $23
+       srl     $4,     32,     $6
+       mulq    $5,     $6,     $25
+       mulq    $7,     $5,     $2
+       addq    $0,     $25,    $0
+       cmpult  $0,     $25,    $1
+       mulq    $6,     $8,     $6
+       beq     $1,     $421
+       sll     $20,    32,     $1
+       addq    $6,     $1,     $6
+$421:
+       sll     $0,     32,     $25
+       addq    $2,     $25,    $2
+       bis     $2,     $2,     $7
+       addq    $22,    $7,     $22
+       stq     $22,    104($16)
+       ldq     $4,     56($17)
+       ldq     $5,     56($18)
+       cmpult  $22,    $7,     $3
+       zapnot  $4,     15,     $7
+       srl     $5,     32,     $8
+       mulq    $8,     $7,     $28
+       srl     $0,     32,     $1
+       cmpult  $2,     $25,    $2
+       addq    $6,     $1,     $6
+       addq    $2,     $6,     $6
+       addq    $3,     $6,     $6
+       addq    $24,    $6,     $24
+       cmpult  $24,    $6,     $1
+       srl     $4,     32,     $6
+       zapnot  $5,     15,     $5
+       mulq    $5,     $6,     $22
+       mulq    $7,     $5,     $2
+       addq    $1,     $23,    $23
+       addq    $28,    $22,    $28
+       cmpult  $28,    $22,    $1
+       mulq    $6,     $8,     $3
+       beq     $1,     $425
+       sll     $20,    32,     $1
+       addq    $3,     $1,     $3
+$425:
+       sll     $28,    32,     $22
+       srl     $28,    32,     $1
+       addq    $2,     $22,    $2
+       addq    $3,     $1,     $3
+       bis     $2,     $2,     $7
+       addq    $24,    $7,     $24
+       cmpult  $7,     $22,    $1
+       cmpult  $24,    $7,     $2
+       addq    $1,     $3,     $6
+       addq    $2,     $6,     $6
+       stq     $24,    112($16)
+       addq    $23,    $6,     $23
+       stq     $23,    120($16)
+       ret     $31,    ($26),  1
        .end bn_mul_comba8
        .text
        .align 3