Function at 0x14018c670
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 rax, qword [rcx + 8]
mov rsi, qword [rcx + 0x70]
mov rbx, qword [rcx + 0x38]
mov ebp, dword [rcx + 0x34]
mov qword [rsp + 0x30], rax
mov eax, dword [rcx + 0x18]
mov r10, rcx
mov r15, rdx
mov rdi, qword [rsp + 0x30]
mov qword [rsp + 0x1e0], r8
mov r8, rdx
mov ecx, dword [rcx + 0x100]
mov qword [rsp + 0x1e8], r9
mov edx, dword [r10 + 0x1c]
mov dword [rsp + 0x60], eax
add rax, rdi
sub r8, rdi
mov qword [rsp + 0x70], rax
mov eax, 1
shl eax, cl
mov ecx, r8d
mov dword [rsp + 0x50], r8d
sub ecx, edx
mov dword [rsp + 0x38], edx
cmp eax, ecx
jae 0x14018c6f3
mov edi, r8d
sub edi, eax
mov dword [rsp + 0x38], edi
mov rax, qword [r10 + 0x60]
mov ecx, 6
mov r9d, 0x38
movabs rdi, 0xcf1bbcdcbf9b0000
cmp dword [r10 + 0x28], 0
cmove edx, dword [rsp + 0x38]
mov r14, qword [r10 + 0xf8]
mov qword [rsp + 0x58], rax
mov eax, dword [r10 + 0x10c]
mov dword [rsp + 0x38], edx
mov rdx, qword [r15]
mov r11, qword [r14 + 0x38]
cmp eax, ecx
mov r12, qword [r14 + 0x70]
cmovbe ecx, eax
mov eax, 1
imul rdx, rdi
shl eax, cl
mov ecx, r9d
sub ecx, dword [r14 + 0x34]
mov dword [rsp + 0x3c], eax
sub r9d, ebp
mov rax, rdx
shr rax, cl
mov qword [rsp + 0x68], rax
mov eax, dword [rsp + 0x68]
shr eax, 8
shl eax, 6
cmp dword [r10 + 0x12c], 0
prefetcht0 byte [r11 + rax + 0x20]
lea rcx, [r11 + rax]
mov qword [rsp + 0x48], rcx
lea rcx, [rax*4]
lea r13, [r12 + rcx]
prefetcht0 byte [r12 + rcx + 0x40]
mov rcx, qword [rsp + 0x48]
prefetcht0 byte [r13]
mov qword [rsp + 0x78], r13
prefetcht0 byte [rcx]
mov dword [rsp + 0x54], r9d
jne 0x14018ca36
lea rax, [r10 + 0x40]
mov edx, r8d
mov qword [rsp + 0x40], rax
mov eax, dword [r10 + 0x2c]
sub edx, eax
cmp edx, 0x180
jbe 0x14018c916
cmp eax, 0xffffffa0
sbb edx, edx
and edx, 0x60
lea ebp, [rax + rdx]
cmp eax, ebp
je 0x14018c86f
mov r11, qword [rsp + 0x30]
mov edx, eax
mov rcx, qword [r11 + rdx + 8]
mov r11, qword [rsp + 0x40]
imul rcx, rdi
xor rcx, qword [r10 + 0x60]
mov rdx, rcx
mov cl, byte [rsp + 0x54]
shr rdx, cl
mov rcx, rdx
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 r12d, dword [rdx]
mov dword [rdx], ecx
mov ecx, r12d
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], r12b
mov dword [rsi + rcx*4], eax
inc eax
jmp 0x14018c7da
mov rdi, qword [rsp + 0x30]
lea edx, [r8 - 0x20]
xor r9d, r9d
lea rcx, [r15 + 1]
mov rax, rdx
mov r12, qword [r10 + 0x70]
mov r13, qword [r10 + 0x38]
mov r11d, dword [r10 + 0x34]
add rdx, rdi
cmp rcx, rdx
jb 0x14018c89d
sub rcx, rdx
lea r9d, [rcx + 1]
mov ecx, 8
mov ebp, eax
cmp r9d, ecx
cmova r9d, ecx
mov ecx, 0x38
sub ecx, r11d
lea edi, [r9 + rax]
mov dword [rsp + 0x64], edi
mov edi, dword [rsp + 0x64]
cmp ebp, edi
jae 0x14018c916
movabs rdi, 0xcf1bbcdcbf9b0000
inc rdx
imul rdi, qword [rdx - 1]
xor rdi, qword [r10 + 0x60]
shr rdi, 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 0x14018c8bb
mov r11d, eax
mov ecx, 0x38
mov rdi, qword [r10 + 0x70]
mov rbp, qword [r10 + 0x38]
add r11, qword [r10 + 8]
sub ecx, dword [r10 + 0x34]
mov edx, dword [rsp + 0x50]
cmp eax, edx
jae 0x14018c9d5
movabs r9, 0xcf1bbcdcbf9b0000
mov r13, qword [rsp + 0x40]
imul r9, qword [r11 + 8]
xor r9, qword [r10 + 0x60]
shr r9, 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 + 0x64], 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 + 0x64]
add r9, rdx
mov byte [r12], dl
mov byte [r12 + rdx], r13b
mov dword [rdi + r9*4], eax
inc eax
jmp 0x14018c92e
mov rdi, qword [rsp + 0x30]
mov edx, r8d
mov dword [r10 + 0x2c], r8d
and r8d, 7
movabs rax, 0xcf1bbcdcbf9b0000
mov cl, byte [rsp + 0x54]
imul rax, qword [rdi + rdx + 8]
mov rdi, qword [rsp + 0x58]
xor rax, rdi
mov rdi, qword [rsp + 0x40]
shr rax, cl
mov edx, eax
shr edx, 8
shl edx, 6
lea rcx, [rdx*4]
prefetcht0 byte [rbx + rdx]
prefetcht0 byte [rbx + rdx + 0x20]
lea rdx, [rdi + r8*4]
prefetcht0 byte [rsi + rcx]
prefetcht0 byte [rsi + rcx + 0x40]
mov r9d, dword [rdx]
mov dword [rdx], eax
jmp 0x14018ca49
mov r9, qword [rsp + 0x58]
mov dword [r10 + 0x2c], r8d
mov cl, byte [rsp + 0x54]
xor r9, rdx
shr r9, cl
add dword [r10 + 0x68], r9d
mov r8d, r9d
xor ecx, ecx
movd xmm0, r9d
shr r8d, 8
mov qword [rsp + 0x80], rcx
xor eax, eax
punpcklbw xmm0, xmm0
shl r8d, 6
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
lea r11, [rsi + r8*4]
add r8, rbx
mov qword [rsp + 0x88], rcx
mov dil, byte [r8]
mov edx, edi
mov esi, edi
and edx, 0x3f
and esi, 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 0x14018ca92
movsxd rcx, dword [rsp + 0x8c]
xor ebx, ebx
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 0x14018cb3e
cmp dword [rsp + 0x3c], 0
je 0x14018cb3e
call fcn.1401b4410
add eax, esi
and eax, 0x3f
mov edx, eax
mov edx, dword [r11 + rdx*4]
je 0x14018cb35
mov eax, dword [rsp + 0x38]
cmp edx, eax
jb 0x14018cb3e
mov rbp, qword [rsp + 0x30]
mov eax, edx
prefetcht0 byte [rbp + rax]
dec dword [rsp + 0x3c]
mov dword [rsp + rbx*4 + 0x80], edx
inc rbx
lea rax, [rcx - 1]
and rcx, rax
jmp 0x14018caf5
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 + 0x50]
lea edi, [rax + 3]
cmp rbx, r12
je 0x14018cbcf
mov edx, dword [rsp + r12*4 + 0x80]
mov rax, qword [rsp + 0x30]
mov r13, rdx
add rdx, rax
mov eax, dword [r15 + rbp - 3]
cmp dword [rdx + rbp - 3], eax
jne 0x14018cbca
mov r8, qword [rsp + 0x1e0]
mov rcx, r15
call fcn.1401b4180
cmp rbp, rax
mov rsi, rax
jae 0x14018cbca
mov rcx, qword [rsp + 0x1e8]
mov eax, edi
sub eax, r13d
mov qword [rcx], rax
lea rax, [r15 + rsi]
cmp r8, rax
je 0x14018cbd2
mov rbp, rsi
inc r12
jmp 0x14018cb73
mov rsi, rbp
mov rax, qword [rsp + 0x48]
movd xmm0, dword [rsp + 0x68]
mov rbx, qword [r14]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
mov rdi, qword [r14 + 8]
mov r10d, dword [r14 + 0x18]
mov r9b, byte [rax]
xor eax, eax
mov r8d, ebx
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], rax
sub r8d, edi
xor eax, eax
mov ecx, r9d
and r9d, 0x3f
and ecx, 0x3f
mov r14, qword [rsp + 0x48]
mov rdx, rax
shl rdx, 4
movups xmm1, xmmword [r14 + rdx]
pcmpeqb xmm1, xmm0
pmovmskb edx, xmm1
mov dword [rsp + rax*4 + 0x80], edx
inc rax
cmp rax, 4
jne 0x14018cc1c
movsxd rdx, dword [rsp + 0x8c]
xor ebp, ebp
movsxd rax, dword [rsp + 0x88]
shl rdx, 0x30
shl rax, 0x20
or rax, rdx
movsxd rdx, dword [rsp + 0x80]
or rax, rdx
movsxd rdx, dword [rsp + 0x84]
shl rdx, 0x10
or rax, rdx
ror rax, cl
mov rcx, rax
test rcx, rcx
jne 0x14018cca4
lea rax, [r15 + 4]
mov ecx, dword [rsp + 0x60]
xor r14d, r14d
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x50]
sub eax, ecx
lea r13d, [r8 + rax + 3]
jmp 0x14018ccfd
cmp dword [rsp + 0x3c], 0
je 0x14018cc87
call fcn.1401b4410
mov r14, qword [rsp + 0x78]
add eax, r9d
and eax, 0x3f
mov edx, eax
mov edx, dword [r14 + rdx*4]
je 0x14018ccdc
cmp edx, r10d
jb 0x14018cc87
mov eax, edx
prefetcht0 byte [rdi + rax]
dec dword [rsp + 0x3c]
mov dword [rsp + rbp*4 + 0x80], edx
inc rbp
lea rax, [rcx - 1]
and rcx, rax
jmp 0x14018cc82
mov edx, dword [rsp + r14*4 + 0x80]
mov eax, dword [r15]
mov r12, rdx
add rdx, rdi
cmp dword [rdx], eax
je 0x14018cd04
inc r14
cmp rbp, r14
jne 0x14018cce5
jmp 0x14018cd56
mov rax, qword [rsp + 0x70]
add rdx, 4
mov r9, rbx
mov r8, qword [rsp + 0x1e0]
mov rcx, qword [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.1401b44f0
add rax, 4
cmp rsi, rax
jae 0x14018ccfa
mov edx, r13d
mov rsi, qword [rsp + 0x1e8]
sub edx, r12d
mov ecx, edx
lea rdx, [r15 + rax]
cmp qword [rsp + 0x1e0], rdx
mov qword [rsi], rcx
je 0x14018cd59
mov rsi, rax
jmp 0x14018ccfa
mov rax, rsi
add rsp, 0x188
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret