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

Disassembly:
push 0x4d8
mov eax, 0x79228b
call fcn.00700ca1
mov esi, dword [ebp + 8]
mov eax, esi
mov dword [ebp - 0x284], esi
cmp dword [esi + 0x14], 8
jb 0x50fae9
mov eax, dword [esi]
lea ecx, [ebp - 0x1d4]
xor ebx, ebx
push ecx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
test eax, eax
jne 0x50fda0
push 0xf
pop esi
push 7
push str.GPCUtil
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], esi
mov byte [ebp - 0x68], bl
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], ebx
push eax
call fcn.006210e3
and dword [ebp - 0x28], 0
mov ebx, eax
pop ecx
push 0xa
push str.folderPath
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x24], esi
mov byte [ebp - 0x38], 0
call fcn.00439710
mov edi, dword [ebp - 0x284]
lea eax, [ebp - 0x80]
push 0
push edi
push eax
mov byte [ebp - 4], 1
call fcn.00620ff2
add esp, 0xc
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov edi, eax
and dword [ebp - 0x40], 0
lea ecx, [ebp - 0x50]
push 0xe
push str.GetLastError__
mov byte [ebp - 4], 3
mov dword [ebp - 0x3c], esi
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 5
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 6
push eax
push 0x858903
lea ecx, [ebp - 0xb0]
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], 0xf
mov byte [ebp - 0xb0], al
call fcn.00439710
mov byte [ebp - 4], 7
push str.CFileSystem::IsFolderWritable__GetFileAttributesEx_failed
lea eax, [ebp - 0x180]
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 8
push ecx
push eax
lea ecx, [ebp - 0x204]
call fcn.0061c551
push edi
push esi
push eax
mov ecx, ebx
mov byte [ebp - 4], 9
call fcn.00621a3d
lea ecx, [ebp - 0x1ec]
call fcn.00438e20
lea ecx, [ebp - 0x204]
call fcn.00438e20
lea ecx, [ebp - 0x180]
call fcn.00438e20
mov eax, dword [ebp - 0x9c]
mov esi, 0x1000
cmp eax, 0x10
jb 0x50fca3
mov ecx, dword [ebp - 0xb0]
inc eax
mov dword [ebp - 0x284], eax
mov dword [ebp - 0x288], ecx
cmp eax, esi
jb 0x50fc9a
lea eax, [ebp - 0x284]
push eax
lea eax, [ebp - 0x288]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x284]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x288]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0xa0], 0
lea ecx, [ebp - 0xc8]
push 0xf
pop ebx
mov dword [ebp - 0x9c], ebx
mov byte [ebp - 0xb0], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x50fd21
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x284], ecx
cmp eax, esi
jb 0x50fd18
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x284]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
lea ecx, [ebp - 0xf8]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
cmp eax, 0x10
jb 0x50fd90
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x284], ecx
cmp eax, esi
jb 0x50fd87
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x284]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
jmp 0x510126
test byte [ebp - 0x1d4], 0x10
jne 0x50fe76
push 0xf
mov dword [ebp - 0x58], ebx
lea ecx, [ebp - 0x68]
pop ebx
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0xa
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0xb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xc
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0xd
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0xe
push str.CFileSystem::IsFolderWritable__dwFileAttributes___FILE_ATTRIBUTE_DIRECTORY
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], bl
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov byte [ebp - 4], 0x10
jmp 0x510037
test dword [ebp - 0x1d4], 0x10000
je 0x50ff59
push 0xf
mov dword [ebp - 0x58], ebx
lea ecx, [ebp - 0x68]
pop ebx
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x11
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0x12
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x13
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x14
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x15
push str.CFileSystem::IsFolderWritable__dwFileAttributes__FILE_ATTRIBUTE_VIRTUAL
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x16
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
push esi
push eax
mov ecx, edi
mov byte [ebp - 4], 0x17
call fcn.00621a54
jmp 0x510040
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x50ff63
mov eax, dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathGetDriveNumberW]
test eax, eax
jns 0x510170
push 0xf
mov dword [ebp - 0x58], ebx
lea ecx, [ebp - 0x68]
pop ebx
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x18
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0x19
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x1a
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x1b
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x1c
push str.CFileSystem::IsFolderWritable__PathGetDriveNumber_failed
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1d
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov byte [ebp - 4], 0x1e
push esi
push eax
mov ecx, edi
call fcn.00621517
lea ecx, [ebp - 0xf8]
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
mov esi, 0x1000
cmp eax, 0x10
jb 0x5100a9
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x284], ecx
cmp eax, esi
jb 0x5100a0
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x284]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x51011b
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x284], ecx
cmp eax, esi
jb 0x510112
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x284]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
mov eax, dword [ebp - 0x54]
cmp eax, 0x10
jb 0x510f7a
mov ecx, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x284], ecx
cmp eax, esi
jb 0x5107c2
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x284]
jmp 0x5107c2
push eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.SHLWAPI.dll_PathBuildRootW]
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
push 0xf
pop ebx
cmp eax, 3
je 0x5103c7
cmp dword [ebp + 0xc], 0
je 0x5104a3
and dword [ebp - 0xa0], 0
lea ecx, [ebp - 0xb0]
push 7
push str.GPCUtil
mov dword [ebp - 0x9c], ebx
mov byte [ebp - 0xb0], 0
call fcn.00439710
lea eax, [ebp - 0xb0]
mov dword [ebp - 4], 0x1f
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xa
push str.folderPath
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
push 0
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 0x20
push esi
push eax
call fcn.00620ff2
add esp, 0xc
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x21
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x22
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x23
push str.CFileSystem::IsFolderWritable__Path__not_in_fixed_drive_but_it_is_OK_for_TC
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x24
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
push esi
push eax
mov ecx, edi
mov byte [ebp - 4], 0x25
call fcn.00621a54
lea ecx, [ebp - 0xf8]
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
cmp eax, 0x10
jb 0x5102da
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x2a4], ecx
cmp eax, 0x1000
jb 0x5102d1
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x2a4]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x288]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x2a4]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x51034f
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x2a0], eax
mov dword [ebp - 0x29c], ecx
cmp eax, 0x1000
jb 0x510346
lea eax, [ebp - 0x2a0]
push eax
lea eax, [ebp - 0x29c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x2a0]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x29c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
cmp eax, 0x10
jb 0x5103ad
mov ecx, dword [ebp - 0xb0]
inc eax
mov dword [ebp - 0x27c], eax
mov dword [ebp - 0x280], ecx
cmp eax, 0x1000
jb 0x5103a4
lea eax, [ebp - 0x27c]
push eax
lea eax, [ebp - 0x280]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x27c]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x280]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0xa0], 0
mov esi, dword [ebp - 0x284]
mov dword [ebp - 0x9c], ebx
mov byte [ebp - 0xb0], 0
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x5103d1
mov eax, dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x51056b
and dword [ebp - 0x58], eax
lea ecx, [ebp - 0x68]
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], al
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x2d
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xa
push str.folderPath
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
push 0
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 0x2e
push esi
push eax
call fcn.00620ff2
add esp, 0xc
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x2f
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x30
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x31
push str.CFileSystem::IsFolderWritable__Path_not_Exists
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x32
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov byte [ebp - 4], 0x33
jmp 0x510692
and dword [ebp - 0x58], 0
lea ecx, [ebp - 0x68]
push 0xf
pop ebx
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x26
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xa
push str.folderPath
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
push 0
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 0x27
push esi
push eax
call fcn.00620ff2
add esp, 0xc
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x28
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x29
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x2a
push str.CFileSystem::IsFolderWritable__Path__not_in_fixed_drive
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x2b
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov byte [ebp - 4], 0x2c
jmp 0x510692
lea eax, [ebp - 0x4e4]
push eax
call fcn.0050278b
pop ecx
push 0x47
pop ecx
mov esi, eax
lea edi, [ebp - 0x3c8]
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0x3b8], 2
je 0x510596
xor eax, eax
inc eax
jmp 0x510f7c
mov edi, dword [ebp - 0x284]
xor edx, edx
mov dword [ebp - 0x290], edx
mov eax, edi
cmp dword [edi + 0x14], 8
jb 0x5105ae
mov eax, dword [edi]
lea ecx, [ebp - 0x290]
push ecx
push edx
push edx
push 7
push eax
call dword [sym.imp.ADVAPI32.dll_GetFileSecurityW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x5107cf
and dword [ebp - 0x58], 0
lea ecx, [ebp - 0x68]
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x34
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0x35
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x36
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x37
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x38
push str.CFileSystem::IsFolderWritable__first_GetFileSecurity
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x39
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
mov byte [ebp - 4], 0x3a
push esi
push eax
mov ecx, edi
call fcn.00621517
lea ecx, [ebp - 0xf8]
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
mov esi, 0x1000
cmp eax, 0x10
jb 0x510704
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x5106fb
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x510776
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x51076d
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
cmp eax, 0x10
jb 0x510f7a
mov ecx, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x5107c2
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
jmp 0x510f79
push dword [ebp - 0x290]
call fcn.007233c4
mov dword [ebp - 0x284], eax
pop ecx
test eax, eax
je 0x510f7a
mov esi, dword [ebp - 0x290]
mov edx, eax
mov ecx, esi
test ecx, ecx
je 0x510800
mov byte [edx], 0
inc edx
sub ecx, 1
jne 0x5107f7
cmp dword [edi + 0x14], 8
jb 0x510808
mov edi, dword [edi]
lea ecx, [ebp - 0x290]
push ecx
push esi
push eax
push 7
push edi
call dword [sym.imp.ADVAPI32.dll_GetFileSecurityW]
test eax, eax
jne 0x510a21
and dword [ebp - 0x58], eax
lea ecx, [ebp - 0x68]
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], al
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x3b
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0x3c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x3d
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x3e
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x3f
push str.CFileSystem::IsFolderWritable__second_GetFileSecurity
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x40
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
push esi
push eax
mov ecx, edi
mov byte [ebp - 4], 0x41
call fcn.00621517
lea ecx, [ebp - 0xf8]
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
mov esi, 0x1000
cmp eax, 0x10
jb 0x510955
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x51094c
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x5109c7
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x5109be
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
cmp eax, 0x10
jb 0x510f6e
mov ecx, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510a13
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
jmp 0x510f6e
and dword [ebp - 0x294], 0
push 2
call dword [sym.imp.ADVAPI32.dll_ImpersonateSelf]
test eax, eax
je 0x510d70
lea eax, [ebp - 0x294]
push eax
push 0
push 0xa
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenThreadToken]
test eax, eax
je 0x510d70
push 0x10
mov dword [ebp - 0x298], 6
lea eax, [ebp - 0x168]
pop ecx
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x510a6b
lea eax, [ebp - 0x168]
mov dword [ebp - 0x164], 0x120116
push eax
lea eax, [ebp - 0x298]
push eax
call dword [sym.imp.ADVAPI32.dll_MapGenericMask]
and dword [ebp - 0x2a8], 0
lea eax, [ebp - 0x28c]
push eax
lea eax, [ebp - 0x2a8]
mov dword [ebp - 0x28c], 1
push eax
lea eax, [ebp - 0x2ac]
mov dword [ebp - 0x2ac], 0x14
push eax
lea eax, [ebp - 0x278]
push eax
lea eax, [ebp - 0x168]
push eax
push dword [ebp - 0x298]
push dword [ebp - 0x294]
push dword [ebp - 0x284]
call dword [sym.imp.ADVAPI32.dll_AccessCheck]
neg eax
sbb eax, eax
and dword [ebp - 0x28c], eax
jne 0x510d47
and dword [ebp - 0x148], 0
lea ecx, [ebp - 0x158]
push 7
push str.GPCUtil
mov dword [ebp - 0x144], ebx
mov byte [ebp - 0x158], 0
call fcn.00439710
lea eax, [ebp - 0x158]
mov dword [ebp - 4], 0x49
push eax
call fcn.006210e3
and dword [ebp - 0x118], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x128]
mov dword [ebp - 0x114], ebx
mov byte [ebp - 0x128], 0
call fcn.00439710
mov byte [ebp - 4], 0x4a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x1b0]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 0x4b
push ecx
push eax
lea ecx, [ebp - 0x264]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x4c
push eax
push 0x858903
lea ecx, [ebp - 0x140]
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x12c], ebx
mov byte [ebp - 0x140], al
call fcn.00439710
lea eax, [ebp - 0x198]
mov byte [ebp - 4], 0x4d
push str.CFileSystem::IsFolderWritable__AccessCheck_failed
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x140]
mov byte [ebp - 4], 0x4e
push ecx
push eax
lea ecx, [ebp - 0x234]
call fcn.0061c551
push esi
push eax
mov ecx, edi
mov byte [ebp - 4], 0x4f
call fcn.00621517
lea ecx, [ebp - 0x21c]
call fcn.00438e20
lea ecx, [ebp - 0x234]
call fcn.00438e20
lea ecx, [ebp - 0x198]
call fcn.00438e20
mov eax, dword [ebp - 0x12c]
mov esi, 0x1000
cmp eax, 0x10
jb 0x510c66
mov ecx, dword [ebp - 0x140]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510c5d
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x130], 0
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x12c], ebx
mov byte [ebp - 0x140], 0
call fcn.00438e20
lea ecx, [ebp - 0x264]
call fcn.00438e20
lea ecx, [ebp - 0x1b0]
call fcn.00438e20
mov eax, dword [ebp - 0x114]
cmp eax, 0x10
jb 0x510ce7
mov ecx, dword [ebp - 0x128]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510cde
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x118], 0
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0x114], ebx
mov byte [ebp - 0x128], 0
cmp eax, 0x10
jb 0x510d47
mov ecx, dword [ebp - 0x158]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510d3e
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
call dword [sym.imp.ADVAPI32.dll_RevertToSelf]
push dword [ebp - 0x284]
call fcn.0071c50a
pop ecx
push dword [ebp - 0x294]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x28c]
jmp 0x510f7c
and dword [ebp - 0x58], 0
lea ecx, [ebp - 0x68]
push 7
push str.GPCUtil
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x68], 0
call fcn.00439710
lea eax, [ebp - 0x68]
mov dword [ebp - 4], 0x42
push eax
call fcn.006210e3
and dword [ebp - 0x40], 0
mov edi, eax
pop ecx
push 0xe
push str.GetLastError__
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
call fcn.00439710
mov byte [ebp - 4], 0x43
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.006211a2
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x44
push ecx
push eax
lea ecx, [ebp - 0xe0]
call fcn.0061c551
mov esi, eax
xor eax, eax
mov byte [ebp - 4], 0x45
push eax
push 0x858903
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], al
call fcn.00439710
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0x46
push str.CFileSystem::IsFolderWritable__ImpersonateSelf_err
push eax
call fcn.006212a1
pop ecx
pop ecx
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x47
push ecx
push eax
lea ecx, [ebp - 0x110]
call fcn.0061c551
push esi
push eax
mov ecx, edi
mov byte [ebp - 4], 0x48
call fcn.00621517
lea ecx, [ebp - 0xf8]
call fcn.00438e20
lea ecx, [ebp - 0x110]
call fcn.00438e20
lea ecx, [ebp - 0x80]
call fcn.00438e20
mov eax, dword [ebp - 0x24]
mov esi, 0x1000
cmp eax, 0x10
jb 0x510ea5
mov ecx, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510e9c
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x28], 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x38], 0
call fcn.00438e20
lea ecx, [ebp - 0xe0]
call fcn.00438e20
lea ecx, [ebp - 0x98]
call fcn.00438e20
mov eax, dword [ebp - 0x3c]
cmp eax, 0x10
jb 0x510f17
mov ecx, dword [ebp - 0x50]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510f0e
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
and dword [ebp - 0x40], 0
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x50], 0
cmp eax, 0x10
jb 0x510f68
mov ecx, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x27c], ecx
cmp eax, esi
jb 0x510f5f
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x27c]
push eax
call fcn.004343f0
mov eax, dword [ebp - 0x280]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
push eax
push ecx
call fcn.007009b8
pop ecx
pop ecx
call dword [sym.imp.ADVAPI32.dll_RevertToSelf]
push dword [ebp - 0x284]
call fcn.0071c50a
pop ecx
xor eax, eax
call fcn.00700c4b
ret