Function at 0x180013860
Capabilities:
Encode data using xor
Get file size
Hash data with crc32
Read file on windows

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x2c0
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov rax, qword [0x18010f050]
xor rax, rsp
mov qword [rsp + 0x2b0], rax
mov rdi, r8
mov r12, rdx
mov rsi, rcx
test rdx, rdx
je 0x180014072
cmp word [rdx], 0
je 0x180014072
test r8, r8
jne 0x1800138bb
mov eax, 0x80070057
jmp 0x180014077
mov qword [rsp + 0xa0], r8
mov rax, qword [r8]
mov rcx, r8
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
xor ebx, ebx
mov qword [rsp + 0x40], rbx
mov rax, qword [rdi]
lea r8, [rsp + 0x40]
lea rdx, [0x1800ef658]
mov rcx, rdi
call qword [rax]
mov ebp, eax
test eax, eax
js 0x180014054
cmp eax, 1
je 0x180014054
cmp qword [rsp + 0x40], rbx
jne 0x180013915
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0x80004005
jmp 0x180014077
mov rcx, qword [rsi + 0x70]
cmp rcx, 0xffffffffffffffff
je 0x180013925
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsi + 0x380]
test rcx, rcx
je 0x18001393d
call fcn.18007702c
mov qword [rsi + 0x380], rbx
mov edx, 0xc0000000
mov r13d, 0x80000000
cmp dword [rsi + 0x24], 0
cmovne edx, r13d
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], 0x20000000
mov dword [rsp + 0x20], 3
xor r9d, r9d
lea r8d, [r9 + 1]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rsi + 0x70], rax
cmp rax, 0xffffffffffffffff
jne 0x180013a31
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp eax, 5
je 0x1800139d4
cmp eax, 0x20
je 0x1800139d4
cmp eax, 0xa7
je 0x1800139d4
cmp eax, 0x21
je 0x1800139d4
cmp eax, 0x13
je 0x1800139d4
test eax, eax
jle 0x1800139b3
movzx ebp, ax
or ebp, 0x80070000
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1800139c4
mov rdx, qword [rcx]
call qword [rdx + reloc.WS2_32.dll_recv]
nop
mov rdx, qword [rdi]
mov rcx, rdi
call qword [rdx + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], 3
xor r9d, r9d
lea r8d, [r9 + 1]
mov edx, r13d
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rsi + 0x70], rax
cmp rax, 0xffffffffffffffff
jne 0x180013a2a
call fcn.180003220
mov ebx, eax
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013a1a
mov rdx, qword [rcx]
call qword [rdx + reloc.WS2_32.dll_recv]
nop
mov rdx, qword [rdi]
mov rcx, rdi
call qword [rdx + reloc.WS2_32.dll_recv]
mov eax, ebx
jmp 0x180014077
mov dword [rsi + 0x24], 1
mov byte [rsp + 0xb0], 0
xor edx, edx
mov r8d, 0x1ff
lea rcx, [rsp + 0xb1]
call fcn.1800795c0
mov r13, qword [rsi + 0x70]
cmp r13, 0xffffffffffffffff
je 0x180014031
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov r12d, 0x200
test eax, eax
jne 0x180013a84
call fcn.180003220
mov ebp, eax
jmp 0x180013b27
mov dword [rsp + 0x48], ebx
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x48]
mov r8d, r12d
lea rdx, [rsp + 0xb0]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x180013b38
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp eax, 0x6f8
je 0x180013ad3
cmp eax, 0x3e6
je 0x180013ad3
test eax, eax
jle 0x180013b27
movzx ebp, ax
or ebp, 0x80070000
jmp 0x180013b27
mov edx, r12d
lea rcx, [rsi + 0x10]
call fcn.180003e00
mov ebp, eax
test eax, eax
js 0x180013b27
cmp eax, 1
je 0x180013b27
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x48]
mov r8d, r12d
mov rdx, qword [rsi + 0x10]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x180013b11
call fcn.180003220
mov ebp, eax
jmp 0x180013b27
mov r8, r12
mov rdx, qword [rsi + 0x10]
lea rcx, [rsp + 0xb0]
call fcn.1800785c0
jmp 0x180013b38
test ebp, ebp
js 0x180014036
cmp ebp, 1
je 0x180014036
cmp dword [rsp + 0xb0], 0x5120372
je 0x180013b69
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013b56
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0xe00e1001
jmp 0x180014077
lea rdx, [rsp + 0x60]
mov rcx, qword [rsi + 0x70]
call qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x180013ba4
call fcn.180003220
mov ebx, eax
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013b94
mov rdx, qword [rcx]
call qword [rdx + reloc.WS2_32.dll_recv]
nop
mov rdx, qword [rdi]
mov rcx, rdi
call qword [rdx + reloc.WS2_32.dll_recv]
mov eax, ebx
jmp 0x180014077
mov rax, qword [rsp + 0x60]
cqo
and edx, 0x1ff
add rax, rdx
mov rcx, rax
and eax, 0x1ff
sar rcx, 9
cmp rax, rdx
je 0x180013be9
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013bd6
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0xe0037001
jmp 0x180014077
mov qword [rsp + 0x60], rcx
mov dword [rsi + 0x80], ecx
mov dword [rsi + 0x88], ebx
mov eax, dword [rsp + 0xb4]
test eax, eax
jne 0x180013c5c
mov dword [rsi + 0x78], ebx
mov edx, dword [rsp + 0xc0]
mov dword [rsi + 0x84], edx
mov eax, dword [rsp + 0xcc]
shl rax, 9
mov qword [rsi + 0x30], rax
mov rcx, rsi
call fcn.180015be0
mov ebp, eax
test eax, eax
js 0x180013c3b
cmp eax, 1
jne 0x180013e9b
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013c4c
mov rdx, qword [rcx]
call qword [rdx + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
cmp eax, 1
jne 0x180013d5d
mov r8d, ebx
mov rcx, rbx
nop dword [rax + rax]
movzx eax, byte [rsp + rcx + 0xb0]
add r8d, eax
inc rcx
cmp rcx, r12
jl 0x180013c70
mov edx, dword [rsp + 0xc8]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
add ecx, eax
movzx eax, dl
add ecx, eax
mov eax, edx
shr eax, 0x18
add ecx, eax
sub r8d, ecx
cmp edx, r8d
je 0x180013cd4
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013cc1
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0xe0037001
jmp 0x180014077
mov dword [rsi + 0x78], 1
mov eax, dword [rsp + 0xc0]
mov dword [rsi + 0x370], eax
shr eax, 9
mov dword [rsi + 0x374], eax
mov eax, dword [rsp + 0xc4]
mov dword [rsi + 0x378], eax
mov eax, dword [rsp + 0xcc]
shl rax, 9
mov qword [rsi + 0x30], rax
mov rcx, rsi
call fcn.180015900
mov ebp, eax
test eax, eax
js 0x180013d3c
cmp eax, 1
je 0x180013d3c
mov rcx, rsi
call fcn.1800140a0
test eax, eax
jne 0x180013e9b
mov dword [rsi + 0x24], 1
jmp 0x180013e9b
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013d4d
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
cmp eax, 2
jne 0x180014010
mov r10d, dword [rsp + 0xbc]
mov dword [rsp + 0xbc], ebx
lea r9, [rsp + 0xb0]
or r8d, 0xffffffff
lea r11, [0x180115370]
nop dword [rax + rax]
mov ecx, r8d
movzx eax, byte [r9]
xor rcx, rax
movzx edx, cl
mov eax, r8d
shr eax, 8
mov r8d, dword [r11 + rdx*4]
xor r8d, eax
inc r9
sub r12d, 1
jne 0x180013d90
not r8d
cmp r10d, r8d
je 0x180013ddf
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013dcc
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0xe0037001
jmp 0x180014077
mov dword [rsi + 0x78], 2
test byte [rsp + 0xb8], 1
je 0x180013e3b
mov dword [rsi + 0x88], 1
mov r8, qword [rsp + 0x40]
lea rdx, [rsp + 0xb0]
mov rcx, rsi
call fcn.180014800
mov ebp, eax
test eax, eax
js 0x180013e1a
cmp eax, 1
jne 0x180013e88
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013e2b
mov rdx, qword [rcx]
call qword [rdx + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov eax, dword [rsp + 0xc0]
mov dword [rsi + 0x370], eax
shr eax, 9
mov dword [rsi + 0x374], eax
mov eax, dword [rsp + 0xc4]
mov dword [rsi + 0x378], eax
mov eax, dword [rsp + 0xcc]
shl rax, 9
mov qword [rsi + 0x30], rax
mov rcx, rsi
call fcn.180015900
mov ebp, eax
test eax, eax
js 0x180013ff2
cmp eax, 1
je 0x180013ff2
mov rcx, rsi
call fcn.1800140a0
test eax, eax
jne 0x180013e9b
mov dword [rsi + 0x24], 1
mov ecx, 8
call fcn.180076d78
test rax, rax
je 0x180013eb4
lea rcx, [rsp + 0x68]
mov qword [rax], rcx
jmp 0x180013eb7
mov rax, rbx
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x88], rbx
mov qword [rsp + 0x90], rbx
xor eax, eax
mov dword [rsp + 0x50], eax
mov dword [rsp + 0x54], eax
mov dword [rsp + 0x58], eax
mov dword [rsp + 0x54], ebx
mov rax, qword [rsi + 0x30]
shr rax, 9
mov dword [rsp + 0x58], eax
lea rdx, [rsp + 0x50]
mov rcx, rsi
call fcn.180015a40
mov ebp, eax
test eax, eax
js 0x180013f9c
cmp eax, 1
je 0x180013f9c
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x68]
call fcn.180006710
mov r9d, 1
mov r8, qword [rsp + 0x40]
lea rdx, [rsp + 0x68]
mov rcx, rsi
call fcn.1800035f0
mov ebp, eax
test eax, eax
jne 0x180013f46
mov dword [rsi + 0x28], 1
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x180013f58
call fcn.180076a50
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x88], rbx
mov qword [rsp + 0x90], rbx
mov rcx, qword [rsp + 0x68]
call fcn.180076a50
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013f8c
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x180013fae
call fcn.180076a50
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x88], rbx
mov qword [rsp + 0x90], rbx
mov rcx, qword [rsp + 0x68]
call fcn.180076a50
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180013fe2
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180014003
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180014021
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, 0xe0037000
jmp 0x180014077
mov ebp, 0x80070057
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180014047
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x180014065
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_recv]
mov eax, ebp
jmp 0x180014077
mov eax, 0xe00e1001
mov rcx, qword [rsp + 0x2b0]
xor rcx, rsp
call fcn.180076a70
add rsp, 0x2c0
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret