Function at 0x513820
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 0x513b1a
sub r12d, 1
je 0x513cfa
lea rdx, [r14 + rdi]
mov r8, r15
lea rcx, [r13 + rdi]
call fcn.005128d0
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 0x513c5b
lea eax, [rdi + 0x100]
add rax, r14
cmp edi, 0x20
jbe 0x513e9a
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 0x513b10
lea r9d, [rbp - 0xe0]
mov eax, r9d
shr eax, 2
je 0x513cac
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 0x513b10
mov eax, r9d
sub eax, edx
cmp r9d, eax
jbe 0x513b10
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 0x513b1a
cmp r10d, 0x100
jne 0x513f60
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 0x514aa4
sub edx, 1
lea r9, [rdx*4 + 4]
mov edx, r9d
cmp r9d, 8
jae 0x513f0a
and r9d, 4
jne 0x514abb
test edx, edx
jne 0x513f3c
test r8d, r8d
je 0x513c5b
mov edx, ecx
sub edx, r8d
cmp ecx, edx
jbe 0x513c5b
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 0x513c5b
mov edx, r9d
mov r10, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], r10
lea edx, [r9 - 1]
cmp edx, 8
jb 0x513ed5
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 0x513f26
jmp 0x513ed5
movzx r9d, byte [rbx]
mov byte [rax], r9b
test dl, 2
je 0x513ed5
movzx r9d, word [rbx + rdx - 2]
mov word [rax + rdx - 2], r9w
jmp 0x513ed5
lea rdx, [rsp + 0x40]
mov r9d, r10d
shr r9d, 2
je 0x514196
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 0x514af6
cmp ecx, 2
jbe 0x514af6
mov eax, r10d
movdqu xmm0, xmmword [rbx]
pxor xmm0, xmmword [rsp + 0x80]
movups xmmword [rbx], xmm0
shr eax, 4
cmp eax, 1
je 0x514149
movdqu xmm0, xmmword [rbx + 0x10]
pxor xmm0, xmmword [rsp + 0x90]
movups xmmword [rbx + 0x10], xmm0
cmp eax, 2
je 0x514149
movdqu xmm0, xmmword [rbx + 0x20]
pxor xmm0, xmmword [rsp + 0xa0]
movups xmmword [rbx + 0x20], xmm0
cmp eax, 3
je 0x514149
movdqu xmm0, xmmword [rbx + 0x30]
pxor xmm0, xmmword [rsp + 0xb0]
movups xmmword [rbx + 0x30], xmm0
cmp eax, 4
je 0x514149
movdqu xmm0, xmmword [rbx + 0x40]
pxor xmm0, xmmword [rsp + 0xc0]
movups xmmword [rbx + 0x40], xmm0
cmp eax, 5
je 0x514149
movdqu xmm0, xmmword [rbx + 0x50]
pxor xmm0, xmmword [rsp + 0xd0]
movups xmmword [rbx + 0x50], xmm0
cmp eax, 6
je 0x514149
movdqu xmm0, xmmword [rbx + 0x60]
pxor xmm0, xmmword [rsp + 0xe0]
movups xmmword [rbx + 0x60], xmm0
cmp eax, 7
je 0x514149
movdqu xmm0, xmmword [rbx + 0x70]
pxor xmm0, xmmword [rsp + 0xf0]
movups xmmword [rbx + 0x70], xmm0
cmp eax, 8
je 0x514149
movdqu xmm0, xmmword [rbx + 0x80]
pxor xmm0, xmmword [rsp + 0x100]
movups xmmword [rbx + 0x80], xmm0
cmp eax, 9
je 0x514149
movdqu xmm0, xmmword [rbx + 0x90]
pxor xmm0, xmmword [rsp + 0x110]
movups xmmword [rbx + 0x90], xmm0
cmp eax, 0xa
je 0x514149
movdqu xmm0, xmmword [rbx + 0xa0]
pxor xmm0, xmmword [rsp + 0x120]
movups xmmword [rbx + 0xa0], xmm0
cmp eax, 0xb
je 0x514149
movdqu xmm0, xmmword [rbx + 0xb0]
pxor xmm0, xmmword [rsp + 0x130]
movups xmmword [rbx + 0xb0], xmm0
cmp eax, 0xc
je 0x514149
movdqu xmm0, xmmword [rbx + 0xc0]
pxor xmm0, xmmword [rsp + 0x140]
movups xmmword [rbx + 0xc0], xmm0
cmp eax, 0xd
je 0x514149
movdqu xmm0, xmmword [rbx + 0xd0]
pxor xmm0, xmmword [rsp + 0x150]
movups xmmword [rbx + 0xd0], xmm0
cmp eax, 0xf
jne 0x514149
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 0x514196
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 0x514196
shl rcx, 2
add eax, 2
mov r8d, dword [rsp + rcx + 0x80]
xor dword [rbx + rcx], r8d
cmp r9d, eax
jbe 0x514196
shl rax, 2
mov ecx, dword [rsp + rax + 0x80]
xor dword [rbx + rax], ecx
mov r15d, r10d
and r15d, 3
je 0x5144ab
mov ecx, r10d
sub ecx, r15d
cmp ecx, r10d
jae 0x5144ab
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 0x514b17
lea r12d, [r15 - 1]
cmp r12d, 0xe
jbe 0x514b17
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 0x5144ab
movzx eax, byte [rsp + r11 + 0x80]
xor byte [rbx + r11], al
lea eax, [rcx + 1]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 2]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 3]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 4]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 5]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 6]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 7]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 8]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 9]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xa]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xb]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xc]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xd]
cmp r10d, eax
jbe 0x5144ab
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbx + rax], r8b
lea eax, [rcx + 0xe]
cmp r10d, eax
jbe 0x5144ab
movzx ecx, byte [rsp + rax + 0x80]
xor byte [rbx + rax], cl
mov edi, r10d
mov r12d, ebp
add r13, rdi
shr r12d, 2
je 0x5146fd
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 0x514ad0
cmp ecx, 2
jbe 0x514ad0
mov ecx, ebp
movdqu xmm0, xmmword [rax]
pxor xmm0, xmmword [rsp + 0x1c0]
movups xmmword [rsp + 0x1c0], xmm0
shr ecx, 4
cmp ecx, 1
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x10]
pxor xmm0, xmmword [rsp + 0x1d0]
movups xmmword [rsp + 0x1d0], xmm0
cmp ecx, 2
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x20]
pxor xmm0, xmmword [rsp + 0x1e0]
movups xmmword [rsp + 0x1e0], xmm0
cmp ecx, 3
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x30]
pxor xmm0, xmmword [rsp + 0x1f0]
movups xmmword [rsp + 0x1f0], xmm0
cmp ecx, 4
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x40]
pxor xmm0, xmmword [rsp + 0x200]
movups xmmword [rsp + 0x200], xmm0
cmp ecx, 5
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x50]
pxor xmm0, xmmword [rsp + 0x210]
movups xmmword [rsp + 0x210], xmm0
cmp ecx, 6
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x60]
pxor xmm0, xmmword [rsp + 0x220]
movups xmmword [rsp + 0x220], xmm0
cmp ecx, 7
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x70]
pxor xmm0, xmmword [rsp + 0x230]
movups xmmword [rsp + 0x230], xmm0
cmp ecx, 8
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x80]
pxor xmm0, xmmword [rsp + 0x240]
movups xmmword [rsp + 0x240], xmm0
cmp ecx, 9
je 0x5146c6
movdqu xmm0, xmmword [rax + 0x90]
pxor xmm0, xmmword [rsp + 0x250]
movups xmmword [rsp + 0x250], xmm0
cmp ecx, 0xa
je 0x5146c6
movdqu xmm0, xmmword [rax + 0xa0]
pxor xmm0, xmmword [rsp + 0x260]
movups xmmword [rsp + 0x260], xmm0
cmp ecx, 0xb
je 0x5146c6
movdqu xmm0, xmmword [rax + 0xb0]
pxor xmm0, xmmword [rsp + 0x270]
movups xmmword [rsp + 0x270], xmm0
cmp ecx, 0xc
je 0x5146c6
movdqu xmm0, xmmword [rax + 0xc0]
pxor xmm0, xmmword [rsp + 0x280]
movups xmmword [rsp + 0x280], xmm0
cmp ecx, 0xd
je 0x5146c6
movdqu xmm0, xmmword [rax + 0xd0]
pxor xmm0, xmmword [rsp + 0x290]
movups xmmword [rsp + 0x290], xmm0
cmp ecx, 0xf
jne 0x5146c6
movdqu xmm0, xmmword [rax + 0xe0]
pxor xmm0, xmmword [rsp + 0x2a0]
movups xmmword [rsp + 0x2a0], xmm0
shl ecx, 2
cmp r12d, ecx
je 0x5146fd
mov eax, ecx
mov r8d, dword [r13 + rax*4]
xor dword [r14 + rax*4], r8d
lea eax, [rcx + 1]
cmp r12d, eax
jbe 0x5146fd
add ecx, 2
mov r8d, dword [r13 + rax*4]
xor dword [r14 + rax*4], r8d
cmp r12d, ecx
jbe 0x5146fd
mov eax, ecx
mov ecx, dword [r13 + rax*4]
xor dword [r14 + rax*4], ecx
and esi, 3
je 0x5149fd
mov eax, ebp
sub eax, esi
cmp ebp, eax
jbe 0x5149fd
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 0x514b31
lea r8d, [rsi - 1]
cmp r8d, 0xe
jbe 0x514b31
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 0x5149fd
movzx edx, byte [r13 + rcx]
xor byte [r14 + rcx], dl
lea edx, [rax + 1]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 2]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 3]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 4]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 5]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 6]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 7]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 8]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 9]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xa]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xb]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xc]
cmp ebp, edx
jbe 0x5149fd
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
lea edx, [rax + 0xd]
cmp ebp, edx
jbe 0x5149fd
add eax, 0xe
movzx ecx, byte [r13 + rdx]
xor byte [r14 + rdx], cl
cmp ebp, eax
jbe 0x5149fd
movzx edx, byte [r13 + rax]
xor byte [r14 + rax], dl
test r9d, r9d
je 0x514a28
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 0x514a53
mov edx, r10d
sub edx, r15d
cmp edx, r10d
jae 0x514a53
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 0x514a78
mov rdx, r14
mov rcx, rdi
lea eax, [r12 - 1]
lea r8, [rax*4 + 4]
call sub.msvcrt.dll_memcpy
test esi, esi
je 0x513e86
mov edx, ebp
sub edx, esi
cmp ebp, edx
jbe 0x513e86
lea eax, [rsi - 1]
lea rcx, [rdi + rdx]
add rdx, r14
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x513e86
test r8d, r8d
jne 0x513ede
mov r10d, 0x100
sub r10d, ebp
jmp 0x513b10
mov r9d, dword [rbx]
mov dword [rax], r9d
mov r9d, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], r9d
jmp 0x513ed5
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 0x514ade
jmp 0x5146fd
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 0x514afd
jmp 0x514196
mov rdi, r11
movzx eax, byte [r13 + rdi]
xor byte [rbx + rdi], al
add rdi, 1
cmp r10d, edi
ja 0x514b1a
jmp 0x5144ab
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 0x514b34
jmp 0x5149fd