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)
40191c:	eb 0a                	jmp    0x401928
40191e:	56                   	push   %esi
40191f:	ff 15 4c 40 40 00    	call   *0x40404c
401925:	8b 75 f8             	mov    -0x8(%ebp),%esi
401928:	85 f6                	test   %esi,%esi
40192a:	74 13                	je     0x40193f
40192c:	53                   	push   %ebx
40192d:	56                   	push   %esi
40192e:	ff 15 18 40 40 00    	call   *0x404018
401934:	85 c0                	test   %eax,%eax
401936:	74 07                	je     0x40193f
401938:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40193b:	89 01                	mov    %eax,(%ecx)
40193d:	eb 08                	jmp    0x401947
40193f:	53                   	push   %ebx
401940:	57                   	push   %edi
401941:	ff 15 1c 40 40 00    	call   *0x40401c
401947:	5f                   	pop    %edi
401948:	5e                   	pop    %esi
401949:	5b                   	pop    %ebx
40194a:	c9                   	leave
40194b:	c2 08 00             	ret    $0x8
40194e:	cc                   	int3
40194f:	cc                   	int3
401950:	e8 aa 02 00 00       	call   0x401bff
401955:	6a 02                	push   $0x2
401957:	a3 28 30 40 00       	mov    %eax,0x403028
40195c:	e8 37 04 00 00       	call   0x401d98
401961:	50                   	push   %eax
401962:	ff 15 90 40 40 00    	call   *0x404090
401968:	83 0d 60 33 40 00 ff 	orl    $0xffffffff,0x403360
40196f:	83 0d 64 33 40 00 ff 	orl    $0xffffffff,0x403364
401976:	59                   	pop    %ecx
401977:	59                   	pop    %ecx
401978:	ff 15 80 40 40 00    	call   *0x404080
40197e:	8b 0d 3c 30 40 00    	mov    0x40303c,%ecx
401984:	89 08                	mov    %ecx,(%eax)
401986:	ff 15 6c 40 40 00    	call   *0x40406c
40198c:	8b 0d 30 30 40 00    	mov    0x403030,%ecx
401992:	89 08                	mov    %ecx,(%eax)
401994:	e8 47 04 00 00       	call   0x401de0
401999:	83 3d 00 30 40 00 00 	cmpl   $0x0,0x403000
4019a0:	75 0c                	jne    0x4019ae
4019a2:	68 e0 1d 40 00       	push   $0x401de0
4019a7:	ff 15 7c 40 40 00    	call   *0x40407c
4019ad:	59                   	pop    %ecx
4019ae:	e8 1a 06 00 00       	call   0x401fcd
4019b3:	33 c0                	xor    %eax,%eax
4019b5:	c3                   	ret
4019b6:	cc                   	int3
4019b7:	cc                   	int3
4019b8:	cc                   	int3
4019b9:	cc                   	int3
4019ba:	cc                   	int3
4019bb:	cc                   	int3
4019bc:	cc                   	int3
4019bd:	cc                   	int3
4019be:	cc                   	int3
4019bf:	cc                   	int3
4019c0:	a1 38 30 40 00       	mov    0x403038,%eax
4019c5:	68 2c 30 40 00       	push   $0x40302c
4019ca:	ff 35 34 30 40 00    	push   0x403034
4019d0:	a3 2c 30 40 00       	mov    %eax,0x40302c
4019d5:	68 20 30 40 00       	push   $0x403020
4019da:	68 1c 30 40 00       	push   $0x40301c
4019df:	68 18 30 40 00       	push   $0x403018
4019e4:	ff 15 74 40 40 00    	call   *0x404074
4019ea:	83 c4 14             	add    $0x14,%esp
4019ed:	a3 24 30 40 00       	mov    %eax,0x403024
4019f2:	c3                   	ret
4019f3:	6a 58                	push   $0x58
4019f5:	68 30 22 40 00       	push   $0x402230
4019fa:	e8 e9 05 00 00       	call   0x401fe8
4019ff:	33 db                	xor    %ebx,%ebx
401a01:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
401a04:	8d 45 98             	lea    -0x68(%ebp),%eax
401a07:	50                   	push   %eax
401a08:	ff 15 44 40 40 00    	call   *0x404044
401a0e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
401a11:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
401a17:	8b 70 04             	mov    0x4(%eax),%esi
401a1a:	8b fb                	mov    %ebx,%edi
401a1c:	ba 68 33 40 00       	mov    $0x403368,%edx
401a21:	8b ce                	mov    %esi,%ecx
401a23:	33 c0                	xor    %eax,%eax
401a25:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
401a29:	85 c0                	test   %eax,%eax
401a2b:	74 18                	je     0x401a45
401a2d:	3b c6                	cmp    %esi,%eax
401a2f:	75 07                	jne    0x401a38
401a31:	33 f6                	xor    %esi,%esi
401a33:	46                   	inc    %esi
401a34:	8b fe                	mov    %esi,%edi
401a36:	eb 10                	jmp    0x401a48
401a38:	68 e8 03 00 00       	push   $0x3e8
401a3d:	ff 15 48 40 40 00    	call   *0x404048
401a43:	eb d7                	jmp    0x401a1c
401a45:	33 f6                	xor    %esi,%esi
401a47:	46                   	inc    %esi
401a48:	39 35 6c 33 40 00    	cmp    %esi,0x40336c
401a4e:	75 0a                	jne    0x401a5a
401a50:	6a 1f                	push   $0x1f
401a52:	e8 77 03 00 00       	call   0x401dce
401a57:	59                   	pop    %ecx
401a58:	eb 3a                	jmp    0x401a94
401a5a:	39 1d 6c 33 40 00    	cmp    %ebx,0x40336c
401a60:	75 2c                	jne    0x401a8e
401a62:	89 35 6c 33 40 00    	mov    %esi,0x40336c
401a68:	68 cc 10 40 00       	push   $0x4010cc
401a6d:	68 c0 10 40 00       	push   $0x4010c0
401a72:	e8 57 01 00 00       	call   0x401bce
401a77:	59                   	pop    %ecx
401a78:	59                   	pop    %ecx
401a79:	85 c0                	test   %eax,%eax
401a7b:	74 17                	je     0x401a94
401a7d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401a84:	b8 ff 00 00 00       	mov    $0xff,%eax
401a89:	e9 30 01 00 00       	jmp    0x401bbe
401a8e:	89 35 14 30 40 00    	mov    %esi,0x403014
401a94:	39 35 6c 33 40 00    	cmp    %esi,0x40336c
401a9a:	75 1b                	jne    0x401ab7
401a9c:	68 bc 10 40 00       	push   $0x4010bc
401aa1:	68 b4 10 40 00       	push   $0x4010b4
401aa6:	e8 35 05 00 00       	call   0x401fe0
401aab:	59                   	pop    %ecx
401aac:	59                   	pop    %ecx
401aad:	c7 05 6c 33 40 00 02 	movl   $0x2,0x40336c
401ab4:	00 00 00
401ab7:	85 ff                	test   %edi,%edi
401ab9:	75 09                	jne    0x401ac4
401abb:	33 c0                	xor    %eax,%eax
401abd:	b9 68 33 40 00       	mov    $0x403368,%ecx
401ac2:	87 01                	xchg   %eax,(%ecx)
401ac4:	83 3d 70 33 40 00 00 	cmpl   $0x0,0x403370
401acb:	74 23                	je     0x401af0
401acd:	68 70 33 40 00       	push   $0x403370
401ad2:	e8 69 03 00 00       	call   0x401e40
401ad7:	59                   	pop    %ecx
401ad8:	85 c0                	test   %eax,%eax
401ada:	74 14                	je     0x401af0
401adc:	53                   	push   %ebx
401add:	6a 02                	push   $0x2
401adf:	53                   	push   %ebx
401ae0:	8b 35 70 33 40 00    	mov    0x403370,%esi
401ae6:	8b ce                	mov    %esi,%ecx
401ae8:	ff 15 ac 40 40 00    	call   *0x4040ac
401aee:	ff d6                	call   *%esi
401af0:	a1 58 40 40 00       	mov    0x404058,%eax
401af5:	8b 08                	mov    (%eax),%ecx
401af7:	85 c9                	test   %ecx,%ecx
401af9:	74 82                	je     0x401a7d
401afb:	89 4d e0             	mov    %ecx,-0x20(%ebp)
401afe:	6a 20                	push   $0x20
401b00:	5e                   	pop    %esi
401b01:	8b 55 e4             	mov    -0x1c(%ebp),%edx
401b04:	0f b7 01             	movzwl (%ecx),%eax
401b07:	66 3b c6             	cmp    %si,%ax
401b0a:	77 4f                	ja     0x401b5b
401b0c:	66 85 c0             	test   %ax,%ax
401b0f:	74 19                	je     0x401b2a
401b11:	85 d2                	test   %edx,%edx
401b13:	75 46                	jne    0x401b5b
401b15:	66 85 c0             	test   %ax,%ax
401b18:	74 10                	je     0x401b2a
401b1a:	66 3b c6             	cmp    %si,%ax
401b1d:	77 0b                	ja     0x401b2a
401b1f:	83 c1 02             	add    $0x2,%ecx
401b22:	89 4d e0             	mov    %ecx,-0x20(%ebp)
401b25:	0f b7 01             	movzwl (%ecx),%eax
401b28:	eb eb                	jmp    0x401b15
401b2a:	f6 45 c4 01          	testb  $0x1,-0x3c(%ebp)
401b2e:	74 06                	je     0x401b36
401b30:	0f b7 45 c8          	movzwl -0x38(%ebp),%eax
401b34:	eb 03                	jmp    0x401b39
401b36:	6a 0a                	push   $0xa