403b55:	8a c1                	mov    %cl,%al
403b57:	c3                   	ret
403b58:	56                   	push   %esi
403b59:	8b f1                	mov    %ecx,%esi
403b5b:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
403b5f:	74 22                	je     0x403b83
403b61:	8b 06                	mov    (%esi),%eax
403b63:	68 ff ff 00 00       	push   $0xffff
403b68:	ff 50 04             	call   *0x4(%eax)
403b6b:	66 3d ff ff          	cmp    $0xffff,%ax
403b6f:	74 12                	je     0x403b83
403b71:	ff 76 4c             	push   0x4c(%esi)
403b74:	e8 1b 43 00 00       	call   0x407e94
403b79:	85 c0                	test   %eax,%eax
403b7b:	59                   	pop    %ecx
403b7c:	7d 05                	jge    0x403b83
403b7e:	83 c8 ff             	or     $0xffffffff,%eax
403b81:	5e                   	pop    %esi
403b82:	c3                   	ret
403b83:	33 c0                	xor    %eax,%eax
403b85:	5e                   	pop    %esi
403b86:	c3                   	ret
403b87:	55                   	push   %ebp
403b88:	8b ec                	mov    %esp,%ebp
403b8a:	56                   	push   %esi
403b8b:	8b f1                	mov    %ecx,%esi
403b8d:	8b 46 20             	mov    0x20(%esi),%eax
403b90:	8b 00                	mov    (%eax),%eax
403b92:	85 c0                	test   %eax,%eax
403b94:	57                   	push   %edi
403b95:	66 8b 7d 08          	mov    0x8(%ebp),%di
403b99:	74 2f                	je     0x403bca
403b9b:	8b 4e 10             	mov    0x10(%esi),%ecx
403b9e:	39 01                	cmp    %eax,(%ecx)
403ba0:	73 28                	jae    0x403bca
403ba2:	66 81 ff ff ff       	cmp    $0xffff,%di
403ba7:	74 06                	je     0x403baf
403ba9:	66 39 78 fe          	cmp    %di,-0x2(%eax)
403bad:	75 1b                	jne    0x403bca
403baf:	8b 46 30             	mov    0x30(%esi),%eax
403bb2:	ff 00                	incl   (%eax)
403bb4:	8b 76 20             	mov    0x20(%esi),%esi
403bb7:	83 06 fe             	addl   $0xfffffffe,(%esi)
403bba:	66 81 ff ff ff       	cmp    $0xffff,%di
403bbf:	74 05                	je     0x403bc6
403bc1:	0f b7 c7             	movzwl %di,%eax
403bc4:	eb 5e                	jmp    0x403c24
403bc6:	33 c0                	xor    %eax,%eax
403bc8:	eb 5a                	jmp    0x403c24
403bca:	8b 46 4c             	mov    0x4c(%esi),%eax
403bcd:	85 c0                	test   %eax,%eax
403bcf:	74 4f                	je     0x403c20
403bd1:	66 81 ff ff ff       	cmp    $0xffff,%di
403bd6:	74 48                	je     0x403c20
403bd8:	83 7e 3c 00          	cmpl   $0x0,0x3c(%esi)
403bdc:	75 1b                	jne    0x403bf9
403bde:	50                   	push   %eax
403bdf:	0f b7 cf             	movzwl %di,%ecx
403be2:	8d 45 08             	lea    0x8(%ebp),%eax
403be5:	50                   	push   %eax
403be6:	89 4d 08             	mov    %ecx,0x8(%ebp)
403be9:	e8 4b ff ff ff       	call   0x403b39
403bee:	84 c0                	test   %al,%al
403bf0:	59                   	pop    %ecx
403bf1:	59                   	pop    %ecx
403bf2:	74 05                	je     0x403bf9
403bf4:	66 8b c7             	mov    %di,%ax
403bf7:	eb 2b                	jmp    0x403c24
403bf9:	8b 4e 20             	mov    0x20(%esi),%ecx
403bfc:	8d 46 40             	lea    0x40(%esi),%eax
403bff:	39 01                	cmp    %eax,(%ecx)
403c01:	74 1d                	je     0x403c20
403c03:	8b 4e 10             	mov    0x10(%esi),%ecx
403c06:	66 89 38             	mov    %di,(%eax)
403c09:	89 01                	mov    %eax,(%ecx)
403c0b:	8b 4e 20             	mov    0x20(%esi),%ecx
403c0e:	89 01                	mov    %eax,(%ecx)
403c10:	8b ce                	mov    %esi,%ecx
403c12:	2b c8                	sub    %eax,%ecx
403c14:	8b 46 30             	mov    0x30(%esi),%eax
403c17:	83 c1 42             	add    $0x42,%ecx
403c1a:	d1 f9                	sar    $1,%ecx
403c1c:	89 08                	mov    %ecx,(%eax)
403c1e:	eb d4                	jmp    0x403bf4
403c20:	66 0d ff ff          	or     $0xffff,%ax
403c24:	5f                   	pop    %edi
403c25:	5e                   	pop    %esi
403c26:	5d                   	pop    %ebp
403c27:	c2 04 00             	ret    $0x4
403c2a:	56                   	push   %esi
403c2b:	8b f1                	mov    %ecx,%esi
403c2d:	8b 46 20             	mov    0x20(%esi),%eax
403c30:	8b 08                	mov    (%eax),%ecx
403c32:	85 c9                	test   %ecx,%ecx
403c34:	74 13                	je     0x403c49
403c36:	8b 56 30             	mov    0x30(%esi),%edx
403c39:	8b 00                	mov    (%eax),%eax
403c3b:	8b 12                	mov    (%edx),%edx
403c3d:	8d 14 50             	lea    (%eax,%edx,2),%edx
403c40:	3b c2                	cmp    %edx,%eax
403c42:	73 05                	jae    0x403c49
403c44:	66 8b 01             	mov    (%ecx),%ax
403c47:	5e                   	pop    %esi
403c48:	c3                   	ret
403c49:	8b 06                	mov    (%esi),%eax
403c4b:	57                   	push   %edi
403c4c:	8b ce                	mov    %esi,%ecx
403c4e:	ff 50 14             	call   *0x14(%eax)
403c51:	0f b7 f8             	movzwl %ax,%edi
403c54:	b8 ff ff 00 00       	mov    $0xffff,%eax
403c59:	66 3b f8             	cmp    %ax,%di
403c5c:	74 0b                	je     0x403c69
403c5e:	8b 06                	mov    (%esi),%eax
403c60:	57                   	push   %edi
403c61:	8b ce                	mov    %esi,%ecx
403c63:	ff 50 08             	call   *0x8(%eax)
403c66:	66 8b c7             	mov    %di,%ax
403c69:	5f                   	pop    %edi
403c6a:	5e                   	pop    %esi
403c6b:	c3                   	ret
403c6c:	56                   	push   %esi
403c6d:	57                   	push   %edi
403c6e:	8b 7c 24 0c          	mov    0xc(%esp),%edi
403c72:	8b 07                	mov    (%edi),%eax
403c74:	8b f1                	mov    %ecx,%esi
403c76:	8b cf                	mov    %edi,%ecx
403c78:	ff 50 04             	call   *0x4(%eax)
403c7b:	84 c0                	test   %al,%al
403c7d:	74 06                	je     0x403c85
403c7f:	83 66 3c 00          	andl   $0x0,0x3c(%esi)
403c83:	eb 0a                	jmp    0x403c8f
403c85:	8b ce                	mov    %esi,%ecx
403c87:	89 7e 3c             	mov    %edi,0x3c(%esi)
403c8a:	e8 21 fc ff ff       	call   0x4038b0
403c8f:	5f                   	pop    %edi
403c90:	5e                   	pop    %esi
403c91:	c2 04 00             	ret    $0x4
403c94:	56                   	push   %esi
403c95:	8b f1                	mov    %ecx,%esi
403c97:	8b 4e 4c             	mov    0x4c(%esi),%ecx
403c9a:	33 d2                	xor    %edx,%edx
403c9c:	3b ca                	cmp    %edx,%ecx
403c9e:	74 36                	je     0x403cd6
403ca0:	39 54 24 08          	cmp    %edx,0x8(%esp)
403ca4:	8b 44 24 0c          	mov    0xc(%esp),%eax
403ca8:	75 07                	jne    0x403cb1
403caa:	3b c2                	cmp    %edx,%eax
403cac:	75 03                	jne    0x403cb1
403cae:	6a 04                	push   $0x4
403cb0:	5a                   	pop    %edx
403cb1:	03 c0                	add    %eax,%eax
403cb3:	50                   	push   %eax
403cb4:	52                   	push   %edx
403cb5:	ff 74 24 10          	push   0x10(%esp)
403cb9:	51                   	push   %ecx
403cba:	e8 31 42 00 00       	call   0x407ef0
403cbf:	83 c4 10             	add    $0x10,%esp
403cc2:	85 c0                	test   %eax,%eax
403cc4:	75 10                	jne    0x403cd6
403cc6:	6a 01                	push   $0x1
403cc8:	ff 76 4c             	push   0x4c(%esi)
403ccb:	8b ce                	mov    %esi,%ecx
403ccd:	e8 c1 fd ff ff       	call   0x403a93
403cd2:	8b c6                	mov    %esi,%eax
403cd4:	eb 02                	jmp    0x403cd8
403cd6:	33 c0                	xor    %eax,%eax
403cd8:	5e                   	pop    %esi
403cd9:	c2 08 00             	ret    $0x8
403cdc:	83 79 18 10          	cmpl   $0x10,0x18(%ecx)
403ce0:	72 05                	jb     0x403ce7
403ce2:	8b 41 04             	mov    0x4(%ecx),%eax
403ce5:	eb 03                	jmp    0x403cea
403ce7:	8d 41 04             	lea    0x4(%ecx),%eax
403cea:	51                   	push   %ecx
403ceb:	8b 4c 24 08          	mov    0x8(%esp),%ecx
403cef:	50                   	push   %eax
403cf0:	e8 fd fb ff ff       	call   0x4038f2
403cf5:	8b 44 24 04          	mov    0x4(%esp),%eax
403cf9:	c2 04 00             	ret    $0x4
403cfc:	6a 04                	push   $0x4
403cfe:	b8 69 5c 41 00       	mov    $0x415c69,%eax
403d03:	e8 e3 2a 00 00       	call   0x4067eb
403d08:	8b f1                	mov    %ecx,%esi
403d0a:	89 75 f0             	mov    %esi,-0x10(%ebp)
403d0d:	56                   	push   %esi
403d0e:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%ebp)
403d15:	e8 f1 13 00 00       	call   0x40510b
403d1a:	59                   	pop    %ecx
403d1b:	6a 00                	push   $0x0
403d1d:	6a 01                	push   $0x1
403d1f:	8d 4e 58             	lea    0x58(%esi),%ecx
403d22:	e8 b9 e0 ff ff       	call   0x401de0
403d27:	6a 00                	push   $0x0
403d29:	6a 01                	push   $0x1
403d2b:	8d 4e 3c             	lea    0x3c(%esi),%ecx
403d2e:	e8 ad e0 ff ff       	call   0x401de0
403d33:	6a 00                	push   $0x0
403d35:	6a 01                	push   $0x1
403d37:	8d 4e 20             	lea    0x20(%esi),%ecx
403d3a:	e8 a1 e0 ff ff       	call   0x401de0
403d3f:	6a 00                	push   $0x0
403d41:	6a 01                	push   $0x1
403d43:	8d 4e 04             	lea    0x4(%esi),%ecx
403d46:	e8 95 e0 ff ff       	call   0x401de0
403d4b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
403d4f:	8b ce                	mov    %esi,%ecx
403d51:	e8 41 12 00 00       	call   0x404f97
403d56:	e8 2f 2b 00 00       	call   0x40688a
403d5b:	c3                   	ret
403d5c:	53                   	push   %ebx
403d5d:	8b 5c 24 08          	mov    0x8(%esp),%ebx
403d61:	57                   	push   %edi
403d62:	83 c8 ff             	or     $0xffffffff,%eax
403d65:	8b f9                	mov    %ecx,%edi
403d67:	2b 47 14             	sub    0x14(%edi),%eax
403d6a:	3b c3                	cmp    %ebx,%eax
403d6c:	77 05                	ja     0x403d73
403d6e:	e8 4f f6 ff ff       	call   0x4033c2
403d73:	85 db                	test   %ebx,%ebx
403d75:	76 2c                	jbe    0x403da3
403d77:	56                   	push   %esi
403d78:	8b 77 14             	mov    0x14(%edi),%esi
403d7b:	6a 00                	push   $0x0
403d7d:	03 f3                	add    %ebx,%esi
403d7f:	56                   	push   %esi
403d80:	8b cf                	mov    %edi,%ecx
403d82:	e8 b9 e2 ff ff       	call   0x402040
403d87:	84 c0                	test   %al,%al
403d89:	74 17                	je     0x403da2
403d8b:	ff 74 24 14          	push   0x14(%esp)
403d8f:	8b cf                	mov    %edi,%ecx
403d91:	53                   	push   %ebx
403d92:	ff 77 14             	push   0x14(%edi)
403d95:	e8 ce fa ff ff       	call   0x403868
403d9a:	56                   	push   %esi
403d9b:	8b cf                	mov    %edi,%ecx
403d9d:	e8 de de ff ff       	call   0x401c80
403da2:	5e                   	pop    %esi
403da3:	8b c7                	mov    %edi,%eax
403da5:	5f                   	pop    %edi
403da6:	5b                   	pop    %ebx
403da7:	c2 08 00             	ret    $0x8
403daa:	56                   	push   %esi
403dab:	57                   	push   %edi
403dac:	8b 7c 24 0c          	mov    0xc(%esp),%edi
403db0:	83 ff ff             	cmp    $0xffffffff,%edi
403db3:	8b f1                	mov    %ecx,%esi
403db5:	75 05                	jne    0x403dbc
403db7:	e8 06 f6 ff ff       	call   0x4033c2
403dbc:	6a 00                	push   $0x0
403dbe:	57                   	push   %edi
403dbf:	8b ce                	mov    %esi,%ecx
403dc1:	e8 7a e2 ff ff       	call   0x402040
403dc6:	84 c0                	test   %al,%al
403dc8:	74 16                	je     0x403de0
403dca:	ff 74 24 10          	push   0x10(%esp)
403dce:	8b ce                	mov    %esi,%ecx
403dd0:	57                   	push   %edi
403dd1:	6a 00                	push   $0x0
403dd3:	e8 90 fa ff ff       	call   0x403868
403dd8:	57                   	push   %edi
403dd9:	8b ce                	mov    %esi,%ecx
403ddb:	e8 a0 de ff ff       	call   0x401c80
403de0:	5f                   	pop    %edi
403de1:	8b c6                	mov    %esi,%eax
403de3:	5e                   	pop    %esi
403de4:	c2 08 00             	ret    $0x8
403de7:	6a 58                	push   $0x58
403de9:	b8 8c 5c 41 00       	mov    $0x415c8c,%eax
403dee:	e8 61 2a 00 00       	call   0x406854
403df3:	8b f1                	mov    %ecx,%esi
403df5:	8b 46 20             	mov    0x20(%esi),%eax
403df8:	8b 00                	mov    (%eax),%eax
403dfa:	33 ff                	xor    %edi,%edi
403dfc:	3b c7                	cmp    %edi,%eax
403dfe:	74 29                	je     0x403e29
403e00:	8b 46 20             	mov    0x20(%esi),%eax
403e03:	8b 4e 30             	mov    0x30(%esi),%ecx
403e06:	8b 00                	mov    (%eax),%eax
403e08:	8b 09                	mov    (%ecx),%ecx
403e0a:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
403e0d:	3b c1                	cmp    %ecx,%eax
403e0f:	73 18                	jae    0x403e29
403e11:	8b 46 30             	mov    0x30(%esi),%eax
403e14:	ff 08                	decl   (%eax)
403e16:	8b 76 20             	mov    0x20(%esi),%esi
403e19:	8b 06                	mov    (%esi),%eax
403e1b:	8d 48 02             	lea    0x2(%eax),%ecx
403e1e:	89 0e                	mov    %ecx,(%esi)
403e20:	66 8b 00             	mov    (%eax),%ax
403e23:	e8 76 2a 00 00       	call   0x40689e
403e28:	c3                   	ret
403e29:	8b 46 4c             	mov    0x4c(%esi),%eax
403e2c:	3b c7                	cmp    %edi,%eax
403e2e:	75 06                	jne    0x403e36
403e30:	66 0d ff ff          	or     $0xffff,%ax
403e34:	eb ed                	jmp    0x403e23
403e36:	39 7e 3c             	cmp    %edi,0x3c(%esi)
403e39:	75 1b                	jne    0x403e56
403e3b:	50                   	push   %eax
403e3c:	8d 45 d0             	lea    -0x30(%ebp),%eax
403e3f:	50                   	push   %eax
403e40:	e8 b9 fc ff ff       	call   0x403afe
403e45:	59                   	pop    %ecx
403e46:	84 c0                	test   %al,%al
403e48:	0f b7 45 d0          	movzwl -0x30(%ebp),%eax
403e4c:	59                   	pop    %ecx
403e4d:	75 d4                	jne    0x403e23
403e4f:	b8 ff ff 00 00       	mov    $0xffff,%eax
403e54:	eb cd                	jmp    0x403e23
403e56:	57                   	push   %edi
403e57:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403e5a:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
403e61:	e8 1a de ff ff       	call   0x401c80
403e66:	89 7d fc             	mov    %edi,-0x4(%ebp)
403e69:	e9 c7 00 00 00       	jmp    0x403f35
403e6e:	50                   	push   %eax
403e6f:	6a 01                	push   $0x1
403e71:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403e74:	e8 e3 fe ff ff       	call   0x403d5c
403e79:	8d 45 bc             	lea    -0x44(%ebp),%eax
403e7c:	50                   	push   %eax
403e7d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403e80:	e8 57 fe ff ff       	call   0x403cdc
403e85:	8b c8                	mov    %eax,%ecx
403e87:	e8 0f f8 ff ff       	call   0x40369b
403e8c:	8b 7d e8             	mov    -0x18(%ebp),%edi
403e8f:	8b d8                	mov    %eax,%ebx
403e91:	8d 45 9c             	lea    -0x64(%ebp),%eax
403e94:	50                   	push   %eax
403e95:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403e98:	e8 3f fe ff ff       	call   0x403cdc
403e9d:	8b c8                	mov    %eax,%ecx
403e9f:	e8 f7 f7 ff ff       	call   0x40369b
403ea4:	8b 4e 3c             	mov    0x3c(%esi),%ecx
403ea7:	8b 11                	mov    (%ecx),%edx
403ea9:	89 45 c8             	mov    %eax,-0x38(%ebp)
403eac:	8d 45 c4             	lea    -0x3c(%ebp),%eax
403eaf:	50                   	push   %eax
403eb0:	8d 45 d2             	lea    -0x2e(%ebp),%eax
403eb3:	50                   	push   %eax
403eb4:	8d 45 d0             	lea    -0x30(%ebp),%eax
403eb7:	50                   	push   %eax
403eb8:	8d 45 cc             	lea    -0x34(%ebp),%eax
403ebb:	50                   	push   %eax
403ebc:	03 fb                	add    %ebx,%edi
403ebe:	57                   	push   %edi
403ebf:	ff 75 c8             	push   -0x38(%ebp)
403ec2:	8d 46 44             	lea    0x44(%esi),%eax
403ec5:	50                   	push   %eax