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
40b7f0:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40b7f3:	72 19                	jb     0x40b80e
40b7f5:	38 5d ff             	cmp    %bl,-0x1(%ebp)
40b7f8:	74 06                	je     0x40b800
40b7fa:	f7 d8                	neg    %eax
40b7fc:	13 d3                	adc    %ebx,%edx
40b7fe:	f7 da                	neg    %edx
40b800:	8b c8                	mov    %eax,%ecx
40b802:	8b c2                	mov    %edx,%eax
40b804:	33 45 0c             	xor    0xc(%ebp),%eax
40b807:	33 47 04             	xor    0x4(%edi),%eax
40b80a:	85 c0                	test   %eax,%eax
40b80c:	79 1b                	jns    0x40b829
40b80e:	33 f6                	xor    %esi,%esi
40b810:	46                   	inc    %esi
40b811:	38 5d ff             	cmp    %bl,-0x1(%ebp)
40b814:	74 09                	je     0x40b81f
40b816:	33 c9                	xor    %ecx,%ecx
40b818:	ba 00 00 00 80       	mov    $0x80000000,%edx
40b81d:	eb 0d                	jmp    0x40b82c
40b81f:	83 c9 ff             	or     $0xffffffff,%ecx
40b822:	ba ff ff ff 7f       	mov    $0x7fffffff,%edx
40b827:	eb 03                	jmp    0x40b82c
40b829:	8b 75 e8             	mov    -0x18(%ebp),%esi
40b82c:	8b 45 08             	mov    0x8(%ebp),%eax
40b82f:	89 08                	mov    %ecx,(%eax)
40b831:	89 50 04             	mov    %edx,0x4(%eax)
40b834:	89 70 08             	mov    %esi,0x8(%eax)
40b837:	eb 0b                	jmp    0x40b844
40b839:	8b 45 08             	mov    0x8(%ebp),%eax
40b83c:	89 18                	mov    %ebx,(%eax)
40b83e:	89 58 04             	mov    %ebx,0x4(%eax)
40b841:	89 58 08             	mov    %ebx,0x8(%eax)
40b844:	5e                   	pop    %esi
40b845:	5f                   	pop    %edi
40b846:	5b                   	pop    %ebx
40b847:	c9                   	leave
40b848:	c2 08 00             	ret    $0x8
40b84b:	55                   	push   %ebp
40b84c:	8b ec                	mov    %esp,%ebp
40b84e:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
40b852:	74 15                	je     0x40b869
40b854:	8b 11                	mov    (%ecx),%edx
40b856:	8b 45 08             	mov    0x8(%ebp),%eax
40b859:	89 10                	mov    %edx,(%eax)
40b85b:	8b 51 04             	mov    0x4(%ecx),%edx
40b85e:	89 50 04             	mov    %edx,0x4(%eax)
40b861:	8b 49 08             	mov    0x8(%ecx),%ecx
40b864:	89 48 08             	mov    %ecx,0x8(%eax)
40b867:	eb 5a                	jmp    0x40b8c3
40b869:	8b 45 0c             	mov    0xc(%ebp),%eax
40b86c:	85 c0                	test   %eax,%eax
40b86e:	75 0f                	jne    0x40b87f
40b870:	8b 45 08             	mov    0x8(%ebp),%eax
40b873:	83 20 00             	andl   $0x0,(%eax)
40b876:	c7 40 04 00 00 00 80 	movl   $0x80000000,0x4(%eax)
40b87d:	eb 20                	jmp    0x40b89f
40b87f:	83 f8 ff             	cmp    $0xffffffff,%eax
40b882:	75 24                	jne    0x40b8a8
40b884:	83 39 00             	cmpl   $0x0,(%ecx)
40b887:	75 1f                	jne    0x40b8a8
40b889:	81 79 04 00 00 00 80 	cmpl   $0x80000000,0x4(%ecx)
40b890:	75 16                	jne    0x40b8a8
40b892:	8b 45 08             	mov    0x8(%ebp),%eax
40b895:	83 08 ff             	orl    $0xffffffff,(%eax)
40b898:	c7 40 04 ff ff ff 7f 	movl   $0x7fffffff,0x4(%eax)
40b89f:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%eax)
40b8a6:	eb 1b                	jmp    0x40b8c3
40b8a8:	99                   	cltd
40b8a9:	52                   	push   %edx
40b8aa:	50                   	push   %eax
40b8ab:	ff 71 04             	push   0x4(%ecx)
40b8ae:	ff 31                	push   (%ecx)
40b8b0:	e8 1b e4 00 00       	call   0x419cd0
40b8b5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b8b8:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40b8bc:	89 01                	mov    %eax,(%ecx)
40b8be:	89 51 04             	mov    %edx,0x4(%ecx)
40b8c1:	8b c1                	mov    %ecx,%eax
40b8c3:	5d                   	pop    %ebp
40b8c4:	c2 08 00             	ret    $0x8
40b8c7:	55                   	push   %ebp
40b8c8:	8b ec                	mov    %esp,%ebp
40b8ca:	83 ec 24             	sub    $0x24,%esp
40b8cd:	56                   	push   %esi
40b8ce:	57                   	push   %edi
40b8cf:	ff 75 08             	push   0x8(%ebp)
40b8d2:	33 f6                	xor    %esi,%esi
40b8d4:	8b f9                	mov    %ecx,%edi
40b8d6:	89 75 f8             	mov    %esi,-0x8(%ebp)
40b8d9:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b8dc:	89 75 ec             	mov    %esi,-0x14(%ebp)
40b8df:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b8e2:	e8 b2 d2 00 00       	call   0x418b99
40b8e7:	89 45 f4             	mov    %eax,-0xc(%ebp)
40b8ea:	8d 45 dc             	lea    -0x24(%ebp),%eax
40b8ed:	c7 04 24 10 27 00 00 	movl   $0x2710,(%esp)
40b8f4:	50                   	push   %eax
40b8f5:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b8f8:	e8 30 fe ff ff       	call   0x40b72d
40b8fd:	39 75 08             	cmp    %esi,0x8(%ebp)
40b900:	8b 08                	mov    (%eax),%ecx
40b902:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40b905:	8b 48 04             	mov    0x4(%eax),%ecx
40b908:	8b 40 08             	mov    0x8(%eax),%eax
40b90b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40b90e:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b911:	7d 1d                	jge    0x40b930
40b913:	8d 45 dc             	lea    -0x24(%ebp),%eax
40b916:	50                   	push   %eax
40b917:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b91a:	e8 c8 fd ff ff       	call   0x40b6e7
40b91f:	8b 08                	mov    (%eax),%ecx
40b921:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40b924:	8b 48 04             	mov    0x4(%eax),%ecx
40b927:	8b 40 08             	mov    0x8(%eax),%eax
40b92a:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40b92d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b930:	ff 75 0c             	push   0xc(%ebp)
40b933:	e8 61 d2 00 00       	call   0x418b99
40b938:	39 75 0c             	cmp    %esi,0xc(%ebp)
40b93b:	59                   	pop    %ecx
40b93c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40b93f:	7d 1d                	jge    0x40b95e
40b941:	8d 45 dc             	lea    -0x24(%ebp),%eax
40b944:	50                   	push   %eax
40b945:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b948:	e8 9a fd ff ff       	call   0x40b6e7
40b94d:	8b 08                	mov    (%eax),%ecx
40b94f:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40b952:	8b 48 04             	mov    0x4(%eax),%ecx
40b955:	8b 40 08             	mov    0x8(%eax),%eax
40b958:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40b95b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40b95e:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b961:	50                   	push   %eax
40b962:	8d 45 dc             	lea    -0x24(%ebp),%eax
40b965:	50                   	push   %eax
40b966:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b969:	e8 6f fc ff ff       	call   0x40b5dd
40b96e:	50                   	push   %eax
40b96f:	8b cf                	mov    %edi,%ecx
40b971:	e8 77 ea ff ff       	call   0x40a3ed
40b976:	89 77 08             	mov    %esi,0x8(%edi)
40b979:	5f                   	pop    %edi
40b97a:	5e                   	pop    %esi
40b97b:	c9                   	leave
40b97c:	c2 08 00             	ret    $0x8
40b97f:	55                   	push   %ebp
40b980:	8b ec                	mov    %esp,%ebp
40b982:	ff 75 14             	push   0x14(%ebp)
40b985:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b988:	e8 66 f8 ff ff       	call   0x40b1f3
40b98d:	ff 75 10             	push   0x10(%ebp)
40b990:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b993:	e8 5b f8 ff ff       	call   0x40b1f3
40b998:	ff 75 0c             	push   0xc(%ebp)
40b99b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b99e:	e8 8b f8 ff ff       	call   0x40b22e
40b9a3:	5d                   	pop    %ebp
40b9a4:	c2 10 00             	ret    $0x10
40b9a7:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40b9ab:	56                   	push   %esi
40b9ac:	8b 74 24 0c          	mov    0xc(%esp),%esi
40b9b0:	8d 46 08             	lea    0x8(%esi),%eax
40b9b3:	50                   	push   %eax
40b9b4:	e8 fe fa ff ff       	call   0x40b4b7
40b9b9:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b9bd:	8d 46 04             	lea    0x4(%esi),%eax
40b9c0:	50                   	push   %eax
40b9c1:	e8 f1 fa ff ff       	call   0x40b4b7
40b9c6:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b9ca:	56                   	push   %esi
40b9cb:	e8 21 fa ff ff       	call   0x40b3f1
40b9d0:	5e                   	pop    %esi