Function at 0x40e15c
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42fbb6
call fcn.0042e9c0
sub esp, 0x20
push ebx
push esi
xor ebx, ebx
xor esi, esi
cmp dword [0x438c48], ebx
push edi
je 0x40e18a
cmp byte [0x438c1f], bl
mov dword [0x438c58], 1
jne 0x40e190
mov dword [0x438c58], ebx
push ebx
push ebx
push 0x32
call fcn.0040ebd2
pop ecx
call eax
mov edi, eax
cmp edi, ebx
je 0x40e371
movsx eax, byte [0x438c19]
inc dword [0x438c54]
push eax
push 0x601fffff
call fcn.0040aa83
add word [0x438c2c], ax
inc byte [0x438c1a]
lea eax, [edi + 1]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
push 0xe965ffff
push 0x1a01ffff
mov esi, eax
call fcn.0040a9a5
push dword [0x438c40]
add dword [0x438c44], eax
push 0x2337ffff
call fcn.0040ab0e
add esp, 0x1c
mov dword [0x438c50], eax
push esi
push edi
push 0x32
call fcn.0040ebd2
pop ecx
call eax
movsx eax, word [0x438c2a]
push eax
push dword [0x438c48]
call fcn.0040aac5
push 0xfc4dffff
push 0x8377ffff
mov dword [0x438c58], eax
call fcn.0040aa18
add byte [0x438c1b], al
push 0xe50dffff
movsx eax, word [0x438c22]
push eax
call fcn.0040aa83
add esp, 0x18
mov word [0x438c2c], ax
mov al, byte [ebp + 0xf]
lea ecx, [ebp - 0x1c]
push ebx
mov byte [ebp - 0x1c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x1c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
movsx eax, byte [0x438c1b]
push eax
mov dword [ebp - 4], ebx
movsx eax, word [0x438c2c]
push eax
call fcn.0040a9de
add dword [0x438c38], eax
push 0x275fffff
push 0x74bffff
call fcn.0040a933
push 0x1f2bffff
mov dword [0x438c44], eax
push dword [0x438c3c]
call fcn.0040aa83
add byte [0x438c1b], al
push esi
call fcn.0042e920
movsx eax, byte [0x438c1a]
push 0xf957ffff
push eax
call fcn.0040a9a5
add byte [0x438c19], al
mov al, byte [0x438c30]
and al, byte [0x438c2c]
push dword [ebp + 0xc]
add byte [0x438c18], al
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0040e725
add esp, 0x30
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 1
push dword [ecx]
mov ecx, dword [ebp + 8]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [ebp - 0x2c]
pop esi
mov byte [ebp - 4], bl
push esi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push dword [0x438c5c]
push 0xff4fffff
call fcn.0040a9de
pop ecx
mov byte [0x438c1c], al
pop ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov word [0x438c26], ax
push 0x95a7ffff
movsx eax, ax
push eax
call fcn.0040a933
add dword [0x438c50], eax
or dword [ebp - 4], 0xffffffff
pop ecx
pop ecx
push esi
lea ecx, [ebp - 0x1c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add byte [0x438c1d], al
push dword [0x438c54]
movsx eax, word [0x438c30]
push eax
call fcn.0040ab0e
add byte [0x438c18], al
pop ecx
pop ecx
mov eax, esi
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret