40b4d5:	6a 16                	push   $0x16
40b4d7:	5e                   	pop    %esi
40b4d8:	89 30                	mov    %esi,(%eax)
40b4da:	e8 4f c7 ff ff       	call   0x407c2e
40b4df:	8b c6                	mov    %esi,%eax
40b4e1:	e9 f3 00 00 00       	jmp    0x40b5d9
40b4e6:	8b 75 1c             	mov    0x1c(%ebp),%esi
40b4e9:	83 fe 41             	cmp    $0x41,%esi
40b4ec:	74 13                	je     0x40b501
40b4ee:	83 fe 45             	cmp    $0x45,%esi
40b4f1:	74 0e                	je     0x40b501
40b4f3:	83 fe 46             	cmp    $0x46,%esi
40b4f6:	74 09                	je     0x40b501
40b4f8:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40b4fc:	83 fe 47             	cmp    $0x47,%esi
40b4ff:	75 04                	jne    0x40b505
40b501:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b505:	8b 45 24             	mov    0x24(%ebp),%eax
40b508:	83 e0 08             	and    $0x8,%eax
40b50b:	83 c8 00             	or     $0x0,%eax
40b50e:	75 32                	jne    0x40b542
40b510:	ff 75 08             	push   0x8(%ebp)
40b513:	e8 b3 f6 ff ff       	call   0x40abcb
40b518:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b51b:	59                   	pop    %ecx
40b51c:	85 c0                	test   %eax,%eax
40b51e:	74 22                	je     0x40b542
40b520:	ff 75 fc             	push   -0x4(%ebp)
40b523:	53                   	push   %ebx
40b524:	57                   	push   %edi
40b525:	ff 75 08             	push   0x8(%ebp)
40b528:	e8 0a f7 ff ff       	call   0x40ac37
40b52d:	59                   	pop    %ecx
40b52e:	0f b6 c0             	movzbl %al,%eax
40b531:	50                   	push   %eax
40b532:	ff 75 f8             	push   -0x8(%ebp)
40b535:	e8 30 fe ff ff       	call   0x40b36a
40b53a:	83 c4 14             	add    $0x14,%esp
40b53d:	e9 97 00 00 00       	jmp    0x40b5d9
40b542:	8b 45 24             	mov    0x24(%ebp),%eax
40b545:	83 e0 10             	and    $0x10,%eax
40b548:	83 c8 00             	or     $0x0,%eax
40b54b:	74 04                	je     0x40b551
40b54d:	6a 03                	push   $0x3
40b54f:	eb 02                	jmp    0x40b553
40b551:	6a 02                	push   $0x2
40b553:	58                   	pop    %eax
40b554:	83 fe 61             	cmp    $0x61,%esi
40b557:	7f 28                	jg     0x40b581
40b559:	74 0a                	je     0x40b565
40b55b:	83 ee 41             	sub    $0x41,%esi
40b55e:	74 05                	je     0x40b565
40b560:	83 ee 04             	sub    $0x4,%esi
40b563:	eb 1f                	jmp    0x40b584
40b565:	ff 75 2c             	push   0x2c(%ebp)
40b568:	50                   	push   %eax
40b569:	ff 75 fc             	push   -0x4(%ebp)
40b56c:	ff 75 20             	push   0x20(%ebp)
40b56f:	ff 75 18             	push   0x18(%ebp)
40b572:	ff 75 14             	push   0x14(%ebp)
40b575:	53                   	push   %ebx
40b576:	57                   	push   %edi
40b577:	ff 75 08             	push   0x8(%ebp)
40b57a:	e8 d6 f6 ff ff       	call   0x40ac55
40b57f:	eb 55                	jmp    0x40b5d6
40b581:	83 ee 65             	sub    $0x65,%esi
40b584:	ff 75 2c             	push   0x2c(%ebp)
40b587:	74 36                	je     0x40b5bf
40b589:	83 ee 01             	sub    $0x1,%esi
40b58c:	74 19                	je     0x40b5a7
40b58e:	50                   	push   %eax
40b58f:	ff 75 fc             	push   -0x4(%ebp)
40b592:	ff 75 20             	push   0x20(%ebp)
40b595:	ff 75 18             	push   0x18(%ebp)
40b598:	ff 75 14             	push   0x14(%ebp)
40b59b:	53                   	push   %ebx
40b59c:	57                   	push   %edi
40b59d:	ff 75 08             	push   0x8(%ebp)
40b5a0:	e8 fd fc ff ff       	call   0x40b2a2
40b5a5:	eb 2f                	jmp    0x40b5d6
40b5a7:	ff 75 20             	push   0x20(%ebp)
40b5aa:	ff 75 18             	push   0x18(%ebp)
40b5ad:	ff 75 14             	push   0x14(%ebp)
40b5b0:	53                   	push   %ebx
40b5b1:	57                   	push   %edi
40b5b2:	ff 75 08             	push   0x8(%ebp)
40b5b5:	e8 84 fb ff ff       	call   0x40b13e
40b5ba:	83 c4 1c             	add    $0x1c,%esp
40b5bd:	eb 1a                	jmp    0x40b5d9
40b5bf:	50                   	push   %eax
40b5c0:	ff 75 fc             	push   -0x4(%ebp)
40b5c3:	ff 75 20             	push   0x20(%ebp)
40b5c6:	ff 75 18             	push   0x18(%ebp)
40b5c9:	ff 75 14             	push   0x14(%ebp)
40b5cc:	53                   	push   %ebx
40b5cd:	57                   	push   %edi
40b5ce:	ff 75 08             	push   0x8(%ebp)
40b5d1:	e8 82 f9 ff ff       	call   0x40af58
40b5d6:	83 c4 24             	add    $0x24,%esp
40b5d9:	5b                   	pop    %ebx
40b5da:	5f                   	pop    %edi
40b5db:	5e                   	pop    %esi
40b5dc:	8b e5                	mov    %ebp,%esp
40b5de:	5d                   	pop    %ebp
40b5df:	c3                   	ret
40b5e0:	8b ff                	mov    %edi,%edi
40b5e2:	55                   	push   %ebp
40b5e3:	8b ec                	mov    %esp,%ebp
40b5e5:	8b 45 08             	mov    0x8(%ebp),%eax
40b5e8:	85 c0                	test   %eax,%eax
40b5ea:	75 15                	jne    0x40b601
40b5ec:	e8 16 c7 ff ff       	call   0x407d07
40b5f1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b5f7:	e8 32 c6 ff ff       	call   0x407c2e
40b5fc:	83 c8 ff             	or     $0xffffffff,%eax
40b5ff:	5d                   	pop    %ebp
40b600:	c3                   	ret
40b601:	8b 40 10             	mov    0x10(%eax),%eax
40b604:	5d                   	pop    %ebp
40b605:	c3                   	ret
40b606:	a1 a4 41 42 00       	mov    0x4241a4,%eax
40b60b:	56                   	push   %esi
40b60c:	6a 03                	push   $0x3
40b60e:	5e                   	pop    %esi
40b60f:	85 c0                	test   %eax,%eax
40b611:	75 07                	jne    0x40b61a
40b613:	b8 00 02 00 00       	mov    $0x200,%eax
40b618:	eb 06                	jmp    0x40b620
40b61a:	3b c6                	cmp    %esi,%eax
40b61c:	7d 07                	jge    0x40b625
40b61e:	8b c6                	mov    %esi,%eax
40b620:	a3 a4 41 42 00       	mov    %eax,0x4241a4
40b625:	6a 04                	push   $0x4
40b627:	50                   	push   %eax
40b628:	e8 7f e2 ff ff       	call   0x4098ac
40b62d:	6a 00                	push   $0x0
40b62f:	a3 a8 41 42 00       	mov    %eax,0x4241a8
40b634:	e8 eb e1 ff ff       	call   0x409824
40b639:	83 c4 0c             	add    $0xc,%esp
40b63c:	83 3d a8 41 42 00 00 	cmpl   $0x0,0x4241a8
40b643:	75 2b                	jne    0x40b670
40b645:	6a 04                	push   $0x4
40b647:	56                   	push   %esi
40b648:	89 35 a4 41 42 00    	mov    %esi,0x4241a4
40b64e:	e8 59 e2 ff ff       	call   0x4098ac
40b653:	6a 00                	push   $0x0
40b655:	a3 a8 41 42 00       	mov    %eax,0x4241a8
40b65a:	e8 c5 e1 ff ff       	call   0x409824
40b65f:	83 c4 0c             	add    $0xc,%esp
40b662:	83 3d a8 41 42 00 00 	cmpl   $0x0,0x4241a8
40b669:	75 05                	jne    0x40b670
40b66b:	83 c8 ff             	or     $0xffffffff,%eax
40b66e:	5e                   	pop    %esi
40b66f:	c3                   	ret
40b670:	57                   	push   %edi
40b671:	33 ff                	xor    %edi,%edi
40b673:	be 60 30 42 00       	mov    $0x423060,%esi
40b678:	6a 00                	push   $0x0
40b67a:	68 a0 0f 00 00       	push   $0xfa0
40b67f:	8d 46 20             	lea    0x20(%esi),%eax
40b682:	50                   	push   %eax
40b683:	e8 c0 09 00 00       	call   0x40c048
40b688:	a1 a8 41 42 00       	mov    0x4241a8,%eax
40b68d:	8b d7                	mov    %edi,%edx
40b68f:	c1 fa 06             	sar    $0x6,%edx
40b692:	89 34 b8             	mov    %esi,(%eax,%edi,4)
40b695:	8b c7                	mov    %edi,%eax
40b697:	83 e0 3f             	and    $0x3f,%eax
40b69a:	6b c8 30             	imul   $0x30,%eax,%ecx
40b69d:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40b6a4:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40b6a8:	83 f8 ff             	cmp    $0xffffffff,%eax
40b6ab:	74 09                	je     0x40b6b6
40b6ad:	83 f8 fe             	cmp    $0xfffffffe,%eax
40b6b0:	74 04                	je     0x40b6b6
40b6b2:	85 c0                	test   %eax,%eax
40b6b4:	75 07                	jne    0x40b6bd
40b6b6:	c7 46 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%esi)
40b6bd:	83 c6 38             	add    $0x38,%esi
40b6c0:	47                   	inc    %edi
40b6c1:	81 fe 08 31 42 00    	cmp    $0x423108,%esi
40b6c7:	75 af                	jne    0x40b678
40b6c9:	5f                   	pop    %edi
40b6ca:	33 c0                	xor    %eax,%eax
40b6cc:	5e                   	pop    %esi
40b6cd:	c3                   	ret
40b6ce:	8b ff                	mov    %edi,%edi
40b6d0:	55                   	push   %ebp
40b6d1:	8b ec                	mov    %esp,%ebp
40b6d3:	6b 45 08 38          	imul   $0x38,0x8(%ebp),%eax
40b6d7:	05 60 30 42 00       	add    $0x423060,%eax
40b6dc:	5d                   	pop    %ebp
40b6dd:	c3                   	ret
40b6de:	8b ff                	mov    %edi,%edi
40b6e0:	56                   	push   %esi
40b6e1:	e8 ed 24 00 00       	call   0x40dbd3
40b6e6:	e8 df 7c 00 00       	call   0x4133ca
40b6eb:	33 f6                	xor    %esi,%esi
40b6ed:	a1 a8 41 42 00       	mov    0x4241a8,%eax
40b6f2:	ff 34 06             	push   (%esi,%eax,1)
40b6f5:	e8 ee 23 00 00       	call   0x40dae8
40b6fa:	a1 a8 41 42 00       	mov    0x4241a8,%eax
40b6ff:	59                   	pop    %ecx
40b700:	8b 04 06             	mov    (%esi,%eax,1),%eax
40b703:	83 c0 20             	add    $0x20,%eax
40b706:	50                   	push   %eax
40b707:	ff 15 40 b0 41 00    	call   *0x41b040
40b70d:	83 c6 04             	add    $0x4,%esi
40b710:	83 fe 0c             	cmp    $0xc,%esi
40b713:	75 d8                	jne    0x40b6ed
40b715:	ff 35 a8 41 42 00    	push   0x4241a8
40b71b:	e8 04 e1 ff ff       	call   0x409824
40b720:	83 25 a8 41 42 00 00 	andl   $0x0,0x4241a8
40b727:	59                   	pop    %ecx
40b728:	5e                   	pop    %esi
40b729:	c3                   	ret
40b72a:	8b ff                	mov    %edi,%edi
40b72c:	55                   	push   %ebp
40b72d:	8b ec                	mov    %esp,%ebp
40b72f:	8b 45 08             	mov    0x8(%ebp),%eax
40b732:	83 c0 20             	add    $0x20,%eax
40b735:	50                   	push   %eax
40b736:	ff 15 2c b0 41 00    	call   *0x41b02c
40b73c:	5d                   	pop    %ebp
40b73d:	c3                   	ret
40b73e:	8b ff                	mov    %edi,%edi
40b740:	55                   	push   %ebp
40b741:	8b ec                	mov    %esp,%ebp
40b743:	8b 45 08             	mov    0x8(%ebp),%eax
40b746:	83 c0 20             	add    $0x20,%eax
40b749:	50                   	push   %eax
40b74a:	ff 15 34 b0 41 00    	call   *0x41b034
40b750:	5d                   	pop    %ebp
40b751:	c3                   	ret
40b752:	8b 0d 0c 30 42 00    	mov    0x42300c,%ecx
40b758:	33 c0                	xor    %eax,%eax
40b75a:	83 c9 01             	or     $0x1,%ecx
40b75d:	39 0d b0 41 42 00    	cmp    %ecx,0x4241b0
40b763:	0f 94 c0             	sete   %al
40b766:	c3                   	ret
40b767:	8b ff                	mov    %edi,%edi
40b769:	55                   	push   %ebp
40b76a:	8b ec                	mov    %esp,%ebp
40b76c:	56                   	push   %esi
40b76d:	8b 75 08             	mov    0x8(%ebp),%esi
40b770:	56                   	push   %esi
40b771:	e8 6a fe ff ff       	call   0x40b5e0
40b776:	50                   	push   %eax
40b777:	e8 ee 7c 00 00       	call   0x41346a
40b77c:	59                   	pop    %ecx
40b77d:	59                   	pop    %ecx
40b77e:	85 c0                	test   %eax,%eax
40b780:	75 07                	jne    0x40b789
40b782:	32 c0                	xor    %al,%al
40b784:	e9 90 00 00 00       	jmp    0x40b819
40b789:	53                   	push   %ebx
40b78a:	57                   	push   %edi
40b78b:	6a 01                	push   $0x1
40b78d:	e8 3c ff ff ff       	call   0x40b6ce
40b792:	59                   	pop    %ecx
40b793:	6a 02                	push   $0x2
40b795:	5b                   	pop    %ebx
40b796:	3b f0                	cmp    %eax,%esi
40b798:	75 07                	jne    0x40b7a1
40b79a:	bf b4 41 42 00       	mov    $0x4241b4,%edi
40b79f:	eb 10                	jmp    0x40b7b1
40b7a1:	53                   	push   %ebx
40b7a2:	e8 27 ff ff ff       	call   0x40b6ce
40b7a7:	59                   	pop    %ecx
40b7a8:	3b f0                	cmp    %eax,%esi
40b7aa:	75 69                	jne    0x40b815
40b7ac:	bf b8 41 42 00       	mov    $0x4241b8,%edi
40b7b1:	ff 05 ac 41 42 00    	incl   0x4241ac
40b7b7:	8d 4e 0c             	lea    0xc(%esi),%ecx
40b7ba:	8b 01                	mov    (%ecx),%eax
40b7bc:	a9 c0 04 00 00       	test   $0x4c0,%eax
40b7c1:	75 52                	jne    0x40b815
40b7c3:	b8 82 02 00 00       	mov    $0x282,%eax
40b7c8:	f0 09 01             	lock or %eax,(%ecx)
40b7cb:	8b 07                	mov    (%edi),%eax
40b7cd:	85 c0                	test   %eax,%eax
40b7cf:	75 2b                	jne    0x40b7fc
40b7d1:	68 00 10 00 00       	push   $0x1000
40b7d6:	e8 83 e0 ff ff       	call   0x40985e
40b7db:	6a 00                	push   $0x0
40b7dd:	89 07                	mov    %eax,(%edi)
40b7df:	e8 40 e0 ff ff       	call   0x409824
40b7e4:	8b 07                	mov    (%edi),%eax
40b7e6:	59                   	pop    %ecx
40b7e7:	59                   	pop    %ecx
40b7e8:	85 c0                	test   %eax,%eax
40b7ea:	75 10                	jne    0x40b7fc
40b7ec:	8d 4e 14             	lea    0x14(%esi),%ecx
40b7ef:	89 5e 08             	mov    %ebx,0x8(%esi)
40b7f2:	89 4e 04             	mov    %ecx,0x4(%esi)
40b7f5:	89 0e                	mov    %ecx,(%esi)
40b7f7:	89 5e 18             	mov    %ebx,0x18(%esi)
40b7fa:	eb 15                	jmp    0x40b811
40b7fc:	89 46 04             	mov    %eax,0x4(%esi)
40b7ff:	8b 07                	mov    (%edi),%eax
40b801:	89 06                	mov    %eax,(%esi)
40b803:	c7 46 08 00 10 00 00 	movl   $0x1000,0x8(%esi)
40b80a:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
40b811:	b0 01                	mov    $0x1,%al
40b813:	eb 02                	jmp    0x40b817
40b815:	32 c0                	xor    %al,%al
40b817:	5f                   	pop    %edi
40b818:	5b                   	pop    %ebx
40b819:	5e                   	pop    %esi
40b81a:	5d                   	pop    %ebp
40b81b:	c3                   	ret
40b81c:	8b ff                	mov    %edi,%edi
40b81e:	55                   	push   %ebp
40b81f:	8b ec                	mov    %esp,%ebp
40b821:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40b825:	74 2c                	je     0x40b853
40b827:	56                   	push   %esi
40b828:	8b 75 0c             	mov    0xc(%ebp),%esi
40b82b:	57                   	push   %edi
40b82c:	8d 7e 0c             	lea    0xc(%esi),%edi
40b82f:	8b 07                	mov    (%edi),%eax
40b831:	c1 e8 09             	shr    $0x9,%eax
40b834:	a8 01                	test   $0x1,%al
40b836:	74 19                	je     0x40b851
40b838:	56                   	push   %esi
40b839:	e8 e8 22 00 00       	call   0x40db26
40b83e:	59                   	pop    %ecx
40b83f:	b8 7f fd ff ff       	mov    $0xfffffd7f,%eax
40b844:	f0 21 07             	lock and %eax,(%edi)
40b847:	33 c0                	xor    %eax,%eax
40b849:	89 46 18             	mov    %eax,0x18(%esi)
40b84c:	89 46 04             	mov    %eax,0x4(%esi)
40b84f:	89 06                	mov    %eax,(%esi)
40b851:	5f                   	pop    %edi
40b852:	5e                   	pop    %esi
40b853:	5d                   	pop    %ebp
40b854:	c3                   	ret
40b855:	8b ff                	mov    %edi,%edi
40b857:	55                   	push   %ebp
40b858:	8b ec                	mov    %esp,%ebp
40b85a:	83 ec 48             	sub    $0x48,%esp
40b85d:	8d 45 b8             	lea    -0x48(%ebp),%eax
40b860:	50                   	push   %eax
40b861:	ff 15 c4 b0 41 00    	call   *0x41b0c4
40b867:	66 83 7d ea 00       	cmpw   $0x0,-0x16(%ebp)
40b86c:	0f 84 95 00 00 00    	je     0x40b907
40b872:	8b 45 ec             	mov    -0x14(%ebp),%eax
40b875:	85 c0                	test   %eax,%eax
40b877:	0f 84 8a 00 00 00    	je     0x40b907
40b87d:	53                   	push   %ebx