Function at 0x431fd0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x8528
call fcn.004a4980
mov eax, dword [0x4d3d98]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x28], eax
push ebx
push esi
push edi
test eax, eax
jne 0x43201b
cmp dword [0x4d3ea0], 1
mov dword [0x4d3ea0], 0
sete al
xor al, 1
movzx eax, al
push eax
call fcn.0042cfe0
lea esp, [ebp - 0x8534]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4d3dfc]
mov edi, dword [0x4d3df4]
mov ebx, dword [0x4d3df8]
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [0x4d3ea0], 0
mov dword [0x4d3ecc], 1
mov word [0x4d3ed0], 0
mov dword [0x4d3edc], 0x3fff
mov dword [ebp - 0x20], eax
mov byte [ebp - 1], al
movzx eax, word [edi]
mov dword [ebp - 0x1c], ebx
test ax, ax
je 0x43213b
mov ecx, eax
lea ebx, [edi + 2]
movzx esi, cx
test esi, 0xffffff80
je 0x432081
xor eax, eax
jmp 0x43208c
push 2
push esi
call fcn.00491ac4
add esp, 8
mov ecx, esi
and ecx, 0xffffffdf
test eax, eax
cmove ecx, esi
add ecx, 0xffffffd6
cmp ecx, 0x2c
ja case.0x4320a9.43
movzx eax, byte [ecx + 0x4329c0]
jmp dword [eax*4 + 0x432998]
mov byte [0x4d3ecc], 0
jmp case.0x4320a9.43
mov byte [0x4d3ecd], 1
jmp case.0x4320a9.43
mov byte [0x4d3ece], 1
jmp case.0x4320a9.43
mov byte [0x4d3ecf], 1
jmp case.0x4320a9.43
push ebx
call fcn.00492a15
add esp, 4
mov dword [0x4d3edc], eax
cmp eax, 0x3fff
jle case.0x4320a9.43
mov dword [0x4d3edc], 0x3fff
jmp case.0x4320a9.43
mov ecx, ebx
call fcn.00413520
mulsd xmm0, qword [0x4c95c8]
cvttsd2si eax, xmm0
mov dword [ebp - 0x20], eax
jmp case.0x4320a9.43
mov byte [0x4d3ed0], 1
jmp case.0x4320a9.43
mov byte [0x4d3ed1], 1
jmp case.0x4320a9.43
mov byte [ebp - 1], 1
movzx eax, word [edi + 2]
add edi, 2
add ebx, 2
mov ecx, eax
test ax, ax
jne 0x432072
mov ebx, dword [ebp - 0x1c]
push pe_nt_image_headers32
lea eax, [ebp - 0x228]
push 0
push eax
call fcn.0048ce40
push 0x200
lea eax, [ebp - 0x528]
push 0
push eax
call fcn.0048ce40
xor eax, eax
mov dword [ebp - 0xc], ebx
xor edx, edx
mov word [ebp - 0x12], ax
add esp, 0x18
mov dword [ebp - 8], edx
mov esi, ebx
cmp word [ebx], ax
je 0x432246
mov bh, byte [ebp - 1]
xor eax, eax
mov word [ebp - 0x14], ax
movzx ecx, word [esi]
mov eax, ecx
sub eax, 0x7b
je 0x4322af
sub eax, 2
je 0x432233
test bh, bh
je 0x4321aa
inc edx
mov dword [ebp - 8], edx
jmp 0x432233
push 0
mov word [ebp - 0x14], cx
mov byte [ebp - 1], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
cmp word [ebp - 0x14], 0
je 0x432230
cmp word [ebp - 0x12], 0
mov ecx, dword [ebp - 0x14]
jne 0x4321de
push eax
lea edx, [ebp - 1]
call fcn.00412730
add esp, 4
mov bl, al
jmp 0x4323c0
call fcn.0040ab40
cmp ax, 0x56
jne 0x43220e
mov ecx, dword [ebp - 0x12]
call fcn.0040ab40
cmp ax, 0x4b
jne 0x43220e
push 0x10
lea eax, [ebp - 0x10]
push 0
push eax
call fcn.00492e76
add esp, 0xc
mov bl, al
jmp 0x4323c0
xor esi, esi
lea eax, [ebp - 0x14]
push eax
push dword [esi*8 + 0x4ce940]
call fcn.0048f253
add esp, 8
test eax, eax
je 0x4322a0
inc esi
cmp esi, 0x6d
jl 0x432210
mov esi, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
add esi, 2
mov dword [ebp - 0xc], esi
cmp word [esi], 0
jne 0x432180
mov ebx, dword [ebp - 0x1c]
mov dword [0x4d3eac], 0x4ac22c
test edx, edx
je 0x43246d
lea eax, [edx*2 + 2]
call fcn.004a4700
mov esi, esp
mov dword [0x4d3eac], esi
movzx eax, word [ebx]
test ax, ax
je 0x432468
mov ecx, eax
nop word [eax + eax]
movzx eax, cx
sub eax, 0x7b
je 0x432421
sub eax, 2
je 0x432456
mov word [esi], cx
add esi, 2
jmp 0x432456
mov bl, byte [esi*8 + 0x4ce944]
mov esi, dword [ebp - 0xc]
jmp 0x4323c0
lea edi, [esi + 2]
push 0x7d
push edi
call fcn.0048c759
mov edx, eax
add esp, 8
mov dword [ebp - 0xc], edx
test edx, edx
je 0x432230
mov ecx, edx
sub ecx, esi
sar ecx, 1
sub ecx, 1
jne 0x4322e7
add edx, 2
mov dword [ebp - 0xc], edx
cmp word [edx], 0x7d
jne 0x432230
jmp 0x4322ec
cmp ecx, 1
jne 0x432303
test bh, bh
je 0x4322fc
mov edx, dword [ebp - 8]
inc edx
mov dword [ebp - 8], edx
jmp 0x432233
mov ax, word [edi]
mov word [ebp - 0x14], ax
xor eax, eax
push eax
mov word [edx], ax
mov byte [ebp - 1], al
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
movzx ecx, word [edi]
test cx, cx
jne 0x43231e
xor bl, bl
jmp 0x432399
cmp word [edi + 2], 0
jne 0x432335
push eax
lea edx, [ebp - 1]
call fcn.00412730
add esp, 4
mov bl, al
jmp 0x432395
call fcn.0040ab40
cmp ax, 0x56
jne 0x432363
mov cx, word [edi + 2]
call fcn.0040ab40
cmp ax, 0x4b
jne 0x432363
push 0x10
lea eax, [edi + 4]
push 0
push eax
call fcn.00492e76
add esp, 0xc
mov bl, al
jmp 0x432395
xor esi, esi
nop word [eax + eax]
push edi
push dword [esi*8 + 0x4ce940]
call fcn.0048f253
add esp, 8
test eax, eax
je 0x43238e
inc esi
cmp esi, 0x6d
jl 0x432370
xor bl, bl
jmp 0x432399
mov bl, byte [esi*8 + 0x4ce944]
test bl, bl
jne 0x4323b0
mov ecx, edi
call fcn.004125c0
movzx eax, ax
test ax, ax
je 0x4323b0
mov byte [ebp + eax - 0x528], 1
mov eax, dword [ebp - 0xc]
mov ecx, 0x7d
mov esi, eax
mov dword [ebp - 0xc], esi
mov word [eax], cx
test bl, bl
je 0x432230
movzx esi, bl
or byte [ebp + esi - 0x228], 1
cmp word [ebp - 0x14], 0
je 0x43222d
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x43222d
test byte [ebp - 1], 0x30
mov al, byte [ebp + esi - 0x228]
mov edx, dword [ebp - 8]
je 0x432410
or al, 2
mov byte [ebp + esi - 0x228], al
mov esi, dword [ebp - 0xc]
jmp 0x432233
or al, 4
mov byte [ebp + esi - 0x228], al
mov esi, dword [ebp - 0xc]
jmp 0x432233
lea edi, [ebx + 2]
push 0x7d
push edi
call fcn.0048c759
mov edx, eax
add esp, 8
test edx, edx
je 0x432456
cmp edx, edi
jne 0x432444
cmp word [edx + 2], 0x7d
lea ecx, [edx + 2]
cmove edx, ecx
lea eax, [ebx + 4]
cmp edx, eax
jne 0x432454
mov ax, word [edi]
mov word [esi], ax
add esi, 2
mov ebx, edx
movzx eax, word [ebx + 2]
add ebx, 2
mov ecx, eax
test ax, ax
jne 0x432280
xor eax, eax
mov word [esi], ax
mov ebx, dword [ebp - 0x24]
mov dword [0x4d3ebc], 0
cmp word [ebx], 0
je 0x432638
cmp dword [0x4d3eb8], 0
jne 0x4324ce
push 0x1000
call fcn.0048f3be
add esp, 4
mov dword [0x4d3eb8], eax
test eax, eax
jne 0x4324c4
mov ecx, dword [ebp - 0x18]
push 0x4ac22c
push 0
push str.Out_of_memory.
call fcn.0042d1e0
lea esp, [ebp - 0x8534]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [0x4d3ec0], 0x400
mov esi, dword [ebp - 0x18]
mov ecx, esi
push 3
call fcn.00420860
lea ecx, [eax + 1]
cmp ecx, dword [0x4d3ec8]
jbe 0x432547
mov eax, 0x1000
cmp ecx, eax
cmova eax, ecx
mov ecx, dword [0x4d3ec4]
mov dword [0x4d3ec8], eax
test ecx, ecx
je 0x43250c
push ecx
call fcn.004914e4
mov eax, dword [0x4d3ec8]
add esp, 4
add eax, eax
push eax
call fcn.0048f3be
mov edx, eax
add esp, 4
mov dword [0x4d3ec4], edx
test edx, edx
jne 0x43254d
push 0x4ac22c
push eax
push str.Out_of_memory.
mov ecx, esi
mov dword [0x4d3ec8], eax
call fcn.0042d1e0
lea esp, [ebp - 0x8534]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [0x4d3ec4]
mov eax, dword [0x4d3eb8]
mov ecx, dword [0x4d3ebc]
mov dword [eax + ecx*4], edx
movzx eax, word [ebx]
mov esi, dword [0x4d3ec4]
test ax, ax
je 0x432618
mov ecx, eax
mov eax, 0x2c
cmp cx, ax
je 0x432584
mov word [esi], cx
add esi, 2
jmp 0x432606
cmp word [ebx + 2], 0x2c
jne 0x432596
mov word [esi], ax
add esi, 2
add ebx, 2
jmp 0x432606
xor eax, eax
mov word [esi], ax
mov edi, dword [0x4d3eb8]
mov ecx, dword [0x4d3ebc]
mov eax, dword [edi + ecx*4]
cmp word [eax], 0
je 0x4325ce
inc ecx
add esi, 2
mov dword [0x4d3ebc], ecx
xor eax, eax
mov dword [edi + ecx*4], esi
mov word [esi], ax
mov ecx, dword [0x4d3ebc]
mov edi, dword [0x4d3eb8]
cmp word [ebx + 2], 0
je 0x432606
mov eax, dword [0x4d3ec0]
cmp ecx, eax
jb 0x432606
lea eax, [eax*4 + 0x1000]
push eax
push edi
call fcn.00492d20
add esp, 8
test eax, eax
je 0x4324a3
add dword [0x4d3ec0], 0x400
mov dword [0x4d3eb8], eax
movzx eax, word [ebx + 2]
add ebx, 2
mov ecx, eax
test ax, ax
jne 0x43256f
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4d3ebc]
mov eax, dword [0x4d3eb8]
mov eax, dword [eax + ecx*4]
cmp word [eax], 0
je 0x432638
inc ecx
mov dword [0x4d3ebc], ecx
cmp byte [0x4d1338], 0
mov esi, dword [sym.imp.USER32.dll_KillTimer]
mov edi, dword [sym.imp.USER32.dll_GetQueueStatus]
je 0x432683
push 0xc
push dword [0x4d1684]
call esi
movzx ecx, byte [0x4d1338]
xor edx, edx
test eax, eax
push 0x10
cmovne ecx, edx
mov byte [0x4d1338], cl
call edi
shr eax, 0x10
test al, 0x10
je 0x432683
mov edx, 1
or ecx, 0xffffffff
call fcn.00401e60
push 0x8000
lea eax, [ebp - 0x8528]
push 0
push eax
call fcn.0048ce40
or byte [0x4d212e], 1
lea eax, [ebp - 0x8528]
mov dword [0x4d3ed4], eax
add esp, 0xc
cmp dword [0x4d16a0], 0
lea eax, [ebp - 0x228]
mov dword [0x4d3ea4], eax
lea eax, [ebp - 0x528]
mov dword [0x4d3ed8], 0
mov dword [0x4d3ea8], eax
mov dword [0x4d3ea0], 1
mov byte [0x4d1698], 1
jne 0x4326f7
movzx edx, word [0x4d30f4]
sub esp, 8
call fcn.004096e0
add esp, 8
mov eax, dword [ebp - 0x20]
test eax, eax
jle 0x432730
cmp byte [0x4d1338], 0
jne 0x432730
mov ecx, 0xa
cmp eax, ecx
push 0x404a60
cmovl eax, ecx
push eax
push 0xc
push dword [0x4d1684]
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne byte [0x4d1338]
nop
mov edx, 1
mov ecx, 0x8000012f
call fcn.00401e60
mov eax, dword [0x4d3ea0]
cmp eax, 1
je 0x432730
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x432755
jmp dword [eax*4 + 0x4329f0]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
jmp 0x432923
push 1
push 0
push 0xffffffffffffffff
push str.Match
jmp 0x432923
movups xmm0, xmmword [str.EndKey:]
push 0xf0
lea eax, [ebp - 0x118]
push 0
push eax
movups xmmword [ebp - 0x128], xmm0
call fcn.0048ce40
mov ax, word [0x4d3eb4]
add esp, 0xc
test ax, ax
je 0x4327cc
mov word [ebp - 0x11a], ax
xor eax, eax
push 1
push eax
mov word [ebp - 0x118], ax
lea eax, [ebp - 0x128]
push 0xffffffffffffffff
push eax
jmp 0x432923
cmp byte [0x4d3eb7], 0
je 0x43286b
push pe_nt_image_headers32
lea eax, [ebp - 0x328]
push 0
push eax
call fcn.0048ce40
add esp, 0xc
mov byte [ebp - 0x318], 0x80
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x43280b
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x43280d
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov cl, byte [0x4d3eb0]
push eax
xor eax, eax
cmp dword [0x4d1450], eax
setne al
xor dl, dl
push eax
push 2
lea eax, [ebp - 0x11a]
push eax
lea eax, [ebp - 0x328]
push eax
call fcn.00412ab0
movzx eax, ax
push eax
movzx eax, byte [0x4d3eb0]
push eax
call dword [sym.imp.USER32.dll_ToUnicodeEx]
push 1
xor ecx, ecx
push ecx
mov word [ebp + eax*2 - 0x11a], cx
lea eax, [ebp - 0x128]
push 0xffffffffffffffff
push eax
jmp 0x432923
cmp byte [0x4d3eb6], 0
je 0x4328c9
movzx ecx, word [0x4d3eb2]
xor eax, eax
nop dword [eax]
cmp word [eax*8 + 0x4ce8dc], cx
je 0x4328a9
inc eax
cmp eax, 0xd
jl 0x432880
push ecx
push str.sc_03X
lea eax, [ebp - 0x11a]
push 0x79
push eax
call fcn.00472ce0
add esp, 0x10
jmp 0x4328e1
push 0x78
push dword [eax*8 + 0x4ce8d8]
lea eax, [ebp - 0x11a]
push eax
call fcn.00497e59
add esp, 0xc
xor eax, eax
mov word [ebp - 0x2a], ax
jmp 0x4328e1
mov cl, byte [0x4d3eb0]
lea edx, [ebp - 0x11a]
push 1
push 0x79
call fcn.00412410
add esp, 8
mov eax, dword [ebp - 0x11a]
add eax, 0xffffff9f
cmp ax, 0x19
ja 0x4328fc
mov eax, 0xffe0
add word [ebp - 0x11a], ax
push 1
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x128]
push eax
jmp 0x432923
push 1
push 0
push 0xffffffffffffffff
push 0x4c5f60
jmp 0x432923
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov ecx, dword [0x4d166c]
call fcn.00475930
cmp byte [0x4d1338], 0
mov dword [0x4d3ea0], 0
je 0x432975
push 0xc
push dword [0x4d1684]
call esi
movzx ecx, byte [0x4d1338]
xor esi, esi
test eax, eax
push 0x10
cmovne ecx, esi
mov byte [0x4d1338], cl
call edi
shr eax, 0x10
test al, 0x10
je 0x432975
lea edx, [esi + 1]
or ecx, 0xffffffff
call fcn.00401e60
mov ecx, dword [ebp - 0x28]
lea eax, [ebp - 0x8528]
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.00475930
lea esp, [ebp - 0x8534]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret