Function at 0x40ea8a
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x41067b
call fcn.0040f778
sub esp, 0xa8
mov al, byte [ebp - 0xd]
push ebx
push esi
push edi
push 1
xor ebx, ebx
pop esi
lea ecx, [ebp - 0x34]
push ebx
mov dword [0x415320], esi
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_]
lea eax, [ebp - 0x58]
mov dword [ebp - 4], ebx
push eax
call fcn.004081f5
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], 1
push dword [ecx]
lea ecx, [ebp - 0x34]
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 esi
lea ecx, [ebp - 0x58]
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 dword [0x415334], ebx
jne 0x40eafe
cmp word [0x415312], bx
jne 0x40eafe
xor eax, eax
jmp 0x40eb00
mov eax, esi
add byte [0x4152fb], al
lea eax, [ebp - 0x34]
push eax
call fcn.0040814d
push dword [0x415320]
push 0x6d0fffff
call fcn.00402909
mov esi, dword [0x412b08]
add byte [0x4152fa], al
add esp, 0xc
mov al, byte [esi]
add al, 0x69
push 0xfffffffffffffffc
movzx eax, al
add eax, 3
pop edi
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
pop ecx
mov esi, eax
mov al, byte [ebp - 0xd]
pop ecx
push ebx
lea ecx, [ebp - 0x78]
mov byte [ebp - 0x78], 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 - 0x78]
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_]
cmp dword [ebp - 0x2c], ebx
mov byte [ebp - 4], 2
je 0x40f07b
movsx eax, word [0x41530a]
push eax
movsx eax, byte [0x4152fb]
push eax
call fcn.00402735
mov dword [0x41532c], eax
pop ecx
movsx eax, byte [0x4152fc]
and eax, dword [0x415334]
pop ecx
push ebx
add dword [0x415334], eax
call dword [0x415848]
mov eax, dword [ebp - 0x74]
cmp eax, ebx
jne 0x40ebc0
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]
push ebx
push ebx
push eax
call dword [0x415838]
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x38], esi
je 0x40f07b
call dword [0x41583c]
cmp eax, 0xcb
je 0x40f07b
movsx eax, word [0x415304]
movsx ecx, byte [0x4152fa]
add eax, ecx
inc esi
push esi
mov dword [0x415324], eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov esi, dword [0x412b08]
mov dword [ebp - 0x14], eax
pop ecx
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push dword [ebp - 0x38]
push dword [ebp - 0x14]
push esi
push eax
call fcn.0040ea15
pop ecx
pop ecx
push eax
call dword [0x415838]
mov al, byte [0x4152fb]
push ebx
sub al, byte [0x415306]
lea ecx, [ebp - 0x58]
mov byte [0x4152f8], al
mov al, byte [ebp - 0xd]
mov byte [ebp - 0x58], 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 [ebp - 0x14]
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea ecx, [ebp - 0x58]
push dword [ebp - 0x14]
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 al, byte [0x415328]
push dword [ebp - 0x14]
imul byte [0x41532c]
add byte [0x415301], al
mov byte [ebp - 4], 3
call fcn.0040f716
pop ecx
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov word [0x41530a], ax
mov al, byte [ebp - 0xd]
push ebx
lea ecx, [ebp - 0x68]
mov byte [ebp - 0x68], 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 [0x412b0c]
lea eax, [ebp - 0x68]
mov byte [ebp - 4], 4
mov byte [0x415301], bl
push eax
call fcn.004033db
pop ecx
test eax, eax
pop ecx
je 0x40f03f
push 0xcc65ffff
push 0x58a3ffff
call fcn.00402879
mov esi, dword [0x412b10]
add word [0x41530c], ax
pop ecx
mov al, byte [esi]
pop ecx
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
pop ecx
mov esi, eax
mov al, byte [ebp - 0xd]
pop ecx
push ebx
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_]
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x24]
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 eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 5
push dword [eax]
lea eax, [ebp - 0x34]
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov esi, dword [0x412b14]
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x24]
push eax
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__::append_char_const___unsigned_int_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [ebp - 0x24]
push dword [eax]
lea eax, [ebp - 0x34]
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov esi, dword [0x412b18]
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x24]
push eax
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__::append_char_const___unsigned_int_]
movsx ax, byte [0x415300]
dec word [0x415312]
dec eax
mov word [0x41530a], ax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.00403297
pop ecx
test eax, eax
pop ecx
je 0x40f030
movsx eax, word [0x415314]
movsx ecx, word [0x41530a]
mov esi, dword [0x412b24]
or eax, ecx
mov dword [0x415338], eax
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
pop ecx
mov esi, eax
mov al, byte [ebp - 0xd]
pop ecx
push ebx
lea ecx, [ebp - 0x48]
mov byte [ebp - 0x48], 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 - 0x48]
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 eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 6
push dword [eax]
lea eax, [ebp - 0x68]
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov esi, dword [0x412b28]
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x48]
push eax
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__::append_char_const___unsigned_int_]
push 0x2c5bffff
push 0x554fffff
call fcn.00402831
mov byte [0x4152ff], al
movsx eax, word [0x41530c]
push eax
movsx eax, word [0x41530e]
push eax
call fcn.00402735
push 0xa805ffff
push 0x2901ffff
mov dword [0x41533c], eax
mov dword [ebp - 0xb4], 0x3c
call fcn.00402831
mov esi, dword [0x412b2c]
add esp, 0x18
inc word [0x41530a]
mov dword [0x415324], eax
mov dword [ebp - 0xac], ebx
mov al, byte [esi]
add al, 0x69
movzx eax, al
add eax, 3
and eax, edi
call fcn.0040f730
mov eax, esp
push esi
push eax
call fcn.0040ea15
mov dword [ebp - 0xa8], eax
movsx eax, word [0x415312]
push eax
push 0x6fb5ffff
call fcn.00402831
add byte [0x4152fc], al
mov eax, dword [ebp - 0x54]
add esp, 0x10
cmp eax, ebx
jne 0x40ef41
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]
push 0x70d9ffff
push 0xa21fffff
mov dword [ebp - 0xa4], eax
call fcn.00402735
mov word [0x415306], ax
mov eax, dword [ebp - 0x44]
pop ecx
cmp eax, ebx
pop ecx
jne 0x40ef6a
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]
mov dword [ebp - 0xa0], eax
movsx eax, word [0x415302]
push eax
push 0x9a1fffff
call fcn.00402735
add dword [0x41531c], eax
mov dword [ebp - 0x9c], ebx
movsx eax, word [0x415302]
push eax
push dword [0x41531c]
call fcn.004028bd
add byte [0x4152f8], al
mov dword [ebp - 0x98], ebx
movsx eax, byte [0x4152fc]
push eax
push dword [0x415320]
call fcn.004027fb
add byte [0x4152fe], al
add esp, 0x18
lea eax, [ebp - 0xb4]
mov dword [ebp - 0xb0], 0x40
push eax
mov byte [0x4152fa], 1
call dword [0x4157e0]
push 0xd2c1ffff
push 0x5151ffff
call fcn.00402909
pop ecx
mov dword [0x415334], eax
pop ecx
push ebx
call dword [0x415800]
push eax
call dword [0x415804]
movsx eax, byte [0x4152fe]
movsx ecx, byte [0x415300]
sub eax, ecx
push 1
add dword [0x41532c], eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 5
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 1
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 4
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 0x907fffff
push 0x13ffffff
call fcn.004028bd
add dword [0x415318], eax
inc word [0x415304]
pop ecx
mov byte [ebp - 4], 3
pop ecx
push 1
lea ecx, [ebp - 0x68]
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 1
lea ecx, [ebp - 0x58]
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_]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
push 1
lea ecx, [ebp - 0x78]
mov word [0x415306], ax
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_]
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x34]
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 - 0xc0]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret