Function at 0x45f8a0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x470550
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 0x45f8fd
push str.GetFileSizeEx__
push edi
push 0x9c
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
add esp, 0x10
cmp dword [ebp + 8], edi
jne 0x45f907
mov dword [ebx + 0x20], edi
jmp 0x45f90e
mov dword [ebx + 0x20], 1
lea ecx, [ebx + 0x24]
call fcn.00465320
push 0x10000
call fcn.0045ed70
add esp, 4
cmp eax, edi
mov dword [ebx + 0x7c], eax
jne 0x45f942
push 0x4876b8
push edi
push 0xa3
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
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 0x45f993
call fcn.0045f6a0
cmp dword [ebp - 0x14], 2
jne 0x45f9a0
cmp word [esi], 0x5a4d
je 0x45f9b9
push 0x488290
push 1
push 0xb0
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045f540
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.00462110
cmp eax, edi
jne 0x45f9d6
call fcn.0045f6a0
mov eax, dword [ebx + 0x120]
mov ecx, dword [ebx + 0x14]
add eax, 4
cmp edi, ecx
jl 0x45fa10
jg 0x45f9ed
cmp eax, dword [ebx + 0x10]
jbe 0x45fa10
push str.DOS
push 1
push 0xba
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 2
call fcn.0045f540
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.00462110
test eax, eax
jne 0x45fa37
call fcn.0045f6a0
mov ecx, dword [ebp - 0x18]
mov eax, ecx
and eax, 0xffff
sub eax, 0x454c
je 0x45fabd
sub eax, 2
je 0x45fa80
sub eax, 2
je 0x45fa6a
push str.DOS
push 1
mov dword [ebx + 0xa0], 2
push 0xd4
jmp 0x45fad3
cmp ecx, 0x4550
je 0x45fae0
push 0x488268
push 1
push 0xd0
jmp 0x45fad3
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.00462110
test eax, eax
jne 0x45faaf
call fcn.0045f6a0
push 0x488250
push 1
push 0xc8
jmp 0x45fad3
push 0x488238
push 1
mov dword [ebx + 0xa0], 4
push 0xcc
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045f540
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.00462110
test eax, eax
jne 0x45fb0f
call fcn.0045f6a0
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 0x45fb57
cmp ax, 0x200
je 0x45fb57
cmp ax, 0x8664
je 0x45fb57
push 0x488214
push 1
push 0xe2
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 5
call fcn.0045f540
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.00462110
test eax, eax
jne 0x45fb76
call fcn.0045f6a0
mov ax, word [ebx + 0x138]
cmp ax, 0x10b
jne 0x45fe13
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xe0
mov dword [ebp - 0x14], eax
jbe 0x45fba2
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.00462110
test eax, eax
jne 0x45fbc0
call fcn.0045f6a0
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 0x45fbf6
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x45fc02
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 0x45ff20
cmp ax, 0x20b
jne 0x45ff07
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xf0
mov dword [ebp - 0x14], eax
jbe 0x45fe38
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.00462110
test eax, eax
jne 0x45fe56
call fcn.0045f6a0
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 0x45fe86
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x45fe92
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 0x45ff20
push 0x4881f8
push 1
push 0x13d
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045f540
add esp, 0x10
mov ecx, dword [ebx + 0x13c]
mov eax, 0x10
cmp ecx, eax
jbe 0x45ff35
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.00462b10
test eax, eax
jne 0x45ff53
call fcn.0045f6a0
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.0045ed70
add esp, 4
mov dword [ebx + 0x3d8], eax
test eax, eax
jne 0x45ff93
push 0x4876b8
push eax
push 0x146
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
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.00462110
test eax, eax
jne 0x45ffbd
call fcn.0045f6a0
mov eax, dword [ebx + 0x3d4]
mov ecx, ebx
lea edx, [eax + eax*4]
shl edx, 3
add edi, edx
adc esi, 0
call fcn.00462780
test eax, eax
jne 0x45ffde
call fcn.0045f6a0
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.0046b220
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
push edx
push eax
call fcn.0046b1e0
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edx
mov edx, dword [ebx + 0x3d4]
shl edx, 2
push edx
call fcn.0045ed70
add esp, 4
mov dword [ebx + 0x3dc], eax
test eax, eax
jne 0x460044
push 0x4876b8
push eax
push 0x14e
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
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 0x460163
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 dword [sym.imp.MSVCRT.dll_strncpy]
lea ecx, [ebp - 0x3c]
add esp, 0xc
test ecx, ecx
mov byte [ebp - 0x34], 0
jne 0x46009f
xor esi, esi
jmp 0x4600d2
lea edx, [ebp - 0x3c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
lea eax, [edi + edi]
add eax, 3
and al, 0xfc
call fcn.0045b070
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 [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push esi
call dword [sym.imp.MSVCRT.dll_wcslen]
mov edi, eax
inc edi
lea ecx, [edi + edi]
push ecx
call fcn.0045ed70
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 0x460119
push 0x4876b8
push 0
push 0x159
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
add esp, 0x10
cmp edi, 0x7fffffff
ja 0x460157
mov edx, dword [ebx + 0x3dc]
mov eax, dword [ebp + 8]
test edi, edi
mov eax, dword [edx + eax*4]
mov ecx, esi
je 0x460157
test edi, edi
je 0x46014f
mov dx, word [ecx]
test dx, dx
je 0x46014b
mov word [eax], dx
add eax, 2
add ecx, 2
dec edi
jmp 0x460133
test edi, edi
jne 0x460152
sub eax, 2
mov word [eax], 0
mov eax, dword [ebp + 8]
inc eax
mov dword [ebp + 8], eax
jmp 0x460068
mov ecx, dword [ebx + 0x3d4]
mov esi, 1
shl ecx, 2
push ecx
mov dword [ebx + 0xa0], esi
call fcn.0045ed70
xor edi, edi
add esp, 4
cmp eax, edi
mov dword [ebx + 0x3e0], eax
jne 0x4601a4
push 0x4876b8
push edi
push 0x164
push str.D:_root.ddev360C360PubSrc360Base360BaseQHPEParser.cpp
call fcn.0045edf0
add esp, 0x10
mov ecx, ebx
call fcn.00462670
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 0x460204
jl 0x4601f8
cmp dword [ebx + 0x3e8], edi
jae 0x460204
mov dword [ebx + 0x3e8], edi
mov dword [ebx + 0x3ec], edi
cmp dword [ebx + 0x1cc], 2
ja 0x460219
mov dword [ebx + 0x410], 0xffffffff
jmp 0x460254
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 0x460254
test esi, esi
mov dword [ebp - 4], 0xffffffff
jne 0x460266
mov ecx, ebx
call fcn.004602b0
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