4087bd:	56                   	push   %esi
4087be:	e8 13 3b 00 00       	call   0x40c2d6
4087c3:	83 c4 0c             	add    $0xc,%esp
4087c6:	85 f6                	test   %esi,%esi
4087c8:	a3 c8 e5 41 00       	mov    %eax,0x41e5c8
4087cd:	a3 c4 e5 41 00       	mov    %eax,0x41e5c4
4087d2:	75 05                	jne    0x4087d9
4087d4:	6a 18                	push   $0x18
4087d6:	58                   	pop    %eax
4087d7:	5e                   	pop    %esi
4087d8:	c3                   	ret
4087d9:	83 26 00             	andl   $0x0,(%esi)
4087dc:	33 c0                	xor    %eax,%eax
4087de:	5e                   	pop    %esi
4087df:	c3                   	ret
4087e0:	6a 0c                	push   $0xc
4087e2:	68 38 ab 41 00       	push   $0x41ab38
4087e7:	e8 5c 4e 00 00       	call   0x40d648
4087ec:	e8 b4 50 00 00       	call   0x40d8a5
4087f1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4087f5:	ff 75 08             	push   0x8(%ebp)
4087f8:	e8 07 ff ff ff       	call   0x408704
4087fd:	59                   	pop    %ecx
4087fe:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408801:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408808:	e8 09 00 00 00       	call   0x408816
40880d:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408810:	e8 78 4e 00 00       	call   0x40d68d
408815:	c3                   	ret
408816:	e8 93 50 00 00       	call   0x40d8ae
40881b:	c3                   	ret
40881c:	ff 74 24 04          	push   0x4(%esp)
408820:	e8 bb ff ff ff       	call   0x4087e0
408825:	f7 d8                	neg    %eax
408827:	1b c0                	sbb    %eax,%eax
408829:	f7 d8                	neg    %eax
40882b:	59                   	pop    %ecx
40882c:	48                   	dec    %eax
40882d:	c3                   	ret
40882e:	b8 68 c5 41 00       	mov    $0x41c568,%eax
408833:	c3                   	ret
408834:	a1 00 f6 41 00       	mov    0x41f600,%eax
408839:	85 c0                	test   %eax,%eax
40883b:	56                   	push   %esi
40883c:	6a 14                	push   $0x14
40883e:	5e                   	pop    %esi
40883f:	75 07                	jne    0x408848
408841:	b8 00 02 00 00       	mov    $0x200,%eax
408846:	eb 06                	jmp    0x40884e
408848:	3b c6                	cmp    %esi,%eax
40884a:	7d 07                	jge    0x408853
40884c:	8b c6                	mov    %esi,%eax
40884e:	a3 00 f6 41 00       	mov    %eax,0x41f600
408853:	6a 04                	push   $0x4
408855:	50                   	push   %eax
408856:	e8 d1 0a 00 00       	call   0x40932c
40885b:	85 c0                	test   %eax,%eax
40885d:	59                   	pop    %ecx
40885e:	59                   	pop    %ecx
40885f:	a3 fc e5 41 00       	mov    %eax,0x41e5fc
408864:	75 1e                	jne    0x408884
408866:	6a 04                	push   $0x4
408868:	56                   	push   %esi
408869:	89 35 00 f6 41 00    	mov    %esi,0x41f600
40886f:	e8 b8 0a 00 00       	call   0x40932c
408874:	85 c0                	test   %eax,%eax
408876:	59                   	pop    %ecx
408877:	59                   	pop    %ecx
408878:	a3 fc e5 41 00       	mov    %eax,0x41e5fc
40887d:	75 05                	jne    0x408884
40887f:	6a 1a                	push   $0x1a
408881:	58                   	pop    %eax
408882:	5e                   	pop    %esi
408883:	c3                   	ret
408884:	33 d2                	xor    %edx,%edx
408886:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
40888b:	eb 05                	jmp    0x408892
40888d:	a1 fc e5 41 00       	mov    0x41e5fc,%eax
408892:	89 0c 02             	mov    %ecx,(%edx,%eax,1)
408895:	83 c1 20             	add    $0x20,%ecx
408898:	83 c2 04             	add    $0x4,%edx
40889b:	81 f9 e8 c7 41 00    	cmp    $0x41c7e8,%ecx
4088a1:	7c ea                	jl     0x40888d
4088a3:	6a fe                	push   $0xfffffffe
4088a5:	5e                   	pop    %esi
4088a6:	33 d2                	xor    %edx,%edx
4088a8:	b9 78 c5 41 00       	mov    $0x41c578,%ecx
4088ad:	57                   	push   %edi
4088ae:	8b fa                	mov    %edx,%edi
4088b0:	83 e7 1f             	and    $0x1f,%edi
4088b3:	6b ff 28             	imul   $0x28,%edi,%edi
4088b6:	8b c2                	mov    %edx,%eax
4088b8:	c1 f8 05             	sar    $0x5,%eax
4088bb:	8b 04 85 c0 e4 41 00 	mov    0x41e4c0(,%eax,4),%eax
4088c2:	8b 04 07             	mov    (%edi,%eax,1),%eax
4088c5:	83 f8 ff             	cmp    $0xffffffff,%eax
4088c8:	74 08                	je     0x4088d2
4088ca:	3b c6                	cmp    %esi,%eax
4088cc:	74 04                	je     0x4088d2
4088ce:	85 c0                	test   %eax,%eax
4088d0:	75 02                	jne    0x4088d4
4088d2:	89 31                	mov    %esi,(%ecx)
4088d4:	83 c1 20             	add    $0x20,%ecx
4088d7:	42                   	inc    %edx
4088d8:	81 f9 d8 c5 41 00    	cmp    $0x41c5d8,%ecx
4088de:	7c ce                	jl     0x4088ae
4088e0:	5f                   	pop    %edi
4088e1:	33 c0                	xor    %eax,%eax
4088e3:	5e                   	pop    %esi
4088e4:	c3                   	ret
4088e5:	e8 fd f5 ff ff       	call   0x407ee7
4088ea:	80 3d f0 de 41 00 00 	cmpb   $0x0,0x41def0
4088f1:	74 05                	je     0x4088f8
4088f3:	e8 28 74 00 00       	call   0x40fd20
4088f8:	ff 35 fc e5 41 00    	push   0x41e5fc
4088fe:	e8 50 db ff ff       	call   0x406453
408903:	59                   	pop    %ecx
408904:	c3                   	ret
408905:	8b 44 24 04          	mov    0x4(%esp),%eax
408909:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
40890e:	3b c1                	cmp    %ecx,%eax
408910:	72 17                	jb     0x408929
408912:	3d c8 c7 41 00       	cmp    $0x41c7c8,%eax
408917:	77 10                	ja     0x408929
408919:	2b c1                	sub    %ecx,%eax
40891b:	c1 f8 05             	sar    $0x5,%eax
40891e:	83 c0 10             	add    $0x10,%eax
408921:	50                   	push   %eax
408922:	e8 f0 41 00 00       	call   0x40cb17
408927:	59                   	pop    %ecx
408928:	c3                   	ret
408929:	83 c0 20             	add    $0x20,%eax
40892c:	50                   	push   %eax
40892d:	ff 15 88 70 41 00    	call   *0x417088
408933:	c3                   	ret
408934:	8b 44 24 04          	mov    0x4(%esp),%eax
408938:	83 f8 14             	cmp    $0x14,%eax
40893b:	7d 0b                	jge    0x408948
40893d:	83 c0 10             	add    $0x10,%eax
408940:	50                   	push   %eax
408941:	e8 d1 41 00 00       	call   0x40cb17
408946:	59                   	pop    %ecx
408947:	c3                   	ret
408948:	8b 44 24 08          	mov    0x8(%esp),%eax
40894c:	83 c0 20             	add    $0x20,%eax
40894f:	50                   	push   %eax
408950:	ff 15 88 70 41 00    	call   *0x417088
408956:	c3                   	ret
408957:	8b 44 24 04          	mov    0x4(%esp),%eax
40895b:	b9 68 c5 41 00       	mov    $0x41c568,%ecx
408960:	3b c1                	cmp    %ecx,%eax
408962:	72 17                	jb     0x40897b
408964:	3d c8 c7 41 00       	cmp    $0x41c7c8,%eax
408969:	77 10                	ja     0x40897b
40896b:	2b c1                	sub    %ecx,%eax
40896d:	c1 f8 05             	sar    $0x5,%eax
408970:	83 c0 10             	add    $0x10,%eax
408973:	50                   	push   %eax
408974:	e8 c6 40 00 00       	call   0x40ca3f
408979:	59                   	pop    %ecx
40897a:	c3                   	ret
40897b:	83 c0 20             	add    $0x20,%eax
40897e:	50                   	push   %eax
40897f:	ff 15 8c 70 41 00    	call   *0x41708c
408985:	c3                   	ret
408986:	8b 44 24 04          	mov    0x4(%esp),%eax
40898a:	83 f8 14             	cmp    $0x14,%eax
40898d:	7d 0b                	jge    0x40899a
40898f:	83 c0 10             	add    $0x10,%eax
408992:	50                   	push   %eax
408993:	e8 a7 40 00 00       	call   0x40ca3f
408998:	59                   	pop    %ecx
408999:	c3                   	ret
40899a:	8b 44 24 08          	mov    0x8(%esp),%eax
40899e:	83 c0 20             	add    $0x20,%eax
4089a1:	50                   	push   %eax
4089a2:	ff 15 8c 70 41 00    	call   *0x41708c
4089a8:	c3                   	ret
4089a9:	8b 44 24 04          	mov    0x4(%esp),%eax
4089ad:	85 c0                	test   %eax,%eax
4089af:	74 12                	je     0x4089c3
4089b1:	83 e8 08             	sub    $0x8,%eax
4089b4:	81 38 dd dd 00 00    	cmpl   $0xdddd,(%eax)
4089ba:	75 07                	jne    0x4089c3
4089bc:	50                   	push   %eax
4089bd:	e8 91 da ff ff       	call   0x406453
4089c2:	59                   	pop    %ecx
4089c3:	c3                   	ret
4089c4:	8b 44 24 04          	mov    0x4(%esp),%eax
4089c8:	85 c0                	test   %eax,%eax
4089ca:	56                   	push   %esi
4089cb:	8b f1                	mov    %ecx,%esi
4089cd:	c6 46 0c 00          	movb   $0x0,0xc(%esi)
4089d1:	75 63                	jne    0x408a36
4089d3:	e8 74 3b 00 00       	call   0x40c54c
4089d8:	89 46 08             	mov    %eax,0x8(%esi)
4089db:	8b 48 6c             	mov    0x6c(%eax),%ecx
4089de:	89 0e                	mov    %ecx,(%esi)
4089e0:	8b 48 68             	mov    0x68(%eax),%ecx
4089e3:	89 4e 04             	mov    %ecx,0x4(%esi)
4089e6:	8b 0e                	mov    (%esi),%ecx
4089e8:	3b 0d 20 d2 41 00    	cmp    0x41d220,%ecx
4089ee:	74 12                	je     0x408a02
4089f0:	8b 0d 38 d1 41 00    	mov    0x41d138,%ecx
4089f6:	85 48 70             	test   %ecx,0x70(%eax)
4089f9:	75 07                	jne    0x408a02
4089fb:	e8 f2 0c 00 00       	call   0x4096f2
408a00:	89 06                	mov    %eax,(%esi)
408a02:	8b 46 04             	mov    0x4(%esi),%eax
408a05:	3b 05 40 d0 41 00    	cmp    0x41d040,%eax
408a0b:	74 16                	je     0x408a23
408a0d:	8b 46 08             	mov    0x8(%esi),%eax
408a10:	8b 0d 38 d1 41 00    	mov    0x41d138,%ecx
408a16:	85 48 70             	test   %ecx,0x70(%eax)
408a19:	75 08                	jne    0x408a23
408a1b:	e8 ad 75 00 00       	call   0x40ffcd
408a20:	89 46 04             	mov    %eax,0x4(%esi)
408a23:	8b 46 08             	mov    0x8(%esi),%eax
408a26:	f6 40 70 02          	testb  $0x2,0x70(%eax)
408a2a:	75 14                	jne    0x408a40
408a2c:	83 48 70 02          	orl    $0x2,0x70(%eax)
408a30:	c6 46 0c 01          	movb   $0x1,0xc(%esi)
408a34:	eb 0a                	jmp    0x408a40
408a36:	8b 08                	mov    (%eax),%ecx
408a38:	89 0e                	mov    %ecx,(%esi)
408a3a:	8b 40 04             	mov    0x4(%eax),%eax
408a3d:	89 46 04             	mov    %eax,0x4(%esi)
408a40:	8b c6                	mov    %esi,%eax
408a42:	5e                   	pop    %esi
408a43:	c2 04 00             	ret    $0x4
408a46:	55                   	push   %ebp
408a47:	8b ec                	mov    %esp,%ebp
408a49:	83 ec 14             	sub    $0x14,%esp
408a4c:	a1 20 c5 41 00       	mov    0x41c520,%eax
408a51:	33 c5                	xor    %ebp,%eax
408a53:	89 45 fc             	mov    %eax,-0x4(%ebp)
408a56:	53                   	push   %ebx
408a57:	56                   	push   %esi
408a58:	33 db                	xor    %ebx,%ebx
408a5a:	39 1d fc d9 41 00    	cmp    %ebx,0x41d9fc
408a60:	57                   	push   %edi
408a61:	8b f1                	mov    %ecx,%esi
408a63:	75 38                	jne    0x408a9d
408a65:	53                   	push   %ebx
408a66:	53                   	push   %ebx
408a67:	33 ff                	xor    %edi,%edi
408a69:	47                   	inc    %edi
408a6a:	57                   	push   %edi
408a6b:	68 88 76 41 00       	push   $0x417688
408a70:	68 00 01 00 00       	push   $0x100
408a75:	53                   	push   %ebx
408a76:	ff 15 dc 70 41 00    	call   *0x4170dc
408a7c:	85 c0                	test   %eax,%eax
408a7e:	74 08                	je     0x408a88
408a80:	89 3d fc d9 41 00    	mov    %edi,0x41d9fc
408a86:	eb 15                	jmp    0x408a9d
408a88:	ff 15 b0 70 41 00    	call   *0x4170b0
408a8e:	83 f8 78             	cmp    $0x78,%eax
408a91:	75 0a                	jne    0x408a9d
408a93:	c7 05 fc d9 41 00 02 	movl   $0x2,0x41d9fc
408a9a:	00 00 00
408a9d:	39 5d 14             	cmp    %ebx,0x14(%ebp)
408aa0:	7e 22                	jle    0x408ac4
408aa2:	8b 4d 14             	mov    0x14(%ebp),%ecx
408aa5:	8b 45 10             	mov    0x10(%ebp),%eax
408aa8:	49                   	dec    %ecx
408aa9:	38 18                	cmp    %bl,(%eax)
408aab:	74 08                	je     0x408ab5
408aad:	40                   	inc    %eax
408aae:	3b cb                	cmp    %ebx,%ecx
408ab0:	75 f6                	jne    0x408aa8
408ab2:	83 c9 ff             	or     $0xffffffff,%ecx
408ab5:	8b 45 14             	mov    0x14(%ebp),%eax
408ab8:	2b c1                	sub    %ecx,%eax
408aba:	48                   	dec    %eax
408abb:	3b 45 14             	cmp    0x14(%ebp),%eax
408abe:	7d 01                	jge    0x408ac1
408ac0:	40                   	inc    %eax
408ac1:	89 45 14             	mov    %eax,0x14(%ebp)
408ac4:	a1 fc d9 41 00       	mov    0x41d9fc,%eax
408ac9:	83 f8 02             	cmp    $0x2,%eax
408acc:	0f 84 ab 01 00 00    	je     0x408c7d
408ad2:	3b c3                	cmp    %ebx,%eax
408ad4:	0f 84 a3 01 00 00    	je     0x408c7d
408ada:	83 f8 01             	cmp    $0x1,%eax
408add:	0f 85 cb 01 00 00    	jne    0x408cae
408ae3:	39 5d 20             	cmp    %ebx,0x20(%ebp)
408ae6:	89 5d f8             	mov    %ebx,-0x8(%ebp)
408ae9:	75 08                	jne    0x408af3
408aeb:	8b 06                	mov    (%esi),%eax
408aed:	8b 40 04             	mov    0x4(%eax),%eax
408af0:	89 45 20             	mov    %eax,0x20(%ebp)
408af3:	8b 35 a0 70 41 00    	mov    0x4170a0,%esi
408af9:	33 c0                	xor    %eax,%eax
408afb:	39 5d 24             	cmp    %ebx,0x24(%ebp)
408afe:	53                   	push   %ebx
408aff:	53                   	push   %ebx
408b00:	ff 75 14             	push   0x14(%ebp)
408b03:	0f 95 c0             	setne  %al
408b06:	ff 75 10             	push   0x10(%ebp)
408b09:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
408b10:	50                   	push   %eax
408b11:	ff 75 20             	push   0x20(%ebp)
408b14:	ff d6                	call   *%esi
408b16:	8b f8                	mov    %eax,%edi
408b18:	3b fb                	cmp    %ebx,%edi
408b1a:	0f 84 8e 01 00 00    	je     0x408cae
408b20:	7e 43                	jle    0x408b65
408b22:	6a e0                	push   $0xffffffe0
408b24:	33 d2                	xor    %edx,%edx
408b26:	58                   	pop    %eax
408b27:	f7 f7                	div    %edi
408b29:	83 f8 02             	cmp    $0x2,%eax
408b2c:	72 37                	jb     0x408b65
408b2e:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
408b32:	3d 00 04 00 00       	cmp    $0x400,%eax
408b37:	77 13                	ja     0x408b4c
408b39:	e8 12 7b 00 00       	call   0x410650
408b3e:	8b c4                	mov    %esp,%eax
408b40:	3b c3                	cmp    %ebx,%eax
408b42:	74 1c                	je     0x408b60
408b44:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
408b4a:	eb 11                	jmp    0x408b5d
408b4c:	50                   	push   %eax
408b4d:	e8 fd 21 00 00       	call   0x40ad4f
408b52:	3b c3                	cmp    %ebx,%eax
408b54:	59                   	pop    %ecx
408b55:	74 09                	je     0x408b60
408b57:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
408b5d:	83 c0 08             	add    $0x8,%eax
408b60:	89 45 f4             	mov    %eax,-0xc(%ebp)
408b63:	eb 03                	jmp    0x408b68
408b65:	89 5d f4             	mov    %ebx,-0xc(%ebp)
408b68:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
408b6b:	0f 84 3d 01 00 00    	je     0x408cae
408b71:	57                   	push   %edi
408b72:	ff 75 f4             	push   -0xc(%ebp)
408b75:	ff 75 14             	push   0x14(%ebp)
408b78:	ff 75 10             	push   0x10(%ebp)
408b7b:	6a 01                	push   $0x1
408b7d:	ff 75 20             	push   0x20(%ebp)
408b80:	ff d6                	call   *%esi
408b82:	85 c0                	test   %eax,%eax
408b84:	0f 84 e2 00 00 00    	je     0x408c6c
408b8a:	8b 35 dc 70 41 00    	mov    0x4170dc,%esi
408b90:	53                   	push   %ebx
408b91:	53                   	push   %ebx
408b92:	57                   	push   %edi
408b93:	ff 75 f4             	push   -0xc(%ebp)
408b96:	ff 75 0c             	push   0xc(%ebp)