Function at 0x4071d0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x412390
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 0x40722d
push str.GetFileSizeEx__
push edi
push 0x9c
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
add esp, 0x10
cmp dword [ebp + 8], edi
jne 0x407237
mov dword [ebx + 0x20], edi
jmp 0x40723e
mov dword [ebx + 0x20], 1
lea ecx, [ebx + 0x24]
call fcn.0040c2a0
push 0x10000
call fcn.00406c70
add esp, 4
cmp eax, edi
mov dword [ebx + 0x7c], eax
jne 0x407272
push 0x416510
push edi
push 0xa3
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
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 0x4072c3
call fcn.00406c00
cmp dword [ebp - 0x14], 2
jne 0x4072d0
cmp word [esi], 0x5a4d
je 0x4072e9
push str.DOS
push 1
push 0xb0
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406a60
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.00409360
cmp eax, edi
jne 0x407306
call fcn.00406c00
mov eax, dword [ebx + 0x120]
mov ecx, dword [ebx + 0x14]
add eax, 4
cmp edi, ecx
jl 0x407340
jg 0x40731d
cmp eax, dword [ebx + 0x10]
jbe 0x407340
push 0x416e44
push 1
push 0xba
push str.E:_build360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 2
call fcn.00406a60
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.00409360
test eax, eax
jne 0x407367
call fcn.00406c00
mov ecx, dword [ebp - 0x18]
mov eax, ecx
and eax, 0xffff
sub eax, 0x454c
je 0x4073ed
sub eax, 2
je 0x4073b0
sub eax, 2
je 0x40739a
push 0x416e44
push 1
mov dword [ebx + 0xa0], 2
push 0xd4
jmp 0x407403
cmp ecx, 0x4550
je 0x407410
push 0x416e38
push 1
push 0xd0
jmp 0x407403
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.00409360
test eax, eax
jne 0x4073df
call fcn.00406c00
push 0x416e24
push 1
push 0xc8
jmp 0x407403
push 0x416e10
push 1
mov dword [ebx + 0xa0], 4
push 0xcc
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406a60
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.00409360
test eax, eax
jne 0x40743f
call fcn.00406c00
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 0x407487
cmp ax, 0x200
je 0x407487
cmp ax, 0x8664
je 0x407487
push 0x416df0
push 1
push 0xe2
push str.E:_build360BaseQHPEParser.cpp
mov dword [ebx + 0xa0], 5
call fcn.00406a60
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.00409360
test eax, eax
jne 0x4074a6
call fcn.00406c00
mov ax, word [ebx + 0x138]
cmp ax, 0x10b
jne 0x407743
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xe0
mov dword [ebp - 0x14], eax
jbe 0x4074d2
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.00409360
test eax, eax
jne 0x4074f0
call fcn.00406c00
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 0x407526
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x407532
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 0x407850
cmp ax, 0x20b
jne 0x407837
xor eax, eax
mov ax, word [ebx + 0x134]
cmp eax, 0xf0
mov dword [ebp - 0x14], eax
jbe 0x407768
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.00409360
test eax, eax
jne 0x407786
call fcn.00406c00
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 0x4077b6
mov dword [ebx + 0x40c], 0xffffffff
jmp 0x4077c2
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 0x407850
push 0x416dd8
push 1
push 0x13d
push str.E:_build360BaseQHPEParser.cpp
call fcn.00406a60
add esp, 0x10
mov ecx, dword [ebx + 0x13c]
mov eax, 0x10
cmp ecx, eax
jbe 0x407865
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.00409d60
test eax, eax
jne 0x407883
call fcn.00406c00
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.00406c70
add esp, 4
mov dword [ebx + 0x3d8], eax
test eax, eax
jne 0x4078c3
push 0x416510
push eax
push 0x146
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
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.00409360
test eax, eax
jne 0x4078ed
call fcn.00406c00
mov eax, dword [ebx + 0x3d4]
mov ecx, ebx
lea edx, [eax + eax*4]
shl edx, 3
add edi, edx
adc esi, 0
call fcn.004099d0
test eax, eax
jne 0x40790e
call fcn.00406c00
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.00411cb0
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
push edx
push eax
call fcn.00411e20
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edx
mov edx, dword [ebx + 0x3d4]
shl edx, 2
push edx
call fcn.00406c70
add esp, 4
mov dword [ebx + 0x3dc], eax
test eax, eax
jne 0x407974
push 0x416510
push eax
push 0x14e
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
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 0x407a3c
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.00406c70
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 0x407a05
push 0x416510
push 0
push 0x159
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
add esp, 0x10
cmp edi, 0x7fffffff
ja 0x407a36
mov eax, dword [ebx + 0x3dc]
lea edx, [ebp - 0x3c]
test edi, edi
mov eax, dword [eax + esi*4]
je 0x407a36
test edi, edi
je 0x407a32
mov cl, byte [edx]
test cl, cl
je 0x407a2e
mov byte [eax], cl
inc eax
inc edx
dec edi
jmp 0x407a1d
test edi, edi
jne 0x407a33
dec eax
mov byte [eax], 0
inc esi
jmp 0x407995
mov ecx, dword [ebx + 0x3d4]
mov edi, 1
shl ecx, 2
push ecx
mov dword [ebx + 0xa0], edi
call fcn.00406c70
xor esi, esi
add esp, 4
cmp eax, esi
mov dword [ebx + 0x3e0], eax
jne 0x407a7d
push 0x416510
push esi
push 0x164
push str.E:_build360BaseQHPEParser.cpp
call fcn.004061c0
add esp, 0x10
mov ecx, ebx
call fcn.004098c0
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 0x407add
jl 0x407ad1
cmp dword [ebx + 0x3e8], esi
jae 0x407add
mov dword [ebx + 0x3e8], esi
mov dword [ebx + 0x3ec], esi
cmp dword [ebx + 0x1cc], 2
ja 0x407af2
mov dword [ebx + 0x410], 0xffffffff
jmp 0x407b2d
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 0x407b2d
test edi, edi
mov dword [ebp - 4], 0xffffffff
jne 0x407b3f
mov ecx, ebx
call fcn.00407b90
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