Function at 0x49778d
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rdi
mov qword [rsp + 0x10], rsi
mov rax, rsp
mov rdi, rcx
mov rsi, rdx
mov rdx, r8
mov rcx, r9
or rsi, rsi
jne 0x4977aa
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
repz ret
push rbx
push r12
push r13
mov r11, rsi
mov r12, rdx
mov r13, rcx
xor r10, r10
xor rcx, rcx
lea rdi, [rdi + 8]
mov r10b, byte [rdi - 8]
mov cl, byte [rdi - 4]
cmp dword [rdi + 0x100], 0xffffffff
je 0x497c00
mov r8d, dword [0x00640500]
xor rbx, rbx
inc r10b
sub rbx, r10
sub r13, r12
mov eax, dword [rdi + r10*4]
test r11, 0xfffffffffffffff0
je 0x497bd0
bt r8d, 0x1e
jb 0x497960
and rbx, 7
lea rsi, [r10 + 1]
je 0x497850
sub r11, rbx
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec rbx
jne 0x497812
lea rsi, [r10 + 1]
jmp 0x497850
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4]
ror r8, 8
mov dword [rdi + r10*4], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 4]
ror r8, 8
mov dword [rdi + r10*4 + 4], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 8]
ror r8, 8
mov dword [rdi + r10*4 + 8], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 0xc]
ror r8, 8
mov dword [rdi + r10*4 + 0xc], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 0x10]
ror r8, 8
mov dword [rdi + r10*4 + 0x10], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 0x14]
ror r8, 8
mov dword [rdi + r10*4 + 0x14], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 0x18]
ror r8, 8
mov dword [rdi + r10*4 + 0x18], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add sil, 8
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 - 4]
ror r8, 8
mov dword [rdi + r10*4 + 0x1c], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add r10b, 8
ror r8, 8
sub r11, 8
xor r8, qword [r12]
mov qword [r12 + r13], r8
lea r12, [r12 + 8]
test r11, 0xfffffffffffffff8
jne 0x497850
cmp r11, 0
jne 0x497bd0
jmp 0x497df0
test r11, 0xffffffffffffffe0
je 0x497bd0
and rbx, 0xf
je 0x4979a8
sub r11, rbx
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec rbx
jne 0x497976
mov rbx, rcx
xor rcx, rcx
mov cl, bl
lea rsi, [rdi + r10*4]
add cl, al
mov edx, dword [rdi + rcx*4]
pxor xmm0, xmm0
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 4]
movzx eax, al
mov dword [rsi], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 0
jmp 0x497a06
add cl, al
mov edx, dword [rdi + rcx*4]
pxor xmm2, xmm0
psllq xmm1, 8
pxor xmm0, xmm0
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 4]
movzx eax, al
mov dword [rsi], edx
pxor xmm2, xmm1
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 0
movdqu xmmword [r12 + r13], xmm2
lea r12, [r12 + 0x10]
mov edx, dword [rdi + rcx*4]
pxor xmm1, xmm1
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 8]
movzx ebx, bl
mov dword [rsi + 4], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 0
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0xc]
movzx eax, al
mov dword [rsi + 8], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 1
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x10]
movzx ebx, bl
mov dword [rsi + 0xc], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 1
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x14]
movzx eax, al
mov dword [rsi + 0x10], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 2
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x18]
movzx ebx, bl
mov dword [rsi + 0x14], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 2
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x1c]
movzx eax, al
mov dword [rsi + 0x18], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 3
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x20]
movzx ebx, bl
mov dword [rsi + 0x1c], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 3
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x24]
movzx eax, al
mov dword [rsi + 0x20], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 4
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x28]
movzx ebx, bl
mov dword [rsi + 0x24], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 4
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x2c]
movzx eax, al
mov dword [rsi + 0x28], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 5
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x30]
movzx ebx, bl
mov dword [rsi + 0x2c], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 5
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x34]
movzx eax, al
mov dword [rsi + 0x30], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 6
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x38]
movzx ebx, bl
mov dword [rsi + 0x34], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 6
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x3c]
movzx eax, al
mov dword [rsi + 0x38], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 7
add r10b, 0x10
movdqu xmm2, xmmword [r12]
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
movzx ebx, bl
mov dword [rsi + 0x3c], edx
lea rsi, [rdi + r10*4]
pinsrw xmm1, word [rdi + rbx*4], 7
mov eax, dword [rsi]
mov rbx, rcx
xor rcx, rcx
sub r11, 0x10
mov cl, bl
test r11, 0xfffffffffffffff0
jne 0x4979d0
psllq xmm1, 8
pxor xmm2, xmm0
pxor xmm2, xmm1
movdqu xmmword [r12 + r13], xmm2
lea r12, [r12 + 0x10]
cmp r11, 0
jne 0x497bd0
jmp 0x497df0
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec r11
jne 0x497bd0
jmp 0x497df0
add r10b, 1
movzx eax, byte [rdi + r10]
test r11, 0xfffffffffffffff8
je 0x497db0
jmp 0x497c20
mov r8d, dword [r12]
mov r9d, dword [r12 + 4]
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x497c4a
mov rbx, rax
add dl, al
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x497c75
mov rax, rbx
add dl, bl
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x497ca0
mov rbx, rax
add dl, al
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x497ccb
mov rax, rbx
add dl, bl
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x497cf6
mov rbx, rax
add dl, al
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x497d21
mov rax, rbx
add dl, bl
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x497d4c
mov rbx, rax
add dl, al
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x497d77
mov rax, rbx
add dl, bl
xor r9b, byte [rdi + rdx]
ror r9d, 8
lea r11, [r11 - 8]
mov dword [r13], r8d
lea r12, [r12 + 8]
mov dword [r13 + 4], r9d
lea r13, [r13 + 8]
test r11, 0xfffffffffffffff8
jne 0x497c20
cmp r11, 0
jne 0x497db0
jmp 0x497df0
add cl, al
movzx ecx, cl
movzx edx, byte [rdi + rcx]
mov byte [rdi + rcx], al
mov byte [rdi + r10], dl
add dl, al
add r10b, 1
movzx edx, dl
movzx r10d, r10b
movzx edx, byte [rdi + rdx]
movzx eax, byte [rdi + r10]
xor dl, byte [r12]
lea r12, [r12 + 1]
mov byte [r13], dl
lea r13, [r13 + 1]
sub r11, 1
jne 0x497db0
jmp 0x497df0
sub r10b, 1
mov dword [rdi - 8], r10d
mov dword [rdi - 4], ecx
mov r13, qword [rsp]
mov r12, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
add rsp, 0x18
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
repz ret