Function at 0x15037e86c
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r14
sub rsp, 0x70
mov rax, qword [0x150012098]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov r14d, edx
mov rdi, rcx
xor esi, esi
mov ebx, esi
cmp byte [rcx + 9], sil
je 0x15037ef54
lea ebp, [rsi + 1]
cmp byte [rcx + 0xb], sil
je 0x15037eb99
movzx ecx, byte [rcx + 8]
cmp ecx, 0xa
ja 0x15037ea6a
je 0x15037e901
sub ecx, ebp
je 0x15037e9be
sub ecx, ebp
je 0x15037e9b3
sub ecx, ebp
je 0x15037ea33
sub ecx, ebp
je 0x15037e9fc
sub ecx, ebp
je 0x15037e9c9
sub ecx, ebp
je 0x15037e9be
sub ecx, ebp
je 0x15037e9b3
sub ecx, ebp
je 0x15037e9ac
cmp ecx, ebp
jne 0x15037e964
mov dword [rsp + 0x28], 3
lea rax, [0x150266300]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x38], 0x5a0
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
movdqa xmm1, xmmword [0x150270450]
movdqu xmmword [rsp + 0x50], xmm1
mov byte [rsp + 0x40], sil
mov r8d, 0x24
lea rdx, [0x150266398]
lea rcx, [rsp + 0x40]
call fcn.1502a9928
lea rdx, [rsp + 0x28]
call fcn.150365534
nop
lea rcx, [rsp + 0x28]
call fcn.15036544c
mov dword [rdi + 0xc], ebx
test rbx, rbx
je 0x15037f082
mov eax, ebx
or eax, ebp
bsr ecx, eax
lea eax, [r14*8]
or eax, 3
bsr edx, eax
lea r8d, [rcx*8 + 0x49]
add r8d, ecx
shr r8, 6
lea ecx, [rdx*8 + 0x49]
add ecx, edx
shr rcx, 6
add rbx, rcx
add rbx, r8
jmp 0x15037f082
mov rax, qword [rdi]
mov ebx, dword [rax]
jmp 0x15037e964
mov rax, qword [rdi]
mov ebx, dword [rax]
shl rbx, 2
jmp 0x15037e964
mov rax, qword [rdi]
mov ebx, dword [rax]
shl rbx, 3
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
movsxd rax, dword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037e9d7
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
mov rax, qword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037ea0e
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
mov rax, qword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037ea45
jmp 0x15037e964
sub ecx, 0xb
je 0x15037e901
sub ecx, ebp
je 0x15037e901
sub ecx, ebp
je 0x15037eb65
sub ecx, ebp
je 0x15037eb2e
sub ecx, ebp
je 0x15037e9b3
sub ecx, ebp
je 0x15037e9be
sub ecx, ebp
je 0x15037eaee
cmp ecx, ebp
jne 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
mov rax, qword [rdx]
mov rcx, rax
sar rcx, 0x3f
add rax, rax
xor rcx, rax
or rcx, rbp
bsr rax, rcx
lea ecx, [rax*8 + 0x49]
add ecx, eax
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037eab9
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
mov eax, dword [rdx]
mov ecx, eax
sar ecx, 0x1f
add eax, eax
xor ecx, eax
or ecx, ebp
bsr eax, ecx
lea ecx, [rax*8 + 0x49]
add ecx, eax
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037eb00
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
movsxd rax, dword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037eb40
jmp 0x15037e964
mov rax, qword [rdi]
cmp dword [rax], esi
jle 0x15037e964
mov rdx, qword [rax + 8]
mov r8d, dword [rax]
mov eax, dword [rdx]
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037eb77
jmp 0x15037e964
lea eax, [rdx*8]
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
lea rdx, [rcx + rcx]
cmp byte [rdi + 8], 0xa
cmovne rdx, rcx
movzx ecx, byte [rdi + 8]
cmp ecx, 0xa
ja 0x15037ed69
je 0x15037ed2d
sub ecx, ebp
je 0x15037ec6a
sub ecx, ebp
je 0x15037ec64
sub ecx, ebp
je 0x15037ecee
sub ecx, ebp
je 0x15037ecaf
sub ecx, ebp
je 0x15037ec70
sub ecx, ebp
je 0x15037ec6a
sub ecx, ebp
je 0x15037ec64
sub ecx, ebp
je 0x15037ec52
cmp ecx, ebp
jne 0x15037f082
mov r8, qword [rdi]
mov eax, dword [r8 + 8]
mov ebx, eax
mov r9d, eax
imul rbx, rdx
test eax, eax
jle 0x15037f082
mov r8, qword [r8 + 0x10]
add r8, 8
mov rax, qword [r8]
mov rdx, qword [rax + 0x10]
mov eax, edx
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rcx, rdx
add rbx, rcx
lea r8, [r8 + 8]
sub r9, rbp
jne 0x15037ec26
jmp 0x15037f082
lea rbx, [rdx + 1]
mov rax, qword [rdi]
mov ecx, dword [rax]
imul rbx, rcx
jmp 0x15037f082
lea rbx, [rdx + 4]
jmp 0x15037ec56
lea rbx, [rdx + 8]
jmp 0x15037ec56
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
movsxd rax, dword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037ec8a
jmp 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
mov rax, qword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037ecc9
jmp 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
mov rax, qword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037ed08
jmp 0x15037f082
mov rcx, qword [rdi]
mov eax, dword [rcx + 8]
mov ebx, eax
imul rbx, rdx
test eax, eax
jle 0x15037f082
mov r14, rsi
mov rax, qword [rcx + 0x10]
mov rcx, qword [rax + r14 + 8]
mov rax, qword [rcx]
call qword [rax + 0x38]
add rbx, rax
add esi, ebp
lea r14, [r14 + 8]
mov rcx, qword [rdi]
cmp esi, dword [rcx + 8]
jl 0x15037ed44
jmp 0x15037f082
sub ecx, 0xb
je 0x15037ef04
sub ecx, ebp
je 0x15037eeb8
sub ecx, ebp
je 0x15037ee7c
sub ecx, ebp
je 0x15037ee3d
sub ecx, ebp
je 0x15037ec64
sub ecx, ebp
je 0x15037ec6a
sub ecx, ebp
je 0x15037edf5
cmp ecx, ebp
jne 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
mov rax, qword [rdx]
mov rcx, rax
sar rcx, 0x3f
add rax, rax
xor rcx, rax
or rcx, rbp
bsr rax, rcx
lea ecx, [rax*8 + 0x49]
add ecx, eax
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 8]
sub r8, rbp
jne 0x15037edc0
jmp 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
mov eax, dword [rdx]
mov ecx, eax
sar ecx, 0x1f
add eax, eax
xor ecx, eax
or ecx, ebp
bsr eax, ecx
lea ecx, [rax*8 + 0x49]
add ecx, eax
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037ee0f
jmp 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
movsxd rax, dword [rdx]
or rax, rbp
bsr rcx, rax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037ee57
jmp 0x15037f082
mov rax, qword [rdi]
mov r8d, dword [rax]
mov rbx, rdx
imul rbx, r8
test r8d, r8d
jle 0x15037f082
mov rdx, qword [rax + 8]
mov eax, dword [rdx]
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rbx, rcx
lea rdx, [rdx + 4]
sub r8, rbp
jne 0x15037ee96
jmp 0x15037f082
mov r8, qword [rdi]
mov eax, dword [r8 + 8]
mov ebx, eax
mov r9d, eax
imul rbx, rdx
test eax, eax
jle 0x15037f082
mov r8, qword [r8 + 0x10]
add r8, 8
mov rax, qword [r8]
mov rdx, qword [rax + 0x10]
mov eax, edx
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
add rcx, rdx
add rbx, rcx
lea r8, [r8 + 8]
sub r9, rbp
jne 0x15037eed8
jmp 0x15037f082
mov rcx, qword [rdi]
mov eax, dword [rcx + 8]
mov ebx, eax
imul rbx, rdx
test eax, eax
jle 0x15037f082
mov r14, rsi
mov rax, qword [rcx + 0x10]
mov rcx, qword [rax + r14 + 8]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov ecx, eax
or ecx, ebp
bsr edx, ecx
lea edx, [rdx + rdx*8]
add edx, 0x49
shr rdx, 6
add rdx, rax
add rbx, rdx
add esi, ebp
lea r14, [r14 + 8]
mov rcx, qword [rdi]
cmp esi, dword [rcx + 8]
jl 0x15037ef1b
jmp 0x15037f082
test byte [rcx + 0xa], 0xf
jne 0x15037f082
lea eax, [rdx*8]
mov ebp, 1
or eax, ebp
bsr ecx, eax
lea ecx, [rcx + rcx*8]
add ecx, 0x49
shr rcx, 6
movzx edx, byte [rdi + 8]
lea rbx, [rcx + rcx]
cmp dl, 0xa
cmovne rbx, rcx
cmp edx, 0xa
ja 0x15037f00c
je 0x15037f001
sub edx, ebp
je 0x15037efd5
sub edx, ebp
je 0x15037efcc
sub edx, ebp
je 0x15037eff7
sub edx, ebp
je 0x15037efea
sub edx, ebp
je 0x15037efde
sub edx, ebp
je 0x15037efd5
sub edx, ebp
je 0x15037efcc
sub edx, ebp
je 0x15037efc4
cmp edx, ebp
jne 0x15037f082
mov rcx, qword [rdi]
call fcn.150359ddc
jmp 0x15037f07f
add rbx, rbp
jmp 0x15037f082
add rbx, 4
jmp 0x15037f082
add rbx, 8
jmp 0x15037f082
mov ecx, dword [rdi]
call fcn.1503667e4
jmp 0x15037f07f
mov rcx, qword [rdi]
call fcn.150366800
jmp 0x15037f07f
mov rcx, qword [rdi]
call fcn.150366800
jmp 0x15037f07f
mov rcx, qword [rdi]
mov rax, qword [rcx]
call qword [rax + 0x38]
jmp 0x15037f07f
sub edx, 0xb
je 0x15037f05c
sub edx, ebp
je 0x15037f052
sub edx, ebp
je 0x15037f049
sub edx, ebp
je 0x15037f040
sub edx, ebp
je 0x15037efcc
sub edx, ebp
je 0x15037efd5
sub edx, ebp
je 0x15037f037
cmp edx, ebp
jne 0x15037f082
mov rcx, qword [rdi]
call fcn.150366830
jmp 0x15037f07f
mov ecx, dword [rdi]
call fcn.150366814
jmp 0x15037f07f
mov ecx, dword [rdi]
call fcn.1503667e4
jmp 0x15037f07f
mov ecx, dword [rdi]
call fcn.150359d94
jmp 0x15037f07f
mov rcx, qword [rdi]
call fcn.150359ddc
jmp 0x15037f07f
mov rcx, qword [rdi]
test byte [rdi + 0xa], 0xf0
je 0x15037f07a
mov rax, qword [rcx]
call qword [rax + 0x50]
mov rdx, rax
mov ecx, eax
call fcn.150359d94
add rax, rdx
jmp 0x15037f07f
call fcn.1503811d0
add rbx, rax
mov rax, rbx
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.15040aca0
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret