Function at 0x409b42
Capabilities:
Create process on windows
Encode data using xor
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac
mov eax, dword [0x430018]
xor eax, esp
mov dword [esp + 0xa8], eax
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
push edi
push ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
call dword [sym.imp.GDI32.dll_GetStockObject]
mov edi, 0x7f00
mov dword [esp + 0x8c], eax
push edi
push ebx
call dword [sym.imp.USER32.dll_LoadCursorW]
push edi
push ebx
mov dword [esp + 0x90], eax
call dword [sym.imp.USER32.dll_LoadIconW]
push 3
mov dword [esp + 0x88], eax
mov edi, 0x4308a8
mov dword [esp + 0x94], ebx
lea eax, [esp + 0x74]
pop ebx
push eax
mov dword [esp + 0x84], esi
mov dword [esp + 0x78], 0x409e35
mov dword [esp + 0x98], edi
mov dword [esp + 0x74], ebx
call dword [sym.imp.USER32.dll_RegisterClassW]
push 0
push esi
push 0
push 0
mov eax, closesocket
push eax
push eax
push eax
push eax
push 0xc80000
push edi
push edi
xor edi, edi
push edi
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
push 0xffffffffffffffec
push esi
call dword [sym.imp.USER32.dll_GetWindowLongW]
or eax, 0x80080
push eax
push 0xffffffffffffffec
push esi
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0x40
push 0x258
push 0x1f4
mov eax, 0xf423f
push eax
push eax
push edi
push esi
call dword [sym.imp.USER32.dll_SetWindowPos]
push dword [ebp + 0x14]
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [0x431b38]
add eax, eax
cdq
idiv ebx
push esi
mov dword [0x431b40], eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
mov dword [0x431b3c], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push edi
push 0x20
mov dword [0x431b50], eax
mov eax, dword [0x431b40]
push 1
push eax
push eax
call dword [sym.imp.GDI32.dll_CreateBitmap]
push eax
push dword [0x431b50]
mov dword [0x431b48], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [0x431b40]
push 0xff0062
push eax
push eax
push edi
push edi
push dword [0x431b50]
call dword [sym.imp.GDI32.dll_PatBlt]
push 1
mov dword [0x431b4c], edi
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
call dword [sym.imp.WINMM.dll_timeGetTime]
push edi
mov ebx, eax
call fcn.004133f8
pop ecx
push eax
call fcn.004133e6
pop ecx
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
push 1
push edi
push edi
push edi
lea eax, [esp + 0xa8]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x409d1c
cmp dword [esp + 0x9c], 0x12
je 0x409e0f
lea eax, [esp + 0x98]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x98]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x409cce
push 0x14
pop ecx
mov esi, 0x42a090
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
push 0x31
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
add edx, 0x35
xor word [esp + ecx*2 + 0x20], dx
inc ecx
cmp ecx, 0x28
jl 0x409d2f
mov esi, 0x42a080
lea edi, [esp + 0x10]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
xor edi, edi
cmp word [0x42a08e], di
je 0x409d74
push 0x31
mov ecx, edi
pop esi
xor edx, edx
mov eax, ecx
div esi
add edx, 0x35
xor word [esp + ecx*2 + 0x10], dx
inc ecx
cmp ecx, 8
jl 0x409d60
push edi
push edi
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x1c]
push eax
push edi
push edi
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
call fcn.0040bcdc
call dword [sym.imp.WINMM.dll_timeGetTime]
cmp eax, ebx
jbe 0x409cce
inc dword [0x431b4c]
call fcn.00409eee
mov eax, dword [0x431b40]
push 0xcc0020
push edi
push edi
push dword [0x431b50]
push eax
push eax
push edi
push edi
push dword [0x431b3c]
call dword [sym.imp.GDI32.dll_BitBlt]
push dword [0x431b4c]
mov esi, 0x431b58
push str.FRAME_:__d
push esi
call dword [sym.imp.USER32.dll_wsprintfW]
mov ecx, esi
add esp, 0xc
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x409de7
sub ecx, edx
sar ecx, 1
push ecx
push esi
push edi
push 4
push dword [0x431b3c]
call dword [sym.imp.GDI32.dll_TextOutW]
add ebx, 0x10
jmp 0x409cce
push 1
call dword [sym.imp.WINMM.dll_timeEndPeriod]
mov ecx, dword [esp + 0xb4]
mov eax, dword [esp + 0xa0]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040ed3d
mov esp, ebp
pop ebp
ret 0x10