Function at 0x418480
Capabilities:
Get common file path

Disassembly:
mov eax, 0x2234
call fcn.0041bfd0
mov eax, dword [0x4417c0]
xor eax, esp
mov dword [esp + 0x2230], eax
push ebp
mov ebp, dword [esp + 0x2240]
push edi
mov edi, dword [esp + 0x2248]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebp
test edi, edi
ja 0x4184bb
xor eax, eax
jmp 0x418bae
push esi
lea eax, [edi + edi]
push eax
push 0
push ebp
call fcn.0041a230
mov esi, dword [esp + 0x2250]
add esp, 0xc
test esi, esi
je 0x4184f1
mov eax, esi
lea edx, [eax + 2]
jmp 0x4184e0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4184e0
sub eax, edx
sar eax, 1
jne 0x4184fb
mov eax, 1
jmp 0x418bad
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418500
sub eax, edx
sar eax, 1
cmp eax, edi
jbe 0x41851a
xor eax, eax
jmp 0x418bad
mov edx, ebp
mov eax, esi
sub edx, esi
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418520
push ebx
push 0x25
push ebp
call fcn.0041c28e
mov ebx, dword [sym.imp.SHELL32.dll_DoEnvironmentSubstW]
add esp, 8
test eax, eax
je 0x418552
push edi
push ebp
call ebx
test ax, ax
je 0x418baa
mov eax, ebp
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418557
sub eax, edx
sar eax, 1
cmp eax, 4
jbe 0x4185df
push 4
xor eax, eax
lea ecx, [esp + 0x20]
push ebp
push ecx
mov word [esp + 0x28], ax
mov dword [esp + 0x2a], eax
mov dword [esp + 0x2e], eax
call fcn.0041c2e0
add esp, 0xc
mov ecx, str.___
lea eax, [esp + 0x1c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4185b9
test dx, dx
je 0x4185b5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4185b9
add eax, 4
add ecx, 4
test dx, dx
jne 0x418593
xor eax, eax
jmp 0x4185be
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4185df
lea eax, [ebp + 8]
mov edx, ebp
sub edx, eax
lea esp, [esp]
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x4185d0
mov eax, ebp
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4185e4
sub eax, edx
sar eax, 1
cmp eax, 9
jbe 0x41874f
xor eax, eax
push 9
mov dword [esp + 0x22], eax
mov dword [esp + 0x26], eax
mov dword [esp + 0x2a], eax
mov dword [esp + 0x2e], eax
mov word [esp + 0x32], ax
lea eax, [esp + 0x20]
xor edx, edx
push ebp
push eax
mov word [esp + 0x28], dx
call fcn.0041c2e0
lea ecx, [esp + 0x28]
push str.system32_
push ecx
call fcn.0041c8c0
add esp, 0x14
test eax, eax
jne 0x41874f
xor edx, edx
push 0x1fe
push edx
lea eax, [esp + 0x42]
push eax
mov word [esp + 0x44], dx
call fcn.0041a230
add esp, 0xc
push 0
push 0x25
lea ecx, [esp + 0x40]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x418baa
lea eax, [esp + 0x38]
lea edx, [eax + 2]
jmp 0x418680
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418680
sub eax, edx
sar eax, 1
mov edx, eax
mov eax, ebp
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418696
sub eax, esi
sar eax, 1
lea edx, [eax + edx - 8]
cmp edx, edi
jae 0x418baa
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041aea6
add esp, 4
test eax, eax
je 0x418baa
lea ecx, [esp + 0x38]
mov esi, eax
mov edx, ecx
sub esi, edx
mov edi, edi
movzx edx, word [ecx]
mov word [esi + ecx], dx
add ecx, 2
test dx, dx
jne 0x4186e0
lea ecx, [ebp + 0x10]
mov esi, ecx
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4186f4
sub ecx, esi
mov edi, eax
mov edx, ecx
add edi, 0xfffffffe
jmp 0x418710
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x418710
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, ebp
mov ecx, eax
sub esi, eax
movzx edx, word [ecx]
mov word [esi + ecx], dx
add ecx, 2
test dx, dx
jne 0x418730
push eax
call fcn.0041af0b
mov edi, dword [esp + 0x2254]
add esp, 4
mov eax, ebp
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418754
sub eax, edx
sar eax, 1
cmp eax, 0xc
jbe 0x4188bf
xor eax, eax
push 0xc
lea ecx, [esp + 0x20]
push ebp
push ecx
mov word [esp + 0x28], ax
mov dword [esp + 0x2a], eax
mov dword [esp + 0x2e], eax
mov dword [esp + 0x32], eax
mov dword [esp + 0x36], eax
mov dword [esp + 0x3a], eax
mov dword [esp + 0x3e], eax
call fcn.0041c2e0
lea edx, [esp + 0x28]
push str.SystemRoot_
push edx
call fcn.0041c8c0
add esp, 0x14
test eax, eax
jne 0x4188bf
jmp 0x4187c0
movzx ecx, word [eax + 0x435930]
mov word [esp + eax + 0x38], cx
add eax, 2
test cx, cx
jne 0x4187c0
push 0x104
lea eax, [esp + 0x3c]
push eax
call ebx
test ax, ax
je 0x418baa
lea eax, [esp + 0x38]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4187f0
sub eax, edx
sar eax, 1
mov edx, eax
mov eax, ebp
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418806
sub eax, esi
sar eax, 1
lea ecx, [eax + edx - 0xb]
cmp ecx, edi
jae 0x418baa
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041aea6
add esp, 4
test eax, eax
je 0x418baa
lea ecx, [esp + 0x38]
mov esi, eax
mov edx, ecx
sub esi, edx
mov edi, edi
movzx edx, word [ecx]
mov word [esi + ecx], dx
add ecx, 2
test dx, dx
jne 0x418850
lea ecx, [ebp + 0x16]
mov esi, ecx
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x418864
sub ecx, esi
mov edi, eax
mov edx, ecx
add edi, 0xfffffffe
jmp 0x418880
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x418880
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, ebp
mov ecx, eax
sub esi, eax
movzx edx, word [ecx]
mov word [esi + ecx], dx
add ecx, 2
test dx, dx
jne 0x4188a0
push eax
call fcn.0041af0b
mov edi, dword [esp + 0x2254]
add esp, 4
mov ecx, dword [esp + 0x14]
push edi
push ebp
push ebp
call fcn.00418350
push 0x5c
push ebp
call fcn.0041c28e
add esp, 8
test eax, eax
je 0x418baa
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041aea6
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x418baa
mov esi, dword [esp + 0x2250]
lea eax, [esi + esi]
push eax
push 0
push ebp
call fcn.0041a230
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041aea6
mov ebx, eax
add esp, 0x10
test ebx, ebx
jne 0x418945
push ebp
call fcn.0041af0b
add esp, 4
jmp 0x418baa
mov eax, esi
add eax, eax
push eax
push 0
push ebx
call fcn.0041a230
mov eax, dword [esp + 0x1c]
push 0x5c
push eax
call fcn.0041c2b4
mov esi, eax
add esi, 2
push 0x43592c
push esi
call fcn.0041ef3e
mov edi, eax
mov eax, esi
add esp, 0x1c
lea edx, [eax + 2]
jmp 0x418980
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418980
sub eax, edx
sar eax, 1
cmp edi, eax
je 0x418a37
jmp 0x4189a0
mov eax, dword [esp + 0x2250]
add eax, eax
push eax
push 0
push ebp
call fcn.0041a230
mov eax, dword [esp + 0x225c]
add eax, eax
push eax
push 0
push ebx
call fcn.0041a230
mov eax, dword [esp + 0x28]
mov ecx, esi
sub ecx, eax
sar ecx, 1
add ecx, edi
push ecx
push eax
push ebp
call fcn.0041c2e0
mov edx, dword [esp + 0x2274]
mov ecx, dword [esp + 0x38]
add esp, 0x24
push edx
push ebx
push ebp
call fcn.00417e90
test eax, eax
jne 0x418a80
cmp word [esi + edi*2 + 2], ax
lea esi, [esi + edi*2 + 2]
je 0x418aa1
push 0x43592c
push esi
call fcn.0041ef3e
mov edi, eax
mov eax, esi
add esp, 8
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418a20
sub eax, edx
sar eax, 1
cmp edi, eax
jne 0x4189a0
mov eax, dword [esp + 0x2250]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push ebp
push esi
call fcn.00417e90
test eax, eax
je 0x418b9b
mov edx, esi
mov eax, ebp
sub edx, ebp
lea esp, [esp]
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418a60
push ebp
call fcn.0041af0b
push ebx
call fcn.0041af0b
jmp 0x418b01
mov edx, dword [esp + 0x10]
mov eax, ebx
sub edx, ebx
jmp 0x418a90
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418a90
jmp 0x418af1
mov eax, dword [esp + 0x10]
mov edx, ebp
sub edx, eax
lea esp, [esp]
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418ab0
mov ecx, dword [esp + 0x2250]
push ecx
mov ecx, dword [esp + 0x18]
push ebx
push ebp
call fcn.00417e90
test eax, eax
je 0x418b9b
mov edx, dword [esp + 0x10]
mov eax, ebx
sub edx, ebx
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418ae2
push ebp
call fcn.0041af0b
push ebx
call fcn.0041af0b
mov esi, dword [esp + 0x18]
add esp, 8
push 0x7e
push esi
call fcn.0041c28e
add esp, 8
test eax, eax
je 0x418b94
xor edx, edx
push 0x1ffe
push edx
lea eax, [esp + 0x24a]
push eax
mov word [esp + 0x24c], dx
call fcn.0041a230
add esp, 0xc
push 0x1000
lea ecx, [esp + 0x244]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
je 0x418b94
mov edi, dword [esp + 0x2250]
cmp eax, edi
ja 0x418baa
lea eax, [esp + 0x240]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x418b64
sub eax, edx
sar eax, 1
dec edi
cmp eax, edi
jae 0x418baa
lea eax, [esp + 0x240]
mov edx, esi
mov ecx, eax
sub edx, ecx
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x418b85
mov eax, 1
jmp 0x418bac
push ebp
call fcn.0041af0b
push ebx
call fcn.0041af0b
add esp, 8
xor eax, eax
pop ebx
pop esi
mov ecx, dword [esp + 0x2238]
pop edi
pop ebp
xor ecx, esp
call fcn.0041a7bc
add esp, 0x2234
ret 0xc