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

Disassembly:
sub esp, 0x84
fldz
push ebx
push ebp
fst dword [esp + 0x10]
push esi
fst dword [esp + 0x18]
mov ebx, ecx
push edi
lea ebp, [ebx + 0x124]
mov dword [esp + 0x90], 0x32
jmp 0x408db2
fldz
cmp byte [ebp], 0
je 0x409410
mov eax, dword [ebx]
fld dword [ebp + 8]
fsub dword [eax + 0xd0]
mov esi, dword [ebp + 4]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fst dword [ebp + 8]
fcompp
fnstsw ax
test ah, 5
jp 0x409412
cmp byte [ebp + 0x15], 0
jne 0x408e0b
mov ecx, dword [ebx]
call fcn.00406a10
test al, al
je 0x408e0b
inc dword [ebp + 0x18]
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp + 0x1c]
jne 0x409412
mov byte [ebp], 0
jmp 0x409412
imul esi, esi, 0x34
cmp byte [ebp + 0x17], 0
lea eax, [esi + ebx]
lea esi, [eax + 0x20]
mov ecx, 0xd
lea edi, [esp + 0x5c]
mov dword [esp + 0x20], eax
rep movsd dword es:[edi], dword [esi]
je 0x408e47
fldz
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
fstp dword [esp + 0x8c]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], ecx
jmp 0x408e4b
mov edx, dword [esp + 0x7c]
cmp byte [ebp + 0x11], 0
je 0x408e9b
mov eax, dword [ebx]
fld dword [esp + 0x64]
mov eax, dword [eax + 0x80]
fchs
mov ecx, eax
fstp dword [esp + 0x64]
sub eax, dword [esp + 0x6c]
fld dword [esp + 0x5c]
sub ecx, edx
fchs
mov dword [esp + 0x7c], ecx
fstp dword [esp + 0x5c]
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x74]
neg ecx
neg eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x74], eax
cmp byte [ebp + 0x10], 0
je 0x408eef
mov eax, dword [ebx]
fld dword [esp + 0x68]
mov eax, dword [eax + 0x84]
fchs
mov ecx, eax
fstp dword [esp + 0x68]
sub ecx, dword [esp + 0x80]
fld dword [esp + 0x60]
sub eax, dword [esp + 0x70]
fchs
mov dword [esp + 0x80], ecx
fstp dword [esp + 0x60]
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
neg ecx
neg eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x78], eax
cmp byte [ebp + 0x12], 0
mov ecx, 0xd
lea esi, [esp + 0x5c]
lea edi, [esp + 0x28]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x40]
je 0x408f45
mov eax, dword [ebx]
fld dword [esp + 0x30]
mov eax, dword [eax + 0x80]
fchs
mov ecx, eax
fstp dword [esp + 0x30]
fld dword [esp + 0x28]
sub eax, dword [esp + 0x38]
sub ecx, edx
fchs
mov dword [esp + 0x48], ecx
fstp dword [esp + 0x28]
mov ecx, dword [esp + 0x50]
neg ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], eax
neg edi
jmp 0x409008
cmp byte [ebp + 0x13], 0
mov ecx, dword [ebx]
je 0x408f92
mov eax, dword [ecx + 0x84]
fld dword [esp + 0x34]
mov ecx, eax
fchs
sub ecx, dword [esp + 0x80]
fstp dword [esp + 0x34]
sub eax, dword [esp + 0x3c]
fld dword [esp + 0x2c]
mov dword [esp + 0x4c], ecx
fchs
mov ecx, dword [esp + 0x54]
fstp dword [esp + 0x2c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
neg ecx
neg eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x44], eax
jmp 0x40900c
mov eax, dword [ecx + 0x80]
fld dword [esp + 0x30]
fchs
mov esi, eax
sub eax, dword [esp + 0x38]
fstp dword [esp + 0x30]
fld dword [esp + 0x28]
sub esi, edx
fchs
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x84]
fstp dword [esp + 0x28]
fld dword [esp + 0x34]
mov ecx, eax
sub ecx, dword [esp + 0x4c]
fchs
sub eax, dword [esp + 0x3c]
fstp dword [esp + 0x34]
fld dword [esp + 0x2c]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x50]
fchs
mov dword [esp + 0x4c], ecx
fstp dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
neg esi
neg ecx
neg edi
neg eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], edi
cmp byte [ebp + 0x17], 0
mov edx, dword [esp + 0x20]
fld dword [edx + 0x50]
fstp dword [ebp + 8]
je 0x409026
mov dword [esp + 0x24], 0xa
jmp 0x40905e
cmp byte [ebp + 0x16], 0
je 0x409036
mov dword [esp + 0x24], 9
jmp 0x40905e
cmp byte [ebp + 0x15], 0
je 0x409046
mov dword [esp + 0x24], 6
jmp 0x40905e
movzx eax, byte [ebp + 0x14]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
push eax
push ecx
push edx
mov ecx, ebx
call fcn.004087e0
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x18]
mov esi, dword [ebx]
mov ecx, eax
imul eax, dword [esp + 0x78]
add eax, dword [esp + 0x70]
imul ecx, dword [esp + 0x74]
add ecx, dword [esp + 0x6c]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x80]
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
mov eax, dword [esi + 0xa8]
jge 0x409098
neg eax
cmp ecx, eax
jl 0x4090a4
jmp 0x4090a2
add eax, dword [esi + 0x80]
cmp ecx, eax
jg 0x4090a4
mov ecx, eax
mov eax, dword [esi + 0x84]
cdq
sub eax, edx
mov edx, dword [esp + 0x10]
sar eax, 1
cmp edx, eax
mov eax, dword [esi + 0xac]
jge 0x4090c5
neg eax
cmp edx, eax
jl 0x4090d5
jmp 0x4090d1
add eax, dword [esi + 0x84]
cmp dword [esp + 0x10], eax
jg 0x4090d5
mov dword [esp + 0x10], eax
movzx eax, byte [ebp + 0x20]
fldz
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [esp + 0x14]
push ecx
fstp dword [esp]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x38]
push 0
push ecx
lea ecx, [esi + 0x5f2fc]
call fcn.004155a0
cmp byte [ebp + 0x15], 0
mov dword [esp + 0x20], eax
je 0x409110
cmp byte [ebp + 0x20], 0
sete dl
mov byte [ebp + 0x20], dl
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebx]
mov eax, ecx
imul ecx, dword [esp + 0x88]
imul eax, dword [esp + 0x84]
add ecx, dword [esp + 0x80]
add eax, dword [esp + 0x7c]
mov dword [esp + 0x10], ecx
mov ecx, dword [edx + 0xa8]
cmp eax, ecx
mov dword [esp + 0x14], eax
jg 0x40914a
mov eax, ecx
mov dword [esp + 0x14], ecx
mov esi, dword [edx + 0x80]
sub esi, ecx
cmp eax, esi
jl 0x40915a
mov dword [esp + 0x14], esi
mov ecx, dword [edx + 0xac]
mov esi, dword [esp + 0x10]
cmp esi, ecx
jg 0x40916e
mov esi, ecx
mov dword [esp + 0x10], esi
mov eax, dword [edx + 0x84]
sub eax, ecx
cmp esi, eax
jl 0x40917e
mov dword [esp + 0x10], eax
fild dword [esp + 0x14]
mov esi, dword [esp + 0x20]
imul esi, esi, 0x2c4
fstp dword [esp + 0x18]
fild dword [esp + 0x10]
fstp dword [esp + 0x1c]
cmp dword [esp + 0x24], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esi + edx + 0x5f8f4], eax
mov dword [esi + edx + 0x5f8f8], ecx
fild dword [ebp + 0x18]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld st(0)
fmul dword [esp + 0x64]
fadd dword [esp + 0x5c]
fstp dword [esp + 0x14]
fmul dword [esp + 0x68]
fadd dword [esp + 0x60]
fstp dword [esp + 0x10]
jne 0x409214
mov ecx, dword [ebx]
add ecx, 0xe0
call fcn.00418280
fmul qword [0x444bd0]
mov ecx, dword [ebx]
add ecx, 0xe0
fsub qword [0x444aa8]
fstp dword [esp + 0x14]
call fcn.00418280
fmul qword [0x444bd0]
fsub qword [0x444aa8]
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
mov eax, dword [ebx]
fstp dword [esp + 0x18]
mov edx, dword [esp + 0x18]
fld dword [esp + 0x10]
mov dword [esi + eax + 0x5fb30], edx
fstp dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov dword [esi + eax + 0x5fb34], ecx
cmp byte [ebp + 0x15], 0
je 0x40924c
cmp byte [ebp + 0x11], 0
je 0x408df3
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebx]
mov esi, eax
imul eax, dword [esp + 0x44]
add eax, dword [esp + 0x3c]
imul esi, edi
add esi, dword [esp + 0x38]
mov edi, eax
mov eax, dword [ecx + 0x80]
cdq
sub eax, edx
sar eax, 1
cmp esi, eax
mov eax, dword [ecx + 0xa8]
jge 0x409282
neg eax
cmp esi, eax
jl 0x40928e
jmp 0x40928c
add eax, dword [ecx + 0x80]
cmp esi, eax
jg 0x40928e
mov esi, eax
mov eax, dword [ecx + 0x84]
cdq
sub eax, edx
sar eax, 1
cmp edi, eax
mov eax, dword [ecx + 0xac]
jge 0x4092ab
neg eax
cmp edi, eax
jl 0x4092b7
jmp 0x4092b5
add eax, dword [ecx + 0x84]
cmp edi, eax
jg 0x4092b7
mov edi, eax
call fcn.00406a10
test al, al
jne 0x4092ea
movzx edx, byte [ebp + 0x20]
fldz
mov eax, dword [ebp + 0x24]
push edx
push ecx
mov ecx, dword [esp + 0x2c]
inc eax
fstp dword [esp]
push eax
push edi
push esi
push 0
push ecx
mov ecx, dword [ebx]
add ecx, 0x5f2fc
call fcn.004155a0
mov dword [esp + 0x20], eax
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebx]
mov edi, dword [edx + 0xa8]
mov eax, ecx
imul ecx, dword [esp + 0x54]
imul eax, dword [esp + 0x50]
add ecx, dword [esp + 0x4c]
add eax, dword [esp + 0x48]
mov esi, ecx
cmp eax, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], esi
jg 0x40931d
mov eax, edi
mov dword [esp + 0x14], edi
mov ecx, dword [edx + 0x80]
sub ecx, edi
cmp eax, ecx
jl 0x40932d
mov dword [esp + 0x14], ecx
mov ecx, dword [edx + 0xac]
cmp esi, ecx
jg 0x40933d
mov esi, ecx
mov dword [esp + 0x10], ecx
mov eax, dword [edx + 0x84]
sub eax, ecx
cmp esi, eax
jl 0x40934d
mov dword [esp + 0x10], eax
fild dword [esp + 0x14]
mov esi, dword [esp + 0x20]
imul esi, esi, 0x2c4
fstp dword [esp + 0x18]
fild dword [esp + 0x10]
fstp dword [esp + 0x1c]
cmp dword [esp + 0x24], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esi + edx + 0x5f8f4], eax
mov dword [esi + edx + 0x5f8f8], ecx
fild dword [ebp + 0x18]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld st(0)
fmul dword [esp + 0x30]
fadd dword [esp + 0x28]
fstp dword [esp + 0x14]
fmul dword [esp + 0x34]
fadd dword [esp + 0x2c]
fstp dword [esp + 0x10]
jne 0x4093e3
mov ecx, dword [ebx]
add ecx, 0xe0
call fcn.00418280
fmul qword [0x444bd0]
mov ecx, dword [ebx]
add ecx, 0xe0
fsub qword [0x444aa8]
fstp dword [esp + 0x14]
call fcn.00418280
fmul qword [0x444bd0]
fsub qword [0x444aa8]
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
mov eax, dword [ebx]
fstp dword [esp + 0x18]
mov edx, dword [esp + 0x18]
fld dword [esp + 0x10]
mov dword [esi + eax + 0x5fb30], edx
fstp dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov dword [esi + eax + 0x5fb34], ecx
jmp 0x408df3
fstp st(0)
add ebp, 0x28
sub dword [esp + 0x90], 1
jne 0x408db0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84
ret
sub esp, 0x24
push esi
push edi
mov esi, ecx
mov byte [esp + 0x14], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0x1c], 0
call fcn.00408c10
mov eax, dword [esi + 0x918]
lea edi, [esi + 0x918]
mov ecx, esi
mov dword [esp + 0x20], eax
call fcn.00408c10
mov ecx, dword [edi]
and ecx, 0x80000001
jns 0x409d81
dec ecx
or ecx, 0xfffffffe
inc ecx
cmp ecx, 1
jne 0x409d8a
mov byte [esp + 0x14], cl
mov ecx, esi
call fcn.00408c10
mov edx, dword [edi]
and edx, 0x80000001
jns 0x409da0
dec edx
or edx, 0xfffffffe
inc edx
cmp edx, 1
jne 0x409da9
mov byte [esp + 0x10], dl
mov ecx, dword [esi]
add ecx, 0xbe958
call fcn.00404250
fild dword [esi + 0x924]
fidiv dword [esi + 0x928]
fstp dword [esp + 0xc]
fld dword [esi + 0x908]
fstp dword [esp + 0x18]
fld dword [esp + 0xc]
fld dword [esp + 0x18]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
je 0x409de9
fstp dword [esp + 0xc]
jmp 0x409deb
fstp st(0)
fld dword [esi + 0x904]
fstp dword [esp + 0x18]
fld dword [esp + 0xc]
fld dword [esp + 0x18]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jnp 0x409e0e
fstp dword [esp + 0xc]
jmp 0x409e10
fstp st(0)
fld dword [esp + 0xc]
fsub dword [esi + 0x904]
fld dword [esi + 0x908]
fsub dword [esi + 0x904]
fdivp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fmul qword [0x444be0]
call fcn.0042e3e0
cmp byte [esi + 0x1c], 0
je 0x409e44
sub eax, 0x1e
mov ecx, dword [esi + 0x920]
lea ecx, [ecx + ecx*4]
cmp ecx, 0x19
jl 0x409e57
mov ecx, 0x19
add eax, ecx
cmp eax, 0x63
mov dword [esp + 0xc], eax
jle 0x409e6c
mov dword [esp + 0xc], 0x63
jmp 0x409e78
test eax, eax
jge 0x409e78
mov dword [esp + 0xc], 0
fild dword [esp + 0xc]
mov eax, dword [esp + 0xc]
push ebx
mov ebx, dword [esi + 0x14]
fdiv qword [0x444ec0]
push ebp
mov dword [esi + 0x92c], eax
fadd qword [0x444a18]
call fcn.0042e3e0
fld qword [0x444a50]
cdq
idiv ebx
mov ebp, eax
mov eax, dword [esi + 0x930]
mov dword [esp + 0x10], ebp
test eax, eax
jne 0x409ec8
fstp st(0)
fild dword [esp + 0x10]
fdiv qword [0x444bc8]
call fcn.0042e3e0
jmp 0x409efb
cmp eax, 1
jne 0x409ed8
fidivr dword [esp + 0x10]
call fcn.0042e3e0
jmp 0x409efb
cmp eax, 2
jne 0x409ee8
fimul dword [esp + 0x10]
call fcn.0042e3e0
jmp 0x409efb
fstp st(0)
cmp eax, 3
jne 0x409f01
fild dword [esp + 0x10]
fadd st(0), st(0)
call fcn.0042e3e0
inc ebx
mov ebp, eax
mov dword [esp + 0x10], ebp
cmp ebp, 1
jge 0x409f0f
mov ebp, 1
mov dword [esp + 0x10], ebp
mov ecx, esi
call fcn.00408c10
mov eax, dword [edi]
cdq
mov ecx, 5
idiv ecx
test edx, edx
je 0x409f37
cmp dword [esi + 0x920], 0
je 0x409f37
mov byte [esp + 0x20], 0
jmp 0x40a04f
cmp dword [esi + 0x920], 0
mov byte [esp + 0x20], 1
jne 0x409f77
fld dword [esi + 0x8f8]
mov edx, dword [esi]
fsub qword [0x444b90]
mov ebp, 2
mov ebx, 1
mov dword [esp + 0x10], ebp
fstp dword [esi + 4]
cmp byte [edx + 0xc], 0
je 0x409fe5
fld dword [esi + 0x8f8]
mov ebp, ebx
fstp dword [esi + 4]
jmp 0x409fe1
mov eax, dword [esp + 0x14]
fld dword [esi + 0x8fc]
cmp eax, 0x5a
fstp dword [esi + 4]
mov ebx, 2
jle 0x409fa3
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov ebp, eax
cmp ebp, ecx
mov dword [esp + 0x10], ebp
jge 0x409fe5
mov ebp, ecx
jmp 0x409fe1
cmp eax, 0x46
mov eax, 0x55555556
jle 0x409fc8
imul ebp
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ebp, eax
cmp ebp, 4
mov dword [esp + 0x10], ebp
jge 0x409fe5
mov ebp, 4
jmp 0x409fe1
imul ebp
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov ebp, ecx
cmp ebp, 3
mov dword [esp + 0x10], ebp
jge 0x409fe5
mov ebp, 3
mov dword [esp + 0x10], ebp
mov eax, dword [esi + 0x930]
test eax, eax
jne 0x40a000
fild dword [esp + 0x10]
fdiv qword [0x444bc8]
call fcn.0042e3e0
jmp 0x40a03b
cmp eax, 1
jne 0x40a016
fild dword [esp + 0x10]
fdiv qword [0x444a50]
call fcn.0042e3e0
jmp 0x40a03b
cmp eax, 2
jne 0x40a026
fild dword [esp + 0x10]
call fcn.0042e3e0
jmp 0x40a03b
cmp eax, 3
jne 0x40a041
fild dword [esp + 0x10]
fmul qword [0x444ac8]
call fcn.0042e3e0
inc ebx
mov ebp, eax
mov dword [esp + 0x10], ebp
cmp ebp, 1
jge 0x40a04f
mov ebp, 1
mov dword [esp + 0x10], ebp
mov ecx, esi
call fcn.00408c10
cmp byte [esi + 0x1c], 0
jne 0x40a299
cmp dword [esi + 0x920], 1
jle 0x40a299
mov eax, dword [edi]
cdq
mov ecx, 5
idiv ecx
test edx, edx
jne 0x40a299
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d5f0
fcomp qword [0x444eb8]
fnstsw ax
test ah, 5
jp 0x40a299
mov eax, dword [esi]
fild dword [eax + 0x80]
push 0
sub esp, 0xc
mov byte [esp + 0x20], 0
fmul qword [0x444a20]
fstp dword [eax + 0xb0]
mov eax, dword [esi]
mov edx, dword [eax + 0x84]
sub edx, dword [eax + 0xac]
sub edx, 0x32
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
fstp dword [eax + 0xb4]
mov ebx, dword [esi]
fld dword [0x444a5c]
mov ecx, ebx
fstp dword [esp + 8]
add ecx, 0xbe958
fld1
fstp dword [esp + 4]
fldz
fstp dword [esp]
push 0
call fcn.004041d0
push eax
lea eax, [ebx + 0xb0]
push eax
push 0
push 0x444eac
lea ecx, [ebx + 0xba87c]
call fcn.004163b0
fld dword [0x444ea8]
mov ebx, dword [esi]
push 1
sub esp, 0xc
fstp dword [esp + 8]
mov ecx, ebx
fld1
add ecx, 0xbe958
fstp dword [esp + 4]
fldz
fstp dword [esp]
push 1
call fcn.004041d0
push eax
lea ecx, [ebx + 0xb0]
push ecx
push 0
push 0x444eac
lea ecx, [ebx + 0xba87c]
call fcn.004163b0
mov ecx, esi
mov byte [esi + 0x1c], 1
call fcn.00408c10
cmp dword [esp + 0x14], 0x32
jge 0x40a181
cmp dword [esi + 0x930], 0
jne 0x40a181
mov byte [esp + 0x10], 0
jmp 0x40a1c7
mov eax, dword [esi + 0x930]
cmp eax, 1
jne 0x40a1a2
mov eax, dword [edi]
cdq
mov ecx, 0xa
idiv ecx
cmp edx, 5
jge 0x40a1c2
cmp dword [esp + 0x14], 0x5a
jmp 0x40a1c0
cmp eax, 2
je 0x40a1ac
cmp eax, 3
jne 0x40a1c7
mov eax, dword [edi]
cdq
mov ecx, 0xa
idiv ecx
cmp edx, 5
jge 0x40a1c2
cmp dword [esp + 0x14], 0x50
jle 0x40a1c7
mov byte [esp + 0x10], 1
mov ebx, dword [esp + 0x10]
push ebx
mov ecx, esi
call fcn.00409450
mov eax, dword [esp + 0x14]
test bl, bl
je 0x40a212
mov edx, dword [esp + 0x18]
fld dword [0x444ba8]
push 0
push 0
push edx
push ecx
fstp dword [esp]
push 1
push eax
push 0
push ebx
push 1
push 0
push 4
mov ecx, esi
call fcn.004086b0
fld dword [esi + 0x900]
fmul qword [0x444a50]
jmp 0x40a2f9
cmp eax, 0x28
jl 0x40a220
cmp dword [esi + 0x930], 0
jne 0x40a26a
cmp dword [esi + 0x930], 3
je 0x40a26a
mov ecx, dword [esp + 0x18]
fld dword [0x444ba8]
push 0
push 0
push ecx
push ecx
fstp dword [esp]
push 1
push eax
push 0
push 0
push 1
push 0
push 4
mov ecx, esi
call fcn.004086b0
cmp dword [esi + 0x930], 0
je 0x40a291
fld dword [esi + 0x900]
fmul qword [0x444a80]
jmp 0x40a2f9
mov edx, dword [esp + 0x18]
fld dword [0x444ba8]
push 0
push 1
push edx
push ecx
fstp dword [esp]
push 1
push eax
push 0
push 0
push 1
push 0
push 4
mov ecx, esi
call fcn.004086b0
fld dword [esi + 0x900]
jmp 0x40a2f9
cmp dword [esi + 0x920], 1
mov byte [esi + 0x1c], 0
jle 0x40a301
mov eax, dword [edi]
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 0x3c
jle 0x40a301
cmp dword [esp + 0x14], 0x32
jle 0x40a301
fild dword [esp + 0x10]
mov byte [esp + 0x24], 1
fdiv qword [0x444ac8]
call fcn.0042e3e0
mov ebp, eax
cmp ebp, 3
jge 0x40a2de
mov ebp, 3
jmp 0x40a2e8
cmp ebp, 8
jle 0x40a2e8
mov ebp, 8
fld dword [esi + 0x900]
mov byte [esp + 0x1c], 0
fmul qword [0x444a20]
fstp dword [esi + 4]
mov ebx, 1
mov dword [esp + 0x10], 0
test ebx, ebx
jle 0x40a469
lea edx, [ebx + 1]
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
fstp dword [esp + 0x30]
fild dword [edi]
fmul qword [0x444e90]
call fcn.0042e3e0
mov ecx, 1
sub ecx, eax
mov dword [edi], ecx
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d400
add eax, dword [esi + 0x920]
add dword [edi], eax
jns 0x40a373
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d400
mov ecx, dword [esi + 0x920]
cdq
xor eax, edx
sub eax, edx
mov edx, ecx
shl edx, 5
add edx, ecx
add eax, edx
lea eax, [eax + eax*4]
mov dword [edi], eax
mov eax, dword [edi]
mov dword [esp + 0x2c], eax
cdq
mov ecx, 0x14
idiv ecx
cmp edx, 1
jne 0x40a3a0
lea edx, [ebx - 1]
cmp dword [esp + 0x10], edx
jne 0x40a3a0
cmp dword [esi + 0x930], 0
je 0x40a3a0
mov byte [esp + 0x20], 1
lea ebp, [ecx - 0x12]
fild dword [esp + 0x2c]
fmul qword [0x444e90]
call fcn.0042e3e0
mov ecx, 1
sub ecx, eax
mov dword [edi], ecx
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d400
add eax, dword [esi + 0x920]
add dword [edi], eax
jns 0x40a3f5
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d400
mov ecx, dword [esi + 0x920]
cdq
xor eax, edx
sub eax, edx
mov edx, ecx
shl edx, 5
add edx, ecx
add eax, edx
lea eax, [eax + eax*4]
mov dword [edi], eax
fld dword [esi + 4]
movzx ecx, byte [esi + 0x1d]
fdiv dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push ecx
push edx
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x24]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fimul dword [esp + 0x20]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fstp dword [esp]
push ebp
push ecx
mov ecx, dword [edi]
and ecx, reloc.XINPUT1_3.dll_Ordinal_3
push edx
push 0
push 0
push eax
jns 0x40a446
dec ecx
or ecx, 0xfffffffc
inc ecx
push ecx
mov ecx, esi
call fcn.004086b0
cmp byte [esi + 0x1d], 0
mov eax, dword [esp + 0x10]
sete dl
inc eax
cmp eax, ebx
mov byte [esi + 0x1d], dl
mov dword [esp + 0x10], eax
jl 0x40a320
inc dword [esi + 0x920]
xor eax, eax
add dword [esi + 0x18], 0xffffffff
pop ebp
mov dword [esi + 0x928], eax
mov dword [esi + 0x924], eax
pop ebx
jne 0x40a4dc
mov eax, dword [esi]
fild dword [eax + 0x80]
push 1
push 1
fmul qword [0x444a20]
fstp dword [eax + 0xb0]
mov eax, dword [esi]
fldz
fstp dword [eax + 0xb4]
mov eax, dword [esi]
lea ecx, [eax + 0xb0]
push ecx
lea ecx, [eax + 0xb9df0]
call fcn.0040c9b0
mov edx, dword [edi]
and edx, reloc.XINPUT1_3.dll_Ordinal_3
jns 0x40a4ca
dec edx
or edx, 0xfffffffc
inc edx
mov eax, dword [esp + 0x20]
add edx, 4
mov dword [edi], eax
pop edi
mov dword [esi + 0x18], edx
pop esi
add esp, 0x24
ret
mov ecx, dword [esp + 0x20]
mov dword [edi], ecx
pop edi
pop esi
add esp, 0x24
ret
push ecx
push esi
mov esi, ecx
cmp byte [esi + 8], 0
jne 0x40a617
mov eax, dword [esi]
cmp byte [eax + 0xc], 0
je 0x40a5de
fld dword [eax + 0xd0]
lea ecx, [eax + 0xb9df0]
fadd dword [esi + 0x910]
fstp dword [esi + 0x910]
call fcn.0040c150
cmp eax, 1
jle 0x40a5d2
fld dword [esi + 0x90c]
mov ecx, dword [esi]
fsub dword [ecx + 0xd0]
fstp dword [esp + 4]
fld dword [esp + 4]
fst dword [esi + 0x90c]
fldz
fcompp
fnstsw ax
test ah, 0x41
jne 0x40a5de
add ecx, 0xb9df0
call fcn.0040c230
fld dword [0x444ed8]
jmp 0x40a5d8
fld dword [0x444e1c]
fstp dword [esi + 0x90c]
mov eax, dword [esi]
cmp byte [eax + 0xc5e08], 0
je 0x40a61a
lea ecx, [eax + 0xf48]
call fcn.0040d5f0
fcomp dword [0x444a10]
fnstsw ax
test ah, 0x41
jne 0x40a61a
mov ecx, dword [esi]
add ecx, 0x5f8e8
call fcn.00411830
push 1
mov ecx, esi
call fcn.00408ba0
pop esi
pop ecx
ret
mov eax, dword [esi]
cmp byte [eax + 0xc], 0
je 0x40a80b
lea ecx, [eax + 0xf48]
call fcn.0040d5c0
fcomp dword [0x4486c4]
fnstsw ax
test ah, 5
jp 0x40a80b
push ebx
push edi
mov edi, dword [esi]
mov ecx, dword [edi + 0xf40]
sub ecx, dword [edi + 0xf3c]
add edi, 0xf30
mov eax, 0xfe03f81
imul ecx
mov eax, dword [esi + 0x914]
sar edx, 5
mov ecx, edx
inc eax
shr ecx, 0x1f
add ecx, edx
cdq
idiv ecx
mov eax, 0xfe03f81
xor ebx, ebx
mov dword [esi + 0x914], edx
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x40a738
push ebp
jmp 0x40a6a0
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov ebp, dword [esi + 0x914]
mov eax, 0xfe03f81
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebp, ecx
jb 0x40a6c6
call fcn.0042f06c
mov edx, dword [edi + 0xc]
imul ebp, ebp, 0x204
cmp dword [edx + ebp], 0
je 0x40a737
mov edi, dword [esi]
mov ecx, dword [edi + 0xf40]
sub ecx, dword [edi + 0xf3c]
add edi, 0xf30
mov eax, 0xfe03f81
imul ecx
mov eax, dword [esi + 0x914]
sar edx, 5
inc eax
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cdq
idiv ecx
inc ebx
mov dword [esi + 0x914], edx
mov eax, dword [esi]
mov ecx, dword [eax + 0xf40]
sub ecx, dword [eax + 0xf3c]
add eax, 0xf30
mov eax, 0xfe03f81
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jl 0x40a6a0
pop ebp
fldz
push ecx
mov ecx, dword [esi + 0x914]
fstp dword [esp]
push 0
push ecx
mov ecx, dword [esi]
add ecx, 0x130
call fcn.00418610
mov edx, dword [esi + 0x914]
mov ecx, dword [esi]
push eax
push edx
add ecx, 0x130
call fcn.00418570
mov ecx, dword [esi]
push eax
mov eax, dword [esi + 0x914]
push eax
add ecx, 0x130
call fcn.00418520
mov ecx, dword [esi]
push eax
add ecx, 0xf48
call fcn.0040d320
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d990
mov edi, dword [esi]
mov ecx, edi
add ecx, 0xb9df0
call fcn.0040c8d0
mov dword [esp + 0xc], eax
fild dword [esp + 0xc]
push ecx
lea ecx, [edi + 0xe4]
fmul qword [0x444ed0]
fadd qword [0x444a08]
fmul dword [edi + 0xc5e54]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fstp dword [esp]
call fcn.004293e0
mov ecx, dword [esi]
add ecx, 0xbea30
call fcn.00417050
mov ecx, dword [esi]
push 0
add ecx, 0xbe958
call fcn.00404400
mov ecx, dword [esi]
add ecx, 0xb69b0
call fcn.00402a70
mov ecx, esi
call fcn.00409ba0
pop edi
pop ebx
mov ecx, dword [esi]
add ecx, 0xf48
call fcn.0040d630
mov ecx, dword [esi]
test al, al
jne 0x40a603
fld dword [esi + 4]
fsub dword [ecx + 0xd0]
inc dword [esi + 0x928]
mov ecx, esi
fstp dword [esi + 4]
fldz
fcomp dword [esi + 4]
fnstsw ax
test ah, 0x41
jne 0x40a854
fld dword [esi + 0x8f8]
fstp dword [esi + 4]
pop esi
add esp, 4
jmp 0x409d40
pop esi
add esp, 4
jmp 0x408d80