405dd0:	21 9c b8 c4 00 00 00 	and    %ebx,0xc4(%eax,%edi,4)
405dd7:	fe 09                	decb   (%ecx)
405dd9:	75 06                	jne    0x405de1
405ddb:	8b 4d 08             	mov    0x8(%ebp),%ecx
405dde:	21 59 04             	and    %ebx,0x4(%ecx)
405de1:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405de4:	8b 53 08             	mov    0x8(%ebx),%edx
405de7:	8b 5b 04             	mov    0x4(%ebx),%ebx
405dea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405ded:	03 4d f4             	add    -0xc(%ebp),%ecx
405df0:	89 5a 04             	mov    %ebx,0x4(%edx)
405df3:	8b 55 0c             	mov    0xc(%ebp),%edx
405df6:	8b 5a 04             	mov    0x4(%edx),%ebx
405df9:	8b 52 08             	mov    0x8(%edx),%edx
405dfc:	89 53 08             	mov    %edx,0x8(%ebx)
405dff:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405e02:	8b d1                	mov    %ecx,%edx
405e04:	c1 fa 04             	sar    $0x4,%edx
405e07:	4a                   	dec    %edx
405e08:	83 fa 3f             	cmp    $0x3f,%edx
405e0b:	76 03                	jbe    0x405e10
405e0d:	6a 3f                	push   $0x3f
405e0f:	5a                   	pop    %edx
405e10:	8b 5d f8             	mov    -0x8(%ebp),%ebx
405e13:	83 e3 01             	and    $0x1,%ebx
405e16:	89 5d f4             	mov    %ebx,-0xc(%ebp)
405e19:	0f 85 8f 00 00 00    	jne    0x405eae
405e1f:	2b 75 f8             	sub    -0x8(%ebp),%esi
405e22:	8b 5d f8             	mov    -0x8(%ebp),%ebx
405e25:	c1 fb 04             	sar    $0x4,%ebx
405e28:	6a 3f                	push   $0x3f
405e2a:	89 75 0c             	mov    %esi,0xc(%ebp)
405e2d:	4b                   	dec    %ebx
405e2e:	5e                   	pop    %esi
405e2f:	3b de                	cmp    %esi,%ebx
405e31:	76 02                	jbe    0x405e35
405e33:	8b de                	mov    %esi,%ebx
405e35:	03 4d f8             	add    -0x8(%ebp),%ecx
405e38:	8b d1                	mov    %ecx,%edx
405e3a:	c1 fa 04             	sar    $0x4,%edx
405e3d:	4a                   	dec    %edx
405e3e:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405e41:	3b d6                	cmp    %esi,%edx
405e43:	76 02                	jbe    0x405e47
405e45:	8b d6                	mov    %esi,%edx
405e47:	3b da                	cmp    %edx,%ebx
405e49:	74 5e                	je     0x405ea9
405e4b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405e4e:	8b 71 04             	mov    0x4(%ecx),%esi
405e51:	3b 71 08             	cmp    0x8(%ecx),%esi
405e54:	75 3b                	jne    0x405e91
405e56:	be 00 00 00 80       	mov    $0x80000000,%esi
405e5b:	83 fb 20             	cmp    $0x20,%ebx
405e5e:	73 17                	jae    0x405e77
405e60:	8b cb                	mov    %ebx,%ecx
405e62:	d3 ee                	shr    %cl,%esi
405e64:	f7 d6                	not    %esi
405e66:	21 74 b8 44          	and    %esi,0x44(%eax,%edi,4)
405e6a:	fe 4c 03 04          	decb   0x4(%ebx,%eax,1)
405e6e:	75 21                	jne    0x405e91
405e70:	8b 4d 08             	mov    0x8(%ebp),%ecx
405e73:	21 31                	and    %esi,(%ecx)
405e75:	eb 1a                	jmp    0x405e91
405e77:	8d 4b e0             	lea    -0x20(%ebx),%ecx
405e7a:	d3 ee                	shr    %cl,%esi
405e7c:	f7 d6                	not    %esi
405e7e:	21 b4 b8 c4 00 00 00 	and    %esi,0xc4(%eax,%edi,4)
405e85:	fe 4c 03 04          	decb   0x4(%ebx,%eax,1)
405e89:	75 06                	jne    0x405e91
405e8b:	8b 4d 08             	mov    0x8(%ebp),%ecx
405e8e:	21 71 04             	and    %esi,0x4(%ecx)
405e91:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405e94:	8b 71 08             	mov    0x8(%ecx),%esi
405e97:	8b 49 04             	mov    0x4(%ecx),%ecx
405e9a:	89 4e 04             	mov    %ecx,0x4(%esi)
405e9d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405ea0:	8b 71 04             	mov    0x4(%ecx),%esi
405ea3:	8b 49 08             	mov    0x8(%ecx),%ecx
405ea6:	89 4e 08             	mov    %ecx,0x8(%esi)
405ea9:	8b 75 0c             	mov    0xc(%ebp),%esi
405eac:	eb 03                	jmp    0x405eb1
405eae:	8b 5d 08             	mov    0x8(%ebp),%ebx
405eb1:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
405eb5:	75 08                	jne    0x405ebf
405eb7:	3b da                	cmp    %edx,%ebx
405eb9:	0f 84 80 00 00 00    	je     0x405f3f
405ebf:	8b 4d f0             	mov    -0x10(%ebp),%ecx
405ec2:	8d 0c d1             	lea    (%ecx,%edx,8),%ecx
405ec5:	8b 59 04             	mov    0x4(%ecx),%ebx
405ec8:	89 4e 08             	mov    %ecx,0x8(%esi)
405ecb:	89 5e 04             	mov    %ebx,0x4(%esi)
405ece:	89 71 04             	mov    %esi,0x4(%ecx)
405ed1:	8b 4e 04             	mov    0x4(%esi),%ecx
405ed4:	89 71 08             	mov    %esi,0x8(%ecx)
405ed7:	8b 4e 04             	mov    0x4(%esi),%ecx
405eda:	3b 4e 08             	cmp    0x8(%esi),%ecx
405edd:	75 60                	jne    0x405f3f
405edf:	8a 4c 02 04          	mov    0x4(%edx,%eax,1),%cl
405ee3:	88 4d 0f             	mov    %cl,0xf(%ebp)
405ee6:	fe c1                	inc    %cl
405ee8:	88 4c 02 04          	mov    %cl,0x4(%edx,%eax,1)
405eec:	83 fa 20             	cmp    $0x20,%edx
405eef:	73 25                	jae    0x405f16
405ef1:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
405ef5:	75 0e                	jne    0x405f05
405ef7:	8b ca                	mov    %edx,%ecx
405ef9:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405efe:	d3 eb                	shr    %cl,%ebx
405f00:	8b 4d 08             	mov    0x8(%ebp),%ecx
405f03:	09 19                	or     %ebx,(%ecx)
405f05:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405f0a:	8b ca                	mov    %edx,%ecx
405f0c:	d3 eb                	shr    %cl,%ebx
405f0e:	8d 44 b8 44          	lea    0x44(%eax,%edi,4),%eax
405f12:	09 18                	or     %ebx,(%eax)
405f14:	eb 29                	jmp    0x405f3f
405f16:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
405f1a:	75 10                	jne    0x405f2c
405f1c:	8d 4a e0             	lea    -0x20(%edx),%ecx
405f1f:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405f24:	d3 eb                	shr    %cl,%ebx
405f26:	8b 4d 08             	mov    0x8(%ebp),%ecx
405f29:	09 59 04             	or     %ebx,0x4(%ecx)
405f2c:	8d 4a e0             	lea    -0x20(%edx),%ecx
405f2f:	ba 00 00 00 80       	mov    $0x80000000,%edx
405f34:	d3 ea                	shr    %cl,%edx
405f36:	8d 84 b8 c4 00 00 00 	lea    0xc4(%eax,%edi,4),%eax
405f3d:	09 10                	or     %edx,(%eax)
405f3f:	8b 45 fc             	mov    -0x4(%ebp),%eax
405f42:	89 06                	mov    %eax,(%esi)
405f44:	89 44 30 fc          	mov    %eax,-0x4(%eax,%esi,1)
405f48:	8b 45 f0             	mov    -0x10(%ebp),%eax
405f4b:	ff 08                	decl   (%eax)
405f4d:	0f 85 f3 00 00 00    	jne    0x406046
405f53:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405f58:	85 c0                	test   %eax,%eax
405f5a:	0f 84 d8 00 00 00    	je     0x406038
405f60:	8b 0d d8 0a 89 00    	mov    0x890ad8,%ecx
405f66:	8b 35 d4 10 40 00    	mov    0x4010d4,%esi
405f6c:	68 00 40 00 00       	push   $0x4000
405f71:	c1 e1 0f             	shl    $0xf,%ecx
405f74:	03 48 0c             	add    0xc(%eax),%ecx
405f77:	bb 00 80 00 00       	mov    $0x8000,%ebx
405f7c:	53                   	push   %ebx
405f7d:	51                   	push   %ecx
405f7e:	ff d6                	call   *%esi
405f80:	8b 0d d8 0a 89 00    	mov    0x890ad8,%ecx
405f86:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405f8b:	ba 00 00 00 80       	mov    $0x80000000,%edx
405f90:	d3 ea                	shr    %cl,%edx
405f92:	09 50 08             	or     %edx,0x8(%eax)
405f95:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405f9a:	8b 40 10             	mov    0x10(%eax),%eax
405f9d:	8b 0d d8 0a 89 00    	mov    0x890ad8,%ecx
405fa3:	83 a4 88 c4 00 00 00 	andl   $0x0,0xc4(%eax,%ecx,4)
405faa:	00
405fab:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405fb0:	8b 40 10             	mov    0x10(%eax),%eax
405fb3:	fe 48 43             	decb   0x43(%eax)
405fb6:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405fbb:	8b 48 10             	mov    0x10(%eax),%ecx
405fbe:	80 79 43 00          	cmpb   $0x0,0x43(%ecx)
405fc2:	75 09                	jne    0x405fcd
405fc4:	83 60 04 fe          	andl   $0xfffffffe,0x4(%eax)
405fc8:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405fcd:	83 78 08 ff          	cmpl   $0xffffffff,0x8(%eax)
405fd1:	75 65                	jne    0x406038
405fd3:	53                   	push   %ebx
405fd4:	6a 00                	push   $0x0
405fd6:	ff 70 0c             	push   0xc(%eax)
405fd9:	ff d6                	call   *%esi
405fdb:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405fe0:	ff 70 10             	push   0x10(%eax)
405fe3:	6a 00                	push   $0x0
405fe5:	ff 35 dc cd 45 00    	push   0x45cddc
405feb:	ff 15 d8 10 40 00    	call   *0x4010d8
405ff1:	8b 0d c4 0a 89 00    	mov    0x890ac4,%ecx
405ff7:	a1 bc cf 45 00       	mov    0x45cfbc,%eax
405ffc:	6b c9 14             	imul   $0x14,%ecx,%ecx
405fff:	8b 15 c8 0a 89 00    	mov    0x890ac8,%edx
406005:	2b c8                	sub    %eax,%ecx
406007:	8d 4c 11 ec          	lea    -0x14(%ecx,%edx,1),%ecx
40600b:	51                   	push   %ecx
40600c:	8d 48 14             	lea    0x14(%eax),%ecx
40600f:	51                   	push   %ecx
406010:	50                   	push   %eax
406011:	e8 9a 1b 00 00       	call   0x407bb0
406016:	8b 45 08             	mov    0x8(%ebp),%eax
406019:	83 c4 0c             	add    $0xc,%esp
40601c:	ff 0d c4 0a 89 00    	decl   0x890ac4
406022:	3b 05 bc cf 45 00    	cmp    0x45cfbc,%eax
406028:	76 04                	jbe    0x40602e
40602a:	83 6d 08 14          	subl   $0x14,0x8(%ebp)
40602e:	a1 c8 0a 89 00       	mov    0x890ac8,%eax
406033:	a3 d0 0a 89 00       	mov    %eax,0x890ad0
406038:	8b 45 08             	mov    0x8(%ebp),%eax
40603b:	a3 bc cf 45 00       	mov    %eax,0x45cfbc
406040:	89 3d d8 0a 89 00    	mov    %edi,0x890ad8
406046:	5b                   	pop    %ebx
406047:	5f                   	pop    %edi
406048:	5e                   	pop    %esi
406049:	c9                   	leave
40604a:	c3                   	ret
40604b:	a1 d4 0a 89 00       	mov    0x890ad4,%eax
406050:	56                   	push   %esi
406051:	8b 35 c4 0a 89 00    	mov    0x890ac4,%esi
406057:	57                   	push   %edi
406058:	33 ff                	xor    %edi,%edi
40605a:	3b f0                	cmp    %eax,%esi
40605c:	75 34                	jne    0x406092
40605e:	83 c0 10             	add    $0x10,%eax
406061:	6b c0 14             	imul   $0x14,%eax,%eax
406064:	50                   	push   %eax
406065:	ff 35 c8 0a 89 00    	push   0x890ac8
40606b:	57                   	push   %edi
40606c:	ff 35 dc cd 45 00    	push   0x45cddc
406072:	ff 15 0c 11 40 00    	call   *0x40110c
406078:	3b c7                	cmp    %edi,%eax
40607a:	75 04                	jne    0x406080
40607c:	33 c0                	xor    %eax,%eax
40607e:	eb 78                	jmp    0x4060f8
406080:	83 05 d4 0a 89 00 10 	addl   $0x10,0x890ad4
406087:	8b 35 c4 0a 89 00    	mov    0x890ac4,%esi
40608d:	a3 c8 0a 89 00       	mov    %eax,0x890ac8
406092:	6b f6 14             	imul   $0x14,%esi,%esi
406095:	03 35 c8 0a 89 00    	add    0x890ac8,%esi
40609b:	68 c4 41 00 00       	push   $0x41c4
4060a0:	6a 08                	push   $0x8
4060a2:	ff 35 dc cd 45 00    	push   0x45cddc
4060a8:	ff 15 04 11 40 00    	call   *0x401104
4060ae:	89 46 10             	mov    %eax,0x10(%esi)
4060b1:	3b c7                	cmp    %edi,%eax
4060b3:	74 c7                	je     0x40607c
4060b5:	6a 04                	push   $0x4
4060b7:	68 00 20 00 00       	push   $0x2000
4060bc:	68 00 00 10 00       	push   $0x100000
4060c1:	57                   	push   %edi
4060c2:	ff 15 08 11 40 00    	call   *0x401108
4060c8:	89 46 0c             	mov    %eax,0xc(%esi)
4060cb:	3b c7                	cmp    %edi,%eax
4060cd:	75 12                	jne    0x4060e1
4060cf:	ff 76 10             	push   0x10(%esi)
4060d2:	57                   	push   %edi
4060d3:	ff 35 dc cd 45 00    	push   0x45cddc
4060d9:	ff 15 d8 10 40 00    	call   *0x4010d8
4060df:	eb 9b                	jmp    0x40607c
4060e1:	83 4e 08 ff          	orl    $0xffffffff,0x8(%esi)
4060e5:	89 3e                	mov    %edi,(%esi)
4060e7:	89 7e 04             	mov    %edi,0x4(%esi)
4060ea:	ff 05 c4 0a 89 00    	incl   0x890ac4
4060f0:	8b 46 10             	mov    0x10(%esi),%eax
4060f3:	83 08 ff             	orl    $0xffffffff,(%eax)
4060f6:	8b c6                	mov    %esi,%eax
4060f8:	5f                   	pop    %edi
4060f9:	5e                   	pop    %esi
4060fa:	c3                   	ret
4060fb:	8b ff                	mov    %edi,%edi
4060fd:	55                   	push   %ebp
4060fe:	8b ec                	mov    %esp,%ebp
406100:	51                   	push   %ecx
406101:	51                   	push   %ecx
406102:	8b 4d 08             	mov    0x8(%ebp),%ecx
406105:	8b 41 08             	mov    0x8(%ecx),%eax
406108:	53                   	push   %ebx
406109:	56                   	push   %esi
40610a:	8b 71 10             	mov    0x10(%ecx),%esi
40610d:	57                   	push   %edi
40610e:	33 db                	xor    %ebx,%ebx
406110:	eb 03                	jmp    0x406115
406112:	03 c0                	add    %eax,%eax
406114:	43                   	inc    %ebx
406115:	85 c0                	test   %eax,%eax
406117:	7d f9                	jge    0x406112
406119:	8b c3                	mov    %ebx,%eax
40611b:	69 c0 04 02 00 00    	imul   $0x204,%eax,%eax
406121:	8d 84 30 44 01 00 00 	lea    0x144(%eax,%esi,1),%eax
406128:	6a 3f                	push   $0x3f
40612a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40612d:	5a                   	pop    %edx
40612e:	89 40 08             	mov    %eax,0x8(%eax)
406131:	89 40 04             	mov    %eax,0x4(%eax)
406134:	83 c0 08             	add    $0x8,%eax
406137:	4a                   	dec    %edx
406138:	75 f4                	jne    0x40612e
40613a:	6a 04                	push   $0x4
40613c:	8b fb                	mov    %ebx,%edi
40613e:	68 00 10 00 00       	push   $0x1000
406143:	c1 e7 0f             	shl    $0xf,%edi
406146:	03 79 0c             	add    0xc(%ecx),%edi
406149:	68 00 80 00 00       	push   $0x8000
40614e:	57                   	push   %edi
40614f:	ff 15 08 11 40 00    	call   *0x401108
406155:	85 c0                	test   %eax,%eax
406157:	75 08                	jne    0x406161
406159:	83 c8 ff             	or     $0xffffffff,%eax
40615c:	e9 9d 00 00 00       	jmp    0x4061fe
406161:	8d 97 00 70 00 00    	lea    0x7000(%edi),%edx
406167:	89 55 fc             	mov    %edx,-0x4(%ebp)
40616a:	3b fa                	cmp    %edx,%edi
40616c:	77 43                	ja     0x4061b1
40616e:	8b ca                	mov    %edx,%ecx
406170:	2b cf                	sub    %edi,%ecx
406172:	c1 e9 0c             	shr    $0xc,%ecx
406175:	8d 47 10             	lea    0x10(%edi),%eax
406178:	41                   	inc    %ecx
406179:	83 48 f8 ff          	orl    $0xffffffff,-0x8(%eax)
40617d:	83 88 ec 0f 00 00 ff 	orl    $0xffffffff,0xfec(%eax)
406184:	8d 90 fc 0f 00 00    	lea    0xffc(%eax),%edx
40618a:	89 10                	mov    %edx,(%eax)
40618c:	8d 90 fc ef ff ff    	lea    -0x1004(%eax),%edx
406192:	c7 40 fc f0 0f 00 00 	movl   $0xff0,-0x4(%eax)
406199:	89 50 04             	mov    %edx,0x4(%eax)
40619c:	c7 80 e8 0f 00 00 f0 	movl   $0xff0,0xfe8(%eax)
4061a3:	0f 00 00
4061a6:	05 00 10 00 00       	add    $0x1000,%eax
4061ab:	49                   	dec    %ecx
4061ac:	75 cb                	jne    0x406179
4061ae:	8b 55 fc             	mov    -0x4(%ebp),%edx
4061b1:	8b 45 f8             	mov    -0x8(%ebp),%eax
4061b4:	05 f8 01 00 00       	add    $0x1f8,%eax
4061b9:	8d 4f 0c             	lea    0xc(%edi),%ecx
4061bc:	89 48 04             	mov    %ecx,0x4(%eax)
4061bf:	89 41 08             	mov    %eax,0x8(%ecx)
4061c2:	8d 4a 0c             	lea    0xc(%edx),%ecx
4061c5:	89 48 08             	mov    %ecx,0x8(%eax)
4061c8:	89 41 04             	mov    %eax,0x4(%ecx)
4061cb:	83 64 9e 44 00       	andl   $0x0,0x44(%esi,%ebx,4)
4061d0:	33 ff                	xor    %edi,%edi
4061d2:	47                   	inc    %edi
4061d3:	89 bc 9e c4 00 00 00 	mov    %edi,0xc4(%esi,%ebx,4)
4061da:	8a 46 43             	mov    0x43(%esi),%al
4061dd:	8a c8                	mov    %al,%cl
4061df:	fe c1                	inc    %cl
4061e1:	84 c0                	test   %al,%al
4061e3:	8b 45 08             	mov    0x8(%ebp),%eax
4061e6:	88 4e 43             	mov    %cl,0x43(%esi)
4061e9:	75 03                	jne    0x4061ee
4061eb:	09 78 04             	or     %edi,0x4(%eax)
4061ee:	ba 00 00 00 80       	mov    $0x80000000,%edx
4061f3:	8b cb                	mov    %ebx,%ecx
4061f5:	d3 ea                	shr    %cl,%edx
4061f7:	f7 d2                	not    %edx
4061f9:	21 50 08             	and    %edx,0x8(%eax)
4061fc:	8b c3                	mov    %ebx,%eax
4061fe:	5f                   	pop    %edi
4061ff:	5e                   	pop    %esi
406200:	5b                   	pop    %ebx
406201:	c9                   	leave
406202:	c3                   	ret
406203:	8b ff                	mov    %edi,%edi