Function at 0x44e870
Capabilities:
Create directory
Delete directory
Get common file path
Set current directory

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x42c
mov esi, dword [sym.imp.kernel32.dll_CreateDirectoryW]
mov dword [esp + 4], 0
mov dword [esp], 0
call esi
sub esp, 8
mov ebx, eax
test eax, eax
jne 0x44ef60
mov edi, dword fs:[0x18]
cmp dword [edi + 0x34], 0x78
je 0x44ef92
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x179
mov edx, dword [edi + 0x34]
xor eax, eax
cmp edx, 3
sete al
mov dword [esp + 0xc], edx
mov dword [esp + 8], ebx
mov dword [esp + 4], str.should_not_create_NULL_path_ret__u_err__lu_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], 0
mov dword [esp], 0x595770
call esi
sub esp, 8
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x17d
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test ebx, ebx
jne 0x44e926
xor eax, eax
cmp ecx, 3
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebx
lea ebx, [ebp - 0x41c]
mov dword [esp + 4], str.should_not_create_empty_path_ret__u_err__lu_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], 0x104
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetSystemDirectoryW]
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x181
xor eax, eax
cmp edi, 0x103
setle al
mov dword [esp + 4], str.System_directory_should_fit_into_MAX_PATH_n
mov dword [esp], eax
call fcn.0044df00
lea eax, [ebp - 0x214]
mov dword [esp], 0x104
mov dword [esp + 4], eax
call dword [sym.imp.kernel32.dll_GetCurrentDirectoryW]
mov eax, dword [sym.imp.kernel32.dll_SetCurrentDirectoryW]
sub esp, 8
mov dword [esp], ebx
mov dword [ebp - 0x428], eax
call eax
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov edx, dword fs:[0x18]
mov dword [eax + 4], 0x185
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x420], edx
mov dword [esp + 0xc], eax
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 8], edi
mov dword [esp + 4], str.could_not_chdir_to_the_System_directory_ret__u_err__lu_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], 0
mov dword [esp], 0x59576c
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov edx, dword [ebp - 0x420]
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x188
xor eax, eax
mov ecx, dword [edx + 0x34]
test edi, edi
jne 0x44ea3a
xor eax, eax
cmp ecx, 0xb7
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], str.should_not_create_existing_path_ret__u_err__lu_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], 0
mov dword [esp], 0x595764
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x18c
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test edi, edi
jne 0x44ea95
xor eax, eax
cmp ecx, 0xb7
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.should_not_create_existing_path_ret__u_err__lu_n
call fcn.0044df00
mov eax, dword [sym.imp.kernel32.dll_GetTempPathW]
mov dword [esp + 4], ebx
mov dword [esp], 0x104
mov dword [ebp - 0x424], eax
call eax
xor ecx, ecx
sub esp, 8
mov word [ebp - 0x416], cx
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x192
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test edi, edi
jne 0x44eb1a
mov eax, 1
cmp ecx, 5
je 0x44eb1a
xor eax, eax
cmp ecx, 0xb7
sete al
mov dword [esp], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], str.should_deny_access_to_the_drive_root_ret__u_err__lu_n
call fcn.0044df00
mov dword [esp + 4], ebx
mov dword [esp], 0x104
mov eax, dword [ebp - 0x424]
call eax
mov edx, ebx
sub esp, 8
cmp word [ebp - 0x41c], 0
je 0x44eb61
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x44eb58
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + str.Please_Remove_Me]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x44eb68
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x198
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.CreateDirectoryW_should_always_succeed_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x19b
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test edi, edi
je 0x44ef40
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.should_not_create_existing_path_ret__u_err__lu_n
call fcn.0044df00
mov eax, dword [sym.imp.kernel32.dll_RemoveDirectoryW]
mov dword [esp], ebx
mov dword [ebp - 0x420], eax
call eax
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x19f
xor eax, eax
cmp edi, 1
sete al
mov dword [esp + 4], str.RemoveDirectoryW_should_always_succeed_n
mov dword [esp], eax
call fcn.0044df00
cmp word [ebp - 0x41c], 0
mov edx, ebx
je 0x44ec61
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x44ec58
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + 0x595728]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x44ec68
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1a3
mov eax, dword fs:[0x18]
mov edx, dword [eax + 0x34]
test edi, edi
jne 0x44ef30
xor eax, eax
cmp edx, 0x7b
mov ecx, str.False
sete al
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectoryW_with___wildcard_name_should_fail_with_error_183__ret_s_error_ld_n
call fcn.0044df00
mov dword [esp], ebx
mov eax, dword [ebp - 0x420]
call eax
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1a7
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.RemoveDirectoryW_should_have_failed_n
mov dword [esp], eax
call fcn.0044df00
cmp word [ebp - 0x41c], 0
je 0x44ef88
mov eax, ebx
nop
add eax, 2
cmp word [eax], 0
jne 0x44ed20
sub eax, ebx
sar eax, 1
sub eax, 1
mov edx, 0x2a
mov word [ebp + eax*2 - 0x41c], dx
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1ab
mov eax, dword fs:[0x18]
mov edx, dword [eax + 0x34]
test edi, edi
jne 0x44ef50
xor eax, eax
cmp edx, 0x7b
mov ecx, str.False
sete al
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectoryW_with__wildcard_name_should_fail_with_error_183__ret_s_error_ld_n
call fcn.0044df00
mov dword [esp], ebx
mov eax, dword [ebp - 0x420]
call eax
sub esp, 4
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1af
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.RemoveDirectoryW_should_have_failed_n
mov dword [esp], eax
call fcn.0044df00
mov dword [esp + 4], ebx
mov dword [esp], 0x104
mov eax, dword [ebp - 0x424]
call eax
mov edx, ebx
sub esp, 8
cmp word [ebp - 0x41c], 0
je 0x44ee01
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x44edf8
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + str.Please_Remove_Me]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x44ee08
cmp word [ebp - 0x41c], 0
mov edx, ebx
je 0x44ee39
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x44ee30
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + 0x595724]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x44ee40
cmp word [ebp - 0x41c], 0
mov edx, ebx
je 0x44ee69
nop
add edx, 2
cmp word [edx], 0
jne 0x44ee60
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [eax + str.Please_Remove_Me]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x44ee70
mov dword [esp + 4], 0
mov dword [esp], ebx
call esi
sub esp, 8
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1b6
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x44eebf
xor eax, eax
cmp ecx, 3
sete al
mov dword [esp + 0xc], ecx
mov dword [esp], eax
mov dword [esp + 8], esi
mov dword [esp + 4], str.CreateDirectoryW_with_multiple_nonexistent_directories_in_path_should_fail_ret__u_err__lu_n
call fcn.0044df00
mov dword [esp], ebx
mov eax, dword [ebp - 0x420]
call eax
sub esp, 4
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x1ba
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 4], str.RemoveDirectoryW_should_have_failed_n
mov dword [esp], eax
call fcn.0044df00
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x428]
call eax
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, str._True
xor eax, eax
jmp 0x44ecbd
xor eax, eax
cmp ecx, 0xb7
sete al
jmp 0x44ebef
mov ecx, str._True
xor eax, eax
jmp 0x44ed7f
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x179
mov eax, dword fs:[0x18]
mov edx, dword [eax + 0x34]
xor eax, eax
jmp 0x44e8ce
mov eax, 0xffffffff
jmp 0x44ed30
call fcn.0057d110
mov dword [eax], 0x594e33
mov dword [eax + 4], 0x176
mov dword [esp], str.CreateDirectoryW_is_not_available_n
call fcn.0044e730
jmp 0x44ef24