Function at 0x402880
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
xor eax, eax
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
push edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
call fcn.004013a0
add esp, 4
test eax, eax
je 0x4028e9
push 0x41d22c
push 1
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
mov dword [0x41cd88], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4028f4
mov eax, dword [0x41cd88]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov esi, dword [ebp + 0x10]
push 7
push str.Install
push esi
call fcn.0040aaca
add esp, 0xc
test eax, eax
jne 0x40292e
lea eax, [esi + 8]
mov edx, 0x41cdfc
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x402915
mov dword [0x41d108], 1
jmp 0x402a54
mov ecx, 0x417d34
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402955
test dl, dl
je 0x402951
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402955
add eax, 2
add ecx, 2
test dl, dl
jne 0x402935
xor eax, eax
jmp 0x40295a
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x402976
call fcn.00408a30
test eax, eax
je 0x402a54
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, str.Uninstall
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4029a0
test dl, dl
je 0x40299c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4029a0
add eax, 2
add ecx, 2
test dl, dl
jne 0x402980
xor eax, eax
jmp 0x4029a5
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4029b8
mov dword [0x41d108], 2
jmp 0x402a54
push 0x41cdfc
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x402a21
call fcn.00408c60
test eax, eax
jne 0x4029f8
mov ecx, dword [0x41cd90]
push 0x20
push 0x41d22c
push 0x417d48
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push edi
call fcn.004010a0
add esp, 4
test eax, eax
je 0x4028e9
push edi
call fcn.00407500
add esp, 4
test eax, eax
je 0x402a4e
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call fcn.00401110
test eax, eax
jne 0x402a4e
mov edx, dword [0x41cd90]
push 0x20
push 0x41d22c
push 0x417d98
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov dword [0x41d108], ebx
mov eax, dword [0x41d108]
dec eax
je 0x402ac4
dec eax
je 0x402ab2
mov ecx, edi
call fcn.00402660
test eax, eax
je 0x4029ea
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
lea esp, [esp]
push 1
push 0
push 0
push 0
lea eax, [esp + 0x1c]
push eax
call esi
test eax, eax
je 0x402aaa
cmp dword [esp + 0x10], 0x12
je 0x402ad8
lea ecx, [esp + 0xc]
push ecx
call edi
lea edx, [esp + 0xc]
push edx
call ebx
jmp 0x402a80
call dword [sym.imp.USER32.dll_WaitMessage]
jmp 0x402a80
call fcn.00408650
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, edi
call fcn.00402660
test eax, eax
je 0x4029ea
call fcn.00405730
call fcn.00402600
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10