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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov ebx, edx
cmp edx, 0x15
mov dword [esp + 0x1c], ecx
jae 0x440865
cmp ebx, 1
jbe 0x440ee7
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push 1
call fcn.00440570
add esp, 4
jmp 0x440ee7
movzx eax, byte [0x597110]
mov eax, dword [0x5970d8]
test eax, eax
jne 0x440887
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x440f9f
mov dword [0x5970d8], eax
lea ecx, [ebx*4]
and ecx, 0xfffffff8
lea ecx, [ecx + ecx*2]
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
mov dword [esp + 4], eax
je 0x440f9f
movzx eax, byte [0x597110]
mov eax, dword [0x5970d8]
test eax, eax
jne 0x4408cb
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x440fb3
mov dword [0x5970d8], eax
push pe_nt_image_headers32
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x440fb3
mov edi, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x48], 0x10
mov dword [esp + 0x10], ebx
lea ecx, [eax + 0x30]
add eax, 0xffffffe8
mov dword [esp + 0x44], ecx
mov dword [esp + 0x4c], eax
xor eax, eax
xor ecx, ecx
jmp 0x440921
mov ecx, 1
mov eax, dword [esp + 0x24]
cmp eax, ebx
jae 0x440ec8
mov dword [esp + 0xc], ecx
mov ecx, eax
mov eax, ebx
mov dword [esp + 8], edi
sub eax, ecx
mov dword [esp], ecx
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x1c]
cmp eax, 2
lea ecx, [ecx + edx*8]
mov dword [esp + 0x18], ecx
jae 0x440a20
mov ecx, eax
mov eax, dword [esp]
mov esi, ebx
mov edx, esi
sub esi, eax
jb 0x440f4a
cmp edx, ebx
ja 0x440f4a
mov dword [esp + 0x24], edx
jae 0x44099d
cmp ecx, 0xa
mov eax, ecx
jae 0x44099d
mov eax, dword [esp]
lea esi, [eax + 0xa]
cmp esi, ebx
cmovae esi, ebx
mov dword [esp + 0x24], esi
sub esi, eax
jb 0x440f72
mov eax, ecx
cmp ecx, 1
mov ecx, dword [esp + 0x18]
mov edx, esi
adc eax, 0
push eax
call fcn.00440570
add esp, 4
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x48]
jne 0x440a50
movzx eax, byte [0x597110]
mov eax, dword [0x5970d8]
test eax, eax
jne 0x4409d1
mov ebx, ecx
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x440f5e
mov ecx, ebx
mov dword [0x5970d8], eax
mov edi, ecx
shl ecx, 4
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x440f5e
mov ebx, eax
lea eax, [edi + edi]
mov dword [esp + 0x48], eax
lea eax, [edi*8]
push eax
push dword [esp + 0xc]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
push dword [esp + 8]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
mov eax, ebx
mov ebx, dword [esp + 0x10]
mov ecx, edi
jmp 0x440a54
movsd xmm0, qword [ecx]
movsd xmm1, qword [ecx + 0x18]
ucomisd xmm0, xmm1
ja 0x440d60
cmp eax, 2
jne 0x440d72
mov eax, dword [esp]
mov ecx, 2
lea esi, [eax + 2]
jmp 0x440950
mov eax, dword [esp + 8]
mov edx, dword [esp]
mov dword [eax + ecx*8], esi
mov edi, eax
mov dword [esp + 8], eax
mov dword [eax + ecx*8 + 4], edx
inc ecx
cmp ecx, 2
jae 0x440ad2
jmp 0x440915
mov edi, dword [esp + 4]
mov eax, ebx
mov ebx, dword [esp + 0xc]
sub esi, edi
lea ecx, [ebx - 1]
mov dword [esp], ecx
push esi
push edi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x58]
add eax, dword [esp + 0x54]
mov dword [edi + ecx*8 + 8], eax
mov eax, dword [esp + 0x60]
mov dword [edi + ecx*8 + 0xc], eax
not ecx
lea eax, [edx + 8]
add ecx, ebx
shl ecx, 3
push ecx
push eax
push edx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ecx, dword [esp]
mov ebx, dword [esp + 0x10]
cmp ecx, 1
jbe 0x440910
mov dword [esp + 0xc], ecx
mov eax, dword [edi + ecx*8 - 8]
mov ecx, dword [esp + 0xc]
mov ecx, dword [edi + ecx*8 - 4]
add ecx, eax
cmp ecx, ebx
mov ecx, dword [esp + 0xc]
je 0x440b40
mov edx, dword [edi + ecx*8 - 0x10]
cmp edx, eax
jbe 0x440b40
cmp ecx, 2
jbe 0x440ea3
lea ebx, [ecx - 3]
lea esi, [edx + eax]
mov dword [esp + 0x14], ebx
mov ebx, ecx
mov ecx, dword [edi + ecx*8 - 0x18]
cmp ecx, esi
jbe 0x440d3a
cmp ebx, 3
jbe 0x440ead
mov edi, dword [esp + 8]
add edx, ecx
cmp dword [edi + ebx*8 - 0x20], edx
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
jbe 0x440b4c
jmp 0x440ebf
cmp ecx, 3
jb 0x440b54
lea edx, [ecx - 3]
mov ecx, dword [edi + ecx*8 - 0x18]
cmp ecx, eax
mov ecx, dword [esp + 0xc]
jb 0x440b57
lea edx, [ecx - 2]
cmp ecx, edx
jbe 0x440eef
lea eax, [edx + 1]
cmp ecx, eax
jbe 0x440efa
mov eax, dword [edi + edx*8 + 8]
mov esi, dword [edi + edx*8 + 0xc]
mov ecx, dword [edi + edx*8 + 4]
mov dword [esp + 0x14], edx
add esi, eax
mov edx, esi
sub edx, ecx
mov dword [esp + 0x20], edx
jb 0x440f30
cmp esi, ebx
ja 0x440f3c
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x14]
mov edx, edi
mov dword [esp + 0x60], ecx
mov edi, dword [edi + eax*8]
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*8]
lea eax, [edi + edi*2]
mov dword [esp + 0x54], edi
lea ebx, [ecx + eax*8]
lea eax, [esi + esi*2]
mov esi, dword [esp + 0x20]
mov dword [esp], ecx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x14]
sub esi, edi
cmp esi, edi
lea eax, [edx + eax*8]
mov dword [esp + 0x58], eax
jae 0x440c90
lea eax, [esi*8]
mov dword [esp + 0x18], esi
lea esi, [eax + eax*2]
push esi
push ebx
push dword [esp + 0xc]
call sub.msvcrt.dll_memcpy
add esp, 0xc
add esi, dword [esp + 4]
test edi, edi
jle 0x440a70
cmp dword [esp + 0x18], 0
jle 0x440a70
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edi, dword [esp]
lea eax, [eax + ecx*8]
nop dword [eax + eax]
movsd xmm0, qword [ebx - 0x18]
movsd xmm1, qword [esi - 0x18]
xor ecx, ecx
xor edx, edx
ucomisd xmm0, xmm1
setbe cl
seta dl
neg ecx
neg edx
ucomisd xmm0, xmm1
lea ecx, [ecx + ecx*2]
lea edx, [edx + edx*2]
lea esi, [esi + ecx*8]
lea ebx, [ebx + edx*8]
mov ecx, esi
cmova ecx, ebx
cmp ebx, edi
movsd xmm0, qword [ecx + 0x10]
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [ecx]
movsd xmm1, qword [ecx + 8]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
jbe 0x440a70
add eax, 0xffffffe8
cmp esi, dword [esp + 4]
ja 0x440c20
jmp 0x440a70
lea eax, [edi*8]
lea esi, [eax + eax*2]
push esi
push ecx
push dword [esp + 0xc]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x10]
add esp, 0xc
add esi, edx
test edi, edi
jle 0x440d30
cmp dword [esp + 0x20], edi
jle 0x440d30
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x50]
mov edi, edx
mov dword [esp + 0x18], esi
lea eax, [eax + ecx*8]
mov dword [esp + 0x20], eax
nop dword [eax]
movsd xmm0, qword [edi]
xor ecx, ecx
xor edx, edx
mov eax, edi
mov esi, dword [esp]
ucomisd xmm0, qword [ebx]
cmova eax, ebx
setbe cl
movsd xmm0, qword [eax + 0x10]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
lea eax, [ecx + ecx*2]
seta cl
lea edi, [edi + eax*8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
add esi, 0x18
mov dword [esp], esi
mov esi, dword [esp + 0x18]
cmp edi, esi
jae 0x440d32
mov dl, cl
lea eax, [edx + edx*2]
lea ebx, [ebx + eax*8]
cmp ebx, dword [esp + 0x20]
jb 0x440cd0
jmp 0x440d32
mov edi, edx
mov eax, dword [esp]
jmp 0x440a76
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp ecx, eax
mov ecx, dword [esp + 0xc]
jae 0x440b54
jmp 0x440b57
cmp eax, 2
jne 0x440da8
mov eax, dword [esp]
mov ecx, 2
lea esi, [eax + 2]
jmp 0x440dea
mov esi, dword [esp + 0x44]
movapd xmm2, xmm1
lea esi, [esi + edx*8]
mov edx, 2
nop word cs:[eax + eax]
nop dword [eax]
movapd xmm3, xmm2
movsd xmm2, qword [esi]
ucomisd xmm3, xmm2
ja 0x440dd8
inc edx
add esi, 0x18
cmp eax, edx
jne 0x440d90
jmp 0x440dd6
mov esi, dword [esp + 0x44]
movapd xmm2, xmm1
lea esi, [esi + edx*8]
mov edx, 2
nop dword [eax + eax]
movapd xmm3, xmm2
movsd xmm2, qword [esi]
ucomisd xmm3, xmm2
jbe 0x440dd8
inc edx
add esi, 0x18
cmp eax, edx
jne 0x440dc0
mov edx, eax
mov eax, dword [esp]
ucomisd xmm0, xmm1
mov ecx, edx
lea esi, [edx + eax]
jbe 0x440950
cmp eax, esi
ja 0x440f83
cmp esi, ebx
ja 0x440f91
mov eax, ecx
cmp ecx, 2
jae 0x440e09
mov eax, dword [esp]
jmp 0x440950
mov edi, dword [esp]
mov ebx, esi
mov esi, eax
mov edx, eax
shr edx, 1
add esi, edi
mov edi, dword [esp + 0x4c]
lea esi, [esi + esi*2]
lea esi, [edi + esi*8]
mov edi, dword [esp + 0x18]
nop word cs:[eax + eax]
nop
movsd xmm0, qword [edi + 0x10]
movsd xmm1, qword [edi + 8]
movsd qword [esp + 0x38], xmm0
movsd xmm0, qword [edi]
movsd qword [esp + 0x30], xmm1
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [esi + 0x10]
movsd xmm2, qword [esp + 0x28]
movsd qword [edi + 0x10], xmm0
movsd xmm1, qword [esi + 8]
movsd xmm0, qword [esi]
movsd qword [edi + 8], xmm1
movsd xmm1, qword [esp + 0x38]
movsd qword [edi], xmm0
movsd qword [esi], xmm2
add edi, 0x18
movsd qword [esi + 0x10], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [esi + 8], xmm1
add esi, 0xffffffe8
dec edx
jne 0x440e30
mov esi, ebx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp]
jmp 0x440950
mov ecx, 2
jmp 0x440915
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov ecx, 3
jmp 0x440915
mov ecx, dword [esp + 0xc]
jmp 0x440915
push edi
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
push dword [esp + 4]
push 0
push dword [0x5970d8]
call sub.KERNEL32.dll_HeapFree
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0x28]
mov edx, 0x585938
jmp 0x440f03
lea ecx, [esp + 0x28]
mov edx, 0x585948
mov dword [esp + 0x28], str.Index_out_of_bounds
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], 0
mov dword [esp + 0x30], str.vmesh_src_char_anim.rs
mov dword [esp + 0x34], 0
call fcn.004696f0
mov edx, esi
push 0x585958
call fcn.0046ea80
mov ecx, esi
mov edx, ebx
push 0x585958
call fcn.0046a7e0
mov ecx, str.assertion_failed:_end___start__end___len
mov edx, 0x2c
push 0x5859c4
call fcn.0046b190
mov ecx, 0x586c6b
mov edx, 0x2b
push 0x585988
call fcn.0046b190
mov ecx, dword [esp]
mov edx, dword [esp + 0x24]
push 0x5859d4
call fcn.0046ea80
mov ecx, eax
mov edx, esi
push 0x585928
call fcn.0046ea80
mov ecx, esi
mov edx, ebx
push 0x585928
call fcn.0046a7e0
mov ecx, 0x586c6b
mov edx, 0x2b
push 0x585968
call fcn.0046b190
mov ecx, 0x586c6b
mov edx, 0x2b
push 0x585978
call fcn.0046b190
nop word [eax + eax]