40c5c0:	8b c6                	mov    %esi,%eax
40c5c2:	f7 e2                	mul    %edx
40c5c4:	0f 90 c1             	seto   %cl
40c5c7:	f7 d9                	neg    %ecx
40c5c9:	0b c8                	or     %eax,%ecx
40c5cb:	51                   	push   %ecx
40c5cc:	e8 41 b7 01 00       	call   0x427d12
40c5d1:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40c5d5:	8b f8                	mov    %eax,%edi
40c5d7:	59                   	pop    %ecx
40c5d8:	eb 11                	jmp    0x40c5eb
40c5da:	b8 e0 c5 40 00       	mov    $0x40c5e0,%eax
40c5df:	c3                   	ret
40c5e0:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40c5e4:	33 db                	xor    %ebx,%ebx
40c5e6:	8b 75 e0             	mov    -0x20(%ebp),%esi
40c5e9:	8b fb                	mov    %ebx,%edi
40c5eb:	85 ff                	test   %edi,%edi
40c5ed:	75 31                	jne    0x40c620
40c5ef:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c5f4:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c5f9:	74 1b                	je     0x40c616
40c5fb:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c5ff:	74 15                	je     0x40c616
40c601:	53                   	push   %ebx
40c602:	56                   	push   %esi
40c603:	ff 70 14             	push   0x14(%eax)
40c606:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c60b:	ff 70 10             	push   0x10(%eax)
40c60e:	6a 28                	push   $0x28
40c610:	59                   	pop    %ecx
40c611:	e8 09 f8 ff ff       	call   0x40be1f
40c616:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40c61b:	e9 a4 00 00 00       	jmp    0x40c6c4
40c620:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40c627:	ff 75 08             	push   0x8(%ebp)
40c62a:	33 c0                	xor    %eax,%eax
40c62c:	8b d6                	mov    %esi,%edx
40c62e:	ff 75 dc             	push   -0x24(%ebp)
40c631:	8b cf                	mov    %edi,%ecx
40c633:	66 89 07             	mov    %ax,(%edi)
40c636:	e8 67 06 00 00       	call   0x40cca2
40c63b:	8b f0                	mov    %eax,%esi
40c63d:	85 f6                	test   %esi,%esi
40c63f:	79 28                	jns    0x40c669
40c641:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c646:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c64b:	74 6a                	je     0x40c6b7
40c64d:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c651:	74 64                	je     0x40c6b7
40c653:	56                   	push   %esi
40c654:	ff 70 14             	push   0x14(%eax)
40c657:	ff 70 10             	push   0x10(%eax)
40c65a:	6a 29                	push   $0x29
40c65c:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c661:	59                   	pop    %ecx
40c662:	e8 67 ad ff ff       	call   0x4073ce
40c667:	eb 4e                	jmp    0x40c6b7
40c669:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40c66d:	74 2c                	je     0x40c69b
40c66f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40c672:	57                   	push   %edi
40c673:	e8 40 fa ff ff       	call   0x40c0b8
40c678:	8b f0                	mov    %eax,%esi
40c67a:	85 f6                	test   %esi,%esi
40c67c:	79 37                	jns    0x40c6b5
40c67e:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c683:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c688:	74 2d                	je     0x40c6b7
40c68a:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c68e:	74 27                	je     0x40c6b7
40c690:	56                   	push   %esi
40c691:	ff 70 14             	push   0x14(%eax)
40c694:	ff 70 10             	push   0x10(%eax)
40c697:	6a 2a                	push   $0x2a
40c699:	eb c1                	jmp    0x40c65c
40c69b:	8b cf                	mov    %edi,%ecx
40c69d:	8d 51 02             	lea    0x2(%ecx),%edx
40c6a0:	66 8b 01             	mov    (%ecx),%ax
40c6a3:	83 c1 02             	add    $0x2,%ecx
40c6a6:	66 3b c3             	cmp    %bx,%ax
40c6a9:	75 f5                	jne    0x40c6a0
40c6ab:	8b 45 e8             	mov    -0x18(%ebp),%eax
40c6ae:	2b ca                	sub    %edx,%ecx
40c6b0:	d1 f9                	sar    $1,%ecx
40c6b2:	89 48 08             	mov    %ecx,0x8(%eax)
40c6b5:	8b f3                	mov    %ebx,%esi
40c6b7:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40c6bb:	74 07                	je     0x40c6c4
40c6bd:	57                   	push   %edi
40c6be:	e8 78 b6 01 00       	call   0x427d3b
40c6c3:	59                   	pop    %ecx
40c6c4:	8b c6                	mov    %esi,%eax
40c6c6:	e8 6b b9 01 00       	call   0x428036
40c6cb:	c3                   	ret
40c6cc:	8b ff                	mov    %edi,%edi
40c6ce:	55                   	push   %ebp
40c6cf:	8b ec                	mov    %esp,%ebp
40c6d1:	83 e4 f8             	and    $0xfffffff8,%esp
40c6d4:	56                   	push   %esi
40c6d5:	57                   	push   %edi
40c6d6:	68 00 02 00 00       	push   $0x200
40c6db:	8b f1                	mov    %ecx,%esi
40c6dd:	e8 30 b6 01 00       	call   0x427d12
40c6e2:	8b f8                	mov    %eax,%edi
40c6e4:	59                   	pop    %ecx
40c6e5:	85 ff                	test   %edi,%edi
40c6e7:	75 2f                	jne    0x40c718
40c6e9:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c6ee:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c6f3:	74 19                	je     0x40c70e
40c6f5:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c6f9:	74 13                	je     0x40c70e
40c6fb:	ff 70 14             	push   0x14(%eax)
40c6fe:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c703:	ff 70 10             	push   0x10(%eax)
40c706:	6a 2b                	push   $0x2b
40c708:	59                   	pop    %ecx
40c709:	e8 a2 ac ff ff       	call   0x4073b0
40c70e:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40c713:	e9 86 00 00 00       	jmp    0x40c79e
40c718:	68 00 01 00 00       	push   $0x100
40c71d:	57                   	push   %edi
40c71e:	ff 75 08             	push   0x8(%ebp)
40c721:	33 c0                	xor    %eax,%eax
40c723:	ff 75 0c             	push   0xc(%ebp)
40c726:	66 89 07             	mov    %ax,(%edi)
40c729:	ff 15 d4 c1 42 00    	call   *0x42c1d4
40c72f:	85 c0                	test   %eax,%eax
40c731:	74 2f                	je     0x40c762
40c733:	57                   	push   %edi
40c734:	8b ce                	mov    %esi,%ecx
40c736:	e8 7d f9 ff ff       	call   0x40c0b8
40c73b:	8b f0                	mov    %eax,%esi
40c73d:	85 f6                	test   %esi,%esi
40c73f:	79 1d                	jns    0x40c75e
40c741:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c746:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c74b:	74 4a                	je     0x40c797
40c74d:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c751:	74 44                	je     0x40c797
40c753:	56                   	push   %esi
40c754:	ff 70 14             	push   0x14(%eax)
40c757:	ff 70 10             	push   0x10(%eax)
40c75a:	6a 2c                	push   $0x2c
40c75c:	eb 2e                	jmp    0x40c78c
40c75e:	33 f6                	xor    %esi,%esi
40c760:	eb 35                	jmp    0x40c797
40c762:	ff 15 18 c2 42 00    	call   *0x42c218
40c768:	8b c8                	mov    %eax,%ecx
40c76a:	e8 3b ee ff ff       	call   0x40b5aa
40c76f:	8b f0                	mov    %eax,%esi
40c771:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c776:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c77b:	74 1a                	je     0x40c797
40c77d:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c781:	74 14                	je     0x40c797
40c783:	56                   	push   %esi
40c784:	ff 70 14             	push   0x14(%eax)
40c787:	ff 70 10             	push   0x10(%eax)
40c78a:	6a 2d                	push   $0x2d
40c78c:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c791:	59                   	pop    %ecx
40c792:	e8 37 ac ff ff       	call   0x4073ce
40c797:	57                   	push   %edi
40c798:	e8 9e b5 01 00       	call   0x427d3b
40c79d:	59                   	pop    %ecx
40c79e:	5f                   	pop    %edi
40c79f:	8b c6                	mov    %esi,%eax
40c7a1:	5e                   	pop    %esi
40c7a2:	8b e5                	mov    %ebp,%esp
40c7a4:	5d                   	pop    %ebp
40c7a5:	c2 08 00             	ret    $0x8
40c7a8:	8b ff                	mov    %edi,%edi
40c7aa:	55                   	push   %ebp
40c7ab:	8b ec                	mov    %esp,%ebp
40c7ad:	83 ec 10             	sub    $0x10,%esp
40c7b0:	53                   	push   %ebx
40c7b1:	8b d9                	mov    %ecx,%ebx
40c7b3:	89 55 f4             	mov    %edx,-0xc(%ebp)
40c7b6:	56                   	push   %esi
40c7b7:	57                   	push   %edi
40c7b8:	85 db                	test   %ebx,%ebx
40c7ba:	74 68                	je     0x40c824
40c7bc:	85 d2                	test   %edx,%edx
40c7be:	74 64                	je     0x40c824
40c7c0:	8b f3                	mov    %ebx,%esi
40c7c2:	33 c9                	xor    %ecx,%ecx
40c7c4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40c7c7:	8d 7e 02             	lea    0x2(%esi),%edi
40c7ca:	66 8b 06             	mov    (%esi),%ax
40c7cd:	83 c6 02             	add    $0x2,%esi
40c7d0:	66 3b c1             	cmp    %cx,%ax
40c7d3:	75 f5                	jne    0x40c7ca
40c7d5:	2b f7                	sub    %edi,%esi
40c7d7:	8b fa                	mov    %edx,%edi
40c7d9:	d1 fe                	sar    $1,%esi
40c7db:	8d 47 02             	lea    0x2(%edi),%eax
40c7de:	89 45 f8             	mov    %eax,-0x8(%ebp)
40c7e1:	66 8b 07             	mov    (%edi),%ax
40c7e4:	83 c7 02             	add    $0x2,%edi
40c7e7:	66 3b c1             	cmp    %cx,%ax
40c7ea:	75 f5                	jne    0x40c7e1
40c7ec:	2b 7d f8             	sub    -0x8(%ebp),%edi
40c7ef:	d1 ff                	sar    $1,%edi
40c7f1:	3b f7                	cmp    %edi,%esi
40c7f3:	72 54                	jb     0x40c849
40c7f5:	2b f7                	sub    %edi,%esi
40c7f7:	57                   	push   %edi
40c7f8:	52                   	push   %edx
40c7f9:	53                   	push   %ebx
40c7fa:	ff 15 34 c3 42 00    	call   *0x42c334
40c800:	83 c4 0c             	add    $0xc,%esp
40c803:	85 c0                	test   %eax,%eax
40c805:	74 19                	je     0x40c820
40c807:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40c80b:	75 3c                	jne    0x40c849
40c80d:	8b 45 fc             	mov    -0x4(%ebp),%eax
40c810:	83 c3 02             	add    $0x2,%ebx
40c813:	8b 55 f4             	mov    -0xc(%ebp),%edx
40c816:	40                   	inc    %eax
40c817:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c81a:	3b c6                	cmp    %esi,%eax
40c81c:	76 d9                	jbe    0x40c7f7
40c81e:	eb 29                	jmp    0x40c849
40c820:	8b c3                	mov    %ebx,%eax
40c822:	eb 27                	jmp    0x40c84b
40c824:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c829:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c82e:	74 19                	je     0x40c849
40c830:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c834:	74 13                	je     0x40c849
40c836:	ff 70 14             	push   0x14(%eax)
40c839:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c83e:	ff 70 10             	push   0x10(%eax)
40c841:	6a 33                	push   $0x33
40c843:	59                   	pop    %ecx
40c844:	e8 67 ab ff ff       	call   0x4073b0
40c849:	33 c0                	xor    %eax,%eax
40c84b:	5f                   	pop    %edi
40c84c:	5e                   	pop    %esi
40c84d:	5b                   	pop    %ebx
40c84e:	c9                   	leave
40c84f:	c2 04 00             	ret    $0x4
40c852:	6a 1c                	push   $0x1c
40c854:	b8 af 86 42 00       	mov    $0x4286af,%eax
40c859:	e8 0a b8 01 00       	call   0x428068
40c85e:	8b c1                	mov    %ecx,%eax
40c860:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c863:	8b 38                	mov    (%eax),%edi
40c865:	33 d2                	xor    %edx,%edx
40c867:	89 55 dc             	mov    %edx,-0x24(%ebp)
40c86a:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40c86d:	89 55 e0             	mov    %edx,-0x20(%ebp)
40c870:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c873:	89 55 fc             	mov    %edx,-0x4(%ebp)
40c876:	89 55 ec             	mov    %edx,-0x14(%ebp)
40c879:	8d 4b 02             	lea    0x2(%ebx),%ecx
40c87c:	66 8b 03             	mov    (%ebx),%ax
40c87f:	83 c3 02             	add    $0x2,%ebx
40c882:	66 3b c2             	cmp    %dx,%ax
40c885:	75 f5                	jne    0x40c87c
40c887:	2b d9                	sub    %ecx,%ebx
40c889:	8b cf                	mov    %edi,%ecx
40c88b:	52                   	push   %edx
40c88c:	8b 55 08             	mov    0x8(%ebp),%edx
40c88f:	d1 fb                	sar    $1,%ebx
40c891:	e8 12 ff ff ff       	call   0x40c7a8
40c896:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c899:	85 c0                	test   %eax,%eax
40c89b:	74 73                	je     0x40c910
40c89d:	0f b7 30             	movzwl (%eax),%esi
40c8a0:	33 c9                	xor    %ecx,%ecx
40c8a2:	66 89 08             	mov    %cx,(%eax)
40c8a5:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40c8a8:	57                   	push   %edi
40c8a9:	e8 bd f9 ff ff       	call   0x40c26b
40c8ae:	8b f8                	mov    %eax,%edi
40c8b0:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c8b3:	66 89 30             	mov    %si,(%eax)
40c8b6:	85 ff                	test   %edi,%edi
40c8b8:	0f 88 85 00 00 00    	js     0x40c943
40c8be:	ff 75 0c             	push   0xc(%ebp)
40c8c1:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40c8c4:	e8 a2 f9 ff ff       	call   0x40c26b
40c8c9:	8b f8                	mov    %eax,%edi
40c8cb:	85 ff                	test   %edi,%edi
40c8cd:	78 4c                	js     0x40c91b
40c8cf:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c8d2:	8b 55 08             	mov    0x8(%ebp),%edx
40c8d5:	ff 45 ec             	incl   -0x14(%ebp)
40c8d8:	6a 00                	push   $0x0
40c8da:	8d 3c 58             	lea    (%eax,%ebx,2),%edi
40c8dd:	8b cf                	mov    %edi,%ecx
40c8df:	e8 c4 fe ff ff       	call   0x40c7a8
40c8e4:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c8e7:	85 c0                	test   %eax,%eax
40c8e9:	75 b2                	jne    0x40c89d
40c8eb:	39 45 e4             	cmp    %eax,-0x1c(%ebp)
40c8ee:	74 20                	je     0x40c910
40c8f0:	57                   	push   %edi
40c8f1:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40c8f4:	e8 72 f9 ff ff       	call   0x40c26b
40c8f9:	8b f8                	mov    %eax,%edi
40c8fb:	85 ff                	test   %edi,%edi
40c8fd:	78 17                	js     0x40c916
40c8ff:	ff 75 dc             	push   -0x24(%ebp)
40c902:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40c905:	e8 ae f7 ff ff       	call   0x40c0b8
40c90a:	8b f8                	mov    %eax,%edi
40c90c:	85 ff                	test   %edi,%edi
40c90e:	78 06                	js     0x40c916
40c910:	33 ff                	xor    %edi,%edi
40c912:	85 ff                	test   %edi,%edi
40c914:	79 54                	jns    0x40c96a
40c916:	83 c9 ff             	or     $0xffffffff,%ecx
40c919:	eb 52                	jmp    0x40c96d
40c91b:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c920:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c925:	74 eb                	je     0x40c912
40c927:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c92b:	74 e5                	je     0x40c912
40c92d:	57                   	push   %edi
40c92e:	ff 70 14             	push   0x14(%eax)
40c931:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c936:	ff 70 10             	push   0x10(%eax)
40c939:	6a 36                	push   $0x36
40c93b:	59                   	pop    %ecx
40c93c:	e8 8d aa ff ff       	call   0x4073ce
40c941:	eb cf                	jmp    0x40c912
40c943:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c948:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c94d:	74 c3                	je     0x40c912
40c94f:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c953:	74 bd                	je     0x40c912
40c955:	ff 70 14             	push   0x14(%eax)
40c958:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c95d:	ff 70 10             	push   0x10(%eax)
40c960:	6a 35                	push   $0x35
40c962:	59                   	pop    %ecx
40c963:	e8 48 aa ff ff       	call   0x4073b0
40c968:	eb a8                	jmp    0x40c912
40c96a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40c96d:	8b 45 10             	mov    0x10(%ebp),%eax
40c970:	85 c0                	test   %eax,%eax
40c972:	74 02                	je     0x40c976
40c974:	89 08                	mov    %ecx,(%eax)
40c976:	6a 01                	push   $0x1
40c978:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40c97b:	e8 a5 02 00 00       	call   0x40cc25