Function at 0x59603c
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, 6
ja case.default.0x596059
jmp dword [eax*4 + 0x596060]
mov eax, dword [ebp - 4]
call fcn.00558648
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x5960b2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
call fcn.0061d6c0
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 0x5960bc
mov eax, dword [ebp - 0xc]
call fcn.004028c0
jmp case.default.0x596059
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x5960e9
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.0x596059
mov eax, dword [ebp - 4]
call fcn.0055860c
call fcn.0061eaec
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.0x596059
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00558398
mov dl, 1
mov eax, dword [0x647300]
call fcn.006496a0
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov byte [eax + 0x14], 0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x596144
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x1c]
jmp 0x596153
mov eax, dword [ebp - 4]
call fcn.0055860c
call fcn.0061eaec
mov ebx, eax
xor eax, eax
push ebp
push 0x596180
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, ebx
mov eax, dword [ebp - 0x10]
call fcn.00649c88
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 0x59618a
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x59619b
mov eax, dword [ebp - 0x10]
call fcn.0064a064
mov eax, dword [ebp - 0x10]
call fcn.004028c0
jmp case.default.0x596059
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 2
jne 0x5961c8
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.0x596059
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00558398
call fcn.00413cfc
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x59624d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x596212
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.0055b974
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0x14]
call fcn.0061ea90
jmp 0x596238
mov eax, dword [ebp - 4]
call fcn.00558648
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
call fcn.0061d6c0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xc]
call fcn.004028c0
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 0x596257
mov eax, dword [ebp - 0x14]
call fcn.004028c0
jmp case.default.0x596059
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00558398
mov dl, 1
mov eax, dword [0x538e80]
call fcn.0053a460
mov dword [ebp - 0x18], eax
xor eax, eax
push ebp
push 0x5962f9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x5962be
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.0055b974
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x18]
call fcn.0053a6b8
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
pop ecx
call fcn.0061e960
jmp 0x5962e4
mov eax, dword [ebp - 4]
call fcn.00558648
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
call fcn.0061d6c0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xc]
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 0x596303
mov eax, dword [ebp - 0x18]
call fcn.004028c0
jmp case.default.0x596059
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 1
jne 0x596330
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.0x596059
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00558398
call fcn.0041e8b0
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0x5963a9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
jne 0x59637a
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.0055b974
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0x1c]
call fcn.0061e960
jmp 0x59638c
mov eax, dword [ebp - 4]
call fcn.0055869c
mov edx, eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
call fcn.0061d6c0
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 0x5963b3
mov eax, dword [ebp - 0x1c]
call fcn.004028c0
jmp case.default.0x596059
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 3
jne case.default.0x596059
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
call fcn.00534a14
test al, al
je 0x5963eb
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00558398
mov edx, dword [0x669700]
mov edx, dword [edx + 4]
mov eax, dword [ebp - 8]
call fcn.00654750
test al, al
je 0x59640e
mov eax, dword [0x669510]
mov byte [eax + 0x11], 1
call fcn.004fe3f4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4