Function at 0x449320
Capabilities:
Copy file

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov word [rsp + 8], cx
sub rsp, 0x108
mov qword [rsp + 0xd0], 0xfffffffffffffffe
mov rax, qword [0x006835c0]
xor rax, rsp
mov qword [rsp + 0xf0], rax
mov rax, qword [rsp + 0x118]
cmp dword [rax], 0
jne 0x44966e
mov rax, qword [rsp + 0x120]
cmp dword [rax], 0
jne 0x44938a
mov edx, 0x2b9
lea rcx, [0x005b8e78]
call fcn.00422700
test eax, eax
je 0x44938a
int3
mov rax, qword [rsp + 0x120]
mov eax, dword [rax]
mov dword [rsp + 0xd8], eax
mov eax, dword [rsp + 0xd8]
sub eax, 1
mov dword [rsp + 0xd8], eax
cmp dword [rsp + 0xd8], 0x3f
ja case.0x4493da.3
mov eax, dword [rsp + 0xd8]
lea rcx, [0x00400000]
movzx eax, byte [rcx + rax + 0x49b44]
mov eax, dword [rcx + rax*4 + 0x49b28]
add rax, rcx
jmp rax
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x120]
mov ecx, dword [rcx]
mov dword [rax], ecx
mov rax, qword [rsp + 0x118]
mov qword [rax + 8], 0
jmp 0x44966e
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x118]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
call qword [rax + reloc.oledlg.dll_OleUIBusyA]
mov rax, qword [rsp + 0x118]
mov dword [rax], 4
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x118]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
call qword [rax + reloc.oledlg.dll_OleUIBusyA]
mov rax, qword [rsp + 0x118]
mov dword [rax], 8
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x120]
mov rdx, qword [rax + 8]
xor ecx, ecx
call fcn.004491e0
mov qword [rsp + 0x38], rax
cmp qword [rsp + 0x38], 0
jne 0x4494c8
xor eax, eax
jmp 0x449b0d
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov qword [rsp + 0x30], rax
cmp qword [rsp + 0x30], 0
jne 0x4494f8
mov edx, 0x2d6
lea rcx, [0x005b8eb0]
call fcn.00422700
test eax, eax
je 0x4494f8
int3
xor edx, edx
mov rax, qword [rsp + 0x30]
mov rcx, qword [rax + 0x10]
call qword [sym.imp.GDI32.dll_CopyMetaFileA]
mov rcx, qword [rsp + 0x30]
mov qword [rcx + 0x10], rax
mov rax, qword [rsp + 0x30]
cmp qword [rax + 0x10], 0
jne 0x44953b
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalFree]
xor eax, eax
jmp 0x449b0d
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x38]
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x118]
mov dword [rax], SafeArrayDestroyDescriptor
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
mov dword [rax], reloc.OLEAUT32.dll_SafeArrayGetDim
mov rax, qword [rsp + 0x118]
mov qword [rax + 8], 0
jmp 0x44966e
mov rax, qword [rsp + 0x118]
mov dword [rax], 2
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
jne 0x4495c7
mov edx, 0x2ee
lea rcx, [0x005b8ee8]
call fcn.00422700
test eax, eax
je 0x4495c7
int3
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
jne 0x4495db
call fcn.00448480
mov rax, qword [rsp + 0x120]
mov rcx, qword [rax + 8]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x48]
add eax, 1
mov edx, 2
mov ecx, eax
call fcn.0044bd60
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x40]
mov qword [rax + 8], rcx
cmp qword [rsp + 0x40], 0
jne 0x449629
xor eax, eax
jmp 0x449b0d
mov eax, dword [rsp + 0x48]
add eax, 1
mov eax, eax
shl rax, 1
mov ecx, dword [rsp + 0x48]
add ecx, 1
mov ecx, ecx
shl rcx, 1
mov r9, rax
mov rax, qword [rsp + 0x120]
mov r8, qword [rax + 8]
mov rdx, rcx
mov rcx, qword [rsp + 0x40]
call fcn.0040f330
mov eax, 1
jmp 0x449b0d
xor eax, eax
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x120]
mov ecx, dword [rcx]
cmp dword [rax], ecx
je 0x44969c
mov edx, 0x303
lea rcx, [0x005b8f20]
call fcn.00422700
test eax, eax
je 0x44969c
int3
mov rax, qword [rsp + 0x120]
mov eax, dword [rax]
mov dword [rsp + 0xdc], eax
mov eax, dword [rsp + 0xdc]
sub eax, 1
mov dword [rsp + 0xdc], eax
cmp dword [rsp + 0xdc], 0x3f
ja case.0x4496ec.3
mov eax, dword [rsp + 0xdc]
lea rcx, [0x00400000]
movzx eax, byte [rcx + rax + 0x49b9c]
mov eax, dword [rcx + rax*4 + 0x49b84]
add rax, rcx
jmp rax
mov rax, qword [rsp + 0x120]
mov rdx, qword [rax + 8]
mov rax, qword [rsp + 0x118]
mov rcx, qword [rax + 8]
call fcn.004491e0
mov qword [rsp + 0x50], rax
cmp qword [rsp + 0x50], 0
jne 0x44971f
xor eax, eax
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
mov rcx, qword [rsp + 0x50]
mov qword [rax + 8], rcx
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
jne 0x449761
mov edx, 0x314
lea rcx, [0x005b8f58]
call fcn.00422700
test eax, eax
je 0x449761
int3
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
jne 0x449788
mov edx, 0x315
lea rcx, [0x005b8f90]
call fcn.00422700
test eax, eax
je 0x449788
int3
mov rax, qword [rsp + 0x120]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
mov r8d, 1
lea rdx, [rsp + 0x60]
call qword [rax + 0x60]
test eax, eax
je 0x4497bc
xor eax, eax
jmp 0x449b0d
cmp qword [rsp + 0x60], 0
je 0x4497dc
mov edx, 0x31e
lea rcx, [0x005b8fc8]
call fcn.00422700
test eax, eax
je 0x4497dc
int3
mov dword [rsp + 0xb0], 0
mov dword [rsp + 0xb4], 0
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x118]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0xb0]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx]
mov rax, qword [rsp + 0x120]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0xb0]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx]
mov rax, qword [rsp + 0x120]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
mov qword [rsp + 0x20], 0
xor r9d, r9d
mov r8, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x118]
mov rdx, qword [rdx + 8]
call qword [rax + 0x38]
test eax, eax
je 0x449890
xor eax, eax
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x118]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0xb0]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx]
mov rax, qword [rsp + 0x120]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0xb0]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayAllocDescriptorEx]
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
jne 0x449919
mov edx, 0x335
lea rcx, [0x005b9000]
call fcn.00422700
test eax, eax
je 0x449919
int3
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
jne 0x449940
mov edx, 0x336
lea rcx, [0x005b9038]
call fcn.00422700
test eax, eax
je 0x449940
int3
mov rax, qword [rsp + 0x120]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0x120]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
mov rdx, qword [rsp + 0x118]
mov rdx, qword [rdx + 8]
mov qword [rsp + 0x20], rdx
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call qword [rax + 0x38]
test eax, eax
je 0x449982
xor eax, eax
jmp 0x449b0d
mov eax, 1
jmp 0x449b0d
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
jne 0x4499b3
mov edx, 0x340
lea rcx, [0x005b9070]
call fcn.00422700
test eax, eax
je 0x4499b3
int3
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
jne 0x4499da
mov edx, 0x341
lea rcx, [0x005b90a8]
call fcn.00422700
test eax, eax
je 0x4499da
int3
mov rax, qword [rsp + 0x118]
mov rdx, qword [rax + 8]
lea rcx, [rsp + 0xb8]
call fcn.0044c520
nop
mov rax, qword [rsp + 0x118]
mov rdx, qword [rax + 8]
lea rcx, [rsp + 0xc0]
call fcn.0044c520
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
je 0x449a33
lea rcx, [rsp + 0xc0]
call fcn.004c1cf0
mov qword [rsp + 0xe0], rax
jmp 0x449a3f
mov qword [rsp + 0xe0], 0
mov rax, qword [rsp + 0x120]
cmp qword [rax + 8], 0
je 0x449a65
lea rcx, [rsp + 0xb8]
call fcn.004c1cf0
mov qword [rsp + 0xe8], rax
jmp 0x449a71
mov qword [rsp + 0xe8], 0
xor r8d, r8d
mov rdx, qword [rsp + 0xe0]
mov rcx, qword [rsp + 0xe8]
call qword [sym.imp.KERNEL32.dll_CopyFileA]
mov dword [rsp + 0xc8], eax
lea rcx, [rsp + 0xc0]
call fcn.00407d10
nop
lea rcx, [rsp + 0xb8]
call fcn.00407d10
mov eax, dword [rsp + 0xc8]
jmp 0x449b0d
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
je 0x449ac8
xor eax, eax
jmp 0x449b0d
xor r8d, r8d
movzx edx, word [rsp + 0x110]
mov rax, qword [rsp + 0x120]
mov rcx, qword [rax + 8]
call qword [sym.imp.ole32.dll_OleDuplicateData]
mov rcx, qword [rsp + 0x118]
mov qword [rcx + 8], rax
mov rax, qword [rsp + 0x118]
cmp qword [rax + 8], 0
jne 0x449b04
xor eax, eax
jmp 0x449b0d
mov eax, 1
jmp 0x449b0d
xor eax, eax
mov rcx, qword [rsp + 0xf0]
xor rcx, rsp
call fcn.0054ec60
add rsp, 0x108
ret