Function at 0x404680
Capabilities:
Get file size
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.00484550
add esp, 0xc
lea ecx, [esp + 0x58]
push ecx
push esi
mov dword [esp + 0x40], esi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x4046d6
push 0x4ccc68
push edi
push edi
mov edx, 0x4ccc68
call fcn.00408150
add esp, 0xc
jmp 0x404b70
push 0x4000
mov dword [esp + 0x68], 0x4000
call fcn.00485674
mov esi, eax
add esp, 4
cmp esi, edi
jne 0x4046f9
push 8
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [esp + 0x60], esi
cmp esi, edi
jne 0x40471a
push 0x4ccc68
push edi
push edi
mov edx, 0x4ccc68
call fcn.00408150
add esp, 0xc
jmp 0x404b70
push 0x40
push ebx
push edi
push edi
lea edi, [esp + 0x48]
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
mov edx, 0x5a4d
cmp word [ebx], dx
jne 0x404b5e
mov eax, dword [ebx + 0x3c]
test eax, eax
jle 0x404b5e
push 4
cdq
lea ecx, [esp + 0x30]
push ecx
push edx
push eax
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
cmp dword [esp + 0x2c], 0x4550
jne 0x404b5e
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 0x4047bb
push 0x90
push ebx
push ecx
push 0x80
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
cmp dword [ebx], 0x82c8851f
jne 0x4047bb
mov dword [ebp + 0xa0], 0x80
mov edx, dword [esp + 0x34]
push 0x14
push ebx
push edx
push esi
lea edi, [esp + 0x48]
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
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.00404410
add esp, 0x10
test eax, eax
je 0x404b70
mov eax, dword [esp + 0x28]
mov edx, 0x10b
cmp ax, dx
jne 0x404830
movzx ecx, word [ebx + 0x10]
cmp cx, 0x78
jb 0x404b5e
mov eax, 0xe0
mov dword [esp + 0x20], 1
mov dword [esp + 0x14], eax
xor edx, edx
jmp 0x404862
mov ecx, 0x20b
cmp ax, cx
jne 0x404b5e
movzx ecx, word [ebx + 0x10]
mov edx, 0x88
cmp cx, dx
jb 0x404b5e
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 0x40486f
mov dword [esp + 0x14], ecx
mov eax, ecx
movzx ecx, word [ebx + 2]
mov dword [esp + 0x10], ecx
cmp eax, edx
je 0x40489d
mov edx, dword [esp + 0x34]
push eax
push ebx
push edx
push esi
lea edi, [esp + 0x48]
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
mov eax, dword [esp + 0x14]
xor edx, edx
lea ecx, [esi + 0x40]
mov dword [ebp], ecx
cmp dword [esp + 0x20], edx
je 0x404901
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 0x4048ee
mov byte [ebp + 0x9d], cl
mov edi, dword [ebx + 0x70]
mov dword [esp + 0x20], edi
mov edi, dword [ebx + 0x74]
jmp 0x404953
mov byte [ebp + 0x9d], 0
mov edi, dword [ebx + 0x70]
mov dword [esp + 0x20], edi
mov edi, dword [ebx + 0x74]
jmp 0x404953
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 0x40493c
mov byte [ebp + 0x9d], cl
jmp 0x404943
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 0x404998
cmp byte [ebp + 0x9c], 0
jne 0x404998
cmp byte [ebp + 0x9d], 0
mov dword [esp + 0x14], ecx
jne 0x40499c
mov dword [esp + 0x14], edx
cmp dword [esp + 0x20], edx
jne 0x4049ac
cmp dword [esp + 0x14], edx
je 0x404b54
mov ecx, dword [esp + 0x10]
mov eax, 0x333
mov edx, eax
mov dword [esp + 0x28], eax
cmp cx, dx
jbe 0x4049c6
mov dword [esp + 0x10], eax
jmp 0x4049d8
mov eax, 0xffff
cmp cx, ax
jne 0x4049d8
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.00403d10
mov dword [esp + 0x18], eax
test eax, eax
jne 0x404a0e
push 0x4ccc68
push eax
push eax
mov edx, 0x4ccc68
call fcn.00408150
add esp, 0xc
jmp 0x404b70
test esi, esi
je 0x404a36
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push esi
push eax
push ecx
push edx
lea edi, [esp + 0x48]
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
mov eax, dword [esp + 0x18]
add dword [ebp + 0xb0], esi
cmp dword [esp + 0x14], 0
mov esi, dword [esp + 0x10]
je 0x404a72
xor edi, edi
xor edx, edx
mov ecx, eax
cmp di, si
jae 0x404a72
cmp dword [ecx], 0x54494e49
jne 0x404a60
cmp byte [ecx + 4], 0
je 0x404a6b
inc edx
add ecx, 0x28
cmp dx, si
jb 0x404a52
jmp 0x404a72
mov byte [ebp + 0x9e], 1
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
push ecx
call fcn.00404c50
mov esi, eax
add esp, 4
mov dword [esp + 0x20], esi
test esi, esi
je 0x404b54
push 0xa
push esi
lea eax, [esp + 0x40]
call fcn.00404ba0
add esp, 8
test eax, eax
je 0x404b54
mov eax, dword [eax + 4]
test eax, eax
jns 0x404b54
and eax, 0x7fffffff
add eax, esi
push 0x360
push eax
lea eax, [esp + 0x40]
call fcn.00404ba0
add esp, 8
test eax, eax
je 0x404b54
mov eax, dword [eax + 4]
test eax, eax
jns 0x404b54
and eax, 0x7fffffff
add eax, esi
push 0
push eax
lea eax, [esp + 0x40]
call fcn.00404ba0
add esp, 8
test eax, eax
je 0x404b54
mov eax, dword [eax + 4]
test eax, eax
js 0x404b54
push 0x10
xor ecx, ecx
push ebx
add eax, esi
push ecx
push eax
lea edi, [esp + 0x48]
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
cmp dword [ebx + 4], 0x80
jne 0x404b54
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov edx, dword [ebx]
push 0x80
call fcn.00404c50
add esp, 4
push 0x80
lea edx, [ebp + 0x1c]
push edx
push 0
push eax
call fcn.00404410
add esp, 0x10
test eax, eax
je 0x404b70
mov eax, dword [esp + 0x20]
mov dword [ebp + 0x18], eax
mov dword [esp + 0x1c], 1
jmp 0x404b70
push 0x4ccc68
mov eax, 1
call fcn.00408420
add esp, 4
mov eax, dword [esp + 0x60]
test eax, eax
je 0x404b81
push eax
call fcn.004849fc
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x404b92
push eax
call fcn.004849fc
add esp, 4
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret