Function at 0x403c40
Capabilities:
Copy file
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x408558
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x20c
push ebp
push esi
push edi
mov dword [esp + 0xc], ecx
push 0x3e8
mov dword [esp + 0x224], 0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x228]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov dword [esp + 0x14], eax
mov esi, 0x40ddd4
mov eax, 0x40ced0
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403cb8
test cl, cl
je 0x403cb4
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403cb8
add eax, 2
add esi, 2
test cl, cl
jne 0x403c94
xor eax, eax
jmp 0x403cbd
sbb eax, eax
sbb eax, 0xffffffff
mov edi, dword [sym.imp.MSVCRT.dll_sprintf]
mov ebp, dword [sym.imp.MSVCRT.dll_fopen]
test eax, eax
jne 0x403dae
mov eax, dword [esp + 0x14]
sub eax, 2
je 0x403cf8
lea ecx, [esp + 0x228]
mov dword [esp + 0x220], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x403f71
mov eax, dword [esp + 0x228]
push 0x40d1d4
push eax
lea ecx, [esp + 0x20]
push 0x40b5ac
push ecx
call edi
lea edx, [esp + 0x28]
push 0x40b1f0
push edx
call ebp
add esp, 0x18
test eax, eax
je 0x403d67
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
mov eax, dword [0x40c3a0]
add esp, 4
inc eax
cmp eax, 0x3c
mov dword [0x40c3a0], eax
jne 0x403dae
push ecx
lea eax, [esp + 0x22c]
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
mov dword [0x40c3a0], 0
call sub.MFC42.DLL_CString::CString_2
mov ecx, dword [esp + 0x10]
call fcn.00403f90
jmp 0x403dae
push ecx
lea edx, [esp + 0x22c]
mov ecx, esp
mov dword [esp + 0x14], esp
push edx
call sub.MFC42.DLL_CString::CString_2
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.00403f90
lea eax, [esp + 0x18]
push 0
push eax
push 0x40d5d4
mov dword [0x40c3a0], 0
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call fcn.00402800
mov esi, 0x4103d4
mov eax, 0x40ced0
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403ddc
test cl, cl
je 0x403dd8
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403ddc
add eax, 2
add esi, 2
test cl, cl
jne 0x403db8
xor eax, eax
jmp 0x403de1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403e85
cmp dword [esp + 0x14], 3
je 0x403e0e
lea ecx, [esp + 0x228]
mov dword [esp + 0x220], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x403f71
mov eax, dword [esp + 0x228]
push 0x40d1d4
push eax
lea ecx, [esp + 0x20]
push 0x40b5ac
push ecx
call edi
lea edx, [esp + 0x28]
push 0x40b1f0
push edx
call ebp
add esp, 0x18
test eax, eax
je 0x403e46
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
jmp 0x403e85
push ecx
lea eax, [esp + 0x22c]
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call sub.MFC42.DLL_CString::CString_2
mov ecx, dword [esp + 0x10]
call fcn.00403f90
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x18]
push 0
push ecx
push 0x40d5d4
call esi
push 0
push 0x40e5d4
push 0x40d5d4
call esi
mov esi, 0x40dfd4
mov eax, 0x40ced0
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403eb3
test cl, cl
je 0x403eaf
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403eb3
add eax, 2
add esi, 2
test cl, cl
jne 0x403e8f
xor eax, eax
jmp 0x403eb8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403f55
cmp dword [esp + 0x14], 4
je 0x403ee5
lea ecx, [esp + 0x228]
mov dword [esp + 0x220], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x403f71
mov eax, dword [esp + 0x228]
push 0x40d1d4
push eax
lea ecx, [esp + 0x120]
push 0x40b5ac
push ecx
call edi
lea edx, [esp + 0x128]
push 0x40b1f0
push edx
call ebp
add esp, 0x18
test eax, eax
je 0x403f23
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
jmp 0x403f55
push ecx
lea eax, [esp + 0x22c]
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call sub.MFC42.DLL_CString::CString_2
mov ecx, dword [esp + 0x10]
call fcn.00403f90
lea ecx, [esp + 0x118]
push 0
push ecx
push 0x40d5d4
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x228]
mov dword [esp + 0x220], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
mov ecx, dword [esp + 0x218]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebp
add esp, 0x218
ret 4