clarify the purpose of this project
[nyanglibc.git] / debug / fgets_u_chk.s
blobf88e54c98ade6ed9cf2b1c880f8c79a5294471c3
1 .text
2 .p2align 4,,15
3 .globl __fgets_unlocked_chk
4 .type __fgets_unlocked_chk, @function
5 __fgets_unlocked_chk:
6 .LFB68:
7 testl %edx, %edx
8 jle .L7
9 pushq %r13
10 pushq %r12
11 movslq %edx, %rdx
12 pushq %rbp
13 pushq %rbx
14 subq $1, %rdx
15 movq %rcx, %rbx
16 movq %rsi, %r12
17 movq %rdi, %r13
18 subq $8, %rsp
19 movl (%rcx), %eax
20 movl $1, %r8d
21 movl %eax, %ebp
22 andl $-33, %eax
23 andl $32, %ebp
24 cmpq %rsi, %rdx
25 movl %eax, (%rcx)
26 cmova %rsi, %rdx
27 movl $10, %ecx
28 movq %rdi, %rsi
29 movq %rbx, %rdi
30 call _IO_getline
31 movq %rax, %rcx
32 xorl %eax, %eax
33 movl (%rbx), %edx
34 testq %rcx, %rcx
35 je .L4
36 testb $32, %dl
37 je .L5
38 movq __libc_errno@gottpoff(%rip), %rsi
39 xorl %eax, %eax
40 cmpl $11, %fs:(%rsi)
41 je .L5
42 .L4:
43 orl %edx, %ebp
44 movl %ebp, (%rbx)
45 addq $8, %rsp
46 popq %rbx
47 popq %rbp
48 popq %r12
49 popq %r13
50 ret
51 .p2align 4,,10
52 .p2align 3
53 .L5:
54 cmpq %rcx, %r12
55 jbe .L17
56 movb $0, 0(%r13,%rcx)
57 movl (%rbx), %edx
58 movq %r13, %rax
59 orl %edx, %ebp
60 movl %ebp, (%rbx)
61 addq $8, %rsp
62 popq %rbx
63 popq %rbp
64 popq %r12
65 popq %r13
66 ret
67 .p2align 4,,10
68 .p2align 3
69 .L7:
70 xorl %eax, %eax
71 ret
72 .L17:
73 call __chk_fail
74 .LFE68:
75 .size __fgets_unlocked_chk, .-__fgets_unlocked_chk
76 .hidden __chk_fail
77 .hidden _IO_getline