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

Disassembly:
push 0xffffffffffffffff
push 0x47f577
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1b4
mov eax, dword [esp + 0x1c4]
push ebp
push esi
push edi
push 0x49cc84
push eax
call fcn.0044d7eb
mov esi, eax
xor ebp, ebp
add esp, 8
cmp esi, ebp
mov dword [esp + 0x50], esi
jne 0x409d86
xor eax, eax
jmp 0x40a5ad
mov cl, byte [0x4aa680]
xor eax, eax
mov byte [esp + 0xc0], cl
mov ecx, 0x3f
lea edi, [esp + 0xc1]
mov edx, dword [0x4a624c]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov dword [esp + 0x44], edx
push esi
lea eax, [esp + 0xc4]
push 0xff
push eax
mov dword [esp + 0x1d4], ebp
call fcn.0044e5a6
add esp, 0xc
lea ecx, [esp + 0xc0]
push ecx
lea ecx, [esp + 0x48]
call fcn.00463140
push 0x49e138
lea ecx, [esp + 0x48]
call fcn.004603d6
push 0x49e138
lea ecx, [esp + 0x48]
call fcn.00460383
push str.__xml
lea ecx, [esp + 0x48]
call fcn.0045ffea
test eax, eax
je 0x409e30
push esi
call fcn.0044d6ef
add esp, 4
lea ecx, [esp + 0x44]
mov dword [esp + 0x1c8], 0xffffffff
call fcn.00462fb7
xor eax, eax
jmp 0x40a5ad
push ebp
push ebp
push esi
call fcn.0044dfd2
mov al, byte [esi + 0xc]
add esp, 0xc
test al, 0x10
jne 0x409e81
push esi
call fcn.0044e575
add esp, 4
cmp al, 0x3e
je 0x409e55
test byte [esi + 0xc], 0x10
je 0x409e42
test byte [esi + 0xc], 0x10
jne 0x409e81
push esi
call fcn.0044e575
add esp, 4
cmp al, 0xd
je 0x409e6c
cmp al, 0xa
jne 0x409e74
test byte [esi + 0xc], 0x10
je 0x409e5b
jmp 0x409e81
movsx edx, al
push esi
push edx
call fcn.0044e4de
add esp, 8
mov al, byte [esp + 0x13]
lea ecx, [esp + 0x18]
mov byte [esp + 0x14], al
call fcn.0040ec20
lea ecx, [esp + 0x28]
call fcn.0040ec20
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], ebp
mov ecx, dword [0x4a624c]
mov dword [esp + 0x4c], ebp
mov dword [esp + 0xc], ecx
mov al, byte [esi + 0xc]
mov byte [esp + 0x1c8], 2
test al, 0x10
jne 0x40a4d0
push ebx
push esi
call fcn.0044e575
mov bl, al
add esp, 4
cmp bl, 0x3c
mov byte [esp + 0x4c], bl
je 0x409f20
test ebp, ebp
je 0x40a4bf
mov eax, dword [ebp + 4]
lea esi, [ebp + 4]
push 0x4aa680
push eax
call fcn.0044d292
add esp, 8
test eax, eax
jne 0x409f0f
cmp bl, 0xd
je 0x40a4bf
cmp bl, 0xa
je 0x40a4bf
mov edx, dword [esp + 0x4c]
mov ecx, esi
push edx
call fcn.004633ba
jmp 0x40a4bf
test ebp, ebp
je 0x409f31
push 0x49e138
lea ecx, [ebp + 4]
call fcn.00460383
push 0x3c
lea ecx, [esp + 0x14]
call fcn.0045fdc6
test byte [esi + 0xc], 0x10
jne 0x409f64
push esi
call fcn.0044e575
mov bl, al
add esp, 4
mov byte [esp + 0x4c], bl
lea ecx, [esp + 0x10]
mov eax, dword [esp + 0x4c]
push eax
call fcn.004633ba
cmp bl, 0x3e
jne 0x409f3c
mov edi, str.___CDATA_
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x10]
repne scasb al, byte es:[edi]
mov esi, dword [edx - 8]
not ecx
dec ecx
cmp esi, ecx
jbe 0x40a129
mov edi, str.___CDATA_
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x68]
push ecx
lea ecx, [esp + 0x18]
call fcn.0045ff72
mov eax, dword [eax]
push eax
push str.___CDATA_
call fcn.00459170
add esp, 8
lea ecx, [esp + 0x64]
test eax, eax
sete bl
call fcn.00462fb7
test bl, bl
je 0x40a125
mov esi, dword [esp + 0x54]
mov edi, 0x49e120
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x6c]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x18]
call fcn.0045fef6
mov eax, dword [eax]
push eax
push 0x49e120
call fcn.00459170
add esp, 8
test eax, eax
je 0x40a00e
mov eax, dword [esi + 0xc]
shr eax, 4
not al
and al, 1
mov byte [esp + 0x17], al
je 0x40a00e
mov bl, 1
jmp 0x40a010
xor bl, bl
lea ecx, [esp + 0x6c]
call fcn.00462fb7
test bl, bl
je 0x40a03a
push esi
call fcn.0044e575
mov byte [esp + 0x50], al
add esp, 4
mov ecx, dword [esp + 0x4c]
push ecx
lea ecx, [esp + 0x14]
call fcn.004633ba
jmp 0x409fc8
mov edi, str.___CDATA_
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x70]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x18]
call fcn.0045fe3d
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x1d0], 3
call fcn.004630f0
lea ecx, [esp + 0x70]
mov byte [esp + 0x1cc], 2
call fcn.00462fb7
mov edi, 0x49e120
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x58]
push ecx
push eax
lea ecx, [esp + 0x18]
call fcn.0045fef6
mov eax, dword [eax]
push eax
push 0x49e120
call fcn.00459170
add esp, 8
lea ecx, [esp + 0x58]
test eax, eax
sete bl
call fcn.00462fb7
test bl, bl
je 0x40a105
mov ecx, dword [esp + 0x10]
mov edi, 0x49e120
xor eax, eax
mov edx, dword [ecx - 8]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
sub edx, ecx
lea ecx, [esp + 0x10]
push edx
lea edx, [esp + 0x60]
push edx
call fcn.0045ff72
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x1d0], 4
call fcn.004630f0
lea ecx, [esp + 0x5c]
mov byte [esp + 0x1cc], 2
call fcn.00462fb7
lea eax, [esp + 0x10]
lea ecx, [ebp + 4]
push eax
call fcn.004633cf
push 0x4aa680
lea ecx, [esp + 0x14]
call fcn.00463140
jmp 0x40a4bf
mov edx, dword [esp + 0x10]
mov eax, dword [edx - 8]
cmp eax, 3
jle 0x40a246
cmp byte [edx + 1], 0x2f
jne 0x40a180
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a179
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
cmp ecx, eax
jne 0x40a158
lea ecx, [esp + 0x18]
call fcn.0040eb00
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a165
sub dword [esp + 0x34], 4
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x44], eax
jne 0x40a179
lea ecx, [esp + 0x18]
call fcn.0040eb00
xor ebp, ebp
jmp 0x40a4bf
cmp eax, 3
jle 0x40a246
cmp byte [eax + edx - 2], 0x2f
jne 0x40a246
push 0x10
call fcn.0046359b
add esp, 4
test eax, eax
je 0x40a1bf
mov edx, dword [0x4a624c]
mov esi, eax
mov dword [eax], edx
mov ecx, dword [0x4a624c]
mov dword [eax + 4], ecx
xor ecx, ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
jmp 0x40a1c1
xor esi, esi
mov eax, dword [esp + 0x50]
test eax, eax
jne 0x40a1cd
mov dword [esp + 0x50], esi
lea edx, [esp + 0x10]
mov ecx, esi
push edx
call fcn.004630f0
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a23f
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x78], ecx
push 0xffffffffffffffff
lea ecx, [esp + 0x78]
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], eax
call fcn.0040ec60
mov ecx, dword [esp + 0x7c]
mov ecx, dword [ecx]
test ecx, ecx
je 0x40a23f
mov eax, dword [ecx + 0xc]
test eax, eax
jne 0x40a22d
mov dword [ecx + 0xc], esi
xor ebp, ebp
jmp 0x40a4bf
mov dword [esp + 0x60], eax
mov eax, dword [eax + 8]
test eax, eax
jne 0x40a22d
mov edx, dword [esp + 0x60]
mov dword [edx + 8], esi
xor ebp, ebp
jmp 0x40a4bf
push 0x10
call fcn.0046359b
xor esi, esi
add esp, 4
cmp eax, esi
je 0x40a271
mov ecx, dword [0x4a624c]
mov ebx, eax
mov dword [eax], ecx
mov edx, dword [0x4a624c]
mov dword [eax + 4], edx
mov dword [eax + 8], esi
mov dword [eax + 0xc], esi
jmp 0x40a273
xor ebx, ebx
mov eax, dword [esp + 0x50]
mov ebp, ebx
cmp eax, esi
jne 0x40a281
mov dword [esp + 0x50], ebx
lea eax, [esp + 0x10]
mov ecx, ebx
push eax
call fcn.004630f0
cmp dword [esp + 0x44], esi
je 0x40a33b
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x2c]
lea edx, [esi - 4]
mov ecx, edx
sub ecx, edi
sar ecx, 2
js 0x40a2b2
mov eax, ecx
shr eax, 0xa
jmp 0x40a2be
mov eax, 0x3ff
sub eax, ecx
shr eax, 0xa
neg eax
test eax, eax
jne 0x40a2c6
mov ecx, edx
jmp 0x40a2d5
mov edx, dword [esp + 0x38]
mov edx, dword [edx + eax*4]
shl eax, 0xa
sub ecx, eax
lea ecx, [edx + ecx*4]
mov ecx, dword [ecx]
test ecx, ecx
je 0x40a2fd
mov eax, dword [ecx + 0xc]
test eax, eax
jne 0x40a2e7
mov dword [ecx + 0xc], ebx
jmp 0x40a2f9
mov dword [esp + 0x68], eax
mov eax, dword [eax + 8]
test eax, eax
jne 0x40a2e7
mov eax, dword [esp + 0x68]
mov dword [eax + 8], ebx
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x40a33b
mov ecx, dword [esp + 0x30]
cmp esi, ecx
je 0x40a33b
lea eax, [esi + 4]
cmp eax, ecx
mov ecx, esi
mov dword [esp + 0x34], eax
jne 0x40a32e
test ecx, ecx
je 0x40a320
mov dword [ecx], ebx
lea ecx, [esp + 0x18]
call fcn.0040e9a0
jmp 0x40a4bb
test ecx, ecx
je 0x40a4bb
jmp 0x40a4b9
push 0x1000
call fcn.0046359b
mov esi, eax
mov eax, dword [esp + 0x48]
add esp, 4
test eax, eax
jne 0x40a3c2
lea ecx, [esp + 0x18]
mov dword [esp + 0x40], 2
call fcn.0040eb90
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 4], esi
mov edx, dword [esp + 0x3c]
add esi, 0x800
lea ecx, [esp + 0xa4]
lea eax, [edx + 4]
push eax
push esi
call fcn.0040ec30
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0xb0]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x38], esi
jmp 0x40a4ac
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
lea edx, [eax + ecx*4 - 4]
mov eax, dword [esp + 0x38]
cmp eax, edx
jae 0x40a41a
add eax, 4
lea ecx, [esp + 0x94]
mov dword [esp + 0x38], eax
mov dword [eax], esi
mov eax, dword [esp + 0x38]
push eax
push esi
call fcn.0040ec30
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x30], edx
jmp 0x40a4a8
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x18]
sub eax, edi
sar eax, 2
inc eax
mov edi, eax
lea edx, [edi + edi]
push edx
call fcn.0040ebb0
lea edi, [eax + edi*4]
push eax
lea ecx, [esp + 0xb8]
mov dword [edi], esi
mov eax, dword [esp + 0x28]
push eax
call fcn.0040ec30
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xc0]
push edi
mov dword [esp + 0x2c], ecx
push esi
lea ecx, [esp + 0x8c]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
call fcn.0040ec30
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x38], ecx
mov ecx, eax
add eax, 4
test ecx, ecx
mov dword [esp + 0x34], eax
je 0x40a4bb
mov dword [ecx], ebx
inc dword [esp + 0x44]
mov edx, dword [esp + 0x54]
mov esi, edx
test byte [edx + 0xc], 0x10
je 0x409ec9
pop ebx
push esi
call fcn.0044d6ef
add esp, 4
lea ecx, [esp + 0xc]
mov byte [esp + 0x1c8], 1
call fcn.00462fb7
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40a595
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x40]
add ecx, 4
dec eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x40], eax
je 0x40a516
mov eax, ecx
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jne 0x40a589
mov ecx, dword [esp + 0x24]
mov eax, ecx
add ecx, 4
mov dword [esp + 0x24], ecx
mov eax, dword [eax]
push eax
call fcn.004635c4
mov eax, dword [esp + 0x44]
add esp, 4
test eax, eax
jne 0x40a56d
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x38]
xor edx, edx
xor esi, esi
push ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], esi
call fcn.004635c4
add esp, 4
jmp 0x40a589
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], eax
lea edx, [eax + 0x1000]
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x40a4f6
lea ecx, [esp + 0x44]
mov dword [esp + 0x1c8], 0xffffffff
call fcn.00462fb7
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c0]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0x1c0
ret