Function at 0x140046c20
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push rdi
push r14
push r15
sub rsp, 0x50
mov qword [rax - 0x48], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov rdi, r8
mov rbp, rdx
mov r14, rcx
xor r15d, r15d
mov qword [rax - 0x40], r15
mov qword [rax - 0x38], r15
mov qword [rax - 0x30], r15
mov qword [rax - 0x28], r15
mov cl, 1
call fcn.14001ce70
mov qword [rsp + 0x40], rax
lea edx, [r15 + 0x10]
lea rcx, [rsp + 0x28]
call fcn.1400bf090
nop
mov ebx, r15d
mov rsi, qword [rsp + 0x28]
test rdi, rdi
je 0x140046caf
nop dword [rax]
nop dword [rax + rax]
mov rax, rbx
shr rax, 3
lea rcx, [rsi + rax*4]
mov r8, rbx
movzx edx, byte [rbx + rbp]
call fcn.1400475c0
inc rbx
cmp rbx, rdi
jne 0x140046c90
cmp rdi, 0x10
jne 0x140046ee4
mov r11, r15
mov ebx, 0x800
lea rax, [0x140000000]
nop dword [rax + rax]
movzx r10d, byte [r11 + rax + 0x2ff1a0]
movzx ecx, byte [rsi]
xor rcx, r10
movzx r8d, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 4]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2f3720]
mov dword [rdx + rbx - 0x800], ecx
movzx r9d, byte [r11 + rax + 0x2efb20]
movzx ecx, byte [rsi + 1]
xor rcx, r9
movzx r8d, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 5]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2ec4f0]
mov dword [rdx + rbx - 0x400], ecx
movzx ecx, byte [rsi + 2]
xor rcx, r10
movzx r8d, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 6]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2ff2a0]
mov dword [rbx + rdx], ecx
movzx ecx, byte [rsi + 3]
xor rcx, r9
movzx r8d, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 7]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2fc760]
mov dword [rdx + rbx + 0x400], ecx
lea r11, [r11 + 1]
add rbx, 4
cmp rbx, 0xc00
jne 0x140046cd0
nop word [rax + rax]
movzx r10d, byte [r15 + rax + 0x2efb21]
movzx r9d, byte [r15 + rax + 0x2ff1a1]
movzx ecx, byte [rbp + 0xd]
xor rcx, r10
movzx r8d, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 5]
xor r8, rcx
movzx ecx, byte [rbp + 0xe]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 6]
xor rdx, rcx
mov ebx, dword [rax + r8*4 + 0x2ec4f0]
xor ebx, dword [rax + rdx*4 + 0x2ff2a0]
movzx ecx, byte [rbp + 0xc]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 4]
xor rdx, rcx
xor ebx, dword [rax + rdx*4 + 0x2f3720]
movzx ecx, byte [rbp + 0xf]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 7]
xor rdx, rcx
xor ebx, dword [rax + rdx*4 + 0x2fc760]
rol ebx, 8
movzx r11d, byte [r15 + rax + 0x2efb20]
movzx r9d, byte [r15 + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xa]
xor rcx, r9
movzx r8d, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 2]
xor r8, rcx
movzx ecx, byte [rbp + 0xb]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 3]
xor rdx, rcx
mov r10d, dword [rax + r8*4 + 0x2ff2a0]
xor r10d, dword [rax + rdx*4 + 0x2fc760]
movzx ecx, byte [rbp + 8]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp]
xor rdx, rcx
xor r10d, dword [rax + rdx*4 + 0x2f3720]
movzx ecx, byte [rbp + 9]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 1]
xor rdx, rcx
xor r10d, dword [rax + rdx*4 + 0x2ec4f0]
add r10d, ebx
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4], r10d
lea edx, [rbx + r10]
rol edx, 9
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4 + 4], edx
add r15, 2
cmp r15, 0x28
jne 0x140046da0
jmp 0x140047573
cmp rdi, 0x18
jne 0x1400471cb
mov r10, r15
mov ebx, 0x800
lea rax, [0x140000000]
nop dword [rax]
movzx r9d, byte [r10 + rax + 0x2efb20]
movzx ecx, byte [rsi]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 4]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 8]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2f3720]
mov dword [rbx + rdx - 0x800], ecx
movzx ecx, byte [rsi + 1]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 5]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 9]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2ec4f0]
mov dword [rbx + rdx - 0x400], ecx
movzx r9d, byte [r10 + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 2]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 6]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rsi + 0xa]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2ff2a0]
mov dword [rbx + rdx], ecx
movzx ecx, byte [rsi + 3]
xor rcx, r9
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 7]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rsi + 0xb]
xor r8, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r8*4 + 0x2fc760]
mov dword [rbx + rdx + 0x400], ecx
lea r10, [r10 + 1]
add rbx, 4
cmp rbx, 0xc00
jne 0x140046f00
movzx r8d, byte [r15 + rax + 0x2ff1a1]
movzx r10d, byte [r15 + rax + 0x2efb21]
movzx ecx, byte [rbp + 0x16]
xor rcx, r8
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xe]
xor rdx, rcx
movzx r9d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 6]
xor r9, rcx
movzx ecx, byte [rbp + 0x17]
xor rcx, r8
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xf]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 7]
xor r8, rcx
mov ebx, dword [rax + r9*4 + 0x2ff2a0]
xor ebx, dword [rax + r8*4 + 0x2fc760]
movzx ecx, byte [rbp + 0x15]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xd]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 5]
xor r8, rcx
xor ebx, dword [rax + r8*4 + 0x2ec4f0]
movzx ecx, byte [rbp + 0x14]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xc]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 4]
xor r8, rcx
xor ebx, dword [rax + r8*4 + 0x2f3720]
rol ebx, 8
movzx r8d, byte [r15 + rax + 0x2ff1a0]
movzx r11d, byte [r15 + rax + 0x2efb20]
movzx ecx, byte [rbp + 0x12]
xor rcx, r8
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xa]
xor rdx, rcx
movzx r9d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 2]
xor r9, rcx
movzx ecx, byte [rbp + 0x13]
xor rcx, r8
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xb]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 3]
xor r8, rcx
mov r10d, dword [rax + r9*4 + 0x2ff2a0]
xor r10d, dword [rax + r8*4 + 0x2fc760]
movzx ecx, byte [rbp + 0x11]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 9]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 1]
xor r8, rcx
xor r10d, dword [rax + r8*4 + 0x2ec4f0]
movzx ecx, byte [rbp + 0x10]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 8]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp]
xor r8, rcx
xor r10d, dword [rax + r8*4 + 0x2f3720]
add r10d, ebx
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4], r10d
lea edx, [rbx + r10]
rol edx, 9
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4 + 4], edx
add r15, 2
cmp r15, 0x28
jne 0x140047006
jmp 0x140047573
cmp rdi, 0x20
jne 0x140047573
mov rdi, r15
mov ebx, 0x800
lea rax, [0x140000000]
nop dword [rax]
nop dword [rax + rax]
movzx r11d, byte [rdi + rax + 0x2efb20]
movzx ecx, byte [rsi]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 4]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 8]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 0xc]
xor r9, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r9*4 + 0x2f3720]
mov dword [rdx + rbx - 0x800], ecx
movzx r10d, byte [rdi + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 1]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rsi + 5]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rsi + 9]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 0xd]
xor r9, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r9*4 + 0x2ec4f0]
mov dword [rdx + rbx - 0x400], ecx
movzx ecx, byte [rsi + 2]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 6]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 0xa]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rsi + 0xe]
xor r9, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r9*4 + 0x2ff2a0]
mov dword [rbx + rdx], ecx
movzx ecx, byte [rsi + 3]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rsi + 7]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rsi + 0xb]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rsi + 0xf]
xor r9, rcx
mov rdx, qword [r14 + 8]
mov ecx, dword [rax + r9*4 + 0x2fc760]
mov dword [rdx + rbx + 0x400], ecx
lea rdi, [rdi + 1]
add rbx, 4
cmp rbx, 0xc00
jne 0x1400471f0
movzx r10d, byte [r15 + rax + 0x2efb21]
movzx r11d, byte [r15 + rax + 0x2ff1a1]
movzx ecx, byte [rbp + 0x1e]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0x16]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xe]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rbp + 6]
xor r9, rcx
movzx ecx, byte [rbp + 0x1f]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0x17]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xf]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rbp + 7]
xor rdx, rcx
mov edi, dword [rax + r9*4 + 0x2ff2a0]
xor edi, dword [rax + rdx*4 + 0x2fc760]
movzx ecx, byte [rbp + 0x1c]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0x14]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xc]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 4]
xor rdx, rcx
xor edi, dword [rax + rdx*4 + 0x2f3720]
movzx ecx, byte [rbp + 0x1d]
xor rcx, r11
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0x15]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xd]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 5]
xor rdx, rcx
xor edi, dword [rax + rdx*4 + 0x2ec4f0]
rol edi, 8
movzx ebx, byte [r15 + rax + 0x2efb20]
movzx r10d, byte [r15 + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0x19]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0x11]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 9]
xor r8, rcx
movzx r9d, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 1]
xor r9, rcx
movzx ecx, byte [rbp + 0x18]
xor rcx, rbx
movzx edx, byte [rcx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0x10]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 8]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2ff1a0]
movzx ecx, byte [rbp]
xor rdx, rcx
mov r11d, dword [rax + r9*4 + 0x2ec4f0]
xor r11d, dword [rax + rdx*4 + 0x2f3720]
movzx ecx, byte [rbp + 0x1a]
xor rcx, r10
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0x12]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0xa]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rbp + 2]
xor rdx, rcx
xor r11d, dword [rax + rdx*4 + 0x2ff2a0]
movzx ecx, byte [rbp + 0x1b]
xor rcx, rbx
movzx edx, byte [rcx + rax + 0x2ff1a0]
movzx ecx, byte [rbp + 0x13]
xor rdx, rcx
movzx r8d, byte [rdx + rax + 0x2efb20]
movzx ecx, byte [rbp + 0xb]
xor r8, rcx
movzx edx, byte [r8 + rax + 0x2efb20]
movzx ecx, byte [rbp + 3]
xor rdx, rcx
xor r11d, dword [rax + rdx*4 + 0x2fc760]
add r11d, edi
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4], r11d
lea edx, [rdi + r11]
rol edx, 9
mov rcx, qword [r14 + 0x28]
mov dword [rcx + r15*4 + 4], edx
add r15, 2
cmp r15, 0x28
jne 0x140047336
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140047595
test rsi, rsi
je 0x140047595
mov r8, qword [rsp + 0x38]
test r8, r8
je 0x140047595
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + 8]
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x80]
add rsp, 0x50
pop r15
pop r14
pop rdi
ret