Function at 0x40964d
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42d545
call fcn.0042c930
sub esp, 0x68
push ebx
xor ebx, ebx
movsx ecx, word [0x438bfa]
xor eax, eax
cmp byte [0x438be9], bl
push esi
push edi
setne al
add byte [0x438bee], al
push 1
movsx eax, word [0x438bfc]
pop edi
sub ecx, eax
add dword [0x438c18], ecx
mov word [0x438c02], di
mov dword [ebp - 0x10], ebx
mov dword [0x438c1c], 0xfd0e0001
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
add word [0x438c02], ax
push 0x44
pop esi
lea eax, [ebp - 0x74]
push esi
push ebx
push eax
call sub.MSVCRT.dll_memset
movsx eax, byte [0x438bec]
push eax
push 0xdad1ffff
call fcn.004101be
cmp word [0x438bf4], bx
mov byte [0x438beb], al
push 0x14afffff
push 0xc335ffff
setne al
mov dword [ebp - 0x74], esi
mov byte [0x438bf0], al
call fcn.0041003a
add word [0x438bf6], ax
inc dword [0x438c24]
push 0x10
lea eax, [ebp - 0x30]
push ebx
push eax
call sub.MSVCRT.dll_memset
push dword [0x438c10]
push 0x2fd1ffff
call fcn.00410167
mov esi, dword [ebp + 8]
add esp, 0x30
mov byte [0x438be9], al
lea ecx, [ebp - 0x20]
mov al, byte [esi]
push ebx
mov byte [ebp - 0x20], 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_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [ebp - 0x20]
push dword [eax]
push ebx
push esi
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_]
movsx eax, word [0x438bf6]
push dword [0x438c08]
mov dword [ebp - 4], ebx
push eax
call fcn.004101be
add word [0x438bfa], ax
push 0xbf85ffff
push dword [0x438c18]
call fcn.00410130
mov byte [0x438bee], al
mov al, byte [0x438bea]
or al, byte [0x438bf1]
add esp, 0x10
mov byte [0x438bf0], al
mov eax, dword [ebp - 0x1c]
cmp eax, ebx
jne 0x409796
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
lea ecx, [ebp - 0x30]
push ecx
lea ecx, [ebp - 0x74]
push ecx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push eax
push ebx
push 0x3d
call fcn.004146c6
pop ecx
call eax
test eax, eax
je 0x409842
push 0x5b97ffff
push dword [0x438c2c]
call fcn.00410285
add byte [0x438be8], al
push 0x5c8fffff
push dword [0x438c0c]
mov dword [ebp - 0x10], edi
call fcn.00410285
add esp, 0x10
mov byte [0x438bec], al
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push dword [ebp - 0x30]
add word [0x438bfc], ax
dec word [0x438bf2]
push 0x37
call fcn.004146c6
pop ecx
call eax
push dword [ebp - 0x2c]
add dword [0x438c20], 0x6bd20001
mov word [0x438bfe], di
push 0x37
call fcn.004146c6
pop ecx
call eax
movsx eax, word [0x438bf6]
push eax
push 0xd2cbffff
call fcn.00410246
add byte [0x438be9], al
pop ecx
pop ecx
movsx eax, word [0x438c04]
movsx ecx, word [0x438bf2]
imul eax, ecx
inc dword [0x438c24]
or dword [ebp - 4], 0xffffffff
push edi
lea ecx, [ebp - 0x20]
mov dword [0x438c20], eax
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret