Function at 0x404b00
Capabilities:
Get common file path

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x443954
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x950
mov eax, dword [0x477840]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x898], ecx
push 0x104
lea eax, [ebp - 0x220]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x405324
mov esi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
lea eax, [ebp - 0x428]
push eax
push 0
push 0
push 0x1a
push 0
call esi
test eax, eax
js 0x405324
lea eax, [ebp - 0x630]
push eax
push 0
push 0
push 0x1c
push 0
call esi
test eax, eax
js 0x405324
lea eax, [ebp - 0x838]
push eax
push 0
push 0
push 0x23
push 0
call esi
test eax, eax
js 0x405324
lea eax, [ebp - 0x428]
mov dword [ebp - 0x83c], 0
xorps xmm0, xmm0
lea ecx, [ebp - 0x8fc]
push eax
movq qword [ebp - 0x844], xmm0
call fcn.00405460
push ecx
mov edx, eax
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x960]
call fcn.00405670
add esp, 4
lea eax, [ebp - 0x630]
mov byte [ebp - 4], 1
push eax
lea ecx, [ebp - 0x8e4]
call fcn.00405460
push ecx
mov edx, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x948]
call fcn.00405670
add esp, 4
lea eax, [ebp - 0x838]
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp - 0x8cc]
call fcn.00405460
push ecx
mov edx, eax
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x930]
call fcn.00405670
add esp, 4
lea edi, [ebp - 0x960]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x918]
mov dword [ebp - 0x844], 0
sub ecx, edi
mov dword [ebp - 0x840], 0
mov eax, 0x2aaaaaab
mov dword [ebp - 0x83c], 0
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x404d75
cmp eax, 0xaaaaaaa
ja 0x405344
lea esi, [eax + eax*2]
shl esi, 3
mov dword [ebp - 0x884], esi
cmp esi, 0x1000
jb 0x404cd6
lea eax, [esi + 0x23]
cmp eax, esi
jbe 0x405349
push eax
call fcn.00439e28
add esp, 4
test eax, eax
je 0x40534e
lea esi, [eax + 0x23]
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x404ce9
test esi, esi
je 0x404ce7
push esi
call fcn.00439e28
add esp, 4
mov esi, eax
jmp 0x404ce9
xor esi, esi
mov eax, dword [ebp - 0x884]
add eax, esi
mov dword [ebp - 0x844], esi
mov dword [ebp - 0x83c], eax
lea eax, [ebp - 0x844]
mov dword [ebp - 0x840], esi
mov dword [ebp - 0x87c], eax
xorps xmm0, xmm0
mov dword [ebp - 0x848], 0
movq qword [ebp - 0x850], xmm0
mov dword [ebp - 0x850], esi
mov dword [ebp - 0x84c], esi
mov dword [ebp - 0x848], eax
lea eax, [ebp - 0x918]
mov byte [ebp - 4], 9
cmp edi, eax
je 0x404d62
push edi
mov ecx, esi
call fcn.00405540
add esi, 0x18
lea eax, [ebp - 0x918]
add edi, 0x18
mov dword [ebp - 0x84c], esi
cmp edi, eax
jne 0x404d44
push ecx
mov edx, esi
mov ecx, esi
call fcn.00405720
add esp, 4
mov dword [ebp - 0x840], esi
push 0x405370
push 3
push 0x18
lea eax, [ebp - 0x960]
mov byte [ebp - 4], 0xb
push eax
call fcn.00439e58
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x8b8]
cmp ecx, 7
jbe 0x404dd2
mov edx, dword [ebp - 0x8cc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x404dc8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
xor eax, eax
mov dword [ebp - 0x8bc], 0
mov dword [ebp - 0x8b8], 7
mov word [ebp - 0x8cc], ax
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0x8d0]
cmp ecx, 7
jbe 0x404e33
mov edx, dword [ebp - 0x8e4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x404e29
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
xor eax, eax
mov dword [ebp - 0x8d4], 0
mov dword [ebp - 0x8d0], 7
mov word [ebp - 0x8e4], ax
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0x8e8]
cmp ecx, 7
jbe 0x404e94
mov edx, dword [ebp - 0x8fc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x404e8a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
xor eax, eax
mov dword [ebp - 0x8ec], 0
push eax
mov dword [ebp - 0x8e8], 7
mov word [ebp - 0x8fc], ax
call fcn.00423beb
push eax
call fcn.00423bd9
mov esi, dword [ebp - 0x840]
xor ecx, ecx
mov edi, dword [ebp - 0x844]
mov eax, 0x2aaaaaab
mov dword [ebp - 0x888], ecx
add esp, 8
mov ecx, esi
mov byte [ebp - 0x875], 0
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x40527e
mov eax, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov dword [ebp - 0x890], eax
mov eax, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov dword [ebp - 0x884], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x89c], eax
mov eax, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov dword [ebp - 0x87c], eax
sub esi, edi
mov eax, 0x2aaaaaab
imul esi
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
call fcn.00423bb8
xor edx, edx
div esi
mov eax, dword [ebp - 0x844]
lea ecx, [edx + edx*2]
lea eax, [eax + ecx*8]
push eax
lea ecx, [ebp - 0x85c]
call fcn.00405540
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0x85c]
cmp dword [ebp - 0x848], 7
push 0
cmova eax, dword [ebp - 0x85c]
push eax
call dword [ebp - 0x890]
cmp dword [ebp - 0x848], 7
lea eax, [ebp - 0x85c]
push 2
cmova eax, dword [ebp - 0x85c]
push eax
call dword [ebp - 0x884]
lea eax, [ebp - 0x220]
push 0x5c
push eax
call fcn.0043b8e8
add esp, 8
lea ecx, [ebp - 0x874]
add eax, 2
push eax
call fcn.00405460
mov byte [ebp - 4], 0x10
mov eax, 0x7ffffffe
mov ecx, dword [ebp - 0x84c]
sub eax, ecx
cmp eax, 1
jb 0x405353
cmp dword [ebp - 0x848], 7
lea eax, [ebp - 0x85c]
push 1
cmova eax, dword [ebp - 0x85c]
push ecx
push ecx
push eax
push ecx
push dword [ebp - 0x87c]
lea ecx, [ebp - 0x8b4]
call fcn.004057a0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x874]
mov eax, dword [ebp - 0x860]
cmp eax, 7
mov edi, dword [ebp - 0x874]
mov esi, dword [ebp - 0x8a4]
cmova ecx, edi
mov edx, dword [ebp - 0x864]
mov dword [ebp - 0x880], eax
mov eax, dword [ebp - 0x8a0]
sub eax, esi
mov dword [ebp - 0x894], ecx
mov dword [ebp - 0x88c], esi
cmp edx, eax
ja 0x405092
cmp dword [ebp - 0x8a0], 7
lea eax, [edx + esi]
mov dword [ebp - 0x8a4], eax
lea esi, [ebp - 0x8b4]
cmova esi, dword [ebp - 0x8b4]
mov eax, dword [ebp - 0x88c]
lea ecx, [esi + eax*2]
lea eax, [edx + edx]
push eax
push dword [ebp - 0x894]
push ecx
call fcn.0043bde0
mov eax, dword [ebp - 0x864]
add esp, 0xc
add eax, dword [ebp - 0x88c]
xor ecx, ecx
mov word [esi + eax*2], cx
lea ecx, [ebp - 0x8b4]
jmp 0x4050ba
push edx
push ecx
push dword [ebp - 0x87c]
lea ecx, [ebp - 0x8b4]
push edx
call fcn.004058e0
mov edi, dword [ebp - 0x874]
mov ecx, eax
mov eax, dword [ebp - 0x860]
mov dword [ebp - 0x880], eax
movups xmm0, xmmword [ecx]
mov esi, dword [ebp - 0x898]
xor eax, eax
movups xmmword [ebp - 0x914], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [ebp - 0x904], xmm0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 7
mov word [ecx], ax
lea eax, [ebp - 0x914]
push eax
mov ecx, esi
call fcn.004053d0
mov ecx, dword [ebp - 0x900]
cmp ecx, 7
jbe 0x405138
mov edx, dword [ebp - 0x914]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40512e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
mov byte [ebp - 4], 0x10
mov ecx, dword [ebp - 0x8a0]
cmp ecx, 7
jbe 0x40517c
mov edx, dword [ebp - 0x8b4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x405172
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
cmp dword [esi + 0x14], 7
mov eax, esi
jbe 0x405186
mov eax, dword [esi]
push eax
call dword [ebp - 0x89c]
cmp eax, 0xffffffff
jne 0x4051c9
cmp dword [esi + 0x14], 7
mov eax, esi
jbe 0x40519c
mov eax, dword [esi]
push eax
lea eax, [ebp - 0x220]
push eax
call dword [ebp - 0x87c]
test eax, eax
je 0x4051c9
cmp dword [esi + 0x14], 7
mov eax, esi
jbe 0x4051b8
mov eax, dword [esi]
push 2
push eax
call dword [ebp - 0x884]
test eax, eax
jne 0x405294
mov byte [ebp - 4], 0xf
mov eax, dword [ebp - 0x880]
cmp eax, 7
jbe 0x405207
lea ecx, [eax*2 + 2]
mov eax, edi
cmp ecx, 0x1000
jb 0x4051fd
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edi
call fcn.00439f72
add esp, 8
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0x848]
cmp ecx, 7
jbe 0x40524b
mov edx, dword [ebp - 0x85c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x405241
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
mov esi, dword [ebp - 0x840]
mov eax, 0x2aaaaaab
mov edi, dword [ebp - 0x844]
mov ecx, esi
inc dword [ebp - 0x888]
sub ecx, edi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0x888], eax
jb 0x404f22
lea ecx, [ebp - 0x844]
call fcn.004055f0
mov al, byte [ebp - 0x875]
jmp 0x405326
mov eax, dword [ebp - 0x880]
mov byte [ebp - 0x875], 1
cmp eax, 7
jbe 0x4052d5
lea ecx, [eax*2 + 2]
mov eax, edi
cmp ecx, 0x1000
jb 0x4052cb
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edi
call fcn.00439f72
add esp, 8
mov ecx, dword [ebp - 0x848]
cmp ecx, 7
jbe 0x40527e
mov edx, dword [ebp - 0x85c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x405307
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40534e
push ecx
push edx
call fcn.00439f72
add esp, 8
lea ecx, [ebp - 0x844]
call fcn.004055f0
mov al, byte [ebp - 0x875]
jmp 0x405326
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00439e1a
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.00405860
call fcn.00404a50
call fcn.00423f6f
call fcn.00404af0
int3