Function at 0x40f030
Capabilities:
Create directory
Enumerate files on windows
Enumerate files recursively

Disassembly:
push ebp
sub esp, 0x2d0
lea ebp, [esp - 4]
mov eax, dword [0x4f4524]
xor eax, ebp
mov dword [ebp + 0x2d0], eax
push 0x284
mov eax, 0x4bfb89
call fcn.00443ad4
mov eax, dword [ebp + 0x2dc]
mov ecx, dword [ebp + 0x2e4]
mov edi, dword [ebp + 0x2e8]
mov esi, dword [ebp + 0x2e0]
xor ebx, ebx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], edi
cmp eax, ebx
je 0x40f33f
cmp byte [eax], bl
je 0x40f33f
cmp esi, ebx
je 0x40f33f
cmp byte [esi], bl
je 0x40f33f
push eax
lea ecx, [ebp + 0x194]
call fcn.0040b122
push esi
lea ecx, [ebp + 0x1b0]
mov dword [ebp - 4], ebx
call fcn.0040b122
cmp dword [ebp + 0x1ac], 0x10
mov eax, dword [ebp + 0x198]
mov byte [ebp - 4], 1
jae 0x40f0cb
lea eax, [ebp + 0x198]
mov ecx, dword [ebp + 0x1a8]
cmp byte [eax + ecx - 1], 0x5c
je 0x40f0e5
push 0x5c
lea ecx, [ebp + 0x194]
call fcn.0040ab60
cmp dword [ebp + 0x1c8], 0x10
mov eax, dword [ebp + 0x1b4]
jae 0x40f0fa
lea eax, [ebp + 0x1b4]
mov ecx, dword [ebp + 0x1c4]
lea eax, [eax + ecx - 1]
cmp byte [eax], 0x5c
je 0x40f116
push 0x5c
lea ecx, [ebp + 0x1b0]
call fcn.0040ab60
push 0xf
pop esi
push ebx
lea ecx, [ebp + 0x178]
mov dword [ebp + 0x190], esi
call fcn.00401187
push ebx
lea ecx, [ebp + 0x15c]
mov dword [ebp + 0x174], esi
call fcn.00401187
push ebx
lea ecx, [ebp + 0x140]
mov dword [ebp + 0x158], esi
call fcn.00401187
push 0x103
lea eax, [ebp + 0x1cd]
push ebx
push eax
mov byte [ebp - 4], 4
mov byte [ebp + 0x1cc], 0
call fcn.00443e40
add esp, 0xc
push edi
lea ecx, [ebp + 0x178]
call fcn.004018cd
cmp dword [ebp + 0x190], 0x10
mov eax, dword [ebp + 0x17c]
jae 0x40f190
lea eax, [ebp + 0x17c]
push eax
lea eax, [ebp + 0x1cc]
push eax
call fcn.00445390
lea eax, [ebp + 0x1cc]
push str.EdpUninstallFile.ini
push eax
call fcn.00445390
add esp, 0x10
xor edi, edi
inc edi
push edi
push 2
lea ecx, [ebp - 0xf0]
call fcn.0040ebc9
mov esi, 0x4cc6f0
push esi
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 5
call fcn.0040b122
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0xec]
mov byte [ebp - 4], 6
call fcn.00407ee0
push ebx
push edi
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 5
call fcn.00401336
push 0x3f
push esi
lea ecx, [ebp - 0x18]
call fcn.0040c226
push eax
lea eax, [ebp - 0x10]
push eax
mov byte [ebp - 4], 7
call fcn.0042f978
pop ecx
pop ecx
lea ecx, [ebp - 0x10]
call fcn.00403721
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 5
call fcn.00403721
push edi
push 0x40
push 0x2a
lea eax, [ebp + 0x1cc]
push eax
lea ecx, [ebp - 0x290]
call fcn.0040ec8e
push 0x4cd480
push ebx
call fcn.0044ab1f
pop ecx
pop ecx
lea ecx, [ebp - 0x290]
call fcn.0040dd36
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 4
call fcn.00408a6e
mov eax, dword [ebp + 0x1b4]
push 0x10
pop esi
cmp dword [ebp + 0x1c8], esi
jae 0x40f279
lea eax, [ebp + 0x1b4]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push edi
push 3
lea ecx, [ebp - 0x208]
call fcn.0040ed22
push 0x4cd47c
lea eax, [ebp + 0x194]
push eax
lea eax, [ebp - 0x200]
push eax
mov byte [ebp - 4], 8
call fcn.0040ed89
pop ecx
pop ecx
push eax
call fcn.0040eef2
pop ecx
pop ecx
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x208]
call fcn.0040bd92
cmp dword [eax + 0x18], esi
jb 0x40f2ce
mov eax, dword [eax + 4]
jmp 0x40f2d1
add eax, 4
lea ecx, [ebp]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
push ebx
push edi
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x10], eax
call fcn.00401336
cmp dword [ebp - 0x10], 0xffffffff
jne 0x40f364
lea ecx, [ebp - 0x208]
mov byte [ebp - 4], 4
call fcn.00407cd4
push ebx
push edi
lea ecx, [ebp + 0x140]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x15c]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x178]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x1b0]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x194]
call fcn.00401336
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2d0]
xor ecx, ebp
call fcn.00443ac5
add ebp, 0x2d4
leave
ret
call fcn.0040b3eb
push edi
push 3
lea ecx, [ebp - 0xf8]
call fcn.0040ed22
push edi
push 3
lea ecx, [ebp - 0x180]
mov byte [ebp - 4], 9
call fcn.0040ed22
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x194]
push eax
lea eax, [ebp - 0xf0]
push eax
mov byte [ebp - 4], 0xa
call fcn.0040ed89
pop ecx
pop ecx
push eax
call fcn.0040eef2
pop ecx
pop ecx
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x1b0]
push eax
lea eax, [ebp - 0x178]
push eax
call fcn.0040ed89
pop ecx
pop ecx
push eax
call fcn.0040eef2
mov eax, dword [ebp]
pop ecx
and eax, esi
pop ecx
lea ecx, [ebp - 0x180]
cmp al, 0x10
jne 0x40f531
cmp byte [ebp + 0x2c], 0x2e
jne 0x40f405
mov byte [ebp - 4], 9
call fcn.00407cd4
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 8
call fcn.00407cd4
jmp 0x40f600
lea eax, [ebp - 0x38]
push eax
call fcn.0040bd92
mov ebx, eax
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 0xb
call fcn.0040bd92
mov byte [ebp - 4], 0xc
cmp dword [ebx + 0x18], esi
jb 0x40f431
mov ebx, dword [ebx + 4]
jmp 0x40f434
add ebx, 4
cmp dword [eax + 0x18], esi
jb 0x40f43e
mov eax, dword [eax + 4]
jmp 0x40f441
add eax, 4
push dword [ebp + 0x2ec]
push dword [ebp - 0x1c]
push dword [ebp - 0x14]
push ebx
push eax
call fcn.0040f030
add esp, 0x14
mov ebx, eax
neg ebx
sbb bl, bl
xor esi, esi
push esi
push edi
lea ecx, [ebp - 0x54]
inc bl
call fcn.00401336
push esi
push edi
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xa
call fcn.00401336
test bl, bl
je 0x40f5d6
push edi
push 3
lea ecx, [ebp - 0x290]
call fcn.0040ed22
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x180]
mov byte [ebp - 4], 0xd
call fcn.0040bd92
mov ebx, eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 0xe
call fcn.0040bd92
cmp dword [ebx + 0x18], 0x10
mov byte [ebp - 4], 0xf
jb 0x40f4c6
mov ebx, dword [ebx + 4]
jmp 0x40f4c9
add ebx, 4
cmp dword [eax + 0x18], 0x10
jb 0x40f4d4
mov eax, dword [eax + 4]
jmp 0x40f4d7
add eax, 4
push ebx
push str._Dest:
push eax
lea eax, [ebp - 0x288]
push str.DirectoryCopy_Source:
push eax
call fcn.0040eef2
pop ecx
pop ecx
push eax
call fcn.0040eef2
pop ecx
pop ecx
push eax
call fcn.0040eef2
pop ecx
pop ecx
push eax
call fcn.0040eef2
pop ecx
pop ecx
push esi
push edi
lea ecx, [ebp - 0x38]
call fcn.00401336
push esi
push edi
lea ecx, [ebp - 0x54]
call fcn.00401336
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 0xa
call fcn.00407cd4
jmp 0x40f5d6
lea eax, [ebp - 0x54]
push eax
call fcn.0040bd92
mov ebx, eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 0x10
call fcn.0040bd92
mov byte [ebp - 4], 0x11
cmp dword [ebx + 0x18], esi
jb 0x40f55d
mov ebx, dword [ebx + 4]
jmp 0x40f560
add ebx, 4
cmp dword [eax + 0x18], esi
jb 0x40f56a
mov eax, dword [eax + 4]
jmp 0x40f56d
add eax, 4
push ebx
push eax
call fcn.0040b703
pop ecx
pop ecx
mov ebx, eax
neg ebx
push 0
sbb bl, bl
push edi
lea ecx, [ebp - 0x38]
inc bl
call fcn.00401336
push 0
push edi
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 0xa
call fcn.00401336
test bl, bl
je 0x40f5d6
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0xf8]
call fcn.0040bd92
cmp dword [eax + 0x18], 0x10
mov byte [ebp - 4], 0x12
jb 0x40f5ba
mov eax, dword [eax + 4]
jmp 0x40f5bd
add eax, 4
push 0
push dword [ebp - 0x14]
push eax
call fcn.0040b527
add esp, 0xc
push 0
push edi
lea ecx, [ebp - 0x38]
call fcn.00401336
push edi
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x180]
mov byte [ebp - 4], 9
call fcn.00407cd4
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 8
call fcn.00407cd4
push 0x10
xor ebx, ebx
pop esi
lea eax, [ebp]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x40f369
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_FindClose]
lea ecx, [ebp - 0x208]
mov byte [ebp - 4], 4
call fcn.00407cd4
push ebx
push edi
lea ecx, [ebp + 0x140]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x15c]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x178]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x1b0]
call fcn.00401336
push ebx
push edi
lea ecx, [ebp + 0x194]
call fcn.00401336
mov eax, edi
jmp 0x40f341