40156e:	ff 15 64 40 40 00    	call   *0x404064
401574:	83 c4 10             	add    $0x10,%esp
401577:	83 f8 01             	cmp    $0x1,%eax
40157a:	75 06                	jne    0x401582
40157c:	8b c7                	mov    %edi,%eax
40157e:	5f                   	pop    %edi
40157f:	5e                   	pop    %esi
401580:	5b                   	pop    %ebx
401581:	c3                   	ret
401582:	6a 01                	push   $0x1
401584:	ff 15 14 40 40 00    	call   *0x404014
40158a:	cc                   	int3
40158b:	8b ff                	mov    %edi,%edi
40158d:	53                   	push   %ebx
40158e:	56                   	push   %esi
40158f:	57                   	push   %edi
401590:	6a 01                	push   $0x1
401592:	8b c2                	mov    %edx,%eax
401594:	8b d9                	mov    %ecx,%ebx
401596:	6a 7b                	push   $0x7b
401598:	5a                   	pop    %edx
401599:	8b c8                	mov    %eax,%ecx
40159b:	e8 40 ff ff ff       	call   0x4014e0
4015a0:	8b f8                	mov    %eax,%edi
4015a2:	85 ff                	test   %edi,%edi
4015a4:	74 3a                	je     0x4015e0
4015a6:	33 c0                	xor    %eax,%eax
4015a8:	66 3b 07             	cmp    (%edi),%ax
4015ab:	74 33                	je     0x4015e0
4015ad:	50                   	push   %eax
4015ae:	6a 7d                	push   $0x7d
4015b0:	83 ef 02             	sub    $0x2,%edi
4015b3:	5a                   	pop    %edx
4015b4:	8b cf                	mov    %edi,%ecx
4015b6:	e8 25 ff ff ff       	call   0x4014e0
4015bb:	8b f0                	mov    %eax,%esi
4015bd:	85 f6                	test   %esi,%esi
4015bf:	74 0d                	je     0x4015ce
4015c1:	33 c0                	xor    %eax,%eax
4015c3:	66 3b 06             	cmp    (%esi),%ax
4015c6:	74 06                	je     0x4015ce
4015c8:	66 89 06             	mov    %ax,(%esi)
4015cb:	83 c6 02             	add    $0x2,%esi
4015ce:	53                   	push   %ebx
4015cf:	57                   	push   %edi
4015d0:	ff 15 a0 40 40 00    	call   *0x4040a0
4015d6:	85 c0                	test   %eax,%eax
4015d8:	78 06                	js     0x4015e0
4015da:	5f                   	pop    %edi
4015db:	8b c6                	mov    %esi,%eax
4015dd:	5e                   	pop    %esi
4015de:	5b                   	pop    %ebx
4015df:	c3                   	ret
4015e0:	6a 01                	push   $0x1
4015e2:	ff 15 14 40 40 00    	call   *0x404014
4015e8:	cc                   	int3
4015e9:	6a 40                	push   $0x40
4015eb:	68 10 22 40 00       	push   $0x402210
4015f0:	e8 bf 0b 00 00       	call   0x4021b4
4015f5:	6a 08                	push   $0x8
4015f7:	5b                   	pop    %ebx
4015f8:	c7 45 bc 01 04 00 00 	movl   $0x401,-0x44(%ebp)
4015ff:	b8 14 11 40 00       	mov    $0x401114,%eax
401604:	8b f0                	mov    %eax,%esi
401606:	8d 7d d4             	lea    -0x2c(%ebp),%edi
401609:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40160a:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40160b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40160c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40160d:	8b f0                	mov    %eax,%esi
40160f:	8d 7d c4             	lea    -0x3c(%ebp),%edi
401612:	a5                   	movsl  %ds:(%esi),%es:(%edi)
401613:	a5                   	movsl  %ds:(%esi),%es:(%edi)
401614:	a5                   	movsl  %ds:(%esi),%es:(%edi)
401615:	a5                   	movsl  %ds:(%esi),%es:(%edi)
401616:	ff 15 00 40 40 00    	call   *0x404000
40161c:	8b f0                	mov    %eax,%esi
40161e:	68 03 80 00 00       	push   $0x8003
401623:	ff 15 0c 40 40 00    	call   *0x40400c
401629:	33 ff                	xor    %edi,%edi
40162b:	57                   	push   %edi
40162c:	57                   	push   %edi
40162d:	6a 01                	push   $0x1
40162f:	57                   	push   %edi
401630:	ff 15 10 40 40 00    	call   *0x404010
401636:	85 f6                	test   %esi,%esi
401638:	74 20                	je     0x40165a
40163a:	0f b7 06             	movzwl (%esi),%eax
40163d:	33 c9                	xor    %ecx,%ecx
40163f:	66 3b c8             	cmp    %ax,%cx
401642:	74 16                	je     0x40165a
401644:	8d 4e 02             	lea    0x2(%esi),%ecx
401647:	6a 22                	push   $0x22
401649:	5a                   	pop    %edx
40164a:	57                   	push   %edi
40164b:	66 3b d0             	cmp    %ax,%dx
40164e:	74 03                	je     0x401653
401650:	6a 20                	push   $0x20
401652:	5a                   	pop    %edx
401653:	e8 88 fe ff ff       	call   0x4014e0
401658:	8b f0                	mov    %eax,%esi
40165a:	6a 01                	push   $0x1
40165c:	6a 2f                	push   $0x2f
40165e:	5a                   	pop    %edx
40165f:	8b ce                	mov    %esi,%ecx
401661:	e8 7a fe ff ff       	call   0x4014e0
401666:	8b f0                	mov    %eax,%esi
401668:	85 f6                	test   %esi,%esi
40166a:	0f 84 4e 01 00 00    	je     0x4017be
401670:	0f b7 0e             	movzwl (%esi),%ecx
401673:	8b c1                	mov    %ecx,%eax
401675:	33 d2                	xor    %edx,%edx
401677:	66 3b d1             	cmp    %cx,%dx
40167a:	0f 84 3e 01 00 00    	je     0x4017be
401680:	83 f8 43             	cmp    $0x43,%eax
401683:	74 32                	je     0x4016b7
401685:	83 f8 49             	cmp    $0x49,%eax
401688:	74 28                	je     0x4016b2
40168a:	83 f8 4d             	cmp    $0x4d,%eax
40168d:	74 1e                	je     0x4016ad
40168f:	83 f8 53             	cmp    $0x53,%eax
401692:	74 16                	je     0x4016aa
401694:	83 f9 58             	cmp    $0x58,%ecx
401697:	0f 85 21 01 00 00    	jne    0x4017be
40169d:	8d 56 02             	lea    0x2(%esi),%edx
4016a0:	8d 4d bc             	lea    -0x44(%ebp),%ecx
4016a3:	e8 86 fe ff ff       	call   0x40152e
4016a8:	eb 18                	jmp    0x4016c2
4016aa:	83 cb 02             	or     $0x2,%ebx
4016ad:	83 c6 02             	add    $0x2,%esi
4016b0:	eb 12                	jmp    0x4016c4
4016b2:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
4016b5:	eb 03                	jmp    0x4016ba
4016b7:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4016ba:	8d 56 02             	lea    0x2(%esi),%edx
4016bd:	e8 c9 fe ff ff       	call   0x40158b
4016c2:	8b f0                	mov    %eax,%esi
4016c4:	85 f6                	test   %esi,%esi
4016c6:	74 07                	je     0x4016cf
4016c8:	33 c0                	xor    %eax,%eax
4016ca:	66 3b 06             	cmp    (%esi),%ax
4016cd:	75 8b                	jne    0x40165a
4016cf:	53                   	push   %ebx
4016d0:	57                   	push   %edi
4016d1:	ff 15 a4 40 40 00    	call   *0x4040a4
4016d7:	85 c0                	test   %eax,%eax
4016d9:	79 08                	jns    0x4016e3
4016db:	6a 02                	push   $0x2
4016dd:	ff 15 14 40 40 00    	call   *0x404014
4016e3:	89 7d fc             	mov    %edi,-0x4(%ebp)
4016e6:	8d 45 b0             	lea    -0x50(%ebp),%eax
4016e9:	50                   	push   %eax
4016ea:	6a 01                	push   $0x1
4016ec:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4016ef:	50                   	push   %eax
4016f0:	ff 15 00 50 40 00    	call   *0x405000
4016f6:	85 c0                	test   %eax,%eax
4016f8:	75 0f                	jne    0x401709
4016fa:	6a 04                	push   $0x4
4016fc:	ff 15 04 40 40 00    	call   *0x404004
401702:	50                   	push   %eax
401703:	ff 15 08 40 40 00    	call   *0x404008
401709:	89 7d c0             	mov    %edi,-0x40(%ebp)
40170c:	8d 45 c0             	lea    -0x40(%ebp),%eax
40170f:	50                   	push   %eax
401710:	8d 45 c4             	lea    -0x3c(%ebp),%eax
401713:	50                   	push   %eax
401714:	8b 45 bc             	mov    -0x44(%ebp),%eax
401717:	0d 00 04 00 00       	or     $0x400,%eax
40171c:	50                   	push   %eax
40171d:	57                   	push   %edi
40171e:	8d 45 d4             	lea    -0x2c(%ebp),%eax
401721:	50                   	push   %eax
401722:	ff 15 98 40 40 00    	call   *0x404098
401728:	85 c0                	test   %eax,%eax
40172a:	78 07                	js     0x401733
40172c:	8b 45 c0             	mov    -0x40(%ebp),%eax
40172f:	85 c0                	test   %eax,%eax
401731:	75 12                	jne    0x401745
401733:	6a 03                	push   $0x3
401735:	ff 15 04 40 40 00    	call   *0x404004
40173b:	50                   	push   %eax
40173c:	ff 15 08 40 40 00    	call   *0x404008
401742:	8b 45 c0             	mov    -0x40(%ebp),%eax
401745:	83 4d b8 ff          	orl    $0xffffffff,-0x48(%ebp)
401749:	8b 30                	mov    (%eax),%esi
40174b:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40174e:	51                   	push   %ecx
40174f:	68 14 11 40 00       	push   $0x401114
401754:	50                   	push   %eax
401755:	8b 0e                	mov    (%esi),%ecx
401757:	ff 15 ac 40 40 00    	call   *0x4040ac
40175d:	ff 16                	call   *(%esi)
40175f:	85 c0                	test   %eax,%eax
401761:	78 0f                	js     0x401772
401763:	6a 03                	push   $0x3
401765:	ff 15 04 40 40 00    	call   *0x404004
40176b:	50                   	push   %eax
40176c:	ff 15 08 40 40 00    	call   *0x404008
401772:	8b 45 c0             	mov    -0x40(%ebp),%eax
401775:	8b 08                	mov    (%eax),%ecx
401777:	50                   	push   %eax
401778:	8b 71 08             	mov    0x8(%ecx),%esi
40177b:	8b ce                	mov    %esi,%ecx
40177d:	ff 15 ac 40 40 00    	call   *0x4040ac
401783:	ff d6                	call   *%esi
401785:	ff 15 9c 40 40 00    	call   *0x40409c
40178b:	eb 16                	jmp    0x4017a3
40178d:	33 c0                	xor    %eax,%eax
40178f:	40                   	inc    %eax
401790:	c3                   	ret
401791:	8b 65 e8             	mov    -0x18(%ebp),%esp
401794:	6a 02                	push   $0x2
401796:	ff 15 04 40 40 00    	call   *0x404004
40179c:	50                   	push   %eax
40179d:	ff 15 08 40 40 00    	call   *0x404008
4017a3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4017aa:	33 c0                	xor    %eax,%eax
4017ac:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4017af:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4017b6:	59                   	pop    %ecx
4017b7:	5f                   	pop    %edi
4017b8:	5e                   	pop    %esi
4017b9:	5b                   	pop    %ebx
4017ba:	c9                   	leave
4017bb:	c2 10 00             	ret    $0x10
4017be:	6a 01                	push   $0x1
4017c0:	e9 18 ff ff ff       	jmp    0x4016dd
4017c5:	a1 74 33 40 00       	mov    0x403374,%eax
4017ca:	53                   	push   %ebx
4017cb:	33 db                	xor    %ebx,%ebx
4017cd:	43                   	inc    %ebx
4017ce:	3b c3                	cmp    %ebx,%eax
4017d0:	75 04                	jne    0x4017d6
4017d2:	32 c0                	xor    %al,%al
4017d4:	5b                   	pop    %ebx
4017d5:	c3                   	ret
4017d6:	85 c0                	test   %eax,%eax
4017d8:	74 04                	je     0x4017de
4017da:	8a c3                	mov    %bl,%al
4017dc:	5b                   	pop    %ebx
4017dd:	c3                   	ret
4017de:	56                   	push   %esi
4017df:	68 28 11 40 00       	push   $0x401128
4017e4:	e8 c3 09 00 00       	call   0x4021ac
4017e9:	8b f0                	mov    %eax,%esi
4017eb:	85 f6                	test   %esi,%esi
4017ed:	75 10                	jne    0x4017ff
4017ef:	68 74 11 40 00       	push   $0x401174
4017f4:	e8 b3 09 00 00       	call   0x4021ac
4017f9:	8b f0                	mov    %eax,%esi
4017fb:	85 f6                	test   %esi,%esi
4017fd:	74 2a                	je     0x401829
4017ff:	68 90 11 40 00       	push   $0x401190
401804:	56                   	push   %esi
401805:	ff 15 18 40 40 00    	call   *0x404018
40180b:	a3 78 33 40 00       	mov    %eax,0x403378
401810:	85 c0                	test   %eax,%eax
401812:	74 15                	je     0x401829
401814:	68 a8 11 40 00       	push   $0x4011a8
401819:	56                   	push   %esi
40181a:	ff 15 18 40 40 00    	call   *0x404018
401820:	a3 7c 33 40 00       	mov    %eax,0x40337c
401825:	85 c0                	test   %eax,%eax
401827:	75 02                	jne    0x40182b
401829:	8b f3                	mov    %ebx,%esi
40182b:	3b f3                	cmp    %ebx,%esi
40182d:	89 35 74 33 40 00    	mov    %esi,0x403374
401833:	5e                   	pop    %esi
401834:	0f 95 c0             	setne  %al
401837:	5b                   	pop    %ebx
401838:	c3                   	ret
401839:	8b ff                	mov    %edi,%edi
40183b:	55                   	push   %ebp
40183c:	8b ec                	mov    %esp,%ebp
40183e:	83 ec 2c             	sub    $0x2c,%esp
401841:	8b 4d 08             	mov    0x8(%ebp),%ecx
401844:	ba 00 00 40 00       	mov    $0x400000,%edx
401849:	53                   	push   %ebx
40184a:	56                   	push   %esi
40184b:	57                   	push   %edi
40184c:	8b 41 08             	mov    0x8(%ecx),%eax
40184f:	8b 79 04             	mov    0x4(%ecx),%edi
401852:	03 c2                	add    %edx,%eax
401854:	8b 59 10             	mov    0x10(%ecx),%ebx
401857:	03 fa                	add    %edx,%edi
401859:	89 45 fc             	mov    %eax,-0x4(%ebp)
40185c:	03 da                	add    %edx,%ebx
40185e:	8b 41 0c             	mov    0xc(%ecx),%eax
401861:	03 c2                	add    %edx,%eax
401863:	89 45 f8             	mov    %eax,-0x8(%ebp)
401866:	8b 45 fc             	mov    -0x4(%ebp),%eax
401869:	8b 30                	mov    (%eax),%esi
40186b:	e8 55 ff ff ff       	call   0x4017c5
401870:	84 c0                	test   %al,%al
401872:	74 2e                	je     0x4018a2
401874:	8b 35 78 33 40 00    	mov    0x403378,%esi
40187a:	8b ce                	mov    %esi,%ecx
40187c:	6a 00                	push   $0x0
40187e:	ff 75 0c             	push   0xc(%ebp)
401881:	ff 35 1c 40 40 00    	push   0x40401c
401887:	ff 35 c4 11 40 00    	push   0x4011c4
40188d:	ff 75 08             	push   0x8(%ebp)
401890:	68 00 00 40 00       	push   $0x400000
401895:	ff 15 ac 40 40 00    	call   *0x4040ac
40189b:	ff d6                	call   *%esi
40189d:	e9 a5 00 00 00       	jmp    0x401947
4018a2:	8b 45 0c             	mov    0xc(%ebp),%eax
4018a5:	2b 45 f8             	sub    -0x8(%ebp),%eax
4018a8:	c1 f8 02             	sar    $0x2,%eax
4018ab:	8b 0c 83             	mov    (%ebx,%eax,4),%ecx
4018ae:	8d 99 02 00 40 00    	lea    0x400002(%ecx),%ebx
4018b4:	85 c9                	test   %ecx,%ecx
4018b6:	79 03                	jns    0x4018bb
4018b8:	0f b7 d9             	movzwl %cx,%ebx
4018bb:	85 f6                	test   %esi,%esi
4018bd:	75 6d                	jne    0x40192c
4018bf:	56                   	push   %esi
4018c0:	56                   	push   %esi
4018c1:	57                   	push   %edi
4018c2:	ff 15 20 40 40 00    	call   *0x404020
4018c8:	8b f0                	mov    %eax,%esi
4018ca:	85 f6                	test   %esi,%esi
4018cc:	74 71                	je     0x40193f
4018ce:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4018d1:	8b d6                	mov    %esi,%edx
4018d3:	33 c0                	xor    %eax,%eax
4018d5:	f0 0f b1 11          	lock cmpxchg %edx,(%ecx)
4018d9:	89 45 f8             	mov    %eax,-0x8(%ebp)
4018dc:	85 c0                	test   %eax,%eax
4018de:	75 3e                	jne    0x40191e
4018e0:	89 45 d8             	mov    %eax,-0x28(%ebp)
4018e3:	89 45 dc             	mov    %eax,-0x24(%ebp)
4018e6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4018e9:	89 45 e8             	mov    %eax,-0x18(%ebp)
4018ec:	89 45 f0             	mov    %eax,-0x10(%ebp)
4018ef:	89 45 f4             	mov    %eax,-0xc(%ebp)
4018f2:	a1 c4 11 40 00       	mov    0x4011c4,%eax
4018f7:	c7 45 d4 24 00 00 00 	movl   $0x24,-0x2c(%ebp)
4018fe:	89 7d e0             	mov    %edi,-0x20(%ebp)
401901:	89 75 ec             	mov    %esi,-0x14(%ebp)
401904:	89 45 f8             	mov    %eax,-0x8(%ebp)
401907:	85 c0                	test   %eax,%eax
401909:	74 1d                	je     0x401928
40190b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40190e:	51                   	push   %ecx
40190f:	6a 05                	push   $0x5
401911:	8b c8                	mov    %eax,%ecx
401913:	ff 15 ac 40 40 00    	call   *0x4040ac
401919:	ff 55 f8             	call   *-0x8(%ebp)