Function at 0x4305e5
Capabilities:
Check for time delay via gettickcount
Get keyboard layout

Disassembly:
mov eax, str.UseErrorLevel
call fcn.004672f0
test eax, eax
lea edx, [esp + 0x18]
mov al, 3
je 0x43064e
cmp al, byte [esi + 1]
mov eax, dword [0x4c0c78]
sbb ecx, ecx
and ecx, dword [0x4c0ccc]
push ecx
mov ecx, dword [0x4c0c74]
push 1
push 1
push edx
mov edx, dword [0x4c0c70]
push eax
push 0
push ecx
push 0
push edx
push 0x4c3000
call fcn.0042be10
test eax, eax
jne 0x43068e
mov ecx, dword [0x4c1688]
push 1
push eax
push 0xffffffffffffffff
push str.ERROR
call fcn.004698a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp al, byte [esi + 1]
mov eax, dword [0x4c0c78]
sbb ecx, ecx
and ecx, dword [0x4c0ccc]
push ecx
mov ecx, dword [0x4c0c74]
push 1
push 0
push edx
mov edx, dword [0x4c0c70]
push eax
push 1
push ecx
push 0
push edx
push 0x4c3000
call fcn.0042be10
test eax, eax
jne 0x43068e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [esi]
cmp al, 0x5c
jne 0x430791
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 1
mov ecx, eax
mov eax, dword [0x4c0c70]
push 0
xor edx, edx
call fcn.004116f0
add esp, 8
mov byte [esp + 0x13], al
test al, al
jne 0x4306ee
mov eax, dword [0x4c0c70]
push 0
lea ebx, [esp + 0x30]
call fcn.00449000
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x430c1a
cmp eax, 0xc
jl 0x430c1a
cmp eax, 0x2b
jg 0x430c1a
mov edi, dword [0x4c0c74]
movzx eax, word [edi]
xor esi, esi
mov byte [esp + 0x11], 0
mov dword [esp + 0x20], 1
mov byte [esp + 0x10], 1
mov dword [esp + 0x14], esi
cmp ax, si
je 0x43077a
movzx ebx, ax
test ebx, 0xffffff80
jne 0x430731
push 2
push ebx
call fcn.00482fce
add esp, 8
cmp eax, esi
je 0x430731
and ebx, 0xffffffdf
movzx eax, bx
cmp eax, 0x44
je 0x430767
cmp eax, 0x4c
je 0x430761
cmp eax, 0x54
jne 0x43076c
lea esi, [edi + 2]
mov byte [esp + 0x10], 0
call fcn.004124b0
fmul qword [0x4b7878]
call fcn.00496150
mov dword [esp + 0x14], eax
jmp 0x43076c
mov dword [esp + 0x20], esi
jmp 0x43076c
mov byte [esp + 0x11], 1
movzx eax, word [edi + 2]
add edi, 2
xor esi, esi
cmp ax, si
jne 0x430714
lea eax, [esp + 0x90]
mov dword [esp + 0x88], esi
mov dword [esp + 0x80], eax
jmp 0x4307f0
mov ecx, dword [0x4c0c70]
mov esi, dword [0x4c0c78]
cmp al, 0x3e
je 0x4307ab
cmp al, 0x5b
je 0x4307af
cmp word [esi], 0
jne 0x4307b5
cmp al, 0x5b
jne 0x4307e3
cmp word [ecx], 0
je 0x4307e3
mov byte [esp + 0x10], 0
cmp al, 0x5b
jne 0x4307c0
mov esi, ecx
call fcn.004124b0
fmul qword [0x4b7878]
call fcn.00496150
mov dword [esp + 0x14], eax
cmp eax, 1
jge 0x4307f0
mov dword [esp + 0x14], 0x1f4
jmp 0x4307f0
mov byte [esp + 0x10], 1
mov dword [esp + 0x14], 0
mov esi, dword [ebp + 8]
cmp byte [esi], 0x3e
je 0x43080e
mov ecx, dword [0x4c1688]
push 1
push 0
push 0xffffffffffffffff
push 0x49c138
call fcn.004698a0
cmp byte [esi], 0x5b
jne 0x430828
mov edi, 1
mov ecx, esi
call fcn.0041ddf0
mov byte [esp + 0x12], 1
cmp eax, edi
je 0x43082d
mov byte [esp + 0x12], 0
mov ecx, esi
xor edi, edi
cmp byte [ecx + 1], 0
mov eax, 0x4001
lea ebx, [esp + 0x90]
jbe 0x4308a8
test eax, eax
jne 0x430851
mov dword [esp + edi*4 + 0x30], 0x4a5c64
jmp 0x43089c
mov edx, dword [edi*4 + 0x4c0c70]
lea esi, [eax - 1]
push esi
push edx
push ebx
mov dword [esp + edi*4 + 0x3c], ebx
call fcn.00485434
add esp, 0xc
xor eax, eax
mov word [ebx + esi*2], ax
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x430875
sub eax, edx
sar eax, 1
lea ebx, [ebx + eax*2 + 2]
mov ecx, ebx
lea edx, [esp + 0x90]
sub ecx, edx
sar ecx, 1
mov eax, 0x4001
sub eax, ecx
mov ecx, dword [ebp + 8]
movzx edx, byte [ecx + 1]
inc edi
cmp edi, edx
jl 0x430843
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x24], eax