401f34:	8b c8                	mov    %eax,%ecx
401f36:	c1 e9 02             	shr    $0x2,%ecx
401f39:	80 e1 01             	and    $0x1,%cl
401f3c:	88 8e 8b 10 00 00    	mov    %cl,0x108b(%esi)
401f42:	8b c8                	mov    %eax,%ecx
401f44:	c1 e9 0a             	shr    $0xa,%ecx
401f47:	80 e1 01             	and    $0x1,%cl
401f4a:	80 7d f3 00          	cmpb   $0x0,-0xd(%ebp)
401f4e:	88 8e 90 10 00 00    	mov    %cl,0x1090(%esi)
401f54:	74 09                	je     0x401f5f
401f56:	a8 10                	test   $0x10,%al
401f58:	74 05                	je     0x401f5f
401f5a:	33 c9                	xor    %ecx,%ecx
401f5c:	41                   	inc    %ecx
401f5d:	eb 02                	jmp    0x401f61
401f5f:	33 c9                	xor    %ecx,%ecx
401f61:	80 7d f3 00          	cmpb   $0x0,-0xd(%ebp)
401f65:	8b 75 ec             	mov    -0x14(%ebp),%esi
401f68:	88 8e e0 10 00 00    	mov    %cl,0x10e0(%esi)
401f6e:	75 09                	jne    0x401f79
401f70:	a8 10                	test   $0x10,%al
401f72:	74 05                	je     0x401f79
401f74:	33 c9                	xor    %ecx,%ecx
401f76:	41                   	inc    %ecx
401f77:	eb 02                	jmp    0x401f7b
401f79:	33 c9                	xor    %ecx,%ecx
401f7b:	88 8e ea 10 00 00    	mov    %cl,0x10ea(%esi)
401f81:	8b c8                	mov    %eax,%ecx
401f83:	81 e1 e0 00 00 00    	and    $0xe0,%ecx
401f89:	80 f9 e0             	cmp    $0xe0,%cl
401f8c:	0f 94 c1             	sete   %cl
401f8f:	88 8e e1 10 00 00    	mov    %cl,0x10e1(%esi)
401f95:	84 c9                	test   %cl,%cl
401f97:	74 04                	je     0x401f9d
401f99:	33 d2                	xor    %edx,%edx
401f9b:	eb 0f                	jmp    0x401fac
401f9d:	8b c8                	mov    %eax,%ecx
401f9f:	c1 e9 05             	shr    $0x5,%ecx
401fa2:	83 e1 07             	and    $0x7,%ecx
401fa5:	ba 00 00 01 00       	mov    $0x10000,%edx
401faa:	d3 e2                	shl    %cl,%edx
401fac:	8b c8                	mov    %eax,%ecx
401fae:	c1 e9 03             	shr    $0x3,%ecx
401fb1:	80 e1 01             	and    $0x1,%cl
401fb4:	c1 e8 0b             	shr    $0xb,%eax
401fb7:	88 8e e2 10 00 00    	mov    %cl,0x10e2(%esi)
401fbd:	24 01                	and    $0x1,%al
401fbf:	8d 4d b8             	lea    -0x48(%ebp),%ecx
401fc2:	89 96 e4 10 00 00    	mov    %edx,0x10e4(%esi)
401fc8:	88 86 e3 10 00 00    	mov    %al,0x10e3(%esi)
401fce:	e8 75 94 00 00       	call   0x40b448
401fd3:	8d 4d b8             	lea    -0x48(%ebp),%ecx
401fd6:	89 46 14             	mov    %eax,0x14(%esi)
401fd9:	e8 6a 94 00 00       	call   0x40b448
401fde:	8d 4d b8             	lea    -0x48(%ebp),%ecx
401fe1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401fe4:	e8 12 94 00 00       	call   0x40b3fb
401fe9:	6a 02                	push   $0x2
401feb:	5f                   	pop    %edi
401fec:	8d 4d b8             	lea    -0x48(%ebp),%ecx
401fef:	88 46 18             	mov    %al,0x18(%esi)
401ff2:	89 be 60 10 00 00    	mov    %edi,0x1060(%esi)
401ff8:	e8 4b 94 00 00       	call   0x40b448
401ffd:	8d 4d b8             	lea    -0x48(%ebp),%ecx
402000:	89 86 64 10 00 00    	mov    %eax,0x1064(%esi)
402006:	e8 3d 94 00 00       	call   0x40b448
40200b:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40200e:	89 45 e0             	mov    %eax,-0x20(%ebp)
402011:	e8 e5 93 00 00       	call   0x40b3fb
402016:	8d 4d b8             	lea    -0x48(%ebp),%ecx
402019:	88 46 19             	mov    %al,0x19(%esi)
40201c:	e8 da 93 00 00       	call   0x40b3fb
402021:	2c 30                	sub    $0x30,%al
402023:	8d 4d b8             	lea    -0x48(%ebp),%ecx
402026:	88 46 1a             	mov    %al,0x1a(%esi)
402029:	e8 e5 93 00 00       	call   0x40b413
40202e:	0f b7 c0             	movzwl %ax,%eax
402031:	8d 4d b8             	lea    -0x48(%ebp),%ecx
402034:	89 45 ec             	mov    %eax,-0x14(%ebp)
402037:	e8 0c 94 00 00       	call   0x40b448
40203c:	83 a6 8c 10 00 00 00 	andl   $0x0,0x108c(%esi)
402043:	80 be 8b 10 00 00 00 	cmpb   $0x0,0x108b(%esi)
40204a:	89 46 1c             	mov    %eax,0x1c(%esi)
40204d:	74 41                	je     0x402090
40204f:	0f b6 4e 19          	movzbl 0x19(%esi),%ecx
402053:	83 e9 0d             	sub    $0xd,%ecx
402056:	74 2e                	je     0x402086
402058:	2b cf                	sub    %edi,%ecx
40205a:	74 22                	je     0x40207e
40205c:	83 e9 05             	sub    $0x5,%ecx
40205f:	74 11                	je     0x402072
402061:	83 e9 06             	sub    $0x6,%ecx
402064:	74 0c                	je     0x402072
402066:	c7 86 8c 10 00 00 04 	movl   $0x4,0x108c(%esi)
40206d:	00 00 00
402070:	eb 1e                	jmp    0x402090
402072:	c7 86 8c 10 00 00 03 	movl   $0x3,0x108c(%esi)
402079:	00 00 00
40207c:	eb 12                	jmp    0x402090
40207e:	89 be 8c 10 00 00    	mov    %edi,0x108c(%esi)
402084:	eb 0a                	jmp    0x402090
402086:	c7 86 8c 10 00 00 01 	movl   $0x1,0x108c(%esi)
40208d:	00 00 00
402090:	8a 56 18             	mov    0x18(%esi),%dl
402093:	89 be ec 10 00 00    	mov    %edi,0x10ec(%esi)
402099:	80 fa 03             	cmp    $0x3,%dl
40209c:	74 13                	je     0x4020b1
40209e:	80 fa 05             	cmp    $0x5,%dl
4020a1:	74 0e                	je     0x4020b1
4020a3:	80 fa 06             	cmp    $0x6,%dl
4020a6:	73 13                	jae    0x4020bb
4020a8:	83 a6 ec 10 00 00 00 	andl   $0x0,0x10ec(%esi)
4020af:	eb 0a                	jmp    0x4020bb
4020b1:	c7 86 ec 10 00 00 01 	movl   $0x1,0x10ec(%esi)
4020b8:	00 00 00
4020bb:	33 ff                	xor    %edi,%edi
4020bd:	8d 8e f0 10 00 00    	lea    0x10f0(%esi),%ecx
4020c3:	89 39                	mov    %edi,(%ecx)
4020c5:	80 fa 03             	cmp    $0x3,%dl
4020c8:	75 1f                	jne    0x4020e9
4020ca:	8b d0                	mov    %eax,%edx
4020cc:	81 e2 00 f0 00 00    	and    $0xf000,%edx
4020d2:	81 fa 00 a0 00 00    	cmp    $0xa000,%edx
4020d8:	75 0f                	jne    0x4020e9
4020da:	c7 01 01 00 00 00    	movl   $0x1,(%ecx)
4020e0:	33 c9                	xor    %ecx,%ecx
4020e2:	66 89 8e f4 10 00 00 	mov    %cx,0x10f4(%esi)
4020e9:	80 7d f3 00          	cmpb   $0x0,-0xd(%ebp)
4020ed:	75 09                	jne    0x4020f8
4020ef:	85 c0                	test   %eax,%eax
4020f1:	79 05                	jns    0x4020f8
4020f3:	33 c0                	xor    %eax,%eax
4020f5:	40                   	inc    %eax
4020f6:	eb 02                	jmp    0x4020fa
4020f8:	33 c0                	xor    %eax,%eax
4020fa:	88 86 e8 10 00 00    	mov    %al,0x10e8(%esi)
402100:	8b 46 08             	mov    0x8(%esi),%eax
402103:	c1 e8 08             	shr    $0x8,%eax
402106:	24 01                	and    $0x1,%al
402108:	88 86 e9 10 00 00    	mov    %al,0x10e9(%esi)
40210e:	74 29                	je     0x402139
402110:	8d 4d b8             	lea    -0x48(%ebp),%ecx
402113:	e8 30 93 00 00       	call   0x40b448
402118:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40211b:	8b f8                	mov    %eax,%edi
40211d:	e8 26 93 00 00       	call   0x40b448
402122:	83 7d e4 ff          	cmpl   $0xffffffff,-0x1c(%ebp)
402126:	89 45 e8             	mov    %eax,-0x18(%ebp)
402129:	75 0a                	jne    0x402135
40212b:	83 f8 ff             	cmp    $0xffffffff,%eax
40212e:	75 05                	jne    0x402135
402130:	33 c0                	xor    %eax,%eax
402132:	40                   	inc    %eax
402133:	eb 0e                	jmp    0x402143
402135:	33 c0                	xor    %eax,%eax
402137:	eb 0a                	jmp    0x402143
402139:	83 7d e4 ff          	cmpl   $0xffffffff,-0x1c(%ebp)
40213d:	89 7d e8             	mov    %edi,-0x18(%ebp)
402140:	0f 94 c0             	sete   %al
402143:	6a 01                	push   $0x1
402145:	6a 00                	push   $0x0
402147:	6a 00                	push   $0x0
402149:	57                   	push   %edi
40214a:	88 86 8a 10 00 00    	mov    %al,0x108a(%esi)
402150:	e8 5b 84 01 00       	call   0x41a5b0
402155:	8b 4e 14             	mov    0x14(%esi),%ecx
402158:	33 ff                	xor    %edi,%edi
40215a:	6a 01                	push   $0x1
40215c:	57                   	push   %edi
40215d:	03 c1                	add    %ecx,%eax
40215f:	57                   	push   %edi
402160:	ff 75 e8             	push   -0x18(%ebp)
402163:	13 d7                	adc    %edi,%edx
402165:	89 86 48 10 00 00    	mov    %eax,0x1048(%esi)
40216b:	89 96 4c 10 00 00    	mov    %edx,0x104c(%esi)
402171:	e8 3a 84 01 00       	call   0x41a5b0
402176:	33 c9                	xor    %ecx,%ecx
402178:	03 45 e4             	add    -0x1c(%ebp),%eax
40217b:	13 d1                	adc    %ecx,%edx
40217d:	89 86 50 10 00 00    	mov    %eax,0x1050(%esi)
402183:	89 96 54 10 00 00    	mov    %edx,0x1054(%esi)
402189:	38 8e 8a 10 00 00    	cmp    %cl,0x108a(%esi)
40218f:	74 11                	je     0x4021a2
402191:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
402196:	89 86 50 10 00 00    	mov    %eax,0x1050(%esi)
40219c:	89 86 54 10 00 00    	mov    %eax,0x1054(%esi)
4021a2:	bf ff 1f 00 00       	mov    $0x1fff,%edi
4021a7:	39 7d ec             	cmp    %edi,-0x14(%ebp)
4021aa:	73 03                	jae    0x4021af
4021ac:	8b 7d ec             	mov    -0x14(%ebp),%edi
4021af:	57                   	push   %edi
4021b0:	8d 85 80 d7 ff ff    	lea    -0x2880(%ebp),%eax
4021b6:	50                   	push   %eax
4021b7:	8d 4d b8             	lea    -0x48(%ebp),%ecx
4021ba:	e8 70 93 00 00       	call   0x40b52f
4021bf:	80 7d f3 00          	cmpb   $0x0,-0xd(%ebp)
4021c3:	c6 84 3d 80 d7 ff ff 	movb   $0x0,-0x2880(%ebp,%edi,1)
4021ca:	00
4021cb:	0f 84 8a 00 00 00    	je     0x40225b
4021d1:	f7 46 08 00 02 00 00 	testl  $0x200,0x8(%esi)
4021d8:	bf 00 08 00 00       	mov    $0x800,%edi
4021dd:	74 3d                	je     0x40221c
4021df:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
4021e2:	e8 97 40 00 00       	call   0x40627e
4021e7:	8d 85 80 d7 ff ff    	lea    -0x2880(%ebp),%eax
4021ed:	50                   	push   %eax
4021ee:	e8 4d 82 01 00       	call   0x41a440
4021f3:	59                   	pop    %ecx
4021f4:	57                   	push   %edi
4021f5:	8d 4e 20             	lea    0x20(%esi),%ecx
4021f8:	51                   	push   %ecx
4021f9:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4021fc:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4021ff:	40                   	inc    %eax
402200:	2b c8                	sub    %eax,%ecx
402202:	51                   	push   %ecx
402203:	8d 84 05 80 d7 ff ff 	lea    -0x2880(%ebp,%eax,1),%eax
40220a:	50                   	push   %eax
40220b:	8d 85 80 d7 ff ff    	lea    -0x2880(%ebp),%eax
402211:	50                   	push   %eax
402212:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
402215:	e8 75 40 00 00       	call   0x40628f
40221a:	eb 0b                	jmp    0x402227
40221c:	8d 46 20             	lea    0x20(%esi),%eax
40221f:	33 c9                	xor    %ecx,%ecx
402221:	89 45 e8             	mov    %eax,-0x18(%ebp)
402224:	66 89 08             	mov    %cx,(%eax)
402227:	57                   	push   %edi
402228:	8d 85 80 f7 ff ff    	lea    -0x880(%ebp),%eax
40222e:	50                   	push   %eax
40222f:	8d 85 80 d7 ff ff    	lea    -0x2880(%ebp),%eax
402235:	50                   	push   %eax
402236:	e8 7a e6 00 00       	call   0x4108b5
40223b:	57                   	push   %edi
40223c:	ff 75 e8             	push   -0x18(%ebp)
40223f:	8d 85 80 f7 ff ff    	lea    -0x880(%ebp),%eax
402245:	ff 75 e8             	push   -0x18(%ebp)
402248:	50                   	push   %eax
402249:	e8 02 80 00 00       	call   0x40a250
40224e:	56                   	push   %esi
40224f:	8b cb                	mov    %ebx,%ecx
402251:	e8 2e f8 ff ff       	call   0x401a84
402256:	e9 2c 01 00 00       	jmp    0x402387
40225b:	8d 46 20             	lea    0x20(%esi),%eax
40225e:	68 00 08 00 00       	push   $0x800
402263:	50                   	push   %eax
402264:	89 45 e8             	mov    %eax,-0x18(%ebp)
402267:	8d 85 80 d7 ff ff    	lea    -0x2880(%ebp),%eax
40226d:	50                   	push   %eax
40226e:	e8 01 f5 00 00       	call   0x411774
402273:	8b 7e 0c             	mov    0xc(%esi),%edi
402276:	2b 7d ec             	sub    -0x14(%ebp),%edi
402279:	83 ef 20             	sub    $0x20,%edi
40227c:	f7 46 08 00 04 00 00 	testl  $0x400,0x8(%esi)
402283:	74 03                	je     0x402288
402285:	83 ef 08             	sub    $0x8,%edi
402288:	85 ff                	test   %edi,%edi
40228a:	0f 8e dd 00 00 00    	jle    0x40236d
402290:	8d 8e 20 10 00 00    	lea    0x1020(%esi),%ecx
402296:	57                   	push   %edi
402297:	e8 33 f9 ff ff       	call   0x401bcf
40229c:	57                   	push   %edi
40229d:	ff b6 20 10 00 00    	push   0x1020(%esi)
4022a3:	8d 4d b8             	lea    -0x48(%ebp),%ecx
4022a6:	e8 84 92 00 00       	call   0x40b52f
4022ab:	68 64 a4 42 00       	push   $0x42a464
4022b0:	ff 75 e8             	push   -0x18(%ebp)
4022b3:	e8 49 81 01 00       	call   0x41a401
4022b8:	59                   	pop    %ecx
4022b9:	59                   	pop    %ecx
4022ba:	85 c0                	test   %eax,%eax
4022bc:	0f 85 ab 00 00 00    	jne    0x40236d
4022c2:	8b 86 20 10 00 00    	mov    0x1020(%esi),%eax
4022c8:	0f b6 48 0b          	movzbl 0xb(%eax),%ecx
4022cc:	0f b6 50 0a          	movzbl 0xa(%eax),%edx
4022d0:	83 c0 08             	add    $0x8,%eax
4022d3:	c1 e1 08             	shl    $0x8,%ecx
4022d6:	03 ca                	add    %edx,%ecx
4022d8:	0f b6 50 01          	movzbl 0x1(%eax),%edx
4022dc:	0f b6 00             	movzbl (%eax),%eax
4022df:	83 a3 0c 57 00 00 00 	andl   $0x0,0x570c(%ebx)
4022e6:	c1 e1 08             	shl    $0x8,%ecx
4022e9:	6a 00                	push   $0x0
4022eb:	03 ca                	add    %edx,%ecx
4022ed:	68 00 02 00 00       	push   $0x200
4022f2:	ff b3 0c 57 00 00    	push   0x570c(%ebx)
4022f8:	c1 e1 08             	shl    $0x8,%ecx
4022fb:	03 c8                	add    %eax,%ecx
4022fd:	51                   	push   %ecx
4022fe:	e8 ad 82 01 00       	call   0x41a5b0
402303:	89 83 08 57 00 00    	mov    %eax,0x5708(%ebx)
402309:	8b 03                	mov    (%ebx),%eax
40230b:	8b cb                	mov    %ebx,%ecx
40230d:	89 93 0c 57 00 00    	mov    %edx,0x570c(%ebx)
402313:	ff 50 10             	call   *0x10(%eax)
402316:	52                   	push   %edx
402317:	50                   	push   %eax
402318:	ff b3 0c 57 00 00    	push   0x570c(%ebx)
40231e:	89 45 d8             	mov    %eax,-0x28(%ebp)
402321:	ff b3 08 57 00 00    	push   0x5708(%ebx)
402327:	89 55 dc             	mov    %edx,-0x24(%ebp)
40232a:	e8 5b e5 00 00       	call   0x41088a
40232f:	ff 75 dc             	push   -0x24(%ebp)
402332:	89 83 10 57 00 00    	mov    %eax,0x5710(%ebx)
402338:	ff 75 d8             	push   -0x28(%ebp)
40233b:	8b f8                	mov    %eax,%edi
40233d:	6a 00                	push   $0x0
40233f:	68 c8 00 00 00       	push   $0xc8
402344:	ff 75 dc             	push   -0x24(%ebp)
402347:	ff 75 d8             	push   -0x28(%ebp)
40234a:	e8 b1 81 01 00       	call   0x41a500
40234f:	03 83 08 57 00 00    	add    0x5708(%ebx),%eax
402355:	13 93 0c 57 00 00    	adc    0x570c(%ebx),%edx
40235b:	52                   	push   %edx
40235c:	50                   	push   %eax
40235d:	e8 28 e5 00 00       	call   0x41088a
402362:	3b c7                	cmp    %edi,%eax
402364:	7e 07                	jle    0x40236d
402366:	47                   	inc    %edi
402367:	89 bb 10 57 00 00    	mov    %edi,0x5710(%ebx)
40236d:	68 5c a4 42 00       	push   $0x42a45c
402372:	ff 75 e8             	push   -0x18(%ebp)
402375:	e8 87 80 01 00       	call   0x41a401
40237a:	59                   	pop    %ecx
40237b:	59                   	pop    %ecx
40237c:	85 c0                	test   %eax,%eax
40237e:	75 07                	jne    0x402387
402380:	c6 83 36 a2 00 00 01 	movb   $0x1,0xa236(%ebx)
402387:	f7 46 08 00 04 00 00 	testl  $0x400,0x8(%esi)
40238e:	74 11                	je     0x4023a1
402390:	6a 08                	push   $0x8
402392:	8d 86 91 10 00 00    	lea    0x1091(%esi),%eax
402398:	50                   	push   %eax
402399:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40239c:	e8 8e 91 00 00       	call   0x40b52f
4023a1:	ff 75 e0             	push   -0x20(%ebp)
4023a4:	8d 8e 30 10 00 00    	lea    0x1030(%esi),%ecx
4023aa:	e8 05 ef 00 00       	call   0x4112b4
4023af:	f7 46 08 00 10 00 00 	testl  $0x1000,0x8(%esi)
4023b6:	0f 84 d1 00 00 00    	je     0x40248d
4023bc:	8d 4d b8             	lea    -0x48(%ebp),%ecx
4023bf:	e8 4f 90 00 00       	call   0x40b413
4023c4:	83 65 b4 00          	andl   $0x0,-0x4c(%ebp)
4023c8:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
4023cc:	8d 8b f8 67 00 00    	lea    0x67f8(%ebx),%ecx
4023d2:	0f b7 c0             	movzwl %ax,%eax
4023d5:	89 4d a8             	mov    %ecx,-0x58(%ebp)
4023d8:	8d 8b 00 68 00 00    	lea    0x6800(%ebx),%ecx
4023de:	0f b7 c0             	movzwl %ax,%eax
4023e1:	89 4d ac             	mov    %ecx,-0x54(%ebp)