Function at 0x4219ef
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x430701
call fcn.0042e9c0
sub esp, 0x54
movsx eax, word [0x438c2a]
push ebx
push esi
push edi
xor ebx, ebx
push eax
push 0x6cddffff
mov dword [ebp - 0x10], ebx
call fcn.0040a96f
push 0xbd57ffff
mov word [0x438c2a], ax
push dword [0x438c54]
call fcn.0040a96f
push 0x85bdffff
mov dword [0x438c58], eax
push dword [0x438c38]
call fcn.0040aa4f
add esp, 0x18
mov byte [0x438c19], al
mov al, byte [ebp + 0xf]
lea ecx, [ebp - 0x20]
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 [ebp + 0xc]
push 1
pop edi
sub eax, ebx
mov dword [ebp - 4], edi
je 0x421c93
dec eax
je 0x421b18
dec eax
je 0x421ae9
dec eax
je 0x421ab8
dec eax
jne 0x421cf1
push 7
lea eax, [ebp - 0x30]
push 3
push eax
call fcn.004226e6
add esp, 0xc
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], 5
push dword [ecx]
lea ecx, [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_]
mov byte [ebp - 4], 1
push edi
lea ecx, [ebp - 0x30]
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 0x421cf1
push 6
lea eax, [ebp - 0x40]
push 3
push eax
call fcn.004226e6
add esp, 0xc
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], 4
push dword [ecx]
lea ecx, [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_]
mov byte [ebp - 4], 1
push edi
lea ecx, [ebp - 0x40]
jmp 0x421aad
push ebx
lea eax, [ebp - 0x50]
push ebx
push eax
call fcn.004226e6
add esp, 0xc
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], 3
push dword [ecx]
lea ecx, [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_]
mov byte [ebp - 4], 1
push edi
lea ecx, [ebp - 0x50]
jmp 0x421aad
push 0x44
call fcn.0040ebd2
push 0x43
call fcn.0040ebd2
movsx eax, word [0x438c22]
sub dword [0x438c58], 0x28800001
push 0x833dffff
push eax
call fcn.0040aa4f
push 0x801
mov dword [0x438c40], eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
push 0xfe1fffff
push 0xcbcfffff
mov esi, eax
call fcn.0040a9a5
add word [0x438c2e], ax
add esp, 0x1c
movsx eax, byte [0x438c20]
or eax, 0x2647ffff
push ebx
push 0x55
mov dword [0x438c58], eax
call fcn.0040ebd2
pop ecx
call eax
push 0x800
push esi
push ebx
push 0x44
call fcn.0040ebd2
pop ecx
call eax
push 0x43
mov edi, eax
call fcn.0040ebd2
pop ecx
call eax
test eax, eax
jne 0x421bcf
movsx eax, word [0x438c2a]
push 0x2501ffff
push eax
call fcn.0040a9a5
push esi
mov word [0x438c28], ax
call sub.MSVCRT.dll_strlen
add esp, 0xc
jmp 0x421c7c
push 0x43
call fcn.0040ebd2
pop ecx
call eax
cmp eax, 0x7a
jne 0x421c87
movsx ax, byte [0x438c1e]
neg eax
mov word [0x438c2e], ax
push 0xd89bffff
movsx eax, byte [0x438c20]
push eax
call fcn.0040aac5
push esi
mov word [0x438c24], ax
call fcn.0042e920
lea eax, [edi + 1]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
inc word [0x438c2a]
mov esi, eax
movsx eax, byte [0x438c1c]
push 0xdf43ffff
push eax
call fcn.0040a9a5
add word [0x438c2a], ax
add esp, 0x18
push edi
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x824fffff
push 0x1a79ffff
call fcn.0040a96f
mov dword [0x438c58], eax
push 0x6a23ffff
movsx eax, word [0x438c2e]
push eax
call fcn.0040a933
add dword [0x438c40], eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0x14
push eax
push esi
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_]
push esi
call fcn.0042e920
pop ecx
push 1
pop edi
jmp 0x421cf1
lea eax, [ebp - 0x60]
push 7
push eax
call fcn.00404a4b
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 - 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_]
push edi
lea ecx, [ebp - 0x60]
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 al, byte [0x438c38]
inc al
mov byte [0x438c19], al
mov eax, dword [0x438c4c]
push eax
push eax
call fcn.0040a9a5
pop ecx
mov byte [0x438c1a], al
pop ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
add word [0x438c34], ax
movsx eax, byte [0x438c19]
push dword [0x438c3c]
push eax
call fcn.0040aa83
add word [0x438c30], ax
mov ax, word [0x438c26]
or ax, word [0x438c2a]
mov esi, dword [ebp + 8]
pop ecx
add word [0x438c2a], ax
mov al, byte [ebp - 0x20]
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 - 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_]
mov dword [ebp - 0x10], edi
push edi
lea ecx, [ebp - 0x20]
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_]
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret