Function at 0x409755
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x26c
mov eax, dword [0x448008]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov ebx, edx
xor esi, esi
push edi
mov edi, ecx
test ebx, ebx
je 0x409778
mov dword [ebx + 4], esi
mov eax, dword [edi]
xorps xmm0, xmm0
push esi
push esi
push esi
movlpd qword [ebp - 0x98], xmm0
call dword [eax + 0x20]
mov eax, dword [edi]
lea ecx, [ebp - 0x168]
push esi
push 0x40
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
mov eax, 0x5a4d
cmp word [ebp - 0x168], ax
jne 0x409e1f
mov eax, dword [ebp - 0x12c]
test eax, eax
je 0x409e18
js 0x409e18
mov esi, dword [edi]
mov ecx, edi
cdq
mov dword [ebp - 0x260], eax
mov dword [ebp - 0x25c], edx
call dword [esi + 0x28]
mov esi, dword [ebp - 0x25c]
cmp esi, edx
jg 0x409e18
mov ecx, dword [ebp - 0x260]
jl 0x4097fc
cmp ecx, eax
ja 0x409e18
mov eax, dword [edi]
push 0
push esi
push ecx
mov ecx, edi
call dword [eax + 0x20]
mov ecx, eax
mov esi, edx
mov eax, dword [ebp - 0x12c]
cdq
cmp ecx, eax
jne 0x409e1f
cmp esi, edx
jne 0x409e1f
mov eax, dword [edi]
lea ecx, [ebp - 0xd0]
xor esi, esi
push esi
push 4
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
cmp dword [ebp - 0xd0], 0x4550
jne 0x409e18
mov eax, dword [edi]
lea ecx, [ebp - 0x104]
push esi
push 0x14
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
mov eax, dword [edi]
lea ecx, [ebp - 0x9c]
push esi
push 2
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
mov ax, word [ebp - 0x9c]
mov ecx, 0x10b
mov dword [ebp - 0x8c], esi
cmp ax, cx
jne 0x40989b
add ecx, 0xffffffd3
jmp 0x4098b8
mov ecx, 0x20b
cmp ax, cx
jne 0x409e1f
mov dword [ebp - 0x8c], 1
mov ecx, 0xee
and dword [ebp - 0x25c], esi
mov edx, esi
push edx
push ecx
mov word [ebp - 0x258], ax
lea ecx, [ebp - 0x256]
mov eax, dword [edi]
push ecx
mov ecx, edi
mov dword [ebp - 0x260], esi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
cmp dword [ebp - 0x8c], esi
mov eax, dword [ebp - 0x1e8]
cmovne eax, dword [ebp - 0x1d8]
xor ecx, ecx
mov dword [ebp - 0x26c], eax
xor eax, eax
cmp ax, word [ebp - 0x102]
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0x268], eax
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x264], eax
jae 0x409b3c
mov eax, dword [edi]
push ecx
push 0x28
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e1f
mov ecx, dword [ebp - 0xbc]
test ecx, ecx
je 0x4099a0
mov eax, dword [ebp - 0xb8]
add eax, ecx
xor ecx, ecx
cmp ecx, dword [ebp - 0x268]
jl 0x4099a0
jg 0x40996c
cmp eax, dword [ebp - 0x264]
jbe 0x4099a0
push 8
lea eax, [ebp - 0xcc]
push str._winzip_
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x4099a0
mov eax, dword [ebp - 0xbc]
add eax, dword [ebp - 0xb8]
mov dword [ebp - 0x264], eax
xor eax, eax
mov dword [ebp - 0x268], eax
test esi, esi
jne 0x4099d6
push 8
lea eax, [ebp - 0xcc]
push str..rsrc
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
jne 0x4099d6
mov esi, dword [ebp - 0xb8]
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0x260], esi
mov dword [ebp - 0x25c], eax
test ebx, ebx
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..text
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push 0x442800
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..edata
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..reloc
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push 0x442818
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..idata
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..rsrc
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str.UPX0
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str.UPX1
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push str..CRT
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
push 8
lea eax, [ebp - 0xcc]
push 0x442840
push eax
call fcn.0042a930
add esp, 0xc
test eax, eax
je 0x409b1d
mov eax, dword [ebp - 0xb8]
mov dword [ebx + 8], eax
mov ecx, dword [ebp - 0x8c]
movzx eax, word [ebp - 0x102]
inc ecx
push 0
mov dword [ebp - 0x8c], ecx
cmp ecx, eax
pop ecx
jl 0x40992d
test ebx, ebx
je 0x409e0a
test esi, esi
je 0x409e0a
mov eax, dword [edi]
push ecx
push ecx
push esi
mov ecx, edi
call dword [eax + 0x20]
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 0x10
lea ecx, [ebp - 0xe0]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
mov esi, dword [ebp - 0x25c]
add esi, 0xfffffff0
js 0x409e0a
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x25c], ecx
cmp ax, word [ebp - 0xd4]
jae 0x409bd0
mov eax, dword [edi]
push ecx
push 8
lea ecx, [ebp - 0xa4]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
sub esi, 8
js 0x409e0a
mov ecx, dword [ebp - 0x25c]
movzx eax, word [ebp - 0xd4]
inc ecx
push 0
mov dword [ebp - 0x25c], ecx
cmp ecx, eax
pop ecx
jl 0x409b93
xor eax, eax
mov dword [ebp - 0x25c], ecx
cmp ax, word [ebp - 0xd2]
jae 0x409e0a
mov eax, dword [edi]
push ecx
push 8
lea ecx, [ebp - 0xa4]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
sub esi, 8
js 0x409e0a
cmp word [ebp - 0xa4], 0xa
je 0x409c31
mov ecx, dword [ebp - 0x25c]
movzx eax, word [ebp - 0xd2]
inc ecx
push 0
mov dword [ebp - 0x25c], ecx
cmp ecx, eax
pop ecx
jl 0x409be5
jmp 0x409e0a
mov eax, dword [ebp - 0xa0]
and eax, 0x7fffffff
je 0x409e0a
mov edx, dword [edi]
xor ecx, ecx
mov esi, dword [ebp - 0x260]
add eax, esi
push ecx
push ecx
push eax
mov ecx, edi
call dword [edx + 0x20]
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 0x10
lea ecx, [ebp - 0xf0]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
movzx ecx, word [ebp - 0xe4]
movzx eax, word [ebp - 0xe2]
add eax, ecx
xor ecx, ecx
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x25c], ecx
test eax, eax
je 0x409e0a
mov eax, dword [edi]
push ecx
push 8
lea ecx, [ebp - 0xa4]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
mov ecx, dword [ebp - 0xa0]
mov eax, 0x80000000
test eax, ecx
je 0x409e0a
mov edx, dword [ebp - 0xa4]
test eax, edx
je 0x409d66
mov eax, dword [edi]
xor ecx, ecx
push ecx
and edx, 0x7fffffff
push ecx
add edx, esi
mov ecx, edi
push edx
call dword [eax + 0x20]
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 2
lea ecx, [ebp - 0x8c]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
mov eax, dword [ebp - 0x8c]
mov esi, dword [edi]
push 0x3f
pop edx
cmp dx, ax
movzx ecx, ax
cmovb ecx, edx
movzx ecx, cx
mov eax, ecx
mov ecx, edi
mov dword [ebp - 0x8c], eax
cdq
shld edx, eax, 1
add eax, eax
push edx
push eax
lea eax, [ebp - 0x88]
push eax
call dword [esi + 0x18]
test eax, eax
je 0x409e0a
movzx eax, word [ebp - 0x8c]
add eax, eax
cmp eax, 0x80
jae 0x409e33
mov esi, dword [ebp - 0x260]
xor ecx, ecx
mov word [ebp + eax - 0x88], cx
mov ecx, dword [ebp - 0xa0]
mov eax, dword [edi]
xor edx, edx
push edx
and ecx, 0x7fffffff
add ecx, esi
push edx
push ecx
mov ecx, edi
call dword [eax + 0x20]
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 0x10
lea ecx, [ebp - 0x114]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
cmp word [ebp - 0x106], 0
jne 0x409db7
mov eax, dword [ebp - 0x25c]
inc eax
mov dword [ebp - 0x25c], eax
cmp eax, dword [ebp - 0x94]
jge 0x409e0a
xor ecx, ecx
jmp 0x409c97
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 8
lea ecx, [ebp - 0x98]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
mov eax, dword [ebp - 0x94]
xor ecx, ecx
mov edx, dword [edi]
add eax, esi
push ecx
push ecx
push eax
mov ecx, edi
call dword [edx + 0x20]
mov eax, dword [edi]
xor ecx, ecx
push ecx
push 0x10
lea ecx, [ebp - 0x124]
push ecx
mov ecx, edi
call dword [eax + 0x18]
test eax, eax
je 0x409e0a
mov ecx, dword [ebp - 0x124]
sub ecx, dword [ebp - 0x26c]
add ecx, esi
mov dword [ebx + 4], ecx
mov eax, dword [ebp - 0x264]
mov edx, dword [ebp - 0x268]
jmp 0x409e24
test ebx, ebx
je 0x409e1f
mov byte [ebx], 1
or edx, 0xffffffff
mov eax, edx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004219ad
leave
ret
call fcn.00421fa6
int3