Function at 0x40558c
Capabilities:
Check if file exists
Create directory
Get file attributes
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0xffffffdf
jne 0x4054d2
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov word [ebp - 0x28], 3
mov dword [ebp - 0x20], 1
push 2
push 0xfffffffffffffffd
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
call fcn.0041ea20
pop ecx
push eax
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
call fcn.0041c371
add esp, 0x10
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x40533a
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
push dword [ebp + 8]
call fcn.0041c1d7
pop ecx
pop ecx
mov dword [ebp - 8], eax
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0xffffffd1
jne 0x4054bf
push 0
push 1
push 3
lea eax, [ebp - 0x38]
push eax
call fcn.00409b6d
add esp, 0x10
movsx eax, al
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
push dword [ebp - 8]
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [ebp - 0x38]
push eax
push dword [ebp - 8]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x40
jne 0x4054af
push 0
push 1
push 3
lea eax, [ebp - 0x18]
push eax
call fcn.00409b6d
add esp, 0x10
movsx eax, al
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x3e
jne 0x4053df
push 0
push 1
push 3
lea eax, [ebp - 0x28]
push eax
call fcn.00409b6d
add esp, 0x10
movsx eax, al
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
jmp 0x4053e4
call fcn.00416b9c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x24]
mov dword [ebp - 4], eax
cmp dword [ebp - 0x20], 0
jl 0x405451
jmp 0x405404
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
add eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 8]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
cmp eax, dword [ebp - 0x10]
jg 0x405443
cmp dword [ebp + 0xc], 0
jne 0x405443
push dword [ebp + 0x10]
push 0x2a
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [ebp + 8]
call fcn.00402c2b
add esp, 0x10
mov dword [ebp + 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x40543f
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x24], ecx
jmp 0x405441
jmp 0x405443
jmp 0x4053f5
push 0x2a
push dword [ebp + 8]
call fcn.0041aeeb
pop ecx
pop ecx
jmp 0x4054ad
jmp 0x405462
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
add eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 8]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
cmp eax, dword [ebp - 0x10]
jl 0x4054a1
cmp dword [ebp + 0xc], 0
jne 0x4054a1
push dword [ebp + 0x10]
push 0x2a
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [ebp + 8]
call fcn.00402c2b
add esp, 0x10
mov dword [ebp + 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x40549d
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x24], ecx
jmp 0x40549f
jmp 0x4054a1
jmp 0x405453
push 0x2a
push dword [ebp + 8]
call fcn.0041aeeb
pop ecx
pop ecx
jmp 0x4054bd
push str.expected_TO
push 1
call fcn.0041aa80
pop ecx
pop ecx
jmp 0x4054cd
push str.expected_
push 1
call fcn.0041aa80
pop ecx
pop ecx
jmp 0x40571b
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x10
jne 0x40570d
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0xffffffdf
jne 0x4056fd
push 2
push 0xfffffffffffffffd
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
call fcn.0041ea20
pop ecx
push eax
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
call fcn.0041c371
add esp, 0x10
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jne 0x40552c
mov eax, dword [ebp + 8]
push dword [eax + 0x1c]
push dword [ebp + 8]
call fcn.0041c1d7
pop ecx
pop ecx
mov dword [ebp - 0x3c], eax
call fcn.00419289
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x22
jne 0x4056e4
push 0
push 1
push 0
lea eax, [ebp - 0x50]
push eax
call fcn.00409b6d
add esp, 0x10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x24]
mov dword [ebp - 4], eax
movzx eax, word [ebp - 0x50]
and eax, 0x2000
je 0x40564c
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0x54]
call dword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0
jne 0x405647
and dword [ebp - 0x60], 0
and dword [ebp - 0x64], 0
jmp 0x405599
mov eax, dword [ebp - 0x64]
inc eax
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x54]
movzx eax, word [eax]
cmp dword [ebp - 0x64], eax
jae 0x4055d9
cmp dword [ebp - 0x60], 0
jne 0x4055b9
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + eax*8 + 0x10]
mov dword [ebp - 0x60], eax
jmp 0x4055d7
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x54]
cmp dword [ecx + eax*8 + 0x10], 0
je 0x4055d7
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x60]
imul edx, dword [ecx + eax*8 + 0x10]
mov dword [ebp - 0x60], edx
jmp 0x405592
and dword [ebp - 0x68], 0
jmp 0x4055e6
mov eax, dword [ebp - 0x68]
inc eax
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x68]
cmp eax, dword [ebp - 0x60]
jae 0x40563e
cmp dword [ebp + 0xc], 0
jne 0x40563e
push dword [ebp - 0x3c]
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x68]
shl eax, 4
add eax, dword [ebp - 0x58]
push eax
push dword [ebp - 0x3c]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
push dword [ebp + 0x10]
push 0x2a
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [ebp + 8]
call fcn.00402c2b
add esp, 0x10
mov dword [ebp + 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x40563a
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x24], ecx
jmp 0x40563c
jmp 0x40563e
jmp 0x4055df
push dword [ebp - 0x54]
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
jmp 0x4056cc
movzx eax, word [ebp - 0x50]
cmp eax, 9
jne 0x4056be
push dword [ebp - 0x48]
call fcn.00407274
pop ecx
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
je 0x4056bc
push dword [ebp - 0x3c]
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
push dword [ebp - 0x3c]
push dword [ebp - 0x6c]
call fcn.004073ef
pop ecx
pop ecx
test eax, eax
je 0x4056ab
push dword [ebp + 0x10]
push 0x2a
mov eax, dword [ebp + 8]
push dword [eax + 0x24]
push dword [ebp + 8]
call fcn.00402c2b
add esp, 0x10
mov dword [ebp + 0xc], eax
cmp dword [ebp + 0xc], 0
jne 0x4056a9
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x24], ecx
jmp 0x4056ad
jmp 0x4056b3
cmp dword [ebp + 0xc], 0
je 0x405667
push dword [ebp - 0x6c]
call fcn.00407416
pop ecx
jmp 0x4056cc
push str.Expected_an_object_reference.
push 0xffffffffffffffff
call fcn.0041acec
pop ecx
pop ecx
push 0x2a
push dword [ebp + 8]
call fcn.0041aeeb
pop ecx
pop ecx
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x4056f2
push str.expected_IN
push 1
call fcn.0041aa80
pop ecx
pop ecx
push dword [ebp - 0x3c]
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x40570b
push str.expected_variable
push 1
call fcn.0041aa80
pop ecx
pop ecx
jmp 0x40571b
push str.expected_variable_or_EACH
push 1
call fcn.0041aa80
pop ecx
pop ecx
mov eax, dword [ebp + 0xc]
leave
ret