Function at 0x403ec0
Capabilities:
Enumerate files on windows
Get disk information
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x96c
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x200
lea eax, [ebp - 0x508]
push 0
push eax
call fcn.0040bf00
add esp, 0xc
lea eax, [ebp - 0x308]
push 0x200
push 0
push eax
call fcn.0040bf00
add esp, 0xc
lea eax, [ebp - 0x960]
push 0x250
push 0
push eax
call fcn.0040bf00
add esp, 0xc
lea eax, [ebp - 0x108]
or ebx, 0xffffffff
push pe_nt_image_headers32
push 0
push eax
call fcn.0040bf00
add esp, 0xc
lea eax, [ebp - 0x508]
push eax
push 0xff
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
xor eax, eax
lea esi, [ebp - 0x508]
mov dword [ebp - 0x312], eax
mov dword [ebp - 0x30e], eax
mov word [ebp - 0x30a], ax
mov dword [ebp - 0x968], esi
cmp ax, word [ebp - 0x508]
je 0x404223
mov edi, dword [sym.imp.KERNEL32.dll_FindClose]
push esi
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 5
je 0x404207
push 0xff
lea eax, [ebp - 0x308]
push esi
push eax
call fcn.0040e084
add esp, 0xc
xor eax, eax
mov word [ebp - 0x10a], ax
lea eax, [ebp - 0x308]
push 0xff
push 0x42e420
push eax
call fcn.0040de40
xor eax, eax
add esp, 0xc
mov word [ebp - 0x10a], ax
lea eax, [ebp - 0x960]
push eax
lea eax, [ebp - 0x308]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x404207
nop word [eax + eax]
test dword [ebp - 0x960], 0x10
je 0x4041df
mov edx, 0x2e
cmp dx, word [ebp - 0x934]
jne 0x404034
mov ax, word [ebp - 0x932]
xor ecx, ecx
cmp cx, ax
je 0x4041df
cmp dx, ax
jne 0x404034
xor eax, eax
cmp ax, word [ebp - 0x930]
je 0x4041df
xor eax, eax
mov word [ebp - 0x2f0], ax
lea eax, [ebp - 0x934]
push 0xff
push eax
lea eax, [ebp - 0x308]
push eax
call fcn.0040de40
add esp, 0xc
xor eax, eax
mov word [ebp - 0x10a], ax
lea eax, [ebp - 0x934]
push 0x42e4a0
push eax
call fcn.0040df83
add esp, 8
test eax, eax
je 0x4041df
lea eax, [ebp - 0x308]
mov edx, 0xff
push eax
lea ecx, [ebp - 0x108]
call fcn.00408670
add esp, 4
mov byte [ebp - 9], 0
lea eax, [ebp - 0x108]
push 0xff
push str.dd_launcher.json
push eax
call fcn.0040e200
add esp, 0xc
mov byte [ebp - 9], 0
lea ecx, [ebp - 0x108]
call fcn.004089e0
mov esi, eax
test esi, esi
je 0x4041df
mov dword [ebp - 0x964], esi
cmp byte [esi], 0xef
jne 0x4040ed
cmp byte [esi + 1], 0xbb
jne 0x4040ed
cmp byte [esi + 2], 0xbf
jne 0x4040ed
lea eax, [esi + 3]
mov dword [ebp - 0x964], eax
xor edx, edx
lea ecx, [ebp - 0x964]
call fcn.00408f30
push esi
mov edi, eax
call fcn.0041501c
add esp, 4
test edi, edi
je 0x4041df
cmp dword [edi + 4], 4
jne 0x4041d8
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x4041d8
push 0x11
mov edx, str.depend_battle.net
call fcn.00408b60
add esp, 4
test eax, eax
je 0x4041d8
cmp dword [eax + 4], 6
jne 0x4041d8
cmp dword [eax + 8], 0
je 0x4041d8
lea eax, [ebp - 0x308]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov ecx, edi
call fcn.004015d0
mov ecx, edi
call fcn.004017e0
mov ecx, edi
call fcn.00401f50
mov ecx, edi
call fcn.004022a0
mov ecx, edi
call fcn.00401b00
mov ecx, edi
call fcn.004012d0
mov ecx, edi
call fcn.004025f0
push 0x208
lea eax, [ebp - 0x710]
push 0
push eax
call fcn.0040bf00
add esp, 0xc
lea eax, [ebp - 0x710]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x710]
push 0x5c
push eax
call fcn.0040b6e5
xor ecx, ecx
mov word [eax + 2], cx
lea eax, [ebp - 0x710]
push eax
call fcn.0040e6e9
add esp, 0xc
mov ecx, edi
call fcn.0040a700
lea eax, [ebp - 0x960]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x403ff0
mov edi, dword [sym.imp.KERNEL32.dll_FindClose]
push ebx
call edi
mov esi, dword [ebp - 0x968]
or ebx, 0xffffffff
add esi, 8
xor eax, eax
mov dword [ebp - 0x968], esi
cmp ax, word [esi]
jne 0x403f77
cmp ebx, 0xffffffff
je 0x404223
push ebx
call edi
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040a851
mov esp, ebp
pop ebp
ret