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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
mov eax, dword [0x10043078]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x100489e5], 0
push ebx
push esi
push edi
jne 0x10012494
movzx eax, byte [0x1004899c]
xor al, 0xfc
mov byte [0x100489e5], 1
mov byte [ebp - 0x10c], al
movzx eax, byte [0x1004899d]
xor al, 0xcf
mov dword [ebp - 0x110], 0x1f1f2c1
mov byte [ebp - 0x10b], al
movzx eax, byte [0x1004899e]
xor al, 0xab
mov word [ebp - 0x114], 0xcffc
mov byte [ebp - 0x10a], al
movzx eax, byte [0x1004899f]
xor al, 0xfc
mov byte [ebp - 0x112], 0xab
mov byte [ebp - 0x109], al
movzx eax, byte [0x100489a0]
xor al, 0xcf
mov byte [ebp - 0x108], al
movzx eax, byte [0x100489a1]
xor al, 0xab
mov byte [ebp - 0x107], al
movzx eax, byte [0x100489a2]
xor al, 0xfc
mov byte [ebp - 0x106], al
movzx eax, byte [0x100489a3]
xor al, 0xcf
mov byte [ebp - 0x105], al
movzx eax, byte [0x100489a4]
xor al, 0xab
mov byte [ebp - 0x104], al
movzx eax, byte [0x100489a5]
xor al, 0xfc
xor esi, esi
mov byte [ebp - 0x103], al
lea ebx, [esi + 3]
lea edi, [esi + 2]
mov eax, 0xaaaaaaab
mov ecx, esi
mul esi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
movzx eax, byte [ebp + ecx - 0x114]
lea ecx, [edi - 1]
xor al, byte [esi + 0x100489a7]
mov byte [ebp + esi - 0x102], al
mov eax, 0xaaaaaaab
mul ecx
mov ecx, esi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
movzx eax, byte [ebp + ecx - 0x113]
mov ecx, esi
xor al, byte [esi + 0x100489a8]
mov byte [ebp + esi - 0x101], al
mov eax, 0xaaaaaaab
mul edi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
movzx eax, byte [ebp + ecx - 0x112]
mov ecx, esi
xor al, byte [edi + 0x100489a7]
add edi, 5
mov byte [ebp + ebx - 0x103], al
mov eax, 0xaaaaaaab
mul ebx
add ebx, 5
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
movzx eax, byte [ebp + ecx - 0x111]
lea ecx, [esi + 4]
xor al, byte [esi + 0x100489aa]
mov byte [ebp + esi - 0xff], al
mov eax, 0xaaaaaaab
mul ecx
mov ecx, esi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
movzx eax, byte [ebp + ecx - 0x110]
xor al, byte [esi + 0x100489ab]
mov byte [ebp + esi - 0xfe], al
add esi, 5
cmp edi, 0x16
jl 0x10012282
call dword [sym.imp.KERNEL32.dll_GetTickCount]
movups xmm0, xmmword [0x1003e78c]
mov dword [ebp - 0xee], eax
movzx eax, byte [0x1826e38]
dec al
mov byte [ebp - 0xea], al
movzx eax, byte [0x1826e39]
sub al, 2
mov byte [ebp - 0xe9], al
movzx eax, byte [0x1826e3a]
sub al, 3
mov byte [ebp - 0xe8], al
movzx eax, byte [0x1826e3b]
sub al, 4
mov byte [ebp - 0xe7], al
movzx eax, byte [0x1826e3c]
sub al, 5
mov word [ebp - 0xc4], 0
mov byte [ebp - 0xe6], al
lea eax, [ebp - 0x14]
movups xmmword [ebp - 0xe5], xmm0
mov byte [ebp - 0xd5], 0
xorps xmm0, xmm0
mov byte [ebp - 0xc4], 0
movups xmmword [ebp - 0xd4], xmm0
push eax
movups xmmword [ebp - 0xd4], xmm0
call dword [sym.imp.RPCRT4.dll_UuidCreateSequential]
movzx eax, byte [ebp - 5]
push eax
movzx eax, byte [ebp - 6]
push eax
movzx eax, byte [ebp - 7]
push eax
movzx eax, byte [ebp - 8]
push eax
movzx eax, byte [ebp - 9]
push eax
movzx eax, byte [ebp - 0xa]
push eax
lea eax, [ebp - 0xd4]
push str._02X:_02X:_02X:_02X:_02X:_02X
push eax
call fcn.10008f40
add esp, 0x20
mov dword [ebp - 0x114], 0
lea eax, [ebp - 0x114]
push 0xff
push 0
push 0
push 0
push eax
push 0xff
push 0
push 0x1003ec18
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
push dword [0x10047e28]
neg eax
push dword [0x10047e24]
sbb eax, eax
and eax, dword [ebp - 0x114]
push 0x1003ec1c
mov dword [ebp - 0x114], eax
mov dword [ebp - 0xc2], eax
lea eax, [ebp - 0xbe]
push 0xffffffffffffffff
push eax
call fcn.1000a740
movzx edx, byte [ebp - 0x10f]
lea ecx, [ebp - 0x110]
add esp, 0x14
call fcn.10011910
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100149ff
mov esp, ebp
pop ebp
ret