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

Disassembly:
mov dword [rsp + 0x20], r9d
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
sub rsp, 0xa8
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov esi, r9d
mov rdi, r8
mov rbp, rdx
cmp r9d, 0x400
jbe 0x1000f681
mov eax, 1
jmp 0x1000fe01
mov eax, dword [rcx + 0x28]
mov dword [rsp + 0x28], eax
cmp dword [rcx + 0x88], r9d
ja 0x1000f768
lea rbx, [rcx + 0x80]
mov rcx, rbx
call fcn.100034ac
mov ecx, 0x10
call fcn.10003f74
mov r11, rax
test rax, rax
je 0x1000f6c7
mov qword [rax], 0
mov qword [rax + 8], 0
jmp 0x1000f6ca
xor r11d, r11d
mov ecx, dword [rbx + 8]
lea eax, [rcx + 1]
mov dword [rbx + 8], eax
mov rax, qword [rbx]
mov qword [rax + rcx*8], r11
mov rax, qword [rsp + 0xd0]
cmp dword [rax + 0x88], esi
ja 0x1000f70a
mov dword [rsp + 0xe8], 0x7b
lea rdx, [0x1018bf90]
lea rcx, [rsp + 0xe8]
call sub.msvcrt.dll__CxxThrowException
int3
mov ecx, dword [rbx + 8]
mov rax, qword [rbx]
mov rbx, qword [rax + rcx*8 - 8]
mov esi, dword [rsp + 0x28]
cmp rsi, qword [rbx + 8]
je 0x1000f758
mov rcx, qword [rbx]
test rcx, rcx
je 0x1000f733
call sub.msvcrt.dll_free
mov qword [rbx], 0
mov qword [rbx + 8], 0
test rsi, rsi
je 0x1000f761
mov rcx, rsi
call fcn.10003f74
mov qword [rbx], rax
mov qword [rbx + 8], rsi
mov esi, dword [rsp + 0xe8]
jmp 0x1000f768
mov esi, dword [rsp + 0xe8]
jmp 0x1000f768
mov esi, dword [rsp + 0xe8]
mov ecx, esi
mov r9, qword [rsp + 0xd0]
mov rax, qword [r9 + 0x80]
mov rbx, qword [rax + rcx*8]
mov r8, qword [rbx]
mov rdx, rbp
mov rcx, r9
call fcn.1000d294
test eax, eax
jne 0x1000fe01
mov rsi, qword [rbx]
mov ebp, dword [rsp + 0x28]
mov rdx, rbp
mov rcx, rsi
call fcn.1000c9e4
test al, al
je 0x1000f7d4
mov ecx, dword [rsi + 0x18]
mov edx, dword [rsi + 0x1c]
movzx eax, word [rsi + 0x20]
mov word [rsp + 0x58], ax
movzx r10d, word [rsi + 0x22]
mov eax, dword [rsi + 0x24]
mov dword [rsp + 0x68], eax
movzx r11d, word [rsi + 0x28]
movzx eax, word [rsi + 0x2a]
mov word [rsp + 0x22], ax
jmp 0x1000f7de
mov eax, 1
jmp 0x1000fe01
mov ebx, 1
add qword [rdi + 0x58], rbx
mov r9, qword [rdi + 0x58]
cmp edx, dword [rdi + 0x60]
je 0x1000f7f7
mov eax, ebx
jmp 0x1000fe01
mov r8d, ebp
mov ebp, dword [rsp + 0xe8]
test ebp, ebp
jne 0x1000f8c0
cmp cx, 2
je 0x1000f816
mov eax, ebx
jmp 0x1000fe01
mov dl, byte [rsp + 0x58]
test bl, dl
jne 0x1000f825
mov eax, ebx
jmp 0x1000fe01
mov r9d, dword [rsp + 0x28]
lea r8d, [r9 - 0x28]
mov ecx, r8d
add rcx, rsi
mov eax, dword [rcx]
mov dword [rdi + 0x30], eax
mov eax, dword [rcx + 4]
mov dword [rdi + 0x34], eax
mov eax, dword [rcx + 8]
mov dword [rdi + 0x38], eax
mov eax, dword [rcx + 0xc]
mov dword [rdi + 0x3c], eax
mov eax, dword [rcx + 0x10]
mov dword [rdi + 0x40], eax
mov eax, dword [rcx + 0x14]
mov dword [rdi + 0x44], eax
mov rax, qword [rcx + 0x18]
mov qword [rdi + 0x48], rax
mov rax, qword [rcx + 0x20]
mov qword [rdi + 0x50], rax
cmp dword [rdi + 0x38], r9d
jb 0x1000f874
mov eax, ebx
jmp 0x1000fe01
mov ecx, dword [rdi + 0x30]
mov eax, ecx
shr eax, 3
test bl, al
je 0x1000f890
mov eax, ecx
shr eax, 4
test bl, al
je 0x1000f890
mov eax, ebx
jmp 0x1000fe01
shr ecx, 4
and cl, bl
cmp cl, byte [rdi + 0x64]
je 0x1000f8a1
mov eax, ebx
jmp 0x1000fe01
mov eax, 0x7fffffff
cmp qword [rdi + 0x50], rax
jbe 0x1000f8b3
mov eax, ebx
jmp 0x1000fe01
cmp qword [rdi + 0x48], rax
jbe 0x1000f8f3
mov eax, ebx
jmp 0x1000fe01
cmp cx, 3
je 0x1000f8cd
mov eax, ebx
jmp 0x1000fe01
mov dl, byte [rsp + 0x58]
test bl, dl
je 0x1000f8dc
mov eax, ebx
jmp 0x1000fe01
cmp r9, qword [rdi + 0x50]
ja 0x1000fdff
mov eax, dword [rdi + 8]
cmp rax, qword [rdi + 0x48]
ja 0x1000fdff
mov al, dl
shr al, 1
and al, bl
mov byte [rsp + 0x20], al
je 0x1000f90c
test r10w, r10w
je 0x1000f919
mov eax, ebx
jmp 0x1000fe01
test r10w, r10w
jne 0x1000f919
mov eax, ebx
jmp 0x1000fe01
lea eax, [r8 - 0x38]
movzx ecx, r11w
cmp ecx, eax
jae 0x1000f932
movzx r9d, word [rsp + 0x22]
sub eax, ecx
cmp r9d, eax
jbe 0x1000f939
mov eax, ebx
jmp 0x1000fe01
lea eax, [r9 + rcx + 0x38]
mov r10d, r8d
sub r10d, eax
mov dword [rsp + 0x74], r10d
shr dl, 2
and dl, bl
mov byte [rsp + 0x24], dl
mov cl, dl
neg cl
sbb ecx, ecx
and ecx, 0xfffffffc
add ecx, 8
mov dword [rsp + 0x78], ecx
xor edx, edx
mov eax, r9d
div ecx
mov ecx, dword [rsp + 0x68]
cmp eax, ecx
jae 0x1000f978
mov eax, ebx
jmp 0x1000fe01
mov dword [rsp + 0x6c], 0
movsxd rax, r8d
mov qword [rsp + 0x80], rax
test ecx, ecx
je 0x1000fde0
movzx ecx, r11w
mov qword [rsp + 0x90], rcx
xor r11d, r11d
mov eax, r11d
mov dword [rsp + 0x70], eax
add rax, rcx
cmp byte [rsp + 0x24], r11b
je 0x1000fb54
movzx ecx, word [rax + rsi + 0x38]
movzx ebp, word [rax + rsi + 0x3a]
mov eax, ecx
add eax, dword [rdi + 0x38]
cmp eax, r10d
ja 0x1000fdb9
movzx edx, bp
cmp edx, r10d
ja 0x1000fdb9
mov qword [rsp + 0x40], r11
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x50], r11
mov qword [rsp + 0x58], r11
movzx eax, cx
movzx ecx, word [rsp + 0x22]
add rax, rsi
lea rax, [rcx + rax + 0x38]
mov qword [rsp + 0x30], rax
mov eax, dword [rdi + 0x38]
mov qword [rsp + 0x88], rax
cmp rax, r11
je 0x1000fa46
mov qword [rsp + 0x48], r11
mov rcx, rax
call fcn.10003f74
mov qword [rsp + 0x40], rax
mov r8, qword [rsp + 0x88]
mov qword [rsp + 0x48], r8
mov rdx, qword [rsp + 0x30]
mov rcx, rax
call sub.msvcrt.dll_memcpy
movzx edx, bp
xor r11d, r11d
movzx ecx, bp
mov rax, qword [rsp + 0x80]
sub rax, rcx
add rax, rsi
mov qword [rsp + 0x30], rax
cmp byte [rsp + 0x20], r11b
je 0x1000fb00
cmp edx, dword [rdi + 0x3c]
jb 0x1000fd9c
mov ebp, dword [rdi + 0x3c]
cmp rbp, r11
je 0x1000fa9f
mov qword [rsp + 0x58], r11
mov rcx, rbp
call fcn.10003f74
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rbp
mov r8, rbp
mov rdx, qword [rsp + 0x30]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov rcx, rdi
call fcn.100034ac
mov ecx, 0x20
call fcn.10003f74
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1000facd
lea rdx, [rsp + 0x40]
mov rcx, rax
call fcn.1000d928
mov r11, rax
jmp 0x1000fad0
xor r11d, r11d
mov ecx, dword [rdi + 8]
lea eax, [rcx + 1]
mov dword [rdi + 8], eax
mov rax, qword [rdi]
mov qword [rax + rcx*8], r11
mov rcx, qword [rsp + 0x50]
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
mov ebp, dword [rsp + 0xe8]
jmp 0x1000fd6b
cmp bp, 8
jb 0x1000fd9e
mov rdx, qword [rax]
mov eax, dword [rdi + 0x30]
shr eax, 4
test bl, al
je 0x1000fda4
mov ebp, dword [rsp + 0xe8]
lea r9d, [rbp + 1]
mov r8, rdi
mov rcx, qword [rsp + 0xd0]
call fcn.1000f644
test eax, eax
jne 0x1000fda0
xor ecx, ecx
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
jmp 0x1000fd6b
movzx r9d, word [rax + rsi + 0x38]
movzx r8d, word [rax + rsi + 0x3a]
mov word [rsp + 0x38], r8w
movzx ebp, word [rax + rsi + 0x3c]
movzx edx, word [rax + rsi + 0x3e]
mov word [rsp + 0x3a], dx
mov eax, r9d
cmp r9d, r10d
jae 0x1000fddc
mov ecx, r10d
sub ecx, eax
movzx eax, r8w
cmp eax, ecx
ja 0x1000fddc
movzx eax, bp
cmp eax, r10d
ja 0x1000fddc
cmp dx, bp
ja 0x1000fddc
mov qword [rsp + 0x40], r11
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x50], r11
mov qword [rsp + 0x58], r11
movzx eax, r9w
movzx ecx, word [rsp + 0x22]
add rax, rsi
lea rax, [rcx + rax + 0x38]
mov qword [rsp + 0x30], rax
movzx eax, r8w
cmp rax, r11
je 0x1000fc0e
mov qword [rsp + 0x48], r11
mov rcx, rax
call fcn.10003f74
mov qword [rsp + 0x40], rax
movzx ecx, word [rsp + 0x38]
mov r8, rcx
mov qword [rsp + 0x48], rcx
mov rdx, qword [rsp + 0x30]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov dx, word [rsp + 0x3a]
xor r11d, r11d
movzx ecx, bp
mov rax, qword [rsp + 0x80]
sub rax, rcx
add rax, rsi
mov qword [rsp + 0x30], rax
cmp byte [rsp + 0x20], r11b
je 0x1000fcbf
movzx ebp, dx
cmp rbp, r11
je 0x1000fc5e
mov qword [rsp + 0x58], r11
mov rcx, rbp
call fcn.10003f74
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rbp
mov r8, rbp
mov rdx, qword [rsp + 0x30]
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov rcx, rdi
call fcn.100034ac
mov ecx, 0x20
call fcn.10003f74
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1000fc8c
lea rdx, [rsp + 0x40]
mov rcx, rax
call fcn.1000d928
mov r11, rax
jmp 0x1000fc8f
xor r11d, r11d
mov ecx, dword [rdi + 8]
lea eax, [rcx + 1]
mov dword [rdi + 8], eax
mov rax, qword [rdi]
mov qword [rax + rcx*8], r11
mov rcx, qword [rsp + 0x50]
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
mov ebp, dword [rsp + 0xe8]
jmp 0x1000fd6b
cmp bp, 8
jb 0x1000fdda
cmp dx, 8
jne 0x1000fdda
mov r9, qword [rax]
mov eax, dword [rdi + 0x30]
shr eax, 4
test bl, al
jne 0x1000fdbd
mov r8d, r11d
mov edx, dword [rdi + 0x18]
cmp edx, r11d
je 0x1000fd12
mov r10, qword [rdi + 0x10]
lea ecx, [r8 + rdx]
shr ecx, 1
cmp r9, qword [r10 + rcx*8]
je 0x1000fd17
cmp r9, qword [r10 + rcx*8]
jae 0x1000fd09
mov edx, ecx
jmp 0x1000fd0d
lea r8d, [rcx + 1]
cmp r8d, edx
jne 0x1000fcf3
mov ecx, 0xffffffff
cmp ecx, 0xffffffff
je 0x1000fdbf
mov edx, ecx
shl rdx, 4
add rdx, qword [rdi + 0x20]
mov eax, dword [rsp + 0x28]
cmp dword [rdx + 4], eax
jne 0x1000fdc1
mov ebp, dword [rsp + 0xe8]
lea r9d, [rbp + 1]
mov r8, rdi
mov rdx, qword [rdx + 8]
mov rcx, qword [rsp + 0xd0]
call fcn.1000f644
test eax, eax
jne 0x1000fdc3
xor ecx, ecx
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
mov ecx, dword [rsp + 0x6c]
add ecx, ebx
mov dword [rsp + 0x6c], ecx
mov eax, dword [rsp + 0x70]
add eax, dword [rsp + 0x78]
mov dword [rsp + 0x70], eax
cmp ecx, dword [rsp + 0x68]
jae 0x1000fde0
mov r10d, dword [rsp + 0x74]
mov rcx, qword [rsp + 0x90]
xor r11d, r11d
jmp 0x1000f9a9
jmp 0x1000fda4
jmp 0x1000fda4
mov ebx, eax
jmp 0x1000fda4
xor ecx, ecx
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
mov eax, ebx
jmp 0x1000fe01
mov eax, ebx
jmp 0x1000fe01
jmp 0x1000fdc5
jmp 0x1000fdc5
jmp 0x1000fdc5
mov ebx, eax
xor ecx, ecx
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x40]
call sub.msvcrt.dll_free
mov eax, ebx
jmp 0x1000fe01
jmp 0x1000fdc5
mov eax, ebx
jmp 0x1000fe01
test ebp, ebp
jne 0x1000fdfb
mov rax, qword [rdi + 0x50]
cmp qword [rdi + 0x58], rax
jne 0x1000fdf7
mov eax, dword [rdi + 8]
cmp rax, qword [rdi + 0x48]
je 0x1000fdfb
mov eax, ebx
jmp 0x1000fe01
xor eax, eax
jmp 0x1000fe01
mov eax, ebx
add rsp, 0xa8
pop rdi
pop rsi
pop rbp
pop rbx
ret