Function at 0x4044e0
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
mov eax, dword [0x40c25c]
push esi
cmp al, 4
push edi
jb 0x4044f8
cmp eax, 0x80000000
mov eax, 1
jb 0x4044fa
xor eax, eax
mov dword [0x40c6b4], eax
test eax, eax
je 0x404953
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 [0x40c62c], eax
mov eax, dword [sym.imp.USER32.dll_GetDlgItemTextW]
mov dword [0x40c610], ecx
mov ecx, dword [sym.imp.USER32.dll_SetDlgItemTextW]
mov dword [0x40c668], edx
mov edx, dword [sym.imp.USER32.dll_PostMessageW]
mov dword [0x40c664], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
mov dword [0x40c638], ecx
mov ecx, dword [sym.imp.USER32.dll_SendDlgItemMessageW]
mov dword [0x40c5f8], edx
mov edx, dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [0x40c6ec], eax
mov eax, dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov dword [0x40c5e4], ecx
mov ecx, dword [sym.imp.USER32.dll_CreateDialogParamW]
mov dword [0x40c674], edx
mov edx, dword [sym.imp.USER32.dll_DialogBoxParamW]
mov dword [0x40c67c], eax
mov eax, dword [sym.imp.USER32.dll_RegisterClassW]
mov dword [0x40c5cc], ecx
mov ecx, dword [sym.imp.USER32.dll_FindWindowW]
mov dword [0x40c6bc], edx
mov edx, dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [0x40c6ac], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov dword [0x40c698], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [0x40c6a4], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [0x40c59c], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueW]
mov dword [0x40c61c], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [0x40c5fc], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov dword [0x40c6dc], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov dword [0x40c620], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov dword [0x40c69c], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov dword [0x40c648], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [0x40c618], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov dword [0x40c5c8], edx
mov edx, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [0x40c57c], eax
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov dword [0x40c600], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [0x40c5ac], edx
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov dword [0x40c6a0], eax
mov dword [0x40c580], ecx
mov dword [0x40c6f0], edx
push str.kernel32.dll
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
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 [0x40c570], eax
mov dword [0x40c66c], ecx
mov eax, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov dword [0x40c65c], eax
mov dword [0x40c5b8], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [0x40c5d0], eax
mov dword [0x40c5f0], ecx
mov eax, dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov ecx, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
mov dword [0x40c5d4], edx
mov dword [0x40c6e8], eax
mov edx, dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov eax, dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
mov dword [0x40c6a8], ecx
mov dword [0x40c594], edx
mov ecx, dword [sym.imp.SHELL32.dll_DragQueryFileW]
mov dword [0x40c640], eax
mov edx, dword [sym.imp.USER32.dll_ModifyMenuW]
mov dword [0x40c5ec], ecx
mov ecx, dword [sym.imp.USER32.dll_InsertMenuW]
mov eax, dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [0x40c680], ecx
mov dword [0x40c608], edx
mov ecx, dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov edx, dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov dword [0x40c6c8], eax
mov dword [0x40c5e8], ecx
mov eax, dword [sym.imp.WINMM.dll_PlaySoundW]
mov ecx, dword [sym.imp.USER32.dll_CharUpperW]
mov dword [0x40c6b8], edx
mov dword [0x40c5b0], eax
mov edx, dword [sym.imp.USER32.dll_CharLowerW]
mov eax, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov dword [0x40c6f4], ecx
mov dword [0x40c644], edx
mov ecx, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [0x40c5dc], eax
mov dword [0x40c624], 0x407ab4
mov dword [0x40c63c], 0x407aba
mov edx, dword [sym.imp.MSVCRT40.dll_wcscmp]
mov dword [0x40c670], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll_wcschr]
mov dword [0x40c6e4], edx
mov ebx, dword [sym.imp.MSVCRT40.dll__wcsnicmp]
mov dword [0x40c5bc], ecx
mov dword [0x40c654], 0x403cb0
mov dword [0x40c6b0], 0x403cf0
mov dword [0x40c578], 0x403c70
mov dword [0x40c598], ebx
mov eax, dword [sym.imp.MSVCRT40.dll_wcslen]
mov edx, dword [sym.imp.MSVCRT40.dll_wcscpy]
mov ebx, dword [sym.imp.MSVCRT40.dll__wcsdup]
mov dword [0x40c614], eax
mov dword [0x40c584], edx
mov eax, dword [sym.imp.MSVCRT40.dll_wcsrchr]
mov edx, dword [sym.imp.MSVCRT40.dll_wcstoul]
mov dword [0x40c5c0], ebx
mov dword [0x40c6c4], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll_wcstol]
mov dword [0x40c590], eax
mov eax, dword [sym.imp.MSVCRT40.dll_swprintf]
push str.shell32.dll
mov dword [0x40c5a0], ecx
mov dword [0x40c630], edx
mov dword [0x40c6d4], 0x403c10
mov dword [0x40c5c4], eax
call esi
mov ebx, eax
push str.SHGetPathFromIDListW
push ebx
call edi
push str.SHBrowseForFolderW
mov dword [0x40c6d0], eax
push ebx
call edi
push str.ILCreateFromPathW
mov dword [0x40c6c0], eax
push ebx
call edi
push str.ILFree
mov dword [0x40c6cc], eax
push ebx
call edi
mov ebx, dword [0x408e3c]
mov edx, 0x408e38
mov ecx, 0x40c688
mov dword [0x40c588], 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 [0x40c678], eax
push esi
call edi
mov dword [0x40c5a8], 2
mov dword [0x40c5d8], 0x7d00
mov dword [0x40bc8c], 5
mov dword [0x40c6e0], 0x40bd3c
mov dword [0x40c5a4], 0x40bd30
mov dword [0x40c628], eax
mov dword [0x40c5f4], 0x40bbb0
mov dword [0x40c658], 0x40bd24
mov dword [0x40c604], 0x40bba8
mov dword [0x40c60c], 0x40bd20
mov dword [0x40c634], 0x40bd18
mov dword [0x40c574], 0x40bd10
mov dword [0x40c650], 0x40bbac
mov dword [0x40c58c], 0x40bd0c
mov dword [0x40c6d8], 0x40bd04
mov eax, 1
pop edi
mov dword [0x40c5e0], 0x40bd00
mov dword [0x40c64c], 0x40bcf4
mov dword [0x40c5b4], 0x40bce8
pop esi
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 [0x40c62c], eax
mov eax, dword [sym.imp.USER32.dll_GetDlgItemTextA]
mov dword [0x40c610], ecx
mov ecx, dword [sym.imp.USER32.dll_SetDlgItemTextA]
mov dword [0x40c668], edx
mov edx, dword [sym.imp.USER32.dll_PostMessageA]
mov dword [0x40c664], eax
mov eax, dword [sym.imp.USER32.dll_SendMessageA]
mov dword [0x40c638], ecx
mov ecx, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov dword [0x40c5f8], edx
mov edx, dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [0x40c6ec], eax
mov eax, dword [sym.imp.KERNEL32.dll_FormatMessageA]
mov dword [0x40c5e4], ecx
mov ecx, dword [sym.imp.USER32.dll_CreateDialogParamA]
mov dword [0x40c674], edx
mov edx, dword [sym.imp.USER32.dll_DialogBoxParamA]
mov dword [0x40c67c], eax
mov eax, dword [sym.imp.USER32.dll_RegisterClassA]
mov dword [0x40c5cc], ecx
mov ecx, dword [sym.imp.USER32.dll_FindWindowA]
mov dword [0x40c6bc], edx
mov edx, dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x40c6ac], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov dword [0x40c698], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [0x40c6a4], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [0x40c59c], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
mov dword [0x40c61c], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov dword [0x40c5fc], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov dword [0x40c6dc], eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov dword [0x40c620], ecx
mov ecx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov dword [0x40c69c], edx
mov edx, dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
mov dword [0x40c648], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [0x40c618], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov dword [0x40c5c8], edx
mov edx, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [0x40c57c], eax
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov dword [0x40c600], ecx
mov ecx, dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [0x40c5ac], edx
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileA]
mov dword [0x40c6a0], eax
mov dword [0x40c580], ecx
mov dword [0x40c6f0], edx
push str.kernel32.dll
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
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 [0x40c570], eax
mov dword [0x40c66c], ecx
mov eax, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ecx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov dword [0x40c65c], eax
mov dword [0x40c5b8], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [0x40c5d0], eax
mov dword [0x40c5f0], ecx
mov eax, dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov ecx, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
mov dword [0x40c5d4], edx
mov dword [0x40c6e8], eax
mov edx, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov eax, dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov dword [0x40c6a8], ecx
mov dword [0x40c594], edx
mov ecx, dword [sym.imp.SHELL32.dll_DragQueryFileA]
mov dword [0x40c640], eax
mov edx, dword [sym.imp.USER32.dll_ModifyMenuA]
mov dword [0x40c5ec], ecx
mov ecx, dword [sym.imp.USER32.dll_InsertMenuA]
mov eax, dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x40c680], ecx
mov dword [0x40c608], edx
mov ecx, dword [sym.imp.SHELL32.dll_ShellExecuteA]
mov edx, dword [sym.imp.SHELL32.dll_ShellExecuteExA]
mov dword [0x40c6c8], eax
mov dword [0x40c5e8], ecx
mov eax, dword [sym.imp.WINMM.dll_PlaySoundA]
mov ecx, dword [sym.imp.USER32.dll_CharUpperA]
mov dword [0x40c6b8], edx
mov dword [0x40c5b0], eax
mov edx, dword [sym.imp.USER32.dll_CharLowerA]
mov eax, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov dword [0x40c6f4], ecx
mov dword [0x40c644], edx
mov ecx, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [sym.imp.MSVCRT40.dll__mbschr]
mov dword [0x40c5dc], eax
mov dword [0x40c670], ecx
mov dword [0x40c624], 0x407ac6
mov dword [0x40c63c], 0x407ac0
mov dword [0x40c654], 0x403cc0
mov ecx, dword [sym.imp.MSVCRT40.dll__strnicmp]
mov dword [0x40c5bc], edx
mov dword [0x40c6b0], 0x403d10
mov dword [0x40c578], 0x403c80
mov dword [0x40c6e4], 0x407cec
mov dword [0x40c614], 0x407ce6
mov dword [0x40c598], ecx
mov dword [0x40c584], 0x407ce0
mov ecx, dword [sym.imp.MSVCRT40.dll__strdup]
mov edx, dword [sym.imp.MSVCRT40.dll_strchr]
mov eax, dword [sym.imp.MSVCRT40.dll_strrchr]
mov dword [0x40c5c0], ecx
mov ecx, dword [sym.imp.MSVCRT40.dll_strtol]
mov dword [0x40c6c4], edx
mov edx, dword [sym.imp.MSVCRT40.dll_strtoul]
mov dword [0x40c590], eax
mov eax, dword [sym.imp.MSVCRT40.dll_sprintf]
mov dword [0x40c5a0], ecx
mov ecx, dword [sym.imp.SHELL32.dll_SHGetPathFromIDList]
mov dword [0x40c630], edx
mov edx, dword [sym.imp.SHELL32.dll_SHBrowseForFolder]
mov dword [0x40c5c4], eax
xor eax, eax
mov dword [0x40c6d0], ecx
mov ecx, 0x40c688
mov dword [0x40c6c0], edx
mov ebx, dword [0x408d8c]
mov edx, 0x408d88
mov dword [0x40c6cc], eax
mov dword [0x40c588], eax
mov dword [0x40c6d4], 0x403b50
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.GetMonitorInfoA
push esi
call edi
push str.MonitorFromPoint
mov dword [0x40c678], eax
push esi
call edi
mov dword [0x40c5d8], 0x820
mov dword [0x40c6e0], 0x40bcc4
mov dword [0x40c5a4], 0x40bcbc
mov dword [0x40c5f4], 0x40bb94
mov dword [0x40c658], 0x40bcb4
mov dword [0x40c604], 0x40bb90
mov dword [0x40c60c], 0x40bcb0
mov dword [0x40c634], 0x40bcac
mov dword [0x40c574], 0x40bbb8
mov dword [0x40c650], 0x40bb8c
mov dword [0x40c58c], 0x40bca8
mov dword [0x40c6d8], 0x40bca4
mov dword [0x40c5e0], 0x40bca0
mov dword [0x40c64c], 0x40bc98
mov dword [0x40c5b4], 0x40bc90
mov dword [0x40c628], eax
mov eax, 1
mov dword [0x40c5a8], eax
mov dword [0x40bc8c], eax
mov eax, 1
pop edi
pop esi
pop ebx
ret