406e92:	5f                   	pop    %edi
406e93:	5b                   	pop    %ebx
406e94:	c9                   	leave
406e95:	c3                   	ret
406e96:	8b ff                	mov    %edi,%edi
406e98:	55                   	push   %ebp
406e99:	8b ec                	mov    %esp,%ebp
406e9b:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
406e9f:	75 15                	jne    0x406eb6
406ea1:	e8 81 d2 ff ff       	call   0x404127
406ea6:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406eac:	e8 d6 bd ff ff       	call   0x402c87
406eb1:	83 c8 ff             	or     $0xffffffff,%eax
406eb4:	5d                   	pop    %ebp
406eb5:	c3                   	ret
406eb6:	53                   	push   %ebx
406eb7:	8b 5d 10             	mov    0x10(%ebp),%ebx
406eba:	56                   	push   %esi
406ebb:	8b 75 08             	mov    0x8(%ebp),%esi
406ebe:	57                   	push   %edi
406ebf:	85 db                	test   %ebx,%ebx
406ec1:	75 10                	jne    0x406ed3
406ec3:	85 f6                	test   %esi,%esi
406ec5:	75 10                	jne    0x406ed7
406ec7:	39 75 0c             	cmp    %esi,0xc(%ebp)
406eca:	75 12                	jne    0x406ede
406ecc:	33 c0                	xor    %eax,%eax
406ece:	e9 aa 00 00 00       	jmp    0x406f7d
406ed3:	85 f6                	test   %esi,%esi
406ed5:	74 07                	je     0x406ede
406ed7:	8b 7d 0c             	mov    0xc(%ebp),%edi
406eda:	85 ff                	test   %edi,%edi
406edc:	75 10                	jne    0x406eee
406ede:	e8 44 d2 ff ff       	call   0x404127
406ee3:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406ee9:	e9 87 00 00 00       	jmp    0x406f75
406eee:	e8 34 d2 ff ff       	call   0x404127
406ef3:	ff 75 1c             	push   0x1c(%ebp)
406ef6:	ff 75 18             	push   0x18(%ebp)
406ef9:	ff 75 14             	push   0x14(%ebp)
406efc:	3b fb                	cmp    %ebx,%edi
406efe:	76 2a                	jbe    0x406f2a
406f00:	8b 38                	mov    (%eax),%edi
406f02:	43                   	inc    %ebx
406f03:	53                   	push   %ebx
406f04:	56                   	push   %esi
406f05:	68 be cb 40 00       	push   $0x40cbbe
406f0a:	e8 bd fe ff ff       	call   0x406dcc
406f0f:	83 c4 18             	add    $0x18,%esp
406f12:	83 f8 fe             	cmp    $0xfffffffe,%eax
406f15:	75 47                	jne    0x406f5e
406f17:	e8 0b d2 ff ff       	call   0x404127
406f1c:	83 38 22             	cmpl   $0x22,(%eax)
406f1f:	75 59                	jne    0x406f7a
406f21:	e8 01 d2 ff ff       	call   0x404127
406f26:	89 38                	mov    %edi,(%eax)
406f28:	eb 50                	jmp    0x406f7a
406f2a:	8b 18                	mov    (%eax),%ebx
406f2c:	57                   	push   %edi
406f2d:	56                   	push   %esi
406f2e:	68 be cb 40 00       	push   $0x40cbbe
406f33:	e8 94 fe ff ff       	call   0x406dcc
406f38:	83 c4 18             	add    $0x18,%esp
406f3b:	c6 44 3e ff 00       	movb   $0x0,-0x1(%esi,%edi,1)
406f40:	83 f8 fe             	cmp    $0xfffffffe,%eax
406f43:	75 19                	jne    0x406f5e
406f45:	83 7d 10 ff          	cmpl   $0xffffffff,0x10(%ebp)
406f49:	75 17                	jne    0x406f62
406f4b:	e8 d7 d1 ff ff       	call   0x404127
406f50:	83 38 22             	cmpl   $0x22,(%eax)
406f53:	75 25                	jne    0x406f7a
406f55:	e8 cd d1 ff ff       	call   0x404127
406f5a:	89 18                	mov    %ebx,(%eax)
406f5c:	eb 1c                	jmp    0x406f7a
406f5e:	85 c0                	test   %eax,%eax
406f60:	79 1b                	jns    0x406f7d
406f62:	c6 06 00             	movb   $0x0,(%esi)
406f65:	83 f8 fe             	cmp    $0xfffffffe,%eax
406f68:	75 10                	jne    0x406f7a
406f6a:	e8 b8 d1 ff ff       	call   0x404127
406f6f:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
406f75:	e8 0d bd ff ff       	call   0x402c87
406f7a:	83 c8 ff             	or     $0xffffffff,%eax
406f7d:	5f                   	pop    %edi
406f7e:	5e                   	pop    %esi
406f7f:	5b                   	pop    %ebx
406f80:	5d                   	pop    %ebp
406f81:	c3                   	ret
406f82:	8b ff                	mov    %edi,%edi
406f84:	55                   	push   %ebp
406f85:	8b ec                	mov    %esp,%ebp
406f87:	ff 75 18             	push   0x18(%ebp)
406f8a:	6a 00                	push   $0x0
406f8c:	ff 75 14             	push   0x14(%ebp)
406f8f:	ff 75 10             	push   0x10(%ebp)
406f92:	ff 75 0c             	push   0xc(%ebp)
406f95:	ff 75 08             	push   0x8(%ebp)
406f98:	e8 f9 fe ff ff       	call   0x406e96
406f9d:	83 c4 18             	add    $0x18,%esp
406fa0:	5d                   	pop    %ebp
406fa1:	c3                   	ret
406fa2:	8b ff                	mov    %edi,%edi
406fa4:	55                   	push   %ebp
406fa5:	8b ec                	mov    %esp,%ebp
406fa7:	8b 45 14             	mov    0x14(%ebp),%eax
406faa:	85 c0                	test   %eax,%eax
406fac:	7e 0b                	jle    0x406fb9
406fae:	50                   	push   %eax
406faf:	ff 75 10             	push   0x10(%ebp)
406fb2:	e8 1a 00 00 00       	call   0x406fd1
406fb7:	59                   	pop    %ecx
406fb8:	59                   	pop    %ecx
406fb9:	ff 75 1c             	push   0x1c(%ebp)
406fbc:	ff 75 18             	push   0x18(%ebp)
406fbf:	50                   	push   %eax
406fc0:	ff 75 10             	push   0x10(%ebp)
406fc3:	ff 75 0c             	push   0xc(%ebp)
406fc6:	ff 75 08             	push   0x8(%ebp)
406fc9:	ff 15 f8 f0 40 00    	call   *0x40f0f8
406fcf:	5d                   	pop    %ebp
406fd0:	c3                   	ret
406fd1:	8b ff                	mov    %edi,%edi
406fd3:	55                   	push   %ebp
406fd4:	8b ec                	mov    %esp,%ebp
406fd6:	33 c0                	xor    %eax,%eax
406fd8:	39 45 0c             	cmp    %eax,0xc(%ebp)
406fdb:	76 12                	jbe    0x406fef
406fdd:	8b 4d 08             	mov    0x8(%ebp),%ecx
406fe0:	66 83 39 00          	cmpw   $0x0,(%ecx)
406fe4:	74 09                	je     0x406fef
406fe6:	40                   	inc    %eax
406fe7:	83 c1 02             	add    $0x2,%ecx
406fea:	3b 45 0c             	cmp    0xc(%ebp),%eax
406fed:	72 f1                	jb     0x406fe0
406fef:	5d                   	pop    %ebp
406ff0:	c3                   	ret
406ff1:	cc                   	int3
406ff2:	cc                   	int3
406ff3:	cc                   	int3
406ff4:	cc                   	int3
406ff5:	cc                   	int3
406ff6:	cc                   	int3
406ff7:	cc                   	int3
406ff8:	cc                   	int3
406ff9:	cc                   	int3
406ffa:	cc                   	int3
406ffb:	cc                   	int3
406ffc:	cc                   	int3
406ffd:	cc                   	int3
406ffe:	cc                   	int3
406fff:	cc                   	int3
407000:	51                   	push   %ecx
407001:	8d 4c 24 08          	lea    0x8(%esp),%ecx
407005:	2b c8                	sub    %eax,%ecx
407007:	83 e1 0f             	and    $0xf,%ecx
40700a:	03 c1                	add    %ecx,%eax
40700c:	1b c9                	sbb    %ecx,%ecx
40700e:	0b c1                	or     %ecx,%eax
407010:	59                   	pop    %ecx
407011:	e9 ea 67 00 00       	jmp    0x40d800
407016:	51                   	push   %ecx
407017:	8d 4c 24 08          	lea    0x8(%esp),%ecx
40701b:	2b c8                	sub    %eax,%ecx
40701d:	83 e1 07             	and    $0x7,%ecx
407020:	03 c1                	add    %ecx,%eax
407022:	1b c9                	sbb    %ecx,%ecx
407024:	0b c1                	or     %ecx,%eax
407026:	59                   	pop    %ecx
407027:	e9 d4 67 00 00       	jmp    0x40d800
40702c:	8b ff                	mov    %edi,%edi
40702e:	55                   	push   %ebp
40702f:	8b ec                	mov    %esp,%ebp
407031:	51                   	push   %ecx
407032:	56                   	push   %esi
407033:	8b 75 0c             	mov    0xc(%ebp),%esi
407036:	56                   	push   %esi
407037:	e8 74 ba ff ff       	call   0x402ab0
40703c:	89 45 0c             	mov    %eax,0xc(%ebp)
40703f:	8b 46 0c             	mov    0xc(%esi),%eax
407042:	59                   	pop    %ecx
407043:	a8 82                	test   $0x82,%al
407045:	75 17                	jne    0x40705e
407047:	e8 db d0 ff ff       	call   0x404127
40704c:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
407052:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
407056:	83 c8 ff             	or     $0xffffffff,%eax
407059:	e9 2f 01 00 00       	jmp    0x40718d
40705e:	a8 40                	test   $0x40,%al
407060:	74 0d                	je     0x40706f
407062:	e8 c0 d0 ff ff       	call   0x404127
407067:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40706d:	eb e3                	jmp    0x407052
40706f:	53                   	push   %ebx
407070:	33 db                	xor    %ebx,%ebx
407072:	a8 01                	test   $0x1,%al
407074:	74 16                	je     0x40708c
407076:	89 5e 04             	mov    %ebx,0x4(%esi)
407079:	a8 10                	test   $0x10,%al
40707b:	0f 84 87 00 00 00    	je     0x407108
407081:	8b 4e 08             	mov    0x8(%esi),%ecx
407084:	83 e0 fe             	and    $0xfffffffe,%eax
407087:	89 0e                	mov    %ecx,(%esi)
407089:	89 46 0c             	mov    %eax,0xc(%esi)
40708c:	8b 46 0c             	mov    0xc(%esi),%eax
40708f:	83 e0 ef             	and    $0xffffffef,%eax
407092:	83 c8 02             	or     $0x2,%eax
407095:	89 46 0c             	mov    %eax,0xc(%esi)
407098:	89 5e 04             	mov    %ebx,0x4(%esi)
40709b:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40709e:	a9 0c 01 00 00       	test   $0x10c,%eax
4070a3:	75 2c                	jne    0x4070d1
4070a5:	e8 d9 b1 ff ff       	call   0x402283
4070aa:	83 c0 20             	add    $0x20,%eax
4070ad:	3b f0                	cmp    %eax,%esi
4070af:	74 0c                	je     0x4070bd
4070b1:	e8 cd b1 ff ff       	call   0x402283
4070b6:	83 c0 40             	add    $0x40,%eax
4070b9:	3b f0                	cmp    %eax,%esi
4070bb:	75 0d                	jne    0x4070ca
4070bd:	ff 75 0c             	push   0xc(%ebp)
4070c0:	e8 82 38 00 00       	call   0x40a947
4070c5:	59                   	pop    %ecx
4070c6:	85 c0                	test   %eax,%eax
4070c8:	75 07                	jne    0x4070d1
4070ca:	56                   	push   %esi
4070cb:	e8 ca 68 00 00       	call   0x40d99a
4070d0:	59                   	pop    %ecx
4070d1:	f7 46 0c 08 01 00 00 	testl  $0x108,0xc(%esi)
4070d8:	57                   	push   %edi
4070d9:	0f 84 80 00 00 00    	je     0x40715f
4070df:	8b 46 08             	mov    0x8(%esi),%eax
4070e2:	8b 3e                	mov    (%esi),%edi
4070e4:	8d 48 01             	lea    0x1(%eax),%ecx
4070e7:	89 0e                	mov    %ecx,(%esi)
4070e9:	8b 4e 18             	mov    0x18(%esi),%ecx
4070ec:	2b f8                	sub    %eax,%edi
4070ee:	49                   	dec    %ecx
4070ef:	89 4e 04             	mov    %ecx,0x4(%esi)
4070f2:	3b fb                	cmp    %ebx,%edi
4070f4:	7e 1d                	jle    0x407113
4070f6:	57                   	push   %edi
4070f7:	50                   	push   %eax
4070f8:	ff 75 0c             	push   0xc(%ebp)
4070fb:	e8 de 58 00 00       	call   0x40c9de
407100:	83 c4 0c             	add    $0xc,%esp
407103:	89 45 fc             	mov    %eax,-0x4(%ebp)
407106:	eb 4d                	jmp    0x407155
407108:	83 c8 20             	or     $0x20,%eax
40710b:	89 46 0c             	mov    %eax,0xc(%esi)
40710e:	83 c8 ff             	or     $0xffffffff,%eax
407111:	eb 79                	jmp    0x40718c
407113:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407116:	83 f9 ff             	cmp    $0xffffffff,%ecx
407119:	74 1b                	je     0x407136
40711b:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40711e:	74 16                	je     0x407136
407120:	8b c1                	mov    %ecx,%eax
407122:	83 e0 1f             	and    $0x1f,%eax
407125:	8b d1                	mov    %ecx,%edx
407127:	c1 fa 05             	sar    $0x5,%edx
40712a:	c1 e0 06             	shl    $0x6,%eax
40712d:	03 04 95 20 46 41 00 	add    0x414620(,%edx,4),%eax
407134:	eb 05                	jmp    0x40713b
407136:	b8 78 2b 41 00       	mov    $0x412b78,%eax
40713b:	f6 40 04 20          	testb  $0x20,0x4(%eax)
40713f:	74 14                	je     0x407155
407141:	6a 02                	push   $0x2
407143:	53                   	push   %ebx
407144:	53                   	push   %ebx
407145:	51                   	push   %ecx
407146:	e8 65 67 00 00       	call   0x40d8b0
40714b:	23 c2                	and    %edx,%eax
40714d:	83 c4 10             	add    $0x10,%esp
407150:	83 f8 ff             	cmp    $0xffffffff,%eax
407153:	74 25                	je     0x40717a
407155:	8b 46 08             	mov    0x8(%esi),%eax
407158:	8a 4d 08             	mov    0x8(%ebp),%cl
40715b:	88 08                	mov    %cl,(%eax)
40715d:	eb 16                	jmp    0x407175
40715f:	33 ff                	xor    %edi,%edi
407161:	47                   	inc    %edi
407162:	57                   	push   %edi
407163:	8d 45 08             	lea    0x8(%ebp),%eax
407166:	50                   	push   %eax
407167:	ff 75 0c             	push   0xc(%ebp)
40716a:	e8 6f 58 00 00       	call   0x40c9de
40716f:	83 c4 0c             	add    $0xc,%esp
407172:	89 45 fc             	mov    %eax,-0x4(%ebp)
407175:	39 7d fc             	cmp    %edi,-0x4(%ebp)
407178:	74 09                	je     0x407183
40717a:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
40717e:	83 c8 ff             	or     $0xffffffff,%eax
407181:	eb 08                	jmp    0x40718b
407183:	8b 45 08             	mov    0x8(%ebp),%eax
407186:	25 ff 00 00 00       	and    $0xff,%eax
40718b:	5f                   	pop    %edi
40718c:	5b                   	pop    %ebx
40718d:	5e                   	pop    %esi
40718e:	c9                   	leave
40718f:	c3                   	ret
407190:	8b ff                	mov    %edi,%edi
407192:	55                   	push   %ebp
407193:	8b ec                	mov    %esp,%ebp
407195:	56                   	push   %esi
407196:	8b 75 08             	mov    0x8(%ebp),%esi
407199:	85 f6                	test   %esi,%esi
40719b:	75 15                	jne    0x4071b2
40719d:	e8 85 cf ff ff       	call   0x404127
4071a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4071a8:	e8 da ba ff ff       	call   0x402c87
4071ad:	e9 fa 00 00 00       	jmp    0x4072ac
4071b2:	8b 46 0c             	mov    0xc(%esi),%eax
4071b5:	a8 83                	test   $0x83,%al
4071b7:	0f 84 ef 00 00 00    	je     0x4072ac
4071bd:	a8 40                	test   $0x40,%al
4071bf:	0f 85 e7 00 00 00    	jne    0x4072ac
4071c5:	a8 02                	test   $0x2,%al
4071c7:	74 0b                	je     0x4071d4
4071c9:	83 c8 20             	or     $0x20,%eax
4071cc:	89 46 0c             	mov    %eax,0xc(%esi)
4071cf:	e9 d8 00 00 00       	jmp    0x4072ac
4071d4:	83 c8 01             	or     $0x1,%eax
4071d7:	89 46 0c             	mov    %eax,0xc(%esi)
4071da:	a9 0c 01 00 00       	test   $0x10c,%eax
4071df:	75 09                	jne    0x4071ea
4071e1:	56                   	push   %esi
4071e2:	e8 b3 67 00 00       	call   0x40d99a
4071e7:	59                   	pop    %ecx
4071e8:	eb 05                	jmp    0x4071ef
4071ea:	8b 46 08             	mov    0x8(%esi),%eax
4071ed:	89 06                	mov    %eax,(%esi)
4071ef:	ff 76 18             	push   0x18(%esi)
4071f2:	ff 76 08             	push   0x8(%esi)
4071f5:	56                   	push   %esi
4071f6:	e8 b5 b8 ff ff       	call   0x402ab0
4071fb:	59                   	pop    %ecx
4071fc:	50                   	push   %eax
4071fd:	e8 67 06 00 00       	call   0x407869
407202:	83 c4 0c             	add    $0xc,%esp
407205:	89 46 04             	mov    %eax,0x4(%esi)
407208:	85 c0                	test   %eax,%eax
40720a:	0f 84 8b 00 00 00    	je     0x40729b
407210:	83 f8 ff             	cmp    $0xffffffff,%eax
407213:	0f 84 82 00 00 00    	je     0x40729b
407219:	f6 46 0c 82          	testb  $0x82,0xc(%esi)
40721d:	75 51                	jne    0x407270
40721f:	56                   	push   %esi
407220:	e8 8b b8 ff ff       	call   0x402ab0
407225:	59                   	pop    %ecx
407226:	83 f8 ff             	cmp    $0xffffffff,%eax