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

Disassembly:
push ebx
push esi
mov ebx, ecx
push edi
push ebp
sub esp, 0x68
mov eax, dword [ebx + 0x244]
cmp eax, 0x2a
mov ebp, dword [esp + 0x7c]
je 0x523d0d
cmp eax, 0x36
jne 0x523d33
cmp dword [ebx + 0x3f8], 0
je 0x523d23
mov dl, byte [ebp + 0x50]
shr dl, 3
movzx eax, dl
test eax, eax
jne 0x523d29
mov dword [ebx + 0x3f8], ebp
add esp, 0x68
pop ebp
pop edi
pop esi
pop ebx
ret 8
cmp eax, 0x37
jne 0x523d42
add esp, 0x68
pop ebp
pop edi
pop esi
pop ebx
ret 8
mov esi, dword [ebx + 0x394]
test esi, esi
je 0x523d85
mov al, byte [esi + 0x50]
and al, 7
cmp al, 2
jne 0x523d85
mov eax, dword [esi + 0x29c]
cmp eax, 1
jne 0x523d70
add esp, 0x68
pop ebp
pop edi
pop esi
pop ebx
ret 8
mov ecx, ebx
call fcn.004f4950
test al, al
je 0x523d85
add esp, 0x68
pop ebp
pop edi
pop esi
pop ebx
ret 8
mov dword [esp + 0x10], ebx
add dword [esp + 0x10], 4
add dword [esp + 0x10], 0x30
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], ebp
add dword [esp + 0x18], 4
add dword [esp + 0x18], 0x30
mov eax, dword [esp + 0x18]
fld dword [edi]
fsub dword [eax]
fstp dword [esp + 0x5c]
fld dword [edi + 4]
fsub dword [eax + 4]
lea esi, [esp + 0x5c]
fstp dword [esp + 0x60]
fld dword [edi + 8]
fsub dword [eax + 8]
lea edi, [esp + 0x40]
fstp dword [esp + 0x64]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
fld dword [esp + 0x80]
fcomp dword [0x6941c0]
fnstsw ax
test ah, 0x45
je 0x523df1
movsx eax, word [ebp + 0x5c]
cmp eax, 0xffffffff
jne 0x524690
mov ecx, ebx
call fcn.004f4950
test al, al
jne 0x524690
mov byte [esp + 0x1c], 0
call fcn.00649a40
and al, 3
mov dword [esp + 0x24], 0x27
mov byte [esp + 0x20], al
call fcn.004bc200
cmp ebp, eax
fldz
jne 0x523f0d
fld dword [ebp + 0x74]
fst st(1)
fmul st(0)
fld dword [ebp + 0x70]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fld dword [ebp + 0x78]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fst st(1)
fsqrt
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp st(1)
fld dword [0x6941c4]
fmul st(1)
fmul dword [0x6941c8]
fdiv dword [ebp + 0xb8]
fadd dword [0x6941cc]
fcomp dword [0x6941d0]
fnstsw ax
test ah, 0x45
jne 0x523e81
fld dword [0x6941d0]
jmp 0x523ec6
fld dword [ebp + 0x74]
fst st(1)
fmul st(0)
fld dword [ebp + 0x70]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fld dword [ebp + 0x78]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fst st(1)
fsqrt
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp st(1)
fld dword [0x6941c4]
fmul st(1)
fmul dword [0x6941c8]
fdiv dword [ebp + 0xb8]
fadd dword [0x6941cc]
fstp st(1)
fld st(0)
fnstcw word [esp + 0x28]
mov eax, dword [esp + 0x28]
or byte [esp + 0x29], 0xc
fldcw word [esp + 0x28]
fistp dword [esp + 0x38]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov al, dl
push eax
mov eax, 0x9c40
movzx ecx, dl
cdq
fldcw word [esp + 0x2c]
fstp st(0)
idiv ecx
push eax
push 0
call fcn.004ab080
pop ecx
mov ecx, eax
call fcn.004ad300
fldz
mov al, byte [ebx + 0x14c]
mov ecx, ebx
and al, 0xfe
mov byte [ebx + 0x14c], al
fld dword [ebp + 0x74]
fchs
fstp st(1)
fld dword [ebp + 0x70]
fchs
fstp dword [esp + 0x4c]
lea eax, [esp + 0x4c]
push eax
fst dword [esp + 0x54]
fstp st(0)
call fcn.00503610
mov dword [esp + 0x14], eax
lea edx, [ebp + 4]
movsx esi, word [ebp + 0x5c]
fldz
fldz
mov eax, dword [esi*4 + 0x92d4d0]
mov edi, dword [eax + 0x1c]
mov ecx, edi
fldz
fldz
fldz
fld dword [ecx + 0x1c]
fstp st(3)
fld dword [esp + 0x44]
fstp st(5)
fld st(4)
fmul dword [edx + 4]
fld dword [esp + 0x40]
fmul dword [edx]
faddp st(1)
fld dword [esp + 0x48]
fstp st(5)
fld st(4)
fmul dword [edx + 8]
mov dword [esp + 0xc], ebp
add dword [esp + 0xc], 4
add dword [esp + 0xc], 0x20
mov ecx, dword [esp + 0xc]
faddp st(1)
fstp st(2)
fld st(4)
fmul dword [ecx + 4]
fld dword [esp + 0x40]
fmul dword [ecx]
cmp esi, 0xffffffff
faddp st(1)
fld st(4)
fmul dword [ecx + 8]
faddp st(1)
fstp dword [esp + 0x2c]
jne 0x524020
fld dword [0x6941d4]
mov dword [esp + 0x24], 0x28
mov byte [esp + 0x1c], 2
fmul dword [ebp + 0x78]
fstp st(4)
fld dword [0x6941d4]
fmul dword [ebp + 0x74]
fstp st(5)
fld dword [0x6941d4]
fmul dword [ebp + 0x70]
fstp dword [ebx + 0x70]
fld st(4)
fstp dword [ebx + 0x74]
fld st(3)
fstp dword [ebx + 0x78]
mov dword [ebx + 0x78], 0
cmp dword [esp + 0x14], 1
je 0x524002
cmp dword [esp + 0x14], 3
jne 0x52400a
mov dword [esp + 0x14], 2
cmp byte [0x68dd68], 0
je 0x5248e0
jmp 0x524563
mov dword [esp + 8], ebp
add dword [esp + 8], 4
add dword [esp + 8], 0x10
lea ecx, [ebp + 0x70]
fld dword [ecx + 4]
mov edx, dword [esp + 8]
fmul dword [edx + 4]
fld dword [ecx]
fmul dword [edx]
faddp st(1)
fld dword [ecx + 8]
fmul dword [edx + 8]
faddp st(1)
fcomp dword [0x69414c]
fnstsw ax
and ah, 5
cmp ah, 1
je 0x5248f0
fld st(1)
fcomp dword [0x69414c]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x524075
fld st(1)
fchs
jmp 0x524077
fld st(1)
fstp st(1)
fld dword [0x6941d8]
fmul st(3)
fcomp st(1)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x524150
fld st(1)
fcomp dword [0x69414c]
fnstsw ax
test ah, 0x45
jne 0x5240a7
mov byte [esp + 0x1c], 4
jmp 0x5240ac
mov byte [esp + 0x1c], 3
fld dword [0x6941dc]
fmul dword [edi + 0x20]
mov eax, dword [esp + 8]
fstp st(3)
fld st(4)
fmul dword [eax + 4]
fld dword [esp + 0x40]
fmul dword [eax]
faddp st(1)
fld st(4)
fmul dword [eax + 8]
faddp st(1)
fabs
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp st(5)
fld st(4)
fcomp st(3)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x524900
fld dword [0x6941d4]
mov dword [esp + 0x24], 0x28
fmul dword [ebp + 0x78]
fstp st(4)
fld dword [0x6941d4]
fmul dword [ebp + 0x74]
fstp st(5)
fld dword [0x6941d4]
fmul dword [ebp + 0x70]
fstp dword [ebx + 0x70]
fld st(4)
fstp dword [ebx + 0x74]
fld st(3)
fstp dword [ebx + 0x78]
mov dword [ebx + 0x78], 0
cmp dword [esp + 0x14], 1
je 0x524136
cmp dword [esp + 0x14], 3
jne 0x52413e
mov dword [esp + 0x14], 2
cmp byte [0x68dd68], 0
je 0x524910
jmp 0x524563
fld dword [esp + 0x2c]
fcomp dword [0x694194]
fnstsw ax
test ah, 0x45
jne 0x524168
cmp byte [esp + 0x20], 1
ja 0x524173
cmp byte [esp + 0x20], 0
jne 0x524500
mov byte [esp + 0x1c], 1
mov eax, dword [esp + 8]
fld dword [edi + 0x20]
fstp st(5)
fld st(4)
fstp st(3)
fld dword [edi + 0x14]
fstp st(2)
fld dword [edi + 0x24]
fstp st(4)
fld dword [eax + 8]
fst st(1)
fcomp dword [0x6941e0]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5241d6
fld st(1)
mov eax, dword [esp + 8]
fmul dword [eax + 8]
mov eax, dword [esp + 0xc]
fstp st(5)
fld st(3)
fmul dword [eax + 8]
mov eax, dword [esp + 0x18]
fstp st(4)
fld dword [eax + 8]
fadd st(4)
fstp st(4)
fld st(3)
fadd st(5)
fstp st(4)
fld st(1)
fchs
fadd st(3)
jmp 0x52426c
fcom dword [0x694194]
fnstsw ax
test ah, 0x45
jne 0x524250
fld st(2)
mov eax, dword [esp + 8]
fmul dword [eax + 8]
mov eax, dword [esp + 0xc]
fstp st(5)
fld st(3)
fmul dword [eax + 8]
mov eax, dword [esp + 0x18]
fstp st(4)
fld dword [eax + 8]
fadd st(4)
fstp st(4)
mov eax, dword [esp + 0x10]
fld st(3)
fadd st(5)
fstp st(2)
fld st(1)
fstp st(4)
fld st(2)
fstp st(5)
fld st(1)
fsub dword [eax + 8]
fstp st(3)
fld st(2)
fcomp dword [0x69414c]
fnstsw ax
test ah, 0x45
jne 0x52426e
fld dword [0x694180]
fmul st(3)
fadd dword [ebx + 0x3c]
fstp dword [ebx + 0x3c]
mov eax, dword [esp + 0x10]
fld st(1)
fsub dword [eax + 8]
fmul dword [0x69418c]
faddp st(4)
jmp 0x52426e
fld st(3)
mov eax, dword [esp + 0xc]
fmul dword [eax + 8]
mov eax, dword [esp + 0x18]
fstp st(4)
fld dword [eax + 8]
fadd st(4)
fstp st(4)
fld st(3)
fstp st(4)
fld st(4)
fstp st(5)
fld dword [ebp + 0x74]
fstp st(3)
fld st(2)
fmul st(0)
fld dword [ebp + 0x70]
fstp st(4)
fld st(3)
fmul st(0)
faddp st(1)
fld dword [ebp + 0x78]
fstp st(4)
fld st(3)
fmul st(0)
faddp st(1)
fstp st(3)
fld st(2)
fsqrt
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
mov eax, dword [esp + 0x10]
fstp st(3)
fld st(3)
fsub dword [eax + 8]
fld st(5)
fdiv st(4)
fdivp st(1)
fstp dword [esp + 0x30]
fcompp
fcompp
fstp st(0)
call fcn.00649a40
movzx eax, ax
and eax, 0xff
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fmul qword [0x6941e8]
fadd qword [0x694168]
fmul dword [esp + 0x30]
fstp dword [esp + 0x38]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], eax
fld dword [ebp + 0x70]
fstp dword [esp + 0x40]
fld dword [ebp + 0x74]
fstp dword [esp + 0x44]
fld dword [ebp + 0x78]
lea ecx, [esp + 0x40]
fstp dword [esp + 0x48]
call fcn.004dfec0
fldz
fldz
fldz
fld dword [0x6941f0]
fmul dword [esp + 0x34]
cmp dword [esp + 0x14], 1
fst st(1)
fmul dword [esp + 0x48]
fstp st(2)
fld st(0)
fmul dword [esp + 0x44]
fstp st(3)
fld st(0)
fmul dword [esp + 0x40]
fstp dword [esp + 0x40]
fld st(2)
fstp dword [esp + 0x44]
fld st(1)
fstp dword [esp + 0x48]
je 0x524349
cmp dword [esp + 0x14], 3
jne 0x524360
fld dword [0x6941f4]
fmul dword [esp + 0x34]
fadd dword [esp + 0x48]
jmp 0x524368
fld dword [esp + 0x48]
fadd dword [esp + 0x34]
fstp dword [esp + 0x48]
fld dword [esp + 0x40]
fstp dword [ebx + 0x70]
fld dword [esp + 0x44]
fstp dword [ebx + 0x74]
fld dword [esp + 0x48]
fstp dword [ebx + 0x78]
add dword [esp + 0x14], 2
cmp dword [esp + 0x14], 3
jle 0x524392
sub dword [esp + 0x14], 4
cmp dword [ebp + 0x29c], 0
jne 0x5248d0
fcompp
mov ecx, ebp
fstp st(0)
call fcn.00592bc0
mov esi, eax
test esi, esi
je 0x5248d7
call fcn.00649a40
movzx eax, ax
fldz
fldz
and eax, 1
je 0x524415
fld dword [0x694180]
mov ecx, dword [esp + 0xc]
lea edx, [ebp + 4]
fmul dword [ecx + 8]
fld dword [0x694194]
fmul dword [edx + 8]
lea edi, [ebx + 0x70]
fadd dword [edi + 8]
faddp st(1)
fstp st(1)
fld dword [0x694180]
fmul dword [ecx + 4]
fld dword [0x694194]
fmul dword [edx + 4]
fadd dword [edi + 4]
faddp st(1)
fstp st(2)
fld dword [0x694180]
fmul dword [ecx]
fld dword [0x694194]
fmul dword [edx]
fadd dword [edi]
jmp 0x524463
fld dword [0x694180]
mov ecx, dword [esp + 0xc]
lea edx, [ebp + 4]
fmul dword [ecx + 8]
fld dword [0x694194]
fmul dword [edx + 8]
lea edi, [ebx + 0x70]
fsubr dword [edi + 8]
faddp st(1)
fstp st(1)
fld dword [0x694180]
fmul dword [ecx + 4]
fld dword [0x694194]
fmul dword [edx + 4]
fsubr dword [edi + 4]
faddp st(1)
fstp st(2)
fld dword [0x694180]
fmul dword [ecx]
fld dword [0x694194]
fmul dword [edx]
fsubr dword [edi]
faddp st(1)
fstp dword [esi + 0x70]
fld st(1)
fstp dword [esi + 0x74]
fst dword [esi + 0x78]
mov eax, dword [esp + 8]
mov ecx, esi
fld dword [0x6941f8]
push dword [eax + 8]
push dword [eax + 4]
push dword [eax]
mov eax, dword [esp + 0x18]
fmul dword [eax + 8]
push eax
fstp dword [esp]
mov eax, dword [esp + 0x1c]
fld dword [0x6941f8]
fmul dword [eax + 4]
push eax
fstp dword [esp]
mov eax, dword [esp + 0x20]
fld dword [0x6941f8]
fmul dword [eax]
push eax
fstp dword [esp]
fcompp
call fcn.004bace0
fldz
fldz
mov eax, dword [esp + 0x10]
fld dword [eax + 8]
mov eax, dword [esp + 0x18]
fsub dword [eax + 8]
mov eax, dword [esp + 0x10]
fstp st(1)
fld dword [eax + 4]
mov eax, dword [esp + 0x18]
fsub dword [eax + 4]
mov eax, dword [esp + 0x10]
fstp st(2)
fld dword [eax]
mov eax, dword [esp + 0x18]
fsub dword [eax]
fstp dword [esp + 0x40]
fld st(1)
fstp dword [esp + 0x44]
fst dword [esp + 0x48]
jmp 0x524920
fld dword [0x6941d4]
mov dword [esp + 0x24], 0x28
mov byte [esp + 0x1c], 2
fmul dword [ebp + 0x78]
fstp st(4)
fld dword [0x6941d4]
fmul dword [ebp + 0x74]
fstp st(5)
fld dword [0x6941d4]
fmul dword [ebp + 0x70]
fstp dword [ebx + 0x70]
fld st(4)
fstp dword [ebx + 0x74]
fld st(3)
fstp dword [ebx + 0x78]
mov dword [ebx + 0x78], 0
cmp dword [esp + 0x14], 1
je 0x52454e
cmp dword [esp + 0x14], 3
jne 0x524556
mov dword [esp + 0x14], 2
cmp byte [0x68dd68], 0
je 0x524927
fcompp
fcompp
mov eax, dword [ebp + 0x64]
mov ecx, 0xa10b93
push dword [0x69414c]
push 0xa5
push eax
fstp st(0)
call fcn.005f9dc0
mov eax, dword [ebp + 0x1a8]
test eax, eax
je 0x5245b5
cmp dword [ebx + 0x3d4], 6
jne 0x5245a2
push 0x3e8
push eax
push ebx
push 1
push 0xa
jmp 0x5245ad
push 0x3e8
push eax
push ebx
push 1
push 9
call fcn.0048a0e0
add esp, 0x14
movzx eax, byte [esp + 0x1c]
dec eax
cmp eax, 3
ja case.0x5245c0.1
jmp dword [eax*4 + 0x694358]
push dword [esp + 0x14]
push 3
jmp 0x5245e8
mov al, byte [esp + 0x14]
push eax
push 2
jmp 0x5245e8
mov al, byte [esp + 0x14]
push eax
push 6
jmp 0x5245e8
mov al, byte [esp + 0x14]
push eax
push 1
mov ecx, ebx
push dword [0x6941fc]
push dword [esp + 0x30]
push ebp
call fcn.00525b40
mov eax, dword [ebx + 0x244]
cmp eax, 0x36
je 0x52460a
cmp eax, 0x37
jne 0x524626
mov al, byte [ebx + 0x14f]
shr al, 4
and al, 1
je 0x524626
cmp dword [ebx + 0x3f8], 0
jne 0x524626
mov dword [ebx + 0x3f8], ebp
cmp byte [esp + 0x1c], 1
jne 0x524640
mov al, byte [ebx + 0x153]
and al, 0xfe
or al, 1
jmp 0x524648
mov al, byte [ebx + 0x153]
and al, 0xfe
mov byte [ebx + 0x153], al
lea ecx, [esp + 0x40]
call fcn.004dfec0
fldz
fld dword [ebp + 0xb8]
fmul dword [0x694200]
fstp st(1)
fld dword [0x694148]
fcomp st(1)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x524681
fld dword [0x694148]
fstp st(1)
fld dword [0x694204]
jmp 0x52485f
fld dword [ebx + 0x114]
fcomp dword [0x694208]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5246ba
fld dword [esp + 0x80]
fcomp dword [0x69420c]
fnstsw ax
test ah, 0x45
je 0x5246f5
fld dword [esp + 0x80]
fcomp dword [0x6941b0]
fnstsw ax
test ah, 0x45
jne 0x524894
mov ecx, ebx
call fcn.004f4950
test al, al
je 0x5246f5
fld dword [esp + 0x80]
fcomp dword [0x6941f8]
fnstsw ax
test ah, 0x45
jne 0x524894
mov al, byte [ebx + 0x14c]
mov ecx, ebx
and al, 0xfe
mov byte [ebx + 0x14c], al
fldz
fld dword [ebp + 0x74]
fchs
fstp st(1)
fld dword [ebp + 0x70]
fchs
fstp dword [esp + 0x54]
lea eax, [esp + 0x54]
push eax
fst dword [esp + 0x5c]
fstp st(0)
call fcn.00503610
mov ecx, ebx
mov dword [esp], eax
call fcn.004f4950
test al, al
je 0x524750
movsx eax, word [ebp + 0x5c]
cmp eax, 0xffffffff
jne 0x524750
mov al, byte [esp]
push eax
push 0
push dword [0x694210]
jmp 0x52475c
mov al, byte [esp]
push eax
push 0
push dword [0x694214]
mov ecx, ebx
push 0x27
push ebp
call fcn.00525b40
mov ecx, ebx
add dword [esp], 0x19
push 1
push dword [esp + 4]
push 0x3e8
call fcn.004fda10
mov eax, dword [ebx + 0x244]
cmp eax, 0x2a
je 0x524791
cmp eax, 0x36
je 0x524791
cmp eax, 0x37
jne 0x5247d1
cmp dword [ebx + 0x3f8], 0
jne 0x5247d1
mov ecx, ebx
call fcn.004f4950
test al, al
je 0x5247cb
mov al, byte [ebx + 0x54]
and al, 1
jne 0x5247cb
movsx eax, word [ebp + 0x5c]
cmp eax, 0xffffffff
je 0x5247cb
fld dword [ebx + 0x114]
fcomp dword [0x694208]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5247d1
mov dword [ebx + 0x3f8], ebp
mov al, byte [ebx + 0x153]
and al, 0xfe
mov byte [ebx + 0x153], al
movsx eax, word [ebp + 0x5c]
fldz
fldz
cmp eax, 0xffffffff
je 0x52481d
mov al, byte [ebx + 0x54]
and al, 1
jne 0x52481d
fld dword [0x694218]
fmul dword [ebp + 0x78]
fstp st(1)
fld dword [0x694218]
fmul dword [ebp + 0x74]
fstp st(2)
fld dword [0x694218]
fmul dword [ebp + 0x70]
fstp dword [ebx + 0x70]
fld st(1)
fstp dword [ebx + 0x74]
fst dword [ebx + 0x78]
fcompp
mov dword [ebx + 0x78], 0
lea ecx, [esp + 0x40]
call fcn.004dfec0
fldz
fld dword [ebp + 0xb8]
fmul dword [0x694200]
fstp st(1)
fld dword [0x694148]
fcomp st(1)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x524859
fld dword [0x694148]
fstp st(1)
fld dword [0x69421c]
fmul st(1)
fst st(1)
fmul dword [esp + 0x48]
push eax
mov ecx, ebp
fstp dword [esp]
fld st(0)
fmul dword [esp + 0x48]
push eax
fstp dword [esp]
fld st(0)
fmul dword [esp + 0x48]
push eax
fstp dword [esp]
fstp st(0)
call fcn.004bade0
mov ecx, ebx
push 0x8b
call fcn.005226d0
mov ecx, ebx
call fcn.004f4930
test al, al
je 0x5248c0
mov ecx, dword [ebp + 0x1a8]
test ecx, ecx
je 0x5248c0
call fcn.004f4950
test al, al
je 0x5248c0
mov eax, dword [ebp + 0x1a8]
mov ecx, ebx
push eax
call fcn.00514380
add esp, 0x68
pop ebp
pop edi
pop esi
pop ebx
ret 8
fstp st(0)
jmp 0x5244bb
fldz
fldz
jmp 0x5244bb
fcompp
fcompp
fstp st(0)
jmp 0x524582
fcompp
fcompp
fstp st(0)
jmp 0x524582
fcompp
fcompp
fstp st(0)
jmp 0x524582
fcompp
fcompp
fstp st(0)
jmp 0x524582
fcompp
jmp 0x524582
fcompp
fcompp
fstp st(0)
jmp 0x524582