40e395:	5b                   	pop    %ebx
40e396:	5d                   	pop    %ebp
40e397:	c3                   	ret
40e398:	8d 56 0c             	lea    0xc(%esi),%edx
40e39b:	8b 5d 08             	mov    0x8(%ebp),%ebx
40e39e:	83 fb ff             	cmp    $0xffffffff,%ebx
40e3a1:	74 ed                	je     0x40e390
40e3a3:	8b 02                	mov    (%edx),%eax
40e3a5:	90                   	nop
40e3a6:	8b 0a                	mov    (%edx),%ecx
40e3a8:	90                   	nop
40e3a9:	a8 01                	test   $0x1,%al
40e3ab:	75 08                	jne    0x40e3b5
40e3ad:	83 e1 06             	and    $0x6,%ecx
40e3b0:	80 f9 06             	cmp    $0x6,%cl
40e3b3:	75 db                	jne    0x40e390
40e3b5:	8b 46 04             	mov    0x4(%esi),%eax
40e3b8:	85 c0                	test   %eax,%eax
40e3ba:	75 0d                	jne    0x40e3c9
40e3bc:	56                   	push   %esi
40e3bd:	e8 a6 99 00 00       	call   0x417d68
40e3c2:	8b 46 04             	mov    0x4(%esi),%eax
40e3c5:	8d 56 0c             	lea    0xc(%esi),%edx
40e3c8:	59                   	pop    %ecx
40e3c9:	8b 0e                	mov    (%esi),%ecx
40e3cb:	3b c8                	cmp    %eax,%ecx
40e3cd:	75 0b                	jne    0x40e3da
40e3cf:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
40e3d3:	75 bb                	jne    0x40e390
40e3d5:	8d 41 01             	lea    0x1(%ecx),%eax
40e3d8:	89 06                	mov    %eax,(%esi)
40e3da:	8b 02                	mov    (%edx),%eax
40e3dc:	90                   	nop
40e3dd:	8b 0e                	mov    (%esi),%ecx
40e3df:	c1 e8 0c             	shr    $0xc,%eax
40e3e2:	49                   	dec    %ecx
40e3e3:	89 0e                	mov    %ecx,(%esi)
40e3e5:	24 01                	and    $0x1,%al
40e3e7:	74 0b                	je     0x40e3f4
40e3e9:	38 19                	cmp    %bl,(%ecx)
40e3eb:	74 09                	je     0x40e3f6
40e3ed:	8d 41 01             	lea    0x1(%ecx),%eax
40e3f0:	89 06                	mov    %eax,(%esi)
40e3f2:	eb 9c                	jmp    0x40e390
40e3f4:	88 19                	mov    %bl,(%ecx)
40e3f6:	ff 46 08             	incl   0x8(%esi)
40e3f9:	6a f7                	push   $0xfffffff7
40e3fb:	58                   	pop    %eax
40e3fc:	f0 21 02             	lock and %eax,(%edx)
40e3ff:	33 c0                	xor    %eax,%eax
40e401:	40                   	inc    %eax
40e402:	f0 09 02             	lock or %eax,(%edx)
40e405:	0f b6 c3             	movzbl %bl,%eax
40e408:	eb 89                	jmp    0x40e393
40e40a:	6a 0c                	push   $0xc
40e40c:	68 f8 15 43 00       	push   $0x4315f8
40e411:	e8 aa 9b ff ff       	call   0x407fc0
40e416:	8b 75 0c             	mov    0xc(%ebp),%esi
40e419:	85 f6                	test   %esi,%esi
40e41b:	75 15                	jne    0x40e432
40e41d:	e8 d9 09 00 00       	call   0x40edfb
40e422:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e428:	e8 54 ec ff ff       	call   0x40d081
40e42d:	83 c8 ff             	or     $0xffffffff,%eax
40e430:	eb 2d                	jmp    0x40e45f
40e432:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40e436:	56                   	push   %esi
40e437:	e8 4a d3 ff ff       	call   0x40b786
40e43c:	59                   	pop    %ecx
40e43d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e441:	56                   	push   %esi
40e442:	ff 75 08             	push   0x8(%ebp)
40e445:	e8 c6 fe ff ff       	call   0x40e310
40e44a:	59                   	pop    %ecx
40e44b:	59                   	pop    %ecx
40e44c:	8b f8                	mov    %eax,%edi
40e44e:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40e451:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e458:	e8 18 00 00 00       	call   0x40e475
40e45d:	8b c7                	mov    %edi,%eax
40e45f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e462:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e469:	59                   	pop    %ecx
40e46a:	5f                   	pop    %edi
40e46b:	5e                   	pop    %esi
40e46c:	5b                   	pop    %ebx
40e46d:	c9                   	leave
40e46e:	c3                   	ret
40e46f:	8b 75 0c             	mov    0xc(%ebp),%esi
40e472:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40e475:	56                   	push   %esi
40e476:	e8 1f d3 ff ff       	call   0x40b79a
40e47b:	59                   	pop    %ecx
40e47c:	c3                   	ret
40e47d:	8b ff                	mov    %edi,%edi
40e47f:	55                   	push   %ebp
40e480:	8b ec                	mov    %esp,%ebp
40e482:	5d                   	pop    %ebp
40e483:	e9 de 56 00 00       	jmp    0x413b66
40e488:	6a 0c                	push   $0xc
40e48a:	68 18 16 43 00       	push   $0x431618
40e48f:	e8 2c 9b ff ff       	call   0x407fc0
40e494:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40e498:	8b 45 08             	mov    0x8(%ebp),%eax
40e49b:	ff 30                	push   (%eax)
40e49d:	e8 81 ec ff ff       	call   0x40d123
40e4a2:	59                   	pop    %ecx
40e4a3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e4a7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e4aa:	e8 34 00 00 00       	call   0x40e4e3
40e4af:	8b f0                	mov    %eax,%esi
40e4b1:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e4b4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e4bb:	e8 17 00 00 00       	call   0x40e4d7
40e4c0:	8b c6                	mov    %esi,%eax
40e4c2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e4c5:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e4cc:	59                   	pop    %ecx
40e4cd:	5f                   	pop    %edi
40e4ce:	5e                   	pop    %esi
40e4cf:	5b                   	pop    %ebx
40e4d0:	c9                   	leave
40e4d1:	c2 0c 00             	ret    $0xc
40e4d4:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40e4d7:	8b 45 10             	mov    0x10(%ebp),%eax
40e4da:	ff 30                	push   (%eax)
40e4dc:	e8 8a ec ff ff       	call   0x40d16b
40e4e1:	59                   	pop    %ecx
40e4e2:	c3                   	ret
40e4e3:	8b ff                	mov    %edi,%edi
40e4e5:	55                   	push   %ebp
40e4e6:	8b ec                	mov    %esp,%ebp
40e4e8:	83 ec 10             	sub    $0x10,%esp
40e4eb:	53                   	push   %ebx
40e4ec:	56                   	push   %esi
40e4ed:	8b f1                	mov    %ecx,%esi
40e4ef:	57                   	push   %edi
40e4f0:	8b 46 04             	mov    0x4(%esi),%eax
40e4f3:	ff 30                	push   (%eax)
40e4f5:	8b 06                	mov    (%esi),%eax
40e4f7:	ff 30                	push   (%eax)
40e4f9:	e8 44 01 00 00       	call   0x40e642
40e4fe:	8b f8                	mov    %eax,%edi
40e500:	59                   	pop    %ecx
40e501:	59                   	pop    %ecx
40e502:	85 ff                	test   %edi,%edi
40e504:	74 43                	je     0x40e549
40e506:	e8 c8 5c 00 00       	call   0x4141d3
40e50b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e50e:	33 db                	xor    %ebx,%ebx
40e510:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e513:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40e516:	8b 48 48             	mov    0x48(%eax),%ecx
40e519:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e51c:	50                   	push   %eax
40e51d:	53                   	push   %ebx
40e51e:	57                   	push   %edi
40e51f:	53                   	push   %ebx
40e520:	8d 45 fc             	lea    -0x4(%ebp),%eax
40e523:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40e526:	53                   	push   %ebx
40e527:	50                   	push   %eax
40e528:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40e52b:	e8 d6 9d 00 00       	call   0x418306
40e530:	83 c4 18             	add    $0x18,%esp
40e533:	85 c0                	test   %eax,%eax
40e535:	74 19                	je     0x40e550
40e537:	83 f8 16             	cmp    $0x16,%eax
40e53a:	0f 84 f7 00 00 00    	je     0x40e637
40e540:	83 f8 22             	cmp    $0x22,%eax
40e543:	0f 84 ee 00 00 00    	je     0x40e637
40e549:	33 c0                	xor    %eax,%eax
40e54b:	5f                   	pop    %edi
40e54c:	5e                   	pop    %esi
40e54d:	5b                   	pop    %ebx
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)