Function at 0x140035a90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov rbx, r9
mov r12, r8
mov qword [rsp + 0x40], rdx
mov r14, rcx
mov rsi, qword [rsp + 0xb0]
cmp byte [rsi + 0x28], 0
jne 0x140035b29
mov rcx, qword [rsi + 0x10]
mov r15, qword [rsi + 0x20]
cmp rcx, qword [rsi + 0x18]
jne 0x140035b15
lea rax, [rcx + rcx*2]
shr rax, 1
test rcx, rcx
mov edi, 0x20
cmovne rdi, rax
cmp rdi, rcx
setbe al
mov rcx, rdi
shr rcx, 0x3d
setne cl
or cl, al
jne 0x140035b23
lea rdx, [rdi*8]
mov rcx, qword [rsi + 8]
call fcn.1400987b0
test rax, rax
je 0x140035b23
mov qword [rsi + 8], rax
mov qword [rsi + 0x18], rdi
mov rcx, qword [rsi + 0x10]
jmp 0x140035b19
mov rax, qword [rsi + 8]
mov qword [rax + rcx*8], r15
inc qword [rsi + 0x10]
jmp 0x140035b29
mov word [rsi + 0x28], 0x101
mov rcx, rsi
call fcn.140028b10
xor ebp, ebp
test rax, rax
je 0x14003640a
mov r15, rax
lea r9, [rbx + 0x18]
mov r8, qword [r14 + 8]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov rdx, r12
call fcn.14002d480
test eax, eax
je 0x14003640a
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, rbx
mov r9, rbx
call fcn.14002c600
test eax, eax
je 0x14003640a
mov r8, qword [r14 + 0x10]
movsxd rax, dword [r15 + 8]
movsxd rdx, dword [r8 + 8]
cmp eax, edx
jge 0x140035ba8
mov r9, qword [r8]
mov r11, rdx
sub r11, rax
cmp r11, 3
ja 0x140035bac
xor ecx, ecx
mov r10, rax
jmp 0x140035c10
xor ecx, ecx
jmp 0x140035c1c
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rax]
lea rcx, [r9 + rax*8]
add rcx, 0x10
pxor xmm0, xmm0
xor r12d, r12d
pxor xmm1, xmm1
nop word [rax + rax]
movdqu xmm2, xmmword [rcx + r12*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [rcx + r12*8]
por xmm1, xmm2
add r12, 4
cmp rdi, r12
jne 0x140035bd0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq rcx, xmm0
cmp r11, rdi
je 0x140035c1c
nop word cs:[rax + rax]
or rcx, qword [r9 + r10*8]
inc r10
cmp rdx, r10
jne 0x140035c10
cmp edx, eax
jge 0x140035cac
mov r9, qword [r15]
mov r11, rax
sub r11, rdx
cmp r11, 3
ja 0x140035c38
mov r10, rdx
jmp 0x140035ca0
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rdx]
movq xmm1, rcx
lea rcx, [r9 + rdx*8]
add rcx, 0x10
pxor xmm0, xmm0
xor r12d, r12d
nop word [rax + rax]
movdqu xmm2, xmmword [rcx + r12*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [rcx + r12*8]
por xmm0, xmm2
add r12, 4
cmp rdi, r12
jne 0x140035c60
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq rcx, xmm1
cmp r11, rdi
je 0x140035cac
nop word cs:[rax + rax]
or rcx, qword [r9 + r10*8]
inc r10
cmp rax, r10
jne 0x140035ca0
cmp eax, edx
cmovl edx, eax
test edx, edx
jle 0x140035d53
mov r9, qword [r15]
mov r10, qword [r8]
mov r11d, edx
cmp edx, 3
ja 0x140035ccb
xor edx, edx
jmp 0x140035d40
mov edx, r11d
and edx, 0x7ffffffc
movq xmm0, rcx
mov ecx, r11d
shr ecx, 2
and ecx, 0x1fffffff
shl rcx, 5
pxor xmm1, xmm1
xor edi, edi
nop
movdqu xmm2, xmmword [r9 + rdi]
movdqu xmm3, xmmword [r9 + rdi + 0x10]
movdqu xmm4, xmmword [r10 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r10 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp rcx, rdi
jne 0x140035cf0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq rcx, xmm0
cmp edx, r11d
je 0x140035d53
nop word [rax + rax]
mov rdi, qword [r10 + rdx*8]
xor rdi, qword [r9 + rdx*8]
or rcx, rdi
inc rdx
cmp r11, rdx
jne 0x140035d40
mov edx, dword [r15 + 0x10]
mov r11d, dword [r8 + 0x10]
xor r11d, edx
mov r8, qword [r14 + 0x18]
movsxd r9, dword [r8 + 8]
cmp eax, r9d
mov qword [rsp + 0x38], rbx
jge 0x140035d87
mov r12, qword [r8]
mov rbp, r9
sub rbp, rax
cmp rbp, 3
ja 0x140035d8c
xor r10d, r10d
mov r13, rax
jmp 0x140035df0
xor r10d, r10d
jmp 0x140035dfc
mov rdi, rbp
and rdi, 0xfffffffffffffffc
lea r13, [rdi + rax]
lea r10, [r12 + rax*8]
add r10, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r10 + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r10 + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x140035db0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp rbp, rdi
je 0x140035dfc
nop word cs:[rax + rax]
or r10, qword [r12 + r13*8]
inc r13
cmp r9, r13
jne 0x140035df0
movsxd r11, r11d
cmp r9d, eax
jge 0x140035e8c
mov r12, qword [r15]
mov rbp, rax
sub rbp, r9
cmp rbp, 3
ja 0x140035e1c
mov r13, r9
jmp 0x140035e80
mov rdi, rbp
and rdi, 0xfffffffffffffffc
lea r13, [rdi + r9]
movq xmm1, r10
lea r10, [r12 + r9*8]
add r10, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop word [rax + rax]
movdqu xmm2, xmmword [r10 + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r10 + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x140035e40
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r10, xmm1
cmp rbp, rdi
je 0x140035e8c
nop word cs:[rax + rax]
or r10, qword [r12 + r13*8]
inc r13
cmp rax, r13
jne 0x140035e80
or rcx, r11
cmp eax, r9d
cmovl r9d, eax
test r9d, r9d
jle 0x140035eb7
mov rax, qword [r15]
mov r11, qword [r8]
mov r12d, r9d
cmp r9d, 3
mov r13, qword [rsp + 0x38]
ja 0x140035ec1
xor r9d, r9d
jmp 0x140035f40
mov r13, qword [rsp + 0x38]
jmp 0x140035f53
mov r9d, r12d
and r9d, 0x7ffffffc
movq xmm0, r10
mov r10d, r12d
shr r10d, 2
and r10d, 0x1fffffff
shl r10, 5
pxor xmm1, xmm1
xor edi, edi
nop dword [rax + rax]
movdqu xmm2, xmmword [rax + rdi]
movdqu xmm3, xmmword [rax + rdi + 0x10]
movdqu xmm4, xmmword [r11 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r11 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r10, rdi
jne 0x140035ef0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp r9d, r12d
je 0x140035f53
nop dword [rax + rax]
mov rdi, qword [r11 + r9*8]
xor rdi, qword [rax + r9*8]
or r10, rdi
inc r9
cmp r12, r9
jne 0x140035f40
test rcx, rcx
sete al
xor edx, dword [r8 + 0x10]
movsxd rcx, edx
or rcx, r10
sete cl
or cl, al
movzx r12d, cl
neg r12
cmp dword [r14 + 0x20], 2
jl 0x1400363f9
mov ebp, 1
xor ebx, ebx
nop word cs:[rax + rax]
cmp ebp, dword [r14 + 0x24]
mov rax, r12
not rax
cmovne rax, rbx
test rax, rax
jne 0x1400363f9
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r13
call fcn.14002c600
test eax, eax
je 0x14003643c
mov rdx, qword [r14 + 0x18]
movsxd rax, dword [r15 + 8]
movsxd rcx, dword [rdx + 8]
cmp eax, ecx
jge 0x140035ff0
mov r9, qword [rdx]
mov r11, rcx
sub r11, rax
cmp r11, 3
ja 0x140036000
mov r10, rax
xor r8d, r8d
jmp 0x140036060
xor r8d, r8d
jmp 0x14003606c
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rax]
lea r8, [r9 + rax*8]
add r8, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r8 + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r8 + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x140036020
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r8, xmm0
cmp r11, rdi
mov ebx, 0
je 0x14003606c
nop word [rax + rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rcx, r10
jne 0x140036060
cmp ecx, eax
jge 0x1400360fc
mov r9, qword [r15]
mov r11, rax
sub r11, rcx
cmp r11, 3
ja 0x140036090
mov r10, rcx
jmp 0x1400360f0
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rcx]
movq xmm1, r8
lea r8, [r9 + rcx*8]
add r8, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop
movdqu xmm2, xmmword [r8 + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r8 + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x1400360b0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r8, xmm1
cmp r11, rdi
mov ebx, 0
je 0x1400360fc
nop word [rax + rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rax, r10
jne 0x1400360f0
cmp eax, ecx
cmovl ecx, eax
test ecx, ecx
jle 0x1400361b3
mov r9, qword [r15]
mov r10, qword [rdx]
mov r11d, ecx
cmp ecx, 3
ja 0x140036120
xor ecx, ecx
jmp 0x1400361a0
mov ecx, r11d
and ecx, 0x7ffffffc
movq xmm0, r8
mov r8d, r11d
shr r8d, 2
and r8d, 0x1fffffff
shl r8, 5
pxor xmm1, xmm1
xor edi, edi
nop word cs:[rax + rax]
movdqu xmm2, xmmword [r9 + rdi]
movdqu xmm3, xmmword [r9 + rdi + 0x10]
movdqu xmm4, xmmword [r10 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r10 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r8, rdi
jne 0x140036150
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r8, xmm0
cmp ecx, r11d
je 0x1400361b3
nop word [rax + rax]
mov rdi, qword [r10 + rcx*8]
xor rdi, qword [r9 + rcx*8]
or r8, rdi
inc rcx
cmp r11, rcx
jne 0x1400361a0
mov ecx, dword [r15 + 0x10]
mov edx, dword [rdx + 0x10]
xor edx, ecx
movsxd rdx, edx
or rdx, r8
mov rdx, 0xffffffffffffffff
cmove r12, rdx
mov rdx, qword [r14 + 0x10]
movsxd r8, dword [rdx + 8]
cmp eax, r8d
jge 0x140036200
mov r10, qword [rdx]
mov rdi, r8
sub rdi, rax
cmp rdi, 3
ja 0x140036210
mov r11, rax
xor r9d, r9d
jmp 0x140036270
xor r9d, r9d
jmp 0x14003627c
mov r13, rdi
and r13, 0xfffffffffffffffc
lea r11, [rax + r13]
lea r9, [r10 + rax*8]
add r9, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r9 + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r9 + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp r13, rbx
jne 0x140036230
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r9, xmm0
cmp rdi, r13
mov r13, qword [rsp + 0x38]
mov ebx, 0
je 0x14003627c
nop
or r9, qword [r10 + r11*8]
inc r11
cmp r8, r11
jne 0x140036270
cmp r8d, eax
jge 0x14003630c
mov r10, qword [r15]
mov r13, rax
sub r13, r8
cmp r13, 3
ja 0x1400362a0
mov r11, r8
mov r13, qword [rsp + 0x38]
jmp 0x140036300
mov rdi, r13
and rdi, 0xfffffffffffffffc
lea r11, [rdi + r8]
movq xmm1, r9
lea r9, [r10 + r8*8]
add r9, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop
movdqu xmm2, xmmword [r9 + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r9 + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x1400362c0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r9, xmm1
cmp r13, rdi
mov r13, qword [rsp + 0x38]
mov ebx, 0
je 0x14003630c
nop
or r9, qword [r10 + r11*8]
inc r11
cmp rax, r11
jne 0x140036300
cmp eax, r8d
cmovl r8d, eax
test r8d, r8d
jle 0x1400363d3
mov rax, qword [r15]
mov r10, qword [rdx]
mov r11d, r8d
cmp r8d, 3
ja 0x140036340
xor r8d, r8d
jmp 0x1400363c0
mov r8d, r11d
and r8d, 0x7ffffffc
movq xmm0, r9
mov r9d, r11d
shr r9d, 2
and r9d, 0x1fffffff
shl r9, 5
pxor xmm1, xmm1
xor edi, edi
nop word [rax + rax]
movdqu xmm2, xmmword [rax + rdi]
movdqu xmm3, xmmword [rax + rdi + 0x10]
movdqu xmm4, xmmword [r10 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r10 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r9, rdi
jne 0x140036370
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r9, xmm0
cmp r8d, r11d
je 0x1400363d3
nop dword [rax + rax]
mov rdi, qword [r10 + r8*8]
xor rdi, qword [rax + r8*8]
or r9, rdi
inc r8
cmp r11, r8
jne 0x1400363c0
xor ecx, dword [rdx + 0x10]
movsxd rax, ecx
mov ecx, r12d
not ecx
and ecx, 1
or rax, r9
cmovne rcx, rbx
test rcx, rcx
jne 0x1400363f9
inc ebp
cmp ebp, dword [r14 + 0x20]
jl 0x140035f90
and r12d, 1
mov rax, qword [rsp + 0x40]
mov dword [rax], r12d
mov ebp, 1
cmp byte [rsi + 0x28], 0
jne 0x140036429
mov rax, qword [rsi + 8]
mov rcx, qword [rsi + 0x10]
lea rdx, [rcx - 1]
mov qword [rsi + 0x10], rdx
mov rax, qword [rax + rcx*8 - 8]
mov qword [rsi + 0x20], rax
mov eax, ebp
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ebp, ebp
cmp byte [rsi + 0x28], 0
jne 0x140036429
jmp 0x140036410