40b597:	8d 04 46             	lea    (%esi,%eax,2),%eax
40b59a:	5e                   	pop    %esi
40b59b:	3b c2                	cmp    %edx,%eax
40b59d:	77 0e                	ja     0x40b5ad
40b59f:	32 c0                	xor    %al,%al
40b5a1:	5d                   	pop    %ebp
40b5a2:	c2 04 00             	ret    $0x4
40b5a5:	8b 01                	mov    (%ecx),%eax
40b5a7:	eb de                	jmp    0x40b587
40b5a9:	8b 31                	mov    (%ecx),%esi
40b5ab:	eb e7                	jmp    0x40b594
40b5ad:	b0 01                	mov    $0x1,%al
40b5af:	eb f0                	jmp    0x40b5a1
40b5b1:	33 d2                	xor    %edx,%edx
40b5b3:	66 39 11             	cmp    %dx,(%ecx)
40b5b6:	74 16                	je     0x40b5ce
40b5b8:	56                   	push   %esi
40b5b9:	8d 71 02             	lea    0x2(%ecx),%esi
40b5bc:	66 8b 01             	mov    (%ecx),%ax
40b5bf:	83 c1 02             	add    $0x2,%ecx
40b5c2:	66 3b c2             	cmp    %dx,%ax
40b5c5:	75 f5                	jne    0x40b5bc
40b5c7:	8b d1                	mov    %ecx,%edx
40b5c9:	2b d6                	sub    %esi,%edx
40b5cb:	d1 fa                	sar    $1,%edx
40b5cd:	5e                   	pop    %esi
40b5ce:	8b c2                	mov    %edx,%eax
40b5d0:	c3                   	ret
40b5d1:	8b ff                	mov    %edi,%edi
40b5d3:	55                   	push   %ebp
40b5d4:	8b ec                	mov    %esp,%ebp
40b5d6:	56                   	push   %esi
40b5d7:	57                   	push   %edi
40b5d8:	8b 7d 08             	mov    0x8(%ebp),%edi
40b5db:	8b f1                	mov    %ecx,%esi
40b5dd:	8b cf                	mov    %edi,%ecx
40b5df:	e8 bd e7 00 00       	call   0x419da1
40b5e4:	8b 06                	mov    (%esi),%eax
40b5e6:	57                   	push   %edi
40b5e7:	68 00 3f 40 00       	push   $0x403f00
40b5ec:	50                   	push   %eax
40b5ed:	8b 08                	mov    (%eax),%ecx
40b5ef:	8b 31                	mov    (%ecx),%esi
40b5f1:	8b ce                	mov    %esi,%ecx
40b5f3:	ff 15 20 a5 43 00    	call   *0x43a520
40b5f9:	ff d6                	call   *%esi
40b5fb:	5f                   	pop    %edi
40b5fc:	5e                   	pop    %esi
40b5fd:	5d                   	pop    %ebp
40b5fe:	c2 04 00             	ret    $0x4
40b601:	8b ff                	mov    %edi,%edi
40b603:	55                   	push   %ebp
40b604:	8b ec                	mov    %esp,%ebp
40b606:	56                   	push   %esi
40b607:	57                   	push   %edi
40b608:	8b 7d 08             	mov    0x8(%ebp),%edi
40b60b:	8b f1                	mov    %ecx,%esi
40b60d:	8b cf                	mov    %edi,%ecx
40b60f:	e8 8d e7 00 00       	call   0x419da1
40b614:	8b 06                	mov    (%esi),%eax
40b616:	57                   	push   %edi
40b617:	68 10 3f 40 00       	push   $0x403f10
40b61c:	50                   	push   %eax
40b61d:	8b 08                	mov    (%eax),%ecx
40b61f:	8b 31                	mov    (%ecx),%esi
40b621:	8b ce                	mov    %esi,%ecx
40b623:	ff 15 20 a5 43 00    	call   *0x43a520
40b629:	ff d6                	call   *%esi
40b62b:	5f                   	pop    %edi
40b62c:	5e                   	pop    %esi
40b62d:	5d                   	pop    %ebp
40b62e:	c2 04 00             	ret    $0x4
40b631:	8b ff                	mov    %edi,%edi
40b633:	55                   	push   %ebp
40b634:	8b ec                	mov    %esp,%ebp
40b636:	51                   	push   %ecx
40b637:	53                   	push   %ebx
40b638:	8b d9                	mov    %ecx,%ebx
40b63a:	57                   	push   %edi
40b63b:	8b 7d 08             	mov    0x8(%ebp),%edi
40b63e:	8b 03                	mov    (%ebx),%eax
40b640:	3b c7                	cmp    %edi,%eax
40b642:	74 25                	je     0x40b669
40b644:	85 ff                	test   %edi,%edi
40b646:	74 14                	je     0x40b65c
40b648:	8b 07                	mov    (%edi),%eax
40b64a:	56                   	push   %esi
40b64b:	57                   	push   %edi
40b64c:	8b 70 04             	mov    0x4(%eax),%esi
40b64f:	8b ce                	mov    %esi,%ecx
40b651:	ff 15 20 a5 43 00    	call   *0x43a520
40b657:	ff d6                	call   *%esi
40b659:	8b 03                	mov    (%ebx),%eax
40b65b:	5e                   	pop    %esi
40b65c:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40b65f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b662:	89 3b                	mov    %edi,(%ebx)
40b664:	e8 38 e7 00 00       	call   0x419da1
40b669:	5f                   	pop    %edi
40b66a:	8b c3                	mov    %ebx,%eax
40b66c:	5b                   	pop    %ebx
40b66d:	c9                   	leave
40b66e:	c2 04 00             	ret    $0x4
40b671:	6a 70                	push   $0x70
40b673:	b8 9f e1 41 00       	mov    $0x41e19f,%eax
40b678:	e8 c4 f7 00 00       	call   0x41ae41
40b67d:	89 55 8c             	mov    %edx,-0x74(%ebp)
40b680:	8b f9                	mov    %ecx,%edi
40b682:	8b 45 08             	mov    0x8(%ebp),%eax
40b685:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b688:	8b 75 10             	mov    0x10(%ebp),%esi
40b68b:	89 45 90             	mov    %eax,-0x70(%ebp)
40b68e:	8b 45 14             	mov    0x14(%ebp),%eax
40b691:	89 45 88             	mov    %eax,-0x78(%ebp)
40b694:	8b 45 18             	mov    0x18(%ebp),%eax
40b697:	89 45 84             	mov    %eax,-0x7c(%ebp)
40b69a:	85 db                	test   %ebx,%ebx
40b69c:	75 12                	jne    0x40b6b0
40b69e:	85 f6                	test   %esi,%esi
40b6a0:	75 0e                	jne    0x40b6b0
40b6a2:	85 ff                	test   %edi,%edi
40b6a4:	75 0a                	jne    0x40b6b0
40b6a6:	b8 16 0d 04 80       	mov    $0x80040d16,%eax
40b6ab:	e9 eb 00 00 00       	jmp    0x40b79b
40b6b0:	68 e8 55 40 00       	push   $0x4055e8
40b6b5:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
40b6b8:	e8 ea 9d 00 00       	call   0x4154a7
40b6bd:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b6c1:	85 f6                	test   %esi,%esi
40b6c3:	74 19                	je     0x40b6de
40b6c5:	8b 45 9c             	mov    -0x64(%ebp),%eax
40b6c8:	6a ff                	push   $0xffffffff
40b6ca:	ff 75 a8             	push   -0x58(%ebp)
40b6cd:	56                   	push   %esi
40b6ce:	8b 70 10             	mov    0x10(%eax),%esi
40b6d1:	8b ce                	mov    %esi,%ecx
40b6d3:	ff 15 20 a5 43 00    	call   *0x43a520
40b6d9:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
40b6dc:	ff d6                	call   *%esi
40b6de:	83 65 94 00          	andl   $0x0,-0x6c(%ebp)
40b6e2:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40b6e5:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b6e9:	e8 b3 e6 00 00       	call   0x419da1
40b6ee:	8b 45 8c             	mov    -0x74(%ebp),%eax
40b6f1:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40b6f4:	51                   	push   %ecx
40b6f5:	6a 00                	push   $0x0
40b6f7:	57                   	push   %edi
40b6f8:	8b 30                	mov    (%eax),%esi
40b6fa:	53                   	push   %ebx
40b6fb:	ff 75 a0             	push   -0x60(%ebp)
40b6fe:	ff 75 88             	push   -0x78(%ebp)
40b701:	8b 4e 0c             	mov    0xc(%esi),%ecx
40b704:	ff 75 90             	push   -0x70(%ebp)
40b707:	50                   	push   %eax
40b708:	ff 15 20 a5 43 00    	call   *0x43a520
40b70e:	ff 56 0c             	call   *0xc(%esi)
40b711:	8b f0                	mov    %eax,%esi
40b713:	85 f6                	test   %esi,%esi
40b715:	78 72                	js     0x40b789
40b717:	83 65 98 00          	andl   $0x0,-0x68(%ebp)
40b71b:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40b71f:	8d 4d 98             	lea    -0x68(%ebp),%ecx
40b722:	8b 45 94             	mov    -0x6c(%ebp),%eax
40b725:	89 45 90             	mov    %eax,-0x70(%ebp)
40b728:	e8 4a fc ff ff       	call   0x40b377
40b72d:	68 20 8b 43 00       	push   $0x438b20
40b732:	8d 55 90             	lea    -0x70(%ebp),%edx
40b735:	8d 4d 98             	lea    -0x68(%ebp),%ecx
40b738:	e8 17 f9 ff ff       	call   0x40b054
40b73d:	8b f0                	mov    %eax,%esi
40b73f:	85 f6                	test   %esi,%esi
40b741:	79 07                	jns    0x40b74a
40b743:	ba ca 00 00 00       	mov    $0xca,%edx
40b748:	eb 25                	jmp    0x40b76f
40b74a:	8b 45 98             	mov    -0x68(%ebp),%eax
40b74d:	ff 75 84             	push   -0x7c(%ebp)
40b750:	68 30 3f 40 00       	push   $0x403f30
40b755:	8b 08                	mov    (%eax),%ecx
40b757:	50                   	push   %eax
40b758:	8b 31                	mov    (%ecx),%esi
40b75a:	8b ce                	mov    %esi,%ecx
40b75c:	ff 15 20 a5 43 00    	call   *0x43a520
40b762:	ff d6                	call   *%esi
40b764:	8b f0                	mov    %eax,%esi
40b766:	85 f6                	test   %esi,%esi
40b768:	79 15                	jns    0x40b77f
40b76a:	ba cb 00 00 00       	mov    $0xcb,%edx
40b76f:	8b 4d 04             	mov    0x4(%ebp),%ecx
40b772:	56                   	push   %esi
40b773:	68 40 56 40 00       	push   $0x405640
40b778:	e8 8d 09 02 00       	call   0x42c10a
40b77d:	eb 02                	jmp    0x40b781
40b77f:	33 f6                	xor    %esi,%esi
40b781:	8d 4d 98             	lea    -0x68(%ebp),%ecx
40b784:	e8 ad 3a 02 00       	call   0x42f236
40b789:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40b78c:	e8 a0 3a 02 00       	call   0x42f231
40b791:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
40b794:	e8 4f 2d 00 00       	call   0x40e4e8
40b799:	8b c6                	mov    %esi,%eax
40b79b:	e8 50 f6 00 00       	call   0x41adf0
40b7a0:	c2 14 00             	ret    $0x14
40b7a3:	8b ff                	mov    %edi,%edi
40b7a5:	55                   	push   %ebp
40b7a6:	8b ec                	mov    %esp,%ebp
40b7a8:	57                   	push   %edi
40b7a9:	8b b9 80 00 00 00    	mov    0x80(%ecx),%edi
40b7af:	85 ff                	test   %edi,%edi
40b7b1:	78 21                	js     0x40b7d4
40b7b3:	8b 51 68             	mov    0x68(%ecx),%edx
40b7b6:	85 d2                	test   %edx,%edx
40b7b8:	74 21                	je     0x40b7db
40b7ba:	8b 45 08             	mov    0x8(%ebp),%eax
40b7bd:	56                   	push   %esi
40b7be:	89 10                	mov    %edx,(%eax)
40b7c0:	8b 49 68             	mov    0x68(%ecx),%ecx
40b7c3:	51                   	push   %ecx
40b7c4:	8b 11                	mov    (%ecx),%edx
40b7c6:	8b 72 04             	mov    0x4(%edx),%esi
40b7c9:	8b ce                	mov    %esi,%ecx
40b7cb:	ff 15 20 a5 43 00    	call   *0x43a520
40b7d1:	ff d6                	call   *%esi
40b7d3:	5e                   	pop    %esi
40b7d4:	8b c7                	mov    %edi,%eax
40b7d6:	5f                   	pop    %edi
40b7d7:	5d                   	pop    %ebp
40b7d8:	c2 04 00             	ret    $0x4
40b7db:	bf 02 40 00 80       	mov    $0x80004002,%edi
40b7e0:	eb f2                	jmp    0x40b7d4
40b7e2:	cc                   	int3
40b7e3:	cc                   	int3
40b7e4:	cc                   	int3
40b7e5:	cc                   	int3
40b7e6:	cc                   	int3
40b7e7:	cc                   	int3
40b7e8:	cc                   	int3
40b7e9:	cc                   	int3
40b7ea:	cc                   	int3
40b7eb:	cc                   	int3
40b7ec:	cc                   	int3
40b7ed:	cc                   	int3
40b7ee:	cc                   	int3
40b7ef:	cc                   	int3
40b7f0:	8b ff                	mov    %edi,%edi
40b7f2:	55                   	push   %ebp
40b7f3:	8b ec                	mov    %esp,%ebp
40b7f5:	ff 75 10             	push   0x10(%ebp)
40b7f8:	8b 55 0c             	mov    0xc(%ebp),%edx
40b7fb:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b7fe:	e8 04 00 00 00       	call   0x40b807
40b803:	5d                   	pop    %ebp
40b804:	c2 0c 00             	ret    $0xc
40b807:	8b ff                	mov    %edi,%edi
40b809:	55                   	push   %ebp
40b80a:	8b ec                	mov    %esp,%ebp
40b80c:	51                   	push   %ecx
40b80d:	53                   	push   %ebx
40b80e:	56                   	push   %esi
40b80f:	57                   	push   %edi
40b810:	8b 7d 08             	mov    0x8(%ebp),%edi
40b813:	8b c2                	mov    %edx,%eax
40b815:	8b f1                	mov    %ecx,%esi
40b817:	33 db                	xor    %ebx,%ebx
40b819:	ba 20 3f 40 00       	mov    $0x403f20,%edx
40b81e:	8b c8                	mov    %eax,%ecx
40b820:	89 1f                	mov    %ebx,(%edi)
40b822:	e8 e3 0d 00 00       	call   0x40c60a
40b827:	85 c0                	test   %eax,%eax
40b829:	0f 85 d3 46 01 00    	jne    0x41ff02
40b82f:	ba 30 3f 40 00       	mov    $0x403f30,%edx
40b834:	e8 d1 0d 00 00       	call   0x40c60a
40b839:	85 c0                	test   %eax,%eax
40b83b:	0f 84 98 46 01 00    	je     0x41fed9
40b841:	89 37                	mov    %esi,(%edi)
40b843:	8b 17                	mov    (%edi),%edx
40b845:	52                   	push   %edx
40b846:	8b 0a                	mov    (%edx),%ecx
40b848:	8b 71 04             	mov    0x4(%ecx),%esi
40b84b:	81 fe 60 f4 42 00    	cmp    $0x42f460,%esi
40b851:	0f 85 9c 46 01 00    	jne    0x41fef3
40b857:	e8 04 3c 02 00       	call   0x42f460
40b85c:	8b c3                	mov    %ebx,%eax
40b85e:	5f                   	pop    %edi
40b85f:	5e                   	pop    %esi
40b860:	5b                   	pop    %ebx
40b861:	c9                   	leave
40b862:	c2 04 00             	ret    $0x4
40b865:	68 40 04 00 00       	push   $0x440
40b86a:	b8 f8 e1 41 00       	mov    $0x41e1f8,%eax
40b86f:	e8 cd f5 00 00       	call   0x41ae41
40b874:	8b fa                	mov    %edx,%edi
40b876:	8b d9                	mov    %ecx,%ebx
40b878:	89 9d d8 fb ff ff    	mov    %ebx,-0x428(%ebp)
40b87e:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b881:	8b 45 0c             	mov    0xc(%ebp),%eax
40b884:	8b 15 1c 8a 43 00    	mov    0x438a1c,%edx
40b88a:	89 8d c8 fb ff ff    	mov    %ecx,-0x438(%ebp)
40b890:	8b 4d 14             	mov    0x14(%ebp),%ecx
40b893:	89 85 c4 fb ff ff    	mov    %eax,-0x43c(%ebp)
40b899:	89 8d cc fb ff ff    	mov    %ecx,-0x434(%ebp)
40b89f:	89 95 c0 fb ff ff    	mov    %edx,-0x440(%ebp)
40b8a5:	85 db                	test   %ebx,%ebx
40b8a7:	0f 84 64 47 01 00    	je     0x420011
40b8ad:	85 ff                	test   %edi,%edi
40b8af:	0f 84 5c 47 01 00    	je     0x420011
40b8b5:	85 c9                	test   %ecx,%ecx
40b8b7:	0f 84 54 47 01 00    	je     0x420011
40b8bd:	85 c0                	test   %eax,%eax
40b8bf:	0f 84 4c 47 01 00    	je     0x420011
40b8c5:	85 d2                	test   %edx,%edx
40b8c7:	0f 84 44 47 01 00    	je     0x420011
40b8cd:	8d 8d 48 ff ff ff    	lea    -0xb8(%ebp),%ecx
40b8d3:	e8 f7 3e 00 00       	call   0x40f7cf
40b8d8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b8dc:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
40b8df:	e8 eb 3e 00 00       	call   0x40f7cf
40b8e4:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b8e8:	8d 8d 38 ff ff ff    	lea    -0xc8(%ebp),%ecx
40b8ee:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40b8f1:	89 85 d4 fb ff ff    	mov    %eax,-0x42c(%ebp)
40b8f7:	8b 07                	mov    (%edi),%eax
40b8f9:	51                   	push   %ecx
40b8fa:	57                   	push   %edi
40b8fb:	8b 70 14             	mov    0x14(%eax),%esi
40b8fe:	8b ce                	mov    %esi,%ecx
40b900:	ff 15 20 a5 43 00    	call   *0x43a520
40b906:	ff d6                	call   *%esi
40b908:	85 c0                	test   %eax,%eax
40b90a:	0f 89 0b 46 01 00    	jns    0x41ff1b
40b910:	33 db                	xor    %ebx,%ebx
40b912:	83 a5 dc fb ff ff 00 	andl   $0x0,-0x424(%ebp)
40b919:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
40b91f:	e8 2e 83 00 00       	call   0x413c52
40b924:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40b928:	8d 85 dc fb ff ff    	lea    -0x424(%ebp),%eax
40b92e:	8b 37                	mov    (%edi),%esi
40b930:	50                   	push   %eax
40b931:	68 e0 3e 40 00       	push   $0x403ee0
40b936:	57                   	push   %edi
40b937:	8b 0e                	mov    (%esi),%ecx
40b939:	ff 15 20 a5 43 00    	call   *0x43a520
40b93f:	ff 16                	call   *(%esi)
40b941:	85 c0                	test   %eax,%eax
40b943:	78 7f                	js     0x40b9c4
40b945:	8b 8d dc fb ff ff    	mov    -0x424(%ebp),%ecx
40b94b:	8d 85 e0 fb ff ff    	lea    -0x420(%ebp),%eax
40b951:	50                   	push   %eax
40b952:	e8 55 d0 00 00       	call   0x4189ac
40b957:	33 f6                	xor    %esi,%esi