Function at 0x404630
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x14
push ebx
mov ebx, dword [esp + 0x20]
push ebp
push esi
push edi
xor edi, edi
cmp ebx, edi
mov dword [esp + 0x18], edi
mov ebp, 1
jl 0x4047af
mov eax, dword [esp + 0x30]
mov esi, eax
sar esi, 0x10
mov ecx, eax
and ecx, 0x1000000
and eax, 0xff
and esi, 0xff
cmp ebx, 0x14
mov dword [esp + 0x10], ecx
mov dword [0x422198], ecx
mov dword [esp + 0x14], eax
je 0x40468d
cmp ebx, 0x91
je 0x40468d
cmp ebx, 0x90
jne 0x404699
cmp esi, 0xff
je 0x404c42
cmp ebx, 0x12
je 0x4047a6
cmp ebx, 0xa4
je 0x4047a6
cmp ebx, 0xa5
je 0x4047a6
cmp byte [0x422d36], 0
je case.0x4046da.66
lea eax, [ebx - 0x41]
cmp eax, 0x32
ja case.0x4046da.66
movzx eax, byte [eax + 0x404c68]
jmp dword [eax*4 + 0x404c4c]
mov ecx, dword [esp + 0x28]
push edi
push 0x3f8
push 0x111
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov edx, dword [esp + 0x28]
push edi
push 0x3ed
push 0x111
push edx
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x28]
push edi
push 0x3eb
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
cmp dword [0x422d00], edi
je case.0x4046da.66
mov ecx, dword [esp + 0x28]
push edi
push 0x3ef
push 0x111
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov edx, dword [esp + 0x28]
push edi
push 0x3e8
push 0x111
push edx
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x28]
push edi
push 0x3ff
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov byte [0x422d36], 0
jmp 0x4047bf
mov byte [0x422d36], 1
jmp 0x4047bf
mov esi, ebx
mov dword [esp + 0x10], ebp
mov dword [0x422198], ebp
mov dword [esp + 0x14], ebp
cmp byte [0x4226f3], 0
je 0x404851
cmp dword [0x422e40], edi
je 0x404851
push esi
push ebx
push str._nKey_Down:_Windows____d__BIOS____d_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4047f0
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push ebp
push 0x422d70
call fcn.00407ebf
mov edx, dword [0x4234e8]
push edx
push str.Attempting_key_match_of_type__d_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 0x1c
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404830
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push ebp
push 0x422d70
call fcn.00407ebf
add esp, 0x10
cmp dword [0x4234e8], ebp
mov eax, dword [0x42220c]
mov dword [0x422e3c], esi
mov dword [0x422cf4], ebx
jne 0x4048b6
mov edx, dword [eax]
cmp edx, 0xffffffff
je 0x404b55
mov ecx, eax
cmp edx, ebx
jne 0x4048a0
mov edx, dword [ecx + 0xc]
test edx, edx
je 0x40488d
cmp dword [esp + 0x10], 0
jne 0x404894
test edx, edx
jne 0x4048a0
cmp dword [esp + 0x10], 0
jne 0x4048a0
mov ecx, dword [ecx + 0x3c]
test ecx, ecx
je 0x404904
cmp ecx, 1
je 0x404904
add edi, ebp
mov edx, edi
shl edx, 6
lea ecx, [edx + eax]
mov edx, dword [ecx]
cmp edx, 0xffffffff
jne 0x404877
jmp 0x404b55
mov edx, dword [eax + 4]
cmp edx, 0xffffffff
je 0x404b55
mov ecx, eax
cmp edx, esi
jne 0x4048ed
mov edx, dword [ecx + 0xc]
test edx, edx
je 0x4048da
cmp dword [esp + 0x10], 0
jne 0x4048e1
test edx, edx
jne 0x4048ed
cmp dword [esp + 0x10], 0
jne 0x4048ed
mov ecx, dword [ecx + 0x3c]
test ecx, ecx
je 0x404904
cmp ecx, 1
je 0x404904
add edi, ebp
mov ecx, edi
shl ecx, 6
mov edx, dword [ecx + eax + 4]
add ecx, eax
cmp edx, 0xffffffff
jne 0x4048c4
jmp 0x404b55
cmp edi, 0xffffffff
mov dword [esp + 0x2c], edi
mov dword [esp + 0x10], edi
je 0x404b55
cmp edi, 0xfffffffe
je 0x404b55
cmp byte [0x4226f3], 0
je 0x404987
cmp dword [0x422e40], 0
je 0x404987
mov edx, edi
shl edx, 6
mov ecx, dword [eax + edx + 0x10]
add eax, edx
mov edx, dword [eax + 8]
push ecx
push edx
push str.Key_matched:__s._Current_status__d_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 0x10
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404960
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
mov eax, dword [0x42220c]
add esp, 0x10
cmp dword [0x422d00], 0
je 0x4049b8
mov edx, edi
shl edx, 6
cmp dword [edx + eax + 0x10], 9
jne 0x4049b8
mov eax, dword [esp + 0x28]
push 0
push eax
call fcn.004042f0
add esp, 8
test al, al
je 0x404c42
mov eax, dword [0x42220c]
mov ebx, edi
shl ebx, 6
lea esi, [ebx + eax]
mov eax, dword [esi + 0x10]
cmp eax, 1
mov ebp, 7
je 0x404a9a
cmp eax, ebp
je 0x404a9a
cmp byte [0x4226f3], 0
je 0x404a27
cmp dword [0x422e40], 0
je 0x404a27
push str.Recorded_time_key_depressed_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 8
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404a05
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [0x42220c]
mov ecx, dword [esp + 0x1c]
lea esi, [ebx + eax]
mov eax, dword [0x422cfc]
test eax, eax
mov dword [esi + 0x18], ecx
mov edx, dword [esp + 0x20]
mov dword [esi + 0x1c], edx
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
jl 0x404a85
mov ecx, dword [0x422cf8]
jg 0x404a65
test ecx, ecx
jbe 0x404a85
mov edx, ebp
sub edx, ecx
mov ecx, edi
sbb ecx, eax
mov eax, dword [0x4221a4]
push eax
mov eax, dword [0x4221a0]
push eax
push ecx
push edx
call fcn.00408c00
mov dword [0x42270c], eax
mov dword [0x422cf8], ebp
mov dword [0x422cfc], edi
mov edi, dword [esp + 0x2c]
mov ebp, 7
mov eax, dword [esi + 0x10]
cmp eax, 3
je 0x404ab4
cmp eax, ebp
je 0x404ab4
cmp eax, 8
je 0x404ab4
mov dword [esi + 0x10], 1
jmp 0x404ab7
mov dword [esi + 0x10], ebp
cmp byte [0x4226f3], 0
mov dword [0x422704], edi
je 0x404b12
cmp dword [0x422e40], 0
je 0x404b12
mov ecx, dword [esi + 0x10]
push ecx
push str.New_status__d_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 0xc
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404af0
sub eax, edx
mov edx, dword [0x422e40]
push edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
mov eax, dword [esp + 0x28]
push edi
push 0
push eax
call fcn.00403190
add esp, 0xc
cmp dword [esp + 0x14], 0
jle 0x404b50
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, dword [0x42220c]
cmp dword [ebx + ecx + 0x10], ebp
jne 0x404b40
push ebp
jmp 0x404b42
push 1
push edi
call fcn.004037b0
add esp, 8
sub esi, 1
jne 0x404b31
mov eax, dword [0x42220c]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
xor edi, edi
cmp dword [eax], 0xffffffff
je 0x404bcc
xor esi, esi
jmp 0x404b70
mov edx, dword [esi + eax + 0x30]
and edx, dword [esi + eax + 0x34]
cmp edx, 0xffffffff
je 0x404bbe
mov ecx, dword [esi + eax + 0x10]
cmp ecx, 6
je 0x404bbe
cmp ecx, 4
jne 0x404bbe
push edi
call fcn.00402e70
add esp, 4
test al, al
mov eax, dword [0x42220c]
je 0x404bbe
cmp dword [esi + eax + 0x10], 4
jne 0x404bbe
push edi
push 0
mov ebp, 5
push ebx
mov dword [esi + eax + 0x10], ebp
call fcn.00403190
mov eax, dword [0x42220c]
add esp, 0xc
add edi, 1
mov esi, edi
shl esi, 6
cmp dword [esi + eax], 0xffffffff
jne 0x404b70
push ebx
call fcn.00403360
add esp, 4
cmp dword [0x422d00], 0
je 0x404bf2
cmp ebp, 5
jne 0x404bf2
push 0
push ebx
call fcn.004042f0
add esp, 8
test al, al
je 0x404c42
cmp byte [0x4226f3], 0
je 0x404c42
cmp dword [0x422e40], 0
je 0x404c42
push str.Completed_Key_down_processing_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 8
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404c20
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret