408cff:	85 c0                	test   %eax,%eax
408d01:	74 26                	je     0x408d29
408d03:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
408d07:	eb 20                	jmp    0x408d29
408d09:	8b 97 04 04 00 00    	mov    0x404(%edi),%edx
408d0f:	85 d2                	test   %edx,%edx
408d11:	75 02                	jne    0x408d15
408d13:	8b d7                	mov    %edi,%edx
408d15:	8b 4e 10             	mov    0x10(%esi),%ecx
408d18:	8d 41 04             	lea    0x4(%ecx),%eax
408d1b:	89 46 10             	mov    %eax,0x10(%esi)
408d1e:	8a 01                	mov    (%ecx),%al
408d20:	88 02                	mov    %al,(%edx)
408d22:	c7 46 34 01 00 00 00 	movl   $0x1,0x34(%esi)
408d29:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
408d2f:	85 c0                	test   %eax,%eax
408d31:	74 02                	je     0x408d35
408d33:	8b f8                	mov    %eax,%edi
408d35:	89 7e 30             	mov    %edi,0x30(%esi)
408d38:	b0 01                	mov    $0x1,%al
408d3a:	5f                   	pop    %edi
408d3b:	5e                   	pop    %esi
408d3c:	c2 04 00             	ret    $0x4
408d3f:	8b ff                	mov    %edi,%edi
408d41:	56                   	push   %esi
408d42:	8b f1                	mov    %ecx,%esi
408d44:	57                   	push   %edi
408d45:	8b 56 10             	mov    0x10(%esi),%edx
408d48:	8d 42 04             	lea    0x4(%edx),%eax
408d4b:	89 46 10             	mov    %eax,0x10(%esi)
408d4e:	8b 3a                	mov    (%edx),%edi
408d50:	e8 b4 51 00 00       	call   0x40df09
408d55:	85 c0                	test   %eax,%eax
408d57:	75 24                	jne    0x408d7d
408d59:	8b 46 08             	mov    0x8(%esi),%eax
408d5c:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
408d60:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
408d67:	33 c0                	xor    %eax,%eax
408d69:	ff 76 08             	push   0x8(%esi)
408d6c:	50                   	push   %eax
408d6d:	50                   	push   %eax
408d6e:	50                   	push   %eax
408d6f:	50                   	push   %eax
408d70:	50                   	push   %eax
408d71:	e8 d6 e6 ff ff       	call   0x40744c
408d76:	83 c4 18             	add    $0x18,%esp
408d79:	32 c0                	xor    %al,%al
408d7b:	eb 44                	jmp    0x408dc1
408d7d:	ff 76 28             	push   0x28(%esi)
408d80:	e8 dd fc ff ff       	call   0x408a62
408d85:	59                   	pop    %ecx
408d86:	83 e8 01             	sub    $0x1,%eax
408d89:	74 2b                	je     0x408db6
408d8b:	83 e8 01             	sub    $0x1,%eax
408d8e:	74 1d                	je     0x408dad
408d90:	48                   	dec    %eax
408d91:	83 e8 01             	sub    $0x1,%eax
408d94:	74 10                	je     0x408da6
408d96:	83 e8 04             	sub    $0x4,%eax
408d99:	75 be                	jne    0x408d59
408d9b:	8b 46 14             	mov    0x14(%esi),%eax
408d9e:	99                   	cltd
408d9f:	89 07                	mov    %eax,(%edi)
408da1:	89 57 04             	mov    %edx,0x4(%edi)
408da4:	eb 15                	jmp    0x408dbb
408da6:	8b 46 14             	mov    0x14(%esi),%eax
408da9:	89 07                	mov    %eax,(%edi)
408dab:	eb 0e                	jmp    0x408dbb
408dad:	66 8b 46 14          	mov    0x14(%esi),%ax
408db1:	66 89 07             	mov    %ax,(%edi)
408db4:	eb 05                	jmp    0x408dbb
408db6:	8a 46 14             	mov    0x14(%esi),%al
408db9:	88 07                	mov    %al,(%edi)
408dbb:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
408dbf:	b0 01                	mov    $0x1,%al
408dc1:	5f                   	pop    %edi
408dc2:	5e                   	pop    %esi
408dc3:	c3                   	ret
408dc4:	8b 51 1c             	mov    0x1c(%ecx),%edx
408dc7:	8b c2                	mov    %edx,%eax
408dc9:	c1 e8 05             	shr    $0x5,%eax
408dcc:	a8 01                	test   $0x1,%al
408dce:	74 09                	je     0x408dd9
408dd0:	81 ca 80 00 00 00    	or     $0x80,%edx
408dd6:	89 51 1c             	mov    %edx,0x1c(%ecx)
408dd9:	6a 00                	push   $0x0
408ddb:	e8 d0 ea ff ff       	call   0x4078b0
408de0:	c3                   	ret
408de1:	6a 01                	push   $0x1
408de3:	c7 41 24 08 00 00 00 	movl   $0x8,0x24(%ecx)
408dea:	c7 41 28 0a 00 00 00 	movl   $0xa,0x28(%ecx)
408df1:	e8 d4 ed ff ff       	call   0x407bca
408df6:	c3                   	ret
408df7:	8b ff                	mov    %edi,%edi
408df9:	53                   	push   %ebx
408dfa:	56                   	push   %esi
408dfb:	8b f1                	mov    %ecx,%esi
408dfd:	57                   	push   %edi
408dfe:	8b 56 10             	mov    0x10(%esi),%edx
408e01:	8d 42 04             	lea    0x4(%edx),%eax
408e04:	89 46 10             	mov    %eax,0x10(%esi)
408e07:	8b 5e 24             	mov    0x24(%esi),%ebx
408e0a:	8b 3a                	mov    (%edx),%edi
408e0c:	89 7e 30             	mov    %edi,0x30(%esi)
408e0f:	83 fb ff             	cmp    $0xffffffff,%ebx
408e12:	75 05                	jne    0x408e19
408e14:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
408e19:	ff 76 28             	push   0x28(%esi)
408e1c:	0f b6 46 2d          	movzbl 0x2d(%esi),%eax
408e20:	50                   	push   %eax
408e21:	ff 76 04             	push   0x4(%esi)
408e24:	ff 36                	push   (%esi)
408e26:	e8 27 e8 ff ff       	call   0x407652
408e2b:	83 c4 10             	add    $0x10,%esp
408e2e:	84 c0                	test   %al,%al
408e30:	74 19                	je     0x408e4b
408e32:	85 ff                	test   %edi,%edi
408e34:	75 08                	jne    0x408e3e
408e36:	bf b8 a1 41 00       	mov    $0x41a1b8,%edi
408e3b:	89 7e 30             	mov    %edi,0x30(%esi)
408e3e:	53                   	push   %ebx
408e3f:	57                   	push   %edi
408e40:	c6 46 38 01          	movb   $0x1,0x38(%esi)
408e44:	e8 56 e1 ff ff       	call   0x406f9f
408e49:	eb 13                	jmp    0x408e5e
408e4b:	85 ff                	test   %edi,%edi
408e4d:	75 08                	jne    0x408e57
408e4f:	bf c8 a1 41 00       	mov    $0x41a1c8,%edi
408e54:	89 7e 30             	mov    %edi,0x30(%esi)
408e57:	53                   	push   %ebx
408e58:	57                   	push   %edi
408e59:	e8 f7 de ff ff       	call   0x406d55
408e5e:	59                   	pop    %ecx
408e5f:	59                   	pop    %ecx
408e60:	5f                   	pop    %edi
408e61:	89 46 34             	mov    %eax,0x34(%esi)
408e64:	b0 01                	mov    $0x1,%al
408e66:	5e                   	pop    %esi
408e67:	5b                   	pop    %ebx
408e68:	c3                   	ret
408e69:	8b ff                	mov    %edi,%edi
408e6b:	55                   	push   %ebp
408e6c:	8b ec                	mov    %esp,%ebp
408e6e:	8b 01                	mov    (%ecx),%eax
408e70:	48                   	dec    %eax
408e71:	89 01                	mov    %eax,(%ecx)
408e73:	8a 4d 08             	mov    0x8(%ebp),%cl
408e76:	84 c9                	test   %cl,%cl
408e78:	74 14                	je     0x408e8e
408e7a:	38 08                	cmp    %cl,(%eax)
408e7c:	74 10                	je     0x408e8e
408e7e:	e8 ac 18 00 00       	call   0x40a72f
408e83:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408e89:	e8 3b e6 ff ff       	call   0x4074c9
408e8e:	5d                   	pop    %ebp
408e8f:	c2 04 00             	ret    $0x4
408e92:	cc                   	int3
408e93:	cc                   	int3
408e94:	cc                   	int3
408e95:	cc                   	int3
408e96:	cc                   	int3
408e97:	cc                   	int3
408e98:	cc                   	int3
408e99:	cc                   	int3
408e9a:	cc                   	int3
408e9b:	cc                   	int3
408e9c:	cc                   	int3
408e9d:	cc                   	int3
408e9e:	cc                   	int3
408e9f:	cc                   	int3
408ea0:	8b ff                	mov    %edi,%edi
408ea2:	55                   	push   %ebp
408ea3:	8b ec                	mov    %esp,%ebp
408ea5:	51                   	push   %ecx
408ea6:	53                   	push   %ebx
408ea7:	56                   	push   %esi
408ea8:	57                   	push   %edi
408ea9:	8b d9                	mov    %ecx,%ebx
408eab:	e8 d0 d9 ff ff       	call   0x406880
408eb0:	ff 73 04             	push   0x4(%ebx)
408eb3:	8d 73 0c             	lea    0xc(%ebx),%esi
408eb6:	89 45 fc             	mov    %eax,-0x4(%ebp)
408eb9:	56                   	push   %esi
408eba:	8b 50 4c             	mov    0x4c(%eax),%edx
408ebd:	8d 7b 10             	lea    0x10(%ebx),%edi
408ec0:	89 16                	mov    %edx,(%esi)
408ec2:	8b 50 48             	mov    0x48(%eax),%edx
408ec5:	50                   	push   %eax
408ec6:	89 17                	mov    %edx,(%edi)
408ec8:	e8 80 41 00 00       	call   0x40d04d
408ecd:	ff 73 04             	push   0x4(%ebx)
408ed0:	8b 75 fc             	mov    -0x4(%ebp),%esi
408ed3:	57                   	push   %edi
408ed4:	56                   	push   %esi
408ed5:	e8 d1 41 00 00       	call   0x40d0ab
408eda:	8b 86 50 03 00 00    	mov    0x350(%esi),%eax
408ee0:	83 c4 18             	add    $0x18,%esp
408ee3:	a8 02                	test   $0x2,%al
408ee5:	75 0d                	jne    0x408ef4
408ee7:	83 c8 02             	or     $0x2,%eax
408eea:	89 86 50 03 00 00    	mov    %eax,0x350(%esi)
408ef0:	c6 43 14 02          	movb   $0x2,0x14(%ebx)
408ef4:	5f                   	pop    %edi
408ef5:	5e                   	pop    %esi
408ef6:	5b                   	pop    %ebx
408ef7:	8b e5                	mov    %ebp,%esp
408ef9:	5d                   	pop    %ebp
408efa:	c3                   	ret
408efb:	83 39 00             	cmpl   $0x0,(%ecx)
408efe:	75 13                	jne    0x408f13
408f00:	e8 2a 18 00 00       	call   0x40a72f
408f05:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408f0b:	e8 b9 e5 ff ff       	call   0x4074c9
408f10:	32 c0                	xor    %al,%al
408f12:	c3                   	ret
408f13:	b0 01                	mov    $0x1,%al
408f15:	c3                   	ret
408f16:	8b ff                	mov    %edi,%edi
408f18:	55                   	push   %ebp
408f19:	8b ec                	mov    %esp,%ebp
408f1b:	8b 01                	mov    (%ecx),%eax
408f1d:	85 c0                	test   %eax,%eax
408f1f:	75 22                	jne    0x408f43
408f21:	8b 45 08             	mov    0x8(%ebp),%eax
408f24:	50                   	push   %eax
408f25:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
408f29:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
408f30:	33 c0                	xor    %eax,%eax
408f32:	50                   	push   %eax
408f33:	50                   	push   %eax
408f34:	50                   	push   %eax
408f35:	50                   	push   %eax
408f36:	50                   	push   %eax
408f37:	e8 10 e5 ff ff       	call   0x40744c
408f3c:	83 c4 18             	add    $0x18,%esp
408f3f:	32 c0                	xor    %al,%al
408f41:	eb 07                	jmp    0x408f4a
408f43:	50                   	push   %eax
408f44:	e8 7a dd ff ff       	call   0x406cc3
408f49:	59                   	pop    %ecx
408f4a:	5d                   	pop    %ebp
408f4b:	c2 04 00             	ret    $0x4
408f4e:	8b ff                	mov    %edi,%edi
408f50:	55                   	push   %ebp
408f51:	8b ec                	mov    %esp,%ebp
408f53:	ff 75 10             	push   0x10(%ebp)
408f56:	ff 75 08             	push   0x8(%ebp)
408f59:	e8 12 00 00 00       	call   0x408f70
408f5e:	84 c0                	test   %al,%al
408f60:	8b 45 0c             	mov    0xc(%ebp),%eax
408f63:	74 04                	je     0x408f69
408f65:	ff 00                	incl   (%eax)
408f67:	eb 03                	jmp    0x408f6c
408f69:	83 08 ff             	orl    $0xffffffff,(%eax)
408f6c:	5d                   	pop    %ebp
408f6d:	c2 0c 00             	ret    $0xc
408f70:	8b ff                	mov    %edi,%edi
408f72:	55                   	push   %ebp
408f73:	8b ec                	mov    %esp,%ebp
408f75:	8b 01                	mov    (%ecx),%eax
408f77:	8b 40 0c             	mov    0xc(%eax),%eax
408f7a:	90                   	nop
408f7b:	c1 e8 0c             	shr    $0xc,%eax
408f7e:	a8 01                	test   $0x1,%al
408f80:	74 0c                	je     0x408f8e
408f82:	8b 01                	mov    (%ecx),%eax
408f84:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
408f88:	75 04                	jne    0x408f8e
408f8a:	b0 01                	mov    $0x1,%al
408f8c:	eb 18                	jmp    0x408fa6
408f8e:	ff 75 0c             	push   0xc(%ebp)
408f91:	0f be 45 08          	movsbl 0x8(%ebp),%eax
408f95:	ff 31                	push   (%ecx)
408f97:	50                   	push   %eax
408f98:	e8 81 4f 00 00       	call   0x40df1e
408f9d:	83 c4 0c             	add    $0xc,%esp
408fa0:	83 f8 ff             	cmp    $0xffffffff,%eax
408fa3:	0f 95 c0             	setne  %al
408fa6:	5d                   	pop    %ebp
408fa7:	c2 08 00             	ret    $0x8
408faa:	8b ff                	mov    %edi,%edi
408fac:	55                   	push   %ebp
408fad:	8b ec                	mov    %esp,%ebp
408faf:	8b 01                	mov    (%ecx),%eax
408fb1:	8b 40 0c             	mov    0xc(%eax),%eax
408fb4:	90                   	nop
408fb5:	c1 e8 0c             	shr    $0xc,%eax
408fb8:	a8 01                	test   $0x1,%al
408fba:	74 14                	je     0x408fd0
408fbc:	8b 01                	mov    (%ecx),%eax
408fbe:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
408fc2:	75 0c                	jne    0x408fd0
408fc4:	8b 4d 10             	mov    0x10(%ebp),%ecx
408fc7:	8b 45 0c             	mov    0xc(%ebp),%eax
408fca:	01 01                	add    %eax,(%ecx)
408fcc:	5d                   	pop    %ebp
408fcd:	c2 10 00             	ret    $0x10
408fd0:	5d                   	pop    %ebp
408fd1:	e9 00 00 00 00       	jmp    0x408fd6
408fd6:	8b ff                	mov    %edi,%edi
408fd8:	55                   	push   %ebp
408fd9:	8b ec                	mov    %esp,%ebp
408fdb:	83 ec 10             	sub    $0x10,%esp
408fde:	53                   	push   %ebx
408fdf:	8b 5d 08             	mov    0x8(%ebp),%ebx
408fe2:	56                   	push   %esi
408fe3:	8b 75 14             	mov    0x14(%ebp),%esi
408fe6:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408fe9:	8b 46 18             	mov    0x18(%esi),%eax
408fec:	89 45 f4             	mov    %eax,-0xc(%ebp)
408fef:	8b 46 1c             	mov    0x1c(%esi),%eax
408ff2:	89 45 f0             	mov    %eax,-0x10(%ebp)
408ff5:	8b 45 0c             	mov    0xc(%ebp),%eax
408ff8:	03 c3                	add    %ebx,%eax
408ffa:	89 45 f8             	mov    %eax,-0x8(%ebp)
408ffd:	3b d8                	cmp    %eax,%ebx
408fff:	74 42                	je     0x409043
409001:	57                   	push   %edi
409002:	8b 7d 10             	mov    0x10(%ebp),%edi
409005:	0f b6 03             	movzbl (%ebx),%eax
409008:	56                   	push   %esi
409009:	50                   	push   %eax
40900a:	e8 61 ff ff ff       	call   0x408f70
40900f:	84 c0                	test   %al,%al
409011:	75 1a                	jne    0x40902d
409013:	38 46 1c             	cmp    %al,0x1c(%esi)
409016:	74 27                	je     0x40903f
409018:	83 7e 18 2a          	cmpl   $0x2a,0x18(%esi)
40901c:	75 21                	jne    0x40903f
40901e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409021:	56                   	push   %esi
409022:	6a 3f                	push   $0x3f
409024:	e8 47 ff ff ff       	call   0x408f70
409029:	84 c0                	test   %al,%al
40902b:	74 04                	je     0x409031
40902d:	ff 07                	incl   (%edi)
40902f:	eb 03                	jmp    0x409034
409031:	83 0f ff             	orl    $0xffffffff,(%edi)
409034:	43                   	inc    %ebx
409035:	3b 5d f8             	cmp    -0x8(%ebp),%ebx
409038:	74 08                	je     0x409042
40903a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40903d:	eb c6                	jmp    0x409005
40903f:	83 0f ff             	orl    $0xffffffff,(%edi)
409042:	5f                   	pop    %edi
409043:	8b 45 f4             	mov    -0xc(%ebp),%eax
409046:	89 46 18             	mov    %eax,0x18(%esi)
409049:	8b 45 f0             	mov    -0x10(%ebp),%eax
40904c:	89 46 1c             	mov    %eax,0x1c(%esi)
40904f:	5e                   	pop    %esi