40948f:	74 43                	je     0x4094d4
409491:	57                   	push   %edi
409492:	6a 10                	push   $0x10
409494:	e8 5d 7b 01 00       	call   0x420ff6
409499:	8b f8                	mov    %eax,%edi
40949b:	59                   	pop    %ecx
40949c:	85 ff                	test   %edi,%edi
40949e:	74 36                	je     0x4094d6
4094a0:	8b ce                	mov    %esi,%ecx
4094a2:	e8 f0 04 00 00       	call   0x409997
4094a7:	8b 56 08             	mov    0x8(%esi),%edx
4094aa:	8b 0a                	mov    (%edx),%ecx
4094ac:	89 0f                	mov    %ecx,(%edi)
4094ae:	8b 4a 04             	mov    0x4(%edx),%ecx
4094b1:	89 4f 04             	mov    %ecx,0x4(%edi)
4094b4:	8b 42 08             	mov    0x8(%edx),%eax
4094b7:	89 47 08             	mov    %eax,0x8(%edi)
4094ba:	8b 42 0c             	mov    0xc(%edx),%eax
4094bd:	89 47 0c             	mov    %eax,0xc(%edi)
4094c0:	ff 00                	incl   (%eax)
4094c2:	8b ce                	mov    %esi,%ecx
4094c4:	e8 57 05 00 00       	call   0x409a20
4094c9:	89 7e 08             	mov    %edi,0x8(%esi)
4094cc:	c7 46 0c 04 00 00 00 	movl   $0x4,0xc(%esi)
4094d3:	5f                   	pop    %edi
4094d4:	5e                   	pop    %esi
4094d5:	c3                   	ret
4094d6:	33 ff                	xor    %edi,%edi
4094d8:	eb e8                	jmp    0x4094c2
4094da:	56                   	push   %esi
4094db:	8b f1                	mov    %ecx,%esi
4094dd:	e8 60 07 00 00       	call   0x409c42
4094e2:	84 c0                	test   %al,%al
4094e4:	75 1d                	jne    0x409503
4094e6:	83 7e 0c 03          	cmpl   $0x3,0xc(%esi)
4094ea:	74 17                	je     0x409503
4094ec:	8b ce                	mov    %esi,%ecx
4094ee:	e8 13 01 00 00       	call   0x409606
4094f3:	8b ce                	mov    %esi,%ecx
4094f5:	5e                   	pop    %esi
4094f6:	84 c0                	test   %al,%al
4094f8:	0f 85 95 00 00 00    	jne    0x409593
4094fe:	e9 02 00 00 00       	jmp    0x409505
409503:	5e                   	pop    %esi
409504:	c3                   	ret
409505:	55                   	push   %ebp
409506:	8b ec                	mov    %esp,%ebp
409508:	51                   	push   %ecx
409509:	56                   	push   %esi
40950a:	8b f1                	mov    %ecx,%esi
40950c:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
409510:	74 5e                	je     0x409570
409512:	83 7e 0c 02          	cmpl   $0x2,0xc(%esi)
409516:	74 58                	je     0x409570
409518:	53                   	push   %ebx
409519:	57                   	push   %edi
40951a:	e8 27 08 00 00       	call   0x409d46
40951f:	8b ca                	mov    %edx,%ecx
409521:	33 db                	xor    %ebx,%ebx
409523:	83 7e 0c 04          	cmpl   $0x4,0xc(%esi)
409527:	8b f8                	mov    %eax,%edi
409529:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40952c:	75 0b                	jne    0x409539
40952e:	8b 56 08             	mov    0x8(%esi),%edx
409531:	8b 02                	mov    (%edx),%eax
409533:	66 83 38 30          	cmpw   $0x30,(%eax)
409537:	74 3c                	je     0x409575
409539:	83 f9 ff             	cmp    $0xffffffff,%ecx
40953c:	7c 51                	jl     0x40958f
40953e:	7f 08                	jg     0x409548
409540:	81 ff 00 00 00 80    	cmp    $0x80000000,%edi
409546:	72 47                	jb     0x40958f
409548:	3b cb                	cmp    %ebx,%ecx
40954a:	7c 0a                	jl     0x409556
40954c:	7f 41                	jg     0x40958f
40954e:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
409554:	77 39                	ja     0x40958f
409556:	8b ce                	mov    %esi,%ecx
409558:	e8 c3 04 00 00       	call   0x409a20
40955d:	89 3e                	mov    %edi,(%esi)
40955f:	84 db                	test   %bl,%bl
409561:	0f 85 11 61 03 00    	jne    0x43f678
409567:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
40956e:	5f                   	pop    %edi
40956f:	5b                   	pop    %ebx
409570:	5e                   	pop    %esi
409571:	8b e5                	mov    %ebp,%esp
409573:	5d                   	pop    %ebp
409574:	c3                   	ret
409575:	0f b7 40 02          	movzwl 0x2(%eax),%eax
409579:	83 f8 78             	cmp    $0x78,%eax
40957c:	74 05                	je     0x409583
40957e:	83 f8 58             	cmp    $0x58,%eax
409581:	75 b6                	jne    0x409539
409583:	83 7a 04 12          	cmpl   $0x12,0x4(%edx)
409587:	77 b0                	ja     0x409539
409589:	83 7a 04 0a          	cmpl   $0xa,0x4(%edx)
40958d:	eb c5                	jmp    0x409554
40958f:	b3 01                	mov    $0x1,%bl
409591:	eb c3                	jmp    0x409556
409593:	55                   	push   %ebp
409594:	8b ec                	mov    %esp,%ebp
409596:	51                   	push   %ecx
409597:	51                   	push   %ecx
409598:	56                   	push   %esi
409599:	8b f1                	mov    %ecx,%esi
40959b:	83 7e 0c 03          	cmpl   $0x3,0xc(%esi)
40959f:	74 1b                	je     0x4095bc
4095a1:	e8 52 07 00 00       	call   0x409cf8
4095a6:	8b ce                	mov    %esi,%ecx
4095a8:	dd 5d f8             	fstpl  -0x8(%ebp)
4095ab:	e8 70 04 00 00       	call   0x409a20
4095b0:	dd 45 f8             	fldl   -0x8(%ebp)
4095b3:	dd 1e                	fstpl  (%esi)
4095b5:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
4095bc:	5e                   	pop    %esi
4095bd:	8b e5                	mov    %ebp,%esp
4095bf:	5d                   	pop    %ebp
4095c0:	c3                   	ret
4095c1:	83 79 0c 04          	cmpl   $0x4,0xc(%ecx)
4095c5:	75 09                	jne    0x4095d0
4095c7:	e8 13 00 00 00       	call   0x4095df
4095cc:	84 c0                	test   %al,%al
4095ce:	75 03                	jne    0x4095d3
4095d0:	32 c0                	xor    %al,%al
4095d2:	c3                   	ret
4095d3:	8b 41 08             	mov    0x8(%ecx),%eax
4095d6:	83 78 04 12          	cmpl   $0x12,0x4(%eax)
4095da:	77 f4                	ja     0x4095d0
4095dc:	b0 01                	mov    $0x1,%al
4095de:	c3                   	ret
4095df:	83 79 0c 04          	cmpl   $0x4,0xc(%ecx)
4095e3:	75 0b                	jne    0x4095f0
4095e5:	8b 41 08             	mov    0x8(%ecx),%eax
4095e8:	8b 00                	mov    (%eax),%eax
4095ea:	66 83 38 30          	cmpw   $0x30,(%eax)
4095ee:	74 03                	je     0x4095f3
4095f0:	32 c0                	xor    %al,%al
4095f2:	c3                   	ret
4095f3:	0f b7 40 02          	movzwl 0x2(%eax),%eax
4095f7:	83 f8 78             	cmp    $0x78,%eax
4095fa:	75 03                	jne    0x4095ff
4095fc:	b0 01                	mov    $0x1,%al
4095fe:	c3                   	ret
4095ff:	83 f8 58             	cmp    $0x58,%eax
409602:	75 ec                	jne    0x4095f0
409604:	eb f6                	jmp    0x4095fc
409606:	83 79 0c 04          	cmpl   $0x4,0xc(%ecx)
40960a:	56                   	push   %esi
40960b:	75 27                	jne    0x409634
40960d:	8b 41 08             	mov    0x8(%ecx),%eax
409610:	68 80 fb 48 00       	push   $0x48fb80
409615:	8b 30                	mov    (%eax),%esi
409617:	56                   	push   %esi
409618:	e8 9d a5 01 00       	call   0x423bba
40961d:	59                   	pop    %ecx
40961e:	59                   	pop    %ecx
40961f:	85 c0                	test   %eax,%eax
409621:	75 15                	jne    0x409638
409623:	68 7c fb 48 00       	push   $0x48fb7c
409628:	56                   	push   %esi
409629:	e8 8c a5 01 00       	call   0x423bba
40962e:	59                   	pop    %ecx
40962f:	59                   	pop    %ecx
409630:	85 c0                	test   %eax,%eax
409632:	75 04                	jne    0x409638
409634:	32 c0                	xor    %al,%al
409636:	5e                   	pop    %esi
409637:	c3                   	ret
409638:	b0 01                	mov    $0x1,%al
40963a:	5e                   	pop    %esi
40963b:	c3                   	ret
40963c:	55                   	push   %ebp
40963d:	8b ec                	mov    %esp,%ebp
40963f:	56                   	push   %esi
409640:	8b f1                	mov    %ecx,%esi
409642:	57                   	push   %edi
409643:	8b 46 0c             	mov    0xc(%esi),%eax
409646:	48                   	dec    %eax
409647:	0f 85 3d 60 03 00    	jne    0x43f68a
40964d:	8b 7d 08             	mov    0x8(%ebp),%edi
409650:	53                   	push   %ebx
409651:	83 7f 0c 01          	cmpl   $0x1,0xc(%edi)
409655:	0f 84 a4 60 03 00    	je     0x43f6ff
40965b:	6a 02                	push   $0x2
40965d:	5b                   	pop    %ebx
40965e:	39 5f 0c             	cmp    %ebx,0xc(%edi)
409661:	0f 84 c8 60 03 00    	je     0x43f72f
409667:	e8 27 ff ff ff       	call   0x409593
40966c:	8b cf                	mov    %edi,%ecx
40966e:	e8 85 06 00 00       	call   0x409cf8
409673:	dc 0e                	fmull  (%esi)
409675:	dd 1e                	fstpl  (%esi)
409677:	5b                   	pop    %ebx
409678:	8b ce                	mov    %esi,%ecx
40967a:	e8 00 03 00 00       	call   0x40997f
40967f:	5f                   	pop    %edi
409680:	8b c6                	mov    %esi,%eax
409682:	5e                   	pop    %esi
409683:	5d                   	pop    %ebp
409684:	c2 04 00             	ret    $0x4
409687:	55                   	push   %ebp
409688:	8b ec                	mov    %esp,%ebp
40968a:	51                   	push   %ecx
40968b:	53                   	push   %ebx
40968c:	56                   	push   %esi
40968d:	57                   	push   %edi
40968e:	8b f9                	mov    %ecx,%edi
409690:	8b 47 0c             	mov    0xc(%edi),%eax
409693:	83 f8 07             	cmp    $0x7,%eax
409696:	0f 8f 4b 61 03 00    	jg     0x43f7e7
40969c:	0f 84 25 61 03 00    	je     0x43f7c7
4096a2:	48                   	dec    %eax
4096a3:	75 3d                	jne    0x4096e2
4096a5:	8b 75 08             	mov    0x8(%ebp),%esi
4096a8:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
4096ac:	0f 84 bd 60 03 00    	je     0x43f76f
4096b2:	6a 02                	push   $0x2
4096b4:	59                   	pop    %ecx
4096b5:	39 4e 0c             	cmp    %ecx,0xc(%esi)
4096b8:	0f 84 f4 60 03 00    	je     0x43f7b2
4096be:	8b cf                	mov    %edi,%ecx
4096c0:	e8 ce fe ff ff       	call   0x409593
4096c5:	8b ce                	mov    %esi,%ecx
4096c7:	e8 2c 06 00 00       	call   0x409cf8
4096cc:	dc 2f                	fsubrl (%edi)
4096ce:	dd 1f                	fstpl  (%edi)
4096d0:	8b cf                	mov    %edi,%ecx
4096d2:	e8 a8 02 00 00       	call   0x40997f
4096d7:	8b c7                	mov    %edi,%eax
4096d9:	5f                   	pop    %edi
4096da:	5e                   	pop    %esi
4096db:	5b                   	pop    %ebx
4096dc:	8b e5                	mov    %ebp,%esp
4096de:	5d                   	pop    %ebp
4096df:	c2 04 00             	ret    $0x4
4096e2:	48                   	dec    %eax
4096e3:	0f 84 62 60 03 00    	je     0x43f74b
4096e9:	48                   	dec    %eax
4096ea:	75 05                	jne    0x4096f1
4096ec:	8b 4d 08             	mov    0x8(%ebp),%ecx
4096ef:	eb d6                	jmp    0x4096c7
4096f1:	48                   	dec    %eax
4096f2:	0f 84 08 61 03 00    	je     0x43f800
4096f8:	eb d6                	jmp    0x4096d0
4096fa:	cc                   	int3
4096fb:	cc                   	int3
4096fc:	cc                   	int3
4096fd:	cc                   	int3
4096fe:	cc                   	int3
4096ff:	cc                   	int3
409700:	55                   	push   %ebp
409701:	8b ec                	mov    %esp,%ebp
409703:	83 ec 08             	sub    $0x8,%esp
409706:	53                   	push   %ebx
409707:	8b d9                	mov    %ecx,%ebx
409709:	56                   	push   %esi
40970a:	57                   	push   %edi
40970b:	8b 43 0c             	mov    0xc(%ebx),%eax
40970e:	83 f8 04             	cmp    $0x4,%eax
409711:	74 17                	je     0x40972a
409713:	83 f8 03             	cmp    $0x3,%eax
409716:	0f 85 84 00 00 00    	jne    0x4097a0
40971c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40971f:	e8 d4 05 00 00       	call   0x409cf8
409724:	dc 03                	faddl  (%ebx)
409726:	dd 1b                	fstpl  (%ebx)
409728:	eb 60                	jmp    0x40978a
40972a:	83 f8 01             	cmp    $0x1,%eax
40972d:	74 51                	je     0x409780
40972f:	83 f8 02             	cmp    $0x2,%eax
409732:	74 4c                	je     0x409780
409734:	83 f8 03             	cmp    $0x3,%eax
409737:	74 47                	je     0x409780
409739:	83 f8 04             	cmp    $0x4,%eax
40973c:	0f 85 b9 00 00 00    	jne    0x4097fb
409742:	8b 43 08             	mov    0x8(%ebx),%eax
409745:	68 80 fb 48 00       	push   $0x48fb80
40974a:	8b 30                	mov    (%eax),%esi
40974c:	56                   	push   %esi
40974d:	e8 68 a4 01 00       	call   0x423bba
409752:	83 c4 08             	add    $0x8,%esp
409755:	85 c0                	test   %eax,%eax
409757:	0f 84 88 00 00 00    	je     0x4097e5
40975d:	83 7b 0c 03          	cmpl   $0x3,0xc(%ebx)
409761:	74 1d                	je     0x409780
409763:	8b cb                	mov    %ebx,%ecx
409765:	e8 8e 05 00 00       	call   0x409cf8
40976a:	8b cb                	mov    %ebx,%ecx
40976c:	dd 5d f8             	fstpl  -0x8(%ebp)
40976f:	e8 ac 02 00 00       	call   0x409a20
409774:	dd 45 f8             	fldl   -0x8(%ebp)
409777:	dd 1b                	fstpl  (%ebx)
409779:	c7 43 0c 03 00 00 00 	movl   $0x3,0xc(%ebx)
409780:	ff 75 08             	push   0x8(%ebp)
409783:	8b cb                	mov    %ebx,%ecx
409785:	e8 76 ff ff ff       	call   0x409700
40978a:	8b 4b 08             	mov    0x8(%ebx),%ecx
40978d:	85 c9                	test   %ecx,%ecx
40978f:	0f 85 45 61 03 00    	jne    0x43f8da
409795:	5f                   	pop    %edi
409796:	5e                   	pop    %esi
409797:	8b c3                	mov    %ebx,%eax
409799:	5b                   	pop    %ebx
40979a:	8b e5                	mov    %ebp,%esp
40979c:	5d                   	pop    %ebp
40979d:	c2 04 00             	ret    $0x4
4097a0:	48                   	dec    %eax
4097a1:	83 f8 0a             	cmp    $0xa,%eax
4097a4:	77 e4                	ja     0x40978a
4097a6:	0f b6 80 58 98 40 00 	movzbl 0x409858(%eax),%eax
4097ad:	ff 24 85 40 98 40 00 	jmp    *0x409840(,%eax,4)
4097b4:	8b 75 08             	mov    0x8(%ebp),%esi
4097b7:	8b 46 0c             	mov    0xc(%esi),%eax
4097ba:	83 f8 01             	cmp    $0x1,%eax
4097bd:	75 48                	jne    0x409807
4097bf:	8b 0e                	mov    (%esi),%ecx
4097c1:	8b 03                	mov    (%ebx),%eax
4097c3:	8d 34 08             	lea    (%eax,%ecx,1),%esi
4097c6:	99                   	cltd
4097c7:	89 45 08             	mov    %eax,0x8(%ebp)
4097ca:	8b fa                	mov    %edx,%edi
4097cc:	8b c1                	mov    %ecx,%eax
4097ce:	8b 4d 08             	mov    0x8(%ebp),%ecx
4097d1:	99                   	cltd
4097d2:	03 c8                	add    %eax,%ecx
4097d4:	8b c6                	mov    %esi,%eax
4097d6:	13 fa                	adc    %edx,%edi
4097d8:	99                   	cltd
4097d9:	3b c1                	cmp    %ecx,%eax
4097db:	75 48                	jne    0x409825
4097dd:	3b d7                	cmp    %edi,%edx
4097df:	75 44                	jne    0x409825
4097e1:	89 33                	mov    %esi,(%ebx)
4097e3:	eb a5                	jmp    0x40978a
4097e5:	68 7c fb 48 00       	push   $0x48fb7c
4097ea:	56                   	push   %esi
4097eb:	e8 ca a3 01 00       	call   0x423bba
4097f0:	83 c4 08             	add    $0x8,%esp
4097f3:	85 c0                	test   %eax,%eax
4097f5:	0f 85 62 ff ff ff    	jne    0x40975d
4097fb:	8b cb                	mov    %ebx,%ecx
4097fd:	e8 03 fd ff ff       	call   0x409505
409802:	e9 79 ff ff ff       	jmp    0x409780
409807:	83 f8 02             	cmp    $0x2,%eax
40980a:	0f 84 04 60 03 00    	je     0x43f814
409810:	e8 7e fd ff ff       	call   0x409593
409815:	8b ce                	mov    %esi,%ecx
409817:	e8 dc 04 00 00       	call   0x409cf8
40981c:	dc 03                	faddl  (%ebx)