Function at 0x40dd61
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x410a6e
call fcn.0040fcd8
sub esp, 0x28
movsx eax, byte [0x415817]
push ebx
push esi
push edi
push eax
push dword [0x41584c]
xor edi, edi
mov dword [ebp - 0x14], edi
call fcn.00402f6c
mov word [0x41582c], ax
mov al, byte [ebp + 0xf]
mov byte [ebp - 0x24], al
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], edi
push 1
pop ebx
push dword [0x415840]
mov dword [ebp - 4], ebx
push 0x7033ffff
call fcn.004030d8
add dword [0x415850], eax
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
add dword [0x415840], eax
mov ecx, dword [ebp + 0xc]
push ebx
lea eax, [ebp - 0xd]
push edi
push eax
mov byte [ebp - 0xd], 0xd
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int__unsigned_int_const]
mov esi, eax
push 0xd8c7ffff
movsx eax, word [0x415822]
push eax
call fcn.00402f26
add dword [0x415850], eax
pop ecx
pop ecx
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
cmp esi, dword [eax]
je 0x40df1f
movsx eax, word [0x415828]
push dword [0x415830]
push eax
push 0xf2e5ffff
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov byte [0x415815], al
mov ecx, dword [ebp + 0xc]
mov eax, esi
sub eax, edi
push eax
lea eax, [ebp - 0x34]
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_]
push eax
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call fcn.0040e909
push ebx
lea ecx, [ebp - 0x34]
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_]
movsx eax, word [0x415824]
push 0x1eb7ffff
push eax
call fcn.00402f6c
pop ecx
cmp esi, edi
pop ecx
mov byte [0x415810], al
je 0x40df1f
movsx eax, byte [0x415815]
push 0xa9edffff
push eax
call fcn.00403002
mov edi, dword [0x412a70]
mov dword [0x41584c], eax
pop ecx
mov al, byte [edi]
pop ecx
sub al, 0x11
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0040fc90
mov eax, esp
push edi
push eax
call fcn.0040ef68
mov edi, eax
push edi
call sub.MSVCRT.dll_strlen
mov ecx, dword [ebp + 0xc]
add esp, 0xc
inc esi
push eax
push esi
push edi
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_first_not_of_char_const___unsigned_int__unsigned_int_const]
mov edi, eax
xor eax, eax
cmp word [0x41581a], ax
setne al
add byte [0x415818], al
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
cmp edi, dword [eax]
je 0x40df1f
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
add word [0x415826], ax
mov ecx, dword [ebp + 0xc]
push ebx
lea eax, [ebp - 0xd]
push edi
push eax
mov byte [ebp - 0xd], 0xd
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int__unsigned_int_const]
movsx cx, byte [0x415815]
mov esi, eax
movsx ax, byte [0x415816]
sub eax, ecx
add word [0x415822], ax
jmp 0x40ddf8
push 0x50ffffff
push 0x647fffff
call fcn.00402eff
add word [0x41581a], ax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
pop ecx
cmp edi, dword [eax]
pop ecx
je 0x40e072
mov ax, word [0x41584c]
mov ecx, dword [ebp + 0xc]
sub ax, word [0x41581a]
push ebx
push edi
mov byte [ebp - 0xd], 0xd
add word [0x41582a], ax
lea eax, [ebp - 0xd]
push eax
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int__unsigned_int_const]
mov edi, eax
movsx eax, byte [0x415818]
push eax
movsx eax, word [0x415824]
push eax
call fcn.0040302e
mov word [0x415824], ax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
pop ecx
cmp edi, dword [eax]
pop ecx
je 0x40e072
mov ax, word [0x415822]
mov esi, dword [0x412a70]
dec ax
mov word [0x41581a], 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
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
mov ecx, dword [ebp + 0xc]
add esp, 0xc
inc edi
push eax
push edi
push esi
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_first_not_of_char_const___unsigned_int__unsigned_int_const]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
or word [0x415824], 0xffff
cmp eax, dword [ecx]
je 0x40e015
push dword [ecx]
mov ecx, dword [ebp + 0xc]
push eax
lea eax, [ebp - 0x34]
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_]
push eax
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 3
call fcn.0040e909
mov byte [ebp - 4], bl
push ebx
lea ecx, [ebp - 0x34]
jmp 0x40e054
mov al, byte [ebp + 0xf]
push 0
lea ecx, [ebp - 0x34]
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_]
mov esi, 0x415c44
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x34]
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_]
lea eax, [ebp - 0x34]
lea ecx, [ebp - 0x24]
push eax
mov byte [ebp - 4], 4
call fcn.0040e909
mov byte [ebp - 4], bl
push ebx
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_]
push dword [0x415848]
push 0x8b57ffff
call fcn.0040309f
pop ecx
mov word [0x41582a], ax
pop ecx
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov ecx, dword [ebp + 8]
mov word [0x415822], ax
lea eax, [ebp - 0x24]
push eax
call fcn.0040e86b
mov dword [ebp - 0x14], ebx
and byte [ebp - 4], 0
lea ecx, [ebp - 0x24]
call fcn.0040e8d3
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
lea esp, [ebp - 0x40]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret