Function at 0x415400
Capabilities:
Get common file path
Read file on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44d840
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x102c
call fcn.004290f0
mov eax, dword [0x4672b4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, dword [ebp + 8]
mov dword [ebp - 0x103c], edi
mov eax, dword [0x469ee4]
mov esi, dword [eax + 0x14]
mov esi, dword [esi + 0x39aac]
mov ebx, dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [ebp - 0x102c], esi
mov eax, dword [eax + 0x14]
cmp esi, dword [eax + 0x39ab0]
je 0x4159c3
lea eax, [ebp - 0x21c]
push eax
push esi
call fcn.0041f2f0
add esp, 8
test eax, eax
jne 0x41549b
push 0x7d0
push 0x468908
push 0x28
push dword [0x469abc]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x65
jmp 0x41597d
mov dword [ebp - 0x101c], 0
push 0x451a00
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x101c]
push eax
call fcn.00431515
add esp, 0xc
test eax, eax
je 0x4154e6
push 0x7d0
push 0x468908
push 0x28
push dword [0x469abc]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0xc9
jmp 0x41597d
push 0
push 0x3c
push dword [ebp - 0x101c]
call fcn.00437536
mov dword [ebp - 0x1028], 0
push dword [ebp - 0x101c]
push 1
push 4
lea eax, [ebp - 0x1028]
push eax
call fcn.004371cc
push 0
push dword [ebp - 0x1028]
push dword [ebp - 0x101c]
call fcn.00437536
push dword [ebp - 0x101c]
push 1
push 4
lea eax, [ebp - 0x1028]
push eax
call fcn.004371cc
add esp, 0x38
push dword [ebp - 0x101c]
cmp dword [ebp - 0x1028], 0x4550
je 0x41557d
call fcn.00436f80
add esp, 4
push 0x7d0
push 0x468908
push 0x28
push dword [0x469abc]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0xca
jmp 0x41597d
push 0x14
push 1
lea eax, [ebp - 0x1018]
push eax
call fcn.004371cc
mov dword [ebp - 0x1028], eax
push dword [ebp - 0x101c]
call fcn.00436f80
add esp, 0x14
cmp dword [ebp - 0x1028], 0x14
je 0x4155cc
push 0x7d0
push 0x468908
push 0x28
push dword [0x469abc]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0xcb
jmp 0x41597d
mov ax, word [ebp - 0x1018]
mov ecx, 0x14c
cmp ax, cx
jne 0x4155e6
mov byte [ebp - 0x101d], 0
jmp 0x4155fb
mov ecx, 0x8664
cmp ax, cx
jne 0x415960
mov byte [ebp - 0x101d], 1
mov dword [ebp - 0x1030], 0
lea eax, [ebp - 0x1030]
push eax
push str.IsWow64Process
push str.Kernel32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00423070
add esp, 0xc
cmp byte [ebp - 0x101d], 0
je 0x415800
mov eax, dword [ebp - 0x1030]
mov dword [ebp - 0x1024], eax
test eax, eax
je 0x415675
mov dword [ebp - 0x101c], 0
lea eax, [ebp - 0x101c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [ebp - 0x1024]
test eax, eax
je 0x4159b3
cmp dword [ebp - 0x101c], 0
je 0x4159b3
mov dword [ebp - 0x101c], 0
mov dword [ebp - 0x1034], 0
lea eax, [ebp - 0x101c]
push eax
push str.Wow64DisableWow64FsRedirection
push str.Kernel32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00423070
add esp, 0xc
lea eax, [ebp - 0x1034]
push eax
push str.Wow64RevertWow64FsRedirection
push str.Kernel32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00423070
lea eax, [ebp - 0x21c]
push eax
push 0x104
lea eax, [ebp - 0x424]
push eax
call fcn.0042f9f7
add esp, 0x18
lea eax, [ebp - 0x424]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x4157e4
mov dword [ebp - 0x1024], 7
mov dword [ebp - 0x102c], 0
mov eax, dword [ebp - 0x101c]
test eax, eax
je 0x41571d
lea ecx, [ebp - 0x102c]
push ecx
call eax
push 1
push 0x25
lea eax, [ebp - 0xdfc]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x41576b
push str.regsvr32.exe
lea eax, [ebp - 0xdfc]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x424]
push eax
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0xdfc]
push eax
call fcn.00414790
add esp, 0xc
mov dword [ebp - 0x1024], eax
jmp 0x4157ac
push 0x192
lea eax, [ebp - 0x21c]
push eax
push 0x28
call fcn.00401780
add esp, 4
push eax
lea eax, [ebp - 0xbf4]
push eax
call fcn.0040b120
add esp, 0x10
cmp byte [0x469cd8], 0
jne 0x4157ac
push 0
call fcn.00414730
push eax
lea eax, [ebp - 0xbf4]
push eax
push edi
call ebx
mov eax, dword [ebp - 0x1034]
test eax, eax
je 0x4157be
push dword [ebp - 0x102c]
call eax
mov eax, dword [ebp - 0x1024]
test eax, eax
je 0x4159b3
push eax
lea eax, [ebp - 0x21c]
push eax
push 0x28
call fcn.00401780
add esp, 4
push eax
jmp 0x415989
push 0x193
lea eax, [ebp - 0x21c]
push eax
push 0x28
call fcn.00401780
add esp, 4
push eax
jmp 0x415989
lea eax, [ebp - 0x21c]
push eax
push 0x104
lea eax, [ebp - 0x424]
push eax
call fcn.0042f9f7
lea eax, [ebp - 0x424]
push eax
call fcn.0041fe30
add esp, 0x10
lea eax, [ebp - 0x424]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveBackslashW]
test eax, eax
je 0x415947
lea eax, [ebp - 0x1004]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea eax, [ebp - 0x424]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x1024], eax
lea eax, [ebp - 0x1004]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov eax, dword [ebp - 0x1024]
test eax, eax
je 0x415947
push str.DllRegisterServer
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4158ea
mov dword [ebp - 4], 0
call eax
mov dword [ebp - 0x1038], eax
mov dword [ebp - 4], 0xffffffff
test eax, eax
jns 0x41592b
push 0x12d
jmp 0x4158ef
push 0x12e
lea eax, [ebp - 0x21c]
push eax
push 0x28
call fcn.00401780
add esp, 4
push eax
lea eax, [ebp - 0xbf4]
push eax
call fcn.0040b120
add esp, 0x10
cmp byte [0x469cd8], 0
jne 0x41592b
push 0
call fcn.00414730
push eax
lea eax, [ebp - 0xbf4]
push eax
push edi
call ebx
push dword [ebp - 0x1024]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
add esi, 0x20a
mov eax, dword [0x469ee4]
jmp 0x415453
push 0x12f
lea eax, [ebp - 0x21c]
push eax
push 0x28
call fcn.00401780
add esp, 4
push eax
jmp 0x415989
push 0x7d0
push 0x468908
push 0x28
push dword [0x469abc]
call dword [sym.imp.USER32.dll_LoadStringW]
push 0xcc
lea eax, [ebp - 0x21c]
push eax
push 0x468908
lea eax, [ebp - 0xbf4]
push eax
call fcn.0040b120
add esp, 0x10
cmp byte [0x469cd8], 0
jne 0x4159b3
push 0
call fcn.00414730
push eax
lea eax, [ebp - 0xbf4]
push eax
push edi
call ebx
add esi, 0x20a
mov eax, dword [0x469ee4]
jmp 0x415453
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00428d9d
mov esp, ebp
pop ebp
ret