.globl des_t4_cbc_encrypt
.align 32
des_t4_cbc_encrypt:
+ cmp $len, 0
+ be,pn $::size_t_cc, .Lcbc_abort
+ nop
ld [$ivec + 0], %f0 ! load ivec
ld [$ivec + 4], %f1
st %f0, [$ivec + 0] ! write out ivec
retl
st %f1, [$ivec + 4]
+.Lcbc_abort:
+ retl
+ nop
.align 16
2: ldxa [$inp]0x82, %g4 ! avoid read-after-write hazard
.globl des_t4_cbc_decrypt
.align 32
des_t4_cbc_decrypt:
+ cmp $len, 0
+ be,pn $::size_t_cc, .Lcbc_abort
+ nop
ld [$ivec + 0], %f2 ! load ivec
ld [$ivec + 4], %f3
.globl des_t4_ede3_cbc_encrypt
.align 32
des_t4_ede3_cbc_encrypt:
+ cmp $len, 0
+ be,pn $::size_t_cc, .Lcbc_abort
+ nop
ld [$ivec + 0], %f0 ! load ivec
ld [$ivec + 4], %f1
.globl des_t4_ede3_cbc_decrypt
.align 32
des_t4_ede3_cbc_decrypt:
+ cmp $len, 0
+ be,pn $::size_t_cc, .Lcbc_abort
+ nop
ld [$ivec + 0], %f2 ! load ivec
ld [$ivec + 4], %f3
.align 32
${alg}${bits}_t4_cbc_encrypt:
save %sp, -$::frame, %sp
+ cmp $len, 0
+ be,pn $::size_t_cc, .L${bits}_cbc_enc_abort
sub $inp, $out, $blk_init ! $inp!=$out
___
$::code.=<<___ if (!$::evp);
std %f2, [$ivec + 8]
___
$::code.=<<___;
+.L${bits}_cbc_enc_abort:
ret
restore
.align 32
${alg}${bits}_t4_cbc_decrypt:
save %sp, -$::frame, %sp
+ cmp $len, 0
+ be,pn $::size_t_cc, .L${bits}_cbc_dec_abort
sub $inp, $out, $blk_init ! $inp!=$out
___
$::code.=<<___ if (!$::evp);
std %f14, [$ivec + 8]
___
$::code.=<<___;
+.L${bits}_cbc_dec_abort:
ret
restore