Function at 0x404480
Capabilities:
Check if file exists
Check os version
Copy file
Create shortcut via ishelllink
Delete directory
Delete file
Get common file path
Get file attributes
Move file
Persist via lnk shortcut
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4132bb
mov eax, dword fs:[0]
push eax
mov eax, 0x1ee0
call fcn.00412c90
mov eax, dword [0x41d004]
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 esi, edx
mov dword [ebp - 0x1eac], esi
mov edi, ecx
push 0x208
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0xa3c]
push 0x20a
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0x624]
push 0x408
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0xe44]
push 0x408
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0x165c]
push 0x408
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0x1e6c]
push 0x408
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0x1a64]
push 0x408
push 0
push eax
call fcn.00407f70
add esp, 0xc
lea eax, [ebp - 0x82c]
push 0x208
push 0
push eax
call fcn.00407f70
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
add esp, 0xc
mov dword [ebp - 0x1ec8], 1
push 0
push 0xa
push 0x402
push dword [0x41e390]
call ebx
lea ecx, [ebp - 0xa3c]
mov edx, 0x104
mov eax, ecx
sub esi, eax
nop dword [eax]
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x4045be
movzx eax, word [esi + ecx]
test ax, ax
je 0x4045be
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x4045a0
push dword [ebp - 0x1eac]
lea eax, [ecx - 2]
test edx, edx
xorps xmm0, xmm0
cmovne eax, ecx
movlpd qword [ebp - 0x1eec], xmm0
xor ecx, ecx
movlpd qword [ebp - 0x1ee4], xmm0
movlpd qword [ebp - 0x1eda], xmm0
mov dword [ebp - 0x1ed2], ecx
mov word [eax], cx
mov eax, 0x614
mov word [ebp - 0x1edc], ax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [sym.imp.SHELL32.dll_SHFileOperationW]
cmp eax, 0xffffffff
je 0x40463a
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0x1ee8], 3
mov dword [ebp - 0x1ee4], eax
lea eax, [ebp - 0x1eec]
push eax
call esi
push dword [ebp - 0x1eac]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea eax, [ebp - 0x82c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x404766
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x1e9c]
call fcn.00401140
push eax
lea ecx, [ebp - 0x1e84]
mov dword [ebp - 4], 0
call fcn.00406300
add esp, 4
cmp dword [eax + 0x14], 8
jb 0x404685
mov eax, dword [eax]
push 0x10
push str.Error
push eax
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ecx, dword [ebp - 0x1e70]
cmp ecx, 8
jb 0x4046d4
mov edx, dword [ebp - 0x1e84]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4046ca
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405117
push ecx
push edx
call fcn.004067c3
add esp, 8
mov ecx, dword [ebp - 0x1e88]
xor eax, eax
mov dword [ebp - 0x1e74], 0
mov dword [ebp - 0x1e70], 7
mov word [ebp - 0x1e84], ax
cmp ecx, 8
jb 0x404731
mov edx, dword [ebp - 0x1e9c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x404727
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405117
push ecx
push edx
call fcn.004067c3
add esp, 8
xor eax, eax
mov dword [ebp - 0x1e8c], 0
mov dword [ebp - 0x1e88], 7
mov word [ebp - 0x1e9c], ax
push 0
push 0
push 0x402
push dword [0x41e390]
call ebx
xor eax, eax
jmp 0x4050fb
call dword [sym.imp.KERNEL32.dll_GetVersion]
lea ecx, [ebp - 0x82c]
cmp al, 6
jb 0x40477d
push 0x419050
jmp 0x404782
push 0x419070
call fcn.004011d0
lea eax, [ebp - 0x82c]
mov dword [ebp - 0x1ee8], 2
mov dword [ebp - 0x1ee4], eax
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0x1ee0], eax
lea eax, [ebp - 0x1eec]
push eax
call esi
test eax, eax
je 0x404811
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x1e84]
call fcn.00401140
push eax
lea ecx, [ebp - 0x1e9c]
mov dword [ebp - 4], 1
call fcn.00406300
add esp, 4
cmp dword [eax + 0x14], 8
jb 0x4047e7
mov eax, dword [eax]
push 0x10
push str.Error
push eax
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x1e9c]
call fcn.004060a0
lea ecx, [ebp - 0x1e84]
call fcn.004060a0
jmp 0x40474e
push 0
push 0x32
push 0x402
push dword [0x41e390]
call ebx
cmp dword [ebp + 0x10], 0
jne 0x404ee7
call fcn.004012f0
mov edi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
lea eax, [ebp - 0x1eb4]
push eax
push str.SupermiumHTM
push 0x80000000
call edi
test eax, eax
jne 0x404ee7
mov esi, dword [ebp - 0x1eac]
mov edx, 0x102
push ecx
push esi
push ecx
lea ecx, [ebp - 0x624]
call fcn.004012a0
push ecx
push 0x4190a8
push ecx
mov edx, 0x102
lea ecx, [ebp - 0xe44]
call fcn.004012a0
push esi
mov edx, 0x204
lea ecx, [ebp - 0xe44]
call fcn.00401230
push str.chrome.exe_0
mov edx, 0x204
lea ecx, [ebp - 0x624]
call fcn.00401230
push str.chrome.exe____single_argument__1
mov edx, 0x204
lea ecx, [ebp - 0xe44]
call fcn.00401230
push ecx
push 0x4190a8
push ecx
mov edx, 0x102
lea ecx, [ebp - 0x165c]
call fcn.004012a0
push ecx
push 0x4190a8
push ecx
mov edx, 0x102
lea ecx, [ebp - 0x1e6c]
call fcn.004012a0
push ecx
push 0x4190a8
push ecx
mov edx, 0x102
lea ecx, [ebp - 0x1a64]
call fcn.004012a0
push esi
mov edx, 0x204
lea ecx, [ebp - 0x165c]
call fcn.00401230
push esi
mov edx, 0x204
lea ecx, [ebp - 0x1e6c]
call fcn.00401230
push esi
mov edx, 0x204
lea ecx, [ebp - 0x1a64]
call fcn.00401230
push str.chrome.exe____hide_icons
mov edx, 0x204
lea ecx, [ebp - 0x165c]
call fcn.00401230
push str.chrome.exe____make_default_browser
mov edx, 0x204
lea ecx, [ebp - 0x1e6c]
call fcn.00401230
push str.chrome.exe____show_icons
mov edx, 0x204
lea ecx, [ebp - 0x1a64]
call fcn.00401230
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueW]
push 0x30
push str.Supermium_HTML_Document
push 1
push 0
push dword [ebp - 0x1eb4]
call esi
lea ecx, [ebp - 0x624]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404996
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x624]
push eax
push 1
push str.DefaultIcon
push dword [ebp - 0x1eb4]
call esi
lea ecx, [ebp - 0xe44]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4049d0
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0xe44]
push eax
push 1
push str.shellopencommand
push dword [ebp - 0x1eb4]
call esi
lea eax, [ebp - 0x1eb8]
push eax
push str.SoftwareClassesSupermiumHTM
push 0x80000002
call edi
push 0x30
push str.Supermium_HTML_Document
push 1
push 0
push dword [ebp - 0x1eb8]
call esi
lea ecx, [ebp - 0x624]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404a30
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x624]
push eax
push 1
push str.DefaultIcon
push dword [ebp - 0x1eb8]
call esi
lea ecx, [ebp - 0xe44]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404a62
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0xe44]
push eax
push 1
push str.shellopencommand
push dword [ebp - 0x1eb8]
call esi
lea eax, [ebp - 0x1ebc]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemium
push 0x80000002
call edi
test eax, eax
jne 0x404ee7
push 0x14
push 0x418e20
push 1
push eax
push dword [ebp - 0x1ebc]
call esi
lea ecx, [ebp - 0xe44]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404ac1
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0xe44]
push eax
push 1
push str.shellopencommand
push dword [ebp - 0x1ebc]
call esi
lea ecx, [ebp - 0x624]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404af3
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x624]
push eax
push 1
push str.DefaultIcon
push dword [ebp - 0x1ebc]
call esi
lea eax, [ebp - 0x1ec0]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemiumCapabilities
push 0x80000002
call edi
lea eax, [ebp - 0x1ea4]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemiumCapabilitiesFileAssociations
push 0x80000002
call edi
lea eax, [ebp - 0x1ec4]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemiumCapabilitiesStartmenu
push 0x80000002
call edi
lea eax, [ebp - 0x1ea0]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemiumCapabilitiesURLAssociations
push 0x80000002
call edi
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 0xd6
push str.Supermium_is_a_web_browser_targetting_legacy_versions_of_Windows_and_has_various_other_important_features.
push 1
push 0
push str.ApplicationDescription
push dword [ebp - 0x1ec0]
call esi
lea ecx, [ebp - 0x624]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404b92
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x624]
push eax
push 1
push 0
push str.ApplicationIcon
push dword [ebp - 0x1ec0]
call esi
push 0x14
push 0x418e20
push 1
push 0
push str.ApplicationName
push dword [ebp - 0x1ec0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..htm
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..html
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..pdf
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..shtml
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..svg
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..webp
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..xht
push dword [ebp - 0x1ea4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str..xhtml
push dword [ebp - 0x1ea4]
call esi
push 0x12
push str.Supemium
push 1
push 0
push str.StartMenuInternet
push dword [ebp - 0x1ec4]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.http
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.https
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push 0x419704
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.mailto
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push 0x41971c
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.news
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.nntp
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push 0x41973c
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.smsto
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.snews
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push 0x41975c
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push 0x419764
push dword [ebp - 0x1ea0]
call esi
push 0x1a
push str.SupermiumHTM
push 1
push 0
push str.webcal
push dword [ebp - 0x1ea0]
call esi
lea eax, [ebp - 0x1eb0]
push eax
push str.SOFTWAREClientsStartMenuInternetSupemiumInstallInfo
push 0x80000002
call edi
lea ecx, [ebp - 0x165c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404e01
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x165c]
push eax
push 1
push 0
push str.HideIconsCommand
push dword [ebp - 0x1eb0]
call esi
lea ecx, [ebp - 0x1a64]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404e35
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x1a64]
push eax
push 1
push 0
push str.ShowIconsCommand
push dword [ebp - 0x1eb0]
call esi
lea ecx, [ebp - 0x1e6c]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404e70
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x1e6c]
push eax
push 1
push 0
push str.ReinstallCommand
push dword [ebp - 0x1eb0]
call esi
push 4
lea eax, [ebp - 0x1ec8]
push eax
push 4
push 0
push str.IconsVisible
push dword [ebp - 0x1eb0]
call esi
lea eax, [ebp - 0x1ecc]
push eax
push str.SOFTWARERegisteredApplications
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x404ee7
push 0x72
push str.SoftwareClientsStartMenuInternetSupemiumCapabilities
push 1
push eax
push str.Supemium
push dword [ebp - 0x1ecc]
call esi
push 0
push 0x46
push 0x402
push dword [0x41e390]
call ebx
cmp dword [ebp + 8], 0
je 0x404f8a
push 0x104
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
mov ecx, 0x82
lea eax, [ebp - 0x21c]
nop
cmp word [eax], 0
je 0x404f2e
add eax, 2
sub ecx, 1
jne 0x404f20
test ecx, ecx
je 0x404f69
mov edx, ecx
lea eax, [ecx - 0x82]
neg edx
push ecx
sbb edx, edx
and edx, eax
mov eax, 0x82
sub eax, ecx
add edx, 0x82
push str.FontsNotoEmoji.ttf
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x21c]
add ecx, eax
call fcn.004012a0
push 2
lea eax, [ebp - 0x21c]
push eax
push str.NotoEmoji.ttf
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.GDI32.dll_AddFontResourceW]
push 0
push 0x55
push 0x402
push dword [0x41e390]
call ebx
cmp dword [ebp + 0xc], 0
je 0x4050e5
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
js 0x4050e5
lea eax, [ebp - 0x1ea8]
push eax
push 0x414220
push 1
push 0
push 0x414240
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x4050df
push ecx
push dword [ebp - 0x1eac]
mov edx, 0x82
push ecx
lea ecx, [ebp - 0x104c]
call fcn.004012a0
push str.chrome.exe
mov edx, 0x104
lea ecx, [ebp - 0x104c]
call fcn.00401230
mov eax, dword [ebp - 0x1ea8]
lea edx, [ebp - 0x104c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov eax, dword [ebp - 0x1ea8]
push str.Supermium_Web_Browser
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x405041
mov eax, dword [ebp - 0x1ea8]
push str.__ungoogled_supermium
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
cmp dword [ebp + 0x18], 0
je 0x40506d
mov eax, dword [ebp - 0x1ea8]
push str.__classic_omnibox___classic_omnibox_border___compact_ui___disable_featuresDownloadBubble_TabHoverCards_PowerBookmarksSidePanel___enable_featuresSupermiumCustomTabs
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
test esi, esi
je 0x40506d
mov eax, dword [ebp - 0x1ea8]
push str.__ungoogled_supermium___classic_omnibox___classic_omnibox_border___compact_ui___disable_featuresDownloadBubble_TabHoverCards_PowerBookmarksSidePanel___enable_featuresSupermiumCustomTabs
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x1ea8]
lea edx, [ebp - 0x1eac]
push edx
push 0x414230
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x4050d3
lea eax, [ebp - 0x1254]
push eax
push 0
push 0
push 0x10
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
push str.Supermium.lnk
mov edx, 0x104
lea ecx, [ebp - 0x1254]
call fcn.00401230
mov eax, dword [ebp - 0x1eac]
lea edx, [ebp - 0x1254]
push 1
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov eax, dword [ebp - 0x1eac]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x1ea8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
push 0
push 0x64
push 0x402
push dword [0x41e390]
call ebx
mov eax, 1
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.00406785
mov esp, ebp
pop ebp
ret
call fcn.00409cac
int3