Function at 0x74c2c0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
sub rsp, 0x68
mov rbp, rsp
mov qword [rbp + 0x80], rcx
mov dword [rbp + 0x88], edx
mov dword [rbp + 0x90], r8d
mov rax, qword [rbp + 0x80]
mov rax, qword [rax + 0x48]
mov rcx, qword [rbp + 0x80]
mov rcx, qword [rcx + 0x40]
neg rcx
lea rax, [rax + rcx]
movsxd rcx, dword [rbp + 0x88]
cmp rax, rcx
jge 0x74c320
lea rcx, [0x0074c5f4]
lea rdx, [0x0074c680]
mov r8d, 0xf0
call fcn.0040ec80
mov eax, dword [rbp + 0x90]
cmp eax, dword [rbp + 0x88]
je 0x74c359
mov eax, dword [rbp + 0x88]
sub eax, 1
cmp dword [rbp + 0x90], eax
je 0x74c359
lea rcx, [0x0074c6e8]
lea rdx, [0x0074c680]
mov r8d, 0xf2
call fcn.0040ec80
mov rax, qword [rbp + 0x80]
mov rax, qword [rax + 0x40]
mov qword [rbp + 0x30], rax
mov eax, dword [rbp + 0x88]
cmp eax, dword [rbp + 0x90]
jle 0x74c37b
add qword [rbp + 0x30], 1
mov rax, qword [rbp + 0x80]
mov rax, qword [rax + 0x28]
mov qword [rbp + 0x48], rax
mov rax, qword [rbp + 0x80]
mov rax, qword [rax + 0x30]
mov qword [rbp + 0x40], rax
mov rax, qword [rbp + 0x80]
mov eax, dword [rax + 0x38]
mov dword [rbp + 0x3c], eax
xor rax, rax
mov ecx, dword [rbp + 0x90]
sub ecx, 1
mov dword [rbp + 0x5c], eax
cmp dword [rbp + 0x5c], ecx
jg 0x74c41e
add ecx, 1
mov eax, dword [rbp + 0x3c]
shl eax, 5
mov rdx, qword [rbp + 0x30]
movzx rdx, byte [rdx + 2]
xor eax, edx
and eax, 0x3fff
mov dword [rbp + 0x3c], eax
mov rax, qword [rbp + 0x48]
mov rdx, qword [rbp + 0x80]
mov r8d, dword [rbp + 0x30]
and r8d, dword [rdx + 0x94]
movsxd r8, r8d
mov rdx, qword [rbp + 0x40]
movsxd r9, dword [rbp + 0x3c]
mov rdx, qword [rdx + r9*8]
mov qword [rax + r8*8], rdx
mov rax, qword [rbp + 0x40]
movsxd rdx, dword [rbp + 0x3c]
mov r8, qword [rbp + 0x30]
mov qword [rax + rdx*8], r8
add qword [rbp + 0x30], 1
add dword [rbp + 0x5c], 1
cmp dword [rbp + 0x5c], ecx
jne 0x74c3bd
nop
mov rax, qword [rbp + 0x80]
mov rcx, qword [rbp + 0x48]
mov qword [rax + 0x28], rcx
mov rax, qword [rbp + 0x80]
mov rcx, qword [rbp + 0x40]
mov qword [rax + 0x30], rcx
mov rax, qword [rbp + 0x80]
mov ecx, dword [rbp + 0x3c]
mov dword [rax + 0x38], ecx
mov rax, qword [rbp + 0x80]
mov rcx, qword [rbp + 0x30]
mov qword [rax + 0x40], rcx
mov rax, qword [rbp + 0x80]
cmp byte [rax + 8], 0
je 0x74c4c9
mov rax, qword [rbp + 0x80]
lea rax, [rax + 0x70]
movsxd rcx, dword [rbp + 0x88]
add qword [rax], rcx
mov rax, qword [rbp + 0x80]
lea rax, [rax + 0x78]
mov ecx, dword [rbp + 0x88]
add dword [rax], ecx
mov rax, qword [rbp + 0x80]
cmp byte [rax + 0x54], 0
je 0x74c53c
mov rax, qword [rbp + 0x80]
mov rcx, qword [rbp + 0x80]
mov rax, qword [rax + 0x70]
cmp rax, qword [rcx + 0x68]
jb 0x74c53c
mov rcx, qword [rbp + 0x80]
call fcn.0074cd50
jmp 0x74c53c
mov rax, qword [rbp + 0x30]
mov rcx, qword [rbp + 0x80]
mov rcx, qword [rcx + 0x70]
neg rcx
lea rax, [rax + rcx]
mov rcx, qword [rbp + 0x80]
movsxd rcx, dword [rcx + 0x98]
cmp rax, rcx
jl 0x74c53c
mov rax, qword [rbp + 0x80]
mov byte [rax + 8], 1
mov rax, qword [rbp + 0x80]
mov ecx, dword [rbp + 0x30]
sub ecx, dword [rax + 0x98]
mov rax, qword [rbp + 0x80]
sub ecx, dword [rax + 0x70]
mov dword [rbp + 0x58], ecx
mov rax, qword [rbp + 0x80]
lea rax, [rax + 0x70]
movsxd rcx, dword [rbp + 0x58]
add qword [rax], rcx
mov rax, qword [rbp + 0x80]
lea rax, [rax + 0x78]
mov ecx, dword [rbp + 0x58]
add dword [rax], ecx
mov rax, qword [rbp + 0x80]
cmp qword [rax + 0x58], 0
je 0x74c5b3
mov rax, qword [rbp + 0x80]
lea rax, [rax + 0x20]
mov ecx, dword [rbp + 0x88]
add dword [rax], ecx
mov rax, qword [rbp + 0x80]
mov eax, dword [rax + 0x20]
test eax, 0xfff
jne 0x74c5b3
mov rax, qword [rbp + 0x80]
cvtsi2sd xmm0, dword [rax + 0x20]
mulsd xmm0, qword [0x0074c5e0]
mov rax, qword [rbp + 0x80]
cvtsi2sd xmm1, qword [rax + 0x88]
divsd xmm0, xmm1
call fcn.0040a2a0
mov dword [rbp + 0x54], eax
mov rax, qword [rbp + 0x80]
lea rbx, [rax + 0x58]
mov rcx, qword [rbx + 8]
mov edx, dword [rbp + 0x54]
call qword [rbx]
mov rax, qword [rbp + 0x80]
mov rcx, qword [rbp + 0x80]
mov rax, qword [rax + 0x70]
cmp rax, qword [rcx + 0x68]
jb 0x74c5d7
mov rcx, qword [rbp + 0x80]
call fcn.0074cd50
lea rsp, [rbp + 0x68]
pop rbx
pop rbp
ret