1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| bindPrint(): # @bindPrint()
push r14
push rbx
sub rsp, 24
mov qword ptr [rsp + 8], offset print(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
mov dword ptr [rsp + 4], 0
lea r14, [rsp + 8]
lea rbx, [rsp + 4]
.LBB1_1: # =>This Inner Loop Header: Depth=1
mov edx, offset .L.str
mov rdi, r14
mov rsi, rbx
call void std::__invoke_impl<void, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10]>(std::__invoke_other, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10])
mov eax, dword ptr [rsp + 4]
lea ecx, [rax + 1]
mov dword ptr [rsp + 4], ecx
cmp eax, 999
jl .LBB1_1
add rsp, 24
pop rbx
pop r14
ret
void std::__invoke_impl<void, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10]>(std::__invoke_other, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10]): # @void std::__invoke_impl<void, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10]>(std::__invoke_other, void (*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), int&, char const (&) [10])
push rbp
push r15
push r14
push r12
push rbx
sub rsp, 48
mov rbx, rdx
mov r12, qword ptr [rdi]
mov r14d, dword ptr [rsi]
lea r15, [rsp + 32]
mov qword ptr [rsp + 16], r15
mov rdi, rdx
call strlen
mov rbp, rax
mov qword ptr [rsp + 8], rax
mov rax, r15
cmp rbp, 16
jb .LBB4_3
lea rdi, [rsp + 16]
lea rsi, [rsp + 8]
xor edx, edx
call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)
mov qword ptr [rsp + 16], rax
mov rcx, qword ptr [rsp + 8]
mov qword ptr [rsp + 32], rcx
.LBB4_3:
test rbp, rbp
je .LBB4_7
cmp rbp, 1
jne .LBB4_6
mov cl, byte ptr [rbx]
mov byte ptr [rax], cl
jmp .LBB4_7
.LBB4_6:
mov rdi, rax
mov rsi, rbx
mov rdx, rbp
call memcpy
.LBB4_7:
mov rax, qword ptr [rsp + 8]
mov qword ptr [rsp + 24], rax
mov rcx, qword ptr [rsp + 16]
mov byte ptr [rcx + rax], 0
lea rsi, [rsp + 16]
mov edi, r14d
call r12
mov rdi, qword ptr [rsp + 16]
cmp rdi, r15
je .LBB4_10
call operator delete(void*)
.LBB4_10:
add rsp, 48
pop rbx
pop r12
pop r14
pop r15
pop rbp
ret
mov rdi, rax
call _Unwind_Resume
mov rbx, rax
mov rdi, qword ptr [rsp + 16]
cmp rdi, r15
je .LBB4_14
call operator delete(void*)
.LBB4_14:
mov rdi, rbx
call _Unwind_Resume
|