Function at 0x10002490
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path
Get file attributes
Move file

Disassembly:
sub esp, 0xa68
push ebx
push ebp
mov ebp, dword [esp + 0xa80]
lea eax, [esp + 0x660]
push esi
push edi
push eax
push 0
push 0
push 0x1c
push 0
mov dword [esp + 0x28], edx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x100028dc
mov esi, dword [esp + 0xa80]
lea eax, [esp + 0x668]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcatW]
push esi
push eax
call ebx
push dword [esp + 0xa84]
lea eax, [esp + 0x66c]
push eax
call ebx
push dword [0x10016824]
lea eax, [esp + 0x66c]
push eax
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
lea eax, [esp + 0x668]
push eax
call edi
cmp eax, 0xffffffff
je 0x100028dc
test al, 0x10
je 0x100028dc
push 0x10017280
lea eax, [esp + 0x464]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push esi
lea eax, [esp + 0x464]
push eax
call ebx
lea eax, [esp + 0x460]
push eax
call edi
cmp eax, 0xffffffff
je 0x1000254e
test al, 0x10
jne 0x1000255e
push 0
lea eax, [esp + 0x464]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push dword [esp + 0xa84]
lea eax, [esp + 0x464]
push eax
call ebx
push 0x10017280
lea eax, [esp + 0x874]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x10017280
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esp + 0x870]
lea esi, [esi + eax*2]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, esi
mov ecx, eax
call fcn.10001290
mov eax, dword [0x1001685c]
mov dword [esp + 0x28], eax
mov eax, dword [0x10016860]
mov dword [esp + 0x2c], eax
mov eax, dword [0x10016864]
mov dword [esp + 0x30], eax
mov eax, dword [0x10016868]
mov dword [esp + 0x34], eax
mov eax, dword [0x1001686c]
mov dword [esp + 0x38], eax
mov eax, dword [0x10016870]
mov dword [esp + 0x3c], eax
mov eax, dword [0x10016874]
mov dword [esp + 0x40], eax
mov eax, dword [0x10016878]
mov dword [esp + 0x44], eax
mov eax, dword [0x1001687c]
mov dword [esp + 0x48], eax
mov eax, dword [0x10016880]
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x460]
push eax
mov dword [esp + 0x28], 0xa
call edi
cmp eax, 0xffffffff
je 0x10002897
test al, 0x10
je 0x10002897
cmp ebp, 1
je 0x1000288b
cmp ebp, 2
jne 0x10002680
push 0
lea eax, [esp + 0x874]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 4
push 0
lea eax, [esp + 0x878]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
push dword [esp + 0xa8c]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x874]
push dword [esp + 0xa80]
push eax
call fcn.100020b0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa68
ret
cmp ebp, 3
jne 0x100026ba
mov esi, dword [esp + 0xa7c]
mov ecx, esi
call fcn.10009a10
push dword [esp + 0xa8c]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x66c]
push esi
push eax
call fcn.100020b0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa68
ret
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [esp + 0x668]
push eax
lea eax, [esp + 0x25c]
push eax
call ebp
lea eax, [esp + 0x460]
push eax
lea eax, [esp + 0x54]
push eax
call ebp
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [esp + 0x258]
push eax
call esi
mov dword [esp + 0x18], eax
lea eax, [esp + 0x50]
push eax
call esi
mov esi, dword [esp + 0x18]
lea edx, [esp + 0x50]
push eax
push esi
lea ecx, [esp + 0x260]
mov dword [esp + 0x18], eax
call fcn.10003d50
add esp, 8
lea eax, [esp + 0x258]
push dword [0x10016838]
push eax
call ebx
push dword [0x10016838]
lea eax, [esp + 0x54]
push eax
call ebx
mov eax, dword [esp + 0x10]
mov ebp, 0x31
mov dword [esp + 0x1c], ebp
lea eax, [esp + eax*2 + 0x62]
mov dword [esp + 0x20], eax
nop dword [eax + eax]
lea eax, [esp + 0x258]
push eax
call edi
cmp eax, 0xffffffff
je 0x1000280e
test al, 0x10
je 0x1000280e
lea eax, [esp + 0x50]
push eax
call edi
cmp eax, 0xffffffff
je 0x1000277b
test al, 0x10
jne 0x10002790
push 0
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x1000280e
push dword [esp + 0x10]
lea edx, [esp + 0x54]
push esi
lea ecx, [esp + 0x260]
call fcn.10003d50
mov ebp, dword [esp + 0x20]
add esp, 8
xor esi, esi
nop
mov eax, dword [esi + 0x1000f2e0]
mov edi, dword [eax*4 + 0x10016730]
lea eax, [esp + 0x258]
push edi
push eax
call ebx
push edi
lea eax, [esp + 0x54]
push eax
call ebx
push 0
lea edx, [esp + 0x54]
lea ecx, [esp + 0x25c]
call fcn.10002330
mov edi, dword [esp + 0x14]
xor eax, eax
add esi, 4
mov word [esp + ebp*2 + 0x25c], ax
add esp, 4
mov word [esp + edi*2 + 0x50], ax
cmp esi, 0x1c
jb 0x100027b0
mov ebp, dword [esp + 0x1c]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [esp + 0x18]
push dword [0x10016828]
xor eax, eax
xor ecx, ecx
mov word [esp + esi*2 + 0x25c], ax
mov eax, dword [esp + 0x14]
mov word [esp + eax*2 + 0x54], cx
lea eax, [esp + 0x25c]
push eax
call ebx
push dword [0x10016828]
lea eax, [esp + 0x54]
push eax
call ebx
mov eax, dword [esp + 0x20]
mov word [esp + esi*2 + 0x26a], bp
mov word [eax], bp
inc ebp
mov dword [esp + 0x1c], ebp
cmp bp, 0x39
jbe 0x10002750
push dword [esp + 0xa8c]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x464]
push dword [esp + 0xa80]
push eax
call fcn.100020b0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa68
ret
lea ecx, [esp + 0x460]
call fcn.10003e60
lea eax, [esp + 0x24]
push eax
lea edx, [esp + 0x464]
lea ecx, [esp + 0x66c]
call fcn.10002330
push dword [esp + 0xa90]
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x468]
push dword [esp + 0xa84]
push eax
call fcn.100020b0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa68
ret
mov edi, dword [esp + 0xa90]
test edi, edi
je 0x10002940
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
add esi, esi
cmp dword [0x1001672c], 0
je 0x10002940
test esi, esi
je 0x10002940
mov ecx, esi
call fcn.100011d0
mov ebx, eax
test ebx, ebx
je 0x10002940
push esi
push edi
push ebx
call section..text
add esp, 0xc
push 0x10016714
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x10016714
mov byte [0x100165fc], 6
mov dword [0x10016601], esi
mov dword [0x100165fd], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xa68
ret