403b54:	8b ec                	mov    %esp,%ebp
403b56:	53                   	push   %ebx
403b57:	8b 5d 08             	mov    0x8(%ebp),%ebx
403b5a:	56                   	push   %esi
403b5b:	8b f1                	mov    %ecx,%esi
403b5d:	8b 46 1c             	mov    0x1c(%esi),%eax
403b60:	8b 08                	mov    (%eax),%ecx
403b62:	85 c9                	test   %ecx,%ecx
403b64:	74 29                	je     0x403b8f
403b66:	8b 46 0c             	mov    0xc(%esi),%eax
403b69:	39 08                	cmp    %ecx,(%eax)
403b6b:	73 22                	jae    0x403b8f
403b6d:	83 fb ff             	cmp    $0xffffffff,%ebx
403b70:	74 08                	je     0x403b7a
403b72:	0f b6 41 ff          	movzbl -0x1(%ecx),%eax
403b76:	3b c3                	cmp    %ebx,%eax
403b78:	75 15                	jne    0x403b8f
403b7a:	8b 46 2c             	mov    0x2c(%esi),%eax
403b7d:	ff 00                	incl   (%eax)
403b7f:	8b 46 1c             	mov    0x1c(%esi),%eax
403b82:	ff 08                	decl   (%eax)
403b84:	8d 43 01             	lea    0x1(%ebx),%eax
403b87:	f7 d8                	neg    %eax
403b89:	1b c0                	sbb    %eax,%eax
403b8b:	23 c3                	and    %ebx,%eax
403b8d:	eb 42                	jmp    0x403bd1
403b8f:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
403b93:	74 39                	je     0x403bce
403b95:	83 fb ff             	cmp    $0xffffffff,%ebx
403b98:	74 34                	je     0x403bce
403b9a:	83 7e 40 00          	cmpl   $0x0,0x40(%esi)
403b9e:	75 19                	jne    0x403bb9
403ba0:	ff 76 50             	push   0x50(%esi)
403ba3:	8d 45 0b             	lea    0xb(%ebp),%eax
403ba6:	50                   	push   %eax
403ba7:	88 5d 0b             	mov    %bl,0xb(%ebp)
403baa:	e8 43 f9 ff ff       	call   0x4034f2
403baf:	59                   	pop    %ecx
403bb0:	59                   	pop    %ecx
403bb1:	84 c0                	test   %al,%al
403bb3:	74 04                	je     0x403bb9
403bb5:	8b c3                	mov    %ebx,%eax
403bb7:	eb 18                	jmp    0x403bd1
403bb9:	8b 46 1c             	mov    0x1c(%esi),%eax
403bbc:	8d 4e 44             	lea    0x44(%esi),%ecx
403bbf:	39 08                	cmp    %ecx,(%eax)
403bc1:	74 0b                	je     0x403bce
403bc3:	88 19                	mov    %bl,(%ecx)
403bc5:	8b ce                	mov    %esi,%ecx
403bc7:	e8 9b fc ff ff       	call   0x403867
403bcc:	eb e7                	jmp    0x403bb5
403bce:	83 c8 ff             	or     $0xffffffff,%eax
403bd1:	5e                   	pop    %esi
403bd2:	5b                   	pop    %ebx
403bd3:	5d                   	pop    %ebp
403bd4:	c2 04 00             	ret    $0x4
403bd7:	55                   	push   %ebp
403bd8:	8b ec                	mov    %esp,%ebp
403bda:	53                   	push   %ebx
403bdb:	56                   	push   %esi
403bdc:	8b f1                	mov    %ecx,%esi
403bde:	57                   	push   %edi
403bdf:	8b 56 1c             	mov    0x1c(%esi),%edx
403be2:	8d 46 44             	lea    0x44(%esi),%eax
403be5:	39 02                	cmp    %eax,(%edx)
403be7:	75 1a                	jne    0x403c03
403be9:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
403bed:	75 14                	jne    0x403c03
403bef:	83 7e 40 00          	cmpl   $0x0,0x40(%esi)
403bf3:	75 0e                	jne    0x403c03
403bf5:	8b 7d 0c             	mov    0xc(%ebp),%edi
403bf8:	8b 5d 10             	mov    0x10(%ebp),%ebx
403bfb:	83 c7 ff             	add    $0xffffffff,%edi
403bfe:	83 d3 ff             	adc    $0xffffffff,%ebx
403c01:	eb 06                	jmp    0x403c09
403c03:	8b 5d 10             	mov    0x10(%ebp),%ebx
403c06:	8b 7d 0c             	mov    0xc(%ebp),%edi
403c09:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
403c0d:	74 5d                	je     0x403c6c
403c0f:	e8 36 fa ff ff       	call   0x40364a
403c14:	84 c0                	test   %al,%al
403c16:	74 54                	je     0x403c6c
403c18:	8b c7                	mov    %edi,%eax
403c1a:	0b c3                	or     %ebx,%eax
403c1c:	75 06                	jne    0x403c24
403c1e:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
403c22:	74 14                	je     0x403c38
403c24:	ff 75 14             	push   0x14(%ebp)
403c27:	53                   	push   %ebx
403c28:	57                   	push   %edi
403c29:	ff 76 50             	push   0x50(%esi)
403c2c:	e8 29 2d 00 00       	call   0x40695a
403c31:	83 c4 10             	add    $0x10,%esp
403c34:	85 c0                	test   %eax,%eax
403c36:	75 34                	jne    0x403c6c
403c38:	8d 45 0c             	lea    0xc(%ebp),%eax
403c3b:	50                   	push   %eax
403c3c:	ff 76 50             	push   0x50(%esi)
403c3f:	e8 7e 2b 00 00       	call   0x4067c2
403c44:	59                   	pop    %ecx
403c45:	59                   	pop    %ecx
403c46:	85 c0                	test   %eax,%eax
403c48:	75 22                	jne    0x403c6c
403c4a:	8b ce                	mov    %esi,%ecx
403c4c:	e8 f5 fb ff ff       	call   0x403846
403c51:	8b 45 08             	mov    0x8(%ebp),%eax
403c54:	33 c9                	xor    %ecx,%ecx
403c56:	89 08                	mov    %ecx,(%eax)
403c58:	89 48 04             	mov    %ecx,0x4(%eax)
403c5b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
403c5e:	89 48 08             	mov    %ecx,0x8(%eax)
403c61:	8b 4d 10             	mov    0x10(%ebp),%ecx
403c64:	89 48 0c             	mov    %ecx,0xc(%eax)
403c67:	8b 4e 48             	mov    0x48(%esi),%ecx
403c6a:	eb 1c                	jmp    0x403c88
403c6c:	8b 45 08             	mov    0x8(%ebp),%eax
403c6f:	8b 0d 58 a1 41 00    	mov    0x41a158,%ecx
403c75:	89 08                	mov    %ecx,(%eax)
403c77:	8b 0d 5c a1 41 00    	mov    0x41a15c,%ecx
403c7d:	89 48 04             	mov    %ecx,0x4(%eax)
403c80:	33 c9                	xor    %ecx,%ecx
403c82:	89 48 08             	mov    %ecx,0x8(%eax)
403c85:	89 48 0c             	mov    %ecx,0xc(%eax)
403c88:	5f                   	pop    %edi
403c89:	5e                   	pop    %esi
403c8a:	89 48 10             	mov    %ecx,0x10(%eax)
403c8d:	5b                   	pop    %ebx
403c8e:	5d                   	pop    %ebp
403c8f:	c2 14 00             	ret    $0x14
403c92:	55                   	push   %ebp
403c93:	8b ec                	mov    %esp,%ebp
403c95:	51                   	push   %ecx
403c96:	51                   	push   %ecx
403c97:	8b 45 14             	mov    0x14(%ebp),%eax
403c9a:	53                   	push   %ebx
403c9b:	8b 5d 10             	mov    0x10(%ebp),%ebx
403c9e:	56                   	push   %esi
403c9f:	8b f1                	mov    %ecx,%esi
403ca1:	89 45 f8             	mov    %eax,-0x8(%ebp)
403ca4:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
403ca8:	8b 45 18             	mov    0x18(%ebp),%eax
403cab:	57                   	push   %edi
403cac:	8b 7d 0c             	mov    0xc(%ebp),%edi
403caf:	89 45 fc             	mov    %eax,-0x4(%ebp)
403cb2:	74 6e                	je     0x403d22
403cb4:	e8 91 f9 ff ff       	call   0x40364a
403cb9:	84 c0                	test   %al,%al
403cbb:	74 65                	je     0x403d22
403cbd:	8d 45 f8             	lea    -0x8(%ebp),%eax
403cc0:	50                   	push   %eax
403cc1:	ff 76 50             	push   0x50(%esi)
403cc4:	e8 58 2c 00 00       	call   0x406921
403cc9:	59                   	pop    %ecx
403cca:	59                   	pop    %ecx
403ccb:	85 c0                	test   %eax,%eax
403ccd:	75 53                	jne    0x403d22
403ccf:	8b c7                	mov    %edi,%eax
403cd1:	0b c3                	or     %ebx,%eax
403cd3:	74 13                	je     0x403ce8
403cd5:	6a 01                	push   $0x1
403cd7:	53                   	push   %ebx
403cd8:	57                   	push   %edi
403cd9:	ff 76 50             	push   0x50(%esi)
403cdc:	e8 79 2c 00 00       	call   0x40695a
403ce1:	83 c4 10             	add    $0x10,%esp
403ce4:	85 c0                	test   %eax,%eax
403ce6:	75 3a                	jne    0x403d22
403ce8:	8d 45 f8             	lea    -0x8(%ebp),%eax
403ceb:	50                   	push   %eax
403cec:	ff 76 50             	push   0x50(%esi)
403cef:	e8 ce 2a 00 00       	call   0x4067c2
403cf4:	59                   	pop    %ecx
403cf5:	59                   	pop    %ecx
403cf6:	85 c0                	test   %eax,%eax
403cf8:	75 28                	jne    0x403d22
403cfa:	8b 45 1c             	mov    0x1c(%ebp),%eax
403cfd:	8b ce                	mov    %esi,%ecx
403cff:	89 46 48             	mov    %eax,0x48(%esi)
403d02:	e8 3f fb ff ff       	call   0x403846
403d07:	8b 45 08             	mov    0x8(%ebp),%eax
403d0a:	33 c9                	xor    %ecx,%ecx
403d0c:	89 08                	mov    %ecx,(%eax)
403d0e:	89 48 04             	mov    %ecx,0x4(%eax)
403d11:	8b 4d f8             	mov    -0x8(%ebp),%ecx
403d14:	89 48 08             	mov    %ecx,0x8(%eax)
403d17:	8b 4d fc             	mov    -0x4(%ebp),%ecx
403d1a:	89 48 0c             	mov    %ecx,0xc(%eax)
403d1d:	8b 4e 48             	mov    0x48(%esi),%ecx
403d20:	eb 1c                	jmp    0x403d3e
403d22:	8b 45 08             	mov    0x8(%ebp),%eax
403d25:	8b 0d 58 a1 41 00    	mov    0x41a158,%ecx
403d2b:	89 08                	mov    %ecx,(%eax)
403d2d:	8b 0d 5c a1 41 00    	mov    0x41a15c,%ecx
403d33:	89 48 04             	mov    %ecx,0x4(%eax)
403d36:	33 c9                	xor    %ecx,%ecx
403d38:	89 48 08             	mov    %ecx,0x8(%eax)
403d3b:	89 48 0c             	mov    %ecx,0xc(%eax)
403d3e:	5f                   	pop    %edi
403d3f:	5e                   	pop    %esi
403d40:	89 48 10             	mov    %ecx,0x10(%eax)
403d43:	5b                   	pop    %ebx
403d44:	c9                   	leave
403d45:	c2 20 00             	ret    $0x20
403d48:	55                   	push   %ebp
403d49:	8b ec                	mov    %esp,%ebp
403d4b:	56                   	push   %esi
403d4c:	8b f1                	mov    %ecx,%esi
403d4e:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
403d52:	74 3b                	je     0x403d8f
403d54:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
403d58:	75 0d                	jne    0x403d67
403d5a:	8b 45 0c             	mov    0xc(%ebp),%eax
403d5d:	0b 45 10             	or     0x10(%ebp),%eax
403d60:	75 05                	jne    0x403d67
403d62:	6a 04                	push   $0x4
403d64:	58                   	pop    %eax
403d65:	eb 02                	jmp    0x403d69
403d67:	33 c0                	xor    %eax,%eax
403d69:	ff 75 0c             	push   0xc(%ebp)
403d6c:	50                   	push   %eax
403d6d:	ff 75 08             	push   0x8(%ebp)
403d70:	ff 76 50             	push   0x50(%esi)
403d73:	e8 ea 2e 00 00       	call   0x406c62
403d78:	83 c4 10             	add    $0x10,%esp
403d7b:	85 c0                	test   %eax,%eax
403d7d:	75 10                	jne    0x403d8f
403d7f:	6a 01                	push   $0x1
403d81:	ff 76 50             	push   0x50(%esi)
403d84:	8b ce                	mov    %esi,%ecx
403d86:	e8 34 fa ff ff       	call   0x4037bf
403d8b:	8b c6                	mov    %esi,%eax
403d8d:	eb 02                	jmp    0x403d91
403d8f:	33 c0                	xor    %eax,%eax
403d91:	5e                   	pop    %esi
403d92:	5d                   	pop    %ebp
403d93:	c2 0c 00             	ret    $0xc
403d96:	56                   	push   %esi
403d97:	57                   	push   %edi
403d98:	8b f9                	mov    %ecx,%edi
403d9a:	83 7f 50 00          	cmpl   $0x0,0x50(%edi)
403d9e:	74 1a                	je     0x403dba
403da0:	8b 07                	mov    (%edi),%eax
403da2:	83 ce ff             	or     $0xffffffff,%esi
403da5:	56                   	push   %esi
403da6:	ff 50 0c             	call   *0xc(%eax)
403da9:	3b c6                	cmp    %esi,%eax
403dab:	74 0d                	je     0x403dba
403dad:	ff 77 50             	push   0x50(%edi)
403db0:	e8 d2 27 00 00       	call   0x406587
403db5:	59                   	pop    %ecx
403db6:	85 c0                	test   %eax,%eax
403db8:	78 02                	js     0x403dbc
403dba:	33 f6                	xor    %esi,%esi
403dbc:	5f                   	pop    %edi
403dbd:	8b c6                	mov    %esi,%eax
403dbf:	5e                   	pop    %esi
403dc0:	c3                   	ret
403dc1:	6a 2c                	push   $0x2c
403dc3:	b8 d5 7b 41 00       	mov    $0x417bd5,%eax
403dc8:	e8 5f 20 00 00       	call   0x405e2c
403dcd:	8b f9                	mov    %ecx,%edi
403dcf:	8b 47 1c             	mov    0x1c(%edi),%eax
403dd2:	8b 08                	mov    (%eax),%ecx
403dd4:	85 c9                	test   %ecx,%ecx
403dd6:	74 23                	je     0x403dfb
403dd8:	8b 57 2c             	mov    0x2c(%edi),%edx
403ddb:	8b 32                	mov    (%edx),%esi
403ddd:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
403de0:	3b c8                	cmp    %eax,%ecx
403de2:	73 17                	jae    0x403dfb
403de4:	8d 46 ff             	lea    -0x1(%esi),%eax
403de7:	89 02                	mov    %eax,(%edx)
403de9:	8b 4f 1c             	mov    0x1c(%edi),%ecx
403dec:	8b 11                	mov    (%ecx),%edx
403dee:	8d 42 01             	lea    0x1(%edx),%eax
403df1:	89 01                	mov    %eax,(%ecx)
403df3:	0f b6 02             	movzbl (%edx),%eax
403df6:	e9 e4 00 00 00       	jmp    0x403edf
403dfb:	33 db                	xor    %ebx,%ebx
403dfd:	39 5f 50             	cmp    %ebx,0x50(%edi)
403e00:	75 08                	jne    0x403e0a
403e02:	83 c8 ff             	or     $0xffffffff,%eax
403e05:	e9 d5 00 00 00       	jmp    0x403edf
403e0a:	8b cf                	mov    %edi,%ecx
403e0c:	e8 35 fa ff ff       	call   0x403846
403e11:	39 5f 40             	cmp    %ebx,0x40(%edi)
403e14:	75 1e                	jne    0x403e34
403e16:	ff 77 50             	push   0x50(%edi)
403e19:	8d 45 d6             	lea    -0x2a(%ebp),%eax
403e1c:	50                   	push   %eax
403e1d:	88 5d d6             	mov    %bl,-0x2a(%ebp)
403e20:	e8 91 f6 ff ff       	call   0x4034b6
403e25:	59                   	pop    %ecx
403e26:	59                   	pop    %ecx
403e27:	84 c0                	test   %al,%al
403e29:	74 d7                	je     0x403e02
403e2b:	0f b6 45 d6          	movzbl -0x2a(%ebp),%eax
403e2f:	e9 ab 00 00 00       	jmp    0x403edf
403e34:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
403e3b:	89 5d e8             	mov    %ebx,-0x18(%ebp)
403e3e:	88 5d d8             	mov    %bl,-0x28(%ebp)
403e41:	ff 77 50             	push   0x50(%edi)
403e44:	89 5d fc             	mov    %ebx,-0x4(%ebp)
403e47:	e8 74 28 00 00       	call   0x4066c0
403e4c:	83 ce ff             	or     $0xffffffff,%esi
403e4f:	e9 bd 00 00 00       	jmp    0x403f11
403e54:	50                   	push   %eax
403e55:	6a 01                	push   $0x1
403e57:	8d 4d d8             	lea    -0x28(%ebp),%ecx
403e5a:	e8 4e fa ff ff       	call   0x4038ad
403e5f:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
403e63:	8b 5d d8             	mov    -0x28(%ebp),%ebx
403e66:	72 05                	jb     0x403e6d
403e68:	89 5d cc             	mov    %ebx,-0x34(%ebp)
403e6b:	eb 06                	jmp    0x403e73
403e6d:	8d 45 d8             	lea    -0x28(%ebp),%eax
403e70:	89 45 cc             	mov    %eax,-0x34(%ebp)
403e73:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
403e77:	73 03                	jae    0x403e7c
403e79:	8d 5d d8             	lea    -0x28(%ebp),%ebx
403e7c:	8b 4f 40             	mov    0x40(%edi),%ecx
403e7f:	8d 45 c8             	lea    -0x38(%ebp),%eax
403e82:	8b 11                	mov    (%ecx),%edx
403e84:	50                   	push   %eax
403e85:	8d 45 d8             	lea    -0x28(%ebp),%eax
403e88:	50                   	push   %eax
403e89:	8d 45 d7             	lea    -0x29(%ebp),%eax
403e8c:	50                   	push   %eax
403e8d:	8d 45 d0             	lea    -0x30(%ebp),%eax
403e90:	50                   	push   %eax
403e91:	8b 45 e8             	mov    -0x18(%ebp),%eax
403e94:	03 45 cc             	add    -0x34(%ebp),%eax
403e97:	50                   	push   %eax
403e98:	53                   	push   %ebx
403e99:	8d 47 48             	lea    0x48(%edi),%eax
403e9c:	50                   	push   %eax
403e9d:	ff 52 18             	call   *0x18(%edx)
403ea0:	85 c0                	test   %eax,%eax
403ea2:	78 31                	js     0x403ed5
403ea4:	83 f8 01             	cmp    $0x1,%eax
403ea7:	7e 3c                	jle    0x403ee5
403ea9:	83 f8 03             	cmp    $0x3,%eax
403eac:	75 27                	jne    0x403ed5
403eae:	83 7d e8 01          	cmpl   $0x1,-0x18(%ebp)
403eb2:	72 55                	jb     0x403f09
403eb4:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
403eb8:	8b 45 d8             	mov    -0x28(%ebp),%eax
403ebb:	73 03                	jae    0x403ec0
403ebd:	8d 45 d8             	lea    -0x28(%ebp),%eax
403ec0:	6a 01                	push   $0x1