Function at 0x40f490
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x429a63
mov eax, dword fs:[0]
push eax
sub esp, 0xf4
mov eax, dword [0x43bca0]
xor eax, esp
mov dword [esp + 0xf0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x43bca0]
xor eax, esp
push eax
lea eax, [esp + 0x108]
mov dword fs:[0], eax
mov esi, ecx
xor ebp, ebp
push esi
lea ecx, [esp + 0x7c]
mov dword [esp + 0x34], esi
mov dword [esp + 0x1c], ebp
call fcn.0040ff70
push eax
mov ecx, esi
mov dword [esp + 0x114], ebp
call dword [0x42c508]
lea ecx, [esp + 0x78]
mov dword [esp + 0x110], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xcc]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
lea ecx, [esp + 0xe8]
mov dword [esp + 0x110], 1
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
mov bl, 3
push 0x42f1c0
lea ecx, [esp + 0x7c]
mov byte [esp + 0x114], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea eax, [esp + 0x20]
push eax
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x54], esp
push esi
mov byte [esp + 0x134], 4
lea edi, [esp + 0x9c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
call fcn.0040fab0
mov esi, eax
mov ecx, edi
mov dword [esp + 0x34], esi
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
test esi, esi
jle 0x40f9c2
mov dword [esp + 0x1c], ebp
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40f5be
mov ecx, dword [esp + 0x28]
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x40f5c8
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
lea eax, [ecx + esi]
push eax
lea ecx, [esp + 0x98]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push 0
mov bl, 5
push 0x42f1c4
lea ecx, [esp + 0x9c]
mov byte [esp + 0x118], bl
call dword [sym.imp.MSVCP80.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int_const]
mov edi, eax
test edi, edi
jne 0x40f65d
mov edx, dword [esp + 0xa8]
push edx
push 1
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP80.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, [esp + 0x98]
mov byte [esp + 0x114], 6
call dword [0x42c508]
lea ecx, [esp + 0x38]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push 0
push 0x42f1c4
lea ecx, [esp + 0x9c]
call dword [sym.imp.MSVCP80.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int_const]
mov edi, eax
test edi, edi
je 0x40f600
jle 0x40f93a
push edi
push 0
lea ecx, [esp + 0xb8]
push ecx
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP80.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 0x42f1c4
lea ecx, [esp + 0x7c]
mov byte [esp + 0x114], 7
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea ecx, [esp + 0x78]
lea ebx, [esp + 0xb0]
lea esi, [esp + 0x38]
mov byte [esp + 0x110], 8
call fcn.004101b0
push eax
mov ecx, ebx
mov byte [esp + 0x114], 9
call dword [0x42c508]
mov ecx, esi
mov byte [esp + 0x110], 8
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov bl, 7
lea ecx, [esp + 0x78]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push 0x42f1cc
lea ecx, [esp + 0xb4]
call dword [sym.imp.MSVCP80.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_char_const__const]
test eax, eax
jne 0x40f7d2
mov edx, dword [esp + 0xa8]
push edx
add edi, 1
push edi
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP80.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, [esp + 0xec]
mov byte [esp + 0x114], 0xa
call dword [0x42c508]
lea ecx, [esp + 0x38]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push 0x42f1c4
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea ecx, [esp + 0x38]
lea ebx, [esp + 0xe8]
lea esi, [esp + 0x5c]
mov byte [esp + 0x110], 0xb
call fcn.004101b0
push eax
mov ecx, ebx
mov byte [esp + 0x114], 0xc
call dword [0x42c508]
mov ecx, esi
mov byte [esp + 0x110], 0xb
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov bl, 7
lea ecx, [esp + 0x38]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x78]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0xf0]
push eax
mov byte [esp + 0x11c], 0xd
call fcn.0040fc10
mov ecx, dword [esp + 0x54]
jmp 0x40f8bd
push str.proxy
lea ecx, [esp + 0xb4]
call dword [sym.imp.MSVCP80.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_char_const__const]
test eax, eax
jne 0x40f8dc
mov edx, dword [esp + 0xa8]
push edx
add edi, 1
push edi
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP80.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, [esp + 0xd0]
mov byte [esp + 0x114], 0xe
call dword [0x42c508]
lea ecx, [esp + 0x5c]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push 0x42f1c4
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea ecx, [esp + 0x38]
lea ebx, [esp + 0xcc]
lea esi, [esp + 0x5c]
mov byte [esp + 0x110], 0xf
call fcn.004101b0
push eax
mov ecx, ebx
mov byte [esp + 0x114], 0x10
call dword [0x42c508]
mov ecx, esi
mov byte [esp + 0x110], 0xf
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov bl, 7
lea ecx, [esp + 0x38]
mov byte [esp + 0x110], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x78]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0xd4]
push eax
mov byte [esp + 0x11c], 0x11
call fcn.0040fc10
mov ecx, dword [esp + 0x58]
push ecx
lea ecx, [esp + 0x7c]
call fcn.0040fea0
test al, al
lea ecx, [esp + 0x78]
mov byte [esp + 0x110], bl
jne 0x40f91d
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xb0]
mov byte [esp + 0x110], 5
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x94]
mov byte [esp + 0x110], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
add dword [esp + 0x1c], 0x1c
add ebp, 1
cmp ebp, dword [esp + 0x34]
jl 0x40f599
jmp 0x40f9c2
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xb0]
mov byte [esp + 0x110], 5
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
jmp 0x40f9ad
push 0x42f1c4
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea ecx, [esp + 0x38]
lea ebx, [esp + 0x94]
lea esi, [esp + 0x5c]
mov byte [esp + 0x110], 0x12
call fcn.004101b0
push str.direct
mov ecx, eax
mov byte [esp + 0x114], 0x13
call dword [sym.imp.MSVCP80.dll_public:_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::compare_char_const__const]
test eax, eax
mov ecx, esi
sete bl
mov byte [esp + 0x110], 0x12
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x38]
mov byte [esp + 0x110], 5
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
test bl, bl
je 0x40f9ad
mov dword [esp + 0x18], 0
lea ecx, [esp + 0x94]
mov byte [esp + 0x110], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
xor ebx, ebx
cmp dword [esp + 0xe0], ebx
je 0x40f9e9
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0xcc]
push edx
call dword [0x42c508]
mov dword [esp + 0x18], 3
jmp 0x40fa0c
cmp dword [esp + 0xfc], ebx
je 0x40fa0c
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0xe8]
push eax
call dword [0x42c508]
mov dword [esp + 0x18], 1
mov byte [esp + 0x110], 2
mov esi, dword [esp + 0x24]
cmp esi, ebx
je 0x40fa40
mov edi, dword [esp + 0x28]
cmp esi, edi
je 0x40fa37
mov ecx, esi
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
add esi, 0x1c
cmp esi, edi
jne 0x40fa24
mov esi, dword [esp + 0x24]
push esi
call sub.MFC80U.DLL_Ordinal_764
add esp, 4
lea ecx, [esp + 0xe8]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x110], 1
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xcc]
mov dword [esp + 0x110], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x108]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.00426052
add esp, 0x100
ret