40d51c:	8d 85 9c fb ff ff    	lea    -0x464(%ebp),%eax
40d522:	8b df                	mov    %edi,%ebx
40d524:	50                   	push   %eax
40d525:	ff b5 9c fb ff ff    	push   -0x464(%ebp)
40d52b:	8d 8d 4c fb ff ff    	lea    -0x4b4(%ebp),%ecx
40d531:	57                   	push   %edi
40d532:	e8 11 f9 ff ff       	call   0x40ce48
40d537:	89 85 a8 fb ff ff    	mov    %eax,-0x458(%ebp)
40d53d:	8d 8d 4c fb ff ff    	lea    -0x4b4(%ebp),%ecx
40d543:	e8 44 f9 ff ff       	call   0x40ce8c
40d548:	8b 85 a8 fb ff ff    	mov    -0x458(%ebp),%eax
40d54e:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40d555:	eb 46                	jmp    0x40d59d
40d557:	8b 85 48 fb ff ff    	mov    -0x4b8(%ebp),%eax
40d55d:	8b 40 10             	mov    0x10(%eax),%eax
40d560:	89 85 84 fb ff ff    	mov    %eax,-0x47c(%ebp)
40d566:	b8 6c d5 40 00       	mov    $0x40d56c,%eax
40d56b:	c3                   	ret
40d56c:	8b 8d 70 fb ff ff    	mov    -0x490(%ebp),%ecx
40d572:	8b 9d a4 fb ff ff    	mov    -0x45c(%ebp),%ebx
40d578:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40d57f:	8b 85 84 fb ff ff    	mov    -0x47c(%ebp),%eax
40d585:	8b b5 8c fb ff ff    	mov    -0x474(%ebp),%esi
40d58b:	8b bd 90 fb ff ff    	mov    -0x470(%ebp),%edi
40d591:	89 85 a8 fb ff ff    	mov    %eax,-0x458(%ebp)
40d597:	89 8d 88 fb ff ff    	mov    %ecx,-0x478(%ebp)
40d59d:	85 c0                	test   %eax,%eax
40d59f:	79 52                	jns    0x40d5f3
40d5a1:	8b 4d 04             	mov    0x4(%ebp),%ecx
40d5a4:	ba f5 07 00 00       	mov    $0x7f5,%edx
40d5a9:	50                   	push   %eax
40d5aa:	68 58 52 40 00       	push   $0x405258
40d5af:	e8 56 eb 01 00       	call   0x42c10a
40d5b4:	c6 45 fc 16          	movb   $0x16,-0x4(%ebp)
40d5b8:	ff b5 90 fb ff ff    	push   -0x470(%ebp)
40d5be:	8b 35 40 1a 40 00    	mov    0x401a40,%esi
40d5c4:	8b ce                	mov    %esi,%ecx
40d5c6:	ff 15 20 a5 43 00    	call   *0x43a520
40d5cc:	ff d6                	call   *%esi
40d5ce:	c7 45 fc 17 00 00 00 	movl   $0x17,-0x4(%ebp)
40d5d5:	ff b5 8c fb ff ff    	push   -0x474(%ebp)
40d5db:	8b 35 40 1a 40 00    	mov    0x401a40,%esi
40d5e1:	8b ce                	mov    %esi,%ecx
40d5e3:	ff 15 20 a5 43 00    	call   *0x43a520
40d5e9:	ff d6                	call   *%esi
40d5eb:	8b 85 a8 fb ff ff    	mov    -0x458(%ebp),%eax
40d5f1:	eb 79                	jmp    0x40d66c
40d5f3:	8b 85 9c fb ff ff    	mov    -0x464(%ebp),%eax
40d5f9:	b9 41 00 00 00       	mov    $0x41,%ecx
40d5fe:	89 85 40 fb ff ff    	mov    %eax,-0x4c0(%ebp)
40d604:	8d 85 ac fb ff ff    	lea    -0x454(%ebp),%eax
40d60a:	66 89 8d 38 fb ff ff 	mov    %cx,-0x4c8(%ebp)
40d611:	8b 8d 88 fb ff ff    	mov    -0x478(%ebp),%ecx
40d617:	50                   	push   %eax
40d618:	89 9d 44 fb ff ff    	mov    %ebx,-0x4bc(%ebp)
40d61e:	e8 ad 54 00 00       	call   0x412ad0
40d623:	8b d8                	mov    %eax,%ebx
40d625:	85 db                	test   %ebx,%ebx
40d627:	78 14                	js     0x40d63d
40d629:	8b 8d 88 fb ff ff    	mov    -0x478(%ebp),%ecx
40d62f:	8d 85 38 fb ff ff    	lea    -0x4c8(%ebp),%eax
40d635:	50                   	push   %eax
40d636:	e8 45 22 00 00       	call   0x40f880
40d63b:	8b d8                	mov    %eax,%ebx
40d63d:	c6 45 fc 18          	movb   $0x18,-0x4(%ebp)
40d641:	57                   	push   %edi
40d642:	8b 3d 40 1a 40 00    	mov    0x401a40,%edi
40d648:	8b cf                	mov    %edi,%ecx
40d64a:	ff 15 20 a5 43 00    	call   *0x43a520
40d650:	ff d7                	call   *%edi
40d652:	c7 45 fc 19 00 00 00 	movl   $0x19,-0x4(%ebp)
40d659:	56                   	push   %esi
40d65a:	8b 35 40 1a 40 00    	mov    0x401a40,%esi
40d660:	8b ce                	mov    %esi,%ecx
40d662:	ff 15 20 a5 43 00    	call   *0x43a520
40d668:	ff d6                	call   *%esi
40d66a:	8b c3                	mov    %ebx,%eax
40d66c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d66f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40d676:	59                   	pop    %ecx
40d677:	5f                   	pop    %edi
40d678:	5e                   	pop    %esi
40d679:	5b                   	pop    %ebx
40d67a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40d67d:	33 cd                	xor    %ebp,%ecx
40d67f:	e8 3c d1 00 00       	call   0x41a7c0
40d684:	8b e5                	mov    %ebp,%esp
40d686:	5d                   	pop    %ebp
40d687:	c3                   	ret
40d688:	8b 4d 04             	mov    0x4(%ebp),%ecx
40d68b:	ba d2 07 00 00       	mov    $0x7d2,%edx
40d690:	68 aa 0d 04 80       	push   $0x80040daa
40d695:	68 58 52 40 00       	push   $0x405258
40d69a:	e8 9a fc 01 00       	call   0x42d339
40d69f:	51                   	push   %ecx
40d6a0:	ba dc 07 00 00       	mov    $0x7dc,%edx
40d6a5:	e8 3c 0a 02 00       	call   0x42e0e6
40d6aa:	ff 15 a8 a0 43 00    	call   *0x43a0a8
40d6b0:	8b 4d 04             	mov    0x4(%ebp),%ecx
40d6b3:	ba db 00 00 00       	mov    $0xdb,%edx
40d6b8:	50                   	push   %eax
40d6b9:	68 9c 5c 40 00       	push   $0x405c9c
40d6be:	e8 92 fc 01 00       	call   0x42d355
40d6c3:	ff 15 a8 a0 43 00    	call   *0x43a0a8
40d6c9:	8b 4d 04             	mov    0x4(%ebp),%ecx
40d6cc:	ba eb 00 00 00       	mov    $0xeb,%edx
40d6d1:	50                   	push   %eax
40d6d2:	68 9c 5c 40 00       	push   $0x405c9c
40d6d7:	e8 79 fc 01 00       	call   0x42d355
40d6dc:	cc                   	int3
40d6dd:	8b ff                	mov    %edi,%edi
40d6df:	55                   	push   %ebp
40d6e0:	8b ec                	mov    %esp,%ebp
40d6e2:	83 3d 78 8a 43 00 00 	cmpl   $0x0,0x438a78
40d6e9:	57                   	push   %edi
40d6ea:	8b fa                	mov    %edx,%edi
40d6ec:	74 67                	je     0x40d755
40d6ee:	8b 81 a0 09 00 00    	mov    0x9a0(%ecx),%eax
40d6f4:	56                   	push   %esi
40d6f5:	ff b1 50 06 00 00    	push   0x650(%ecx)
40d6fb:	ff b1 4c 06 00 00    	push   0x64c(%ecx)
40d701:	8b 70 58             	mov    0x58(%eax),%esi
40d704:	8b 50 04             	mov    0x4(%eax),%edx
40d707:	8b 45 0c             	mov    0xc(%ebp),%eax
40d70a:	83 c0 0c             	add    $0xc,%eax
40d70d:	50                   	push   %eax
40d70e:	51                   	push   %ecx
40d70f:	57                   	push   %edi
40d710:	8d 81 e8 09 00 00    	lea    0x9e8(%ecx),%eax
40d716:	50                   	push   %eax
40d717:	83 ec 0c             	sub    $0xc,%esp
40d71a:	8d 81 1c 04 00 00    	lea    0x41c(%ecx),%eax
40d720:	ff b1 68 06 00 00    	push   0x668(%ecx)
40d726:	ff b1 5c 06 00 00    	push   0x65c(%ecx)
40d72c:	56                   	push   %esi
40d72d:	52                   	push   %edx
40d72e:	ff b1 f0 05 00 00    	push   0x5f0(%ecx)
40d734:	ff b1 58 06 00 00    	push   0x658(%ecx)
40d73a:	ff b1 54 06 00 00    	push   0x654(%ecx)
40d740:	ff b1 fc 05 00 00    	push   0x5fc(%ecx)
40d746:	83 ec 0c             	sub    $0xc,%esp
40d749:	50                   	push   %eax
40d74a:	e8 27 01 00 00       	call   0x40d876
40d74f:	5e                   	pop    %esi
40d750:	5f                   	pop    %edi
40d751:	5d                   	pop    %ebp
40d752:	c2 08 00             	ret    $0x8
40d755:	b8 ff ff 00 80       	mov    $0x8000ffff,%eax
40d75a:	eb f4                	jmp    0x40d750
40d75c:	8b ff                	mov    %edi,%edi
40d75e:	55                   	push   %ebp
40d75f:	8b ec                	mov    %esp,%ebp
40d761:	56                   	push   %esi
40d762:	57                   	push   %edi
40d763:	8b f1                	mov    %ecx,%esi
40d765:	e8 2b e6 ff ff       	call   0x40bd95
40d76a:	0f b7 86 a0 01 00 00 	movzwl 0x1a0(%esi),%eax
40d771:	33 ff                	xor    %edi,%edi
40d773:	2b c7                	sub    %edi,%eax
40d775:	75 1b                	jne    0x40d792
40d777:	8b 45 08             	mov    0x8(%ebp),%eax
40d77a:	89 38                	mov    %edi,(%eax)
40d77c:	8b 0d 98 8e 43 00    	mov    0x438e98,%ecx
40d782:	c7 40 08 8c 8e 43 00 	movl   $0x438e8c,0x8(%eax)
40d789:	89 48 04             	mov    %ecx,0x4(%eax)
40d78c:	5f                   	pop    %edi
40d78d:	5e                   	pop    %esi
40d78e:	5d                   	pop    %ebp
40d78f:	c2 04 00             	ret    $0x4
40d792:	83 e8 01             	sub    $0x1,%eax
40d795:	0f 84 2b 2e 01 00    	je     0x4205c6
40d79b:	83 e8 05             	sub    $0x5,%eax
40d79e:	0f 84 02 2e 01 00    	je     0x4205a6
40d7a4:	83 e8 01             	sub    $0x1,%eax
40d7a7:	0f 84 e2 2d 01 00    	je     0x42058f
40d7ad:	83 e8 01             	sub    $0x1,%eax
40d7b0:	0f 85 ab 2d 01 00    	jne    0x420561
40d7b6:	8b 45 08             	mov    0x8(%ebp),%eax
40d7b9:	89 38                	mov    %edi,(%eax)
40d7bb:	8b 0d 68 8e 43 00    	mov    0x438e68,%ecx
40d7c1:	c7 40 08 5c 8e 43 00 	movl   $0x438e5c,0x8(%eax)
40d7c8:	eb bf                	jmp    0x40d789
40d7ca:	8b ff                	mov    %edi,%edi
40d7cc:	55                   	push   %ebp
40d7cd:	8b ec                	mov    %esp,%ebp
40d7cf:	57                   	push   %edi
40d7d0:	8b b9 80 00 00 00    	mov    0x80(%ecx),%edi
40d7d6:	85 ff                	test   %edi,%edi
40d7d8:	78 0c                	js     0x40d7e6
40d7da:	8b 51 70             	mov    0x70(%ecx),%edx
40d7dd:	85 d2                	test   %edx,%edx
40d7df:	75 0c                	jne    0x40d7ed
40d7e1:	bf 02 40 00 80       	mov    $0x80004002,%edi
40d7e6:	8b c7                	mov    %edi,%eax
40d7e8:	5f                   	pop    %edi
40d7e9:	5d                   	pop    %ebp
40d7ea:	c2 04 00             	ret    $0x4
40d7ed:	8b 45 08             	mov    0x8(%ebp),%eax
40d7f0:	56                   	push   %esi
40d7f1:	89 10                	mov    %edx,(%eax)
40d7f3:	8b 49 70             	mov    0x70(%ecx),%ecx
40d7f6:	51                   	push   %ecx
40d7f7:	8b 11                	mov    (%ecx),%edx
40d7f9:	8b 72 04             	mov    0x4(%edx),%esi
40d7fc:	8b ce                	mov    %esi,%ecx
40d7fe:	ff 15 20 a5 43 00    	call   *0x43a520
40d804:	ff d6                	call   *%esi
40d806:	5e                   	pop    %esi
40d807:	eb dd                	jmp    0x40d7e6
40d809:	8b ff                	mov    %edi,%edi
40d80b:	55                   	push   %ebp
40d80c:	8b ec                	mov    %esp,%ebp
40d80e:	53                   	push   %ebx
40d80f:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40d812:	56                   	push   %esi
40d813:	33 f6                	xor    %esi,%esi
40d815:	57                   	push   %edi
40d816:	8b 7d 08             	mov    0x8(%ebp),%edi
40d819:	85 db                	test   %ebx,%ebx
40d81b:	74 22                	je     0x40d83f
40d81d:	8d 4f 04             	lea    0x4(%edi),%ecx
40d820:	8b 01                	mov    (%ecx),%eax
40d822:	8d 57 08             	lea    0x8(%edi),%edx
40d825:	3b c2                	cmp    %edx,%eax
40d827:	74 12                	je     0x40d83b
40d829:	39 58 04             	cmp    %ebx,0x4(%eax)
40d82c:	75 42                	jne    0x40d870
40d82e:	85 c9                	test   %ecx,%ecx
40d830:	74 0d                	je     0x40d83f
40d832:	5f                   	pop    %edi
40d833:	8b c6                	mov    %esi,%eax
40d835:	5e                   	pop    %esi
40d836:	5b                   	pop    %ebx
40d837:	5d                   	pop    %ebp
40d838:	c2 08 00             	ret    $0x8
40d83b:	8b ce                	mov    %esi,%ecx
40d83d:	eb ef                	jmp    0x40d82e
40d83f:	8b 4b 78             	mov    0x78(%ebx),%ecx
40d842:	85 c9                	test   %ecx,%ecx
40d844:	0f 85 93 2d 01 00    	jne    0x4205dd
40d84a:	85 f6                	test   %esi,%esi
40d84c:	78 e4                	js     0x40d832
40d84e:	53                   	push   %ebx
40d84f:	e8 b8 f3 ff ff       	call   0x40cc0c
40d854:	8b d0                	mov    %eax,%edx
40d856:	85 d2                	test   %edx,%edx
40d858:	74 d8                	je     0x40d832
40d85a:	8b 4f 0c             	mov    0xc(%edi),%ecx
40d85d:	8b 01                	mov    (%ecx),%eax
40d85f:	89 02                	mov    %eax,(%edx)
40d861:	89 11                	mov    %edx,(%ecx)
40d863:	3b 4f 0c             	cmp    0xc(%edi),%ecx
40d866:	75 03                	jne    0x40d86b
40d868:	89 57 0c             	mov    %edx,0xc(%edi)
40d86b:	ff 47 10             	incl   0x10(%edi)
40d86e:	eb c2                	jmp    0x40d832
40d870:	8b c8                	mov    %eax,%ecx
40d872:	8b 00                	mov    (%eax),%eax
40d874:	eb af                	jmp    0x40d825
40d876:	6a 3c                	push   $0x3c
40d878:	b8 e7 e4 41 00       	mov    $0x41e4e7,%eax
40d87d:	e8 8c d5 00 00       	call   0x41ae0e
40d882:	8b 35 78 8a 43 00    	mov    0x438a78,%esi
40d888:	89 75 c8             	mov    %esi,-0x38(%ebp)
40d88b:	8d 46 28             	lea    0x28(%esi),%eax
40d88e:	50                   	push   %eax
40d88f:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40d892:	ff 15 d4 a2 43 00    	call   *0x43a2d4
40d898:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d89b:	8d 45 b8             	lea    -0x48(%ebp),%eax
40d89e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d8a2:	33 db                	xor    %ebx,%ebx
40d8a4:	50                   	push   %eax
40d8a5:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d8a8:	e8 af fe ff ff       	call   0x40d75c
40d8ad:	8b 7e 08             	mov    0x8(%esi),%edi
40d8b0:	8d 45 b8             	lea    -0x48(%ebp),%eax
40d8b3:	50                   	push   %eax
40d8b4:	81 ff 50 df 40 00    	cmp    $0x40df50,%edi
40d8ba:	0f 85 34 2d 01 00    	jne    0x4205f4
40d8c0:	e8 8b 06 00 00       	call   0x40df50
40d8c5:	33 d2                	xor    %edx,%edx
40d8c7:	f7 76 0c             	divl   0xc(%esi)
40d8ca:	8d 45 b8             	lea    -0x48(%ebp),%eax
40d8cd:	c1 e2 04             	shl    $0x4,%edx
40d8d0:	03 56 24             	add    0x24(%esi),%edx
40d8d3:	50                   	push   %eax
40d8d4:	8b ca                	mov    %edx,%ecx
40d8d6:	e8 c0 05 00 00       	call   0x40de9b
40d8db:	8b 00                	mov    (%eax),%eax
40d8dd:	89 45 dc             	mov    %eax,-0x24(%ebp)
40d8e0:	85 c0                	test   %eax,%eax
40d8e2:	0f 84 6b 2e 01 00    	je     0x420753
40d8e8:	39 58 7c             	cmp    %ebx,0x7c(%eax)
40d8eb:	0f 84 ec 01 00 00    	je     0x40dadd
40d8f1:	33 ff                	xor    %edi,%edi
40d8f3:	89 7d d4             	mov    %edi,-0x2c(%ebp)
40d8f6:	89 7d e0             	mov    %edi,-0x20(%ebp)
40d8f9:	33 f6                	xor    %esi,%esi
40d8fb:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40d8fe:	21 75 e8             	and    %esi,-0x18(%ebp)
40d901:	21 75 d8             	and    %esi,-0x28(%ebp)
40d904:	f6 45 30 40          	testb  $0x40,0x30(%ebp)
40d908:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40d90c:	0f 85 49 2d 01 00    	jne    0x42065b
40d912:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40d915:	51                   	push   %ecx
40d916:	8b c8                	mov    %eax,%ecx
40d918:	e8 ad fe ff ff       	call   0x40d7ca
40d91d:	85 c0                	test   %eax,%eax
40d91f:	0f 89 37 01 00 00    	jns    0x40da5c
40d925:	8b 45 30             	mov    0x30(%ebp),%eax
40d928:	ba 00 00 03 00       	mov    $0x30000,%edx
40d92d:	32 c9                	xor    %cl,%cl
40d92f:	23 c2                	and    %edx,%eax
40d931:	88 4d f3             	mov    %cl,-0xd(%ebp)
40d934:	3b c2                	cmp    %edx,%eax
40d936:	0f 85 99 00 00 00    	jne    0x40d9d5
40d93c:	8b 75 dc             	mov    -0x24(%ebp),%esi
40d93f:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40d942:	50                   	push   %eax
40d943:	8b ce                	mov    %esi,%ecx
40d945:	e8 09 f3 ff ff       	call   0x40cc53
40d94a:	85 c0                	test   %eax,%eax
40d94c:	0f 88 69 2d 01 00    	js     0x4206bb
40d952:	56                   	push   %esi
40d953:	ff 75 50             	push   0x50(%ebp)
40d956:	e8 ae fe ff ff       	call   0x40d809
40d95b:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40d95e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d961:	85 c0                	test   %eax,%eax
40d963:	78 7c                	js     0x40d9e1
40d965:	8b 4d 30             	mov    0x30(%ebp),%ecx
40d968:	8d 45 e8             	lea    -0x18(%ebp),%eax
40d96b:	8b 55 30             	mov    0x30(%ebp),%edx
40d96e:	81 e1 00 04 00 00    	and    $0x400,%ecx
40d974:	8b 1e                	mov    (%esi),%ebx
40d976:	83 e2 10             	and    $0x10,%edx
40d979:	50                   	push   %eax
40d97a:	33 c0                	xor    %eax,%eax
40d97c:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40d97f:	85 c9                	test   %ecx,%ecx
40d981:	89 55 cc             	mov    %edx,-0x34(%ebp)
40d984:	8b 4b 20             	mov    0x20(%ebx),%ecx
40d987:	0f 95 c0             	setne  %al
40d98a:	50                   	push   %eax
40d98b:	33 c0                	xor    %eax,%eax
40d98d:	85 d2                	test   %edx,%edx
40d98f:	0f 95 c0             	setne  %al
40d992:	50                   	push   %eax