.globl .bn_sqr_comba4 .globl .bn_sqr_comba8 .globl .bn_mul_comba4 .globl .bn_mul_comba8 .globl .bn_sub_words .globl .bn_add_words .globl .bn_div_words .globl .bn_sqr_words .globl .bn_mul_words .globl .bn_mul_add_words .machine "any" .align 4 .bn_sqr_comba4: xor 0,0,0 lwz 5,0(4) mullw 9,5,5 mulhwu 10,5,5 stw 9,0(3) lwz 6,4(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 9,0 addc 10,7,10 addze 11,8 addze 9,9 stw 10,4(3) mullw 7,6,6 mulhwu 8,6,6 addc 11,7,11 adde 9,8,9 addze 10,0 lwz 6,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,8(3) lwz 6,12(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 11,0 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,4(4) lwz 6,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 stw 9,12(3) mullw 7,6,6 mulhwu 8,6,6 addc 10,7,10 adde 11,8,11 addze 9,0 lwz 6,12(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,16(3) lwz 5,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 7,7,7 adde 8,8,8 addze 10,0 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,20(3) mullw 7,6,6 mulhwu 8,6,6 addc 9,7,9 adde 10,8,10 stw 9,24(3) stw 10,28(3) blr .long 0 .byte 0,12,0x14,0,0,0,2,0 .long 0 .align 4 .bn_sqr_comba8: xor 0,0,0 lwz 5,0(4) mullw 9,5,5 mulhwu 10,5,5 stw 9,0(3) lwz 6,4(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,0 addze 9,0 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,4(3) mullw 7,6,6 mulhwu 8,6,6 addc 11,7,11 adde 9,8,9 addze 10,0 lwz 6,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,8(3) lwz 6,12(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,0 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,4(4) lwz 6,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 stw 9,12(3) mullw 7,6,6 mulhwu 8,6,6 addc 10,7,10 adde 11,8,11 addze 9,0 lwz 6,12(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 lwz 5,0(4) lwz 6,16(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,16(3) lwz 6,20(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,0 addc 11,7,11 adde 9,8,9 addze 10,10 lwz 5,4(4) lwz 6,16(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 lwz 5,8(4) lwz 6,12(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,20(3) mullw 7,6,6 mulhwu 8,6,6 addc 9,7,9 adde 10,8,10 addze 11,0 lwz 6,16(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,4(4) lwz 6,20(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,0(4) lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 stw 9,24(3) lwz 6,28(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,0 addc 10,7,10 adde 11,8,11 addze 9,9 lwz 5,4(4) lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 lwz 5,8(4) lwz 6,20(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 lwz 5,12(4) lwz 6,16(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,28(3) mullw 7,6,6 mulhwu 8,6,6 addc 11,7,11 adde 9,8,9 addze 10,0 lwz 6,20(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 lwz 5,8(4) lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 lwz 5,4(4) lwz 6,28(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,32(3) lwz 5,8(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,0 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,12(4) lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 lwz 5,16(4) lwz 6,20(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 stw 9,36(3) mullw 7,6,6 mulhwu 8,6,6 addc 10,7,10 adde 11,8,11 addze 9,0 lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 lwz 5,12(4) lwz 6,28(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,9 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,40(3) lwz 5,16(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,0 addc 11,7,11 adde 9,8,9 addze 10,10 lwz 5,20(4) lwz 6,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 11,7,11 adde 9,8,9 addze 10,10 addc 11,7,11 adde 9,8,9 addze 10,10 stw 11,44(3) mullw 7,6,6 mulhwu 8,6,6 addc 9,7,9 adde 10,8,10 addze 11,0 lwz 6,28(4) mullw 7,5,6 mulhwu 8,5,6 addc 9,7,9 adde 10,8,10 addze 11,11 addc 9,7,9 adde 10,8,10 addze 11,11 stw 9,48(3) lwz 5,24(4) mullw 7,5,6 mulhwu 8,5,6 addc 10,7,10 adde 11,8,11 addze 9,0 addc 10,7,10 adde 11,8,11 addze 9,9 stw 10,52(3) mullw 7,6,6 mulhwu 8,6,6 addc 11,7,11 adde 9,8,9 stw 11,56(3) stw 9, 60(3) blr .long 0 .byte 0,12,0x14,0,0,0,2,0 .long 0 .align 4 .bn_mul_comba4: xor 0,0,0 lwz 6,0(4) lwz 7,0(5) mullw 10,6,7 mulhwu 11,6,7 stw 10,0(3) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,8,11 adde 12,9,0 addze 10,0 lwz 6, 4(4) lwz 7, 0(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,8,11 adde 12,9,12 addze 10,10 stw 11,4(3) lwz 6,8(4) mullw 8,6,7 mulhwu 9,6,7 addc 12,8,12 adde 10,9,10 addze 11,0 lwz 6,4(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,8,12 adde 10,9,10 addze 11,11 lwz 6,0(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,8,12 adde 10,9,10 addze 11,11 stw 12,8(3) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,8,10 adde 11,9,11 addze 12,0 lwz 6,4(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,8,10 adde 11,9,11 addze 12,12 lwz 6,8(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,8,10 adde 11,9,11 addze 12,12 lwz 6,12(4) lwz 7,0(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,8,10 adde 11,9,11 addze 12,12 stw 10,12(3) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,8,11 adde 12,9,12 addze 10,0 lwz 6,8(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,8,11 adde 12,9,12 addze 10,10 lwz 6,4(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,8,11 adde 12,9,12 addze 10,10 stw 11,16(3) lwz 6,8(4) mullw 8,6,7 mulhwu 9,6,7 addc 12,8,12 adde 10,9,10 addze 11,0 lwz 6,12(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,8,12 adde 10,9,10 addze 11,11 stw 12,20(3) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,8,10 adde 11,9,11 stw 10,24(3) stw 11,28(3) blr .long 0 .byte 0,12,0x14,0,0,0,3,0 .long 0 .align 4 .bn_mul_comba8: xor 0,0,0 lwz 6,0(4) lwz 7,0(5) mullw 10,6,7 mulhwu 11,6,7 stw 10,0(3) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 addze 12,9 addze 10,0 lwz 6,4(4) lwz 7,0(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 stw 11,4(3) lwz 6,8(4) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,0 lwz 6,4(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,0(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 stw 12,8(3) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,0 lwz 6,4(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,8(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,12(4) lwz 7,0(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 stw 10,12(3) lwz 6,16(4) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,0 lwz 6,12(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,8(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,4(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,0(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 stw 11,16(3) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,0 lwz 6,4(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,8(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,12(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,16(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,20(4) lwz 7,0(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 stw 12,20(3) lwz 6,24(4) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,0 lwz 6,20(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,16(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,12(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,8(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,4(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,0(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 stw 10,24(3) lwz 7,28(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,0 lwz 6,4(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,8(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,12(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,16(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,20(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,24(4) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,28(4) lwz 7,0(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 stw 11,28(3) lwz 7,4(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,0 lwz 6,24(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,20(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,16(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,12(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,8(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,4(4) lwz 7,28(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 stw 12,32(3) lwz 6,8(4) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,0 lwz 6,12(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,16(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,20(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,24(4) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,28(4) lwz 7,8(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 stw 10,36(3) lwz 7,12(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,0 lwz 6,24(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,20(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,16(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 lwz 6,12(4) lwz 7,28(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 stw 11,40(3) lwz 6,16(4) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,0 lwz 6,20(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,24(4) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 lwz 6,28(4) lwz 7,16(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 addze 11,11 stw 12,44(3) lwz 7,20(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,0 lwz 6,24(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 lwz 6,20(4) lwz 7,28(5) mullw 8,6,7 mulhwu 9,6,7 addc 10,10,8 adde 11,11,9 addze 12,12 stw 10,48(3) lwz 6,24(4) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,0 lwz 6,28(4) lwz 7,24(5) mullw 8,6,7 mulhwu 9,6,7 addc 11,11,8 adde 12,12,9 addze 10,10 stw 11,52(3) lwz 7,28(5) mullw 8,6,7 mulhwu 9,6,7 addc 12,12,8 adde 10,10,9 stw 12,56(3) stw 10,60(3) blr .long 0 .byte 0,12,0x14,0,0,0,3,0 .long 0 .align 4 .bn_sub_words: xor 0,0,0 subfc. 7,0,6 beq Lppcasm_sub_adios addi 4,4,-4 addi 3,3,-4 addi 5,5,-4 mtctr 6 Lppcasm_sub_mainloop: lwzu 7,4(4) lwzu 8,4(5) subfe 6,8,7 stwu 6,4(3) bc 16,0,Lppcasm_sub_mainloop Lppcasm_sub_adios: subfze 3,0 andi. 3,3,1 blr .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 .align 4 .bn_add_words: xor 0,0,0 addic. 6,6,0 beq Lppcasm_add_adios addi 4,4,-4 addi 3,3,-4 addi 5,5,-4 mtctr 6 Lppcasm_add_mainloop: lwzu 7,4(4) lwzu 8,4(5) adde 8,7,8 stwu 8,4(3) bc 16,0,Lppcasm_add_mainloop Lppcasm_add_adios: addze 3,0 blr .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 .align 4 .bn_div_words: cmplwi 0,5,0 bne Lppcasm_div1 li 3,-1 blr Lppcasm_div1: xor 0,0,0 li 8,32 cntlzw. 7,5 beq Lppcasm_div2 subf 8,7,8 srw. 9,3,8 tw 16,9,0 Lppcasm_div2: cmplw 0,3,5 blt Lppcasm_div3 subf 3,5,3 Lppcasm_div3: cmpi 0,0,7,0 beq Lppcasm_div4 slw 3,3,7 srw 8,4,8 slw 5,5,7 or 3,3,8 slw 4,4,7 Lppcasm_div4: srwi 9,5,16 li 6,2 mtctr 6 Lppcasm_divouterloop: srwi 8,3,16 srwi 11,4,16 cmplw 0,8,9 bne Lppcasm_div5 li 8,-1 clrlwi 8,8,16 b Lppcasm_div6 Lppcasm_div5: divwu 8,3,9 Lppcasm_div6: mullw 12,9,8 clrlwi 10,5,16 mullw 6,8,10 Lppcasm_divinnerloop: subf 10,12,3 srwi 7,10,16 addic. 7,7,0 slwi 7,10,16 or 7,7,11 cmplw 1,6,7 bne Lppcasm_divinnerexit ble 1,Lppcasm_divinnerexit addi 8,8,-1 subf 12,9,12 clrlwi 10,5,16 subf 6,10,6 b Lppcasm_divinnerloop Lppcasm_divinnerexit: srwi 10,6,16 slwi 11,6,16 cmplw 1,4,11 add 12,12,10 bge 1,Lppcasm_div7 addi 12,12,1 Lppcasm_div7: subf 11,11,4 cmplw 1,3,12 bge 1,Lppcasm_div8 addi 8,8,-1 add 3,5,3 Lppcasm_div8: subf 12,12,3 slwi 4,11,16 insrwi 11,12,16,16 rotlwi 3,11,16 bdz Lppcasm_div9 slwi 0,8,16 b Lppcasm_divouterloop Lppcasm_div9: or 3,8,0 blr .long 0 .byte 0,12,0x14,0,0,0,3,0 .long 0 .align 4 .bn_sqr_words: addic. 5,5,0 beq Lppcasm_sqr_adios addi 4,4,-4 addi 3,3,-4 mtctr 5 Lppcasm_sqr_mainloop: lwzu 6,4(4) mullw 7,6,6 mulhwu 8,6,6 stwu 7,4(3) stwu 8,4(3) bc 16,0,Lppcasm_sqr_mainloop Lppcasm_sqr_adios: blr .long 0 .byte 0,12,0x14,0,0,0,3,0 .long 0 .align 4 .bn_mul_words: xor 0,0,0 xor 12,12,12 rlwinm. 7,5,30,2,31 beq Lppcasm_mw_REM mtctr 7 Lppcasm_mw_LOOP: lwz 8,0(4) mullw 9,6,8 mulhwu 10,6,8 addc 9,9,12 stw 9,0(3) lwz 8,4(4) mullw 11,6,8 mulhwu 12,6,8 adde 11,11,10 stw 11,4(3) lwz 8,8(4) mullw 9,6,8 mulhwu 10,6,8 adde 9,9,12 stw 9,8(3) lwz 8,12(4) mullw 11,6,8 mulhwu 12,6,8 adde 11,11,10 addze 12,12 stw 11,12(3) addi 3,3,16 addi 4,4,16 bc 16,0,Lppcasm_mw_LOOP Lppcasm_mw_REM: andi. 5,5,0x3 beq Lppcasm_mw_OVER lwz 8,0(4) mullw 9,6,8 mulhwu 10,6,8 addc 9,9,12 addze 10,10 stw 9,0(3) addi 12,10,0 addi 5,5,-1 cmpli 0,0,5,0 beq Lppcasm_mw_OVER lwz 8,4(4) mullw 9,6,8 mulhwu 10,6,8 addc 9,9,12 addze 10,10 stw 9,4(3) addi 12,10,0 addi 5,5,-1 cmpli 0,0,5,0 beq Lppcasm_mw_OVER lwz 8,8(4) mullw 9,6,8 mulhwu 10,6,8 addc 9,9,12 addze 10,10 stw 9,8(3) addi 12,10,0 Lppcasm_mw_OVER: addi 3,12,0 blr .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 .align 4 .bn_mul_add_words: xor 0,0,0 xor 12,12,12 rlwinm. 7,5,30,2,31 beq Lppcasm_maw_leftover mtctr 7 Lppcasm_maw_mainloop: lwz 8,0(4) lwz 11,0(3) mullw 9,6,8 mulhwu 10,6,8 addc 9,9,12 addze 10,10 addc 9,9,11 stw 9,0(3) lwz 8,4(4) lwz 9,4(3) mullw 11,6,8 mulhwu 12,6,8 adde 11,11,10 addze 12,12 addc 11,11,9 stw 11,4(3) lwz 8,8(4) mullw 9,6,8 lwz 11,8(3) mulhwu 10,6,8 adde 9,9,12 addze 10,10 addc 9,9,11 stw 9,8(3) lwz 8,12(4) mullw 11,6,8 lwz 9,12(3) mulhwu 12,6,8 adde 11,11,10 addze 12,12 addc 11,11,9 addze 12,12 stw 11,12(3) addi 3,3,16 addi 4,4,16 bc 16,0,Lppcasm_maw_mainloop Lppcasm_maw_leftover: andi. 5,5,0x3 beq Lppcasm_maw_adios addi 3,3,-4 addi 4,4,-4 mtctr 5 lwzu 8,4(4) mullw 9,6,8 mulhwu 10,6,8 lwzu 11,4(3) addc 9,9,11 addze 10,10 addc 9,9,12 addze 12,10 stw 9,0(3) bdz Lppcasm_maw_adios lwzu 8,4(4) mullw 9,6,8 mulhwu 10,6,8 lwzu 11,4(3) addc 9,9,11 addze 10,10 addc 9,9,12 addze 12,10 stw 9,0(3) bdz Lppcasm_maw_adios lwzu 8,4(4) mullw 9,6,8 mulhwu 10,6,8 lwzu 11,4(3) addc 9,9,11 addze 10,10 addc 9,9,12 addze 12,10 stw 9,0(3) Lppcasm_maw_adios: addi 3,12,0 blr .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 .align 4