Function at 0x9efa70
Capabilities:
Get disk information

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0xa89806
push eax
mov dword fs:[0], esp
sub esp, 0x67c
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
push ebp
mov ebp, dword [esp + 0x69c]
push esi
push edi
test ebp, ebp
je 0x9efaa5
call ebx
mov dword [ebp], eax
mov edi, dword [esp + 0x69c]
test edi, edi
jne 0x9efac6
test ebp, ebp
je 0x9effab
mov dword [ebp], 0x57
xor al, al
jmp 0x9f0029
cmp word [edi], 0
jne 0x9efae2
test ebp, ebp
je 0x9effab
mov dword [ebp], 3
xor al, al
jmp 0x9f0029
call ebx
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], eax
call fcn.00a155c0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
dec eax
mov dword [esp + 0x694], 0
push eax
push ecx
push edi
call fcn.00a131b0
mov esi, eax
test esi, esi
jne 0x9efc50
push edi
call fcn.00a7e07a
add esp, 4
lea ecx, [esp + 0x1c]
push eax
push edi
call fcn.00a15a90
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x10], ebp
mov ax, word [ebp]
cmp ax, 0x5c
je 0x9efb43
cmp ax, 0x2f
jne 0x9efb5b
mov cx, word [ebp + 2]
cmp cx, 0x5c
je 0x9effaf
cmp cx, 0x2f
je 0x9effaf
push eax
call fcn.00a7ede6
add esp, 4
cmp ax, 0x61
jb 0x9efc8f
mov cx, word [ebp]
push ecx
call fcn.00a7ede6
add esp, 4
cmp ax, 0x7a
ja 0x9efc8f
mov ebx, 0x3a
cmp word [ebp + 2], bx
jne 0x9efc8f
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x6a0]
add edi, 4
mov ecx, esi
mov dword [esp + 0x10], edi
mov dx, word [ebp]
push edx
call fcn.00a15cc0
mov ax, word [ebp + 2]
mov ecx, esi
push eax
call fcn.00a15cc0
mov ecx, dword [esp + 0x10]
mov ax, word [ecx]
test ax, ax
je 0x9efbf5
cmp ax, 0x5c
je 0x9efbd6
cmp ax, 0x2f
jne 0x9efbf5
mov edi, dword [esp + 0x10]
push eax
add edi, 2
mov ecx, esi
mov dword [esp + 0x14], edi
call fcn.00a15cc0
mov edx, dword [esp + 0x10]
mov ax, word [edx]
test ax, ax
jne 0x9efbca
mov eax, dword [esi + 4]
mov ecx, esi
inc eax
push eax
call fcn.00a15dc0
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov word [edx + ecx*2], 0
mov al, byte [ebp]
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], al
push ecx
mov byte [esp + 0x19], bl
mov byte [esp + 0x1a], 0x5c
mov byte [esp + 0x1b], 0
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 1
jne 0x9efcb8
mov eax, dword [esp + 0x6a4]
test eax, eax
je 0x9eff97
mov dword [eax], 3
jmp 0x9eff97
mov edx, dword [esp + 0x1c]
dec edx
cmp edx, esi
jae 0x9efb2b
push esi
lea ecx, [esp + 0x20]
call fcn.00a15dc0
mov eax, dword [esp + 0x24]
push esi
push eax
push edi
call fcn.00a131b0
cmp esi, eax
jae 0x9efb2b
test ebp, ebp
je 0x9eff97
mov dword [ebp], 8
jmp 0x9eff97
mov esi, dword [esp + 0x6a0]
mov edx, dword [esp + 0x10]
mov ax, word [edx]
cmp ax, 0x5c
je 0x9efca9
cmp ax, 0x2f
jne 0x9efcb8
push eax
mov ecx, esi
call fcn.00a15cc0
add dword [esp + 0x10], 2
jmp 0x9efc96
mov eax, dword [esi + 4]
mov ecx, esi
inc eax
push eax
call fcn.00a15dc0
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov word [edx + ecx*2], 0
mov eax, dword [0xa918f4]
push eax
push 0
push esi
lea ecx, [esp + 0x238]
call fcn.00a151b0
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x694], 1
cmp word [ecx], 0
je 0x9eff23
mov ebp, ecx
lea ecx, [esp + 0x10]
push esi
push ecx
call fcn.009ef980
mov ecx, dword [esp + 0x18]
add esp, 8
mov ax, word [ecx]
test ax, ax
je 0x9efed6
cmp ax, 0x5c
je 0x9efed6
cmp ax, 0x2f
je 0x9efed6
test ax, ax
je 0x9efd83
cmp ax, 0x5c
je 0x9efd83
cmp ax, 0x2f
je 0x9efd83
cmp ax, 0x3f
je 0x9eff5f
cmp ax, 0x2a
je 0x9eff5f
push eax
lea ecx, [esp + 0x230]
call fcn.00a15cc0
mov edx, dword [esp + 0x10]
mov ecx, esi
mov ax, word [edx]
push eax
call fcn.00a15cc0
mov eax, dword [esp + 0x10]
add eax, 2
mov dword [esp + 0x10], eax
mov ax, word [eax]
test ax, ax
jne 0x9efd34
mov ecx, dword [esi + 4]
inc ecx
push ecx
mov ecx, esi
call fcn.00a15dc0
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov word [eax + edx*2], 0
mov ecx, dword [esp + 0x230]
inc ecx
push ecx
lea ecx, [esp + 0x230]
call fcn.00a15dc0
mov edx, dword [esp + 0x234]
mov eax, dword [esp + 0x230]
push 0
lea ecx, [esp + 0x440]
mov word [edx + eax*2], 0
mov edx, dword [esp + 0x238]
push 2
push ecx
push edx
call fcn.009f0440
test al, al
je 0x9eff72
cmp word [esp + 0x670], 0
lea edi, [esp + 0x670]
jne 0x9efdfe
lea edi, [esp + 0x468]
lea eax, [esp + 0x468]
push eax
call fcn.00a7e07a
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, ecx
sub edx, ebp
sar edx, 1
cmp edx, eax
jne 0x9efe38
add eax, eax
lea ecx, [esp + 0x468]
push eax
push ebp
push ecx
call fcn.00a887b0
add esp, 0xc
test eax, eax
je 0x9efe80
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x230]
sub ecx, ebp
sar ecx, 1
sub edx, ecx
mov dword [esp + 0x230], edx
lea edx, [esp + 0x468]
test edx, edx
je 0x9efe69
lea eax, [esp + 0x468]
push eax
call fcn.00a7e07a
add esp, 4
jmp 0x9efe6b
xor eax, eax
lea ecx, [esp + 0x468]
push eax
push ecx
lea ecx, [esp + 0x234]
call fcn.00a15880
push edi
call fcn.00a7e07a
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, ecx
sub edx, ebp
sar edx, 1
cmp edx, eax
jne 0x9efeac
add eax, eax
push eax
push ebp
push edi
call fcn.00a887b0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x9efed6
mov edx, dword [esi + 4]
sub ecx, ebp
sar ecx, 1
sub edx, ecx
test edi, edi
mov dword [esi + 4], edx
je 0x9efec7
push edi
call fcn.00a7e07a
add esp, 4
jmp 0x9efec9
xor eax, eax
push eax
push edi
mov ecx, esi
call fcn.00a15880
mov ecx, dword [esp + 0x10]
mov ax, word [ecx]
test ax, ax
je 0x9eff19
cmp ax, 0x5c
je 0x9efeea
cmp ax, 0x2f
jne 0x9eff19
push eax
lea ecx, [esp + 0x230]
call fcn.00a15cc0
mov ecx, dword [esp + 0x10]
mov dx, word [ecx]
mov ecx, esi
push edx
call fcn.00a15cc0
mov ecx, dword [esp + 0x10]
add ecx, 2
mov dword [esp + 0x10], ecx
mov ax, word [ecx]
test ax, ax
jne 0x9efede
cmp word [ecx], 0
jne 0x9efcfb
mov eax, dword [esi + 4]
mov ecx, esi
inc eax
push eax
call fcn.00a15dc0
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x18]
push eax
mov word [edx + ecx*2], 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x22c]
mov byte [esp + 0x694], 0
call fcn.00a155e0
jmp 0x9f0013
mov eax, dword [esp + 0x6a4]
test eax, eax
je 0x9eff83
mov dword [eax], 0x7b
jmp 0x9eff83
mov eax, dword [esp + 0x6a4]
test eax, eax
je 0x9eff83
mov dword [eax], 2
lea ecx, [esp + 0x22c]
mov byte [esp + 0x694], 0
call fcn.00a155e0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x694], 0xffffffff
call fcn.00a155e0
xor al, al
jmp 0x9f0029
call ebx
mov esi, dword [esp + 0x6a0]
mov ebx, eax
mov ecx, dword [esi]
mov eax, dword [esi + 8]
push ecx
push eax
push ebp
call fcn.00a228c0
mov edi, eax
mov eax, dword [esp + 0x6a4]
test eax, eax
je 0x9effe3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0x6a4]
mov dword [edx], eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
test edi, edi
je 0x9eff97
cmp edi, dword [esi]
jbe 0x9f0010
inc edi
mov ecx, esi
push edi
call fcn.00a15dc0
mov ecx, dword [esi]
mov eax, dword [esi + 8]
push ecx
push eax
push ebp
call fcn.00a228c0
mov edi, eax
mov eax, dword [esi]
cmp edi, eax
ja 0x9eff97
mov dword [esi + 4], edi
lea ecx, [esp + 0x1c]
mov dword [esp + 0x694], 0xffffffff
call fcn.00a155e0
mov al, 1
mov ecx, dword [esp + 0x68c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x688
ret