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

Disassembly:
jmp 0x5154b0
sub esp, 0x88
push ebp
mov ebp, dword [esp + 0x90]
test ebp, ebp
je 0x515a6e
push ebx
push esi
push edi
call fcn.00511700
mov esi, dword [esp + 0xa0]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x64], eax
mov eax, dword [0x8388f0]
mov ecx, dword [esi + 0x70]
mov dword [esp + 0x6c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], ecx
test eax, eax
mov dword [esp + 0x10], edx
mov ebx, ebp
jne 0x51550a
call fcn.00514a00
mov ebx, eax
push ebp
push ebx
call fcn.00514a90
add esp, 8
cmp dword [ebx + 4], 0xffffffff
jne 0x51551f
mov eax, dword [ebx]
push eax
call fcn.005784c0
add esp, 4
mov edi, eax
jmp 0x515521
mov edi, dword [ebx]
mov eax, dword [ebx + 4]
cmp eax, 0xffffffff
jne 0x51553c
mov ecx, dword [ebx]
push ecx
call fcn.00578530
mov ebx, eax
add esp, 4
mov dword [esp + 0x3c], ebx
jmp 0x515542
mov dword [esp + 0x3c], eax
mov ebx, eax
mov edx, dword [esi + 0x68]
test edx, edx
je 0x515598
mov eax, dword [edx + 0x50]
mov edx, dword [edx]
mov ecx, eax
mov ebx, eax
shr ecx, 0xc
shr eax, 8
and ecx, 0xf
and eax, 0xf
sub eax, ecx
and ebx, 0xff
neg eax
sbb eax, eax
push edx
not eax
and eax, ecx
push 1
mov ebp, eax
call fcn.004b80d0
push ebx
push 9
call fcn.004b80d0
push ebp
push 2
call fcn.004b80d0
mov ebp, dword [esp + 0xb4]
mov ebx, dword [esp + 0x54]
add esp, 0x18
jmp 0x5155a4
push 0
push 1
call fcn.004b80d0
add esp, 8
fld dword [0x58b454]
lea eax, [ebx + ebx*2]
mov ecx, dword [0x8386a4]
fdiv dword [edi + eax*8 - 4]
xor eax, eax
cmp ebx, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], eax
fstp dword [esp + 0x34]
jle 0x515a5e
fld dword [esp + 0x10]
fadd dword [esp + 0x14]
lea edx, [edi + 0x14]
lea ebx, [edi + 4]
lea ebp, [edi + 0x10]
fstp dword [esp + 0x60]
fld dword [esp + 0x14]
fsub dword [esp + 0x10]
mov dword [esp + 0x10], edx
lea edx, [edi + 8]
mov dword [esp + 0x14], edx
add edi, 0xc
fstp dword [esp + 0x68]
jmp 0x515602
mov eax, dword [esp + 0x18]
cmp eax, 0xfe
jl 0x515683
mov edx, dword [esi + 0x68]
xor ecx, ecx
test edx, edx
mov edx, dword [0x8388ec]
setne cl
or ecx, edx
mov edx, dword [esp + 0x64]
push ecx
push edx
push eax
mov eax, dword [0x8386a4]
push eax
call fcn.004b9170
add esp, 0x10
test eax, eax
je 0x51564d
mov ecx, dword [esp + 0x18]
push ecx
push 0x8381a0
push 4
call fcn.004b9270
add esp, 0xc
call fcn.004b9240
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
dec eax
mov ecx, dword [0x8386a4]
mov dword [esp + 0x38], eax
mov eax, 0x18
sub edx, eax
sub edi, eax
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
sub ebp, eax
sub ebx, eax
sub edx, eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], edx
fld dword [edi]
fmul dword [esp + 0x60]
fld dword [ebp]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
fmul dword [esp + 0x60]
fstp dword [esp + 0x8c]
fsubr dword [ebx]
fld dword [edx]
fsub dword [esp + 0x8c]
fxch st(1)
fstp dword [ecx]
mov dword [ecx + 8], eax
fstp dword [ecx + 4]
test byte [esi + 0x64], 1
je 0x5157c6
mov edx, dword [esp + 0x10]
fld dword [esp + 0x34]
fmul dword [edx]
fld dword [esi + 0x18]
fmul st(1)
fld dword [esi + 0x1c]
fmul st(2)
fstp dword [esp + 0x20]
fld dword [esi + 0x20]
fmul st(2)
fstp dword [esp + 0x24]
fld dword [esi + 0x24]
fmul st(2)
fstp dword [esp + 0x28]
fadd dword [esi]
fstp dword [esp + 0x1c]
fstp st(0)
fld dword [esi + 4]
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [esi + 8]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
fld dword [esi + 0xc]
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
fnstcw word [esp + 0x46]
fld dword [esp + 0x1c]
mov ax, word [esp + 0x46]
or ah, 0xc
mov word [esp + 0x4a], ax
fldcw word [esp + 0x4a]
fistp dword [esp + 0x94]
fldcw word [esp + 0x46]
fnstcw word [esp + 0x52]
fld dword [esp + 0x20]
mov ax, word [esp + 0x52]
or ah, 0xc
mov word [esp + 0x4e], ax
fldcw word [esp + 0x4e]
fistp dword [esp + 0x84]
fldcw word [esp + 0x52]
fnstcw word [esp + 0x40]
fld dword [esp + 0x24]
mov ax, word [esp + 0x40]
or ah, 0xc
mov word [esp + 0x58], ax
fldcw word [esp + 0x58]
fistp dword [esp + 0x70]
fldcw word [esp + 0x40]
fnstcw word [esp + 0x42]
fld dword [esp + 0x28]
mov ax, word [esp + 0x42]
or ah, 0xc
mov word [esp + 0x56], ax
fldcw word [esp + 0x56]
fistp dword [esp + 0x7c]
fldcw word [esp + 0x42]
mov edx, dword [esp + 0x84]
xor eax, eax
mov ah, byte [esp + 0x7c]
and edx, 0xff
mov al, byte [esp + 0x94]
shl eax, 8
or eax, edx
mov edx, dword [esp + 0x70]
and edx, 0xff
jmp 0x5157dd
xor eax, eax
xor edx, edx
mov ah, byte [esi + 0x63]
mov dl, byte [esi + 0x61]
mov al, byte [esi + 0x60]
shl eax, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x62]
shl eax, 8
or eax, edx
mov dword [ecx + 0x18], eax
mov al, byte [esi + 0x64]
test al, 2
je 0x515824
mov eax, dword [esp + 0x10]
fld dword [esp + 0x34]
fmul dword [eax]
fld dword [esi + 0x28]
fmul st(1)
fld dword [esi + 0x2c]
fmul st(2)
fstp dword [esp + 0x30]
fld dword [esi + 0x10]
fadd st(1)
fst dword [esp + 0x2c]
fstp st(2)
fstp st(0)
fld dword [esi + 0x14]
fadd dword [esp + 0x30]
fst dword [esp + 0x30]
fxch st(1)
fstp dword [ecx + 0x1c]
fstp dword [ecx + 0x20]
fld dword [edi]
fmul dword [esp + 0x68]
fld dword [ebp]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
fmul dword [esp + 0x68]
add ecx, 0x24
fstp dword [esp + 0x8c]
fadd dword [ebx]
fld dword [edx]
fadd dword [esp + 0x8c]
fxch st(1)
fstp dword [ecx]
mov dword [ecx + 8], eax
fstp dword [ecx + 4]
test byte [esi + 0x64], 1
je 0x51596f
mov edx, dword [esp + 0x10]
fld dword [esp + 0x34]
fmul dword [edx]
fld dword [esi + 0x48]
fmul st(1)
fld dword [esi + 0x4c]
fmul st(2)
fstp dword [esp + 0x20]
fld dword [esi + 0x50]
fmul st(2)
fstp dword [esp + 0x24]
fld dword [esi + 0x54]
fmul st(2)
fstp dword [esp + 0x28]
fld dword [esi + 0x30]
fadd st(1)
fstp dword [esp + 0x1c]
fstp st(0)
fstp st(0)
fld dword [esi + 0x34]
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [esi + 0x38]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
fld dword [esi + 0x3c]
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
fnstcw word [esp + 0x5e]
fld dword [esp + 0x1c]
mov ax, word [esp + 0x5e]
or ah, 0xc
mov word [esp + 0x5a], ax
fldcw word [esp + 0x5a]
fistp dword [esp + 0x74]
fldcw word [esp + 0x5e]
fnstcw word [esp + 0x54]
fld dword [esp + 0x20]
mov ax, word [esp + 0x54]
or ah, 0xc
mov word [esp + 0x48], ax
fldcw word [esp + 0x48]
fistp dword [esp + 0x78]
fldcw word [esp + 0x54]
fnstcw word [esp + 0x5c]
fld dword [esp + 0x24]
mov ax, word [esp + 0x5c]
or ah, 0xc
mov word [esp + 0x4c], ax
fldcw word [esp + 0x4c]
fistp dword [esp + 0x80]
fldcw word [esp + 0x5c]
fnstcw word [esp + 0x44]
fld dword [esp + 0x28]
mov ax, word [esp + 0x44]
or ah, 0xc
mov word [esp + 0x50], ax
fldcw word [esp + 0x50]
fistp dword [esp + 0x90]
fldcw word [esp + 0x44]
mov edx, dword [esp + 0x78]
xor eax, eax
mov ah, byte [esp + 0x90]
and edx, 0xff
mov al, byte [esp + 0x74]
shl eax, 8
or eax, edx
mov edx, dword [esp + 0x80]
and edx, 0xff
jmp 0x515986
xor eax, eax
xor edx, edx
mov ah, byte [esi + 0x63]
mov dl, byte [esi + 0x61]
mov al, byte [esi + 0x60]
shl eax, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x62]
shl eax, 8
or eax, edx
mov dword [ecx + 0x18], eax
mov al, byte [esi + 0x64]
test al, 2
je 0x5159cd
mov eax, dword [esp + 0x10]
fld dword [esp + 0x34]
fmul dword [eax]
fld dword [esi + 0x58]
fmul st(1)
fld dword [esi + 0x5c]
fmul st(2)
fstp dword [esp + 0x30]
fld dword [esi + 0x40]
fadd st(1)
fst dword [esp + 0x2c]
fstp st(2)
fstp st(0)
fld dword [esi + 0x44]
fadd dword [esp + 0x30]
fst dword [esp + 0x30]
fxch st(1)
fstp dword [ecx + 0x1c]
fstp dword [ecx + 0x20]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
add edx, 0x18
add eax, 2
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
add edx, 0x18
add ecx, 0x24
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x3c]
inc eax
add edi, 0x18
add ebp, 0x18
add ebx, 0x18
cmp eax, edx
mov dword [esp + 0x38], eax
jl 0x5155fe
mov edi, dword [esp + 0x18]
test edi, edi
jle 0x515a57
mov ebp, dword [esi + 0x68]
mov ebx, dword [0x8388ec]
mov edx, dword [esp + 0x64]
xor ecx, ecx
mov eax, dword [0x8386a4]
test ebp, ebp
setne cl
or ecx, ebx
push ecx
push edx
push edi
push eax
call fcn.004b9170
add esp, 0x10
test eax, eax
je 0x515a57
push edi
push 0x8381a0
push 4
call fcn.004b9270
add esp, 0xc
call fcn.004b9240
mov ebp, dword [esp + 0x9c]
mov ecx, dword [ebp + 0x14]
push esi
push ecx
call 0x5154b0
add esp, 8
pop edi
pop esi
pop ebx
mov eax, ebp
pop ebp
add esp, 0x88
ret