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

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa60
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov rax, qword [0x1801270d0]
xor rax, rsp
mov qword [rsp + 0xa50], rax
mov rsi, rdx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x40], r8
xor r15d, r15d
mov ebx, r15d
mov dword [rsp + 0x30], ebx
mov r14, qword [rdx + 0x10]
sub r14, qword [rdx + 8]
mov word [rsp + 0x640], r15w
xor edx, edx
mov r8d, 0x40e
lea rcx, [rsp + 0x642]
call fcn.1800e96b0
lea rdx, [rsi + 0x18]
lea rcx, [rsp + 0x640]
nop word [rax + rax]
movzx eax, word [rdx]
mov word [rcx], ax
add rdx, 2
add rcx, 2
test ax, ax
jne 0x18003be00
mov ecx, 0x54a7a055
call fcn.180051c90
lea rcx, [rsp + 0x640]
call rax
mov ecx, 0x54a7a05b
call fcn.180051c90
lea rcx, [rsp + 0x640]
call rax
movzx eax, word [rsi + 0x428]
add eax, 0xffffffd0
cmp eax, 9
ja case.0x18003be61.49
cdqe
lea rdx, [0x180000000]
mov ecx, dword [rdx + rax*4 + 0x3cac8]
add rcx, rdx
jmp rcx
mov dword [rsp + 0x20], 1
mov r9d, 0x3039
lea r8, [0x18010a37c]
lea rdx, [rsp + 0x50]
mov rcx, qword [0x18012e530]
call fcn.180042a40
nop
mov word [rsp + 0x220], r15w
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x222]
call fcn.1800e96b0
mov ecx, 0x54a4a0fd
call fcn.1800061a0
lea rdx, [rsp + 0x220]
mov ecx, 0x104
call rax
lea rdi, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rdi, qword [rsp + 0x50]
mov ecx, 0x54a7a051
call fcn.180051c90
mov rdx, rdi
lea rcx, [rsp + 0x220]
call rax
cmp word [rsi + 0x428], 0x38
jne 0x18003c001
mov r8d, dword [rsi + 8]
test r8d, r8d
jne 0x18003bf18
mov ecx, 0x54a4a0ea
call fcn.1800061a0
lea rcx, [rsp + 0x220]
call rax
test eax, eax
jmp 0x18003bf70
mov rax, qword [0x18012e530]
mov qword [rsp + 0x78], rax
mov byte [rsp + 0x80], 1
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], 1
xor r9d, r9d
mov rdx, r14
lea rcx, [rsp + 0x78]
call fcn.18004b010
mov rdi, rax
xor r9d, r9d
mov r8d, dword [rax + 0x38]
mov rdx, qword [rax + 0x40]
lea rcx, [rsp + 0x220]
call fcn.18000f9f0
mov esi, eax
mov rcx, rdi
call fcn.180014a38
test esi, esi
sete r15b
test r15d, r15d
jne 0x18003c1a0
mov rcx, qword [0x18012e530]
mov byte [rcx + 0x392], r15b
lea r8, [rcx + 0x338]
mov dword [r8], 0x50000ee
xor edx, edx
mov r9d, DllRegisterServer
call fcn.1800529b0
mov ecx, 0x54a4a04c
call fcn.1800061a0
mov r8d, 0x103
lea rdx, [rsp + 0x430]
xor ecx, ecx
call rax
mov ecx, 0x54a4a05a
call fcn.1800061a0
call rax
mov r8d, 0x8000400
mov rdx, rax
lea rcx, [rsp + 0x430]
call fcn.180016dc0
mov ebx, eax
mov dword [rsp + 0x30], eax
test eax, eax
je 0x18003c1a0
mov dword [0x18012e6a8], 1
jmp 0x18003c1a0
mov rax, qword [0x18012e6a0]
test rax, rax
je 0x18003c1a0
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x18003c1a0
movsxd rax, dword [rax + 0x38]
imul rax, rax, 0x4ac
lea r13, [rax + rcx + 0x38]
test r13, r13
je 0x18003c1a0
lea rcx, [r13 + 0x94]
lea rdx, [rsp + 0x430]
nop word [rax + rax]
movzx eax, word [rcx]
mov word [rdx], ax
add rcx, 2
add rdx, 2
test ax, ax
jne 0x18003c050
or r12, 0xffffffffffffffff
nop word [rax + rax]
lea rdi, [rsp + 0x430]
xor eax, eax
mov rcx, r12
repne scasw ax, word [rdi]
mov eax, dword [0x180109bd4]
mov dword [rdi - 2], eax
mov ecx, 0x54a4a0e4
call fcn.1800061a0
lea rcx, [rsp + 0x430]
call rax
cmp eax, 0xffffffff
jne 0x18003c070
mov r12d, 0x8000400
nop dword [rax + rax]
cmp r15d, 0xa
jge 0x18003c17b
mov ecx, 0x54a4a0e7
call fcn.1800061a0
lea rdx, [rsp + 0x430]
lea rcx, [r13 + 0x94]
call rax
mov ecx, 0x54a4a0ea
call fcn.1800061a0
lea rcx, [r13 + 0x94]
call rax
mov ecx, 0x54a4a00e
call fcn.1800061a0
mov ecx, 0x3e8
call rax
mov ecx, 0x54a4a0e4
call fcn.1800061a0
lea rcx, [r13 + 0x94]
call rax
cmp eax, 0xffffffff
jne 0x18003c173
xor r9d, r9d
mov r8d, dword [rsi + 8]
mov rdx, r14
lea rcx, [r13 + 0x94]
call fcn.18000f9f0
test eax, eax
je 0x18003c173
mov ecx, 0x54a4a0ea
call fcn.1800061a0
lea rcx, [rsp + 0x220]
call rax
mov ecx, 0x54a4a05a
call fcn.1800061a0
call rax
lea rcx, [r13 + 0x29c]
mov r8d, r12d
mov rdx, rax
call fcn.180016dc0
mov ebx, eax
mov dword [rsp + 0x30], eax
test eax, eax
je 0x18003c173
mov dword [0x18012e6a8], 1
jmp 0x18003c1a0
inc r15d
jmp 0x18003c0b0
cmp dword [0x18012e6a8], 0
jne 0x18003c1a0
mov ecx, 0x54a4a0e7
call fcn.1800061a0
lea rdx, [r13 + 0x94]
lea rcx, [rsp + 0x430]
call rax
nop
jmp 0x18003ca87
xor r9d, r9d
mov r8d, dword [rsi + 8]
mov rdx, r14
lea rcx, [rsp + 0x640]
call fcn.18000f9f0
test eax, eax
je case.0x18003be61.49
call fcn.18000cf10
movzx ecx, word [rsi + 0x428]
sub ecx, 0x32
je 0x18003c6bf
dec ecx
jne case.0x18003be61.49
mov ecx, 0x54a7a0c1
call fcn.180051c90
lea rcx, [rsi + 0x18]
call rax
mov rbx, rax
mov edx, 6
movabs r8, 0x12b2b634b3128
lea rcx, [rsp + 0x78]
call fcn.18004e5b0
lea rdi, [rsp + 0x78]
movzx eax, byte [rdi]
inc rdi
test al, al
jne 0x18003c212
lea rax, [rsp + 0x78]
sub edi, eax
dec edi
cmp edi, 1
jle 0x18003c24b
nop word [rax + rax]
test edi, edi
js 0x18003c24b
movsxd rax, edi
movsx edx, byte [rsp + rax + 0x78]
lea eax, [rdi + rdi]
movsxd rcx, eax
mov word [rsp + rcx + 0x78], dx
dec edi
jmp 0x18003c230
lea rdx, [rsp + 0x78]
mov rcx, rbx
call fcn.180043588
test rax, rax
je 0x18003c660
mov qword [rsp + 0x68], 7
mov qword [rsp + 0x60], r15
mov word [rsp + 0x50], r15w
xor eax, eax
or r12, 0xffffffffffffffff
mov rcx, r12
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.18000e970
nop
mov ecx, 0x54a4a069
call fcn.1800061a0
mov r8d, 0x103
lea rdx, [rsp + 0x430]
lea rcx, [rsp + 0x640]
call rax
mov ecx, 0x54a7a0c0
call fcn.180051c90
lea rcx, [rsp + 0x430]
call rax
mov qword [rsp + 0xa8], 7
mov qword [rsp + 0xa0], r15
mov word [rsp + 0x90], r15w
xor eax, eax
mov rcx, r12
lea rdi, [rsp + 0x430]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rsp + 0x430]
lea rcx, [rsp + 0x90]
call fcn.18000e970
nop
lea rdi, [rsp + 0x78]
nop
movzx eax, byte [rdi]
inc rdi
test al, al
jne 0x18003c320
lea rax, [rsp + 0x78]
sub edi, eax
dec edi
cmp edi, 1
jle 0x18003c353
test edi, edi
js 0x18003c353
movsxd rax, edi
movsx edx, byte [rsp + rax + 0x78]
lea eax, [rdi + rdi]
movsxd rcx, eax
mov word [rsp + rcx + 0x78], dx
dec edi
jmp 0x18003c338
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r15
mov word [rsp + 0xb8], r15w
xor eax, eax
mov rcx, r12
lea rdi, [rsp + 0x78]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0xb8]
call fcn.18000e970
nop
mov eax, r15d
nop word [rax + rax]
movsxd rdi, eax
mov rsi, qword [rsp + 0xc8]
lea rbx, [rsp + 0xb8]
mov r14, qword [rsp + 0xb8]
mov r13, qword [rsp + 0xd0]
cmp r13, 8
cmovae rbx, r14
mov r10, qword [rsp + 0x60]
test rsi, rsi
jne 0x18003c3de
cmp rdi, r10
jbe 0x18003c4ac
cmp rdi, r10
jae 0x18003c4d7
sub r10, rdi
cmp rsi, r10
ja 0x18003c4d7
mov eax, 1
sub rax, rsi
add r10, rax
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rax, qword [rsp + 0x50]
lea r11, [rax + rdi*2]
mov rcx, r10
mov rdi, r11
nop dword [rax]
test rcx, rcx
je 0x18003c436
movzx eax, word [rbx]
cmp word [rdi], ax
je 0x18003c439
add rdi, 2
dec rcx
jmp 0x18003c420
mov rdi, r15
test rdi, rdi
je 0x18003c4d7
mov rax, rsi
mov rcx, rbx
mov rdx, rdi
nop dword [rax + rax]
test rax, rax
je 0x18003c495
movzx r8d, word [rdx]
movzx r9d, word [rcx]
cmp r8w, r9w
je 0x18003c488
mov eax, 1
cmovb eax, r12d
test eax, eax
je 0x18003c495
mov rcx, rdi
sub rcx, r11
sar rcx, 1
mov rax, r12
sub rax, rcx
add r10, rax
lea r11, [rdi + 2]
jmp 0x18003c413
add rdx, 2
add rcx, 2
dec rax
jmp 0x18003c450
lea rax, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rax, qword [rsp + 0x50]
sub rdi, rax
sar rdi, 1
cmp edi, 0xffffffff
je 0x18003c4d7
movsxd rdx, edi
lea r9, [rsp + 0x90]
mov r8, rsi
lea rcx, [rsp + 0x50]
call fcn.18001bab0
mov eax, dword [rsp + 0xa0]
add eax, edi
jmp 0x18003c3a0
cmp r13, 8
jb 0x18003c4e5
mov rcx, r14
call fcn.180014a38
mov qword [rsp + 0xd0], 7
mov qword [rsp + 0xc8], r15
mov word [rsp + 0xb8], r15w
cmp qword [rsp + 0xa8], 8
jb 0x18003c51a
mov rcx, qword [rsp + 0x90]
call fcn.180014a38
mov qword [rsp + 0xa8], 7
mov qword [rsp + 0xa0], r15
mov word [rsp + 0x90], r15w
lea rdi, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rdi, qword [rsp + 0x50]
mov ecx, 0x54a4a069
call fcn.1800061a0
mov r8d, 0x208
lea rdx, [rsp + 0x640]
mov rcx, rdi
call rax
mov qword [rsp + 0xf8], 7
mov qword [rsp + 0xf0], r15
mov word [rsp + 0xe0], r15w
xor eax, eax
mov rcx, r12
lea rdi, [rsp + 0x640]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rsp + 0x640]
lea rcx, [rsp + 0xe0]
call fcn.18000e970
nop
xor r8d, r8d
lea rdx, [rsp + 0xe0]
lea rcx, [rsp + 0x158]
call fcn.1800108c0
mov rdi, rax
cmp qword [rax + 0x18], 0x10
jb 0x18003c5d4
mov rdi, qword [rax]
mov ecx, 0x54a4a0f8
call fcn.1800061a0
xor edx, edx
mov rcx, rdi
call rax
mov ebx, r15d
cmp eax, 0x1f
seta bl
mov dword [rsp + 0x30], ebx
cmp qword [rsp + 0x170], 0x10
jb 0x18003c60a
mov rcx, qword [rsp + 0x158]
call fcn.180014a38
mov qword [rsp + 0x170], 0xf
mov qword [rsp + 0x168], r15
mov byte [rsp + 0x158], 0
cmp qword [rsp + 0xf8], 8
jb 0x18003c63e
mov rcx, qword [rsp + 0xe0]
call fcn.180014a38
mov qword [rsp + 0xf8], 7
mov qword [rsp + 0xf0], r15
mov word [rsp + 0xe0], r15w
jmp 0x18003ca87
mov ecx, 0x54ada009
call fcn.180051c90
mov rdi, rax
mov edx, 4
movabs r8, 0x3732b8378
lea rcx, [rsp + 0x208]
call fcn.18004e5b0
mov rcx, rax
call fcn.18005b2f0
mov rdx, rax
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r15
xor r9d, r9d
lea r8, [rsp + 0x640]
xor ecx, ecx
call rdi
mov ebx, r15d
cmp eax, 0x20
seta bl
mov dword [rsp + 0x30], ebx
jmp case.0x18003be61.49
mov eax, dword [rsi + 0x42c]
mov r12d, 0x8000400
test eax, eax
cmovne r12d, eax
cmp dword [0x18012e6b4], 0
je 0x18003c6f9
lea rdx, [rsi + 0x18]
mov r8d, r12d
lea rcx, [rsp + 0x640]
call fcn.180016dc0
mov ebx, eax
mov dword [rsp + 0x30], eax
jmp case.0x18003be61.49
mov edx, 7
movabs r8, 0x3a363ab0b332a20
lea rcx, [rsp + 0x1f8]
call fcn.18004e5b0
lea r8, [rsi + 0x18]
mov dword [rsp + 0x28], 1
mov dword [rsp + 0x20], r12d
mov r9, rax
lea rdx, [rsp + 0x640]
xor ecx, ecx
call section..text
mov ebx, eax
mov dword [rsp + 0x30], eax
jmp case.0x18003be61.49
lea rcx, [rsp + 0x50]
call fcn.18002bbf0
nop
lea rcx, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rcx, qword [rsp + 0x50]
xor r9d, r9d
mov r8d, dword [rsi + 8]
mov rdx, r14
call fcn.18000f9f0
test eax, eax
je 0x18003ca87
mov word [rsp + 0x220], r15w
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x222]
call fcn.1800e96b0
mov ecx, 0x54a4a069
call fcn.1800061a0
mov r8d, 0x104
lea rdx, [rsp + 0x220]
lea rcx, [rsp + 0x640]
call rax
mov qword [rsp + 0x148], 7
mov qword [rsp + 0x140], r15
mov word [rsp + 0x130], r15w
xor eax, eax
or r12, 0xffffffffffffffff
mov rcx, r12
lea rdi, [rsp + 0x220]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rsp + 0x220]
lea rcx, [rsp + 0x130]
call fcn.18000e970
nop
mov r8d, 0xd698
lea rdx, [rsp + 0x130]
lea rcx, [rsp + 0x180]
call fcn.1800108c0
mov rdi, rax
mov r8d, 0xd698
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x1d0]
call fcn.1800108c0
nop
cmp qword [rdi + 0x18], 0x10
jb 0x18003c845
mov rdi, qword [rdi]
cmp qword [rax + 0x18], 0x10
jb 0x18003c84f
mov rax, qword [rax]
mov rdx, rdi
mov rcx, rax
call fcn.18000b3f0
mov edi, eax
cmp qword [rsp + 0x1e8], 0x10
jb 0x18003c874
mov rcx, qword [rsp + 0x1d0]
call fcn.180014a38
mov qword [rsp + 0x1e8], 0xf
mov qword [rsp + 0x1e0], r15
mov byte [rsp + 0x1d0], 0
cmp qword [rsp + 0x198], 0x10
jb 0x18003c8a8
mov rcx, qword [rsp + 0x180]
call fcn.180014a38
mov qword [rsp + 0x198], 0xf
mov qword [rsp + 0x190], r15
mov byte [rsp + 0x180], 0
cmp qword [rsp + 0x148], 8
jb 0x18003c8dc
mov rcx, qword [rsp + 0x130]
call fcn.180014a38
mov qword [rsp + 0x148], 7
mov qword [rsp + 0x140], r15
mov word [rsp + 0x130], r15w
test edi, edi
je 0x18003ca66
mov ecx, 0x54a7a0c1
call fcn.180051c90
lea rcx, [rsi + 0x18]
call rax
mov rbx, rax
test rax, rax
je 0x18003ca5d
xor eax, eax
mov rcx, r12
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
dec rcx
cmp rcx, 2
jbe 0x18003ca5d
call fcn.18000cf10
lea rdx, [rsp + 0x640]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea rcx, [rsp + 0x220]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov qword [rsp + 0x120], 7
mov qword [rsp + 0x118], r15
mov word [rsp + 0x108], r15w
xor eax, eax
mov rcx, r12
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
mov rdx, rbx
lea rcx, [rsp + 0x108]
call fcn.18000e970
nop
mov r8d, 0xd698
lea rdx, [rsp + 0x108]
lea rcx, [rsp + 0x1a8]
call fcn.1800108c0
mov rdi, rax
cmp qword [rax + 0x18], 0x10
jb 0x18003c9c6
mov rdi, qword [rax]
mov ecx, 0x54a4a0f8
call fcn.1800061a0
xor edx, edx
mov rcx, rdi
call rax
mov ebx, r15d
cmp eax, 0x1f
seta bl
mov dword [rsp + 0x30], ebx
cmp qword [rsp + 0x1c0], 0x10
jb 0x18003c9fc
mov rcx, qword [rsp + 0x1a8]
call fcn.180014a38
mov qword [rsp + 0x1c0], 0xf
mov qword [rsp + 0x1b8], r15
mov byte [rsp + 0x1a8], 0
cmp qword [rsp + 0x120], 8
jb 0x18003ca30
mov rcx, qword [rsp + 0x108]
call fcn.180014a38
mov qword [rsp + 0x120], 7
mov qword [rsp + 0x118], r15
mov word [rsp + 0x108], r15w
lea rcx, [rsp + 0x640]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
jmp 0x18003ca66
mov ebx, 1
mov dword [rsp + 0x30], ebx
lea rdi, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rdi, qword [rsp + 0x50]
mov ecx, 0x54a4a0ea
call fcn.1800061a0
mov rcx, rdi
call rax
nop
cmp qword [rsp + 0x68], 8
jb case.0x18003be61.49
mov rcx, qword [rsp + 0x50]
call fcn.180014a38
nop
mov eax, ebx
jmp 0x18003caa2
mov rcx, qword [rsp + 0xa50]
xor rcx, rsp
call fcn.1800e7b90
add rsp, 0xa60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret