F_TEXT ENDS
_DATA SEGMENT WORD USE16 PUBLIC 'DATA'
_DATA ENDS
-CONST SEGMENT WORD USE16 PUBLIC 'CONST'
-CONST ENDS
+_CONST SEGMENT WORD USE16 PUBLIC 'CONST'
+_CONST ENDS
_BSS SEGMENT WORD USE16 PUBLIC 'BSS'
_BSS ENDS
-DGROUP GROUP CONST, _BSS, _DATA
+DGROUP GROUP _CONST, _BSS, _DATA
ASSUME DS: DGROUP, SS: DGROUP
F_TEXT SEGMENT
ASSUME CS: F_TEXT
- PUBLIC _bn_mul_add_word
-_bn_mul_add_word PROC FAR
+ PUBLIC _bn_mul_add_words
+_bn_mul_add_words PROC FAR
; Line 58
push bp
push bx
mov bp,WORD PTR [bp+26] ; load num
and bp,3
dec bp
- js $L547
+ js $L547m
mov eax,ecx
mul DWORD PTR es:[bx] ; w* *a
mov DWORD PTR ds:[di],eax
mov esi,edx
dec bp
- js $L547 ; Note that we are now testing for -1
+ js $L547m ; Note that we are now testing for -1
;
mov eax,ecx
mul DWORD PTR es:[bx+4] ; w* *a
mov DWORD PTR ds:[di+4],eax
mov esi,edx
dec bp
- js $L547
+ js $L547m
;
mov eax,ecx
mul DWORD PTR es:[bx+8] ; w* *a
adc edx,0
mov DWORD PTR ds:[di+8],eax
mov esi,edx
-$L547:
+$L547m:
mov eax,esi
mov edx,esi
shr edx,16
pop bp
ret
nop
+_bn_mul_add_words ENDP
-_bn_mul_add_word ENDP
- PUBLIC _bn_mul_word
-_bn_mul_word PROC FAR
+ PUBLIC _bn_mul_words
+_bn_mul_words PROC FAR
; Line 76
push bp
push bx
pop bp
ret
nop
-_bn_mul_word ENDP
+_bn_mul_words ENDP
PUBLIC _bn_sqr_words
_bn_sqr_words PROC FAR
; Line 92
pop bx
pop bp
ret
-
_bn_sqr_words ENDP
+
PUBLIC _bn_div64
_bn_div64 PROC FAR
push bp
pop bp
ret
_bn_div64 ENDP
+
+ PUBLIC _bn_add_words
+_bn_add_words PROC FAR
+; Line 58
+ push bp
+ push bx
+ push esi
+ push di
+ push ds
+ push es
+ mov bp,sp
+; w = 28
+; num = 26
+; ap = 22
+; rp = 18
+ xor esi,esi ;c=0;
+ mov bx,WORD PTR [bp+18] ; load low r
+ mov si,WORD PTR [bp+22] ; load a
+ mov es,WORD PTR [bp+24] ; load a
+ mov di,WORD PTR [bp+26] ; load b
+ mov ds,WORD PTR [bp+28] ; load b
+
+ mov dx,WORD PTR [bp+30] ; load num
+ xor ecx,ecx
+ dec dx
+ js $L547a
+
+$L5477:
+ mov eax,DWORD PTR es:[si] ; *a
+ add eax,ecx
+ mov ecx,0
+ adc ecx,0
+ add si,4 ; a++
+ add eax,DWORD PTR ds:[di] ; + *b
+ adc ecx,0
+ mov ds,WORD PTR [bp+20]
+ add di,4
+ mov DWORD PTR ds:[bx],eax
+ mov ds,WORD PTR [bp+28]
+ add bx,4
+ dec dx
+ js $L547a ; Note that we are now testing for -1
+ jmp $L5477
+ ;
+$L547a:
+ mov eax,ecx
+ mov edx,ecx
+ shr edx,16
+ pop es
+ pop ds
+ pop di
+ pop esi
+ pop bx
+ pop bp
+ ret
+ nop
+_bn_add_words ENDP
F_TEXT ENDS
END