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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x70
mov dword [esp + 0x20], edx
mov edx, dword [ecx + 0x94]
mov eax, dword [ecx + 0x90]
mov edi, ecx
mov dword [esp + 0x30], edi
movdqa xmm0, xmmword [edx]
lea esi, [eax + edx + 1]
lea ebx, [edx + 0x10]
mov dword [esp + 0x3c], esi
pmovmskb eax, xmm0
not eax
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
movq xmm0, qword [eax + 0x20]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
lea ecx, [ecx + eax + 1]
mov dword [esp + 0x10], eax
lea eax, [eax + 0x10]
movq qword [esp + 0x48], xmm0
mov dword [esp + 0x34], ecx
lea ecx, [edi + 0x40]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], ecx
lea ecx, [edi + 0x60]
mov dword [esp + 0x54], ecx
lea ecx, [edi + 0xcc]
mov dword [esp + 0x5c], ecx
mov eax, dword [esp + 8]
test ax, ax
jne 0x40dfad
jmp 0x40dfc0
lea eax, [esi + 1]
mov dword [edi + 0x7c], 0
shr eax, 3
lea ecx, [eax*8]
sub ecx, eax
cmp esi, 8
cmovb ecx, esi
mov dword [edi + 0x78], ecx
mov byte [edi + 0xe4], 0
mov ecx, dword [esp + 0x54]
call fcn.0040f1b0
mov esi, dword [esp + 0x3c]
nop dword [eax + eax]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 8]
test ax, ax
je 0x40dfc0
test edx, edx
je 0x40e32c
mov esi, eax
dec eax
mov dword [esp + 0x18], ebx
and eax, esi
jmp 0x40dff0
cmp ebx, esi
jae 0x40e32c
movdqa xmm0, xmmword [ebx]
add edx, 0xffffff40
add ebx, 0x10
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x40dfc0
mov ecx, 0xfffffffe
mov dword [esp + 0x18], ebx
sub ecx, eax
not eax
mov esi, eax
and eax, ecx
bsf cx, si
mov dword [esp + 8], eax
mov dword [esp + 0x14], edx
movzx eax, cx
neg eax
lea eax, [eax + eax*2]
lea ecx, [edx + eax*4]
mov bl, byte [edx + eax*4 - 8]
mov dword [esp + 0x60], ecx
mov ecx, dword [edx + eax*4 - 0xc]
mov byte [esp + 0x1c], bl
mov dword [esp + 0x64], ecx
mov byte [esp + 0x68], bl
mov dword [esp + 0x38], ecx
mov esi, dword [edx + eax*4 - 4]
movzx eax, byte [ebp + 8]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push eax
push dword [esp + 0x24]
push dword [esi + 0xc]
push dword [esi + 8]
call fcn.00410e90
add esp, 0x10
mov edi, dword [esi + 0x10]
shld edx, eax, 7
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x28], esi
pcmpeqd xmm3, xmm3
and dl, 0x7f
movzx edx, dl
movd xmm0, edx
xor edx, edx
and eax, edi
punpcklbw xmm0, xmm0
mov dword [esp], edi
movdqu xmm1, xmmword [ecx + eax]
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqa xmm2, xmm0
pcmpeqb xmm2, xmm1
pmovmskb esi, xmm2
test si, si
je 0x40e090
mov ebx, dword [esp]
jmp 0x40e0ce
mov ebx, dword [esp]
nop word cs:[eax + eax]
nop dword [eax]
pcmpeqb xmm1, xmm3
pmovmskb esi, xmm1
test esi, esi
jne 0x40e2b0
lea eax, [eax + edx + 0x10]
movdqa xmm2, xmm0
add edx, 0x10
and eax, ebx
movdqu xmm1, xmmword [ecx + eax]
pcmpeqb xmm2, xmm1
pmovmskb esi, xmm2
test esi, esi
je 0x40e0a0
bsf di, si
movzx edi, di
add edi, eax
and edi, ebx
mov ebx, ecx
shl edi, 4
sub ebx, edi
lea edi, [esi - 1]
and edi, esi
mov esi, edi
mov edi, dword [esp + 0x20]
cmp dword [ebx - 0x10], edi
jne 0x40e085
mov edi, ecx
mov cl, byte [ebp + 8]
cmp byte [ebx - 0xc], cl
mov ecx, edi
jne 0x40e085
mov eax, ecx
mov dword [esp + 0x40], ebx
sub eax, ebx
mov bx, 0x10
sar eax, 4
lea edx, [eax - 0x10]
and edx, dword [esp]
mov word [esp], 0x10
movdqu xmm0, xmmword [ecx + edx]
pcmpeqb xmm0, xmm3
pmovmskb esi, xmm0
test esi, esi
je 0x40e12f
bsr bx, si
xor ebx, 0xf
movdqu xmm0, xmmword [ecx + eax]
pcmpeqb xmm0, xmm3
pmovmskb esi, xmm0
test si, si
je 0x40e149
bsf si, si
mov word [esp], si
movzx esi, word [esp]
add esi, ebx
mov bl, pe_nt_image_headers32
cmp si, 0xf
ja 0x40e162
mov ecx, dword [esp + 0x28]
mov bl, 0xff
inc dword [ecx + 0x18]
mov ecx, edi
mov byte [ecx + eax], bl
mov eax, dword [esp + 0x28]
mov byte [edx + ecx + 0x10], bl
dec dword [eax + 0x1c]
mov eax, dword [esp + 0x40]
cmp byte [eax - 0xc], 5
je 0x40e2b0
movsd xmm1, qword [eax - 8]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
movsd qword [esp], xmm1
mulsd xmm1, qword [esp + 0x48]
movsd xmm0, qword [edx + 0x20]
mov edi, ecx
addsd xmm0, xmm1
movsd qword [esp + 0x40], xmm1
movsd qword [edx + 0x20], xmm0
movdqa xmm0, xmmword [ecx]
pmovmskb esi, xmm0
not esi
test si, si
je 0x40e1e0
nop
bsf ax, si
lea ecx, [esi - 1]
movzx edx, ax
and ecx, esi
mov eax, edi
shl edx, 4
mov esi, ecx
jmp 0x40e216
cmp ebx, dword [esp + 0x34]
jae 0x40e23b
movdqa xmm0, xmmword [ebx]
add edi, 0xffffff00
add ebx, 0x10
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x40e1e0
mov ecx, 0xfffffffe
sub ecx, eax
not eax
mov esi, eax
bsf ax, ax
movzx edx, ax
mov eax, edi
and esi, ecx
shl edx, 4
sub eax, edx
movsd xmm0, qword [eax - 8]
mov edx, dword [eax - 0x10]
mov ecx, dword [esp + 0x28]
mulsd xmm0, qword [esp]
push dword [eax - 0xc]
call fcn.0040fa50
add esp, 4
test si, si
jne 0x40e1c0
jmp 0x40e1e0
cmp byte [esp + 0x1c], 1
jne 0x40e2b0
movsd xmm1, qword [esp + 0x40]
pxor xmm0, xmm0
ucomisd xmm1, xmm0
jne 0x40e254
jnp 0x40e2b0
mov ecx, dword [esp + 0x58]
lea edx, [esp + 0x64]
push 0x6089c8
call fcn.0040f070
add esp, 4
mov edi, dword [esp + 0x30]
mov edx, dword [eax]
mov ebx, dword [esp + 0x18]
cmp byte [edi + 0xe4], 0
je 0x40df8b
mov esi, dword [edi + 0x70]
test esi, esi
je 0x40df65
lea eax, [esi + 0x11]
push eax
push 0xff
push dword [edi + 0x74]
mov dword [esp + 0xc], edx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
jmp 0x40df65
cmp byte [esp + 0x1c], 1
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x18]
je 0x40dfa0
mov eax, dword [esp + 0x60]
pxor xmm0, xmm0
mov eax, dword [eax - 4]
ucomisd xmm0, qword [eax + 0x20]
jbe 0x40dfa0
mov edx, dword [edi + 0xd4]
cmp edx, dword [edi + 0xd0]
jne 0x40e2fa
mov ecx, dword [esp + 0x5c]
call fcn.00594830
mov edx, dword [edi + 0xd4]
mov ecx, dword [esp + 0x38]
mov eax, dword [edi + 0xcc]
mov dword [eax + edx*8], ecx
mov ch, byte [esp + 0x1c]
mov byte [eax + edx*8 + 4], ch
inc edx
mov dword [edi + 0xd4], edx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 8]
test ax, ax
jne 0x40dfad
jmp 0x40dfc0
mov esi, dword [edi + 0xd8]
cmp dword [esi + 8], 0
jne 0x40e7cc
mov dword [esi + 8], 0xffffffff
lea eax, [esi + 0x10]
mov dword [esp + 0x14], eax
movzx eax, byte [ebp + 8]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov dword [esp + 0x1c], eax
push eax
push dword [esp + 0x24]
push dword [esi + 0x1c]
push dword [esi + 0x18]
call fcn.00410e90
add esp, 0x10
mov edi, dword [esi + 0x20]
shld edx, eax, 7
mov ecx, dword [esi + 0x24]
mov dword [esp + 8], esi
and dl, 0x7f
movzx edx, dl
movd xmm0, edx
xor edx, edx
and eax, edi
punpcklbw xmm0, xmm0
mov dword [esp], edi
movdqu xmm1, xmmword [ecx + eax]
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqa xmm2, xmm0
pcmpeqb xmm2, xmm1
pmovmskb edi, xmm2
pcmpeqd xmm2, xmm2
test di, di
je 0x40e3c0
mov ebx, dword [esp]
jmp 0x40e3fe
mov ebx, dword [esp]
nop word cs:[eax + eax]
nop dword [eax]
pcmpeqb xmm1, xmm2
pmovmskb esi, xmm1
test esi, esi
jne 0x40e4ab
lea eax, [eax + edx + 0x10]
movdqa xmm3, xmm0
add edx, 0x10
and eax, ebx
movdqu xmm1, xmmword [ecx + eax]
pcmpeqb xmm3, xmm1
pmovmskb edi, xmm3
test edi, edi
je 0x40e3d0
bsf si, di
movzx esi, si
add esi, eax
and esi, ebx
mov ebx, ecx
shl esi, 4
sub ebx, esi
lea esi, [edi - 1]
and esi, edi
mov edi, esi
mov esi, dword [esp + 0x20]
cmp dword [ebx - 0x10], esi
jne 0x40e3ad
mov esi, ecx
mov cl, byte [ebp + 8]
cmp byte [ebx - 0xc], cl
mov ecx, esi
jne 0x40e3ad
mov eax, ecx
pcmpeqd xmm1, xmm1
mov dword [esp + 0x18], ebx
sub eax, ebx
mov bx, 0x10
sar eax, 4
lea edx, [eax - 0x10]
movdqu xmm2, xmmword [ecx + eax]
and edx, dword [esp]
pcmpeqb xmm2, xmm1
movdqu xmm0, xmmword [ecx + edx]
pmovmskb ecx, xmm2
mov dword [esp], ecx
mov cx, 0x10
pcmpeqb xmm0, xmm1
pmovmskb edi, xmm0
test edi, edi
je 0x40e471
bsr bx, di
xor ebx, 0xf
mov edi, dword [esp]
test di, di
je 0x40e47d
bsf cx, di
movzx ecx, cx
add ecx, ebx
mov bl, pe_nt_image_headers32
cmp cx, 0xf
mov ecx, dword [esp + 8]
ja 0x40e493
inc dword [ecx + 0x28]
mov bl, 0xff
mov byte [esi + eax], bl
mov eax, dword [esp + 0x18]
mov byte [edx + esi + 0x10], bl
dec dword [ecx + 0x2c]
cmp byte [eax - 0xc], 5
jne 0x40e648
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
inc dword [eax + 8]
mov edi, dword [ecx + 0xdc]
test edi, edi
je 0x40e640
cmp dword [edi + 8], 0
jne 0x40e7e1
mov dword [edi + 8], 0xffffffff
lea eax, [edi + 0x10]
mov ecx, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
mov dword [esp + 0x14], eax
push dword [esp + 0x1c]
push dword [esp + 0x24]
push dword [edi + 0x1c]
push dword [edi + 0x18]
call fcn.00410e90
add esp, 0x10
mov esi, dword [edi + 0x20]
shld edx, eax, 7
mov ecx, dword [edi + 0x24]
mov dword [esp + 8], edi
and dl, 0x7f
movzx edx, dl
movd xmm0, edx
xor edx, edx
and eax, esi
punpcklbw xmm0, xmm0
mov dword [esp], esi
movdqu xmm1, xmmword [ecx + eax]
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqa xmm2, xmm0
pcmpeqb xmm2, xmm1
pmovmskb ebx, xmm2
pcmpeqd xmm2, xmm2
test bx, bx
je 0x40e550
mov esi, dword [esp]
jmp 0x40e58e
mov esi, dword [esp]
nop word cs:[eax + eax]
nop dword [eax]
pcmpeqb xmm1, xmm2
pmovmskb edi, xmm1
test edi, edi
jne 0x40e639
lea eax, [eax + edx + 0x10]
movdqa xmm3, xmm0
add edx, 0x10
and eax, esi
movdqu xmm1, xmmword [ecx + eax]
pcmpeqb xmm3, xmm1
pmovmskb ebx, xmm3
test ebx, ebx
je 0x40e560
bsf di, bx
movzx edi, di
add edi, eax
and edi, esi
mov esi, ecx
shl edi, 4
sub esi, edi
lea edi, [ebx - 1]
and edi, ebx
mov ebx, edi
mov edi, dword [esp + 0x20]
cmp dword [esi - 0x10], edi
jne 0x40e53a
mov edi, ecx
mov cl, byte [ebp + 8]
cmp byte [esi - 0xc], cl
mov ecx, edi
jne 0x40e53a
mov eax, ecx
pcmpeqd xmm1, xmm1
mov dword [esp + 0x20], esi
mov bx, 0x10
sub eax, esi
sar eax, 4
lea edx, [eax - 0x10]
movdqu xmm2, xmmword [ecx + eax]
and edx, dword [esp]
pcmpeqb xmm2, xmm1
movdqu xmm0, xmmword [ecx + edx]
pmovmskb ecx, xmm2
pcmpeqb xmm0, xmm1
pmovmskb esi, xmm0
test esi, esi
je 0x40e5fe
bsr bx, si
xor ebx, 0xf
test cx, cx
mov si, 0x10
je 0x40e60b
bsf si, cx
mov ecx, dword [esp + 8]
movzx esi, si
add esi, ebx
mov bl, pe_nt_image_headers32
cmp si, 0xf
ja 0x40e621
inc dword [ecx + 0x28]
mov bl, 0xff
mov byte [edi + eax], bl
mov eax, dword [esp + 0x20]
mov byte [edx + edi + 0x10], bl
dec dword [ecx + 0x2c]
cmp byte [eax - 0xc], 5
jne 0x40e6ff
mov eax, dword [esp + 8]
inc dword [eax + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movsd xmm0, qword [eax - 8]
mov eax, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x2c]
movsd qword [esp], xmm0
mulsd xmm0, qword [esp + 0x48]
addsd xmm0, qword [eax + 0x30]
movsd qword [eax + 0x30], xmm0
movdqa xmm0, xmmword [ebx]
pmovmskb edi, xmm0
not edi
test di, di
je 0x40e6a0
bsf ax, di
lea ecx, [edi - 1]
movzx edx, ax
and ecx, edi
mov eax, ebx
shl edx, 4
mov edi, ecx
jmp 0x40e6da
cmp esi, dword [esp + 0x34]
jae 0x40e4ab
movdqa xmm0, xmmword [esi]
add ebx, 0xffffff00
add esi, 0x10
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x40e6a0
mov ecx, 0xfffffffe
sub ecx, eax
not eax
mov edi, eax
bsf ax, ax
movzx edx, ax
mov eax, ebx
and edi, ecx
shl edx, 4
sub eax, edx
movsd xmm0, qword [eax - 8]
mov edx, dword [eax - 0x10]
mov ecx, dword [esp + 0x14]
mulsd xmm0, qword [esp]
push dword [eax - 0xc]
call fcn.0040fa50
add esp, 4
test di, di
jne 0x40e67d
jmp 0x40e6a0
movsd xmm1, qword [eax - 8]
movsd xmm0, qword [esp + 0x48]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x14]
mulsd xmm0, xmm1
movsd qword [esp + 0x20], xmm1
addsd xmm0, qword [eax + 0x30]
movsd qword [eax + 0x30], xmm0
movdqa xmm0, xmmword [ecx]
pmovmskb esi, xmm0
not esi
test si, si
je 0x40e760
bsf ax, si
lea ecx, [esi - 1]
movzx edx, ax
mov eax, dword [esp + 0x10]
and ecx, esi
shl edx, 4
mov esi, ecx
jmp 0x40e7a4
cmp edi, dword [esp + 0x34]
jae 0x40e639
mov eax, edi
add dword [esp + 0x10], 0xffffff00
add edi, 0x10
movdqa xmm0, xmmword [eax]
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x40e760
mov ecx, 0xfffffffe
mov ebx, dword [esp + 0x14]
sub ecx, eax
not eax
mov esi, eax
bsf ax, ax
movzx edx, ax
mov eax, dword [esp + 0x10]
and esi, ecx
shl edx, 4
sub eax, edx
movsd xmm0, qword [eax - 8]
mov edx, dword [eax - 0x10]
mov ecx, ebx
mulsd xmm0, qword [esp + 0x20]
push dword [eax - 0xc]
call fcn.0040fa50
add esp, 4
test si, si
jne 0x40e73d
jmp 0x40e760
lea eax, [esp + 0xc]
mov ecx, str.already_borrowed_
mov edx, 0x10
push 0x6089d8
jmp 0x40e7f4
lea eax, [esp + 0xc]
mov ecx, str.already_borrowed_
mov edx, 0x10
push 0x6089e8
push 0x608914
push eax
call fcn.0045d480
add esp, 0xc
ud2