405e93:	8b be 20 92 40 00    	mov    0x409220(%esi),%edi
405e99:	57                   	push   %edi
405e9a:	ff 15 0c 71 40 00    	call   *0x40710c
405ea0:	85 c0                	test   %eax,%eax
405ea2:	75 0b                	jne    0x405eaf
405ea4:	57                   	push   %edi
405ea5:	ff 15 b8 70 40 00    	call   *0x4070b8
405eab:	85 c0                	test   %eax,%eax
405ead:	74 0d                	je     0x405ebc
405eaf:	ff b6 24 92 40 00    	push   0x409224(%esi)
405eb5:	50                   	push   %eax
405eb6:	ff 15 14 71 40 00    	call   *0x407114
405ebc:	5f                   	pop    %edi
405ebd:	5e                   	pop    %esi
405ebe:	c2 04 00             	ret    $0x4
405ec1:	55                   	push   %ebp
405ec2:	8b ec                	mov    %esp,%ebp
405ec4:	83 ec 1c             	sub    $0x1c,%esp
405ec7:	56                   	push   %esi
405ec8:	8b 75 08             	mov    0x8(%ebp),%esi
405ecb:	57                   	push   %edi
405ecc:	8b 3d e4 71 40 00    	mov    0x4071e4,%edi
405ed2:	eb 0a                	jmp    0x405ede
405ed4:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405ed7:	50                   	push   %eax
405ed8:	ff 15 e0 71 40 00    	call   *0x4071e0
405ede:	6a 01                	push   $0x1
405ee0:	56                   	push   %esi
405ee1:	56                   	push   %esi
405ee2:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405ee5:	6a 00                	push   $0x0
405ee7:	50                   	push   %eax
405ee8:	ff d7                	call   *%edi
405eea:	85 c0                	test   %eax,%eax
405eec:	75 e6                	jne    0x405ed4
405eee:	5f                   	pop    %edi
405eef:	5e                   	pop    %esi
405ef0:	c9                   	leave
405ef1:	c2 04 00             	ret    $0x4
405ef4:	83 3d 34 2a 42 00 00 	cmpl   $0x0,0x422a34
405efb:	56                   	push   %esi
405efc:	75 2d                	jne    0x405f2b
405efe:	33 c9                	xor    %ecx,%ecx
405f00:	6a 08                	push   $0x8
405f02:	8b c1                	mov    %ecx,%eax
405f04:	5e                   	pop    %esi
405f05:	8b d0                	mov    %eax,%edx
405f07:	80 e2 01             	and    $0x1,%dl
405f0a:	f6 da                	neg    %dl
405f0c:	1b d2                	sbb    %edx,%edx
405f0e:	81 e2 20 83 b8 ed    	and    $0xedb88320,%edx
405f14:	d1 e8                	shr    $1,%eax
405f16:	33 c2                	xor    %edx,%eax
405f18:	4e                   	dec    %esi
405f19:	75 ea                	jne    0x405f05
405f1b:	89 04 8d 30 2a 42 00 	mov    %eax,0x422a30(,%ecx,4)
405f22:	41                   	inc    %ecx
405f23:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
405f29:	7c d5                	jl     0x405f00
405f2b:	8b 54 24 10          	mov    0x10(%esp),%edx
405f2f:	8b 44 24 08          	mov    0x8(%esp),%eax
405f33:	85 d2                	test   %edx,%edx
405f35:	f7 d0                	not    %eax
405f37:	76 23                	jbe    0x405f5c
405f39:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
405f3d:	57                   	push   %edi
405f3e:	0f b6 39             	movzbl (%ecx),%edi
405f41:	8b f0                	mov    %eax,%esi
405f43:	81 e6 ff 00 00 00    	and    $0xff,%esi
405f49:	33 f7                	xor    %edi,%esi
405f4b:	c1 e8 08             	shr    $0x8,%eax
405f4e:	8b 34 b5 30 2a 42 00 	mov    0x422a30(,%esi,4),%esi
405f55:	33 c6                	xor    %esi,%eax
405f57:	41                   	inc    %ecx
405f58:	4a                   	dec    %edx
405f59:	75 e3                	jne    0x405f3e
405f5b:	5f                   	pop    %edi
405f5c:	f7 d0                	not    %eax
405f5e:	5e                   	pop    %esi
405f5f:	c2 0c 00             	ret    $0xc
405f62:	b8 80 00 00 00       	mov    $0x80,%eax
405f67:	48                   	dec    %eax
405f68:	c6 04 08 00          	movb   $0x0,(%eax,%ecx,1)
405f6c:	75 f9                	jne    0x405f67
405f6e:	83 49 78 ff          	orl    $0xffffffff,0x78(%ecx)
405f72:	33 c0                	xor    %eax,%eax
405f74:	40                   	inc    %eax
405f75:	89 41 68             	mov    %eax,0x68(%ecx)
405f78:	89 41 64             	mov    %eax,0x64(%ecx)
405f7b:	89 41 60             	mov    %eax,0x60(%ecx)
405f7e:	89 41 5c             	mov    %eax,0x5c(%ecx)
405f81:	c3                   	ret
405f82:	55                   	push   %ebp
405f83:	8b ec                	mov    %esp,%ebp
405f85:	81 ec 90 00 00 00    	sub    $0x90,%esp
405f8b:	53                   	push   %ebx
405f8c:	56                   	push   %esi
405f8d:	57                   	push   %edi
405f8e:	6a 22                	push   $0x22
405f90:	8b f1                	mov    %ecx,%esi
405f92:	59                   	pop    %ecx
405f93:	8d bd 78 ff ff ff    	lea    -0x88(%ebp),%edi
405f99:	89 b5 70 ff ff ff    	mov    %esi,-0x90(%ebp)
405f9f:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
405fa1:	83 7d d0 ff          	cmpl   $0xffffffff,-0x30(%ebp)
405fa5:	75 08                	jne    0x405faf
405fa7:	33 c0                	xor    %eax,%eax
405fa9:	40                   	inc    %eax
405faa:	e9 20 0a 00 00       	jmp    0x4069cf
405faf:	8b 5d bc             	mov    -0x44(%ebp),%ebx
405fb2:	8b 75 ac             	mov    -0x54(%ebp),%esi
405fb5:	8b 85 78 ff ff ff    	mov    -0x88(%ebp),%eax
405fbb:	83 f8 1c             	cmp    $0x1c,%eax
405fbe:	0f 87 08 0a 00 00    	ja     0x4069cc
405fc4:	ff 24 85 d4 69 40 00 	jmp    *0x4069d4(,%eax,4)
405fcb:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
405fcf:	0f 84 e2 09 00 00    	je     0x4069b7
405fd5:	8b 45 90             	mov    -0x70(%ebp),%eax
405fd8:	ff 4d 94             	decl   -0x6c(%ebp)
405fdb:	ff 45 90             	incl   -0x70(%ebp)
405fde:	8a 00                	mov    (%eax),%al
405fe0:	3c e1                	cmp    $0xe1,%al
405fe2:	0f 87 e4 09 00 00    	ja     0x4069cc
405fe8:	0f b6 c0             	movzbl %al,%eax
405feb:	6a 2d                	push   $0x2d
405fed:	99                   	cltd
405fee:	59                   	pop    %ecx
405fef:	f7 f9                	idiv   %ecx
405ff1:	6a 09                	push   $0x9
405ff3:	59                   	pop    %ecx
405ff4:	8b f0                	mov    %eax,%esi
405ff6:	0f b6 c2             	movzbl %dl,%eax
405ff9:	99                   	cltd
405ffa:	f7 f9                	idiv   %ecx
405ffc:	8b ce                	mov    %esi,%ecx
405ffe:	0f b6 fa             	movzbl %dl,%edi
406001:	33 d2                	xor    %edx,%edx
406003:	89 7d c4             	mov    %edi,-0x3c(%ebp)
406006:	42                   	inc    %edx
406007:	d3 e2                	shl    %cl,%edx
406009:	8b c8                	mov    %eax,%ecx
40600b:	4a                   	dec    %edx
40600c:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40600f:	33 d2                	xor    %edx,%edx
406011:	42                   	inc    %edx
406012:	d3 e2                	shl    %cl,%edx
406014:	8d 0c 37             	lea    (%edi,%esi,1),%ecx
406017:	be 00 03 00 00       	mov    $0x300,%esi
40601c:	d3 e6                	shl    %cl,%esi
40601e:	4a                   	dec    %edx
40601f:	89 55 e8             	mov    %edx,-0x18(%ebp)
406022:	81 c6 36 07 00 00    	add    $0x736,%esi
406028:	8d 3c 36             	lea    (%esi,%esi,1),%edi
40602b:	3b 7d 88             	cmp    -0x78(%ebp),%edi
40602e:	74 26                	je     0x406056
406030:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
406034:	74 09                	je     0x40603f
406036:	ff 75 fc             	push   -0x4(%ebp)
406039:	ff 15 fc 70 40 00    	call   *0x4070fc
40603f:	57                   	push   %edi
406040:	6a 40                	push   $0x40
406042:	ff 15 00 71 40 00    	call   *0x407100
406048:	85 c0                	test   %eax,%eax
40604a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40604d:	0f 84 79 09 00 00    	je     0x4069cc
406053:	89 7d 88             	mov    %edi,-0x78(%ebp)
406056:	85 f6                	test   %esi,%esi
406058:	74 0c                	je     0x406066
40605a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40605d:	4e                   	dec    %esi
40605e:	66 c7 04 70 00 04    	movw   $0x400,(%eax,%esi,2)
406064:	75 f4                	jne    0x40605a
406066:	83 65 b8 00          	andl   $0x0,-0x48(%ebp)
40606a:	83 65 c0 00          	andl   $0x0,-0x40(%ebp)
40606e:	eb 26                	jmp    0x406096
406070:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
406074:	0f 84 a6 08 00 00    	je     0x406920
40607a:	8b 45 b8             	mov    -0x48(%ebp),%eax
40607d:	ff 4d 94             	decl   -0x6c(%ebp)
406080:	8b c8                	mov    %eax,%ecx
406082:	8b 45 90             	mov    -0x70(%ebp),%eax
406085:	c1 e1 03             	shl    $0x3,%ecx
406088:	0f b6 00             	movzbl (%eax),%eax
40608b:	d3 e0                	shl    %cl,%eax
40608d:	09 45 c0             	or     %eax,-0x40(%ebp)
406090:	ff 45 90             	incl   -0x70(%ebp)
406093:	ff 45 b8             	incl   -0x48(%ebp)
406096:	83 7d b8 04          	cmpl   $0x4,-0x48(%ebp)
40609a:	7c d4                	jl     0x406070
40609c:	8b 45 c0             	mov    -0x40(%ebp),%eax
40609f:	3b 45 8c             	cmp    -0x74(%ebp),%eax
4060a2:	74 28                	je     0x4060cc
4060a4:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
4060a8:	89 45 8c             	mov    %eax,-0x74(%ebp)
4060ab:	74 09                	je     0x4060b6
4060ad:	ff 75 f8             	push   -0x8(%ebp)
4060b0:	ff 15 fc 70 40 00    	call   *0x4070fc
4060b6:	ff 75 c0             	push   -0x40(%ebp)
4060b9:	6a 40                	push   $0x40
4060bb:	ff 15 00 71 40 00    	call   *0x407100
4060c1:	85 c0                	test   %eax,%eax
4060c3:	89 45 f8             	mov    %eax,-0x8(%ebp)
4060c6:	0f 84 00 09 00 00    	je     0x4069cc
4060cc:	8b 45 f8             	mov    -0x8(%ebp),%eax
4060cf:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
4060d2:	c7 45 b8 05 00 00 00 	movl   $0x5,-0x48(%ebp)
4060d9:	80 64 08 ff 00       	andb   $0x0,-0x1(%eax,%ecx,1)
4060de:	eb 21                	jmp    0x406101
4060e0:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
4060e4:	0f 84 45 08 00 00    	je     0x40692f
4060ea:	8b 4d 90             	mov    -0x70(%ebp),%ecx
4060ed:	8b 45 f4             	mov    -0xc(%ebp),%eax
4060f0:	ff 4d 94             	decl   -0x6c(%ebp)
4060f3:	0f b6 09             	movzbl (%ecx),%ecx
4060f6:	c1 e0 08             	shl    $0x8,%eax
4060f9:	0b c1                	or     %ecx,%eax
4060fb:	ff 45 90             	incl   -0x70(%ebp)
4060fe:	89 45 f4             	mov    %eax,-0xc(%ebp)
406101:	8b 45 b8             	mov    -0x48(%ebp),%eax
406104:	ff 4d b8             	decl   -0x48(%ebp)
406107:	85 c0                	test   %eax,%eax
406109:	75 d5                	jne    0x4060e0
40610b:	8b 45 a0             	mov    -0x60(%ebp),%eax
40610e:	8b 4d c8             	mov    -0x38(%ebp),%ecx
406111:	23 45 e4             	and    -0x1c(%ebp),%eax
406114:	c7 85 7c ff ff ff 06 	movl   $0x6,-0x84(%ebp)
40611b:	00 00 00
40611e:	c1 e1 04             	shl    $0x4,%ecx
406121:	89 45 b4             	mov    %eax,-0x4c(%ebp)
406124:	03 c8                	add    %eax,%ecx
406126:	8b 45 fc             	mov    -0x4(%ebp),%eax
406129:	8d 34 48             	lea    (%eax,%ecx,2),%esi
40612c:	e9 6c 06 00 00       	jmp    0x40679d
406131:	33 d2                	xor    %edx,%edx
406133:	39 55 c0             	cmp    %edx,-0x40(%ebp)
406136:	75 6f                	jne    0x4061a7
406138:	0f b6 45 a4          	movzbl -0x5c(%ebp),%eax
40613c:	8b 75 a0             	mov    -0x60(%ebp),%esi
40613f:	b1 08                	mov    $0x8,%cl
406141:	2a 4d c4             	sub    -0x3c(%ebp),%cl
406144:	23 75 e8             	and    -0x18(%ebp),%esi
406147:	d3 e8                	shr    %cl,%eax
406149:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
40614c:	d3 e6                	shl    %cl,%esi
40614e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406151:	03 c6                	add    %esi,%eax
406153:	8d 04 40             	lea    (%eax,%eax,2),%eax
406156:	c1 e0 09             	shl    $0x9,%eax
406159:	83 7d c8 04          	cmpl   $0x4,-0x38(%ebp)
40615d:	8d 84 08 6c 0e 00 00 	lea    0xe6c(%eax,%ecx,1),%eax
406164:	89 45 a8             	mov    %eax,-0x58(%ebp)
406167:	7d 05                	jge    0x40616e
406169:	89 55 c8             	mov    %edx,-0x38(%ebp)
40616c:	eb 10                	jmp    0x40617e
40616e:	83 7d c8 0a          	cmpl   $0xa,-0x38(%ebp)
406172:	7d 06                	jge    0x40617a
406174:	83 6d c8 03          	subl   $0x3,-0x38(%ebp)
406178:	eb 04                	jmp    0x40617e
40617a:	83 6d c8 06          	subl   $0x6,-0x38(%ebp)
40617e:	39 55 cc             	cmp    %edx,-0x34(%ebp)
406181:	74 1c                	je     0x40619f
406183:	8b 45 ec             	mov    -0x14(%ebp),%eax
406186:	2b 45 d4             	sub    -0x2c(%ebp),%eax
406189:	3b 45 8c             	cmp    -0x74(%ebp),%eax
40618c:	72 03                	jb     0x406191
40618e:	03 45 8c             	add    -0x74(%ebp),%eax
406191:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406194:	33 db                	xor    %ebx,%ebx
406196:	43                   	inc    %ebx
406197:	8a 04 08             	mov    (%eax,%ecx,1),%al
40619a:	88 45 a5             	mov    %al,-0x5b(%ebp)
40619d:	eb 68                	jmp    0x406207
40619f:	33 db                	xor    %ebx,%ebx
4061a1:	43                   	inc    %ebx
4061a2:	e9 cd 01 00 00       	jmp    0x406374
4061a7:	8b 45 fc             	mov    -0x4(%ebp),%eax
4061aa:	8b 4d c8             	mov    -0x38(%ebp),%ecx
4061ad:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
4061b4:	c7 85 7c ff ff ff 07 	movl   $0x7,-0x84(%ebp)
4061bb:	00 00 00
4061be:	8d b4 48 80 01 00 00 	lea    0x180(%eax,%ecx,2),%esi
4061c5:	e9 d3 05 00 00       	jmp    0x40679d
4061ca:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
4061ce:	0f 84 67 07 00 00    	je     0x40693b
4061d4:	8b 4d 90             	mov    -0x70(%ebp),%ecx
4061d7:	8b 45 f4             	mov    -0xc(%ebp),%eax
4061da:	c1 65 f0 08          	shll   $0x8,-0x10(%ebp)
4061de:	0f b6 09             	movzbl (%ecx),%ecx
4061e1:	ff 4d 94             	decl   -0x6c(%ebp)
4061e4:	c1 e0 08             	shl    $0x8,%eax
4061e7:	0b c1                	or     %ecx,%eax
4061e9:	ff 45 90             	incl   -0x70(%ebp)
4061ec:	89 45 f4             	mov    %eax,-0xc(%ebp)
4061ef:	8b 45 c0             	mov    -0x40(%ebp),%eax
4061f2:	39 45 b8             	cmp    %eax,-0x48(%ebp)
4061f5:	0f 85 ad 00 00 00    	jne    0x4062a8
4061fb:	81 fb 00 01 00 00    	cmp    $0x100,%ebx
406201:	0f 8d 05 01 00 00    	jge    0x40630c
406207:	0f b6 45 a5          	movzbl -0x5b(%ebp),%eax
40620b:	d0 65 a5             	shlb   $1,-0x5b(%ebp)
40620e:	8b 4d a8             	mov    -0x58(%ebp),%ecx
406211:	c1 e8 07             	shr    $0x7,%eax
406214:	89 45 b8             	mov    %eax,-0x48(%ebp)
406217:	40                   	inc    %eax
406218:	c1 e0 08             	shl    $0x8,%eax
40621b:	03 c3                	add    %ebx,%eax
40621d:	8d 34 41             	lea    (%ecx,%eax,2),%esi
406220:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406223:	c1 e9 0b             	shr    $0xb,%ecx
406226:	66 8b 06             	mov    (%esi),%ax
406229:	89 75 ac             	mov    %esi,-0x54(%ebp)
40622c:	0f b7 d0             	movzwl %ax,%edx
40622f:	0f af ca             	imul   %edx,%ecx
406232:	39 4d f4             	cmp    %ecx,-0xc(%ebp)
406235:	73 1a                	jae    0x406251
406237:	83 65 c0 00          	andl   $0x0,-0x40(%ebp)
40623b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40623e:	b9 00 08 00 00       	mov    $0x800,%ecx
406243:	2b ca                	sub    %edx,%ecx
406245:	c1 f9 05             	sar    $0x5,%ecx
406248:	03 c8                	add    %eax,%ecx
40624a:	03 db                	add    %ebx,%ebx
40624c:	66 89 0e             	mov    %cx,(%esi)
40624f:	eb 1d                	jmp    0x40626e
406251:	29 4d f0             	sub    %ecx,-0x10(%ebp)
406254:	29 4d f4             	sub    %ecx,-0xc(%ebp)
406257:	66 8b c8             	mov    %ax,%cx
40625a:	c7 45 c0 01 00 00 00 	movl   $0x1,-0x40(%ebp)
406261:	66 c1 e9 05          	shr    $0x5,%cx
406265:	2b c1                	sub    %ecx,%eax
406267:	8d 5c 1b 01          	lea    0x1(%ebx,%ebx,1),%ebx
40626b:	66 89 06             	mov    %ax,(%esi)
40626e:	81 7d f0 00 00 00 01 	cmpl   $0x1000000,-0x10(%ebp)
406275:	89 5d bc             	mov    %ebx,-0x44(%ebp)
406278:	0f 83 71 ff ff ff    	jae    0x4061ef
40627e:	e9 47 ff ff ff       	jmp    0x4061ca
406283:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
406287:	0f 84 ba 06 00 00    	je     0x406947
40628d:	8b 4d 90             	mov    -0x70(%ebp),%ecx
406290:	8b 45 f4             	mov    -0xc(%ebp),%eax
406293:	c1 65 f0 08          	shll   $0x8,-0x10(%ebp)
406297:	0f b6 09             	movzbl (%ecx),%ecx
40629a:	ff 4d 94             	decl   -0x6c(%ebp)
40629d:	c1 e0 08             	shl    $0x8,%eax
4062a0:	0b c1                	or     %ecx,%eax
4062a2:	ff 45 90             	incl   -0x70(%ebp)
4062a5:	89 45 f4             	mov    %eax,-0xc(%ebp)
4062a8:	81 fb 00 01 00 00    	cmp    $0x100,%ebx
4062ae:	7d 5c                	jge    0x40630c
4062b0:	8b 45 a8             	mov    -0x58(%ebp),%eax