clarify the purpose of this project
[nyanglibc.git] / nptl / pthread_cond_wait.s
blobf73fa57d78aaf5e15e483bbc9599885d2ea45042
1 .text
2 .section .rodata.str1.8,"aMS",@progbits,1
3 .align 8
4 .LC0:
5 .string "The futex facility returned an unexpected error code.\n"
6 .text
7 .p2align 4,,15
8 .type __condvar_confirm_wakeup, @function
9 __condvar_confirm_wakeup:
10 addq $36, %rdi
11 movl $-8, %eax
12 lock xaddl %eax, (%rdi)
13 shrl $2, %eax
14 cmpl $3, %eax
15 je .L9
16 .L1:
17 rep ret
18 .p2align 4,,10
19 .p2align 3
20 .L9:
21 xorb $-127, %sil
22 xorl %r10d, %r10d
23 movl $2147483647, %edx
24 movl $202, %eax
25 #APP
26 # 209 "../sysdeps/nptl/futex-internal.h" 1
27 syscall
29 # 0 "" 2
30 #NO_APP
31 cmpq $-4096, %rax
32 jbe .L1
33 cmpl $-22, %eax
34 je .L1
35 cmpl $-14, %eax
36 je .L1
37 leaq .LC0(%rip), %rdi
38 subq $8, %rsp
39 call __libc_fatal@PLT
40 .size __condvar_confirm_wakeup, .-__condvar_confirm_wakeup
41 .p2align 4,,15
42 .type __condvar_release_lock, @function
43 __condvar_release_lock:
44 movl 32(%rdi), %eax
45 leaq 32(%rdi), %rcx
46 .L11:
47 movl %eax, %edi
48 movl %eax, %edx
49 andl $-4, %edi
50 lock cmpxchgl %edi, (%rcx)
51 jne .L11
52 andl $3, %edx
53 cmpl $2, %edx
54 je .L20
55 .L10:
56 rep ret
57 .p2align 4,,10
58 .p2align 3
59 .L20:
60 xorb $-127, %sil
61 xorl %r10d, %r10d
62 movl $1, %edx
63 movq %rcx, %rdi
64 movl $202, %eax
65 #APP
66 # 209 "../sysdeps/nptl/futex-internal.h" 1
67 syscall
69 # 0 "" 2
70 #NO_APP
71 cmpq $-4096, %rax
72 jbe .L10
73 cmpl $-22, %eax
74 je .L10
75 cmpl $-14, %eax
76 je .L10
77 leaq .LC0(%rip), %rdi
78 subq $8, %rsp
79 call __libc_fatal@PLT
80 .size __condvar_release_lock, .-__condvar_release_lock
81 .p2align 4,,15
82 .type __condvar_dec_grefs, @function
83 __condvar_dec_grefs:
84 movl %esi, %esi
85 movl $-2, %eax
86 leaq 16(%rdi,%rsi,4), %rdi
87 lock xaddl %eax, (%rdi)
88 cmpl $3, %eax
89 je .L28
90 .L21:
91 rep ret
92 .p2align 4,,10
93 .p2align 3
94 .L28:
95 lock andl $-2, (%rdi)
96 xorl %r10d, %r10d
97 movl $202, %eax
98 xorb $-127, %dl
99 movl %edx, %esi
100 movl $2147483647, %edx
101 #APP
102 # 209 "../sysdeps/nptl/futex-internal.h" 1
103 syscall
105 # 0 "" 2
106 #NO_APP
107 cmpq $-4096, %rax
108 jbe .L21
109 cmpl $-22, %eax
110 je .L21
111 cmpl $-14, %eax
112 je .L21
113 leaq .LC0(%rip), %rdi
114 subq $8, %rsp
115 call __libc_fatal@PLT
116 .size __condvar_dec_grefs, .-__condvar_dec_grefs
117 .p2align 4,,15
118 .type __condvar_cancel_waiting, @function
119 __condvar_cancel_waiting:
120 pushq %r15
121 pushq %r14
122 leaq 32(%rdi), %r8
123 pushq %r13
124 pushq %r12
125 movq %rsi, %r9
126 pushq %rbp
127 pushq %rbx
128 movl %edx, %ebp
129 movq %rdi, %rbx
130 movl %ecx, %r14d
131 subq $8, %rsp
132 movl 32(%rdi), %eax
133 .L30:
134 testb $3, %al
135 jne .L54
136 movl %eax, %edx
137 orl $1, %edx
138 lock cmpxchgl %edx, (%r8)
139 jne .L30
140 .L31:
141 movq 8(%rbx), %rax
142 shrq %rax
143 cmpq %r9, %rax
144 ja .L42
145 movl 32(%rbx), %edx
146 shrl $2, %edx
147 addq %rdx, %rax
148 leaq (%rbx,%rbp,4), %rdx
149 cmpq %r9, %rax
150 movl 24(%rdx), %eax
151 ja .L40
152 cmpl $-536870912, %eax
153 je .L41
154 .L53:
155 subl $1, %eax
156 movl %r14d, %esi
157 movq %rbx, %rdi
158 movl %eax, 24(%rdx)
159 addq $8, %rsp
160 popq %rbx
161 popq %rbp
162 popq %r12
163 popq %r13
164 popq %r14
165 popq %r15
166 jmp __condvar_release_lock
167 .p2align 4,,10
168 .p2align 3
169 .L40:
170 testl %eax, %eax
171 jne .L53
172 .L42:
173 movq %rbx, %rdi
174 movl %r14d, %esi
175 call __condvar_release_lock
176 addq $8, %rsp
177 movq %rbx, %rdi
178 popq %rbx
179 popq %rbp
180 popq %r12
181 popq %r13
182 popq %r14
183 popq %r15
184 jmp __pthread_cond_signal@PLT
185 .p2align 4,,10
186 .p2align 3
187 .L54:
188 movl %r14d, %r13d
189 movl $202, %r12d
190 movl $1, %r15d
191 xorb $-128, %r13b
192 jmp .L33
193 .p2align 4,,10
194 .p2align 3
195 .L37:
196 movl (%r8), %eax
197 .L33:
198 movl %eax, %edx
199 movl %eax, %ecx
200 andl $-4, %edx
201 andl $3, %ecx
202 orl $2, %edx
203 cmpl $2, %ecx
204 je .L35
205 lock cmpxchgl %edx, (%r8)
206 jne .L33
207 testb $3, %al
208 je .L31
209 andl $-4, %eax
210 orl $2, %eax
211 movl %eax, %edx
212 .L35:
213 xorl %r10d, %r10d
214 movl %r13d, %esi
215 movq %r8, %rdi
216 movl %r12d, %eax
217 #APP
218 # 146 "../sysdeps/nptl/futex-internal.h" 1
219 syscall
221 # 0 "" 2
222 #NO_APP
223 cmpq $-4096, %rax
224 jbe .L37
225 leal 11(%rax), %ecx
226 cmpl $11, %ecx
227 ja .L38
228 movq %r15, %rax
229 salq %cl, %rax
230 testl $2177, %eax
231 jne .L37
232 .L38:
233 leaq .LC0(%rip), %rdi
234 call __libc_fatal@PLT
235 .p2align 4,,10
236 .p2align 3
237 .L41:
238 movq %rbx, %rdi
239 movl %r14d, %esi
240 call __condvar_release_lock
241 addq $8, %rsp
242 movq %rbx, %rdi
243 popq %rbx
244 popq %rbp
245 popq %r12
246 popq %r13
247 popq %r14
248 popq %r15
249 jmp __pthread_cond_broadcast@PLT
250 .size __condvar_cancel_waiting, .-__condvar_cancel_waiting
251 .p2align 4,,15
252 .type __condvar_cleanup_waiting, @function
253 __condvar_cleanup_waiting:
254 pushq %r12
255 pushq %rbp
256 pushq %rbx
257 movl (%rdi), %ebp
258 movq %rdi, %rbx
259 movq 8(%rdi), %r12
260 movl 24(%rdi), %edx
261 andl $1, %ebp
262 movl %ebp, %esi
263 movq %r12, %rdi
264 call __condvar_dec_grefs
265 movq (%rbx), %rsi
266 movl 24(%rbx), %ecx
267 movl %ebp, %edx
268 movq %r12, %rdi
269 shrq %rsi
270 call __condvar_cancel_waiting
271 movl 24(%rbx), %esi
272 leaq 40(%r12,%rbp,4), %rdi
273 xorl %r10d, %r10d
274 movl $1, %edx
275 movl $202, %eax
276 xorb $-127, %sil
277 #APP
278 # 209 "../sysdeps/nptl/futex-internal.h" 1
279 syscall
281 # 0 "" 2
282 #NO_APP
283 cmpq $-4096, %rax
284 ja .L59
285 .L56:
286 movl 24(%rbx), %esi
287 movq %r12, %rdi
288 call __condvar_confirm_wakeup
289 movq 16(%rbx), %rdi
290 popq %rbx
291 popq %rbp
292 popq %r12
293 jmp __pthread_mutex_cond_lock@PLT
294 .p2align 4,,10
295 .p2align 3
296 .L59:
297 cmpl $-22, %eax
298 je .L56
299 cmpl $-14, %eax
300 je .L56
301 leaq .LC0(%rip), %rdi
302 call __libc_fatal@PLT
303 .size __condvar_cleanup_waiting, .-__condvar_cleanup_waiting
304 .p2align 4,,15
305 .globl __pthread_cond_wait
306 .type __pthread_cond_wait, @function
307 __pthread_cond_wait:
308 pushq %r15
309 pushq %r14
310 pushq %r13
311 pushq %r12
312 movq %rsi, %r13
313 pushq %rbp
314 pushq %rbx
315 movl $2, %r12d
316 movq %rdi, %rbx
317 subq $120, %rsp
318 lock xaddq %r12, (%rdi)
319 movl $8, %ebp
320 movl %r12d, %eax
321 andl $1, %eax
322 movl %eax, 8(%rsp)
323 movq %r12, %rax
324 shrq %rax
325 movq %rax, (%rsp)
326 lock xaddl %ebp, 36(%rdi)
327 movl $128, %eax
328 andl $1, %ebp
329 movq %r13, %rdi
330 cmovne %eax, %ebp
331 xorl %esi, %esi
332 call __pthread_mutex_unlock_usercnt@PLT
333 testl %eax, %eax
334 movl %eax, %r14d
335 jne .L87
336 movl 8(%rsp), %r11d
337 leaq 80(%rsp), %rcx
338 leaq 0(,%r11,4), %r10
339 leaq 40(%rbx,%r10), %r15
340 movl (%r15), %eax
341 movq %rcx, 24(%rsp)
342 leaq 48(%rsp), %rcx
343 movl %r14d, 12(%rsp)
344 movq %r12, %r14
345 movq %r10, %r12
346 movq %rcx, 16(%rsp)
347 .L64:
348 testb $1, %al
349 jne .L85
350 testl %eax, %eax
351 je .L88
352 leal -2(%rax), %edx
353 lock cmpxchgl %edx, (%r15)
354 jne .L64
355 movl 12(%rsp), %r14d
356 movq 8(%rbx), %rdx
357 leaq 8(%rbx), %rcx
358 movq %rdx, %rax
359 shrq %rax
360 cmpq %rax, (%rsp)
361 jb .L89
362 .L72:
363 movl %ebp, %esi
364 movq %rbx, %rdi
365 call __condvar_confirm_wakeup
366 movq %r13, %rdi
367 call __pthread_mutex_cond_lock@PLT
368 testl %eax, %eax
369 cmove %r14d, %eax
370 addq $120, %rsp
371 popq %rbx
372 popq %rbp
373 popq %r12
374 popq %r13
375 popq %r14
376 popq %r15
378 .p2align 4,,10
379 .p2align 3
380 .L89:
381 movq %rdx, %rax
382 notq %rax
383 andl $1, %eax
384 cmpq %rax, %r11
385 jne .L72
386 movl (%r15), %eax
387 .L76:
388 movq (%rcx), %rsi
389 cmpq %rsi, %rdx
390 jne .L72
391 testb $1, %al
392 jne .L79
393 leal 2(%rax), %esi
394 lock cmpxchgl %esi, (%r15)
395 jne .L76
396 .L79:
397 movl %ebp, %esi
398 xorl %r10d, %r10d
399 movl $1, %edx
400 xorb $-127, %sil
401 movq %r15, %rdi
402 movl $202, %eax
403 #APP
404 # 209 "../sysdeps/nptl/futex-internal.h" 1
405 syscall
407 # 0 "" 2
408 #NO_APP
409 cmpq $-4096, %rax
410 jbe .L72
411 cmpl $-22, %eax
412 je .L72
413 cmpl $-14, %eax
414 je .L72
415 leaq .LC0(%rip), %rdi
416 call __libc_fatal@PLT
417 .p2align 4,,10
418 .p2align 3
419 .L88:
420 lock addl $2, 16(%rbx,%r12)
421 movl (%r15), %eax
422 testb $1, %al
423 jne .L68
424 movq %r11, 40(%rsp)
425 movq 8(%rbx), %rax
426 shrq %rax
427 cmpq %rax, (%rsp)
428 jb .L68
429 movq 24(%rsp), %rdx
430 movq 16(%rsp), %rdi
431 leaq __condvar_cleanup_waiting(%rip), %rsi
432 movq %r14, 80(%rsp)
433 movq %rbx, 88(%rsp)
434 movq %r13, 96(%rsp)
435 movl %ebp, 104(%rsp)
436 call __pthread_cleanup_push@PLT
437 xorl %ecx, %ecx
438 xorl %edx, %edx
439 xorl %esi, %esi
440 movl %ebp, %r8d
441 movq %r15, %rdi
442 call __futex_abstimed_wait_cancelable64@PLT
443 movq 16(%rsp), %rdi
444 xorl %esi, %esi
445 movl %eax, 32(%rsp)
446 call __pthread_cleanup_pop@PLT
447 movl 32(%rsp), %eax
448 cmpl $110, %eax
449 je .L82
450 cmpl $75, %eax
451 movq 40(%rsp), %r11
452 je .L82
453 movl 8(%rsp), %esi
454 movl %ebp, %edx
455 movq %rbx, %rdi
456 movq %r11, 32(%rsp)
457 call __condvar_dec_grefs
458 movl (%r15), %eax
459 movq 32(%rsp), %r11
460 jmp .L64
461 .p2align 4,,10
462 .p2align 3
463 .L87:
464 movl 8(%rsp), %edx
465 movq (%rsp), %rsi
466 movl %ebp, %ecx
467 movq %rbx, %rdi
468 call __condvar_cancel_waiting
469 movl %ebp, %esi
470 movq %rbx, %rdi
471 call __condvar_confirm_wakeup
472 addq $120, %rsp
473 movl %r14d, %eax
474 popq %rbx
475 popq %rbp
476 popq %r12
477 popq %r13
478 popq %r14
479 popq %r15
481 .p2align 4,,10
482 .p2align 3
483 .L82:
484 movl 8(%rsp), %r14d
485 movl %ebp, %edx
486 movq %rbx, %rdi
487 movl %eax, 12(%rsp)
488 movl %r14d, %esi
489 call __condvar_dec_grefs
490 movq (%rsp), %rsi
491 movl %r14d, %edx
492 movl %ebp, %ecx
493 movq %rbx, %rdi
494 call __condvar_cancel_waiting
495 movl 12(%rsp), %eax
496 movl %eax, %r14d
497 jmp .L72
498 .p2align 4,,10
499 .p2align 3
500 .L85:
501 movl 12(%rsp), %r14d
502 jmp .L72
503 .p2align 4,,10
504 .p2align 3
505 .L68:
506 movl 8(%rsp), %esi
507 movl %ebp, %edx
508 movq %rbx, %rdi
509 movl 12(%rsp), %r14d
510 call __condvar_dec_grefs
511 jmp .L72
512 .size __pthread_cond_wait, .-__pthread_cond_wait
513 .weak pthread_cond_wait
514 .set pthread_cond_wait,__pthread_cond_wait
515 .p2align 4,,15
516 .globl __pthread_cond_timedwait
517 .type __pthread_cond_timedwait, @function
518 __pthread_cond_timedwait:
519 cmpq $999999999, 8(%rdx)
520 ja .L112
521 pushq %r15
522 pushq %r14
523 leaq 36(%rdi), %rax
524 pushq %r13
525 pushq %r12
526 movl $2, %r13d
527 pushq %rbp
528 pushq %rbx
529 movq %rsi, %r12
530 movq %rdi, %rbx
531 subq $136, %rsp
532 movq %rdx, 32(%rsp)
533 movl 36(%rdi), %edx
534 shrl %edx
535 andl $1, %edx
536 movl %edx, 28(%rsp)
537 lock xaddq %r13, (%rdi)
538 movl $8, %ebp
539 movl %r13d, %ecx
540 andl $1, %ecx
541 movl %ecx, 4(%rsp)
542 movq %r13, %rcx
543 shrq %rcx
544 movq %rcx, 8(%rsp)
545 lock xaddl %ebp, (%rax)
546 movl $128, %eax
547 andl $1, %ebp
548 movq %r12, %rdi
549 cmovne %eax, %ebp
550 xorl %esi, %esi
551 call __pthread_mutex_unlock_usercnt@PLT
552 testl %eax, %eax
553 movl %eax, %r14d
554 jne .L121
555 movl 4(%rsp), %r11d
556 leaq 96(%rsp), %rsi
557 leaq 64(%rsp), %rcx
558 leaq 0(,%r11,4), %r10
559 leaq 40(%rbx,%r10), %r15
560 movl (%r15), %eax
561 movl %r14d, 24(%rsp)
562 movq %r13, %r14
563 movq %rsi, 40(%rsp)
564 movq %rcx, 16(%rsp)
565 movq %r10, %r13
566 .L94:
567 testb $1, %al
568 jne .L116
569 testl %eax, %eax
570 je .L122
571 leal -2(%rax), %edx
572 lock cmpxchgl %edx, (%r15)
573 jne .L94
574 movl 24(%rsp), %r14d
575 movq 8(%rbx), %rdx
576 leaq 8(%rbx), %rcx
577 movq %rdx, %rax
578 shrq %rax
579 cmpq %rax, 8(%rsp)
580 jb .L123
581 .L102:
582 movl %ebp, %esi
583 movq %rbx, %rdi
584 call __condvar_confirm_wakeup
585 movq %r12, %rdi
586 call __pthread_mutex_cond_lock@PLT
587 testl %eax, %eax
588 cmove %r14d, %eax
589 .L90:
590 addq $136, %rsp
591 popq %rbx
592 popq %rbp
593 popq %r12
594 popq %r13
595 popq %r14
596 popq %r15
598 .p2align 4,,10
599 .p2align 3
600 .L123:
601 movq %rdx, %rax
602 notq %rax
603 andl $1, %eax
604 cmpq %rax, %r11
605 jne .L102
606 movl (%r15), %eax
607 .L106:
608 movq (%rcx), %rsi
609 cmpq %rsi, %rdx
610 jne .L102
611 testb $1, %al
612 jne .L109
613 leal 2(%rax), %esi
614 lock cmpxchgl %esi, (%r15)
615 jne .L106
616 .L109:
617 movl %ebp, %esi
618 xorl %r10d, %r10d
619 movl $1, %edx
620 xorb $-127, %sil
621 movq %r15, %rdi
622 movl $202, %eax
623 #APP
624 # 209 "../sysdeps/nptl/futex-internal.h" 1
625 syscall
627 # 0 "" 2
628 #NO_APP
629 cmpq $-4096, %rax
630 jbe .L102
631 cmpl $-22, %eax
632 je .L102
633 cmpl $-14, %eax
634 je .L102
635 leaq .LC0(%rip), %rdi
636 call __libc_fatal@PLT
637 .p2align 4,,10
638 .p2align 3
639 .L122:
640 lock addl $2, 16(%rbx,%r13)
641 movl (%r15), %eax
642 testb $1, %al
643 jne .L98
644 movq %r11, 56(%rsp)
645 movq 8(%rbx), %rax
646 shrq %rax
647 cmpq %rax, 8(%rsp)
648 jb .L98
649 movq 40(%rsp), %rdx
650 movq 16(%rsp), %rdi
651 leaq __condvar_cleanup_waiting(%rip), %rsi
652 movq %r14, 96(%rsp)
653 movq %rbx, 104(%rsp)
654 movq %r12, 112(%rsp)
655 movl %ebp, 120(%rsp)
656 call __pthread_cleanup_push@PLT
657 movq 32(%rsp), %rcx
658 movl 28(%rsp), %edx
659 xorl %esi, %esi
660 movl %ebp, %r8d
661 movq %r15, %rdi
662 call __futex_abstimed_wait_cancelable64@PLT
663 movq 16(%rsp), %rdi
664 xorl %esi, %esi
665 movl %eax, 48(%rsp)
666 call __pthread_cleanup_pop@PLT
667 movl 48(%rsp), %eax
668 cmpl $110, %eax
669 je .L113
670 cmpl $75, %eax
671 movq 56(%rsp), %r11
672 je .L113
673 movl 4(%rsp), %esi
674 movl %ebp, %edx
675 movq %rbx, %rdi
676 movq %r11, 48(%rsp)
677 call __condvar_dec_grefs
678 movl (%r15), %eax
679 movq 48(%rsp), %r11
680 jmp .L94
681 .p2align 4,,10
682 .p2align 3
683 .L112:
684 movl $22, %eax
686 .p2align 4,,10
687 .p2align 3
688 .L121:
689 movl 4(%rsp), %edx
690 movq 8(%rsp), %rsi
691 movl %ebp, %ecx
692 movq %rbx, %rdi
693 call __condvar_cancel_waiting
694 movl %ebp, %esi
695 movq %rbx, %rdi
696 call __condvar_confirm_wakeup
697 movl %r14d, %eax
698 jmp .L90
699 .p2align 4,,10
700 .p2align 3
701 .L113:
702 movl 4(%rsp), %r14d
703 movl %ebp, %edx
704 movq %rbx, %rdi
705 movl %eax, 24(%rsp)
706 movl %r14d, %esi
707 call __condvar_dec_grefs
708 movq 8(%rsp), %rsi
709 movl %r14d, %edx
710 movl %ebp, %ecx
711 movq %rbx, %rdi
712 call __condvar_cancel_waiting
713 movl 24(%rsp), %eax
714 movl %eax, %r14d
715 jmp .L102
716 .p2align 4,,10
717 .p2align 3
718 .L116:
719 movl 24(%rsp), %r14d
720 jmp .L102
721 .p2align 4,,10
722 .p2align 3
723 .L98:
724 movl 4(%rsp), %esi
725 movl %ebp, %edx
726 movq %rbx, %rdi
727 movl 24(%rsp), %r14d
728 call __condvar_dec_grefs
729 jmp .L102
730 .size __pthread_cond_timedwait, .-__pthread_cond_timedwait
731 .weak pthread_cond_timedwait
732 .set pthread_cond_timedwait,__pthread_cond_timedwait
733 .p2align 4,,15
734 .globl __pthread_cond_clockwait
735 .type __pthread_cond_clockwait, @function
736 __pthread_cond_clockwait:
737 cmpq $999999999, 8(%rcx)
738 movl $22, %eax
739 ja .L146
740 cmpl $1, %edx
741 jbe .L156
742 rep ret
743 .p2align 4,,10
744 .p2align 3
745 .L156:
746 pushq %r15
747 pushq %r14
748 pushq %r13
749 pushq %r12
750 movl $2, %r13d
751 pushq %rbp
752 pushq %rbx
753 movq %rsi, %r12
754 movq %rdi, %rbx
755 subq $136, %rsp
756 movq %rcx, 32(%rsp)
757 movl %edx, 28(%rsp)
758 lock xaddq %r13, (%rdi)
759 movl $8, %ebp
760 movl %r13d, %eax
761 andl $1, %eax
762 movl %eax, 4(%rsp)
763 movq %r13, %rax
764 shrq %rax
765 movq %rax, 8(%rsp)
766 lock xaddl %ebp, 36(%rdi)
767 movl $128, %eax
768 andl $1, %ebp
769 movq %r12, %rdi
770 cmovne %eax, %ebp
771 xorl %esi, %esi
772 call __pthread_mutex_unlock_usercnt@PLT
773 testl %eax, %eax
774 movl %eax, %r14d
775 jne .L157
776 movl 4(%rsp), %r11d
777 leaq 96(%rsp), %rsi
778 leaq 64(%rsp), %rcx
779 leaq 0(,%r11,4), %r10
780 leaq 40(%rbx,%r10), %r15
781 movl (%r15), %eax
782 movl %r14d, 24(%rsp)
783 movq %r13, %r14
784 movq %rsi, 40(%rsp)
785 movq %rcx, 16(%rsp)
786 movq %r10, %r13
787 .L128:
788 testb $1, %al
789 jne .L151
790 testl %eax, %eax
791 je .L158
792 leal -2(%rax), %edx
793 lock cmpxchgl %edx, (%r15)
794 jne .L128
795 movl 24(%rsp), %r14d
796 movq 8(%rbx), %rdx
797 leaq 8(%rbx), %rcx
798 movq %rdx, %rax
799 shrq %rax
800 cmpq %rax, 8(%rsp)
801 jb .L159
802 .L136:
803 movl %ebp, %esi
804 movq %rbx, %rdi
805 call __condvar_confirm_wakeup
806 movq %r12, %rdi
807 call __pthread_mutex_cond_lock@PLT
808 testl %eax, %eax
809 cmove %r14d, %eax
810 .L124:
811 addq $136, %rsp
812 popq %rbx
813 popq %rbp
814 popq %r12
815 popq %r13
816 popq %r14
817 popq %r15
819 .p2align 4,,10
820 .p2align 3
821 .L159:
822 movq %rdx, %rax
823 notq %rax
824 andl $1, %eax
825 cmpq %rax, %r11
826 jne .L136
827 movl (%r15), %eax
828 .L140:
829 movq (%rcx), %rsi
830 cmpq %rsi, %rdx
831 jne .L136
832 testb $1, %al
833 jne .L143
834 leal 2(%rax), %esi
835 lock cmpxchgl %esi, (%r15)
836 jne .L140
837 .L143:
838 movl %ebp, %esi
839 xorl %r10d, %r10d
840 movl $1, %edx
841 xorb $-127, %sil
842 movq %r15, %rdi
843 movl $202, %eax
844 #APP
845 # 209 "../sysdeps/nptl/futex-internal.h" 1
846 syscall
848 # 0 "" 2
849 #NO_APP
850 cmpq $-4096, %rax
851 jbe .L136
852 cmpl $-22, %eax
853 je .L136
854 cmpl $-14, %eax
855 je .L136
856 leaq .LC0(%rip), %rdi
857 call __libc_fatal@PLT
858 .p2align 4,,10
859 .p2align 3
860 .L158:
861 lock addl $2, 16(%rbx,%r13)
862 movl (%r15), %eax
863 testb $1, %al
864 jne .L132
865 movq %r11, 56(%rsp)
866 movq 8(%rbx), %rax
867 shrq %rax
868 cmpq %rax, 8(%rsp)
869 jb .L132
870 movq 40(%rsp), %rdx
871 movq 16(%rsp), %rdi
872 leaq __condvar_cleanup_waiting(%rip), %rsi
873 movq %r14, 96(%rsp)
874 movq %rbx, 104(%rsp)
875 movq %r12, 112(%rsp)
876 movl %ebp, 120(%rsp)
877 call __pthread_cleanup_push@PLT
878 movq 32(%rsp), %rcx
879 movl 28(%rsp), %edx
880 xorl %esi, %esi
881 movl %ebp, %r8d
882 movq %r15, %rdi
883 call __futex_abstimed_wait_cancelable64@PLT
884 movq 16(%rsp), %rdi
885 xorl %esi, %esi
886 movl %eax, 48(%rsp)
887 call __pthread_cleanup_pop@PLT
888 movl 48(%rsp), %eax
889 cmpl $110, %eax
890 je .L148
891 cmpl $75, %eax
892 movq 56(%rsp), %r11
893 je .L148
894 movl 4(%rsp), %esi
895 movl %ebp, %edx
896 movq %rbx, %rdi
897 movq %r11, 48(%rsp)
898 call __condvar_dec_grefs
899 movl (%r15), %eax
900 movq 48(%rsp), %r11
901 jmp .L128
902 .p2align 4,,10
903 .p2align 3
904 .L146:
905 rep ret
906 .p2align 4,,10
907 .p2align 3
908 .L157:
909 movl 4(%rsp), %edx
910 movq 8(%rsp), %rsi
911 movl %ebp, %ecx
912 movq %rbx, %rdi
913 call __condvar_cancel_waiting
914 movl %ebp, %esi
915 movq %rbx, %rdi
916 call __condvar_confirm_wakeup
917 movl %r14d, %eax
918 jmp .L124
919 .p2align 4,,10
920 .p2align 3
921 .L148:
922 movl 4(%rsp), %r14d
923 movl %ebp, %edx
924 movq %rbx, %rdi
925 movl %eax, 24(%rsp)
926 movl %r14d, %esi
927 call __condvar_dec_grefs
928 movq 8(%rsp), %rsi
929 movl %r14d, %edx
930 movl %ebp, %ecx
931 movq %rbx, %rdi
932 call __condvar_cancel_waiting
933 movl 24(%rsp), %eax
934 movl %eax, %r14d
935 jmp .L136
936 .p2align 4,,10
937 .p2align 3
938 .L151:
939 movl 24(%rsp), %r14d
940 jmp .L136
941 .L132:
942 movl 4(%rsp), %esi
943 movl %ebp, %edx
944 movq %rbx, %rdi
945 movl 24(%rsp), %r14d
946 call __condvar_dec_grefs
947 jmp .L136
948 .size __pthread_cond_clockwait, .-__pthread_cond_clockwait
949 .weak pthread_cond_clockwait
950 .set pthread_cond_clockwait,__pthread_cond_clockwait