- .LC0:
- .string "input a string with a dollar sign: "
- .LC1:
- .string "the input string is rejekted"
- .LC2:
- .string "the inpur sting is accepted "
- main:
- push rbp
- mov rbp, rsp
- push rbx
- sub rsp, 56
- lea rax, [rbp-64]
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
- mov esi, OFFSET FLAT:.LC0
- mov edi, OFFSET FLAT:_ZSt4cout
- call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
- lea rax, [rbp-64]
- mov rsi, rax
- mov edi, OFFSET FLAT:_ZSt3cin
- call std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
- mov DWORD PTR [rbp-28], 0
- .L3:
- mov eax, DWORD PTR [rbp-28]
- movsx rdx, eax
- lea rax, [rbp-64]
- mov rsi, rdx
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
- movzx eax, BYTE PTR [rax]
- cmp al, 125
- setne al
- test al, al
- je .L2
- add DWORD PTR [rbp-28], 1
- jmp .L3
- .L2:
- mov eax, DWORD PTR [rbp-28]
- movsx rdx, eax
- lea rax, [rbp-64]
- mov rsi, rdx
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
- movzx eax, BYTE PTR [rax]
- cmp al, 36
- setne al
- test al, al
- je .L4
- mov esi, OFFSET FLAT:.LC1
- mov edi, OFFSET FLAT:_ZSt4cout
- call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
- .L4:
- lea rax, [rbp-64]
- mov esi, 0
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
- movzx eax, BYTE PTR [rax]
- cmp al, 97
- setne al
- test al, al
- je .L5
- mov esi, OFFSET FLAT:.LC1
- mov edi, OFFSET FLAT:_ZSt4cout
- call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
- .L5:
- mov DWORD PTR [rbp-32], 0
- .L9:
- mov eax, DWORD PTR [rbp-32]
- cmp eax, DWORD PTR [rbp-28]
- jg .L6
- mov eax, DWORD PTR [rbp-32]
- movsx rdx, eax
- lea rax, [rbp-64]
- mov rsi, rdx
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
- movzx eax, BYTE PTR [rax]
- cmp al, 98
- sete al
- test al, al
- je .L7
- add DWORD PTR [rbp-24], 1
- .L7:
- mov eax, DWORD PTR [rbp-32]
- movsx rdx, eax
- lea rax, [rbp-64]
- mov rsi, rdx
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
- movzx eax, BYTE PTR [rax]
- cmp al, 99
- sete al
- test al, al
- je .L8
- add DWORD PTR [rbp-20], 1
- .L8:
- add DWORD PTR [rbp-32], 1
- jmp .L9
- .L6:
- mov edx, DWORD PTR [rbp-24]
- mov eax, edx
- add eax, eax
- add edx, eax
- mov eax, DWORD PTR [rbp-20]
- add eax, eax
- cmp edx, eax
- je .L10
- mov esi, OFFSET FLAT:.LC1
- mov edi, OFFSET FLAT:_ZSt4cout
- call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
- jmp .L11
- .L10:
- mov esi, OFFSET FLAT:.LC2
- mov edi, OFFSET FLAT:_ZSt4cout
- call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
- .L11:
- mov ebx, 0
- lea rax, [rbp-64]
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
- mov eax, ebx
- jmp .L15
- mov rbx, rax
- lea rax, [rbp-64]
- mov rdi, rax
- call std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
- mov rax, rbx
- mov rdi, rax
- call _Unwind_Resume
- .L15:
- add rsp, 56
- pop rbx
- pop rbp
- ret
- __static_initialization_and_destruction_0(int, int):
- push rbp
- mov rbp, rsp
- sub rsp, 16
- mov DWORD PTR [rbp-4], edi
- mov DWORD PTR [rbp-8], esi
- cmp DWORD PTR [rbp-4], 1
- jne .L18
- cmp DWORD PTR [rbp-8], 65535
- jne .L18
- mov edi, OFFSET FLAT:_ZStL8__ioinit
- call std::ios_base::Init::Init() [complete object constructor]
- mov edx, OFFSET FLAT:__dso_handle
- mov esi, OFFSET FLAT:_ZStL8__ioinit
- mov edi, OFFSET FLAT:_ZNSt8ios_base4InitD1Ev
- call __cxa_atexit
- .L18:
- nop
- leave
- ret
- _GLOBAL__sub_I_main:
- push rbp
- mov rbp, rsp
- mov esi, 65535
- mov edi, 1
- call __static_initialization_and_destruction_0(int, int)
- pop rbp
- ret