Function at 0x41b470
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42e159
call fcn.0042c5b0
sub esp, 0x4c
mov al, byte [0x437bf6]
push ebx
or al, byte [0x437be9]
push esi
push dword [0x437c14]
add byte [0x437be9], al
movsx eax, word [0x437bf4]
push eax
call fcn.0040ff1a
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
pop ecx
pop ecx
mov dword [0x437c2c], eax
call esi
mov byte [0x437bf1], al
mov eax, dword [0x438148]
xor ebx, ebx
cmp eax, ebx
je 0x41b4ed
cmp byte [0x437398], bl
jne 0x41b4ed
cmp dword [eax], ebx
je 0x41b4ed
call esi
push dword [ebp + 0x14]
mov byte [0x437bf0], al
mov eax, dword [0x438148]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [eax]
jmp 0x41b93c
movsx ax, byte [0x437bee]
mov esi, dword [ebp + 0xc]
sub ax, word [0x437bf6]
push edi
mov edi, dword [ebp + 0x14]
push edi
dec eax
push dword [ebp + 0x10]
mov word [0x437bfa], ax
push esi
push dword [ebp + 8]
call fcn.0041aaac
push 0x9eb9ffff
push dword [0x437c0c]
call fcn.0040ffe3
add esp, 0x18
mov word [0x437bf4], ax
push edi
push dword [ebp + 0x10]
push esi
call fcn.0041ac96
push dword [0x437c28]
add byte [0x437bf0], 0xfe
mov dword [ebp + 0x14], eax
movsx eax, byte [0x437bea]
push eax
call fcn.00410016
mov word [0x437bfc], ax
mov al, byte [0x437c00]
pop ecx
neg al
pop ecx
mov byte [0x437bec], al
mov al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], 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 - 0x28]
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, word [0x437bfe]
push eax
push 0x7e17ffff
mov dword [ebp - 4], ebx
call fcn.0040ff4b
mov esi, 0x43739c
mov dword [0x437c20], eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x28]
push eax
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__::append_char_const___unsigned_int_]
mov al, byte [0x437bf4]
inc al
imul byte [0x437bec]
mov byte [0x437bec], al
movsx eax, word [0x437bfc]
push eax
movsx eax, byte [0x437bef]
push eax
call fcn.0040ff4b
push dword [ebp + 0x10]
add word [0x437bf4], ax
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x28]
push eax
push dword [ebp + 0x10]
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_char_const___unsigned_int_]
movsx eax, word [0x437bf6]
push eax
push 0x445fffff
call fcn.004100bc
pop ecx
mov byte [0x437bec], al
pop ecx
call dword [sym.imp.USER32.dll_GetInputState]
push 0x2285ffff
push 0xc423ffff
mov byte [0x437bed], al
call fcn.0040ff78
add byte [0x437beb], al
pop ecx
pop ecx
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x10]
mov esi, 0x438150
push eax
mov ecx, esi
call fcn.0041ca49
mov ecx, dword [0x438154]
mov eax, dword [ebp - 0x10]
cmp eax, ecx
mov word [0x437bfe], 0xfffe
je 0x41b7d4
movsx cx, byte [0x437bef]
movsx dx, byte [0x437bee]
add word [0x437c00], 0xfffe
mov word [0x437c04], 1
mov esi, dword [eax + 0x40]
sub ecx, edx
add word [0x437c02], cx
mov eax, dword [eax + 0x44]
cmp esi, eax
je 0x41b6ef
movsx eax, word [0x437c02]
push eax
push 0x8fbffff
call fcn.0040fede
or byte [0x437bf1], 0xff
mov byte [0x437be9], al
mov eax, dword [esi + 4]
pop ecx
cmp eax, dword [ebp + 8]
pop ecx
je 0x41b6ef
movsx eax, byte [0x437bea]
push 0x24e1ffff
push eax
call fcn.0040ff1a
mov byte [0x437bea], al
mov eax, dword [ebp - 0x10]
add esi, 8
pop ecx
cmp esi, dword [eax + 0x44]
pop ecx
jne 0x41b6a3
push 0x7abfffff
push 0x2865ffff
call fcn.0040ff1a
add word [0x437bf8], ax
mov eax, dword [ebp - 0x10]
inc word [0x437c00]
pop ecx
cmp esi, dword [eax + 0x44]
pop ecx
jne 0x41b78f
push 0x930dffff
push 0x8965ffff
call fcn.0040ff1a
add byte [0x437bed], al
mov eax, dword [ebp + 8]
push dword [0x437c24]
mov dword [ebp - 0x14], eax
movsx eax, byte [0x437bef]
push eax
call fcn.0040ff78
add esp, 0x10
mov word [0x437c04], ax
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], edi
push eax
mov eax, dword [ebp - 0x10]
lea ecx, [eax + 0x3c]
call fcn.0041c572
movsx ax, byte [0x437bee]
add eax, dword [0x437c1c]
push 0x4dabffff
push 0xf25dffff
mov word [0x437bf8], ax
call fcn.0040ffe3
add byte [0x437bed], al
pop ecx
pop ecx
jmp 0x41b929
mov eax, dword [0x437c14]
imul eax, dword [0x437c20]
mov word [0x437bfa], ax
movsx eax, word [0x437c04]
or eax, 0x8d01ffff
add dword [0x437c18], eax
mov dword [esi], edi
movsx eax, word [0x437bfc]
push eax
push 0x7785ffff
call fcn.0040ffe3
add dword [0x437c1c], eax
pop ecx
pop ecx
jmp 0x41b929
movsx eax, word [0x437bf8]
imul eax, eax, 0x54fffff
lea ecx, [ebp - 0x58]
mov dword [0x437c0c], eax
call fcn.0041b94c
push dword [ebp + 0xc]
mov byte [ebp - 4], 1
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea ecx, [ebp - 0x58]
push dword [ebp + 0xc]
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 ax, byte [0x437be8]
dec eax
push 0x7247ffff
add word [0x437bfc], ax
movsx eax, word [0x437bf4]
push eax
call fcn.004100bc
push dword [ebp + 0x10]
mov byte [0x437bef], al
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x48]
push eax
push dword [ebp + 0x10]
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_]
cmp dword [0x437c10], ebx
jne 0x41b85b
cmp dword [0x437c18], ebx
jne 0x41b85b
xor eax, eax
jmp 0x41b85e
push 1
pop eax
add word [0x437bfa], ax
or al, 0xff
sub al, byte [0x437c0c]
push 0x4a49ffff
push 0xb173ffff
mov dword [ebp - 0x14], ebx
add byte [0x437be8], al
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x18], eax
call fcn.0040ff1a
add byte [0x437bed], al
add byte [0x437beb], 0xfe
pop ecx
lea eax, [ebp - 0x18]
pop ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.0041c572
push dword [0x437c24]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], eax
push 0x7c7dffff
call fcn.0040ffc6
add word [0x437bfc], ax
pop ecx
pop ecx
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x18], edi
call fcn.0041c572
inc byte [0x437bea]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x28]
push eax
mov ecx, esi
call fcn.0041c5e3
mov ecx, eax
call fcn.0041b9e8
push 0xc1a3ffff
push 0x6397ffff
call fcn.0040ff78
inc byte [0x437bee]
mov word [0x437bf2], ax
xor eax, eax
cmp byte [0x437bef], bl
pop ecx
mov byte [ebp - 4], bl
pop ecx
setne al
add byte [0x437bef], al
lea ecx, [ebp - 0x58]
call fcn.0041b99e
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x28]
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 [ebp + 0x14]
pop edi
mov ecx, dword [ebp - 0xc]
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0x10