clarify the purpose of this project
[nyanglibc.git] / libio / wmemstream.shared.s
blobfdd56808cd7ab4d412c32f8dde3d3a5a413ebb10
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 _IO_wmem_sync, @function
9 _IO_wmem_sync:
10 movq 160(%rdi), %rax
11 pushq %rbx
12 movq %rdi, %rbx
13 movq 40(%rax), %rsi
14 cmpq %rsi, 32(%rax)
15 je .L5
16 .L2:
17 movq 24(%rax), %rcx
18 movq 240(%rbx), %rdx
19 movq %rcx, (%rdx)
20 movq 32(%rax), %rdx
21 subq 24(%rax), %rdx
22 movq 248(%rbx), %rcx
23 movq %rdx, %rax
24 sarq $2, %rax
25 movq %rax, (%rcx)
26 xorl %eax, %eax
27 popq %rbx
28 ret
29 .p2align 4,,10
30 .p2align 3
31 .L5:
32 xorl %esi, %esi
33 call _IO_wstr_overflow@PLT
34 movq 160(%rbx), %rax
35 subq $4, 32(%rax)
36 jmp .L2
37 .size _IO_wmem_sync, .-_IO_wmem_sync
38 .p2align 4,,15
39 .type _IO_wmem_finish, @function
40 _IO_wmem_finish:
41 pushq %rbp
42 pushq %rbx
43 movq %rdi, %rbx
44 subq $8, %rsp
45 movq 160(%rdi), %rax
46 movq 240(%rbx), %rbp
47 movq 24(%rax), %rdi
48 movq 32(%rax), %rax
49 subq %rdi, %rax
50 sarq $2, %rax
51 leaq 4(,%rax,4), %rsi
52 call realloc@PLT
53 movq %rax, 0(%rbp)
54 movq 240(%rbx), %rax
55 movq (%rax), %rcx
56 testq %rcx, %rcx
57 je .L7
58 movq 160(%rbx), %rdx
59 movq 32(%rdx), %rax
60 subq 24(%rdx), %rax
61 movl $0, (%rcx,%rax)
62 movq 248(%rbx), %rcx
63 sarq $2, %rax
64 movq %rax, (%rcx)
65 movq $0, 48(%rdx)
66 .L7:
67 addq $8, %rsp
68 movq %rbx, %rdi
69 xorl %esi, %esi
70 popq %rbx
71 popq %rbp
72 jmp _IO_wstr_finish@PLT
73 .size _IO_wmem_finish, .-_IO_wmem_finish
74 .p2align 4,,15
75 .globl open_wmemstream
76 .type open_wmemstream, @function
77 open_wmemstream:
78 pushq %r13
79 pushq %r12
80 movq %rdi, %r13
81 pushq %rbp
82 pushq %rbx
83 movl $504, %edi
84 movq %rsi, %r12
85 subq $8, %rsp
86 call malloc@PLT
87 testq %rax, %rax
88 je .L15
89 movq %rax, %rbx
90 leaq 256(%rax), %rax
91 movl $8192, %esi
92 movl $1, %edi
93 movq %rax, 136(%rbx)
94 call calloc@PLT
95 testq %rax, %rax
96 movq %rax, %rbp
97 je .L17
98 leaq 272(%rbx), %rcx
99 leaq _IO_wmem_jumps(%rip), %r8
100 xorl %edx, %edx
101 xorl %esi, %esi
102 movq %rbx, %rdi
103 call _IO_no_init@PLT
104 movl $1, %esi
105 movq %rbx, %rdi
106 call _IO_fwide@PLT
107 movl $2048, %edx
108 movq %rbp, %rcx
109 movq %rbp, %rsi
110 movq %rbx, %rdi
111 call _IO_wstr_init_static@PLT
112 movq malloc@GOTPCREL(%rip), %rdx
113 movl 116(%rbx), %eax
114 movq %r13, 240(%rbx)
115 movq %r12, 248(%rbx)
116 movq %rdx, 224(%rbx)
117 movq free@GOTPCREL(%rip), %rdx
118 andl $-9, %eax
119 orb $-128, %al
120 movl %eax, 116(%rbx)
121 movq %rdx, 232(%rbx)
122 .L12:
123 addq $8, %rsp
124 movq %rbx, %rax
125 popq %rbx
126 popq %rbp
127 popq %r12
128 popq %r13
130 .p2align 4,,10
131 .p2align 3
132 .L15:
133 xorl %ebx, %ebx
134 jmp .L12
135 .p2align 4,,10
136 .p2align 3
137 .L17:
138 movq %rbx, %rdi
139 xorl %ebx, %ebx
140 call free@PLT
141 jmp .L12
142 .size open_wmemstream, .-open_wmemstream
143 .section __libc_IO_vtables,"aw",@progbits
144 .align 32
145 .type _IO_wmem_jumps, @object
146 .size _IO_wmem_jumps, 168
147 _IO_wmem_jumps:
148 .quad 0
149 .quad 0
150 .quad _IO_wmem_finish
151 .quad _IO_wstr_overflow
152 .quad _IO_wstr_underflow
153 .quad __GI__IO_wdefault_uflow
154 .quad _IO_wstr_pbackfail
155 .quad __GI__IO_wdefault_xsputn
156 .quad __GI__IO_wdefault_xsgetn
157 .quad _IO_wstr_seekoff
158 .quad _IO_default_seekpos
159 .quad _IO_default_setbuf
160 .quad _IO_wmem_sync
161 .quad __GI__IO_wdefault_doallocate
162 .quad _IO_default_read
163 .quad _IO_default_write
164 .quad _IO_default_seek
165 .quad _IO_default_sync
166 .quad _IO_default_stat
167 .quad _IO_default_showmanyc
168 .quad _IO_default_imbue