Function at 0x1403f14e0
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 esi, r9d
test ecx, ecx
je 0x1403f159f
test edx, edx
je 0x1403f163d
movzx ecx, byte [0x1405bb02d]
mov edx, esi
xor edx, 0xb6f67bef
mov eax, dword [0x1405bbb14]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb48]
call qword [case.0x14012b313.0]
test al, 1
jne 0x1403f17b3
mov bl, 0x54
mov edi, 0xd9a99bdf
nop dword [rax]
mov al, 0x5a
lock cmpxchg byte [0x1405bb02d], bl
je 0x1403f174e
mov edx, dword [0x1405bc3b8]
add edx, edi
xor edx, esi
mov ecx, dword [0x1405bbb04]
add ecx, esi
mov r8d, 0xc9a4a3fb
sub r8d, ecx
mov ecx, r8d
xor ecx, 0x365c32b4
and r8d, 0x365c32b4
lea ecx, [rcx + r8*2]
neg ecx
movsxd r8, ecx
add r8, qword [0x1405bbb60]
mov ecx, eax
mov rax, r8
call qword [case.0x14012b313.0]
test al, 1
je 0x1403f1540
jmp 0x1403f17b3
mov eax, 0xac65a43e
add eax, dword [0x1405bc3b8]
cmp edx, eax
jne 0x1403f16ee
movzx eax, byte [0x1405baf07]
cmp al, 0x44
je 0x1403f1916
mov ebx, esi
xor ebx, 0xd5bd1cf
lea rdi, [rsp + 0x40]
mov ebp, esi
xor ebp, 0x2fc9d562
nop word cs:[rax + rax]
mov eax, dword [0x1405bbb00]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb40]
mov rcx, rdi
mov edx, ebx
call qword [case.0x14012b313.0]
test al, 1
jne 0x1403f1857
movzx ecx, byte [rsp + 0x40]
mov eax, dword [0x1405bbb20]
add eax, esi
mov edx, dword [0x1405bc3b8]
add eax, edx
add eax, 0xac64cd8f
cdqe
add rax, qword [0x1405bbb30]
mov edx, ebp
call qword [case.0x14012b313.0]
test al, 1
je 0x1403f15e0
jmp 0x1403f1916
mov eax, 0xc6c7cf76
add eax, dword [0x1405bc3b8]
mov ecx, eax
xor ecx, eax
not ecx
and ecx, esi
xor ecx, eax
mov eax, dword [0x1405bbb10]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb68]
call qword [case.0x14012b313.0]
test al, 1
jne 0x1403f184b
mov bl, 0xdd
mov ebp, 0xea6976e0
lea rdi, [rsp + 0x40]
nop word cs:[rax + rax]
mov al, 0x5c
lock cmpxchg byte [0x1405baf69], bl
sete dl
mov ecx, dword [0x1405bc3b8]
add ecx, ebp
mov r9d, ecx
xor r9d, ecx
not r9d
and r9d, esi
xor r9d, ecx
mov ecx, dword [0x1405bbb28]
add ecx, esi
add ecx, 0xffff2951
movsxd r10, ecx
add r10, qword [0x1405bbb50]
mov ecx, eax
mov r8, rdi
mov rax, r10
call qword [case.0x14012b313.0]
test al, 1
jne 0x1403f17bf
cmp byte [rsp + 0x40], 0xb6
jne 0x1403f1690
jmp 0x1403f184b
movzx eax, byte [0x1405bb7bd]
cmp al, 0x2c
je 0x1403f197f
mov bl, 0xdd
mov edi, esi
xor edi, 0x1638096a
nop word [rax + rax]
mov al, 0x89
lock cmpxchg byte [0x1405bb7bd], bl
je 0x1403f191f
mov ecx, dword [0x1405bbb1c]
add ecx, esi
add ecx, 0xffff2951
movsxd r8, ecx
add r8, qword [0x1405bbb58]
mov ecx, eax
mov edx, edi
mov rax, r8
call qword [case.0x14012b313.0]
test al, 1
je 0x1403f1710
jmp 0x1403f197f
xor ecx, ecx
lea rbx, [0x1405bb020]
lea r14, [0x1404b0cc0]
mov ebp, esi
xor ebp, 0x4a2e0403
lea rdi, [rsp + 0x40]
nop dword [rax + rax]
movsxd r8, ecx
lea rdx, [rbx + r8]
movzx ecx, byte [r8 + rbx]
add cl, byte [r8 + r14]
mov eax, dword [0x1405bbb08]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb38]
mov dword [rsp + 0x20], ebp
mov r9, rdi
call qword [case.0x14012b313.0]
mov ecx, dword [rsp + 0x40]
test al, 1
je 0x1403f1770
mov al, 0x6b
xchg byte [0x1405bb02d], al
lea rax, [0x1405bb020]
jmp 0x1403f1986
xor edi, edi
lea r15, [0x1405baf50]
mov ebp, esi
xor ebp, 0xa9e077bc
lea rbx, [rsp + 0x3f]
lea r14, [rsp + 0x40]
lea r12, [0x1404b0bf0]
nop word cs:[rax + rax]
lea rcx, [r15 + rdi]
mov eax, dword [0x1405bbb0c]
mov edx, esi
sub edx, dword [0x1405bc3b8]
add eax, edx
add eax, 0x53998513
cdqe
add rax, qword [0x1405bbb80]
mov dword [rsp + 0x20], ebp
mov edx, edi
mov r8, rbx
mov r9, r14
call qword [case.0x14012b313.0]
movzx eax, byte [rsp + 0x3f]
mov rcx, qword [rsp + 0x40]
add al, byte [rcx + r12]
mov byte [rdi + r15], al
lea eax, [rdi + 1]
cmp eax, 0x18
jg 0x1403f1843
inc rdi
jmp 0x1403f17f0
mov al, 0xb6
xchg byte [0x1405baf69], al
lea rax, [0x1405baf50]
jmp 0x1403f1986
xor ebp, ebp
mov ebx, esi
xor ebx, 0xd9737a6a
lea r12, [0x1405baf00]
mov r13d, esi
xor r13d, 0x3d470438
lea r14, [rsp + 0x3f]
nop word [rax + rax]
mov eax, dword [0x1405bbb18]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb70]
mov ecx, ebp
mov rdx, rdi
mov r8d, ebx
call qword [case.0x14012b313.0]
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rax + r12]
movsxd r15, ebp
lea rax, [0x1404b0ba0]
movzx edx, byte [r15 + rax]
mov eax, dword [0x1405bbb24]
add eax, esi
add eax, 0xffff2951
cdqe
add rax, qword [0x1405bbb78]
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], rdi
mov r8d, r15d
mov r9, r14
call qword [case.0x14012b313.0]
movzx eax, byte [rsp + 0x3f]
mov rcx, qword [rsp + 0x40]
mov byte [rcx + r12], al
mov eax, r15d
xor eax, 1
and r15d, 1
lea ebp, [rax + r15*2]
cmp ebp, 7
jl 0x1403f1880
mov al, 0x44
xchg byte [0x1405baf07], al
lea rax, [0x1405baf00]
jmp 0x1403f1986
xor eax, eax
lea rcx, [0x1405bb7b0]
lea rdx, [0x1404b13d0]
nop
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
not r10b
mov r11d, r10d
xor r11b, r9b
not r9b
mov ebx, r8d
and bl, r9b
or bl, r11b
not bl
xor r9b, r10b
and r9b, r8b
or r9b, bl
mov byte [rax + rcx], r9b
lea r8d, [rax + 1]
cmp r8d, 0xc
jg 0x1403f1970
inc rax
jmp 0x1403f1930
movzx eax, byte [0x1405bc3bc]
add al, 0xd8
xchg byte [0x1405bb7bd], al
lea rax, [0x1405bb7b0]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret