Function at 0x180003860
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
lea rbp, [rsp - 0x120]
sub rsp, 0x220
lea rdi, [rcx + 0x10]
mov rsi, rcx
mov rcx, rdi
call fcn.180001a60
cmp qword [rsi + 8], 0
jbe 0x180003d10
xor r13d, r13d
mov dword [rbp + 0x160], 0x423728
mov qword [rbp + 0x168], r13
movabs r9, 0xaaaaaaaaaaaaaaab
mov rax, qword [rbp + 0x168]
nop dword [rax]
mov rcx, qword [rbp + 0x168]
mov rax, qword [rbp + 0x168]
movzx r8d, byte [rbp + rax + 0x161]
mov rax, r9
mul rcx
shr rdx, 4
movzx eax, dl
add al, al
add dl, al
mov rax, qword [rbp + 0x168]
shl dl, 3
sub cl, dl
mov edx, 0x56f0d040
sar edx, cl
xor dl, r8b
mov byte [rbp + rax + 0x161], dl
mov rax, qword [rbp + 0x168]
inc rax
mov qword [rbp + 0x168], rax
mov rax, qword [rbp + 0x168]
cmp rax, 2
jb 0x1800038c0
cmp qword [rsi + 0x30], 0x10
lea rcx, [rsi + 0x18]
mov byte [rbp + 0x163], r13b
jb 0x180003938
mov rcx, qword [rcx]
lea rdx, [rbp + 0x161]
call fcn.180251264
mov r12, rax
test rax, rax
je 0x180003d10
mov rcx, qword [rsi]
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], r13
mov rbx, qword [rcx]
cmp rbx, rcx
je 0x180003a60
nop dword [rax]
mov eax, dword [rbx + 0x18]
lea r9, [rbp + 0x170]
sub eax, dword [rbx + 0x10]
lea r8, [rbp + 0x170]
mov dword [rbp + 0x170], eax
mov qword [rsp + 0x68], r13
mov qword [rbp + 0x168], 4
mov rcx, qword [rbp + 0x168]
mov rax, qword [rsp + 0x68]
add rcx, rax
mov qword [rbp + 0x168], rcx
lea rcx, [rsp + 0x30]
mov rax, qword [rbp + 0x168]
mov rdx, qword [rsp + 0x38]
add r9, rax
call fcn.180240710
mov r9, qword [rbx + 0x18]
lea rcx, [rsp + 0x30]
mov r8, qword [rbx + 0x10]
mov rdx, qword [rsp + 0x38]
call fcn.180240710
mov eax, dword [rbx + 0x30]
lea r9, [rbp + 0x170]
sub eax, dword [rbx + 0x28]
lea r8, [rbp + 0x170]
mov dword [rbp + 0x170], eax
mov qword [rbp + 0x168], 1
mov qword [rsp + 0x68], 3
mov rcx, qword [rbp + 0x168]
mov rax, qword [rsp + 0x68]
add rcx, rax
mov qword [rbp + 0x168], rcx
lea rcx, [rsp + 0x30]
mov rax, qword [rbp + 0x168]
mov rdx, qword [rsp + 0x38]
add r9, rax
call fcn.180240710
mov r9, qword [rbx + 0x30]
lea rcx, [rsp + 0x30]
mov r8, qword [rbx + 0x28]
mov rdx, qword [rsp + 0x38]
call fcn.180240710
mov rbx, qword [rbx]
cmp rbx, qword [rsi]
jne 0x180003970
mov dword [rbp + 0x168], r13d
mov eax, dword [rbp + 0x168]
nop dword [rax]
mov ecx, dword [rbp + 0x168]
mov eax, dword [rbp + 0x168]
mov byte [rsp + rax + 0x48], cl
mov eax, dword [rbp + 0x168]
inc eax
mov dword [rbp + 0x168], eax
mov eax, dword [rbp + 0x168]
cmp eax, 0x20
jb 0x180003a70
mov r14, qword [rsp + 0x38]
xorps xmm0, xmm0
mov rbx, r14
mov qword [rbp - 0x80], r13
movdqu xmmword [rsp + 0x70], xmm0
sub rbx, qword [rsp + 0x30]
je 0x180003b00
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
ja 0x180003d2f
mov rdx, rbx
lea rcx, [rsp + 0x70]
call fcn.18023c020
mov rsi, qword [rsp + 0x70]
mov r8, rbx
mov rcx, rsi
xor edx, edx
call fcn.18024b360
lea rax, [rsi + rbx]
mov qword [rsp + 0x78], rax
jmp 0x180003b05
mov rsi, qword [rsp + 0x70]
movzx eax, byte [rsp + 0x48]
lea rdx, [rsp + 0x48]
mov byte [rbp - 0xc], al
lea rcx, [rbp - 0x70]
movzx eax, byte [rsp + 0x49]
mov byte [rbp - 0xb], al
movzx eax, byte [rsp + 0x4a]
mov byte [rbp - 0xa], al
movzx eax, byte [rsp + 0x4b]
mov byte [rbp - 9], al
movzx eax, byte [rsp + 0x4c]
mov byte [rbp - 8], al
movzx eax, byte [rsp + 0x4d]
mov byte [rbp - 7], al
movzx eax, byte [rsp + 0x4e]
mov byte [rbp - 6], al
movzx eax, byte [rsp + 0x4f]
mov byte [rbp - 5], al
movzx eax, byte [rsp + 0x50]
mov byte [rbp - 4], al
movzx eax, byte [rsp + 0x51]
mov byte [rbp - 3], al
movzx eax, byte [rsp + 0x52]
mov byte [rbp - 2], al
movzx eax, byte [rsp + 0x53]
mov byte [rbp - 1], al
movzx eax, byte [rsp + 0x54]
mov byte [rbp], al
movzx eax, byte [rsp + 0x55]
mov byte [rbp + 1], al
movzx eax, byte [rsp + 0x56]
mov byte [rbp + 2], al
movzx eax, byte [rsp + 0x57]
mov byte [rbp + 3], al
call fcn.180001ff0
sub r14d, dword [rsp + 0x30]
lea rcx, [rbp - 0x70]
mov rdx, qword [rsp + 0x30]
mov r8d, r14d
mov r9, rsi
call fcn.1800024e0
mov qword [rbp + 0x168], 0x1b
lea rdx, [rsp + 0x48]
mov qword [rbp + 0x160], 5
mov rcx, qword [rbp + 0x160]
mov rax, qword [rbp + 0x168]
add rcx, rax
mov qword [rbp + 0x160], rcx
lea rcx, [rbp + 0x10]
mov r8, qword [rbp + 0x160]
call fcn.1800029a0
mov r8d, dword [rsp + 0x78]
lea rcx, [rbp + 0x10]
mov rdx, qword [rsp + 0x70]
sub r8d, edx
call fcn.180002ae0
mov dword [rbp + 0x168], 0x39fcfd42
mov r9, r12
mov dword [rbp + 0x160], 0xd515347
mov edx, 1
mov ecx, dword [rbp + 0x160]
mov eax, dword [rbp + 0x168]
add ecx, eax
mov dword [rbp + 0x160], ecx
mov eax, dword [rbp + 0x160]
mov dword [rbp + 0x178], eax
mov qword [rbp + 0x168], 4
mov qword [rbp + 0x160], r13
mov rcx, qword [rbp + 0x160]
mov rax, qword [rbp + 0x168]
add rcx, rax
mov qword [rbp + 0x160], rcx
lea rcx, [rbp + 0x178]
mov r8, qword [rbp + 0x160]
call fcn.180252740
mov rbx, qword [rsp + 0x70]
mov r9, r12
mov r8, qword [rsp + 0x78]
mov edx, 1
sub r8, rbx
mov rcx, rbx
call fcn.180252740
mov rcx, r12
call fcn.1802518f4
test rbx, rbx
je 0x180003cd8
mov rdx, qword [rbp - 0x80]
mov rax, rbx
sub rdx, rbx
cmp rdx, 0x1000
jb 0x180003cd0
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180003d29
mov rcx, rbx
call fcn.180249cb8
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x180003d10
mov rdx, qword [rsp + 0x40]
mov rax, rcx
sub rdx, rcx
cmp rdx, 0x1000
jb 0x180003d0b
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180003d29
call fcn.180249cb8
mov rcx, rdi
add rsp, 0x220
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
jmp fcn.180001bf0
call fcn.1802514a4
int3
call fcn.18023c000
int3