Function at 0x471740
Capabilities:
Check if file exists
Get file attributes
Move file

Disassembly:
push ebp
lea ebp, [esp - 0x944]
sub esp, 0x944
push 0xffffffffffffffff
push 0x648a28
mov eax, dword fs:[0]
push eax
sub esp, 0xe0
mov eax, dword [0x755898]
xor eax, ebp
mov dword [ebp + 0x940], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x14], edi
xor ebx, ebx
cmp dword [0x74fd28], ebx
je 0x4717de
mov dword [ebp - 4], ebx
mov eax, dword [edi + 0x1fc]
push ebx
push ebx
push 0x1032
mov eax, dword [eax + 0x20]
push eax
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
call esi
cmp eax, 1
jbe 0x471be0
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x14], ebx
xor ecx, ecx
mov word [ebp + 0x10], cx
mov byte [ebp - 4], 1
lea edx, [ebp + 0xc]
push edx
call fcn.004711d0
add esp, 4
test eax, eax
jne 0x471803
mov byte [ebp - 4], al
lea ecx, [ebp + 0xc]
call fcn.00401210
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x940]
xor ecx, ebp
call fcn.0061d2ff
add ebp, 0x944
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
cmp edx, ebx
jne 0x47180d
lea edx, [ebp + 0x10]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x471812
sub eax, esi
sar eax, 1
cmp word [edx + eax*2 - 2], 0x5c
je 0x471836
push 0x676978
lea ecx, [ebp + 0xc]
call fcn.00405300
lea ecx, [edi + 0x5d0]
call fcn.00453b30
mov dword [ebp + 0x938], eax
jmp 0x471850
cmp dword [ebp + 0x938], ebx
je 0x471bc8
lea esi, [edi + 0x5d0]
lea eax, [ebp + 0x938]
push eax
mov ecx, esi
call fcn.00453b50
push eax
mov ecx, esi
call fcn.005fd6f8
push eax
mov ecx, edi
call fcn.0045bb60
cmp eax, ebx
jl 0x471850
push eax
mov ecx, dword [edi + 0x234]
call fcn.004cded0
mov esi, dword [eax]
cmp dword [esi + 0x5c], ebx
je 0x471850
cmp dword [esi + 0x54], ebx
je 0x4718a1
mov eax, dword [esi + 0x54]
jmp 0x4718a4
lea eax, [esi + 0x58]
push eax
lea ecx, [ebp + 0x24]
call fcn.00402180
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0x24]
cmp eax, ebx
jne 0x4718bb
lea eax, [ebp + 0x28]
push 0x5c
push eax
call fcn.0061ce13
add esp, 8
cmp eax, ebx
jne 0x4718db
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x24]
call fcn.00401210
jmp 0x471850
add eax, 2
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebp + 0xc]
cmp eax, ebx
jne 0x4718ed
lea eax, [ebp + 0x10]
mov ecx, dword [ebp + 0x24]
cmp ecx, ebx
jne 0x4718f7
lea ecx, [ebp + 0x28]
push eax
push ecx
call fcn.0062280a
add esp, 8
test eax, eax
jne 0x471916
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x24]
call fcn.00401210
jmp 0x471850
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x20], ebx
xor edx, edx
mov word [ebp + 0x1c], dx
mov byte [ebp - 4], 3
cmp dword [esi + 0x54], ebx
je 0x471930
mov eax, dword [esi + 0x54]
jmp 0x471933
lea eax, [esi + 0x58]
push 0x5c
push eax
call fcn.0061ce13
add esp, 8
cmp eax, ebx
jne 0x47195f
mov byte [ebp - 4], 2
lea ecx, [ebp + 0x18]
call fcn.00401210
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x24]
call fcn.00401210
jmp 0x471850
add eax, 2
mov ecx, dword [ebp + 0xc]
cmp ecx, ebx
jne 0x47196c
lea ecx, [ebp + 0x10]
push ebx
push eax
push ecx
push 0x675de0
lea ecx, [ebp + 0x18]
call fcn.00402320
cmp dword [esi + 0x944], 3
jne 0x471b41
cmp dword [esi + 0x54], ebx
je 0x471993
mov eax, dword [esi + 0x54]
jmp 0x471996
lea eax, [esi + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x471ba6
test al, 0x10
jne 0x471ba6
xor eax, eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov word [ebp - 0x44], ax
cmp dword [esi + 0x54], eax
je 0x4719d3
mov eax, dword [esi + 0x54]
jmp 0x4719d6
lea eax, [esi + 0x58]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4719e0
sub eax, edx
sar eax, 1
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x4719fc
lea eax, [ebp + 0x1c]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x471a00
sub eax, edx
sar eax, 1
mov edi, eax
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 0x18]
add eax, 2
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.005f15c2
mov ebx, eax
lea eax, [edi + 2]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.005f15c2
add esp, 8
mov edi, eax
mov dword [ebp - 0x20], edi
test ebx, ebx
je 0x471ba6
test edi, edi
je 0x471ba6
cmp dword [esi + 0x54], 0
je 0x471a6e
mov ecx, dword [esi + 0x54]
jmp 0x471a71
lea ecx, [esi + 0x58]
mov edx, ebx
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
test ax, ax
jne 0x471a73
xor eax, eax
mov ecx, dword [ebp - 0x18]
mov word [ebx + ecx*2 + 2], ax
mov ecx, dword [ebp + 0x18]
test ecx, ecx
jne 0x471a98
lea ecx, [ebp + 0x1c]
mov edx, edi
lea ebx, [ebx]
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
test ax, ax
jne 0x471aa0
xor edx, edx
mov eax, dword [ebp - 0x1c]
mov word [edi + eax*2 + 2], dx
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x58], ebx
mov ecx, dword [ebp - 0x14]
mov edx, dword [ecx + 0x20]
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], 1
mov eax, 0x100
mov word [ebp - 0x50], ax
lea ecx, [ebp - 0x60]
push ecx
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
test eax, eax
jne 0x471b30
cmp dword [ebp - 0x4e], eax
jne 0x471b30
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x471af7
lea eax, [ebp + 0x1c]
lea edi, [esi + 0x20]
push eax
mov ecx, edi
call fcn.005cb000
mov eax, dword [esi + 0x4e8]
test eax, eax
je 0x471b14
push eax
mov ecx, edi
call fcn.005ccd00
mov edx, dword [esi + 0x4e8]
push edx
push 0x149e
push 0x111
mov ecx, dword [ebp - 0x14]
call fcn.004015b0
mov edi, dword [ebp - 0x20]
push edi
call fcn.005f15b7
push ebx
call fcn.005f15b7
add esp, 8
jmp 0x471ba6
mov byte [esi + 0x1a2], 1
cmp dword [esi + 0x944], 5
jne 0x471b6d
cmp dword [esi + 0xcc], ebx
je 0x471b6d
mov eax, dword [ebp + 0x18]
cmp eax, ebx
jne 0x471b63
lea eax, [ebp + 0x1c]
push eax
mov ecx, esi
call fcn.005b5f60
jmp 0x471b8e
mov eax, dword [ebp + 0x18]
cmp eax, ebx
jne 0x471b77
lea eax, [ebp + 0x1c]
push eax
mov ecx, esi
call fcn.005bb0f0
mov eax, dword [esi + 0x4e8]
push eax
lea ecx, [esi + 0x20]
call fcn.005ccc30
mov ecx, dword [esi + 0x4e8]
push ecx
push 0x149e
push 0x111
mov ecx, edi
call fcn.0042e5b0
mov byte [ebp - 4], 2
lea ecx, [ebp + 0x18]
call fcn.00401210
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x24]
call fcn.00401210
xor ebx, ebx
mov edi, dword [ebp - 0x14]
jmp 0x471850
mov byte [ebp - 4], 0
lea ecx, [ebp + 0xc]
call fcn.00401210
mov dword [ebp - 4], 0xffffffff
jmp 0x4717de
jne 0x472172
mov eax, dword [edi + 0x1fc]
push ebx
push ebx
push 0x1042
mov edx, dword [eax + 0x20]
push edx
call esi
mov dword [ebp - 0xec], 4
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0xe4], ebx
mov eax, dword [edi + 0x1fc]
lea ecx, [ebp - 0xec]
push ecx
push ebx
push 0x1005
mov edx, dword [eax + 0x20]
push edx
call esi
test eax, eax
je 0x4717de
mov eax, dword [ebp - 0xcc]
push eax
mov ecx, edi
call fcn.0045bb60
push eax
mov ecx, dword [edi + 0x234]
call fcn.004cded0
mov esi, dword [eax]
cmp esi, ebx
je 0x4717de
mov dword [ebp + 0x24], ebx
mov dword [ebp + 0x2c], ebx
xor ecx, ecx
mov word [ebp + 0x28], cx
mov byte [ebp - 4], 4
push 0x100
push ebx
lea edx, [ebp + 0x430]
push edx
call fcn.0061d9e0
push 0x58
push ebx
lea eax, [ebp - 0xb8]
push eax
call fcn.0061d9e0
add esp, 0x18
mov dword [ebp - 0xb8], 0x58
cmp dword [esi + 0x5c], ebx
je 0x471cfe
cmp dword [esi + 0x54], ebx
je 0x471ca1
mov eax, dword [esi + 0x54]
jmp 0x471ca4
lea eax, [esi + 0x58]
push 0x104
push eax
lea ecx, [ebp + 0x630]
push ecx
call fcn.00620c7d
add esp, 0xc
cmp dword [esi + 0x54], ebx
je 0x471cc3
mov eax, dword [esi + 0x54]
jmp 0x471cc6
lea eax, [esi + 0x58]
push 0x100
lea edx, [ebp + 0x430]
push edx
push 0x100
lea ecx, [ebp + 0x30]
push ecx
push 0x100
lea edx, [ebp + 0x230]
push edx
push 3
lea ecx, [ebp + 0x938]
push ecx
push eax
call fcn.00620297
add esp, 0x24
jmp 0x471da0
push 0x208
push ebx
lea edx, [ebp + 0x630]
push edx
call fcn.0061d9e0
add esp, 0xc
cmp dword [esi + 0x28], ebx
je 0x471da0
mov eax, dword [esi + 0x28]
push eax
lea ecx, [ebp + 0x18]
call fcn.00406f80
mov byte [ebp - 4], 5
mov eax, dword [ebp + 0x18]
cmp eax, ebx
jne 0x471d36
lea eax, [ebp + 0x1c]
push 0x104
push eax
lea ecx, [ebp + 0x630]
push ecx
call fcn.00620c7d
push 0x2e
lea edx, [ebp + 0x630]
push edx
call fcn.0061ce13
add esp, 0x14
cmp eax, ebx
je 0x471d91
mov ecx, eax
lea edi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x471d62
sub ecx, edi
sar ecx, 1
cmp ecx, 0xa
jae 0x471d91
mov ecx, eax
lea edx, [ebp + 0x430]
mov edi, edi
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
cmp ax, bx
jne 0x471d80
mov byte [ebp - 4], 4
lea ecx, [ebp + 0x18]
call fcn.00401210
mov edi, dword [ebp - 0x14]
lea eax, [ebp + 0x430]
push eax
lea ecx, [ebp + 0xc]
call fcn.00402180
mov byte [ebp - 4], 6
lea ecx, [ebp + 0x630]
mov dword [ebp - 0x9c], ecx
mov dword [ebp - 0xb4], ebx
mov dword [ebp - 0x98], 0x104
mov dword [ebp - 0xa0], 1
mov dword [ebp - 0x94], ebx
push 0x100
push ebx
lea edx, [ebp + 0x838]
push edx
call fcn.0061d9e0
add esp, 0xc
mov dword [ebp], ebx
mov dword [ebp + 8], ebx
xor eax, eax
mov word [ebp + 4], ax
mov byte [ebp - 4], 7
mov ecx, dword [0x75ad10]
push ecx
mov edx, dword [0x75bea8]
push edx
lea ecx, [ebp]
call fcn.00401980
mov eax, dword [ebp]
cmp eax, ebx
jne 0x471e24
lea eax, [ebp + 4]
push eax
push str._s__._
lea eax, [ebp + 0x838]
push eax
call fcn.0040fce0
add esp, 0xc
lea eax, [ebp + 0x838]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x471e42
sub eax, edx
sar eax, 1
lea eax, [ebp + eax*2 + 0x83a]
mov ecx, dword [0x67e9c8]
mov dword [eax], ecx
mov dx, word [0x67e9cc]
mov word [eax + 4], dx
lea eax, [ebp + 0x838]
mov dword [ebp - 0xac], eax
mov dword [ebp - 0x8c], ebx
lea ecx, [ebp + 0x432]
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x84], 2
lea edx, [ebp - 0xb8]
push edx
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
cmp eax, 1
je 0x471ec6
mov byte [ebp - 4], 6
lea ecx, [ebp]
call fcn.00401210
mov byte [ebp - 4], 4
lea ecx, [ebp + 0xc]
call fcn.00401210
mov byte [ebp - 4], 0
lea ecx, [ebp + 0x24]
jmp 0x4717d9
push 0x2e
mov eax, dword [ebp - 0x9c]
push eax
call fcn.0061ce13
add esp, 8
cmp eax, ebx
je 0x471eec
mov ecx, dword [ebp - 0x9c]
push ecx
lea ecx, [ebp + 0x24]
call fcn.004017f0
jmp 0x471f0c
mov eax, dword [ebp + 0xc]
cmp eax, ebx
jne 0x471ef6
lea eax, [ebp + 0x10]
push ebx
push eax
mov edx, dword [ebp - 0x9c]
push edx
push 0x675de0
lea ecx, [ebp + 0x24]
call fcn.00402320
cmp dword [esi + 0x944], 3
jne 0x4720d1
cmp dword [0x74fd28], ebx
je 0x47214e
cmp dword [esi + 0x54], ebx
je 0x471f2f
mov eax, dword [esi + 0x54]
jmp 0x471f32
lea eax, [esi + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x47214e
test al, 0x10
jne 0x47214e
xor eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov word [ebp - 0x24], ax
cmp dword [esi + 0x54], ebx
je 0x471f6f
mov eax, dword [esi + 0x54]
jmp 0x471f72
lea eax, [esi + 0x58]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x471f75
sub eax, edx
sar eax, 1
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x24]
cmp eax, ebx
jne 0x471f91
lea eax, [ebp + 0x28]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x471f94
sub eax, edx
sar eax, 1
mov edi, eax
mov dword [ebp - 0x20], edi
mov eax, dword [ebp - 0x18]
add eax, 2
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.005f15c2
mov ebx, eax
lea eax, [edi + 2]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.005f15c2
add esp, 8
mov edi, eax
mov dword [ebp - 0x1c], edi
test ebx, ebx
je 0x47214e
test edi, edi
je 0x47214e
cmp dword [esi + 0x54], 0
je 0x472002
mov ecx, dword [esi + 0x54]
jmp 0x472005
lea ecx, [esi + 0x58]
mov edx, ebx
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
test ax, ax
jne 0x472007
xor eax, eax
mov ecx, dword [ebp - 0x18]
mov word [ebx + ecx*2 + 2], ax
mov ecx, dword [ebp + 0x24]
test ecx, ecx
jne 0x47202c
lea ecx, [ebp + 0x28]
mov edx, edi
mov edi, edi
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
test ax, ax
jne 0x472030
xor edx, edx
mov eax, dword [ebp - 0x20]
mov word [edi + eax*2 + 2], dx
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x38], ebx
mov ecx, dword [ebp - 0x14]
mov edx, dword [ecx + 0x20]
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x3c], 1
mov eax, 0x100
mov word [ebp - 0x30], ax
lea ecx, [ebp - 0x40]
push ecx
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
test eax, eax
jne 0x4720c0
cmp dword [ebp - 0x2e], eax
jne 0x4720c0
mov eax, dword [ebp + 0x24]
test eax, eax
jne 0x472087
lea eax, [ebp + 0x28]
lea edi, [esi + 0x20]
push eax
mov ecx, edi
call fcn.005cb000
mov eax, dword [esi + 0x4e8]
test eax, eax
je 0x4720a4
push eax
mov ecx, edi
call fcn.005ccd00
mov edx, dword [esi + 0x4e8]
push edx
push 0x149e
push 0x111
mov ecx, dword [ebp - 0x14]
call fcn.004015b0
mov edi, dword [ebp - 0x1c]
push edi
call fcn.005f15b7
push ebx
call fcn.005f15b7
add esp, 8
jmp 0x47214e
mov byte [esi + 0x1a2], 1
cmp dword [esi + 0x944], 5
jne 0x4720fd
cmp dword [esi + 0xcc], ebx
je 0x4720fd
mov eax, dword [ebp + 0x24]
cmp eax, ebx
jne 0x4720f3
lea eax, [ebp + 0x28]
push eax
mov ecx, esi
call fcn.005b5f60
jmp 0x472136
mov eax, dword [ebp + 0x24]
cmp eax, ebx
jne 0x472107
lea eax, [ebp + 0x28]
push eax
mov ecx, esi
call fcn.005bb0f0
mov ecx, dword [esi + 0x4e8]
push ecx
lea ecx, [esi + 0x20]
call fcn.005ccc30
mov edx, dword [esi + 0x4e8]
push edx
push 0x13c9
push 0x111
mov ecx, edi
call fcn.004015b0
mov eax, dword [esi + 0x4e8]
push eax
push 0x149e
push 0x111
mov ecx, edi
call fcn.0042e5b0
mov byte [ebp - 4], 6
lea ecx, [ebp]
call fcn.00401210
mov byte [ebp - 4], 4
lea ecx, [ebp + 0xc]
call fcn.00401210
mov byte [ebp - 4], 0
lea ecx, [ebp + 0x24]
call fcn.00401210
mov dword [ebp - 4], 0xffffffff
jmp 0x4717de