Function at 0x40fd30
Capabilities:
Check if file exists
Copy file
Create process on windows
Delete file
Get common file path
Get file attributes
Set current directory
Set file attributes

Disassembly:
sub esp, 0x6a0
mov ecx, 0x425e18
push ebx
mov ebx, dword [esp + 0x6a8]
push ebp
push esi
push edi
mov dword [0xf12854], ebx
call fcn.0040fb50
mov ecx, 0x425e18
call fcn.0040f080
mov eax, dword [esp + 0x6bc]
push eax
push 0x41b650
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
mov eax, dword [0xf13290]
sete cl
cmp eax, 1
mov byte [0x9548dc], cl
jne 0x40ff9a
lea edx, [esp + 0x3ac]
push 0x104
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x1a4]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x1a4]
push str.anim.tmp
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x3ac]
lea eax, [esp + 0x2a8]
push edx
push eax
call ebx
lea ecx, [esp + 0x2a8]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
dec eax
js 0x40fe1f
mov ecx, 1
mov edi, 0x41a23c
lea esi, [esp + eax + 0x2a8]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40fe07
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
je 0x40fe10
dec eax
jns 0x40fdeb
jmp 0x40fe1f
lea edx, [esp + eax + 0x2a9]
push 0xf13108
push edx
call ebx
lea eax, [esp + 0x2a8]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0x1a4]
push 0x80
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea edx, [esp + 0x1a4]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [esp + 0x1a4]
lea ecx, [esp + 0x1a4]
push eax
push 0
push 0xf13108
push ecx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
lea edx, [esp + 0x1a4]
push 0
lea eax, [esp + 0x3b0]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
push 0x80
push 3
push 0
push 1
lea ecx, [esp + 0x1b8]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40fec0
mov edx, dword [0x9548e0]
push 0x10
push 0x41a1d4
push 0x41b61c
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 1
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov ebx, eax
lea eax, [esp + 0x3ac]
push eax
lea ecx, [esp + 0x1a8]
push ebx
push ecx
lea edx, [esp + 0x4bc]
push str._s__d___s_
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x174]
add esp, 0x14
rep stosd dword es:[edi], eax
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], eax
mov eax, 0xc
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], eax
lea edx, [esp + 0x150]
lea eax, [esp + 0x160]
mov dword [esp + 0x1c], ecx
push edx
push eax
push ecx
push ecx
mov dword [esp + 0x30], ecx
push ecx
lea ecx, [esp + 0x2c]
push 1
lea edx, [esp + 0x3c]
push ecx
lea eax, [esp + 0x4cc]
push edx
push eax
push 0
mov dword [esp + 0x188], 0x44
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x40ff7c
mov ecx, 0x425e18
call fcn.0040f940
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
call edi
push esi
call edi
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x6a0
ret 0x10
mov ecx, 0x425e18
call fcn.0040f5d0
mov ecx, dword [0xf13294]
mov edx, dword [ecx + 4]
push edx
call fcn.004110bd
add esp, 4
mov esi, eax
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0xf13294]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [eax + 8]
push ecx
push 0xf01e18
call ebp
mov ecx, 0x41
xor eax, eax
mov edi, 0xf01e18
push 0x41b5f4
rep stosd dword es:[edi], eax
mov ecx, 7
lea edi, [esp + 0x34]
rep stosd dword es:[edi], eax
push 0xf13058
call ebp
push str.setup_controller
push 0xf12788
call ebp
push ebx
call fcn.004107f0
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x50]
add esp, 4
rep stosd dword es:[edi], eax
push str.install.ist
mov ecx, 0x425e18
call fcn.004055f0
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test eax, eax
jne 0x41016d
lea edx, [esp + 0x4c]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [esp + 0x4c]
push 0x41a23c
push eax
call esi
lea ecx, [esp + 0x4c]
push 0x9f04e4
push ecx
call esi
lea edx, [esp + 0x4c]
push str.install.ist
push edx
call esi
lea eax, [esp + 0x4c]
push eax
call edi
cmp eax, 0xffffffff
jne 0x410138
push 0x955a28
call fcn.004014c0
add esp, 4
test al, al
jne 0x4100c0
push 0x10
push 0x41a1d4
push 0x41b580
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
lea ecx, [esp + 0x4c]
push 0x41a79c
push ecx
mov byte [esp + 0x54], al
mov byte [esp + 0x55], 0
call esi
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov ecx, 0x425e18
call fcn.0040f080
lea eax, [esp + 0x4c]
push 0x9f04e4
push eax
call esi
lea ecx, [esp + 0x4c]
push str.install.ist
push ecx
call esi
lea edx, [esp + 0x4c]
push edx
call edi
cmp eax, 0xffffffff
jne 0x410131
push 0x10
push 0x41a1d4
push 0x41b580
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
mov ebx, dword [esp + 0x6b4]
lea eax, [esp + 0x4c]
mov ecx, 0x425e18
push eax
call fcn.004055f0
test eax, eax
jne 0x41016d
push 0x10
push 0x41a1d4
push 0x41b580
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
cmp dword [0x9548d4], 1
jne 0x410255
mov eax, dword [0xef97f0]
xor ecx, ecx
mov cl, byte [0xef97f1]
and eax, 0xff
shl eax, 8
or eax, ecx
push 0
push eax
call fcn.00401000
add esp, 8
test eax, eax
je 0x410255
mov eax, dword [0xef97f4]
mov edx, eax
shl edx, 6
add edx, eax
lea eax, [edx*4 + 0xef97f8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x41022e
mov ecx, dword [0x9548e0]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
push 0x34
push 0x955d34
push 0x41b4e0
push ecx
call esi
cmp eax, 6
jne 0x4107d3
mov edx, dword [0x9548e0]
push 0x40
push 0x955d34
push 0x41b468
push edx
call esi
mov eax, dword [0xef97f4]
push 1
mov ecx, eax
push 0
shl ecx, 6
add ecx, eax
push 0
lea edx, [ecx*4 + 0xef97f8]
push edx
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
mov eax, dword [0x9548e0]
push 0x10
push 0x955d34
push 0x41b43c
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
mov ecx, dword [esp + 0x6c0]
push ecx
push ebx
call fcn.00410870
add esp, 8
test eax, eax
je 0x4107d3
mov edx, dword [0x9548e0]
push edx
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push 0xc
push ebx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
cmp eax, 8
jg 0x410295
push 0x41b338
jmp 0x4107cb
mov eax, dword [0x9548e0]
push ebx
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ebx, dword [0x425e34]
push 0
call dword [sym.imp.USER32.dll_GetSystemMetrics]
cmp eax, ebx
jl 0x4107b6
mov ebx, dword [0x425e38]
push 1
call dword [sym.imp.USER32.dll_GetSystemMetrics]
cmp eax, ebx
jl 0x4107b6
push str.install.bmp
call edi
cmp eax, 0xffffffff
jne 0x410369
push str.install.cwd
call edi
cmp eax, 0xffffffff
jne 0x410369
push 0x955a28
call fcn.004014c0
add esp, 4
mov byte [esp + 0x13], al
test al, al
jne 0x41033c
push 0x955924
call fcn.004014c0
add esp, 4
mov byte [esp + 0x13], al
test al, al
jne 0x41033c
mov ecx, dword [0x9548e0]
push 0x10
push 0x41a1d4
push 0x41b2c0
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
lea edx, [esp + 0x13]
lea eax, [esp + 0x4c]
push edx
push eax
call ebp
lea ecx, [esp + 0x4c]
push 0x41a79c
push ecx
call esi
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov ecx, 0x425e18
call fcn.0040f080
push 0x955d34
push 0xf12788
push 0
push 0
call dword [sym.imp.USER32.dll_FindWindowExA]
test eax, eax
jne 0x4107d3
mov ecx, 0x425e18
call fcn.00409eb0
mov ecx, 0x425e18
call fcn.0040b400
test eax, eax
jne 0x4103b6
mov ecx, 0x425e18
call fcn.00405010
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
mov eax, dword [0x425e38]
mov ecx, dword [0x425e34]
mov edx, dword [0x9548e0]
push 0
push 1
push eax
push ecx
push edx
call fcn.004013f0
mov eax, dword [0x9548e0]
add esp, 0x14
push 0x955d34
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
test eax, eax
jne 0x410404
mov ecx, 0x425e18
call fcn.00405010
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10
mov ecx, dword [esp + 0x6c0]
mov edx, dword [0x9548e0]
push ecx
push edx
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [0x9548e0]
push eax
call dword [sym.imp.USER32.dll_UpdateWindow]
mov eax, dword [0xf130fc]
test eax, eax
jne 0x41057f
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
mov ebp, dword [sym.imp.USER32.dll_PeekMessageA]
mov edi, dword [sym.imp.USER32.dll_DialogBoxParamA]
push 1
push 0
push 0
lea ecx, [esp + 0x3c]
push 0
push ecx
call ebp
test eax, eax
je 0x41046d
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
mov eax, dword [0x9eee34]
cmp eax, 0xa
jl 0x41078e
cmp eax, 0xe
jge 0x41078e
mov eax, dword [0x9eee30]
mov ecx, 0x425e18
test eax, eax
jne 0x410499
call fcn.0040d530
jmp 0x41049e
call fcn.0040d610
cmp dword [0x9eee34], 0xe
jne 0x410718
cmp eax, 1
jne 0x410700
mov eax, dword [0x9eee30]
mov bl, byte [0x9f06ec]
test eax, eax
jne 0x4106d4
test bl, bl
jbe 0x4106d4
mov ecx, 0x425e18
call fcn.0040e9e0
mov eax, dword [0xf13100]
test eax, eax
jne 0x4105d1
cmp bl, 1
je 0x4104f4
cmp bl, 0x11
jne 0x4105d1
mov ecx, dword [0x9548e0]
push 0x40
push 0x41b2a8
push 0x41b278
push ecx
call esi
push 0x955b2c
call fcn.004014c0
add esp, 4
mov byte [esp + 0x14], al
test al, al
jne 0x4105a9
mov edx, dword [0x9548e0]
push 0x41
push 0x41b2a8
push 0x41b230
push edx
call esi
cmp eax, 2
jne 0x410590
mov eax, dword [0x9548e0]
push 0x24
push 0x41b2a8
push 0x41b200
push eax
call esi
cmp eax, 6
jne 0x410522
push 1
mov ecx, 0x425e18
call fcn.0040d6a0
mov ecx, 0x425e18
call fcn.0040b550
mov ecx, 0x425e18
call fcn.00409fa0
mov dword [0x9eee34], 9
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6a0
ret 0x10
push 0x955b2c
call fcn.004014c0
add esp, 4
mov byte [esp + 0x14], al
test al, al
je 0x410522
mov ecx, dword [esp + 0x14]
mov dword [0x9eee34], 0xb
push ecx
mov ecx, 0x425e18
call fcn.00408f10
mov dword [0xf13100], 1
jmp 0x410686
mov eax, dword [0xf13104]
test eax, eax
jne 0x4106a3
cmp bl, 0x10
je 0x4105ec
cmp bl, 0x11
jne 0x4106a3
mov edx, dword [0x9548e0]
push 0x40
push 0x41b2a8
push 0x41b1d0
push edx
call esi
push 0x955c30
call fcn.004014c0
add esp, 4
mov byte [esp + 0x14], al
test al, al
jne 0x410663
mov eax, dword [0x9548e0]
push 0x41
push 0x41b2a8
push 0x41b188
push eax
call esi
cmp eax, 2
jne 0x41064e
mov ecx, dword [0x9548e0]
push 0x24
push 0x41b2a8
push 0x41b200
push ecx
call esi
cmp eax, 6
jne 0x410616
jmp 0x410555
push 0x955c30
call fcn.004014c0
add esp, 4
mov byte [esp + 0x14], al
test al, al
je 0x410616
mov edx, dword [esp + 0x14]
mov ecx, 0x425e18
push edx
mov dword [0x9eee34], 0xc
call fcn.00409230
mov dword [0xf13104], 1
mov eax, dword [0x9548e0]
mov ecx, dword [0xf127ec]
push 0
push 0x410a20
push eax
push 0x65
push ecx
call edi
jmp 0x410798
push 0
mov ecx, 0x425e18
call fcn.0040d6a0
push 0
mov ecx, 0x425e18
call fcn.00409f40
mov ecx, 0x425e18
call fcn.0040b120
mov ecx, 0x425e18
call fcn.0040a220
jmp 0x410798
push 0
mov ecx, 0x425e18
call fcn.0040d6a0
cmp dword [0x9eee30], 1
jne 0x41070c
push 0xf01e18
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [0xf130f8], 1
jmp 0x410745
push 1
mov ecx, 0x425e18
call fcn.0040d6a0
mov dword [0xf130f8], 1
jmp 0x410745
test eax, eax
jne 0x41073c
push 1
mov ecx, 0x425e18
call fcn.0040d6a0
mov ecx, 0x425e18
mov dword [0xf130f8], 0
call fcn.0040b550
cmp dword [0xf130f8], 1
jne 0x410765
push 0
mov ecx, 0x425e18
call fcn.00409f40
mov ecx, 0x425e18
call fcn.0040b120
mov dword [0xf130f8], 0
mov ecx, 0x425e18
call fcn.0040a220
cmp dword [0x9eee34], 0x10
jne 0x410798
mov ecx, 0x425e18
call fcn.00409fa0
mov dword [0x9eee34], 9
jmp 0x410798
mov ecx, 0x425e18
call fcn.0040d400
mov eax, dword [0xf130fc]
test eax, eax
je 0x410444
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6a0
ret 0x10
cmp dword [0x425e28], 1
jne 0x4107c6
push 0x41b060
jmp 0x4107cb
push 0x41af38
call fcn.004013a0
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x6a0
ret 0x10