Function at 0x407070
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x412220
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 0x4070cd
push str.GetFileSizeEx__
push edi
push 0x9c
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
add esp, 0x10
cmp dword [ebp + 8], edi
jne 0x4070d7
mov dword [ebx + 0x20], edi
jmp 0x4070de
mov dword [ebx + 0x20], 1
lea ecx, [ebx + 0x24]
call fcn.0040c140
push 0x10000
call fcn.00406b10
add esp, 4
cmp eax, edi
mov dword [ebx + 0x7c], eax
jne 0x407112
push 0x4164b0
push edi
push 0xa3
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
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 0x407163
call fcn.00406aa0
cmp dword [ebp - 0x14], 2
jne 0x407170
cmp word [esi], 0x5a4d
je 0x407189
push str.DOS
push 1
push 0xb0
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406900
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.00409200
cmp eax, edi
jne 0x4071a6
call fcn.00406aa0
mov eax, dword [ebx + 0x120]
mov ecx, dword [ebx + 0x14]
add eax, 4
cmp edi, ecx
jl 0x4071e0
jg 0x4071bd
cmp eax, dword [ebx + 0x10]
jbe 0x4071e0
push 0x416de4
push 1
push 0xba
push str.E:_build360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 2
call fcn.00406900
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.00409200
test eax, eax
jne 0x407207
call fcn.00406aa0
mov ecx, dword [ebp - 0x18]
mov eax, ecx
and eax, 0xffff
sub eax, 0x454c
je 0x40728d
sub eax, 2
je 0x407250
sub eax, 2
je 0x40723a
push 0x416de4
push 1
mov dword [ebx + 0xa0], 2
push 0xd4
jmp 0x4072a3
cmp ecx, 0x4550
je 0x4072b0
push 0x416dd8
push 1
push 0xd0
jmp 0x4072a3
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.00409200
test eax, eax
jne 0x40727f
call fcn.00406aa0
push 0x416dc4
push 1
push 0xc8
jmp 0x4072a3
push 0x416db0
push 1
mov dword [ebx + 0xa0], 4
push 0xcc
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406900
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.00409200
test eax, eax
jne 0x4072df
call fcn.00406aa0
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 0x407327
cmp ax, 0x200
je 0x407327
cmp ax, 0x8664
je 0x407327
push 0x416d90
push 1
push 0xe2
push str.E:_build360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 5
call fcn.00406900
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.00409200
test eax, eax
jne 0x407346
call fcn.00406aa0
mov ax, word [ebx + 0x138]
cmp ax, 0x10b
jne 0x4075e3
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xe0
mov dword [ebp - 0x14], eax
jbe 0x407372
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.00409200
test eax, eax
jne 0x407390
call fcn.00406aa0
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 0x4073c6
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x4073d2
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 esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
jmp 0x4076f0
cmp ax, 0x20b
jne 0x4076d7
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xf0
mov dword [ebp - 0x14], eax
jbe 0x407608
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.00409200
test eax, eax
jne 0x407626
call fcn.00406aa0
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 0x407656
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x407662
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 esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], 0
jmp 0x4076f0
push 0x416d78
push 1
push 0x13d
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406900
add esp, 0x10
mov ecx, dword [ebx + 0x13c]
mov eax, 0x10
cmp ecx, eax
jbe 0x407705
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.00409c00
test eax, eax
jne 0x407723
call fcn.00406aa0
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.00406b10
add esp, 4
mov dword [ebx + 0x3d8], eax
test eax, eax
jne 0x407763
push 0x4164b0
push eax
push 0x146
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
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.00409200
test eax, eax
jne 0x40778d
call fcn.00406aa0
mov eax, dword [ebx + 0x3d4]
mov ecx, ebx
lea edx, [eax + eax*4]
shl edx, 3
add edi, edx
adc esi, 0
call fcn.00409870
test eax, eax
jne 0x4077ae
call fcn.00406aa0
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.00411b50
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
push edx
push eax
call fcn.00411cc0
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edx
mov edx, dword [ebx + 0x3d4]
shl edx, 2
push edx
call fcn.00406b10
add esp, 4
mov dword [ebx + 0x3dc], eax
test eax, eax
jne 0x407814
push 0x4164b0
push eax
push 0x14e
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
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
xor esi, esi
rep stosb byte es:[edi], al
cmp esi, dword [ebx + 0x3d4]
jae 0x4078dc
mov ecx, dword [ebx + 0x3d8]
lea eax, [esi + esi*4]
push 8
lea edx, [ecx + eax*8]
lea eax, [ebp - 0x3c]
push edx
push eax
call dword [sym.imp.MSVCRT.dll_strncpy]
lea edi, [ebp - 0x3c]
or ecx, 0xffffffff
xor eax, eax
mov byte [ebp - 0x34], 0
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, ecx
inc edi
push edi
call fcn.00406b10
mov ecx, dword [ebx + 0x3dc]
add esp, 0x10
mov dword [ecx + esi*4], eax
mov edx, dword [ebx + 0x3dc]
cmp dword [edx + esi*4], 0
jne 0x4078a5
push 0x4164b0
push 0
push 0x159
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
add esp, 0x10
cmp edi, 0x7fffffff
ja 0x4078d6
mov eax, dword [ebx + 0x3dc]
lea edx, [ebp - 0x3c]
test edi, edi
mov eax, dword [eax + esi*4]
je 0x4078d6
test edi, edi
je 0x4078d2
mov cl, byte [edx]
test cl, cl
je 0x4078ce
mov byte [eax], cl
inc eax
inc edx
dec edi
jmp 0x4078bd
test edi, edi
jne 0x4078d3
dec eax
mov byte [eax], 0
inc esi
jmp 0x407835
mov ecx, dword [ebx + 0x3d4]
mov edi, 1
shl ecx, 2
push ecx
mov dword [ebx + 0xa0], edi
call fcn.00406b10
xor esi, esi
add esp, 4
cmp eax, esi
mov dword [ebx + 0x3e0], eax
jne 0x40791d
push 0x4164b0
push esi
push 0x164
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406060
add esp, 0x10
mov ecx, ebx
call fcn.00409760
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, esi
jg 0x40797d
jl 0x407971
cmp dword [ebx + 0x3e8], esi
jae 0x40797d
mov dword [ebx + 0x3e8], esi
mov dword [ebx + 0x3ec], esi
cmp dword [ebx + 0x1cc], 2
ja 0x407992
mov dword [ebx + 0x410], 0xffffffff
jmp 0x4079cd
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 0x4079cd
test edi, edi
mov dword [ebp - 4], 0xffffffff
jne 0x4079df
mov ecx, ebx
call fcn.00407a30
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4