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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x624]
sub esp, 0x644
mov dword [esp + 4], ebx
mov dword [esp], 0x104
call dword [sym.imp.kernel32.dll_GetTempPathW]
sub esp, 8
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x108
xor eax, eax
test esi, esi
setne al
mov dword [esp + 4], str.temp_path_failed_n
mov dword [esp], eax
call fcn.00414890
cmp word [ebp - 0x624], 0
mov edx, ebx
je 0x416509
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x416500
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + str._boo]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x416510
xor eax, eax
lea ecx, [ebp - 0x41c]
lea esi, [esi]
nop
movzx edx, word [ebx + eax]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x416530
cmp word [ebp - 0x41c], 0
mov edx, ecx
je 0x416559
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x416550
xor eax, eax
lea esi, [esi]
nop
movzx esi, word [eax + str.hoo]
mov word [edx + eax], si
add eax, 2
test si, si
jne 0x416560
xor eax, eax
lea edx, [ebp - 0x214]
lea esi, [esi]
nop
movzx esi, word [ebx + eax]
mov word [edx + eax], si
add eax, 2
test si, si
jne 0x416580
cmp word [ebp - 0x214], 0
mov esi, edx
je 0x4165a9
lea esi, [esi]
add esi, 2
cmp word [esi], 0
jne 0x4165a0
xor eax, eax
lea esi, [esi]
nop
movzx edi, word [eax + str.zoo]
mov word [esi + eax], di
add eax, 2
test di, di
jne 0x4165b0
mov eax, dword [sym.imp.kernel32.dll_RemoveDirectoryW]
mov dword [esp], ecx
mov edi, eax
call eax
mov eax, edi
sub esp, 4
mov dword [esp], ebx
mov dword [ebp - 0x630], edi
call eax
mov ecx, dword [sym.imp.kernel32.dll_CreateDirectoryW]
sub esp, 4
mov dword [esp], ebx
mov dword [esp + 4], 0
mov dword [ebp - 0x634], ecx
call ecx
sub esp, 8
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x115
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 4], str.failed_to_create_directory_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], ebx
mov dword [esp + 8], 3
mov dword [esp + 4], 1
call dword [sym.imp.kernel32.dll_FindFirstChangeNotificationW]
sub esp, 0xc
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x11b
xor eax, eax
cmp esi, 0xffffffff
setne al
mov dword [esp + 4], str.invalid_handle_n
mov dword [esp], eax
call fcn.00414890
mov eax, dword [sym.imp.kernel32.dll_WaitForSingleObject]
mov dword [esp], esi
mov dword [esp + 4], 0
mov dword [ebp - 0x628], eax
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x11e
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], str.should_time_out_n
mov dword [esp], eax
call fcn.00414890
lea edx, [ebp - 0x214]
mov dword [esp + 0x18], 0
mov dword [esp], edx
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc0000000
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x122
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], 0x589e0d
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.00414890
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
mov dword [esp], esi
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x126
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x129
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov ecx, dword [sym.imp.kernel32.dll_FindNextChangeNotification]
mov dword [esp], esi
mov dword [ebp - 0x62c], ecx
call ecx
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x12c
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.find_next_failed_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x12f
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], str.should_time_out_n
mov dword [esp], eax
call fcn.00414890
lea edx, [ebp - 0x214]
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x132
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.failed_to_remove_file_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x135
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x138
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov ecx, dword [ebp - 0x62c]
call ecx
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x13b
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.find_next_failed_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x13e
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], str.should_time_out_n
mov dword [esp], eax
call fcn.00414890
lea ecx, [ebp - 0x41c]
mov dword [esp + 4], 0
mov dword [esp], ecx
mov edx, dword [ebp - 0x634]
call edx
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x141
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.failed_to_create_subdir_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x144
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x147
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov ecx, dword [ebp - 0x62c]
call ecx
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x14a
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.find_next_failed_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x14d
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], str.should_time_out_n
mov dword [esp], eax
call fcn.00414890
lea ecx, [ebp - 0x41c]
mov dword [esp], ecx
mov edi, dword [ebp - 0x630]
call edi
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x150
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.failed_to_remove_subdir_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x153
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x628]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x156
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov ecx, dword [ebp - 0x62c]
call ecx
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x159
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.find_next_failed_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov ecx, dword [ebp - 0x62c]
call ecx
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x15c
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.find_next_failed_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_FindCloseChangeNotification]
sub esp, 4
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x15f
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 4], 0x589e7e
mov dword [esp], eax
call fcn.00414890
mov dword [esp], ebx
mov edi, dword [ebp - 0x630]
call edi
sub esp, 4
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x162
xor eax, eax
cmp ebx, 1
sete al
mov dword [esp + 4], str.failed_to_remove_dir_n
mov dword [esp], eax
call fcn.00414890
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret