clarify the purpose of this project
[nyanglibc.git] / stdio-common / printf-parsewc.shared.s
blob48964a49cf79f8da29dfbecc003f14f4819d2665
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 #NO_APP
7 .p2align 4,,15
8 .type read_int, @function
9 read_int:
10 movq (%rdi), %rdx
11 movl $2147483647, %r10d
12 movl $-1, %r9d
13 movl 4(%rdx), %ecx
14 movl (%rdx), %eax
15 leaq 4(%rdx), %rsi
16 subl $48, %ecx
17 subl $48, %eax
18 cmpl $9, %ecx
19 ja .L5
20 .L7:
21 testl %eax, %eax
22 js .L3
23 cmpl $214748364, %eax
24 jg .L14
25 leal (%rax,%rax,4), %eax
26 movl %r10d, %r8d
27 subl %ecx, %r8d
28 addl %eax, %eax
29 cmpl %eax, %r8d
30 jl .L14
31 addl %ecx, %eax
32 .L3:
33 movq %rsi, %rdx
34 movl 4(%rdx), %ecx
35 leaq 4(%rdx), %rsi
36 subl $48, %ecx
37 cmpl $9, %ecx
38 jbe .L7
39 .L5:
40 movq %rsi, (%rdi)
41 ret
42 .p2align 4,,10
43 .p2align 3
44 .L14:
45 movl 8(%rdx), %eax
46 leaq 8(%rdx), %rsi
47 subl $48, %eax
48 cmpl $9, %eax
49 ja .L10
50 movl 12(%rdx), %eax
51 leaq 12(%rdx), %rsi
52 subl $48, %eax
53 cmpl $9, %eax
54 ja .L10
55 movl %r9d, %eax
56 jmp .L3
57 .p2align 4,,10
58 .p2align 3
59 .L10:
60 movl $-1, %eax
61 movq %rsi, (%rdi)
62 ret
63 .size read_int, .-read_int
64 .p2align 4,,15
65 .globl __parse_one_specwc
66 .hidden __parse_one_specwc
67 .type __parse_one_specwc, @function
68 __parse_one_specwc:
69 pushq %r14
70 pushq %r13
71 movq %rcx, %r11
72 pushq %r12
73 pushq %rbp
74 leaq 4(%rdi), %rbp
75 pushq %rbx
76 movq %rdx, %rbx
77 movq %rsi, %r12
78 subq $16, %rsp
79 andb $7, 12(%rdx)
80 movl $-1, 48(%rdx)
81 movq %rbp, 8(%rsp)
82 movzbl 13(%rdx), %eax
83 movl $32, 16(%rdx)
84 andl $-30, %eax
85 orl $4, %eax
86 movb %al, 13(%rdx)
87 movl 4(%rdi), %eax
88 leal -48(%rax), %edx
89 cmpl $9, %edx
90 jbe .L115
91 .L17:
92 leaq .L22(%rip), %rcx
93 movq %rbp, %rdx
94 xorl %esi, %esi
95 .p2align 4,,10
96 .p2align 3
97 .L31:
98 subl $32, %eax
99 cmpl $41, %eax
100 ja .L20
101 movslq (%rcx,%rax,4), %rax
102 addq %rcx, %rax
103 jmp *%rax
104 .section .rodata
105 .align 4
106 .align 4
107 .L22:
108 .long .L21-.L22
109 .long .L20-.L22
110 .long .L20-.L22
111 .long .L23-.L22
112 .long .L20-.L22
113 .long .L20-.L22
114 .long .L20-.L22
115 .long .L24-.L22
116 .long .L20-.L22
117 .long .L20-.L22
118 .long .L20-.L22
119 .long .L25-.L22
120 .long .L20-.L22
121 .long .L26-.L22
122 .long .L20-.L22
123 .long .L20-.L22
124 .long .L27-.L22
125 .long .L20-.L22
126 .long .L20-.L22
127 .long .L20-.L22
128 .long .L20-.L22
129 .long .L20-.L22
130 .long .L20-.L22
131 .long .L20-.L22
132 .long .L20-.L22
133 .long .L20-.L22
134 .long .L20-.L22
135 .long .L20-.L22
136 .long .L20-.L22
137 .long .L20-.L22
138 .long .L20-.L22
139 .long .L20-.L22
140 .long .L20-.L22
141 .long .L20-.L22
142 .long .L20-.L22
143 .long .L20-.L22
144 .long .L20-.L22
145 .long .L20-.L22
146 .long .L20-.L22
147 .long .L20-.L22
148 .long .L20-.L22
149 .long .L28-.L22
150 .text
151 .p2align 4,,10
152 .p2align 3
153 .L28:
154 orb $8, 13(%rbx)
155 .p2align 4,,10
156 .p2align 3
157 .L30:
158 addq $4, %rdx
159 movl (%rdx), %eax
160 movl $1, %esi
161 testl %eax, %eax
162 jne .L31
163 .L110:
164 movq %rdx, 8(%rsp)
165 movq %rdx, %rbp
166 jmp .L29
167 .p2align 4,,10
168 .p2align 3
169 .L27:
170 movl $48, 16(%rbx)
171 jmp .L30
172 .p2align 4,,10
173 .p2align 3
174 .L26:
175 orb $32, 12(%rbx)
176 jmp .L30
177 .p2align 4,,10
178 .p2align 3
179 .L25:
180 orb $64, 12(%rbx)
181 jmp .L30
182 .p2align 4,,10
183 .p2align 3
184 .L24:
185 orb $-128, 12(%rbx)
186 jmp .L30
187 .p2align 4,,10
188 .p2align 3
189 .L23:
190 orb $8, 12(%rbx)
191 jmp .L30
192 .p2align 4,,10
193 .p2align 3
194 .L21:
195 orb $16, 12(%rbx)
196 jmp .L30
197 .p2align 4,,10
198 .p2align 3
199 .L20:
200 testb %sil, %sil
201 jne .L110
202 .L29:
203 testb $32, 12(%rbx)
204 je .L32
205 movl $32, 16(%rbx)
206 .L32:
207 movl $-1, 44(%rbx)
208 movl $0, 4(%rbx)
209 movl 0(%rbp), %eax
210 cmpl $42, %eax
211 je .L116
212 subl $48, %eax
213 xorl %r13d, %r13d
214 cmpl $9, %eax
215 jbe .L117
216 .L35:
217 movl $-1, 40(%rbx)
218 movl $-1, (%rbx)
219 cmpl $46, 0(%rbp)
220 je .L118
221 .L43:
222 xorl %eax, %eax
223 andb $-3, 13(%rbx)
224 andb $-8, 12(%rbx)
225 movw %ax, 14(%rbx)
226 movq __printf_modifier_table(%rip), %rax
227 testq %rax, %rax
228 jne .L54
229 .L114:
230 movl 0(%rbp), %ecx
231 .L55:
232 leal -76(%rcx), %eax
233 leaq 4(%rbp), %rdx
234 cmpl $46, %eax
235 movq %rdx, 8(%rsp)
236 ja .L57
237 leaq .L59(%rip), %rsi
238 movslq (%rsi,%rax,4), %rax
239 addq %rsi, %rax
240 jmp *%rax
241 .section .rodata
242 .align 4
243 .align 4
244 .L59:
245 .long .L58-.L59
246 .long .L57-.L59
247 .long .L57-.L59
248 .long .L57-.L59
249 .long .L57-.L59
250 .long .L57-.L59
251 .long .L57-.L59
252 .long .L57-.L59
253 .long .L57-.L59
254 .long .L57-.L59
255 .long .L57-.L59
256 .long .L57-.L59
257 .long .L57-.L59
258 .long .L57-.L59
259 .long .L60-.L59
260 .long .L57-.L59
261 .long .L57-.L59
262 .long .L57-.L59
263 .long .L57-.L59
264 .long .L57-.L59
265 .long .L57-.L59
266 .long .L57-.L59
267 .long .L57-.L59
268 .long .L57-.L59
269 .long .L57-.L59
270 .long .L57-.L59
271 .long .L57-.L59
272 .long .L57-.L59
273 .long .L61-.L59
274 .long .L57-.L59
275 .long .L60-.L59
276 .long .L57-.L59
277 .long .L62-.L59
278 .long .L57-.L59
279 .long .L57-.L59
280 .long .L57-.L59
281 .long .L57-.L59
282 .long .L58-.L59
283 .long .L57-.L59
284 .long .L57-.L59
285 .long .L60-.L59
286 .long .L57-.L59
287 .long .L57-.L59
288 .long .L57-.L59
289 .long .L57-.L59
290 .long .L57-.L59
291 .long .L60-.L59
292 .text
293 .p2align 4,,10
294 .p2align 3
295 .L61:
296 cmpl $104, 4(%rbp)
297 je .L63
298 orb $2, 12(%rbx)
299 leaq 8(%rbp), %rdx
300 movl 4(%rbp), %ecx
301 .p2align 4,,10
302 .p2align 3
303 .L57:
304 cmpq $0, __printf_function_table(%rip)
305 movq %rdx, 8(%rsp)
306 movl %ecx, 8(%rbx)
307 movl $-1, 64(%rbx)
308 je .L65
309 cmpl $255, %ecx
310 jle .L119
311 .L65:
312 leal -65(%rcx), %eax
313 movq $1, 56(%rbx)
314 movl 48(%rbx), %esi
315 cmpl $55, %eax
316 ja .L67
317 leaq .L69(%rip), %rdx
318 movslq (%rdx,%rax,4), %rax
319 addq %rdx, %rax
320 jmp *%rax
321 .section .rodata
322 .align 4
323 .align 4
324 .L69:
325 .long .L68-.L69
326 .long .L67-.L69
327 .long .L70-.L69
328 .long .L67-.L69
329 .long .L68-.L69
330 .long .L68-.L69
331 .long .L68-.L69
332 .long .L67-.L69
333 .long .L67-.L69
334 .long .L67-.L69
335 .long .L67-.L69
336 .long .L67-.L69
337 .long .L67-.L69
338 .long .L67-.L69
339 .long .L67-.L69
340 .long .L67-.L69
341 .long .L67-.L69
342 .long .L67-.L69
343 .long .L71-.L69
344 .long .L67-.L69
345 .long .L67-.L69
346 .long .L67-.L69
347 .long .L67-.L69
348 .long .L72-.L69
349 .long .L67-.L69
350 .long .L67-.L69
351 .long .L67-.L69
352 .long .L67-.L69
353 .long .L67-.L69
354 .long .L67-.L69
355 .long .L67-.L69
356 .long .L67-.L69
357 .long .L68-.L69
358 .long .L67-.L69
359 .long .L73-.L69
360 .long .L72-.L69
361 .long .L68-.L69
362 .long .L68-.L69
363 .long .L68-.L69
364 .long .L67-.L69
365 .long .L72-.L69
366 .long .L67-.L69
367 .long .L67-.L69
368 .long .L67-.L69
369 .long .L67-.L69
370 .long .L74-.L69
371 .long .L72-.L69
372 .long .L75-.L69
373 .long .L67-.L69
374 .long .L67-.L69
375 .long .L76-.L69
376 .long .L67-.L69
377 .long .L72-.L69
378 .long .L67-.L69
379 .long .L67-.L69
380 .long .L72-.L69
381 .text
382 .p2align 4,,10
383 .p2align 3
384 .L60:
385 orb $4, 12(%rbx)
386 leaq 8(%rbp), %rdx
387 movl 4(%rbp), %ecx
388 jmp .L57
389 .p2align 4,,10
390 .p2align 3
391 .L117:
392 leaq 8(%rsp), %rdi
393 call read_int
394 cmpl $-1, %eax
395 je .L111
396 movl %eax, 4(%rbx)
397 .L111:
398 movq 8(%rsp), %rbp
399 jmp .L35
400 .p2align 4,,10
401 .p2align 3
402 .L118:
403 movl 4(%rbp), %eax
404 leaq 4(%rbp), %rdx
405 movq %rdx, 8(%rsp)
406 cmpl $42, %eax
407 je .L120
408 subl $48, %eax
409 cmpl $9, %eax
410 jbe .L121
411 movl $0, (%rbx)
412 movq %rdx, %rbp
413 jmp .L43
414 .p2align 4,,10
415 .p2align 3
416 .L116:
417 movl 4(%rbp), %eax
418 leaq 4(%rbp), %r13
419 movq %r13, 8(%rsp)
420 subl $48, %eax
421 cmpl $9, %eax
422 jbe .L34
423 .L41:
424 movl %r12d, 44(%rbx)
425 movq %r13, 8(%rsp)
426 movq %r13, %rbp
427 addq $1, %r12
428 movl $1, %r13d
429 jmp .L35
430 .p2align 4,,10
431 .p2align 3
432 .L115:
433 movq %rdi, %r13
434 leaq 8(%rsp), %rdi
435 call read_int
436 testl %eax, %eax
437 je .L18
438 movq 8(%rsp), %rdx
439 cmpl $36, (%rdx)
440 jne .L18
441 leaq 4(%rdx), %rbp
442 cmpl $-1, %eax
443 movq %rbp, 8(%rsp)
444 je .L109
445 leal -1(%rax), %ecx
446 movl %eax, %eax
447 cmpq %rax, (%r11)
448 cmovnb (%r11), %rax
449 movl %ecx, 48(%rbx)
450 movq %rax, (%r11)
451 .L109:
452 movl 4(%rdx), %eax
453 jmp .L17
454 .p2align 4,,10
455 .p2align 3
456 .L18:
457 movq %rbp, 8(%rsp)
458 movl 4(%r13), %eax
459 jmp .L17
460 .p2align 4,,10
461 .p2align 3
462 .L62:
463 orb $4, 12(%rbx)
464 leaq 8(%rbp), %rdx
465 movl 4(%rbp), %ecx
466 cmpl $108, %ecx
467 jne .L57
468 .L58:
469 orb $1, 12(%rbx)
470 addq $4, %rdx
471 movl -4(%rdx), %ecx
472 jmp .L57
473 .p2align 4,,10
474 .p2align 3
475 .L73:
476 movl $1, 52(%rbx)
477 .L82:
478 cmpl $-1, %esi
479 movq 8(%rsp), %rdi
480 je .L90
481 .L83:
482 movq %rdi, 24(%rbx)
483 movl $37, %esi
484 call __wcschrnul@PLT
485 movq %rax, 32(%rbx)
486 addq $16, %rsp
487 movq %r13, %rax
488 popq %rbx
489 popq %rbp
490 popq %r12
491 popq %r13
492 popq %r14
494 .p2align 4,,10
495 .p2align 3
496 .L74:
497 cmpl $-1, %esi
498 movl $2048, 52(%rbx)
499 movq 8(%rsp), %rdi
500 jne .L83
501 .p2align 4,,10
502 .p2align 3
503 .L90:
504 movl $1, %edx
505 .L86:
506 movl %r12d, 48(%rbx)
507 addq %rdx, %r13
508 jmp .L84
509 .p2align 4,,10
510 .p2align 3
511 .L75:
512 movl $5, 52(%rbx)
513 jmp .L82
514 .p2align 4,,10
515 .p2align 3
516 .L76:
517 movl $3, 52(%rbx)
518 jmp .L82
519 .p2align 4,,10
520 .p2align 3
521 .L68:
522 movzbl 12(%rbx), %eax
523 andl $1, %eax
524 cmpb $1, %al
525 sbbl %eax, %eax
526 xorb %al, %al
527 addl $263, %eax
528 movl %eax, 52(%rbx)
529 .L78:
530 cmpl $-1, %esi
531 je .L90
532 .L84:
533 testl %ecx, %ecx
534 movq 8(%rsp), %rdi
535 jne .L83
536 subq $4, %rdi
537 movq %r13, %rax
538 movq %rdi, 32(%rbx)
539 movq %rdi, 24(%rbx)
540 addq $16, %rsp
541 popq %rbx
542 popq %rbp
543 popq %r12
544 popq %r13
545 popq %r14
547 .p2align 4,,10
548 .p2align 3
549 .L70:
550 cmpl $-1, %esi
551 movl $2, 52(%rbx)
552 movq 8(%rsp), %rdi
553 jne .L83
554 movl %r12d, 48(%rbx)
555 addq $1, %r13
556 jmp .L83
557 .p2align 4,,10
558 .p2align 3
559 .L71:
560 movl $4, 52(%rbx)
561 jmp .L82
562 .p2align 4,,10
563 .p2align 3
564 .L72:
565 movzbl 12(%rbx), %eax
566 testb $4, %al
567 je .L77
568 movl $512, 52(%rbx)
569 jmp .L78
570 .p2align 4,,10
571 .p2align 3
572 .L121:
573 leaq 8(%rsp), %rdi
574 call read_int
575 cmpl $-1, %eax
576 je .L113
577 movl %eax, (%rbx)
578 .L113:
579 movq 8(%rsp), %rbp
580 jmp .L43
581 .p2align 4,,10
582 .p2align 3
583 .L67:
584 movq $0, 56(%rbx)
585 jmp .L84
586 .L119:
587 movq __printf_arginfo_table(%rip), %rdx
588 movslq %ecx, %rax
589 movq (%rdx,%rax,8), %rax
590 testq %rax, %rax
591 je .L65
592 leaq 64(%rbx), %rcx
593 leaq 52(%rbx), %rdx
594 movl $1, %esi
595 movq %rbx, %rdi
596 call *%rax
597 movslq %eax, %rdx
598 testl %eax, %eax
599 movl 8(%rbx), %ecx
600 movq %rdx, 56(%rbx)
601 js .L65
602 cmpl $-1, 48(%rbx)
603 jne .L84
604 testq %rdx, %rdx
605 je .L84
606 jmp .L86
607 .p2align 4,,10
608 .p2align 3
609 .L120:
610 movl 8(%rbp), %eax
611 leaq 8(%rbp), %r14
612 movq %r14, 8(%rsp)
613 subl $48, %eax
614 cmpl $9, %eax
615 jbe .L45
616 .L51:
617 movl %r12d, 40(%rbx)
618 addq $1, %r13
619 movq %r14, 8(%rsp)
620 movq %r14, %rbp
621 addq $1, %r12
622 jmp .L43
623 .p2align 4,,10
624 .p2align 3
625 .L34:
626 leaq 8(%rsp), %rdi
627 call read_int
628 testl %eax, %eax
629 je .L38
630 movq 8(%rsp), %rcx
631 cmpl $36, (%rcx)
632 je .L122
633 .L38:
634 movl 44(%rbx), %edx
635 .L37:
636 testl %edx, %edx
637 js .L41
638 movq 8(%rsp), %rbp
639 xorl %r13d, %r13d
640 jmp .L35
641 .p2align 4,,10
642 .p2align 3
643 .L54:
644 movl 0(%rbp), %edx
645 cmpq $0, (%rax,%rdx,8)
646 movq %rdx, %rcx
647 je .L55
648 leaq 8(%rsp), %rdi
649 movq %rbx, %rsi
650 call __handle_registered_modifier_wc
651 testl %eax, %eax
652 je .L123
653 movq 8(%rsp), %rbp
654 jmp .L114
655 .p2align 4,,10
656 .p2align 3
657 .L77:
658 testb $2, %al
659 je .L79
660 movl $1024, 52(%rbx)
661 jmp .L78
662 .L79:
663 xorl %eax, %eax
664 testb $2, 13(%rbx)
665 setne %al
666 movl %eax, 52(%rbx)
667 jmp .L78
668 .L123:
669 movq 8(%rsp), %rax
670 leaq 4(%rax), %rdx
671 movl (%rax), %ecx
672 jmp .L57
673 .L122:
674 cmpl $-1, %eax
675 je .L124
676 leal -1(%rax), %edx
677 movl %eax, %eax
678 cmpq %rax, (%r11)
679 cmovnb (%r11), %rax
680 movl %edx, 44(%rbx)
681 movq %rax, (%r11)
682 .L40:
683 addq $4, %rcx
684 movq %rcx, 8(%rsp)
685 jmp .L37
686 .L63:
687 orb $2, 13(%rbx)
688 leaq 12(%rbp), %rdx
689 movl 8(%rbp), %ecx
690 jmp .L57
691 .L45:
692 leaq 8(%rsp), %rdi
693 call read_int
694 testl %eax, %eax
695 je .L48
696 movq 8(%rsp), %rcx
697 cmpl $36, (%rcx)
698 je .L125
699 .L48:
700 movl 40(%rbx), %edx
701 .L47:
702 testl %edx, %edx
703 jns .L113
704 jmp .L51
705 .p2align 4,,10
706 .p2align 3
707 .L125:
708 cmpl $-1, %eax
709 je .L126
710 leal -1(%rax), %edx
711 movl %eax, %eax
712 cmpq %rax, (%r11)
713 cmovnb (%r11), %rax
714 movl %edx, 40(%rbx)
715 movq %rax, (%r11)
716 .L50:
717 addq $4, %rcx
718 movq %rcx, 8(%rsp)
719 jmp .L47
720 .L124:
721 movl 44(%rbx), %edx
722 jmp .L40
723 .L126:
724 movl 40(%rbx), %edx
725 jmp .L50
726 .size __parse_one_specwc, .-__parse_one_specwc
727 .hidden __handle_registered_modifier_wc
728 .hidden __printf_arginfo_table
729 .hidden __printf_function_table
730 .hidden __printf_modifier_table