Function at 0x45f105
Capabilities:
Get common file path
Get disk information
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10b4
call fcn.004931e0
push ebx
push esi
lea eax, [ebp + 8]
push edi
push eax
mov dword [ebp - 0x28], ecx
call fcn.00437e65
pop ecx
push 5
lea ecx, [ebp - 8]
call fcn.0043dd9c
push 0x14
lea ecx, [ebp - 0x48]
call fcn.0043dd9c
lea ecx, [ebp - 0x34]
call fcn.0043dd7e
mov esi, dword [ebp + 8]
mov ax, word [esi]
xor ebx, ebx
cmp ax, 0x2d
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], ebx
mov cl, 0x2a
jne 0x45f15f
mov cl, al
movsx edi, cl
movzx eax, ax
jmp 0x45f289
push 3
lea eax, [ebp + 8]
inc esi
push eax
inc esi
push 0x4afd90
mov dword [ebp + 8], esi
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f192
mov dword [ebp - 0xc], 1
jmp 0x45f283
push 6
lea eax, [ebp + 8]
push eax
push str.setvol
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f1b5
mov dword [ebp - 0xc], 2
jmp 0x45f283
push 4
lea eax, [ebp + 8]
push eax
push str.idle
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f1d8
mov dword [ebp - 0x20], 1
jmp 0x45f283
push 5
lea eax, [ebp + 8]
push eax
push str.idlec
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f1fb
mov dword [ebp - 0x20], 2
jmp 0x45f283
push 5
lea eax, [ebp + 8]
push eax
push str.rsort
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f21b
mov dword [ebp - 0x24], 1
jmp 0x45f283
push 2
pop esi
push esi
lea eax, [ebp + 8]
push eax
push 0x4afd54
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f23d
mov dword [ebp - 0x18], 0x100
jmp 0x45f283
push 3
lea eax, [ebp + 8]
push eax
push 0x4afd4c
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f25d
mov dword [ebp - 0x14], 1
jmp 0x45f283
push 4
lea eax, [ebp + 8]
push eax
push str.devs
call fcn.00437f44
add esp, 0xc
test eax, eax
je 0x45f279
mov dword [ebp - 0x14], esi
jmp 0x45f283
lea eax, [ebp + 8]
push eax
call fcn.00405196
pop ecx
mov esi, dword [ebp + 8]
movzx eax, word [esi]
cmp edi, eax
je 0x45f16a
push 0x3d
lea eax, [ebp - 8]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov ecx, dword [ebp - 0x28]
add esp, 0xc
push ebx
lea eax, [ebp - 8]
push eax
call fcn.00402d33
mov eax, dword [ebp + 8]
cmp word [eax], 0x3d
mov esi, eax
jne 0x45f2d2
lea esi, [eax + 2]
push ebx
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp + 8]
push eax
mov dword [ebp + 8], esi
call fcn.004408ab
add esp, 0xc
mov eax, dword [ebp - 8]
cmp word [eax], bx
jne 0x45f2e4
mov ebx, 0x80070057
jmp 0x45fb9b
cmp dword [ebp - 0xc], 2
jne 0x45f31c
push 2
lea ecx, [ebp - 8]
call fcn.0043ddc3
mov eax, dword [ebp - 8]
push esi
mov word [eax + 2], 0x3a
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
test eax, eax
jne 0x45fb9b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x45fb9b
mov eax, dword [ebp - 0x48]
cmp word [eax], 0x3f
jne 0x45f3b5
push 0x400008
lea ecx, [ebp + 8]
call fcn.0043dd9c
mov esi, dword [ebp + 8]
mov edi, esi
push 0x1ffffe
add esi, 0x400008
push esi
mov eax, edi
mov dword [esi], ebx
push ebx
mov dword [eax], ebx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
cmp eax, ebx
mov dword [ebp - 0x18], eax
lea edx, [esi + eax*2]
jle 0x45f38f
cmp esi, edx
jae 0x45f38f
push 2
pop ecx
jmp 0x45f36e
mov word [edi], ax
add edi, ecx
xor eax, eax
mov ax, word [esi]
add esi, ecx
cmp ax, bx
jne 0x45f367
cmp word [esi], bx
je 0x45f38f
mov word [edi], 0xd
add edi, ecx
mov word [edi], 0xa
add edi, ecx
cmp esi, edx
jb 0x45f36e
push dword [ebp + 8]
mov ecx, dword [ebp - 0x28]
mov word [edi], bx
push dword [ebp - 8]
call fcn.0043d658
cmp dword [ebp - 0x18], ebx
jg 0x45f3ad
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea ecx, [ebp + 8]
jmp 0x45fb96
push eax
call fcn.0041161a
pop ecx
mov dword [ebp - 0x2c], eax
call fcn.00442d67
mov edi, 0x517
push edi
lea ecx, [ebp - 0x10]
mov esi, eax
call fcn.0043dd9c
mov eax, dword [ebp - 0x10]
add eax, 0x61c
cmp dword [ebp - 0x14], ebx
mov dword [ebp - 0x30], eax
je 0x45f49e
mov eax, dword [ebp - 0x10]
push edi
push eax
push esi
mov word [eax], bx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
cmp dword [ebp - 0x14], 2
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp + 8], eax
jl 0x45f47a
xor esi, esi
cmp word [eax], bx
mov ecx, eax
mov dword [ebp + 8], eax
je 0x45f47a
mov dx, word [ecx]
inc ecx
inc ecx
test dx, dx
jne 0x45f412
inc esi
cmp word [ecx], bx
jne 0x45f412
cmp esi, 1
jle 0x45f47a
sub ecx, eax
sar ecx, 1
lea edx, [ecx + esi]
cmp edx, edi
mov dword [ebp - 0x18], ecx
jle 0x45f447
add edx, 2
push edx
lea ecx, [ebp - 0x10]
call fcn.0043ddc3
mov ecx, dword [ebp - 0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
lea edx, [eax + ecx*2 - 4]
lea ecx, [edx + esi*2]
mov word [ecx], bx
jmp 0x45f476
cmp ecx, edx
jbe 0x45f469
mov si, word [edx]
mov word [ecx], si
dec ecx
dec ecx
dec edx
dec edx
cmp si, bx
jne 0x45f456
mov word [ecx], 0xd
mov word [ecx + 2], 0xa
dec ecx
dec ecx
cmp ecx, edx
ja 0x45f45a
push dword [ebp + 8]
mov ecx, dword [ebp - 0x28]
push dword [ebp - 8]
call fcn.0043d658
cmp dword [ebp - 0x24], ebx
jne 0x45fb93
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x45fb93
test byte [ebp - 0xc], 1
je 0x45fab4
mov eax, dword [ebp - 0x10]
mov dword [eax], ebx
add eax, 0x412
mov dword [ebp - 4], eax
mov dword [eax], ebx
mov ax, word [esi]
cmp ax, bx
je 0x45f4eb
mov cx, word [esi + 2]
cmp cx, bx
je 0x45f4d4
cmp cx, 0x3a
jne 0x45f4eb
cmp word [esi + 4], bx
jne 0x45f4eb
lea esi, [ebp - 0x68]
mov word [ebp - 0x68], ax
mov word [ebp - 0x66], 0x3a
mov word [ebp - 0x64], 0x5c
mov word [ebp - 0x62], bx
push 0xc
push str._HarddiskVolume
push esi
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x14], 1
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
mov edi, 0x208
je 0x45f551
push 0x104
push dword [ebp - 4]
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x58]
push eax
push edi
push dword [ebp - 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je 0x45f540
mov dword [ebp - 0x14], ebx
jmp 0x45f5d7
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, ebx
mov dword [ebp - 0x14], eax
je 0x45f5d7
mov eax, dword [ebp - 4]
push ebx
push 0x4c10ec
push str.Kernel32.DLL
push str.GetVolumeInformationByHandleW
mov dword [eax], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
call fcn.004391ea
add esp, 0x10
cmp dword [0x4c10ec], ebx
je 0x45f5d7
push ebx
push ebx
push 3
push ebx
push 7
push 0x80000000
push dword [ebp - 0x2c]
lea ecx, [ebp + 8]
mov dword [ebp + 8], ebx
call fcn.004051d2
push 0x104
push dword [ebp - 4]
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x58]
push eax
push edi
push dword [ebp - 0x10]
push dword [ebp + 8]
call dword [0x4c10ec]
test eax, eax
je 0x45f5c6
mov dword [ebp - 0x14], ebx
jmp 0x45f5cf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x14], eax
lea ecx, [ebp + 8]
call fcn.00402b5a
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x20]
mov dword [ebp + 8], eax
call fcn.0043dd7e
lea ecx, [ebp - 0x2c]
call fcn.0043dd7e
lea ecx, [ebp - 0x30]
call fcn.0043dd7e
lea ecx, [ebp - 0x4c]
call fcn.0043dd7e
lea ecx, [ebp - 0x50]
call fcn.0043dd7e
lea ecx, [ebp - 0x44]
call fcn.0043dd7e
push 0x2c
pop edi
push edi
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], bx
je 0x45f6b6
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], bx
je 0x45f6b6
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], bx
je 0x45f6b6
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], bx
je 0x45f6b6
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], bx
je 0x45f6b6
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004408ab
add esp, 0xc
mov eax, dword [ebp - 0x44]
cmp word [eax], bx
je 0x45fa2e
push dword [ebp - 4]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpW]
or dword [ebp + 8], 0xffffffff
push 0x4ac778
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x24], 0x200
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], str._02X_02X__02X_02X
mov word [ebp - 0x10b4], bx
mov dword [ebp - 0x1068], ebx
mov dword [ebp - 0x1064], ebx
call edi
test eax, eax
je 0x45f808
push dword [ebp - 4]
push str.FAT16
call edi
test eax, eax
je 0x45f808
push dword [ebp - 4]
push str.FAT32
call edi
test eax, eax
jne 0x45f735
mov dword [ebp + 8], 0x43
jmp 0x45f80f
push dword [ebp - 4]
push str.ExFAT
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x45f753
mov dword [ebp + 8], 0x64
jmp 0x45f80f
push dword [ebp - 4]
push 0x4ac754
call edi
test eax, eax
jne 0x45f77b
mov dword [ebp + 8], 0x48
mov dword [ebp - 0xc], 2
mov dword [ebp - 0x1c], str._02X_02X_02X_02X_02X_02X_02X_02X
jmp 0x45f80f
push 3
push dword [ebp - 4]
push str.EXT2
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x45f7ba
mov eax, dword [ebp - 4]
movzx eax, word [eax + 6]
push eax
call fcn.004129ca
add esp, 4
test al, al
je 0x45f7ba
mov dword [ebp + 8], 0x468
mov dword [ebp - 0xc], 3
mov dword [ebp - 0x1c], str._02x_02x_02x_02x__02x_02x__02x_02x__02x_02x__02x_02x_02x_02x_02x_02x
jmp 0x45f80f
push dword [ebp - 4]
push str.CDFS
call edi
test eax, eax
je 0x45f7ea
push dword [ebp - 4]
push 0x4afbd8
call edi
test eax, eax
je 0x45f7ea
push 3
push dword [ebp - 4]
push str.ISO9600
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x45f80f
mov dword [ebp - 0x24], 0x800
mov dword [ebp + 8], 0x833e
mov dword [ebp - 0xc], 4
mov dword [ebp - 0x1c], str._02x_02x__02x__02x__02x__02x__02x__02x
jmp 0x45f80f
mov dword [ebp + 8], 0x27
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
dec eax
cmp eax, ebx
jle 0x45f85a
push 0x5c
pop ecx
cmp word [esi + eax*2], cx
jne 0x45f829
mov word [esi + eax*2], bx
dec eax
cmp eax, ebx
jle 0x45f85a
cmp word [esi + 2], 0x3a
jne 0x45f85a
mov ax, word [esi]
lea esi, [ebp - 0x68]
mov word [ebp - 0x62], cx
mov word [ebp - 0x66], cx
mov word [ebp - 0x68], cx
mov word [ebp - 0x64], 0x2e
mov word [ebp - 0x60], ax
mov word [ebp - 0x5e], 0x3a
mov word [ebp - 0x5c], bx
push ebx
push 0x80
push 3
push ebx
push 7
push 0x80000000
push esi
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x40], ebx
call fcn.004051d2
mov esi, dword [ebp - 0x24]
cmp dword [ebp + 8], esi
jl 0x45f896
mov eax, dword [ebp + 8]
cdq
idiv esi
push ebx
imul eax, esi
cdq
push edx
push eax
push dword [ebp - 0x40]
call fcn.0043908b
add esp, 0x10
push ebx
lea eax, [ebp - 0x18]
push eax
push esi
lea eax, [ebp - 0x1068]
push eax
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_ReadFile]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [ebp - 0x18], ebx
je 0x45fa14
mov eax, dword [ebp + 8]
cdq
idiv esi
cmp dword [ebp - 0xc], 4
lea esi, [ebp + edx - 0x1068]
jne 0x45f8f0
mov edi, esi
push 8
lea esi, [ebp - 0x107c]
mov eax, esi
push ebx
push eax
mov byte [edi + 0x10], bl
call fcn.00492e00
mov eax, esi
push eax
push edi
call fcn.00442dff
add esp, 0x14
mov eax, dword [ebp - 0xc]
cmp eax, 1
jg 0x45f923
movzx eax, byte [esi]
push eax
movzx eax, byte [esi + 1]
push eax
movzx eax, byte [esi + 2]
push eax
movzx eax, byte [esi + 3]
push eax
push dword [ebp - 0x1c]
lea eax, [ebp - 0x10b4]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
jmp 0x45fa14
cmp eax, 2
jne 0x45f967
movzx eax, byte [esi]
push eax
movzx eax, byte [esi + 1]
push eax
movzx eax, byte [esi + 2]
push eax
movzx eax, byte [esi + 3]
push eax
movzx eax, byte [esi + 4]
push eax
movzx eax, byte [esi + 5]
push eax
movzx eax, byte [esi + 6]
push eax
movzx eax, byte [esi + 7]
push eax
push dword [ebp - 0x1c]
lea eax, [ebp - 0x10b4]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x28
jmp 0x45fa14
cmp eax, 3
jne 0x45f9d0
movzx eax, byte [esi + 0xf]
push eax
movzx eax, byte [esi + 0xe]
push eax
movzx eax, byte [esi + 0xd]
push eax
movzx eax, byte [esi + 0xc]
push eax
movzx eax, byte [esi + 0xb]
push eax
movzx eax, byte [esi + 0xa]
push eax
movzx eax, byte [esi + 9]
push eax
movzx eax, byte [esi + 8]
push eax
movzx eax, byte [esi + 7]
push eax
movzx eax, byte [esi + 6]
push eax
movzx eax, byte [esi + 5]
push eax
movzx eax, byte [esi + 4]
push eax
movzx eax, byte [esi + 3]
push eax
movzx eax, byte [esi + 2]
push eax
movzx eax, byte [esi + 1]
push eax
movzx eax, byte [esi]
push eax
push dword [ebp - 0x1c]
lea eax, [ebp - 0x10b4]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x48
jmp 0x45fa14
cmp eax, 4
jne 0x45fa14
movzx eax, byte [esi + 8]
push eax
movzx eax, byte [esi + 7]
push eax
movzx eax, byte [esi + 6]
push eax
movzx eax, byte [esi + 5]
push eax
movzx eax, byte [esi + 4]
push eax
movzx eax, byte [esi + 3]
push eax
movzx eax, byte [esi + 2]
push eax
movzx eax, byte [esi + 1]
push eax
movzx eax, byte [esi]
push eax
push dword [ebp - 0x1c]
lea eax, [ebp - 0x10b4]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x2c
mov ecx, dword [ebp - 0x28]
lea eax, [ebp - 0x10b4]
push eax
push dword [ebp - 0x44]
call fcn.0043d658
lea ecx, [ebp - 0x40]
call fcn.00402b5a
push dword [ebp - 0x10]
mov esi, dword [ebp - 0x28]
push dword [ebp - 0x20]
mov ecx, esi
call fcn.0043d658
push str._08lX
push dword [ebp - 0x2c]
push dword [ebp - 0x58]
push esi
call fcn.00440210
push dword [ebp - 0x30]
push dword [ebp - 0x38]
push esi
call fcn.0044023a
push str.0x_lX
push dword [ebp - 0x50]
push dword [ebp - 0x3c]
push esi
call fcn.00440210
add esp, 0x2c
push dword [ebp - 4]
mov ecx, esi
push dword [ebp - 0x4c]
call fcn.0043d658
lea ecx, [ebp - 0x44]
call fcn.00437e1a
lea ecx, [ebp - 0x50]
call fcn.00437e1a
lea ecx, [ebp - 0x4c]
call fcn.00437e1a
lea ecx, [ebp - 0x30]
call fcn.00437e1a
lea ecx, [ebp - 0x2c]
call fcn.00437e1a
lea ecx, [ebp - 0x20]
call fcn.00437e1a
mov ebx, dword [ebp - 0x14]
jmp 0x45fb93
cmp word [esi], bx
mov byte [ebp + 0xb], 1
jne 0x45fac1
mov cl, 0x7c
jmp 0x45fae8
push esi
push 0x4afb70
call fcn.004391ba
test al, al
pop ecx
pop ecx
jne 0x45fae6
push esi
push 0x4ac1e4
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x45fb0a
mov byte [ebp + 0xb], bl
mov cl, 0x20
mov eax, dword [ebp - 0x18]
or eax, dword [ebp - 0x24]
push eax
movsx eax, byte [ebp + 0xb]
push dword [ebp - 0x20]
push eax
movsx ax, cl
push eax
lea eax, [ebp - 0x34]
push eax
call fcn.0044ae0c
add esp, 0x14
jmp 0x45fb85
cmp word [esi + 2], 0x3a
jne 0x45fb17
mov word [esi + 4], bx
jmp 0x45fb87
mov edi, dword [ebp - 0x30]
push edi
push 0x208
mov word [edi], bx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x5c
pop eax
cmp word [esi], ax
jne 0x45fb68
cmp word [esi + 2], ax
jne 0x45fb68
cmp word [esi + 4], 0x3f
jne 0x45fb68
cmp word [esi + 6], ax
jne 0x45fb68
lea ecx, [esi + 8]
mov dx, word [ecx]
cmp dx, bx
je 0x45fb87
cmp dx, ax
je 0x45fb5e
inc ecx
inc ecx
mov dx, word [ecx]
cmp dx, bx
jne 0x45fb4f
cmp word [ecx], bx
je 0x45fb87
mov word [ecx], bx
jmp 0x45fb87
push 5
lea ecx, [ebp - 0x34]
call fcn.0043ddc3
mov cx, word [edi]
mov eax, dword [ebp - 0x34]
mov word [eax], cx
mov word [eax + 2], 0x3a
mov word [eax + 4], bx
mov esi, eax
mov ecx, dword [ebp - 0x28]
push esi
push dword [ebp - 8]
call fcn.0043d658
lea ecx, [ebp - 0x10]
call fcn.00437e1a
lea ecx, [ebp - 0x34]
call fcn.00437e1a
lea ecx, [ebp - 0x48]
call fcn.00437e1a
lea ecx, [ebp - 8]
call fcn.00437e1a
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret 8