Function at 0x100121828
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov rdx, qword [rsp + 0xd0]
mov r12, qword [rsp + 0xd8]
mov rdi, qword [rsp + 0xe0]
mov rbx, qword [rdx]
mov r14, rcx
mov r13d, r9d
mov rcx, qword [rbx]
mov r9, r8
xor r8d, r8d
cmp dword [rbx + 0x28], 2
lea r10, [r14 + rcx*4]
lea rax, [r9 + rcx*4]
setge r8b
test r12, r12
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x58], rax
mov esi, 1
mov dword [rsp + 0x40], 0
mov dword [rsp + 0xb0], r8d
mov qword [rsp + 0x50], rcx
jne 0x1001218e7
lea rcx, [rcx + rcx*2]
mov r8, rdi
add rcx, qword [rdx + 0x40]
xor edx, edx
shl rcx, 2
call fcn.100121320
test rax, rax
mov r12, rax
je 0x100121a21
mov rax, qword [rsp + 0x50]
mov r8d, dword [rsp + 0xb0]
mov dword [rsp + 0x40], esi
lea rbp, [r12 + rax*4]
lea r15, [rbp + rax*4]
lea rcx, [r15 + rax*4]
jmp 0x1001218f4
lea rbp, [r12 + rcx*4]
lea r15, [rbp + rcx*4]
lea rcx, [r15 + rcx*4]
cmp dword [rbx + 0x28], esi
mov qword [rsp + 0xd8], rcx
je 0x100121906
test r8d, r8d
je 0x100121911
cmp r13d, esi
je 0x100121925
cmp r13d, 0xffffffff
je 0x100121925
xor esi, esi
lea rdx, [0x1000224e8]
mov r8, rdi
lea ecx, [rsi + 5]
call fcn.1001254d8
mov rdx, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0xb8]
mov r8, rdi
call fcn.1001213e8
test eax, eax
je 0x100121981
test esi, esi
je 0x100121a09
mov rcx, r14
mov rax, qword [rsp + 0xd0]
mov rdx, qword [rsp + 0xc0]
mov r8d, 2
mov r9, qword [rax]
mov qword [rsp + 0x20], rdi
call fcn.100125c1c
test eax, eax
je 0x100121a09
mov ebx, 1
jmp 0x100121a0b
mov rdx, qword [rsp + 0xd0]
mov r8, rdi
mov rcx, r14
call fcn.1001213e8
test eax, eax
je 0x1001219d2
cmp r13d, 1
jne 0x1001219ac
test esi, esi
je 0x100121a09
mov rcx, qword [rsp + 0xb8]
jmp 0x10012194c
test esi, esi
je 0x100121a09
mov r8, qword [rsp + 0xd0]
mov rdx, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xb8]
mov r9, rdi
call fcn.100121470
jmp 0x10012196f
cmp r13d, 0xffffffff
jne 0x100121a32
test esi, esi
je 0x100121a09
mov rax, qword [rsp + 0xb8]
mov rsi, qword [rsp + 0x50]
lea r8d, [r13 + 2]
lea rcx, [rax + rsi*4]
mov r9, rbx
mov rdx, rbp
mov qword [rsp + 0x20], rdi
call fcn.100125c1c
test eax, eax
jne 0x100121aad
xor ebx, ebx
cmp dword [rsp + 0x40], 0
je 0x100121a1f
mov r8, rdi
xor edx, edx
mov rcx, r12
call fcn.10012135c
mov eax, ebx
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov r13d, dword [rsp + 0xb0]
test r13d, r13d
je 0x100121a76
test esi, esi
je 0x100121a09
mov r10, qword [rsp + 0xb8]
mov rsi, qword [rsp + 0x50]
mov rax, qword [rbx + 0x40]
lea rdx, [r10 + rsi*4]
mov r9d, 1
mov r8, rbp
mov rcx, r10
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
jne 0x100121ab5
jmp 0x100121a09
test esi, esi
je 0x100121a09
mov r10, qword [rsp + 0xb8]
mov rsi, qword [rsp + 0x50]
mov rax, qword [rbx + 0x40]
lea rcx, [r10 + rsi*4]
mov r9, rbx
mov r8d, 1
mov rdx, rbp
mov qword [rsp + 0x20], rdi
call qword [rax + 0x40]
test eax, eax
je 0x100121a09
jmp 0x100121ab5
mov r13d, dword [rsp + 0xb0]
mov rax, qword [rbx + 0x40]
mov rdx, qword [rsp + 0xb8]
mov r9, rbx
mov r8d, 1
mov rcx, r14
mov qword [rsp + 0x20], rdi
call qword [rax + 8]
mov rcx, qword [rsp + 0x48]
mov rdx, rbp
test eax, eax
mov rax, qword [rbx + 0x40]
je 0x100121d9a
mov r9, rbx
mov r8d, 1
mov qword [rsp + 0x20], rdi
call qword [rax + 8]
test eax, eax
je 0x100121b22
mov rdx, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0xc0]
mov r8, rdi
call fcn.1001217b0
xor ebx, ebx
test eax, eax
setne bl
jmp 0x100121a0b
test r13d, r13d
je 0x100121c6f
lea r13, [r15 + rsi*4]
mov r8, rbx
mov rdx, r12
mov rcx, r14
mov r9, r13
mov qword [rsp + 0x20], rdi
call fcn.10012820c
test eax, eax
je 0x100121a09
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, r12
mov rdx, r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, r12
mov rdx, r12
mov rcx, r14
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
je 0x100121a09
cmp dword [rsp + 0xb0], 0
je 0x100121ec4
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, rbp
mov rdx, r12
mov rcx, r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
xor r10d, r10d
test eax, eax
setne r10b
xor r11d, r11d
test rsi, rsi
je 0x100121c31
mov r13, qword [rsp + 0xb8]
mov rdi, qword [rsp + 0xd0]
mov r8, r12
sub r8, r13
sub r13, rbp
mov r9, rbp
mov rax, qword [rdi + 8]
lea rdx, [r13 + r9]
mov ecx, dword [rax + r11*4]
add r11, 1
xor ecx, dword [rdx + r8]
xor ecx, dword [r9]
xor ecx, dword [rdx]
mov dword [r9], ecx
add r9, 4
cmp r11, rsi
jne 0x100121bff
mov rdi, qword [rsp + 0xe0]
lea r13, [r15 + rsi*4]
test r10d, r10d
je 0x100121e68
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, r15
mov rdx, rbp
mov rcx, r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
je 0x100121e68
mov ebx, 1
jmp 0x100121e6a
mov rsi, qword [rsp + 0x48]
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, rbp
mov rdx, rsi
mov rcx, rsi
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
je 0x100121a09
mov r13, qword [rsp + 0xd8]
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, r12
mov rdx, r14
mov rcx, r14
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
je 0x100121a09
mov rdx, qword [rsp + 0xd0]
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov rdx, qword [rdx + 8]
mov r8, r15
mov rcx, r12
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, r15
mov rdx, r15
mov rcx, r12
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, r15
mov rdx, r15
mov rcx, r12
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
je 0x100121a09
mov r9, r13
mov r8, rbx
mov rdx, r12
mov rcx, rbp
mov qword [rsp + 0x20], rdi
call fcn.10012820c
test eax, eax
je 0x100121a09
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, r12
mov rdx, r12
mov rcx, r15
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
jne 0x100121ec9
jmp 0x100121a09
mov r9d, 1
mov r8, r15
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
xor ecx, ecx
test eax, eax
setne cl
test r13d, r13d
je 0x100121de9
test ecx, ecx
je 0x100121de7
mov rax, qword [rbx + 0x40]
mov rdx, qword [rsp + 0xb8]
mov r9d, 1
mov r8, r15
mov rcx, r15
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax]
test eax, eax
jne 0x100121df1
xor ecx, ecx
test ecx, ecx
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov rdx, qword [rsp + 0xb8]
mov r9d, 1
mov r8, rbp
mov rcx, r14
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax + 0x58]
test eax, eax
je 0x100121a09
lea r13, [r15 + rsi*4]
mov r8, rbx
mov rdx, r12
mov rcx, rbp
mov r9, r13
mov qword [rsp + 0x20], rdi
call fcn.10012820c
test eax, eax
je 0x100121a09
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, r12
mov rdx, r12
mov rcx, r15
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
jmp 0x100121b99
xor ebx, ebx
test rsi, rsi
je 0x100121a0b
mov rdi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
mov rdx, qword [rsp + 0xc0]
sub rdi, r14
sub r8, r14
sub rbp, r14
sub r15, r14
sub rdx, r14
mov ecx, dword [r14 + rbp]
mov eax, dword [r14 + rdi]
xor ecx, dword [r14]
xor eax, dword [r14 + r15]
xor eax, ecx
mov dword [r14 + r8], eax
mov dword [r14 + rdx], ecx
add r14, 4
sub rsi, 1
jne 0x100121e94
mov rdi, qword [rsp + 0xe0]
jmp 0x100121a0b
mov rsi, qword [rsp + 0x48]
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov r8, rbp
mov rdx, r12
mov rcx, r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, rbp
mov rdx, r14
mov rcx, rbp
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax + 0x58]
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov rdx, qword [rsp + 0xb8]
mov r9d, 1
mov r8, rbp
mov rcx, rbp
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax + 0x58]
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r9d, 1
mov r8, r15
mov rdx, rbp
mov rcx, r14
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax + 0x58]
test eax, eax
je 0x100121a09
mov rdx, qword [rsp + 0xc0]
mov r14d, 1
mov r9, rbx
mov rcx, rbp
mov r8, r14
mov qword [rsp + 0x20], rdi
call fcn.100125c1c
test eax, eax
je 0x100121a09
mov qword [rsp + 0x30], rdi
mov r9, r14
mov r8, rbp
mov rdx, r15
mov rcx, r12
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rbx
call fcn.100125c40
test eax, eax
je 0x100121a09
mov rax, qword [rbx + 0x40]
mov r8, qword [rsp + 0x58]
mov r9, r14
mov rdx, rsi
mov rcx, rbp
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rbx
call qword [rax + 0x58]
test eax, eax
je 0x100121a09
mov ebx, r14d
jmp 0x100121a0b