408c97:	8b 45 08             	mov    0x8(%ebp),%eax
408c9a:	8b 00                	mov    (%eax),%eax
408c9c:	3b 05 54 41 42 00    	cmp    0x424154,%eax
408ca2:	74 07                	je     0x408cab
408ca4:	50                   	push   %eax
408ca5:	e8 66 fe ff ff       	call   0x408b10
408caa:	59                   	pop    %ecx
408cab:	5d                   	pop    %ebp
408cac:	c3                   	ret
408cad:	e9 88 fb ff ff       	jmp    0x40883a
408cb2:	e9 b2 fb ff ff       	jmp    0x408869
408cb7:	68 77 8c 40 00       	push   $0x408c77
408cbc:	b9 4c 41 42 00       	mov    $0x42414c,%ecx
408cc1:	e8 71 ff ff ff       	call   0x408c37
408cc6:	68 92 8c 40 00       	push   $0x408c92
408ccb:	b9 50 41 42 00       	mov    $0x424150,%ecx
408cd0:	e8 62 ff ff ff       	call   0x408c37
408cd5:	ff 35 58 41 42 00    	push   0x424158
408cdb:	e8 30 fe ff ff       	call   0x408b10
408ce0:	ff 35 54 41 42 00    	push   0x424154
408ce6:	e8 25 fe ff ff       	call   0x408b10
408ceb:	59                   	pop    %ecx
408cec:	59                   	pop    %ecx
408ced:	c3                   	ret
408cee:	a1 54 41 42 00       	mov    0x424154,%eax
408cf3:	85 c0                	test   %eax,%eax
408cf5:	75 0a                	jne    0x408d01
408cf7:	e8 6d fb ff ff       	call   0x408869
408cfc:	a3 54 41 42 00       	mov    %eax,0x424154
408d01:	c3                   	ret
408d02:	e9 ea fb ff ff       	jmp    0x4088f1
408d07:	6a 0c                	push   $0xc
408d09:	68 00 1c 42 00       	push   $0x421c00
408d0e:	e8 3d ae ff ff       	call   0x403b50
408d13:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
408d17:	8b 45 08             	mov    0x8(%ebp),%eax
408d1a:	ff 30                	push   (%eax)
408d1c:	e8 84 61 00 00       	call   0x40eea5
408d21:	59                   	pop    %ecx
408d22:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408d26:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408d29:	e8 eb 01 00 00       	call   0x408f19
408d2e:	8b f0                	mov    %eax,%esi
408d30:	89 75 e4             	mov    %esi,-0x1c(%ebp)
408d33:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408d3a:	e8 0d 00 00 00       	call   0x408d4c
408d3f:	8b c6                	mov    %esi,%eax
408d41:	e8 50 ae ff ff       	call   0x403b96
408d46:	c2 0c 00             	ret    $0xc
408d49:	8b 75 e4             	mov    -0x1c(%ebp),%esi
408d4c:	8b 45 10             	mov    0x10(%ebp),%eax
408d4f:	ff 30                	push   (%eax)
408d51:	e8 97 61 00 00       	call   0x40eeed
408d56:	59                   	pop    %ecx
408d57:	c3                   	ret
408d58:	6a 0c                	push   $0xc
408d5a:	68 20 1c 42 00       	push   $0x421c20
408d5f:	e8 ec ad ff ff       	call   0x403b50
408d64:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
408d68:	8b 45 08             	mov    0x8(%ebp),%eax
408d6b:	ff 30                	push   (%eax)
408d6d:	e8 33 61 00 00       	call   0x40eea5
408d72:	59                   	pop    %ecx
408d73:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408d77:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408d7a:	e8 7a 00 00 00       	call   0x408df9
408d7f:	8b f0                	mov    %eax,%esi
408d81:	89 75 e4             	mov    %esi,-0x1c(%ebp)
408d84:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408d8b:	e8 0d 00 00 00       	call   0x408d9d
408d90:	8b c6                	mov    %esi,%eax
408d92:	e8 ff ad ff ff       	call   0x403b96
408d97:	c2 0c 00             	ret    $0xc
408d9a:	8b 75 e4             	mov    -0x1c(%ebp),%esi
408d9d:	8b 45 10             	mov    0x10(%ebp),%eax
408da0:	ff 30                	push   (%eax)
408da2:	e8 46 61 00 00       	call   0x40eeed
408da7:	59                   	pop    %ecx
408da8:	c3                   	ret
408da9:	8b ff                	mov    %edi,%edi
408dab:	55                   	push   %ebp
408dac:	8b ec                	mov    %esp,%ebp
408dae:	83 ec 0c             	sub    $0xc,%esp
408db1:	8b 45 08             	mov    0x8(%ebp),%eax
408db4:	8d 4d ff             	lea    -0x1(%ebp),%ecx
408db7:	89 45 f8             	mov    %eax,-0x8(%ebp)
408dba:	89 45 f4             	mov    %eax,-0xc(%ebp)
408dbd:	8d 45 f8             	lea    -0x8(%ebp),%eax
408dc0:	50                   	push   %eax
408dc1:	ff 75 0c             	push   0xc(%ebp)
408dc4:	8d 45 f4             	lea    -0xc(%ebp),%eax
408dc7:	50                   	push   %eax
408dc8:	e8 8b ff ff ff       	call   0x408d58
408dcd:	8b e5                	mov    %ebp,%esp
408dcf:	5d                   	pop    %ebp
408dd0:	c3                   	ret
408dd1:	8b ff                	mov    %edi,%edi
408dd3:	55                   	push   %ebp
408dd4:	8b ec                	mov    %esp,%ebp
408dd6:	83 ec 0c             	sub    $0xc,%esp
408dd9:	8b 45 08             	mov    0x8(%ebp),%eax
408ddc:	8d 4d ff             	lea    -0x1(%ebp),%ecx
408ddf:	89 45 f8             	mov    %eax,-0x8(%ebp)
408de2:	89 45 f4             	mov    %eax,-0xc(%ebp)
408de5:	8d 45 f8             	lea    -0x8(%ebp),%eax
408de8:	50                   	push   %eax
408de9:	ff 75 0c             	push   0xc(%ebp)
408dec:	8d 45 f4             	lea    -0xc(%ebp),%eax
408def:	50                   	push   %eax
408df0:	e8 12 ff ff ff       	call   0x408d07
408df5:	8b e5                	mov    %ebp,%esp
408df7:	5d                   	pop    %ebp
408df8:	c3                   	ret
408df9:	8b ff                	mov    %edi,%edi
408dfb:	55                   	push   %ebp
408dfc:	8b ec                	mov    %esp,%ebp
408dfe:	83 ec 18             	sub    $0x18,%esp
408e01:	a1 0c 30 42 00       	mov    0x42300c,%eax
408e06:	33 c5                	xor    %ebp,%eax
408e08:	89 45 fc             	mov    %eax,-0x4(%ebp)
408e0b:	8b c1                	mov    %ecx,%eax
408e0d:	89 45 e8             	mov    %eax,-0x18(%ebp)
408e10:	53                   	push   %ebx
408e11:	8b 00                	mov    (%eax),%eax
408e13:	8b 18                	mov    (%eax),%ebx
408e15:	85 db                	test   %ebx,%ebx
408e17:	75 08                	jne    0x408e21
408e19:	83 c8 ff             	or     $0xffffffff,%eax
408e1c:	e9 e9 00 00 00       	jmp    0x408f0a
408e21:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
408e27:	56                   	push   %esi
408e28:	57                   	push   %edi
408e29:	8b 3b                	mov    (%ebx),%edi
408e2b:	8b f2                	mov    %edx,%esi
408e2d:	8b 5b 04             	mov    0x4(%ebx),%ebx
408e30:	83 e6 1f             	and    $0x1f,%esi
408e33:	33 fa                	xor    %edx,%edi
408e35:	89 75 ec             	mov    %esi,-0x14(%ebp)
408e38:	8b ce                	mov    %esi,%ecx
408e3a:	33 da                	xor    %edx,%ebx
408e3c:	d3 cf                	ror    %cl,%edi
408e3e:	d3 cb                	ror    %cl,%ebx
408e40:	85 ff                	test   %edi,%edi
408e42:	0f 84 be 00 00 00    	je     0x408f06
408e48:	83 ff ff             	cmp    $0xffffffff,%edi
408e4b:	0f 84 b5 00 00 00    	je     0x408f06
408e51:	89 7d f4             	mov    %edi,-0xc(%ebp)
408e54:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408e57:	6a 20                	push   $0x20
408e59:	59                   	pop    %ecx
408e5a:	2b ce                	sub    %esi,%ecx
408e5c:	33 c0                	xor    %eax,%eax
408e5e:	d3 c8                	ror    %cl,%eax
408e60:	33 c2                	xor    %edx,%eax
408e62:	83 eb 04             	sub    $0x4,%ebx
408e65:	3b df                	cmp    %edi,%ebx
408e67:	72 60                	jb     0x408ec9
408e69:	39 03                	cmp    %eax,(%ebx)
408e6b:	74 f5                	je     0x408e62
408e6d:	8b 33                	mov    (%ebx),%esi
408e6f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
408e72:	33 f2                	xor    %edx,%esi
408e74:	d3 ce                	ror    %cl,%esi
408e76:	8b ce                	mov    %esi,%ecx
408e78:	89 03                	mov    %eax,(%ebx)
408e7a:	ff 15 a8 b1 41 00    	call   *0x41b1a8
408e80:	ff d6                	call   *%esi
408e82:	8b 45 e8             	mov    -0x18(%ebp),%eax
408e85:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
408e8b:	8b f2                	mov    %edx,%esi
408e8d:	83 e6 1f             	and    $0x1f,%esi
408e90:	89 75 ec             	mov    %esi,-0x14(%ebp)
408e93:	8b 00                	mov    (%eax),%eax
408e95:	8b 00                	mov    (%eax),%eax
408e97:	8b 08                	mov    (%eax),%ecx
408e99:	8b 40 04             	mov    0x4(%eax),%eax
408e9c:	33 ca                	xor    %edx,%ecx
408e9e:	89 4d f8             	mov    %ecx,-0x8(%ebp)
408ea1:	33 c2                	xor    %edx,%eax
408ea3:	8b ce                	mov    %esi,%ecx
408ea5:	d3 4d f8             	rorl   %cl,-0x8(%ebp)
408ea8:	d3 c8                	ror    %cl,%eax
408eaa:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408ead:	3b 4d f4             	cmp    -0xc(%ebp),%ecx
408eb0:	75 0b                	jne    0x408ebd
408eb2:	6a 20                	push   $0x20
408eb4:	59                   	pop    %ecx
408eb5:	3b 45 f0             	cmp    -0x10(%ebp),%eax
408eb8:	74 a0                	je     0x408e5a
408eba:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408ebd:	89 4d f4             	mov    %ecx,-0xc(%ebp)
408ec0:	8b f9                	mov    %ecx,%edi
408ec2:	89 45 f0             	mov    %eax,-0x10(%ebp)
408ec5:	8b d8                	mov    %eax,%ebx
408ec7:	eb 8e                	jmp    0x408e57
408ec9:	83 ff ff             	cmp    $0xffffffff,%edi
408ecc:	74 0d                	je     0x408edb
408ece:	57                   	push   %edi
408ecf:	e8 50 09 00 00       	call   0x409824
408ed4:	8b 15 0c 30 42 00    	mov    0x42300c,%edx
408eda:	59                   	pop    %ecx
408edb:	8b c2                	mov    %edx,%eax
408edd:	33 d2                	xor    %edx,%edx
408edf:	83 e0 1f             	and    $0x1f,%eax
408ee2:	6a 20                	push   $0x20
408ee4:	59                   	pop    %ecx
408ee5:	2b c8                	sub    %eax,%ecx
408ee7:	d3 ca                	ror    %cl,%edx
408ee9:	8b 4d e8             	mov    -0x18(%ebp),%ecx
408eec:	33 15 0c 30 42 00    	xor    0x42300c,%edx
408ef2:	8b 01                	mov    (%ecx),%eax
408ef4:	8b 00                	mov    (%eax),%eax
408ef6:	89 10                	mov    %edx,(%eax)
408ef8:	8b 01                	mov    (%ecx),%eax
408efa:	8b 00                	mov    (%eax),%eax
408efc:	89 50 04             	mov    %edx,0x4(%eax)
408eff:	8b 01                	mov    (%ecx),%eax
408f01:	8b 00                	mov    (%eax),%eax
408f03:	89 50 08             	mov    %edx,0x8(%eax)
408f06:	5f                   	pop    %edi
408f07:	33 c0                	xor    %eax,%eax
408f09:	5e                   	pop    %esi
408f0a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408f0d:	33 cd                	xor    %ebp,%ecx
408f0f:	5b                   	pop    %ebx
408f10:	e8 41 a0 ff ff       	call   0x402f56
408f15:	8b e5                	mov    %ebp,%esp
408f17:	5d                   	pop    %ebp
408f18:	c3                   	ret
408f19:	8b ff                	mov    %edi,%edi
408f1b:	55                   	push   %ebp
408f1c:	8b ec                	mov    %esp,%ebp
408f1e:	83 ec 0c             	sub    $0xc,%esp
408f21:	8b c1                	mov    %ecx,%eax
408f23:	89 45 f8             	mov    %eax,-0x8(%ebp)
408f26:	56                   	push   %esi
408f27:	8b 00                	mov    (%eax),%eax
408f29:	8b 30                	mov    (%eax),%esi
408f2b:	85 f6                	test   %esi,%esi
408f2d:	75 08                	jne    0x408f37
408f2f:	83 c8 ff             	or     $0xffffffff,%eax
408f32:	e9 1e 01 00 00       	jmp    0x409055
408f37:	a1 0c 30 42 00       	mov    0x42300c,%eax
408f3c:	8b c8                	mov    %eax,%ecx
408f3e:	53                   	push   %ebx
408f3f:	8b 1e                	mov    (%esi),%ebx
408f41:	83 e1 1f             	and    $0x1f,%ecx
408f44:	57                   	push   %edi
408f45:	8b 7e 04             	mov    0x4(%esi),%edi
408f48:	33 d8                	xor    %eax,%ebx
408f4a:	8b 76 08             	mov    0x8(%esi),%esi
408f4d:	33 f8                	xor    %eax,%edi
408f4f:	33 f0                	xor    %eax,%esi
408f51:	d3 cf                	ror    %cl,%edi
408f53:	d3 ce                	ror    %cl,%esi
408f55:	d3 cb                	ror    %cl,%ebx
408f57:	3b fe                	cmp    %esi,%edi
408f59:	0f 85 b4 00 00 00    	jne    0x409013
408f5f:	2b f3                	sub    %ebx,%esi
408f61:	b8 00 02 00 00       	mov    $0x200,%eax
408f66:	c1 fe 02             	sar    $0x2,%esi
408f69:	3b f0                	cmp    %eax,%esi
408f6b:	77 02                	ja     0x408f6f
408f6d:	8b c6                	mov    %esi,%eax
408f6f:	8d 3c 30             	lea    (%eax,%esi,1),%edi
408f72:	85 ff                	test   %edi,%edi
408f74:	75 03                	jne    0x408f79
408f76:	6a 20                	push   $0x20
408f78:	5f                   	pop    %edi
408f79:	3b fe                	cmp    %esi,%edi
408f7b:	72 1d                	jb     0x408f9a
408f7d:	6a 04                	push   $0x4
408f7f:	57                   	push   %edi
408f80:	53                   	push   %ebx
408f81:	e8 89 07 00 00       	call   0x40970f
408f86:	6a 00                	push   $0x0
408f88:	89 45 fc             	mov    %eax,-0x4(%ebp)
408f8b:	e8 94 08 00 00       	call   0x409824
408f90:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408f93:	83 c4 10             	add    $0x10,%esp
408f96:	85 c9                	test   %ecx,%ecx
408f98:	75 28                	jne    0x408fc2
408f9a:	6a 04                	push   $0x4
408f9c:	8d 7e 04             	lea    0x4(%esi),%edi
408f9f:	57                   	push   %edi
408fa0:	53                   	push   %ebx
408fa1:	e8 69 07 00 00       	call   0x40970f
408fa6:	6a 00                	push   $0x0
408fa8:	89 45 fc             	mov    %eax,-0x4(%ebp)
408fab:	e8 74 08 00 00       	call   0x409824
408fb0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408fb3:	83 c4 10             	add    $0x10,%esp
408fb6:	85 c9                	test   %ecx,%ecx
408fb8:	75 08                	jne    0x408fc2
408fba:	83 c8 ff             	or     $0xffffffff,%eax
408fbd:	e9 91 00 00 00       	jmp    0x409053
408fc2:	8d 04 b1             	lea    (%ecx,%esi,4),%eax
408fc5:	8b d9                	mov    %ecx,%ebx
408fc7:	89 45 fc             	mov    %eax,-0x4(%ebp)
408fca:	8d 34 b9             	lea    (%ecx,%edi,4),%esi
408fcd:	a1 0c 30 42 00       	mov    0x42300c,%eax
408fd2:	8b 7d fc             	mov    -0x4(%ebp),%edi
408fd5:	83 e0 1f             	and    $0x1f,%eax
408fd8:	6a 20                	push   $0x20
408fda:	59                   	pop    %ecx
408fdb:	2b c8                	sub    %eax,%ecx
408fdd:	33 c0                	xor    %eax,%eax
408fdf:	d3 c8                	ror    %cl,%eax
408fe1:	8b cf                	mov    %edi,%ecx
408fe3:	33 05 0c 30 42 00    	xor    0x42300c,%eax
408fe9:	89 45 f4             	mov    %eax,-0xc(%ebp)
408fec:	8b c6                	mov    %esi,%eax
408fee:	2b c7                	sub    %edi,%eax
408ff0:	83 c0 03             	add    $0x3,%eax
408ff3:	c1 e8 02             	shr    $0x2,%eax
408ff6:	3b f7                	cmp    %edi,%esi
408ff8:	1b d2                	sbb    %edx,%edx
408ffa:	f7 d2                	not    %edx
408ffc:	23 d0                	and    %eax,%edx
408ffe:	89 55 fc             	mov    %edx,-0x4(%ebp)
409001:	74 10                	je     0x409013
409003:	8b 55 f4             	mov    -0xc(%ebp),%edx
409006:	33 c0                	xor    %eax,%eax
409008:	40                   	inc    %eax
409009:	89 11                	mov    %edx,(%ecx)
40900b:	8d 49 04             	lea    0x4(%ecx),%ecx
40900e:	3b 45 fc             	cmp    -0x4(%ebp),%eax
409011:	75 f5                	jne    0x409008
409013:	8b 45 f8             	mov    -0x8(%ebp),%eax
409016:	8b 40 04             	mov    0x4(%eax),%eax
409019:	ff 30                	push   (%eax)
40901b:	e8 b0 02 00 00       	call   0x4092d0
409020:	53                   	push   %ebx
409021:	89 07                	mov    %eax,(%edi)
409023:	e8 9d a2 ff ff       	call   0x4032c5
409028:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40902b:	8b 0b                	mov    (%ebx),%ecx
40902d:	8b 09                	mov    (%ecx),%ecx
40902f:	89 01                	mov    %eax,(%ecx)
409031:	8d 47 04             	lea    0x4(%edi),%eax
409034:	50                   	push   %eax
409035:	e8 8b a2 ff ff       	call   0x4032c5
40903a:	8b 0b                	mov    (%ebx),%ecx
40903c:	56                   	push   %esi
40903d:	8b 09                	mov    (%ecx),%ecx
40903f:	89 41 04             	mov    %eax,0x4(%ecx)
409042:	e8 7e a2 ff ff       	call   0x4032c5
409047:	8b 0b                	mov    (%ebx),%ecx
409049:	83 c4 10             	add    $0x10,%esp
40904c:	8b 09                	mov    (%ecx),%ecx