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

Disassembly:
sub esp, 0x4c
push ebx
push ebp
push esi
push edi
mov esi, ecx
push 0x474
call fcn.0048649c
mov edx, dword [eax + 0x1c]
lea ecx, [esp + 0x4c]
push ecx
push edx
call dword [0x4a9724]
lea eax, [esp + 0x4c]
mov ecx, esi
push eax
call fcn.0048aab5
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x64]
lea eax, [edx + ecx]
cdq
sub eax, edx
mov edx, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [esp + 0x50]
add eax, edx
cdq
sub eax, edx
sar ecx, 1
sar eax, 1
cmp edi, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
jne 0x43c211
cmp dword [esp + 0x68], eax
jne 0x43c211
push 0xffffffffffffffff
push 0
lea ecx, [esi + 0x5c]
call fcn.00453970
mov ebp, dword [esp + 0x6c]
test ebp, ebp
jle 0x43c89f
mov eax, dword [esp + 0x70]
test eax, eax
jle 0x43c89f
imul ebp, ebp
mov ecx, eax
mov ebx, ebp
imul ecx, eax
imul ebx, eax
mov edx, ecx
mov dword [esp + 0x3c], ebp
sub edx, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x70], 0
lea edx, [ebp + edx*2]
mov dword [esp + 0x14], 0
mov dword [esp + 0x64], edx
lea edx, [ecx + ecx*2]
shl edx, 1
test ebx, ebx
mov dword [esp + 0x2c], edx
jle 0x43c34f
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x24], edx
sub ecx, eax
mov dword [esp + 0x20], ecx
cmp edi, dword [esp + 0x1c]
jne 0x43c2c0
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x18]
cmp eax, ecx
jne 0x43c2c0
mov eax, dword [esi + 0x64]
lea ebp, [esi + 0x5c]
mov dword [esp + 0x34], eax
inc eax
push 0xffffffffffffffff
push eax
mov ecx, ebp
call fcn.00453970
mov eax, dword [esp + 0x70]
mov edx, dword [ebp + 4]
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x3c]
add eax, edi
mov dword [edx + ecx*8], eax
mov eax, dword [esp + 0x20]
mov dword [edx + ecx*8 + 4], eax
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x78]
push eax
mov eax, dword [esp + 0x6c]
push edi
push ecx
push edx
push eax
mov ecx, esi
call fcn.0043c8b0
mov eax, dword [esp + 0x64]
test eax, eax
jge 0x43c2f4
mov ecx, dword [esp + 0x24]
jmp 0x43c315
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
dec ecx
inc eax
sub ebx, ebp
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
sub edx, ebx
mov dword [esp + 0x10], ecx
lea ecx, [eax + edx*4]
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x24]
add eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x28]
add ecx, eax
shl eax, 2
add edx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x70]
inc edx
cmp ecx, ebx
mov dword [esp + 0x70], edx
jl 0x43c27d
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x6c]
mov ebx, ecx
imul ebx, eax
mov dword [esp + 0x70], eax
mov eax, ebp
sub eax, ebx
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ebx
lea ecx, [ecx + eax*2]
lea eax, [ebp + ebp*2]
mov dword [esp + 0x64], ecx
mov ecx, dword [esi + 0x64]
shl eax, 1
cmp ebx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x24], edx
jle 0x43c4d8
mov edx, dword [esp + 0x68]
mov dword [esp + 0x20], eax
mov dword [esp + 0x34], edx
cmp edi, dword [esp + 0x1c]
jne 0x43c445
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x18]
cmp eax, ecx
jne 0x43c445
mov eax, dword [esi + 0x64]
mov ebp, dword [esp + 0x40]
lea ebx, [esi + 0x5c]
cmp ebp, eax
mov dword [esp + 0x44], eax
push 0xffffffffffffffff
jl 0x43c3d5
lea ecx, [ebp + 1]
push ecx
mov ecx, ebx
call fcn.00453970
jmp 0x43c416
inc eax
mov ecx, ebx
push eax
call fcn.00453970
mov ecx, dword [esp + 0x44]
mov eax, dword [ebx + 4]
mov edx, ebp
shl edx, 0x1d
sub edx, ebp
add edx, ecx
lea ecx, [eax + ebp*8]
shl edx, 3
push edx
lea edx, [eax + ebp*8 + 8]
push ecx
push edx
call fcn.00471200
mov eax, dword [ebx + 4]
lea ecx, [ebp*8]
add esp, 0xc
add eax, ecx
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
xor ecx, ecx
lea eax, [ebp*8]
mov edx, dword [esp + 0x70]
mov ebp, dword [ebx + 4]
add edx, edi
mov dword [eax + ebp], edx
mov edx, dword [esp + 0x34]
mov dword [eax + ebp + 4], edx
add eax, 8
mov edx, ecx
dec ecx
test edx, edx
jne 0x43c41f
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x68]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x78]
push edx
mov edx, dword [esp + 0x6c]
push edi
push eax
push ecx
push edx
mov ecx, esi
call fcn.0043c8b0
mov eax, dword [esp + 0x64]
test eax, eax
jge 0x43c479
mov eax, dword [esp + 0x20]
jmp 0x43c499
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
dec ecx
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x24]
sub ebx, eax
sub ecx, ebx
mov dword [esp + 0x14], ebx
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x20]
add ecx, eax
lea eax, [ebp*4]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x24]
add edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x34]
add ecx, ebp
inc eax
dec edx
cmp ecx, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], edx
jl 0x43c39a
cmp edi, dword [esp + 0x1c]
jne 0x43c89f
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x18]
cmp ecx, eax
jne 0x43c89f
mov eax, dword [esi + 0x64]
dec eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x64], eax
js 0x43c5e3
fild dword [esp + 0x78]
fmul qword [0x4ac480]
fstp qword [esp + 0x34]
mov edx, dword [esi + 0x60]
mov eax, dword [esp + 0x64]
mov ebp, dword [esi + 0x64]
push 0xffffffffffffffff
mov ecx, dword [edx + eax*8]
lea eax, [edx + eax*8]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + 4]
lea eax, [ebp + 1]
lea ebx, [edx + edx]
push eax
sub ebx, ecx
lea ecx, [esi + 0x5c]
call fcn.00453970
mov ecx, dword [esi + 0x60]
mov edx, dword [esp + 0x2c]
mov dword [ecx + ebp*8], edx
mov dword [ecx + ebp*8 + 4], ebx
mov eax, dword [esi + 0x60]
mov ebp, dword [esp + 0x64]
lea ebx, [eax + ebp*8]
mov eax, dword [eax + ebp*8]
sub eax, edi
mov dword [esp + 0x44], eax
jne 0x43c56b
fld qword [0x4ac478]
jmp 0x43c584
mov ecx, dword [esp + 0x68]
mov edx, dword [ebx + 4]
sub ecx, edx
mov dword [esp + 0x64], ecx
fild dword [esp + 0x64]
fidiv dword [esp + 0x44]
fld1
fpatan
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x68]
sub ecx, edx
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x64], edx
fild dword [esp + 0x64]
fsqrt
fstp qword [esp + 0x44]
fadd qword [esp + 0x34]
fld st(0)
fcos
fmul qword [esp + 0x44]
call fcn.00470a50
fsin
add eax, edi
mov dword [ebx], eax
fmul qword [esp + 0x44]
call fcn.00470a50
mov edx, dword [esp + 0x68]
sub edx, eax
mov eax, dword [esi + 0x60]
mov dword [eax + ebp*8 + 4], edx
dec ebp
mov dword [esp + 0x64], ebp
jns 0x43c512
mov eax, dword [esp + 0x70]
mov ebx, dword [esi + 0x64]
dec ebx
cmp ebx, eax
mov dword [esp + 0x3c], ebx
jle 0x43c6e1
fild dword [esp + 0x78]
mov ecx, dword [esp + 0x1c]
fmul qword [0x4ac480]
lea edx, [ecx + ecx]
mov dword [esp + 0x64], edx
fstp qword [esp + 0x34]
mov eax, dword [esi + 0x60]
mov ebp, dword [esp + 0x64]
push 0xffffffffffffffff
mov ecx, dword [eax + ebx*8]
lea eax, [eax + ebx*8]
sub ebp, ecx
mov ecx, dword [eax + 4]
mov eax, dword [esi + 0x64]
mov dword [esp + 0x34], ecx
lea ecx, [esi + 0x5c]
mov dword [esp + 0x48], eax
inc eax
push eax
call fcn.00453970
mov edx, dword [esi + 0x60]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
mov dword [edx + eax*8], ebp
mov dword [edx + eax*8 + 4], ecx
mov edx, dword [esi + 0x60]
mov eax, dword [edx + ebx*8]
lea ebp, [edx + ebx*8]
sub eax, edi
mov dword [esp + 0x40], eax
jne 0x43c660
fld qword [0x4ac478]
jmp 0x43c679
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x68]
sub ecx, edx
mov dword [esp + 0x44], ecx
fild dword [esp + 0x44]
fidiv dword [esp + 0x40]
fld1
fpatan
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x68]
sub ecx, edx
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x44], edx
fild dword [esp + 0x44]
fsqrt
fstp qword [esp + 0x44]
fsubr qword [0x4ac470]
fadd qword [esp + 0x34]
fld st(0)
fcos
fmul qword [esp + 0x44]
call fcn.00470a50
fsin
add eax, edi
mov dword [ebp], eax
fmul qword [esp + 0x44]
call fcn.00470a50
mov edx, dword [esp + 0x68]
sub edx, eax
mov eax, dword [esi + 0x60]
mov dword [eax + ebx*8 + 4], edx
mov eax, dword [esp + 0x70]
dec ebx
cmp ebx, eax
jg 0x43c60c
mov ebx, dword [esp + 0x3c]
mov eax, dword [esi + 0x64]
dec eax
cmp eax, ebx
mov dword [esp + 0x64], eax
jle 0x43c85c
fild dword [esp + 0x78]
mov ecx, dword [esp + 0x18]
fmul qword [0x4ac480]
lea edx, [ecx + ecx]
mov dword [esp + 0x70], edx
fst qword [esp + 0x34]
fadd qword [0x4ac468]
fstp qword [esp + 0x2c]
jmp 0x43c71a
mov eax, dword [esp + 0x64]
mov ecx, dword [esi + 0x60]
mov ebp, dword [ecx + eax*8 + 4]
lea edx, [ecx + eax*8]
mov ecx, dword [esp + 0x70]
mov eax, dword [edx]
mov edx, edi
sub ecx, ebp
sub edx, eax
mov dword [esp + 0x40], edx
jne 0x43c742
fld qword [0x4ac478]
mov ebp, dword [esp + 0x68]
jmp 0x43c75a
mov ebp, dword [esp + 0x68]
mov edx, ebp
sub edx, ecx
mov dword [esp + 0x44], edx
fild dword [esp + 0x44]
fidiv dword [esp + 0x40]
fld1
fpatan
sub ecx, ebp
sub eax, edi
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x44], edx
fild dword [esp + 0x44]
fsqrt
fstp qword [esp + 0x44]
fsubr qword [0x4ac468]
fadd qword [esp + 0x34]
fld st(0)
fcos
fmul qword [esp + 0x44]
call fcn.00470a50
fsin
mov ebx, eax
add ebx, edi
fmul qword [esp + 0x44]
call fcn.00470a50
lea ecx, [esi + 0x5c]
sub ebp, eax
push 0xffffffffffffffff
mov eax, dword [ecx + 8]
mov dword [esp + 0x48], eax
inc eax
push eax
call fcn.00453970
mov edx, dword [esi + 0x60]
mov eax, dword [esp + 0x44]
mov ecx, edi
mov dword [edx + eax*8], ebx
mov dword [edx + eax*8 + 4], ebp
mov eax, dword [esi + 0x60]
mov ebp, dword [esp + 0x64]
lea ebx, [eax + ebp*8]
mov eax, dword [eax + ebp*8]
sub ecx, eax
mov dword [esp + 0x44], ecx
jne 0x43c7e0
fld qword [0x4ac478]
jmp 0x43c7f9
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x68]
sub ecx, edx
mov dword [esp + 0x64], ecx
fild dword [esp + 0x64]
fidiv dword [esp + 0x44]
fld1
fpatan
mov ecx, dword [ebx + 4]
mov edx, dword [esp + 0x68]
sub eax, edi
sub ecx, edx
mov edx, eax
imul edx, eax
mov eax, ecx
imul eax, ecx
add edx, eax
mov dword [esp + 0x64], edx
fild dword [esp + 0x64]
fsqrt
fstp qword [esp + 0x44]
fadd qword [esp + 0x2c]
fld st(0)
fcos
fmul qword [esp + 0x44]
call fcn.00470a50
fsin
add eax, edi
mov dword [ebx], eax
fmul qword [esp + 0x44]
call fcn.00470a50
mov ecx, dword [esp + 0x68]
mov edx, dword [esi + 0x60]
sub ecx, eax
mov eax, dword [esp + 0x3c]
mov dword [edx + ebp*8 + 4], ecx
dec ebp
cmp ebp, eax
mov dword [esp + 0x64], ebp
jg 0x43c716
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x7c]
fild dword [esi + 0x88]
dec ebp
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x6c], ebp
mov edx, dword [esp + 0x74]
fimul dword [esp + 0x6c]
push eax
push ecx
push edx
fmul qword [0x4abdd0]
call fcn.00470a50
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x6c]
push eax
mov eax, ebp
push eax
push ecx
push edi
push edx
mov ecx, esi
call fcn.0043d9d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret 0x20