Function at 0x40f7a0
Capabilities:
Create directory
Delete directory

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x690
mov eax, dword [0x448004]
mov edx, dword [eax]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 0xc
mov ebx, eax
mov eax, 0x256
call fcn.00406da0
xor eax, eax
cmp ebx, 0x80004003
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [0x448004]
lea ecx, [ebp - 0x670]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 0xc
mov ebx, eax
mov eax, 0x259
call fcn.00406da0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
lea ebx, [ebp - 0x66c]
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [sym.imp.kernel32.dll_GetFullPathNameW]
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x104
mov dword [esp], 0x41be4a
mov dword [ebp - 0x67c], eax
call eax
mov eax, 0x25b
sub esp, 0x10
call fcn.00406da0
mov eax, ebx
shr eax, 0x10
mov dword [ebp - 0x680], eax
je 0x40ff60
mov dword [esp + 4], 0xffffffff
mov esi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40f8b2
mov eax, ebx
call fcn.00406dc0
mov esi, eax
mov edx, dword [ebp - 0x670]
test edx, edx
je 0x40ff83
mov eax, edx
shr eax, 0x10
je 0x40ff90
mov dword [esp], edx
mov dword [esp + 4], 0xffffffff
mov dword [ebp - 0x674], edx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, dword [ebp - 0x674]
sub esp, 8
test eax, eax
jne 0x40ffb0
mov eax, edx
call fcn.00406dc0
mov edx, dword [ebp - 0x670]
mov edi, eax
mov eax, dword [sym.imp.kernel32.dll_lstrcmpiW]
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [ebp - 0x674], eax
call eax
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], esi
movzx eax, al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.result___s__expected__s_n
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], eax
mov eax, dword [sym.imp.oleaut32.dll_SysFreeString]
mov dword [ebp - 0x678], eax
call eax
lea eax, [ebp - 0x25c]
sub esp, 4
mov dword [esp + 4], eax
mov dword [esp], str.test_di
call dword [sym.imp.kernel32.dll_FindFirstFileW]
sub esp, 8
mov esi, eax
cmp eax, 0xffffffff
je 0x40f9a0
mov eax, 0x260
call fcn.00406da0
mov dword [esp], str.GetAbsolutePathName_tests_n
call fcn.004072e0
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_FindClose]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [sym.imp.oleaut32.dll_SysAllocString]
mov dword [esp], str.test_dir
lea edi, [ebp - 0x670]
mov dword [ebp - 0x68c], eax
call eax
mov ecx, eax
mov dword [ebp - 0x684], eax
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 0xc
mov esi, eax
mov eax, 0x267
call fcn.00406da0
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
lea eax, [ebp - 0x464]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x104
mov dword [esp], str.test_dir
mov eax, dword [ebp - 0x67c]
call eax
mov eax, 0x269
sub esp, 0x10
call fcn.00406da0
lea eax, [ebp - 0x464]
shr eax, 0x10
je 0x4100a8
lea eax, [ebp - 0x464]
mov dword [esp + 4], 0xffffffff
mov edi, str._invalid_
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40fa79
lea eax, [ebp - 0x464]
call fcn.00406dc0
mov edi, eax
mov eax, dword [ebp - 0x670]
call fcn.00406fa0
mov esi, eax
mov eax, dword [ebp - 0x670]
mov dword [esp + 4], eax
lea eax, [ebp - 0x464]
mov dword [esp], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], edi
movzx eax, al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.result___s__expected__s_n
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], eax
mov eax, dword [ebp - 0x678]
call eax
mov eax, 0x26c
sub esp, 4
call fcn.00406da0
mov eax, str.test_dir1
mov ecx, eax
shr ecx, 0x10
je 0x410088
mov dword [esp + 4], 0xffffffff
mov esi, str._invalid_
mov dword [esp], str.test_dir1
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40fb1f
mov eax, str.test_dir1
call fcn.00406dc0
mov esi, eax
mov dword [esp + 4], 0
mov edi, dword [sym.imp.kernel32.dll_CreateDirectoryW]
mov dword [esp], str.test_dir1
call edi
sub esp, 8
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectory__s__failed_n
call fcn.004077c0
mov eax, dword [0x448004]
lea ecx, [ebp - 0x670]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov ecx, dword [ebp - 0x684]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dword [edx + 0x38]
sub esp, 0xc
mov esi, eax
mov eax, 0x26e
call fcn.00406da0
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x104
mov dword [esp], str.test_dir1
mov eax, dword [ebp - 0x67c]
call eax
mov eax, 0x270
sub esp, 0x10
call fcn.00406da0
mov ecx, dword [ebp - 0x680]
test ecx, ecx
je 0x410048
mov dword [esp + 4], 0xffffffff
mov esi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40fbfc
mov eax, ebx
call fcn.00406dc0
mov esi, eax
mov eax, dword [ebp - 0x670]
call fcn.00406fa0
mov dword [ebp - 0x688], eax
mov eax, dword [ebp - 0x670]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x674]
call eax
mov edx, eax
sub esp, 8
mov eax, 1
test edx, edx
jne 0x4100f8
mov dword [esp + 0xc], esi
mov ecx, dword [ebp - 0x688]
mov dword [esp], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], str.result___s__expected__s_n
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], eax
mov eax, dword [ebp - 0x678]
call eax
mov eax, 0x274
sub esp, 4
call fcn.00406da0
mov eax, str.test_dir2
mov ecx, eax
shr ecx, 0x10
je 0x4100d8
mov dword [esp + 4], 0xffffffff
mov esi, str._invalid_
mov dword [esp], str.test_dir2
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40fcad
mov eax, str.test_dir2
call fcn.00406dc0
mov esi, eax
mov dword [esp + 4], 0
mov dword [esp], str.test_dir2
call edi
sub esp, 8
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectory__s__failed_n
call fcn.004077c0
mov eax, dword [0x448004]
lea ecx, [ebp - 0x670]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov ecx, dword [ebp - 0x684]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dword [edx + 0x38]
sub esp, 0xc
mov esi, eax
mov eax, 0x276
call fcn.00406da0
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
test eax, eax
je 0x40fd62
mov eax, dword [ebp - 0x670]
mov dword [esp + 4], eax
lea eax, [ebp - 0x464]
mov dword [esp], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
test eax, eax
jne 0x40ffc0
mov eax, 0x278
call fcn.00406da0
mov edx, dword [ebp - 0x680]
test edx, edx
je 0x410130
mov dword [esp + 4], 0xffffffff
mov edi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40fda0
mov eax, ebx
call fcn.00406dc0
mov edi, eax
mov eax, dword [ebp - 0x670]
call fcn.00406fa0
mov esi, eax
mov eax, dword [ebp - 0x670]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x674]
call eax
mov edx, eax
sub esp, 8
mov eax, 1
test edx, edx
jne 0x410150
mov dword [esp + 0xc], edi
mov dword [esp + 8], esi
mov dword [esp + 4], str.result___s__expected__s_n
mov dword [esp], eax
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], eax
mov edi, dword [ebp - 0x678]
call edi
mov eax, dword [ebp - 0x684]
sub esp, 4
mov dword [esp], eax
call edi
sub esp, 4
mov dword [esp], str.test_di
mov eax, dword [ebp - 0x68c]
call eax
lea ecx, [ebp - 0x670]
mov esi, eax
mov eax, dword [0x448004]
sub esp, 4
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 0xc
mov edi, eax
mov eax, 0x284
call fcn.00406da0
xor eax, eax
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.Unexpected_hr__lx._n
mov dword [esp], eax
call fcn.004077c0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x104
mov dword [esp], str.test_di
mov eax, dword [ebp - 0x67c]
call eax
mov eax, 0x286
sub esp, 0x10
call fcn.00406da0
mov eax, dword [ebp - 0x680]
test eax, eax
je 0x410068
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x40fecb
mov eax, ebx
call fcn.00406dc0
mov edx, eax
mov eax, dword [ebp - 0x670]
mov dword [ebp - 0x67c], edx
call fcn.00406fa0
mov edi, eax
mov eax, dword [ebp - 0x670]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x674]
call eax
mov edx, dword [ebp - 0x67c]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], edx
movzx eax, al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.result___s__expected__s_n
call fcn.004077c0
mov eax, dword [ebp - 0x670]
mov dword [esp], eax
mov edi, dword [ebp - 0x678]
call edi
sub esp, 4
mov dword [esp], esi
call edi
mov ebx, dword [sym.imp.kernel32.dll_RemoveDirectoryW]
sub esp, 4
mov dword [esp], str.test_dir1
call ebx
sub esp, 4
mov dword [esp], str.test_dir2
call ebx
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov edx, dword [ebp - 0x670]
mov esi, eax
test edx, edx
jne 0x40f8c0
mov edi, str._null_
jmp 0x40f902
movzx edx, dx
mov dword [esp], str._04x
mov dword [esp + 4], edx
call fcn.00406a40
mov edx, dword [ebp - 0x670]
mov edi, eax
jmp 0x40f902
mov edx, dword [ebp - 0x670]
mov edi, str._invalid_
jmp 0x40f902
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x104
mov dword [esp], str.test_dir2
mov eax, dword [ebp - 0x67c]
call eax
mov eax, 0x27c
sub esp, 0x10
call fcn.00406da0
mov eax, ebx
call fcn.00406fa0
mov edi, eax
mov eax, dword [ebp - 0x670]
call fcn.00406fa0
mov esi, eax
mov eax, dword [ebp - 0x670]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], edi
movzx eax, al
mov dword [esp + 8], esi
mov dword [esp + 4], str.result___s__expected__s_n
mov dword [esp], eax
call fcn.004077c0
jmp 0x40fdec
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov esi, eax
jmp 0x40fbfc
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov edx, eax
jmp 0x40fecb
movzx eax, ax
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov esi, eax
jmp 0x40fb1f
lea eax, [ebp - 0x464]
mov dword [ebp - 0x688], eax
movzx eax, word [ebp - 0x688]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov edi, eax
jmp 0x40fa79
movzx eax, ax
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov esi, eax
jmp 0x40fcad
mov eax, dword [ebp - 0x670]
mov dword [esp + 4], eax
lea eax, [ebp - 0x464]
mov dword [esp], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
or eax, dword [0x448050]
sete al
movzx eax, al
jmp 0x40fc34
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00406a40
mov edi, eax
jmp 0x40fda0
mov eax, dword [ebp - 0x670]
mov dword [esp + 4], eax
lea eax, [ebp - 0x464]
mov dword [esp], eax
mov eax, dword [ebp - 0x674]
call eax
sub esp, 8
or eax, dword [0x448050]
sete al
movzx eax, al
jmp 0x40fdd4