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

Disassembly:
push 0xffffffffffffffff
push 0x4f8399
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xf0
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x110]
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov esi, dword [0x54b8d4]
lea ebp, [edi + 0x44]
push esi
push ebp
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x20], ebp
call fcn.004397e0
cmp eax, ebx
je 0x40f46d
cmp dword [eax + 0x48], 0x10
jb 0x40f466
mov eax, dword [eax + 0x34]
jmp 0x40f469
add eax, 0x34
cmp eax, ebx
jne 0x40f474
mov ecx, 0x51f2aa
jmp 0x40f491
push esi
push ebp
call fcn.004397e0
cmp eax, ebx
je 0x40f48f
cmp dword [eax + 0x48], 0x10
jb 0x40f48a
mov ecx, dword [eax + 0x34]
jmp 0x40f491
lea ecx, [eax + 0x34]
jmp 0x40f491
xor ecx, ecx
mov ebp, 0xf
mov eax, ecx
mov dword [esp + 0xe0], ebp
mov dword [esp + 0xdc], ebx
mov byte [esp + 0xcc], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f4b1
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0xd0]
call fcn.00401eb0
mov dword [esp + 0x108], ebx
mov eax, dword [edi + 0x38]
mov ecx, 0x10
cmp eax, ecx
jb 0x40f4e0
mov eax, dword [edi + 0x24]
jmp 0x40f4e3
lea eax, [edi + 0x24]
cmp eax, ebx
jne 0x40f4ee
mov ecx, 0x51f2aa
jmp 0x40f4fb
cmp dword [edi + 0x38], ecx
jb 0x40f4f8
mov ecx, dword [edi + 0x24]
jmp 0x40f4fb
lea ecx, [edi + 0x24]
mov eax, ecx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x68], ebx
mov byte [esp + 0x58], 0
lea esi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f510
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x5c]
call fcn.00401eb0
mov byte [esp + 0x108], 1
mov ecx, dword [str.Vector]
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f537
sub eax, esi
push eax
mov eax, dword [esp + 0x6c]
push ecx
push eax
push ebx
lea ecx, [esp + 0x64]
call fcn.004025a0
test eax, eax
mov ebp, 7
jne 0x40f5ab
push 0x54
call fcn.004c14e8
add esp, 4
mov dword [esp + 0x14], eax
cmp eax, ebx
mov byte [esp + 0x108], 2
je 0x40f596
lea ecx, [esp + 0xc8]
push ecx
mov ecx, eax
call fcn.0040ece0
mov ebx, eax
mov byte [esp + 0x108], 1
mov dword [esp + 0x14], ebx
jmp 0x40f7f1
xor eax, eax
mov ebx, eax
mov byte [esp + 0x108], 1
mov dword [esp + 0x14], ebx
jmp 0x40f7f1
mov edx, dword [str.Integer]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f5b6
sub eax, esi
push eax
push edx
mov edx, dword [esp + 0x70]
push edx
push ebx
lea ecx, [esp + 0x64]
call fcn.004025a0
test eax, eax
je 0x40f719
mov edx, dword [str.Double]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f5e3
sub eax, esi
push eax
mov eax, dword [esp + 0x6c]
push edx
push eax
push ebx
lea ecx, [esp + 0x64]
call fcn.004025a0
test eax, eax
je 0x40f719
mov edx, dword [str.Boolean]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f610
mov ecx, dword [esp + 0x68]
sub eax, esi
push eax
push edx
push ecx
push ebx
lea ecx, [esp + 0x64]
call fcn.004025a0
test eax, eax
je 0x40f719
mov edx, dword [str.String]
push edx
lea ecx, [esp + 0x58]
call fcn.00405b60
test eax, eax
je 0x40f719
mov eax, dword [str.Text]
push eax
lea ecx, [esp + 0x58]
call fcn.00405b60
test eax, eax
je 0x40f719
push 0x6c
call fcn.004c14e8
mov esi, eax
add esp, 4
mov dword [esp + 0x14], esi
cmp esi, ebx
mov byte [esp + 0x108], 6
je 0x40f6df
mov eax, dword [edi + 0x38]
mov ecx, 0x10
cmp eax, ecx
jb 0x40f68e
mov eax, dword [edi + 0x24]
jmp 0x40f691
lea eax, [edi + 0x24]
cmp eax, ebx
jne 0x40f69c
mov eax, 0x51f2aa
jmp 0x40f6a9
cmp dword [edi + 0x38], ecx
jb 0x40f6a6
mov eax, dword [edi + 0x24]
jmp 0x40f6a9
lea eax, [edi + 0x24]
push eax
lea ecx, [esp + 0xe8]
call fcn.00402330
lea ecx, [esp + 0xe4]
push ecx
lea edx, [esp + 0xcc]
mov byte [esp + 0x10c], 7
push edx
mov ecx, esi
mov dword [esp + 0x18], 2
call fcn.0040ec50
jmp 0x40f6e1
xor eax, eax
mov ebx, eax
mov dword [esp + 0x108], 1
test byte [esp + 0x10], 2
mov dword [esp + 0x14], ebx
je 0x40f7f1
mov eax, dword [esp + 0x10]
and eax, 0xfffffffd
lea ecx, [esp + 0xe4]
mov dword [esp + 0x10], eax
call fcn.004013a0
jmp 0x40f7f1
push 0x60
call fcn.004c14e8
mov esi, eax
add esp, 4
mov dword [esp + 0x14], esi
cmp esi, ebx
mov byte [esp + 0x108], 3
je 0x40f798
push 0x51f538
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc4], ebx
mov word [esp + 0xb4], bx
call fcn.004c2fd0
add esp, 4
push eax
push 0x51f538
lea ecx, [esp + 0xb4]
call fcn.00411410
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0xd0]
mov byte [esp + 0x110], 4
push edx
mov ecx, esi
mov dword [esp + 0x1c], 1
call fcn.0040e9a0
jmp 0x40f79a
xor eax, eax
mov ebx, eax
mov dword [esp + 0x108], 1
test byte [esp + 0x10], 1
mov dword [esp + 0x14], ebx
je 0x40f7f1
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc4]
and ecx, 0xfffffffe
cmp eax, 8
mov dword [esp + 0x10], ecx
jb 0x40f7d9
mov eax, dword [esp + 0xb0]
push eax
call fcn.004c2c15
add esp, 4
xor eax, eax
mov dword [esp + 0xc4], ebp
mov dword [esp + 0xc0], eax
mov word [esp + 0xb0], ax
cmp dword [ebx + 8], 2
jne 0x40f8e2
mov esi, dword [str.setup]
mov edi, dword [esp + 0x18]
push esi
push edi
call fcn.004397e0
test eax, eax
je 0x40f828
mov ecx, dword [eax + 0x48]
mov ebp, 0x10
cmp ecx, ebp
jb 0x40f821
mov eax, dword [eax + 0x34]
jmp 0x40f824
add eax, 0x34
test eax, eax
jne 0x40f82f
mov ecx, 0x51f2aa
jmp 0x40f84b
push esi
push edi
call fcn.004397e0
test eax, eax
je 0x40f849
cmp dword [eax + 0x48], ebp
jb 0x40f844
mov ecx, dword [eax + 0x34]
jmp 0x40f84b
lea ecx, [eax + 0x34]
jmp 0x40f84b
xor ecx, ecx
mov eax, ecx
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], 0
mov byte [esp + 0x20], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f865
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.00401eb0
mov byte [esp + 0x108], 9
mov eax, dword [esp + 0x30]
test eax, eax
jbe 0x40f8c6
lea ecx, [esp + 0x1c]
mov edx, 0x54cbf8
call fcn.004105e0
mov edi, dword [eax + 4]
mov eax, dword [edi + 0x4c]
mov esi, dword [eax]
cmp esi, eax
je 0x40f8c6
mov ebp, 2
mov ecx, dword [ebx + 8]
mov eax, dword [esi + 0x28]
cmp ecx, ebp
mov ecx, ebx
je 0x40f8b9
mov ecx, 0x54c9a0
push eax
call fcn.0040ef30
mov esi, dword [esi]
cmp esi, dword [edi + 0x4c]
jne 0x40f8a8
mov byte [esp + 0x108], 1
cmp dword [esp + 0x34], 0x10
jb 0x40f8e2
mov ecx, dword [esp + 0x20]
push ecx
call fcn.004c2c15
add esp, 4
mov eax, dword [ebx + 8]
cmp eax, 1
je 0x40f8f3
cmp eax, 2
jne 0x40fc2a
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x50]
cmp eax, ecx
je 0x40fc2a
mov ebx, eax
test ebx, ebx
je 0x40fc2a
lea esp, [esp]
mov eax, dword [ebx + 0x2c]
mov ecx, 0x10
cmp eax, ecx
jb 0x40f921
mov eax, dword [ebx + 0x18]
jmp 0x40f924
lea eax, [ebx + 0x18]
test eax, eax
jne 0x40f92f
mov ecx, 0x51f2aa
jmp 0x40f93c
cmp dword [ebx + 0x2c], ecx
jb 0x40f939
mov ecx, dword [ebx + 0x18]
jmp 0x40f93c
lea ecx, [ebx + 0x18]
mov eax, ecx
mov dword [esp + 0x50], 0xf
mov dword [esp + 0x4c], 0
mov byte [esp + 0x3c], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f956
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x40]
call fcn.00401eb0
mov byte [esp + 0x108], 0xa
mov edi, dword [0x54b8d4]
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f980
mov ecx, dword [esp + 0x4c]
sub eax, edx
cmp ecx, ecx
mov ebp, ecx
jae 0x40f993
test ebp, ebp
je 0x40f9bd
cmp ebp, eax
mov ecx, ebp
jb 0x40f99f
mov ecx, eax
cmp dword [esp + 0x50], 0x10
mov esi, dword [esp + 0x3c]
jae 0x40f9ae
lea esi, [esp + 0x3c]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40f9b9
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
jne 0x40f9d0
cmp ebp, eax
jb 0x40f9d0
xor edx, edx
cmp ebp, eax
setne dl
test edx, edx
je 0x40fbdd
mov eax, dword [ebx + 0x48]
mov ebp, 0x10
cmp eax, ebp
jb 0x40f9e1
mov eax, dword [ebx + 0x34]
jmp 0x40f9e4
lea eax, [ebx + 0x34]
test eax, eax
jne 0x40f9ef
mov ecx, 0x51f2aa
jmp 0x40f9fc
cmp dword [ebx + 0x48], ebp
jb 0x40f9f9
mov ecx, dword [ebx + 0x34]
jmp 0x40f9fc
lea ecx, [ebx + 0x34]
mov edi, 0xf
mov eax, ecx
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], 0
mov byte [esp + 0x74], 0
lea esi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40fa20
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x78]
call fcn.00401eb0
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x90]
push eax
mov byte [esp + 0x110], 0xb
call fcn.0040e540
add esp, 8
mov byte [esp + 0x108], 0xd
cmp dword [esp + 0x88], ebp
jb 0x40fa6f
mov ecx, dword [esp + 0x74]
push ecx
call fcn.004c2c15
add esp, 4
mov ebp, dword [esp + 0x14]
cmp dword [ebp + 8], 1
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], 0
mov byte [esp + 0x74], 0
jne 0x40fad7
mov edx, dword [str.value]
mov eax, edx
lea esi, [eax + 1]
jmp 0x40faa0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40faa0
sub eax, esi
push eax
push edx
mov edx, dword [esp + 0x54]
push edx
push 0
lea ecx, [esp + 0x48]
call fcn.004025a0
test eax, eax
jne 0x40fad7
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x94]
push eax
lea ecx, [ebp + 0x44]
call fcn.00404f80
jmp 0x40fba5
cmp dword [ebp + 8], 2
jne 0x40fba5
push 0x60
call fcn.004c14e8
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
test esi, esi
mov byte [esp + 0x108], 0xe
je 0x40fb4c
push 0
push 0x51f2aa
lea ecx, [esp + 0x24]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], 0
mov byte [esp + 0x28], 0
call fcn.00401eb0
mov byte [esp + 0x108], 0xf
mov eax, dword [esp + 0x10]
or eax, 4
lea ecx, [esp + 0x8c]
push ecx
lea edx, [esp + 0x20]
mov dword [esp + 0x14], eax
push edx
lea eax, [esp + 0x40]
push eax
mov ecx, esi
call fcn.0040e9a0
jmp 0x40fb4e
xor eax, eax
mov esi, 0x10
push eax
mov ecx, ebp
mov dword [esp + 0x10c], esi
call fcn.0040ef30
mov dword [esp + 0x108], 0xd
test byte [esp + 0x10], 4
je 0x40fba5
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
and ecx, 0xfffffffb
cmp eax, esi
mov dword [esp + 0x10], ecx
jb 0x40fb94
mov ecx, dword [esp + 0x20]
push ecx
call fcn.004c2c15
add esp, 4
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], 0
mov byte [esp + 0x20], 0
cmp dword [esp + 0xa4], 8
jb 0x40fbbf
mov edx, dword [esp + 0x90]
push edx
call fcn.004c2c15
add esp, 4
xor eax, eax
mov dword [esp + 0xa4], 7
mov dword [esp + 0xa0], eax
mov word [esp + 0x90], ax
jmp 0x40fbe2
mov edi, 0xf
mov byte [esp + 0x108], 1
cmp dword [esp + 0x50], 0x10
jb 0x40fbfe
mov eax, dword [esp + 0x3c]
push eax
call fcn.004c2c15
add esp, 4
mov eax, dword [ebx + 0x50]
mov ecx, dword [eax + 0x44]
test ecx, ecx
mov dword [esp + 0x50], edi
mov dword [esp + 0x4c], 0
mov byte [esp + 0x3c], 0
jne 0x40fc20
mov ecx, dword [eax + 0x28]
test ecx, ecx
je 0x40fc2a
mov ebx, eax
test ebx, ebx
jne 0x40f910
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
cmp eax, 1
je 0x40fc3f
cmp eax, 2
jne 0x40feac
mov edx, dword [esp + 0x110]
mov esi, dword [edx + 0x18]
test esi, esi
je 0x40feac
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
cmp eax, 4
je 0x40fc69
mov esi, dword [esi + 0x40]
test esi, esi
jne 0x40fc51
jmp 0x40feac
mov eax, dword [esi + 0x38]
mov ecx, 0x10
cmp eax, ecx
jb 0x40fc7a
mov eax, dword [esi + 0x24]
jmp 0x40fc7d
lea eax, [esi + 0x24]
test eax, eax
jne 0x40fc88
mov esi, 0x51f2aa
jmp 0x40fc95
cmp dword [esi + 0x38], ecx
jb 0x40fc92
mov esi, dword [esi + 0x24]
jmp 0x40fc95
add esi, 0x24
mov eax, esi
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], 0
mov byte [esp + 0x20], 0
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40fcb0
sub eax, edx
push eax
push esi
lea ecx, [esp + 0x24]
call fcn.00401eb0
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x3c]
push edx
mov byte [esp + 0x110], 0x11
call fcn.0040e540
add esp, 8
mov ebx, 0x13
mov byte [esp + 0x108], bl
cmp dword [esp + 0x34], 0x10
jb 0x40fcfe
mov eax, dword [esp + 0x20]
push eax
call fcn.004c2c15
add esp, 4
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
xor ebp, ebp
cmp eax, 1
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], ebp
mov byte [esp + 0x20], 0
jne 0x40fd32
push 0xffffffffffffffff
push ebp
lea edx, [esp + 0x40]
push edx
add ecx, 0x44
call fcn.00404f80
jmp 0x40fe90
cmp eax, 2
jne 0x40fe90
push 0x60
call fcn.004c14e8
mov edi, eax
add esp, 4
mov dword [esp + 0x18], edi
cmp edi, ebp
mov byte [esp + 0x108], 0x14
je 0x40fe0f
mov ecx, dword [str.Text]
mov eax, ecx
mov dword [esp + 0xa4], 0xf
mov dword [esp + 0xa0], ebp
mov byte [esp + 0x90], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40fd80
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x94]
call fcn.00401eb0
mov byte [esp + 0x108], 0x15
mov eax, dword [esp + 0x10]
mov ecx, dword [str.value]
or eax, 8
mov dword [esp + 0x10], eax
mov eax, ecx
mov dword [esp + 0x88], 0xf
mov dword [esp + 0x84], ebp
mov byte [esp + 0x74], 0
lea esi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40fdd0
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x78]
call fcn.00401eb0
mov dword [esp + 0x108], 0x16
or dword [esp + 0x10], 0x10
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x78]
push edx
mov ecx, edi
call fcn.0040e9a0
jmp 0x40fe11
xor eax, eax
mov dword [esp + 0x108], 0x18
mov ecx, dword [esp + 0x14]
push eax
call fcn.0040ef30
test byte [esp + 0x10], 0x10
je 0x40fe68
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x88]
and ecx, 0xffffffef
cmp eax, 0x10
mov dword [esp + 0x10], ecx
jb 0x40fe51
mov eax, dword [esp + 0x74]
push eax
call fcn.004c2c15
add esp, 4
mov dword [esp + 0x88], 0xf
mov dword [esp + 0x84], ebp
mov byte [esp + 0x74], 0
mov dword [esp + 0x108], ebx
test byte [esp + 0x10], 8
je 0x40fe90
cmp dword [esp + 0xa4], 0x10
jb 0x40fe90
mov ecx, dword [esp + 0x90]
push ecx
call fcn.004c2c15
add esp, 4
mov byte [esp + 0x108], 1
cmp dword [esp + 0x50], 8
jb 0x40feac
mov edx, dword [esp + 0x3c]
push edx
call fcn.004c2c15
add esp, 4
mov edi, dword [esp + 0x14]
mov eax, dword [edi + 8]
cmp eax, 2
je 0x40febd
cmp eax, 3
jne 0x40ff21
mov eax, dword [esp + 0x110]
mov eax, dword [eax + 0x18]
test eax, eax
je 0x40ff21
mov ebp, 1
cmp dword [eax + 0x14], ebp
je 0x40fede
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x40fed0
jmp 0x40ff21
mov ebx, dword [esp + 0xa8]
mov esi, eax
push esi
mov ecx, ebx
call fcn.0040f410
mov ecx, dword [edi + 8]
cmp ecx, 2
jne 0x40ff01
push eax
mov ecx, edi
call fcn.0040ef30
jmp 0x40ff0e
cmp ecx, 3
jne 0x40ff0e
push eax
mov ecx, edi
call fcn.0040f000
mov eax, dword [esi + 0x40]
test eax, eax
je 0x40ff21
cmp dword [eax + 0x14], ebp
je 0x40fee5
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x40ff15
mov eax, dword [esp + 0x6c]
mov esi, 0x10
cmp eax, esi
jb 0x40ff3b
mov ecx, dword [esp + 0x58]
push ecx
call fcn.004c2c15
add esp, 4
cmp dword [esp + 0xe0], esi
mov dword [esp + 0x6c], 0xf
mov dword [esp + 0x68], 0
mov byte [esp + 0x58], 0
jb 0x40ff69
mov edx, dword [esp + 0xcc]
push edx
call fcn.004c2c15
add esp, 4
mov ecx, dword [esp + 0x100]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xfc
ret 4