Function at 0x10027db
Capabilities:
Check if file exists
Create directory
Get common file path
Get file attributes
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x61c
mov eax, dword [0x1005020]
push esi
push edi
mov dword [ebp - 4], eax
xor esi, esi
xor eax, eax
mov edx, 0x81
mov word [ebp - 0x414], si
mov ecx, edx
lea edi, [ebp - 0x412]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [ebp - 0x61c], si
mov ecx, edx
lea edi, [ebp - 0x61a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [ebp - 0x20c], si
mov ecx, edx
lea edi, [ebp - 0x20a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x414]
push eax
push esi
push esi
push 2
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jl 0x1002ae9
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push ebx
lea eax, [ebp - 0x414]
push eax
call edi
mov esi, 0x104
mov ecx, esi
sub ecx, eax
mov ebx, 0x7fffffff
cmp ecx, ebx
ja 0x1002ae8
push 0x100135c
push ecx
lea eax, [ebp + eax*2 - 0x414]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x10028b8
push 0
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x1002ae8
lea eax, [ebp - 0x414]
push eax
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x1001240
push ecx
lea eax, [ebp + eax*2 - 0x414]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x414]
push eax
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x1005458
push ecx
lea eax, [ebp + eax*2 - 0x414]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x414]
push eax
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x100124c
push ecx
lea eax, [ebp + eax*2 - 0x414]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
push esi
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x1002ae8
lea eax, [ebp - 0x61c]
push eax
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x1001330
push ecx
lea eax, [ebp + eax*2 - 0x61c]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
push 0x1005048
push 0x103
lea eax, [ebp - 0x20a]
push eax
mov word [ebp - 0x20c], 0x22
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x20c]
push eax
call edi
lea ecx, [eax + 1]
cmp ecx, esi
jae 0x10029d1
mov word [ebp + eax*2 - 0x20c], 0x22
mov eax, ecx
cmp word [0x1005250], 0
je 0x1002a3b
lea ecx, [eax + 2]
cmp ecx, esi
jae 0x10029f8
mov word [ebp + eax*2 - 0x20c], 0x20
inc eax
mov word [ebp + eax*2 - 0x20c], 0x22
inc eax
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x1005250
push ecx
lea eax, [ebp + eax*2 - 0x20c]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x20c]
push eax
call edi
lea ecx, [eax + 1]
cmp ecx, esi
jae 0x1002a3b
mov word [ebp + eax*2 - 0x20c], 0x22
mov eax, ecx
lea ecx, [eax + 2]
cmp ecx, esi
jae 0x1002a58
mov word [ebp + eax*2 - 0x20c], 0x20
inc eax
mov word [ebp + eax*2 - 0x20c], 0x22
inc eax
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
ja 0x1002ae8
push 0x1001328
push ecx
lea eax, [ebp + eax*2 - 0x20c]
push eax
call fcn.01001a40
test eax, eax
jl 0x1002ae8
lea eax, [ebp - 0x20c]
push eax
call edi
mov ecx, esi
sub ecx, eax
push ecx
lea eax, [ebp + eax*2 - 0x20c]
push eax
push 9
push dword [0x1005660]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea eax, [ebp - 0x20c]
push eax
call edi
lea ecx, [eax + 2]
cmp ecx, esi
jae 0x1002ac4
add eax, eax
mov word [ebp + eax - 0x20c], 0x22
and word [ebp + eax - 0x20a], 0
push 0x1005048
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x61c]
push eax
push 0x1005458
lea eax, [ebp - 0x414]
push eax
call fcn.01001d5f
pop ebx
mov ecx, dword [ebp - 4]
pop edi
pop esi
call fcn.01004128
leave
ret