Function at 0x1403ad620
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, edx
test ecx, ecx
je 0x1403ad65e
mov ecx, dword [0x140579080]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0xeda651bb
add ecx, dword [0x140561988]
xor edx, edx
div ecx
test edx, edx
jne 0x1403ad930
jmp 0x1403ad921
test esi, esi
je 0x1403ad699
movzx eax, byte [0x14055facb]
cmp al, 0x2c
je 0x1403ad884
mov cl, 0x92
nop word cs:[rax + rax]
mov al, 0xc2
lock cmpxchg byte [0x14055facb], cl
je 0x1403ad70f
cmp al, 0x2c
jne 0x1403ad680
jmp 0x1403ad884
movzx eax, byte [0x1405600b3]
movzx ecx, byte [0x140561998]
add cl, 0xf4
cmp al, cl
je 0x1403ad909
mov sil, 0x2b
jmp 0x1403ad6c9
cmp bl, 6
je 0x1403ad909
mov al, 0x8b
lock cmpxchg byte [0x1405600b3], sil
je 0x1403ad890
mov ebx, eax
mov ecx, 0x9e972bae
mov edx, 0x1f5f9d67
call fcn.140136bd0
test al, 1
je 0x1403ad6fb
nop
mov eax, dword [0x140579084]
cmp eax, 0x19
jle 0x1403ad6c0
mov ecx, ebx
mov edx, 0xf4bc7457
mov r8d, 0x610be58b
call fcn.14008b8b0
jmp 0x1403ad6f0
xor esi, esi
lea rax, [fcn.1403ad620]
lea r14d, [rax + rax]
add r14d, 0x5c0
lea r15, [0x14055fac0]
lea r12, [0x140460070]
lea rdi, [rsp + 0x40]
lea rbx, [rsp + 0x3f]
jmp 0x1403ad74b
inc esi
cmp esi, 0xb
jge 0x1403ad87c
mov ecx, 0x31d498f8
mov edx, 0x606285e9
call fcn.14008b8b0
mov eax, dword [0x140561988]
mov ecx, 0xeda651ba
add eax, ecx
movsxd r13, esi
test r14d, eax
jne 0x1403ad7b0
nop
movzx ebp, byte [r13 + r15]
lea rcx, [r12 + r13]
mov rdx, rdi
mov r8d, 0xf64bf303
mov r9d, 0x5c36b1ed
call fcn.14015be50
add bpl, byte [rsp + 0x40]
mov byte [r13 + r15], bpl
mov eax, dword [0x140579080]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x1403ad740
nop dword [rax]
lea rcx, [r15 + r13]
mov eax, dword [0x140561988]
lea edx, [rax - 0x78e88c15]
add eax, 0x464e054d
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
mov edx, esi
mov r8, rbx
mov r9, rdi
call fcn.1403b2a30
movzx eax, byte [rsp + 0x3f]
movzx ecx, byte [rsp + 0x40]
sub al, cl
mul cl
shl al, cl
mov edx, ecx
sub dl, al
mov eax, edx
shl al, cl
mov ecx, eax
shl dl, cl
sub al, dl
mov r8d, edx
mov ecx, eax
shl r8b, cl
sub dl, r8b
mov eax, edx
mul r8b
mov ecx, r8d
shl al, cl
shl al, cl
mov edx, eax
shl dl, cl
mov ecx, edx
shl al, cl
lea r8d, [rsi - 1]
mov ecx, 2
sub ecx, esi
shl r8d, cl
add al, dl
mov byte [r13 + r15], al
mov eax, r8d
sub eax, ecx
imul eax, ecx
mov edx, r8d
sub edx, eax
lea eax, [r8 + rdx]
neg edx
imul edx, eax
sub r8d, edx
imul r8d, edx
mov dword [rsp + 0x20], 0x50af52a5
mov ecx, r8d
mov r8, rdi
mov r9d, 0xd04f388b
call fcn.140136c70
mov eax, dword [0x140579080]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x1403ad7b0
jmp 0x1403ad770
mov al, 0x2c
xchg byte [0x14055facb], al
lea rax, [0x14055fac0]
jmp 0x1403ad910
xor edi, edi
lea rbx, [0x1405600b0]
lea r14, [0x140460600]
lea rsi, [rsp + 0x40]
nop word cs:[rax + rax]
movsxd r8, edi
lea rdx, [rbx + r8]
movzx eax, byte [r8 + r14]
mov ecx, eax
xor cl, al
not cl
and cl, byte [r8 + rbx]
xor cl, al
mov dword [rsp + 0x28], 0x76e21509
mov dword [rsp + 0x20], 0x70c1d288
mov r9, rsi
call fcn.140394c20
mov edi, dword [rsp + 0x40]
mov ecx, edi
mov edx, 0x683d311f
mov r8d, 0x71890b31
call fcn.1400aabb0
test al, 1
je 0x1403ad8b0
movzx eax, byte [0x140561998]
add al, 0xf4
xchg byte [0x1405600b3], al
lea rax, [0x1405600b0]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov al, 1
test al, al
jne 0x1403ad970
nop word [rax + rax]
mov ecx, dword [0x140579084]
mov eax, dword [0x140561988]
mov edx, eax
xor edx, 0x5e9d8335
mov r8d, eax
and r8d, 0x5e9d8335
lea edx, [rdx + r8*2]
mov r8d, eax
xor r8d, 0xb1b5bb03
and eax, 0x31b5bb03
lea r8d, [r8 + rax*2]
call fcn.140168ab0
test al, 1
je 0x1403ad930
jmp 0x1403ad921
test esi, esi
je 0x1403ada0f
movzx eax, byte [0x14055ffb2]
cmp al, 0x55
je 0x1403add28
mov dil, 0xc0
lea rsi, [rsp + 0x40]
xor ebp, ebp
jmp 0x1403ad9ab
test byte [rsp + 0x40], 1
jne 0x1403add28
mov al, 0xdb
lock cmpxchg byte [0x14055ffb2], dil
je 0x1403ada78
mov ebx, eax
mov eax, dword [0x140579080]
mov ecx, dword [0x140561988]
neg ecx
add ecx, eax
add ecx, 0x1259ae46
imul ecx, eax
test cl, 1
jne 0x1403ad9fb
nop dword [rax]
mov ecx, ebx
mov rdx, rsi
mov r8d, 0x4d975c97
mov r9d, 0xf9d93de6
call fcn.1403b2470
test bpl, bpl
je 0x1403ad9a0
mov ecx, ebx
mov edx, 0x42ffa89f
mov r8d, 0xac401d56
call fcn.1403b1960
jmp 0x1403ad9e0
movzx eax, byte [0x14055f709]
cmp al, 0xe0
je 0x1403adce4
mov cl, 0x2b
xor edx, edx
jmp 0x1403ada38
cmp al, 0xe0
je 0x1403adce4
mov al, 0x16
lock cmpxchg byte [0x14055f709], cl
je 0x1403adb2a
nop dword [rax + rax]
mov r8d, dword [0x140579084]
cmp r8d, 0x3e
jg 0x1403ada61
test dl, dl
je 0x1403ada30
mov r8d, dword [0x140579080]
lea r9d, [r8 - 1]
imul r9d, r8d
test r9b, 1
jne 0x1403ada50
jmp 0x1403ada5d
xor esi, esi
lea rdi, [rsp + 0x40]
lea rbx, [0x140460520]
lea r14, [0x14055ffb0]
mov ebp, 0xeda651bb
nop word cs:[rax + rax]
mov ecx, esi
mov rdx, rdi
mov r8d, 0xe4d582cd
mov r9d, 0xc0e76b7f
call fcn.1403b2ab0
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rsi + rbx]
mov edx, ecx
xor dl, cl
not dl
and dl, byte [rax]
xor dl, cl
mov byte [rsi + r14], dl
lea eax, [rsi + 1]
mov ecx, dword [0x140561988]
add ecx, ebp
cmp eax, ecx
jge 0x1403adae1
inc rsi
jmp 0x1403adaa0
mov eax, dword [0x140561988]
lea ecx, [rax - 0x35a9f4be]
mov edx, eax
xor edx, 0x6b1f5914
and eax, 0x6b1f5914
lea edx, [rdx + rax*2]
call fcn.14008b8b0
mov ecx, dword [0x140579080]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0xeda651bb
add ecx, dword [0x140561988]
xor edx, edx
div ecx
test edx, edx
jne 0x1403add00
jmp 0x1403adcf0
xor esi, esi
lea rdi, [rsp + 0x40]
lea r14, [0x14055f700]
lea r15, [0x14045fce0]
mov ebp, 0xeda651b9
mov r12b, 1
jmp 0x1403adb6a
inc esi
mov eax, ebx
xor eax, 0xeda651c2
and ebx, 0x6da651c2
lea eax, [rax + rbx*2]
cmp esi, eax
jge 0x1403adc8c
mov eax, dword [0x140579084]
cmp eax, 0x1c
jg 0x1403adbe0
nop word cs:[rax + rax]
mov ecx, esi
mov rdx, rdi
mov r8d, 0x42dec264
mov r9d, 0x58cfd9cb
call fcn.1400aa120
mov rax, qword [rsp + 0x40]
movzx eax, byte [rax + r14]
movsxd rcx, esi
xor al, byte [rcx + r15]
mov byte [rcx + r14], al
mov ebx, dword [0x140561988]
mov rcx, rdi
mov edx, 0x24398751
mov r8d, 0x447db0a6
call fcn.14015bfb0
mov eax, dword [0x140561988]
add eax, ebp
cmp dword [rsp + 0x40], eax
je 0x1403adb50
nop word cs:[rax + rax]
mov ecx, esi
mov rdx, rdi
mov r8d, 0xabce6b1b
mov r9d, 0x8693f11
call fcn.1400aa120
mov rax, qword [rsp + 0x40]
movzx r13d, byte [rax + r14]
mov ecx, 0x50
call fcn.1403d5a14
mov dword [rsp + 0x20], 0x267cd29c
mov rcx, rax
mov edx, esi
mov r8, rdi
mov r9d, 0xdbd2d760
call fcn.1403b2170
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rax]
mov eax, r13d
shl al, cl
mov ebx, eax
xor bl, al
not bl
and bl, r13b
xor bl, al
mov ecx, esi
mov rdx, rdi
mov r8d, 0x8134d91
mov r9d, 0xc9b66702
call fcn.1403b1a90
mov rdx, qword [rsp + 0x40]
mov eax, dword [0x140561988]
lea ecx, [rax - 0x19fea185]
add eax, 0x1cfec728
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], ecx
mov ecx, ebx
mov r8d, esi
mov r9, rdi
call fcn.1403b19e0
test r12b, r12b
je 0x1403adbe0
jmp 0x1403adb80
mov ecx, 0x8693f11
mov edx, 0xe8ca9d6a
call fcn.14008b8b0
mov eax, dword [0x140579080]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x1403adcc0
mov al, pe_nt_image_headers64
xchg byte [0x14055f709], al
mov eax, dword [0x140579084]
cmp eax, 0x24
jl 0x1403adce4
nop
mov al, pe_nt_image_headers64
xchg byte [0x14055f709], al
mov ecx, dword [0x140579084]
mov edx, 0xd78493e6
mov r8d, 0xbd35d2cd
call fcn.1403b26a0
test al, 1
je 0x1403adcc0
jmp 0x1403adcac
lea rax, [0x14055f700]
jmp 0x1403ad910
mov al, 0x55
xchg byte [0x14055ffb2], al
mov al, 1
test al, al
jne 0x1403add28
nop
mov al, 0x55
xchg byte [0x14055ffb2], al
mov eax, dword [0x140579080]
mov ecx, dword [0x140561988]
neg ecx
add ecx, eax
add ecx, 0xeda651ba
imul ecx, eax
test cl, 1
jne 0x1403add00
jmp 0x1403adcf0
lea rax, [0x14055ffb0]
jmp 0x1403ad910