Function at 0x140312850
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x108
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x80], 0xfffffffffffffffe
mov qword [rbp + 0x70], r8
mov rbx, rdx
mov r15, qword [rbp + 0x100]
mov rdi, qword [rbp + 0xf8]
mov eax, dword [rbp + 0xf0]
and eax, 0xf
cmp eax, 3
jbe case.default.0x1403128b1
add eax, 0xfffffffc
mov rsi, r9
lea rcx, [0x1405f8c98]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rcx, [rbp + 0x50]
call fcn.140095670
mov rsi, qword [0x140790210]
cmp qword [0x1407901f8], 0
jne 0x140312901
lea rcx, [rbp - 0x20]
call fcn.140095670
cmp qword [0x1407901f8], 0
jne 0x1403128f8
nop
movsxd rax, dword [0x140793a78]
inc rax
mov dword [0x140793a78], eax
mov qword [0x1407901f8], rax
lea rcx, [rbp - 0x20]
call fcn.140095690
nop
mov rdi, qword [0x1407901f8]
mov rax, qword [rbx + 8]
cmp qword [rax + 0x18], rdi
jbe 0x140312925
nop
mov rcx, qword [rax + 0x10]
mov rcx, qword [rcx + rdi*8]
test rcx, rcx
jne 0x14031318e
nop
cmp byte [rax + 0x24], 0
je 0x14031294a
call fcn.1400956a0
nop
cmp qword [rax + 0x18], rdi
jbe 0x14031294a
nop
mov rax, qword [rax + 0x10]
mov rcx, qword [rax + rdi*8]
test rcx, rcx
jne 0x14031318e
mov rcx, rsi
test rsi, rsi
jne 0x14031318e
mov ecx, 0x10
call fcn.1400954c0
nop
mov rdx, qword [rbx + 8]
test rdx, rdx
nop
mov qword [rbp + 0x78], rax
je 0x140313129
nop
mov rax, qword [rdx + 0x28]
add rdx, 0x30
test rax, rax
cmovne rdx, rax
jmp 0x140313130
test eax, eax
je 0x140312a5f
cmp eax, 1
je 0x1403129e5
mov r14, rcx
cmp eax, 3
jne 0x140312ad3
test rdi, rdi
je 0x14031311e
nop
cmp qword [rdi], 0
jne 0x14031311e
mov ecx, 0x30
call fcn.1400954c0
mov qword [rbp + 0x78], rax
mov rdx, qword [r14 + 8]
test rdx, rdx
je 0x1403130b9
nop
mov rax, qword [rdx + 0x28]
add rdx, 0x30
test rax, rax
cmovne rdx, rax
jmp 0x1403130c0
nop
mov rsi, qword [rbp + 0x70]
mov rcx, rsi
call fcn.140095670
mov qword [rsi + 8], 0
mov byte [rsi + 0x10], 0
mov qword [rsi + 0x18], 0
mov byte [rsi + 0x20], 0
mov qword [rsi + 0x28], 0
mov word [rsi + 0x30], 0
mov qword [rsi + 0x38], 0
mov word [rsi + 0x40], 0
mov qword [rsi + 0x48], 0
mov byte [rsi + 0x50], 0
mov qword [rsi + 0x58], 0
mov byte [rsi + 0x60], 0
test rbx, rbx
je 0x1403131c3
mov rcx, rsi
mov rdx, rbx
call fcn.1400956b0
mov rax, qword [rbp + 0x70]
mov qword [rbp + 0x78], rax
jmp 0x14031319c
nop
mov rax, qword [r15]
movsxd rax, dword [rax + 4]
cmp dword [r15 + rax + 0x10], 0
jne 0x140312d64
nop
test byte [r15 + rax + 0x18], 2
je 0x140312d64
nop
mov esi, dword [0x140745c74]
mov rcx, qword [r15 + rax + 0x48]
mov rax, qword [rcx]
mov rax, qword [rax + 0x68]
nop
call qword [0x140704440]
cmp eax, 0xffffffff
jne 0x140312d64
nop
mov rax, qword [r15]
movsxd rax, dword [rax + 4]
mov ebx, dword [r15 + rax + 0x10]
and ebx, 0x13
or ebx, 4
mov dword [r15 + rax + 0x10], ebx
mov edi, dword [r15 + rax + 0x14]
and ebx, edi
jne 0x1403133b2
xor eax, eax
mov qword [rbp + 0x78], rax
jmp 0x14031319c
xorps xmm0, xmm0
movaps xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], 0
test r15, r15
je 0x140312eff
js 0x14031321e
cmp r15, 0x1000
jb 0x140312ed3
lea rcx, [r15 + 0x27]
call fcn.1400954c0
lea rcx, [rax + 0x27]
and rcx, 0xffffffffffffffe0
mov qword [rcx - 8], rax
jmp 0x140312ede
nop
mov r14, qword [r15 + 0x10]
movabs r12, 0x7fffffffffffffff
mov rax, r14
xor rax, r12
cmp rax, rdi
jb 0x1403131ee
add rdi, r14
mov r13, qword [r15 + 0x18]
movabs rcx, 0x8000000000000000
js 0x140312bc5
mov rax, r13
shr rax, 1
mov rdx, rax
xor rdx, r12
cmp rdx, r13
jb 0x140312bc5
mov rcx, rdi
or rcx, 0xf
add rax, r13
cmp rcx, rax
mov r12, rax
cmova r12, rcx
lea rcx, [r12 + 1]
cmp rcx, 0x1000
jb 0x1403130a3
cmp rcx, 0xffffffffffffffd9
jae 0x1403133ad
add rcx, 0x27
call fcn.1400954c0
lea r15, [rax + 0x27]
and r15, 0xffffffffffffffe0
mov qword [r15 - 8], rax
nop
mov rax, qword [rbp + 0x100]
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], r12
mov r12, rax
cmp r13, 0x10
jb 0x140312e7e
nop
mov rdi, qword [r12]
mov rcx, rdi
mov edx, 0x732664a9
mov r8, r15
mov r9, rbx
call fcn.140315e60
lea r12, [r15 + rbx]
mov rcx, r12
mov edx, esi
mov rsi, qword [rbp + 0x70]
mov r8, rsi
call fcn.1405c44a0
sub r14, rbx
inc r14
add rbx, rdi
add r12, rsi
mov rcx, rbx
mov edx, 0x732664a9
mov r8, r12
mov r9, r14
call fcn.140315e60
lea rdx, [r13 + 1]
cmp rdx, 0x1000
jb 0x140312c70
nop
mov rax, qword [rdi - 8]
add rdi, 0xfffffffffffffff8
sub rdi, rax
cmp rdi, 0x20
jae 0x140313475
add r13, 0x28
mov rdx, r13
mov rdi, rax
mov r12, qword [rbp + 0x100]
mov rcx, rdi
call fcn.140095520
jmp 0x140312ec5
nop
mov edi, dword [0x140745c74]
xorps xmm0, xmm0
movups xmmword [r15 + 8], xmm0
mov dword [r15 + 0x18], 0x201
mov qword [r15 + 0x20], 6
movups xmmword [r15 + 0x38], xmm0
movups xmmword [r15 + 0x28], xmm0
mov ecx, 0x10
call fcn.1400954c0
mov rbx, rax
call fcn.140095660
nop
mov qword [rbx + 8], rax
mov qword [r15 + 0x40], rbx
mov rcx, qword [rbp + 0x70]
mov qword [r15 + 0x48], rcx
mov qword [r15 + 0x50], 0
mov qword [rbp - 0x18], rax
mov rcx, qword [rax]
mov rdx, qword [rcx + 8]
mov rcx, rax
mov rax, rdx
call qword [0x140704440]
lea rcx, [rbp - 0x20]
mov r8d, 0x909bfa93
call fcn.14030fa70
nop
mov rcx, qword [rax]
mov r8, qword [rcx + 0x40]
mov rcx, rax
mov dl, 0x20
mov rax, r8
call qword [0x140704440]
mov ebx, eax
mov rcx, qword [rbp - 0x18]
test rcx, rcx
je 0x140312d4a
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [0x140704440]
test rax, rax
je 0x140312d4a
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [0x140704440]
nop
mov byte [r15 + 0x58], bl
cmp qword [r15 + 0x48], 0
je 0x140312f69
test sil, 1
jne 0x140312f91
xor eax, eax
mov qword [rbp + 0x78], rax
jmp 0x14031319c
movabs rax, 0x666666666666666
cmp qword [r15 + 8], rax
je 0x1403131f3
nop
mov qword [rsp + 0x28], rsi
lea rax, [rbp - 0x20]
mov qword [rsp + 0x20], rax
mov rdx, r15
mov r8d, 0xfd715636
call fcn.14030fa70
inc qword [r15 + 8]
mov rax, qword [rbx + 8]
mov rcx, qword [rbp - 0x18]
mov qword [rcx], rbx
mov rcx, qword [rbp - 0x18]
mov qword [rcx + 8], rax
mov rdi, qword [rbp - 0x18]
mov qword [rbp - 0x18], 0
mov qword [rbx + 8], rdi
mov qword [rax], rdi
mov rsi, qword [rbp - 0x18]
test rsi, rsi
je 0x140312e36
nop
mov rcx, qword [rsi + 0x10]
test rcx, rcx
je 0x140312e22
nop
mov rdx, qword [rsi + 0x20]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x140312e0b
nop
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14031347a
add rdx, 0x27
mov rcx, rax
add rsi, 0x10
call fcn.140095520
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], 0
nop
mov rcx, qword [rbp - 0x18]
test rcx, rcx
je 0x140312e36
mov edx, 0x28
call fcn.140095520
nop
mov qword [rbp + 0x78], rdi
jmp 0x14031319c
mov rcx, r12
mov edx, 0x732664a9
mov r8, r15
mov r9, rbx
call fcn.140315e60
lea rdi, [r15 + rbx]
mov rcx, rdi
mov edx, esi
mov rsi, qword [rbp + 0x70]
mov r8, rsi
call fcn.1405c44a0
sub r14, rbx
inc r14
add rbx, r12
add rdi, rsi
mov rcx, rbx
mov edx, 0x732664a9
mov r8, rdi
mov r9, r14
call fcn.140315e60
nop
mov qword [rbp + 0x78], r12
mov qword [r12], r15
jmp 0x14031319c
mov rcx, r15
call fcn.1400954c0
mov rcx, rax
nop
mov qword [rbp - 0x20], rcx
lea rsi, [rcx + r15]
mov qword [rbp - 0x10], rsi
mov edx, 0x4d5d6747
mov r8, r14
mov r9, r15
call fcn.140315e60
mov qword [rbp - 0x18], rsi
nop
mov rax, qword [rdi]
lea rcx, [rbp - 0x20]
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x20], 0xf2520f35
call fcn.1403138c0
mov rsi, rax
mov rcx, qword [rbp - 0x20]
test rcx, rcx
je 0x140312f5d
nop
mov rdx, qword [rbp - 0x10]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x140312f58
nop
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14031346b
add rdx, 0x27
mov rcx, rax
call fcn.140095520
and esi, 1
mov qword [rbp + 0x78], rsi
jmp 0x14031319c
nop
mov r14d, dword [r15 + 0x10]
and r14d, 0x13
or r14d, 4
mov dword [r15 + 0x10], r14d
mov ebx, dword [r15 + 0x14]
and r14d, ebx
jne 0x140313223
test sil, 1
je 0x140312d64
mov rcx, r15
call fcn.140095610
xor eax, eax
mov qword [rbp + 0x78], rax
jmp 0x14031319c
test rcx, rcx
je 0x1403131b4
call fcn.1400954c0
mov r15, rax
jmp 0x140312bda
lea rdx, [0x1405e824c]
nop
mov dword [rsp + 0x20], 0xaea0f7a1
lea r8, [rbp - 0x20]
call fcn.140312850
nop
mov rsi, qword [rbp + 0x78]
mov dword [rsi + 8], 0
lea rax, [0x1405e8a58]
mov qword [rsi], rax
lea rcx, [rbp + 0x50]
call fcn.140095700
mov r8, rsi
add r8, 0x10
lea rcx, [rbp + 0x50]
mov r9d, 0x20
mov edx, 0x732664a9
call fcn.140315e60
mov qword [rdi], rsi
lea rdx, [rbp - 0x20]
mov r8d, 0xd9c1548b
call fcn.140314a10
mov eax, 2
mov qword [rbp + 0x78], rax
jmp 0x14031319c
lea rdx, [0x1405e824c]
nop
mov dword [rsp + 0x20], 0xaea0f7a1
lea r8, [rbp - 0x20]
call fcn.140312850
nop
mov rsi, qword [rbp + 0x78]
mov dword [rsi + 8], 0
lea rax, [0x1405e9df8]
mov qword [rsi], rax
lea rdx, [rbp - 0x20]
mov r8d, 0xd9c1548b
call fcn.140314a10
mov rcx, rsi
call fcn.140095680
nop
mov rsi, qword [rbp + 0x78]
mov rax, qword [rsi]
mov rax, qword [rax + 8]
mov rcx, rsi
call qword [0x140704440]
mov qword [0x140790210], rsi
mov rcx, rsi
nop
mov qword [rbp + 0x78], rcx
lea rcx, [rbp + 0x50]
call fcn.140095690
mov rax, qword [rbp + 0x78]
add rsp, 0x108
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r12, 0xffffffffffffffff
xor r15d, r15d
jmp 0x140312bda
nop
movzx eax, byte [0x140744cf0]
cmp al, 0x1c
je 0x140313333
mov cl, 6
mov al, 0xd9
lock cmpxchg byte [0x140744cf0], cl
je 0x1403132aa
cmp al, 0x1c
jne 0x1403131d5
jmp 0x140313333
call fcn.14008bd90
nop
movzx eax, byte [0x140744c0e]
cmp al, 0xc0
je 0x1403133a1
mov cl, 0x3f
mov al, 0xea
lock cmpxchg byte [0x140744c0e], cl
je 0x140313338
cmp al, 0xc0
jne 0x140313205
jmp 0x1403133a1
call fcn.1401e4b80
mov ecx, 0xcaee63b7
xor rcx, rdi
mov edx, 0xe2525f4d
call fcn.140315e60
mov ecx, 0x969e2584
xor rcx, rdi
mov edx, 0xcbe7b2b8
call fcn.140315e60
test r14b, 2
lea rax, [0x140744c60]
lea r14, [0x140744c40]
cmove r14, rax
xor edi, 0xb6ec2ea6
mov ecx, edi
call fcn.14030fa10
test bl, 4
lea rsi, [0x140744c20]
cmove rsi, r14
lea rdi, [rbp + 0x50]
mov rcx, rdi
mov edx, 1
call fcn.14008c180
lea rbx, [rbp - 0x20]
mov rcx, rbx
mov rdx, rsi
mov r8, rdi
call fcn.140096540
lea rdx, [0x140647838]
mov rcx, rbx
call fcn.1400954f0
mov eax, 0xd2a46f1b
mov ecx, 0x2d5b90f5
mov edx, 0xd2a46f1c
mov r8d, 0x2d5b90f4
xor r9d, r9d
mov r10d, 0xf0f0f0f1
lea r11, [0x140744ce0]
lea rsi, [0x1405f8ba0]
mov edi, ecx
imul rdi, r10
shr rdi, 0x24
lea ebx, [rax + rdi]
shl edi, 4
add edi, ebx
mov ebx, r8d
imul rbx, r10
shr rbx, 0x24
lea r14d, [rdx + rbx]
shl ebx, 4
add ebx, r14d
movzx ebx, byte [rbx + rsi]
xor bl, 0x5d
add byte [r9 + r11], bl
movzx ebx, byte [rdi + rsi]
xor bl, 0x5d
add byte [r9 + r11 + 1], bl
add r9, 2
add eax, 0xfffffffe
add ecx, 2
add edx, 0xfffffffe
add r8d, 2
cmp r9, 0x10
jne 0x1403132d6
mov al, 0x1c
xchg byte [0x140744cf0], al
call fcn.14030f790
mov ecx, 0x15147200
xor r8d, r8d
movabs r9, 0x4924924924924925
lea r10, [0x1405f8af0]
lea r11, [0x140744c00]
mov rax, rcx
shr rax, 1
mul r9
shr rdx, 1
imul rax, rdx, 0xfffffffffffffff2
add rax, r10
movzx edx, byte [r8 + rax + 0x15147200]
movzx eax, byte [r8 + rax + 0x15147201]
xor dl, 0xf6
add byte [r8 + r11], dl
xor al, 0xf6
add byte [r8 + r11 + 1], al
add r8, 2
add rcx, 2
cmp r8, 0xe
jne 0x140313358
mov al, 0xc0
xchg byte [0x140744c0e], al
lea rcx, [0x140744c00]
call fcn.140095530
call fcn.14008b830
mov ecx, 0xcaee63b7
xor rcx, rsi
mov edx, 0x6277f52d
call fcn.140315e60
mov ecx, 0x969e2584
xor rcx, rsi
mov edx, 0xd1bc7e78
call fcn.140315e60
test bl, 2
lea rax, [0x140744c60]
lea rbx, [0x140744c40]
cmove rbx, rax
xor esi, 0xb6ec2ea6
mov edx, 0xdee58ee2
mov r9, rsi
call fcn.140315e60
test dil, 4
lea rsi, [0x140744c20]
cmove rsi, rbx
lea rdi, [rbp - 0x30]
mov rcx, rdi
mov edx, 1
call fcn.14008c180
lea rbx, [rbp + 0x50]
mov r9d, 0x10
mov rcx, rdi
mov edx, 0x732664a9
mov r8, rbx
call fcn.140315e60
nop
mov dword [rsp + 0x20], 0x80cf45a2
lea r8, [rbp - 0x20]
mov rcx, rbx
mov rdx, rsi
call fcn.140311410
lea rax, [0x1405e8038]
mov qword [rbp - 0x20], rax
lea rdx, [0x140647838]
lea rcx, [rbp - 0x20]
call fcn.1400954f0
call fcn.1400954e0
call fcn.1400954e0
call fcn.1400954e0
call fcn.1400954e0
int3