Function at 0x402534
Capabilities:
Get keyboard layout
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbcc
mov eax, dword [0x44145c]
xor eax, esp
mov dword [esp + 0xbc8], eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
push edi
push 0x2010
push 0
mov esi, 0x447178
push esi
mov dword [esp + 0x1c], eax
call fcn.00412dd0
mov eax, dword [ebp + 8]
add esp, 0xc
mov dword [0x447178], eax
mov edi, 0x400
push edi
lea eax, [esp + 0x7d4]
push eax
push 0
mov dword [0x449190], esi
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.kernel32.dll_GetModuleFileNameA]
mov eax, 0x100
push eax
lea ecx, [esp + 0x1d4]
push ecx
push eax
lea ecx, [esp + 0xdc]
push ecx
push eax
lea eax, [esp + 0x6e4]
push eax
push 3
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x7f0]
push eax
call fcn.004084f6
add esp, 0x24
lea eax, [esp + 0x6d0]
push eax
lea eax, [esp + 0x18]
push eax
mov eax, dword [0x449190]
mov ebx, 0x43d988
push ebx
add eax, 0x14
push edi
push eax
call fcn.00407b7b
mov eax, dword [0x449190]
add esp, 0x14
add eax, 0x14
push eax
call dword [sym.imp.kernel32.dll_SetCurrentDirectoryA]
push dword [esp + 0x10]
call fcn.00401e6f
pop ecx
test eax, eax
jne 0x402619
or eax, 0xffffffff
jmp 0x402a09
mov esi, dword [0x449190]
mov eax, dword [esi + 0xc]
dec eax
je 0x4029fd
dec eax
je 0x402973
dec eax
je 0x40273e
dec eax
je 0x40272e
dec eax
dec eax
je 0x402724
dec eax
je 0x40273e
dec eax
jne 0x402745
lea eax, [esp + 0x18]
push eax
call fcn.004032d8
mov eax, dword [0x449190]
push dword [eax + 0x1814]
lea edx, [eax + 0x1014]
push ecx
mov ecx, 0x43d984
push ecx
push ecx
push edx
push ecx
push ecx
push ecx
add eax, 0x814
push eax
push ecx
lea eax, [esp + 0x40]
push 0x43d990
push eax
call fcn.004056e4
add esp, 0xc
push eax
call fcn.004056e4
add esp, 0xc
push eax
call fcn.004056e4
add esp, 0xc
push eax
call fcn.004056e4
add esp, 0xc
push eax
call fcn.004056e4
add esp, 0xc
push eax
call fcn.00402f19
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0x1c]
call fcn.0040336a
cmp dword [eax + 0x14], 0x10
jb 0x4026d7
mov eax, dword [eax]
push 1
push eax
push 0x43d924
call fcn.00402135
add esp, 0xc
mov ebx, eax
push 0
neg ebx
push 1
lea ecx, [esp + 0xbc]
sbb bl, bl
call fcn.004039da
inc bl
je 0x402716
push 0x3f4
call fcn.004018bf
pop ecx
push eax
push 0x10
call fcn.00401894
pop ecx
pop ecx
lea eax, [esp + 0x18]
call fcn.00402461
jmp 0x402a07
mov ecx, 0x43d844
jmp 0x402a02
and dword [esi + 0x10], 0
mov dword [esi + 0x181c], 1
jmp 0x402745
mov dword [esi + 0x10], 1
call fcn.00402100
lea eax, [esp + 0x1d0]
push eax
lea eax, [esp + 0xd4]
push eax
call dword [sym.imp.kernel32.dll_lstrcat]
lea eax, [esp + 0xd0]
push 0x43d924
push eax
call fcn.00407832
pop ecx
pop ecx
test eax, eax
je 0x402792
push 0x3f7
call fcn.004018bf
pop ecx
push eax
push 0x10
call fcn.00401894
pop ecx
pop ecx
jmp 0x402611
push 0
call dword [sym.imp.user32.dll_GetKeyboardLayout]
mov dword [0x449194], eax
mov eax, 1
test eax, eax
je 0x402611
mov esi, dword [0x449190]
mov dword [esi + 0x18b0], 0x401868
mov dword [esi + 0x18ac], 0x40187a
mov dword [esi + 0x18b4], 0x40188b
call fcn.00406016
mov dword [esi + 0x1e80], eax
push 0x43d92c
add esi, 0x14
push esi
push ebx
lea eax, [esp + 0x2dc]
push edi
push eax
call fcn.00407b7b
mov esi, dword [sym.imp.kernel32.dll_LoadLibraryA]
add esp, 0x14
lea eax, [esp + 0x2d0]
push eax
call esi
mov dword [0x4491e8], eax
test eax, eax
jne 0x402832
lea eax, [esp + 0x2d0]
push eax
push 0x3f8
call fcn.004018bf
pop ecx
push eax
push 0x10
call fcn.00401894
add esp, 0xc
jmp 0x402611
push 0x43d99c
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0x449c28], eax
test eax, eax
jne 0x40285d
push dword [0x4491e8]
call dword [sym.imp.kernel32.dll_FreeLibrary]
push 0x3f9
jmp 0x40277d
push dword [0x449190]
call eax
pop ecx
mov dword [esp + 0x10], eax
push dword [0x4491e8]
call dword [sym.imp.kernel32.dll_FreeLibrary]
test eax, eax
jne 0x40286a
push dword [esp + 0x10]
call fcn.00402242
pop ecx
test eax, eax
jne 0x402969
mov eax, dword [0x449194]
test eax, eax
je 0x4028a1
push 0x10b
push eax
call dword [sym.imp.user32.dll_ActivateKeyboardLayout]
mov eax, dword [0x449190]
cmp dword [eax + 0x1d94], 1
mov ecx, 0x43d9b0
jne 0x4028b9
mov ecx, 0x43d9bc
push ecx
add eax, 0x14
push eax
push ebx
lea eax, [esp + 0x2dc]
push edi
push eax
call fcn.00407b7b
add esp, 0x14
lea eax, [esp + 0x2d0]
push eax
call esi
mov dword [0x4491ec], eax
test eax, eax
jne 0x4028f2
push 0x43d9c8
push 0x3fa
jmp 0x40281c
push 0x43d9ec
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0x449c24], eax
test eax, eax
jne 0x402922
push dword [0x4491ec]
call dword [sym.imp.kernel32.dll_FreeLibrary]
push 0x43d9c8
push 0x3fb
jmp 0x40281c
mov ecx, dword [0x449190]
cmp dword [ecx + 0x1820], 0
jne 0x402948
push 0x43d8d8
call fcn.00401d69
pop ecx
mov ecx, dword [0x449190]
mov dword [ecx + 0x1828], eax
push ecx
call dword [0x449c24]
pop ecx
mov esi, eax
push dword [0x4491ec]
call dword [sym.imp.kernel32.dll_FreeLibrary]
test eax, eax
jne 0x402952
push esi
call fcn.00402242
pop ecx
call fcn.00401e0a
jmp 0x402a07
push edi
lea eax, [esp + 0x2d4]
push 0
push eax
call fcn.00412dd0
add esp, 0xc
add esi, 0x1014
push esi
call dword [sym.imp.kernel32.dll_lstrlen]
cmp eax, 1
jl 0x4029cb
mov eax, dword [0x449190]
push dword [eax + 0x1814]
lea ecx, [eax + 0x1014]
push ecx
add eax, 0x814
push eax
push 0x43d824
push 0x43d978
lea eax, [esp + 0x2e4]
push edi
push eax
call fcn.00407b7b
add esp, 0x1c
push 1
lea eax, [esp + 0x2d4]
push eax
push 0x43d924
call fcn.00402135
add esp, 0xc
test eax, eax
jne 0x402a07
push 0x3f4
call fcn.004018bf
pop ecx
push eax
push 0x10
call fcn.00401894
pop ecx
pop ecx
jmp 0x402a07
mov ecx, 0x43d81c
call fcn.0040247b
xor eax, eax
mov ecx, dword [esp + 0xbd4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00407541
mov esp, ebp
pop ebp
ret 0x10