Function at 0x409ac0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4151e0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x30
push ebx
push esi
push edi
mov ebx, ecx
xor edi, edi
mov dword [ebp - 0x10], esp
mov dword [ebx + 0xa0], edi
mov eax, dword [ebx + 8]
lea ecx, [ebx + 0x10]
mov dword [ebp - 0x1c], ebx
mov edx, dword [eax]
push ecx
push eax
mov dword [ebp - 4], edi
call dword [edx + 8]
add esp, 8
cmp eax, edi
jne 0x409b1d
push str.GetFileSizeEx__
push edi
push 0x9c
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
cmp dword [ebp + 8], edi
jne 0x409b27
mov dword [ebx + 0x20], edi
jmp 0x409b2e
mov dword [ebx + 0x20], 1
lea ecx, [ebx + 0x24]
call fcn.0040f510
push 0x10000
call fcn.00407300
add esp, 4
cmp eax, edi
mov dword [ebx + 0x7c], eax
jne 0x409b62
push 0x41a41c
push edi
push 0xa3
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
mov dword [ebx + 0x98], edi
mov dword [ebx + 0x9c], edi
mov dword [ebx + 0x90], edi
mov dword [ebx + 0x94], edi
mov dword [ebx + 0x88], edi
lea esi, [ebx + 0xe4]
mov dword [ebx + 0x8c], edi
lea edx, [ebp - 0x14]
mov dword [ebx + 0x80], edi
mov word [esi], di
mov eax, dword [ebx + 8]
push edx
push edi
push edi
mov ecx, dword [eax]
push 2
push esi
push eax
call dword [ecx + 4]
add esp, 0x18
cmp eax, edi
jne 0x409bb3
call fcn.00404800
cmp dword [ebp - 0x14], 2
jne 0x409bc0
cmp word [esi], 0x5a4d
je 0x409bd9
push 0x41b0c0
push 1
push 0xb0
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.004046c0
add esp, 0x10
mov edx, dword [ebx + 0x20]
xor ecx, ecx
push edx
xor eax, eax
push 0x40
push ecx
push eax
push esi
mov ecx, ebx
call fcn.0040c330
cmp eax, edi
jne 0x409bf6
call fcn.00404800
mov eax, dword [ebx + 0x120]
mov ecx, dword [ebx + 0x14]
add eax, 4
cmp edi, ecx
jl 0x409c30
jg 0x409c0d
cmp eax, dword [ebx + 0x10]
jbe 0x409c30
push str.DOS
push 1
push 0xba
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 2
call fcn.004046c0
add esp, 0x10
mov eax, dword [ebx + 0x120]
lea ecx, [ebp - 0x18]
cdq
mov edi, eax
mov eax, dword [ebx + 0x20]
mov esi, edx
push eax
push 4
push esi
push edi
push ecx
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x409c57
call fcn.00404800
mov ecx, dword [ebp - 0x18]
mov eax, ecx
and eax, 0xffff
sub eax, 0x454c
je 0x409cdd
sub eax, 2
je 0x409ca0
sub eax, 2
je 0x409c8a
push str.DOS
push 1
mov dword [ebx + 0xa0], 2
push 0xd4
jmp 0x409cf3
cmp ecx, 0x4550
je 0x409d00
push 0x41b098
push 1
push 0xd0
jmp 0x409cf3
mov dword [ebx + 0xa0], 3
mov edx, dword [ebx + 0x20]
add edi, 2
push edx
adc esi, 0
push 0x40
push esi
lea eax, [ebx + 0xa4]
push edi
push eax
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x409ccf
call fcn.00404800
push 0x41b080
push 1
push 0xc8
jmp 0x409cf3
push 0x41b068
push 1
mov dword [ebx + 0xa0], 4
push 0xcc
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.004046c0
add esp, 0x10
mov dword [ebx + 0xa0], 6
mov ecx, dword [ebx + 0x20]
add edi, 4
push ecx
adc esi, 0
push 0x14
lea eax, [ebx + 0x124]
push esi
push edi
push eax
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x409d2f
call fcn.00404800
mov ax, word [ebx + 0x124]
add edi, 0x14
adc esi, 0
cmp ax, 0x14c
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], esi
je 0x409d77
cmp ax, 0x200
je 0x409d77
cmp ax, 0x8664
je 0x409d77
push str._rN_e
push 1
push 0xe2
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 5
call fcn.004046c0
add esp, 0x10
mov edx, dword [ebx + 0x20]
lea eax, [ebx + 0x138]
push edx
push 2
push esi
push edi
push eax
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x409d96
call fcn.00404800
mov ax, word [ebx + 0x138]
cmp ax, 0x10b
jne 0x40a033
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xe0
mov dword [ebp - 0x14], eax
jbe 0x409dc2
mov eax, 0xe0
mov dword [ebp - 0x14], eax
mov edx, dword [ebx + 0x20]
lea ecx, [ebx + 0x2e4]
push edx
push eax
push esi
push edi
push ecx
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x409de0
call fcn.00404800
lea eax, [ebx + 0x2e4]
mov dword [ebx + 0x250], eax
add eax, 0x60
mov dword [ebx + 0x258], eax
lea eax, [edi + 0x40]
mov dword [ebx + 0x408], eax
mov ecx, dword [ebx + 0x250]
cmp dword [ecx + 0x5c], 4
ja 0x409e16
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x409e22
add edi, 0x80
mov dword [ebx + 0x40c], edi
mov edx, dword [ebx + 0x250]
mov eax, dword [edx + 0x5c]
mov dword [ebx + 0x13c], eax
mov ecx, dword [ebx + 0x250]
mov edx, dword [ecx + 0x10]
mov dword [ebx + 0x140], edx
mov eax, dword [ebx + 0x250]
mov ecx, dword [eax + 0x20]
mov dword [ebx + 0x144], ecx
mov edx, dword [ebx + 0x250]
mov eax, dword [edx + 0x38]
mov dword [ebx + 0x14c], eax
mov ecx, dword [ebx + 0x250]
mov edx, dword [ecx + 0x24]
mov dword [ebx + 0x148], edx
mov eax, dword [ebx + 0x250]
mov ecx, dword [eax + 4]
mov dword [ebx + 0x150], ecx
mov edx, dword [ebx + 0x250]
mov eax, dword [edx + 0x1c]
xor edx, edx
mov dword [ebx + 0x158], eax
mov dword [ebx + 0x15c], edx
mov ecx, dword [ebx + 0x250]
mov ax, word [ecx]
mov word [ebx + 0x160], ax
mov ecx, dword [ebx + 0x250]
mov al, byte [ecx + 2]
mov byte [ebx + 0x162], al
mov ecx, dword [ebx + 0x250]
mov al, byte [ecx + 3]
mov byte [ebx + 0x163], al
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 4]
mov dword [ebx + 0x164], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 8]
mov dword [ebx + 0x168], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0xc]
mov dword [ebx + 0x16c], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0x10]
mov dword [ebx + 0x170], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0x14]
mov dword [ebx + 0x174], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0x1c]
mov dword [ebx + 0x178], eax
mov dword [ebx + 0x17c], edx
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0x20]
mov dword [ebx + 0x180], eax
mov ecx, dword [ebx + 0x250]
mov eax, dword [ecx + 0x24]
mov dword [ebx + 0x184], eax
mov eax, dword [ebx + 0x250]
mov cx, word [eax + 0x28]
mov word [ebx + 0x188], cx
mov cx, word [eax + 0x2a]
mov word [ebx + 0x18a], cx
mov cx, word [eax + 0x2c]
mov word [ebx + 0x18c], cx
mov cx, word [eax + 0x2e]
mov word [ebx + 0x18e], cx
mov cx, word [eax + 0x30]
mov word [ebx + 0x190], cx
mov cx, word [eax + 0x32]
mov word [ebx + 0x192], cx
mov ecx, dword [eax + 0x34]
mov dword [ebx + 0x194], ecx
mov ecx, dword [eax + 0x38]
mov dword [ebx + 0x198], ecx
mov ecx, dword [eax + 0x3c]
mov dword [ebx + 0x19c], ecx
mov ecx, dword [eax + 0x40]
mov dword [ebx + 0x1a0], ecx
mov cx, word [eax + 0x44]
mov word [ebx + 0x1a4], cx
mov cx, word [eax + 0x46]
mov word [ebx + 0x1a6], cx
mov ecx, dword [eax + 0x48]
mov dword [ebx + 0x1a8], ecx
mov dword [ebx + 0x1ac], edx
mov ecx, dword [eax + 0x4c]
lea esi, [eax + 0x60]
mov dword [ebx + 0x1b0], ecx
mov dword [ebx + 0x1b4], edx
mov ecx, dword [eax + 0x50]
lea edi, [ebx + 0x1d0]
mov dword [ebx + 0x1b8], ecx
mov dword [ebx + 0x1bc], edx
mov ecx, dword [eax + 0x54]
mov dword [ebp - 0x24], edx
mov dword [ebx + 0x1c0], ecx
mov dword [ebx + 0x1c4], edx
mov ecx, dword [eax + 0x58]
mov dword [ebx + 0x1c8], ecx
mov ecx, dword [eax + 0x5c]
mov dword [ebx + 0x1cc], ecx
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0x24]
mov edi, dword [ebp - 0x30]
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
jmp 0x40a140
cmp ax, 0x20b
jne 0x40a127
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xf0
mov dword [ebp - 0x14], eax
jbe 0x40a058
mov eax, 0xf0
mov dword [ebp - 0x14], eax
mov edx, dword [ebx + 0x20]
lea ecx, [ebx + 0x2e4]
push edx
push eax
push esi
push edi
push ecx
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x40a076
call fcn.00404800
lea eax, [ebx + 0x2e4]
lea edx, [edi + 0x40]
mov dword [ebx + 0x254], eax
lea ecx, [eax + 0x70]
mov dword [ebx + 0x258], ecx
mov dword [ebx + 0x408], edx
cmp dword [eax + 0x6c], 4
ja 0x40a0a6
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x40a0b2
add edi, 0x90
mov dword [ebx + 0x40c], edi
mov ecx, dword [ebx + 0x350]
lea eax, [ebx + 0x2e4]
mov dword [ebx + 0x13c], ecx
lea edi, [ebx + 0x160]
mov edx, dword [eax + 0x10]
mov esi, eax
mov dword [ebx + 0x140], edx
mov ecx, dword [eax + 0x20]
mov dword [ebx + 0x144], ecx
mov edx, dword [eax + 0x38]
mov dword [ebx + 0x14c], edx
mov ecx, dword [eax + 0x24]
mov dword [ebx + 0x148], ecx
mov edx, dword [eax + 4]
mov dword [ebx + 0x150], edx
mov ecx, dword [eax + 0x18]
mov dword [ebx + 0x158], ecx
mov edx, dword [eax + 0x1c]
mov ecx, 0x3c
mov dword [ebx + 0x15c], edx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0x24]
mov edi, dword [ebp - 0x30]
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], 0
jmp 0x40a140
push 0x41b028
push 1
push 0x13d
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.004046c0
add esp, 0x10
mov ecx, dword [ebx + 0x13c]
mov eax, 0x10
cmp ecx, eax
jbe 0x40a155
mov dword [ebx + 0x13c], eax
xor eax, eax
mov ecx, ebx
mov ax, word [ebx + 0x134]
cdq
add edi, eax
adc esi, edx
call fcn.0040cd30
test eax, eax
jne 0x40a173
call fcn.00404800
xor eax, eax
mov ax, word [ebx + 0x126]
mov dword [ebx + 0x3d4], eax
lea ecx, [eax + eax*4]
shl ecx, 3
push ecx
call fcn.00407300
add esp, 4
mov dword [ebx + 0x3d8], eax
test eax, eax
jne 0x40a1b3
push 0x41a41c
push eax
push 0x146
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
mov eax, dword [ebx + 0x3d4]
mov edx, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x3d8]
push edx
lea eax, [eax + eax*4]
shl eax, 3
push eax
push esi
push edi
push ecx
mov ecx, ebx
call fcn.0040c330
test eax, eax
jne 0x40a1dd
call fcn.00404800
mov eax, dword [ebx + 0x3d4]
mov ecx, ebx
lea edx, [eax + eax*4]
shl edx, 3
add edi, edx
adc esi, 0
call fcn.0040c9a0
test eax, eax
jne 0x40a1fe
call fcn.00404800
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
mov edx, ecx
push eax
add edx, edi
mov edi, eax
adc edi, esi
sub edx, 1
sbb edi, 0
push ecx
push edi
push edx
call fcn.004145e0
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
push edx
push eax
call fcn.00414a70
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edx
mov edx, dword [ebx + 0x3d4]
shl edx, 2
push edx
call fcn.00407300
add esp, 4
mov dword [ebx + 0x3dc], eax
test eax, eax
jne 0x40a264
push 0x41a41c
push eax
push 0x14e
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
mov ecx, dword [ebx + 0x3d4]
mov edi, dword [ebx + 0x3dc]
shl ecx, 2
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
xor eax, eax
mov dword [ebp + 8], eax
cmp eax, dword [ebx + 0x3d4]
jae 0x40a381
mov ecx, dword [ebx + 0x3d8]
lea eax, [eax + eax*4]
push 8
lea edx, [ecx + eax*8]
lea eax, [ebp - 0x3c]
push edx
push eax
call fcn.00414bc0
lea ecx, [ebp - 0x3c]
add esp, 0xc
test ecx, ecx
mov byte [ebp - 0x34], 0
jne 0x40a2be
xor esi, esi
jmp 0x40a2f1
lea edx, [ebp - 0x3c]
push edx
call dword [0x41608c]
mov edi, eax
inc edi
lea eax, [edi + edi]
add eax, 3
and al, 0xfc
call fcn.00414550
mov esi, esp
push edi
push esi
lea eax, [ebp - 0x3c]
push 0xffffffffffffffff
push eax
push 0
push 0
mov word [esi], 0
call dword [0x416090]
push esi
call fcn.00414528
mov edi, eax
inc edi
lea ecx, [edi + edi]
push ecx
call fcn.00407300
mov edx, dword [ebx + 0x3dc]
mov ecx, dword [ebp + 8]
add esp, 8
mov dword [edx + ecx*4], eax
mov eax, dword [ebx + 0x3dc]
cmp dword [eax + ecx*4], 0
jne 0x40a337
push 0x41a41c
push 0
push 0x159
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
cmp edi, 0x7fffffff
ja 0x40a375
mov edx, dword [ebx + 0x3dc]
mov eax, dword [ebp + 8]
test edi, edi
mov eax, dword [edx + eax*4]
mov ecx, esi
je 0x40a375
test edi, edi
je 0x40a36d
mov dx, word [ecx]
test dx, dx
je 0x40a369
mov word [eax], dx
add eax, 2
add ecx, 2
dec edi
jmp 0x40a351
test edi, edi
jne 0x40a370
sub eax, 2
mov word [eax], 0
mov eax, dword [ebp + 8]
inc eax
mov dword [ebp + 8], eax
jmp 0x40a288
mov ecx, dword [ebx + 0x3d4]
mov esi, 1
shl ecx, 2
push ecx
mov dword [ebx + 0xa0], esi
call fcn.00407300
xor edi, edi
add esp, 4
cmp eax, edi
mov dword [ebx + 0x3e0], eax
jne 0x40a3c2
push 0x41a41c
push edi
push 0x164
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.00403f30
add esp, 0x10
mov ecx, ebx
call fcn.0040c890
mov edx, dword [ebx + 0x3d4]
mov eax, dword [ebx + 0x3e0]
mov eax, dword [eax + edx*4 - 4]
mov edx, dword [ebx + 0x3d8]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*8]
mov ecx, dword [edx + ecx*8 + 0x14]
mov edx, dword [eax + 0x10]
mov eax, dword [ebx + 0x10]
add ecx, edx
xor edx, edx
sub eax, ecx
mov ecx, dword [ebx + 0x14]
mov dword [ebx + 0x3e8], eax
sbb ecx, edx
mov eax, ecx
mov dword [ebx + 0x3ec], ecx
cmp eax, edi
jg 0x40a422
jl 0x40a416
cmp dword [ebx + 0x3e8], edi
jae 0x40a422
mov dword [ebx + 0x3e8], edi
mov dword [ebx + 0x3ec], edi
cmp dword [ebx + 0x1cc], 2
ja 0x40a437
mov dword [ebx + 0x410], 0xffffffff
jmp 0x40a472
mov ecx, dword [ebx + 0x258]
mov edx, dword [ebx + 4]
lea eax, [ebx + 4]
mov ecx, dword [ecx + 0x10]
push ecx
push eax
call dword [edx]
add esp, 8
mov dword [ebp - 0x2c], edx
mov dword [ebx + 0x410], eax
jmp 0x40a472
test esi, esi
mov dword [ebp - 4], 0xffffffff
jne 0x40a484
mov ecx, ebx
call fcn.0040a4d0
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x48]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4