40a54c:	77 03                	ja     0x40a551
40a54e:	83 c1 20             	add    $0x20,%ecx
40a551:	8b c1                	mov    %ecx,%eax
40a553:	5d                   	pop    %ebp
40a554:	c3                   	ret
40a555:	8b ff                	mov    %edi,%edi
40a557:	55                   	push   %ebp
40a558:	8b ec                	mov    %esp,%ebp
40a55a:	8b 45 08             	mov    0x8(%ebp),%eax
40a55d:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a560:	8b 55 0c             	mov    0xc(%ebp),%edx
40a563:	89 10                	mov    %edx,(%eax)
40a565:	89 48 04             	mov    %ecx,0x4(%eax)
40a568:	85 c9                	test   %ecx,%ecx
40a56a:	74 02                	je     0x40a56e
40a56c:	89 11                	mov    %edx,(%ecx)
40a56e:	5d                   	pop    %ebp
40a56f:	c3                   	ret
40a570:	8b ff                	mov    %edi,%edi
40a572:	55                   	push   %ebp
40a573:	8b ec                	mov    %esp,%ebp
40a575:	51                   	push   %ecx
40a576:	6a 01                	push   $0x1
40a578:	ff 75 10             	push   0x10(%ebp)
40a57b:	51                   	push   %ecx
40a57c:	51                   	push   %ecx
40a57d:	8b c4                	mov    %esp,%eax
40a57f:	ff 75 0c             	push   0xc(%ebp)
40a582:	ff 75 08             	push   0x8(%ebp)
40a585:	50                   	push   %eax
40a586:	e8 ca ff ff ff       	call   0x40a555
40a58b:	83 c4 0c             	add    $0xc,%esp
40a58e:	6a 00                	push   $0x0
40a590:	e8 cf f5 ff ff       	call   0x409b64
40a595:	83 c4 14             	add    $0x14,%esp
40a598:	8b e5                	mov    %ebp,%esp
40a59a:	5d                   	pop    %ebp
40a59b:	c3                   	ret
40a59c:	8b ff                	mov    %edi,%edi
40a59e:	55                   	push   %ebp
40a59f:	8b ec                	mov    %esp,%ebp
40a5a1:	83 ec 10             	sub    $0x10,%esp
40a5a4:	53                   	push   %ebx
40a5a5:	56                   	push   %esi
40a5a6:	8b 75 0c             	mov    0xc(%ebp),%esi
40a5a9:	85 f6                	test   %esi,%esi
40a5ab:	74 18                	je     0x40a5c5
40a5ad:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a5b0:	85 db                	test   %ebx,%ebx
40a5b2:	74 11                	je     0x40a5c5
40a5b4:	80 3e 00             	cmpb   $0x0,(%esi)
40a5b7:	75 14                	jne    0x40a5cd
40a5b9:	8b 45 08             	mov    0x8(%ebp),%eax
40a5bc:	85 c0                	test   %eax,%eax
40a5be:	74 05                	je     0x40a5c5
40a5c0:	33 c9                	xor    %ecx,%ecx
40a5c2:	66 89 08             	mov    %cx,(%eax)
40a5c5:	33 c0                	xor    %eax,%eax
40a5c7:	5e                   	pop    %esi
40a5c8:	5b                   	pop    %ebx
40a5c9:	8b e5                	mov    %ebp,%esp
40a5cb:	5d                   	pop    %ebp
40a5cc:	c3                   	ret
40a5cd:	57                   	push   %edi
40a5ce:	ff 75 14             	push   0x14(%ebp)
40a5d1:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40a5d4:	e8 d8 b0 ff ff       	call   0x4056b1
40a5d9:	8b 45 f4             	mov    -0xc(%ebp),%eax
40a5dc:	83 b8 a8 00 00 00 00 	cmpl   $0x0,0xa8(%eax)
40a5e3:	75 15                	jne    0x40a5fa
40a5e5:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a5e8:	85 c9                	test   %ecx,%ecx
40a5ea:	74 06                	je     0x40a5f2
40a5ec:	0f b6 06             	movzbl (%esi),%eax
40a5ef:	66 89 01             	mov    %ax,(%ecx)
40a5f2:	33 ff                	xor    %edi,%edi
40a5f4:	47                   	inc    %edi
40a5f5:	e9 84 00 00 00       	jmp    0x40a67e
40a5fa:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a5fd:	50                   	push   %eax
40a5fe:	0f b6 06             	movzbl (%esi),%eax
40a601:	50                   	push   %eax
40a602:	e8 f0 71 00 00       	call   0x4117f7
40a607:	59                   	pop    %ecx
40a608:	59                   	pop    %ecx
40a609:	85 c0                	test   %eax,%eax
40a60b:	74 40                	je     0x40a64d
40a60d:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a610:	83 7f 04 01          	cmpl   $0x1,0x4(%edi)
40a614:	7e 27                	jle    0x40a63d
40a616:	3b 5f 04             	cmp    0x4(%edi),%ebx
40a619:	7c 25                	jl     0x40a640
40a61b:	33 c0                	xor    %eax,%eax
40a61d:	39 45 08             	cmp    %eax,0x8(%ebp)
40a620:	0f 95 c0             	setne  %al
40a623:	50                   	push   %eax
40a624:	ff 75 08             	push   0x8(%ebp)
40a627:	ff 77 04             	push   0x4(%edi)
40a62a:	56                   	push   %esi
40a62b:	6a 09                	push   $0x9
40a62d:	ff 77 08             	push   0x8(%edi)
40a630:	ff 15 2c b1 41 00    	call   *0x41b12c
40a636:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a639:	85 c0                	test   %eax,%eax
40a63b:	75 0b                	jne    0x40a648
40a63d:	3b 5f 04             	cmp    0x4(%edi),%ebx
40a640:	72 2e                	jb     0x40a670
40a642:	80 7e 01 00          	cmpb   $0x0,0x1(%esi)
40a646:	74 28                	je     0x40a670
40a648:	8b 7f 04             	mov    0x4(%edi),%edi
40a64b:	eb 31                	jmp    0x40a67e
40a64d:	33 c0                	xor    %eax,%eax
40a64f:	39 45 08             	cmp    %eax,0x8(%ebp)
40a652:	0f 95 c0             	setne  %al
40a655:	33 ff                	xor    %edi,%edi
40a657:	50                   	push   %eax
40a658:	ff 75 08             	push   0x8(%ebp)
40a65b:	8b 45 f4             	mov    -0xc(%ebp),%eax
40a65e:	47                   	inc    %edi
40a65f:	57                   	push   %edi
40a660:	56                   	push   %esi
40a661:	6a 09                	push   $0x9
40a663:	ff 70 08             	push   0x8(%eax)
40a666:	ff 15 2c b1 41 00    	call   *0x41b12c
40a66c:	85 c0                	test   %eax,%eax
40a66e:	75 0e                	jne    0x40a67e
40a670:	e8 92 d6 ff ff       	call   0x407d07
40a675:	83 cf ff             	or     $0xffffffff,%edi
40a678:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40a67e:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40a682:	74 0a                	je     0x40a68e
40a684:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a687:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40a68e:	8b c7                	mov    %edi,%eax
40a690:	5f                   	pop    %edi
40a691:	e9 31 ff ff ff       	jmp    0x40a5c7
40a696:	8b ff                	mov    %edi,%edi
40a698:	55                   	push   %ebp
40a699:	8b ec                	mov    %esp,%ebp
40a69b:	6a 00                	push   $0x0
40a69d:	ff 75 10             	push   0x10(%ebp)
40a6a0:	ff 75 0c             	push   0xc(%ebp)
40a6a3:	ff 75 08             	push   0x8(%ebp)
40a6a6:	e8 f1 fe ff ff       	call   0x40a59c
40a6ab:	83 c4 10             	add    $0x10,%esp
40a6ae:	5d                   	pop    %ebp
40a6af:	c3                   	ret
40a6b0:	6a 08                	push   $0x8
40a6b2:	68 c0 1c 42 00       	push   $0x421cc0
40a6b7:	e8 94 94 ff ff       	call   0x403b50
40a6bc:	8b 45 08             	mov    0x8(%ebp),%eax
40a6bf:	ff 30                	push   (%eax)
40a6c1:	e8 df 47 00 00       	call   0x40eea5
40a6c6:	59                   	pop    %ecx
40a6c7:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a6cb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a6ce:	8b 41 04             	mov    0x4(%ecx),%eax
40a6d1:	8b 00                	mov    (%eax),%eax
40a6d3:	ff 30                	push   (%eax)
40a6d5:	8b 01                	mov    (%ecx),%eax
40a6d7:	ff 30                	push   (%eax)
40a6d9:	e8 f9 02 00 00       	call   0x40a9d7
40a6de:	59                   	pop    %ecx
40a6df:	59                   	pop    %ecx
40a6e0:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a6e7:	e8 08 00 00 00       	call   0x40a6f4
40a6ec:	e8 a5 94 ff ff       	call   0x403b96
40a6f1:	c2 0c 00             	ret    $0xc
40a6f4:	8b 45 10             	mov    0x10(%ebp),%eax
40a6f7:	ff 30                	push   (%eax)
40a6f9:	e8 ef 47 00 00       	call   0x40eeed
40a6fe:	59                   	pop    %ecx
40a6ff:	c3                   	ret
40a700:	6a 08                	push   $0x8
40a702:	68 e0 1c 42 00       	push   $0x421ce0
40a707:	e8 44 94 ff ff       	call   0x403b50
40a70c:	8b 45 08             	mov    0x8(%ebp),%eax
40a70f:	ff 30                	push   (%eax)
40a711:	e8 8f 47 00 00       	call   0x40eea5
40a716:	59                   	pop    %ecx
40a717:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a71b:	8b 45 0c             	mov    0xc(%ebp),%eax
40a71e:	8b 00                	mov    (%eax),%eax
40a720:	8b 00                	mov    (%eax),%eax
40a722:	8b 48 48             	mov    0x48(%eax),%ecx
40a725:	85 c9                	test   %ecx,%ecx
40a727:	74 18                	je     0x40a741
40a729:	83 c8 ff             	or     $0xffffffff,%eax
40a72c:	f0 0f c1 01          	lock xadd %eax,(%ecx)
40a730:	75 0f                	jne    0x40a741
40a732:	81 f9 a0 35 42 00    	cmp    $0x4235a0,%ecx
40a738:	74 07                	je     0x40a741
40a73a:	51                   	push   %ecx
40a73b:	e8 e4 f0 ff ff       	call   0x409824
40a740:	59                   	pop    %ecx
40a741:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a748:	e8 08 00 00 00       	call   0x40a755
40a74d:	e8 44 94 ff ff       	call   0x403b96
40a752:	c2 0c 00             	ret    $0xc
40a755:	8b 45 10             	mov    0x10(%ebp),%eax
40a758:	ff 30                	push   (%eax)
40a75a:	e8 8e 47 00 00       	call   0x40eeed
40a75f:	59                   	pop    %ecx
40a760:	c3                   	ret
40a761:	6a 08                	push   $0x8
40a763:	68 00 1d 42 00       	push   $0x421d00
40a768:	e8 e3 93 ff ff       	call   0x403b50
40a76d:	8b 45 08             	mov    0x8(%ebp),%eax
40a770:	ff 30                	push   (%eax)
40a772:	e8 2e 47 00 00       	call   0x40eea5
40a777:	59                   	pop    %ecx
40a778:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a77c:	6a 00                	push   $0x0
40a77e:	8b 45 0c             	mov    0xc(%ebp),%eax
40a781:	8b 00                	mov    (%eax),%eax
40a783:	ff 30                	push   (%eax)
40a785:	e8 4d 02 00 00       	call   0x40a9d7
40a78a:	59                   	pop    %ecx
40a78b:	59                   	pop    %ecx
40a78c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a793:	e8 08 00 00 00       	call   0x40a7a0
40a798:	e8 f9 93 ff ff       	call   0x403b96
40a79d:	c2 0c 00             	ret    $0xc
40a7a0:	8b 45 10             	mov    0x10(%ebp),%eax
40a7a3:	ff 30                	push   (%eax)
40a7a5:	e8 43 47 00 00       	call   0x40eeed
40a7aa:	59                   	pop    %ecx
40a7ab:	c3                   	ret
40a7ac:	6a 08                	push   $0x8
40a7ae:	68 a0 1c 42 00       	push   $0x421ca0
40a7b3:	e8 98 93 ff ff       	call   0x403b50
40a7b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a7bb:	ff 30                	push   (%eax)
40a7bd:	e8 e3 46 00 00       	call   0x40eea5
40a7c2:	59                   	pop    %ecx
40a7c3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a7c7:	8b 45 0c             	mov    0xc(%ebp),%eax
40a7ca:	8b 00                	mov    (%eax),%eax
40a7cc:	8b 00                	mov    (%eax),%eax
40a7ce:	8b 40 48             	mov    0x48(%eax),%eax
40a7d1:	f0 ff 00             	lock incl (%eax)
40a7d4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a7db:	e8 08 00 00 00       	call   0x40a7e8
40a7e0:	e8 b1 93 ff ff       	call   0x403b96
40a7e5:	c2 0c 00             	ret    $0xc
40a7e8:	8b 45 10             	mov    0x10(%ebp),%eax
40a7eb:	ff 30                	push   (%eax)
40a7ed:	e8 fb 46 00 00       	call   0x40eeed
40a7f2:	59                   	pop    %ecx
40a7f3:	c3                   	ret
40a7f4:	8b ff                	mov    %edi,%edi
40a7f6:	55                   	push   %ebp
40a7f7:	8b ec                	mov    %esp,%ebp
40a7f9:	83 ec 0c             	sub    $0xc,%esp
40a7fc:	8b 45 08             	mov    0x8(%ebp),%eax
40a7ff:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a802:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a805:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a808:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a80b:	50                   	push   %eax
40a80c:	ff 75 0c             	push   0xc(%ebp)
40a80f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a812:	50                   	push   %eax
40a813:	e8 e8 fe ff ff       	call   0x40a700
40a818:	8b e5                	mov    %ebp,%esp
40a81a:	5d                   	pop    %ebp
40a81b:	c3                   	ret
40a81c:	8b ff                	mov    %edi,%edi
40a81e:	55                   	push   %ebp
40a81f:	8b ec                	mov    %esp,%ebp
40a821:	83 ec 0c             	sub    $0xc,%esp
40a824:	8b 45 08             	mov    0x8(%ebp),%eax
40a827:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a82a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a82d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a830:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a833:	50                   	push   %eax
40a834:	ff 75 0c             	push   0xc(%ebp)
40a837:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a83a:	50                   	push   %eax
40a83b:	e8 70 fe ff ff       	call   0x40a6b0
40a840:	8b e5                	mov    %ebp,%esp
40a842:	5d                   	pop    %ebp
40a843:	c3                   	ret
40a844:	8b ff                	mov    %edi,%edi
40a846:	55                   	push   %ebp
40a847:	8b ec                	mov    %esp,%ebp
40a849:	83 ec 0c             	sub    $0xc,%esp
40a84c:	8b 45 08             	mov    0x8(%ebp),%eax
40a84f:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a852:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a855:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a858:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a85b:	50                   	push   %eax
40a85c:	ff 75 0c             	push   0xc(%ebp)
40a85f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a862:	50                   	push   %eax
40a863:	e8 f9 fe ff ff       	call   0x40a761
40a868:	8b e5                	mov    %ebp,%esp
40a86a:	5d                   	pop    %ebp
40a86b:	c3                   	ret
40a86c:	8b ff                	mov    %edi,%edi
40a86e:	55                   	push   %ebp
40a86f:	8b ec                	mov    %esp,%ebp
40a871:	83 ec 0c             	sub    $0xc,%esp
40a874:	8b 45 08             	mov    0x8(%ebp),%eax
40a877:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a87a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a87d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a880:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a883:	50                   	push   %eax
40a884:	ff 75 0c             	push   0xc(%ebp)
40a887:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a88a:	50                   	push   %eax
40a88b:	e8 1c ff ff ff       	call   0x40a7ac
40a890:	8b e5                	mov    %ebp,%esp
40a892:	5d                   	pop    %ebp
40a893:	c3                   	ret
40a894:	8b ff                	mov    %edi,%edi
40a896:	55                   	push   %ebp
40a897:	8b ec                	mov    %esp,%ebp
40a899:	51                   	push   %ecx
40a89a:	51                   	push   %ecx
40a89b:	8b 45 08             	mov    0x8(%ebp),%eax
40a89e:	33 c9                	xor    %ecx,%ecx
40a8a0:	41                   	inc    %ecx
40a8a1:	6a 43                	push   $0x43
40a8a3:	89 48 18             	mov    %ecx,0x18(%eax)
40a8a6:	8b 45 08             	mov    0x8(%ebp),%eax
40a8a9:	c7 00 98 be 41 00    	movl   $0x41be98,(%eax)
40a8af:	8b 45 08             	mov    0x8(%ebp),%eax
40a8b2:	89 88 50 03 00 00    	mov    %ecx,0x350(%eax)
40a8b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a8bb:	59                   	pop    %ecx
40a8bc:	c7 40 48 a0 35 42 00 	movl   $0x4235a0,0x48(%eax)
40a8c3:	8b 45 08             	mov    0x8(%ebp),%eax
40a8c6:	66 89 48 6c          	mov    %cx,0x6c(%eax)
40a8ca:	8b 45 08             	mov    0x8(%ebp),%eax
40a8cd:	66 89 88 72 01 00 00 	mov    %cx,0x172(%eax)
40a8d4:	8b 45 08             	mov    0x8(%ebp),%eax
40a8d7:	83 a0 4c 03 00 00 00 	andl   $0x0,0x34c(%eax)
40a8de:	8d 45 08             	lea    0x8(%ebp),%eax
40a8e1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a8e4:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a8e7:	50                   	push   %eax
40a8e8:	6a 05                	push   $0x5
40a8ea:	e8 7d ff ff ff       	call   0x40a86c
40a8ef:	8d 45 08             	lea    0x8(%ebp),%eax
40a8f2:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a8f5:	8d 45 0c             	lea    0xc(%ebp),%eax