Function at 0x403360
Capabilities:
Get keyboard layout
Read .ini file

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1c04
call fcn.00406890
mov eax, dword [0x40b014]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0x400
push 0
mov eax, dword [esi + 4]
mov edi, edx
mov ebx, dword [esi]
mov dword [ebp - 0x1bf4], eax
mov eax, dword [esi + 8]
mov dword [ebp - 0x1c00], eax
lea eax, [ebp - 0xc50]
push eax
mov dword [ebp - 0x1bf8], ebx
call sub.VCRUNTIME140.dll_memset
push 0x64
lea eax, [ebp - 0x68]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push 0xfa0
lea eax, [ebp - 0x1bf0]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push 0x3e8
lea eax, [ebp - 0x450]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x30
mov dword [ebp - 0x1bfc], 0
cmp dword [esi + 0x10], 0x8a529
je 0x403806
cmp edi, 0x100
je 0x40344e
cmp edi, 0x104
je 0x40344e
cmp edi, 0x101
je 0x40341d
cmp edi, 0x105
jne 0x403806
sub esp, 8
mov edx, ebx
mov ecx, 1
call fcn.00401b70
mov edx, ebx
mov ecx, 2
call fcn.00401b70
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004059ab
mov esp, ebp
pop ebp
ret
mov ebx, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xffffffffffffffff
push dword [0x40bb4c]
call ebx
mov eax, dword [0x40ba44]
xor esi, esi
test eax, eax
jle 0x40349f
mov ecx, dword [ebp - 0x1bf8]
mov edx, dword [ebp - 0x1bf4]
nop word [eax + eax]
cmp ecx, dword [esi*4 + 0x40fad8]
je 0x403546
cmp edx, dword [esi*4 + 0x40db98]
je 0x403546
inc esi
cmp esi, eax
jl 0x403480
push dword [0x40bb4c]
mov edi, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call edi
push 0xffffffffffffffff
push dword [0x40bb4c]
call ebx
mov eax, dword [0x40ba44]
push dword [0x40bb4c]
lea ecx, [eax + 1]
cmp ecx, 0x3e8
je 0x4034fa
mov edx, dword [ebp - 0x1bf8]
mov dword [eax*4 + 0x40fad8], edx
mov edx, dword [ebp - 0x1bf4]
mov dword [eax*4 + 0x40db98], edx
mov edx, dword [ebp - 0x1c00]
mov dword [eax*4 + 0x40bc58], edx
mov dword [0x40ba44], ecx
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x68]
push 0x40b838
push 0x64
push eax
push str.NotFind
push str.Name
push str.ProcessName
call ebx
mov ecx, str.NotFind
lea eax, [ebp - 0x68]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40355e
test dl, dl
je 0x403542
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40355e
add eax, 2
add ecx, 2
test dl, dl
jne 0x403526
xor eax, eax
jmp 0x403563
push dword [0x40bb4c]
mov edi, dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call edi
cmp esi, 0xffffffff
jne 0x4034fc
jmp 0x4034ad
sbb eax, eax
or eax, 1
test eax, eax
je 0x4035fb
lea ecx, [ebp - 0x68]
call fcn.004013a0
mov esi, eax
lea eax, [ebp - 0x1bfc]
push eax
call dword [sym.imp.USER32.dll_GetForegroundWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov edi, eax
cmp dword [ebp - 0x1bfc], esi
je 0x40359d
push 0x4079ec
jmp 0x4037f5
push 0x64
lea eax, [ebp - 0x68]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push edi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 0x64
lea ecx, [ebp - 0x68]
push ecx
push eax
call dword [sym.imp.IMM32.dll_ImmGetDescriptionA]
lea ecx, [ebp - 0x68]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4035c7
sub ecx, edx
je 0x4035fb
lea eax, [ebp - 0x68]
push eax
push 0x407a10
lea eax, [ebp - 0x450]
push 0x3e8
push eax
call fcn.004054f0
add esp, 0x10
lea eax, [ebp - 0x450]
push eax
jmp 0x4037f5
xor edx, edx
lea eax, [ebp - 0xc50]
push ecx
push eax
lea ecx, [edx + 1]
call fcn.00401e80
push 0x400
lea eax, [ebp - 0x850]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x14
lea eax, [ebp - 0x850]
xor edi, edi
push 0x40b838
push 0x400
push eax
push str.NotFind
push str.Key_NewKyeVal
lea eax, [ebp - 0xc50]
push eax
call ebx
mov ecx, str.NotFind
lea eax, [ebp - 0x850]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403674
test dl, dl
je 0x403670
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403674
add eax, 2
add ecx, 2
test dl, dl
jne 0x403654
xor eax, eax
jmp 0x403679
sbb eax, eax
or eax, 1
test eax, eax
je 0x4037f0
mov ebx, dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_atoi]
lea esi, [ebp - 0x850]
nop dword [eax]
push esi
call ebx
push 0x5f
mov dword [ebp + edi*4 - 0x1bf0], eax
inc edi
push esi
call dword [sym.imp.VCRUNTIME140.dll_strchr]
add esp, 0xc
test eax, eax
je 0x4036b6
lea esi, [eax + 1]
cmp edi, 0x3e80
jne 0x403690
cmp edi, 0xffffffff
je 0x4037f0
lea eax, [ebp - 0x68]
mov edx, str.Key_Name
push 0x64
push eax
lea ecx, [ebp - 0xc50]
call fcn.00402190
add esp, 8
lea eax, [ebp - 0x68]
mov ecx, str.Repeatedly
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403700
test dl, dl
je 0x4036fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403700
add eax, 2
add ecx, 2
test dl, dl
jne 0x4036e0
xor esi, esi
jmp 0x403705
sbb esi, esi
or esi, 1
mov ecx, str.Single
lea eax, [ebp - 0x68]
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403730
test dl, dl
je 0x40372c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403730
add eax, 2
add ecx, 2
test dl, dl
jne 0x403710
xor eax, eax
jmp 0x403735
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40379b
mov esi, dword [ebp - 0x1bf4]
mov ebx, dword [ebp - 0x1bf8]
mov edx, ebx
push ecx
push esi
lea ecx, [eax + 2]
call fcn.00401c80
add esp, 8
cmp eax, 0xffffffff
jne 0x40376f
push dword [ebp - 0x1c00]
mov edx, ebx
lea ecx, [eax + 3]
push esi
call fcn.00401a80
add esp, 8
jmp 0x40379f
push 0x407a48
mov ecx, dword [0x411a2c]
push 0x3f5
call dword [sym.imp.mfc140.dll_Ordinal_13407]
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004059ab
mov esp, ebp
pop ebp
ret
test esi, esi
jne 0x403806
mov ebx, dword [sym.imp.USER32.dll_keybd_event]
xor esi, esi
test edi, edi
jle 0x4037c9
nop dword [eax + eax]
movzx eax, byte [ebp + esi*4 - 0x1bf0]
push 0x8a529
push 0
push 0
push eax
call ebx
inc esi
cmp esi, edi
jl 0x4037b0
sub esi, 1
js 0x4037e9
nop
movzx eax, byte [ebp + esi*4 - 0x1bf0]
push 0x8a529
push 2
push 0
push eax
call ebx
sub esi, 1
jns 0x4037d0
push 0x407a64
jmp 0x403774
push 0x407a2c
mov ecx, dword [0x411a2c]
push 0x3f5
call dword [sym.imp.mfc140.dll_Ordinal_13407]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004059ab
mov esp, ebp
pop ebp
ret