40b478:	f6 46 18 01          	testb  $0x1,0x18(%esi)
40b47c:	75 0a                	jne    0x40b488
40b47e:	ff 76 14             	push   0x14(%esi)
40b481:	6a 04                	push   $0x4
40b483:	e8 d3 5c 04 00       	call   0x45115b
40b488:	8b 46 28             	mov    0x28(%esi),%eax
40b48b:	8b 4e 2c             	mov    0x2c(%esi),%ecx
40b48e:	8d 50 08             	lea    0x8(%eax),%edx
40b491:	3b d1                	cmp    %ecx,%edx
40b493:	76 0d                	jbe    0x40b4a2
40b495:	2b c1                	sub    %ecx,%eax
40b497:	83 c0 08             	add    $0x8,%eax
40b49a:	50                   	push   %eax
40b49b:	8b ce                	mov    %esi,%ecx
40b49d:	e8 2b 54 04 00       	call   0x4508cd
40b4a2:	8b 46 28             	mov    0x28(%esi),%eax
40b4a5:	dd 00                	fldl   (%eax)
40b4a7:	8b 44 24 08          	mov    0x8(%esp),%eax
40b4ab:	dd 18                	fstpl  (%eax)
40b4ad:	83 46 28 08          	addl   $0x8,0x28(%esi)
40b4b1:	8b c6                	mov    %esi,%eax
40b4b3:	5e                   	pop    %esi
40b4b4:	c2 04 00             	ret    $0x4
40b4b7:	56                   	push   %esi
40b4b8:	8b f1                	mov    %ecx,%esi
40b4ba:	f6 46 18 01          	testb  $0x1,0x18(%esi)
40b4be:	75 0a                	jne    0x40b4ca
40b4c0:	ff 76 14             	push   0x14(%esi)
40b4c3:	6a 04                	push   $0x4
40b4c5:	e8 91 5c 04 00       	call   0x45115b
40b4ca:	8b 46 28             	mov    0x28(%esi),%eax
40b4cd:	8b 4e 2c             	mov    0x2c(%esi),%ecx
40b4d0:	8d 50 04             	lea    0x4(%eax),%edx
40b4d3:	3b d1                	cmp    %ecx,%edx
40b4d5:	76 0d                	jbe    0x40b4e4
40b4d7:	2b c1                	sub    %ecx,%eax
40b4d9:	83 c0 04             	add    $0x4,%eax
40b4dc:	50                   	push   %eax
40b4dd:	8b ce                	mov    %esi,%ecx
40b4df:	e8 e9 53 04 00       	call   0x4508cd
40b4e4:	8b 46 28             	mov    0x28(%esi),%eax
40b4e7:	8b 00                	mov    (%eax),%eax
40b4e9:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b4ed:	89 01                	mov    %eax,(%ecx)
40b4ef:	83 46 28 04          	addl   $0x4,0x28(%esi)
40b4f3:	8b c6                	mov    %esi,%eax
40b4f5:	5e                   	pop    %esi
40b4f6:	c2 04 00             	ret    $0x4
40b4f9:	8b c1                	mov    %ecx,%eax
40b4fb:	33 c9                	xor    %ecx,%ecx
40b4fd:	89 48 04             	mov    %ecx,0x4(%eax)
40b500:	89 08                	mov    %ecx,(%eax)
40b502:	89 48 08             	mov    %ecx,0x8(%eax)
40b505:	c3                   	ret
40b506:	8b c1                	mov    %ecx,%eax
40b508:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40b50c:	83 60 08 00          	andl   $0x0,0x8(%eax)
40b510:	89 08                	mov    %ecx,(%eax)
40b512:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b516:	89 48 04             	mov    %ecx,0x4(%eax)
40b519:	c2 08 00             	ret    $0x8
40b51c:	b8 d7 30 48 00       	mov    $0x4830d7,%eax
40b521:	e8 56 c7 00 00       	call   0x417c7c
40b526:	56                   	push   %esi
40b527:	57                   	push   %edi
40b528:	8b 7d 0c             	mov    0xc(%ebp),%edi
40b52b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b52f:	85 ff                	test   %edi,%edi
40b531:	8b 35 04 05 4b 00    	mov    0x4b0504,%esi
40b537:	75 04                	jne    0x40b53d
40b539:	33 c0                	xor    %eax,%eax
40b53b:	eb 03                	jmp    0x40b540
40b53d:	57                   	push   %edi
40b53e:	ff d6                	call   *%esi
40b540:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b543:	50                   	push   %eax
40b544:	e8 e5 fc ff ff       	call   0x40b22e
40b549:	85 ff                	test   %edi,%edi
40b54b:	74 16                	je     0x40b563
40b54d:	57                   	push   %edi
40b54e:	ff d6                	call   *%esi
40b550:	85 c0                	test   %eax,%eax
40b552:	76 0f                	jbe    0x40b563
40b554:	57                   	push   %edi
40b555:	ff d6                	call   *%esi
40b557:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b55a:	03 c0                	add    %eax,%eax
40b55c:	50                   	push   %eax
40b55d:	57                   	push   %edi
40b55e:	e8 c9 56 04 00       	call   0x450c2c
40b563:	57                   	push   %edi
40b564:	ff 15 08 05 4b 00    	call   *0x4b0508
40b56a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40b56d:	8b 45 08             	mov    0x8(%ebp),%eax
40b570:	5f                   	pop    %edi
40b571:	5e                   	pop    %esi
40b572:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b579:	c9                   	leave
40b57a:	c2 08 00             	ret    $0x8
40b57d:	55                   	push   %ebp
40b57e:	8b ec                	mov    %esp,%ebp
40b580:	51                   	push   %ecx
40b581:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b584:	56                   	push   %esi
40b585:	57                   	push   %edi
40b586:	8d 45 fc             	lea    -0x4(%ebp),%eax
40b589:	50                   	push   %eax
40b58a:	e8 62 fe ff ff       	call   0x40b3f1
40b58f:	8b 7d fc             	mov    -0x4(%ebp),%edi
40b592:	85 ff                	test   %edi,%edi
40b594:	8b 75 0c             	mov    0xc(%ebp),%esi
40b597:	76 30                	jbe    0x40b5c9
40b599:	8b 06                	mov    (%esi),%eax
40b59b:	83 26 00             	andl   $0x0,(%esi)
40b59e:	57                   	push   %edi
40b59f:	89 45 0c             	mov    %eax,0xc(%ebp)
40b5a2:	6a 00                	push   $0x0
40b5a4:	8d 45 0c             	lea    0xc(%ebp),%eax
40b5a7:	50                   	push   %eax
40b5a8:	ff 15 90 04 4b 00    	call   *0x4b0490
40b5ae:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b5b1:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40b5b4:	50                   	push   %eax
40b5b5:	ff 75 0c             	push   0xc(%ebp)
40b5b8:	e8 6c 51 04 00       	call   0x450729
40b5bd:	ff 75 0c             	push   0xc(%ebp)
40b5c0:	8b ce                	mov    %esi,%ecx
40b5c2:	e8 9a f1 ff ff       	call   0x40a761
40b5c7:	eb 0b                	jmp    0x40b5d4
40b5c9:	ff 36                	push   (%esi)
40b5cb:	ff 15 08 05 4b 00    	call   *0x4b0508
40b5d1:	83 26 00             	andl   $0x0,(%esi)
40b5d4:	8b 45 08             	mov    0x8(%ebp),%eax
40b5d7:	5f                   	pop    %edi
40b5d8:	5e                   	pop    %esi
40b5d9:	c9                   	leave
40b5da:	c2 08 00             	ret    $0x8
40b5dd:	55                   	push   %ebp
40b5de:	8b ec                	mov    %esp,%ebp
40b5e0:	83 ec 0c             	sub    $0xc,%esp
40b5e3:	8b 51 08             	mov    0x8(%ecx),%edx
40b5e6:	53                   	push   %ebx
40b5e7:	56                   	push   %esi
40b5e8:	57                   	push   %edi
40b5e9:	33 ff                	xor    %edi,%edi
40b5eb:	33 f6                	xor    %esi,%esi
40b5ed:	83 fa 02             	cmp    $0x2,%edx
40b5f0:	89 7d fc             	mov    %edi,-0x4(%ebp)
40b5f3:	74 57                	je     0x40b64c
40b5f5:	8b 45 0c             	mov    0xc(%ebp),%eax
40b5f8:	8b 58 08             	mov    0x8(%eax),%ebx
40b5fb:	83 fb 02             	cmp    $0x2,%ebx
40b5fe:	74 4c                	je     0x40b64c
40b600:	83 fa 01             	cmp    $0x1,%edx
40b603:	74 3b                	je     0x40b640
40b605:	83 fb 01             	cmp    $0x1,%ebx
40b608:	74 36                	je     0x40b640
40b60a:	8b 30                	mov    (%eax),%esi
40b60c:	03 31                	add    (%ecx),%esi
40b60e:	8b 50 04             	mov    0x4(%eax),%edx
40b611:	13 51 04             	adc    0x4(%ecx),%edx
40b614:	8b 78 04             	mov    0x4(%eax),%edi
40b617:	8b 49 04             	mov    0x4(%ecx),%ecx
40b61a:	33 f9                	xor    %ecx,%edi
40b61c:	b8 00 00 00 80       	mov    $0x80000000,%eax
40b621:	85 f8                	test   %edi,%eax
40b623:	75 0b                	jne    0x40b630
40b625:	33 ca                	xor    %edx,%ecx
40b627:	85 c8                	test   %ecx,%eax
40b629:	74 05                	je     0x40b630
40b62b:	33 c9                	xor    %ecx,%ecx
40b62d:	41                   	inc    %ecx
40b62e:	eb 03                	jmp    0x40b633
40b630:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b633:	8b 45 08             	mov    0x8(%ebp),%eax
40b636:	89 30                	mov    %esi,(%eax)
40b638:	89 50 04             	mov    %edx,0x4(%eax)
40b63b:	89 48 08             	mov    %ecx,0x8(%eax)
40b63e:	eb 1b                	jmp    0x40b65b
40b640:	8b 45 08             	mov    0x8(%ebp),%eax
40b643:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%eax)
40b64a:	eb 0a                	jmp    0x40b656
40b64c:	8b 45 08             	mov    0x8(%ebp),%eax
40b64f:	c7 40 08 02 00 00 00 	movl   $0x2,0x8(%eax)
40b656:	89 38                	mov    %edi,(%eax)
40b658:	89 70 04             	mov    %esi,0x4(%eax)
40b65b:	5f                   	pop    %edi
40b65c:	5e                   	pop    %esi
40b65d:	5b                   	pop    %ebx
40b65e:	c9                   	leave
40b65f:	c2 08 00             	ret    $0x8
40b662:	55                   	push   %ebp
40b663:	8b ec                	mov    %esp,%ebp
40b665:	83 ec 0c             	sub    $0xc,%esp
40b668:	8b 51 08             	mov    0x8(%ecx),%edx
40b66b:	53                   	push   %ebx
40b66c:	56                   	push   %esi
40b66d:	57                   	push   %edi
40b66e:	33 ff                	xor    %edi,%edi
40b670:	33 f6                	xor    %esi,%esi
40b672:	83 fa 02             	cmp    $0x2,%edx
40b675:	89 7d fc             	mov    %edi,-0x4(%ebp)
40b678:	74 57                	je     0x40b6d1
40b67a:	8b 45 0c             	mov    0xc(%ebp),%eax
40b67d:	8b 58 08             	mov    0x8(%eax),%ebx
40b680:	83 fb 02             	cmp    $0x2,%ebx
40b683:	74 4c                	je     0x40b6d1
40b685:	83 fa 01             	cmp    $0x1,%edx
40b688:	74 3b                	je     0x40b6c5
40b68a:	83 fb 01             	cmp    $0x1,%ebx
40b68d:	74 36                	je     0x40b6c5
40b68f:	8b 31                	mov    (%ecx),%esi
40b691:	2b 30                	sub    (%eax),%esi
40b693:	8b 51 04             	mov    0x4(%ecx),%edx
40b696:	1b 50 04             	sbb    0x4(%eax),%edx
40b699:	8b 78 04             	mov    0x4(%eax),%edi
40b69c:	8b 49 04             	mov    0x4(%ecx),%ecx
40b69f:	33 f9                	xor    %ecx,%edi
40b6a1:	b8 00 00 00 80       	mov    $0x80000000,%eax
40b6a6:	85 f8                	test   %edi,%eax
40b6a8:	74 0b                	je     0x40b6b5
40b6aa:	33 ca                	xor    %edx,%ecx
40b6ac:	85 c8                	test   %ecx,%eax
40b6ae:	74 05                	je     0x40b6b5
40b6b0:	33 c9                	xor    %ecx,%ecx
40b6b2:	41                   	inc    %ecx
40b6b3:	eb 03                	jmp    0x40b6b8
40b6b5:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b6b8:	8b 45 08             	mov    0x8(%ebp),%eax
40b6bb:	89 30                	mov    %esi,(%eax)
40b6bd:	89 50 04             	mov    %edx,0x4(%eax)
40b6c0:	89 48 08             	mov    %ecx,0x8(%eax)
40b6c3:	eb 1b                	jmp    0x40b6e0
40b6c5:	8b 45 08             	mov    0x8(%ebp),%eax
40b6c8:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%eax)
40b6cf:	eb 0a                	jmp    0x40b6db
40b6d1:	8b 45 08             	mov    0x8(%ebp),%eax
40b6d4:	c7 40 08 02 00 00 00 	movl   $0x2,0x8(%eax)
40b6db:	89 38                	mov    %edi,(%eax)
40b6dd:	89 70 04             	mov    %esi,0x4(%eax)
40b6e0:	5f                   	pop    %edi
40b6e1:	5e                   	pop    %esi
40b6e2:	5b                   	pop    %ebx
40b6e3:	c9                   	leave
40b6e4:	c2 08 00             	ret    $0x8
40b6e7:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
40b6eb:	8b 11                	mov    (%ecx),%edx
40b6ed:	74 14                	je     0x40b703
40b6ef:	8b 44 24 04          	mov    0x4(%esp),%eax
40b6f3:	89 10                	mov    %edx,(%eax)
40b6f5:	8b 51 04             	mov    0x4(%ecx),%edx
40b6f8:	89 50 04             	mov    %edx,0x4(%eax)
40b6fb:	8b 49 08             	mov    0x8(%ecx),%ecx
40b6fe:	89 48 08             	mov    %ecx,0x8(%eax)
40b701:	eb 27                	jmp    0x40b72a
40b703:	8b 49 04             	mov    0x4(%ecx),%ecx
40b706:	56                   	push   %esi
40b707:	33 f6                	xor    %esi,%esi
40b709:	85 d2                	test   %edx,%edx
40b70b:	75 09                	jne    0x40b716
40b70d:	81 f9 00 00 00 80    	cmp    $0x80000000,%ecx
40b713:	75 01                	jne    0x40b716
40b715:	46                   	inc    %esi
40b716:	8b 44 24 08          	mov    0x8(%esp),%eax
40b71a:	f7 da                	neg    %edx
40b71c:	83 d1 00             	adc    $0x0,%ecx
40b71f:	f7 d9                	neg    %ecx
40b721:	89 70 08             	mov    %esi,0x8(%eax)
40b724:	89 10                	mov    %edx,(%eax)
40b726:	89 48 04             	mov    %ecx,0x4(%eax)
40b729:	5e                   	pop    %esi
40b72a:	c2 04 00             	ret    $0x4
40b72d:	55                   	push   %ebp
40b72e:	8b ec                	mov    %esp,%ebp
40b730:	83 ec 20             	sub    $0x20,%esp
40b733:	53                   	push   %ebx
40b734:	57                   	push   %edi
40b735:	8b f9                	mov    %ecx,%edi
40b737:	33 db                	xor    %ebx,%ebx
40b739:	39 5f 08             	cmp    %ebx,0x8(%edi)
40b73c:	74 18                	je     0x40b756
40b73e:	8b 0f                	mov    (%edi),%ecx
40b740:	8b 45 08             	mov    0x8(%ebp),%eax
40b743:	89 08                	mov    %ecx,(%eax)
40b745:	8b 4f 04             	mov    0x4(%edi),%ecx
40b748:	89 48 04             	mov    %ecx,0x4(%eax)
40b74b:	8b 4f 08             	mov    0x8(%edi),%ecx
40b74e:	89 48 08             	mov    %ecx,0x8(%eax)
40b751:	e9 ef 00 00 00       	jmp    0x40b845
40b756:	8b 47 04             	mov    0x4(%edi),%eax
40b759:	56                   	push   %esi
40b75a:	8b 37                	mov    (%edi),%esi
40b75c:	8b ce                	mov    %esi,%ecx
40b75e:	0b c8                	or     %eax,%ecx
40b760:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40b763:	0f 84 d0 00 00 00    	je     0x40b839
40b769:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b76c:	3b cb                	cmp    %ebx,%ecx
40b76e:	0f 84 c5 00 00 00    	je     0x40b839
40b774:	c1 e9 1f             	shr    $0x1f,%ecx
40b777:	8b d0                	mov    %eax,%edx
40b779:	c1 ea 1f             	shr    $0x1f,%edx
40b77c:	32 ca                	xor    %dl,%cl
40b77e:	80 e1 01             	and    $0x1,%cl
40b781:	3b c3                	cmp    %ebx,%eax
40b783:	88 4d ff             	mov    %cl,-0x1(%ebp)
40b786:	7f 0c                	jg     0x40b794
40b788:	7c 04                	jl     0x40b78e
40b78a:	3b f3                	cmp    %ebx,%esi
40b78c:	73 06                	jae    0x40b794
40b78e:	f7 de                	neg    %esi
40b790:	13 c3                	adc    %ebx,%eax
40b792:	f7 d8                	neg    %eax
40b794:	ff 75 0c             	push   0xc(%ebp)
40b797:	89 75 f4             	mov    %esi,-0xc(%ebp)
40b79a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b79d:	e8 f7 d3 00 00       	call   0x418b99
40b7a2:	59                   	pop    %ecx
40b7a3:	8b f0                	mov    %eax,%esi
40b7a5:	33 c0                	xor    %eax,%eax
40b7a7:	50                   	push   %eax
40b7a8:	56                   	push   %esi
40b7a9:	53                   	push   %ebx
40b7aa:	ff 75 f8             	push   -0x8(%ebp)
40b7ad:	e8 de e4 00 00       	call   0x419c90
40b7b2:	3b d3                	cmp    %ebx,%edx
40b7b4:	89 45 ec             	mov    %eax,-0x14(%ebp)
40b7b7:	89 55 f0             	mov    %edx,-0x10(%ebp)
40b7ba:	77 52                	ja     0x40b80e
40b7bc:	72 07                	jb     0x40b7c5
40b7be:	3d 00 00 00 80       	cmp    $0x80000000,%eax
40b7c3:	77 49                	ja     0x40b80e
40b7c5:	33 c0                	xor    %eax,%eax
40b7c7:	50                   	push   %eax
40b7c8:	56                   	push   %esi
40b7c9:	53                   	push   %ebx
40b7ca:	ff 75 f4             	push   -0xc(%ebp)
40b7cd:	e8 be e4 00 00       	call   0x419c90
40b7d2:	6a 01                	push   $0x1
40b7d4:	53                   	push   %ebx
40b7d5:	ff 75 f0             	push   -0x10(%ebp)
40b7d8:	89 45 f4             	mov    %eax,-0xc(%ebp)
40b7db:	ff 75 ec             	push   -0x14(%ebp)
40b7de:	8b f2                	mov    %edx,%esi
40b7e0:	e8 ab e4 00 00       	call   0x419c90
40b7e5:	03 45 f4             	add    -0xc(%ebp),%eax
40b7e8:	13 d6                	adc    %esi,%edx
40b7ea:	3b d6                	cmp    %esi,%edx
40b7ec:	72 20                	jb     0x40b80e
40b7ee:	77 05                	ja     0x40b7f5