40a587:	33 0c 38             	xor    (%eax,%edi,1),%ecx
40a58a:	e8 97 c0 ff ff       	call   0x406626
40a58f:	8b 4e 0c             	mov    0xc(%esi),%ecx
40a592:	8b 56 08             	mov    0x8(%esi),%edx
40a595:	03 cf                	add    %edi,%ecx
40a597:	33 0c 3a             	xor    (%edx,%edi,1),%ecx
40a59a:	e8 87 c0 ff ff       	call   0x406626
40a59f:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a5a2:	8b 48 08             	mov    0x8(%eax),%ecx
40a5a5:	8b d7                	mov    %edi,%edx
40a5a7:	e8 2d 0e 00 00       	call   0x40b3d9
40a5ac:	ba fe ff ff ff       	mov    $0xfffffffe,%edx
40a5b1:	39 53 0c             	cmp    %edx,0xc(%ebx)
40a5b4:	0f 84 52 ff ff ff    	je     0x40a50c
40a5ba:	68 68 b2 42 00       	push   $0x42b268
40a5bf:	57                   	push   %edi
40a5c0:	8b cb                	mov    %ebx,%ecx
40a5c2:	e8 45 0e 00 00       	call   0x40b40c
40a5c7:	e9 1c ff ff ff       	jmp    0x40a4e8
40a5cc:	6a 0c                	push   $0xc
40a5ce:	68 78 96 42 00       	push   $0x429678
40a5d3:	e8 04 fe ff ff       	call   0x40a3dc
40a5d8:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a5db:	33 ff                	xor    %edi,%edi
40a5dd:	3b cf                	cmp    %edi,%ecx
40a5df:	76 2e                	jbe    0x40a60f
40a5e1:	6a e0                	push   $0xffffffe0
40a5e3:	58                   	pop    %eax
40a5e4:	33 d2                	xor    %edx,%edx
40a5e6:	f7 f1                	div    %ecx
40a5e8:	3b 45 0c             	cmp    0xc(%ebp),%eax
40a5eb:	1b c0                	sbb    %eax,%eax
40a5ed:	40                   	inc    %eax
40a5ee:	75 1f                	jne    0x40a60f
40a5f0:	e8 e0 b4 ff ff       	call   0x405ad5
40a5f5:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40a5fb:	57                   	push   %edi
40a5fc:	57                   	push   %edi
40a5fd:	57                   	push   %edi
40a5fe:	57                   	push   %edi
40a5ff:	57                   	push   %edi
40a600:	e8 20 ac ff ff       	call   0x405225
40a605:	83 c4 14             	add    $0x14,%esp
40a608:	33 c0                	xor    %eax,%eax
40a60a:	e9 d5 00 00 00       	jmp    0x40a6e4
40a60f:	0f af 4d 0c          	imul   0xc(%ebp),%ecx
40a613:	8b f1                	mov    %ecx,%esi
40a615:	89 75 08             	mov    %esi,0x8(%ebp)
40a618:	3b f7                	cmp    %edi,%esi
40a61a:	75 03                	jne    0x40a61f
40a61c:	33 f6                	xor    %esi,%esi
40a61e:	46                   	inc    %esi
40a61f:	33 db                	xor    %ebx,%ebx
40a621:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40a624:	83 fe e0             	cmp    $0xffffffe0,%esi
40a627:	77 69                	ja     0x40a692
40a629:	83 3d a0 23 c7 00 03 	cmpl   $0x3,0xc723a0
40a630:	75 4b                	jne    0x40a67d
40a632:	83 c6 0f             	add    $0xf,%esi
40a635:	83 e6 f0             	and    $0xfffffff0,%esi
40a638:	89 75 0c             	mov    %esi,0xc(%ebp)
40a63b:	8b 45 08             	mov    0x8(%ebp),%eax
40a63e:	3b 05 90 23 c7 00    	cmp    0xc72390,%eax
40a644:	77 37                	ja     0x40a67d
40a646:	6a 04                	push   $0x4
40a648:	e8 97 f2 ff ff       	call   0x4098e4
40a64d:	59                   	pop    %ecx
40a64e:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a651:	ff 75 08             	push   0x8(%ebp)
40a654:	e8 9d fa ff ff       	call   0x40a0f6
40a659:	59                   	pop    %ecx
40a65a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a65d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a664:	e8 5f 00 00 00       	call   0x40a6c8
40a669:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40a66c:	3b df                	cmp    %edi,%ebx
40a66e:	74 11                	je     0x40a681
40a670:	ff 75 08             	push   0x8(%ebp)
40a673:	57                   	push   %edi
40a674:	53                   	push   %ebx
40a675:	e8 86 00 00 00       	call   0x40a700
40a67a:	83 c4 0c             	add    $0xc,%esp
40a67d:	3b df                	cmp    %edi,%ebx
40a67f:	75 61                	jne    0x40a6e2
40a681:	56                   	push   %esi
40a682:	6a 08                	push   $0x8
40a684:	ff 35 08 08 43 00    	push   0x430808
40a68a:	ff 15 d4 a0 41 00    	call   *0x41a0d4
40a690:	8b d8                	mov    %eax,%ebx
40a692:	3b df                	cmp    %edi,%ebx
40a694:	75 4c                	jne    0x40a6e2
40a696:	39 3d 78 11 43 00    	cmp    %edi,0x431178
40a69c:	74 33                	je     0x40a6d1
40a69e:	56                   	push   %esi
40a69f:	e8 50 1f 00 00       	call   0x40c5f4
40a6a4:	59                   	pop    %ecx
40a6a5:	85 c0                	test   %eax,%eax
40a6a7:	0f 85 72 ff ff ff    	jne    0x40a61f
40a6ad:	8b 45 10             	mov    0x10(%ebp),%eax
40a6b0:	3b c7                	cmp    %edi,%eax
40a6b2:	0f 84 50 ff ff ff    	je     0x40a608
40a6b8:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40a6be:	e9 45 ff ff ff       	jmp    0x40a608
40a6c3:	33 ff                	xor    %edi,%edi
40a6c5:	8b 75 0c             	mov    0xc(%ebp),%esi
40a6c8:	6a 04                	push   $0x4
40a6ca:	e8 3b f1 ff ff       	call   0x40980a
40a6cf:	59                   	pop    %ecx
40a6d0:	c3                   	ret
40a6d1:	3b df                	cmp    %edi,%ebx
40a6d3:	75 0d                	jne    0x40a6e2
40a6d5:	8b 45 10             	mov    0x10(%ebp),%eax
40a6d8:	3b c7                	cmp    %edi,%eax
40a6da:	74 06                	je     0x40a6e2
40a6dc:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40a6e2:	8b c3                	mov    %ebx,%eax
40a6e4:	e8 38 fd ff ff       	call   0x40a421
40a6e9:	c3                   	ret
40a6ea:	83 25 84 23 c7 00 00 	andl   $0x0,0xc72384
40a6f1:	c3                   	ret
40a6f2:	cc                   	int3
40a6f3:	cc                   	int3
40a6f4:	cc                   	int3
40a6f5:	cc                   	int3
40a6f6:	cc                   	int3
40a6f7:	cc                   	int3
40a6f8:	cc                   	int3
40a6f9:	cc                   	int3
40a6fa:	cc                   	int3
40a6fb:	cc                   	int3
40a6fc:	cc                   	int3
40a6fd:	cc                   	int3
40a6fe:	cc                   	int3
40a6ff:	cc                   	int3
40a700:	8b 54 24 0c          	mov    0xc(%esp),%edx
40a704:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40a708:	85 d2                	test   %edx,%edx
40a70a:	74 69                	je     0x40a775
40a70c:	33 c0                	xor    %eax,%eax
40a70e:	8a 44 24 08          	mov    0x8(%esp),%al
40a712:	84 c0                	test   %al,%al
40a714:	75 16                	jne    0x40a72c
40a716:	81 fa 00 01 00 00    	cmp    $0x100,%edx
40a71c:	72 0e                	jb     0x40a72c
40a71e:	83 3d 64 13 c7 00 00 	cmpl   $0x0,0xc71364
40a725:	74 05                	je     0x40a72c
40a727:	e9 38 8b 00 00       	jmp    0x413264
40a72c:	57                   	push   %edi
40a72d:	8b f9                	mov    %ecx,%edi
40a72f:	83 fa 04             	cmp    $0x4,%edx
40a732:	72 31                	jb     0x40a765
40a734:	f7 d9                	neg    %ecx
40a736:	83 e1 03             	and    $0x3,%ecx
40a739:	74 0c                	je     0x40a747
40a73b:	2b d1                	sub    %ecx,%edx
40a73d:	88 07                	mov    %al,(%edi)
40a73f:	83 c7 01             	add    $0x1,%edi
40a742:	83 e9 01             	sub    $0x1,%ecx
40a745:	75 f6                	jne    0x40a73d
40a747:	8b c8                	mov    %eax,%ecx
40a749:	c1 e0 08             	shl    $0x8,%eax
40a74c:	03 c1                	add    %ecx,%eax
40a74e:	8b c8                	mov    %eax,%ecx
40a750:	c1 e0 10             	shl    $0x10,%eax
40a753:	03 c1                	add    %ecx,%eax
40a755:	8b ca                	mov    %edx,%ecx
40a757:	83 e2 03             	and    $0x3,%edx
40a75a:	c1 e9 02             	shr    $0x2,%ecx
40a75d:	74 06                	je     0x40a765
40a75f:	f3 ab                	rep stos %eax,%es:(%edi)
40a761:	85 d2                	test   %edx,%edx
40a763:	74 0a                	je     0x40a76f
40a765:	88 07                	mov    %al,(%edi)
40a767:	83 c7 01             	add    $0x1,%edi
40a76a:	83 ea 01             	sub    $0x1,%edx
40a76d:	75 f6                	jne    0x40a765
40a76f:	8b 44 24 08          	mov    0x8(%esp),%eax
40a773:	5f                   	pop    %edi
40a774:	c3                   	ret
40a775:	8b 44 24 04          	mov    0x4(%esp),%eax
40a779:	c3                   	ret
40a77a:	8b ff                	mov    %edi,%edi
40a77c:	55                   	push   %ebp
40a77d:	8b ec                	mov    %esp,%ebp
40a77f:	56                   	push   %esi
40a780:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a786:	8b 35 ec a0 41 00    	mov    0x41a0ec,%esi
40a78c:	ff d6                	call   *%esi
40a78e:	85 c0                	test   %eax,%eax
40a790:	74 21                	je     0x40a7b3
40a792:	a1 b0 b3 42 00       	mov    0x42b3b0,%eax
40a797:	83 f8 ff             	cmp    $0xffffffff,%eax
40a79a:	74 17                	je     0x40a7b3
40a79c:	50                   	push   %eax
40a79d:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a7a3:	ff d6                	call   *%esi
40a7a5:	ff d0                	call   *%eax
40a7a7:	85 c0                	test   %eax,%eax
40a7a9:	74 08                	je     0x40a7b3
40a7ab:	8b 80 f8 01 00 00    	mov    0x1f8(%eax),%eax
40a7b1:	eb 27                	jmp    0x40a7da
40a7b3:	be 7c ac 41 00       	mov    $0x41ac7c,%esi
40a7b8:	56                   	push   %esi
40a7b9:	ff 15 14 a0 41 00    	call   *0x41a014
40a7bf:	85 c0                	test   %eax,%eax
40a7c1:	75 0b                	jne    0x40a7ce
40a7c3:	56                   	push   %esi
40a7c4:	e8 a3 1e 00 00       	call   0x40c66c
40a7c9:	59                   	pop    %ecx
40a7ca:	85 c0                	test   %eax,%eax
40a7cc:	74 18                	je     0x40a7e6
40a7ce:	68 6c ac 41 00       	push   $0x41ac6c
40a7d3:	50                   	push   %eax
40a7d4:	ff 15 e8 a0 41 00    	call   *0x41a0e8
40a7da:	85 c0                	test   %eax,%eax
40a7dc:	74 08                	je     0x40a7e6
40a7de:	ff 75 08             	push   0x8(%ebp)
40a7e1:	ff d0                	call   *%eax
40a7e3:	89 45 08             	mov    %eax,0x8(%ebp)
40a7e6:	8b 45 08             	mov    0x8(%ebp),%eax
40a7e9:	5e                   	pop    %esi
40a7ea:	5d                   	pop    %ebp
40a7eb:	c3                   	ret
40a7ec:	6a 00                	push   $0x0
40a7ee:	e8 87 ff ff ff       	call   0x40a77a
40a7f3:	59                   	pop    %ecx
40a7f4:	c3                   	ret
40a7f5:	8b ff                	mov    %edi,%edi
40a7f7:	55                   	push   %ebp
40a7f8:	8b ec                	mov    %esp,%ebp
40a7fa:	56                   	push   %esi
40a7fb:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a801:	8b 35 ec a0 41 00    	mov    0x41a0ec,%esi
40a807:	ff d6                	call   *%esi
40a809:	85 c0                	test   %eax,%eax
40a80b:	74 21                	je     0x40a82e
40a80d:	a1 b0 b3 42 00       	mov    0x42b3b0,%eax
40a812:	83 f8 ff             	cmp    $0xffffffff,%eax
40a815:	74 17                	je     0x40a82e
40a817:	50                   	push   %eax
40a818:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a81e:	ff d6                	call   *%esi
40a820:	ff d0                	call   *%eax
40a822:	85 c0                	test   %eax,%eax
40a824:	74 08                	je     0x40a82e
40a826:	8b 80 fc 01 00 00    	mov    0x1fc(%eax),%eax
40a82c:	eb 27                	jmp    0x40a855
40a82e:	be 7c ac 41 00       	mov    $0x41ac7c,%esi
40a833:	56                   	push   %esi
40a834:	ff 15 14 a0 41 00    	call   *0x41a014
40a83a:	85 c0                	test   %eax,%eax
40a83c:	75 0b                	jne    0x40a849
40a83e:	56                   	push   %esi
40a83f:	e8 28 1e 00 00       	call   0x40c66c
40a844:	59                   	pop    %ecx
40a845:	85 c0                	test   %eax,%eax
40a847:	74 18                	je     0x40a861
40a849:	68 98 ac 41 00       	push   $0x41ac98
40a84e:	50                   	push   %eax
40a84f:	ff 15 e8 a0 41 00    	call   *0x41a0e8
40a855:	85 c0                	test   %eax,%eax
40a857:	74 08                	je     0x40a861
40a859:	ff 75 08             	push   0x8(%ebp)
40a85c:	ff d0                	call   *%eax
40a85e:	89 45 08             	mov    %eax,0x8(%ebp)
40a861:	8b 45 08             	mov    0x8(%ebp),%eax
40a864:	5e                   	pop    %esi
40a865:	5d                   	pop    %ebp
40a866:	c3                   	ret
40a867:	ff 15 f0 a0 41 00    	call   *0x41a0f0
40a86d:	c2 04 00             	ret    $0x4
40a870:	8b ff                	mov    %edi,%edi
40a872:	56                   	push   %esi
40a873:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a879:	ff 15 ec a0 41 00    	call   *0x41a0ec
40a87f:	8b f0                	mov    %eax,%esi
40a881:	85 f6                	test   %esi,%esi
40a883:	75 1b                	jne    0x40a8a0
40a885:	ff 35 68 09 43 00    	push   0x430968
40a88b:	e8 65 ff ff ff       	call   0x40a7f5
40a890:	59                   	pop    %ecx
40a891:	8b f0                	mov    %eax,%esi
40a893:	56                   	push   %esi
40a894:	ff 35 b4 b3 42 00    	push   0x42b3b4
40a89a:	ff 15 f4 a0 41 00    	call   *0x41a0f4
40a8a0:	8b c6                	mov    %esi,%eax
40a8a2:	5e                   	pop    %esi
40a8a3:	c3                   	ret
40a8a4:	a1 b0 b3 42 00       	mov    0x42b3b0,%eax
40a8a9:	83 f8 ff             	cmp    $0xffffffff,%eax
40a8ac:	74 16                	je     0x40a8c4
40a8ae:	50                   	push   %eax
40a8af:	ff 35 70 09 43 00    	push   0x430970
40a8b5:	e8 3b ff ff ff       	call   0x40a7f5
40a8ba:	59                   	pop    %ecx
40a8bb:	ff d0                	call   *%eax
40a8bd:	83 0d b0 b3 42 00 ff 	orl    $0xffffffff,0x42b3b0
40a8c4:	a1 b4 b3 42 00       	mov    0x42b3b4,%eax
40a8c9:	83 f8 ff             	cmp    $0xffffffff,%eax
40a8cc:	74 0e                	je     0x40a8dc
40a8ce:	50                   	push   %eax
40a8cf:	ff 15 f8 a0 41 00    	call   *0x41a0f8
40a8d5:	83 0d b4 b3 42 00 ff 	orl    $0xffffffff,0x42b3b4
40a8dc:	e9 d2 ee ff ff       	jmp    0x4097b3
40a8e1:	6a 0c                	push   $0xc
40a8e3:	68 98 96 42 00       	push   $0x429698
40a8e8:	e8 ef fa ff ff       	call   0x40a3dc
40a8ed:	be 7c ac 41 00       	mov    $0x41ac7c,%esi
40a8f2:	56                   	push   %esi
40a8f3:	ff 15 14 a0 41 00    	call   *0x41a014
40a8f9:	85 c0                	test   %eax,%eax
40a8fb:	75 07                	jne    0x40a904
40a8fd:	56                   	push   %esi
40a8fe:	e8 69 1d 00 00       	call   0x40c66c
40a903:	59                   	pop    %ecx
40a904:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a907:	8b 75 08             	mov    0x8(%ebp),%esi
40a90a:	c7 46 5c 60 cb 41 00 	movl   $0x41cb60,0x5c(%esi)
40a911:	33 ff                	xor    %edi,%edi
40a913:	47                   	inc    %edi
40a914:	89 7e 14             	mov    %edi,0x14(%esi)
40a917:	85 c0                	test   %eax,%eax
40a919:	74 24                	je     0x40a93f
40a91b:	68 6c ac 41 00       	push   $0x41ac6c
40a920:	50                   	push   %eax
40a921:	8b 1d e8 a0 41 00    	mov    0x41a0e8,%ebx
40a927:	ff d3                	call   *%ebx
40a929:	89 86 f8 01 00 00    	mov    %eax,0x1f8(%esi)
40a92f:	68 98 ac 41 00       	push   $0x41ac98
40a934:	ff 75 e4             	push   -0x1c(%ebp)
40a937:	ff d3                	call   *%ebx
40a939:	89 86 fc 01 00 00    	mov    %eax,0x1fc(%esi)
40a93f:	89 7e 70             	mov    %edi,0x70(%esi)
40a942:	c6 86 c8 00 00 00 43 	movb   $0x43,0xc8(%esi)
40a949:	c6 86 4b 01 00 00 43 	movb   $0x43,0x14b(%esi)
40a950:	c7 46 68 c0 b9 42 00 	movl   $0x42b9c0,0x68(%esi)
40a957:	6a 0d                	push   $0xd
40a959:	e8 86 ef ff ff       	call   0x4098e4
40a95e:	59                   	pop    %ecx
40a95f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a963:	ff 76 68             	push   0x68(%esi)
40a966:	ff 15 74 a0 41 00    	call   *0x41a074
40a96c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a973:	e8 3e 00 00 00       	call   0x40a9b6
40a978:	6a 0c                	push   $0xc
40a97a:	e8 65 ef ff ff       	call   0x4098e4
40a97f:	59                   	pop    %ecx
40a980:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a983:	8b 45 0c             	mov    0xc(%ebp),%eax
40a986:	89 46 6c             	mov    %eax,0x6c(%esi)