40c100:	66 89 02             	mov    %ax,(%edx)
40c103:	eb d0                	jmp    0x40c0d5
40c105:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c108:	85 c9                	test   %ecx,%ecx
40c10a:	75 07                	jne    0x40c113
40c10c:	33 c0                	xor    %eax,%eax
40c10e:	66 89 02             	mov    %ax,(%edx)
40c111:	eb d4                	jmp    0x40c0e7
40c113:	8b c2                	mov    %edx,%eax
40c115:	83 fb ff             	cmp    $0xffffffff,%ebx
40c118:	75 18                	jne    0x40c132
40c11a:	8b f2                	mov    %edx,%esi
40c11c:	2b f1                	sub    %ecx,%esi
40c11e:	0f b7 01             	movzwl (%ecx),%eax
40c121:	66 89 04 0e          	mov    %ax,(%esi,%ecx,1)
40c125:	83 c1 02             	add    $0x2,%ecx
40c128:	66 85 c0             	test   %ax,%ax
40c12b:	74 27                	je     0x40c154
40c12d:	4f                   	dec    %edi
40c12e:	75 ee                	jne    0x40c11e
40c130:	eb 22                	jmp    0x40c154
40c132:	8b f1                	mov    %ecx,%esi
40c134:	2b f2                	sub    %edx,%esi
40c136:	0f b7 0c 06          	movzwl (%esi,%eax,1),%ecx
40c13a:	66 89 08             	mov    %cx,(%eax)
40c13d:	83 c0 02             	add    $0x2,%eax
40c140:	66 85 c9             	test   %cx,%cx
40c143:	74 06                	je     0x40c14b
40c145:	4f                   	dec    %edi
40c146:	74 03                	je     0x40c14b
40c148:	4b                   	dec    %ebx
40c149:	75 eb                	jne    0x40c136
40c14b:	85 db                	test   %ebx,%ebx
40c14d:	75 05                	jne    0x40c154
40c14f:	33 c9                	xor    %ecx,%ecx
40c151:	66 89 08             	mov    %cx,(%eax)
40c154:	85 ff                	test   %edi,%edi
40c156:	0f 85 79 ff ff ff    	jne    0x40c0d5
40c15c:	33 c0                	xor    %eax,%eax
40c15e:	83 fb ff             	cmp    $0xffffffff,%ebx
40c161:	75 10                	jne    0x40c173
40c163:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c166:	6a 50                	push   $0x50
40c168:	66 89 44 4a fe       	mov    %ax,-0x2(%edx,%ecx,2)
40c16d:	58                   	pop    %eax
40c16e:	e9 64 ff ff ff       	jmp    0x40c0d7
40c173:	66 89 02             	mov    %ax,(%edx)
40c176:	e8 ac 7f ff ff       	call   0x404127
40c17b:	6a 22                	push   $0x22
40c17d:	59                   	pop    %ecx
40c17e:	89 08                	mov    %ecx,(%eax)
40c180:	8b f1                	mov    %ecx,%esi
40c182:	e9 6a ff ff ff       	jmp    0x40c0f1
40c187:	8b ff                	mov    %edi,%edi
40c189:	55                   	push   %ebp
40c18a:	8b ec                	mov    %esp,%ebp
40c18c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c18f:	85 c9                	test   %ecx,%ecx
40c191:	78 1e                	js     0x40c1b1
40c193:	83 f9 02             	cmp    $0x2,%ecx
40c196:	7e 0c                	jle    0x40c1a4
40c198:	83 f9 03             	cmp    $0x3,%ecx
40c19b:	75 14                	jne    0x40c1b1
40c19d:	a1 f0 2e 41 00       	mov    0x412ef0,%eax
40c1a2:	5d                   	pop    %ebp
40c1a3:	c3                   	ret
40c1a4:	a1 f0 2e 41 00       	mov    0x412ef0,%eax
40c1a9:	89 0d f0 2e 41 00    	mov    %ecx,0x412ef0
40c1af:	5d                   	pop    %ebp
40c1b0:	c3                   	ret
40c1b1:	e8 71 7f ff ff       	call   0x404127
40c1b6:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c1bc:	e8 c6 6a ff ff       	call   0x402c87
40c1c1:	83 c8 ff             	or     $0xffffffff,%eax
40c1c4:	5d                   	pop    %ebp
40c1c5:	c3                   	ret
40c1c6:	8b ff                	mov    %edi,%edi
40c1c8:	55                   	push   %ebp
40c1c9:	8b ec                	mov    %esp,%ebp
40c1cb:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40c1cf:	75 0b                	jne    0x40c1dc
40c1d1:	ff 75 0c             	push   0xc(%ebp)
40c1d4:	e8 16 60 ff ff       	call   0x4021ef
40c1d9:	59                   	pop    %ecx
40c1da:	5d                   	pop    %ebp
40c1db:	c3                   	ret
40c1dc:	56                   	push   %esi
40c1dd:	8b 75 0c             	mov    0xc(%ebp),%esi
40c1e0:	85 f6                	test   %esi,%esi
40c1e2:	75 0d                	jne    0x40c1f1
40c1e4:	ff 75 08             	push   0x8(%ebp)
40c1e7:	e8 7f 5d ff ff       	call   0x401f6b
40c1ec:	59                   	pop    %ecx
40c1ed:	33 c0                	xor    %eax,%eax
40c1ef:	eb 4d                	jmp    0x40c23e
40c1f1:	57                   	push   %edi
40c1f2:	eb 30                	jmp    0x40c224
40c1f4:	85 f6                	test   %esi,%esi
40c1f6:	75 01                	jne    0x40c1f9
40c1f8:	46                   	inc    %esi
40c1f9:	56                   	push   %esi
40c1fa:	ff 75 08             	push   0x8(%ebp)
40c1fd:	6a 00                	push   $0x0
40c1ff:	ff 35 24 32 41 00    	push   0x413224
40c205:	ff 15 2c f1 40 00    	call   *0x40f12c
40c20b:	8b f8                	mov    %eax,%edi
40c20d:	85 ff                	test   %edi,%edi
40c20f:	75 5e                	jne    0x40c26f
40c211:	39 05 bc 38 41 00    	cmp    %eax,0x4138bc
40c217:	74 40                	je     0x40c259
40c219:	56                   	push   %esi
40c21a:	e8 33 a4 ff ff       	call   0x406652
40c21f:	59                   	pop    %ecx
40c220:	85 c0                	test   %eax,%eax
40c222:	74 1d                	je     0x40c241
40c224:	83 fe e0             	cmp    $0xffffffe0,%esi
40c227:	76 cb                	jbe    0x40c1f4
40c229:	56                   	push   %esi
40c22a:	e8 23 a4 ff ff       	call   0x406652
40c22f:	59                   	pop    %ecx
40c230:	e8 f2 7e ff ff       	call   0x404127
40c235:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40c23b:	33 c0                	xor    %eax,%eax
40c23d:	5f                   	pop    %edi
40c23e:	5e                   	pop    %esi
40c23f:	5d                   	pop    %ebp
40c240:	c3                   	ret
40c241:	e8 e1 7e ff ff       	call   0x404127
40c246:	8b f0                	mov    %eax,%esi
40c248:	ff 15 44 f0 40 00    	call   *0x40f044
40c24e:	50                   	push   %eax
40c24f:	e8 91 7e ff ff       	call   0x4040e5
40c254:	59                   	pop    %ecx
40c255:	89 06                	mov    %eax,(%esi)
40c257:	eb e2                	jmp    0x40c23b
40c259:	e8 c9 7e ff ff       	call   0x404127
40c25e:	8b f0                	mov    %eax,%esi
40c260:	ff 15 44 f0 40 00    	call   *0x40f044
40c266:	50                   	push   %eax
40c267:	e8 79 7e ff ff       	call   0x4040e5
40c26c:	59                   	pop    %ecx
40c26d:	89 06                	mov    %eax,(%esi)
40c26f:	8b c7                	mov    %edi,%eax
40c271:	eb ca                	jmp    0x40c23d
40c273:	8b ff                	mov    %edi,%edi
40c275:	55                   	push   %ebp
40c276:	8b ec                	mov    %esp,%ebp
40c278:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c27b:	53                   	push   %ebx
40c27c:	33 db                	xor    %ebx,%ebx
40c27e:	3b cb                	cmp    %ebx,%ecx
40c280:	76 1b                	jbe    0x40c29d
40c282:	6a e0                	push   $0xffffffe0
40c284:	33 d2                	xor    %edx,%edx
40c286:	58                   	pop    %eax
40c287:	f7 f1                	div    %ecx
40c289:	3b 45 10             	cmp    0x10(%ebp),%eax
40c28c:	73 0f                	jae    0x40c29d
40c28e:	e8 94 7e ff ff       	call   0x404127
40c293:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40c299:	33 c0                	xor    %eax,%eax
40c29b:	eb 41                	jmp    0x40c2de
40c29d:	0f af 4d 10          	imul   0x10(%ebp),%ecx
40c2a1:	56                   	push   %esi
40c2a2:	57                   	push   %edi
40c2a3:	8b f1                	mov    %ecx,%esi
40c2a5:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40c2a8:	74 0b                	je     0x40c2b5
40c2aa:	ff 75 08             	push   0x8(%ebp)
40c2ad:	e8 c1 22 00 00       	call   0x40e573
40c2b2:	59                   	pop    %ecx
40c2b3:	8b d8                	mov    %eax,%ebx
40c2b5:	56                   	push   %esi
40c2b6:	ff 75 08             	push   0x8(%ebp)
40c2b9:	e8 08 ff ff ff       	call   0x40c1c6
40c2be:	8b f8                	mov    %eax,%edi
40c2c0:	59                   	pop    %ecx
40c2c1:	59                   	pop    %ecx
40c2c2:	85 ff                	test   %edi,%edi
40c2c4:	74 14                	je     0x40c2da
40c2c6:	3b de                	cmp    %esi,%ebx
40c2c8:	73 10                	jae    0x40c2da
40c2ca:	2b f3                	sub    %ebx,%esi
40c2cc:	56                   	push   %esi
40c2cd:	6a 00                	push   $0x0
40c2cf:	03 df                	add    %edi,%ebx
40c2d1:	53                   	push   %ebx
40c2d2:	e8 09 b7 ff ff       	call   0x4079e0
40c2d7:	83 c4 0c             	add    $0xc,%esp
40c2da:	8b c7                	mov    %edi,%eax
40c2dc:	5f                   	pop    %edi
40c2dd:	5e                   	pop    %esi
40c2de:	5b                   	pop    %ebx
40c2df:	5d                   	pop    %ebp
40c2e0:	c3                   	ret
40c2e1:	8b ff                	mov    %edi,%edi
40c2e3:	55                   	push   %ebp
40c2e4:	8b ec                	mov    %esp,%ebp
40c2e6:	b8 e4 1a 00 00       	mov    $0x1ae4,%eax
40c2eb:	e8 10 15 00 00       	call   0x40d800
40c2f0:	a1 84 22 41 00       	mov    0x412284,%eax
40c2f5:	33 c5                	xor    %ebp,%eax
40c2f7:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c2fa:	8b 45 0c             	mov    0xc(%ebp),%eax
40c2fd:	56                   	push   %esi
40c2fe:	8b 75 08             	mov    0x8(%ebp),%esi
40c301:	57                   	push   %edi
40c302:	33 ff                	xor    %edi,%edi
40c304:	89 85 34 e5 ff ff    	mov    %eax,-0x1acc(%ebp)
40c30a:	89 bd 38 e5 ff ff    	mov    %edi,-0x1ac8(%ebp)
40c310:	89 bd 30 e5 ff ff    	mov    %edi,-0x1ad0(%ebp)
40c316:	39 7d 10             	cmp    %edi,0x10(%ebp)
40c319:	75 07                	jne    0x40c322
40c31b:	33 c0                	xor    %eax,%eax
40c31d:	e9 ae 06 00 00       	jmp    0x40c9d0
40c322:	3b c7                	cmp    %edi,%eax
40c324:	75 1f                	jne    0x40c345
40c326:	e8 0f 7e ff ff       	call   0x40413a
40c32b:	89 38                	mov    %edi,(%eax)
40c32d:	e8 f5 7d ff ff       	call   0x404127
40c332:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c338:	e8 4a 69 ff ff       	call   0x402c87
40c33d:	83 c8 ff             	or     $0xffffffff,%eax
40c340:	e9 8b 06 00 00       	jmp    0x40c9d0
40c345:	8b c6                	mov    %esi,%eax
40c347:	c1 f8 05             	sar    $0x5,%eax
40c34a:	8b fe                	mov    %esi,%edi
40c34c:	53                   	push   %ebx
40c34d:	8d 1c 85 20 46 41 00 	lea    0x414620(,%eax,4),%ebx
40c354:	8b 03                	mov    (%ebx),%eax
40c356:	83 e7 1f             	and    $0x1f,%edi
40c359:	c1 e7 06             	shl    $0x6,%edi
40c35c:	8a 4c 38 24          	mov    0x24(%eax,%edi,1),%cl
40c360:	02 c9                	add    %cl,%cl
40c362:	d0 f9                	sar    $1,%cl
40c364:	89 9d 24 e5 ff ff    	mov    %ebx,-0x1adc(%ebp)
40c36a:	88 8d 3f e5 ff ff    	mov    %cl,-0x1ac1(%ebp)
40c370:	80 f9 02             	cmp    $0x2,%cl
40c373:	74 05                	je     0x40c37a
40c375:	80 f9 01             	cmp    $0x1,%cl
40c378:	75 27                	jne    0x40c3a1
40c37a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c37d:	f7 d1                	not    %ecx
40c37f:	f6 c1 01             	test   $0x1,%cl
40c382:	75 1d                	jne    0x40c3a1
40c384:	e8 b1 7d ff ff       	call   0x40413a
40c389:	83 20 00             	andl   $0x0,(%eax)
40c38c:	e8 96 7d ff ff       	call   0x404127
40c391:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c397:	e8 eb 68 ff ff       	call   0x402c87
40c39c:	e9 1d 06 00 00       	jmp    0x40c9be
40c3a1:	f6 44 38 04 20       	testb  $0x20,0x4(%eax,%edi,1)
40c3a6:	74 0f                	je     0x40c3b7
40c3a8:	6a 02                	push   $0x2
40c3aa:	6a 00                	push   $0x0
40c3ac:	6a 00                	push   $0x0
40c3ae:	56                   	push   %esi
40c3af:	e8 77 14 00 00       	call   0x40d82b
40c3b4:	83 c4 10             	add    $0x10,%esp
40c3b7:	56                   	push   %esi
40c3b8:	e8 8a e5 ff ff       	call   0x40a947
40c3bd:	59                   	pop    %ecx
40c3be:	85 c0                	test   %eax,%eax
40c3c0:	0f 84 99 02 00 00    	je     0x40c65f
40c3c6:	8b 03                	mov    (%ebx),%eax
40c3c8:	f6 44 07 04 80       	testb  $0x80,0x4(%edi,%eax,1)
40c3cd:	0f 84 8c 02 00 00    	je     0x40c65f
40c3d3:	e8 0e 9a ff ff       	call   0x405de6
40c3d8:	8b 40 6c             	mov    0x6c(%eax),%eax
40c3db:	33 c9                	xor    %ecx,%ecx
40c3dd:	39 48 14             	cmp    %ecx,0x14(%eax)
40c3e0:	8d 85 20 e5 ff ff    	lea    -0x1ae0(%ebp),%eax
40c3e6:	0f 94 c1             	sete   %cl
40c3e9:	50                   	push   %eax
40c3ea:	8b 03                	mov    (%ebx),%eax
40c3ec:	ff 34 07             	push   (%edi,%eax,1)
40c3ef:	8b f1                	mov    %ecx,%esi
40c3f1:	ff 15 34 f1 40 00    	call   *0x40f134
40c3f7:	33 c9                	xor    %ecx,%ecx
40c3f9:	3b c1                	cmp    %ecx,%eax
40c3fb:	0f 84 60 02 00 00    	je     0x40c661
40c401:	3b f1                	cmp    %ecx,%esi
40c403:	74 0c                	je     0x40c411
40c405:	38 8d 3f e5 ff ff    	cmp    %cl,-0x1ac1(%ebp)
40c40b:	0f 84 50 02 00 00    	je     0x40c661
40c411:	ff 15 30 f1 40 00    	call   *0x40f130
40c417:	8b 9d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ebx
40c41d:	89 85 20 e5 ff ff    	mov    %eax,-0x1ae0(%ebp)
40c423:	33 c0                	xor    %eax,%eax
40c425:	89 85 2c e5 ff ff    	mov    %eax,-0x1ad4(%ebp)
40c42b:	39 45 10             	cmp    %eax,0x10(%ebp)
40c42e:	0f 86 23 05 00 00    	jbe    0x40c957
40c434:	89 85 40 e5 ff ff    	mov    %eax,-0x1ac0(%ebp)
40c43a:	8a 85 3f e5 ff ff    	mov    -0x1ac1(%ebp),%al
40c440:	84 c0                	test   %al,%al
40c442:	0f 85 67 01 00 00    	jne    0x40c5af
40c448:	8a 0b                	mov    (%ebx),%cl
40c44a:	8b b5 24 e5 ff ff    	mov    -0x1adc(%ebp),%esi
40c450:	33 c0                	xor    %eax,%eax
40c452:	80 f9 0a             	cmp    $0xa,%cl
40c455:	0f 94 c0             	sete   %al
40c458:	89 85 1c e5 ff ff    	mov    %eax,-0x1ae4(%ebp)
40c45e:	8b 06                	mov    (%esi),%eax
40c460:	03 c7                	add    %edi,%eax
40c462:	83 78 38 00          	cmpl   $0x0,0x38(%eax)
40c466:	74 15                	je     0x40c47d
40c468:	8a 50 34             	mov    0x34(%eax),%dl
40c46b:	88 55 f4             	mov    %dl,-0xc(%ebp)
40c46e:	88 4d f5             	mov    %cl,-0xb(%ebp)
40c471:	83 60 38 00          	andl   $0x0,0x38(%eax)
40c475:	6a 02                	push   $0x2
40c477:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c47a:	50                   	push   %eax
40c47b:	eb 4b                	jmp    0x40c4c8
40c47d:	0f be c1             	movsbl %cl,%eax
40c480:	50                   	push   %eax
40c481:	e8 cd e8 ff ff       	call   0x40ad53
40c486:	59                   	pop    %ecx
40c487:	85 c0                	test   %eax,%eax
40c489:	74 3a                	je     0x40c4c5
40c48b:	8b 8d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ecx
40c491:	2b cb                	sub    %ebx,%ecx
40c493:	03 4d 10             	add    0x10(%ebp),%ecx
40c496:	33 c0                	xor    %eax,%eax
40c498:	40                   	inc    %eax
40c499:	3b c8                	cmp    %eax,%ecx
40c49b:	0f 86 a5 01 00 00    	jbe    0x40c646
40c4a1:	6a 02                	push   $0x2
40c4a3:	8d 85 44 e5 ff ff    	lea    -0x1abc(%ebp),%eax
40c4a9:	53                   	push   %ebx
40c4aa:	50                   	push   %eax
40c4ab:	e8 51 e8 ff ff       	call   0x40ad01
40c4b0:	83 c4 0c             	add    $0xc,%esp
40c4b3:	83 f8 ff             	cmp    $0xffffffff,%eax
40c4b6:	0f 84 92 04 00 00    	je     0x40c94e
40c4bc:	43                   	inc    %ebx
40c4bd:	ff 85 40 e5 ff ff    	incl   -0x1ac0(%ebp)
40c4c3:	eb 1b                	jmp    0x40c4e0
40c4c5:	6a 01                	push   $0x1
40c4c7:	53                   	push   %ebx
40c4c8:	8d 85 44 e5 ff ff    	lea    -0x1abc(%ebp),%eax
40c4ce:	50                   	push   %eax
40c4cf:	e8 2d e8 ff ff       	call   0x40ad01
40c4d4:	83 c4 0c             	add    $0xc,%esp
40c4d7:	83 f8 ff             	cmp    $0xffffffff,%eax
40c4da:	0f 84 6e 04 00 00    	je     0x40c94e
40c4e0:	33 c0                	xor    %eax,%eax
40c4e2:	50                   	push   %eax
40c4e3:	50                   	push   %eax
40c4e4:	6a 05                	push   $0x5