40e54e:	c9                   	leave
40e54f:	c3                   	ret
40e550:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e553:	83 c0 04             	add    $0x4,%eax
40e556:	50                   	push   %eax
40e557:	e8 0a 56 00 00       	call   0x413b66
40e55c:	8b d8                	mov    %eax,%ebx
40e55e:	59                   	pop    %ecx
40e55f:	85 db                	test   %ebx,%ebx
40e561:	74 e6                	je     0x40e549
40e563:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40e566:	51                   	push   %ecx
40e567:	6a ff                	push   $0xffffffff
40e569:	57                   	push   %edi
40e56a:	ff 75 fc             	push   -0x4(%ebp)
40e56d:	8d 43 04             	lea    0x4(%ebx),%eax
40e570:	50                   	push   %eax
40e571:	6a 00                	push   $0x0
40e573:	e8 8e 9d 00 00       	call   0x418306
40e578:	83 c4 18             	add    $0x18,%esp
40e57b:	85 c0                	test   %eax,%eax
40e57d:	74 1b                	je     0x40e59a
40e57f:	83 f8 16             	cmp    $0x16,%eax
40e582:	0f 84 ad 00 00 00    	je     0x40e635
40e588:	83 f8 22             	cmp    $0x22,%eax
40e58b:	0f 84 a4 00 00 00    	je     0x40e635
40e591:	53                   	push   %ebx
40e592:	e8 74 4b 00 00       	call   0x41310b
40e597:	59                   	pop    %ecx
40e598:	eb af                	jmp    0x40e549
40e59a:	8b 06                	mov    (%esi),%eax
40e59c:	83 c9 ff             	or     $0xffffffff,%ecx
40e59f:	8b 7d f0             	mov    -0x10(%ebp),%edi
40e5a2:	8b 00                	mov    (%eax),%eax
40e5a4:	03 c0                	add    %eax,%eax
40e5a6:	8b 54 c7 24          	mov    0x24(%edi,%eax,8),%edx
40e5aa:	85 d2                	test   %edx,%edx
40e5ac:	74 26                	je     0x40e5d4
40e5ae:	8b c1                	mov    %ecx,%eax
40e5b0:	f0 0f c1 02          	lock xadd %eax,(%edx)
40e5b4:	75 1e                	jne    0x40e5d4
40e5b6:	8b 06                	mov    (%esi),%eax
40e5b8:	8b 00                	mov    (%eax),%eax
40e5ba:	03 c0                	add    %eax,%eax
40e5bc:	ff 74 c7 24          	push   0x24(%edi,%eax,8)
40e5c0:	e8 46 4b 00 00       	call   0x41310b
40e5c5:	8b 06                	mov    (%esi),%eax
40e5c7:	59                   	pop    %ecx
40e5c8:	8b 00                	mov    (%eax),%eax
40e5ca:	03 c0                	add    %eax,%eax
40e5cc:	83 64 c7 24 00       	andl   $0x0,0x24(%edi,%eax,8)
40e5d1:	83 c9 ff             	or     $0xffffffff,%ecx
40e5d4:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e5d7:	a1 a0 33 43 00       	mov    0x4333a0,%eax
40e5dc:	85 82 50 03 00 00    	test   %eax,0x350(%edx)
40e5e2:	75 30                	jne    0x40e614
40e5e4:	8b 06                	mov    (%esi),%eax
40e5e6:	8b 00                	mov    (%eax),%eax
40e5e8:	03 c0                	add    %eax,%eax
40e5ea:	8b 44 c7 24          	mov    0x24(%edi,%eax,8),%eax
40e5ee:	85 c0                	test   %eax,%eax
40e5f0:	74 22                	je     0x40e614
40e5f2:	f0 0f c1 08          	lock xadd %ecx,(%eax)
40e5f6:	49                   	dec    %ecx
40e5f7:	75 1b                	jne    0x40e614
40e5f9:	8b 06                	mov    (%esi),%eax
40e5fb:	8b 00                	mov    (%eax),%eax
40e5fd:	03 c0                	add    %eax,%eax
40e5ff:	ff 74 c7 24          	push   0x24(%edi,%eax,8)
40e603:	e8 03 4b 00 00       	call   0x41310b
40e608:	8b 06                	mov    (%esi),%eax
40e60a:	59                   	pop    %ecx
40e60b:	8b 00                	mov    (%eax),%eax
40e60d:	03 c0                	add    %eax,%eax
40e60f:	83 64 c7 24 00       	andl   $0x0,0x24(%edi,%eax,8)
40e614:	8b 4f 0c             	mov    0xc(%edi),%ecx
40e617:	8d 43 04             	lea    0x4(%ebx),%eax
40e61a:	89 0b                	mov    %ecx,(%ebx)
40e61c:	8b 0e                	mov    (%esi),%ecx
40e61e:	8b 09                	mov    (%ecx),%ecx
40e620:	03 c9                	add    %ecx,%ecx
40e622:	89 5c cf 24          	mov    %ebx,0x24(%edi,%ecx,8)
40e626:	8b 0e                	mov    (%esi),%ecx
40e628:	8b 09                	mov    (%ecx),%ecx
40e62a:	03 c9                	add    %ecx,%ecx
40e62c:	89 44 cf 1c          	mov    %eax,0x1c(%edi,%ecx,8)
40e630:	e9 16 ff ff ff       	jmp    0x40e54b
40e635:	33 db                	xor    %ebx,%ebx
40e637:	53                   	push   %ebx
40e638:	53                   	push   %ebx
40e639:	53                   	push   %ebx
40e63a:	53                   	push   %ebx
40e63b:	53                   	push   %ebx
40e63c:	e8 6d ea ff ff       	call   0x40d0ae
40e641:	cc                   	int3
40e642:	8b ff                	mov    %edi,%edi
40e644:	55                   	push   %ebp
40e645:	8b ec                	mov    %esp,%ebp
40e647:	51                   	push   %ecx
40e648:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40e64c:	75 0e                	jne    0x40e65c
40e64e:	6a 00                	push   $0x0
40e650:	ff 75 08             	push   0x8(%ebp)
40e653:	e8 a7 2a 00 00       	call   0x4110ff
40e658:	59                   	pop    %ecx
40e659:	59                   	pop    %ecx
40e65a:	c9                   	leave
40e65b:	c3                   	ret
40e65c:	56                   	push   %esi
40e65d:	57                   	push   %edi
40e65e:	68 ff ff ff 7f       	push   $0x7fffffff
40e663:	ff 75 0c             	push   0xc(%ebp)
40e666:	33 ff                	xor    %edi,%edi
40e668:	8d 45 fc             	lea    -0x4(%ebp),%eax
40e66b:	57                   	push   %edi
40e66c:	57                   	push   %edi
40e66d:	50                   	push   %eax
40e66e:	e8 d4 99 00 00       	call   0x418047
40e673:	83 c4 14             	add    $0x14,%esp
40e676:	85 c0                	test   %eax,%eax
40e678:	74 0a                	je     0x40e684
40e67a:	83 f8 16             	cmp    $0x16,%eax
40e67d:	74 53                	je     0x40e6d2
40e67f:	83 f8 22             	cmp    $0x22,%eax
40e682:	74 4e                	je     0x40e6d2
40e684:	6a 02                	push   $0x2
40e686:	ff 75 fc             	push   -0x4(%ebp)
40e689:	e8 20 4a 00 00       	call   0x4130ae
40e68e:	8b f0                	mov    %eax,%esi
40e690:	59                   	pop    %ecx
40e691:	59                   	pop    %ecx
40e692:	85 f6                	test   %esi,%esi
40e694:	74 2f                	je     0x40e6c5
40e696:	6a ff                	push   $0xffffffff
40e698:	ff 75 0c             	push   0xc(%ebp)
40e69b:	ff 75 fc             	push   -0x4(%ebp)
40e69e:	56                   	push   %esi
40e69f:	57                   	push   %edi
40e6a0:	e8 a2 99 00 00       	call   0x418047
40e6a5:	83 c4 14             	add    $0x14,%esp
40e6a8:	85 c0                	test   %eax,%eax
40e6aa:	74 0c                	je     0x40e6b8
40e6ac:	83 f8 16             	cmp    $0x16,%eax
40e6af:	74 21                	je     0x40e6d2
40e6b1:	83 f8 22             	cmp    $0x22,%eax
40e6b4:	74 1c                	je     0x40e6d2
40e6b6:	eb 0d                	jmp    0x40e6c5
40e6b8:	56                   	push   %esi
40e6b9:	ff 75 08             	push   0x8(%ebp)
40e6bc:	e8 3e 2a 00 00       	call   0x4110ff
40e6c1:	59                   	pop    %ecx
40e6c2:	59                   	pop    %ecx
40e6c3:	8b f8                	mov    %eax,%edi
40e6c5:	56                   	push   %esi
40e6c6:	e8 40 4a 00 00       	call   0x41310b
40e6cb:	59                   	pop    %ecx
40e6cc:	8b c7                	mov    %edi,%eax
40e6ce:	5f                   	pop    %edi
40e6cf:	5e                   	pop    %esi
40e6d0:	c9                   	leave
40e6d1:	c3                   	ret
40e6d2:	57                   	push   %edi
40e6d3:	57                   	push   %edi
40e6d4:	57                   	push   %edi
40e6d5:	57                   	push   %edi
40e6d6:	57                   	push   %edi
40e6d7:	e8 d2 e9 ff ff       	call   0x40d0ae
40e6dc:	cc                   	int3
40e6dd:	8b ff                	mov    %edi,%edi
40e6df:	55                   	push   %ebp
40e6e0:	8b ec                	mov    %esp,%ebp
40e6e2:	83 ec 14             	sub    $0x14,%esp
40e6e5:	e8 03 51 00 00       	call   0x4137ed
40e6ea:	8d 45 08             	lea    0x8(%ebp),%eax
40e6ed:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e6f0:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40e6f3:	6a 04                	push   $0x4
40e6f5:	8d 45 0c             	lea    0xc(%ebp),%eax
40e6f8:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e6fb:	58                   	pop    %eax
40e6fc:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e6ff:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e702:	8d 45 f8             	lea    -0x8(%ebp),%eax
40e705:	50                   	push   %eax
40e706:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e709:	50                   	push   %eax
40e70a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e70d:	50                   	push   %eax
40e70e:	e8 75 fd ff ff       	call   0x40e488
40e713:	c9                   	leave
40e714:	c3                   	ret
40e715:	8b ff                	mov    %edi,%edi
40e717:	55                   	push   %ebp
40e718:	8b ec                	mov    %esp,%ebp
40e71a:	51                   	push   %ecx
40e71b:	e8 b3 5a 00 00       	call   0x4141d3
40e720:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e723:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e726:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e729:	51                   	push   %ecx
40e72a:	50                   	push   %eax
40e72b:	e8 f5 5c 00 00       	call   0x414425
40e730:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e733:	59                   	pop    %ecx
40e734:	59                   	pop    %ecx
40e735:	8b 00                	mov    (%eax),%eax
40e737:	c9                   	leave
40e738:	c3                   	ret
40e739:	cc                   	int3
40e73a:	cc                   	int3
40e73b:	cc                   	int3
40e73c:	cc                   	int3
40e73d:	cc                   	int3
40e73e:	cc                   	int3
40e73f:	cc                   	int3
40e740:	8b ff                	mov    %edi,%edi
40e742:	55                   	push   %ebp
40e743:	8b ec                	mov    %esp,%ebp
40e745:	51                   	push   %ecx
40e746:	83 3d bc 49 43 00 00 	cmpl   $0x0,0x4349bc
40e74d:	56                   	push   %esi
40e74e:	8b 75 08             	mov    0x8(%ebp),%esi
40e751:	57                   	push   %edi
40e752:	8d 7e 01             	lea    0x1(%esi),%edi
40e755:	75 1a                	jne    0x40e771
40e757:	81 ff 00 01 00 00    	cmp    $0x100,%edi
40e75d:	77 5d                	ja     0x40e7bc
40e75f:	a1 d0 31 43 00       	mov    0x4331d0,%eax
40e764:	5f                   	pop    %edi
40e765:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
40e769:	83 e0 02             	and    $0x2,%eax
40e76c:	5e                   	pop    %esi
40e76d:	8b e5                	mov    %ebp,%esp
40e76f:	5d                   	pop    %ebp
40e770:	c3                   	ret
40e771:	e8 5d 5a 00 00       	call   0x4141d3
40e776:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e779:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e77c:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e77f:	51                   	push   %ecx
40e780:	50                   	push   %eax
40e781:	e8 9f 5c 00 00       	call   0x414425
40e786:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e789:	83 c4 08             	add    $0x8,%esp
40e78c:	81 ff 00 01 00 00    	cmp    $0x100,%edi
40e792:	77 0f                	ja     0x40e7a3
40e794:	8b 00                	mov    (%eax),%eax
40e796:	5f                   	pop    %edi
40e797:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
40e79b:	83 e0 02             	and    $0x2,%eax
40e79e:	5e                   	pop    %esi
40e79f:	8b e5                	mov    %ebp,%esp
40e7a1:	5d                   	pop    %ebp
40e7a2:	c3                   	ret
40e7a3:	83 78 04 01          	cmpl   $0x1,0x4(%eax)
40e7a7:	7e 13                	jle    0x40e7bc
40e7a9:	6a 00                	push   $0x0
40e7ab:	6a 02                	push   $0x2
40e7ad:	56                   	push   %esi
40e7ae:	e8 1a 9c 00 00       	call   0x4183cd
40e7b3:	83 c4 0c             	add    $0xc,%esp
40e7b6:	5f                   	pop    %edi
40e7b7:	5e                   	pop    %esi
40e7b8:	8b e5                	mov    %ebp,%esp
40e7ba:	5d                   	pop    %ebp
40e7bb:	c3                   	ret
40e7bc:	5f                   	pop    %edi
40e7bd:	33 c0                	xor    %eax,%eax
40e7bf:	5e                   	pop    %esi
40e7c0:	8b e5                	mov    %ebp,%esp
40e7c2:	5d                   	pop    %ebp
40e7c3:	c3                   	ret
40e7c4:	cc                   	int3
40e7c5:	cc                   	int3
40e7c6:	cc                   	int3
40e7c7:	cc                   	int3
40e7c8:	cc                   	int3
40e7c9:	cc                   	int3
40e7ca:	cc                   	int3
40e7cb:	cc                   	int3
40e7cc:	cc                   	int3
40e7cd:	cc                   	int3
40e7ce:	cc                   	int3
40e7cf:	cc                   	int3
40e7d0:	8b ff                	mov    %edi,%edi
40e7d2:	55                   	push   %ebp
40e7d3:	8b ec                	mov    %esp,%ebp
40e7d5:	51                   	push   %ecx
40e7d6:	83 3d bc 49 43 00 00 	cmpl   $0x0,0x4349bc
40e7dd:	56                   	push   %esi
40e7de:	8b 75 08             	mov    0x8(%ebp),%esi
40e7e1:	57                   	push   %edi
40e7e2:	8d 7e 01             	lea    0x1(%esi),%edi
40e7e5:	75 1a                	jne    0x40e801
40e7e7:	81 ff 00 01 00 00    	cmp    $0x100,%edi
40e7ed:	77 5d                	ja     0x40e84c
40e7ef:	a1 d0 31 43 00       	mov    0x4331d0,%eax
40e7f4:	5f                   	pop    %edi
40e7f5:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
40e7f9:	83 e0 01             	and    $0x1,%eax
40e7fc:	5e                   	pop    %esi
40e7fd:	8b e5                	mov    %ebp,%esp
40e7ff:	5d                   	pop    %ebp
40e800:	c3                   	ret
40e801:	e8 cd 59 00 00       	call   0x4141d3
40e806:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e809:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e80c:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e80f:	51                   	push   %ecx
40e810:	50                   	push   %eax
40e811:	e8 0f 5c 00 00       	call   0x414425
40e816:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e819:	83 c4 08             	add    $0x8,%esp
40e81c:	81 ff 00 01 00 00    	cmp    $0x100,%edi
40e822:	77 0f                	ja     0x40e833
40e824:	8b 00                	mov    (%eax),%eax
40e826:	5f                   	pop    %edi
40e827:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
40e82b:	83 e0 01             	and    $0x1,%eax
40e82e:	5e                   	pop    %esi
40e82f:	8b e5                	mov    %ebp,%esp
40e831:	5d                   	pop    %ebp
40e832:	c3                   	ret
40e833:	83 78 04 01          	cmpl   $0x1,0x4(%eax)
40e837:	7e 13                	jle    0x40e84c
40e839:	6a 00                	push   $0x0
40e83b:	6a 01                	push   $0x1
40e83d:	56                   	push   %esi
40e83e:	e8 8a 9b 00 00       	call   0x4183cd
40e843:	83 c4 0c             	add    $0xc,%esp
40e846:	5f                   	pop    %edi
40e847:	5e                   	pop    %esi
40e848:	8b e5                	mov    %ebp,%esp
40e84a:	5d                   	pop    %ebp
40e84b:	c3                   	ret
40e84c:	5f                   	pop    %edi
40e84d:	33 c0                	xor    %eax,%eax
40e84f:	5e                   	pop    %esi
40e850:	8b e5                	mov    %ebp,%esp
40e852:	5d                   	pop    %ebp
40e853:	c3                   	ret
40e854:	8b ff                	mov    %edi,%edi
40e856:	55                   	push   %ebp
40e857:	8b ec                	mov    %esp,%ebp
40e859:	51                   	push   %ecx
40e85a:	e8 74 59 00 00       	call   0x4141d3
40e85f:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e862:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e865:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e868:	51                   	push   %ecx