clarify the purpose of this project
[nyanglibc.git] / inet / inet6_option.shared.s
bloba7ac742afc14439c9f97b3fc3b966f1c3c8f835f
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 .section .gnu.warning.inet6_option_space
7 .previous
8 .section .gnu.warning.inet6_option_init
9 .previous
10 .section .gnu.warning.inet6_option_append
11 .previous
12 .section .gnu.warning.inet6_option_alloc
13 .previous
14 .section .gnu.warning.inet6_option_next
15 .previous
16 .section .gnu.warning.inet6_option_find
17 .previous
18 #NO_APP
19 .p2align 4,,15
20 .type add_pad, @function
21 add_pad:
22 pushq %rbp
23 pushq %rbx
24 movslq %esi, %rbx
25 movq %rdi, %rbp
26 subq $8, %rsp
27 movq (%rdi), %rax
28 addq %rax, %rdi
29 cmpl $1, %ebx
30 je .L9
31 testl %ebx, %ebx
32 jne .L10
33 addq %rax, %rbx
34 movq %rbx, 0(%rbp)
35 addq $8, %rsp
36 popq %rbx
37 popq %rbp
38 ret
39 .p2align 4,,10
40 .p2align 3
41 .L10:
42 leal -2(%rbx), %eax
43 leal -2(%rbx), %edx
44 movb $1, (%rdi)
45 xorl %esi, %esi
46 addq $2, %rdi
47 movb %al, -1(%rdi)
48 movslq %edx, %rdx
49 call __GI_memset@PLT
50 movq 0(%rbp), %rax
51 addq %rax, %rbx
52 movq %rbx, 0(%rbp)
53 addq $8, %rsp
54 popq %rbx
55 popq %rbp
56 ret
57 .p2align 4,,10
58 .p2align 3
59 .L9:
60 movb $0, (%rdi)
61 movq 0(%rbp), %rax
62 addq %rax, %rbx
63 movq %rbx, 0(%rbp)
64 addq $8, %rsp
65 popq %rbx
66 popq %rbp
67 ret
68 .size add_pad, .-add_pad
69 .section .rodata.str1.1,"aMS",@progbits,1
70 .LC0:
71 .string "inet6_option.c"
72 .section .rodata.str1.8,"aMS",@progbits,1
73 .align 8
74 .LC1:
75 .string "((cmsg->cmsg_len - CMSG_LEN (0)) % 8) == 0"
76 .text
77 .p2align 4,,15
78 .type option_alloc, @function
79 option_alloc:
80 leal -4(%rdx), %eax
81 pushq %r12
82 pushq %rbp
83 pushq %rbx
84 andl $-5, %eax
85 je .L12
86 leal -1(%rdx), %eax
87 cmpl $1, %eax
88 ja .L14
89 .L12:
90 cmpl $7, %ecx
91 ja .L14
92 movq (%rdi), %r8
93 movl %r8d, %eax
94 subl $16, %eax
95 je .L24
96 .L15:
97 movl %esi, %ebx
98 leal -1(%rdx), %esi
99 movq %rdi, %rbp
100 andl %esi, %eax
101 subl %eax, %edx
102 andl %esi, %edx
103 leal (%rdx,%rcx), %esi
104 call add_pad
105 movq 0(%rbp), %rdx
106 movslq %ebx, %rsi
107 movq %rbp, %rdi
108 addq %rdx, %rsi
109 leaq 0(%rbp,%rdx), %r12
110 movq %rsi, 0(%rbp)
111 negl %esi
112 andl $7, %esi
113 call add_pad
114 movq 0(%rbp), %rdx
115 testb $7, %dl
116 jne .L25
117 subq $16, %rdx
118 shrq $3, %rdx
119 subl $1, %edx
120 cmpl $255, %edx
121 jg .L14
122 movb %dl, 17(%rbp)
123 movq %r12, %rax
124 popq %rbx
125 popq %rbp
126 popq %r12
128 .p2align 4,,10
129 .p2align 3
130 .L14:
131 xorl %r12d, %r12d
132 movq %r12, %rax
133 popq %rbx
134 popq %rbp
135 popq %r12
137 .p2align 4,,10
138 .p2align 3
139 .L24:
140 addq $2, %r8
141 movl $2, %eax
142 movq %r8, (%rdi)
143 jmp .L15
144 .L25:
145 leaq __PRETTY_FUNCTION__.3901(%rip), %rcx
146 leaq .LC0(%rip), %rsi
147 leaq .LC1(%rip), %rdi
148 movl $204, %edx
149 call __GI___assert_fail
150 .size option_alloc, .-option_alloc
151 .p2align 4,,15
152 .type get_opt_end, @function
153 get_opt_end:
154 cmpq %rdx, %rsi
155 jnb .L31
156 cmpb $0, (%rsi)
157 je .L32
158 leaq 2(%rsi), %rax
159 cmpq %rax, %rdx
160 jb .L31
161 movzbl 1(%rsi), %eax
162 leaq 2(%rsi,%rax), %rax
163 cmpq %rax, %rdx
164 jb .L31
165 movq %rax, (%rdi)
166 xorl %eax, %eax
168 .p2align 4,,10
169 .p2align 3
170 .L32:
171 addq $1, %rsi
172 xorl %eax, %eax
173 movq %rsi, (%rdi)
175 .p2align 4,,10
176 .p2align 3
177 .L31:
178 movl $-1, %eax
180 .size get_opt_end, .-get_opt_end
181 .p2align 4,,15
182 .globl inet6_option_space
183 .type inet6_option_space, @function
184 inet6_option_space:
185 leal 9(%rdi), %eax
186 andl $-8, %eax
187 addl $16, %eax
189 .size inet6_option_space, .-inet6_option_space
190 .p2align 4,,15
191 .globl inet6_option_init
192 .type inet6_option_init, @function
193 inet6_option_init:
194 cmpl $54, %edx
195 je .L38
196 cmpl $59, %edx
197 jne .L37
198 .L38:
199 movq $16, (%rdi)
200 movl $41, 8(%rdi)
201 xorl %eax, %eax
202 movl %edx, 12(%rdi)
203 movq %rdi, (%rsi)
205 .p2align 4,,10
206 .p2align 3
207 .L37:
208 movl $-1, %eax
210 .size inet6_option_init, .-inet6_option_init
211 .p2align 4,,15
212 .globl inet6_option_append
213 .type inet6_option_append, @function
214 inet6_option_append:
215 pushq %rbp
216 pushq %rbx
217 movq %rsi, %rbp
218 movl $1, %ebx
219 subq $8, %rsp
220 cmpb $0, (%rsi)
221 je .L43
222 movzbl 1(%rsi), %ebx
223 addl $2, %ebx
224 .L43:
225 movl %ebx, %esi
226 call option_alloc
227 testq %rax, %rax
228 je .L50
229 cmpl $8, %ebx
230 jnb .L45
231 testb $4, %bl
232 jne .L59
233 testl %ebx, %ebx
234 je .L46
235 movzbl 0(%rbp), %edx
236 testb $2, %bl
237 movb %dl, (%rax)
238 jne .L60
239 .L46:
240 xorl %eax, %eax
241 .L42:
242 addq $8, %rsp
243 popq %rbx
244 popq %rbp
246 .p2align 4,,10
247 .p2align 3
248 .L45:
249 movq 0(%rbp), %rdx
250 leaq 8(%rax), %rdi
251 movq %rbp, %rsi
252 andq $-8, %rdi
253 movq %rdx, (%rax)
254 movl %ebx, %edx
255 movq -8(%rbp,%rdx), %rcx
256 movq %rcx, -8(%rax,%rdx)
257 subq %rdi, %rax
258 leal (%rbx,%rax), %ecx
259 subq %rax, %rsi
260 shrl $3, %ecx
261 movl %ecx, %ecx
262 rep movsq
263 jmp .L46
264 .p2align 4,,10
265 .p2align 3
266 .L60:
267 movzwl -2(%rbp,%rbx), %edx
268 movw %dx, -2(%rax,%rbx)
269 jmp .L46
270 .p2align 4,,10
271 .p2align 3
272 .L59:
273 movl 0(%rbp), %edx
274 movl %edx, (%rax)
275 movl -4(%rbp,%rbx), %edx
276 movl %edx, -4(%rax,%rbx)
277 jmp .L46
278 .p2align 4,,10
279 .p2align 3
280 .L50:
281 movl $-1, %eax
282 jmp .L42
283 .size inet6_option_append, .-inet6_option_append
284 .p2align 4,,15
285 .globl inet6_option_alloc
286 .type inet6_option_alloc, @function
287 inet6_option_alloc:
288 jmp option_alloc
289 .size inet6_option_alloc, .-inet6_option_alloc
290 .p2align 4,,15
291 .globl inet6_option_next
292 .type inet6_option_next, @function
293 inet6_option_next:
294 cmpl $41, 8(%rdi)
295 jne .L74
296 movl 12(%rdi), %eax
297 cmpl $54, %eax
298 je .L69
299 cmpl $59, %eax
300 jne .L74
301 .L69:
302 movq (%rdi), %rax
303 cmpq $17, %rax
304 jbe .L74
305 movzbl 17(%rdi), %edx
306 leaq 8(,%rdx,8), %rdx
307 leaq 16(%rdx), %rcx
308 cmpq %rcx, %rax
309 jb .L74
310 subq $16, %rsp
311 movq %rsi, %rcx
312 movq (%rsi), %rsi
313 leaq 16(%rdi,%rdx), %r8
314 addq $18, %rdi
315 testq %rsi, %rsi
316 je .L77
317 cmpq %rdi, %rsi
318 jb .L65
319 leaq 8(%rsp), %r9
320 movq %r8, %rdx
321 movq %r9, %rdi
322 call get_opt_end
323 testl %eax, %eax
324 jne .L65
325 movq 8(%rsp), %rdi
326 .L68:
327 movq %rdi, (%rcx)
328 movq %rdi, %rsi
329 movq %r8, %rdx
330 movq %r9, %rdi
331 call get_opt_end
332 addq $16, %rsp
334 .p2align 4,,10
335 .p2align 3
336 .L77:
337 movq %rdi, 8(%rsp)
338 leaq 8(%rsp), %r9
339 jmp .L68
340 .p2align 4,,10
341 .p2align 3
342 .L65:
343 movl $-1, %eax
344 addq $16, %rsp
346 .p2align 4,,10
347 .p2align 3
348 .L74:
349 movl $-1, %eax
351 .size inet6_option_next, .-inet6_option_next
352 .p2align 4,,15
353 .globl inet6_option_find
354 .type inet6_option_find, @function
355 inet6_option_find:
356 cmpl $41, 8(%rdi)
357 jne .L92
358 movl 12(%rdi), %eax
359 cmpl $54, %eax
360 je .L87
361 cmpl $59, %eax
362 jne .L92
363 .L87:
364 movq (%rdi), %rax
365 cmpq $17, %rax
366 jbe .L92
367 movzbl 17(%rdi), %ecx
368 leaq 8(,%rcx,8), %rcx
369 leaq 16(%rcx), %r8
370 cmpq %r8, %rax
371 jb .L92
372 subq $16, %rsp
373 movq %rsi, %r11
374 movq (%rsi), %rsi
375 leaq 16(%rdi,%rcx), %r9
376 movl %edx, %r8d
377 leaq 18(%rdi), %rcx
378 testq %rsi, %rsi
379 je .L96
380 cmpq %rsi, %rcx
381 ja .L81
382 leaq 8(%rsp), %r10
383 movq %r9, %rdx
384 movq %r10, %rdi
385 call get_opt_end
386 testl %eax, %eax
387 je .L95
388 jmp .L81
389 .p2align 4,,10
390 .p2align 3
391 .L97:
392 movzbl (%rcx), %edi
393 cmpl %r8d, %edi
394 je .L85
395 .L95:
396 movq 8(%rsp), %rcx
397 .L86:
398 movq %r9, %rdx
399 movq %rcx, %rsi
400 movq %r10, %rdi
401 call get_opt_end
402 testl %eax, %eax
403 je .L97
404 .L81:
405 movl $-1, %eax
406 addq $16, %rsp
408 .p2align 4,,10
409 .p2align 3
410 .L85:
411 movq %rcx, (%r11)
412 addq $16, %rsp
414 .p2align 4,,10
415 .p2align 3
416 .L96:
417 movq %rcx, 8(%rsp)
418 leaq 8(%rsp), %r10
419 jmp .L86
420 .p2align 4,,10
421 .p2align 3
422 .L92:
423 movl $-1, %eax
425 .size inet6_option_find, .-inet6_option_find
426 .section .rodata.str1.8
427 .align 8
428 .type __PRETTY_FUNCTION__.3901, @object
429 .size __PRETTY_FUNCTION__.3901, 13
430 __PRETTY_FUNCTION__.3901:
431 .string "option_alloc"
432 .section .gnu.warning.inet6_option_find
433 #,"a",@progbits
434 .align 32
435 .type __evoke_link_warning_inet6_option_find, @object
436 .size __evoke_link_warning_inet6_option_find, 59
437 __evoke_link_warning_inet6_option_find:
438 .string "inet6_option_find is obsolete, use the RFC 3542 interfaces"
439 .section .gnu.warning.inet6_option_next
440 #,"a",@progbits
441 .align 32
442 .type __evoke_link_warning_inet6_option_next, @object
443 .size __evoke_link_warning_inet6_option_next, 59
444 __evoke_link_warning_inet6_option_next:
445 .string "inet6_option_next is obsolete, use the RFC 3542 interfaces"
446 .section .gnu.warning.inet6_option_alloc
447 #,"a",@progbits
448 .align 32
449 .type __evoke_link_warning_inet6_option_alloc, @object
450 .size __evoke_link_warning_inet6_option_alloc, 60
451 __evoke_link_warning_inet6_option_alloc:
452 .string "inet6_option_alloc is obsolete, use the RFC 3542 interfaces"
453 .section .gnu.warning.inet6_option_append
454 #,"a",@progbits
455 .align 32
456 .type __evoke_link_warning_inet6_option_append, @object
457 .size __evoke_link_warning_inet6_option_append, 61
458 __evoke_link_warning_inet6_option_append:
459 .string "inet6_option_append is obsolete, use the RFC 3542 interfaces"
460 .section .gnu.warning.inet6_option_init
461 #,"a",@progbits
462 .align 32
463 .type __evoke_link_warning_inet6_option_init, @object
464 .size __evoke_link_warning_inet6_option_init, 59
465 __evoke_link_warning_inet6_option_init:
466 .string "inet6_option_init is obsolete, use the RFC 3542 interfaces"
467 .section .gnu.warning.inet6_option_space
468 #,"a",@progbits
469 .align 32
470 .type __evoke_link_warning_inet6_option_space, @object
471 .size __evoke_link_warning_inet6_option_space, 60
472 __evoke_link_warning_inet6_option_space:
473 .string "inet6_option_space is obsolete, use the RFC 3542 interfaces"