Function at 0x4088fe
Capabilities:
Enumerate files on windows
Get disk information
Get file system object information

Disassembly:
mov eax, 0x4bb4
call fcn.00431d30
push ebx
push ebp
mov ebp, dword [esp + 0x4bc0]
push esi
push edi
push 2
mov ebx, dword [ebp + 0x10]
push ebp
call fcn.004087f5
xor edi, edi
cmp eax, 2
jne 0x40893b
cmp edx, edi
jne 0x40893b
push edi
push edi
push 0x101d
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x40893f
mov eax, dword [esp + 0x24]
push 1
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0x34
lea eax, [esp + 0x2c]
push edi
push eax
call fcn.004010c0
mov esi, dword [esp + 0x4bd8]
add esp, 0xc
test esi, esi
jne 0x40896b
mov esi, 0x48d390
push 0x5c
pop eax
cmp word [esi], ax
jne 0x40898a
push eax
lea edi, [esi + 2]
push edi
call fcn.00430c2b
pop ecx
pop ecx
push 0x5c
test eax, eax
pop eax
jne 0x408988
mov esi, edi
xor edi, edi
test esi, esi
je 0x408a4f
cmp word [esi], di
je 0x408a4f
push eax
push esi
call fcn.00430c2b
pop ecx
pop ecx
push esi
test eax, eax
jne 0x4089bf
lea eax, [ebx + 0x214]
push eax
call fcn.004136f0
pop ecx
pop ecx
lea edi, [ebx + 0xc]
jmp 0x408a57
lea edi, [ebx + 0xc]
mov dword [esp + 0x18], edi
call fcn.00413712
pop ecx
push 0x5c
pop ecx
cmp word [esi + eax*2 - 2], cx
jne 0x4089ef
push esi
push edi
call fcn.004136f0
pop ecx
pop ecx
movzx eax, word [edi]
cmp eax, 0x61
jb 0x408a54
add eax, 0xffffffe0
movzx eax, ax
jmp 0x408a54
push 0x208
xor eax, eax
push eax
push edi
call fcn.004010c0
push esi
call fcn.00413712
add esp, 0x10
test eax, eax
js 0x408a5b
lea ecx, [esi + eax*2]
push 0x5c
mov dword [esp + 0x14], ecx
pop edx
cmp word [ecx], dx
je 0x408a27
sub ecx, 2
sub eax, 1
mov dword [esp + 0x10], ecx
jns 0x408a14
jmp 0x408a57
lea eax, [eax*2 + 2]
push eax
push esi
push edi
call fcn.00414030
mov eax, dword [esp + 0x1c]
add eax, 2
push eax
lea eax, [ebx + 0x214]
push eax
call fcn.004136f0
add esp, 0x14
jmp 0x4089df
lea edi, [ebx + 0xc]
xor eax, eax
mov word [edi], ax
mov dword [esp + 0x14], edi
xor esi, esi
cmp word [edi], si
jne 0x408a6c
push dword [ebp]
call fcn.00431a94
jmp 0x408a75
push edi
push dword [ebp]
call fcn.004319eb
push esi
push esi
push 0x1009
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
cmp word [edi], si
jne 0x408c91
test byte [ebx + 8], 4
jne 0x4092b5
mov dword [esp + 0x28], 7
mov dword [esp + 0x2c], 0x10000
mov dword [esp + 0x3c], 0x48d390
mov dword [esp + 0x30], esi
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov edi, eax
lea eax, [esp + 0x7b4]
push 0x48c65c
push eax
mov dword [esp + 0x18], edi
call fcn.004136f0
pop ecx
pop ecx
mov dword [esp + 0x14], esi
xor eax, eax
mov ecx, esi
inc eax
shl eax, cl
test edi, eax
je 0x408be4
lea eax, [esi + 0x41]
mov dword [esp + 0x48], esi
mov word [esp + 0x7b4], ax
xor eax, eax
mov word [esp + 0x2f8], ax
lea eax, [esp + 0x714]
push str.Drive
push eax
call fcn.004136f0
mov edi, dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea eax, [esp + 0x508]
pop ecx
pop ecx
push 0x4001
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x7c4]
push eax
call edi
mov eax, dword [esp + 0x504]
push 0x200
mov dword [esp + 0x48], eax
lea eax, [esp + 0x504]
push 0x2b4
push eax
xor eax, eax
push eax
lea eax, [esp + 0x7c4]
push eax
call edi
lea eax, [esp + 0x50c]
push eax
lea eax, [esp + 0x2fc]
push eax
call fcn.004136f0
pop ecx
pop ecx
lea eax, [esp + 0x28]
push eax
xor eax, eax
push eax
push 0x104d
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
xor ecx, ecx
mov dword [esp + 0x18], eax
mov edi, ecx
cmp dword [ebx + 0x2220], ecx
jle 0x408c88
mov esi, eax
cmp byte [ebx + edi + 0x2224], 2
jne 0x408bd3
lea eax, [esp + 0x2f8]
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], eax
lea eax, [esp + 0x5c]
push eax
push esi
push 0x1074
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
inc edi
cmp edi, dword [ebx + 0x2220]
jl 0x408ba6
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
xor ecx, ecx
inc esi
mov dword [esp + 0x14], esi
cmp esi, 0x1f
jle 0x408ad8
cmp dword [0x4bca00], 0
je 0x4092b3
test dword [ebx + 8], 0x200
jne 0x4092b3
mov eax, dword [0x4bee44]
mov dword [esp + 0x44], eax
lea eax, [esp + 0x28]
push eax
push ecx
push 0x104d
push dword [ebp]
mov dword [esp + 0x4c], 0x48d390
mov dword [esp + 0x58], 0xfd
call dword [sym.imp.USER32.dll_SendMessageW]
mov edi, eax
xor eax, eax
mov esi, eax
cmp dword [ebx + 0x2220], eax
jle 0x4092b3
cmp byte [ebx + esi + 0x2224], 2
jne 0x408c7a
lea eax, [esp + 0x5c]
mov dword [esp + 0x64], esi
push eax
push edi
push 0x1074
push dword [ebp]
mov dword [esp + 0x80], 0x4bdbf8
call dword [sym.imp.USER32.dll_SendMessageW]
inc esi
cmp esi, dword [ebx + 0x2220]
jl 0x408c4d
jmp 0x4092b3
mov edi, dword [esp + 0x10]
jmp 0x408be6
test byte [ebx + 8], 2
jne 0x408d96
mov eax, dword [0x4bee40]
push 0x5c
mov dword [esp + 0x48], eax
pop eax
push eax
push eax
push edi
mov dword [esp + 0x34], 7
mov dword [esp + 0x38], esi
mov dword [esp + 0x48], 0x48d390
call fcn.00430c2b
pop ecx
pop ecx
add eax, 2
push eax
call fcn.00430c2b
neg eax
pop ecx
sbb eax, eax
neg eax
add eax, 0xfa
pop ecx
mov dword [esp + 0x48], eax
cmp dword [0x4bca00], esi
je 0x408d36
test dword [ebx + 8], 0x200
jne 0x408d36
push 0x4bde00
call fcn.00413712
push eax
push 0x4bde00
push edi
call fcn.00430cdb
add esp, 0x10
test eax, eax
jne 0x408d36
push 0x5c
pop eax
push eax
push 0x4bde00
call fcn.00413712
add eax, 6
pop ecx
lea eax, [ebx + eax*2]
push eax
call fcn.00430c2b
pop ecx
pop ecx
test eax, eax
jne 0x408d36
mov dword [esp + 0x48], 0xfa
lea eax, [esp + 0x28]
push eax
push esi
push 0x104d
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0x18], eax
xor eax, eax
cmp dword [ebx + 0x2220], eax
jle 0x408d96
mov edi, dword [esp + 0x18]
cmp byte [ebx + esi + 0x2224], 2
jne 0x408d89
lea eax, [esp + 0x5c]
mov dword [esp + 0x64], esi
push eax
push edi
push 0x1074
push dword [ebp]
mov dword [esp + 0x80], 0x48d314
call dword [sym.imp.USER32.dll_SendMessageW]
inc esi
cmp esi, dword [ebx + 0x2220]
jl 0x408d5c
mov edi, dword [esp + 0x14]
test byte [ebx + 8], 4
jne 0x408fa2
lea eax, [esp + 0x2f8]
push edi
push eax
call fcn.004136f0
lea eax, [esp + 0x300]
push 0x48d34c
push eax
call fcn.00413d6f
add esp, 0x10
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0x2fc]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov dword [esp + 0x18], esi
cmp esi, 0xffffffff
je 0x408fa2
push 7
pop eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0xffff
mov dword [esp + 0x3c], 0x48d390
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 0xfc
test byte [esp + 0xa8], 0x10
je 0x408f80
lea eax, [esp + 0xd4]
push 0x48d31c
push eax
call fcn.004145a4
pop ecx
pop ecx
test eax, eax
je 0x408f80
lea eax, [esp + 0xd4]
push 0x48d314
push eax
call fcn.004145a4
pop ecx
pop ecx
test eax, eax
je 0x408f80
mov eax, dword [0x4bee40]
mov dword [esp + 0x44], eax
lea eax, [esp + 0x28]
push eax
xor eax, eax
push eax
push 0x104d
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
xor ecx, ecx
mov edi, eax
mov esi, ecx
cmp dword [ebx + 0x2220], ecx
jle 0x408f7c
movzx eax, byte [ebx + esi + 0x2224]
dec eax
sub eax, 1
je 0x408f4a
sub eax, 3
je 0x408ed5
sub eax, 1
je 0x408ecc
sub eax, 1
je 0x408ec3
sub eax, 1
jne 0x408f6f
lea eax, [esp + 0xb4]
push eax
push esi
push edi
push dword [ebp]
call fcn.0040883e
jmp 0x408f6d
lea eax, [esp + 0xbc]
jmp 0x408eb3
lea eax, [esp + 0xac]
jmp 0x408eb3
push 0xb
push ecx
lea eax, [esp + 0x98]
push eax
call fcn.004010c0
mov edx, str.RHSDANTCOE
mov ecx, 0x4bc9d4
add esp, 0xc
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0xa8]
test dword [ecx], eax
je 0x408f2b
lea eax, [esp + 0x90]
push eax
call fcn.00413712
mov edx, dword [esp + 0x20]
pop ecx
lea ecx, [esp + 0x90]
lea ecx, [ecx + eax*2]
mov ax, word [edx]
mov word [ecx], ax
mov ecx, dword [esp + 0x10]
add ecx, 4
add edx, 2
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], edx
cmp ecx, 0x4bc9f8
jle 0x408efa
lea eax, [esp + 0x90]
jmp 0x408f51
lea eax, [esp + 0xd4]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x5c]
push eax
push edi
push 0x1074
push dword [ebp]
mov dword [esp + 0x74], esi
call dword [sym.imp.USER32.dll_SendMessageW]
xor ecx, ecx
inc esi
cmp esi, dword [ebx + 0x2220]
jl 0x408e82
mov esi, dword [esp + 0x18]
lea eax, [esp + 0xa8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x408e0b
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov edi, dword [esp + 0x14]
test byte [ebx + 8], 1
jne 0x4092a8
lea eax, [esp + 0x29bc]
push eax
lea eax, [ebx + 0x214]
push eax
call fcn.00431400
push 0x4bfc40
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esp + 0x2f8]
push edi
push eax
call fcn.004136f0
lea eax, [esp + 0x300]
push 0x48d34c
push eax
call fcn.00413d6f
add esp, 0x10
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0x2fc]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [esp + 0x10], eax
cmp eax, 0xffffffff
je 0x4092a8
xor eax, eax
mov dword [esp + 0x28], 7
push 0x2b4
push eax
lea eax, [esp + 0x508]
mov dword [esp + 0x34], 0xffff
push eax
mov dword [esp + 0x48], 0x48d390
mov dword [esp + 0x50], 0xa
mov dword [esp + 0x54], 0xff
call fcn.004010c0
mov esi, dword [esp + 0x1c]
add esp, 0xc
test byte [esp + 0xa8], 0x10
jne 0x40928a
lea eax, [esp + 0x29bc]
push eax
lea eax, [esp + 0xd8]
push eax
call fcn.00431360
test eax, eax
je 0x40928a
lea eax, [esp + 0x2f8]
push edi
push eax
call fcn.004136f0
lea eax, [esp + 0xdc]
push eax
lea eax, [esp + 0x304]
push eax
call fcn.00413d6f
add esp, 0x10
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x2fc]
push eax
call fcn.00431729
mov dword [esp + 0x44], eax
lea eax, [esp + 0x28]
push eax
xor eax, eax
push eax
push 0x104d
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
xor edx, edx
mov dword [esp + 0x18], eax
mov esi, edx
cmp dword [ebx + 0x2220], edx
jle 0x409286
mov edi, eax
movzx eax, byte [ebx + esi + 0x2224]
dec eax
sub eax, 1
je 0x409250
sub eax, 1
je 0x4091ce
sub eax, 1
je 0x4091c5
sub eax, 1
je 0x40914d
sub eax, 1
je 0x409144
sub eax, 1
je 0x40913b
sub eax, 1
jne 0x409275
lea eax, [esp + 0xb4]
push eax
push esi
push edi
push dword [ebp]
call fcn.0040883e
jmp 0x409273
lea eax, [esp + 0xbc]
jmp 0x40912b
lea eax, [esp + 0xac]
jmp 0x40912b
push 0xb
push edx
lea eax, [esp + 0x98]
push eax
call fcn.004010c0
mov edx, str.RHSDANTCOE
mov ecx, 0x4bc9d4
add esp, 0xc
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0xa8]
test dword [ecx], eax
je 0x4091a3
lea eax, [esp + 0x90]
push eax
call fcn.00413712
mov edx, dword [esp + 0x20]
pop ecx
lea ecx, [esp + 0x90]
lea ecx, [ecx + eax*2]
mov ax, word [edx]
mov word [ecx], ax
mov ecx, dword [esp + 0x18]
add ecx, 4
add edx, 2
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
cmp ecx, 0x4bc9f8
jle 0x409172
lea eax, [esp + 0x90]
jmp 0x409257
mov eax, dword [esp + 0x24]
jmp 0x409257
mov ecx, dword [esp + 0xc4]
test ecx, ecx
je 0x4091fc
xor eax, eax
add eax, dword [esp + 0xc8]
adc ecx, edx
shrd eax, ecx, 0xa
shr ecx, 0xa
push ecx
push eax
lea eax, [esp + 0x300]
push eax
call fcn.00430e92
jmp 0x409233
mov ecx, dword [esp + 0xc8]
lea eax, [ecx - 1]
cmp eax, 0x3ffffffe
ja 0x40921a
add ecx, 0x3ff
mov dword [esp + 0xc8], ecx
shr ecx, 0xa
lea eax, [esp + 0x2f8]
push ecx
push 0x48bbd8
push eax
call fcn.0040766b
add esp, 0xc
lea eax, [esp + 0x2f8]
push 0x48cee4
push eax
call fcn.00413d6f
pop ecx
pop ecx
lea eax, [esp + 0x2f8]
jmp 0x409257
lea eax, [esp + 0xd4]
mov dword [esp + 0x70], eax
lea eax, [esp + 0x5c]
push eax
push edi
push 0x1074
push dword [ebp]
mov dword [esp + 0x74], esi
call dword [sym.imp.USER32.dll_SendMessageW]
xor edx, edx
inc esi
cmp esi, dword [ebx + 0x2220]
jl 0x4090e8
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
lea eax, [esp + 0xa8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x409055
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0x4bfc40
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor esi, esi
cmp dword [ebx + 0x22ec], esi
je 0x4092c3
push ebx
call fcn.0040802c
push 2
push ebp
call fcn.004087f5
cmp eax, 2
jne 0x4092eb
cmp edx, esi
jne 0x4092eb
mov eax, dword [esp + 0x20]
movzx eax, ax
push eax
push esi
push 0x101e
push dword [ebp]
call dword [sym.imp.USER32.dll_SendMessageW]
push esi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4bb4
ret 8