Function at 0x45a99a
Capabilities:
Parse pe header

Disassembly:
push ecx
push ecx
and dword [esp], 0
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
push edi
mov ebp, 0xfa
push ebp
push dword [esi + 0x24]
or edi, 0xffffffff
call fcn.00440850
mov eax, dword [esi + 0x24]
pop ecx
pop ecx
mov ecx, dword [eax + 0x10]
cmp byte [ecx], 0
jne 0x45a9da
push ebp
push eax
call fcn.00440850
test eax, eax
pop ecx
pop ecx
jg 0x45a9da
push esi
call fcn.0044a459
pop ecx
cmp dword [esi + 0x90], 0
jne 0x45ae1a
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 0x10]
movzx edx, byte [eax]
cmp edx, 0x3c
jne 0x45ae1a
cmp byte [eax + 1], 0x21
jne 0x45ae1a
push 0x45
pop ebx
cmp byte [eax + 2], bl
jne 0x45ae1a
cmp byte [eax + 3], 0x4c
jne 0x45ae1a
cmp byte [eax + 4], bl
jne 0x45ae1a
cmp byte [eax + 5], 0x4d
jne 0x45ae1a
cmp byte [eax + 6], bl
jne 0x45ae1a
cmp byte [eax + 7], 0x4e
jne 0x45ae1a
cmp byte [eax + 8], 0x54
jne 0x45ae1a
push 9
pop edi
add dword [esi + 0xa8], edi
add dword [ecx + 0x10], edi
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x25
mov dword [esp + 0x14], ecx
jne 0x45aa6b
push esi
call fcn.0044fc2d
pop ecx
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x26
jne 0x45aa7d
push esi
call fcn.004501b5
pop ecx
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
cmp byte [ecx], 0
jne 0x45aa9c
push ebp
push eax
call fcn.00440850
test eax, eax
pop ecx
pop ecx
jg 0x45aa9c
push esi
call fcn.0044a459
pop ecx
mov eax, dword [esi + 0x90]
test eax, eax
je 0x45aaaa
mov ecx, eax
jmp 0x45aab3
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, 0x20
push 0x41
pop ebp
je 0x45ab22
test eax, eax
je 0x45aac3
mov ecx, eax
jmp 0x45aacc
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, edi
je 0x45ab22
test eax, eax
je 0x45aad8
mov ecx, eax
jmp 0x45aae1
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, 0xa
je 0x45ab22
test eax, eax
jne 0x45aaf3
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax]
cmp eax, 0xd
je 0x45ab22
mov eax, dword [esi]
test eax, eax
je 0x45ab11
mov eax, dword [eax + 0x58]
test eax, eax
je 0x45ab11
push str.Space_required_after_ELEMENT_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
and dword [esi + 0xc], 0
mov dword [esi + 0x54], ebp
mov dword [esi + 0xb4], 1
push esi
call fcn.0044e9b0
push esi
call fcn.004505a5
test eax, eax
pop ecx
pop ecx
mov dword [esp + 0x1c], eax
jne 0x45ab6e
mov eax, dword [esi]
test eax, eax
je 0x45ab51
mov eax, dword [eax + 0x58]
test eax, eax
je 0x45ab51
push str.xmlParseElementDecl:_no_name_for_Element_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
and dword [esi + 0xc], 0
mov dword [esi + 0x54], 0x44
mov dword [esi + 0xb4], 1
or eax, 0xffffffff
jmp 0x45ae1c
mov eax, dword [esi + 0x90]
test eax, eax
je 0x45ab7c
mov ecx, eax
jmp 0x45ab85
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, 0x20
je 0x45abf1
test eax, eax
je 0x45ab92
mov ecx, eax
jmp 0x45ab9b
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, edi
je 0x45abf1
test eax, eax
je 0x45aba7
mov ecx, eax
jmp 0x45abb0
mov ecx, dword [esi + 0x24]
mov ecx, dword [ecx + 0x10]
movzx ecx, byte [ecx]
cmp ecx, 0xa
je 0x45abf1
test eax, eax
jne 0x45abc2
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax]
cmp eax, 0xd
je 0x45abf1
mov eax, dword [esi]
test eax, eax
je 0x45abe0
mov eax, dword [eax + 0x58]
test eax, eax
je 0x45abe0
push str.Space_required_after_the_element_name_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
and dword [esi + 0xc], 0
mov dword [esi + 0x54], ebp
mov dword [esi + 0xb4], 1
push esi
call fcn.0044e9b0
mov edi, dword [esi + 0x90]
test edi, edi
pop ecx
jne 0x45ac87
mov ecx, dword [esi + 0x24]
mov eax, dword [ecx + 0x10]
movzx edx, byte [eax]
cmp edx, ebx
jne 0x45ac87
cmp byte [eax + 1], 0x4d
jne 0x45ac87
cmp byte [eax + 2], 0x50
jne 0x45ac87
cmp byte [eax + 3], 0x54
jne 0x45ac87
cmp byte [eax + 4], 0x59
jne 0x45ac87
add dword [esi + 0xa8], 5
add dword [ecx + 0x10], 5
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x25
jne 0x45ac48
push esi
call fcn.0044fc2d
pop ecx
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x26
jne 0x45ac5a
push esi
call fcn.004501b5
pop ecx
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
cmp byte [ecx], 0
jne 0x45ac7d
push 0xfa
push eax
call fcn.00440850
test eax, eax
pop ecx
pop ecx
jg 0x45ac7d
push esi
call fcn.0044a459
pop ecx
xor edi, edi
inc edi
xor ebx, ebx
jmp 0x45ad2f
xor ebx, ebx
cmp edi, ebx
jne 0x45ae62
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx]
cmp edx, ebp
jne 0x45ad01
cmp byte [ecx + 1], 0x4e
jne 0x45ad01
cmp byte [ecx + 2], 0x59
jne 0x45ad01
add dword [esi + 0xa8], 3
add dword [eax + 0x10], 3
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x25
jne 0x45acc7
push esi
call fcn.0044fc2d
pop ecx
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
cmp byte [eax], 0x26
jne 0x45acd9
push esi
call fcn.004501b5
pop ecx
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
cmp byte [ecx], 0
jne 0x45acfc
push 0xfa
push eax
call fcn.00440850
test eax, eax
pop ecx
pop ecx
jg 0x45acfc
push esi
call fcn.0044a459
pop ecx
push 2
pop edi
jmp 0x45ad2f
cmp edi, ebx
jne 0x45ae62
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax]
cmp eax, 0x28
jne 0x45ae23
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x20]
push esi
call fcn.0045a85c
add esp, 0xc
mov edi, eax
push esi
call fcn.0044e9b0
xor ebp, ebp
inc ebp
cmp dword [esi + 0x90], ebx
pop ecx
jne 0x45ad5b
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax]
cmp eax, ebx
jne 0x45ad5b
cmp dword [esi + 0x28], ebp
jle 0x45ad5b
push esi
call fcn.0044a459
jmp 0x45ad38
push esi
call fcn.0044e9b0
cmp dword [esi + 0x90], ebx
pop ecx
jne 0x45ad78
mov eax, dword [esi + 0x24]
mov ecx, dword [eax + 0x10]
movzx ecx, byte [ecx]
cmp ecx, 0x3e
je 0x45ada3
mov eax, dword [esi]
cmp eax, ebx
je 0x45ad91
mov eax, dword [eax + 0x58]
cmp eax, ebx
je 0x45ad91
push str.xmlParseElementDecl:_expected___at_the_end_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
mov dword [esi + 0x54], 0x49
mov dword [esi + 0xc], ebx
mov dword [esi + 0xb4], ebp
jmp 0x45adff
cmp dword [esp + 0x14], eax
je 0x45add2
mov eax, dword [esi]
cmp eax, ebx
je 0x45adc2
mov eax, dword [eax + 0x58]
cmp eax, ebx
je 0x45adc2
push str.Element_declaration_doesnt_start_and_stop_in_the_same_entity_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
mov dword [esi + 0x54], 0x5a
mov dword [esi + 0xc], ebx
mov dword [esi + 0xb4], ebp
push esi
call fcn.0044e72c
mov eax, dword [esi]
cmp eax, ebx
pop ecx
je 0x45adff
cmp dword [esi + 0xb4], ebx
jne 0x45adff
mov eax, dword [eax + 0x24]
cmp eax, ebx
je 0x45adff
push dword [esp + 0x10]
push edi
push dword [esp + 0x24]
push dword [esi + 4]
call eax
add esp, 0x10
cmp dword [esp + 0x10], ebx
je 0x45ae0f
push dword [esp + 0x10]
call fcn.004627e7
pop ecx
push dword [esp + 0x1c]
call dword [0x4e2438]
pop ecx
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret
cmp edi, ebx
jne 0x45ae62
mov eax, dword [esi + 0x24]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax]
cmp eax, 0x25
jne 0x45ae62
cmp dword [esi + 0x60], ebx
jne 0x45ae62
cmp dword [esi + 0x28], 1
jne 0x45ae62
mov eax, dword [esi]
cmp eax, ebx
je 0x45ae59
mov eax, dword [eax + 0x58]
cmp eax, ebx
je 0x45ae59
push str.PEReference:_forbidden_within_markup_decl_in_internal_subset_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
mov dword [esi + 0x54], 0x15
jmp 0x45ae82
mov eax, dword [esi]
cmp eax, ebx
je 0x45ae7b
mov eax, dword [eax + 0x58]
cmp eax, ebx
je 0x45ae7b
push str.xmlParseElementDecl:_EMPTY__ANY_or___expected_n
push dword [esi + 4]
call eax
pop ecx
pop ecx
mov dword [esi + 0x54], 0x36
push dword [esp + 0x1c]
mov dword [esi + 0xc], ebx
mov dword [esi + 0xb4], 1
call dword [0x4e2438]
pop ecx
jmp 0x45ab66