Function at 0x10029370
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1005107c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x310
mov eax, dword [0x1006099c]
push ebx
xor ebx, ebx
push esi
mov dword [esp + 0x310], eax
push edi
mov dword [esp + 0xc], ecx
mov dword [esp + 0xe0], 0xf
mov dword [esp + 0xdc], ebx
mov byte [esp + 0xcc], bl
push 0x40
lea eax, [esp + 0xcc]
push eax
mov dword [esp + 0x32c], ebx
call fcn.10028d90
push 0x104
lea ecx, [esp + 0x104]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea edi, [esp + 0x100]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x100293f0
mov eax, dword [esp + 0xe0]
mov dx, word [0x100537f4]
cmp eax, 0x10
mov eax, dword [esp + 0xcc]
mov word [edi], dx
jae 0x1002941c
lea eax, [esp + 0xcc]
mov edx, eax
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x10029420
lea edi, [esp + 0x100]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x10029431
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [esp + 0x100]
rep movsb byte es:[edi], byte [esi]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x10029453
sub eax, edx
push eax
lea eax, [esp + 0x104]
push eax
lea ecx, [esp + 0xd0]
call fcn.10001f80
push 1
lea ecx, [esp + 0x34]
call fcn.1000e510
mov eax, dword [esp + 0xe0]
mov esi, 0x10
cmp eax, esi
mov eax, dword [esp + 0xcc]
mov byte [esp + 0x324], 1
jae 0x100294a2
lea eax, [esp + 0xcc]
push 0x1b6
push 0x12
push eax
lea ecx, [esp + 0x40]
call fcn.10006680
test eax, eax
jne 0x100294db
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + 4]
mov eax, dword [esp + ecx + 0x38]
mov edx, dword [esp + ecx + 0x58]
lea ecx, [esp + ecx + 0x30]
or eax, 2
cmp edx, ebx
jne 0x100294d4
or eax, 4
push ebx
push eax
call fcn.1003e67a
cmp dword [esp + 0x8c], ebx
je 0x100295de
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0x208]
rep stosd dword es:[edi], eax
push 0x100
lea edx, [esp + 0x20c]
stosb byte es:[edi], al
mov eax, dword [0x100a1ce8]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov edi, 0xf
lea eax, [esp + 0x208]
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf8], ebx
mov byte [esp + 0xe8], bl
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x10029536
sub eax, ecx
push eax
lea ecx, [esp + 0x20c]
push ecx
lea ecx, [esp + 0xec]
call fcn.10001f80
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x108]
mov dword [ecx + 0x18], edi
mov dword [ecx + 0x14], ebx
push edx
mov byte [esp + 0x34c], 2
mov byte [ecx + 4], bl
call fcn.10001e90
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x30]
push eax
call fcn.100286a0
push eax
lea ecx, [esp + 0x34]
push ecx
mov byte [esp + 0x32c], 3
call fcn.1000e120
push eax
call fcn.1000e4f0
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp eax, esi
jb 0x100295bd
mov edx, dword [esp + 0x18]
push edx
call fcn.10036530
add esp, 4
cmp dword [esp + 0xfc], esi
mov byte [esp + 0x324], 1
jb 0x100295de
mov eax, dword [esp + 0xe8]
push eax
call fcn.10036530
add esp, 4
lea ecx, [esp + 0x34]
call fcn.100070a0
test eax, eax
jne 0x1002960f
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + 4]
mov eax, dword [esp + ecx + 0x38]
mov edx, dword [esp + ecx + 0x58]
lea ecx, [esp + ecx + 0x30]
or eax, 2
cmp edx, ebx
jne 0x10029608
or eax, 4
push ebx
push eax
call fcn.1003e67a
lea ecx, [esp + 0x90]
mov byte [esp + 0x324], bl
call fcn.10008f60
lea ecx, [esp + 0x90]
mov dword [esp + 0x90], 0x10055508
call fcn.1003e590
cmp dword [esp + 0xe0], esi
jb 0x10029652
mov edx, dword [esp + 0xcc]
push edx
call fcn.10036530
add esp, 4
mov ecx, dword [esp + 0x31c]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x314]
call fcn.1003fd01
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret