Function at 0x10078580
Capabilities:
Get disk information
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x102367f4
mov eax, dword fs:[0]
push eax
sub esp, 0x4bc
mov eax, dword [0x102c6474]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov dword [ebp - 0x474], esi
mov ebx, ecx
mov dword [ebp - 0x490], ebx
mov dword [ebp - 0x470], ebx
mov dword [ebp - 0x494], ebx
lea ecx, [ebp - 0x444]
mov dword [ebp - 0x48c], 0
call fcn.10007fd4
mov dword [ebp - 4], 1
test esi, esi
jne 0x100785fd
lea eax, [ebp - 0x444]
mov ecx, ebx
push eax
call fcn.100085c3
jmp 0x10079006
push str.Kernel32.dll
lea ecx, [ebp - 0x4c4]
call fcn.10005e0a
mov byte [ebp - 4], 2
lea eax, [ebp - 0x4c4]
push eax
call fcn.1008c540
mov ecx, eax
call fcn.1008c600
mov edi, eax
mov dword [ebp - 0x488], edi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x4c4]
call fcn.10005e05
push str.Psapi.dll
lea ecx, [ebp - 0x4ac]
call fcn.10005e0a
mov byte [ebp - 4], 3
lea eax, [ebp - 0x4ac]
push eax
call fcn.1008c540
mov ecx, eax
call fcn.1008c600
mov esi, eax
mov dword [ebp - 0x478], esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x4ac]
call fcn.10005e05
test esi, esi
je 0x10078ff8
test edi, edi
je 0x10078ff8
lea ecx, [ebp - 0x138]
call fcn.10079b10
cmp dword [ebp - 0x134], 6
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jb 0x10078905
push str.QueryFullProcessImageNameW
push edi
call ebx
mov esi, eax
test esi, esi
je 0x100788ff
push 0x412
lea eax, [ebp - 0x428]
push 0
push eax
call fcn.101fd690
add esp, 0xc
mov dword [ebp - 0x42c], 0x208
lea eax, [ebp - 0x42c]
push eax
lea eax, [ebp - 0x428]
push eax
push 0
push dword [ebp - 0x474]
call esi
test eax, eax
je 0x100788ff
mov eax, dword [ebp - 0x42c]
cmp eax, 0x208
jae 0x1007871d
add eax, eax
cmp eax, 0x412
jae 0x1007903d
xor ecx, ecx
mov word [ebp + eax - 0x428], cx
lea eax, [ebp - 0x428]
push eax
call fcn.10005f42
add esp, 4
lea ecx, [ebp - 0x444]
mov ebx, eax
call fcn.10005e30
mov edi, eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x470], eax
cmp ebx, eax
ja 0x10078787
mov esi, edi
cmp eax, 8
jb 0x10078751
mov esi, dword [edi]
push ebx
lea eax, [ebp - 0x428]
mov dword [edi + 0x10], ebx
push eax
push esi
call fcn.10005f10
add esp, 0xc
mov dword [ebp - 0x46c], 0
lea eax, [ebp - 0x46c]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
add esp, 8
jmp 0x100788f3
lea ecx, [ebp - 0x444]
call fcn.1000608d
cmp ebx, eax
ja 0x10079042
lea ecx, [ebp - 0x444]
call fcn.1000608d
lea ecx, [ebp - 0x444]
mov esi, eax
call fcn.10005e30
mov ecx, ebx
or ecx, 7
mov dword [ebp - 0x480], ecx
cmp ecx, esi
ja 0x100787f1
mov edx, dword [eax + 0x14]
mov ecx, edx
shr ecx, 1
mov eax, esi
sub eax, ecx
cmp edx, eax
ja 0x100787f1
lea eax, [edx + ecx]
mov dword [ebp - 0x47c], eax
lea eax, [ebp - 0x47c]
push eax
lea eax, [ebp - 0x480]
push eax
call fcn.10005ed6
add esp, 8
mov esi, dword [eax]
lea eax, [esi + 1]
lea ecx, [eax + eax]
cmp eax, 0x7fffffff
jbe 0x10078803
or ecx, 0xffffffff
jmp 0x1007880b
cmp ecx, 0x1000
jb 0x10078836
lea eax, [ecx + 0x23]
cmp eax, ecx
mov ecx, 0xffffffff
cmovbe eax, ecx
push eax
call fcn.101e4da1
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x10079047
lea eax, [ecx + 0x23]
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10078847
test ecx, ecx
je 0x10078845
push ecx
call fcn.101e4da1
add esp, 4
jmp 0x10078847
xor eax, eax
mov dword [ebp - 0x46c], eax
lea eax, [ebp - 0x428]
push ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], esi
mov esi, dword [ebp - 0x46c]
push eax
push esi
call fcn.10005f29
add esp, 0xc
mov dword [ebp - 0x484], 0
lea eax, [ebp - 0x484]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
mov ecx, dword [ebp - 0x470]
add esp, 8
cmp ecx, 8
jb 0x100788cd
mov eax, dword [edi]
lea ecx, [ecx*2 + 2]
cmp ecx, 0x1000
jb 0x100788b9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10079047
mov eax, edx
push ecx
push eax
call fcn.101e4d70
mov eax, dword [ebp - 0x46c]
add esp, 8
mov dword [edi], eax
jmp 0x100788f3
push edi
call fcn.10005f6e
add esp, 4
push eax
push 4
call fcn.10005b84
mov esi, eax
lea eax, [ebp - 0x46c]
push eax
call fcn.10005f6e
add esp, 0xc
mov ecx, dword [eax]
mov dword [esi], ecx
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, dword [ebp - 0x488]
mov esi, dword [ebp - 0x478]
lea ecx, [ebp - 0x444]
call fcn.10007f3e
test al, al
je 0x10078d2a
push str.GetProcessImageFileNameW
push esi
call ebx
mov esi, eax
test esi, esi
jne 0x10078938
push str.GetProcessImageFileNameW
push edi
call ebx
mov esi, eax
test esi, esi
je 0x10078b5e
push 0x412
lea eax, [ebp - 0x428]
push 0
push eax
call fcn.101fd690
add esp, 0xc
lea eax, [ebp - 0x428]
push 0x208
push eax
push dword [ebp - 0x474]
call esi
lea ecx, [eax - 1]
cmp ecx, 0x206
ja 0x10078b5e
add eax, eax
cmp eax, 0x412
jae 0x1007903d
xor ecx, ecx
mov word [ebp + eax - 0x428], cx
lea eax, [ebp - 0x428]
push eax
call fcn.10005f42
add esp, 4
lea ecx, [ebp - 0x444]
mov ebx, eax
call fcn.10005e30
mov edi, eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x47c], eax
cmp ebx, eax
ja 0x100789f2
mov esi, edi
cmp eax, 8
jb 0x100789bc
mov esi, dword [edi]
push ebx
lea eax, [ebp - 0x428]
mov dword [edi + 0x10], ebx
push eax
push esi
call fcn.10005f10
add esp, 0xc
mov dword [ebp - 0x470], 0
lea eax, [ebp - 0x470]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
add esp, 8
jmp 0x10078b5e
lea ecx, [ebp - 0x444]
call fcn.1000608d
cmp ebx, eax
ja 0x1007904c
lea ecx, [ebp - 0x444]
call fcn.1000608d
lea ecx, [ebp - 0x444]
mov esi, eax
call fcn.10005e30
mov ecx, ebx
or ecx, 7
mov dword [ebp - 0x484], ecx
cmp ecx, esi
ja 0x10078a5c
mov edx, dword [eax + 0x14]
mov ecx, edx
shr ecx, 1
mov eax, esi
sub eax, ecx
cmp edx, eax
ja 0x10078a5c
lea eax, [edx + ecx]
mov dword [ebp - 0x470], eax
lea eax, [ebp - 0x470]
push eax
lea eax, [ebp - 0x484]
push eax
call fcn.10005ed6
add esp, 8
mov esi, dword [eax]
lea eax, [esi + 1]
lea ecx, [eax + eax]
cmp eax, 0x7fffffff
jbe 0x10078a6e
or ecx, 0xffffffff
jmp 0x10078a76
cmp ecx, 0x1000
jb 0x10078aa1
lea eax, [ecx + 0x23]
cmp eax, ecx
mov ecx, 0xffffffff
cmovbe eax, ecx
push eax
call fcn.101e4da1
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x10079047
lea eax, [ecx + 0x23]
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10078ab2
test ecx, ecx
je 0x10078ab0
push ecx
call fcn.101e4da1
add esp, 4
jmp 0x10078ab2
xor eax, eax
mov dword [ebp - 0x46c], eax
lea eax, [ebp - 0x428]
push ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], esi
mov esi, dword [ebp - 0x46c]
push eax
push esi
call fcn.10005f29
add esp, 0xc
mov dword [ebp - 0x480], 0
lea eax, [ebp - 0x480]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
mov ecx, dword [ebp - 0x47c]
add esp, 8
cmp ecx, 8
jb 0x10078b38
mov eax, dword [edi]
lea ecx, [ecx*2 + 2]
cmp ecx, 0x1000
jb 0x10078b24
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10079047
mov eax, edx
push ecx
push eax
call fcn.101e4d70
mov eax, dword [ebp - 0x46c]
add esp, 8
mov dword [edi], eax
jmp 0x10078b5e
push edi
call fcn.10005f6e
add esp, 4
push eax
push 4
call fcn.10005b84
mov esi, eax
lea eax, [ebp - 0x46c]
push eax
call fcn.10005f6e
add esp, 0xc
mov ecx, dword [eax]
mov dword [esi], ecx
lea ecx, [ebp - 0x444]
call fcn.10007f3e
test al, al
jne 0x10078d2a
push 0x410
call fcn.101e4dd6
add esp, 4
mov ebx, eax
push 0x410
push 0
push ebx
call fcn.101fd690
add esp, 0xc
mov dword [ebp - 0x448], 0
xorps xmm0, xmm0
lea ecx, [ebp - 0x450]
movq qword [ebp - 0x450], xmm0
call fcn.10007f18
mov byte [ebp - 4], 4
call fcn.100740d0
lea ecx, [ebp - 0x450]
mov dword [ebp - 0x42c], 0
call fcn.10008598
test eax, eax
je 0x10078d12
lea ecx, [ebp - 0x450]
call fcn.10005e30
xor esi, esi
mov dword [ebp - 0x470], eax
mov dword [ebp - 0x46c], esi
nop
mov edi, dword [eax]
add edi, esi
mov ecx, edi
call fcn.10007f50
cmp eax, 3
jb 0x10078c27
mov ecx, edi
call fcn.10005e30
mov ecx, eax
mov edx, dword [eax + 0x14]
cmp edx, 8
jb 0x10078c13
mov ecx, dword [eax]
cmp word [ecx + 4], 0x5c
jne 0x10078c27
cmp edx, 8
jb 0x10078c21
mov eax, dword [eax]
xor ecx, ecx
mov word [eax + 4], cx
push 0x208
push ebx
mov ecx, edi
call fcn.10007f54
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
jne 0x10078c42
mov word [ebx], ax
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x10078c47
sub esi, ecx
sar esi, 1
je 0x10078c81
lea ecx, [ebp - 0x444]
call fcn.10007f50
cmp esi, eax
jae 0x10078c81
push esi
push ebx
lea ecx, [ebp - 0x444]
call fcn.10007f54
push eax
call fcn.1020b472
add esp, 0xc
test eax, eax
je 0x10078cb7
mov edi, dword [ebp - 0x42c]
lea ecx, [ebp - 0x450]
mov esi, dword [ebp - 0x46c]
inc edi
add esi, 0x18
mov dword [ebp - 0x42c], edi
mov dword [ebp - 0x46c], esi
call fcn.10008598
cmp edi, eax
jae 0x10078d12
mov eax, dword [ebp - 0x470]
jmp 0x10078bf0
lea ecx, [ebp - 0x468]
call fcn.10007fd4
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x444]
call fcn.10007f54
mov ecx, edi
lea eax, [eax + esi*2]
push eax
call fcn.10007f54
push eax
lea eax, [ebp - 0x468]
push 0x10281408
push eax
call fcn.10074cd0
add esp, 0x10
lea eax, [ebp - 0x468]
lea ecx, [ebp - 0x444]
push eax
call fcn.10039a70
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x468]
call fcn.10005e05
push ebx
call fcn.101e4dd1
add esp, 4
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x450]
call fcn.10007f13
lea ecx, [ebp - 0x444]
call fcn.10007f3e
test al, al
je 0x10078f95
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetModuleFileNameExW
push dword [ebp - 0x478]
call edi
mov esi, eax
test esi, esi
jne 0x10078d6d
push str.GetModuleFileNameExW
push dword [ebp - 0x488]
call edi
mov esi, eax
test esi, esi
je 0x10078f95
push 0x412
lea eax, [ebp - 0x428]
push 0
push eax
call fcn.101fd690
add esp, 0xc
lea eax, [ebp - 0x428]
push 0x208
push eax
push 0
push dword [ebp - 0x474]
call esi
lea ecx, [eax - 1]
cmp ecx, 0x206
ja 0x10078f95
add eax, eax
cmp eax, 0x412
jae 0x1007903d
xor ecx, ecx
mov word [ebp + eax - 0x428], cx
lea eax, [ebp - 0x428]
push eax
call fcn.10005f42
add esp, 4
lea ecx, [ebp - 0x444]
mov ebx, eax
call fcn.10005e30
mov edi, eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x47c], eax
cmp ebx, eax
ja 0x10078e29
mov esi, edi
cmp eax, 8
jb 0x10078df3
mov esi, dword [edi]
push ebx
lea eax, [ebp - 0x428]
mov dword [edi + 0x10], ebx
push eax
push esi
call fcn.10005f10
add esp, 0xc
mov dword [ebp - 0x470], 0
lea eax, [ebp - 0x470]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
add esp, 8
jmp 0x10078f95
lea ecx, [ebp - 0x444]
call fcn.1000608d
cmp ebx, eax
ja 0x10079051
lea ecx, [ebp - 0x444]
call fcn.1000608d
lea ecx, [ebp - 0x444]
mov esi, eax
call fcn.10005e30
mov ecx, ebx
or ecx, 7
mov dword [ebp - 0x484], ecx
cmp ecx, esi
ja 0x10078e93
mov edx, dword [eax + 0x14]
mov ecx, edx
shr ecx, 1
mov eax, esi
sub eax, ecx
cmp edx, eax
ja 0x10078e93
lea eax, [edx + ecx]
mov dword [ebp - 0x470], eax
lea eax, [ebp - 0x470]
push eax
lea eax, [ebp - 0x484]
push eax
call fcn.10005ed6
add esp, 8
mov esi, dword [eax]
lea eax, [esi + 1]
lea ecx, [eax + eax]
cmp eax, 0x7fffffff
jbe 0x10078ea5
or ecx, 0xffffffff
jmp 0x10078ead
cmp ecx, 0x1000
jb 0x10078ed8
lea eax, [ecx + 0x23]
cmp eax, ecx
mov ecx, 0xffffffff
cmovbe eax, ecx
push eax
call fcn.101e4da1
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x10079047
lea eax, [ecx + 0x23]
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10078ee9
test ecx, ecx
je 0x10078ee7
push ecx
call fcn.101e4da1
add esp, 4
jmp 0x10078ee9
xor eax, eax
mov dword [ebp - 0x474], eax
lea eax, [ebp - 0x428]
push ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], esi
mov esi, dword [ebp - 0x474]
push eax
push esi
call fcn.10005f29
add esp, 0xc
mov dword [ebp - 0x480], 0
lea eax, [ebp - 0x480]
push eax
lea eax, [esi + ebx*2]
push eax
call fcn.10005eff
mov ecx, dword [ebp - 0x47c]
add esp, 8
cmp ecx, 8
jb 0x10078f6f
mov eax, dword [edi]
lea ecx, [ecx*2 + 2]
cmp ecx, 0x1000
jb 0x10078f5b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10079047
mov eax, edx
push ecx
push eax
call fcn.101e4d70
mov eax, dword [ebp - 0x474]
add esp, 8
mov dword [edi], eax
jmp 0x10078f95
push edi
call fcn.10005f6e
add esp, 4
push eax
push 4
call fcn.10005b84
mov esi, eax
lea eax, [ebp - 0x474]
push eax
call fcn.10005f6e
add esp, 0xc
mov ecx, dword [eax]
mov dword [esi], ecx
lea edx, [ebp - 0x444]
lea ecx, [ebp - 0x4ac]
call fcn.10075f70
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x444]
push eax
call fcn.10007f9d
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x4ac]
call fcn.10005e05
mov ecx, dword [ebp - 0x490]
lea eax, [ebp - 0x444]
push eax
call fcn.100085c3
mov dword [ebp - 0x48c], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x444]
call fcn.10005e05
mov eax, dword [ebp - 0x490]
jmp 0x10079021
lea eax, [ebp - 0x444]
mov ecx, ebx
push eax
call fcn.100085c3
mov dword [ebp - 0x48c], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x444]
call fcn.10005e05
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101e48f0
mov esp, ebp
pop ebp
ret
call fcn.101e524c
call fcn.1000604b
call fcn.10205f6e
call fcn.1000604b
call fcn.1000604b
int3