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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x16c
mov eax, dword [0x4f6840]
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 [0x4fb61c]
mov dword [ebp - 0x15c], edi
mov dword [ebp - 0x14c], 0
call fcn.004030e0
push 0x43
push dword [0x4fb61c]
mov dword [ebp - 0x148], eax
call fcn.004030e0
push 0x5c
push dword [0x4fb61c]
mov dword [ebp - 0x164], eax
call fcn.004030e0
push 0x4e
push dword [0x4fb61c]
mov dword [ebp - 0x150], eax
call fcn.004030e0
add esp, 0x20
mov dword [ebp - 0x16c], eax
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
test eax, eax
jne 0x457040
push pe_nt_image_headers32
push eax
lea eax, [ebp - 0x10c]
push eax
call fcn.0046d9d0
add esp, 0xc
jmp 0x4570b7
mov ecx, dword [ebp + 0x10]
cmp ebx, 0x12
jne 0x45705d
mov eax, ecx
shr eax, 0x10
test eax, 0x100
je 0x45705d
mov al, byte [ebp - 0xfa]
mov byte [ebp - 0x67], al
mov eax, dword [ebp - 0x148]
cmp eax, 3
je 0x457084
cmp eax, 1
jg 0x4570aa
mov eax, dword [0x4fb64c]
cmp dword [eax + 0x144], 0
je 0x4570aa
cmp dword [ebp - 0x164], 0
jne 0x4570aa
cmp ebx, 0x90
jne 0x4570aa
test byte [ebp - 0xfc], 0x80
jne 0x4570aa
mov eax, ecx
mov ebx, 0x2b
shr eax, 0x10
test eax, 0xc000
jne 0x4570aa
xor byte [ebp - 0x7c], 1
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.USER32.dll_SetKeyboardState]
mov edx, dword [0x4fb64c]
mov ecx, dword [ebp + 0x10]
shr ecx, 0x10
mov dword [ebp - 0x158], ecx
cmp dword [edx + 0x14c], 0
mov dword [ebp - 0x144], edx
je 0x4570ec
mov eax, ecx
and eax, 0xc000
cmp eax, 0x4000
je 0x4573f7
jmp 0x4570f2
mov dword [ebp - 0x158], ecx
movzx eax, cx
mov edx, eax
mov dword [ebp - 0x154], edx
test eax, 0x2000
je 0x4571fc
test byte [ebp - 0x67], 0x80
jne 0x4571fc
movzx eax, ax
mov edx, 1
mov dword [ebp - 0x154], eax
shr eax, 0xf
not eax
mov dword [ebp - 0x14c], edx
and eax, edx
test byte [ebp - 0xfb], 0x80
mov dword [ebp - 0x160], eax
je 0x457162
cmp dword [ebp - 0x150], 0
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x160], eax
je 0x4571e9
mov byte [ebp - 0xfa], 0
mov dword [ebp - 0x14c], edx
mov edx, dword [ebp - 0x154]
movzx ecx, byte [ebp - 0xfb]
and edx, 0x81ff
movzx eax, byte [ebp - 0xfc]
shr ecx, 7
shr eax, 7
mov dword [ebp - 0x154], edx
lea eax, [eax + ecx*2]
mov ecx, dword [0x4f916c]
mov dword [ebp - 0x150], eax
test ecx, ecx
jne 0x45724e
push 0x5b
push dword [0x4fb61c]
mov dword [0x4f91f8], 0x100
call fcn.004030e0
add esp, 8
test eax, eax
je 0x457215
cmp ebx, 0x12
jne 0x457215
mov eax, dword [ebp - 0x158]
test eax, 0x100
je 0x45723a
mov edx, dword [0x4fb64c]
mov ecx, dword [0x4f916c]
mov dword [0x4f91f8], ebx
mov dword [ebp - 0x144], edx
jmp 0x457266
mov byte [ebp - 0x67], 0x80
mov dword [ebp - 0x14c], 0
jmp 0x457162
shr eax, 0xf
not eax
mov dword [ebp - 0x158], ecx
and eax, 1
mov dword [ebp - 0x160], eax
jmp 0x457168
mov eax, dword [ebp - 0x158]
cmp ebx, 0x5d
jne 0x45723a
mov edx, dword [0x4fb64c]
mov ecx, dword [0x4f916c]
mov dword [0x4f91f8], ebx
mov dword [ebp - 0x144], edx
jmp 0x457266
mov edx, dword [0x4fb64c]
mov ecx, dword [0x4f916c]
mov dword [ebp - 0x144], edx
jmp 0x45725a
mov eax, dword [ebp - 0x158]
mov edx, dword [ebp - 0x144]
cmp ebx, dword [0x4f91f8]
jne 0x457304
test ecx, ecx
jne 0x4572e7
test eax, 0xc000
jne 0x457312
mov ecx, 1
mov dword [0x4f916c], ecx
cmp dword [ebp - 0x14c], 0
jne 0x4572bc
cmp dword [edx + 0x144], 0
mov eax, dword [ebp - 0x148]
je 0x4572a6
cmp dword [ebp - 0x164], 0
jne 0x4572a6
cmp eax, 2
jne 0x4572bc
cmp eax, 3
je 0x4572bc
cmp dword [ebp - 0x16c], 0
jne 0x4572bc
test ecx, ecx
je case.0x4572e0.13
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test eax, 0x100
jne case.0x4572e0.13
lea eax, [ebx - 0xc]
cmp eax, 0x22
ja case.0x4572e0.13
movzx eax, byte [eax + 0x45844c]
jmp dword [eax*4 + 0x45841c]
cmp ecx, 1
jne 0x457312
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test ax, ax
jns 0x457312
mov ecx, 2
mov dword [0x4f916c], ecx
jmp 0x45731f
cmp ecx, 1
jne 0x457319
cmp ebx, 0x11
je 0x457280
xor ecx, ecx
jmp 0x45727a
jle 0x457280
cmp dword [ebp - 0x14c], 0
je 0x457289
xor ecx, ecx
mov dword [0x4f916c], ecx
jmp 0x4572bc
mov ebx, 0x60
jmp 0x457381
mov ebx, 0x61
jmp 0x457381
mov ebx, 0x62
jmp 0x457381
mov ebx, 0x63
jmp 0x457381
mov ebx, 0x64
jmp 0x457381
mov ebx, 0x65
jmp 0x457381
mov ebx, 0x66
jmp 0x457381
mov ebx, 0x67
jmp 0x457381
mov ebx, 0x68
jmp 0x457381
mov ebx, 0x69
jmp 0x457381
mov ebx, 0x6e
test byte [ebp - 0x7c], 1
je case.0x4572e0.13
or dword [ebp - 0x150], 1
mov edx, dword [ebp - 0x160]
test edx, edx
je 0x458013
test byte [ebp - 0x67], 0x80
jne 0x458013
test ecx, ecx
jne 0x458013
mov eax, dword [ebp - 0x14c]
test eax, eax
je 0x4573cc
mov byte [edi], 0x1b
lea esi, [edi + 1]
mov ecx, dword [0x4fb64c]
mov dword [ebp - 0x144], ecx
jmp 0x4573d2
mov ecx, dword [ebp - 0x144]
cmp ebx, 0x21
jne 0x457415
mov edx, dword [ebp - 0x150]
cmp edx, 1
jne 0x45740a
push 0
push 2
push 0x115
push dword [0x4fb658]
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.0046c107
mov esp, ebp
pop ebp
ret
cmp edx, 2
jne 0x457436
push 0
push 0
jmp 0x4573e6
cmp ebx, 0x22
jne 0x457460
mov edx, dword [ebp - 0x150]
cmp edx, 1
jne 0x45742b
push 0
push 3
jmp 0x4573e6
cmp edx, 2
jne 0x457436
push 0
push 1
jmp 0x4573e6
cmp edx, 3
jne 0x45746c
xor eax, eax
cmp ebx, 0x21
setne al
push eax
push ecx
call fcn.0044e7b0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x160], edx
mov edx, dword [ebp - 0x150]
cmp ebx, 0x2d
jne 0x457493
cmp edx, 1
jne 0x457493
push 0
call fcn.0045e9d0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
test eax, eax
je 0x4575b4
cmp ebx, 0x73
jne 0x4574f8
push 0x51
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
test eax, eax
jne 0x457529
mov eax, dword [0x4fb64c]
mov edx, dword [ebp - 0x150]
mov dword [ebp - 0x144], eax
cmp edx, 2
jne 0x457a83
lea eax, [ebx - 0x32]
cmp eax, 6
ja 0x457a2d
mov al, byte [ebx + 0x4e60ca]
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.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0x20
jne 0x457553
push 0x52
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
test eax, eax
je 0x45753d
push 0
push 0xf100
push 0x112
push dword [0x4fb658]
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.0046c107
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4fb64c]
mov edx, dword [ebp - 0x150]
mov dword [ebp - 0x144], eax
jmp 0x45798d
cmp ebx, 0xd
jne 0x4575b4
push 0x57
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
test eax, eax
je 0x4574b4
push 0x6f
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
cmp eax, 1
je 0x4574b4
mov eax, dword [ebp + 0x10]
shr eax, 0x10
and eax, 0xc000
cmp eax, 0x4000
je 0x457529
call fcn.0045d800
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0x13
jne 0x4575d8
cmp edx, 2
jne 0x4575d8
xor dword [ecx + 0x144], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x4578e1
cmp dword [ebp - 0x16c], eax
je case.default.0x4575f8
lea ecx, [ebx - 0x61]
cmp ecx, 8
ja case.default.0x4575f8
jmp dword [ecx*4 + 0x458470]
mov cl, byte [edx + 0x4e60b4]
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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 0x4e60c4]
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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 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.0046c107
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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 0x4e60dc]
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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 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.0046c107
mov esp, ebp
pop ebp
ret
mov al, byte [edx + 0x4e60ec]
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.0046c107
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
xor ecx, ecx
cmp eax, 3
je 0x457736
cmp eax, 1
jg case.0x457745.44
mov eax, dword [ebp - 0x144]
cmp dword [eax + 0x144], ecx
je case.0x457745.44
mov eax, dword [ebp - 0x164]
test eax, eax
jne case.0x457792.14
lea eax, [ebx - 0x2b]
cmp eax, 0x44
ja case.0x457745.44
movzx eax, byte [eax + 0x4584a8]
jmp dword [eax*4 + 0x458494]
mov ecx, 0x50
jmp case.0x457745.44
mov ecx, 0x51
jmp case.0x457745.44
mov ecx, 0x52
jmp case.0x457745.44
mov ecx, 0x53
mov eax, dword [ebp - 0x144]
cmp dword [eax + 0x144], 0
je case.0x457792.14
mov eax, dword [ebp - 0x164]
test eax, eax
jne case.0x457792.14
lea eax, [ebx - 0xd]
cmp eax, 0x62
ja case.0x457792.14
movzx eax, byte [eax + 0x458534]
jmp dword [eax*4 + 0x4584f0]
mov ecx, 0x70
jmp 0x457801
mov ecx, 0x71
jmp 0x457801
mov ecx, 0x72
jmp 0x457801
mov ecx, 0x73
jmp 0x457801
mov ecx, 0x74
jmp 0x457801
mov ecx, 0x75
jmp 0x457801
mov ecx, 0x76
jmp 0x457801
mov ecx, 0x77
jmp 0x457801
mov ecx, 0x78
jmp 0x457801
mov ecx, 0x79
jmp 0x457801
mov ecx, 0x6e
jmp 0x457801
xor ecx, ecx
cmp dword [ebp - 0x148], 2
jne 0x457842
test edx, edx
setne cl
add ecx, 0x6b
test ecx, ecx
je 0x4578e1
mov eax, dword [ebp - 0x144]
push ecx
cmp dword [eax + 0x148], 0
je 0x4578bc
lea eax, [ecx - 0x50]
cmp eax, 3
ja 0x457897
push 0x4e101c
push esi
call fcn.00408a10
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.0046c107
mov esp, ebp
pop ebp
ret
test edx, edx
setne cl
add ecx, 0x6c
jmp 0x457801
cmp dword [ebp - 0x148], 2
jne case.0x457792.14
mov ecx, 0x6f
jmp 0x457801
cmp dword [ebp - 0x148], 2
jne case.0x457792.14
mov ecx, 0x6a
jmp 0x457801
cmp dword [ebp - 0x148], 2
jne case.0x457792.14
mov ecx, 0x6d
jmp 0x457801
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test eax, 0x100
je case.0x457792.14
mov ecx, 0x4d
jmp 0x457801
push str.e__c
push esi
call fcn.00408a10
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.0046c107
mov esp, ebp
pop ebp
ret
push str.eO_c
push esi
call fcn.00408a10
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.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 8
jne 0x457959
test edx, edx
jne 0x45791c
push 0x3f
push dword [0x4fb61c]
call fcn.004030e0
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.0046c107
mov esp, ebp
pop ebp
ret
cmp edx, 1
jne 0x4574c5
push 0x3f
push dword [0x4fb61c]
call fcn.004030e0
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.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 9
jne 0x457988
cmp edx, 1
jne 0x4574c5
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.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0x20
jne 0x4579cd
cmp edx, 2
jne 0x4579ab
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.0046c107
mov esp, ebp
pop ebp
ret
cmp edx, 3
jne 0x457aa9
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.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 3
jne 0x457a0b
cmp edx, 2
jne 0x457a83
mov eax, dword [0x4f7c70]
test eax, eax
je 0x4573f7
mov eax, dword [eax + 0x18]
push 1
push dword [0x4f7c74]
call eax
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0x13
jne 0x4574c5
pop edi
mov word [esi], 0x1a
lea eax, [ebx - 0x15]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0xbd
je 0x457a6a
cmp ebx, 0xbf
je 0x457a6a
cmp ebx, 0xdf
je 0x457a51
cmp ebx, 0xdc
jne 0x457adc
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.0046c107
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.0046c107
mov esp, ebp
pop ebp
ret
cmp edx, 3
jne 0x457aa9
cmp ebx, 0xde
jne 0x457adc
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.0046c107
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x144]
test edx, edx
jne 0x457ae2
cmp ebx, 0xd
jne 0x457ae2
cmp dword [ecx + 0x150], edx
je 0x457ae2
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.0046c107
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x144]
lea eax, [ebx - 0x70]
xor edi, edi
cmp eax, 0x13
ja case.default.0x457af0
jmp dword [eax*4 + 0x458598]
test byte [ebp - 0xfc], 0x80
mov edi, 0xb
mov eax, 0x17
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0xc
mov eax, 0x18
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0xd
mov eax, 0x19
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0xe
mov eax, 0x1a
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0xf
mov eax, 0x1c
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0x11
mov eax, 0x1d
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0x12
mov eax, 0x1f
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0x13
mov eax, 0x20
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0x14
mov eax, 0x21
cmovne edi, eax
jmp case.default.0x457af0
test byte [ebp - 0xfc], 0x80
mov edi, 0x15
mov eax, 0x22
cmovne edi, eax
jmp case.default.0x457af0
mov edi, 0x17
jmp case.default.0x457af0
mov edi, 0x18
jmp case.default.0x457af0
mov edi, 0x19
jmp case.default.0x457af0
mov edi, 0x1a
jmp case.default.0x457af0
mov edi, 0x1c
jmp case.default.0x457af0
mov edi, 0x1d
jmp case.default.0x457af0
mov edi, 0x1f
jmp case.default.0x457af0
mov edi, 0x20
jmp case.default.0x457af0
mov edi, 0x21
jmp case.default.0x457af0
mov edi, 0x22
test dl, 2
jne case.0x457c40.37
lea eax, [ebx - 0x21]
cmp eax, 0xd
ja case.0x457c40.37
movzx eax, byte [eax + 0x458604]
jmp dword [eax*4 + 0x4585e8]
mov edi, 1
jmp case.0x457c40.37
mov edi, 2
jmp case.0x457c40.37
mov edi, 3
jmp case.0x457c40.37
mov edi, 4
jmp case.0x457c40.37
mov edi, 5
jmp case.0x457c40.37
mov edi, 6
cmp dword [ebp - 0x148], 3
jne 0x457c84
cmp edi, 6
jg 0x457c84
movsx edi, byte [edi + 0x4e6104]
mov eax, dword [ecx + 0x148]
mov dword [ebp - 0x16c], eax
test eax, eax
je 0x457ccb
lea eax, [edi - 1]
cmp eax, 5
ja 0x457ccb
movsx eax, byte [edi + str._HLMEIG]
push eax
push 0x4e101c
push esi
call fcn.00408a10
sub esi, dword [ebp - 0x15c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
cmp eax, 5
jne 0x457e44
cmp edi, 0xb
jl 0x457dcb
cmp edi, 0x22
jg 0x457dcb
movups xmm0, xmmword [str.MNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_____]
mov al, byte [0x4e6144]
add ebx, 0xffffff90
mov byte [ebp - 0x110], al
xor eax, eax
movups xmmword [ebp - 0x140], xmm0
movups xmm0, xmmword [0x4e6124]
movups xmmword [ebp - 0x130], xmm0
movups xmm0, xmmword [0x4e6134]
movups xmmword [ebp - 0x120], xmm0
cmp ebx, 0xb
ja case.default.0x457d2b
jmp dword [ebx*4 + 0x458614]
xor eax, eax
jmp case.default.0x457d2b
mov eax, 1
jmp case.default.0x457d2b
mov eax, 2
jmp case.default.0x457d2b
mov eax, 3
jmp case.default.0x457d2b
mov eax, 4
jmp case.default.0x457d2b
mov eax, 5
jmp case.default.0x457d2b
mov eax, 6
jmp case.default.0x457d2b
mov eax, 7
jmp case.default.0x457d2b
mov eax, 8
jmp case.default.0x457d2b
mov eax, 9
jmp case.default.0x457d2b
mov eax, 0xa
jmp case.default.0x457d2b
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 0x4e1028
push esi
call fcn.00408a10
sub esi, dword [ebp - 0x15c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
lea eax, [edi - 1]
cmp eax, 5
ja 0x457e3e
mov eax, dword [str.HL.FIG]
mov dword [ebp - 0xc], eax
mov ax, word [0x4e614c]
mov word [ebp - 8], ax
mov al, byte [0x4e614e]
mov byte [ebp - 6], al
cmp edi, 3
jne 0x457e0f
mov byte [esi], 0x7f
inc esi
sub esi, dword [ebp - 0x15c]
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
movsx eax, byte [ebp + edi - 0xd]
push eax
push 0x4e1028
push esi
call fcn.00408a10
add esp, 0xc
add esi, eax
sub esi, dword [ebp - 0x15c]
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x148]
cmp dword [ecx + 0x148], 0
jne 0x457e52
cmp eax, 4
jne 0x457e8e
lea eax, [edi - 0xb]
cmp eax, 0xd
ja 0x457e88
xor ecx, ecx
cmp edi, 0xf
setg cl
cmp edi, 0x15
lea eax, [ecx + 1]
cmovle eax, ecx
sub edi, eax
add edi, 0x45
cmp dword [ebp - 0x16c], 0
push edi
je 0x457e81
push 0x4e101c
jmp 0x457e1a
push str.eO_c
jmp 0x457e1a
mov eax, dword [ebp - 0x148]
cmp eax, 1
jne 0x457ec6
lea eax, [edi - 0xb]
cmp eax, 4
ja 0x457edf
lea eax, [edi + 0x36]
push eax
push str.e___c
push esi
call fcn.00408a10
sub esi, dword [ebp - 0x15c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x457edf
lea eax, [edi - 0xb]
cmp eax, 3
ja 0x457edf
add edi, 0x45
cmp dword [ecx + 0x148], 0
jmp 0x457e77
cmp edi, 1
je 0x457ee9
cmp edi, 4
jne 0x457f3c
push 0x40
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
test eax, eax
je 0x457f30
mov ecx, 0x4e615c
cmp edi, 1
mov eax, 0x4e6158
cmovne eax, ecx
push eax
push esi
call fcn.00408a10
sub esi, dword [ebp - 0x15c]
add esp, 8
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x4fb64c]
mov edx, dword [ebp - 0x150]
test edi, edi
je 0x457f68
push edi
push str.e__d
push esi
call fcn.00408a10
sub esi, dword [ebp - 0x15c]
add esp, 0xc
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
lea eax, [ebx - 0xc]
cmp eax, 0x1c
ja case.0x457f77.13
movzx eax, byte [eax + 0x45865c]
jmp dword [eax*4 + 0x458644]
mov eax, 0x41
jmp 0x457f9f
mov eax, 0x42
jmp 0x457f9f
mov eax, 0x43
jmp 0x457f9f
mov eax, 0x44
jmp 0x457f9f
mov eax, 0x47
push edx
push eax
push ecx
push esi
call fcn.00446ea0
sub esi, dword [ebp - 0x15c]
add esp, 0x10
add eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
cmp ebx, 0xd
jne 0x457fe0
pop edi
mov word [esi], bx
lea eax, [ebx - 0xf]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x14c]
test esi, esi
je 0x458007
lea eax, [ebx - 0x60]
cmp eax, 9
ja 0x458007
mov eax, dword [0x4f91e8]
lea eax, [eax + eax*4]
lea eax, [eax - 0x30]
lea eax, [ebx + eax*2]
mov dword [0x4f91e8], eax
jmp 0x458019
mov dword [0x4f91e8], 0
jmp 0x458019
mov esi, dword [ebp - 0x14c]
cmp byte [ebp - 0xf8], 0
mov dword [ebp - 0x16c], 0
je 0x458057
push 0x94
push dword [0x4fb61c]
call fcn.004030e0
add esp, 8
test eax, eax
je 0x458057
xor eax, eax
mov byte [ebp - 0xf8], 0
test esi, esi
sete al
mov dword [ebp - 0x16c], eax
cmp dword [0x4fb590], 2
jne 0x458097
mov eax, dword [0x4f91e0]
test eax, eax
je 0x458097
push dword [ebp - 0xc]
lea ecx, [ebp - 0x10c]
push 0
push 3
push 0x4f91ec
push ecx
push dword [ebp - 0x154]
push ebx
call eax
mov edi, eax
test edi, edi
jle 0x4583a9
mov ebx, dword [ebp - 0x160]
jmp 0x4580f6
push dword [ebp - 0xc]
lea eax, [ebp - 0x10c]
push 0
push 0x4f91fc
push eax
push dword [ebp - 0x154]
push ebx
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov edi, eax
test edi, edi
jle 0x4583a9
xor edx, edx
mov cl, byte [edx*2 + 0x4f91fc]
mov byte [edx + 0x4f9204], cl
inc edx
cmp edx, edi
jl 0x4580c1
push 3
push 0x4f91ec
push edi
push 0x4f9204
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, dword [ebp - 0x160]
mov dword [ebp - 0x160], ebx
xor esi, esi
nop dword [eax + eax]
cmp dword [0x4f916c], 2
movzx eax, word [esi*2 + 0x4f91ec]
mov edx, eax
mov ecx, eax
mov dword [ebp - 0x158], edx
jne 0x45813e
lea eax, [ecx - 0x20]
cmp ax, 0x5f
ja 0x4581af
mov eax, ecx
mov dword [0x4f916c], 3
mov dword [0x4f91f4], eax
jmp 0x45836c
cmp dword [0x4f916c], 3
jne 0x4581af
lea eax, [ecx - 0x20]
cmp ax, 0x5f
ja 0x4581af
push ecx
push dword [0x4f91f4]
mov dword [0x4f916c], 0
call fcn.00469170
add esp, 8
cmp eax, 0xffffffff
je 0x45838e
push dword [0x4fb64c]
movzx eax, ax
mov dword [ebp - 0x164], eax
call fcn.0044e820
mov eax, dword [0x4f7c6c]
add esp, 4
test eax, eax
je 0x45836c
push 1
push 1
lea ecx, [ebp - 0x164]
push ecx
push eax
call fcn.0040a960
add esp, 0x10
jmp 0x45836c
mov dword [0x4f916c], 0
test ebx, ebx
jne 0x458295
mov edx, dword [0x4f91e8]
test edx, edx
je 0x458269
mov ecx, dword [0x4fb64c]
cmp dword [ecx + 0xdc], ebx
jne 0x45822b
mov eax, dword [ecx + 0x1090]
cmp dword [eax + 0xc], 0xfde9
je 0x45822b
cmp dword [0x4f7c7c], ebx
jne 0x45822b
push ecx
mov byte [ebp - 0x165], dl
call fcn.0044e820
mov eax, dword [0x4f7c6c]
add esp, 4
test eax, eax
je 0x45825a
push 1
push 1
lea ecx, [ebp - 0x165]
push ecx
push eax
call fcn.00409fd0
add esp, 0x10
mov dword [0x4f91e8], ebx
jmp 0x458362
movzx eax, dx
push ecx
mov dword [ebp - 0x164], eax
call fcn.0044e820
mov eax, dword [0x4f7c6c]
add esp, 4
test eax, eax
je 0x45825a
push 1
push 1
lea ecx, [ebp - 0x164]
push ecx
push eax
call fcn.0040a960
add esp, 0x10
mov dword [0x4f91e8], 0
jmp 0x458362
push dword [0x4fb64c]
call fcn.0044e820
mov eax, dword [0x4f7c6c]
add esp, 4
test eax, eax
je 0x458362
push 1
push 1
lea ecx, [ebp - 0x158]
push ecx
push eax
jmp 0x45835a
cmp dword [ebp - 0x16c], 0
je 0x458308
mov eax, 0x80
cmp cx, ax
jae 0x458308
mov eax, 0x1b
push edx
mov word [ebp - 0xc], ax
call fcn.00469db0
push dword [0x4fb64c]
mov word [ebp - 0xa], ax
call fcn.0044e820
mov ecx, dword [0x4f7c6c]
add esp, 8
test ecx, ecx
je 0x458362
mov ebx, dword [ebp - 0x14c]
xor eax, eax
test ebx, ebx
mov edx, 2
push 1
setne al
inc eax
push eax
xor eax, eax
test ebx, ebx
cmove eax, edx
lea edx, [ebp - 0xc]
add eax, edx
push eax
push ecx
call fcn.0040a960
mov ebx, dword [ebp - 0x160]
jmp 0x45835f
push dword [0x4fb64c]
mov eax, 0x1b
mov word [ebp - 0x152], dx
mov word [ebp - 0x154], ax
call fcn.0044e820
mov ecx, dword [0x4f7c6c]
add esp, 4
test ecx, ecx
je 0x458362
mov edx, dword [ebp - 0x14c]
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 - 0x154]
add eax, edx
push eax
push ecx
call fcn.0040a960
add esp, 0x10
push 0
call fcn.0045f490
add esp, 4
inc esi
cmp esi, edi
jl 0x458100
pop edi
xor eax, eax
pop esi
mov word [0x4f91ec], ax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046c107
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.0046c107
mov esp, ebp
pop ebp
ret
test esi, esi
jne 0x4583b1
xor eax, eax
jmp 0x4583e6
cmp word [0x4f91ec], 0
je 0x4583ec
mov eax, dword [0x4fb64c]
cmp dword [eax + 0xdc], 0
jne 0x4583e1
mov eax, dword [eax + 0x1090]
cmp dword [eax + 0xc], 0xfde9
je 0x4583e1
cmp dword [0x4f7c7c], 0
je 0x4583ec
mov eax, 0xa
mov word [0x4f91ec], ax
cmp ebx, 0x12
jne 0x457529
push 0x53
push dword [0x4fb61c]
call fcn.004030e0
mov ecx, dword [ebp - 4]
add esp, 8
neg eax
sbb eax, eax
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0046c107
mov esp, ebp
pop ebp
ret