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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42ef28
mov eax, dword fs:[0]
push eax
sub esp, 0x2a8
mov eax, dword [0x44206c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x230], ebx
mov dword [ebp - 0x238], 0
mov edx, 0x23c2bc2d
mov dword [ebp - 0x22c], 0x237e9271
mov eax, dword [ebp - 0x22c]
sub edx, eax
lea eax, [ebp - 0x21c]
push eax
push 0x104
mov esi, dword [edx]
add esi, 0x1f3f17ec
mov dword [ebp - 0x240], esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x406a28
lea ecx, [eax + 0x1c]
cmp ecx, 0x104
ja 0x406a28
lea ecx, [esi + esi]
mov edi, 0x76b4d04a
push str.unchecky
sub edi, ecx
mov dword [ebp - 0x22c], ecx
lea ecx, [ebp - 0x21c]
push str.unchecky
lea eax, [ecx + eax*2]
push edi
push eax
mov dword [ebp - 0x228], eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esi + esi]
mov eax, 0x76b4d06a
push str.unchecky
sub eax, ecx
push eax
push dword [ebp - 0x228]
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
push 0
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x406a28
push str.unchecky
push str.unchecky
push edi
push dword [ebp - 0x228]
call dword [sym.imp.USER32.dll_wsprintfW]
lea ecx, [ebp - 0x21c]
add esp, 0x10
lea edi, [ebx + 0x14]
lea edx, [ecx + 2]
jmp 0x4069c0
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4069c0
sub ecx, edx
lea eax, [ebp - 0x21c]
sar ecx, 1
push ecx
push eax
mov ecx, edi
call fcn.00409200
lea ecx, [ebp - 0x2b4]
mov dword [ebp - 4], 0
call fcn.00406480
mov byte [ebp - 4], 2
mov eax, dword [ebx + 0x20]
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x406a0d
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x406ae8
call fcn.004019c0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x406d77
jmp 0x406ae8
mov edx, dword [ebx + 0x14]
lea edi, [ebx + 0x14]
mov ecx, 1
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, 0x104
or eax, ecx
jge 0x406a50
push 0x104
mov ecx, edi
call fcn.00409100
mov edx, dword [edi]
push ecx
add esi, esi
mov eax, 0x76b4d072
push edx
sub eax, esi
mov dword [ebp - 0x22c], esi
mov edx, 0x76b4d07a
mov ecx, 0x76b4d07e
push eax
sub edx, esi
sub ecx, esi
call fcn.0040a790
mov esi, eax
add esp, 0xc
mov ecx, esi
neg ecx
sbb ecx, ecx
neg ecx
dec ecx
test esi, esi
jne 0x406a9f
mov eax, dword [edi]
test eax, eax
jne 0x406a91
xor ecx, ecx
jmp 0x406aa7
push dword [eax - 8]
push eax
call fcn.0041dbd1
add esp, 8
mov ecx, eax
test ecx, ecx
js 0x406d87
mov eax, dword [edi]
cmp ecx, dword [eax - 8]
jg 0x406d87
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [edi]
mov word [eax + ecx*2], dx
test esi, esi
je 0x4069de
mov ecx, esi
call fcn.004093f0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004146e0
mov esp, ebp
pop ebp
ret
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x238], 1
mov dword [ebp - 0x234], eax
lea ecx, [ebp - 0x234]
mov eax, dword [ebx + 0x20]
mov edx, 0x43d1a0
push dword [eax - 0xc]
push eax
push 0x2c
call fcn.00407fa0
mov eax, dword [ebp - 0x234]
add esp, 0xc
mov edx, dword [ebp - 0x2b4]
add edx, 0xfffffff0
mov dword [ebp - 0x23c], edx
lea esi, [eax - 0x10]
cmp esi, edx
je 0x406b9c
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
mov dword [ebp - 0x228], ecx
jl 0x406b8d
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x406b8d
mov ecx, esi
call fcn.00408cc0
mov edx, dword [ebp - 0x228]
or ebx, 0xffffffff
mov dword [ebp - 0x220], eax
mov ecx, ebx
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406b82
mov edx, dword [ebp - 0x23c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x220]
add eax, 0x10
mov dword [ebp - 0x2b4], eax
jmp 0x406b9f
push dword [eax - 0xc]
lea ecx, [ebp - 0x2b4]
push eax
call fcn.00409200
or ebx, 0xffffffff
mov byte [ebp - 4], 1
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x406bb7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, 0x76b4cf5a
sub edx, dword [ebp - 0x22c]
jne 0x406bc8
xor ecx, ecx
jmp 0x406bdf
mov ecx, edx
lea esi, [ecx + 2]
lea ecx, [ecx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406bd0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x2ac]
call fcn.00409200
mov edx, dword [edi]
mov esi, dword [ebp - 0x28c]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x406c49
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x406c3a
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x406c3a
call fcn.00408cc0
mov dword [ebp - 0x220], eax
lock xadd dword [edi], ebx
dec ebx
test ebx, ebx
jg 0x406c2f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x220]
add eax, 0x10
mov dword [ebp - 0x28c], eax
jmp 0x406c49
push dword [edx - 0xc]
lea ecx, [ebp - 0x28c]
push edx
call fcn.00409200
push 0x188
call fcn.00414efe
add esp, 4
mov dword [ebp - 0x220], eax
push 1
lea ecx, [ebp - 0x2b4]
mov byte [ebp - 4], 3
push ecx
mov ecx, eax
call fcn.004052a0
mov esi, eax
mov dword [ebp - 0x220], esi
mov ecx, esi
mov byte [ebp - 4], 4
call fcn.00405a40
mov edi, eax
test edi, edi
js 0x406d81
mov eax, dword [ebp - 0x230]
mov ebx, dword [eax + 0x10]
mov dword [eax + 0x10], esi
mov dword [eax + 8], 2
mov dword [eax + 0xc], 0
test ebx, ebx
je 0x406cc0
mov ecx, ebx
call fcn.004080b0
push 0x188
push ebx
call fcn.00414cce
add esp, 8
lea ecx, [ebp - 0x2b4]
call fcn.004066c0
mov eax, edi
jmp 0x406acc
push 0x80004005
call fcn.004093b0
push edi
call fcn.004093b0
push 0x80070057
call fcn.004093b0
int3