4098c6:	f6 44 06 04 80       	testb  $0x80,0x4(%esi,%eax,1)
4098cb:	74 74                	je     0x409941
4098cd:	6a 02                	push   $0x2
4098cf:	6a 00                	push   $0x0
4098d1:	6a 00                	push   $0x0
4098d3:	ff 75 f8             	push   -0x8(%ebp)
4098d6:	e8 89 22 00 00       	call   0x40bb64
4098db:	83 c4 10             	add    $0x10,%esp
4098de:	3b 45 f0             	cmp    -0x10(%ebp),%eax
4098e1:	75 22                	jne    0x409905
4098e3:	3b 55 f4             	cmp    -0xc(%ebp),%edx
4098e6:	75 1d                	jne    0x409905
4098e8:	8b 47 08             	mov    0x8(%edi),%eax
4098eb:	8b 4d 08             	mov    0x8(%ebp),%ecx
4098ee:	03 c8                	add    %eax,%ecx
4098f0:	3b c1                	cmp    %ecx,%eax
4098f2:	73 0b                	jae    0x4098ff
4098f4:	80 38 0a             	cmpb   $0xa,(%eax)
4098f7:	75 03                	jne    0x4098fc
4098f9:	ff 45 08             	incl   0x8(%ebp)
4098fc:	40                   	inc    %eax
4098fd:	eb f1                	jmp    0x4098f0
4098ff:	f6 47 0d 20          	testb  $0x20,0xd(%edi)
409903:	eb 37                	jmp    0x40993c
409905:	6a 00                	push   $0x0
409907:	ff 75 f4             	push   -0xc(%ebp)
40990a:	ff 75 f0             	push   -0x10(%ebp)
40990d:	ff 75 f8             	push   -0x8(%ebp)
409910:	e8 4f 22 00 00       	call   0x40bb64
409915:	b8 00 02 00 00       	mov    $0x200,%eax
40991a:	83 c4 10             	add    $0x10,%esp
40991d:	39 45 08             	cmp    %eax,0x8(%ebp)
409920:	77 0d                	ja     0x40992f
409922:	8b 4f 0c             	mov    0xc(%edi),%ecx
409925:	f6 c1 08             	test   $0x8,%cl
409928:	74 05                	je     0x40992f
40992a:	f6 c5 04             	test   $0x4,%ch
40992d:	74 03                	je     0x409932
40992f:	8b 47 18             	mov    0x18(%edi),%eax
409932:	89 45 08             	mov    %eax,0x8(%ebp)
409935:	8b 03                	mov    (%ebx),%eax
409937:	f6 44 06 04 04       	testb  $0x4,0x4(%esi,%eax,1)
40993c:	74 03                	je     0x409941
40993e:	ff 45 08             	incl   0x8(%ebp)
409941:	8b 45 08             	mov    0x8(%ebp),%eax
409944:	29 45 f0             	sub    %eax,-0x10(%ebp)
409947:	83 5d f4 00          	sbbl   $0x0,-0xc(%ebp)
40994b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40994e:	33 d2                	xor    %edx,%edx
409950:	03 45 f0             	add    -0x10(%ebp),%eax
409953:	13 55 f4             	adc    -0xc(%ebp),%edx
409956:	5f                   	pop    %edi
409957:	5e                   	pop    %esi
409958:	5b                   	pop    %ebx
409959:	c9                   	leave
40995a:	c3                   	ret
40995b:	56                   	push   %esi
40995c:	8b 74 24 08          	mov    0x8(%esp),%esi
409960:	3b 35 c0 1e 41 00    	cmp    0x411ec0,%esi
409966:	73 40                	jae    0x4099a8
409968:	8b ce                	mov    %esi,%ecx
40996a:	8b c6                	mov    %esi,%eax
40996c:	c1 f9 05             	sar    $0x5,%ecx
40996f:	83 e0 1f             	and    $0x1f,%eax
409972:	8b 0c 8d c0 1d 41 00 	mov    0x411dc0(,%ecx,4),%ecx
409979:	8d 04 c0             	lea    (%eax,%eax,8),%eax
40997c:	f6 44 81 04 01       	testb  $0x1,0x4(%ecx,%eax,4)
409981:	74 25                	je     0x4099a8
409983:	57                   	push   %edi
409984:	56                   	push   %esi
409985:	e8 1b 1f 00 00       	call   0x40b8a5
40998a:	ff 74 24 18          	push   0x18(%esp)
40998e:	ff 74 24 18          	push   0x18(%esp)
409992:	56                   	push   %esi
409993:	e8 28 00 00 00       	call   0x4099c0
409998:	56                   	push   %esi
409999:	8b f8                	mov    %eax,%edi
40999b:	e8 64 1f 00 00       	call   0x40b904
4099a0:	83 c4 14             	add    $0x14,%esp
4099a3:	8b c7                	mov    %edi,%eax
4099a5:	5f                   	pop    %edi
4099a6:	5e                   	pop    %esi
4099a7:	c3                   	ret
4099a8:	e8 31 d7 ff ff       	call   0x4070de
4099ad:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4099b3:	e8 2f d7 ff ff       	call   0x4070e7
4099b8:	83 20 00             	andl   $0x0,(%eax)
4099bb:	83 c8 ff             	or     $0xffffffff,%eax
4099be:	5e                   	pop    %esi
4099bf:	c3                   	ret
4099c0:	56                   	push   %esi
4099c1:	8b 74 24 08          	mov    0x8(%esp),%esi
4099c5:	57                   	push   %edi
4099c6:	56                   	push   %esi
4099c7:	e8 97 1e 00 00       	call   0x40b863
4099cc:	83 f8 ff             	cmp    $0xffffffff,%eax
4099cf:	59                   	pop    %ecx
4099d0:	75 0d                	jne    0x4099df
4099d2:	e8 07 d7 ff ff       	call   0x4070de
4099d7:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4099dd:	eb 2d                	jmp    0x409a0c
4099df:	ff 74 24 14          	push   0x14(%esp)
4099e3:	6a 00                	push   $0x0
4099e5:	ff 74 24 18          	push   0x18(%esp)
4099e9:	50                   	push   %eax
4099ea:	ff 15 7c d0 40 00    	call   *0x40d07c
4099f0:	8b f8                	mov    %eax,%edi
4099f2:	83 ff ff             	cmp    $0xffffffff,%edi
4099f5:	75 08                	jne    0x4099ff
4099f7:	ff 15 9c d0 40 00    	call   *0x40d09c
4099fd:	eb 02                	jmp    0x409a01
4099ff:	33 c0                	xor    %eax,%eax
409a01:	85 c0                	test   %eax,%eax
409a03:	74 0c                	je     0x409a11
409a05:	50                   	push   %eax
409a06:	e8 60 d6 ff ff       	call   0x40706b
409a0b:	59                   	pop    %ecx
409a0c:	83 c8 ff             	or     $0xffffffff,%eax
409a0f:	eb 1f                	jmp    0x409a30
409a11:	8b ce                	mov    %esi,%ecx
409a13:	83 e6 1f             	and    $0x1f,%esi
409a16:	c1 f9 05             	sar    $0x5,%ecx
409a19:	8b c6                	mov    %esi,%eax
409a1b:	8b 0c 8d c0 1d 41 00 	mov    0x411dc0(,%ecx,4),%ecx
409a22:	8d 04 c0             	lea    (%eax,%eax,8),%eax
409a25:	80 64 81 04 fd       	andb   $0xfd,0x4(%ecx,%eax,4)
409a2a:	8d 44 81 04          	lea    0x4(%ecx,%eax,4),%eax
409a2e:	8b c7                	mov    %edi,%eax
409a30:	5f                   	pop    %edi
409a31:	5e                   	pop    %esi
409a32:	c3                   	ret
409a33:	55                   	push   %ebp
409a34:	8b ec                	mov    %esp,%ebp
409a36:	83 ec 0c             	sub    $0xc,%esp
409a39:	53                   	push   %ebx
409a3a:	56                   	push   %esi
409a3b:	57                   	push   %edi
409a3c:	8b 7d 08             	mov    0x8(%ebp),%edi
409a3f:	33 db                	xor    %ebx,%ebx
409a41:	8b 77 10             	mov    0x10(%edi),%esi
409a44:	39 5f 04             	cmp    %ebx,0x4(%edi)
409a47:	89 75 f4             	mov    %esi,-0xc(%ebp)
409a4a:	7d 03                	jge    0x409a4f
409a4c:	89 5f 04             	mov    %ebx,0x4(%edi)
409a4f:	6a 01                	push   $0x1
409a51:	53                   	push   %ebx
409a52:	56                   	push   %esi
409a53:	e8 03 ff ff ff       	call   0x40995b
409a58:	83 c4 0c             	add    $0xc,%esp
409a5b:	3b c3                	cmp    %ebx,%eax
409a5d:	89 45 fc             	mov    %eax,-0x4(%ebp)
409a60:	7c 5f                	jl     0x409ac1
409a62:	8b 4f 0c             	mov    0xc(%edi),%ecx
409a65:	66 f7 c1 08 01       	test   $0x108,%cx
409a6a:	75 08                	jne    0x409a74
409a6c:	2b 47 04             	sub    0x4(%edi),%eax
409a6f:	e9 1b 01 00 00       	jmp    0x409b8f
409a74:	8b 07                	mov    (%edi),%eax
409a76:	8b 57 08             	mov    0x8(%edi),%edx
409a79:	8b d8                	mov    %eax,%ebx
409a7b:	2b da                	sub    %edx,%ebx
409a7d:	f6 c1 03             	test   $0x3,%cl
409a80:	89 5d f8             	mov    %ebx,-0x8(%ebp)
409a83:	74 2c                	je     0x409ab1
409a85:	8b de                	mov    %esi,%ebx
409a87:	8b ce                	mov    %esi,%ecx
409a89:	c1 fb 05             	sar    $0x5,%ebx
409a8c:	83 e1 1f             	and    $0x1f,%ecx
409a8f:	8b 1c 9d c0 1d 41 00 	mov    0x411dc0(,%ebx,4),%ebx
409a96:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
409a99:	f6 44 8b 04 80       	testb  $0x80,0x4(%ebx,%ecx,4)
409a9e:	74 29                	je     0x409ac9
409aa0:	8b ca                	mov    %edx,%ecx
409aa2:	3b c8                	cmp    %eax,%ecx
409aa4:	73 23                	jae    0x409ac9
409aa6:	80 39 0a             	cmpb   $0xa,(%ecx)
409aa9:	75 03                	jne    0x409aae
409aab:	ff 45 f8             	incl   -0x8(%ebp)
409aae:	41                   	inc    %ecx
409aaf:	eb f1                	jmp    0x409aa2
409ab1:	f6 c1 80             	test   $0x80,%cl
409ab4:	75 13                	jne    0x409ac9
409ab6:	e8 23 d6 ff ff       	call   0x4070de
409abb:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
409ac1:	83 c8 ff             	or     $0xffffffff,%eax
409ac4:	e9 c6 00 00 00       	jmp    0x409b8f
409ac9:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
409acd:	75 08                	jne    0x409ad7
409acf:	8b 45 f8             	mov    -0x8(%ebp),%eax
409ad2:	e9 b8 00 00 00       	jmp    0x409b8f
409ad7:	f6 47 0c 01          	testb  $0x1,0xc(%edi)
409adb:	0f 84 a6 00 00 00    	je     0x409b87
409ae1:	8b 4f 04             	mov    0x4(%edi),%ecx
409ae4:	85 c9                	test   %ecx,%ecx
409ae6:	75 08                	jne    0x409af0
409ae8:	21 4d f8             	and    %ecx,-0x8(%ebp)
409aeb:	e9 97 00 00 00       	jmp    0x409b87
409af0:	2b c2                	sub    %edx,%eax
409af2:	03 c1                	add    %ecx,%eax
409af4:	89 45 08             	mov    %eax,0x8(%ebp)
409af7:	8b c6                	mov    %esi,%eax
409af9:	c1 f8 05             	sar    $0x5,%eax
409afc:	8d 1c 85 c0 1d 41 00 	lea    0x411dc0(,%eax,4),%ebx
409b03:	8b c6                	mov    %esi,%eax
409b05:	83 e0 1f             	and    $0x1f,%eax
409b08:	8d 34 c0             	lea    (%eax,%eax,8),%esi
409b0b:	8b 03                	mov    (%ebx),%eax
409b0d:	c1 e6 02             	shl    $0x2,%esi
409b10:	f6 44 06 04 80       	testb  $0x80,0x4(%esi,%eax,1)
409b15:	74 6a                	je     0x409b81
409b17:	6a 02                	push   $0x2
409b19:	6a 00                	push   $0x0
409b1b:	ff 75 f4             	push   -0xc(%ebp)
409b1e:	e8 38 fe ff ff       	call   0x40995b
409b23:	83 c4 0c             	add    $0xc,%esp
409b26:	3b 45 fc             	cmp    -0x4(%ebp),%eax
409b29:	75 1d                	jne    0x409b48
409b2b:	8b 47 08             	mov    0x8(%edi),%eax
409b2e:	8b 4d 08             	mov    0x8(%ebp),%ecx
409b31:	03 c8                	add    %eax,%ecx
409b33:	3b c1                	cmp    %ecx,%eax
409b35:	73 0b                	jae    0x409b42
409b37:	80 38 0a             	cmpb   $0xa,(%eax)
409b3a:	75 03                	jne    0x409b3f
409b3c:	ff 45 08             	incl   0x8(%ebp)
409b3f:	40                   	inc    %eax
409b40:	eb f1                	jmp    0x409b33
409b42:	f6 47 0d 20          	testb  $0x20,0xd(%edi)
409b46:	eb 34                	jmp    0x409b7c
409b48:	6a 00                	push   $0x0
409b4a:	ff 75 fc             	push   -0x4(%ebp)
409b4d:	ff 75 f4             	push   -0xc(%ebp)
409b50:	e8 06 fe ff ff       	call   0x40995b
409b55:	b8 00 02 00 00       	mov    $0x200,%eax
409b5a:	83 c4 0c             	add    $0xc,%esp
409b5d:	39 45 08             	cmp    %eax,0x8(%ebp)
409b60:	77 0d                	ja     0x409b6f
409b62:	8b 4f 0c             	mov    0xc(%edi),%ecx
409b65:	f6 c1 08             	test   $0x8,%cl
409b68:	74 05                	je     0x409b6f
409b6a:	f6 c5 04             	test   $0x4,%ch
409b6d:	74 03                	je     0x409b72
409b6f:	8b 47 18             	mov    0x18(%edi),%eax
409b72:	89 45 08             	mov    %eax,0x8(%ebp)
409b75:	8b 03                	mov    (%ebx),%eax
409b77:	f6 44 06 04 04       	testb  $0x4,0x4(%esi,%eax,1)
409b7c:	74 03                	je     0x409b81
409b7e:	ff 45 08             	incl   0x8(%ebp)
409b81:	8b 45 08             	mov    0x8(%ebp),%eax
409b84:	29 45 fc             	sub    %eax,-0x4(%ebp)
409b87:	8b 45 f8             	mov    -0x8(%ebp),%eax
409b8a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409b8d:	03 c1                	add    %ecx,%eax
409b8f:	5f                   	pop    %edi
409b90:	5e                   	pop    %esi
409b91:	5b                   	pop    %ebx
409b92:	c9                   	leave
409b93:	c3                   	ret
409b94:	55                   	push   %ebp
409b95:	8b ec                	mov    %esp,%ebp
409b97:	56                   	push   %esi
409b98:	ff 75 08             	push   0x8(%ebp)
409b9b:	e8 26 bd ff ff       	call   0x4058c6
409ba0:	ff 75 14             	push   0x14(%ebp)
409ba3:	ff 75 10             	push   0x10(%ebp)
409ba6:	ff 75 0c             	push   0xc(%ebp)
409ba9:	ff 75 08             	push   0x8(%ebp)
409bac:	e8 12 00 00 00       	call   0x409bc3
409bb1:	ff 75 08             	push   0x8(%ebp)
409bb4:	8b f0                	mov    %eax,%esi
409bb6:	e8 5d bd ff ff       	call   0x405918
409bbb:	83 c4 18             	add    $0x18,%esp
409bbe:	8b c6                	mov    %esi,%eax
409bc0:	5e                   	pop    %esi
409bc1:	5d                   	pop    %ebp
409bc2:	c3                   	ret
409bc3:	55                   	push   %ebp
409bc4:	8b ec                	mov    %esp,%ebp
409bc6:	56                   	push   %esi
409bc7:	8b 75 08             	mov    0x8(%ebp),%esi
409bca:	57                   	push   %edi
409bcb:	8b 46 0c             	mov    0xc(%esi),%eax
409bce:	a8 83                	test   $0x83,%al
409bd0:	74 70                	je     0x409c42
409bd2:	8b 7d 14             	mov    0x14(%ebp),%edi
409bd5:	85 ff                	test   %edi,%edi
409bd7:	74 0a                	je     0x409be3
409bd9:	83 ff 01             	cmp    $0x1,%edi
409bdc:	74 05                	je     0x409be3
409bde:	83 ff 02             	cmp    $0x2,%edi
409be1:	75 5f                	jne    0x409c42
409be3:	24 ef                	and    $0xef,%al
409be5:	83 ff 01             	cmp    $0x1,%edi
409be8:	89 46 0c             	mov    %eax,0xc(%esi)
409beb:	75 0f                	jne    0x409bfc
409bed:	56                   	push   %esi
409bee:	e8 d8 fb ff ff       	call   0x4097cb
409bf3:	01 45 0c             	add    %eax,0xc(%ebp)
409bf6:	59                   	pop    %ecx
409bf7:	11 55 10             	adc    %edx,0x10(%ebp)
409bfa:	33 ff                	xor    %edi,%edi
409bfc:	56                   	push   %esi
409bfd:	e8 ce c8 ff ff       	call   0x4064d0
409c02:	8b 46 0c             	mov    0xc(%esi),%eax
409c05:	59                   	pop    %ecx
409c06:	a8 80                	test   $0x80,%al
409c08:	74 07                	je     0x409c11
409c0a:	24 fc                	and    $0xfc,%al
409c0c:	89 46 0c             	mov    %eax,0xc(%esi)
409c0f:	eb 14                	jmp    0x409c25
409c11:	a8 01                	test   $0x1,%al
409c13:	74 10                	je     0x409c25
409c15:	a8 08                	test   $0x8,%al
409c17:	74 0c                	je     0x409c25
409c19:	f6 c4 04             	test   $0x4,%ah
409c1c:	75 07                	jne    0x409c25
409c1e:	c7 46 18 00 02 00 00 	movl   $0x200,0x18(%esi)
409c25:	57                   	push   %edi
409c26:	ff 75 10             	push   0x10(%ebp)
409c29:	ff 75 0c             	push   0xc(%ebp)
409c2c:	ff 76 10             	push   0x10(%esi)
409c2f:	e8 30 1f 00 00       	call   0x40bb64
409c34:	23 c2                	and    %edx,%eax
409c36:	83 c4 10             	add    $0x10,%esp
409c39:	83 f8 ff             	cmp    $0xffffffff,%eax
409c3c:	74 0f                	je     0x409c4d
409c3e:	33 c0                	xor    %eax,%eax
409c40:	eb 0e                	jmp    0x409c50
409c42:	e8 97 d4 ff ff       	call   0x4070de
409c47:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
409c4d:	83 c8 ff             	or     $0xffffffff,%eax
409c50:	5f                   	pop    %edi
409c51:	5e                   	pop    %esi
409c52:	5d                   	pop    %ebp
409c53:	c3                   	ret
409c54:	56                   	push   %esi
409c55:	8b 74 24 08          	mov    0x8(%esp),%esi
409c59:	8b 46 0c             	mov    0xc(%esi),%eax
409c5c:	a8 83                	test   $0x83,%al
409c5e:	74 1d                	je     0x409c7d
409c60:	a8 08                	test   $0x8,%al
409c62:	74 19                	je     0x409c7d
409c64:	ff 76 08             	push   0x8(%esi)
409c67:	e8 6b d2 ff ff       	call   0x406ed7
409c6c:	66 81 66 0c f7 fb    	andw   $0xfbf7,0xc(%esi)
409c72:	33 c0                	xor    %eax,%eax
409c74:	59                   	pop    %ecx
409c75:	89 06                	mov    %eax,(%esi)
409c77:	89 46 08             	mov    %eax,0x8(%esi)
409c7a:	89 46 04             	mov    %eax,0x4(%esi)