Function at 0x1002c5c5
Capabilities:
Get common file path
Set current directory

Disassembly:
sub esp, 0x33c
mov eax, dword [0x102bff3c]
xor eax, esp
mov dword [esp + 0x338], eax
push ebx
push ebp
push esi
mov esi, dword [esp + 0x34c]
push edi
mov eax, dword [section..data]
mov ebp, section..data
mov ebx, 0x10238268
cmp eax, ebp
je 0x1002c60e
test byte [eax + 0x1c], 1
je 0x1002c60e
push ebx
push 0x40
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.1001c92e
add esp, 0x10
mov eax, dword [esp + 0x354]
and dword [esp + 0x14], 0
mov dword [0x102cb054], eax
mov eax, dword [esp + 0x35c]
mov dword [0x102cb058], eax
mov eax, dword [esp + 0x358]
mov dword [0x102cb05c], eax
xor eax, eax
mov word [esp + 0x13c], ax
cmp dword [0x102cb098], eax
je 0x1002c78e
lea eax, [esp + 0x13c]
push eax
push 0x105
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x1002c78e
cmp dword [0x102cadf0], 0
je 0x1002c7a9
cmp word [0x102cb0a8], 0
je 0x1002c6ab
mov eax, dword [section..data]
cmp eax, ebp
je 0x1002c69f
test byte [eax + 0x1c], 1
je 0x1002c69f
push ebx
push 0x41
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.1001c92e
add esp, 0x10
push dword [0x102cadf4]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp dword [0x102cb050], 0
lea eax, [esp + 0x10]
je 0x1002c6f5
push 0x13
push eax
call fcn.10030331
pop ecx
pop ecx
push 0x10237ab8
mov ecx, eax
call fcn.10027cc7
neg eax
sbb al, al
inc al
movzx eax, al
push eax
lea eax, [esp + 0x18]
push eax
call fcn.1002c273
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.1000dde0
jmp 0x1002c7a9
push 0x285d
push eax
call fcn.10030331
pop ecx
pop ecx
mov byte [esp + 0x1c], 0
mov ecx, dword [eax]
lea eax, [esp + 0x14]
push ecx
push esi
sub esp, 0x20
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
lea esi, [esp + 0x48]
mov ecx, esp
mov dword [esp + 0x50], eax
sub esp, 0xc
mov dword [esp + 0x54], fcn.1002c273
mov edi, esp
and dword [ecx], 0
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call fcn.1002d444
lea ecx, [esp + 0x54]
call fcn.1000dee0
mov ecx, dword [esp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.1000dde0
push dword [0x102cb060]
lea ecx, [esp + 0x30]
call fcn.1000e510
sub esp, 0x20
mov ecx, esp
push 0
and dword [ecx], 0
call fcn.1002d4a5
lea ecx, [esp + 0x4c]
call fcn.1002db86
push 0
lea ecx, [esp + 0x30]
call fcn.1000e2b0
lea ecx, [esp + 0x2c]
call fcn.1000e400
jmp 0x1002c7a9
push 0x10
push 0x10237a68
push 0x10237a90
push esi
call dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [esp + 0x14], 0xe
cmp word [esp + 0x13c], 0
je 0x1002c7c2
lea eax, [esp + 0x13c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
call fcn.10012120
push eax
lea ecx, [esp + 0x14]
call fcn.1000dd90
push dword [esp + 0x14]
lea eax, [esp + 0x14]
push 0x10237abc
push eax
call fcn.10020be8
mov esi, dword [esp + 0x1c]
push esi
push 0xa
call fcn.1002a53c
add esp, 0x14
push dword [esp + 0x14]
push 0x10237ac8
push 0xa
call fcn.1002a528
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
pop ecx
push eax
call edi
add esp, 0xc
push 0
push 0x10237ad0
push 0xc
call fcn.1002a528
pop ecx
push eax
call edi
add esp, 0xc
mov eax, dword [section..data]
cmp eax, ebp
je 0x1002c845
test byte [eax + 0x1c], 1
je 0x1002c845
push ebx
push 0x42
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.1001c92e
add esp, 0x10
lea ecx, [esi - 0x10]
call fcn.1000dde0
mov ecx, dword [esp + 0x348]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.101b70aa
add esp, 0x33c
ret