Function at 0x410839
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x220
and dword [ebp - 0x10], 0
push ebx
push esi
mov esi, eax
test esi, esi
push edi
mov byte [ebp - 5], 0
mov byte [ebp - 6], 0
lea eax, [esi + 0x14]
jne 0x41085d
lea eax, [ebp - 0x11]
cmp byte [ebp + 0xc], 0
mov dword [ebp - 0xc], eax
jne 0x4108a5
mov eax, dword [ebp + 8]
mov edi, 0x453ea4
call fcn.00438cc6
mov edi, eax
test edi, edi
je 0x4108a5
mov cl, byte [eax]
cmp cl, 0x20
je 0x410885
cmp cl, 9
jne 0x410888
inc eax
jmp 0x410879
push 0x452a84
push eax
call dword [sym.imp.MSVCR71.dll__stricmp]
test eax, eax
pop ecx
pop ecx
jne 0x4108a5
test esi, esi
je 0x4108a2
mov byte [esi + 0x18], 1
mov byte [edi], 0
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
xor edi, edi
inc edi
push edi
lea eax, [ebp - 5]
push edi
push eax
mov eax, dword [ebp + 8]
call fcn.00415537
mov bl, al
add esp, 0x10
test bl, bl
je 0x4109b9
cmp byte [ebp + 0xc], 0
je 0x410969
cmp bl, 0x9c
jb 0x410989
cmp bl, 0x9f
ja 0x410989
cmp byte [ebp + 0x10], 0
je 0x410908
push edi
push 0
push 0xffffffffffffffff
push 0x453ea0
mov ecx, dword [0x45e2f0]
call fcn.0040161c
jmp 0x410a28
push dword [ebp + 8]
mov esi, 0x200
push str.__s__is_not_allowed_as_a_prefix_key.
lea edi, [ebp - 0x21c]
call fcn.0040a3cc
cmp byte [0x460004], 0
pop ecx
pop ecx
je 0x410945
push str.__The_current_thread_will_exit.
mov eax, esi
mov ecx, edi
call fcn.0040a406
mov dword [esp], 0x45282f
jmp 0x410a17
push ecx
fldz
push ecx
fstp qword [esp]
push 0
push 0
lea eax, [ebp - 0x21c]
push 0x10000
push eax
call fcn.0043b30a
add esp, 0x18
jmp 0x410a28
test esi, esi
je 0x410989
push 2
push 0x453e74
push dword [ebp + 8]
call dword [sym.imp.MSVCR71.dll__strnicmp]
add esp, 0xc
neg eax
sbb al, al
inc al
mov byte [esi + 0x19], al
mov al, bl
call fcn.0043de03
mov dl, byte [ebp - 5]
test dl, 0x30
mov byte [ebp - 6], al
je 0x410a47
cmp bl, 0x41
jb 0x410a47
cmp bl, 0x5a
ja 0x410a47
and dl, 0xcf
jmp 0x410a47
mov eax, dword [ebp + 8]
call fcn.004152e9
test ax, ax
jne 0x410a69
mov eax, dword [ebp + 8]
push edi
lea ebx, [ebp - 0x18]
call fcn.004220d1
test ax, ax
pop ecx
mov dword [ebp - 0x10], eax
jne 0x410a2c
cmp byte [ebp + 0x10], al
je 0x4109f4
push 1
push 0
push 0xffffffffffffffff
push 0x453e70
jmp 0x4108f8
test esi, esi
je 0x410a28
push dword [ebp + 8]
mov esi, 0x200
push str.__s__is_not_a_valid_key_name.__The_current_thread_will_exit.
lea edi, [ebp - 0x21c]
call fcn.0040a3cc
pop ecx
pop ecx
push 0x45282f
lea eax, [ebp - 0x21c]
mov ecx, 0x45fb58
push eax
call fcn.0044506b
xor eax, eax
jmp 0x410a8f
mov eax, dword [ebp - 0xc]
inc dword [0x45f3f4]
mov dl, byte [ebp - 5]
mov byte [eax], 4
mov eax, dword [ebp - 0x18]
mov bl, al
mov byte [eax + 0x45f3e4], 1
cmp byte [ebp - 6], 0
je 0x410a53
mov eax, dword [ebp - 0xc]
mov byte [eax], 2
mov eax, dword [ebp - 0x10]
cmp byte [ebp + 0xc], 0
je 0x410a6e
test esi, esi
je 0x410a8c
mov byte [esi + 0x13], bl
mov word [esi + 0xa], ax
jmp 0x410a8c
mov dl, byte [ebp - 5]
jmp 0x410a56
test esi, esi
je 0x410a8c
mov cl, dl
and cl, 0xd5
mov byte [esi + 0x12], bl
mov word [esi + 8], ax
call fcn.00411c27
or dword [esi + 0xc], eax
and dl, 0x2a
or byte [esi + 0x10], dl
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret