Function at 0x4203f0
Capabilities:
Get disk information
Query environment variable

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov edx, dword [esp + 0x70]
mov dword [esp], edx
call fcn.00422230
mov dword [esp], eax
call fcn.0041f8b0
mov dword [esp + 0x3c], eax
test eax, eax
je 0x420643
mov dword [esp], eax
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x74]
mov ebx, eax
mov esi, dword [edx + 0xc]
mov edi, dword [edx + 8]
mov eax, esi
or eax, edi
je 0x420850
mov ecx, dword [esp + 0x3c]
mov dword [esp], ecx
call sub.KERNEL32.dll_GetDriveTypeA
sub esp, 4
cmp eax, 4
je 0x420850
mov edx, dword [esp + 0x74]
mov esi, dword [edx + 0x14]
mov edi, dword [edx + 0x10]
mov ecx, esi
or ecx, edi
jne 0x420485
mov ebp, dword [esp + 0x3c]
xor esi, esi
xor edi, edi
test ebp, ebp
je 0x420477
movzx ebx, byte [ebp]
test bl, bl
mov cl, bl
jne 0x420801
xor eax, eax
xor edx, edx
mov ebp, dword [esp + 0x74]
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x14], edx
mov edi, dword [esp + 0x70]
xor ebx, ebx
test edi, edi
je 0x420703
mov esi, dword [esp + 0x70]
cmp byte [esi], 0
jne 0x420710
mov ebp, dword [esp + 0x70]
test ebp, ebp
je 0x420703
mov dword [esp + 4], 0x2e
mov edi, dword [esp + 0x70]
mov dword [esp], edi
call sub.msvcrt.dll_strrchr
test eax, eax
je 0x420703
cld
mov ecx, 5
mov esi, eax
mov edi, 0x4203ab
repe cmpsb byte [esi], byte es:[edi]
sete cl
movzx eax, cl
lea esi, [esi]
test eax, eax
je 0x4204ea
or ebx, 0xa000
mov esi, dword [esp + 0x74]
xor ecx, ecx
mov edi, dword [0x428160]
or dword [esi], ebx
mov ebx, dword [esi + 0x14]
mov ebp, dword [esi + 0x10]
mov eax, ebx
xor eax, ecx
xor ebp, edi
or eax, ebp
jne 0x420690
mov ecx, dword [0x428170]
xor esi, esi
xor edi, edi
mov edx, dword [esp + 0x74]
mov dword [edx + 0x50], ecx
mov dword [esp], 0x4203b0
call sub.KERNEL32.dll_LoadLibraryA
sub esp, 4
mov ebp, eax
mov dword [esp + 4], 0x4203b9
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
test eax, eax
je 0x420578
mov ebx, dword [esp + 0x70]
lea esi, [esp + 0x40]
mov dword [esp + 4], esi
mov dword [esp], ebx
call eax
sub esp, 8
mov ebx, eax
cmp eax, 0xffffffff
je 0x420679
mov esi, dword [esp + 0x40]
mov ecx, ebx
xor edi, edi
xor ebx, ebx
mov edx, esi
mov esi, ecx
or esi, edi
mov edi, ebx
or edi, edx
test ebp, ebp
je 0x420587
mov dword [esp], ebp
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
mov ebp, edi
mov edx, ebp
mov edi, esi
or edx, esi
jne 0x42059b
mov eax, dword [esp + 0x74]
mov edi, dword [eax + 0x30]
mov ebp, dword [eax + 0x34]
mov dword [esp + 4], ebp
mov ebx, dword [0x428170]
xor esi, esi
mov dword [esp + 0xc], esi
mov dword [esp], edi
mov dword [esp + 8], ebx
call fcn.004258f0
mov dword [esp + 0x30], eax
mov ecx, dword [0x428170]
mov dword [esp + 4], ebp
mov dword [esp + 0x34], edx
shr ecx, 9
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 0
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp], edi
call fcn.00425a10
mov ebp, edx
or ebp, eax
je 0x420650
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], ebp
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
add dword [esp + 0x20], 1
mov dword [esp + 0x24], esi
mov edi, dword [esp + 0x20]
adc dword [esp + 0x24], 0
mul dword [esp + 0x20]
imul ecx, edi
mov esi, eax
mov eax, dword [esp + 0x24]
add edx, ecx
imul ebx, eax
lea edi, [ebx + edx]
mov ebx, dword [esp + 0x74]
mov dword [ebx + 0x58], esi
mov esi, dword [esp + 0x3c]
mov dword [ebx + 0x5c], edi
mov dword [esp], esi
call sub.msvcrt.dll_free
add esp, 0x5c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mul dword [esp + 0x28]
mov ebx, dword [esp + 0x28]
imul ecx, edi
mov ebp, edx
mov esi, eax
mov edx, dword [esp + 0x34]
add ebp, ecx
imul ebx, edx
lea edi, [ebx + ebp]
jmp 0x42062d
call sub.KERNEL32.dll_GetLastError
xor esi, esi
xor edi, edi
test eax, eax
jne 0x420578
jmp 0x420564
mov edx, dword [esp + 0x3c]
lea ecx, [esp + 0x4c]
lea ebx, [esp + 0x50]
mov dword [esp + 0x10], ebx
lea edi, [esp + 0x48]
lea ebp, [esp + 0x44]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], ebp
mov dword [esp], edx
call fcn.00422110
test eax, eax
jne 0x4206e0
mov dword [esp + 0x44], 1
mov dword [esp + 0x48], 0x200
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov ebp, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x74]
imul ebp, edi
mov esi, dword [eax + 0x10]
mov dword [0x428170], ebp
mov dword [0x428160], esi
jmp 0x42050c
xor eax, eax
jmp 0x4204e0
mov dword [esp], 0x41fce4
xor ebp, ebp
call sub.KERNEL32.dll_GetModuleHandleA
sub esp, 4
mov edi, eax
mov dword [esp + 4], 0x4203d0
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, eax
test eax, eax
je 0x420754
mov eax, dword [esp + 0x70]
lea ecx, [esp + 0x54]
mov dword [esp + 4], ecx
mov dword [esp], eax
call edx
sub esp, 8
test eax, eax
jne 0x4207b8
mov edx, dword [0x428180]
test edx, edx
je 0x4207d7
mov eax, dword [esp + 0x70]
test eax, eax
je 0x42076f
mov esi, dword [esp + 0x70]
cmp byte [esi], 0
jne 0x42078c
mov dword [esp], edi
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
test ebp, ebp
je 0x4204a0
mov ebx, 0x49
jmp 0x4204a0
mov dword [esp], esi
mov dword [esp + 4], 0x2e
call sub.msvcrt.dll_strrchr
test eax, eax
mov esi, eax
je 0x42076f
mov dword [esp + 4], eax
mov ecx, dword [0x428180]
mov dword [esp], ecx
call sub.msvcrt.dll_strstr
test eax, eax
je 0x4207bf
mov ebp, 1
jmp 0x42076f
mov dword [esp + 4], esi
mov edx, dword [0x427170]
mov dword [esp], edx
call sub.msvcrt.dll_strstr
test eax, eax
je 0x42076f
jmp 0x4207b8
mov dword [esp], 0x4203df
call sub.msvcrt.dll_getenv
mov dword [0x428180], eax
test eax, eax
jne 0x42075e
mov esi, dword [0x427170]
mov dword [0x428180], esi
jmp 0x42075e
shld edi, esi, 8
movsx eax, cl
shl esi, 8
cdq
add esi, eax
adc edi, edx
mov edx, edi
xor ebx, ebx
and edx, 0xff000000
mov eax, edx
or eax, ebx
je 0x420839
mov ecx, edx
xor eax, eax
shr ecx, 0x10
mov edx, esi
xor edx, ecx
mov ecx, edi
xor ecx, eax
mov esi, edx
mov edi, ecx
and edi, 0xffffff
inc ebp
movzx ebx, byte [ebp]
test bl, bl
mov cl, bl
jne 0x420801
mov eax, esi
mov edx, edi
jmp 0x42047b
mov edi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x70]
mov dword [esp + 4], edi
mov dword [esp], ebp
call sub.msvcrt.dll__stricmp
test eax, eax
jne 0x420880
mov ebx, dword [esp + 0x74]
mov dword [ebx + 8], 5
mov dword [ebx + 0xc], 0x50000
jmp 0x42044d
mov ebp, dword [esp + 0x70]
xor esi, esi
xor edi, edi
add ebp, ebx
je 0x420894
movzx ecx, byte [ebp]
test cl, cl
jne 0x4208a7
xor eax, eax
xor edx, edx
mov ebp, dword [esp + 0x74]
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
jmp 0x42044d
shld edi, esi, 8
movsx eax, cl
shl esi, 8
cdq
add esi, eax
adc edi, edx
mov edx, edi
xor ebx, ebx
and edx, 0xff000000
mov eax, edx
or eax, ebx
je 0x4208df
mov ecx, edx
xor eax, eax
shr ecx, 0x10
mov edx, esi
xor edx, ecx
mov ecx, edi
xor ecx, eax
mov esi, edx
mov edi, ecx
and edi, 0xffffff
inc ebp
movzx ebx, byte [ebp]
test bl, bl
mov cl, bl
jne 0x4208a7
mov eax, esi
mov edx, edi
jmp 0x420898