Function at 0x408cf3
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x4106fc
call fcn.0040fcd8
sub esp, 0x60
movsx eax, word [0x41581a]
mov ecx, 0x586bffff
push ebx
sub ecx, eax
mov al, byte [0x415838]
and al, byte [0x415848]
add dword [0x415834], ecx
push esi
push edi
xor edi, edi
mov byte [0x415812], al
test byte [0x415c48], 1
mov dword [ebp - 0x24], edi
jne 0x408d68
mov al, byte [ebp + 0x13]
or byte [0x415c48], 1
and byte [0x415c68], 0
mov byte [0x415c60], al
mov al, byte [ebp + 0x13]
mov ecx, 0x415c60
mov byte [0x415c61], al
call fcn.00409967
push 0x40932f
call fcn.0040fc74
pop ecx
push dword [0x415834]
dec byte [0x415817]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], edi
push 0xc9d5ffff
call fcn.00403060
mov dword [0x41583c], eax
mov esi, dword [ebp + 0xc]
movsx ax, byte [0x415819]
inc eax
pop ecx
add word [0x41581a], ax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x28], eax
pop ecx
lea eax, [ebp - 0x2c]
mov ecx, 0x415c60
push eax
lea eax, [ebp + 0xc]
push eax
mov dword [ebp - 0x2c], esi
mov dword [0x415830], 0x47500001
call fcn.0040957e
mov eax, dword [ebp + 0xc]
dec word [0x41581a]
cmp eax, dword [0x415c64]
je 0x408dfe
mov ebx, dword [ebp + 8]
lea esi, [eax + 0x14]
push edi
mov ecx, ebx
mov al, byte [esi]
mov byte [ebx], 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, ebx
push dword [eax]
push edi
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_]
jmp 0x40931b
push 0x70f1ffff
push 0x603bffff
call fcn.00402eda
add byte [0x415819], al
pop ecx
movsx eax, byte [0x415813]
and eax, 0x2db5ffff
pop ecx
mov dword [0x415854], eax
mov al, byte [ebp + 0x13]
push edi
lea ecx, [ebp - 0x3c]
mov byte [ebp - 0x3c], 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 dword [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx eax, ax
mov dword [0x415850], eax
call fcn.00408791
mov dword [ebp - 0x18], eax
push 4
movsx eax, byte [0x415816]
add eax, dword [0x415854]
add dword [0x41584c], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
call sub.MSVCRT.dll_memcpy
movsx eax, byte [0x415816]
push 0xb951ffff
push eax
call fcn.0040302e
add dword [0x415830], eax
add esp, 0x14
cmp esi, edi
je 0x408e99
mov dword [ebp - 0x14], esi
jmp 0x408ea6
movzx eax, byte [ebp - 0x10]
shr eax, 5
add eax, 4
mov dword [ebp - 0x14], eax
movsx eax, word [0x41581e]
push eax
movsx eax, byte [0x415814]
push eax
call fcn.00402f6c
add dword [0x415850], eax
mov esi, dword [0x4129a8]
movsx eax, byte [0x415810]
push eax
push 0x8b21ffff
call fcn.00402f6c
add dword [0x415834], eax
mov edi, dword [0x4129ac]
movsx ax, byte [0x415813]
add ax, word [0x41581e]
mov ebx, dword [0x4129b0]
add esp, 0x10
mov word [0x41582c], ax
movsx ax, byte [0x415814]
and eax, dword [0x415830]
mov word [0x415826], ax
mov al, byte [esi]
sub al, 0x11
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0040fc90
mov eax, esp
push esi
push eax
call fcn.0040ef68
pop ecx
mov esi, eax
mov al, byte [ebp + 0x13]
pop ecx
push 0
lea ecx, [ebp - 0x6c]
mov byte [ebp - 0x6c], 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 esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x6c]
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_]
mov word [0x41581e], 0xfffe
mov al, byte [edi]
sub al, 0x11
mov byte [ebp - 4], 2
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0040fc90
mov eax, esp
push edi
push eax
call fcn.0040ef68
pop ecx
mov edi, eax
mov al, byte [ebp + 0x13]
pop ecx
xor esi, esi
lea ecx, [ebp - 0x5c]
push esi
mov byte [ebp - 0x5c], 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 edi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push edi
lea ecx, [ebp - 0x5c]
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 [0x415850]
mov byte [ebp - 4], 3
push dword [0x415834]
call fcn.00402fbe
pop ecx
add byte [0x415816], al
mov al, byte [ebx]
sub al, 0x11
pop ecx
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0040fc90
mov eax, esp
push ebx
push eax
call fcn.0040ef68
pop ecx
mov edi, eax
mov al, byte [ebp + 0x13]
pop ecx
push esi
lea ecx, [ebp - 0x4c]
mov byte [ebp - 0x4c], 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 edi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push edi
lea ecx, [ebp - 0x4c]
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, byte [0x415811]
push dword [0x415844]
mov byte [ebp - 4], 4
push eax
call fcn.00403060
mov byte [0x415813], al
xor edx, edx
movzx eax, byte [ebp - 0xf]
div dword [ebp - 0x64]
pop ecx
pop ecx
mov edi, edx
cmp dword [ebp - 0x64], edi
ja 0x409038
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xran_void_]
lea ecx, [ebp - 0x6c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Freeze_void_]
mov eax, dword [ebp - 0x68]
lea ecx, [ebp - 0x3c]
mov al, byte [eax + edi]
mov byte [ebp + 0xc], al
push dword [ebp + 0xc]
push 1
pop edi
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__::append_unsigned_int__char_]
movsx eax, byte [0x415814]
push 0xde19ffff
push eax
call fcn.00402eda
add word [0x415824], ax
mov dword [ebp + 0xc], 2
movsx eax, word [0x415824]
push eax
movsx eax, word [0x415822]
push eax
call fcn.00403060
movzx ecx, byte [ebp - 0xe]
movzx edx, byte [ebp - 0xd]
mov ebx, dword [sym.imp.MSVCRT.dll_srand]
mov word [0x415828], ax
mov eax, dword [ebp + 0x10]
shl ecx, 8
add eax, ecx
add edx, eax
push edx
call ebx
movsx eax, byte [0x415817]
push eax
push 0x5d79ffff
call fcn.00403002
add esp, 0x1c
mov word [0x415824], ax
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x34], eax
jae 0x409210
inc byte [0x415818]
cmp dword [ebp + 0xc], 2
jne 0x409182
movsx eax, byte [0x415817]
push 0xa241ffff
push eax
call fcn.0040309f
add byte [0x415817], al
mov eax, dword [ebp - 0x54]
pop ecx
mov dword [ebp + 0x10], eax
pop ecx
call dword [sym.imp.MSVCRT.dll_rand]
xor edx, edx
div dword [ebp + 0x10]
cmp dword [ebp - 0x54], edx
mov dword [ebp + 0x10], edx
ja 0x409120
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xran_void_]
lea ecx, [ebp - 0x5c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Freeze_void_]
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp + 0x10]
mov al, byte [eax + ecx]
lea ecx, [ebp - 0x3c]
mov byte [ebp - 0x1c], al
push dword [ebp - 0x1c]
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__::append_unsigned_int__char_]
push 0x1219ffff
push 0x6845ffff
call fcn.00402f6c
cmp word [0x415820], si
pop ecx
pop ecx
mov dword [0x415854], eax
mov dword [ebp + 0xc], 3
je 0x409175
cmp word [0x41581c], si
je 0x409175
mov eax, edi
jmp 0x409177
xor eax, eax
add byte [0x415819], al
jmp 0x4090cb
movsx eax, word [0x41581e]
push 0x25e1ffff
push eax
call fcn.0040302e
pop ecx
mov byte [0x415819], al
mov eax, dword [ebp - 0x44]
pop ecx
mov dword [ebp + 0x10], eax
call dword [sym.imp.MSVCRT.dll_rand]
xor edx, edx
div dword [ebp + 0x10]
cmp dword [ebp - 0x44], edx
mov dword [ebp + 0x10], edx
ja 0x4091ba
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xran_void_]
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Freeze_void_]
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp + 0x10]
mov al, byte [eax + ecx]
lea ecx, [ebp - 0x3c]
mov byte [ebp - 0x20], al
push dword [ebp - 0x20]
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__::append_unsigned_int__char_]
movsx eax, word [0x415822]
push dword [0x41584c]
push eax
call fcn.00402f26
add word [0x415828], ax
pop ecx
pop ecx
mov dword [ebp + 0xc], 2
call dword [sym.imp.USER32.dll_GetActiveWindow]
add dword [0x415854], eax
jmp 0x4090cb
push 0x5601ffff
push 0x31a3ffff
call fcn.00402f6c
xor eax, eax
pop ecx
cmp byte [0x415811], al
pop ecx
mov ecx, 0x415c60
setne al
mov word [0x41582a], ax
lea eax, [ebp - 0x2c]
push eax
call fcn.0040933e
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push dword [ecx]
lea ecx, [ebp - 0x3c]
push esi
push ecx
mov ecx, 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 0x97dfffff
call dword [sym.imp.KERNEL32.dll_IsBadCodePtr]
add dword [0x415848], eax
movsx eax, byte [0x415815]
push eax
push 0x30a5ffff
call fcn.00402f6c
add word [0x41581e], ax
push 0x43
mov dword [0x415834], edi
call fcn.00404292
add esp, 0xc
call eax
add eax, dword [0x415cb8]
inc dword [0x415cb8]
push eax
call ebx
movsx eax, byte [0x415818]
push eax
push dword [0x415844]
call fcn.00402f26
mov ebx, dword [ebp + 8]
add esp, 0xc
mov byte [0x415817], al
mov al, byte [ebp - 0x3c]
push esi
mov ecx, ebx
mov byte [ebx], 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, ebx
push dword [eax]
lea eax, [ebp - 0x3c]
push esi
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 - 0x4c]
mov dword [ebp - 0x24], edi
mov byte [ebp - 4], 3
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 edi
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 2
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 edi
lea ecx, [ebp - 0x6c]
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_]
and byte [ebp - 4], 0
push edi
lea ecx, [ebp - 0x3c]
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 - 0x78]
mov eax, ebx
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret