Function at 0x4019f4
Capabilities:
Get disk information
Query environment variable
Set environment variable

Disassembly:
push ebp
mov ebp, esp
push 0x238
call fcn.0040a961
push ecx
push esi
push edi
sub esp, 0x214
mov esi, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], ebx
cmp eax, 3
ja case.default.0x401a17
jmp dword [eax*4 + 0x4019e4]
mov ebx, 0x413290
jmp 0x401a41
mov ebx, 0x413298
jmp 0x401a41
mov ebx, 0x4132a0
jmp 0x401a41
mov ebx, 0x4132a6
jmp 0x401a41
mov ebx, 0x4132b0
xor esi, esi
push ebx
push 0x4132b4
call fcn.0040a9d4
add esp, 8
xor edi, edi
test esi, esi
jne 0x401a67
mov dword [0x4142fc], edi
mov dword [0x414300], 1
jmp 0x401a77
mov dword [0x4142fc], 1
mov dword [0x414300], edi
call fcn.00401311
xor eax, eax
mov dword [0x414304], eax
cmp dword [0x4142ec], 0
jne 0x401aa5
cmp esi, 3
je 0x401a9b
cmp esi, 2
je 0x401aa5
cmp esi, 1
ja 0x401aa5
mov dword [0x414304], 1
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
xor ebx, ebx
mov edx, 0x4132d3
call fcn.00401010
test eax, eax
je 0x401acd
cmp byte [eax], 0
je 0x401acd
call fcn.0040c160
mov dword [0x414304], eax
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
xor ebx, ebx
mov edx, 0x4132e8
call fcn.00401010
test eax, eax
je 0x401af5
cmp byte [eax], 0
je 0x401af5
call fcn.0040c160
mov dword [0x414308], eax
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
xor ebx, ebx
mov edx, 0x4132f8
call fcn.00401010
mov ebx, eax
test eax, eax
jne 0x401b3c
push 0x413300
call fcn.0040a9d4
add esp, 4
push 0x10
mov esi, dword [0x41551c]
push esi
push 0x413338
push ebx
call dword [sym.imp.USER32.DLL_MessageBoxA]
mov eax, 0xffffffff
jmp fcn.00401847
cmp dword [0x4142ec], 0
je 0x401ba6
call fcn.0040c239
test eax, eax
jne 0x401ba6
mov edx, 0x415728
lea eax, [ebp - 0x220]
call fcn.0040c130
mov edx, 0x413386
lea eax, [ebp - 0x220]
call fcn.0040c2b0
mov edx, ebx
lea eax, [ebp - 0x220]
call fcn.0040c2b0
lea eax, [ebp - 0x220]
push eax
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.SHLWAPI.DLL_PathCanonicalizeA]
lea eax, [ebp - 0x11c]
push eax
push ebx
push 0x413388
call fcn.0040a9d4
add esp, 0xc
jmp 0x401bcc
mov edx, ebx
lea eax, [ebp - 0x11c]
call fcn.0040c130
cmp dword [0x414308], 0
je 0x401bcc
mov edx, 0x104
lea eax, [ebp - 0x11c]
call fcn.00401194
lea eax, [ebp - 0x11c]
push eax
push 0x4133c8
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
cmp byte [ebp - 0x11b], 0x3a
jne 0x401c69
xor ebx, ebx
mov bl, byte [ebp - 0x11c]
cmp ebx, 0x41
jl 0x401bfd
cmp ebx, 0x5a
jle 0x401c07
cmp ebx, 0x61
jl 0x401c26
cmp ebx, 0x7a
jg 0x401c26
dec ebx
and ebx, 0x1f
call dword [sym.imp.KERNEL32.DLL_GetLogicalDrives]
mov cl, bl
mov edx, 1
shl edx, cl
test eax, edx
setne al
and eax, 0xff
jne 0x401c69
xor ebx, ebx
mov bl, byte [ebp - 0x11c]
push ebx
push 0x4133d0
call fcn.0040a9d4
add esp, 8
push ebx
push 0x4133ff
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.USER32.DLL_wsprintfA]
add esp, 0xc
push 0x10
mov ebx, dword [0x41551c]
push ebx
lea eax, [ebp - 0x11c]
push eax
push 0
jmp 0x401b2c
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
mov ebx, 0x4134b9
mov edx, 0x4134bf
call fcn.00401010
mov ebx, eax
mov edx, 0x413386
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
mov edx, ebx
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
lea eax, [ebp - 0x11c]
push eax
push 0x4134c8
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
mov ebx, 0x4134d1
mov edx, 0x4134d7
call fcn.00401010
mov ebx, eax
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x4133c8
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov edx, 0x413386
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
mov edx, ebx
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
lea eax, [ebp - 0x11c]
push eax
push 0x4134e0
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
lea eax, [ebp - 0x11c]
push eax
push 0x4134e9
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
cmp esi, 3
je 0x401d42
test esi, esi
jbe 0x401d34
cmp esi, 2
jbe 0x401d3b
jmp 0x401d52
mov edx, 0x4134f2
jmp 0x401d47
mov edx, 0x4134fe
jmp 0x401d47
mov edx, 0x41350a
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
lea eax, [ebp - 0x11c]
push eax
push 0x413515
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x4134e0
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov edx, 0x413520
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
lea eax, [ebp - 0x11c]
push eax
push 0x41352b
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
lea eax, [ebp - 0x11c]
call fcn.0040aa90
add eax, 2
add edi, eax
cmp dword [0x4142f4], 0
je 0x401db9
add edi, 3
cmp esi, 2
jne 0x401dc1
add edi, 3
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
mov ebx, 0x413535
mov edx, 0x413542
call fcn.00401010
mov ebx, eax
push eax
push 0x41354b
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
mov eax, ebx
call fcn.0040aa90
add eax, 6
add edi, eax
push 0x413557
push 0x41355a
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x4133c8
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov edx, 0x413564
lea eax, [ebp - 0x11c]
call fcn.0040c2b0
lea eax, [ebp - 0x11c]
push eax
push 0x41356e
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
push 0
mov eax, dword [0x4142f0]
xor ecx, ecx
mov ebx, 0x41357a
mov edx, 0x413585
call fcn.00401010
mov ebx, eax
push eax
push 0x41358d
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
mov eax, ebx
call fcn.0040aa90
add eax, 3
add edi, eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
call fcn.0040184f
add edi, eax
lea ebx, [edi + 1]
mov eax, ebx
call fcn.0040c2e0
mov edi, eax
mov dword [ebp - 0x18], eax
xor edx, edx
call fcn.0040aa70
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x413515
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov byte [edi], 0x22
lea ebx, [edi + 1]
lea edx, [ebp - 0x11c]
mov eax, ebx
call fcn.0040c130
mov eax, ebx
call fcn.0040aa90
add ebx, eax
mov byte [ebx], 0x22
inc ebx
cmp esi, 2
jne 0x401ed9
mov byte [ebx], 0x20
inc ebx
mov byte [ebx], 0x2d
inc ebx
mov byte [ebx], 0x62
inc ebx
cmp dword [0x4142f4], 0
je 0x401eee
mov byte [ebx], 0x20
inc ebx
mov byte [ebx], 0x2d
inc ebx
mov byte [ebx], 0x64
inc ebx
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x41354b
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov byte [ebx], 0x20
inc ebx
mov byte [ebx], 0x2d
inc ebx
mov byte [ebx], 0x63
inc ebx
mov byte [ebx], 0x20
inc ebx
mov edx, 0x20
lea eax, [ebp - 0x11c]
call fcn.0040c3e0
test eax, eax
je 0x401f2d
mov byte [ebx], 0x22
inc ebx
lea edx, [ebp - 0x11c]
mov eax, ebx
call fcn.0040c130
mov eax, ebx
call fcn.0040aa90
add ebx, eax
mov edx, 0x20
lea eax, [ebp - 0x11c]
call fcn.0040c3e0
test eax, eax
je 0x401f5b
mov byte [ebx], 0x22
inc ebx
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x41358d
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
mov byte [ebx], 0x20
inc ebx
mov edx, 0x20
lea eax, [ebp - 0x11c]
call fcn.0040c3e0
test eax, eax
je 0x401f8e
mov byte [ebx], 0x22
inc ebx
lea edx, [ebp - 0x11c]
mov eax, ebx
call fcn.0040c130
mov eax, ebx
call fcn.0040aa90
add ebx, eax
mov edx, 0x20
lea eax, [ebp - 0x11c]
call fcn.0040c3e0
test eax, eax
je 0x401fbb
mov byte [ebx], 0x22
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
call fcn.0040173d
push 0x104
lea eax, [ebp - 0x11c]
push eax
push 0x4134c8
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableA]
lea eax, [ebp - 0x11c]
call fcn.0040aa90
inc eax
call fcn.0040c2e0
mov ebx, eax
lea edx, [ebp - 0x11c]
call fcn.0040c130
mov edx, ebx
mov eax, dword [ebp - 0x18]
call fcn.0040186e
mov edx, eax
test ebx, ebx
je 0x402015
mov eax, ebx
call fcn.0040c400
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x402023
mov eax, ecx
call fcn.0040c400
mov eax, edx
jmp fcn.00401847