Function at 0x40c886
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x410489
call fcn.0040f778
sub esp, 0x5b4
push ebx
push esi
push edi
xor esi, esi
push dword [0x415330]
mov dword [ebp - 0x10], esi
push 0x6789ffff
call fcn.00402909
pop ecx
mov word [0x415306], ax
mov al, byte [ebp + 0x1b]
pop ecx
push esi
lea ecx, [ebp - 0x20]
mov byte [ebp - 0x20], 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_]
movsx eax, byte [0x4152fd]
push 1
pop edi
push eax
push 0xe04bffff
mov dword [ebp - 4], edi
call fcn.00402735
add word [0x415310], ax
mov eax, dword [ebp + 0x28]
pop ecx
cmp eax, esi
pop ecx
je 0x40c8f0
mov dword [eax], esi
movsx eax, byte [0x4152fd]
push dword [0x415328]
push eax
call fcn.00402735
push dword [0x415318]
mov word [0x415308], ax
push 0xcecfffff
call fcn.004026b7
add byte [0x4152fd], al
add esp, 0x10
lea eax, [ebp - 0x1c0]
push eax
push 0x101
call dword [0x415890]
cmp dword [ebp + 0x18], esi
mov word [0x415310], di
jne 0x40c9b6
push 0x3cd5ffff
push dword [0x415324]
call fcn.004027fb
mov byte [0x4152fa], al
mov eax, dword [ebp + 0xc]
pop ecx
mov eax, dword [eax + 4]
pop ecx
cmp eax, esi
jne 0x40c966
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 eax
call dword [0x415898]
mov esi, eax
movsx eax, byte [0x4152f9]
push eax
movsx eax, byte [0x415301]
push eax
call fcn.004026b7
add dword [0x415330], eax
pop ecx
test esi, esi
pop ecx
je 0x40c99e
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
test eax, eax
je 0x40c99e
mov eax, dword [eax]
mov dword [ebp + 0x18], eax
push 0x776bffff
push 0x169ffff
call fcn.004027d2
pop ecx
mov byte [0x4152fc], al
pop ecx
xor esi, esi
or ebx, 0xffffffff
cmp dword [ebp + 0x18], esi
mov word [0x415308], bx
je 0x40cd90
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
add dword [0x415328], eax
push 6
push edi
push 2
call dword [0x41589c]
mov dword [ebp + 0xc], eax
movsx eax, byte [0x4152fc]
push eax
push 0x14bffff
call fcn.00402831
cmp dword [ebp + 0xc], ebx
pop ecx
pop ecx
mov byte [0x4152f8], al
je 0x40cd90
movsx eax, byte [0x4152fa]
push eax
movsx eax, word [0x415308]
push eax
call fcn.00402794
cmp dword [ebp + 0x1c], ebx
pop ecx
pop ecx
mov dword [0x41531c], eax
push 4
mov esi, 0xffff
pop edi
je 0x40ca45
lea eax, [ebp + 0x1c]
push edi
push eax
push 0x1005
push esi
push dword [ebp + 0xc]
call dword [0x4158a0]
movsx eax, byte [0x4152fa]
and eax, 0x3bfbffff
add dword [0x41532c], eax
cmp dword [ebp + 0x20], ebx
je 0x40ca70
lea eax, [ebp + 0x20]
push edi
push eax
push 0x1006
push esi
push dword [ebp + 0xc]
call dword [0x4158a0]
movsx eax, byte [0x4152fd]
push 0x7d9fffff
push eax
call fcn.004026b7
add byte [0x415300], al
push 0x169dffff
push 0xd913ffff
call fcn.004027d2
mov word [0x415314], ax
mov eax, dword [ebp + 0x18]
inc byte [0x4152f8]
mov dword [ebp - 0x2c], eax
movsx eax, word [0x415302]
push eax
push 0xe2d5ffff
mov word [ebp - 0x30], 2
call fcn.00402879
mov byte [0x4152ff], al
mov eax, dword [ebp + 0x10]
mov cl, al
add esp, 0x18
and cx, 0xff
add dword [0x415334], 0x34fe0000
shl ecx, 8
sar eax, 8
add ecx, eax
lea eax, [ebp - 0x30]
push 0x10
push eax
push dword [ebp + 0xc]
mov word [ebp - 0x2e], cx
call dword [0x4158a4]
cmp eax, ebx
je 0x40cd51
movsx eax, byte [0x4152fa]
add dword [0x415330], 0x45d7ffff
add word [0x415308], 0xfffe
push eax
mov dword [ebp + 0x18], edi
push dword [0x415330]
call fcn.00402735
add byte [0x4152ff], al
pop ecx
pop ecx
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp + 0x10]
push eax
push 0x2003
push esi
push dword [ebp + 0xc]
call dword [0x4158a8]
cmp eax, ebx
je 0x40cd51
push dword [0x41531c]
push 0x53d1ffff
call fcn.00402909
add word [0x415310], ax
mov esi, dword [ebp + 0x14]
xor edi, edi
xor eax, eax
cmp word [0x41530c], di
pop ecx
pop ecx
setne al
mov word [0x415314], ax
cmp dword [esi + 8], edi
jbe 0x40cc28
movsx eax, word [0x415302]
mov ebx, dword [ebp + 0x10]
push eax
push dword [0x415334]
mov dword [0x41533c], 0xdf2c0001
call fcn.00402831
add byte [0x4152f9], al
mov eax, dword [esi + 8]
pop ecx
pop ecx
mov ecx, eax
sub ecx, edi
cmp ebx, ecx
jbe 0x40cbbf
sub eax, edi
mov ebx, eax
push 0x6e0dffff
push 0x16d9ffff
call fcn.004026ee
mov byte [0x4152f9], al
mov eax, dword [esi + 4]
pop ecx
test eax, eax
pop ecx
jne 0x40cbe1
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 0
add eax, edi
push ebx
push eax
push dword [ebp + 0xc]
call dword [0x4158ac]
cmp eax, 0xffffffff
je 0x40cc25
movsx eax, byte [0x4152fd]
push 0x8f15ffff
push eax
call fcn.004027d2
pop ecx
mov word [0x415306], ax
pop ecx
add edi, ebx
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov byte [0x4152f8], al
cmp edi, dword [esi + 8]
jb 0x40cb88
or ebx, 0xffffffff
movsx eax, byte [0x4152fb]
and eax, 0xda8bffff
mov dword [0x415320], eax
cmp edi, dword [esi + 8]
jne 0x40cd51
push 0x5ac5ffff
push 0x2e05ffff
call fcn.004027fb
mov word [0x415312], ax
mov al, byte [0x41530e]
sub byte [0x415300], al
push 0xf82bffff
movsx eax, byte [0x4152fd]
push eax
call fcn.004026b7
mov edi, dword [ebp + 0x24]
add esp, 0x10
add word [0x415314], ax
movsx eax, byte [0x4152f8]
push eax
push 0xe11ffff
call fcn.004027d2
add byte [0x4152ff], al
pop ecx
pop ecx
lea eax, [ebp - 0x5c0]
push 0
push 0x400
push eax
push dword [ebp + 0xc]
call dword [0x4158b0]
mov esi, eax
movsx eax, byte [0x4152fb]
and eax, 0x6e41ffff
test esi, esi
mov dword [0x415328], eax
jle 0x40cd40
push 0xf9b7ffff
call dword [sym.imp.USER32.dll_IsWindow]
mov dword [0x415318], eax
lea eax, [ebp - 0x5c0]
push esi
push eax
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_]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add byte [0x4152fb], al
cmp edi, ebx
je 0x40cc81
movsx eax, byte [0x4152fe]
push eax
movsx eax, byte [0x4152fd]
push eax
call fcn.00402735
cmp dword [ebp - 0x18], edi
pop ecx
pop ecx
mov byte [0x4152f9], al
jb 0x40cc81
mov eax, dword [ebp + 0x28]
mov word [0x415308], bx
test eax, eax
je 0x40cd30
or dword [eax], 1
mov al, byte [0x415330]
sub al, byte [0x4152fd]
mov byte [0x4152fc], al
xor eax, eax
cmp byte [0x4152fe], al
setne al
add dword [0x41532c], eax
movsx eax, byte [0x4152fa]
push eax
push 0xead9ffff
call fcn.004027fb
add word [0x41530c], ax
pop ecx
pop ecx
push dword [ebp + 0xc]
call dword [0x4158b4]
push dword [0x41533c]
push 0xfbd7ffff
call fcn.004027fb
add byte [0x4152fb], al
pop ecx
pop ecx
push 1
pop edi
movsx eax, word [0x415302]
sub eax, 0x463a0001
mov dword [0x41532c], eax
call dword [0x415894]
movsx eax, word [0x415310]
push 0xa693ffff
push eax
call fcn.004028bd
add dword [0x41533c], eax
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x20]
pop ecx
pop ecx
mov byte [esi], al
push 0
mov ecx, esi
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, esi
push dword [eax]
lea eax, [ebp - 0x20]
push 0
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 dword [ebp - 0x10], edi
and byte [ebp - 4], 0
push edi
lea ecx, [ebp - 0x20]
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]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret