Function at 0x409980
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
mov eax, dword [0x53f040]
xor eax, esp
mov dword [esp + 0x30], eax
cmp dword [0x541cf8], 0
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 8]
push esi
push edi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ecx
je 0x4099eb
mov eax, dword [ebx + 4]
mov esi, str._null_
test eax, eax
mov edx, str.___Analyzing_schema_element_
mov ecx, 0x540ff8
cmovne esi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
mov ecx, dword [esp + 0x14]
add esp, 4
mov edi, dword [ebx + 8]
mov dword [ebx + 0x58], ecx
test edi, edi
je 0x409c35
mov al, byte [edi]
cmp al, 0x22
jne 0x409a0a
cmp byte [edi + 1], al
jne 0x409a0a
cmp byte [edi + 2], 0x3a
je 0x409a51
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x409c35
cmp al, 0x22
jne 0x409c35
mov esi, ecx
lea edx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x409a22
sub esi, edx
lea eax, [edi + 1]
push esi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x409c35
cmp byte [esi + edi + 1], 0x22
lea eax, [esi + edi]
mov edi, eax
jne 0x409c35
mov eax, dword [esp + 0x14]
lea ebx, [edi + 3]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [eax + 0x5c], 0
test ebx, ebx
je 0x409c45
mov eax, dword [edi + 0x58]
mov ecx, dword [edi + 0x5c]
cmp eax, ecx
je 0x409ac8
nop dword [eax]
mov edx, dword [eax + 4]
test edx, edx
je 0x409ac1
mov esi, ebx
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [esi]
jne 0x409ab0
test bl, bl
je 0x409aac
mov bl, byte [edx + 1]
cmp bl, byte [esi + 1]
jne 0x409ab0
add edx, 2
add esi, 2
test bl, bl
jne 0x409a90
xor edx, edx
jmp 0x409ab5
sbb edx, edx
or edx, 1
test edx, edx
je 0x409bbb
mov ebx, dword [esp + 0x18]
add eax, 0x78
cmp eax, ecx
jne 0x409a80
mov ebx, dword [esp + 0x14]
cmp dword [ebx + 0x5c], 0
jne 0x409ce1
mov esi, dword [edi + 0x40]
cmp esi, dword [edi + 0x44]
je 0x409ce1
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x409d0e
mov ebx, dword [ebx + 8]
test ebx, ebx
je 0x409d00
mov al, byte [ebx]
cmp al, 0x22
jne 0x409b0d
cmp byte [ebx + 1], al
jne 0x409b0d
cmp byte [ebx + 2], 0x3a
je 0x409b5c
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x409d00
cmp al, 0x22
jne 0x409d00
mov edi, ecx
lea edx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x409b25
sub edi, edx
lea eax, [ebx + 1]
push edi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x409d06
cmp byte [edi + ebx + 1], 0x22
lea eax, [edi + ebx]
mov edi, dword [esp + 0x10]
mov ebx, eax
jne 0x409d00
mov ecx, dword [esp + 0x24]
add ebx, 3
mov dword [esp + 0x18], ebx
je 0x409d00
mov eax, dword [ecx + 0x58]
mov ecx, dword [ecx + 0x5c]
cmp eax, ecx
je 0x409cd3
nop word [eax + eax]
mov edx, dword [eax + 4]
test edx, edx
je 0x409c59
mov edi, ebx
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [edi]
jne 0x409c4c
test bl, bl
je 0x409bb4
mov bl, byte [edx + 1]
cmp bl, byte [edi + 1]
jne 0x409c4c
add edx, 2
add edi, 2
test bl, bl
jne 0x409b90
xor edx, edx
jmp 0x409c51
cmp dword [0x541cf8], 0
mov ebx, dword [esp + 0x14]
mov dword [ebx + 0x5c], eax
je 0x409acc
mov eax, dword [ebx + 4]
mov esi, str._null_
test eax, eax
mov edi, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
cmovne esi, eax
mov eax, dword [esp + 0x18]
test eax, eax
cmovne edi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._ref_
mov ecx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
mov edi, dword [esp + 0x14]
add esp, 4
jmp 0x409acc
mov edi, dword [esp + 0x10]
mov dword [ebx + 0x5c], 0
jmp 0x409acc
mov ebx, eax
jmp 0x409acc
sbb edx, edx
or edx, 1
test edx, edx
je 0x409c66
mov ebx, dword [esp + 0x18]
add eax, 0x78
cmp eax, ecx
jne 0x409b80
jmp 0x409cd3
cmp dword [0x541cf8], 0
mov ebx, dword [esp + 0x14]
mov dword [ebx + 0x5c], eax
je 0x409cd7
mov eax, dword [ebx + 4]
mov edi, str._null_
test eax, eax
mov ebx, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
cmovne edi, eax
mov eax, dword [esp + 0x18]
test eax, eax
cmovne ebx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, str._ref_
mov ecx, eax
call fcn.00403770
mov edx, ebx
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov ebx, dword [esp + 0x14]
cmp dword [ebx + 0x5c], 0
je 0x409d0a
mov edi, dword [esp + 0x10]
mov ecx, dword [ebx + 0x40]
test ecx, ecx
je 0x409d1c
push edi
call fcn.0040aa00
mov eax, dword [ebx + 0x40]
mov dword [ebx + 0x60], eax
add ebx, 0xc
mov dword [esp + 0x1c], ebx
jmp 0x40a00b
mov ebx, dword [esp + 0x14]
jmp 0x409d0e
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
add esi, 0x14
cmp esi, dword [edi + 0x44]
jne 0x409ae2
jmp 0x409ce1
mov edi, dword [ebx + 0xc]
lea eax, [ebx + 0xc]
mov dword [esp + 0x18], eax
test edi, edi
je 0x409e78
mov al, byte [edi]
cmp al, 0x22
jne 0x409d3f
cmp byte [edi + 1], al
jne 0x409d3f
cmp byte [edi + 2], 0x3a
je 0x409d8f
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x409e78
cmp al, 0x22
jne 0x409e78
mov esi, ecx
lea edx, [esi + 1]
nop dword [eax + eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x409d60
sub esi, edx
lea eax, [edi + 1]
push esi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x409e78
cmp byte [edi + esi + 1], 0x22
lea eax, [edi + esi]
mov edi, eax
jne 0x409e78
mov ecx, dword [esp + 0x14]
lea ebx, [edi + 3]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [ecx + 0x60], 0
test ebx, ebx
je 0x409e83
mov eax, dword [edi + 0x7c]
mov ecx, dword [edi + 0x80]
cmp eax, ecx
je 0x409e83
nop
mov edx, dword [eax + 4]
test edx, edx
je 0x409dfd
mov esi, ebx
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [esi]
jne 0x409df0
test bl, bl
je 0x409dec
mov bl, byte [edx + 1]
cmp bl, byte [esi + 1]
jne 0x409df0
add edx, 2
add esi, 2
test bl, bl
jne 0x409dd0
xor edx, edx
jmp 0x409df5
sbb edx, edx
or edx, 1
test edx, edx
je 0x409e09
mov ebx, dword [esp + 0x1c]
add eax, 0x50
cmp eax, ecx
jne 0x409dc0
jmp 0x409e83
cmp dword [0x541cf8], 0
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x60], eax
je 0x409e83
mov eax, dword [ecx + 4]
mov esi, str._null_
test eax, eax
mov edi, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
cmovne esi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
cmovne edi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._simpleType_
mov ecx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
jmp 0x409e7f
mov dword [ebx + 0x60], 0
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebx, ecx
mov dword [esp + 0x1c], ebx
cmp dword [eax + 0x60], 0
jne 0x40a00b
mov esi, dword [edi + 0x40]
mov dword [esp + 0x1c], ebx
cmp esi, dword [edi + 0x44]
je 0x40a00b
mov eax, ecx
nop dword [eax]
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x40a039
mov ebx, dword [eax]
test ebx, ebx
je 0x40a039
mov al, byte [ebx]
cmp al, 0x22
jne 0x409eda
cmp byte [ebx + 1], al
jne 0x409eda
cmp byte [ebx + 2], 0x3a
je 0x409f29
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x40a02b
cmp al, 0x22
jne 0x40a02b
mov edi, ecx
lea edx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x409ef2
sub edi, edx
lea eax, [ebx + 1]
push edi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x40a031
cmp byte [edi + ebx + 1], 0x22
lea eax, [edi + ebx]
mov edi, dword [esp + 0x10]
mov ebx, eax
jne 0x40a02b
mov ecx, dword [esp + 0x24]
add ebx, 3
mov dword [esp + 0x1c], ebx
je 0x40a02b
mov eax, dword [ecx + 0x7c]
mov ecx, dword [ecx + 0x80]
cmp eax, ecx
je 0x409ff3
mov edx, dword [eax + 4]
test edx, edx
je 0x409f7d
mov edi, ebx
mov bl, byte [edx]
cmp bl, byte [edi]
jne 0x409f70
test bl, bl
je 0x409f6c
mov bl, byte [edx + 1]
cmp bl, byte [edi + 1]
jne 0x409f70
add edx, 2
add edi, 2
test bl, bl
jne 0x409f50
xor edx, edx
jmp 0x409f75
sbb edx, edx
or edx, 1
test edx, edx
je 0x409f86
mov ebx, dword [esp + 0x1c]
add eax, 0x50
cmp eax, ecx
jne 0x409f47
jmp 0x409ff3
cmp dword [0x541cf8], 0
mov ebx, dword [esp + 0x14]
mov dword [ebx + 0x60], eax
je 0x409ff3
mov eax, dword [ebx + 4]
mov edi, str._null_
test eax, eax
mov ebx, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
cmovne edi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
cmovne ebx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, str._simpleType_
mov ecx, eax
call fcn.00403770
mov edx, ebx
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, eax
mov dword [esp + 0x1c], ebx
cmp dword [ecx + 0x60], 0
je 0x40a035
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x44]
test ecx, ecx
je 0x40a04d
push edi
call fcn.0040ada0
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x44]
mov dword [esi + 0x64], eax
jmp 0x40a366
mov eax, dword [esp + 0x18]
jmp 0x40a039
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
add esi, 0x14
mov ebx, eax
mov dword [esp + 0x1c], ebx
cmp esi, dword [edi + 0x44]
jne 0x409eb0
jmp 0x40a00b
mov edi, dword [ebx]
test edi, edi
je 0x40a2a5
mov al, byte [edi]
cmp al, 0x22
jne 0x40a068
cmp byte [edi + 1], al
jne 0x40a068
cmp byte [edi + 2], 0x3a
je 0x40a0b3
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x40a2a5
cmp al, 0x22
jne 0x40a2a5
mov esi, ecx
lea edx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40a084
sub esi, edx
lea eax, [edi + 1]
push esi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x40a2a5
cmp byte [esi + edi + 1], 0x22
lea eax, [esi + edi]
mov edi, eax
jne 0x40a2a5
mov esi, dword [esp + 0x14]
lea ebx, [edi + 3]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [esi + 0x64], 0
test ebx, ebx
je 0x40a12e
mov eax, dword [edi + 0x88]
mov ecx, dword [edi + 0x8c]
cmp eax, ecx
je 0x40a12e
nop dword [eax]
mov edx, dword [eax + 4]
test edx, edx
je 0x40a121
mov esi, ebx
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [esi]
jne 0x40a110
test bl, bl
je 0x40a10c
mov bl, byte [edx + 1]
cmp bl, byte [esi + 1]
jne 0x40a110
add edx, 2
add esi, 2
test bl, bl
jne 0x40a0f0
xor edx, edx
jmp 0x40a115
sbb edx, edx
or edx, 1
test edx, edx
je 0x40a22b
mov ebx, dword [esp + 0x18]
add eax, 0x8c
cmp eax, ecx
jne 0x40a0e0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
cmp dword [esi + 0x64], 0
jne 0x40a366
mov esi, dword [edi + 0x40]
cmp esi, dword [edi + 0x44]
je 0x40a362
nop dword [eax + eax]
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x40a352
mov ebx, dword [ebx]
test ebx, ebx
je 0x40a352
mov al, byte [ebx]
cmp al, 0x22
jne 0x40a17a
cmp byte [ebx + 1], al
jne 0x40a17a
cmp byte [ebx + 2], 0x3a
je 0x40a1c9
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x40a352
cmp al, 0x22
jne 0x40a352
mov edi, ecx
lea edx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x40a192
sub edi, edx
lea eax, [ebx + 1]
push edi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x40a34e
cmp byte [edi + ebx + 1], 0x22
lea eax, [edi + ebx]
mov edi, dword [esp + 0x10]
mov ebx, eax
jne 0x40a352
mov ecx, dword [esp + 0x24]
add ebx, 3
mov dword [esp + 0x18], ebx
je 0x40a352
mov eax, dword [ecx + 0x88]
mov ecx, dword [ecx + 0x8c]
cmp eax, ecx
je 0x40a344
nop word [eax + eax]
mov edx, dword [eax + 4]
test edx, edx
je 0x40a2c6
mov edi, ebx
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [edi]
jne 0x40a2b9
test bl, bl
je 0x40a224
mov bl, byte [edx + 1]
cmp bl, byte [edi + 1]
jne 0x40a2b9
add edx, 2
add edi, 2
test bl, bl
jne 0x40a200
xor edx, edx
jmp 0x40a2be
cmp dword [0x541cf8], 0
mov ebx, dword [esp + 0x14]
mov dword [ebx + 0x64], eax
je 0x40a12a
mov eax, dword [ebx + 4]
mov esi, str._null_
test eax, eax
mov edi, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
cmovne esi, eax
mov eax, dword [esp + 0x18]
test eax, eax
cmovne edi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._complexType_
mov ecx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
mov edi, dword [esp + 0x14]
add esp, 4
jmp 0x40a12a
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov dword [esi + 0x64], 0
jmp 0x40a132
sbb edx, edx
or edx, 1
test edx, edx
je 0x40a2d5
mov ebx, dword [esp + 0x18]
add eax, 0x8c
cmp eax, ecx
jne 0x40a1f0
jmp 0x40a344
cmp dword [0x541cf8], 0
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x64], eax
je 0x40a344
mov eax, ecx
mov edi, str._null_
mov ebx, str._null_
mov edx, str.____Found_element_
mov ecx, 0x540ff8
mov eax, dword [eax + 4]
test eax, eax
cmovne edi, eax
mov eax, dword [esp + 0x18]
test eax, eax
cmovne ebx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, str._complexType_
mov ecx, eax
call fcn.00403770
mov edx, ebx
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x64], 0
jne 0x40a362
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
add esi, 0x14
cmp esi, dword [edi + 0x44]
jne 0x40a150
mov esi, dword [esp + 0x14]
cmp byte [esi + 0x25], 0
jne 0x40a830
mov edi, dword [esi + 0x28]
test edi, edi
je 0x40a830
mov al, byte [edi]
cmp al, 0x22
jne 0x40a392
cmp byte [edi + 1], al
jne 0x40a392
cmp byte [edi + 2], 0x3a
jne 0x40a392
mov ebx, dword [esp + 0x10]
jmp 0x40a3df
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x40a597
cmp al, 0x22
jne 0x40a597
mov esi, ecx
lea edx, [esi + 1]
nop
mov al, byte [esi]
inc esi
test al, al
jne 0x40a3b0
sub esi, edx
lea eax, [edi + 1]
push esi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x40a597
cmp byte [esi + edi + 1], 0x22
lea eax, [esi + edi]
mov edi, eax
jne 0x40a597
lea edx, [edi + 3]
mov dword [esp + 0x30], edx
test edx, edx
je 0x40a597
mov esi, dword [ebx + 0x58]
mov eax, dword [ebx + 0x5c]
cmp esi, eax
je 0x40a597
nop dword [eax]
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x40a434
mov bl, byte [ecx]
cmp bl, byte [edx]
jne 0x40a427
test bl, bl
je 0x40a423
mov bl, byte [ecx + 1]
cmp bl, byte [edx + 1]
jne 0x40a427
add ecx, 2
add edx, 2
test bl, bl
jne 0x40a407
xor ecx, ecx
jmp 0x40a42c
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x40a440
mov edx, dword [esp + 0x30]
add esi, 0x78
cmp esi, eax
jne 0x40a400
jmp 0x40a597
mov ecx, dword [esp + 0x14]
mov eax, ecx
mov ebx, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
mov edi, ecx
mov dword [esp + 0x18], ebx
cmp dword [ecx + 0x5c], 0
jne 0x40a4ac
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x94]
call fcn.004049e0
mov ebx, eax
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov dword [esp + 0x1c], ebx
mov edi, ebx
mov dword [esp + 0x2c], ebx
mov edx, dword [ebx]
push dword [eax + 0x94]
call dword [edx + 4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], edi
mov eax, dword [ecx + 4]
mov dword [ebx + 4], eax
mov eax, dword [ecx + 0x20]
mov dword [edi + 0x20], eax
mov dword [edi + 0x5c], ecx
mov eax, dword [ecx + 0x58]
mov dword [edi + 0x58], eax
mov dword [edi + 0x34], 0
mov eax, dword [esi + 0x68]
lea edx, [esi + 0x68]
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0x24], edx
cmp eax, ecx
je 0x40a50c
mov edi, dword [edi + 0x58]
mov edx, dword [eax]
cmp dword [edx + 0x58], edi
jne 0x40a4f9
mov esi, dword [ebx + 4]
mov edx, dword [edx + 4]
nop dword [eax]
mov bl, byte [edx]
cmp bl, byte [esi]
jne 0x40a4f0
test bl, bl
je 0x40a4ec
mov bl, byte [edx + 1]
cmp bl, byte [esi + 1]
jne 0x40a4f0
add edx, 2
add esi, 2
test bl, bl
jne 0x40a4d0
xor edx, edx
jmp 0x40a4f5
sbb edx, edx
or edx, 1
test edx, edx
je 0x40a504
mov ebx, dword [esp + 0x18]
add eax, 4
cmp eax, ecx
jne 0x40a4c0
mov edx, dword [esp + 0x24]
cmp eax, ecx
jne 0x40a52d
mov eax, dword [edx + 4]
cmp eax, dword [edx + 8]
je 0x40a520
mov ecx, dword [esp + 0x1c]
mov dword [eax], ecx
add dword [edx + 4], 4
jmp 0x40a52d
lea ecx, [esp + 0x2c]
push ecx
push eax
mov ecx, edx
call fcn.004110f0
cmp dword [0x541cf8], 0
je 0x40a597
mov eax, dword [esp + 0x14]
mov esi, str._null_
mov edi, str._null_
mov edx, str.____Found_substitutionGroup_element_
mov ecx, 0x540ff8
mov eax, dword [eax + 4]
test eax, eax
cmovne esi, eax
mov eax, dword [esp + 0x30]
test eax, eax
cmovne edi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._for_element_
mov ecx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov esi, dword [esp + 0x10]
mov edi, dword [esi + 0x40]
mov dword [esp + 0x24], edi
cmp edi, dword [esi + 0x44]
je 0x40a834
nop dword [eax + eax]
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x34], ecx
test ecx, ecx
je 0x40a81e
mov eax, dword [esp + 0x14]
mov ebx, dword [eax + 0x28]
test ebx, ebx
je 0x40a81e
mov al, byte [ebx]
cmp al, 0x22
jne 0x40a5df
cmp byte [ebx + 1], al
jne 0x40a5df
cmp byte [ebx + 2], 0x3a
je 0x40a62e
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x40a81e
cmp al, 0x22
jne 0x40a81e
mov esi, ecx
lea edx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40a5f7
sub esi, edx
lea eax, [ebx + 1]
push esi
push ecx
push eax
call fcn.004f99a0
add esp, 0xc
test eax, eax
jne 0x40a81a
cmp byte [esi + ebx + 1], 0x22
lea eax, [esi + ebx]
mov esi, dword [esp + 0x10]
mov ebx, eax
jne 0x40a81e
mov ecx, dword [esp + 0x34]
lea edx, [ebx + 3]
mov dword [esp + 0x1c], edx
test edx, edx
je 0x40a81e
mov esi, dword [ecx + 0x58]
mov eax, dword [ecx + 0x5c]
cmp esi, eax
je 0x40a81a
nop dword [eax + eax]
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x40a684
mov bl, byte [ecx]
cmp bl, byte [edx]
jne 0x40a677
test bl, bl
je 0x40a673
mov bl, byte [ecx + 1]
cmp bl, byte [edx + 1]
jne 0x40a677
add ecx, 2
add edx, 2
test bl, bl
jne 0x40a657
xor ecx, ecx
jmp 0x40a67c
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x40a690
mov edx, dword [esp + 0x1c]
add esi, 0x78
cmp esi, eax
jne 0x40a650
jmp 0x40a81a
mov edx, dword [esp + 0x14]
mov eax, edx
mov dword [esp + 0x18], eax
mov ebx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
cmp dword [edx + 0x5c], 0
jne 0x40a6fa
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x94]
call fcn.004049e0
mov ecx, dword [esp + 0x10]
mov ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], eax
mov edx, dword [eax]
push dword [ecx + 0x94]
mov ecx, eax
call dword [edx + 4]
mov edx, dword [esp + 0x14]
mov ecx, ebx
mov dword [esp + 0x30], ebx
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 0x20]
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x5c], edx
mov eax, dword [edx + 0x58]
mov dword [ebx + 0x58], eax
mov dword [ebx + 0x34], 0
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x6c]
cmp eax, ecx
je 0x40a770
mov ebx, dword [ebx + 0x58]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x38], ebx
nop
mov edx, dword [eax]
cmp dword [edx + 0x58], ebx
jne 0x40a761
mov ebx, dword [edi + 4]
mov edx, dword [edx + 4]
nop dword [eax]
mov cl, byte [edx]
cmp cl, byte [ebx]
mov byte [esp + 0x23], cl
mov ecx, dword [esi + 0x6c]
jne 0x40a754
cmp byte [esp + 0x23], 0
je 0x40a750
mov cl, byte [edx + 1]
cmp cl, byte [ebx + 1]
mov byte [esp + 0x23], cl
mov ecx, dword [esi + 0x6c]
jne 0x40a754
add edx, 2
add ebx, 2
cmp byte [esp + 0x23], 0
jne 0x40a720
xor edx, edx
jmp 0x40a759
sbb edx, edx
or edx, 1
test edx, edx
je 0x40a768
mov ebx, dword [esp + 0x38]
add eax, 4
cmp eax, ecx
jne 0x40a710
mov edi, dword [esp + 0x24]
cmp eax, ecx
jne 0x40a792
mov eax, dword [esi + 0x6c]
lea ecx, [esi + 0x68]
cmp eax, dword [ecx + 8]
je 0x40a787
mov edx, dword [esp + 0x18]
mov dword [eax], edx
add dword [ecx + 4], 4
jmp 0x40a792
lea edx, [esp + 0x2c]
push edx
push eax
call fcn.004110f0
cmp dword [0x541cf8], 0
je 0x40a81a
mov eax, dword [esp + 0x14]
mov esi, str._null_
mov ebx, str._null_
mov edx, str.____Found_substitutionGroup_element_
mov ecx, 0x540ff8
mov eax, dword [eax + 4]
test eax, eax
cmovne esi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
cmovne ebx, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._for_element_
mov ecx, eax
call fcn.00403770
mov edx, ebx
mov ecx, eax
call fcn.00403770
mov edx, str._in_
mov ecx, eax
call fcn.00403770
mov edx, dword [esp + 0x34]
mov ecx, eax
mov edx, dword [edx + 4]
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov esi, dword [esp + 0x10]
add edi, 0x14
mov dword [esp + 0x24], edi
cmp edi, dword [esi + 0x44]
jne 0x40a5b0
jmp 0x40a834
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
cmp dword [ebx + 0x5c], 0
jne 0x40a981
cmp dword [ebx + 0x60], 0
jne 0x40a981
cmp dword [ebx + 0x64], 0
jne 0x40a981
mov ecx, dword [ebx + 8]
test ecx, ecx
je 0x40a8d7
call fcn.0044af30
test eax, eax
je 0x40a887
mov eax, dword [ebx + 8]
lea ecx, [esi + 0xb8]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040e940
jmp 0x40a981
cmp dword [0x541cf4], 0
jne 0x40a981
mov eax, dword [esi + 4]
mov edi, str._undefined_
test eax, eax
mov esi, 0x51ebfc
mov edx, str._nWarning:_could_not_find_the_referenced_element_
mov ecx, 0x540ff8
cmovne edi, eax
mov eax, dword [ebx + 4]
test eax, eax
cmovne esi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._ref_
mov ecx, eax
call fcn.00403770
mov edx, dword [ebx + 8]
jmp 0x40a950
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x40a981
call fcn.0044af30
test eax, eax
je 0x40a909
mov eax, dword [ebx + 0xc]
lea ecx, [esi + 0xb0]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040e940
jmp 0x40a981
cmp dword [0x541cf4], 0
jne 0x40a981
mov eax, dword [esi + 4]
mov edx, str._nWarning:_could_not_find_the_type_for_element_
test eax, eax
mov esi, str._undefined_
mov edi, esi
mov ecx, 0x540ff8
cmovne edi, eax
mov eax, dword [ebx + 4]
test eax, eax
cmovne esi, eax
call fcn.00403770
mov edx, esi
mov ecx, eax
call fcn.00403770
mov edx, str._type_
mov ecx, eax
call fcn.00403770
mov edx, dword [ebx + 0xc]
mov ecx, eax
call fcn.00403770
mov edx, str._in_schema_
mov ecx, eax
call fcn.00403770
mov edx, edi
mov ecx, eax
call fcn.00403770
mov edx, 0x51ec6c
mov ecx, eax
call fcn.00403770
push eax
call fcn.004039c0
add esp, 4
mov ecx, dword [esp + 0x3c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004f197d
mov esp, ebp
pop ebp
ret 4