Function at 0x14004651c
Capabilities:
Get common file path
Set current directory

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x2140]
mov eax, 0x2240
call fcn.140055f20
sub rsp, rax
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rsp + 0x2290], rbx
mov rax, qword [0x140081ee0]
xor rax, rsp
mov qword [rbp + 0x2130], rax
mov rax, rdx
mov r12, rcx
test rdx, rdx
jne 0x14004656e
xor edi, edi
jmp 0x14004658a
mov r8d, 0x400
lea rdx, [rbp + 0x530]
mov rcx, rax
call fcn.140048ca8
lea rdi, [rbp + 0x530]
lea rcx, str.MAPI32.DLL
call fcn.1400469a8
mov r14, rax
mov qword [rsp + 0x48], rax
test rax, rax
je 0x14004692f
lea rdx, str.MAPISendMail
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rsi, rax
mov qword [rsp + 0x50], rax
lea rdx, str.MAPIResolveName
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rbx, rax
mov qword [rsp + 0x38], rax
lea rdx, str.MAPIFreeBuffer
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r13, rax
test rsi, rsi
je 0x140046926
test rbx, rbx
je 0x140046926
test rax, rax
je 0x140046926
test rdi, rdi
je 0x140046623
cmp byte [rdi], 0x2e
jne 0x140046623
mov byte [rsp + 0x30], 1
inc rdi
mov al, byte [rdi]
neg al
sbb rcx, rcx
and rdi, rcx
jmp 0x140046628
mov byte [rsp + 0x30], 0
xor ecx, ecx
call fcn.140046a28
lea rdx, [rbp + 0x1130]
mov ebx, 0x800
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov r8d, ebx
lea rdx, [rbp + 0x930]
mov rcx, r12
call fcn.140048ca8
mov dl, 1
lea rcx, [rbp + 0x930]
call fcn.1400323c8
lea r9, [rsp + 0x40]
lea r8, [rbp + 0x10]
mov edx, 0x104
lea rcx, [rbp + 0x930]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
xor edx, edx
lea r8d, [rdx + 0x28]
lea rcx, [rbp - 0x80]
call fcn.140058f40
or dword [rbp - 0x78], 0xffffffff
lea rax, [rbp + 0x10]
mov qword [rbp - 0x70], rax
mov rbx, qword [rsp + 0x40]
mov qword [rbp - 0x68], rbx
xor edx, edx
lea r8d, [rdx + 0x60]
lea rcx, [rbp - 0x50]
call fcn.140058f40
mov dword [rbp], 1
lea rax, [rbp - 0x80]
mov qword [rbp + 8], rax
mov qword [rbp - 0x40], rbx
mov qword [rbp - 0x48], rbx
xor r15d, r15d
mov qword [rsp + 0x58], r15
xor esi, esi
mov qword [rsp + 0x60], rsi
and qword [rsp + 0x68], rsi
and qword [rsp + 0x70], rsi
test rdi, rdi
je 0x140046872
mov rbx, rdi
mov r14, qword [rsp + 0x38]
mov edx, 1
lea rcx, [rsp + 0x58]
call fcn.140046478
mov eax, dword [rbp - 0x10]
lea rcx, [rax + rax*4]
mov r15, qword [rsp + 0x58]
lea rsi, [r15 + rcx*8]
xor edx, edx
lea r8d, [rdx + 0x28]
mov rcx, rsi
call fcn.140058f40
mov eax, dword [str.SMTP:]
mov dword [rbp + 0x120], eax
movzx eax, word [0x140070b9c]
mov word [rbp + 0x124], ax
lea rcx, [rbp + 0x120]
dec rcx
inc rcx
cmp byte [rcx], 0
jne 0x140046743
xor edx, edx
mov al, byte [rbx + rdx]
mov byte [rcx + rdx], al
inc rdx
test al, al
jne 0x14004674d
lea rdx, [0x140070ba0]
mov rcx, rbx
call fcn.14005f5b4
mov rbx, rax
test rax, rax
je 0x140046780
inc rbx
movsx ecx, byte [rbx]
call fcn.140045d24
test al, al
jne 0x140046771
lea rdx, [0x140070ba4]
lea rcx, [rbp + 0x120]
call fcn.14005f5b4
test rax, rax
je 0x14004679b
mov byte [rax], 0
mov dword [rsi + 4], 1
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
and dword [rsp + 0x20], 0
mov r9d, 1
lea r8, [rbp + 0x125]
xor edx, edx
xor ecx, ecx
call r14
test eax, eax
jne 0x140046848
mov rax, qword [rsp + 0x38]
mov ecx, dword [rax]
mov dword [rsi], ecx
mov rax, qword [rsp + 0x38]
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x1400467ee
call fcn.14006089c
mov qword [rsi + 8], rax
mov rax, qword [rsp + 0x38]
mov rcx, qword [rax + 0x10]
test rcx, rcx
je 0x140046805
call fcn.14006089c
mov qword [rsi + 0x10], rax
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x18]
mov dword [rsi + 0x18], eax
mov rcx, qword [rsp + 0x38]
cmp qword [rcx + 0x20], 0
je 0x140046843
mov eax, dword [rcx + 0x18]
test eax, eax
je 0x140046843
mov ecx, eax
call fcn.14005d520
mov qword [rsi + 0x20], rax
mov rdx, qword [rsp + 0x38]
mov r8d, dword [rdx + 0x18]
mov rdx, qword [rdx + 0x20]
mov rcx, rax
call fcn.140059180
mov rcx, qword [rsp + 0x38]
call r13
jmp 0x140046858
lea rcx, [rbp + 0x120]
call fcn.14006089c
mov qword [rsi + 0x10], rax
inc dword [rbp - 0x10]
test rbx, rbx
jne 0x1400466f2
mov qword [rbp - 8], r15
mov rsi, qword [rsp + 0x60]
mov r14, qword [rsp + 0x48]
neg rdi
sbb r9d, r9d
and r9d, 0xfffffff8
add r9d, 9
and dword [rsp + 0x20], 0
lea r8, [rbp - 0x50]
xor edx, edx
xor ecx, ecx
call qword [rsp + 0x50]
test eax, eax
sete dil
test rsi, rsi
je 0x1400468d3
lea rbx, [r15 + 0x10]
mov rcx, qword [rbx - 8]
test rcx, rcx
je 0x1400468ae
call fcn.14005a938
mov rcx, qword [rbx]
test rcx, rcx
je 0x1400468bb
call fcn.14005a938
mov rcx, qword [rbx + 0x10]
test rcx, rcx
je 0x1400468c9
call fcn.14005a938
add rbx, 0x28
sub rsi, 1
jne 0x1400468a0
lea rcx, [rbp + 0x1130]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov cl, 1
call fcn.140046a28
test dil, dil
je 0x140046906
cmp byte [rsp + 0x30], 0
je 0x140046914
mov rcx, r12
call fcn.140021af4
jmp 0x140046914
mov rdx, r12
mov ecx, 0x4b
call fcn.1400013b0
nop
test r15, r15
je 0x140046921
mov rcx, r15
call fcn.14005a938
mov al, dil
jmp 0x140046931
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
xor al, al
mov rcx, qword [rbp + 0x2130]
xor rcx, rsp
call fcn.140055f90
mov rbx, qword [rsp + 0x2290]
add rsp, 0x2240
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret