40a6d9:	74 49                	je     0x40a724
40a6db:	01 75 f8             	add    %esi,-0x8(%ebp)
40a6de:	8b 75 f0             	mov    -0x10(%ebp),%esi
40a6e1:	68 a8 13 41 00       	push   $0x4113a8
40a6e6:	68 6c 18 40 00       	push   $0x40186c
40a6eb:	56                   	push   %esi
40a6ec:	ff 15 68 22 41 00    	call   *0x412268
40a6f2:	56                   	push   %esi
40a6f3:	ff 15 64 22 41 00    	call   *0x412264
40a6f9:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a6fc:	83 c4 10             	add    $0x10,%esp
40a6ff:	8b 75 ec             	mov    -0x14(%ebp),%esi
40a702:	3b f0                	cmp    %eax,%esi
40a704:	0f 87 3b ff ff ff    	ja     0x40a645
40a70a:	e9 d0 fe ff ff       	jmp    0x40a5df
40a70f:	ff 15 48 20 41 00    	call   *0x412048
40a715:	85 c0                	test   %eax,%eax
40a717:	75 0b                	jne    0x40a724
40a719:	68 2b 04 00 00       	push   $0x42b
40a71e:	ff 15 74 20 41 00    	call   *0x412074
40a724:	6a 01                	push   $0x1
40a726:	e9 be fe ff ff       	jmp    0x40a5e9
40a72b:	ff 15 48 20 41 00    	call   *0x412048
40a731:	85 c0                	test   %eax,%eax
40a733:	75 08                	jne    0x40a73d
40a735:	6a 57                	push   $0x57
40a737:	ff 15 74 20 41 00    	call   *0x412074
40a73d:	33 c0                	xor    %eax,%eax
40a73f:	5f                   	pop    %edi
40a740:	5e                   	pop    %esi
40a741:	5b                   	pop    %ebx
40a742:	c9                   	leave
40a743:	c3                   	ret
40a744:	8b ff                	mov    %edi,%edi
40a746:	55                   	push   %ebp
40a747:	8b ec                	mov    %esp,%ebp
40a749:	51                   	push   %ecx
40a74a:	51                   	push   %ecx
40a74b:	8b 55 14             	mov    0x14(%ebp),%edx
40a74e:	53                   	push   %ebx
40a74f:	56                   	push   %esi
40a750:	85 d2                	test   %edx,%edx
40a752:	0f 84 00 01 00 00    	je     0x40a858
40a758:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40a75c:	0f 84 f6 00 00 00    	je     0x40a858
40a762:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40a766:	75 0d                	jne    0x40a775
40a768:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a76b:	e8 7d fd ff ff       	call   0x40a4ed
40a770:	e9 f7 00 00 00       	jmp    0x40a86c
40a775:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40a779:	0f 85 8d 00 00 00    	jne    0x40a80c
40a77f:	83 cb ff             	or     $0xffffffff,%ebx
40a782:	33 c9                	xor    %ecx,%ecx
40a784:	8d 45 18             	lea    0x18(%ebp),%eax
40a787:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a78a:	33 c0                	xor    %eax,%eax
40a78c:	83 fb ff             	cmp    $0xffffffff,%ebx
40a78f:	6a 01                	push   $0x1
40a791:	0f 95 c0             	setne  %al
40a794:	33 d2                	xor    %edx,%edx
40a796:	48                   	dec    %eax
40a797:	25 00 08 00 00       	and    $0x800,%eax
40a79c:	05 00 08 00 00       	add    $0x800,%eax
40a7a1:	03 c8                	add    %eax,%ecx
40a7a3:	51                   	push   %ecx
40a7a4:	6a 03                	push   $0x3
40a7a6:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a7a9:	59                   	pop    %ecx
40a7aa:	e8 f4 ed ff ff       	call   0x4095a3
40a7af:	8b f0                	mov    %eax,%esi
40a7b1:	85 f6                	test   %esi,%esi
40a7b3:	74 49                	je     0x40a7fe
40a7b5:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a7b8:	50                   	push   %eax
40a7b9:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a7bc:	48                   	dec    %eax
40a7bd:	50                   	push   %eax
40a7be:	56                   	push   %esi
40a7bf:	6a 00                	push   $0x0
40a7c1:	6a 00                	push   $0x0
40a7c3:	ff 75 14             	push   0x14(%ebp)
40a7c6:	68 00 04 00 00       	push   $0x400
40a7cb:	ff 15 60 20 41 00    	call   *0x412060
40a7d1:	8b d8                	mov    %eax,%ebx
40a7d3:	85 db                	test   %ebx,%ebx
40a7d5:	75 15                	jne    0x40a7ec
40a7d7:	ff 15 48 20 41 00    	call   *0x412048
40a7dd:	85 c0                	test   %eax,%eax
40a7df:	74 18                	je     0x40a7f9
40a7e1:	ff 15 48 20 41 00    	call   *0x412048
40a7e7:	83 f8 7a             	cmp    $0x7a,%eax
40a7ea:	75 7e                	jne    0x40a86a
40a7ec:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a7f0:	85 db                	test   %ebx,%ebx
40a7f2:	75 5d                	jne    0x40a851
40a7f4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a7f7:	eb 8b                	jmp    0x40a784
40a7f9:	33 c0                	xor    %eax,%eax
40a7fb:	40                   	inc    %eax
40a7fc:	eb 6e                	jmp    0x40a86c
40a7fe:	ff 15 48 20 41 00    	call   *0x412048
40a804:	85 c0                	test   %eax,%eax
40a806:	75 62                	jne    0x40a86a
40a808:	6a 08                	push   $0x8
40a80a:	eb 58                	jmp    0x40a864
40a80c:	33 db                	xor    %ebx,%ebx
40a80e:	6a 01                	push   $0x1
40a810:	81 c3 00 08 00 00    	add    $0x800,%ebx
40a816:	8d 45 18             	lea    0x18(%ebp),%eax
40a819:	53                   	push   %ebx
40a81a:	6a 03                	push   $0x3
40a81c:	33 d2                	xor    %edx,%edx
40a81e:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a821:	59                   	pop    %ecx
40a822:	e8 7c ed ff ff       	call   0x4095a3
40a827:	8b f0                	mov    %eax,%esi
40a829:	85 f6                	test   %esi,%esi
40a82b:	74 d1                	je     0x40a7fe
40a82d:	ff 75 fc             	push   -0x4(%ebp)
40a830:	8b d3                	mov    %ebx,%edx
40a832:	8b ce                	mov    %esi,%ecx
40a834:	ff 75 14             	push   0x14(%ebp)
40a837:	e8 02 07 00 00       	call   0x40af3e
40a83c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a840:	3d 7a 00 07 80       	cmp    $0x8007007a,%eax
40a845:	74 c7                	je     0x40a80e
40a847:	85 c0                	test   %eax,%eax
40a849:	79 06                	jns    0x40a851
40a84b:	0f b7 c0             	movzwl %ax,%eax
40a84e:	50                   	push   %eax
40a84f:	eb 13                	jmp    0x40a864
40a851:	8b d6                	mov    %esi,%edx
40a853:	e9 10 ff ff ff       	jmp    0x40a768
40a858:	ff 15 48 20 41 00    	call   *0x412048
40a85e:	85 c0                	test   %eax,%eax
40a860:	75 08                	jne    0x40a86a
40a862:	6a 57                	push   $0x57
40a864:	ff 15 74 20 41 00    	call   *0x412074
40a86a:	33 c0                	xor    %eax,%eax
40a86c:	5e                   	pop    %esi
40a86d:	5b                   	pop    %ebx
40a86e:	c9                   	leave
40a86f:	c3                   	ret
40a870:	8b ff                	mov    %edi,%edi
40a872:	55                   	push   %ebp
40a873:	8b ec                	mov    %esp,%ebp
40a875:	51                   	push   %ecx
40a876:	53                   	push   %ebx
40a877:	56                   	push   %esi
40a878:	57                   	push   %edi
40a879:	8b fa                	mov    %edx,%edi
40a87b:	33 f6                	xor    %esi,%esi
40a87d:	8b d1                	mov    %ecx,%edx
40a87f:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a882:	85 d2                	test   %edx,%edx
40a884:	0f 84 b4 00 00 00    	je     0x40a93e
40a88a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a88d:	85 db                	test   %ebx,%ebx
40a88f:	0f 84 a9 00 00 00    	je     0x40a93e
40a895:	85 ff                	test   %edi,%edi
40a897:	75 08                	jne    0x40a8a1
40a899:	39 33                	cmp    %esi,(%ebx)
40a89b:	0f 85 9d 00 00 00    	jne    0x40a93e
40a8a1:	8b 0b                	mov    (%ebx),%ecx
40a8a3:	85 c9                	test   %ecx,%ecx
40a8a5:	74 08                	je     0x40a8af
40a8a7:	83 f9 01             	cmp    $0x1,%ecx
40a8aa:	76 7b                	jbe    0x40a927
40a8ac:	8d 71 ff             	lea    -0x1(%ecx),%esi
40a8af:	85 ff                	test   %edi,%edi
40a8b1:	74 1a                	je     0x40a8cd
40a8b3:	85 f6                	test   %esi,%esi
40a8b5:	74 16                	je     0x40a8cd
40a8b7:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
40a8be:	50                   	push   %eax
40a8bf:	6a 00                	push   $0x0
40a8c1:	57                   	push   %edi
40a8c2:	e8 fd 4a 00 00       	call   0x40f3c4
40a8c7:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a8ca:	83 c4 0c             	add    $0xc,%esp
40a8cd:	83 c8 ff             	or     $0xffffffff,%eax
40a8d0:	85 f6                	test   %esi,%esi
40a8d2:	74 0d                	je     0x40a8e1
40a8d4:	52                   	push   %edx
40a8d5:	ff 15 b8 20 41 00    	call   *0x4120b8
40a8db:	3b c6                	cmp    %esi,%eax
40a8dd:	7e 02                	jle    0x40a8e1
40a8df:	8b c6                	mov    %esi,%eax
40a8e1:	56                   	push   %esi
40a8e2:	57                   	push   %edi
40a8e3:	50                   	push   %eax
40a8e4:	ff 75 fc             	push   -0x4(%ebp)
40a8e7:	6a 00                	push   $0x0
40a8e9:	6a 01                	push   $0x1
40a8eb:	ff 15 a0 20 41 00    	call   *0x4120a0
40a8f1:	85 c0                	test   %eax,%eax
40a8f3:	75 45                	jne    0x40a93a
40a8f5:	ff 15 48 20 41 00    	call   *0x412048
40a8fb:	85 c0                	test   %eax,%eax
40a8fd:	75 0b                	jne    0x40a90a
40a8ff:	68 2b 04 00 00       	push   $0x42b
40a904:	ff 15 74 20 41 00    	call   *0x412074
40a90a:	85 ff                	test   %edi,%edi
40a90c:	74 42                	je     0x40a950
40a90e:	85 f6                	test   %esi,%esi
40a910:	74 3e                	je     0x40a950
40a912:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
40a919:	50                   	push   %eax
40a91a:	6a 00                	push   $0x0
40a91c:	57                   	push   %edi
40a91d:	e8 a2 4a 00 00       	call   0x40f3c4
40a922:	83 c4 0c             	add    $0xc,%esp
40a925:	eb 29                	jmp    0x40a950
40a927:	03 c9                	add    %ecx,%ecx
40a929:	51                   	push   %ecx
40a92a:	6a 00                	push   $0x0
40a92c:	57                   	push   %edi
40a92d:	e8 92 4a 00 00       	call   0x40f3c4
40a932:	83 c4 0c             	add    $0xc,%esp
40a935:	33 c0                	xor    %eax,%eax
40a937:	40                   	inc    %eax
40a938:	eb 18                	jmp    0x40a952
40a93a:	89 03                	mov    %eax,(%ebx)
40a93c:	eb f7                	jmp    0x40a935
40a93e:	ff 15 48 20 41 00    	call   *0x412048
40a944:	85 c0                	test   %eax,%eax
40a946:	75 08                	jne    0x40a950
40a948:	6a 57                	push   $0x57
40a94a:	ff 15 74 20 41 00    	call   *0x412074
40a950:	33 c0                	xor    %eax,%eax
40a952:	5f                   	pop    %edi
40a953:	5e                   	pop    %esi
40a954:	5b                   	pop    %ebx
40a955:	c9                   	leave
40a956:	c2 04 00             	ret    $0x4
40a959:	8b ff                	mov    %edi,%edi
40a95b:	55                   	push   %ebp
40a95c:	8b ec                	mov    %esp,%ebp
40a95e:	83 ec 44             	sub    $0x44,%esp
40a961:	a1 44 10 41 00       	mov    0x411044,%eax
40a966:	33 c5                	xor    %ebp,%eax
40a968:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a96b:	33 c0                	xor    %eax,%eax
40a96d:	89 55 bc             	mov    %edx,-0x44(%ebp)
40a970:	89 45 c8             	mov    %eax,-0x38(%ebp)
40a973:	89 45 d0             	mov    %eax,-0x30(%ebp)
40a976:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a979:	89 45 de             	mov    %eax,-0x22(%ebp)
40a97c:	89 45 e2             	mov    %eax,-0x1e(%ebp)
40a97f:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a982:	53                   	push   %ebx
40a983:	8b d8                	mov    %eax,%ebx
40a985:	56                   	push   %esi
40a986:	57                   	push   %edi
40a987:	8d 7d ec             	lea    -0x14(%ebp),%edi
40a98a:	ab                   	stos   %eax,%es:(%edi)
40a98b:	ab                   	stos   %eax,%es:(%edi)
40a98c:	ab                   	stos   %eax,%es:(%edi)
40a98d:	ab                   	stos   %eax,%es:(%edi)
40a98e:	85 c9                	test   %ecx,%ecx
40a990:	75 1b                	jne    0x40a9ad
40a992:	ff 15 48 20 41 00    	call   *0x412048
40a998:	85 c0                	test   %eax,%eax
40a99a:	0f 85 15 02 00 00    	jne    0x40abb5
40a9a0:	6a 57                	push   $0x57
40a9a2:	ff 15 74 20 41 00    	call   *0x412074
40a9a8:	e9 08 02 00 00       	jmp    0x40abb5
40a9ad:	6a f6                	push   $0xfffffff6
40a9af:	ff 15 58 20 41 00    	call   *0x412058
40a9b5:	8b f0                	mov    %eax,%esi
40a9b7:	85 f6                	test   %esi,%esi
40a9b9:	0f 84 f6 01 00 00    	je     0x40abb5
40a9bf:	8d 55 c4             	lea    -0x3c(%ebp),%edx
40a9c2:	8b ce                	mov    %esi,%ecx
40a9c4:	e8 09 f9 ff ff       	call   0x40a2d2
40a9c9:	33 d2                	xor    %edx,%edx
40a9cb:	85 c0                	test   %eax,%eax
40a9cd:	0f 94 c2             	sete   %dl
40a9d0:	89 55 d4             	mov    %edx,-0x2c(%ebp)
40a9d3:	85 c0                	test   %eax,%eax
40a9d5:	74 14                	je     0x40a9eb
40a9d7:	6a 01                	push   $0x1
40a9d9:	56                   	push   %esi
40a9da:	ff 15 9c 20 41 00    	call   *0x41209c
40a9e0:	85 c0                	test   %eax,%eax
40a9e2:	0f 84 cd 01 00 00    	je     0x40abb5
40a9e8:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a9eb:	33 c0                	xor    %eax,%eax
40a9ed:	8d 7d dc             	lea    -0x24(%ebp),%edi
40a9f0:	ab                   	stos   %eax,%es:(%edi)
40a9f1:	ab                   	stos   %eax,%es:(%edi)
40a9f2:	66 ab                	stos   %ax,%es:(%edi)
40a9f4:	33 c0                	xor    %eax,%eax
40a9f6:	8d 7d e8             	lea    -0x18(%ebp),%edi
40a9f9:	ab                   	stos   %eax,%es:(%edi)
40a9fa:	ab                   	stos   %eax,%es:(%edi)
40a9fb:	ab                   	stos   %eax,%es:(%edi)
40a9fc:	ab                   	stos   %eax,%es:(%edi)
40a9fd:	ab                   	stos   %eax,%es:(%edi)
40a9fe:	8b 7d c0             	mov    -0x40(%ebp),%edi
40aa01:	8d 45 c8             	lea    -0x38(%ebp),%eax
40aa04:	6a 00                	push   $0x0
40aa06:	50                   	push   %eax
40aa07:	6a 01                	push   $0x1
40aa09:	83 fa 01             	cmp    $0x1,%edx
40aa0c:	75 43                	jne    0x40aa51
40aa0e:	8d 45 db             	lea    -0x25(%ebp),%eax
40aa11:	50                   	push   %eax
40aa12:	56                   	push   %esi
40aa13:	ff 15 98 20 41 00    	call   *0x412098
40aa19:	85 c0                	test   %eax,%eax
40aa1b:	0f 84 94 01 00 00    	je     0x40abb5
40aa21:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
40aa25:	0f 84 3f 01 00 00    	je     0x40ab6a
40aa2b:	8a 45 db             	mov    -0x25(%ebp),%al
40aa2e:	8d 55 e8             	lea    -0x18(%ebp),%edx
40aa31:	88 45 dc             	mov    %al,-0x24(%ebp)
40aa34:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40aa37:	8d 45 c8             	lea    -0x38(%ebp),%eax
40aa3a:	c7 45 c8 0a 00 00 00 	movl   $0xa,-0x38(%ebp)
40aa41:	50                   	push   %eax
40aa42:	e8 29 fe ff ff       	call   0x40a870
40aa47:	66 8b 4d e8          	mov    -0x18(%ebp),%cx
40aa4b:	66 89 4d cc          	mov    %cx,-0x34(%ebp)
40aa4f:	eb 17                	jmp    0x40aa68
40aa51:	8d 45 cc             	lea    -0x34(%ebp),%eax
40aa54:	50                   	push   %eax
40aa55:	56                   	push   %esi
40aa56:	ff 15 94 20 41 00    	call   *0x412094
40aa5c:	85 c0                	test   %eax,%eax
40aa5e:	0f 84 47 01 00 00    	je     0x40abab
40aa64:	66 8b 4d cc          	mov    -0x34(%ebp),%cx
40aa68:	66 83 f9 0d          	cmp    $0xd,%cx
40aa6c:	0f 84 f8 00 00 00    	je     0x40ab6a
40aa72:	6a 08                	push   $0x8
40aa74:	58                   	pop    %eax
40aa75:	66 3b c8             	cmp    %ax,%cx
40aa78:	0f 85 a3 00 00 00    	jne    0x40ab21
40aa7e:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40aa81:	85 db                	test   %ebx,%ebx
40aa83:	0f 84 78 ff ff ff    	je     0x40aa01
40aa89:	50                   	push   %eax
40aa8a:	68 70 18 40 00       	push   $0x401870
40aa8f:	8d 45 e8             	lea    -0x18(%ebp),%eax
40aa92:	6a 0a                	push   $0xa
40aa94:	50                   	push   %eax
40aa95:	e8 8a e9 ff ff       	call   0x409424
40aa9a:	83 c4 10             	add    $0x10,%esp
40aa9d:	8d 45 d0             	lea    -0x30(%ebp),%eax