Function at 0x41f030
Capabilities:
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1b4
push ebx
push esi
mov esi, ecx
mov ecx, str.VirtualConsoleClass
push edi
mov eax, ecx
mov dx, word [eax]
xor ebx, ebx
cmp dx, word [ecx]
jne 0x41f06d
cmp dx, bx
je 0x41f069
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x41f06d
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x41f045
xor eax, eax
jmp 0x41f072
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x41f090
push ebx
push ebx
push 0x40
push str.Error:_class_names_must_be_equal_
call fcn.00420020
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x50b380]
mov ecx, dword [0x50b3a8]
mov edi, dword [sym.imp.USER32.dll_LoadCursorW]
push 0x7f00
push ebx
mov dword [ebp - 0xb4], 0x30
mov dword [ebp - 0xb0], 0x28
mov dword [ebp - 0xac], 0x41efe0
mov dword [ebp - 0xa8], ebx
mov dword [ebp - 0xa4], 0x10
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], ecx
call edi
mov edx, dword [str.VirtualConsoleClass]
mov ecx, dword [0x50b380]
mov dword [ebp - 0x98], eax
mov eax, dword [0x50b3ac]
mov dword [ebp - 0x8c], edx
mov edx, dword [0x50b3a8]
push 0x7f00
push ebx
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x90], ebx
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x54], 0x30
mov dword [ebp - 0x50], 0x28
mov dword [ebp - 0x4c], 0x40ec90
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], 0x10
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], edx
call edi
mov ecx, dword [0x50b3ac]
mov edx, dword [0x50b380]
mov dword [ebp - 0x38], eax
mov eax, dword [str.VirtualConsoleClassWork]
mov dword [ebp - 0x2c], eax
mov eax, dword [0x50b3a8]
push 0x7f00
push ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x84], 0x30
mov dword [ebp - 0x80], 0x28
mov dword [ebp - 0x7c], 0x49cb80
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], 0x10
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x6c], eax
call edi
mov ecx, dword [str.VirtualConsoleClassBack]
mov edx, dword [0x50b3ac]
mov edi, dword [sym.imp.USER32.dll_RegisterClassExW]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0xb4]
push eax
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], edx
call edi
test ax, ax
je 0x41f402
lea ecx, [ebp - 0x54]
push ecx
call edi
test ax, ax
je 0x41f402
lea edx, [ebp - 0x84]
push edx
call edi
test ax, ax
je 0x41f402
mov eax, dword [esi + 0x4238]
lea ecx, [esi + 0x4238]
cmp eax, ebx
je 0x41f241
cmp dword [eax + 0x18], ebx
jne 0x41f20e
push ecx
call fcn.004097a0
add esp, 4
jmp 0x41f241
mov edx, dword [eax + 0x18]
lea ecx, [ebp - 8]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push 1
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_AttachThreadInput]
test eax, eax
jne 0x41f241
push ebx
push ebx
push ebx
push ebx
push str.Inside:_AttachThreadInput___failed_
call fcn.004200b0
add esp, 0x14
mov ecx, esi
call fcn.004050c0
mov ecx, esi
mov dword [ebp - 8], eax
call fcn.004098e0
mov dword [ebp - 0x10], eax
mov eax, 0xffffff
mov edi, SysReAllocString
mov ebx, edi
test dword [esi + 0x426c], eax
je 0x41f271
test dword [esi + 0x4288], eax
jne 0x41f27a
cmp dword [esi + 0x4238], 0
je 0x41f2ae
lea eax, [ebp - 0x24]
push eax
mov ecx, esi
call fcn.004100b0
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x18]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], edi
mov ecx, esi
mov dword [eax + 0xc], ebx
call fcn.00405990
sub edi, dword [ebp - 0x24]
sub ebx, dword [ebp - 0x20]
mov eax, dword [esi + 0x4238]
test eax, eax
je 0x41f2c0
mov ecx, dword [eax + 0x18]
mov dword [ebp - 0xc], ecx
jmp 0x41f2c9
mov edx, dword [0x50b38c]
mov dword [ebp - 0xc], edx
mov ecx, dword [0x50b3a4]
cmp byte [ecx + 0x127d2], 0
je 0x41f37a
mov ecx, dword [0x50b3a0]
mov dl, byte [ecx + 0x1220]
mov byte [ebp - 1], dl
test dl, dl
je 0x41f2f7
mov edx, dword [ecx + 0x113e0]
jmp 0x41f2fd
mov edx, dword [esi + 0x4260]
cmp byte [ecx + 0x1236], 0
mov dword [ebp - 0x14], str._Desktop
jne 0x41f314
mov dword [ebp - 0x14], 0x4c1318
mov ecx, str._Inside
test eax, eax
jne 0x41f322
mov ecx, 0x4c1318
cmp byte [ebp - 1], 0
mov eax, str._Quake
jne 0x41f332
mov eax, 0x4c1318
push edx
mov edx, dword [ebp - 8]
push edx
push dword [ebp - 0x10]
mov edx, dword [esi + 0x42a8]
push ebx
push edi
push edx
mov edx, dword [esi + 0x42a4]
push edx
push dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
push edx
push ecx
push eax
lea eax, [ebp - 0x1b4]
push str.Creating_main_window._s_s_s_Parentx_08X_X_i_Y_i_W_i_H_i_stylex_08X_exStylex_08X_Mode_u
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x34
push 1
push 1
lea ecx, [ebp - 0x1b4]
push ecx
mov ecx, esi
call fcn.00405100
mov edx, dword [0x50b380]
mov eax, dword [ebp - 0xc]
push 0
push edx
push 0
push eax
mov eax, dword [0x50b39c]
mov ecx, dword [eax + 0x42a8]
mov edx, dword [eax + 0x42a4]
mov eax, dword [ebp - 0x10]
push ebx
push edi
push ecx
mov ecx, dword [0x50b3a0]
push edx
push eax
push 0
call fcn.00447c50
mov ecx, dword [str.VirtualConsoleClass]
mov edx, dword [ebp - 8]
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [0x50b384], eax
test eax, eax
jne 0x41f3e4
push eax
push eax
push 0x40
push str.Cant_create_main_window_
call fcn.00420020
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 1
push 0
mov ecx, esi
call fcn.00413230
mov ecx, esi
call fcn.00417e40
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
push ebx
push ebx
push ebx
push str.Failed_to_register_class_names
call fcn.004200b0
add esp, 0x14
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret