Function at 0x1c4780
Capabilities:
Encode data using xor
Get disk information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x48
push eax
push eax
mov esi, esp
sub esp, 0x50
mov edi, esp
sub esp, 0x50
mov ebx, esp
push eax
mov dword [ebp - 0x50], esp
sub esp, 0x10
mov dword [ebp - 0x48], esp
sub esp, 0x40
mov dword [ebp - 0x4c], esp
mov eax, dword [0x1f1b9c]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x44], 0xf306f12d
mov dword [ebp - 0x40], 0xef0ded7b
mov dword [ebp - 0x3c], 0xeb7ee909
mov dword [ebp - 0x38], 0xe776e525
mov dword [ebp - 0x34], 0xe31ee170
mov dword [ebp - 0x30], 0x9f129d7d
mov dword [ebp - 0x2c], 0x9b479979
mov dword [ebp - 0x28], 0x9594
mov byte [ebp - 0x24], 0
mov dword [ebp - 0x14], 0
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x20
ja 0x1c4848
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
movzx edx, byte [ebp + edx - 0x44]
mov eax, ecx
xor eax, 0x30f1cbac
and ecx, 0x30f1cbac
lea ecx, [eax + ecx*2]
lea eax, [ecx + edx]
and ecx, edx
mov edx, eax
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x10]
add al, 0xa4
mov ecx, dword [ebp - 0x14]
mov byte [ebp + ecx - 0x44], al
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, 0x21
jb 0x1c4800
lea ecx, [ebp - 0x20]
lea eax, [ebp - 0x44]
push ecx
push 0
push 0
push 0xe
push eax
push 0
call dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
test eax, eax
mov dword [ebp - 0x1c], eax
jns 0x1c486c
mov eax, 0xffffffff
jmp 0x1c486e
add eax, eax
push eax
call fcn.001ac630
add esp, 4
mov dword [ebp - 0x18], eax
mov eax, dword [0x1f1b9c]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x44], 0xb74289a5
mov dword [ebp - 0x40], 0xb35db527
mov dword [ebp - 0x3c], 0xbf2ab151
mov dword [ebp - 0x38], 0xbb2abd7d
mov dword [ebp - 0x34], 0xa76ab928
mov dword [ebp - 0x30], 0xa33ea545
mov dword [ebp - 0x2c], 0xaf83a141
mov dword [ebp - 0x28], 0xadac
mov dword [ebp - 0x14], 0
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x1f
ja 0x1c4911
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
movzx edx, byte [ebp + edx - 0x44]
mov eax, ecx
xor eax, 0x94d216de
and ecx, 0x14d216de
lea eax, [eax + ecx*2]
xor eax, edx
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
mov eax, ecx
xor eax, 0x56
and ecx, 0x29
add ecx, ecx
sub ecx, eax
mov eax, dword [ebp - 0x14]
mov byte [ebp + eax - 0x44], cl
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, 0x20
jb 0x1c48d0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x18]
push 0xe
lea eax, [ebp - 0x44]
push eax
push 0
call dword [ebp - 0x54]
mov eax, dword [ebp - 0x20]
mov ecx, eax
add ecx, 9
jns 0x1c4937
mov eax, 0xffffffff
jmp 0x1c493e
lea eax, [eax*2 + 0x12]
push eax
call fcn.001ac630
add esp, 4
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x44], 0x29da2bd8
mov dword [ebp - 0x40], 0x2dcb2fcf
mov dword [ebp - 0x3c], 0xd135d3c1
mov dword [ebp - 0x38], 0xd53dd739
mov dword [ebp - 0x34], 0xd9dadb41
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x14]
cmp eax, 0x17
ja 0x1c49c7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x14]
movzx ecx, byte [ebp + ecx - 0x44]
mov edx, eax
xor edx, 0x81904177
and eax, 0x1904177
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
add al, 0xad
mov ecx, dword [ebp - 0x14]
mov byte [ebp + ecx - 0x44], al
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, 0x18
jb 0x1c4990
mov eax, dword [ebp - 0x18]
movzx ecx, word [eax]
mov eax, dword [ebp - 0x1c]
test cx, cx
je 0x1c49f1
mov eax, dword [ebp - 0x18]
lea edx, [eax + 2]
mov eax, dword [ebp - 0x1c]
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x1c49e0
mov word [eax], 0
movzx ecx, word [ebp - 0x44]
test cx, cx
je 0x1c4a21
lea edx, [ebp - 0x42]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x1c4a10
mov word [eax], 0
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x1c]
call fcn.001e5500
add esp, 8
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x1ecbe4]