Function at 0x140046780
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x128
vmovdqa xmmword [rsp + 0x110], xmm15
vmovdqa xmmword [rsp + 0x100], xmm14
vmovdqa xmmword [rsp + 0xf0], xmm13
vmovdqa xmmword [rsp + 0xe0], xmm12
vmovdqa xmmword [rsp + 0xd0], xmm11
vmovdqa xmmword [rsp + 0xc0], xmm10
vmovdqa xmmword [rsp + 0xb0], xmm9
vmovdqa xmmword [rsp + 0xa0], xmm8
vmovdqa xmmword [rsp + 0x90], xmm7
vmovdqa xmmword [rsp + 0x80], xmm6
mov r13, rdx
movzx eax, byte [r8 + 0x3b]
movzx r12d, al
test byte [rcx], 4
je 0x140046a1c
test al, al
je 0x140046a1c
cmp r12b, 0x20
jae 0x140046817
xor edx, edx
jmp 0x140046a10
mov edx, r12d
vpbroadcastd ymm0, dword [0x140ebba70]
vpxor ymm1, ymm0, ymmword [rcx]
vpxor ymm2, ymm0, ymmword [rcx + 0x20]
vpxor ymm3, ymm0, ymmword [rcx + 0x40]
vpxor ymm4, ymm0, ymmword [rcx + 0x60]
vmovdqu ymmword [rcx], ymm1
vmovdqu ymmword [rcx + 0x20], ymm2
vmovdqu ymmword [rcx + 0x40], ymm3
and edx, 0xffffffe0
vmovdqu ymmword [rcx + 0x60], ymm4
cmp rdx, 0x20
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x80]
vpxor ymm2, ymm0, ymmword [rcx + 0xa0]
vpxor ymm3, ymm0, ymmword [rcx + 0xc0]
vpxor ymm4, ymm0, ymmword [rcx + 0xe0]
vmovdqu ymmword [rcx + 0x80], ymm1
vmovdqu ymmword [rcx + 0xa0], ymm2
vmovdqu ymmword [rcx + 0xc0], ymm3
vmovdqu ymmword [rcx + 0xe0], ymm4
cmp edx, 0x40
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x100]
vpxor ymm2, ymm0, ymmword [rcx + 0x120]
vpxor ymm3, ymm0, ymmword [rcx + 0x140]
vpxor ymm4, ymm0, ymmword [rcx + 0x160]
vmovdqu ymmword [rcx + 0x100], ymm1
vmovdqu ymmword [rcx + 0x120], ymm2
vmovdqu ymmword [rcx + 0x140], ymm3
vmovdqu ymmword [rcx + 0x160], ymm4
cmp edx, 0x60
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x180]
vpxor ymm2, ymm0, ymmword [rcx + 0x1a0]
vpxor ymm3, ymm0, ymmword [rcx + 0x1c0]
vpxor ymm4, ymm0, ymmword [rcx + 0x1e0]
vmovdqu ymmword [rcx + 0x180], ymm1
vmovdqu ymmword [rcx + 0x1a0], ymm2
vmovdqu ymmword [rcx + 0x1c0], ymm3
vmovdqu ymmword [rcx + 0x1e0], ymm4
cmp edx, 0x80
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x200]
vpxor ymm2, ymm0, ymmword [rcx + 0x220]
vpxor ymm3, ymm0, ymmword [rcx + 0x240]
vpxor ymm4, ymm0, ymmword [rcx + 0x260]
vmovdqu ymmword [rcx + 0x200], ymm1
vmovdqu ymmword [rcx + 0x220], ymm2
vmovdqu ymmword [rcx + 0x240], ymm3
vmovdqu ymmword [rcx + 0x260], ymm4
cmp edx, 0xa0
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x280]
vpxor ymm2, ymm0, ymmword [rcx + 0x2a0]
vpxor ymm3, ymm0, ymmword [rcx + 0x2c0]
vpxor ymm4, ymm0, ymmword [rcx + 0x2e0]
vmovdqu ymmword [rcx + 0x280], ymm1
vmovdqu ymmword [rcx + 0x2a0], ymm2
vmovdqu ymmword [rcx + 0x2c0], ymm3
vmovdqu ymmword [rcx + 0x2e0], ymm4
cmp edx, 0xc0
je 0x140046a08
vpxor ymm1, ymm0, ymmword [rcx + 0x300]
vpxor ymm2, ymm0, ymmword [rcx + 0x320]
vpxor ymm3, ymm0, ymmword [rcx + 0x340]
vpxor ymm0, ymm0, ymmword [rcx + 0x360]
vmovdqu ymmword [rcx + 0x300], ymm1
vmovdqu ymmword [rcx + 0x320], ymm2
vmovdqu ymmword [rcx + 0x340], ymm3
vmovdqu ymmword [rcx + 0x360], ymm0
cmp rdx, r12
je 0x140046a1c
nop dword [rax]
xor byte [rcx + rdx*4], 7
inc rdx
cmp r12, rdx
jne 0x140046a10
test r9d, r9d
mov qword [rsp + 0x10], r13
mov qword [rsp], r12
je 0x140046b24
movzx edx, byte [r8 + 0x40]
dec r9d
movsxd rax, r9d
cmp dl, 2
jb 0x140046aac
mov r9d, 2
mov r10d, 1
mov rsi, rax
shl rsi, 6
lea r11, [0x140ebc6e0]
add r11, rsi
jmp 0x140046a6b
movzx edi, dl
inc r9
cmp r10, rdi
jae 0x140046aac
mov rsi, r10
inc r10
movzx edi, dl
cmp r10, rdi
jae 0x140046a63
mov rdi, r9
jmp 0x140046a8b
inc rdi
movzx ebx, dl
cmp rdi, rbx
jae 0x140046a60
movsxd rbx, dword [rcx + rsi*4]
movzx ebp, byte [rbx + r11]
movsxd r14, dword [rcx + rdi*4]
cmp bpl, byte [r14 + r11]
jae 0x140046a80
mov dword [rcx + rsi*4], r14d
mov dword [rcx + rdi*4], ebx
movzx edx, byte [r8 + 0x40]
jmp 0x140046a80
movzx r9d, dl
lea r10, [r9 + r9*2]
shl r10, 6
movsxd r11, dword [rcx]
mov rdx, rax
shl rdx, 6
lea rsi, [0x140ebc660]
add rsi, rdx
movzx r11d, byte [r11 + rsi]
lea rax, [rax + rax*8]
shl rax, 7
lea rsi, [0x1427b1bc0]
add rsi, rax
add rsi, r10
mov rax, qword [rsi + r11*8 - 0xc0]
mov r11d, r9d
cmp r9b, 2
jb 0x140046c1b
lea rsi, [r11 - 1]
lea rdi, [r11 - 2]
mov r10d, esi
and r10d, 3
cmp rdi, 3
jae 0x140046b45
mov r15d, 1
test r10, r10
jne 0x140046bcc
jmp 0x140046c1b
test byte [rcx], 0x20
je 0x14004711c
test r12b, r12b
je 0x14004711c
cmp al, 0x20
jae 0x140046f17
xor eax, eax
jmp 0x140047110
and rsi, 0xfffffffffffffffc
mov rbx, r11
shl rbx, 9
lea rdi, [0x1427b24c0]
add rdi, rbx
add rdi, 0xfffffffffffff800
xor r15d, r15d
lea rbx, [0x140ebc6e0]
add rbx, rdx
nop
movsxd r14, dword [rcx + r15*4 + 4]
movzx r14d, byte [r14 + rbx]
add rax, qword [rdi + r14*8 + 0x600]
movsxd r14, dword [rcx + r15*4 + 8]
movzx r14d, byte [r14 + rbx]
add rax, qword [rdi + r14*8 + 0x400]
movsxd r14, dword [rcx + r15*4 + 0xc]
movzx r14d, byte [r14 + rbx]
add rax, qword [rdi + r14*8 + 0x200]
movsxd r14, dword [rcx + r15*4 + 0x10]
movzx r14d, byte [r14 + rbx]
add rax, qword [rdi + r14*8]
add r15, 4
add rdi, 0xfffffffffffff800
cmp rsi, r15
jne 0x140046b70
inc r15
test r10, r10
je 0x140046c1b
lea rsi, [rcx + r15*4]
mov rdi, r11
shl rdi, 9
shl r15, 9
sub rdi, r15
lea r14, [0x1427b24c0]
add r14, rdi
xor edi, edi
lea rbx, [0x140ebc6e0]
add rbx, rdx
nop word cs:[rax + rax]
movsxd rdx, dword [rsi + rdi*4]
movzx edx, byte [rdx + rbx]
add rax, qword [r14 + rdx*8]
inc rdi
add r14, 0xfffffffffffffe00
cmp r10, rdi
jne 0x140046c00
imul rax, qword [r13 + 8]
movzx edx, byte [r8 + 0x41]
test rdx, rdx
je 0x140046f06
mov qword [rsp + 8], rax
lea rbp, [r11 + rdx]
lea rax, [rcx + 4]
add rdx, r11
dec rdx
mov r8, r11
jmp 0x140046c5f
add rax, 4
dec rdx
mov r8, r10
cmp r10, rbp
jae 0x140046c8c
lea r10, [r8 + 1]
cmp r10, rbp
jae 0x140046c8c
mov rsi, r11
jmp 0x140046c78
inc rsi
cmp rdx, rsi
je 0x140046c50
mov edi, dword [rcx + r8*4]
mov ebx, dword [rax + rsi*4]
cmp edi, ebx
jle 0x140046c70
mov dword [rcx + r8*4], ebx
mov dword [rax + rsi*4], edi
jmp 0x140046c70
mov esi, 1
sub esi, r9d
mov ebx, r11d
and ebx, 0xffffffe0
xor edi, edi
lea r14, [0x1427b24c0]
mov r15, r11
mov r10, rbp
jmp 0x140046cd6
lea edx, [rsi + r15]
movsxd rdx, edx
sub ebp, eax
add ebp, 0xfffffff8
movsxd rax, ebp
shl rdx, 9
add rdx, r14
add rdi, qword [rdx + rax*8]
inc r15
cmp r15, r10
jae 0x140046eea
mov ebp, dword [rcx + r15*4]
mov eax, 0
test r9d, r9d
je 0x140046cb0
cmp r9b, 0x20
jae 0x140046d00
xor edx, edx
xor eax, eax
jmp 0x140046ed0
vmovd xmm0, ebp
vpbroadcastd ymm4, xmm0
vpcmpgtd ymm0, ymm4, ymmword [rcx]
vpsrld ymm0, ymm0, 0x1f
vpcmpgtd ymm1, ymm4, ymmword [rcx + 0x20]
vpsrld ymm1, ymm1, 0x1f
vpcmpgtd ymm2, ymm4, ymmword [rcx + 0x40]
vpsrld ymm2, ymm2, 0x1f
vpcmpgtd ymm3, ymm4, ymmword [rcx + 0x60]
vpsrld ymm3, ymm3, 0x1f
cmp ebx, 0x20
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x80]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0xa0]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0xc0]
vpcmpgtd ymm8, ymm4, ymmword [rcx + 0xe0]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm8
cmp ebx, 0x40
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x100]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0x120]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0x140]
vpcmpgtd ymm8, ymm4, ymmword [rcx + 0x160]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm8
cmp ebx, 0x60
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x180]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0x1a0]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0x1c0]
vpcmpgtd ymm8, ymm4, ymmword [rcx + 0x1e0]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm8
cmp ebx, 0x80
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x200]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0x220]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0x240]
vpcmpgtd ymm8, ymm4, ymmword [rcx + 0x260]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm8
cmp ebx, 0xa0
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x280]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0x2a0]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0x2c0]
vpcmpgtd ymm8, ymm4, ymmword [rcx + 0x2e0]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm8
cmp ebx, 0xc0
je 0x140046e90
vpcmpgtd ymm5, ymm4, ymmword [rcx + 0x300]
vpcmpgtd ymm6, ymm4, ymmword [rcx + 0x320]
vpcmpgtd ymm7, ymm4, ymmword [rcx + 0x340]
vpcmpgtd ymm4, ymm4, ymmword [rcx + 0x360]
vpsubd ymm0, ymm0, ymm5
vpsubd ymm1, ymm1, ymm6
vpsubd ymm2, ymm2, ymm7
vpsubd ymm3, ymm3, ymm4
nop dword [rax]
vpaddd ymm1, ymm3, ymm1
vpaddd ymm0, ymm2, ymm0
vpaddd ymm0, ymm1, ymm0
vextracti128 xmm1, ymm0, 1
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0xee
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0x55
vpaddd xmm0, xmm0, xmm1
vmovd eax, xmm0
mov rdx, rbx
cmp rbx, r11
je 0x140046cb0
nop dword [rax + rax]
xor r8d, r8d
cmp ebp, dword [rcx + rdx*4]
setg r8b
add eax, r8d
inc rdx
cmp r11, rdx
jne 0x140046ed0
jmp 0x140046cb0
imul rdi, qword [r13 + r11*8 + 8]
mov rax, qword [rsp + 8]
add rax, rdi
cmp r10d, r12d
jl 0x1400473b1
jmp 0x140047993
mov r10d, r9d
cmp r10d, r12d
jl 0x1400473b1
jmp 0x140047993
mov eax, r12d
vpbroadcastd ymm0, dword [0x140ebba98]
vpxor ymm1, ymm0, ymmword [rcx]
vpxor ymm2, ymm0, ymmword [rcx + 0x20]
vpxor ymm3, ymm0, ymmword [rcx + 0x40]
vpxor ymm4, ymm0, ymmword [rcx + 0x60]
vmovdqu ymmword [rcx], ymm1
vmovdqu ymmword [rcx + 0x20], ymm2
vmovdqu ymmword [rcx + 0x40], ymm3
and eax, 0xffffffe0
vmovdqu ymmword [rcx + 0x60], ymm4
cmp rax, 0x20
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x80]
vpxor ymm2, ymm0, ymmword [rcx + 0xa0]
vpxor ymm3, ymm0, ymmword [rcx + 0xc0]
vpxor ymm4, ymm0, ymmword [rcx + 0xe0]
vmovdqu ymmword [rcx + 0x80], ymm1
vmovdqu ymmword [rcx + 0xa0], ymm2
vmovdqu ymmword [rcx + 0xc0], ymm3
vmovdqu ymmword [rcx + 0xe0], ymm4
cmp eax, 0x40
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x100]
vpxor ymm2, ymm0, ymmword [rcx + 0x120]
vpxor ymm3, ymm0, ymmword [rcx + 0x140]
vpxor ymm4, ymm0, ymmword [rcx + 0x160]
vmovdqu ymmword [rcx + 0x100], ymm1
vmovdqu ymmword [rcx + 0x120], ymm2
vmovdqu ymmword [rcx + 0x140], ymm3
vmovdqu ymmword [rcx + 0x160], ymm4
cmp eax, 0x60
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x180]
vpxor ymm2, ymm0, ymmword [rcx + 0x1a0]
vpxor ymm3, ymm0, ymmword [rcx + 0x1c0]
vpxor ymm4, ymm0, ymmword [rcx + 0x1e0]
vmovdqu ymmword [rcx + 0x180], ymm1
vmovdqu ymmword [rcx + 0x1a0], ymm2
vmovdqu ymmword [rcx + 0x1c0], ymm3
vmovdqu ymmword [rcx + 0x1e0], ymm4
cmp eax, 0x80
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x200]
vpxor ymm2, ymm0, ymmword [rcx + 0x220]
vpxor ymm3, ymm0, ymmword [rcx + 0x240]
vpxor ymm4, ymm0, ymmword [rcx + 0x260]
vmovdqu ymmword [rcx + 0x200], ymm1
vmovdqu ymmword [rcx + 0x220], ymm2
vmovdqu ymmword [rcx + 0x240], ymm3
vmovdqu ymmword [rcx + 0x260], ymm4
cmp eax, 0xa0
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x280]
vpxor ymm2, ymm0, ymmword [rcx + 0x2a0]
vpxor ymm3, ymm0, ymmword [rcx + 0x2c0]
vpxor ymm4, ymm0, ymmword [rcx + 0x2e0]
vmovdqu ymmword [rcx + 0x280], ymm1
vmovdqu ymmword [rcx + 0x2a0], ymm2
vmovdqu ymmword [rcx + 0x2c0], ymm3
vmovdqu ymmword [rcx + 0x2e0], ymm4
cmp eax, 0xc0
je 0x140047105
vpxor ymm1, ymm0, ymmword [rcx + 0x300]
vpxor ymm2, ymm0, ymmword [rcx + 0x320]
vpxor ymm3, ymm0, ymmword [rcx + 0x340]
vpxor ymm0, ymm0, ymmword [rcx + 0x360]
vmovdqu ymmword [rcx + 0x300], ymm1
vmovdqu ymmword [rcx + 0x320], ymm2
vmovdqu ymmword [rcx + 0x340], ymm3
vmovdqu ymmword [rcx + 0x360], ymm0
cmp rax, r12
je 0x14004711c
nop word [rax + rax]
xor byte [rcx + rax*4], 0x38
inc rax
cmp r12, rax
jne 0x140047110
movabs rax, 0x8040201008040201
test r12, r12
je 0x140047255
xor edx, edx
nop word cs:[rax + rax]
mov r9d, dword [rcx + rdx*4]
bt rax, r9
jae 0x140047157
inc rdx
cmp r12, rdx
jne 0x140047140
jmp 0x140047255
movabs r10, 0x7f3f1f0f07030100
bt r10, r9
jae 0x140047255
xor r9d, r9d
cmp byte [r8 + 0x40], 0
sete r9b
or r9d, 2
cmp r9d, edx
jbe 0x140047255
cmp r12b, 8
jae 0x140047191
xor edx, edx
jmp 0x140047234
mov edx, r12d
and edx, 0xfffffff8
lea r9d, [r12*4]
and r9d, 0xffffffe0
xor r10d, r10d
lea r11, [0x140ebbc40]
nop dword [rax]
movsxd rsi, dword [rcx + r10]
movsxd rdi, dword [rcx + r10 + 4]
movsxd rbx, dword [rcx + r10 + 8]
movsxd r14, dword [rcx + r10 + 0xc]
movsxd r15, dword [rcx + r10 + 0x10]
movsxd r12, dword [rcx + r10 + 0x14]
movsxd r13, dword [rcx + r10 + 0x18]
movzx esi, byte [rsi + r11]
vmovd xmm0, esi
vpinsrb xmm0, xmm0, byte [rdi + r11], 1
vpinsrb xmm0, xmm0, byte [rbx + r11], 2
vpinsrb xmm0, xmm0, byte [r14 + r11], 3
vpinsrb xmm0, xmm0, byte [r15 + r11], 4
vpinsrb xmm0, xmm0, byte [r12 + r11], 5
vpinsrb xmm0, xmm0, byte [r13 + r11], 6
movsxd rsi, dword [rcx + r10 + 0x1c]
vpinsrb xmm0, xmm0, byte [rsi + r11], 7
vpmovzxbd ymm0, xmm0
vmovdqu ymmword [rcx + r10], ymm0
add r10, 0x20
cmp r9, r10
jne 0x1400471b0
mov r12, qword [rsp]
cmp rdx, r12
mov r13, qword [rsp + 0x10]
je 0x140047255
lea r9, [0x140ebbc40]
nop dword [rax + rax]
movsxd r10, dword [rcx + rdx*4]
movzx r10d, byte [r10 + r9]
mov dword [rcx + rdx*4], r10d
inc rdx
cmp r12, rdx
jne 0x140047240
cmp byte [r8 + 0x40], 0
je 0x14004729a
movsxd rax, dword [rcx]
lea rdx, [0x140ebc180]
movzx eax, byte [rax + rdx]
movsxd rdx, dword [rcx + 4]
shl rax, 7
lea r8, [0x140ebbc80]
add r8, rax
movsx rax, word [r8 + rdx*2]
mov r10d, 2
imul rax, qword [r13 + 8]
cmp r10d, r12d
jl 0x1400473b1
jmp 0x140047993
movsxd r9, dword [rcx + 4]
movsxd r11, dword [rcx]
xor r10d, r10d
cmp r9d, r11d
setg r10b
movsxd r8, dword [rcx + 8]
xor edx, edx
cmp r8d, r11d
setg dl
xor esi, esi
cmp r8d, r9d
setg sil
add edx, esi
neg edx
bt rax, r11
jb 0x1400472fa
lea rax, [0x140ebc180]
movzx eax, byte [r11 + rax]
imul eax, eax, 0xf42
sub r9d, r10d
lea r10d, [r9 + r9]
shl r9d, 6
sub r9d, r10d
add edx, r8d
add edx, r9d
add edx, eax
movsxd rax, edx
jmp 0x14004739d
bt rax, r9
lea rsi, [0x140ebc1c0]
jb 0x14004733c
movzx eax, byte [r11 + rsi]
imul eax, eax, 0x6c8
lea r10, [0x140ebc200]
movzx r9d, byte [r9 + r10]
lea r10d, [r9 + r9]
shl r9d, 6
sub r9d, r10d
add r8d, edx
add r8d, eax
lea eax, [r9 + r8]
add eax, 0x5b8c
cdqe
jmp 0x14004739d
movzx r11d, byte [r11 + rsi]
bt rax, r8
jb 0x14004737a
imul eax, r11d, 0xc4
lea rdx, [0x140ebc200]
movzx edx, byte [r8 + rdx]
add edx, eax
movzx eax, byte [r9 + rsi]
sub eax, r10d
lea r8d, [rax + rax*8]
lea r8d, [r8 + r8*2]
add r8d, eax
lea eax, [rdx + r8]
add eax, 0x76ac
jmp 0x14004739d
imul eax, r11d, 0x2a
movzx r9d, byte [r9 + rsi]
sub r9d, r10d
lea r9d, [r9 + r9*2]
movzx r8d, byte [r8 + rsi]
add edx, r8d
add edx, eax
lea eax, [rdx + r9*2]
add eax, 0x79bc
mov r10d, 3
imul rax, qword [r13 + 8]
cmp r10d, r12d
jge 0x140047993
lea rdx, [rcx + 0x3c]
mov qword [rsp + 0x30], rdx
jmp 0x1400473df
xor r10d, r10d
mov rdx, qword [rsp + 0x18]
imul r10, qword [r13 + rdx*8 + 8]
add rax, r10
mov r10, qword [rsp + 0x38]
cmp r10d, r12d
jge 0x140047993
movsxd r8, r10d
movzx r14d, byte [r13 + r8 + 0x47]
lea edx, [r8 + r14]
test r14d, r14d
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x18], r8
je 0x1400473c0
mov r9d, r10d
mov dword [rsp + 0x20], r10d
mov qword [rsp + 8], rax
lea rbp, [r8 + 1]
movsxd rbx, edx
lea eax, [r14 - 2]
mov dword [rsp + 0x40], eax
mov r15, r8
not r15
lea r12, [rcx + r8*4]
add r12, 4
lea r13d, [r14 + 3]
mov edx, ebx
xor r9d, r9d
jmp 0x14004744a
inc rbp
inc r9d
dec r15
add r12, 4
add r13b, 3
cmp r8, rbx
jge 0x140047560
mov rdi, r8
inc r8
cmp r8, rbx
jge 0x140047560
movzx r13d, r13b
and r13d, 3
mov r11d, dword [rsp + 0x40]
sub r11d, r9d
mov eax, r9d
not eax
add eax, r14d
mov r10, rbp
test al, 3
je 0x1400474a3
xor r10d, r10d
jmp 0x140047488
inc r10
cmp r13d, r10d
je 0x1400474a0
mov esi, dword [rcx + rdi*4]
mov eax, dword [r12 + r10*4]
cmp esi, eax
jle 0x140047480
mov dword [rcx + rdi*4], eax
mov dword [r12 + r10*4], esi
jmp 0x140047480
sub r10, r15
cmp r11d, 3
jae 0x1400474bd
jmp 0x140047430
add r10, 4
cmp edx, r10d
je 0x140047430
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4]
cmp r11d, eax
jg 0x140047500
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 4]
cmp r11d, eax
jg 0x140047515
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 8]
cmp r11d, eax
jg 0x14004752b
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 0xc]
cmp r11d, eax
jle 0x1400474b0
jmp 0x140047545
mov dword [rcx + rdi*4], eax
mov dword [rcx + r10*4], r11d
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 4]
cmp r11d, eax
jle 0x1400474d8
mov dword [rcx + rdi*4], eax
mov dword [rcx + r10*4 + 4], r11d
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 8]
cmp r11d, eax
jle 0x1400474e6
mov dword [rcx + rdi*4], eax
mov dword [rcx + r10*4 + 8], r11d
mov r11d, dword [rcx + rdi*4]
mov eax, dword [rcx + r10*4 + 0xc]
cmp r11d, eax
jle 0x1400474b0
mov dword [rcx + rdi*4], eax
mov dword [rcx + r10*4 + 0xc], r11d
jmp 0x1400474b0
test r14d, r14d
lea rdi, [0x1427b24c0]
je 0x1400476b0
mov r14d, 1
mov esi, dword [rsp + 0x20]
sub r14d, esi
test esi, esi
mov r13, qword [rsp + 0x10]
mov r12, qword [rsp]
mov rax, qword [rsp + 8]
jle 0x1400476c6
mov edx, esi
mov r9d, esi
and r9d, 0xffffffe0
lea r11, [r9*4]
mov rdi, qword [rsp + 0x18]
xor r10d, r10d
jmp 0x1400475df
lea esi, [r14 + rdi]
movsxd rsi, esi
sub r8d, ebp
movsxd r8, r8d
shl rsi, 9
lea r15, [0x1427b24c0]
add rsi, r15
add r10, qword [rsi + r8*8]
inc rdi
cmp rdi, rbx
mov esi, dword [rsp + 0x20]
jge 0x1400473c3
mov r8d, dword [rcx + rdi*4]
cmp esi, 0x20
jae 0x140047600
xor r15d, r15d
xor ebp, ebp
jmp 0x140047690
vmovd xmm0, r8d
vpbroadcastd ymm1, xmm0
vpxor xmm0, xmm0, xmm0
xor esi, esi
vpxor xmm2, xmm2, xmm2
vpxor xmm3, xmm3, xmm3
vpxor xmm4, xmm4, xmm4
nop dword [rax]
vpcmpgtd ymm5, ymm1, ymmword [rcx + rsi]
vpsubd ymm0, ymm0, ymm5
vpcmpgtd ymm5, ymm1, ymmword [rcx + rsi + 0x20]
vpsubd ymm2, ymm2, ymm5
vpcmpgtd ymm5, ymm1, ymmword [rcx + rsi + 0x40]
vpcmpgtd ymm6, ymm1, ymmword [rcx + rsi + 0x60]
vpsubd ymm3, ymm3, ymm5
vpsubd ymm4, ymm4, ymm6
sub rsi, 0xffffffffffffff80
cmp r11, rsi
jne 0x140047620
vpaddd ymm0, ymm2, ymm0
vpaddd ymm1, ymm4, ymm3
vpaddd ymm0, ymm1, ymm0
vextracti128 xmm1, ymm0, 1
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0xee
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0x55
vpaddd xmm0, xmm0, xmm1
vmovd ebp, xmm0
mov r15, r9
cmp r9, rdx
je 0x1400475b0
nop dword [rax + rax]
xor esi, esi
cmp r8d, dword [rcx + r15*4]
setg sil
add ebp, esi
inc r15
cmp rdx, r15
jne 0x140047690
jmp 0x1400475b0
xor r10d, r10d
mov r13, qword [rsp + 0x10]
mov r12, qword [rsp]
mov rax, qword [rsp + 8]
jmp 0x1400473c3
mov rdx, qword [rsp + 0x18]
lea r12, [rdx + 1]
cmp r12, rbx
cmovle r12, rbx
sub r12, rdx
cmp r12, 0x10
jae 0x1400476ee
mov r15, rdx
xor r10d, r10d
mov r12, qword [rsp]
jmp 0x140047970
mov r13, r12
and r13, 0xfffffffffffffff0
lea r15, [rdx + r13]
mov rax, qword [rsp + 0x30]
lea rbp, [rax + rdx*4]
vpxor xmm0, xmm0, xmm0
vmovdqu ymmword [rsp + 0x40], ymm0
xor r11d, r11d
xor r10d, r10d
vpxor xmm1, xmm1, xmm1
vpxor xmm2, xmm2, xmm2
vpxor xmm3, xmm3, xmm3
movabs rsi, 0x1000000000
nop dword [rax + rax]
movsxd r8, dword [rbp + r10*4 - 0x3c]
movsxd r9, dword [rbp + r10*4 - 0x30]
mov rdx, r11
sar rdx, 0x17
mov rax, rdx
or rax, 0x800
add rax, rdi
vmovq xmm7, qword [rax + r9*8]
movsxd rax, dword [rbp + r10*4 - 0x34]
mov r9, rdx
or r9, 0x600
add r9, rdi
vmovq xmm8, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 0x38]
mov r9, rdx
or r9, 0x400
add r9, rdi
vmovsd xmm0, qword [r9 + rax*8]
vmovaps xmmword [rsp + 0x20], xmm0
movsxd rax, dword [rbp + r10*4 - 0x2c]
mov r9, rdx
or r9, 0x200
add r9, rdi
vmovsd xmm0, qword [r9 + r8*8]
vmovaps xmmword [rsp + 0x70], xmm0
movsxd r8, dword [rbp + r10*4 - 0x20]
mov r9, rdx
or r9, 0x1000
add r9, rdi
vmovsd xmm0, qword [r9 + r8*8]
vmovaps xmmword [rsp + 0x60], xmm0
movsxd r8, dword [rbp + r10*4 - 0x24]
mov r9, rdx
or r9, 0xe00
add r9, rdi
vmovq xmm9, qword [r9 + r8*8]
movsxd r8, dword [rbp + r10*4 - 0x28]
mov r9, rdx
or r9, 0xc00
add r9, rdi
vmovq xmm10, qword [r9 + r8*8]
movsxd r8, dword [rbp + r10*4 - 0x1c]
mov r9, rdx
or r9, 0xa00
add r9, rdi
vmovq xmm11, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 0x10]
mov r9, rdx
or r9, 0x1800
add r9, rdi
vmovq xmm12, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 0x14]
mov r9, rdx
or r9, 0x1600
add r9, rdi
vmovq xmm13, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 0x18]
mov r9, rdx
or r9, 0x1400
add r9, rdi
vmovq xmm14, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 4]
mov r9, rdx
or r9, 0x1200
add r9, rdi
vmovq xmm15, qword [r9 + r8*8]
movsxd r8, dword [rbp + r10*4]
add r11, rsi
mov r9, r11
sar r9, 0x17
add r9, rdi
vmovq xmm0, qword [r9 + r8*8]
mov r8, rdx
mov r9, rdx
or rdx, 0x1e00
add rdx, rdi
vmovq xmm4, qword [rdx + rax*8]
movsxd rax, dword [rbp + r10*4 - 8]
or r9, 0x1c00
add r9, rdi
vmovq xmm5, qword [r9 + rax*8]
movsxd rax, dword [rbp + r10*4 - 0xc]
or r8, 0x1a00
add r8, rdi
vmovq xmm6, qword [r8 + rax*8]
vpunpcklqdq xmm7, xmm8, xmm7
vmovdqa xmm8, xmmword [rsp + 0x70]
vpunpcklqdq xmm8, xmm8, xmmword [rsp + 0x20]
vinserti128 ymm7, ymm8, xmm7, 1
vmovdqu ymm8, ymmword [rsp + 0x40]
vpaddq ymm8, ymm8, ymm7
vmovdqu ymmword [rsp + 0x40], ymm8
vpunpcklqdq xmm7, xmm9, xmmword [rsp + 0x60]
vpunpcklqdq xmm8, xmm11, xmm10
vinserti128 ymm7, ymm8, xmm7, 1
vpaddq ymm1, ymm7, ymm1
vpunpcklqdq xmm7, xmm13, xmm12
vpunpcklqdq xmm8, xmm15, xmm14
vinserti128 ymm7, ymm8, xmm7, 1
vpaddq ymm2, ymm7, ymm2
vpunpcklqdq xmm0, xmm4, xmm0
vpunpcklqdq xmm4, xmm6, xmm5
vinserti128 ymm0, ymm4, xmm0, 1
vpaddq ymm3, ymm0, ymm3
add r10, 0x10
cmp r13, r10
jne 0x140047730
vpaddq ymm0, ymm1, ymmword [rsp + 0x40]
vpaddq ymm0, ymm2, ymm0
vpaddq ymm0, ymm3, ymm0
vextracti128 xmm1, ymm0, 1
vpaddq xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0xee
vpaddq xmm0, xmm0, xmm1
vmovq r10, xmm0
cmp r12, r13
mov r13, qword [rsp + 0x10]
mov r12, qword [rsp]
mov rax, qword [rsp + 8]
je 0x1400473c3
nop
movsxd r8, dword [rcx + r15*4]
lea edx, [r14 + r15]
movsxd rdx, edx
shl rdx, 9
add rdx, rdi
add r10, qword [rdx + r8*8]
inc r15
cmp r15, rbx
jl 0x140047970
jmp 0x1400473c3
vmovaps xmm6, xmmword [rsp + 0x80]
vmovaps xmm7, xmmword [rsp + 0x90]
vmovaps xmm8, xmmword [rsp + 0xa0]
vmovaps xmm9, xmmword [rsp + 0xb0]
vmovaps xmm10, xmmword [rsp + 0xc0]
vmovaps xmm11, xmmword [rsp + 0xd0]
vmovaps xmm12, xmmword [rsp + 0xe0]
vmovaps xmm13, xmmword [rsp + 0xf0]
vmovaps xmm14, xmmword [rsp + 0x100]
vmovaps xmm15, xmmword [rsp + 0x110]
add rsp, 0x128
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
vzeroupper
ret