40345b:	cc                   	int3
40345c:	cc                   	int3
40345d:	cc                   	int3
40345e:	cc                   	int3
40345f:	cc                   	int3
403460:	8b ff                	mov    %edi,%edi
403462:	55                   	push   %ebp
403463:	8b ec                	mov    %esp,%ebp
403465:	8b 45 08             	mov    0x8(%ebp),%eax
403468:	ff 70 04             	push   0x4(%eax)
40346b:	ff 15 34 60 40 00    	call   *0x406034
403471:	33 c0                	xor    %eax,%eax
403473:	5d                   	pop    %ebp
403474:	c2 04 00             	ret    $0x4
403477:	8b ff                	mov    %edi,%edi
403479:	55                   	push   %ebp
40347a:	8b ec                	mov    %esp,%ebp
40347c:	81 ec 88 00 00 00    	sub    $0x88,%esp
403482:	a1 14 50 40 00       	mov    0x405014,%eax
403487:	33 c5                	xor    %ebp,%eax
403489:	89 45 fc             	mov    %eax,-0x4(%ebp)
40348c:	53                   	push   %ebx
40348d:	56                   	push   %esi
40348e:	8b 75 10             	mov    0x10(%ebp),%esi
403491:	33 db                	xor    %ebx,%ebx
403493:	57                   	push   %edi
403494:	53                   	push   %ebx
403495:	53                   	push   %ebx
403496:	33 ff                	xor    %edi,%edi
403498:	47                   	inc    %edi
403499:	57                   	push   %edi
40349a:	53                   	push   %ebx
40349b:	ff 15 44 60 40 00    	call   *0x406044
4034a1:	6a 06                	push   $0x6
4034a3:	53                   	push   %ebx
4034a4:	ff 15 ac 60 40 00    	call   *0x4060ac
4034aa:	85 c0                	test   %eax,%eax
4034ac:	0f 88 f7 01 00 00    	js     0x4036a9
4034b2:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
4034b5:	89 7d 9c             	mov    %edi,-0x64(%ebp)
4034b8:	c7 45 a0 02 00 00 00 	movl   $0x2,-0x60(%ebp)
4034bf:	c7 45 a4 04 00 00 00 	movl   $0x4,-0x5c(%ebp)
4034c6:	c7 45 a8 40 00 00 00 	movl   $0x40,-0x58(%ebp)
4034cd:	e8 bc 08 00 00       	call   0x403d8e
4034d2:	53                   	push   %ebx
4034d3:	6a 08                	push   $0x8
4034d5:	53                   	push   %ebx
4034d6:	53                   	push   %ebx
4034d7:	53                   	push   %ebx
4034d8:	53                   	push   %ebx
4034d9:	53                   	push   %ebx
4034da:	53                   	push   %ebx
4034db:	68 b4 14 40 00       	push   $0x4014b4
4034e0:	ff 15 c8 60 40 00    	call   *0x4060c8
4034e6:	85 c0                	test   %eax,%eax
4034e8:	0f 88 b5 01 00 00    	js     0x4036a3
4034ee:	6a 14                	push   $0x14
4034f0:	e8 46 0a 00 00       	call   0x403f3b
4034f5:	8b f8                	mov    %eax,%edi
4034f7:	59                   	pop    %ecx
4034f8:	85 ff                	test   %edi,%edi
4034fa:	74 15                	je     0x403511
4034fc:	c7 07 08 10 40 00    	movl   $0x401008,(%edi)
403502:	89 5f 04             	mov    %ebx,0x4(%edi)
403505:	89 5f 0c             	mov    %ebx,0xc(%edi)
403508:	c7 47 10 01 00 00 00 	movl   $0x1,0x10(%edi)
40350f:	eb 02                	jmp    0x403513
403511:	8b fb                	mov    %ebx,%edi
403513:	85 ff                	test   %edi,%edi
403515:	0f 84 88 01 00 00    	je     0x4036a3
40351b:	33 c0                	xor    %eax,%eax
40351d:	50                   	push   %eax
40351e:	50                   	push   %eax
40351f:	6a 01                	push   $0x1
403521:	50                   	push   %eax
403522:	ff 15 24 60 40 00    	call   *0x406024
403528:	89 47 04             	mov    %eax,0x4(%edi)
40352b:	33 c0                	xor    %eax,%eax
40352d:	50                   	push   %eax
40352e:	50                   	push   %eax
40352f:	6a 01                	push   $0x1
403531:	50                   	push   %eax
403532:	ff 15 24 60 40 00    	call   *0x406024
403538:	89 47 08             	mov    %eax,0x8(%edi)
40353b:	39 5f 04             	cmp    %ebx,0x4(%edi)
40353e:	74 04                	je     0x403544
403540:	85 c0                	test   %eax,%eax
403542:	75 0d                	jne    0x403551
403544:	e8 d9 f6 ff ff       	call   0x402c22
403549:	85 c0                	test   %eax,%eax
40354b:	0f 88 42 01 00 00    	js     0x403693
403551:	57                   	push   %edi
403552:	ff 15 b4 60 40 00    	call   *0x4060b4
403558:	85 c0                	test   %eax,%eax
40355a:	0f 88 33 01 00 00    	js     0x403693
403560:	6a 0c                	push   $0xc
403562:	e8 d4 09 00 00       	call   0x403f3b
403567:	8b d8                	mov    %eax,%ebx
403569:	89 45 94             	mov    %eax,-0x6c(%ebp)
40356c:	59                   	pop    %ecx
40356d:	85 db                	test   %ebx,%ebx
40356f:	74 15                	je     0x403586
403571:	8b 4f 08             	mov    0x8(%edi),%ecx
403574:	c7 03 38 10 40 00    	movl   $0x401038,(%ebx)
40357a:	c7 43 04 01 00 00 00 	movl   $0x1,0x4(%ebx)
403581:	89 4b 08             	mov    %ecx,0x8(%ebx)
403584:	eb 05                	jmp    0x40358b
403586:	33 db                	xor    %ebx,%ebx
403588:	89 5d 94             	mov    %ebx,-0x6c(%ebp)
40358b:	85 db                	test   %ebx,%ebx
40358d:	0f 84 00 01 00 00    	je     0x403693
403593:	53                   	push   %ebx
403594:	ff 15 80 60 40 00    	call   *0x406080
40359a:	6a 27                	push   $0x27
40359c:	8d 45 ac             	lea    -0x54(%ebp),%eax
40359f:	50                   	push   %eax
4035a0:	56                   	push   %esi
4035a1:	ff 15 90 60 40 00    	call   *0x406090
4035a7:	8d 45 9c             	lea    -0x64(%ebp),%eax
4035aa:	50                   	push   %eax
4035ab:	8d 45 ac             	lea    -0x54(%ebp),%eax
4035ae:	50                   	push   %eax
4035af:	ff 15 b0 60 40 00    	call   *0x4060b0
4035b5:	85 c0                	test   %eax,%eax
4035b7:	0f 88 d6 00 00 00    	js     0x403693
4035bd:	8b 07                	mov    (%edi),%eax
4035bf:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
4035c2:	51                   	push   %ecx
4035c3:	57                   	push   %edi
4035c4:	8b 70 0c             	mov    0xc(%eax),%esi
4035c7:	8b ce                	mov    %esi,%ecx
4035c9:	ff 15 90 61 40 00    	call   *0x406190
4035cf:	ff d6                	call   *%esi
4035d1:	8b f0                	mov    %eax,%esi
4035d3:	89 75 98             	mov    %esi,-0x68(%ebp)
4035d6:	85 f6                	test   %esi,%esi
4035d8:	0f 88 b5 00 00 00    	js     0x403693
4035de:	33 f6                	xor    %esi,%esi
4035e0:	8d 5f 04             	lea    0x4(%edi),%ebx
4035e3:	46                   	inc    %esi
4035e4:	85 f6                	test   %esi,%esi
4035e6:	74 70                	je     0x403658
4035e8:	68 ff 1c 00 00       	push   $0x1cff
4035ed:	6a ff                	push   $0xffffffff
4035ef:	6a 00                	push   $0x0
4035f1:	53                   	push   %ebx
4035f2:	6a 01                	push   $0x1
4035f4:	ff 15 a0 60 40 00    	call   *0x4060a0
4035fa:	85 c0                	test   %eax,%eax
4035fc:	74 51                	je     0x40364f
4035fe:	83 f8 01             	cmp    $0x1,%eax
403601:	74 32                	je     0x403635
403603:	83 f8 ff             	cmp    $0xffffffff,%eax
403606:	75 50                	jne    0x403658
403608:	e8 15 f6 ff ff       	call   0x402c22
40360d:	89 45 98             	mov    %eax,-0x68(%ebp)
403610:	eb 42                	jmp    0x403654
403612:	83 bd 7c ff ff ff 12 	cmpl   $0x12,-0x84(%ebp)
403619:	74 34                	je     0x40364f
40361b:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
403621:	50                   	push   %eax
403622:	ff 15 a4 60 40 00    	call   *0x4060a4
403628:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
40362e:	50                   	push   %eax
40362f:	ff 15 9c 60 40 00    	call   *0x40609c
403635:	6a 01                	push   $0x1
403637:	33 c0                	xor    %eax,%eax
403639:	50                   	push   %eax
40363a:	50                   	push   %eax
40363b:	50                   	push   %eax
40363c:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
403642:	50                   	push   %eax
403643:	ff 15 98 60 40 00    	call   *0x406098
403649:	85 c0                	test   %eax,%eax
40364b:	75 c5                	jne    0x403612
40364d:	eb 02                	jmp    0x403651
40364f:	33 f6                	xor    %esi,%esi
403651:	8b 45 98             	mov    -0x68(%ebp),%eax
403654:	85 c0                	test   %eax,%eax
403656:	79 8c                	jns    0x4035e4
403658:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
40365c:	8b 5d 94             	mov    -0x6c(%ebp),%ebx
40365f:	74 14                	je     0x403675
403661:	6a 00                	push   $0x0
403663:	68 10 33 40 00       	push   $0x403310
403668:	ff 77 0c             	push   0xc(%edi)
40366b:	ff 15 04 60 40 00    	call   *0x406004
403671:	83 67 0c 00          	andl   $0x0,0xc(%edi)
403675:	8b 03                	mov    (%ebx),%eax
403677:	53                   	push   %ebx
403678:	8b 70 08             	mov    0x8(%eax),%esi
40367b:	8b ce                	mov    %esi,%ecx
40367d:	ff 15 90 61 40 00    	call   *0x406190
403683:	ff d6                	call   *%esi
403685:	68 60 ea 00 00       	push   $0xea60
40368a:	ff 77 08             	push   0x8(%edi)
40368d:	ff 15 18 60 40 00    	call   *0x406018
403693:	8b 07                	mov    (%edi),%eax
403695:	57                   	push   %edi
403696:	8b 70 08             	mov    0x8(%eax),%esi
403699:	8b ce                	mov    %esi,%ecx
40369b:	ff 15 90 61 40 00    	call   *0x406190
4036a1:	ff d6                	call   *%esi
4036a3:	ff 15 c4 60 40 00    	call   *0x4060c4
4036a9:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4036ac:	33 c0                	xor    %eax,%eax
4036ae:	5f                   	pop    %edi
4036af:	5e                   	pop    %esi
4036b0:	33 cd                	xor    %ebp,%ecx
4036b2:	5b                   	pop    %ebx
4036b3:	e8 e8 0b 00 00       	call   0x4042a0
4036b8:	c9                   	leave
4036b9:	c2 10 00             	ret    $0x10
4036bc:	8b ff                	mov    %edi,%edi
4036be:	56                   	push   %esi
4036bf:	8b f1                	mov    %ecx,%esi
4036c1:	57                   	push   %edi
4036c2:	33 ff                	xor    %edi,%edi
4036c4:	39 3e                	cmp    %edi,(%esi)
4036c6:	74 26                	je     0x4036ee
4036c8:	e8 11 08 00 00       	call   0x403ede
4036cd:	84 c0                	test   %al,%al
4036cf:	75 1d                	jne    0x4036ee
4036d1:	39 3e                	cmp    %edi,(%esi)
4036d3:	74 19                	je     0x4036ee
4036d5:	57                   	push   %edi
4036d6:	68 f0 3a 40 00       	push   $0x403af0
4036db:	ff 36                	push   (%esi)
4036dd:	ff 15 04 60 40 00    	call   *0x406004
4036e3:	57                   	push   %edi
4036e4:	89 3e                	mov    %edi,(%esi)
4036e6:	ff 15 08 60 40 00    	call   *0x406008
4036ec:	89 3e                	mov    %edi,(%esi)
4036ee:	5f                   	pop    %edi
4036ef:	5e                   	pop    %esi
4036f0:	c3                   	ret
4036f1:	8b 11                	mov    (%ecx),%edx
4036f3:	85 d2                	test   %edx,%edx
4036f5:	74 15                	je     0x40370c
4036f7:	83 21 00             	andl   $0x0,(%ecx)
4036fa:	8b 02                	mov    (%edx),%eax
4036fc:	56                   	push   %esi
4036fd:	52                   	push   %edx
4036fe:	8b 70 08             	mov    0x8(%eax),%esi
403701:	8b ce                	mov    %esi,%ecx
403703:	ff 15 90 61 40 00    	call   *0x406190
403709:	ff d6                	call   *%esi
40370b:	5e                   	pop    %esi
40370c:	c3                   	ret
40370d:	cc                   	int3
40370e:	cc                   	int3
40370f:	cc                   	int3
403710:	8b ff                	mov    %edi,%edi
403712:	55                   	push   %ebp
403713:	8b ec                	mov    %esp,%ebp
403715:	53                   	push   %ebx
403716:	56                   	push   %esi
403717:	57                   	push   %edi
403718:	8b 7d 08             	mov    0x8(%ebp),%edi
40371b:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
403720:	8d 77 08             	lea    0x8(%edi),%esi
403723:	eb 0d                	jmp    0x403732
403725:	8d 4a ff             	lea    -0x1(%edx),%ecx
403728:	8b c2                	mov    %edx,%eax
40372a:	f0 0f b1 0e          	lock cmpxchg %ecx,(%esi)
40372e:	3b c2                	cmp    %edx,%eax
403730:	74 06                	je     0x403738
403732:	8b 16                	mov    (%esi),%edx
403734:	3b d3                	cmp    %ebx,%edx
403736:	75 ed                	jne    0x403725
403738:	8d 5a ff             	lea    -0x1(%edx),%ebx
40373b:	85 db                	test   %ebx,%ebx
40373d:	75 31                	jne    0x403770
40373f:	85 ff                	test   %edi,%edi
403741:	74 13                	je     0x403756
403743:	8b 07                	mov    (%edi),%eax
403745:	6a 01                	push   $0x1
403747:	8b 70 0c             	mov    0xc(%eax),%esi
40374a:	8b ce                	mov    %esi,%ecx
40374c:	ff 15 90 61 40 00    	call   *0x406190
403752:	8b cf                	mov    %edi,%ecx
403754:	ff d6                	call   *%esi
403756:	8b 15 48 54 40 00    	mov    0x405448,%edx
40375c:	85 d2                	test   %edx,%edx
40375e:	74 10                	je     0x403770
403760:	8b 0a                	mov    (%edx),%ecx
403762:	52                   	push   %edx
403763:	8b 71 08             	mov    0x8(%ecx),%esi
403766:	8b ce                	mov    %esi,%ecx
403768:	ff 15 90 61 40 00    	call   *0x406190
40376e:	ff d6                	call   *%esi
403770:	5f                   	pop    %edi
403771:	5e                   	pop    %esi
403772:	8b c3                	mov    %ebx,%eax
403774:	5b                   	pop    %ebx
403775:	5d                   	pop    %ebp
403776:	c2 04 00             	ret    $0x4
403779:	cc                   	int3
40377a:	cc                   	int3
40377b:	cc                   	int3
40377c:	cc                   	int3
40377d:	cc                   	int3
40377e:	cc                   	int3
40377f:	cc                   	int3
403780:	8b ff                	mov    %edi,%edi
403782:	55                   	push   %ebp
403783:	8b ec                	mov    %esp,%ebp
403785:	56                   	push   %esi
403786:	57                   	push   %edi
403787:	8b 7d 08             	mov    0x8(%ebp),%edi
40378a:	be ff ff ff 7f       	mov    $0x7fffffff,%esi
40378f:	83 c7 08             	add    $0x8,%edi
403792:	8b 17                	mov    (%edi),%edx
403794:	3b d6                	cmp    %esi,%edx
403796:	74 1a                	je     0x4037b2
403798:	8d 4a 01             	lea    0x1(%edx),%ecx
40379b:	8b c2                	mov    %edx,%eax
40379d:	f0 0f b1 0f          	lock cmpxchg %ecx,(%edi)
4037a1:	3b c2                	cmp    %edx,%eax
4037a3:	74 06                	je     0x4037ab
4037a5:	8b 17                	mov    (%edi),%edx
4037a7:	3b d6                	cmp    %esi,%edx
4037a9:	75 ed                	jne    0x403798
4037ab:	3b d6                	cmp    %esi,%edx
4037ad:	74 03                	je     0x4037b2
4037af:	8d 72 01             	lea    0x1(%edx),%esi
4037b2:	5f                   	pop    %edi
4037b3:	8b c6                	mov    %esi,%eax
4037b5:	5e                   	pop    %esi
4037b6:	5d                   	pop    %ebp
4037b7:	c2 04 00             	ret    $0x4
4037ba:	cc                   	int3
4037bb:	cc                   	int3
4037bc:	cc                   	int3
4037bd:	cc                   	int3
4037be:	cc                   	int3
4037bf:	cc                   	int3
4037c0:	8b ff                	mov    %edi,%edi
4037c2:	55                   	push   %ebp
4037c3:	8b ec                	mov    %esp,%ebp
4037c5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4037c8:	56                   	push   %esi
4037c9:	8b 75 10             	mov    0x10(%ebp),%esi
4037cc:	57                   	push   %edi
4037cd:	33 ff                	xor    %edi,%edi
4037cf:	89 3e                	mov    %edi,(%esi)
4037d1:	e8 aa e0 ff ff       	call   0x401880
4037d6:	85 c0                	test   %eax,%eax
4037d8:	75 1d                	jne    0x4037f7
4037da:	e8 a1 e0 ff ff       	call   0x401880