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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xf8
mov eax, dword [rsp + 0x168]
mov r12, qword [rcx]
mov qword [rsp + 0x158], r9
mov rbx, rcx
mov r15, rdx
mov dword [rsp + 0x68], eax
test al, al
jne 0x61665761
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x18], 0
je 0x61666100
mov rax, qword [rsp + 0x158]
mov r14, qword [r15 + 0x20]
cmp byte [rax + 8], 0
je 0x61665eb8
mov rax, qword [rsp + 0x158]
mov qword [rbx + 0x20], 0
movdqu xmm4, xmmword [rax + 0x20]
movdqu xmm0, xmmword [rax]
movdqu xmm2, xmmword [rax + 0x10]
movups xmmword [rsp + 0xc0], xmm0
movups xmmword [rsp + 0xd0], xmm2
movups xmmword [rsp + 0x40], xmm4
movups xmmword [rsp + 0xe0], xmm4
cmp qword [rax + 0x10], r14
jb 0x6166590a
cmp byte [r12 + 0x141], 0
jne 0x61665ff0
test r14, r14
je 0x616662c0
lea rax, [rsp + 0xe0]
lea r13, [rsp + 0xa0]
mov edi, 0xffffff80
xor esi, esi
mov qword [rsp + 0x60], rax
mov rbp, rax
lea rax, [rsp + 0x80]
mov qword [rsp + 0x40], rax
mov rax, r13
mov r13, rbx
mov rbx, rax
jmp 0x61665835
mov rax, rsi
shr dil, 1
and eax, 7
cmp rax, 7
jne 0x61665828
add rbp, 1
mov edi, 0xffffff80
add rsi, 1
cmp rsi, r14
je 0x61665920
test byte [rbp], dil
je 0x61665810
mov rcx, qword [rsp + 0x40]
mov r9, r12
mov r8, rsi
mov rdx, r15
mov dword [rsp + 0x30], 1
mov eax, dword [r13 + 0x1c]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x160]
mov dword [rsp + 0x20], eax
call fcn.61665570
mov dword [rsp + 0x30], 0
mov eax, dword [r13 + 0x1c]
mov rdx, r15
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x160]
mov dword [rsp + 0x20], eax
call fcn.61665570
mov r10d, dword [rsp + 0x80]
test r10b, 0x10
jne 0x616658b3
mov eax, dword [rsp + 0xa0]
mov edx, eax
mov dword [rsp + 0x58], eax
and edx, 0x10
je 0x61665dd0
mov rdx, qword [rsp + 0x40]
mov r8, rbx
mov rcx, r13
call fcn.616663e0
mov eax, edi
not eax
and byte [rbp], al
jmp 0x61665810
mov rax, qword [rax]
test rax, rax
je 0x616658f8
mov r11d, dword [rax]
test r11d, r11d
jne 0x616658f8
mov rdi, qword [rsp + 0x158]
mov dword [rax], 0x12
cmp byte [rdi + 8], 0
jne 0x61665777
cmp byte [r12 + 0xc], 0
je 0x6166590a
mov dword [rax], 0
mov byte [rbx + 0x19], 0
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsp + 0x68], 0
mov rbx, r13
jne 0x61665a00
mov r10, qword [rsp + 0x60]
lea rsi, [rsp + 0xa0]
mov r13d, 0xffffff80
xor ebp, ebp
lea rdi, [rsp + 0x80]
mov rax, rsi
mov rsi, r10
mov r10, r14
mov r14, r15
mov r15, r12
mov r12, rdi
mov rdi, rbx
mov rbx, rax
jmp 0x6166598e
mov rax, rbp
shr r13b, 1
and eax, 7
cmp rax, 7
jne 0x61665981
add rsi, 1
mov r13d, 0xffffff80
add rbp, 1
cmp rbp, r10
je 0x61665f40
test byte [rsi], r13b
je 0x61665968
mov r9, r15
mov r8, rbp
mov rdx, r14
mov rcx, r12
mov dword [rsp + 0x30], 1
mov eax, dword [rdi + 0x1c]
mov qword [rsp + 0x40], r10
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x160]
mov dword [rsp + 0x20], eax
call fcn.61665570
mov dword [rsp + 0x30], 0
mov eax, dword [rdi + 0x1c]
mov rdx, r14
mov rcx, rbx
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x160]
mov dword [rsp + 0x20], eax
call fcn.61665570
mov r8, rbx
mov rdx, r12
mov rcx, rdi
call fcn.616663e0
mov r10, qword [rsp + 0x40]
jmp 0x61665968
mov r8d, dword [r13 + 0x20]
test r8d, r8d
je 0x61665a38
mov edi, dword [rbx + 0x38]
test edi, edi
jg 0x61665a38
lea eax, [r8 - 1]
shl rax, 5
mov esi, dword [rbx + rax + 0x38]
test esi, esi
js 0x61665a38
mov rax, qword [rbx + 0x10]
mov qword [rax + 0x20], 0
jmp 0x61665ade
mov eax, dword [rbx + 0x1c]
lea r8, [rsp + 0xa0]
lea rdx, [rsp + 0x80]
mov rcx, rbx
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x88], 0
mov dword [rsp + 0x98], eax
mov qword [rsp + 0x90], 0
mov dword [rsp + 0x80], 0x31
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
call fcn.616663e0
mov r8d, dword [rbx + 0x20]
mov rax, qword [rbx + 0x10]
mov qword [rax + 0x20], 0
test r8d, r8d
je 0x61665d3e
mov qword [rsp + 0x148], r15
xor esi, esi
nop dword [rax + rax]
lea r12, [rsi + 1]
mov rbp, rsi
mov rcx, r12
shl rcx, 5
mov eax, dword [rbx + rcx + 8]
mov r14d, eax
and r14d, 0xc
je 0x61665b16
mov rbp, r12
add rcx, 0x20
lea r12, [rsi + 2]
and eax, 0x10
mov edi, eax
jne 0x61665c50
mov rax, rsi
mov edx, 0x10000
mov r11d, 0
mov r15d, 0
shl rax, 5
mov r13d, dword [rbx + rax + 0x3c]
mov rax, rbp
shl rax, 5
movzx r10d, r13w
mov r9d, dword [rbx + rax + 0x3c]
sub edx, r10d
test r10d, r10d
cmovne r11d, edx
movzx eax, r9w
mov edx, 0x10000
sub edx, eax
test eax, eax
cmove edx, r15d
cmp r11d, edx
cmovle edx, r11d
cmp r10d, eax
cmovle eax, r10d
sub r8d, 1
mov r10d, eax
neg r10d
cmp rbp, r8
jae 0x61665d60
mov r11, r12
lea r8d, [r9 + rdx + 0x8000]
shl r11, 5
cmp dword [rbx + r11 + 0x3c], r8d
jge 0x61665d60
test rsi, rsi
je 0x61665bc7
mov r11, rsi
mov r8d, 0xffff8000
sub r8d, eax
shl r11, 5
add r8d, r13d
cmp dword [r11 + rbx + 0x1c], r8d
jg 0x61666180
mov edi, r10d
cmp edx, eax
jge 0x61665be0
test byte [rbx + rcx + 0x28], 0x10
je 0x6166618e
nop dword [rax]
mov rax, rsi
add r13d, edi
shl rax, 5
mov dword [rbx + rax + 0x3c], r13d
test r14d, r14d
je 0x61665dc0
mov rdx, rbp
lea eax, [r9 + rdi]
shl rdx, 5
mov dword [rbx + rdx + 0x3c], eax
test rsi, rsi
jne 0x61665c55
mov rax, rbp
sub rbp, 1
shl rax, 5
shl rbp, 5
add rax, rbx
add rbp, rbx
mov edx, dword [rax + 0x38]
mov ecx, dword [rbp + 0x38]
cmp edx, ecx
je 0x61665c3b
sub edx, ecx
mov ecx, dword [rax + 0x3c]
sub ecx, dword [rbp + 0x3c]
call fcn.615a8650
mov dword [rbp + 0x40], eax
mov eax, dword [rbx + 0x20]
mov r8, rax
cmp rax, r12
jbe 0x61665c91
mov rsi, r12
jmp 0x61665af0
test rsi, rsi
je 0x61665c81
lea rdi, [rsi - 1]
shl rsi, 5
shl rdi, 5
add rsi, rbx
add rdi, rbx
mov edx, dword [rsi + 0x38]
mov eax, dword [rdi + 0x38]
cmp edx, eax
je 0x61665c81
mov ecx, dword [rsi + 0x3c]
sub edx, eax
sub ecx, dword [rdi + 0x3c]
call fcn.615a8650
mov dword [rdi + 0x40], eax
test r14d, r14d
jne 0x61665c0c
mov eax, dword [rbx + 0x20]
mov r8, rax
cmp rax, r12
ja 0x61665c46
mov r13, qword [rbx + 0x10]
mov r15, qword [rsp + 0x148]
mov rdi, qword [r13 + 0x20]
test rdi, rdi
je 0x61665d3e
mov r12, qword [r13 + 0x10]
lea r9, [rdi - 1]
mov rbp, qword [r13 + 0x30]
mov r8, rdi
imul r9, r12
add r9, rbp
sub r8, 1
mov rdx, r9
cmp rdi, r8
ja 0x61665cf0
mov rax, qword [r13 + 8]
mov rdx, rbp
test rax, rax
je 0x61665cf0
mov r11d, dword [rax]
test r11d, r11d
jne 0x61665cf0
mov dword [rax], 0x82
nop word cs:[rax + rax]
mov rcx, qword [rdx]
mov r10d, dword [rdx + 8]
mov rdx, rcx
lea rax, [rcx + 1]
shl rdx, 5
shl rax, 5
add rdx, rbx
add rax, rbx
mov r11d, dword [rdx + 0x3c]
add r11d, r10d
lea esi, [r11 + 0x8000]
cmp dword [rax + 0x3c], esi
jl 0x61665d36
mov dword [rdx + 0x3c], r11d
test byte [rax + 8], 0xc
je 0x61665d36
sub rcx, 1
shl rcx, 5
add dword [rbx + rcx + 0x3c], r10d
sub r9, r12
test r8, r8
jne 0x61665cc0
cmp byte [rsp + 0x68], 0
je 0x61665fe0
mov rax, qword [rsp + 0x158]
mov byte [rbx + 0x18], 1
mov byte [rax + 9], 0
jmp 0x6166590a
test rsi, rsi
je 0x61665db0
lea rdi, [rsi - 1]
mov ecx, 0xffff8000
mov r8, rdi
sub ecx, eax
shl r8, 5
add ecx, r13d
cmp dword [rbx + r8 + 0x3c], ecx
jle 0x61665db0
mov rax, rsi
add r13d, edx
shl rax, 5
mov dword [rbx + rax + 0x3c], r13d
test r14d, r14d
je 0x61665c59
mov rax, rbp
add edx, r9d
shl rax, 5
mov dword [rbx + rax + 0x3c], edx
jmp 0x61665c59
cmp edx, eax
mov edi, edx
cmovg edi, r10d
jmp 0x61665be0
test rsi, rsi
je 0x61665c3b
jmp 0x61665c55
mov ecx, dword [r12 + 0x13c]
mov r8d, dword [r12 + 0x14c]
test ecx, ecx
je 0x61665810
mov r11d, eax
mov eax, dword [rsp + 0x90]
mov r9d, dword [rsp + 0xb0]
and r11d, 0xa
mov dword [rsp + 0x6c], eax
mov eax, r10d
mov dword [rsp + 0x78], r9d
and eax, 5
jne 0x61666058
test r11d, r11d
je 0x61665810
mov dword [rsp + 0x6c], r10d
lea rdx, [r12 + 0x198]
mov r11d, r9d
jmp 0x61665e3f
add eax, 1
add rdx, 0x14
cmp ecx, eax
je 0x61665810
cmp byte [rdx + 0x10], 0
jne 0x61665e30
mov r9d, dword [rdx]
mov r10d, r9d
sub r10d, r8d
cmp r10d, r11d
jg 0x61665e30
mov r10d, dword [rdx + 4]
add r10d, r8d
cmp r11d, r10d
jg 0x61665e30
mov r10d, dword [rsp + 0x6c]
cmp byte [r12 + 0x140], 0
mov ecx, dword [rsp + 0xb4]
je 0x61666360
mov eax, eax
lea rax, [rax + rax*4]
mov r8d, dword [r12 + rax*4 + 0x1a4]
mov eax, r8d
sub eax, ecx
test r10d, r10d
jne 0x616663ca
add eax, ecx
mov dword [rsp + 0xb4], eax
mov eax, dword [rsp + 0x58]
or eax, 0x10
mov dword [rsp + 0xa0], eax
jmp 0x616658b3
mov rcx, qword [r8 + 0x20]
add rcx, r14
cmp rcx, 0x60
ja 0x616658d0
mov qword [rax + 0x10], rcx
mov rdi, rax
lea rax, [rcx + 7]
mov r10d, 0x101
shr rax, 3
mov word [rdi + 8], r10w
mov qword [rdi + 0x18], rax
test rcx, rcx
je 0x61665f2d
test rax, rax
je 0x61665f15
lea rdx, [rdi + 0x20]
mov r10, 0xffffffffffffffff
cmp eax, 8
jae 0x616661f0
test al, 4
jne 0x616663a0
test eax, eax
jne 0x616662d6
mov rdi, qword [rsp + 0x158]
neg ecx
mov edx, 0xffffffff
and ecx, 7
shl edx, cl
and byte [rdi + rax + 0x1f], dl
mov r14, qword [r15 + 0x20]
jmp 0x61665777
mov eax, dword [rdi + 0x20]
mov rbx, rdi
mov r15, r14
mov r8d, eax
mov rdx, qword [rbx + 0x10]
mov qword [rdx + 0x20], 0
test eax, eax
jne 0x61665ade
test eax, eax
je 0x61665d49
lea rdx, [rbx + 0x28]
xor ecx, ecx
jmp 0x61665f8a
mov dword [rax + 0x10], r9d
mov byte [rax], 1
mov eax, dword [rbx + 0x20]
mov r8d, eax
add rdx, 0x20
cmp r8, rcx
jbe 0x61665d49
mov r8d, dword [rdx]
add rcx, 1
test r8b, 0x20
jne 0x61665f7a
mov rax, qword [rdx + 8]
cmp rax, qword [r15 + 0x20]
jb 0x61665fc0
mov r9, qword [r15 + 8]
xor eax, eax
test r9, r9
je 0x61665fc0
mov r10d, dword [r9]
test r10d, r10d
jne 0x61665fc0
mov dword [r9], 0x82
mov r8d, dword [rdx]
nop
imul rax, qword [r15 + 0x10]
add rax, qword [r15 + 0x30]
and r8d, 0xa
mov r9d, dword [rdx + 0x14]
jne 0x61665f70
mov dword [rax + 0xc], r9d
jmp 0x61665f74
mov eax, dword [rbx + 0x20]
jmp 0x61665f60
lea r13, [rsp + 0xa0]
mov rcx, rbx
lea rdx, [r12 + 0x178]
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov r8, r13
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
call fcn.616663e0
lea r8, [r12 + 0x158]
mov rdx, r13
mov rcx, rbx
call fcn.616663e0
jmp 0x616657cb
lea rax, [r12 + 0x198]
test r11d, r11d
jne 0x61666240
mov dword [rsp + 0x78], r10d
mov edx, dword [rsp + 0x6c]
jmp 0x61666089
add r11d, 1
add rax, 0x14
cmp ecx, r11d
je 0x61665810
cmp byte [rax + 0x10], 0
je 0x61666078
mov r9d, dword [rax]
sub r9d, r8d
cmp edx, r9d
jl 0x61666078
mov r9d, dword [rax + 4]
lea r10d, [r9 + r8]
cmp edx, r10d
jg 0x61666078
mov r10d, dword [rsp + 0x78]
cmp byte [r12 + 0x140], 0
mov edx, dword [rsp + 0x94]
je 0x61666328
lea rax, [r11 + r11*4]
mov eax, dword [r12 + rax*4 + 0x1a4]
sub eax, edx
add edx, eax
mov dword [rsp + 0x94], edx
mov edx, r10d
or edx, 0x10
mov dword [rsp + 0x80], edx
mov edx, dword [rsp + 0x58]
test edx, edx
je 0x616658b3
mov ecx, dword [rsp + 0xb4]
jmp 0x61665e96
mov rax, qword [r9]
mov dword [rsp + 0x28], 1
lea r9, [rsp + 0xc0]
mov qword [rsp + 0x150], r8
mov qword [rsp + 0xc0], rax
mov eax, dword [rsp + 0x160]
mov qword [rsp + 0xc8], 0
mov dword [rsp + 0x20], eax
mov qword [rsp + 0xd0], 0
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0xe0], 0
mov qword [rsp + 0xe8], 0
call fcn.61665720
mov r8, qword [rsp + 0x150]
jmp 0x61665761
xor r10d, r10d
test byte [rbx + rcx + 0x28], 0x10
jne 0x61665be0
sub edx, r10d
mov r10, qword [rbx + 0x10]
mov qword [rsp + 0xa0], rbp
mov dword [rsp + 0xa8], edx
mov rcx, qword [r10 + 0x20]
cmp rcx, qword [r10 + 0x18]
je 0x616662f6
mov r8, qword [r10 + 0x10]
lea rdx, [rsp + 0xa0]
mov dword [rsp + 0x58], r9d
mov qword [rsp + 0x40], r10
imul rcx, r8
add rcx, qword [r10 + 0x30]
call sub.msvcrt.dll_memcpy
mov r10, qword [rsp + 0x40]
mov r9d, dword [rsp + 0x58]
add qword [r10 + 0x20], 1
jmp 0x61665be0
mov r8d, eax
mov qword [rdi + 0x20], 0xffffffffffffffff
mov qword [rdx + r8 - 8], 0xffffffffffffffff
mov rdi, qword [rsp + 0x158]
lea r9, [rdi + 0x28]
and r9, 0xfffffffffffffff8
sub rdx, r9
add edx, eax
and edx, 0xfffffff8
cmp edx, 8
jb 0x61665f15
and edx, 0xfffffff8
xor r8d, r8d
mov r11d, r8d
add r8d, 8
mov qword [r9 + r11], r10
cmp r8d, edx
jb 0x6166622b
jmp 0x61665f15
mov qword [rsp + 0x70], rbp
mov r11d, dword [rsp + 0x6c]
mov dword [rsp + 0x7c], r10d
mov ebp, dword [rsp + 0x78]
jmp 0x6166627c
sub r9d, r8d
cmp r9d, r11d
jg 0x61666271
mov r9d, dword [rax + 4]
lea r10d, [r8 + r9]
cmp r11d, r10d
jle 0x616663b8
add edx, 1
add rax, 0x14
cmp edx, ecx
je 0x616662b0
cmp byte [rax + 0x10], 0
mov r9d, dword [rax]
jne 0x61666258
mov r10d, r9d
sub r10d, r8d
cmp r10d, ebp
jg 0x61666271
mov r10d, dword [rax + 4]
add r10d, r8d
cmp ebp, r10d
jg 0x61666271
mov rbp, qword [rsp + 0x70]
mov r10d, dword [rsp + 0x7c]
mov eax, edx
jmp 0x61665e64
mov rbp, qword [rsp + 0x70]
jmp 0x61665810
mov eax, dword [rbx + 0x20]
cmp byte [rsp + 0x68], 0
mov r8d, eax
jne 0x61665a04
jmp 0x61665f4c
mov byte [rdi + 0x20], 0xff
test al, 2
je 0x61665f15
mov r8d, eax
mov r9d, 0xffffffff
mov word [rdx + r8 - 2], r9w
jmp 0x61665f15
lea rdx, [rcx + rcx + 0x10]
mov rcx, r10
mov dword [rsp + 0x40], r9d
mov qword [rsp + 0x58], r10
call fcn.61662180
mov r9d, dword [rsp + 0x40]
test al, al
je 0x61665be0
mov r10, qword [rsp + 0x58]
mov rcx, qword [r10 + 0x20]
jmp 0x616661b2
lea eax, [rdx + 0x8000]
sub r9d, dword [rsp + 0x6c]
xor ax, ax
cmp r9d, dword [r12 + 0x148]
jl 0x616660ce
lea rcx, [r11 + r11*4]
mov ecx, dword [r12 + rcx*4 + 0x1a4]
sub ecx, 0x10000
cmp eax, ecx
cmovg eax, ecx
jmp 0x616660ce
lea edx, [rcx + 0x8000]
xor dx, dx
mov r8d, edx
mov edx, dword [rsp + 0x78]
sub edx, r9d
cmp edx, dword [r12 + 0x148]
jl 0x61665e88
mov eax, eax
lea rax, [rax + rax*4]
mov eax, dword [r12 + rax*4 + 0x1a4]
add eax, 0x10000
cmp r8d, eax
cmovl r8d, eax
jmp 0x61665e88
mov r8d, eax
mov dword [rdi + 0x20], 0xffffffff
mov dword [rdx + r8 - 4], 0xffffffff
jmp 0x61665f15
mov rbp, qword [rsp + 0x70]
mov r10d, dword [rsp + 0x7c]
mov r11d, edx
jmp 0x616660ac
mov edx, dword [rsp + 0x94]
jmp 0x616660d0