Function at 0x405bc0
Capabilities:
Accept command line arguments
Delete directory
Delete file
Delete registry key
Get common file path
Query environment variable

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4b4
mov eax, dword [0x41d004]
xor eax, esp
mov dword [esp + 0x4b0], eax
push ebx
mov ebx, dword [ebp + 8]
xorps xmm0, xmm0
push esi
push edi
push 0xf
mov dword [esp + 0x18], 0
movlpd qword [esp + 0x20], xmm0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], str.MyWindowClass
call dword [sym.imp.USER32.dll_GetSysColorBrush]
push 0x7f00
push 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], 0x405430
mov dword [esp + 0x2c], ebx
call dword [sym.imp.USER32.dll_LoadCursorW]
mov dword [esp + 0x2c], eax
lea eax, [esp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
cmp dword [esp + 0xc], 1
mov edi, eax
jle 0x405c71
mov esi, 1
push str.uninstall
push dword [edi + esi*4]
call fcn.004078b4
add esp, 8
test eax, eax
jne 0x405d10
inc esi
cmp esi, dword [esp + 0xc]
jl 0x405c52
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_RegisterClassW]
push 0
push ebx
push 0
push 0
push 0x168
push 0x190
push 0x64
push 0x64
push 0x90c80000
push 0x419f40
push dword [esp + 0x60]
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
lea eax, [esp + 0x7c]
push 0
push 0
push 0
push eax
call esi
test eax, eax
je 0x405cf2
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageW]
nop word [eax + eax]
lea eax, [esp + 0x7c]
push eax
call edi
lea eax, [esp + 0x7c]
push eax
call ebx
push 0
push 0
push 0
lea eax, [esp + 0x88]
push eax
call esi
test eax, eax
jne 0x405cd0
mov eax, dword [esp + 0x84]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4b0]
xor ecx, esp
call fcn.00406785
mov esp, ebp
pop ebp
ret 0x10
call fcn.004051b0
mov esi, eax
mov dword [esp + 0x10], esi
test esi, esi
jne 0x405d4d
push eax
push 0x419f40
push str.A_formally_installed_copy_of_Supermium_could_not_be_located._Now_exiting_the_uninstaller.
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4b0]
xor ecx, esp
call fcn.00406785
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [sym.imp.USER32.dll_MessageBoxW]
push 4
push 0x419f40
push str.Would_you_like_to_uninstall_Supermium_
push 0
call edi
cmp eax, 6
jne 0x405d31
push 4
push 0x419f40
push str.Would_you_like_to_keep_your_user_data_
push 0
call edi
mov ebx, 0x82
cmp eax, 7
jne 0x405ecf
push 0x20c
lea eax, [esp + 0x9c]
mov dword [esp + 0x40], 0
xorps xmm0, xmm0
mov dword [esp + 0x4c], 0
push 0
push eax
movlpd qword [esp + 0x5a], xmm0
mov dword [esp + 0x62], 0
call fcn.00407f70
add esp, 0xc
lea eax, [esp + 0x98]
push 0x106
push eax
push str.LOCALAPPDATA
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov ecx, ebx
lea eax, [esp + 0x98]
nop
cmp word [eax], 0
je 0x405dee
add eax, 2
sub ecx, 1
jne 0x405de0
test ecx, ecx
je 0x405e23
mov edx, ecx
lea eax, [ecx - 0x82]
neg edx
push ecx
sbb edx, edx
and edx, eax
mov eax, ebx
sub eax, ecx
add edx, ebx
push str.SupermiumUser_Data
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [esp + 0xa4]
add ecx, eax
call fcn.004012a0
lea eax, [esp + 0x98]
mov dword [esp + 0x40], 3
mov dword [esp + 0x44], eax
mov eax, 0x614
mov word [esp + 0x4c], ax
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
lea eax, [esp + 0x98]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov esi, dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
push str.SoftwareMicrosoftWindowsCurrentVersionApp_ManagementARPCacheSupermium
push 0x80000001
call esi
push str.SoftwareSupermiumPreferenceMACsDefaultextensions.settings
push 0x80000001
call esi
push str.SoftwareSupermiumPreferenceMACsDefault
push 0x80000001
call esi
push str.SoftwareSupermiumPreferenceMACsSystem_Profile
push 0x80000001
call esi
push str.SoftwareSupermiumPreferenceMACs
push 0x80000001
call esi
push str.SoftwareSupermiumBLBeacon
push 0x80000001
call esi
push str.SoftwareSupermiumStabilityMetrics
push 0x80000001
call esi
push str.SoftwareSupermiumThirdParty
push 0x80000001
call esi
push str.SoftwareSupermium
push 0x80000001
call esi
mov esi, dword [esp + 0x10]
push 0x20c
lea eax, [esp + 0x2ac]
mov dword [esp + 0x60], 0
xorps xmm0, xmm0
mov dword [esp + 0x6c], 0
push 0
push eax
movlpd qword [esp + 0x7a], xmm0
mov dword [esp + 0x82], 0
call fcn.00407f70
add esp, 8
mov edx, ebx
push esi
push ecx
lea ecx, [esp + 0x2b4]
call fcn.004012a0
mov ecx, ebx
lea eax, [esp + 0x2a8]
cmp word [eax], 0
je 0x405f31
add eax, 2
sub ecx, 1
jne 0x405f23
test ecx, ecx
je 0x405f66
mov edx, ecx
lea eax, [ecx - 0x82]
neg edx
push ecx
sbb edx, edx
and edx, eax
mov eax, ebx
sub eax, ecx
add edx, ebx
push 0x41a4d4
push ecx
add eax, eax
neg ecx
sbb ecx, ecx
and ecx, eax
lea eax, [esp + 0x2b4]
add ecx, eax
call fcn.004012a0
lea eax, [esp + 0x2aa]
mov dword [esp + 0x60], 3
mov dword [esp + 0x64], eax
mov eax, 0x614
mov word [esp + 0x6c], ax
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
lea eax, [esp + 0x2aa]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
je 0x406053
call fcn.004012f0
lea eax, [esp + 0x98]
push eax
push 0
push 0
push 0x10
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov ecx, ebx
lea eax, [esp + 0x98]
cmp word [eax], 0
je 0x405fd6
add eax, 2
sub ecx, 1
jne 0x405fc8
test ecx, ecx
je 0x406009
mov edx, ecx
lea eax, [ecx - 0x82]
neg edx
push ecx
sbb edx, edx
and edx, eax
lea eax, [esp + 0x9c]
add edx, ebx
sub ebx, ecx
push str.Supermium.lnk
push ecx
add ebx, ebx
neg ecx
sbb ecx, ecx
and ecx, ebx
add ecx, eax
call fcn.004012a0
lea eax, [esp + 0x98]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
push 0x419f40
push str.Supermium_has_been_uninstalled.
push 0
call edi
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4b0]
xor ecx, esp
call fcn.00406785
mov esp, ebp
pop ebp
ret 0x10
push 0x10
push 0x419f40
push 0x41a4d8
push 0
call edi
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [esp + 0x4bc]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00406785
mov esp, ebp
pop ebp
ret 0x10