Function at 0x404810
Capabilities:
Parse pe header

Disassembly:
sub esp, 0x58
push ebx
push ebp
mov ebp, dword [esp + 0x64]
push esi
push edi
xor edi, edi
push 0x30
mov ebx, eax
lea eax, [esp + 0x3c]
push edi
push eax
mov esi, ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], edi
call fcn.00449ba0
add esp, 0xc
lea ecx, [esp + 0x58]
push ecx
push esi
mov dword [esp + 0x40], esi
call dword [0x47f154]
test eax, eax
jne 0x404868
push 0x487584
push 0x11e
push 0x48750c
xor edx, edx
call 0x408a80
jmp 0x404d41
push 0x4000
mov dword [esp + 0x68], 0x4000
call fcn.0044b347
mov esi, eax
add esp, 4
cmp esi, edi
jne 0x40488b
push 8
call dword [0x47f300]
mov dword [esp + 0x60], esi
cmp esi, edi
jne 0x4048ae
push 0x487374
push 0x223
push 0x48750c
xor edx, edx
call 0x408a80
jmp 0x404d41
push 0x40
push ebx
push edi
push edi
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov edx, 0x5a4d
cmp word [ebx], dx
jne 0x404d28
mov eax, dword [ebx + 0x3c]
test eax, eax
jle 0x404d28
push 4
cdq
lea ecx, [esp + 0x30]
push ecx
push edx
push eax
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
cmp dword [esp + 0x2c], 0x4550
je 0x404913
push 0x4875ec
push 0x22e
jmp 0x404d32
mov eax, dword [ebx + 0x3c]
xor ecx, ecx
lea esi, [eax + 4]
mov dword [esp + 0x34], ecx
mov dword [ebp + 0xa0], ecx
cmp eax, 0x110
jb 0x40495e
push 0x90
push ebx
push ecx
push 0x80
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
cmp dword [ebx], 0x82c8851f
jne 0x40495e
mov dword [ebp + 0xa0], 0x80
mov edx, dword [esp + 0x34]
push 0x14
push ebx
push edx
push esi
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov eax, dword [esp + 0x34]
push 2
add esi, 0x14
lea ecx, [esp + 0x2c]
adc eax, 0
push ecx
push eax
push esi
mov dword [esp + 0x44], eax
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov eax, dword [esp + 0x28]
mov edx, 0x10b
cmp ax, dx
jne 0x4049de
movzx ecx, word [ebx + 0x10]
cmp cx, 0x78
jae 0x4049c9
push 0x487604
push 0x248
jmp 0x404d32
mov eax, 0xe0
mov dword [esp + 0x20], 1
mov dword [esp + 0x14], eax
xor edx, edx
jmp 0x404a1b
mov ecx, 0x20b
cmp ax, cx
jne 0x404d1c
movzx ecx, word [ebx + 0x10]
mov edx, 0x88
cmp cx, dx
jae 0x404a09
push 0x487604
push 0x24e
jmp 0x404d32
xor edx, edx
mov dword [esp + 0x14], 0xf0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], edx
movzx ecx, cx
cmp ecx, eax
jae 0x404a28
mov dword [esp + 0x14], ecx
mov eax, ecx
movzx ecx, word [ebx + 2]
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x404a56
invalid
mov edx, dword [esp + 0x34]
push eax
push ebx
push edx
push esi
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov eax, dword [esp + 0x14]
xor edx, edx
lea ecx, [esi + 0x40]
mov dword [ebp], ecx
cmp dword [esp + 0x20], edx
je 0x404aba
lea ecx, [esi + 0x80]
mov dword [ebp + 4], ecx
mov ecx, dword [ebx + 0x80]
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebx + 0x84]
mov dword [ebp + 0x14], ecx
mov ecx, dword [ebx + 0x40]
mov dword [ebp + 0x10], ecx
mov ecx, 1
mov byte [ebp + 0x9c], 0
cmp word [ebx + 0x44], cx
jne 0x404aa7
mov byte [ebp + 0x9d], cl
mov edi, dword [ebx + 0x70]
mov dword [esp + 0x20], edi
mov edi, dword [ebx + 0x74]
jmp 0x404b0c
mov byte [ebp + 0x9d], 0
mov edi, dword [ebx + 0x70]
mov dword [esp + 0x20], edi
mov edi, dword [ebx + 0x74]
jmp 0x404b0c
lea ecx, [esi + 0x90]
mov dword [ebp + 4], ecx
mov ecx, dword [ebx + 0x90]
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebx + 0x94]
mov dword [ebp + 0x14], ecx
mov ecx, dword [ebx + 0x40]
mov dword [ebp + 0x10], ecx
mov ecx, 1
mov byte [ebp + 0x9c], 1
cmp word [ebx + 0x44], cx
jne 0x404af5
mov byte [ebp + 0x9d], cl
jmp 0x404afc
mov byte [ebp + 0x9d], 0
mov edi, dword [ebx + 0x80]
mov dword [esp + 0x20], edi
mov edi, dword [ebx + 0x84]
mov dword [esp + 0x24], edi
mov edi, dword [ebp + 4]
add edi, 4
add esi, eax
adc dword [esp + 0x34], edx
mov dword [ebp + 8], edi
mov dword [esp + 0x30], esi
mov dword [ebp + 0x18], edx
mov byte [ebp + 0x9e], 0
mov dword [ebp + 0xb0], esi
cmp dword [ebp + 0xa0], edx
je 0x404b51
cmp byte [ebp + 0x9c], 0
jne 0x404b51
cmp byte [ebp + 0x9d], 0
mov dword [esp + 0x14], ecx
jne 0x404b55
mov dword [esp + 0x14], edx
cmp dword [esp + 0x20], edx
jne 0x404b65
cmp dword [esp + 0x14], edx
je 0x404d12
mov ecx, dword [esp + 0x10]
mov eax, 0x333
mov edx, eax
mov dword [esp + 0x28], eax
cmp cx, dx
jbe 0x404b7f
mov dword [esp + 0x10], eax
jmp 0x404b91
mov eax, 0xffff
cmp cx, ax
jne 0x404b91
mov dword [esp + 0x10], 0xfffe
movzx esi, word [esp + 0x10]
lea esi, [esi + esi*4]
add esi, esi
add esi, esi
add esi, esi
mov eax, esi
call fcn.00403e60
mov dword [esp + 0x18], eax
inc esp
and al, 0x18
test eax, eax
jne 0x404bc9
push 0x487374
push 0x289
push 0x48750c
xor edx, edx
call 0x408a80
jmp 0x404d41
test esi, esi
je 0x404bf1
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push esi
push eax
push ecx
push edx
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov eax, dword [esp + 0x18]
add dword [ebp + 0xb0], esi
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x10]
je 0x404c30
xor edi, edi
xor edx, edx
mov ecx, eax
cmp di, si
jae 0x404c30
lea ecx, [ecx]
cmp dword [ecx], 0x54494e49
jne 0x404c1e
cmp byte [ecx + 4], 0
je 0x404c29
inc edx
add ecx, 0x28
cmp dx, si
jb 0x404c10
jmp 0x404c30
mov byte [ebp + 0x9e], 1
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push ecx
call fcn.00404e30
mov esi, eax
add esp, 4
mov dword [esp + 0x20], esi
test esi, esi
je 0x404d12
push 0xa
push esi
lea eax, [esp + 0x40]
call fcn.00404d80
add esp, 8
test eax, eax
je 0x404d12
mov eax, dword [eax + 4]
test eax, eax
jns 0x404d12
and eax, 0x7fffffff
add eax, esi
push 0x360
push eax
lea eax, [esp + 0x40]
call fcn.00404d80
add esp, 8
test eax, eax
je 0x404d12
mov eax, dword [eax + 4]
test eax, eax
jns 0x404d12
and eax, 0x7fffffff
add eax, esi
push 0
push eax
lea eax, [esp + 0x40]
call fcn.00404d80
add esp, 8
test eax, eax
je 0x404d12
mov eax, dword [eax + 4]
test eax, eax
js 0x404d12
push 0x10
xor ecx, ecx
push ebx
add eax, esi
push ecx
push eax
lea edi, [esp + 0x48]
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
cmp dword [ebx + 4], 0x80
jne 0x404d12
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, dword [ebx]
push 0x80
call fcn.00404e30
add esp, 4
push 0x80
lea edx, [ebp + 0x1c]
push edx
push 0
push eax
call fcn.00404590
add esp, 0x10
test eax, eax
je 0x404d44
mov eax, dword [esp + 0x20]
mov dword [ebp + 0x18], eax
mov dword [esp + 0x1c], 1
jmp 0x404d44
push 0x487618
push 0x252
jmp 0x404d32
push 0x4875ec
push 0x229
push 0x48750c
mov edx, 1
call fcn.00408e80
add esp, 0xc
mov eax, dword [esp + 0x60]
test eax, eax
je 0x404d55
push eax
call fcn.00449e2b
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x404d66
push eax
call fcn.00449e2b
add esp, 4
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret