Function at 0x1403a9940
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x40
test ecx, ecx
je 0x1403a99b4
mov eax, 0xac65a43e
add eax, dword [0x1405794f0]
cmp edx, eax
jne 0x1403a9a53
movzx eax, byte [0x140577d82]
cmp al, 0xc1
je 0x1403a9dcf
lea rsi, [rsp + 0x30]
nop dword [rax]
mov r8d, dword [0x1405794f0]
lea edx, [r8 + 0x13ca1da9]
add r8d, 0xd564872a
mov rcx, rsi
call fcn.1403b0670
cmp byte [rsp + 0x31], 0
jne 0x1403a9b3f
cmp byte [rsp + 0x30], 0xc1
jne 0x1403a9980
jmp 0x1403a9dcf
test edx, edx
je 0x1403a9aaf
movzx eax, byte [0x140578630]
cmp al, 0x87
je 0x1403a9cb5
lea rsi, [rsp + 0x30]
mov edi, 0xac65a491
jmp 0x1403a99e9
cmp bl, 0x87
je 0x1403a9cb5
mov rcx, rsi
mov edx, 0x54ed6629
mov r8d, 0x3211aff1
call fcn.1403af7c0
test al, 1
jne 0x1403a9c07
movzx ebx, byte [rsp + 0x30]
nop dword [rax]
mov eax, dword [0x1405926cc]
cmp eax, 0x61
jg 0x1403a9a2d
mov eax, dword [0x1405926cc]
mov ecx, dword [0x1405794f0]
add ecx, edi
cmp eax, ecx
jl 0x1403a99e0
mov ecx, dword [0x1405926cc]
mov r8d, dword [0x1405794f0]
lea edx, [r8 + 0x4b91db4e]
add r8d, 0x30117bae
call fcn.1403af3a0
test al, 1
je 0x1403a9a10
jmp 0x1403a9a1b
movzx ecx, byte [0x140577c74]
mov edx, 0x61e63823
mov r8d, 0xb05421ed
call fcn.1403af070
test al, 1
jne 0x1403a9e39
lea rsi, [rsp + 0x30]
nop word [rax + rax]
mov rcx, rsi
mov edx, 0xb05421ed
mov r8d, 0xb8e222da
call fcn.1403b01b0
test al, 1
jne 0x1403a9b81
movzx eax, byte [0x1405794f4]
add al, 0xec
cmp byte [rsp + 0x30], al
jne 0x1403a9a80
jmp 0x1403a9e39
movzx eax, byte [0x1405782a6]
cmp al, 0x61
je 0x1403a9db9
mov ebx, 0xac65a496
lea rsi, [rsp + 0x3f]
lea rdi, [rsp + 0x30]
xor ebp, ebp
mov r14b, 1
jmp 0x1403a9afa
movzx ecx, byte [0x1405794f4]
lea eax, [rcx + 0x70]
add cl, 0xb8
lock cmpxchg byte [0x1405782a6], cl
test r14b, r14b
jne 0x1403a9b0c
mov eax, dword [0x1405926cc]
mov ecx, dword [0x1405794f0]
add ecx, ebx
cmp eax, ecx
jge 0x1403a9ae0
mov rcx, rsi
mov rdx, rdi
mov r8d, 0xbf63b42c
mov r9d, 0x2188f21a
call fcn.1403b05e0
test bpl, bpl
jne 0x1403a9ae0
test byte [rsp + 0x30], 1
jne 0x1403a9cc1
cmp byte [rsp + 0x3f], 0x61
jne 0x1403a9afa
jmp 0x1403a9db9
xor eax, eax
lea rcx, [0x140577d80]
lea rdx, [0x140470940]
mov r8d, 0xac65a440
nop word cs:[rax + rax]
movzx r9d, byte [rax + rdx]
xor byte [rax + rcx], r9b
lea r9d, [rax + 1]
mov r10d, dword [0x1405794f0]
add r10d, r8d
cmp r9d, r10d
jge 0x1403a9bdb
inc rax
jmp 0x1403a9b60
xor edx, edx
lea rax, [0x140577c70]
lea rcx, [0x140470830]
nop word cs:[rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rcx]
xor byte [rdx + rax], r8b
mov r8d, edx
xor r8d, 1
and edx, 1
lea edx, [r8 + rdx*2]
cmp edx, 4
jl 0x1403a9ba0
mov ecx, 0x1e2ed85f
mov edx, 0x40c6372b
call fcn.1403b01e0
test al, 1
jne 0x1403a9dfe
jmp 0x1403a9e2f
mov edx, dword [0x1405794f0]
lea ecx, [rdx - 0x3b309861]
add edx, 0x3d339ea7
call fcn.14008abc0
cmp dword [0x1405794f0], 0x539a5bc2
je 0x1403a9dd8
jmp 0x1403a9de6
mov r8d, dword [0x1405794f0]
lea edx, [r8 - 0x5d9062ff]
add r8d, 0x332e1737
xor ecx, ecx
call fcn.1400712d0
nop word cs:[rax + rax]
mov eax, dword [0x1405926c8]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x1403a9c30
xor ecx, ecx
lea rsi, [rsp + 0x30]
lea rbx, [0x140471160]
lea r14, [0x140578620]
nop word cs:[rax + rax]
movsxd rdi, ecx
mov r9d, dword [0x1405794f0]
lea r8d, [r9 + 0x7c1d3b65]
add r9d, 0x276ea66f
mov rcx, rdi
mov rdx, rsi
call fcn.1403b0220
movzx eax, byte [rsp + 0x30]
xor al, byte [rdi + rbx]
mov byte [rdi + r14], al
mov ecx, edi
mov rdx, rsi
mov r8d, 0x95f06161
mov r9d, 0xf82f3d81
call fcn.140284530
mov ecx, dword [rsp + 0x30]
test al, 1
je 0x1403a9c60
mov al, 0x87
xchg byte [0x140578630], al
lea rax, [0x140578620]
jmp 0x1403a9dc0
xor r14d, r14d
lea rsi, [rsp + 0x30]
lea r15, [0x140470e20]
lea r12, [0x1405782a0]
xor ebp, ebp
xor edi, edi
nop dword [rax + rax]
mov ecx, 0xe5228e8
mov edx, 0xb232ad6b
call fcn.14008abc0
mov rcx, rsi
mov edx, 0x92e2e0bf
mov r8d, 0x4f280925
call fcn.1403b0340
cmp dword [rsp + 0x30], 0x4b
jg 0x1403a9d50
nop dword [rax]
mov ecx, edi
mov rdx, rsi
mov r8d, 0xd16e2068
mov r9d, 0x8bf2f39c
call fcn.1403b04d0
mov rax, qword [rsp + 0x30]
movzx eax, byte [rax]
add al, byte [rdi + r15]
mov byte [rdi + r12], al
test r14b, r14b
jne 0x1403a9d50
lea eax, [rdi + 1]
cmp eax, 5
jg 0x1403a9db1
inc rdi
dec ebp
jmp 0x1403a9ce0
movzx ebx, byte [rdi + r12]
movzx ecx, byte [rdi + r15]
mov edx, ebx
shl dl, cl
movzx ecx, byte [0x1405794f4]
sub cl, bl
add cl, 0x2a
mov dword [rsp + 0x20], 0xec5f75c4
mov r8, rsi
mov r9d, 0xe859e586
call fcn.140132700
movzx ecx, byte [rsp + 0x30]
mov eax, ebx
sub al, cl
mul cl
mov ecx, eax
sub bl, al
mov eax, ebx
mul cl
mov edx, ecx
sub dl, al
mov r8d, edx
shl r8b, cl
sub dl, r8b
mov eax, edx
mul r8b
add al, r8b
mov byte [rdi + r12], al
jmp 0x1403a9d10
mov al, 0x61
xchg byte [0x1405782a6], al
lea rax, [0x1405782a0]
add rsp, 0x40
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lea rax, [0x140577d80]
jmp 0x1403a9dc0
mov al, 0xc1
xchg byte [0x140577d82], al
mov al, 1
test al, al
jne 0x1403a9dcf
mov al, 1
nop dword [rax + rax]
mov cl, 0xc1
xchg byte [0x140577d82], cl
test al, al
je 0x1403a9df0
jmp 0x1403a9dd8
mov ecx, 0x495b5d35
mov edx, 0x8fb0d4bb
call fcn.1403af100
mov eax, dword [0x1405926c8]
mov ecx, dword [0x1405794f0]
mov edx, eax
sub edx, ecx
inc edx
imul edx, eax
and edx, 1
add ecx, 0xac65a43e
cmp edx, ecx
je 0x1403a9e39
mov al, 0xc2
xchg byte [0x140577c74], al
jmp 0x1403a9dfe
lea rax, [0x140577c70]
jmp 0x1403a9dc0