409728:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40972f:	e8 14 00 00 00       	call   0x409748
409734:	3b 75 14             	cmp    0x14(%ebp),%esi
409737:	75 ea                	jne    0x409723
409739:	8b 45 08             	mov    0x8(%ebp),%eax
40973c:	89 70 08             	mov    %esi,0x8(%eax)
40973f:	e8 22 df ff ff       	call   0x407666
409744:	c3                   	ret
409745:	8b 75 e4             	mov    -0x1c(%ebp),%esi
409748:	e8 29 1f 00 00       	call   0x40b676
40974d:	83 78 18 00          	cmpl   $0x0,0x18(%eax)
409751:	7e 08                	jle    0x40975b
409753:	e8 1e 1f 00 00       	call   0x40b676
409758:	ff 48 18             	decl   0x18(%eax)
40975b:	c3                   	ret
40975c:	55                   	push   %ebp
40975d:	8b ec                	mov    %esp,%ebp
40975f:	53                   	push   %ebx
409760:	56                   	push   %esi
409761:	57                   	push   %edi
409762:	ff 75 10             	push   0x10(%ebp)
409765:	e8 52 20 00 00       	call   0x40b7bc
40976a:	59                   	pop    %ecx
40976b:	e8 06 1f 00 00       	call   0x40b676
409770:	8b 4d 18             	mov    0x18(%ebp),%ecx
409773:	33 f6                	xor    %esi,%esi
409775:	8b 55 08             	mov    0x8(%ebp),%edx
409778:	bb ff ff ff 1f       	mov    $0x1fffffff,%ebx
40977d:	bf 22 05 93 19       	mov    $0x19930522,%edi
409782:	39 70 20             	cmp    %esi,0x20(%eax)
409785:	75 22                	jne    0x4097a9
409787:	81 3a 63 73 6d e0    	cmpl   $0xe06d7363,(%edx)
40978d:	74 1a                	je     0x4097a9
40978f:	81 3a 26 00 00 80    	cmpl   $0x80000026,(%edx)
409795:	74 12                	je     0x4097a9
409797:	8b 01                	mov    (%ecx),%eax
409799:	23 c3                	and    %ebx,%eax
40979b:	3b c7                	cmp    %edi,%eax
40979d:	72 0a                	jb     0x4097a9
40979f:	f6 41 20 01          	testb  $0x1,0x20(%ecx)
4097a3:	0f 85 a7 00 00 00    	jne    0x409850
4097a9:	f6 42 04 66          	testb  $0x66,0x4(%edx)
4097ad:	74 25                	je     0x4097d4
4097af:	39 71 04             	cmp    %esi,0x4(%ecx)
4097b2:	0f 84 98 00 00 00    	je     0x409850
4097b8:	39 75 1c             	cmp    %esi,0x1c(%ebp)
4097bb:	0f 85 8f 00 00 00    	jne    0x409850
4097c1:	6a ff                	push   $0xffffffff
4097c3:	51                   	push   %ecx
4097c4:	ff 75 14             	push   0x14(%ebp)
4097c7:	ff 75 0c             	push   0xc(%ebp)
4097ca:	e8 c5 fe ff ff       	call   0x409694
4097cf:	83 c4 10             	add    $0x10,%esp
4097d2:	eb 7c                	jmp    0x409850
4097d4:	39 71 0c             	cmp    %esi,0xc(%ecx)
4097d7:	75 1a                	jne    0x4097f3
4097d9:	8b 01                	mov    (%ecx),%eax
4097db:	23 c3                	and    %ebx,%eax
4097dd:	3d 21 05 93 19       	cmp    $0x19930521,%eax
4097e2:	72 05                	jb     0x4097e9
4097e4:	39 71 1c             	cmp    %esi,0x1c(%ecx)
4097e7:	75 0a                	jne    0x4097f3
4097e9:	3b c7                	cmp    %edi,%eax
4097eb:	72 63                	jb     0x409850
4097ed:	f6 41 20 04          	testb  $0x4,0x20(%ecx)
4097f1:	74 5d                	je     0x409850
4097f3:	81 3a 63 73 6d e0    	cmpl   $0xe06d7363,(%edx)
4097f9:	75 39                	jne    0x409834
4097fb:	83 7a 10 03          	cmpl   $0x3,0x10(%edx)
4097ff:	72 33                	jb     0x409834
409801:	39 7a 14             	cmp    %edi,0x14(%edx)
409804:	76 2e                	jbe    0x409834
409806:	8b 42 1c             	mov    0x1c(%edx),%eax
409809:	8b 70 08             	mov    0x8(%eax),%esi
40980c:	85 f6                	test   %esi,%esi
40980e:	74 24                	je     0x409834
409810:	0f b6 45 24          	movzbl 0x24(%ebp),%eax
409814:	50                   	push   %eax
409815:	ff 75 20             	push   0x20(%ebp)
409818:	ff 75 1c             	push   0x1c(%ebp)
40981b:	51                   	push   %ecx
40981c:	ff 75 14             	push   0x14(%ebp)
40981f:	8b ce                	mov    %esi,%ecx
409821:	ff 75 10             	push   0x10(%ebp)
409824:	ff 75 0c             	push   0xc(%ebp)
409827:	52                   	push   %edx
409828:	e8 44 d8 ff ff       	call   0x407071
40982d:	ff d6                	call   *%esi
40982f:	83 c4 20             	add    $0x20,%esp
409832:	eb 1f                	jmp    0x409853
409834:	ff 75 20             	push   0x20(%ebp)
409837:	ff 75 1c             	push   0x1c(%ebp)
40983a:	ff 75 24             	push   0x24(%ebp)
40983d:	51                   	push   %ecx
40983e:	ff 75 14             	push   0x14(%ebp)
409841:	ff 75 10             	push   0x10(%ebp)
409844:	ff 75 0c             	push   0xc(%ebp)
409847:	52                   	push   %edx
409848:	e8 ad f6 ff ff       	call   0x408efa
40984d:	83 c4 20             	add    $0x20,%esp
409850:	33 c0                	xor    %eax,%eax
409852:	40                   	inc    %eax
409853:	5f                   	pop    %edi
409854:	5e                   	pop    %esi
409855:	5b                   	pop    %ebx
409856:	5d                   	pop    %ebp
409857:	c3                   	ret
409858:	55                   	push   %ebp
409859:	8b ec                	mov    %esp,%ebp
40985b:	8b 55 08             	mov    0x8(%ebp),%edx
40985e:	53                   	push   %ebx
40985f:	56                   	push   %esi
409860:	57                   	push   %edi
409861:	8b 42 04             	mov    0x4(%edx),%eax
409864:	85 c0                	test   %eax,%eax
409866:	74 76                	je     0x4098de
409868:	8d 48 08             	lea    0x8(%eax),%ecx
40986b:	80 39 00             	cmpb   $0x0,(%ecx)
40986e:	74 6e                	je     0x4098de
409870:	f6 02 80             	testb  $0x80,(%edx)
409873:	8b 7d 0c             	mov    0xc(%ebp),%edi
409876:	74 05                	je     0x40987d
409878:	f6 07 10             	testb  $0x10,(%edi)
40987b:	75 61                	jne    0x4098de
40987d:	8b 5f 04             	mov    0x4(%edi),%ebx
409880:	33 f6                	xor    %esi,%esi
409882:	3b c3                	cmp    %ebx,%eax
409884:	74 30                	je     0x4098b6
409886:	8d 43 08             	lea    0x8(%ebx),%eax
409889:	8a 19                	mov    (%ecx),%bl
40988b:	3a 18                	cmp    (%eax),%bl
40988d:	75 1a                	jne    0x4098a9
40988f:	84 db                	test   %bl,%bl
409891:	74 12                	je     0x4098a5
409893:	8a 59 01             	mov    0x1(%ecx),%bl
409896:	3a 58 01             	cmp    0x1(%eax),%bl
409899:	75 0e                	jne    0x4098a9
40989b:	83 c1 02             	add    $0x2,%ecx
40989e:	83 c0 02             	add    $0x2,%eax
4098a1:	84 db                	test   %bl,%bl
4098a3:	75 e4                	jne    0x409889
4098a5:	8b c6                	mov    %esi,%eax
4098a7:	eb 05                	jmp    0x4098ae
4098a9:	1b c0                	sbb    %eax,%eax
4098ab:	83 c8 01             	or     $0x1,%eax
4098ae:	85 c0                	test   %eax,%eax
4098b0:	74 04                	je     0x4098b6
4098b2:	33 c0                	xor    %eax,%eax
4098b4:	eb 2b                	jmp    0x4098e1
4098b6:	f6 07 02             	testb  $0x2,(%edi)
4098b9:	74 05                	je     0x4098c0
4098bb:	f6 02 08             	testb  $0x8,(%edx)
4098be:	74 1a                	je     0x4098da
4098c0:	8b 45 10             	mov    0x10(%ebp),%eax
4098c3:	f6 00 01             	testb  $0x1,(%eax)
4098c6:	74 05                	je     0x4098cd
4098c8:	f6 02 01             	testb  $0x1,(%edx)
4098cb:	74 0d                	je     0x4098da
4098cd:	f6 00 02             	testb  $0x2,(%eax)
4098d0:	74 05                	je     0x4098d7
4098d2:	f6 02 02             	testb  $0x2,(%edx)
4098d5:	74 03                	je     0x4098da
4098d7:	33 f6                	xor    %esi,%esi
4098d9:	46                   	inc    %esi
4098da:	8b c6                	mov    %esi,%eax
4098dc:	eb 03                	jmp    0x4098e1
4098de:	33 c0                	xor    %eax,%eax
4098e0:	40                   	inc    %eax
4098e1:	5f                   	pop    %edi
4098e2:	5e                   	pop    %esi
4098e3:	5b                   	pop    %ebx
4098e4:	5d                   	pop    %ebp
4098e5:	c3                   	ret
4098e6:	e8 8b 1d 00 00       	call   0x40b676
4098eb:	83 78 18 00          	cmpl   $0x0,0x18(%eax)
4098ef:	0f 95 c0             	setne  %al
4098f2:	c3                   	ret
4098f3:	cc                   	int3
4098f4:	cc                   	int3
4098f5:	cc                   	int3
4098f6:	cc                   	int3
4098f7:	cc                   	int3
4098f8:	cc                   	int3
4098f9:	cc                   	int3
4098fa:	cc                   	int3
4098fb:	cc                   	int3
4098fc:	cc                   	int3
4098fd:	cc                   	int3
4098fe:	cc                   	int3
4098ff:	cc                   	int3
409900:	8b 44 24 0c          	mov    0xc(%esp),%eax
409904:	53                   	push   %ebx
409905:	85 c0                	test   %eax,%eax
409907:	74 52                	je     0x40995b
409909:	8b 54 24 08          	mov    0x8(%esp),%edx
40990d:	33 db                	xor    %ebx,%ebx
40990f:	8a 5c 24 0c          	mov    0xc(%esp),%bl
409913:	f7 c2 03 00 00 00    	test   $0x3,%edx
409919:	74 16                	je     0x409931
40991b:	8a 0a                	mov    (%edx),%cl
40991d:	83 c2 01             	add    $0x1,%edx
409920:	32 cb                	xor    %bl,%cl
409922:	74 72                	je     0x409996
409924:	83 e8 01             	sub    $0x1,%eax
409927:	74 32                	je     0x40995b
409929:	f7 c2 03 00 00 00    	test   $0x3,%edx
40992f:	75 ea                	jne    0x40991b
409931:	83 e8 04             	sub    $0x4,%eax
409934:	72 12                	jb     0x409948
409936:	57                   	push   %edi
409937:	8b fb                	mov    %ebx,%edi
409939:	c1 e3 08             	shl    $0x8,%ebx
40993c:	03 df                	add    %edi,%ebx
40993e:	8b fb                	mov    %ebx,%edi
409940:	c1 e3 10             	shl    $0x10,%ebx
409943:	03 df                	add    %edi,%ebx
409945:	eb 1b                	jmp    0x409962
409947:	5f                   	pop    %edi
409948:	83 c0 04             	add    $0x4,%eax
40994b:	74 0e                	je     0x40995b
40994d:	8a 0a                	mov    (%edx),%cl
40994f:	83 c2 01             	add    $0x1,%edx
409952:	32 cb                	xor    %bl,%cl
409954:	74 40                	je     0x409996
409956:	83 e8 01             	sub    $0x1,%eax
409959:	75 f2                	jne    0x40994d
40995b:	5b                   	pop    %ebx
40995c:	c3                   	ret
40995d:	83 e8 04             	sub    $0x4,%eax
409960:	72 e5                	jb     0x409947
409962:	8b 0a                	mov    (%edx),%ecx
409964:	33 cb                	xor    %ebx,%ecx
409966:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
40996b:	03 f9                	add    %ecx,%edi
40996d:	83 f1 ff             	xor    $0xffffffff,%ecx
409970:	33 cf                	xor    %edi,%ecx
409972:	83 c2 04             	add    $0x4,%edx
409975:	81 e1 00 01 01 81    	and    $0x81010100,%ecx
40997b:	74 e0                	je     0x40995d
40997d:	8b 4a fc             	mov    -0x4(%edx),%ecx
409980:	32 cb                	xor    %bl,%cl
409982:	74 23                	je     0x4099a7
409984:	32 eb                	xor    %bl,%ch
409986:	74 19                	je     0x4099a1
409988:	c1 e9 10             	shr    $0x10,%ecx
40998b:	32 cb                	xor    %bl,%cl
40998d:	74 0c                	je     0x40999b
40998f:	32 eb                	xor    %bl,%ch
409991:	74 02                	je     0x409995
409993:	eb c8                	jmp    0x40995d
409995:	5f                   	pop    %edi
409996:	8d 42 ff             	lea    -0x1(%edx),%eax
409999:	5b                   	pop    %ebx
40999a:	c3                   	ret
40999b:	8d 42 fe             	lea    -0x2(%edx),%eax
40999e:	5f                   	pop    %edi
40999f:	5b                   	pop    %ebx
4099a0:	c3                   	ret
4099a1:	8d 42 fd             	lea    -0x3(%edx),%eax
4099a4:	5f                   	pop    %edi
4099a5:	5b                   	pop    %ebx
4099a6:	c3                   	ret
4099a7:	8d 42 fc             	lea    -0x4(%edx),%eax
4099aa:	5f                   	pop    %edi
4099ab:	5b                   	pop    %ebx
4099ac:	c3                   	ret
4099ad:	55                   	push   %ebp
4099ae:	8b ec                	mov    %esp,%ebp
4099b0:	53                   	push   %ebx
4099b1:	8b 5d 10             	mov    0x10(%ebp),%ebx
4099b4:	8b c3                	mov    %ebx,%eax
4099b6:	56                   	push   %esi
4099b7:	83 e8 00             	sub    $0x0,%eax
4099ba:	0f 84 e5 16 00 00    	je     0x40b0a5
4099c0:	83 e8 01             	sub    $0x1,%eax
4099c3:	0f 84 cb 16 00 00    	je     0x40b094
4099c9:	83 e8 01             	sub    $0x1,%eax
4099cc:	0f 84 93 16 00 00    	je     0x40b065
4099d2:	83 e8 01             	sub    $0x1,%eax
4099d5:	0f 84 40 16 00 00    	je     0x40b01b
4099db:	8b 55 0c             	mov    0xc(%ebp),%edx
4099de:	83 e8 01             	sub    $0x1,%eax
4099e1:	0f 84 ac 15 00 00    	je     0x40af93
4099e7:	8b 75 08             	mov    0x8(%ebp),%esi
4099ea:	57                   	push   %edi
4099eb:	83 fb 20             	cmp    $0x20,%ebx
4099ee:	0f 82 a1 04 00 00    	jb     0x409e95
4099f4:	8b 06                	mov    (%esi),%eax
4099f6:	3b 02                	cmp    (%edx),%eax
4099f8:	0f 84 80 00 00 00    	je     0x409a7e
4099fe:	0f b6 f8             	movzbl %al,%edi
409a01:	0f b6 02             	movzbl (%edx),%eax
409a04:	2b f8                	sub    %eax,%edi
409a06:	74 16                	je     0x409a1e
409a08:	33 c9                	xor    %ecx,%ecx
409a0a:	85 ff                	test   %edi,%edi
409a0c:	0f 9f c1             	setg   %cl
409a0f:	8d 0c 4d ff ff ff ff 	lea    -0x1(,%ecx,2),%ecx
409a16:	85 c9                	test   %ecx,%ecx
409a18:	0f 85 9b 08 00 00    	jne    0x40a2b9
409a1e:	0f b6 7e 01          	movzbl 0x1(%esi),%edi
409a22:	0f b6 42 01          	movzbl 0x1(%edx),%eax
409a26:	2b f8                	sub    %eax,%edi
409a28:	74 16                	je     0x409a40
409a2a:	33 c9                	xor    %ecx,%ecx
409a2c:	85 ff                	test   %edi,%edi
409a2e:	0f 9f c1             	setg   %cl
409a31:	8d 0c 4d ff ff ff ff 	lea    -0x1(,%ecx,2),%ecx
409a38:	85 c9                	test   %ecx,%ecx
409a3a:	0f 85 79 08 00 00    	jne    0x40a2b9
409a40:	0f b6 7e 02          	movzbl 0x2(%esi),%edi
409a44:	0f b6 42 02          	movzbl 0x2(%edx),%eax
409a48:	2b f8                	sub    %eax,%edi
409a4a:	74 16                	je     0x409a62
409a4c:	33 c9                	xor    %ecx,%ecx
409a4e:	85 ff                	test   %edi,%edi
409a50:	0f 9f c1             	setg   %cl
409a53:	8d 0c 4d ff ff ff ff 	lea    -0x1(,%ecx,2),%ecx
409a5a:	85 c9                	test   %ecx,%ecx
409a5c:	0f 85 57 08 00 00    	jne    0x40a2b9
409a62:	0f b6 4e 03          	movzbl 0x3(%esi),%ecx
409a66:	0f b6 42 03          	movzbl 0x3(%edx),%eax
409a6a:	2b c8                	sub    %eax,%ecx
409a6c:	74 12                	je     0x409a80
409a6e:	33 c0                	xor    %eax,%eax
409a70:	85 c9                	test   %ecx,%ecx
409a72:	0f 9f c0             	setg   %al
409a75:	8d 0c 45 ff ff ff ff 	lea    -0x1(,%eax,2),%ecx
409a7c:	eb 02                	jmp    0x409a80
409a7e:	33 c9                	xor    %ecx,%ecx
409a80:	85 c9                	test   %ecx,%ecx
409a82:	0f 85 31 08 00 00    	jne    0x40a2b9
409a88:	8b 46 04             	mov    0x4(%esi),%eax
409a8b:	3b 42 04             	cmp    0x4(%edx),%eax
409a8e:	74 7f                	je     0x409b0f
409a90:	0f b6 f8             	movzbl %al,%edi
409a93:	0f b6 42 04          	movzbl 0x4(%edx),%eax
409a97:	2b f8                	sub    %eax,%edi
409a99:	74 14                	je     0x409aaf
409a9b:	85 ff                	test   %edi,%edi
409a9d:	0f 9f c1             	setg   %cl
409aa0:	8d 0c 4d ff ff ff ff 	lea    -0x1(,%ecx,2),%ecx
409aa7:	85 c9                	test   %ecx,%ecx
409aa9:	0f 85 0a 08 00 00    	jne    0x40a2b9
409aaf:	0f b6 7e 05          	movzbl 0x5(%esi),%edi
409ab3:	0f b6 42 05          	movzbl 0x5(%edx),%eax
409ab7:	2b f8                	sub    %eax,%edi
409ab9:	74 16                	je     0x409ad1
409abb:	33 c9                	xor    %ecx,%ecx
409abd:	85 ff                	test   %edi,%edi