Function at 0x422c20
Capabilities:
Check if file exists
Delete directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x459d48
mov eax, dword fs:[0]
push eax
sub esp, 0xa0
push ebx
push esi
push edi
mov eax, dword [0x46c008]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x34], edi
mov eax, dword [ebp + 0xc]
xorps xmm0, xmm0
push 8
movlpd qword [ebp - 0x74], xmm0
mov dword [ebp - 0x6c], 0
mov byte [eax], 1
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov word [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
call fcn.0044a831
xor ecx, ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], 0
add esp, 4
mov dword [ebp - 0x44], 3
mov word [eax], cx
mov ebx, dword [ebp + 8]
push ecx
mov dword [ebp - 4], ecx
lea ecx, [ebp - 0x74]
push dword [ebx]
call fcn.0040d410
test al, al
je 0x4231f7
mov eax, dword [edi + 0x48]
cmp eax, 2
je 0x423361
mov edx, 2
test eax, eax
jne 0x422e81
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
lea esi, [ecx + edx*2]
cmp esi, ecx
je 0x422d1d
nop word [eax + eax]
movzx eax, word [esi - 2]
sub esi, 2
cmp eax, 0x5c
je 0x422e29
cmp eax, 0x2f
je 0x422e29
cmp esi, ecx
jne 0x422d00
or esi, 0xffffffff
inc esi
cmp esi, edx
cmova esi, edx
xor ecx, ecx
mov edx, 2
lea eax, [esi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0044a831
mov edi, eax
mov dword [ebp - 0x2c], esi
mov eax, dword [ebp + 8]
lea ebx, [esi + esi]
push ebx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x28], esi
push dword [eax]
mov dword [ebp - 0x38], ebx
push edi
call fcn.0044b640
xor eax, eax
mov word [edi + ebx], ax
mov byte [ebp - 4], 1
xor ecx, ecx
mov edi, dword [ebp - 0x48]
mov edx, 2
mov ebx, dword [ebp - 0x4c]
add esi, edi
lea eax, [esi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0044a831
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x38]
push esi
push dword [ebp - 0x30]
mov dword [ebp - 0x24], eax
push eax
call fcn.0044b640
mov eax, dword [ebp - 0x24]
lea ecx, [edi*2 + 2]
push ecx
add eax, esi
push ebx
push eax
call fcn.0044b640
mov byte [ebp - 4], 3
push dword [ebp - 0x30]
call fcn.0044a6fb
mov edi, dword [ebp - 0x34]
add esp, 0x30
mov eax, dword [ebp - 0x5c]
xor esi, esi
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x3c]
cmp byte [edi + 0x3b], 0
push eax
lea eax, [edi + 0xd8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [edi + 0x50]
cmove eax, esi
cmp byte [edi + 0xcb], 0
push eax
lea eax, [edi + 0xc0]
mov edx, dword [ecx]
cmove eax, esi
push eax
push dword [edi + 0x74]
lea eax, [ebp - 0x74]
push eax
mov esi, dword [ebp - 0x24]
lea eax, [ebp - 0x14]
push eax
push esi
push ecx
call dword [edx + 0x14]
mov ebx, eax
test ebx, ebx
jne 0x422f19
mov eax, dword [ebp - 0x3c]
cmp eax, 5
ja case.default.0x422e22
jmp dword [eax*4 + 0x423384]
sub esi, ecx
sar esi, 1
jmp 0x422d20
push esi
mov ebx, 0x80004004
call fcn.0044a6fb
add esp, 4
jmp 0x423363
mov dword [edi + 0x48], 2
push esi
xor ebx, ebx
call fcn.0044a6fb
add esp, 4
jmp 0x423363
mov dword [edi + 0x48], 1
jmp case.0x422e22.0
mov dword [edi + 0x48], 3
push esi
mov byte [ebp - 4], 0
call fcn.0044a6fb
mov ebx, dword [ebp + 8]
add esp, 4
mov edx, 2
mov eax, dword [edi + 0x48]
cmp eax, 3
jne 0x422f33
mov ecx, ebx
call fcn.0041b370
test al, al
jne 0x422f27
push str.Cannot_create_file_with_auto_name
lea ecx, [ebp - 0x24]
call fcn.0040a370
push 0x462418
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 4
call fcn.0040a640
push dword [ebx + 4]
lea ecx, [ebp - 0x24]
call fcn.0040a2d0
mov eax, dword [ebx + 4]
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x20]
lea eax, [eax*2 + 2]
push eax
push dword [ebx]
lea eax, [edi + esi*2]
push eax
call fcn.0044b640
mov eax, dword [ebp - 0x34]
add esp, 0xc
add esi, dword [ebx + 4]
mov dword [ebp - 0x20], esi
mov eax, dword [eax + 0x50]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
push edi
mov ebx, eax
call fcn.0044a6fb
add esp, 4
test ebx, ebx
jne 0x423363
mov ebx, 0x80004005
jmp 0x423363
mov ebx, 0x80004005
push esi
call fcn.0044a6fb
add esp, 4
jmp 0x423363
mov byte [edi + 0x174], 1
jmp 0x42335b
cmp eax, 4
jne 0x42315c
mov esi, dword [ebx + 4]
xor ecx, ecx
lea eax, [esi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0044a831
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], esi
lea ecx, [ecx*2 + 2]
push ecx
push dword [ebx]
push eax
call fcn.0044b640
add esp, 0x10
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 5
call fcn.0041b370
mov esi, dword [ebp - 0x24]
test al, al
jne 0x423009
push str.Cannot_create_file_with_auto_name
lea ecx, [ebp - 0x18]
call fcn.0040a370
push 0x462418
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 6
call fcn.0040a640
push dword [ebx + 4]
lea ecx, [ebp - 0x18]
call fcn.0040a2d0
mov eax, dword [ebx + 4]
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
lea eax, [eax*2 + 2]
push eax
push dword [ebx]
lea eax, [edi + esi*2]
push eax
call fcn.0044b640
mov eax, dword [ebp - 0x34]
add esp, 0xc
add esi, dword [ebx + 4]
mov dword [ebp - 0x14], esi
mov eax, dword [eax + 0x50]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
push edi
mov esi, eax
call fcn.0044a6fb
add esp, 4
mov ebx, 0x80004005
test esi, esi
cmovne ebx, esi
push dword [ebp - 0x24]
call fcn.0044a6fb
add esp, 4
jmp 0x423363
mov ecx, dword [ebx]
mov edx, esi
call fcn.0040c820
test al, al
jne 0x42314e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x42302d
mov esi, 0x80004005
jmp 0x423038
jle 0x423038
movzx esi, si
or esi, 0x80070000
push str.Cannot_rename_existing_file
lea ecx, [ebp - 0x18]
call fcn.0040a370
mov byte [ebp - 4], 7
test esi, esi
je 0x4230a5
push 0x462418
lea ecx, [ebp - 0x18]
call fcn.0040a640
mov edx, esi
lea ecx, [ebp - 0x30]
call fcn.0040c600
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x18]
push dword [ebp - 0x2c]
call fcn.0040a2d0
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x14]
lea ecx, [eax + esi*2]
lea eax, [edx*2 + 2]
push eax
push dword [ebp - 0x30]
push ecx
call fcn.0044b640
add esi, dword [ebp - 0x2c]
mov byte [ebp - 4], 7
push dword [ebp - 0x30]
mov dword [ebp - 0x14], esi
call fcn.0044a6fb
add esp, 0x10
push 0x462418
lea ecx, [ebp - 0x18]
call fcn.0040a640
mov edi, dword [ebp - 0x20]
lea ecx, [ebp - 0x18]
push edi
call fcn.0040a2d0
mov esi, dword [ebp - 0x14]
lea eax, [edi*2 + 2]
push eax
mov eax, dword [ebp - 0x18]
push dword [ebp - 0x24]
lea eax, [eax + esi*2]
push eax
call fcn.0044b640
add esp, 0xc
lea ecx, [ebp - 0x18]
add esi, edi
mov dword [ebp - 0x14], esi
push 0x462418
call fcn.0040a640
push dword [ebx + 4]
lea ecx, [ebp - 0x18]
call fcn.0040a2d0
mov eax, dword [ebx + 4]
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
lea eax, [eax*2 + 2]
push eax
push dword [ebx]
lea eax, [edi + esi*2]
push eax
call fcn.0044b640
mov eax, dword [ebp - 0x34]
add esp, 0xc
add esi, dword [ebx + 4]
mov dword [ebp - 0x14], esi
mov eax, dword [eax + 0x50]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
push edi
mov ebx, eax
call fcn.0044a6fb
add esp, 4
test ebx, ebx
jne 0x42313e
mov ebx, 0x80004005
push dword [ebp - 0x24]
call fcn.0044a6fb
add esp, 4
jmp 0x423363
push esi
call fcn.0044a6fb
add esp, 4
jmp 0x42335b
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebx]
shr eax, 4
test al, 1
je 0x4231c4
cmp byte [0x46e2d1], 0
jne 0x423199
mov edx, ecx
lea ecx, [ebp - 0x30]
call fcn.0040a940
push dword [eax]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
push dword [ebp - 0x30]
mov esi, eax
call fcn.0044a6fb
add esp, 4
test esi, esi
je 0x4231a8
jmp 0x42335b
push ecx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x42335b
push ebx
push str.Cannot_delete_output_folder
mov ecx, edi
call fcn.004224d0
mov ebx, eax
test ebx, ebx
jne 0x423363
jmp 0x423361
call fcn.0040dd20
test al, al
je 0x42335b
mov ecx, dword [ebx]
call fcn.0040cd60
test al, al
jne 0x42335b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x42335b
push ebx
push str.Cannot_delete_output_file
jmp 0x4231ae
mov esi, dword [ebx]
mov ecx, esi
call fcn.0040e820
mov dword [ebp + 8], eax
test eax, eax
js 0x42335b
cmp word [esi + eax*2 + 2], 0
je 0x42335b
mov esi, dword [ebx + 4]
xor ecx, ecx
mov edx, 2
lea eax, [esi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0044a831
mov ecx, dword [ebx + 4]
mov edi, eax
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], esi
lea ecx, [ecx*2 + 2]
push ecx
push dword [ebx]
push edi
call fcn.0044b640
add esp, 0x10
mov eax, dword [ebp + 8]
mov byte [ebp - 4], 9
cmp eax, esi
jae 0x423268
xor ecx, ecx
mov dword [ebp - 0x2c], eax
mov word [edi + eax*2], cx
xorps xmm0, xmm0
mov dword [ebp - 0xa4], 0
push 8
movlpd qword [ebp - 0xac], xmm0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x8c], 0
mov word [ebp - 0x88], 0
mov dword [ebp - 0x84], 0
call fcn.0044a831
xor ecx, ecx
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], 0
add esp, 4
mov dword [ebp - 0x7c], 3
mov word [eax], cx
push ecx
push edi
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0xa
call fcn.0040d410
test al, al
je 0x423347
test byte [ebp - 0x8c], 1
je 0x423347
mov esi, dword [ebp - 0x8c]
and esi, 0xfffffffe
cmp byte [0x46e2d1], 0
jne 0x42333f
mov edx, edi
lea ecx, [ebp - 0x24]
call fcn.0040a940
push esi
push dword [eax]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push dword [ebp - 0x24]
call fcn.0044a6fb
add esp, 4
jmp 0x423347
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push dword [ebp - 0x84]
call fcn.0044a6fb
push edi
call fcn.0044a6fb
add esp, 8
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
xor ebx, ebx
push dword [ebp - 0x4c]
call fcn.0044a6fb
add esp, 4
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8