clarify the purpose of this project
[nyanglibc.git] / libio / strops.s
blob462212c9f2c8e4a05dafaba38f63cff84580693b
1 .text
2 .p2align 4,,15
3 .globl _IO_str_underflow
4 .hidden _IO_str_underflow
5 .type _IO_str_underflow, @function
6 _IO_str_underflow:
7 movq 40(%rdi), %rax
8 movq 16(%rdi), %rdx
9 cmpq %rdx, %rax
10 jbe .L2
11 movq %rax, 16(%rdi)
12 movq %rax, %rdx
13 .L2:
14 movl (%rdi), %ecx
15 movl %ecx, %esi
16 andl $3072, %esi
17 cmpl $3072, %esi
18 je .L3
19 movq 8(%rdi), %rax
20 .L4:
21 cmpq %rdx, %rax
22 jnb .L6
23 movzbl (%rax), %eax
24 ret
25 .p2align 4,,10
26 .p2align 3
27 .L3:
28 andb $-9, %ch
29 movq %rax, 8(%rdi)
30 movl %ecx, (%rdi)
31 movq 48(%rdi), %rcx
32 movq %rcx, 40(%rdi)
33 jmp .L4
34 .p2align 4,,10
35 .p2align 3
36 .L6:
37 movl $-1, %eax
38 ret
39 .size _IO_str_underflow, .-_IO_str_underflow
40 .p2align 4,,15
41 .globl _IO_str_overflow
42 .hidden _IO_str_overflow
43 .type _IO_str_overflow, @function
44 _IO_str_overflow:
45 movl (%rdi), %edx
46 testb $8, %dl
47 je .L9
48 xorl %eax, %eax
49 cmpl $-1, %esi
50 setne %al
51 negl %eax
52 ret
53 .p2align 4,,10
54 .p2align 3
55 .L9:
56 pushq %r15
57 movl %edx, %eax
58 pushq %r14
59 pushq %r13
60 pushq %r12
61 andl $3072, %eax
62 pushq %rbp
63 pushq %rbx
64 subq $8, %rsp
65 cmpl $1024, %eax
66 je .L11
67 movq 40(%rdi), %rdx
68 .L12:
69 movq 56(%rdi), %r15
70 movq 64(%rdi), %r12
71 xorl %eax, %eax
72 movq %rdx, %rcx
73 movl %esi, %ebp
74 movq %rdi, %rbx
75 subq %r15, %r12
76 cmpl $-1, %esi
77 sete %al
78 subq 32(%rdi), %rcx
79 addq %r12, %rax
80 cmpq %rcx, %rax
81 ja .L13
82 testb $1, (%rdi)
83 jne .L15
84 leaq 100(%r12,%r12), %r14
85 cmpq %r14, %r12
86 ja .L15
87 movq %r14, %rdi
88 call malloc@PLT
89 testq %rax, %rax
90 movq %rax, %r13
91 je .L15
92 testq %r15, %r15
93 je .L16
94 movq %r12, %rdx
95 movq %r15, %rsi
96 movq %rax, %rdi
97 call memcpy@PLT
98 movq %r15, %rdi
99 call free@PLT
100 movq $0, 56(%rbx)
101 .L16:
102 leaq 0(%r13,%r12), %rdi
103 movq %r14, %rdx
104 xorl %esi, %esi
105 subq %r12, %rdx
106 call memset@PLT
107 leaq 0(%r13,%r14), %rdx
108 movl $1, %ecx
109 movq %r13, %rsi
110 movq %rbx, %rdi
111 call _IO_setb
112 movq 24(%rbx), %rax
113 movq 40(%rbx), %rdx
114 movq %r13, 32(%rbx)
115 subq %r15, %rax
116 subq %r15, %rdx
117 addq %r13, %rax
118 addq %r13, %rdx
119 movq %rax, 24(%rbx)
120 movq 8(%rbx), %rax
121 movq %rdx, 40(%rbx)
122 subq %r15, %rax
123 addq %r13, %rax
124 movq %rax, 8(%rbx)
125 movq 16(%rbx), %rax
126 subq %r15, %rax
127 addq %r13, %rax
128 movq %rax, 16(%rbx)
129 movq 64(%rbx), %rax
130 movq %rax, 48(%rbx)
131 .L13:
132 cmpl $-1, %ebp
133 je .L17
134 leaq 1(%rdx), %rax
135 movq %rax, 40(%rbx)
136 movb %bpl, (%rdx)
137 movq 40(%rbx), %rdx
138 .L17:
139 cmpq %rdx, 16(%rbx)
140 movl %ebp, %eax
141 jnb .L8
142 movq %rdx, 16(%rbx)
143 .L8:
144 addq $8, %rsp
145 popq %rbx
146 popq %rbp
147 popq %r12
148 popq %r13
149 popq %r14
150 popq %r15
152 .p2align 4,,10
153 .p2align 3
154 .L11:
155 orb $8, %dh
156 movq 16(%rdi), %rax
157 movl %edx, (%rdi)
158 movq 8(%rdi), %rdx
159 movq %rax, 8(%rdi)
160 movq %rdx, 40(%rdi)
161 jmp .L12
162 .p2align 4,,10
163 .p2align 3
164 .L15:
165 movl $-1, %eax
166 jmp .L8
167 .size _IO_str_overflow, .-_IO_str_overflow
168 .section .rodata.str1.1,"aMS",@progbits,1
169 .LC0:
170 .string "strops.c"
171 .LC1:
172 .string "offset >= oldend"
173 .text
174 .p2align 4,,15
175 .type enlarge_userbuf, @function
176 enlarge_userbuf:
177 pushq %r15
178 pushq %r14
179 pushq %r13
180 pushq %r12
181 pushq %rbp
182 pushq %rbx
183 subq $40, %rsp
184 movq 56(%rdi), %rbp
185 movq 64(%rdi), %rbx
186 subq %rbp, %rbx
187 cmpq %rsi, %rbx
188 jge .L40
189 movl (%rdi), %r15d
190 andl $1, %r15d
191 je .L33
192 .L34:
193 movl $1, %r15d
194 .L31:
195 addq $40, %rsp
196 movl %r15d, %eax
197 popq %rbx
198 popq %rbp
199 popq %r12
200 popq %r13
201 popq %r14
202 popq %r15
204 .p2align 4,,10
205 .p2align 3
206 .L40:
207 xorl %r15d, %r15d
208 jmp .L31
209 .p2align 4,,10
210 .p2align 3
211 .L33:
212 movq 32(%rdi), %rax
213 movq 48(%rdi), %r13
214 movq %rdi, %r14
215 movl %edx, 28(%rsp)
216 movq %rsi, (%rsp)
217 movq %rax, 8(%rsp)
218 leaq 100(%rsi), %rax
219 movq %rax, %rdi
220 movq %rax, 16(%rsp)
221 call malloc@PLT
222 testq %rax, %rax
223 movq %rax, %r12
224 je .L34
225 testq %rbp, %rbp
226 je .L35
227 movq %rbx, %rdx
228 movq %rbp, %rsi
229 movq %rax, %rdi
230 call memcpy@PLT
231 movq %rbp, %rdi
232 call free@PLT
233 movq $0, 56(%r14)
234 .L35:
235 movq 16(%rsp), %rdx
236 movl $1, %ecx
237 movq %r12, %rsi
238 movq %r14, %rdi
239 subq 8(%rsp), %r13
240 addq %r12, %rdx
241 call _IO_setb
242 movl 28(%rsp), %eax
243 testl %eax, %eax
244 je .L36
245 movq 32(%r14), %rax
246 movq %r12, 24(%r14)
247 subq %rbp, %rax
248 addq %r12, %rax
249 movq %rax, 32(%r14)
250 movq 40(%r14), %rax
251 subq %rbp, %rax
252 addq %r12, %rax
253 movq %rax, 40(%r14)
254 movq 48(%r14), %rax
255 subq %rbp, %rax
256 addq %r12, %rax
257 movq %rax, 48(%r14)
258 movq 8(%r14), %rax
259 subq %rbp, %rax
260 addq %r12, %rax
261 cmpq %r13, (%rsp)
262 movq %rax, 8(%r14)
263 movq 64(%r14), %rax
264 movq %rax, 16(%r14)
265 jl .L39
266 movq (%rsp), %rdx
267 leaq (%r12,%r13), %rdi
268 xorl %esi, %esi
269 subq %r13, %rdx
270 call memset@PLT
271 jmp .L31
272 .p2align 4,,10
273 .p2align 3
274 .L36:
275 movq 24(%r14), %rax
276 movq %r12, 32(%r14)
277 subq %rbp, %rax
278 addq %r12, %rax
279 movq %rax, 24(%r14)
280 movq 8(%r14), %rax
281 subq %rbp, %rax
282 addq %r12, %rax
283 movq %rax, 8(%r14)
284 movq 16(%r14), %rax
285 subq %rbp, %rax
286 addq %r12, %rax
287 movq %rax, 16(%r14)
288 movq 40(%r14), %rax
289 subq %rbp, %rax
290 addq %r12, %rax
291 cmpq %r13, (%rsp)
292 movq %rax, 40(%r14)
293 movq 64(%r14), %rax
294 movq %rax, 48(%r14)
295 jl .L39
296 movq (%rsp), %rdx
297 leaq (%r12,%r13), %rdi
298 xorl %esi, %esi
299 xorl %r15d, %r15d
300 subq %r13, %rdx
301 call memset@PLT
302 jmp .L31
303 .L39:
304 leaq __PRETTY_FUNCTION__.10863(%rip), %rcx
305 leaq .LC0(%rip), %rsi
306 leaq .LC1(%rip), %rdi
307 movl $222, %edx
308 call __assert_fail
309 .size enlarge_userbuf, .-enlarge_userbuf
310 .p2align 4,,15
311 .globl _IO_str_seekoff
312 .hidden _IO_str_seekoff
313 .type _IO_str_seekoff, @function
314 _IO_str_seekoff:
315 pushq %r14
316 pushq %r13
317 movl %edx, %r14d
318 pushq %r12
319 pushq %rbp
320 movq %rsi, %r13
321 pushq %rbx
322 movq %rdi, %rbx
323 subq $16, %rsp
324 testl %ecx, %ecx
325 movl (%rdi), %eax
326 movq 32(%rdi), %rsi
327 movq 40(%rdi), %rdx
328 jne .L49
329 movl %eax, %ecx
330 andl $1024, %ecx
331 je .L50
332 testb $8, %ah
333 jne .L76
334 cmpq %rdx, %rsi
335 jb .L80
336 cmpq %rdx, 16(%rdi)
337 movq 24(%rdi), %rsi
338 movl $1, %ecx
339 cmovnb 16(%rdi), %rdx
340 movq %rdx, %r12
341 subq %rsi, %r12
342 .L75:
343 testl %r14d, %r14d
344 je .L59
345 cmpl $1, %r14d
346 movq %r12, %rbp
347 jne .L58
348 movq 8(%rbx), %rbp
349 subq %rsi, %rbp
350 .L58:
351 movq %rbp, %rax
352 negq %rax
353 cmpq %r13, %rax
354 jg .L68
355 movabsq $9223372036854775807, %rax
356 subq %rbp, %rax
357 cmpq %r13, %rax
358 setl %al
359 addq %r13, %rbp
360 testb %al, %al
361 jne .L68
362 .L74:
363 cmpq %rbp, %r12
364 jl .L91
365 .L63:
366 leaq (%rsi,%rbp), %rax
367 addq %r12, %rsi
368 movq %rsi, 16(%rbx)
369 movq %rax, 8(%rbx)
370 jmp .L57
371 .p2align 4,,10
372 .p2align 3
373 .L49:
374 cmpq %rdx, %rsi
375 jnb .L92
376 .L51:
377 testb $1, %ah
378 jne .L72
379 .L93:
380 movq 56(%rbx), %rsi
381 movq %rsi, 24(%rbx)
382 .L55:
383 andb $-9, %ah
384 testl %ecx, %ecx
385 movq %rdx, 16(%rbx)
386 movl %eax, (%rbx)
387 movq %rdx, 8(%rbx)
388 movq %rsi, %rax
389 jne .L54
390 .L53:
391 movq 8(%rbx), %rbp
392 subq %rax, %rbp
393 .L48:
394 addq $16, %rsp
395 movq %rbp, %rax
396 popq %rbx
397 popq %rbp
398 popq %r12
399 popq %r13
400 popq %r14
402 .p2align 4,,10
403 .p2align 3
404 .L72:
405 movq 80(%rbx), %rsi
406 movq %rsi, 24(%rbx)
407 jmp .L55
408 .p2align 4,,10
409 .p2align 3
410 .L92:
411 testb $8, %ah
412 jne .L51
413 movq 24(%rdi), %rsi
414 .L54:
415 cmpq %rdx, 16(%rbx)
416 movq $-1, %rbp
417 cmovnb 16(%rbx), %rdx
418 movq %rdx, %r12
419 subq %rsi, %r12
420 testb $1, %cl
421 jne .L75
422 .L57:
423 andl $2, %ecx
424 je .L48
425 testl %r14d, %r14d
426 je .L79
427 cmpl $1, %r14d
428 jne .L88
429 movq 40(%rbx), %rbp
430 subq 32(%rbx), %rbp
431 movabsq $9223372036854775807, %rdx
432 subq %rbp, %rdx
433 movq %rbp, %rax
434 negq %rax
435 cmpq %rdx, %r13
436 setg %dl
437 .L66:
438 cmpq %rax, %r13
439 jl .L68
440 testb %dl, %dl
441 jne .L68
442 addq %r13, %rbp
443 cmpq %rbp, %r12
444 jl .L69
445 .L71:
446 movq 32(%rbx), %rax
447 addq %rbp, %rax
448 movq %rax, 40(%rbx)
449 addq $16, %rsp
450 movq %rbp, %rax
451 popq %rbx
452 popq %rbp
453 popq %r12
454 popq %r13
455 popq %r14
457 .p2align 4,,10
458 .p2align 3
459 .L50:
460 cmpq %rdx, %rsi
461 jb .L51
462 testb $8, %ah
463 jne .L51
464 movq 24(%rdi), %rax
465 jmp .L53
466 .p2align 4,,10
467 .p2align 3
468 .L76:
469 testb $1, %ah
470 movl $2, %ecx
471 jne .L72
472 jmp .L93
473 .p2align 4,,10
474 .p2align 3
475 .L79:
476 xorl %edx, %edx
477 xorl %eax, %eax
478 xorl %ebp, %ebp
479 jmp .L66
480 .p2align 4,,10
481 .p2align 3
482 .L59:
483 testq %r13, %r13
484 js .L68
485 movq %r13, %rbp
486 jmp .L74
487 .p2align 4,,10
488 .p2align 3
489 .L88:
490 movabsq $9223372036854775807, %rdx
491 movq %r12, %rax
492 movq %r12, %rbp
493 subq %r12, %rdx
494 negq %rax
495 cmpq %rdx, %r13
496 setg %dl
497 jmp .L66
498 .p2align 4,,10
499 .p2align 3
500 .L69:
501 xorl %edx, %edx
502 movq %rbp, %rsi
503 movq %rbx, %rdi
504 call enlarge_userbuf
505 testl %eax, %eax
506 je .L71
507 .L70:
508 movq $-1, %rbp
509 jmp .L48
510 .p2align 4,,10
511 .p2align 3
512 .L91:
513 movl $1, %edx
514 movq %rbp, %rsi
515 movq %rbx, %rdi
516 movl %ecx, 12(%rsp)
517 call enlarge_userbuf
518 testl %eax, %eax
519 movl 12(%rsp), %ecx
520 jne .L70
521 movq 24(%rbx), %rsi
522 jmp .L63
523 .p2align 4,,10
524 .p2align 3
525 .L80:
526 movl $1, %ecx
527 jmp .L51
528 .p2align 4,,10
529 .p2align 3
530 .L68:
531 movq __libc_errno@gottpoff(%rip), %rax
532 movq $-1, %rbp
533 movl $22, %fs:(%rax)
534 jmp .L48
535 .size _IO_str_seekoff, .-_IO_str_seekoff
536 .p2align 4,,15
537 .globl _IO_str_pbackfail
538 .hidden _IO_str_pbackfail
539 .type _IO_str_pbackfail, @function
540 _IO_str_pbackfail:
541 testb $8, (%rdi)
542 je .L97
543 cmpl $-1, %esi
544 jne .L95
545 .L97:
546 jmp _IO_default_pbackfail
547 .p2align 4,,10
548 .p2align 3
549 .L95:
550 movl $-1, %eax
552 .size _IO_str_pbackfail, .-_IO_str_pbackfail
553 .p2align 4,,15
554 .globl _IO_str_finish
555 .type _IO_str_finish, @function
556 _IO_str_finish:
557 pushq %rbx
558 movq %rdi, %rbx
559 movq 56(%rdi), %rdi
560 testq %rdi, %rdi
561 je .L102
562 testb $1, (%rbx)
563 je .L107
564 .L102:
565 movq $0, 56(%rbx)
566 movq %rbx, %rdi
567 xorl %esi, %esi
568 popq %rbx
569 jmp _IO_default_finish
570 .p2align 4,,10
571 .p2align 3
572 .L107:
573 call free@PLT
574 jmp .L102
575 .size _IO_str_finish, .-_IO_str_finish
576 .p2align 4,,15
577 .globl _IO_str_init_static_internal
578 .type _IO_str_init_static_internal, @function
579 _IO_str_init_static_internal:
580 pushq %r13
581 pushq %r12
582 movq %rcx, %r13
583 pushq %rbp
584 pushq %rbx
585 movq %rsi, %rbp
586 movq %rdi, %rbx
587 subq $8, %rsp
588 testq %rdx, %rdx
589 jne .L109
590 xorl %esi, %esi
591 movq %rbp, %rdi
592 call __rawmemchr
593 movq %rax, %r12
594 .L110:
595 xorl %ecx, %ecx
596 movq %r12, %rdx
597 movq %rbp, %rsi
598 movq %rbx, %rdi
599 call _IO_setb
600 testq %r13, %r13
601 movq %rbp, 32(%rbx)
602 movq %rbp, 24(%rbx)
603 movq %rbp, 8(%rbx)
604 je .L111
605 movq %r13, 40(%rbx)
606 movq %r12, 48(%rbx)
607 movq %r13, 16(%rbx)
608 .L112:
609 movq $0, 224(%rbx)
610 addq $8, %rsp
611 popq %rbx
612 popq %rbp
613 popq %r12
614 popq %r13
616 .p2align 4,,10
617 .p2align 3
618 .L109:
619 addq %rsi, %rdx
620 movq $-1, %r12
621 cmpq %rdx, %rsi
622 cmovb %rdx, %r12
623 jmp .L110
624 .p2align 4,,10
625 .p2align 3
626 .L111:
627 movq %rbp, 40(%rbx)
628 movq %rbp, 48(%rbx)
629 movq %r12, 16(%rbx)
630 jmp .L112
631 .size _IO_str_init_static_internal, .-_IO_str_init_static_internal
632 .p2align 4,,15
633 .globl _IO_str_init_static
634 .type _IO_str_init_static, @function
635 _IO_str_init_static:
636 testl %edx, %edx
637 movl $-1, %eax
638 cmovs %eax, %edx
639 movslq %edx, %rdx
640 jmp _IO_str_init_static_internal
641 .size _IO_str_init_static, .-_IO_str_init_static
642 .p2align 4,,15
643 .globl _IO_str_init_readonly
644 .type _IO_str_init_readonly, @function
645 _IO_str_init_readonly:
646 testl %edx, %edx
647 movl $-1, %eax
648 pushq %rbx
649 cmovs %eax, %edx
650 movq %rdi, %rbx
651 xorl %ecx, %ecx
652 movslq %edx, %rdx
653 call _IO_str_init_static_internal
654 orl $8, (%rbx)
655 popq %rbx
657 .size _IO_str_init_readonly, .-_IO_str_init_readonly
658 .p2align 4,,15
659 .globl _IO_str_count
660 .type _IO_str_count, @function
661 _IO_str_count:
662 movq 40(%rdi), %rax
663 cmpq %rax, 16(%rdi)
664 cmovnb 16(%rdi), %rax
665 subq 24(%rdi), %rax
667 .size _IO_str_count, .-_IO_str_count
668 .section .rodata.str1.16,"aMS",@progbits,1
669 .align 16
670 .type __PRETTY_FUNCTION__.10863, @object
671 .size __PRETTY_FUNCTION__.10863, 16
672 __PRETTY_FUNCTION__.10863:
673 .string "enlarge_userbuf"
674 .hidden _IO_str_jumps
675 .globl _IO_str_jumps
676 .section __libc_IO_vtables,"aw",@progbits
677 .align 32
678 .type _IO_str_jumps, @object
679 .size _IO_str_jumps, 168
680 _IO_str_jumps:
681 .quad 0
682 .quad 0
683 .quad _IO_str_finish
684 .quad _IO_str_overflow
685 .quad _IO_str_underflow
686 .quad _IO_default_uflow
687 .quad _IO_str_pbackfail
688 .quad _IO_default_xsputn
689 .quad _IO_default_xsgetn
690 .quad _IO_str_seekoff
691 .quad _IO_default_seekpos
692 .quad _IO_default_setbuf
693 .quad _IO_default_sync
694 .quad _IO_default_doallocate
695 .quad _IO_default_read
696 .quad _IO_default_write
697 .quad _IO_default_seek
698 .quad _IO_default_sync
699 .quad _IO_default_stat
700 .quad _IO_default_showmanyc
701 .quad _IO_default_imbue
702 .hidden _IO_default_doallocate
703 .hidden _IO_default_xsgetn
704 .hidden _IO_default_xsputn
705 .hidden _IO_default_uflow
706 .hidden __rawmemchr
707 .hidden _IO_default_finish
708 .hidden _IO_default_pbackfail
709 .hidden __assert_fail
710 .hidden _IO_setb