Ukázka volání systémové funkce v C
Je to hodně dlouhé. Hlavně assembler.
Primitivní prográmek v jazyce C
#include <stdio.h>
int main(void)
{
printf("Nazdar studenti!\n");
return 0;
}
Překlad a spuštění programu
$ zig cc -o hello hello.c -target x86_64-linux-musl -O2 (1)
$ file hello (2)
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped
$ objdump -d hello (3)
$ ./hello (4)
Nazdar studenti! (5)
$
| 1 | Překlad se statickým linkováním (program nepotřebuje k běhu žádné dynamické knihovny) |
| 2 | Ověření, že je to tak. |
| 3 | Podíváme se dovnitř objdumpem, co nám překladač vytvořil |
| 4 | Spuštění programu |
| 5 | Výpis na obrazovku do terminálu. |
Překladač nám vytvořil program, co nepotřebuje knihovny
hello: file format elf64-x86-64
Disassembly of section .text:
00000000002015a0 <_start>:
2015a0: 48 31 ed xor %rbp,%rbp
2015a3: 48 89 e7 mov %rsp,%rdi
2015a6: 48 8d 35 53 ea df ff lea -0x2015ad(%rip),%rsi # 0 <_start-0x2015a0>
2015ad: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
2015b1: e8 00 00 00 00 callq 2015b6 <_start_c>
00000000002015b6 <_start_c>:
2015b6: 8b 37 mov (%rdi),%esi
2015b8: 48 8d 57 08 lea 0x8(%rdi),%rdx
2015bc: 48 8d 3d 2d 01 00 00 lea 0x12d(%rip),%rdi # 2016f0 <main>
2015c3: 48 8d 0d 83 0c 00 00 lea 0xc83(%rip),%rcx # 20224d <_init>
2015ca: 4c 8d 05 7f 0c 00 00 lea 0xc7f(%rip),%r8 # 202250 <_fini>
2015d1: 45 31 c9 xor %r9d,%r9d
2015d4: e9 e2 04 00 00 jmpq 201abb <__libc_start_main>
2015d9: cc int3
2015da: cc int3
2015db: cc int3
00000000002015dc <memcpy>:
2015dc: 48 89 f8 mov %rdi,%rax
2015df: 48 83 fa 08 cmp $0x8,%rdx
2015e3: 72 14 jb 2015f9 <memcpy+0x1d>
2015e5: f7 c7 07 00 00 00 test $0x7,%edi
2015eb: 74 0c je 2015f9 <memcpy+0x1d>
2015ed: a4 movsb %ds:(%rsi),%es:(%rdi)
2015ee: 48 ff ca dec %rdx
2015f1: f7 c7 07 00 00 00 test $0x7,%edi
2015f7: 75 f4 jne 2015ed <memcpy+0x11>
2015f9: 48 89 d1 mov %rdx,%rcx
2015fc: 48 c1 e9 03 shr $0x3,%rcx
201600: f3 48 a5 rep movsq %ds:(%rsi),%es:(%rdi)
201603: 83 e2 07 and $0x7,%edx
201606: 74 05 je 20160d <memcpy+0x31>
201608: a4 movsb %ds:(%rsi),%es:(%rdi)
201609: ff ca dec %edx
20160b: 75 fb jne 201608 <memcpy+0x2c>
20160d: c3 retq
20160e: cc int3
20160f: cc int3
0000000000201610 <__set_thread_area>:
201610: 48 89 fe mov %rdi,%rsi
201613: bf 02 10 00 00 mov $0x1002,%edi
201618: b8 9e 00 00 00 mov $0x9e,%eax
20161d: 0f 05 syscall
20161f: c3 retq
0000000000201620 <memset>:
201620: 48 0f b6 c6 movzbq %sil,%rax
201624: 49 b8 01 01 01 01 01 movabs $0x101010101010101,%r8
20162b: 01 01 01
20162e: 49 0f af c0 imul %r8,%rax
201632: 48 83 fa 7e cmp $0x7e,%rdx
201636: 77 78 ja 2016b0 <memset+0x90>
201638: 85 d2 test %edx,%edx
20163a: 74 70 je 2016ac <memset+0x8c>
20163c: 40 88 37 mov %sil,(%rdi)
20163f: 40 88 74 17 ff mov %sil,-0x1(%rdi,%rdx,1)
201644: 83 fa 02 cmp $0x2,%edx
201647: 76 63 jbe 2016ac <memset+0x8c>
201649: 66 89 47 01 mov %ax,0x1(%rdi)
20164d: 66 89 44 17 fd mov %ax,-0x3(%rdi,%rdx,1)
201652: 83 fa 06 cmp $0x6,%edx
201655: 76 55 jbe 2016ac <memset+0x8c>
201657: 89 47 03 mov %eax,0x3(%rdi)
20165a: 89 44 17 f9 mov %eax,-0x7(%rdi,%rdx,1)
20165e: 83 fa 0e cmp $0xe,%edx
201661: 76 49 jbe 2016ac <memset+0x8c>
201663: 48 89 47 07 mov %rax,0x7(%rdi)
201667: 48 89 44 17 f1 mov %rax,-0xf(%rdi,%rdx,1)
20166c: 83 fa 1e cmp $0x1e,%edx
20166f: 76 3b jbe 2016ac <memset+0x8c>
201671: 48 89 47 0f mov %rax,0xf(%rdi)
201675: 48 89 47 17 mov %rax,0x17(%rdi)
201679: 48 89 44 17 e1 mov %rax,-0x1f(%rdi,%rdx,1)
20167e: 48 89 44 17 e9 mov %rax,-0x17(%rdi,%rdx,1)
201683: 83 fa 3e cmp $0x3e,%edx
201686: 76 24 jbe 2016ac <memset+0x8c>
201688: 48 89 47 1f mov %rax,0x1f(%rdi)
20168c: 48 89 47 27 mov %rax,0x27(%rdi)
201690: 48 89 47 2f mov %rax,0x2f(%rdi)
201694: 48 89 47 37 mov %rax,0x37(%rdi)
201698: 48 89 44 17 c1 mov %rax,-0x3f(%rdi,%rdx,1)
20169d: 48 89 44 17 c9 mov %rax,-0x37(%rdi,%rdx,1)
2016a2: 48 89 44 17 d1 mov %rax,-0x2f(%rdi,%rdx,1)
2016a7: 48 89 44 17 d9 mov %rax,-0x27(%rdi,%rdx,1)
2016ac: 48 89 f8 mov %rdi,%rax
2016af: c3 retq
2016b0: f7 c7 0f 00 00 00 test $0xf,%edi
2016b6: 49 89 f8 mov %rdi,%r8
2016b9: 48 89 44 17 f8 mov %rax,-0x8(%rdi,%rdx,1)
2016be: 48 89 d1 mov %rdx,%rcx
2016c1: 75 0b jne 2016ce <memset+0xae>
2016c3: 48 c1 e9 03 shr $0x3,%rcx
2016c7: f3 48 ab rep stos %rax,%es:(%rdi)
2016ca: 4c 89 c0 mov %r8,%rax
2016cd: c3 retq
2016ce: 31 d2 xor %edx,%edx
2016d0: 29 fa sub %edi,%edx
2016d2: 83 e2 0f and $0xf,%edx
2016d5: 48 89 07 mov %rax,(%rdi)
2016d8: 48 89 47 08 mov %rax,0x8(%rdi)
2016dc: 48 29 d1 sub %rdx,%rcx
2016df: 48 01 d7 add %rdx,%rdi
2016e2: eb df jmp 2016c3 <memset+0xa3>
2016e4: cc int3
2016e5: cc int3
2016e6: cc int3
2016e7: cc int3
2016e8: cc int3
2016e9: cc int3
2016ea: cc int3
2016eb: cc int3
2016ec: cc int3
2016ed: cc int3
2016ee: cc int3
2016ef: cc int3
00000000002016f0 <main>: (1)
2016f0: 50 push %rax
2016f1: e8 bd 04 00 00 callq 201bb3 <puts> (2)
2016f6: 31 c0 xor %eax,%eax
2016f8: 59 pop %rcx
2016f9: c3 retq
00000000002016fa <__init_libc>:
2016fa: 41 57 push %r15
2016fc: 41 56 push %r14
2016fe: 41 54 push %r12
201700: 53 push %rbx
201701: 48 81 ec 58 01 00 00 sub $0x158,%rsp
201708: 48 89 f3 mov %rsi,%rbx
20170b: 49 89 fe mov %rdi,%r14
20170e: 48 8d 7c 24 20 lea 0x20(%rsp),%rdi
201713: ba 30 01 00 00 mov $0x130,%edx
201718: 31 f6 xor %esi,%esi
20171a: e8 01 ff ff ff callq 201620 <memset>
20171f: 4c 89 35 ca 2d 00 00 mov %r14,0x2dca(%rip) # 2044f0 <__environ>
201726: 49 83 3e 00 cmpq $0x0,(%r14)
20172a: 4d 8d 76 08 lea 0x8(%r14),%r14
20172e: 75 f6 jne 201726 <__init_libc+0x2c>
201730: 4c 89 35 f9 31 00 00 mov %r14,0x31f9(%rip) # 204930 <__libc+0x8>
201737: 49 8b 06 mov (%r14),%rax
20173a: 48 85 c0 test %rax,%rax
20173d: 74 33 je 201772 <__init_libc+0x78>
20173f: 49 83 c6 10 add $0x10,%r14
201743: 48 83 f8 25 cmp $0x25,%rax
201747: 77 09 ja 201752 <__init_libc+0x58>
201749: 49 8b 4e f8 mov -0x8(%r14),%rcx
20174d: 48 89 4c c4 20 mov %rcx,0x20(%rsp,%rax,8)
201752: 49 8b 06 mov (%r14),%rax
201755: 49 83 c6 10 add $0x10,%r14
201759: 48 85 c0 test %rax,%rax
20175c: 75 e5 jne 201743 <__init_libc+0x49>
20175e: 48 8b 84 24 20 01 00 mov 0x120(%rsp),%rax
201765: 00
201766: 48 85 c0 test %rax,%rax
201769: 74 07 je 201772 <__init_libc+0x78>
20176b: 48 89 05 86 2d 00 00 mov %rax,0x2d86(%rip) # 2044f8 <__sysinfo>
201772: 48 8b 44 24 50 mov 0x50(%rsp),%rax
201777: 48 89 05 da 31 00 00 mov %rax,0x31da(%rip) # 204958 <__libc+0x30>
20177e: 48 85 db test %rbx,%rbx
201781: 75 08 jne 20178b <__init_libc+0x91>
201783: 48 8b 9c 24 18 01 00 mov 0x118(%rsp),%rbx
20178a: 00
20178b: 48 85 db test %rbx,%rbx
20178e: b8 1a 02 20 00 mov $0x20021a,%eax
201793: 48 0f 45 c3 cmovne %rbx,%rax
201797: 48 89 05 6a 2d 00 00 mov %rax,0x2d6a(%rip) # 204508 <__progname_full>
20179e: 48 89 05 5b 2d 00 00 mov %rax,0x2d5b(%rip) # 204500 <__progname>
2017a5: 48 ff c0 inc %rax
2017a8: 0f b6 48 ff movzbl -0x1(%rax),%ecx
2017ac: 83 f9 2f cmp $0x2f,%ecx
2017af: 74 ed je 20179e <__init_libc+0xa4>
2017b1: 85 c9 test %ecx,%ecx
2017b3: 75 f0 jne 2017a5 <__init_libc+0xab>
2017b5: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx
2017ba: 48 85 c9 test %rcx,%rcx
2017bd: 0f 84 bc 00 00 00 je 20187f <__init_libc+0x185>
2017c3: 48 8b 74 24 38 mov 0x38(%rsp),%rsi
2017c8: 44 8b 0d 81 2b 00 00 mov 0x2b81(%rip),%r9d # 204350 <__default_stacksize>
2017cf: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi
2017d4: 31 c0 xor %eax,%eax
2017d6: 41 b8 00 00 80 00 mov $0x800000,%r8d
2017dc: 4c 8b 15 75 1a 00 00 mov 0x1a75(%rip),%r10 # 203258 <_fini+0x1008>
2017e3: 31 d2 xor %edx,%edx
2017e5: 49 89 f3 mov %rsi,%r11
2017e8: 41 8b 1b mov (%r11),%ebx
2017eb: 83 fb 06 cmp $0x6,%ebx
2017ee: 75 05 jne 2017f5 <__init_libc+0xfb>
2017f0: 48 89 f0 mov %rsi,%rax
2017f3: eb 0d jmp 201802 <__init_libc+0x108>
2017f5: 83 fb 02 cmp $0x2,%ebx
2017f8: 75 16 jne 201810 <__init_libc+0x116>
2017fa: 4d 85 d2 test %r10,%r10
2017fd: 74 11 je 201810 <__init_libc+0x116>
2017ff: 4c 89 d0 mov %r10,%rax
201802: 49 2b 43 10 sub 0x10(%r11),%rax
201806: 49 01 fb add %rdi,%r11
201809: 48 ff c9 dec %rcx
20180c: 75 da jne 2017e8 <__init_libc+0xee>
20180e: eb 2d jmp 20183d <__init_libc+0x143>
201810: 83 fb 07 cmp $0x7,%ebx
201813: 49 0f 44 d3 cmove %r11,%rdx
201817: 81 fb 51 e5 74 64 cmp $0x6474e551,%ebx
20181d: 75 e7 jne 201806 <__init_libc+0x10c>
20181f: 49 8b 5b 28 mov 0x28(%r11),%rbx
201823: 45 89 ce mov %r9d,%r14d
201826: 4c 39 f3 cmp %r14,%rbx
201829: 76 db jbe 201806 <__init_libc+0x10c>
20182b: 4c 39 c3 cmp %r8,%rbx
20182e: 49 0f 43 d8 cmovae %r8,%rbx
201832: 89 1d 18 2b 00 00 mov %ebx,0x2b18(%rip) # 204350 <__default_stacksize>
201838: 41 89 d9 mov %ebx,%r9d
20183b: eb c9 jmp 201806 <__init_libc+0x10c>
20183d: 48 85 d2 test %rdx,%rdx
201840: 74 3d je 20187f <__init_libc+0x185>
201842: 48 03 42 10 add 0x10(%rdx),%rax
201846: 48 89 05 23 2b 00 00 mov %rax,0x2b23(%rip) # 204370 <main_tls+0x8>
20184d: 48 8b 4a 20 mov 0x20(%rdx),%rcx
201851: 48 89 0d 20 2b 00 00 mov %rcx,0x2b20(%rip) # 204378 <main_tls+0x10>
201858: 48 8b 4a 28 mov 0x28(%rdx),%rcx
20185c: 48 8b 5a 30 mov 0x30(%rdx),%rbx
201860: 48 89 1d 21 2b 00 00 mov %rbx,0x2b21(%rip) # 204388 <main_tls+0x20>
201867: 48 c7 05 de 30 00 00 movq $0x1,0x30de(%rip) # 204950 <__libc+0x28>
20186e: 01 00 00 00
201872: 48 c7 05 bb 30 00 00 movq $0x204368,0x30bb(%rip) # 204938 <__libc+0x10>
201879: 68 43 20 00
20187d: eb 15 jmp 201894 <__init_libc+0x19a>
20187f: 48 8b 1d 02 2b 00 00 mov 0x2b02(%rip),%rbx # 204388 <main_tls+0x20>
201886: 48 8b 0d f3 2a 00 00 mov 0x2af3(%rip),%rcx # 204380 <main_tls+0x18>
20188d: 48 8b 05 dc 2a 00 00 mov 0x2adc(%rip),%rax # 204370 <main_tls+0x8>
201894: 48 01 c8 add %rcx,%rax
201897: 48 f7 d8 neg %rax
20189a: 48 8d 53 ff lea -0x1(%rbx),%rdx
20189e: 48 21 c2 and %rax,%rdx
2018a1: 48 01 ca add %rcx,%rdx
2018a4: 48 89 15 d5 2a 00 00 mov %rdx,0x2ad5(%rip) # 204380 <main_tls+0x18>
2018ab: 48 89 15 de 2a 00 00 mov %rdx,0x2ade(%rip) # 204390 <main_tls+0x28>
2018b2: 48 83 fb 07 cmp $0x7,%rbx
2018b6: 77 10 ja 2018c8 <__init_libc+0x1ce>
2018b8: 48 c7 05 c5 2a 00 00 movq $0x8,0x2ac5(%rip) # 204388 <main_tls+0x20>
2018bf: 08 00 00 00
2018c3: bb 08 00 00 00 mov $0x8,%ebx
2018c8: 48 89 1d 79 30 00 00 mov %rbx,0x3079(%rip) # 204948 <__libc+0x20>
2018cf: 48 8d 34 1a lea (%rdx,%rbx,1),%rsi
2018d3: 48 81 c6 df 00 00 00 add $0xdf,%rsi
2018da: 48 83 e6 f8 and $0xfffffffffffffff8,%rsi
2018de: 48 89 35 5b 30 00 00 mov %rsi,0x305b(%rip) # 204940 <__libc+0x18>
2018e5: 41 be a0 43 20 00 mov $0x2043a0,%r14d
2018eb: 48 81 fe 51 01 00 00 cmp $0x151,%rsi
2018f2: 72 2f jb 201923 <__init_libc+0x229>
2018f4: b8 09 00 00 00 mov $0x9,%eax
2018f9: ba 03 00 00 00 mov $0x3,%edx
2018fe: 41 ba 22 00 00 00 mov $0x22,%r10d
201904: 31 ff xor %edi,%edi
201906: 49 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%r8
20190d: 45 31 c9 xor %r9d,%r9d
201910: 0f 05 syscall
201912: 49 89 c6 mov %rax,%r14
201915: 48 8b 35 24 30 00 00 mov 0x3024(%rip),%rsi # 204940 <__libc+0x18>
20191c: 48 8b 1d 25 30 00 00 mov 0x3025(%rip),%rbx # 204948 <__libc+0x20>
201923: 4a 8d 04 36 lea (%rsi,%r14,1),%rax
201927: 48 05 38 ff ff ff add $0xffffffffffffff38,%rax
20192d: 48 f7 db neg %rbx
201930: 48 21 c3 and %rax,%rbx
201933: 4c 8b 3d fe 2f 00 00 mov 0x2ffe(%rip),%r15 # 204938 <__libc+0x10>
20193a: 4d 85 ff test %r15,%r15
20193d: 74 2f je 20196e <__init_libc+0x274>
20193f: 4d 8d 66 08 lea 0x8(%r14),%r12
201943: 48 89 d8 mov %rbx,%rax
201946: 49 2b 47 28 sub 0x28(%r15),%rax
20194a: 49 89 04 24 mov %rax,(%r12)
20194e: 48 89 df mov %rbx,%rdi
201951: 49 2b 7f 28 sub 0x28(%r15),%rdi
201955: 49 8b 77 08 mov 0x8(%r15),%rsi
201959: 49 8b 57 10 mov 0x10(%r15),%rdx
20195d: e8 7a fc ff ff callq 2015dc <memcpy>
201962: 4d 8b 3f mov (%r15),%r15
201965: 49 83 c4 08 add $0x8,%r12
201969: 4d 85 ff test %r15,%r15
20196c: 75 d5 jne 201943 <__init_libc+0x249>
20196e: 48 8b 05 db 2f 00 00 mov 0x2fdb(%rip),%rax # 204950 <__libc+0x28>
201975: 49 89 06 mov %rax,(%r14)
201978: 4c 89 73 08 mov %r14,0x8(%rbx)
20197c: 48 89 1b mov %rbx,(%rbx)
20197f: 48 89 df mov %rbx,%rdi
201982: e8 89 fc ff ff callq 201610 <__set_thread_area>
201987: 85 c0 test %eax,%eax
201989: 78 4d js 2019d8 <__init_libc+0x2de>
20198b: 75 07 jne 201994 <__init_libc+0x29a>
20198d: c6 05 94 2f 00 00 01 movb $0x1,0x2f94(%rip) # 204928 <__libc>
201994: c7 43 38 02 00 00 00 movl $0x2,0x38(%rbx)
20199b: b8 da 00 00 00 mov $0xda,%eax
2019a0: bf 60 43 20 00 mov $0x204360,%edi
2019a5: 0f 05 syscall
2019a7: 89 43 30 mov %eax,0x30(%rbx)
2019aa: 48 c7 83 a8 00 00 00 movq $0x204960,0xa8(%rbx)
2019b1: 60 49 20 00
2019b5: 48 8d 83 88 00 00 00 lea 0x88(%rbx),%rax
2019bc: 48 89 83 88 00 00 00 mov %rax,0x88(%rbx)
2019c3: 48 8b 05 2e 2b 00 00 mov 0x2b2e(%rip),%rax # 2044f8 <__sysinfo>
2019ca: 48 89 43 20 mov %rax,0x20(%rbx)
2019ce: 48 89 5b 10 mov %rbx,0x10(%rbx)
2019d2: 48 89 5b 18 mov %rbx,0x18(%rbx)
2019d6: eb 01 jmp 2019d9 <__init_libc+0x2df>
2019d8: f4 hlt
2019d9: 48 8b b4 24 e8 00 00 mov 0xe8(%rsp),%rsi
2019e0: 00
2019e1: 48 85 f6 test %rsi,%rsi
2019e4: 74 11 je 2019f7 <__init_libc+0x2fd>
2019e6: bf 90 49 20 00 mov $0x204990,%edi
2019eb: ba 08 00 00 00 mov $0x8,%edx
2019f0: e8 e7 fb ff ff callq 2015dc <memcpy>
2019f5: eb 13 jmp 201a0a <__init_libc+0x310>
2019f7: b8 90 49 20 00 mov $0x204990,%eax
2019fc: 48 69 c0 6d 4e c6 41 imul $0x41c64e6d,%rax,%rax
201a03: 48 89 05 86 2f 00 00 mov %rax,0x2f86(%rip) # 204990 <__stack_chk_guard>
201a0a: c6 05 80 2f 00 00 00 movb $0x0,0x2f80(%rip) # 204991 <__stack_chk_guard+0x1>
201a11: 48 8b 05 78 2f 00 00 mov 0x2f78(%rip),%rax # 204990 <__stack_chk_guard>
201a18: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx
201a1f: 00 00
201a21: 48 89 41 28 mov %rax,0x28(%rcx)
201a25: 48 8b 44 24 78 mov 0x78(%rsp),%rax
201a2a: 48 3b 84 24 80 00 00 cmp 0x80(%rsp),%rax
201a31: 00
201a32: 75 1d jne 201a51 <__init_libc+0x357>
201a34: 48 8b 84 24 88 00 00 mov 0x88(%rsp),%rax
201a3b: 00
201a3c: 48 3b 84 24 90 00 00 cmp 0x90(%rsp),%rax
201a43: 00
201a44: 75 0b jne 201a51 <__init_libc+0x357>
201a46: 48 83 bc 24 d8 00 00 cmpq $0x0,0xd8(%rsp)
201a4d: 00 00
201a4f: 74 5b je 201aac <__init_libc+0x3b2>
201a51: 0f 28 05 c8 e7 ff ff movaps -0x1838(%rip),%xmm0 # 200220 <_start-0x1380>
201a58: 48 89 e7 mov %rsp,%rdi
201a5b: 0f 29 07 movaps %xmm0,(%rdi)
201a5e: 48 c7 47 10 02 00 00 movq $0x2,0x10(%rdi)
201a65: 00
201a66: b8 07 00 00 00 mov $0x7,%eax
201a6b: be 03 00 00 00 mov $0x3,%esi
201a70: 31 d2 xor %edx,%edx
201a72: 0f 05 syscall
201a74: 85 c0 test %eax,%eax
201a76: 79 01 jns 201a79 <__init_libc+0x37f>
201a78: f4 hlt
201a79: ba 06 00 00 00 mov $0x6,%edx
201a7e: bf 00 02 20 00 mov $0x200200,%edi
201a83: be 02 80 00 00 mov $0x8002,%esi
201a88: f6 04 14 20 testb $0x20,(%rsp,%rdx,1)
201a8c: 74 0d je 201a9b <__init_libc+0x3a1>
201a8e: b8 02 00 00 00 mov $0x2,%eax
201a93: 0f 05 syscall
201a95: 48 85 c0 test %rax,%rax
201a98: 79 01 jns 201a9b <__init_libc+0x3a1>
201a9a: f4 hlt
201a9b: 48 83 c2 08 add $0x8,%rdx
201a9f: 48 83 fa 1e cmp $0x1e,%rdx
201aa3: 75 e3 jne 201a88 <__init_libc+0x38e>
201aa5: c6 05 7e 2e 00 00 01 movb $0x1,0x2e7e(%rip) # 20492a <__libc+0x2>
201aac: 48 81 c4 58 01 00 00 add $0x158,%rsp
201ab3: 5b pop %rbx
201ab4: 41 5c pop %r12
201ab6: 41 5e pop %r14
201ab8: 41 5f pop %r15
201aba: c3 retq
0000000000201abb <__libc_start_main>:
201abb: 41 57 push %r15
201abd: 41 56 push %r14
201abf: 53 push %rbx
201ac0: 48 89 d3 mov %rdx,%rbx
201ac3: 49 89 fe mov %rdi,%r14
201ac6: 4c 63 fe movslq %esi,%r15
201ac9: 4a 8d 3c fa lea (%rdx,%r15,8),%rdi
201acd: 48 83 c7 08 add $0x8,%rdi
201ad1: 48 8b 32 mov (%rdx),%rsi
201ad4: e8 21 fc ff ff callq 2016fa <__init_libc>
201ad9: b8 ee 1a 20 00 mov $0x201aee,%eax
201ade: 4c 89 f7 mov %r14,%rdi
201ae1: 44 89 fe mov %r15d,%esi
201ae4: 48 89 da mov %rbx,%rdx
201ae7: 5b pop %rbx
201ae8: 41 5e pop %r14
201aea: 41 5f pop %r15
201aec: ff e0 jmpq *%rax
0000000000201aee <libc_start_main_stage2>:
201aee: 41 57 push %r15
201af0: 41 56 push %r14
201af2: 41 54 push %r12
201af4: 53 push %rbx
201af5: 50 push %rax
201af6: 48 89 d3 mov %rdx,%rbx
201af9: 49 89 fe mov %rdi,%r14
201afc: 4c 63 fe movslq %esi,%r15
201aff: 4e 8d 24 fa lea (%rdx,%r15,8),%r12
201b03: 49 83 c4 08 add $0x8,%r12
201b07: e8 13 00 00 00 callq 201b1f <libc_start_init>
201b0c: 44 89 ff mov %r15d,%edi
201b0f: 48 89 de mov %rbx,%rsi
201b12: 4c 89 e2 mov %r12,%rdx
201b15: 41 ff d6 callq *%r14
201b18: 89 c7 mov %eax,%edi
201b1a: e8 33 00 00 00 callq 201b52 <exit>
0000000000201b1f <libc_start_init>:
201b1f: 41 56 push %r14
201b21: 53 push %rbx
201b22: 50 push %rax
201b23: e8 25 07 00 00 callq 20224d <_init>
201b28: 48 8d 1d 71 fa ff ff lea -0x58f(%rip),%rbx # 2015a0 <_start>
201b2f: 48 81 fb a0 15 20 00 cmp $0x2015a0,%rbx
201b36: 73 12 jae 201b4a <libc_start_init+0x2b>
201b38: 4c 8d 35 61 fa ff ff lea -0x59f(%rip),%r14 # 2015a0 <_start>
201b3f: ff 13 callq *(%rbx)
201b41: 48 83 c3 08 add $0x8,%rbx
201b45: 4c 39 f3 cmp %r14,%rbx
201b48: 72 f5 jb 201b3f <libc_start_init+0x20>
201b4a: 48 83 c4 08 add $0x8,%rsp
201b4e: 5b pop %rbx
201b4f: 41 5e pop %r14
201b51: c3 retq
0000000000201b52 <exit>:
201b52: 53 push %rbx
201b53: 89 fb mov %edi,%ebx
201b55: e8 0c 00 00 00 callq 201b66 <libc_exit_fini>
201b5a: e8 4c 04 00 00 callq 201fab <__stdio_exit>
201b5f: 89 df mov %ebx,%edi
201b61: e8 3a 00 00 00 callq 201ba0 <_Exit>
0000000000201b66 <libc_exit_fini>:
201b66: 41 56 push %r14
201b68: 53 push %rbx
201b69: 50 push %rax
201b6a: 48 8d 0d 2f fa ff ff lea -0x5d1(%rip),%rcx # 2015a0 <_start>
201b71: 48 81 f9 a0 15 20 00 cmp $0x2015a0,%rcx
201b78: 76 18 jbe 201b92 <libc_exit_fini+0x2c>
201b7a: 48 8d 1d 1f fa ff ff lea -0x5e1(%rip),%rbx # 2015a0 <_start>
201b81: 4c 8d 71 f8 lea -0x8(%rcx),%r14
201b85: 31 c0 xor %eax,%eax
201b87: ff 51 f8 callq *-0x8(%rcx)
201b8a: 4c 89 f1 mov %r14,%rcx
201b8d: 49 39 de cmp %rbx,%r14
201b90: 77 ef ja 201b81 <libc_exit_fini+0x1b>
201b92: 31 c0 xor %eax,%eax
201b94: 48 83 c4 08 add $0x8,%rsp
201b98: 5b pop %rbx
201b99: 41 5e pop %r14
201b9b: e9 b0 06 00 00 jmpq 202250 <_fini>
0000000000201ba0 <_Exit>:
201ba0: 48 63 ff movslq %edi,%rdi
201ba3: b8 e7 00 00 00 mov $0xe7,%eax
201ba8: 0f 05 syscall
201baa: b8 3c 00 00 00 mov $0x3c,%eax
201baf: 0f 05 syscall
201bb1: eb f7 jmp 201baa <_Exit+0xa>
0000000000201bb3 <puts>: (3)
201bb3: 55 push %rbp
201bb4: 41 57 push %r15
201bb6: 41 56 push %r14
201bb8: 53 push %rbx
201bb9: 50 push %rax
201bba: 83 3d 2b 27 00 00 00 cmpl $0x0,0x272b(%rip) # 2042ec <__stdout_FILE+0x8c>
201bc1: 78 0e js 201bd1 <puts+0x1e>
201bc3: bf 60 42 20 00 mov $0x204260,%edi
201bc8: e8 c0 01 00 00 callq 201d8d <__lockfile>
201bcd: 89 c3 mov %eax,%ebx
201bcf: eb 02 jmp 201bd3 <puts+0x20>
201bd1: 31 db xor %ebx,%ebx
201bd3: b8 11 02 20 00 mov $0x200211,%eax
201bd8: a8 07 test $0x7,%al
201bda: 41 be 12 02 20 00 mov $0x200212,%r14d
201be0: 4c 0f 44 f0 cmove %rax,%r14
201be4: b8 0b 02 20 00 mov $0x20020b,%eax
201be9: a8 07 test $0x7,%al
201beb: 0f 94 c2 sete %dl
201bee: b9 0a 02 20 00 mov $0x20020a,%ecx
201bf3: f6 c1 07 test $0x7,%cl
201bf6: 48 0f 44 c1 cmove %rcx,%rax
201bfa: 40 0f 94 c6 sete %sil
201bfe: 40 08 d6 or %dl,%sil
201c01: ba 0c 02 20 00 mov $0x20020c,%edx
201c06: 48 0f 44 c2 cmove %rdx,%rax
201c0a: f6 c2 07 test $0x7,%dl
201c0d: 0f 94 c2 sete %dl
201c10: 40 08 f2 or %sil,%dl
201c13: be 0d 02 20 00 mov $0x20020d,%esi
201c18: 48 0f 44 c6 cmove %rsi,%rax
201c1c: 40 f6 c6 07 test $0x7,%sil
201c20: 40 0f 94 c6 sete %sil
201c24: 40 08 d6 or %dl,%sil
201c27: ba 0e 02 20 00 mov $0x20020e,%edx
201c2c: 48 0f 44 c2 cmove %rdx,%rax
201c30: f6 c2 07 test $0x7,%dl
201c33: 0f 94 c2 sete %dl
201c36: 40 08 f2 or %sil,%dl
201c39: be 0f 02 20 00 mov $0x20020f,%esi
201c3e: 48 0f 44 c6 cmove %rsi,%rax
201c42: 40 f6 c6 07 test $0x7,%sil
201c46: 40 0f 94 c6 sete %sil
201c4a: 40 08 d6 or %dl,%sil
201c4d: ba 10 02 20 00 mov $0x200210,%edx
201c52: 48 0f 44 c2 cmove %rdx,%rax
201c56: f6 c2 07 test $0x7,%dl
201c59: 4c 0f 44 f0 cmove %rax,%r14
201c5d: 40 84 f6 test %sil,%sil
201c60: 4c 0f 45 f0 cmovne %rax,%r14
201c64: 49 8d 46 f8 lea -0x8(%r14),%rax
201c68: 49 29 ce sub %rcx,%r14
201c6b: 49 83 c6 f7 add $0xfffffffffffffff7,%r14
201c6f: 48 b9 80 80 80 80 80 movabs $0x8080808080808080,%rcx
201c76: 80 80 80
201c79: 48 ba ff fe fe fe fe movabs $0xfefefefefefefeff,%rdx
201c80: fe fe fe
201c83: 48 8b 70 08 mov 0x8(%rax),%rsi
201c87: 48 83 c0 08 add $0x8,%rax
201c8b: 48 89 f7 mov %rsi,%rdi
201c8e: 48 f7 d7 not %rdi
201c91: 48 21 cf and %rcx,%rdi
201c94: 48 01 d6 add %rdx,%rsi
201c97: 49 83 c6 08 add $0x8,%r14
201c9b: 48 85 f7 test %rsi,%rdi
201c9e: 74 e3 je 201c83 <puts+0xd0>
201ca0: 49 ff c6 inc %r14
201ca3: 80 38 00 cmpb $0x0,(%rax)
201ca6: 48 8d 40 01 lea 0x1(%rax),%rax
201caa: 75 f4 jne 201ca0 <puts+0xed>
201cac: 83 3d 39 26 00 00 00 cmpl $0x0,0x2639(%rip) # 2042ec <__stdout_FILE+0x8c>
201cb3: 78 22 js 201cd7 <puts+0x124>
201cb5: bf 60 42 20 00 mov $0x204260,%edi
201cba: e8 ce 00 00 00 callq 201d8d <__lockfile>
201cbf: 89 c5 mov %eax,%ebp
201cc1: 4c 89 f7 mov %r14,%rdi
201cc4: e8 94 01 00 00 callq 201e5d <__fwritex>
201cc9: 49 89 c7 mov %rax,%r15
201ccc: 85 ed test %ebp,%ebp
201cce: 74 12 je 201ce2 <puts+0x12f>
201cd0: e8 51 01 00 00 callq 201e26 <__unlockfile>
201cd5: eb 0b jmp 201ce2 <puts+0x12f>
201cd7: 4c 89 f7 mov %r14,%rdi
201cda: e8 7e 01 00 00 callq 201e5d <__fwritex>
201cdf: 49 89 c7 mov %rax,%r15
201ce2: 4d 39 f7 cmp %r14,%r15
201ce5: 0f 85 88 00 00 00 jne 201d73 <puts+0x1c0>
201ceb: 83 3d fe 25 00 00 0a cmpl $0xa,0x25fe(%rip) # 2042f0 <__stdout_FILE+0x90>
201cf2: 75 09 jne 201cfd <puts+0x14a>
201cf4: 48 8b 05 85 25 00 00 mov 0x2585(%rip),%rax # 204280 <__stdout_FILE+0x20>
201cfb: eb 20 jmp 201d1d <puts+0x16a>
201cfd: 48 8b 05 84 25 00 00 mov 0x2584(%rip),%rax # 204288 <__stdout_FILE+0x28>
201d04: 48 3b 05 75 25 00 00 cmp 0x2575(%rip),%rax # 204280 <__stdout_FILE+0x20>
201d0b: 74 10 je 201d1d <puts+0x16a>
201d0d: 48 8d 48 01 lea 0x1(%rax),%rcx
201d11: 48 89 0d 70 25 00 00 mov %rcx,0x2570(%rip) # 204288 <__stdout_FILE+0x28>
201d18: c6 00 0a movb $0xa,(%rax)
201d1b: eb 56 jmp 201d73 <puts+0x1c0>
201d1d: c6 44 24 07 0a movb $0xa,0x7(%rsp)
201d22: 48 85 c0 test %rax,%rax
201d25: 74 25 je 201d4c <puts+0x199>
201d27: 48 8b 0d 5a 25 00 00 mov 0x255a(%rip),%rcx # 204288 <__stdout_FILE+0x28>
201d2e: 48 39 c1 cmp %rax,%rcx
201d31: 74 2b je 201d5e <puts+0x1ab>
201d33: 83 3d b6 25 00 00 0a cmpl $0xa,0x25b6(%rip) # 2042f0 <__stdout_FILE+0x90>
201d3a: 74 22 je 201d5e <puts+0x1ab>
201d3c: 48 8d 41 01 lea 0x1(%rcx),%rax
201d40: 48 89 05 41 25 00 00 mov %rax,0x2541(%rip) # 204288 <__stdout_FILE+0x28>
201d47: c6 01 0a movb $0xa,(%rcx)
201d4a: eb 27 jmp 201d73 <puts+0x1c0>
201d4c: e8 00 02 00 00 callq 201f51 <__towrite>
201d51: 85 c0 test %eax,%eax
201d53: 75 1e jne 201d73 <puts+0x1c0>
201d55: 48 8b 05 24 25 00 00 mov 0x2524(%rip),%rax # 204280 <__stdout_FILE+0x20>
201d5c: eb c9 jmp 201d27 <puts+0x174>
201d5e: 48 8d 74 24 07 lea 0x7(%rsp),%rsi
201d63: bf 60 42 20 00 mov $0x204260,%edi
201d68: ba 01 00 00 00 mov $0x1,%edx
201d6d: ff 15 35 25 00 00 callq *0x2535(%rip) # 2042a8 <__stdout_FILE+0x48>
201d73: 48 83 c4 08 add $0x8,%rsp
201d77: 85 db test %ebx,%ebx
201d79: 74 0b je 201d86 <puts+0x1d3>
201d7b: 5b pop %rbx
201d7c: 41 5e pop %r14
201d7e: 41 5f pop %r15
201d80: 5d pop %rbp
201d81: e9 a0 00 00 00 jmpq 201e26 <__unlockfile>
201d86: 5b pop %rbx
201d87: 41 5e pop %r14
201d89: 41 5f pop %r15
201d8b: 5d pop %rbp
201d8c: c3 retq
0000000000201d8d <__lockfile>:
201d8d: b8 ff ff ff bf mov $0xbfffffff,%eax
201d92: 23 87 8c 00 00 00 and 0x8c(%rdi),%eax
201d98: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx
201d9f: 00 00
201da1: 44 8b 49 30 mov 0x30(%rcx),%r9d
201da5: 45 31 c0 xor %r8d,%r8d
201da8: 44 39 c8 cmp %r9d,%eax
201dab: 74 75 je 201e22 <__lockfile+0x95>
201dad: 48 81 c7 8c 00 00 00 add $0x8c,%rdi
201db4: 31 c0 xor %eax,%eax
201db6: f0 44 0f b1 0f lock cmpxchg %r9d,(%rdi)
201dbb: 41 b8 01 00 00 00 mov $0x1,%r8d
201dc1: 85 c0 test %eax,%eax
201dc3: 74 5d je 201e22 <__lockfile+0x95>
201dc5: 41 81 c9 00 00 00 40 or $0x40000000,%r9d
201dcc: 31 c0 xor %eax,%eax
201dce: f0 44 0f b1 0f lock cmpxchg %r9d,(%rdi)
201dd3: 85 c0 test %eax,%eax
201dd5: 74 4b je 201e22 <__lockfile+0x95>
201dd7: 89 c1 mov %eax,%ecx
201dd9: 89 ca mov %ecx,%edx
201ddb: 81 ca 00 00 00 40 or $0x40000000,%edx
201de1: 0f ba e1 1e bt $0x1e,%ecx
201de5: 72 0a jb 201df1 <__lockfile+0x64>
201de7: 89 c8 mov %ecx,%eax
201de9: f0 0f b1 17 lock cmpxchg %edx,(%rdi)
201ded: 39 c8 cmp %ecx,%eax
201def: 75 24 jne 201e15 <__lockfile+0x88>
201df1: 48 63 d2 movslq %edx,%rdx
201df4: b8 ca 00 00 00 mov $0xca,%eax
201df9: be 80 00 00 00 mov $0x80,%esi
201dfe: 45 31 d2 xor %r10d,%r10d
201e01: 0f 05 syscall
201e03: 48 83 f8 da cmp $0xffffffffffffffda,%rax
201e07: 75 0c jne 201e15 <__lockfile+0x88>
201e09: b8 ca 00 00 00 mov $0xca,%eax
201e0e: 31 f6 xor %esi,%esi
201e10: 45 31 d2 xor %r10d,%r10d
201e13: 0f 05 syscall
201e15: 31 c0 xor %eax,%eax
201e17: f0 44 0f b1 0f lock cmpxchg %r9d,(%rdi)
201e1c: 89 c1 mov %eax,%ecx
201e1e: 85 c0 test %eax,%eax
201e20: 75 b7 jne 201dd9 <__lockfile+0x4c>
201e22: 44 89 c0 mov %r8d,%eax
201e25: c3 retq
0000000000201e26 <__unlockfile>:
201e26: 31 c0 xor %eax,%eax
201e28: 87 05 be 24 00 00 xchg %eax,0x24be(%rip) # 2042ec <__stdout_FILE+0x8c>
201e2e: 0f ba e0 1e bt $0x1e,%eax
201e32: 73 28 jae 201e5c <__unlockfile+0x36>
201e34: b8 ca 00 00 00 mov $0xca,%eax
201e39: bf ec 42 20 00 mov $0x2042ec,%edi
201e3e: be 81 00 00 00 mov $0x81,%esi
201e43: ba 01 00 00 00 mov $0x1,%edx
201e48: 0f 05 syscall
201e4a: 48 83 f8 da cmp $0xffffffffffffffda,%rax
201e4e: 75 0c jne 201e5c <__unlockfile+0x36>
201e50: b8 ca 00 00 00 mov $0xca,%eax
201e55: be 01 00 00 00 mov $0x1,%esi
201e5a: 0f 05 syscall
201e5c: c3 retq
0000000000201e5d <__fwritex>:
201e5d: 41 57 push %r15
201e5f: 41 56 push %r14
201e61: 41 54 push %r12
201e63: 53 push %rbx
201e64: 50 push %rax
201e65: 48 89 fb mov %rdi,%rbx
201e68: 48 8b 05 11 24 00 00 mov 0x2411(%rip),%rax # 204280 <__stdout_FILE+0x20>
201e6f: 48 85 c0 test %rax,%rax
201e72: 0f 84 9c 00 00 00 je 201f14 <__fwritex+0xb7>
201e78: 48 8b 3d 09 24 00 00 mov 0x2409(%rip),%rdi # 204288 <__stdout_FILE+0x28>
201e7f: 48 29 f8 sub %rdi,%rax
201e82: 48 39 d8 cmp %rbx,%rax
201e85: 73 21 jae 201ea8 <__fwritex+0x4b>
201e87: 48 8b 05 1a 24 00 00 mov 0x241a(%rip),%rax # 2042a8 <__stdout_FILE+0x48>
201e8e: bf 60 42 20 00 mov $0x204260,%edi
201e93: be 0a 02 20 00 mov $0x20020a,%esi
201e98: 48 89 da mov %rbx,%rdx
201e9b: 48 83 c4 08 add $0x8,%rsp
201e9f: 5b pop %rbx
201ea0: 41 5c pop %r12
201ea2: 41 5e pop %r14
201ea4: 41 5f pop %r15
201ea6: ff e0 jmpq *%rax
201ea8: be 0a 02 20 00 mov $0x20020a,%esi
201ead: 83 3d 3c 24 00 00 00 cmpl $0x0,0x243c(%rip) # 2042f0 <__stdout_FILE+0x90>
201eb4: 78 6b js 201f21 <__fwritex+0xc4>
201eb6: 49 c7 c4 ff ff ff ff mov $0xffffffffffffffff,%r12
201ebd: 41 bf 0b 02 20 00 mov $0x20020b,%r15d
201ec3: 45 31 f6 xor %r14d,%r14d
201ec6: 31 c0 xor %eax,%eax
201ec8: 48 89 d9 mov %rbx,%rcx
201ecb: 48 01 c1 add %rax,%rcx
201ece: 74 54 je 201f24 <__fwritex+0xc7>
201ed0: 49 ff c4 inc %r12
201ed3: 49 ff cf dec %r15
201ed6: 80 bc 03 09 02 20 00 cmpb $0xa,0x200209(%rbx,%rax,1)
201edd: 0a
201ede: 48 8d 40 ff lea -0x1(%rax),%rax
201ee2: 75 e4 jne 201ec8 <__fwritex+0x6b>
201ee4: 49 89 de mov %rbx,%r14
201ee7: 4d 29 e6 sub %r12,%r14
201eea: bf 60 42 20 00 mov $0x204260,%edi
201eef: be 0a 02 20 00 mov $0x20020a,%esi
201ef4: 4c 89 f2 mov %r14,%rdx
201ef7: ff 15 ab 23 00 00 callq *0x23ab(%rip) # 2042a8 <__stdout_FILE+0x48>
201efd: 4c 39 f0 cmp %r14,%rax
201f00: 72 37 jb 201f39 <__fwritex+0xdc>
201f02: 49 01 df add %rbx,%r15
201f05: 48 8b 3d 7c 23 00 00 mov 0x237c(%rip),%rdi # 204288 <__stdout_FILE+0x28>
201f0c: 4c 89 e3 mov %r12,%rbx
201f0f: 4c 89 fe mov %r15,%rsi
201f12: eb 10 jmp 201f24 <__fwritex+0xc7>
201f14: e8 38 00 00 00 callq 201f51 <__towrite>
201f19: 85 c0 test %eax,%eax
201f1b: 74 28 je 201f45 <__fwritex+0xe8>
201f1d: 31 c0 xor %eax,%eax
201f1f: eb 18 jmp 201f39 <__fwritex+0xdc>
201f21: 45 31 f6 xor %r14d,%r14d
201f24: 48 89 da mov %rbx,%rdx
201f27: e8 b0 f6 ff ff callq 2015dc <memcpy>
201f2c: 48 01 1d 55 23 00 00 add %rbx,0x2355(%rip) # 204288 <__stdout_FILE+0x28>
201f33: 49 01 de add %rbx,%r14
201f36: 4c 89 f0 mov %r14,%rax
201f39: 48 83 c4 08 add $0x8,%rsp
201f3d: 5b pop %rbx
201f3e: 41 5c pop %r12
201f40: 41 5e pop %r14
201f42: 41 5f pop %r15
201f44: c3 retq
201f45: 48 8b 05 34 23 00 00 mov 0x2334(%rip),%rax # 204280 <__stdout_FILE+0x20>
201f4c: e9 27 ff ff ff jmpq 201e78 <__fwritex+0x1b>
0000000000201f51 <__towrite>:
201f51: 8b 05 91 23 00 00 mov 0x2391(%rip),%eax # 2042e8 <__stdout_FILE+0x88>
201f57: 8d 48 ff lea -0x1(%rax),%ecx
201f5a: 09 c1 or %eax,%ecx
201f5c: 89 0d 86 23 00 00 mov %ecx,0x2386(%rip) # 2042e8 <__stdout_FILE+0x88>
201f62: 8b 05 f8 22 00 00 mov 0x22f8(%rip),%eax # 204260 <__stdout_FILE>
201f68: a8 08 test $0x8,%al
201f6a: 75 30 jne 201f9c <__towrite+0x4b>
201f6c: 0f 57 c0 xorps %xmm0,%xmm0
201f6f: 0f 11 05 f2 22 00 00 movups %xmm0,0x22f2(%rip) # 204268 <__stdout_FILE+0x8>
201f76: 48 8b 05 3b 23 00 00 mov 0x233b(%rip),%rax # 2042b8 <__stdout_FILE+0x58>
201f7d: 48 89 05 14 23 00 00 mov %rax,0x2314(%rip) # 204298 <__stdout_FILE+0x38>
201f84: 48 89 05 fd 22 00 00 mov %rax,0x22fd(%rip) # 204288 <__stdout_FILE+0x28>
201f8b: 48 03 05 2e 23 00 00 add 0x232e(%rip),%rax # 2042c0 <__stdout_FILE+0x60>
201f92: 48 89 05 e7 22 00 00 mov %rax,0x22e7(%rip) # 204280 <__stdout_FILE+0x20>
201f99: 31 c0 xor %eax,%eax
201f9b: c3 retq
201f9c: 83 c8 20 or $0x20,%eax
201f9f: 89 05 bb 22 00 00 mov %eax,0x22bb(%rip) # 204260 <__stdout_FILE>
201fa5: b8 ff ff ff ff mov $0xffffffff,%eax
201faa: c3 retq
0000000000201fab <__stdio_exit>:
201fab: 50 push %rax
201fac: 8a 0d 79 29 00 00 mov 0x2979(%rip),%cl # 20492b <__libc+0x3>
201fb2: 84 c9 test %cl,%cl
201fb4: 0f 84 ad 00 00 00 je 202067 <__stdio_exit+0xbc>
201fba: ba 01 00 00 80 mov $0x80000001,%edx
201fbf: 31 c0 xor %eax,%eax
201fc1: f0 0f b1 15 4f 25 00 lock cmpxchg %edx,0x254f(%rip) # 204518 <ofl_lock>
201fc8: 00
201fc9: 84 c9 test %cl,%cl
201fcb: 79 07 jns 201fd4 <__stdio_exit+0x29>
201fcd: c6 05 57 29 00 00 00 movb $0x0,0x2957(%rip) # 20492b <__libc+0x3>
201fd4: 85 c0 test %eax,%eax
201fd6: 0f 84 8b 00 00 00 je 202067 <__stdio_exit+0xbc>
201fdc: ba 0a 00 00 00 mov $0xa,%edx
201fe1: 8d 88 ff ff ff 7f lea 0x7fffffff(%rax),%ecx
201fe7: 85 c0 test %eax,%eax
201fe9: 0f 49 c8 cmovns %eax,%ecx
201fec: 8d b1 01 00 00 80 lea -0x7fffffff(%rcx),%esi
201ff2: 89 c8 mov %ecx,%eax
201ff4: f0 0f b1 35 1c 25 00 lock cmpxchg %esi,0x251c(%rip) # 204518 <ofl_lock>
201ffb: 00
201ffc: 39 c8 cmp %ecx,%eax
201ffe: 74 67 je 202067 <__stdio_exit+0xbc>
202000: ff ca dec %edx
202002: 75 dd jne 201fe1 <__stdio_exit+0x36>
202004: 41 b8 01 00 00 00 mov $0x1,%r8d
20200a: f0 44 0f c1 05 05 25 lock xadd %r8d,0x2505(%rip) # 204518 <ofl_lock>
202011: 00 00
202013: 41 ff c0 inc %r8d
202016: 45 85 c0 test %r8d,%r8d
202019: 79 30 jns 20204b <__stdio_exit+0xa0>
20201b: 49 63 d0 movslq %r8d,%rdx
20201e: b8 ca 00 00 00 mov $0xca,%eax
202023: bf 18 45 20 00 mov $0x204518,%edi
202028: be 80 00 00 00 mov $0x80,%esi
20202d: 45 31 d2 xor %r10d,%r10d
202030: 0f 05 syscall
202032: 48 83 f8 da cmp $0xffffffffffffffda,%rax
202036: 75 0c jne 202044 <__stdio_exit+0x99>
202038: b8 ca 00 00 00 mov $0xca,%eax
20203d: 31 f6 xor %esi,%esi
20203f: 45 31 d2 xor %r10d,%r10d
202042: 0f 05 syscall
202044: 41 81 c0 ff ff ff 7f add $0x7fffffff,%r8d
20204b: 44 89 c1 mov %r8d,%ecx
20204e: 81 c9 00 00 00 80 or $0x80000000,%ecx
202054: 44 89 c0 mov %r8d,%eax
202057: f0 0f b1 0d b9 24 00 lock cmpxchg %ecx,0x24b9(%rip) # 204518 <ofl_lock>
20205e: 00
20205f: 44 39 c0 cmp %r8d,%eax
202062: 41 89 c0 mov %eax,%r8d
202065: 75 af jne 202016 <__stdio_exit+0x6b>
202067: 48 8b 3d a2 24 00 00 mov 0x24a2(%rip),%rdi # 204510 <dummy_file>
20206e: e8 19 00 00 00 callq 20208c <close_file>
202073: 48 8b 3d ce 22 00 00 mov 0x22ce(%rip),%rdi # 204348 <__stdout_used>
20207a: e8 0d 00 00 00 callq 20208c <close_file>
20207f: 48 8b 3d 8a 24 00 00 mov 0x248a(%rip),%rdi # 204510 <dummy_file>
202086: 58 pop %rax
202087: e9 00 00 00 00 jmpq 20208c <close_file>
000000000020208c <close_file>:
20208c: 53 push %rbx
20208d: 48 85 ff test %rdi,%rdi
202090: 74 41 je 2020d3 <close_file+0x47>
202092: 48 89 fb mov %rdi,%rbx
202095: 83 bf 8c 00 00 00 00 cmpl $0x0,0x8c(%rdi)
20209c: 78 08 js 2020a6 <close_file+0x1a>
20209e: 48 89 df mov %rbx,%rdi
2020a1: e8 e7 fc ff ff callq 201d8d <__lockfile>
2020a6: 48 8b 43 28 mov 0x28(%rbx),%rax
2020aa: 48 3b 43 38 cmp 0x38(%rbx),%rax
2020ae: 74 0a je 2020ba <close_file+0x2e>
2020b0: 48 89 df mov %rbx,%rdi
2020b3: 31 f6 xor %esi,%esi
2020b5: 31 d2 xor %edx,%edx
2020b7: ff 53 48 callq *0x48(%rbx)
2020ba: 48 8b 73 08 mov 0x8(%rbx),%rsi
2020be: 48 2b 73 10 sub 0x10(%rbx),%rsi
2020c2: 74 0f je 2020d3 <close_file+0x47>
2020c4: 48 8b 43 50 mov 0x50(%rbx),%rax
2020c8: 48 89 df mov %rbx,%rdi
2020cb: ba 01 00 00 00 mov $0x1,%edx
2020d0: 5b pop %rbx
2020d1: ff e0 jmpq *%rax
2020d3: 5b pop %rbx
2020d4: c3 retq
00000000002020d5 <__stdio_close>:
2020d5: 48 63 7f 78 movslq 0x78(%rdi),%rdi
2020d9: b8 03 00 00 00 mov $0x3,%eax
2020de: 0f 05 syscall
2020e0: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax
2020e6: 72 15 jb 2020fd <__stdio_close+0x28>
2020e8: f7 d8 neg %eax
2020ea: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx
2020f1: 00 00
2020f3: 89 41 34 mov %eax,0x34(%rcx)
2020f6: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax
2020fd: c3 retq
00000000002020fe <__stdout_write>: (4)
2020fe: 50 push %rax
2020ff: 49 89 d0 mov %rdx,%r8
202102: 49 89 f1 mov %rsi,%r9
202105: 49 89 fa mov %rdi,%r10
202108: 48 c7 47 48 48 21 20 movq $0x202148,0x48(%rdi)
20210f: 00
202110: f6 07 40 testb $0x40,(%rdi)
202113: 75 23 jne 202138 <__stdout_write+0x3a>
202115: 49 63 7a 78 movslq 0x78(%r10),%rdi
202119: 48 89 e2 mov %rsp,%rdx
20211c: b8 10 00 00 00 mov $0x10,%eax
202121: be 13 54 00 00 mov $0x5413,%esi
202126: 0f 05 syscall (5)
202128: 48 85 c0 test %rax,%rax
20212b: 74 0b je 202138 <__stdout_write+0x3a>
20212d: 41 c7 82 90 00 00 00 movl $0xffffffff,0x90(%r10)
202134: ff ff ff ff
202138: 4c 89 d7 mov %r10,%rdi
20213b: 4c 89 ce mov %r9,%rsi
20213e: 4c 89 c2 mov %r8,%rdx
202141: e8 02 00 00 00 callq 202148 <__stdio_write>
202146: 59 pop %rcx
202147: c3 retq
0000000000202148 <__stdio_write>:
202148: 41 56 push %r14
20214a: 53 push %rbx
20214b: 49 89 d0 mov %rdx,%r8
20214e: 48 89 f0 mov %rsi,%rax
202151: 49 89 f9 mov %rdi,%r9
202154: 48 8b 4f 38 mov 0x38(%rdi),%rcx
202158: 48 8d 74 24 d8 lea -0x28(%rsp),%rsi
20215d: 48 89 0e mov %rcx,(%rsi)
202160: 48 8b 5f 28 mov 0x28(%rdi),%rbx
202164: 48 29 cb sub %rcx,%rbx
202167: 48 89 5e 08 mov %rbx,0x8(%rsi)
20216b: 48 89 46 10 mov %rax,0x10(%rsi)
20216f: 48 89 56 18 mov %rdx,0x18(%rsi)
202173: 48 01 d3 add %rdx,%rbx
202176: 41 ba 02 00 00 00 mov $0x2,%r10d
20217c: 45 31 f6 xor %r14d,%r14d
20217f: 49 63 79 78 movslq 0x78(%r9),%rdi
202183: 49 63 d2 movslq %r10d,%rdx
202186: b8 14 00 00 00 mov $0x14,%eax
20218b: 0f 05 syscall
20218d: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax
202193: 77 35 ja 2021ca <__stdio_write+0x82>
202195: 48 29 c3 sub %rax,%rbx
202198: 74 63 je 2021fd <__stdio_write+0xb5>
20219a: 48 85 c0 test %rax,%rax
20219d: 78 3f js 2021de <__stdio_write+0x96>
20219f: 48 8b 4e 08 mov 0x8(%rsi),%rcx
2021a3: 31 d2 xor %edx,%edx
2021a5: 48 39 c8 cmp %rcx,%rax
2021a8: 49 0f 46 ce cmovbe %r14,%rcx
2021ac: 0f 97 c2 seta %dl
2021af: 48 89 d7 mov %rdx,%rdi
2021b2: 48 c1 e7 04 shl $0x4,%rdi
2021b6: 48 29 c8 sub %rcx,%rax
2021b9: 48 01 04 3e add %rax,(%rsi,%rdi,1)
2021bd: 48 29 44 3e 08 sub %rax,0x8(%rsi,%rdi,1)
2021c2: 41 29 d2 sub %edx,%r10d
2021c5: 48 01 fe add %rdi,%rsi
2021c8: eb b5 jmp 20217f <__stdio_write+0x37>
2021ca: f7 d8 neg %eax
2021cc: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx
2021d3: 00 00
2021d5: 89 41 34 mov %eax,0x34(%rcx)
2021d8: 48 83 fb ff cmp $0xffffffffffffffff,%rbx
2021dc: 74 1f je 2021fd <__stdio_write+0xb5>
2021de: 0f 57 c0 xorps %xmm0,%xmm0
2021e1: 41 0f 11 41 20 movups %xmm0,0x20(%r9)
2021e6: 49 c7 41 38 00 00 00 movq $0x0,0x38(%r9)
2021ed: 00
2021ee: 41 80 09 20 orb $0x20,(%r9)
2021f2: 41 83 fa 02 cmp $0x2,%r10d
2021f6: 75 1e jne 202216 <__stdio_write+0xce>
2021f8: 45 31 c0 xor %r8d,%r8d
2021fb: eb 1d jmp 20221a <__stdio_write+0xd2>
2021fd: 49 8b 41 58 mov 0x58(%r9),%rax
202201: 49 8b 49 60 mov 0x60(%r9),%rcx
202205: 48 01 c1 add %rax,%rcx
202208: 49 89 49 20 mov %rcx,0x20(%r9)
20220c: 49 89 41 38 mov %rax,0x38(%r9)
202210: 49 89 41 28 mov %rax,0x28(%r9)
202214: eb 04 jmp 20221a <__stdio_write+0xd2>
202216: 4c 2b 46 08 sub 0x8(%rsi),%r8
20221a: 4c 89 c0 mov %r8,%rax
20221d: 5b pop %rbx
20221e: 41 5e pop %r14
202220: c3 retq
0000000000202221 <__stdio_seek>:
202221: 48 63 7f 78 movslq 0x78(%rdi),%rdi
202225: 48 63 d2 movslq %edx,%rdx
202228: b8 08 00 00 00 mov $0x8,%eax
20222d: 0f 05 syscall
20222f: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax
202235: 72 15 jb 20224c <__stdio_seek+0x2b>
202237: f7 d8 neg %eax
202239: 64 48 8b 0c 25 00 00 mov %fs:0x0,%rcx
202240: 00 00
202242: 89 41 34 mov %eax,0x34(%rcx)
202245: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax
20224c: c3 retq
Disassembly of section .init:
000000000020224d <_init>:
20224d: 50 push %rax
20224e: 58 pop %rax
20224f: c3 retq
Disassembly of section .fini:
0000000000202250 <_fini>:
202250: 50 push %rax
202251: 58 pop %rax
202252: c3 retq
| 1 | Funkce main |
| 2 | Volání funkce puts na adrese 201bb3, která bude volat další funkci a tam někde bude syscall |
| 3 | Funkce puts na adrese 201bc8 nějak probublá na funkci __stdout_write |
| 4 | __stdout_write na adrese 202126 volá systémové volání a píše do standarního výstupu |
| 5 | systémové volání write |