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