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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x5e04
call fcn.004267a0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x2c], 1
mov edx, dword [eax + 0x130]
mov ecx, dword [edx + 0x7ca4]
push ebx
push esi
push edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x3c], ecx
jne 0x414b78
mov dword [esp + 0x3c], 4
mov eax, dword [eax + 0x88]
fld1
test eax, eax
jne 0x414bb0
mov eax, dword [edx + 0x13094]
test eax, eax
mov dword [esp + 0x30], eax
jne 0x414b9a
fldz
fstp dword [esp + 0x38]
jmp 0x414bcf
fild dword [edx + 0x13090]
fidiv dword [esp + 0x30]
fmul qword [0x4459d0]
fstp dword [esp + 0x38]
jmp 0x414bcf
cmp eax, 2
je 0x414bc5
cmp eax, 4
je 0x414bc5
cmp eax, 1
je 0x414bc5
fst dword [esp + 0x38]
jmp 0x414bcf
fld dword [0x44de10]
fstp dword [esp + 0x38]
test ecx, ecx
fldz
mov dword [esp + 0x24], 0
jle 0x414d18
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0x1c]
imul eax, eax, 0x3d0
add edx, 0x14270
lea edi, [eax + esi]
mov dword [esp + 0x14], edx
mov edx, dword [ebp + 0x20]
lea eax, [eax + edx + 0xf4]
sub esi, edx
lea ecx, [esp + 0x5f8]
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], esi
mov edx, dword [ebp + 0xc]
mov eax, dword [esp + 0x24]
mov eax, dword [edx + eax*4]
add eax, 0x634
mov ebx, ecx
lea esi, [eax + 0x50]
mov edi, 0x240
fld dword [esi - 0x28]
mov eax, 0x44dcd8
fstp dword [esp + 0x18]
lea edx, [esi - 0x50]
mov ecx, esi
fst dword [esp + 0x28]
fld dword [ecx + 4]
add eax, 8
fadd dword [edx]
sub ecx, 8
add edx, 8
cmp eax, 0x44dd00
fmul dword [eax - 0xc]
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [edx - 4]
fadd dword [ecx + 8]
fmul dword [eax - 8]
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
jl 0x414c47
fld dword [esp + 0x28]
add esi, 4
fadd dword [esp + 0x18]
add ebx, 4
sub edi, 1
fstp dword [ebx - 4]
jne 0x414c32
cmp dword [esp + 0x3c], 2
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
lea edi, [ecx + edx]
lea esi, [eax + 0x3d0]
mov ecx, 0x3d
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x10]
mov ecx, 0x3d
mov esi, eax
rep movsd dword es:[edi], dword [esi]
jle 0x414ce0
lea esi, [eax + 0x5b8]
mov ecx, 0x3d
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea esi, [eax + 0x1e8]
lea edi, [edx - 0xf4]
mov ecx, 0x3d
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x24]
add dword [esp + 0x10], 0x1e8
add edx, 0x1e8
add esi, 1
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x2c]
add eax, 0xf4
cmp esi, dword [edx + 0x7ca4]
mov dword [esp + 0x24], esi
mov ecx, ebx
mov dword [esp + 0x14], eax
jl 0x414c19
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x24], 0
jle 0x415eb2
fld qword [0x4459d8]
jmp 0x414d3f
fld qword [0x4459d8]
fldz
fld1
fxch st(2)
mov esi, dword [esp + 0x2c]
fxch st(1)
fst dword [esp + 0x68]
mov edx, dword [esp + 0x24]
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x21448]
add eax, eax
add eax, eax
fst dword [esp + eax + 0xe8]
lea ecx, [edx + edx*8 + 0x86e5]
fst dword [esp + eax + 0x1f0]
mov eax, dword [esi + 0x21444]
add eax, eax
add eax, eax
fst dword [esp + eax + 0xe8]
xor edi, edi
cmp edx, 2
fst dword [esp + eax + 0x1f0]
lea eax, [edx + edx*8]
fld dword [esi + eax*4 + 0x21b9c]
mov dword [esp + 0x34], 1
fstp dword [esp + 0x88]
mov dword [esp + 0x40], edi
fld dword [esp + 0x88]
fld st(0)
fdiv dword [esi + ecx*4]
fstp dword [esp + 0xb8]
fld dword [esi + eax*4 + 0x21ba0]
fstp dword [esp + 0x8c]
fld dword [esp + 0x8c]
fld st(0)
fdiv dword [esi + eax*4 + 0x21b98]
fstp dword [esp + 0xbc]
fld dword [esi + eax*4 + 0x21ba4]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fdiv dword [esi + eax*4 + 0x21b9c]
fstp dword [esp + 0xc0]
fld dword [esp + 0x68]
faddp st(3)
fxch st(2)
fstp dword [esp + 0x30]
fadd dword [esp + 0x30]
fstp dword [esp + 0x30]
fadd dword [esp + 0x30]
fstp dword [esp + 0x68]
jne 0x415011
xor eax, eax
fld dword [esp + eax*4 + 0x5f8]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xef8]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x5f8]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xef8]
fld dword [esp + eax*4 + 0x5fc]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xefc]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x5fc]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xefc]
fld dword [esp + eax*4 + 0x600]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf00]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x600]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xf00]
fld dword [esp + eax*4 + 0x604]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf04]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x604]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xf04]
fld dword [esp + eax*4 + 0x608]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf08]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x608]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xf08]
fld dword [esp + eax*4 + 0x60c]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf0c]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x60c]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xf0c]
fld dword [esp + eax*4 + 0x610]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf10]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x610]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xf10]
fld dword [esp + eax*4 + 0x614]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xf14]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
add eax, 9
cmp eax, 0x240
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x5f0]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xef0]
fld dword [esp + eax*4 + 0x5f4]
fstp dword [esp + 0x10]
fld dword [esp + eax*4 + 0xef4]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld dword [esp + 0x10]
fld st(0)
fadd st(2)
fstp dword [esp + eax*4 + 0x5f4]
fsubrp st(1)
fstp dword [esp + eax*4 + 0xef4]
jl 0x414e41
mov eax, edx
and eax, 1
lea ecx, [eax + eax*8]
lea edx, [edx + edx*8]
mov dword [esp + 0x30], eax
shl ecx, 8
lea eax, [esi + edx*4 + 0x21b84]
lea ecx, [esp + ecx + 0x5f8]
mov dword [esp + 0x28], eax
jmp 0x415039
fxch st(2)
lea ebx, [ecx + 0x100]
fxch st(2)
mov eax, ebx
fst dword [esp + 0x10]
fld dword [esp + 0x10]
sub eax, ecx
add eax, 3
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, 4
jl 0x4150db
lea edx, [ebx - 0xc]
fld dword [ecx]
fabs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x41507e
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x415080
fstp st(0)
fld dword [ecx + 4]
fabs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x41509a
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x41509c
fstp st(0)
fld dword [ecx + 8]
fabs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4150b6
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x4150b8
fstp st(0)
fld dword [ecx + 0xc]
fabs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4150d2
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x4150d4
fstp st(0)
add ecx, 0x10
cmp ecx, edx
jl 0x415065
cmp ecx, ebx
jae 0x415101
fld dword [ecx]
fabs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4150f8
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x4150fa
fstp st(0)
add ecx, 4
cmp ecx, ebx
jb 0x4150df
mov edx, dword [esp + 0x28]
fst dword [esp + edi*4 + 0x94]
fst dword [edx]
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [esp + eax*4 + 0x6c]
fld dword [eax]
fadd st(1)
fstp dword [eax]
fld dword [esp + edi*4 + 0x8c]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x41513e
fdivp st(1)
fstp dword [esp + 0x10]
jmp 0x41515f
fxch st(1)
fmul st(3)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x415153
fdivp st(1)
fstp dword [esp + 0x10]
jmp 0x41515f
fstp st(0)
fstp st(0)
fxch st(2)
fst dword [esp + 0x10]
fxch st(2)
fld dword [esp + 0x10]
add dword [esp + 0x28], 4
fstp dword [esp + edi*4 + 0xc4]
add edi, 1
cmp edi, 9
jl 0x415037
cmp dword [esp + 0x24], 3
fstp st(2)
fstp st(0)
fstp st(0)
jne 0x415190
fld dword [esi + 0x21d00]
jmp 0x415196
fld dword [esi + 0x21cfc]
fstp dword [esp + 0x1c]
mov ecx, 2
fld dword [esp + 0x1c]
lea ebx, [esp + 0xbc]
lea edx, [ecx - 2]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x4151d9
fld dword [ebx - 4]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4151d9
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
sub edx, 1
mov dword [edi], edx
lea edx, [ecx - 1]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x415204
fld dword [ebx]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x415204
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
mov dword [edi], edx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x415230
fld dword [ebx + 4]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x415230
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
add edx, 1
mov dword [edi], edx
lea edx, [ecx + 1]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x41525f
fld dword [ebx + 8]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x41525f
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
add edx, 2
mov dword [edi], edx
lea edx, [ecx + 2]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x41528e
fld dword [ebx + 0xc]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x41528e
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
add edx, 3
mov dword [edi], edx
lea edx, [ecx + 3]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
cmp dword [esp + edx*4 + 0x40], 0
lea edi, [esp + edx*4 + 0x40]
jne 0x4152bd
fld dword [ebx + 0x10]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4152bd
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
add edx, 4
mov dword [edi], edx
add ecx, 6
lea eax, [ecx - 2]
add ebx, 0x18
cmp eax, 0xc
jl 0x4151aa
fstp st(0)
mov ecx, 1
fld qword [0x44de08]
fld dword [esp + ecx*4 + 0x64]
fld dword [esp + ecx*4 + 0x68]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x4152f1
fdivp st(1)
jmp 0x4152f3
fdivrp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x415313
xor eax, eax
cmp ecx, 1
mov dword [esp + ecx*4 + 0x40], eax
jne 0x415313
mov dword [esp + 0x40], eax
add ecx, 1
cmp ecx, 4
jl 0x4152dc
cmp dword [esp + 0x40], 0
fstp st(0)
mov ebx, dword [esp + 0x24]
je 0x41533a
cmp dword [esi + ebx*4 + 0x21c14], 0
je 0x41533a
mov dword [esp + 0x40], 0
cmp dword [esi + ebx*4 + 0x21c14], 3
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
je 0x41535b
lea edi, [edx + ecx]
add edi, eax
add edi, dword [esp + 0x40]
je 0x41538d
xor edi, edi
test eax, eax
je 0x41536d
cmp dword [esp + 0x40], edi
je 0x41536d
xor eax, eax
mov dword [esp + 0x44], eax
test ecx, ecx
je 0x41537b
test eax, eax
je 0x41537b
xor ecx, ecx
mov dword [esp + 0x48], ecx
test edx, edx
je 0x415391
test ecx, ecx
je 0x415391
mov dword [esp + 0x4c], 0
jmp 0x415391
mov edi, dword [esp + 0x34]
cmp ebx, 2
jge 0x41539c
mov dword [esp + ebx*4 + 0x78], edi
jmp 0x4153aa
xor eax, eax
cmp edi, eax
jne 0x4153aa
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], eax
mov edx, dword [ebp + 0xc]
mov edi, dword [esp + 0x24]
mov eax, dword [ebp + 0x10]
fld dword [esi + edi*4 + 0x21278]
mov ecx, dword [ebp + 0x2c]
push edx
fstp dword [ecx + edi*4]
push edi
push eax
mov eax, dword [esp + 0x3c]
mov ecx, eax
imul ecx, ecx, 0xc00
lea edx, [esp + ecx + 0x261c]
push edx
lea ecx, [esp + 0x2010]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x180c]
shl eax, 0xc
push edx
lea eax, [esp + eax + 0x3e28]
push ecx
call fcn.00412070
add esp, 0x1c
xor ebx, ebx
imul edi, edi, 0x3d
mov dword [esp + 0x5c], edi
jmp 0x415412
fstp st(0)
mov edx, dword [esi + 0x21d20]
fld dword [edx + 8]
mov eax, dword [ebp + 8]
fmul dword [eax + 0xd0]
push ecx
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x1f4]
fstp dword [esp + 0x38]
lea eax, [esp + 0xec]
fld dword [esp + 0x38]
fstp dword [esp]
push ecx
push edx
push eax
lea ecx, [esp + 0x2010]
push ecx
push esi
mov eax, ebx
call fcn.00412fd0
mov edx, dword [esp + 0x74]
lea eax, [ebx + ebx*2]
add eax, eax
add eax, eax
fld dword [esp + eax + 0xb0]
add esp, 0x18
fst qword [esp + 0x60]
or edi, 0xffffffff
fld dword [esp + eax + 0x9c]
mov dword [esp + 0x34], 0xd
fld dword [esp + eax + 0x94]
mov eax, dword [esp + 0x5c]
faddp st(2)
add eax, 0x50b2
mov dword [esp + 0x10], eax
lea eax, [esi + 0x21410]
fadd st(1), st(0)
add edx, ebx
fxch st(1)
mov dword [esp + 0x28], eax
lea eax, [esi + edx*4 + 0x142c8]
fstp dword [esp + 0x20]
mov dword [esp + 0x1c], eax
fmul qword [0x44d3b8]
fstp qword [esp + 0x80]
fldz
fld qword [0x4459d0]
jmp 0x4154ce
fxch st(1)
mov ecx, dword [esp + 0x28]
fxch st(1)
mov eax, dword [ecx]
fst dword [esp + 0x14]
add edi, 1
fst dword [esp + 0x18]
mov edx, eax
sub edx, edi
cmp edx, 4
jl 0x415570
lea ecx, [eax - 3]
fld dword [esp + edi*4 + 0xe8]
add edi, 4
cmp edi, ecx
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fadd dword [esp + edi*4 + 0xdc]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fadd dword [esp + edi*4 + 0xe0]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fadd dword [esp + edi*4 + 0xe4]
fstp dword [esp + 0x18]
fld dword [esp + edi*4 + 0x1e0]
fadd dword [esp + 0x14]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fadd dword [esp + edi*4 + 0x1e4]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fadd dword [esp + edi*4 + 0x1e8]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fadd dword [esp + edi*4 + 0x1ec]
fstp dword [esp + 0x14]
jl 0x4154f1
cmp edi, eax
jge 0x415599
fld dword [esp + edi*4 + 0xe8]
add edi, 1
cmp edi, eax
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [esp + edi*4 + 0x1ec]
fadd dword [esp + 0x14]
fstp dword [esp + 0x14]
jl 0x415574
fld dword [esp + edi*4 + 0xe8]
mov eax, dword [esp + 0x1c]
fmul st(2)
fadd dword [esp + 0x18]
fstp dword [eax + 0x3d0]
mov eax, 2
cmp dword [esp + ebx*4 + 0x40], eax
fld dword [esp + edi*4 + 0x1f0]
fmul st(2)
fadd dword [esp + 0x14]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fmul qword [0x44de00]
fstp dword [esp + 0x14]
jge 0x4155e5
cmp dword [esp + ebx*4 + 0x44], 1
jne 0x415692
test ebx, ebx
je 0x4155ec
lea eax, [ebx - 1]
mov ecx, dword [esp + 0x10]
add ecx, eax
fld dword [esi + ecx*4]
fstp dword [esp + 0x18]
fld dword [esp + 0x38]
fmul qword [0x44d3a8]
fstp dword [esp + 0x50]
fld1
fld dword [esp + 0x50]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
fld dword [esp + 0x14]
jp 0x415628
fstp st(1)
fld dword [esp + 0x18]
fstp dword [esp + 0x18]
jmp 0x41567b
fld st(2)
fucomp st(2)
fnstsw ax
test ah, 0x44
jp 0x41563b
fstp st(1)
fst dword [esp + 0x18]
jmp 0x41567b
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x415671
fstp st(3)
fstp st(1)
fxch st(1)
fst qword [esp + 0x50]
fdivr dword [esp + 0x18]
fxch st(1)
call fcn.00428de0
fmul qword [esp + 0x50]
fstp dword [esp + 0x18]
fld dword [esp + 0x14]
fldz
fld qword [0x4459d0]
fxch st(2)
jmp 0x41567b
fstp st(1)
fxch st(1)
fst dword [esp + 0x18]
fxch st(1)
fld dword [esp + 0x18]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x41568c
fstp st(0)
jmp 0x41568e
fstp st(1)
fstp dword [esp + 0x14]
cmp dword [esp + ebx*4 + 0x40], 1
jne 0x4156e4
test ebx, ebx
lea eax, [ebx - 1]
jne 0x4156a5
mov eax, 2
mov edx, dword [esp + 0x10]
add edx, eax
fld dword [esi + edx*4]
fstp dword [esp + 0x18]
fld dword [esp + 0x38]
fmul qword [0x44ddf8]
fstp dword [esp + 0x50]
fld1
fld dword [esp + 0x50]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
fld dword [esp + 0x14]
jp 0x415752
fstp st(1)
fld dword [esp + 0x18]
fstp dword [esp + 0x18]
jmp 0x4157a5
test ebx, ebx
je 0x4156fd
cmp dword [esp + ebx*4 + 0x3c], 3
jne 0x4157bc
cmp ebx, 2
je 0x415714
lea eax, [ebx + 1]
jmp 0x415716
mov eax, dword [esp + 0x24]
cmp dword [esi + eax*4 + 0x21c14], 3
jne 0x4157bc
lea eax, [ebx + 1]
jmp 0x415716
xor eax, eax
mov ecx, dword [esp + 0x10]
add ecx, eax
fld dword [esi + ecx*4]
fstp dword [esp + 0x18]
fld dword [esp + 0x38]
fmul qword [0x44ddf8]
fstp dword [esp + 0x50]
fld1
fld dword [esp + 0x50]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
fld dword [esp + 0x14]
jp 0x415752
fstp st(1)
fld dword [esp + 0x18]
fstp dword [esp + 0x18]
jmp 0x4157a5
fld st(2)
fucomp st(2)
fnstsw ax
test ah, 0x44
jp 0x415765
fstp st(1)
fst dword [esp + 0x18]
jmp 0x4157a5
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x41579b
fstp st(3)
fstp st(1)
fxch st(1)
fst qword [esp + 0x50]
fdivr dword [esp + 0x18]
fxch st(1)
call fcn.00428de0
fmul qword [esp + 0x50]
fstp dword [esp + 0x18]
fld dword [esp + 0x14]
fldz
fld qword [0x4459d0]
fxch st(2)
jmp 0x4157a5
fstp st(1)
fxch st(1)
fst dword [esp + 0x18]
fxch st(1)
fld dword [esp + 0x18]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4157b6
fstp st(0)
jmp 0x4157b8
fstp st(1)
fstp dword [esp + 0x14]
fld dword [esp + 0x20]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcom qword [esp + 0x80]
fnstsw ax
test ah, 0x41
jne 0x4157ff
fld dword [esp + 0x14]
fmul st(3)
fstp dword [esp + 0x14]
fld qword [esp + 0x60]
fmul qword [0x44d3b8]
fcompp
fnstsw ax
test ah, 5
jp 0x415801
fld dword [esp + 0x14]
fmul st(2)
fstp dword [esp + 0x14]
jmp 0x415801
fstp st(0)
mov eax, dword [esp + 0x1c]
fld dword [esp + 0x14]
add dword [esp + 0x28], 4
fstp dword [eax]
add dword [esp + 0x10], 3
add eax, 0xc
sub dword [esp + 0x34], 1
mov dword [esp + 0x1c], eax
jne 0x4154cc
add ebx, 1
fstp st(1)
cmp ebx, 3
jl 0x415410
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
mov dword [esi + eax*4 + 0x21c14], edx
mov esi, dword [esi + 0x21444]
xor edx, edx
xor edi, edi
test esi, esi
mov dword [esp + 0x1c], esi
jle 0x4159d8
mov ebx, dword [esp + 0x2c]
add ebx, 0x21a4c
fld dword [esp + edx*4 + 0x17f8]
mov ecx, dword [ebx - 0x100]
fstp dword [esp + 0x10]
sub ecx, 1
fld dword [esp + 0x10]
add edx, 1
cmp ecx, 4
fstp dword [esp + 0x14]
jl 0x41596c
lea esi, [ecx - 4]
shr esi, 2
add esi, 1
mov eax, esi
neg eax
lea ecx, [ecx + eax*4]
fld dword [esp + edx*4 + 0x17f8]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcompp
fnstsw ax
test ah, 5
jp 0x4158ca
fstp dword [esp + 0x14]
jmp 0x4158cc
fstp st(0)
fld dword [esp + edx*4 + 0x17fc]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcompp
fnstsw ax
test ah, 5
jp 0x4158fa
fstp dword [esp + 0x14]
jmp 0x4158fc
fstp st(0)
fld dword [esp + edx*4 + 0x1800]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcompp
fnstsw ax
test ah, 5
jp 0x41592a
fstp dword [esp + 0x14]
jmp 0x41592c
fstp st(0)
fld dword [esp + edx*4 + 0x1804]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcompp
fnstsw ax
test ah, 5
jp 0x41595a
fstp dword [esp + 0x14]
jmp 0x41595c
fstp st(0)
add edx, 4
sub esi, 1
jne 0x41589c
mov esi, dword [esp + 0x1c]
test ecx, ecx
jle 0x4159aa
fld dword [esp + edx*4 + 0x17f8]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcompp
fnstsw ax
test ah, 5
jp 0x41599e
fstp dword [esp + 0x14]
jmp 0x4159a0
fstp st(0)
sub ecx, 1
add edx, 1
test ecx, ecx
jg 0x415970
fld dword [esp + 0x10]
add edi, 1
fst dword [esp + edi*4 + 0xe4]
add ebx, 4
cmp edi, esi
fld dword [esp + 0x14]
fstp dword [esp + edi*4 + 0x2f4]
fmul dword [ebx - 4]
fstp dword [esp + edi*4 + 0x3f4]
jl 0x415864
mov edi, dword [esp + 0x2c]
mov eax, dword [edi + 0x21d04]
test eax, eax
je 0x415a0e
mov ecx, dword [esp + 0x24]
fstp st(0)
push ecx
lea edx, [esp + 0xec]
push edx
push eax
mov eax, esi
lea ebx, [esp + 0x504]
call fcn.00414870
fldz
add esp, 0xc
jmp 0x415c96
fld dword [esp + 0x3fc]
fadd dword [esp + 0x3f8]
fstp dword [esp + 0x10]
fld st(0)
fld dword [esp + 0x10]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x415ab9
fld dword [esp + 0x2f8]
fst dword [esp + 0x10]
fld dword [esp + 0x2fc]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x415a58
fstp dword [esp + 0x10]
jmp 0x415a5a
fstp st(0)
fld dword [esp + 0x10]
mov eax, dword [edi + 0x21950]
mov ecx, dword [edi + 0x2194c]
fadd st(0), st(0)
lea edx, [eax + ecx - 1]
mov dword [esp + 0x20], edx
fsub st(1)
fld qword [0x44d900]
fmul st(1), st(0)
fild dword [esp + 0x20]
fmulp st(3)
fxch st(1)
fdivrp st(2)
fxch st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
call fcn.00426db0
cmp eax, 8
jbe 0x415aa1
mov eax, 8
fld dword [eax*4 + 0x44dcfc]
fmul dword [esp + 0xe8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x415ac1
fld qword [0x44d900]
fxch st(1)
mov edi, dword [esp + 0x1c]
fstp dword [esp + 0x4f8]
mov esi, 1
add edi, 0xffffffff
cmp edi, esi
jle 0x415bc9
mov ebx, dword [esp + 0x2c]
fld qword [0x44ddf0]
add ebx, 0x21950
fld dword [esp + esi*4 + 0x3f4]
fadd dword [esp + esi*4 + 0x3f8]
fadd dword [esp + esi*4 + 0x3fc]
fstp dword [esp + 0x10]
fld st(2)
fld dword [esp + 0x10]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x415bb2
fld dword [esp + esi*4 + 0x2f4]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld dword [esp + esi*4 + 0x2f8]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415b44
fld dword [esp + esi*4 + 0x2f8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld dword [esp + esi*4 + 0x2fc]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415b63
fld dword [esp + esi*4 + 0x2fc]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
mov eax, dword [ebx - 4]
add eax, dword [ebx + 4]
fmul st(2)
mov ecx, dword [ebx]
lea edx, [eax + ecx - 1]
fsub st(1)
mov dword [esp + 0x20], edx
fmul st(3)
fild dword [esp + 0x20]
fmulp st(2)
fdivrp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
call fcn.00426db0
cmp eax, 8
jbe 0x415b9c
mov eax, 8
fld dword [eax*4 + 0x44dcfc]
fmul dword [esp + esi*4 + 0xe8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fstp dword [esp + esi*4 + 0x4f8]
add esi, 1
add ebx, 4
cmp esi, edi
jl 0x415aec
fstp st(0)
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x21444]
fld dword [esp + eax*4 + 0x3f4]
fadd dword [esp + eax*4 + 0x3f0]
fstp dword [esp + 0x10]
fld st(1)
fld dword [esp + 0x10]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x415c89
mov eax, dword [ecx + 0x21444]
fld dword [esp + eax*4 + 0x2f0]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld dword [esp + eax*4 + 0x2f4]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415c2e
mov eax, dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x2f4]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
mov eax, dword [ecx + 0x21444]
mov edx, dword [ecx + eax*4 + 0x21948]
fadd st(0), st(0)
mov eax, dword [ecx + eax*4 + 0x21944]
lea ecx, [edx + eax - 1]
fsub st(1)
mov dword [esp + 0x20], ecx
fmulp st(2)
fimul dword [esp + 0x20]
fdivp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
call fcn.00426db0
cmp eax, 8
jbe 0x415c71
mov eax, 8
fld dword [eax*4 + 0x44dcfc]
fmul dword [esp + esi*4 + 0xe8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x415c8b
fstp st(1)
mov edi, dword [esp + 0x2c]
fstp dword [esp + esi*4 + 0x4f8]
xor esi, esi
cmp dword [edi + 0x21444], esi
mov dword [esp + 0x14], esi
jle 0x415e7a
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x2c]
shl edx, 8
lea ecx, [edx + eax + 0x13264]
add eax, 0x21450
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ecx, dword [edx + 0x14268]
mov edi, dword [eax - 4]
fld dword [ecx + esi*4]
fmul dword [esp + edi*4 + 0x4f8]
add edi, 1
add esi, 1
cmp edi, dword [eax]
fstp dword [esp + 0x18]
jg 0x415d4c
mov ebx, edi
fstp st(0)
sub ebx, dword [esp + 0x14]
jmp 0x415d00
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x14268]
fld dword [edx + esi*4]
push eax
fmul dword [esp + edi*4 + 0x4fc]
push ebx
push edi
sub esp, 8
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp dword [esp + 4]
fld dword [esp + 0x2c]
fstp dword [esp]
call fcn.004146d0
mov eax, dword [esp + 0x3c]
fstp dword [esp + 0x2c]
add edi, 1
add esp, 0x14
add esi, 1
add ebx, 1
cmp edi, dword [eax]
jle 0x415d00
fldz
fld dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
fmul qword [0x44dde8]
mov ecx, dword [esp + 0x30]
cmp dword [ebx + ecx*4 + 0x21b68], 2
mov edi, dword [esp + 0x1c]
fstp dword [esp + 0x18]
jne 0x415d84
fld dword [esp + 0x18]
mov eax, dword [esp + 0x14]
fst dword [esp + eax*4 + 0x1f0]
jmp 0x415e50
fld dword [edi]
fadd st(0), st(0)
fld dword [edi + 0x400]
fmul qword [0x44a008]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x415da1
fld st(1)
jmp 0x415da3
fld st(0)
fld dword [esp + 0x18]
fld st(0)
fst qword [esp + 0x60]
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 5
jp 0x415dc0
fstp st(3)
fstp st(1)
fld st(0)
jmp 0x415dd3
fxch st(3)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x415dcf
fstp st(2)
jmp 0x415dd1
fstp st(0)
fxch st(1)
fstp dword [esp + 0x34]
fld1
fld dword [esp + 0x38]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jp 0x415df6
fstp st(0)
fstp st(0)
fld dword [esp + 0x34]
fstp dword [esp + 0x10]
jmp 0x415e41
fld st(3)
fucomp st(1)
fnstsw ax
test ah, 0x44
jp 0x415e0b
fstp st(0)
fstp st(0)
fst dword [esp + 0x10]
jmp 0x415e41
fxch st(2)
fcom st(3)
fnstsw ax
test ah, 0x41
jne 0x415e35
fstp st(0)
fstp st(2)
fld dword [esp + 0x34]
fdivrp st(2)
call fcn.00428de0
fmul qword [esp + 0x60]
fstp dword [esp + 0x10]
fld dword [esp + 0x18]
fldz
jmp 0x415e3f
fstp st(2)
fstp st(0)
fxch st(1)
fst dword [esp + 0x10]
fxch st(1)
fld dword [esp + 0x10]
mov eax, dword [esp + 0x14]
fstp dword [esp + eax*4 + 0x1f0]
fld dword [edi]
add dword [esp + 0x28], 8
fstp dword [edi + 0x400]
add eax, 1
add edi, 4
fstp dword [edi - 4]
cmp eax, dword [ebx + 0x21444]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edi
jl 0x415cc7
mov esi, dword [esp + 0x24]
fstp st(0)
mov eax, dword [esp + 0x2c]
push esi
lea edx, [esp + 0xec]
push edx
push eax
lea edi, [esp + 0x1fc]
call fcn.00412e30
add esi, 1
add esp, 0xc
cmp esi, dword [esp + 0x3c]
mov dword [esp + 0x24], esi
jl 0x414d33
fldz
jmp 0x415eb4
fstp st(1)
mov esi, dword [ebp + 8]
fcomp dword [esi + 0xec]
fnstsw ax
test ah, 0x44
jnp 0x415ed8
fld dword [esi + 0xec]
push ecx
mov eax, esi
fstp dword [esp]
call fcn.00412700
add esp, 4
cmp dword [esi + 0x2c], 1
jne 0x415f35
mov edi, dword [esp + 0x2c]
push edi
call fcn.00412800
fld dword [esi + 0xf4]
fstp dword [esp + 0x24]
add esp, 4
fldz
fld dword [esp + 0x20]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x415f33
mov ecx, dword [edi + 0x21d20]
fld dword [ecx + 8]
sub esp, 8
fmul dword [esi + 0xd0]
mov eax, edi
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.00412ab0
add esp, 8
jmp 0x415f35
fstp st(0)
mov edx, dword [ebp + 0x30]
push edx
push esi
lea eax, [esp + 0x68]
lea edx, [esp + 0x80]
call fcn.004132f0
xor esi, esi
add esp, 8
cmp dword [esp + 0x3c], esi
jle 0x415ff8
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x30]
add eax, eax
mov dword [esp + 0x20], eax
imul eax, eax, 0x1e8
add eax, dword [ebp + 0x1c]
mov dword [esp + 0x1c], eax
cmp esi, 1
jle 0x415fa2
mov edi, dword [ebp + 0x28]
add edi, 0xfffffff8
xor ecx, ecx
cmp dword [ebx], 2
je 0x415f8a
cmp dword [ebx + 4], 2
jne 0x415f8f
mov ecx, 2
mov eax, dword [esp + 0x20]
lea eax, [eax + esi - 2]
imul eax, eax, 0x1e8
add eax, dword [ebp + 0x20]
jmp 0x415fac
mov edi, dword [ebp + 0x24]
mov ecx, dword [ebx + esi*4]
mov eax, dword [esp + 0x1c]
cmp ecx, 2
push ecx
jne 0x415fcb
mov ecx, dword [esp + 0x30]
fld dword [ecx + 0xcefc]
mov ebx, eax
fstp dword [esp]
call fcn.00414990
mov ebx, dword [ebp + 0x30]
jmp 0x415fdd
mov edx, dword [esp + 0x30]
fld dword [edx + 0xcefc]
fstp dword [esp]
call fcn.00414a80
add dword [esp + 0x20], 0x1e8
fstp dword [edi + esi*4]
add esi, 1
add esp, 4
cmp esi, dword [esp + 0x3c]
jl 0x415f72
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret