Function at 0x405458
Capabilities:
Copy file
Enumerate files on windows

Disassembly:
push 0x1a4
mov eax, 0x43f901
call fcn.004253f8
push str.directx
lea ecx, [ebp - 0x160]
call fcn.00402597
and dword [ebp - 4], 0
call fcn.0043d560
push eax
lea ecx, [ebp - 0x16c]
call fcn.00402597
push ecx
mov byte [ebp - 4], 1
lea eax, [ebp - 0x160]
mov dword [ebp - 0x174], esp
mov ecx, esp
push eax
call fcn.00408cb1
push ecx
mov byte [ebp - 4], 2
lea eax, [ebp - 0x16c]
mov dword [ebp - 0x170], esp
mov ecx, esp
push eax
call fcn.00408cb1
lea eax, [ebp - 0x154]
push eax
mov byte [ebp - 4], 1
call fcn.004051b4
add esp, 0xc
push 0x446a78
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 3
call fcn.00407c83
test eax, eax
je 0x40588d
call fcn.00405141
mov byte [ebp - 0x155], al
mov edi, 0x446690
push edi
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x1a0]
push eax
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x160]
push ecx
push eax
lea eax, [ebp - 0x198]
push eax
mov byte [ebp - 4], 4
call fcn.00407821
add esp, 0xc
push 0x4467cc
push eax
lea eax, [ebp - 0x184]
push eax
mov byte [ebp - 4], 5
call fcn.00407878
mov eax, dword [eax]
add esp, 0xc
lea ecx, [ebp - 0x150]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ecx, dword [ebp - 0x184]
add ecx, 0xfffffff0
mov dword [ebp - 0x164], eax
call fcn.00401c0b
mov ecx, dword [ebp - 0x198]
add ecx, 0xfffffff0
call fcn.00401c0b
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x1a0]
add ecx, 0xfffffff0
call fcn.00401c0b
lea esi, [ebp - 0x168]
call fcn.00405410
cmp dword [ebp - 0x164], 0xffffffff
mov byte [ebp - 4], 6
je 0x40587f
lea eax, [ebp - 0x150]
push eax
push dword [ebp - 0x164]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x405873
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
test byte [ebp - 0x150], 0x20
je 0x405858
lea eax, [ebp - 0x124]
push eax
lea ecx, [ebp - 0x15c]
call fcn.00402597
cmp byte [ebp - 0x155], 0
mov byte [ebp - 4], 7
jne 0x4056f5
push edi
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x1ac]
push eax
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x15c]
push ecx
push eax
lea eax, [ebp - 0x18c]
push eax
mov byte [ebp - 4], 8
call fcn.00407821
add esp, 0xc
mov ebx, eax
push edi
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x19c]
push eax
mov byte [ebp - 4], 9
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x160]
push ecx
push eax
lea eax, [ebp - 0x178]
push eax
mov byte [ebp - 4], 0xa
call fcn.00407821
add esp, 0xc
push edi
push eax
lea eax, [ebp - 0x1a4]
push eax
mov byte [ebp - 4], 0xb
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x15c]
push ecx
push eax
lea eax, [ebp - 0x1a8]
push eax
mov byte [ebp - 4], 0xc
call fcn.00407821
mov ebx, dword [ebx]
mov eax, dword [eax]
add esp, 0xc
push 0
push ebx
push eax
call esi
mov ecx, dword [ebp - 0x1a8]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x1a4]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x178]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x19c]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x18c]
add ecx, 0xfffffff0
call fcn.00401c0b
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x1ac]
add ecx, 0xfffffff0
call fcn.00401c0b
push edi
lea eax, [ebp - 0x168]
push eax
lea eax, [ebp - 0x194]
push eax
call fcn.00407878
add esp, 8
mov ecx, esp
mov dword [ebp - 0x1b0], esp
lea edx, [ebp - 0x15c]
push edx
push eax
push ecx
mov byte [ebp - 4], 0xd
call fcn.00407821
add esp, 0xc
call fcn.004053c0
pop ecx
test al, al
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x194]
sete bl
add ecx, 0xfffffff0
call fcn.00401c0b
test bl, bl
je 0x405846
push edi
lea eax, [ebp - 0x168]
push eax
lea eax, [ebp - 0x174]
push eax
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x15c]
push ecx
push eax
lea eax, [ebp - 0x170]
push eax
mov byte [ebp - 4], 0xe
call fcn.00407821
add esp, 0xc
mov ebx, eax
push edi
lea eax, [ebp - 0x154]
push eax
lea eax, [ebp - 0x190]
push eax
mov byte [ebp - 4], 0xf
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x160]
push ecx
push eax
lea eax, [ebp - 0x188]
push eax
mov byte [ebp - 4], 0x10
call fcn.00407821
add esp, 0xc
push edi
push eax
lea eax, [ebp - 0x180]
push eax
mov byte [ebp - 4], 0x11
call fcn.00407878
add esp, 0xc
lea ecx, [ebp - 0x15c]
push ecx
push eax
lea eax, [ebp - 0x17c]
push eax
mov byte [ebp - 4], 0x12
call fcn.00407821
mov ebx, dword [ebx]
mov eax, dword [eax]
add esp, 0xc
push 1
push ebx
push eax
call esi
mov ecx, dword [ebp - 0x17c]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x180]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x188]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x190]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x170]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x174]
add ecx, 0xfffffff0
call fcn.00401c0b
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x15c]
add ecx, 0xfffffff0
call fcn.00401c0b
lea eax, [ebp - 0x150]
push eax
push dword [ebp - 0x164]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x4055c9
push dword [ebp - 0x164]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [ebp - 0x168]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x154]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x16c]
add ecx, 0xfffffff0
call fcn.00401c0b
mov ecx, dword [ebp - 0x160]
add ecx, 0xfffffff0
call fcn.00401c0b
call fcn.0042547b
ret