Function at 0x140013eb0
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, 0xa8
mov rbx, rcx
mov r10, qword [rsp + 0x118]
mov r15, r9
movups xmmword [rsp + 0x40], xmm12
movzx eax, word [r10 + 2]
movzx ecx, word [r10 + 4]
cmp eax, ecx
jbe 0x1400156ca
movd xmm0, eax
movd xmm1, ecx
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
pxor xmm3, xmm3
pshufd xmm4, xmm0, 0
pshufd xmm2, xmm1, 0
pmullw xmm4, xmmword [0x140007a90]
pmullw xmm2, xmmword [0x140007aa0]
paddw xmm4, xmm2
pmullw xmm4, xmmword [0x140007ab0]
psrlw xmm4, 8
packuswb xmm4, xmm3
movq qword [rsp + 0x98], xmm4
mov byte [rsp + 0x98], al
mov byte [rsp + 0x99], cl
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
je 0x1400156c3
bsr eax, eax
inc eax
cmp eax, 5
lea r14d, [rax - 1]
mov rcx, qword [rsp + 0x118]
adc r14d, 0
lea rax, [r14 + r14*8]
shl rax, 0xd
lea r14, [rbx + rax + 0x2ab748]
movzx eax, word [rcx + 0x10]
movzx ecx, word [rcx + 0x12]
cmp eax, ecx
jbe 0x140015668
movd xmm0, eax
movd xmm1, ecx
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
pxor xmm3, xmm3
pshufd xmm4, xmm0, 0
pshufd xmm2, xmm1, 0
pmullw xmm4, xmmword [0x140007a90]
pmullw xmm2, xmmword [0x140007aa0]
paddw xmm4, xmm2
pmullw xmm4, xmmword [0x140007ab0]
psrlw xmm4, 8
packuswb xmm4, xmm3
movq qword [rsp + 0x20], xmm4
mov byte [rsp + 0x20], al
mov byte [rsp + 0x21], cl
mov rax, qword [rsp + 0x118]
mov r10d, dword [rax + 0x14]
mov edi, r10d
mov ebp, dword [rax + 0x18]
mov ecx, ebp
shr edi, 9
shr r10d, 0x15
shr ecx, 9
and rdi, 7
shr ebp, 0x15
and r10, 7
and rcx, 7
and rbp, 7
movzx r8d, byte [rsp + rdi + 0x20]
mov edi, r8d
movzx r10d, byte [rsp + r10 + 0x20]
mov bl, byte [rsp + rcx + 0x20]
mov sil, byte [rsp + rbp + 0x20]
mov byte [rsp + 0x2a], r8b
mov dword [rsp + 0x60], r8d
mov byte [rsp + 0x36], r8b
mov byte [rsp + 0x28], r8b
mov byte [rsp + 0x39], r10b
mov byte [rsp + 0x34], r10b
mov byte [rsp + 0x3c], bl
mov byte [rsp + 0x37], bl
mov byte [rsp + 0x3a], sil
cmp byte [rax], 1
ja 0x1400155d2
xor ecx, ecx
mov eax, edi
xor ebx, ebx
xor esi, esi
mov byte [rsp + 0x29], r8b
xor ebp, ebp
mov byte [rsp + 0x2d], cl
mov byte [rsp + 0x2c], cl
mov byte [rsp + 0x30], cl
mov byte [rsp + 0x2f], cl
mov byte [rsp + 0x33], cl
mov byte [rsp + 0x32], cl
cmp edi, eax
mov r9d, eax
mov r11d, eax
cmova r9d, edi
cmovb r11d, edi
cmp r8d, r9d
jae 0x1400140a1
add edi, eax
sub edi, r8d
cmp r8d, r11d
mov r11d, r9d
cmova r11d, edi
movd xmm1, r11d
mov r13d, 1
movq xmm12, qword [rsp + 0x98]
pxor xmm0, xmm0
punpcklwd xmm1, xmm1
xor r8d, r8d
punpcklbw xmm12, xmm0
mov r9d, 7
pshufd xmm2, xmm1, 0
psubw xmm2, xmm12
pcmpeqd xmm5, xmm5
pmullw xmm2, xmm2
movdqu xmmword [rsp + 0x50], xmm2
movzx r12d, word [rsp + 0x50]
movzx edi, word [rsp + 0x52]
cmp edi, r12d
movzx r11d, word [rsp + 0x54]
cmovb r12d, edi
cmovb r8, r13
cmp r11d, r12d
movzx edi, word [rsp + 0x5c]
cmovb r12d, r11d
mov r11d, 2
cmovb r8, r11
movzx r11d, word [rsp + 0x56]
cmp r11d, r12d
cmovb r12d, r11d
mov r11d, 3
cmovb r8, r11
movzx r11d, word [rsp + 0x58]
cmp r11d, r12d
cmovb r12d, r11d
mov r11d, 4
cmovb r8, r11
movzx r11d, word [rsp + 0x5a]
cmp r11d, r12d
cmovb r12d, r11d
mov r11d, 5
cmovb r8, r11
mov r11d, 6
cmp edi, r12d
cmovb r12d, edi
cmovb r8, r11
movzx r11d, word [rsp + 0x5e]
cmp r11d, r12d
cmovb r8, r9
mov r9d, dword [r15]
lea r11, [r8 + r8*8]
mov r8d, r9d
shl r11, 0xa
and r8d, 0x7fff
add r11, r14
shr r9d, 0xf
movd xmm3, r8d
movdqu xmm0, xmmword [r11 + 0x23ee]
punpcklwd xmm3, xmm3
pshufd xmm4, xmm3, 0
movdqa xmm3, xmm0
pcmpgtw xmm3, xmm4
packsswb xmm3, xmm5
pmovmskb r12d, xmm3
bsf edi, r12d
lea r12d, [rdi - 1]
movzx r13d, word [r11 + rdi*2 + 0x23ee]
movsxd rdx, r12d
movzx eax, word [r11 + r12*2 + 0x23ee]
sub r8d, eax
shl rdx, 4
sub r13d, eax
lea rax, [0x140000000]
imul r13d, r9d
movdqu xmm4, xmmword [rax + rdx + 0x1080]
psubw xmm4, xmm0
add r8d, r13d
psraw xmm4, 6
paddw xmm0, xmm4
movdqu xmmword [r11 + 0x23ee], xmm0
cmp r8d, 0x800000
jae 0x14001424b
mov rax, qword [rsp + 0x110]
shl r8d, 8
mov rax, qword [rax]
movzx r9d, byte [rax]
or r8d, r9d
inc rax
cmp r8d, 0x800000
jb 0x1400155b6
mov r9, qword [rsp + 0x110]
mov qword [r9], rax
movzx eax, byte [rsp + r12 + 0x98]
cmp eax, ebx
mov r9d, ebx
mov r12d, ebx
cmova r9d, eax
cmovb r12d, eax
mov dword [r15], r8d
cmp ecx, r9d
jae 0x14001427d
lea r11d, [rax + rbx]
sub r11d, ecx
cmp ecx, r12d
mov r12d, r9d
cmova r12d, r11d
movd xmm0, r12d
xor r9d, r9d
punpcklwd xmm0, xmm0
mov r11d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm12
pcmpeqd xmm4, xmm4
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r12d, word [rsp + 0x50]
movzx ecx, word [rsp + 0x52]
cmp ecx, r12d
movzx r13d, word [rsp + 0x5c]
cmovb r12d, ecx
mov ecx, 1
cmovb r9, rcx
movzx ecx, word [rsp + 0x54]
cmp ecx, r12d
cmovb r12d, ecx
mov ecx, 2
cmovb r9, rcx
movzx ecx, word [rsp + 0x56]
cmp ecx, r12d
cmovb r12d, ecx
mov ecx, 3
cmovb r9, rcx
movzx ecx, word [rsp + 0x58]
cmp ecx, r12d
cmovb r12d, ecx
mov ecx, 4
cmovb r9, rcx
movzx ecx, word [rsp + 0x5a]
cmp ecx, r12d
cmovb r12d, ecx
mov ecx, 5
cmovb r9, rcx
cmp r13d, r12d
lea ecx, [rdi + 0x1f7]
cmovb r12d, r13d
cmovb r9, r11
movzx r11d, word [rsp + 0x5e]
cmp r11d, r12d
mov r12d, 7
cmovb r9, r12
lea rcx, [rcx + rcx*8]
mov r12d, r8d
lea rcx, [r14 + rcx*2]
and r12d, 0x7fff
shr r8d, 0xf
lea r9, [r9 + r9*8]
shl r9, 0xa
add rcx, r9
movd xmm2, r12d
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rcx]
movdqa xmm5, xmm0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb r9d, xmm5
bsf r13d, r9d
mov dword [rsp + 0x90], r13d
lea r9d, [r13 - 1]
mov dword [rsp + 0x70], r9d
movzx r11d, word [rcx + r9*2]
movzx r13d, word [rcx + r13*2]
sub r13d, r11d
imul r8d, r13d
movsxd rdx, r9d
sub r8d, r11d
shl rdx, 4
lea r11, [0x140000000]
add r8d, r12d
movdqu xmm2, xmmword [r11 + rdx + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [rcx], xmm0
cmp r8d, 0x800000
jae 0x140014413
mov rcx, qword [rsp + 0x110]
shl r8d, 8
mov rcx, qword [rcx]
movzx r11d, byte [rcx]
or r8d, r11d
inc rcx
cmp r8d, 0x800000
jb 0x14001559a
mov r11, qword [rsp + 0x110]
mov qword [r11], rcx
movzx ecx, byte [rsp + r9 + 0x98]
cmp ecx, esi
mov r9d, esi
mov r12d, esi
cmova r9d, ecx
cmovb r12d, ecx
mov dword [r15], r8d
cmp ebx, r9d
jae 0x140014445
lea r11d, [rcx + rsi]
sub r11d, ebx
cmp ebx, r12d
mov r12d, r9d
cmova r12d, r11d
movd xmm0, r12d
xor r9d, r9d
punpcklwd xmm0, xmm0
mov r11d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm12
pcmpeqd xmm4, xmm4
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r12d, word [rsp + 0x50]
movzx ebx, word [rsp + 0x52]
cmp ebx, r12d
movzx r13d, word [rsp + 0x5c]
cmovb r12d, ebx
mov ebx, 1
cmovb r9, rbx
movzx ebx, word [rsp + 0x54]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 2
cmovb r9, rbx
movzx ebx, word [rsp + 0x56]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 3
cmovb r9, rbx
movzx ebx, word [rsp + 0x58]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 4
cmovb r9, rbx
movzx ebx, word [rsp + 0x5a]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 5
cmovb r9, rbx
cmp r13d, r12d
mov ebx, dword [rsp + 0x90]
cmovb r12d, r13d
cmovb r9, r11
movzx r11d, word [rsp + 0x5e]
cmp r11d, r12d
mov r12d, 7
lea ebx, [rbx + 0x1f7]
cmovb r9, r12
mov r12d, r8d
and r12d, 0x7fff
lea rbx, [rbx + rbx*8]
shr r8d, 0xf
lea rbx, [r14 + rbx*2]
lea r9, [r9 + r9*8]
shl r9, 0xa
movd xmm2, r12d
add rbx, r9
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rbx]
movdqa xmm5, xmm0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb r9d, xmm5
bsf r13d, r9d
mov dword [rsp + 0x80], r13d
lea r9d, [r13 - 1]
mov dword [rsp + 0x88], r9d
movzx r11d, word [rbx + r9*2]
movzx r13d, word [rbx + r13*2]
sub r13d, r11d
imul r8d, r13d
movsxd rdx, r9d
sub r8d, r11d
shl rdx, 4
lea r11, [0x140000000]
add r8d, r12d
movdqu xmm2, xmmword [r11 + rdx + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [rbx], xmm0
cmp r8d, 0x800000
jae 0x1400145e5
mov rbx, qword [rsp + 0x110]
shl r8d, 8
mov rbx, qword [rbx]
movzx r11d, byte [rbx]
or r8d, r11d
inc rbx
cmp r8d, 0x800000
jb 0x14001557e
mov r11, qword [rsp + 0x110]
mov qword [r11], rbx
movzx r13d, byte [rsp + r9 + 0x98]
cmp r13d, ebp
mov ebx, ebp
mov r9d, ebp
cmova ebx, r13d
cmovb r9d, r13d
mov dword [r15], r8d
cmp esi, ebx
jae 0x140014614
add ebp, r13d
sub ebp, esi
cmp esi, r9d
mov r9d, ebx
cmova r9d, ebp
movd xmm0, r9d
xor r11d, r11d
punpcklwd xmm0, xmm0
mov ebp, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm12
pcmpeqd xmm4, xmm4
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r12d, word [rsp + 0x50]
movzx r9d, word [rsp + 0x52]
cmp r9d, r12d
movzx esi, word [rsp + 0x5c]
cmovb r12d, r9d
mov r9d, 1
cmovb r11, r9
movzx r9d, word [rsp + 0x54]
cmp r9d, r12d
cmovb r12d, r9d
mov r9d, 2
cmovb r11, r9
movzx r9d, word [rsp + 0x56]
cmp r9d, r12d
cmovb r12d, r9d
mov r9d, 3
cmovb r11, r9
movzx r9d, word [rsp + 0x58]
cmp r9d, r12d
cmovb r12d, r9d
mov r9d, 4
cmovb r11, r9
movzx r9d, word [rsp + 0x5a]
cmp r9d, r12d
cmovb r12d, r9d
mov r9d, 5
cmovb r11, r9
cmp esi, r12d
mov r9d, dword [rsp + 0x80]
cmovb r12d, esi
cmovb r11, rbp
movzx ebp, word [rsp + 0x5e]
mov esi, 7
cmp ebp, r12d
lea r9d, [r9 + 0x1f7]
cmovb r11, rsi
mov ebp, r8d
and ebp, 0x7fff
lea r9, [r9 + r9*8]
shr r8d, 0xf
lea r9, [r14 + r9*2]
lea rsi, [r11 + r11*8]
shl rsi, 0xa
movd xmm2, ebp
add r9, rsi
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [r9]
movdqa xmm5, xmm0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb esi, xmm5
bsf r11d, esi
mov dword [rsp + 0x78], r11d
lea esi, [r11 - 1]
movzx ebx, word [r9 + rsi*2]
movzx r11d, word [r9 + r11*2]
sub r11d, ebx
imul r8d, r11d
movsxd r12, esi
sub r8d, ebx
shl r12, 4
lea rbx, [0x140000000]
add r8d, ebp
movdqu xmm2, xmmword [rbx + r12 + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [r9], xmm0
cmp r8d, 0x800000
jae 0x1400147b0
mov rbx, qword [rsp + 0x110]
shl r8d, 8
mov rbx, qword [rbx]
movzx ebp, byte [rbx]
or r8d, ebp
inc rbx
cmp r8d, 0x800000
jb 0x140015563
mov rbp, qword [rsp + 0x110]
mov qword [rbp], rbx
cmp r10d, eax
mov ebp, eax
movzx r9d, byte [rsp + rsi + 0x98]
mov esi, eax
cmova ebp, r10d
cmovb esi, r10d
mov dword [r15], r8d
cmp ebp, dword [rsp + 0x60]
jbe 0x1400147e3
add r10d, eax
mov ebx, dword [rsp + 0x60]
sub r10d, ebx
cmp ebx, esi
mov esi, ebp
cmova esi, r10d
movd xmm0, esi
xor esi, esi
punpcklwd xmm0, xmm0
mov r10d, 6
pshufd xmm1, xmm0, 0
psubw xmm1, xmm12
pcmpeqd xmm4, xmm4
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r12d, word [rsp + 0x50]
movzx ebx, word [rsp + 0x52]
cmp ebx, r12d
movzx r11d, word [rsp + 0x5c]
cmovb r12d, ebx
mov ebx, 1
cmovb rsi, rbx
movzx ebx, word [rsp + 0x54]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 2
cmovb rsi, rbx
movzx ebx, word [rsp + 0x56]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 3
cmovb rsi, rbx
movzx ebx, word [rsp + 0x58]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 4
cmovb rsi, rbx
movzx ebx, word [rsp + 0x5a]
cmp ebx, r12d
cmovb r12d, ebx
mov ebx, 5
cmovb rsi, rbx
cmp r11d, r12d
lea ebx, [rdi*8 + 0x1bf]
cmovb r12d, r11d
cmovb rsi, r10
movzx r10d, word [rsp + 0x5e]
mov r11d, 7
cmp r10d, r12d
mov r10d, r8d
cmovb rsi, r11
lea rbx, [rbx + rbx*8]
and r10d, 0x7fff
lea rbx, [r14 + rbx*2]
shr r8d, 0xf
lea r11, [rsi + rsi*8]
shl r11, 0xa
movd xmm2, r10d
add rbx, r11
punpcklwd xmm2, xmm2
pshufd xmm3, xmm2, 0
movdqu xmm0, xmmword [rbx]
movdqa xmm5, xmm0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb r11d, xmm5
bsf esi, r11d
lea r11d, [rsi - 1]
movzx r12d, word [rbx + rsi*2]
movzx ebp, word [rbx + r11*2]
sub r12d, ebp
imul r8d, r12d
movsxd rdx, r11d
sub r8d, ebp
shl rdx, 4
lea rbp, [0x140000000]
add r8d, r10d
movdqu xmm2, xmmword [rbp + rdx + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [rbx], xmm0
cmp r8d, 0x800000
jae 0x14001496a
mov rbx, qword [rsp + 0x110]
shl r8d, 8
mov rbx, qword [rbx]
movzx ebp, byte [rbx]
or r8d, ebp
inc rbx
cmp r8d, 0x800000
jb 0x140015548
mov rbp, qword [rsp + 0x110]
mov qword [rbp], rbx
movzx ebp, byte [rsp + r11 + 0x98]
cmp ebp, ecx
mov ebx, ecx
mov r11d, ecx
cmova ebx, ebp
cmovb r11d, ebp
mov dword [r15], r8d
cmp eax, ebx
jae 0x14001499b
mov r10d, ecx
sub r10d, eax
add r10d, ebp
cmp eax, r11d
mov r11d, ebx
cmova r11d, r10d
movd xmm0, r11d
xor r11d, r11d
punpcklwd xmm0, xmm0
mov ebx, 1
pshufd xmm1, xmm0, 0
psubw xmm1, xmm12
pcmpeqd xmm4, xmm4
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r10d, word [rsp + 0x50]
movzx r12d, word [rsp + 0x52]
cmp r12d, r10d
movzx eax, word [rsp + 0x54]
cmovb r10d, r12d
cmovb r11, rbx
mov r12d, 2
cmp eax, r10d
movzx ebx, word [rsp + 0x5c]
cmovb r10d, eax
cmovb r11, r12
movzx r12d, word [rsp + 0x56]
cmp r12d, r10d
mov eax, dword [rsp + 0x90]
cmovb r10d, r12d
mov r12d, 3
cmovb r11, r12
movzx r12d, word [rsp + 0x58]
cmp r12d, r10d
cmovb r10d, r12d
mov r12d, 4
cmovb r11, r12
movzx r12d, word [rsp + 0x5a]
cmp r12d, r10d
cmovb r10d, r12d
mov r12d, 5
cmovb r11, r12
mov r12d, edi
shl r12d, 6
cmp ebx, r10d
cmovb r10d, ebx
lea r12d, [r12 + rax*8]
mov eax, 6
cmovb r11, rax
mov ebx, 7
lea r12d, [r12 + rsi - 0x49]
movzx eax, word [rsp + 0x5e]
cmp eax, r10d
cmovb r11, rbx
lea r12, [r12 + r12*8]
lea r12, [r14 + r12*2]
lea rbx, [r11 + r11*8]
mov r11d, r8d
shl rbx, 0xa
and r11d, 0x7fff
add r12, rbx
shr r8d, 0xf
movd xmm2, r11d
movdqu xmm0, xmmword [r12]
punpcklwd xmm2, xmm2
movdqa xmm5, xmm0
pshufd xmm3, xmm2, 0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb ebx, xmm5
bsf ebx, ebx
lea edx, [rbx - 1]
movzx eax, word [r12 + rbx*2]
movzx r10d, word [r12 + rdx*2]
sub eax, r10d
imul r8d, eax
sub r8d, r10d
lea r10, [0x140000000]
add r8d, r11d
movsxd r11, edx
shl r11, 4
movdqu xmm2, xmmword [r10 + r11 + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [r12], xmm0
cmp r8d, 0x800000
jae 0x140014b3a
mov rax, qword [rsp + 0x110]
shl r8d, 8
mov rax, qword [rax]
movzx r10d, byte [rax]
or r8d, r10d
inc rax
cmp r8d, 0x800000
jb 0x14001552c
mov r10, qword [rsp + 0x110]
mov qword [r10], rax
movzx eax, byte [rsp + rdx + 0x98]
cmp eax, r13d
mov dword [r15], r8d
mov r8d, r13d
cmova r8d, eax
mov r10d, r13d
mov dword [rsp + 0x68], eax
cmovb r10d, eax
cmp ecx, r8d
jae 0x140014b72
mov eax, r13d
sub eax, ecx
add eax, dword [rsp + 0x68]
cmp ecx, r10d
mov r10d, r8d
cmova r10d, eax
movd xmm0, r10d
xor r10d, r10d
punpcklwd xmm0, xmm0
mov ecx, 1
pshufd xmm1, xmm0, 0
mov r8d, 2
psubw xmm1, xmm12
mov rdx, r15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
mov dword [rsp + 0x60], r9d
movzx r11d, word [rsp + 0x50]
movzx r12d, word [rsp + 0x52]
cmp r12d, r11d
movzx eax, word [rsp + 0x54]
cmovb r11d, r12d
cmovb r10, rcx
cmp eax, r11d
movzx r12d, word [rsp + 0x56]
cmovb r11d, eax
cmovb r10, r8
mov ecx, 3
cmp r12d, r11d
mov r8d, dword [rsp + 0x80]
cmovb r11d, r12d
cmovb r10, rcx
movzx ecx, word [rsp + 0x58]
cmp ecx, r11d
movzx eax, word [rsp + 0x5c]
cmovb r11d, ecx
mov ecx, 4
cmovb r10, rcx
movzx ecx, word [rsp + 0x5a]
cmp ecx, r11d
cmovb r11d, ecx
mov ecx, 5
cmovb r10, rcx
mov ecx, dword [rsp + 0x70]
shl ecx, 6
cmp eax, r11d
cmovb r11d, eax
lea ecx, [rcx + r8*8 - 8]
mov r8d, 6
cmovb r10, r8
lea ecx, [rcx + rbx - 1]
movzx r8d, word [rsp + 0x5e]
cmp r8d, r11d
mov r11d, 7
cmovb r10, r11
lea rcx, [rcx + rcx*8]
mov r8, qword [rsp + 0x110]
lea rcx, [r14 + rcx*2]
lea r10, [r10 + r10*8]
shl r10, 0xa
add rcx, r10
call fcn.140015840
mov r9d, dword [rsp + 0x60]
mov r12d, eax
mov r8d, r9d
mov eax, eax
movzx ecx, byte [rsp + rax + 0x98]
cmp ecx, r9d
mov eax, r9d
cmova eax, ecx
cmovb r8d, ecx
mov dword [rsp + 0x70], ecx
cmp r13d, eax
jae 0x140014caa
sub r9d, r13d
add r9d, dword [rsp + 0x70]
cmp r13d, r8d
mov r8d, eax
cmova r8d, r9d
movd xmm0, r8d
xor r9d, r9d
punpcklwd xmm0, xmm0
mov r13d, 1
pshufd xmm1, xmm0, 0
mov ecx, 2
psubw xmm1, xmm12
mov rdx, r15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
movzx r10d, word [rsp + 0x50]
movzx r11d, word [rsp + 0x52]
cmp r11d, r10d
movzx eax, word [rsp + 0x54]
cmovb r10d, r11d
cmovb r9, r13
cmp eax, r10d
movzx r8d, word [rsp + 0x56]
cmovb r10d, eax
cmovb r9, rcx
mov r11d, 3
cmp r8d, r10d
movzx r13d, word [rsp + 0x58]
cmovb r10d, r8d
cmovb r9, r11
mov eax, 4
cmp r13d, r10d
mov ecx, dword [rsp + 0x88]
cmovb r10d, r13d
cmovb r9, rax
movzx eax, word [rsp + 0x5a]
cmp eax, r10d
mov r8d, dword [rsp + 0x78]
cmovb r10d, eax
mov eax, 5
cmovb r9, rax
shl ecx, 6
movzx eax, word [rsp + 0x5c]
cmp eax, r10d
cmovb r10d, eax
lea ecx, [rcx + r8*8 - 8]
mov r8d, 6
cmovb r9, r8
add ecx, r12d
movzx r8d, word [rsp + 0x5e]
cmp r8d, r10d
mov r10d, 7
cmovb r9, r10
lea rcx, [rcx + rcx*8]
mov r8, qword [rsp + 0x110]
lea rcx, [r14 + rcx*2]
lea r9, [r9 + r9*8]
shl r9, 0xa
add rcx, r9
call fcn.140015840
dec edi
mov edx, ebp
shrd edi, edi, 3
mov r13d, dword [rsp + 0x90]
mov r10d, dword [rsp + 0x80]
mov r9, qword [rsp + 0x118]
mov dword [rsp + 0x88], eax
lea edi, [rdi + r13 - 1]
shrd edi, edi, 3
mov r13d, dword [rsp + 0x78]
lea r11d, [rdi + r10 - 1]
shrd r11d, r11d, 3
lea ecx, [r11 + r13 - 1]
shrd ecx, ecx, 3
lea edi, [rcx + rsi - 1]
movzx ecx, byte [rsp + 0x37]
shrd edi, edi, 3
lea r8d, [rdi + rbx - 1]
shrd r8d, r8d, 3
add r8d, r12d
shrd r8d, r8d, 3
add r8d, eax
mov eax, eax
shrd r8d, r8d, 3
shr r8d, 8
mov dword [r9 + 8], r8d
lea r9, [rsp + 0x98]
movzx r8d, byte [r9 - 0x5f]
movzx r13d, byte [rsp + rax + 0x98]
call fcn.140015740
mov r9d, eax
lea r10d, [rsi*8 + 0x1bf]
mov ecx, dword [r15]
lea rdi, [r10 + r10*8]
mov r10d, ecx
lea r8, [r14 + rdi*2]
and r10d, 0x7fff
pcmpeqd xmm2, xmm2
lea r11, [r9 + r9*8]
shl r11, 0xa
add r8, r11
movd xmm0, r10d
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
movdqu xmm5, xmmword [r8]
movdqa xmm3, xmm5
pcmpgtw xmm3, xmm1
packsswb xmm3, xmm2
pmovmskb edi, xmm3
bsf r9d, edi
mov dword [rsp + 0x90], r9d
lea edi, [r9 - 1]
mov dword [rsp + 0x80], edi
movsxd r11, edi
movzx eax, word [r8 + rdi*2]
sub r10d, eax
movzx r9d, word [r8 + r9*2]
shl r11, 4
sub r9d, eax
lea rax, [0x140000000]
shr ecx, 0xf
imul r9d, ecx
movdqu xmm4, xmmword [rax + r11 + 0x1080]
psubw xmm4, xmm5
add r10d, r9d
psraw xmm4, 6
paddw xmm5, xmm4
movdqu xmmword [r8], xmm5
cmp r10d, 0x800000
jae 0x140014f1b
mov rax, qword [rsp + 0x110]
shl r10d, 8
mov rax, qword [rax]
movzx ecx, byte [rax]
or r10d, ecx
inc rax
cmp r10d, 0x800000
jb 0x140015511
mov rcx, qword [rsp + 0x110]
mov qword [rcx], rax
movzx ecx, byte [rsp + rdi + 0x98]
mov eax, dword [rsp + 0x68]
cmp ecx, eax
mov edi, eax
cmova edi, ecx
cmovb eax, ecx
mov dword [r15], r10d
mov dword [rsp + 0x78], ecx
cmp ebp, edi
jae 0x140014f4d
mov ecx, dword [rsp + 0x68]
sub ecx, ebp
add ecx, dword [rsp + 0x78]
cmp ebp, eax
mov eax, edi
cmova eax, ecx
movd xmm0, eax
xor edi, edi
punpcklwd xmm0, xmm0
mov r9d, 1
pshufd xmm1, xmm0, 0
mov ecx, 2
psubw xmm1, xmm12
pmullw xmm1, xmm1
pcmpeqd xmm4, xmm4
movdqu xmmword [rsp + 0x50], xmm1
shl esi, 6
movzx ebp, word [rsp + 0x50]
movzx r8d, word [rsp + 0x52]
cmp r8d, ebp
movzx r11d, word [rsp + 0x54]
cmovb ebp, r8d
cmovb rdi, r9
cmp r11d, ebp
lea esi, [rsi + rbx*8]
movzx eax, word [rsp + 0x5c]
mov r9d, r10d
cmovb ebp, r11d
cmovb rdi, rcx
movzx ecx, word [rsp + 0x56]
cmp ecx, ebp
cmovb ebp, ecx
mov ecx, 3
cmovb rdi, rcx
and r9d, 0x7fff
movzx ecx, word [rsp + 0x58]
cmp ecx, ebp
cmovb ebp, ecx
mov ecx, 4
cmovb rdi, rcx
movd xmm2, r9d
movzx ecx, word [rsp + 0x5a]
cmp ecx, ebp
punpcklwd xmm2, xmm2
cmovb ebp, ecx
mov ecx, 5
cmovb rdi, rcx
cmp eax, ebp
mov ecx, dword [rsp + 0x90]
cmovb ebp, eax
pshufd xmm3, xmm2, 0
lea ecx, [rsi + rcx - 0x49]
mov esi, 6
cmovb rdi, rsi
mov eax, 7
movzx esi, word [rsp + 0x5e]
cmp esi, ebp
lea rcx, [rcx + rcx*8]
cmovb rdi, rax
lea rcx, [r14 + rcx*2]
shr r10d, 0xf
lea rax, [rdi + rdi*8]
shl rax, 0xa
add rcx, rax
movdqu xmm0, xmmword [rcx]
movdqa xmm5, xmm0
pcmpgtw xmm5, xmm3
packsswb xmm5, xmm4
pmovmskb eax, xmm5
bsf esi, eax
lea edi, [rsi - 1]
movzx ebp, word [rcx + rsi*2]
mov eax, edi
movzx r8d, word [rcx + rax*2]
sub ebp, r8d
imul r10d, ebp
lea rbp, [0x140000000]
sub r10d, r8d
movsxd r8, edi
add r10d, r9d
shl r8, 4
movdqu xmm2, xmmword [rbp + r8 + 0x1080]
psubw xmm2, xmm0
psraw xmm2, 6
paddw xmm0, xmm2
movdqu xmmword [rcx], xmm0
cmp r10d, 0x800000
jae 0x1400150d2
mov rcx, qword [rsp + 0x110]
shl r10d, 8
mov rcx, qword [rcx]
movzx ebp, byte [rcx]
or r10d, ebp
inc rcx
cmp r10d, 0x800000
jb 0x1400154f6
mov rbp, qword [rsp + 0x110]
mov qword [rbp], rcx
movzx ecx, byte [rsp + rax + 0x98]
lea r9, [rsp + 0x98]
mov dword [r9 - 0x38], ecx
mov edx, dword [r9 - 0x28]
mov r8d, dword [r9 - 0x30]
mov dword [r15], r10d
mov dword [r9 - 0x48], r10d
call fcn.140015740
mov r10d, dword [rsp + 0x50]
shl ebx, 6
mov r9d, eax
mov eax, r10d
and eax, 0x7fff
pcmpeqd xmm2, xmm2
shr r10d, 0xf
lea ecx, [rbx + r12*8]
lea ebp, [rcx + rsi - 0x41]
movd xmm0, eax
lea rbx, [rbp + rbp*8]
punpcklwd xmm0, xmm0
lea r11, [r9 + r9*8]
shl r11, 0xa
lea r8, [r14 + rbx*2]
add r8, r11
pshufd xmm1, xmm0, 0
movdqu xmm5, xmmword [r8]
movdqa xmm3, xmm5
pcmpgtw xmm3, xmm1
packsswb xmm3, xmm2
pmovmskb ecx, xmm3
bsf ebx, ecx
lea ebp, [rbx - 1]
movzx r9d, word [r8 + rbx*2]
mov ecx, ebp
movzx r11d, word [r8 + rcx*2]
sub r9d, r11d
imul r10d, r9d
movsxd r9, ebp
sub r10d, r11d
shl r9, 4
add r10d, eax
lea rax, [0x140000000]
movdqu xmm4, xmmword [rax + r9 + 0x1080]
psubw xmm4, xmm5
psraw xmm4, 6
paddw xmm5, xmm4
movdqu xmmword [r8], xmm5
cmp r10d, 0x800000
jae 0x1400151d6
mov rax, qword [rsp + 0x110]
shl r10d, 8
mov rax, qword [rax]
movzx r8d, byte [rax]
or r10d, r8d
inc rax
cmp r10d, 0x800000
jb 0x1400154da
mov r8, qword [rsp + 0x110]
mov qword [r8], rax
movzx eax, byte [rsp + rcx + 0x98]
cmp eax, r13d
mov ecx, r13d
mov r8d, r13d
cmova ecx, eax
cmovb r8d, eax
mov dword [r15], r10d
mov dword [rsp + 0x68], eax
cmp ecx, dword [rsp + 0x70]
jbe 0x140015211
mov eax, dword [rsp + 0x70]
sub r13d, eax
add r13d, dword [rsp + 0x68]
cmp eax, r8d
mov r8d, ecx
cmova r8d, r13d
movd xmm0, r8d
xor r9d, r9d
punpcklwd xmm0, xmm0
mov r13d, 1
pshufd xmm1, xmm0, 0
mov ecx, 2
psubw xmm1, xmm12
mov rdx, r15
pmullw xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
shl r12d, 6
movzx r10d, word [rsp + 0x50]
movzx r11d, word [rsp + 0x52]
cmp r11d, r10d
movzx eax, word [rsp + 0x54]
cmovb r10d, r11d
cmovb r9, r13
cmp eax, r10d
movzx r8d, word [rsp + 0x56]
cmovb r10d, eax
cmovb r9, rcx
mov r11d, 3
cmp r8d, r10d
movzx r13d, word [rsp + 0x58]
cmovb r10d, r8d
cmovb r9, r11
mov eax, 4
cmp r13d, r10d
mov ecx, dword [rsp + 0x88]
cmovb r10d, r13d
cmovb r9, rax
mov r11d, 6
movzx eax, word [rsp + 0x5a]
cmp eax, r10d
lea r12d, [r12 + rcx*8]
cmovb r10d, eax
mov eax, 5
cmovb r9, rax
lea ecx, [r12 + rbx - 1]
movzx eax, word [rsp + 0x5c]
cmp eax, r10d
movzx r12d, word [rsp + 0x5e]
lea r8, [rcx + rcx*8]
cmovb r10d, eax
cmovb r9, r11
mov eax, 7
cmp r12d, r10d
lea rcx, [r14 + r8*2]
mov r8, qword [rsp + 0x110]
cmovb r9, rax
lea r9, [r9 + r9*8]
shl r9, 0xa
add rcx, r9
call fcn.140015840
mov r12d, eax
lea r9, [rsp + 0x98]
mov eax, eax
movzx ecx, byte [r9 - 0x5e]
movzx r8d, byte [r9 - 0x5c]
mov edx, dword [r9 - 0x20]
movzx r10d, byte [rsp + rax + 0x98]
mov dword [r9 - 0x48], r10d
call fcn.140015740
mov r8, rax
mov eax, dword [rsp + 0x90]
mov rdx, r15
mov r11d, r8d
mov r8, qword [rsp + 0x110]
lea r9d, [rax*8 + 0x1bf]
lea r10, [r9 + r9*8]
lea r13, [r11 + r11*8]
shl r13, 0xa
lea rcx, [r14 + r10*2]
add rcx, r13
call fcn.140015840
mov r10d, eax
lea r9, [rsp + 0x98]
mov edx, dword [r9 - 0x38]
mov r8d, dword [r9 - 0x20]
mov dword [r9 - 0x68], eax
movzx ecx, byte [rsp + r10 + 0x98]
call fcn.140015740
mov eax, eax
mov rdx, r15
mov r9d, dword [rsp + 0x80]
shl r9d, 6
mov r8, qword [rsp + 0x110]
lea r11, [rax + rax*8]
shl r11, 0xa
add r11, r14
lea r10d, [r9 + rsi*8 - 8]
add r10d, dword [rsp + 0x30]
lea r13, [r10 + r10*8]
lea rcx, [r11 + r13*2]
call fcn.140015840
mov r10d, eax
lea r9, [rsp + 0x98]
mov edx, dword [r9 - 0x30]
mov r8d, dword [r9 - 0x38]
mov dword [r9 - 0x70], eax
movzx ecx, byte [rsp + r10 + 0x98]
call fcn.140015740
mov eax, eax
mov rdx, r15
shl edi, 6
mov r8, qword [rsp + 0x110]
lea r9, [rax + rax*8]
shl r9, 0xa
lea edi, [rdi + rbx*8 - 8]
add r9, r14
add edi, dword [rsp + 0x28]
lea r10, [rdi + rdi*8]
lea rcx, [r9 + r10*2]
call fcn.140015840
mov edi, eax
lea r9, [rsp + 0x98]
mov eax, eax
mov edx, dword [r9 - 0x48]
mov r8d, dword [r9 - 0x30]
movzx ecx, byte [rsp + rax + 0x98]
call fcn.140015740
mov eax, eax
mov rdx, r15
shl ebp, 6
mov r8, qword [rsp + 0x110]
lea r9, [rax + rax*8]
shl r9, 0xa
lea ebp, [rbp + r12*8]
add r14, r9
add ebp, edi
lea r10, [rbp + rbp*8]
lea rcx, [r14 + r10*2]
call fcn.140015840
mov rcx, rax
mov eax, dword [rsp + 0x80]
shrd eax, eax, 3
mov rbp, qword [rsp + 0x118]
movups xmm12, xmmword [rsp + 0x40]
lea edx, [rax + rsi - 1]
xor eax, eax
shrd edx, edx, 3
lea ebx, [rdx + rbx - 1]
shrd ebx, ebx, 3
add ebx, r12d
shrd ebx, ebx, 3
add ebx, dword [rsp + 0x30]
shrd ebx, ebx, 3
add ebx, dword [rsp + 0x28]
shrd ebx, ebx, 3
add ebx, edi
shrd ebx, ebx, 3
add ebx, ecx
shrd ebx, ebx, 3
shr ebx, 8
mov dword [rbp + 0xc], ebx
add rsp, 0xa8
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
shl r10d, 8
movzx r8d, byte [rax]
or r10d, r8d
inc rax
cmp r10d, 0x800000
jb 0x1400154da
jmp 0x1400151cb
shl r10d, 8
movzx ebp, byte [rcx]
or r10d, ebp
inc rcx
cmp r10d, 0x800000
jb 0x1400154f6
jmp 0x1400150c6
shl r10d, 8
movzx ecx, byte [rax]
or r10d, ecx
inc rax
cmp r10d, 0x800000
jb 0x140015511
jmp 0x140014f10
shl r8d, 8
movzx r10d, byte [rax]
or r8d, r10d
inc rax
cmp r8d, 0x800000
jb 0x14001552c
jmp 0x140014b2f
shl r8d, 8
movzx ebp, byte [rbx]
or r8d, ebp
inc rbx
cmp r8d, 0x800000
jb 0x140015548
jmp 0x14001495e
shl r8d, 8
movzx ebp, byte [rbx]
or r8d, ebp
inc rbx
cmp r8d, 0x800000
jb 0x140015563
jmp 0x1400147a4
shl r8d, 8
movzx r11d, byte [rbx]
or r8d, r11d
inc rbx
cmp r8d, 0x800000
jb 0x14001557e
jmp 0x1400145da
shl r8d, 8
movzx r11d, byte [rcx]
or r8d, r11d
inc rcx
cmp r8d, 0x800000
jb 0x14001559a
jmp 0x140014408
shl r8d, 8
movzx r9d, byte [rax]
or r8d, r9d
inc rax
cmp r8d, 0x800000
jb 0x1400155b6
jmp 0x140014240
mov rax, qword [rsp + 0x118]
lea r8, [rsp + 0x20]
movzx ecx, word [rax + 0x1c]
movzx edx, word [rax + 0x1e]
call fcn.140021980
mov rax, qword [rsp + 0x118]
movzx edi, byte [rsp + 0x36]
mov dword [rsp + 0x60], edi
mov ebp, dword [rax + 0x24]
mov ecx, ebp
mov ebx, ebp
mov esi, ebp
shr ecx, 0xc
shr ebx, 0xf
shr esi, 0x12
and rcx, 7
shr ebp, 0x15
and rbx, 7
and rsi, 7
and rbp, 7
movzx eax, byte [rsp + rcx + 0x20]
mov ecx, eax
movzx ebx, byte [rsp + rbx + 0x20]
movzx esi, byte [rsp + rsi + 0x20]
movzx ebp, byte [rsp + rbp + 0x20]
lea rdi, [rsp + 0x2d]
mov byte [rdi], al
mov byte [rdi - 4], al
mov byte [rdi + 3], bl
mov byte [rdi - 1], bl
mov byte [rdi + 6], sil
mov byte [rdi + 2], sil
mov byte [rdi + 5], bpl
movzx r8d, byte [rdi - 3]
movzx edi, byte [rdi - 5]
movzx r10d, byte [rsp + 0x34]
jmp 0x14001407d
movd xmm0, eax
movd xmm1, ecx
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
pxor xmm3, xmm3
pshufd xmm4, xmm0, 0
pshufd xmm2, xmm1, 0
pmullw xmm4, xmmword [0x140007ac0]
pmullw xmm2, xmmword [0x140007ad0]
paddw xmm4, xmm2
pmullw xmm4, xmmword [0x140007ae0]
psrlw xmm4, 8
packuswb xmm4, xmm3
movq qword [rsp + 0x20], xmm4
mov byte [rsp + 0x20], al
mov byte [rsp + 0x21], cl
mov byte [rsp + 0x27], 0xff
jmp 0x140013fd9
xor eax, eax
jmp 0x140013f55
movd xmm0, eax
movd xmm1, ecx
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
pxor xmm3, xmm3
pshufd xmm4, xmm0, 0
pshufd xmm2, xmm1, 0
pmullw xmm4, xmmword [0x140007ac0]
pmullw xmm2, xmmword [0x140007ad0]
paddw xmm4, xmm2
pmullw xmm4, xmmword [0x140007ae0]
psrlw xmm4, 8
packuswb xmm4, xmm3
movq qword [rsp + 0x98], xmm4
mov byte [rsp + 0x98], al
mov byte [rsp + 0x99], cl
mov byte [rsp + 0x9f], 0xff
jmp 0x140013f43