Function at 0x140315580
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x138
mov ebx, edx
mov rsi, rcx
movzx r15d, byte [0x140532a38]
mov rdi, qword [0x1405341e0]
test r15d, r15d
jne 0x1403156b7
mov r14, qword [rdi + 0x30]
test r14, r14
je 0x1403156b7
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x2c], 0
mov eax, dword [0x140513d70]
or eax, r15d
add eax, 0xffffc152
cdqe
add rax, qword [0x140513d98]
call qword [case.0x1401138cb.0]
lea rcx, [rsp + 0x2c]
mov qword [rsp + 0x20], rcx
lea r8, [rsp + 0x30]
mov rcx, rax
mov edx, 7
mov r9d, 8
mov rax, r14
call qword [case.0x1401138cb.0]
mov ecx, 0xc16db27c
add ecx, dword [0x140513f58]
cmp eax, ecx
jne 0x1403156b7
mov rax, qword [0x140513f50]
mov rcx, qword [0x1405325f8]
add rcx, rax
add rcx, qword [rsp + 0x30]
sub rcx, rax
je 0x1403156b7
cmp qword [0x1405341f8], 0
jne 0x1403156a5
mov eax, dword [0x140513d74]
neg r15d
add eax, r15d
add eax, 0xffffc152
cdqe
add rax, qword [0x140513d80]
mov ecx, 0x30
mov edx, 0x1869253f
mov r8d, 0x8b5a8bb1
call qword [case.0x1401138cb.0]
mov qword [rax + 0x28], 0xf
lea rcx, [0x1403fe9c8]
mov qword [rax + 8], rcx
mov dword [rax], 0
mov qword [rax + 0x20], 0
mov byte [rax + 0x10], 0
mov qword [0x1405341f8], rax
mov rax, qword [0x1405341f8]
mov dword [rax], 7
jmp 0x140315b96
mov rax, qword [rdi + 0x2f0]
test rax, rax
je 0x14031576e
call qword [case.0x1401138cb.0]
test eax, eax
je 0x14031576e
cmp qword [0x1405341f8], 0
jne 0x14031575c
or r15d, dword [0x140513d74]
add r15d, 0xffffc152
movsxd rax, r15d
add rax, qword [0x140513d80]
movabs rcx, 0xa1073eff8ca145c7
add rcx, qword [0x140513f50]
mov r8d, dword [0x140513f58]
lea edx, [r8 - 0x26292845]
add r8d, 0x4cc83e2d
call qword [case.0x1401138cb.0]
movabs rcx, 0xa1073eff8ca145a6
add rcx, qword [0x140513f50]
mov qword [rax + 0x28], rcx
lea rcx, [0x1403fe9c8]
mov qword [rax + 8], rcx
mov dword [rax], 0
mov qword [rax + 0x20], 0
mov byte [rax + 0x10], 0
mov qword [0x1405341f8], rax
mov rax, qword [0x1405341f8]
mov dword [rax], 8
jmp 0x140315b96
movsxd r12, dword [0x140422674]
mov r13d, dword [0x140422668]
mov r14, qword [rdi + 0x2f8]
test r14, r14
je 0x140315888
mov dword [rsp + 0x30], 0
mov eax, dword [0x140513d70]
add eax, r15d
add eax, 0xffffc152
cdqe
add rax, qword [0x140513d98]
call qword [case.0x1401138cb.0]
lea rdx, [rsp + 0x30]
mov rcx, rax
mov rax, r14
call qword [case.0x1401138cb.0]
test eax, eax
je 0x140315888
mov eax, 0xc16db27c
add eax, dword [0x140513f58]
cmp dword [rsp + 0x30], eax
je 0x140315888
cmp qword [0x1405341f8], 0
jne 0x140315876
mov eax, dword [0x140513d74]
neg r15d
add eax, r15d
add eax, 0xffffc152
cdqe
add rax, qword [0x140513d80]
mov ecx, 0x30
mov edx, 0x1869253f
mov r8d, 0x8b5a8bb1
call qword [case.0x1401138cb.0]
mov rcx, qword [0x140513f50]
movabs rdx, 0xa1073eff8ca145a6
xor rdx, rcx
movabs r8, 0x21073eff8ca145a6
and r8, rcx
add r8, r8
mov rcx, rdx
xor rcx, r8
and r8, rdx
lea rcx, [rcx + r8*2]
mov qword [rax + 0x28], rcx
lea rcx, [0x1403fe9c8]
mov qword [rax + 8], rcx
mov dword [rax], 0
mov qword [rax + 0x20], 0
mov byte [rax + 0x10], 0
mov qword [0x1405341f8], rax
mov rax, qword [0x1405341f8]
mov dword [rax], 9
jmp 0x140315b96
lea rax, [0x140422674]
add r12, rax
mov ebp, dword [0x140513b14]
mov eax, ebp
xor eax, 0x29c4f113
mov ecx, ebp
and ecx, 0x29c4f113
add ecx, ecx
mov edx, eax
xor edx, ecx
and ecx, eax
lea eax, [rdx + rcx*2]
inc eax
add eax, 0xd63b0eed
mov ecx, 0xc16db2b9
nop
mov edx, dword [0x140534234]
mov r8d, dword [0x140513f58]
add r8d, ecx
cmp edx, r8d
jge 0x1403158c0
mov dword [0x140513b14], eax
and ebp, eax
je 0x1403158e4
xor r14d, r14d
jmp 0x140315919
xor eax, eax
mov r14d, 0
test r13d, r13d
jle 0x140315919
xor r14d, r14d
nop word cs:[rax + rax]
cdqe
xor r14w, word [r12 + rax]
mov ecx, dword [0x140513f58]
add eax, ecx
add eax, 0xc16db27e
cmp eax, r13d
jl 0x140315900
test bl, bl
je 0x1403159ab
movaps xmm0, xmmword [0x140422650]
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x40], xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x70], xmm0
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xd0], xmm0
movaps xmmword [rsp + 0xe0], xmm0
movaps xmmword [rsp + 0xf0], xmm0
movaps xmmword [rsp + 0x100], xmm0
movaps xmmword [rsp + 0x110], xmm0
movaps xmmword [rsp + 0x120], xmm0
mov rax, qword [rdi + 0x300]
lea rcx, [rsp + 0x30]
call qword [case.0x1401138cb.0]
mov eax, dword [0x140513d7c]
or eax, r15d
add eax, 0xffffc152
cdqe
add rax, qword [0x140513d90]
mov rcx, rdi
call qword [case.0x1401138cb.0]
mov ecx, eax
mov al, 1
test cl, cl
jne 0x140315b98
cmp byte [rsi + 0x1d8], 0
je 0x140315a66
mov eax, dword [0x140513d78]
add eax, r15d
mov r8d, dword [0x140513f58]
add eax, r8d
add eax, 0xc16d73ce
cdqe
add rax, qword [0x140513d88]
lea ecx, [r8 - 0x3e8f6c88]
lea edx, [r8 + 0x59de3f61]
neg r8d
mov r9d, r8d
xor r9d, 0x8cf89f2c
and r8d, 0xcf89f2c
lea r8d, [r9 + r8*2]
neg r8d
call qword [case.0x1401138cb.0]
mov esi, eax
xor eax, eax
cmp esi, 2
jb 0x140315b98
mov rcx, qword [0x1405341f8]
cmp ebp, 1
sbb eax, eax
movzx edx, word [0x140422670]
sub edx, r14d
mov r8d, dword [0x140534234]
cmp r8d, 0x4b
jge 0x140315a80
jmp 0x140315a6d
xor eax, eax
jmp 0x140315b98
mov r8d, dword [0x140534234]
cmp r8d, 0x15
jl 0x140315a97
nop word [rax + rax]
mov r8d, dword [0x140534230]
lea r9d, [r8 + 1]
imul r9d, r8d
test r9b, 1
jne 0x140315a80
jmp 0x140315a6d
cwde
mov r8d, eax
not r8d
mov r9d, eax
xor r9d, r8d
and r9d, edx
xor r9d, r8d
mov edx, r9d
not edx
xor r9d, eax
and edx, r8d
or edx, r9d
not edx
movzx eax, dx
movabs rdx, 0x93b6f308b796a5b2
add rdx, qword [0x1405325f8]
mov r8, rdx
xor r8, rax
and edx, eax
lea rax, [r8 + rdx*2]
movabs rdx, 0x6c490cf748695a4e
add rdx, rax
mov qword [0x1405325f8], rdx
test rcx, rcx
jne 0x140315b80
mov eax, dword [0x140513d74]
sub eax, r15d
mov r8d, dword [0x140513f58]
add eax, r8d
add eax, 0xc16d73ce
cdqe
add rax, qword [0x140513d80]
movabs rcx, 0xa1073eff8ca145c7
add rcx, qword [0x140513f50]
lea edx, [r8 - 0x26292845]
mov r9d, r8d
xor r9d, 0x4cc83e2d
and r8d, 0x4cc83e2d
lea r8d, [r9 + r8*2]
call qword [case.0x1401138cb.0]
mov qword [rax + 0x28], 0xf
lea rcx, [0x1403fe9c8]
mov qword [rax + 8], rcx
mov dword [rax], 0
mov qword [rax + 0x20], 0
movzx ecx, byte [0x140513f5c]
add cl, 0xdc
mov byte [rax + 0x10], cl
mov qword [0x1405341f8], rax
mov eax, 0x416db27c
add eax, dword [0x140513f58]
mov rcx, qword [0x1405341f8]
or esi, eax
mov dword [rcx], esi
mov al, 1
add rsp, 0x138
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret