Function at 0x4039f1
Capabilities:
Read file on windows

Disassembly:
mov eax, 0x45fa0a
call fcn.00444db8
sub esp, 0x74
push ebx
push esi
mov esi, ecx
push edi
push 8
mov edi, dword [esi + 0x1c8]
lea eax, [esi + 0x104]
push edi
push eax
call fcn.00444e70
movzx ax, byte [edi + 8]
add edi, 8
mov word [esi + 0x10c], ax
inc edi
push 6
inc edi
mov ax, word [edi]
inc edi
inc edi
mov word [esi + 0x10e], ax
mov ax, word [edi]
inc edi
mov word [esi + 0x110], ax
inc edi
lea eax, [esi + 0x112]
push edi
push eax
call fcn.00444e70
add esp, 0x18
cmp word [esi + 0x110], 0x3b01
jge 0x403a87
mov eax, dword [esi + 0x1c8]
add edi, 0x1e
movzx ecx, word [eax + 0x14]
mov dword [esi + 0x130], ecx
movzx ecx, word [eax + 0x1a]
mov dword [esi + 0x15c], ecx
movzx eax, word [eax + 0x26]
mov dword [esi + 0x188], eax
jmp 0x403aab
mov edi, dword [esi + 0x1c8]
mov eax, dword [edi + 0x14]
add edi, 0x34
mov dword [esi + 0x130], eax
mov eax, dword [edi - 0x18]
mov dword [esi + 0x15c], eax
mov eax, dword [edi - 8]
mov dword [esi + 0x188], eax
push 0x1199
push dword [0x46f8a8]
call fcn.0040a517
mov eax, dword [edi]
and dword [ebp - 0x18], 0
add edi, 4
mov dword [esi + 0x134], eax
test eax, eax
jbe 0x403cf7
push 0x2c
call fcn.00444e5b
test eax, eax
pop ecx
je 0x403ae9
mov ecx, eax
call fcn.00402a48
mov ebx, eax
jmp 0x403aeb
xor ebx, ebx
cmp word [esi + 0x110], 0x3b04
jl 0x403aff
mov ax, word [edi]
inc edi
mov word [ebx + 0xc], ax
inc edi
mov al, byte [edi]
inc edi
cmp al, 0x16
mov byte [ebx + 0xe], al
jne 0x403b0d
mov byte [ebx + 0xe], 0x15
mov al, byte [edi]
inc edi
mov byte [ebx + 0xf], al
cmp word [esi + 0x110], 0x3b03
jge 0x403b28
cmp byte [ebx + 0xe], 0x19
jne 0x403b28
mov byte [ebx + 0xf], 1
cmp word [esi + 0x110], 0x3a4e
jge 0x403b3d
cmp byte [ebx + 0xe], 0x1a
jne 0x403b3d
mov byte [ebx + 0xf], 1
mov ax, word [edi]
inc edi
inc edi
mov word [ebx + 0x10], ax
mov eax, dword [edi]
add edi, 4
mov dword [ebx], eax
cmp word [esi + 0x110], 0x3c00
jge 0x403b7f
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x18], eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [edi + eax + 1]
jmp 0x403ba3
mov al, byte [edi]
inc edi
movzx eax, al
mov dword [ebp - 0x14], eax
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x18], eax
mov ecx, dword [ebp - 0x14]
inc ecx
push ecx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
add edi, dword [ebp - 0x14]
movzx eax, byte [ebx + 0xe]
push eax
lea eax, [ebp - 0x80]
push dword [ebx + 0x18]
push str._s_c
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [edi]
add esp, 0x10
mov dword [ebx + 8], eax
add edi, 4
cmp word [esi + 0x110], 0x3c00
jge 0x403bf7
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x1c], eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [edi + eax + 1]
jmp 0x403c1b
mov al, byte [edi]
inc edi
movzx eax, al
mov dword [ebp - 0x14], eax
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x1c], eax
mov ecx, dword [ebp - 0x14]
inc ecx
push ecx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
add edi, dword [ebp - 0x14]
cmp word [esi + 0x110], 0x3c00
jl 0x403c4e
mov al, byte [edi]
inc edi
test al, al
je 0x403c4e
movzx eax, al
mov dword [ebp - 0x14], eax
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x20], eax
mov ecx, dword [ebp - 0x14]
inc ecx
push ecx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
add edi, dword [ebp - 0x14]
mov ax, word [ebx + 0x10]
mov ecx, eax
or ecx, 2
cmp ax, cx
jne 0x403c64
movzx eax, word [edi]
shl eax, 0xa
jmp 0x403c66
mov eax, dword [ebx]
inc edi
mov dword [ebx + 4], eax
inc edi
cmp word [esi + 0x110], 0x3a4b
jge 0x403c7d
mov dword [ebx + 4], 0x7d0
cmp word [esi + 0x110], 0x3a4f
jl 0x403c9b
mov ax, word [edi]
mov word [ebx + 0x12], ax
mov eax, dword [edi]
shr eax, 0x10
mov word [ebx + 0x14], ax
add edi, 4
mov al, byte [ebp - 0xd]
push 0
lea ecx, [ebp - 0x38]
mov byte [ebp - 0x38], al
call fcn.00405f56
lea eax, [ebp - 0x80]
push eax
call fcn.00444de0
pop ecx
push eax
lea eax, [ebp - 0x80]
push eax
lea ecx, [ebp - 0x38]
call fcn.004062a3
and dword [ebp - 4], 0
lea eax, [ebp - 0x38]
push eax
lea ecx, [esi + 0x138]
call fcn.00405a61
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x38]
mov dword [eax], ebx
call fcn.00405f56
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp eax, dword [esi + 0x134]
jb 0x403ad2
cmp word [esi + 0x110], 0x3a4e
jge 0x403d74
mov eax, dword [esi + 0x13c]
cmp eax, dword [esi + 0x140]
mov dword [ebp - 0x18], eax
je 0x403d74
mov ebx, dword [eax + 0x10]
cmp byte [ebx + 0xf], 1
jne 0x403d6c
cmp byte [ebx + 0xe], 0x11
jne 0x403d6c
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
push 0x11
push dword [ebx + 0x18]
call fcn.004033cd
test eax, eax
je 0x403d6c
movzx eax, word [eax + 0xe]
dec eax
je 0x403d68
sub eax, 3
je 0x403d62
sub eax, 4
je 0x403d5c
sub eax, 8
je 0x403d56
sub eax, 8
je 0x403d56
sub eax, 8
jne 0x403d6c
mov byte [ebx + 0xf], 6
jmp 0x403d6c
mov byte [ebx + 0xf], 3
jmp 0x403d6c
mov byte [ebx + 0xf], 4
jmp 0x403d6c
mov byte [ebx + 0xf], 5
mov eax, dword [ebp - 0x18]
add eax, 0x14
jmp 0x403d08
cmp word [esi + 0x110], 0x3a51
jge 0x403dcf
mov eax, dword [esi + 0x13c]
mov dword [ebp - 0x18], eax
cmp eax, dword [esi + 0x140]
je 0x403dcf
mov eax, dword [ebp - 0x18]
mov ebx, dword [eax + 0x10]
cmp byte [ebx + 0xf], 2
je 0x403dc6
cmp byte [ebx + 0xe], 0x11
jne 0x403dc6
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
push 0x11
push dword [ebx + 0x18]
call fcn.004033cd
test eax, eax
je 0x403dc6
mov cx, word [eax + 4]
mov word [ebx + 0x12], cx
mov ax, word [eax + 8]
mov word [ebx + 0x14], ax
add dword [ebp - 0x18], 0x14
mov eax, dword [ebp - 0x18]
jmp 0x403d88
mov eax, dword [edi]
and dword [ebp - 0x18], 0
add edi, 4
mov dword [esi + 0x18c], eax
test eax, eax
jbe 0x403ee7
push 0x18
call fcn.00444e5b
test eax, eax
pop ecx
je 0x403e09
xor ecx, ecx
mov ebx, eax
and byte [eax + 0xc], cl
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], ecx
jmp 0x403e0b
xor ebx, ebx
mov eax, dword [edi]
add edi, 4
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov eax, dword [edi]
add edi, 4
mov dword [ebx + 8], eax
cmp word [esi + 0x110], 0x3b04
jl 0x403e2e
mov al, byte [edi]
inc edi
mov byte [ebx + 0xc], al
cmp word [esi + 0x110], 0x3c00
jge 0x403e60
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x10], eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [edi + eax + 1]
jmp 0x403e84
mov al, byte [edi]
inc edi
movzx eax, al
mov dword [ebp - 0x14], eax
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x10], eax
mov ecx, dword [ebp - 0x14]
inc ecx
push ecx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
add edi, dword [ebp - 0x14]
mov eax, dword [ebx + 0x10]
push 0
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0xd]
lea ecx, [ebp - 0x38]
mov byte [ebp - 0x38], al
call fcn.00405f56
push dword [ebp - 0x24]
call fcn.00444de0
pop ecx
push eax
lea ecx, [ebp - 0x38]
push dword [ebp - 0x24]
call fcn.004062a3
lea eax, [ebp - 0x38]
lea ecx, [esi + 0x190]
push eax
mov dword [ebp - 4], 1
call fcn.00405d91
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x38]
mov dword [eax], ebx
call fcn.00405f56
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp eax, dword [esi + 0x18c]
jb 0x403de6
push 0x119a
add edi, 4
push dword [0x46f8a8]
call fcn.0040a517
mov eax, dword [edi]
and dword [ebp - 0x18], 0
add edi, 4
mov dword [esi + 0x160], eax
test eax, eax
jbe 0x40400f
push 0x44
call fcn.00444e5b
pop ecx
mov dword [ebp - 0x24], eax
test eax, eax
mov dword [ebp - 4], 2
je 0x403f32
mov ecx, eax
call fcn.00402bdb
mov ebx, eax
jmp 0x403f34
xor ebx, ebx
or dword [ebp - 4], 0xffffffff
mov ax, word [edi]
inc edi
mov word [ebx + 0xc], ax
inc edi
mov eax, dword [edi]
add edi, 4
mov dword [ebx + 0x14], eax
mov dword [ebx + 4], eax
mov dword [ebx], eax
mov eax, dword [edi]
mov dword [ebx + 8], eax
add edi, 4
cmp word [esi + 0x110], 0x3c00
jge 0x403f88
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x10], eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [edi + eax + 1]
jmp 0x403fac
mov al, byte [edi]
inc edi
movzx eax, al
mov dword [ebp - 0x14], eax
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 0x10], eax
mov ecx, dword [ebp - 0x14]
inc ecx
push ecx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
add edi, dword [ebp - 0x14]
mov eax, dword [ebx + 0x10]
push 0
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0xd]
lea ecx, [ebp - 0x38]
mov byte [ebp - 0x38], al
call fcn.00405f56
push dword [ebp - 0x24]
call fcn.00444de0
pop ecx
push eax
lea ecx, [ebp - 0x38]
push dword [ebp - 0x24]
call fcn.004062a3
lea eax, [ebp - 0x38]
lea ecx, [esi + 0x164]
push eax
mov dword [ebp - 4], 3
call fcn.00405c92
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x38]
mov dword [eax], ebx
call fcn.00405f56
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp eax, dword [esi + 0x160]
jb 0x403f11
mov ebx, dword [esi + 0x194]
cmp ebx, dword [esi + 0x198]
je 0x404072
mov edi, dword [ebx + 0x10]
mov eax, dword [edi + 4]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [edi + 0x14], eax
push 0
push 0
push dword [edi + 8]
push dword [esi + 0x1c0]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x40406b
lea eax, [ebp - 0x28]
push 0
push eax
push dword [edi + 4]
push dword [edi + 0x14]
push dword [esi + 0x1c0]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [edi + 4]
cmp eax, dword [ebp - 0x28]
jne 0x40406b
add ebx, 0x14
jmp 0x404015
xor al, al
jmp 0x404371
mov edi, dword [esi + 0x13c]
cmp edi, dword [esi + 0x140]
je 0x40409b
mov eax, dword [edi + 0x10]
lea ecx, [ebp - 0x24]
push ecx
movzx ecx, byte [eax + 0xe]
push ecx
mov ecx, esi
push dword [eax + 0x18]
call fcn.004033cd
add edi, 0x14
jmp 0x404078
mov eax, dword [esi + 0x168]
mov dword [ebp - 0x20], eax
cmp eax, dword [esi + 0x16c]
je 0x40432a
mov eax, dword [ebp - 0x20]
mov edi, dword [eax + 0x10]
mov eax, dword [edi + 8]
add eax, dword [esi + 0x1c8]
movsx ecx, word [eax]
inc eax
mov dword [edi + 0x1c], ecx
inc eax
mov dword [ebp - 0x18], eax
mov eax, ecx
test eax, eax
je 0x40425b
and dword [ebp - 0x1c], 0
test eax, eax
jbe 0x40425b
push 0x10
call fcn.00444e5b
test eax, eax
pop ecx
je 0x4040fd
xor ecx, ecx
mov ebx, eax
and byte [eax + 4], cl
mov dword [eax], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
jmp 0x4040ff
xor ebx, ebx
mov eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
push dword [ebp - 0x18]
mov al, byte [eax]
mov byte [ebx + 4], al
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00444e5b
pop ecx
mov dword [ebx + 8], eax
push dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push dword [ebx + 8]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp - 0x18]
push dword [ebp - 0x1c]
push dword [edi + 0x10]
lea eax, [ecx + eax + 1]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x80]
push str._s_d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov al, byte [ebp - 0xd]
add esp, 0x10
lea ecx, [ebp - 0x38]
mov byte [ebp - 0x38], al
push 0
call fcn.00405f56
lea eax, [ebp - 0x80]
push eax
call fcn.00444de0
pop ecx
push eax
lea eax, [ebp - 0x80]
push eax
lea ecx, [ebp - 0x38]
call fcn.004062a3
lea eax, [ebp - 0x38]
lea ecx, [esi + 0x190]
push eax
mov dword [ebp - 4], 4
call fcn.00405dfd
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x24], eax
call fcn.00405f56
mov eax, dword [ebp - 0x24]
cmp eax, dword [esi + 0x198]
je 0x4041fe
mov eax, dword [eax + 0x10]
test eax, eax
mov dword [ebp - 0x14], eax
je 0x4041fe
push dword [ebp - 0x24]
lea ecx, [esi + 0x190]
call fcn.00405e30
mov eax, dword [ebp - 0x14]
dec dword [esi + 0x18c]
mov eax, dword [eax + 4]
mov dword [ebx], eax
inc eax
push eax
call fcn.00444e5b
push dword [ebx]
mov ecx, dword [ebp - 0x14]
mov dword [ebx + 0xc], eax
push dword [ecx + 0x14]
push eax
call fcn.00444e70
mov ecx, dword [ebp - 0x14]
add esp, 0x10
call fcn.00403925
push dword [ebp - 0x14]
call fcn.00444382
pop ecx
mov eax, dword [ebx + 8]
push 0
mov dword [ebp - 0x24], eax
mov al, byte [ebp - 0xd]
lea ecx, [ebp - 0x48]
mov byte [ebp - 0x48], al
call fcn.00405f56
push dword [ebp - 0x24]
call fcn.00444de0
pop ecx
push eax
lea ecx, [ebp - 0x48]
push dword [ebp - 0x24]
call fcn.004062a3
lea eax, [ebp - 0x48]
lea ecx, [edi + 0x20]
push eax
mov dword [ebp - 4], 5
call fcn.00405b8c
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x48]
mov dword [eax], ebx
call fcn.00405f56
inc dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp eax, dword [edi + 0x1c]
jb 0x4040e0
push dword [edi + 0x10]
and dword [edi + 0x18], 0
lea eax, [ebp - 0x80]
push str._sProperty
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov al, byte [ebp - 0xd]
add esp, 0xc
lea ecx, [ebp - 0x58]
mov byte [ebp - 0x58], al
push 0
call fcn.00405f56
lea eax, [ebp - 0x80]
push eax
call fcn.00444de0
pop ecx
push eax
lea eax, [ebp - 0x80]
push eax
lea ecx, [ebp - 0x58]
call fcn.004062a3
lea eax, [ebp - 0x58]
lea ecx, [esi + 0x190]
push eax
mov dword [ebp - 4], 6
call fcn.00405dfd
or dword [ebp - 4], 0xffffffff
mov ebx, eax
push 1
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x24], ebx
call fcn.00405f56
cmp ebx, dword [esi + 0x198]
je 0x40431e
mov eax, ebx
mov ebx, dword [eax + 0x10]
test ebx, ebx
je 0x40431e
push eax
lea ecx, [esi + 0x190]
call fcn.00405e30
dec dword [esi + 0x18c]
mov eax, dword [ebx]
mov dword [edi], eax
mov eax, dword [ebx + 4]
mov dword [edi + 0x14], eax
mov dword [edi + 4], eax
mov eax, dword [ebx + 4]
inc eax
push eax
call fcn.00444e5b
push dword [edi + 4]
mov dword [edi + 0x18], eax
push dword [ebx + 0x14]
push eax
call fcn.00444e70
add esp, 0x10
mov ecx, ebx
call fcn.00403925
push ebx
call fcn.00444382
pop ecx
add dword [ebp - 0x20], 0x14
mov eax, dword [ebp - 0x20]
jmp 0x4040a4
cmp word [esi + 0x10e], 2
jne 0x40436f
mov edi, dword [sym.imp.USER32.dll_FindWindowA]
xor ebx, ebx
cmp dword [esi + 0x1b4], ebx
mov byte [esi + 0x1cc], 1
jne 0x404359
push str.DemoNow
push ebx
call edi
mov dword [esi + 0x1b4], eax
cmp dword [esi + 0x1b4], ebx
jne 0x40436f
push str.InstallFromTheWeb
push ebx
call edi
mov dword [esi + 0x1b4], eax
mov al, 1
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret