Function at 0x407440
Capabilities:
Get common file path
Get disk information
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x150
push ebx
push esi
push edi
mov dword [ebp - 0x10c], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0x144], 0x3a813
mov eax, dword [ebp - 0x10c]
sub eax, 0x53613
mov ecx, 0x730e8
sub ecx, dword [ebp - 0x10c]
and eax, ecx
xor eax, 0xfff5631a
or eax, 0x7678d
mov word [ebp - 0xac], ax
mov edx, dword [ebp - 0x10c]
sub edx, dword [ebp - 0x10c]
sub edx, 0xf0dd
sub edx, dword [ebp - 0x10c]
xor edx, 0x76c19
mov esi, edx
xor edi, edi
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
add eax, 0x64afc
mov ebx, eax
xor eax, eax
mov ecx, dword [ebp - 0x70]
sub ecx, 0x2fa8f
mov edx, dword [ebp - 0x6c]
sbb edx, 0
and ebx, ecx
and eax, edx
push 0
push 0
mov dword [ebp - 0x14c], eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ecx, dword [ebp - 0x10c]
sub ecx, eax
push 0
mov dword [ebp - 0x150], ecx
call dword [sym.imp.KERNEL32.dll_ConvertThreadToFiber]
mov ecx, dword [ebp - 0x150]
sub ecx, eax
xor eax, eax
and ebx, ecx
mov ecx, dword [ebp - 0x14c]
and ecx, eax
and ebx, 0xc6269
and ecx, 0
or esi, ebx
or edi, ecx
mov dword [ebp - 0x10c], esi
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0x10c], ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetTapeParameters]
mov esi, eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenProcess]
lea esi, [esi + eax + 0x2c36a]
movzx edx, word [ebp - 0xac]
sub esi, edx
mov edi, dword [ebp - 0x10c]
sub edi, 0x354d6
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FoldStringW]
sub edi, eax
and esi, edi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, eax
push 0
call dword [sym.imp.KERNEL32.dll_SetThreadLocale]
lea eax, [edi + eax - 0x1706]
and esi, eax
and esi, dword [ebp - 0x10c]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FlushViewOfFile]
and eax, 0x562d
or esi, eax
or esi, dword [ebp - 0x10c]
xor ecx, ecx
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], ecx
mov edx, dword [ebp - 0x70]
and edx, 0x49d19
mov eax, dword [ebp - 0x6c]
and eax, 0
mov dword [ebp - 0x10c], edx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
mov ecx, dword [ebp - 0x10c]
lea esi, [eax + ecx - 0x6c4c2]
mov edx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x10c]
lea edi, [eax + edx + 0xb22f]
add edi, dword [ebp - 0x10c]
call dword [sym.imp.KERNEL32.dll_SwitchToThread]
add edi, eax
and esi, edi
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetTimeFormatA]
mov ecx, dword [ebp - 0x10c]
sub ecx, eax
or esi, ecx
mov dword [ebp - 0x10c], esi
movzx edx, byte [ebp - 0x81]
cmp dword [ebp - 0x10c], edx
jne 0x40768b
movzx esi, word [ebp - 0xac]
or esi, 0x5cca
movzx edi, word [ebp - 0xac]
push 0
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
sub edi, eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
sub edi, eax
or esi, edi
mov eax, dword [ebp - 0x10c]
add eax, 0x6df87
and eax, dword [ebp - 0x10c]
or esi, eax
mov dword [ebp - 0x10c], esi
jmp 0x4076eb
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
add eax, dword [ebp - 0x10c]
mov esi, eax
xor edi, edi
and esi, dword [ebp - 0x70]
and edi, dword [ebp - 0x6c]
mov ecx, 0x91fb
sub ecx, dword [ebp - 0x10c]
add ecx, 0x5ceef
xor edx, edx
and esi, ecx
and edi, edx
mov eax, dword [ebp - 0x10c]
add eax, dword [ebp - 0x10c]
xor ecx, ecx
and esi, eax
and edi, ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetBinaryTypeA]
and eax, 0x3ebb2
xor edx, edx
xor esi, eax
xor edi, edx
mov dword [ebp - 0x10c], esi
movzx eax, word [ebp - 0xac]
cdq
mov ecx, dword [ebp - 0x70]
sub ecx, eax
mov eax, dword [ebp - 0x6c]
sbb eax, edx
mov edx, dword [ebp - 0x10c]
xor esi, esi
sub ecx, edx
sbb eax, esi
add ecx, 0x16289
adc eax, 0
mov edx, dword [ebp - 0x10c]
xor esi, esi
sub ecx, edx
sbb eax, esi
add ecx, 0x3103f
adc eax, 0
or ecx, 0xfffcd04a
or eax, 0xffffffff
or ecx, 0x790a6
mov dword [ebp - 0x10c], ecx
movzx eax, byte [ebp - 0x81]
add eax, dword [ebp - 0x10c]
sub eax, dword [ebp - 0x10c]
or eax, 0x5d3d
movzx ecx, word [ebp - 0xac]
sub ecx, 0x7141e
and ecx, 0x30a98
or eax, ecx
mov dword [ebp - 0x10c], eax
mov edx, dword [ebp - 0x10c]
sub edx, 0x129ea
mov dword [ebp - 0x10c], edx
mov esi, dword [ebp - 0x10c]
or esi, 0x7dcdb
or esi, 0x6903a
push 0
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov edi, eax
movzx eax, word [ebp - 0xac]
add edi, eax
mov ebx, dword [ebp - 0x10c]
add ebx, 0x51a90
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateTapePartition]
add eax, 0x1246e
and ebx, eax
xor edi, ebx
or esi, edi
mov dword [ebp - 0x10c], esi
mov esi, dword [ebp - 0x10c]
add esi, 0xe60d
push 0
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
sub esi, eax
mov dword [ebp - 0x10c], esi
mov ax, word [ebp - 0xac]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20