Function at 0x180004c70
Capabilities:
Encode data using xor
Get disk size

Disassembly:
push rbp
push rdi
push r13
lea rbp, [rsp - 0xc790]
mov eax, 0xc890
call fcn.180012fa0
sub rsp, rax
mov rax, qword [0x1800250f0]
xor rax, rsp
mov qword [rbp + 0xc770], rax
mov r9d, dword [0x180027a98]
movsxd r13, edx
mov eax, 0x55555556
lea r10d, [r9 + 1]
xor edi, edi
mov qword [rsp + 0x58], rcx
mov r8d, r10d
mov dword [rsp + 0x4c], r13d
imul r8d, r9d
imul r8d
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*2]
sub r8d, eax
cmp r8d, 1
jne 0x180004d05
test r9d, r9d
je 0x180004cf8
dec r9d
je 0x180004ced
mov r9d, r10d
mov dword [0x180027a98], r10d
jmp 0x180004d05
mov r9d, edi
mov dword [0x180027a98], edi
jmp 0x180004d05
mov r9d, 2
mov dword [0x180027a98], r9d
test r13d, r13d
jne 0x180004d11
xor eax, eax
jmp 0x1800055f7
mov rax, qword [str.bhmodev1ll]
mov qword [rsp + 0xc8c8], r12
mov qword [rbp + 0x930], rax
mov rax, qword [0x180021600]
mov qword [rbp + 0x938], rax
mov eax, dword [0x180021608]
mov dword [rbp + 0x940], eax
movzx eax, word [0x18002160c]
mov word [rbp + 0x944], ax
mov eax, 0x72
mov word [rbp + 0x934], ax
mov eax, 0x2e
mov word [rbp + 0x93c], ax
mov eax, 0x6d
mov word [rbp + 0x938], ax
lea eax, [r9 + 1]
imul eax, r9d
and eax, 0x8000000f
jge 0x180004d89
dec eax
or eax, 0xfffffff0
inc eax
cmp eax, 0xb
jne 0x180004e2e
mov edx, edi
mov ecx, edx
mov eax, edx
inc edx
sar eax, 1
and ecx, 1
dec ecx
not ecx
and ecx, r9d
xor ecx, eax
mov eax, ecx
sar ecx, 1
and eax, 1
dec eax
not eax
and eax, r9d
xor eax, ecx
mov ecx, eax
sar eax, 1
and ecx, 1
dec ecx
not ecx
and ecx, r9d
xor ecx, eax
mov eax, ecx
sar ecx, 1
and eax, 1
dec eax
not eax
and eax, r9d
xor eax, ecx
mov ecx, eax
sar eax, 1
and ecx, 1
dec ecx
not ecx
and ecx, r9d
xor ecx, eax
mov eax, ecx
sar ecx, 1
and eax, 1
dec eax
not eax
and eax, r9d
xor eax, ecx
mov ecx, eax
sar eax, 1
and ecx, 1
dec ecx
not ecx
and ecx, r9d
xor ecx, eax
mov eax, ecx
sar ecx, 1
and eax, 1
dec eax
not eax
and eax, r9d
xor eax, ecx
add r9d, eax
cmp edx, 0x100
jl 0x180004d94
mov dword [0x180027a98], r9d
mov eax, 0x63
lea rcx, [rbp + 0x930]
mov word [rbp + 0x930], ax
mov eax, 0x64
mov word [rbp + 0x93e], ax
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov r12, rax
test rax, rax
jne 0x180004ea4
mov eax, dword [0x180027a98]
lea ecx, [rax + 1]
imul ecx, eax
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
shl eax, 2
sub ecx, eax
cmp ecx, 0xb
jne 0x180004e9a
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
mov eax, 1
jmp 0x1800055ef
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rsp + 0xc8b8], rbx
mov qword [rsp + 0xc8c0], rsi
mov qword [rsp + 0xc888], r14
mov qword [rsp + 0xc880], r15
mov r15d, dword [0x180027a98]
movaps xmmword [rsp + 0x70], xmm0
movaps xmmword [rbp - 0x80], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmm1, xmmword [rax + 0x30]
mov eax, 0x92492493
lea ecx, [r15 + 1]
movaps xmmword [rbp - 0x70], xmm0
movaps xmmword [rbp - 0x60], xmm1
imul ecx, r15d
imul ecx
add edx, ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0xe
sub ecx, edx
cmp ecx, 5
jne 0x18000504a
mov rbx, rdi
call fcn.1800088d4
inc rbx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rbp + rbx*8 + 0xb8], xmm0
cmp rbx, 0x44
jb 0x180004f17
mov r10d, 0x43
mov r9, rdi
lea r11d, [r10 + 1]
nop word [rax + rax]
mov edx, 0x43
cmp r9, rdx
jge 0x180005034
cmp r10, 4
jl 0x180004ffd
mov r8d, 0x3f
lea rcx, [rbp + 0x2c8]
sub r8, r9
shr r8, 2
inc r8
lea rax, [r8*4]
sub rdx, rax
nop word [rax + rax]
movsd xmm0, qword [rcx + 0x10]
movsd xmm1, qword [rcx + 8]
comisd xmm0, xmm1
jbe 0x180004faa
movsd qword [rcx + 0x10], xmm1
movsd qword [rcx + 8], xmm0
movsd xmm0, qword [rcx + 8]
movsd xmm1, qword [rcx]
comisd xmm0, xmm1
jbe 0x180004fc2
movsd qword [rcx + 8], xmm1
movsd qword [rcx], xmm0
movsd xmm0, qword [rcx]
movsd xmm1, qword [rcx - 8]
comisd xmm0, xmm1
jbe 0x180004fda
movsd qword [rcx], xmm1
movsd qword [rcx - 8], xmm0
movsd xmm0, qword [rcx - 8]
movsd xmm1, qword [rcx - 0x10]
comisd xmm0, xmm1
jbe 0x180004ff4
movsd qword [rcx - 8], xmm1
movsd qword [rcx - 0x10], xmm0
sub rcx, 0x20
dec r8
jne 0x180004f90
cmp rdx, r9
jle 0x180005034
movsd xmm0, qword [rbp + rdx*8 + 0xc0]
movsd xmm1, qword [rbp + rdx*8 + 0xb8]
comisd xmm0, xmm1
jbe 0x18000502c
movsd qword [rbp + rdx*8 + 0xc0], xmm1
movsd qword [rbp + rdx*8 + 0xb8], xmm0
dec rdx
cmp rdx, r9
jg 0x180005002
inc r9
dec r10
dec r11
jne 0x180004f50
mov r15d, dword [0x180027a98]
movsxd rdi, dword [rbp - 0x54]
mov ecx, r15d
mov eax, 0x4ec4ec4f
add rdi, r12
imul ecx, r15d
imul ecx, r15d
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0xd
sub ecx, edx
cmp ecx, 3
jne 0x18000508b
mov ecx, 4
call fcn.180008604
mov r15d, dword [0x180027a98]
mov dword [rax], r15d
lea rcx, [rbp - 0x50]
mov rax, rdi
lea r9, [rbp - 0x50]
or rax, rcx
mov rdx, rdi
and eax, 0xf
jne 0x18000510a
mov eax, 2
nop word [rax + rax]
movaps xmm0, xmmword [rdx]
movaps xmm1, xmmword [rdx + 0x10]
lea rcx, [rcx + 0x80]
lea rdx, [rdx + 0x80]
movaps xmmword [rcx - 0x80], xmm0
movaps xmm0, xmmword [rdx - 0x60]
movaps xmmword [rcx - 0x70], xmm1
movaps xmm1, xmmword [rdx - 0x50]
movaps xmmword [rcx - 0x60], xmm0
movaps xmm0, xmmword [rdx - 0x40]
movaps xmmword [rcx - 0x50], xmm1
movaps xmm1, xmmword [rdx - 0x30]
movaps xmmword [rcx - 0x40], xmm0
movaps xmm0, xmmword [rdx - 0x20]
movaps xmmword [rcx - 0x30], xmm1
movaps xmm1, xmmword [rdx - 0x10]
movaps xmmword [rcx - 0x20], xmm0
movaps xmmword [rcx - 0x10], xmm1
dec rax
jne 0x1800050b0
mov rax, qword [rdx]
mov qword [rcx], rax
jmp 0x180005118
mov r8d, 0x108
mov rcx, r9
call fcn.180007f20
mov rax, qword [rbp - 0x50]
xor r11d, r11d
add rdi, 0x108
shr rax, 0x30
mov esi, r11d
mov r14d, eax
test eax, eax
jle 0x180005331
nop dword [rax + rax]
lea ecx, [r15 + 1]
mov eax, 0x30c30c31
imul ecx, r15d
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x15
sub ecx, edx
cmp ecx, 0xb
jne 0x18000529a
mov rbx, r11
nop word [rax + rax]
call fcn.1800088d4
inc rbx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [rbp + rbx*8 + 0x2d8], xmm0
cmp rbx, 0xc9
jb 0x180005170
mov r9d, 0xc8
xor r11d, r11d
lea r10d, [r9 + 1]
mov r8d, r11d
mov ecx, 0xc8
cmp r8, rcx
jge 0x180005284
cmp r9, 4
jl 0x18000524d
mov edx, 0xc4
mov ecx, 0x32
lea rax, [rbp + 0x910]
sub rdx, r8
shr rdx, 2
inc rdx
sub rcx, rdx
shl rcx, 2
nop dword [rax]
movsd xmm0, qword [rax + 0x10]
movsd xmm1, qword [rax + 8]
comisd xmm0, xmm1
jbe 0x1800051fa
movsd qword [rax + 0x10], xmm1
movsd qword [rax + 8], xmm0
movsd xmm0, qword [rax + 8]
movsd xmm1, qword [rax]
comisd xmm0, xmm1
jbe 0x180005212
movsd qword [rax + 8], xmm1
movsd qword [rax], xmm0
movsd xmm0, qword [rax]
movsd xmm1, qword [rax - 8]
comisd xmm0, xmm1
jbe 0x18000522a
movsd qword [rax], xmm1
movsd qword [rax - 8], xmm0
movsd xmm0, qword [rax - 8]
movsd xmm1, qword [rax - 0x10]
comisd xmm0, xmm1
jbe 0x180005244
movsd qword [rax - 8], xmm1
movsd qword [rax - 0x10], xmm0
sub rax, 0x20
dec rdx
jne 0x1800051e0
cmp rcx, r8
jle 0x180005284
movsd xmm0, qword [rbp + rcx*8 + 0x2e0]
movsd xmm1, qword [rbp + rcx*8 + 0x2d8]
comisd xmm0, xmm1
jbe 0x18000527c
movsd qword [rbp + rcx*8 + 0x2e0], xmm1
movsd qword [rbp + rcx*8 + 0x2d8], xmm0
dec rcx
cmp rcx, r8
jg 0x180005252
inc r8
dec r9
dec r10
jne 0x1800051a2
mov r15d, dword [0x180027a98]
mov eax, dword [rdi]
mov r9d, dword [rdi + 8]
mov r10d, dword [rdi + 0xc]
mov r8d, dword [rdi + 0x24]
mov dword [rsp + 0x70], eax
mov eax, dword [rdi + 4]
mov dword [rsp + 0x74], eax
mov eax, dword [rdi + 0x10]
mov ecx, r15d
mov dword [rbp - 0x80], eax
mov eax, dword [rdi + 0x14]
imul ecx, r15d
mov dword [rbp - 0x7c], eax
mov eax, dword [rdi + 0x18]
add rdi, 0x28
mov dword [rbp - 0x78], eax
mov eax, dword [rdi - 0xc]
mov dword [rbp - 0x74], eax
mov eax, dword [rdi - 8]
mov dword [rbp - 0x70], eax
mov eax, 0x30c30c31
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x15
sub ecx, edx
cmp ecx, 0x11
jne 0x18000531e
mov ecx, r11d
test r15d, r15d
je 0x180005315
nop
mov eax, r15d
and eax, 1
add ecx, eax
mov eax, r15d
cdq
sub eax, edx
sar eax, 1
mov r15d, eax
jne 0x180005300
mov r15d, ecx
mov dword [0x180027a98], ecx
test r8b, 0x20
jne 0x18000533b
inc esi
cmp esi, r14d
jl 0x180005140
jmp 0x18000533b
mov r10d, dword [rsp + 0x7c]
mov r9d, dword [rsp + 0x78]
add r10, r12
mov eax, r9d
mov edi, r11d
add rax, 0xffffffffffffffce
mov dword [rsp + 0x30], r11d
mov r9, r13
add rax, r10
mov qword [rsp + 0x50], r10
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x60], rax
cmp r10, rax
jae 0x1800055ca
movabs rdx, 0x2aaaaaaaaaaaaaab
mov r8, r11
mov qword [rsp + 0x38], r11
test r9, r9
jle 0x1800055b9
mov r13, qword [rsp + 0x58]
add r13, 0x20
nop
cmp byte [r13 + 0x36], 0
jne 0x180005596
mov rsi, qword [r13 - 0x18]
mov rcx, qword [r13 - 0x10]
mov rax, rdx
sub rcx, rsi
mov rbx, r10
mov r14d, r11d
imul rcx
mov r12, rdx
sar r12, 2
mov rax, r12
shr rax, 0x3f
add r12, rax
je 0x180005518
nop dword [rax]
mov rcx, qword [rsi]
mov rdi, qword [rsi + 8]
sub rdi, rcx
cmp rdi, 4
jb 0x1800054b5
mov eax, dword [rcx]
cmp dword [rbx], eax
jne 0x180005403
lea r8, [rdi - 4]
lea rdx, [rbx + 4]
add rcx, 4
call fcn.180013e40
test eax, eax
je 0x1800054ec
lea ecx, [r15 + 1]
mov eax, 0x92492493
imul ecx, r15d
imul ecx
add edx, ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0xe
sub ecx, edx
cmp ecx, 5
jne 0x18000557f
lea rcx, [rbp + 0x952]
xor edi, edi
xor edx, edx
mov r8d, 0xbe1e
mov word [rbp + 0x950], di
call fcn.18000ab50
xor r11d, r11d
mov r10d, r11d
mov r9d, r11d
mov r8, r11
test r10, r10
je 0x180005482
test r8, r8
je 0x180005482
lea rdx, [r8 + r9]
lea rax, [r8 + r9]
movzx ecx, word [rbp + rax*2 + 0x818]
inc cx
add cx, word [rbp + rdx*2 + 0x94e]
mov word [rbp + rdx*2 + 0x950], cx
inc r8
cmp r8, 0x9c
jl 0x180005455
add r9, 0x9c
inc r10
cmp r9, 0x5f10
jl 0x180005452
movsx r15d, word [rbp + 0xc76e]
mov dword [0x180027a98], r15d
jmp 0x180005582
test rdi, rdi
jne 0x1800054bf
inc rbx
jmp 0x1800054ef
movzx eax, byte [rcx]
cmp byte [rbx], al
jne 0x18000557f
lea r8, [rdi - 1]
inc rbx
test r8, r8
je 0x1800054ef
inc rcx
mov rdx, rbx
call fcn.180013e40
test eax, eax
jne 0x18000557f
dec rbx
add rbx, rdi
inc r14d
add rsi, 0x18
movsxd rax, r14d
cmp rax, r12
jb 0x1800053d0
mov r8, qword [rsp + 0x38]
mov r10, qword [rsp + 0x50]
mov edi, dword [rsp + 0x30]
mov r9, qword [rsp + 0x40]
xor r11d, r11d
test rbx, rbx
je 0x18000558c
movsxd rbx, dword [r13 - 0x20]
movsxd rdx, dword [r13]
lea r9, [rsp + 0x48]
add rbx, r10
mov r8d, 4
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
movsxd r8, dword [r13]
lea rdx, [r13 + 4]
mov rcx, rbx
call fcn.180007f20
movsxd rdx, dword [r13]
mov r8d, dword [rsp + 0x48]
lea r9, [rsp + 0x48]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
inc edi
mov byte [r13 + 0x36], 1
mov dword [rsp + 0x30], edi
cmp edi, dword [rsp + 0x4c]
je 0x180005612
mov r15d, dword [0x180027a98]
xor r11d, r11d
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x40]
movabs rdx, 0x2aaaaaaaaaaaaaab
mov r10, qword [rsp + 0x50]
mov edi, dword [rsp + 0x30]
inc r8
add r13, 0x60
mov qword [rsp + 0x38], r8
cmp r8, r9
jl 0x180005390
mov rax, qword [rsp + 0x60]
inc r10
mov qword [rsp + 0x50], r10
cmp r10, rax
jb 0x180005375
mov eax, 2
mov r14, qword [rsp + 0xc888]
mov rbx, qword [rsp + 0xc8b8]
mov rsi, qword [rsp + 0xc8c0]
mov r15, qword [rsp + 0xc880]
mov r12, qword [rsp + 0xc8c8]
mov rcx, qword [rbp + 0xc770]
xor rcx, rsp
call fcn.180007ef0
add rsp, 0xc890
pop r13
pop rdi
pop rbp
ret
xor eax, eax
jmp 0x1800055cf