Function at 0x423430
Capabilities:
Set global application hook

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x449820
push eax
mov eax, dword [esp + 0x10]
mov dword fs:[0], esp
sub esp, 0xc
test eax, eax
push ebx
push esi
je 0x423749
mov eax, dword [0x46bca8]
test eax, eax
jne 0x4234f5
push str.SpyHk55
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
mov dword [0x46bca8], eax
jne 0x4234f5
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::CString_4
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], 0
call sub.MFC42.DLL_CString::CString_4
push 0x70
lea ecx, [esp + 0xc]
mov byte [esp + 0x20], 1
call sub.MFC42.DLL_CString::LoadStringA
push 1
lea ecx, [esp + 0x28]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 8]
push 0x1030
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x24]
mov byte [esp + 0x1c], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
add esp, 0x18
ret
mov ecx, dword [0x46bc9c]
mov esi, dword [sym.imp.USER32.dll_SetWindowsHookExA]
test ecx, ecx
jne 0x4235ab
mov edx, dword [sym.imp.SpyHk55.dll__SpyxxGetMsgProc_12]
push 0
push eax
push edx
push 3
call esi
test eax, eax
mov dword [0x46bc9c], eax
jne 0x42359e
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::CString_4
mov ebx, 2
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], ebx
call sub.MFC42.DLL_CString::CString_4
push 0x71
lea ecx, [esp + 0xc]
mov byte [esp + 0x20], 3
call sub.MFC42.DLL_CString::LoadStringA
push 1
lea ecx, [esp + 0x28]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 8]
push 0x1030
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x24]
mov byte [esp + 0x1c], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
add esp, 0x18
ret
mov edx, dword [sym.imp.SpyHk55.dll_ghhkMsgHook]
mov dword [edx], eax
mov eax, dword [0x46bca8]
mov ecx, dword [0x46bca0]
test ecx, ecx
jne 0x423669
push 0
push eax
mov eax, dword [sym.imp.SpyHk55.dll__SpyxxCallWndProc_12]
mov ebx, 4
push eax
push ebx
call esi
test eax, eax
mov dword [0x46bca0], eax
jne 0x42365c
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::CString_4
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], ebx
call sub.MFC42.DLL_CString::CString_4
push 0x72
lea ecx, [esp + 0xc]
mov byte [esp + 0x20], 5
call sub.MFC42.DLL_CString::LoadStringA
push 1
lea ecx, [esp + 0x28]
call sub.MFC42.DLL_CString::LoadStringA
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 8]
push 0x1030
push ecx
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [0x46bc9c]
push eax
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
lea ecx, [esp + 0x24]
mov byte [esp + 0x1c], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
add esp, 0x18
ret
mov ecx, dword [sym.imp.SpyHk55.dll_ghhkCallHook]
mov dword [ecx], eax
mov eax, dword [0x46bca8]
mov ecx, dword [0x46c328]
test ecx, ecx
jne 0x423681
mov ecx, dword [0x46c330]
test ecx, ecx
je 0x4237c2
mov ecx, dword [0x46bca4]
test ecx, ecx
jne 0x4237c2
mov edx, dword [sym.imp.SpyHk55.dll__SpyxxCallWndRetProc_12]
push 0
push eax
push edx
push 0xc
call esi
test eax, eax
mov dword [0x46bca4], eax
jne 0x42373f
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_4
mov ebx, 6
lea ecx, [esp + 0xc]
mov dword [esp + 0x1c], ebx
call sub.MFC42.DLL_CString::CString_4
push 0x73
lea ecx, [esp + 0x14]
mov byte [esp + 0x20], 7
call sub.MFC42.DLL_CString::LoadStringA
push 1
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::LoadStringA
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
push 0x1030
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [0x46bc9c]
mov esi, dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
push edx
call esi
mov eax, dword [0x46bca0]
push eax
call esi
lea ecx, [esp + 0xc]
mov byte [esp + 0x1c], bl
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xc]
mov dword fs:[0], ecx
add esp, 0x18
ret
mov ecx, dword [sym.imp.SpyHk55.dll_ghhkRetHook]
mov dword [ecx], eax
jmp 0x4237c2
mov edx, dword [sym.imp.SpyHk55.dll_gcSubclass]
cmp dword [edx], 0
je 0x423768
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x32
call esi
mov eax, dword [sym.imp.SpyHk55.dll_gcSubclass]
cmp dword [eax], 0
jne 0x42375a
mov eax, dword [0x46bc9c]
mov esi, dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
test eax, eax
je 0x423784
push eax
call esi
mov dword [0x46bc9c], 0
mov eax, dword [0x46bca0]
test eax, eax
je 0x423797
push eax
call esi
xor eax, eax
mov dword [0x46bca0], eax
mov ecx, dword [0x46c328]
test ecx, ecx
jne 0x4237ab
mov ecx, dword [0x46c330]
test ecx, ecx
je 0x4237c2
test eax, eax
je 0x4237c2
mov ecx, dword [0x46bca4]
push ecx
call esi
mov dword [0x46bca4], 0
mov ecx, dword [esp + 0x14]
pop esi
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x18
ret