Function at 0x406fd1
Capabilities:
Check mutex on windows
Delete registry key
Log keystrokes via application hook
Set registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x174
mov eax, dword [0x4467a4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor ebx, ebx
push edi
xor edi, edi
mov dword [ebp - 0x128], eax
push edi
push edi
inc ebx
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
push 0x64
lea eax, [ebp - 0xd8]
push eax
push 0x66
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
mov dword [ebp - 0x13c], ebx
mov ebx, edi
mov dword [ebp - 0x124], edi
mov dword [ebp - 0x138], edi
test esi, esi
je 0x407264
movzx eax, word [esi]
cmp eax, 0x2d
je 0x40704a
cmp eax, 0x2f
jne 0x407264
mov eax, dword [0x402648]
mov dword [ebp - 0xc], eax
mov eax, dword [0x40264c]
mov dword [ebp - 8], eax
lea eax, [ebp - 0x12c]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
jmp 0x4071cb
push 0xffffffffffffffff
push 0x402650
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x407094
push 0x1388
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4071bf
push 0xffffffffffffffff
push 0x40265c
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x4070b8
mov dword [ebp - 0x13c], edi
jmp 0x4071bf
push 0xffffffffffffffff
push 0x402670
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x4070d9
xor ebx, ebx
inc ebx
jmp 0x4071bf
push 0xffffffffffffffff
push 0x40269c
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x4070f6
push 3
jmp 0x40712d
push 0xffffffffffffffff
push 0x4026b4
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x407113
push 4
jmp 0x40712d
push 0xffffffffffffffff
push 0x4026c0
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x407139
push eax
pop eax
mov dword [ebp - 0x124], eax
jmp 0x4071bf
push 0xffffffffffffffff
push 0x4026d0
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x4071a6
call fcn.0041dbb8
mov dword [0x4472ec], eax
call fcn.0041dbb8
mov edi, eax
push 0xff00ff
mov dword [0x4472f0], edi
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x448860]
mov ecx, edi
call esi
call fcn.0041dbb8
mov edi, eax
push 0xffff00
mov dword [0x4472e8], edi
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x448860]
mov ecx, edi
call esi
xor edi, edi
jmp 0x4071bf
push 0xffffffffffffffff
push 0x4026e0
push 0xffffffffffffffff
push esi
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
je 0x4071e3
lea eax, [ebp - 0x12c]
push eax
lea eax, [ebp - 0xc]
push eax
push edi
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_wcstok]
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40706b
jmp 0x40727e
push 1
push 0x1736
push edi
call dword [sym.imp.ntdll.dll_WinSqmIncrementDWORD]
lea ecx, [ebp - 0x140]
call fcn.0041b17d
test eax, eax
js 0x407936
push edi
lea eax, [ebp - 0x11c]
mov dword [ebp - 0x11c], edi
push eax
push edi
push 0x2001f
push 1
push edi
push edi
push 0x402758
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov ecx, eax
test ecx, ecx
je 0x407258
mov eax, dword [0x446098]
cmp eax, 0x446098
je 0x407258
test byte [eax + 0x1c], 4
je 0x407258
push ecx
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xa
pop ecx
call fcn.00406b94
push dword [ebp - 0x11c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.0041fa23
test eax, eax
je 0x407276
call fcn.00406cc3
test al, al
je 0x40727e
push 3
pop ecx
call fcn.00406e46
lea eax, [ebp - 0x134]
mov dword [ebp - 0x134], edi
push eax
push 0xf003f
push edi
push 0x402758
mov esi, SysReAllocString
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4072ca
push edi
push edi
push 0x402758
push esi
mov dword [ebp - 0x138], 1
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyExW]
push dword [ebp - 0x134]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.00406cc3
test al, al
mov eax, 0x4028b8
jne 0x4072dd
mov eax, 0x402910
push eax
push 1
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov edi, eax
mov dword [ebp - 0x130], edi
test edi, edi
jne 0x4072fb
or eax, 0xffffffff
jmp 0x407938
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x407343
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0xd8]
push eax
push 0x402740
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x407936
test ebx, ebx
je 0x407936
push 0
push 0
push 0x10
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x407936
xor ebx, ebx
mov dword [0x447310], 1
mov dword [0x447308], ebx
mov dword [0x4472f8], ebx
mov dword [0x447314], ebx
mov dword [0x4472f4], 0x402978
mov dword [0x446098], 0x4472f8
call fcn.00406c66
mov eax, dword [0x446098]
mov esi, 0x446098
cmp eax, esi
je 0x4073a1
test byte [eax + 0x1c], 0x10
je 0x4073a1
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xb
pop ecx
call fcn.00406b76
push ecx
push ecx
call fcn.004084b1
test byte [0x447240], 1
je 0x4073bb
mov edx, 0x402558
call fcn.00408369
call fcn.00405c32
cmp dword [0x446038], 5
mov ecx, 0x446038
jbe 0x4073f2
push 0x4000
push ebx
call fcn.00405d49
test al, al
je 0x4073f2
lea eax, [ebp - 0xf8]
mov edx, 0x405510
push eax
push 2
push ecx
push ecx
call fcn.00405cc1
call dword [sym.imp.KERNEL32.dll_GetTickCount64]
push 1
push 0x64
mov dword [ebp - 8], eax
mov dword [ebp - 0x140], edx
call dword [sym.imp.KERNEL32.dll_SetProcessShutdownParameters]
push ebx
push 0x402860
call dword [sym.imp.KERNEL32.dll_RegisterApplicationRestart]
mov eax, dword [ebp - 0x128]
push ebx
mov dword [0x44741c], eax
call dword [sym.imp.ole32.dll_CoInitialize]
mov ecx, eax
test ecx, ecx
jns 0x407465
mov eax, dword [0x446098]
cmp eax, esi
je 0x407452
test byte [eax + 0x1c], 4
je 0x407452
push ecx
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xc
pop ecx
call fcn.00406b94
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x407936
push 1
push 1
push 1
push 0x400000
push 0xe
call dword [sym.imp.DUI70.dll_InitProcessPriv]
mov esi, eax
test esi, esi
js 0x4078fc
push 2
call dword [sym.imp.DUI70.dll_InitThread]
mov esi, eax
test esi, esi
js 0x40749e
sub esp, 0xc
call fcn.00420bd8
mov esi, eax
test esi, esi
jns 0x4074b1
push 0x400000
call dword [sym.imp.DUI70.dll_UnInitProcessPriv]
test esi, esi
js 0x4078fc
lea eax, [ebp - 0x150]
mov dword [ebp - 0x150], 8
push eax
mov dword [ebp - 0x14c], 0xc000
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
test eax, eax
jne 0x4074dc
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push ebx
push dword [0x44741c]
push 0x406f50
push 0xd
call dword [sym.imp.USER32.dll_SetWindowsHookExW]
mov dword [ebp - 0x144], eax
xor eax, eax
inc eax
mov dword [ebp - 0x164], ebx
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x15c], eax
lea eax, [ebp - 0x168]
push ebx
push eax
lea eax, [ebp - 0x148]
mov dword [ebp - 0x160], ebx
push eax
call dword [sym.imp.gdiplus.dll_GdiplusStartup]
mov ecx, eax
test ecx, ecx
je 0x40755f
mov eax, dword [0x446098]
cmp eax, 0x446098
je 0x407452
test byte [eax + 0x1c], 4
je 0x407452
push ecx
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xe
pop ecx
call fcn.00406b94
jmp 0x407452
lea eax, [ebp - 0x128]
mov dword [ebp - 0x11c], ebx
push eax
push 0x20006
push ebx
push 0x403798
push SysReAllocString
mov dword [ebp - 0x128], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov esi, eax
mov dword [ebp - 0x12c], esi
test esi, esi
jne 0x4075ca
push 4
lea eax, [ebp - 0x120]
mov dword [ebp - 0x12c], ebx
mov ebx, dword [ebp - 0x128]
push eax
push 4
push esi
push 0x402864
push ebx
mov dword [ebp - 0x11c], ebx
mov dword [ebp - 0x120], 1
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
xor ebx, ebx
push 1
push 0x1ab1
push ebx
call dword [sym.imp.ntdll.dll_WinSqmIncrementDWORD]
test byte [0x447240], 1
je 0x4075eb
mov edx, 0x402480
call fcn.00408369
lea ecx, [ebp - 0x120]
call fcn.0041b17d
test eax, eax
js 0x407693
mov esi, 0x4460d0
cmp dword [0x446038], 5
jbe 0x407681
push 0x4000
push 0
mov ecx, 0x446038
call fcn.00405d49
test al, al
je 0x407681
push ebx
call fcn.0041b2a8
and dword [ebp - 0xf4], 0
and dword [ebp - 0xec], 0
mov dword [ebp - 0x120], eax
lea eax, [ebp - 0x120]
mov dword [ebp - 0xf8], eax
mov dword [ebp - 0xf0], 4
cmp ebx, 0x1d
ja 0x40765a
mov edx, dword [esi]
jmp 0x40765c
xor edx, edx
lea ecx, [ebp - 0xe8]
call fcn.00405d7e
lea eax, [ebp - 0x118]
mov edx, 0x4054d4
push eax
push 4
push ecx
push ecx
mov ecx, 0x446038
call fcn.00405cc1
add esi, 0x20
inc ebx
cmp esi, 0x446490
jl 0x407603
xor ebx, ebx
call fcn.00408279
mov esi, dword [0x447474]
lea eax, [ebp - 0x120]
push eax
lea ecx, [ebp - 0x170]
mov dword [ebp - 0x120], esi
call fcn.00407b8a
mov ecx, eax
cmp dword [esi + 0x28], ebx
je 0x4076c3
call dword [sym.imp.api_ms_win_crt_private_l1_1_0.dll__o_terminate]
mov eax, dword [ecx]
mov dword [esi + 0x24], eax
mov eax, dword [ecx + 4]
mov dword [esi + 0x28], eax
mov dword [ecx], ebx
mov dword [ecx + 4], ebx
cmp dword [ebp - 0x16c], 0
jne 0x4076bd
mov edi, dword [ebp - 0x124]
mov edx, dword [ebp - 0x138]
push ecx
mov ecx, edi
call fcn.004085d4
mov ebx, eax
test ebx, ebx
je 0x40776a
mov eax, dword [ebx]
mov esi, dword [eax + 0x20]
mov ecx, esi
call dword [0x448860]
mov ecx, ebx
call esi
mov edi, dword [ebx + 0x28]
xor ecx, ecx
test edi, edi
setne cl
mov eax, dword [0x446098]
cmp eax, 0x446098
je 0x407738
test byte [eax + 0x1c], 0x10
je 0x407738
push edi
push ecx
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xf
pop ecx
call fcn.00406bb8
mov eax, dword [ebx]
push 1
mov esi, dword [eax + 0x18]
mov ecx, esi
call dword [0x448860]
mov ecx, ebx
call esi
test edi, edi
je 0x40776a
test byte [0x447240], 1
je 0x407762
mov edx, 0x402470
call fcn.00408369
test edi, edi
jne 0x4076e2
call fcn.00418d6c
mov eax, dword [ebp - 0x144]
mov edi, dword [ebp - 0x130]
test eax, eax
je 0x407786
push eax
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
push dword [ebp - 0x148]
call dword [sym.imp.gdiplus.dll_GdiplusShutdown]
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [ebp - 0x11c]
xor edi, edi
cmp dword [ebp - 0x12c], edi
jne 0x4077ce
push 4
lea eax, [ebp - 0x130]
mov dword [ebp - 0x130], edi
push eax
push 4
push edi
push 0x402864
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp dword [ebp - 0x13c], 0
je 0x4077df
push 2
pop ecx
call fcn.00406e46
call fcn.0041b1d5
call dword [sym.imp.DUI70.dll_UnInitThread]
push 0x400000
call dword [sym.imp.DUI70.dll_UnInitProcessPriv]
call dword [sym.imp.ole32.dll_CoUninitialize]
call dword [sym.imp.KERNEL32.dll_GetTickCount64]
sub eax, dword [ebp - 8]
push edi
sbb edx, dword [ebp - 0x140]
push 0x3e8
push edx
push eax
call fcn.00441fb0
mov esi, dword [0x446038]
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x154], edx
cmp esi, 5
jbe 0x4078ad
push 0x4000
push edi
mov ecx, 0x446038
call fcn.00405d49
test al, al
je 0x407884
lea eax, [ebp - 0x158]
mov dword [ebp - 0xe4], edi
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0xe0], 8
mov dword [ebp - 0xdc], edi
lea eax, [ebp - 0x108]
mov edx, 0x4054b0
push eax
push 3
push ecx
push ecx
call fcn.00405cc1
mov esi, dword [0x446038]
mov ecx, 0x446038
cmp esi, 5
jbe 0x4078ad
push 0x4000
push edi
call fcn.00405d49
test al, al
je 0x4078ad
lea eax, [ebp - 0xf8]
mov edx, 0x405491
push eax
push 2
push ecx
push ecx
call fcn.00405cc1
call fcn.0040794b
mov esi, dword [0x446098]
cmp esi, 0x446098
je 0x4078ec
jmp 0x4078de
mov eax, dword [esi + 8]
or eax, dword [esi + 0xc]
je 0x4078dc
push dword [esi + 0xc]
push dword [esi + 8]
call dword [sym.imp.ADVAPI32.dll_UnregisterTraceGuids]
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov esi, dword [esi]
test esi, esi
jne 0x4078c2
mov dword [0x446098], 0x446098
test ebx, ebx
je 0x4078f7
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
inc eax
jmp 0x407938
mov eax, dword [0x446098]
cmp eax, 0x446098
je 0x407922
test byte [eax + 0x1c], 4
je 0x407922
push esi
push dword [eax + 0x14]
mov edx, 0x402958
push dword [eax + 0x10]
push 0xd
pop ecx
call fcn.00406b94
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.ole32.dll_CoUninitialize]
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004406d0
mov esp, ebp
pop ebp
ret 0x10