Function at 0x4163ca
Capabilities:
Identify system language via api

Disassembly:
mov eax, 0x42df9c
call fcn.0042c5b0
mov eax, 0x10b8
call fcn.0042c5d0
push ebx
push esi
push edi
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0041162d
add esp, 0x14
test eax, eax
je 0x416404
push 1
pop eax
jmp 0x416e00
movsx eax, word [0x437c04]
xor ebx, ebx
push eax
push 0x33f7ffff
mov dword [ebp - 0x30], ebx
call fcn.0040ffc6
pop ecx
mov byte [0x437bef], al
pop ecx
lea eax, [ebp - 0x54]
push dword [ebp + 8]
mov ecx, 0x4380b0
push eax
call fcn.0042167d
cmp dword [0x437c08], ebx
mov dword [ebp - 4], ebx
je 0x41644d
cmp dword [0x437c0c], ebx
je 0x41644d
push 1
pop edi
mov eax, edi
jmp 0x416452
push 1
xor eax, eax
pop edi
add word [0x437bfa], ax
inc byte [0x437bed]
push 0xc769ffff
push 0x4c51ffff
mov byte [ebp - 0x10c4], bl
call fcn.0040fede
cmp dword [ebp + 0xc], ebx
pop ecx
pop ecx
mov word [0x437bfc], ax
mov byte [0x437bef], 1
je 0x4164b9
mov esi, dword [0x431380]
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
push eax
push dword [ebp + 0xc]
call dword [sym.imp.MSVCRT.dll_strstr]
pop ecx
mov dword [ebp - 0x10], eax
pop ecx
jmp 0x4164bc
mov dword [ebp - 0x10], ebx
movsx eax, word [0x437bfe]
inc word [0x437bf6]
push eax
push 0x5427ffff
call fcn.0040ffe3
cmp dword [ebp - 0x10], ebx
pop ecx
pop ecx
mov byte [0x437bec], al
je 0x4166d0
mov al, byte [0x437bf6]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
dec al
mov byte [0x437bef], al
call edi
add dword [0x437c2c], eax
mov esi, dword [0x431380]
movsx eax, byte [0x437bec]
or eax, 0x12b3ffff
mov dword [0x437c24], eax
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
push eax
call sub.MSVCRT.dll_strlen
add dword [ebp - 0x10], eax
mov esi, dword [sym.imp.MSVCRT.dll_strchr]
push 0xffffff0a
push dword [ebp - 0x10]
call esi
add esp, 0xc
mov dword [ebp - 0x14], eax
call edi
mov word [0x437bf6], ax
or word [0x437bf2], 0xffff
movsx eax, byte [0x437be9]
push eax
movsx eax, byte [0x437be8]
push eax
call fcn.0040ff78
mov edi, dword [ebp - 0x10]
push 0xffffff0d
push edi
mov byte [0x437be9], al
call esi
add esp, 0x10
cmp byte [0x437beb], bl
je 0x4165a1
cmp word [0x437c02], bx
mov word [0x437bf4], 1
jne 0x4165a8
mov word [0x437bf4], bx
cmp dword [ebp - 0x14], ebx
je 0x4165b6
cmp eax, ebx
je 0x4165b9
cmp eax, dword [ebp - 0x14]
jae 0x4165b9
mov dword [ebp - 0x14], eax
push 0xb263ffff
push 0x98b7ffff
call fcn.0040ffe3
push 0x3973ffff
mov word [0x437bf6], ax
push dword [0x437c0c]
call fcn.0041004e
push 0xa1e5ffff
mov dword [0x437c20], eax
push dword [0x437c28]
call fcn.0040ff78
mov esi, dword [ebp - 0x14]
add esp, 0x18
cmp esi, ebx
mov dword [0x437c0c], eax
je 0x416679
sub esi, edi
lea eax, [ebp - 0x10c4]
push esi
push edi
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
cmp dword [0x437c2c], ebx
je 0x416630
cmp dword [0x437c0c], ebx
mov dword [0x437c0c], 1
jne 0x416636
mov dword [0x437c0c], ebx
xor eax, eax
cmp word [0x437bf4], bx
push 0x97adffff
push 0x5fd1ffff
setne al
add word [0x437c02], ax
mov eax, dword [0x437c20]
add eax, 0x4b8bffff
mov byte [ebp + esi - 0x10c4], bl
mov dword [0x437c10], eax
call fcn.00410016
add word [0x437bf8], ax
pop ecx
pop ecx
jmp 0x4166cd
push 0x6821ffff
push 0xc00fffff
call fcn.0040ff1a
add byte [0x437bec], al
lea eax, [ebp - 0x10c4]
push edi
push eax
call sub.MSVCRT.dll_strcpy
movsx eax, byte [0x437bf1]
push eax
push 0x678fffff
mov byte [0x437beb], 1
call fcn.0040ffc6
mov word [0x437bf8], ax
mov eax, dword [0x437c08]
add esp, 0x18
imul eax, eax, 0x9f2dffff
mov dword [0x437c28], eax
push 1
pop edi
mov al, byte [ebp + 0x13]
or word [0x437bf4], 0xffff
push ebx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], 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 - 0x10c4]
push eax
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea eax, [ebp - 0x10c4]
push eax
lea ecx, [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_char_const___unsigned_int_]
lea eax, [ebp - 0x28]
mov ecx, 0x4380b0
push eax
mov byte [ebp - 4], 1
push dword [ebp + 8]
call fcn.00421150
push edi
lea ecx, [ebp - 0x28]
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 al, byte [0x437c02]
push ebx
mov byte [0x437bef], al
mov al, byte [ebp + 0x13]
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], 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 - 0x10c4]
push eax
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea eax, [ebp - 0x10c4]
push eax
lea ecx, [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_char_const___unsigned_int_]
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.00423456
pop ecx
mov dword [ebp - 0x14], eax
pop ecx
mov byte [ebp - 4], bl
push edi
lea ecx, [ebp - 0x28]
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, dword [ebp - 0x50]
cmp esi, ebx
jne 0x416790
mov esi, 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 al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], 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 - 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_char_const___unsigned_int_]
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 3
push eax
call fcn.0042a00e
pop ecx
mov dword [ebp - 0x18], eax
push edi
lea ecx, [ebp - 0x28]
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_]
push dword [0x437c18]
push 0x7dfbffff
call fcn.0040fede
add word [0x437bfe], ax
mov al, byte [ebp + 0x13]
pop ecx
mov byte [ebp - 0x44], al
pop ecx
push ebx
lea ecx, [ebp - 0x44]
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 al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 4
mov byte [ebp - 0x94], 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 [0x437bef]
dec word [0x437bf6]
push 0xfb97ffff
push eax
mov byte [ebp - 4], 5
call fcn.00410092
add word [0x437bfe], ax
mov eax, dword [ebp - 0x14]
pop ecx
dec eax
pop ecx
je 0x4169c5
dec eax
je 0x416934
dec eax
jne 0x416a44
mov al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x84]
mov byte [ebp - 0x84], 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 - 0x10c4]
push eax
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea eax, [ebp - 0x10c4]
push eax
lea ecx, [ebp - 0x84]
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 esi, dword [0x430fcc]
mov byte [ebp - 4], 0xa
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
mov esi, eax
mov al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], 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 - 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_char_const___unsigned_int_]
lea eax, [ebp - 0x84]
mov byte [ebp - 4], 0xb
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0xa4]
push eax
call fcn.00423673
add esp, 0xc
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], 0xc
push dword [ecx]
lea ecx, [ebp - 0x44]
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 edi
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], 0xb
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 - 0x28]
mov byte [ebp - 4], 0xa
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 byte [ebp - 4], 5
push edi
lea ecx, [ebp - 0x84]
jmp 0x416a3e
mov esi, dword [0x431384]
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov ecx, esp
mov edx, esi
call fcn.004298e5
mov esi, eax
mov al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x64]
mov byte [ebp - 0x64], 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 - 0x64]
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 - 0x64]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0xc4]
push eax
call fcn.00423673
add esp, 0xc
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], 9
push dword [ecx]
lea ecx, [ebp - 0x44]
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 edi
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 8
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 byte [ebp - 4], 5
push edi
lea ecx, [ebp - 0x64]
jmp 0x416a3e
mov al, byte [ebp + 0x13]
push ebx
lea ecx, [ebp - 0x74]
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_]
lea eax, [ebp - 0x10c4]
push eax
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea eax, [ebp - 0x10c4]
push eax
lea ecx, [ebp - 0x74]
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 - 0x74]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0xb4]
push eax
call fcn.00423673
add esp, 0xc
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], 7
push dword [ecx]
lea ecx, [ebp - 0x44]
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 edi
lea ecx, [ebp - 0xb4]
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_]
mov byte [ebp - 4], 5
push edi
lea ecx, [ebp - 0x74]
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 [0x437c0c]
push dword [0x437c18]
call fcn.0041004e
cmp dword [ebp - 0x18], ebx
mov byte [0x437bf0], al
mov eax, dword [ebp + 0xc]
pop ecx
pop ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x34], ebx
je 0x416adb
mov esi, dword [0x43138c]
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov eax, dword [0x431388]
mov dword [ebp - 0x18], esp
mov al, byte [eax]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov dword [ebp - 0x2c], esp
lea eax, [ebp + 0x10]
mov ecx, dword [ebp - 0x18]
push edi
push eax
lea eax, [ebp - 0x34]
push eax
mov edx, esi
push dword [ebp + 0x10]
call fcn.004298e5
mov edx, dword [0x431388]
mov ecx, dword [ebp - 0x2c]
push eax
call fcn.004298e5
push eax
push dword [ebp + 0xc]
call fcn.0041d8fc
add esp, 0x1c
test eax, eax
je 0x416adb
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x10], eax
mov eax, dword [0x437c28]
push 0x417bffff
and ax, word [0x437bf8]
push dword [0x437c14]
mov word [0x437c04], ax
call fcn.0040ffc6
push dword [0x437c18]
mov byte [0x437bf1], al
push 0xa7cbffff
call fcn.0040ff4b
add esp, 0x10
cmp dword [ebp - 0x14], ebx
mov word [0x437bfe], ax
je 0x416cee
cmp dword [ebp - 0x3c], ebx
je 0x416cee
mov eax, dword [ebp - 0x40]
cmp eax, ebx
jne 0x416b39
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 + 0x10]
push ebx
push ecx
lea ecx, [ebp - 0x30]
push ecx
push dword [ebp + 0x10]
push eax
push dword [ebp - 0x10]
call fcn.0041e04c
add esp, 0x18
test eax, eax
je 0x416cee
push 0x4733ffff
push 0xb427ffff
call fcn.0041004e
mov byte [0x437bef], al
movsx eax, word [0x437bf4]
push eax
push 0x22f7ffff
call fcn.00410092
mov byte [0x437bec], al
movsx eax, word [0x437bfa]
push eax
push eax
call fcn.00410092
mov esi, dword [0x431130]
mov dword [0x437c10], eax
add esp, 0x18
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov eax, dword [0x43810c]
mov edi, 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]
cmp eax, ebx
mov ecx, esp
je 0x416bc4
mov edi, eax
push dword [ebp + 0x18]
mov edx, esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp - 0x30]
push dword [ebp + 8]
call fcn.004298e5
push eax
push edi
push dword [0x4378c4]
call fcn.0041ba29
call eax
lea ecx, [ebp - 0x2c]
mov edi, eax
call fcn.00415ba6
movsx ax, byte [0x437bf1]
push 0x3479ffff
dec eax
push dword [0x437c14]
add word [0x437bfe], ax
mov byte [ebp - 4], 0xd
call fcn.0040ff78
add byte [0x437bef], al
push 0xd4fffff
push 0x77e1ffff
call fcn.0040fede
push dword [ebp - 0x30]
mov esi, dword [sym.imp.MSVCRT.dll_free]
mov byte [0x437bf1], al
call esi
movsx eax, word [0x437bfe]
or eax, 0xdf55ffff
add esp, 0x14
add dword [0x437c14], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx eax, ax
add dword [0x437c08], eax
mov eax, dword [ebp - 0x10]
cmp eax, ebx
je 0x416c70
cmp eax, dword [ebp + 0xc]
je 0x416c70
push eax
call esi
pop ecx
mov ax, word [0x437bfa]
push 0x3e8fffff
sub word [0x437c04], ax
push 0xda67ffff
call fcn.0040ff78
push dword [0x437c24]
mov word [0x437c04], ax
push dword [0x437c10]
call fcn.00410016
add dword [0x437c08], eax
add esp, 0x10
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 5
call fcn.00415bbf
push 1
lea ecx, [ebp - 0x94]
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 1
lea ecx, [ebp - 0x44]
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 - 0x54]
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, edi
jmp 0x416e00
xor eax, eax
cmp word [0x437bf4], bx
push 0xc943ffff
setne al
mov word [0x437bfc], ax
movsx eax, byte [0x437beb]
push eax
call fcn.0040ff1a
mov byte [0x437bef], al
movsx eax, word [0x437c00]
push eax
push 0xbc3ffff
call fcn.0040fede
mov esi, dword [0x431130]
add word [0x437c02], ax
add esp, 0x10
mov al, byte [esi]
add al, 0x16
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042c5d0
mov eax, dword [0x43810c]
mov ecx, esp
cmp eax, ebx
jne 0x416d5a
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 dword [ebp + 0x18]
mov edx, esi
mov dword [ebp - 0x14], eax
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp - 0x10]
push dword [ebp + 8]
call fcn.004298e5
push eax
push dword [ebp - 0x14]
push dword [0x4378c4]
call fcn.0041ba29
call eax
lea ecx, [ebp - 0x18]
mov esi, eax
call fcn.00415ba6
push 0x4fa9ffff
push 0x96fffff
mov byte [ebp - 4], 0xe
call fcn.00410092
mov byte [0x437bea], al
mov eax, dword [ebp - 0x10]
pop ecx
cmp eax, ebx
pop ecx
mov dword [0x437c10], 0xfeffffff
je 0x416dc6
cmp eax, dword [ebp + 0xc]
je 0x416dc6
push eax
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 5
call fcn.00415bbf
push edi
lea ecx, [ebp - 0x94]
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 edi
lea ecx, [ebp - 0x44]
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 edi
lea ecx, [ebp - 0x54]
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, esi
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x10d0]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret 0x14