Function at 0x405530
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
mov eax, dword [0x40d104]
push esi
cmp al, 4
push edi
jb 0x405548
cmp eax, 0x80000000
mov eax, 1
jb 0x40554a
xor eax, eax
mov dword [0x40f294], eax
test eax, eax
je 0x4059d1
mov eax, dword [sym.imp.USER32.dll_GetWindowTextW]
mov ecx, dword [sym.imp.USER32.dll_SetWindowTextW]
mov edx, dword [sym.imp.USER32.dll_GetWindowTextLengthW]
mov dword [0x40f208], eax
mov eax, dword [sym.imp.USER32.dll_GetDlgItemTextW]
mov dword [0x40f1e8], ecx
mov ecx, dword [sym.imp.USER32.dll_SetDlgItemTextW]
mov dword [0x40f248], edx
mov edx, dword [sym.imp.USER32.dll_PostMessageW]
mov dword [0x40f244], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
mov dword [0x40f218], ecx
mov ecx, dword [sym.imp.USER32.dll_SendDlgItemMessageW]
mov dword [0x40f1cc], edx
mov edx, dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [0x40f2cc], eax
mov eax, dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov dword [0x40f1b8], ecx
mov ecx, dword [sym.imp.USER32.dll_CreateDialogParamW]
mov dword [0x40f254], edx
mov edx, dword [sym.imp.USER32.dll_DialogBoxParamW]
mov dword [0x40f25c], eax
mov eax, dword [sym.imp.USER32.dll_GetWindowLongW]
mov dword [0x40f1a0], ecx
mov ecx, dword [sym.imp.USER32.dll_SetWindowLongW]
mov dword [0x40f29c], edx
mov edx, dword [sym.imp.USER32.dll_CallWindowProcW]
mov dword [0x40f1d8], eax
mov eax, dword [sym.imp.USER32.dll_RegisterClassW]
mov dword [0x40f214], ecx
mov ecx, dword [sym.imp.USER32.dll_FindWindowW]
mov dword [0x40f200], edx
mov edx, dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [0x40f28c], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov dword [0x40f278], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [0x40f284], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [0x40f170], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueW]
mov dword [0x40f1f4], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [0x40f1d0], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov dword [0x40f2bc], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov dword [0x40f1f8], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov dword [0x40f27c], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov dword [0x40f228], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [0x40f1f0], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov dword [0x40f19c], edx
mov edx, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [0x40f14c], eax
mov dword [0x40f1d4], ecx
mov dword [0x40f180], edx
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov ecx, dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileW]
push str.kernel32.dll
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [0x40f280], eax
mov dword [0x40f154], ecx
mov dword [0x40f2d0], edx
call esi
push str.CreateHardLinkW
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov ecx, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov edx, dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [0x40f140], eax
mov dword [0x40f24c], ecx
mov eax, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov dword [0x40f23c], eax
mov dword [0x40f18c], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [0x40f1a4], eax
mov dword [0x40f1c4], ecx
mov eax, dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov ecx, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
mov dword [0x40f1a8], edx
mov dword [0x40f2c8], eax
mov edx, dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov eax, dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
mov dword [0x40f288], ecx
mov dword [0x40f168], edx
mov ecx, dword [sym.imp.SHELL32.dll_DragQueryFileW]
mov dword [0x40f220], eax
mov edx, dword [sym.imp.USER32.dll_ModifyMenuW]
mov dword [0x40f1c0], ecx
mov ecx, dword [sym.imp.USER32.dll_InsertMenuW]
mov eax, dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [0x40f260], ecx
mov dword [0x40f1e0], edx
mov ecx, dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov edx, dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov dword [0x40f2a8], eax
mov dword [0x40f1bc], ecx
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ecx, dword [sym.imp.WINMM.dll_PlaySoundW]
mov dword [0x40f298], edx
mov dword [0x40f150], eax
mov edx, dword [sym.imp.USER32.dll_CharUpperW]
mov eax, dword [sym.imp.USER32.dll_CharLowerW]
mov dword [0x40f184], ecx
mov dword [0x40f2d4], edx
mov ecx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov edx, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [0x40f224], eax
mov dword [0x40f1b0], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll_wcschr]
mov dword [0x40f250], edx
mov dword [0x40f1fc], 0x4082ae
mov dword [0x40f21c], 0x4082b4
mov dword [0x40f190], ecx
mov edx, dword [sym.imp.MSVCRT40.dll_wcscmp]
mov ebx, dword [sym.imp.MSVCRT40.dll__wcsnicmp]
mov dword [0x40f2c4], edx
mov dword [0x40f16c], ebx
mov eax, dword [sym.imp.MSVCRT40.dll_wcslen]
mov edx, dword [sym.imp.MSVCRT40.dll_wcscpy]
mov dword [0x40f1ec], eax
mov dword [0x40f158], edx
mov ebx, dword [sym.imp.MSVCRT40.dll__wcsdup]
mov dword [0x40f2a4], ecx
mov eax, dword [sym.imp.MSVCRT40.dll_wcsrchr]
mov dword [0x40f194], ebx
mov ecx, dword [sym.imp.MSVCRT40.dll_wcstol]
mov dword [0x40f164], eax
mov edx, dword [sym.imp.MSVCRT40.dll_wcstoul]
mov dword [0x40f174], ecx
mov eax, dword [sym.imp.MSVCRT40.dll_swprintf]
mov dword [0x40f20c], edx
mov dword [0x40f234], 0x404830
push str.shell32.dll
mov dword [0x40f198], eax
mov dword [0x40f290], 0x404870
mov dword [0x40f148], 0x4047f0
mov dword [0x40f2b4], 0x404790
call esi
mov ebx, eax
push str.SHGetPathFromIDListW
push ebx
call edi
push str.SHBrowseForFolderW
mov dword [0x40f2b0], eax
push ebx
call edi
push str.ILCreateFromPathW
mov dword [0x40f2a0], eax
push ebx
call edi
push str.ILFree
mov dword [0x40f2ac], eax
push ebx
call edi
mov ebx, dword [0x409e9c]
mov edx, 0x409e98
mov ecx, 0x40f268
mov dword [0x40f15c], eax
mov eax, dword [edx]
push str.user32.dll
mov dword [ecx], eax
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [ecx + 4], ebx
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
call esi
mov esi, eax
push str.GetMonitorInfoW
push esi
call edi
push str.MonitorFromPoint
mov dword [0x40f258], eax
push esi
call edi
mov dword [0x40f17c], 2
mov dword [0x40f1ac], 0x7d00
mov dword [0x40b664], 5
mov dword [0x40f2c0], 0x40b710
mov dword [0x40f178], 0x40b704
mov dword [0x40f1c8], 0x40b52c
mov dword [0x40f238], 0x40b6f8
mov dword [0x40f1dc], 0x40b528
mov dword [0x40f1e4], 0x40b6f4
mov dword [0x40f210], 0x40b6ec
mov dword [0x40f144], 0x40b6e4
mov dword [0x40f230], 0x40b180
mov dword [0x40f160], 0x40b6e0
mov dword [0x40f2b8], 0x40b6d8
pop edi
mov dword [0x40f204], eax
mov eax, 1
pop esi
mov dword [0x40f1b4], 0x40b210
mov dword [0x40f22c], 0x40b6cc
mov dword [0x40f188], 0x40b6c0
pop ebx
ret
mov eax, dword [sym.imp.USER32.dll_GetWindowTextA]
mov ecx, dword [sym.imp.USER32.dll_SetWindowTextA]
mov edx, dword [sym.imp.USER32.dll_GetWindowTextLengthA]
mov dword [0x40f208], eax
mov eax, dword [sym.imp.USER32.dll_GetDlgItemTextA]
mov dword [0x40f1e8], ecx
mov ecx, dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov dword [0x40f248], edx
mov edx, dword [sym.imp.USER32.dll_PostMessageA]
mov dword [0x40f244], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
mov dword [0x40f218], ecx
mov ecx, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov dword [0x40f1cc], edx
mov edx, dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [0x40f2cc], eax
mov eax, dword [sym.imp.KERNEL32.dll_FormatMessageA]
mov dword [0x40f1b8], ecx
mov ecx, dword [sym.imp.USER32.dll_CreateDialogParamA]
mov dword [0x40f254], edx
mov edx, dword [sym.imp.USER32.dll_DialogBoxParamA]
mov dword [0x40f25c], eax
mov eax, dword [sym.imp.USER32.dll_GetWindowLongA]
mov dword [0x40f1a0], ecx
mov ecx, dword [sym.imp.USER32.dll_SetWindowLongA]
mov dword [0x40f29c], edx
mov edx, dword [sym.imp.USER32.dll_CallWindowProcA]
mov dword [0x40f1d8], eax
mov eax, dword [sym.imp.USER32.dll_RegisterClassA]
mov dword [0x40f214], ecx
mov ecx, dword [sym.imp.USER32.dll_FindWindowA]
mov dword [0x40f200], edx
mov edx, dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x40f28c], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov dword [0x40f278], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [0x40f284], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [0x40f170], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
mov dword [0x40f1f4], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov dword [0x40f1d0], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov dword [0x40f2bc], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov dword [0x40f1f8], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov dword [0x40f27c], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
mov dword [0x40f228], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [0x40f1f0], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov dword [0x40f19c], edx
mov edx, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [0x40f14c], eax
mov dword [0x40f1d4], ecx
mov dword [0x40f180], edx
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov ecx, dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileA]
push str.kernel32.dll
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [0x40f280], eax
mov dword [0x40f154], ecx
mov dword [0x40f2d0], edx
call esi
push str.CreateHardLinkA
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov ecx, dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov edx, dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [0x40f140], eax
mov dword [0x40f24c], ecx
mov eax, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ecx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov dword [0x40f23c], eax
mov dword [0x40f18c], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [0x40f1a4], eax
mov dword [0x40f1c4], ecx
mov eax, dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov ecx, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
mov dword [0x40f1a8], edx
mov dword [0x40f2c8], eax
mov edx, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov eax, dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov dword [0x40f288], ecx
mov dword [0x40f168], edx
mov ecx, dword [sym.imp.SHELL32.dll_DragQueryFileA]
mov dword [0x40f220], eax
mov edx, dword [sym.imp.USER32.dll_ModifyMenuA]
mov dword [0x40f1c0], ecx
mov ecx, dword [sym.imp.USER32.dll_InsertMenuA]
mov eax, dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x40f260], ecx
mov dword [0x40f1e0], edx
mov ecx, dword [sym.imp.SHELL32.dll_ShellExecuteA]
mov edx, dword [sym.imp.SHELL32.dll_ShellExecuteExA]
mov dword [0x40f2a8], eax
mov dword [0x40f1bc], ecx
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ecx, dword [sym.imp.WINMM.dll_PlaySoundA]
mov dword [0x40f298], edx
mov dword [0x40f150], eax
mov edx, dword [sym.imp.USER32.dll_CharUpperA]
mov eax, dword [sym.imp.USER32.dll_CharLowerA]
mov dword [0x40f184], ecx
mov dword [0x40f2d4], edx
mov ecx, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov edx, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [0x40f224], eax
mov dword [0x40f1b0], ecx
mov eax, dword [sym.imp.MSVCRT40.dll__mbschr]
mov dword [0x40f250], edx
mov dword [0x40f1fc], 0x4082c0
mov dword [0x40f21c], 0x4082ba
mov dword [0x40f190], eax
mov dword [0x40f234], 0x404840
mov dword [0x40f290], 0x404890
mov dword [0x40f148], 0x404800
mov dword [0x40f2c4], 0x4085ac
mov ecx, dword [sym.imp.MSVCRT40.dll__strnicmp]
mov edx, dword [sym.imp.MSVCRT40.dll_strchr]
mov eax, dword [sym.imp.MSVCRT40.dll_strrchr]
mov dword [0x40f16c], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll__strdup]
mov dword [0x40f2a4], edx
mov edx, dword [sym.imp.MSVCRT40.dll_strtoul]
mov dword [0x40f194], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll_strtol]
mov dword [0x40f164], eax
mov eax, dword [sym.imp.MSVCRT40.dll_sprintf]
mov dword [0x40f174], ecx
mov dword [0x40f20c], edx
mov dword [0x40f198], eax
mov ecx, dword [sym.imp.SHELL32.dll_SHGetPathFromIDList]
mov edx, dword [sym.imp.SHELL32.dll_SHBrowseForFolder]
mov dword [0x40f2b0], ecx
mov dword [0x40f2a0], edx
xor eax, eax
mov edx, 0x409de8
mov dword [0x40f2ac], eax
mov dword [0x40f15c], eax
mov ecx, 0x40f268
mov eax, dword [edx]
mov dword [0x40f1ec], 0x4085a6
mov ebx, dword [edx + 4]
mov dword [ecx], eax
mov eax, dword [edx + 8]
mov dword [ecx + 4], ebx
mov edx, dword [edx + 0xc]
push str.user32.dll
mov dword [0x40f158], 0x4085a0
mov dword [0x40f2b4], 0x4046d0
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
call esi
mov esi, eax
push str.GetMonitorInfoA
push esi
call edi
push str.MonitorFromPoint
mov dword [0x40f258], eax
push esi
call edi
mov dword [0x40f1ac], 0x820
mov dword [0x40f2c0], 0x40b69c
mov dword [0x40f178], 0x40b694
mov dword [0x40f1c8], 0x40b514
mov dword [0x40f238], 0x40b68c
mov dword [0x40f1dc], 0x40b510
mov dword [0x40f1e4], 0x40b688
mov dword [0x40f210], 0x40b684
mov dword [0x40f204], eax
mov eax, 1
mov dword [0x40f17c], eax
mov dword [0x40b664], eax
mov dword [0x40f144], 0x40b534
mov dword [0x40f230], 0x40b240
mov dword [0x40f160], 0x40b680
mov dword [0x40f2b8], 0x40b67c
mov eax, 1
pop edi
mov dword [0x40f1b4], 0x40b678
mov dword [0x40f22c], 0x40b670
mov dword [0x40f188], 0x40b668
pop esi
pop ebx
ret