Function at 0x401e50
Capabilities:
Get disk information
Terminate process

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x58
mov esi, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x48], eax
call fcn.00401430
cmp esi, 1
jle 0x401ff6
mov ebx, 1
jmp 0x401eaf
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_strlen]
cmp eax, 2
jne 0x401f44
cmp byte [edi + 1], 0x3a
jne 0x401f44
add ebx, 1
cmp esi, ebx
jle 0x401fb0
mov eax, dword [ebp - 0x48]
lea ecx, [ebx*4]
add eax, ecx
mov edi, dword [eax]
mov dword [ebp - 0x4c], eax
cmp byte [edi], 0x2d
jne 0x401e88
movsx eax, byte [edi + 1]
lea edx, [edi + 1]
test al, al
je 0x401f83
mov edi, dword [0x406004]
mov byte [ebp - 0x3d], 0
mov dword [ebp - 0x44], edi
mov edi, dword [section..bss]
mov dword [ebp - 0x3c], edi
xor edi, edi
jmp 0x401f06
movsx eax, byte [edx + 1]
add edx, 1
mov byte [ebp - 0x3d], 1
mov dword [ebp - 0x44], 1
test al, al
je 0x401f67
cmp al, 0x68
je 0x4020c5
cmp al, 0x75
je 0x401ef0
cmp al, 0x61
je 0x401f50
mov edx, edi
test dl, dl
je 0x401f25
mov edx, dword [ebp - 0x3c]
mov dword [section..bss], edx
cmp byte [ebp - 0x3d], 0
je 0x401f34
mov edx, dword [ebp - 0x44]
mov dword [0x406004], edx
mov dword [esp + 4], eax
mov dword [esp], str.Unknown_option___c_n
call fcn.00401000
call fcn.00401060
lea esi, [esi]
movsx eax, byte [edx + 1]
add edx, 1
mov edi, 1
mov dword [ebp - 0x3c], 1
test al, al
jne 0x401f06
mov eax, edi
test al, al
je 0x401f75
mov eax, dword [ebp - 0x3c]
mov dword [section..bss], eax
cmp byte [ebp - 0x3d], 0
je 0x401f83
mov eax, dword [ebp - 0x44]
mov dword [0x406004], eax
mov eax, esi
sub esi, 1
sub eax, ebx
shl eax, 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
lea eax, [eax + ecx + 4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_memmove]
cmp esi, ebx
jg 0x401eaf
mov eax, dword [section..bss]
test eax, eax
jne 0x401fff
cmp esi, 1
je 0x40205c
mov edi, dword [ebp - 0x48]
mov ebx, 1
lea esi, [esi]
mov eax, dword [edi + ebx*4]
movsx ax, byte [eax]
movzx eax, ax
call fcn.00401140
test eax, eax
je 0x402050
add ebx, 1
cmp ebx, esi
jne 0x401fd0
mov dword [esp], 0
call sub.ucrtbase.dll_exit
cmp dword [section..bss], 0
je 0x40205c
lea eax, [ebp - 0x38]
mov esi, dword [0x404238]
mov ebx, 0x63
mov edi, dword [0x40423c]
mov dword [ebp - 0x3c], eax
jmp 0x402028
add ebx, 1
cmp ebx, 0x7b
je 0x401fea
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], edi
mov dword [esp], eax
mov word [ebp - 0x38], bx
call sub.kernel32.dll_GetDriveTypeW
sub esp, 4
cmp eax, 5
jne 0x402020
mov eax, ebx
call fcn.00401140
test eax, eax
jne 0x402020
mov dword [esp], 1
call sub.ucrtbase.dll_exit
xor ebx, ebx
mov esi, 0x63
lea edi, [ebp - 0x38]
lea esi, [esi]
lea esi, [esi]
mov eax, dword [0x404238]
mov edx, dword [0x40423c]
mov dword [esp], edi
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
mov word [ebp - 0x38], si
call sub.kernel32.dll_GetDriveTypeW
sub esp, 4
cmp eax, 5
jne 0x40209c
test bx, bx
jne 0x4020fc
mov ebx, esi
add esi, 1
cmp si, 0x7b
jne 0x402070
movzx eax, bx
test ax, ax
jne 0x4020ea
mov dword [esp], str.No_CD_drive_found_n
call fcn.00401000
mov dword [esp], 1
call sub.ucrtbase.dll_exit
mov eax, edi
test al, al
je 0x4020d3
mov eax, dword [ebp - 0x3c]
mov dword [section..bss], eax
cmp byte [ebp - 0x3d], 0
je 0x401f44
mov eax, dword [ebp - 0x44]
mov dword [0x406004], eax
jmp 0x401f44
call fcn.00401140
test eax, eax
jne 0x401fea
jmp 0x402050
movzx edx, si
movsx eax, bl
mov dword [esp], str.Multiple_CD_drives_found___c:_and__c:___you_need_to_specify_the_one_you_want._n
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call fcn.00401000
jmp 0x402050