Function at 0x407330
Capabilities:
Check if file exists
Extract resource via kernel32 functions
Get file attributes
Move file
Set file attributes
Write file on windows

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c97a2
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x2b0
mov eax, dword [0x4f3480]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov dword [ebp - 0x2b4], ecx
push 0x104
lea eax, [ebp - 0x220]
mov dword [ebp - 4], 0
push eax
xor edi, edi
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4073b0
test al, 2
je 0x4073b0
and eax, 0xfffffffd
push eax
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 2
push 0
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov ecx, eax
mov dword [ebp - 0x2b8], ecx
test ecx, ecx
je 0x407abc
mov eax, dword [ebp - 0x2b4]
push 0xa
movzx eax, ax
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov edi, eax
test edi, edi
je 0x407aea
push edi
push dword [ebp - 0x2b8]
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x407aea
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x2c0], eax
test eax, eax
je 0x407aea
push edi
push dword [ebp - 0x2b8]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push esi
mov dword [ebp - 0x2b4], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x407aea
push 0
lea eax, [ebp - 0x2bc]
push eax
push dword [ebp - 0x2b4]
push dword [ebp - 0x2c0]
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x2b4]
cmp eax, dword [ebp - 0x2bc]
jne 0x407aea
cmp byte [ebx + 8], 0
mov edi, 1
mov dword [ebp - 0x2b4], edi
je 0x407ab0
mov ecx, esi
mov dword [ebp - 0x228], 0
xorps xmm0, xmm0
mov dword [ebp - 0x224], 0
movups xmmword [ebp - 0x238], xmm0
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4074c0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x238]
call fcn.0041d3c0
mov byte [ebp - 4], 1
lea edx, [ebp - 0x238]
mov edi, dword [ebp - 0x224]
cmp edi, 7
mov esi, dword [ebp - 0x238]
mov eax, dword [ebp - 0x228]
cmova edx, esi
test eax, eax
je 0x407528
or ecx, 0xffffffff
dec eax
cmp eax, ecx
cmovb ecx, eax
cmp word [edx + ecx*2], 0x2e
lea ecx, [edx + ecx*2]
je 0x407522
cmp ecx, edx
je 0x407528
sub ecx, 2
cmp word [ecx], 0x2e
jne 0x407515
sub ecx, edx
sar ecx, 1
jmp 0x40752b
or ecx, 0xffffffff
cmp ecx, 0xffffffff
je 0x407a76
cmp dword [ebp - 0x228], ecx
lea eax, [ebp - 0x238]
xorps xmm0, xmm0
mov dword [ebp - 0x270], 0
cmovb ecx, dword [ebp - 0x228]
cmp edi, 7
push ecx
cmova eax, esi
mov dword [ebp - 0x26c], 0
push eax
lea ecx, [ebp - 0x280]
movups xmmword [ebp - 0x280], xmm0
call fcn.0041d3c0
push 4
push str..zip
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 2
call fcn.0041b730
mov dword [ebp - 0x240], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x250], xmm0
mov dword [ebp - 0x23c], 0
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x250], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x240], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x26c]
cmp ecx, 7
jbe 0x40761a
mov edx, dword [ebp - 0x280]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x407610
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b18
push ecx
push edx
call fcn.0049d2cb
add esp, 8
cmp dword [ebp - 0x23c], 7
lea ecx, [ebp - 0x250]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileW]
lea eax, [ebp - 0x238]
cmova ecx, dword [ebp - 0x250]
cmp dword [ebp - 0x224], 7
push ecx
cmova eax, dword [ebp - 0x238]
push eax
call esi
test eax, eax
je 0x407a05
xorps xmm0, xmm0
mov dword [ebp - 0x288], 0
xor eax, eax
mov dword [ebp - 0x284], 7
movups xmmword [ebp - 0x298], xmm0
mov word [ebp - 0x298], ax
push ecx
push 0x4e7a14
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 5
call fcn.00417880
cmp eax, 0xffffffff
jne 0x4076ac
push 1
push 0x4e7a1c
lea ecx, [ebp - 0x298]
call fcn.0041b470
jmp 0x407769
push ecx
push 0x4e7a14
lea ecx, [ebp - 0x238]
call fcn.00417880
mov ecx, eax
mov dword [ebp - 0x258], 0
cmp dword [ebp - 0x228], ecx
lea eax, [ebp - 0x238]
xorps xmm0, xmm0
mov dword [ebp - 0x254], 0
cmovb ecx, dword [ebp - 0x228]
cmp dword [ebp - 0x224], 7
push ecx
cmova eax, dword [ebp - 0x238]
lea ecx, [ebp - 0x268]
push eax
movups xmmword [ebp - 0x268], xmm0
call fcn.0041d3c0
mov ecx, dword [ebp - 0x284]
cmp ecx, 7
jbe 0x40774b
mov edx, dword [ebp - 0x298]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x407741
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b27
push ecx
push edx
call fcn.0049d2cb
add esp, 8
movups xmm0, xmmword [ebp - 0x268]
movups xmmword [ebp - 0x298], xmm0
movq xmm0, qword [ebp - 0x258]
movq qword [ebp - 0x288], xmm0
xorps xmm0, xmm0
mov dword [ebp - 0x270], 0
xor eax, eax
mov dword [ebp - 0x26c], 7
movups xmmword [ebp - 0x280], xmm0
mov word [ebp - 0x280], ax
lea eax, [ebp - 0x280]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x298]
push eax
lea edx, [ebx + 0x10]
lea ecx, [ebp - 0x250]
call fcn.00406a60
add esp, 8
test al, al
lea eax, [ebp - 0x250]
je 0x407964
cmp dword [ebp - 0x23c], 7
cmova eax, dword [ebp - 0x250]
push eax
call fcn.004ac450
add esp, 4
cmp byte [ebx + 0xc], 0
je 0x407983
mov ecx, dword [ebp - 0x288]
mov eax, accept
sub eax, ecx
cmp eax, 1
jb 0x407b1d
cmp dword [ebp - 0x284], 7
lea eax, [ebp - 0x298]
push 1
cmova eax, dword [ebp - 0x298]
push 0x4e79fc
push ecx
push eax
push ecx
push dword [ebp - 0x2bc]
lea ecx, [ebp - 0x2b0]
call fcn.0041eb00
mov byte [ebp - 4], 7
lea eax, [ebp - 0x280]
cmp dword [ebp - 0x26c], 7
lea ecx, [ebp - 0x2b0]
push dword [ebp - 0x270]
cmova eax, dword [ebp - 0x280]
push eax
call fcn.0041b730
mov dword [ebp - 0x258], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x268], xmm0
mov dword [ebp - 0x254], 0
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x268], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x258], xmm0
mov word [eax], cx
lea ecx, [ebp - 0x238]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x268]
cmp dword [ebp - 0x224], 7
cmova ecx, dword [ebp - 0x238]
cmp dword [ebp - 0x254], 7
push ecx
cmova eax, dword [ebp - 0x268]
push eax
call esi
mov ecx, dword [ebp - 0x254]
cmp ecx, 7
jbe 0x407905
mov edx, dword [ebp - 0x268]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4078fb
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b22
push ecx
push edx
call fcn.0049d2cb
add esp, 8
mov ecx, dword [ebp - 0x29c]
xor eax, eax
mov dword [ebp - 0x258], 0
mov dword [ebp - 0x254], 7
mov word [ebp - 0x268], ax
cmp ecx, 7
jbe 0x407983
mov edx, dword [ebp - 0x2b0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x407958
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b22
push ecx
push edx
call fcn.0049d2cb
add esp, 8
jmp 0x407983
cmp dword [ebp - 0x23c], 7
cmova eax, dword [ebp - 0x250]
push eax
call fcn.004ac450
add esp, 4
xor eax, eax
mov dword [ebp - 0x2b4], eax
mov ecx, dword [ebp - 0x26c]
cmp ecx, 7
jbe 0x4079c3
mov edx, dword [ebp - 0x280]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4079b9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b27
push ecx
push edx
call fcn.0049d2cb
add esp, 8
mov ecx, dword [ebp - 0x284]
cmp ecx, 7
jbe 0x407a2a
mov edx, dword [ebp - 0x298]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4079f9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b27
push ecx
push edx
call fcn.0049d2cb
add esp, 8
jmp 0x407a2a
cmp dword [ebp - 0x23c], 7
lea eax, [ebp - 0x250]
cmova eax, dword [ebp - 0x250]
push eax
call fcn.004ac450
add esp, 4
xor eax, eax
mov dword [ebp - 0x2b4], eax
mov ecx, dword [ebp - 0x23c]
cmp ecx, 7
jbe 0x407a6a
mov edx, dword [ebp - 0x250]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x407a60
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b2c
push ecx
push edx
call fcn.0049d2cb
add esp, 8
mov esi, dword [ebp - 0x238]
mov edi, dword [ebp - 0x224]
cmp edi, 7
jbe 0x407aaa
lea edi, [edi*2 + 2]
mov eax, esi
cmp edi, 0x1000
jb 0x407aa0
mov esi, dword [eax - 4]
add edi, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b31
push edi
push esi
call fcn.0049d2cb
add esp, 8
mov edi, dword [ebp - 0x2b4]
push dword [ebp - 0x2b8]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [ebx + 0x24]
cmp ecx, 7
jbe 0x407af8
mov edx, dword [ebx + 0x10]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x407aee
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407b36
jmp 0x407aee
xor edi, edi
jmp 0x407ab0
push ecx
push edx
call fcn.0049d2cb
add esp, 8
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0049d2bd
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.004a2926
call fcn.00401350
call fcn.004a2926
call fcn.004a2926
call fcn.004a2926
call fcn.004a2926
call fcn.004a2926
int3