Function at 0x402c68
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42cd7c
call fcn.0042c5b0
sub esp, 0x24
push ebx
push esi
push edi
call fcn.00401fe1
test al, al
jne 0x40307b
lea eax, [ebp - 0x20]
push 1
push eax
call fcn.0041f32a
xor ebx, ebx
push 0x5b21ffff
push 0x2ef9ffff
mov dword [ebp - 4], ebx
call fcn.004100bc
add byte [0x437beb], al
push 0x1ca5ffff
push 0x50c3ffff
call fcn.0040ff1a
movsx cx, byte [0x437bee]
add esp, 0x18
mov byte [0x437be9], al
mov ax, word [0x437bfa]
dec ecx
add ax, cx
cmp dword [ebp - 0x18], 4
mov word [0x437bfa], ax
jbe 0x40303d
push dword [0x437c14]
sub al, byte [0x437c20]
add byte [0x437beb], al
push 0xabcbffff
call fcn.0040ff4b
cmp byte [0x437bf0], bl
pop ecx
pop ecx
mov byte [0x437bee], al
je 0x402d1c
cmp word [0x437bf2], bx
je 0x402d1c
push 1
pop eax
jmp 0x402d1e
xor eax, eax
mov esi, dword [0x430f90]
add dword [0x437c2c], eax
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov edi, dword [ebp - 0x18]
mov ecx, esp
mov edx, esi
call fcn.004298e5
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]
add edi, 0xfffffffc
lea ecx, [ebp - 0x20]
push dword [eax]
lea eax, [ebp - 0x30]
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__::substr_unsigned_int__unsigned_int_]
mov edi, eax
push esi
mov byte [ebp - 4], 1
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
push dword [edi + 8]
mov ecx, edi
push ebx
call dword [sym.imp.MSVCP60.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_unsigned_int__unsigned_int__char_const___unsigned_int_const]
push 1
lea ecx, [ebp - 0x30]
mov esi, eax
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_]
cmp esi, ebx
je 0x402e82
mov ax, word [0x437c24]
mov esi, dword [0x430f90]
imul ax, word [0x437bf2]
mov byte [0x437bea], 1
mov word [0x437bf6], ax
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
push eax
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__
add esp, 0xc
mov eax, dword [eax + 4]
mov ecx, 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]
cmp eax, ebx
mov byte [ebp - 4], 2
jne 0x402df3
mov eax, ecx
cmp dword [ebp - 0x1c], ebx
je 0x402dfb
mov ecx, dword [ebp - 0x1c]
push ebx
push eax
push ecx
push 0x38
call fcn.0041448a
pop ecx
call eax
push 1
lea ecx, [ebp - 0x30]
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 eax, dword [0x437c14]
mov esi, dword [0x430f90]
or eax, 0x83f7ffff
add dword [0x437c20], eax
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
pop ecx
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__::append_char_const___unsigned_int_]
push dword [0x437c28]
mov ax, word [0x437bfc]
dec ax
push dword [0x437c20]
add word [0x437bf4], ax
call fcn.0041004e
add dword [0x437c18], eax
pop ecx
pop ecx
cmp dword [0x437c24], ebx
je 0x402e97
cmp byte [0x437be8], bl
je 0x402e97
push 1
pop eax
jmp 0x402e99
xor eax, eax
add byte [0x437bee], al
mov esi, dword [0x430f94]
movsx eax, word [0x437c04]
mov ecx, 0xcc57ffff
sub ecx, eax
add dword [0x437c20], ecx
inc byte [0x437be8]
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
lea eax, [ebp - 0x10]
push ebx
push eax
mov edi, 0x20006
push ebx
push edi
push ebx
push ebx
push ebx
mov edx, esi
call fcn.004298e5
push eax
push 0x80000001
push 0x14
call fcn.0041448a
pop ecx
call eax
test eax, eax
je 0x402f3e
mov esi, dword [0x430f94]
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
lea eax, [ebp - 0x10]
push ebx
push eax
push ebx
push edi
push ebx
push ebx
push ebx
mov edx, esi
call fcn.004298e5
push eax
push 0x80000002
push 0x14
call fcn.0041448a
pop ecx
call eax
test eax, eax
jne 0x40303d
mov ax, word [0x437c24]
push ebx
sub word [0x437c02], ax
lea eax, [ebp - 0x30]
push eax
call fcn.0041f32a
movsx eax, byte [0x437bf0]
push eax
mov byte [ebp - 4], 3
push dword [0x437c18]
call fcn.0040ff4b
add dword [0x437c08], eax
mov al, byte [0x437bed]
dec al
push 0xcf65ffff
mov byte [0x437bf0], al
movsx eax, byte [0x437be9]
push eax
call fcn.0040ff78
mov ecx, dword [ebp - 0x1c]
add dword [0x437c24], eax
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]
add esp, 0x18
cmp ecx, ebx
jne 0x402fa7
mov ecx, eax
cmp dword [ebp - 0x2c], ebx
je 0x402faf
mov eax, dword [ebp - 0x2c]
push dword [ebp - 0x18]
push ecx
push 1
push ebx
push eax
push dword [ebp - 0x10]
push 0x17
call fcn.0041448a
pop ecx
call eax
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call esi
cmp word [0x437bfa], bx
mov word [0x437bf4], ax
je 0x402fed
cmp word [0x437c00], bx
mov word [0x437bfa], 1
jne 0x402ff4
mov word [0x437bfa], bx
call esi
push dword [ebp - 0x10]
mov byte [0x437be8], al
push 0x13
call fcn.0041448a
pop ecx
call eax
cmp dword [0x437c20], ebx
push 0x2bbfffff
setne al
mov byte [0x437bf1], al
movsx eax, word [0x437c04]
push eax
call fcn.0040ffc6
pop ecx
mov dword [0x437c24], eax
pop ecx
mov byte [ebp - 4], bl
push 1
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_]
movsx eax, byte [0x437beb]
push 0x32cdffff
push eax
call fcn.0040fede
push 0x6ecdffff
push 0xada5ffff
mov byte [0x437be9], al
call fcn.00410016
add byte [0x437bec], al
or dword [ebp - 4], 0xffffffff
add esp, 0x10
lea ecx, [ebp - 0x20]
push 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 ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x3c]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret