clarify the purpose of this project
[nyanglibc.git] / stdlib / strtoul_l.s
blobca13eeedf151c29615c8631b6bc9fa6419ad574d
1 .text
2 .p2align 4,,15
3 .globl ____strtoul_l_internal
4 .hidden ____strtoul_l_internal
5 .type ____strtoul_l_internal, @function
6 ____strtoul_l_internal:
7 pushq %r15
8 pushq %r14
9 xorl %r15d, %r15d
10 pushq %r13
11 pushq %r12
12 xorl %r14d, %r14d
13 pushq %rbp
14 pushq %rbx
15 movq %rdi, %r12
16 movq %rsi, %r13
17 subq $24, %rsp
18 testl %ecx, %ecx
19 jne .L92
20 .L2:
21 cmpl $1, %edx
22 je .L3
23 cmpl $36, %edx
24 jbe .L93
25 .L3:
26 movq __libc_errno@gottpoff(%rip), %rax
27 movl $22, %fs:(%rax)
28 xorl %eax, %eax
29 .L1:
30 addq $24, %rsp
31 popq %rbx
32 popq %rbp
33 popq %r12
34 popq %r13
35 popq %r14
36 popq %r15
37 ret
38 .p2align 4,,10
39 .p2align 3
40 .L93:
41 movsbq (%r12), %rcx
42 movq 104(%r8), %rsi
43 movq %r12, %rbx
44 testb $32, 1(%rsi,%rcx,2)
45 movq %rcx, %rax
46 je .L5
47 .p2align 4,,10
48 .p2align 3
49 .L4:
50 addq $1, %rbx
51 movsbq (%rbx), %rcx
52 testb $32, 1(%rsi,%rcx,2)
53 movq %rcx, %rax
54 jne .L4
55 .L5:
56 testb %al, %al
57 je .L44
58 cmpb $45, %al
59 je .L94
60 cmpb $43, %al
61 movl $0, 4(%rsp)
62 sete %al
63 movzbl %al, %eax
64 addq %rax, %rbx
65 .L9:
66 movzbl (%rbx), %esi
67 cmpb $48, %sil
68 je .L95
69 testl %edx, %edx
70 je .L15
71 .L11:
72 cmpl $10, %edx
73 je .L15
74 leal -2(%rdx), %eax
75 xorl %ebp, %ebp
76 xorl %r15d, %r15d
77 .L13:
78 leaq __strtol_ul_rem_tab(%rip), %rdi
79 leaq __strtol_ul_max_tab(%rip), %rcx
80 cltq
81 cmpq %rbx, %r15
82 movq (%rcx,%rax,8), %rcx
83 movzbl (%rdi,%rax), %eax
84 movzbl %sil, %edi
85 movb %al, 2(%rsp)
86 je .L49
87 testb %dil, %dil
88 je .L49
89 movq 120+_nl_C_locobj(%rip), %r10
90 .L39:
91 leaq -1(%rbp), %rsi
92 movq %rbx, %r8
93 xorl %eax, %eax
94 xorl %r9d, %r9d
95 movslq %edx, %r11
96 movq %rsi, 8(%rsp)
97 jmp .L34
98 .p2align 4,,10
99 .p2align 3
100 .L97:
101 jne .L33
102 cmpb 2(%rsp), %sil
103 ja .L51
104 .L33:
105 imulq %r11, %rax
106 movzbl %sil, %esi
107 addq %rsi, %rax
108 movq %r8, %rsi
109 .L30:
110 movzbl 1(%rsi), %edi
111 leaq 1(%rsi), %r8
112 testb %dil, %dil
113 je .L31
114 cmpq %r15, %r8
115 je .L31
116 .L34:
117 leal -48(%rdi), %esi
118 cmpb $9, %sil
119 jbe .L24
120 testq %rbp, %rbp
121 jne .L96
122 .L25:
123 movq 104+_nl_C_locobj(%rip), %rsi
124 testb $4, 1(%rsi,%rdi,2)
125 je .L31
126 movl (%r10,%rdi,4), %esi
127 subl $55, %esi
128 .L24:
129 movzbl %sil, %edi
130 cmpl %edx, %edi
131 jge .L31
132 cmpq %rcx, %rax
133 jbe .L97
134 .L51:
135 movq %r8, %rsi
136 movl $1, %r9d
137 jmp .L30
138 .p2align 4,,10
139 .p2align 3
140 .L94:
141 addq $1, %rbx
142 movl $1, 4(%rsp)
143 jmp .L9
144 .p2align 4,,10
145 .p2align 3
146 .L96:
147 xorl %esi, %esi
148 movb %dil, 3(%rsp)
149 .p2align 4,,10
150 .p2align 3
151 .L27:
152 movzbl (%r8,%rsi), %edi
153 cmpb %dil, (%r14,%rsi)
154 jne .L26
155 addq $1, %rsi
156 cmpq %rbp, %rsi
157 jne .L27
158 .L28:
159 movq 8(%rsp), %rdi
160 leaq (%r8,%rdi), %rsi
161 jmp .L30
162 .p2align 4,,10
163 .p2align 3
164 .L31:
165 cmpq %rbx, %r8
166 je .L7
167 testq %r13, %r13
168 je .L36
169 movq %r8, 0(%r13)
170 .L36:
171 testl %r9d, %r9d
172 jne .L98
173 movl 4(%rsp), %ecx
174 movq %rax, %rdx
175 negq %rdx
176 testl %ecx, %ecx
177 cmovne %rdx, %rax
178 addq $24, %rsp
179 popq %rbx
180 popq %rbp
181 popq %r12
182 popq %r13
183 popq %r14
184 popq %r15
186 .p2align 4,,10
187 .p2align 3
188 .L26:
189 cmpq %rbp, %rsi
190 movzbl 3(%rsp), %edi
191 jne .L25
192 jmp .L28
193 .p2align 4,,10
194 .p2align 3
195 .L15:
196 testq %r15, %r15
197 jne .L99
198 movl $8, %eax
199 movl $10, %edx
200 xorl %ebp, %ebp
201 jmp .L13
202 .p2align 4,,10
203 .p2align 3
204 .L44:
205 movq %r12, %r8
206 .L7:
207 xorl %eax, %eax
208 testq %r13, %r13
209 je .L1
210 movq %r8, %rdx
211 subq %r12, %rdx
212 cmpq $1, %rdx
213 jle .L38
214 movsbq -1(%r8), %rcx
215 movq 120+_nl_C_locobj(%rip), %rdx
216 cmpl $88, (%rdx,%rcx,4)
217 je .L100
218 .L38:
219 movq %r12, 0(%r13)
220 xorl %eax, %eax
221 jmp .L1
222 .p2align 4,,10
223 .p2align 3
224 .L92:
225 movq 8(%r8), %rcx
226 movq 80(%rcx), %r15
227 movzbl (%r15), %eax
228 subl $1, %eax
229 cmpb $125, %al
230 ja .L41
231 movq 72(%rcx), %r14
232 cmpb $0, (%r14)
233 jne .L2
234 xorl %r15d, %r15d
235 xorl %r14d, %r14d
236 jmp .L2
237 .p2align 4,,10
238 .p2align 3
239 .L95:
240 testl $-17, %edx
241 jne .L11
242 movsbq 1(%rbx), %rax
243 movq 120+_nl_C_locobj(%rip), %r10
244 cmpl $88, (%r10,%rax,4)
245 je .L101
246 testl %edx, %edx
247 jne .L11
248 movzbl 6+__strtol_ul_rem_tab(%rip), %eax
249 movq 48+__strtol_ul_max_tab(%rip), %rcx
250 movl $8, %edx
251 xorl %r15d, %r15d
252 xorl %ebp, %ebp
253 movl $48, %edi
254 movb %al, 2(%rsp)
255 jmp .L39
256 .p2align 4,,10
257 .p2align 3
258 .L41:
259 xorl %r15d, %r15d
260 jmp .L2
261 .L100:
262 cmpb $48, -2(%r8)
263 jne .L38
264 subq $1, %r8
265 movq %r8, 0(%r13)
266 jmp .L1
267 .p2align 4,,10
268 .p2align 3
269 .L99:
270 movq %r14, %rdi
271 movb %sil, 2(%rsp)
272 call strlen
273 testq %rax, %rax
274 movq %rax, %rbp
275 je .L49
276 movzbl (%r14), %r8d
277 movzbl 2(%rsp), %esi
278 cmpb %sil, %r8b
279 jne .L16
280 xorl %edx, %edx
281 jmp .L17
282 .p2align 4,,10
283 .p2align 3
284 .L18:
285 movzbl (%rbx,%rdx), %ecx
286 cmpb %cl, (%r14,%rdx)
287 jne .L16
288 .L17:
289 addq $1, %rdx
290 cmpq %rdx, %rax
291 jne .L18
292 .L49:
293 movq %rbx, %r8
294 jmp .L7
295 .L98:
296 movq __libc_errno@gottpoff(%rip), %rax
297 movl $34, %fs:(%rax)
298 movq $-1, %rax
299 jmp .L1
300 .L101:
301 movzbl 2(%rbx), %esi
302 movl $14, %eax
303 addq $2, %rbx
304 movl $16, %edx
305 xorl %ebp, %ebp
306 xorl %r15d, %r15d
307 jmp .L13
308 .L16:
309 movzbl %sil, %edi
310 testb %dil, %dil
311 je .L48
312 movq 104+_nl_C_locobj(%rip), %r9
313 movq 120+_nl_C_locobj(%rip), %r10
314 movq %rbx, %rsi
315 jmp .L23
316 .p2align 4,,10
317 .p2align 3
318 .L20:
319 addq $1, %rsi
320 movzbl (%rsi), %edi
321 testb %dil, %dil
322 je .L19
323 .L23:
324 leal -48(%rdi), %edx
325 cmpb $9, %dl
326 jbe .L20
327 movl %r8d, %ecx
328 xorl %edx, %edx
329 jmp .L22
330 .p2align 4,,10
331 .p2align 3
332 .L102:
333 addq $1, %rdx
334 cmpq %rdx, %rax
335 je .L20
336 movzbl (%r14,%rdx), %ecx
337 .L22:
338 cmpb %cl, (%rsi,%rdx)
339 je .L102
340 cmpq %rdx, %rax
341 jbe .L20
342 testb $4, 1(%r9,%rdi,2)
343 je .L19
344 cmpl $64, (%r10,%rdi,4)
345 jle .L20
346 .L19:
347 movq %r15, %rcx
348 movq %r14, %rdx
349 movq %rbx, %rdi
350 call __correctly_grouped_prefixmb
351 movzbl (%rbx), %esi
352 movq %rax, %r15
353 movl $10, %edx
354 movl $8, %eax
355 jmp .L13
356 .L48:
357 movq %rbx, %rsi
358 jmp .L19
359 .size ____strtoul_l_internal, .-____strtoul_l_internal
360 .globl ____strtoull_l_internal
361 .set ____strtoull_l_internal,____strtoul_l_internal
362 .p2align 4,,15
363 .weak __strtoul_l
364 .hidden __strtoul_l
365 .type __strtoul_l, @function
366 __strtoul_l:
367 movq %rcx, %r8
368 xorl %ecx, %ecx
369 jmp ____strtoul_l_internal
370 .size __strtoul_l, .-__strtoul_l
371 .weak strtoull_l
372 .set strtoull_l,__strtoul_l
373 .weak __strtoull_l
374 .set __strtoull_l,__strtoul_l
375 .weak strtoul_l
376 .set strtoul_l,__strtoul_l
377 .hidden __correctly_grouped_prefixmb
378 .hidden strlen
379 .hidden _nl_C_locobj
380 .hidden __strtol_ul_max_tab
381 .hidden __strtol_ul_rem_tab