1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
.text
.align 16, 0x90
.globl __gmpn_bdiv_dbm1c
.def __gmpn_bdiv_dbm1c
.scl 2
.type 32
.endef
__gmpn_bdiv_dbm1c:
push %rdi
push %rsi
mov %rcx, %rdi
mov %rdx, %rsi
mov %r8, %rdx
mov %r9, %rcx
mov 56(%rsp), %r8
mov (%rsi), %rax
mov %rdx, %r9
mov %edx, %r11d
mul %rcx
lea (%rsi,%r9,8), %rsi
lea (%rdi,%r9,8), %rdi
neg %r9
and $3, %r11d
jz Llo0
lea -4(%r9,%r11), %r9
cmp $2, %r11d
jc Llo1
jz Llo2
jmp Llo3
.align 16, 0x90
Ltop: mov (%rsi,%r9,8), %rax
mul %rcx
Llo0: sub %rax, %r8
mov %r8, (%rdi,%r9,8)
sbb %rdx, %r8
mov 8(%rsi,%r9,8), %rax
mul %rcx
Llo3: sub %rax, %r8
mov %r8, 8(%rdi,%r9,8)
sbb %rdx, %r8
mov 16(%rsi,%r9,8), %rax
mul %rcx
Llo2: sub %rax, %r8
mov %r8, 16(%rdi,%r9,8)
sbb %rdx, %r8
mov 24(%rsi,%r9,8), %rax
mul %rcx
Llo1: sub %rax, %r8
mov %r8, 24(%rdi,%r9,8)
sbb %rdx, %r8
add $4, %r9
jnz Ltop
mov %r8, %rax
pop %rsi
pop %rdi
ret
|