Function at 0x429afe
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x43190c
call fcn.0042f2d0
sub esp, 0xdc
push ebx
push esi
xor ebx, ebx
push edi
mov dword [ebp - 0x64], ebx
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp word [0x43abd2], bx
mov dword [0x43abfc], eax
jne 0x429b38
cmp dword [0x43abf0], ebx
mov byte [0x43abc8], bl
je 0x429b3f
mov byte [0x43abc8], 1
mov esi, dword [0x433ea8]
mov al, byte [esi]
add al, 0x76
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f2f0
mov ecx, esp
mov edx, esi
call fcn.0042b788
mov esi, eax
mov al, byte [ebp + 0x17]
push ebx
lea ecx, [ebp - 0x5c]
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 esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
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 1
pop edi
push 0x53b3ffff
push 0x205ffff
mov dword [ebp - 4], edi
call fcn.004117ef
add word [0x43abdc], ax
push 0x14ebffff
push 0x787ffff
call fcn.004116b5
mov esi, dword [ebp + 0x14]
add dword [0x43abe8], eax
add esp, 0x10
lea ecx, [ebp - 0x74]
mov al, byte [esi]
push ebx
mov byte [ebp - 0x74], 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]
lea ecx, [ebp - 0x74]
push dword [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_]
movsx eax, byte [0x43abc9]
imul eax, eax, 0xd8bbffff
push ebx
push 0x1e
mov byte [ebp - 4], 2
mov dword [0x43abf8], eax
call fcn.00415e1f
pop ecx
call eax
mov dword [ebp - 0x60], eax
mov al, byte [0x43abe0]
and al, byte [0x43abde]
add byte [0x43abcf], al
cmp word [0x43abd8], bx
je 0x429c25
cmp byte [0x43abca], bl
je 0x429c25
mov eax, edi
jmp 0x429c27
xor eax, eax
add byte [0x43abca], al
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov dword [0x43abfc], eax
mov dword [ebp - 0x1c], ebx
movsx eax, word [0x43abe4]
push eax
push 0xb8b1ffff
mov byte [ebp - 4], 3
call fcn.00411738
mov dword [0x43abe8], eax
mov dword [ebp - 0x14], ebx
push 0x3409ffff
push 0x9263ffff
mov byte [ebp - 4], 4
call fcn.00411706
mov dword [0x43ac00], eax
push 0x8243ffff
movsx eax, word [0x43abd8]
push eax
call fcn.004118af
add byte [0x43abc9], al
push 0x4c13ffff
push 0x6c47ffff
call fcn.00411775
add word [0x43abda], ax
push 0x28
pop esi
lea eax, [ebp - 0xd8]
push esi
push ebx
push eax
call sub.MSVCRT.dll_memset
add esp, 0x2c
mov dword [ebp - 0xd8], esi
call dword [sym.imp.USER32.dll_GetForegroundWindow]
add dword [0x43ac04], eax
mov al, byte [ebp + 0x17]
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x2c], al
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], ebx
mov ax, word [0x43abd4]
push 0x7ca1ffff
add ax, word [0x43abd2]
mov byte [ebp - 4], 5
mov word [0x43abe4], ax
movsx eax, word [0x43abde]
push eax
call fcn.00411864
mov word [0x43abd8], ax
pop ecx
movsx eax, byte [0x43abcc]
add eax, dword [0x43abf8]
pop ecx
mov dword [0x43ac0c], eax
lea eax, [ebp - 0x1c]
push eax
push 0x434764
push edi
push ebx
push str._J7_
push 0x1c
call fcn.00415e1f
pop ecx
call eax
test eax, eax
jl 0x42a1d7
inc word [0x43abd8]
push 0x2f43ffff
push dword [0x43abf4]
call fcn.004117ef
add dword [0x43ac00], eax
mov eax, dword [ebp - 0x1c]
pop ecx
lea edx, [ebp - 0x14]
pop ecx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x1c]
test eax, eax
jl 0x42a1d7
movsx eax, byte [0x43abcd]
push eax
movsx eax, byte [0x43abcc]
push eax
call fcn.004116b5
mov dword [0x43abf8], eax
push 0x97ffff
movsx eax, word [0x43abdc]
push eax
call fcn.004117b3
add dword [0x43abec], eax
or word [0x43abd4], 0xffff
add esp, 0x10
mov dword [ebp - 0x10], ebx
inc dword [0x43ac0c]
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x18]
push edx
lea edx, [ebp - 0xd8]
mov ecx, dword [eax]
push edx
push edi
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x42a1ca
cmp dword [ebp - 0x18], ebx
je 0x42a1ca
push dword [ebp - 0x10]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov esi, dword [ebp - 0xd4]
mov dword [ebp - 0x10], ebx
push esi
mov dword [0x43abf4], edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push esi
lea ecx, [ebp - 0x10]
call fcn.00406161
push 0x90e3ffff
push 0x71f7ffff
call fcn.004117ef
cmp dword [ebp - 0x10], ebx
pop ecx
pop ecx
mov dword [0x43abf0], eax
mov word [0x43abdc], bx
jne 0x429e32
xor eax, eax
jmp 0x429e3b
push dword [ebp - 0x10]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
inc eax
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
or word [0x43abd6], 0xffff
cmp dword [ebp - 0x10], ebx
mov esi, eax
mov al, byte [0x43abe8]
pop ecx
mov dword [0x43abf8], 0xfa89ffff
mov byte [0x43abcf], al
jne 0x429e6a
xor eax, eax
jmp 0x429e73
push dword [ebp - 0x10]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
push ebx
inc eax
push ebx
push eax
push esi
push 0xffffffffffffffff
push dword [ebp - 0x10]
push ebx
push ebx
push 0x61
call fcn.00415e1f
pop ecx
call eax
movsx eax, word [0x43abe0]
push eax
push dword [0x43ac08]
call fcn.00411738
mov byte [0x43abd0], al
push 0x1577ffff
movsx eax, byte [0x43abce]
push eax
call fcn.00411906
add byte [0x43abd1], al
add esp, 0x10
movsx eax, byte [0x43abca]
imul eax, eax, 0xaeedffff
mov dword [0x43ac04], eax
mov al, byte [ebp + 0x17]
push ebx
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_]
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x3c]
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, word [0x43abd4]
push eax
push 0x9ebfffff
mov byte [ebp - 4], 7
call fcn.004117b3
add byte [0x43abd0], al
push esi
call fcn.0042f224
xor eax, eax
cmp byte [0x43abcb], bl
push 0x7325ffff
push dword [0x43abec]
setne al
mov word [0x43abd6], ax
call fcn.00411864
mov esi, dword [0x433ea8]
add dword [0x43ac04], eax
add esp, 0x14
mov al, byte [esi]
add al, 0x76
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f2f0
mov ecx, esp
mov edx, esi
call fcn.0042b788
mov dword [ebp + 0x14], eax
push 7
lea eax, [ebp - 0xe8]
push ebx
push eax
lea ecx, [ebp - 0x3c]
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_]
mov esi, eax
push dword [ebp + 0x14]
mov byte [ebp - 4], 8
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push dword [ebp + 0x14]
mov ecx, esi
push dword [esi + 8]
push ebx
call dword [sym.imp.MSVCP60.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_unsigned_int__unsigned_int__char_const___unsigned_int_const]
cmp eax, ebx
push edi
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 7
sete byte [ebp + 0x17]
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 byte [ebp + 0x17], bl
je 0x42a1b7
push 0x3c
lea eax, [ebp - 0xb0]
pop esi
push esi
push ebx
push eax
call sub.MSVCRT.dll_memset
movsx ax, byte [0x43abd0]
sub ax, word [0x43abde]
mov dword [ebp - 0xb0], esi
mov dword [ebp - 0x9c], edi
mov word [0x43abda], ax
movsx eax, word [0x43abdc]
push eax
push 0xf8fdffff
call fcn.0041181a
push 0x8b75ffff
push 0xd6b5ffff
mov byte [0x43abc8], al
mov dword [ebp - 0x80], edi
call fcn.00411706
add word [0x43abdc], ax
push 0xf1e1ffff
push dword [0x43abe8]
call fcn.00411906
mov word [0x43abd2], ax
mov al, byte [0x43abe8]
sub al, byte [0x43abe2]
push 0x161dffff
push dword [0x43ac0c]
mov dword [ebp - 0x90], edi
add byte [0x43abca], al
mov dword [ebp - 0x88], edi
call fcn.004118af
add word [0x43abd6], ax
push 0xed33ffff
push dword [0x43abfc]
call fcn.00411775
mov byte [0x43abcd], al
mov eax, dword [ebp - 0x38]
add esp, 0x34
cmp eax, ebx
mov dword [ebp - 0x78], edi
jne 0x42a084
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]
lea ecx, [ebp - 0xb0]
push ecx
push ebx
push dword [ebp - 0x34]
push eax
push 5
call fcn.00415e1f
pop ecx
call eax
push 0xf56bffff
push dword [0x43abec]
call fcn.004117ef
add dword [0x43ac00], eax
mov al, byte [ebp + 0x17]
mov esi, dword [ebp - 0x84]
pop ecx
pop ecx
mov byte [ebp - 0x4c], al
push ebx
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__::_Tidy_bool_]
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
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_]
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 - 0x4c]
mov byte [ebp - 4], 9
push dword [eax]
push dword [ebp - 0x80]
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__::erase_unsigned_int__unsigned_int_]
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_IsCharAlphaA]
add word [0x43abe4], ax
xor eax, eax
cmp dword [0x43abfc], ebx
push 0x441ffff
push 0xedd7ffff
setne al
add dword [0x43ac04], eax
call fcn.00411706
add word [0x43abd4], 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
pop ecx
push dword [eax]
lea eax, [ebp - 0x4c]
lea ecx, [ebp - 0x3c]
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 esi, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x44]
xor eax, eax
cmp word [0x43abda], bx
setne al
add byte [0x43abcf], al
or byte [0x43abc8], 0xff
mov eax, dword [esi + 8]
cmp ecx, eax
jbe 0x42a171
sub ecx, eax
push ecx
push ebx
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__::erase_unsigned_int__unsigned_int_]
push esi
lea ecx, [ebp - 0x4c]
mov byte [0x43abd1], 1
call dword [sym.imp.MSVCP60.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__const]
test eax, eax
jne 0x42a192
lea eax, [ebp - 0x3c]
lea ecx, [ebp - 0x2c]
push eax
call fcn.0041aba9
push 0x990dffff
push 0x9df5ffff
call fcn.004116b5
add byte [0x43abcd], al
pop ecx
pop ecx
mov byte [ebp - 4], 7
push edi
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__::_Tidy_bool_]
push edi
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 6
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x429dbd
push dword [ebp - 0x10]
mov byte [ebp - 4], 5
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
xor eax, eax
cmp word [0x43abe0], bx
setne al
mov dword [0x43abfc], eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [0x43ac04], eax
mov ecx, dword [ebp - 0x28]
movsx eax, byte [0x43abcc]
imul eax, eax, 0x38efffff
cmp ecx, ebx
mov dword [0x43abfc], eax
je 0x42a28b
mov edx, dword [ebp - 0x24]
sub edx, ecx
sar edx, 4
je 0x42a28b
sub byte [0x43abd0], al
movsx ax, byte [0x43abc9]
add eax, dword [0x43abf0]
cmp ecx, dword [ebp - 0x24]
mov word [0x43abe2], ax
je 0x42a242
push ebx
push dword [ebp - 0x24]
push ecx
call fcn.0042a991
add esp, 0xc
movsx eax, byte [0x43abcb]
movsx ecx, word [0x43abd4]
imul eax, ecx
mov dword [0x43ac00], eax
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 - 0x74]
push dword [eax]
push ebx
push dword [ebp - 0x28]
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_]
movsx eax, byte [0x43abce]
imul eax, eax, 0xb435ffff
mov dword [0x43abec], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
add word [0x43abde], ax
add dword [0x43abf4], 0x41ffff
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 4
call fcn.0041ab73
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x42a2b2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x42a2c3
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push 0x6ff3ffff
push 0x6bb5ffff
call fcn.004118af
mov dword [0x43ac0c], eax
movsx eax, byte [0x43abce]
push eax
push 0x304dffff
call fcn.004117b3
add dword [0x43abe8], eax
add esp, 0x10
cmp dword [ebp - 0x60], 0x80010106
je 0x42a305
push 0x20
call fcn.00415e1f
pop ecx
call eax
movsx eax, word [0x43abd2]
push 0x585bffff
push eax
call fcn.00411775
add byte [0x43abcc], al
push 0x5eafffff
movsx eax, word [0x43abd4]
push eax
call fcn.004117b3
mov byte [0x43abc9], al
add esp, 0x10
xor eax, eax
cmp word [0x43abde], bx
lea ecx, [ebp - 0x5c]
setne al
mov dword [0x43ac0c], eax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
push dword [eax]
push ebx
push dword [ebp + 0xc]
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 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 - 0x5c]
push dword [eax]
lea eax, [ebp - 0x74]
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_]
movsx eax, word [0x43abe2]
push eax
push 0x8d73ffff
call fcn.0041181a
add dword [0x43abec], eax
movsx eax, byte [0x43abd1]
push eax
movsx eax, word [0x43abd4]
push eax
call fcn.004117b3
add dword [0x43ac04], eax
add esp, 0x10
movsx eax, word [0x43abd8]
push eax
movsx eax, word [0x43abe2]
push eax
push 0x2df7ffff
call dword [sym.imp.KERNEL32.dll_MulDiv]
add word [0x43abde], ax
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x5c]
push ebx
mov ecx, esi
mov byte [esi], 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, esi
push dword [eax]
lea eax, [ebp - 0x5c]
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 dword [ebp - 0x64], edi
push edi
lea ecx, [ebp - 0x74]
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_]
push edi
lea ecx, [ebp - 0x5c]
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_]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xf4]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret