Function at 0x1002be70
Capabilities:
Identify system language via api

Disassembly:
push 0xffffffffffffffff
push 0x1003f58d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x28
movsx eax, byte [0x10047ba1]
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push 0x167bffff
push eax
mov dword [esp + 0x1c], ebx
call fcn.10007650
mov cl, byte [0x10047ba4]
mov esi, dword [esp + 0x54]
add cl, al
add esp, 8
mov byte [0x10047ba4], cl
mov cl, byte [esi]
mov byte [esp + 0x28], cl
push ebx
lea ecx, [esp + 0x2c]
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 edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [esp + 0x28]
mov eax, dword [edx]
push eax
push ebx
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__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov cl, byte [0x10047bba]
mov dl, byte [0x10047bb4]
sub cl, dl
mov dword [esp + 0x40], ebx
movsx edx, word [0x10047bbc]
push edx
push 0x69efffff
mov byte [0x10047ba7], cl
call fcn.100077d0
add word [0x10047bb0], ax
mov eax, dword [esp + 0x34]
add esp, 8
cmp eax, ebx
je 0x1002bf47
mov cl, byte [eax - 1]
cmp cl, bl
je 0x1002bf3b
cmp cl, 0xff
je 0x1002bf3b
mov eax, dword [esp + 0x30]
push ebx
push eax
lea ecx, [esp + 0x30]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
mov eax, dword [esp + 0x2c]
cmp eax, ebx
je 0x1002bf47
mov byte [eax - 1], 0xff
mov eax, dword [esp + 0x2c]
mov edi, dword [esi + 4]
cmp edi, ebx
jne 0x1002bf54
mov dword [esp + 0x4c], ebx
jmp 0x1002bf5d
mov esi, dword [esi + 8]
add esi, edi
mov dword [esp + 0x4c], esi
mov ebp, eax
mov eax, dword [esp + 0x4c]
cmp edi, eax
je 0x1002c02b
mov cl, byte [edi]
mov byte [esp + 0x14], cl
lea ecx, [esp + 0x10]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::_Lockit::constructor_void_]
mov ecx, dword [sym.imp.MSVCP60.dll_class_std::locale::id_std::ctype_char_::id]
mov byte [esp + 0x40], 1
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::locale::id::operator_unsigned_int_void_]
push 1
push eax
mov ecx, 0x10048130
call dword [sym.imp.MSVCP60.dll_public:_class_std::locale::facet_const____thiscall_std::locale::_Getfacet_unsigned_int__bool_const]
mov esi, eax
cmp esi, ebx
jne 0x1002c000
mov ecx, 0x10048130
call dword [sym.imp.MSVCP60.dll_public:_bool___thiscall_std::locale::_Iscloc_void_const]
test al, al
je 0x1002c0b8
mov esi, dword [0x10048134]
cmp esi, ebx
jne 0x1002c000
push 0x18
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
cmp esi, ebx
mov byte [esp + 0x40], 2
je 0x1002bfe9
push ebx
push ebx
push ebx
mov ecx, esi
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::ctype_char_::constructor_short_int_const___bool__unsigned_int_]
mov dword [esi], 0x10041758
jmp 0x1002bfeb
xor esi, esi
push esi
mov byte [esp + 0x44], 1
call fcn.1002c8a0
add esp, 4
mov dword [0x10048134], eax
mov esi, eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x40], bl
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::_Lockit::destructor_void_]
mov eax, dword [esp + 0x14]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 8]
mov byte [ebp], al
mov eax, dword [esp + 0x4c]
inc edi
inc ebp
cmp edi, eax
jne 0x1002bf6b
movsx edx, word [0x10047baa]
mov eax, dword [0x10047bd8]
lea ecx, [eax + edx - 0x79f40001]
mov dword [0x10047bd8], ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movsx edx, byte [0x10047ba5]
add word [0x10047bb0], ax
push edx
push 0x9e09ffff
call fcn.100075f0
mov cl, byte [0x10047ba2]
mov esi, dword [esp + 0x50]
add cl, al
mov al, byte [esp + 0x30]
mov byte [0x10047ba2], cl
mov byte [esi], al
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
add esp, 8
lea eax, [esp + 0x28]
mov edx, dword [ecx]
mov ecx, esi
push edx
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 ecx, dword [esp + 0x2c]
cmp ecx, ebx
je 0x1002c0e0
mov al, byte [ecx - 1]
cmp al, bl
je 0x1002c0d6
cmp al, 0xff
je 0x1002c0d6
dec al
mov byte [ecx - 1], al
jmp 0x1002c0e0
push str.missing_locale_facet
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::bad_cast::constructor_char_const__]
lea ecx, [esp + 0x1c]
push 0x10043a90
push ecx
call sub.MSVCRT.dll__CxxThrowException
dec ecx
push ecx
call fcn.1002cda0
add esp, 4
mov ecx, dword [esp + 0x38]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x34
ret