Function at 0x403610
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x569c87
mov eax, dword fs:[0]
push eax
sub esp, 0x224
mov eax, dword [0x5c911c]
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
lea ecx, [ebp - 0x22c]
call fcn.00402500
push 0x4031f0
lea ecx, [ebp - 0x22c]
mov dword [ebp - 4], 0
call fcn.004029b0
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.005497d0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0
push 0x1a
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
call fcn.0041c065
mov ecx, eax
test ecx, ecx
je 0x40387f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 1
push eax
lea ecx, [ebp - 0x21c]
call fcn.00403450
test al, al
jne 0x4036f2
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4036d0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x21c]
call fcn.004029c0
mov eax, dword [ebp - 0x21c]
mov byte [ebp - 4], 2
mov edx, dword [eax - 0xc]
lea ecx, [edx - 1]
test ecx, ecx
js 0x403875
cmp ecx, edx
jg 0x403875
cmp word [eax + ecx*2], 0x5c
je 0x403731
cmp word [eax + edx*2 - 2], 0x2f
je 0x403731
push 0x578650
lea ecx, [ebp - 0x21c]
call fcn.004030a0
push str.MicrosoftWindowsCookies_
lea ecx, [ebp - 0x21c]
call fcn.004030a0
push 1
push ecx
mov esi, esp
mov dword [ebp - 0x230], esp
mov dword [ebp - 0x220], esi
call fcn.0041c065
mov ecx, eax
test ecx, ecx
je 0x403889
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
push str.kingsoft.txt
mov ecx, esi
mov byte [ebp - 4], 3
call fcn.00403450
test al, al
jne 0x40378d
push 0xe
push str.kingsoft.txt
mov ecx, esi
call fcn.004029c0
push ecx
mov dword [ebp - 0x220], esp
mov esi, dword [ebp - 0x21c]
add esi, 0xfffffff0
mov byte [ebp - 4], 4
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
mov ecx, eax
lea eax, [esi + 0xc]
jl 0x4037be
cmp ecx, dword [esi]
jne 0x4037be
mov edi, esi
lock inc dword [eax]
jmp 0x403819
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edi, eax
test edi, edi
je 0x403893
mov eax, dword [esi + 4]
lea ebx, [esi + 0x10]
mov dword [edi + 4], eax
lea ecx, [edi + 0x10]
mov eax, dword [esi + 4]
inc eax
add eax, eax
je 0x403819
test ecx, ecx
je 0x403809
push eax
test ebx, ebx
je 0x4037fa
push ebx
push ecx
call fcn.00549930
add esp, 0xc
jmp 0x403819
push 0
push ecx
call fcn.005497d0
add esp, 0xc
test ebx, ebx
jne 0x403819
call fcn.0054fd74
mov dword [eax], 0x16
call fcn.0054fcb7
mov ecx, dword [ebp - 0x220]
lea eax, [edi + 0x10]
mov dword [ecx], eax
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 2
call fcn.00402b20
mov byte [ebp - 4], 0
lea ecx, [esi + 0xc]
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x40384e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x22c]
call fcn.00401c50
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.00547e39
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.004026b0
push 0x80004005
call fcn.004026b0
push 0x80004005
call fcn.004026b0
call fcn.00402b10
int3