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

Disassembly:
mov eax, 0x1005ee91
call fcn.1005d884
sub esp, 0x84
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x2c], ebx
call fcn.1002d5a5
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.100317e1
push 1
lea ecx, [ebp - 0x60]
mov dword [ebp - 4], ebx
call fcn.1000f845
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x54]
push 2
pop eax
mov dword [ebp - 0x24], 0xa57b5bf2
mov dword [ebp - 0x20], 0x47c4d145
mov dword [ebp - 0x24], 0xce4a6f44
push eax
mov dword [ebp - 0x1c], eax
call fcn.1000f845
xor edx, edx
mov byte [ebp - 4], 2
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], ebx
jmp 0x1003110c
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], edx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edx
jl 0x10031100
mov dword [ebp - 0x24], 0x4e2d
cmp dword [ebp - 0x24], 0x51a2
jle 0x1003114b
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x10079a18
xor eax, esi
cdq
push edx
push eax
call fcn.1000f556
inc edi
cmp edi, 0x53c
jl 0x10031125
inc esi
cmp esi, 0x30e7
jl 0x10031123
xor edx, edx
inc edx
mov dword [ebp - 0x18], ebx
jmp 0x1003115a
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x30], edx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edx
jl 0x10031150
mov byte [ebp - 4], 3
cmp dword [ebp - 0x24], 0x4c4d
jge 0x1003117b
mov edx, str.zzq_racgymxc_aoctykql
mov ecx, 0x10079a18
call fcn.10012762
push 2
pop edx
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], ebx
jmp 0x100311b6
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x54]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edx
jl 0x100311aa
mov dword [ebp - 0x18], ebx
jmp 0x100311ce
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x28], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x100311c0
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x60]
mov eax, dword [eax]
mov dword [ebp - 0x30], eax
dec dword [ebp - 0x28]
mov ecx, dword [ebp - 0x54]
imul eax, dword [ecx], 0xffff
mov dword [ecx + 4], eax
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], 0
je 0x10031210
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetCommState]
lea ecx, [ebp - 0x54]
call fcn.1000f91b
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], bl
call fcn.1000f91b
mov edx, dword [ebp - 0x48]
mov ecx, edx
mov esi, dword [ebp - 0x34]
add esi, 0xffffcde1
mov eax, dword [edx + 4]
cmp byte [eax + 0xd], 0
jne 0x1003125f
cmp dword [eax + 0x10], esi
jge 0x10031244
mov eax, dword [eax + 8]
jmp 0x10031248
mov ecx, eax
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
je 0x1003123a
cmp ecx, edx
je 0x1003125f
cmp esi, dword [ecx + 0x10]
jl 0x1003125f
mov dword [ebp - 0x38], ecx
lea esi, [ebp - 0x38]
jmp 0x10031265
mov dword [ebp - 0x3c], edx
lea esi, [ebp - 0x3c]
mov eax, dword [0x100de08c]
mov esi, dword [esi]
test al, 1
jne 0x1003129b
or eax, 1
mov dword [0x100de0b4], 7
mov dword [0x100de08c], eax
xor eax, eax
push 0x1005f93f
mov dword [0x100de0b0], ebx
mov word [0x100de0a0], ax
call fcn.10045b1f
pop ecx
mov dword [ebp - 0x18], 0xb9f9b319
mov dword [ebp - 0x18], 0x18
jmp 0x100312c7
mov dword [ebp - 0x34], 0xf506
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], 0
je 0x100312c1
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov eax, dword [ebp - 0x34]
dec dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xfffffff6
jne 0x100312ab
cmp esi, dword [ebp - 0x48]
je 0x100312f5
push dword [esi + 0x18]
mov edx, dword [esi + 0x14]
lea ecx, [ebp - 0x90]
call fcn.10029226
pop ecx
mov ecx, eax
xor eax, eax
mov byte [ebp - 4], 5
inc eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], eax
jmp 0x10031312
push 0x100de0a0
lea ecx, [ebp - 0x78]
call fcn.1000f66b
mov ecx, eax
mov dword [ebp - 4], 6
mov dword [ebp - 0x2c], 2
mov esi, dword [ebp - 0x40]
push ecx
mov ecx, esi
call fcn.1000f66b
mov eax, dword [ebp - 0x1c]
or eax, 4
test al, 2
je 0x1003133b
push ebx
and eax, 0xfffffffd
lea ecx, [ebp - 0x78]
push 1
mov dword [ebp - 0x1c], eax
call fcn.100103a2
mov eax, dword [ebp - 0x1c]
test al, 1
je 0x1003134d
push ebx
push 1
lea ecx, [ebp - 0x90]
call fcn.100103a2
lea ecx, [ebp - 0x48]
call fcn.10031655
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret