Function at 0x40a740
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45ce4b
mov eax, dword fs:[0]
push eax
sub esp, 0x68c
mov eax, dword [0x49cf34]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
push 0x45e8f8
mov dword [ebp - 0x644], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x40a998
mov eax, dword [0x45e8f4]
mov edx, dword [0x45e8f0]
mov ecx, dword [str.WdneppAhtaP]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x1c], ecx
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40a7b0
sub eax, edx
lea ecx, [ebp - 0x1c]
lea eax, [ebp + eax - 0x1c]
mov edx, ecx
cmp edx, eax
je 0x40a7d8
dec eax
cmp ecx, eax
je 0x40a7d8
mov dl, byte [ecx]
mov bl, byte [eax]
mov byte [ecx], bl
inc ecx
mov byte [eax], dl
cmp ecx, eax
jne 0x40a7c6
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea eax, [ebp - 0x1c]
push eax
push 0x45e8e0
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call esi
push 0x45e8cc
push 0x45e8e0
mov edi, eax
call ebx
push eax
call esi
push 0x45e8bc
push str.Kernel32.dll
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call esi
mov esi, eax
test esi, esi
je 0x43c998
test edi, edi
je 0x43c998
test ebx, ebx
je 0x43c998
push 0x40
lea ecx, [ebp - 0x694]
push 0
push ecx
call fcn.0044fd70
xor eax, eax
xor edx, edx
push 0x206
mov word [ebp - 0x668], dx
push eax
lea edx, [ebp - 0x22a]
xor ecx, ecx
push edx
mov dword [ebp - 0x698], 0x44
mov dword [ebp - 0x654], eax
mov dword [ebp - 0x650], eax
mov dword [ebp - 0x64c], eax
mov dword [ebp - 0x648], eax
mov word [ebp - 0x22c], cx
call fcn.0044fd70
add esp, 0x18
push 0
push 0x25
lea eax, [ebp - 0x22c]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea edx, [ebp - 0x24]
push edx
lea eax, [ebp - 0x22c]
push eax
mov dword [ebp - 0x24], 0x65006e
mov dword [ebp - 0x20], 0x74
call edi
push 0
lea ecx, [ebp - 0x22c]
push ecx
call ebx
xor edx, edx
push 0x40e
push edx
lea eax, [ebp - 0x63a]
push eax
mov word [ebp - 0x63c], dx
call fcn.0044fd70
add esp, 0xc
push str.__s__AAA___s_
lea ecx, [ebp - 0x640]
call fcn.00406390
push str.start
push str.AAA
lea ecx, [ebp - 0x640]
mov dword [ebp - 4], 0
call fcn.0040a420
mov ecx, dword [ebp - 0x644]
mov eax, dword [ebp - 0x640]
push ecx
lea edx, [ebp - 0x22c]
push edx
push eax
lea ecx, [ebp - 0x63c]
push 0x208
push ecx
call fcn.00450e34
add esp, 0x14
lea edx, [ebp - 0x654]
push edx
lea eax, [ebp - 0x698]
push eax
push 0
push 0
push 0x8000000
push 0
push 0
push 0
lea ecx, [ebp - 0x63c]
push ecx
lea edx, [ebp - 0x22c]
push edx
call esi
mov eax, dword [ebp - 0x640]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x43c998
add byte [ebx + 0x50118b08], cl
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x43c998
rol byte [edx], cl
popfd
js 0x40a9f0
xor ebp, dword [esi]
wait
lodsb al, byte [esi]
pop ds
mov ebp, 0xfda76e2e
sub eax, 0xa544c775
push 0x10
xor edi, eax
mov ebx, dword [eax - 0x6f]
cmp ch, byte [edi - 0x7b497c50]
xchg esi, eax
fcmovne st(0), st(7)
sbb al, 0x6c
lds ecx, [esi]
test al, 0x29
stosd dword es:[edi], eax
inc esi
or dword [edi + 0x58], 0x25
jb 0x40a9e7
pop eax
and eax, 0xa5d1d72
sub al, byte [0x601216b3]
pop ebp
or ch, byte [edx]
add eax, 0x601216b3
mov dword [0xe3614b86], eax
inc eax
dec ebx
popal
jecxz 0x40aa18
out dx, al
inc edi
add ch, byte [ebx - 0x3bfa286c]
sbb al, 0xa
push ebx
outsd dx, dword [esi]
test al, 3
into
or ch, cl
inc ebx
inc ebx
dec eax
popfd
and byte [edi - 0x4a2c8cab], al
jl 0x40a988
push ebp
jae 0x40a9c6
mov ch, 0x7c
xchg edx, eax
add cl, dl
xchg ebp, eax
jle 0x40a9d4
mov dh, 0xc4
pop ebp
cmp ch, ah
nop
sub bh, byte [ebp + 0x4f]
out 0xab, eax
test al, 4
bound esp, qword [ebx + 0x4acb08be]
imul esp, dword [edx - 0x23], 0xfffffffa
ljmp 0x37d
add esp, dword [ecx - 0x1b4c6ad7]
movsb byte es:[edi], byte [esi]
cwde
invalid
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0044fd61
mov esp, ebp
pop ebp
ret