Function at 0x432100
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x44a0
call fcn.0048f760
mov eax, dword [0x4a7c78]
push ebx
push ebp
mov ebp, dword [esp + 0x44ac]
push esi
xor esi, esi
push edi
mov dword [esp + 0x18], eax
cmp eax, esi
jne 0x432150
cmp dword [0x4a9cf8], 1
mov dword [0x4a9cf8], esi
sete al
test al, al
sete al
movzx ecx, al
push ecx
push ebp
call fcn.0042d6a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov edx, dword [0x4a7c2c]
mov ebx, dword [0x4a7c34]
mov edi, dword [0x4a7c30]
push 0xff
lea eax, [esp + 0x1b5]
push esi
push eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ebx
mov dword [0x4a9cf8], esi
mov byte [esp + 0x1bc], 0
call fcn.0048c460
add esp, 0xc
push 0x1ff
lea ecx, [esp + 0x2b5]
push esi
push ecx
mov byte [esp + 0x2bc], 0
call fcn.0048c460
add esp, 0xc
mov byte [esp + 0x21], 0
cmp byte [edi], 0
je 0x4322d7
mov byte [esp + 0x20], 0
mov cl, byte [edi]
movsx eax, cl
sub eax, 0x7b
je 0x4321fe
sub eax, 2
je 0x4322c2
push 0
mov byte [esp + 0x24], cl
mov byte [esp + 0x1b], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x1f]
lea eax, [esp + 0x28]
call fcn.00411730
add esp, 8
jmp 0x432287
lea ebp, [edi + 1]
push 0x7d
push ebp
call fcn.00483f31
mov esi, eax
add esp, 8
test esi, esi
je 0x4322c2
mov ebx, esi
sub ebx, edi
dec ebx
jne 0x43222d
cmp byte [esi + 1], 0x7d
jne 0x4322c2
inc esi
mov ebx, 1
push 0
mov byte [esi], 0
mov byte [esp + 0x1b], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x1f]
mov eax, ebp
call fcn.00411730
add esp, 8
mov byte [esp + 0x1e], al
test al, al
je 0x432267
cmp ebx, 1
jne 0x43227e
mov dl, byte [ebp]
mov byte [esp + 0x20], dl
jmp 0x43227e
mov eax, ebp
call fcn.00411690
movzx eax, ax
test ax, ax
je 0x43227e
mov byte [esp + eax + 0x2b0], 1
mov al, byte [esp + 0x1e]
mov byte [esi], 0x7d
mov edi, esi
test al, al
je 0x4322c2
movzx esi, al
or byte [esp + esi + 0x1b0], 1
cmp byte [esp + 0x20], 0
lea esi, [esp + esi + 0x1b0]
je 0x4322c2
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x4322c2
test byte [esp + 0x17], 0x30
je 0x4322bf
or byte [esi], 2
jmp 0x4322c2
or byte [esi], 4
inc edi
cmp byte [edi], 0
jne 0x4321ba
mov ebp, dword [esp + 0x44b4]
mov ebx, dword [esp + 0x28]
xor esi, esi
mov dword [0x4a9d10], esi
cmp byte [ebx], 0
je 0x432455
cmp dword [0x4a9d0c], esi
jne 0x432310
push 0x1000
call fcn.004830f9
add esp, 4
mov dword [0x4a9d0c], eax
cmp eax, esi
je 0x43236b
mov dword [0x4a9d14], 0x400
mov edi, 3
mov ecx, ebp
call fcn.0041fa90
inc eax
cmp eax, dword [0x4a9d1c]
jbe 0x43238a
mov dword [0x4a9d1c], eax
cmp eax, 0x1000
ja 0x43233b
mov dword [0x4a9d1c], 0x1000
mov eax, dword [0x4a9d18]
cmp eax, esi
je 0x43234d
push eax
call fcn.00482f58
add esp, 4
mov edx, dword [0x4a9d1c]
push edx
call fcn.004830f9
add esp, 4
mov dword [0x4a9d18], eax
cmp eax, esi
jne 0x43238f
mov dword [0x4a9d1c], esi
push 0x496816
push esi
push str.Out_of_memory.
mov ecx, ebp
call fcn.0042d870
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov eax, dword [0x4a9d18]
mov ecx, dword [0x4a9d10]
mov edx, dword [0x4a9d0c]
mov dword [edx + ecx*4], eax
cmp byte [ebx], 0
mov esi, dword [0x4a9d18]
mov edi, ebx
je 0x432438
nop
mov al, byte [edi]
cmp al, 0x2c
je 0x4323bb
mov byte [esi], al
inc esi
jmp 0x43242e
cmp byte [edi + 1], 0x2c
jne 0x4323c8
mov byte [esi], 0x2c
inc esi
inc edi
jmp 0x43242e
mov byte [esi], 0
mov ecx, dword [0x4a9d0c]
mov eax, dword [0x4a9d10]
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0
je 0x4323f6
inc eax
mov dword [0x4a9d10], eax
inc esi
mov dword [ecx + eax*4], esi
mov byte [esi], 0
mov eax, dword [0x4a9d10]
mov ecx, dword [0x4a9d0c]
cmp byte [edi + 1], 0
je 0x43242e
mov edx, dword [0x4a9d14]
cmp eax, edx
jb 0x43242e
lea eax, [edx*4 + 0x1000]
push eax
push ecx
call fcn.004844e7
add esp, 8
test eax, eax
je 0x43252d
add dword [0x4a9d14], 0x400
mov dword [0x4a9d0c], eax
inc edi
cmp byte [edi], 0
jne 0x4323b0
mov byte [esi], 0
mov ecx, dword [0x4a9d0c]
mov edx, dword [0x4a9d10]
mov eax, dword [ecx + edx*4]
cmp byte [eax], 0
je 0x432455
inc dword [0x4a9d10]
cmp byte [0x4a7e35], 0
je 0x432493
mov ecx, dword [0x4a7ce0]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x432478
mov byte [0x4a7e35], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x432493
push 1
push 0xffffffffffffffff
call fcn.00401280
add esp, 8
mov ebx, 0x3fff
push ebx
xor ebp, ebp
lea edx, [esp + 0x4b5]
push ebp
push edx
mov dword [0x4a9d20], 1
mov word [0x4a9d24], 0
mov byte [esp + 0x4bc], 0
call fcn.0048c460
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0x4bc]
add esp, 0xc
mov dword [0x4a9d28], eax
mov dword [0x4a9d2c], ebp
mov dword [0x4a9d30], ebx
cmp byte [ecx], 0
je 0x4325f7
mov edi, ecx
inc edi
nop
movzx esi, byte [edi - 1]
test esi, 0xffffff80
jne 0x43250e
push 2
push esi
call fcn.0048447e
add esp, 8
test eax, eax
je 0x43250e
and esi, 0xffffffdf
mov eax, esi
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x432526.43
movzx edx, byte [eax + 0x432bd8]
jmp dword [edx*4 + 0x432bb4]
push 0x496816
push 0
push str.Out_of_memory.
mov ecx, ebp
call fcn.0042d870
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov byte [0x4a9d20], 0
jmp case.0x432526.43
mov byte [0x4a9d21], 1
jmp case.0x432526.43
mov byte [0x4a9d22], 1
jmp case.0x432526.43
mov byte [0x4a9d23], 1
jmp case.0x432526.43
push edi
call fcn.004844c6
add esp, 4
mov dword [0x4a9d30], eax
cmp eax, ebx
jle case.0x432526.43
mov dword [0x4a9d30], ebx
jmp case.0x432526.43
mov eax, edi
call fcn.0040c880
test al, al
je 0x4325c4
push 0x10
push 0
push edi
call fcn.00484c8f
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
fild qword [esp + 0x34]
add esp, 0xc
fmul qword [0x49e828]
call fcn.00491950
mov ebp, eax
jmp case.0x432526.43
push edi
call fcn.00484d91
fmul qword [0x49e828]
add esp, 4
call fcn.00491950
mov ebp, eax
jmp case.0x432526.43
mov byte [0x4a9d24], 1
jmp case.0x432526.43
mov byte [0x4a9d25], 1
inc edi
cmp byte [edi - 1], 0
jne 0x4324f0
or byte [0x4a85f2], 1
cmp dword [0x4a7e10], 0
lea eax, [esp + 0x1b0]
lea ecx, [esp + 0x2b0]
mov dword [0x4a9cfc], eax
mov dword [0x4a9d00], ecx
mov dword [0x4a9cf8], 1
mov byte [0x4a7e30], 1
jne 0x432643
mov edx, dword [0x4a5538]
movzx eax, word [edx]
push eax
call fcn.004079b0
add esp, 4
test ebp, ebp
jle 0x432680
cmp byte [0x4a7e35], 0
jne 0x432680
mov eax, 0xa
cmp ebp, 0xa
jl 0x43265c
mov eax, ebp
mov ecx, dword [0x4a7ce0]
push 0x4033a0
push eax
push 0xc
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne dl
mov byte [0x4a7e35], dl
lea esp, [esp]
push 1
push 0x8000012f
call fcn.00401280
mov eax, dword [0x4a9cf8]
add esp, 8
cmp eax, 1
je 0x432680
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x4326a5
jmp dword [eax*4 + 0x432c08]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
jmp 0x432839
mov ecx, dword [0x4a84e4]
push 1
push 0
push 0xffffffffffffffff
push str.Match
push ecx
jmp 0x43283f
mov edx, dword [str.EndKey:]
mov eax, dword [0x49b6ac]
push 0x78
lea ecx, [esp + 0x3c]
push 0
push ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
call fcn.0048c460
add esp, 0xc
cmp byte [0x4a9d09], 0
je 0x43278d
push 0xff
lea edx, [esp + 0xb5]
push 0
push edx
mov byte [esp + 0xbc], 0
call fcn.0048c460
or byte [esp + 0xcc], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x432740
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x432742
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
xor eax, eax
cmp dword [0x4a7e70], eax
lea ecx, [esp + 0x3b]
setne al
lea edx, [esp + 0xb4]
xor bl, bl
push eax
movzx eax, byte [0x4a9d04]
push ecx
push edx
push eax
call fcn.00411b70
movzx edx, byte [0x4a9d04]
movzx ecx, ax
add esp, 4
push ecx
push edx
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov byte [esp + eax + 0x37], bl
jmp 0x432806
cmp byte [0x4a9d08], 0
je 0x4327ed
mov cx, word [0x4a9d06]
xor eax, eax
nop
cmp word [eax*8 + 0x4a54cc], cx
je 0x4327cc
inc eax
cmp eax, 0xd
jl 0x4327a0
movzx edx, cx
push edx
push str.sc_03X
mov esi, 0x79
lea edi, [esp + 0x3f]
call fcn.00470290
add esp, 8
jmp 0x432806
mov eax, dword [eax*8 + 0x4a54c8]
push 0x78
push eax
lea ecx, [esp + 0x3f]
push ecx
call fcn.00485ee0
add esp, 0xc
mov byte [esp + 0xaf], 0
jmp 0x432806
mov bl, byte [0x4a9d04]
push 1
mov eax, 0x79
lea ecx, [esp + 0x3b]
call fcn.00411610
add esp, 4
mov ecx, dword [0x4a84e4]
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x3c]
push eax
push ecx
jmp 0x43283f
mov edx, dword [0x4a84e4]
push 1
push 0
push 0xffffffffffffffff
push 0x49b6b0
push edx
jmp 0x43283f
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov eax, dword [0x4a84e4]
push eax
call fcn.00472eb0
cmp byte [0x4a7e35], 0
mov dword [0x4a9cf8], 0
je 0x43288c
mov ecx, dword [0x4a7ce0]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x432871
mov byte [0x4a7e35], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x43288c
push 1
push 0xffffffffffffffff
call fcn.00401280
add esp, 8
mov eax, dword [esp + 0x18]
mov dl, byte [eax + 0x17]
test dl, dl
jne 0x4328bb
mov eax, dword [eax + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea edx, [esp + 0x4bc]
push edx
push eax
call fcn.00472eb0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
lea ecx, [esp + 0x4b0]
cmp dword [eax + 8], ecx
jne 0x4328d0
mov esi, dword [eax + 0xc]
mov dword [esp + 0x24], esi
jmp 0x4328ef
lea eax, [esp + 0x4b0]
lea esi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4328e0
sub eax, esi
mov dword [esp + 0x24], eax
mov esi, eax
lea edi, [esi + 1]
cmp dl, 2
jne 0x43296f
cmp dword [0x4a9d40], 0
mov ebp, esi
jne 0x432a39
cmp esi, 0xffffffff
jne 0x432920
lea eax, [esp + 0x4b0]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x432915
sub eax, edx
mov ebp, eax
test ebp, ebp
je 0x432956
lea edi, [ebp + 1]
mov esi, 0x4a9d34
call fcn.00403ea0
test eax, eax
je 0x432a39
mov eax, dword [0x4a9d40]
push ebp
lea edx, [esp + 0x4b4]
push edx
push eax
mov esi, eax
call fcn.00485ee0
add esp, 0xc
mov byte [esi + ebp], 0
push 1
mov ecx, 0x4a9d34
call fcn.00403f10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov ebp, dword [0x4a43ac]
mov ecx, dword [esp + 0x18]
cmp edi, ebp
jbe 0x4329a3
cmp edi, dword [ecx + 0x10]
jbe 0x4329a3
push 0x496816
push 0x49d880
mov ecx, 0x4a9d50
call fcn.0042db20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
cmp edi, 2
jae 0x4329c3
push 4
xor al, al
call fcn.00473450
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov al, byte [ecx + 0x15]
test al, 2
je 0x4329df
and al, 0x3d
mov byte [ecx + 0x15], al
mov eax, dword [ecx]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebp, dword [0x4a43ac]
mov eax, dword [esp + 0x18]
mov ebx, dword [eax + 0x10]
and byte [eax + 0x15], 0x82
mov edx, eax
cmp edi, ebx
jbe 0x432a60
mov cl, byte [edx + 0x14]
cmp cl, 1
jbe 0x432a0b
cmp cl, 2
je 0x432a9b
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x28]
jmp 0x432a52
cmp edi, 0x40
ja 0x432a9b
cmp edi, 4
ja 0x432a20
mov esi, 4
jmp 0x432a2e
mov eax, 8
cmp eax, edi
sbb esi, esi
and esi, 0x38
add esi, eax
mov eax, esi
call fcn.0046d770
test eax, eax
jne 0x432a48
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
mov ecx, dword [esp + 0x18]
mov byte [ecx + 0x14], 1
mov edx, ecx
and byte [edx + 0x15], 0x7f
mov dword [edx + 0x10], esi
mov esi, dword [esp + 0x24]
mov dword [edx + 8], eax
mov eax, dword [edx + 8]
lea ecx, [esp + 0x4b0]
cmp eax, ecx
je 0x432a7f
push esi
mov edx, ecx
push edx
push eax
call fcn.00483b20
mov edx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [edx + 8]
mov byte [esi + eax], 0
mov dword [edx + 0xc], esi
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4
cmp edi, 0x10
jae 0x432aaa
mov esi, 0x10
jmp 0x432b2f
cmp edi, 0x104
jae 0x432ab9
mov esi, 0x104
jmp 0x432b2f
cmp edi, 0x28000
jae 0x432afd
mov dword [esp + 0x28], edi
fild dword [esp + 0x28]
test edi, edi
jns 0x432ad3
fadd qword [0x49e7f8]
fmul qword [0x49e800]
fnstcw word [esp + 0x1e]
movzx eax, word [esp + 0x1e]
or eax, 0xc00
mov dword [esp + 0x28], eax
fldcw word [esp + 0x28]
fistp qword [esp + 0x28]
mov esi, dword [esp + 0x28]
fldcw word [esp + 0x1e]
jmp 0x432b2f
cmp edi, 0x190000
jae 0x432b0d
lea esi, [edi + 0x4000]
jmp 0x432b2f
cmp edi, 0x640000
jae 0x432b29
mov eax, 0x51eb851f
mul edi
mov esi, edx
mov edx, dword [esp + 0x18]
shr esi, 5
add esi, edi
jmp 0x432b2f
lea esi, [edi + 0x10000]
cmp esi, ebp
jbe 0x432b35
mov esi, ebp
cmp cl, 2
jne 0x432b70
test ebx, ebx
je 0x432b70
mov edx, dword [edx + 8]
push edx
mov bl, 1
call fcn.00482f58
mov edx, dword [esp + 0x1c]
add esp, 4
xor edi, edi
cmp esi, edi
jl 0x432b78
push esi
call fcn.004830f9
add esp, 4
cmp eax, edi
je 0x432b74
mov ecx, dword [esp + 0x18]
mov byte [ecx + 0x14], 2
jmp 0x432a50
xor bl, bl
jmp 0x432b50
mov edx, dword [esp + 0x18]
test bl, bl
je 0x432b88
mov dword [edx + 0x10], edi
mov dword [edx + 8], 0x4a95ee
jmp 0x432b8e
mov eax, dword [edx + 8]
mov byte [eax], 0
push 0x496816
push str.Out_of_memory.
mov ecx, 0x4a9d50
mov dword [edx + 0xc], edi
call fcn.0042db20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44a0
ret 4