4089e2:	74 0f                	je     0x4089f3
4089e4:	6a 25                	push   $0x25
4089e6:	56                   	push   %esi
4089e7:	ff 15 18 f1 40 00    	call   *0x40f118
4089ed:	59                   	pop    %ecx
4089ee:	59                   	pop    %ecx
4089ef:	85 c0                	test   %eax,%eax
4089f1:	74 05                	je     0x4089f8
4089f3:	bf 87 00 00 00       	mov    $0x87,%edi
4089f8:	8d 55 d8             	lea    -0x28(%ebp),%edx
4089fb:	8b cf                	mov    %edi,%ecx
4089fd:	e8 ad 1b 00 00       	call   0x40a5af
408a02:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408a05:	8b c3                	mov    %ebx,%eax
408a07:	5f                   	pop    %edi
408a08:	5e                   	pop    %esi
408a09:	33 cd                	xor    %ebp,%ecx
408a0b:	5b                   	pop    %ebx
408a0c:	e8 0f d6 ff ff       	call   0x406020
408a11:	c9                   	leave
408a12:	c3                   	ret
408a13:	8b ff                	mov    %edi,%edi
408a15:	55                   	push   %ebp
408a16:	8b ec                	mov    %esp,%ebp
408a18:	83 ec 40             	sub    $0x40,%esp
408a1b:	a1 04 e0 40 00       	mov    0x40e004,%eax
408a20:	33 c5                	xor    %ebp,%eax
408a22:	89 45 fc             	mov    %eax,-0x4(%ebp)
408a25:	56                   	push   %esi
408a26:	57                   	push   %edi
408a27:	6a 0a                	push   $0xa
408a29:	8d 45 e4             	lea    -0x1c(%ebp),%eax
408a2c:	8b fa                	mov    %edx,%edi
408a2e:	50                   	push   %eax
408a2f:	ff 75 08             	push   0x8(%ebp)
408a32:	8b f1                	mov    %ecx,%esi
408a34:	ff 15 20 f1 40 00    	call   *0x40f120
408a3a:	83 c4 0c             	add    $0xc,%esp
408a3d:	89 75 c0             	mov    %esi,-0x40(%ebp)
408a40:	8d 45 e4             	lea    -0x1c(%ebp),%eax
408a43:	89 45 c4             	mov    %eax,-0x3c(%ebp)
408a46:	83 ff 67             	cmp    $0x67,%edi
408a49:	75 18                	jne    0x408a63
408a4b:	6a 0a                	push   $0xa
408a4d:	8d 45 cc             	lea    -0x34(%ebp),%eax
408a50:	50                   	push   %eax
408a51:	ff 75 0c             	push   0xc(%ebp)
408a54:	ff 15 20 f1 40 00    	call   *0x40f120
408a5a:	8d 45 cc             	lea    -0x34(%ebp),%eax
408a5d:	83 c4 0c             	add    $0xc,%esp
408a60:	89 45 c8             	mov    %eax,-0x38(%ebp)
408a63:	8d 55 c0             	lea    -0x40(%ebp),%edx
408a66:	8b cf                	mov    %edi,%ecx
408a68:	e8 42 1b 00 00       	call   0x40a5af
408a6d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408a70:	5f                   	pop    %edi
408a71:	33 cd                	xor    %ebp,%ecx
408a73:	5e                   	pop    %esi
408a74:	e8 a7 d5 ff ff       	call   0x406020
408a79:	c9                   	leave
408a7a:	c2 08 00             	ret    $0x8
408a7d:	80 3d c4 eb 40 00 00 	cmpb   $0x0,0x40ebc4
408a84:	75 09                	jne    0x408a8f
408a86:	c6 05 c4 eb 40 00 01 	movb   $0x1,0x40ebc4
408a8d:	eb 0a                	jmp    0x408a99
408a8f:	6a 05                	push   $0x5
408a91:	33 d2                	xor    %edx,%edx
408a93:	59                   	pop    %ecx
408a94:	e8 16 1b 00 00       	call   0x40a5af
408a99:	b8 67 06 00 00       	mov    $0x667,%eax
408a9e:	c3                   	ret
408a9f:	8b ff                	mov    %edi,%edi
408aa1:	55                   	push   %ebp
408aa2:	8b ec                	mov    %esp,%ebp
408aa4:	51                   	push   %ecx
408aa5:	51                   	push   %ecx
408aa6:	56                   	push   %esi
408aa7:	6a 02                	push   $0x2
408aa9:	52                   	push   %edx
408aaa:	51                   	push   %ecx
408aab:	33 f6                	xor    %esi,%esi
408aad:	ff 15 3c 00 41 00    	call   *0x41003c
408ab3:	8b c8                	mov    %eax,%ecx
408ab5:	8b 45 0c             	mov    0xc(%ebp),%eax
408ab8:	89 08                	mov    %ecx,(%eax)
408aba:	85 c9                	test   %ecx,%ecx
408abc:	75 14                	jne    0x408ad2
408abe:	ff 15 40 f0 40 00    	call   *0x40f040
408ac4:	8b d0                	mov    %eax,%edx
408ac6:	b9 88 14 40 00       	mov    $0x401488,%ecx
408acb:	e8 b0 fe ff ff       	call   0x408980
408ad0:	eb 45                	jmp    0x408b17
408ad2:	8b 45 08             	mov    0x8(%ebp),%eax
408ad5:	89 45 fc             	mov    %eax,-0x4(%ebp)
408ad8:	8d 45 fc             	lea    -0x4(%ebp),%eax
408adb:	50                   	push   %eax
408adc:	6a 01                	push   $0x1
408ade:	51                   	push   %ecx
408adf:	ff 15 68 00 41 00    	call   *0x410068
408ae5:	85 c0                	test   %eax,%eax
408ae7:	75 1a                	jne    0x408b03
408ae9:	ff 15 40 f0 40 00    	call   *0x40f040
408aef:	8b f0                	mov    %eax,%esi
408af1:	85 f6                	test   %esi,%esi
408af3:	74 0e                	je     0x408b03
408af5:	8b d6                	mov    %esi,%edx
408af7:	b9 3c 45 40 00       	mov    $0x40453c,%ecx
408afc:	e8 7f fe ff ff       	call   0x408980
408b01:	eb 12                	jmp    0x408b15
408b03:	6a 64                	push   $0x64
408b05:	8d 55 f8             	lea    -0x8(%ebp),%edx
408b08:	c7 45 f8 3c 45 40 00 	movl   $0x40453c,-0x8(%ebp)
408b0f:	59                   	pop    %ecx
408b10:	e8 9a 1a 00 00       	call   0x40a5af
408b15:	8b c6                	mov    %esi,%eax
408b17:	5e                   	pop    %esi
408b18:	c9                   	leave
408b19:	c2 08 00             	ret    $0x8
408b1c:	8b ff                	mov    %edi,%edi
408b1e:	55                   	push   %ebp
408b1f:	8b ec                	mov    %esp,%ebp
408b21:	83 ec 4c             	sub    $0x4c,%esp
408b24:	53                   	push   %ebx
408b25:	33 db                	xor    %ebx,%ebx
408b27:	89 55 cc             	mov    %edx,-0x34(%ebp)
408b2a:	56                   	push   %esi
408b2b:	8b f3                	mov    %ebx,%esi
408b2d:	89 4d c8             	mov    %ecx,-0x38(%ebp)
408b30:	57                   	push   %edi
408b31:	8b fb                	mov    %ebx,%edi
408b33:	89 5d e8             	mov    %ebx,-0x18(%ebp)
408b36:	6a 02                	push   $0x2
408b38:	58                   	pop    %eax
408b39:	89 5d ec             	mov    %ebx,-0x14(%ebp)
408b3c:	89 5d dc             	mov    %ebx,-0x24(%ebp)
408b3f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408b42:	89 5d d8             	mov    %ebx,-0x28(%ebp)
408b45:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
408b48:	89 75 f4             	mov    %esi,-0xc(%ebp)
408b4b:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
408b4f:	88 5d fe             	mov    %bl,-0x2(%ebp)
408b52:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
408b55:	0f 86 90 02 00 00    	jbe    0x408deb
408b5b:	8b 75 08             	mov    0x8(%ebp),%esi
408b5e:	83 c6 04             	add    $0x4,%esi
408b61:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
408b68:	89 75 e0             	mov    %esi,-0x20(%ebp)
408b6b:	68 68 45 40 00       	push   $0x404568
408b70:	ff 76 fc             	push   -0x4(%esi)
408b73:	ff 15 28 f1 40 00    	call   *0x40f128
408b79:	59                   	pop    %ecx
408b7a:	59                   	pop    %ecx
408b7b:	85 c0                	test   %eax,%eax
408b7d:	75 3b                	jne    0x408bba
408b7f:	8b 45 0c             	mov    0xc(%ebp),%eax
408b82:	39 45 f8             	cmp    %eax,-0x8(%ebp)
408b85:	73 33                	jae    0x408bba
408b87:	68 78 45 40 00       	push   $0x404578
408b8c:	ff 36                	push   (%esi)
408b8e:	ff 15 28 f1 40 00    	call   *0x40f128
408b94:	59                   	pop    %ecx
408b95:	59                   	pop    %ecx
408b96:	85 c0                	test   %eax,%eax
408b98:	75 06                	jne    0x408ba0
408b9a:	83 4d dc ff          	orl    $0xffffffff,-0x24(%ebp)
408b9e:	eb 0c                	jmp    0x408bac
408ba0:	ff 36                	push   (%esi)
408ba2:	ff 15 0c f1 40 00    	call   *0x40f10c
408ba8:	59                   	pop    %ecx
408ba9:	89 45 dc             	mov    %eax,-0x24(%ebp)
408bac:	8b 4d ec             	mov    -0x14(%ebp),%ecx
408baf:	33 d2                	xor    %edx,%edx
408bb1:	42                   	inc    %edx
408bb2:	89 55 e8             	mov    %edx,-0x18(%ebp)
408bb5:	e9 a6 01 00 00       	jmp    0x408d60
408bba:	68 8c 45 40 00       	push   $0x40458c
408bbf:	ff 76 fc             	push   -0x4(%esi)
408bc2:	ff 15 28 f1 40 00    	call   *0x40f128
408bc8:	59                   	pop    %ecx
408bc9:	59                   	pop    %ecx
408bca:	85 c0                	test   %eax,%eax
408bcc:	75 0f                	jne    0x408bdd
408bce:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bd1:	3b 45 0c             	cmp    0xc(%ebp),%eax
408bd4:	73 07                	jae    0x408bdd
408bd6:	8b 0e                	mov    (%esi),%ecx
408bd8:	89 4d d8             	mov    %ecx,-0x28(%ebp)
408bdb:	eb 21                	jmp    0x408bfe
408bdd:	68 9c 45 40 00       	push   $0x40459c
408be2:	ff 76 fc             	push   -0x4(%esi)
408be5:	ff 15 28 f1 40 00    	call   *0x40f128
408beb:	59                   	pop    %ecx
408bec:	59                   	pop    %ecx
408bed:	85 c0                	test   %eax,%eax
408bef:	75 18                	jne    0x408c09
408bf1:	8b 45 f8             	mov    -0x8(%ebp),%eax
408bf4:	3b 45 0c             	cmp    0xc(%ebp),%eax
408bf7:	73 10                	jae    0x408c09
408bf9:	8b 0e                	mov    (%esi),%ecx
408bfb:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
408bfe:	8b 4d ec             	mov    -0x14(%ebp),%ecx
408c01:	8b 55 e8             	mov    -0x18(%ebp),%edx
408c04:	e9 5a 01 00 00       	jmp    0x408d63
408c09:	68 b0 45 40 00       	push   $0x4045b0
408c0e:	ff 76 fc             	push   -0x4(%esi)
408c11:	ff 15 28 f1 40 00    	call   *0x40f128
408c17:	59                   	pop    %ecx
408c18:	59                   	pop    %ecx
408c19:	85 c0                	test   %eax,%eax
408c1b:	0f 85 a7 01 00 00    	jne    0x408dc8
408c21:	8b 45 0c             	mov    0xc(%ebp),%eax
408c24:	39 45 f8             	cmp    %eax,-0x8(%ebp)
408c27:	0f 83 9b 01 00 00    	jae    0x408dc8
408c2d:	8b 0e                	mov    (%esi),%ecx
408c2f:	0f b7 01             	movzwl (%ecx),%eax
408c32:	66 85 c0             	test   %ax,%ax
408c35:	74 1b                	je     0x408c52
408c37:	6a 2f                	push   $0x2f
408c39:	8b d0                	mov    %eax,%edx
408c3b:	5e                   	pop    %esi
408c3c:	66 3b d6             	cmp    %si,%dx
408c3f:	75 01                	jne    0x408c42
408c41:	47                   	inc    %edi
408c42:	83 c1 02             	add    $0x2,%ecx
408c45:	0f b7 01             	movzwl (%ecx),%eax
408c48:	8b d0                	mov    %eax,%edx
408c4a:	66 85 c0             	test   %ax,%ax
408c4d:	75 ed                	jne    0x408c3c
408c4f:	8b 75 e0             	mov    -0x20(%ebp),%esi
408c52:	8d 47 02             	lea    0x2(%edi),%eax
408c55:	d1 e8                	shr    $1,%eax
408c57:	c1 e0 03             	shl    $0x3,%eax
408c5a:	50                   	push   %eax
408c5b:	6a 40                	push   $0x40
408c5d:	ff 15 64 f0 40 00    	call   *0x40f064
408c63:	89 45 f4             	mov    %eax,-0xc(%ebp)
408c66:	85 c0                	test   %eax,%eax
408c68:	0f 84 43 01 00 00    	je     0x408db1
408c6e:	8b 3e                	mov    (%esi),%edi
408c70:	8b cf                	mov    %edi,%ecx
408c72:	89 7d ec             	mov    %edi,-0x14(%ebp)
408c75:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408c78:	8d 51 02             	lea    0x2(%ecx),%edx
408c7b:	66 8b 01             	mov    (%ecx),%ax
408c7e:	83 c1 02             	add    $0x2,%ecx
408c81:	66 3b c3             	cmp    %bx,%ax
408c84:	75 f5                	jne    0x408c7b
408c86:	2b ca                	sub    %edx,%ecx
408c88:	d1 f9                	sar    $1,%ecx
408c8a:	6a 2f                	push   $0x2f
408c8c:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
408c8f:	89 45 d0             	mov    %eax,-0x30(%ebp)
408c92:	59                   	pop    %ecx
408c93:	66 89 08             	mov    %cx,(%eax)
408c96:	3b f8                	cmp    %eax,%edi
408c98:	0f 87 b6 00 00 00    	ja     0x408d54
408c9e:	8b 5d ec             	mov    -0x14(%ebp),%ebx
408ca1:	8b 75 f0             	mov    -0x10(%ebp),%esi
408ca4:	66 39 0f             	cmp    %cx,(%edi)
408ca7:	0f 85 97 00 00 00    	jne    0x408d44
408cad:	33 c0                	xor    %eax,%eax
408caf:	66 89 07             	mov    %ax,(%edi)
408cb2:	38 45 ff             	cmp    %al,-0x1(%ebp)
408cb5:	74 64                	je     0x408d1b
408cb7:	68 0c 46 40 00       	push   $0x40460c
408cbc:	53                   	push   %ebx
408cbd:	ff 15 28 f1 40 00    	call   *0x40f128
408cc3:	59                   	pop    %ecx
408cc4:	59                   	pop    %ecx
408cc5:	85 c0                	test   %eax,%eax
408cc7:	75 10                	jne    0x408cd9
408cc9:	8b 45 f4             	mov    -0xc(%ebp),%eax
408ccc:	83 4d e4 10          	orl    $0x10,-0x1c(%ebp)
408cd0:	c7 04 f0 01 00 00 00 	movl   $0x1,(%eax,%esi,8)
408cd7:	eb 5a                	jmp    0x408d33
408cd9:	68 1c 46 40 00       	push   $0x40461c
408cde:	53                   	push   %ebx
408cdf:	ff 15 28 f1 40 00    	call   *0x40f128
408ce5:	59                   	pop    %ecx
408ce6:	59                   	pop    %ecx
408ce7:	85 c0                	test   %eax,%eax
408ce9:	75 10                	jne    0x408cfb
408ceb:	8b 45 f4             	mov    -0xc(%ebp),%eax
408cee:	c6 45 fe 01          	movb   $0x1,-0x2(%ebp)
408cf2:	c7 04 f0 02 00 00 00 	movl   $0x2,(%eax,%esi,8)
408cf9:	eb 38                	jmp    0x408d33
408cfb:	68 2c 46 40 00       	push   $0x40462c
408d00:	53                   	push   %ebx
408d01:	ff 15 28 f1 40 00    	call   *0x40f128
408d07:	f7 d8                	neg    %eax
408d09:	59                   	pop    %ecx
408d0a:	59                   	pop    %ecx
408d0b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d0e:	1b c0                	sbb    %eax,%eax
408d10:	83 e0 fd             	and    $0xfffffffd,%eax
408d13:	83 c0 03             	add    $0x3,%eax
408d16:	89 04 f1             	mov    %eax,(%ecx,%esi,8)
408d19:	eb 18                	jmp    0x408d33
408d1b:	53                   	push   %ebx
408d1c:	ff 15 0c f1 40 00    	call   *0x40f10c
408d22:	8b 55 f0             	mov    -0x10(%ebp),%edx
408d25:	59                   	pop    %ecx
408d26:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d29:	89 44 d1 04          	mov    %eax,0x4(%ecx,%edx,8)
408d2d:	42                   	inc    %edx
408d2e:	89 55 f0             	mov    %edx,-0x10(%ebp)
408d31:	8b f2                	mov    %edx,%esi
408d33:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
408d37:	8d 5f 02             	lea    0x2(%edi),%ebx
408d3a:	8b 45 d0             	mov    -0x30(%ebp),%eax
408d3d:	6a 2f                	push   $0x2f
408d3f:	0f 94 45 ff          	sete   -0x1(%ebp)
408d43:	59                   	pop    %ecx
408d44:	83 c7 02             	add    $0x2,%edi
408d47:	3b f8                	cmp    %eax,%edi
408d49:	0f 86 55 ff ff ff    	jbe    0x408ca4
408d4f:	8b 75 e0             	mov    -0x20(%ebp),%esi
408d52:	33 db                	xor    %ebx,%ebx
408d54:	8b 7d f0             	mov    -0x10(%ebp),%edi
408d57:	33 c9                	xor    %ecx,%ecx
408d59:	8b 55 e8             	mov    -0x18(%ebp),%edx
408d5c:	41                   	inc    %ecx
408d5d:	89 4d ec             	mov    %ecx,-0x14(%ebp)
408d60:	8b 45 f8             	mov    -0x8(%ebp),%eax
408d63:	83 c0 02             	add    $0x2,%eax
408d66:	83 c6 08             	add    $0x8,%esi
408d69:	89 45 f8             	mov    %eax,-0x8(%ebp)
408d6c:	48                   	dec    %eax
408d6d:	89 75 e0             	mov    %esi,-0x20(%ebp)
408d70:	3b 45 0c             	cmp    0xc(%ebp),%eax
408d73:	0f 82 f2 fd ff ff    	jb     0x408b6b
408d79:	3b d1                	cmp    %ecx,%edx
408d7b:	74 0d                	je     0x408d8a
408d7d:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
408d84:	75 55                	jne    0x408ddb
408d86:	6a 6e                	push   $0x6e
408d88:	eb 49                	jmp    0x408dd3
408d8a:	80 7d fe 00          	cmpb   $0x0,-0x2(%ebp)
408d8e:	74 55                	je     0x408de5
408d90:	8d 45 fd             	lea    -0x3(%ebp),%eax
408d93:	50                   	push   %eax
408d94:	53                   	push   %ebx
408d95:	6a 01                	push   $0x1
408d97:	6a 13                	push   $0x13
408d99:	ff 15 40 f1 40 00    	call   *0x40f140
408d9f:	85 c0                	test   %eax,%eax
408da1:	79 42                	jns    0x408de5
408da3:	50                   	push   %eax
408da4:	ff 15 44 f1 40 00    	call   *0x40f144
408daa:	b9 38 46 40 00       	mov    $0x404638,%ecx