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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x160
and dword [ebp - 4], 0
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
push 0x3f
push dword [0x47e53c]
mov esi, eax
mov dword [ebp - 8], edi
call fcn.00402219
push 0x41
push dword [0x47e53c]
mov dword [ebp - 0x14], eax
call fcn.00402219
push 0x59
push dword [0x47e53c]
mov dword [ebp - 0x18], eax
call fcn.00402219
push 0x4b
push dword [0x47e53c]
mov ebx, eax
call fcn.00402219
add esp, 0x20
push 0
mov dword [ebp - 0x10], eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x12c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
test eax, eax
jne 0x446005
push 0x100
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.00452c10
add esp, 0xc
jmp 0x446078
cmp dword [ebp + 8], 0x12
jne 0x446021
mov eax, esi
shr eax, 0x10
test ah, 1
je 0x446021
mov al, byte [ebp - 0x11a]
mov byte [ebp - 0x87], al
cmp dword [ebp - 0x14], 3
je 0x446041
cmp dword [ebp - 0x14], 1
jg 0x44606b
mov eax, dword [0x47e550]
cmp dword [eax + 0x144], 0
je 0x44606b
cmp dword [ebp - 0x18], 0
jne 0x44606b
cmp dword [ebp + 8], 0x90
jne 0x44606b
test byte [ebp - 0x11c], 0x80
jne 0x44606b
mov eax, esi
shr eax, 0x10
test ah, 0xc0
mov dword [ebp + 8], 0x2b
jne 0x44606b
xor byte [ebp - 0x9c], 1
lea eax, [ebp - 0x12c]
push eax
call dword [sym.imp.USER32.dll_SetKeyboardState]
mov eax, dword [0x47e550]
xor edx, edx
cmp dword [eax + 0x14c], edx
je 0x44609a
mov eax, esi
shr eax, 0x10
and ax, 0xc000
cmp ax, 0x4000
je 0x446df1
shr esi, 0x10
test si, 0x2000
mov dword [ebp - 0x1c], esi
je 0x4460b7
test byte [ebp - 0x87], 0x80
jne 0x4460b7
mov dword [ebp - 4], 1
movzx eax, si
mov ecx, eax
shr ecx, 0xf
not ecx
and ecx, 1
cmp dword [ebp - 4], edx
mov dword [ebp - 0x2c], ecx
je 0x4460ec
test byte [ebp - 0x11b], 0x80
je 0x4460ec
cmp ebx, edx
je 0x4460e2
mov byte [ebp - 0x11a], 0
jmp 0x4460ec
mov byte [ebp - 0x87], 0x80
mov dword [ebp - 4], edx
movzx ecx, byte [ebp - 0x11c]
and eax, 0x81ff
mov dword [ebp - 0x24], eax
movzx eax, byte [ebp - 0x11b]
shr eax, 7
shr ecx, 7
cmp dword [0x47d12c], edx
lea esi, [ecx + eax*2]
mov dword [ebp - 0xc], esi
jne 0x446153
push 0x58
push dword [0x47e53c]
mov dword [0x47d184], 0x100
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x446146
push 0x12
pop eax
cmp dword [ebp + 8], eax
jne 0x446146
test byte [ebp - 0x1b], 1
je 0x446153
mov dword [0x47d184], eax
push 0x5d
pop eax
cmp dword [ebp + 8], eax
jne 0x446153
mov dword [0x47d184], eax
mov eax, dword [ebp + 8]
push 2
xor ebx, ebx
cmp eax, dword [0x47d184]
pop edx
jne 0x446192
mov ecx, dword [0x47d12c]
cmp ecx, ebx
jne 0x44617f
test byte [ebp - 0x1b], 0xc0
jne 0x4461b0
mov dword [0x47d12c], 1
jmp 0x4461b6
cmp ecx, 1
jne 0x4461b0
test byte [ebp - 0x1b], 0x80
je 0x4461b0
mov dword [0x47d12c], edx
jmp 0x4461ab
cmp dword [0x47d12c], 1
jne 0x4461a9
cmp eax, 0x11
je 0x4461b6
mov dword [0x47d12c], ebx
cmp ebx, 1
jle 0x4461b6
cmp dword [ebp - 4], ebx
je 0x4461bb
mov dword [0x47d12c], ebx
cmp dword [ebp - 4], ebx
jne 0x4461e6
mov ecx, dword [0x47e550]
cmp dword [ecx + 0x144], ebx
je 0x4461d3
cmp dword [ebp - 0x18], ebx
jne 0x4461d3
cmp dword [ebp - 0x14], edx
jne 0x4461e6
cmp dword [ebp - 0x14], 3
je 0x4461e6
cmp dword [ebp - 0x10], ebx
jne 0x4461e6
cmp dword [0x47d12c], ebx
je 0x446256
test byte [ebp - 0x1b], 1
jne 0x446256
cmp eax, 0x25
ja 0x44621e
je 0x44621a
sub eax, 0xc
je 0x446216
sub eax, 0x15
je 0x446212
dec eax
je 0x44620e
dec eax
je 0x44620a
dec eax
jne 0x446256
push 0x67
jmp 0x446243
push 0x61
jmp 0x446243
push 0x63
jmp 0x446243
push 0x69
jmp 0x446243
push 0x65
jmp 0x446243
push 0x64
jmp 0x446243
sub eax, 0x26
je 0x446241
dec eax
je 0x44623d
dec eax
je 0x446239
sub eax, 5
je 0x446235
dec eax
jne 0x446256
push 0x6e
jmp 0x446243
push 0x60
jmp 0x446243
push 0x62
jmp 0x446243
push 0x66
jmp 0x446243
push 0x68
test byte [ebp - 0x9c], 1
pop eax
je 0x446253
or esi, 1
mov dword [ebp - 0xc], esi
mov dword [ebp + 8], eax
cmp dword [ebp - 0x2c], ebx
je 0x446ab1
test byte [ebp - 0x87], 0x80
jne 0x446ab1
cmp dword [0x47d12c], 0
jne 0x446ab1
mov ebx, dword [ebp - 4]
test ebx, ebx
je 0x44628a
mov edi, dword [ebp + 0xc]
mov byte [edi], 0x1b
inc edi
mov dword [ebp - 8], edi
mov eax, dword [ebp + 8]
cmp eax, 0x21
jne 0x4462bc
cmp esi, 1
jne 0x4462b1
push 0
push 2
push 0x115
push dword [0x47e55c]
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x446df1
cmp esi, 2
jne 0x4462d7
push 0
push 0
jmp 0x44629b
cmp eax, 0x22
jne 0x4462f8
cmp esi, 1
jne 0x4462cc
push 0
push 3
jmp 0x44629b
cmp esi, 2
jne 0x4462d7
push 0
push 1
jmp 0x44629b
cmp esi, 3
jne 0x4462f8
xor eax, eax
cmp dword [ebp + 8], 0x21
setne al
push eax
push dword [0x47e550]
call fcn.0043709f
pop ecx
pop ecx
jmp 0x446df1
cmp eax, 0x2d
jne 0x44630b
cmp esi, 1
jne 0x44630b
push 0
call fcn.00444a9b
jmp 0x4462f2
test ebx, ebx
je 0x4463a9
cmp eax, 0x73
jne 0x446337
push 0x4e
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x4463c4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret
cmp eax, 0x20
jne 0x446369
push 0x4f
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x4463c4
push 0
push 0xf100
push 0x112
push dword [0x47e55c]
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x44632f
cmp eax, 0xd
jne 0x4463a9
push 0x54
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x4463c4
push 0x6a
push dword [0x47e53c]
call fcn.00402219
cmp eax, 1
pop ecx
pop ecx
je 0x4463c4
mov eax, dword [ebp - 0x1c]
and ax, 0xc000
cmp ax, 0x4000
je 0x44632f
call fcn.00445be8
jmp 0x44632f
cmp eax, 0x13
jne 0x4463c4
cmp esi, 2
jne 0x4463c4
mov eax, dword [0x47e550]
xor dword [eax + 0x144], 1
jmp 0x446df1
cmp dword [ebp - 0x10], 0
je 0x446449
test ebx, ebx
jne 0x4465b1
mov eax, dword [ebp + 8]
add eax, 0xffffff9f
cmp eax, 8
ja case.default.0x4463dd
jmp dword [eax*4 + 0x446df8]
and esi, 3
mov al, byte [esi + 0x472e68]
mov byte [edi], al
jmp 0x4466d6
and esi, 3
mov al, byte [esi + str.jJ_n_n]
jmp 0x4463ed
and esi, 3
mov al, byte [esi + 0x472e58]
jmp 0x4463ed
and esi, 3
mov al, byte [esi + str.hH_b_b]
jmp 0x4463ed
mov byte [edi], 0x2e
jmp 0x4466d6
and esi, 3
mov al, byte [esi + str.lL_f_f]
jmp 0x4463ed
and esi, 3
mov al, byte [esi + 0x472e40]
jmp 0x4463ed
and esi, 3
mov al, byte [esi + str.kK_v_v]
jmp 0x4463ed
and esi, 3
mov al, byte [esi + 0x472e30]
jmp 0x4463ed
test ebx, ebx
jne 0x4465b1
mov edx, dword [ebp - 0x14]
xor ebx, ebx
xor ecx, ecx
cmp edx, 3
je 0x446474
cmp edx, 1
jg 0x446499
mov eax, dword [0x47e550]
cmp dword [eax + 0x144], ebx
je 0x446499
cmp dword [ebp - 0x18], ebx
jne 0x446499
mov eax, dword [ebp + 8]
sub eax, 0x2b
je 0x446496
sub eax, 0x3f
je 0x446492
sub eax, 3
je 0x44648e
dec eax
dec eax
jne 0x446499
push 0x51
jmp 0x446498
push 0x53
jmp 0x446498
push 0x52
jmp 0x446498
push 0x50
pop ecx
mov eax, dword [0x47e550]
cmp dword [eax + 0x144], ebx
je 0x44657a
cmp dword [ebp - 0x18], ebx
jne 0x44657a
mov eax, dword [ebp + 8]
cmp eax, 0x67
ja 0x44651d
je 0x446519
cmp eax, 0x63
ja 0x4464ff
je 0x4464fb
sub eax, 0xd
je 0x4464ed
sub eax, 0x53
je 0x4464e6
dec eax
je 0x4464df
dec eax
jne 0x44657a
push 0x72
jmp 0x446574
push 0x71
jmp 0x446574
push 0x70
jmp 0x446574
test byte [ebp - 0x1b], 1
je 0x44657a
push 0x4d
jmp 0x446579
push 0x73
jmp 0x446574
mov eax, dword [ebp + 8]
sub eax, 0x64
je 0x446515
dec eax
je 0x446511
dec eax
jne 0x44657a
push 0x76
jmp 0x446574
push 0x75
jmp 0x446574
push 0x74
jmp 0x446574
push 0x77
jmp 0x446574
mov eax, dword [ebp + 8]
sub eax, 0x68
je 0x446577
dec eax
je 0x446572
dec eax
je 0x446569
dec eax
je 0x44654e
dec eax
dec eax
je 0x446545
dec eax
je 0x446541
dec eax
jne 0x44657a
cmp edx, 2
jne 0x44657a
push 0x6f
jmp 0x446579
push 0x6e
jmp 0x446574
cmp edx, 2
jne 0x44657a
push 0x6d
jmp 0x446579
xor ecx, ecx
cmp edx, 2
jne 0x44655f
cmp esi, ebx
setne cl
add ecx, 0x6b
jmp 0x44657e
cmp esi, ebx
setne cl
add ecx, 0x6c
jmp 0x44657e
cmp edx, 2
jne 0x44657a
push 0x6a
jmp 0x446579
push 0x79
pop ecx
jmp 0x44657e
push 0x78
pop ecx
cmp ecx, ebx
je 0x4465b1
mov eax, dword [0x47e550]
cmp dword [eax + 0x148], ebx
je 0x4465ab
cmp ecx, 0x50
jl 0x4465a0
cmp ecx, 0x53
jg 0x4465a0
push ecx
push 0x470750
jmp 0x4469cf
push ecx
push str.e__c
jmp 0x4469cf
push ecx
jmp 0x4469ca
mov eax, dword [ebp + 8]
cmp eax, 8
jne 0x4465fb
test esi, esi
jne 0x4465db
push 0x3d
push dword [0x47e53c]
call fcn.00402219
neg eax
sbb al, al
and al, 0x77
add al, 8
pop ecx
pop ecx
mov byte [edi], al
jmp 0x446a7b
cmp esi, 1
jne 0x446668
push 0x3d
push dword [0x47e53c]
call fcn.00402219
neg eax
sbb al, al
and al, 0x89
add al, 0x7f
jmp 0x4465d2
cmp eax, 9
jne 0x446615
cmp esi, 1
jne 0x446668
mov byte [edi], 0x1b
inc edi
mov byte [edi], 0x5b
inc edi
mov byte [edi], 0x5a
jmp 0x4466d6
cmp eax, 0x20
jne 0x446634
cmp esi, 2
jne 0x446627
mov byte [edi], 0
jmp 0x4466d6
cmp esi, 3
jne 0x446668
mov byte [edi], 0xa0
jmp 0x4466d6
cmp eax, 3
jne 0x44665b
cmp esi, 2
jne 0x4466a8
mov eax, dword [0x47c134]
test eax, eax
je 0x446df1
push 1
push dword [0x47be00]
call dword [eax + 0x18]
jmp 0x4462f1
cmp eax, 0x13
jne 0x446668
mov byte [edi], 0x1a
jmp 0x446a7b
cmp esi, 2
jne 0x4466a8
cmp eax, 0x32
jb 0x446682
cmp eax, 0x38
ja 0x446682
mov al, byte [eax + 0x472dee]
jmp 0x4463ed
cmp eax, 0xbd
je 0x446690
cmp eax, 0xbf
jne 0x446695
mov byte [edi], 0x1f
jmp 0x4466d6
cmp eax, 0xdf
je 0x4466a3
cmp eax, 0xdc
jne 0x4466e1
mov byte [edi], 0x1c
jmp 0x4466d6
cmp esi, 3
jne 0x4466b9
cmp eax, 0xde
jne 0x4466e1
mov byte [edi], 0x1e
jmp 0x4466d6
test esi, esi
jne 0x4466e1
cmp eax, 0xd
jne 0x4466e1
mov eax, dword [0x47e550]
cmp dword [eax + 0x150], esi
je 0x4466e1
mov byte [edi], 0xd
inc edi
mov byte [edi], 0xa
mov eax, edi
sub eax, dword [ebp + 0xc]
inc eax
jmp 0x446332
mov ecx, dword [ebp + 8]
lea eax, [ecx - 0x70]
xor ebx, ebx
cmp eax, 0x13
push 0xb
mov dword [ebp - 0x10], eax
pop esi
ja case.default.0x4466f8
jmp dword [eax*4 + 0x446e1c]
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xc
add ebx, esi
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xc
add ebx, 0xc
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xc
add ebx, 0xd
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xc
add ebx, 0xe
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xd
add ebx, 0xf
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xc
add ebx, 0x11
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xd
add ebx, 0x12
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xd
add ebx, 0x13
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xd
add ebx, 0x14
jmp case.default.0x4466f8
mov bl, byte [ebp - 0x11c]
and bl, 0x80
neg bl
sbb ebx, ebx
and ebx, 0xd
add ebx, 0x15
jmp case.default.0x4466f8
push 0x17
jmp 0x446805
push 0x18
jmp 0x446805
push 0x19
jmp 0x446805
push 0x1a
jmp 0x446805
push 0x1c
jmp 0x446805
push 0x1d
jmp 0x446805
push 0x1f
jmp 0x446805
push 0x20
jmp 0x446805
push 0x21
jmp 0x446805
push 0x22
pop ebx
test byte [ebp - 0xc], 2
push 6
pop edx
jne 0x44683f
mov eax, ecx
sub eax, 0x21
je 0x44683c
dec eax
je 0x446838
dec eax
je 0x446834
dec eax
je 0x44682f
sub eax, 9
je 0x44682b
dec eax
jne 0x44683f
push 3
jmp 0x44683e
push 2
jmp 0x44683e
xor ebx, ebx
inc ebx
jmp 0x44683f
push 4
jmp 0x44683e
mov ebx, edx
jmp 0x44683f
push 5
pop ebx
cmp dword [ebp - 0x14], 3
jne 0x446850
cmp ebx, edx
jg 0x446850
movsx ebx, byte [ebx + 0x472e18]
mov eax, dword [0x47e550]
mov ecx, dword [eax + 0x148]
test ecx, ecx
je 0x446882
test ebx, ebx
jle 0x446882
cmp ebx, edx
jg 0x446882
movsx eax, byte [ebx + str._HLMEIG]
push eax
push 0x470750
push edi
call fcn.00452ae8
add esp, 0xc
jmp 0x446a6a
mov eax, dword [ebp - 0x14]
cmp eax, 5
jne 0x446970
cmp ebx, esi
jl 0x44692d
cmp ebx, 0x22
jg 0x44692d
push 0xc
pop ecx
mov esi, str.MNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_____
lea edi, [ebp - 0x160]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x10]
xor eax, eax
cmp ecx, 0xb
movsb byte es:[edi], byte [esi]
ja case.default.0x4468ba
jmp dword [ecx*4 + 0x446e6c]
xor eax, eax
jmp case.default.0x4468ba
xor eax, eax
inc eax
jmp case.default.0x4468ba
push 2
jmp 0x4468f0
push 3
jmp 0x4468f0
push 4
jmp 0x4468f0
push 5
jmp 0x4468f0
mov eax, edx
jmp case.default.0x4468ba
push 7
jmp 0x4468f0
push 8
jmp 0x4468f0
push 9
jmp 0x4468f0
push 0xa
jmp 0x4468f0
push 0xb
pop eax
test byte [ebp - 0x11c], 0x80
je 0x4468fd
add eax, 0xc
test byte [ebp - 0x11b], 0x80
je 0x446909
add eax, 0x18
movsx eax, byte [ebp + eax - 0x160]
mov esi, dword [ebp - 8]
push eax
push 0x470740
push esi
call fcn.00452ae8
sub esi, dword [ebp + 0xc]
add esp, 0xc
add eax, esi
jmp 0x446332
cmp ebx, 1
jl 0x446970
cmp ebx, edx
jg 0x446970
cmp ebx, 3
mov esi, str.HL.FIG
lea edi, [ebp - 0x2c]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jne 0x446952
mov eax, dword [ebp - 8]
inc dword [ebp - 8]
mov byte [eax], 0x7f
jmp 0x44696b
movsx eax, byte [ebp + ebx - 0x2d]
push eax
push 0x470740
push dword [ebp - 8]
call fcn.00452ae8
add esp, 0xc
add dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x4469dc
test ecx, ecx
jne 0x446979
cmp eax, 4
jne 0x446994
cmp ebx, esi
jl 0x446994
cmp ebx, 0x18
jg 0x446994
xor eax, eax
cmp ebx, 0xf
jle 0x44698a
inc eax
cmp ebx, 0x15
jle 0x446990
inc eax
sub ebx, eax
jmp 0x4469be
cmp eax, 1
jne 0x4469b0
cmp ebx, esi
jl 0x4469e4
cmp ebx, 0xf
jg 0x4469e4
add ebx, 0x36
push ebx
push str.e___c
jmp 0x446874
cmp eax, 2
jne 0x4469e4
cmp ebx, esi
jl 0x4469e4
cmp ebx, 0xe
jg 0x4469e4
add ebx, 0x45
test ecx, ecx
push ebx
jne 0x446596
push str.eO_c
push edi
call fcn.00452ae8
add esp, 0xc
add edi, eax
mov eax, edi
sub eax, dword [ebp + 0xc]
jmp 0x446332
cmp ebx, 1
je 0x4469ee
cmp ebx, 4
jne 0x446a1b
push 0x3e
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x446a1b
cmp ebx, 1
mov eax, 0x472dc8
je 0x446a10
mov eax, 0x472dc4
push eax
push edi
call fcn.00452ae8
pop ecx
pop ecx
jmp 0x446a6a
test ebx, ebx
je 0x446a2a
push ebx
push str.e__d
jmp 0x446874
mov ecx, dword [ebp + 8]
mov eax, ecx
sub eax, 0xc
je 0x446a52
sub eax, 0x19
je 0x446a4e
dec eax
je 0x446a4a
dec eax
je 0x446a46
dec eax
jne 0x446a74
mov al, 0x42
jmp 0x446a54
mov al, 0x43
jmp 0x446a54
mov al, 0x41
jmp 0x446a54
mov al, 0x44
jmp 0x446a54
mov al, 0x47
push dword [ebp - 0xc]
movsx eax, al
push eax
push dword [0x47e550]
push edi
call fcn.00436bdb
add esp, 0x10
sub edi, dword [ebp + 0xc]
add eax, edi
jmp 0x446332
cmp ecx, 0xd
jne 0x446a87
mov byte [edi], cl
push 0xfffffffffffffffe
mov byte [edi + 1], 0
pop eax
jmp 0x446332
cmp dword [ebp - 4], 0
je 0x446aaa
cmp ecx, 0x60
jb 0x446aaa
cmp ecx, 0x69
ja 0x446aaa
mov eax, dword [0x47d17c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x60]
mov dword [0x47d17c], eax
jmp 0x446ab1
and dword [0x47d17c], 0
and dword [ebp - 0x10], 0
cmp byte [ebp - 0x118], 0
je 0x446ae6
push 0x8f
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
je 0x446ae6
xor eax, eax
cmp dword [ebp - 4], eax
mov byte [ebp - 0x118], 0
sete al
mov dword [ebp - 0x10], eax
cmp dword [0x47e4b0], 2
jne 0x446b18
mov eax, dword [0x47d0e0]
test eax, eax
je 0x446b18
push dword [ebp - 0x20]
xor edi, edi
push edi
push 3
push 0x47ccb4
lea ecx, [ebp - 0x12c]
push ecx
push dword [ebp - 0x24]
push dword [ebp + 8]
call eax
mov esi, eax
jmp 0x446b70
push dword [ebp - 0x20]
lea eax, [ebp - 0x12c]
push 0
push 0x47bce0
push eax
push dword [ebp - 0x24]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov esi, eax
test esi, esi
jle 0x446d8a
xor eax, eax
test esi, esi
jle 0x446b57
mov cl, byte [eax*2 + 0x47bce0]
mov byte [eax + 0x47bcd0], cl
inc eax
cmp eax, esi
jl 0x446b45
push 3
push 0x47ccb4
push esi
push 0x47bcd0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor edi, edi
cmp esi, edi
jle 0x446d8a
xor ebx, ebx
cmp esi, edi
jle 0x446d77
mov ecx, dword [0x47d12c]
xor eax, eax
cmp ecx, 2
mov ax, word [ebx*2 + 0x47ccb4]
mov dword [ebp - 0x18], eax
jne 0x446bc1
cmp ax, 0x20
jb 0x446c24
cmp ax, 0x80
jae 0x446c24
movzx eax, ax
mov dword [0x47d180], eax
mov dword [0x47d12c], 3
jmp 0x446d6e
cmp ecx, 3
jne 0x446c24
cmp ax, 0x20
jb 0x446c24
cmp ax, 0x80
jae 0x446c24
movzx eax, ax
push eax
push dword [0x47d180]
mov dword [0x47d12c], edi
call fcn.0044ff76
cmp eax, 0xffffffff
pop ecx
pop ecx
je 0x446d80
push dword [0x47e550]
mov dword [ebp - 0xc], eax
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
je 0x446d6e
push 1
push 1
lea ecx, [ebp - 0xc]
push ecx
push eax
call fcn.004091a7
add esp, 0x10
jmp 0x446d6e
cmp dword [ebp - 0x2c], edi
mov dword [0x47d12c], edi
jne 0x446cd8
mov ecx, dword [0x47d17c]
cmp ecx, edi
je 0x446cb3
mov eax, dword [0x47e550]
cmp dword [eax + 0xdc], edi
jne 0x446c84
mov edx, dword [eax + 0x1090]
cmp dword [edx + 0xc], 0xfde9
je 0x446c84
cmp dword [0x47c154], edi
jne 0x446c84
push eax
mov byte [ebp + 0xf], cl
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
je 0x446ca8
push 1
push 1
lea ecx, [ebp + 0xf]
push ecx
push eax
call fcn.00408aa1
jmp 0x446ca5
push eax
mov dword [ebp - 0xc], ecx
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
je 0x446ca8
push 1
push 1
lea ecx, [ebp - 0xc]
push ecx
push eax
call fcn.004091a7
add esp, 0x10
mov dword [0x47d17c], edi
jmp 0x446d67
push dword [0x47e550]
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
je 0x446d67
push 1
push 1
lea ecx, [ebp - 0x18]
jmp 0x446d5d
cmp dword [ebp - 0x10], edi
je 0x446d26
cmp ax, 0x80
jae 0x446d26
movzx eax, ax
push eax
mov word [ebp - 0x24], 0x1b
call fcn.0044fed4
push dword [0x47e550]
mov word [ebp - 0x22], ax
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
pop ecx
je 0x446d67
xor ecx, ecx
cmp dword [ebp - 4], edi
push 1
setne cl
inc ecx
push ecx
xor ecx, ecx
cmp dword [ebp - 4], edi
sete cl
lea ecx, [ebp + ecx*2 - 0x24]
jmp 0x446d5d
push dword [0x47e550]
mov word [ebp - 0x20], 0x1b
mov word [ebp - 0x1e], ax
call fcn.00437283
mov eax, dword [0x47c148]
cmp eax, edi
pop ecx
je 0x446d67
xor ecx, ecx
cmp dword [ebp - 4], edi
push 1
setne cl
inc ecx
push ecx
xor ecx, ecx
cmp dword [ebp - 4], edi
sete cl
lea ecx, [ebp + ecx*2 - 0x20]
push ecx
push eax
call fcn.004091a7
add esp, 0x10
xor eax, eax
call fcn.00442eaa
inc ebx
cmp ebx, esi
jl 0x446b82
mov word [0x47ccb4], di
jmp 0x446df1
push 0x10
call dword [sym.imp.USER32.dll_MessageBeep]
jmp 0x446df1
xor ecx, ecx
cmp dword [ebp - 4], ecx
jne 0x446d9a
mov word [0x47ccb4], cx
jmp 0x446dd0
cmp word [0x47ccb4], cx
je 0x446dd0
mov eax, dword [0x47e550]
cmp dword [eax + 0xdc], ecx
jne 0x446dc7
mov eax, dword [eax + 0x1090]
cmp dword [eax + 0xc], 0xfde9
je 0x446dc7
cmp dword [0x47c154], ecx
je 0x446dd0
mov word [0x47ccb4], 0xa
cmp dword [ebp + 8], 0x12
jne 0x44632f
push 0x50
push dword [0x47e53c]
call fcn.00402219
test eax, eax
pop ecx
pop ecx
jne 0x44632f
xor eax, eax
jmp 0x446332