Function at 0x40afdd
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42d7a2
call fcn.0042c930
sub esp, 0x28
push ebx
or al, 0xff
sub al, byte [0x438c18]
push esi
push edi
xor edi, edi
mov dword [ebp - 0x14], edi
mov byte [0x438be8], al
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov esi, dword [0x432034]
mov word [0x438c04], ax
mov al, byte [esi]
add al, 0x66
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c950
mov ecx, esp
mov edx, esi
call fcn.00429cdb
mov dword [ebp - 0x10], eax
mov al, byte [ebp + 0xf]
push edi
lea ecx, [ebp - 0x24]
mov byte [ebp - 0x24], 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 al, byte [ebp + 0xf]
push 1
pop ebx
lea ecx, [ebp - 0x34]
push edi
mov dword [ebp - 4], ebx
mov byte [ebp - 0x34], 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 [0x438c24]
mov byte [ebp - 4], 2
push 0x2855ffff
call fcn.00410130
add byte [0x438bec], al
movsx eax, byte [0x438be8]
push eax
movsx eax, word [0x438bf8]
push eax
call fcn.00410285
push 0xd1b7ffff
push 0x6f23ffff
mov byte [0x438be9], al
call fcn.00410092
mov esi, dword [ebp + 0xc]
add esp, 0x18
add word [0x438c04], ax
cmp esi, edi
je 0x40b0f6
lea eax, [ebp - 0x24]
lea ecx, [ebp - 0x34]
push eax
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::swap_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char____]
push 0xa
mov eax, esi
xor edx, edx
pop ecx
div ecx
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x24]
mov al, byte [edx + eax]
mov byte [ebp + 0xc], al
push dword [ebp + 0xc]
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_unsigned_int__char_]
push 0xa
mov eax, esi
xor edx, edx
pop ecx
div ecx
lea ecx, [ebp - 0x24]
mov esi, eax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push dword [eax]
lea eax, [ebp - 0x34]
push edi
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_]
jmp 0x40b0a4
cmp dword [ebp - 0x1c], edi
jne 0x40b110
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x24]
mov al, byte [eax]
mov byte [ebp + 0xc], al
push dword [ebp + 0xc]
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_unsigned_int__char_]
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x24]
sub dword [0x438c0c], 0x4000001
push edi
mov ecx, esi
mov byte [esi], 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]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x24]
push edi
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 - 0x14], ebx
push ebx
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
and byte [ebp - 4], 0
push ebx
lea ecx, [ebp - 0x24]
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]
lea esp, [ebp - 0x40]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret