Function at 0x429160
Capabilities:
Check if file exists
Copy file
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51bdfe
mov eax, dword fs:[0]
push eax
sub esp, 0x268
mov eax, dword [0x55f3a4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x264], ebx
lea eax, [ebx + 0x40]
mov dword [ebx + 0x28], 2
push 0
push dword [eax]
mov dword [ebp - 0x268], eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov eax, dword fs:[0x2c]
mov edi, dword [eax]
mov eax, dword [0x56d408]
mov dword [ebp - 0x260], edi
cmp eax, dword [edi + 4]
jle 0x4291fa
push 0x56d408
call fcn.004af7b6
add esp, 4
cmp dword [0x56d408], 0xffffffff
jne 0x4291fa
push 0x56d408
mov dword [0x56d40c], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x251], 0
movlpd qword [ebp - 0x224], xmm0
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0
push eax
call fcn.00432a45
mov dword [ebp - 4], 1
lea eax, [ebp - 0x224]
mov dword [ebp - 0x22c], eax
lea eax, [ebp - 0x251]
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x22c]
push eax
push 0x42ca00
push 0x56d40c
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x429a13
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 2
push eax
call fcn.00432a7f
mov eax, dword [0x56d410]
add esp, 4
mov dword [ebp - 0x274], 0x56c878
cmp eax, dword [edi + 4]
jle 0x4292b9
push 0x56d410
call fcn.004af7b6
add esp, 4
cmp dword [0x56d410], 0xffffffff
jne 0x4292b9
push 0x56d410
mov dword [0x56d414], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x251], 0
movlpd qword [ebp - 0x224], xmm0
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 5
push eax
call fcn.00432a45
mov dword [ebp - 4], 6
lea eax, [ebp - 0x224]
mov dword [ebp - 0x22c], eax
lea eax, [ebp - 0x251]
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x22c]
push eax
push 0x42cab0
push 0x56d414
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x4299fa
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 7
push eax
call fcn.00432a7f
mov eax, dword [0x56d418]
add esp, 4
mov dword [ebp - 0x270], 0x56c858
cmp eax, dword [edi + 4]
jle 0x429378
push 0x56d418
call fcn.004af7b6
add esp, 4
cmp dword [0x56d418], 0xffffffff
jne 0x429378
push 0x56d418
mov dword [0x56d41c], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x251], 0
movlpd qword [ebp - 0x224], xmm0
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0xa
push eax
call fcn.00432a45
mov dword [ebp - 4], 0xb
lea eax, [ebp - 0x224]
mov dword [ebp - 0x22c], eax
lea eax, [ebp - 0x251]
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x22c]
push eax
push 0x42cb70
push 0x56d41c
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x4299e1
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0xc
push eax
call fcn.00432a7f
add esp, 4
mov dword [ebp - 0x26c], 0x56c83c
xor esi, esi
mov dword [ebp - 0x25c], esi
jmp 0x42941c
mov edi, dword [ebp - 0x260]
mov ebx, dword [ebp - 0x264]
mov eax, dword [0x56d420]
mov dword [ebp - 0x21c], 0
cmp eax, dword [edi + 4]
jle 0x429460
push 0x56d420
call fcn.004af7b6
add esp, 4
cmp dword [0x56d420], 0xffffffff
jne 0x429460
push 0x56d420
mov dword [0x56d424], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x251], 0
movlpd qword [ebp - 0x224], xmm0
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0xf
push eax
call fcn.00432a45
mov dword [ebp - 4], 0x10
lea eax, [ebp - 0x224]
mov dword [ebp - 0x250], eax
lea eax, [ebp - 0x251]
mov dword [ebp - 0x24c], eax
lea eax, [ebp - 0x250]
push eax
push 0x42cc30
push 0x56d424
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x4299c4
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 0x11
push eax
call fcn.00432a7f
add ebx, 0x34
mov dword [ebp - 4], 0xffffffff
push 0x56c828
mov edx, ebx
mov dword [ebp - 0x234], ebx
lea ecx, [ebp - 0x21c]
call fcn.00409da0
add esp, 8
mov dword [ebp - 4], 0x14
mov edi, dword [ebp + esi*4 - 0x274]
test edi, edi
jne 0x429513
xor ecx, ecx
jmp 0x42952f
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x429520
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x21c]
call fcn.0041dbb0
mov edx, dword [ebp - 0x268]
lea ecx, [ebp - 0x230]
push edi
mov dword [ebp - 0x230], 0
call fcn.00409da0
add esp, 4
mov byte [ebp - 4], 0x15
push dword [ebp - 0x21c]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x42958a
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0
push dword [ebp - 0x230]
push dword [ebp - 0x21c]
call ebx
jmp 0x4297f8
push edi
mov edx, ebx
lea ecx, [ebp - 0x23c]
call fcn.00409da0
add esp, 4
mov byte [ebp - 4], 0x16
mov edx, dword [eax]
mov esi, dword [ebp - 0x21c]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x42960d
mov eax, dword [esi + 0xc]
lea ebx, [esi + 0xc]
shr eax, 0x1f
test al, al
jne 0x4295f8
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x4295f8
call fcn.00408b20
mov dword [ebp - 0x228], eax
mov byte [ebp - 4], 0x17
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x4295ed
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x228]
add eax, 0x10
mov dword [ebp - 0x21c], eax
jmp 0x429607
push dword [edx - 0xc]
lea ecx, [ebp - 0x21c]
push edx
call fcn.00406110
mov ebx, dword [ebp - 0x234]
mov edx, dword [ebp - 0x23c]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x18
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42962f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x21c]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x42964a
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileW]
jmp 0x4297e2
mov ecx, dword [ebp - 0x260]
mov eax, dword [0x56d428]
cmp eax, dword [ecx + 4]
jle 0x42968a
push 0x56d428
call fcn.004af7b6
add esp, 4
cmp dword [0x56d428], 0xffffffff
jne 0x42968a
push 0x56d428
mov dword [0x56d42c], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x252], 0
movlpd qword [ebp - 0x238], xmm0
lea eax, [ebp - 0x238]
mov byte [ebp - 4], 0x19
push eax
call fcn.00432a45
lea eax, [ebp - 0x238]
mov dword [ebp - 0x248], eax
lea eax, [ebp - 0x252]
mov dword [ebp - 0x244], eax
lea eax, [ebp - 0x248]
push eax
push 0x42ccd0
push 0x56d42c
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x4299a3
lea eax, [ebp - 0x238]
mov byte [ebp - 4], 0x1b
push eax
call fcn.00432a7f
push 0x56c818
mov edx, ebx
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0x258]
call fcn.00409da0
add esp, 8
mov byte [ebp - 4], 0x1e
mov edx, dword [eax]
mov esi, dword [ebp - 0x21c]
add esi, 0xfffffff0
lea ecx, [edx - 0x10]
cmp ecx, esi
je 0x42977a
mov eax, dword [esi + 0xc]
lea ebx, [esi + 0xc]
shr eax, 0x1f
test al, al
jne 0x42976b
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x42976b
call fcn.00408b20
mov dword [ebp - 0x228], eax
mov byte [ebp - 4], 0x1f
or ecx, 0xffffffff
lock xadd dword [ebx], ecx
dec ecx
test ecx, ecx
jg 0x429760
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x228]
add eax, 0x10
mov dword [ebp - 0x21c], eax
jmp 0x42977a
push dword [edx - 0xc]
lea ecx, [ebp - 0x21c]
push edx
call fcn.00406110
mov edx, dword [ebp - 0x258]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x20
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42979c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x15
test edi, edi
jne 0x4297a8
xor ecx, ecx
jmp 0x4297bf
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4297b0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x21c]
call fcn.0041dbb0
push dword [ebp - 0x21c]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4297f2
push 0
push dword [ebp - 0x230]
push dword [ebp - 0x21c]
call ebx
mov esi, dword [ebp - 0x25c]
mov edx, dword [ebp - 0x230]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x21
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42981a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x21c]
add edx, 0xfffffff0
mov dword [ebp - 4], 0x22
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42983f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
inc esi
mov dword [ebp - 0x25c], esi
cmp esi, 3
jb 0x429410
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004efd80
mov esi, dword [ebp - 0x264]
lea eax, [ebp - 0x218]
add esp, 0xc
push dword [esi + 0x38]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCpyW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov ecx, dword [ebp - 0x260]
mov eax, dword [0x56d4f8]
cmp eax, dword [ecx + 4]
jle 0x4298c8
push 0x56d4f8
call fcn.004af7b6
add esp, 4
cmp dword [0x56d4f8], 0xffffffff
jne 0x4298c8
push 0x56d4f8
mov dword [0x56d4fc], 0
call fcn.004af76c
add esp, 4
xorps xmm0, xmm0
mov byte [ebp - 0x252], 0
movlpd qword [ebp - 0x240], xmm0
lea eax, [ebp - 0x240]
mov dword [ebp - 4], 0x23
push eax
call fcn.00432a45
mov dword [ebp - 4], 0x24
lea eax, [ebp - 0x240]
mov dword [ebp - 0x248], eax
lea eax, [ebp - 0x252]
mov dword [ebp - 0x244], eax
lea eax, [ebp - 0x248]
push eax
push 0x42de90
push 0x56d4fc
call fcn.00432c10
add esp, 0x10
test eax, eax
je 0x42997f
lea eax, [ebp - 0x240]
mov dword [ebp - 4], 0x25
push eax
call fcn.00432a7f
add esp, 4
lea eax, [ebp - 0x218]
push 0x56c48c
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0
lea eax, [ebp - 0x218]
push eax
push dword [esi + 0x38]
call ebx
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004af60c
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x240]
mov byte [ebp - 4], 0x26
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 0x24
test al, al
je 0x429a42
jmp 0x429a2c
lea eax, [ebp - 0x238]
mov byte [ebp - 4], 0x1c
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 0x1a
test al, al
jne 0x429a47
jmp 0x429a42
lea eax, [ebp - 0x224]
mov byte [ebp - 4], 0x12
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 0x10
test al, al
jne 0x429a5d
jmp 0x429a42
lea eax, [ebp - 0x224]
mov byte [ebp - 4], 0xd
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 0xb
jmp 0x4299db
lea eax, [ebp - 0x224]
mov byte [ebp - 4], 8
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 6
jmp 0x4299db
lea eax, [ebp - 0x224]
mov byte [ebp - 4], 3
push eax
call fcn.00432aa0
add esp, 4
mov byte [ebp - 4], 1
jmp 0x4299db
sub esp, 8
lea eax, [ebp - 0x240]
mov ecx, esp
push eax
call fcn.00404e30
call fcn.00404e90
call fcn.00432c28
sub esp, 8
lea eax, [ebp - 0x238]
mov ecx, esp
push eax
call fcn.00404e30
call fcn.00404e90
sub esp, 8
lea eax, [ebp - 0x224]
mov ecx, esp
push eax
call fcn.00404e30
call fcn.00404e90
int3