Function at 0x3a1245ad0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov ebp, 1
mov rsi, qword [rsp + 0x90]
mov rbx, qword [rsp + 0xa0]
mov qword [rsp + 0x70], rcx
mov rax, qword [rsp + 0x70]
mov r12d, r8d
mov rdi, rdx
mov ecx, dword [rsp + 0x98]
lea r11, [rax + 8]
mov eax, ecx
mov dword [rsp + 0x14], ecx
shlx r13d, ebp, eax
mov rax, rcx
lea edx, [r13 - 1]
shl rax, 0x20
or rax, 1
mov qword [rsp + 8], rax
mov r8, rax
lea eax, [rcx - 1]
shlx ebp, ebp, eax
cmp r12d, 0xffffffff
je 0x3a123beff
mov dword [rsp + 0x18], r13d
mov ecx, edx
xor eax, eax
xor r14d, r14d
mov r10d, 1
xor r15d, r15d
jmp 0x3a123bc9f
cmp bp, r13w
mov word [rbx + rax*2], r13w
mov r14d, 1
lea r13, [rax + 1]
cmovle r10, r15
cmp r12, rax
je 0x3a123bcca
mov rax, r13
movzx r13d, word [rdi + rax*2]
cmp r13w, 0xffff
jne 0x3a123bc80
mov r13d, ecx
sub ecx, 1
mov dword [r11 + r13*8 + 4], eax
mov r13d, 1
mov word [rbx + rax*2], r13w
lea r13, [rax + 1]
cmp r12, rax
jne 0x3a123bc9c
mov r13d, dword [rsp + 0x18]
test r14b, r14b
je 0x3a123bce9
movabs rax, 0xffffffff00000000
and rax, r8
or rax, r10
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0x70]
mov r15, qword [rsp + 8]
mov qword [rax], r15
cmp edx, ecx
je 0x3a123bdda
mov r8d, r13d
mov eax, r13d
mov dword [rsp + 8], r13d
xor ebp, ebp
shr eax, 3
shr r8d, 1
lea r8d, [r8 + rax + 3]
xor eax, eax
nop dword [rax + rax]
movsx r14d, word [rdi + rbp*2]
mov r15d, ebp
test r14d, r14d
jle 0x3a123bd52
xor r10d, r10d
mov r13d, eax
mov dword [r11 + r13*8 + 4], r15d
nop dword [rax + rax]
add eax, r8d
and eax, edx
cmp ecx, eax
jb 0x3a123bd40
add r10d, 1
cmp r14d, r10d
jne 0x3a123bd30
lea r10, [rbp + 1]
cmp r12, rbp
je 0x3a123bd60
mov rbp, r10
jmp 0x3a123bd20
mov r13d, dword [rsp + 8]
test r13d, r13d
je 0x3a123bdc9
mov rax, qword [rsp + 0x70]
movzx r8d, byte [rsp + 0x14]
mov r10d, r13d
lea rbp, [rax + rdx*8 + 0x10]
nop dword [rax]
mov edx, dword [r11 + 4]
add r11, 8
lea rcx, [rbx + rdx*2]
movzx eax, word [rcx]
lea edi, [rax + 1]
mov word [rcx], di
xor ecx, ecx
mov edi, r8d
lzcnt ecx, eax
xor ecx, 0x1f
sub edi, ecx
shlx eax, eax, edi
sub eax, r10d
mov byte [r11 - 5], dil
mov word [r11 - 8], ax
movzx eax, byte [rsi + rdx]
mov byte [r11 - 6], al
mov eax, dword [r9 + rdx*4]
mov dword [r11 - 4], eax
cmp r11, rbp
jne 0x3a123bd80
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r8d, r13d
mov eax, r13d
mov qword [rsp + 8], r11
lea r14, [rdi + r12*2 + 2]
shr r8d, 3
shr eax, 1
lea rcx, [rbx + 0x6a]
xor ebp, ebp
lea eax, [r8 + rax + 3]
xor r10d, r10d
movabs r15, 0x101010101010101
mov qword [rsp + 0x18], rax
mov rax, r14
movsx r12, word [rdi]
mov qword [rcx + r10], rbp
cmp r12w, 8
jle 0x3a123be8a
movsx r8d, r12w
sub r8d, 9
mov r14d, r8d
shr r14d, 3
add r14d, 1
cmp r8d, 7
jbe 0x3a123bef7
mov r11d, r14d
movq xmm0, rbp
lea r8, [rbx + r10 + 0x72]
shr r11d, 1
punpcklqdq xmm0, xmm0
shl r11, 4
add r11, r8
nop word [rax + rax]
movups xmmword [r8], xmm0
add r8, 0x10
cmp r8, r11
jne 0x3a123be60
test r14b, 1
je 0x3a123be8a
and r14d, 0xfffffffe
lea r8d, [r14*8 + 8]
movsxd r8, r8d
lea r11, [rcx + r10]
mov qword [r11 + r8], rbp
add rdi, 2
add r10, r12
add rbp, r15
cmp rax, rdi
jne 0x3a123be10
mov r11, qword [rsp + 8]
mov rax, qword [rsp + 0x18]
mov r8d, r13d
test r13d, r13d
je 0x3a123bdc9
sub r8, 1
and r8, 0xfffffffffffffffe
lea rdi, [rbx + r8 + 0x6c]
xor r8d, r8d
movzx ebp, byte [rcx]
mov r10, r8
add r8, rax
add rcx, 2
and r10, rdx
mov dword [r11 + r10*8 + 4], ebp
mov r10, r8
movzx ebp, byte [rcx - 1]
add r8, rax
and r10, rdx
and r8, rdx
mov dword [r11 + r10*8 + 4], ebp
cmp rdi, rcx
jne 0x3a123bec3
jmp 0x3a123bd6a
mov r8d, 8
jmp 0x3a123be7f
mov rax, qword [rsp + 0x70]
lea rcx, [rbx + 0x6a]
mov qword [rax], r8
mov r8d, r13d
mov eax, r13d
shr r8d, 1
shr eax, 3
lea eax, [r8 + rax + 3]
jmp 0x3a123bea7
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov eax, dword [rsp + 0x98]
mov rsi, qword [rsp + 0x90]
mov rbx, qword [rsp + 0xa0]
mov rdi, rdx
mov edx, dword [rsp + 0xb0]
mov qword [rsp], rcx
mov r12d, r8d
mov dword [rsp + 0xc], eax
test edx, edx
jne 0x3a1245cc5
mov eax, dword [rsp + 0xc]
mov ebp, 1
lea r11, [rcx + 8]
mov r13d, ebp
mov ecx, eax
shl r13d, cl
mov ecx, eax
mov rax, rcx
sub ecx, 1
lea edx, [r13 - 1]
shl rax, 0x20
shl ebp, cl
or rax, 1
mov qword [rsp + 0x10], rax
mov r8, rax
cmp r12d, 0xffffffff
je 0x3a1245e1e
mov dword [rsp + 0x18], r13d
mov ecx, edx
xor eax, eax
xor r14d, r14d
mov r10d, 1
xor r15d, r15d
jmp 0x3a1245b8f
cmp bp, r13w
mov word [rbx + rax*2], r13w
mov r14d, 1
lea r13, [rax + 1]
cmovle r10, r15
cmp r12, rax
je 0x3a1245bba
mov rax, r13
movzx r13d, word [rdi + rax*2]
cmp r13w, 0xffff
jne 0x3a1245b70
mov r13d, ecx
sub ecx, 1
mov dword [r11 + r13*8 + 4], eax
mov r13d, 1
mov word [rbx + rax*2], r13w
lea r13, [rax + 1]
cmp r12, rax
jne 0x3a1245b8c
mov r13d, dword [rsp + 0x18]
test r14b, r14b
je 0x3a1245bd9
movabs rax, 0xffffffff00000000
and rax, r8
or rax, r10
mov qword [rsp + 0x10], rax
mov rax, qword [rsp]
mov r15, qword [rsp + 0x10]
mov qword [rax], r15
cmp edx, ecx
je 0x3a1245cf7
mov r8d, r13d
mov eax, r13d
mov dword [rsp + 0x10], r13d
xor ebp, ebp
shr eax, 3
shr r8d, 1
lea r8d, [r8 + rax + 3]
xor eax, eax
nop word [rax + rax]
movsx r14d, word [rdi + rbp*2]
mov r15d, ebp
test r14d, r14d
jle 0x3a1245c42
xor r10d, r10d
mov r13d, eax
mov dword [r11 + r13*8 + 4], r15d
nop dword [rax + rax]
add eax, r8d
and eax, edx
cmp ecx, eax
jb 0x3a1245c30
add r10d, 1
cmp r14d, r10d
jne 0x3a1245c20
lea r10, [rbp + 1]
cmp r12, rbp
je 0x3a1245c50
mov rbp, r10
jmp 0x3a1245c10
mov r13d, dword [rsp + 0x10]
test r13d, r13d
je 0x3a1245cb4
mov rax, qword [rsp]
movzx r8d, byte [rsp + 0xc]
lea rdi, [rax + rdx*8 + 0x10]
nop dword [rax]
mov edx, dword [r11 + 4]
lea rcx, [rbx + rdx*2]
movzx eax, word [rcx]
lea r10d, [rax + 1]
mov word [rcx], r10w
bsr r10d, eax
mov ecx, r8d
add r11, 8
sub ecx, r10d
shl eax, cl
mov byte [r11 - 5], cl
sub eax, r13d
mov word [r11 - 8], ax
movzx eax, byte [rsi + rdx]
mov byte [r11 - 6], al
mov eax, dword [r9 + rdx*4]
mov dword [r11 - 4], eax
cmp r11, rdi
jne 0x3a1245c70
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r8d, r12d
mov rdx, rdi
mov qword [rsp + 0xa0], rbx
mov dword [rsp + 0x98], eax
mov qword [rsp + 0x90], rsi
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp 0x3a123bbf0
mov r8d, r13d
mov eax, r13d
mov qword [rsp + 0x10], r11
lea r14, [rdi + r12*2]
shr r8d, 3
shr eax, 1
lea rcx, [rbx + 0x6a]
xor ebp, ebp
lea eax, [r8 + rax + 3]
xor r10d, r10d
movabs r15, 0x101010101010101
mov qword [rsp + 0x18], rax
mov rax, r14
movsx r12, word [rdi]
mov qword [rcx + r10], rbp
cmp r12w, 8
jle 0x3a1245da2
movsx r8d, r12w
sub r8d, 9
mov r14d, r8d
shr r14d, 3
add r14d, 1
cmp r8d, 7
jbe 0x3a1245e13
mov r11d, r14d
movq xmm0, rbp
lea r8, [rbx + r10 + 0x72]
shr r11d, 1
punpcklqdq xmm0, xmm0
shl r11, 4
add r11, r8
nop dword [rax + rax]
movups xmmword [r8], xmm0
add r8, 0x10
cmp r8, r11
jne 0x3a1245d78
test r14b, 1
je 0x3a1245da2
and r14d, 0xfffffffe
lea r8d, [r14*8 + 8]
movsxd r8, r8d
lea r11, [rcx + r10]
mov qword [r11 + r8], rbp
add r10, r12
add rbp, r15
lea r8, [rdi + 2]
cmp rax, rdi
je 0x3a1245db9
mov rdi, r8
jmp 0x3a1245d2c
mov r11, qword [rsp + 0x10]
mov rax, qword [rsp + 0x18]
mov r8d, r13d
test r13d, r13d
je 0x3a1245cb4
sub r8, 1
and r8, 0xfffffffffffffffe
lea rdi, [rbx + r8 + 0x6c]
xor r8d, r8d
movzx ebp, byte [rcx]
mov r10, rdx
add rcx, 2
and r10, r8
add r8, rax
mov dword [r11 + r10*8 + 4], ebp
mov r10, rdx
movzx ebp, byte [rcx - 1]
and r10, r8
add r8, rax
mov dword [r11 + r10*8 + 4], ebp
and r8, rdx
cmp rdi, rcx
jne 0x3a1245ddf
jmp 0x3a1245c5a
mov r8d, 8
jmp 0x3a1245d97
mov rax, qword [rsp]
lea rcx, [rbx + 0x6a]
mov qword [rax], r8
mov r8d, r13d
mov eax, r13d
shr r8d, 1
shr eax, 3
lea eax, [r8 + rax + 3]
jmp 0x3a1245dc3