clarify the purpose of this project
[nyanglibc.git] / stdlib / strtol_l.shared.s
blobba3a9333e50dece187d64160e768ae29d45e9b23
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_____strtol_l_internal
9 .hidden __GI_____strtol_l_internal
10 .type __GI_____strtol_l_internal, @function
11 __GI_____strtol_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 .L99
25 .L2:
26 cmpl $1, %edx
27 je .L3
28 cmpl $36, %edx
29 jbe .L100
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 .L100:
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 .L48
63 cmpb $45, %al
64 je .L101
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 .L102
74 testl %edx, %edx
75 je .L15
76 .L11:
77 cmpl $10, %edx
78 je .L15
79 leal -2(%rdx), %eax
80 leaq __strtol_ul_rem_tab(%rip), %rcx
81 xorl %ebp, %ebp
82 xorl %r15d, %r15d
83 cltq
84 movzbl (%rcx,%rax), %ecx
85 movb %cl, 2(%rsp)
86 leaq __strtol_ul_max_tab(%rip), %rcx
87 movq (%rcx,%rax,8), %rcx
88 .L13:
89 cmpq %rbx, %r15
90 movzbl %sil, %edi
91 je .L7
92 testb %dil, %dil
93 je .L7
94 movq 120+_nl_C_locobj(%rip), %r10
95 .L14:
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 .L104:
106 jne .L33
107 cmpb 2(%rsp), %sil
108 ja .L54
109 .L33:
110 imulq %r11, %rax
111 movzbl %sil, %esi
112 addq %rsi, %rax
113 movq %r8, %rsi
114 .L30:
115 leaq 1(%rsi), %r8
116 movzbl 1(%rsi), %edi
117 cmpq %r8, %r15
118 je .L31
119 testb %dil, %dil
120 je .L31
121 .L34:
122 leal -48(%rdi), %esi
123 cmpb $9, %sil
124 jbe .L24
125 testq %rbp, %rbp
126 jne .L103
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 .L104
139 .L54:
140 movq %r8, %rsi
141 movl $1, %r9d
142 jmp .L30
143 .p2align 4,,10
144 .p2align 3
145 .L101:
146 addq $1, %rbx
147 movl $1, 4(%rsp)
148 jmp .L9
149 .p2align 4,,10
150 .p2align 3
151 .L103:
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 je .L105
178 movq __libc_errno@gottpoff(%rip), %rax
179 cmpl $0, 4(%rsp)
180 movabsq $-9223372036854775808, %rdx
181 movl $34, %fs:(%rax)
182 movabsq $9223372036854775807, %rax
183 cmovne %rdx, %rax
184 jmp .L1
185 .p2align 4,,10
186 .p2align 3
187 .L26:
188 cmpq %rsi, %rbp
189 movzbl 3(%rsp), %edi
190 jne .L25
191 jmp .L28
192 .p2align 4,,10
193 .p2align 3
194 .L15:
195 testq %r15, %r15
196 jne .L106
197 movabsq $1844674407370955161, %rcx
198 movb $5, 2(%rsp)
199 movl $10, %edx
200 xorl %ebp, %ebp
201 jmp .L13
202 .p2align 4,,10
203 .p2align 3
204 .L48:
205 movq %r12, %rbx
206 .L7:
207 xorl %eax, %eax
208 testq %r13, %r13
209 je .L1
210 movq %rbx, %rdx
211 subq %r12, %rdx
212 cmpq $1, %rdx
213 jle .L40
214 movsbq -1(%rbx), %rcx
215 movq 120+_nl_C_locobj(%rip), %rdx
216 cmpl $88, (%rdx,%rcx,4)
217 je .L107
218 .L40:
219 movq %r12, 0(%r13)
220 xorl %eax, %eax
221 jmp .L1
222 .p2align 4,,10
223 .p2align 3
224 .L99:
225 movq 8(%r8), %rcx
226 movq 80(%rcx), %r15
227 movzbl (%r15), %eax
228 subl $1, %eax
229 cmpb $125, %al
230 ja .L45
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 .L105:
240 movl 4(%rsp), %edx
241 testl %edx, %edx
242 je .L108
243 movabsq $-9223372036854775808, %rdx
244 cmpq %rdx, %rax
245 ja .L109
246 negq %rax
247 jmp .L1
248 .p2align 4,,10
249 .p2align 3
250 .L102:
251 testl $-17, %edx
252 jne .L11
253 movsbq 1(%rbx), %rax
254 movq 120+_nl_C_locobj(%rip), %r10
255 cmpl $88, (%r10,%rax,4)
256 je .L110
257 testl %edx, %edx
258 jne .L11
259 movb $7, 2(%rsp)
260 movabsq $2305843009213693951, %rcx
261 movl $8, %edx
262 xorl %r15d, %r15d
263 xorl %ebp, %ebp
264 movl $48, %edi
265 jmp .L14
266 .p2align 4,,10
267 .p2align 3
268 .L45:
269 xorl %r15d, %r15d
270 jmp .L2
271 .p2align 4,,10
272 .p2align 3
273 .L108:
274 testq %rax, %rax
275 jns .L1
276 movq __libc_errno@gottpoff(%rip), %rax
277 movl $34, %fs:(%rax)
278 movabsq $9223372036854775807, %rax
279 jmp .L1
280 .L107:
281 cmpb $48, -2(%rbx)
282 jne .L40
283 subq $1, %rbx
284 movq %rbx, 0(%r13)
285 jmp .L1
286 .p2align 4,,10
287 .p2align 3
288 .L106:
289 movq %r14, %rdi
290 movb %sil, 2(%rsp)
291 call __GI_strlen
292 testq %rax, %rax
293 movq %rax, %rbp
294 je .L7
295 movzbl (%r14), %r8d
296 movzbl 2(%rsp), %esi
297 cmpb %sil, %r8b
298 jne .L16
299 xorl %edx, %edx
300 jmp .L17
301 .p2align 4,,10
302 .p2align 3
303 .L18:
304 movzbl (%rbx,%rdx), %ecx
305 cmpb %cl, (%r14,%rdx)
306 jne .L16
307 .L17:
308 addq $1, %rdx
309 cmpq %rax, %rdx
310 jne .L18
311 jmp .L7
312 .L110:
313 movzbl 2(%rbx), %esi
314 movabsq $1152921504606846975, %rcx
315 addq $2, %rbx
316 movb $15, 2(%rsp)
317 movl $16, %edx
318 xorl %ebp, %ebp
319 xorl %r15d, %r15d
320 jmp .L13
321 .L16:
322 movzbl %sil, %edi
323 testb %dil, %dil
324 je .L52
325 movq 104+_nl_C_locobj(%rip), %r9
326 movq 120+_nl_C_locobj(%rip), %r10
327 movq %rbx, %rsi
328 jmp .L23
329 .p2align 4,,10
330 .p2align 3
331 .L20:
332 addq $1, %rsi
333 movzbl (%rsi), %edi
334 testb %dil, %dil
335 je .L19
336 .L23:
337 leal -48(%rdi), %edx
338 cmpb $9, %dl
339 jbe .L20
340 movl %r8d, %ecx
341 xorl %edx, %edx
342 jmp .L22
343 .p2align 4,,10
344 .p2align 3
345 .L111:
346 addq $1, %rdx
347 cmpq %rax, %rdx
348 je .L20
349 movzbl (%r14,%rdx), %ecx
350 .L22:
351 cmpb %cl, (%rsi,%rdx)
352 je .L111
353 cmpq %rdx, %rax
354 jbe .L20
355 testb $4, 1(%r9,%rdi,2)
356 je .L19
357 cmpl $64, (%r10,%rdi,4)
358 jle .L20
359 .L19:
360 movq %r15, %rcx
361 movq %r14, %rdx
362 movq %rbx, %rdi
363 call __correctly_grouped_prefixmb
364 movzbl (%rbx), %esi
365 movq %rax, %r15
366 movabsq $1844674407370955161, %rcx
367 movb $5, 2(%rsp)
368 movl $10, %edx
369 jmp .L13
370 .L109:
371 movq __libc_errno@gottpoff(%rip), %rax
372 movl $34, %fs:(%rax)
373 movq %rdx, %rax
374 jmp .L1
375 .L52:
376 movq %rbx, %rsi
377 jmp .L19
378 .size __GI_____strtol_l_internal, .-__GI_____strtol_l_internal
379 .globl ____strtol_l_internal
380 .set ____strtol_l_internal,__GI_____strtol_l_internal
381 .globl __GI_____strtoll_l_internal
382 .set __GI_____strtoll_l_internal,____strtol_l_internal
383 .globl ____strtoll_l_internal
384 .set ____strtoll_l_internal,____strtol_l_internal
385 .p2align 4,,15
386 .weak __GI___strtol_l
387 .hidden __GI___strtol_l
388 .type __GI___strtol_l, @function
389 __GI___strtol_l:
390 movq %rcx, %r8
391 xorl %ecx, %ecx
392 jmp __GI_____strtol_l_internal
393 .size __GI___strtol_l, .-__GI___strtol_l
394 .globl __strtol_l
395 .set __strtol_l,__GI___strtol_l
396 .weak strtoll_l
397 .set strtoll_l,__strtol_l
398 .weak __strtoll_l
399 .set __strtoll_l,__strtol_l
400 .weak strtol_l
401 .set strtol_l,__strtol_l
402 .hidden __strtol_ul_rem_tab
403 .globl __strtol_ul_rem_tab
404 .section .rodata
405 .align 32
406 .type __strtol_ul_rem_tab, @object
407 .size __strtol_ul_rem_tab, 35
408 __strtol_ul_rem_tab:
409 .byte 1
410 .byte 0
411 .byte 3
412 .byte 0
413 .byte 3
414 .byte 1
415 .byte 7
416 .byte 6
417 .byte 5
418 .byte 4
419 .byte 3
420 .byte 2
421 .byte 1
422 .byte 0
423 .byte 15
424 .byte 0
425 .byte 15
426 .byte 16
427 .byte 15
428 .byte 15
429 .byte 15
430 .byte 5
431 .byte 15
432 .byte 15
433 .byte 15
434 .byte 24
435 .byte 15
436 .byte 23
437 .byte 15
438 .byte 15
439 .byte 31
440 .byte 15
441 .byte 17
442 .byte 15
443 .byte 15
444 .hidden __strtol_ul_max_tab
445 .globl __strtol_ul_max_tab
446 .align 32
447 .type __strtol_ul_max_tab, @object
448 .size __strtol_ul_max_tab, 280
449 __strtol_ul_max_tab:
450 .quad 9223372036854775807
451 .quad 6148914691236517205
452 .quad 4611686018427387903
453 .quad 3689348814741910323
454 .quad 3074457345618258602
455 .quad 2635249153387078802
456 .quad 2305843009213693951
457 .quad 2049638230412172401
458 .quad 1844674407370955161
459 .quad 1676976733973595601
460 .quad 1537228672809129301
461 .quad 1418980313362273201
462 .quad 1317624576693539401
463 .quad 1229782938247303441
464 .quad 1152921504606846975
465 .quad 1085102592571150095
466 .quad 1024819115206086200
467 .quad 970881267037344821
468 .quad 922337203685477580
469 .quad 878416384462359600
470 .quad 838488366986797800
471 .quad 802032351030850070
472 .quad 768614336404564650
473 .quad 737869762948382064
474 .quad 709490156681136600
475 .quad 683212743470724133
476 .quad 658812288346769700
477 .quad 636094623231363848
478 .quad 614891469123651720
479 .quad 595056260442243600
480 .quad 576460752303423487
481 .quad 558992244657865200
482 .quad 542551296285575047
483 .quad 527049830677415760
484 .quad 512409557603043100
485 .hidden __correctly_grouped_prefixmb
486 .hidden _nl_C_locobj