Function at 0x460020
Capabilities:
Check if file exists
Get disk information
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55af53
mov eax, dword fs:[0]
push eax
sub esp, 0x340
mov eax, dword [0x5c7cec]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x280], ecx
xor ecx, ecx
mov dword [ebp - 0x238], ecx
mov dword [ebp - 0x29c], ecx
lea ecx, [ebp - 0x234]
push eax
mov dword [ebp - 0x28c], edi
mov dword [ebp - 0x284], esi
call fcn.00409a20
lea eax, [ebp - 0x27b]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0x234]
mov byte [ebp - 0x27b], 0
push eax
call fcn.0042a300
add esp, 8
test al, al
je 0x460351
cmp byte [ebp - 0x27b], 0
mov eax, dword [ebp - 0x280]
mov byte [eax], 0
je 0x4607ea
xor eax, eax
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
mov word [ebp - 0x25c], ax
push 0x57352c
push 4
push eax
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 1
call fcn.00429d50
test eax, eax
lea eax, [ebp - 0x234]
jne 0x4601fd
cmp dword [ebp - 0x220], 8
lea ecx, [ebp - 0x25c]
push ecx
cmovae eax, dword [ebp - 0x234]
push eax
call fcn.00496360
add esp, 8
test al, al
je 0x460341
lea eax, [ebp - 0x234]
cmp edi, eax
je 0x460155
cmp dword [ebp - 0x220], 8
mov ecx, edi
push dword [ebp - 0x224]
cmovae eax, dword [ebp - 0x234]
push eax
call fcn.00408740
xor ecx, ecx
mov edx, 0x5cce20
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
jne 0x4601bd
mov word [ebp - 0x27c], ax
lea eax, [ebp - 0x27c]
push eax
push 1
push 0
push str.4202392
call fcn.0040c000
add esp, 0x10
movzx ecx, ax
cmp word [ebp - 0x27c], 0
je 0x4601ad
lea eax, [ebp - 0x27c]
push eax
push 0
push 0
push str.4202392
call fcn.0040c000
add esp, 0x10
movzx ecx, ax
xor eax, eax
test cx, cx
mov ecx, 0x5cce20
sete al
inc eax
xchg dword [ecx], eax
cmp dword [0x5cce20], 1
jne 0x4601d6
cmp dword [ebp - 0x24c], 0x10a
jae 0x4602ee
lea eax, [ebp - 0x25c]
mov ecx, esi
push eax
call fcn.00428c90
mov eax, dword [ebp - 0x280]
lea ecx, [ebp - 0x25c]
mov byte [eax], 1
call fcn.00408e50
jmp 0x4607ea
push eax
lea eax, [ebp - 0x278]
push eax
call fcn.00429f80
add esp, 8
cmp dword [eax + 0x14], 8
mov byte [ebp - 4], 2
jb 0x460219
mov eax, dword [eax]
lea ecx, [ebp - 0x25c]
push ecx
push eax
call fcn.00496360
add esp, 8
mov byte [ebp - 0x27b], al
lea ecx, [ebp - 0x278]
mov byte [ebp - 4], 1
call fcn.00408e50
cmp byte [ebp - 0x27b], 0
je 0x460341
lea eax, [ebp - 0x234]
cmp edi, eax
je 0x460271
cmp dword [ebp - 0x220], 8
mov ecx, edi
push dword [ebp - 0x224]
cmovae eax, dword [ebp - 0x234]
push eax
call fcn.00408740
xor ecx, ecx
mov edx, 0x5cce20
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
jne 0x4602d9
mov word [ebp - 0x27c], ax
lea eax, [ebp - 0x27c]
push eax
push 1
push 0
push str.4202392
call fcn.0040c000
add esp, 0x10
movzx ecx, ax
cmp word [ebp - 0x27c], 0
je 0x4602c9
lea eax, [ebp - 0x27c]
push eax
push 0
push 0
push str.4202392
call fcn.0040c000
add esp, 0x10
movzx ecx, ax
xor eax, eax
test cx, cx
mov ecx, 0x5cce20
sete al
inc eax
xchg dword [ecx], eax
cmp dword [0x5cce20], 1
jne 0x46030f
cmp dword [ebp - 0x24c], 0x10a
jb 0x46030f
push edi
mov ecx, esi
call fcn.00428c90
mov eax, dword [ebp - 0x280]
lea ecx, [ebp - 0x25c]
mov byte [eax], 0
call fcn.00408e50
jmp 0x4607ea
lea eax, [ebp - 0x25c]
push eax
lea eax, [ebp - 0x278]
push eax
call fcn.00459ed0
add esp, 8
mov ecx, esi
push eax
call fcn.0042a225
lea ecx, [ebp - 0x278]
call fcn.00408e50
mov eax, dword [ebp - 0x280]
mov byte [eax], 1
lea ecx, [ebp - 0x25c]
call fcn.00408e50
jmp 0x4607ea
push 0x57352c
push 4
push 0
lea ecx, [ebp - 0x234]
call fcn.00429d50
test eax, eax
jne 0x460426
mov dword [ebp - 0x24c], eax
mov word [ebp - 0x25c], ax
mov eax, dword [ebp - 0x224]
mov dword [ebp - 0x248], 7
cmp eax, 4
jb 0x460d7e
add eax, 0xfffffffc
or ecx, 0xffffffff
cmp eax, 0xffffffff
cmovb ecx, eax
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x234]
push ecx
add eax, 8
lea ecx, [ebp - 0x25c]
push eax
call fcn.00408740
mov ecx, 2
mov dword [ebp - 0x238], ecx
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 3
call fcn.00408df0
movups xmm0, xmmword [ebp - 0x25c]
xor eax, eax
lea ecx, [ebp - 0x25c]
mov word [ebp - 0x25c], ax
movups xmmword [ebp - 0x234], xmm0
mov byte [ebp - 4], al
movq xmm0, qword [ebp - 0x24c]
movq qword [ebp - 0x224], xmm0
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
call fcn.00408e50
lea eax, [ebp - 0x234]
push eax
call fcn.0045a540
add esp, 4
test al, al
jne 0x4607e1
or ecx, 0xffffffff
mov byte [ebp - 0x27b], al
nop word [eax + eax]
xor eax, eax
mov dword [ebp - 0x24c], 0
cmp dword [ebp - 0x224], ecx
mov word [ebp - 0x25c], ax
lea eax, [ebp - 0x234]
cmovb ecx, dword [ebp - 0x224]
cmp dword [ebp - 0x220], 8
push ecx
cmovae eax, dword [ebp - 0x234]
lea ecx, [ebp - 0x25c]
push eax
mov dword [ebp - 0x248], 7
call fcn.00408740
or dword [ebp - 0x238], 4
mov edx, dword [ebp - 0x220]
mov byte [ebp - 4], 4
cmp edx, 8
jb 0x4604e6
mov ecx, dword [ebp - 0x234]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4604dc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x460d83
push edx
push ecx
call fcn.004097e6
add esp, 8
movups xmm1, xmmword [ebp - 0x25c]
movq xmm0, qword [ebp - 0x24c]
movups xmmword [ebp - 0x234], xmm1
movq qword [ebp - 0x224], xmm0
cmp dword [ebp - 0x248], 8
lea edx, [ebp - 0x234]
mov ecx, dword [ebp - 0x24c]
movd eax, xmm1
mov byte [ebp - 4], 0
cmovae edx, eax
mov dword [ebp - 0x288], eax
test ecx, ecx
je 0x46054d
mov eax, edx
nop
cmp word [eax], 0x5c
je 0x460540
add eax, 2
sub ecx, 1
jne 0x460530
jmp 0x46054d
test eax, eax
je 0x46054d
sub eax, edx
sar eax, 1
cmp eax, 0xffffffff
jne 0x460597
cmp dword [ebp - 0x248], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x288]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
test eax, eax
je 0x460597
cmp eax, 1
je 0x460597
cmp byte [ebp - 0x27b], 0
jne 0x4607e1
push 1
push 0x56999c
lea ecx, [ebp - 0x234]
call fcn.0040cd80
mov byte [ebp - 0x27b], 1
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x234]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x460605
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 2
je 0x46078b
cmp esi, 3
je 0x46078b
cmp esi, 0x7b
je 0x46078b
cmp esi, 0xa1
je 0x46078b
mov ecx, dword [ebp - 0x238]
test cl, 1
je 0x4607ec
lea ecx, [ebp - 0x34c]
call fcn.0048d350
jmp 0x4607ec
test eax, 0x400
je 0x460791
test edi, edi
je 0x460d70
test esi, esi
je 0x460d70
cmp dword [edi + 0x14], 8
mov eax, edi
mov dword [edi + 0x10], 0
jb 0x460631
mov eax, dword [edi]
xor ecx, ecx
mov word [eax], cx
mov eax, esi
cmp dword [esi + 0x14], 8
mov dword [esi + 0x10], ecx
jb 0x460643
mov eax, dword [esi]
xor ecx, ecx
push ecx
push 0x2200000
push 3
mov word [eax], cx
lea eax, [ebp - 0x234]
cmp dword [ebp - 0x220], 8
push ecx
cmovae eax, dword [ebp - 0x234]
push 7
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x288], eax
cmp eax, 0xffffffff
je 0x460d66
xorps xmm0, xmm0
mov dword [ebp - 0x290], 0
movq qword [ebp - 0x298], xmm0
push 0x428b
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x294], 0
mov dword [ebp - 0x290], 0
call fcn.00406909
add esp, 4
test eax, eax
je 0x460d83
lea edi, [eax + 0x23]
and edi, 0xffffffe0
push 0x4268
push 0
push edi
lea esi, [edi + 0x4268]
mov dword [ebp - 0x29c], edi
mov dword [edi - 4], eax
mov dword [ebp - 0x298], edi
mov dword [ebp - 0x290], esi
call fcn.005290f0
add esp, 0xc
mov dword [ebp - 0x294], esi
push 0
lea eax, [ebp - 0x260]
mov byte [ebp - 4], 7
push eax
push 0x4268
push edi
push 0
push 0
push 0x900a8
push dword [ebp - 0x288]
mov dword [ebp - 0x260], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push dword [ebp - 0x288]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x460a0c
mov eax, dword [ebp - 0x260]
test eax, eax
je 0x460a0c
cmp eax, 0x4268
ja 0x460a0c
mov eax, dword [edi]
cmp eax, 0x80000013
je 0x460772
cmp eax, 0x80000007
jne 0x460814
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 0x22
call fcn.0049af20
mov edi, dword [ebp - 0x28c]
mov byte [ebp - 4], 0
mov esi, dword [ebp - 0x284]
cmp dword [ebp - 0x220], 8
lea edx, [ebp - 0x234]
mov eax, dword [ebp - 0x224]
cmovae edx, dword [ebp - 0x234]
test eax, eax
je 0x4607d5
or ecx, 0xffffffff
dec eax
cmp eax, ecx
cmovb ecx, eax
cmp word [edx + ecx*2], 0x5c
lea ecx, [edx + ecx*2]
je 0x4607cf
cmp ecx, edx
je 0x4607d5
sub ecx, 2
cmp word [ecx], 0x5c
jne 0x4607c2
sub ecx, edx
sar ecx, 1
jmp 0x4607d8
or ecx, 0xffffffff
cmp ecx, 0xffffffff
jne 0x460450
mov eax, dword [ebp - 0x280]
mov byte [eax], 0
xor esi, esi
lea ecx, [ebp - 0x234]
call fcn.00408e50
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040154f
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x280]
mov byte [eax], 1
mov eax, dword [edi]
cmp eax, 0xa0000003
jne 0x460afb
push 0x20a
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.005290f0
push 0x56999c
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x278]
push eax
call fcn.0043cca0
add esp, 0x18
cmp dword [eax + 0x14], 8
mov byte [ebp - 4], 9
jb 0x460864
mov eax, dword [eax]
push 0x104
lea ecx, [ebp - 0x21c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
lea ecx, [ebp - 0x278]
mov byte [ebp - 4], 7
mov esi, eax
call fcn.00408e50
test esi, esi
je 0x460a35
xorps xmm0, xmm0
mov dword [ebp - 0x23c], 0
mov eax, 0x104
movq qword [ebp - 0x244], xmm0
mov dword [ebp - 0x238], eax
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x244]
push ecx
push eax
call fcn.00492910
lea eax, [ebp - 0x238]
push eax
push dword [ebp - 0x238]
lea eax, [ebp - 0x21c]
push dword [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameW]
test eax, eax
jne 0x46091c
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
jne 0x4609c9
mov eax, dword [ebp - 0x238]
jmp 0x4608d2
mov esi, dword [ebp - 0x244]
mov edi, dword [ebp - 0x284]
cmp word [esi], 0
je 0x460990
nop
cmp dword [edi + 0x10], 0
jne 0x46098a
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4609c9
test eax, 0x400
jne 0x46096a
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x460952
sub ecx, edx
sar ecx, 1
push ecx
push esi
mov ecx, edi
call fcn.00408740
mov ecx, esi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x460970
sub ecx, edx
sar ecx, 1
lea esi, [esi + ecx*2]
add esi, 2
cmp word [esi], ax
jne 0x460930
mov esi, dword [ebp - 0x244]
mov byte [ebp - 4], 0xf
test esi, esi
je 0x460a2f
mov eax, dword [ebp - 0x23c]
sub eax, esi
sar eax, 1
lea ecx, [eax + eax]
mov eax, esi
cmp ecx, 0x1000
jb 0x460a25
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x460d83
jmp 0x460a25
mov ecx, dword [ebp - 0x244]
mov byte [ebp - 4], 0xd
test ecx, ecx
je 0x460a0c
mov eax, dword [ebp - 0x23c]
sub eax, ecx
sar eax, 1
lea edx, [eax + eax]
mov eax, ecx
cmp edx, 0x1000
jb 0x460a02
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x460d83
push edx
push ecx
call fcn.004097e6
add esp, 8
mov esi, 3
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 0x21
call fcn.0049af20
jmp 0x4607ec
push ecx
push esi
call fcn.004097e6
add esp, 8
mov byte [ebp - 4], 7
jmp 0x460a5e
add edi, 0x10
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x460a40
sub ecx, edx
sar ecx, 1
push ecx
push edi
mov edi, dword [ebp - 0x284]
mov ecx, edi
call fcn.00408740
mov esi, dword [ebp - 0x28c]
lea eax, [ebp - 0x234]
push eax
mov ecx, esi
call fcn.00428c90
cmp dword [edi + 0x10], 0
lea eax, [edi + 0x10]
mov dword [ebp - 0x288], eax
je 0x460af4
push 0x57352c
push 4
push 0
mov ecx, edi
call fcn.00429d50
test eax, eax
jne 0x460aba
push 0xffffffffffffffff
push 4
lea eax, [ebp - 0x278]
mov ecx, edi
push eax
call fcn.00408d90
push eax
mov ecx, edi
call fcn.0042a225
lea ecx, [ebp - 0x278]
call fcn.00408e50
mov eax, dword [esi + 0x10]
test eax, eax
je 0x460af4
cmp dword [esi + 0x14], 8
mov ecx, esi
jb 0x460acb
mov ecx, dword [esi]
cmp word [ecx + eax*2 - 2], 0x5c
je 0x460af4
cmp dword [edi + 0x14], 8
jb 0x460adb
mov edi, dword [edi]
mov eax, dword [ebp - 0x288]
mov eax, dword [eax]
cmp word [edi + eax*2 - 2], 0x5c
jne 0x460af4
push 0x5c
mov ecx, esi
call fcn.0049b330
xor esi, esi
jmp 0x460a11
cmp eax, 0xa000000c
jne 0x460a0c
test byte [edi + 0x10], 1
je 0x460d20
mov esi, dword [ebp - 0x224]
lea ecx, [ebp - 0x244]
xorps xmm0, xmm0
mov dword [ebp - 0x23c], 0
movq qword [ebp - 0x244], xmm0
push 0x104
mov dword [ebp - 0x288], esi
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
call fcn.00415d20
test al, al
je 0x460b86
mov edx, dword [ebp - 0x244]
xor eax, eax
mov ecx, 0x82
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x29c]
lea eax, [edx + 0x208]
mov dword [ebp - 0x240], eax
mov eax, 0x30
mov byte [ebp - 4], 0x11
mov word [ebp - 0x27e], ax
lea ecx, [ebp - 0x250]
lea eax, [ebp - 0x27b]
mov dword [ebp - 0x248], 0
push eax
lea eax, [ebp - 0x27e]
inc esi
push eax
xorps xmm0, xmm0
push esi
movq qword [ebp - 0x250], xmm0
call fcn.0042f7d0
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
mov byte [ebp - 4], 0x12
cmovae eax, dword [ebp - 0x234]
push eax
push esi
push dword [ebp - 0x250]
call fcn.00406577
add esp, 0xc
test eax, eax
jne 0x460cf8
mov ecx, dword [ebp - 0x288]
test ecx, ecx
je 0x460c29
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x234]
cmp word [eax + ecx*2 - 2], 0x5c
jne 0x460c29
mov eax, dword [ebp - 0x250]
xor edx, edx
mov word [eax + ecx*2 - 2], dx
push dword [ebp - 0x250]
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x460cf8
xor eax, eax
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x264], 7
mov word [ebp - 0x278], ax
movzx eax, word [edi + 0xa]
lea ecx, [ebp - 0x278]
shr eax, 1
push eax
movzx eax, word [edi + 8]
shr eax, 1
add eax, 0xa
mov byte [ebp - 4], 0x19
lea eax, [edi + eax*2]
push eax
call fcn.00408740
cmp dword [ebp - 0x264], 8
lea eax, [ebp - 0x278]
cmovae eax, dword [ebp - 0x278]
push eax
push dword [ebp - 0x250]
push dword [ebp - 0x244]
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
jne 0x460cb8
lea ecx, [ebp - 0x278]
lea esi, [eax + 3]
call fcn.00408e50
jmp 0x460cfd
mov esi, dword [ebp - 0x28c]
lea eax, [ebp - 0x234]
push eax
mov ecx, esi
call fcn.00428c90
push dword [ebp - 0x244]
mov edi, dword [ebp - 0x284]
mov ecx, edi
call fcn.004653aa
push edi
push esi
call fcn.00495260
add esp, 8
lea ecx, [ebp - 0x278]
xor esi, esi
call fcn.00408e50
jmp 0x460cfd
mov esi, 3
lea ecx, [ebp - 0x250]
mov byte [ebp - 4], 0x1d
call fcn.0049af70
lea ecx, [ebp - 0x244]
mov byte [ebp - 4], 0x1e
call fcn.0049af70
jmp 0x460a11
mov esi, dword [ebp - 0x28c]
lea eax, [ebp - 0x234]
push eax
mov ecx, esi
call fcn.00428c90
movzx eax, word [edi + 0xa]
shr eax, 1
push eax
movzx eax, word [edi + 8]
add edi, 0x14
shr eax, 1
lea eax, [edi + eax*2]
mov edi, dword [ebp - 0x284]
push eax
mov ecx, edi
call fcn.00408740
push edi
push esi
call fcn.00495260
add esp, 8
xor esi, esi
jmp 0x460a11
mov esi, 3
jmp 0x4607ec
mov eax, dword [ebp - 0x280]
mov byte [eax], 1
jmp 0x4607ea
call fcn.00472980
call fcn.0052cae1
int3