Function at 0x1401d58b4
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov ebp, r8d
mov esi, r9d
mov r8d, dword [rcx + 0x174]
mov r14d, edx
mov rdi, rcx
test r8d, r8d
je 0x1401d58f3
mov r9d, dword [rcx + 0xf8]
sub r9d, ebp
dec r9d
jmp 0x1401d58f6
mov r9d, ebp
mov ecx, dword [rcx + 0x158]
mov eax, ecx
mov edx, dword [rdi + 0x160]
imul eax, r9d
movsxd rbx, eax
mov eax, edx
imul eax, r14d
cdqe
add rbx, rax
mov eax, ecx
add rbx, qword [rdi + 0x150]
neg eax
test r8d, r8d
cmove eax, ecx
cmp dword [rdi + 0x16c], 0
jne 0x1401d5d31
cmp dword [rdi + 0x170], 0
jne 0x1401d5d31
mov ecx, dword [rdi + 0x164]
test cl, 2
je 0x1401d597e
test esi, esi
je 0x1401d5d53
movsxd rcx, eax
mov al, byte [rdi + 0x180]
xor byte [rbx + 2], al
mov al, byte [rdi + 0x184]
xor byte [rbx + 1], al
mov al, byte [rdi + 0x188]
xor byte [rbx], al
add rbx, rcx
sub esi, 1
jne 0x1401d5957
jmp 0x1401d5d53
bt ecx, 8
jae 0x1401d59bf
test esi, esi
je 0x1401d5d53
movsxd rcx, eax
mov al, byte [rdi + 0x180]
mov byte [rbx + 2], al
mov al, byte [rdi + 0x184]
mov byte [rbx + 1], al
mov al, byte [rdi + 0x188]
mov byte [rbx], al
mov al, byte [rdi + 0x18c]
mov byte [rbx + 3], al
add rbx, rcx
sub esi, 1
jne 0x1401d598f
jmp 0x1401d5d53
test cl, 8
je 0x1401d59ee
cmp edx, 4
jne 0x1401d5d53
test esi, esi
je 0x1401d5d53
movsxd rcx, eax
mov al, byte [rdi + 0x18c]
mov byte [rbx + 3], al
add rbx, rcx
sub esi, 1
jne 0x1401d59d8
jmp 0x1401d5d53
test cl, 0x10
je 0x1401d5bd0
test esi, esi
je 0x1401d5d53
mov ebp, 0x80808081
cmp edx, 4
jne 0x1401d5b56
movsxd r14, eax
mov r11d, dword [rdi + 0x18c]
lea r10, [rbx + 2]
movzx r9d, byte [rbx + 3]
test r11d, r11d
jne 0x1401d5a2b
movzx eax, byte [r10]
jmp 0x1401d5a6d
test r9d, r9d
jne 0x1401d5a3c
mov eax, dword [rdi + 0x180]
cdq
idiv r11d
jmp 0x1401d5a6d
imul ecx, dword [rdi + 0x180], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [r10]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r11d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [r10], al
mov r10d, dword [rdi + 0x18c]
test r10d, r10d
jne 0x1401d5a82
movzx eax, byte [rbx + 1]
jmp 0x1401d5ac4
test r9d, r9d
jne 0x1401d5a93
mov eax, dword [rdi + 0x184]
cdq
idiv r10d
jmp 0x1401d5ac4
imul ecx, dword [rdi + 0x184], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [rbx + 1]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r10d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [rbx + 1], al
mov r10d, dword [rdi + 0x18c]
test r10d, r10d
jne 0x1401d5ad8
movzx eax, byte [rbx]
jmp 0x1401d5b19
test r9d, r9d
jne 0x1401d5ae9
mov eax, dword [rdi + 0x188]
cdq
idiv r10d
jmp 0x1401d5b19
imul ecx, dword [rdi + 0x188], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [rbx]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r10d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [rbx], al
imul eax, dword [rdi + 0x18c], 0xff
imul r9d, dword [rdi + 0x190]
add r9d, eax
mov eax, ebp
imul r9d
add edx, r9d
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov byte [rbx + 3], dl
add rbx, r14
sub esi, 1
jne 0x1401d5a10
jmp 0x1401d5d53
movsxd r8, eax
movzx ecx, byte [rbx + 2]
mov eax, ebp
imul ecx, dword [rdi + 0x190]
add ecx, dword [rdi + 0x180]
imul ecx
add edx, ecx
movzx ecx, byte [rbx + 1]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
mov byte [rbx + 2], dl
imul ecx, dword [rdi + 0x190]
add ecx, dword [rdi + 0x184]
imul ecx
add edx, ecx
movzx ecx, byte [rbx]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ebp
mov byte [rbx + 1], dl
imul ecx, dword [rdi + 0x190]
add ecx, dword [rdi + 0x188]
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov byte [rbx], dl
add rbx, r8
sub esi, 1
jne 0x1401d5b59
jmp 0x1401d5d53
test cl, 0x20
je 0x1401d5d06
cmp edx, 4
jne 0x1401d5d06
test esi, esi
je 0x1401d5d53
movsxd rbp, eax
mov r11d, dword [rdi + 0x18c]
lea r10, [rbx + 2]
movzx r9d, byte [rbx + 3]
test r11d, r11d
jne 0x1401d5c08
movzx eax, byte [r10]
jmp 0x1401d5c4a
test r9d, r9d
jne 0x1401d5c19
mov eax, dword [rdi + 0x180]
cdq
idiv r11d
jmp 0x1401d5c4a
imul ecx, dword [rdi + 0x180], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [r10]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r11d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [r10], al
mov r10d, dword [rdi + 0x18c]
test r10d, r10d
jne 0x1401d5c5f
movzx eax, byte [rbx + 1]
jmp 0x1401d5ca1
test r9d, r9d
jne 0x1401d5c70
mov eax, dword [rdi + 0x184]
cdq
idiv r10d
jmp 0x1401d5ca1
imul ecx, dword [rdi + 0x184], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [rbx + 1]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r10d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [rbx + 1], al
mov r10d, dword [rdi + 0x18c]
test r10d, r10d
jne 0x1401d5cb5
movzx eax, byte [rbx]
jmp 0x1401d5cf6
test r9d, r9d
jne 0x1401d5cc6
mov eax, dword [rdi + 0x188]
cdq
idiv r10d
jmp 0x1401d5cf6
imul ecx, dword [rdi + 0x188], 0xff
mov r8d, dword [rdi + 0x190]
movzx eax, byte [rbx]
imul eax, r8d
imul r8d, r9d
imul eax, r9d
add eax, ecx
imul ecx, r10d, 0xff
cdq
add r8d, ecx
idiv r8d
mov byte [rbx], al
add rbx, rbp
sub esi, 1
jne 0x1401d5bed
jmp 0x1401d5d53
test esi, esi
je 0x1401d5d53
movsxd rcx, eax
mov al, byte [rdi + 0x180]
mov byte [rbx + 2], al
mov al, byte [rdi + 0x184]
mov byte [rbx + 1], al
mov al, byte [rdi + 0x188]
mov byte [rbx], al
add rbx, rcx
sub esi, 1
jne 0x1401d5d0d
jmp 0x1401d5d53
test esi, esi
je 0x1401d5d53
movsxd r15, eax
mov r9, rbx
mov r8d, ebp
mov edx, r14d
mov rcx, rdi
call fcn.1401d5348
add rbx, r15
inc ebp
sub esi, 1
jne 0x1401d5d38
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret