clarify the purpose of this project
[nyanglibc.git] / elf / dl-close.shared.s
blob4b6956a9c75a73fcd4cd38e3e20ec40f637febd4
1 .text
2 .p2align 4,,15
3 .type call_destructors, @function
4 call_destructors:
5 movq 272(%rdi), %rax
6 pushq %r12
7 movq %rdi, %r12
8 pushq %rbp
9 pushq %rbx
10 testq %rax, %rax
11 je .L2
12 movq 8(%rax), %rbp
13 movq 288(%rdi), %rax
14 addq (%rdi), %rbp
15 movq 8(%rax), %rax
16 shrq $3, %rax
17 testl %eax, %eax
18 leal -1(%rax), %edx
19 je .L2
20 leaq 0(%rbp,%rdx,8), %rbx
21 subq $8, %rbp
22 .p2align 4,,10
23 .p2align 3
24 .L3:
25 call *(%rbx)
26 subq $8, %rbx
27 cmpq %rbx, %rbp
28 jne .L3
29 .L2:
30 movq 168(%r12), %rdx
31 testq %rdx, %rdx
32 je .L1
33 movq (%r12), %rax
34 addq 8(%rdx), %rax
35 popq %rbx
36 popq %rbp
37 popq %r12
38 jmp *%rax
39 .p2align 4,,10
40 .p2align 3
41 .L1:
42 popq %rbx
43 popq %rbp
44 popq %r12
45 ret
46 .size call_destructors, .-call_destructors
47 .section .rodata.str1.1,"aMS",@progbits,1
48 .LC0:
49 .string "dl-close.c"
50 .LC1:
51 .string "! should_be_there"
52 .LC2:
53 .string "old_map->l_tls_modid == idx"
54 .text
55 .p2align 4,,15
56 .type remove_slotinfo, @function
57 remove_slotinfo:
58 pushq %rbp
59 pushq %rbx
60 movq %rdi, %rax
61 subq %rdx, %rax
62 movq %rdx, %rbx
63 movq %rsi, %rbp
64 subq $8, %rsp
65 movq (%rsi), %rdx
66 cmpq %rdx, %rax
67 jb .L12
68 movq 8(%rsi), %rsi
69 testq %rsi, %rsi
70 jne .L13
71 testb %cl, %cl
72 jne .L29
73 .L17:
74 movq 4040+_rtld_local(%rip), %rax
75 testq %rbx, %rbx
76 leaq 1(%rax), %rcx
77 movl $0, %eax
78 cmovne %rax, %rcx
79 movq %rdi, %rax
80 subq %rbx, %rax
81 salq $4, %rax
82 leaq 8(%rbp,%rax), %rax
83 jmp .L21
84 .p2align 4,,10
85 .p2align 3
86 .L22:
87 subq $16, %rax
88 subq $1, %rdi
89 cmpq $0, 16(%rax)
90 jne .L30
91 .L21:
92 movq %rdi, %rdx
93 subq %rbx, %rdx
94 cmpq %rcx, %rdx
95 ja .L22
96 addq $8, %rsp
97 xorl %eax, %eax
98 popq %rbx
99 popq %rbp
101 .p2align 4,,10
102 .p2align 3
103 .L12:
104 salq $4, %rax
105 addq %rsi, %rax
106 movq 24(%rax), %rdx
107 testq %rdx, %rdx
108 je .L18
109 cmpq %rdi, 1120(%rdx)
110 jne .L31
111 movq 4088+_rtld_local(%rip), %rsi
112 movq $0, 24(%rax)
113 leaq 1(%rsi), %rdx
114 movq %rdx, 16(%rax)
115 .L18:
116 cmpq %rdi, 4024+_rtld_local(%rip)
117 je .L17
118 .L28:
119 addq $8, %rsp
120 movl $1, %eax
121 popq %rbx
122 popq %rbp
124 .p2align 4,,10
125 .p2align 3
126 .L30:
127 movq %rdi, 4024+_rtld_local(%rip)
128 jmp .L28
129 .p2align 4,,10
130 .p2align 3
131 .L13:
132 addq %rbx, %rdx
133 movzbl %cl, %ecx
134 call remove_slotinfo
135 testb %al, %al
136 jne .L28
137 movq 0(%rbp), %rdi
138 addq %rbx, %rdi
139 jmp .L17
140 .L29:
141 leaq __PRETTY_FUNCTION__.10749(%rip), %rcx
142 leaq .LC0(%rip), %rsi
143 leaq .LC1(%rip), %rdi
144 movl $59, %edx
145 call __GI___assert_fail
146 .L31:
147 leaq __PRETTY_FUNCTION__.10749(%rip), %rcx
148 leaq .LC0(%rip), %rsi
149 leaq .LC2(%rip), %rdi
150 movl $80, %edx
151 call __GI___assert_fail
152 .size remove_slotinfo, .-remove_slotinfo
153 .section .rodata.str1.8,"aMS",@progbits,1
154 .align 8
155 .LC3:
156 .string "\nclosing file=%s; direct_opencount=%u\n"
157 .section .rodata.str1.1
158 .LC4:
159 .string "idx == nloaded"
160 .section .rodata.str1.8
161 .align 8
162 .LC5:
163 .string "(*lp)->l_idx >= 0 && (*lp)->l_idx < nloaded"
164 .align 8
165 .LC6:
166 .string "jmap->l_idx >= 0 && jmap->l_idx < nloaded"
167 .section .rodata.str1.1
168 .LC7:
169 .string "imap->l_ns == nsid"
170 .section .rodata.str1.8
171 .align 8
172 .LC8:
173 .string "imap->l_type == lt_loaded && !imap->l_nodelete_active"
174 .section .rodata.str1.1
175 .LC9:
176 .string "\ncalling fini: %s [%lu]\n\n"
177 .LC10:
178 .string "tmap->l_ns == nsid"
179 .LC11:
180 .string "cannot create scope list"
181 .LC12:
182 .string "dlclose"
183 .LC13:
184 .string "imap->l_type == lt_loaded"
185 .LC14:
186 .string "nsid != LM_ID_BASE"
187 .section .rodata.str1.8
188 .align 8
189 .LC15:
190 .string "\nfile=%s [%lu]; destroying link map\n"
191 .align 8
192 .LC16:
193 .string "TLS generation counter wrapped! Please report as described in <https://www.gnu.org/software/libc/bugs.html>.\n"
194 .text
195 .p2align 4,,15
196 .globl _dl_close_worker
197 .hidden _dl_close_worker
198 .type _dl_close_worker, @function
199 _dl_close_worker:
200 pushq %rbp
201 movabsq $8589934592, %rcx
202 movq %rsp, %rbp
203 pushq %r15
204 pushq %r14
205 pushq %r13
206 pushq %r12
207 pushq %rbx
208 subq $136, %rsp
209 movl 792(%rdi), %eax
210 movb %sil, -113(%rbp)
211 leal -1(%rax), %edx
212 movabsq $17179869183, %rax
213 movl %edx, 792(%rdi)
214 movq 792(%rdi), %rsi
215 andq %rax, %rsi
216 cmpq %rcx, %rsi
217 je .L299
218 .L33:
219 testb $64, _rtld_local_ro(%rip)
220 jne .L300
221 .L32:
222 leaq -40(%rbp), %rsp
223 popq %rbx
224 popq %r12
225 popq %r13
226 popq %r14
227 popq %r15
228 popq %rbp
230 .L299:
231 movl dl_close_state.10771(%rip), %r14d
232 testl %r14d, %r14d
233 jne .L301
234 movq 48(%rdi), %r15
235 movq %rax, -88(%rbp)
236 cmpq $1, %r15
237 leaq (%r15,%r15,8), %rdx
238 sbbq %rbx, %rbx
239 andl $8, %ebx
240 leaq (%r15,%rdx,2), %rdx
241 movq %rbx, -176(%rbp)
242 leaq _rtld_local(%rip), %rbx
243 salq $3, %rdx
244 leaq 40(%rbx,%rdx), %rcx
245 addq %rdx, %rbx
246 movq %rbx, -144(%rbp)
247 movq %rcx, -112(%rbp)
248 .L36:
249 movq -144(%rbp), %rsi
250 movq %rsp, -160(%rbp)
251 xorl %edx, %edx
252 movl $1, dl_close_state.10771(%rip)
253 movl 8(%rsi), %r13d
254 leaq 15(%r13), %rax
255 movq %r13, %r11
256 shrq $4, %rax
257 salq $4, %rax
258 subq %rax, %rsp
259 movq %rsp, %r10
260 subq %rax, %rsp
261 leaq 22(,%r13,8), %rax
262 movq %rsp, %r12
263 shrq $4, %rax
264 salq $4, %rax
265 subq %rax, %rsp
266 movq (%rsi), %rax
267 leaq 7(%rsp), %rbx
268 shrq $3, %rbx
269 testq %rax, %rax
270 leaq 0(,%rbx,8), %rcx
271 movq %rcx, -56(%rbp)
272 je .L37
273 .p2align 4,,10
274 .p2align 3
275 .L38:
276 movl %edx, 1012(%rax)
277 movq %rax, (%rcx)
278 addl $1, %edx
279 movq 24(%rax), %rax
280 addq $8, %rcx
281 testq %rax, %rax
282 jne .L38
283 .L37:
284 cmpl %edx, %r11d
285 jne .L302
286 movq %r10, %rdi
287 movq %r13, %rdx
288 xorl %esi, %esi
289 movl %r11d, -72(%rbp)
290 movq %r10, -64(%rbp)
291 call memset@PLT
292 movq %r12, %rdi
293 movq %r13, %rdx
294 xorl %esi, %esi
295 call memset@PLT
296 movl -72(%rbp), %r11d
297 movq -64(%rbp), %r10
298 movl $-1, %edi
299 movabsq $8589934592, %r9
300 .p2align 4,,10
301 .p2align 3
302 .L40:
303 addl $1, %edi
304 cmpl %edi, %r11d
305 jbe .L303
306 .L54:
307 movslq %edi, %rax
308 cmpb $0, (%r12,%rax)
309 jne .L40
310 movq -56(%rbp), %rcx
311 movq -88(%rbp), %rdx
312 movq (%rcx,%rax,8), %rcx
313 andq 792(%rcx), %rdx
314 cmpq %r9, %rdx
315 je .L42
316 .L45:
317 movb $1, (%r10,%rax)
318 movb $1, (%r12,%rax)
319 movq 976(%rcx), %rax
320 movl $-1, 1012(%rcx)
321 testq %rax, %rax
322 je .L44
323 leaq 8(%rax), %rdx
324 movq 8(%rax), %rax
325 testq %rax, %rax
326 je .L44
327 .p2align 4,,10
328 .p2align 3
329 .L49:
330 movslq 1012(%rax), %rax
331 cmpl $-1, %eax
332 je .L46
333 testl %eax, %eax
334 js .L47
335 cmpl %eax, %r11d
336 jbe .L47
337 cmpb $0, (%r10,%rax)
338 jne .L46
339 movb $1, (%r10,%rax)
340 movq (%rdx), %rax
341 movl 1012(%rax), %eax
342 leal -1(%rax), %esi
343 cmpl %edi, %eax
344 cmovle %esi, %edi
345 .L46:
346 addq $8, %rdx
347 movq (%rdx), %rax
348 testq %rax, %rax
349 jne .L49
350 .L44:
351 movq 984(%rcx), %rsi
352 testq %rsi, %rsi
353 je .L40
354 movl (%rsi), %r13d
355 testl %r13d, %r13d
356 je .L40
357 xorl %edx, %edx
358 jmp .L53
359 .p2align 4,,10
360 .p2align 3
361 .L304:
362 cmpl %eax, %r11d
363 jbe .L51
364 cmpb $0, (%r10,%rax)
365 jne .L50
366 movb $1, (%r10,%rax)
367 movl 1012(%r8), %eax
368 cmpl %edi, %eax
369 jg .L294
370 leal -1(%rax), %edi
371 .L294:
372 movq 984(%rcx), %rsi
373 .L50:
374 addl $1, %edx
375 cmpl (%rsi), %edx
376 jnb .L40
377 .L53:
378 movl %edx, %eax
379 movq 8(%rsi,%rax,8), %r8
380 movslq 1012(%r8), %rax
381 cmpl $-1, %eax
382 je .L50
383 testl %eax, %eax
384 jns .L304
385 .L51:
386 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
387 leaq .LC0(%rip), %rsi
388 leaq .LC6(%rip), %rdi
389 movl $248, %edx
390 call __GI___assert_fail
391 .L301:
392 movl $2, dl_close_state.10771(%rip)
393 jmp .L33
394 .p2align 4,,10
395 .p2align 3
396 .L42:
397 cmpb $0, 799(%rcx)
398 jne .L45
399 movq 1128(%rcx), %rdx
400 testq %rdx, %rdx
401 jne .L45
402 cmpb $0, (%r10,%rax)
403 jne .L45
404 addl $1, %edi
405 cmpl %edi, %r11d
406 ja .L54
407 .L303:
408 testq %r15, %r15
409 movq -56(%rbp), %rdi
410 movl %r11d, %esi
411 sete %al
412 addq -176(%rbp), %rdi
413 movl $1, %ecx
414 movzbl %al, %edx
415 movzbl %al, %eax
416 movq %r10, -72(%rbp)
417 addq %r10, %rdx
418 subl %eax, %esi
419 movl %r11d, -64(%rbp)
420 call _dl_sort_maps
421 movl 800+_rtld_local_ro(%rip), %r10d
422 movl $0, -80(%rbp)
423 movl -64(%rbp), %r11d
424 testl %r10d, %r10d
425 movq -72(%rbp), %r10
426 je .L55
427 movq -144(%rbp), %rax
428 movq (%rax), %rax
429 movzbl 797(%rax), %eax
430 shrb $3, %al
431 xorl $1, %eax
432 andl $1, %eax
433 movl %eax, -80(%rbp)
434 .L55:
435 testl %r11d, %r11d
436 je .L57
437 movq 0(,%rbx,8), %rbx
438 cmpq 48(%rbx), %r15
439 jne .L58
440 leal -1(%r11), %eax
441 xorl %r14d, %r14d
442 movb $0, -76(%rbp)
443 movb $0, -114(%rbp)
444 movl $-1, %r13d
445 movl $0, -96(%rbp)
446 movl %eax, -164(%rbp)
447 movq %rax, -72(%rbp)
448 movl %r11d, -120(%rbp)
449 movq %r10, -64(%rbp)
450 jmp .L59
451 .p2align 4,,10
452 .p2align 3
453 .L308:
454 cmpb $2, %dl
455 jne .L61
456 cmpb $0, 799(%rbx)
457 jne .L61
458 testb $8, %al
459 je .L64
460 testb $2, _rtld_local_ro(%rip)
461 jne .L305
462 .L65:
463 cmpq $0, 272(%rbx)
464 je .L306
465 .L66:
466 leaq call_destructors(%rip), %rsi
467 movq %rbx, %rdx
468 xorl %edi, %edi
469 call _dl_catch_exception@PLT
470 .L64:
471 movl -80(%rbp), %r9d
472 testl %r9d, %r9d
473 jne .L68
474 .L71:
475 movzbl 796(%rbx), %eax
476 orb $32, 797(%rbx)
477 movb $1, -76(%rbp)
478 andl $16, %eax
479 cmpb $1, %al
480 sbbl $-1, -96(%rbp)
481 cmpl %r12d, %r13d
482 cmova %r12d, %r13d
483 .L76:
484 cmpq %r14, -72(%rbp)
485 je .L307
486 .L98:
487 movq -56(%rbp), %rax
488 movq 8(%rax,%r14,8), %rbx
489 addq $1, %r14
490 cmpq 48(%rbx), %r15
491 jne .L58
492 .L59:
493 movzbl 796(%rbx), %eax
494 movq -64(%rbp), %rcx
495 movl %r14d, %r12d
496 movl %eax, %edx
497 andl $3, %edx
498 cmpb $0, (%rcx,%r14)
499 je .L308
500 cmpb $2, %dl
501 jne .L76
502 cmpq $0, 704(%rbx)
503 je .L77
504 .L295:
505 movq 920(%rbx), %r10
506 movl $1, %r8d
507 movq (%r10), %rcx
508 movq $0, -104(%rbp)
509 testq %rcx, %rcx
510 je .L79
511 .L78:
512 leaq 8(%r10), %rsi
513 leaq 720(%rbx), %rdx
514 movq %rcx, %rax
515 xorl %r9d, %r9d
516 movq %rsi, %rdi
517 jmp .L87
518 .p2align 4,,10
519 .p2align 3
520 .L311:
521 cmpq -656(%rax), %r15
522 jne .L309
523 cmpl $-1, 308(%rax)
524 je .L84
525 addq $8, %rdi
526 movq -8(%rdi), %rax
527 movl $1, %r9d
528 testq %rax, %rax
529 je .L310
530 .L87:
531 cmpq %rax, %rdx
532 jne .L311
533 .L84:
534 addq $8, %rdi
535 movq -8(%rdi), %rax
536 addq $1, %r8
537 testq %rax, %rax
538 jne .L87
539 .L310:
540 testb %r9b, %r9b
541 je .L88
542 leaq 880(%rbx), %rax
543 cmpq %r10, %rax
544 movq %rax, -128(%rbp)
545 je .L184
546 cmpq $3, %r8
547 jbe .L175
548 .L184:
549 movq 912(%rbx), %rax
550 movq %rdx, -152(%rbp)
551 movb %r9b, -115(%rbp)
552 movq %rax, -136(%rbp)
553 leaq 0(,%rax,8), %rdi
554 call *__rtld_malloc(%rip)
555 testq %rax, %rax
556 movzbl -115(%rbp), %r9d
557 movq -152(%rbp), %rdx
558 je .L312
559 movq 920(%rbx), %r10
560 movq (%r10), %rcx
561 testq %rcx, %rcx
562 je .L176
563 leaq 8(%r10), %rsi
564 .L89:
565 movb %r9b, -115(%rbp)
566 xorl %r8d, %r8d
567 movq -104(%rbp), %r9
568 jmp .L95
569 .p2align 4,,10
570 .p2align 3
571 .L314:
572 testq %r9, %r9
573 je .L94
574 movq %r9, (%rdi)
575 leaq 8(%rax,%r11), %rdi
576 addq $1, %r8
577 xorl %r9d, %r9d
578 .L94:
579 addq $8, %rsi
580 movq -8(%rsi), %rcx
581 testq %rcx, %rcx
582 je .L313
583 .L95:
584 leaq 0(,%r8,8), %r11
585 cmpq %rcx, %rdx
586 leaq (%rax,%r11), %rdi
587 je .L93
588 cmpl $-1, 308(%rcx)
589 jne .L314
590 .L93:
591 addq $8, %rsi
592 movq %rcx, (%rdi)
593 addq $1, %r8
594 movq -8(%rsi), %rcx
595 leaq 8(%rax,%r11), %rdi
596 testq %rcx, %rcx
597 jne .L95
598 .L313:
599 movzbl -115(%rbp), %r9d
600 .L92:
601 cmpq %r10, -128(%rbp)
602 movq $0, (%rdi)
603 movq %rax, 920(%rbx)
604 je .L177
605 movq %r10, %rdi
606 call _dl_scope_free
607 testl %eax, %eax
608 movzbl -114(%rbp), %eax
609 movl $0, %ecx
610 cmovne %ecx, %eax
611 movb %al, -114(%rbp)
612 .L96:
613 movq -136(%rbp), %rax
614 movq %rax, 912(%rbx)
615 .L79:
616 movq 736(%rbx), %rax
617 testq %rax, %rax
618 je .L97
619 cmpl $-1, 1012(%rax)
620 je .L97
621 movq $0, 736(%rbx)
622 .L97:
623 cmpl %r12d, %r13d
624 cmova %r12d, %r13d
625 cmpq %r14, -72(%rbp)
626 jne .L98
627 .L307:
628 cmpb $0, -76(%rbp)
629 movq -64(%rbp), %r10
630 movl -120(%rbp), %r11d
631 movl %r13d, -64(%rbp)
632 jne .L315
633 .L57:
634 cmpl $2, dl_close_state.10771(%rip)
635 jne .L316
636 movq -160(%rbp), %rsp
637 jmp .L36
638 .p2align 4,,10
639 .p2align 3
640 .L306:
641 cmpq $0, 168(%rbx)
642 jne .L66
643 movl -80(%rbp), %r9d
644 testl %r9d, %r9d
645 je .L71
646 .L68:
647 movl 800+_rtld_local_ro(%rip), %r8d
648 movq 792+_rtld_local_ro(%rip), %rcx
649 testl %r8d, %r8d
650 je .L71
651 xorl %edx, %edx
652 movl %r13d, -76(%rbp)
653 movl %r12d, -104(%rbp)
654 movq %rcx, %r13
655 movq %rbx, %r12
656 movl %edx, %ebx
657 .p2align 4,,10
658 .p2align 3
659 .L75:
660 movq 56(%r13), %rax
661 testq %rax, %rax
662 je .L72
663 movl %ebx, %edx
664 leaq 2568+_rtld_local(%rip), %rcx
665 movq %rdx, %rdi
666 salq $4, %rdi
667 cmpq %rcx, %r12
668 leaq 1160(%r12,%rdi), %rdi
669 je .L317
670 .L74:
671 call *%rax
672 .L72:
673 addl $1, %ebx
674 cmpl 800+_rtld_local_ro(%rip), %ebx
675 movq 64(%r13), %r13
676 jb .L75
677 movq %r12, %rbx
678 movl -76(%rbp), %r13d
679 movl -104(%rbp), %r12d
680 jmp .L71
681 .p2align 4,,10
682 .p2align 3
683 .L317:
684 addq $233, %rdx
685 subq $2568, %rcx
686 salq $4, %rdx
687 leaq (%rcx,%rdx), %rdi
688 jmp .L74
689 .L88:
690 cmpq $0, -104(%rbp)
691 je .L79
692 .L83:
693 movq $0, 704(%rbx)
694 movl $0, 712(%rbx)
695 jmp .L79
696 .L77:
697 movq 976(%rbx), %rdx
698 testq %rdx, %rdx
699 je .L295
700 cmpq $0, 8(%rdx)
701 je .L172
702 movl $1, %ecx
703 jmp .L82
704 .p2align 4,,10
705 .p2align 3
706 .L173:
707 movl %eax, %ecx
708 .L82:
709 leal 1(%rcx), %esi
710 cmpq $0, (%rdx,%rsi,8)
711 movq %rsi, %rax
712 jne .L173
713 addl $2, %ecx
714 salq $3, %rcx
715 .L81:
716 movq 920(%rbx), %r10
717 addq %rcx, %rdx
718 movl %eax, 712(%rbx)
719 leaq 704(%rbx), %rax
720 movq %rdx, 704(%rbx)
721 movq (%r10), %rcx
722 movq %rax, -104(%rbp)
723 testq %rcx, %rcx
724 je .L83
725 movl $2, %r8d
726 jmp .L78
727 .L305:
728 movq 8(%rbx), %rsi
729 leaq .LC9(%rip), %rdi
730 movq %r15, %rdx
731 xorl %eax, %eax
732 call _dl_debug_printf
733 jmp .L65
734 .L177:
735 movb %r9b, -114(%rbp)
736 jmp .L96
737 .L175:
738 movq -128(%rbp), %rax
739 movq $4, -136(%rbp)
740 jmp .L89
741 .L315:
742 movl -80(%rbp), %edi
743 testl %edi, %edi
744 jne .L100
745 .L103:
746 movq %r15, %rsi
747 xorl %edi, %edi
748 movq %r10, -128(%rbp)
749 movl %r11d, -72(%rbp)
750 call _dl_debug_initialize
751 movl $2, 24(%rax)
752 movq %rax, -104(%rbp)
753 call __GI__dl_debug_state
754 movl -96(%rbp), %esi
755 movl -72(%rbp), %r11d
756 movq -128(%rbp), %r10
757 testl %esi, %esi
758 jne .L318
759 .L102:
760 #APP
761 # 530 "dl-close.c" 1
762 movl %fs:24,%eax
763 # 0 "" 2
764 #NO_APP
765 testl %eax, %eax
766 jne .L115
767 .L119:
768 movq %r10, -96(%rbp)
769 movl %r11d, -72(%rbp)
770 leaq 2480+_rtld_local(%rip), %rdi
771 call *3984+_rtld_local(%rip)
772 movl -72(%rbp), %r11d
773 cmpl -64(%rbp), %r11d
774 movq -96(%rbp), %r10
775 jbe .L319
776 movl -64(%rbp), %eax
777 movq -56(%rbp), %rsi
778 movl -164(%rbp), %r14d
779 movb $0, -64(%rbp)
780 movq $0, -72(%rbp)
781 movq $0, -96(%rbp)
782 movq %r15, -128(%rbp)
783 movq %rax, %rcx
784 leaq (%r10,%rax), %rbx
785 leaq (%rsi,%rax,8), %r13
786 leaq 1(%r10,%rax), %rax
787 subl %ecx, %r14d
788 addq %r14, %rax
789 movq -144(%rbp), %r14
790 movq %rax, -56(%rbp)
791 .p2align 4,,10
792 .p2align 3
793 .L148:
794 cmpb $0, (%rbx)
795 jne .L121
796 movq 0(%r13), %r12
797 movzbl 796(%r12), %eax
798 movl %eax, %edx
799 andl $3, %edx
800 cmpb $2, %dl
801 jne .L320
802 cmpq $0, 1088(%r12)
803 jne .L321
804 .L123:
805 cmpb $0, -113(%rbp)
806 je .L130
807 movq -112(%rbp), %rdi
808 call *3984+_rtld_local(%rip)
809 movq 80(%r14), %rax
810 testq %rax, %rax
811 je .L132
812 movq 88(%r14), %rdx
813 testq %rdx, %rdx
814 je .L132
815 salq $5, %rdx
816 addq %rax, %rdx
817 jmp .L134
818 .p2align 4,,10
819 .p2align 3
820 .L133:
821 addq $32, %rax
822 cmpq %rax, %rdx
823 je .L132
824 .L134:
825 cmpq $0, 8(%rax)
826 je .L133
827 cmpq 24(%rax), %r12
828 jne .L133
829 movq $0, 8(%rax)
830 movl $0, (%rax)
831 addq $32, %rax
832 subq $1, 96(%r14)
833 cmpq %rax, %rdx
834 jne .L134
835 .p2align 4,,10
836 .p2align 3
837 .L132:
838 movq -112(%rbp), %rdi
839 call *3992+_rtld_local(%rip)
840 .L130:
841 movq %r12, %rdi
842 call _dl_unmap
843 movq 32(%r12), %rax
844 testq %rax, %rax
845 je .L322
846 movq 24(%r12), %rdx
847 movq %rdx, 24(%rax)
848 movq 24(%r12), %rdx
849 .L137:
850 subl $1, 8(%r14)
851 testq %rdx, %rdx
852 je .L138
853 movq %rax, 32(%rdx)
854 .L138:
855 movq 744(%r12), %rdi
856 call *__rtld_free(%rip)
857 movq 848(%r12), %rdi
858 cmpq $-1, %rdi
859 je .L139
860 call *__rtld_free(%rip)
861 .L139:
862 movq 984(%r12), %rdi
863 call *__rtld_free(%rip)
864 testb $64, _rtld_local_ro(%rip)
865 jne .L323
866 .L140:
867 movq 8(%r12), %rdi
868 call *__rtld_free(%rip)
869 movq 56(%r12), %rdi
870 movq __rtld_free(%rip), %rax
871 .p2align 4,,10
872 .p2align 3
873 .L142:
874 movl 16(%rdi), %edx
875 movq 8(%rdi), %r15
876 testl %edx, %edx
877 jne .L141
878 call *%rax
879 movq __rtld_free(%rip), %rax
880 .L141:
881 testq %r15, %r15
882 movq %r15, %rdi
883 jne .L142
884 movq 976(%r12), %rdi
885 call *%rax
886 movq 920(%r12), %rdi
887 leaq 880(%r12), %rax
888 cmpq %rax, %rdi
889 je .L143
890 call *__rtld_free(%rip)
891 .L143:
892 cmpb $0, 796(%r12)
893 movq __rtld_free(%rip), %rax
894 jns .L144
895 movq 680(%r12), %rdi
896 call *%rax
897 movq __rtld_free(%rip), %rax
898 .L144:
899 movq 816(%r12), %rdi
900 cmpq $-1, %rdi
901 je .L145
902 call *%rax
903 movq __rtld_free(%rip), %rax
904 .L145:
905 movq 960(%r12), %rdi
906 cmpq $-1, %rdi
907 je .L146
908 call *%rax
909 movq __rtld_free(%rip), %rax
910 .L146:
911 cmpq 2528+_rtld_local(%rip), %r12
912 je .L324
913 .L147:
914 movq %r12, %rdi
915 call *%rax
916 .L121:
917 addq $1, %rbx
918 addq $8, %r13
919 cmpq %rbx, -56(%rbp)
920 jne .L148
921 movq -128(%rbp), %r15
922 leaq 2480+_rtld_local(%rip), %rdi
923 call *3992+_rtld_local(%rip)
924 cmpb $0, -64(%rbp)
925 je .L150
926 movq 4088+_rtld_local(%rip), %rax
927 addq $1, %rax
928 testq %rax, %rax
929 movq %rax, 4088+_rtld_local(%rip)
930 je .L325
931 movq -72(%rbp), %rax
932 cmpq %rax, 4056+_rtld_local(%rip)
933 jne .L150
934 movq -96(%rbp), %rax
935 movq %rax, 4056+_rtld_local(%rip)
936 .L150:
937 movq -144(%rbp), %rax
938 movq (%rax), %r12
939 movl -80(%rbp), %eax
940 testl %eax, %eax
941 jne .L326
942 .L154:
943 testq %r12, %r12
944 je .L164
945 .L159:
946 movq -104(%rbp), %rax
947 movl $0, 24(%rax)
948 call __GI__dl_debug_state
949 jmp .L57
950 .L322:
951 cmpq $0, -128(%rbp)
952 je .L327
953 movq 24(%r12), %rdx
954 movq -104(%rbp), %rcx
955 movq %rdx, (%r14)
956 movq %rdx, 8(%rcx)
957 jmp .L137
958 .L324:
959 movq $0, 2528+_rtld_local(%rip)
960 jmp .L147
961 .L323:
962 movq 48(%r12), %rdx
963 movq 8(%r12), %rsi
964 leaq .LC15(%rip), %rdi
965 xorl %eax, %eax
966 call _dl_debug_printf
967 jmp .L140
968 .L321:
969 movq 4032+_rtld_local(%rip), %rsi
970 testq %rsi, %rsi
971 je .L125
972 shrb $3, %al
973 movq 1120(%r12), %rdi
974 xorl %edx, %edx
975 movl %eax, %ecx
976 andl $1, %ecx
977 call remove_slotinfo
978 testb %al, %al
979 jne .L125
980 movq 4040+_rtld_local(%rip), %rax
981 movq %rax, 4024+_rtld_local(%rip)
982 .L125:
983 movq 1112(%r12), %rax
984 movzbl -76(%rbp), %ecx
985 leaq 1(%rax), %rdx
986 movb %cl, -64(%rbp)
987 cmpq $1, %rdx
988 jbe .L123
989 movq -96(%rbp), %rcx
990 movq %rax, %rdx
991 cmpq %rcx, %rax
992 sete %sil
993 testq %rcx, %rcx
994 sete %cl
995 subq 1088(%r12), %rdx
996 orb %cl, %sil
997 movb %sil, -64(%rbp)
998 je .L127
999 cmpq $0, -72(%rbp)
1000 jne .L297
1001 movq %rax, -72(%rbp)
1002 .L297:
1003 movq %rdx, -96(%rbp)
1004 jmp .L123
1005 .L176:
1006 movq %rax, %rdi
1007 jmp .L92
1008 .L300:
1009 movq 8(%rdi), %rsi
1010 leaq .LC3(%rip), %rdi
1011 xorl %eax, %eax
1012 call _dl_debug_printf
1013 jmp .L32
1014 .L47:
1015 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1016 leaq .LC0(%rip), %rsi
1017 leaq .LC5(%rip), %rdi
1018 movl $223, %edx
1019 call __GI___assert_fail
1020 .L318:
1021 movq -144(%rbp), %rax
1022 movq 16(%rax), %r8
1023 movl 8(%r8), %esi
1024 testl %esi, %esi
1025 je .L179
1026 movq (%r8), %rdx
1027 leal -1(%rsi), %ecx
1028 movq %rcx, %rax
1029 movq (%rdx,%rcx,8), %rcx
1030 testb $32, 797(%rcx)
1031 jne .L109
1032 jmp .L328
1033 .p2align 4,,10
1034 .p2align 3
1035 .L111:
1036 leal -1(%rax), %edi
1037 movq %rdi, %rcx
1038 movq (%rdx,%rdi,8), %rdi
1039 testb $32, 797(%rdi)
1040 je .L110
1041 movl %ecx, %eax
1042 .L109:
1043 testl %eax, %eax
1044 jne .L111
1045 .L108:
1046 movl %eax, 8(%r8)
1047 jmp .L102
1048 .L172:
1049 movl $16, %ecx
1050 movl $1, %eax
1051 jmp .L81
1052 .L127:
1053 movq -72(%rbp), %rsi
1054 cmpq %rsi, %rdx
1055 je .L182
1056 movq 4056+_rtld_local(%rip), %rcx
1057 cmpq %rsi, %rcx
1058 je .L329
1059 cmpq %rcx, %rax
1060 je .L330
1061 cmpq -72(%rbp), %rax
1062 jbe .L296
1063 movq %rax, -72(%rbp)
1064 movq %rdx, -96(%rbp)
1065 .L296:
1066 movzbl -76(%rbp), %eax
1067 movb %al, -64(%rbp)
1068 jmp .L123
1069 .L328:
1070 movl %esi, %eax
1071 .L110:
1072 movl -96(%rbp), %ebx
1073 leal (%rax,%rbx), %ecx
1074 cmpl %ecx, %esi
1075 je .L108
1076 leal -1(%rax), %r9d
1077 xorl %ecx, %ecx
1078 xorl %eax, %eax
1079 addq $1, %r9
1080 .L114:
1081 movq (%rdx,%rcx,8), %rsi
1082 testb $32, 797(%rsi)
1083 jne .L112
1084 cmpl %ecx, %eax
1085 je .L113
1086 movl %eax, %edi
1087 movq %rsi, (%rdx,%rdi,8)
1088 .L113:
1089 addl $1, %eax
1090 .L112:
1091 addq $1, %rcx
1092 cmpq %rcx, %r9
1093 jne .L114
1094 jmp .L108
1095 .L325:
1096 leaq .LC16(%rip), %rdi
1097 call __GI__dl_fatal_printf
1098 .L329:
1099 movq %rax, -72(%rbp)
1100 movzbl -76(%rbp), %eax
1101 movq -96(%rbp), %rcx
1102 movq %rdx, -96(%rbp)
1103 movq %rcx, 4056+_rtld_local(%rip)
1104 movb %al, -64(%rbp)
1105 jmp .L123
1106 .L182:
1107 movq %rax, -72(%rbp)
1108 movzbl -76(%rbp), %eax
1109 movb %al, -64(%rbp)
1110 jmp .L123
1111 .L164:
1112 movq 2432+_rtld_local(%rip), %rdx
1113 leaq -1(%rdx), %rax
1114 cmpq %r15, %rax
1115 jne .L159
1116 imulq $152, %rdx, %rdx
1117 leaq _rtld_local(%rip), %rbx
1118 leaq -304(%rbx,%rdx), %rdx
1119 jmp .L165
1120 .p2align 4,,10
1121 .p2align 3
1122 .L331:
1123 subq $1, %rax
1124 .L165:
1125 subq $152, %rdx
1126 cmpq $0, 152(%rdx)
1127 je .L331
1128 movq %rax, 2432+_rtld_local(%rip)
1129 jmp .L159
1130 .p2align 4,,10
1131 .p2align 3
1132 .L326:
1133 testq %r12, %r12
1134 je .L164
1135 testb $8, 797(%r12)
1136 jne .L159
1137 cmpl $0, 800+_rtld_local_ro(%rip)
1138 movq 792+_rtld_local_ro(%rip), %r14
1139 je .L159
1140 xorl %r13d, %r13d
1141 leaq 2568+_rtld_local(%rip), %rbx
1142 jmp .L163
1143 .p2align 4,,10
1144 .p2align 3
1145 .L162:
1146 xorl %esi, %esi
1147 call *%rdx
1148 .L160:
1149 addl $1, %r13d
1150 cmpl 800+_rtld_local_ro(%rip), %r13d
1151 movq 64(%r14), %r14
1152 jnb .L332
1153 .L163:
1154 movq (%r14), %rdx
1155 testq %rdx, %rdx
1156 je .L160
1157 movl %r13d, %eax
1158 movq %rax, %rcx
1159 salq $4, %rcx
1160 cmpq %rbx, %r12
1161 leaq 1160(%r12,%rcx), %rdi
1162 jne .L162
1163 addq $233, %rax
1164 leaq _rtld_local(%rip), %rcx
1165 salq $4, %rax
1166 leaq (%rcx,%rax), %rdi
1167 jmp .L162
1168 .p2align 4,,10
1169 .p2align 3
1170 .L115:
1171 movl -96(%rbp), %ecx
1172 testl %ecx, %ecx
1173 jne .L118
1174 cmpb $0, -114(%rbp)
1175 jne .L118
1176 movq 4104+_rtld_local(%rip), %rax
1177 testq %rax, %rax
1178 je .L119
1179 cmpq $0, (%rax)
1180 je .L119
1181 .L118:
1182 movq %r10, -96(%rbp)
1183 movl %r11d, -72(%rbp)
1184 call __thread_gscope_wait
1185 movq 4104+_rtld_local(%rip), %rbx
1186 movl -72(%rbp), %r11d
1187 movq -96(%rbp), %r10
1188 testq %rbx, %rbx
1189 je .L119
1190 movq (%rbx), %rax
1191 testq %rax, %rax
1192 je .L119
1193 movl %r11d, %r12d
1194 movq %r10, %r13
1195 .L120:
1196 subq $1, %rax
1197 movq %rax, (%rbx)
1198 movq 8(%rbx,%rax,8), %rdi
1199 call *__rtld_free(%rip)
1200 movq (%rbx), %rax
1201 testq %rax, %rax
1202 jne .L120
1203 movl %r12d, %r11d
1204 movq %r13, %r10
1205 jmp .L119
1206 .p2align 4,,10
1207 .p2align 3
1208 .L319:
1209 leaq 2480+_rtld_local(%rip), %rdi
1210 call *3992+_rtld_local(%rip)
1211 jmp .L150
1212 .L309:
1213 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1214 leaq .LC0(%rip), %rsi
1215 leaq .LC10(%rip), %rdi
1216 movl $372, %edx
1217 call __GI___assert_fail
1218 .L61:
1219 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1220 leaq .LC0(%rip), %rsi
1221 leaq .LC8(%rip), %rdi
1222 movl $282, %edx
1223 call __GI___assert_fail
1224 .L58:
1225 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1226 leaq .LC0(%rip), %rsi
1227 leaq .LC7(%rip), %rdi
1228 movl $278, %edx
1229 call __GI___assert_fail
1230 .L316:
1231 movl $0, dl_close_state.10771(%rip)
1232 movq -160(%rbp), %rsp
1233 jmp .L32
1234 .L100:
1235 movq -144(%rbp), %rax
1236 movq (%rax), %r13
1237 testb $8, 797(%r13)
1238 jne .L103
1239 cmpl $0, 800+_rtld_local_ro(%rip)
1240 je .L103
1241 movq 792+_rtld_local_ro(%rip), %r12
1242 leaq 2568+_rtld_local(%rip), %r14
1243 xorl %ebx, %ebx
1244 .L107:
1245 movq (%r12), %rdx
1246 testq %rdx, %rdx
1247 je .L104
1248 movl %ebx, %eax
1249 movq %rax, %rcx
1250 salq $4, %rcx
1251 cmpq %r14, %r13
1252 leaq 1160(%r13,%rcx), %rdi
1253 jne .L106
1254 addq $233, %rax
1255 leaq _rtld_local(%rip), %rcx
1256 salq $4, %rax
1257 leaq (%rcx,%rax), %rdi
1258 .L106:
1259 movq %r10, -104(%rbp)
1260 movl %r11d, -72(%rbp)
1261 movl $2, %esi
1262 call *%rdx
1263 movq -104(%rbp), %r10
1264 movl -72(%rbp), %r11d
1265 .L104:
1266 addl $1, %ebx
1267 cmpl 800+_rtld_local_ro(%rip), %ebx
1268 movq 64(%r12), %r12
1269 jb .L107
1270 jmp .L103
1271 .L332:
1272 imulq $152, %r15, %rax
1273 leaq _rtld_local(%rip), %rbx
1274 movq (%rbx,%rax), %r12
1275 jmp .L154
1276 .L302:
1277 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1278 leaq .LC0(%rip), %rsi
1279 leaq .LC4(%rip), %rdi
1280 movl $181, %edx
1281 call __GI___assert_fail
1282 .L312:
1283 leaq .LC11(%rip), %rcx
1284 leaq .LC12(%rip), %rsi
1285 xorl %edx, %edx
1286 movl $12, %edi
1287 call _dl_signal_error@PLT
1288 .L330:
1289 movzbl -76(%rbp), %eax
1290 movq %rdx, 4056+_rtld_local(%rip)
1291 movb %al, -64(%rbp)
1292 jmp .L123
1293 .L327:
1294 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1295 leaq .LC0(%rip), %rsi
1296 leaq .LC14(%rip), %rdi
1297 movl $704, %edx
1298 call __GI___assert_fail
1299 .L179:
1300 xorl %eax, %eax
1301 jmp .L108
1302 .L320:
1303 leaq __PRETTY_FUNCTION__.10785(%rip), %rcx
1304 leaq .LC0(%rip), %rsi
1305 leaq .LC13(%rip), %rdi
1306 movl $559, %edx
1307 call __GI___assert_fail
1308 .size _dl_close_worker, .-_dl_close_worker
1309 .section .rodata.str1.1
1310 .LC17:
1311 .string "shared object not open"
1312 .text
1313 .p2align 4,,15
1314 .globl _dl_close
1315 .hidden _dl_close
1316 .type _dl_close, @function
1317 _dl_close:
1318 pushq %rbx
1319 movq %rdi, %rbx
1320 leaq 2440+_rtld_local(%rip), %rdi
1321 call *3984+_rtld_local(%rip)
1322 cmpb $0, 799(%rbx)
1323 jne .L337
1324 movl 792(%rbx), %eax
1325 testl %eax, %eax
1326 je .L338
1327 xorl %esi, %esi
1328 movq %rbx, %rdi
1329 call _dl_close_worker
1330 .L337:
1331 popq %rbx
1332 leaq 2440+_rtld_local(%rip), %rdi
1333 jmp *3992+_rtld_local(%rip)
1334 .p2align 4,,10
1335 .p2align 3
1336 .L338:
1337 leaq 2440+_rtld_local(%rip), %rdi
1338 call *3992+_rtld_local(%rip)
1339 movq 8(%rbx), %rsi
1340 leaq .LC17(%rip), %rcx
1341 xorl %edx, %edx
1342 xorl %edi, %edi
1343 call _dl_signal_error@PLT
1344 .size _dl_close, .-_dl_close
1345 .section .rodata.str1.16,"aMS",@progbits,1
1346 .align 16
1347 .type __PRETTY_FUNCTION__.10749, @object
1348 .size __PRETTY_FUNCTION__.10749, 16
1349 __PRETTY_FUNCTION__.10749:
1350 .string "remove_slotinfo"
1351 .align 16
1352 .type __PRETTY_FUNCTION__.10785, @object
1353 .size __PRETTY_FUNCTION__.10785, 17
1354 __PRETTY_FUNCTION__.10785:
1355 .string "_dl_close_worker"
1356 .local dl_close_state.10771
1357 .comm dl_close_state.10771,4,4
1358 .hidden __thread_gscope_wait
1359 .hidden __rtld_free
1360 .hidden _dl_unmap
1361 .hidden _dl_debug_initialize
1362 .hidden _dl_debug_printf
1363 .hidden _dl_scope_free
1364 .hidden __rtld_malloc
1365 .hidden _dl_sort_maps
1366 .hidden _rtld_local_ro
1367 .hidden _rtld_local