Function at 0x405640
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x4396d3
mov eax, dword fs:[0]
push eax
sub esp, 0x254
mov eax, dword [0x449f18]
xor eax, esp
mov dword [esp + 0x250], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x449f18]
xor eax, esp
push eax
lea eax, [esp + 0x268]
mov dword fs:[0], eax
mov ebp, ecx
push 1
lea ecx, [ebp + 0xf74]
call fcn.0041996b
push 1
lea ecx, [ebp + 0xfc8]
call fcn.0041996b
push 1
lea ecx, [ebp + 0xec0]
call fcn.0041996b
push 0x409
mov ecx, ebp
call fcn.00419789
call fcn.00419aa0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4056ca
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
mov dword [esp + 0x270], 0
call fcn.00419aa0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4056ff
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x270], 1
call fcn.00419aa0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405731
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0x270], 2
call fcn.00419aa0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405763
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [esp + 0x18], ebx
mov byte [esp + 0x270], 3
call fcn.00419aa0
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405795
push 0x80004005
call fcn.00401000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x270], 4
call fcn.0041d39e
lea ecx, [esp + 0x5c]
push ecx
push 0x104
mov byte [esp + 0x278], 5
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [esp + 0x5c]
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4057d3
mov edx, dword [str._ddinstall_]
mov ecx, dword [0x43d4e4]
mov dword [eax], edx
mov edx, dword [0x43d4e8]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
xor eax, eax
jmp 0x405800
mov cl, byte [esp + eax + 0x5c]
mov byte [esp + eax + 0x160], cl
inc eax
test cl, cl
jne 0x405800
lea edi, [esp + 0x160]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405818
mov eax, dword [0x43d4dc]
lea ecx, [esp + 0x44]
mov dword [edi], eax
call fcn.0041def5
push 0
lea ecx, [esp + 0x164]
push ecx
lea ecx, [esp + 0x4c]
mov byte [esp + 0x278], 6
call fcn.0041df8a
test eax, eax
je 0x4058b4
nop
lea ecx, [esp + 0x44]
call fcn.0041dbe2
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x48]
mov esi, eax
call fcn.0041e1c4
mov edx, dword [esp + 0x1c]
cmp dword [edx - 0xc], 0
jl 0x405894
push str..lic
push edx
call fcn.00425098
mov edx, dword [esp + 0x24]
add esp, 8
test eax, eax
je 0x405894
sub eax, edx
cmp eax, 0xffffffff
jg 0x405acc
lea eax, [edx - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4058b0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
jne 0x405850
mov eax, 1
mov dword [ebp + 0xf14], eax
mov dword [0x44b474], 2
mov dword [0x44b470], eax
push ebx
push 0x3ee
mov ecx, ebp
call fcn.004197dc
push 0
lea ecx, [ebp + 0x5fc]
call fcn.0041996b
push 0
lea ecx, [ebp + 0x650]
call fcn.0041996b
push 0
lea ecx, [ebp + 0x6a4]
call fcn.0041996b
push 0
lea ecx, [ebp + 0x6f8]
call fcn.0041996b
push 0
lea ecx, [ebp + 0x1024]
call fcn.0041996b
push 1
lea ecx, [ebp + 0x1084]
call fcn.0041996b
push 1
push 0x40a
mov ecx, ebp
call fcn.00419789
mov ecx, eax
call fcn.0041996b
push 1
lea ecx, [ebp + 0x74]
call fcn.004199ad
push 1
lea ecx, [ebp + 0xcc]
call fcn.0041996b
push 1
lea ecx, [ebp + 0x184]
call fcn.0041996b
lea esi, [ebp + 0x120]
push 0xffffff
mov ecx, esi
mov dword [0x44b474], 2
call fcn.004011d0
push 1
mov ecx, esi
call fcn.0041996b
mov edx, dword [ebp + 0x1a4]
push 0
push 0
push 0xf1
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
push str.Accept
push 0x3ea
mov ecx, ebp
call fcn.004197dc
push 0
lea ecx, [ebp + 0x1d8]
call fcn.004199ad
lea ecx, [esp + 0x44]
mov byte [esp + 0x270], 5
call fcn.0041df1b
lea ecx, [esp + 0x30]
mov byte [esp + 0x270], 4
call fcn.0041d7a8
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x270], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405a05
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x270], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405a29
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x270], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405a51
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x270], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405a79
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov dword [esp + 0x270], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405aa4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x268]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.00423763
add esp, 0x260
ret
mov eax, edx
mov esi, edx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405ad0
lea edi, [esp + 0x5c]
sub eax, esi
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x405ae0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [edx - 0x10]
rep movsb byte es:[edi], byte [esi]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405b12
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
push 2
lea ecx, [esp + 0x64]
push ecx
lea ecx, [esp + 0x3c]
call fcn.0041d3b6
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x34]
call fcn.0041d8c3
test eax, eax
je 0x4058ce
mov bl, 7
lea esp, [esp]
mov eax, dword [esp + 0x14]
push 0x43cf63
push eax
call fcn.00423ae2
add esp, 8
test eax, eax
sete al
test al, al
je 0x405b89
push str._r_n_r_n
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.00402a60
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x274], bl
call fcn.004017c0
mov eax, dword [esp + 0x1c]
jmp 0x405bb6
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.00404da0
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x274], 8
call fcn.004017c0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x270], 6
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405bda
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x34]
call fcn.0041d8c3
test eax, eax
jne 0x405b40
mov ebx, dword [esp + 0x18]
jmp 0x4058ce