Function at 0x10002540
Capabilities:
Get keyboard layout
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10005e9d
mov eax, dword fs:[0]
push eax
sub esp, 0x53c
mov eax, dword [0x1000b040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov edi, 0x3ff
and ax, di
cmp ax, 0x19
jne 0x100025ca
lea eax, [ebp - 0x410]
push eax
push pe_nt_image_headers32
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov edx, eax
test edx, edx
je 0x100025ca
xor ecx, ecx
test edx, edx
jle 0x100025ca
nop dword [eax]
nop word [eax + eax]
mov ax, word [ebp + ecx*4 - 0x410]
and ax, di
cmp ax, 0x19
je 0x1000264a
inc ecx
cmp ecx, edx
jl 0x100025b0
xorps xmm0, xmm0
mov dword [ebp - 0x448], 0
movq qword [ebp - 0x450], xmm0
mov dword [ebp - 0x450], 0
mov dword [ebp - 0x44c], 0
mov dword [ebp - 0x448], 0
push 0xb8
lea eax, [ebp - 0x51c]
mov dword [ebp - 4], 0
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push esi
lea ecx, [ebp - 0x51c]
call fcn.10003740
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x51c]
mov eax, dword [ebp - 0x51c]
add ecx, dword [eax + 4]
call dword [sym.imp.MSVCP140.dll_public:_bool___thiscall_std::ios_base::operator__void_const]
test al, al
je 0x10002651
mov esi, 1
jmp 0x10002b44
xor eax, eax
jmp 0x10002b90
mov ax, word [0x100083d8]
xorps xmm0, xmm0
movups xmmword [ebp - 0x53c], xmm0
mov dword [ebp - 0x45c], 0
movq qword [ebp - 0x464], xmm0
movq xmm0, qword [str.22.12.2024]
mov dword [ebp - 0x52c], 0xa
mov dword [ebp - 0x528], 0xf
movq qword [ebp - 0x53c], xmm0
mov word [ebp - 0x534], ax
mov byte [ebp - 0x532], 0
lea edx, [ebp - 0x53c]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x464]
call fcn.10002330
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x528]
cmp ecx, 0xf
jbe 0x100026f8
mov edx, dword [ebp - 0x53c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100026ee
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10002a88
push ecx
push edx
call fcn.10004f4e
add esp, 8
mov eax, dword [ebp - 0x51c]
xorps xmm0, xmm0
movq qword [ebp - 0x41c], xmm0
xor edi, edi
mov dword [ebp - 0x414], 0
mov word [ebp - 0x420], 1
mov esi, dword [eax + 4]
lea eax, [ebp - 0x41c]
mov byte [ebp - 0x543], 0
mov dword [ebp - 0x41c], edi
mov dword [ebp - 0x418], edi
mov esi, dword [ebp + esi - 0x4e4]
test esi, esi
mov dword [ebp - 0x414], edi
sete cl
mov dword [ebp - 0x524], eax
mov byte [ebp - 0x544], cl
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x420]
mov dword [ebp - 0x428], eax
mov eax, dword [ebp - 0x544]
mov dword [ebp - 0x420], eax
test cl, cl
je 0x1000279e
mov al, byte [ebp - 0x41f]
mov cl, byte [ebp - 0x428]
mov byte [ebp - 0x51d], al
mov al, byte [ebp - 0x420]
mov byte [ebp - 0x51f], cl
mov byte [ebp - 0x51e], al
jmp 0x100027e0
mov al, byte [ebp - 0x428]
mov byte [ebp - 0x51f], al
mov al, byte [ebp - 0x41f]
mov byte [ebp - 0x51d], al
test esi, esi
je 0x100027cf
mov ecx, esi
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void_]
cmp eax, 0xffffffff
je 0x100027cf
mov byte [ebp - 0x51d], al
jmp 0x100027d1
xor esi, esi
mov cl, byte [ebp - 0x51f]
mov byte [ebp - 0x51e], 1
nop
test cl, cl
jne 0x100027fe
test edi, edi
je 0x100027f5
mov ecx, edi
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void_]
cmp eax, 0xffffffff
jne 0x100027f7
xor edi, edi
mov byte [ebp - 0x51f], 1
test esi, esi
jne 0x10002a8e
test edi, edi
jne 0x10002a96
xor eax, eax
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x534]
mov dword [ebp - 0x430], 0
lea esi, [ebp - 0x524]
mov dword [ebp - 0x534], 0x3020100
sub esi, ecx
mov dword [ebp - 0x530], 0x7060504
xorps xmm0, xmm0
mov dword [ebp - 0x52c], 0xb0a0908
movq qword [ebp - 0x438], xmm0
mov ecx, eax
mov dword [ebp - 0x528], 0xf0e0d0c
mov edi, eax
mov dword [ebp - 0x428], eax
mov dword [ebp - 0x438], eax
mov dword [ebp - 0x434], eax
mov dword [ebp - 0x544], eax
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x524], esi
mov dword [ebp - 0x540], ecx
je 0x100028da
push esi
lea ecx, [ebp - 0x438]
call fcn.10001f20
push esi
mov esi, dword [ebp - 0x438]
lea eax, [ebp - 0x534]
push eax
push esi
mov dword [ebp - 0x428], esi
call sub.VCRUNTIME140.dll_memmove
mov edi, dword [ebp - 0x524]
add esp, 0xc
mov eax, dword [ebp - 0x430]
add edi, esi
mov ecx, esi
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x540], ecx
mov dword [ebp - 0x544], eax
mov byte [ebp - 4], 7
sub esp, 0xc
mov dword [ebp - 0x43c], 0
mov esi, esp
mov dword [ebp - 0x458], 4
xorps xmm0, xmm0
movq qword [ebp - 0x444], xmm0
mov dword [ebp - 0x454], 0xa
mov dword [ebp - 0x420], esp
mov dword [ebp - 0x524], esi
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
sub edi, ecx
je 0x10002956
push edi
mov ecx, esi
call fcn.10001f20
mov esi, dword [esi]
push edi
push dword [ebp - 0x540]
push esi
call sub.VCRUNTIME140.dll_memmove
mov ecx, dword [ebp - 0x524]
lea eax, [esi + edi]
add esp, 0xc
mov dword [ecx + 4], eax
sub esp, 0xc
mov byte [ebp - 4], 8
mov esi, esp
mov dword [ebp - 0x524], esi
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov eax, dword [ebp - 0x418]
sub eax, dword [ebp - 0x41c]
je 0x100029b6
push eax
mov ecx, esi
call fcn.10001f20
mov edi, dword [esi]
mov esi, dword [ebp - 0x418]
mov eax, dword [ebp - 0x41c]
sub esi, eax
push esi
push eax
push edi
call sub.VCRUNTIME140.dll_memmove
mov ecx, dword [ebp - 0x524]
lea eax, [edi + esi]
add esp, 0xc
mov dword [ecx + 4], eax
lea eax, [ebp - 0x444]
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp - 0x458]
call fcn.100018a0
mov ecx, dword [ebp - 0x444]
xor esi, esi
test ecx, ecx
je 0x10002a1a
mov edx, dword [ebp - 0x43c]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x100029fe
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10002a88
push edx
push ecx
call fcn.10004f4e
add esp, 8
mov dword [ebp - 0x444], esi
mov dword [ebp - 0x440], esi
mov dword [ebp - 0x43c], esi
mov ecx, dword [ebp - 0x428]
test ecx, ecx
je 0x10002a50
mov edx, dword [ebp - 0x544]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x10002a46
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10002a88
push edx
push ecx
call fcn.10004f4e
add esp, 8
mov ecx, dword [ebp - 0x41c]
test ecx, ecx
je 0x10002b39
mov edx, dword [ebp - 0x414]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x10002b1d
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10002b1d
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
test edi, edi
jne 0x1000280e
cmp byte [ebp - 0x51e], 0
jne 0x10002abc
test esi, esi
je 0x10002aba
mov ecx, esi
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void_]
cmp eax, 0xffffffff
je 0x10002aba
mov cl, al
mov byte [ebp - 0x51d], cl
jmp 0x10002ac2
xor esi, esi
mov cl, byte [ebp - 0x51d]
mov eax, dword [ebp - 0x418]
mov byte [ebp - 0x51e], cl
cmp eax, dword [ebp - 0x414]
je 0x10002ae0
mov byte [eax], cl
inc dword [ebp - 0x418]
jmp 0x10002af8
lea eax, [ebp - 0x51e]
push eax
push dword [ebp - 0x418]
lea ecx, [ebp - 0x41c]
call fcn.10004d00
test esi, esi
je 0x100027cf
mov ecx, esi
call dword [sym.imp.MSVCP140.dll_public:_int___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::sbumpc_void_]
cmp eax, 0xffffffff
je 0x100027cf
mov byte [ebp - 0x420], 0
jmp 0x100027b6
push edx
push ecx
call fcn.10004f4e
add esp, 8
mov dword [ebp - 0x41c], esi
mov dword [ebp - 0x418], esi
mov dword [ebp - 0x414], esi
lea ecx, [ebp - 0x464]
call fcn.10003980
mov eax, dword [ebp - 0x51c]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov ecx, dword [ebp - 0x51c]
mov edx, dword [ecx + 4]
lea ecx, [edx - 0x70]
mov dword [ebp + edx - 0x520], ecx
lea ecx, [ebp - 0x50c]
call fcn.10003660
lea ecx, [ebp - 0x504]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_istream_char__struct_std::char_traits_char__::destructor_void_]
lea ecx, [ebp - 0x4ac]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10004f0b
mov esp, ebp
pop ebp
ret 4