Function at 0x4376d0
Capabilities:
Get keyboard layout

Disassembly:
mov eax, 0x84a8
call fcn.0049fa60
push ebx
mov ebx, dword [0x4bb6f8]
push ebp
push esi
mov esi, dword [esp + 0x84b8]
push edi
mov dword [esp + 0x18], ebx
test ebx, ebx
jne 0x43771f
cmp dword [0x4bd788], 1
mov dword [0x4bd788], ebx
sete al
test al, al
sete al
movzx ecx, al
push ecx
push esi
call fcn.00432c30
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84a8
ret 4
mov edx, dword [0x4bb6ac]
mov ebp, dword [0x4bb6b4]
mov edi, dword [0x4bb6b0]
push 0xff
lea eax, [esp + 0x1bd]
push 0
push eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], ebp
mov dword [0x4bd788], 0
mov byte [esp + 0x1c4], 0
call fcn.0049a020
add esp, 0xc
push 0x1ff
lea ecx, [esp + 0x2bd]
push 0
push ecx
mov byte [esp + 0x2c4], 0
call fcn.0049a020
add esp, 0xc
mov byte [esp + 0x21], 0
cmp byte [edi], 0
je 0x4378b6
mov byte [esp + 0x20], 0
mov cl, byte [edi]
movsx eax, cl
sub eax, 0x7b
je 0x4377d3
sub eax, 2
je 0x43789d
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.00412ca0
add esp, 8
jmp 0x437860
lea ebp, [edi + 1]
push 0x7d
push ebp
call fcn.00492af1
mov esi, eax
add esp, 8
test esi, esi
je 0x43789d
mov ebx, esi
sub ebx, edi
dec ebx
jne 0x437802
cmp byte [esi + 1], 0x7d
jne 0x43789d
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.00412ca0
add esp, 8
mov byte [esp + 0x10], al
test al, al
je 0x43783c
cmp ebx, 1
jne 0x437853
mov dl, byte [ebp]
mov byte [esp + 0x20], dl
jmp 0x437853
mov eax, ebp
call fcn.00412c00
movzx eax, ax
test ax, ax
je 0x437853
mov byte [esp + eax + 0x2b8], 1
mov al, byte [esp + 0x10]
mov ebx, dword [esp + 0x18]
mov byte [esi], 0x7d
mov edi, esi
test al, al
je 0x4378a1
movzx esi, al
or byte [esp + esi + 0x1b8], 1
cmp byte [esp + 0x20], 0
lea esi, [esp + esi + 0x1b8]
je 0x4378a1
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x4378a1
test byte [esp + 0x17], 0x30
je 0x437898
or byte [esi], 2
jmp 0x4378a1
or byte [esi], 4
jmp 0x4378a1
mov ebx, dword [esp + 0x18]
inc edi
cmp byte [edi], 0
jne 0x43778f
mov esi, dword [esp + 0x84bc]
mov ebp, dword [esp + 0x24]
mov dword [0x4bd7a0], 0
cmp byte [ebp], 0
je 0x437a38
cmp dword [0x4bd79c], 0
jne 0x4378f3
push 0x1000
call fcn.00491c09
add esp, 4
mov dword [0x4bd79c], eax
test eax, eax
je 0x43794d
mov dword [0x4bd7a4], 0x400
mov edi, 3
mov ecx, esi
call fcn.00424940
inc eax
cmp eax, dword [0x4bd7ac]
jbe 0x43796d
mov dword [0x4bd7ac], eax
cmp eax, 0x1000
ja 0x43791e
mov dword [0x4bd7ac], 0x1000
mov eax, dword [0x4bd7a8]
test eax, eax
je 0x437930
push eax
call fcn.00491a68
add esp, 4
mov edx, dword [0x4bd7ac]
push edx
call fcn.00491c09
add esp, 4
mov dword [0x4bd7a8], eax
test eax, eax
jne 0x437972
mov dword [0x4bd7ac], eax
push 0x4a6869
push 0
push str.Out_of_memory.
mov ecx, esi
call fcn.00432e00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84a8
ret 4
mov eax, dword [0x4bd7a8]
mov ecx, dword [0x4bd7a0]
mov edx, dword [0x4bd79c]
mov dword [edx + ecx*4], eax
cmp byte [ebp], 0
mov esi, dword [0x4bd7a8]
mov edi, ebp
je 0x437a1b
mov al, byte [edi]
cmp al, 0x2c
je 0x43799e
mov byte [esi], al
inc esi
jmp 0x437a11
cmp byte [edi + 1], 0x2c
jne 0x4379ab
mov byte [esi], 0x2c
inc esi
inc edi
jmp 0x437a11
mov byte [esi], 0
mov ecx, dword [0x4bd79c]
mov eax, dword [0x4bd7a0]
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0
je 0x4379d9
inc eax
mov dword [0x4bd7a0], eax
inc esi
mov dword [ecx + eax*4], esi
mov byte [esi], 0
mov eax, dword [0x4bd7a0]
mov ecx, dword [0x4bd79c]
cmp byte [edi + 1], 0
je 0x437a11
mov edx, dword [0x4bd7a4]
cmp eax, edx
jb 0x437a11
lea eax, [edx*4 + 0x1000]
push eax
push ecx
call fcn.004924ea
add esp, 8
test eax, eax
je 0x437b2e
add dword [0x4bd7a4], 0x400
mov dword [0x4bd79c], eax
inc edi
cmp byte [edi], 0
jne 0x437993
mov byte [esi], 0
mov ecx, dword [0x4bd79c]
mov edx, dword [0x4bd7a0]
mov eax, dword [ecx + edx*4]
cmp byte [eax], 0
je 0x437a38
inc dword [0x4bd7a0]
cmp byte [0x4bb8c9], 0
je 0x437a76
mov ecx, dword [0x4bb770]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x437a5b
mov byte [0x4bb8c9], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x437a76
push 1
push 0xffffffffffffffff
call fcn.00401280
add esp, 8
mov ebp, 0x3fff
xor esi, esi
push ebp
lea edx, [esp + 0x4bd]
push esi
push edx
mov dword [0x4bd7b0], 1
mov word [0x4bd7b4], 0
mov dword [esp + 0x1c], esi
mov byte [esp + 0x4c4], 0
call fcn.0049a020
add esp, 0xc
push ebp
lea eax, [esp + 0x44bd]
push esi
push eax
mov byte [esp + 0x44c4], 0
call fcn.0049a020
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x4c4]
add esp, 0xc
mov dword [0x4bd7b8], ecx
mov dword [0x4bd7bc], esi
mov dword [0x4bd7c0], ebp
cmp byte [edx], 0
je 0x437d39
mov edi, edx
inc edi
movzx esi, byte [edi - 1]
test esi, 0xffffff80
jne 0x437b0f
push 2
push esi
call fcn.0049303e
add esp, 8
test eax, eax
je 0x437b0f
and esi, 0xffffffdf
mov eax, esi
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x437b27.43
movzx eax, byte [eax + 0x438698]
jmp dword [eax*4 + 0x438670]
mov ecx, dword [esp + 0x84bc]
push 0x4a6869
push 0
push str.Out_of_memory.
call fcn.00432e00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84a8
ret 4
cmp byte [ebx + 0x17], 0
jne 0x437b5e
mov esi, dword [ebx + 0xc]
jmp 0x437b60
mov esi, ebx
test byte [esi + 0x15], 8
je 0x437b6d
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x437b86
test byte [esi + 0x15], 4
je 0x437b81
mov eax, esi
call fcn.00433620
mov eax, dword [esi + 8]
jmp 0x437b96
cmp al, 2
jne 0x437b91
call fcn.00401000
jmp 0x437b96
mov eax, 0x4bd07e
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x437ba0
sub eax, edx
je case.0x437b27.43
cmp byte [ebx + 0x17], cl
jne 0x437bb9
mov esi, dword [ebx + 0xc]
jmp 0x437bbb
mov esi, ebx
test byte [esi + 0x15], 8
je 0x437bc8
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x437be1
test byte [esi + 0x15], 4
je 0x437bdc
mov eax, esi
call fcn.00433620
mov eax, dword [esi + 8]
jmp 0x437bf1
cmp al, 2
jne 0x437bec
call fcn.00401000
jmp 0x437bf1
mov eax, 0x4bd07e
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x437bf4
sub eax, edx
mov dword [0x4bd7bc], eax
cmp eax, ebp
jle 0x437c0c
mov dword [0x4bd7bc], ebp
cmp byte [ebx + 0x17], 0
jne 0x437c17
mov esi, dword [ebx + 0xc]
jmp 0x437c19
mov esi, ebx
test byte [esi + 0x15], 8
je 0x437c26
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x437c3f
test byte [esi + 0x15], 4
je 0x437c3a
mov eax, esi
call fcn.00433620
mov eax, dword [esi + 8]
jmp 0x437c4f
cmp al, 2
jne 0x437c4a
call fcn.00401000
jmp 0x437c4f
mov eax, 0x4bd07e
mov ecx, dword [0x4bd7bc]
push ecx
push eax
lea edx, [esp + 0x4c0]
push edx
call fcn.00494746
add esp, 0xc
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0x4b8]
mov byte [esp + eax + 0x44b8], cl
inc eax
test cl, cl
jne 0x437c70
jmp case.0x437b27.43
mov byte [0x4bd7b0], 0
jmp case.0x437b27.43
mov byte [0x4bd7b1], 1
jmp case.0x437b27.43
mov byte [0x4bd7b2], 1
jmp case.0x437b27.43
mov byte [0x4bd7b3], 1
jmp case.0x437b27.43
push edi
call fcn.00493086
add esp, 4
mov dword [0x4bd7c0], eax
cmp eax, ebp
jle case.0x437b27.43
mov dword [0x4bd7c0], ebp
jmp case.0x437b27.43
mov eax, edi
call fcn.0040dbe0
test al, al
je 0x437d04
push 0x10
push 0
push edi
call fcn.004936cb
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], edx
fild qword [esp + 0x3c]
add esp, 0xc
fmul qword [0x4b0c68]
call fcn.004a11b0
mov dword [esp + 0x10], eax
jmp case.0x437b27.43
push edi
call fcn.00493d25
fmul qword [0x4b0c68]
add esp, 4
call fcn.004a11b0
mov dword [esp + 0x10], eax
jmp case.0x437b27.43
mov byte [0x4bd7b4], 1
jmp case.0x437b27.43
mov byte [0x4bd7b5], 1
inc edi
cmp byte [edi - 1], 0
jne 0x437af1
xor esi, esi
lea eax, [esp + 0x1b8]
lea ecx, [esp + 0x2b8]
mov dword [0x4bd78c], eax
mov dword [0x4bd790], ecx
mov dword [0x4bd788], 1
cmp dword [0x4bd7bc], esi
jne 0x437dc7
cmp byte [ebx + 0x17], 0
jne 0x437d79
mov ecx, dword [ebx + 0xc]
push esi
xor al, al
call fcn.00481e30
jmp 0x437dc7
mov al, byte [ebx + 0x15]
test al, 2
je 0x437d8f
and al, 0x3d
mov byte [ebx + 0x15], al
mov eax, dword [ebx]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
movzx eax, byte [ebx + 0x14]
and byte [ebx + 0x15], 0x82
dec eax
mov dword [ebx + 0xc], esi
je 0x437dc1
dec eax
jne 0x437dc7
cmp dword [ebx + 0x10], esi
je 0x437dc7
mov ecx, dword [ebx + 8]
push ecx
call fcn.00491a68
add esp, 4
and byte [ebx + 0x15], 0x7f
mov dword [ebx + 0x10], esi
mov dword [ebx + 8], 0x4bd07e
jmp 0x437dc7
mov edx, dword [ebx + 8]
mov byte [edx], 0
or byte [0x4bc082], 1
mov byte [0x4bb8c4], 1
cmp dword [0x4bb8a0], esi
jne 0x437dee
mov eax, dword [0x4b85b0]
movzx ecx, word [eax]
push ecx
call fcn.00408d50
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, esi
jle 0x437e28
cmp byte [0x4bb8c9], 0
jne 0x437e28
cmp eax, 0xa
jge 0x437e09
mov eax, 0xa
mov edx, dword [0x4bb770]
push 0x403430
push eax
push 0xc
push edx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne al
mov byte [0x4bb8c9], al
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
cmp dword [0x4bd780], ecx
jne 0x437e4f
push 1
push 0x8000012f
call fcn.00401280
add esp, 8
jmp 0x437e57
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, dword [esp + 0x18]
cmp byte [esi + 0x17], 0
jne 0x437e64
mov esi, dword [esi + 0xc]
test byte [esi + 0x15], 8
je 0x437e71
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x437e8a
test byte [esi + 0x15], 4
je 0x437e85
mov eax, esi
call fcn.00433620
mov ebp, dword [esi + 8]
jmp 0x437ede
cmp al, 2
jne 0x437ed9
mov eax, dword [0x4bd7d0]
test eax, eax
jne 0x437ed5
mov esi, dword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
push 1
call esi
test eax, eax
jne 0x437ebf
push 0xf
call esi
test eax, eax
je 0x437eb6
mov eax, 0x4a6864
mov ebp, eax
jmp 0x437ede
mov eax, 0x4a6869
mov ebp, eax
jmp 0x437ede
xor ecx, ecx
call fcn.00403d10
cmp eax, 0xffffffff
mov eax, 0x4a6869
je 0x437ed5
mov eax, dword [0x4bd7cc]
mov ebp, eax
jmp 0x437ede
mov ebp, 0x4bd07e
mov eax, ebp
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x437ee3
sub eax, edx
mov edi, eax
cmp edi, 0x3fff
jle 0x437eff
mov edi, 0x3fff
mov ebx, edi
jmp 0x437f0c
test edi, edi
je 0x437f07
mov ebx, edi
jmp 0x437f0c
mov ebx, 1
mov esi, dword [esp + 0x18]
cmp byte [esi + 0x17], 0
jne 0x437f19
mov esi, dword [esi + 0xc]
test byte [esi + 0x15], 8
je 0x437f26
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x437f3f
test byte [esi + 0x15], 4
je 0x437f3a
mov eax, esi
call fcn.00433620
mov esi, dword [esi + 8]
jmp 0x437f93
cmp al, 2
jne 0x437f8e
mov eax, dword [0x4bd7d0]
test eax, eax
jne 0x437f8a
mov esi, dword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
push 1
call esi
test eax, eax
jne 0x437f74
push 0xf
call esi
test eax, eax
je 0x437f6b
mov eax, 0x4a6864
mov esi, eax
jmp 0x437f93
mov eax, 0x4a6869
mov esi, eax
jmp 0x437f93
xor ecx, ecx
call fcn.00403d10
cmp eax, 0xffffffff
mov eax, 0x4a6869
je 0x437f8a
mov eax, dword [0x4bd7cc]
mov esi, eax
jmp 0x437f93
mov esi, 0x4bd07e
push ebx
lea edx, [esp + 0x44bc]
push esi
push edx
call fcn.0049401f
add esp, 0xc
test eax, eax
jne 0x438342
lea eax, [esp + 0x4b8]
push eax
lea ecx, [esp + 0x44bc]
push ecx
call fcn.00491ba1
add esp, 8
test eax, eax
jne 0x437fe2
lea edx, [esp + 0x4b8]
push edx
push ebp
call fcn.00491ba1
add esp, 8
test eax, eax
jne 0x438342
lea eax, [esp + 0x4b8]
push eax
lea ecx, [esp + 0x44bc]
push ecx
call fcn.00491ba1
add esp, 8
test eax, eax
je 0x4381b3
mov eax, dword [esp + 0x18]
mov dl, byte [eax + 0x17]
test dl, dl
jne 0x438029
mov eax, dword [eax + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea edx, [esp + 0x4c4]
push edx
push eax
call fcn.00481890
jmp 0x438188
lea ecx, [esp + 0x4b8]
cmp dword [eax + 8], ecx
jne 0x43803e
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x1c], ebx
jmp 0x438057
lea eax, [esp + 0x4b8]
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x438048
sub eax, esi
mov dword [esp + 0x1c], eax
mov ebx, eax
lea esi, [ebx + 1]
cmp dl, 2
jne 0x4380d2
cmp dword [0x4bd7d0], 0
jne 0x438188
cmp ebx, 0xffffffff
jne 0x43808b
lea eax, [esp + 0x4b8]
lea edx, [eax + 1]
jmp 0x438080
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x438080
sub eax, edx
mov ebx, eax
test ebx, ebx
je 0x4380c1
lea edi, [ebx + 1]
mov esi, 0x4bd7c4
call fcn.00403f60
test eax, eax
je 0x438188
mov eax, dword [0x4bd7d0]
push ebx
lea edx, [esp + 0x4bc]
push edx
push eax
mov esi, eax
call fcn.004954d0
add esp, 0xc
mov byte [esi + ebx], 0
push 1
mov ecx, 0x4bd7c4
call fcn.00403fd0
jmp 0x438188
mov ebx, dword [0x4b73d0]
mov ebp, dword [esp + 0x18]
cmp esi, ebx
jbe 0x4380fe
cmp esi, dword [ebp + 0x10]
jbe 0x4380fe
push 0x4a6869
push 0x4af3e0
mov ecx, 0x4bd7e0
call fcn.004330b0
jmp 0x438188
cmp esi, 2
jae 0x438110
push 3
xor al, al
mov ecx, ebp
call fcn.00481e30
jmp 0x438188
mov al, byte [ebp + 0x15]
test al, 2
je 0x43812d
and al, 0x3d
mov byte [ebp + 0x15], al
mov eax, dword [ebp]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebx, dword [0x4b73d0]
mov edi, dword [ebp + 0x10]
and byte [ebp + 0x15], 0x82
cmp esi, edi
jbe 0x43815f
mov cl, byte [ebp + 0x14]
cmp cl, 1
jbe 0x4381d8
cmp cl, 2
je 0x43821a
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
and byte [ebp + 0x15], 0x7f
mov dword [ebp + 8], edx
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x1c]
lea ecx, [esp + 0x4b8]
cmp eax, ecx
je 0x43817e
push esi
mov edx, ecx
push edx
push eax
call fcn.004926e0
add esp, 0xc
mov eax, dword [ebp + 8]
mov byte [esi + eax], 0
mov dword [ebp + 0xc], esi
cmp dword [0x4bd7bc], 0
je 0x438335
xor eax, eax
jmp 0x4381a0
mov cl, byte [esp + eax + 0x4b8]
mov byte [esp + eax + 0x44b8], cl
inc eax
test cl, cl
jne 0x4381a0
mov ebx, dword [esp + 0x18]
mov eax, dword [0x4bd788]
cmp eax, 1
je 0x437e32
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x4381d1
jmp dword [eax*4 + 0x4386c8]
cmp esi, 0x40
ja 0x43821a
cmp esi, 4
ja 0x4381e9
mov eax, 4
jmp 0x4381f8
mov eax, 8
cmp eax, esi
sbb eax, eax
and eax, 0x38
add eax, 8
mov dword [esp + 0x10], eax
call fcn.0047b180
mov dword [esp + 0x24], eax
test eax, eax
je 0x438188
mov ebp, dword [esp + 0x18]
mov byte [ebp + 0x14], 1
jmp 0x43814d
cmp esi, 0x10
jae 0x43822c
mov dword [esp + 0x10], 0x10
jmp 0x4382ba
cmp esi, 0x104
jae 0x43823e
mov dword [esp + 0x10], 0x104
jmp 0x4382ba
cmp esi, 0x28000
jae 0x438286
mov dword [esp + 0x28], esi
fild dword [esp + 0x28]
test esi, esi
jns 0x438258
fadd qword [0x4b0c38]
fmul qword [0x4b0c40]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov dword [esp + 0x28], eax
fldcw word [esp + 0x28]
fistp qword [esp + 0x28]
mov edx, dword [esp + 0x28]
fldcw word [esp + 0x10]
mov dword [esp + 0x10], edx
jmp 0x4382ba
cmp esi, 0x190000
jae 0x438296
add esi, 0x4000
jmp 0x4382b6
cmp esi, 0x640000
jae 0x4382b0
mov eax, 0x51eb851f
mul esi
shr edx, 5
add edx, esi
mov dword [esp + 0x10], edx
jmp 0x4382ba
add esi, 0x10000
mov dword [esp + 0x10], esi
cmp dword [esp + 0x10], ebx
jbe 0x4382c4
mov dword [esp + 0x10], ebx
cmp cl, 2
jne 0x4382ff
test edi, edi
je 0x4382ff
mov eax, dword [ebp + 8]
push eax
mov bl, 1
call fcn.00491a68
add esp, 4
mov eax, dword [esp + 0x10]
xor esi, esi
cmp eax, esi
jl 0x438303
push eax
call fcn.00491c09
add esp, 4
mov dword [esp + 0x24], eax
cmp eax, esi
je 0x438303
mov byte [ebp + 0x14], 2
jmp 0x43814d
xor bl, bl
jmp 0x4382db
test bl, bl
je 0x438313
mov dword [ebp + 0x10], esi
mov dword [ebp + 8], 0x4bd07e
jmp 0x438319
mov ecx, dword [ebp + 8]
mov byte [ecx], 0
push 0x4a6869
push str.Out_of_memory.
mov ecx, 0x4bd7e0
mov dword [ebp + 0xc], esi
call fcn.004330b0
jmp 0x438188
mov byte [esp + 0x44b8], 0
jmp 0x4381b3
mov ebx, dword [esp + 0x18]
mov dword [0x4bd7bc], edi
cmp byte [ebx + 0x17], 0
jne 0x438357
mov esi, dword [ebx + 0xc]
jmp 0x438359
mov esi, ebx
test byte [esi + 0x15], 8
je 0x438366
mov eax, esi
call fcn.00401150
mov al, byte [esi + 0x17]
cmp al, 1
jne 0x43837f
test byte [esi + 0x15], 4
je 0x43837a
mov eax, esi
call fcn.00433620
mov esi, dword [esi + 8]
jmp 0x4383d3
cmp al, 2
jne 0x4383ce
mov eax, dword [0x4bd7d0]
test eax, eax
jne 0x4383ca
mov esi, dword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
push 1
call esi
test eax, eax
jne 0x4383b4
push 0xf
call esi
test eax, eax
je 0x4383ab
mov eax, 0x4a6864
mov esi, eax
jmp 0x4383d3
mov eax, 0x4a6869
mov esi, eax
jmp 0x4383d3
xor ecx, ecx
call fcn.00403d10
cmp eax, 0xffffffff
mov eax, 0x4a6869
je 0x4383ca
mov eax, dword [0x4bd7cc]
mov esi, eax
jmp 0x4383d3
mov esi, 0x4bd07e
push edi
lea ecx, [esp + 0x4bc]
push esi
push ecx
call fcn.00494746
add esp, 0xc
push edi
lea edx, [esp + 0x4bc]
push edx
lea eax, [esp + 0x44c0]
push eax
mov byte [esp + edi + 0x4c4], 0
call fcn.00494746
add esp, 0xc
mov byte [esp + edi + 0x44b8], 0
jmp 0x4381b7
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
jmp 0x4385a2
mov edx, dword [0x4bbf74]
push 1
push 0
push 0xffffffffffffffff
push str.Match
push edx
jmp 0x4385a9
mov eax, dword [str.EndKey:]
mov ecx, dword [0x4ae47c]
push 0x78
lea edx, [esp + 0x44]
push 0
push edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
call fcn.0049a020
add esp, 0xc
cmp byte [0x4bd799], 0
je 0x4384f4
push 0xff
lea eax, [esp + 0xbd]
push 0
push eax
mov byte [esp + 0xc4], 0
call fcn.0049a020
or byte [esp + 0xd4], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x4384a7
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x4384a9
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor ecx, ecx
cmp dword [0x4bb900], ecx
push eax
setne cl
lea edx, [esp + 0x43]
lea eax, [esp + 0xbc]
xor bl, bl
push ecx
movzx ecx, byte [0x4bd794]
push edx
push eax
push ecx
call fcn.004130e0
movzx edx, ax
movzx eax, byte [0x4bd794]
add esp, 4
push edx
push eax
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov byte [esp + eax + 0x3f], bl
jmp 0x43856c
cmp byte [0x4bd798], 0
je 0x438553
mov cx, word [0x4bd796]
xor eax, eax
cmp word [eax*8 + 0x4b8544], cx
je 0x438532
inc eax
cmp eax, 0xd
jl 0x438506
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [esp + 0x47]
call fcn.0047dd10
add esp, 8
jmp 0x438570
mov ecx, dword [eax*8 + 0x4b8540]
push 0x78
push ecx
lea edx, [esp + 0x47]
push edx
call fcn.004954d0
add esp, 0xc
mov byte [esp + 0xb7], 0
jmp 0x438570
mov bl, byte [0x4bd794]
push 1
mov eax, 0x79
lea ecx, [esp + 0x43]
call fcn.00412b80
add esp, 4
mov ebx, dword [esp + 0x18]
mov edx, dword [0x4bbf74]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x44]
push ecx
push edx
jmp 0x4385a9
mov eax, dword [0x4bbf74]
push 1
push 0
push 0xffffffffffffffff
push 0x4ae480
push eax
jmp 0x4385a9
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
mov ecx, dword [0x4bbf74]
push ecx
call fcn.00481890
cmp byte [0x4bb8c9], 0
mov dword [0x4bd788], 0
je 0x4385f6
mov edx, dword [0x4bb770]
push 0xc
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x4385db
mov byte [0x4bb8c9], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x4385f6
push 1
push 0xffffffffffffffff
call fcn.00401280
add esp, 8
lea eax, [esp + 0x4b8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x438600
sub eax, edx
jne 0x43864e
cmp byte [ebx + 0x17], al
jne 0x438615
mov eax, dword [ebx + 0xc]
jmp 0x438617
mov eax, ebx
cmp byte [eax + 0x17], 2
jne 0x438624
mov eax, dword [0x4bd7d8]
jmp 0x438627
mov eax, dword [eax + 0x10]
test eax, eax
je 0x43864e
push 1
push 0
push 0xffffffffffffffff
push 0x4a6869
push ebx
call fcn.00481890
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84a8
ret 4
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x4c4]
push eax
push ebx
call fcn.00481890
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84a8
ret 4