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

Disassembly:
push 0xffffffffffffffff
push 0x570f70
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push ebp
push esi
push edi
mov eax, dword [0x59ad00]
xor eax, esp
push eax
lea eax, [esp + 0x64]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x18], ebx
mov esi, dword [esp + 0x74]
mov eax, dword [esi]
cmp eax, dword [esi + 4]
je 0x40f87d
lea ebp, [ebx + 0xa0]
mov ecx, ebp
call fcn.00406720
mov eax, dword [esi + 4]
sub eax, dword [esi]
mov ecx, dword [ebp]
sar eax, 2
lea esi, [eax + eax]
cmp esi, dword [ecx + 0x1c]
jbe 0x40efca
push esi
call fcn.0040d090
mov ecx, dword [ebp + 0x18]
push esi
call fcn.0040a6a0
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x10]
push eax
lea ecx, [ebp + 8]
call fcn.00404e80
lea ecx, [ebx + 0x1d8]
push 0
call fcn.00430180
mov eax, dword [esp + 0x74]
mov edi, dword [eax]
mov eax, dword [eax + 4]
cmp edi, eax
je 0x40f01b
mov esi, dword [edi]
mov eax, dword [ebx + 0x220]
lea esi, [esi + esi*2]
add esi, esi
mov ecx, dword [eax + esi*8 + 4]
mov eax, dword [eax + esi*8]
push ecx
push eax
mov ecx, ebp
call fcn.0040e120
mov eax, dword [ebx + 0x220]
mov ecx, dword [esp + 0x74]
add edi, 4
mov dword [eax + esi*8 + 0x2c], 1
cmp edi, dword [ecx + 4]
jne 0x40efe4
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 4]
mov esi, dword [eax]
cmp esi, ecx
je 0x40f04e
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call dword [sym.imp.MSVCR100.dll_memmove]
mov edx, dword [esp + 0x80]
add esp, 0xc
add edi, esi
mov dword [edx + 4], edi
xor edi, edi
cmp dword [ebx + 0xa4], edi
jbe 0x40f0c3
jmp 0x40f060
mov eax, dword [ebp + 8]
mov ecx, dword [ebp]
mov edx, dword [ecx + 0x1c]
lea esi, [eax + edi*4]
mov eax, dword [esi]
cmp edx, 1
jb 0x40f212
cmp eax, edx
jae 0x40f212
xor edx, edx
div dword [ecx + 0x10]
mov ebx, dword [ecx]
shl edx, 4
add edx, dword [ebx + eax*4]
mov eax, dword [esi]
mov ebx, dword [edx + 0xc]
mov edx, dword [ecx + 0x1c]
cmp edx, 1
jb 0x40f1e4
cmp eax, edx
jae 0x40f1e4
xor edx, edx
div dword [ecx + 0x10]
mov ecx, dword [ecx]
inc edi
shl edx, 4
add edx, dword [ecx + eax*4]
mov dword [edx], ebx
mov edx, dword [esp + 0x18]
cmp edi, dword [edx + 0xa4]
jb 0x40f060
mov ebx, edx
xor ecx, ecx
cmp dword [ebx + 0xbc], ecx
jbe 0x40f105
mov esi, dword [ebx + 0xb8]
mov eax, dword [esi + 0x1c]
cmp eax, 1
jb 0x40f240
cmp ecx, eax
jae 0x40f240
xor edx, edx
mov eax, ecx
div dword [esi + 0x10]
mov esi, dword [esi]
inc ecx
shl edx, 4
add edx, dword [esi + eax*4]
mov dword [edx], 0
cmp ecx, dword [ebx + 0xbc]
jb 0x40f0cd
xor edi, edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
xor ebx, ebx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x18]
mov byte [esp + 0x6c], 1
mov dword [esp + 0x1c], edi
cmp dword [eax + 0xa4], edi
jbe 0x40f561
mov edi, edi
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx + edx*4]
mov ecx, dword [ebp]
mov edx, dword [ecx + 0x1c]
cmp edx, 1
jb 0x40f39c
cmp eax, edx
jae 0x40f39c
xor edx, edx
div dword [ecx + 0x10]
mov ecx, dword [ecx]
shl edx, 4
add edx, dword [ecx + eax*4]
mov esi, edx
cmp dword [esi], 1
mov dword [esp + 0x20], esi
jne 0x40f2f3
lea edx, [esp + 0x20]
cmp edx, edi
mov edx, dword [esp + 0x44]
jae 0x40f297
lea eax, [esp + 0x20]
cmp edx, eax
ja 0x40f297
mov esi, eax
sub esi, edx
sar esi, 2
cmp edi, ebx
jne 0x40f28c
mov eax, edi
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
mov ecx, ebx
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f28c
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x40f26e
xor ecx, ecx
jmp 0x40f270
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x24], str.invalid_index_for_block_vector::at__
call dword [sym.imp.MSVCR100.dll_public:_void___thiscall_std::exception::constructor_char_const__const_const__]
push 0x588ac4
lea ecx, [esp + 0x3c]
push ecx
mov dword [esp + 0x40], vtable.std::invalid_argument.0
call sub.MSVCR100.dll__CxxThrowException
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x30]
mov dword [esp + 0x20], str.invalid_index_for_block_vector::at__
call dword [sym.imp.MSVCR100.dll_public:_void___thiscall_std::exception::constructor_char_const__const_const__]
push 0x588ac4
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x34], vtable.std::invalid_argument.0
call sub.MSVCR100.dll__CxxThrowException
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x3c]
mov dword [esp + 0x24], str.invalid_index_for_block_vector::at__
call dword [sym.imp.MSVCR100.dll_public:_void___thiscall_std::exception::constructor_char_const__const_const__]
push 0x588ac4
lea edx, [esp + 0x3c]
push edx
mov dword [esp + 0x40], vtable.std::invalid_argument.0
call sub.MSVCR100.dll__CxxThrowException
add ecx, edx
cmp ecx, eax
jae 0x40f276
mov ecx, eax
push ecx
lea ecx, [esp + 0x48]
call fcn.00404e80
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
test edi, edi
je 0x40f2ec
mov ecx, dword [edx + esi*4]
mov dword [edi], ecx
jmp 0x40f2ec
cmp edi, ebx
jne 0x40f2e6
mov eax, edi
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
mov ecx, ebx
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f2e6
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x40f2cc
xor ecx, ecx
jmp 0x40f2ce
add ecx, edx
cmp ecx, eax
jae 0x40f2d4
mov ecx, eax
push ecx
lea ecx, [esp + 0x48]
call fcn.00404e80
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x48]
test edi, edi
je 0x40f2ec
mov dword [edi], esi
add edi, 4
mov dword [esp + 0x48], edi
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [edx + 0xa4]
jb 0x40f140
cmp dword [esp + 0x44], edi
je 0x40f561
mov eax, dword [esp + 0x58]
cmp dword [esp + 0x54], eax
je 0x40f335
mov esi, dword [esp + 0x54]
push 0
push eax
push esi
call dword [sym.imp.MSVCR100.dll_memmove]
add esp, 0xc
mov dword [esp + 0x58], esi
mov eax, dword [esp + 0x48]
mov esi, dword [eax - 4]
cmp dword [esp + 0x44], eax
je 0x40f349
sub eax, 4
mov dword [esp + 0x48], eax
cmp dword [esi], 1
jne 0x40f553
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x18]
push eax
add ecx, 0x1d8
call fcn.00430110
fstp qword [esp + 0x2c]
mov esi, dword [esi + 8]
mov edi, esi
mov dword [esp + 0x1c], edi
cmp dword [edi], 0
je 0x40f37e
mov edi, dword [edi + 0xc]
cmp edi, esi
jne 0x40f372
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x1c], edi
mov byte [esp + 0x17], 0
jmp 0x40f3d4
push 0x57b720
call dword [sym.imp.MSVCP100.dll_void___cdecl_std::_Xlength_error_char_const__]
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x78], str.invalid_index_for_block_vector::at__
call dword [sym.imp.MSVCR100.dll_public:_void___thiscall_std::exception::constructor_char_const__const_const__]
push 0x588ac4
lea ecx, [esp + 0x3c]
push ecx
mov dword [esp + 0x40], vtable.std::invalid_argument.0
call sub.MSVCR100.dll__CxxThrowException
lea ebx, [ebx]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x5c]
lea edx, [esp + 0x1c]
cmp edx, ebp
jae 0x40f442
mov eax, edx
cmp ebx, eax
ja 0x40f442
mov esi, edx
sub esi, ebx
sar esi, 2
cmp ebp, ecx
jne 0x40f436
mov eax, ebp
sub eax, ebx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, ebx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f436
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x40f41c
xor ecx, ecx
jmp 0x40f41e
add ecx, edx
cmp ecx, eax
jae 0x40f424
mov ecx, eax
push ecx
lea ecx, [esp + 0x58]
call fcn.00404e80
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
test ebp, ebp
je 0x40f496
mov ecx, dword [ebx + esi*4]
mov dword [ebp], ecx
jmp 0x40f496
cmp ebp, ecx
jne 0x40f48f
mov eax, ebp
sub eax, ebx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, ebx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f48f
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40f475
xor ecx, ecx
jmp 0x40f477
add ecx, edx
cmp ecx, eax
jae 0x40f47d
mov ecx, eax
push ecx
lea ecx, [esp + 0x58]
call fcn.00404e80
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
test ebp, ebp
je 0x40f496
mov dword [ebp], edi
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
mov edi, dword [eax + 4]
mov esi, dword [edi + 4]
mov ecx, dword [esp + 0x18]
add ebp, 4
push esi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x24], edi
call fcn.00402e80
test eax, eax
je 0x40f4fc
mov ecx, dword [esp + 0x18]
push esi
call fcn.00402e80
cmp eax, 1
jne 0x40f4e4
mov ecx, dword [esp + 0x18]
push esi
add ecx, 0x1d8
call fcn.00430110
fstp qword [esp + 0x38]
mov byte [esp + 0x17], 1
cmp dword [edi + 0xc], 2
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 8]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x1c], eax
je 0x40f3d0
mov ecx, dword [esp + 0x18]
push esi
add ecx, 0x1d8
call fcn.00430110
cmp byte [esp + 0x17], 0
je 0x40f60d
fld qword [esp + 0x2c]
fld qword [esp + 0x38]
fsub st(1), st(0)
fxch st(1)
fabs
fld qword [0x57b948]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x40f615
fld st(2)
fsubrp st(2)
fxch st(1)
fabs
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x40f617
fstp st(0)
fstp st(0)
mov edx, dword [esp + 0x48]
cmp dword [esp + 0x44], edx
jne 0x40f316
mov ecx, dword [esp + 0x18]
add ecx, 0x1d8
call fcn.00432b80
mov ebp, eax
xor ebx, ebx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], ebx
test ebp, ebp
jle 0x40f85b
mov edi, dword [esp + 0x74]
jmp 0x40f590
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0x220]
lea eax, [ebx + ebx*2]
add eax, eax
cmp dword [edx + eax*8 + 0x2c], 1
jne 0x40f84e
mov eax, dword [edi + 4]
lea ecx, [esp + 0x20]
cmp ecx, eax
jae 0x40f7fb
mov edx, dword [edi]
cmp edx, ecx
ja 0x40f7fb
mov esi, ecx
mov ecx, dword [edi + 8]
sub esi, edx
sar esi, 2
cmp eax, ecx
jne 0x40f7eb
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f7eb
mov edx, ecx
shr edx, 1
mov ebp, 0x3fffffff
sub ebp, edx
cmp ebp, ecx
jae 0x40f7d7
xor ecx, ecx
jmp 0x40f7d9
fld qword [0x57b948]
jmp 0x40f617
fstp st(1)
fxch st(1)
fsub qword [esp + 0x2c]
fcompp
fnstsw ax
test ah, 0x41
jne 0x40f553
mov ebx, dword [esp + 0x54]
cmp ebx, dword [esp + 0x58]
je 0x40f6ee
mov edx, dword [esp + 0x18]
lea esp, [esp]
mov edi, dword [ebx]
mov eax, dword [edi + 4]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 8]
mov eax, dword [eax + 4]
mov eax, dword [eax + 4]
mov esi, dword [edx + 0x210]
mov edx, dword [edx + 0x220]
mov dword [esp + 0x28], eax
lea eax, [ecx + ecx*2]
add eax, eax
mov eax, dword [esi + eax*8 + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], edx
lea edx, [eax + eax*2]
shl edx, 4
add edx, dword [esp + 0x24]
mov esi, dword [edx]
cmp esi, ecx
jne 0x40f68b
mov ebp, dword [edx + 4]
mov dword [esp + 0x1c], ebp
jmp 0x40f68f
mov dword [esp + 0x1c], esi
mov ebp, dword [esp + 0x28]
cmp dword [esp + 0x1c], ebp
je 0x40f6ae
cmp esi, ecx
jne 0x40f6a2
mov eax, dword [edx + 0x18]
jmp 0x40f6a5
mov eax, dword [edx + 0x20]
cmp eax, dword [esp + 0x2c]
jne 0x40f672
or eax, 0xffffffff
mov ecx, dword [edi + 4]
mov edx, dword [esp + 0x18]
mov dword [ecx], 0
mov ecx, dword [edi + 8]
mov dword [edi], 1
mov dword [ecx], 1
mov ecx, dword [edx + 0x220]
lea eax, [eax + eax*2]
add eax, eax
add ebx, 4
mov dword [ecx + eax*8 + 0x2c], 0
cmp ebx, dword [esp + 0x58]
jne 0x40f640
mov edi, dword [esp + 0x20]
dec dword [edi]
cmp dword [edi], 1
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x48]
jne 0x40f553
lea eax, [esp + 0x20]
cmp eax, ebp
jae 0x40f77b
cmp edx, eax
ja 0x40f77b
mov esi, eax
sub esi, edx
sar esi, 2
cmp ebp, ecx
jne 0x40f765
mov eax, ebp
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f765
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x40f74b
xor ecx, ecx
jmp 0x40f74d
add ecx, edx
cmp ecx, eax
jae 0x40f753
mov ecx, eax
push ecx
lea ecx, [esp + 0x48]
call fcn.00404e80
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
test ebp, ebp
je 0x40f76f
mov ecx, dword [edx + esi*4]
mov dword [ebp], ecx
add ebp, 4
mov dword [esp + 0x48], ebp
jmp 0x40f553
cmp ebp, ecx
jne 0x40f7c4
mov eax, ebp
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f7c4
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40f7ae
xor ecx, ecx
jmp 0x40f7b0
add ecx, edx
cmp ecx, eax
jae 0x40f7b6
mov ecx, eax
push ecx
lea ecx, [esp + 0x48]
call fcn.00404e80
mov ebp, dword [esp + 0x48]
test ebp, ebp
je 0x40f7cb
mov dword [ebp], edi
add ebp, 4
mov dword [esp + 0x48], ebp
jmp 0x40f553
add ecx, edx
cmp ecx, eax
jae 0x40f7df
mov ecx, eax
push ecx
mov ecx, edi
call fcn.00404e80
mov ebp, dword [esp + 0x2c]
mov eax, dword [edi + 4]
test eax, eax
je 0x40f84a
mov edx, dword [edi]
mov ecx, dword [edx + esi*4]
mov dword [eax], ecx
jmp 0x40f84a
mov ecx, dword [edi + 8]
cmp eax, ecx
jne 0x40f841
mov edx, dword [edi]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40f391
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40f841
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40f831
xor ecx, ecx
jmp 0x40f833
add ecx, edx
cmp ecx, eax
jae 0x40f839
mov ecx, eax
push ecx
mov ecx, edi
call fcn.00404e80
mov eax, dword [edi + 4]
test eax, eax
je 0x40f84a
mov dword [eax], ebx
add dword [edi + 4], 4
inc ebx
mov dword [esp + 0x20], ebx
cmp ebx, ebp
jl 0x40f590
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40f86c
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
mov eax, dword [esp + 0x54]
test eax, eax
je 0x40f87d
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x64]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 4