40c3c6:	5b                   	pop    %ebx
40c3c7:	c9                   	leave
40c3c8:	c2 04 00             	ret    $0x4
40c3cb:	8b ff                	mov    %edi,%edi
40c3cd:	55                   	push   %ebp
40c3ce:	8b ec                	mov    %esp,%ebp
40c3d0:	83 ec 0c             	sub    $0xc,%esp
40c3d3:	53                   	push   %ebx
40c3d4:	56                   	push   %esi
40c3d5:	57                   	push   %edi
40c3d6:	8b da                	mov    %edx,%ebx
40c3d8:	6a 00                	push   $0x0
40c3da:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40c3dd:	ff 15 74 20 41 00    	call   *0x412074
40c3e3:	85 db                	test   %ebx,%ebx
40c3e5:	0f 84 b2 00 00 00    	je     0x40c49d
40c3eb:	8b 7d 08             	mov    0x8(%ebp),%edi
40c3ee:	85 ff                	test   %edi,%edi
40c3f0:	0f 84 a7 00 00 00    	je     0x40c49d
40c3f6:	8b 75 0c             	mov    0xc(%ebp),%esi
40c3f9:	85 f6                	test   %esi,%esi
40c3fb:	0f 84 9c 00 00 00    	je     0x40c49d
40c401:	83 26 00             	andl   $0x0,(%esi)
40c404:	83 66 04 00          	andl   $0x0,0x4(%esi)
40c408:	51                   	push   %ecx
40c409:	51                   	push   %ecx
40c40a:	6a 3a                	push   $0x3a
40c40c:	5a                   	pop    %edx
40c40d:	8b cf                	mov    %edi,%ecx
40c40f:	e8 8c d9 ff ff       	call   0x409da0
40c414:	8b d8                	mov    %eax,%ebx
40c416:	83 fb ff             	cmp    $0xffffffff,%ebx
40c419:	0f 84 90 00 00 00    	je     0x40c4af
40c41f:	57                   	push   %edi
40c420:	ff 15 d4 20 41 00    	call   *0x4120d4
40c426:	2b c3                	sub    %ebx,%eax
40c428:	33 d2                	xor    %edx,%edx
40c42a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40c42d:	48                   	dec    %eax
40c42e:	6a 01                	push   $0x1
40c430:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c433:	8d 43 05             	lea    0x5(%ebx),%eax
40c436:	50                   	push   %eax
40c437:	6a 08                	push   $0x8
40c439:	59                   	pop    %ecx
40c43a:	e8 64 d1 ff ff       	call   0x4095a3
40c43f:	89 06                	mov    %eax,(%esi)
40c441:	85 c0                	test   %eax,%eax
40c443:	75 0e                	jne    0x40c453
40c445:	ff 15 48 20 41 00    	call   *0x412048
40c44b:	85 c0                	test   %eax,%eax
40c44d:	75 60                	jne    0x40c4af
40c44f:	6a 08                	push   $0x8
40c451:	eb 56                	jmp    0x40c4a9
40c453:	8b 45 fc             	mov    -0x4(%ebp),%eax
40c456:	33 d2                	xor    %edx,%edx
40c458:	6a 01                	push   $0x1
40c45a:	83 c0 05             	add    $0x5,%eax
40c45d:	50                   	push   %eax
40c45e:	6a 09                	push   $0x9
40c460:	59                   	pop    %ecx
40c461:	e8 3d d1 ff ff       	call   0x4095a3
40c466:	89 46 04             	mov    %eax,0x4(%esi)
40c469:	85 c0                	test   %eax,%eax
40c46b:	74 d8                	je     0x40c445
40c46d:	8b 0e                	mov    (%esi),%ecx
40c46f:	8d 43 01             	lea    0x1(%ebx),%eax
40c472:	50                   	push   %eax
40c473:	8b d7                	mov    %edi,%edx
40c475:	e8 7c df ff ff       	call   0x40a3f6
40c47a:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40c47e:	74 11                	je     0x40c491
40c480:	ff 75 f8             	push   -0x8(%ebp)
40c483:	8b 4e 04             	mov    0x4(%esi),%ecx
40c486:	8d 57 02             	lea    0x2(%edi),%edx
40c489:	8d 14 5a             	lea    (%edx,%ebx,2),%edx
40c48c:	e8 65 df ff ff       	call   0x40a3f6
40c491:	ff 36                	push   (%esi)
40c493:	8b 55 f4             	mov    -0xc(%ebp),%edx
40c496:	e8 63 fe ff ff       	call   0x40c2fe
40c49b:	eb 15                	jmp    0x40c4b2
40c49d:	ff 15 48 20 41 00    	call   *0x412048
40c4a3:	85 c0                	test   %eax,%eax
40c4a5:	75 08                	jne    0x40c4af
40c4a7:	6a 57                	push   $0x57
40c4a9:	ff 15 74 20 41 00    	call   *0x412074
40c4af:	83 c8 ff             	or     $0xffffffff,%eax
40c4b2:	5f                   	pop    %edi
40c4b3:	5e                   	pop    %esi
40c4b4:	5b                   	pop    %ebx
40c4b5:	c9                   	leave
40c4b6:	c2 08 00             	ret    $0x8
40c4b9:	8b ff                	mov    %edi,%edi
40c4bb:	55                   	push   %ebp
40c4bc:	8b ec                	mov    %esp,%ebp
40c4be:	51                   	push   %ecx
40c4bf:	56                   	push   %esi
40c4c0:	8b f2                	mov    %edx,%esi
40c4c2:	57                   	push   %edi
40c4c3:	85 f6                	test   %esi,%esi
40c4c5:	74 6e                	je     0x40c535
40c4c7:	ff 15 48 20 41 00    	call   *0x412048
40c4cd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c4d0:	e8 17 d2 ff ff       	call   0x4096ec
40c4d5:	85 c0                	test   %eax,%eax
40c4d7:	75 0a                	jne    0x40c4e3
40c4d9:	6a 07                	push   $0x7
40c4db:	59                   	pop    %ecx
40c4dc:	e8 76 d0 ff ff       	call   0x409557
40c4e1:	eb 0e                	jmp    0x40c4f1
40c4e3:	6a 00                	push   $0x0
40c4e5:	6a 00                	push   $0x0
40c4e7:	6a 07                	push   $0x7
40c4e9:	8b d0                	mov    %eax,%edx
40c4eb:	59                   	pop    %ecx
40c4ec:	e8 b2 d0 ff ff       	call   0x4095a3
40c4f1:	8b f8                	mov    %eax,%edi
40c4f3:	85 ff                	test   %edi,%edi
40c4f5:	74 3e                	je     0x40c535
40c4f7:	53                   	push   %ebx
40c4f8:	6a 0b                	push   $0xb
40c4fa:	83 c6 2c             	add    $0x2c,%esi
40c4fd:	5b                   	pop    %ebx
40c4fe:	83 3e 00             	cmpl   $0x0,(%esi)
40c501:	74 14                	je     0x40c517
40c503:	8b 46 e4             	mov    -0x1c(%esi),%eax
40c506:	25 00 00 01 00       	and    $0x10000,%eax
40c50b:	83 c8 00             	or     $0x0,%eax
40c50e:	74 07                	je     0x40c517
40c510:	8b ce                	mov    %esi,%ecx
40c512:	e8 af e6 ff ff       	call   0x40abc6
40c517:	83 c6 50             	add    $0x50,%esi
40c51a:	83 eb 01             	sub    $0x1,%ebx
40c51d:	75 df                	jne    0x40c4fe
40c51f:	8b cf                	mov    %edi,%ecx
40c521:	e8 e6 d1 ff ff       	call   0x40970c
40c526:	ff 75 fc             	push   -0x4(%ebp)
40c529:	ff 15 74 20 41 00    	call   *0x412074
40c52f:	33 c0                	xor    %eax,%eax
40c531:	40                   	inc    %eax
40c532:	5b                   	pop    %ebx
40c533:	eb 02                	jmp    0x40c537
40c535:	33 c0                	xor    %eax,%eax
40c537:	5f                   	pop    %edi
40c538:	5e                   	pop    %esi
40c539:	c9                   	leave
40c53a:	c3                   	ret
40c53b:	8b ff                	mov    %edi,%edi
40c53d:	55                   	push   %ebp
40c53e:	8b ec                	mov    %esp,%ebp
40c540:	83 e4 f8             	and    $0xfffffff8,%esp
40c543:	83 ec 3c             	sub    $0x3c,%esp
40c546:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40c54b:	53                   	push   %ebx
40c54c:	56                   	push   %esi
40c54d:	57                   	push   %edi
40c54e:	8b da                	mov    %edx,%ebx
40c550:	8b f9                	mov    %ecx,%edi
40c552:	6a 00                	push   $0x0
40c554:	89 5c 24 30          	mov    %ebx,0x30(%esp)
40c558:	89 7c 24 2c          	mov    %edi,0x2c(%esp)
40c55c:	ff 15 74 20 41 00    	call   *0x412074
40c562:	85 ff                	test   %edi,%edi
40c564:	0f 84 2e 03 00 00    	je     0x40c898
40c56a:	85 db                	test   %ebx,%ebx
40c56c:	0f 84 26 03 00 00    	je     0x40c898
40c572:	8b 75 10             	mov    0x10(%ebp),%esi
40c575:	85 f6                	test   %esi,%esi
40c577:	0f 84 1b 03 00 00    	je     0x40c898
40c57d:	e8 33 d4 ff ff       	call   0x4099b5
40c582:	85 c0                	test   %eax,%eax
40c584:	75 21                	jne    0x40c5a7
40c586:	b9 7f 15 00 00       	mov    $0x157f,%ecx
40c58b:	e8 c1 d4 ff ff       	call   0x409a51
40c590:	8b c8                	mov    %eax,%ecx
40c592:	e8 75 d1 ff ff       	call   0x40970c
40c597:	68 7e 04 00 00       	push   $0x47e
40c59c:	ff 15 74 20 41 00    	call   *0x412074
40c5a2:	e9 fe 02 00 00       	jmp    0x40c8a5
40c5a7:	e8 df ce ff ff       	call   0x40948b
40c5ac:	85 c0                	test   %eax,%eax
40c5ae:	0f 84 ec 02 00 00    	je     0x40c8a0
40c5b4:	33 c9                	xor    %ecx,%ecx
40c5b6:	e8 ce f1 ff ff       	call   0x40b789
40c5bb:	8b d8                	mov    %eax,%ebx
40c5bd:	89 5c 24 14          	mov    %ebx,0x14(%esp)
40c5c1:	85 db                	test   %ebx,%ebx
40c5c3:	0f 84 d7 02 00 00    	je     0x40c8a0
40c5c9:	56                   	push   %esi
40c5ca:	8d 4c 24 20          	lea    0x20(%esp),%ecx
40c5ce:	e8 e7 f4 ff ff       	call   0x40baba
40c5d3:	85 c0                	test   %eax,%eax
40c5d5:	0f 84 c5 02 00 00    	je     0x40c8a0
40c5db:	83 64 24 20 00       	andl   $0x0,0x20(%esp)
40c5e0:	33 c9                	xor    %ecx,%ecx
40c5e2:	41                   	inc    %ecx
40c5e3:	89 4c 24 24          	mov    %ecx,0x24(%esp)
40c5e7:	3b f9                	cmp    %ecx,%edi
40c5e9:	0f 86 62 01 00 00    	jbe    0x40c751
40c5ef:	8b 54 24 2c          	mov    0x2c(%esp),%edx
40c5f3:	8d 41 01             	lea    0x1(%ecx),%eax
40c5f6:	c7 44 24 18 02 00 00 	movl   $0x2,0x18(%esp)
40c5fd:	00
40c5fe:	8b 3c 8a             	mov    (%edx,%ecx,4),%edi
40c601:	3b 44 24 28          	cmp    0x28(%esp),%eax
40c605:	73 0a                	jae    0x40c611
40c607:	8b 44 8a 04          	mov    0x4(%edx,%ecx,4),%eax
40c60b:	89 44 24 10          	mov    %eax,0x10(%esp)
40c60f:	eb 05                	jmp    0x40c616
40c611:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40c616:	57                   	push   %edi
40c617:	8b d6                	mov    %esi,%edx
40c619:	e8 e0 fc ff ff       	call   0x40c2fe
40c61e:	8b c8                	mov    %eax,%ecx
40c620:	83 f9 ff             	cmp    $0xffffffff,%ecx
40c623:	75 3f                	jne    0x40c664
40c625:	8d 44 24 30          	lea    0x30(%esp),%eax
40c629:	8b d6                	mov    %esi,%edx
40c62b:	50                   	push   %eax
40c62c:	57                   	push   %edi
40c62d:	e8 99 fd ff ff       	call   0x40c3cb
40c632:	8b c8                	mov    %eax,%ecx
40c634:	83 f9 ff             	cmp    $0xffffffff,%ecx
40c637:	75 16                	jne    0x40c64f
40c639:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40c63d:	3b c1                	cmp    %ecx,%eax
40c63f:	0f 84 51 01 00 00    	je     0x40c796
40c645:	89 7c 24 10          	mov    %edi,0x10(%esp)
40c649:	8b c8                	mov    %eax,%ecx
40c64b:	33 ff                	xor    %edi,%edi
40c64d:	eb 0c                	jmp    0x40c65b
40c64f:	8b 44 24 34          	mov    0x34(%esp),%eax
40c653:	8b 7c 24 30          	mov    0x30(%esp),%edi
40c657:	89 44 24 10          	mov    %eax,0x10(%esp)
40c65b:	33 d2                	xor    %edx,%edx
40c65d:	42                   	inc    %edx
40c65e:	89 54 24 18          	mov    %edx,0x18(%esp)
40c662:	eb 04                	jmp    0x40c668
40c664:	8b 54 24 18          	mov    0x18(%esp),%edx
40c668:	6b d9 50             	imul   $0x50,%ecx,%ebx
40c66b:	03 de                	add    %esi,%ebx
40c66d:	0f 84 8a 01 00 00    	je     0x40c7fd
40c673:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40c677:	85 c9                	test   %ecx,%ecx
40c679:	74 5b                	je     0x40c6d6
40c67b:	83 fa 02             	cmp    $0x2,%edx
40c67e:	75 56                	jne    0x40c6d6
40c680:	8b 43 08             	mov    0x8(%ebx),%eax
40c683:	48                   	dec    %eax
40c684:	83 f8 09             	cmp    $0x9,%eax
40c687:	77 48                	ja     0x40c6d1
40c689:	0f b6 80 bb c8 40 00 	movzbl 0x40c8bb(%eax),%eax
40c690:	ff 24 85 b3 c8 40 00 	jmp    *0x40c8b3(,%eax,4)
40c697:	51                   	push   %ecx
40c698:	8b d6                	mov    %esi,%edx
40c69a:	e8 5f fc ff ff       	call   0x40c2fe
40c69f:	83 f8 ff             	cmp    $0xffffffff,%eax
40c6a2:	75 15                	jne    0x40c6b9
40c6a4:	8d 44 24 30          	lea    0x30(%esp),%eax
40c6a8:	8b d6                	mov    %esi,%edx
40c6aa:	50                   	push   %eax
40c6ab:	ff 74 24 14          	push   0x14(%esp)
40c6af:	e8 17 fd ff ff       	call   0x40c3cb
40c6b4:	83 f8 ff             	cmp    $0xffffffff,%eax
40c6b7:	74 05                	je     0x40c6be
40c6b9:	33 d2                	xor    %edx,%edx
40c6bb:	42                   	inc    %edx
40c6bc:	eb 04                	jmp    0x40c6c2
40c6be:	8b 54 24 18          	mov    0x18(%esp),%edx
40c6c2:	40                   	inc    %eax
40c6c3:	f7 d8                	neg    %eax
40c6c5:	1b c0                	sbb    %eax,%eax
40c6c7:	f7 d0                	not    %eax
40c6c9:	23 44 24 10          	and    0x10(%esp),%eax
40c6cd:	8b c8                	mov    %eax,%ecx
40c6cf:	eb 05                	jmp    0x40c6d6
40c6d1:	33 d2                	xor    %edx,%edx
40c6d3:	33 c9                	xor    %ecx,%ecx
40c6d5:	42                   	inc    %edx
40c6d6:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40c6da:	89 44 24 3c          	mov    %eax,0x3c(%esp)
40c6de:	8b 44 24 14          	mov    0x14(%esp),%eax
40c6e2:	89 44 24 40          	mov    %eax,0x40(%esp)
40c6e6:	8d 44 24 38          	lea    0x38(%esp),%eax
40c6ea:	89 54 24 38          	mov    %edx,0x38(%esp)
40c6ee:	8b d1                	mov    %ecx,%edx
40c6f0:	50                   	push   %eax
40c6f1:	8b cf                	mov    %edi,%ecx
40c6f3:	89 5c 24 48          	mov    %ebx,0x48(%esp)
40c6f7:	e8 8e f6 ff ff       	call   0x40bd8a
40c6fc:	8b 54 24 38          	mov    0x38(%esp),%edx
40c700:	85 c0                	test   %eax,%eax
40c702:	0f 84 38 01 00 00    	je     0x40c840
40c708:	8b 43 18             	mov    0x18(%ebx),%eax
40c70b:	85 c0                	test   %eax,%eax
40c70d:	74 09                	je     0x40c718
40c70f:	3b 43 1c             	cmp    0x1c(%ebx),%eax
40c712:	0f 84 a9 00 00 00    	je     0x40c7c1
40c718:	8b 43 10             	mov    0x10(%ebx),%eax
40c71b:	ff 43 1c             	incl   0x1c(%ebx)
40c71e:	25 00 00 02 00       	and    $0x20000,%eax
40c723:	83 c8 00             	or     $0x0,%eax
40c726:	74 09                	je     0x40c731
40c728:	33 c0                	xor    %eax,%eax
40c72a:	40                   	inc    %eax
40c72b:	89 44 24 20          	mov    %eax,0x20(%esp)
40c72f:	eb 04                	jmp    0x40c735
40c731:	8b 44 24 20          	mov    0x20(%esp),%eax
40c735:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40c739:	03 ca                	add    %edx,%ecx
40c73b:	89 4c 24 24          	mov    %ecx,0x24(%esp)
40c73f:	3b 4c 24 28          	cmp    0x28(%esp),%ecx
40c743:	0f 82 a6 fe ff ff    	jb     0x40c5ef
40c749:	85 c0                	test   %eax,%eax
40c74b:	75 39                	jne    0x40c786
40c74d:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40c751:	33 ff                	xor    %edi,%edi
40c753:	8b ce                	mov    %esi,%ecx
40c755:	85 c9                	test   %ecx,%ecx
40c757:	0f 84 c9 00 00 00    	je     0x40c826
40c75d:	8b 41 14             	mov    0x14(%ecx),%eax
40c760:	8b 51 10             	mov    0x10(%ecx),%edx
40c763:	89 44 24 34          	mov    %eax,0x34(%esp)
40c767:	8b c2                	mov    %edx,%eax
40c769:	25 00 00 08 00       	and    $0x80000,%eax
40c76e:	83 c8 00             	or     $0x0,%eax
40c771:	74 0a                	je     0x40c77d
40c773:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40c777:	0f 84 98 00 00 00    	je     0x40c815
40c77d:	47                   	inc    %edi
40c77e:	83 c1 50             	add    $0x50,%ecx
40c781:	83 ff 0b             	cmp    $0xb,%edi
40c784:	72 cf                	jb     0x40c755
40c786:	6a 00                	push   $0x0
40c788:	ff 15 74 20 41 00    	call   *0x412074
40c78e:	33 c0                	xor    %eax,%eax
40c790:	40                   	inc    %eax
40c791:	e9 11 01 00 00       	jmp    0x40c8a7
40c796:	ff 74 24 14          	push   0x14(%esp)
40c79a:	b9 e7 15 00 00       	mov    $0x15e7,%ecx
40c79f:	57                   	push   %edi
40c7a0:	e8 ac d2 ff ff       	call   0x409a51
40c7a5:	50                   	push   %eax
40c7a6:	6a 02                	push   $0x2
40c7a8:	e8 be cf ff ff       	call   0x40976b
40c7ad:	83 c4 10             	add    $0x10,%esp
40c7b0:	8b d6                	mov    %esi,%edx
40c7b2:	e8 02 fd ff ff       	call   0x40c4b9
40c7b7:	68 e4 01 04 80       	push   $0x800401e4
40c7bc:	e9 db fd ff ff       	jmp    0x40c59c