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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
mov eax, dword [0x10295418]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1029ab55], 0
push ebx
push esi
push edi
jne 0x10210d74
movzx eax, byte [0x1029ab0c]
xor al, 0xfc
mov byte [0x1029ab55], 1
mov byte [ebp - 0x10c], al
movzx eax, byte [0x1029ab0d]
xor al, 0xcf
mov dword [ebp - 0x110], 0x1f1f2c1
mov byte [ebp - 0x10b], al
movzx eax, byte [0x1029ab0e]
xor al, 0xab
mov word [ebp - 0x114], 0xcffc
mov byte [ebp - 0x10a], al
movzx eax, byte [0x1029ab0f]
xor al, 0xfc
mov byte [ebp - 0x112], 0xab
mov byte [ebp - 0x109], al
movzx eax, byte [0x1029ab10]
xor al, 0xcf
mov byte [ebp - 0x108], al
movzx eax, byte [0x1029ab11]
xor al, 0xab
mov byte [ebp - 0x107], al
movzx eax, byte [0x1029ab12]
xor al, 0xfc
mov byte [ebp - 0x106], al
movzx eax, byte [0x1029ab13]
xor al, 0xcf
mov byte [ebp - 0x105], al
movzx eax, byte [0x1029ab14]
xor al, 0xab
mov byte [ebp - 0x104], al
movzx eax, byte [0x1029ab15]
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 + 0x1029ab17]
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 + 0x1029ab18]
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 + 0x1029ab17]
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 + 0x1029ab1a]
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 + 0x1029ab1b]
mov byte [ebp + esi - 0xfe], al
add esi, 5
cmp edi, 0x16
jl 0x10210b62
call dword [sym.imp.KERNEL32.dll_GetTickCount]
movups xmm0, xmmword [0x10297f20]
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.100093d0
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 0x10290894
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
push dword [0x10299f5c]
neg eax
push dword [0x10299f58]
sbb eax, eax
and eax, dword [ebp - 0x114]
push 0x10290898
mov dword [ebp - 0x114], eax
mov dword [ebp - 0xc2], eax
lea eax, [ebp - 0xbe]
push 0xffffffffffffffff
push eax
call fcn.1000ab80
movzx edx, byte [ebp - 0x10f]
lea ecx, [ebp - 0x110]
add esp, 0x14
call fcn.1020ff00
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10250f5f
mov esp, ebp
pop ebp
ret