Function at 0x46ea40
Capabilities:
Get keyboard layout

Disassembly:
push 0xffffffffffffffff
push 0x4cd204
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x30
push ebx
mov bl, byte [str.___0123456789ABCDEF]
push ebp
mov ebp, dword [esp + 0x4c]
push esi
push edi
lea edi, [esp + 0x54]
mov eax, ebp
mov word [esp + 0x54], 0x920
mov byte [esp + 0x56], bl
mov byte [esp + 0x57], 0
call fcn.004099e0
mov esi, eax
test esi, esi
jne 0x46ea9e
mov eax, ebp
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46ea90
sub eax, edx
lea esi, [eax + ebp]
jmp 0x46ead8
mov ecx, esi
mov dl, byte [ecx]
cmp dl, 0x20
je 0x46eaac
cmp dl, 9
jne 0x46eaaf
inc ecx
jmp 0x46eaa0
mov al, byte [ecx]
test al, al
je 0x46ead8
cmp al, bl
je 0x46eabd
mov ebx, ecx
jmp 0x46eada
lea ebx, [ecx + 1]
mov cl, byte [ebx]
cmp cl, 0x20
je 0x46eacc
cmp cl, 9
jne 0x46eacf
inc ebx
jmp 0x46eac0
cmp byte [ebx], 0
mov dword [esp + 0x54], ebx
jne 0x46eade
xor ebx, ebx
mov dword [esp + 0x54], ebx
push 0xffffffffffffffff
sub esi, ebp
push esi
push 0x4e3008
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
je 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e301c
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
sete al
test al, al
jne 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3034
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46ebaa
mov edi, 0x4e3044
mov eax, ebx
call fcn.004099e0
mov ebp, eax
test ebp, ebp
je 0x46ed03
or eax, 0xffffffff
mov edi, ebx
mov byte [ebp], 0
call fcn.0042ec60
mov esi, ebx
call fcn.0041a3c0
lea eax, [ebp + 1]
mov cl, byte [eax]
cmp cl, 0x20
je 0x46eb81
cmp cl, 9
jne 0x46eb84
inc eax
jmp 0x46eb75
push eax
push ebx
call fcn.0047c260
neg eax
sbb eax, eax
and eax, 0xfffffffd
add eax, 3
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
push 0xffffffffffffffff
push esi
push 0x4e3048
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46ed1a
xor edi, edi
push ebx
lea eax, [esp + 0x2c]
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], edi
call fcn.00413c90
push 1
push edi
lea eax, [esp + 0x58]
mov dword [esp + 0x50], edi
push eax
lea esi, [esp + 0x34]
mov word [esp + 0x5c], 0x2c
call fcn.00414160
mov esi, dword [esp + 0x2c]
xor ebp, ebp
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
cmp esi, edi
je 0x46ecfa
mov edi, edi
mov edi, 0x4d99e0
mov eax, esi
call fcn.004099e0
mov ebx, eax
test ebx, ebx
je 0x46ec84
or eax, 0xffffffff
mov edi, esi
mov byte [ebx], 0
call fcn.0042ec60
call fcn.0041a3c0
cmp byte [esi], 0
je 0x46ec7e
test ebp, ebp
jne 0x46ec57
mov dword [esp + 0x50], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ec20
cmp ebp, 1
jne 0x46ec66
mov dword [esp + 0x54], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ec20
cmp ebp, 2
jne 0x46ec75
mov dword [esp + 0x10], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ec20
cmp ebp, 3
jne 0x46ec7e
mov dword [esp + 0x14], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ec20
mov edi, dword [esp + 0x50]
xor edx, edx
cmp edi, edx
je 0x46f191
mov ecx, dword [esp + 0x54]
cmp ecx, edx
je 0x46f191
mov esi, dword [esp + 0x10]
cmp esi, edx
je 0x46f191
mov eax, dword [esp + 0x14]
cmp eax, edx
je 0x46f191
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edx
push eax
lea edx, [esp + 0x18]
push esi
push edx
mov byte [esp + 0x54], 1
call fcn.0047e240
add esp, 0xc
test al, al
je 0x46f188
mov eax, dword [esp + 0x18]
push eax
push edi
call fcn.0047c260
test eax, eax
je 0x46f188
lea ecx, [esp + 0x14]
call fcn.004138f0
lea ecx, [esp + 0x28]
call fcn.004138f0
xor eax, eax
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
push 0xffffffffffffffff
push esi
push str.se43_r__
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46ee7c
push ebx
lea esi, [esp + 0x38]
call fcn.004138d0
push 1
xor ebp, ebp
push ebp
lea ecx, [esp + 0x58]
mov dword [esp + 0x50], 2
push ecx
mov word [esp + 0x5c], 0x2c
call fcn.00414160
mov esi, dword [esp + 0x38]
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], ebp
cmp esi, ebp
je 0x46ee45
mov edi, 0x4d99e0
mov eax, esi
call fcn.004099e0
mov ebx, eax
test ebx, ebx
je 0x46ede4
or eax, 0xffffffff
mov edi, esi
mov byte [ebx], 0
call fcn.0042ec60
call fcn.0041a3c0
cmp byte [esi], 0
je 0x46edde
test ebp, ebp
jne 0x46edb7
mov dword [esp + 0x50], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ed80
cmp ebp, 1
jne 0x46edc6
mov dword [esp + 0x54], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ed80
cmp ebp, 2
jne 0x46edd5
mov dword [esp + 0x14], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ed80
cmp ebp, 3
jne 0x46edde
mov dword [esp + 0x10], esi
lea esi, [ebx + 1]
inc ebp
jmp 0x46ed80
mov edi, dword [esp + 0x50]
xor ecx, ecx
cmp edi, ecx
je 0x46ee6e
mov eax, dword [esp + 0x54]
cmp eax, ecx
je 0x46ee6e
mov esi, dword [esp + 0x14]
cmp esi, ecx
je 0x46ee6e
mov edx, dword [esp + 0x10]
cmp edx, ecx
je 0x46ee6e
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
push edx
push esi
lea ecx, [esp + 0x30]
mov byte [esp + 0x50], 3
call fcn.0047e490
add esp, 8
test al, al
je 0x46ee65
mov edx, dword [esp + 0x2c]
push edx
push edi
call fcn.0047c260
test eax, eax
je 0x46ee65
lea ecx, [esp + 0x28]
call fcn.004138f0
lea ecx, [esp + 0x34]
call fcn.004138f0
xor eax, eax
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
lea ecx, [esp + 0x28]
call fcn.004138f0
lea ecx, [esp + 0x34]
call fcn.004138f0
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3078
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46eea1
mov eax, 1
jmp 0x46ef12
push 0xffffffffffffffff
push esi
push 0x4e3090
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46eec6
mov eax, 2
jmp 0x46ef12
push 0xffffffffffffffff
push esi
push 0x4e30b4
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46eeeb
mov eax, 3
jmp 0x46ef12
push 0xffffffffffffffff
push esi
push str.se43
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f25f
mov eax, 4
cmp byte [0x4f1553], 0
jne 0x4702aa
xor edi, edi
cmp eax, 1
jne 0x46ef57
cmp ebx, edi
jne 0x46ef5b
push ebp
push 0x4e3100
call fcn.0049be50
add esp, 4
push eax
mov ecx, dword [esp + 0x58]
call fcn.00473b40
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
cmp ebx, edi
je 0x46ef68
mov cl, byte [ebx]
cmp cl, 0x20
je 0x46ef67
cmp cl, 9
jne 0x46ef68
inc ebx
cmp eax, 1
jne 0x46ef95
cmp ebx, edi
je 0x46ef76
cmp byte [ebx], 0
je 0x46ef2a
push ebx
mov eax, 0x4f3cf8
call fcn.00413c90
test eax, eax
je 0x46f248
mov byte [0x4f1553], 1
jmp 0x4702aa
cmp eax, 2
jne 0x46f04d
cmp ebx, edi
je 0x46efb2
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46efa7
sub eax, edx
jne 0x46efc1
push 0x4e3118
call fcn.0049be50
add esp, 4
mov ebx, eax
mov eax, dword [0x4f22d8]
push eax
lea esi, [esp + 0x38]
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edi
call fcn.004138d0
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x28]
push ecx
push edx
call fcn.004bd800
add esp, 4
mov ecx, eax
call fcn.0047e0e0
add esp, 4
lea eax, [esp + 0x28]
call fcn.004146f0
test eax, eax
je 0x46f236
lea edi, [esp + 0x28]
mov esi, 0x4f3cf8
call fcn.00413a70
test eax, eax
je 0x46f236
push 1
push 1
push ebx
call fcn.00414160
test eax, eax
je 0x46f236
lea ecx, [esp + 0x34]
mov byte [0x4f1553], 1
call fcn.004138f0
mov ecx, edi
call fcn.004138f0
jmp 0x4702aa
cmp eax, 3
jne 0x46f1c8
push 0x3a
push ebx
call fcn.004bb121
add esp, 8
cmp eax, edi
je 0x46f068
inc eax
jmp 0x46f06a
mov eax, ebx
cmp byte [eax], 0x5c
jne 0x46f070
inc eax
push eax
lea esi, [esp + 0x2c]
call fcn.004138d0
mov dword [esp + 0x48], 4
mov esi, dword [esp + 0x2c]
cmp esi, edi
je 0x46f0cc
push 0x2c
push esi
call fcn.004bb121
add esp, 8
cmp eax, edi
je 0x46f09c
mov byte [eax], 0
lea eax, [esp + 0x28]
call fcn.004146f0
cmp byte [eax + esi - 1], 0x5c
jne 0x46f0ba
lea eax, [esp + 0x28]
call fcn.004146f0
mov byte [eax + esi - 1], 0
push 1
push 1
push 0x4d9ad4
lea esi, [esp + 0x34]
call fcn.00414160
mov eax, dword [0x4f22d8]
push 1
push 1
push eax
lea esi, [esp + 0x34]
call fcn.00414160
test eax, eax
je 0x46f23f
push 0x2c
push ebx
call fcn.004bb121
add esp, 8
cmp eax, edi
je 0x46f11d
mov cl, byte [eax + 1]
cmp cl, 0x20
je 0x46f106
cmp cl, 9
je 0x46f106
inc eax
jmp 0x46f109
add eax, 2
cmp eax, edi
je 0x46f11d
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x46f112
sub ecx, esi
jne 0x46f12a
push 0x4e3124
call fcn.0049be50
add esp, 4
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x14]
push ecx
push edx
mov ebx, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], edi
call fcn.004bd800
add esp, 4
mov ecx, eax
call fcn.0047e0e0
add esp, 4
lea eax, [esp + 0x14]
call fcn.004146f0
test eax, eax
je 0x46f19f
lea edi, [esp + 0x14]
mov esi, 0x4f3cf8
call fcn.00413a70
test eax, eax
je 0x46f19f
push 1
push 1
push ebx
call fcn.00414160
test eax, eax
je 0x46f19f
mov byte [0x4f1553], 1
lea ecx, [esp + 0x14]
call fcn.004138f0
lea ecx, [esp + 0x28]
call fcn.004138f0
jmp 0x4702aa
lea ecx, [esp + 0x14]
call fcn.004138f0
lea ecx, [esp + 0x28]
call fcn.004138f0
xor eax, eax
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
cmp eax, 4
jne 0x46f248
cmp ebx, edi
je 0x46f1e1
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46f1d6
sub eax, edx
jne 0x46f1f0
push 0x4e3130
call fcn.0049be50
add esp, 4
mov ebx, eax
mov eax, dword [0x4f22d8]
push eax
lea esi, [esp + 0x38]
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], edi
call fcn.004138d0
push 1
push edi
push 0x4d9ad4
call fcn.00414160
mov ecx, dword [0x4f22dc]
push 1
push edi
push ecx
call fcn.00414160
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x28]
push edx
push eax
jmp 0x46efe6
lea ecx, [esp + 0x34]
call fcn.004138f0
lea ecx, [esp + 0x28]
call fcn.004138f0
xor eax, eax
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
push 0xffffffffffffffff
push esi
push 0x4e313c
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f2a3
mov eax, dword [0x4f3ca0]
cmp eax, 0x64
jae 0x46ed03
mov ecx, dword [0x4f3ca4]
mov dword [eax*4 + 0x4f3b10], ecx
inc dword [0x4f3ca0]
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e315c
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f2e7
mov eax, dword [0x4f3b0c]
cmp eax, 0x64
jae 0x46ed03
mov edx, dword [0x4f3ca4]
mov dword [eax*4 + 0x4f397c], edx
inc dword [0x4f3b0c]
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3178
xor edi, edi
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
je 0x470284
push 0x4e3198
call fcn.0049be50
add esp, 4
push 0xffffffffffffffff
push esi
mov ecx, ebp
mov edi, eax
call fcn.004a2fa0
add esp, 8
test eax, eax
je 0x470284
push 0xffffffffffffffff
push esi
push 0x4e31bc
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f35c
mov dword [0x4f0d40], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e31cc
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f386
mov byte [0x4f0d2d], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e31e0
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f3b0
mov byte [0x4f0d2c], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.se8__9__f_8____
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f466
mov dword [0x4f0d28], 1
test ebx, ebx
je 0x4702aa
push 0x4e320c
call fcn.0049be50
add esp, 4
push eax
push ebx
call fcn.004ba135
add esp, 8
test eax, eax
jne 0x46f40e
mov dword [0x4f0d28], 2
jmp 0x4702aa
push 0x4e321c
call fcn.0049be50
add esp, 4
push eax
push ebx
call fcn.004ba135
add esp, 8
test eax, eax
jne 0x46f438
mov dword [0x4f0d28], 3
jmp 0x4702aa
push 0x4d92ac
call fcn.0049be50
add esp, 4
push eax
push ebx
call fcn.004ba135
add esp, 8
test eax, eax
jne 0x4702aa
mov dword [0x4f0d28], 4
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e322c
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f490
or byte [0x4f14e7], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3248
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f4ba
or byte [0x4f14e7], 2
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3264
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f503
test ebx, ebx
je 0x46f4f7
push eax
mov esi, ebx
call fcn.00409ac0
add esp, 4
mov byte [0x4f13d7], 0
cmp eax, 2
je 0x4702aa
mov byte [0x4f13d7], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4d740c
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f5ca
test ebx, ebx
jne 0x46f538
mov dword [0x4f0d50], 0
jmp 0x4702aa
mov edi, ebx
call fcn.0040a090
mov dword [0x4f0d50], eax
test eax, eax
jne 0x4702aa
mov eax, dword [0x4ec48c]
mov edi, dword [eax + 0x94]
mov esi, dword [esp + 0x50]
push 0
push 0
push 0
push 0x4d6959
push 0
push 0xe1
mov dword [eax + 0x94], 0
push ebx
mov ecx, esi
mov byte [esi + 0x45], 1
call fcn.00470380
test eax, eax
je 0x46ed03
mov eax, dword [0x4ec48c]
mov byte [esi + 0x45], 0
mov dword [eax + 0x94], edi
mov esi, dword [esi + 4]
call fcn.0040a010
mov dword [0x4f0d50], eax
test eax, eax
je 0x46ed03
mov byte [eax], 5
mov dword [eax + 0xc], esi
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov dword [eax + 8], 0x4d6959
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3278
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f601
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0041a410
mov dword [0x4ec484], eax
jmp 0x4702aa
push 0x4e328c
call fcn.0049be50
add esp, 4
push 6
push eax
push ebp
call fcn.004babb4
add esp, 0xc
test eax, eax
jne 0x46f89e
push 0x4e329c
call fcn.0049be50
add esp, 4
push 3
push eax
lea eax, [ebp + 6]
push eax
call fcn.004babb4
add esp, 0xc
test eax, eax
push 0x4dabcc
sete bl
call fcn.0049be50
add esp, 4
movzx ecx, bl
neg ecx
sbb ecx, ecx
and ecx, 3
add ecx, 6
push 6
lea esi, [ecx + ebp]
push eax
push esi
call fcn.004babb4
add esp, 0xc
test eax, eax
jne 0x46f67d
test bl, bl
setne dl
inc dl
mov byte [esp + 0x14], dl
jmp 0x46f6a9
push 0x4d9c84
call fcn.0049be50
add esp, 4
push 5
push eax
push esi
call fcn.004babb4
add esp, 0xc
test eax, eax
jne 0x46f884
test bl, bl
setne al
add al, 3
mov byte [esp + 0x14], al
mov edx, dword [esp + 0x54]
test edx, edx
je 0x46f529
mov al, byte [str.___0123456789ABCDEF]
xor esi, esi
lea esp, [esp]
mov cl, byte [edx]
test cl, cl
je 0x46f6e2
cmp cl, byte [0x4ec3d3]
je 0x46f6ff
cmp cl, al
je 0x46f6ff
cmp cl, byte [0x4ec3d2]
je 0x46f6ff
mov cl, byte [edx + 1]
inc edx
test cl, cl
jne 0x46f6c6
test esi, esi
je 0x46f7cc
lea edi, [esi + 1]
lea ecx, [ecx]
mov cl, byte [edi]
cmp cl, 0x20
je 0x46f6fc
cmp cl, 9
jne 0x46f72e
inc edi
jmp 0x46f6f0
mov cl, byte [edx]
test cl, cl
je 0x46f6e2
cmp cl, byte [0x4ec3d2]
je 0x46f723
cmp cl, al
jne 0x46f71a
test esi, esi
jne 0x46f723
mov esi, edx
inc edx
jmp 0x46f6c0
inc edx
cmp byte [edx], 0
je 0x46f6e2
inc edx
jmp 0x46f6c0
push ebp
push 0x4e32a8
jmp 0x46ef30
mov byte [esi], 0
mov eax, esi
mov esi, dword [esp + 0x54]
sub eax, esi
call fcn.0041a3c0
mov bl, byte [0x4ec3d3]
mov ecx, edi
mov al, byte [ecx]
test al, al
je 0x46f7d1
cmp al, bl
je 0x46f761
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x46f750
jmp 0x46f7d1
cmp byte [ecx], 0
je 0x46f7d1
movsx eax, byte [ecx + 1]
lea esi, [ecx + 1]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x46f77c.99
movzx edx, byte [eax + 0x4702e8]
jmp dword [edx*4 + 0x4702c4]
mov byte [esi], 7
jmp case.0x46f77c.99
mov byte [esi], 8
jmp case.0x46f77c.99
mov byte [esi], 0xc
jmp case.0x46f77c.99
mov byte [esi], 0xa
jmp case.0x46f77c.99
mov byte [esi], 0xd
jmp case.0x46f77c.99
mov byte [esi], 9
jmp case.0x46f77c.99
mov byte [esi], 0xb
jmp case.0x46f77c.99
mov byte [esi], 0x20
mov eax, esi
lea ebp, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x46f7b0
sub eax, ebp
inc eax
push eax
push esi
push ecx
call fcn.004bad10
add esp, 0xc
mov ecx, esi
jmp 0x46f746
mov edi, 0x4d6959
mov bl, byte [0x4ec3d3]
mov ecx, dword [esp + 0x54]
jmp 0x46f7e0
mov al, byte [ecx]
test al, al
je 0x46f7f2
cmp al, bl
je 0x46f81b
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x46f7e6
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x54]
push edi
push ecx
call fcn.00409e30
add esp, 8
test eax, eax
jne 0x4702aa
push 0x4d6959
push str.Out_of_memory.
jmp 0x46ef39
cmp byte [ecx], 0
je 0x46f7f2
movsx eax, byte [ecx + 1]
lea esi, [ecx + 1]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x46f836.99
movzx eax, byte [eax + 0x470324]
jmp dword [eax*4 + 0x470300]
mov byte [esi], 7
jmp case.0x46f836.99
mov byte [esi], 8
jmp case.0x46f836.99
mov byte [esi], 0xc
jmp case.0x46f836.99
mov byte [esi], 0xa
jmp case.0x46f836.99
mov byte [esi], 0xd
jmp case.0x46f836.99
mov byte [esi], 9
jmp case.0x46f836.99
mov byte [esi], 0xb
jmp case.0x46f836.99
mov byte [esi], 0x20
mov eax, esi
lea ebp, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x46f868
sub eax, ebp
inc eax
push eax
push esi
push ecx
call fcn.004bad10
add esp, 0xc
mov ecx, esi
jmp 0x46f7e0
mov eax, 4
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 8
push 0xffffffffffffffff
push esi
push str.sH_3______
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fa0c
test ebx, ebx
je 0x4702aa
push 0x4e3300
call fcn.0049be50
add esp, 4
push eax
mov eax, ebx
call fcn.004a3290
add esp, 4
test eax, eax
je 0x46f99a
mov edi, 0x4e3314
call fcn.004099e0
test eax, eax
je 0x4702aa
push 0x64
inc eax
push eax
push str._____:____.___n__t
call fcn.004bd1c0
mov bl, byte [0x4ec3d3]
mov byte [0x4ec4f4], 0
mov ecx, str._____:____.___n__t
mov al, byte [ecx]
add esp, 0xc
test al, al
je 0x4702aa
cmp al, bl
je 0x46f938
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x46f927
jmp 0x4702aa
cmp byte [ecx], 0
je 0x4702aa
movsx eax, byte [ecx + 1]
lea esi, [ecx + 1]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x46f957.99
movzx edx, byte [eax + 0x470360]
jmp dword [edx*4 + 0x47033c]
mov byte [esi], 7
jmp case.0x46f957.99
mov byte [esi], 8
jmp case.0x46f957.99
mov byte [esi], 0xc
jmp case.0x46f957.99
mov byte [esi], 0xa
jmp case.0x46f957.99
mov byte [esi], 0xd
jmp case.0x46f957.99
mov byte [esi], 9
jmp case.0x46f957.99
mov byte [esi], 0xb
mov eax, esi
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x46f984
sub eax, edi
inc eax
push eax
push esi
push ecx
call fcn.004bad10
mov ecx, esi
jmp 0x46f91a
push 0x4e3318
call fcn.0049be50
add esp, 4
push 7
push eax
push ebx
call fcn.004babb4
add esp, 0xc
test eax, eax
jne 0x46f9c1
mov byte [0x4ec3f7], al
jmp 0x4702aa
push 0x4f13d5
push 0x4f13d4
push 0x4f13d3
push 0x4ec3e7
push 0x4f13d0
push 0x4f13d2
push 0x4ec3e6
push 0x4ec3e5
push 0x4f13d1
push 0x4ec488
push 0x4f13cc
push 0x4f13c8
mov eax, ebx
call fcn.0040d430
add esp, 0x30
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.sH_304_b.___6_f__7_
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fa43
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
mov dword [0x4ec464], eax
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.sH_304_f____:_
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fa8d
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
mov dword [0x4ec480], eax
cmp eax, 0xa
jge 0x4702aa
mov dword [0x4ec480], 0xa
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3360
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fad7
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
mov dword [0x4ec47c], eax
cmp eax, 1
jge 0x4702aa
mov dword [0x4ec47c], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3380
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fb2e
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
cmp eax, 0xff
jle 0x46fb1a
mov eax, 0xff
mov byte [0x4ec387], al
jmp 0x4702aa
cmp eax, 1
jge 0x46fb24
mov eax, 1
mov byte [0x4ec387], al
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e33a0
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fb77
test ebx, ebx
je 0x46fb6b
push eax
mov esi, ebx
call fcn.00409ac0
add esp, 4
mov byte [0x4f0d36], 0
cmp eax, 2
je 0x4702aa
mov byte [0x4f0d36], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e33bc
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fbce
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
cmp eax, 0xff
jle 0x46fbba
mov eax, 0xff
mov dword [0x4ec478], eax
jmp 0x4702aa
cmp eax, 1
jge 0x46fbc4
mov eax, 1
mov dword [0x4ec478], eax
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_v.87__3
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fc05
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
mov dword [0x4ec468], eax
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e33ec
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fc4e
test ebx, ebx
je 0x46fc42
push eax
mov esi, ebx
call fcn.00409ac0
add esp, 4
mov byte [0x4f13d6], 0
cmp eax, 2
je 0x4702aa
mov byte [0x4f13d6], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e33fc
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fc78
mov byte [0x4f0cfa], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_r5
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fca6
mov eax, dword [esp + 0x50]
mov byte [eax + 0x617], 1
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3430
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fd2c
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0041a440
fld qword [0x4e59a0]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x46fcef
fstp st(0)
fld1
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x46fcf3
fstp st(1)
jmp 0x46fcf5
fstp st(0)
fld qword [0x4e5870]
fnstcw word [esp + 0x50]
movzx eax, word [esp + 0x50]
fmul st(1), st(0)
or eax, 0xc00
mov dword [esp + 0x54], eax
fmulp st(1)
fldcw word [esp + 0x54]
fistp qword [esp + 0x14]
mov ecx, dword [esp + 0x14]
mov dword [0x4ec474], ecx
fldcw word [esp + 0x50]
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3440
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fd8b
test ebx, ebx
je 0x4702aa
mov esi, ebx
call fcn.0040dda0
mov dword [0x4ec470], eax
test eax, eax
jns 0x46fd71
mov dword [0x4ec470], 0
jmp 0x4702aa
cmp eax, 0x1f4
jle 0x4702aa
mov dword [0x4ec470], 0x1f4
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_v__01_a5__
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fe5a
test ebx, ebx
je 0x4702aa
cmp byte [ebx + 1], al
jne 0x46fe28
mov al, byte [ebx]
cmp al, 0x23
je 0x47018b
cmp al, byte [0x4ec3d2]
je 0x47018b
cmp al, byte [0x4ec3d3]
je 0x47018b
cmp al, byte [str.___0123456789ABCDEF]
je 0x47018b
cmp al, 0x21
je 0x47018b
cmp al, 0x5e
je 0x47018b
cmp al, 0x2b
je 0x47018b
cmp al, 0x24
je 0x47018b
cmp al, 0x7e
je 0x47018b
cmp al, 0x2a
je 0x47018b
cmp al, 0x3c
je 0x47018b
cmp al, 0x3e
je 0x47018b
push 0xf
push ebx
push 0x4ec418
call fcn.004bd1c0
mov eax, 0x4ec418
add esp, 0xc
mov byte [0x4ec427], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46fe47
sub eax, edx
mov dword [0x4ec3fc], eax
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_r_____
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46fecc
test ebx, ebx
je 0x4702aa
mov bl, byte [ebx]
cmp bl, 0x23
je 0x47018b
cmp bl, byte [0x4ec3d2]
je 0x47018b
cmp bl, byte [str.___0123456789ABCDEF]
je 0x47018b
cmp bl, 0x2e
je 0x47018b
cmp dword [0x4ec3fc], 1
jne 0x46fec1
cmp bl, byte [0x4ec418]
je 0x47018b
mov byte [0x4ec3d3], bl
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_f45_3
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46ff35
test ebx, ebx
je 0x4702aa
mov bl, byte [ebx]
cmp bl, byte [0x4ec3d3]
je 0x47018b
cmp bl, byte [str.___0123456789ABCDEF]
je 0x47018b
cmp bl, 0x2e
je 0x47018b
cmp dword [0x4ec3fc], 1
jne 0x46ff2a
cmp bl, byte [0x4ec418]
je 0x47018b
mov byte [0x4ec3d2], bl
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push str.s_f4_8_1_
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46ffa7
test ebx, ebx
je 0x4702aa
mov bl, byte [ebx]
cmp bl, 0x23
je 0x47018b
cmp bl, byte [0x4ec3d3]
je 0x47018b
cmp bl, byte [0x4ec3d2]
je 0x47018b
cmp bl, 0x2e
je 0x47018b
cmp dword [0x4ec3fc], 1
jne 0x46ff9c
cmp bl, byte [0x4ec418]
je 0x47018b
mov byte [str.___0123456789ABCDEF], bl
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e3490
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x470014
test ebx, ebx
je 0x470001
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 0x4ec386
xor ecx, ecx
mov edi, 0x4ec460
mov edx, ebx
call fcn.00412da0
add esp, 4
test al, al
jne 0x4702aa
push 0x4d9718
call fcn.0049be50
add esp, 4
push ebp
jmp 0x46ef38
push str.P__09_3yo
call fcn.0049be50
add esp, 4
push ebp
jmp 0x46ef38
push 0xffffffffffffffff
push esi
push 0x4e34c8
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x470064
test ebx, ebx
je 0x470058
mov esi, ebx
call fcn.0040dda0
test eax, eax
js 0x47018b
cmp eax, 0x64
jg 0x47018b
mov byte [0x4f0d37], al
jmp 0x4702aa
xor eax, eax
mov byte [0x4f0d37], al
jmp 0x4702aa
push 0xffffffffffffffff
push esi
push 0x4e34dc
call fcn.0049be50
add esp, 4
mov ecx, ebp
call fcn.004a2fa0
add esp, 8
test eax, eax
jne 0x46f884
test ebx, ebx
jne 0x47008f
mov ebx, 0x4d6959
movsx eax, byte [str.___0123456789ABCDEF]
push eax
push ebx
call fcn.004bb121
add esp, 8
mov edi, 0x4d6959
mov dword [esp + 0x54], edi
test eax, eax
je 0x4700d1
lea ecx, [eax + 1]
mov dl, byte [ecx]
cmp dl, 0x20
je 0x4700bc
cmp dl, 9
jne 0x4700bf
inc ecx
jmp 0x4700b0
mov edi, ecx
dec eax
mov edx, ebx
mov dword [esp + 0x54], edi
call fcn.00409a40
mov byte [eax + 1], 0
test byte [0x4f4de8], 1
jne 0x470161
or dword [0x4f4de8], 1
push 0x4e3554
mov dword [esp + 0x4c], 5
call fcn.0049be50
add esp, 4
push 0x4e353c
mov dword [0x4f4934], eax
call fcn.0049be50
add esp, 4
push 0x4e3520
mov dword [0x4f4938], eax
call fcn.0049be50
add esp, 4
push 0x4e3510
mov dword [0x4f493c], eax
call fcn.0049be50
add esp, 4
push 0x4e34f8
mov dword [0x4f4940], eax
call fcn.0049be50
add esp, 4
push 0x4e34ec
mov dword [0x4f4944], eax
call fcn.0049be50
add esp, 4
mov dword [0x4f4948], eax
mov dword [esp + 0x48], 0xffffffff
cmp byte [ebx], 0
mov esi, 5
je 0x470196
xor esi, esi
lea ecx, [ecx]
mov eax, dword [esi*4 + 0x4f4934]
push eax
push ebx
call fcn.004ba135
add esp, 8
test eax, eax
je 0x470196
inc esi
cmp esi, 6
jne 0x470170
push ebp
push 0x4d9718
jmp 0x46ef30
test byte [0x4f4de8], 2
jne 0x4701fe
or dword [0x4f4de8], 2
push 0x4d92ac
mov dword [esp + 0x4c], 6
call fcn.0049be50
add esp, 4
push 0x4d76b8
mov dword [0x4f494c], eax
call fcn.0049be50
add esp, 4
push 0x4d82dc
mov dword [0x4f4950], eax
call fcn.0049be50
add esp, 4
push 0x4e356c
mov dword [0x4f4954], eax
call fcn.0049be50
add esp, 4
mov dword [0x4f4958], eax
mov dword [esp + 0x48], 0xffffffff
cmp byte [edi], 0
mov eax, 2
je 0x470238
mov ebx, dword [esp + 0x54]
xor edi, edi
mov edi, edi
mov eax, dword [edi*4 + 0x4f494c]
push eax
push ebx
call fcn.004ba135
add esp, 8
test eax, eax
je 0x470236
inc edi
cmp edi, 4
jne 0x470210
push ebx
push 0x4d9738
jmp 0x46ef30
mov eax, edi
test esi, esi
je 0x470241
cmp esi, 5
jne 0x470246
mov dword [0x4f0d14], eax
cmp esi, 1
je 0x470250
cmp esi, 5
jne 0x470255
mov dword [0x4f0d18], eax
cmp esi, 3
je 0x47025f
cmp esi, 5
jne 0x470264
mov dword [0x4f0d1c], eax
cmp esi, 2
je 0x47026e
cmp esi, 5
jne 0x470273
mov dword [0x4f0d20], eax
cmp esi, 4
je 0x47027d
cmp esi, 5
jne 0x4702aa
mov dword [0x4f0d24], eax
jmp 0x4702aa
test edi, edi
setne dl
mov byte [0x4f3d50], 1
mov byte [0x4f3d51], dl
test ebx, ebx
je 0x4702aa
cmp byte [ebx], 0
je 0x4702aa
push ebx
mov eax, 0x4f3d54
call fcn.00413c90
mov ecx, dword [esp + 0x40]
pop edi
pop esi
pop ebp
mov eax, 3
mov dword fs:[0], ecx
pop ebx
add esp, 0x3c
ret 8