40c3e9:	75 17                	jne    0x40c402
40c3eb:	ff 15 40 f0 40 00    	call   *0x40f040
40c3f1:	8b d0                	mov    %eax,%edx
40c3f3:	b9 b8 47 40 00       	mov    $0x4047b8,%ecx
40c3f8:	e8 83 c5 ff ff       	call   0x408980
40c3fd:	e9 30 01 00 00       	jmp    0x40c532
40c402:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c405:	50                   	push   %eax
40c406:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c409:	50                   	push   %eax
40c40a:	ff 75 f4             	push   -0xc(%ebp)
40c40d:	ff 15 c4 f0 40 00    	call   *0x40f0c4
40c413:	85 c0                	test   %eax,%eax
40c415:	75 24                	jne    0x40c43b
40c417:	ff 15 40 f0 40 00    	call   *0x40f040
40c41d:	8b d0                	mov    %eax,%edx
40c41f:	b9 20 48 40 00       	mov    $0x404820,%ecx
40c424:	e8 57 c5 ff ff       	call   0x408980
40c429:	ff 75 f4             	push   -0xc(%ebp)
40c42c:	8b f0                	mov    %eax,%esi
40c42e:	ff 15 68 f0 40 00    	call   *0x40f068
40c434:	8b c6                	mov    %esi,%eax
40c436:	e9 f7 00 00 00       	jmp    0x40c532
40c43b:	66 8b 45 f8          	mov    -0x8(%ebp),%ax
40c43f:	53                   	push   %ebx
40c440:	6a 04                	push   $0x4
40c442:	59                   	pop    %ecx
40c443:	66 23 c1             	and    %cx,%ax
40c446:	0f b7 d8             	movzwl %ax,%ebx
40c449:	f7 db                	neg    %ebx
40c44b:	0f b7 c0             	movzwl %ax,%eax
40c44e:	1b db                	sbb    %ebx,%ebx
40c450:	81 e3 00 00 04 00    	and    $0x40000,%ebx
40c456:	f7 d8                	neg    %eax
40c458:	1b c0                	sbb    %eax,%eax
40c45a:	23 c1                	and    %ecx,%eax
40c45c:	f6 45 f8 10          	testb  $0x10,-0x8(%ebp)
40c460:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c463:	74 1e                	je     0x40c483
40c465:	83 c8 08             	or     $0x8,%eax
40c468:	81 cb 00 00 00 01    	or     $0x1000000,%ebx
40c46e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c471:	8d 45 ff             	lea    -0x1(%ebp),%eax
40c474:	50                   	push   %eax
40c475:	57                   	push   %edi
40c476:	6a 01                	push   $0x1
40c478:	6a 08                	push   $0x8
40c47a:	ff 15 40 f1 40 00    	call   *0x40f140
40c480:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c483:	53                   	push   %ebx
40c484:	85 f6                	test   %esi,%esi
40c486:	74 0c                	je     0x40c494
40c488:	57                   	push   %edi
40c489:	ff 75 e8             	push   -0x18(%ebp)
40c48c:	ff 15 4c 00 41 00    	call   *0x41004c
40c492:	eb 0c                	jmp    0x40c4a0
40c494:	ff 75 08             	push   0x8(%ebp)
40c497:	ff 75 e4             	push   -0x1c(%ebp)
40c49a:	ff 15 3c 00 41 00    	call   *0x41003c
40c4a0:	8b d8                	mov    %eax,%ebx
40c4a2:	85 db                	test   %ebx,%ebx
40c4a4:	75 2c                	jne    0x40c4d2
40c4a6:	85 f6                	test   %esi,%esi
40c4a8:	be 68 3c 40 00       	mov    $0x403c68,%esi
40c4ad:	75 05                	jne    0x40c4b4
40c4af:	be 88 14 40 00       	mov    $0x401488,%esi
40c4b4:	ff 15 40 f0 40 00    	call   *0x40f040
40c4ba:	8b d0                	mov    %eax,%edx
40c4bc:	8b ce                	mov    %esi,%ecx
40c4be:	e8 bd c4 ff ff       	call   0x408980
40c4c3:	ff 75 f4             	push   -0xc(%ebp)
40c4c6:	8b f0                	mov    %eax,%esi
40c4c8:	ff 15 68 f0 40 00    	call   *0x40f068
40c4ce:	8b c6                	mov    %esi,%eax
40c4d0:	eb 5f                	jmp    0x40c531
40c4d2:	39 7d f0             	cmp    %edi,-0x10(%ebp)
40c4d5:	7c 0f                	jl     0x40c4e6
40c4d7:	8d 45 ff             	lea    -0x1(%ebp),%eax
40c4da:	50                   	push   %eax
40c4db:	57                   	push   %edi
40c4dc:	6a 01                	push   $0x1
40c4de:	6a 08                	push   $0x8
40c4e0:	ff 15 40 f1 40 00    	call   *0x40f140
40c4e6:	ff 75 f4             	push   -0xc(%ebp)
40c4e9:	ff 75 ec             	push   -0x14(%ebp)
40c4ec:	53                   	push   %ebx
40c4ed:	ff 15 58 00 41 00    	call   *0x410058
40c4f3:	85 c0                	test   %eax,%eax
40c4f5:	75 16                	jne    0x40c50d
40c4f7:	ff 15 40 f0 40 00    	call   *0x40f040
40c4fd:	8b d0                	mov    %eax,%edx
40c4ff:	b9 5c 48 40 00       	mov    $0x40485c,%ecx
40c504:	e8 77 c4 ff ff       	call   0x408980
40c509:	8b f8                	mov    %eax,%edi
40c50b:	eb 12                	jmp    0x40c51f
40c50d:	6a 64                	push   $0x64
40c50f:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40c512:	c7 45 e4 5c 48 40 00 	movl   $0x40485c,-0x1c(%ebp)
40c519:	59                   	pop    %ecx
40c51a:	e8 90 e0 ff ff       	call   0x40a5af
40c51f:	53                   	push   %ebx
40c520:	ff 15 48 00 41 00    	call   *0x410048
40c526:	ff 75 f4             	push   -0xc(%ebp)
40c529:	ff 15 68 f0 40 00    	call   *0x40f068
40c52f:	8b c7                	mov    %edi,%eax
40c531:	5b                   	pop    %ebx
40c532:	5f                   	pop    %edi
40c533:	5e                   	pop    %esi
40c534:	c9                   	leave
40c535:	c2 08 00             	ret    $0x8
40c538:	8b ff                	mov    %edi,%edi
40c53a:	55                   	push   %ebp
40c53b:	8b ec                	mov    %esp,%ebp
40c53d:	81 ec 28 04 00 00    	sub    $0x428,%esp
40c543:	a1 04 e0 40 00       	mov    0x40e004,%eax
40c548:	33 c5                	xor    %ebp,%eax
40c54a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c54d:	53                   	push   %ebx
40c54e:	56                   	push   %esi
40c54f:	57                   	push   %edi
40c550:	89 8d f8 fb ff ff    	mov    %ecx,-0x408(%ebp)
40c556:	8d b5 fc fb ff ff    	lea    -0x404(%ebp),%esi
40c55c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c55f:	33 c0                	xor    %eax,%eax
40c561:	68 04 47 40 00       	push   $0x404704
40c566:	51                   	push   %ecx
40c567:	89 95 e4 fb ff ff    	mov    %edx,-0x41c(%ebp)
40c56d:	bf 00 00 02 00       	mov    $0x20000,%edi
40c572:	89 8d e0 fb ff ff    	mov    %ecx,-0x420(%ebp)
40c578:	89 85 e8 fb ff ff    	mov    %eax,-0x418(%ebp)
40c57e:	88 85 f4 fb ff ff    	mov    %al,-0x40c(%ebp)
40c584:	ff 15 28 f1 40 00    	call   *0x40f128
40c58a:	59                   	pop    %ecx
40c58b:	f7 d8                	neg    %eax
40c58d:	59                   	pop    %ecx
40c58e:	1b db                	sbb    %ebx,%ebx
40c590:	8d 85 f4 fb ff ff    	lea    -0x40c(%ebp),%eax
40c596:	50                   	push   %eax
40c597:	6a 00                	push   $0x0
40c599:	6a 01                	push   $0x1
40c59b:	43                   	inc    %ebx
40c59c:	6a 08                	push   $0x8
40c59e:	89 9d ec fb ff ff    	mov    %ebx,-0x414(%ebp)
40c5a4:	ff 15 40 f1 40 00    	call   *0x40f140
40c5aa:	89 85 d8 fb ff ff    	mov    %eax,-0x428(%ebp)
40c5b0:	85 c0                	test   %eax,%eax
40c5b2:	78 05                	js     0x40c5b9
40c5b4:	bf 00 00 02 01       	mov    $0x1020000,%edi
40c5b9:	57                   	push   %edi
40c5ba:	85 db                	test   %ebx,%ebx
40c5bc:	74 10                	je     0x40c5ce
40c5be:	6a 00                	push   $0x0
40c5c0:	ff b5 e4 fb ff ff    	push   -0x41c(%ebp)
40c5c6:	ff 15 4c 00 41 00    	call   *0x41004c
40c5cc:	eb 12                	jmp    0x40c5e0
40c5ce:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
40c5d4:	ff b5 f8 fb ff ff    	push   -0x408(%ebp)
40c5da:	ff 15 3c 00 41 00    	call   *0x41003c
40c5e0:	8b d8                	mov    %eax,%ebx
40c5e2:	85 db                	test   %ebx,%ebx
40c5e4:	75 0c                	jne    0x40c5f2
40c5e6:	ff 15 40 f0 40 00    	call   *0x40f040
40c5ec:	89 85 e8 fb ff ff    	mov    %eax,-0x418(%ebp)
40c5f2:	83 bd d8 fb ff ff 00 	cmpl   $0x0,-0x428(%ebp)
40c5f9:	7c 17                	jl     0x40c612
40c5fb:	8d 85 f4 fb ff ff    	lea    -0x40c(%ebp),%eax
40c601:	50                   	push   %eax
40c602:	6a 00                	push   $0x0
40c604:	ff b5 f4 fb ff ff    	push   -0x40c(%ebp)
40c60a:	6a 08                	push   $0x8
40c60c:	ff 15 40 f1 40 00    	call   *0x40f140
40c612:	8b 85 e8 fb ff ff    	mov    -0x418(%ebp),%eax
40c618:	83 f8 05             	cmp    $0x5,%eax
40c61b:	75 47                	jne    0x40c664
40c61d:	f7 c7 00 00 00 01    	test   $0x1000000,%edi
40c623:	74 43                	je     0x40c668
40c625:	83 bd ec fb ff ff 00 	cmpl   $0x0,-0x414(%ebp)
40c62c:	b8 00 00 02 00       	mov    $0x20000,%eax
40c631:	8b f8                	mov    %eax,%edi
40c633:	50                   	push   %eax
40c634:	74 10                	je     0x40c646
40c636:	6a 00                	push   $0x0
40c638:	ff b5 e4 fb ff ff    	push   -0x41c(%ebp)
40c63e:	ff 15 4c 00 41 00    	call   *0x41004c
40c644:	eb 12                	jmp    0x40c658
40c646:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
40c64c:	ff b5 f8 fb ff ff    	push   -0x408(%ebp)
40c652:	ff 15 3c 00 41 00    	call   *0x41003c
40c658:	8b d8                	mov    %eax,%ebx
40c65a:	85 db                	test   %ebx,%ebx
40c65c:	75 29                	jne    0x40c687
40c65e:	ff 15 40 f0 40 00    	call   *0x40f040
40c664:	85 c0                	test   %eax,%eax
40c666:	74 1f                	je     0x40c687
40c668:	83 bd ec fb ff ff 00 	cmpl   $0x0,-0x414(%ebp)
40c66f:	b9 68 3c 40 00       	mov    $0x403c68,%ecx
40c674:	75 05                	jne    0x40c67b
40c676:	b9 88 14 40 00       	mov    $0x401488,%ecx
40c67b:	8b d0                	mov    %eax,%edx
40c67d:	e8 fe c2 ff ff       	call   0x408980
40c682:	e9 69 01 00 00       	jmp    0x40c7f0
40c687:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
40c68d:	81 e7 00 00 00 01    	and    $0x1000000,%edi
40c693:	50                   	push   %eax
40c694:	68 00 04 00 00       	push   $0x400
40c699:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c69f:	81 cf 00 00 80 00    	or     $0x800000,%edi
40c6a5:	50                   	push   %eax
40c6a6:	c1 ef 15             	shr    $0x15,%edi
40c6a9:	57                   	push   %edi
40c6aa:	53                   	push   %ebx
40c6ab:	ff 15 6c 00 41 00    	call   *0x41006c
40c6b1:	85 c0                	test   %eax,%eax
40c6b3:	0f 85 a0 00 00 00    	jne    0x40c759
40c6b9:	ff 15 40 f0 40 00    	call   *0x40f040
40c6bf:	89 85 f8 fb ff ff    	mov    %eax,-0x408(%ebp)
40c6c5:	83 f8 7a             	cmp    $0x7a,%eax
40c6c8:	75 5c                	jne    0x40c726
40c6ca:	ff b5 f0 fb ff ff    	push   -0x410(%ebp)
40c6d0:	6a 00                	push   $0x0
40c6d2:	ff 15 64 f0 40 00    	call   *0x40f064
40c6d8:	8b f0                	mov    %eax,%esi
40c6da:	85 f6                	test   %esi,%esi
40c6dc:	75 22                	jne    0x40c700
40c6de:	ff 15 40 f0 40 00    	call   *0x40f040
40c6e4:	8b d0                	mov    %eax,%edx
40c6e6:	b9 18 47 40 00       	mov    $0x404718,%ecx
40c6eb:	e8 90 c2 ff ff       	call   0x408980
40c6f0:	53                   	push   %ebx
40c6f1:	8b f0                	mov    %eax,%esi
40c6f3:	ff 15 48 00 41 00    	call   *0x410048
40c6f9:	8b c6                	mov    %esi,%eax
40c6fb:	e9 f0 00 00 00       	jmp    0x40c7f0
40c700:	8d 85 f0 fb ff ff    	lea    -0x410(%ebp),%eax
40c706:	50                   	push   %eax
40c707:	ff b5 f0 fb ff ff    	push   -0x410(%ebp)
40c70d:	56                   	push   %esi
40c70e:	57                   	push   %edi
40c70f:	53                   	push   %ebx
40c710:	ff 15 6c 00 41 00    	call   *0x41006c
40c716:	85 c0                	test   %eax,%eax
40c718:	75 3f                	jne    0x40c759
40c71a:	ff 15 40 f0 40 00    	call   *0x40f040
40c720:	89 85 f8 fb ff ff    	mov    %eax,-0x408(%ebp)
40c726:	85 c0                	test   %eax,%eax
40c728:	74 2f                	je     0x40c759
40c72a:	8b d0                	mov    %eax,%edx
40c72c:	b9 18 47 40 00       	mov    $0x404718,%ecx
40c731:	e8 4a c2 ff ff       	call   0x408980
40c736:	53                   	push   %ebx
40c737:	ff 15 48 00 41 00    	call   *0x410048
40c73d:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c743:	3b f0                	cmp    %eax,%esi
40c745:	74 07                	je     0x40c74e
40c747:	56                   	push   %esi
40c748:	ff 15 68 f0 40 00    	call   *0x40f068
40c74e:	8b 85 f8 fb ff ff    	mov    -0x408(%ebp),%eax
40c754:	e9 97 00 00 00       	jmp    0x40c7f0
40c759:	6a 00                	push   $0x0
40c75b:	8d 85 dc fb ff ff    	lea    -0x424(%ebp),%eax
40c761:	50                   	push   %eax
40c762:	57                   	push   %edi
40c763:	6a 01                	push   $0x1
40c765:	56                   	push   %esi
40c766:	ff 15 0c 00 41 00    	call   *0x41000c
40c76c:	85 c0                	test   %eax,%eax
40c76e:	75 30                	jne    0x40c7a0
40c770:	ff 15 40 f0 40 00    	call   *0x40f040
40c776:	8b d0                	mov    %eax,%edx
40c778:	b9 50 47 40 00       	mov    $0x404750,%ecx
40c77d:	e8 fe c1 ff ff       	call   0x408980
40c782:	53                   	push   %ebx
40c783:	8b f8                	mov    %eax,%edi
40c785:	ff 15 48 00 41 00    	call   *0x410048
40c78b:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c791:	3b f0                	cmp    %eax,%esi
40c793:	74 07                	je     0x40c79c
40c795:	56                   	push   %esi
40c796:	ff 15 68 f0 40 00    	call   *0x40f068
40c79c:	8b c7                	mov    %edi,%eax
40c79e:	eb 50                	jmp    0x40c7f0
40c7a0:	6a 25                	push   $0x25
40c7a2:	8d 95 dc fb ff ff    	lea    -0x424(%ebp),%edx
40c7a8:	59                   	pop    %ecx
40c7a9:	e8 01 de ff ff       	call   0x40a5af
40c7ae:	ff b5 dc fb ff ff    	push   -0x424(%ebp)
40c7b4:	ff 15 68 f0 40 00    	call   *0x40f068
40c7ba:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40c7be:	74 16                	je     0x40c7d6
40c7c0:	33 d2                	xor    %edx,%edx
40c7c2:	39 95 ec fb ff ff    	cmp    %edx,-0x414(%ebp)
40c7c8:	74 04                	je     0x40c7ce
40c7ca:	6a 7f                	push   $0x7f
40c7cc:	eb 02                	jmp    0x40c7d0
40c7ce:	6a 7e                	push   $0x7e
40c7d0:	59                   	pop    %ecx
40c7d1:	e8 d9 dd ff ff       	call   0x40a5af
40c7d6:	53                   	push   %ebx
40c7d7:	ff 15 48 00 41 00    	call   *0x410048
40c7dd:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
40c7e3:	3b f0                	cmp    %eax,%esi
40c7e5:	74 07                	je     0x40c7ee
40c7e7:	56                   	push   %esi
40c7e8:	ff 15 68 f0 40 00    	call   *0x40f068
40c7ee:	33 c0                	xor    %eax,%eax
40c7f0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c7f3:	5f                   	pop    %edi
40c7f4:	5e                   	pop    %esi
40c7f5:	33 cd                	xor    %ebp,%ecx
40c7f7:	5b                   	pop    %ebx
40c7f8:	e8 23 98 ff ff       	call   0x406020
40c7fd:	c9                   	leave
40c7fe:	c2 08 00             	ret    $0x8
40c801:	8b ff                	mov    %edi,%edi
40c803:	55                   	push   %ebp
40c804:	8b ec                	mov    %esp,%ebp
40c806:	d1 ea                	shr    $1,%edx
40c808:	8b c2                	mov    %edx,%eax
40c80a:	f7 d8                	neg    %eax
40c80c:	56                   	push   %esi
40c80d:	1b c0                	sbb    %eax,%eax
40c80f:	be 57 00 07 80       	mov    $0x80070057,%esi
40c814:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
40c819:	03 c6                	add    %esi,%eax
40c81b:	85 d2                	test   %edx,%edx
40c81d:	74 1f                	je     0x40c83e
40c81f:	8b 45 0c             	mov    0xc(%ebp),%eax
40c822:	d1 e8                	shr    $1,%eax
40c824:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
40c829:	76 09                	jbe    0x40c834
40c82b:	33 d2                	xor    %edx,%edx
40c82d:	8b c6                	mov    %esi,%eax
40c82f:	66 89 11             	mov    %dx,(%ecx)
40c832:	eb 0a                	jmp    0x40c83e
40c834:	50                   	push   %eax
40c835:	ff 75 08             	push   0x8(%ebp)
40c838:	51                   	push   %ecx
40c839:	e8 af 00 00 00       	call   0x40c8ed
40c83e:	5e                   	pop    %esi
40c83f:	5d                   	pop    %ebp
40c840:	c2 08 00             	ret    $0x8
40c843:	8b ff                	mov    %edi,%edi
40c845:	55                   	push   %ebp
40c846:	8b ec                	mov    %esp,%ebp
40c848:	d1 ea                	shr    $1,%edx
40c84a:	8b c2                	mov    %edx,%eax
40c84c:	f7 d8                	neg    %eax
40c84e:	1b c0                	sbb    %eax,%eax
40c850:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
40c855:	05 57 00 07 80       	add    $0x80070057,%eax