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