408d92:	56                   	push   %esi
408d93:	50                   	push   %eax
408d94:	56                   	push   %esi
408d95:	ff 75 e4             	push   -0x1c(%ebp)
408d98:	57                   	push   %edi
408d99:	ff 75 0c             	push   0xc(%ebp)
408d9c:	ff d3                	call   *%ebx
408d9e:	3b c7                	cmp    %edi,%eax
408da0:	75 0e                	jne    0x408db0
408da2:	ff 75 e0             	push   -0x20(%ebp)
408da5:	e8 f9 bf ff ff       	call   0x404da3
408daa:	59                   	pop    %ecx
408dab:	89 7d e0             	mov    %edi,-0x20(%ebp)
408dae:	eb 0b                	jmp    0x408dbb
408db0:	83 7d dc ff          	cmpl   $0xffffffff,-0x24(%ebp)
408db4:	74 05                	je     0x408dbb
408db6:	8b 4d d0             	mov    -0x30(%ebp),%ecx
408db9:	89 01                	mov    %eax,(%ecx)
408dbb:	ff 75 e4             	push   -0x1c(%ebp)
408dbe:	e8 22 e2 ff ff       	call   0x406fe5
408dc3:	59                   	pop    %ecx
408dc4:	8b 45 e0             	mov    -0x20(%ebp),%eax
408dc7:	8d 65 c0             	lea    -0x40(%ebp),%esp
408dca:	5f                   	pop    %edi
408dcb:	5e                   	pop    %esi
408dcc:	5b                   	pop    %ebx
408dcd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408dd0:	33 cd                	xor    %ebp,%ecx
408dd2:	e8 29 82 ff ff       	call   0x401000
408dd7:	c9                   	leave
408dd8:	c3                   	ret
408dd9:	8b ff                	mov    %edi,%edi
408ddb:	55                   	push   %ebp
408ddc:	8b ec                	mov    %esp,%ebp
408dde:	83 ec 10             	sub    $0x10,%esp
408de1:	ff 75 0c             	push   0xc(%ebp)
408de4:	8d 4d f0             	lea    -0x10(%ebp),%ecx
408de7:	e8 e2 b7 ff ff       	call   0x4045ce
408dec:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
408df0:	8b 4d f0             	mov    -0x10(%ebp),%ecx
408df3:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
408df9:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
408dfd:	25 00 80 00 00       	and    $0x8000,%eax
408e02:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
408e06:	74 07                	je     0x408e0f
408e08:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408e0b:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
408e0f:	c9                   	leave
408e10:	c3                   	ret
408e11:	8b ff                	mov    %edi,%edi
408e13:	55                   	push   %ebp
408e14:	8b ec                	mov    %esp,%ebp
408e16:	6a 0a                	push   $0xa
408e18:	6a 00                	push   $0x0
408e1a:	ff 75 08             	push   0x8(%ebp)
408e1d:	e8 48 21 00 00       	call   0x40af6a
408e22:	83 c4 0c             	add    $0xc,%esp
408e25:	5d                   	pop    %ebp
408e26:	c3                   	ret
408e27:	8b ff                	mov    %edi,%edi
408e29:	55                   	push   %ebp
408e2a:	8b ec                	mov    %esp,%ebp
408e2c:	83 ec 2c             	sub    $0x2c,%esp
408e2f:	8b 45 08             	mov    0x8(%ebp),%eax
408e32:	0f b7 48 0a          	movzwl 0xa(%eax),%ecx
408e36:	53                   	push   %ebx
408e37:	8b d9                	mov    %ecx,%ebx
408e39:	81 e1 00 80 00 00    	and    $0x8000,%ecx
408e3f:	89 4d ec             	mov    %ecx,-0x14(%ebp)
408e42:	8b 48 06             	mov    0x6(%eax),%ecx
408e45:	89 4d e0             	mov    %ecx,-0x20(%ebp)
408e48:	8b 48 02             	mov    0x2(%eax),%ecx
408e4b:	0f b7 00             	movzwl (%eax),%eax
408e4e:	81 e3 ff 7f 00 00    	and    $0x7fff,%ebx
408e54:	81 eb ff 3f 00 00    	sub    $0x3fff,%ebx
408e5a:	c1 e0 10             	shl    $0x10,%eax
408e5d:	57                   	push   %edi
408e5e:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
408e61:	89 45 e8             	mov    %eax,-0x18(%ebp)
408e64:	81 fb 01 c0 ff ff    	cmp    $0xffffc001,%ebx
408e6a:	75 27                	jne    0x408e93
408e6c:	33 db                	xor    %ebx,%ebx
408e6e:	33 c0                	xor    %eax,%eax
408e70:	39 5c 85 e0          	cmp    %ebx,-0x20(%ebp,%eax,4)
408e74:	75 0d                	jne    0x408e83
408e76:	40                   	inc    %eax
408e77:	83 f8 03             	cmp    $0x3,%eax
408e7a:	7c f4                	jl     0x408e70
408e7c:	33 c0                	xor    %eax,%eax
408e7e:	e9 a5 04 00 00       	jmp    0x409328
408e83:	33 c0                	xor    %eax,%eax
408e85:	8d 7d e0             	lea    -0x20(%ebp),%edi
408e88:	ab                   	stos   %eax,%es:(%edi)
408e89:	ab                   	stos   %eax,%es:(%edi)
408e8a:	6a 02                	push   $0x2
408e8c:	ab                   	stos   %eax,%es:(%edi)
408e8d:	58                   	pop    %eax
408e8e:	e9 95 04 00 00       	jmp    0x409328
408e93:	83 65 08 00          	andl   $0x0,0x8(%ebp)
408e97:	56                   	push   %esi
408e98:	8d 75 e0             	lea    -0x20(%ebp),%esi
408e9b:	8d 7d d4             	lea    -0x2c(%ebp),%edi
408e9e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408e9f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408ea0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408ea1:	8b 35 28 fd 41 00    	mov    0x41fd28,%esi
408ea7:	4e                   	dec    %esi
408ea8:	8d 4e 01             	lea    0x1(%esi),%ecx
408eab:	8b c1                	mov    %ecx,%eax
408ead:	99                   	cltd
408eae:	83 e2 1f             	and    $0x1f,%edx
408eb1:	03 c2                	add    %edx,%eax
408eb3:	c1 f8 05             	sar    $0x5,%eax
408eb6:	8b d1                	mov    %ecx,%edx
408eb8:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
408ebe:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408ec1:	89 45 f4             	mov    %eax,-0xc(%ebp)
408ec4:	79 05                	jns    0x408ecb
408ec6:	4a                   	dec    %edx
408ec7:	83 ca e0             	or     $0xffffffe0,%edx
408eca:	42                   	inc    %edx
408ecb:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
408ecf:	6a 1f                	push   $0x1f
408ed1:	33 c0                	xor    %eax,%eax
408ed3:	59                   	pop    %ecx
408ed4:	2b ca                	sub    %edx,%ecx
408ed6:	40                   	inc    %eax
408ed7:	d3 e0                	shl    %cl,%eax
408ed9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
408edc:	85 07                	test   %eax,(%edi)
408ede:	0f 84 8d 00 00 00    	je     0x408f71
408ee4:	8b 45 f4             	mov    -0xc(%ebp),%eax
408ee7:	83 ca ff             	or     $0xffffffff,%edx
408eea:	d3 e2                	shl    %cl,%edx
408eec:	f7 d2                	not    %edx
408eee:	85 54 85 e0          	test   %edx,-0x20(%ebp,%eax,4)
408ef2:	eb 05                	jmp    0x408ef9
408ef4:	83 7c 85 e0 00       	cmpl   $0x0,-0x20(%ebp,%eax,4)
408ef9:	75 08                	jne    0x408f03
408efb:	40                   	inc    %eax
408efc:	83 f8 03             	cmp    $0x3,%eax
408eff:	7c f3                	jl     0x408ef4
408f01:	eb 6e                	jmp    0x408f71
408f03:	8b c6                	mov    %esi,%eax
408f05:	99                   	cltd
408f06:	6a 1f                	push   $0x1f
408f08:	59                   	pop    %ecx
408f09:	23 d1                	and    %ecx,%edx
408f0b:	03 c2                	add    %edx,%eax
408f0d:	c1 f8 05             	sar    $0x5,%eax
408f10:	81 e6 1f 00 00 80    	and    $0x8000001f,%esi
408f16:	79 05                	jns    0x408f1d
408f18:	4e                   	dec    %esi
408f19:	83 ce e0             	or     $0xffffffe0,%esi
408f1c:	46                   	inc    %esi
408f1d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408f21:	2b ce                	sub    %esi,%ecx
408f23:	33 d2                	xor    %edx,%edx
408f25:	42                   	inc    %edx
408f26:	d3 e2                	shl    %cl,%edx
408f28:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
408f2c:	8b 31                	mov    (%ecx),%esi
408f2e:	03 f2                	add    %edx,%esi
408f30:	89 75 08             	mov    %esi,0x8(%ebp)
408f33:	8b 31                	mov    (%ecx),%esi
408f35:	39 75 08             	cmp    %esi,0x8(%ebp)
408f38:	72 22                	jb     0x408f5c
408f3a:	39 55 08             	cmp    %edx,0x8(%ebp)
408f3d:	eb 1b                	jmp    0x408f5a
408f3f:	85 c9                	test   %ecx,%ecx
408f41:	74 2b                	je     0x408f6e
408f43:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408f47:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
408f4b:	8b 11                	mov    (%ecx),%edx
408f4d:	8d 72 01             	lea    0x1(%edx),%esi
408f50:	89 75 08             	mov    %esi,0x8(%ebp)
408f53:	3b f2                	cmp    %edx,%esi
408f55:	72 05                	jb     0x408f5c
408f57:	83 fe 01             	cmp    $0x1,%esi
408f5a:	73 07                	jae    0x408f63
408f5c:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
408f63:	48                   	dec    %eax
408f64:	8b 55 08             	mov    0x8(%ebp),%edx
408f67:	89 11                	mov    %edx,(%ecx)
408f69:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408f6c:	79 d1                	jns    0x408f3f
408f6e:	89 4d 08             	mov    %ecx,0x8(%ebp)
408f71:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408f74:	83 c8 ff             	or     $0xffffffff,%eax
408f77:	d3 e0                	shl    %cl,%eax
408f79:	21 07                	and    %eax,(%edi)
408f7b:	8b 45 f4             	mov    -0xc(%ebp),%eax
408f7e:	40                   	inc    %eax
408f7f:	83 f8 03             	cmp    $0x3,%eax
408f82:	7d 0d                	jge    0x408f91
408f84:	6a 03                	push   $0x3
408f86:	59                   	pop    %ecx
408f87:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
408f8b:	2b c8                	sub    %eax,%ecx
408f8d:	33 c0                	xor    %eax,%eax
408f8f:	f3 ab                	rep stos %eax,%es:(%edi)
408f91:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
408f95:	74 01                	je     0x408f98
408f97:	43                   	inc    %ebx
408f98:	a1 24 fd 41 00       	mov    0x41fd24,%eax
408f9d:	8b c8                	mov    %eax,%ecx
408f9f:	2b 0d 28 fd 41 00    	sub    0x41fd28,%ecx
408fa5:	3b d9                	cmp    %ecx,%ebx
408fa7:	7d 0d                	jge    0x408fb6
408fa9:	33 c0                	xor    %eax,%eax
408fab:	8d 7d e0             	lea    -0x20(%ebp),%edi
408fae:	ab                   	stos   %eax,%es:(%edi)
408faf:	ab                   	stos   %eax,%es:(%edi)
408fb0:	ab                   	stos   %eax,%es:(%edi)
408fb1:	e9 0d 02 00 00       	jmp    0x4091c3
408fb6:	3b d8                	cmp    %eax,%ebx
408fb8:	0f 8f 0f 02 00 00    	jg     0x4091cd
408fbe:	2b 45 f0             	sub    -0x10(%ebp),%eax
408fc1:	8d 75 d4             	lea    -0x2c(%ebp),%esi
408fc4:	8b c8                	mov    %eax,%ecx
408fc6:	8d 7d e0             	lea    -0x20(%ebp),%edi
408fc9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408fca:	99                   	cltd
408fcb:	83 e2 1f             	and    $0x1f,%edx
408fce:	03 c2                	add    %edx,%eax
408fd0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408fd1:	8b d1                	mov    %ecx,%edx
408fd3:	c1 f8 05             	sar    $0x5,%eax
408fd6:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
408fdc:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408fdd:	79 05                	jns    0x408fe4
408fdf:	4a                   	dec    %edx
408fe0:	83 ca e0             	or     $0xffffffe0,%edx
408fe3:	42                   	inc    %edx
408fe4:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
408fe8:	83 65 08 00          	andl   $0x0,0x8(%ebp)
408fec:	83 cf ff             	or     $0xffffffff,%edi
408fef:	8b ca                	mov    %edx,%ecx
408ff1:	d3 e7                	shl    %cl,%edi
408ff3:	c7 45 fc 20 00 00 00 	movl   $0x20,-0x4(%ebp)
408ffa:	29 55 fc             	sub    %edx,-0x4(%ebp)
408ffd:	f7 d7                	not    %edi
408fff:	8b 5d 08             	mov    0x8(%ebp),%ebx
409002:	8d 5c 9d e0          	lea    -0x20(%ebp,%ebx,4),%ebx
409006:	8b 33                	mov    (%ebx),%esi
409008:	8b ce                	mov    %esi,%ecx
40900a:	23 cf                	and    %edi,%ecx
40900c:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40900f:	8b ca                	mov    %edx,%ecx
409011:	d3 ee                	shr    %cl,%esi
409013:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409016:	0b 75 f4             	or     -0xc(%ebp),%esi
409019:	89 33                	mov    %esi,(%ebx)
40901b:	8b 75 f0             	mov    -0x10(%ebp),%esi
40901e:	d3 e6                	shl    %cl,%esi
409020:	ff 45 08             	incl   0x8(%ebp)
409023:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
409027:	89 75 f4             	mov    %esi,-0xc(%ebp)
40902a:	7c d3                	jl     0x408fff
40902c:	8b f0                	mov    %eax,%esi
40902e:	6a 02                	push   $0x2
409030:	c1 e6 02             	shl    $0x2,%esi
409033:	8d 4d e8             	lea    -0x18(%ebp),%ecx
409036:	5a                   	pop    %edx
409037:	2b ce                	sub    %esi,%ecx
409039:	3b d0                	cmp    %eax,%edx
40903b:	7c 08                	jl     0x409045
40903d:	8b 31                	mov    (%ecx),%esi
40903f:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
409043:	eb 05                	jmp    0x40904a
409045:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
40904a:	4a                   	dec    %edx
40904b:	83 e9 04             	sub    $0x4,%ecx
40904e:	85 d2                	test   %edx,%edx
409050:	7d e7                	jge    0x409039
409052:	8b 35 28 fd 41 00    	mov    0x41fd28,%esi
409058:	4e                   	dec    %esi
409059:	8d 4e 01             	lea    0x1(%esi),%ecx
40905c:	8b c1                	mov    %ecx,%eax
40905e:	99                   	cltd
40905f:	83 e2 1f             	and    $0x1f,%edx
409062:	03 c2                	add    %edx,%eax
409064:	c1 f8 05             	sar    $0x5,%eax
409067:	8b d1                	mov    %ecx,%edx
409069:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
40906f:	89 45 f4             	mov    %eax,-0xc(%ebp)
409072:	79 05                	jns    0x409079
409074:	4a                   	dec    %edx
409075:	83 ca e0             	or     $0xffffffe0,%edx
409078:	42                   	inc    %edx
409079:	6a 1f                	push   $0x1f
40907b:	59                   	pop    %ecx
40907c:	2b ca                	sub    %edx,%ecx
40907e:	33 d2                	xor    %edx,%edx
409080:	42                   	inc    %edx
409081:	d3 e2                	shl    %cl,%edx
409083:	8d 5c 85 e0          	lea    -0x20(%ebp,%eax,4),%ebx
409087:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40908a:	85 13                	test   %edx,(%ebx)
40908c:	0f 84 82 00 00 00    	je     0x409114
409092:	83 ca ff             	or     $0xffffffff,%edx
409095:	d3 e2                	shl    %cl,%edx
409097:	f7 d2                	not    %edx
409099:	85 54 85 e0          	test   %edx,-0x20(%ebp,%eax,4)
40909d:	eb 05                	jmp    0x4090a4
40909f:	83 7c 85 e0 00       	cmpl   $0x0,-0x20(%ebp,%eax,4)
4090a4:	75 08                	jne    0x4090ae
4090a6:	40                   	inc    %eax
4090a7:	83 f8 03             	cmp    $0x3,%eax
4090aa:	7c f3                	jl     0x40909f
4090ac:	eb 66                	jmp    0x409114
4090ae:	8b c6                	mov    %esi,%eax
4090b0:	99                   	cltd
4090b1:	6a 1f                	push   $0x1f
4090b3:	59                   	pop    %ecx
4090b4:	23 d1                	and    %ecx,%edx
4090b6:	03 c2                	add    %edx,%eax
4090b8:	c1 f8 05             	sar    $0x5,%eax
4090bb:	81 e6 1f 00 00 80    	and    $0x8000001f,%esi
4090c1:	79 05                	jns    0x4090c8
4090c3:	4e                   	dec    %esi
4090c4:	83 ce e0             	or     $0xffffffe0,%esi
4090c7:	46                   	inc    %esi
4090c8:	83 65 08 00          	andl   $0x0,0x8(%ebp)
4090cc:	33 d2                	xor    %edx,%edx
4090ce:	2b ce                	sub    %esi,%ecx
4090d0:	42                   	inc    %edx
4090d1:	d3 e2                	shl    %cl,%edx
4090d3:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
4090d7:	8b 31                	mov    (%ecx),%esi
4090d9:	8d 3c 16             	lea    (%esi,%edx,1),%edi
4090dc:	3b fe                	cmp    %esi,%edi
4090de:	72 04                	jb     0x4090e4
4090e0:	3b fa                	cmp    %edx,%edi
4090e2:	73 07                	jae    0x4090eb
4090e4:	c7 45 08 01 00 00 00 	movl   $0x1,0x8(%ebp)
4090eb:	89 39                	mov    %edi,(%ecx)
4090ed:	8b 4d 08             	mov    0x8(%ebp),%ecx
4090f0:	eb 1f                	jmp    0x409111
4090f2:	85 c9                	test   %ecx,%ecx
4090f4:	74 1e                	je     0x409114
4090f6:	8d 4c 85 e0          	lea    -0x20(%ebp,%eax,4),%ecx
4090fa:	8b 11                	mov    (%ecx),%edx
4090fc:	8d 72 01             	lea    0x1(%edx),%esi
4090ff:	33 ff                	xor    %edi,%edi
409101:	3b f2                	cmp    %edx,%esi
409103:	72 05                	jb     0x40910a
409105:	83 fe 01             	cmp    $0x1,%esi
409108:	73 03                	jae    0x40910d
40910a:	33 ff                	xor    %edi,%edi