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

Disassembly:
push ebp
mov eax, 0x1458
mov ebp, esp
push edi
push esi
push ebx
call fcn.0057e5f0
sub esp, eax
lea ebx, [ebp - 0x141c]
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], 0x28a
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 - 0x141c], 0
mov edx, ebx
je 0x415311
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x415308
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + 0x58a2ec]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x415318
xor eax, eax
lea esi, [ebp - 0x1214]
lea esi, [esi]
nop
movzx edx, word [ebx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x415338
cmp word [ebp - 0x1214], 0
mov edx, esi
je 0x415361
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x415358
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + 0x58a2e0]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x415368
mov edi, dword [sym.imp.kernel32.dll_RemoveDirectoryW]
mov dword [esp], esi
call edi
sub esp, 4
mov dword [esp], ebx
mov dword [ebp - 0x143c], edi
call edi
mov eax, dword [sym.imp.kernel32.dll_CreateDirectoryW]
sub esp, 4
mov dword [esp], ebx
mov dword [esp + 4], 0
mov dword [ebp - 0x1440], eax
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x294
xor eax, eax
cmp edi, 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 + 0x18], 0
mov dword [esp + 0x14], 0x42000000
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0x80100001
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov edi, eax
call fcn.0057d110
cmp edi, 0xffffffff
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x29a
setne al
movzx eax, al
mov dword [esp + 4], str.failed_to_open_directory_n
mov dword [ebp - 0x1434], edi
mov dword [esp], eax
call fcn.00414890
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateEventW]
lea edx, [ebp - 0x100c]
mov ecx, 0x400
mov dword [ebp - 0x1430], 0
mov dword [ebp - 0x1420], eax
mov edi, edx
sub esp, 0x10
mov edx, dword [sym.imp.kernel32.dll_ReadDirectoryChangesW]
mov eax, dword fs:[0x18]
mov dword [eax + 0x34], 0xd0b00b00
xor eax, eax
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0x1430]
mov dword [ebp - 0x142c], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov ecx, dword [ebp - 0x1434]
mov dword [esp], ecx
mov dword [ebp - 0x1444], edx
call edx
sub esp, 0x20
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2a7
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.should_return_true_n
mov dword [esp], eax
call fcn.00414890
mov edx, dword [sym.imp.kernel32.dll_WaitForSingleObject]
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x1420]
mov dword [esp], eax
mov dword [ebp - 0x1438], edx
call edx
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2aa
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], 0x589c87
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x1440]
call eax
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2ad
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.failed_to_create_directory_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x1420]
mov dword [esp], eax
mov edx, dword [ebp - 0x1438]
call edx
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2b0
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.event_should_be_ready_n
mov dword [esp], eax
call fcn.00414890
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2b2
xor eax, eax
mov dword [esp + 4], str.ov.Internal_wrong_n
cmp dword [ebp - 0x1430], 0x10c
sete al
mov dword [esp], eax
call fcn.00414890
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2b3
xor eax, eax
mov dword [esp + 4], str.ov.InternalHigh_wrong_n
mov edx, dword [ebp - 0x142c]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00414890
lea edx, [ebp - 0x100c]
xor eax, eax
mov ecx, 0x400
mov dword [ebp - 0x1430], 0
mov edi, edx
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x1430]
mov dword [ebp - 0x142c], 0
mov dword [ebp - 0x1428], 0
mov dword [ebp - 0x1424], 0
mov dword [esp + 4], edx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x1000
mov ecx, dword [ebp - 0x1434]
mov dword [esp], ecx
mov eax, dword [ebp - 0x1444]
call eax
sub esp, 0x20
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2bc
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.should_return_true_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x1420]
mov dword [esp], eax
mov edx, dword [ebp - 0x1438]
call edx
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2bf
xor eax, eax
cmp edi, 0x102
sete al
mov dword [esp + 4], 0x589c87
mov dword [esp], eax
call fcn.00414890
mov dword [esp], esi
mov edi, dword [ebp - 0x143c]
call edi
sub esp, 4
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2c2
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 4], str.failed_to_remove_directory_n
mov dword [esp], eax
call fcn.00414890
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x1420]
mov dword [esp], eax
mov edx, dword [ebp - 0x1438]
call edx
sub esp, 8
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2c5
xor eax, eax
test esi, esi
sete al
mov dword [esp + 4], str.should_be_ready_n
mov dword [esp], eax
call fcn.00414890
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2c7
xor eax, eax
mov dword [esp + 4], str.ov.Internal_wrong_n
cmp dword [ebp - 0x1430], 0x10c
sete al
mov dword [esp], eax
call fcn.00414890
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2c8
xor eax, eax
mov dword [esp + 4], str.ov.InternalHigh_wrong_n
mov ecx, dword [ebp - 0x142c]
test ecx, ecx
sete al
mov dword [esp], eax
call fcn.00414890
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2cb
xor eax, eax
mov dword [esp + 4], str.offset_wrong_n
mov esi, dword [ebp - 0x100c]
test esi, esi
sete al
mov dword [esp], eax
call fcn.00414890
mov ecx, dword [ebp - 0x1434]
mov dword [esp], ecx
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
mov dword [esp], ebx
call edi
sub esp, 4
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x589a87
mov dword [eax + 4], 0x2d0
xor eax, eax
cmp ebx, 1
sete al
mov dword [esp + 4], str.failed_to_remove_directory_n
mov dword [esp], eax
call fcn.00414890
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret