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