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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x178
push ebx
push ebp
push esi
push edi
mov ebx, ecx
call fcn.00551e30
test eax, eax
je 0x552dd9
mov edi, dword [ebx + 0x68]
xor ebp, ebp
mov ecx, edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebp
call fcn.00549640
test eax, eax
jbe 0x552dd9
mov dword [esp + 0x34], ebp
nop
mov ecx, dword [ebx + 0x60]
sub ecx, dword [ebx + 0x5c]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x5524d2
call fcn.005a01dd
mov esi, dword [ebx + 0x5c]
add esi, dword [esp + 0x34]
lea ecx, [ebx + 0x2c]
mov dword [esp + 0x18], esi
call fcn.0055acb0
movzx ecx, al
push ecx
mov ecx, esi
call fcn.0055db00
test eax, eax
je 0x552dc0
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.00549740
fldz
sub eax, 1
fst dword [esp + 0xa8]
fst dword [esp + 0xa4]
fst dword [esp + 0xa0]
fst dword [esp + 0x9c]
fst dword [esp + 0x94]
fst dword [esp + 0x90]
fst dword [esp + 0x8c]
fst dword [esp + 0x88]
fst dword [esp + 0x80]
fst dword [esp + 0x7c]
fst dword [esp + 0x78]
fst dword [esp + 0x74]
fld1
fst dword [esp + 0xac]
fst dword [esp + 0x98]
fst dword [esp + 0x84]
fst dword [esp + 0x70]
je 0x55274b
sub eax, 1
je 0x552690
sub eax, 1
fstp st(1)
fstp st(0)
jne 0x5527a4
fld dword [ebx + 0xc]
lea edx, [esp + 0x38]
push edx
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp]
call fcn.0055b040
fld dword [ebx + 0xc]
mov ecx, dword [0x67d56c]
fstp qword [esp + 0x28]
lea eax, [esp + 0x108]
push eax
call fcn.00519590
fsubr qword [esp + 0x2c]
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp dword [esp]
call fcn.0055b040
fld dword [esp + 0x38]
fsub dword [esp + 0x108]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fsub dword [esp + 0x10c]
fstp dword [esp + 0x3c]
fld dword [esp + 0x40]
fsub dword [esp + 0x110]
fstp dword [esp + 0x40]
fld dword [esp + 0x3c]
fld dword [esp + 0x38]
fld dword [esp + 0x40]
fld st(2)
fmulp st(3)
fld st(1)
fmulp st(2)
fxch st(2)
faddp st(1)
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
fcomp dword [0x6104a4]
fnstsw ax
test ah, 0x41
jne 0x5527a4
lea ecx, [esp + 0x38]
push ecx
mov edx, ecx
push edx
call fcn.005679bf
fldz
fst dword [esp + 0xfc]
lea eax, [esp + 0x38]
fld dword [0x5fe558]
push eax
lea ecx, [esp + 0x100]
fstp dword [esp + 0x104]
push ecx
lea edx, [esp + 0x138]
push edx
fstp dword [esp + 0x110]
call fcn.004e3060
add esp, 0xc
lea eax, [esp + 0x130]
push eax
lea ecx, [esp + 0x74]
push ecx
call fcn.00568fa2
jmp 0x5527a4
fxch st(1)
fst dword [esp + 0xf0]
fst dword [esp + 0xec]
fst dword [esp + 0xe8]
fst dword [esp + 0xe4]
fst dword [esp + 0xdc]
fst dword [esp + 0xd8]
fst dword [esp + 0xd4]
fst dword [esp + 0xd0]
fst dword [esp + 0xc8]
fst dword [esp + 0xc4]
fst dword [esp + 0xc0]
fstp dword [esp + 0xbc]
fst dword [esp + 0xf4]
fst dword [esp + 0xe0]
fst dword [esp + 0xcc]
fstp dword [esp + 0xb8]
call fcn.004efc50
push eax
push 0
lea edx, [esp + 0xc0]
push edx
call fcn.005687e9
fld dword [esp + 0xb8]
fstp dword [esp + 0x70]
fld dword [esp + 0xbc]
fstp dword [esp + 0x74]
fld dword [esp + 0xc8]
fstp dword [esp + 0x80]
fld dword [esp + 0xcc]
fstp dword [esp + 0x84]
jmp 0x5527a4
fstp st(1)
push ecx
fstp st(0)
lea eax, [esp + 0xbc]
fld dword [0x6031f4]
fstp dword [esp]
push eax
call fcn.00568cb8
call fcn.004efc50
push eax
push 0
lea ecx, [esp + 0x78]
push ecx
call fcn.005687e9
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0xbc]
push eax
lea ecx, [esp + 0x150]
push ecx
call fcn.005682dd
mov ecx, 0x10
lea esi, [esp + 0x148]
lea edi, [esp + 0x70]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.00549790
test eax, eax
jne 0x5527b6
push eax
push 0x1b
jmp 0x5527ee
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.005497e0
mov ecx, dword [ebx + 0x24]
push ebp
movzx esi, al
call fcn.00549830
mov ecx, dword [0x67ace0]
push 1
push 0x1b
movzx edi, al
call fcn.004ea990
mov ecx, dword [0x67ace0]
push esi
push 0x13
call fcn.004ea990
push edi
push 0x14
mov ecx, dword [0x67ace0]
call fcn.004ea990
fld dword [ebx + 0xc]
lea edx, [esp + 0x114]
push edx
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp]
call fcn.0055b040
fld dword [esp + 0x114]
mov eax, dword [ebx + 4]
fstp dword [esp + 0xa0]
fld dword [esp + 0x118]
push eax
lea ecx, [esp + 0x74]
fstp dword [esp + 0xa8]
fld dword [esp + 0x120]
push ecx
lea edx, [esp + 0x150]
fstp dword [esp + 0xb0]
push edx
call fcn.005682dd
lea eax, [esp + 0x70]
mov ecx, 0x10
lea esi, [esp + 0x148]
lea edi, [esp + 0x70]
push eax
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x67ace0]
push 0x100
call fcn.004eb1a0
lea ecx, [esp + 0x27]
fld1
push ecx
mov ecx, dword [ebx + 0x24]
fst dword [esp + 0x60]
fst dword [esp + 0x64]
push ebp
fst dword [esp + 0x6c]
fstp dword [esp + 0x70]
call fcn.00549880
test eax, eax
je 0x5528b0
movzx edx, byte [esp + 0x27]
mov ecx, dword [0x67ace0]
push edx
push 1
push 0
call fcn.004eaa10
mov ecx, dword [ebx + 0x24]
lea eax, [esp + 0x5c]
push eax
push ebp
call fcn.005498e0
fld1
lea ecx, [esp + 0x6c]
fstp dword [esp + 0x10]
push ecx
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.00549950
test eax, eax
je 0x552ae4
mov esi, dword [esp + 0x6c]
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], ecx
sub ecx, eax
test ecx, 0xfffffff8
je 0x552ae4
fld dword [ebx + 0xc]
fstp dword [esp + 0x10]
cmp eax, dword [esp + 0x28]
jbe 0x552908
call fcn.005a01dd
mov ebp, dword [esi + 0xc]
mov edx, dword [esi]
mov dword [esp + 0x120], edx
cmp ebp, dword [esi + 0x10]
jbe 0x55291e
call fcn.005a01dd
mov edi, dword [esi]
mov dword [esp + 0xb0], edi
mov dword [esp + 0xb4], ebp
test edi, edi
jne 0x552949
call fcn.005a01dd
xor eax, eax
add ebp, 8
cmp ebp, dword [eax + 0x10]
ja 0x552954
test edi, edi
je 0x55294d
mov edi, dword [edi]
jmp 0x55294f
mov eax, dword [edi]
jmp 0x552939
xor edi, edi
cmp ebp, dword [edi + 0xc]
jae 0x552959
call fcn.005a01dd
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x55296d
cmp eax, dword [esp + 0x120]
je 0x552972
call fcn.005a01dd
mov edi, dword [esi + 0xc]
cmp ebp, dword [esp + 0x28]
jne 0x5529a6
cmp edi, dword [esi + 0x10]
jbe 0x552985
call fcn.005a01dd
mov esi, dword [esi]
test esi, esi
jne 0x5529a2
call fcn.005a01dd
cmp edi, dword [esi + 0x10]
jb 0x55299a
call fcn.005a01dd
fld dword [edi + 4]
jmp 0x552ae0
mov esi, dword [esi]
jmp 0x552990
cmp edi, dword [esi + 0x10]
jbe 0x5529b0
call fcn.005a01dd
mov eax, dword [esi]
test eax, eax
jne 0x5529e5
call fcn.005a01dd
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x5529c7
call fcn.005a01dd
fld dword [esp + 0x10]
mov ecx, esi
fld dword [edi]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5529e9
call fcn.0055af60
fld dword [eax + 4]
jmp 0x552ae0
mov eax, dword [eax]
jmp 0x5529bd
call fcn.005521c0
fld dword [esp + 0x10]
fld dword [eax]
mov ecx, esi
fcompp
fnstsw ax
test ah, 5
jp 0x552a0c
call fcn.005521c0
fld dword [eax + 4]
jmp 0x552ae0
lea eax, [esp + 0x128]
push eax
call fcn.004ad630
lea ecx, [esp + 0x140]
push ecx
mov ecx, esi
mov edi, eax
call fcn.00535850
mov ecx, dword [edi + 4]
lea edx, [esp + 0x10]
push edx
mov edx, dword [edi]
push ecx
mov ecx, dword [eax + 4]
push edx
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x60]
push eax
call fcn.005523e0
add esp, 0x18
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x50]
call fcn.005499c0
lea ecx, [esp + 0x4c]
test al, al
je 0x552a6a
call fcn.00556560
fld dword [eax + 4]
jmp 0x552ae0
call fcn.00551fe0
lea ecx, [esp + 0x54]
call fcn.00556560
fld dword [eax]
fsub dword [esp + 0x10]
lea ecx, [esp + 0x54]
fstp qword [esp + 0x10]
call fcn.00556560
fld dword [eax]
lea ecx, [esp + 0x4c]
fstp qword [esp + 0x28]
call fcn.00556560
fld dword [eax]
lea ecx, [esp + 0x4c]
fsubr qword [esp + 0x28]
fdivr qword [esp + 0x10]
fstp dword [esp + 0x28]
call fcn.00556560
fld dword [eax + 4]
lea ecx, [esp + 0x54]
fstp qword [esp + 0x10]
call fcn.00556560
fld dword [eax + 4]
fsubr qword [esp + 0x10]
lea ecx, [esp + 0x54]
fmul dword [esp + 0x28]
fstp qword [esp + 0x28]
call fcn.00556560
fld dword [eax + 4]
fadd qword [esp + 0x28]
fstp dword [esp + 0x10]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebp
call fcn.00549650
lea ecx, [ebx + 0x2c]
mov edi, eax
call fcn.0055acb0
mov ecx, dword [edi + 0xb0]
sub ecx, dword [edi + 0xac]
movzx esi, al
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jb 0x552b25
call fcn.005a01dd
mov ecx, dword [esp + 0x18]
imul esi, esi, 0x2c
add esi, dword [edi + 0xac]
call fcn.0055acb0
mov ecx, dword [ebx + 0x60]
sub ecx, dword [ebx + 0x5c]
movzx edi, al
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebp, ecx
jb 0x552b5c
call fcn.005a01dd
mov edx, dword [ebx + 0x5c]
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + edx + 0x34]
sub ecx, dword [eax + edx + 0x30]
lea eax, [eax + edx + 0x24]
sar ecx, 2
cmp edi, ecx
jae 0x552bda
mov ecx, dword [ebx + 0x60]
sub ecx, edx
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x552b97
call fcn.005a01dd
mov ecx, dword [ebx + 0x5c]
mov edx, dword [esp + 0x34]
mov eax, dword [edx + ecx + 0x34]
sub eax, dword [edx + ecx + 0x30]
lea ebp, [edx + ecx + 0x24]
sar eax, 2
cmp edi, eax
jb 0x552bb6
call fcn.005a01dd
mov ecx, dword [ebp + 0xc]
mov edi, dword [ecx + edi*4]
mov ebp, dword [0x67ace0]
mov ecx, edi
call fcn.004f8940
mov ecx, eax
call fcn.00429920
push eax
push 0
mov ecx, ebp
call fcn.004ea9d0
fld dword [esi + 4]
fmul dword [esp + 0x10]
fstp dword [esp + 0x68]
fld1
fld dword [esp + 0x5c]
fcom st(1)
fnstsw ax
test ah, 1
jne 0x552c0b
fstp st(0)
mov edi, 0xff
fld qword [0x5fe2b8]
fld qword [0x5fe2c0]
fldz
jmp 0x552c62
fldz
fcom st(1)
fnstsw ax
test ah, 1
jne 0x552c2c
fstp st(1)
xor edi, edi
fld qword [0x5fe2b8]
fld qword [0x5fe2c0]
fxch st(1)
fxch st(2)
jmp 0x552c62
fld qword [0x5fe2c0]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2), st(0)
or eax, 0xc00
fld qword [0x5fe2b8]
mov dword [esp + 0x18], eax
fadd st(3), st(0)
fldcw word [esp + 0x18]
fxch st(3)
fistp qword [esp + 0x18]
mov edi, dword [esp + 0x18]
fldcw word [esp + 0x10]
fxch st(1)
fld dword [esp + 0x60]
fcom st(4)
fnstsw ax
test ah, 1
jne 0x552c78
fstp st(0)
mov edx, 0xff
jmp 0x552cad
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x552c87
fstp st(0)
xor edx, edx
jmp 0x552cad
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
fadd st(3)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov edx, dword [esp + 0x18]
fldcw word [esp + 0x10]
fld dword [esp + 0x64]
fcom st(4)
fnstsw ax
test ah, 1
jne 0x552cc3
fstp st(0)
mov ecx, 0xff
jmp 0x552cf8
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x552cd2
fstp st(0)
xor ecx, ecx
jmp 0x552cf8
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
fadd st(3)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov ecx, dword [esp + 0x18]
fldcw word [esp + 0x10]
fld dword [esp + 0x68]
fcom st(4)
fnstsw ax
fstp st(4)
test ah, 1
jne 0x552d16
fstp st(3)
mov eax, 0xff
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x552d4f
fcomp st(3)
fnstsw ax
test ah, 1
jne 0x552d29
fstp st(2)
xor eax, eax
fstp st(1)
fstp st(0)
jmp 0x552d4f
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmulp st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
faddp st(1)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
fldcw word [esp + 0x10]
shl eax, 8
or eax, edi
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
mov ecx, dword [0x67ace0]
push eax
push 0x3c
call fcn.004ea990
mov ecx, dword [0x67ace0]
push 0x102
call fcn.004eaa60
mov ecx, dword [esi + 0x24]
sub ecx, dword [esi + 0x20]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x552d9a
call fcn.005a01dd
mov ecx, dword [esi + 0x20]
mov eax, 0xaaaaaaab
mul dword [esi + 0x10]
push 0x14
push ecx
mov ecx, dword [0x67ace0]
shr edx, 1
push edx
push 4
call fcn.004eac70
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
add dword [esp + 0x34], 0x3c
inc ebp
mov ecx, edi
mov dword [esp + 0x44], ebp
call fcn.00549640
cmp ebp, eax
jb 0x5524b0
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret