411951:	89 7d e0             	mov    %edi,-0x20(%ebp)
411954:	85 ff                	test   %edi,%edi
411956:	75 08                	jne    0x411960
411958:	83 c8 ff             	or     $0xffffffff,%eax
41195b:	e9 5d 01 00 00       	jmp    0x411abd
411960:	ff 37                	push   (%edi)
411962:	56                   	push   %esi
411963:	e8 19 ff ff ff       	call   0x411881
411968:	59                   	pop    %ecx
411969:	59                   	pop    %ecx
41196a:	85 c0                	test   %eax,%eax
41196c:	75 12                	jne    0x411980
41196e:	e8 60 d3 ff ff       	call   0x40ecd3
411973:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
411979:	e8 98 d2 ff ff       	call   0x40ec16
41197e:	eb d8                	jmp    0x411958
411980:	8d 78 08             	lea    0x8(%eax),%edi
411983:	32 c9                	xor    %cl,%cl
411985:	88 4d e7             	mov    %cl,-0x19(%ebp)
411988:	89 7d dc             	mov    %edi,-0x24(%ebp)
41198b:	83 65 d4 00          	andl   $0x0,-0x2c(%ebp)
41198f:	84 c9                	test   %cl,%cl
411991:	74 0b                	je     0x41199e
411993:	6a 03                	push   $0x3
411995:	e8 67 e8 ff ff       	call   0x410201
41199a:	59                   	pop    %ecx
41199b:	8a 4d e7             	mov    -0x19(%ebp),%cl
41199e:	83 65 d8 00          	andl   $0x0,-0x28(%ebp)
4119a2:	c6 45 e6 00          	movb   $0x0,-0x1a(%ebp)
4119a6:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4119aa:	8b 3f                	mov    (%edi),%edi
4119ac:	84 c9                	test   %cl,%cl
4119ae:	74 14                	je     0x4119c4
4119b0:	8b 0d 18 60 42 00    	mov    0x426018,%ecx
4119b6:	83 e1 1f             	and    $0x1f,%ecx
4119b9:	33 3d 18 60 42 00    	xor    0x426018,%edi
4119bf:	d3 cf                	ror    %cl,%edi
4119c1:	8a 4d e7             	mov    -0x19(%ebp),%cl
4119c4:	89 7d d8             	mov    %edi,-0x28(%ebp)
4119c7:	83 ff 01             	cmp    $0x1,%edi
4119ca:	0f 94 c0             	sete   %al
4119cd:	88 45 e6             	mov    %al,-0x1a(%ebp)
4119d0:	84 c0                	test   %al,%al
4119d2:	75 71                	jne    0x411a45
4119d4:	85 ff                	test   %edi,%edi
4119d6:	0f 84 f1 00 00 00    	je     0x411acd
4119dc:	3b f3                	cmp    %ebx,%esi
4119de:	74 0a                	je     0x4119ea
4119e0:	83 fe 0b             	cmp    $0xb,%esi
4119e3:	74 05                	je     0x4119ea
4119e5:	83 fe 04             	cmp    $0x4,%esi
4119e8:	75 28                	jne    0x411a12
4119ea:	8b 45 e0             	mov    -0x20(%ebp),%eax
4119ed:	8b 48 04             	mov    0x4(%eax),%ecx
4119f0:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
4119f3:	83 60 04 00          	andl   $0x0,0x4(%eax)
4119f7:	3b f3                	cmp    %ebx,%esi
4119f9:	75 40                	jne    0x411a3b
4119fb:	e8 09 ce ff ff       	call   0x40e809
411a00:	8b 40 08             	mov    0x8(%eax),%eax
411a03:	89 45 d0             	mov    %eax,-0x30(%ebp)
411a06:	e8 fe cd ff ff       	call   0x40e809
411a0b:	c7 40 08 8c 00 00 00 	movl   $0x8c,0x8(%eax)
411a12:	8b 45 e0             	mov    -0x20(%ebp),%eax
411a15:	3b f3                	cmp    %ebx,%esi
411a17:	75 22                	jne    0x411a3b
411a19:	6b 0d 7c d0 41 00 0c 	imul   $0xc,0x41d07c,%ecx
411a20:	03 08                	add    (%eax),%ecx
411a22:	6b 05 80 d0 41 00 0c 	imul   $0xc,0x41d080,%eax
411a29:	03 c1                	add    %ecx,%eax
411a2b:	89 4d cc             	mov    %ecx,-0x34(%ebp)
411a2e:	3b c8                	cmp    %eax,%ecx
411a30:	74 13                	je     0x411a45
411a32:	83 61 08 00          	andl   $0x0,0x8(%ecx)
411a36:	83 c1 0c             	add    $0xc,%ecx
411a39:	eb f0                	jmp    0x411a2b
411a3b:	a1 18 60 42 00       	mov    0x426018,%eax
411a40:	8b 4d dc             	mov    -0x24(%ebp),%ecx
411a43:	89 01                	mov    %eax,(%ecx)
411a45:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
411a4c:	e8 29 00 00 00       	call   0x411a7a
411a51:	80 7d e6 00          	cmpb   $0x0,-0x1a(%ebp)
411a55:	75 64                	jne    0x411abb
411a57:	3b f3                	cmp    %ebx,%esi
411a59:	75 2e                	jne    0x411a89
411a5b:	e8 a9 cd ff ff       	call   0x40e809
411a60:	ff 70 08             	push   0x8(%eax)
411a63:	53                   	push   %ebx
411a64:	8b cf                	mov    %edi,%ecx
411a66:	ff 15 50 c2 41 00    	call   *0x41c250
411a6c:	ff d7                	call   *%edi
411a6e:	59                   	pop    %ecx
411a6f:	eb 23                	jmp    0x411a94
411a71:	6a 08                	push   $0x8
411a73:	5b                   	pop    %ebx
411a74:	8b 75 08             	mov    0x8(%ebp),%esi
411a77:	8b 7d d8             	mov    -0x28(%ebp),%edi
411a7a:	80 7d e7 00          	cmpb   $0x0,-0x19(%ebp)
411a7e:	74 08                	je     0x411a88
411a80:	6a 03                	push   $0x3
411a82:	e8 ca e7 ff ff       	call   0x410251
411a87:	59                   	pop    %ecx
411a88:	c3                   	ret
411a89:	56                   	push   %esi
411a8a:	8b cf                	mov    %edi,%ecx
411a8c:	ff 15 50 c2 41 00    	call   *0x41c250
411a92:	ff d7                	call   *%edi
411a94:	59                   	pop    %ecx
411a95:	3b f3                	cmp    %ebx,%esi
411a97:	74 0a                	je     0x411aa3
411a99:	83 fe 0b             	cmp    $0xb,%esi
411a9c:	74 05                	je     0x411aa3
411a9e:	83 fe 04             	cmp    $0x4,%esi
411aa1:	75 18                	jne    0x411abb
411aa3:	8b 45 e0             	mov    -0x20(%ebp),%eax
411aa6:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
411aa9:	89 48 04             	mov    %ecx,0x4(%eax)
411aac:	3b f3                	cmp    %ebx,%esi
411aae:	75 0b                	jne    0x411abb
411ab0:	e8 54 cd ff ff       	call   0x40e809
411ab5:	8b 4d d0             	mov    -0x30(%ebp),%ecx
411ab8:	89 48 08             	mov    %ecx,0x8(%eax)
411abb:	33 c0                	xor    %eax,%eax
411abd:	8b 4d f0             	mov    -0x10(%ebp),%ecx
411ac0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
411ac7:	59                   	pop    %ecx
411ac8:	5f                   	pop    %edi
411ac9:	5e                   	pop    %esi
411aca:	5b                   	pop    %ebx
411acb:	c9                   	leave
411acc:	c3                   	ret
411acd:	84 c9                	test   %cl,%cl
411acf:	74 08                	je     0x411ad9
411ad1:	6a 03                	push   $0x3
411ad3:	e8 79 e7 ff ff       	call   0x410251
411ad8:	59                   	pop    %ecx
411ad9:	6a 03                	push   $0x3
411adb:	e8 50 a0 ff ff       	call   0x40bb30
411ae0:	cc                   	int3
411ae1:	6a 08                	push   $0x8
411ae3:	68 80 40 42 00       	push   $0x424080
411ae8:	e8 e3 6e ff ff       	call   0x4089d0
411aed:	8b 45 08             	mov    0x8(%ebp),%eax
411af0:	ff 30                	push   (%eax)
411af2:	e8 a5 03 00 00       	call   0x411e9c
411af7:	59                   	pop    %ecx
411af8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
411afc:	8b 75 0c             	mov    0xc(%ebp),%esi
411aff:	ff 76 04             	push   0x4(%esi)
411b02:	8b 06                	mov    (%esi),%eax
411b04:	ff 30                	push   (%eax)
411b06:	e8 5b 01 00 00       	call   0x411c66
411b0b:	59                   	pop    %ecx
411b0c:	59                   	pop    %ecx
411b0d:	84 c0                	test   %al,%al
411b0f:	74 32                	je     0x411b43
411b11:	8b 46 08             	mov    0x8(%esi),%eax
411b14:	80 38 00             	cmpb   $0x0,(%eax)
411b17:	75 0e                	jne    0x411b27
411b19:	8b 06                	mov    (%esi),%eax
411b1b:	8b 00                	mov    (%eax),%eax
411b1d:	8b 40 0c             	mov    0xc(%eax),%eax
411b20:	90                   	nop
411b21:	d1 e8                	shr    $1,%eax
411b23:	a8 01                	test   $0x1,%al
411b25:	74 1c                	je     0x411b43
411b27:	8b 06                	mov    (%esi),%eax
411b29:	ff 30                	push   (%eax)
411b2b:	e8 f3 01 00 00       	call   0x411d23
411b30:	59                   	pop    %ecx
411b31:	83 f8 ff             	cmp    $0xffffffff,%eax
411b34:	74 07                	je     0x411b3d
411b36:	8b 46 04             	mov    0x4(%esi),%eax
411b39:	ff 00                	incl   (%eax)
411b3b:	eb 06                	jmp    0x411b43
411b3d:	8b 46 0c             	mov    0xc(%esi),%eax
411b40:	83 08 ff             	orl    $0xffffffff,(%eax)
411b43:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
411b4a:	e8 12 00 00 00       	call   0x411b61
411b4f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
411b52:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
411b59:	59                   	pop    %ecx
411b5a:	5f                   	pop    %edi
411b5b:	5e                   	pop    %esi
411b5c:	5b                   	pop    %ebx
411b5d:	c9                   	leave
411b5e:	c2 0c 00             	ret    $0xc
411b61:	8b 45 10             	mov    0x10(%ebp),%eax
411b64:	ff 30                	push   (%eax)
411b66:	e8 45 03 00 00       	call   0x411eb0
411b6b:	59                   	pop    %ecx
411b6c:	c3                   	ret
411b6d:	6a 2c                	push   $0x2c
411b6f:	68 a0 40 42 00       	push   $0x4240a0
411b74:	e8 57 6e ff ff       	call   0x4089d0
411b79:	8b 45 08             	mov    0x8(%ebp),%eax
411b7c:	ff 30                	push   (%eax)
411b7e:	e8 7e e6 ff ff       	call   0x410201
411b83:	59                   	pop    %ecx
411b84:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
411b88:	8b 35 1c 73 42 00    	mov    0x42731c,%esi
411b8e:	a1 18 73 42 00       	mov    0x427318,%eax
411b93:	8d 1c 86             	lea    (%esi,%eax,4),%ebx
411b96:	8b 7d 0c             	mov    0xc(%ebp),%edi
411b99:	89 75 d4             	mov    %esi,-0x2c(%ebp)
411b9c:	3b f3                	cmp    %ebx,%esi
411b9e:	74 4f                	je     0x411bef
411ba0:	8b 06                	mov    (%esi),%eax
411ba2:	89 45 e0             	mov    %eax,-0x20(%ebp)
411ba5:	ff 37                	push   (%edi)
411ba7:	50                   	push   %eax
411ba8:	e8 b9 00 00 00       	call   0x411c66
411bad:	59                   	pop    %ecx
411bae:	59                   	pop    %ecx
411baf:	84 c0                	test   %al,%al
411bb1:	74 37                	je     0x411bea
411bb3:	8b 57 08             	mov    0x8(%edi),%edx
411bb6:	8b 4f 04             	mov    0x4(%edi),%ecx
411bb9:	8b 07                	mov    (%edi),%eax
411bbb:	8d 7d e0             	lea    -0x20(%ebp),%edi
411bbe:	89 7d c4             	mov    %edi,-0x3c(%ebp)
411bc1:	89 45 c8             	mov    %eax,-0x38(%ebp)
411bc4:	89 4d cc             	mov    %ecx,-0x34(%ebp)
411bc7:	89 55 d0             	mov    %edx,-0x30(%ebp)
411bca:	8b 45 e0             	mov    -0x20(%ebp),%eax
411bcd:	89 45 dc             	mov    %eax,-0x24(%ebp)
411bd0:	89 45 d8             	mov    %eax,-0x28(%ebp)
411bd3:	8d 45 dc             	lea    -0x24(%ebp),%eax
411bd6:	50                   	push   %eax
411bd7:	8d 45 c4             	lea    -0x3c(%ebp),%eax
411bda:	50                   	push   %eax
411bdb:	8d 45 d8             	lea    -0x28(%ebp),%eax
411bde:	50                   	push   %eax
411bdf:	8d 4d e7             	lea    -0x19(%ebp),%ecx
411be2:	e8 fa fe ff ff       	call   0x411ae1
411be7:	8b 7d 0c             	mov    0xc(%ebp),%edi
411bea:	83 c6 04             	add    $0x4,%esi
411bed:	eb aa                	jmp    0x411b99
411bef:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
411bf6:	e8 12 00 00 00       	call   0x411c0d
411bfb:	8b 4d f0             	mov    -0x10(%ebp),%ecx
411bfe:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
411c05:	59                   	pop    %ecx
411c06:	5f                   	pop    %edi
411c07:	5e                   	pop    %esi
411c08:	5b                   	pop    %ebx
411c09:	c9                   	leave
411c0a:	c2 0c 00             	ret    $0xc
411c0d:	8b 45 10             	mov    0x10(%ebp),%eax
411c10:	ff 30                	push   (%eax)
411c12:	e8 3a e6 ff ff       	call   0x410251
411c17:	59                   	pop    %ecx
411c18:	c3                   	ret
411c19:	8b ff                	mov    %edi,%edi
411c1b:	55                   	push   %ebp
411c1c:	8b ec                	mov    %esp,%ebp
411c1e:	83 ec 20             	sub    $0x20,%esp
411c21:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
411c25:	8d 45 f8             	lea    -0x8(%ebp),%eax
411c28:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
411c2c:	8d 4d ff             	lea    -0x1(%ebp),%ecx
411c2f:	89 45 e0             	mov    %eax,-0x20(%ebp)
411c32:	8d 45 08             	lea    0x8(%ebp),%eax
411c35:	89 45 e4             	mov    %eax,-0x1c(%ebp)
411c38:	8d 45 f4             	lea    -0xc(%ebp),%eax
411c3b:	6a 08                	push   $0x8
411c3d:	89 45 e8             	mov    %eax,-0x18(%ebp)
411c40:	58                   	pop    %eax
411c41:	89 45 f0             	mov    %eax,-0x10(%ebp)
411c44:	89 45 ec             	mov    %eax,-0x14(%ebp)
411c47:	8d 45 f0             	lea    -0x10(%ebp),%eax
411c4a:	50                   	push   %eax
411c4b:	8d 45 e0             	lea    -0x20(%ebp),%eax
411c4e:	50                   	push   %eax
411c4f:	8d 45 ec             	lea    -0x14(%ebp),%eax
411c52:	50                   	push   %eax
411c53:	e8 15 ff ff ff       	call   0x411b6d
411c58:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
411c5c:	8b 45 f8             	mov    -0x8(%ebp),%eax
411c5f:	75 03                	jne    0x411c64
411c61:	8b 45 f4             	mov    -0xc(%ebp),%eax
411c64:	c9                   	leave
411c65:	c3                   	ret
411c66:	8b ff                	mov    %edi,%edi
411c68:	55                   	push   %ebp
411c69:	8b ec                	mov    %esp,%ebp
411c6b:	8b 45 08             	mov    0x8(%ebp),%eax
411c6e:	85 c0                	test   %eax,%eax
411c70:	74 1f                	je     0x411c91
411c72:	8b 48 0c             	mov    0xc(%eax),%ecx
411c75:	90                   	nop
411c76:	8b c1                	mov    %ecx,%eax
411c78:	c1 e8 0d             	shr    $0xd,%eax
411c7b:	a8 01                	test   $0x1,%al
411c7d:	74 12                	je     0x411c91
411c7f:	51                   	push   %ecx
411c80:	e8 14 00 00 00       	call   0x411c99
411c85:	83 c4 04             	add    $0x4,%esp
411c88:	84 c0                	test   %al,%al
411c8a:	75 09                	jne    0x411c95
411c8c:	8b 45 0c             	mov    0xc(%ebp),%eax
411c8f:	ff 00                	incl   (%eax)
411c91:	32 c0                	xor    %al,%al
411c93:	5d                   	pop    %ebp
411c94:	c3                   	ret
411c95:	b0 01                	mov    $0x1,%al
411c97:	5d                   	pop    %ebp
411c98:	c3                   	ret
411c99:	8b ff                	mov    %edi,%edi
411c9b:	55                   	push   %ebp
411c9c:	8b ec                	mov    %esp,%ebp
411c9e:	8b 45 08             	mov    0x8(%ebp),%eax
411ca1:	24 03                	and    $0x3,%al
411ca3:	3c 02                	cmp    $0x2,%al
411ca5:	75 06                	jne    0x411cad
411ca7:	f6 45 08 c0          	testb  $0xc0,0x8(%ebp)
411cab:	75 09                	jne    0x411cb6
411cad:	f7 45 08 00 08 00 00 	testl  $0x800,0x8(%ebp)
411cb4:	74 04                	je     0x411cba
411cb6:	b0 01                	mov    $0x1,%al
411cb8:	5d                   	pop    %ebp
411cb9:	c3                   	ret
411cba:	32 c0                	xor    %al,%al
411cbc:	5d                   	pop    %ebp
411cbd:	c3                   	ret
411cbe:	8b ff                	mov    %edi,%edi
411cc0:	55                   	push   %ebp
411cc1:	8b ec                	mov    %esp,%ebp
411cc3:	8b 4d 08             	mov    0x8(%ebp),%ecx
411cc6:	56                   	push   %esi
411cc7:	57                   	push   %edi
411cc8:	8d 71 0c             	lea    0xc(%ecx),%esi
411ccb:	8b 16                	mov    (%esi),%edx
411ccd:	90                   	nop
411cce:	8b c2                	mov    %edx,%eax
411cd0:	24 03                	and    $0x3,%al
411cd2:	3c 02                	cmp    $0x2,%al
411cd4:	75 47                	jne    0x411d1d
411cd6:	f6 c2 c0             	test   $0xc0,%dl
411cd9:	74 42                	je     0x411d1d
411cdb:	8b 39                	mov    (%ecx),%edi
411cdd:	8b 41 04             	mov    0x4(%ecx),%eax
411ce0:	2b f8                	sub    %eax,%edi
411ce2:	89 01                	mov    %eax,(%ecx)
411ce4:	83 61 08 00          	andl   $0x0,0x8(%ecx)
411ce8:	85 ff                	test   %edi,%edi
411cea:	7e 31                	jle    0x411d1d
411cec:	57                   	push   %edi
411ced:	50                   	push   %eax
411cee:	51                   	push   %ecx