Created
October 3, 2016 16:12
-
-
Save androm3da/88d0a298ae46eeea887e89cf5b10d28b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ABRIDGED EXCERPT | |
splay: file format elf64-x86-64 | splay_no_landing: file format elf64-x86-64 | |
Disassembly of section .init: Disassembly of section .init: | |
0000000000007220 <_init>: 0000000000007220 <_init>: | |
7220: 48 83 ec 08 sub $0x8,%rsp 7220: 48 83 ec 08 sub $0x8,%rsp | |
7224: e8 13 05 00 00 callq 773c <call_gmon_start> 7224: e8 13 05 00 00 callq 773c <call_gmon_start> | |
7229: e8 b2 05 00 00 callq 77e0 <frame_dummy> 7229: e8 b2 05 00 00 callq 77e0 <frame_dummy> | |
722e: e8 cd 00 04 00 callq 47300 <__do_global_ctors_aux> | 722e: e8 cd ff 03 00 callq 47200 <__do_global_ctors_aux> | |
7233: 48 83 c4 08 add $0x8,%rsp 7233: 48 83 c4 08 add $0x8,%rsp | |
7237: c3 retq 7237: c3 retq | |
Disassembly of section .plt: Disassembly of section .plt: | |
0000000000007240 <pthread_getattr_np@plt-0x10>: 0000000000007240 <pthread_getattr_np@plt-0x10>: | |
7240: ff 35 aa 2d 25 00 pushq 0x252daa(%rip) # 259ff0 7240: ff 35 aa 2d 25 00 pushq 0x252daa(%rip) # 259ff0 | |
7246: ff 25 ac 2d 25 00 jmpq *0x252dac(%rip) # 259ff 7246: ff 25 ac 2d 25 00 jmpq *0x252dac(%rip) # 259ff | |
724c: 0f 1f 40 00 nopl 0x0(%rax) 724c: 0f 1f 40 00 nopl 0x0(%rax) | |
0000000000007250 <pthread_getattr_np@plt>: 0000000000007250 <pthread_getattr_np@plt>: | |
7250: ff 25 aa 2d 25 00 jmpq *0x252daa(%rip) # 25a00 7250: ff 25 aa 2d 25 00 jmpq *0x252daa(%rip) # 25a00 | |
7256: 68 00 00 00 00 pushq $0x0 7256: 68 00 00 00 00 pushq $0x0 | |
725b: e9 e0 ff ff ff jmpq 7240 <_init+0x20> 725b: e9 e0 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007260 <pthread_getspecific@plt>: 0000000000007260 <pthread_getspecific@plt>: | |
7260: ff 25 a2 2d 25 00 jmpq *0x252da2(%rip) # 25a00 7260: ff 25 a2 2d 25 00 jmpq *0x252da2(%rip) # 25a00 | |
7266: 68 01 00 00 00 pushq $0x1 7266: 68 01 00 00 00 pushq $0x1 | |
726b: e9 d0 ff ff ff jmpq 7240 <_init+0x20> 726b: e9 d0 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007270 <pthread_cond_destroy@plt>: 0000000000007270 <pthread_cond_destroy@plt>: | |
7270: ff 25 9a 2d 25 00 jmpq *0x252d9a(%rip) # 25a01 7270: ff 25 9a 2d 25 00 jmpq *0x252d9a(%rip) # 25a01 | |
7276: 68 02 00 00 00 pushq $0x2 7276: 68 02 00 00 00 pushq $0x2 | |
727b: e9 c0 ff ff ff jmpq 7240 <_init+0x20> 727b: e9 c0 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007280 <_Unwind_GetRegionStart@plt>: 0000000000007280 <_Unwind_GetRegionStart@plt>: | |
7280: ff 25 92 2d 25 00 jmpq *0x252d92(%rip) # 25a01 7280: ff 25 92 2d 25 00 jmpq *0x252d92(%rip) # 25a01 | |
7286: 68 03 00 00 00 pushq $0x3 7286: 68 03 00 00 00 pushq $0x3 | |
728b: e9 b0 ff ff ff jmpq 7240 <_init+0x20> 728b: e9 b0 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007290 <memset@plt>: 0000000000007290 <memset@plt>: | |
7290: ff 25 8a 2d 25 00 jmpq *0x252d8a(%rip) # 25a02 7290: ff 25 8a 2d 25 00 jmpq *0x252d8a(%rip) # 25a02 | |
7296: 68 04 00 00 00 pushq $0x4 7296: 68 04 00 00 00 pushq $0x4 | |
729b: e9 a0 ff ff ff jmpq 7240 <_init+0x20> 729b: e9 a0 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072a0 <snprintf@plt>: 00000000000072a0 <snprintf@plt>: | |
72a0: ff 25 82 2d 25 00 jmpq *0x252d82(%rip) # 25a02 72a0: ff 25 82 2d 25 00 jmpq *0x252d82(%rip) # 25a02 | |
72a6: 68 05 00 00 00 pushq $0x5 72a6: 68 05 00 00 00 pushq $0x5 | |
72ab: e9 90 ff ff ff jmpq 7240 <_init+0x20> 72ab: e9 90 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072b0 <_Unwind_SetGR@plt>: 00000000000072b0 <_Unwind_SetGR@plt>: | |
72b0: ff 25 7a 2d 25 00 jmpq *0x252d7a(%rip) # 25a03 72b0: ff 25 7a 2d 25 00 jmpq *0x252d7a(%rip) # 25a03 | |
72b6: 68 06 00 00 00 pushq $0x6 72b6: 68 06 00 00 00 pushq $0x6 | |
72bb: e9 80 ff ff ff jmpq 7240 <_init+0x20> 72bb: e9 80 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072c0 <close@plt>: 00000000000072c0 <close@plt>: | |
72c0: ff 25 72 2d 25 00 jmpq *0x252d72(%rip) # 25a03 72c0: ff 25 72 2d 25 00 jmpq *0x252d72(%rip) # 25a03 | |
72c6: 68 07 00 00 00 pushq $0x7 72c6: 68 07 00 00 00 pushq $0x7 | |
72cb: e9 70 ff ff ff jmpq 7240 <_init+0x20> 72cb: e9 70 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072d0 <_Unwind_GetDataRelBase@plt>: 00000000000072d0 <_Unwind_GetDataRelBase@plt>: | |
72d0: ff 25 6a 2d 25 00 jmpq *0x252d6a(%rip) # 25a04 72d0: ff 25 6a 2d 25 00 jmpq *0x252d6a(%rip) # 25a04 | |
72d6: 68 08 00 00 00 pushq $0x8 72d6: 68 08 00 00 00 pushq $0x8 | |
72db: e9 60 ff ff ff jmpq 7240 <_init+0x20> 72db: e9 60 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072e0 <abort@plt>: 00000000000072e0 <abort@plt>: | |
72e0: ff 25 62 2d 25 00 jmpq *0x252d62(%rip) # 25a04 72e0: ff 25 62 2d 25 00 jmpq *0x252d62(%rip) # 25a04 | |
72e6: 68 09 00 00 00 pushq $0x9 72e6: 68 09 00 00 00 pushq $0x9 | |
72eb: e9 50 ff ff ff jmpq 7240 <_init+0x20> 72eb: e9 50 ff ff ff jmpq 7240 <_init+0x20> | |
00000000000072f0 <pthread_setspecific@plt>: 00000000000072f0 <pthread_setspecific@plt>: | |
72f0: ff 25 5a 2d 25 00 jmpq *0x252d5a(%rip) # 25a05 72f0: ff 25 5a 2d 25 00 jmpq *0x252d5a(%rip) # 25a05 | |
72f6: 68 0a 00 00 00 pushq $0xa 72f6: 68 0a 00 00 00 pushq $0xa | |
72fb: e9 40 ff ff ff jmpq 7240 <_init+0x20> 72fb: e9 40 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007300 <memchr@plt>: 0000000000007300 <memchr@plt>: | |
7300: ff 25 52 2d 25 00 jmpq *0x252d52(%rip) # 25a05 7300: ff 25 52 2d 25 00 jmpq *0x252d52(%rip) # 25a05 | |
7306: 68 0b 00 00 00 pushq $0xb 7306: 68 0b 00 00 00 pushq $0xb | |
730b: e9 30 ff ff ff jmpq 7240 <_init+0x20> 730b: e9 30 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007310 <pthread_cond_signal@plt>: 0000000000007310 <pthread_cond_signal@plt>: | |
7310: ff 25 4a 2d 25 00 jmpq *0x252d4a(%rip) # 25a06 7310: ff 25 4a 2d 25 00 jmpq *0x252d4a(%rip) # 25a06 | |
7316: 68 0c 00 00 00 pushq $0xc 7316: 68 0c 00 00 00 pushq $0xc | |
731b: e9 20 ff ff ff jmpq 7240 <_init+0x20> 731b: e9 20 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007320 <pthread_mutexattr_destroy@plt>: 0000000000007320 <pthread_mutexattr_destroy@plt>: | |
7320: ff 25 42 2d 25 00 jmpq *0x252d42(%rip) # 25a06 7320: ff 25 42 2d 25 00 jmpq *0x252d42(%rip) # 25a06 | |
7326: 68 0d 00 00 00 pushq $0xd 7326: 68 0d 00 00 00 pushq $0xd | |
732b: e9 10 ff ff ff jmpq 7240 <_init+0x20> 732b: e9 10 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007330 <__register_atfork@plt>: 0000000000007330 <__register_atfork@plt>: | |
7330: ff 25 3a 2d 25 00 jmpq *0x252d3a(%rip) # 25a07 7330: ff 25 3a 2d 25 00 jmpq *0x252d3a(%rip) # 25a07 | |
7336: 68 0e 00 00 00 pushq $0xe 7336: 68 0e 00 00 00 pushq $0xe | |
733b: e9 00 ff ff ff jmpq 7240 <_init+0x20> 733b: e9 00 ff ff ff jmpq 7240 <_init+0x20> | |
0000000000007340 <__rawmemchr@plt>: 0000000000007340 <__rawmemchr@plt>: | |
7340: ff 25 32 2d 25 00 jmpq *0x252d32(%rip) # 25a07 7340: ff 25 32 2d 25 00 jmpq *0x252d32(%rip) # 25a07 | |
7346: 68 0f 00 00 00 pushq $0xf 7346: 68 0f 00 00 00 pushq $0xf | |
734b: e9 f0 fe ff ff jmpq 7240 <_init+0x20> 734b: e9 f0 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007350 <strncmp@plt>: 0000000000007350 <strncmp@plt>: | |
7350: ff 25 2a 2d 25 00 jmpq *0x252d2a(%rip) # 25a08 7350: ff 25 2a 2d 25 00 jmpq *0x252d2a(%rip) # 25a08 | |
7356: 68 10 00 00 00 pushq $0x10 7356: 68 10 00 00 00 pushq $0x10 | |
735b: e9 e0 fe ff ff jmpq 7240 <_init+0x20> 735b: e9 e0 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007360 <__libc_start_main@plt>: 0000000000007360 <__libc_start_main@plt>: | |
7360: ff 25 22 2d 25 00 jmpq *0x252d22(%rip) # 25a08 7360: ff 25 22 2d 25 00 jmpq *0x252d22(%rip) # 25a08 | |
7366: 68 11 00 00 00 pushq $0x11 7366: 68 11 00 00 00 pushq $0x11 | |
736b: e9 d0 fe ff ff jmpq 7240 <_init+0x20> 736b: e9 d0 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007370 <strerror_r@plt>: 0000000000007370 <strerror_r@plt>: | |
7370: ff 25 1a 2d 25 00 jmpq *0x252d1a(%rip) # 25a09 7370: ff 25 1a 2d 25 00 jmpq *0x252d1a(%rip) # 25a09 | |
7376: 68 12 00 00 00 pushq $0x12 7376: 68 12 00 00 00 pushq $0x12 | |
737b: e9 c0 fe ff ff jmpq 7240 <_init+0x20> 737b: e9 c0 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007380 <_Unwind_DeleteException@plt>: 0000000000007380 <_Unwind_DeleteException@plt>: | |
7380: ff 25 12 2d 25 00 jmpq *0x252d12(%rip) # 25a09 7380: ff 25 12 2d 25 00 jmpq *0x252d12(%rip) # 25a09 | |
7386: 68 13 00 00 00 pushq $0x13 7386: 68 13 00 00 00 pushq $0x13 | |
738b: e9 b0 fe ff ff jmpq 7240 <_init+0x20> 738b: e9 b0 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007390 <__cxa_atexit@plt>: 0000000000007390 <__cxa_atexit@plt>: | |
7390: ff 25 0a 2d 25 00 jmpq *0x252d0a(%rip) # 25a0a 7390: ff 25 0a 2d 25 00 jmpq *0x252d0a(%rip) # 25a0a | |
7396: 68 14 00 00 00 pushq $0x14 7396: 68 14 00 00 00 pushq $0x14 | |
739b: e9 a0 fe ff ff jmpq 7240 <_init+0x20> 739b: e9 a0 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073a0 <sbrk@plt>: 00000000000073a0 <sbrk@plt>: | |
73a0: ff 25 02 2d 25 00 jmpq *0x252d02(%rip) # 25a0a 73a0: ff 25 02 2d 25 00 jmpq *0x252d02(%rip) # 25a0a | |
73a6: 68 15 00 00 00 pushq $0x15 73a6: 68 15 00 00 00 pushq $0x15 | |
73ab: e9 90 fe ff ff jmpq 7240 <_init+0x20> 73ab: e9 90 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073b0 <sysconf@plt>: 00000000000073b0 <sysconf@plt>: | |
73b0: ff 25 fa 2c 25 00 jmpq *0x252cfa(%rip) # 25a0b 73b0: ff 25 fa 2c 25 00 jmpq *0x252cfa(%rip) # 25a0b | |
73b6: 68 16 00 00 00 pushq $0x16 73b6: 68 16 00 00 00 pushq $0x16 | |
73bb: e9 80 fe ff ff jmpq 7240 <_init+0x20> 73bb: e9 80 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073c0 <pthread_mutex_init@plt>: 00000000000073c0 <pthread_mutex_init@plt>: | |
73c0: ff 25 f2 2c 25 00 jmpq *0x252cf2(%rip) # 25a0b 73c0: ff 25 f2 2c 25 00 jmpq *0x252cf2(%rip) # 25a0b | |
73c6: 68 17 00 00 00 pushq $0x17 73c6: 68 17 00 00 00 pushq $0x17 | |
73cb: e9 70 fe ff ff jmpq 7240 <_init+0x20> 73cb: e9 70 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073d0 <__cxa_thread_atexit_impl@plt>: 00000000000073d0 <__cxa_thread_atexit_impl@plt>: | |
73d0: ff 25 ea 2c 25 00 jmpq *0x252cea(%rip) # 25a0c 73d0: ff 25 ea 2c 25 00 jmpq *0x252cea(%rip) # 25a0c | |
73d6: 68 18 00 00 00 pushq $0x18 73d6: 68 18 00 00 00 pushq $0x18 | |
73db: e9 60 fe ff ff jmpq 7240 <_init+0x20> 73db: e9 60 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073e0 <pthread_attr_destroy@plt>: 00000000000073e0 <pthread_attr_destroy@plt>: | |
73e0: ff 25 e2 2c 25 00 jmpq *0x252ce2(%rip) # 25a0c 73e0: ff 25 e2 2c 25 00 jmpq *0x252ce2(%rip) # 25a0c | |
73e6: 68 19 00 00 00 pushq $0x19 73e6: 68 19 00 00 00 pushq $0x19 | |
73eb: e9 50 fe ff ff jmpq 7240 <_init+0x20> 73eb: e9 50 fe ff ff jmpq 7240 <_init+0x20> | |
00000000000073f0 <strnlen@plt>: 00000000000073f0 <strnlen@plt>: | |
73f0: ff 25 da 2c 25 00 jmpq *0x252cda(%rip) # 25a0d 73f0: ff 25 da 2c 25 00 jmpq *0x252cda(%rip) # 25a0d | |
73f6: 68 1a 00 00 00 pushq $0x1a 73f6: 68 1a 00 00 00 pushq $0x1a | |
73fb: e9 40 fe ff ff jmpq 7240 <_init+0x20> 73fb: e9 40 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007400 <_Unwind_GetLanguageSpecificData@plt>: 0000000000007400 <_Unwind_GetLanguageSpecificData@plt>: | |
7400: ff 25 d2 2c 25 00 jmpq *0x252cd2(%rip) # 25a0d 7400: ff 25 d2 2c 25 00 jmpq *0x252cd2(%rip) # 25a0d | |
7406: 68 1b 00 00 00 pushq $0x1b 7406: 68 1b 00 00 00 pushq $0x1b | |
740b: e9 30 fe ff ff jmpq 7240 <_init+0x20> 740b: e9 30 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007410 <strlen@plt>: 0000000000007410 <strlen@plt>: | |
7410: ff 25 ca 2c 25 00 jmpq *0x252cca(%rip) # 25a0e 7410: ff 25 ca 2c 25 00 jmpq *0x252cca(%rip) # 25a0e | |
7416: 68 1c 00 00 00 pushq $0x1c 7416: 68 1c 00 00 00 pushq $0x1c | |
741b: e9 20 fe ff ff jmpq 7240 <_init+0x20> 741b: e9 20 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007420 <_Unwind_RaiseException@plt>: 0000000000007420 <_Unwind_RaiseException@plt>: | |
7420: ff 25 c2 2c 25 00 jmpq *0x252cc2(%rip) # 25a0e 7420: ff 25 c2 2c 25 00 jmpq *0x252cc2(%rip) # 25a0e | |
7426: 68 1d 00 00 00 pushq $0x1d 7426: 68 1d 00 00 00 pushq $0x1d | |
742b: e9 10 fe ff ff jmpq 7240 <_init+0x20> 742b: e9 10 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007430 <__cxa_finalize@plt>: 0000000000007430 <__cxa_finalize@plt>: | |
7430: ff 25 ba 2c 25 00 jmpq *0x252cba(%rip) # 25a0f 7430: ff 25 ba 2c 25 00 jmpq *0x252cba(%rip) # 25a0f | |
7436: 68 1e 00 00 00 pushq $0x1e 7436: 68 1e 00 00 00 pushq $0x1e | |
743b: e9 00 fe ff ff jmpq 7240 <_init+0x20> 743b: e9 00 fe ff ff jmpq 7240 <_init+0x20> | |
0000000000007440 <pthread_key_delete@plt>: 0000000000007440 <pthread_key_delete@plt>: | |
7440: ff 25 b2 2c 25 00 jmpq *0x252cb2(%rip) # 25a0f 7440: ff 25 b2 2c 25 00 jmpq *0x252cb2(%rip) # 25a0f | |
7446: 68 1f 00 00 00 pushq $0x1f 7446: 68 1f 00 00 00 pushq $0x1f | |
744b: e9 f0 fd ff ff jmpq 7240 <_init+0x20> 744b: e9 f0 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007450 <bsearch@plt>: 0000000000007450 <bsearch@plt>: | |
7450: ff 25 aa 2c 25 00 jmpq *0x252caa(%rip) # 25a10 7450: ff 25 aa 2c 25 00 jmpq *0x252caa(%rip) # 25a10 | |
7456: 68 20 00 00 00 pushq $0x20 7456: 68 20 00 00 00 pushq $0x20 | |
745b: e9 e0 fd ff ff jmpq 7240 <_init+0x20> 745b: e9 e0 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007460 <__tls_get_addr@plt>: 0000000000007460 <__tls_get_addr@plt>: | |
7460: ff 25 a2 2c 25 00 jmpq *0x252ca2(%rip) # 25a10 7460: ff 25 a2 2c 25 00 jmpq *0x252ca2(%rip) # 25a10 | |
7466: 68 21 00 00 00 pushq $0x21 7466: 68 21 00 00 00 pushq $0x21 | |
746b: e9 d0 fd ff ff jmpq 7240 <_init+0x20> 746b: e9 d0 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007470 <_Unwind_FindEnclosingFunction@plt>: 0000000000007470 <_Unwind_FindEnclosingFunction@plt>: | |
7470: ff 25 9a 2c 25 00 jmpq *0x252c9a(%rip) # 25a11 7470: ff 25 9a 2c 25 00 jmpq *0x252c9a(%rip) # 25a11 | |
7476: 68 22 00 00 00 pushq $0x22 7476: 68 22 00 00 00 pushq $0x22 | |
747b: e9 c0 fd ff ff jmpq 7240 <_init+0x20> 747b: e9 c0 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007480 <syscall@plt>: 0000000000007480 <syscall@plt>: | |
7480: ff 25 92 2c 25 00 jmpq *0x252c92(%rip) # 25a11 7480: ff 25 92 2c 25 00 jmpq *0x252c92(%rip) # 25a11 | |
7486: 68 23 00 00 00 pushq $0x23 7486: 68 23 00 00 00 pushq $0x23 | |
748b: e9 b0 fd ff ff jmpq 7240 <_init+0x20> 748b: e9 b0 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007490 <getpagesize@plt>: 0000000000007490 <getpagesize@plt>: | |
7490: ff 25 8a 2c 25 00 jmpq *0x252c8a(%rip) # 25a12 7490: ff 25 8a 2c 25 00 jmpq *0x252c8a(%rip) # 25a12 | |
7496: 68 24 00 00 00 pushq $0x24 7496: 68 24 00 00 00 pushq $0x24 | |
749b: e9 a0 fd ff ff jmpq 7240 <_init+0x20> 749b: e9 a0 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074a0 <_Unwind_Backtrace@plt>: 00000000000074a0 <_Unwind_Backtrace@plt>: | |
74a0: ff 25 82 2c 25 00 jmpq *0x252c82(%rip) # 25a12 74a0: ff 25 82 2c 25 00 jmpq *0x252c82(%rip) # 25a12 | |
74a6: 68 25 00 00 00 pushq $0x25 74a6: 68 25 00 00 00 pushq $0x25 | |
74ab: e9 90 fd ff ff jmpq 7240 <_init+0x20> 74ab: e9 90 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074b0 <pthread_attr_getstack@plt>: 00000000000074b0 <pthread_attr_getstack@plt>: | |
74b0: ff 25 7a 2c 25 00 jmpq *0x252c7a(%rip) # 25a13 74b0: ff 25 7a 2c 25 00 jmpq *0x252c7a(%rip) # 25a13 | |
74b6: 68 26 00 00 00 pushq $0x26 74b6: 68 26 00 00 00 pushq $0x26 | |
74bb: e9 80 fd ff ff jmpq 7240 <_init+0x20> 74bb: e9 80 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074c0 <pthread_self@plt>: 00000000000074c0 <pthread_self@plt>: | |
74c0: ff 25 72 2c 25 00 jmpq *0x252c72(%rip) # 25a13 74c0: ff 25 72 2c 25 00 jmpq *0x252c72(%rip) # 25a13 | |
74c6: 68 27 00 00 00 pushq $0x27 74c6: 68 27 00 00 00 pushq $0x27 | |
74cb: e9 70 fd ff ff jmpq 7240 <_init+0x20> 74cb: e9 70 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074d0 <sigaction@plt>: 00000000000074d0 <sigaction@plt>: | |
74d0: ff 25 6a 2c 25 00 jmpq *0x252c6a(%rip) # 25a14 74d0: ff 25 6a 2c 25 00 jmpq *0x252c6a(%rip) # 25a14 | |
74d6: 68 28 00 00 00 pushq $0x28 74d6: 68 28 00 00 00 pushq $0x28 | |
74db: e9 60 fd ff ff jmpq 7240 <_init+0x20> 74db: e9 60 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074e0 <strtol@plt>: 00000000000074e0 <strtol@plt>: | |
74e0: ff 25 62 2c 25 00 jmpq *0x252c62(%rip) # 25a14 74e0: ff 25 62 2c 25 00 jmpq *0x252c62(%rip) # 25a14 | |
74e6: 68 29 00 00 00 pushq $0x29 74e6: 68 29 00 00 00 pushq $0x29 | |
74eb: e9 50 fd ff ff jmpq 7240 <_init+0x20> 74eb: e9 50 fd ff ff jmpq 7240 <_init+0x20> | |
00000000000074f0 <readlink@plt>: 00000000000074f0 <readlink@plt>: | |
74f0: ff 25 5a 2c 25 00 jmpq *0x252c5a(%rip) # 25a15 74f0: ff 25 5a 2c 25 00 jmpq *0x252c5a(%rip) # 25a15 | |
74f6: 68 2a 00 00 00 pushq $0x2a 74f6: 68 2a 00 00 00 pushq $0x2a | |
74fb: e9 40 fd ff ff jmpq 7240 <_init+0x20> 74fb: e9 40 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007500 <signal@plt>: 0000000000007500 <signal@plt>: | |
7500: ff 25 52 2c 25 00 jmpq *0x252c52(%rip) # 25a15 7500: ff 25 52 2c 25 00 jmpq *0x252c52(%rip) # 25a15 | |
7506: 68 2b 00 00 00 pushq $0x2b 7506: 68 2b 00 00 00 pushq $0x2b | |
750b: e9 30 fd ff ff jmpq 7240 <_init+0x20> 750b: e9 30 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007510 <memmove@plt>: 0000000000007510 <memmove@plt>: | |
7510: ff 25 4a 2c 25 00 jmpq *0x252c4a(%rip) # 25a16 7510: ff 25 4a 2c 25 00 jmpq *0x252c4a(%rip) # 25a16 | |
7516: 68 2c 00 00 00 pushq $0x2c 7516: 68 2c 00 00 00 pushq $0x2c | |
751b: e9 20 fd ff ff jmpq 7240 <_init+0x20> 751b: e9 20 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007520 <strchr@plt>: 0000000000007520 <strchr@plt>: | |
7520: ff 25 42 2c 25 00 jmpq *0x252c42(%rip) # 25a16 7520: ff 25 42 2c 25 00 jmpq *0x252c42(%rip) # 25a16 | |
7526: 68 2d 00 00 00 pushq $0x2d 7526: 68 2d 00 00 00 pushq $0x2d | |
752b: e9 10 fd ff ff jmpq 7240 <_init+0x20> 752b: e9 10 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007530 <getenv@plt>: 0000000000007530 <getenv@plt>: | |
7530: ff 25 3a 2c 25 00 jmpq *0x252c3a(%rip) # 25a17 7530: ff 25 3a 2c 25 00 jmpq *0x252c3a(%rip) # 25a17 | |
7536: 68 2e 00 00 00 pushq $0x2e 7536: 68 2e 00 00 00 pushq $0x2e | |
753b: e9 00 fd ff ff jmpq 7240 <_init+0x20> 753b: e9 00 fd ff ff jmpq 7240 <_init+0x20> | |
0000000000007540 <_Unwind_GetIPInfo@plt>: 0000000000007540 <_Unwind_GetIPInfo@plt>: | |
7540: ff 25 32 2c 25 00 jmpq *0x252c32(%rip) # 25a17 7540: ff 25 32 2c 25 00 jmpq *0x252c32(%rip) # 25a17 | |
7546: 68 2f 00 00 00 pushq $0x2f 7546: 68 2f 00 00 00 pushq $0x2f | |
754b: e9 f0 fc ff ff jmpq 7240 <_init+0x20> 754b: e9 f0 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007550 <dl_iterate_phdr@plt>: 0000000000007550 <dl_iterate_phdr@plt>: | |
7550: ff 25 2a 2c 25 00 jmpq *0x252c2a(%rip) # 25a18 7550: ff 25 2a 2c 25 00 jmpq *0x252c2a(%rip) # 25a18 | |
7556: 68 30 00 00 00 pushq $0x30 7556: 68 30 00 00 00 pushq $0x30 | |
755b: e9 e0 fc ff ff jmpq 7240 <_init+0x20> 755b: e9 e0 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007560 <__errno_location@plt>: 0000000000007560 <__errno_location@plt>: | |
7560: ff 25 22 2c 25 00 jmpq *0x252c22(%rip) # 25a18 7560: ff 25 22 2c 25 00 jmpq *0x252c22(%rip) # 25a18 | |
7566: 68 31 00 00 00 pushq $0x31 7566: 68 31 00 00 00 pushq $0x31 | |
756b: e9 d0 fc ff ff jmpq 7240 <_init+0x20> 756b: e9 d0 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007570 <madvise@plt>: 0000000000007570 <madvise@plt>: | |
7570: ff 25 1a 2c 25 00 jmpq *0x252c1a(%rip) # 25a19 7570: ff 25 1a 2c 25 00 jmpq *0x252c1a(%rip) # 25a19 | |
7576: 68 32 00 00 00 pushq $0x32 7576: 68 32 00 00 00 pushq $0x32 | |
757b: e9 c0 fc ff ff jmpq 7240 <_init+0x20> 757b: e9 c0 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007580 <pthread_mutexattr_settype@plt>: 0000000000007580 <pthread_mutexattr_settype@plt>: | |
7580: ff 25 12 2c 25 00 jmpq *0x252c12(%rip) # 25a19 7580: ff 25 12 2c 25 00 jmpq *0x252c12(%rip) # 25a19 | |
7586: 68 33 00 00 00 pushq $0x33 7586: 68 33 00 00 00 pushq $0x33 | |
758b: e9 b0 fc ff ff jmpq 7240 <_init+0x20> 758b: e9 b0 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007590 <strcmp@plt>: 0000000000007590 <strcmp@plt>: | |
7590: ff 25 0a 2c 25 00 jmpq *0x252c0a(%rip) # 25a1a 7590: ff 25 0a 2c 25 00 jmpq *0x252c0a(%rip) # 25a1a | |
7596: 68 34 00 00 00 pushq $0x34 7596: 68 34 00 00 00 pushq $0x34 | |
759b: e9 a0 fc ff ff jmpq 7240 <_init+0x20> 759b: e9 a0 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075a0 <pthread_rwlock_rdlock@plt>: 00000000000075a0 <pthread_rwlock_rdlock@plt>: | |
75a0: ff 25 02 2c 25 00 jmpq *0x252c02(%rip) # 25a1a 75a0: ff 25 02 2c 25 00 jmpq *0x252c02(%rip) # 25a1a | |
75a6: 68 35 00 00 00 pushq $0x35 75a6: 68 35 00 00 00 pushq $0x35 | |
75ab: e9 90 fc ff ff jmpq 7240 <_init+0x20> 75ab: e9 90 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075b0 <pthread_cond_wait@plt>: 00000000000075b0 <pthread_cond_wait@plt>: | |
75b0: ff 25 fa 2b 25 00 jmpq *0x252bfa(%rip) # 25a1b 75b0: ff 25 fa 2b 25 00 jmpq *0x252bfa(%rip) # 25a1b | |
75b6: 68 36 00 00 00 pushq $0x36 75b6: 68 36 00 00 00 pushq $0x36 | |
75bb: e9 80 fc ff ff jmpq 7240 <_init+0x20> 75bb: e9 80 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075c0 <memcmp@plt>: 00000000000075c0 <memcmp@plt>: | |
75c0: ff 25 f2 2b 25 00 jmpq *0x252bf2(%rip) # 25a1b 75c0: ff 25 f2 2b 25 00 jmpq *0x252bf2(%rip) # 25a1b | |
75c6: 68 37 00 00 00 pushq $0x37 75c6: 68 37 00 00 00 pushq $0x37 | |
75cb: e9 70 fc ff ff jmpq 7240 <_init+0x20> 75cb: e9 70 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075d0 <munmap@plt>: 00000000000075d0 <munmap@plt>: | |
75d0: ff 25 ea 2b 25 00 jmpq *0x252bea(%rip) # 25a1c 75d0: ff 25 ea 2b 25 00 jmpq *0x252bea(%rip) # 25a1c | |
75d6: 68 38 00 00 00 pushq $0x38 75d6: 68 38 00 00 00 pushq $0x38 | |
75db: e9 60 fc ff ff jmpq 7240 <_init+0x20> 75db: e9 60 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075e0 <__xpg_strerror_r@plt>: 00000000000075e0 <__xpg_strerror_r@plt>: | |
75e0: ff 25 e2 2b 25 00 jmpq *0x252be2(%rip) # 25a1c 75e0: ff 25 e2 2b 25 00 jmpq *0x252be2(%rip) # 25a1c | |
75e6: 68 39 00 00 00 pushq $0x39 75e6: 68 39 00 00 00 pushq $0x39 | |
75eb: e9 50 fc ff ff jmpq 7240 <_init+0x20> 75eb: e9 50 fc ff ff jmpq 7240 <_init+0x20> | |
00000000000075f0 <strncpy@plt>: 00000000000075f0 <strncpy@plt>: | |
75f0: ff 25 da 2b 25 00 jmpq *0x252bda(%rip) # 25a1d 75f0: ff 25 da 2b 25 00 jmpq *0x252bda(%rip) # 25a1d | |
75f6: 68 3a 00 00 00 pushq $0x3a 75f6: 68 3a 00 00 00 pushq $0x3a | |
75fb: e9 40 fc ff ff jmpq 7240 <_init+0x20> 75fb: e9 40 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007600 <pthread_attr_init@plt>: 0000000000007600 <pthread_attr_init@plt>: | |
7600: ff 25 d2 2b 25 00 jmpq *0x252bd2(%rip) # 25a1d 7600: ff 25 d2 2b 25 00 jmpq *0x252bd2(%rip) # 25a1d | |
7606: 68 3b 00 00 00 pushq $0x3b 7606: 68 3b 00 00 00 pushq $0x3b | |
760b: e9 30 fc ff ff jmpq 7240 <_init+0x20> 760b: e9 30 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007610 <_Unwind_GetTextRelBase@plt>: 0000000000007610 <_Unwind_GetTextRelBase@plt>: | |
7610: ff 25 ca 2b 25 00 jmpq *0x252bca(%rip) # 25a1e 7610: ff 25 ca 2b 25 00 jmpq *0x252bca(%rip) # 25a1e | |
7616: 68 3c 00 00 00 pushq $0x3c 7616: 68 3c 00 00 00 pushq $0x3c | |
761b: e9 20 fc ff ff jmpq 7240 <_init+0x20> 761b: e9 20 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007620 <pthread_rwlock_unlock@plt>: 0000000000007620 <pthread_rwlock_unlock@plt>: | |
7620: ff 25 c2 2b 25 00 jmpq *0x252bc2(%rip) # 25a1e 7620: ff 25 c2 2b 25 00 jmpq *0x252bc2(%rip) # 25a1e | |
7626: 68 3d 00 00 00 pushq $0x3d 7626: 68 3d 00 00 00 pushq $0x3d | |
762b: e9 10 fc ff ff jmpq 7240 <_init+0x20> 762b: e9 10 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007630 <pthread_mutex_lock@plt>: 0000000000007630 <pthread_mutex_lock@plt>: | |
7630: ff 25 ba 2b 25 00 jmpq *0x252bba(%rip) # 25a1f 7630: ff 25 ba 2b 25 00 jmpq *0x252bba(%rip) # 25a1f | |
7636: 68 3e 00 00 00 pushq $0x3e 7636: 68 3e 00 00 00 pushq $0x3e | |
763b: e9 00 fc ff ff jmpq 7240 <_init+0x20> 763b: e9 00 fc ff ff jmpq 7240 <_init+0x20> | |
0000000000007640 <pthread_mutexattr_init@plt>: 0000000000007640 <pthread_mutexattr_init@plt>: | |
7640: ff 25 b2 2b 25 00 jmpq *0x252bb2(%rip) # 25a1f 7640: ff 25 b2 2b 25 00 jmpq *0x252bb2(%rip) # 25a1f | |
7646: 68 3f 00 00 00 pushq $0x3f 7646: 68 3f 00 00 00 pushq $0x3f | |
764b: e9 f0 fb ff ff jmpq 7240 <_init+0x20> 764b: e9 f0 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007650 <pthread_key_create@plt>: 0000000000007650 <pthread_key_create@plt>: | |
7650: ff 25 aa 2b 25 00 jmpq *0x252baa(%rip) # 25a20 7650: ff 25 aa 2b 25 00 jmpq *0x252baa(%rip) # 25a20 | |
7656: 68 40 00 00 00 pushq $0x40 7656: 68 40 00 00 00 pushq $0x40 | |
765b: e9 e0 fb ff ff jmpq 7240 <_init+0x20> 765b: e9 e0 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007660 <pthread_mutex_destroy@plt>: 0000000000007660 <pthread_mutex_destroy@plt>: | |
7660: ff 25 a2 2b 25 00 jmpq *0x252ba2(%rip) # 25a20 7660: ff 25 a2 2b 25 00 jmpq *0x252ba2(%rip) # 25a20 | |
7666: 68 41 00 00 00 pushq $0x41 7666: 68 41 00 00 00 pushq $0x41 | |
766b: e9 d0 fb ff ff jmpq 7240 <_init+0x20> 766b: e9 d0 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007670 <write@plt>: 0000000000007670 <write@plt>: | |
7670: ff 25 9a 2b 25 00 jmpq *0x252b9a(%rip) # 25a21 7670: ff 25 9a 2b 25 00 jmpq *0x252b9a(%rip) # 25a21 | |
7676: 68 42 00 00 00 pushq $0x42 7676: 68 42 00 00 00 pushq $0x42 | |
767b: e9 c0 fb ff ff jmpq 7240 <_init+0x20> 767b: e9 c0 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007680 <_Unwind_Resume@plt>: 0000000000007680 <_Unwind_Resume@plt>: | |
7680: ff 25 92 2b 25 00 jmpq *0x252b92(%rip) # 25a21 7680: ff 25 92 2b 25 00 jmpq *0x252b92(%rip) # 25a21 | |
7686: 68 43 00 00 00 pushq $0x43 7686: 68 43 00 00 00 pushq $0x43 | |
768b: e9 b0 fb ff ff jmpq 7240 <_init+0x20> 768b: e9 b0 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007690 <clock_gettime@plt>: 0000000000007690 <clock_gettime@plt>: | |
7690: ff 25 8a 2b 25 00 jmpq *0x252b8a(%rip) # 25a22 7690: ff 25 8a 2b 25 00 jmpq *0x252b8a(%rip) # 25a22 | |
7696: 68 44 00 00 00 pushq $0x44 7696: 68 44 00 00 00 pushq $0x44 | |
769b: e9 a0 fb ff ff jmpq 7240 <_init+0x20> 769b: e9 a0 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076a0 <sigaltstack@plt>: 00000000000076a0 <sigaltstack@plt>: | |
76a0: ff 25 82 2b 25 00 jmpq *0x252b82(%rip) # 25a22 76a0: ff 25 82 2b 25 00 jmpq *0x252b82(%rip) # 25a22 | |
76a6: 68 45 00 00 00 pushq $0x45 76a6: 68 45 00 00 00 pushq $0x45 | |
76ab: e9 90 fb ff ff jmpq 7240 <_init+0x20> 76ab: e9 90 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076b0 <pthread_mutex_unlock@plt>: 00000000000076b0 <pthread_mutex_unlock@plt>: | |
76b0: ff 25 7a 2b 25 00 jmpq *0x252b7a(%rip) # 25a23 76b0: ff 25 7a 2b 25 00 jmpq *0x252b7a(%rip) # 25a23 | |
76b6: 68 46 00 00 00 pushq $0x46 76b6: 68 46 00 00 00 pushq $0x46 | |
76bb: e9 80 fb ff ff jmpq 7240 <_init+0x20> 76bb: e9 80 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076c0 <memcpy@plt>: 00000000000076c0 <memcpy@plt>: | |
76c0: ff 25 72 2b 25 00 jmpq *0x252b72(%rip) # 25a23 76c0: ff 25 72 2b 25 00 jmpq *0x252b72(%rip) # 25a23 | |
76c6: 68 47 00 00 00 pushq $0x47 76c6: 68 47 00 00 00 pushq $0x47 | |
76cb: e9 70 fb ff ff jmpq 7240 <_init+0x20> 76cb: e9 70 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076d0 <fcntl@plt>: 00000000000076d0 <fcntl@plt>: | |
76d0: ff 25 6a 2b 25 00 jmpq *0x252b6a(%rip) # 25a24 76d0: ff 25 6a 2b 25 00 jmpq *0x252b6a(%rip) # 25a24 | |
76d6: 68 48 00 00 00 pushq $0x48 76d6: 68 48 00 00 00 pushq $0x48 | |
76db: e9 60 fb ff ff jmpq 7240 <_init+0x20> 76db: e9 60 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076e0 <open@plt>: 00000000000076e0 <open@plt>: | |
76e0: ff 25 62 2b 25 00 jmpq *0x252b62(%rip) # 25a24 76e0: ff 25 62 2b 25 00 jmpq *0x252b62(%rip) # 25a24 | |
76e6: 68 49 00 00 00 pushq $0x49 76e6: 68 49 00 00 00 pushq $0x49 | |
76eb: e9 50 fb ff ff jmpq 7240 <_init+0x20> 76eb: e9 50 fb ff ff jmpq 7240 <_init+0x20> | |
00000000000076f0 <mmap@plt>: 00000000000076f0 <mmap@plt>: | |
76f0: ff 25 5a 2b 25 00 jmpq *0x252b5a(%rip) # 25a25 76f0: ff 25 5a 2b 25 00 jmpq *0x252b5a(%rip) # 25a25 | |
76f6: 68 4a 00 00 00 pushq $0x4a 76f6: 68 4a 00 00 00 pushq $0x4a | |
76fb: e9 40 fb ff ff jmpq 7240 <_init+0x20> 76fb: e9 40 fb ff ff jmpq 7240 <_init+0x20> | |
0000000000007700 <_Unwind_SetIP@plt>: 0000000000007700 <_Unwind_SetIP@plt>: | |
7700: ff 25 52 2b 25 00 jmpq *0x252b52(%rip) # 25a25 7700: ff 25 52 2b 25 00 jmpq *0x252b52(%rip) # 25a25 | |
7706: 68 4b 00 00 00 pushq $0x4b 7706: 68 4b 00 00 00 pushq $0x4b | |
770b: e9 30 fb ff ff jmpq 7240 <_init+0x20> 770b: e9 30 fb ff ff jmpq 7240 <_init+0x20> | |
Disassembly of section .text: Disassembly of section .text: | |
0000000000007710 <_start>: 0000000000007710 <_start>: | |
7710: 31 ed xor %ebp,%ebp 7710: 31 ed xor %ebp,%ebp | |
7712: 49 89 d1 mov %rdx,%r9 7712: 49 89 d1 mov %rdx,%r9 | |
7715: 5e pop %rsi 7715: 5e pop %rsi | |
7716: 48 89 e2 mov %rsp,%rdx 7716: 48 89 e2 mov %rsp,%rdx | |
7719: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 7719: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp | |
771d: 50 push %rax 771d: 50 push %rax | |
771e: 54 push %rsp 771e: 54 push %rsp | |
771f: 4c 8b 05 ba 26 25 00 mov 0x2526ba(%rip),%r8 # 25 771f: 4c 8b 05 ba 26 25 00 mov 0x2526ba(%rip),%r8 # 25 | |
7726: 48 8b 0d 9b 27 25 00 mov 0x25279b(%rip),%rcx # 2 7726: 48 8b 0d 9b 27 25 00 mov 0x25279b(%rip),%rcx # 2 | |
772d: 48 8b 3d 94 28 25 00 mov 0x252894(%rip),%rdi # 2 772d: 48 8b 3d 94 28 25 00 mov 0x252894(%rip),%rdi # 2 | |
7734: e8 27 fc ff ff callq 7360 <__libc_start_main@plt> 7734: e8 27 fc ff ff callq 7360 <__libc_start_main@plt> | |
7739: f4 hlt 7739: f4 hlt | |
773a: 90 nop 773a: 90 nop | |
773b: 90 nop 773b: 90 nop | |
000000000000773c <call_gmon_start>: 000000000000773c <call_gmon_start>: | |
773c: 48 83 ec 08 sub $0x8,%rsp 773c: 48 83 ec 08 sub $0x8,%rsp | |
7740: 48 8b 05 d9 26 25 00 mov 0x2526d9(%rip),%rax # 2 7740: 48 8b 05 d9 26 25 00 mov 0x2526d9(%rip),%rax # 2 | |
7747: 48 85 c0 test %rax,%rax 7747: 48 85 c0 test %rax,%rax | |
774a: 74 02 je 774e <call_gmon_start+0x12> 774a: 74 02 je 774e <call_gmon_start+0x12> | |
774c: ff d0 callq *%rax 774c: ff d0 callq *%rax | |
774e: 48 83 c4 08 add $0x8,%rsp 774e: 48 83 c4 08 add $0x8,%rsp | |
7752: c3 retq 7752: c3 retq | |
7753: 90 nop 7753: 90 nop | |
7754: 90 nop 7754: 90 nop | |
7755: 90 nop 7755: 90 nop | |
7756: 90 nop 7756: 90 nop | |
7757: 90 nop 7757: 90 nop | |
7758: 90 nop 7758: 90 nop | |
7759: 90 nop 7759: 90 nop | |
775a: 90 nop 775a: 90 nop | |
775b: 90 nop 775b: 90 nop | |
775c: 90 nop 775c: 90 nop | |
775d: 90 nop 775d: 90 nop | |
775e: 90 nop 775e: 90 nop | |
775f: 90 nop 775f: 90 nop | |
0000000000007760 <__do_global_dtors_aux>: 0000000000007760 <__do_global_dtors_aux>: | |
7760: 55 push %rbp 7760: 55 push %rbp | |
7761: 80 3d 78 2c 25 00 00 cmpb $0x0,0x252c78(%rip) # 2 7761: 80 3d 78 2c 25 00 00 cmpb $0x0,0x252c78(%rip) # 2 | |
7768: 48 89 e5 mov %rsp,%rbp 7768: 48 89 e5 mov %rsp,%rbp | |
776b: 41 54 push %r12 776b: 41 54 push %r12 | |
776d: 53 push %rbx 776d: 53 push %rbx | |
776e: 75 62 jne 77d2 <__do_global_dtors_aux+0x 776e: 75 62 jne 77d2 <__do_global_dtors_aux+0x | |
7770: 48 83 3d 20 27 25 00 cmpq $0x0,0x252720(%rip) # 2 7770: 48 83 3d 20 27 25 00 cmpq $0x0,0x252720(%rip) # 2 | |
7777: 00 7777: 00 | |
7778: 74 0c je 7786 <__do_global_dtors_aux+0x 7778: 74 0c je 7786 <__do_global_dtors_aux+0x | |
777a: 48 8b 3d df 2a 25 00 mov 0x252adf(%rip),%rdi # 2 777a: 48 8b 3d df 2a 25 00 mov 0x252adf(%rip),%rdi # 2 | |
7781: e8 aa fc ff ff callq 7430 <__cxa_finalize@plt> 7781: e8 aa fc ff ff callq 7430 <__cxa_finalize@plt> | |
7786: 48 8d 1d b3 f5 24 00 lea 0x24f5b3(%rip),%rbx # 2 7786: 48 8d 1d b3 f5 24 00 lea 0x24f5b3(%rip),%rbx # 2 | |
778d: 4c 8d 25 a4 f5 24 00 lea 0x24f5a4(%rip),%r12 # 2 778d: 4c 8d 25 a4 f5 24 00 lea 0x24f5a4(%rip),%r12 # 2 | |
7794: 48 8b 05 4d 2c 25 00 mov 0x252c4d(%rip),%rax # 2 7794: 48 8b 05 4d 2c 25 00 mov 0x252c4d(%rip),%rax # 2 | |
779b: 4c 29 e3 sub %r12,%rbx 779b: 4c 29 e3 sub %r12,%rbx | |
779e: 48 c1 fb 03 sar $0x3,%rbx 779e: 48 c1 fb 03 sar $0x3,%rbx | |
77a2: 48 83 eb 01 sub $0x1,%rbx 77a2: 48 83 eb 01 sub $0x1,%rbx | |
77a6: 48 39 d8 cmp %rbx,%rax 77a6: 48 39 d8 cmp %rbx,%rax | |
77a9: 73 20 jae 77cb <__do_global_dtors_aux+0x 77a9: 73 20 jae 77cb <__do_global_dtors_aux+0x | |
77ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) 77ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
77b0: 48 83 c0 01 add $0x1,%rax 77b0: 48 83 c0 01 add $0x1,%rax | |
77b4: 48 89 05 2d 2c 25 00 mov %rax,0x252c2d(%rip) # 2 77b4: 48 89 05 2d 2c 25 00 mov %rax,0x252c2d(%rip) # 2 | |
77bb: 41 ff 14 c4 callq *(%r12,%rax,8) 77bb: 41 ff 14 c4 callq *(%r12,%rax,8) | |
77bf: 48 8b 05 22 2c 25 00 mov 0x252c22(%rip),%rax # 2 77bf: 48 8b 05 22 2c 25 00 mov 0x252c22(%rip),%rax # 2 | |
77c6: 48 39 d8 cmp %rbx,%rax 77c6: 48 39 d8 cmp %rbx,%rax | |
77c9: 72 e5 jb 77b0 <__do_global_dtors_aux+0x 77c9: 72 e5 jb 77b0 <__do_global_dtors_aux+0x | |
77cb: c6 05 0e 2c 25 00 01 movb $0x1,0x252c0e(%rip) # 2 77cb: c6 05 0e 2c 25 00 01 movb $0x1,0x252c0e(%rip) # 2 | |
77d2: 5b pop %rbx 77d2: 5b pop %rbx | |
77d3: 41 5c pop %r12 77d3: 41 5c pop %r12 | |
77d5: 5d pop %rbp 77d5: 5d pop %rbp | |
77d6: c3 retq 77d6: c3 retq | |
77d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 77d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
77de: 00 00 77de: 00 00 | |
00000000000077e0 <frame_dummy>: 00000000000077e0 <frame_dummy>: | |
77e0: 48 83 3d 60 f5 24 00 cmpq $0x0,0x24f560(%rip) # 2 77e0: 48 83 3d 60 f5 24 00 cmpq $0x0,0x24f560(%rip) # 2 | |
77e7: 00 77e7: 00 | |
77e8: 55 push %rbp 77e8: 55 push %rbp | |
77e9: 48 89 e5 mov %rsp,%rbp 77e9: 48 89 e5 mov %rsp,%rbp | |
77ec: 74 1a je 7808 <frame_dummy+0x28> 77ec: 74 1a je 7808 <frame_dummy+0x28> | |
77ee: 48 8b 05 33 26 25 00 mov 0x252633(%rip),%rax # 2 77ee: 48 8b 05 33 26 25 00 mov 0x252633(%rip),%rax # 2 | |
77f5: 48 85 c0 test %rax,%rax 77f5: 48 85 c0 test %rax,%rax | |
77f8: 74 0e je 7808 <frame_dummy+0x28> 77f8: 74 0e je 7808 <frame_dummy+0x28> | |
77fa: 5d pop %rbp 77fa: 5d pop %rbp | |
77fb: 48 8d 3d 46 f5 24 00 lea 0x24f546(%rip),%rdi # 2 77fb: 48 8d 3d 46 f5 24 00 lea 0x24f546(%rip),%rdi # 2 | |
7802: ff e0 jmpq *%rax 7802: ff e0 jmpq *%rax | |
7804: 0f 1f 40 00 nopl 0x0(%rax) 7804: 0f 1f 40 00 nopl 0x0(%rax) | |
7808: 5d pop %rbp 7808: 5d pop %rbp | |
7809: c3 retq 7809: c3 retq | |
780a: 90 nop 780a: 90 nop | |
780b: 90 nop 780b: 90 nop | |
780c: 90 nop 780c: 90 nop | |
780d: 90 nop 780d: 90 nop | |
780e: 90 nop 780e: 90 nop | |
780f: 90 nop 780f: 90 nop | |
0000000000007810 <_ZN4drop17hddf9fd0101172c6cE>: 0000000000007810 <_ZN4drop17hddf9fd0101172c6cE>: | |
7810: 55 push %rbp 7810: 55 push %rbp | |
7811: 48 89 e5 mov %rsp,%rbp 7811: 48 89 e5 mov %rsp,%rbp | |
7814: 41 56 push %r14 7814: 41 56 push %r14 | |
7816: 53 push %rbx 7816: 53 push %rbx | |
7817: 48 83 ec 10 sub $0x10,%rsp 7817: 48 83 ec 10 sub $0x10,%rsp | |
781b: 49 89 fe mov %rdi,%r14 781b: 49 89 fe mov %rdi,%r14 | |
781e: 41 80 7e 08 d4 cmpb $0xd4,0x8(%r14) 781e: 41 80 7e 08 d4 cmpb $0xd4,0x8(%r14) | |
7823: 75 7f jne 78a4 <_ZN4drop17hddf9fd0101172 7823: 75 7f jne 78a4 <_ZN4drop17hddf9fd0101172 | |
7825: 49 8b 1e mov (%r14),%rbx 7825: 49 8b 1e mov (%r14),%rbx | |
7828: eb 0c jmp 7836 <_ZN4drop17hddf9fd0101172 7828: eb 0c jmp 7836 <_ZN4drop17hddf9fd0101172 | |
782a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 782a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | |
7830: 48 89 c3 mov %rax,%rbx 7830: 48 89 c3 mov %rax,%rbx | |
7833: 49 89 1e mov %rbx,(%r14) 7833: 49 89 1e mov %rbx,(%r14) | |
7836: 48 8b 43 08 mov 0x8(%rbx),%rax 7836: 48 8b 43 08 mov 0x8(%rbx),%rax | |
783a: 48 85 c0 test %rax,%rax 783a: 48 85 c0 test %rax,%rax | |
783d: 75 f1 jne 7830 <_ZN4drop17hddf9fd0101172 783d: 75 f1 jne 7830 <_ZN4drop17hddf9fd0101172 | |
783f: 48 8b 43 10 mov 0x10(%rbx),%rax 783f: 48 8b 43 10 mov 0x10(%rbx),%rax | |
7843: 48 85 c0 test %rax,%rax 7843: 48 85 c0 test %rax,%rax | |
7846: 74 19 je 7861 <_ZN4drop17hddf9fd0101172 7846: 74 19 je 7861 <_ZN4drop17hddf9fd0101172 | |
7848: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 7848: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) | |
784f: 00 784f: 00 | |
7850: c6 45 e8 d4 movb $0xd4,-0x18(%rbp) 7850: c6 45 e8 d4 movb $0xd4,-0x18(%rbp) | |
7854: 48 89 45 e0 mov %rax,-0x20(%rbp) 7854: 48 89 45 e0 mov %rax,-0x20(%rbp) | |
7858: 48 8d 7d e0 lea -0x20(%rbp),%rdi 7858: 48 8d 7d e0 lea -0x20(%rbp),%rdi | |
785c: e8 af ff ff ff callq 7810 <_ZN4drop17hddf9fd0101172 785c: e8 af ff ff ff callq 7810 <_ZN4drop17hddf9fd0101172 | |
7861: 48 8b 43 18 mov 0x18(%rbx),%rax 7861: 48 8b 43 18 mov 0x18(%rbx),%rax | |
7865: 48 85 c0 test %rax,%rax 7865: 48 85 c0 test %rax,%rax | |
7868: 74 19 je 7883 <_ZN4drop17hddf9fd0101172 7868: 74 19 je 7883 <_ZN4drop17hddf9fd0101172 | |
786a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) 786a: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) | |
7871: 00 7871: 00 | |
7872: c6 45 e8 d4 movb $0xd4,-0x18(%rbp) 7872: c6 45 e8 d4 movb $0xd4,-0x18(%rbp) | |
7876: 48 89 45 e0 mov %rax,-0x20(%rbp) 7876: 48 89 45 e0 mov %rax,-0x20(%rbp) | |
787a: 48 8d 7d e0 lea -0x20(%rbp),%rdi 787a: 48 8d 7d e0 lea -0x20(%rbp),%rdi | |
787e: e8 8d ff ff ff callq 7810 <_ZN4drop17hddf9fd0101172 787e: e8 8d ff ff ff callq 7810 <_ZN4drop17hddf9fd0101172 | |
7883: 49 8b 3e mov (%r14),%rdi 7883: 49 8b 3e mov (%r14),%rdi | |
7886: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax 7886: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax | |
788d: 1d 1d 1d 788d: 1d 1d 1d | |
7890: 48 39 c7 cmp %rax,%rdi 7890: 48 39 c7 cmp %rax,%rdi | |
7893: 74 0f je 78a4 <_ZN4drop17hddf9fd0101172 7893: 74 0f je 78a4 <_ZN4drop17hddf9fd0101172 | |
7895: be 28 00 00 00 mov $0x28,%esi 7895: be 28 00 00 00 mov $0x28,%esi | |
789a: ba 08 00 00 00 mov $0x8,%edx 789a: ba 08 00 00 00 mov $0x8,%edx | |
789f: e8 7c 11 01 00 callq 18a20 <__rust_deallocate> | 789f: e8 7c 10 01 00 callq 18920 <__rust_deallocate> | |
78a4: 48 83 c4 10 add $0x10,%rsp 78a4: 48 83 c4 10 add $0x10,%rsp | |
78a8: 5b pop %rbx 78a8: 5b pop %rbx | |
78a9: 41 5e pop %r14 78a9: 41 5e pop %r14 | |
78ab: 5d pop %rbp 78ab: 5d pop %rbp | |
78ac: c3 retq 78ac: c3 retq | |
78ad: 90 nop 78ad: 90 nop | |
78ae: 90 nop 78ae: 90 nop | |
78af: 90 nop 78af: 90 nop | |
00000000000078b0 <_ZN29_$LT$splay..Tree$LT$T$GT$$GT$4link17hee30bf7909124682E 00000000000078b0 <_ZN29_$LT$splay..Tree$LT$T$GT$$GT$4link17hee30bf7909124682E | |
self.node = child; self.node = child; | |
true true | |
} } | |
} } | |
fn link(&mut self, index: usize, mut tree: Tree<T>) { fn link(&mut self, index: usize, mut tree: Tree<T>) { | |
78b0: 55 push %rbp 78b0: 55 push %rbp | |
78b1: 48 89 e5 mov %rsp,%rbp 78b1: 48 89 e5 mov %rsp,%rbp | |
78b4: 53 push %rbx | 78b4: 48 83 ec 50 sub $0x50,%rsp | |
78b5: 48 83 ec 58 sub $0x58,%rsp | 78b8: 48 8b 02 mov (%rdx),%rax | |
78b9: 48 89 75 f0 mov %rsi,-0x10(%rbp) | 78bb: 48 89 75 f8 mov %rsi,-0x8(%rbp) | |
78bd: 0f 10 02 movups (%rdx),%xmm0 < | |
78c0: 0f 29 45 e0 movaps %xmm0,-0x20(%rbp) < | |
78c4: 48 83 fe 02 cmp $0x2,%rsi < | |
if unsafe { (*self.node).children[index] } != ptr::null_mut() { < | |
78c8: 73 5d jae 7927 <_ZN29_$LT$splay..Tree$LT < | |
78ca: 48 8b 07 mov (%rdi),%rax < | |
78cd: 48 83 7c f0 10 00 cmpq $0x0,0x10(%rax,%rsi,8) < | |
78d3: 75 65 jne 793a <_ZN29_$LT$splay..Tree$LT < | |
fn new(value: T) -> Tree<T> { < | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } < | |
} < | |
< | |
fn parent(&mut self) -> Option<usize> { < | |
let parent = unsafe { (*self.node).parent }; < | |
78d5: 48 8b 45 e0 mov -0x20(%rbp),%rax < | |
78d9: 48 8b 48 08 mov 0x8(%rax),%rcx < | |
< | |
fn link(&mut self, index: usize, mut tree: Tree<T>) { < | |
if unsafe { (*self.node).children[index] } != ptr::null_mut() { if unsafe { (*self.node).children[index] } != ptr::null_mut() { | |
> 78bf: 48 83 fe 01 cmp $0x1,%rsi | |
> 78c3: 0f 87 95 00 00 00 ja 795e <_ZN29_$LT$splay..Tree$LT | |
> 78c9: 48 8b 0f mov (%rdi),%rcx | |
> 78cc: 48 83 7c f1 10 00 cmpq $0x0,0x10(%rcx,%rsi,8) | |
> 78d2: 74 5f je 7933 <_ZN29_$LT$splay..Tree$LT | |
> 78d4: 48 8d 45 f8 lea -0x8(%rbp),%rax | |
panic!("Cannot link a tree because another node is linked at inde panic!("Cannot link a tree because another node is linked at inde | |
} | 78d8: 48 89 45 e8 mov %rax,-0x18(%rbp) | |
while tree.parent().is_some() {} | 78dc: 48 8b 05 e5 24 25 00 mov 0x2524e5(%rip),%rax # 2 | |
78dd: 48 85 c9 test %rcx,%rcx | 78e3: 48 89 45 f0 mov %rax,-0x10(%rbp) | |
78e0: 74 1e je 7900 <_ZN29_$LT$splay..Tree$LT | 78e7: 48 8d 05 ea 10 25 00 lea 0x2510ea(%rip),%rax # 2 | |
78e2: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs: | 78ee: 48 89 45 b8 mov %rax,-0x48(%rbp) | |
78e9: 1f 84 00 00 00 00 00 | 78f2: 48 c7 45 c0 01 00 00 movq $0x1,-0x40(%rbp) | |
78f0: 48 89 c8 mov %rcx,%rax | 78f9: 00 | |
> 78fa: 48 c7 45 c8 00 00 00 movq $0x0,-0x38(%rbp) | |
> 7901: 00 | |
> 7902: 48 8d 45 e8 lea -0x18(%rbp),%rax | |
> 7906: 48 89 45 d8 mov %rax,-0x28(%rbp) | |
> 790a: 48 c7 45 e0 01 00 00 movq $0x1,-0x20(%rbp) | |
> 7911: 00 | |
> | |
> struct Node<T> { | |
> index: usize, | |
> parent: *mut Node<T>, | |
> children: [*mut Node<T>; 2], | |
> value: T, | |
> 7912: 48 8d 35 cf 10 25 00 lea 0x2510cf(%rip),%rsi # 2 | |
> 7919: 48 8d 7d b8 lea -0x48(%rbp),%rdi | |
> 791d: e8 be 71 00 00 callq eae0 <_ZN3std9panicking15begin | |
> 7922: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs: | |
> 7929: 1f 84 00 00 00 00 00 | |
> 7930: 48 89 c8 mov %rcx,%rax | |
fn new(value: T) -> Tree<T> { fn new(value: T) -> Tree<T> { | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
78f3: 48 8b 48 08 mov 0x8(%rax),%rcx | 7933: 48 8b 48 08 mov 0x8(%rax),%rcx | |
if parent == ptr::null_mut() { if parent == ptr::null_mut() { | |
78f7: 48 85 c9 test %rcx,%rcx | 7937: 48 85 c9 test %rcx,%rcx | |
78fa: 75 f4 jne 78f0 <_ZN29_$LT$splay..Tree$LT | 793a: 75 f4 jne 7930 <_ZN29_$LT$splay..Tree$LT | |
None < | |
} else { < | |
let index = unsafe { (*self.node).index }; < | |
self.node = parent; < | |
78fc: 48 89 45 e0 mov %rax,-0x20(%rbp) < | |
if unsafe { (*self.node).children[index] } != ptr::null_mut() { if unsafe { (*self.node).children[index] } != ptr::null_mut() { | |
panic!("Cannot link a tree because another node is linked at inde panic!("Cannot link a tree because another node is linked at inde | |
} } | |
while tree.parent().is_some() {} while tree.parent().is_some() {} | |
unsafe { unsafe { | |
(*tree.node).index = index; (*tree.node).index = index; | |
7900: 48 89 30 mov %rsi,(%rax) | 793c: 48 89 30 mov %rsi,(%rax) | |
(*tree.node).parent = self.node; (*tree.node).parent = self.node; | |
7903: 48 8b 0f mov (%rdi),%rcx | 793f: 48 8b 0f mov (%rdi),%rcx | |
7906: 48 89 48 08 mov %rcx,0x8(%rax) | 7942: 48 89 48 08 mov %rcx,0x8(%rax) | |
(*self.node).children[index] = tree.node; (*self.node).children[index] = tree.node; | |
790a: 48 8b 75 f0 mov -0x10(%rbp),%rsi | 7946: 48 8b 75 f8 mov -0x8(%rbp),%rsi | |
790e: 48 83 fe 01 cmp $0x1,%rsi | 794a: 48 83 fe 01 cmp $0x1,%rsi | |
7912: 77 76 ja 798a <_ZN29_$LT$splay..Tree$LT | 794e: 77 1f ja 796f <_ZN29_$LT$splay..Tree$LT | |
7914: 48 8b 07 mov (%rdi),%rax | 7950: 48 8b 0f mov (%rdi),%rcx | |
7917: 48 8b 4d e0 mov -0x20(%rbp),%rcx | 7953: 48 89 44 f1 10 mov %rax,0x10(%rcx,%rsi,8) | |
791b: 48 89 4c f0 10 mov %rcx,0x10(%rax,%rsi,8) < | |
self.node = child; self.node = child; | |
true true | |
} } | |
} } | |
fn link(&mut self, index: usize, mut tree: Tree<T>) { fn link(&mut self, index: usize, mut tree: Tree<T>) { | |
7920: 48 83 c4 58 add $0x58,%rsp | 7958: 48 83 c4 50 add $0x50,%rsp | |
7924: 5b pop %rbx | 795c: 5d pop %rbp | |
7925: 5d pop %rbp | 795d: c3 retq | |
7926: c3 retq < | |
if unsafe { (*self.node).children[index] } != ptr::null_mut() { if unsafe { (*self.node).children[index] } != ptr::null_mut() { | |
7927: 48 8d 3d 7a 10 25 00 lea 0x25107a(%rip),%rdi # 2 | 795e: 48 8d 3d 43 10 25 00 lea 0x251043(%rip),%rdi # 2 | |
792e: ba 02 00 00 00 mov $0x2,%edx | 7965: ba 02 00 00 00 mov $0x2,%edx | |
7933: e8 08 ce 03 00 callq 44740 <_ZN4core9panicking18pan | 796a: e8 d1 cc 03 00 callq 44640 <_ZN4core9panicking18pan | |
7938: eb 61 jmp 799b <_ZN29_$LT$splay..Tree$LT < | |
793a: 48 8d 45 f0 lea -0x10(%rbp),%rax < | |
panic!("Cannot link a tree because another node is linked at inde < | |
793e: 48 89 45 d0 mov %rax,-0x30(%rbp) < | |
7942: 48 8b 05 7f 24 25 00 mov 0x25247f(%rip),%rax # 2 < | |
7949: 48 89 45 d8 mov %rax,-0x28(%rbp) < | |
794d: 48 8d 05 84 10 25 00 lea 0x251084(%rip),%rax # 2 < | |
7954: 48 89 45 a0 mov %rax,-0x60(%rbp) < | |
7958: 48 c7 45 a8 01 00 00 movq $0x1,-0x58(%rbp) < | |
795f: 00 < | |
7960: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) < | |
7967: 00 < | |
7968: 48 8d 45 d0 lea -0x30(%rbp),%rax < | |
796c: 48 89 45 c0 mov %rax,-0x40(%rbp) < | |
7970: 48 c7 45 c8 01 00 00 movq $0x1,-0x38(%rbp) < | |
7977: 00 < | |
< | |
struct Node<T> { < | |
index: usize, < | |
parent: *mut Node<T>, < | |
children: [*mut Node<T>; 2], < | |
value: T, < | |
7978: 48 8d 35 69 10 25 00 lea 0x251069(%rip),%rsi # 2 < | |
797f: 48 8d 7d a0 lea -0x60(%rbp),%rdi < | |
7983: e8 58 72 00 00 callq ebe0 <_ZN3std9panicking15begin < | |
7988: eb 11 jmp 799b <_ZN29_$LT$splay..Tree$LT < | |
} } | |
while tree.parent().is_some() {} while tree.parent().is_some() {} | |
unsafe { unsafe { | |
(*tree.node).index = index; (*tree.node).index = index; | |
(*tree.node).parent = self.node; (*tree.node).parent = self.node; | |
(*self.node).children[index] = tree.node; (*self.node).children[index] = tree.node; | |
798a: 48 8d 3d 2f 10 25 00 lea 0x25102f(%rip),%rdi # 2 | 796f: 48 8d 3d 4a 10 25 00 lea 0x25104a(%rip),%rdi # 2 | |
7991: ba 02 00 00 00 mov $0x2,%edx | 7976: ba 02 00 00 00 mov $0x2,%edx | |
7996: e8 a5 cd 03 00 callq 44740 <_ZN4core9panicking18pan | 797b: e8 c0 cc 03 00 callq 44640 <_ZN4core9panicking18pan | |
799b: 48 89 c3 mov %rax,%rbx < | |
799e: 48 8d 7d e0 lea -0x20(%rbp),%rdi < | |
self.node = child; < | |
true < | |
} < | |
} < | |
< | |
fn link(&mut self, index: usize, mut tree: Tree<T>) { < | |
79a2: e8 69 fe ff ff callq 7810 <_ZN4drop17hddf9fd0101172 < | |
79a7: 48 89 df mov %rbx,%rdi < | |
79aa: e8 d1 fc ff ff callq 7680 <_Unwind_Resume@plt> < | |
79af: 90 nop < | |
00000000000079b0 <_ZN30_$LT$splay..Splay$LT$T$GT$$GT$6rotate17ha93a044f2339ca | 0000000000007980 <_ZN30_$LT$splay..Splay$LT$T$GT$$GT$6rotate17ha93a044f2339ca | |
impl<T> Splay<T> where T: PartialOrd { impl<T> Splay<T> where T: PartialOrd { | |
fn new() -> Splay<T> { fn new() -> Splay<T> { | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
79b0: 55 push %rbp | 7980: 55 push %rbp | |
79b1: 48 89 e5 mov %rsp,%rbp | 7981: 48 89 e5 mov %rsp,%rbp | |
79b4: 41 57 push %r15 | 7984: 41 57 push %r15 | |
79b6: 41 56 push %r14 | 7986: 41 56 push %r14 | |
79b8: 41 54 push %r12 | 7988: 41 55 push %r13 | |
79ba: 53 push %rbx | 798a: 41 54 push %r12 | |
79bb: 48 81 ec 90 00 00 00 sub $0x90,%rsp | 798c: 53 push %rbx | |
79c2: 48 89 fb mov %rdi,%rbx | 798d: 48 83 ec 38 sub $0x38,%rsp | |
> 7991: 48 89 fb mov %rdi,%rbx | |
} } | |
mem::forget(tree); mem::forget(tree); | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
79c5: 48 83 fe 01 cmp $0x1,%rsi | 7994: 48 83 fe 01 cmp $0x1,%rsi | |
79c9: 0f 87 93 01 00 00 ja 7b62 <_ZN30_$LT$splay..Splay$L | 7998: 0f 87 5c 01 00 00 ja 7afa <_ZN30_$LT$splay..Splay$L | |
79cf: 48 8b 03 mov (%rbx),%rax | 799e: 48 8b 03 mov (%rbx),%rax | |
if child == ptr::null_mut() { | 79a1: 4c 8b 64 f0 10 mov 0x10(%rax,%rsi,8),%r12 | |
None < | |
} else { < | |
unsafe { < | |
(*child).parent = ptr::null_mut(); < | |
(*self.node).children[index] = ptr::null_mut(); < | |
79d2: 48 8b 44 f0 10 mov 0x10(%rax,%rsi,8),%rax < | |
fn new() -> Splay<T> { fn new() -> Splay<T> { | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
let mut child = tree.take(index).unwrap(); let mut child = tree.take(index).unwrap(); | |
79d7: 48 85 c0 test %rax,%rax | 79a6: 4d 85 e4 test %r12,%r12 | |
79da: 0f 84 96 01 00 00 je 7b76 <_ZN30_$LT$splay..Splay$L | mem::forget(tree); | |
> } | |
> | |
> fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
> 79a9: 0f 84 5c 01 00 00 je 7b0b <_ZN30_$LT$splay..Splay$L | |
None None | |
} else { } else { | |
unsafe { unsafe { | |
(*child).parent = ptr::null_mut(); (*child).parent = ptr::null_mut(); | |
79e0: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) | 79af: 49 c7 44 24 08 00 00 movq $0x0,0x8(%r12) | |
79e7: 00 | 79b6: 00 00 | |
(*self.node).children[index] = ptr::null_mut(); (*self.node).children[index] = ptr::null_mut(); | |
79e8: 48 8b 0b mov (%rbx),%rcx | 79b8: 48 8b 03 mov (%rbx),%rax | |
79eb: 48 c7 44 f1 10 00 00 movq $0x0,0x10(%rcx,%rsi,8) | 79bb: 48 c7 44 f0 10 00 00 movq $0x0,0x10(%rax,%rsi,8) | |
79f2: 00 00 | 79c2: 00 00 | |
79f4: 48 89 45 d0 mov %rax,-0x30(%rbp) < | |
79f8: c6 45 d8 d4 movb $0xd4,-0x28(%rbp) < | |
79fc: 8a 4d b6 mov -0x4a(%rbp),%cl < | |
79ff: 88 4d df mov %cl,-0x21(%rbp) < | |
7a02: 0f b7 4d b4 movzwl -0x4c(%rbp),%ecx < | |
7a06: 66 89 4d dd mov %cx,-0x23(%rbp) < | |
7a0a: 8b 4d b0 mov -0x50(%rbp),%ecx < | |
7a0d: 89 4d d9 mov %ecx,-0x27(%rbp) < | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
let mut child = tree.take(index).unwrap(); let mut child = tree.take(index).unwrap(); | |
if let Some(grandchild) = child.take(index ^ 1) { if let Some(grandchild) = child.take(index ^ 1) { | |
7a10: 49 89 f6 mov %rsi,%r14 | 79c4: 49 89 f6 mov %rsi,%r14 | |
7a13: 49 83 f6 01 xor $0x1,%r14 | 79c7: 49 83 f6 01 xor $0x1,%r14 | |
} } | |
mem::forget(tree); mem::forget(tree); | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7a17: 49 83 fe 01 cmp $0x1,%r14 | 79cb: 49 83 fe 01 cmp $0x1,%r14 | |
7a1b: 0f 87 64 01 00 00 ja 7b85 <_ZN30_$LT$splay..Splay$L | 79cf: 0f 87 42 01 00 00 ja 7b17 <_ZN30_$LT$splay..Splay$L | |
7a21: 4a 8b 4c f0 10 mov 0x10(%rax,%r14,8),%rcx | 79d5: 4b 8b 44 f4 10 mov 0x10(%r12,%r14,8),%rax | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
let mut child = tree.take(index).unwrap(); let mut child = tree.take(index).unwrap(); | |
if let Some(grandchild) = child.take(index ^ 1) { if let Some(grandchild) = child.take(index ^ 1) { | |
7a26: 48 85 c9 test %rcx,%rcx | 79da: 48 85 c0 test %rax,%rax | |
7a29: 74 48 je 7a73 <_ZN30_$LT$splay..Splay$L | 79dd: 74 3f je 7a1e <_ZN30_$LT$splay..Splay$L | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
None None | |
} else { } else { | |
unsafe { unsafe { | |
(*child).parent = ptr::null_mut(); (*child).parent = ptr::null_mut(); | |
7a2b: 48 c7 41 08 00 00 00 movq $0x0,0x8(%rcx) | 79df: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) | |
7a32: 00 | 79e6: 00 | |
(*self.node).children[index] = ptr::null_mut(); (*self.node).children[index] = ptr::null_mut(); | |
7a33: 4a c7 44 f0 10 00 00 movq $0x0,0x10(%rax,%r14,8) | 79e7: 4b c7 44 f4 10 00 00 movq $0x0,0x10(%r12,%r14,8) | |
7a3a: 00 00 | 79ee: 00 00 | |
} } | |
Some(Tree { node: child }) Some(Tree { node: child }) | |
7a3c: 48 89 4d b8 mov %rcx,-0x48(%rbp) | 79f0: 48 89 45 c8 mov %rax,-0x38(%rbp) | |
7a40: c6 45 c0 d4 movb $0xd4,-0x40(%rbp) | 79f4: c6 45 d0 d4 movb $0xd4,-0x30(%rbp) | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
None None | |
7a44: 48 c7 45 b0 01 00 00 movq $0x1,-0x50(%rbp) | 79f8: 48 c7 45 c0 01 00 00 movq $0x1,-0x40(%rbp) | |
7a4b: 00 | 79ff: 00 | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
let mut child = tree.take(index).unwrap(); let mut child = tree.take(index).unwrap(); | |
if let Some(grandchild) = child.take(index ^ 1) { if let Some(grandchild) = child.take(index ^ 1) { | |
7a4c: 0f 10 45 b8 movups -0x48(%rbp),%xmm0 | 7a00: 0f 10 45 c8 movups -0x38(%rbp),%xmm0 | |
7a50: 0f 29 85 50 ff ff ff movaps %xmm0,-0xb0(%rbp) | 7a04: 0f 29 45 b0 movaps %xmm0,-0x50(%rbp) | |
tree.link(index, grandchild); tree.link(index, grandchild); | |
7a57: 0f 10 45 b8 movups -0x48(%rbp),%xmm0 | 7a08: 0f 10 45 c8 movups -0x38(%rbp),%xmm0 | |
7a5b: 0f 29 85 60 ff ff ff movaps %xmm0,-0xa0(%rbp) | 7a0c: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | |
7a62: 48 8d 95 60 ff ff ff lea -0xa0(%rbp),%rdx | 7a10: 48 8d 55 a0 lea -0x60(%rbp),%rdx | |
7a69: 48 89 df mov %rbx,%rdi | 7a14: 48 89 df mov %rbx,%rdi | |
7a6c: e8 3f fe ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | 7a17: e8 94 fe ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | |
7a71: eb 08 jmp 7a7b <_ZN30_$LT$splay..Splay$L | 7a1c: eb 08 jmp 7a26 <_ZN30_$LT$splay..Splay$L | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
None None | |
7a73: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) | 7a1e: 48 c7 45 c0 00 00 00 movq $0x0,-0x40(%rbp) | |
7a7a: 00 | 7a25: 00 | |
fn new(value: T) -> Tree<T> { fn new(value: T) -> Tree<T> { | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
7a7b: 48 8b 0b mov (%rbx),%rcx | 7a26: 48 8b 0b mov (%rbx),%rcx | |
} } | |
mem::forget(tree); mem::forget(tree); | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7a7e: 48 8b 41 08 mov 0x8(%rcx),%rax | 7a29: 48 8b 41 08 mov 0x8(%rcx),%rax | |
let mut child = tree.take(index).unwrap(); < | |
if let Some(grandchild) = child.take(index ^ 1) { < | |
tree.link(index, grandchild); < | |
} < | |
< | |
if let Some(i) = tree.parent() { < | |
7a82: 48 85 c0 test %rax,%rax < | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
if parent == ptr::null_mut() { if parent == ptr::null_mut() { | |
7a85: 0f 84 97 00 00 00 je 7b22 <_ZN30_$LT$splay..Splay$L | 7a2d: 48 85 c0 test %rax,%rax | |
> 7a30: 0f 84 8f 00 00 00 je 7ac5 <_ZN30_$LT$splay..Splay$L | |
None None | |
} else { } else { | |
let index = unsafe { (*self.node).index }; let index = unsafe { (*self.node).index }; | |
7a8b: 4c 8b 39 mov (%rcx),%r15 | 7a36: 4c 8b 39 mov (%rcx),%r15 | |
self.node = parent; self.node = parent; | |
7a8e: 48 89 03 mov %rax,(%rbx) | 7a39: 48 89 03 mov %rax,(%rbx) | |
} } | |
mem::forget(tree); mem::forget(tree); | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7a91: 49 83 ff 01 cmp $0x1,%r15 | 7a3c: 49 83 ff 01 cmp $0x1,%r15 | |
7a95: 0f 87 01 01 00 00 ja 7b9c <_ZN30_$LT$splay..Splay$L | 7a40: 0f 87 e5 00 00 00 ja 7b2b <_ZN30_$LT$splay..Splay$L | |
7a9b: 4a 8b 44 f8 10 mov 0x10(%rax,%r15,8),%rax | 7a46: 4e 8b 6c f8 10 mov 0x10(%rax,%r15,8),%r13 | |
if let Some(grandchild) = child.take(index ^ 1) { if let Some(grandchild) = child.take(index ^ 1) { | |
tree.link(index, grandchild); tree.link(index, grandchild); | |
} } | |
if let Some(i) = tree.parent() { if let Some(i) = tree.parent() { | |
let t = tree.take(i).unwrap(); let t = tree.take(i).unwrap(); | |
7aa0: 48 85 c0 test %rax,%rax | 7a4b: 4d 85 ed test %r13,%r13 | |
7aa3: 0f 84 0a 01 00 00 je 7bb3 <_ZN30_$LT$splay..Splay$L | mem::forget(tree); | |
> } | |
> | |
> fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
> 7a4e: 0f 84 eb 00 00 00 je 7b3f <_ZN30_$LT$splay..Splay$L | |
None None | |
} else { } else { | |
unsafe { unsafe { | |
(*child).parent = ptr::null_mut(); (*child).parent = ptr::null_mut(); | |
7aa9: 48 c7 40 08 00 00 00 movq $0x0,0x8(%rax) | 7a54: 49 c7 45 08 00 00 00 movq $0x0,0x8(%r13) | |
7ab0: 00 | 7a5b: 00 | |
(*self.node).children[index] = ptr::null_mut(); (*self.node).children[index] = ptr::null_mut(); | |
7ab1: 48 8b 0b mov (%rbx),%rcx | 7a5c: 48 8b 03 mov (%rbx),%rax | |
7ab4: 4a c7 44 f9 10 00 00 movq $0x0,0x10(%rcx,%r15,8) | 7a5f: 4a c7 44 f8 10 00 00 movq $0x0,0x10(%rax,%r15,8) | |
7abb: 00 00 | 7a66: 00 00 | |
7abd: 48 89 45 a0 mov %rax,-0x60(%rbp) | 7a68: 8a 45 c6 mov -0x3a(%rbp),%al | |
7ac1: c6 45 a8 d4 movb $0xd4,-0x58(%rbp) | 7a6b: 88 45 b6 mov %al,-0x4a(%rbp) | |
7ac5: 8a 45 b6 mov -0x4a(%rbp),%al | 7a6e: 0f b7 45 c4 movzwl -0x3c(%rbp),%eax | |
7ac8: 88 45 af mov %al,-0x51(%rbp) | 7a72: 66 89 45 b4 mov %ax,-0x4c(%rbp) | |
7acb: 0f b7 45 b4 movzwl -0x4c(%rbp),%eax | 7a76: 8b 45 c0 mov -0x40(%rbp),%eax | |
7acf: 66 89 45 ad mov %ax,-0x53(%rbp) | 7a79: 89 45 b0 mov %eax,-0x50(%rbp) | |
7ad3: 8b 45 b0 mov -0x50(%rbp),%eax < | |
7ad6: 89 45 a9 mov %eax,-0x57(%rbp) < | |
tree.link(index, grandchild); tree.link(index, grandchild); | |
} } | |
if let Some(i) = tree.parent() { if let Some(i) = tree.parent() { | |
let t = tree.take(i).unwrap(); let t = tree.take(i).unwrap(); | |
tree.link(i, child); tree.link(i, child); | |
7ad9: 0f 10 45 d0 movups -0x30(%rbp),%xmm0 | 7a7c: 4c 89 65 c0 mov %r12,-0x40(%rbp) | |
7add: 0f 29 85 70 ff ff ff movaps %xmm0,-0x90(%rbp) | 7a80: 48 c7 45 c8 d4 00 00 movq $0xd4,-0x38(%rbp) | |
7ae4: 48 8d 95 70 ff ff ff lea -0x90(%rbp),%rdx | 7a87: 00 | |
7aeb: 48 89 df mov %rbx,%rdi | 7a88: 48 8d 55 c0 lea -0x40(%rbp),%rdx | |
7aee: 4c 89 fe mov %r15,%rsi | 7a8c: 48 89 df mov %rbx,%rdi | |
7af1: e8 ba fd ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | 7a8f: 4c 89 fe mov %r15,%rsi | |
> 7a92: e8 19 fe ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7af6: 48 8b 03 mov (%rbx),%rax | 7a97: 48 8b 03 mov (%rbx),%rax | |
7af9: 4a 8b 44 f8 10 mov 0x10(%rax,%r15,8),%rax | 7a9a: 4a 8b 44 f8 10 mov 0x10(%rax,%r15,8),%rax | |
} } | |
if let Some(i) = tree.parent() { if let Some(i) = tree.parent() { | |
let t = tree.take(i).unwrap(); let t = tree.take(i).unwrap(); | |
tree.link(i, child); tree.link(i, child); | |
tree.child(i); tree.child(i); | |
7afe: 48 85 c0 test %rax,%rax | 7a9f: 48 85 c0 test %rax,%rax | |
7b01: 74 03 je 7b06 <_ZN30_$LT$splay..Splay$L | 7aa2: 74 03 je 7aa7 <_ZN30_$LT$splay..Splay$L | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
false false | |
} else { } else { | |
self.node = child; self.node = child; | |
7b03: 48 89 03 mov %rax,(%rbx) | 7aa4: 48 89 03 mov %rax,(%rbx) | |
if let Some(i) = tree.parent() { if let Some(i) = tree.parent() { | |
let t = tree.take(i).unwrap(); let t = tree.take(i).unwrap(); | |
tree.link(i, child); tree.link(i, child); | |
tree.child(i); tree.child(i); | |
tree.link(index ^ 1, t); tree.link(index ^ 1, t); | |
7b06: 0f 10 45 a0 movups -0x60(%rbp),%xmm0 | 7aa7: 4c 89 6d c0 mov %r13,-0x40(%rbp) | |
7b0a: 0f 29 45 80 movaps %xmm0,-0x80(%rbp) | 7aab: c6 45 c8 d4 movb $0xd4,-0x38(%rbp) | |
7b0e: 45 31 e4 xor %r12d,%r12d | 7aaf: 8a 45 b6 mov -0x4a(%rbp),%al | |
7b11: 48 8d 55 80 lea -0x80(%rbp),%rdx | 7ab2: 88 45 cf mov %al,-0x31(%rbp) | |
7b15: 48 89 df mov %rbx,%rdi | 7ab5: 0f b7 45 b4 movzwl -0x4c(%rbp),%eax | |
7b18: 4c 89 f6 mov %r14,%rsi | 7ab9: 66 89 45 cd mov %ax,-0x33(%rbp) | |
7b1b: e8 90 fd ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | 7abd: 8b 45 b0 mov -0x50(%rbp),%eax | |
7b20: eb 30 jmp 7b52 <_ZN30_$LT$splay..Splay$L | 7ac0: 89 45 c9 mov %eax,-0x37(%rbp) | |
7b22: 0f 10 03 movups (%rbx),%xmm0 | 7ac3: eb 17 jmp 7adc <_ZN30_$LT$splay..Splay$L | |
7b25: 0f 29 45 b0 movaps %xmm0,-0x50(%rbp) | 7ac5: 48 8b 43 08 mov 0x8(%rbx),%rax | |
7b29: 0f 28 45 d0 movaps -0x30(%rbp),%xmm0 | 7ac9: 4c 89 23 mov %r12,(%rbx) | |
7b2d: 0f 11 03 movups %xmm0,(%rbx) | 7acc: 48 c7 43 08 d4 00 00 movq $0xd4,0x8(%rbx) | |
7b30: 0f 28 45 b0 movaps -0x50(%rbp),%xmm0 | 7ad3: 00 | |
7b34: 0f 29 45 d0 movaps %xmm0,-0x30(%rbp) < | |
} else { } else { | |
mem::swap(tree, &mut child); mem::swap(tree, &mut child); | |
tree.link(index ^ 1, child); tree.link(index ^ 1, child); | |
7b38: 0f 28 45 d0 movaps -0x30(%rbp),%xmm0 | 7ad4: 48 89 4d c0 mov %rcx,-0x40(%rbp) | |
7b3c: 0f 29 45 90 movaps %xmm0,-0x70(%rbp) | 7ad8: 48 89 45 c8 mov %rax,-0x38(%rbp) | |
7b40: 45 31 e4 xor %r12d,%r12d | 7adc: 48 8d 55 c0 lea -0x40(%rbp),%rdx | |
7b43: 48 8d 55 90 lea -0x70(%rbp),%rdx | | |
7b47: 48 89 df mov %rbx,%rdi | if let Some(i) = tree.parent() { | |
7b4a: 4c 89 f6 mov %r14,%rsi | let t = tree.take(i).unwrap(); | |
7b4d: e8 5e fd ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | tree.link(i, child); | |
> tree.child(i); | |
> tree.link(index ^ 1, t); | |
> 7ae0: 48 89 df mov %rbx,%rdi | |
> 7ae3: 4c 89 f6 mov %r14,%rsi | |
> 7ae6: e8 c5 fd ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | |
impl<T> Splay<T> where T: PartialOrd { impl<T> Splay<T> where T: PartialOrd { | |
fn new() -> Splay<T> { fn new() -> Splay<T> { | |
Splay { tree: None } Splay { tree: None } | |
} } | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { fn rotate(&self, tree: &mut Tree<T>, index: usize) { | |
7b52: 48 81 c4 90 00 00 00 add $0x90,%rsp | 7aeb: 48 83 c4 38 add $0x38,%rsp | |
7b59: 5b pop %rbx | 7aef: 5b pop %rbx | |
7b5a: 41 5c pop %r12 | 7af0: 41 5c pop %r12 | |
7b5c: 41 5e pop %r14 | 7af2: 41 5d pop %r13 | |
7b5e: 41 5f pop %r15 | 7af4: 41 5e pop %r14 | |
7b60: 5d pop %rbp | 7af6: 41 5f pop %r15 | |
7b61: c3 retq | 7af8: 5d pop %rbp | |
7b62: 45 31 e4 xor %r12d,%r12d | 7af9: c3 retq | |
} } | |
mem::forget(tree); mem::forget(tree); | |
} } | |
fn take(&mut self, index: usize) -> Option<Tree<T>> { fn take(&mut self, index: usize) -> Option<Tree<T>> { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7b65: 48 8d 3d 94 0e 25 00 lea 0x250e94(%rip),%rdi # 2 | 7afa: 48 8d 3d ff 0e 25 00 lea 0x250eff(%rip),%rdi # 2 | |
7b6c: ba 02 00 00 00 mov $0x2,%edx | 7b01: ba 02 00 00 00 mov $0x2,%edx | |
7b71: e8 ca cb 03 00 callq 44740 <_ZN4core9panicking18pan | 7b06: e8 35 cb 03 00 callq 44640 <_ZN4core9panicking18pan | |
7b76: 45 31 e4 xor %r12d,%r12d | 7b0b: 48 8b 3d a6 22 25 00 mov 0x2522a6(%rip),%rdi # 2 | |
7b79: 48 8b 3d 38 22 25 00 mov 0x252238(%rip),%rdi # 2 | 7b12: e8 b9 ca 03 00 callq 445d0 <_ZN4core9panicking5pani | |
7b80: e8 4b cb 03 00 callq 446d0 <_ZN4core9panicking5pani | 7b17: 48 8d 3d e2 0e 25 00 lea 0x250ee2(%rip),%rdi # 2 | |
7b85: 41 b4 01 mov $0x1,%r12b | 7b1e: ba 02 00 00 00 mov $0x2,%edx | |
7b88: 48 8d 3d 71 0e 25 00 lea 0x250e71(%rip),%rdi # 2 | 7b23: 4c 89 f6 mov %r14,%rsi | |
7b8f: ba 02 00 00 00 mov $0x2,%edx | 7b26: e8 15 cb 03 00 callq 44640 <_ZN4core9panicking18pan | |
7b94: 4c 89 f6 mov %r14,%rsi | 7b2b: 48 8d 3d ce 0e 25 00 lea 0x250ece(%rip),%rdi # 2 | |
7b97: e8 a4 cb 03 00 callq 44740 <_ZN4core9panicking18pan | 7b32: ba 02 00 00 00 mov $0x2,%edx | |
7b9c: 41 b4 01 mov $0x1,%r12b | 7b37: 4c 89 fe mov %r15,%rsi | |
7b9f: 48 8d 3d 5a 0e 25 00 lea 0x250e5a(%rip),%rdi # 2 | 7b3a: e8 01 cb 03 00 callq 44640 <_ZN4core9panicking18pan | |
7ba6: ba 02 00 00 00 mov $0x2,%edx | 7b3f: 48 8b 3d 72 22 25 00 mov 0x252272(%rip),%rdi # 2 | |
7bab: 4c 89 fe mov %r15,%rsi | 7b46: e8 85 ca 03 00 callq 445d0 <_ZN4core9panicking5pani | |
7bae: e8 8d cb 03 00 callq 44740 <_ZN4core9panicking18pan | 7b4b: 90 nop | |
7bb3: 41 b4 01 mov $0x1,%r12b | 7b4c: 90 nop | |
7bb6: 48 8b 3d fb 21 25 00 mov 0x2521fb(%rip),%rdi # 2 | 7b4d: 90 nop | |
7bbd: e8 0e cb 03 00 callq 446d0 <_ZN4core9panicking5pani | 7b4e: 90 nop | |
7bc2: eb 00 jmp 7bc4 <_ZN30_$LT$splay..Splay$L | 7b4f: 90 nop | |
7bc4: 48 89 c3 mov %rax,%rbx < | |
fn new() -> Splay<T> { < | |
Splay { tree: None } < | |
} < | |
< | |
fn rotate(&self, tree: &mut Tree<T>, index: usize) { < | |
let mut child = tree.take(index).unwrap(); < | |
7bc7: 45 84 e4 test %r12b,%r12b < | |
7bca: 75 0e jne 7bda <_ZN30_$LT$splay..Splay$L < | |
7bcc: eb 15 jmp 7be3 <_ZN30_$LT$splay..Splay$L < | |
7bce: 48 89 c3 mov %rax,%rbx < | |
7bd1: 48 8d 7d a0 lea -0x60(%rbp),%rdi < | |
7bd5: eb 07 jmp 7bde <_ZN30_$LT$splay..Splay$L < | |
7bd7: 48 89 c3 mov %rax,%rbx < | |
7bda: 48 8d 7d d0 lea -0x30(%rbp),%rdi < | |
if let Some(grandchild) = child.take(index ^ 1) { < | |
tree.link(index, grandchild); < | |
} < | |
< | |
if let Some(i) = tree.parent() { < | |
let t = tree.take(i).unwrap(); < | |
7bde: e8 2d fc ff ff callq 7810 <_ZN4drop17hddf9fd0101172 < | |
7be3: 48 89 df mov %rbx,%rdi < | |
7be6: e8 95 fa ff ff callq 7680 <_Unwind_Resume@plt> < | |
7beb: 90 nop < | |
7bec: 90 nop < | |
7bed: 90 nop < | |
7bee: 90 nop < | |
7bef: 90 nop < | |
0000000000007bf0 <_ZN5splay4main17h7cf589df5d172d0bE>: | 0000000000007b50 <_ZN5splay4main17h7cf589df5d172d0bE>: | |
print(tree, depth + 1); print(tree, depth + 1); | |
tree.parent(); tree.parent(); | |
} } | |
} } | |
fn main() { fn main() { | |
7bf0: 55 push %rbp | 7b50: 55 push %rbp | |
7bf1: 48 89 e5 mov %rsp,%rbp | 7b51: 48 89 e5 mov %rsp,%rbp | |
tree: Option<Tree<T>>, tree: Option<Tree<T>>, | |
} } | |
impl<T> Splay<T> where T: PartialOrd { impl<T> Splay<T> where T: PartialOrd { | |
fn new() -> Splay<T> { fn new() -> Splay<T> { | |
Splay { tree: None } Splay { tree: None } | |
7bf4: 41 57 push %r15 | 7b54: 41 57 push %r15 | |
7bf6: 41 56 push %r14 | 7b56: 41 56 push %r14 | |
7bf8: 41 55 push %r13 | 7b58: 41 55 push %r13 | |
7bfa: 41 54 push %r12 | 7b5a: 41 54 push %r12 | |
7bfc: 53 push %rbx | 7b5c: 53 push %rbx | |
7bfd: 48 81 ec 88 00 00 00 sub $0x88,%rsp | 7b5d: 48 83 ec 68 sub $0x68,%rsp | |
7c04: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) | 7b61: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) | |
7c0b: 00 | 7b68: 00 | |
7c0c: 48 8d 5d 90 lea -0x70(%rbp),%rbx | 7b69: 48 8d 5d 90 lea -0x70(%rbp),%rbx | |
7c10: 41 bf 01 00 00 00 mov $0x1,%r15d | 7b6d: 41 bf 01 00 00 00 mov $0x1,%r15d | |
7c16: 31 c0 xor %eax,%eax | 7b73: 31 c0 xor %eax,%eax | |
7c18: 4c 8d 65 c0 lea -0x40(%rbp),%r12 | 7b75: 4c 8d 65 c0 lea -0x40(%rbp),%r12 | |
7c1c: 41 be 01 00 00 00 mov $0x1,%r14d | 7b79: 41 be 01 00 00 00 mov $0x1,%r14d | |
7c22: 66 66 66 66 66 2e 0f data32 data32 data32 data32 nopw %cs: | 7b7f: 90 nop | |
7c29: 1f 84 00 00 00 00 00 | 7b80: 44 89 f1 mov %r14d,%ecx | |
7c30: 44 89 f1 mov %r14d,%ecx | 7b83: c1 e1 04 shl $0x4,%ecx | |
7c33: c1 e1 04 shl $0x4,%ecx | 7b86: 45 8d b4 0e ff 00 00 lea 0xff(%r14,%rcx,1),%r14d | |
7c36: 45 8d b4 0e ff 00 00 lea 0xff(%r14,%rcx,1),%r14d | 7b8d: 00 | |
7c3d: 00 | 7b8e: 0f 10 03 movups (%rbx),%xmm0 | |
7c3e: 0f 10 03 movups (%rbx),%xmm0 | 7b91: 0f 29 85 70 ff ff ff movaps %xmm0,-0x90(%rbp) | |
7c41: 0f 29 85 50 ff ff ff movaps %xmm0,-0xb0(%rbp) | 7b98: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) | |
7c48: 48 c7 45 88 00 00 00 movq $0x0,-0x78(%rbp) | 7b9f: 00 | |
7c4f: 00 < | |
} } | |
} } | |
fn insert(&mut self, value: T) { fn insert(&mut self, value: T) { | |
match self.tree.take() { match self.tree.take() { | |
None => self.tree = Some(Tree::new(value)), None => self.tree = Some(Tree::new(value)), | |
7c50: a8 01 test $0x1,%al | 7ba0: a8 01 test $0x1,%al | |
7c52: 0f 84 58 01 00 00 je 7db0 <_ZN5splay4main17h7cf589d | 7ba2: 0f 84 48 01 00 00 je 7cf0 <_ZN5splay4main17h7cf589d | |
Some(mut tree) => { Some(mut tree) => { | |
7c58: 0f 28 85 50 ff ff ff movaps -0xb0(%rbp),%xmm0 | 7ba8: 0f 28 85 70 ff ff ff movaps -0x90(%rbp),%xmm0 | |
7c5f: 0f 29 45 c0 movaps %xmm0,-0x40(%rbp) | 7baf: 0f 29 45 c0 movaps %xmm0,-0x40(%rbp) | |
Some(Tree { node: child }) Some(Tree { node: child }) | |
} } | |
} } | |
fn value(&mut self) -> &mut T { fn value(&mut self) -> &mut T { | |
unsafe { &mut (*self.node).value } unsafe { &mut (*self.node).value } | |
7c63: 4c 8b 6d c0 mov -0x40(%rbp),%r13 | 7bb3: 4c 8b 6d c0 mov -0x40(%rbp),%r13 | |
fn insert(&mut self, value: T) { fn insert(&mut self, value: T) { | |
match self.tree.take() { match self.tree.take() { | |
None => self.tree = Some(Tree::new(value)), None => self.tree = Some(Tree::new(value)), | |
Some(mut tree) => { Some(mut tree) => { | |
loop { loop { | |
let index = if value < *tree.value() { 0 } else { 1 }; let index = if value < *tree.value() { 0 } else { 1 }; | |
7c67: 31 db xor %ebx,%ebx | 7bb7: 31 db xor %ebx,%ebx | |
7c69: 45 39 75 20 cmp %r14d,0x20(%r13) | 7bb9: 45 39 75 20 cmp %r14d,0x20(%r13) | |
7c6d: 0f 96 c3 setbe %bl | 7bbd: 0f 96 c3 setbe %bl | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7c70: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | 7bc0: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | |
None => self.tree = Some(Tree::new(value)), None => self.tree = Some(Tree::new(value)), | |
Some(mut tree) => { Some(mut tree) => { | |
loop { loop { | |
let index = if value < *tree.value() { 0 } else { 1 }; let index = if value < *tree.value() { 0 } else { 1 }; | |
if !tree.child(index) { if !tree.child(index) { | |
7c75: 48 85 c0 test %rax,%rax | 7bc5: 48 85 c0 test %rax,%rax | |
7c78: 74 20 je 7c9a <_ZN5splay4main17h7cf589d | 7bc8: 74 20 je 7bea <_ZN5splay4main17h7cf589d | |
7c7a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | 7bca: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | |
let mut splay = Splay::new(); let mut splay = Splay::new(); | |
let mut num = 1u32; let mut num = 1u32; | |
for _ in 0..1000000 { for _ in 0..1000000 { | |
num = num.wrapping_mul(17).wrapping_add(255); num = num.wrapping_mul(17).wrapping_add(255); | |
splay.insert(num); splay.insert(num); | |
7c80: 49 89 c5 mov %rax,%r13 | 7bd0: 49 89 c5 mov %rax,%r13 | |
fn insert(&mut self, value: T) { fn insert(&mut self, value: T) { | |
match self.tree.take() { match self.tree.take() { | |
None => self.tree = Some(Tree::new(value)), None => self.tree = Some(Tree::new(value)), | |
Some(mut tree) => { Some(mut tree) => { | |
loop { loop { | |
let index = if value < *tree.value() { 0 } else { 1 }; let index = if value < *tree.value() { 0 } else { 1 }; | |
7c83: 31 db xor %ebx,%ebx | 7bd3: 31 db xor %ebx,%ebx | |
7c85: 45 39 75 20 cmp %r14d,0x20(%r13) | 7bd5: 45 39 75 20 cmp %r14d,0x20(%r13) | |
7c89: 0f 96 c3 setbe %bl | 7bd9: 0f 96 c3 setbe %bl | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7c8c: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | 7bdc: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
7c91: 48 85 c0 test %rax,%rax | 7be1: 48 85 c0 test %rax,%rax | |
7c94: 75 ea jne 7c80 <_ZN5splay4main17h7cf589d | 7be4: 75 ea jne 7bd0 <_ZN5splay4main17h7cf589d | |
false false | |
} else { } else { | |
self.node = child; self.node = child; | |
7c96: 4c 89 6d c0 mov %r13,-0x40(%rbp) | 7be6: 4c 89 6d c0 mov %r13,-0x40(%rbp) | |
7c9a: 0f 57 c0 xorps %xmm0,%xmm0 | 7bea: 0f 57 c0 xorps %xmm0,%xmm0 | |
7c9d: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | 7bed: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | |
7ca1: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) | 7bf1: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) | |
7ca8: 00 | 7bf8: 00 | |
7ca9: bf 28 00 00 00 mov $0x28,%edi | 7bf9: bf 28 00 00 00 mov $0x28,%edi | |
7cae: be 08 00 00 00 mov $0x8,%esi | 7bfe: be 08 00 00 00 mov $0x8,%esi | |
7cb3: e8 28 0d 01 00 callq 189e0 <__rust_allocate> | 7c03: e8 d8 0c 01 00 callq 188e0 <__rust_allocate> | |
7cb8: 48 85 c0 test %rax,%rax | 7c08: 48 85 c0 test %rax,%rax | |
7cbb: 0f 84 d8 01 00 00 je 7e99 <_ZN5splay4main17h7cf589d | 7c0b: 0f 84 b9 01 00 00 je 7dca <_ZN5splay4main17h7cf589d | |
7cc1: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) | 7c11: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) | |
7cc8: 48 8b 4d b0 mov -0x50(%rbp),%rcx | 7c18: 48 8b 4d b0 mov -0x50(%rbp),%rcx | |
7ccc: 48 89 48 18 mov %rcx,0x18(%rax) | 7c1c: 48 89 48 18 mov %rcx,0x18(%rax) | |
7cd0: 0f 28 45 a0 movaps -0x60(%rbp),%xmm0 | 7c20: 0f 28 45 a0 movaps -0x60(%rbp),%xmm0 | |
7cd4: 0f 11 40 08 movups %xmm0,0x8(%rax) | 7c24: 0f 11 40 08 movups %xmm0,0x8(%rax) | |
7cd8: 44 89 70 20 mov %r14d,0x20(%rax) | 7c28: 44 89 70 20 mov %r14d,0x20(%rax) | |
node: *mut Node<T>, node: *mut Node<T>, | |
} } | |
impl<T> Tree<T> { impl<T> Tree<T> { | |
fn new(value: T) -> Tree<T> { fn new(value: T) -> Tree<T> { | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
7cdc: c6 45 80 d4 movb $0xd4,-0x80(%rbp) | 7c2c: c6 45 a8 d4 movb $0xd4,-0x58(%rbp) | |
7ce0: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp) | 7c30: 48 89 45 a0 mov %rax,-0x60(%rbp) | |
Some(mut tree) => { Some(mut tree) => { | |
loop { loop { | |
let index = if value < *tree.value() { 0 } else { 1 }; let index = if value < *tree.value() { 0 } else { 1 }; | |
if !tree.child(index) { if !tree.child(index) { | |
tree.link(index, Tree::new(value)); tree.link(index, Tree::new(value)); | |
7ce7: 4c 89 e7 mov %r12,%rdi | 7c34: 4c 89 e7 mov %r12,%rdi | |
7cea: 48 89 de mov %rbx,%rsi | 7c37: 48 89 de mov %rbx,%rsi | |
7ced: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx | 7c3a: 48 8d 55 a0 lea -0x60(%rbp),%rdx | |
7cf4: e8 b7 fb ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | 7c3e: e8 6d fc ff ff callq 78b0 <_ZN29_$LT$splay..Tree$LT | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7cf9: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | 7c43: 49 8b 44 dd 10 mov 0x10(%r13,%rbx,8),%rax | |
loop { loop { | |
let index = if value < *tree.value() { 0 } else { 1 }; let index = if value < *tree.value() { 0 } else { 1 }; | |
if !tree.child(index) { if !tree.child(index) { | |
tree.link(index, Tree::new(value)); tree.link(index, Tree::new(value)); | |
tree.child(index); tree.child(index); | |
7cfe: 48 85 c0 test %rax,%rax | 7c48: 48 85 c0 test %rax,%rax | |
7d01: 74 11 je 7d14 <_ZN5splay4main17h7cf589d | 7c4b: 74 1c je 7c69 <_ZN5splay4main17h7cf589d | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
false false | |
} else { } else { | |
self.node = child; self.node = child; | |
7d03: 48 89 45 c0 mov %rax,-0x40(%rbp) | 7c4d: 48 89 45 c0 mov %rax,-0x40(%rbp) | |
fn new(value: T) -> Tree<T> { fn new(value: T) -> Tree<T> { | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
7d07: 49 89 c5 mov %rax,%r13 | 7c51: 49 89 c5 mov %rax,%r13 | |
7d0a: eb 08 jmp 7d14 <_ZN5splay4main17h7cf589d | 7c54: eb 13 jmp 7c69 <_ZN5splay4main17h7cf589d | |
7d0c: 0f 1f 40 00 nopl 0x0(%rax) | 7c56: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
7d10: 4c 8b 6d c0 mov -0x40(%rbp),%r13 | 7c5d: 00 00 00 | |
7d14: 49 8b 45 08 mov 0x8(%r13),%rax | Some(index) => index, | |
> }; | |
> | |
> if i1 == i2 { | |
> self.rotate(tree, i2); | |
> self.rotate(tree, i1); | |
> 7c60: e8 1b fd ff ff callq 7980 <_ZN30_$LT$splay..Splay$L | |
> fn new(value: T) -> Tree<T> { | |
> Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
> } | |
> | |
> fn parent(&mut self) -> Option<usize> { | |
> let parent = unsafe { (*self.node).parent }; | |
> 7c65: 4c 8b 6d c0 mov -0x40(%rbp),%r13 | |
> 7c69: 49 8b 45 08 mov 0x8(%r13),%rax | |
} } | |
} } | |
fn splay(&self, mut tree: &mut Tree<T>) { fn splay(&self, mut tree: &mut Tree<T>) { | |
loop { loop { | |
let i1 = match tree.parent() { let i1 = match tree.parent() { | |
7d18: 48 85 c0 test %rax,%rax | 7c6d: 48 85 c0 test %rax,%rax | |
7d1b: 0f 84 0e 01 00 00 je 7e2f <_ZN5splay4main17h7cf589d | 7c70: 0f 84 ed 00 00 00 je 7d63 <_ZN5splay4main17h7cf589d | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
if parent == ptr::null_mut() { if parent == ptr::null_mut() { | |
None None | |
} else { } else { | |
let index = unsafe { (*self.node).index }; let index = unsafe { (*self.node).index }; | |
7d21: 49 8b 5d 00 mov 0x0(%r13),%rbx | 7c76: 49 8b 5d 00 mov 0x0(%r13),%rbx | |
self.node = parent; self.node = parent; | |
7d25: 48 89 45 c0 mov %rax,-0x40(%rbp) | 7c7a: 48 89 45 c0 mov %rax,-0x40(%rbp) | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7d29: 48 8b 48 08 mov 0x8(%rax),%rcx | 7c7e: 48 8b 48 08 mov 0x8(%rax),%rcx | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
if parent == ptr::null_mut() { if parent == ptr::null_mut() { | |
7d2d: 48 85 c9 test %rcx,%rcx | 7c82: 48 85 c9 test %rcx,%rcx | |
7d30: 0f 84 ee 00 00 00 je 7e24 <_ZN5splay4main17h7cf589d | 7c85: 0f 84 cd 00 00 00 je 7d58 <_ZN5splay4main17h7cf589d | |
None None | |
} else { } else { | |
let index = unsafe { (*self.node).index }; let index = unsafe { (*self.node).index }; | |
7d36: 4c 8b 28 mov (%rax),%r13 | 7c8b: 4c 8b 28 mov (%rax),%r13 | |
self.node = parent; self.node = parent; | |
7d39: 48 89 4d c0 mov %rcx,-0x40(%rbp) | 7c8e: 48 89 4d c0 mov %rcx,-0x40(%rbp) | |
break; break; | |
}, }, | |
Some(index) => index, Some(index) => index, | |
}; }; | |
if i1 == i2 { if i1 == i2 { | |
7d3d: 4c 39 eb cmp %r13,%rbx | 7c92: 4c 39 eb cmp %r13,%rbx | |
7d40: 75 1e jne 7d60 <_ZN5splay4main17h7cf589d | 7c95: 75 19 jne 7cb0 <_ZN5splay4main17h7cf589d | |
self.rotate(tree, i2); self.rotate(tree, i2); | |
7d42: 4c 89 e7 mov %r12,%rdi | 7c97: 4c 89 e7 mov %r12,%rdi | |
7d45: 48 89 de mov %rbx,%rsi | 7c9a: 48 89 de mov %rbx,%rsi | |
7d48: e8 63 fc ff ff callq 79b0 <_ZN30_$LT$splay..Splay$L | 7c9d: e8 de fc ff ff callq 7980 <_ZN30_$LT$splay..Splay$L | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
7d4d: 4c 89 e7 mov %r12,%rdi | 7ca2: 4c 89 e7 mov %r12,%rdi | |
7d50: 48 89 de mov %rbx,%rsi | 7ca5: 48 89 de mov %rbx,%rsi | |
7d53: e8 58 fc ff ff callq 79b0 <_ZN30_$LT$splay..Splay$L | 7ca8: eb b6 jmp 7c60 <_ZN5splay4main17h7cf589d | |
7d58: eb b6 jmp 7d10 <_ZN5splay4main17h7cf589d | 7caa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | |
7d5a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) < | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7d60: 49 83 fd 01 cmp $0x1,%r13 | 7cb0: 49 83 fd 01 cmp $0x1,%r13 | |
7d64: 0f 87 1b 01 00 00 ja 7e85 <_ZN5splay4main17h7cf589d | 7cb4: 0f 87 fc 00 00 00 ja 7db6 <_ZN5splay4main17h7cf589d | |
7d6a: 4a 8b 44 e9 10 mov 0x10(%rcx,%r13,8),%rax | 7cba: 4a 8b 44 e9 10 mov 0x10(%rcx,%r13,8),%rax | |
if i1 == i2 { if i1 == i2 { | |
self.rotate(tree, i2); self.rotate(tree, i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
} else { } else { | |
tree.child(i2); tree.child(i2); | |
7d6f: 48 85 c0 test %rax,%rax | 7cbf: 48 85 c0 test %rax,%rax | |
7d72: 74 04 je 7d78 <_ZN5splay4main17h7cf589d | 7cc2: 74 04 je 7cc8 <_ZN5splay4main17h7cf589d | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
if child == ptr::null_mut() { if child == ptr::null_mut() { | |
false false | |
} else { } else { | |
self.node = child; self.node = child; | |
7d74: 48 89 45 c0 mov %rax,-0x40(%rbp) | 7cc4: 48 89 45 c0 mov %rax,-0x40(%rbp) | |
if i1 == i2 { if i1 == i2 { | |
self.rotate(tree, i2); self.rotate(tree, i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
} else { } else { | |
tree.child(i2); tree.child(i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
7d78: 4c 89 e7 mov %r12,%rdi | 7cc8: 4c 89 e7 mov %r12,%rdi | |
7d7b: 48 89 de mov %rbx,%rsi | 7ccb: 48 89 de mov %rbx,%rsi | |
7d7e: e8 2d fc ff ff callq 79b0 <_ZN30_$LT$splay..Splay$L | 7cce: e8 ad fc ff ff callq 7980 <_ZN30_$LT$splay..Splay$L | |
fn new(value: T) -> Tree<T> { fn new(value: T) -> Tree<T> { | |
Tree { node: Box::into_raw(Box::new(Node::new(value))) } Tree { node: Box::into_raw(Box::new(Node::new(value))) } | |
} } | |
fn parent(&mut self) -> Option<usize> { fn parent(&mut self) -> Option<usize> { | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
7d83: 48 8b 45 c0 mov -0x40(%rbp),%rax | 7cd3: 48 8b 45 c0 mov -0x40(%rbp),%rax | |
7d87: 48 8b 40 08 mov 0x8(%rax),%rax | 7cd7: 48 8b 40 08 mov 0x8(%rax),%rax | |
self.rotate(tree, i2); self.rotate(tree, i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
} else { } else { | |
tree.child(i2); tree.child(i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
tree.parent(); tree.parent(); | |
7d8b: 48 85 c0 test %rax,%rax | 7cdb: 48 85 c0 test %rax,%rax | |
7d8e: 74 04 je 7d94 <_ZN5splay4main17h7cf589d | 7cde: 74 04 je 7ce4 <_ZN5splay4main17h7cf589d | |
let parent = unsafe { (*self.node).parent }; let parent = unsafe { (*self.node).parent }; | |
if parent == ptr::null_mut() { if parent == ptr::null_mut() { | |
None None | |
} else { } else { | |
let index = unsafe { (*self.node).index }; let index = unsafe { (*self.node).index }; | |
self.node = parent; self.node = parent; | |
7d90: 48 89 45 c0 mov %rax,-0x40(%rbp) | 7ce0: 48 89 45 c0 mov %rax,-0x40(%rbp) | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
} else { } else { | |
tree.child(i2); tree.child(i2); | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
tree.parent(); tree.parent(); | |
self.rotate(tree, i2); self.rotate(tree, i2); | |
7d94: 4c 89 e7 mov %r12,%rdi | 7ce4: 4c 89 e7 mov %r12,%rdi | |
7d97: 4c 89 ee mov %r13,%rsi | 7ce7: 4c 89 ee mov %r13,%rsi | |
7d9a: e8 11 fc ff ff callq 79b0 <_ZN30_$LT$splay..Splay$L | 7cea: e9 71 ff ff ff jmpq 7c60 <_ZN5splay4main17h7cf589d | |
7d9f: e9 6c ff ff ff jmpq 7d10 <_ZN5splay4main17h7cf589d | 7cef: 90 nop | |
7da4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax, | 7cf0: 0f 57 c0 xorps %xmm0,%xmm0 | |
7dab: 00 00 00 00 00 | 7cf3: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | |
7db0: 0f 57 c0 xorps %xmm0,%xmm0 | 7cf7: 48 c7 45 b0 00 00 00 movq $0x0,-0x50(%rbp) | |
7db3: 0f 29 85 60 ff ff ff movaps %xmm0,-0xa0(%rbp) | 7cfe: 00 | |
7dba: 48 c7 85 70 ff ff ff movq $0x0,-0x90(%rbp) | 7cff: bf 28 00 00 00 mov $0x28,%edi | |
7dc1: 00 00 00 00 | 7d04: be 08 00 00 00 mov $0x8,%esi | |
7dc5: bf 28 00 00 00 mov $0x28,%edi | 7d09: e8 d2 0b 01 00 callq 188e0 <__rust_allocate> | |
7dca: be 08 00 00 00 mov $0x8,%esi | 7d0e: 48 85 c0 test %rax,%rax | |
7dcf: e8 0c 0c 01 00 callq 189e0 <__rust_allocate> | 7d11: 0f 84 b3 00 00 00 je 7dca <_ZN5splay4main17h7cf589d | |
7dd4: 48 85 c0 test %rax,%rax | 7d17: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) | |
7dd7: 0f 84 c1 00 00 00 je 7e9e <_ZN5splay4main17h7cf589d | 7d1e: 48 8b 4d b0 mov -0x50(%rbp),%rcx | |
7ddd: 48 c7 00 ff ff ff ff movq $0xffffffffffffffff,(%rax) | 7d22: 48 89 48 18 mov %rcx,0x18(%rax) | |
7de4: 48 8b 8d 70 ff ff ff mov -0x90(%rbp),%rcx | 7d26: 0f 28 45 a0 movaps -0x60(%rbp),%xmm0 | |
7deb: 48 89 48 18 mov %rcx,0x18(%rax) | 7d2a: 0f 11 40 08 movups %xmm0,0x8(%rax) | |
7def: 0f 28 85 60 ff ff ff movaps -0xa0(%rbp),%xmm0 | 7d2e: 44 89 70 20 mov %r14d,0x20(%rax) | |
7df6: 0f 11 40 08 movups %xmm0,0x8(%rax) < | |
7dfa: 44 89 70 20 mov %r14d,0x20(%rax) < | |
} } | |
} } | |
fn insert(&mut self, value: T) { fn insert(&mut self, value: T) { | |
match self.tree.take() { match self.tree.take() { | |
None => self.tree = Some(Tree::new(value)), None => self.tree = Some(Tree::new(value)), | |
7dfe: 48 c7 45 88 01 00 00 movq $0x1,-0x78(%rbp) | 7d32: 48 c7 45 88 01 00 00 movq $0x1,-0x78(%rbp) | |
7e05: 00 | 7d39: 00 | |
7e06: 48 89 45 90 mov %rax,-0x70(%rbp) | 7d3a: 48 89 45 90 mov %rax,-0x70(%rbp) | |
7e0a: c6 45 98 d4 movb $0xd4,-0x68(%rbp) | 7d3e: c6 45 98 d4 movb $0xd4,-0x68(%rbp) | |
7e0e: 8a 45 a6 mov -0x5a(%rbp),%al | 7d42: 8a 45 a6 mov -0x5a(%rbp),%al | |
7e11: 88 43 0f mov %al,0xf(%rbx) | 7d45: 88 43 0f mov %al,0xf(%rbx) | |
7e14: 0f b7 45 a4 movzwl -0x5c(%rbp),%eax | 7d48: 0f b7 45 a4 movzwl -0x5c(%rbp),%eax | |
7e18: 66 89 43 0d mov %ax,0xd(%rbx) | 7d4c: 66 89 43 0d mov %ax,0xd(%rbx) | |
7e1c: 8b 45 a0 mov -0x60(%rbp),%eax | 7d50: 8b 45 a0 mov -0x60(%rbp),%eax | |
7e1f: 89 43 09 mov %eax,0x9(%rbx) | 7d53: 89 43 09 mov %eax,0x9(%rbx) | |
7e22: eb 26 jmp 7e4a <_ZN5splay4main17h7cf589d | 7d56: eb 26 jmp 7d7e <_ZN5splay4main17h7cf589d | |
None => break, None => break, | |
Some(index) => index, Some(index) => index, | |
}; }; | |
let i2 = match tree.parent() { let i2 = match tree.parent() { | |
None => { None => { | |
self.rotate(tree, i1); self.rotate(tree, i1); | |
7e24: 4c 89 e7 mov %r12,%rdi | 7d58: 4c 89 e7 mov %r12,%rdi | |
7e27: 48 89 de mov %rbx,%rsi | 7d5b: 48 89 de mov %rbx,%rsi | |
7e2a: e8 81 fb ff ff callq 79b0 <_ZN30_$LT$splay..Splay$L | 7d5e: e8 1d fc ff ff callq 7980 <_ZN30_$LT$splay..Splay$L | |
if !tree.child(index) { if !tree.child(index) { | |
tree.link(index, Tree::new(value)); tree.link(index, Tree::new(value)); | |
tree.child(index); tree.child(index); | |
self.splay(&mut tree); self.splay(&mut tree); | |
self.tree = Some(tree); self.tree = Some(tree); | |
7e2f: 0f 28 45 c0 movaps -0x40(%rbp),%xmm0 | 7d63: 0f 28 45 c0 movaps -0x40(%rbp),%xmm0 | |
7e33: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | 7d67: 0f 29 45 a0 movaps %xmm0,-0x60(%rbp) | |
7e37: 48 c7 45 88 01 00 00 movq $0x1,-0x78(%rbp) | 7d6b: 48 c7 45 88 01 00 00 movq $0x1,-0x78(%rbp) | |
7e3e: 00 | 7d72: 00 | |
7e3f: 0f 28 45 a0 movaps -0x60(%rbp),%xmm0 | 7d73: 0f 28 45 a0 movaps -0x60(%rbp),%xmm0 | |
7e43: 48 8d 5d 90 lea -0x70(%rbp),%rbx | 7d77: 48 8d 5d 90 lea -0x70(%rbp),%rbx | |
7e47: 0f 11 03 movups %xmm0,(%rbx) | 7d7b: 0f 11 03 movups %xmm0,(%rbx) | |
7e4a: 31 c9 xor %ecx,%ecx | 7d7e: 31 c9 xor %ecx,%ecx | |
7e4c: 41 81 ff 40 42 0f 00 cmp $0xf4240,%r15d | 7d80: 41 81 ff 40 42 0f 00 cmp $0xf4240,%r15d | |
7e53: 0f 9c c1 setl %cl | 7d87: 0f 9c c1 setl %cl | |
7e56: 44 01 f9 add %r15d,%ecx | 7d8a: 44 01 f9 add %r15d,%ecx | |
7e59: 41 81 ff 40 42 0f 00 cmp $0xf4240,%r15d | 7d8d: 41 81 ff 40 42 0f 00 cmp $0xf4240,%r15d | |
7e60: b0 01 mov $0x1,%al | 7d94: b0 01 mov $0x1,%al | |
7e62: 41 89 cf mov %ecx,%r15d | 7d96: 41 89 cf mov %ecx,%r15d | |
7e65: 0f 8c c5 fd ff ff jl 7c30 <_ZN5splay4main17h7cf589d | 7d99: 0f 8c e1 fd ff ff jl 7b80 <_ZN5splay4main17h7cf589d | |
tree.parent(); tree.parent(); | |
} } | |
} } | |
fn main() { fn main() { | |
let mut splay = Splay::new(); let mut splay = Splay::new(); | |
7e6b: 48 89 df mov %rbx,%rdi | 7d9f: 48 89 df mov %rbx,%rdi | |
7e6e: e8 9d f9 ff ff callq 7810 <_ZN4drop17hddf9fd0101172 | 7da2: e8 69 fa ff ff callq 7810 <_ZN4drop17hddf9fd0101172 | |
print(tree, depth + 1); print(tree, depth + 1); | |
tree.parent(); tree.parent(); | |
} } | |
} } | |
fn main() { fn main() { | |
7e73: 48 81 c4 88 00 00 00 add $0x88,%rsp | 7da7: 48 83 c4 68 add $0x68,%rsp | |
7e7a: 5b pop %rbx | 7dab: 5b pop %rbx | |
7e7b: 41 5c pop %r12 | 7dac: 41 5c pop %r12 | |
7e7d: 41 5d pop %r13 | 7dae: 41 5d pop %r13 | |
7e7f: 41 5e pop %r14 | 7db0: 41 5e pop %r14 | |
7e81: 41 5f pop %r15 | 7db2: 41 5f pop %r15 | |
7e83: 5d pop %rbp | 7db4: 5d pop %rbp | |
7e84: c3 retq | 7db5: c3 retq | |
Some(index) Some(index) | |
} } | |
} } | |
fn child(&mut self, index: usize) -> bool { fn child(&mut self, index: usize) -> bool { | |
let child = unsafe { (*self.node).children[index] }; let child = unsafe { (*self.node).children[index] }; | |
7e85: 48 8d 3d 04 0b 25 00 lea 0x250b04(%rip),%rdi # 2 | 7db6: 48 8d 3d d3 0b 25 00 lea 0x250bd3(%rip),%rdi # 2 | |
7e8c: ba 02 00 00 00 mov $0x2,%edx | 7dbd: ba 02 00 00 00 mov $0x2,%edx | |
7e91: 4c 89 ee mov %r13,%rsi | 7dc2: 4c 89 ee mov %r13,%rsi | |
7e94: e8 a7 c8 03 00 callq 44740 <_ZN4core9panicking18pan | 7dc5: e8 76 c8 03 00 callq 44640 <_ZN4core9panicking18pan | |
7e99: e8 22 0b 01 00 callq 189c0 <_ZN5alloc3oom3oom17hf03 | 7dca: e8 f1 0a 01 00 callq 188c0 <_ZN5alloc3oom3oom17hf03 | |
7e9e: e8 1d 0b 01 00 callq 189c0 <_ZN5alloc3oom3oom17hf03 | 7dcf: 90 nop | |
7ea3: eb 02 jmp 7ea7 <_ZN5splay4main17h7cf589d | | |
7ea5: eb 07 jmp 7eae <_ZN5splay4main17h7cf589d | 0000000000007dd0 <main>: | |
7ea7: 48 89 c3 mov %rax,%rbx | 7dd0: 48 89 f0 mov %rsi,%rax | |
7eaa: eb 0e jmp 7eba <_ZN5splay4main17h7cf589d | 7dd3: 48 89 f9 mov %rdi,%rcx | |
7eac: eb 00 jmp 7eae <_ZN5splay4main17h7cf589d | 7dd6: 8a 15 76 44 04 00 mov 0x44476(%rip),%dl # 4c2 | |
7eae: 48 89 c3 mov %rax,%rbx | 7ddc: 48 8d 3d 6d fd ff ff lea -0x293(%rip),%rdi # 7b5 | |
} | 7de3: 48 89 ce mov %rcx,%rsi | |
| 7de6: 48 89 c2 mov %rax,%rdx | |
fn insert(&mut self, value: T) { | 7de9: e9 82 5b 00 00 jmpq d970 <_ZN3std2rt10lang_start17 | |
match self.tree.take() { | 7dee: 90 nop | |
None => self.tree = Some(Tree::new(value)), | 7def: 90 nop | |
Some(mut tree) => { | | |
7eb1: 48 8d 7d c0 lea -0x40(%rbp),%rdi | 0000000000007df0 <_ZN33_$LT$alloc..arc..Arc$LT$T$GT$$GT$9drop_slow17h7a70bfb0 | |
7eb5: e8 56 f9 ff ff callq 7810 <_ZN4drop17hddf9fd0101172 | 7df0: 41 56 push %r14 | |
7eba: 48 89 df mov %rbx,%rdi | 7df2: 53 push %rbx | |
7ebd: e8 be f7 ff ff callq 7680 <_Unwind_Resume@plt> | 7df3: 50 push %rax | |
7ec2: eb e3 jmp 7ea7 <_ZN5splay4main17h7cf589d | 7df4: 48 89 fb mov %rdi,%rbx | |
7ec4: 90 nop | 7df7: 4c 8b 33 mov (%rbx),%r14 | |
7ec5: 90 nop | 7dfa: 49 8d 7e 10 lea 0x10(%r14),%rdi | |
7ec6: 90 nop | 7dfe: e8 dd 08 00 00 callq 86e0 <_ZN4drop17h22c4e095070aa | |
7ec7: 90 nop | 7e03: 48 8b 03 mov (%rbx),%rax | |
7ec8: 90 nop | 7e06: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx | |
7ec9: 90 nop | 7e0d: f0 48 0f c1 48 08 lock xadd %rcx,0x8(%rax) | |
7eca: 90 nop | 7e13: 48 83 f9 01 cmp $0x1,%rcx | |
7ecb: 90 nop | 7e17: 75 19 jne 7e32 <_ZN33_$LT$alloc..arc..Ar | |
7ecc: 90 nop | 7e19: be 48 00 00 00 mov $0x48,%esi | |
7ecd: 90 nop | 7e1e: ba 08 00 00 00 mov $0x8,%edx | |
7ece: 90 nop | 7e23: 4c 89 f7 mov %r14,%rdi | |
7ecf: 90 nop | 7e26: 48 83 c4 08 add $0x8,%rsp | |
| 7e2a: 5b pop %rbx | |
0000000000007ed0 <main>: | 7e2b: 41 5e pop %r14 | |
7ed0: 48 89 f0 mov %rsi,%rax | 7e2d: e9 ee 0a 01 00 jmpq 18920 <__rust_deallocate> | |
7ed3: 48 89 f9 mov %rdi,%rcx | 7e32: 48 83 c4 08 add $0x8,%rsp | |
7ed6: 8a 15 76 44 04 00 mov 0x44476(%rip),%dl # 4c3 | 7e36: 5b pop %rbx | |
7edc: 48 8d 3d 0d fd ff ff lea -0x2f3(%rip),%rdi # 7bf | 7e37: 41 5e pop %r14 | |
7ee3: 48 89 ce mov %rcx,%rsi | 7e39: c3 retq | |
7ee6: 48 89 c2 mov %rax,%rdx | 7e3a: 90 nop | |
7ee9: e9 82 5b 00 00 jmpq da70 <_ZN3std2rt10lang_start17 | 7e3b: 90 nop | |
7eee: 90 nop | 7e3c: 90 nop | |
7eef: 90 nop | 7e3d: 90 nop | |
| 7e3e: 90 nop | |
0000000000007ef0 <_ZN33_$LT$alloc..arc..Arc$LT$T$GT$$GT$9drop_slow17h7a70bfb0 | 7e3f: 90 nop | |
7ef0: 41 56 push %r14 | | |
7ef2: 53 push %rbx | 0000000000007e40 <_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$11get_type_id17h71 | |
7ef3: 50 push %rax | 7e40: 48 b8 f1 af 77 9d 3b movabs $0xca56ac3b9d77aff1,%rax | |
7ef4: 48 89 fb mov %rdi,%rbx | 7e47: ac 56 ca | |
7ef7: 4c 8b 33 mov (%rbx),%r14 | 7e4a: c3 retq | |
7efa: 49 8d 7e 10 lea 0x10(%r14),%rdi | 7e4b: 90 nop | |
7efe: e8 dd 08 00 00 callq 87e0 <_ZN4drop17h22c4e095070aa | 7e4c: 90 nop | |
7f03: 48 8b 03 mov (%rbx),%rax | 7e4d: 90 nop | |
7f06: 48 c7 c1 ff ff ff ff mov $0xffffffffffffffff,%rcx | 7e4e: 90 nop | |
7f0d: f0 48 0f c1 48 08 lock xadd %rcx,0x8(%rax) | 7e4f: 90 nop | |
7f13: 48 83 f9 01 cmp $0x1,%rcx | | |
7f17: 75 19 jne 7f32 <_ZN33_$LT$alloc..arc..Ar | 0000000000007e50 <_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$11get_type_id17h8c | |
7f19: be 48 00 00 00 mov $0x48,%esi | 7e50: 48 b8 4b 99 a9 5b e8 movabs $0x4435a6e85ba9994b,%rax | |
7f1e: ba 08 00 00 00 mov $0x8,%edx | 7e57: a6 35 44 | |
7f23: 4c 89 f7 mov %r14,%rdi | 7e5a: c3 retq | |
7f26: 48 83 c4 08 add $0x8,%rsp | 7e5b: 90 nop | |
7f2a: 5b pop %rbx | 7e5c: 90 nop | |
7f2b: 41 5e pop %r14 | 7e5d: 90 nop | |
7f2d: e9 ee 0a 01 00 jmpq 18a20 <__rust_deallocate> | 7e5e: 90 nop | |
7f32: 48 83 c4 08 add $0x8,%rsp | 7e5f: 90 nop | |
7f36: 5b pop %rbx | | |
7f37: 41 5e pop %r14 | 0000000000007e60 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$16into_boxed_sl | |
7f39: c3 retq | 7e60: 41 57 push %r15 | |
7f3a: 90 nop | 7e62: 41 56 push %r14 | |
7f3b: 90 nop | 7e64: 41 54 push %r12 | |
7f3c: 90 nop | 7e66: 53 push %rbx | |
7f3d: 90 nop | 7e67: 50 push %rax | |
7f3e: 90 nop | 7e68: 4c 8b 37 mov (%rdi),%r14 | |
7f3f: 90 nop | 7e6b: 4c 8b 7f 08 mov 0x8(%rdi),%r15 | |
| 7e6f: 48 8b 5f 10 mov 0x10(%rdi),%rbx | |
0000000000007f40 <_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$11get_type_id17h71 | 7e73: 49 39 df cmp %rbx,%r15 | |
7f40: 48 b8 f1 af 77 9d 3b movabs $0xca56ac3b9d77aff1,%rax | 7e76: 72 75 jb 7eed <_ZN39_$LT$collections..v | |
7f47: ac 56 ca | 7e78: 48 85 db test %rbx,%rbx | |
7f4a: c3 retq | 7e7b: 74 0d je 7e8a <_ZN39_$LT$collections..v | |
7f4b: 90 nop | 7e7d: 49 39 df cmp %rbx,%r15 | |
7f4c: 90 nop | 7e80: 75 3e jne 7ec0 <_ZN39_$LT$collections..v | |
7f4d: 90 nop | 7e82: 4d 89 f4 mov %r14,%r12 | |
7f4e: 90 nop | 7e85: 4c 89 fb mov %r15,%rbx | |
7f4f: 90 nop | 7e88: eb 51 jmp 7edb <_ZN39_$LT$collections..v | |
| 7e8a: 31 db xor %ebx,%ebx | |
0000000000007f50 <_ZN36_$LT$T$u20$as$u20$core..any..Any$GT$11get_type_id17h8c | 7e8c: 41 bc 01 00 00 00 mov $0x1,%r12d | |
7f50: 48 b8 4b 99 a9 5b e8 movabs $0x4435a6e85ba9994b,%rax | 7e92: 4d 85 ff test %r15,%r15 | |
7f57: a6 35 44 | 7e95: 74 44 je 7edb <_ZN39_$LT$collections..v | |
7f5a: c3 retq | 7e97: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax | |
7f5b: 90 nop | 7e9e: 1d 1d 1d | |
7f5c: 90 nop | 7ea1: 49 39 c7 cmp %rax,%r15 | |
7f5d: 90 nop | 7ea4: 74 35 je 7edb <_ZN39_$LT$collections..v | |
7f5e: 90 nop | 7ea6: 41 bc 01 00 00 00 mov $0x1,%r12d | |
7f5f: 90 nop | 7eac: ba 01 00 00 00 mov $0x1,%edx | |
| 7eb1: 4c 89 f7 mov %r14,%rdi | |
0000000000007f60 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$16into_boxed_sl | 7eb4: 4c 89 fe mov %r15,%rsi | |
7f60: 41 57 push %r15 | 7eb7: e8 64 0a 01 00 callq 18920 <__rust_deallocate> | |
7f62: 41 56 push %r14 | 7ebc: 31 db xor %ebx,%ebx | |
7f64: 41 54 push %r12 | 7ebe: eb 1b jmp 7edb <_ZN39_$LT$collections..v | |
7f66: 53 push %rbx | 7ec0: b9 01 00 00 00 mov $0x1,%ecx | |
7f67: 50 push %rax | 7ec5: 4c 89 f7 mov %r14,%rdi | |
7f68: 4c 8b 37 mov (%rdi),%r14 | 7ec8: 4c 89 fe mov %r15,%rsi | |
7f6b: 4c 8b 7f 08 mov 0x8(%rdi),%r15 | 7ecb: 48 89 da mov %rbx,%rdx | |
7f6f: 48 8b 5f 10 mov 0x10(%rdi),%rbx | 7ece: e8 2d 0a 01 00 callq 18900 <__rust_reallocate> | |
7f73: 49 39 df cmp %rbx,%r15 | 7ed3: 49 89 c4 mov %rax,%r12 | |
7f76: 72 75 jb 7fed <_ZN39_$LT$collections..v | 7ed6: 4d 85 e4 test %r12,%r12 | |
7f78: 48 85 db test %rbx,%rbx | 7ed9: 74 1e je 7ef9 <_ZN39_$LT$collections..v | |
7f7b: 74 0d je 7f8a <_ZN39_$LT$collections..v | 7edb: 4c 89 e0 mov %r12,%rax | |
7f7d: 49 39 df cmp %rbx,%r15 | 7ede: 48 89 da mov %rbx,%rdx | |
7f80: 75 3e jne 7fc0 <_ZN39_$LT$collections..v | 7ee1: 48 83 c4 08 add $0x8,%rsp | |
7f82: 4d 89 f4 mov %r14,%r12 | 7ee5: 5b pop %rbx | |
7f85: 4c 89 fb mov %r15,%rbx | 7ee6: 41 5c pop %r12 | |
7f88: eb 51 jmp 7fdb <_ZN39_$LT$collections..v | 7ee8: 41 5e pop %r14 | |
7f8a: 31 db xor %ebx,%ebx | 7eea: 41 5f pop %r15 | |
7f8c: 41 bc 01 00 00 00 mov $0x1,%r12d | 7eec: c3 retq | |
7f92: 4d 85 ff test %r15,%r15 | 7eed: 48 8b 3d 14 20 25 00 mov 0x252014(%rip),%rdi # 2 | |
7f95: 74 44 je 7fdb <_ZN39_$LT$collections..v | 7ef4: e8 d7 c6 03 00 callq 445d0 <_ZN4core9panicking5pani | |
7f97: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax | 7ef9: e8 c2 09 01 00 callq 188c0 <_ZN5alloc3oom3oom17hf03 | |
7f9e: 1d 1d 1d | 7efe: 48 89 c3 mov %rax,%rbx | |
7fa1: 49 39 c7 cmp %rax,%r15 | 7f01: 4d 85 ff test %r15,%r15 | |
7fa4: 74 35 je 7fdb <_ZN39_$LT$collections..v | 7f04: 74 1f je 7f25 <_ZN39_$LT$collections..v | |
7fa6: 41 bc 01 00 00 00 mov $0x1,%r12d | 7f06: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax | |
7fac: ba 01 00 00 00 mov $0x1,%edx | 7f0d: 1d 1d 1d | |
7fb1: 4c 89 f7 mov %r14,%rdi | 7f10: 49 39 c7 cmp %rax,%r15 | |
7fb4: 4c 89 fe mov %r15,%rsi | 7f13: 74 10 je 7f25 <_ZN39_$LT$collections..v | |
7fb7: e8 64 0a 01 00 callq 18a20 <__rust_deallocate> | 7f15: ba 01 00 00 00 mov $0x1,%edx | |
7fbc: 31 db xor %ebx,%ebx | 7f1a: 4c 89 f7 mov %r14,%rdi | |
7fbe: eb 1b jmp 7fdb <_ZN39_$LT$collections..v | 7f1d: 4c 89 fe mov %r15,%rsi | |
7fc0: b9 01 00 00 00 mov $0x1,%ecx | 7f20: e8 fb 09 01 00 callq 18920 <__rust_deallocate> | |
7fc5: 4c 89 f7 mov %r14,%rdi | 7f25: 48 89 df mov %rbx,%rdi | |
7fc8: 4c 89 fe mov %r15,%rsi | 7f28: e8 53 f7 ff ff callq 7680 <_Unwind_Resume@plt> | |
7fcb: 48 89 da mov %rbx,%rdx | 7f2d: 90 nop | |
7fce: e8 2d 0a 01 00 callq 18a00 <__rust_reallocate> | 7f2e: 90 nop | |
7fd3: 49 89 c4 mov %rax,%r12 | 7f2f: 90 nop | |
7fd6: 4d 85 e4 test %r12,%r12 | | |
7fd9: 74 1e je 7ff9 <_ZN39_$LT$collections..v | 0000000000007f30 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$7reserve17h67a2 | |
7fdb: 4c 89 e0 mov %r12,%rax | 7f30: 41 56 push %r14 | |
7fde: 48 89 da mov %rbx,%rdx | 7f32: 53 push %rbx | |
7fe1: 48 83 c4 08 add $0x8,%rsp | 7f33: 50 push %rax | |
7fe5: 5b pop %rbx | 7f34: 48 89 f0 mov %rsi,%rax | |
7fe6: 41 5c pop %r12 | 7f37: 48 89 fb mov %rdi,%rbx | |
7fe8: 41 5e pop %r14 | 7f3a: 48 8b 73 08 mov 0x8(%rbx),%rsi | |
7fea: 41 5f pop %r15 | 7f3e: 48 8b 4b 10 mov 0x10(%rbx),%rcx | |
7fec: c3 retq | 7f42: 48 89 f2 mov %rsi,%rdx | |
7fed: 48 8b 3d 14 1f 25 00 mov 0x251f14(%rip),%rdi # 2 | 7f45: 48 29 ca sub %rcx,%rdx | |
7ff4: e8 d7 c6 03 00 callq 446d0 <_ZN4core9panicking5pani | 7f48: 48 39 c2 cmp %rax,%rdx | |
7ff9: e8 c2 09 01 00 callq 189c0 <_ZN5alloc3oom3oom17hf03 | 7f4b: 73 40 jae 7f8d <_ZN39_$LT$collections..v | |
7ffe: 48 89 c3 mov %rax,%rbx | 7f4d: 48 01 c1 add %rax,%rcx | |
8001: 4d 85 ff test %r15,%r15 | 7f50: 72 43 jb 7f95 <_ZN39_$LT$collections..v | |
8004: 74 1f je 8025 <_ZN39_$LT$collections..v | 7f52: 4c 8d 34 36 lea (%rsi,%rsi,1),%r14 | |
8006: 48 b8 1d 1d 1d 1d 1d movabs $0x1d1d1d1d1d1d1d1d,%rax | 7f56: 4c 39 f1 cmp %r14,%rcx | |
800d: 1d 1d 1d | 7f59: 4c 0f 43 f1 cmovae %rcx,%r14 | |
8010: 49 39 c7 cmp %rax,%r15 | 7f5d: 48 85 f6 test %rsi,%rsi | |
8013: 74 10 je 8025 <_ZN39_$LT$collections..v | 7f60: 74 12 je 7f74 <_ZN39_$LT$collections..v | |
8015: ba 01 00 00 00 mov $0x1,%edx | 7f62: 48 8b 3b mov (%rbx),%rdi | |
801a: 4c 89 f7 mov %r14,%rdi | 7f65: b9 01 00 00 00 mov $0x1,%ecx | |
801d: 4c 89 fe mov %r15,%rsi | 7f6a: 4c 89 f2 mov %r14,%rdx | |
8020: e8 fb 09 01 00 callq 18a20 <__rust_deallocate> | 7f6d: e8 8e 09 01 00 callq 18900 <__rust_reallocate> | |
8025: 48 89 df mov %rbx,%rdi | 7f72: eb 0d jmp 7f81 <_ZN39_$LT$collections..v | |
8028: e8 53 f6 ff ff callq 7680 <_Unwind_Resume@plt> | 7f74: be 01 00 00 00 mov $0x1,%esi | |
802d: 90 nop | 7f79: 4c 89 f7 mov %r14,%rdi | |
802e: 90 nop | 7f7c: e8 5f 09 01 00 callq 188e0 <__rust_allocate> | |
802f: 90 nop | 7f81: 48 85 c0 test %rax,%rax | |
| 7f84: 74 20 je 7fa6 <_ZN39_$LT$collections..v | |
0000000000008030 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$7reserve17h67a2 | 7f86: 48 89 03 mov %rax,(%rbx) | |
8030: 41 56 push %r14 | 7f89: 4c 89 73 08 mov %r14,0x8(%rbx) | |
8032: 53 push %rbx | 7f8d: 48 83 c4 08 add $0x8,%rsp | |
8033: 50 push %rax | 7f91: 5b pop %rbx | |
8034: 48 89 f0 mov %rsi,%rax | 7f92: 41 5e pop %r14 | |
8037: 48 89 fb mov %rdi,%rbx | 7f94: c3 retq | |
803a: 48 8b 73 08 mov 0x8(%rbx),%rsi | 7f95: 48 8d 3d e4 f3 03 00 lea 0x3f3e4(%rip),%rdi # 47 | |
803e: 48 8b 4b 10 mov 0x10(%rbx),%rcx | 7f9c: be 11 00 00 00 mov $0x11,%esi | |
8042: 48 89 f2 mov %rsi,%rdx | 7fa1: e8 7a c7 03 00 callq 44720 <_ZN4core6option13expect | |
8045: 48 29 ca sub %rcx,%rdx | 7fa6: e8 15 09 01 00 callq 188c0 <_ZN5alloc3oom3oom17hf03 | |
8048: 48 39 c2 cmp %rax,%rdx | 7fab: 90 nop | |
804b: 73 40 jae 808d <_ZN39_$LT$collections..v | 7fac: 90 nop | |
804d: 48 01 c1 add %rax,%rcx | 7fad: 90 nop | |
8050: 72 43 jb 8095 <_ZN39_$LT$collections..v | 7fae: 90 nop | |
8052: 4c 8d 34 36 lea (%rsi,%rsi,1),%r14 | 7faf: 90 nop | |
8056: 4c 39 f1 cmp %r14,%rcx | | |
8059: 4c 0f 43 f1 cmovae %rcx,%r14 | 0000000000007fb0 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$7reserve17hf6c7 | |
805d: 48 85 f6 test %rsi,%rsi | 7fb0: 41 56 push %r14 | |
8060: 74 12 je 8074 <_ZN39_$LT$collections..v | 7fb2: 53 push %rbx | |
8062: 48 8b 3b mov (%rbx),%rdi | 7fb3: 50 push %rax | |
8065: b9 01 00 00 00 mov $0x1,%ecx | 7fb4: 48 89 fb mov %rdi,%rbx | |
806a: 4c 89 f2 mov %r14,%rdx | 7fb7: 48 8b 4b 08 mov 0x8(%rbx),%rcx | |
806d: e8 8e 09 01 00 callq 18a00 <__rust_reallocate> | 7fbb: 48 8b 43 10 mov 0x10(%rbx),%rax | |
8072: eb 0d jmp 8081 <_ZN39_$LT$collections..v | 7fbf: 48 89 ca mov %rcx,%rdx | |
8074: be 01 00 00 00 mov $0x1,%esi | 7fc2: 48 29 c2 sub %rax,%rdx | |
8079: 4c 89 f7 mov %r14,%rdi | 7fc5: 48 39 f2 cmp %rsi,%rdx | |
807c: e8 5f 09 01 00 callq 189e0 <__rust_allocate> | 7fc8: 73 55 jae 801f <_ZN39_$LT$collections..v | |
8081: 48 85 c0 test %rax,%rax | 7fca: 48 01 f0 add %rsi,%rax | |
8084: 74 20 je 80a6 <_ZN39_$LT$collections..v | 7fcd: 72 58 jb 8027 <_ZN39_$LT$collections..v | |
8086: 48 89 03 mov %rax,(%rbx) | 7fcf: 4c 8d 34 09 lea (%rcx,%rcx,1),%r14 | |
8089: 4c 89 73 08 mov %r14,0x8(%rbx) | 7fd3: 4c 39 f0 cmp %r14,%rax | |
808d: 48 83 c4 08 add $0x8,%rsp | 7fd6: 4c 0f 43 f0 cmovae %rax,%r14 | |
8091: 5b pop %rbx | 7fda: ba 18 00 00 00 mov $0x18,%edx | |
8092: 41 5e pop %r14 | 7fdf: 4c 89 f0 mov %r14,%rax | |
8094: c3 retq | 7fe2: 48 f7 e2 mul %rdx | |
8095: 48 8d 3d e4 f3 03 00 lea 0x3f3e4(%rip),%rdi # 47 | 7fe5: 70 40 jo 8027 <_ZN39_$LT$collections..v | |
809c: be 11 00 00 00 mov $0x11,%esi | 7fe7: 48 85 c9 test %rcx,%rcx | |
80a1: e8 7a c7 03 00 callq 44820 <_ZN4core6option13expect | 7fea: 74 1a je 8006 <_ZN39_$LT$collections..v | |
80a6: e8 15 09 01 00 callq 189c0 <_ZN5alloc3oom3oom17hf03 | 7fec: 48 8b 3b mov (%rbx),%rdi | |
80ab: 90 nop | 7fef: 48 c1 e1 03 shl $0x3,%rcx | |
80ac: 90 nop | 7ff3: 48 8d 34 49 lea (%rcx,%rcx,2),%rsi | |
80ad: 90 nop | 7ff7: b9 08 00 00 00 mov $0x8,%ecx | |
80ae: 90 nop | 7ffc: 48 89 c2 mov %rax,%rdx | |
80af: 90 nop | 7fff: e8 fc 08 01 00 callq 18900 <__rust_reallocate> | |
| 8004: eb 0d jmp 8013 <_ZN39_$LT$collections..v | |
00000000000080b0 <_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$7reserve17hf6c7 | 8006: be 08 00 00 00 mov $0x8,%esi | |
80b0: 41 56 push %r14 | 800b: 48 89 c7 mov %rax,%rdi | |
80b2: 53 push %rbx | 800e: e8 cd 08 01 00 callq 188e0 <__rust_allocate> | |
80b3: 50 push %rax | 8013: 48 85 c0 test %rax,%rax | |
80b4: 48 89 fb mov %rdi,%rbx | 8016: 74 20 je 8038 <_ZN39_$LT$collections..v | |
80b7: 48 8b 4b 08 mov 0x8(%rbx),%rcx | 8018: 48 89 03 mov %rax,(%rbx) | |
80bb: 48 8b 43 10 mov 0x10(%rbx),%rax | 801b: 4c 89 73 08 mov %r14,0x8(%rbx) | |
80bf: 48 89 ca mov %rcx,%rdx | 801f: 48 83 c4 08 add $0x8,%rsp | |
80c2: 48 29 c2 sub %rax,%rdx | 8023: 5b pop %rbx | |
80c5: 48 39 f2 cmp %rsi,%rdx | 8024: 41 5e pop %r14 | |
80c8: 73 55 jae 811f <_ZN39_$LT$collections..v | 8026: c3 retq | |
80ca: 48 01 f0 add %rsi,%rax | 8027: 48 8d 3d 52 f3 03 00 lea 0x3f352(%rip),%rdi # 47 | |
80cd: 72 58 jb 8127 <_ZN39_$LT$collections..v | 802e: be 11 00 00 00 mov $0x11,%esi | |
80cf: 4c 8d 34 09 lea (%rcx,%rcx,1),%r14 | 8033: e8 e8 c6 03 00 callq 44720 <_ZN4core6option13expect | |
80d3: 4c 39 f0 cmp %r14,%rax | 8038: e8 83 08 01 00 callq 188c0 <_ZN5alloc3oom3oom17hf03 | |
80d6: 4c 0f 43 f0 cmovae %rax,%r14 | 803d: 90 nop | |
80da: ba 18 00 00 00 mov $0x18,%edx | 803e: 90 nop | |
80df: 4c 89 f0 mov %r14,%rax | 803f: 90 nop | |
80e2: 48 f7 e2 mul %rdx | | |
80e5: 70 40 jo 8127 <_ZN39_$LT$collections..v | 0000000000008040 <_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17h71bf | |
80e7: 48 85 c9 test %rcx,%rcx | 8040: 41 56 push %r14 | |
80ea: 74 1a je 8106 <_ZN39_$LT$collections..v | 8042: 53 push %rbx | |
80ec: 48 8b 3b mov (%rbx),%rdi | 8043: 50 push %rax | |
80ef: 48 c1 e1 03 shl $0x3,%rcx | 8044: 48 89 fb mov %rdi,%rbx | |
80f3: 48 8d 34 49 lea (%rcx,%rcx,2),%rsi | 8047: 48 8b 43 08 mov 0x8(%rbx),%rax | |
80f7: b9 08 00 00 00 mov $0x8,%ecx | 804b: 48 85 c0 test %rax,%rax | |
80fc: 48 89 c2 mov %rax,%rdx | 804e: 74 21 je 8071 <_ZN40_$LT$alloc..raw_vec | |
80ff: e8 fc 08 01 00 callq 18a00 <__rust_reallocate> | 8050: 48 89 c2 mov %rax,%rdx | |
8104: eb 0d jmp 8113 <_ZN39_$LT$collections..v | 8053: 48 c1 e2 05 shl $0x5,%rdx | |
8106: be 08 00 00 00 mov $0x8,%esi | 8057: 48 8b 3b mov (%rbx),%rdi | |
810b: 48 89 c7 mov %rax,%rdi | 805a: 48 89 c6 mov %rax,%rsi | |
810e: e8 cd 08 01 00 callq 189e0 <__rust_allocate> | 805d: 48 c1 e6 04 shl $0x4,%rsi | |
8113: 48 85 c0 test %rax,%rax | 8061: 4c 8d 34 00 lea (%rax,%rax,1),%r14 | |
8116: 74 20 je 8138 <_ZN39_$LT$collections..v | 8065: b9 08 00 00 00 mov $0x8,%ecx | |
8118: 48 89 03 mov %rax,(%rbx) | 806a: e8 91 08 01 00 callq 18900 <__rust_reallocate> | |
811b: 4c 89 73 08 mov %r14,0x8(%rbx) | 806f: eb 15 jmp 8086 <_ZN40_$LT$alloc..raw_vec | |
811f: 48 83 c4 08 add $0x8,%rsp | 8071: bf 40 00 00 00 mov $0x40,%edi | |
8123: 5b pop %rbx | 8076: be 08 00 00 00 mov $0x8,%esi | |
8124: 41 5e pop %r14 | 807b: e8 60 08 01 00 callq 188e0 <__rust_allocate> | |
8126: c3 retq | 8080: 41 be 04 00 00 00 mov $0x4,%r14d | |
8127: 48 8d 3d 52 f3 03 00 lea 0x3f352(%rip),%rdi # 47 | 8086: 48 85 c0 test %rax,%rax | |
812e: be 11 00 00 00 mov $0x11,%esi | 8089: 74 0f je 809a <_ZN40_$LT$alloc..raw_vec | |
8133: e8 e8 c6 03 00 callq 44820 <_ZN4core6option13expect | 808b: 48 89 03 mov %rax,(%rbx) | |
8138: e8 83 08 01 00 callq 189c0 <_ZN5alloc3oom3oom17hf03 | 808e: 4c 89 73 08 mov %r14,0x8(%rbx) | |
813d: 90 nop | 8092: 48 83 c4 08 add $0x8,%rsp | |
813e: 90 nop | 8096: 5b pop %rbx | |
813f: 90 nop | 8097: 41 5e pop %r14 | |
| 8099: c3 retq | |
0000000000008140 <_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$6double17h71bf | 809a: e8 21 08 01 00 callq 188c0 <_ZN5alloc3oom3oom17hf03 | |
8140: 41 56 push %r14 | 809f: 90 nop | |
8142: 53 push %rbx | | |
# ABRIDGED EXCERPT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Percent | Source code & Disassembly of splay | Percent | Source code & Disassembly of splay_no_landing | |
------------------------------------------------ ------------------------------------------------ | |
: : | |
: : | |
: : | |
: Disassembly of section .text: : Disassembly of section .text: | |
: : | |
: 0000000000007bf0 <splay::main::h7cf589df5d172d0b>: | : 0000000000007b50 <splay::main::h7cf589df5d172d0b>: | |
: print(tree, depth + 1); : print(tree, depth + 1); | |
: tree.parent(); : tree.parent(); | |
: } : } | |
: } : } | |
: : | |
: fn main() { : fn main() { | |
0.00 : 7bf0: push %rbp | 0.00 : 7b50: push %rbp | |
0.00 : 7bf1: mov %rsp,%rbp | 0.00 : 7b51: mov %rsp,%rbp | |
: tree: Option<Tree<T>>, : tree: Option<Tree<T>>, | |
: } : } | |
: : | |
: impl<T> Splay<T> where T: PartialOrd { : impl<T> Splay<T> where T: PartialOrd { | |
: fn new() -> Splay<T> { : fn new() -> Splay<T> { | |
: Splay { tree: None } : Splay { tree: None } | |
0.00 : 7bf4: push %r15 | 0.00 : 7b54: push %r15 | |
0.00 : 7bf6: push %r14 | 0.00 : 7b56: push %r14 | |
0.00 : 7bf8: push %r13 | 0.00 : 7b58: push %r13 | |
0.00 : 7bfa: push %r12 | 0.00 : 7b5a: push %r12 | |
0.00 : 7bfc: push %rbx | 0.00 : 7b5c: push %rbx | |
0.00 : 7bfd: sub $0x88,%rsp | 0.00 : 7b5d: sub $0x68,%rsp | |
0.00 : 7c04: movq $0x0,-0x78(%rbp) | 0.00 : 7b61: movq $0x0,-0x78(%rbp) | |
0.00 : 7c0c: lea -0x70(%rbp),%rbx | 0.00 : 7b69: lea -0x70(%rbp),%rbx | |
0.00 : 7c10: mov $0x1,%r15d | 0.00 : 7b6d: mov $0x1,%r15d | |
0.00 : 7c16: xor %eax,%eax | 0.00 : 7b73: xor %eax,%eax | |
0.00 : 7c18: lea -0x40(%rbp),%r12 | 0.00 : 7b75: lea -0x40(%rbp),%r12 | |
0.00 : 7c1c: mov $0x1,%r14d | 0.00 : 7b79: mov $0x1,%r14d | |
0.00 : 7c22: data32 data32 data32 data32 nopw %cs:0x0(%rax | 0.00 : 7b7f: nop | |
0.00 : 7c30: mov %r14d,%ecx | 0.00 : 7b80: mov %r14d,%ecx | |
0.00 : 7c33: shl $0x4,%ecx | 0.00 : 7b83: shl $0x4,%ecx | |
0.00 : 7c36: lea 0xff(%r14,%rcx,1),%r14d | 0.00 : 7b86: lea 0xff(%r14,%rcx,1),%r14d | |
0.00 : 7c3e: movups (%rbx),%xmm0 | 0.00 : 7b8e: movups (%rbx),%xmm0 | |
0.00 : 7c41: movaps %xmm0,-0xb0(%rbp) | 0.00 : 7b91: movaps %xmm0,-0x90(%rbp) | |
0.00 : 7c48: movq $0x0,-0x78(%rbp) | 0.00 : 7b98: movq $0x0,-0x78(%rbp) | |
: } : } | |
: } : } | |
: : | |
: fn insert(&mut self, value: T) { : fn insert(&mut self, value: T) { | |
: match self.tree.take() { : match self.tree.take() { | |
: None => self.tree = Some(Tree::new(value)), : None => self.tree = Some(Tree::new(value)), | |
0.00 : 7c50: test $0x1,%al | 0.00 : 7ba0: test $0x1,%al | |
0.00 : 7c52: je 7db0 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7ba2: je 7cf0 <splay::main::h7cf589df5d172d0b+0 | |
: Some(mut tree) => { : Some(mut tree) => { | |
0.00 : 7c58: movaps -0xb0(%rbp),%xmm0 | 0.00 : 7ba8: movaps -0x90(%rbp),%xmm0 | |
0.00 : 7c5f: movaps %xmm0,-0x40(%rbp) | 0.35 : 7baf: movaps %xmm0,-0x40(%rbp) | |
: Some(Tree { node: child }) : Some(Tree { node: child }) | |
: } : } | |
: } : } | |
: : | |
: fn value(&mut self) -> &mut T { : fn value(&mut self) -> &mut T { | |
: unsafe { &mut (*self.node).value } : unsafe { &mut (*self.node).value } | |
0.00 : 7c63: mov -0x40(%rbp),%r13 | 0.18 : 7bb3: mov -0x40(%rbp),%r13 | |
: fn insert(&mut self, value: T) { : fn insert(&mut self, value: T) { | |
: match self.tree.take() { : match self.tree.take() { | |
: None => self.tree = Some(Tree::new(value)), : None => self.tree = Some(Tree::new(value)), | |
: Some(mut tree) => { : Some(mut tree) => { | |
: loop { : loop { | |
: let index = if value < *tree.value() { 0 : let index = if value < *tree.value() { 0 | |
0.00 : 7c67: xor %ebx,%ebx | 0.00 : 7bb7: xor %ebx,%ebx | |
0.00 : 7c69: cmp %r14d,0x20(%r13) | 0.00 : 7bb9: cmp %r14d,0x20(%r13) | |
0.18 : 7c6d: setbe %bl | 0.18 : 7bbd: setbe %bl | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
0.37 : 7c70: mov 0x10(%r13,%rbx,8),%rax | 0.35 : 7bc0: mov 0x10(%r13,%rbx,8),%rax | |
: None => self.tree = Some(Tree::new(value)), : None => self.tree = Some(Tree::new(value)), | |
: Some(mut tree) => { : Some(mut tree) => { | |
: loop { : loop { | |
: let index = if value < *tree.value() { 0 : let index = if value < *tree.value() { 0 | |
: : | |
: if !tree.child(index) { : if !tree.child(index) { | |
0.37 : 7c75: test %rax,%rax | 0.00 : 7bc5: test %rax,%rax | |
0.00 : 7c78: je 7c9a <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7bc8: je 7bea <splay::main::h7cf589df5d172d0b+0 | |
0.18 : 7c7a: nopw 0x0(%rax,%rax,1) | 0.00 : 7bca: nopw 0x0(%rax,%rax,1) | |
: let mut splay = Splay::new(); : let mut splay = Splay::new(); | |
: : | |
: let mut num = 1u32; : let mut num = 1u32; | |
: for _ in 0..1000000 { : for _ in 0..1000000 { | |
: num = num.wrapping_mul(17).wrapping_add(255); : num = num.wrapping_mul(17).wrapping_add(255); | |
: splay.insert(num); : splay.insert(num); | |
1.46 : 7c80: mov %rax,%r13 | 1.23 : 7bd0: mov %rax,%r13 | |
: fn insert(&mut self, value: T) { : fn insert(&mut self, value: T) { | |
: match self.tree.take() { : match self.tree.take() { | |
: None => self.tree = Some(Tree::new(value)), : None => self.tree = Some(Tree::new(value)), | |
: Some(mut tree) => { : Some(mut tree) => { | |
: loop { : loop { | |
: let index = if value < *tree.value() { 0 : let index = if value < *tree.value() { 0 | |
0.00 : 7c83: xor %ebx,%ebx | 0.00 : 7bd3: xor %ebx,%ebx | |
0.00 : 7c85: cmp %r14d,0x20(%r13) | 0.00 : 7bd5: cmp %r14d,0x20(%r13) | |
63.80 : 7c89: setbe %bl | 64.15 : 7bd9: setbe %bl | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
3.29 : 7c8c: mov 0x10(%r13,%rbx,8),%rax | 1.41 : 7bdc: mov 0x10(%r13,%rbx,8),%rax | |
: if child == ptr::null_mut() { : if child == ptr::null_mut() { | |
16.82 : 7c91: test %rax,%rax | 17.22 : 7be1: test %rax,%rax | |
0.00 : 7c94: jne 7c80 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7be4: jne 7bd0 <splay::main::h7cf589df5d172d0b+0 | |
: false : false | |
: } else { : } else { | |
: self.node = child; : self.node = child; | |
0.73 : 7c96: mov %r13,-0x40(%rbp) | 0.35 : 7be6: mov %r13,-0x40(%rbp) | |
0.18 : 7c9a: xorps %xmm0,%xmm0 | 0.88 : 7bea: xorps %xmm0,%xmm0 | |
0.00 : 7c9d: movaps %xmm0,-0x60(%rbp) | 0.00 : 7bed: movaps %xmm0,-0x60(%rbp) | |
0.55 : 7ca1: movq $0x0,-0x50(%rbp) | 0.35 : 7bf1: movq $0x0,-0x50(%rbp) | |
0.00 : 7ca9: mov $0x28,%edi | 0.00 : 7bf9: mov $0x28,%edi | |
0.00 : 7cae: mov $0x8,%esi | 0.00 : 7bfe: mov $0x8,%esi | |
0.00 : 7cb3: callq 189e0 <__rust_allocate> | 0.00 : 7c03: callq 188e0 <__rust_allocate> | |
0.18 : 7cb8: test %rax,%rax | 0.00 : 7c08: test %rax,%rax | |
0.00 : 7cbb: je 7e99 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c0b: je 7dca <splay::main::h7cf589df5d172d0b+0 | |
0.00 : 7cc1: movq $0xffffffffffffffff,(%rax) | 0.00 : 7c11: movq $0xffffffffffffffff,(%rax) | |
0.00 : 7cc8: mov -0x50(%rbp),%rcx | 0.00 : 7c18: mov -0x50(%rbp),%rcx | |
0.00 : 7ccc: mov %rcx,0x18(%rax) | 0.00 : 7c1c: mov %rcx,0x18(%rax) | |
0.18 : 7cd0: movaps -0x60(%rbp),%xmm0 | 0.18 : 7c20: movaps -0x60(%rbp),%xmm0 | |
0.00 : 7cd4: movups %xmm0,0x8(%rax) | 0.00 : 7c24: movups %xmm0,0x8(%rax) | |
0.00 : 7cd8: mov %r14d,0x20(%rax) | 0.35 : 7c28: mov %r14d,0x20(%rax) | |
: node: *mut Node<T>, : node: *mut Node<T>, | |
: } : } | |
: : | |
: impl<T> Tree<T> { : impl<T> Tree<T> { | |
: fn new(value: T) -> Tree<T> { : fn new(value: T) -> Tree<T> { | |
: Tree { node: Box::into_raw(Box::new(Node::new(value)) : Tree { node: Box::into_raw(Box::new(Node::new(value)) | |
0.00 : 7cdc: movb $0xd4,-0x80(%rbp) | 0.18 : 7c2c: movb $0xd4,-0x58(%rbp) | |
0.00 : 7ce0: mov %rax,-0x88(%rbp) | 0.00 : 7c30: mov %rax,-0x60(%rbp) | |
: Some(mut tree) => { : Some(mut tree) => { | |
: loop { : loop { | |
: let index = if value < *tree.value() { 0 : let index = if value < *tree.value() { 0 | |
: : | |
: if !tree.child(index) { : if !tree.child(index) { | |
: tree.link(index, Tree::new(value)); : tree.link(index, Tree::new(value)); | |
0.00 : 7ce7: mov %r12,%rdi | 0.00 : 7c34: mov %r12,%rdi | |
0.00 : 7cea: mov %rbx,%rsi | 0.00 : 7c37: mov %rbx,%rsi | |
0.00 : 7ced: lea -0x88(%rbp),%rdx | 0.00 : 7c3a: lea -0x60(%rbp),%rdx | |
0.00 : 7cf4: callq 78b0 <_$LT$splay..Tree$LT$T$GT$$GT$::l | 0.00 : 7c3e: callq 78b0 <_$LT$splay..Tree$LT$T$GT$$GT$::l | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
0.00 : 7cf9: mov 0x10(%r13,%rbx,8),%rax | 0.00 : 7c43: mov 0x10(%r13,%rbx,8),%rax | |
: loop { : loop { | |
: let index = if value < *tree.value() { 0 : let index = if value < *tree.value() { 0 | |
: : | |
: if !tree.child(index) { : if !tree.child(index) { | |
: tree.link(index, Tree::new(value)); : tree.link(index, Tree::new(value)); | |
: tree.child(index); : tree.child(index); | |
0.00 : 7cfe: test %rax,%rax | 0.00 : 7c48: test %rax,%rax | |
0.00 : 7d01: je 7d14 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c4b: je 7c69 <splay::main::h7cf589df5d172d0b+0 | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
: if child == ptr::null_mut() { : if child == ptr::null_mut() { | |
: false : false | |
: } else { : } else { | |
: self.node = child; : self.node = child; | |
0.00 : 7d03: mov %rax,-0x40(%rbp) | 0.00 : 7c4d: mov %rax,-0x40(%rbp) | |
: fn new(value: T) -> Tree<T> { : fn new(value: T) -> Tree<T> { | |
: Tree { node: Box::into_raw(Box::new(Node::new(value)) : Tree { node: Box::into_raw(Box::new(Node::new(value)) | |
: } : } | |
: : | |
: fn parent(&mut self) -> Option<usize> { : fn parent(&mut self) -> Option<usize> { | |
: let parent = unsafe { (*self.node).parent }; : let parent = unsafe { (*self.node).parent }; | |
0.00 : 7d07: mov %rax,%r13 | 0.00 : 7c51: mov %rax,%r13 | |
0.00 : 7d0a: jmp 7d14 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c54: jmp 7c69 <splay::main::h7cf589df5d172d0b+0 | |
0.00 : 7d0c: nopl 0x0(%rax) | 0.00 : 7c56: nopw %cs:0x0(%rax,%rax,1) | |
0.00 : 7d10: mov -0x40(%rbp),%r13 | : Some(index) => index, | |
0.00 : 7d14: mov 0x8(%r13),%rax | : }; | |
> : | |
> : if i1 == i2 { | |
> : self.rotate(tree, i2); | |
> : self.rotate(tree, i1); | |
> 0.00 : 7c60: callq 7980 <_$LT$splay..Splay$LT$T$GT$$GT$:: | |
> : fn new(value: T) -> Tree<T> { | |
> : Tree { node: Box::into_raw(Box::new(Node::new(value)) | |
> : } | |
> : | |
> : fn parent(&mut self) -> Option<usize> { | |
> : let parent = unsafe { (*self.node).parent }; | |
> 0.00 : 7c65: mov -0x40(%rbp),%r13 | |
> 0.00 : 7c69: mov 0x8(%r13),%rax | |
: } : } | |
: } : } | |
: : | |
: fn splay(&self, mut tree: &mut Tree<T>) { : fn splay(&self, mut tree: &mut Tree<T>) { | |
: loop { : loop { | |
: let i1 = match tree.parent() { : let i1 = match tree.parent() { | |
0.00 : 7d18: test %rax,%rax | 0.35 : 7c6d: test %rax,%rax | |
0.00 : 7d1b: je 7e2f <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c70: je 7d63 <splay::main::h7cf589df5d172d0b+0 | |
: fn parent(&mut self) -> Option<usize> { : fn parent(&mut self) -> Option<usize> { | |
: let parent = unsafe { (*self.node).parent }; : let parent = unsafe { (*self.node).parent }; | |
: if parent == ptr::null_mut() { : if parent == ptr::null_mut() { | |
: None : None | |
: } else { : } else { | |
: let index = unsafe { (*self.node).index }; : let index = unsafe { (*self.node).index }; | |
0.00 : 7d21: mov 0x0(%r13),%rbx | 0.18 : 7c76: mov 0x0(%r13),%rbx | |
: self.node = parent; : self.node = parent; | |
0.91 : 7d25: mov %rax,-0x40(%rbp) | 0.18 : 7c7a: mov %rax,-0x40(%rbp) | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
0.00 : 7d29: mov 0x8(%rax),%rcx | 0.53 : 7c7e: mov 0x8(%rax),%rcx | |
: Tree { node: Box::into_raw(Box::new(Node::new(value)) : Tree { node: Box::into_raw(Box::new(Node::new(value)) | |
: } : } | |
: : | |
: fn parent(&mut self) -> Option<usize> { : fn parent(&mut self) -> Option<usize> { | |
: let parent = unsafe { (*self.node).parent }; : let parent = unsafe { (*self.node).parent }; | |
: if parent == ptr::null_mut() { : if parent == ptr::null_mut() { | |
5.67 : 7d2d: test %rcx,%rcx | 5.10 : 7c82: test %rcx,%rcx | |
0.00 : 7d30: je 7e24 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c85: je 7d58 <splay::main::h7cf589df5d172d0b+0 | |
: None : None | |
: } else { : } else { | |
: let index = unsafe { (*self.node).index }; : let index = unsafe { (*self.node).index }; | |
0.18 : 7d36: mov (%rax),%r13 | 0.35 : 7c8b: mov (%rax),%r13 | |
: self.node = parent; : self.node = parent; | |
0.55 : 7d39: mov %rcx,-0x40(%rbp) | 0.18 : 7c8e: mov %rcx,-0x40(%rbp) | |
: break; : break; | |
: }, : }, | |
: Some(index) => index, : Some(index) => index, | |
: }; : }; | |
: : | |
: if i1 == i2 { : if i1 == i2 { | |
0.00 : 7d3d: cmp %r13,%rbx | 0.53 : 7c92: cmp %r13,%rbx | |
0.00 : 7d40: jne 7d60 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7c95: jne 7cb0 <splay::main::h7cf589df5d172d0b+0 | |
: self.rotate(tree, i2); : self.rotate(tree, i2); | |
0.73 : 7d42: mov %r12,%rdi | 1.23 : 7c97: mov %r12,%rdi | |
0.73 : 7d45: mov %rbx,%rsi | 0.18 : 7c9a: mov %rbx,%rsi | |
0.00 : 7d48: callq 79b0 <_$LT$splay..Splay$LT$T$GT$$GT$:: | 0.00 : 7c9d: callq 7980 <_$LT$splay..Splay$LT$T$GT$$GT$:: | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
0.18 : 7d4d: mov %r12,%rdi | 0.00 : 7ca2: mov %r12,%rdi | |
0.00 : 7d50: mov %rbx,%rsi | 0.00 : 7ca5: mov %rbx,%rsi | |
0.00 : 7d53: callq 79b0 <_$LT$splay..Splay$LT$T$GT$$GT$:: | 0.00 : 7ca8: jmp 7c60 <splay::main::h7cf589df5d172d0b+0 | |
0.37 : 7d58: jmp 7d10 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7caa: nopw 0x0(%rax,%rax,1) | |
0.00 : 7d5a: nopw 0x0(%rax,%rax,1) < | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
0.37 : 7d60: cmp $0x1,%r13 | 0.53 : 7cb0: cmp $0x1,%r13 | |
0.00 : 7d64: ja 7e85 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7cb4: ja 7db6 <splay::main::h7cf589df5d172d0b+0 | |
0.91 : 7d6a: mov 0x10(%rcx,%r13,8),%rax | 0.35 : 7cba: mov 0x10(%rcx,%r13,8),%rax | |
: : | |
: if i1 == i2 { : if i1 == i2 { | |
: self.rotate(tree, i2); : self.rotate(tree, i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: } else { : } else { | |
: tree.child(i2); : tree.child(i2); | |
0.37 : 7d6f: test %rax,%rax | 1.23 : 7cbf: test %rax,%rax | |
0.00 : 7d72: je 7d78 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7cc2: je 7cc8 <splay::main::h7cf589df5d172d0b+0 | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
: if child == ptr::null_mut() { : if child == ptr::null_mut() { | |
: false : false | |
: } else { : } else { | |
: self.node = child; : self.node = child; | |
0.00 : 7d74: mov %rax,-0x40(%rbp) | 0.18 : 7cc4: mov %rax,-0x40(%rbp) | |
: if i1 == i2 { : if i1 == i2 { | |
: self.rotate(tree, i2); : self.rotate(tree, i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: } else { : } else { | |
: tree.child(i2); : tree.child(i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
0.18 : 7d78: mov %r12,%rdi | 0.53 : 7cc8: mov %r12,%rdi | |
0.00 : 7d7b: mov %rbx,%rsi | 0.00 : 7ccb: mov %rbx,%rsi | |
0.00 : 7d7e: callq 79b0 <_$LT$splay..Splay$LT$T$GT$$GT$:: | 0.00 : 7cce: callq 7980 <_$LT$splay..Splay$LT$T$GT$$GT$:: | |
: fn new(value: T) -> Tree<T> { : fn new(value: T) -> Tree<T> { | |
: Tree { node: Box::into_raw(Box::new(Node::new(value)) : Tree { node: Box::into_raw(Box::new(Node::new(value)) | |
: } : } | |
: : | |
: fn parent(&mut self) -> Option<usize> { : fn parent(&mut self) -> Option<usize> { | |
: let parent = unsafe { (*self.node).parent }; : let parent = unsafe { (*self.node).parent }; | |
0.00 : 7d83: mov -0x40(%rbp),%rax | 0.00 : 7cd3: mov -0x40(%rbp),%rax | |
0.00 : 7d87: mov 0x8(%rax),%rax | 0.18 : 7cd7: mov 0x8(%rax),%rax | |
: self.rotate(tree, i2); : self.rotate(tree, i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: } else { : } else { | |
: tree.child(i2); : tree.child(i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: tree.parent(); : tree.parent(); | |
0.00 : 7d8b: test %rax,%rax | 0.00 : 7cdb: test %rax,%rax | |
0.00 : 7d8e: je 7d94 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7cde: je 7ce4 <splay::main::h7cf589df5d172d0b+0 | |
: let parent = unsafe { (*self.node).parent }; : let parent = unsafe { (*self.node).parent }; | |
: if parent == ptr::null_mut() { : if parent == ptr::null_mut() { | |
: None : None | |
: } else { : } else { | |
: let index = unsafe { (*self.node).index }; : let index = unsafe { (*self.node).index }; | |
: self.node = parent; : self.node = parent; | |
0.00 : 7d90: mov %rax,-0x40(%rbp) | 0.00 : 7ce0: mov %rax,-0x40(%rbp) | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: } else { : } else { | |
: tree.child(i2); : tree.child(i2); | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
: tree.parent(); : tree.parent(); | |
: self.rotate(tree, i2); : self.rotate(tree, i2); | |
0.00 : 7d94: mov %r12,%rdi | 0.18 : 7ce4: mov %r12,%rdi | |
0.00 : 7d97: mov %r13,%rsi | 0.35 : 7ce7: mov %r13,%rsi | |
0.00 : 7d9a: callq 79b0 <_$LT$splay..Splay$LT$T$GT$$GT$:: | 0.00 : 7cea: jmpq 7c60 <splay::main::h7cf589df5d172d0b+0 | |
0.18 : 7d9f: jmpq 7d10 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7cef: nop | |
0.00 : 7da4: data32 data32 nopw %cs:0x0(%rax,%rax,1) | 0.00 : 7cf0: xorps %xmm0,%xmm0 | |
0.00 : 7db0: xorps %xmm0,%xmm0 | 0.00 : 7cf3: movaps %xmm0,-0x60(%rbp) | |
0.00 : 7db3: movaps %xmm0,-0xa0(%rbp) | 0.00 : 7cf7: movq $0x0,-0x50(%rbp) | |
0.00 : 7dba: movq $0x0,-0x90(%rbp) | 0.00 : 7cff: mov $0x28,%edi | |
0.00 : 7dc5: mov $0x28,%edi | 0.00 : 7d04: mov $0x8,%esi | |
0.00 : 7dca: mov $0x8,%esi | 0.00 : 7d09: callq 188e0 <__rust_allocate> | |
0.00 : 7dcf: callq 189e0 <__rust_allocate> | 0.00 : 7d0e: test %rax,%rax | |
0.00 : 7dd4: test %rax,%rax | 0.00 : 7d11: je 7dca <splay::main::h7cf589df5d172d0b+0 | |
0.00 : 7dd7: je 7e9e <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7d17: movq $0xffffffffffffffff,(%rax) | |
0.00 : 7ddd: movq $0xffffffffffffffff,(%rax) | 0.00 : 7d1e: mov -0x50(%rbp),%rcx | |
0.00 : 7de4: mov -0x90(%rbp),%rcx | 0.00 : 7d22: mov %rcx,0x18(%rax) | |
0.00 : 7deb: mov %rcx,0x18(%rax) | 0.00 : 7d26: movaps -0x60(%rbp),%xmm0 | |
0.00 : 7def: movaps -0xa0(%rbp),%xmm0 | 0.00 : 7d2a: movups %xmm0,0x8(%rax) | |
0.00 : 7df6: movups %xmm0,0x8(%rax) | 0.00 : 7d2e: mov %r14d,0x20(%rax) | |
0.00 : 7dfa: mov %r14d,0x20(%rax) < | |
: } : } | |
: } : } | |
: : | |
: fn insert(&mut self, value: T) { : fn insert(&mut self, value: T) { | |
: match self.tree.take() { : match self.tree.take() { | |
: None => self.tree = Some(Tree::new(value)), : None => self.tree = Some(Tree::new(value)), | |
0.00 : 7dfe: movq $0x1,-0x78(%rbp) | 0.00 : 7d32: movq $0x1,-0x78(%rbp) | |
0.00 : 7e06: mov %rax,-0x70(%rbp) | 0.00 : 7d3a: mov %rax,-0x70(%rbp) | |
0.00 : 7e0a: movb $0xd4,-0x68(%rbp) | 0.00 : 7d3e: movb $0xd4,-0x68(%rbp) | |
0.00 : 7e0e: mov -0x5a(%rbp),%al | 0.00 : 7d42: mov -0x5a(%rbp),%al | |
0.00 : 7e11: mov %al,0xf(%rbx) | 0.00 : 7d45: mov %al,0xf(%rbx) | |
0.00 : 7e14: movzwl -0x5c(%rbp),%eax | 0.00 : 7d48: movzwl -0x5c(%rbp),%eax | |
0.00 : 7e18: mov %ax,0xd(%rbx) | 0.00 : 7d4c: mov %ax,0xd(%rbx) | |
0.00 : 7e1c: mov -0x60(%rbp),%eax | 0.00 : 7d50: mov -0x60(%rbp),%eax | |
0.00 : 7e1f: mov %eax,0x9(%rbx) | 0.00 : 7d53: mov %eax,0x9(%rbx) | |
0.00 : 7e22: jmp 7e4a <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7d56: jmp 7d7e <splay::main::h7cf589df5d172d0b+0 | |
: None => break, : None => break, | |
: Some(index) => index, : Some(index) => index, | |
: }; : }; | |
: let i2 = match tree.parent() { : let i2 = match tree.parent() { | |
: None => { : None => { | |
: self.rotate(tree, i1); : self.rotate(tree, i1); | |
0.00 : 7e24: mov %r12,%rdi | 0.18 : 7d58: mov %r12,%rdi | |
0.00 : 7e27: mov %rbx,%rsi | 0.00 : 7d5b: mov %rbx,%rsi | |
0.00 : 7e2a: callq 79b0 <_$LT$splay..Splay$LT$T$GT$$GT$:: | 0.00 : 7d5e: callq 7980 <_$LT$splay..Splay$LT$T$GT$$GT$:: | |
: : | |
: if !tree.child(index) { : if !tree.child(index) { | |
: tree.link(index, Tree::new(value)); : tree.link(index, Tree::new(value)); | |
: tree.child(index); : tree.child(index); | |
: self.splay(&mut tree); : self.splay(&mut tree); | |
: self.tree = Some(tree); : self.tree = Some(tree); | |
0.18 : 7e2f: movaps -0x40(%rbp),%xmm0 | 0.00 : 7d63: movaps -0x40(%rbp),%xmm0 | |
0.00 : 7e33: movaps %xmm0,-0x60(%rbp) | 0.00 : 7d67: movaps %xmm0,-0x60(%rbp) | |
0.00 : 7e37: movq $0x1,-0x78(%rbp) | 0.00 : 7d6b: movq $0x1,-0x78(%rbp) | |
0.00 : 7e3f: movaps -0x60(%rbp),%xmm0 | 0.00 : 7d73: movaps -0x60(%rbp),%xmm0 | |
0.00 : 7e43: lea -0x70(%rbp),%rbx | 0.18 : 7d77: lea -0x70(%rbp),%rbx | |
0.00 : 7e47: movups %xmm0,(%rbx) | 0.00 : 7d7b: movups %xmm0,(%rbx) | |
0.00 : 7e4a: xor %ecx,%ecx | 0.00 : 7d7e: xor %ecx,%ecx | |
0.00 : 7e4c: cmp $0xf4240,%r15d | 0.00 : 7d80: cmp $0xf4240,%r15d | |
0.18 : 7e53: setl %cl | 0.00 : 7d87: setl %cl | |
0.00 : 7e56: add %r15d,%ecx | 0.00 : 7d8a: add %r15d,%ecx | |
0.00 : 7e59: cmp $0xf4240,%r15d | 0.00 : 7d8d: cmp $0xf4240,%r15d | |
0.00 : 7e60: mov $0x1,%al | 0.00 : 7d94: mov $0x1,%al | |
0.00 : 7e62: mov %ecx,%r15d | 0.00 : 7d96: mov %ecx,%r15d | |
0.00 : 7e65: jl 7c30 <splay::main::h7cf589df5d172d0b+0 | 0.00 : 7d99: jl 7b80 <splay::main::h7cf589df5d172d0b+0 | |
: tree.parent(); : tree.parent(); | |
: } : } | |
: } : } | |
: : | |
: fn main() { : fn main() { | |
: let mut splay = Splay::new(); : let mut splay = Splay::new(); | |
0.00 : 7e6b: mov %rbx,%rdi | 0.00 : 7d9f: mov %rbx,%rdi | |
0.00 : 7e6e: callq 7810 <drop::hddf9fd0101172c6c> | 0.00 : 7da2: callq 7810 <drop::hddf9fd0101172c6c> | |
: print(tree, depth + 1); : print(tree, depth + 1); | |
: tree.parent(); : tree.parent(); | |
: } : } | |
: } : } | |
: : | |
: fn main() { : fn main() { | |
0.00 : 7e73: add $0x88,%rsp | 0.00 : 7da7: add $0x68,%rsp | |
0.00 : 7e7a: pop %rbx | 0.00 : 7dab: pop %rbx | |
0.00 : 7e7b: pop %r12 | 0.00 : 7dac: pop %r12 | |
0.00 : 7e7d: pop %r13 | 0.00 : 7dae: pop %r13 | |
0.00 : 7e7f: pop %r14 | 0.00 : 7db0: pop %r14 | |
0.00 : 7e81: pop %r15 | 0.00 : 7db2: pop %r15 | |
0.00 : 7e83: pop %rbp | 0.00 : 7db4: pop %rbp | |
0.00 : 7e84: retq | 0.00 : 7db5: retq | |
: Some(index) : Some(index) | |
: } : } | |
: } : } | |
: : | |
: fn child(&mut self, index: usize) -> bool { : fn child(&mut self, index: usize) -> bool { | |
: let child = unsafe { (*self.node).children[index] }; : let child = unsafe { (*self.node).children[index] }; | |
0.00 : 7e85: lea 0x250b04(%rip),%rdi # 258990 <p | 0.00 : 7db6: lea 0x250bd3(%rip),%rdi # 258990 <p | |
0.00 : 7e8c: mov $0x2,%edx | 0.00 : 7dbd: mov $0x2,%edx | |
0.00 : 7e91: mov %r13,%rsi | 0.00 : 7dc2: mov %r13,%rsi | |
0.00 : 7e94: callq 44740 <core::panicking::panic_bounds_c | 0.00 : 7dc5: callq 44640 <core::panicking::panic_bounds_c | |
0.00 : 7e99: callq 189c0 <alloc::oom::oom::hf03dbd680f815 | 0.00 : 7dca: callq 188c0 <alloc::oom::oom::hf03dbd680f815 | |
0.00 : 7e9e: callq 189c0 <alloc::oom::oom::hf03dbd680f815 < | |
0.00 : 7ea3: jmp 7ea7 <splay::main::h7cf589df5d172d0b+0 < | |
0.00 : 7ea5: jmp 7eae <splay::main::h7cf589df5d172d0b+0 < | |
0.00 : 7ea7: mov %rax,%rbx < | |
0.00 : 7eaa: jmp 7eba <splay::main::h7cf589df5d172d0b+0 < | |
0.00 : 7eac: jmp 7eae <splay::main::h7cf589df5d172d0b+0 < | |
0.00 : 7eae: mov %rax,%rbx < | |
: } < | |
: < | |
: fn insert(&mut self, value: T) { < | |
: match self.tree.take() { < | |
: None => self.tree = Some(Tree::new(value)), < | |
: Some(mut tree) => { < | |
0.00 : 7eb1: lea -0x40(%rbp),%rdi < | |
0.00 : 7eb5: callq 7810 <drop::hddf9fd0101172c6c> < | |
0.00 : 7eba: mov %rbx,%rdi < | |
0.00 : 7ebd: callq 7680 <_Unwind_Resume@plt> < | |
0.00 : 7ec2: jmp 7ea7 <splay::main::h7cf589df5d172d0b+0 < |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment