Function at 0x76306243
Capabilities:
Get keyboard layout

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
push edi
xor ebx, ebx
inc ebx
push ebx
push dword [ebp + 8]
xor edi, edi
mov dword [ebp - 4], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], edi
call fcn.76314608
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp esi, eax
jne 0x76306038
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
call sym.IMM32.dll_ImmLockImeDpi
cmp eax, edi
mov dword [ebp - 0x1c], eax
jne 0x7630603f
xor eax, eax
jmp 0x7630637b
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp + 0x20]
mov dword [ebp - 0x10], edi
mov dword [ebp - 0xc], edi
mov edi, dword [ebp + 0x10]
xor edx, edx
cmp ecx, edx
mov dword [ebp - 0x28], edi
je 0x763060e3
test byte [eax + 0x12], 8
je 0x763060ed
mov eax, dword [ebp + 0xc]
xor esi, esi
inc esi
cmp eax, 9
mov dword [ebp - 0x24], esi
je 0x763061a0
cmp eax, 0x12
je 0x76306155
cmp eax, 0x24
je 0x763060f8
cmp eax, 0x10000
je 0x7630609a
cmp eax, 0x20000
jne 0x76306299
cmp edi, edx
je 0x763060bc
push edx
push ecx
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
push edi
call fcn.76304140
test eax, eax
mov dword [ebp - 0xc], eax
je 0x76306299
cmp dword [ebp + 0x18], 0
je 0x763061eb
push 0
push dword [ebp + 0x20]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.76304140
jmp 0x763061e0
test byte [eax + 0x12], 8
je 0x76306068
xor esi, esi
mov dword [ebp - 0x24], edx
inc esi
jmp 0x7630620e
cmp edi, edx
je 0x7630611f
push edx
push ecx
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 4]
push eax
push 8
push dword [ebp + 0x14]
push edi
push dword [ebp + 8]
call fcn.76305e25
test eax, eax
mov dword [ebp - 0xc], eax
je 0x76306299
cmp dword [ebp + 0x18], 0
je 0x763061ed
push 0
push dword [ebp + 0x20]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
push esi
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 8]
call fcn.76305e25
test eax, eax
mov dword [ebp - 0x10], eax
jne 0x763061ed
jmp 0x76306299
cmp edi, edx
je 0x7630617c
push edx
push ecx
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 4]
push eax
push 8
push dword [ebp + 0x14]
push edi
push dword [ebp + 8]
call fcn.76305be8
test eax, eax
mov dword [ebp - 0xc], eax
je 0x76306299
cmp dword [ebp + 0x18], 0
je 0x763061ed
push 0
push dword [ebp + 0x20]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
push esi
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 8]
call fcn.76305be8
jmp 0x76306145
cmp edi, edx
je 0x763061c2
push edx
push ecx
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
push edi
call fcn.763039db
test eax, eax
mov dword [ebp - 0xc], eax
je 0x76306299
cmp dword [ebp + 0x18], 0
je 0x763061eb
push 0
push dword [ebp + 0x20]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.763039db
test eax, eax
mov dword [ebp - 0x10], eax
je 0x76306299
xor ebx, ebx
cmp dword [ebp - 0xc], 0
je 0x763061fc
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp - 4]
mov dword [ebp + 0x14], eax
cmp dword [ebp - 0x10], 0
je 0x7630620e
mov eax, dword [ebp - 8]
mov dword [ebp + 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp + 0x1c], eax
push ebx
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
push eax
push dword [ebp + 8]
call fcn.76303893
test eax, eax
jle 0x7630628f
mov eax, dword [ebp + 0xc]
cmp eax, 9
je 0x76306254
cmp eax, 0x12
je 0x763063bf
cmp eax, 0x24
je 0x76306382
cmp eax, 0x10000
je 0x7630624b
cmp eax, 0x20000
jne 0x76306257
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x20], 4
je 0x76306257
mov dword [ebp - 0x14], esi
mov eax, dword [ebp - 0x30]
push dword [eax + 0x118]
call sym.IMM32.dll_ImmUnlockIMCC
push dword [ebp + 8]
call sym.IMM32.dll_ImmUnlockIMC
cmp dword [ebp - 0x14], 0
je 0x7630628f
push dword [ebp + 0x1c]
mov eax, dword [ebp - 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [eax + 0x8c]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x24], 0
je 0x76306344
xor ebx, ebx
and dword [ebp + 8], ebx
cmp dword [ebp + 0xc], 0x20000
jne 0x76306344
xor esi, esi
cmp dword [ebp - 0x28], esi
je 0x763062ea
xor eax, eax
cmp dword [ebp + 0x20], esi
push esi
sete al
push eax
lea eax, [ebp + 0x10]
push eax
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
push edi
call fcn.76304140
mov ebx, eax
cmp ebx, esi
je 0x763062ea
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 0x28]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
cmp dword [ebp - 0x2c], esi
je 0x7630632c
xor eax, eax
cmp dword [ebp + 0x20], esi
push esi
sete al
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.76304140
cmp eax, esi
mov dword [ebp + 8], eax
je 0x7630632c
mov ecx, dword [ebp - 0x18]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x2c]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test ebx, ebx
mov esi, dword [sym.imp.KERNEL32.dll_LocalFree]
je 0x76306339
push ebx
call esi
cmp dword [ebp + 8], 0
je 0x76306344
push dword [ebp + 8]
call esi
cmp dword [ebp - 0xc], 0
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
je 0x7630635d
push dword [ebp - 0xc]
push 0
push dword [0x76316888]
call esi
cmp dword [ebp - 0x10], 0
je 0x76306370
push dword [ebp - 0x10]
push 0
push dword [0x76316888]
call esi
push dword [ebp - 0x1c]
call sym.IMM32.dll_ImmUnlockImeDpi
mov eax, dword [ebp - 0x14]
pop edi
pop esi
pop ebx
leave
ret 0x1c
test edi, edi
mov esi, dword [ebp - 0x20]
je 0x763063a3
push dword [esi + 0x24]
mov eax, dword [esi + 0x28]
add eax, esi
push eax
push dword [ebp + 0x14]
push edi
call fcn.76303967
test eax, eax
je 0x76306257
cmp dword [ebp + 0x18], 0
je 0x76306414
push dword [esi + 0xc]
mov eax, dword [esi + 0x10]
add eax, esi
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.76303967
jmp 0x7630640c
test edi, edi
mov esi, dword [ebp - 0x20]
je 0x763063e9
push dword [esi + 0x24]
mov eax, dword [esi + 0x28]
add eax, esi
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
add eax, esi
push eax
push dword [ebp + 0x14]
push edi
call fcn.76303901
test eax, eax
je 0x76306257
cmp dword [ebp + 0x18], 0
je 0x76306414
push dword [esi + 0xc]
mov eax, dword [esi + 0x10]
add eax, esi
push eax
push dword [esi + 4]
mov eax, dword [esi + 8]
add eax, esi
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call fcn.76303901
test eax, eax
je 0x76306257
mov dword [ebp - 0x14], 1
jmp 0x76306257