Function at 0x4c7a45f0
Capabilities:
Copy file
Get disk information
Get file size
Read file on windows
Read file via mapping

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x428
push esi
push edi
xor esi, esi
push 0x206
lea eax, [ebp - 0x226]
push esi
push eax
mov dword [ebp - 0x1c], esi
mov word [ebp - 0x228], si
call sub.msvcrt.dll_memset
mov edi, dword [ebp + 0xc]
add esp, 0xc
lea ecx, [ebp - 0x14]
push ecx
push edi
mov dword [ebp - 4], 1
mov dword [ebp - 0x14], esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0x10
jbe 0x4c7a4656
cmp dword [ebp - 0x14], esi
jne 0x4c7a4656
push esi
push esi
push esi
push 2
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov edi, eax
cmp edi, esi
mov dword [ebp - 0x18], edi
jne 0x4c7a467e
push 0x726
push 0x4c782808
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
pop edi
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret 0x10
push 0x270
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
cmp eax, esi
mov dword [ebp - 8], eax
jne 0x4c7a46cb
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x4c7a46bd
push 0x730
push 0x4c782808
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
push 0x734
push 0x4c782808
call edi
jmp 0x4c7a4666
push esi
push esi
push esi
push 4
push edi
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
cmp eax, esi
je 0x4c7a46e5
add eax, 0x10
cmp eax, esi
mov dword [ebp - 0x20], eax
jne 0x4c7a470b
push 0x73d
push 0x4c782808
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
jmp 0x4c7a4ab1
mov edx, dword [ebp + 0x10]
lea esi, [eax + edx]
push ebx
mov ebx, eax
mov dword [ebp + 0xc], esi
jmp 0x4c7a4720
movzx eax, byte [ebx]
add eax, 0xffffffff
cmp eax, 0xfe
ja case.0x4c7a4738.5
movzx eax, byte [eax + 0x4c7a4b08]
jmp dword [eax*4 + 0x4c7a4af0]
mov eax, dword [ebp + 8]
add ebx, 1
push ebx
add eax, 0x234
push eax
lea ecx, [ebp - 0x228]
push ecx
call fcn.4c7a3800
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x4c7a477f
push 0x74c
push 0x4c782808
mov dword [ebp - 4], eax
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
push 0
push 0x100
push 3
push 0
push 3
push 0x80000000
lea edx, [ebp - 0x228]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x4c7a47cb
push 0x754
push 0x4c782808
mov dword [ebp - 4], 0
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
jmp 0x4c7a497c
mov ecx, dword [ebp - 8]
push 0
lea eax, [ebp - 0x1c]
push eax
push 0x270
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4c7a4802
push 0x75c
push 0x4c782808
mov dword [ebp - 4], eax
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4c7a4827
push 0x761
push 0x4c782808
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 8]
test eax, 0x100000
jne 0x4c7a497c
or eax, 0x100000
mov dword [ecx + 8], eax
mov eax, dword [ebp - 8]
mov edx, dword [eax + 4]
mov dword [ecx + 0x4108], edx
lea edi, [ecx + 0x3ef4]
lea esi, [eax + 8]
mov eax, dword [ebp + 8]
cmp dword [eax + 0x4108], 0
mov ecx, 0x84
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
je 0x4c7a497c
xor esi, esi
push 0x1fe
lea ecx, [ebp - 0x426]
push esi
push ecx
mov word [ebp - 0x10], si
mov dword [ebp - 0xe], esi
mov word [ebp - 0x428], si
call sub.msvcrt.dll_memset
mov edi, dword [ebp - 8]
push esi
push esi
lea edx, [ebp - 0x428]
push edx
lea eax, [ebp - 0x10]
push eax
add edi, 0xc
push edi
call dword [sym.imp.msvcrt.dll__wsplitpath]
add esp, 0x20
lea ecx, [ebp - 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 4
je 0x4c7a48e5
cmp word [ebp - 0x10], si
jne 0x4c7a497c
mov eax, 0x5c
cmp word [ebp - 0x428], ax
jne 0x4c7a497c
cmp word [ebp - 0x426], ax
jne 0x4c7a497c
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x228]
push edx
push esi
push 0x4c782800
add eax, 0x234
push eax
call fcn.4c7c85e0
test eax, eax
je 0x4c7a497c
push 0x774
push 0x4c782808
lea eax, [ebp - 0x228]
push eax
push 0x4c7827d8
call fcn.4c7c02b0
mov esi, dword [ebp + 8]
add esp, 0x10
lea ecx, [ebp - 0x228]
push ecx
add esi, 0x3ef8
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
test eax, eax
jne 0x4c7a495b
push 0x779
push 0x4c782808
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
mov eax, dword [ebp + 8]
or dword [eax + 8], 0x800
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4c7a497c
mov edx, dword [ebp + 8]
mov dword [edx + 0x4108], eax
mov esi, dword [ebp + 0xc]
nop
add ebx, 1
cmp byte [ebx], 0xff
je 0x4c7a4a7a
cmp ebx, esi
jb case.0x4c7a4738.2
jmp 0x4c7a4a82
add ebx, 1
jmp 0x4c7a4a7a
add ebx, 5
jmp 0x4c7a4a7a
mov eax, dword [ebp + 8]
add ebx, 1
push ebx
add eax, 0x234
push eax
lea ecx, [ebp - 0x228]
push ecx
call fcn.4c7a3800
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x4c7a49e5
push 0x79d
push 0x4c782808
mov dword [ebp - 4], eax
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
push 0
push 0x100
push 3
push 0
push 3
push 0x80000000
lea edx, [ebp - 0x228]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
jne 0x4c7a4a17
mov dword [ebp - 4], 0
push 0x7a5
jmp 0x4c7a4a27
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4c7a4a3c
push 0x7ac
push 0x4c782808
call edi
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
cmp ebx, esi
jae 0x4c7a4a4d
cmp word [ebx], 0
je 0x4c7a4a4d
add ebx, 2
cmp ebx, esi
jb 0x4c7a4a40
add ebx, 2
jmp 0x4c7a4a7a
push 0x7bb
push 0x4c782808
add ebx, 1
mov dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
cmp ebx, esi
jb 0x4c7a4720
mov eax, dword [ebp - 0x20]
push eax
call fcn.4c7a3ba0
test eax, eax
pop ebx
jne 0x4c7a4aae
push 0x7c3
push 0x4c782808
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
mov edi, dword [ebp - 0x18]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4c7a4ada
push 0x7c9
push 0x4c782808
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c78142c
call fcn.4c7c02b0
add esp, 0x10
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, dword [ebp - 4]
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x10