Function at 0x404ca0
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x10
push ebx
mov ebx, dword [esp + 0x1c]
test ebx, ebx
push ebp
push esi
mov dword [esp + 0xc], 0
mov byte [0x422d36], 0
jl 0x404cf9
mov eax, dword [esp + 0x28]
mov esi, eax
sar esi, 0x10
and eax, 0x1000000
and esi, 0xff
cmp ebx, 0x14
mov ebp, eax
je 0x404ce8
cmp ebx, 0x91
je 0x404ce8
cmp ebx, 0x90
jne 0x404d00
cmp esi, 0xff
jne 0x404d00
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret
mov esi, ebx
mov ebp, 1
cmp byte [0x4226f3], 0
je 0x404d98
cmp dword [0x422e40], 0
je 0x404d98
push esi
push ebx
push str._nKey_Up:_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 0x404d36
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
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]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404d76
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
mov edx, dword [0x42220c]
push edi
xor edi, edi
cmp dword [0x4234e8], 1
jne 0x404df6
mov ecx, dword [edx]
cmp ecx, 0xffffffff
je 0x4050f9
mov eax, edx
cmp ecx, ebx
jne 0x404dda
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x404dca
test ebp, ebp
jne 0x404dce
test ecx, ecx
jne 0x404dda
test ebp, ebp
jne 0x404dda
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x404e44
cmp eax, 1
je 0x404e44
add edi, 1
mov eax, edi
shl eax, 6
mov ecx, dword [eax + edx]
add eax, edx
cmp ecx, 0xffffffff
jne 0x404db7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret
mov ecx, dword [edx + 4]
cmp ecx, 0xffffffff
je 0x4050f9
mov eax, edx
cmp ecx, esi
jne 0x404e27
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x404e17
test ebp, ebp
jne 0x404e1b
test ecx, ecx
jne 0x404e27
test ebp, ebp
jne 0x404e27
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x404e44
cmp eax, 1
je 0x404e44
add edi, 1
mov ecx, edi
shl ecx, 6
lea eax, [ecx + edx]
mov ecx, dword [eax + 4]
cmp ecx, 0xffffffff
jne 0x404e04
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret
test edi, edi
mov dword [esp + 0x28], edi
jl 0x4050f9
cmp byte [0x4226f3], 0
je 0x404eb8
cmp dword [0x422e40], 0
je 0x404eb8
mov eax, edi
shl eax, 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 esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404e90
mov ecx, dword [0x422e40]
push ecx
sub eax, edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
mov edx, dword [0x42220c]
add esp, 0x10
cmp dword [0x422d00], 0
mov ebp, dword [esp + 0x24]
je 0x404eea
mov eax, edi
shl eax, 6
cmp dword [eax + edx + 0x10], 9
jne 0x404eea
push 0
push ebp
call fcn.004042f0
add esp, 8
test al, al
je 0x4050f9
mov edx, dword [0x42220c]
mov esi, edi
shl esi, 6
mov eax, dword [esi + edx + 0x10]
cmp eax, 1
mov dword [esp + 0x14], esi
jne 0x404f06
mov dword [esi + edx + 0x10], 2
jmp 0x404f17
cmp eax, 7
jne 0x4050f9
mov dword [esi + edx + 0x10], 8
cmp byte [0x4226f3], 0
je 0x404f6a
cmp dword [0x422e40], 0
je 0x404f6a
mov ecx, dword [esi + edx + 0x10]
push ecx
push str.New_status__d_n
push 0x422d70
call fcn.004079c0
mov eax, 0x422d70
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x404f48
sub eax, edx
mov edx, dword [0x422e40]
push edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
push edi
push 0
push ebp
mov dword [0x4234e4], edi
call fcn.00403190
add esp, 0xc
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [0x42220c]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esi + edi + 0x18]
mov eax, dword [0x4221a4]
mov edx, dword [esp + 0x1c]
sbb edx, dword [esi + edi + 0x1c]
push eax
mov eax, dword [0x4221a0]
push eax
push edx
push ecx
call fcn.00408c00
xor ebx, ebx
cmp dword [edi], 0xffffffff
mov dword [0x422700], eax
je 0x405029
xor esi, esi
mov edi, edi
mov ecx, dword [esi + edi + 0x30]
and ecx, dword [esi + edi + 0x34]
cmp ecx, 0xffffffff
je 0x40501b
cmp dword [esi + edi + 0x10], 6
je 0x40501b
push ebx
call fcn.00402e70
add esp, 4
test al, al
je 0x405015
mov eax, dword [0x42220c]
cmp dword [esi + eax + 0x10], 4
push ebx
push 0
push ebp
jne 0x405005
mov edi, 5
mov dword [esi + eax + 0x10], edi
call fcn.00403190
mov dword [esp + 0x1c], edi
jmp 0x405012
mov dword [esi + eax + 0x10], 2
call fcn.00403190
add esp, 0xc
mov edi, dword [0x42220c]
add ebx, 1
mov esi, ebx
shl esi, 6
cmp dword [esi + edi], 0xffffffff
jne 0x404fc0
push ebp
call fcn.00403360
add esp, 4
cmp dword [0x422d00], 0
je 0x405077
cmp dword [esp + 0x10], 5
jne 0x40505b
push 0
push ebp
call fcn.004042f0
add esp, 8
test al, al
jne 0x405077
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret
call fcn.00403b00
test al, al
je 0x405077
push 1
push ebp
call fcn.004042f0
add esp, 8
test al, al
je 0x4050f9
mov edx, dword [0x42220c]
mov eax, dword [esp + 0x14]
cmp dword [eax + edx + 0x3c], 1
jne 0x405095
mov ecx, dword [esp + 0x28]
push ecx
call fcn.004029f0
add esp, 4
cmp byte [0x4226f3], 0
je 0x4050e3
cmp dword [0x422e40], 0
je 0x4050e3
push str.Completed_Key_up_processing_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 0x4050c1
sub eax, edx
mov edx, dword [0x422e40]
push edx
push eax
push 1
push 0x422d70
call fcn.00407ebf
add esp, 0x10
cmp byte [0x421eef], 0
je 0x4050f9
mov ecx, dword [0x42219c]
push 1
call fcn.00406500
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret