Function at 0x4f2d60
Capabilities:
Create directory
Delete file
Get common file path
Get disk information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x335]
push ebx
mov ebx, edx
sub esp, 0x46c
mov byte [ecx], 0x40
mov dword [ebp - 0x440], eax
mov dword [ebp - 0x44c], edx
mov dword [ebp - 0x45c], ecx
mov byte [edx], 0x40
mov dword [esp + 4], edi
mov dword [esp], 0x104
call dword [sym.imp.kernel32.dll_GetCurrentDirectoryA]
sub esp, 8
test eax, eax
je 0x4f3850
movzx eax, byte [ebp - 0x335]
mov byte [ebx], al
lea eax, [ebp - 0x439]
mov esi, dword [sym.imp.kernel32.dll_GetTempPathA]
mov dword [esp], 0x104
mov dword [esp + 4], eax
call esi
sub esp, 8
mov ebx, eax
mov eax, 0x15c
call fcn.004e7d80
lea eax, [ebx - 1]
mov dword [esp + 4], str.GetTempPathA_failed_n
cmp eax, 0x102
setbe al
movzx eax, al
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x15d
call fcn.004e7d80
lea eax, [ebp - 0x439]
mov dword [esp], eax
mov eax, dword [sym.imp.msvcrt.dll_strlen]
mov dword [ebp - 0x450], eax
call eax
mov dword [esp + 4], str.GetTempPathA_returned_a_path_that_did_not_end_in__n
cmp byte [ebp + eax - 0x43a], 0x5c
sete al
movzx eax, al
mov dword [esp], eax
call fcn.004e88d0
mov byte [ebp - 0x32d], 0
mov dword [ebp - 0x335], 0x61616161
mov dword [ebp - 0x331], 0x61616161
mov dword [esp], ebx
add ebx, 1
mov dword [esp + 4], edi
call esi
sub esp, 8
mov esi, eax
mov eax, 0x161
call fcn.004e7d80
xor eax, eax
cmp ebx, esi
mov dword [esp + 0xc], esi
sete al
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], str.GetTempPathA_should_return_string_length__ld_instead_of__ld_n
call fcn.004e88d0
mov eax, 0x164
call fcn.004e7d80
lea edx, [ebp - 0x439]
mov ecx, dword [ebp - 0x440]
mov dword [esp + 8], 0
mov dword [esp], edx
mov edx, dword [sym.imp.kernel32.dll_GetTempFileNameA]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], 0x5e9cf1
mov dword [ebp - 0x444], edx
call edx
sub esp, 0x10
mov ebx, eax
mov dword [esp], eax
movzx esi, bx
mov dword [esp + 4], str.GetTempFileNameA_failed_n
call fcn.004e88d0
mov dword [esp + 8], esi
mov dword [esp + 4], str.pat_.4x.tmp
mov dword [esp], edi
call fcn.004e7b60
mov dword [esp + 8], esi
lea esi, [ebp - 0x231]
mov dword [esp + 4], str.pat_x.tmp
mov dword [esp], esi
call fcn.004e7b60
mov eax, 0x167
call fcn.004e7d80
lea edx, [ebp - 0x439]
mov dword [esp], edx
mov eax, dword [ebp - 0x450]
call eax
mov dword [esp + 4], edi
mov ecx, dword [ebp - 0x440]
add eax, ecx
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_lstrcmpiA]
mov dword [ebp - 0x454], eax
call eax
mov edx, eax
sub esp, 8
mov eax, 1
test edx, edx
jne 0x4f3810
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], edi
mov ebx, dword [ebp - 0x440]
mov dword [esp], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], str.GetTempFileNameA_returned__s_which_doesnt_match__s_or__s._id_x_n
call fcn.004e88d0
mov eax, 0x16b
call fcn.004e7d80
mov eax, dword [sym.imp.kernel32.dll_DeleteFileA]
mov dword [esp], ebx
mov dword [ebp - 0x448], eax
call eax
sub esp, 4
mov dword [esp], eax
mov dword [esp + 4], str.Couldnt_delete_the_temporary_file_we_just_created_n
call fcn.004e88d0
lea eax, [ebp - 0x439]
mov dword [ebp - 0x440], ebx
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
sub esp, 0x10
movzx edx, ax
mov ebx, eax
mov dword [esp + 8], edx
mov dword [ebp - 0x458], edx
mov dword [esp + 4], str._.4x.tmp
mov dword [esp], edi
call fcn.004e7b60
mov edx, dword [ebp - 0x458]
mov dword [esp], esi
mov dword [esp + 4], str._x.tmp
mov dword [esp + 8], edx
call fcn.004e7b60
mov eax, 0x170
call fcn.004e7d80
lea eax, [ebp - 0x439]
mov dword [esp], eax
mov eax, dword [ebp - 0x450]
call eax
mov dword [esp + 4], edi
mov ecx, dword [ebp - 0x440]
add eax, ecx
mov dword [esp], eax
mov eax, dword [ebp - 0x454]
call eax
mov edx, eax
sub esp, 8
mov eax, 1
test edx, edx
jne 0x4f37d0
mov dword [esp + 0x14], ebx
xor ebx, ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], edi
mov esi, dword [ebp - 0x440]
mov dword [esp], eax
mov dword [esp + 8], esi
mov dword [esp + 4], str.GetTempFileNameA_returned__s_which_doesnt_match__s_or__s._id_x_n
call fcn.004e88d0
mov eax, 0x174
call fcn.004e7d80
mov dword [esp], esi
mov eax, dword [ebp - 0x448]
call eax
sub esp, 4
mov dword [esp + 4], str.Couldnt_delete_the_temporary_file_we_just_created_n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.004e88d0
lea eax, [ebp - 0x439]
mov dword [esp + 0xc], str.non_existent_dir_1jwj3y32nb3
mov dword [esp + 8], eax
lea eax, [ebp - 0x12d]
mov dword [esp + 4], 0x5e83f6
mov dword [esp], eax
call fcn.004e7b60
mov dword [esi + 0x34], 0xdeadbeef
call fcn.0057d110
lea ecx, [ebp - 0x12d]
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x17a
mov eax, dword [ebp - 0x440]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x5e9dd1
mov dword [esp], ecx
mov ecx, dword [ebp - 0x444]
call ecx
sub esp, 0x10
test eax, eax
sete al
mov dword [esp + 4], str.GetTempFileNameA_should_have_failed_n
movzx eax, al
mov dword [esp], eax
call fcn.004e88d0
call fcn.0057d110
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x17b
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.got__lu__expected_ERROR_DIRECTORY_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x10b
sete al
mov dword [esp], eax
call fcn.004e88d0
test ebx, ebx
jne 0x4f3170
mov ebx, 1
jmp 0x4f30a9
call fcn.0057d110
lea edx, [ebp - 0x439]
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x17f
mov eax, dword [ebp - 0x440]
mov dword [esp], edx
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x5e9dd1
mov ecx, dword [ebp - 0x444]
call ecx
sub esp, 0x10
cmp eax, ebx
sete al
mov dword [esp + 4], str.GetTempFileNameA_unexpectedly_failed_n
movzx eax, al
mov dword [esp], eax
call fcn.004e88d0
call fcn.0057d110
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x181
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
mov eax, dword [ebp - 0x448]
call eax
mov edx, eax
sub esp, 4
xor eax, eax
test edx, edx
jne 0x4f31fb
xor eax, eax
cmp dword [esi + 0x34], 2
sete al
mov dword [esp + 4], str.Deleted_a_file_that_shouldnt_exist__n
mov dword [esp], eax
call fcn.004e88d0
cmp ebx, 2
jne 0x4f37a0
call dword [sym.imp.kernel32.dll_GetLogicalDrives]
mov ecx, dword [ebp - 0x440]
movsx edx, byte [ecx]
mov ecx, dword [ebp - 0x44c]
movzx ecx, byte [ecx]
sub edx, 0x41
btr eax, edx
cmp cl, 0x40
je 0x4f3245
sub ecx, 0x41
mov edx, 1
shl edx, cl
not edx
and eax, edx
test eax, eax
je 0x4f37b0
mov edx, 0x42
test al, 1
jne 0x4f3870
lea esi, [esi]
shr eax, 1
mov ecx, edx
add edx, 1
test al, 1
je 0x4f3260
mov eax, dword [ebp - 0x45c]
mov byte [eax], cl
mov eax, 0x193
call fcn.004e7d80
mov esi, dword [ebp - 0x440]
lea eax, [ebp - 0x439]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x5e9cf1
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
sub esp, 0x10
mov dword [esp], eax
mov dword [esp + 4], str.GetTempFileNameA_failed_n
call fcn.004e88d0
mov eax, 0x194
call fcn.004e7d80
mov ebx, dword [sym.imp.kernel32.dll_CreateDirectoryA]
mov dword [esp], esi
mov dword [esp + 4], 0
call ebx
sub esp, 8
test eax, eax
sete al
mov dword [esp + 4], str.CreateDirectoryA_succeeded_even_though_a_file_of_the_same_name_exists_n
movzx eax, al
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x196
call fcn.004e7d80
mov dword [esp], esi
mov eax, dword [ebp - 0x448]
call eax
sub esp, 4
mov dword [esp], eax
mov dword [esp + 4], str.Couldnt_delete_the_temporary_file_we_just_created_n
call fcn.004e88d0
mov eax, 0x197
call fcn.004e7d80
mov dword [esp], esi
mov dword [esp + 4], 0
call ebx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectoryA_failed_n
call fcn.004e88d0
mov dword [esp + 8], esi
mov dword [esp + 0xc], str.shortdir
mov dword [esp + 4], 0x5e83f6
mov dword [esp], edi
call fcn.004e7b60
mov eax, 0x19c
call fcn.004e7d80
mov dword [esp + 4], 0
mov dword [esp], edi
call ebx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectoryA_failed_n
call fcn.004e88d0
mov dword [esp + 8], esi
mov dword [esp + 0xc], str.Long_Directory
mov dword [esp + 4], 0x5e83f6
mov dword [esp], edi
call fcn.004e7b60
mov eax, 0x19e
call fcn.004e7d80
mov dword [esp + 4], 0
mov dword [esp], edi
call ebx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], str.CreateDirectoryA_failed_n
call fcn.004e88d0
mov eax, dword [ebp - 0x44c]
movsx eax, byte [eax]
mov dword [esp + 4], 0x5e8d7c
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.004e7b60
mov dword [esp + 4], 0
mov dword [esp], edi
call ebx
sub esp, 8
mov esi, eax
mov eax, 0x1a1
call fcn.004e7d80
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x4f342f
mov eax, 1
cmp ecx, 5
je 0x4f342f
xor eax, eax
cmp ecx, 0xb7
sete al
mov dword [esp + 0xc], ecx
mov dword [esp], eax
mov dword [esp + 8], edi
mov dword [esp + 4], str.CreateDirectoryA___s__should_have_failed___ld__n
call fcn.004e88d0
mov eax, dword [ebp - 0x44c]
movsx eax, byte [eax]
mov dword [esp + 4], str._c:_
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.004e7b60
mov dword [esp + 4], 0
mov dword [esp], edi
call ebx
sub esp, 8
mov ebx, eax
mov eax, 0x1a6
call fcn.004e7d80
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test ebx, ebx
jne 0x4f34a5
mov eax, 1
cmp ecx, 5
je 0x4f34a5
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.CreateDirectoryA___s__should_have_failed___ld__n
call fcn.004e88d0
mov dword [esp + 0x10], str.pathtest.pth
mov dword [esp + 0xc], str.shortdir
mov eax, dword [ebp - 0x440]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._s_s_s
call fcn.004e7b60
mov esi, dword [sym.imp.kernel32.dll_CreateFileA]
mov dword [esp], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
call esi
sub esp, 0x1c
mov ebx, eax
mov eax, 0x1ac
call fcn.004e7d80
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], 0x5e9f4c
setne al
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x1ad
call fcn.004e7d80
mov dword [esp], ebx
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
call ebx
sub esp, 4
mov dword [esp], eax
mov dword [esp + 4], 0x5e9f60
call fcn.004e88d0
mov dword [esp + 0x10], str.Long_File_test.path
mov dword [esp + 0xc], str.shortdir
mov eax, dword [ebp - 0x440]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._s_s_s
call fcn.004e7b60
mov dword [esp], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
call esi
sub esp, 0x1c
mov dword [ebp - 0x444], eax
mov eax, 0x1b1
call fcn.004e7d80
mov dword [esp + 4], 0x5e9f4c
xor eax, eax
cmp dword [ebp - 0x444], 0xffffffff
setne al
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x1b2
call fcn.004e7d80
mov ecx, dword [ebp - 0x444]
mov dword [esp], ecx
call ebx
sub esp, 4
mov dword [esp], eax
mov dword [esp + 4], 0x5e9f60
call fcn.004e88d0
mov dword [esp + 0x10], str.pathtest.pth
mov dword [esp + 0xc], str.Long_Directory
mov eax, dword [ebp - 0x440]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._s_s_s
call fcn.004e7b60
mov dword [esp], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
call esi
sub esp, 0x1c
mov dword [ebp - 0x444], eax
call fcn.0057d110
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x1b6
xor eax, eax
mov dword [esp + 4], 0x5e9f4c
cmp dword [ebp - 0x444], 0xffffffff
setne al
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x1b7
call fcn.004e7d80
mov ecx, dword [ebp - 0x444]
mov dword [esp], ecx
call ebx
sub esp, 4
mov dword [esp], eax
mov dword [esp + 4], 0x5e9f60
call fcn.004e88d0
mov dword [esp + 0x10], str.Long_File_test.path
mov dword [esp + 0xc], str.Long_Directory
mov eax, dword [ebp - 0x440]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._s_s_s
call fcn.004e7b60
mov dword [esp], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
call esi
sub esp, 0x1c
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x5e82d4
mov dword [eax + 4], 0x1bb
xor eax, eax
cmp esi, 0xffffffff
setne al
mov dword [esp + 4], 0x5e9f4c
mov dword [esp], eax
call fcn.004e88d0
mov eax, 0x1bc
call fcn.004e7d80
mov dword [esp], esi
call ebx
sub esp, 4
mov dword [esp + 4], 0x5e9f60
mov dword [esp], eax
call fcn.004e88d0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, 2
jmp 0x4f30a9
mov eax, 0x18c
call fcn.004e7d80
mov dword [esp], str.Could_not_find_alternative_drive__some_tests_will_not_be_conducted._n
call fcn.004e8340
jmp 0x4f3273
lea eax, [ebp - 0x439]
mov dword [esp], eax
mov eax, dword [ebp - 0x450]
call eax
mov dword [esp + 4], esi
mov ecx, dword [ebp - 0x440]
add eax, ecx
mov dword [esp], eax
mov eax, dword [ebp - 0x454]
call eax
sub esp, 8
test eax, eax
sete al
movzx eax, al
jmp 0x4f3052
lea eax, [ebp - 0x439]
mov dword [esp], eax
mov eax, dword [ebp - 0x450]
call eax
mov dword [esp + 4], esi
mov ecx, dword [ebp - 0x440]
add eax, ecx
mov dword [esp], eax
mov eax, dword [ebp - 0x454]
call eax
sub esp, 8
test eax, eax
sete al
movzx eax, al
jmp 0x4f2f54
mov eax, 0x158
call fcn.004e7d80
mov dword [esp], str.Unable_to_discover_current_drive__some_tests_will_not_be_conducted._n
call fcn.004e8340
jmp 0x4f2db1
mov eax, dword [ebp - 0x45c]
mov byte [eax], 0x41
jmp 0x4f3273