Function at 0x407690
Capabilities:
Delete file
Extract resource via kernel32 functions
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55e7c1
mov eax, dword fs:[0]
push eax
mov eax, 0x1148
call fcn.0053e620
mov eax, dword [0x5c7ed0]
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 - 0x1148], ebx
call fcn.0040ea50
call fcn.00425c78
push 0x5709c0
push 0x8c
mov eax, dword [eax + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
test esi, esi
je 0x40771b
call fcn.00425c78
push esi
mov ecx, dword [eax + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov esi, eax
test esi, esi
je 0x40771b
push esi
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
call fcn.00402a50
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_FreeResource]
call fcn.00403c80
lea eax, [ebp - 0x290]
mov ecx, ebx
push eax
call fcn.00406730
mov dword [ebx + 0x87c], eax
call fcn.00416b7a
push eax
lea ecx, [ebp - 0x114c]
call fcn.004159f0
lea eax, [ebp - 0x290]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0x114c]
push str._APP__OS_version_:__s
push eax
call fcn.004064e0
push dword [ebp - 0x114c]
call fcn.00403d10
add esp, 0x10
cmp dword [ebx + 0x87c], 6
jl 0x40794d
call fcn.00425c78
push 0
push str.DoNotDisplayVistaWarnning
push str.Flag
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x7c]
test eax, eax
jne 0x40794d
lea eax, [ebp - 0x490]
push eax
push 0x200
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0x200
lea eax, [ebp - 0x210]
xor bl, bl
push 0
push eax
call fcn.0053db90
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea eax, [ebp - 0x1144]
add esp, 0xc
push eax
push 0x24
push 0
call edi
mov esi, dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
lea eax, [ebp - 0x210]
push eax
push dword [ebp - 0x1144]
call esi
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x490]
push eax
call fcn.0053ef90
test eax, eax
movzx ebx, bl
mov eax, 1
push 0x200
cmovne ebx, eax
lea eax, [ebp - 0x210]
push 0
push eax
call fcn.0053db90
add esp, 0x14
lea eax, [ebp - 0x1144]
push eax
push 0x26
push 0
call edi
lea eax, [ebp - 0x210]
push eax
push dword [ebp - 0x1144]
call esi
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x490]
push eax
call fcn.0053ef90
test eax, eax
movzx ebx, bl
mov eax, 1
push 0x200
cmovne ebx, eax
lea eax, [ebp - 0x210]
push 0
push eax
call fcn.0053db90
add esp, 0x14
lea eax, [ebp - 0x1144]
push eax
push 5
push 0
call edi
lea eax, [ebp - 0x210]
push eax
push dword [ebp - 0x1144]
call esi
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x490]
push eax
call fcn.0053ef90
add esp, 8
test eax, eax
jne 0x4078b8
test bl, bl
je 0x407947
push 0
lea ecx, [ebp - 0x1140]
call fcn.00409c50
push 0
push str.STR_101
mov byte [ebp - 4], 1
call fcn.004029b0
mov ecx, esp
mov dword [ebp - 0x1154], esp
push eax
call fcn.00405eb0
push str.STR_100
mov byte [ebp - 4], 2
call fcn.004029b0
mov ecx, esp
push eax
call fcn.00405eb0
lea ecx, [ebp - 0x1140]
mov byte [ebp - 4], 1
call fcn.0040a170
lea ecx, [ebp - 0x1140]
call fcn.0042122b
cmp byte [ebp - 0x5e4], 0
je 0x407938
call fcn.00425c78
push 1
push str.DoNotDisplayVistaWarnning
push str.Flag
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x80]
lea ecx, [ebp - 0x1140]
mov byte [ebp - 4], 0
call fcn.004061a0
mov ebx, dword [ebp - 0x1148]
push str.STR_102
call fcn.004029b0
add esp, 4
mov ecx, ebx
push eax
call fcn.0040f190
lea eax, [ebp - 0x4a0]
xorps xmm0, xmm0
push eax
push dword [ebx + 0x20]
movdqu xmmword [ebp - 0x4a0], xmm0
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edi, dword [ebp - 0x498]
mov ebx, dword [ebp - 0x494]
sub edi, dword [ebp - 0x4a0]
sub ebx, dword [ebp - 0x49c]
call fcn.00425c78
push 0x32
push 0x570a18
push str.Window_Position
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x7c]
mov dword [ebp - 0x4a0], eax
call fcn.00425c78
push 0x32
push 0x570a2c
push str.Window_Position
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x7c]
mov esi, dword [ebp - 0x4a0]
push 1
mov dword [ebp - 0x49c], eax
lea ecx, [eax + ebx]
mov ebx, dword [ebp - 0x1148]
mov dword [ebp - 0x494], ecx
lea edx, [esi + edi]
sub ecx, eax
mov dword [ebp - 0x498], edx
push ecx
sub edx, esi
mov ecx, ebx
push edx
push eax
push esi
call fcn.004208ae
push 0
push 0
push 0
push 1
push 1
lea ecx, [ebx + 0x884]
call fcn.004208ae
push 0x8a
push 0x87
lea ecx, [ebx + 0xac8]
call fcn.0040da30
push 0x1cd
push 0x206
lea ecx, [ebx + 0xac8]
call fcn.0040dd10
push 0
lea ecx, [ebx + 0xac8]
call fcn.00420142
push 0x8a
push 0x85
lea ecx, [ebx + 0xbd8]
call fcn.0040da30
push 0x1fe
push 0x212
lea ecx, [ebx + 0xbd8]
call fcn.0040dd10
push 0
lea ecx, [ebx + 0xbd8]
call fcn.00420b2a
push 6
push 0x86
lea ecx, [ebx + 0x918]
call fcn.0040d390
push 0xc8
lea ecx, [ebx + 0x918]
call fcn.0040d660
push 1
push 0xa
push 0xa
push 0x1d6
push 0x19
lea ecx, [ebx + 0x918]
call fcn.004208ae
push 0
lea ecx, [ebx + 0x918]
call fcn.0040d320
push 0
lea ecx, [ebx + 0x918]
call fcn.0040d690
push 0xff
push 0xcc0020
push 0x1b2
push 0x2b6
push 0
push 0
push 0x88
push 0x14
push 0x1c
lea ecx, [ebx + 0x98]
call fcn.0040cb40
mov ecx, ebx
mov dword [ebx + 0xce8], 0
call fcn.00408340
mov ecx, ebx
call fcn.00407280
lea eax, [ebx + 0x849]
mov ecx, ebx
push eax
push str.Gunz.exe
call fcn.004065a0
lea eax, [ebx + 0x862]
mov ecx, ebx
push eax
push 0x570a3c
call fcn.004065a0
push str._APP__Window_created_successfully.
call fcn.00403d10
add esp, 4
lea eax, [ebp - 0x5e0]
push eax
push 0x570a74
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x407b72
push 0x570a74
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0
push 0x64
push 0
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_SetTimer]
mov ecx, dword [ebp - 0x114c]
add ecx, 0xfffffff0
call fcn.00402990
mov eax, 1
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.0053bf68
mov esp, ebp
pop ebp
ret