Function at 0x59cec8
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
xor eax, eax
mov al, byte [ebp + 8]
cmp eax, 5
ja case.default.0x59cee5
jmp dword [eax*4 + 0x59ceec]
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov dl, 1
mov eax, dword [0x64dec8]
call fcn.006515a0
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x59cf99
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x46]
sub al, 1
jb 0x59cf3d
je 0x59cf5e
dec al
je 0x59cf6e
jmp 0x59cf7c
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00561c54
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0xc]
call fcn.006286fc
jmp 0x59cf7c
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x59cf7c
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xc]
call fcn.006273fc
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59cfa3
mov eax, dword [ebp - 0xc]
call fcn.004028c0
jmp case.default.0x59cee5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x46], 0
jne 0x59cfd0
push 0
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_CopyFileW
jmp case.default.0x59cee5
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x46], 1
jne 0x59cff2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x38]
call fcn.00628898
mov ebx, eax
jmp 0x59d004
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0041e1bc
call fcn.00628898
mov ebx, eax
mov eax, dword [ebp - 8]
push eax
push ebx
call sub.gdi32.dll_CopyEnhMetaFileW
push eax
call sub.gdi32.dll_DeleteEnhMetaFile
push ebx
call sub.gdi32.dll_DeleteEnhMetaFile
jmp case.default.0x59cee5
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov dl, 1
mov eax, dword [0x64ddc0]
call fcn.00650168
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov byte [eax + 0x14], 0
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x46]
sub al, 1
jb 0x59d058
je 0x59d0a0
dec al
je 0x59d0e4
jmp 0x59d12b
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x1c]
mov eax, dword [ebp - 0x10]
call fcn.00650750
xor eax, eax
push ebp
push 0x59d089
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d093
mov eax, dword [ebp - 0x10]
call fcn.00650b2c
jmp 0x59d12b
xor eax, eax
push ebp
push 0x59d0d8
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x38]
call fcn.00628898
mov edx, eax
mov eax, dword [ebp - 0x10]
call fcn.00650750
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d12b
xor eax, eax
push ebp
push 0x59d121
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0041e1bc
call fcn.00628898
mov edx, eax
mov eax, dword [ebp - 0x10]
call fcn.00650750
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d12b
mov eax, dword [ebp - 0x10]
call fcn.004028c0
jmp case.default.0x59cee5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x46], 2
jne 0x59d158
push 0
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_CopyFileW
jmp case.default.0x59cee5
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov dl, 1
mov eax, dword [0x413ffc]
call fcn.00414448
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x59d1dc
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x46]
sub al, 1
jb 0x59d18d
je 0x59d1ae
jmp 0x59d1c7
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00561c54
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0x14]
call fcn.00628834
jmp 0x59d1c7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x38]
call fcn.006273fc
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 8]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d1e6
mov eax, dword [ebp - 0x14]
call fcn.004028c0
jmp case.default.0x59cee5
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov dl, 1
mov eax, dword [0x53e230]
call fcn.0053f854
mov dword [ebp - 0x18], eax
xor eax, eax
push ebp
push 0x59d2be
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x46]
sub al, 1
jb 0x59d22c
je 0x59d256
dec al
je 0x59d271
jmp 0x59d2a9
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00561c54
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x18]
call fcn.0053faac
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
pop ecx
call fcn.006286fc
jmp 0x59d2a9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x38]
call fcn.006273fc
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x59d2a9
mov dl, 1
mov eax, dword [0x41ef24]
call fcn.006515a0
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
call fcn.006273fc
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
call fcn.004028c0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d2c8
mov eax, dword [ebp - 0x18]
call fcn.004028c0
jmp case.default.0x59cee5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x46], 1
jne 0x59d2f5
push 0
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_CopyFileW
jmp case.default.0x59cee5
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov dl, 1
mov eax, dword [0x41ef24]
call fcn.006515a0
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0x59d378
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x46]
sub al, 1
jb 0x59d32c
dec al
je 0x59d34d
jmp 0x59d35b
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00561c54
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0x1c]
call fcn.006286fc
jmp 0x59d35b
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
call fcn.006273fc
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x59d382
mov eax, dword [ebp - 0x1c]
call fcn.004028c0
call fcn.0053a1b8
test al, al
je 0x59d39d
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.0055e4e0
mov edx, dword [0x672428]
mov edx, dword [edx + 0x2d8]
mov eax, dword [ebp - 8]
call fcn.0065ce44
test al, al
je 0x59d3c6
call fcn.00501d74
mov byte [eax + 0x281], 1
call fcn.00501d7c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4