Function at 0x406b20
Capabilities:
Parse pe header

Disassembly:
sub esp, 0xdc
mov eax, dword [0x4d1698]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xe0]
mov edx, ecx
mov ecx, dword [esp + 0xf4]
push ebx
push ebp
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x58], ecx
mov cl, byte [esp + 0x30]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xec]
mov eax, dword [eax + 0x1c]
push esi
xor esi, esi
and cl, 0xe0
xor bl, bl
push edi
mov edi, dword [esp + 0xf8]
and cl, 0xdf
cmp dword [eax + 4], 0x5a
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edi
mov dword [esp + 0x64], ebp
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], esi
mov byte [esp + 0x38], cl
mov dword [esp + 0x18], eax
mov byte [esp + 0x16], bl
mov byte [esp + 0x3f], bl
jne 0x406bb4
mov eax, dword [eax + 0x14]
mov byte [esp + 0x16], 1
mov bl, byte [esp + 0x16]
mov dword [esp + 0x18], eax
push ebp
push edi
push eax
push edx
lea eax, [esp + 0x28]
call fcn.00406900
mov dword [esp + 0x5c], eax
cmp eax, esi
jne 0x406c04
mov al, byte [esp + 0x54]
and al, 0xe0
and al, 0xdf
and al, 0xfd
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
mov byte [esp + 0x54], al
lea esi, [esp + 0x48]
lea eax, [esp + 0x2c]
mov dword [esp + 0x48], 0x44
call fcn.00410df0
mov esi, eax
mov eax, dword [esp + 0x58]
call fcn.00410aa0
jmp 0x4076bf
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
cmp ecx, 5
jne 0x407337
mov edx, dword [edi + 0x10]
mov dword [esp + 0x48], esi
mov byte [esp + 0x4c], 0
add edx, dword [eax + 8]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 0xc]
push edx
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1b], 0
call fcn.00432f40
cmp byte [esp + 0x17], 0
jne 0x40731c
mov eax, dword [esp + 0x60]
test eax, eax
je 0x406caf
test byte [eax + 0x98], 0x40
je 0x406caf
mov ecx, dword [eax + 0x120]
xor ebp, ebp
mov dword [esp + 0x6c], ecx
test ecx, ecx
je 0x406caf
mov edi, dword [eax + 0x11c]
add edi, 4
mov esi, dword [edi]
test esi, esi
je 0x406ca5
mov ebx, dword [esi + 4]
lea ecx, [esi + 8]
cmp ebx, 0xb
jbe 0x406c82
mov ecx, dword [esi + 8]
cmp dword [esp + 0x48], 0xb
lea edx, [esp + 0x4c]
jbe 0x406c91
mov edx, dword [esp + 0x4c]
push dword [esp + 0x48]
call fcn.00433530
add esp, 4
test eax, eax
je 0x406dbb
inc ebp
add edi, 0x10
cmp ebp, dword [esp + 0x6c]
jb 0x406c6e
cmp dword [esp + 0x48], 0xb
lea esi, [esp + 0x4c]
jbe 0x406cbe
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x5c]
push ebp
mov ebx, edi
call fcn.004078d0
mov ebx, eax
xor esi, esi
cmp ebx, esi
jne 0x406d0c
cmp dword [ebp + 0x10], esi
jne 0x4070de
mov ecx, dword [esp + 0x60]
cmp ecx, esi
je 0x4070de
cmp dword [esp + 0x48], 0xb
lea eax, [esp + 0x4c]
jbe 0x406cfa
mov eax, dword [esp + 0x4c]
push ecx
push eax
push ebp
call fcn.00407960
mov ebx, eax
cmp ebx, esi
je 0x4070de
mov eax, dword [ebx + 0x98]
mov byte [esp + 0x17], 1
test eax, 0x1000000
je 0x406d23
mov byte [esp + 0x3f], 1
mov ecx, dword [ebp + 0x10]
cmp ecx, esi
je 0x406dc8
mov ecx, dword [ecx + 0x30]
test dword [ebx + 0x9c], ecx
jne 0x406dc8
cmp dword [esp + 0x48], 0xb
mov dword [esp + 0xb0], esi
mov byte [esp + 0xb4], 0
lea eax, [esp + 0x4c]
jbe 0x406d5b
mov eax, dword [esp + 0x4c]
push eax
push str.Type__s_is_not_available_for_this_module
lea ecx, [esp + 0xb8]
call fcn.00433100
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4c]
add esp, 8
lea edx, [esp + 0xb0]
push edx
mov edi, ebp
call fcn.00406650
cmp dword [esp + 0xb0], 0xb
mov dword [esp + 0x2c], 0x44
jbe 0x407137
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x407137
push eax
call dword [0x4d5464]
add esp, 4
jmp 0x407137
mov ebp, dword [esp + 0x40]
mov ebx, esi
xor esi, esi
jmp 0x406d0c
test eax, 0x10000000
je 0x406e16
mov esi, dword [ebx + 0x11c]
lea eax, [esp + 0x2c]
call fcn.00410df0
mov al, byte [esp + 0x38]
test al, 4
je 0x406e00
mov cl, byte [esp + 0x16]
add cl, cl
add cl, cl
add cl, cl
xor cl, al
and cl, 8
xor al, cl
mov byte [esp + 0x38], al
jmp 0x407137
mov dl, byte [esp + 0x16]
add dl, dl
xor dl, al
and dl, 2
xor al, dl
mov byte [esp + 0x38], al
jmp 0x407137
test al, 0x40
je 0x407043
xor ecx, ecx
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xd8], esi
cmp dword [esp + 0x18], esi
je 0x406f1d
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x40]
cmp dword [ebp + 0x14], 0
je 0x406f17
mov eax, dword [ebp + 0x14]
cmp dword [eax], 4
jne 0x406f17
mov ecx, dword [esi + 0x10]
mov edx, dword [esp + 0x64]
neg ecx
sbb ecx, ecx
not ecx
and ecx, ebx
push ecx
push 0
mov ebp, eax
mov eax, dword [esp + 0x4c]
push edx
push eax
push ebp
lea ecx, [esp + 0xd4]
push ecx
mov ecx, esi
mov dword [esp + 0x30], ebp
call fcn.00406b20
mov ecx, dword [esp + 0xd4]
mov eax, dword [esp + 0xd8]
cmp ecx, eax
jne 0x406ec8
lea edi, [esp + 0xd0]
test eax, eax
jne 0x406ead
push eax
push 1
jmp 0x406eb3
push 1
lea edx, [eax + eax]
push edx
call fcn.00407c80
mov ecx, dword [esp + 0xd4]
cmp ecx, dword [esp + 0xd8]
je 0x406ef3
mov eax, ecx
shl eax, 4
add eax, dword [esp + 0xd0]
inc ecx
lea esi, [esp + 0xc0]
mov dword [esp + 0xd4], ecx
call fcn.00410df0
mov ecx, dword [esp + 0xd4]
mov esi, dword [esp + 0x40]
mov al, byte [esp + 0xcc]
test al, 4
je 0x406f03
shr al, 3
jmp 0x406f05
shr al, 1
and al, 1
test al, al
jne 0x40720a
test ebp, ebp
jne 0x406e47
mov ebp, dword [esp + 0x40]
xor esi, esi
cmp ecx, dword [ebx + 0x120]
jne 0x407293
cmp ecx, esi
jbe 0x40701c
mov eax, dword [ebx + 0x11c]
mov edx, dword [esp + 0xd0]
add eax, 4
add edx, 4
mov edi, dword [edx]
cmp edi, dword [eax]
jne 0x406f5a
inc esi
add edx, 0x10
add eax, 0x10
cmp esi, ecx
jb 0x406f44
jmp 0x40701a
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0xd0]
push eax
push ebx
push ecx
call fcn.004297b0
mov esi, eax
test esi, esi
jne 0x407018
mov ecx, dword [esp + 0xd0]
push eax
lea edx, [esp + 0x74]
push edx
mov dword [esp + 0x98], eax
mov byte [esp + 0x9c], al
call fcn.00410b10
mov edi, 0xb
cmp dword [eax], edi
ja 0x406fa4
add eax, 4
jmp 0x406fa7
mov eax, dword [eax + 4]
cmp dword [ebx + 4], edi
ja 0x406fb1
add ebx, 8
jmp 0x406fb4
mov ebx, dword [ebx + 8]
push eax
push ebx
push str.Cant_instanciate_template__s_with_subtype__s
lea ecx, [esp + 0x9c]
call fcn.00433100
add esp, 0xc
cmp dword [esp + 0x70], edi
jbe 0x406fe2
mov eax, dword [esp + 0x74]
test eax, eax
je 0x406fe2
push eax
call dword [0x4d5464]
add esp, 4
mov ecx, dword [esp + 0x44]
lea eax, [esp + 0x90]
push eax
mov eax, dword [esp + 0x1c]
mov edi, ebp
call fcn.00406650
cmp dword [esp + 0x90], 0xb
jbe 0x407018
mov eax, dword [esp + 0x94]
test eax, eax
je 0x407018
push eax
call dword [0x4d5464]
add esp, 4
mov ebx, esi
xor esi, esi
mov eax, dword [esp + 0xd0]
cmp eax, esi
je 0x407043
lea ecx, [esp + 0xdc]
mov dword [esp + 0xd4], esi
cmp eax, ecx
je 0x407043
push eax
call dword [0x4d5464]
add esp, 4
cmp ebx, esi
je 0x407094
mov al, byte [esp + 0xac]
mov dl, byte [esp + 0x16]
and al, 0xe0
and al, 0xdf
add dl, dl
xor dl, al
and dl, 2
xor al, dl
mov dword [esp + 0xa8], esi
mov byte [esp + 0xac], al
lea esi, [esp + 0xa0]
lea eax, [esp + 0x2c]
mov dword [esp + 0xa0], 5
mov dword [esp + 0xa4], ebx
call fcn.00410df0
jmp 0x407137
mov al, byte [esp + 0x8c]
mov cl, byte [esp + 0x16]
and al, 0xe0
and al, 0xdf
add cl, cl
xor cl, al
and cl, 2
xor al, cl
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
mov byte [esp + 0x8c], al
lea esi, [esp + 0x80]
lea eax, [esp + 0x2c]
mov dword [esp + 0x80], 0x44
call fcn.00410df0
jmp 0x407137
cmp dword [esp + 0x48], 0xb
lea eax, [esp + 0x4c]
jbe 0x4070ed
mov eax, dword [esp + 0x4c]
push eax
push ebp
call fcn.00407b30
cmp eax, esi
je 0x40712a
mov edx, dword [eax + 0xc]
and byte [esp + 0x28], 0xc0
mov dword [esp + 0x24], eax
add edx, 0x190
lea esi, [esp + 0x1c]
lea eax, [esp + 0x2c]
mov dword [esp + 0x1c], 5
mov dword [esp + 0x20], edx
call fcn.00410df0
mov byte [esp + 0x17], 1
jmp 0x407137
mov ecx, edi
mov eax, ebp
call fcn.00406a20
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x5c], 0
jne 0x406c39
cmp byte [esp + 0x17], 0
jne 0x40731c
xor ebx, ebx
cmp dword [esp + 0x48], 0xb
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x20], bl
lea eax, [esp + 0x4c]
jbe 0x407166
mov eax, dword [esp + 0x4c]
push eax
push str.Identifier__s_is_not_a_data_type
lea ecx, [esp + 0x24]
call fcn.00433100
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4c]
add esp, 8
lea edx, [esp + 0x1c]
push edx
mov edi, ebp
call fcn.00406650
mov al, byte [esp + 0x7c]
mov cl, byte [esp + 0x16]
add cl, cl
mov edi, dword [esp + 0x58]
and al, 0xc0
xor cl, al
and cl, 2
xor al, cl
mov cl, byte [esp + 0x38]
mov dl, al
xor dl, cl
and dl, 1
xor cl, dl
mov dl, al
xor dl, cl
and dl, 0x1e
xor cl, dl
xor al, cl
and al, 0x20
xor cl, al
lea esi, [esp + 0x2c]
mov eax, edi
mov dword [esp + 0x2c], 0x44
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov byte [esp + 0x38], cl
call fcn.00410aa0
cmp dword [esp + 0x1c], 0xb
jbe 0x4071f7
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x4071f7
push eax
call dword [0x4d5464]
add esp, 4
cmp dword [esp + 0x48], 0xb
jbe 0x40728c
mov eax, dword [esp + 0x4c]
cmp eax, ebx
jmp 0x407280
xor ebx, ebx
push str.Template_subtype_must_not_be_read_only
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], ebx
mov byte [esp + 0x24], bl
call fcn.00433100
mov ecx, dword [esp + 0x48]
add esp, 4
lea eax, [esp + 0x1c]
push eax
mov eax, ebp
mov edi, esi
call fcn.00406650
mov edi, dword [esp + 0x58]
and byte [edi + 0xc], 0xc0
mov ebp, 0xb
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi], 0x44
cmp dword [esp + 0x1c], ebp
jbe 0x407268
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x407268
push eax
call dword [0x4d5464]
add esp, 4
lea esi, [esp + 0xd0]
call fcn.00407c50
cmp dword [esp + 0x48], ebp
jbe 0x40728c
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x40728c
push eax
call dword [0x4d5464]
add esp, 4
mov eax, edi
jmp 0x4076bf
cmp dword [ebx + 4], 0xb
mov eax, dword [ebx + 0x120]
mov dword [esp + 0x1c], esi
mov byte [esp + 0x20], 0
ja 0x4072ad
add ebx, 8
jmp 0x4072b0
mov ebx, dword [ebx + 8]
push eax
push ebx
push str.Template__s_expects__d_sub_type_s_
lea ecx, [esp + 0x28]
call fcn.00433100
mov eax, dword [esp + 0x74]
add esp, 0xc
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x48]
mov edi, ebp
call fcn.00406650
mov edi, dword [esp + 0x58]
and byte [edi + 0xc], 0xc0
xor ecx, ecx
cmp dword [esp + 0x1c], 0xb
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi], 0x44
jbe 0x407306
mov eax, dword [esp + 0x20]
cmp eax, ecx
je 0x407306
push eax
call dword [0x4d5464]
add esp, 4
lea esi, [esp + 0xd0]
call fcn.00407c50
cmp dword [esp + 0x48], 0xb
jmp 0x407278
cmp dword [esp + 0x48], 0xb
jbe 0x407384
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x407384
push eax
call dword [0x4d5464]
add esp, 4
jmp 0x407384
mov al, byte [esp + 0x28]
and al, 0xe0
and al, 0xdf
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
lea esi, [esp + 0x1c]
cmp ecx, 0x6b
jne 0x40736a
and bl, 1
or bl, 8
add bl, bl
and al, 0xfd
or bl, al
mov dword [esp + 0x1c], 5
mov byte [esp + 0x28], bl
jmp 0x40737b
add bl, bl
xor bl, al
and bl, 2
xor al, bl
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x28], al
lea eax, [esp + 0x2c]
call fcn.00410df0
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x14]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x18], ecx
test ecx, ecx
je 0x40762d
mov edi, dword [esp + 0x34]
mov eax, dword [ecx + 4]
cmp eax, 0x2c
je 0x4073bd
cmp eax, 0x14
jne 0x40762d
cmp eax, 0x2c
jne 0x40755a
xor ecx, ecx
cmp ebp, 0x3b
sete cl
test byte [esp + 0x38], 1
mov esi, ecx
je 0x4073d3
lea eax, [esi + 1]
jmp 0x40743b
test ebx, ebx
je 0x4073f3
test dword [ebx + 0x98], 0x4000000
jne 0x4073e8
lea eax, [esi + 1]
jmp 0x40743b
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x407455
xor eax, eax
jmp 0x407439
cmp ebp, 0x50
je 0x4073ef
cmp ebp, 0x45
je 0x40745a
cmp ebp, 0x4c
je 0x40745a
cmp ebp, 0x46
je 0x40745a
cmp ebp, 0x4d
je 0x40745a
cmp ebp, 0x5c
je 0x40741b
cmp ebp, 0x47
je 0x40741b
cmp ebp, 0x4e
jne 0x40745a
mov eax, 8
mov ecx, eax
and ecx, 3
je 0x407430
mov edx, 4
sub edx, ecx
add eax, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, esi
test eax, eax
je 0x4074ab
test ebx, ebx
je 0x407461
test dword [ebx + 0x98], 0x4000000
jne 0x40752f
jmp 0x407481
cmp eax, 4
jg 0x407420
mov eax, 1
jmp 0x407439
test edi, edi
jne 0x40746e
test ebp, ebp
je 0x407476
jmp 0x40752f
test ebp, ebp
jne 0x40752f
test byte [esp + 0x38], 4
je 0x40752f
mov eax, dword [ebx + 0x98]
test al, 1
je 0x40752f
test al, 0x10
jne 0x4074ab
test byte [esp + 0x38], 4
jne 0x40752f
cmp dword [ebx + 0xe4], 0
jne 0x40752f
push 0
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0x24], 0
mov byte [esp + 0x28], 0
call fcn.00410b10
cmp dword [eax], 0xb
ja 0x4074d2
add eax, 4
jmp 0x4074d5
mov eax, dword [eax + 4]
push eax
push str.Data_type_cant_be__s
lea ecx, [esp + 0x24]
call fcn.00433100
add esp, 8
cmp dword [esp + 0x70], 0xb
jbe 0x407500
mov eax, dword [esp + 0x74]
test eax, eax
je 0x407500
push eax
call dword [0x4d5464]
add esp, 4
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x48]
call fcn.00406650
cmp dword [esp + 0x1c], 0xb
jbe 0x40752f
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40752f
push eax
call dword [0x4d5464]
add esp, 4
mov edi, dword [esp + 0x40]
mov edx, dword [edi + 0xc]
push edx
lea ecx, [esp + 0x30]
call fcn.00410f00
test eax, eax
js 0x4075da
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x34]
jmp 0x4075c9
mov dl, byte [esp + 0x38]
test dl, 0x10
je 0x40756c
or dl, 4
mov byte [esp + 0x38], dl
jmp 0x4075c9
test dl, 4
jne 0x4075c9
test edi, edi
jne 0x4075ac
test ebx, ebx
je 0x4076da
mov eax, dword [ebx + 0x98]
test al, 0x81
jne 0x407592
test eax, 0x8000000
je 0x4076da
test al, 0x10
jne 0x4076da
test al, 0x20
je 0x4075ac
cmp byte [esp + 0x100], 0
je 0x4076da
and dl, 0xf7
or dl, 4
test byte [ebx + 0x98], 0x80
mov byte [esp + 0x38], dl
je 0x4075c9
mov al, dl
and al, 0xfb
or al, 0x20
mov byte [esp + 0x38], al
mov ecx, dword [ecx + 0x14]
mov dword [esp + 0x18], ecx
test ecx, ecx
jne 0x4073a3
jmp 0x40762d
push str.The_application_doesnt_support_the_default_array_type.
mov eax, 0x37
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
mov byte [esp + 0x24], 0
call fcn.00432f40
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x48]
call fcn.00406650
cmp dword [esp + 0x1c], 0xb
jbe 0x407625
mov eax, dword [esp + 0x20]
test eax, eax
je 0x407625
push eax
call dword [0x4d5464]
add esp, 4
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
cmp byte [esp + 0x3f], 0
je 0x4076a2
mov eax, dword [esp + 0x100]
push eax
mov al, 1
lea ecx, [esp + 0x30]
call fcn.00410e60
test eax, eax
jns 0x40769a
push str.Object_handle_is_not_supported_for_this_type
mov eax, 0x2c
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
mov byte [esp + 0x24], 0
call fcn.00432f40
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x48]
call fcn.00406650
cmp dword [esp + 0x1c], 0xb
jbe 0x40769a
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40769a
push eax
call dword [0x4d5464]
add esp, 4
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x58]
mov cl, byte [eax + 0xc]
xor cl, byte [esp + 0x38]
mov edx, dword [esp + 0x34]
and cl, 0x3f
xor byte [eax + 0xc], cl
mov dword [eax], ebp
mov dword [eax + 4], ebx
mov dword [eax + 8], edx
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0048c97b
add esp, 0xdc
ret 0x18
push str.Object_handle_is_not_supported_for_this_type
mov eax, 0x2c
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
mov byte [esp + 0x24], 0
call fcn.00432f40
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
lea edx, [esp + 0x1c]
push edx
call fcn.00406650
cmp dword [esp + 0x1c], 0xb
jbe 0x40762d
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40762d
push eax
call dword [0x4d5464]
add esp, 4
jmp 0x40762d