403391:	0f 84 cc 00 00 00    	je     0x403463
403397:	f6 45 10 10          	testb  $0x10,0x10(%ebp)
40339b:	0f 84 c2 00 00 00    	je     0x403463
4033a1:	33 f6                	xor    %esi,%esi
4033a3:	a8 10                	test   $0x10,%al
4033a5:	74 02                	je     0x4033a9
4033a7:	8b f3                	mov    %ebx,%esi
4033a9:	d9 ee                	fldz
4033ab:	57                   	push   %edi
4033ac:	8b 7d 0c             	mov    0xc(%ebp),%edi
4033af:	dc 1f                	fcompl (%edi)
4033b1:	df e0                	fnstsw %ax
4033b3:	f6 c4 44             	test   $0x44,%ah
4033b6:	0f 8b 91 00 00 00    	jnp    0x40344d
4033bc:	dd 07                	fldl   (%edi)
4033be:	8d 45 f8             	lea    -0x8(%ebp),%eax
4033c1:	50                   	push   %eax
4033c2:	51                   	push   %ecx
4033c3:	51                   	push   %ecx
4033c4:	dd 1c 24             	fstpl  (%esp)
4033c7:	e8 78 03 00 00       	call   0x403744
4033cc:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4033cf:	dd 5d ec             	fstpl  -0x14(%ebp)
4033d2:	81 c1 00 fa ff ff    	add    $0xfffffa00,%ecx
4033d8:	83 c4 0c             	add    $0xc,%esp
4033db:	81 f9 ce fb ff ff    	cmp    $0xfffffbce,%ecx
4033e1:	7d 0d                	jge    0x4033f0
4033e3:	dd 45 ec             	fldl   -0x14(%ebp)
4033e6:	8b f3                	mov    %ebx,%esi
4033e8:	dc 0d 00 da 41 00    	fmull  0x41da00
4033ee:	eb 53                	jmp    0x403443
4033f0:	d9 ee                	fldz
4033f2:	dc 5d ec             	fcompl -0x14(%ebp)
4033f5:	df e0                	fnstsw %ax
4033f7:	f6 c4 41             	test   $0x41,%ah
4033fa:	75 04                	jne    0x403400
4033fc:	8b d3                	mov    %ebx,%edx
4033fe:	eb 02                	jmp    0x403402
403400:	33 d2                	xor    %edx,%edx
403402:	8b 45 f2             	mov    -0xe(%ebp),%eax
403405:	83 e0 0f             	and    $0xf,%eax
403408:	83 c8 10             	or     $0x10,%eax
40340b:	66 89 45 f2          	mov    %ax,-0xe(%ebp)
40340f:	b8 03 fc ff ff       	mov    $0xfffffc03,%eax
403414:	3b c8                	cmp    %eax,%ecx
403416:	7d 22                	jge    0x40343a
403418:	2b c1                	sub    %ecx,%eax
40341a:	84 5d ec             	test   %bl,-0x14(%ebp)
40341d:	74 06                	je     0x403425
40341f:	85 f6                	test   %esi,%esi
403421:	75 02                	jne    0x403425
403423:	8b f3                	mov    %ebx,%esi
403425:	d1 6d ec             	shrl   $1,-0x14(%ebp)
403428:	84 5d f0             	test   %bl,-0x10(%ebp)
40342b:	74 07                	je     0x403434
40342d:	81 4d ec 00 00 00 80 	orl    $0x80000000,-0x14(%ebp)
403434:	d1 6d f0             	shrl   $1,-0x10(%ebp)
403437:	48                   	dec    %eax
403438:	75 e0                	jne    0x40341a
40343a:	85 d2                	test   %edx,%edx
40343c:	74 08                	je     0x403446
40343e:	dd 45 ec             	fldl   -0x14(%ebp)
403441:	d9 e0                	fchs
403443:	dd 5d ec             	fstpl  -0x14(%ebp)
403446:	dd 45 ec             	fldl   -0x14(%ebp)
403449:	dd 1f                	fstpl  (%edi)
40344b:	eb 02                	jmp    0x40344f
40344d:	8b f3                	mov    %ebx,%esi
40344f:	5f                   	pop    %edi
403450:	85 f6                	test   %esi,%esi
403452:	74 08                	je     0x40345c
403454:	6a 10                	push   $0x10
403456:	e8 ec 03 00 00       	call   0x403847
40345b:	59                   	pop    %ecx
40345c:	83 65 fc fd          	andl   $0xfffffffd,-0x4(%ebp)
403460:	8b 75 fc             	mov    -0x4(%ebp),%esi
403463:	f6 45 08 10          	testb  $0x10,0x8(%ebp)
403467:	74 11                	je     0x40347a
403469:	f6 45 10 20          	testb  $0x20,0x10(%ebp)
40346d:	74 0b                	je     0x40347a
40346f:	6a 20                	push   $0x20
403471:	e8 d1 03 00 00       	call   0x403847
403476:	59                   	pop    %ecx
403477:	83 e6 ef             	and    $0xffffffef,%esi
40347a:	33 c0                	xor    %eax,%eax
40347c:	85 f6                	test   %esi,%esi
40347e:	5e                   	pop    %esi
40347f:	0f 94 c0             	sete   %al
403482:	5b                   	pop    %ebx
403483:	c9                   	leave
403484:	c3                   	ret
403485:	8b ff                	mov    %edi,%edi
403487:	55                   	push   %ebp
403488:	8b ec                	mov    %esp,%ebp
40348a:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
40348e:	74 15                	je     0x4034a5
403490:	7e 1e                	jle    0x4034b0
403492:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
403496:	7f 18                	jg     0x4034b0
403498:	e8 af f9 ff ff       	call   0x402e4c
40349d:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
4034a3:	5d                   	pop    %ebp
4034a4:	c3                   	ret
4034a5:	e8 a2 f9 ff ff       	call   0x402e4c
4034aa:	c7 00 21 00 00 00    	movl   $0x21,(%eax)
4034b0:	5d                   	pop    %ebp
4034b1:	c3                   	ret
4034b2:	8b ff                	mov    %edi,%edi
4034b4:	55                   	push   %ebp
4034b5:	8b ec                	mov    %esp,%ebp
4034b7:	8a 45 08             	mov    0x8(%ebp),%al
4034ba:	a8 20                	test   $0x20,%al
4034bc:	74 04                	je     0x4034c2
4034be:	6a 05                	push   $0x5
4034c0:	eb 17                	jmp    0x4034d9
4034c2:	a8 08                	test   $0x8,%al
4034c4:	74 05                	je     0x4034cb
4034c6:	33 c0                	xor    %eax,%eax
4034c8:	40                   	inc    %eax
4034c9:	5d                   	pop    %ebp
4034ca:	c3                   	ret
4034cb:	a8 04                	test   $0x4,%al
4034cd:	74 04                	je     0x4034d3
4034cf:	6a 02                	push   $0x2
4034d1:	eb 06                	jmp    0x4034d9
4034d3:	a8 01                	test   $0x1,%al
4034d5:	74 05                	je     0x4034dc
4034d7:	6a 03                	push   $0x3
4034d9:	58                   	pop    %eax
4034da:	5d                   	pop    %ebp
4034db:	c3                   	ret
4034dc:	0f b6 c0             	movzbl %al,%eax
4034df:	83 e0 02             	and    $0x2,%eax
4034e2:	03 c0                	add    %eax,%eax
4034e4:	5d                   	pop    %ebp
4034e5:	c3                   	ret
4034e6:	8b ff                	mov    %edi,%edi
4034e8:	55                   	push   %ebp
4034e9:	8b ec                	mov    %esp,%ebp
4034eb:	83 ec 20             	sub    $0x20,%esp
4034ee:	33 c0                	xor    %eax,%eax
4034f0:	8b 0c c5 b0 f2 41 00 	mov    0x41f2b0(,%eax,8),%ecx
4034f7:	3b 4d 0c             	cmp    0xc(%ebp),%ecx
4034fa:	74 64                	je     0x403560
4034fc:	40                   	inc    %eax
4034fd:	83 f8 1d             	cmp    $0x1d,%eax
403500:	7c ee                	jl     0x4034f0
403502:	33 c0                	xor    %eax,%eax
403504:	89 45 e4             	mov    %eax,-0x1c(%ebp)
403507:	85 c0                	test   %eax,%eax
403509:	74 5e                	je     0x403569
40350b:	8b 45 10             	mov    0x10(%ebp),%eax
40350e:	89 45 e8             	mov    %eax,-0x18(%ebp)
403511:	8b 45 14             	mov    0x14(%ebp),%eax
403514:	89 45 ec             	mov    %eax,-0x14(%ebp)
403517:	8b 45 18             	mov    0x18(%ebp),%eax
40351a:	89 45 f0             	mov    %eax,-0x10(%ebp)
40351d:	8b 45 1c             	mov    0x1c(%ebp),%eax
403520:	56                   	push   %esi
403521:	8b 75 08             	mov    0x8(%ebp),%esi
403524:	89 45 f4             	mov    %eax,-0xc(%ebp)
403527:	8b 45 20             	mov    0x20(%ebp),%eax
40352a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40352d:	8b 45 24             	mov    0x24(%ebp),%eax
403530:	68 ff ff 00 00       	push   $0xffff
403535:	ff 75 28             	push   0x28(%ebp)
403538:	89 75 e0             	mov    %esi,-0x20(%ebp)
40353b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40353e:	e8 db 02 00 00       	call   0x40381e
403543:	8d 45 e0             	lea    -0x20(%ebp),%eax
403546:	50                   	push   %eax
403547:	e8 13 f9 ff ff       	call   0x402e5f
40354c:	83 c4 0c             	add    $0xc,%esp
40354f:	85 c0                	test   %eax,%eax
403551:	75 07                	jne    0x40355a
403553:	56                   	push   %esi
403554:	e8 2c ff ff ff       	call   0x403485
403559:	59                   	pop    %ecx
40355a:	dd 45 f8             	fldl   -0x8(%ebp)
40355d:	5e                   	pop    %esi
40355e:	c9                   	leave
40355f:	c3                   	ret
403560:	8b 04 c5 b4 f2 41 00 	mov    0x41f2b4(,%eax,8),%eax
403567:	eb 9b                	jmp    0x403504
403569:	68 ff ff 00 00       	push   $0xffff
40356e:	ff 75 28             	push   0x28(%ebp)
403571:	e8 a8 02 00 00       	call   0x40381e
403576:	ff 75 08             	push   0x8(%ebp)
403579:	e8 07 ff ff ff       	call   0x403485
40357e:	dd 45 20             	fldl   0x20(%ebp)
403581:	83 c4 0c             	add    $0xc,%esp
403584:	c9                   	leave
403585:	c3                   	ret
403586:	8b ff                	mov    %edi,%edi
403588:	55                   	push   %ebp
403589:	8b ec                	mov    %esp,%ebp
40358b:	83 3d a0 f2 41 00 00 	cmpl   $0x0,0x41f2a0
403592:	75 28                	jne    0x4035bc
403594:	ff 75 14             	push   0x14(%ebp)
403597:	dd 45 0c             	fldl   0xc(%ebp)
40359a:	83 ec 18             	sub    $0x18,%esp
40359d:	dd 5c 24 10          	fstpl  0x10(%esp)
4035a1:	d9 ee                	fldz
4035a3:	dd 5c 24 08          	fstpl  0x8(%esp)
4035a7:	dd 45 0c             	fldl   0xc(%ebp)
4035aa:	dd 1c 24             	fstpl  (%esp)
4035ad:	ff 75 08             	push   0x8(%ebp)
4035b0:	6a 01                	push   $0x1
4035b2:	e8 2f ff ff ff       	call   0x4034e6
4035b7:	83 c4 24             	add    $0x24,%esp
4035ba:	5d                   	pop    %ebp
4035bb:	c3                   	ret
4035bc:	e8 8b f8 ff ff       	call   0x402e4c
4035c1:	68 ff ff 00 00       	push   $0xffff
4035c6:	ff 75 14             	push   0x14(%ebp)
4035c9:	c7 00 21 00 00 00    	movl   $0x21,(%eax)
4035cf:	e8 4a 02 00 00       	call   0x40381e
4035d4:	dd 45 0c             	fldl   0xc(%ebp)
4035d7:	59                   	pop    %ecx
4035d8:	59                   	pop    %ecx
4035d9:	5d                   	pop    %ebp
4035da:	c3                   	ret
4035db:	8b ff                	mov    %edi,%edi
4035dd:	53                   	push   %ebx
4035de:	8b dc                	mov    %esp,%ebx
4035e0:	51                   	push   %ecx
4035e1:	51                   	push   %ecx
4035e2:	83 e4 f0             	and    $0xfffffff0,%esp
4035e5:	83 c4 04             	add    $0x4,%esp
4035e8:	55                   	push   %ebp
4035e9:	8b 6b 04             	mov    0x4(%ebx),%ebp
4035ec:	89 6c 24 04          	mov    %ebp,0x4(%esp)
4035f0:	8b ec                	mov    %esp,%ebp
4035f2:	81 ec 80 00 00 00    	sub    $0x80,%esp
4035f8:	a1 04 f0 41 00       	mov    0x41f004,%eax
4035fd:	33 c5                	xor    %ebp,%eax
4035ff:	89 45 fc             	mov    %eax,-0x4(%ebp)
403602:	ff 73 20             	push   0x20(%ebx)
403605:	8d 43 18             	lea    0x18(%ebx),%eax
403608:	50                   	push   %eax
403609:	ff 73 08             	push   0x8(%ebx)
40360c:	e8 92 fc ff ff       	call   0x4032a3
403611:	83 c4 0c             	add    $0xc,%esp
403614:	85 c0                	test   %eax,%eax
403616:	75 22                	jne    0x40363a
403618:	83 65 c0 fe          	andl   $0xfffffffe,-0x40(%ebp)
40361c:	8d 43 18             	lea    0x18(%ebx),%eax
40361f:	50                   	push   %eax
403620:	8d 43 10             	lea    0x10(%ebx),%eax
403623:	50                   	push   %eax
403624:	ff 73 0c             	push   0xc(%ebx)
403627:	8d 43 20             	lea    0x20(%ebx),%eax
40362a:	ff 73 08             	push   0x8(%ebx)
40362d:	50                   	push   %eax
40362e:	8d 45 80             	lea    -0x80(%ebp),%eax
403631:	50                   	push   %eax
403632:	e8 49 fc ff ff       	call   0x403280
403637:	83 c4 18             	add    $0x18,%esp
40363a:	ff 73 08             	push   0x8(%ebx)
40363d:	e8 70 fe ff ff       	call   0x4034b2
403642:	83 c4 04             	add    $0x4,%esp
403645:	83 3d a0 f2 41 00 00 	cmpl   $0x0,0x41f2a0
40364c:	75 2b                	jne    0x403679
40364e:	85 c0                	test   %eax,%eax
403650:	74 27                	je     0x403679
403652:	ff 73 20             	push   0x20(%ebx)
403655:	dd 43 18             	fldl   0x18(%ebx)
403658:	83 ec 18             	sub    $0x18,%esp
40365b:	dd 5c 24 10          	fstpl  0x10(%esp)
40365f:	d9 ee                	fldz
403661:	dd 5c 24 08          	fstpl  0x8(%esp)
403665:	dd 43 10             	fldl   0x10(%ebx)
403668:	dd 1c 24             	fstpl  (%esp)
40366b:	ff 73 0c             	push   0xc(%ebx)
40366e:	50                   	push   %eax
40366f:	e8 72 fe ff ff       	call   0x4034e6
403674:	83 c4 24             	add    $0x24,%esp
403677:	eb 1a                	jmp    0x403693
403679:	50                   	push   %eax
40367a:	e8 06 fe ff ff       	call   0x403485
40367f:	c7 04 24 ff ff 00 00 	movl   $0xffff,(%esp)
403686:	ff 73 20             	push   0x20(%ebx)
403689:	e8 90 01 00 00       	call   0x40381e
40368e:	dd 43 18             	fldl   0x18(%ebx)
403691:	59                   	pop    %ecx
403692:	59                   	pop    %ecx
403693:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403696:	33 cd                	xor    %ebp,%ecx
403698:	e8 63 d9 ff ff       	call   0x401000
40369d:	8b e5                	mov    %ebp,%esp
40369f:	5d                   	pop    %ebp
4036a0:	8b e3                	mov    %ebx,%esp
4036a2:	5b                   	pop    %ebx
4036a3:	c3                   	ret
4036a4:	8b ff                	mov    %edi,%edi
4036a6:	55                   	push   %ebp
4036a7:	8b ec                	mov    %esp,%ebp
4036a9:	51                   	push   %ecx
4036aa:	51                   	push   %ecx
4036ab:	dd 45 08             	fldl   0x8(%ebp)
4036ae:	d9 fc                	frndint
4036b0:	dd 5d f8             	fstpl  -0x8(%ebp)
4036b3:	dd 45 f8             	fldl   -0x8(%ebp)
4036b6:	c9                   	leave
4036b7:	c3                   	ret
4036b8:	8b ff                	mov    %edi,%edi
4036ba:	55                   	push   %ebp
4036bb:	8b ec                	mov    %esp,%ebp
4036bd:	51                   	push   %ecx
4036be:	51                   	push   %ecx
4036bf:	8b 45 10             	mov    0x10(%ebp),%eax
4036c2:	dd 45 08             	fldl   0x8(%ebp)
4036c5:	8b 4d 0e             	mov    0xe(%ebp),%ecx
4036c8:	dd 5d f8             	fstpl  -0x8(%ebp)
4036cb:	05 fe 03 00 00       	add    $0x3fe,%eax
4036d0:	c1 e0 04             	shl    $0x4,%eax
4036d3:	81 e1 0f 80 00 00    	and    $0x800f,%ecx
4036d9:	0b c1                	or     %ecx,%eax
4036db:	66 89 45 fe          	mov    %ax,-0x2(%ebp)
4036df:	dd 45 f8             	fldl   -0x8(%ebp)
4036e2:	c9                   	leave
4036e3:	c3                   	ret
4036e4:	8b ff                	mov    %edi,%edi
4036e6:	55                   	push   %ebp
4036e7:	8b ec                	mov    %esp,%ebp
4036e9:	33 d2                	xor    %edx,%edx
4036eb:	81 7d 0c 00 00 f0 7f 	cmpl   $0x7ff00000,0xc(%ebp)
4036f2:	75 0a                	jne    0x4036fe
4036f4:	39 55 08             	cmp    %edx,0x8(%ebp)
4036f7:	75 18                	jne    0x403711
4036f9:	33 c0                	xor    %eax,%eax
4036fb:	40                   	inc    %eax
4036fc:	5d                   	pop    %ebp
4036fd:	c3                   	ret
4036fe:	81 7d 0c 00 00 f0 ff 	cmpl   $0xfff00000,0xc(%ebp)
403705:	75 0a                	jne    0x403711
403707:	39 55 08             	cmp    %edx,0x8(%ebp)
40370a:	75 05                	jne    0x403711
40370c:	6a 02                	push   $0x2
40370e:	58                   	pop    %eax
40370f:	5d                   	pop    %ebp
403710:	c3                   	ret
403711:	8b 4d 0e             	mov    0xe(%ebp),%ecx
403714:	b8 f8 7f 00 00       	mov    $0x7ff8,%eax
403719:	23 c8                	and    %eax,%ecx
40371b:	66 3b c8             	cmp    %ax,%cx
40371e:	75 04                	jne    0x403724
403720:	6a 03                	push   $0x3
403722:	eb ea                	jmp    0x40370e
403724:	b8 f0 7f 00 00       	mov    $0x7ff0,%eax