406d69:	75 1e                	jne    0x406d89
406d6b:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
406d6f:	74 18                	je     0x406d89
406d71:	ff 76 18             	push   0x18(%esi)
406d74:	e8 0f f6 ff ff       	call   0x406388
406d79:	59                   	pop    %ecx
406d7a:	85 c0                	test   %eax,%eax
406d7c:	74 0b                	je     0x406d89
406d7e:	ff 75 10             	push   0x10(%ebp)
406d81:	56                   	push   %esi
406d82:	e8 19 fd ff ff       	call   0x406aa0
406d87:	59                   	pop    %ecx
406d88:	59                   	pop    %ecx
406d89:	c3                   	ret
406d8a:	6a 0c                	push   $0xc
406d8c:	68 58 a9 41 00       	push   $0x41a958
406d91:	e8 b2 68 00 00       	call   0x40d648
406d96:	33 d2                	xor    %edx,%edx
406d98:	89 55 e4             	mov    %edx,-0x1c(%ebp)
406d9b:	8b 45 10             	mov    0x10(%ebp),%eax
406d9e:	8b 48 04             	mov    0x4(%eax),%ecx
406da1:	3b ca                	cmp    %edx,%ecx
406da3:	0f 84 58 01 00 00    	je     0x406f01
406da9:	38 51 08             	cmp    %dl,0x8(%ecx)
406dac:	0f 84 4f 01 00 00    	je     0x406f01
406db2:	8b 48 08             	mov    0x8(%eax),%ecx
406db5:	3b ca                	cmp    %edx,%ecx
406db7:	75 0c                	jne    0x406dc5
406db9:	f7 00 00 00 00 80    	testl  $0x80000000,(%eax)
406dbf:	0f 84 3c 01 00 00    	je     0x406f01
406dc5:	8b 00                	mov    (%eax),%eax
406dc7:	8b 75 0c             	mov    0xc(%ebp),%esi
406dca:	85 c0                	test   %eax,%eax
406dcc:	78 04                	js     0x406dd2
406dce:	8d 74 31 0c          	lea    0xc(%ecx,%esi,1),%esi
406dd2:	89 55 fc             	mov    %edx,-0x4(%ebp)
406dd5:	33 db                	xor    %ebx,%ebx
406dd7:	43                   	inc    %ebx
406dd8:	53                   	push   %ebx
406dd9:	a8 08                	test   $0x8,%al
406ddb:	74 41                	je     0x406e1e
406ddd:	8b 7d 08             	mov    0x8(%ebp),%edi
406de0:	ff 77 18             	push   0x18(%edi)
406de3:	e8 89 78 00 00       	call   0x40e671
406de8:	59                   	pop    %ecx
406de9:	59                   	pop    %ecx
406dea:	85 c0                	test   %eax,%eax
406dec:	0f 84 f2 00 00 00    	je     0x406ee4
406df2:	53                   	push   %ebx
406df3:	56                   	push   %esi
406df4:	e8 78 78 00 00       	call   0x40e671
406df9:	59                   	pop    %ecx
406dfa:	59                   	pop    %ecx
406dfb:	85 c0                	test   %eax,%eax
406dfd:	0f 84 e1 00 00 00    	je     0x406ee4
406e03:	8b 47 18             	mov    0x18(%edi),%eax
406e06:	89 06                	mov    %eax,(%esi)
406e08:	8b 4d 14             	mov    0x14(%ebp),%ecx
406e0b:	83 c1 08             	add    $0x8,%ecx
406e0e:	51                   	push   %ecx
406e0f:	50                   	push   %eax
406e10:	e8 df fc ff ff       	call   0x406af4
406e15:	59                   	pop    %ecx
406e16:	59                   	pop    %ecx
406e17:	89 06                	mov    %eax,(%esi)
406e19:	e9 cb 00 00 00       	jmp    0x406ee9
406e1e:	8b 7d 14             	mov    0x14(%ebp),%edi
406e21:	8b 45 08             	mov    0x8(%ebp),%eax
406e24:	ff 70 18             	push   0x18(%eax)
406e27:	84 1f                	test   %bl,(%edi)
406e29:	74 48                	je     0x406e73
406e2b:	e8 41 78 00 00       	call   0x40e671
406e30:	59                   	pop    %ecx
406e31:	59                   	pop    %ecx
406e32:	85 c0                	test   %eax,%eax
406e34:	0f 84 aa 00 00 00    	je     0x406ee4
406e3a:	53                   	push   %ebx
406e3b:	56                   	push   %esi
406e3c:	e8 30 78 00 00       	call   0x40e671
406e41:	59                   	pop    %ecx
406e42:	59                   	pop    %ecx
406e43:	85 c0                	test   %eax,%eax
406e45:	0f 84 99 00 00 00    	je     0x406ee4
406e4b:	ff 77 14             	push   0x14(%edi)
406e4e:	8b 45 08             	mov    0x8(%ebp),%eax
406e51:	ff 70 18             	push   0x18(%eax)
406e54:	56                   	push   %esi
406e55:	e8 c6 40 00 00       	call   0x40af20
406e5a:	83 c4 0c             	add    $0xc,%esp
406e5d:	83 7f 14 04          	cmpl   $0x4,0x14(%edi)
406e61:	0f 85 82 00 00 00    	jne    0x406ee9
406e67:	8b 06                	mov    (%esi),%eax
406e69:	85 c0                	test   %eax,%eax
406e6b:	74 7c                	je     0x406ee9
406e6d:	83 c7 08             	add    $0x8,%edi
406e70:	57                   	push   %edi
406e71:	eb 9c                	jmp    0x406e0f
406e73:	39 57 18             	cmp    %edx,0x18(%edi)
406e76:	75 38                	jne    0x406eb0
406e78:	e8 f4 77 00 00       	call   0x40e671
406e7d:	59                   	pop    %ecx
406e7e:	59                   	pop    %ecx
406e7f:	85 c0                	test   %eax,%eax
406e81:	74 61                	je     0x406ee4
406e83:	53                   	push   %ebx
406e84:	56                   	push   %esi
406e85:	e8 e7 77 00 00       	call   0x40e671
406e8a:	59                   	pop    %ecx
406e8b:	59                   	pop    %ecx
406e8c:	85 c0                	test   %eax,%eax
406e8e:	74 54                	je     0x406ee4
406e90:	ff 77 14             	push   0x14(%edi)
406e93:	83 c7 08             	add    $0x8,%edi
406e96:	57                   	push   %edi
406e97:	8b 45 08             	mov    0x8(%ebp),%eax
406e9a:	ff 70 18             	push   0x18(%eax)
406e9d:	e8 52 fc ff ff       	call   0x406af4
406ea2:	59                   	pop    %ecx
406ea3:	59                   	pop    %ecx
406ea4:	50                   	push   %eax
406ea5:	56                   	push   %esi
406ea6:	e8 75 40 00 00       	call   0x40af20
406eab:	83 c4 0c             	add    $0xc,%esp
406eae:	eb 39                	jmp    0x406ee9
406eb0:	e8 bc 77 00 00       	call   0x40e671
406eb5:	59                   	pop    %ecx
406eb6:	59                   	pop    %ecx
406eb7:	85 c0                	test   %eax,%eax
406eb9:	74 29                	je     0x406ee4
406ebb:	53                   	push   %ebx
406ebc:	56                   	push   %esi
406ebd:	e8 af 77 00 00       	call   0x40e671
406ec2:	59                   	pop    %ecx
406ec3:	59                   	pop    %ecx
406ec4:	85 c0                	test   %eax,%eax
406ec6:	74 1c                	je     0x406ee4
406ec8:	ff 77 18             	push   0x18(%edi)
406ecb:	e8 a1 77 00 00       	call   0x40e671
406ed0:	59                   	pop    %ecx
406ed1:	85 c0                	test   %eax,%eax
406ed3:	74 0f                	je     0x406ee4
406ed5:	f6 07 04             	testb  $0x4,(%edi)
406ed8:	6a 00                	push   $0x0
406eda:	58                   	pop    %eax
406edb:	0f 95 c0             	setne  %al
406ede:	40                   	inc    %eax
406edf:	89 45 e4             	mov    %eax,-0x1c(%ebp)
406ee2:	eb 05                	jmp    0x406ee9
406ee4:	e8 6c 59 00 00       	call   0x40c855
406ee9:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406ef0:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406ef3:	eb 0e                	jmp    0x406f03
406ef5:	33 c0                	xor    %eax,%eax
406ef7:	40                   	inc    %eax
406ef8:	c3                   	ret
406ef9:	8b 65 e8             	mov    -0x18(%ebp),%esp
406efc:	e9 08 59 00 00       	jmp    0x40c809
406f01:	33 c0                	xor    %eax,%eax
406f03:	e8 85 67 00 00       	call   0x40d68d
406f08:	c3                   	ret
406f09:	6a 08                	push   $0x8
406f0b:	68 78 a9 41 00       	push   $0x41a978
406f10:	e8 33 67 00 00       	call   0x40d648
406f15:	8b 45 10             	mov    0x10(%ebp),%eax
406f18:	f7 00 00 00 00 80    	testl  $0x80000000,(%eax)
406f1e:	74 05                	je     0x406f25
406f20:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406f23:	eb 0a                	jmp    0x406f2f
406f25:	8b 48 08             	mov    0x8(%eax),%ecx
406f28:	8b 55 0c             	mov    0xc(%ebp),%edx
406f2b:	8d 5c 11 0c          	lea    0xc(%ecx,%edx,1),%ebx
406f2f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406f33:	8b 75 14             	mov    0x14(%ebp),%esi
406f36:	56                   	push   %esi
406f37:	50                   	push   %eax
406f38:	ff 75 0c             	push   0xc(%ebp)
406f3b:	8b 7d 08             	mov    0x8(%ebp),%edi
406f3e:	57                   	push   %edi
406f3f:	e8 46 fe ff ff       	call   0x406d8a
406f44:	83 c4 10             	add    $0x10,%esp
406f47:	48                   	dec    %eax
406f48:	74 1f                	je     0x406f69
406f4a:	48                   	dec    %eax
406f4b:	75 34                	jne    0x406f81
406f4d:	6a 01                	push   $0x1
406f4f:	8d 46 08             	lea    0x8(%esi),%eax
406f52:	50                   	push   %eax
406f53:	ff 77 18             	push   0x18(%edi)
406f56:	e8 99 fb ff ff       	call   0x406af4
406f5b:	59                   	pop    %ecx
406f5c:	59                   	pop    %ecx
406f5d:	50                   	push   %eax
406f5e:	ff 76 18             	push   0x18(%esi)
406f61:	53                   	push   %ebx
406f62:	e8 55 f1 ff ff       	call   0x4060bc
406f67:	eb 18                	jmp    0x406f81
406f69:	8d 46 08             	lea    0x8(%esi),%eax
406f6c:	50                   	push   %eax
406f6d:	ff 77 18             	push   0x18(%edi)
406f70:	e8 7f fb ff ff       	call   0x406af4
406f75:	59                   	pop    %ecx
406f76:	59                   	pop    %ecx
406f77:	50                   	push   %eax
406f78:	ff 76 18             	push   0x18(%esi)
406f7b:	53                   	push   %ebx
406f7c:	e8 3b f1 ff ff       	call   0x4060bc
406f81:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406f88:	e8 00 67 00 00       	call   0x40d68d
406f8d:	c3                   	ret
406f8e:	33 c0                	xor    %eax,%eax
406f90:	40                   	inc    %eax
406f91:	c3                   	ret
406f92:	8b 65 e8             	mov    -0x18(%ebp),%esp
406f95:	e9 6f 58 00 00       	jmp    0x40c809
406f9a:	55                   	push   %ebp
406f9b:	8b ec                	mov    %esp,%ebp
406f9d:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
406fa1:	74 10                	je     0x406fb3
406fa3:	ff 75 18             	push   0x18(%ebp)
406fa6:	53                   	push   %ebx
406fa7:	56                   	push   %esi
406fa8:	ff 75 08             	push   0x8(%ebp)
406fab:	e8 59 ff ff ff       	call   0x406f09
406fb0:	83 c4 10             	add    $0x10,%esp
406fb3:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
406fb7:	ff 75 08             	push   0x8(%ebp)
406fba:	75 03                	jne    0x406fbf
406fbc:	56                   	push   %esi
406fbd:	eb 03                	jmp    0x406fc2
406fbf:	ff 75 20             	push   0x20(%ebp)
406fc2:	e8 fc f0 ff ff       	call   0x4060c3
406fc7:	ff 37                	push   (%edi)
406fc9:	ff 75 14             	push   0x14(%ebp)
406fcc:	ff 75 10             	push   0x10(%ebp)
406fcf:	56                   	push   %esi
406fd0:	e8 a5 f9 ff ff       	call   0x40697a
406fd5:	8b 47 04             	mov    0x4(%edi),%eax
406fd8:	68 00 01 00 00       	push   $0x100
406fdd:	ff 75 1c             	push   0x1c(%ebp)
406fe0:	40                   	inc    %eax
406fe1:	ff 75 14             	push   0x14(%ebp)
406fe4:	89 46 08             	mov    %eax,0x8(%esi)
406fe7:	ff 75 0c             	push   0xc(%ebp)
406fea:	8b 4b 0c             	mov    0xc(%ebx),%ecx
406fed:	56                   	push   %esi
406fee:	ff 75 08             	push   0x8(%ebp)
406ff1:	e8 f8 fb ff ff       	call   0x406bee
406ff6:	83 c4 28             	add    $0x28,%esp
406ff9:	85 c0                	test   %eax,%eax
406ffb:	74 07                	je     0x407004
406ffd:	56                   	push   %esi
406ffe:	50                   	push   %eax
406fff:	e8 88 f0 ff ff       	call   0x40608c
407004:	5d                   	pop    %ebp
407005:	c3                   	ret
407006:	55                   	push   %ebp
407007:	8b ec                	mov    %esp,%ebp
407009:	51                   	push   %ecx
40700a:	51                   	push   %ecx
40700b:	56                   	push   %esi
40700c:	8b 75 08             	mov    0x8(%ebp),%esi
40700f:	81 3e 03 00 00 80    	cmpl   $0x80000003,(%esi)
407015:	0f 84 da 00 00 00    	je     0x4070f5
40701b:	57                   	push   %edi
40701c:	e8 2b 55 00 00       	call   0x40c54c
407021:	83 b8 80 00 00 00 00 	cmpl   $0x0,0x80(%eax)
407028:	74 3f                	je     0x407069
40702a:	e8 1d 55 00 00       	call   0x40c54c
40702f:	8d b8 80 00 00 00    	lea    0x80(%eax),%edi
407035:	e8 ff 52 00 00       	call   0x40c339
40703a:	39 07                	cmp    %eax,(%edi)
40703c:	74 2b                	je     0x407069
40703e:	81 3e 4d 4f 43 e0    	cmpl   $0xe0434f4d,(%esi)
407044:	74 23                	je     0x407069
407046:	ff 75 24             	push   0x24(%ebp)
407049:	ff 75 20             	push   0x20(%ebp)
40704c:	ff 75 18             	push   0x18(%ebp)
40704f:	ff 75 14             	push   0x14(%ebp)
407052:	ff 75 10             	push   0x10(%ebp)
407055:	ff 75 0c             	push   0xc(%ebp)
407058:	56                   	push   %esi
407059:	e8 1d f1 ff ff       	call   0x40617b
40705e:	83 c4 1c             	add    $0x1c,%esp
407061:	85 c0                	test   %eax,%eax
407063:	0f 85 8b 00 00 00    	jne    0x4070f4
407069:	8b 7d 18             	mov    0x18(%ebp),%edi
40706c:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
407070:	75 05                	jne    0x407077
407072:	e8 de 57 00 00       	call   0x40c855
407077:	8b 75 1c             	mov    0x1c(%ebp),%esi
40707a:	8d 45 f8             	lea    -0x8(%ebp),%eax
40707d:	50                   	push   %eax
40707e:	8d 45 fc             	lea    -0x4(%ebp),%eax
407081:	50                   	push   %eax
407082:	56                   	push   %esi
407083:	ff 75 20             	push   0x20(%ebp)
407086:	57                   	push   %edi
407087:	e8 61 f2 ff ff       	call   0x4062ed
40708c:	8b f8                	mov    %eax,%edi
40708e:	8b 45 fc             	mov    -0x4(%ebp),%eax
407091:	83 c4 14             	add    $0x14,%esp
407094:	3b 45 f8             	cmp    -0x8(%ebp),%eax
407097:	73 5b                	jae    0x4070f4
407099:	53                   	push   %ebx
40709a:	3b 37                	cmp    (%edi),%esi
40709c:	7c 47                	jl     0x4070e5
40709e:	3b 77 04             	cmp    0x4(%edi),%esi
4070a1:	7f 42                	jg     0x4070e5
4070a3:	8b 47 0c             	mov    0xc(%edi),%eax
4070a6:	8b 4f 10             	mov    0x10(%edi),%ecx
4070a9:	c1 e0 04             	shl    $0x4,%eax
4070ac:	03 c1                	add    %ecx,%eax
4070ae:	8b 48 f4             	mov    -0xc(%eax),%ecx
4070b1:	85 c9                	test   %ecx,%ecx
4070b3:	74 06                	je     0x4070bb
4070b5:	80 79 08 00          	cmpb   $0x0,0x8(%ecx)
4070b9:	75 2a                	jne    0x4070e5
4070bb:	8d 58 f0             	lea    -0x10(%eax),%ebx
4070be:	f6 03 40             	testb  $0x40,(%ebx)
4070c1:	75 22                	jne    0x4070e5
4070c3:	ff 75 24             	push   0x24(%ebp)
4070c6:	8b 75 0c             	mov    0xc(%ebp),%esi
4070c9:	ff 75 20             	push   0x20(%ebp)
4070cc:	6a 00                	push   $0x0
4070ce:	ff 75 18             	push   0x18(%ebp)
4070d1:	ff 75 14             	push   0x14(%ebp)
4070d4:	ff 75 10             	push   0x10(%ebp)
4070d7:	ff 75 08             	push   0x8(%ebp)
4070da:	e8 bb fe ff ff       	call   0x406f9a
4070df:	8b 75 1c             	mov    0x1c(%ebp),%esi
4070e2:	83 c4 1c             	add    $0x1c,%esp
4070e5:	ff 45 fc             	incl   -0x4(%ebp)
4070e8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070eb:	83 c7 14             	add    $0x14,%edi
4070ee:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4070f1:	72 a7                	jb     0x40709a
4070f3:	5b                   	pop    %ebx
4070f4:	5f                   	pop    %edi
4070f5:	5e                   	pop    %esi
4070f6:	c9                   	leave
4070f7:	c3                   	ret
4070f8:	55                   	push   %ebp
4070f9:	8b ec                	mov    %esp,%ebp
4070fb:	83 ec 2c             	sub    $0x2c,%esp
4070fe:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407101:	53                   	push   %ebx
407102:	8b 5d 18             	mov    0x18(%ebp),%ebx
407105:	8b 43 04             	mov    0x4(%ebx),%eax
407108:	3d 80 00 00 00       	cmp    $0x80,%eax
40710d:	56                   	push   %esi