40b2e9:	83 e8 01             	sub    $0x1,%eax
40b2ec:	89 85 e8 fe ff ff    	mov    %eax,-0x118(%ebp)
40b2f2:	0f 88 76 fb ff ff    	js     0x40ae6e
40b2f8:	8b 74 85 84          	mov    -0x7c(%ebp,%eax,4),%esi
40b2fc:	8b 8c 85 0c ff ff ff 	mov    -0xf4(%ebp,%eax,4),%ecx
40b303:	89 b5 fc fe ff ff    	mov    %esi,-0x104(%ebp)
40b309:	e9 8e fb ff ff       	jmp    0x40ae9c
40b30e:	8b ff                	mov    %edi,%edi
40b310:	55                   	push   %ebp
40b311:	8b ec                	mov    %esp,%ebp
40b313:	51                   	push   %ecx
40b314:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b317:	53                   	push   %ebx
40b318:	8b 5d 10             	mov    0x10(%ebp),%ebx
40b31b:	56                   	push   %esi
40b31c:	8b 75 14             	mov    0x14(%ebp),%esi
40b31f:	57                   	push   %edi
40b320:	85 f6                	test   %esi,%esi
40b322:	75 1f                	jne    0x40b343
40b324:	85 c9                	test   %ecx,%ecx
40b326:	75 1f                	jne    0x40b347
40b328:	39 75 0c             	cmp    %esi,0xc(%ebp)
40b32b:	74 28                	je     0x40b355
40b32d:	e8 1e c6 ff ff       	call   0x407950
40b332:	6a 16                	push   $0x16
40b334:	5e                   	pop    %esi
40b335:	89 30                	mov    %esi,(%eax)
40b337:	e8 e0 a9 ff ff       	call   0x405d1c
40b33c:	8b c6                	mov    %esi,%eax
40b33e:	5f                   	pop    %edi
40b33f:	5e                   	pop    %esi
40b340:	5b                   	pop    %ebx
40b341:	c9                   	leave
40b342:	c3                   	ret
40b343:	85 c9                	test   %ecx,%ecx
40b345:	74 e6                	je     0x40b32d
40b347:	8b 45 0c             	mov    0xc(%ebp),%eax
40b34a:	85 c0                	test   %eax,%eax
40b34c:	74 df                	je     0x40b32d
40b34e:	85 f6                	test   %esi,%esi
40b350:	75 07                	jne    0x40b359
40b352:	c6 01 00             	movb   $0x0,(%ecx)
40b355:	33 c0                	xor    %eax,%eax
40b357:	eb e5                	jmp    0x40b33e
40b359:	85 db                	test   %ebx,%ebx
40b35b:	75 04                	jne    0x40b361
40b35d:	88 19                	mov    %bl,(%ecx)
40b35f:	eb cc                	jmp    0x40b32d
40b361:	2b d9                	sub    %ecx,%ebx
40b363:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b366:	8b d1                	mov    %ecx,%edx
40b368:	8b f8                	mov    %eax,%edi
40b36a:	83 fe ff             	cmp    $0xffffffff,%esi
40b36d:	75 11                	jne    0x40b380
40b36f:	8a 04 13             	mov    (%ebx,%edx,1),%al
40b372:	88 02                	mov    %al,(%edx)
40b374:	42                   	inc    %edx
40b375:	84 c0                	test   %al,%al
40b377:	74 dc                	je     0x40b355
40b379:	83 ef 01             	sub    $0x1,%edi
40b37c:	75 f1                	jne    0x40b36f
40b37e:	eb 20                	jmp    0x40b3a0
40b380:	8a 04 13             	mov    (%ebx,%edx,1),%al
40b383:	88 02                	mov    %al,(%edx)
40b385:	42                   	inc    %edx
40b386:	84 c0                	test   %al,%al
40b388:	74 cb                	je     0x40b355
40b38a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b38d:	83 ef 01             	sub    $0x1,%edi
40b390:	74 08                	je     0x40b39a
40b392:	83 e8 01             	sub    $0x1,%eax
40b395:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b398:	75 e6                	jne    0x40b380
40b39a:	85 c0                	test   %eax,%eax
40b39c:	75 02                	jne    0x40b3a0
40b39e:	88 02                	mov    %al,(%edx)
40b3a0:	85 ff                	test   %edi,%edi
40b3a2:	75 b1                	jne    0x40b355
40b3a4:	83 fe ff             	cmp    $0xffffffff,%esi
40b3a7:	75 0d                	jne    0x40b3b6
40b3a9:	8b 45 0c             	mov    0xc(%ebp),%eax
40b3ac:	6a 50                	push   $0x50
40b3ae:	c6 44 01 ff 00       	movb   $0x0,-0x1(%ecx,%eax,1)
40b3b3:	58                   	pop    %eax
40b3b4:	eb 88                	jmp    0x40b33e
40b3b6:	c6 01 00             	movb   $0x0,(%ecx)
40b3b9:	e8 92 c5 ff ff       	call   0x407950
40b3be:	6a 22                	push   $0x22
40b3c0:	e9 6f ff ff ff       	jmp    0x40b334
40b3c5:	8b ff                	mov    %edi,%edi
40b3c7:	55                   	push   %ebp
40b3c8:	8b ec                	mov    %esp,%ebp
40b3ca:	5d                   	pop    %ebp
40b3cb:	e9 3e ff ff ff       	jmp    0x40b30e
40b3d0:	55                   	push   %ebp
40b3d1:	8b ec                	mov    %esp,%ebp
40b3d3:	56                   	push   %esi
40b3d4:	33 c0                	xor    %eax,%eax
40b3d6:	50                   	push   %eax
40b3d7:	50                   	push   %eax
40b3d8:	50                   	push   %eax
40b3d9:	50                   	push   %eax
40b3da:	50                   	push   %eax
40b3db:	50                   	push   %eax
40b3dc:	50                   	push   %eax
40b3dd:	50                   	push   %eax
40b3de:	8b 55 0c             	mov    0xc(%ebp),%edx
40b3e1:	8d 49 00             	lea    0x0(%ecx),%ecx
40b3e4:	8a 02                	mov    (%edx),%al
40b3e6:	0a c0                	or     %al,%al
40b3e8:	74 09                	je     0x40b3f3
40b3ea:	83 c2 01             	add    $0x1,%edx
40b3ed:	0f ab 04 24          	bts    %eax,(%esp)
40b3f1:	eb f1                	jmp    0x40b3e4
40b3f3:	8b 75 08             	mov    0x8(%ebp),%esi
40b3f6:	8b ff                	mov    %edi,%edi
40b3f8:	8a 06                	mov    (%esi),%al
40b3fa:	0a c0                	or     %al,%al
40b3fc:	74 0c                	je     0x40b40a
40b3fe:	83 c6 01             	add    $0x1,%esi
40b401:	0f a3 04 24          	bt     %eax,(%esp)
40b405:	73 f1                	jae    0x40b3f8
40b407:	8d 46 ff             	lea    -0x1(%esi),%eax
40b40a:	83 c4 20             	add    $0x20,%esp
40b40d:	5e                   	pop    %esi
40b40e:	c9                   	leave
40b40f:	c3                   	ret
40b410:	8b ff                	mov    %edi,%edi
40b412:	55                   	push   %ebp
40b413:	8b ec                	mov    %esp,%ebp
40b415:	6a 00                	push   $0x0
40b417:	ff 75 0c             	push   0xc(%ebp)
40b41a:	ff 75 08             	push   0x8(%ebp)
40b41d:	e8 05 00 00 00       	call   0x40b427
40b422:	83 c4 0c             	add    $0xc,%esp
40b425:	5d                   	pop    %ebp
40b426:	c3                   	ret
40b427:	8b ff                	mov    %edi,%edi
40b429:	55                   	push   %ebp
40b42a:	8b ec                	mov    %esp,%ebp
40b42c:	83 ec 10             	sub    $0x10,%esp
40b42f:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40b433:	75 14                	jne    0x40b449
40b435:	e8 16 c5 ff ff       	call   0x407950
40b43a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b440:	e8 d7 a8 ff ff       	call   0x405d1c
40b445:	33 c0                	xor    %eax,%eax
40b447:	c9                   	leave
40b448:	c3                   	ret
40b449:	56                   	push   %esi
40b44a:	8b 75 0c             	mov    0xc(%ebp),%esi
40b44d:	85 f6                	test   %esi,%esi
40b44f:	75 12                	jne    0x40b463
40b451:	e8 fa c4 ff ff       	call   0x407950
40b456:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b45c:	e8 bb a8 ff ff       	call   0x405d1c
40b461:	eb 05                	jmp    0x40b468
40b463:	39 75 08             	cmp    %esi,0x8(%ebp)
40b466:	72 04                	jb     0x40b46c
40b468:	33 c0                	xor    %eax,%eax
40b46a:	eb 45                	jmp    0x40b4b1
40b46c:	ff 75 10             	push   0x10(%ebp)
40b46f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b472:	e8 a9 cb ff ff       	call   0x408020
40b477:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40b47a:	8d 56 ff             	lea    -0x1(%esi),%edx
40b47d:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
40b481:	74 1c                	je     0x40b49f
40b483:	4a                   	dec    %edx
40b484:	39 55 08             	cmp    %edx,0x8(%ebp)
40b487:	77 0a                	ja     0x40b493
40b489:	0f b6 02             	movzbl (%edx),%eax
40b48c:	f6 44 08 19 04       	testb  $0x4,0x19(%eax,%ecx,1)
40b491:	75 f0                	jne    0x40b483
40b493:	8b c6                	mov    %esi,%eax
40b495:	2b c2                	sub    %edx,%eax
40b497:	8b d6                	mov    %esi,%edx
40b499:	83 e0 01             	and    $0x1,%eax
40b49c:	2b d0                	sub    %eax,%edx
40b49e:	4a                   	dec    %edx
40b49f:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b4a3:	74 0a                	je     0x40b4af
40b4a5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b4a8:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40b4af:	8b c2                	mov    %edx,%eax
40b4b1:	5e                   	pop    %esi
40b4b2:	c9                   	leave
40b4b3:	c3                   	ret
40b4b4:	8b ff                	mov    %edi,%edi
40b4b6:	55                   	push   %ebp
40b4b7:	8b ec                	mov    %esp,%ebp
40b4b9:	51                   	push   %ecx
40b4ba:	51                   	push   %ecx
40b4bb:	a1 14 60 41 00       	mov    0x416014,%eax
40b4c0:	33 c5                	xor    %ebp,%eax
40b4c2:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b4c5:	53                   	push   %ebx
40b4c6:	56                   	push   %esi
40b4c7:	57                   	push   %edi
40b4c8:	8b 7d 18             	mov    0x18(%ebp),%edi
40b4cb:	85 ff                	test   %edi,%edi
40b4cd:	7e 14                	jle    0x40b4e3
40b4cf:	57                   	push   %edi
40b4d0:	ff 75 14             	push   0x14(%ebp)
40b4d3:	e8 61 13 00 00       	call   0x40c839
40b4d8:	59                   	pop    %ecx
40b4d9:	3b c7                	cmp    %edi,%eax
40b4db:	59                   	pop    %ecx
40b4dc:	8d 78 01             	lea    0x1(%eax),%edi
40b4df:	7c 02                	jl     0x40b4e3
40b4e1:	8b f8                	mov    %eax,%edi
40b4e3:	8b 5d 24             	mov    0x24(%ebp),%ebx
40b4e6:	85 db                	test   %ebx,%ebx
40b4e8:	75 0b                	jne    0x40b4f5
40b4ea:	8b 45 08             	mov    0x8(%ebp),%eax
40b4ed:	8b 00                	mov    (%eax),%eax
40b4ef:	8b 58 08             	mov    0x8(%eax),%ebx
40b4f2:	89 5d 24             	mov    %ebx,0x24(%ebp)
40b4f5:	33 c0                	xor    %eax,%eax
40b4f7:	39 45 28             	cmp    %eax,0x28(%ebp)
40b4fa:	6a 00                	push   $0x0
40b4fc:	6a 00                	push   $0x0
40b4fe:	0f 95 c0             	setne  %al
40b501:	57                   	push   %edi
40b502:	ff 75 14             	push   0x14(%ebp)
40b505:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
40b50c:	50                   	push   %eax
40b50d:	53                   	push   %ebx
40b50e:	e8 71 d8 ff ff       	call   0x408d84
40b513:	83 c4 18             	add    $0x18,%esp
40b516:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b519:	85 c0                	test   %eax,%eax
40b51b:	0f 84 70 01 00 00    	je     0x40b691
40b521:	03 c0                	add    %eax,%eax
40b523:	8d 48 08             	lea    0x8(%eax),%ecx
40b526:	3b c1                	cmp    %ecx,%eax
40b528:	1b c0                	sbb    %eax,%eax
40b52a:	23 c1                	and    %ecx,%eax
40b52c:	0f 84 52 01 00 00    	je     0x40b684
40b532:	3d 00 04 00 00       	cmp    $0x400,%eax
40b537:	77 17                	ja     0x40b550
40b539:	e8 12 38 00 00       	call   0x40ed50
40b53e:	8b f4                	mov    %esp,%esi
40b540:	85 f6                	test   %esi,%esi
40b542:	0f 84 3e 01 00 00    	je     0x40b686
40b548:	c7 06 cc cc 00 00    	movl   $0xcccc,(%esi)
40b54e:	eb 17                	jmp    0x40b567
40b550:	50                   	push   %eax
40b551:	e8 d5 c2 ff ff       	call   0x40782b
40b556:	8b f0                	mov    %eax,%esi
40b558:	59                   	pop    %ecx
40b559:	85 f6                	test   %esi,%esi
40b55b:	0f 84 25 01 00 00    	je     0x40b686
40b561:	c7 06 dd dd 00 00    	movl   $0xdddd,(%esi)
40b567:	83 c6 08             	add    $0x8,%esi
40b56a:	85 f6                	test   %esi,%esi
40b56c:	0f 84 14 01 00 00    	je     0x40b686
40b572:	ff 75 f8             	push   -0x8(%ebp)
40b575:	56                   	push   %esi
40b576:	57                   	push   %edi
40b577:	ff 75 14             	push   0x14(%ebp)
40b57a:	6a 01                	push   $0x1
40b57c:	53                   	push   %ebx
40b57d:	e8 02 d8 ff ff       	call   0x408d84
40b582:	83 c4 18             	add    $0x18,%esp
40b585:	85 c0                	test   %eax,%eax
40b587:	0f 84 f9 00 00 00    	je     0x40b686
40b58d:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b590:	33 c0                	xor    %eax,%eax
40b592:	50                   	push   %eax
40b593:	50                   	push   %eax
40b594:	50                   	push   %eax
40b595:	50                   	push   %eax
40b596:	50                   	push   %eax
40b597:	57                   	push   %edi
40b598:	56                   	push   %esi
40b599:	ff 75 10             	push   0x10(%ebp)
40b59c:	ff 75 0c             	push   0xc(%ebp)
40b59f:	e8 32 e9 ff ff       	call   0x409ed6
40b5a4:	8b d8                	mov    %eax,%ebx
40b5a6:	85 db                	test   %ebx,%ebx
40b5a8:	0f 84 d8 00 00 00    	je     0x40b686
40b5ae:	ba 00 04 00 00       	mov    $0x400,%edx
40b5b3:	85 55 10             	test   %edx,0x10(%ebp)
40b5b6:	74 38                	je     0x40b5f0
40b5b8:	8b 45 20             	mov    0x20(%ebp),%eax
40b5bb:	85 c0                	test   %eax,%eax
40b5bd:	0f 84 c5 00 00 00    	je     0x40b688
40b5c3:	3b d8                	cmp    %eax,%ebx
40b5c5:	0f 8f bb 00 00 00    	jg     0x40b686
40b5cb:	33 c9                	xor    %ecx,%ecx
40b5cd:	51                   	push   %ecx
40b5ce:	51                   	push   %ecx
40b5cf:	51                   	push   %ecx
40b5d0:	50                   	push   %eax
40b5d1:	ff 75 1c             	push   0x1c(%ebp)
40b5d4:	57                   	push   %edi
40b5d5:	56                   	push   %esi
40b5d6:	ff 75 10             	push   0x10(%ebp)
40b5d9:	ff 75 0c             	push   0xc(%ebp)
40b5dc:	e8 f5 e8 ff ff       	call   0x409ed6
40b5e1:	8b d8                	mov    %eax,%ebx
40b5e3:	85 db                	test   %ebx,%ebx
40b5e5:	0f 85 9d 00 00 00    	jne    0x40b688
40b5eb:	e9 96 00 00 00       	jmp    0x40b686
40b5f0:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40b5f3:	8d 48 08             	lea    0x8(%eax),%ecx
40b5f6:	3b c1                	cmp    %ecx,%eax
40b5f8:	1b c0                	sbb    %eax,%eax
40b5fa:	23 c1                	and    %ecx,%eax
40b5fc:	74 7b                	je     0x40b679
40b5fe:	3b c2                	cmp    %edx,%eax
40b600:	77 13                	ja     0x40b615
40b602:	e8 49 37 00 00       	call   0x40ed50
40b607:	8b fc                	mov    %esp,%edi
40b609:	85 ff                	test   %edi,%edi
40b60b:	74 6e                	je     0x40b67b
40b60d:	c7 07 cc cc 00 00    	movl   $0xcccc,(%edi)
40b613:	eb 13                	jmp    0x40b628
40b615:	50                   	push   %eax
40b616:	e8 10 c2 ff ff       	call   0x40782b
40b61b:	8b f8                	mov    %eax,%edi
40b61d:	59                   	pop    %ecx
40b61e:	85 ff                	test   %edi,%edi
40b620:	74 59                	je     0x40b67b
40b622:	c7 07 dd dd 00 00    	movl   $0xdddd,(%edi)
40b628:	83 c7 08             	add    $0x8,%edi
40b62b:	85 ff                	test   %edi,%edi
40b62d:	74 4c                	je     0x40b67b
40b62f:	33 c0                	xor    %eax,%eax
40b631:	50                   	push   %eax
40b632:	50                   	push   %eax
40b633:	50                   	push   %eax
40b634:	53                   	push   %ebx
40b635:	57                   	push   %edi
40b636:	ff 75 f8             	push   -0x8(%ebp)
40b639:	56                   	push   %esi
40b63a:	ff 75 10             	push   0x10(%ebp)
40b63d:	ff 75 0c             	push   0xc(%ebp)
40b640:	e8 91 e8 ff ff       	call   0x409ed6
40b645:	85 c0                	test   %eax,%eax
40b647:	74 32                	je     0x40b67b
40b649:	33 c0                	xor    %eax,%eax
40b64b:	50                   	push   %eax
40b64c:	50                   	push   %eax
40b64d:	39 45 20             	cmp    %eax,0x20(%ebp)
40b650:	75 1f                	jne    0x40b671
40b652:	50                   	push   %eax
40b653:	50                   	push   %eax
40b654:	53                   	push   %ebx