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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x308
mov eax, dword [0x509354]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov dword [ebp - 0x25c], ecx
xor ebx, ebx
push 0xffffffffffffffff
mov dword [ebp - 0x264], ebx
xor ecx, ecx
push ebx
mov word [ebp - 0x228], cx
mov edi, 7
push eax
lea ecx, [ebp - 0x22c]
mov dword [ebp - 0x238], esi
mov dword [ebp - 0x23c], edx
mov dword [ebp - 0x214], edi
mov dword [ebp - 0x218], ebx
call fcn.00401c43
push 4
push 0x4d3280
push 4
push ebx
lea ecx, [ebp - 0x22c]
call fcn.0040129e
test eax, eax
jne 0x438fec
push 0xffffffffffffffff
push 4
lea eax, [ebp - 0x22c]
xor edx, edx
push eax
lea ecx, [ebp - 0x258]
mov dword [ebp - 0x240], edi
mov dword [ebp - 0x244], ebx
mov word [ebp - 0x254], dx
call fcn.00401c43
push 0xffffffffffffffff
push ebx
lea ecx, [ebp - 0x258]
push ecx
lea ecx, [ebp - 0x22c]
call fcn.00401c43
mov edi, 8
cmp dword [ebp - 0x240], edi
jb 0x438ff1
mov edx, dword [ebp - 0x254]
push edx
call fcn.0048e006
add esp, 4
jmp 0x438ff1
mov edi, 8
lea eax, [ebp - 0x22c]
push eax
call fcn.00437fb0
add esp, 4
test al, al
je 0x43900b
mov byte [esi], bl
jmp 0x4391a5
or eax, 0xffffffff
mov byte [ebp - 0x22d], bl
push eax
push ebx
lea eax, [ebp - 0x22c]
xor edx, edx
push eax
lea ecx, [ebp - 0x258]
mov dword [ebp - 0x240], 7
mov dword [ebp - 0x244], ebx
mov word [ebp - 0x254], dx
call fcn.00401c43
push 0xffffffffffffffff
push ebx
lea ecx, [ebp - 0x258]
push ecx
lea ecx, [ebp - 0x22c]
call fcn.00401c43
cmp dword [ebp - 0x240], edi
jb 0x43906d
mov edx, dword [ebp - 0x254]
push edx
call fcn.0048e006
add esp, 4
cmp byte [ebp - 0x22d], bl
jne 0x4390ef
push 1
push ebx
lea eax, [ebp - 0x234]
push eax
lea ecx, [ebp - 0x22c]
mov dword [ebp - 0x234], 0x5c
call fcn.00405a9f
cmp eax, 0xffffffff
jne 0x4390ef
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x4390ad
lea eax, [ebp - 0x228]
mov esi, dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
push eax
call esi
test eax, eax
je 0x4390ef
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x4390ce
lea eax, [ebp - 0x228]
push eax
call esi
cmp eax, 1
je 0x4390ef
push 1
push 0x4cfe30
lea ecx, [ebp - 0x22c]
call fcn.004027ed
mov byte [ebp - 0x22d], 1
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x439103
lea eax, [ebp - 0x228]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x439169
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 2
je 0x439174
cmp esi, 3
je 0x439174
cmp esi, 0x7b
je 0x439174
cmp esi, 0xa1
je 0x439174
cmp byte [0x50c21c], bl
je 0x4391cf
push 3
push 0xa6
push str.._srcwin_utils.cc
lea ecx, [ebp - 0x308]
mov ebx, 1
call fcn.004440f0
add eax, 4
push str.Check_failed:_false.
push eax
call fcn.0040afde
add esp, 8
jmp 0x4391d5
test eax, 0x400
jne 0x43920f
push 1
push 0xffffffffffffffff
lea ecx, [ebp - 0x234]
push ecx
lea ecx, [ebp - 0x22c]
mov dword [ebp - 0x234], 0x5c
call fcn.0041b570
cmp eax, 0xffffffff
jne 0x439014
mov eax, dword [ebp - 0x238]
mov byte [eax], bl
cmp dword [ebp - 0x214], edi
jb 0x4391bc
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.0048e006
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048e25d
mov esp, ebp
pop ebp
ret
mov bl, byte [ebp - 0x264]
test bl, 1
je 0x4391e5
lea ecx, [ebp - 0x308]
call fcn.00443d90
cmp dword [ebp - 0x214], edi
jb 0x4391fc
mov edx, dword [ebp - 0x228]
push edx
call fcn.0048e006
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048e25d
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x25c]
mov eax, dword [ebp - 0x238]
mov byte [eax], 1
cmp ecx, ebx
je 0x43953b
mov esi, dword [ebp - 0x23c]
cmp esi, ebx
je 0x43953b
call fcn.00424280
mov ecx, esi
call fcn.00424280
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x439254
lea eax, [ebp - 0x228]
push ebx
push 0x2200000
push 3
push ebx
push 7
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x4393d7
push ebx
push 0x4000
lea ecx, [ebp - 0x24c]
call fcn.00438ee0
mov eax, dword [ebp - 0x248]
mov edi, dword [ebp - 0x244]
push ebx
lea ecx, [ebp - 0x238]
push ecx
sub edi, eax
push edi
push eax
push ebx
push ebx
push 0x900a8
push esi
mov dword [ebp - 0x238], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push esi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
cmp ebx, esi
je 0x4393cc
mov eax, dword [ebp - 0x238]
cmp eax, esi
je 0x4393cc
cmp eax, edi
ja 0x4393cc
mov ebx, dword [ebp - 0x248]
cmp dword [ebx], 0xa0000003
jne 0x4393cc
push 0x208
lea eax, [ebp - 0x20e]
xor edx, edx
push esi
push eax
mov word [ebp - 0x210], dx
call fcn.0048e760
push 0x4cfe30
lea ecx, [ebp - 0x22c]
push ecx
lea edx, [ebp - 0x27c]
push edx
call fcn.00409d0c
add esp, 0x18
cmp dword [eax + 0x18], 8
jb 0x43932b
mov eax, dword [eax + 4]
jmp 0x43932e
add eax, 4
push 0x104
lea ecx, [ebp - 0x210]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
lea ecx, [ebp - 0x27c]
mov edi, eax
call fcn.0040198e
cmp edi, esi
je 0x43946e
mov edi, dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameW]
mov dword [ebp - 0x234], 0x104
mov dword [ebp - 0x26c], esi
mov dword [ebp - 0x268], esi
mov dword [ebp - 0x264], esi
jmp 0x439380
mov edx, dword [ebp - 0x234]
push edx
lea ecx, [ebp - 0x270]
call fcn.00438e70
mov ecx, dword [ebp - 0x234]
mov esi, dword [ebp - 0x26c]
lea eax, [ebp - 0x234]
push eax
push ecx
push esi
lea edx, [ebp - 0x210]
push edx
call edi
test eax, eax
jne 0x4393f8
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
je 0x439380
lea ecx, [ebp - 0x270]
call fcn.004afae0
lea ecx, [ebp - 0x24c]
call fcn.004afae0
lea ecx, [ebp - 0x22c]
call fcn.0040198e
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 3
pop ebx
call fcn.0048e25d
mov esp, ebp
pop ebp
ret
cmp word [esi], 0
je 0x439459
mov edi, edi
mov ebx, dword [ebp - 0x23c]
cmp dword [ebx + 0x14], 0
jne 0x43945f
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4393c1
test eax, 0x400
jne 0x439427
push esi
mov ecx, ebx
call fcn.004028b9
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x439430
sub eax, edx
sar eax, 1
cmp word [esi + eax*2 + 2], cx
lea esi, [esi + eax*2 + 2]
jne 0x439400
lea ecx, [ebp - 0x270]
call fcn.004afae0
xor esi, esi
jmp 0x439483
mov ebx, dword [ebp - 0x23c]
lea ecx, [ebp - 0x270]
call fcn.004afae0
xor esi, esi
jmp 0x439483
mov ecx, dword [ebp - 0x23c]
add ebx, 0x10
push ebx
call fcn.004028b9
mov ebx, dword [ebp - 0x23c]
mov edi, dword [ebp - 0x25c]
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x22c]
push eax
mov ecx, edi
call fcn.00401c43
cmp dword [ebx + 0x14], esi
je 0x43952b
push 0x4d3280
push 4
push esi
mov ecx, ebx
call fcn.00429ee0
test eax, eax
jne 0x4394db
push 0xffffffffffffffff
push 4
lea ecx, [ebp - 0x27c]
push ecx
mov ecx, ebx
call fcn.00409c2e
push eax
mov ecx, ebx
call fcn.004028a9
lea ecx, [ebp - 0x27c]
call fcn.0040198e
cmp dword [edi + 0x14], esi
je 0x43952b
lea edx, [ebp - 0x268]
push edx
mov ecx, edi
call fcn.00438040
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov esi, 0x5c
mov dword [ebp - 0x260], ecx
cmp word [eax - 2], si
je 0x43952b
lea edx, [ebp - 0x268]
push edx
mov ecx, ebx
call fcn.00438040
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x260], ecx
cmp word [eax - 2], si
jne 0x43952b
push esi
mov ecx, edi
call fcn.00438320
lea ecx, [ebp - 0x24c]
call fcn.004afae0
mov edi, 8
cmp dword [ebp - 0x214], edi
jb 0x4391bc
mov edx, dword [ebp - 0x228]
push edx
jmp 0x4391b4