Function at 0x456080
Capabilities:
Get keyboard layout
Log keystrokes via polling
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x16c
mov eax, dword [0x4e60ec]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 0x14]
mov esi, edi
push 0x41
push dword [0x4eada4]
mov dword [ebp - 0x14c], edi
mov dword [ebp - 0x150], 0
call fcn.004030c0
push 0x43
push dword [0x4eada4]
mov dword [ebp - 0x148], eax
call fcn.004030c0
push 0x5c
push dword [0x4eada4]
mov dword [ebp - 0x154], eax
call fcn.004030c0
push 0x4e
push dword [0x4eada4]
mov dword [ebp - 0x144], eax
call fcn.004030c0
add esp, 0x20
mov dword [ebp - 0x168], eax
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov dword [ebp - 0x16c], eax
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
test eax, eax
jne 0x456133
push pe_nt_image_headers32
push eax
lea eax, [ebp - 0x10c]
push eax
call fcn.0046c5c0
add esp, 0xc
jmp 0x4561b0
mov edx, dword [ebp + 0x10]
cmp ebx, 0x12
jne 0x456156
movzx ecx, byte [ebp - 0x67]
mov eax, edx
shr eax, 0x10
test eax, 0x100
movzx eax, byte [ebp - 0xfa]
cmovne ecx, eax
mov byte [ebp - 0x67], cl
mov eax, dword [ebp - 0x148]
cmp eax, 3
je 0x45617d
cmp eax, 1
jg 0x4561a3
mov eax, dword [0x4ead8c]
cmp dword [eax + 0x144], 0
je 0x4561a3
cmp dword [ebp - 0x154], 0
jne 0x4561a3
cmp ebx, 0x90
jne 0x4561a3
test byte [ebp - 0xfc], 0x80
jne 0x4561a3
mov eax, edx
mov ebx, 0x2b
shr eax, 0x10
test eax, 0xc000
jne 0x4561a3
xor byte [ebp - 0x7c], 1
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_SetKeyboardState]
mov edx, dword [0x4ead8c]
mov eax, dword [ebp + 0x10]
shr eax, 0x10
mov dword [ebp - 0x158], edx
mov ecx, eax
cmp dword [edx + 0x14c], 0
je 0x4561dd
and eax, 0xc000
cmp eax, 0x4000
je 0x45648c
movzx eax, cx
mov dword [ebp - 0x15c], eax
test eax, 0x2000
je 0x456209
test byte [ebp - 0x67], 0x80
mov ecx, 0
mov dword [ebp - 0xc], 1
cmove ecx, dword [ebp - 0xc]
mov dword [ebp - 0x150], ecx
jmp 0x45620b
xor ecx, ecx
movzx eax, ax
mov dword [ebp - 0x160], eax
shr dword [ebp - 0x160], 0xf
not dword [ebp - 0x160]
and dword [ebp - 0x160], 1
test ecx, ecx
je 0x456255
test byte [ebp - 0xfb], 0x80
je 0x456255
cmp dword [ebp - 0x144], 0
je 0x456247
mov byte [ebp - 0xfa], 0
jmp 0x456255
mov byte [ebp - 0x67], 0x80
mov dword [ebp - 0x150], 0
movzx ecx, byte [ebp - 0xfb]
and eax, 0x81ff
mov dword [ebp - 0xc], eax
movzx eax, byte [ebp - 0xfc]
shr eax, 7
shr ecx, 7
lea eax, [eax + ecx*2]
mov dword [ebp - 0x144], eax
mov eax, dword [0x4e88c8]
test eax, eax
jne 0x4562f2
push 0x5b
push dword [0x4eada4]
mov dword [0x4e8958], 0x100
call fcn.004030c0
add esp, 8
test eax, eax
je 0x4562c8
cmp ebx, 0x12
jne 0x4562c8
mov ecx, dword [ebp - 0x15c]
test ecx, 0x100
je 0x4562e1
mov edx, dword [0x4ead8c]
mov dword [0x4e8958], ebx
mov dword [ebp - 0x158], edx
jmp 0x456300
cmp ebx, 0x5d
jne 0x4562e1
mov edx, dword [0x4ead8c]
mov dword [0x4e8958], ebx
mov dword [ebp - 0x158], edx
jmp 0x4562fa
mov edx, dword [0x4ead8c]
mov eax, dword [0x4e88c8]
mov dword [ebp - 0x158], edx
cmp ebx, dword [0x4e8958]
jne 0x456333
mov ecx, dword [ebp - 0x15c]
mov eax, dword [0x4e88c8]
test eax, eax
jne 0x45631d
test ecx, 0xc000
jne 0x456350
mov eax, 1
mov dword [0x4e88c8], eax
jmp 0x45635d
cmp eax, 1
jne 0x456350
test cx, cx
jns 0x456350
mov eax, 2
mov dword [0x4e88c8], eax
jmp 0x456347
cmp eax, 1
jne 0x45633f
cmp ebx, 0x11
je 0x456357
jmp 0x456350
mov ecx, dword [ebp - 0x15c]
jle 0x45635d
cmp dword [ebp - 0x150], 0
je 0x456366
xor eax, eax
mov dword [0x4e88c8], eax
mov ecx, dword [ebp - 0x15c]
cmp dword [ebp - 0x150], 0
jne 0x456399
cmp dword [edx + 0x144], 0
mov edx, dword [ebp - 0x148]
je 0x456383
cmp dword [ebp - 0x154], 0
jne 0x456383
cmp edx, 2
jne 0x456399
cmp edx, 3
je 0x456399
cmp dword [ebp - 0x168], 0
jne 0x456399
test eax, eax
je case.0x4563b0.13
test ecx, 0x100
jne case.0x4563b0.13
lea eax, [ebx - 0xc]
cmp eax, 0x22
ja case.0x4563b0.13
movzx eax, byte [eax + 0x4574e0]
jmp dword [eax*4 + 0x4574b0]
mov ebx, 0x60
jmp 0x456402
mov ebx, 0x61
jmp 0x456402
mov ebx, 0x62
jmp 0x456402
mov ebx, 0x63
jmp 0x456402
mov ebx, 0x64
jmp 0x456402
mov ebx, 0x65
jmp 0x456402
mov ebx, 0x66
jmp 0x456402
mov ebx, 0x67
jmp 0x456402
mov ebx, 0x68
jmp 0x456402
mov ebx, 0x69
jmp 0x456402
mov ebx, 0x6e
mov edx, dword [ebp - 0x144]
mov al, byte [ebp - 0x7c]
or edx, 1
and al, 1
cmove edx, dword [ebp - 0x144]
mov dword [ebp - 0x144], edx
jmp 0x456425
mov edx, dword [ebp - 0x144]
cmp dword [ebp - 0x160], 0
je 0x4570a4
test byte [ebp - 0x67], 0x80
jne 0x4570a4
cmp dword [0x4e88c8], 0
jne 0x4570a4
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x456467
mov byte [edi], 0x1b
lea esi, [edi + 1]
mov ecx, dword [0x4ead8c]
mov dword [ebp - 0x158], ecx
jmp 0x45646d
mov ecx, dword [ebp - 0x158]
cmp ebx, 0x21
jne 0x4564aa
cmp edx, 1
jne 0x45649f
push 0
push 2
push 0x115
push dword [0x4ead98]
call dword [sym.imp.USER32.dll_SendMessageA]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp edx, 2
jne 0x4564c5
push 0
push 0
jmp 0x45647b
cmp ebx, 0x22
jne 0x4564ef
cmp edx, 1
jne 0x4564ba
push 0
push 3
jmp 0x45647b
cmp edx, 2
jne 0x4564c5
push 0
push 1
jmp 0x45647b
cmp edx, 3
jne 0x4564ef
xor eax, eax
cmp ebx, 0x21
setne al
push eax
push ecx
call fcn.0044d960
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0x2d
jne 0x456516
cmp edx, 1
jne 0x456516
push 0
call fcn.0045d910
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
test eax, eax
je 0x4565f8
cmp ebx, 0x73
jne 0x456552
push 0x51
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
jne 0x45749c
mov edx, dword [0x4ead8c]
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x158], edx
jmp 0x456622
cmp ebx, 0x20
jne 0x456597
push 0x52
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
je 0x45653b
push 0
push 0xf100
push 0x112
push dword [0x4ead98]
call dword [sym.imp.USER32.dll_SendMessageA]
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0xd
jne 0x4565f8
push 0x57
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
je 0x45653b
push 0x6f
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
cmp eax, 1
je 0x45653b
mov eax, dword [ebp - 0x15c]
and eax, 0xc000
cmp eax, 0x4000
je 0x45749c
call fcn.0045c750
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0x13
jne 0x45661c
cmp edx, 2
jne 0x45661c
xor dword [ecx + 0x144], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x158]
test eax, eax
jne 0x456948
cmp dword [ebp - 0x168], eax
je case.default.0x456642
lea ecx, [ebx - 0x61]
cmp ecx, 8
ja case.default.0x456642
jmp dword [ecx*4 + 0x457504]
mov eax, dword [ebp - 0x144]
mov cl, byte [eax + 0x4d4d54]
mov byte [esi], cl
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + str.jJ_n_n]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + 0x4d4d64]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + str.hH_b_b]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov byte [esi], 0x2e
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + str.lL_f_f]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + 0x4d4d7c]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + str.kK_v_v]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x144]
mov al, byte [eax + 0x4d4d8c]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
xor ecx, ecx
cmp eax, 3
je 0x4567a6
cmp eax, 1
mov eax, dword [ebp - 0x154]
jg 0x4567dc
cmp dword [edx + 0x144], ecx
je 0x4567dc
test eax, eax
jne 0x4567dc
lea eax, [ebx - 0x2b]
cmp eax, 0x44
ja case.0x4567b5.44
movzx eax, byte [eax + 0x45753c]
jmp dword [eax*4 + 0x457528]
mov ecx, 0x50
jmp case.0x4567b5.44
mov ecx, 0x51
jmp case.0x4567b5.44
mov ecx, 0x52
jmp case.0x4567b5.44
mov ecx, 0x53
mov eax, dword [ebp - 0x154]
cmp dword [edx + 0x144], 0
je case.0x4567f8.14
test eax, eax
jne case.0x4567f8.14
lea eax, [ebx - 0xd]
cmp eax, 0x62
ja case.0x4567f8.14
movzx eax, byte [eax + 0x4575c8]
jmp dword [eax*4 + 0x457584]
mov ecx, 0x70
jmp 0x45686b
mov ecx, 0x71
jmp 0x45686b
mov ecx, 0x72
jmp 0x45686b
mov ecx, 0x73
jmp 0x45686b
mov ecx, 0x74
jmp 0x45686b
mov ecx, 0x75
jmp 0x45686b
mov ecx, 0x76
jmp 0x45686b
mov ecx, 0x77
jmp 0x45686b
mov ecx, 0x78
jmp 0x45686b
mov ecx, 0x79
jmp 0x45686b
mov ecx, 0x6e
jmp 0x45686b
xor ecx, ecx
cmp dword [ebp - 0x148], 2
jne 0x4568a6
cmp dword [ebp - 0x144], ecx
setne cl
add ecx, 0x6b
test ecx, ecx
je 0x456948
cmp dword [edx + 0x148], 0
push ecx
je 0x456923
lea eax, [ecx - 0x50]
cmp eax, 3
ja 0x4568fe
push 0x4d1ffc
push esi
call fcn.004089b0
add esp, 0xc
add esi, eax
sub esi, edi
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x144], ecx
setne cl
add ecx, 0x6c
jmp 0x45686b
cmp dword [ebp - 0x148], 2
jne case.0x4567f8.14
mov ecx, 0x6f
jmp 0x45686b
cmp dword [ebp - 0x148], 2
jne case.0x4567f8.14
mov ecx, 0x6a
jmp 0x45686b
cmp dword [ebp - 0x148], 2
jne case.0x4567f8.14
mov ecx, 0x6d
jmp 0x45686b
test dword [ebp - 0x15c], 0x100
je case.0x4567f8.14
mov ecx, 0x4d
jmp 0x45686b
push str.e__c
push esi
call fcn.004089b0
add esp, 0xc
add esi, eax
sub esi, edi
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
push str.eO_c
push esi
call fcn.004089b0
add esp, 0xc
add esi, eax
sub esi, edi
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 8
jne 0x4569c6
mov ecx, dword [ebp - 0x144]
test ecx, ecx
jne 0x456989
push 0x3f
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
neg eax
sbb al, al
and al, 0x77
add al, bl
mov byte [esi], al
lea eax, [ebx - 0xa]
pop edi
mov byte [esi + 1], 0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ecx, 1
jne 0x456aae
push 0x3f
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
neg eax
sbb al, al
and al, 0x89
add al, 0x7f
mov byte [esi], al
mov eax, 0xfffffffe
pop edi
mov byte [esi + 1], 0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 9
jne 0x4569fb
mov ecx, dword [ebp - 0x144]
cmp ecx, 1
jne 0x456aae
mov word [esi], 0x5b1b
add esi, 2
mov byte [esi], 0x5a
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0x20
jne 0x456a46
mov ecx, dword [ebp - 0x144]
cmp ecx, 2
jne 0x456a24
mov byte [esi], 0
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ecx, 3
jne 0x456aae
mov byte [esi], 0xa0
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 3
jne 0x456a8a
mov ecx, dword [ebp - 0x144]
cmp ecx, 2
jne 0x456b2f
mov eax, dword [0x4e73d0]
test eax, eax
je 0x45648c
mov eax, dword [eax + 0x18]
push 1
push dword [0x4e73d4]
call eax
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0x13
jne 0x456aa8
pop edi
mov word [esi], 0x1a
lea eax, [ebx - 0x15]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x144]
cmp ecx, 2
jne 0x456b2f
lea eax, [ebx - 0x32]
cmp eax, 6
ja 0x456ad9
mov al, byte [ebx + 0x4d4d6a]
mov byte [esi], al
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0xbd
je 0x456b16
cmp ebx, 0xbf
je 0x456b16
cmp ebx, 0xdf
je 0x456afd
cmp ebx, 0xdc
jne 0x456b82
mov byte [esi], 0x1c
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov byte [esi], 0x1f
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ecx, 3
jne 0x456b55
cmp ebx, 0xde
jne 0x456b82
mov byte [esi], 0x1e
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
test ecx, ecx
jne 0x456b82
cmp ebx, 0xd
jne 0x456b82
cmp dword [edx + 0x150], ecx
je 0x456b82
mov byte [esi], bl
inc esi
mov byte [esi], 0xa
sub esi, edi
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
lea eax, [ebx - 0x70]
xor edi, edi
mov dword [ebp - 0x168], eax
cmp eax, 0x13
ja case.default.0x456b96
jmp dword [eax*4 + 0x45762c]
test byte [ebp - 0xfc], 0x80
mov edi, 0xb
mov eax, 0x17
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0xc
mov eax, 0x18
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0xd
mov eax, 0x19
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0xe
mov eax, 0x1a
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0xf
mov eax, 0x1c
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0x11
mov eax, 0x1d
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0x12
mov eax, 0x1f
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0x13
mov eax, 0x20
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0x14
mov eax, 0x21
cmovne edi, eax
jmp case.default.0x456b96
test byte [ebp - 0xfc], 0x80
mov edi, 0x15
mov eax, 0x22
cmovne edi, eax
jmp case.default.0x456b96
mov edi, 0x17
jmp case.default.0x456b96
mov edi, 0x18
jmp case.default.0x456b96
mov edi, 0x19
jmp case.default.0x456b96
mov edi, 0x1a
jmp case.default.0x456b96
mov edi, 0x1c
jmp case.default.0x456b96
mov edi, 0x1d
jmp case.default.0x456b96
mov edi, 0x1f
jmp case.default.0x456b96
mov edi, 0x20
jmp case.default.0x456b96
mov edi, 0x21
jmp case.default.0x456b96
mov edi, 0x22
test cl, 2
jne case.0x456ce6.37
lea eax, [ebx - 0x21]
cmp eax, 0xd
ja case.0x456ce6.37
movzx eax, byte [eax + 0x457698]
jmp dword [eax*4 + 0x45767c]
mov edi, 1
jmp case.0x456ce6.37
mov edi, 2
jmp case.0x456ce6.37
mov edi, 3
jmp case.0x456ce6.37
mov edi, 4
jmp case.0x456ce6.37
mov edi, 5
jmp case.0x456ce6.37
mov edi, 6
mov eax, dword [ebp - 0x148]
cmp eax, 3
jne 0x456d2c
cmp edi, 6
jg 0x456d2c
movsx edi, byte [edi + 0x4d4da4]
mov edx, dword [edx + 0x148]
test edx, edx
je 0x456d73
lea eax, [edi - 1]
cmp eax, 5
ja 0x456d6d
movsx eax, byte [edi + str._HLMEIG]
push eax
push 0x4d1ffc
push esi
call fcn.004089b0
sub esi, dword [ebp - 0x14c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
cmp eax, 5
jne 0x456ee3
lea eax, [edi - 0xb]
cmp eax, 0x17
ja 0x456e6a
movups xmm0, xmmword [str.MNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_____]
mov al, byte [0x4d4de4]
mov ecx, dword [ebp - 0x168]
movups xmmword [ebp - 0x140], xmm0
mov byte [ebp - 0x110], al
xor eax, eax
movups xmm0, xmmword [0x4d4dc4]
movups xmmword [ebp - 0x130], xmm0
movups xmm0, xmmword [0x4d4dd4]
movups xmmword [ebp - 0x120], xmm0
cmp ecx, 0xb
ja case.default.0x456dca
jmp dword [ecx*4 + 0x4576a8]
xor eax, eax
jmp case.default.0x456dca
mov eax, 1
jmp case.default.0x456dca
mov eax, 2
jmp case.default.0x456dca
mov eax, 3
jmp case.default.0x456dca
mov eax, 4
jmp case.default.0x456dca
mov eax, 5
jmp case.default.0x456dca
mov eax, 6
jmp case.default.0x456dca
mov eax, 7
jmp case.default.0x456dca
mov eax, 8
jmp case.default.0x456dca
mov eax, 9
jmp case.default.0x456dca
mov eax, 0xa
jmp case.default.0x456dca
mov eax, 0xb
test byte [ebp - 0xfc], 0x80
lea ecx, [eax + 0xc]
cmove ecx, eax
test byte [ebp - 0xfb], 0x80
lea eax, [ecx + 0x18]
cmove eax, ecx
movsx eax, byte [ebp + eax - 0x140]
push eax
push 0x4d2008
push esi
call fcn.004089b0
sub esi, dword [ebp - 0x14c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
lea eax, [edi - 1]
cmp eax, 5
ja 0x456edd
mov eax, dword [str.HL.FIG]
mov dword [ebp - 0xc], eax
mov ax, word [0x4d4dec]
mov word [ebp - 8], ax
mov al, byte [0x4d4dee]
mov byte [ebp - 6], al
cmp edi, 3
jne 0x456eae
mov byte [esi], 0x7f
inc esi
sub esi, dword [ebp - 0x14c]
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
movsx eax, byte [ebp + edi - 0xd]
push eax
push 0x4d2008
push esi
call fcn.004089b0
add esp, 0xc
add esi, eax
sub esi, dword [ebp - 0x14c]
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
test edx, edx
jne 0x456eec
cmp eax, 4
jne 0x456f23
lea eax, [edi - 0xb]
cmp eax, 0xd
ja 0x456f1d
xor ecx, ecx
cmp edi, 0xf
setg cl
cmp edi, 0x15
lea eax, [ecx + 1]
cmovle eax, ecx
sub edi, eax
add edi, 0x45
push edi
test edx, edx
je 0x456f16
push 0x4d1ffc
jmp 0x456eb9
push str.eO_c
jmp 0x456eb9
mov eax, dword [ebp - 0x148]
cmp eax, 1
jne 0x456f5b
lea eax, [edi - 0xb]
cmp eax, 4
ja 0x456f68
lea eax, [edi + 0x36]
push eax
push str.e___c
push esi
call fcn.004089b0
sub esi, dword [ebp - 0x14c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x456f68
lea eax, [edi - 0xb]
cmp eax, 3
jbe 0x456f07
cmp edi, 1
je 0x456f72
cmp edi, 4
jne 0x456fc7
push 0x40
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
je 0x456fb9
mov ecx, 0x4d4dfc
cmp edi, 1
mov eax, 0x4d4df8
cmovne eax, ecx
push eax
push esi
call fcn.004089b0
sub esi, dword [ebp - 0x14c]
add esp, 8
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov edx, dword [0x4ead8c]
mov ecx, dword [ebp - 0x144]
jmp 0x456fcd
mov edx, dword [ebp - 0x158]
test edi, edi
je 0x456ff9
push edi
push str.e__d
push esi
call fcn.004089b0
sub esi, dword [ebp - 0x14c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
lea eax, [ebx - 0xc]
cmp eax, 0x1c
ja case.0x457008.13
movzx eax, byte [eax + 0x4576f0]
jmp dword [eax*4 + 0x4576d8]
mov eax, 0x41
jmp 0x457030
mov eax, 0x42
jmp 0x457030
mov eax, 0x43
jmp 0x457030
mov eax, 0x44
jmp 0x457030
mov eax, 0x47
push ecx
push eax
push edx
push esi
call fcn.00446210
sub esi, dword [ebp - 0x14c]
add esp, 0x10
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
cmp ebx, 0xd
jne 0x457071
pop edi
mov word [esi], bx
lea eax, [ebx - 0xf]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x150]
test edi, edi
je 0x457098
lea eax, [ebx - 0x60]
cmp eax, 9
ja 0x457098
mov eax, dword [0x4e8948]
lea eax, [eax + eax*4]
lea eax, [eax - 0x30]
lea eax, [ebx + eax*2]
mov dword [0x4e8948], eax
jmp 0x4570aa
mov dword [0x4e8948], 0
jmp 0x4570aa
mov edi, dword [ebp - 0x150]
cmp byte [ebp - 0xf8], 0
mov dword [ebp - 0x168], 0
je 0x4570e8
push 0x94
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
je 0x4570e8
xor eax, eax
mov byte [ebp - 0xf8], 0
test edi, edi
sete al
mov dword [ebp - 0x168], eax
cmp dword [0x4eacf0], 2
jne 0x45711d
mov eax, dword [0x4e8940]
test eax, eax
je 0x45711d
push dword [ebp - 0x16c]
lea ecx, [ebp - 0x10c]
push 0
push 3
push 0x4e894c
push ecx
push dword [ebp - 0xc]
push ebx
call eax
mov esi, eax
mov dword [ebp - 0xc], esi
jmp 0x457179
push dword [ebp - 0x16c]
lea eax, [ebp - 0x10c]
push 0
push 0x4e895c
push eax
push dword [ebp - 0xc]
push ebx
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov esi, eax
mov dword [ebp - 0xc], esi
test esi, esi
jle 0x45743c
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ecx*2 + 0x4e895c]
mov byte [ecx + 0x4e8964], al
inc ecx
cmp ecx, esi
jl 0x457150
push 3
push 0x4e894c
push esi
push 0x4e8964
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test esi, esi
jle 0x45743c
mov ebx, dword [ebp - 0xc]
xor esi, esi
nop word [eax + eax]
cmp dword [0x4e88c8], 2
movzx eax, word [esi*2 + 0x4e894c]
mov ecx, eax
mov edi, eax
mov dword [ebp - 0x158], edi
mov edx, ecx
jne 0x4571d0
lea eax, [ecx - 0x20]
cmp ax, 0x5f
ja 0x457243
mov eax, ecx
mov dword [0x4e88c8], 3
mov dword [0x4e8954], eax
jmp 0x4573ff
cmp dword [0x4e88c8], 3
jne 0x457243
lea eax, [ecx - 0x20]
mov edx, ecx
cmp ax, 0x5f
ja 0x457243
push ecx
push dword [0x4e8954]
mov dword [0x4e88c8], 0
call fcn.00467f70
add esp, 8
cmp eax, 0xffffffff
je 0x457421
push dword [0x4ead8c]
movzx eax, ax
mov dword [ebp - 0x14c], eax
call fcn.0044d9d0
mov eax, dword [0x4e73cc]
add esp, 4
test eax, eax
je 0x4573ff
push 1
push 1
lea ecx, [ebp - 0x14c]
push ecx
push eax
call fcn.0040a8a0
add esp, 0x10
jmp 0x4573ff
cmp dword [ebp - 0x160], 0
movzx eax, dx
mov dword [0x4e88c8], 0
jne 0x457337
mov edx, dword [0x4e8948]
test edx, edx
je 0x45730b
mov ecx, dword [0x4ead8c]
cmp dword [ecx + 0xdc], 0
jne 0x4572cd
mov eax, dword [ecx + 0x1090]
cmp dword [eax + 0xc], 0xfde9
je 0x4572cd
cmp dword [0x4e73dc], 0
jne 0x4572cd
push ecx
mov byte [ebp - 0x161], dl
call fcn.0044d9d0
mov eax, dword [0x4e73cc]
add esp, 4
test eax, eax
je 0x4572fc
push 1
push 1
lea ecx, [ebp - 0x161]
push ecx
push eax
call fcn.00409f50
add esp, 0x10
mov dword [0x4e8948], 0
jmp 0x4573f5
movzx eax, dx
push ecx
mov dword [ebp - 0x14c], eax
call fcn.0044d9d0
mov eax, dword [0x4e73cc]
add esp, 4
test eax, eax
je 0x4572fc
push 1
push 1
lea ecx, [ebp - 0x14c]
push ecx
push eax
call fcn.0040a8a0
add esp, 0x10
mov dword [0x4e8948], 0
jmp 0x4573f5
push dword [0x4ead8c]
call fcn.0044d9d0
mov eax, dword [0x4e73cc]
add esp, 4
test eax, eax
je 0x4573f5
push 1
push 1
lea ecx, [ebp - 0x158]
push ecx
push eax
jmp 0x4573ed
cmp dword [ebp - 0x168], 0
je 0x45739b
mov ecx, 0x80
cmp ax, cx
jae 0x45739b
mov ecx, 0x1b
push eax
mov word [ebp - 0xc], cx
call fcn.00468b70
push dword [0x4ead8c]
mov word [ebp - 0xa], ax
call fcn.0044d9d0
mov ecx, dword [0x4e73cc]
add esp, 8
test ecx, ecx
je 0x4573f5
mov edi, dword [ebp - 0x150]
xor eax, eax
test edi, edi
mov edx, 2
push 1
setne al
inc eax
push eax
xor eax, eax
test edi, edi
cmove eax, edx
lea edx, [ebp - 0xc]
jmp 0x4573e9
push dword [0x4ead8c]
mov eax, 0x1b
mov word [ebp - 0x16a], di
mov word [ebp - 0x16c], ax
call fcn.0044d9d0
mov ecx, dword [0x4e73cc]
add esp, 4
test ecx, ecx
je 0x4573f5
mov edx, dword [ebp - 0x150]
xor eax, eax
test edx, edx
push 1
setne al
inc eax
push eax
xor eax, eax
test edx, edx
mov edx, 2
cmove eax, edx
lea edx, [ebp - 0x16c]
add eax, edx
push eax
push ecx
call fcn.0040a8a0
add esp, 0x10
push 0
call fcn.0045e3a0
add esp, 4
inc esi
cmp esi, ebx
jl 0x457190
pop edi
xor eax, eax
pop esi
mov word [0x4e894c], ax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
push 0x10
call dword [sym.imp.USER32.dll_MessageBeep]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046aced
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x457444
xor eax, eax
jmp 0x457479
cmp word [0x4e894c], 0
je 0x45747f
mov eax, dword [0x4ead8c]
cmp dword [eax + 0xdc], 0
jne 0x457474
mov eax, dword [eax + 0x1090]
cmp dword [eax + 0xc], 0xfde9
je 0x457474
cmp dword [0x4e73dc], 0
je 0x45747f
mov eax, 0xa
mov word [0x4e894c], ax
cmp ebx, 0x12
jne 0x45749c
push 0x53
push dword [0x4eada4]
call fcn.004030c0
add esp, 8
test eax, eax
je 0x45648c
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0046aced
mov esp, ebp
pop ebp
ret