Function at 0x10012080
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd0
mov eax, dword [0x1006b5d8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
call dword [sym.imp.kernel32.dll_GetLogicalDrives]
mov eax, dword [0x10077fb0]
mov esi, dword [0x1007e6bc]
mov ecx, dword [eax + 0xca0]
push 0x200
xor edi, edi
add esi, 0xa00
push edi
push esi
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x94], 3
call fcn.1003ae80
add esp, 0xc
push 0x10058d4c
push esi
mov esi, dword [sym.imp.kernel32.dll_lstrcpy]
call esi
push 0x10058d48
lea edx, [ebp - 0xc]
push edx
call esi
xor ebx, ebx
cmp byte [ebp - 0xc], 0x5a
jg 0x1001239e
lea esp, [esp]
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.kernel32.dll_GetDriveTypeA]
cmp eax, 3
jne 0x1001237a
lea ecx, [ebp - 0xc8]
push ecx
lea edx, [ebp - 0xa8]
push edx
lea eax, [ebp - 0xc]
push eax
call fcn.10011fe0
add esp, 0xc
test eax, eax
je 0x1001237a
mov ecx, dword [ebp - 0xa8]
fnstcw word [ebp - 0x8e]
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0xd0], ecx
mov ecx, eax
and eax, 0x7fffffff
mov dword [ebp - 0xcc], eax
fild qword [ebp - 0xd0]
movzx eax, word [ebp - 0x8e]
and ecx, 0x80000000
mov dword [ebp - 0xb4], ecx
mov edx, dword [ebp - 0xc8]
mov dword [ebp - 0xb8], edi
or eax, 0xc00
mov dword [ebp - 0x98], eax
fild qword [ebp - 0xb8]
mov eax, dword [ebp - 0xc4]
mov ecx, eax
and eax, 0x7fffffff
fchs
mov dword [ebp - 0xac], eax
faddp st(1)
and ecx, 0x80000000
fld qword [0x10058cd8]
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0xc0], edi
fmul st(1), st(0)
mov dword [ebp - 0xbc], ecx
fld qword [0x10057fd0]
fadd st(2), st(0)
fldcw word [ebp - 0x98]
fxch st(2)
fistp qword [ebp - 0x9c]
mov esi, dword [ebp - 0x9c]
fldcw word [ebp - 0x8e]
fild qword [ebp - 0xb0]
fild qword [ebp - 0xc0]
fnstcw word [ebp - 0x8e]
fchs
movzx eax, word [ebp - 0x8e]
faddp st(1)
or eax, 0xc00
mov dword [ebp - 0x98], eax
fmulp st(1)
faddp st(1)
fldcw word [ebp - 0x98]
fistp qword [ebp - 0x9c]
mov edi, dword [ebp - 0x9c]
fldcw word [ebp - 0x8e]
test ebx, ebx
je 0x10012247
mov eax, dword [0x1007e6bc]
push 0x100578b8
add eax, 0xa00
push eax
call dword [sym.imp.kernel32.dll_lstrcat]
cmp esi, 0xfa0
jb 0x1001225b
mov dword [ebp - 0x94], 0
jmp 0x10012291
cmp dword [ebp - 0x94], 0
je 0x10012291
cmp dword [ebp - 0xa0], 0
je 0x10012275
cmp esi, 0x7d0
jae 0x1001227f
mov dword [ebp - 0x94], 1
cmp esi, 0x3e8
jae 0x10012291
mov dword [ebp - 0x94], 3
cmp edi, 0x400
jb 0x10012313
mov dword [ebp - 0x98], edi
fild dword [ebp - 0x98]
test edi, edi
jns 0x100122af
fadd dword [0x10057f38]
fld qword [0x10058d40]
sub esp, 0x10
fmul st(1), st(0)
fxch st(1)
fstp dword [ebp - 0x98]
fld dword [ebp - 0x98]
mov dword [ebp - 0x98], esi
fstp qword [esp + 8]
fild dword [ebp - 0x98]
test esi, esi
jns 0x100122e2
fadd dword [0x10057f38]
movsx ecx, byte [ebp - 0xc]
fmulp st(1)
lea edx, [ebp - 0x8c]
fstp dword [ebp - 0x98]
fld dword [ebp - 0x98]
fstp qword [esp]
push ecx
push 0x10058d2c
push 0x80
push edx
call fcn.1003de84
add esp, 0x20
jmp 0x10012333
movsx eax, byte [ebp - 0xc]
push edi
push esi
push eax
push 0x10058d1c
lea ecx, [ebp - 0x8c]
push 0x80
push ecx
call fcn.1003de84
add esp, 0x18
mov edx, dword [0x1007e6bc]
mov esi, dword [sym.imp.kernel32.dll_lstrlen]
add edx, 0xa00
push edx
call esi
mov edi, eax
lea eax, [ebp - 0x8c]
push eax
call esi
lea ecx, [edi + eax + 2]
cmp ecx, 0x200
jge 0x10012377
mov eax, dword [0x1007e6bc]
lea edx, [ebp - 0x8c]
push edx
add eax, 0xa00
push eax
call dword [sym.imp.kernel32.dll_lstrcat]
inc ebx
xor edi, edi
mov al, byte [ebp - 0xc]
inc al
mov byte [ebp - 0xc], al
cmp al, 0x5a
jle 0x10012100
mov ecx, dword [0x1007e6bc]
mov dl, byte [ebp - 0x94]
mov byte [ecx + 0x1805], dl
jmp 0x100123af
mov eax, dword [0x1007e6bc]
mov cl, byte [ebp - 0x94]
mov byte [eax + 0x1805], cl
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.1003b1fb
mov esp, ebp
pop ebp
ret