Function at 0x10116670
Capabilities:
Get disk information

Disassembly:
sub esp, 0x274
mov cl, byte [esp + 0x278]
push ebx
mov al, cl
push ebp
and al, 1
push esi
push edi
mov dword [esp + 0x14], 0
mov byte [esp + 0x13], 0
mov byte [esp + 0x1f], al
je 0x101166d2
mov ebp, dword [esp + 0x294]
mov eax, dword [ebp + 0x42]
test eax, eax
je 0x101169db
push 0
push str.Change_Security_partition_VolumeLabel_r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
lea eax, [esp + 0x13]
push ebp
push eax
push 0
call fcn.10117200
add esp, 0xc
jmp 0x10116755
test cl, 2
je 0x10116706
mov esi, dword [esp + 0x294]
mov eax, dword [esi + 0x46]
test eax, eax
je 0x101169db
push 0
push str.Change_Public1_partition_VolumeLabel_r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
lea ecx, [esp + 0x13]
push esi
push ecx
push 1
jmp 0x10116746
test cl, 4
je 0x101169db
mov esi, dword [esp + 0x294]
mov eax, dword [esi + 0x4a]
test eax, eax
je 0x101169db
cmp byte [esi + 0x40], 3
je 0x101169db
push 0
push str.Change_Public2_partition_Volumelabel_r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
lea edx, [esp + 0x13]
push esi
push edx
push 2
call fcn.10117200
mov ebp, dword [esp + 0x2a0]
add esp, 0xc
mov ebx, dword [esp + 0x290]
test ebx, ebx
je 0x101169db
mov ecx, 0x10
xor eax, eax
lea edi, [esp + 0x3c]
mov esi, ebx
rep stosd dword es:[edi], eax
mov ecx, 0xf
lea edi, [esp + 0x3c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0xb
ja 0x101167c7
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x101167c7
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x101167d0
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jl 0x101167b2
jmp 0x101167cb
mov edx, dword [esp + 0x24]
cmp edx, 0xb
jge 0x101167ee
lea edi, [esp + 0x3c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0xb
jae 0x101167e8
mov byte [esp + edx + 0x3c], 0x20
inc edx
cmp edx, 0xb
jl 0x101167d0
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x7c]
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x180]
rep stosd dword es:[edi], eax
movsx eax, byte [esp + 0x13]
push eax
lea ecx, [esp + 0x184]
push str._C:_
push ecx
call fcn.1003399c
add esp, 0xc
lea edx, [esp + 0x7c]
lea eax, [esp + 0x38]
lea ecx, [esp + 0x180]
push 0x104
push edx
push eax
push 0
push 0
push 0
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x101168d9
lea edx, [esp + 0x7c]
push 0x1027b3b0
push edx
call fcn.10034330
add esp, 8
test eax, eax
jne 0x101168d9
mov ecx, 0x41
lea edi, [esp + 0x7c]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x180]
lea ecx, [esp + 0x7c]
push eax
push str.change_the_drive_letter__s___r_n
push ecx
call fcn.1003399c
add esp, 0xc
lea edx, [esp + 0x7c]
mov ecx, 0x10788728
push 0
push edx
push 1
call fcn.10113950
lea eax, [esp + 0x180]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelA]
test eax, eax
je 0x101169db
push 0
push str.Volume_Change_ok__r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x274
ret
mov ebx, dword [esp + 0x28c]
push ebp
lea ecx, [esp + 0x24]
push ebx
push ecx
mov dword [esp + 0x2c], 0xffffffff
call fcn.10117300
add esp, 0xc
cmp eax, 0x13
jne 0x10116907
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x274
ret
mov al, byte [esp + 0x1f]
mov dword [esp + 0x18], 0
test al, al
je 0x10116947
mov eax, dword [esp + 0x20]
mov edx, dword [ebp + 0x52]
test eax, eax
mov dword [esp + 0x14], edx
jne 0x10116997
push ebp
lea eax, [esp + 0x1c]
push ebx
push eax
push 1
call fcn.10116c80
add esp, 0x10
cmp eax, 1
je 0x10116997
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x274
ret
mov al, byte [esp + 0x288]
test al, 2
je 0x10116972
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp + 0x56]
test eax, eax
mov dword [esp + 0x14], ecx
jne 0x10116997
mov eax, dword [ebp + 0x42]
test eax, eax
je 0x10116997
mov eax, ecx
sub eax, eax
mov dword [esp + 0x14], eax
jmp 0x10116997
test al, 4
je 0x10116997
mov eax, dword [esp + 0x20]
mov edx, dword [ebp + 0x5a]
test eax, eax
mov dword [esp + 0x14], edx
jne 0x10116997
mov eax, dword [ebp + 0x42]
test eax, eax
je 0x10116997
mov eax, dword [ebp + 0x56]
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x14], ecx
push 0x10000
call fcn.10034761
mov esi, eax
mov ecx, 0x4000
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x18]
push ebx
push esi
push 1
push edi
call dword [0x107946c0]
add esp, 0x14
test eax, eax
jne 0x101169e8
push esi
call fcn.10034678
push ebp
push ebx
lea ecx, [esp + 0x24]
push ecx
push 0
call fcn.10116c80
add esp, 0x14
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x274
ret
mov al, byte [esi + 0x1be]
mov byte [esi + 0x1fe], 0x55
cmp al, 0x80
mov byte [esi + 0x1ff], 0xaa
je 0x10116a08
test al, al
je 0x10116a08
mov ebp, edi
jmp 0x10116a29
movzx bp, byte [esi + 0x1c7]
movzx dx, byte [esi + 0x1c6]
mov eax, dword [esp + 0x14]
shl ebp, 8
add ebp, edx
and ebp, 0xffff
add ebp, eax
push ebx
mov ecx, 0x4000
xor eax, eax
mov edi, esi
push esi
push 1
rep stosd dword es:[edi], eax
push ebp
call dword [0x107946c0]
add esp, 0x10
test eax, eax
jne 0x10116a59
push esi
call fcn.10034678
mov eax, dword [esp + 0x298]
push eax
jmp 0x101169cb
mov ax, word [esi + 0x11]
test ax, ax
je 0x10116a86
xor edx, edx
xor ecx, ecx
mov dx, word [esi + 0x16]
mov cl, byte [esi + 0x10]
imul edx, ecx
xor ebx, ebx
add ebp, edx
mov bx, word [esi + 0xe]
and eax, 0xffff
add ebx, ebp
shl eax, 5
mov ebp, eax
jmp 0x10116ae3
mov eax, dword [esi + 0x20]
test eax, eax
jne 0x10116aa6
push esi
call fcn.10034678
mov edx, dword [esp + 0x298]
lea eax, [esp + 0x1c]
push edx
push ebx
push eax
jmp 0x101169d1
mov ax, word [esi + 0x16]
test ax, ax
jne 0x10116ac2
xor ecx, ecx
xor ebx, ebx
mov cl, byte [esi + 0x10]
mov bx, word [esi + 0xe]
imul ecx, dword [esi + 0x24]
add ebp, ecx
jmp 0x10116ad7
xor edx, edx
and eax, 0xffff
mov dl, byte [esi + 0x10]
xor ebx, ebx
imul edx, eax
mov bx, word [esi + 0xe]
add ebp, edx
xor eax, eax
add ebx, ebp
mov al, byte [esi + 0xd]
mov ebp, eax
shl ebp, 9
push esi
call fcn.10034678
push ebp
call fcn.10034761
mov ecx, ebp
mov esi, eax
mov edx, ecx
xor eax, eax
mov edi, esi
mov dword [esp + 0x1c], esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x294]
mov eax, ebp
shr eax, 9
push edi
push esi
push eax
push ebx
mov dword [esp + 0x3c], eax
call dword [0x107946c0]
add esp, 0x18
test eax, eax
jne 0x10116b3e
push esi
call fcn.10034678
mov eax, dword [esp + 0x298]
push eax
push edi
jmp 0x101169cc
shr ebp, 5
xor eax, eax
mov edx, 8
test ebp, ebp
jle 0x10116b63
cmp byte [esi + 0xb], dl
je 0x10116b5b
inc eax
add esi, 0x20
cmp eax, ebp
jl 0x10116b4c
jmp 0x10116b5f
cmp eax, ebp
jl 0x10116b9e
mov esi, dword [esp + 0x14]
xor ecx, ecx
test ebp, ebp
jle 0x10116b85
mov al, byte [esi]
cmp al, 0xe5
je 0x10116b7d
test al, al
je 0x10116b7d
inc ecx
add esi, 0x20
cmp ecx, ebp
jl 0x10116b69
jmp 0x10116b81
cmp ecx, ebp
jl 0x10116b9e
mov esi, dword [esp + 0x14]
push esi
call fcn.10034678
mov edx, dword [esp + 0x298]
lea eax, [esp + 0x1c]
push edx
push edi
push eax
jmp 0x101169d1
mov ecx, edx
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x3c]
mov ecx, esi
mov byte [esi + 0xb], dl
mov dword [ecx], eax
mov eax, dword [esp + 0x40]
mov dword [ecx + 4], eax
mov ax, word [esp + 0x44]
mov word [ecx + 8], ax
mov al, byte [esp + 0x46]
mov byte [ecx + 0xa], al
lea ecx, [esp + 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2a]
mov edi, dword [esp + 0x32]
mov ebp, dword [esp + 0x28c]
lea eax, [edx + 0x44]
mov edx, dword [esp + 0x30]
shl eax, 9
shl ecx, 5
or eax, ecx
mov ecx, dword [esp + 0x2e]
shl edx, 6
or eax, ecx
mov cx, word [esp + 0x34]
or edx, edi
mov edi, dword [esp + 0x24]
shl edx, 5
shr cx, 1
or edx, ecx
mov word [esi + 0x18], ax
mov word [esi + 0x16], dx
mov esi, dword [esp + 0x14]
push ebp
push esi
push edi
push ebx
call dword [0x10794644]
push ebp
push esi
push edi
push ebx
call dword [0x107946c0]
push esi
mov edi, eax
call fcn.10034678
add esp, 0x24
test edi, edi
je 0x10116c53
push 0
push str.Volume_Change_ok__r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
mov edx, dword [esp + 0x294]
lea eax, [esp + 0x18]
push edx
push ebp
push eax
push 0
call fcn.10116c80
add esp, 0x10
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x274
ret