Function at 0x519570
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x308
mov r10, qword [rcx]
mov r9, qword [rcx + 0x18]
mov r11, qword [rcx + 8]
mov rdi, rcx
mov rsi, rdx
mov qword [rsp + 0x360], r8
mov r8, qword [rcx + 0x10]
mov rbx, qword [rdi + 0x28]
mov qword [rsp + 0x80], r10
lea r15, [rsp + 0x2e0]
mov rax, qword [rdi + 0x30]
mov qword [rsp + 0x88], r11
lea r14, [rsp + 0x1c0]
mov rdx, qword [rdi + 0x38]
mov qword [rsp + 0x98], r9
mov rcx, qword [rcx + 0x20]
mov qword [rsp + 0x90], r8
mov r12, qword [rdi + 0x40]
mov qword [rsp + 0xa8], rbx
mov r13, qword [rdi + 0x48]
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], rdx
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xc0], r12
mov qword [rsp + 0xc8], r13
mov qword [rsp + 0xd0], r10
mov qword [rsp + 0xd8], r11
mov qword [rsp + 0xe0], r8
mov qword [rsp + 0xe8], r9
mov qword [rsp + 0xf0], rcx
mov qword [rsp + 0xf8], rbx
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x110], r12
mov qword [rsp + 0x118], r13
mov qword [rsp + 0x120], r10
mov qword [rsp + 0x128], r11
movdqu xmm5, xmmword [rdi]
xor edi, edi
mov qword [rsp + 0x140], rcx
mov qword [rsp + 0x148], rbx
mov qword [rsp + 0x150], rax
mov qword [rsp + 0x158], rdx
mov qword [rsp + 0x160], r12
mov r12, qword [rsi + 0x20]
mov qword [rsp + 0x168], r13
mov r13, qword [rsi + 0x28]
mov qword [rsp + 0x180], r10
mov r10, qword [rsi + 0x30]
mov qword [rsp + 0x1a0], rcx
mov rcx, qword [rsi]
mov qword [rsp + 0x1a8], rbx
mov rbx, qword [rsi + 8]
mov qword [rsp + 0x1b0], rax
mov rax, qword [rsi + 0x10]
mov qword [rsp + 0x1b8], rdx
mov rdx, qword [rsi + 0x18]
mov qword [rsp + 0x130], r8
mov qword [rsp + 0x138], r9
movups xmmword [rsp + 0x170], xmm5
mov qword [rsp + 0x188], r11
mov r11, qword [rsi + 0x38]
mov qword [rsp + 0x190], r8
mov qword [rsp + 0x198], r9
mov qword [rsp + 0x1e0], r12
mov qword [rsp + 0x1e8], r13
mov qword [rsp + 0x1c0], rcx
mov qword [rsp + 0x1c8], rbx
mov qword [rsp + 0x1d0], rax
mov qword [rsp + 0x1d8], rdx
mov qword [rsp + 0x1f0], r10
mov r8, qword [rsi + 0x40]
mov r9, qword [rsi + 0x48]
mov qword [rsp + 0x230], r12
movdqu xmm5, xmmword [rsi]
mov qword [rsp + 0x238], r13
mov qword [rsp + 0x280], r12
mov r12d, 0x20
mov qword [rsp + 0x288], r13
lea r13, [rsp + 0x80]
mov qword [rsp + 0x1f8], r11
mov qword [rsp + 0x200], r8
mov qword [rsp + 0x208], r9
mov qword [rsp + 0x210], rcx
mov qword [rsp + 0x218], rbx
mov qword [rsp + 0x220], rax
mov qword [rsp + 0x228], rdx
mov qword [rsp + 0x240], r10
mov qword [rsp + 0x248], r11
mov qword [rsp + 0x250], r8
mov qword [rsp + 0x258], r9
mov qword [rsp + 0x260], rcx
mov qword [rsp + 0x268], rbx
mov qword [rsp + 0x270], rax
mov qword [rsp + 0x278], rdx
mov qword [rsp + 0x290], r10
mov qword [rsp + 0x298], r11
mov qword [rsp + 0x2a0], r8
mov qword [rsp + 0x2a8], r9
movups xmmword [rsp + 0x2b0], xmm5
mov qword [rsp + 0x2c0], rcx
mov qword [rsp + 0x2c8], rbx
mov qword [rsp + 0x2d0], rax
mov qword [rsp + 0x2d8], rdx
jmp 0x51986a
sub r12d, 1
je 0x519a4a
lea rdx, [r14 + rdi]
mov r8, r15
lea rcx, [r13 + rdi]
call fcn.00518620
mov eax, dword [rsp + 0x2e0]
movdqu xmm1, xmmword [rsp + 0x2e0]
movdqu xmm2, xmmword [rsp + 0x2f0]
pmovzxbw xmm3, xmm1
psrldq xmm1, 8
pmovzxwd xmm0, xmm3
psrldq xmm3, 8
pmovzxbw xmm1, xmm1
pmovzxwd xmm3, xmm3
pmovzxbw xmm4, xmm2
paddd xmm0, xmm3
psrldq xmm2, 8
pmovzxwd xmm3, xmm1
psrldq xmm1, 8
pmovzxbw xmm2, xmm2
pmovzxwd xmm1, xmm1
paddd xmm1, xmm3
paddd xmm0, xmm1
movdqu xmm1, xmm4
pmovzxwd xmm4, xmm4
psrldq xmm1, 8
pmovzxwd xmm1, xmm1
paddd xmm1, xmm4
paddd xmm0, xmm1
movdqu xmm1, xmm2
pmovzxwd xmm2, xmm2
psrldq xmm1, 8
pmovzxwd xmm1, xmm1
paddd xmm2, xmm1
paddd xmm0, xmm2
movdqu xmm1, xmm0
psrldq xmm1, 8
paddd xmm0, xmm1
movdqu xmm1, xmm0
psrldq xmm1, 4
paddd xmm0, xmm1
movd esi, xmm0
movzx edi, sil
lea rbx, [r14 + rdi]
mov rbp, rdi
xor dword [rbx], eax
mov eax, dword [rsp + 0x2e4]
xor dword [rbx + 4], eax
mov eax, dword [rsp + 0x2e8]
xor dword [rbx + 8], eax
mov eax, dword [rsp + 0x2ec]
xor dword [rbx + 0xc], eax
mov eax, dword [rsp + 0x2f0]
xor dword [rbx + 0x10], eax
mov eax, dword [rsp + 0x2f4]
xor dword [rbx + 0x14], eax
mov eax, dword [rsp + 0x2f8]
xor dword [rbx + 0x18], eax
mov eax, dword [rsp + 0x2fc]
xor dword [rbx + 0x1c], eax
test sil, 0xe0
jne 0x5199ab
lea eax, [rdi + 0x100]
add rax, r14
cmp edi, 0x20
jbe 0x519bea
movdqu xmm5, xmmword [rbx]
movups xmmword [rax], xmm5
movdqu xmm5, xmmword [rbx + 0x10]
movups xmmword [rax + 0x10], xmm5
mov r10d, 0x100
sub r10d, ebp
cmp r10d, 0x1f
ja 0x519860
lea r9d, [rbp - 0xe0]
mov eax, r9d
shr eax, 2
je 0x5199fc
sub eax, 1
mov rcx, r14
mov dword [rsp + 0x28], r10d
lea rdx, [rsp + 0x2c0]
mov dword [rsp + 0x20], r9d
lea r8, [rax*4 + 4]
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x20]
mov r10d, dword [rsp + 0x28]
mov edx, r9d
and edx, 3
je 0x519860
mov eax, r9d
sub eax, edx
cmp r9d, eax
jbe 0x519860
lea rcx, [r14 + rax]
sub edx, r9d
mov dword [rsp + 0x20], r10d
lea r8d, [rbp + rdx - 0xe1]
lea rdx, [rsp + rax + 0x2c0]
add r8, 1
call sub.msvcrt.dll_memmove
sub r12d, 1
mov r10d, dword [rsp + 0x20]
jne 0x51986a
cmp r10d, 0x100
jne 0x519cb0
mov rax, qword [rsp + 0x360]
movdqu xmm5, xmmword [rsp + 0x1c0]
pxor xmm5, xmmword [rsp + 0x80]
movups xmmword [rax], xmm5
movdqu xmm5, xmmword [rsp + 0x1d0]
pxor xmm5, xmmword [rsp + 0x90]
movups xmmword [rax + 0x10], xmm5
movdqu xmm5, xmmword [rsp + 0x1e0]
pxor xmm5, xmmword [rsp + 0xa0]
movups xmmword [rax + 0x20], xmm5
movdqu xmm5, xmmword [rsp + 0x1f0]
pxor xmm5, xmmword [rsp + 0xb0]
movups xmmword [rax + 0x30], xmm5
movdqu xmm5, xmmword [rsp + 0x200]
pxor xmm5, xmmword [rsp + 0xc0]
movups xmmword [rax + 0x40], xmm5
movdqu xmm5, xmmword [rsp + 0x210]
pxor xmm5, xmmword [rsp + 0xd0]
movups xmmword [rax + 0x50], xmm5
movdqu xmm5, xmmword [rsp + 0x220]
pxor xmm5, xmmword [rsp + 0xe0]
movups xmmword [rax + 0x60], xmm5
movdqu xmm5, xmmword [rsp + 0x230]
pxor xmm5, xmmword [rsp + 0xf0]
movups xmmword [rax + 0x70], xmm5
movdqu xmm5, xmmword [rsp + 0x240]
pxor xmm5, xmmword [rsp + 0x100]
movups xmmword [rax + 0x80], xmm5
movdqu xmm5, xmmword [rsp + 0x250]
pxor xmm5, xmmword [rsp + 0x110]
movups xmmword [rax + 0x90], xmm5
movdqu xmm5, xmmword [rsp + 0x260]
pxor xmm5, xmmword [rsp + 0x120]
movups xmmword [rax + 0xa0], xmm5
movdqu xmm5, xmmword [rsp + 0x270]
pxor xmm5, xmmword [rsp + 0x130]
movups xmmword [rax + 0xb0], xmm5
movdqu xmm5, xmmword [rsp + 0x280]
pxor xmm5, xmmword [rsp + 0x140]
movups xmmword [rax + 0xc0], xmm5
movdqu xmm5, xmmword [rsp + 0x290]
pxor xmm5, xmmword [rsp + 0x150]
movups xmmword [rax + 0xd0], xmm5
movdqu xmm5, xmmword [rsp + 0x2a0]
pxor xmm5, xmmword [rsp + 0x160]
movups xmmword [rax + 0xe0], xmm5
movdqu xmm5, xmmword [rsp + 0x2b0]
pxor xmm5, xmmword [rsp + 0x170]
movups xmmword [rax + 0xf0], xmm5
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x20
sub ecx, edi
mov r8d, ecx
mov edx, ecx
and r8d, 3
shr edx, 2
je 0x51a7f4
sub edx, 1
lea r9, [rdx*4 + 4]
mov edx, r9d
cmp r9d, 8
jae 0x519c5a
and r9d, 4
jne 0x51a80b
test edx, edx
jne 0x519c8c
test r8d, r8d
je 0x5199ab
mov edx, ecx
sub edx, r8d
cmp ecx, edx
jbe 0x5199ab
lea rcx, [rax + rdx]
mov eax, 0x1f
add rdx, rbx
lea eax, [r8 + rax - 0x20]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x5199ab
mov edx, r9d
mov r10, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], r10
lea edx, [r9 - 1]
cmp edx, 8
jb 0x519c25
and edx, 0xfffffff8
xor r9d, r9d
mov r10d, r9d
add r9d, 8
mov r11, qword [rbx + r10]
mov qword [rax + r10], r11
cmp r9d, edx
jb 0x519c76
jmp 0x519c25
movzx r9d, byte [rbx]
mov byte [rax], r9b
test dl, 2
je 0x519c25
movzx r9d, word [rbx + rdx - 2]
mov word [rax + rdx - 2], r9w
jmp 0x519c25
lea rdx, [rsp + 0x40]
mov r9d, r10d
shr r9d, 2
je 0x519ee6
lea rax, [rbx + 0x10]
lea ecx, [r9 - 1]
cmp r13, rax
lea rax, [rsp + 0x90]
setae dl
cmp rbx, rax
setae al
or dl, al
je 0x51a846
cmp ecx, 2
jbe 0x51a846
mov eax, r10d
movdqu xmm0, xmmword [rbx]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [rbx], xmm0
shr eax, 4
cmp eax, 1
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x10]
pxor xmm0, xmmword [rsp + 0x90]
movups xmmword [rbx + 0x10], xmm0
cmp eax, 2
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x20]
pxor xmm0, xmmword [rsp + 0xa0]
movups xmmword [rbx + 0x20], xmm0
cmp eax, 3
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x30]
pxor xmm0, xmmword [rsp + 0xb0]
movups xmmword [rbx + 0x30], xmm0
cmp eax, 4
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x40]
pxor xmm0, xmmword [rsp + 0xc0]
movups xmmword [rbx + 0x40], xmm0
cmp eax, 5
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x50]
pxor xmm0, xmmword [rsp + 0xd0]
movups xmmword [rbx + 0x50], xmm0
cmp eax, 6
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x60]
pxor xmm0, xmmword [rsp + 0xe0]
movups xmmword [rbx + 0x60], xmm0
cmp eax, 7
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x70]
pxor xmm0, xmmword [rsp + 0xf0]
movups xmmword [rbx + 0x70], xmm0
cmp eax, 8
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x80]
pxor xmm0, xmmword [rsp + 0x100]
movups xmmword [rbx + 0x80], xmm0
cmp eax, 9
je 0x519e99
movdqu xmm0, xmmword [rbx + 0x90]
pxor xmm0, xmmword [rsp + 0x110]
movups xmmword [rbx + 0x90], xmm0
cmp eax, 0xa
je 0x519e99
movdqu xmm0, xmmword [rbx + 0xa0]
pxor xmm0, xmmword [rsp + 0x120]
movups xmmword [rbx + 0xa0], xmm0
cmp eax, 0xb
je 0x519e99
movdqu xmm0, xmmword [rbx + 0xb0]
pxor xmm0, xmmword [rsp + 0x130]
movups xmmword [rbx + 0xb0], xmm0
cmp eax, 0xc
je 0x519e99
movdqu xmm0, xmmword [rbx + 0xc0]
pxor xmm0, xmmword [rsp + 0x140]
movups xmmword [rbx + 0xc0], xmm0
cmp eax, 0xd
je 0x519e99
movdqu xmm0, xmmword [rbx + 0xd0]
pxor xmm0, xmmword [rsp + 0x150]
movups xmmword [rbx + 0xd0], xmm0
cmp eax, 0xf
jne 0x519e99
movdqu xmm0, xmmword [rbx + 0xe0]
pxor xmm0, xmmword [rsp + 0x160]
movups xmmword [rbx + 0xe0], xmm0
lea rdx, [rsp + 0x40]
shl eax, 2
cmp r9d, eax
je 0x519ee6
mov ecx, eax
shl rcx, 2
mov r8d, dword [rsp + rcx + 0x80]
xor dword [rbx + rcx], r8d
lea ecx, [rax + 1]
cmp r9d, ecx
jbe 0x519ee6
shl rcx, 2
add eax, 2
mov r8d, dword [rsp + rcx + 0x80]
xor dword [rbx + rcx], r8d
cmp r9d, eax
jbe 0x519ee6
shl rax, 2
mov ecx, dword [rsp + rax + 0x80]
xor dword [rbx + rax], ecx
mov r15d, r10d
and r15d, 3
je 0x51a1fb
mov ecx, r10d
sub ecx, r15d
cmp ecx, r10d
jae 0x51a1fb
mov r11d, ecx
lea r12, [rbx + r11 + 0x10]
mov qword [rsp + 0x20], r11
lea r8, [rdx + r11 + 0x40]
lea rax, [rbx + r11]
cmp r8, r12
setae byte [rsp + 0x28]
movzx edi, byte [rsp + 0x28]
lea r12, [rdx + r11 + 0x50]
cmp rax, r12
setae r12b
or dil, r12b
je 0x51a867
lea r12d, [r15 - 1]
cmp r12d, 0xe
jbe 0x51a867
movdqu xmm5, xmmword [r8]
movdqu xmm0, xmmword [rax]
pxor xmm0, xmm5
movups xmmword [rax], xmm0
movdqu xmm0, xmmword [rax + 0x10]
movdqu xmm5, xmmword [r8 + 0x10]
pxor xmm0, xmm5
movups xmmword [rax + 0x10], xmm0
movdqu xmm0, xmmword [rax + 0x20]
movdqu xmm5, xmmword [r8 + 0x20]
pxor xmm0, xmm5
movups xmmword [rax + 0x20], xmm0
movdqu xmm0, xmmword [rax + 0x30]
movdqu xmm5, xmmword [r8 + 0x30]
pxor xmm0, xmm5
movups xmmword [rax + 0x30], xmm0
movdqu xmm0, xmmword [rax + 0x40]
movdqu xmm5, xmmword [r8 + 0x40]
pxor xmm0, xmm5
movups xmmword [rax + 0x40], xmm0
movdqu xmm0, xmmword [rax + 0x50]
movdqu xmm5, xmmword [r8 + 0x50]
pxor xmm0, xmm5
movups xmmword [rax + 0x50], xmm0
movdqu xmm0, xmmword [rax + 0x60]
movdqu xmm5, xmmword [r8 + 0x60]
pxor xmm0, xmm5
movups xmmword [rax + 0x60], xmm0
movdqu xmm0, xmmword [rax + 0x70]
movdqu xmm5, xmmword [r8 + 0x70]
pxor xmm0, xmm5
movups xmmword [rax + 0x70], xmm0
movdqu xmm0, xmmword [rax + 0x80]
movdqu xmm5, xmmword [r8 + 0x80]
pxor xmm0, xmm5
movups xmmword [rax + 0x80], xmm0
movdqu xmm0, xmmword [rax + 0x90]
movdqu xmm5, xmmword [r8 + 0x90]
pxor xmm0, xmm5
movups xmmword [rax + 0x90], xmm0
movdqu xmm0, xmmword [rax + 0xa0]
movdqu xmm5, xmmword [r8 + 0xa0]
pxor xmm0, xmm5
movups xmmword [rax + 0xa0], xmm0
movdqu xmm5, xmmword [r8 + 0xb0]
movdqu xmm0, xmmword [rax + 0xb0]
pxor xmm0, xmm5
movups xmmword [rax + 0xb0], xmm0
movdqu xmm0, xmmword [rax + 0xc0]
movdqu xmm5, xmmword [r8 + 0xc0]
pxor xmm0, xmm5
movups xmmword [rax + 0xc0], xmm0
movdqu xmm0, xmmword [rax + 0xd0]
movdqu xmm5, xmmword [r8 + 0xd0]
pxor xmm0, xmm5
movdqu xmm5, xmmword [rax + 0xe0]
movups xmmword [rax + 0xd0], xmm0
movdqu xmm0, xmmword [r8 + 0xe0]
pxor xmm0, xmm5
movups xmmword [rax + 0xe0], xmm0
test r15d, r15d
je 0x51a1fb
movzx eax, byte [rsp + r11 + 0x80]
xor byte [rbx + r11], al
lea eax, [rcx + 1]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 2]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 3]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 4]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 5]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 6]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 7]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 8]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 9]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xa]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xb]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xc]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xd]
cmp r10d, eax
jbe 0x51a1fb
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xe]
cmp r10d, eax
jbe 0x51a1fb
movzx ecx, byte [rsp + rax + 0x80]
xor byte [rbx + rax], cl
mov edi, r10d
mov r12d, ebp
add r13, rdi
shr r12d, 2
je 0x51a44d
lea r8, [rdx + rdi + 0x50]
lea rax, [rdx + rdi + 0x40]
cmp r14, r8
lea r8, [rsp + 0x1d0]
setae r11b
lea ecx, [r12 - 1]
cmp rax, r8
setae r8b
or r11b, r8b
je 0x51a820
cmp ecx, 2
jbe 0x51a820
mov ecx, ebp
movdqu xmm0, xmmword [rax]
pxor xmm0, xmmword [rsp + 0x1c0]
movups xmmword [rsp + 0x1c0], xmm0
shr ecx, 4
cmp ecx, 1
je 0x51a416
movdqu xmm0, xmmword [rax + 0x10]
pxor xmm0, xmmword [rsp + 0x1d0]
movups xmmword [rsp + 0x1d0], xmm0
cmp ecx, 2
je 0x51a416
movdqu xmm0, xmmword [rax + 0x20]
pxor xmm0, xmmword [rsp + 0x1e0]
movups xmmword [rsp + 0x1e0], xmm0
cmp ecx, 3
je 0x51a416
movdqu xmm0, xmmword [rax + 0x30]
pxor xmm0, xmmword [rsp + 0x1f0]
movups xmmword [rsp + 0x1f0], xmm0
cmp ecx, 4
je 0x51a416
movdqu xmm0, xmmword [rax + 0x40]
pxor xmm0, xmmword [rsp + 0x200]
movups xmmword [rsp + 0x200], xmm0
cmp ecx, 5
je 0x51a416
movdqu xmm0, xmmword [rax + 0x50]
pxor xmm0, xmmword [rsp + 0x210]
movups xmmword [rsp + 0x210], xmm0
cmp ecx, 6
je 0x51a416
movdqu xmm0, xmmword [rax + 0x60]
pxor xmm0, xmmword [rsp + 0x220]
movups xmmword [rsp + 0x220], xmm0
cmp ecx, 7
je 0x51a416
movdqu xmm0, xmmword [rax + 0x70]
pxor xmm0, xmmword [rsp + 0x230]
movups xmmword [rsp + 0x230], xmm0
cmp ecx, 8
je 0x51a416
movdqu xmm0, xmmword [rax + 0x80]
pxor xmm0, xmmword [rsp + 0x240]
movups xmmword [rsp + 0x240], xmm0
cmp ecx, 9
je 0x51a416
movdqu xmm0, xmmword [rax + 0x90]
pxor xmm0, xmmword [rsp + 0x250]
movups xmmword [rsp + 0x250], xmm0
cmp ecx, 0xa
je 0x51a416
movdqu xmm0, xmmword [rax + 0xa0]
pxor xmm0, xmmword [rsp + 0x260]
movups xmmword [rsp + 0x260], xmm0
cmp ecx, 0xb
je 0x51a416
movdqu xmm0, xmmword [rax + 0xb0]
pxor xmm0, xmmword [rsp + 0x270]
movups xmmword [rsp + 0x270], xmm0
cmp ecx, 0xc
je 0x51a416
movdqu xmm0, xmmword [rax + 0xc0]
pxor xmm0, xmmword [rsp + 0x280]
movups xmmword [rsp + 0x280], xmm0
cmp ecx, 0xd
je 0x51a416
movdqu xmm0, xmmword [rax + 0xd0]
pxor xmm0, xmmword [rsp + 0x290]
movups xmmword [rsp + 0x290], xmm0
cmp ecx, 0xf
jne 0x51a416
movdqu xmm0, xmmword [rax + 0xe0]
pxor xmm0, xmmword [rsp + 0x2a0]
movups xmmword [rsp + 0x2a0], xmm0
shl ecx, 2
cmp r12d, ecx
je 0x51a44d
mov eax, ecx
mov r8d, dword [r13 + rax*4]
xor dword [r14 + rax*4], r8d
lea eax, [rcx + 1]
cmp r12d, eax
jbe 0x51a44d
add ecx, 2
mov r8d, dword [r13 + rax*4]
xor dword [r14 + rax*4], r8d
cmp r12d, ecx
jbe 0x51a44d
mov eax, ecx
mov ecx, dword [r13 + rax*4]
xor dword [r14 + rax*4], ecx
and esi, 3
je 0x51a74d
mov eax, ebp
sub eax, esi
cmp ebp, eax
jbe 0x51a74d
mov ecx, eax
lea r8, [rcx + 0x180]
mov qword [rsp + 0x28], rcx
mov r11, r8
lea r8, [rdi + rcx + 0x40]
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x20], r8
lea r8, [rdi + rcx + 0x50]
cmp r11, r8
setge byte [rsp + 0x3f]
movzx r11d, byte [rsp + 0x3f]
lea r8, [rcx + 0x190]
cmp qword [rsp + 0x20], r8
setge r8b
or r11b, r8b
je 0x51a881
lea r8d, [rsi - 1]
cmp r8d, 0xe
jbe 0x51a881
mov r8, qword [rsp + 0x30]
add r8, rdx
add rdx, qword [rsp + 0x20]
movdqu xmm0, xmmword [r8]
movdqu xmm5, xmmword [rdx]
pxor xmm0, xmm5
movups xmmword [r8], xmm0
movdqu xmm0, xmmword [r8 + 0x10]
movdqu xmm5, xmmword [rdx + 0x10]
pxor xmm0, xmm5
movups xmmword [r8 + 0x10], xmm0
movdqu xmm0, xmmword [r8 + 0x20]
movdqu xmm5, xmmword [rdx + 0x20]
pxor xmm0, xmm5
movups xmmword [r8 + 0x20], xmm0
movdqu xmm0, xmmword [r8 + 0x30]
movdqu xmm5, xmmword [rdx + 0x30]
pxor xmm0, xmm5
movups xmmword [r8 + 0x30], xmm0
movdqu xmm0, xmmword [r8 + 0x40]
movdqu xmm5, xmmword [rdx + 0x40]
pxor xmm0, xmm5
movups xmmword [r8 + 0x40], xmm0
movdqu xmm0, xmmword [r8 + 0x50]
movdqu xmm5, xmmword [rdx + 0x50]
pxor xmm0, xmm5
movups xmmword [r8 + 0x50], xmm0
movdqu xmm0, xmmword [r8 + 0x60]
movdqu xmm5, xmmword [rdx + 0x60]
pxor xmm0, xmm5
movups xmmword [r8 + 0x60], xmm0
movdqu xmm0, xmmword [r8 + 0x70]
movdqu xmm5, xmmword [rdx + 0x70]
pxor xmm0, xmm5
movups xmmword [r8 + 0x70], xmm0
movdqu xmm0, xmmword [r8 + 0x80]
movdqu xmm5, xmmword [rdx + 0x80]
pxor xmm0, xmm5
movups xmmword [r8 + 0x80], xmm0
movdqu xmm0, xmmword [r8 + 0x90]
movdqu xmm5, xmmword [rdx + 0x90]
pxor xmm0, xmm5
movups xmmword [r8 + 0x90], xmm0
movdqu xmm0, xmmword [r8 + 0xa0]
movdqu xmm5, xmmword [rdx + 0xa0]
pxor xmm0, xmm5
movups xmmword [r8 + 0xa0], xmm0
movdqu xmm0, xmmword [r8 + 0xb0]
movdqu xmm5, xmmword [rdx + 0xb0]
pxor xmm0, xmm5
movups xmmword [r8 + 0xb0], xmm0
movdqu xmm0, xmmword [r8 + 0xc0]
movdqu xmm5, xmmword [rdx + 0xc0]
pxor xmm0, xmm5
movups xmmword [r8 + 0xc0], xmm0
movdqu xmm0, xmmword [r8 + 0xd0]
movdqu xmm5, xmmword [rdx + 0xd0]
pxor xmm0, xmm5
movups xmmword [r8 + 0xd0], xmm0
movdqu xmm5, xmmword [r8 + 0xe0]
movdqu xmm0, xmmword [rdx + 0xe0]
pxor xmm0, xmm5
movups xmmword [r8 + 0xe0], xmm0
test esi, esi
je 0x51a74d
movzx edx, byte [r13 + rcx]
xor byte [r14 + rcx], dl
lea edx, [rax + 1]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 2]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 3]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 4]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 5]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 6]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 7]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 8]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 9]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xa]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xb]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xc]
cmp ebp, edx
jbe 0x51a74d
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xd]
cmp ebp, edx
jbe 0x51a74d
add eax, 0xe
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
cmp ebp, eax
jbe 0x51a74d
movzx edx, byte [r13 + rax]
xor byte [r14 + rax], dl
test r9d, r9d
je 0x51a778
mov rcx, qword [rsp + 0x360]
lea eax, [r9 - 1]
mov rdx, rbx
lea r8, [rax*4 + 4]
mov dword [rsp + 0x20], r10d
call sub.msvcrt.dll_memcpy
mov r10d, dword [rsp + 0x20]
test r15d, r15d
je 0x51a7a3
mov edx, r10d
sub edx, r15d
cmp edx, r10d
jae 0x51a7a3
mov rcx, qword [rsp + 0x360]
lea eax, [r15 - 1]
lea r8, [rax + 1]
add rcx, rdx
add rdx, rbx
call sub.msvcrt.dll_memcpy
add rdi, qword [rsp + 0x360]
test r12d, r12d
je 0x51a7c8
mov rdx, r14
mov rcx, rdi
lea eax, [r12 - 1]
lea r8, [rax*4 + 4]
call sub.msvcrt.dll_memcpy
test esi, esi
je 0x519bd6
mov edx, ebp
sub edx, esi
cmp ebp, edx
jbe 0x519bd6
lea eax, [rsi - 1]
lea rcx, [rdi + rdx]
add rdx, r14
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x519bd6
test r8d, r8d
jne 0x519c2e
mov r10d, 0x100
sub r10d, ebp
jmp 0x519860
mov r9d, dword [rbx]
mov dword [rax], r9d
mov r9d, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], r9d
jmp 0x519c25
lea rcx, [rsp + rcx*4 + 0x1c4]
mov rax, r14
mov r8, r13
mov r11d, dword [r8]
add r8, 4
xor dword [rax], r11d
add rax, 4
cmp rcx, rax
jne 0x51a82e
jmp 0x51a44d
lea rdx, [rsp + 0x40]
xor eax, eax
mov r8d, dword [rdx + rax*4 + 0x40]
xor dword [rbx + rax*4], r8d
mov r8, rax
add rax, 1
cmp rcx, r8
jne 0x51a84d
jmp 0x519ee6
mov rdi, r11
movzx eax, byte [r13 + rdi]
xor byte [rbx + rdi], al
add rdi, 1
cmp r10d, edi
ja 0x51a86a
jmp 0x51a1fb
mov r11, rcx
lea rdx, [r14 + r11]
movzx eax, byte [rdx]
xor al, byte [r13 + r11]
add r11, 1
mov byte [rdx], al
cmp ebp, r11d
ja 0x51a884
jmp 0x51a74d