Function at 0x421be0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x59729b
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x60f520]
xor eax, esp
push eax
lea eax, [esp + 0x48]
mov dword fs:[0], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], 0
mov eax, dword [ecx]
push ecx
call dword [eax + 0xb0]
mov edx, eax
lea ecx, [esp + 0x3c]
call fcn.004250e0
mov edi, dword [esp + 0x40]
add esp, 4
mov ebx, dword [esp + 0x38]
mov eax, edi
sub eax, ebx
test eax, 0xfffffffc
jne 0x421c8e
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
push eax
call dword [sym.imp.ole32.dll_OleGetClipboard]
test eax, eax
jne 0x421c8e
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x421c8e
push ecx
lea edx, [esp + 0x3c]
call fcn.00425810
mov ebx, dword [esp + 0x3c]
add esp, 4
mov edi, dword [esp + 0x3c]
push 2
call fcn.00422b20
mov ecx, eax
call fcn.00484d30
call fcn.0040bce0
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x421cb8
push 0x80004005
call fcn.0040c390
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [esp + 0x14], esi
push 2
mov byte [esp + 0x54], 1
call fcn.00422b20
mov ecx, eax
call fcn.00484d30
mov ecx, edi
xor eax, eax
sub ecx, ebx
mov dword [esp + 0x18], eax
sar ecx, 2
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x421eea
mov edi, dword [ebx + eax*4]
push ecx
mov dword [esp + 0x24], esp
mov ecx, dword [edi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [edi - 4], 0
lea edx, [edi - 4]
mov ecx, eax
jl 0x421d20
cmp ecx, dword [edi - 0x10]
jne 0x421d20
lea ebx, [edi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x421d59
mov eax, dword [ecx]
push 2
push dword [edi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x421fbc
mov ecx, dword [edi - 0xc]
mov dword [ebx + 4], ecx
mov ecx, dword [edi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push edi
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.00551ae9
add esp, 0x10
mov ecx, dword [esp + 0x24]
lea eax, [ebx + 0x10]
mov dword [ecx], eax
lea ecx, [esp + 0x28]
call fcn.00425200
add esp, 4
mov byte [esp + 0x50], 2
lea edi, [esi - 0x10]
mov edx, dword [eax]
lea ecx, [edx - 0x10]
cmp ecx, edi
je 0x421dc3
cmp dword [edi + 0xc], 0
lea esi, [edi + 0xc]
jl 0x421db2
mov eax, dword [ecx]
cmp eax, dword [edi]
jne 0x421db2
call fcn.0040c3c0
mov ebx, eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x421da9
mov ecx, dword [edi]
push edi
mov edx, dword [ecx]
call dword [edx + 4]
lea esi, [ebx + 0x10]
mov dword [esp + 0x14], esi
jmp 0x421dc3
push dword [edx - 0xc]
lea ecx, [esp + 0x18]
push edx
call fcn.0040c1c0
mov esi, dword [esp + 0x14]
mov byte [esp + 0x50], 1
or ecx, 0xffffffff
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x421de6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0x13c]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
push eax
push ecx
mov ecx, dword [esi - 0x10]
mov dword [esp + 0x3c], 2
mov dword [esp + 0x34], esp
mov dword [esp + 0x28], esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x421e32
cmp ecx, dword [esi - 0x10]
jne 0x421e32
lea ebx, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x421e6b
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x421fbc
mov ecx, dword [esi - 0xc]
mov dword [ebx + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.00551ae9
add esp, 0x10
mov ecx, dword [esp + 0x28]
lea eax, [ebx + 0x10]
mov dword [ecx], eax
mov byte [esp + 0x58], 3
mov edi, dword [0x64041c]
test edi, edi
jne 0x421ec7
push 0xc
call fcn.00551c81
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
test edi, edi
je 0x421eba
mov byte [esp + 0x58], 5
mov dword [edi], 0x5c377c
mov dword [edi + 4], 0
mov dword [edi + 8], 0
call fcn.00449b60
mov dword [edi + 4], eax
jmp 0x421ebc
xor edi, edi
mov byte [esp + 0x58], 3
mov dword [0x64041c], edi
mov ecx, edi
mov byte [esp + 0x58], 1
call fcn.00484b80
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x38]
inc eax
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x28]
jb 0x421cf2
call fcn.0040bce0
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x421f06
push 0x80004005
call fcn.0040c390
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [esp + 0x18], edi
mov byte [esp + 0x50], 6
mov ecx, 1
mov eax, dword [edi - 8]
sub ecx, dword [edi - 4]
sub eax, 0x104
or ecx, eax
jge 0x421f3f
push 0x104
lea ecx, [esp + 0x1c]
call fcn.0040c110
mov edi, dword [esp + 0x18]
push 0
push 0x10
push edi
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push dword [edi - 8]
push edi
call fcn.00551cd2
add esp, 8
test eax, eax
js 0x422098
cmp eax, dword [edi - 8]
jg 0x422098
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0xb0]
add edi, 0xfffffff0
mov dword [esp + 0x24], eax
push ecx
mov dword [esp + 0x2c], esp
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 0x10]
cmp dword [edi + 0xc], 0
lea edx, [edi + 0xc]
mov ecx, eax
jl 0x421fad
cmp ecx, dword [edi]
jne 0x421fad
mov ebx, edi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x421fea
mov eax, dword [ecx]
push 2
push dword [edi + 4]
call dword [eax]
mov ebx, eax
test ebx, ebx
jne 0x421fc1
call fcn.0040c3b0
mov eax, dword [edi + 4]
mov dword [ebx + 4], eax
mov ecx, dword [edi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.00551ae9
add esp, 0x10
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + 0x10]
mov dl, byte [ebp + 8]
mov dword [ecx], eax
mov ecx, dword [esp + 0x28]
call fcn.00424940
add esp, 4
mov byte [esp + 0x50], 1
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42201e
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [esp + 0x50], 0
or ecx, 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42203d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x50], 0xffffffff
mov edi, dword [esp + 0x38]
test edi, edi
je 0x422083
mov ebx, dword [esp + 0x3c]
mov esi, edi
cmp edi, ebx
je 0x42207a
mov edx, dword [esi]
or ecx, 0xffffffff
sub edx, 0x10
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x422073
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x422057
push edi
call fcn.00551995
add esp, 4
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x80070057
call fcn.0040c390
int3