Function at 0x487c78
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x34
push 0
push 0
dec ecx
jne 0x487c80
push ecx
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00404144
mov eax, dword [ebp - 8]
call fcn.00404144
xor eax, eax
push ebp
push 0x488140
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.00403f90
cmp eax, 0x10
je 0x487cc3
xor ebx, ebx
jmp 0x4880e5
mov byte [ebp - 0x39], 0
mov byte [ebp - 0x4a], 0
mov eax, dword [ebp - 8]
call fcn.00403f90
mov esi, eax
test esi, esi
jle 0x487d23
mov ebx, 1
mov eax, dword [ebp - 8]
mov al, byte [eax + ebx - 1]
add al, 0xb9
sub al, 0xa
jb 0x487cf1
sub al, 6
jb 0x487d09
jmp 0x487d1f
lea eax, [ebp - 8]
call fcn.00404160
mov edx, dword [ebp - 8]
mov dl, byte [edx + ebx - 1]
sub dl, 0x17
mov byte [eax + ebx - 1], dl
jmp 0x487d1f
lea eax, [ebp - 8]
call fcn.00404160
mov edx, dword [ebp - 8]
mov dl, byte [edx + ebx - 1]
sub dl, 0x10
mov byte [eax + ebx - 1], dl
inc ebx
dec esi
jne 0x487cde
mov eax, dword [ebp - 8]
call fcn.0048789c
xor eax, 0x46414e59
xor edx, edx
push edx
push eax
lea edx, [ebp - 0x24]
mov eax, 8
call fcn.004093d0
mov ebx, 1
lea esi, [ebp - 0x28]
lea eax, [ebp - 0x60]
push eax
mov edx, ebx
add edx, edx
dec edx
mov ecx, 2
mov eax, dword [ebp - 0x24]
call fcn.00404198
mov eax, dword [ebp - 0x60]
call fcn.0048789c
mov byte [esi], al
inc ebx
inc esi
cmp ebx, 5
jne 0x487d49
mov eax, dword [ebp - 4]
call fcn.00403f90
mov esi, eax
test esi, esi
jle 0x487dc8
mov ebx, 1
mov eax, dword [ebp - 4]
mov al, byte [eax + ebx - 1]
add al, 0xb9
sub al, 0xa
jb 0x487d96
sub al, 6
jb 0x487dae
jmp 0x487dc4
lea eax, [ebp - 4]
call fcn.00404160
mov edx, dword [ebp - 4]
mov dl, byte [edx + ebx - 1]
sub dl, 0x17
mov byte [eax + ebx - 1], dl
jmp 0x487dc4
lea eax, [ebp - 4]
call fcn.00404160
mov edx, dword [ebp - 4]
mov dl, byte [edx + ebx - 1]
sub dl, 0x10
mov byte [eax + ebx - 1], dl
inc ebx
dec esi
jne 0x487d83
lea eax, [ebp - 0x164]
push eax
mov ecx, 8
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00404198
mov edx, dword [ebp - 0x164]
lea eax, [ebp - 0x160]
mov ecx, 0xff
call fcn.00403f6c
lea edx, [ebp - 0x160]
lea eax, [ebp - 0x39]
mov cl, 0x10
call fcn.00402b10
lea eax, [ebp - 0x168]
push eax
mov ecx, 8
mov edx, 9
mov eax, dword [ebp - 4]
call fcn.00404198
mov edx, dword [ebp - 0x168]
lea eax, [ebp - 0x160]
mov ecx, 0xff
call fcn.00403f6c
lea edx, [ebp - 0x160]
lea eax, [ebp - 0x4a]
mov cl, 0x10
call fcn.00402b10
lea eax, [ebp - 0x170]
lea edx, [ebp - 0x39]
call fcn.00403f34
mov eax, dword [ebp - 0x170]
call fcn.0048789c
xor eax, 0x544f4245
xor edx, edx
push edx
push eax
lea edx, [ebp - 0x16c]
mov eax, 8
call fcn.004093d0
mov edx, dword [ebp - 0x16c]
lea eax, [ebp - 0x160]
mov ecx, 0xff
call fcn.00403f6c
lea edx, [ebp - 0x160]
lea eax, [ebp - 0x39]
mov cl, 0x10
call fcn.00402b10
lea eax, [ebp - 0x178]
lea edx, [ebp - 0x4a]
call fcn.00403f34
mov eax, dword [ebp - 0x178]
call fcn.0048789c
xor eax, 0x4b494e47
xor edx, edx
push edx
push eax
lea edx, [ebp - 0x174]
mov eax, 8
call fcn.004093d0
mov edx, dword [ebp - 0x174]
lea eax, [ebp - 0x160]
mov ecx, 0xff
call fcn.00403f6c
lea edx, [ebp - 0x160]
lea eax, [ebp - 0x4a]
mov cl, 0x10
call fcn.00402b10
mov ebx, 1
lea esi, [ebp - 0x18]
lea eax, [ebp - 0x190]
push eax
mov edi, ebx
add edi, edi
dec edi
mov edx, edi
mov ecx, 2
lea eax, [ebp - 0x39]
call fcn.004028b8
lea edx, [ebp - 0x190]
lea eax, [ebp - 0x17c]
call fcn.00403f34
mov eax, dword [ebp - 0x17c]
call fcn.0048789c
mov byte [esi], al
lea eax, [ebp - 0x190]
push eax
mov edx, edi
mov ecx, 2
lea eax, [ebp - 0x4a]
call fcn.004028b8
lea edx, [ebp - 0x190]
lea eax, [ebp - 0x194]
call fcn.00403f34
mov eax, dword [ebp - 0x194]
call fcn.0048789c
mov byte [esi + 4], al
inc ebx
inc esi
cmp ebx, 5
jne 0x487efe
mov ebx, 7
lea esi, [ebp - 0x18]
mov edi, 0x51c7a5
lea eax, [ebp - 0x198]
xor edx, edx
mov dl, byte [ebp - 0x11]
mov dl, byte [edi + edx*8]
call fcn.00403eb8
mov eax, dword [ebp - 0x198]
call fcn.00409410
mov dl, byte [esi]
mov byte [ebp + eax - 0x21], dl
inc edi
inc esi
dec ebx
jne 0x487f80
mov ebx, 7
lea eax, [ebp - 0x20]
lea edx, [ebp - 0x18]
mov cl, byte [eax]
mov byte [edx], cl
inc edx
inc eax
dec ebx
jne 0x487fb4
mov byte [ebp - 0x39], 0
mov byte [ebp - 0x4a], 0
mov ebx, 4
lea esi, [ebp - 0x15]
lea eax, [ebp - 0x19c]
mov dl, byte [esi]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x19c]
lea eax, [ebp - 0x39]
mov cl, 0x10
call fcn.00402ac4
inc esi
dec ebx
jne 0x487fcd
mov eax, 4
call fcn.004027b8
mov ebx, eax
push 0
push 0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
push eax
push ebx
push 0
push 0
push 0x488150
call sub.kernel32.dll_GetVolumeInformationA
mov eax, dword [ebx]
mov dword [ebp - 0xc], eax
mov edx, 4
mov eax, ebx
call fcn.004027d0
mov eax, dword [ebp - 0xc]
xor edx, edx
push edx
push eax
lea edx, [ebp - 0x1a0]
mov eax, 8
call fcn.004093d0
mov edx, dword [ebp - 0x1a0]
lea eax, [ebp - 0x160]
mov ecx, 0xff
call fcn.00403f6c
lea edx, [ebp - 0x160]
lea eax, [ebp - 0x5b]
mov cl, 0x10
call fcn.00402b10
mov ebx, 1
lea eax, [ebp - 0x190]
push eax
mov edx, ebx
add edx, edx
dec edx
mov ecx, 2
lea eax, [ebp - 0x5b]
call fcn.004028b8
lea edx, [ebp - 0x190]
lea eax, [ebp - 0x1a4]
call fcn.00403f34
mov eax, dword [ebp - 0x1a4]
call fcn.0048789c
mov edx, eax
lea eax, [ebp - 0x19c]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x19c]
lea eax, [ebp - 0x4a]
mov cl, 0x10
call fcn.00402ac4
inc ebx
cmp ebx, 5
jne 0x488069
mov al, byte [ebp - 0x16]
cmp al, byte [ebp - 0x25]
jne 0x4880e3
lea eax, [ebp - 0x39]
lea edx, [ebp - 0x4a]
xor ecx, ecx
mov cl, byte [eax]
inc ecx
call fcn.00402bc4
jne 0x4880e3
xor ebx, ebx
mov bl, byte [ebp - 0x17]
jmp 0x4880e5
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x488147
lea eax, [ebp - 0x1a4]
mov edx, 2
call fcn.00403d34
lea eax, [ebp - 0x198]
mov edx, 2
call fcn.00403d34
lea eax, [ebp - 0x17c]
mov edx, 7
call fcn.00403d34
lea eax, [ebp - 0x60]
call fcn.00403d10
lea eax, [ebp - 0x24]
call fcn.00403d10
lea eax, [ebp - 8]
mov edx, 2
call fcn.00403d34
ret