#ifndef __ASSEMBLER__
# define __ASSEMBLER__ 1
#endif
#include "crypto/sparc_arch.h"
#ifdef __arch64__
.register %g2,#scratch
.register %g3,#scratch
#endif
.section ".text",#alloc,#execinstr
.align 64
K512:
.type K512,#object
.long 0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd
.long 0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc
.long 0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019
.long 0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118
.long 0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe
.long 0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2
.long 0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1
.long 0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694
.long 0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3
.long 0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65
.long 0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483
.long 0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5
.long 0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210
.long 0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4
.long 0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725
.long 0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70
.long 0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926
.long 0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df
.long 0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8
.long 0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b
.long 0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001
.long 0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30
.long 0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910
.long 0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8
.long 0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53
.long 0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8
.long 0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb
.long 0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3
.long 0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60
.long 0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec
.long 0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9
.long 0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b
.long 0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207
.long 0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178
.long 0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6
.long 0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b
.long 0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493
.long 0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c
.long 0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a
.long 0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817
.size K512,.-K512
#ifdef __PIC__
SPARC_PIC_THUNK(%g1)
#endif
.globl sha512_block_data_order
.align 32
sha512_block_data_order:
SPARC_LOAD_ADDRESS_LEAF(OPENSSL_sparcv9cap_P,%g1,%g5)
ld [%g1+4],%g1 ! OPENSSL_sparcv9cap_P[1]
andcc %g1, CFR_SHA512, %g0
be .Lsoftware
nop
ldd [%o0 + 0x00], %f0 ! load context
ldd [%o0 + 0x08], %f2
ldd [%o0 + 0x10], %f4
ldd [%o0 + 0x18], %f6
ldd [%o0 + 0x20], %f8
ldd [%o0 + 0x28], %f10
andcc %o1, 0x7, %g0
ldd [%o0 + 0x30], %f12
bne,pn %icc, .Lhwunaligned
ldd [%o0 + 0x38], %f14
.Lhwaligned_loop:
ldd [%o1 + 0x00], %f16
ldd [%o1 + 0x08], %f18
ldd [%o1 + 0x10], %f20
ldd [%o1 + 0x18], %f22
ldd [%o1 + 0x20], %f24
ldd [%o1 + 0x28], %f26
ldd [%o1 + 0x30], %f28
ldd [%o1 + 0x38], %f30
ldd [%o1 + 0x40], %f32
ldd [%o1 + 0x48], %f34
ldd [%o1 + 0x50], %f36
ldd [%o1 + 0x58], %f38
ldd [%o1 + 0x60], %f40
ldd [%o1 + 0x68], %f42
ldd [%o1 + 0x70], %f44
subcc %o2, 1, %o2 ! done yet?
ldd [%o1 + 0x78], %f46
add %o1, 0x80, %o1
prefetch [%o1 + 63], 20
prefetch [%o1 + 64+63], 20
.word 0x81b02860 ! SHA512
bne,pt SIZE_T_CC, .Lhwaligned_loop
nop
.Lhwfinish:
std %f0, [%o0 + 0x00] ! store context
std %f2, [%o0 + 0x08]
std %f4, [%o0 + 0x10]
std %f6, [%o0 + 0x18]
std %f8, [%o0 + 0x20]
std %f10, [%o0 + 0x28]
std %f12, [%o0 + 0x30]
retl
std %f14, [%o0 + 0x38]
.align 16
.Lhwunaligned:
.word 0x93b24300 !alignaddr %o1,%g0,%o1
ldd [%o1 + 0x00], %f18
.Lhwunaligned_loop:
ldd [%o1 + 0x08], %f20
ldd [%o1 + 0x10], %f22
ldd [%o1 + 0x18], %f24
ldd [%o1 + 0x20], %f26
ldd [%o1 + 0x28], %f28
ldd [%o1 + 0x30], %f30
ldd [%o1 + 0x38], %f32
ldd [%o1 + 0x40], %f34
ldd [%o1 + 0x48], %f36
ldd [%o1 + 0x50], %f38
ldd [%o1 + 0x58], %f40
ldd [%o1 + 0x60], %f42
ldd [%o1 + 0x68], %f44
ldd [%o1 + 0x70], %f46
ldd [%o1 + 0x78], %f48
subcc %o2, 1, %o2 ! done yet?
ldd [%o1 + 0x80], %f50
add %o1, 0x80, %o1
prefetch [%o1 + 63], 20
prefetch [%o1 + 64+63], 20
.word 0xa1b48914 !faligndata %f18,%f20,%f16
.word 0xa5b50916 !faligndata %f20,%f22,%f18
.word 0xa9b58918 !faligndata %f22,%f24,%f20
.word 0xadb6091a !faligndata %f24,%f26,%f22
.word 0xb1b6891c !faligndata %f26,%f28,%f24
.word 0xb5b7091e !faligndata %f28,%f30,%f26
.word 0xb9b78901 !faligndata %f30,%f32,%f28
.word 0xbdb04903 !faligndata %f32,%f34,%f30
.word 0x83b0c905 !faligndata %f34,%f36,%f32
.word 0x87b14907 !faligndata %f36,%f38,%f34
.word 0x8bb1c909 !faligndata %f38,%f40,%f36
.word 0x8fb2490b !faligndata %f40,%f42,%f38
.word 0x93b2c90d !faligndata %f42,%f44,%f40
.word 0x97b3490f !faligndata %f44,%f46,%f42
.word 0x9bb3c911 !faligndata %f46,%f48,%f44
.word 0x9fb44913 !faligndata %f48,%f50,%f46
.word 0x81b02860 ! SHA512
bne,pt SIZE_T_CC, .Lhwunaligned_loop
.word 0xa5b4cf93 !for %f50,%f50,%f18 ! %f18=%f50
ba .Lhwfinish
nop
.align 16
.Lsoftware:
save %sp,-STACK_FRAME-128,%sp
and %i1,3,%i4
sllx %i2,7,%i2
andn %i1,3,%i1
sll %i4,3,%i4
add %i1,%i2,%i2
mov 32,%i5
sub %i5,%i4,%i5
.Lpic: call .+8
add %o7,K512-.Lpic,%i3
ldx [%i0+0],%o0
ldx [%i0+8],%o1
ldx [%i0+16],%o2
ldx [%i0+24],%o3
ldx [%i0+32],%o4
ldx [%i0+40],%o5
ldx [%i0+48],%g1
ldx [%i0+56],%o7
.Lloop:
ld [%i1+0],%l0
ld [%i1+4],%l1
ld [%i1+8],%l2
ld [%i1+12],%l3
ld [%i1+16],%l4
ld [%i1+20],%l5
ld [%i1+24],%l6
cmp %i4,0
ld [%i1+28],%l7
sllx %l1,%i4,%g5 ! Xload(0)
add %i4,32,%g3
sllx %l0,%g3,%g4
ld [%i1+32],%l0
srlx %l2,%i5,%l1
or %g4,%g5,%g5
or %l1,%g5,%g5
ld [%i1+36],%l1
add %o7,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+0]
srlx %o4,14,%o7 !! 0
xor %o5,%g1,%g5
sllx %o4,23,%g4
and %o4,%g5,%g5
srlx %o4,18,%g3
xor %g4,%o7,%o7
sllx %o4,46,%g4
xor %g3,%o7,%o7
srlx %o4,41,%g3
xor %g4,%o7,%o7
sllx %o4,50,%g4
xor %g3,%o7,%o7
xor %g1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o7,%g3 ! Sigma1(e)
srlx %o0,28,%o7
add %g5,%g2,%g2
ldx [%i3+0],%g5 ! K[0]
sllx %o0,25,%g4
add %g3,%g2,%g2
srlx %o0,34,%g3
xor %g4,%o7,%o7
sllx %o0,30,%g4
xor %g3,%o7,%o7
srlx %o0,39,%g3
xor %g4,%o7,%o7
sllx %o0,36,%g4
xor %g3,%o7,%o7
xor %g4,%o7,%o7 ! Sigma0(a)
or %o0,%o1,%g3
and %o0,%o1,%g4
and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[0]
add %g4,%o7,%o7
add %g2,%o3,%o3
add %g2,%o7,%o7
sllx %l3,%i4,%g5 ! Xload(1)
add %i4,32,%g3
sllx %l2,%g3,%g4
ld [%i1+40],%l2
srlx %l4,%i5,%l3
or %g4,%g5,%g5
or %l3,%g5,%g5
ld [%i1+44],%l3
add %g1,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+8]
srlx %o3,14,%g1 !! 1
xor %o4,%o5,%g5
sllx %o3,23,%g4
and %o3,%g5,%g5
srlx %o3,18,%g3
xor %g4,%g1,%g1
sllx %o3,46,%g4
xor %g3,%g1,%g1
srlx %o3,41,%g3
xor %g4,%g1,%g1
sllx %o3,50,%g4
xor %g3,%g1,%g1
xor %o5,%g5,%g5 ! Ch(e,f,g)
xor %g4,%g1,%g3 ! Sigma1(e)
srlx %o7,28,%g1
add %g5,%g2,%g2
ldx [%i3+8],%g5 ! K[1]
sllx %o7,25,%g4
add %g3,%g2,%g2
srlx %o7,34,%g3
xor %g4,%g1,%g1
sllx %o7,30,%g4
xor %g3,%g1,%g1
srlx %o7,39,%g3
xor %g4,%g1,%g1
sllx %o7,36,%g4
xor %g3,%g1,%g1
xor %g4,%g1,%g1 ! Sigma0(a)
or %o7,%o0,%g3
and %o7,%o0,%g4
and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[1]
add %g4,%g1,%g1
add %g2,%o2,%o2
add %g2,%g1,%g1
sllx %l5,%i4,%g5 ! Xload(2)
add %i4,32,%g3
sllx %l4,%g3,%g4
ld [%i1+48],%l4
srlx %l6,%i5,%l5
or %g4,%g5,%g5
or %l5,%g5,%g5
ld [%i1+52],%l5
add %o5,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+16]
srlx %o2,14,%o5 !! 2
xor %o3,%o4,%g5
sllx %o2,23,%g4
and %o2,%g5,%g5
srlx %o2,18,%g3
xor %g4,%o5,%o5
sllx %o2,46,%g4
xor %g3,%o5,%o5
srlx %o2,41,%g3
xor %g4,%o5,%o5
sllx %o2,50,%g4
xor %g3,%o5,%o5
xor %o4,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o5,%g3 ! Sigma1(e)
srlx %g1,28,%o5
add %g5,%g2,%g2
ldx [%i3+16],%g5 ! K[2]
sllx %g1,25,%g4
add %g3,%g2,%g2
srlx %g1,34,%g3
xor %g4,%o5,%o5
sllx %g1,30,%g4
xor %g3,%o5,%o5
srlx %g1,39,%g3
xor %g4,%o5,%o5
sllx %g1,36,%g4
xor %g3,%o5,%o5
xor %g4,%o5,%o5 ! Sigma0(a)
or %g1,%o7,%g3
and %g1,%o7,%g4
and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[2]
add %g4,%o5,%o5
add %g2,%o1,%o1
add %g2,%o5,%o5
sllx %l7,%i4,%g5 ! Xload(3)
add %i4,32,%g3
sllx %l6,%g3,%g4
ld [%i1+56],%l6
srlx %l0,%i5,%l7
or %g4,%g5,%g5
or %l7,%g5,%g5
ld [%i1+60],%l7
add %o4,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+24]
srlx %o1,14,%o4 !! 3
xor %o2,%o3,%g5
sllx %o1,23,%g4
and %o1,%g5,%g5
srlx %o1,18,%g3
xor %g4,%o4,%o4
sllx %o1,46,%g4
xor %g3,%o4,%o4
srlx %o1,41,%g3
xor %g4,%o4,%o4
sllx %o1,50,%g4
xor %g3,%o4,%o4
xor %o3,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o4,%g3 ! Sigma1(e)
srlx %o5,28,%o4
add %g5,%g2,%g2
ldx [%i3+24],%g5 ! K[3]
sllx %o5,25,%g4
add %g3,%g2,%g2
srlx %o5,34,%g3
xor %g4,%o4,%o4
sllx %o5,30,%g4
xor %g3,%o4,%o4
srlx %o5,39,%g3
xor %g4,%o4,%o4
sllx %o5,36,%g4
xor %g3,%o4,%o4
xor %g4,%o4,%o4 ! Sigma0(a)
or %o5,%g1,%g3
and %o5,%g1,%g4
and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[3]
add %g4,%o4,%o4
add %g2,%o0,%o0
add %g2,%o4,%o4
sllx %l1,%i4,%g5 ! Xload(4)
add %i4,32,%g3
sllx %l0,%g3,%g4
ld [%i1+64],%l0
srlx %l2,%i5,%l1
or %g4,%g5,%g5
or %l1,%g5,%g5
ld [%i1+68],%l1
add %o3,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+32]
srlx %o0,14,%o3 !! 4
xor %o1,%o2,%g5
sllx %o0,23,%g4
and %o0,%g5,%g5
srlx %o0,18,%g3
xor %g4,%o3,%o3
sllx %o0,46,%g4
xor %g3,%o3,%o3
srlx %o0,41,%g3
xor %g4,%o3,%o3
sllx %o0,50,%g4
xor %g3,%o3,%o3
xor %o2,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o3,%g3 ! Sigma1(e)
srlx %o4,28,%o3
add %g5,%g2,%g2
ldx [%i3+32],%g5 ! K[4]
sllx %o4,25,%g4
add %g3,%g2,%g2
srlx %o4,34,%g3
xor %g4,%o3,%o3
sllx %o4,30,%g4
xor %g3,%o3,%o3
srlx %o4,39,%g3
xor %g4,%o3,%o3
sllx %o4,36,%g4
xor %g3,%o3,%o3
xor %g4,%o3,%o3 ! Sigma0(a)
or %o4,%o5,%g3
and %o4,%o5,%g4
and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[4]
add %g4,%o3,%o3
add %g2,%o7,%o7
add %g2,%o3,%o3
sllx %l3,%i4,%g5 ! Xload(5)
add %i4,32,%g3
sllx %l2,%g3,%g4
ld [%i1+72],%l2
srlx %l4,%i5,%l3
or %g4,%g5,%g5
or %l3,%g5,%g5
ld [%i1+76],%l3
add %o2,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+40]
srlx %o7,14,%o2 !! 5
xor %o0,%o1,%g5
sllx %o7,23,%g4
and %o7,%g5,%g5
srlx %o7,18,%g3
xor %g4,%o2,%o2
sllx %o7,46,%g4
xor %g3,%o2,%o2
srlx %o7,41,%g3
xor %g4,%o2,%o2
sllx %o7,50,%g4
xor %g3,%o2,%o2
xor %o1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o2,%g3 ! Sigma1(e)
srlx %o3,28,%o2
add %g5,%g2,%g2
ldx [%i3+40],%g5 ! K[5]
sllx %o3,25,%g4
add %g3,%g2,%g2
srlx %o3,34,%g3
xor %g4,%o2,%o2
sllx %o3,30,%g4
xor %g3,%o2,%o2
srlx %o3,39,%g3
xor %g4,%o2,%o2
sllx %o3,36,%g4
xor %g3,%o2,%o2
xor %g4,%o2,%o2 ! Sigma0(a)
or %o3,%o4,%g3
and %o3,%o4,%g4
and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[5]
add %g4,%o2,%o2
add %g2,%g1,%g1
add %g2,%o2,%o2
sllx %l5,%i4,%g5 ! Xload(6)
add %i4,32,%g3
sllx %l4,%g3,%g4
ld [%i1+80],%l4
srlx %l6,%i5,%l5
or %g4,%g5,%g5
or %l5,%g5,%g5
ld [%i1+84],%l5
add %o1,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+48]
srlx %g1,14,%o1 !! 6
xor %o7,%o0,%g5
sllx %g1,23,%g4
and %g1,%g5,%g5
srlx %g1,18,%g3
xor %g4,%o1,%o1
sllx %g1,46,%g4
xor %g3,%o1,%o1
srlx %g1,41,%g3
xor %g4,%o1,%o1
sllx %g1,50,%g4
xor %g3,%o1,%o1
xor %o0,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o1,%g3 ! Sigma1(e)
srlx %o2,28,%o1
add %g5,%g2,%g2
ldx [%i3+48],%g5 ! K[6]
sllx %o2,25,%g4
add %g3,%g2,%g2
srlx %o2,34,%g3
xor %g4,%o1,%o1
sllx %o2,30,%g4
xor %g3,%o1,%o1
srlx %o2,39,%g3
xor %g4,%o1,%o1
sllx %o2,36,%g4
xor %g3,%o1,%o1
xor %g4,%o1,%o1 ! Sigma0(a)
or %o2,%o3,%g3
and %o2,%o3,%g4
and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[6]
add %g4,%o1,%o1
add %g2,%o5,%o5
add %g2,%o1,%o1
sllx %l7,%i4,%g5 ! Xload(7)
add %i4,32,%g3
sllx %l6,%g3,%g4
ld [%i1+88],%l6
srlx %l0,%i5,%l7
or %g4,%g5,%g5
or %l7,%g5,%g5
ld [%i1+92],%l7
add %o0,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+56]
srlx %o5,14,%o0 !! 7
xor %g1,%o7,%g5
sllx %o5,23,%g4
and %o5,%g5,%g5
srlx %o5,18,%g3
xor %g4,%o0,%o0
sllx %o5,46,%g4
xor %g3,%o0,%o0
srlx %o5,41,%g3
xor %g4,%o0,%o0
sllx %o5,50,%g4
xor %g3,%o0,%o0
xor %o7,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o0,%g3 ! Sigma1(e)
srlx %o1,28,%o0
add %g5,%g2,%g2
ldx [%i3+56],%g5 ! K[7]
sllx %o1,25,%g4
add %g3,%g2,%g2
srlx %o1,34,%g3
xor %g4,%o0,%o0
sllx %o1,30,%g4
xor %g3,%o0,%o0
srlx %o1,39,%g3
xor %g4,%o0,%o0
sllx %o1,36,%g4
xor %g3,%o0,%o0
xor %g4,%o0,%o0 ! Sigma0(a)
or %o1,%o2,%g3
and %o1,%o2,%g4
and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[7]
add %g4,%o0,%o0
add %g2,%o4,%o4
add %g2,%o0,%o0
sllx %l1,%i4,%g5 ! Xload(8)
add %i4,32,%g3
sllx %l0,%g3,%g4
ld [%i1+96],%l0
srlx %l2,%i5,%l1
or %g4,%g5,%g5
or %l1,%g5,%g5
ld [%i1+100],%l1
add %o7,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+64]
srlx %o4,14,%o7 !! 8
xor %o5,%g1,%g5
sllx %o4,23,%g4
and %o4,%g5,%g5
srlx %o4,18,%g3
xor %g4,%o7,%o7
sllx %o4,46,%g4
xor %g3,%o7,%o7
srlx %o4,41,%g3
xor %g4,%o7,%o7
sllx %o4,50,%g4
xor %g3,%o7,%o7
xor %g1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o7,%g3 ! Sigma1(e)
srlx %o0,28,%o7
add %g5,%g2,%g2
ldx [%i3+64],%g5 ! K[8]
sllx %o0,25,%g4
add %g3,%g2,%g2
srlx %o0,34,%g3
xor %g4,%o7,%o7
sllx %o0,30,%g4
xor %g3,%o7,%o7
srlx %o0,39,%g3
xor %g4,%o7,%o7
sllx %o0,36,%g4
xor %g3,%o7,%o7
xor %g4,%o7,%o7 ! Sigma0(a)
or %o0,%o1,%g3
and %o0,%o1,%g4
and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[8]
add %g4,%o7,%o7
add %g2,%o3,%o3
add %g2,%o7,%o7
sllx %l3,%i4,%g5 ! Xload(9)
add %i4,32,%g3
sllx %l2,%g3,%g4
ld [%i1+104],%l2
srlx %l4,%i5,%l3
or %g4,%g5,%g5
or %l3,%g5,%g5
ld [%i1+108],%l3
add %g1,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+72]
srlx %o3,14,%g1 !! 9
xor %o4,%o5,%g5
sllx %o3,23,%g4
and %o3,%g5,%g5
srlx %o3,18,%g3
xor %g4,%g1,%g1
sllx %o3,46,%g4
xor %g3,%g1,%g1
srlx %o3,41,%g3
xor %g4,%g1,%g1
sllx %o3,50,%g4
xor %g3,%g1,%g1
xor %o5,%g5,%g5 ! Ch(e,f,g)
xor %g4,%g1,%g3 ! Sigma1(e)
srlx %o7,28,%g1
add %g5,%g2,%g2
ldx [%i3+72],%g5 ! K[9]
sllx %o7,25,%g4
add %g3,%g2,%g2
srlx %o7,34,%g3
xor %g4,%g1,%g1
sllx %o7,30,%g4
xor %g3,%g1,%g1
srlx %o7,39,%g3
xor %g4,%g1,%g1
sllx %o7,36,%g4
xor %g3,%g1,%g1
xor %g4,%g1,%g1 ! Sigma0(a)
or %o7,%o0,%g3
and %o7,%o0,%g4
and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[9]
add %g4,%g1,%g1
add %g2,%o2,%o2
add %g2,%g1,%g1
sllx %l5,%i4,%g5 ! Xload(10)
add %i4,32,%g3
sllx %l4,%g3,%g4
ld [%i1+112],%l4
srlx %l6,%i5,%l5
or %g4,%g5,%g5
or %l5,%g5,%g5
ld [%i1+116],%l5
add %o5,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+80]
srlx %o2,14,%o5 !! 10
xor %o3,%o4,%g5
sllx %o2,23,%g4
and %o2,%g5,%g5
srlx %o2,18,%g3
xor %g4,%o5,%o5
sllx %o2,46,%g4
xor %g3,%o5,%o5
srlx %o2,41,%g3
xor %g4,%o5,%o5
sllx %o2,50,%g4
xor %g3,%o5,%o5
xor %o4,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o5,%g3 ! Sigma1(e)
srlx %g1,28,%o5
add %g5,%g2,%g2
ldx [%i3+80],%g5 ! K[10]
sllx %g1,25,%g4
add %g3,%g2,%g2
srlx %g1,34,%g3
xor %g4,%o5,%o5
sllx %g1,30,%g4
xor %g3,%o5,%o5
srlx %g1,39,%g3
xor %g4,%o5,%o5
sllx %g1,36,%g4
xor %g3,%o5,%o5
xor %g4,%o5,%o5 ! Sigma0(a)
or %g1,%o7,%g3
and %g1,%o7,%g4
and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[10]
add %g4,%o5,%o5
add %g2,%o1,%o1
add %g2,%o5,%o5
sllx %l7,%i4,%g5 ! Xload(11)
add %i4,32,%g3
sllx %l6,%g3,%g4
ld [%i1+120],%l6
srlx %l0,%i5,%l7
or %g4,%g5,%g5
or %l7,%g5,%g5
ld [%i1+124],%l7
add %o4,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+88]
srlx %o1,14,%o4 !! 11
xor %o2,%o3,%g5
sllx %o1,23,%g4
and %o1,%g5,%g5
srlx %o1,18,%g3
xor %g4,%o4,%o4
sllx %o1,46,%g4
xor %g3,%o4,%o4
srlx %o1,41,%g3
xor %g4,%o4,%o4
sllx %o1,50,%g4
xor %g3,%o4,%o4
xor %o3,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o4,%g3 ! Sigma1(e)
srlx %o5,28,%o4
add %g5,%g2,%g2
ldx [%i3+88],%g5 ! K[11]
sllx %o5,25,%g4
add %g3,%g2,%g2
srlx %o5,34,%g3
xor %g4,%o4,%o4
sllx %o5,30,%g4
xor %g3,%o4,%o4
srlx %o5,39,%g3
xor %g4,%o4,%o4
sllx %o5,36,%g4
xor %g3,%o4,%o4
xor %g4,%o4,%o4 ! Sigma0(a)
or %o5,%g1,%g3
and %o5,%g1,%g4
and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[11]
add %g4,%o4,%o4
add %g2,%o0,%o0
add %g2,%o4,%o4
sllx %l1,%i4,%g5 ! Xload(12)
add %i4,32,%g3
sllx %l0,%g3,%g4
srlx %l2,%i5,%l1
or %g4,%g5,%g5
or %l1,%g5,%g5
add %o3,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+96]
bnz,a,pn %icc,.+8
ld [%i1+128],%l0
srlx %o0,14,%o3 !! 12
xor %o1,%o2,%g5
sllx %o0,23,%g4
and %o0,%g5,%g5
srlx %o0,18,%g3
xor %g4,%o3,%o3
sllx %o0,46,%g4
xor %g3,%o3,%o3
srlx %o0,41,%g3
xor %g4,%o3,%o3
sllx %o0,50,%g4
xor %g3,%o3,%o3
xor %o2,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o3,%g3 ! Sigma1(e)
srlx %o4,28,%o3
add %g5,%g2,%g2
ldx [%i3+96],%g5 ! K[12]
sllx %o4,25,%g4
add %g3,%g2,%g2
srlx %o4,34,%g3
xor %g4,%o3,%o3
sllx %o4,30,%g4
xor %g3,%o3,%o3
srlx %o4,39,%g3
xor %g4,%o3,%o3
sllx %o4,36,%g4
xor %g3,%o3,%o3
xor %g4,%o3,%o3 ! Sigma0(a)
or %o4,%o5,%g3
and %o4,%o5,%g4
and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[12]
add %g4,%o3,%o3
add %g2,%o7,%o7
add %g2,%o3,%o3
sllx %l3,%i4,%g5 ! Xload(13)
add %i4,32,%g3
sllx %l2,%g3,%g4
srlx %l4,%i5,%l3
or %g4,%g5,%g5
or %l3,%g5,%g5
add %o2,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+104]
srlx %o7,14,%o2 !! 13
xor %o0,%o1,%g5
sllx %o7,23,%g4
and %o7,%g5,%g5
srlx %o7,18,%g3
xor %g4,%o2,%o2
sllx %o7,46,%g4
xor %g3,%o2,%o2
srlx %o7,41,%g3
xor %g4,%o2,%o2
sllx %o7,50,%g4
xor %g3,%o2,%o2
xor %o1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o2,%g3 ! Sigma1(e)
srlx %o3,28,%o2
add %g5,%g2,%g2
ldx [%i3+104],%g5 ! K[13]
sllx %o3,25,%g4
add %g3,%g2,%g2
srlx %o3,34,%g3
xor %g4,%o2,%o2
sllx %o3,30,%g4
xor %g3,%o2,%o2
srlx %o3,39,%g3
xor %g4,%o2,%o2
sllx %o3,36,%g4
xor %g3,%o2,%o2
xor %g4,%o2,%o2 ! Sigma0(a)
or %o3,%o4,%g3
and %o3,%o4,%g4
and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[13]
add %g4,%o2,%o2
add %g2,%g1,%g1
add %g2,%o2,%o2
sllx %l5,%i4,%g5 ! Xload(14)
add %i4,32,%g3
sllx %l4,%g3,%g4
srlx %l6,%i5,%l5
or %g4,%g5,%g5
or %l5,%g5,%g5
add %o1,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+112]
srlx %g1,14,%o1 !! 14
xor %o7,%o0,%g5
sllx %g1,23,%g4
and %g1,%g5,%g5
srlx %g1,18,%g3
xor %g4,%o1,%o1
sllx %g1,46,%g4
xor %g3,%o1,%o1
srlx %g1,41,%g3
xor %g4,%o1,%o1
sllx %g1,50,%g4
xor %g3,%o1,%o1
xor %o0,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o1,%g3 ! Sigma1(e)
srlx %o2,28,%o1
add %g5,%g2,%g2
ldx [%i3+112],%g5 ! K[14]
sllx %o2,25,%g4
add %g3,%g2,%g2
srlx %o2,34,%g3
xor %g4,%o1,%o1
sllx %o2,30,%g4
xor %g3,%o1,%o1
srlx %o2,39,%g3
xor %g4,%o1,%o1
sllx %o2,36,%g4
xor %g3,%o1,%o1
xor %g4,%o1,%o1 ! Sigma0(a)
or %o2,%o3,%g3
and %o2,%o3,%g4
and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[14]
add %g4,%o1,%o1
add %g2,%o5,%o5
add %g2,%o1,%o1
ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2
sllx %l7,%i4,%g5 ! Xload(15)
add %i4,32,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3
sllx %l6,%g3,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4
srlx %l0,%i5,%l7
or %g4,%g5,%g5
ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5
or %l7,%g5,%g5
ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6
add %o0,%g5,%g2
stx %g5,[%sp+STACK_BIAS+STACK_FRAME+120]
ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7
ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0
ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1
srlx %o5,14,%o0 !! 15
xor %g1,%o7,%g5
sllx %o5,23,%g4
and %o5,%g5,%g5
srlx %o5,18,%g3
xor %g4,%o0,%o0
sllx %o5,46,%g4
xor %g3,%o0,%o0
srlx %o5,41,%g3
xor %g4,%o0,%o0
sllx %o5,50,%g4
xor %g3,%o0,%o0
xor %o7,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o0,%g3 ! Sigma1(e)
srlx %o1,28,%o0
add %g5,%g2,%g2
ldx [%i3+120],%g5 ! K[15]
sllx %o1,25,%g4
add %g3,%g2,%g2
srlx %o1,34,%g3
xor %g4,%o0,%o0
sllx %o1,30,%g4
xor %g3,%o0,%o0
srlx %o1,39,%g3
xor %g4,%o0,%o0
sllx %o1,36,%g4
xor %g3,%o0,%o0
xor %g4,%o0,%o0 ! Sigma0(a)
or %o1,%o2,%g3
and %o1,%o2,%g4
and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[15]
add %g4,%o0,%o0
add %g2,%o4,%o4
add %g2,%o0,%o0
.L16_xx:
sllx %l2,32,%g3 !! Xupdate(16)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+16],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+20],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[16+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+120],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+124],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[16+14])
ld [%sp+STACK_BIAS+STACK_FRAME+80],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+84],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+8],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[16+9]
ld [%sp+STACK_BIAS+STACK_FRAME+12],%l1
add %g5,%g2,%g2 ! +=X[16]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+0]
add %o7,%g2,%g2
srlx %o4,14,%o7 !! 16
xor %o5,%g1,%g5
sllx %o4,23,%g4
and %o4,%g5,%g5
srlx %o4,18,%g3
xor %g4,%o7,%o7
sllx %o4,46,%g4
xor %g3,%o7,%o7
srlx %o4,41,%g3
xor %g4,%o7,%o7
sllx %o4,50,%g4
xor %g3,%o7,%o7
xor %g1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o7,%g3 ! Sigma1(e)
srlx %o0,28,%o7
add %g5,%g2,%g2
ldx [%i3+128],%g5 ! K[16]
sllx %o0,25,%g4
add %g3,%g2,%g2
srlx %o0,34,%g3
xor %g4,%o7,%o7
sllx %o0,30,%g4
xor %g3,%o7,%o7
srlx %o0,39,%g3
xor %g4,%o7,%o7
sllx %o0,36,%g4
xor %g3,%o7,%o7
xor %g4,%o7,%o7 ! Sigma0(a)
or %o0,%o1,%g3
and %o0,%o1,%g4
and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[16]
add %g4,%o7,%o7
add %g2,%o3,%o3
add %g2,%o7,%o7
sllx %l2,32,%g3 !! Xupdate(17)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+24],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+28],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[17+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+0],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+4],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[17+14])
ld [%sp+STACK_BIAS+STACK_FRAME+88],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+92],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+16],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[17+9]
ld [%sp+STACK_BIAS+STACK_FRAME+20],%l1
add %g5,%g2,%g2 ! +=X[17]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+8]
add %g1,%g2,%g2
srlx %o3,14,%g1 !! 17
xor %o4,%o5,%g5
sllx %o3,23,%g4
and %o3,%g5,%g5
srlx %o3,18,%g3
xor %g4,%g1,%g1
sllx %o3,46,%g4
xor %g3,%g1,%g1
srlx %o3,41,%g3
xor %g4,%g1,%g1
sllx %o3,50,%g4
xor %g3,%g1,%g1
xor %o5,%g5,%g5 ! Ch(e,f,g)
xor %g4,%g1,%g3 ! Sigma1(e)
srlx %o7,28,%g1
add %g5,%g2,%g2
ldx [%i3+136],%g5 ! K[17]
sllx %o7,25,%g4
add %g3,%g2,%g2
srlx %o7,34,%g3
xor %g4,%g1,%g1
sllx %o7,30,%g4
xor %g3,%g1,%g1
srlx %o7,39,%g3
xor %g4,%g1,%g1
sllx %o7,36,%g4
xor %g3,%g1,%g1
xor %g4,%g1,%g1 ! Sigma0(a)
or %o7,%o0,%g3
and %o7,%o0,%g4
and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[17]
add %g4,%g1,%g1
add %g2,%o2,%o2
add %g2,%g1,%g1
sllx %l2,32,%g3 !! Xupdate(18)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+32],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+36],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[18+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+8],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+12],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[18+14])
ld [%sp+STACK_BIAS+STACK_FRAME+96],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+100],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+24],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[18+9]
ld [%sp+STACK_BIAS+STACK_FRAME+28],%l1
add %g5,%g2,%g2 ! +=X[18]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+16]
add %o5,%g2,%g2
srlx %o2,14,%o5 !! 18
xor %o3,%o4,%g5
sllx %o2,23,%g4
and %o2,%g5,%g5
srlx %o2,18,%g3
xor %g4,%o5,%o5
sllx %o2,46,%g4
xor %g3,%o5,%o5
srlx %o2,41,%g3
xor %g4,%o5,%o5
sllx %o2,50,%g4
xor %g3,%o5,%o5
xor %o4,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o5,%g3 ! Sigma1(e)
srlx %g1,28,%o5
add %g5,%g2,%g2
ldx [%i3+144],%g5 ! K[18]
sllx %g1,25,%g4
add %g3,%g2,%g2
srlx %g1,34,%g3
xor %g4,%o5,%o5
sllx %g1,30,%g4
xor %g3,%o5,%o5
srlx %g1,39,%g3
xor %g4,%o5,%o5
sllx %g1,36,%g4
xor %g3,%o5,%o5
xor %g4,%o5,%o5 ! Sigma0(a)
or %g1,%o7,%g3
and %g1,%o7,%g4
and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[18]
add %g4,%o5,%o5
add %g2,%o1,%o1
add %g2,%o5,%o5
sllx %l2,32,%g3 !! Xupdate(19)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+40],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+44],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[19+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+16],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+20],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[19+14])
ld [%sp+STACK_BIAS+STACK_FRAME+104],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+108],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+32],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[19+9]
ld [%sp+STACK_BIAS+STACK_FRAME+36],%l1
add %g5,%g2,%g2 ! +=X[19]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+24]
add %o4,%g2,%g2
srlx %o1,14,%o4 !! 19
xor %o2,%o3,%g5
sllx %o1,23,%g4
and %o1,%g5,%g5
srlx %o1,18,%g3
xor %g4,%o4,%o4
sllx %o1,46,%g4
xor %g3,%o4,%o4
srlx %o1,41,%g3
xor %g4,%o4,%o4
sllx %o1,50,%g4
xor %g3,%o4,%o4
xor %o3,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o4,%g3 ! Sigma1(e)
srlx %o5,28,%o4
add %g5,%g2,%g2
ldx [%i3+152],%g5 ! K[19]
sllx %o5,25,%g4
add %g3,%g2,%g2
srlx %o5,34,%g3
xor %g4,%o4,%o4
sllx %o5,30,%g4
xor %g3,%o4,%o4
srlx %o5,39,%g3
xor %g4,%o4,%o4
sllx %o5,36,%g4
xor %g3,%o4,%o4
xor %g4,%o4,%o4 ! Sigma0(a)
or %o5,%g1,%g3
and %o5,%g1,%g4
and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[19]
add %g4,%o4,%o4
add %g2,%o0,%o0
add %g2,%o4,%o4
sllx %l2,32,%g3 !! Xupdate(20)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+48],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+52],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[20+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+24],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+28],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[20+14])
ld [%sp+STACK_BIAS+STACK_FRAME+112],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+116],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+40],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[20+9]
ld [%sp+STACK_BIAS+STACK_FRAME+44],%l1
add %g5,%g2,%g2 ! +=X[20]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+32]
add %o3,%g2,%g2
srlx %o0,14,%o3 !! 20
xor %o1,%o2,%g5
sllx %o0,23,%g4
and %o0,%g5,%g5
srlx %o0,18,%g3
xor %g4,%o3,%o3
sllx %o0,46,%g4
xor %g3,%o3,%o3
srlx %o0,41,%g3
xor %g4,%o3,%o3
sllx %o0,50,%g4
xor %g3,%o3,%o3
xor %o2,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o3,%g3 ! Sigma1(e)
srlx %o4,28,%o3
add %g5,%g2,%g2
ldx [%i3+160],%g5 ! K[20]
sllx %o4,25,%g4
add %g3,%g2,%g2
srlx %o4,34,%g3
xor %g4,%o3,%o3
sllx %o4,30,%g4
xor %g3,%o3,%o3
srlx %o4,39,%g3
xor %g4,%o3,%o3
sllx %o4,36,%g4
xor %g3,%o3,%o3
xor %g4,%o3,%o3 ! Sigma0(a)
or %o4,%o5,%g3
and %o4,%o5,%g4
and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[20]
add %g4,%o3,%o3
add %g2,%o7,%o7
add %g2,%o3,%o3
sllx %l2,32,%g3 !! Xupdate(21)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+56],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+60],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[21+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+32],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+36],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[21+14])
ld [%sp+STACK_BIAS+STACK_FRAME+120],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+124],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+48],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[21+9]
ld [%sp+STACK_BIAS+STACK_FRAME+52],%l1
add %g5,%g2,%g2 ! +=X[21]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+40]
add %o2,%g2,%g2
srlx %o7,14,%o2 !! 21
xor %o0,%o1,%g5
sllx %o7,23,%g4
and %o7,%g5,%g5
srlx %o7,18,%g3
xor %g4,%o2,%o2
sllx %o7,46,%g4
xor %g3,%o2,%o2
srlx %o7,41,%g3
xor %g4,%o2,%o2
sllx %o7,50,%g4
xor %g3,%o2,%o2
xor %o1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o2,%g3 ! Sigma1(e)
srlx %o3,28,%o2
add %g5,%g2,%g2
ldx [%i3+168],%g5 ! K[21]
sllx %o3,25,%g4
add %g3,%g2,%g2
srlx %o3,34,%g3
xor %g4,%o2,%o2
sllx %o3,30,%g4
xor %g3,%o2,%o2
srlx %o3,39,%g3
xor %g4,%o2,%o2
sllx %o3,36,%g4
xor %g3,%o2,%o2
xor %g4,%o2,%o2 ! Sigma0(a)
or %o3,%o4,%g3
and %o3,%o4,%g4
and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[21]
add %g4,%o2,%o2
add %g2,%g1,%g1
add %g2,%o2,%o2
sllx %l2,32,%g3 !! Xupdate(22)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+64],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+68],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[22+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+40],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+44],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[22+14])
ld [%sp+STACK_BIAS+STACK_FRAME+0],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+4],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+56],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[22+9]
ld [%sp+STACK_BIAS+STACK_FRAME+60],%l1
add %g5,%g2,%g2 ! +=X[22]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+48]
add %o1,%g2,%g2
srlx %g1,14,%o1 !! 22
xor %o7,%o0,%g5
sllx %g1,23,%g4
and %g1,%g5,%g5
srlx %g1,18,%g3
xor %g4,%o1,%o1
sllx %g1,46,%g4
xor %g3,%o1,%o1
srlx %g1,41,%g3
xor %g4,%o1,%o1
sllx %g1,50,%g4
xor %g3,%o1,%o1
xor %o0,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o1,%g3 ! Sigma1(e)
srlx %o2,28,%o1
add %g5,%g2,%g2
ldx [%i3+176],%g5 ! K[22]
sllx %o2,25,%g4
add %g3,%g2,%g2
srlx %o2,34,%g3
xor %g4,%o1,%o1
sllx %o2,30,%g4
xor %g3,%o1,%o1
srlx %o2,39,%g3
xor %g4,%o1,%o1
sllx %o2,36,%g4
xor %g3,%o1,%o1
xor %g4,%o1,%o1 ! Sigma0(a)
or %o2,%o3,%g3
and %o2,%o3,%g4
and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[22]
add %g4,%o1,%o1
add %g2,%o5,%o5
add %g2,%o1,%o1
sllx %l2,32,%g3 !! Xupdate(23)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+72],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+76],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[23+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+48],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+52],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[23+14])
ld [%sp+STACK_BIAS+STACK_FRAME+8],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+12],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+64],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[23+9]
ld [%sp+STACK_BIAS+STACK_FRAME+68],%l1
add %g5,%g2,%g2 ! +=X[23]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+56]
add %o0,%g2,%g2
srlx %o5,14,%o0 !! 23
xor %g1,%o7,%g5
sllx %o5,23,%g4
and %o5,%g5,%g5
srlx %o5,18,%g3
xor %g4,%o0,%o0
sllx %o5,46,%g4
xor %g3,%o0,%o0
srlx %o5,41,%g3
xor %g4,%o0,%o0
sllx %o5,50,%g4
xor %g3,%o0,%o0
xor %o7,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o0,%g3 ! Sigma1(e)
srlx %o1,28,%o0
add %g5,%g2,%g2
ldx [%i3+184],%g5 ! K[23]
sllx %o1,25,%g4
add %g3,%g2,%g2
srlx %o1,34,%g3
xor %g4,%o0,%o0
sllx %o1,30,%g4
xor %g3,%o0,%o0
srlx %o1,39,%g3
xor %g4,%o0,%o0
sllx %o1,36,%g4
xor %g3,%o0,%o0
xor %g4,%o0,%o0 ! Sigma0(a)
or %o1,%o2,%g3
and %o1,%o2,%g4
and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[23]
add %g4,%o0,%o0
add %g2,%o4,%o4
add %g2,%o0,%o0
sllx %l2,32,%g3 !! Xupdate(24)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+80],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+84],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[24+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+56],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+60],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[24+14])
ld [%sp+STACK_BIAS+STACK_FRAME+16],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+20],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+72],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[24+9]
ld [%sp+STACK_BIAS+STACK_FRAME+76],%l1
add %g5,%g2,%g2 ! +=X[24]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+64]
add %o7,%g2,%g2
srlx %o4,14,%o7 !! 24
xor %o5,%g1,%g5
sllx %o4,23,%g4
and %o4,%g5,%g5
srlx %o4,18,%g3
xor %g4,%o7,%o7
sllx %o4,46,%g4
xor %g3,%o7,%o7
srlx %o4,41,%g3
xor %g4,%o7,%o7
sllx %o4,50,%g4
xor %g3,%o7,%o7
xor %g1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o7,%g3 ! Sigma1(e)
srlx %o0,28,%o7
add %g5,%g2,%g2
ldx [%i3+192],%g5 ! K[24]
sllx %o0,25,%g4
add %g3,%g2,%g2
srlx %o0,34,%g3
xor %g4,%o7,%o7
sllx %o0,30,%g4
xor %g3,%o7,%o7
srlx %o0,39,%g3
xor %g4,%o7,%o7
sllx %o0,36,%g4
xor %g3,%o7,%o7
xor %g4,%o7,%o7 ! Sigma0(a)
or %o0,%o1,%g3
and %o0,%o1,%g4
and %o2,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[24]
add %g4,%o7,%o7
add %g2,%o3,%o3
add %g2,%o7,%o7
sllx %l2,32,%g3 !! Xupdate(25)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+88],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+92],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[25+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+64],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+68],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[25+14])
ld [%sp+STACK_BIAS+STACK_FRAME+24],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+28],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+80],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[25+9]
ld [%sp+STACK_BIAS+STACK_FRAME+84],%l1
add %g5,%g2,%g2 ! +=X[25]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+72]
add %g1,%g2,%g2
srlx %o3,14,%g1 !! 25
xor %o4,%o5,%g5
sllx %o3,23,%g4
and %o3,%g5,%g5
srlx %o3,18,%g3
xor %g4,%g1,%g1
sllx %o3,46,%g4
xor %g3,%g1,%g1
srlx %o3,41,%g3
xor %g4,%g1,%g1
sllx %o3,50,%g4
xor %g3,%g1,%g1
xor %o5,%g5,%g5 ! Ch(e,f,g)
xor %g4,%g1,%g3 ! Sigma1(e)
srlx %o7,28,%g1
add %g5,%g2,%g2
ldx [%i3+200],%g5 ! K[25]
sllx %o7,25,%g4
add %g3,%g2,%g2
srlx %o7,34,%g3
xor %g4,%g1,%g1
sllx %o7,30,%g4
xor %g3,%g1,%g1
srlx %o7,39,%g3
xor %g4,%g1,%g1
sllx %o7,36,%g4
xor %g3,%g1,%g1
xor %g4,%g1,%g1 ! Sigma0(a)
or %o7,%o0,%g3
and %o7,%o0,%g4
and %o1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[25]
add %g4,%g1,%g1
add %g2,%o2,%o2
add %g2,%g1,%g1
sllx %l2,32,%g3 !! Xupdate(26)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+96],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+100],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[26+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+72],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+76],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[26+14])
ld [%sp+STACK_BIAS+STACK_FRAME+32],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+36],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+88],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[26+9]
ld [%sp+STACK_BIAS+STACK_FRAME+92],%l1
add %g5,%g2,%g2 ! +=X[26]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+80]
add %o5,%g2,%g2
srlx %o2,14,%o5 !! 26
xor %o3,%o4,%g5
sllx %o2,23,%g4
and %o2,%g5,%g5
srlx %o2,18,%g3
xor %g4,%o5,%o5
sllx %o2,46,%g4
xor %g3,%o5,%o5
srlx %o2,41,%g3
xor %g4,%o5,%o5
sllx %o2,50,%g4
xor %g3,%o5,%o5
xor %o4,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o5,%g3 ! Sigma1(e)
srlx %g1,28,%o5
add %g5,%g2,%g2
ldx [%i3+208],%g5 ! K[26]
sllx %g1,25,%g4
add %g3,%g2,%g2
srlx %g1,34,%g3
xor %g4,%o5,%o5
sllx %g1,30,%g4
xor %g3,%o5,%o5
srlx %g1,39,%g3
xor %g4,%o5,%o5
sllx %g1,36,%g4
xor %g3,%o5,%o5
xor %g4,%o5,%o5 ! Sigma0(a)
or %g1,%o7,%g3
and %g1,%o7,%g4
and %o0,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[26]
add %g4,%o5,%o5
add %g2,%o1,%o1
add %g2,%o5,%o5
sllx %l2,32,%g3 !! Xupdate(27)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+104],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+108],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[27+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+80],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+84],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[27+14])
ld [%sp+STACK_BIAS+STACK_FRAME+40],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+44],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+96],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[27+9]
ld [%sp+STACK_BIAS+STACK_FRAME+100],%l1
add %g5,%g2,%g2 ! +=X[27]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+88]
add %o4,%g2,%g2
srlx %o1,14,%o4 !! 27
xor %o2,%o3,%g5
sllx %o1,23,%g4
and %o1,%g5,%g5
srlx %o1,18,%g3
xor %g4,%o4,%o4
sllx %o1,46,%g4
xor %g3,%o4,%o4
srlx %o1,41,%g3
xor %g4,%o4,%o4
sllx %o1,50,%g4
xor %g3,%o4,%o4
xor %o3,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o4,%g3 ! Sigma1(e)
srlx %o5,28,%o4
add %g5,%g2,%g2
ldx [%i3+216],%g5 ! K[27]
sllx %o5,25,%g4
add %g3,%g2,%g2
srlx %o5,34,%g3
xor %g4,%o4,%o4
sllx %o5,30,%g4
xor %g3,%o4,%o4
srlx %o5,39,%g3
xor %g4,%o4,%o4
sllx %o5,36,%g4
xor %g3,%o4,%o4
xor %g4,%o4,%o4 ! Sigma0(a)
or %o5,%g1,%g3
and %o5,%g1,%g4
and %o7,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[27]
add %g4,%o4,%o4
add %g2,%o0,%o0
add %g2,%o4,%o4
sllx %l2,32,%g3 !! Xupdate(28)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+112],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+116],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[28+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+88],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+92],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[28+14])
ld [%sp+STACK_BIAS+STACK_FRAME+48],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+52],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+104],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[28+9]
ld [%sp+STACK_BIAS+STACK_FRAME+108],%l1
add %g5,%g2,%g2 ! +=X[28]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+96]
add %o3,%g2,%g2
srlx %o0,14,%o3 !! 28
xor %o1,%o2,%g5
sllx %o0,23,%g4
and %o0,%g5,%g5
srlx %o0,18,%g3
xor %g4,%o3,%o3
sllx %o0,46,%g4
xor %g3,%o3,%o3
srlx %o0,41,%g3
xor %g4,%o3,%o3
sllx %o0,50,%g4
xor %g3,%o3,%o3
xor %o2,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o3,%g3 ! Sigma1(e)
srlx %o4,28,%o3
add %g5,%g2,%g2
ldx [%i3+224],%g5 ! K[28]
sllx %o4,25,%g4
add %g3,%g2,%g2
srlx %o4,34,%g3
xor %g4,%o3,%o3
sllx %o4,30,%g4
xor %g3,%o3,%o3
srlx %o4,39,%g3
xor %g4,%o3,%o3
sllx %o4,36,%g4
xor %g3,%o3,%o3
xor %g4,%o3,%o3 ! Sigma0(a)
or %o4,%o5,%g3
and %o4,%o5,%g4
and %g1,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[28]
add %g4,%o3,%o3
add %g2,%o7,%o7
add %g2,%o3,%o3
sllx %l2,32,%g3 !! Xupdate(29)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+120],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+124],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[29+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+96],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+100],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[29+14])
ld [%sp+STACK_BIAS+STACK_FRAME+56],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+60],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+112],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[29+9]
ld [%sp+STACK_BIAS+STACK_FRAME+116],%l1
add %g5,%g2,%g2 ! +=X[29]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+104]
add %o2,%g2,%g2
srlx %o7,14,%o2 !! 29
xor %o0,%o1,%g5
sllx %o7,23,%g4
and %o7,%g5,%g5
srlx %o7,18,%g3
xor %g4,%o2,%o2
sllx %o7,46,%g4
xor %g3,%o2,%o2
srlx %o7,41,%g3
xor %g4,%o2,%o2
sllx %o7,50,%g4
xor %g3,%o2,%o2
xor %o1,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o2,%g3 ! Sigma1(e)
srlx %o3,28,%o2
add %g5,%g2,%g2
ldx [%i3+232],%g5 ! K[29]
sllx %o3,25,%g4
add %g3,%g2,%g2
srlx %o3,34,%g3
xor %g4,%o2,%o2
sllx %o3,30,%g4
xor %g3,%o2,%o2
srlx %o3,39,%g3
xor %g4,%o2,%o2
sllx %o3,36,%g4
xor %g3,%o2,%o2
xor %g4,%o2,%o2 ! Sigma0(a)
or %o3,%o4,%g3
and %o3,%o4,%g4
and %o5,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[29]
add %g4,%o2,%o2
add %g2,%g1,%g1
add %g2,%o2,%o2
sllx %l2,32,%g3 !! Xupdate(30)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+0],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+4],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[30+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+104],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+108],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[30+14])
ld [%sp+STACK_BIAS+STACK_FRAME+64],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+68],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+120],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[30+9]
ld [%sp+STACK_BIAS+STACK_FRAME+124],%l1
add %g5,%g2,%g2 ! +=X[30]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+112]
add %o1,%g2,%g2
srlx %g1,14,%o1 !! 30
xor %o7,%o0,%g5
sllx %g1,23,%g4
and %g1,%g5,%g5
srlx %g1,18,%g3
xor %g4,%o1,%o1
sllx %g1,46,%g4
xor %g3,%o1,%o1
srlx %g1,41,%g3
xor %g4,%o1,%o1
sllx %g1,50,%g4
xor %g3,%o1,%o1
xor %o0,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o1,%g3 ! Sigma1(e)
srlx %o2,28,%o1
add %g5,%g2,%g2
ldx [%i3+240],%g5 ! K[30]
sllx %o2,25,%g4
add %g3,%g2,%g2
srlx %o2,34,%g3
xor %g4,%o1,%o1
sllx %o2,30,%g4
xor %g3,%o1,%o1
srlx %o2,39,%g3
xor %g4,%o1,%o1
sllx %o2,36,%g4
xor %g3,%o1,%o1
xor %g4,%o1,%o1 ! Sigma0(a)
or %o2,%o3,%g3
and %o2,%o3,%g4
and %o4,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[30]
add %g4,%o1,%o1
add %g2,%o5,%o5
add %g2,%o1,%o1
sllx %l2,32,%g3 !! Xupdate(31)
or %l3,%g3,%g3
srlx %g3,7,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+8],%l2
sllx %g3,56,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+12],%l3
srlx %g3,1,%g3
xor %g4,%g2,%g2
sllx %g4,7,%g4
xor %g3,%g2,%g2
srlx %g3,7,%g3
xor %g4,%g2,%g2
sllx %l6,32,%g5
xor %g3,%g2,%g2 ! sigma0(X[31+1])
or %l7,%g5,%g5
srlx %g5,6,%g4
ld [%sp+STACK_BIAS+STACK_FRAME+112],%l6
sllx %g5,3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+116],%l7
srlx %g5,19,%g5
xor %g3,%g4,%g4
sllx %g3,42,%g3
xor %g5,%g4,%g4
srlx %g5,42,%g5
xor %g3,%g4,%g4
sllx %l4,32,%g3
xor %g5,%g4,%g4 ! sigma1(X[31+14])
ld [%sp+STACK_BIAS+STACK_FRAME+72],%l4
or %l5,%g3,%g3
ld [%sp+STACK_BIAS+STACK_FRAME+76],%l5
sllx %l0,32,%g5
add %g4,%g2,%g2
ld [%sp+STACK_BIAS+STACK_FRAME+0],%l0
or %l1,%g5,%g5
add %g3,%g2,%g2 ! +=X[31+9]
ld [%sp+STACK_BIAS+STACK_FRAME+4],%l1
add %g5,%g2,%g2 ! +=X[31]
stx %g2,[%sp+STACK_BIAS+STACK_FRAME+120]
add %o0,%g2,%g2
srlx %o5,14,%o0 !! 31
xor %g1,%o7,%g5
sllx %o5,23,%g4
and %o5,%g5,%g5
srlx %o5,18,%g3
xor %g4,%o0,%o0
sllx %o5,46,%g4
xor %g3,%o0,%o0
srlx %o5,41,%g3
xor %g4,%o0,%o0
sllx %o5,50,%g4
xor %g3,%o0,%o0
xor %o7,%g5,%g5 ! Ch(e,f,g)
xor %g4,%o0,%g3 ! Sigma1(e)
srlx %o1,28,%o0
add %g5,%g2,%g2
ldx [%i3+248],%g5 ! K[31]
sllx %o1,25,%g4
add %g3,%g2,%g2
srlx %o1,34,%g3
xor %g4,%o0,%o0
sllx %o1,30,%g4
xor %g3,%o0,%o0
srlx %o1,39,%g3
xor %g4,%o0,%o0
sllx %o1,36,%g4
xor %g3,%o0,%o0
xor %g4,%o0,%o0 ! Sigma0(a)
or %o1,%o2,%g3
and %o1,%o2,%g4
and %o3,%g3,%g3
or %g3,%g4,%g4 ! Maj(a,b,c)
add %g5,%g2,%g2 ! +=K[31]
add %g4,%o0,%o0
add %g2,%o4,%o4
add %g2,%o0,%o0
and %g5,0xfff,%g5
cmp %g5,2071
bne .L16_xx
add %i3,128,%i3 ! Ktbl+=16
ld [%i0+0],%l0
ld [%i0+4],%l1
ld [%i0+8],%l2
ld [%i0+12],%l3
ld [%i0+16],%l4
ld [%i0+20],%l5
ld [%i0+24],%l6
sllx %l0,32,%g3
ld [%i0+28],%l7
sllx %l2,32,%g4
or %l1,%g3,%g3
or %l3,%g4,%g4
add %g3,%o0,%o0
add %g4,%o1,%o1
stx %o0,[%i0+0]
sllx %l4,32,%g5
stx %o1,[%i0+8]
sllx %l6,32,%g2
or %l5,%g5,%g5
or %l7,%g2,%g2
add %g5,%o2,%o2
stx %o2,[%i0+16]
add %g2,%o3,%o3
stx %o3,[%i0+24]
ld [%i0+32],%l0
ld [%i0+36],%l1
ld [%i0+40],%l2
ld [%i0+44],%l3
ld [%i0+48],%l4
ld [%i0+52],%l5
ld [%i0+56],%l6
sllx %l0,32,%g3
ld [%i0+60],%l7
sllx %l2,32,%g4
or %l1,%g3,%g3
or %l3,%g4,%g4
add %g3,%o4,%o4
add %g4,%o5,%o5
stx %o4,[%i0+32]
sllx %l4,32,%g5
stx %o5,[%i0+40]
sllx %l6,32,%g2
or %l5,%g5,%g5
or %l7,%g2,%g2
add %g5,%g1,%g1
stx %g1,[%i0+48]
add %g2,%o7,%o7
stx %o7,[%i0+56]
add %i1,128,%i1 ! advance inp
cmp %i1,%i2
bne SIZE_T_CC,.Lloop
sub %i3,512,%i3 ! rewind Ktbl
ret
restore
.type sha512_block_data_order,#function
.size sha512_block_data_order,(.-sha512_block_data_order)
.asciz "SHA512 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>"
.align 4