Function at 0x4afaf0
Capabilities:
Get disk information
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff7cc
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x82c], eax
mov dword [ebp - 0x830], eax
mov dword [ebp - 0x834], eax
mov dword [ebp - 0x20], eax
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
xor eax, eax
push ebp
push 0x4b0106
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 4], 0xfffffffe
test ebx, ebx
je 0x4b00e0
mov edi, ebx
mov dword [ebp - 4], 0xfffffffc
test esi, esi
jl 0x4b00e0
push ebx
call fcn.004aed9c
cmp esi, eax
jge 0x4b00e0
cmp byte [edi + 0x34], 0
je 0x4b003c
mov eax, dword [0x50fae8]
cmp byte [eax], 0
je 0x4afc85
push 0
push 0
call sub.kernel32.dll_GetLogicalDriveStringsA
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
call fcn.0040a24c
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0x4afc7e
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_GetLogicalDriveStringsA
mov ebx, dword [ebp - 0x1c]
jmp 0x4afc5f
push ebx
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 5
jne 0x4afc54
push 0x401
lea eax, [ebp - 0x826]
push eax
lea eax, [ebp - 0x82c]
mov dl, byte [ebx]
call fcn.00403d18
lea eax, [ebp - 0x82c]
mov edx, 0x4b0124
call fcn.00403df8
mov eax, dword [ebp - 0x82c]
call fcn.00403fb4
push eax
call sub.kernel32.dll_QueryDosDeviceA
lea edx, [ebp - 0x830]
mov eax, esi
call fcn.00409300
mov ecx, dword [ebp - 0x830]
lea eax, [ebp - 0x82c]
mov edx, 0x4b0130
call fcn.00403e3c
mov eax, dword [ebp - 0x82c]
push eax
lea eax, [ebp - 0x830]
lea edx, [ebp - 0x826]
mov ecx, 0x401
call fcn.00403da0
mov edx, dword [ebp - 0x830]
pop eax
call fcn.004040d8
test eax, eax
jle 0x4afc54
mov al, byte [ebx]
call fcn.004029a4
mov edx, dword [ebp + 0x10]
mov byte [edx], al
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x4afc68
inc ebx
cmp byte [ebx], 0
jne 0x4afc53
cmp byte [ebx], 0
jne 0x4afc5f
inc ebx
cmp byte [ebx], 0
jne 0x4afba7
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b00e0
mov eax, dword [ebp - 0x1c]
call fcn.0040a298
ret
xor eax, eax
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0x3e]
test eax, eax
je 0x4afcaa
cmp esi, dword [ebp - 0x14]
jne 0x4afca0
mov dword [ebp - 0x24], eax
jmp 0x4afcaa
inc dword [ebp - 0x14]
mov eax, dword [eax + 0x44]
test eax, eax
jne 0x4afc96
cmp dword [ebp - 0x24], 0
je 0x4b00e0
lea eax, [ebp - 8]
push eax
push 0xf003f
push 0
push 0x4b0140
push 0x80000006
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x4b00e0
xor eax, eax
push ebp
push 0x4b0035
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], 0x401
jmp 0x4afff3
inc dword [ebp - 0x14]
mov edx, 0x4b0154
lea eax, [ebp - 0x826]
call fcn.00409fc4
lea edx, [ebp - 0x425]
lea eax, [ebp - 0x826]
call fcn.0040a090
lea eax, [ebp - 0xc]
push eax
push 0xf003f
push 0
lea eax, [ebp - 0x826]
push eax
push 0x80000006
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x4affec
xor eax, eax
push ebp
push 0x4affe5
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b016c
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affce
lea edx, [ebp - 0x20]
lea eax, [ebp - 0x425]
call fcn.0040a238
mov edx, dword [ebp - 0x20]
mov eax, 0x4b0180
call fcn.004040d8
test eax, eax
jle 0x4affce
mov edx, 0x4b0188
lea eax, [ebp - 0x826]
call fcn.00409fc4
lea edx, [ebp - 0x425]
lea eax, [ebp - 0x826]
call fcn.0040a090
lea eax, [ebp - 0x10]
push eax
push 0xf003f
push 0
lea eax, [ebp - 0x826]
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x4affce
xor eax, eax
push ebp
push 0x4affc7
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b0190
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affb0
mov edx, 0x4b0198
lea eax, [ebp - 0x425]
call fcn.0040a0d0
test eax, eax
jne 0x4affb0
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b01a0
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affb0
lea ecx, [ebp - 0x82c]
xor edx, edx
mov eax, dword [ebp - 0x24]
call fcn.004ae45c
mov eax, dword [ebp - 0x82c]
push eax
lea eax, [ebp - 0x834]
lea edx, [ebp - 0x425]
mov ecx, 0x401
call fcn.00403da0
mov eax, dword [ebp - 0x834]
lea edx, [ebp - 0x830]
call fcn.0040914c
mov eax, dword [ebp - 0x830]
pop edx
call fcn.00409000
test eax, eax
jne 0x4affb0
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b01ac
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affb0
lea eax, [ebp - 0x82c]
lea edx, [ebp - 0x425]
mov ecx, 0x401
call fcn.00403da0
mov eax, dword [ebp - 0x82c]
or edx, 0xffffffff
call fcn.00409498
mov edx, dword [ebp - 0x24]
cmp eax, dword [edx + 8]
jne 0x4affb0
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b01b4
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affb0
lea eax, [ebp - 0x82c]
lea edx, [ebp - 0x425]
mov ecx, 0x401
call fcn.00403da0
mov eax, dword [ebp - 0x82c]
or edx, 0xffffffff
call fcn.00409498
mov edx, dword [ebp - 0x24]
cmp eax, dword [edx + 4]
jne 0x4affb0
mov dword [ebp - 0x18], 0x401
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
push 0
push 0
push 0x4b01c4
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x4affb0
mov al, byte [ebp - 0x425]
call fcn.004029a4
mov edx, dword [ebp + 0x10]
mov byte [edx], al
xor eax, eax
mov dword [ebp - 4], eax
call fcn.0040366c
call fcn.0040366c
call fcn.0040366c
jmp 0x4b00e0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4affce
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4affec
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
mov dword [ebp - 0x18], 0x401
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x425]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegEnumKeyExA
cmp eax, 0x103
jne 0x4afcf5
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b00e0
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
cmp byte [edi + 0xb8], 0
je 0x4b00e0
push 0
push 0
call sub.kernel32.dll_GetLogicalDriveStringsA
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
call fcn.0040a24c
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0x4b00d9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_GetLogicalDriveStringsA
mov ebx, dword [ebp - 0x1c]
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x4b00be
push ebx
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 5
jne 0x4b00b3
cmp esi, dword [ebp - 0x14]
jne 0x4b00ad
mov al, byte [ebx]
call fcn.004029a4
mov edx, dword [ebp + 0x10]
mov byte [edx], al
xor eax, eax
mov dword [ebp - 4], eax
call fcn.0040366c
jmp 0x4b00e0
inc dword [ebp - 0x14]
jmp 0x4b00b3
inc ebx
cmp byte [ebx], 0
jne 0x4b00b2
cmp byte [ebx], 0
jne 0x4b00be
inc ebx
cmp byte [ebx], 0
jne 0x4b0085
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b00e0
mov eax, dword [ebp - 0x1c]
call fcn.0040a298
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b010d
lea eax, [ebp - 0x834]
mov edx, 3
call fcn.00403b98
lea eax, [ebp - 0x20]
call fcn.00403b74
ret