40c596:	50                   	push   %eax
40c597:	6a 16                	push   $0x16
40c599:	53                   	push   %ebx
40c59a:	ff 15 18 20 41 00    	call   *0x412018
40c5a0:	85 c0                	test   %eax,%eax
40c5a2:	0f 85 9f 00 00 00    	jne    0x40c647
40c5a8:	68 3c 2c 40 00       	push   $0x402c3c
40c5ad:	e9 2d fa ff ff       	jmp    0x40bfdf
40c5b2:	8b 45 cc             	mov    -0x34(%ebp),%eax
40c5b5:	85 c0                	test   %eax,%eax
40c5b7:	74 ca                	je     0x40c583
40c5b9:	50                   	push   %eax
40c5ba:	ff 15 04 40 41 00    	call   *0x414004
40c5c0:	85 c0                	test   %eax,%eax
40c5c2:	74 bf                	je     0x40c583
40c5c4:	8b 4f 08             	mov    0x8(%edi),%ecx
40c5c7:	8d 45 d7             	lea    -0x29(%ebp),%eax
40c5ca:	50                   	push   %eax
40c5cb:	68 88 2c 40 00       	push   $0x402c88
40c5d0:	68 20 41 40 00       	push   $0x404120
40c5d5:	68 f8 40 40 00       	push   $0x4040f8
40c5da:	e8 6b a3 ff ff       	call   0x40694a
40c5df:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c5e2:	85 c0                	test   %eax,%eax
40c5e4:	74 85                	je     0x40c56b
40c5e6:	68 88 2c 40 00       	push   $0x402c88
40c5eb:	50                   	push   %eax
40c5ec:	ff 15 a0 21 41 00    	call   *0x4121a0
40c5f2:	59                   	pop    %ecx
40c5f3:	59                   	pop    %ecx
40c5f4:	85 c0                	test   %eax,%eax
40c5f6:	0f 84 6f ff ff ff    	je     0x40c56b
40c5fc:	8b 55 b0             	mov    -0x50(%ebp),%edx
40c5ff:	8d 42 02             	lea    0x2(%edx),%eax
40c602:	89 45 d0             	mov    %eax,-0x30(%ebp)
40c605:	33 c0                	xor    %eax,%eax
40c607:	66 8b 0a             	mov    (%edx),%cx
40c60a:	83 c2 02             	add    $0x2,%edx
40c60d:	66 3b c8             	cmp    %ax,%cx
40c610:	75 f5                	jne    0x40c607
40c612:	2b 55 d0             	sub    -0x30(%ebp),%edx
40c615:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
40c618:	50                   	push   %eax
40c619:	50                   	push   %eax
40c61a:	8d 45 b8             	lea    -0x48(%ebp),%eax
40c61d:	d1 fa                	sar    $1,%edx
40c61f:	50                   	push   %eax
40c620:	89 55 d0             	mov    %edx,-0x30(%ebp)
40c623:	e8 7c b3 ff ff       	call   0x4079a4
40c628:	8b 45 d0             	mov    -0x30(%ebp),%eax
40c62b:	8b 4d b0             	mov    -0x50(%ebp),%ecx
40c62e:	40                   	inc    %eax
40c62f:	ff 75 9c             	push   -0x64(%ebp)
40c632:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40c635:	50                   	push   %eax
40c636:	51                   	push   %ecx
40c637:	ff 75 a4             	push   -0x5c(%ebp)
40c63a:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
40c63d:	e8 0c 06 00 00       	call   0x40cc4e
40c642:	e9 3c ff ff ff       	jmp    0x40c583
40c647:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
40c64b:	c7 45 c8 04 00 00 00 	movl   $0x4,-0x38(%ebp)
40c652:	74 17                	je     0x40c66b
40c654:	ff 75 cc             	push   -0x34(%ebp)
40c657:	ff 15 04 40 41 00    	call   *0x414004
40c65d:	85 c0                	test   %eax,%eax
40c65f:	74 0a                	je     0x40c66b
40c661:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40c664:	89 45 bc             	mov    %eax,-0x44(%ebp)
40c667:	33 c0                	xor    %eax,%eax
40c669:	eb 05                	jmp    0x40c670
40c66b:	33 c0                	xor    %eax,%eax
40c66d:	89 45 bc             	mov    %eax,-0x44(%ebp)
40c670:	8d 4d bc             	lea    -0x44(%ebp),%ecx
40c673:	51                   	push   %ecx
40c674:	50                   	push   %eax
40c675:	6a 17                	push   $0x17
40c677:	53                   	push   %ebx
40c678:	ff 15 18 20 41 00    	call   *0x412018
40c67e:	85 c0                	test   %eax,%eax
40c680:	75 0a                	jne    0x40c68c
40c682:	68 38 44 40 00       	push   $0x404438
40c687:	e9 53 f9 ff ff       	jmp    0x40bfdf
40c68c:	6a 19                	push   $0x19
40c68e:	b8 2c 2a 40 00       	mov    $0x402a2c,%eax
40c693:	8b cf                	mov    %edi,%ecx
40c695:	50                   	push   %eax
40c696:	56                   	push   %esi
40c697:	68 28 41 40 00       	push   $0x404128
40c69c:	50                   	push   %eax
40c69d:	53                   	push   %ebx
40c69e:	e8 d2 e9 ff ff       	call   0x40b075
40c6a3:	85 c0                	test   %eax,%eax
40c6a5:	74 0a                	je     0x40c6b1
40c6a7:	68 2c 2a 40 00       	push   $0x402a2c
40c6ac:	e9 43 01 00 00       	jmp    0x40c7f4
40c6b1:	8d 45 d8             	lea    -0x28(%ebp),%eax
40c6b4:	8b cf                	mov    %edi,%ecx
40c6b6:	50                   	push   %eax
40c6b7:	b8 f8 26 40 00       	mov    $0x4026f8,%eax
40c6bc:	50                   	push   %eax
40c6bd:	56                   	push   %esi
40c6be:	68 30 41 40 00       	push   $0x404130
40c6c3:	50                   	push   %eax
40c6c4:	e8 47 e8 ff ff       	call   0x40af10
40c6c9:	84 c0                	test   %al,%al
40c6cb:	74 4d                	je     0x40c71a
40c6cd:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40c6d1:	8b 55 d8             	mov    -0x28(%ebp),%edx
40c6d4:	c7 45 c8 02 00 00 00 	movl   $0x2,-0x38(%ebp)
40c6db:	73 03                	jae    0x40c6e0
40c6dd:	8d 55 d8             	lea    -0x28(%ebp),%edx
40c6e0:	b9 10 12 41 00       	mov    $0x411210,%ecx
40c6e5:	e8 8a 14 00 00       	call   0x40db74
40c6ea:	89 45 bc             	mov    %eax,-0x44(%ebp)
40c6ed:	83 f8 ff             	cmp    $0xffffffff,%eax
40c6f0:	75 0a                	jne    0x40c6fc
40c6f2:	68 f8 26 40 00       	push   $0x4026f8
40c6f7:	e9 05 01 00 00       	jmp    0x40c801
40c6fc:	8d 45 bc             	lea    -0x44(%ebp),%eax
40c6ff:	50                   	push   %eax
40c700:	33 c0                	xor    %eax,%eax
40c702:	50                   	push   %eax
40c703:	6a 1b                	push   $0x1b
40c705:	53                   	push   %ebx
40c706:	ff 15 18 20 41 00    	call   *0x412018
40c70c:	85 c0                	test   %eax,%eax
40c70e:	75 0a                	jne    0x40c71a
40c710:	68 f8 26 40 00       	push   $0x4026f8
40c715:	e9 c5 f8 ff ff       	jmp    0x40bfdf
40c71a:	6a 1c                	push   $0x1c
40c71c:	68 58 44 40 00       	push   $0x404458
40c721:	56                   	push   %esi
40c722:	68 58 41 40 00       	push   $0x404158
40c727:	68 38 41 40 00       	push   $0x404138
40c72c:	53                   	push   %ebx
40c72d:	8b cf                	mov    %edi,%ecx
40c72f:	e8 12 ec ff ff       	call   0x40b346
40c734:	85 c0                	test   %eax,%eax
40c736:	74 0a                	je     0x40c742
40c738:	68 38 41 40 00       	push   $0x404138
40c73d:	e9 b2 00 00 00       	jmp    0x40c7f4
40c742:	6a 1d                	push   $0x1d
40c744:	68 d8 44 40 00       	push   $0x4044d8
40c749:	56                   	push   %esi
40c74a:	68 80 41 40 00       	push   $0x404180
40c74f:	68 60 41 40 00       	push   $0x404160
40c754:	53                   	push   %ebx
40c755:	8b cf                	mov    %edi,%ecx
40c757:	e8 ea eb ff ff       	call   0x40b346
40c75c:	85 c0                	test   %eax,%eax
40c75e:	74 0a                	je     0x40c76a
40c760:	68 60 41 40 00       	push   $0x404160
40c765:	e9 8a 00 00 00       	jmp    0x40c7f4
40c76a:	6a 1e                	push   $0x1e
40c76c:	68 50 45 40 00       	push   $0x404550
40c771:	56                   	push   %esi
40c772:	68 a0 22 40 00       	push   $0x4022a0
40c777:	68 88 41 40 00       	push   $0x404188
40c77c:	53                   	push   %ebx
40c77d:	8b cf                	mov    %edi,%ecx
40c77f:	e8 c2 eb ff ff       	call   0x40b346
40c784:	85 c0                	test   %eax,%eax
40c786:	74 07                	je     0x40c78f
40c788:	68 88 41 40 00       	push   $0x404188
40c78d:	eb 65                	jmp    0x40c7f4
40c78f:	6a 1f                	push   $0x1f
40c791:	b8 cc 2d 40 00       	mov    $0x402dcc,%eax
40c796:	8b cf                	mov    %edi,%ecx
40c798:	50                   	push   %eax
40c799:	56                   	push   %esi
40c79a:	68 a8 41 40 00       	push   $0x4041a8
40c79f:	50                   	push   %eax
40c7a0:	53                   	push   %ebx
40c7a1:	e8 0e eb ff ff       	call   0x40b2b4
40c7a6:	85 c0                	test   %eax,%eax
40c7a8:	74 07                	je     0x40c7b1
40c7aa:	68 cc 2d 40 00       	push   $0x402dcc
40c7af:	eb 43                	jmp    0x40c7f4
40c7b1:	8d 4d 88             	lea    -0x78(%ebp),%ecx
40c7b4:	e8 94 02 00 00       	call   0x40ca4d
40c7b9:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40c7bc:	85 c0                	test   %eax,%eax
40c7be:	74 08                	je     0x40c7c8
40c7c0:	50                   	push   %eax
40c7c1:	ff 15 e4 21 41 00    	call   *0x4121e4
40c7c7:	59                   	pop    %ecx
40c7c8:	ff 75 cc             	push   -0x34(%ebp)
40c7cb:	ff 15 0c 40 41 00    	call   *0x41400c
40c7d1:	33 c0                	xor    %eax,%eax
40c7d3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c7d6:	50                   	push   %eax
40c7d7:	6a 01                	push   $0x1
40c7d9:	e8 12 9d ff ff       	call   0x4064f0
40c7de:	33 c0                	xor    %eax,%eax
40c7e0:	50                   	push   %eax
40c7e1:	ff 15 0c 40 41 00    	call   *0x41400c
40c7e7:	e8 44 1e 00 00       	call   0x40e630
40c7ec:	c2 08 00             	ret    $0x8
40c7ef:	68 88 27 40 00       	push   $0x402788
40c7f4:	6a 0f                	push   $0xf
40c7f6:	50                   	push   %eax
40c7f7:	e8 19 ae ff ff       	call   0x407615
40c7fc:	68 d0 27 40 00       	push   $0x4027d0
40c801:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c804:	e8 d2 9c ff ff       	call   0x4064db
40c809:	50                   	push   %eax
40c80a:	6a 15                	push   $0x15
40c80c:	6a 57                	push   $0x57
40c80e:	e8 02 ae ff ff       	call   0x407615
40c813:	cc                   	int3
40c814:	8b ff                	mov    %edi,%edi
40c816:	55                   	push   %ebp
40c817:	8b ec                	mov    %esp,%ebp
40c819:	51                   	push   %ecx
40c81a:	51                   	push   %ecx
40c81b:	53                   	push   %ebx
40c81c:	56                   	push   %esi
40c81d:	8b 75 0c             	mov    0xc(%ebp),%esi
40c820:	33 db                	xor    %ebx,%ebx
40c822:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c825:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40c828:	57                   	push   %edi
40c829:	85 f6                	test   %esi,%esi
40c82b:	0f 84 80 00 00 00    	je     0x40c8b1
40c831:	66 39 1e             	cmp    %bx,(%esi)
40c834:	74 7b                	je     0x40c8b1
40c836:	8b ce                	mov    %esi,%ecx
40c838:	8d 51 02             	lea    0x2(%ecx),%edx
40c83b:	66 8b 01             	mov    (%ecx),%ax
40c83e:	83 c1 02             	add    $0x2,%ecx
40c841:	66 3b c3             	cmp    %bx,%ax
40c844:	75 f5                	jne    0x40c83b
40c846:	2b ca                	sub    %edx,%ecx
40c848:	d1 f9                	sar    $1,%ecx
40c84a:	81 f9 01 02 00 00    	cmp    $0x201,%ecx
40c850:	77 5f                	ja     0x40c8b1
40c852:	8b 7d 08             	mov    0x8(%ebp),%edi
40c855:	85 ff                	test   %edi,%edi
40c857:	75 05                	jne    0x40c85e
40c859:	bf 7c 24 40 00       	mov    $0x40247c,%edi
40c85e:	8b 5d 10             	mov    0x10(%ebp),%ebx
40c861:	53                   	push   %ebx
40c862:	e8 09 e3 ff ff       	call   0x40ab70
40c867:	68 01 01 00 00       	push   $0x101
40c86c:	8b cb                	mov    %ebx,%ecx
40c86e:	e8 7a b0 ff ff       	call   0x4078ed
40c873:	8b ce                	mov    %esi,%ecx
40c875:	8d 51 02             	lea    0x2(%ecx),%edx
40c878:	66 8b 01             	mov    (%ecx),%ax
40c87b:	83 c1 02             	add    $0x2,%ecx
40c87e:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40c882:	75 f4                	jne    0x40c878
40c884:	68 0a 02 04 00       	push   $0x4020a
40c889:	2b ca                	sub    %edx,%ecx
40c88b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c88e:	50                   	push   %eax
40c88f:	68 01 01 00 00       	push   $0x101
40c894:	ff 33                	push   (%ebx)
40c896:	d1 f9                	sar    $1,%ecx
40c898:	8d 41 01             	lea    0x1(%ecx),%eax
40c89b:	50                   	push   %eax
40c89c:	56                   	push   %esi
40c89d:	33 c0                	xor    %eax,%eax
40c89f:	50                   	push   %eax
40c8a0:	50                   	push   %eax
40c8a1:	57                   	push   %edi
40c8a2:	ff 15 14 40 41 00    	call   *0x414014
40c8a8:	5f                   	pop    %edi
40c8a9:	5e                   	pop    %esi
40c8aa:	5b                   	pop    %ebx
40c8ab:	85 c0                	test   %eax,%eax
40c8ad:	75 10                	jne    0x40c8bf
40c8af:	eb 0a                	jmp    0x40c8bb
40c8b1:	6a 20                	push   $0x20
40c8b3:	5a                   	pop    %edx
40c8b4:	b9 9a 08 00 00       	mov    $0x89a,%ecx
40c8b9:	eb 09                	jmp    0x40c8c4
40c8bb:	c9                   	leave
40c8bc:	c2 0c 00             	ret    $0xc
40c8bf:	6a 20                	push   $0x20
40c8c1:	5a                   	pop    %edx
40c8c2:	8b c8                	mov    %eax,%ecx
40c8c4:	e8 1a ad ff ff       	call   0x4075e3
40c8c9:	cc                   	int3
40c8ca:	cc                   	int3
40c8cb:	cc                   	int3
40c8cc:	cc                   	int3
40c8cd:	cc                   	int3
40c8ce:	cc                   	int3
40c8cf:	cc                   	int3
40c8d0:	6a 1c                	push   $0x1c
40c8d2:	b8 19 f4 40 00       	mov    $0x40f419,%eax
40c8d7:	e8 72 1d 00 00       	call   0x40e64e
40c8dc:	8b f9                	mov    %ecx,%edi
40c8de:	33 db                	xor    %ebx,%ebx
40c8e0:	53                   	push   %ebx
40c8e1:	ff 15 1c 40 41 00    	call   *0x41401c
40c8e7:	85 c0                	test   %eax,%eax
40c8e9:	0f 88 3e 01 00 00    	js     0x40ca2d
40c8ef:	a1 44 20 41 00       	mov    0x412044,%eax
40c8f4:	88 5d e4             	mov    %bl,-0x1c(%ebp)
40c8f7:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c8fa:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c8fd:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40c900:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c904:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c907:	8b 4f 08             	mov    0x8(%edi),%ecx
40c90a:	68 b0 41 40 00       	push   $0x4041b0
40c90f:	68 30 40 40 00       	push   $0x404030
40c914:	50                   	push   %eax
40c915:	8b 71 08             	mov    0x8(%ecx),%esi
40c918:	e8 6a 8a ff ff       	call   0x405387
40c91d:	39 30                	cmp    %esi,(%eax)
40c91f:	74 65                	je     0x40c986
40c921:	8d 47 30             	lea    0x30(%edi),%eax
40c924:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40c928:	72 02                	jb     0x40c92c
40c92a:	8b 00                	mov    (%eax),%eax
40c92c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c92f:	51                   	push   %ecx
40c930:	50                   	push   %eax
40c931:	e8 33 e4 ff ff       	call   0x40ad69
40c936:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40c939:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c93c:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40c940:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40c943:	ba c4 45 40 00       	mov    $0x4045c4,%edx
40c948:	50                   	push   %eax
40c949:	e8 f8 b2 ff ff       	call   0x407c46
40c94e:	85 c0                	test   %eax,%eax
40c950:	79 07                	jns    0x40c959
40c952:	6a 07                	push   $0x7
40c954:	e9 d6 00 00 00       	jmp    0x40ca2f
40c959:	75 54                	jne    0x40c9af
40c95b:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40c95f:	74 4e                	je     0x40c9af
40c961:	ff 75 f0             	push   -0x10(%ebp)
40c964:	ff 15 04 40 41 00    	call   *0x414004
40c96a:	85 c0                	test   %eax,%eax
40c96c:	74 41                	je     0x40c9af
40c96e:	ff 75 f0             	push   -0x10(%ebp)
40c971:	8d 4f 18             	lea    0x18(%edi),%ecx
40c974:	e8 28 9b ff ff       	call   0x4064a1
40c979:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c97d:	ff 75 f0             	push   -0x10(%ebp)
40c980:	ff 15 0c 40 41 00    	call   *0x41400c
40c986:	8d 47 18             	lea    0x18(%edi),%eax
40c989:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40c98d:	72 02                	jb     0x40c991