Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- COMMENT *
- proc ModularMul, number1, number2, result, numberLen, modulus
- push eax edi ecx
- pushf
- mov ecx, [numberLen]
- mov edi, [number1]
- add edi, [numberLen]
- dec edi
- .loop:
- cmp ecx, 0
- je .exit_loop
- xor ax, ax
- mov al, [edi]
- push ecx
- mov ecx, 8d
- .loopa:
- stdcall ShiftLeft, [result], [numberLen]
- push eax
- stdcall Less, [result], [modulus], [numberLen]
- cmp eax, 0
- jne .less
- stdcall TrueSub, [result], [modulus], [result], [numberLen]
- .less:
- pop eax
- mov bx, 1
- shl bx, cl
- shr bx, 1
- test ax, bx
- jz .endif
- stdcall Sum, [result], [number2], [result], [numberLen]
- .endif:
- stdcall Less, [result], [modulus], [numberLen]
- cmp eax, 0
- jne .less2
- stdcall TrueSub, [result], [modulus], [result], [numberLen]
- .less2:
- loop .loopa
- pop ecx
- dec edi
- dec ecx
- jmp .loop
- .exit_loop:
- popf
- pop ecx edi eax
- ret
- endp
- *
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement