Function at 0x4077bd
Capabilities:
Check if file exists
Copy file
Get file attributes
Resolve function by parsing pe exports
Set file attributes

Disassembly:
sub esp, 0x304
mov eax, dword [0x9c48d0]
xor eax, esp
mov dword [esp + 0x2fc], eax
test byte [0x9e8474], 2
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x1c], esi
je 0x4081cd
xor ebx, ebx
cmp dword [esi + 4], ebx
je 0x4081cd
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ebp, eax
mov eax, dword [0x9f43ec]
xor ecx, ecx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], ecx
cmp eax, ebx
je 0x407815
call fcn.00459840
push ebx
mov edi, eax
call fcn.00658a01
add esp, 4
mov ecx, edi
mov dword [esp + 0x30], ecx
cmp edi, ebx
je 0x407844
mov ebp, edi
mov dword [esp + 0x2c], ebp
cmp ebp, ebx
je 0x4081c4
cmp dword [esi + 4], ebx
je 0x407856
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
cmp eax, ebx
je 0x407856
cmp dword [esi + 4], ebx
je 0x40784f
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
mov edi, dword [eax + 0x28]
jmp 0x407858
mov ebp, str.filename
mov dword [esp + 0x2c], ebp
jmp 0x40781d
xor eax, eax
mov edi, dword [eax + 0x28]
jmp 0x407858
xor edi, edi
mov dword [esp + 0x20], edi
cmp edi, ebx
je 0x40787c
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
mov ecx, edi
call edx
test al, al
jne 0x40787c
call fcn.0043d710
mov byte [esp + 0x1b], 1
cmp eax, 0xe
jne 0x407880
mov byte [esp + 0x1b], bl
cmp edi, ebx
je 0x4078ae
mov esi, dword [esp + 0x1c]
call fcn.0043d710
cmp eax, 1
je 0x4078ae
mov byte [esp + 0x18], 1
call fcn.0043d710
cmp eax, 7
je 0x4078b2
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
mov ecx, edi
call edx
test al, al
jne 0x4078b2
mov byte [esp + 0x18], bl
cmp edi, ebx
je 0x4078d8
mov eax, dword [edi]
mov edx, dword [eax + 0x54]
mov ecx, edi
call edx
test al, al
jne 0x4078c7
mov byte [esp + 0x1b], bl
mov eax, dword [edi]
mov edx, dword [eax + 0x50]
mov ecx, edi
call edx
test al, al
jne 0x4078d8
mov byte [esp + 0x18], bl
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
mov edi, eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x9c], eax
xor eax, eax
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0x90], ebx
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
mov eax, dword [esi + 4]
lea ebx, [esp + 0x90]
mov dword [esp + 0x24], edi
mov dword [esp + 0x98], 0x100
mov dword [esp + 0x94], 0xf
call fcn.00407440
test al, al
je 0x407983
push edi
mov ecx, ebx
push 0x9238f0
push ecx
call fcn.00412600
add esp, 0xc
cmp byte [esp + 0x1b], 0
je 0x4079d4
mov eax, str.Text_documents
call fcn.0044a3e0
test eax, eax
je 0x4079b1
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4079a0
sub ecx, esi
sar ecx, 1
jmp 0x4079b3
xor ecx, ecx
push ecx
push eax
lea eax, [esp + 0x98]
call fcn.00412a00
push 7
push 0x9238fc
lea eax, [esp + 0x98]
call fcn.00412a00
cmp byte [esp + 0x18], 0
je 0x407a24
mov eax, str.PDF_documents
call fcn.0044a3e0
test eax, eax
je 0x407a01
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4079f0
sub ecx, esi
sar ecx, 1
jmp 0x407a03
xor ecx, ecx
push ecx
push eax
lea eax, [esp + 0x98]
call fcn.00412a00
push 7
push 0x92390c
lea eax, [esp + 0x98]
call fcn.00412a00
mov eax, str.All_files
call fcn.0044a3e0
test eax, eax
je 0x407a48
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407a37
sub ecx, esi
sar ecx, 1
jmp 0x407a4a
xor ecx, ecx
push ecx
push eax
lea eax, [esp + 0x98]
call fcn.00412a00
push 5
push 0x923928
lea eax, [esp + 0x98]
call fcn.00412a00
mov eax, dword [esp + 0x9c]
push 0x923934
mov edi, 0x923938
call fcn.00458330
add esp, 4
mov edx, ebp
call fcn.00454f40
test eax, eax
je 0x407aa5
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407a94
sub ecx, esi
sar ecx, 1
jmp 0x407aa7
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp ecx, 0x103
mov dword [esp + 0x34], 0x103
lea ecx, [esp + 0x28]
jb 0x407ac3
lea ecx, [esp + 0x34]
mov edx, dword [ecx]
push edx
push eax
lea eax, [esp + 0x108]
push 0x104
push eax
call fcn.00660400
lea ecx, [esp + 0x110]
push 0x3a
push ecx
call fcn.0065866b
add esp, 0x18
test eax, eax
je 0x407b78
lea edx, [esp + 0x100]
push 0x3a
push edx
call fcn.0065866b
push 0x92393c
mov edi, 0x923940
mov ebx, eax
call fcn.00458330
lea eax, [esp + 0x10c]
add esp, 0xc
mov edx, ebx
cmp ebx, eax
jbe 0x407b37
cmp word [edx], 0x2e
je 0x407b37
sub edx, 2
lea ecx, [esp + 0x100]
cmp edx, ecx
ja 0x407b23
lea eax, [esp + 0x100]
cmp edx, eax
jne 0x407b44
mov edx, ebx
test ebx, ebx
je 0x407b61
mov eax, ebx
lea esi, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x407b50
sub eax, esi
sar eax, 1
jmp 0x407b63
xor eax, eax
lea ecx, [eax + eax + 2]
push ecx
push ebx
push edx
call fcn.006586a0
mov edi, dword [esp + 0x30]
add esp, 0xc
jmp 0x407ba8
mov edi, dword [esp + 0x24]
lea ebx, [esp + 0x100]
call fcn.00457ca0
test al, al
je 0x407ba8
mov eax, edi
call fcn.00457900
mov esi, eax
mov eax, ebx
call fcn.00457900
sub eax, esi
xor edx, edx
mov word [esp + eax*2 + 0x100], dx
push 0x54
lea eax, [esp + 0x40]
push 0
push eax
call fcn.0065b340
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x48], edx
add esp, 0xc
lea edx, [esp + 0x38]
lea eax, [esp + 0x100]
add edi, 2
push edx
mov dword [esp + 0x3c], 0x58
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0x104
mov dword [esp + 0x48], ecx
mov dword [esp + 0x54], 1
mov dword [esp + 0x78], edi
mov dword [esp + 0x70], 0x806
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
test eax, eax
setne al
mov byte [esp + 0x17], al
test al, al
je 0x408191
cmp byte [esp + 0x1b], 0
lea ebp, [esp + 0x100]
je 0x407c40
mov edi, 0x923944
mov ebx, ebp
call fcn.00457ca0
mov byte [esp + 0x19], 1
test al, al
jne 0x407c45
mov byte [esp + 0x19], 0
cmp byte [esp + 0x18], 0
je 0x407c66
mov edi, 0x92357c
lea ebx, [esp + 0x100]
call fcn.00457ca0
mov byte [esp + 0x1a], 1
test al, al
jne 0x407c6b
mov byte [esp + 0x1a], 0
mov edi, dword [esp + 0x24]
lea ebx, [esp + 0x100]
call fcn.00457ca0
test al, al
jne 0x407cdf
cmp byte [esp + 0x19], al
jne 0x407cdf
cmp byte [esp + 0x1a], al
jne 0x407cdf
mov cl, byte [esp + 0x1b]
mov eax, dword [esp + 0x50]
test cl, cl
je 0x407ca8
cmp eax, 2
jne 0x407ca8
mov edi, 0x923944
mov byte [esp + 0x19], 1
jmp 0x407cc7
cmp byte [esp + 0x18], 0
je 0x407cc7
xor edx, edx
test cl, cl
setne dl
add edx, 2
cmp edx, eax
jne 0x407cc7
mov edi, 0x92357c
mov byte [esp + 0x1a], 1
push edi
lea eax, [esp + 0x104]
push eax
push 0x923950
call fcn.00458200
add esp, 0xc
mov ebp, eax
xor eax, eax
mov dword [esp + 0x24], eax
cmp byte [esp + 0x19], al
je 0x407e8b
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0xd8]
mov dword [esp + 0xd4], ecx
mov ecx, dword [edx + 4]
mov dword [esp + 0xd0], 0x400
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], 0xf
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
lea ebx, [eax + 1]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
cmp eax, ebx
jl 0x407dd9
mov esi, dword [esp + 0x20]
lea esp, [esp]
mov eax, dword [esi]
mov edx, dword [eax + 0x34]
push 2
push 0
push 0x92395c
push ebx
mov ecx, esi
call edx
mov edi, eax
test edi, edi
je 0x407dbd
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x407da0
sub eax, edx
sar eax, 1
push eax
push edi
lea eax, [esp + 0xd0]
call fcn.00412a00
push edi
call fcn.00658a01
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 4]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
add esp, 4
inc ebx
call eax
cmp ebx, eax
jle 0x407d80
mov ebx, dword [esp + 0xd4]
push 0xffffffffffffffff
push 0xfde9
call fcn.00457e90
mov esi, eax
add esp, 8
test esi, esi
jne 0x407dfa
mov eax, 0x925010
push 0x925010
push eax
push 0x923964
push 0x988794
call fcn.00458120
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x407e2b
lea edx, [eax + 1]
jmp 0x407e20
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407e20
sub eax, edx
jmp 0x407e2d
xor eax, eax
mov edi, eax
push ebx
mov eax, ebp
call fcn.00455af0
add esp, 4
push ebx
mov byte [esp + 0x1b], al
call fcn.00658a01
add esp, 4
push esi
call fcn.00658a01
mov eax, dword [esp + 0xd8]
lea ecx, [esp + 0xdc]
add esp, 4
cmp eax, ecx
je 0x407f14
mov ecx, dword [esp + 0xf8]
push eax
test ecx, ecx
jne 0x407e7f
call fcn.00658a01
add esp, 4
jmp 0x407f14
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
jmp 0x407f14
cmp byte [esp + 0x1a], al
je 0x407ee0
call fcn.00486840
mov eax, dword [0x9f48bc]
movzx eax, byte [eax + 0x94]
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
push eax
push ebp
call edx
mov byte [esp + 0x17], al
test al, al
je 0x4080f6
mov eax, dword [0x9f48bc]
cmp byte [eax + 0x94], 0
jne 0x407f14
mov eax, dword [esp + 0x1c]
call fcn.00401a70
mov ecx, dword [eax + 0xc]
push ebp
call fcn.00473530
add esp, 4
jmp 0x407f14
mov edi, dword [esp + 0x2c]
push edi
call fcn.00455870
mov esi, dword [esp + 0x24]
add esp, 4
test al, al
jne 0x407f5e
test esi, esi
je 0x407f5e
mov eax, dword [0x9f48bc]
movzx ecx, byte [eax + 0x94]
mov edx, dword [esi]
mov edx, dword [edx + 0x2c]
push ecx
push ebp
mov ecx, esi
call edx
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x4080f6
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 4], 0
je 0x40814b
mov edx, ecx
mov ecx, dword [edx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
test eax, eax
je 0x40814b
mov eax, dword [esp + 0x1c]
cmp dword [eax + 4], 0
je 0x40804d
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
jmp 0x40804f
mov eax, dword [0x9f48bc]
cmp byte [eax + 0x94], 0
je 0x407f8d
test esi, esi
je 0x407f8d
mov edx, dword [esi]
mov eax, dword [edx + 0x48]
push 1
mov ecx, esi
call eax
test al, al
je 0x407f8d
mov edx, dword [esi]
mov eax, dword [edx + 0x2c]
push 1
push ebp
mov ecx, esi
call eax
jmp 0x407f10
push edi
mov ecx, ebp
call fcn.004553c0
add esp, 4
test al, al
jne 0x407f14
push 0
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
setne al
mov byte [esp + 0x17], al
test al, al
je 0x407fdf
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x407f14
test al, 7
je 0x407f14
and eax, 0xfffffff8
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
jmp 0x407f14
push 0
push 0
lea ecx, [esp + 0x30]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
test eax, eax
je 0x4080f6
mov edx, dword [esp + 0x28]
push edx
mov eax, str.Failed_to_save_a_file
call fcn.0044a3e0
push eax
push str._s_n_n_s
call fcn.00458200
add esp, 0xc
push 0
mov edi, eax
call fcn.00658a01
mov eax, dword [esp + 0x2c]
add esp, 4
push eax
mov dword [esp + 0x28], edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
je 0x4080f6
mov esi, edi
jmp 0x408102
xor eax, eax
cmp dword [eax + 0xc], 0
je 0x40814b
mov eax, dword [esp + 0x1c]
cmp dword [eax + 4], 0
je 0x40806f
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
jmp 0x408071
xor eax, eax
cmp byte [eax + 0x10], 0
je 0x40814b
cmp byte [esp + 0x19], 0
jne 0x40814b
cmp byte [esp + 0x1a], 0
jne 0x40814b
mov eax, dword [0x9f48bc]
cmp byte [eax + 0x94], 0
je 0x4080b4
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4080b4
mov edx, dword [ecx]
mov eax, dword [edx + 0x48]
push 1
call eax
test al, al
jne 0x4080cd
mov eax, dword [esp + 0x1c]
call fcn.00401a70
mov ecx, dword [eax + 0xc]
push ebp
call fcn.00473530
add esp, 4
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x4080f6
mov ecx, dword [esp + 0x2c]
push ecx
mov ecx, ebp
call fcn.004553c0
add esp, 4
test al, al
je 0x40814b
mov eax, dword [esp + 0x1c]
call fcn.00401a70
mov byte [eax + 0x10], 0
jmp 0x40814b
mov eax, str.Failed_to_save_a_file
call fcn.0044a3e0
mov esi, eax
mov eax, dword [0x9f4968]
mov edx, dword [esp + 0x1c]
mov ebx, dword [edx + 8]
cmp eax, 2
je 0x408122
cmp eax, 0x17
je 0x408122
cmp eax, 0x1f
je 0x408122
cmp eax, 0x25
jne 0x408129
mov eax, 0x100000
jmp 0x40812b
xor eax, eax
or eax, 0x30
mov edi, eax
mov eax, str.Warning
call fcn.0044a3e0
push edi
push eax
push esi
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp byte [esp + 0x17], 0
je 0x408170
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 4]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
call fcn.00440d80
test al, al
je 0x408170
cmp byte [esp + 0x19], 0
jne 0x408170
mov eax, ebp
call fcn.00455d20
lea ecx, [esp + 0x100]
cmp ebp, ecx
je 0x408184
push ebp
call fcn.00658a01
add esp, 4
mov edx, dword [esp + 0x24]
push edx
call fcn.00658a01
add esp, 4
mov eax, dword [esp + 0x9c]
lea ecx, [esp + 0xa0]
cmp eax, ecx
je 0x4081c0
mov ecx, dword [esp + 0xc0]
push eax
test ecx, ecx
jne 0x4081b9
call fcn.00658a01
add esp, 4
jmp 0x4081c0
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esp + 0x30]
push ecx
call fcn.00658a01
add esp, 4
mov ecx, dword [esp + 0x30c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0065865c
add esp, 0x304
ret