clarify the purpose of this project
[nyanglibc.git] / io / ftw.s
blob70c7a6c85dc4aa66357042c3aa4ce69d3a69fb3d
1 .text
2 .p2align 4,,15
3 .type object_compare, @function
4 object_compare:
5 .LFB49:
6 movq 8(%rsi), %rdx
7 movq 8(%rdi), %rcx
8 xorl %eax, %eax
9 cmpq %rdx, %rcx
10 setb %dl
11 seta %al
12 movzbl %dl, %edx
13 subl %edx, %eax
14 jne .L1
15 movq (%rsi), %rdx
16 movq (%rdi), %rcx
17 xorl %eax, %eax
18 cmpq %rdx, %rcx
19 setb %dl
20 seta %al
21 movzbl %dl, %edx
22 subl %edx, %eax
23 .L1:
24 rep ret
25 .LFE49:
26 .size object_compare, .-object_compare
27 .p2align 4,,15
28 .type add_object.isra.1, @function
29 add_object.isra.1:
30 .LFB59:
31 pushq %r12
32 pushq %rbp
33 movq %rsi, %r12
34 pushq %rbx
35 movq %rdi, %rbx
36 movl $16, %edi
37 movq %rdx, %rbp
38 call malloc@PLT
39 testq %rax, %rax
40 je .L6
41 movq (%r12), %rdx
42 leaq 80(%rbx), %rsi
43 movq %rax, %rdi
44 movq %rdx, (%rax)
45 movq 0(%rbp), %rdx
46 movq %rdx, 8(%rax)
47 leaq object_compare(%rip), %rdx
48 call __tsearch
49 testq %rax, %rax
50 sete %al
51 movzbl %al, %eax
52 negl %eax
53 .L4:
54 popq %rbx
55 popq %rbp
56 popq %r12
57 ret
58 .p2align 4,,10
59 .p2align 3
60 .L6:
61 movl $-1, %eax
62 jmp .L4
63 .LFE59:
64 .size add_object.isra.1, .-add_object.isra.1
65 .p2align 4,,15
66 .type process_entry.isra.3, @function
67 process_entry.isra.3:
68 .LFB61:
69 pushq %r13
70 pushq %r12
71 movq %rcx, %r13
72 pushq %rbp
73 pushq %rbx
74 movq %rsi, %r12
75 movq %rdi, %rbx
76 movq %rdx, %rbp
77 subq $168, %rsp
78 cmpb $46, (%rdx)
79 je .L53
80 .L9:
81 movslq 40(%rbx), %rax
82 movq 24(%rbx), %rdi
83 leaq 2(%rax,%r13), %rsi
84 cmpq 32(%rbx), %rsi
85 jbe .L13
86 addq %rsi, %rsi
87 movq %rsi, 32(%rbx)
88 call realloc@PLT
89 testq %rax, %rax
90 movq %rax, %rdi
91 je .L20
92 movq %rax, 24(%rbx)
93 movslq 40(%rbx), %rax
94 .L13:
95 addq %rax, %rdi
96 movq %r13, %rdx
97 movq %rbp, %rsi
98 call __mempcpy@PLT
99 movb $0, (%rax)
100 movl 8(%r12), %edi
101 cmpl $-1, %edi
102 jne .L54
103 movl 48(%rbx), %eax
104 testb $4, %al
105 jne .L17
106 movq 24(%rbx), %rbp
107 .L17:
108 leaq 16(%rsp), %r13
109 testb $1, %al
110 movq %rbp, %rdi
111 movq %r13, %rsi
112 je .L18
113 call __lstat@PLT
114 .L16:
115 testl %eax, %eax
116 js .L55
117 .L19:
118 movl 40(%rsp), %eax
119 movl 48(%rbx), %ecx
120 andl $61440, %eax
121 movl %ecx, %edx
122 andl $2, %edx
123 cmpl $16384, %eax
124 je .L26
125 cmpl $40960, %eax
126 sete %al
127 movzbl %al, %eax
128 sall $2, %eax
129 .L27:
130 testl %edx, %edx
131 jne .L34
132 .L52:
133 cltq
134 salq $2, %rax
135 .L29:
136 movq 56(%rbx), %rdx
137 leaq 40(%rbx), %rcx
138 movq 24(%rbx), %rdi
139 movq %r13, %rsi
140 movl (%rdx,%rax), %edx
141 call *64(%rbx)
142 .L31:
143 testb $16, 48(%rbx)
144 je .L8
145 cmpl $2, %eax
146 jne .L8
147 .L12:
148 xorl %eax, %eax
149 .L8:
150 addq $168, %rsp
151 popq %rbx
152 popq %rbp
153 popq %r12
154 popq %r13
156 .p2align 4,,10
157 .p2align 3
158 .L54:
159 movl 48(%rbx), %ecx
160 leaq 16(%rsp), %r13
161 movq %rbp, %rsi
162 movq %r13, %rdx
163 sall $8, %ecx
164 andl $256, %ecx
165 call __fstatat@PLT
166 testl %eax, %eax
167 jns .L19
168 .L55:
169 movq __libc_errno@gottpoff(%rip), %rax
170 movl %fs:(%rax), %eax
171 cmpl $13, %eax
172 je .L37
173 cmpl $2, %eax
174 je .L37
175 .L20:
176 addq $168, %rsp
177 movl $-1, %eax
178 popq %rbx
179 popq %rbp
180 popq %r12
181 popq %r13
183 .p2align 4,,10
184 .p2align 3
185 .L53:
186 movzbl 1(%rdx), %eax
187 testb %al, %al
188 je .L12
189 cmpb $46, %al
190 jne .L9
191 cmpb $0, 2(%rdx)
192 jne .L9
193 jmp .L12
194 .p2align 4,,10
195 .p2align 3
196 .L18:
197 call __stat@PLT
198 jmp .L16
199 .p2align 4,,10
200 .p2align 3
201 .L37:
202 testb $1, 48(%rbx)
203 jne .L22
204 movl 8(%r12), %edi
205 cmpl $-1, %edi
206 je .L23
207 movl $256, %ecx
208 movq %r13, %rdx
209 movq %rbp, %rsi
210 call __fstatat@PLT
211 .L24:
212 testl %eax, %eax
213 jne .L22
214 movl 40(%rsp), %eax
215 andl $61440, %eax
216 cmpl $40960, %eax
217 jne .L22
218 movl 48(%rbx), %edx
219 movl $6, %eax
220 andl $2, %edx
221 jmp .L27
222 .p2align 4,,10
223 .p2align 3
224 .L26:
225 testl %edx, %edx
226 je .L28
227 movq 16(%rsp), %rax
228 cmpq %rax, 72(%rbx)
229 jne .L12
230 .L28:
231 andl $1, %ecx
232 je .L30
233 .L32:
234 movq %r12, %rdx
235 movq %r13, %rsi
236 movq %rbx, %rdi
237 call ftw_dir
238 jmp .L31
239 .p2align 4,,10
240 .p2align 3
241 .L22:
242 movl $12, %eax
243 jmp .L29
244 .p2align 4,,10
245 .p2align 3
246 .L34:
247 movq 72(%rbx), %rcx
248 cmpq %rcx, 16(%rsp)
249 jne .L12
250 jmp .L52
251 .p2align 4,,10
252 .p2align 3
253 .L23:
254 movq %r13, %rsi
255 movq %rbp, %rdi
256 call __lstat@PLT
257 jmp .L24
258 .p2align 4,,10
259 .p2align 3
260 .L30:
261 movq 16(%rsp), %rax
262 leaq 80(%rbx), %rsi
263 leaq object_compare(%rip), %rdx
264 movq %rsp, %rdi
265 movq %rax, (%rsp)
266 movq 24(%rsp), %rax
267 movq %rax, 8(%rsp)
268 call __tfind
269 testq %rax, %rax
270 jne .L12
271 leaq 8(%r13), %rdx
272 movq %r13, %rsi
273 movq %rbx, %rdi
274 call add_object.isra.1
275 testl %eax, %eax
276 je .L32
277 jmp .L31
278 .LFE61:
279 .size process_entry.isra.3, .-process_entry.isra.3
280 .section .rodata.str1.1,"aMS",@progbits,1
281 .LC0:
282 .string "."
283 .section .rodata.str1.8,"aMS",@progbits,1
284 .align 8
285 .LC1:
286 .string "../sysdeps/wordsize-64/../../io/ftw.c"
287 .section .rodata.str1.1
288 .LC2:
289 .string "startp != data->dirbuf"
290 .LC3:
291 .string "dir.content == NULL"
292 .LC4:
293 .string "/"
294 .LC5:
295 .string ".."
296 .text
297 .p2align 4,,15
298 .type ftw_dir, @function
299 ftw_dir:
300 .LFB54:
301 pushq %r15
302 pushq %r14
303 pushq %r13
304 pushq %r12
305 movq %rdi, %r12
306 pushq %rbp
307 pushq %rbx
308 subq $88, %rsp
309 movl 40(%rdi), %ecx
310 testq %rdx, %rdx
311 movq %rsi, 16(%rsp)
312 movq %rdx, 32(%rsp)
313 movl %ecx, 44(%rsp)
314 je .L57
315 movq %rdx, %rax
316 movq 8(%rdi), %rdx
317 addq $8, %rax
318 movq %rax, 24(%rsp)
319 movq (%rdi), %rax
320 movq (%rax,%rdx,8), %rbx
321 testq %rbx, %rbx
322 je .L58
323 .L105:
324 movl $1024, %edi
325 call malloc@PLT
326 testq %rax, %rax
327 movq %rax, %r15
328 je .L62
329 movq (%rbx), %rax
330 xorl %ebp, %ebp
331 movl $1024, %r14d
332 movq %rax, (%rsp)
333 jmp .L60
334 .p2align 4,,10
335 .p2align 3
336 .L63:
337 leaq 19(%rax), %rbx
338 movq %rbx, %rdi
339 call strlen
340 leaq (%rax,%rbp), %r13
341 movq %rax, %rdx
342 leaq 2(%r13), %rax
343 cmpq %r14, %rax
344 jb .L61
345 leaq (%rdx,%rdx), %rax
346 movl $1024, %ecx
347 movq %r15, %rdi
348 movq %rdx, 8(%rsp)
349 cmpq $1024, %rax
350 cmovb %rcx, %rax
351 addq %rax, %r14
352 movq %r14, %rsi
353 call realloc@PLT
354 testq %rax, %rax
355 movq 8(%rsp), %rdx
356 je .L165
357 movq %rax, %r15
358 .L61:
359 leaq (%r15,%rbp), %rdi
360 movq %rbx, %rsi
361 leaq 1(%r13), %rbp
362 call __mempcpy@PLT
363 movb $0, (%rax)
364 .L60:
365 movq (%rsp), %rdi
366 call __readdir64
367 testq %rax, %rax
368 jne .L63
369 movq 8(%r12), %rdx
370 movq (%r12), %rax
371 leaq 1(%rbp), %rsi
372 movb $0, (%r15,%rbp)
373 movq %r15, %rdi
374 leaq (%rax,%rdx,8), %rbx
375 movq (%rbx), %r13
376 call realloc@PLT
377 movq %rax, 16(%r13)
378 movq (%rbx), %rax
379 cmpq $0, 16(%rax)
380 je .L165
381 movq (%rsp), %rdi
382 call __closedir
383 movq 8(%r12), %rdx
384 movq (%r12), %rax
385 cmpq $0, 24(%rsp)
386 movq 24(%r12), %rdi
387 leaq (%rax,%rdx,8), %rax
388 movq (%rax), %rdx
389 movq $0, (%rdx)
390 movl $-1, 8(%rdx)
391 movq $0, (%rax)
392 jne .L107
393 .p2align 4,,10
394 .p2align 3
395 .L65:
396 testb $4, 48(%r12)
397 je .L68
398 movslq 40(%r12), %rax
399 addq %rax, %rdi
400 leaq .LC0(%rip), %rax
401 cmpb $0, (%rdi)
402 cmove %rax, %rdi
403 .L68:
404 call __opendir
405 movq %rax, 48(%rsp)
406 .L67:
407 testq %rax, %rax
408 je .L62
409 .L66:
410 movq %rax, %rdi
411 leaq 48(%rsp), %rbx
412 call __dirfd@PLT
413 movq (%r12), %rdx
414 movl %eax, 56(%rsp)
415 movq 8(%r12), %rax
416 movq $0, 64(%rsp)
417 movq %rbx, (%rdx,%rax,8)
418 addq $1, %rax
419 cmpq 16(%r12), %rax
420 movq %rax, 8(%r12)
421 jne .L69
422 movq $0, 8(%r12)
423 .L69:
424 movl 48(%r12), %eax
425 testb $8, %al
426 jne .L72
427 leaq 40(%r12), %rcx
428 movq 24(%r12), %rdi
429 movl $1, %edx
430 movq 16(%rsp), %rsi
431 call *64(%r12)
432 testl %eax, %eax
433 movl %eax, %ebp
434 jne .L73
435 movl 48(%r12), %eax
436 .L72:
437 testb $4, %al
438 jne .L75
439 .L78:
440 addl $1, 44(%r12)
441 movq 24(%r12), %rbp
442 xorl %esi, %esi
443 movq %rbp, %rdi
444 call __rawmemchr
445 cmpq %rax, %rbp
446 je .L166
447 cmpb $47, -1(%rax)
448 je .L79
449 movb $47, (%rax)
450 movq 24(%r12), %rbp
451 addq $1, %rax
452 .L79:
453 subq %rbp, %rax
454 movl %eax, 40(%r12)
455 jmp .L80
456 .p2align 4,,10
457 .p2align 3
458 .L168:
459 call __readdir64
460 testq %rax, %rax
461 je .L167
462 leaq 19(%rax), %rbp
463 movq %rbp, %rdi
464 call strlen
465 movq %rbp, %rdx
466 movq %rax, %rcx
467 movq %rbx, %rsi
468 movq %r12, %rdi
469 call process_entry.isra.3
470 testl %eax, %eax
471 movl %eax, %ebp
472 jne .L81
473 .L80:
474 movq 48(%rsp), %rdi
475 testq %rdi, %rdi
476 jne .L168
477 movq 64(%rsp), %rax
478 movq %rax, %r13
479 .L103:
480 cmpb $0, (%rax)
481 jne .L91
482 .L88:
483 xorl %r13d, %r13d
484 xorl %ebp, %ebp
485 jmp .L90
486 .p2align 4,,10
487 .p2align 3
488 .L165:
489 movq %r15, %rdi
490 call free@PLT
491 .L62:
492 movq __libc_errno@gottpoff(%rip), %rax
493 cmpl $13, %fs:(%rax)
494 jne .L70
495 leaq 40(%r12), %rcx
496 movq 24(%r12), %rdi
497 movl $2, %edx
498 movq 16(%rsp), %rsi
499 call *64(%r12)
500 movl %eax, %ebp
501 .L56:
502 addq $88, %rsp
503 movl %ebp, %eax
504 popq %rbx
505 popq %rbp
506 popq %r12
507 popq %r13
508 popq %r14
509 popq %r15
511 .p2align 4,,10
512 .p2align 3
513 .L58:
514 movq 24(%rdi), %rdi
515 .L107:
516 movq 24(%rsp), %rax
517 movl (%rax), %eax
518 cmpl $-1, %eax
519 je .L65
520 movslq 40(%r12), %rsi
521 movl $67584, %edx
522 addq %rdi, %rsi
523 movl %eax, %edi
524 xorl %eax, %eax
525 call __openat64_nocancel
526 cmpl $-1, %eax
527 movl %eax, %ebx
528 movq $0, 48(%rsp)
529 je .L62
530 movl %eax, %edi
531 call __fdopendir
532 testq %rax, %rax
533 movq %rax, 48(%rsp)
534 jne .L66
535 movl %ebx, %edi
536 call __close_nocancel
537 movq 48(%rsp), %rax
538 jmp .L67
539 .p2align 4,,10
540 .p2align 3
541 .L57:
542 movq 8(%rdi), %rdx
543 movq (%rdi), %rax
544 movq $0, 24(%rsp)
545 movq (%rax,%rdx,8), %rbx
546 testq %rbx, %rbx
547 jne .L105
548 movq 24(%r12), %rdi
549 jmp .L65
550 .p2align 4,,10
551 .p2align 3
552 .L75:
553 movq 48(%rsp), %rdi
554 call __dirfd@PLT
555 movl %eax, %edi
556 call __fchdir
557 testl %eax, %eax
558 jns .L78
559 movl $-1, %ebp
560 .p2align 4,,10
561 .p2align 3
562 .L73:
563 movq __libc_errno@gottpoff(%rip), %rbx
564 movq 48(%rsp), %rdi
565 movl %fs:(%rbx), %r13d
566 call __closedir
567 movq 8(%r12), %rdx
568 movl %r13d, %fs:(%rbx)
569 leaq -1(%rdx), %rax
570 testq %rdx, %rdx
571 movq %rax, 8(%r12)
572 jne .L74
573 movq 16(%r12), %rax
574 subq $1, %rax
575 movq %rax, 8(%r12)
576 .L74:
577 movq (%r12), %rdx
578 movq $0, (%rdx,%rax,8)
579 jmp .L56
580 .p2align 4,,10
581 .p2align 3
582 .L89:
583 cmpb $0, 0(%r13)
584 je .L169
585 .L91:
586 movq %r13, %rdi
587 call strlen@PLT
588 movq %r13, %rdx
589 movq %rax, %rcx
590 movq %rbx, %rsi
591 movq %r12, %rdi
592 movq %rax, %r14
593 call process_entry.isra.3
594 testl %eax, %eax
595 movl %eax, %ebp
596 leaq 1(%r13,%r14), %r13
597 je .L89
598 cmpl $3, %eax
599 movq 64(%rsp), %rax
600 sete %r13b
601 .L90:
602 movq __libc_errno@gottpoff(%rip), %rbx
603 movq %rax, %rdi
604 movl %fs:(%rbx), %r14d
605 call free@PLT
606 movl %r14d, %fs:(%rbx)
607 jmp .L87
608 .p2align 4,,10
609 .p2align 3
610 .L167:
611 movq 48(%rsp), %rdi
612 movq 64(%rsp), %rax
613 testq %rdi, %rdi
614 movq %rax, %r13
615 je .L103
616 xorl %ebp, %ebp
617 .L104:
618 movq __libc_errno@gottpoff(%rip), %rbx
619 testq %rax, %rax
620 movl %fs:(%rbx), %r13d
621 jne .L170
622 call __closedir
623 movq 8(%r12), %rdx
624 movl $-1, 56(%rsp)
625 movl %r13d, %fs:(%rbx)
626 leaq -1(%rdx), %rax
627 testq %rdx, %rdx
628 movq %rax, 8(%r12)
629 jne .L86
630 movq 16(%r12), %rax
631 subq $1, %rax
632 movq %rax, 8(%r12)
633 .L86:
634 movq (%r12), %rdx
635 cmpl $3, %ebp
636 sete %r13b
637 movq $0, (%rdx,%rax,8)
638 .L87:
639 movslq 40(%r12), %rax
640 testb $16, 48(%r12)
641 movq 24(%r12), %rdx
642 leaq -1(%rdx,%rax), %rax
643 je .L113
644 testb %r13b, %r13b
645 jne .L92
646 .L113:
647 movb $0, (%rax)
648 movl 44(%rsp), %eax
649 subl $1, 44(%r12)
650 testl %ebp, %ebp
651 movl %eax, 40(%r12)
652 je .L102
653 .L94:
654 cmpq $0, 32(%rsp)
655 je .L56
656 movl 48(%r12), %eax
657 testb $4, %al
658 je .L56
659 testl %ebp, %ebp
660 je .L97
661 testb $16, %al
662 je .L56
663 leal 1(%rbp), %eax
664 andl $-3, %eax
665 je .L56
666 .L96:
667 movq 32(%rsp), %rax
668 movq (%rax), %rdi
669 testq %rdi, %rdi
670 je .L101
671 call __dirfd@PLT
672 movl %eax, %edi
673 call __fchdir
674 testl %eax, %eax
675 je .L56
676 .L101:
677 cmpl $1, 40(%r12)
678 je .L171
679 leaq .LC5(%rip), %rdi
680 call __chdir
681 testl %eax, %eax
682 jns .L56
683 .L70:
684 movl $-1, %ebp
685 jmp .L56
686 .L92:
687 movb $0, (%rax)
688 movl 44(%rsp), %eax
689 subl $1, 44(%r12)
690 movl %eax, 40(%r12)
691 .L102:
692 movl 48(%r12), %eax
693 movl %eax, %ebp
694 andl $8, %ebp
695 je .L172
696 leaq 40(%r12), %rcx
697 movq 24(%r12), %rdi
698 movl $5, %edx
699 movq 16(%rsp), %rsi
700 call *64(%r12)
701 movl %eax, %ebp
702 jmp .L94
703 .p2align 4,,10
704 .p2align 3
705 .L81:
706 movq 48(%rsp), %rdi
707 movq 64(%rsp), %rax
708 testq %rdi, %rdi
709 jne .L104
710 cmpl $3, %ebp
711 sete %r13b
712 jmp .L90
713 .p2align 4,,10
714 .p2align 3
715 .L172:
716 cmpq $0, 32(%rsp)
717 je .L56
718 andl $4, %eax
719 movl %eax, %ebp
720 je .L56
721 .L97:
722 xorl %ebp, %ebp
723 jmp .L96
724 .L169:
725 movq 64(%rsp), %rax
726 jmp .L88
727 .L171:
728 leaq .LC4(%rip), %rdi
729 call __chdir
730 testl %eax, %eax
731 jns .L56
732 jmp .L70
733 .L166:
734 leaq __PRETTY_FUNCTION__.9322(%rip), %rcx
735 leaq .LC1(%rip), %rsi
736 leaq .LC2(%rip), %rdi
737 movl $534, %edx
738 call __assert_fail
739 .L170:
740 leaq __PRETTY_FUNCTION__.9322(%rip), %rcx
741 leaq .LC1(%rip), %rsi
742 leaq .LC3(%rip), %rdi
743 movl $556, %edx
744 call __assert_fail
745 .LFE54:
746 .size ftw_dir, .-ftw_dir
747 .p2align 4,,15
748 .type ftw_startup, @function
749 ftw_startup:
750 .LFB55:
751 pushq %r15
752 pushq %r14
753 pushq %r13
754 pushq %r12
755 pushq %rbp
756 pushq %rbx
757 subq $264, %rsp
758 cmpb $0, (%rdi)
759 je .L234
760 testl %ecx, %ecx
761 movl $1, %r13d
762 movl %r8d, %ebx
763 cmovg %ecx, %r13d
764 movq %rdx, %r12
765 movl %esi, %ebp
766 movslq %r13d, %r13
767 movq %rdi, %r14
768 movq $0, 24(%rsp)
769 movq %r13, 32(%rsp)
770 call strlen
771 addq %rax, %rax
772 movl $4096, %edx
773 cmpq $4096, %rax
774 cmovb %rdx, %rax
775 salq $3, %r13
776 leaq 0(%r13,%rax), %rdi
777 movq %rax, 48(%rsp)
778 call malloc@PLT
779 testq %rax, %rax
780 movq %rax, 16(%rsp)
781 je .L206
782 movq %r13, %rdx
783 xorl %esi, %esi
784 movq %rax, %rdi
785 call memset@PLT
786 addq %rax, %r13
787 movq %r14, %rsi
788 movq %r13, %rdi
789 movq %r13, 40(%rsp)
790 call __stpcpy@PLT
791 leaq 1(%r13), %rcx
792 movq %rax, %r9
793 cmpq %rcx, %rax
794 jbe .L208
795 cmpb $47, -1(%rax)
796 je .L177
797 jmp .L208
798 .p2align 4,,10
799 .p2align 3
800 .L236:
801 cmpb $47, -1(%r9)
802 jne .L235
803 .L177:
804 subq $1, %r9
805 cmpq %rcx, %r9
806 jne .L236
807 .L176:
808 cmpq %rcx, %r13
809 movb $0, (%rcx)
810 movl $0, 60(%rsp)
811 jb .L233
812 jmp .L178
813 .p2align 4,,10
814 .p2align 3
815 .L237:
816 subq $1, %rcx
817 cmpq %rcx, %r13
818 je .L209
819 .L233:
820 cmpb $47, -1(%rcx)
821 jne .L237
822 .L178:
823 leaq ftw_arr(%rip), %rax
824 leaq nftw_arr(%rip), %rdx
825 subq %r13, %rcx
826 testl %ebp, %ebp
827 movl %ecx, 56(%rsp)
828 movl %ebx, 64(%rsp)
829 cmovne %rdx, %rax
830 testb $4, %bl
831 movq %r12, 80(%rsp)
832 movq %rax, 72(%rsp)
833 movq $0, 96(%rsp)
834 jne .L238
835 movq __libc_errno@gottpoff(%rip), %rbp
836 xorl %r14d, %r14d
837 movl $-1, %r15d
838 .L191:
839 leaq 112(%rsp), %rax
840 testb $1, %bl
841 movq %r13, %rdi
842 movq %rax, 8(%rsp)
843 movq %rax, %rsi
844 je .L192
845 call __lstat@PLT
846 testl %eax, %eax
847 js .L193
848 movl 136(%rsp), %eax
849 andl $61440, %eax
850 cmpl $16384, %eax
851 je .L239
852 .L204:
853 cmpl $40960, %eax
854 movq 72(%rsp), %rdx
855 leaq 56(%rsp), %rcx
856 sete %al
857 movq 8(%rsp), %rsi
858 movq 40(%rsp), %rdi
859 movzbl %al, %eax
860 salq $4, %rax
861 movl (%rdx,%rax), %edx
862 call *80(%rsp)
863 movl %eax, %r13d
864 .L199:
865 andl $16, %ebx
866 movl %fs:0(%rbp), %r12d
867 je .L190
868 leal -2(%r13), %eax
869 cmpl $1, %eax
870 movl $0, %eax
871 cmovbe %eax, %r13d
872 cmpl $-1, %r15d
873 jne .L240
874 .p2align 4,,10
875 .p2align 3
876 .L201:
877 testq %r14, %r14
878 je .L183
879 movq %r14, %rdi
880 call __chdir
881 movq %r14, %rdi
882 call free@PLT
883 movl %r12d, %fs:0(%rbp)
884 jmp .L183
885 .p2align 4,,10
886 .p2align 3
887 .L192:
888 call __stat@PLT
889 testl %eax, %eax
890 jns .L195
891 movl %fs:0(%rbp), %r12d
892 cmpl $2, %r12d
893 jne .L196
894 movq 8(%rsp), %rsi
895 movq %r13, %rdi
896 call __lstat@PLT
897 testl %eax, %eax
898 jne .L193
899 movl 136(%rsp), %eax
900 andl $61440, %eax
901 cmpl $40960, %eax
902 jne .L193
903 movq 72(%rsp), %rax
904 leaq 56(%rsp), %rcx
905 movq 8(%rsp), %rsi
906 movq 40(%rsp), %rdi
907 movl 24(%rax), %edx
908 call *80(%rsp)
909 movl %eax, %r13d
910 jmp .L199
911 .p2align 4,,10
912 .p2align 3
913 .L209:
914 movq %r13, %rcx
915 jmp .L178
916 .p2align 4,,10
917 .p2align 3
918 .L235:
919 movq %r9, %rcx
920 jmp .L176
921 .p2align 4,,10
922 .p2align 3
923 .L238:
924 leaq .LC0(%rip), %rdi
925 xorl %eax, %eax
926 movl $65536, %esi
927 call __open
928 cmpl $-1, %eax
929 movl %eax, %r15d
930 je .L241
931 movq 32(%rsp), %rax
932 cmpq $1, %rax
933 jbe .L213
934 movq __libc_errno@gottpoff(%rip), %rbp
935 subq $1, %rax
936 xorl %r14d, %r14d
937 movq %rax, 32(%rsp)
938 .L184:
939 movslq 56(%rsp), %rax
940 testl %eax, %eax
941 jle .L189
942 cmpl $1, %eax
943 je .L242
944 movq 40(%rsp), %rdx
945 leaq -1(%rdx,%rax), %rax
946 movzbl (%rax), %r12d
947 movb $0, (%rax)
948 movq 40(%rsp), %rdi
949 call __chdir
950 movl %eax, %r13d
951 movslq 56(%rsp), %rax
952 movq 40(%rsp), %rdx
953 movb %r12b, -1(%rdx,%rax)
954 .L188:
955 testl %r13d, %r13d
956 je .L189
957 movl %fs:0(%rbp), %r12d
958 .L190:
959 cmpl $-1, %r15d
960 je .L201
961 .L240:
962 movl %r15d, %edi
963 call __fchdir
964 movl %r15d, %edi
965 call __close_nocancel
966 movl %r12d, %fs:0(%rbp)
967 .L183:
968 movq free@GOTPCREL(%rip), %rsi
969 movq 96(%rsp), %rdi
970 call __tdestroy
971 movq 16(%rsp), %rdi
972 call free@PLT
973 movl %r12d, %fs:0(%rbp)
974 .L173:
975 addq $264, %rsp
976 movl %r13d, %eax
977 popq %rbx
978 popq %rbp
979 popq %r12
980 popq %r13
981 popq %r14
982 popq %r15
984 .p2align 4,,10
985 .p2align 3
986 .L193:
987 movl %fs:0(%rbp), %r12d
988 .L196:
989 movl $-1, %r13d
990 jmp .L190
991 .p2align 4,,10
992 .p2align 3
993 .L195:
994 movl 136(%rsp), %eax
995 andl $61440, %eax
996 cmpl $16384, %eax
997 jne .L204
998 movq 8(%rsp), %rsi
999 movq 112(%rsp), %rax
1000 leaq 16(%rsp), %r12
1001 movq %r12, %rdi
1002 leaq 8(%rsi), %rdx
1003 movq %rax, 88(%rsp)
1004 call add_object.isra.1
1005 testl %eax, %eax
1006 movl %eax, %r13d
1007 jne .L199
1008 jmp .L202
1009 .p2align 4,,10
1010 .p2align 3
1011 .L213:
1012 xorl %r14d, %r14d
1013 movq __libc_errno@gottpoff(%rip), %rbp
1014 jmp .L184
1015 .p2align 4,,10
1016 .p2align 3
1017 .L208:
1018 movq %rax, %rcx
1019 jmp .L176
1020 .p2align 4,,10
1021 .p2align 3
1022 .L241:
1023 movq __libc_errno@gottpoff(%rip), %rbp
1024 xorl %r13d, %r13d
1025 movl %fs:0(%rbp), %r12d
1026 cmpl $13, %r12d
1027 jne .L183
1028 xorl %esi, %esi
1029 xorl %edi, %edi
1030 call __getcwd
1031 testq %rax, %rax
1032 movq %rax, %r14
1033 jne .L184
1034 movl %fs:0(%rbp), %r12d
1035 jmp .L183
1036 .p2align 4,,10
1037 .p2align 3
1038 .L189:
1039 testb $4, 64(%rsp)
1040 movq 40(%rsp), %r13
1041 je .L191
1042 movslq 56(%rsp), %rax
1043 addq %rax, %r13
1044 leaq .LC0(%rip), %rax
1045 cmpb $0, 0(%r13)
1046 cmove %rax, %r13
1047 jmp .L191
1048 .L239:
1049 movq 112(%rsp), %rax
1050 leaq 16(%rsp), %r12
1051 movq %rax, 88(%rsp)
1052 .L202:
1053 movq 8(%rsp), %rsi
1054 xorl %edx, %edx
1055 movq %r12, %rdi
1056 call ftw_dir
1057 movl %eax, %r13d
1058 jmp .L199
1059 .L242:
1060 leaq .LC4(%rip), %rdi
1061 call __chdir
1062 movl %eax, %r13d
1063 jmp .L188
1064 .L234:
1065 movq __libc_errno@gottpoff(%rip), %rax
1066 movl $-1, %r13d
1067 movl $2, %fs:(%rax)
1068 jmp .L173
1069 .L206:
1070 movl $-1, %r13d
1071 jmp .L173
1072 .LFE55:
1073 .size ftw_startup, .-ftw_startup
1074 .p2align 4,,15
1075 .globl ftw
1076 .type ftw, @function
1077 ftw:
1078 .LFB56:
1079 movl %edx, %ecx
1080 xorl %r8d, %r8d
1081 movq %rsi, %rdx
1082 xorl %esi, %esi
1083 jmp ftw_startup
1084 .LFE56:
1085 .size ftw, .-ftw
1086 .weak ftw64
1087 .set ftw64,ftw
1088 .p2align 4,,15
1089 .globl __new_nftw
1090 .type __new_nftw, @function
1091 __new_nftw:
1092 .LFB57:
1093 testl $-32, %ecx
1094 movl %ecx, %r8d
1095 jne .L248
1096 movl %edx, %ecx
1097 movq %rsi, %rdx
1098 movl $1, %esi
1099 jmp ftw_startup
1100 .p2align 4,,10
1101 .p2align 3
1102 .L248:
1103 movq __libc_errno@gottpoff(%rip), %rax
1104 movl $22, %fs:(%rax)
1105 movl $-1, %eax
1107 .LFE57:
1108 .size __new_nftw, .-__new_nftw
1109 .globl __new_nftw64
1110 .set __new_nftw64,__new_nftw
1111 .weak nftw64
1112 .set nftw64,__new_nftw64
1113 .weak nftw
1114 .set nftw,__new_nftw
1115 .section .rodata.str1.8
1116 .align 8
1117 .type __PRETTY_FUNCTION__.9322, @object
1118 .size __PRETTY_FUNCTION__.9322, 8
1119 __PRETTY_FUNCTION__.9322:
1120 .string "ftw_dir"
1121 .section .rodata
1122 .align 16
1123 .type ftw_arr, @object
1124 .size ftw_arr, 28
1125 ftw_arr:
1126 .long 0
1127 .long 1
1128 .long 2
1129 .long 3
1130 .long 0
1131 .long 1
1132 .long 3
1133 .align 16
1134 .type nftw_arr, @object
1135 .size nftw_arr, 28
1136 nftw_arr:
1137 .long 0
1138 .long 1
1139 .long 2
1140 .long 3
1141 .long 4
1142 .long 5
1143 .long 6
1144 .hidden __getcwd
1145 .hidden __tdestroy
1146 .hidden __open
1147 .hidden __assert_fail
1148 .hidden __chdir
1149 .hidden __fchdir
1150 .hidden __close_nocancel
1151 .hidden __fdopendir
1152 .hidden __openat64_nocancel
1153 .hidden __rawmemchr
1154 .hidden __opendir
1155 .hidden __closedir
1156 .hidden __readdir64
1157 .hidden strlen
1158 .hidden __tfind
1159 .hidden __tsearch