Function at 0x47c881
Capabilities:
Copy file
Get file size

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x23
push 0
push 0
dec ecx
jne 0x47c6b4
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x47d8e3
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x1c]
call fcn.004764a4
mov edx, dword [ebp - 0x1c]
mov eax, 0x489cbc
call fcn.00404ae4
lea eax, [ebp - 0x20]
call fcn.0047650c
mov edx, dword [ebp - 0x20]
mov eax, 0x489cc0
call fcn.00404ae4
mov eax, 0x489cc4
mov ecx, 0x47d8fc
mov edx, dword [0x489cbc]
call fcn.00404da8
lea eax, [ebp - 0x28]
call fcn.0047c314
mov eax, dword [ebp - 0x28]
lea edx, [ebp - 0x24]
call fcn.004086e0
mov eax, dword [ebp - 0x24]
mov edx, 0x47d910
call fcn.00404eb8
je 0x47c754
call fcn.00478e84
test al, al
jne 0x47c754
push 0
mov eax, dword [0x4833a4]
mov eax, dword [eax]
push eax
mov eax, dword [0x483358]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_MessageBoxA_1
jmp 0x47d8b5
mov byte [0x489cd8], 0
lea eax, [ebp - 0x2c]
mov ecx, 0x47d920
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x2c]
call fcn.00409010
test al, al
je 0x47c77f
call fcn.0047bd60
lea eax, [ebp - 0x30]
mov ecx, 0x47d938
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x30]
call fcn.00409010
test al, al
je 0x47c93e
mov edx, dword [0x4835a4]
mov edx, dword [edx]
lea eax, [ebp - 0x34]
mov ecx, 0x47d954
call fcn.00404da8
mov eax, dword [ebp - 0x34]
call fcn.00409010
test al, al
jne 0x47c881
mov dl, 1
mov eax, dword [0x412dc8]
call fcn.00403b80
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x47c87a
push dword fs:[eax]
mov dword fs:[eax], esp
mov ecx, 0x47d938
lea eax, [ebp - 0x38]
mov edx, dword [0x489cbc]
call fcn.00404da8
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x68]
lea edx, [ebp - 0x3c]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov edx, dword [ebp - 0x3c]
mov eax, 0x47d96c
call fcn.0040506c
dec eax
jne 0x47c864
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 0x40]
push eax
mov ecx, 0x47d954
mov edx, dword [0x4835a4]
mov edx, dword [edx]
lea eax, [ebp - 0x44]
call fcn.00404da8
mov eax, dword [ebp - 0x44]
push eax
mov ecx, 0x47d938
mov edx, dword [0x483648]
mov edx, dword [edx]
lea eax, [ebp - 0x48]
call fcn.00404da8
mov eax, dword [ebp - 0x48]
pop edx
pop ecx
call fcn.0047709c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47c881
mov eax, dword [ebp - 0x10]
call fcn.00403bb0
ret
lea eax, [ebp - 0x4c]
push eax
mov ecx, 0x47d97c
mov edx, 0x47d988
mov eax, 0x47d988
call fcn.00476574
mov edx, dword [ebp - 0x4c]
mov eax, 0x489cd4
call fcn.00404ae4
mov eax, dword [0x489cd4]
mov edx, 0x47d97c
call fcn.00404eb8
je 0x47c93e
mov eax, dword [0x489cd4]
call fcn.00408ca0
mov ebx, eax
mov eax, 0x47d998
call fcn.00408ca0
cmp ebx, eax
jg 0x47c914
mov byte [0x489cd8], 1
mov eax, dword [0x489cd4]
mov edx, 0x47d9a8
call fcn.00404eb8
jne 0x47c93e
push dword [0x489cbc]
push 0x47d9b8
push 0x47d9d0
lea eax, [ebp - 0x50]
mov edx, 3
call fcn.00404e24
mov eax, dword [ebp - 0x50]
call fcn.0047c230
jmp 0x47c93e
push 0
mov eax, dword [0x4833a4]
mov eax, dword [eax]
push eax
mov eax, dword [0x4835c8]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_MessageBoxA_1
mov eax, dword [0x4835c0]
mov eax, dword [eax]
call fcn.0046000c
jmp 0x47d8b5
cmp byte [0x489cd8], 0
jne 0x47c980
mov eax, dword [0x483420]
cmp byte [eax], 0
je 0x47c980
mov eax, dword [0x483708]
mov eax, dword [eax]
mov edx, dword [eax]
call dword [edx + 0xfc]
mov eax, dword [0x4835c0]
mov eax, dword [eax]
cmp byte [eax + 0xa4], 0
jne 0x47d8b5
mov eax, dword [0x4835c0]
mov eax, dword [eax]
call fcn.0045fca0
lea eax, [ebp - 0x58]
push eax
call fcn.00478ce0
mov eax, dword [ebp - 0x58]
lea edx, [ebp - 0x54]
call fcn.004086e0
mov edx, dword [ebp - 0x54]
mov eax, 0x489cb8
call fcn.00404ae4
mov edx, dword [0x489cb8]
mov eax, 0x47d9e0
call fcn.0040506c
test eax, eax
jle 0x47c9c9
mov eax, 0x489cb8
mov edx, 0x47d9e0
call fcn.00404ae4
jmp 0x47ca83
mov edx, dword [0x489cb8]
mov eax, 0x47d9f0
call fcn.0040506c
test eax, eax
jle 0x47c9f1
mov eax, 0x489cb8
mov edx, 0x47d9f0
call fcn.00404ae4
jmp 0x47ca83
mov edx, dword [0x489cb8]
mov eax, 0x47d9fc
call fcn.0040506c
test eax, eax
jle 0x47ca16
mov eax, 0x489cb8
mov edx, 0x47d9fc
call fcn.00404ae4
jmp 0x47ca83
mov edx, dword [0x489cb8]
mov eax, 0x47da0c
call fcn.0040506c
test eax, eax
jle 0x47ca3b
mov eax, 0x489cb8
mov edx, 0x47da0c
call fcn.00404ae4
jmp 0x47ca83
mov edx, dword [0x489cb8]
mov eax, 0x47da1c
call fcn.0040506c
test eax, eax
jle 0x47ca60
mov eax, 0x489cb8
mov edx, 0x47da1c
call fcn.00404ae4
jmp 0x47ca83
mov edx, dword [0x489cb8]
mov eax, 0x47da2c
call fcn.0040506c
test eax, eax
jle 0x47ca83
mov eax, 0x489cb8
mov edx, 0x47da38
call fcn.00404ae4
mov edx, dword [0x489cb8]
mov eax, 0x47da48
call fcn.0040506c
test eax, eax
jle 0x47caa6
mov eax, 0x489cb8
mov edx, 0x47da54
call fcn.00404ae4
mov edx, dword [0x489cb8]
mov eax, 0x47da64
call fcn.0040506c
test eax, eax
jle 0x47cac9
mov eax, 0x489cb8
mov edx, 0x47da70
call fcn.00404ae4
mov eax, 0x47da80
call fcn.004784bc
mov eax, 0x47da94
call fcn.004784bc
mov eax, 0x47daac
call fcn.004784bc
push 0x47dab8
push 0
push 0
call fcn.00406da0
mov dword [ebp - 0xc], eax
push 0x12c
call sub.kernel32.dll_Sleep_1
push 0x47dac8
push 0
push 0
call fcn.00406da0
mov dword [ebp - 8], eax
xor edx, edx
push ebp
push 0x47d6c1
push dword fs:[edx]
mov dword fs:[edx], esp
xor eax, eax
push ebp
push 0x47cb3e
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00478f90
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x47cb70
call fcn.00478ed0
test al, al
jne 0x47ccaa
lea eax, [ebp - 0x5c]
mov ecx, 0x47dae0
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x5c]
call fcn.00404f20
push eax
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jbe 0x47cd8f
xor edx, edx
push ebp
push 0x47cca3
push dword fs:[edx]
mov dword fs:[edx], esp
push 0x47daec
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
test ebx, ebx
je 0x47cc8c
mov eax, ebx
xor edx, edx
push ebp
push 0x47cbef
push dword fs:[edx]
mov dword fs:[edx], esp
call eax
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x47cbfe
cmp ebx, 1
je 0x47cc48
cmp ebx, 2
je 0x47cc48
push 0
push 0x47daf4
lea edx, [ebp - 0x64]
mov eax, ebx
call fcn.00408b64
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x60]
mov edx, 0x47db04
call fcn.00404da8
mov eax, dword [ebp - 0x60]
call fcn.00404f20
push eax
push 0
call sub.user32.dll_MessageBoxA_1
call fcn.004044d0
call fcn.004044d0
jmp 0x47d8b5
cmp ebx, 2
jne 0x47cc8c
push 0
lea eax, [ebp - 0x68]
mov ecx, 0x47db24
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x68]
call fcn.00404f20
push eax
lea eax, [ebp - 0x6c]
mov ecx, 0x47db40
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x6c]
call fcn.00404f20
push eax
call sub.kernel32.dll_CopyFileA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47cd8f
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_FreeLibrary_1
ret
push dword [0x489cbc]
push 0x47db54
push 0x47db70
lea eax, [ebp - 0x70]
mov edx, 3
call fcn.00404e24
mov eax, dword [ebp - 0x70]
call fcn.0047c230
lea eax, [ebp - 0x74]
mov ecx, 0x47dae0
mov edx, dword [0x489cbc]
call fcn.00404da8
mov eax, dword [ebp - 0x74]
call fcn.00404f20
push eax
call sub.kernel32.dll_LoadLibraryA
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jbe 0x47cd8f
xor edx, edx
push ebp
push 0x47cd88
push dword fs:[edx]
mov dword fs:[edx], esp
push 0x47db78
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
test ebx, ebx
je 0x47cd71
mov eax, ebx
xor edx, edx
push ebp
push 0x47cd3d
push dword fs:[edx]
mov dword fs:[edx], esp
call eax
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x47cd4c
dec ebx
je 0x47cd71
push 0
push 0x47daf4
push 0x47db84
push 0
call sub.user32.dll_MessageBoxA_1
call fcn.004044d0
call fcn.004044d0
jmp 0x47d8b5
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47cd8f
mov eax, dword [ebp - 4]
push eax
call sub.kernel32.dll_FreeLibrary_1
ret
mov byte [ebp - 0x15], 0
call fcn.00478664
xor eax, eax
push ebp
push 0x47cdf1
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x47db9c
call fcn.00409010
test al, al
je 0x47cdda
xor edx, edx
mov eax, 0x47db9c
call fcn.00408f10
mov ebx, eax
push 0
push ebx
call sub.kernel32.dll_GetFileSize
test eax, eax
jne 0x47cdd2
mov byte [ebp - 0x15], 1
push ebx
call sub.kernel32.dll_CloseHandle
jmp 0x47cdde
mov byte [ebp - 0x15], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47cdf8
call fcn.004786f0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47d8ea
lea eax, [ebp - 0x118]
mov edx, 8
call fcn.00404ab4
lea eax, [ebp - 0xf4]
mov edx, 0x37
call fcn.00404ab4
ret