Function at 0x412550
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rsi, rcx
cmp byte [rcx + 0x71], 0xa7
jne 0x41256c
cmp qword [rsi + 8], 0
je 0x41258c
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x413048
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
jmp qword [0x005f60a0]
mov eax, dword [rsi + 0x28]
test eax, eax
jle 0x4125cf
mov rcx, qword [rsi + 0x20]
shl rax, 5
xor edx, edx
xor ebp, ebp
jmp 0x4125bd
add rbp, 1
add rdx, 0x20
cmp rax, rdx
je 0x4125cf
mov rbx, qword [rcx + rdx + 8]
test rbx, rbx
je 0x4125b0
cmp dword [rbx + 0x18], 0
je 0x4125b0
jmp 0x41256c
mov rcx, rsi
xor edx, edx
call fcn.00447af0
mov rdi, qword [rsi + 0x2d8]
test rdi, rdi
je 0x4126f3
movabs rbx, 0x2f90dff31a46ebb1
jmp 0x41261b
mov rcx, rsi
mov rdx, rdi
call fcn.004297f0
mov rdi, qword [rsi + 0x2d8]
test rdi, rdi
je 0x4126f3
mov rax, qword [rdi + 0x18]
mov qword [rsi + 0x2d8], rax
cmp qword [rsi + 0x300], 0
jne 0x412600
cmp qword [rsi + 0x1f0], rdi
jbe 0x412650
cmp qword [rsi + 0x1e0], rdi
jbe 0x4126b9
cmp qword [rsi + 0x1e8], rdi
jbe 0x4126dd
nop
cmp dword [0x005f6010], 0
je 0x4126cf
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x41266b
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
mov rcx, qword [0x0213b040]
add rcx, rbx
sub rcx, rax
sub rcx, rbx
mov qword [0x0213b040], rcx
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x41260b
call qword [0x005f60a0]
jmp 0x41260b
mov rax, qword [rsi + 0x1d8]
mov qword [rdi], rax
mov qword [rsi + 0x1d8], rdi
jmp 0x41260b
mov rcx, rdi
call qword [0x005f6038]
jmp 0x41260b
mov rax, qword [rsi + 0x1c8]
mov qword [rdi], rax
mov qword [rsi + 0x1c8], rdi
jmp 0x41260b
mov qword [rsi + 0x2e8], 0
mov byte [rsi + 0x6d], 0
cmp dword [rsi + 0x28], 0
mov rdi, qword [rsi + 0x20]
jle 0x4127a6
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x41272e
call fcn.00449380
mov qword [rdi + 8], 0
mov qword [rdi + 0x18], 0
cmp dword [rsi + 0x28], 2
mov rdi, qword [rsi + 0x20]
jl 0x4127a6
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x41274e
call fcn.00449380
mov qword [rdi + 0x28], 0
cmp dword [rsi + 0x28], 3
mov rdi, qword [rsi + 0x20]
jl 0x4127a6
mov ebx, 2
mov ebp, 0x48
jmp 0x412785
add rbx, 1
movsxd rax, dword [rsi + 0x28]
mov rdi, qword [rsi + 0x20]
add rbp, 0x20
cmp rbx, rax
jge 0x4127a6
mov rcx, qword [rdi + rbp]
test rcx, rcx
je 0x412770
call fcn.00449380
mov qword [rdi + rbp], 0
mov qword [rdi + rbp + 0x10], 0
jmp 0x412770
mov rcx, qword [rdi + 0x38]
test rcx, rcx
je 0x4127b4
call fcn.00464bb0
mov rdi, qword [rsi + 0x248]
test rdi, rdi
je 0x412880
mov qword [rsi + 0x248], 0
mov rax, qword [rsi + 8]
test rax, rax
je 0x412833
nop dword [rax]
mov ecx, dword [rax + 0xc8]
mov edx, ecx
not edx
or edx, 2
and edx, 0xd179365a
and ecx, 0x2e86c9a4
or ecx, edx
xor ecx, 0xd179365b
mov dword [rax + 0xc8], ecx
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x4127e0
jmp 0x412833
mov rcx, r14
mov rdx, rdi
call fcn.00408130
mov rdi, rbp
test rbp, rbp
je 0x412880
mov rbp, qword [rdi + 0x28]
mov r14, qword [rdi]
mov eax, dword [rdi + 0x18]
lea ecx, [rax - 1]
mov dword [rdi + 0x18], ecx
cmp eax, 1
jne 0x41282b
mov rbx, qword [rdi + 8]
mov r15, qword [rdi + 0x10]
add dword [rbx + 0x10], 0xffffffff
jne 0x412870
mov rax, qword [rbx + 0x20]
test rax, rax
je 0x412865
mov rcx, qword [rbx + 0x18]
call rax
mov rcx, r14
mov rdx, rbx
call fcn.00408130
test r15, r15
je 0x412820
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x20]
jmp 0x412820
cmp dword [rsi + 0x28], 3
jl 0x412908
mov r14d, 2
mov ebx, 2
mov edi, 0x40
jmp 0x4128b5
add r14d, 1
add rbx, 1
movsxd rax, dword [rsi + 0x28]
add rdi, 0x20
cmp rbx, rax
jge 0x412911
mov rbp, qword [rsi + 0x20]
cmp qword [rbp + rdi + 8], 0
je 0x4128f0
movsxd rax, r14d
cmp rbx, rax
jle 0x4128a0
shl rax, 5
movups xmm0, xmmword [rbp + rdi]
movups xmm1, xmmword [rbp + rdi + 0x10]
movups xmmword [rbp + rax + 0x10], xmm1
movups xmmword [rbp + rax], xmm0
jmp 0x4128a0
mov rdx, qword [rbp + rdi]
mov rcx, rsi
call fcn.00408130
mov qword [rbp + rdi], 0
jmp 0x4128a4
mov dword [rsi + 0x28], 2
jmp 0x41291b
mov dword [rsi + 0x28], r14d
cmp r14d, 2
jg 0x412955
mov rdx, qword [rsi + 0x20]
lea rdi, [rsi + 0x298]
cmp rdx, rdi
je 0x412955
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmm2, xmmword [rdx + 0x20]
movups xmm3, xmmword [rdx + 0x30]
movups xmmword [rdi + 0x30], xmm3
movups xmmword [rdi + 0x20], xmm2
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
mov rcx, rsi
call fcn.00408130
mov qword [rsi + 0x20], rdi
mov rbp, qword [rsi + 0x258]
test rbp, rbp
jne 0x412979
xor ebx, ebx
jmp 0x4129c0
mov rbp, qword [rbp]
test rbp, rbp
je 0x4129b9
mov rdi, qword [rbp + 0x10]
jmp 0x412997
mov rbx, qword [rdi + 0x10]
mov rcx, rsi
mov rdx, rdi
call fcn.00408130
mov rdi, rbx
test rbx, rbx
je 0x412970
mov rbx, qword [rdi + 0x40]
test rbx, rbx
je 0x412980
add dword [rbx], 0xffffffff
jne 0x412980
mov rcx, qword [rbx + 0x10]
call qword [rbx + 8]
mov rcx, rsi
mov rdx, rbx
call fcn.00408130
jmp 0x412980
mov rbx, qword [rsi + 0x258]
mov qword [rsi + 0x258], 0
mov rdi, qword [rsi + 0x260]
test rdi, rdi
je 0x412a69
cmp dword [0x005f6010], 0
je 0x412a60
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x4129f6
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
movabs rcx, 0xcc27552f114488e5
mov rdx, qword [0x0213b040]
add rdx, rcx
sub rdx, rax
sub rdx, rcx
mov qword [0x0213b040], rdx
movabs rax, 0xcbad2ce9f5922e15
mov rcx, rax
not rcx
add rcx, qword [0x0213b088]
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412a69
call qword [0x005f60a0]
jmp 0x412a69
mov rcx, rdi
call qword [0x005f6038]
mov qword [rsi + 0x260], 0
mov dword [rsi + 0x250], 0
jmp 0x412a89
mov rcx, rdi
call qword [0x005f6038]
test rbx, rbx
je 0x412ae6
mov rdi, rbx
mov rbx, qword [rbx]
cmp dword [0x005f6010], 0
je 0x412a80
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412aaf
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412a89
call qword [0x005f60a0]
jmp 0x412a89
mov dword [rsi + 0x254], 0
mov rbx, qword [rsi + 0x270]
test rbx, rbx
jne 0x412b13
xor ebx, ebx
jmp 0x412b4d
mov rcx, rsi
mov rdx, rdi
call fcn.00408130
mov rbx, qword [rbx]
test rbx, rbx
je 0x412b46
mov rdi, qword [rbx + 0x10]
mov rax, qword [rdi + 0x20]
test rax, rax
je 0x412b26
mov rcx, qword [rdi + 0x10]
call rax
mov rax, qword [rdi + 0x48]
test rax, rax
je 0x412b35
mov rcx, qword [rdi + 0x38]
call rax
mov rax, qword [rdi + 0x70]
test rax, rax
je 0x412b00
mov rcx, qword [rdi + 0x60]
call rax
jmp 0x412b00
mov rbx, qword [rsi + 0x270]
mov qword [rsi + 0x270], 0
mov rdi, qword [rsi + 0x278]
test rdi, rdi
je 0x412bd8
cmp dword [0x005f6010], 0
je 0x412bcf
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412b7f
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
movabs rax, 0x42e127cf98bff7e8
mov rcx, rax
not rcx
add rcx, qword [0x0213b088]
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412bd8
call qword [0x005f60a0]
jmp 0x412bd8
mov rcx, rdi
call qword [0x005f6038]
mov qword [rsi + 0x278], 0
mov dword [rsi + 0x268], 0
jmp 0x412bf9
mov rcx, rdi
call qword [0x005f6038]
test rbx, rbx
je 0x412c56
mov rdi, rbx
mov rbx, qword [rbx]
cmp dword [0x005f6010], 0
je 0x412bf0
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412c1f
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412bf9
call qword [0x005f60a0]
jmp 0x412bf9
mov dword [rsi + 0x26c], 0
mov rbx, qword [rsi + 0x228]
test rbx, rbx
jne 0x412c93
xor ebx, ebx
jmp 0x412d04
mov rcx, rsi
mov rdx, rdi
call fcn.00408130
mov rbx, qword [rbx]
test rbx, rbx
je 0x412cfd
mov rdi, qword [rbx + 0x10]
mov rdx, qword [rdi + 0x28]
test rdx, rdx
je 0x412ce6
mov eax, dword [rdx + 0x30]
mov ecx, eax
and ecx, 0x4000
xor eax, 0x4000
or eax, ecx
mov dword [rdx + 0x30], eax
cmp qword [rsi + 0x300], 0
je 0x412cd0
mov rcx, rsi
call fcn.0047f4d0
jmp 0x412cde
mov eax, dword [rdx + 0x2c]
lea ecx, [rax - 1]
mov dword [rdx + 0x2c], ecx
cmp eax, 1
je 0x412cbf
mov qword [rdi + 0x28], 0
add dword [rdi + 0x10], 0xffffffff
jne 0x412c8b
mov rax, qword [rdi + 0x20]
test rax, rax
je 0x412c80
mov rcx, qword [rdi + 0x18]
call rax
jmp 0x412c80
mov rbx, qword [rsi + 0x228]
mov qword [rsi + 0x228], 0
mov rdi, qword [rsi + 0x230]
test rdi, rdi
je 0x412dad
cmp dword [0x005f6010], 0
je 0x412da4
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412d3a
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
movabs rcx, 0x9c58614b087dc115
mov rdx, qword [0x0213b040]
add rdx, rcx
sub rdx, rax
sub rdx, rcx
mov qword [0x0213b040], rdx
movabs rax, 0x452fc70c72133
mov rcx, rax
not rcx
add rcx, qword [0x0213b088]
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412dad
call qword [0x005f60a0]
jmp 0x412dad
mov rcx, rdi
call qword [0x005f6038]
mov qword [rsi + 0x230], 0
mov dword [rsi + 0x220], 0
test rbx, rbx
je 0x412e56
movabs r14, 0x7ae43d8743b4070b
jmp 0x412dee
mov rcx, rdi
call qword [0x005f6038]
test rbx, rbx
je 0x412e56
mov rdi, rbx
mov rbx, qword [rbx]
cmp dword [0x005f6010], 0
je 0x412de0
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412e0f
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
mov rcx, qword [0x0213b040]
cdqe
sub rcx, r14
sub rcx, rax
add rcx, r14
mov qword [0x0213b040], rcx
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412de9
call qword [0x005f60a0]
jmp 0x412de9
mov dword [rsi + 0x224], 0
mov dword [rsi + 0x50], 0
cmp qword [rsi + 0x190], 0
je 0x412eca
mov rcx, rsi
xor edx, edx
call fcn.00430650
mov rdi, qword [rsi + 0x190]
test rdi, rdi
je 0x412ed1
mov eax, dword [rdi + 0x14]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
jne 0x412e9d
cmp dword [rdi + 0x20], 0
je 0x412ea5
mov rcx, rdi
call fcn.00449ce0
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x41308e
cmp qword [rcx + 0x300], 0
je 0x41306b
mov rdx, rdi
call fcn.004297f0
jmp 0x412ed1
mov dword [rsi + 0x54], 0xffffffff
cmp dword [rsi + 0xec], 0
jle 0x412f01
xor edi, edi
mov rcx, qword [rsi]
mov rax, qword [rsi + 0xf0]
mov rdx, qword [rax + rdi*8]
call qword [rcx + 0x60]
add rdi, 1
movsxd rax, dword [rsi + 0xec]
cmp rdi, rax
jl 0x412ee0
mov rdx, qword [rsi + 0xf0]
mov rcx, rsi
call fcn.00408130
mov byte [rsi + 0x71], 0xd5
mov rax, qword [rsi + 0x20]
mov rdx, qword [rax + 0x38]
mov rcx, rsi
call fcn.00408130
mov rax, qword [rsi + 0x150]
test rax, rax
je 0x412f39
mov rcx, qword [rsi + 0x148]
call rax
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x412f69
call qword [0x005f60a0]
mov rcx, qword [rsi + 0x18]
mov byte [rsi + 0x71], 0xce
test rcx, rcx
je 0x412f5b
call qword [0x005f6088]
cmp byte [rsi + 0x1a8], 0
jne 0x412f7a
jmp 0x412ffa
mov byte [rsi + 0x71], 0xce
cmp byte [rsi + 0x1a8], 0
je 0x412ffa
mov rdi, qword [rsi + 0x1e8]
test rdi, rdi
je 0x412ffa
cmp dword [0x005f6010], 0
je 0x412ff1
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412fa1
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
movabs rax, 0x7344c7d8aa7bb4ee
mov rcx, rax
not rcx
add rcx, qword [0x0213b088]
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412ffa
call qword [0x005f60a0]
jmp 0x412ffa
mov rcx, rdi
call qword [0x005f6038]
cmp dword [0x005f6010], 0
je 0x413055
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x413015
call qword [0x005f6090]
mov rcx, rsi
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rsi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
jne 0x412579
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
mov rcx, rsi
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
jmp qword [0x005f6038]
cmp qword [rcx + 0x1f0], rdi
jbe 0x41308e
cmp qword [rcx + 0x1e0], rdi
jbe 0x41312c
cmp qword [rcx + 0x1e8], rdi
jbe 0x413142
cmp dword [0x005f6010], 0
je 0x41311e
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x4130ad
call qword [0x005f6090]
mov rcx, rdi
call qword [0x005f6048]
cdqe
movabs rcx, 0xe68b91d145169373
mov rdx, qword [0x0213b040]
add rdx, rcx
sub rdx, rax
sub rdx, rcx
mov qword [0x0213b040], rdx
movabs rax, 0xa5b1a69839e047d5
mov rcx, rax
not rcx
add rcx, qword [0x0213b088]
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rdi
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x412ed1
call qword [0x005f60a0]
jmp 0x412ed1
mov rcx, rdi
call qword [0x005f6038]
jmp 0x412ed1
mov rax, qword [rcx + 0x1d8]
mov qword [rdi], rax
mov qword [rcx + 0x1d8], rdi
jmp 0x412ed1
mov rax, qword [rcx + 0x1c8]
mov qword [rdi], rax
mov qword [rcx + 0x1c8], rdi
jmp 0x412ed1