Function at 0x4d2699
Capabilities:
Create directory
Delete directory
Delete file
Get common file path
Move file

Disassembly:
push 0x4a8
mov eax, 0x5151d0
call fcn.005060cc
mov edi, ecx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x4ac], ebx
cmp dword [edi], ebx
je 0x4d2a12
call fcn.0045d99f
test eax, eax
jne 0x4d26cc
cmp dword [edi], eax
je 0x4d2a12
mov esi, dword [edi + 4]
xor ecx, ecx
inc ecx
cmp esi, ecx
je 0x4d2902
cmp esi, 2
je 0x4d2902
lea eax, [esi - 3]
cmp eax, 7
ja 0x4d285c
push 0x400
xor ebx, ebx
lea eax, [ebp - 0x410]
push ebx
push eax
call fcn.004f1a90
add esp, 0xc
mov ecx, edi
call fcn.004169ca
neg eax
sbb eax, eax
and eax, 0xfffffffc
add eax, 4
sub esi, eax
add esi, 0xfffffffd
cmp esi, 3
ja 0x4d2a12
push ebx
push dword [esi*4 + 0x51f4e0]
lea eax, [ebp - 0x410]
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x4d2a12
lea ecx, [ebp - 0x410]
call fcn.004234e6
test eax, eax
je 0x4d2a12
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp dword [ebp - 0x4ac], ebx
je 0x4d277d
lea ecx, [ebp - 0x410]
call fcn.00422800
push str.__Delayed_by_AnVir_
lea eax, [ebp - 0x410]
push eax
call esi
lea ecx, [ebp - 0x410]
call fcn.004227d2
push ebx
lea eax, [ebp - 0x410]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push dword [edi + 0x20]
lea eax, [ebp - 0x410]
push eax
call esi
lea eax, [ebp - 0x4a8]
mov ecx, edi
push eax
call fcn.004d191e
lea ecx, [ebp - 0x410]
mov dword [ebp - 4], 3
call fcn.00423518
test eax, eax
je 0x4d27db
lea eax, [ebp - 0x410]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
je 0x4d29f1
lea eax, [ebp - 0x410]
push eax
push dword [ebp - 0x4a8]
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x4d29f1
or esi, 0xffffffff
cmp dword [ebp - 0x4ac], 0
jne 0x4d2835
lea eax, [ebp - 0x4ac]
mov ecx, edi
push eax
call fcn.004d198b
push dword [eax]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov edx, dword [ebp - 0x4ac]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4d2835
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], esi
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x4d29ec
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4d29ec
cmp dword [0xd5b274], 0
jne 0x4d28ac
push 0x90
lea eax, [ebp - 0x4a0]
mov dword [0xd5b274], ecx
push 0
push eax
mov dword [ebp - 0x4a4], 0x94
call fcn.004f1a90
add esp, 0xc
lea eax, [ebp - 0x4a4]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
imul eax, dword [ebp - 0x4a0], 0xa
add eax, dword [ebp - 0x49c]
mov dword [0xd5b270], eax
jmp 0x4d28b1
mov eax, dword [0xd5b270]
cmp eax, 0x3c
jl 0x4d2a12
cmp dword [edi + 4], 0x10
jne 0x4d2a12
lea eax, [ebp - 0x4ac]
mov ecx, edi
push eax
call fcn.004d1a55
mov edx, ebx
mov ecx, dword [eax]
call fcn.004c4d7e
mov edx, dword [ebp - 0x4ac]
mov esi, eax
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4d28fb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, esi
jmp 0x4d2a14
mov ecx, edi
call fcn.004169ca
mov ecx, dword [edi + 0x28]
neg eax
sbb eax, eax
and eax, 0xfffffffa
add eax, 6
sub ecx, eax
sub ecx, 1
je 0x4d2926
cmp ecx, 1
jne 0x4d2a12
mov edx, 0xd5aedc
test ebx, ebx
mov eax, 0xd5af0c
cmove eax, edx
mov edx, 0xd5aed4
lea eax, [eax + ecx*4]
push eax
lea ecx, [ebp - 0x4a8]
call fcn.0040a740
xor ebx, ebx
mov esi, esp
mov dword [ebp - 4], ebx
mov dword [ebp - 0x4b4], esi
mov ecx, dword [edi + 0x20]
sub ecx, 0x10
mov dword [ebp - 0x4ac], esp
call fcn.004098e7
add eax, 0x10
mov dword [esi], eax
push ecx
mov byte [ebp - 4], 1
mov esi, esp
mov ecx, dword [edi + 0x24]
sub ecx, 0x10
mov dword [ebp - 0x4b4], esp
mov dword [ebp - 0x4b0], esi
call fcn.004098e7
add eax, 0x10
mov dword [esi], eax
push ecx
mov byte [ebp - 4], 2
mov esi, esp
mov ecx, dword [ebp - 0x4a8]
mov dword [ebp - 0x4b0], esi
lea ecx, [ecx - 0x10]
call fcn.004098e7
add eax, 0x10
mov ecx, edi
mov dword [esi], eax
push dword [edi + 0x2c]
mov byte [ebp - 4], bl
call fcn.004d20b8
test eax, eax
je 0x4d29f1
mov ecx, edi
call fcn.004d219a
test eax, eax
je 0x4d29f1
or esi, 0xffffffff
mov dword [ebp - 4], esi
mov eax, dword [ebp - 0x4a8]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x4d29ec
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
xor eax, eax
inc eax
jmp 0x4d2a14
or esi, 0xffffffff
mov dword [ebp - 4], esi
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x4d2a12
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
call fcn.00506076
ret 4