Function at 0x164c97020
Capabilities:
Encode data using xor

Disassembly:
inc rsi
mov edx, 0x208
lea rcx, [rsp + 0x870]
mov r15d, dword [rbp + rsi*4]
add r15, r14
call fcn.164c960f9
mov rcx, r15
call fcn.164c95e59
mov r9d, eax
test eax, eax
je 0x164c96e0b
cmp eax, 6
jbe 0x164c96d9a
mov ecx, eax
lea rdx, [rsp + rcx*2 + 0x870]
lea r10, [r15 + rcx]
sub rdx, r10
lea r11, [rcx + rcx]
cmp rdx, r11
jg 0x164c96d25
neg rdx
cmp rdx, rcx
jle 0x164c96d9a
xor edx, edx
mov r9d, eax
mov r11d, 1
xor r10d, r10d
shr r9d, 1
je 0x164c96d6d
inc edx
lea r11d, [rax + r10]
movsx ecx, byte [r11 + r15]
mov word [rsp + r11*2 + 0x870], cx
lea r11d, [rax + r10 - 1]
movsx r8d, byte [r11 + r15]
add r10d, 0xfffffffe
mov word [rsp + r11*2 + 0x870], r8w
cmp edx, r9d
jb 0x164c96d38
lea r11d, [rdx + rdx + 1]
lea r9d, [r11 - 1]
cmp r9d, eax
jae 0x164c96d8d
neg r11d
add r11d, eax
inc r11d
movsx r9d, byte [r11 + r15]
mov word [rsp + r11*2 + 0x870], r9w
lea r9d, [rax + 1]
sub eax, r9d
lea r9d, [rax + 1]
jmp 0x164c96e0b
xor r10d, r10d
mov r11d, eax
mov edx, 1
xor ecx, ecx
shr r11d, 1
je 0x164c96deb
inc r10d
lea r9d, [rax + rcx]
movsx edx, byte [r9 + r15]
mov word [rsp + r9*2 + 0x870], dx
lea r9d, [rax + rcx - 1]
movsx r8d, byte [r9 + r15]
add ecx, 0xfffffffe
mov word [rsp + r9*2 + 0x870], r8w
cmp r10d, r11d
jb 0x164c96dac
lea r9d, [r10 + r10]
neg r9d
lea edx, [r10 + r10 + 1]
add r9d, eax
lea r10d, [rdx - 1]
cmp r10d, eax
jae 0x164c96e0b
sub eax, edx
lea r9d, [rax + 1]
movsx r10d, byte [r9 + r15]
mov word [rsp + r9*2 + 0x870], r10w
mov r9d, eax
lea rcx, [rsp + 0x870]
movsx r15d, byte [r9 + r15]
mov word [rsp + r9*2 + 0x870], r15w
call fcn.164c95e99
mov r9d, eax
xor r10d, r10d
test r9d, r9d
jbe 0x164c96e91
mov eax, r9d
xor ecx, ecx
mov edx, dword [rdi + 0x2c]
mov r15d, 1
shr eax, 1
je 0x164c96e75
imul r10d, edx
lea r11d, [rcx + rcx]
movsxd r11, r11d
inc ecx
movzx r15d, word [rsp + r11*2 + 0x870]
add r10d, r15d
imul r10d, edx
movzx r11d, word [rsp + r11*2 + 0x872]
add r10d, r11d
cmp ecx, eax
jb 0x164c96e43
lea r15d, [rcx + rcx + 1]
lea r11d, [r15 - 1]
cmp r11d, r9d
jae 0x164c96e91
imul edx, r10d
movsxd r15, r15d
movzx r10d, word [rsp + r15*2 + 0x86e]
add r10d, edx
movzx r9d, word [r13 + rsi*2]
mov r9d, dword [r12 + r9*4]
add r9, r14
cmp ebx, r10d
jne 0x164c96cca
mov rbx, qword [rsp + 0xc80]
xor r13d, r13d
mov r15, qword [rsp + 0x48]
mov qword [rbx + 0x20], r9
movsxd rax, dword [r15 + 0x3c]
mov rbp, qword [rsp + 0x40]
mov r9, qword [rbp + 0x30]
mov esi, dword [rax + r15 + 0x88]
mov edx, dword [rdi + 0x68]
mov ebx, edx
mov eax, dword [rsi + r15 + 0x20]
add rax, r15
mov ebp, dword [rsi + r15 + 0x1c]
mov r12, rax
mov esi, dword [rsi + r15 + 0x24]
add rbp, r15
mov qword [rsp + 0xc88], r9
add rsi, r15
jmp 0x164c96efd
inc r13
mov edx, 0x208
lea rcx, [rsp + 0xa78]
mov r14d, dword [r12 + r13*4]
add r14, r15
call fcn.164c960f9
mov rcx, r14
call fcn.164c95e59
mov r9d, eax
test eax, eax
je 0x164c9703a
cmp eax, 6
jbe 0x164c96fc9
mov ecx, eax
lea rdx, [rsp + rcx*2 + 0xa78]
lea r10, [r14 + rcx]
sub rdx, r10
lea r11, [rcx + rcx]
cmp rdx, r11
jg 0x164c96f54
neg rdx
cmp rdx, rcx
cmp edx, ecx
jle 0x164c96fc9
xor edx, edx
mov r9d, eax
mov r11d, 1
xor r10d, r10d
shr r9d, 1
je 0x164c96f9c
inc edx
lea r11d, [rax + r10]
movsx ecx, byte [r11 + r14]
mov word [rsp + r11*2 + 0xa78], cx
lea r11d, [rax + r10 - 1]
movsx r8d, byte [r11 + r14]
add r10d, 0xfffffffe
mov word [rsp + r11*2 + 0xa78], r8w
cmp edx, r9d
jb 0x164c96f67
lea r11d, [rdx + rdx + 1]
lea r9d, [r11 - 1]
cmp r9d, eax
jae 0x164c96fbc
neg r11d
add r11d, eax
inc r11d
movsx r9d, byte [r11 + r14]
mov word [rsp + r11*2 + 0xa78], r9w
lea r9d, [rax + 1]
sub eax, r9d
lea r9d, [rax + 1]
jmp 0x164c9703a
xor r10d, r10d
mov r11d, eax
mov edx, 1
xor ecx, ecx
shr r11d, 1
je 0x164c9701a
inc r10d
lea r9d, [rax + rcx]
movsx edx, byte [r9 + r14]
mov word [rsp + r9*2 + 0xa78], dx
lea r9d, [rax + rcx - 1]
movsx r8d, byte [r9 + r14]
add ecx, 0xfffffffe
mov word [rsp + r9*2 + 0xa78], r8w
cmp r10d, r11d
jb 0x164c96fdb
lea r9d, [r10 + r10]
neg r9d
lea edx, [r10 + r10 + 1]
add r9d, eax
lea r10d, [rdx - 1]
cmp r10d, eax
sal byte [rbx + 0x17], 1
sub eax, edx
lea r9d, [rax + 1]
movsx r10d, byte [r9 + r14]
mov word [rsp + r9*2 + 0xa78], r10w
mov r9d, eax
lea rcx, [rsp + 0xa78]
movsx r14d, byte [r9 + r14]
mov word [rsp + r9*2 + 0xa78], r14w
call fcn.164c95e99
mov r9d, eax
xor r10d, r10d
test r9d, r9d
jbe 0x164c970c0
mov eax, r9d
xor ecx, ecx
mov edx, dword [rdi + 0x2c]
mov r11d, 1
shr eax, 1
je 0x164c970a4
imul r10d, edx
lea r11d, [rcx + rcx]
movsxd r11, r11d
inc ecx
movzx r14d, word [rsp + r11*2 + 0xa78]
add r10d, r14d
imul r10d, edx
movzx r11d, word [rsp + r11*2 + 0xa7a]
add r10d, r11d
cmp ecx, eax
jb 0x164c97072
lea r11d, [rcx + rcx + 1]
lea ecx, [r11 - 1]
cmp ecx, r9d
jae 0x164c970c0
imul edx, r10d
movsxd r11, r11d
movzx r10d, word [rsp + r11*2 + 0xa76]
add r10d, edx
movzx ecx, word [rsi + r13*2]
mov r14d, dword [rbp + rcx*4]
add r14, r15
cmp ebx, r10d
jne 0x164c96efa
movsxd rbp, dword [rdi + 0xa8]
xor r15d, r15d
mov eax, dword [rdi + 0x80]
mov r9, qword [rsp + 0xc88]
xor eax, dword [rdi + 4]
lea rsi, [r9 + rbp]
mov r13d, dword [rsi]
mov esi, dword [rsi + 4]
mov rbx, qword [rsp + 0xc80]
mov r12, qword [rsp + 0xca0]
cmp r13d, eax
je 0x164c975c1
mov ecx, 0x40
mov rdx, r13
mov qword [rsp + 0xc88], r9
call r12
mov r9, qword [rsp + 0xc88]
mov r15, rax
mov rcx, r15
lea rdx, [r9 + rbp + 8]
mov r8d, r13d
call fcn.164c95dd9
test r13d, r13d
jbe 0x164c971fe
lea eax, [r13 + 3]
sar eax, 1
shr eax, 0x1e
lea edx, [rax + r13 + 3]
sar edx, 2
movsxd rax, edx
cmp rax, 4
jl 0x164c97c8c
mov r11, r15
and r11, 0xf
test r11d, r11d
je 0x164c9718d
test r11d, 3
jne 0x164c97c8c
neg r11d
add r11d, 0x10
shr r11d, 2
mov r10d, r11d
lea rbp, [r10 + 4]
cmp rax, rbp
jl 0x164c97c8c
mov ebp, edx
xor r9d, r9d
sub ebp, r11d
and ebp, 3
sub edx, ebp
mov rbp, r15
movsxd rdx, edx
test r11d, r11d
jbe 0x164c971c4
inc r9
xor dword [rbp], esi
add rbp, 4
cmp r9, r10
jb 0x164c971b5
movd xmm0, esi
pshufd xmm0, xmm0, 0
movdqu xmm1, xmmword [r15 + r10*4]
pxor xmm1, xmm0
movdqu xmmword [r15 + r10*4], xmm1
add r10, 4
cmp r10, rdx
jb 0x164c971cd
lea rbp, [r15 + rdx*4]
cmp rdx, rax
jae 0x164c971fe
inc rdx
xor dword [rbp], esi
add rbp, 4
cmp rdx, rax
jb 0x164c971ef
mov ecx, 0x40
mov edx, 0x20a
call r12
mov rsi, rax
xor eax, eax
cmp byte [r15], 0
je 0x164c97229
movsx edx, byte [rax + r15]
mov word [rsi + rax*2], dx
inc rax
cmp byte [rax + r15], 0
jne 0x164c97216
mov ecx, 0x40
mov edx, 0x20a
call qword [rbx + 0xd0]
mov rbp, rax
xor ecx, ecx
mov rdx, rbp
mov r8d, 0x105
call qword [rbx + 0xc8]
movzx r9d, word [rbp]
xor eax, eax
test r9d, r9d
je 0x164c97c7d
inc eax
movzx r9d, word [rbp + rax*2]
test r9d, r9d
jne 0x164c9725d
xor r10d, r10d
mov word [rbp + rax*2], r10w
dec eax
movzx r9d, word [rbp + rax*2]
cmp r9d, 0x5c
jne 0x164c9726d
movzx r9d, word [rbp]
xor eax, eax
test r9d, r9d
je 0x164c9729a
inc eax
movzx r9d, word [rbp + rax*2]
test r9d, r9d
jne 0x164c9728d
xor r10d, r10d
lea r9d, [rax - 1]
movzx r11d, word [rbp + r9*2]
cmp r11d, 0x5c
je 0x164c972c1
mov eax, eax
mov r9d, 0x5c
mov r10d, 1
mov word [rbp + rax*2], r9w
test rsi, rsi
je 0x164c97c6f
add eax, r10d
xor r9d, r9d
movzx r10d, word [rsi]
test r10d, r10d
je 0x164c972f7
movzx r11d, word [rsi + r9*2]
mov r10d, r9d
inc r9
add r10d, eax
mov word [rbp + r10*2], r11w
movzx r13d, word [rsi + r9*2]
test r13d, r13d
jne 0x164c972d9
add eax, r9d
xor esi, esi
mov word [rbp + rax*2], si
mov rax, rsp
mov rcx, rbp
mov edx, 0x80000000
mov r8d, 1
xor r9d, r9d
mov dword [rax + 0x20], 3
mov dword [rax + 0x28], 0x80
mov qword [rax + 0x30], 0
call qword [rbx + 0xf0]
mov rbp, rax
cmp rbp, 0xffffffffffffffff
je 0x164c97b0e
mov rcx, rbp
xor edx, edx
call qword [rbx + 0x10]
mov r13d, eax
test r13d, r13d
je 0x164c97b05
mov ecx, 0x40
lea edx, [r13 + 1]
invalid
xchg ebx, eax
rol byte [rax], 1
invalid