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

Disassembly:
sub esp, 0x168
push ebx
mov ebx, dword [esp + 0x170]
cmp dword [ebx*4 + 0x902a38], 0
push ebp
mov ebp, dword [esp + 0x178]
push esi
push edi
mov esi, eax
je 0x451c2b
mov edi, dword [ebp*4 + 0x902a38]
test edi, edi
je 0x451c2b
push 0x7c
lea eax, [esp + 0x7c]
push 0
push eax
call fcn.00487bc0
add esp, 0xc
push 0x7c
lea ecx, [esp + 0xfc]
push 0
push ecx
call fcn.00487bc0
add esp, 0xc
push 0
mov eax, 0x7c
mov dword [esp + 0xfc], eax
mov dword [esp + 0x7c], eax
mov edx, dword [edi]
mov ecx, dword [edx + 0x64]
push 0
lea eax, [esp + 0x80]
push eax
push 0
push edi
call ecx
test eax, eax
jne 0x451c2b
mov eax, dword [ebx*4 + 0x902a38]
mov edx, dword [eax]
mov edx, dword [edx + 0x64]
push 0
push 0
lea ecx, [esp + 0x100]
push ecx
push 0
push eax
call edx
test eax, eax
je 0x451c38
mov eax, dword [ebp*4 + 0x902a38]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x80]
push 0
push eax
call edx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x168
ret
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x84]
mov ecx, dword [esi]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x2c], edx
mov edx, dword [0x904a44]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
sub edi, eax
imul eax, dword [esp + 0x108]
sar edx, 3
mov ebp, dword [esp + 0x80]
imul edx, ecx
add edx, dword [esp + 0x11c]
sub ebx, ecx
add eax, edx
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 4]
imul eax, dword [esp + 0x104]
add eax, ecx
cmp dword [0x904a44], 0x20
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], edi
mov dword [esp + 0x30], eax
jne 0x452148
mov edx, dword [esp + 0x84]
xor eax, eax
cmp dword [esp + 0x188], eax
mov ecx, ebp
setne al
add eax, 3
push eax
push 8
push ecx
push edx
call fcn.004a1320
mov dword [esp + 0x28], eax
xor eax, eax
cmp dword [esp + 0x194], eax
setne al
add eax, 3
push eax
push 8
push edi
push ebx
call fcn.004a1320
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x3c], eax
mov edx, dword [ecx + 0x44]
mov eax, dword [eax + 0x44]
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x60], edx
mov edx, dword [0x904a44]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 4]
sar edx, 3
mov dword [esp + 0x4c], ecx
mov ecx, dword [esi]
imul edx, ecx
add edx, dword [esp + 0x13c]
mov edi, eax
imul eax, dword [esp + 0x124]
imul edi, dword [esp + 0x128]
add edi, edx
add eax, ecx
add esp, 0x20
mov dword [esp + 0x3c], edi
mov dword [esp + 0x48], 0
mov dword [esp + 0x30], eax
test ebp, ebp
jle 0x451e7a
mov dword [esp + 0x28], ebp
lea esp, [esp]
xor ebp, ebp
cmp dword [esp + 0x38], ebp
mov dword [esp + 0x44], ebp
jle 0x451e4e
mov esi, dword [esp + 0x40]
lea eax, [esi + 2]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
sub eax, esi
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x58]
mov eax, dword [ecx + esi]
movzx ecx, byte [0x902a26]
mov edx, eax
and edx, dword [0x902a10]
mov ebx, eax
and ebx, dword [0x902a14]
and eax, dword [0x902a18]
shr edx, cl
movzx ecx, byte [0x902a25]
shr ebx, cl
movzx ecx, byte [0x902a24]
shr eax, cl
cmp dword [esp + 0x188], 0
mov byte [esp + 0x16], dl
mov byte [esp + 0x15], bl
mov byte [esp + 0x14], al
je 0x451ded
mov ecx, dword [esp + 0x48]
add ebp, ecx
mov ecx, dword [esp + 0x188]
mov cl, byte [ecx + ebp]
mov ebp, dword [esp + 0x44]
mov byte [esp + 0x17], cl
jmp 0x451df2
mov byte [esp + 0x17], 0
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 8], 4
jne 0x451e21
movzx ecx, byte [esp + 0x17]
shl ecx, 8
movzx edx, dl
or ecx, edx
shl ecx, 8
movzx edx, bl
or ecx, edx
movzx eax, al
shl ecx, 8
or ecx, eax
mov dword [esi], ecx
mov ecx, dword [esp + 0x24]
jmp 0x451e35
mov ecx, dword [esp + 0x24]
mov byte [ecx - 2], al
mov dl, byte [esp + 0x15]
mov byte [ecx - 1], dl
mov al, byte [esp + 0x16]
mov byte [ecx], al
inc ebp
add ecx, 3
add esi, 4
cmp ebp, dword [esp + 0x38]
mov dword [esp + 0x44], ebp
mov dword [esp + 0x24], ecx
jl 0x451d85
mov ecx, dword [esp + 0x88]
add dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x84]
mov ecx, dword [eax + 0x48]
add dword [esp + 0x48], edx
add dword [esp + 0x40], ecx
sub dword [esp + 0x28], 1
jne 0x451d60
push 5
push 3
push 2
call fcn.004a1332
fld qword [esp + 0x1bc]
fstp dword [esp + 0x74]
add esp, 0xc
fld qword [esp + 0x1b8]
push eax
fstp dword [esp + 0x70]
mov edx, dword [esp + 0x70]
fld qword [esp + 0x194]
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp + 0x34], eax
fld qword [esp + 0x1ac]
mov eax, dword [esp + 0x7c]
fstp qword [esp]
push edx
push eax
call fcn.004a130e
add esp, 0x1c
push 5
push 3
push 2
call fcn.004a1332
fld qword [esp + 0x19c]
fld qword [esp + 0x1bc]
mov ecx, dword [eax]
fmul st(1)
and ecx, 0x1ff
add esp, 0xc
fsubr qword [esp + 0x1a0]
fld st(1)
fmul qword [esp + 0x1b8]
fsubr qword [esp + 0x1a8]
fild dword [esp + 0x38]
fld st(0)
fmul st(4)
fsubp st(1)
fld qword [0x4d67d8]
fmul st(1), st(0)
fild dword [esp + 0x54]
fld st(0)
fmulp st(6)
fsubrp st(5)
fmulp st(4)
fldz
fldz
cmp ecx, 5
jne 0x451f38
mov edx, dword [eax + 0x10]
fst dword [edx]
jmp 0x451f41
mov ecx, dword [eax + 0x10]
fxch st(1)
fst qword [ecx]
fxch st(1)
mov edx, dword [eax]
mov ecx, dword [eax + 0x10]
and edx, 0x1ff
cmp edx, 5
mov edx, dword [eax + 4]
jne 0x451f59
fst dword [ecx + edx]
jmp 0x451f60
fxch st(1)
fst qword [ecx + edx]
fxch st(1)
mov ecx, dword [eax]
and ecx, 0x1ff
cmp ecx, 5
jne 0x451f75
mov edx, dword [eax + 0x10]
fst dword [edx + 4]
jmp 0x451f7f
mov ecx, dword [eax + 0x10]
fxch st(1)
fst qword [ecx + 8]
fxch st(1)
mov edx, dword [eax]
mov ecx, dword [eax + 0x10]
and edx, 0x1ff
cmp edx, 5
mov edx, dword [eax + 4]
jne 0x451f9a
fstp st(1)
fstp dword [ecx + edx + 4]
jmp 0x451fa0
fstp st(0)
fstp qword [ecx + edx + 8]
mov ecx, dword [eax]
fsubrp st(2)
and ecx, 0x1ff
fxch st(1)
fchs
cmp ecx, 5
jne 0x451fbb
mov edx, dword [eax + 0x10]
fstp dword [edx + 8]
jmp 0x451fc1
mov ecx, dword [eax + 0x10]
fstp qword [ecx + 0x10]
mov edx, dword [eax]
fsubp st(1)
mov ecx, dword [eax + 0x10]
and edx, 0x1ff
cmp edx, 5
fchs
mov edx, dword [eax + 4]
jne 0x451fde
fstp dword [ecx + edx + 8]
jmp 0x451fe2
fstp qword [ecx + edx + 0x10]
mov ecx, dword [esp + 0x20]
push 0
push ecx
push eax
push ecx
call fcn.004a1326
fld1
fcomp qword [esp + 0x1a0]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esp, 0x10
sub esp, 0x20
fnstsw ax
fldz
fld st(0)
test ah, 0x41
mov eax, esp
fld st(1)
fld st(2)
fxch st(2)
fstp qword [eax]
fstp qword [eax + 8]
fstp qword [eax + 0x10]
fstp qword [eax + 0x18]
mov eax, dword [esp + 0x40]
jne 0x45202d
push 0xb
jmp 0x45202f
push 0xa
push eax
push ecx
push edx
call fcn.004a1302
lea eax, [esp + 0x50]
add esp, 0x30
push eax
call fcn.004a132c
lea ecx, [esp + 0x1c]
add esp, 4
push ecx
call fcn.004a1338
add esp, 4
cmp dword [esp + 0x50], 0
jle 0x452136
mov edx, dword [esp + 0x50]
mov dword [esp + 0x28], edx
jmp 0x452070
xor ecx, ecx
cmp dword [esp + 0x4c], ecx
jle 0x45210a
mov esi, dword [esp + 0x34]
add esi, 2
mov eax, esi
mov edx, dword [esp + 0x1c]
cmp dword [edx + 8], 4
jne 0x4520c4
mov dl, byte [eax - 2]
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0x184]
mov byte [esp + 0x14], dl
movzx ebx, byte [eax - 1]
mov byte [esp + 0x15], bl
movzx ebx, byte [eax]
mov byte [esp + 0x16], bl
mov byte [esp + 0x17], 0
movzx ebx, byte [eax + 1]
add edi, ecx
mov byte [edi + ebp], bl
mov edi, dword [esp + 0x3c]
jmp 0x4520df
mov dl, byte [esi - 2]
mov byte [esp + 0x14], dl
movzx ebx, byte [esi - 1]
mov byte [esp + 0x15], bl
movzx ebx, byte [esi]
mov byte [esp + 0x16], bl
mov byte [esp + 0x17], 0
movzx ebx, byte [esp + 0x16]
movzx ebp, byte [esp + 0x15]
shl ebx, 8
or ebx, ebp
movzx edx, dl
shl ebx, 8
or ebx, edx
mov dword [edi + ecx*4], ebx
inc ecx
add esi, 3
add eax, 4
cmp ecx, dword [esp + 0x4c]
jl 0x452085
mov ecx, dword [esp + 0x1c]
add edi, dword [esp + 0x108]
mov eax, dword [esp + 0x104]
mov edx, dword [ecx + 0x48]
add dword [esp + 0x30], eax
add dword [esp + 0x34], edx
sub dword [esp + 0x28], 1
mov dword [esp + 0x3c], edi
jne 0x452070
lea eax, [esp + 0x1c]
push eax
call fcn.004a1338
add esp, 4
jmp 0x4524f2
fld qword [esp + 0x198]
fmul qword [0x4d6938]
fld st(0)
fsin
fld qword [0x4d6930]
fmul st(1), st(0)
fxch st(1)
call fcn.004880e0
fxch st(1)
fcos
mov dword [esp + 0x20], eax
fmul st(1)
call fcn.004880e0
fld1
fdiv qword [esp + 0x190]
mov dword [esp + 0x1c], eax
fmul st(1)
call fcn.004880e0
fld qword [esp + 0x1a0]
fmul st(1)
mov dword [esp + 0x34], eax
call fcn.004880e0
fld qword [esp + 0x1a8]
fmul st(1)
mov dword [esp + 0x58], eax
call fcn.004880e0
fld qword [esp + 0x1b0]
fmul st(1)
mov dword [esp + 0x54], eax
call fcn.004880e0
fmul qword [esp + 0x1b8]
mov dword [esp + 0x18], eax
call fcn.004880e0
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], 0
test edi, edi
jle 0x4524f2
fld dword [0x4d67c8]
mov eax, dword [esp + 0x38]
shl eax, 0xa
cmp dword [esp + 0x4c], 0
mov dword [esp + 0x44], 0
jle 0x4524c7
sub eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x20]
imul ecx, eax
sar ecx, 0xa
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
imul ecx, eax
sar ecx, 0xa
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], ecx
mov esi, dword [esp + 0x44]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
shl esi, 0xa
sub esi, dword [esp + 0x58]
imul eax, esi
imul ebp, esi
sar eax, 0xa
sar ebp, 0xa
mov dword [esp + 0x74], eax
mov edi, ebp
sub edi, dword [esp + 0x28]
add eax, ecx
imul edi, ebx
imul eax, ebx
sar edi, 0xa
add edi, dword [esp + 0x18]
sar eax, 0xa
add eax, dword [esp + 0x24]
sar edi, 0xa
sar eax, 0xa
test edi, edi
jl 0x4522b6
test eax, eax
jl 0x4522b6
cmp edi, dword [esp + 0x84]
jge 0x4522b6
cmp eax, dword [esp + 0x80]
jge 0x4522b6
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x2c]
push edx
push eax
mov eax, dword [esp + 0x190]
push eax
mov eax, dword [esp + 0x94]
call fcn.00452610
add esp, 0xc
jmp 0x4522b8
xor eax, eax
cmp dword [esp + 0x18c], 0
mov dword [esp + 0x14], eax
je 0x452493
mov eax, dword [esp + 0x20]
lea ecx, [esi + 0x200]
mov esi, dword [esp + 0x1c]
imul eax, ecx
imul esi, ecx
mov ecx, dword [esp + 0x40]
sar eax, 0xa
sar esi, 0xa
mov dword [esp + 0x68], eax
mov edi, esi
sub edi, dword [esp + 0x28]
add eax, ecx
imul edi, ebx
imul eax, ebx
sar edi, 0xa
add edi, dword [esp + 0x18]
sar eax, 0xa
add eax, dword [esp + 0x24]
sar edi, 0xa
sar eax, 0xa
test edi, edi
jl 0x452352
test eax, eax
jl 0x452352
cmp edi, dword [esp + 0x84]
jge 0x452352
cmp eax, dword [esp + 0x80]
jge 0x452352
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x2c]
push edx
push eax
mov eax, dword [esp + 0x190]
push eax
mov eax, dword [esp + 0x94]
call fcn.00452610
add esp, 0xc
mov dword [esp + 0x64], eax
jmp 0x45235a
mov dword [esp + 0x64], 0
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
add eax, 0x200
mov ebx, eax
imul eax, dword [esp + 0x1c]
imul ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x74]
sar ebx, 0xa
sub ebp, ebx
imul ebp, ecx
sar ebp, 0xa
add ebp, dword [esp + 0x18]
sar ebp, 0xa
mov edi, ebp
mov ebp, eax
sar ebp, 0xa
lea eax, [edx + ebp]
imul eax, ecx
sar eax, 0xa
add eax, dword [esp + 0x24]
sar eax, 0xa
test edi, edi
jl 0x4523e4
test eax, eax
jl 0x4523e4
cmp edi, dword [esp + 0x84]
jge 0x4523e4
cmp eax, dword [esp + 0x80]
jge 0x4523e4
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x188]
push ecx
mov ecx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x90]
push edx
call fcn.00452610
add esp, 0xc
mov dword [esp + 0x60], eax
jmp 0x4523ec
mov dword [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x68]
sub esi, ebx
add eax, ebp
imul esi, ecx
imul eax, ecx
sar esi, 0xa
add esi, dword [esp + 0x18]
sar eax, 0xa
add eax, dword [esp + 0x24]
sar esi, 0xa
sar eax, 0xa
test esi, esi
jl 0x452458
test eax, eax
jl 0x452458
cmp esi, dword [esp + 0x84]
jge 0x452458
cmp eax, dword [esp + 0x80]
jge 0x452458
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x188]
push ecx
mov ecx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x90]
push edx
mov edi, esi
call fcn.00452610
add esp, 0xc
mov dword [esp + 0x5c], eax
jmp 0x452460
mov dword [esp + 0x5c], 0
sub esp, 8
fst dword [esp + 4]
lea eax, [esp + 0x78]
fstp dword [esp]
push eax
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.00453cd0
fld dword [0x4d67c8]
add esp, 0x1c
jmp 0x452497
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x184]
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x3c]
push edx
push eax
lea edx, [esp + 0x78]
call fcn.00452540
inc esi
add esp, 8
cmp esi, dword [esp + 0x4c]
mov dword [esp + 0x44], esi
jl 0x452229
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x104]
add dword [esp + 0x3c], ecx
add dword [esp + 0x30], edx
inc eax
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x38], eax
jl 0x4521eb
fstp st(0)
mov eax, dword [esp + 0x180]
mov eax, dword [eax*4 + 0x902a38]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x80]
push 0
push eax
call edx
mov eax, dword [esp + 0x17c]
mov eax, dword [eax*4 + 0x902a38]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x80]
push 0
push eax
call edx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x168
ret