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

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0xb8
mov rbp, rcx
mov r10, qword [rsp + 0x128]
lea r8, [rsp + 0x90]
movups xmmword [rsp + 0x40], xmm15
mov rbx, r9
movzx edi, word [r10 + 2]
mov ecx, edi
movzx esi, word [r10 + 4]
mov edx, esi
call fcn.1400135d0
sub edi, esi
mov eax, edi
cdq
xor edi, edx
sub edi, edx
je 0x14001814f
bsr ecx, edi
inc ecx
cmp ecx, 5
lea eax, [rcx - 1]
mov rdi, qword [rsp + 0x128]
lea r8, [rsp + 0x80]
adc eax, 0
lea rsi, [rax + rax*8]
shl rsi, 0xd
movzx ecx, word [rdi + 0x10]
movzx edx, word [rdi + 0x12]
lea rbp, [rbp + rsi + 0x1f98c8]
call fcn.1400135d0
mov rax, qword [rsp + 0x128]
mov r10d, dword [rax + 0x14]
mov r9d, r10d
mov edi, dword [rax + 0x18]
mov ecx, edi
shr r10d, 0x15
shr r9d, 9
shr ecx, 9
and r10, 7
shr edi, 0x15
and r9, 7
and rcx, 7
and rdi, 7
movzx r10d, byte [rsp + r10 + 0x80]
mov dword [rsp + 0x60], r10d
movzx r12d, byte [rsp + r9 + 0x80]
mov r11d, r12d
movzx esi, byte [rsp + rcx + 0x80]
mov r9d, r12d
mov r8b, byte [rsp + rdi + 0x80]
mov byte [rsp + 0x39], r10b
mov byte [rsp + 0x2a], r12b
mov byte [rsp + 0x36], r12b
mov byte [rsp + 0x28], r12b
mov byte [rsp + 0x34], r10b
mov dword [rsp + 0x78], esi
mov byte [rsp + 0x3c], sil
mov byte [rsp + 0x37], sil
mov byte [rsp + 0x3a], r8b
cmp byte [rax], 1
ja 0x14001809f
xor eax, eax
mov r8d, r9d
xor edi, edi
xor esi, esi
mov byte [rsp + 0x29], r12b
xor ecx, ecx
mov byte [rsp + 0x2d], al
mov byte [rsp + 0x2c], al
mov byte [rsp + 0x30], al
mov byte [rsp + 0x2f], al
mov byte [rsp + 0x33], al
mov byte [rsp + 0x32], al
cmp r9d, r8d
mov r13d, r8d
mov r14d, r8d
cmova r13d, r9d
cmovb r14d, r9d
cmp r12d, r13d
jae 0x14001681e
add r9d, r8d
sub r9d, r12d
cmp r12d, r14d
mov r14d, r13d
cmova r14d, r9d
movd xmm1, r14d
mov r14d, 7
movq xmm15, qword [rsp + 0x90]
pxor xmm0, xmm0
punpcklwd xmm1, xmm1
punpcklbw xmm15, xmm0
pshufd xmm2, xmm1, 0
psubw xmm2, xmm15
pmullw xmm2, xmm2
movdqu xmmword [rsp + 0x50], xmm2
movzx r15d, word [rsp + 0x50]
movzx r9d, word [rsp + 0x52]
cmp r9d, r15d
movzx r13d, word [rsp + 0x54]
cmovb r15d, r9d
mov r9d, 0
setb r9b
cmp r13d, r15d
movzx r8d, word [rsp + 0x5c]
cmovb r15d, r13d
mov r13d, 2
cmovb r9, r13
movzx r13d, word [rsp + 0x56]
cmp r13d, r15d
cmovb r15d, r13d
mov r13d, 3
cmovb r9, r13
movzx r13d, word [rsp + 0x58]
cmp r13d, r15d
cmovb r15d, r13d
mov r13d, 4
cmovb r9, r13
movzx r13d, word [rsp + 0x5a]
cmp r13d, r15d
cmovb r15d, r13d
mov r13d, 5
cmovb r9, r13
mov r13d, 6
cmp r8d, r15d
cmovb r15d, r8d
cmovb r9, r13
movzx r13d, word [rsp + 0x5e]
cmp r13d, r15d
cmovb r9, r14
mov r14d, dword [rbx]
lea r13, [r9 + r9*8]
mov r9d, r14d
shl r13, 0xa
and r9d, 0x7fff
add r13, rbp
shr r14d, 0xf
movd xmm3, r9d
movdqu xmm0, xmmword [r13 + 0x23ee]
punpcklwd xmm3, xmm3
movdqa xmm5, xmm0
pshufd xmm4, xmm3, 0
pcmpgtw xmm5, xmm4
packsswb xmm5, xmm5
pmovmskb r8d, xmm5
add r8d, 0x100
bsf r15d, r8d
mov dword [rsp + 0xa8], r15d
lea r8d, [r15 - 1]
movsxd rdx, r8d
movzx r12d, word [r13 + r8*2 + 0x23ee]
sub r9d, r12d
movzx r15d, word [r13 + r15*2 + 0x23ee]
shl rdx, 4
sub r15d, r12d
lea r12, [0x140000000]
imul r15d, r14d
movdqu xmm3, xmmword [r12 + rdx + 0x1200]
psubw xmm3, xmm0
add r9d, r15d
psraw xmm3, 6
paddw xmm0, xmm3
movdqu xmmword [r13 + 0x23ee], xmm0
cmp r9d, 0x800000
jae 0x1400169d6
mov r12, qword [rsp + 0x120]
shl r9d, 8
mov r12, qword [r12]
movzx r13d, byte [r12]
or r9d, r13d
inc r12
cmp r9d, 0x800000
jb 0x140018082
mov r13, qword [rsp + 0x120]
mov qword [r13], r12
movzx r12d, byte [rsp + r8 + 0x90]
cmp r12d, edi
mov r8d, edi
mov r14d, edi
cmova r8d, r12d
cmovb r14d, r12d
mov dword [rbx], r9d
cmp eax, r8d
jae 0x140016a09
lea r13d, [r12 + rdi]
sub r13d, eax
cmp eax, r14d
mov r14d, r8d
cmova r14d, r13d
movd xmm0, r14d
xor r8d, r8d
punpcklwd xmm0, xmm0
mov r13d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r14d, word [rsp + 0x50]
movzx eax, word [rsp + 0x52]
cmp eax, r14d
movzx r15d, word [rsp + 0x5c]
cmovb r14d, eax
setb r8b
movzx eax, word [rsp + 0x54]
cmp eax, r14d
cmovb r14d, eax
mov eax, 2
cmovb r8, rax
movzx eax, word [rsp + 0x56]
cmp eax, r14d
cmovb r14d, eax
mov eax, 3
cmovb r8, rax
movzx eax, word [rsp + 0x58]
cmp eax, r14d
cmovb r14d, eax
mov eax, 4
cmovb r8, rax
movzx eax, word [rsp + 0x5a]
cmp eax, r14d
cmovb r14d, eax
mov eax, 5
cmovb r8, rax
cmp r15d, r14d
mov eax, dword [rsp + 0xa8]
cmovb r14d, r15d
cmovb r8, r13
movzx r13d, word [rsp + 0x5e]
cmp r13d, r14d
mov r14d, 7
lea eax, [rax + 0x1f7]
cmovb r8, r14
mov r14d, r9d
and r14d, 0x7fff
lea rax, [rax + rax*8]
shr r9d, 0xf
lea rax, [rbp + rax*2]
lea r8, [r8 + r8*8]
shl r8, 0xa
movd xmm2, r14d
add rax, r8
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rax]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r8d, xmm4
add r8d, 0x100
bsf r15d, r8d
mov dword [rsp + 0xb0], r15d
lea r8d, [r15 - 1]
movzx r13d, word [rax + r8*2]
movzx r15d, word [rax + r15*2]
sub r15d, r13d
imul r9d, r15d
movsxd rdx, r8d
sub r9d, r13d
shl rdx, 4
lea r13, [0x140000000]
add r9d, r14d
movdqu xmm5, xmmword [r13 + rdx + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [rax], xmm0
cmp r9d, 0x800000
jae 0x140016ba1
mov rax, qword [rsp + 0x120]
shl r9d, 8
mov rax, qword [rax]
movzx r13d, byte [rax]
or r9d, r13d
inc rax
cmp r9d, 0x800000
jb 0x140018066
mov r13, qword [rsp + 0x120]
mov qword [r13], rax
movzx eax, byte [rsp + r8 + 0x90]
cmp eax, esi
mov r8d, esi
mov r14d, esi
cmova r8d, eax
cmovb r14d, eax
mov dword [rbx], r9d
cmp edi, r8d
jae 0x140016bd3
lea r13d, [rax + rsi]
sub r13d, edi
cmp edi, r14d
mov r14d, r8d
cmova r14d, r13d
movd xmm0, r14d
xor r13d, r13d
punpcklwd xmm0, xmm0
mov r8d, 2
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r14d, word [rsp + 0x50]
movzx r15d, word [rsp + 0x52]
cmp r15d, r14d
movzx edi, word [rsp + 0x54]
cmovb r14d, r15d
setb r13b
cmp edi, r14d
movzx r15d, word [rsp + 0x56]
cmovb r14d, edi
cmovb r13, r8
cmp r15d, r14d
movzx edi, word [rsp + 0x5c]
cmovb r14d, r15d
mov r15d, 3
cmovb r13, r15
mov r8d, 6
movzx r15d, word [rsp + 0x58]
cmp r15d, r14d
cmovb r14d, r15d
mov r15d, 4
cmovb r13, r15
movzx r15d, word [rsp + 0x5a]
cmp r15d, r14d
cmovb r14d, r15d
mov r15d, 5
cmovb r13, r15
cmp edi, r14d
mov r15d, dword [rsp + 0xb0]
cmovb r14d, edi
cmovb r13, r8
movzx r8d, word [rsp + 0x5e]
mov edi, 7
cmp r8d, r14d
lea r15d, [r15 + 0x1f7]
cmovb r13, rdi
lea r15, [r15 + r15*8]
lea r15, [rbp + r15*2]
lea rdi, [r13 + r13*8]
mov r13d, r9d
shl rdi, 0xa
and r13d, 0x7fff
add r15, rdi
shr r9d, 0xf
movd xmm2, r13d
movdqu xmm0, xmmword [r15]
punpcklwd xmm2, xmm2
movdqa xmm4, xmm0
pshufd xmm3, xmm2, 0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb edi, xmm4
add edi, 0x100
bsf edi, edi
lea edx, [rdi - 1]
movzx r8d, word [r15 + rdi*2]
movzx r14d, word [r15 + rdx*2]
sub r8d, r14d
imul r9d, r8d
sub r9d, r14d
movsxd r14, edx
add r9d, r13d
shl r14, 4
lea r13, [0x140000000]
movdqu xmm5, xmmword [r13 + r14 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [r15], xmm0
cmp r9d, 0x800000
jae 0x140016d6a
mov r8, qword [rsp + 0x120]
shl r9d, 8
mov r8, qword [r8]
movzx r13d, byte [r8]
or r9d, r13d
inc r8
cmp r9d, 0x800000
jb 0x14001804a
mov r13, qword [rsp + 0x120]
mov qword [r13], r8
movzx r8d, byte [rsp + rdx + 0x90]
cmp r8d, ecx
mov r13d, ecx
mov r14d, ecx
cmova r13d, r8d
cmovb r14d, r8d
mov dword [rbx], r9d
cmp esi, r13d
jae 0x140016d9b
add ecx, r8d
sub ecx, esi
cmp esi, r14d
mov r14d, r13d
cmova r14d, ecx
movd xmm0, r14d
xor esi, esi
punpcklwd xmm0, xmm0
mov r13d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r14d, word [rsp + 0x50]
movzx ecx, word [rsp + 0x52]
cmp ecx, r14d
movzx r15d, word [rsp + 0x5c]
cmovb r14d, ecx
setb sil
movzx ecx, word [rsp + 0x54]
cmp ecx, r14d
cmovb r14d, ecx
mov ecx, 2
cmovb rsi, rcx
movzx ecx, word [rsp + 0x56]
cmp ecx, r14d
cmovb r14d, ecx
mov ecx, 3
cmovb rsi, rcx
movzx ecx, word [rsp + 0x58]
cmp ecx, r14d
cmovb r14d, ecx
mov ecx, 4
cmovb rsi, rcx
movzx ecx, word [rsp + 0x5a]
cmp ecx, r14d
cmovb r14d, ecx
mov ecx, 5
cmovb rsi, rcx
cmp r15d, r14d
lea ecx, [rdi + 0x1f7]
cmovb r14d, r15d
cmovb rsi, r13
movzx r13d, word [rsp + 0x5e]
cmp r13d, r14d
mov r14d, 7
cmovb rsi, r14
lea rcx, [rcx + rcx*8]
mov r14d, r9d
lea rcx, [rbp + rcx*2]
and r14d, 0x7fff
shr r9d, 0xf
lea rsi, [rsi + rsi*8]
shl rsi, 0xa
add rcx, rsi
movd xmm2, r14d
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rcx]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb esi, xmm4
add esi, 0x100
bsf r15d, esi
mov dword [rsp + 0x88], r15d
lea esi, [r15 - 1]
movzx r13d, word [rcx + rsi*2]
movzx r15d, word [rcx + r15*2]
sub r15d, r13d
imul r9d, r15d
movsxd rdx, esi
sub r9d, r13d
shl rdx, 4
lea r13, [0x140000000]
add r9d, r14d
movdqu xmm5, xmmword [r13 + rdx + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [rcx], xmm0
cmp r9d, 0x800000
jae 0x140016f29
mov rcx, qword [rsp + 0x120]
shl r9d, 8
mov rcx, qword [rcx]
movzx r13d, byte [rcx]
or r9d, r13d
inc rcx
cmp r9d, 0x800000
jb 0x14001802e
mov r13, qword [rsp + 0x120]
mov qword [r13], rcx
cmp r10d, r12d
mov ecx, r12d
movzx r13d, byte [rsp + rsi + 0x90]
mov esi, r12d
cmova ecx, r10d
cmovb esi, r10d
mov dword [rbx], r9d
cmp r11d, ecx
jae 0x140016f5a
add r10d, r12d
sub r10d, r11d
cmp r11d, esi
mov esi, ecx
cmova esi, r10d
movd xmm0, esi
xor r10d, r10d
punpcklwd xmm0, xmm0
mov r11d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r15d, word [rsp + 0x50]
movzx ecx, word [rsp + 0x52]
cmp ecx, r15d
movzx r14d, word [rsp + 0x5c]
cmovb r15d, ecx
setb r10b
movzx ecx, word [rsp + 0x54]
cmp ecx, r15d
cmovb r15d, ecx
mov ecx, 2
cmovb r10, rcx
movzx ecx, word [rsp + 0x56]
cmp ecx, r15d
cmovb r15d, ecx
mov ecx, 3
cmovb r10, rcx
movzx ecx, word [rsp + 0x58]
cmp ecx, r15d
cmovb r15d, ecx
mov ecx, 4
cmovb r10, rcx
movzx ecx, word [rsp + 0x5a]
cmp ecx, r15d
cmovb r15d, ecx
mov ecx, 5
cmovb r10, rcx
cmp r14d, r15d
mov ecx, dword [rsp + 0xa8]
cmovb r15d, r14d
cmovb r10, r11
movzx r11d, word [rsp + 0x5e]
mov r14d, 7
cmp r11d, r15d
lea ecx, [rcx*8 + 0x1bf]
cmovb r10, r14
mov r11d, r9d
and r11d, 0x7fff
lea rcx, [rcx + rcx*8]
shr r9d, 0xf
lea rcx, [rbp + rcx*2]
lea r14, [r10 + r10*8]
shl r14, 0xa
movd xmm2, r11d
add rcx, r14
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rcx]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r14d, xmm4
add r14d, 0x100
bsf r10d, r14d
lea r14d, [r10 - 1]
movzx r15d, word [rcx + r10*2]
movzx esi, word [rcx + r14*2]
sub r15d, esi
imul r9d, r15d
movsxd rdx, r14d
sub r9d, esi
shl rdx, 4
lea rsi, [0x140000000]
add r9d, r11d
movdqu xmm5, xmmword [rsi + rdx + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [rcx], xmm0
cmp r9d, 0x800000
jae 0x1400170e7
mov rcx, qword [rsp + 0x120]
shl r9d, 8
mov rcx, qword [rcx]
movzx esi, byte [rcx]
or r9d, esi
inc rcx
cmp r9d, 0x800000
jb 0x140018013
mov rsi, qword [rsp + 0x120]
mov qword [rsi], rcx
movzx r11d, byte [rsp + r14 + 0x90]
cmp r11d, eax
mov ecx, eax
mov r14d, eax
cmova ecx, r11d
cmovb r14d, r11d
mov dword [rbx], r9d
cmp r12d, ecx
jae 0x14001711a
mov esi, eax
sub esi, r12d
add esi, r11d
cmp r12d, r14d
mov r14d, ecx
cmova r14d, esi
movd xmm0, r14d
xor r12d, r12d
punpcklwd xmm0, xmm0
mov ecx, 2
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r14d, word [rsp + 0x50]
movzx r15d, word [rsp + 0x52]
cmp r15d, r14d
movzx esi, word [rsp + 0x54]
cmovb r14d, r15d
setb r12b
cmp esi, r14d
movzx r15d, word [rsp + 0x56]
cmovb r14d, esi
cmovb r12, rcx
cmp r15d, r14d
mov ecx, dword [rsp + 0xb0]
cmovb r14d, r15d
mov r15d, 3
cmovb r12, r15
movzx r15d, word [rsp + 0x58]
cmp r15d, r14d
movzx esi, word [rsp + 0x5c]
cmovb r14d, r15d
mov r15d, 4
cmovb r12, r15
movzx r15d, word [rsp + 0x5a]
cmp r15d, r14d
cmovb r14d, r15d
mov r15d, 5
cmovb r12, r15
mov r15d, dword [rsp + 0xa8]
shl r15d, 6
cmp esi, r14d
cmovb r14d, esi
lea r15d, [r15 + rcx*8]
mov ecx, 6
cmovb r12, rcx
mov esi, 7
lea r15d, [r15 + r10 - 0x49]
movzx ecx, word [rsp + 0x5e]
cmp ecx, r14d
cmovb r12, rsi
lea r15, [r15 + r15*8]
lea r15, [rbp + r15*2]
lea rsi, [r12 + r12*8]
mov r12d, r9d
shl rsi, 0xa
and r12d, 0x7fff
add r15, rsi
shr r9d, 0xf
movd xmm2, r12d
movdqu xmm0, xmmword [r15]
punpcklwd xmm2, xmm2
movdqa xmm4, xmm0
pshufd xmm3, xmm2, 0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb esi, xmm4
add esi, 0x100
bsf esi, esi
lea edx, [rsi - 1]
movzx ecx, word [r15 + rsi*2]
movzx r14d, word [r15 + rdx*2]
sub ecx, r14d
imul r9d, ecx
sub r9d, r14d
movsxd r14, edx
add r9d, r12d
shl r14, 4
lea r12, [0x140000000]
movdqu xmm5, xmmword [r12 + r14 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [r15], xmm0
cmp r9d, 0x800000
jae 0x1400172ba
mov rcx, qword [rsp + 0x120]
shl r9d, 8
mov rcx, qword [rcx]
movzx r12d, byte [rcx]
or r9d, r12d
inc rcx
cmp r9d, 0x800000
jb 0x140017ff7
mov r12, qword [rsp + 0x120]
mov qword [r12], rcx
movzx ecx, byte [rsp + rdx + 0x90]
cmp ecx, r8d
mov r12d, r8d
mov r15d, r8d
cmova r12d, ecx
cmovb r15d, ecx
mov dword [rbx], r9d
cmp eax, r12d
jae 0x1400172ee
mov r14d, r8d
sub r14d, eax
add r14d, ecx
cmp eax, r15d
mov r15d, r12d
cmova r15d, r14d
movd xmm0, r15d
xor r14d, r14d
punpcklwd xmm0, xmm0
mov edx, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r15d, word [rsp + 0x50]
movzx eax, word [rsp + 0x52]
cmp eax, r15d
movzx r12d, word [rsp + 0x5c]
cmovb r15d, eax
setb r14b
movzx eax, word [rsp + 0x54]
cmp eax, r15d
cmovb r15d, eax
mov eax, 2
cmovb r14, rax
movzx eax, word [rsp + 0x56]
cmp eax, r15d
cmovb r15d, eax
mov eax, 3
cmovb r14, rax
movzx eax, word [rsp + 0x58]
cmp eax, r15d
cmovb r15d, eax
mov eax, 4
cmovb r14, rax
movzx eax, word [rsp + 0x5a]
cmp eax, r15d
cmovb r15d, eax
mov eax, 5
cmovb r14, rax
cmp r12d, r15d
mov eax, dword [rsp + 0xb0]
cmovb r15d, r12d
cmovb r14, rdx
shl eax, 6
mov r12d, 7
movzx edx, word [rsp + 0x5e]
cmp edx, r15d
mov edx, r9d
cmovb r14, r12
and edx, 0x7fff
shr r9d, 0xf
lea eax, [rax + rdi*8]
lea eax, [rax + rsi - 0x49]
movd xmm2, edx
lea rax, [rax + rax*8]
punpcklwd xmm2, xmm2
lea r14, [r14 + r14*8]
shl r14, 0xa
lea rax, [rbp + rax*2]
add rax, r14
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rax]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r12d, xmm4
add r12d, 0x100
bsf r15d, r12d
mov dword [rsp + 0x68], r15d
lea r14d, [r15 - 1]
mov dword [rsp + 0xa0], r14d
movzx r12d, word [rax + r14*2]
movzx r15d, word [rax + r15*2]
sub r15d, r12d
imul r9d, r15d
mov qword [rsp + 0x70], r14
sub r9d, r12d
movsxd r14, r14d
lea r12, [0x140000000]
shl r14, 4
add r9d, edx
movdqu xmm5, xmmword [r12 + r14 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [rax], xmm0
mov r14, qword [rsp + 0x70]
mov eax, dword [rsp + 0x68]
cmp r9d, 0x800000
jae 0x14001749a
mov r12, qword [rsp + 0x120]
shl r9d, 8
mov r12, qword [r12]
movzx r15d, byte [r12]
or r9d, r15d
inc r12
cmp r9d, 0x800000
jb 0x140017fda
mov r15, qword [rsp + 0x120]
mov qword [r15], r12
movzx r12d, byte [rsp + r14 + 0x90]
cmp r12d, r13d
mov r14d, r13d
mov r15d, r13d
cmova r14d, r12d
cmovb r15d, r12d
mov dword [rbx], r9d
mov dword [rsp + 0x68], r12d
cmp r8d, r14d
jae 0x1400174d3
sub r13d, r8d
add r13d, dword [rsp + 0x68]
cmp r8d, r15d
mov r15d, r14d
cmova r15d, r13d
movd xmm0, r15d
xor r12d, r12d
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r14d, word [rsp + 0x50]
movzx r8d, word [rsp + 0x52]
cmp r8d, r14d
mov r13d, dword [rsp + 0x88]
cmovb r14d, r8d
setb r12b
movzx r8d, word [rsp + 0x54]
cmp r8d, r14d
movzx r15d, word [rsp + 0x5c]
cmovb r14d, r8d
mov r8d, 2
cmovb r12, r8
movzx r8d, word [rsp + 0x56]
cmp r8d, r14d
cmovb r14d, r8d
mov r8d, 3
cmovb r12, r8
movzx r8d, word [rsp + 0x58]
cmp r8d, r14d
cmovb r14d, r8d
mov r8d, 4
cmovb r12, r8
movzx r8d, word [rsp + 0x5a]
cmp r8d, r14d
cmovb r14d, r8d
mov r8d, 5
cmovb r12, r8
mov r8d, edi
shl r8d, 6
cmp r15d, r14d
cmovb r14d, r15d
lea r8d, [r8 + r13*8]
mov r13d, 6
cmovb r12, r13
lea r8d, [r8 + rax - 0x49]
movzx r13d, word [rsp + 0x5e]
cmp r13d, r14d
mov r14d, 7
cmovb r12, r14
lea r8, [r8 + r8*8]
mov r14d, r9d
lea r8, [rbp + r8*2]
and r14d, 0x7fff
shr r9d, 0xf
lea r12, [r12 + r12*8]
shl r12, 0xa
add r8, r12
movd xmm2, r14d
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [r8]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r12d, xmm4
add r12d, 0x100
bsf r15d, r12d
mov dword [rsp + 0x98], r15d
lea r12d, [r15 - 1]
movzx r13d, word [r8 + r12*2]
movzx r15d, word [r8 + r15*2]
sub r15d, r13d
imul r9d, r15d
movsxd rdx, r12d
sub r9d, r13d
shl rdx, 4
lea r13, [0x140000000]
add r9d, r14d
movdqu xmm5, xmmword [r13 + rdx + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [r8], xmm0
cmp r9d, 0x800000
jae 0x140017681
mov r8, qword [rsp + 0x120]
shl r9d, 8
mov r8, qword [r8]
movzx r13d, byte [r8]
or r9d, r13d
inc r8
cmp r9d, 0x800000
jb 0x140017fbe
mov r13, qword [rsp + 0x120]
mov qword [r13], r8
mov r8d, dword [rsp + 0xa8]
dec r8d
shrd r8d, r8d, 3
mov dword [rbx], r9d
mov r9d, dword [rsp + 0xb0]
mov r14d, dword [rsp + 0x88]
movzx r12d, byte [rsp + r12 + 0x90]
mov dword [rsp + 0x70], r12d
lea r13d, [r8 + r9 - 1]
shrd r13d, r13d, 3
mov r8d, dword [rsp + 0x98]
mov r12d, r11d
lea edi, [r13 + rdi - 1]
shrd edi, edi, 3
lea r15d, [rdi + r14 - 1]
shrd r15d, r15d, 3
lea edi, [r15 + r10 - 1]
shrd edi, edi, 3
lea edi, [rdi + rsi - 1]
shrd edi, edi, 3
lea edi, [rdi + rax - 1]
shrd edi, edi, 3
lea edi, [rdi + r8 - 1]
mov r8, qword [rsp + 0x128]
shrd edi, edi, 3
shr edi, 8
mov dword [r8 + 8], edi
mov r8d, r11d
mov edi, dword [rsp + 0x78]
cmp edi, r11d
cmova r8d, edi
cmovb r12d, edi
cmp r8d, dword [rsp + 0x60]
jbe 0x14001773b
mov r9d, edi
add r9d, r11d
mov edi, dword [rsp + 0x60]
sub r9d, edi
cmp edi, r12d
mov r12d, r8d
cmova r12d, r9d
movd xmm0, r12d
xor r14d, r14d
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx edi, word [rsp + 0x50]
movzx r15d, word [rsp + 0x52]
cmp r15d, edi
movzx r8d, word [rsp + 0x54]
cmovb edi, r15d
setb r14b
cmp r8d, edi
movzx r9d, word [rsp + 0x5c]
cmovb edi, r8d
mov r8d, 2
cmovb r14, r8
mov r15d, 6
movzx r8d, word [rsp + 0x56]
cmp r8d, edi
mov r13d, dword [rbx]
cmovb edi, r8d
mov r8d, 3
cmovb r14, r8
movzx r8d, word [rsp + 0x58]
cmp r8d, edi
cmovb edi, r8d
mov r8d, 4
cmovb r14, r8
movzx r8d, word [rsp + 0x5a]
cmp r8d, edi
cmovb edi, r8d
mov r8d, 5
cmovb r14, r8
cmp r9d, edi
lea r8d, [r10*8 + 0x1bf]
cmovb edi, r9d
cmovb r14, r15
movzx r15d, word [rsp + 0x5e]
mov r9d, 7
cmp r15d, edi
cmovb r14, r9
lea r8, [r8 + r8*8]
lea r8, [rbp + r8*2]
lea r9, [r14 + r14*8]
shl r9, 0xa
add r8, r9
mov r9d, r13d
and r9d, 0x7fff
shr r13d, 0xf
movdqu xmm0, xmmword [r8]
movd xmm2, r9d
movdqa xmm4, xmm0
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r14d, xmm4
add r14d, 0x100
bsf edi, r14d
lea r14d, [rdi - 1]
movzx edx, word [r8 + rdi*2]
mov r15d, r14d
movzx r12d, word [r8 + r15*2]
sub edx, r12d
imul edx, r13d
sub r9d, r12d
movsxd r13, r14d
lea r12, [0x140000000]
shl r13, 4
add r9d, edx
movdqu xmm5, xmmword [r12 + r13 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [r8], xmm0
cmp r9d, 0x800000
jae 0x1400178d6
mov r8, qword [rsp + 0x120]
shl r9d, 8
mov r8, qword [r8]
movzx r12d, byte [r8]
or r9d, r12d
inc r8
cmp r9d, 0x800000
jb 0x140017fa2
mov r12, qword [rsp + 0x120]
mov qword [r12], r8
movzx r8d, byte [rsp + r15 + 0x90]
cmp r8d, ecx
mov r12d, ecx
mov r13d, ecx
cmova r12d, r8d
cmovb r13d, r8d
mov dword [rbx], r9d
mov dword [rsp + 0x78], r8d
cmp r11d, r12d
jae 0x140017912
mov r8d, ecx
sub r8d, r11d
add r8d, dword [rsp + 0x78]
cmp r11d, r13d
mov r13d, r12d
cmova r13d, r8d
movd xmm0, r13d
xor r12d, r12d
punpcklwd xmm0, xmm0
mov r11d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
shl r10d, 6
movzx r15d, word [rsp + 0x50]
movzx r13d, word [rsp + 0x52]
cmp r13d, r15d
cmovb r15d, r13d
setb r12b
movzx r13d, word [rsp + 0x54]
cmp r13d, r15d
lea r10d, [r10 + rsi*8]
cmovb r15d, r13d
mov r13d, 2
cmovb r12, r13
lea r10d, [r10 + rdi - 0x49]
movzx r13d, word [rsp + 0x56]
cmp r13d, r15d
cmovb r15d, r13d
mov r13d, 3
cmovb r12, r13
lea r10, [r10 + r10*8]
movzx r13d, word [rsp + 0x58]
cmp r13d, r15d
lea r10, [rbp + r10*2]
cmovb r15d, r13d
mov r13d, 4
cmovb r12, r13
movzx r13d, word [rsp + 0x5a]
cmp r13d, r15d
cmovb r15d, r13d
mov r13d, 5
cmovb r12, r13
movzx r13d, word [rsp + 0x5c]
cmp r13d, r15d
cmovb r15d, r13d
cmovb r12, r11
movzx r11d, word [rsp + 0x5e]
mov r13d, 7
cmp r11d, r15d
mov r11d, r9d
cmovb r12, r13
and r11d, 0x7fff
shr r9d, 0xf
movd xmm2, r11d
lea r13, [r12 + r12*8]
shl r13, 0xa
add r10, r13
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [r10]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb r13d, xmm4
add r13d, 0x100
bsf r12d, r13d
lea r13d, [r12 - 1]
movzx edx, word [r10 + r12*2]
mov r15d, r13d
movzx r8d, word [r10 + r15*2]
sub edx, r8d
imul r9d, edx
sub r9d, r8d
lea r8, [0x140000000]
add r9d, r11d
movsxd r11, r13d
shl r11, 4
movdqu xmm5, xmmword [r8 + r11 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [r10], xmm0
cmp r9d, 0x800000
jae 0x140017ab0
mov r8, qword [rsp + 0x120]
shl r9d, 8
mov r8, qword [r8]
movzx r10d, byte [r8]
or r9d, r10d
inc r8
cmp r9d, 0x800000
jb 0x140017f86
mov r10, qword [rsp + 0x120]
mov qword [r10], r8
movzx r10d, byte [rsp + r15 + 0x90]
mov r8d, dword [rsp + 0x68]
cmp r10d, r8d
mov r11d, r8d
cmova r11d, r10d
cmovb r8d, r10d
mov dword [rbx], r9d
mov dword [rsp + 0x60], r10d
cmp ecx, r11d
jae 0x140017af0
mov r10d, dword [rsp + 0x68]
sub r10d, ecx
add r10d, dword [rsp + 0x60]
cmp ecx, r8d
mov r8d, r11d
cmova r8d, r10d
movd xmm0, r8d
xor r15d, r15d
punpcklwd xmm0, xmm0
mov ecx, 2
pshufd xmm1, xmm0, 0
psubw xmm1, xmm15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
shl esi, 6
movzx r8d, word [rsp + 0x50]
movzx r10d, word [rsp + 0x52]
cmp r10d, r8d
movzx r11d, word [rsp + 0x54]
cmovb r8d, r10d
setb r15b
cmp r11d, r8d
lea esi, [rsi + rax*8]
lea esi, [rsi + r12 - 0x49]
cmovb r8d, r11d
cmovb r15, rcx
mov eax, 6
movzx ecx, word [rsp + 0x56]
cmp ecx, r8d
cmovb r8d, ecx
mov ecx, 3
cmovb r15, rcx
lea rsi, [rsi + rsi*8]
movzx ecx, word [rsp + 0x58]
cmp ecx, r8d
lea rsi, [rbp + rsi*2]
cmovb r8d, ecx
mov ecx, 4
cmovb r15, rcx
movzx ecx, word [rsp + 0x5a]
cmp ecx, r8d
cmovb r8d, ecx
mov ecx, 5
cmovb r15, rcx
movzx ecx, word [rsp + 0x5c]
cmp ecx, r8d
cmovb r8d, ecx
cmovb r15, rax
movzx eax, word [rsp + 0x5e]
mov ecx, 7
cmp eax, r8d
mov eax, r9d
cmovb r15, rcx
and eax, 0x7fff
shr r9d, 0xf
movd xmm2, eax
lea rcx, [r15 + r15*8]
shl rcx, 0xa
add rsi, rcx
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rsi]
movdqa xmm4, xmm0
pcmpgtw xmm4, xmm3
packsswb xmm4, xmm4
pmovmskb ecx, xmm4
add ecx, 0x100
bsf r15d, ecx
lea ecx, [r15 - 1]
mov dword [rsp + 0x88], ecx
movsxd r11, ecx
movzx r10d, word [rsi + rcx*2]
movzx r8d, word [rsi + r15*2]
sub r8d, r10d
imul r9d, r8d
sub r9d, r10d
shl r11, 4
add r9d, eax
lea rax, [0x140000000]
movdqu xmm5, xmmword [rax + r11 + 0x1200]
psubw xmm5, xmm0
psraw xmm5, 6
paddw xmm0, xmm5
movdqu xmmword [rsi], xmm0
cmp r9d, 0x800000
jae 0x140017c7c
mov rax, qword [rsp + 0x120]
shl r9d, 8
mov rax, qword [rax]
movzx esi, byte [rax]
or r9d, esi
inc rax
cmp r9d, 0x800000
jb 0x140017f6b
mov rsi, qword [rsp + 0x120]
mov qword [rsi], rax
movzx ecx, byte [rsp + rcx + 0x90]
mov dword [rbx], r9d
lea r9, [rsp + 0x90]
mov dword [r9 - 0x40], ecx
mov edx, dword [r9 - 0x20]
mov r8d, dword [r9 - 0x28]
call fcn.140018160
mov eax, eax
mov rdx, rbx
mov esi, dword [rsp + 0xa0]
shl esi, 6
mov r9d, dword [rsp + 0x98]
mov r8, qword [rsp + 0x120]
lea rax, [rax + rax*8]
shl rax, 0xa
add rax, rbp
lea r10d, [rsi + r9*8 - 8]
lea r11d, [r10 + r15 - 1]
lea rcx, [r11 + r11*8]
lea rcx, [rax + rcx*2]
call fcn.140018250
mov esi, eax
movzx r9d, byte [rsp + 0x3a]
mov ecx, dword [rsp + 0x78]
cmp r9d, ecx
mov r8d, ecx
movzx eax, byte [rsp + rsi + 0x90]
cmova r8d, r9d
mov dword [rsp + 0x58], eax
cmovb ecx, r9d
movzx eax, byte [rsp + 0x3c]
cmp eax, r8d
jae 0x140017d22
add r9d, dword [rsp + 0x78]
sub r9d, eax
cmp eax, ecx
mov ecx, r8d
cmova ecx, r9d
movd xmm0, ecx
xor r9d, r9d
punpcklwd xmm0, xmm0
mov ecx, 2
pshufd xmm1, xmm0, 0
lea edi, [rdi*8 + 0x1bf]
psubw xmm1, xmm15
mov rdx, rbx
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x28], xmm1
movzx r10d, word [rsp + 0x28]
movzx r11d, word [rsp + 0x2a]
cmp r11d, r10d
movzx eax, word [rsp + 0x2c]
cmovb r10d, r11d
setb r9b
cmp eax, r10d
movzx r8d, word [rsp + 0x2e]
cmovb r10d, eax
cmovb r9, rcx
mov r11d, 3
cmp r8d, r10d
lea rcx, [rdi + rdi*8]
movzx eax, word [rsp + 0x30]
lea rcx, [rbp + rcx*2]
cmovb r10d, r8d
cmovb r9, r11
cmp eax, r10d
movzx r11d, word [rsp + 0x36]
cmovb r10d, eax
mov eax, 4
cmovb r9, rax
mov r8d, 6
movzx eax, word [rsp + 0x32]
cmp eax, r10d
cmovb r10d, eax
mov eax, 5
cmovb r9, rax
movzx eax, word [rsp + 0x34]
cmp eax, r10d
cmovb r10d, eax
cmovb r9, r8
mov eax, 7
cmp r11d, r10d
mov r8, qword [rsp + 0x120]
cmovb r9, rax
lea r9, [r9 + r9*8]
shl r9, 0xa
add rcx, r9
call fcn.140018250
mov edi, eax
lea r9, [rsp + 0x90]
mov edx, dword [r9 - 0x30]
mov r8d, dword [r9 - 0x18]
movzx ecx, byte [rsp + rdi + 0x90]
call fcn.140018160
mov r8d, eax
mov eax, r14d
mov rdx, rbx
shl eax, 6
lea r9d, [rax + r12*8 - 8]
add r9d, edi
lea r11, [r8 + r8*8]
shl r11, 0xa
lea r10, [r9 + r9*8]
mov r8, qword [rsp + 0x120]
lea rcx, [rbp + r10*2]
add rcx, r11
call fcn.140018250
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x28]
lea r9, [rsp + 0x90]
mov edx, dword [r9 - 0x40]
mov r8d, dword [r9 - 0x30]
movzx ecx, byte [rsp + rax + 0x90]
call fcn.140018160
mov r8d, eax
shl r13d, 6
mov rdx, rbx
lea eax, [r13 + r15*8 - 8]
add eax, dword [rsp + 0x28]
lea r10, [r8 + r8*8]
shl r10, 0xa
lea r9, [rax + rax*8]
mov r8, qword [rsp + 0x120]
lea rcx, [rbp + r9*2]
add rcx, r10
call fcn.140018250
mov r13d, eax
lea r9, [rsp + 0x90]
mov edx, dword [r9 - 0x38]
mov r8d, dword [r9 - 0x40]
movzx ecx, byte [rsp + r13 + 0x90]
call fcn.140018160
mov r8d, eax
mov eax, dword [rsp + 0x88]
mov rdx, rbx
shl eax, 6
lea r9d, [rax + rsi*8]
add r9d, r13d
lea r10, [r9 + r9*8]
lea rcx, [rbp + r10*2]
lea rbp, [r8 + r8*8]
mov r8, qword [rsp + 0x120]
shl rbp, 0xa
add rcx, rbp
call fcn.140018250
mov edx, eax
shrd r14d, r14d, 3
movups xmm15, xmmword [rsp + 0x40]
lea eax, [r14 + r12 - 1]
shrd eax, eax, 3
lea ecx, [rax + r15 - 1]
xor eax, eax
shrd ecx, ecx, 3
add ecx, esi
shrd ecx, ecx, 3
add ecx, edi
shrd ecx, ecx, 3
add ecx, dword [rsp + 0x28]
shrd ecx, ecx, 3
add ecx, r13d
shrd ecx, ecx, 3
add ecx, edx
mov rdx, qword [rsp + 0x128]
shrd ecx, ecx, 3
shr ecx, 8
mov dword [rdx + 0xc], ecx
add rsp, 0xb8
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
shl r9d, 8
movzx esi, byte [rax]
or r9d, esi
inc rax
cmp r9d, 0x800000
jb 0x140017f6b
jmp 0x140017c71
shl r9d, 8
movzx r10d, byte [r8]
or r9d, r10d
inc r8
cmp r9d, 0x800000
jb 0x140017f86
jmp 0x140017aa5
shl r9d, 8
movzx r12d, byte [r8]
or r9d, r12d
inc r8
cmp r9d, 0x800000
jb 0x140017fa2
jmp 0x1400178ca
shl r9d, 8
movzx r13d, byte [r8]
or r9d, r13d
inc r8
cmp r9d, 0x800000
jb 0x140017fbe
jmp 0x140017675
shl r9d, 8
movzx r15d, byte [r12]
or r9d, r15d
inc r12
cmp r9d, 0x800000
jb 0x140017fda
jmp 0x14001748f
shl r9d, 8
movzx r12d, byte [rcx]
or r9d, r12d
inc rcx
cmp r9d, 0x800000
jb 0x140017ff7
jmp 0x1400172ae
shl r9d, 8
movzx esi, byte [rcx]
or r9d, esi
inc rcx
cmp r9d, 0x800000
jb 0x140018013
jmp 0x1400170dc
shl r9d, 8
movzx r13d, byte [rcx]
or r9d, r13d
inc rcx
cmp r9d, 0x800000
jb 0x14001802e
jmp 0x140016f1d
shl r9d, 8
movzx r13d, byte [r8]
or r9d, r13d
inc r8
cmp r9d, 0x800000
jb 0x14001804a
jmp 0x140016d5e
shl r9d, 8
movzx r13d, byte [rax]
or r9d, r13d
inc rax
cmp r9d, 0x800000
jb 0x140018066
jmp 0x140016b95
shl r9d, 8
movzx r13d, byte [r12]
or r9d, r13d
inc r12
cmp r9d, 0x800000
jb 0x140018082
jmp 0x1400169ca
mov rax, qword [rsp + 0x128]
lea r8, [rsp + 0x20]
movzx ecx, word [rax + 0x1c]
movzx edx, word [rax + 0x1e]
call fcn.1400135d0
mov rax, qword [rsp + 0x128]
movzx r10d, byte [rsp + 0x39]
movzx r13d, byte [rsp + 0x37]
mov ecx, dword [rax + 0x24]
mov r8d, ecx
mov edi, ecx
mov esi, ecx
shr r8d, 0xc
shr edi, 0xf
shr esi, 0x12
and r8, 7
shr ecx, 0x15
and rdi, 7
and rsi, 7
and rcx, 7
movzx r8d, byte [rsp + r8 + 0x20]
mov eax, r8d
movzx edi, byte [rsp + rdi + 0x20]
movzx esi, byte [rsp + rsi + 0x20]
movzx ecx, byte [rsp + rcx + 0x20]
mov dword [rsp + 0x60], r10d
lea r10, [rsp + 0x2d]
mov byte [r10], r8b
mov byte [r10 - 4], r8b
mov byte [r10 + 3], dil
mov byte [r10 - 1], dil
mov byte [r10 + 6], sil
mov byte [r10 + 2], sil
mov byte [r10 + 5], cl
movzx r12d, byte [r10 - 3]
movzx r11d, byte [r10 + 9]
movzx r9d, byte [r10 - 5]
movzx r10d, byte [r10 + 7]
mov dword [rsp + 0x78], r13d
jmp 0x1400167f8
xor ecx, ecx
jmp 0x140016706