Function at 0x140186450
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, 0x188
mov r15, qword [rcx + 8]
mov eax, dword [rcx + 0x18]
mov rsi, qword [rcx + 0x70]
mov rbx, qword [rcx + 0x38]
mov r10, rcx
mov r14, rdx
mov edx, dword [rcx + 0x34]
mov qword [rsp + 0x1e0], r8
mov ecx, dword [rcx + 0x100]
mov dword [rsp + 0x58], eax
add rax, r15
mov r8, r14
mov qword [rsp + 0x60], rax
mov eax, 1
sub r8, r15
mov qword [rsp + 0x1e8], r9
mov r9d, r8d
mov dword [rsp + 0x3c], r8d
shl eax, cl
mov ecx, dword [r10 + 0x1c]
sub r9d, ecx
mov dword [rsp + 0x40], ecx
cmp eax, r9d
jae 0x1401864cb
mov edi, r8d
sub edi, eax
mov dword [rsp + 0x40], edi
mov eax, dword [r10 + 0x10c]
mov r11d, 1
cmp dword [r10 + 0x28], 0
cmove ecx, dword [rsp + 0x40]
mov rdi, qword [r10 + 0x60]
mov dword [rsp + 0x40], ecx
mov ecx, 6
cmp eax, ecx
cmovbe ecx, eax
imul r9d, dword [r14], 0x9e3779b1
mov qword [rsp + 0x68], rdi
mov edi, r11d
shl edi, cl
mov ecx, 0x22
mov dword [rsp + 0x5c], edi
mov rdi, qword [r10 + 0xf8]
sub ecx, dword [rdi + 0x108]
mov qword [rsp + 0x30], rdi
mov edi, r9d
shr edi, cl
mov rcx, rdi
mov rdi, qword [rsp + 0x30]
shl rcx, 4
mov qword [rsp + 0x50], rcx
add rcx, qword [rdi + 0x70]
prefetcht0 byte [rcx]
xor ecx, ecx
cmp eax, 6
mov dword [rsp + 0x7c], ecx
jbe 0x140186553
lea ecx, [rax - 6]
shl r11d, cl
mov dword [rsp + 0x7c], r11d
mov eax, 0x18
sub eax, edx
cmp dword [r10 + 0x12c], 0
mov dword [rsp + 0x78], eax
jne 0x1401867c2
lea rax, [r10 + 0x40]
mov edx, r8d
mov qword [rsp + 0x48], rax
mov eax, dword [r10 + 0x2c]
sub edx, eax
cmp edx, 0x180
jbe 0x1401866b8
cmp eax, 0xffffffa0
sbb edx, edx
and edx, 0x60
lea edi, [rax + rdx]
cmp eax, edi
je 0x140186620
mov edx, eax
mov r11, qword [rsp + 0x48]
imul ecx, dword [r15 + rdx + 8], 0x9e3779b1
xor ecx, dword [r10 + 0x60]
mov edx, ecx
mov cl, byte [rsp + 0x78]
shr edx, cl
mov ecx, edx
shr edx, 8
shl edx, 6
prefetcht0 byte [rbx + rdx]
prefetcht0 byte [rbx + rdx + 0x20]
lea r9, [rdx*4]
mov edx, eax
and edx, 7
prefetcht0 byte [rsi + r9]
prefetcht0 byte [rsi + r9 + 0x40]
lea rdx, [r11 + rdx*4]
mov ebp, dword [rdx]
mov dword [rdx], ecx
mov ecx, ebp
shr ecx, 8
shl ecx, 6
lea r9, [rbx + rcx]
movzx edx, byte [r9]
dec edx
and edx, 0x3f
cmp edx, 1
sbb r11d, r11d
and r11d, 0x3f
add edx, r11d
add rcx, rdx
mov byte [r9], dl
mov byte [r9 + rdx], bpl
mov dword [rsi + rcx*4], eax
inc eax
jmp 0x140186595
lea edx, [r8 - 0x20]
xor r9d, r9d
mov r12, qword [r10 + 0x70]
lea rcx, [r14 + 1]
mov rax, rdx
add rdx, r15
mov r13, qword [r10 + 0x38]
cmp rcx, rdx
mov r11d, dword [r10 + 0x34]
jb 0x140186649
sub rcx, rdx
lea r9d, [rcx + 1]
mov ecx, 8
mov ebp, eax
cmp r9d, ecx
cmova r9d, ecx
mov ecx, 0x18
sub ecx, r11d
lea edi, [r9 + rax]
mov dword [rsp + 0x70], edi
mov edi, dword [rsp + 0x70]
cmp ebp, edi
jae 0x1401866b8
imul edi, dword [rdx], 0x9e3779b1
inc rdx
xor edi, dword [r10 + 0x60]
shr edi, cl
mov r11d, edi
shr r11d, 8
shl r11d, 6
lea r9, [r11*4]
prefetcht0 byte [r13 + r11]
prefetcht0 byte [r13 + r11 + 0x20]
mov r11d, ebp
and r11d, 7
prefetcht0 byte [r12 + r9]
prefetcht0 byte [r12 + r9 + 0x40]
inc ebp
mov dword [r10 + r11*4 + 0x40], edi
jmp 0x140186667
mov r11d, eax
mov ecx, 0x18
mov rdi, qword [r10 + 0x70]
mov rbp, qword [r10 + 0x38]
add r11, qword [r10 + 8]
sub ecx, dword [r10 + 0x34]
mov edx, dword [rsp + 0x3c]
cmp eax, edx
jae 0x140186770
imul r9d, dword [r11 + 8], 0x9e3779b1
xor r9d, dword [r10 + 0x60]
mov r13, qword [rsp + 0x48]
shr r9d, cl
mov edx, r9d
shr edx, 8
shl edx, 6
prefetcht0 byte [rbp + rdx]
prefetcht0 byte [rbp + rdx + 0x20]
lea r12, [rdx*4]
mov edx, eax
and edx, 7
prefetcht0 byte [rdi + r12]
prefetcht0 byte [rdi + r12 + 0x40]
lea rdx, [r13 + rdx*4]
mov r13d, dword [rdx]
mov dword [rdx], r9d
mov r9d, r13d
mov dword [rsp + 0x70], r13d
shr r9d, 8
shl r9d, 6
lea r12, [rbp + r9]
movzx edx, byte [r12]
dec edx
and edx, 0x3f
cmp edx, 1
sbb r13d, r13d
inc r11
and r13d, 0x3f
add edx, r13d
mov r13b, byte [rsp + 0x70]
add r9, rdx
mov byte [r12], dl
mov byte [r12 + rdx], r13b
mov dword [rdi + r9*4], eax
inc eax
jmp 0x1401866d0
mov eax, r8d
mov dword [r10 + 0x2c], r8d
mov cl, byte [rsp + 0x78]
and r8d, 7
imul edx, dword [r15 + rax + 8], 0x9e3779b1
mov eax, dword [rsp + 0x68]
xor edx, eax
shr edx, cl
mov eax, edx
shr eax, 8
shl eax, 6
lea rcx, [rax*4]
prefetcht0 byte [rbx + rax]
prefetcht0 byte [rbx + rax + 0x20]
mov rax, qword [rsp + 0x48]
prefetcht0 byte [rsi + rcx]
prefetcht0 byte [rsi + rcx + 0x40]
lea rax, [rax + r8*4]
mov r9d, dword [rax]
mov dword [rax], edx
jmp 0x1401867d4
mov eax, dword [rsp + 0x68]
mov dword [r10 + 0x2c], r8d
mov cl, byte [rsp + 0x78]
xor r9d, eax
shr r9d, cl
add dword [r10 + 0x68], r9d
mov r8d, r9d
xor eax, eax
movd xmm0, r9d
shr r8d, 8
mov qword [rsp + 0x80], rax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
shl r8d, 6
pshufd xmm0, xmm0, 0
lea r11, [rsi + r8*4]
add r8, rbx
mov qword [rsp + 0x88], rax
xor eax, eax
mov dil, byte [r8]
mov edx, edi
mov ebx, edi
and edx, 0x3f
and ebx, 0x3f
mov rcx, rax
shl rcx, 4
movups xmm1, xmmword [r8 + rcx]
pcmpeqb xmm1, xmm0
pmovmskb ecx, xmm1
mov dword [rsp + rax*4 + 0x80], ecx
inc rax
cmp rax, 4
jne 0x14018681d
movsxd rcx, dword [rsp + 0x8c]
xor esi, esi
movsxd rax, dword [rsp + 0x88]
shl rcx, 0x30
shl rax, 0x20
or rax, rcx
movsxd rcx, dword [rsp + 0x80]
or rax, rcx
movsxd rcx, dword [rsp + 0x84]
shl rcx, 0x10
or rax, rcx
mov ecx, edx
ror rax, cl
mov rcx, rax
test rcx, rcx
je 0x1401868c4
cmp dword [rsp + 0x5c], 0
je 0x1401868c4
call fcn.1401b4410
add eax, ebx
and eax, 0x3f
mov edx, eax
mov edx, dword [r11 + rdx*4]
je 0x1401868bb
mov eax, dword [rsp + 0x40]
cmp edx, eax
jb 0x1401868c4
mov eax, edx
prefetcht0 byte [r15 + rax]
dec dword [rsp + 0x5c]
mov dword [rsp + rsi*4 + 0x80], edx
inc rsi
lea rax, [rcx - 1]
and rcx, rax
jmp 0x140186880
lea eax, [rdi + 0x3f]
mov ebp, 3
and eax, 0x3f
cmp eax, 1
sbb edx, edx
xor r12d, r12d
and edx, 0x3f
add eax, edx
mov byte [r8], al
mov byte [r8 + rax], r9b
mov edx, dword [r10 + 0x2c]
lea ecx, [rdx + 1]
mov dword [r10 + 0x2c], ecx
mov dword [r11 + rax*4], edx
mov eax, dword [rsp + 0x3c]
lea edi, [rax + 3]
cmp rsi, r12
je 0x140186950
mov edx, dword [rsp + r12*4 + 0x80]
mov eax, dword [r14 + rbp - 3]
mov r13, rdx
add rdx, r15
cmp dword [rdx + rbp - 3], eax
jne 0x14018694b
mov r8, qword [rsp + 0x1e0]
mov rcx, r14
call fcn.1401b4180
cmp rbp, rax
mov rbx, rax
jae 0x14018694b
mov rcx, qword [rsp + 0x1e8]
mov eax, edi
sub eax, r13d
mov qword [rcx], rax
lea rax, [r14 + rbx]
cmp r8, rax
je 0x140186953
mov rbp, rbx
inc r12
jmp 0x1401868f9
mov rbx, rbp
mov eax, dword [rsp + 0x5c]
mov esi, dword [rsp + 0x7c]
add eax, esi
mov dword [rsp + 0x40], eax
mov rax, qword [rsp + 0x30]
mov rbp, qword [rax + 8]
mov rax, qword [rax]
mov qword [rsp + 0x48], rax
mov r15d, dword [rsp + 0x48]
mov eax, 3
sub r15d, ebp
cmp dword [rsp + 0x40], eax
cmovbe eax, dword [rsp + 0x40]
mov dword [rsp + 0x5c], eax
mov rax, qword [rsp + 0x30]
mov rdx, qword [rax + 0x70]
mov rax, qword [rsp + 0x50]
lea r11, [rdx + rax]
xor eax, eax
mov ecx, dword [r11 + rax*4]
inc rax
cmp rax, 3
prefetcht0 byte [rbp + rcx]
jne 0x1401869a0
mov rax, qword [rsp + 0x50]
xor r12d, r12d
mov esi, dword [rdx + rax + 0xc]
mov rax, qword [rsp + 0x30]
mov edi, esi
mov rax, qword [rax + 0x80]
shr edi, 8
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x30]
mov eax, edi
lea r10, [rcx + rax*4]
mov ecx, dword [rsp + 0x58]
lea rax, [r14 + 4]
prefetcht0 byte [r10]
mov qword [rsp + 0x50], rax
mov eax, dword [rsp + 0x3c]
sub eax, ecx
lea eax, [r15 + rax + 3]
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x5c]
cmp r12d, eax
jae 0x140186a99
mov edx, dword [r11 + r12*4]
mov r13, rdx
add rdx, rbp
test r13d, r13d
je 0x140186b4c
mov eax, dword [r14]
cmp dword [rdx], eax
jne 0x140186a91
mov rax, qword [rsp + 0x60]
add rdx, 4
mov qword [rsp + 0x70], r10
mov r9, qword [rsp + 0x48]
mov qword [rsp + 0x68], r11
mov r8, qword [rsp + 0x1e0]
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x20], rax
call fcn.1401b44f0
mov r11, qword [rsp + 0x68]
add rax, 4
mov r10, qword [rsp + 0x70]
cmp rbx, rax
jae 0x140186a91
mov edx, dword [rsp + 0x78]
mov rbx, qword [rsp + 0x1e8]
sub edx, r13d
mov ecx, edx
lea rdx, [r14 + rax]
cmp qword [rsp + 0x1e0], rdx
mov qword [rbx], rcx
mov rbx, rax
je 0x140186b4c
inc r12
jmp 0x1401869ff
mov eax, dword [rsp + 0x40]
movzx esi, sil
sub eax, r12d
cmp esi, eax
cmova esi, eax
xor eax, eax
cmp eax, esi
jae 0x140186abd
mov edx, dword [r10 + rax*4]
inc rax
prefetcht0 byte [rbp + rdx]
jmp 0x140186aab
lea rax, [r14 + 4]
mov r12, rbx
mov ebx, dword [rsp + 0x58]
add esi, edi
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x3c]
sub eax, ebx
lea r13d, [r15 + rax + 3]
cmp edi, esi
je 0x140186b49
mov rbx, qword [rsp + 0x30]
mov eax, edi
mov edx, dword [rbx + rax*4]
mov eax, dword [r14]
mov r15, rdx
add rdx, rbp
cmp dword [rdx], eax
jne 0x140186b45
mov rax, qword [rsp + 0x60]
add rdx, 4
mov r9, qword [rsp + 0x48]
mov r8, qword [rsp + 0x1e0]
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x20], rax
call fcn.1401b44f0
lea rbx, [rax + 4]
cmp r12, rbx
jae 0x140186b45
mov rcx, qword [rsp + 0x1e8]
mov eax, r13d
sub eax, r15d
mov qword [rcx], rax
lea rax, [r14 + rbx]
cmp qword [rsp + 0x1e0], rax
je 0x140186b4c
mov r12, rbx
inc edi
jmp 0x140186ada
mov rbx, r12
mov rax, rbx
add rsp, 0x188
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret