Function at 0x412ab0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea ecx, [ebp - 0x428]
lea esi, [ebp - 0x214]
push ebx
lea ebx, [ebp - 0x41c]
sub esp, 0x43c
mov eax, dword [0x448004]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x4232e8
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
mov dword [esp + 4], 0x104
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetSystemDirectoryW]
xor eax, eax
sub esp, 8
nop
movzx edx, word [ebx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x412b00
cmp word [ebp - 0x214], 0
mov edx, esi
je 0x412b29
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x412b20
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + str.kernel32.dll]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x412b30
mov eax, dword [ebp - 0x428]
mov ecx, 0xb4
mov edx, 0x41c9c8
call fcn.004077e0
mov eax, dword [ebp - 0x428]
lea ecx, [ebp - 0x420]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x422838
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
mov edi, eax
call fcn.00416600
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xb7
xor eax, eax
cmp edi, 0x80004002
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
mov eax, dword [ebp - 0x428]
lea ecx, [ebp - 0x424]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x420368
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
mov edi, eax
mov eax, 0xba
call fcn.00406da0
xor eax, eax
cmp edi, 0x80004002
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
lea edi, [ebp - 0x42a]
mov dword [esp], eax
call fcn.004077c0
mov eax, 0xffffffff
mov word [ebp - 0x42a], ax
mov eax, dword [0x448004]
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x44]
sub esp, 0xc
mov dword [ebp - 0x430], eax
call fcn.00416600
mov edx, dword [ebp - 0x430]
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xbe
xor eax, eax
test edx, edx
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
call fcn.00416600
movsx edx, word [ebp - 0x42a]
mov dword [eax], 0x41b595
test dx, dx
mov dword [eax + 4], 0xbf
sete al
mov dword [esp + 8], edx
movzx eax, al
mov dword [esp + 4], str.got__x_n
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [0x448004]
mov edx, dword [eax]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x44]
sub esp, 0xc
mov dword [ebp - 0x430], eax
mov eax, 0xc2
call fcn.00406da0
mov edx, dword [ebp - 0x430]
xor eax, eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
cmp edx, 0x80004003
mov dword [esp + 8], edx
sete al
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [sym.imp.oleaut32.dll_SysAllocString]
mov dword [esp], str.path
mov dword [ebp - 0x430], eax
call eax
mov ecx, 0xffffffff
mov edx, eax
mov eax, dword [0x448004]
mov word [ebp - 0x42a], cx
sub esp, 4
mov ecx, dword [eax]
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [ebp - 0x438], edx
mov dword [esp], eax
call dword [ecx + 0x44]
sub esp, 0xc
mov dword [ebp - 0x434], eax
call fcn.00416600
mov ecx, dword [ebp - 0x434]
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xc7
xor eax, eax
test ecx, ecx
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
mov eax, 0xc8
call fcn.00406da0
movsx ecx, word [ebp - 0x42a]
mov dword [esp + 4], str.got__x_n
test cx, cx
mov dword [esp + 8], ecx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.004077c0
mov edx, dword [ebp - 0x438]
mov ecx, dword [sym.imp.oleaut32.dll_SysFreeString]
mov dword [esp], edx
mov dword [ebp - 0x434], ecx
call ecx
sub esp, 4
mov dword [esp], esi
mov eax, dword [ebp - 0x430]
call eax
mov edx, eax
xor eax, eax
sub esp, 4
mov word [ebp - 0x42a], ax
mov eax, dword [0x448004]
mov ecx, dword [eax]
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [ebp - 0x43c], edx
mov dword [esp], eax
call dword [ecx + 0x44]
sub esp, 0xc
mov dword [ebp - 0x438], eax
mov eax, 0xce
call fcn.00406da0
mov ecx, dword [ebp - 0x438]
xor eax, eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
test ecx, ecx
mov dword [esp + 8], ecx
sete al
mov dword [esp], eax
call fcn.004077c0
mov eax, 0xcf
call fcn.00406da0
movsx ecx, word [ebp - 0x42a]
mov dword [esp + 4], str.got__x_n
cmp cx, 0xffff
mov dword [esp + 8], ecx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.004077c0
mov edx, dword [ebp - 0x43c]
mov dword [esp], edx
mov ecx, dword [ebp - 0x434]
call ecx
sub esp, 4
mov dword [esp], ebx
mov eax, dword [ebp - 0x430]
call eax
mov edx, eax
mov eax, 0xffffffff
sub esp, 4
mov word [ebp - 0x42a], ax
mov eax, dword [0x448004]
mov ecx, dword [eax]
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [ebp - 0x43c], edx
mov dword [esp], eax
call dword [ecx + 0x44]
sub esp, 0xc
mov dword [ebp - 0x438], eax
mov eax, 0xd5
call fcn.00406da0
mov ecx, dword [ebp - 0x438]
xor eax, eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
test ecx, ecx
mov dword [esp + 8], ecx
sete al
mov dword [esp], eax
call fcn.004077c0
mov eax, 0xd6
call fcn.00406da0
movsx ecx, word [ebp - 0x42a]
mov dword [esp + 4], str.got__x_n
test cx, cx
mov dword [esp + 8], ecx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.004077c0
mov edx, dword [ebp - 0x43c]
mov dword [esp], edx
mov ecx, dword [ebp - 0x434]
call ecx
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov dword [ebp - 0x438], eax
call fcn.00416600
mov edx, dword [ebp - 0x438]
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xdb
xor eax, eax
cmp edx, 0x80004003
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
mov dword [esp], ebx
mov eax, dword [ebp - 0x430]
call eax
mov ebx, eax
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov dword [ebp - 0x438], eax
call fcn.00416600
mov edx, dword [ebp - 0x438]
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xdf
xor eax, eax
test edx, edx
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
mov eax, 0xe0
call fcn.00406da0
mov dword [esp + 4], str.Folder_doesnt_exists_n
xor eax, eax
cmp word [ebp - 0x42a], 0xffff
sete al
mov dword [esp], eax
call fcn.004077c0
mov dword [esp], ebx
mov ecx, dword [ebp - 0x434]
call ecx
sub esp, 4
mov dword [esp], str.c:Nonexistent
mov eax, dword [ebp - 0x430]
call eax
mov ebx, eax
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov dword [ebp - 0x438], eax
call fcn.00416600
mov edx, dword [ebp - 0x438]
mov dword [eax], 0x41b595
mov dword [eax + 4], 0xe5
xor eax, eax
test edx, edx
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.Unexpected_hr__lx._n
call fcn.004077c0
mov eax, 0xe6
call fcn.00406da0
mov dword [esp + 4], str.Folder_exists_n
xor eax, eax
cmp word [ebp - 0x42a], 0
sete al
mov dword [esp], eax
call fcn.004077c0
mov dword [esp], ebx
mov ecx, dword [ebp - 0x434]
call ecx
sub esp, 4
mov dword [esp], esi
mov eax, dword [ebp - 0x430]
call eax
mov ebx, eax
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov esi, eax
mov eax, 0xeb
call fcn.00406da0
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
mov eax, 0xec
call fcn.00406da0
mov dword [esp + 4], str.Folder_exists_n
xor eax, eax
cmp word [ebp - 0x42a], 0
sete al
mov dword [esp], eax
call fcn.004077c0
mov dword [esp], ebx
mov ecx, dword [ebp - 0x434]
call ecx
mov eax, dword [ebp - 0x428]
sub esp, 4
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret