41679c:	8b 4c 01 18          	mov    0x18(%ecx,%eax,1),%ecx
4167a0:	8d 7d d8             	lea    -0x28(%ebp),%edi
4167a3:	33 c0                	xor    %eax,%eax
4167a5:	ab                   	stos   %eax,%es:(%edi)
4167a6:	6a 00                	push   $0x0
4167a8:	ab                   	stos   %eax,%es:(%edi)
4167a9:	ab                   	stos   %eax,%es:(%edi)
4167aa:	8d 45 dc             	lea    -0x24(%ebp),%eax
4167ad:	50                   	push   %eax
4167ae:	ff 75 fc             	push   -0x4(%ebp)
4167b1:	ff 75 f4             	push   -0xc(%ebp)
4167b4:	51                   	push   %ecx
4167b5:	ff 15 c0 40 42 00    	call   *0x4240c0
4167bb:	85 c0                	test   %eax,%eax
4167bd:	75 09                	jne    0x4167c8
4167bf:	ff 15 98 40 42 00    	call   *0x424098
4167c5:	89 45 d8             	mov    %eax,-0x28(%ebp)
4167c8:	8d 75 d8             	lea    -0x28(%ebp),%esi
4167cb:	8d 7d e4             	lea    -0x1c(%ebp),%edi
4167ce:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4167cf:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4167d0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4167d1:	8b 45 e8             	mov    -0x18(%ebp),%eax
4167d4:	85 c0                	test   %eax,%eax
4167d6:	75 65                	jne    0x41683d
4167d8:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4167db:	85 c0                	test   %eax,%eax
4167dd:	74 2a                	je     0x416809
4167df:	6a 05                	push   $0x5
4167e1:	5e                   	pop    %esi
4167e2:	3b c6                	cmp    %esi,%eax
4167e4:	75 17                	jne    0x4167fd
4167e6:	e8 10 86 ff ff       	call   0x40edfb
4167eb:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4167f1:	e8 f2 85 ff ff       	call   0x40ede8
4167f6:	89 30                	mov    %esi,(%eax)
4167f8:	e9 b0 fe ff ff       	jmp    0x4166ad
4167fd:	50                   	push   %eax
4167fe:	e8 c2 85 ff ff       	call   0x40edc5
416803:	59                   	pop    %ecx
416804:	e9 a4 fe ff ff       	jmp    0x4166ad
416809:	8b 7d f4             	mov    -0xc(%ebp),%edi
41680c:	8b 45 f0             	mov    -0x10(%ebp),%eax
41680f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
416812:	8b 04 85 c0 4a 43 00 	mov    0x434ac0(,%eax,4),%eax
416819:	f6 44 08 28 40       	testb  $0x40,0x28(%eax,%ecx,1)
41681e:	74 05                	je     0x416825
416820:	80 3f 1a             	cmpb   $0x1a,(%edi)
416823:	74 1d                	je     0x416842
416825:	e8 d1 85 ff ff       	call   0x40edfb
41682a:	c7 00 1c 00 00 00    	movl   $0x1c,(%eax)
416830:	e8 b3 85 ff ff       	call   0x40ede8
416835:	83 20 00             	andl   $0x0,(%eax)
416838:	e9 70 fe ff ff       	jmp    0x4166ad
41683d:	2b 45 ec             	sub    -0x14(%ebp),%eax
416840:	eb 02                	jmp    0x416844
416842:	33 c0                	xor    %eax,%eax
416844:	5f                   	pop    %edi
416845:	5e                   	pop    %esi
416846:	5b                   	pop    %ebx
416847:	c9                   	leave
416848:	c3                   	ret
416849:	8b ff                	mov    %edi,%edi
41684b:	55                   	push   %ebp
41684c:	8b ec                	mov    %esp,%ebp
41684e:	8b 45 08             	mov    0x8(%ebp),%eax
416851:	56                   	push   %esi
416852:	85 c0                	test   %eax,%eax
416854:	75 18                	jne    0x41686e
416856:	e8 a0 85 ff ff       	call   0x40edfb
41685b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
416861:	e8 1b 68 ff ff       	call   0x40d081
416866:	83 c8 ff             	or     $0xffffffff,%eax
416869:	e9 62 01 00 00       	jmp    0x4169d0
41686e:	8b 40 0c             	mov    0xc(%eax),%eax
416871:	53                   	push   %ebx
416872:	90                   	nop
416873:	33 db                	xor    %ebx,%ebx
416875:	c1 e8 0d             	shr    $0xd,%eax
416878:	43                   	inc    %ebx
416879:	84 c3                	test   %al,%bl
41687b:	0f 84 4b 01 00 00    	je     0x4169cc
416881:	8b 45 08             	mov    0x8(%ebp),%eax
416884:	8b 40 0c             	mov    0xc(%eax),%eax
416887:	90                   	nop
416888:	c1 e8 0c             	shr    $0xc,%eax
41688b:	84 c3                	test   %al,%bl
41688d:	0f 85 39 01 00 00    	jne    0x4169cc
416893:	8b 45 08             	mov    0x8(%ebp),%eax
416896:	8b 40 0c             	mov    0xc(%eax),%eax
416899:	90                   	nop
41689a:	d1 e8                	shr    $1,%eax
41689c:	84 c3                	test   %al,%bl
41689e:	8b 45 08             	mov    0x8(%ebp),%eax
4168a1:	74 0e                	je     0x4168b1
4168a3:	6a 10                	push   $0x10
4168a5:	59                   	pop    %ecx
4168a6:	83 c0 0c             	add    $0xc,%eax
4168a9:	f0 09 08             	lock or %ecx,(%eax)
4168ac:	e9 1b 01 00 00       	jmp    0x4169cc
4168b1:	83 c0 0c             	add    $0xc,%eax
4168b4:	f0 09 18             	lock or %ebx,(%eax)
4168b7:	8b 45 08             	mov    0x8(%ebp),%eax
4168ba:	8b 40 0c             	mov    0xc(%eax),%eax
4168bd:	90                   	nop
4168be:	a9 c0 04 00 00       	test   $0x4c0,%eax
4168c3:	75 09                	jne    0x4168ce
4168c5:	ff 75 08             	push   0x8(%ebp)
4168c8:	e8 9b 14 00 00       	call   0x417d68
4168cd:	59                   	pop    %ecx
4168ce:	8b 45 08             	mov    0x8(%ebp),%eax
4168d1:	8b 48 04             	mov    0x4(%eax),%ecx
4168d4:	89 08                	mov    %ecx,(%eax)
4168d6:	8b 75 08             	mov    0x8(%ebp),%esi
4168d9:	ff 76 18             	push   0x18(%esi)
4168dc:	ff 76 04             	push   0x4(%esi)
4168df:	56                   	push   %esi
4168e0:	e8 a9 e6 ff ff       	call   0x414f8e
4168e5:	59                   	pop    %ecx
4168e6:	50                   	push   %eax
4168e7:	e8 fa 0d 00 00       	call   0x4176e6
4168ec:	89 46 08             	mov    %eax,0x8(%esi)
4168ef:	83 c4 0c             	add    $0xc,%esp
4168f2:	8b 45 08             	mov    0x8(%ebp),%eax
4168f5:	8b 50 08             	mov    0x8(%eax),%edx
4168f8:	85 d2                	test   %edx,%edx
4168fa:	0f 84 b1 00 00 00    	je     0x4169b1
416900:	83 fa ff             	cmp    $0xffffffff,%edx
416903:	0f 84 a8 00 00 00    	je     0x4169b1
416909:	8b 40 0c             	mov    0xc(%eax),%eax
41690c:	90                   	nop
41690d:	a8 06                	test   $0x6,%al
41690f:	75 5f                	jne    0x416970
416911:	ff 75 08             	push   0x8(%ebp)
416914:	e8 75 e6 ff ff       	call   0x414f8e
416919:	59                   	pop    %ecx
41691a:	83 f8 ff             	cmp    $0xffffffff,%eax
41691d:	74 37                	je     0x416956
41691f:	ff 75 08             	push   0x8(%ebp)
416922:	e8 67 e6 ff ff       	call   0x414f8e
416927:	59                   	pop    %ecx
416928:	83 f8 fe             	cmp    $0xfffffffe,%eax
41692b:	74 29                	je     0x416956
41692d:	8b 75 08             	mov    0x8(%ebp),%esi
416930:	57                   	push   %edi
416931:	56                   	push   %esi
416932:	e8 57 e6 ff ff       	call   0x414f8e
416937:	8b f8                	mov    %eax,%edi
416939:	56                   	push   %esi
41693a:	c1 ff 06             	sar    $0x6,%edi
41693d:	e8 4c e6 ff ff       	call   0x414f8e
416942:	59                   	pop    %ecx
416943:	83 e0 3f             	and    $0x3f,%eax
416946:	59                   	pop    %ecx
416947:	6b c8 38             	imul   $0x38,%eax,%ecx
41694a:	8b 04 bd c0 4a 43 00 	mov    0x434ac0(,%edi,4),%eax
416951:	5f                   	pop    %edi
416952:	03 c1                	add    %ecx,%eax
416954:	eb 05                	jmp    0x41695b
416956:	b8 90 31 43 00       	mov    $0x433190,%eax
41695b:	8a 40 28             	mov    0x28(%eax),%al
41695e:	24 82                	and    $0x82,%al
416960:	3c 82                	cmp    $0x82,%al
416962:	75 0c                	jne    0x416970
416964:	8b 45 08             	mov    0x8(%ebp),%eax
416967:	6a 20                	push   $0x20
416969:	59                   	pop    %ecx
41696a:	83 c0 0c             	add    $0xc,%eax
41696d:	f0 09 08             	lock or %ecx,(%eax)
416970:	8b 45 08             	mov    0x8(%ebp),%eax
416973:	81 78 18 00 02 00 00 	cmpl   $0x200,0x18(%eax)
41697a:	75 26                	jne    0x4169a2
41697c:	8b 40 0c             	mov    0xc(%eax),%eax
41697f:	90                   	nop
416980:	c1 e8 06             	shr    $0x6,%eax
416983:	84 c3                	test   %al,%bl
416985:	74 18                	je     0x41699f
416987:	8b 45 08             	mov    0x8(%ebp),%eax
41698a:	8b 40 0c             	mov    0xc(%eax),%eax
41698d:	90                   	nop
41698e:	c1 e8 08             	shr    $0x8,%eax
416991:	84 c3                	test   %al,%bl
416993:	75 0a                	jne    0x41699f
416995:	8b 45 08             	mov    0x8(%ebp),%eax
416998:	c7 40 18 00 10 00 00 	movl   $0x1000,0x18(%eax)
41699f:	8b 45 08             	mov    0x8(%ebp),%eax
4169a2:	8b 08                	mov    (%eax),%ecx
4169a4:	ff 48 08             	decl   0x8(%eax)
4169a7:	8a 11                	mov    (%ecx),%dl
4169a9:	41                   	inc    %ecx
4169aa:	89 08                	mov    %ecx,(%eax)
4169ac:	0f b6 c2             	movzbl %dl,%eax
4169af:	eb 1e                	jmp    0x4169cf
4169b1:	33 c9                	xor    %ecx,%ecx
4169b3:	85 d2                	test   %edx,%edx
4169b5:	0f 95 c1             	setne  %cl
4169b8:	83 c0 0c             	add    $0xc,%eax
4169bb:	8d 0c cd 08 00 00 00 	lea    0x8(,%ecx,8),%ecx
4169c2:	f0 09 08             	lock or %ecx,(%eax)
4169c5:	8b 4d 08             	mov    0x8(%ebp),%ecx
4169c8:	83 61 08 00          	andl   $0x0,0x8(%ecx)
4169cc:	83 c8 ff             	or     $0xffffffff,%eax
4169cf:	5b                   	pop    %ebx
4169d0:	5e                   	pop    %esi
4169d1:	5d                   	pop    %ebp
4169d2:	c3                   	ret
4169d3:	8b ff                	mov    %edi,%edi
4169d5:	55                   	push   %ebp
4169d6:	8b ec                	mov    %esp,%ebp
4169d8:	5d                   	pop    %ebp
4169d9:	e9 6b fe ff ff       	jmp    0x416849
4169de:	6a 10                	push   $0x10
4169e0:	68 b8 18 43 00       	push   $0x4318b8
4169e5:	e8 d6 15 ff ff       	call   0x407fc0
4169ea:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4169ee:	75 17                	jne    0x416a07
4169f0:	e8 06 84 ff ff       	call   0x40edfb
4169f5:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4169fb:	e8 81 66 ff ff       	call   0x40d081
416a00:	83 ca ff             	or     $0xffffffff,%edx
416a03:	8b c2                	mov    %edx,%eax
416a05:	eb 37                	jmp    0x416a3e
416a07:	33 f6                	xor    %esi,%esi
416a09:	89 75 e0             	mov    %esi,-0x20(%ebp)
416a0c:	89 75 e4             	mov    %esi,-0x1c(%ebp)
416a0f:	ff 75 08             	push   0x8(%ebp)
416a12:	e8 6f 4d ff ff       	call   0x40b786
416a17:	59                   	pop    %ecx
416a18:	89 75 fc             	mov    %esi,-0x4(%ebp)
416a1b:	ff 75 08             	push   0x8(%ebp)
416a1e:	e8 3b 00 00 00       	call   0x416a5e
416a23:	59                   	pop    %ecx
416a24:	8b f0                	mov    %eax,%esi
416a26:	89 75 e0             	mov    %esi,-0x20(%ebp)
416a29:	8b fa                	mov    %edx,%edi
416a2b:	89 7d e4             	mov    %edi,-0x1c(%ebp)
416a2e:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
416a35:	e8 1a 00 00 00       	call   0x416a54
416a3a:	8b c6                	mov    %esi,%eax
416a3c:	8b d7                	mov    %edi,%edx
416a3e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
416a41:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
416a48:	59                   	pop    %ecx
416a49:	5f                   	pop    %edi
416a4a:	5e                   	pop    %esi
416a4b:	5b                   	pop    %ebx
416a4c:	c9                   	leave
416a4d:	c3                   	ret
416a4e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
416a51:	8b 75 e0             	mov    -0x20(%ebp),%esi
416a54:	ff 75 08             	push   0x8(%ebp)
416a57:	e8 3e 4d ff ff       	call   0x40b79a
416a5c:	59                   	pop    %ecx
416a5d:	c3                   	ret
416a5e:	8b ff                	mov    %edi,%edi
416a60:	55                   	push   %ebp
416a61:	8b ec                	mov    %esp,%ebp
416a63:	83 ec 14             	sub    $0x14,%esp
416a66:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
416a6a:	75 17                	jne    0x416a83
416a6c:	e8 8a 83 ff ff       	call   0x40edfb
416a71:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
416a77:	e8 05 66 ff ff       	call   0x40d081
416a7c:	83 c8 ff             	or     $0xffffffff,%eax
416a7f:	0b d0                	or     %eax,%edx
416a81:	c9                   	leave
416a82:	c3                   	ret
416a83:	53                   	push   %ebx
416a84:	57                   	push   %edi
416a85:	ff 75 08             	push   0x8(%ebp)
416a88:	e8 01 e5 ff ff       	call   0x414f8e
416a8d:	59                   	pop    %ecx
416a8e:	8b 4d 08             	mov    0x8(%ebp),%ecx
416a91:	33 db                	xor    %ebx,%ebx
416a93:	8b f8                	mov    %eax,%edi
416a95:	39 59 08             	cmp    %ebx,0x8(%ecx)
416a98:	7d 03                	jge    0x416a9d
416a9a:	89 59 08             	mov    %ebx,0x8(%ecx)
416a9d:	56                   	push   %esi
416a9e:	6a 01                	push   $0x1
416aa0:	53                   	push   %ebx
416aa1:	53                   	push   %ebx
416aa2:	57                   	push   %edi
416aa3:	e8 8a 12 00 00       	call   0x417d32
416aa8:	8b ca                	mov    %edx,%ecx
416aaa:	83 c4 10             	add    $0x10,%esp
416aad:	89 4d f8             	mov    %ecx,-0x8(%ebp)
416ab0:	8b f0                	mov    %eax,%esi
416ab2:	89 75 ec             	mov    %esi,-0x14(%ebp)
416ab5:	3b cb                	cmp    %ebx,%ecx
416ab7:	7f 0e                	jg     0x416ac7
416ab9:	0f 8c ca 00 00 00    	jl     0x416b89
416abf:	3b f3                	cmp    %ebx,%esi
416ac1:	0f 82 c2 00 00 00    	jb     0x416b89
416ac7:	8b 45 08             	mov    0x8(%ebp),%eax
416aca:	8b 40 0c             	mov    0xc(%eax),%eax
416acd:	90                   	nop
416ace:	a8 c0                	test   $0xc0,%al
416ad0:	75 14                	jne    0x416ae6
416ad2:	8b 45 08             	mov    0x8(%ebp),%eax
416ad5:	8b 40 08             	mov    0x8(%eax),%eax
416ad8:	99                   	cltd
416ad9:	2b f0                	sub    %eax,%esi
416adb:	8b c6                	mov    %esi,%eax
416add:	1b ca                	sbb    %edx,%ecx
416adf:	8b d1                	mov    %ecx,%edx
416ae1:	e9 f7 00 00 00       	jmp    0x416bdd
416ae6:	8b c7                	mov    %edi,%eax
416ae8:	83 e7 3f             	and    $0x3f,%edi
416aeb:	c1 f8 06             	sar    $0x6,%eax
416aee:	6b cf 38             	imul   $0x38,%edi,%ecx
416af1:	89 45 f4             	mov    %eax,-0xc(%ebp)
416af4:	8b 04 85 c0 4a 43 00 	mov    0x434ac0(,%eax,4),%eax
416afb:	89 4d f0             	mov    %ecx,-0x10(%ebp)
416afe:	8a 44 01 29          	mov    0x29(%ecx,%eax,1),%al
416b02:	8b 4d 08             	mov    0x8(%ebp),%ecx
416b05:	88 45 fc             	mov    %al,-0x4(%ebp)
416b08:	8b 01                	mov    (%ecx),%eax
416b0a:	2b 41 04             	sub    0x4(%ecx),%eax
416b0d:	8b 49 0c             	mov    0xc(%ecx),%ecx
416b10:	99                   	cltd
416b11:	8b f8                	mov    %eax,%edi
416b13:	8b da                	mov    %edx,%ebx
416b15:	90                   	nop
416b16:	f6 c1 03             	test   $0x3,%cl
416b19:	74 55                	je     0x416b70
416b1b:	80 7d fc 01          	cmpb   $0x1,-0x4(%ebp)
416b1f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
416b22:	8b 55 f0             	mov    -0x10(%ebp),%edx
416b25:	75 22                	jne    0x416b49
416b27:	8b 04 8d c0 4a 43 00 	mov    0x434ac0(,%ecx,4),%eax
416b2e:	f6 44 02 2d 02       	testb  $0x2,0x2d(%edx,%eax,1)
416b33:	74 14                	je     0x416b49
416b35:	ff 75 f8             	push   -0x8(%ebp)
416b38:	56                   	push   %esi
416b39:	ff 75 08             	push   0x8(%ebp)
416b3c:	e8 5a 02 00 00       	call   0x416d9b
416b41:	83 c4 0c             	add    $0xc,%esp
416b44:	e9 94 00 00 00       	jmp    0x416bdd
416b49:	8b 04 8d c0 4a 43 00 	mov    0x434ac0(,%ecx,4),%eax
416b50:	80 7c 02 28 00       	cmpb   $0x0,0x28(%edx,%eax,1)
416b55:	7d 39                	jge    0x416b90
416b57:	8b 75 08             	mov    0x8(%ebp),%esi
416b5a:	ff 75 fc             	push   -0x4(%ebp)
416b5d:	ff 36                	push   (%esi)
416b5f:	ff 76 04             	push   0x4(%esi)
416b62:	e8 ca 03 00 00       	call   0x416f31
416b67:	83 c4 0c             	add    $0xc,%esp
416b6a:	03 f8                	add    %eax,%edi
416b6c:	13 da                	adc    %edx,%ebx