Function at 0x410340
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42da09
call fcn.0042c5b0
sub esp, 0x14
push ebx
push esi
push edi
mov dword [ebp - 0x10], ecx
push 0xefa3ffff
call dword [sym.imp.KERNEL32.dll_IsBadCodePtr]
add dword [0x437c24], 0x73d20000
push 0x8765ffff
push 0xb539ffff
mov byte [0x437be9], al
call fcn.0040ffe3
push dword [0x437c24]
mov byte [0x437bed], al
movsx eax, byte [0x437beb]
push eax
call fcn.00410092
mov word [0x437bfc], ax
imul byte [0x437c02]
add esp, 0x10
mov byte [0x437beb], al
mov al, byte [ebp + 0xb]
lea ecx, [ebp - 0x20]
push 0
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 [0x437c0c]
and dword [ebp - 4], 0
mov esi, dword [ebp + 8]
dec eax
add word [0x437bfe], ax
mov ecx, dword [ebp - 0x10]
movsx ax, byte [0x437bef]
inc eax
mov dword [0x437c18], 0x5d720001
add word [0x437c00], ax
mov eax, dword [esi + 0x18]
add eax, esi
push eax
call fcn.004100f2
mov edi, eax
push edi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push edi
lea ecx, [ebp - 0x20]
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 [0x437bf6]
push dword [0x437c28]
push eax
call fcn.0040fede
mov word [0x437bf2], ax
mov edi, dword [esi + 0x10]
movsx eax, byte [0x437be9]
push eax
add edi, esi
movsx eax, word [0x437bf8]
push eax
mov dword [0x437c2c], 0x850dffff
call fcn.0040ffc6
push dword [0x437c10]
mov byte [0x437beb], al
mov ebx, dword [esi + 0x14]
sub dword [0x437c28], 0x4060001
push 0xa6f9ffff
add ebx, esi
call fcn.004100bc
add word [0x437bf6], ax
add esp, 0x18
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
push dword [0x437c1c]
movzx eax, ax
add dword [0x437c20], eax
push 0xd2dfffff
call fcn.0040ff78
mov esi, dword [ebp - 0x10]
add byte [0x437beb], al
pop ecx
cmp dword [esi + 8], 0
pop ecx
jne 0x410558
cmp byte [edi], 0
je 0x410558
push 0x9c59ffff
push dword [0x437c10]
call fcn.0040ffe3
movsx cx, byte [0x437bf1]
mov byte [0x437bee], al
inc word [0x437c04]
movsx ax, al
imul ecx, eax
push edi
mov word [0x437bf8], cx
call sub.MSVCRT.dll_strlen
add esp, 0xc
mov ecx, esi
push eax
push edi
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_]
push 0xc29fffff
push 0x5889ffff
call fcn.004100bc
mov word [0x437bfe], ax
mov eax, 0xdc9bffff
sub eax, dword [0x437c20]
mov dword [0x437c14], 0xdbd40001
add dword [0x437c24], eax
movsx eax, word [0x437bf8]
push eax
push 0x6fd9ffff
call fcn.0040ffc6
add byte [0x437bea], al
movsx eax, byte [0x437bed]
push eax
push 0xb5abffff
call fcn.0040ff78
add esp, 0x18
mov dword [0x437c0c], eax
movsx eax, word [0x437bfc]
movsx ecx, byte [0x437bed]
sub eax, ecx
mov dword [0x437c10], eax
mov eax, dword [esi + 0x18]
test eax, eax
jne 0x410626
cmp byte [ebx], al
je 0x410626
movsx eax, byte [0x437bef]
push eax
movsx eax, word [0x437c04]
push eax
call fcn.00410092
push dword [0x437c1c]
mov byte [0x437be9], al
movsx eax, word [0x437bfe]
push eax
call fcn.00410016
add dword [0x437c24], eax
push ebx
movsx eax, byte [0x437bef]
imul eax, eax, 0xbac5ffff
add dword [0x437c28], eax
call sub.MSVCRT.dll_strlen
add esp, 0x14
lea ecx, [esi + 0x10]
push eax
push ebx
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_]
push dword [0x437c18]
push 0xaec3ffff
call fcn.0040ffc6
mov byte [0x437bee], al
mov eax, dword [0x437c2c]
dec eax
pop ecx
add word [0x437bfc], ax
pop ecx
movsx eax, byte [0x437bed]
add eax, dword [0x437c24]
mov byte [0x437bf1], 1
add dword [0x437c1c], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov dword [0x437c18], eax
or eax, 0xffffffff
push 1
sub eax, dword [0x437c2c]
pop edi
mov dword [0x437c1c], edi
add word [0x437bf6], ax
cmp dword [esi + 0x28], 0
jne 0x4106f1
cmp dword [ebp - 0x18], 0
je 0x4106f1
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov dword [0x437c24], eax
push 0xfa37ffff
movsx eax, word [0x437bf2]
push eax
call fcn.0040fede
add byte [0x437be8], al
mov ax, word [0x437c00]
shl ax, 1
pop ecx
mov word [0x437c00], ax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
pop ecx
xor ebx, ebx
lea ecx, [esi + 0x20]
push dword [eax]
lea eax, [ebp - 0x20]
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_]
cmp dword [0x437c2c], ebx
je 0x4106b6
cmp word [0x437bfc], bx
mov word [0x437bfa], di
jne 0x4106bd
mov word [0x437bfa], bx
movsx eax, byte [0x437be8]
mov ecx, dword [0x437c18]
lea eax, [ecx + eax - 0x9ac0001]
mov dword [0x437c18], eax
movsx eax, word [0x437c04]
push eax
push 0xfdd1ffff
call fcn.0040ffe3
add word [0x437bfc], ax
pop ecx
pop ecx
add dword [0x437c24], 0x5e940001
or dword [ebp - 4], 0xffffffff
push edi
lea ecx, [ebp - 0x20]
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]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 4