Function at 0x40a95c
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x430070
call fcn.0042f2d0
sub esp, 0x40
movsx eax, byte [0x43abcf]
push ebx
push esi
push edi
mov esi, ecx
xor ebx, ebx
push 0x40c9ffff
push eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], ebx
call fcn.004117ef
mov dword [0x43ac00], eax
mov al, byte [0x43abd0]
dec al
push 0xa1f5ffff
add byte [0x43abcf], al
push 0xe3e1ffff
call fcn.004116b5
add dword [0x43ac08], eax
add esp, 0x10
cmp dword [esi + 0xf4], ebx
je 0x40acc1
movsx eax, byte [0x43abd0]
mov ecx, dword [0x43ac0c]
inc byte [0x43abd1]
push 3
lea eax, [ecx + eax + 0xacc0001]
mov dword [0x43ac0c], eax
lea eax, [ebp - 0x3c]
push eax
call fcn.004202ad
movsx eax, word [0x43abd2]
push 1
pop edi
push 0x9ad9ffff
push eax
mov dword [ebp - 4], edi
call fcn.0041181a
add esp, 0x10
mov dword [0x43ac0c], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
add byte [0x43abcf], al
push dword [ebp + 0xc]
lea eax, [ebp - 0x2c]
push eax
call fcn.0042bee3
pop ecx
pop ecx
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], 2
push dword [ecx]
lea ecx, [ebp - 0x3c]
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push edi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
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 [0x43abf0]
push dword [0x43ac00]
call fcn.00411706
mov dword [0x43abe8], eax
movsx eax, byte [0x43abd1]
push eax
push dword [0x43ac0c]
call fcn.004116b5
add dword [0x43abe8], eax
or word [0x43abe4], 0xffff
movsx eax, word [0x43abd8]
push eax
push 0x3f67ffff
mov dword [ebp - 0x10], ebx
call fcn.0041181a
mov word [0x43abe0], ax
mov eax, dword [ebp - 0x38]
add esp, 0x18
cmp eax, ebx
jne 0x40aaa8
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 - 0x10]
push ecx
lea ecx, [ebp - 0x14]
push ebx
push ecx
push ebx
push eax
push dword [esi + 0xf4]
push 0x16
call fcn.00415e1f
pop ecx
call eax
test eax, eax
jne 0x40ac86
cmp dword [ebp - 0x14], edi
jne 0x40ac86
dec byte [0x43abcb]
push 0x229dffff
push 0xd935ffff
call fcn.004118af
add word [0x43abde], ax
mov eax, dword [ebp - 0x10]
inc eax
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
push 0x114bffff
push 0x2a19ffff
mov esi, eax
call fcn.0041181a
add word [0x43abd2], ax
add esp, 0x14
call dword [sym.imp.USER32.dll_GetFocus]
add word [0x43abdc], ax
movsx eax, word [0x43abe0]
push eax
movsx eax, word [0x43abd4]
push eax
call fcn.004118af
mov dword [0x43ac08], eax
mov eax, dword [ebp - 0x38]
pop ecx
cmp eax, ebx
pop ecx
jne 0x40ab4a
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 - 0x10]
push ecx
lea ecx, [ebp - 0x14]
push esi
push ecx
push ebx
push eax
mov eax, dword [ebp - 0x1c]
push dword [eax + 0xf4]
push 0x16
call fcn.00415e1f
pop ecx
call eax
test eax, eax
jne 0x40ac4f
mov eax, dword [0x43ac08]
push 0xd9f3ffff
mov ecx, eax
push eax
neg ecx
mov byte [0x43abc9], 0xfe
mov word [0x43abdc], cx
call fcn.00411775
add dword [0x43ac04], eax
mov eax, dword [ebp - 0x10]
pop ecx
pop ecx
mov byte [esi + eax], bl
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x2c], 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 - 0x2c]
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 [0x43abcc]
push eax
mov byte [ebp - 4], 3
push dword [0x43abf0]
mov byte [0x43abcb], 1
call fcn.00411706
mov dword [0x43abfc], eax
push esi
movsx ax, byte [0x43abc9]
mov word [0x43abe2], ax
mov al, byte [0x43abca]
sub al, byte [0x43abe0]
add byte [0x43abd1], al
call fcn.0042f224
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x2c]
add esp, 0xc
mov ecx, esi
mov byte [esi], al
push ebx
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]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x2c]
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_]
mov dword [ebp - 0x18], edi
push edi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
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 byte [ebp - 4], bl
push edi
lea ecx, [ebp - 0x3c]
jmp 0x40ad18
mov eax, dword [0x43abf0]
cmp eax, ebx
je 0x40ac67
cmp dword [0x43abec], ebx
mov byte [0x43abcc], 1
jne 0x40ac6d
mov byte [0x43abcc], bl
push 0x90abffff
push eax
call fcn.0041181a
push esi
mov dword [0x43ac08], eax
call fcn.0042f224
add esp, 0xc
push dword [0x43abf8]
push 0xf08dffff
call fcn.00411775
pop ecx
mov word [0x43abd6], ax
movsx eax, byte [0x43abcf]
pop ecx
mov byte [ebp - 4], bl
mov ecx, 0x8f67ffff
push edi
sub ecx, eax
mov dword [0x43ac08], ecx
lea ecx, [ebp - 0x3c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x40acc4
push 1
pop edi
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x4c]
mov byte [ebp - 0x4c], 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 dword [ebp + 0x10]
lea eax, [ebp - 0x4c]
mov dword [ebp - 4], 4
push eax
call fcn.004127f6
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x4c]
pop ecx
pop ecx
mov byte [esi], al
push ebx
mov ecx, 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_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x4c]
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_]
mov dword [ebp - 0x18], edi
mov byte [ebp - 4], bl
push edi
lea ecx, [ebp - 0x4c]
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, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0xc