Function at 0x5022b0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x328
movups xmmword [rsp + 0x300], xmm6
movups xmmword [rsp + 0x310], xmm7
pxor xmm6, xmm6
mov r10, qword [rcx]
mov r9, qword [rcx + 0x18]
mov r11, qword [rcx + 8]
mov rdi, rcx
mov rsi, rdx
mov qword [rsp + 0x380], r8
mov r8, qword [rcx + 0x10]
mov rbx, qword [rdi + 0x28]
mov rax, qword [rdi + 0x30]
mov qword [rsp + 0x80], r10
lea r15, [rsp + 0x80]
mov rdx, qword [rdi + 0x38]
mov rcx, qword [rcx + 0x20]
mov qword [rsp + 0x88], r11
lea r14, [rsp + 0x2e0]
mov r12, qword [rdi + 0x40]
mov r13, qword [rdi + 0x48]
mov qword [rsp + 0x90], r8
mov qword [rsp + 0x98], r9
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], rbx
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], rdx
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 xmm7, xmmword [rdi]
mov edi, 0x20
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
mov qword [rsp + 0x188], r11
mov r11, qword [rsi + 0x38]
mov qword [rsp + 0x190], r8
mov qword [rsp + 0x198], r9
mov qword [rsp + 0x1e8], r13
movups xmmword [rsp + 0x170], xmm7
mov qword [rsp + 0x1c0], rcx
mov qword [rsp + 0x1c8], rbx
mov qword [rsp + 0x1d0], rax
mov qword [rsp + 0x1d8], rdx
mov qword [rsp + 0x1e0], r12
mov qword [rsp + 0x1f0], r10
mov r8, qword [rsi + 0x40]
mov r9, qword [rsi + 0x48]
movdqu xmm7, xmmword [rsi]
mov qword [rsp + 0x238], r13
xor esi, esi
mov qword [rsp + 0x288], r13
lea r13, [rsp + 0x1c0]
movups xmmword [rsp + 0x2b0], xmm7
pxor xmm7, xmm7
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 + 0x230], r12
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 + 0x280], r12
mov qword [rsp + 0x290], r10
mov qword [rsp + 0x298], r11
mov qword [rsp + 0x2a0], r8
mov qword [rsp + 0x2a8], r9
mov qword [rsp + 0x2c0], rcx
mov qword [rsp + 0x2c8], rbx
mov qword [rsp + 0x2d0], rax
mov qword [rsp + 0x2d8], rdx
mov qword [rsp + 0x30], r15
jmp 0x5025c1
sub edi, 1
je 0x50278d
lea rdx, [r13 + rsi]
lea rcx, [r15 + rsi]
mov r8, r14
call fcn.005012e0
mov eax, dword [rsp + 0x2e0]
movdqu xmm3, xmmword [rsp + 0x2e0]
movdqu xmm2, xmmword [rsp + 0x2f0]
movdqu xmm1, xmm3
punpckhbw xmm3, xmm7
punpcklbw xmm1, xmm7
movdqu xmm4, xmm2
punpckhbw xmm2, xmm7
movdqu xmm5, xmm1
movdqu xmm0, xmm1
movdqu xmm1, xmm3
punpcklbw xmm4, xmm7
punpcklwd xmm1, xmm6
punpckhwd xmm3, xmm6
paddd xmm3, xmm1
movdqu xmm1, xmm4
punpcklwd xmm5, xmm6
punpckhwd xmm1, xmm6
punpckhwd xmm0, xmm6
punpcklwd xmm4, xmm6
paddd xmm4, xmm1
paddd xmm0, xmm5
movdqu xmm1, xmm2
punpckhwd xmm1, xmm6
paddd xmm0, xmm3
punpcklwd xmm2, xmm6
paddd xmm2, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm2
movdqu xmm1, xmm0
psrldq xmm1, 8
paddd xmm0, xmm1
movdqu xmm1, xmm0
psrldq xmm1, 4
paddd xmm0, xmm1
movd ebx, xmm0
movzx esi, bl
lea rbp, [r13 + rsi]
mov r12, rsi
xor dword [rbp], eax
mov eax, dword [rsp + 0x2e4]
xor dword [rbp + 4], eax
mov eax, dword [rsp + 0x2e8]
xor dword [rbp + 8], eax
mov eax, dword [rsp + 0x2ec]
xor dword [rbp + 0xc], eax
mov eax, dword [rsp + 0x2f0]
xor dword [rbp + 0x10], eax
mov eax, dword [rsp + 0x2f4]
xor dword [rbp + 0x14], eax
mov eax, dword [rsp + 0x2f8]
xor dword [rbp + 0x18], eax
mov eax, dword [rsp + 0x2fc]
xor dword [rbp + 0x1c], eax
test bl, 0xe0
jne 0x5026ed
lea eax, [rsi + 0x100]
add rax, r13
cmp esi, 0x20
jbe 0x502940
movdqu xmm5, xmmword [rbp]
movups xmmword [rax], xmm5
movdqu xmm5, xmmword [rbp + 0x10]
movups xmmword [rax + 0x10], xmm5
mov r9d, 0x100
sub r9d, r12d
cmp r9d, 0x1f
ja 0x5025b8
lea r10d, [r12 - 0xe0]
mov eax, r10d
shr eax, 2
je 0x50273f
sub eax, 1
lea rdx, [rsp + 0x2c0]
mov rcx, r13
mov dword [rsp + 0x28], r9d
lea r8, [rax*4 + 4]
mov dword [rsp + 0x38], r10d
call sub.msvcrt.dll_memmove
mov r10d, dword [rsp + 0x38]
mov r9d, dword [rsp + 0x28]
mov edx, r10d
and edx, 3
je 0x5025b8
mov eax, r10d
sub eax, edx
cmp r10d, eax
jbe 0x5025b8
sub edx, r10d
lea rcx, [r13 + rax]
mov dword [rsp + 0x38], r9d
lea r8d, [r12 + rdx - 0xe1]
lea rdx, [rsp + rax + 0x2c0]
add r8, 1
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x38]
sub edi, 1
jne 0x5025c1
mov r15d, r9d
cmp r9d, 0x100
jne 0x502a38
mov rax, qword [rsp + 0x380]
movdqu xmm7, xmmword [rsp + 0x1c0]
pxor xmm7, xmmword [rsp + 0x80]
movups xmmword [rax], xmm7
movdqu xmm7, xmmword [rsp + 0x1d0]
pxor xmm7, xmmword [rsp + 0x90]
movups xmmword [rax + 0x10], xmm7
movdqu xmm7, xmmword [rsp + 0x1e0]
pxor xmm7, xmmword [rsp + 0xa0]
movups xmmword [rax + 0x20], xmm7
movdqu xmm7, xmmword [rsp + 0x1f0]
pxor xmm7, xmmword [rsp + 0xb0]
movups xmmword [rax + 0x30], xmm7
movdqu xmm7, xmmword [rsp + 0x200]
pxor xmm7, xmmword [rsp + 0xc0]
movups xmmword [rax + 0x40], xmm7
movdqu xmm7, xmmword [rsp + 0x210]
pxor xmm7, xmmword [rsp + 0xd0]
movups xmmword [rax + 0x50], xmm7
movdqu xmm7, xmmword [rsp + 0x220]
pxor xmm7, xmmword [rsp + 0xe0]
movups xmmword [rax + 0x60], xmm7
movdqu xmm7, xmmword [rsp + 0x230]
pxor xmm7, xmmword [rsp + 0xf0]
movups xmmword [rax + 0x70], xmm7
movdqu xmm7, xmmword [rsp + 0x240]
pxor xmm7, xmmword [rsp + 0x100]
movups xmmword [rax + 0x80], xmm7
movdqu xmm7, xmmword [rsp + 0x250]
pxor xmm7, xmmword [rsp + 0x110]
movups xmmword [rax + 0x90], xmm7
movdqu xmm7, xmmword [rsp + 0x260]
pxor xmm7, xmmword [rsp + 0x120]
movdqu xmm5, xmmword [rsp + 0x290]
pxor xmm5, xmmword [rsp + 0x150]
movups xmmword [rax + 0xa0], xmm7
movdqu xmm7, xmmword [rsp + 0x270]
pxor xmm7, xmmword [rsp + 0x130]
movups xmmword [rax + 0xd0], xmm5
movdqu xmm5, xmmword [rsp + 0x2b0]
pxor xmm5, xmmword [rsp + 0x170]
movups xmmword [rax + 0xb0], xmm7
movdqu xmm7, xmmword [rsp + 0x280]
pxor xmm7, xmmword [rsp + 0x140]
movups xmmword [rax + 0xf0], xmm5
movups xmmword [rax + 0xc0], xmm7
movdqu xmm7, xmmword [rsp + 0x2a0]
pxor xmm7, xmmword [rsp + 0x160]
movups xmmword [rax + 0xe0], xmm7
movups xmm6, xmmword [rsp + 0x300]
movups xmm7, xmmword [rsp + 0x310]
add rsp, 0x328
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edx, 0x20
sub edx, esi
mov r8d, edx
mov ecx, edx
and r8d, 3
shr ecx, 2
je 0x5035c8
sub ecx, 1
lea r9, [rcx*4 + 4]
mov ecx, r9d
cmp r9d, 8
jae 0x5029b3
and r9d, 4
jne 0x503680
test ecx, ecx
jne 0x502a12
test r8d, r8d
je 0x5026ed
mov ecx, edx
sub ecx, r8d
cmp edx, ecx
jbe 0x5026ed
lea r9, [rax + rcx]
lea eax, [r8 - 1]
lea rdx, [rbp + rcx]
lea r8, [rax + 1]
mov rcx, r9
call sub.msvcrt.dll_memcpy
jmp 0x5026ed
mov rcx, qword [rbp]
mov r11, rbp
mov qword [rax], rcx
mov ecx, r9d
mov r10, qword [rbp + rcx - 8]
mov qword [rax + rcx - 8], r10
lea r10, [rax + 8]
mov rcx, rax
and r10, 0xfffffffffffffff8
sub rcx, r10
sub r11, rcx
add ecx, r9d
and ecx, 0xfffffff8
cmp ecx, 8
jb 0x50297f
mov qword [rsp + 0x28], rax
and ecx, 0xfffffff8
mov dword [rsp + 0x38], ecx
xor ecx, ecx
mov r9d, ecx
add ecx, 8
mov rax, qword [r11 + r9]
mov qword [r10 + r9], rax
cmp ecx, dword [rsp + 0x38]
jb 0x5029f4
mov rax, qword [rsp + 0x28]
jmp 0x50297f
movzx r9d, byte [rbp]
mov byte [rax], r9b
test cl, 2
je 0x50297f
movzx r9d, word [rbp + rcx - 2]
mov word [rax + rcx - 2], r9w
jmp 0x50297f
mov edi, r9d
lea rdx, [rsp + 0x40]
shr edi, 2
je 0x502c70
lea rax, [rbp + 0x10]
cmp qword [rsp + 0x30], rax
lea ecx, [rdi - 1]
lea rax, [rsp + 0x90]
setae dl
cmp rbp, rax
setae al
or dl, al
je 0x5036bc
cmp ecx, 2
jbe 0x5036bc
movdqu xmm0, xmmword [rbp]
mov eax, r9d
pxor xmm0, xmmword [rsp + 0x80]
shr eax, 4
movups xmmword [rbp], xmm0
cmp eax, 1
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x10]
pxor xmm0, xmmword [rsp + 0x90]
movups xmmword [rbp + 0x10], xmm0
cmp eax, 2
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x20]
pxor xmm0, xmmword [rsp + 0xa0]
movups xmmword [rbp + 0x20], xmm0
cmp eax, 3
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x30]
pxor xmm0, xmmword [rsp + 0xb0]
movups xmmword [rbp + 0x30], xmm0
cmp eax, 4
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x40]
pxor xmm0, xmmword [rsp + 0xc0]
movups xmmword [rbp + 0x40], xmm0
cmp eax, 5
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x50]
pxor xmm0, xmmword [rsp + 0xd0]
movups xmmword [rbp + 0x50], xmm0
cmp eax, 6
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x60]
pxor xmm0, xmmword [rsp + 0xe0]
movups xmmword [rbp + 0x60], xmm0
cmp eax, 7
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x70]
pxor xmm0, xmmword [rsp + 0xf0]
movups xmmword [rbp + 0x70], xmm0
cmp eax, 8
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x80]
pxor xmm0, xmmword [rsp + 0x100]
movups xmmword [rbp + 0x80], xmm0
cmp eax, 9
je 0x502c23
movdqu xmm0, xmmword [rbp + 0x90]
pxor xmm0, xmmword [rsp + 0x110]
movups xmmword [rbp + 0x90], xmm0
cmp eax, 0xa
je 0x502c23
movdqu xmm0, xmmword [rbp + 0xa0]
pxor xmm0, xmmword [rsp + 0x120]
movups xmmword [rbp + 0xa0], xmm0
cmp eax, 0xb
je 0x502c23
movdqu xmm0, xmmword [rbp + 0xb0]
pxor xmm0, xmmword [rsp + 0x130]
movups xmmword [rbp + 0xb0], xmm0
cmp eax, 0xc
je 0x502c23
movdqu xmm0, xmmword [rbp + 0xc0]
pxor xmm0, xmmword [rsp + 0x140]
movups xmmword [rbp + 0xc0], xmm0
cmp eax, 0xd
je 0x502c23
movdqu xmm0, xmmword [rbp + 0xd0]
pxor xmm0, xmmword [rsp + 0x150]
movups xmmword [rbp + 0xd0], xmm0
cmp eax, 0xf
jne 0x502c23
movdqu xmm0, xmmword [rbp + 0xe0]
pxor xmm0, xmmword [rsp + 0x160]
movups xmmword [rbp + 0xe0], xmm0
shl eax, 2
lea rdx, [rsp + 0x40]
cmp edi, eax
je 0x502c70
mov ecx, eax
shl rcx, 2
mov r8d, dword [rsp + rcx + 0x80]
xor dword [rbp + rcx], r8d
lea ecx, [rax + 1]
cmp edi, ecx
jbe 0x502c70
shl rcx, 2
add eax, 2
mov r8d, dword [rsp + rcx + 0x80]
xor dword [rbp + rcx], r8d
cmp edi, eax
jbe 0x502c70
shl rax, 2
mov ecx, dword [rsp + rax + 0x80]
xor dword [rbp + rax], ecx
mov eax, r15d
and eax, 3
mov dword [rsp + 0x38], eax
je 0x502f92
mov ecx, r15d
mov r14d, eax
sub ecx, eax
cmp ecx, r15d
jae 0x502f92
mov r9d, ecx
lea r11, [rbp + r9 + 0x10]
lea r8, [rdx + r9 + 0x40]
mov r10, r9
cmp r8, r11
lea rax, [rbp + r9]
lea r11, [rdx + r9 + 0x50]
setae sil
cmp rax, r11
setae r11b
or sil, r11b
je 0x5036fd
lea r11d, [r14 - 1]
cmp r11d, 0xe
jbe 0x5036fd
movdqu xmm7, xmmword [r8]
movdqu xmm0, xmmword [rax]
pxor xmm0, xmm7
movups xmmword [rax], xmm0
movdqu xmm0, xmmword [rax + 0x10]
movdqu xmm7, xmmword [r8 + 0x10]
pxor xmm0, xmm7
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 xmm7, xmmword [r8 + 0x30]
pxor xmm0, xmm7
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 xmm7, xmmword [r8 + 0x50]
pxor xmm0, xmm7
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 xmm7, xmmword [r8 + 0x70]
pxor xmm0, xmm7
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 xmm7, xmmword [r8 + 0x90]
pxor xmm0, xmm7
movups xmmword [rax + 0x90], xmm0
movdqu xmm0, xmmword [rax + 0xa0]
movdqu xmm5, xmmword [r8 + 0xa0]
pxor xmm0, xmm5
movups xmmword [rax + 0xa0], xmm0
movdqu xmm0, xmmword [rax + 0xb0]
movdqu xmm7, xmmword [r8 + 0xb0]
pxor xmm0, xmm7
movups xmmword [rax + 0xb0], xmm0
movdqu xmm0, xmmword [rax + 0xc0]
movdqu xmm5, xmmword [r8 + 0xc0]
pxor xmm0, xmm5
movdqu xmm5, xmmword [rax + 0xe0]
movups xmmword [rax + 0xc0], xmm0
movdqu xmm0, xmmword [rax + 0xd0]
movdqu xmm7, xmmword [r8 + 0xd0]
pxor xmm0, xmm7
movups xmmword [rax + 0xd0], xmm0
movdqu xmm0, xmmword [r8 + 0xe0]
pxor xmm0, xmm5
movups xmmword [rax + 0xe0], xmm0
test r14d, r14d
je 0x502f92
movzx eax, byte [rsp + r9 + 0x80]
xor byte [rbp + r9], al
lea eax, [rcx + 1]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 2]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 3]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 4]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 5]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 6]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 7]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 8]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 9]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 0xa]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 0xb]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 0xc]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 0xd]
cmp r15d, eax
jbe 0x502f92
movzx r8d, byte [rsp + rax + 0x80]
xor byte [rbp + rax], r8b
lea eax, [rcx + 0xe]
cmp r15d, eax
jbe 0x502f92
movzx ecx, byte [rsp + rax + 0x80]
xor byte [rbp + rax], cl
mov rcx, qword [rsp + 0x30]
mov r14d, r15d
mov r9d, r12d
add rcx, r14
shr r9d, 2
je 0x5031fe
lea r10, [rdx + r14 + 0x50]
lea rax, [rdx + r14 + 0x40]
cmp r13, r10
lea r10, [rsp + 0x1d0]
lea r8d, [r9 - 1]
setae r11b
cmp rax, r10
setae r10b
or r11b, r10b
je 0x503696
cmp r8d, 2
jbe 0x503696
movdqu xmm0, xmmword [rax]
mov r8d, r12d
pxor xmm0, xmmword [rsp + 0x1c0]
shr r8d, 4
movups xmmword [rsp + 0x1c0], xmm0
cmp r8d, 1
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x10]
pxor xmm0, xmmword [rsp + 0x1d0]
movups xmmword [rsp + 0x1d0], xmm0
cmp r8d, 2
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x20]
pxor xmm0, xmmword [rsp + 0x1e0]
movups xmmword [rsp + 0x1e0], xmm0
cmp r8d, 3
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x30]
pxor xmm0, xmmword [rsp + 0x1f0]
movups xmmword [rsp + 0x1f0], xmm0
cmp r8d, 4
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x40]
pxor xmm0, xmmword [rsp + 0x200]
movups xmmword [rsp + 0x200], xmm0
cmp r8d, 5
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x50]
pxor xmm0, xmmword [rsp + 0x210]
movups xmmword [rsp + 0x210], xmm0
cmp r8d, 6
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x60]
pxor xmm0, xmmword [rsp + 0x220]
movups xmmword [rsp + 0x220], xmm0
cmp r8d, 7
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x70]
pxor xmm0, xmmword [rsp + 0x230]
movups xmmword [rsp + 0x230], xmm0
cmp r8d, 8
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x80]
pxor xmm0, xmmword [rsp + 0x240]
movups xmmword [rsp + 0x240], xmm0
cmp r8d, 9
je 0x5031c2
movdqu xmm0, xmmword [rax + 0x90]
pxor xmm0, xmmword [rsp + 0x250]
movups xmmword [rsp + 0x250], xmm0
cmp r8d, 0xa
je 0x5031c2
movdqu xmm0, xmmword [rax + 0xa0]
pxor xmm0, xmmword [rsp + 0x260]
movups xmmword [rsp + 0x260], xmm0
cmp r8d, 0xb
je 0x5031c2
movdqu xmm0, xmmword [rax + 0xb0]
pxor xmm0, xmmword [rsp + 0x270]
movups xmmword [rsp + 0x270], xmm0
cmp r8d, 0xc
je 0x5031c2
movdqu xmm0, xmmword [rax + 0xc0]
pxor xmm0, xmmword [rsp + 0x280]
movups xmmword [rsp + 0x280], xmm0
cmp r8d, 0xd
je 0x5031c2
movdqu xmm0, xmmword [rax + 0xd0]
pxor xmm0, xmmword [rsp + 0x290]
movups xmmword [rsp + 0x290], xmm0
cmp r8d, 0xf
jne 0x5031c2
movdqu xmm0, xmmword [rax + 0xe0]
pxor xmm0, xmmword [rsp + 0x2a0]
movups xmmword [rsp + 0x2a0], xmm0
shl r8d, 2
cmp r9d, r8d
je 0x5031fe
mov eax, r8d
mov r10d, dword [rcx + rax*4]
xor dword [r13 + rax*4], r10d
lea eax, [r8 + 1]
cmp r9d, eax
jbe 0x5031fe
add r8d, 2
mov r10d, dword [rcx + rax*4]
xor dword [r13 + rax*4], r10d
cmp r9d, r8d
jbe 0x5031fe
mov eax, r8d
mov r8d, dword [rcx + rax*4]
xor dword [r13 + rax*4], r8d
and ebx, 3
je 0x503505
mov eax, r12d
sub eax, ebx
cmp r12d, eax
jbe 0x503505
mov r8d, eax
lea rsi, [r8 + 0x180]
lea r11, [r14 + r8 + 0x50]
mov qword [rsp + 0x28], r8
mov r10, rsi
lea rsi, [r14 + r8 + 0x40]
cmp r10, r11
lea r11, [r8 + 0x190]
mov qword [rsp + 0x30], r10
setge byte [rsp + 0x3f]
cmp rsi, r11
movzx r10d, byte [rsp + 0x3f]
setge r11b
or r10b, r11b
je 0x5036de
lea r11d, [rbx - 1]
cmp r11d, 0xe
jbe 0x5036de
mov r10, qword [rsp + 0x30]
add r10, rdx
add rdx, rsi
movdqu xmm7, xmmword [rdx]
movdqu xmm0, xmmword [r10]
pxor xmm0, xmm7
movups xmmword [r10], xmm0
movdqu xmm0, xmmword [r10 + 0x10]
movdqu xmm5, xmmword [rdx + 0x10]
pxor xmm0, xmm5
movups xmmword [r10 + 0x10], xmm0
movdqu xmm0, xmmword [r10 + 0x20]
movdqu xmm7, xmmword [rdx + 0x20]
pxor xmm0, xmm7
movups xmmword [r10 + 0x20], xmm0
movdqu xmm0, xmmword [r10 + 0x30]
movdqu xmm5, xmmword [rdx + 0x30]
pxor xmm0, xmm5
movups xmmword [r10 + 0x30], xmm0
movdqu xmm0, xmmword [r10 + 0x40]
movdqu xmm7, xmmword [rdx + 0x40]
pxor xmm0, xmm7
movups xmmword [r10 + 0x40], xmm0
movdqu xmm0, xmmword [r10 + 0x50]
movdqu xmm5, xmmword [rdx + 0x50]
pxor xmm0, xmm5
movups xmmword [r10 + 0x50], xmm0
movdqu xmm0, xmmword [r10 + 0x60]
movdqu xmm7, xmmword [rdx + 0x60]
pxor xmm0, xmm7
movups xmmword [r10 + 0x60], xmm0
movdqu xmm0, xmmword [r10 + 0x70]
movdqu xmm5, xmmword [rdx + 0x70]
pxor xmm0, xmm5
movups xmmword [r10 + 0x70], xmm0
movdqu xmm7, xmmword [rdx + 0x80]
movdqu xmm0, xmmword [r10 + 0x80]
pxor xmm0, xmm7
movups xmmword [r10 + 0x80], xmm0
movdqu xmm5, xmmword [rdx + 0x90]
movdqu xmm0, xmmword [r10 + 0x90]
pxor xmm0, xmm5
movups xmmword [r10 + 0x90], xmm0
movdqu xmm0, xmmword [r10 + 0xa0]
movdqu xmm7, xmmword [rdx + 0xa0]
pxor xmm0, xmm7
movups xmmword [r10 + 0xa0], xmm0
movdqu xmm5, xmmword [rdx + 0xb0]
movdqu xmm0, xmmword [r10 + 0xb0]
pxor xmm0, xmm5
movups xmmword [r10 + 0xb0], xmm0
movdqu xmm7, xmmword [rdx + 0xc0]
movdqu xmm0, xmmword [r10 + 0xc0]
pxor xmm0, xmm7
movdqu xmm7, xmmword [r10 + 0xe0]
movups xmmword [r10 + 0xc0], xmm0
movdqu xmm5, xmmword [rdx + 0xd0]
movdqu xmm0, xmmword [r10 + 0xd0]
pxor xmm0, xmm5
movups xmmword [r10 + 0xd0], xmm0
movdqu xmm0, xmmword [rdx + 0xe0]
pxor xmm0, xmm7
movups xmmword [r10 + 0xe0], xmm0
test ebx, ebx
je 0x503505
movzx edx, byte [rcx + r8]
xor byte [r13 + r8], dl
lea edx, [rax + 1]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 2]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 3]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 4]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 5]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 6]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 7]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 8]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 9]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 0xa]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 0xb]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 0xc]
cmp r12d, edx
jbe 0x503505
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
lea edx, [rax + 0xd]
cmp r12d, edx
jbe 0x503505
add eax, 0xe
movzx r8d, byte [rcx + rdx]
xor byte [r13 + rdx], r8b
cmp r12d, eax
jbe 0x503505
movzx edx, byte [rcx + rax]
xor byte [r13 + rax], dl
test edi, edi
je 0x50352e
lea eax, [rdi - 1]
lea rcx, [rax*4 + 4]
cmp ecx, 8
jae 0x5035df
test cl, 4
jne 0x50371a
test ecx, ecx
jne 0x50366d
mov eax, dword [rsp + 0x38]
test eax, eax
je 0x503568
mov eax, dword [rsp + 0x38]
mov edx, r15d
sub edx, eax
cmp edx, r15d
jae 0x503568
mov rcx, qword [rsp + 0x380]
sub eax, 1
mov dword [rsp + 0x38], r9d
lea r8, [rax + 1]
add rcx, rdx
add rdx, rbp
call sub.msvcrt.dll_memcpy
mov r9d, dword [rsp + 0x38]
add r14, qword [rsp + 0x380]
test r9d, r9d
je 0x50359a
lea eax, [r9 - 1]
lea rax, [rax*4 + 4]
cmp eax, 8
jae 0x503628
test al, 4
jne 0x50373e
test eax, eax
jne 0x503660
test ebx, ebx
je 0x50291c
mov edx, r12d
sub edx, ebx
cmp r12d, edx
jbe 0x50291c
lea eax, [rbx - 1]
lea rcx, [r14 + rdx]
add rdx, r13
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x50291c
test r8d, r8d
jne 0x502988
mov r9d, 0x100
sub r9d, r12d
jmp 0x5025b8
mov rax, qword [rbp]
mov rdi, qword [rsp + 0x380]
mov rsi, rbp
mov qword [rdi], rax
mov eax, ecx
mov rdi, qword [rsp + 0x380]
mov rdx, qword [rbp + rax - 8]
mov qword [rdi + rax - 8], rdx
mov rax, qword [rsp + 0x380]
lea rdi, [rax + 8]
and rdi, 0xfffffffffffffff8
sub rax, rdi
add ecx, eax
sub rsi, rax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x50352e
mov rdx, qword [rsp + 0x1c0]
lea rdi, [r14 + 8]
mov rsi, r13
and rdi, 0xfffffffffffffff8
mov qword [r14], rdx
mov edx, eax
mov rcx, qword [r13 + rdx - 8]
mov qword [r14 + rdx - 8], rcx
mov rcx, r14
sub rcx, rdi
sub rsi, rcx
add ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x50359a
movzx eax, byte [r13]
mov byte [r14], al
jmp 0x50359a
movzx eax, byte [rbp]
mov rdi, qword [rsp + 0x380]
mov byte [rdi], al
jmp 0x50352e
mov r9d, dword [rbp]
mov dword [rax], r9d
mov r9d, dword [rbp + rcx - 4]
mov dword [rax + rcx - 4], r9d
jmp 0x50297f
mov rax, r13
mov r10, rcx
lea r8, [rsp + r8*4 + 0x1c4]
mov r11d, dword [r10]
xor dword [rax], r11d
add rax, 4
add r10, 4
cmp r8, rax
jne 0x5036a4
jmp 0x5031fe
xor eax, eax
lea rdx, [rsp + 0x40]
mov r8d, dword [rdx + rax*4 + 0x40]
xor dword [rbp + rax*4], r8d
mov r8, rax
add rax, 1
cmp rcx, r8
jne 0x5036c3
jmp 0x502c70
mov r10, r8
lea rdx, [r13 + r10]
movzx eax, byte [rdx]
xor al, byte [rcx + r10]
add r10, 1
mov byte [rdx], al
cmp r12d, r10d
ja 0x5036e1
jmp 0x503505
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rcx + r10]
xor byte [rbp + r10], al
add r10, 1
cmp r15d, r10d
ja 0x503702
jmp 0x502f92
mov eax, dword [rbp]
mov rdi, qword [rsp + 0x380]
mov ecx, ecx
mov dword [rdi], eax
mov eax, dword [rbp + rcx - 4]
mov rdi, qword [rsp + 0x380]
mov dword [rdi + rcx - 4], eax
jmp 0x50352e
mov edx, dword [r13]
mov eax, eax
mov dword [r14], edx
mov edx, dword [r13 + rax - 4]
mov dword [r14 + rax - 4], edx
jmp 0x50359a