4476b8:	8b ff                	mov    %edi,%edi
4476ba:	55                   	push   %ebp
4476bb:	8b ec                	mov    %esp,%ebp
4476bd:	56                   	push   %esi
4476be:	ff 75 14             	push   0x14(%ebp)
4476c1:	8b f1                	mov    %ecx,%esi
4476c3:	83 ec 0c             	sub    $0xc,%esp
4476c6:	8d 4e 08             	lea    0x8(%esi),%ecx
4476c9:	e8 2d 01 00 00       	call   0x4477fb
4476ce:	85 c0                	test   %eax,%eax
4476d0:	78 0d                	js     0x4476df
4476d2:	ff 75 14             	push   0x14(%ebp)
4476d5:	8b ce                	mov    %esi,%ecx
4476d7:	83 ec 0c             	sub    $0xc,%esp
4476da:	e8 b8 01 00 00       	call   0x447897
4476df:	5e                   	pop    %esi
4476e0:	5d                   	pop    %ebp
4476e1:	c2 10 00             	ret    $0x10
4476e4:	8b ff                	mov    %edi,%edi
4476e6:	55                   	push   %ebp
4476e7:	8b ec                	mov    %esp,%ebp
4476e9:	83 ec 20             	sub    $0x20,%esp
4476ec:	53                   	push   %ebx
4476ed:	8b d9                	mov    %ecx,%ebx
4476ef:	33 c0                	xor    %eax,%eax
4476f1:	40                   	inc    %eax
4476f2:	56                   	push   %esi
4476f3:	57                   	push   %edi
4476f4:	89 43 08             	mov    %eax,0x8(%ebx)
4476f7:	33 ff                	xor    %edi,%edi
4476f9:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4476fc:	50                   	push   %eax
4476fd:	ff 15 00 30 45 00    	call   *0x453000
447703:	8b 45 10             	mov    0x10(%ebp),%eax
447706:	8d 4d f8             	lea    -0x8(%ebp),%ecx
447709:	21 7d f4             	and    %edi,-0xc(%ebp)
44770c:	21 7d f8             	and    %edi,-0x8(%ebp)
44770f:	51                   	push   %ecx
447710:	8b 30                	mov    (%eax),%esi
447712:	8d 4d f4             	lea    -0xc(%ebp),%ecx
447715:	51                   	push   %ecx
447716:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
447719:	51                   	push   %ecx
44771a:	8b 4e 10             	mov    0x10(%esi),%ecx
44771d:	57                   	push   %edi
44771e:	68 94 65 40 00       	push   $0x406594
447723:	50                   	push   %eax
447724:	ff 15 c4 12 45 00    	call   *0x4512c4
44772a:	ff 56 10             	call   *0x10(%esi)
44772d:	6a 0b                	push   $0xb
44772f:	83 c9 ff             	or     $0xffffffff,%ecx
447732:	5a                   	pop    %edx
447733:	85 c0                	test   %eax,%eax
447735:	78 27                	js     0x44775e
447737:	33 c0                	xor    %eax,%eax
447739:	66 39 55 e4          	cmp    %dx,-0x1c(%ebp)
44773d:	75 0c                	jne    0x44774b
44773f:	66 39 4d ec          	cmp    %cx,-0x14(%ebp)
447743:	0f 94 c0             	sete   %al
447746:	89 43 0c             	mov    %eax,0xc(%ebx)
447749:	eb 1c                	jmp    0x447767
44774b:	40                   	inc    %eax
44774c:	66 39 45 e4          	cmp    %ax,-0x1c(%ebp)
447750:	75 05                	jne    0x447757
447752:	21 7b 0c             	and    %edi,0xc(%ebx)
447755:	eb 10                	jmp    0x447767
447757:	bf 12 10 04 80       	mov    $0x80041012,%edi
44775c:	eb 09                	jmp    0x447767
44775e:	3d 02 10 04 80       	cmp    $0x80041002,%eax
447763:	74 02                	je     0x447767
447765:	8b f8                	mov    %eax,%edi
447767:	8d 45 e4             	lea    -0x1c(%ebp),%eax
44776a:	50                   	push   %eax
44776b:	ff 15 1c 30 45 00    	call   *0x45301c
447771:	85 ff                	test   %edi,%edi
447773:	78 7d                	js     0x4477f2
447775:	8d 45 e4             	lea    -0x1c(%ebp),%eax
447778:	50                   	push   %eax
447779:	ff 15 00 30 45 00    	call   *0x453000
44777f:	8b 45 10             	mov    0x10(%ebp),%eax
447782:	8d 4d f4             	lea    -0xc(%ebp),%ecx
447785:	51                   	push   %ecx
447786:	8d 4d f8             	lea    -0x8(%ebp),%ecx
447789:	33 d2                	xor    %edx,%edx
44778b:	51                   	push   %ecx
44778c:	8b 30                	mov    (%eax),%esi
44778e:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
447791:	51                   	push   %ecx
447792:	52                   	push   %edx
447793:	68 7c 65 40 00       	push   $0x40657c
447798:	8b 4e 10             	mov    0x10(%esi),%ecx
44779b:	50                   	push   %eax
44779c:	89 55 f8             	mov    %edx,-0x8(%ebp)
44779f:	89 55 f4             	mov    %edx,-0xc(%ebp)
4477a2:	ff 15 c4 12 45 00    	call   *0x4512c4
4477a8:	ff 56 10             	call   *0x10(%esi)
4477ab:	85 c0                	test   %eax,%eax
4477ad:	78 30                	js     0x4477df
4477af:	6a 0b                	push   $0xb
4477b1:	58                   	pop    %eax
4477b2:	66 39 45 e4          	cmp    %ax,-0x1c(%ebp)
4477b6:	75 11                	jne    0x4477c9
4477b8:	33 c0                	xor    %eax,%eax
4477ba:	83 c9 ff             	or     $0xffffffff,%ecx
4477bd:	66 39 4d ec          	cmp    %cx,-0x14(%ebp)
4477c1:	0f 94 c0             	sete   %al
4477c4:	89 43 10             	mov    %eax,0x10(%ebx)
4477c7:	eb 1f                	jmp    0x4477e8
4477c9:	33 c0                	xor    %eax,%eax
4477cb:	40                   	inc    %eax
4477cc:	66 39 45 e4          	cmp    %ax,-0x1c(%ebp)
4477d0:	75 06                	jne    0x4477d8
4477d2:	83 63 10 00          	andl   $0x0,0x10(%ebx)
4477d6:	eb 10                	jmp    0x4477e8
4477d8:	bf 12 10 04 80       	mov    $0x80041012,%edi
4477dd:	eb 09                	jmp    0x4477e8
4477df:	3d 02 10 04 80       	cmp    $0x80041002,%eax
4477e4:	74 02                	je     0x4477e8
4477e6:	8b f8                	mov    %eax,%edi
4477e8:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4477eb:	50                   	push   %eax
4477ec:	ff 15 1c 30 45 00    	call   *0x45301c
4477f2:	8b c7                	mov    %edi,%eax
4477f4:	5f                   	pop    %edi
4477f5:	5e                   	pop    %esi
4477f6:	5b                   	pop    %ebx
4477f7:	c9                   	leave
4477f8:	c2 0c 00             	ret    $0xc
4477fb:	8b ff                	mov    %edi,%edi
4477fd:	55                   	push   %ebp
4477fe:	8b ec                	mov    %esp,%ebp
447800:	51                   	push   %ecx
447801:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
447805:	8d 45 fc             	lea    -0x4(%ebp),%eax
447808:	53                   	push   %ebx
447809:	56                   	push   %esi
44780a:	68 3c 66 40 00       	push   $0x40663c
44780f:	ff 75 14             	push   0x14(%ebp)
447812:	8b d9                	mov    %ecx,%ebx
447814:	68 40 66 40 00       	push   $0x406640
447819:	50                   	push   %eax
44781a:	6a 03                	push   $0x3
44781c:	e8 6f 7f fc ff       	call   0x40f790
447821:	8b f0                	mov    %eax,%esi
447823:	83 c4 14             	add    $0x14,%esp
447826:	85 f6                	test   %esi,%esi
447828:	78 65                	js     0x44788f
44782a:	57                   	push   %edi
44782b:	8d bb d0 06 00 00    	lea    0x6d0(%ebx),%edi
447831:	8b 0f                	mov    (%edi),%ecx
447833:	85 c9                	test   %ecx,%ecx
447835:	74 13                	je     0x44784a
447837:	8b 01                	mov    (%ecx),%eax
447839:	51                   	push   %ecx
44783a:	8b 70 08             	mov    0x8(%eax),%esi
44783d:	8b ce                	mov    %esi,%ecx
44783f:	ff 15 c4 12 45 00    	call   *0x4512c4
447845:	ff d6                	call   *%esi
447847:	83 27 00             	andl   $0x0,(%edi)
44784a:	8b 83 dc 06 00 00    	mov    0x6dc(%ebx),%eax
447850:	6a 00                	push   $0x0
447852:	57                   	push   %edi
447853:	ff b3 d4 06 00 00    	push   0x6d4(%ebx)
447859:	8b 30                	mov    (%eax),%esi
44785b:	6a 00                	push   $0x0
44785d:	ff 75 fc             	push   -0x4(%ebp)
447860:	8b 4e 18             	mov    0x18(%esi),%ecx
447863:	50                   	push   %eax
447864:	ff 15 c4 12 45 00    	call   *0x4512c4
44786a:	ff 56 18             	call   *0x18(%esi)
44786d:	8b f0                	mov    %eax,%esi
44786f:	85 f6                	test   %esi,%esi
447871:	78 12                	js     0x447885
447873:	ff 75 14             	push   0x14(%ebp)
447876:	8b cb                	mov    %ebx,%ecx
447878:	ff 37                	push   (%edi)
44787a:	6a ff                	push   $0xffffffff
44787c:	6a ff                	push   $0xffffffff
44787e:	e8 4d 68 fc ff       	call   0x40e0d0
447883:	8b f0                	mov    %eax,%esi
447885:	ff 75 fc             	push   -0x4(%ebp)
447888:	ff 15 0c 30 45 00    	call   *0x45300c
44788e:	5f                   	pop    %edi
44788f:	8b c6                	mov    %esi,%eax
447891:	5e                   	pop    %esi
447892:	5b                   	pop    %ebx
447893:	c9                   	leave
447894:	c2 10 00             	ret    $0x10
447897:	8b ff                	mov    %edi,%edi
447899:	55                   	push   %ebp
44789a:	8b ec                	mov    %esp,%ebp
44789c:	51                   	push   %ecx
44789d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4478a1:	8d 45 fc             	lea    -0x4(%ebp),%eax
4478a4:	56                   	push   %esi
4478a5:	57                   	push   %edi
4478a6:	68 70 66 40 00       	push   $0x406670
4478ab:	ff 75 14             	push   0x14(%ebp)
4478ae:	8b f9                	mov    %ecx,%edi
4478b0:	68 78 66 40 00       	push   $0x406678
4478b5:	50                   	push   %eax
4478b6:	6a 03                	push   $0x3
4478b8:	e8 d3 7e fc ff       	call   0x40f790
4478bd:	8b f0                	mov    %eax,%esi
4478bf:	83 c4 14             	add    $0x14,%esp
4478c2:	85 f6                	test   %esi,%esi
4478c4:	78 18                	js     0x4478de
4478c6:	ff 75 fc             	push   -0x4(%ebp)
4478c9:	8b cf                	mov    %edi,%ecx
4478cb:	83 ec 0c             	sub    $0xc,%esp
4478ce:	e8 ed 60 fc ff       	call   0x40d9c0
4478d3:	ff 75 fc             	push   -0x4(%ebp)
4478d6:	8b f0                	mov    %eax,%esi
4478d8:	ff 15 0c 30 45 00    	call   *0x45300c
4478de:	5f                   	pop    %edi
4478df:	8b c6                	mov    %esi,%eax
4478e1:	5e                   	pop    %esi
4478e2:	c9                   	leave
4478e3:	c2 10 00             	ret    $0x10
4478e6:	8b ff                	mov    %edi,%edi
4478e8:	55                   	push   %ebp
4478e9:	8b ec                	mov    %esp,%ebp
4478eb:	51                   	push   %ecx
4478ec:	53                   	push   %ebx
4478ed:	56                   	push   %esi
4478ee:	8b f2                	mov    %edx,%esi
4478f0:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4478f3:	33 db                	xor    %ebx,%ebx
4478f5:	57                   	push   %edi
4478f6:	85 f6                	test   %esi,%esi
4478f8:	74 24                	je     0x44791e
4478fa:	8b 45 08             	mov    0x8(%ebp),%eax
4478fd:	8d 3c 1e             	lea    (%esi,%ebx,1),%edi
447900:	d1 ef                	shr    $1,%edi
447902:	8b 14 b8             	mov    (%eax,%edi,4),%edx
447905:	e8 4e 6b fd ff       	call   0x41e458
44790a:	85 c0                	test   %eax,%eax
44790c:	74 1c                	je     0x44792a
44790e:	79 04                	jns    0x447914
447910:	8b f7                	mov    %edi,%esi
447912:	eb 03                	jmp    0x447917
447914:	8d 5f 01             	lea    0x1(%edi),%ebx
447917:	8b 4d fc             	mov    -0x4(%ebp),%ecx
44791a:	3b de                	cmp    %esi,%ebx
44791c:	72 dc                	jb     0x4478fa
44791e:	b8 03 10 04 80       	mov    $0x80041003,%eax
447923:	5f                   	pop    %edi
447924:	5e                   	pop    %esi
447925:	5b                   	pop    %ebx
447926:	c9                   	leave
447927:	c2 04 00             	ret    $0x4
44792a:	33 c0                	xor    %eax,%eax
44792c:	eb f5                	jmp    0x447923
44792e:	8b ff                	mov    %edi,%edi
447930:	56                   	push   %esi
447931:	57                   	push   %edi
447932:	8b f1                	mov    %ecx,%esi
447934:	83 cf ff             	or     $0xffffffff,%edi
447937:	f0 0f c1 3e          	lock xadd %edi,(%esi)
44793b:	4f                   	dec    %edi
44793c:	75 10                	jne    0x44794e
44793e:	85 f6                	test   %esi,%esi
447940:	74 0c                	je     0x44794e
447942:	e8 7f a7 fd ff       	call   0x4220c6
447947:	56                   	push   %esi
447948:	e8 7d 48 fc ff       	call   0x40c1ca
44794d:	59                   	pop    %ecx
44794e:	8b c7                	mov    %edi,%eax
447950:	5f                   	pop    %edi
447951:	5e                   	pop    %esi
447952:	c3                   	ret
447953:	8b ff                	mov    %edi,%edi
447955:	55                   	push   %ebp
447956:	8b ec                	mov    %esp,%ebp
447958:	8b 55 0c             	mov    0xc(%ebp),%edx
44795b:	8b 45 10             	mov    0x10(%ebp),%eax
44795e:	56                   	push   %esi
44795f:	57                   	push   %edi
447960:	8b f9                	mov    %ecx,%edi
447962:	8b 4d 08             	mov    0x8(%ebp),%ecx
447965:	89 8f d4 06 00 00    	mov    %ecx,0x6d4(%edi)
44796b:	89 97 d8 06 00 00    	mov    %edx,0x6d8(%edi)
447971:	89 87 dc 06 00 00    	mov    %eax,0x6dc(%edi)
447977:	85 c9                	test   %ecx,%ecx
447979:	74 16                	je     0x447991
44797b:	8b 01                	mov    (%ecx),%eax
44797d:	51                   	push   %ecx
44797e:	8b 70 04             	mov    0x4(%eax),%esi
447981:	8b ce                	mov    %esi,%ecx
447983:	ff 15 c4 12 45 00    	call   *0x4512c4
447989:	ff d6                	call   *%esi
44798b:	8b 97 d8 06 00 00    	mov    0x6d8(%edi),%edx
447991:	85 d2                	test   %edx,%edx
447993:	74 10                	je     0x4479a5
447995:	8b 02                	mov    (%edx),%eax
447997:	52                   	push   %edx
447998:	8b 70 04             	mov    0x4(%eax),%esi
44799b:	8b ce                	mov    %esi,%ecx
44799d:	ff 15 c4 12 45 00    	call   *0x4512c4
4479a3:	ff d6                	call   *%esi
4479a5:	8b 8f dc 06 00 00    	mov    0x6dc(%edi),%ecx
4479ab:	85 c9                	test   %ecx,%ecx
4479ad:	74 10                	je     0x4479bf
4479af:	8b 01                	mov    (%ecx),%eax
4479b1:	51                   	push   %ecx
4479b2:	8b 70 04             	mov    0x4(%eax),%esi
4479b5:	8b ce                	mov    %esi,%ecx
4479b7:	ff 15 c4 12 45 00    	call   *0x4512c4
4479bd:	ff d6                	call   *%esi
4479bf:	5f                   	pop    %edi
4479c0:	33 c0                	xor    %eax,%eax
4479c2:	5e                   	pop    %esi
4479c3:	5d                   	pop    %ebp
4479c4:	c2 0c 00             	ret    $0xc
4479c7:	8b ff                	mov    %edi,%edi
4479c9:	55                   	push   %ebp
4479ca:	8b ec                	mov    %esp,%ebp
4479cc:	8b 45 0c             	mov    0xc(%ebp),%eax
4479cf:	53                   	push   %ebx
4479d0:	8b 5d 08             	mov    0x8(%ebp),%ebx
4479d3:	56                   	push   %esi
4479d4:	57                   	push   %edi
4479d5:	8b f9                	mov    %ecx,%edi
4479d7:	8b 4d 10             	mov    0x10(%ebp),%ecx
4479da:	89 8f 04 08 00 00    	mov    %ecx,0x804(%edi)
4479e0:	8b c8                	mov    %eax,%ecx
4479e2:	89 9f fc 07 00 00    	mov    %ebx,0x7fc(%edi)
4479e8:	89 87 00 08 00 00    	mov    %eax,0x800(%edi)
4479ee:	85 db                	test   %ebx,%ebx
4479f0:	74 16                	je     0x447a08
4479f2:	8b 03                	mov    (%ebx),%eax
4479f4:	53                   	push   %ebx
4479f5:	8b 70 04             	mov    0x4(%eax),%esi
4479f8:	8b ce                	mov    %esi,%ecx
4479fa:	ff 15 c4 12 45 00    	call   *0x4512c4
447a00:	ff d6                	call   *%esi
447a02:	8b 8f 00 08 00 00    	mov    0x800(%edi),%ecx
447a08:	85 c9                	test   %ecx,%ecx
447a0a:	74 10                	je     0x447a1c
447a0c:	8b 01                	mov    (%ecx),%eax
447a0e:	51                   	push   %ecx
447a0f:	8b 70 04             	mov    0x4(%eax),%esi
447a12:	8b ce                	mov    %esi,%ecx
447a14:	ff 15 c4 12 45 00    	call   *0x4512c4
447a1a:	ff d6                	call   *%esi
447a1c:	8b 8f 04 08 00 00    	mov    0x804(%edi),%ecx
447a22:	85 c9                	test   %ecx,%ecx
447a24:	74 10                	je     0x447a36
447a26:	8b 01                	mov    (%ecx),%eax
447a28:	51                   	push   %ecx