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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe0
mov dword [esp + 0x74], ecx
mov ecx, dword [ebp + 8]
imul eax, dword [ebp + 0xc], 0xc
mov esi, edx
lea edx, [esp + 0x60]
mov edi, dword [esi]
mov dword [esp + 0x78], esi
add eax, ecx
mov dword [edx], ecx
mov ecx, dword [esi + 8]
lea esi, [esp + 0x88]
mov dword [edx + 4], eax
mov dword [edx + 8], edi
mov dword [edx + 0xc], ecx
mov ecx, esi
call fcn.00422ab2
cmp dword [esi + 8], 0
je 0x422169
push 4
pop ecx
call fcn.0041c0e1
lea esi, [esp + 0x88]
xor edi, edi
lea ecx, [esp + 0x28]
lea ebx, [esp + 0x38]
mov dword [esp + 0xc], eax
mov dword [esp + 0x20], 0
movsd xmm0, qword [esi + 0x10]
movsd xmm1, qword [esi]
movsd xmm2, qword [esi + 8]
inc edi
mov dword [esp + 4], edi
movsd qword [eax], xmm1
movsd qword [eax + 8], xmm2
movsd qword [eax + 0x10], xmm0
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov dword [ecx + 8], 1
movsd xmm0, qword [esp + 0x60]
movsd xmm1, qword [esp + 0x68]
movsd qword [ebx + 8], xmm1
movsd qword [ebx], xmm0
mov ecx, esi
mov edx, ebx
call fcn.00422ab2
cmp dword [esp + 0x90], 0
je 0x422128
mov eax, dword [esp + 4]
cmp eax, dword [esp + 0x2c]
jne 0x4220e2
lea ecx, [esp + 0x28]
mov edx, edi
call fcn.0041c11a
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], eax
mov edx, dword [esp + 4]
movsd xmm0, qword [esp + 0x88]
movsd xmm1, qword [esp + 0x90]
movsd xmm2, qword [esp + 0x98]
mov ecx, dword [esp + 0xc]
dec dword [esp + 0x20]
imul eax, edx, 0x18
inc edx
movsd qword [ecx + eax + 0x10], xmm2
movsd qword [ecx + eax + 8], xmm1
movsd qword [ecx + eax], xmm0
mov dword [esp + 4], edx
mov dword [esp + 0x30], edx
jmp 0x4220b2
mov edx, dword [esp + 0x94]
xor ecx, ecx
call fcn.0041c1b0
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x2c]
cmp ebx, 0x15
mov dword [esp + 0x4c], edi
mov dword [esp + 4], ebx
jae 0x42217b
mov esi, dword [esp + 0xc]
cmp ebx, 1
jbe 0x42256e
mov ecx, esi
mov edx, ebx
push 1
call fcn.004229aa
pop eax
jmp 0x42256e
push 8
pop esi
mov dword [esp + 0x4c], 0
xor ebx, ebx
jmp 0x42256e
mov al, byte [0x640d9c]
shr ebx, 1
imul ecx, ebx, 0x18
push 8
pop edx
call fcn.00403fe0
mov esi, dword [esp + 0xc]
test eax, eax
je 0x4228ea
mov dword [esp + 0x10], eax
push 0x10
pop ecx
mov ebx, ecx
call fcn.004b8417
test eax, eax
je 0x4228f9
lea ecx, [esi + 0x30]
mov edi, eax
xor edx, edx
mov dword [esp + 0x24], 0
mov dword [esp + 0x50], ecx
mov ecx, ebx
mov esi, dword [esp + 4]
sub esi, edx
jbe 0x422550
cmp esi, 2
mov dword [esp], edx
mov dword [esp + 0x14], edi
mov dword [esp + 8], ecx
jae 0x4221e9
mov ebx, dword [esp + 4]
jmp 0x422294
mov ecx, dword [esp + 0xc]
imul eax, edx, 0x18
add ecx, eax
movsd xmm0, qword [ecx]
movsd xmm1, qword [ecx + 0x18]
ucomisd xmm0, xmm1
ja 0x42222e
mov ecx, dword [esp + 0x20]
add eax, dword [esp + 0x50]
movapd xmm2, xmm1
add ecx, edx
push 2
pop edx
lea edi, [ecx + edx]
cmp edi, 1
je 0x42225d
movsd xmm3, qword [eax]
ucomisd xmm2, xmm3
ja 0x42225b
inc edx
add eax, 0x18
movapd xmm2, xmm3
jmp 0x422212
mov ecx, dword [esp + 0x20]
add eax, dword [esp + 0x50]
movapd xmm2, xmm1
add ecx, edx
push 2
pop edx
lea edi, [ecx + edx]
cmp edi, 1
je 0x42225d
movsd xmm3, qword [eax]
ucomisd xmm2, xmm3
jbe 0x42225b
inc edx
add eax, 0x18
movapd xmm2, xmm3
jmp 0x42223f
mov esi, edx
mov edx, dword [esp]
mov edi, dword [esp + 0x14]
ucomisd xmm0, xmm1
lea ebx, [esi + edx]
jbe 0x422290
mov ecx, edx
mov edx, ebx
push 0x5b0880
push dword [esp + 8]
push dword [esp + 0x14]
call fcn.0041beaf
add esp, 0xc
mov ecx, eax
call fcn.0041bee4
mov edx, dword [esp]
mov ecx, dword [esp + 8]
cmp ebx, edx
jb 0x4228c6
cmp ebx, dword [esp + 4]
ja 0x4228c6
jae 0x4222e8
cmp esi, 9
ja 0x4222e8
mov eax, dword [esp + 4]
lea ebx, [edx + 0xa]
mov ecx, edx
cmp ebx, eax
cmovae ebx, eax
cmp esi, 1
mov edx, ebx
adc esi, 0
push 0x5b094c
push eax
push dword [esp + 0x14]
call fcn.0041beaf
add esp, 0xc
mov ecx, eax
push esi
call fcn.004229aa
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0xc]
add esp, 4
mov esi, dword [esp + 0x24]
mov dword [esp + 0x58], ebx
cmp esi, ecx
jne 0x422330
mov ebx, ecx
add ecx, ecx
mov dword [esp + 0x54], ecx
call fcn.004b8417
test eax, eax
je 0x4228d5
mov edi, eax
shl ebx, 3
push ebx
mov ebx, dword [esp + 0x18]
push ebx
push eax
call fcn.005669c0
add esp, 0xc
mov ecx, ebx
push 4
pop edx
call fcn.00404040
mov ebx, dword [esp + 0x58]
mov edx, dword [esp]
jmp 0x422334
mov dword [esp + 0x54], ecx
sub ebx, edx
mov dword [esp + 0x14], edi
mov dword [edi + esi*8], ebx
mov dword [edi + esi*8 + 4], edx
inc esi
mov ebx, dword [esp + 4]
mov edx, esi
mov ecx, edi
push ebx
call fcn.00404bf1
pop ecx
cmp eax, 1
mov dword [esp + 0x24], esi
jne 0x422543
mov ecx, edi
mov ebx, edi
mov edi, edx
mov edx, esi
push 0x5b0890
push edi
call fcn.004487f1
pop ecx
pop edx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x80], edi
inc edi
mov edx, esi
mov dword [esp + 0x5c], ecx
mov ecx, ebx
mov dword [esp + 0x18], eax
push 0x5b08a0
mov dword [esp + 0x88], edi
push edi
call fcn.004487f1
pop ecx
pop edx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x7c], ecx
add edx, ecx
mov ecx, dword [esp + 0x18]
push 0x5b08b0
push dword [esp + 8]
push dword [esp + 0x14]
call fcn.0041beaf
add esp, 0xc
mov ebx, dword [esp + 0x5c]
imul ecx, edx, 0x18
mov dword [esp], eax
imul esi, ebx, 0x18
sub edx, ebx
lea edi, [eax + esi]
cmp edx, ebx
jae 0x422465
imul esi, edx, 0x18
push esi
push edi
mov ebx, dword [esp + 0x18]
push ebx
mov dword [esp + 0x14], ecx
call fcn.005669c0
add esp, 0xc
mov ecx, dword [esp]
mov eax, dword [esp + 8]
add esi, ebx
mov ebx, ecx
lea eax, [ecx + eax - 0x18]
cmp edi, ebx
jbe 0x4224d6
cmp esi, dword [esp + 0x10]
jbe 0x4224d6
movsd xmm0, qword [edi - 0x18]
movsd xmm1, qword [esi - 0x18]
xor ecx, ecx
xor edx, edx
ucomisd xmm0, xmm1
setbe cl
seta dl
neg ecx
neg edx
imul ecx, ecx, 0x18
imul edx, edx, 0x18
add esi, ecx
add edi, edx
ucomisd xmm0, xmm1
mov ecx, esi
cmova ecx, 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
add eax, 0xffffffe8
jmp 0x422403
add ecx, eax
mov dword [esp + 8], ecx
push esi
push eax
mov ebx, dword [esp + 0x18]
push ebx
call fcn.005669c0
add esp, 0xc
add esi, ebx
mov dword [esp + 0x1c], esi
cmp ebx, esi
jae 0x4224dc
cmp edi, dword [esp + 8]
jae 0x4224dc
movsd xmm0, qword [ebx]
xor ecx, ecx
xor edx, edx
mov eax, ebx
mov esi, dword [esp]
ucomisd xmm0, qword [edi]
cmova eax, edi
setbe cl
seta dl
movsd xmm0, qword [eax + 0x10]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
imul eax, edx, 0x18
add edi, eax
imul eax, ecx, 0x18
add ebx, eax
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
add esi, 0x18
mov dword [esp], esi
mov esi, dword [esp + 0x1c]
jmp 0x422480
mov ebx, dword [esp + 0x10]
jmp 0x4224df
mov edi, dword [esp]
sub esi, ebx
push esi
push ebx
push edi
call fcn.005669c0
add esp, 0xc
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp esi, dword [esp + 0x84]
jbe 0x422889
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x18]
add eax, dword [esp + 0x5c]
cmp esi, edx
mov dword [edi + edx*8 + 8], eax
mov dword [edi + edx*8 + 0xc], ecx
jbe 0x422897
lea eax, [edi + edx*8]
lea ecx, [edi + edx*8 + 8]
not edx
add edx, esi
shl edx, 3
push edx
push ecx
push eax
call fcn.005669c0
add esp, 0xc
dec esi
jmp 0x422342
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
jmp 0x4221c4
push 4
pop edx
mov ecx, edi
call fcn.00404040
push 8
pop edx
mov ecx, dword [esp + 0x10]
call fcn.00404040
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
imul edi, ebx, 0x18
mov ecx, ebx
mov dword [esp + 0xc], esi
lea eax, [esi + edi]
mov dword [esp + 8], eax
call fcn.00424375
lea esi, [esp + 0x28]
mov dword [esi], eax
mov dword [esi + 4], edx
and dword [esi + 8], 0
mov ecx, esi
mov edx, ebx
call fcn.0041be90
mov ebx, dword [esi + 8]
imul eax, ebx, 0xc
add eax, dword [esi]
mov esi, dword [esp + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x38], esi
lea ecx, [esi + 0x18]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], eax
test edi, edi
je 0x42263f
mov edx, dword [esi + 0xc]
cmp dword [esi + 8], 0
je 0x422647
movsd xmm0, qword [esi + 0x10]
lea eax, [esp + 0x90]
mov dword [esp + 0x10], edx
mov edx, edi
mov edi, ecx
mov ecx, ebx
mov ebx, esi
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x90], xmm1
movsd qword [esp + 0x88], xmm0
mov esi, dword [eax + 8]
movsd xmm0, qword [eax]
mov eax, dword [esp]
mov dword [esp + 0x68], esi
movsd qword [esp + 0x60], xmm0
mov dword [eax + 8], esi
lea esi, [ebx + 0x18]
mov ebx, ecx
mov ecx, edi
mov edi, edx
movsd qword [eax], xmm0
add eax, 0xc
inc ebx
add ecx, 0x18
add edi, 0xffffffe8
mov dword [esp], eax
jmp 0x4225c3
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x10]
lea esi, [esp + 0x38]
mov dword [esi + 8], ecx
xor ecx, ecx
call fcn.0041c1b0
mov ecx, esi
mov dword [esp + 0x30], ebx
call fcn.004186ca
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
test eax, eax
mov dword [esp + 0x90], eax
movsd qword [esp + 0x88], xmm0
je 0x4226af
dec eax
mov dword [esp + 0x90], eax
imul eax, eax, 0xc
mov ecx, dword [esp + 0x88]
mov edx, dword [ecx + eax]
movsd xmm0, qword [ecx + eax + 4]
test edx, edx
movsd qword [esp + 0xc8], xmm0
mov dword [esp + 0x1c], edx
sete byte [esp + 0x10]
jmp 0x4226bc
mov dword [esp + 0x1c], 0
mov byte [esp + 0x10], 1
lea edi, [esp + 0x88]
mov ecx, edi
call fcn.00534664
xor ecx, ecx
xor ebx, ebx
call fcn.0041dba7
mov edx, dword [esp + 0x74]
mov ecx, eax
mov dword [esp + 8], eax
call fcn.0041d9c0
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
movsd xmm0, qword [eax]
mov eax, dword [eax + 8]
mov ecx, esi
mov dword [edi + 0xb], eax
movsd qword [edi + 3], xmm0
mov eax, dword [esp + 0x78]
movsd xmm0, qword [edi]
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [edi + 7]
movsd qword [esp + 0x2f], xmm0
movsd xmm0, qword [eax]
mov eax, dword [eax + 8]
movsd qword [edi + 3], xmm0
mov dword [edi + 0xb], eax
movsd xmm0, qword [edi]
movsd xmm1, qword [edi + 7]
movsd qword [esp + 0x60], xmm0
movsd qword [esp + 0x67], xmm1
call fcn.00424375
lea edi, [esp + 0x38]
mov dword [edi], eax
mov dword [edi + 4], edx
and dword [edi + 8], 0
mov ecx, edi
mov edx, esi
call fcn.0041be90
mov eax, dword [edi + 8]
test esi, esi
je 0x4227ad
imul edx, eax, 0xc
add eax, esi
mov ecx, esi
mov esi, dword [ebp + 8]
add edx, dword [esp + 0x38]
mov dword [esp + 0x18], eax
mov dword [esp], edx
mov edx, dword [esi + ebx]
mov edi, ecx
lea ecx, [esp + 0x88]
push dword [esi + ebx + 8]
call fcn.00413d10
mov ecx, edi
add esp, 4
mov eax, dword [esp + 0x90]
mov edx, dword [esp]
mov dword [edx + ebx + 8], eax
movsd xmm0, qword [esp + 0x88]
movsd qword [edx + ebx], xmm0
add ebx, 0xc
dec ecx
jne 0x42276d
mov eax, dword [esp + 0x18]
movsd xmm0, qword [esp + 0x38]
lea edi, [esp + 0x88]
movsd xmm1, qword [esp + 0x2f]
movsd xmm3, qword [esp + 0x67]
mov esi, dword [esp + 8]
mov dword [edi + 0xb], eax
mov al, 2
mov edx, edi
movsd qword [edi + 3], xmm0
mov ecx, esi
movsd xmm0, qword [edi]
mov byte [edi], 1
movsd qword [esp + 0x38], xmm0
movsd xmm0, qword [edi + 7]
mov byte [edi + 4], al
movsd qword [esp + 0x3f], xmm0
movsd xmm0, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x3f]
movsd qword [edi + 5], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [edi + 0xc], xmm1
mov byte [edi + 0x14], 5
mov byte [edi + 0x18], al
movsd qword [edi + 0x20], xmm3
movsd qword [edi + 0x19], xmm0
movsd xmm0, qword [esp + 0x38]
mov byte [edi + 0x28], 4
mov byte [edi + 0x2c], 3
movsd qword [edi + 0x34], xmm2
movsd qword [edi + 0x2d], xmm0
call fcn.00422908
cmp byte [esp + 0x10], 0
jne 0x42287f
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], eax
mov byte [esp + 0x88], 2
push 0xc
pop edx
mov ecx, esi
push edi
call fcn.0041deef
pop ecx
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [esp + 0x88]
mov edx, 0x5b08c0
jmp 0x4228a3
lea ecx, [esp + 0x88]
mov edx, 0x5b0900
mov dword [ecx], str.Index_out_of_bounds
mov dword [ecx + 4], 1
and dword [ecx + 0x10], 0
mov dword [ecx + 8], str.assertion_failed:_mid___self.len__chunk_size_must_be_non_zero
and dword [ecx + 0xc], 0
call fcn.005769a0
ud2
push 0x2c
pop edx
mov ecx, str.assertion_failed:_end___start__end___len0_b_
push 0x5b093c
jmp 0x4228e2
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valuecalled__Result::unwrap____on_an__Err__value
push 0x5b08f0
call fcn.00576b20
pop eax
ud2
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valuecalled__Result::unwrap____on_an__Err__value
push 0x5b08d0
jmp 0x4228e2
push 0x2b
pop edx
mov ecx, str.called__Option::unwrap____on_a__None__valuecalled__Result::unwrap____on_an__Err__value
push 0x5b08e0
jmp 0x4228e2