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

Disassembly:
sub esp, 0xfc
push ebx
mov ebx, dword [esp + 0x104]
push ebp
mov ebp, dword [esp + 0x110]
push edi
mov edi, dword [ebx*4 + 0x902a38]
test edi, edi
je 0x4548c7
push 0x7c
lea eax, [esp + 0x8c]
push 0
push eax
call fcn.00487bc0
add esp, 0xc
push 0
push 0
lea edx, [esp + 0x90]
push edx
mov dword [esp + 0x94], 0x7c
mov ecx, dword [edi]
mov eax, dword [ecx + 0x64]
push 0
push edi
call eax
test eax, eax
jne 0x4548c7
mov eax, dword [esp + 0x90]
cmp eax, 3
jb 0x4548b3
mov ecx, dword [esp + 0x98]
imul ecx, eax
push ecx
call fcn.00483cf2
mov ebx, eax
add esp, 4
mov dword [esp + 0x6c], ebx
test ebx, ebx
jne 0x454293
mov edx, dword [esp + 0x10c]
mov eax, dword [edx*4 + 0x902a38]
jmp 0x4548ba
mov eax, dword [esp + 0x98]
imul eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xac]
push eax
push ecx
push ebx
call fcn.00487c40
mov ecx, dword [esp + 0xb8]
add esp, 0xc
cmp dword [esp + 0x90], 0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], 0
jle 0x454880
mov eax, dword [esp + 0x94]
xor edi, edi
test eax, eax
jle 0x45485b
fild dword [esp + 0x110]
add ecx, 2
mov dword [esp + 0x4c], ecx
fstp qword [esp + 0x58]
mov ecx, dword [esp + 0x98]
lea edx, [esp + 0x28]
push edx
mov edx, dword [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x28]
push edx
push eax
mov eax, dword [esp + 0xbc]
push ebp
push eax
push ecx
push edi
call fcn.004548e0
fild dword [esi + 0x20]
fild dword [esi + 0x1c]
movzx edx, byte [esp + 0x4a]
fild dword [esi + 0x18]
movzx eax, byte [esp + 0x4e]
fild dword [esi + 0x14]
fild dword [esi + 0x10]
movzx ecx, byte [esp + 0x52]
fstp qword [esp + 0x80]
fild dword [esi + 0xc]
mov dword [esp + 0x2c], edx
movzx edx, byte [esp + 0x56]
fstp qword [esp + 0x70]
fild dword [esi + 8]
add esp, 0x20
fstp qword [esp + 0x10]
fild dword [esi + 4]
fst qword [esp + 0x70]
fild dword [esi]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x3a]
fmul st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x3e]
fmulp st(3)
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x42]
fmul qword [esp + 0x10]
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x46]
fmul qword [esp + 0x50]
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x4a]
fmul qword [esp + 0x60]
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x29]
fmul st(3)
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x2d]
fmul st(4)
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
fmul st(5)
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
fmul st(6)
faddp st(2)
fxch st(1)
fdiv qword [esp + 0x58]
fstp qword [esp + 0x78]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
fmul st(1)
fild dword [esp + 0xc]
movzx ecx, byte [esp + 0x31]
movzx edx, byte [esp + 0x35]
fmul qword [esp + 0x70]
movzx eax, byte [esp + 0x39]
faddp st(1)
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x3d]
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x41]
fmul qword [esp + 0x10]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x45]
fmul qword [esp + 0x50]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x49]
fmul qword [esp + 0x60]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x28]
fmul st(3)
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x2c]
fmul st(4)
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x30]
fmul st(5)
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x34]
fmul st(6)
faddp st(1)
fdiv qword [esp + 0x58]
fstp qword [esp + 0x80]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x38]
fmul st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x3c]
fmul qword [esp + 0x70]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x40]
fmul qword [esp + 0x10]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x44]
fmul qword [esp + 0x50]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
fmul qword [esp + 0x60]
faddp st(1)
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
fmulp st(3)
faddp st(2)
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
fmulp st(3)
fxch st(1)
faddp st(2)
fild dword [esp + 0xc]
fmulp st(3)
fxch st(1)
faddp st(2)
movzx ecx, byte [esp + 0x48]
mov dword [esp + 0xc], ecx
fild dword [esp + 0xc]
fmulp st(3)
fxch st(1)
faddp st(2)
fld qword [esp + 0x58]
fdiv st(2), st(0)
test ebp, ebp
je 0x454644
movzx edx, byte [esp + 0x47]
fild dword [esi + 0x1c]
movzx eax, byte [esp + 0x43]
movzx ecx, byte [esp + 0x3f]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x3b]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x37]
fmulp st(1)
fild dword [esi + 0x18]
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x33]
fmulp st(1)
faddp st(1)
fild dword [esi + 0x14]
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, byte [esp + 0x2f]
fmulp st(1)
faddp st(1)
fild dword [esi + 0x10]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x4b]
fmulp st(1)
faddp st(1)
fild dword [esi + 0xc]
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
movzx ecx, byte [esp + 0x2b]
fmulp st(1)
faddp st(1)
fild dword [esi + 8]
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
fmulp st(1)
faddp st(1)
fild dword [esi + 4]
fild dword [esp + 0xc]
mov dword [esp + 0xc], eax
fmulp st(1)
faddp st(1)
fild dword [esi + 0x20]
fild dword [esp + 0xc]
mov dword [esp + 0xc], ecx
fmulp st(1)
faddp st(1)
fild dword [esp + 0xc]
fmulp st(3)
faddp st(2)
fdivp st(1)
fld qword [0x4d68b0]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x45461e
fstp st(1)
fld st(0)
fldz
jmp 0x454631
fldz
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x454654
fstp st(2)
fld st(1)
fxch st(1)
fxch st(2)
fld qword [esp + 0x78]
fcom st(3)
fnstsw ax
test ah, 0x41
jne 0x45465c
fstp st(0)
fld st(2)
jmp 0x454669
fstp st(1)
fstp st(0)
fldz
fld st(0)
fld qword [0x4d68b0]
jmp 0x45462f
fxch st(1)
fxch st(2)
fxch st(1)
jmp 0x454631
fcom st(1)
fnstsw ax
test ah, 5
jp 0x454669
fstp st(0)
fld st(0)
fld qword [esp + 0x80]
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x45467f
fstp st(0)
fld st(3)
jmp 0x45468c
fcom st(2)
fnstsw ax
test ah, 5
jp 0x45468c
fstp st(0)
fld st(1)
fxch st(5)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x45469d
fstp st(2)
fstp st(1)
jmp 0x4546b2
fstp st(4)
fxch st(3)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x4546ae
fstp st(0)
jmp 0x4546b0
fstp st(1)
fxch st(2)
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x10]
mov dl, byte [esp + 0x10]
fldcw word [esp + 0xc]
fnstcw word [esp + 0xc]
fxch st(2)
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x10]
mov bl, byte [esp + 0x10]
fldcw word [esp + 0xc]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x10]
mov cl, byte [esp + 0x10]
mov byte [esp + 0x1f], cl
fldcw word [esp + 0xc]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov dword [esp + 0x10], eax
fldcw word [esp + 0x10]
fistp dword [esp + 0x10]
mov al, byte [esp + 0x10]
fldcw word [esp + 0xc]
mov byte [esp + 0xc], al
mov eax, dword [0x904a44]
cmp eax, 0x10
je 0x4547d2
cmp eax, 0x18
je 0x454794
cmp eax, 0x20
jne 0x454829
movzx eax, cl
movzx ecx, byte [0x902a24]
shl eax, cl
movzx ecx, byte [0x902a25]
movzx ebx, bl
shl ebx, cl
movzx ecx, byte [0x902a26]
movzx edx, dl
shl edx, cl
mov ecx, dword [esp + 0x24]
or eax, ebx
or eax, edx
mov dword [ecx + edi*4], eax
jmp 0x454829
movzx eax, cl
movzx ecx, byte [0x902a24]
shl eax, cl
movzx ecx, byte [0x902a25]
movzx ebx, bl
shl ebx, cl
movzx ecx, byte [0x902a26]
movzx edx, dl
shl edx, cl
mov ecx, dword [esp + 0x4c]
or eax, ebx
or eax, edx
mov edx, eax
shr edx, 8
mov byte [ecx - 2], al
shr eax, 0x10
mov byte [ecx - 1], dl
mov byte [ecx], al
jmp 0x454829
movzx ecx, byte [0x902a20]
mov al, byte [esp + 0x1f]
shr al, cl
movzx ecx, byte [0x902a24]
movzx ax, al
shl ax, cl
movzx ecx, byte [0x902a21]
shr bl, cl
movzx ecx, byte [0x902a25]
movzx bx, bl
shl bx, cl
movzx ecx, byte [0x902a22]
shr dl, cl
movzx ecx, byte [0x902a26]
movzx dx, dl
shl dx, cl
mov ecx, dword [esp + 0x24]
or ax, bx
or ax, dx
mov word [ecx + edi*2], ax
test ebp, ebp
je 0x454842
mov edx, dword [esp + 0x94]
imul edx, dword [esp + 0x20]
mov al, byte [esp + 0xc]
add edx, edi
mov byte [edx + ebp], al
mov eax, dword [esp + 0x94]
add dword [esp + 0x4c], 3
inc edi
cmp edi, eax
jl 0x4542f8
mov ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
add ecx, dword [esp + 0x98]
inc edx
cmp edx, dword [esp + 0x90]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], edx
jl 0x4542dc
mov ecx, dword [esp + 0x10c]
mov eax, dword [ecx*4 + 0x902a38]
mov edx, dword [eax]
push 0
push eax
mov eax, dword [edx + 0x80]
call eax
push ebx
call fcn.004846e7
add esp, 4
mov eax, 1
pop edi
pop ebp
pop ebx
add esp, 0xfc
ret
mov eax, dword [ebx*4 + 0x902a38]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x80]
push 0
push eax
call edx
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfc
ret