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
403ec2:	50                   	push   %eax
403ec3:	8d 45 d7             	lea    -0x29(%ebp),%eax
403ec6:	6a 01                	push   $0x1
403ec8:	50                   	push   %eax
403ec9:	e8 ef 2f 00 00       	call   0x406ebd
403ece:	83 c4 10             	add    $0x10,%esp
403ed1:	0f b6 75 d7          	movzbl -0x29(%ebp),%esi
403ed5:	8d 4d d8             	lea    -0x28(%ebp),%ecx
403ed8:	e8 bf d2 ff ff       	call   0x40119c
403edd:	8b c6                	mov    %esi,%eax
403edf:	e8 06 1f 00 00       	call   0x405dea
403ee4:	c3                   	ret
403ee5:	8d 45 d7             	lea    -0x29(%ebp),%eax
403ee8:	39 45 c8             	cmp    %eax,-0x38(%ebp)
403eeb:	75 2f                	jne    0x403f1c
403eed:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
403ef1:	8b 4d d8             	mov    -0x28(%ebp),%ecx
403ef4:	73 03                	jae    0x403ef9
403ef6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
403ef9:	8b 45 d0             	mov    -0x30(%ebp),%eax
403efc:	2b c1                	sub    %ecx,%eax
403efe:	50                   	push   %eax
403eff:	6a 00                	push   $0x0
403f01:	8d 4d d8             	lea    -0x28(%ebp),%ecx
403f04:	e8 d2 d4 ff ff       	call   0x4013db
403f09:	ff 77 50             	push   0x50(%edi)
403f0c:	e8 af 27 00 00       	call   0x4066c0
403f11:	59                   	pop    %ecx
403f12:	3b c6                	cmp    %esi,%eax
403f14:	0f 85 3a ff ff ff    	jne    0x403e54
403f1a:	eb b9                	jmp    0x403ed5
403f1c:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
403f20:	8b 75 d8             	mov    -0x28(%ebp),%esi
403f23:	73 03                	jae    0x403f28
403f25:	8d 75 d8             	lea    -0x28(%ebp),%esi
403f28:	8b 45 d0             	mov    -0x30(%ebp),%eax
403f2b:	2b f0                	sub    %eax,%esi
403f2d:	03 75 e8             	add    -0x18(%ebp),%esi
403f30:	85 f6                	test   %esi,%esi
403f32:	7e 9d                	jle    0x403ed1
403f34:	ff 77 50             	push   0x50(%edi)
403f37:	4e                   	dec    %esi
403f38:	0f be 04 06          	movsbl (%esi,%eax,1),%eax
403f3c:	50                   	push   %eax
403f3d:	e8 06 2f 00 00       	call   0x406e48
403f42:	59                   	pop    %ecx
403f43:	59                   	pop    %ecx
403f44:	85 f6                	test   %esi,%esi
403f46:	7e 89                	jle    0x403ed1
403f48:	8b 45 d0             	mov    -0x30(%ebp),%eax
403f4b:	eb e7                	jmp    0x403f34
403f4d:	56                   	push   %esi
403f4e:	8b f1                	mov    %ecx,%esi
403f50:	8b 46 1c             	mov    0x1c(%esi),%eax
403f53:	8b 08                	mov    (%eax),%ecx
403f55:	85 c9                	test   %ecx,%ecx
403f57:	74 10                	je     0x403f69
403f59:	8b 46 2c             	mov    0x2c(%esi),%eax
403f5c:	8b 00                	mov    (%eax),%eax
403f5e:	03 c1                	add    %ecx,%eax
403f60:	3b c8                	cmp    %eax,%ecx
403f62:	73 05                	jae    0x403f69
403f64:	0f b6 01             	movzbl (%ecx),%eax
403f67:	5e                   	pop    %esi
403f68:	c3                   	ret
403f69:	8b 06                	mov    (%esi),%eax
403f6b:	57                   	push   %edi
403f6c:	8b ce                	mov    %esi,%ecx
403f6e:	ff 50 1c             	call   *0x1c(%eax)
403f71:	8b f8                	mov    %eax,%edi
403f73:	83 c8 ff             	or     $0xffffffff,%eax
403f76:	3b f8                	cmp    %eax,%edi
403f78:	74 0a                	je     0x403f84
403f7a:	8b 06                	mov    (%esi),%eax
403f7c:	57                   	push   %edi
403f7d:	8b ce                	mov    %esi,%ecx
403f7f:	ff 50 10             	call   *0x10(%eax)
403f82:	8b c7                	mov    %edi,%eax
403f84:	5f                   	pop    %edi
403f85:	5e                   	pop    %esi
403f86:	c3                   	ret
403f87:	e9 2b 39 00 00       	jmp    0x4078b7
403f8c:	55                   	push   %ebp
403f8d:	8b ec                	mov    %esp,%ebp
403f8f:	8a 45 08             	mov    0x8(%ebp),%al
403f92:	56                   	push   %esi
403f93:	8b f1                	mov    %ecx,%esi
403f95:	33 d2                	xor    %edx,%edx
403f97:	8d 4e 18             	lea    0x18(%esi),%ecx
403f9a:	c7 46 04 01 00 00 00 	movl   $0x1,0x4(%esi)
403fa1:	c7 06 40 a1 41 00    	movl   $0x41a140,(%esi)
403fa7:	89 56 08             	mov    %edx,0x8(%esi)
403faa:	89 56 0c             	mov    %edx,0xc(%esi)
403fad:	89 56 10             	mov    %edx,0x10(%esi)
403fb0:	88 46 14             	mov    %al,0x14(%esi)
403fb3:	68 4c a1 41 00       	push   $0x41a14c
403fb8:	89 11                	mov    %edx,(%ecx)
403fba:	88 51 04             	mov    %dl,0x4(%ecx)
403fbd:	e8 6b 00 00 00       	call   0x40402d
403fc2:	8b c6                	mov    %esi,%eax
403fc4:	5e                   	pop    %esi
403fc5:	5d                   	pop    %ebp
403fc6:	c2 04 00             	ret    $0x4
403fc9:	8b 49 04             	mov    0x4(%ecx),%ecx
403fcc:	8b 01                	mov    (%ecx),%eax
403fce:	ff 50 08             	call   *0x8(%eax)
403fd1:	85 c0                	test   %eax,%eax
403fd3:	74 08                	je     0x403fdd
403fd5:	8b 10                	mov    (%eax),%edx
403fd7:	6a 01                	push   $0x1
403fd9:	8b c8                	mov    %eax,%ecx
403fdb:	ff 12                	call   *(%edx)
403fdd:	c3                   	ret
403fde:	56                   	push   %esi
403fdf:	eb 15                	jmp    0x403ff6
403fe1:	8b 06                	mov    (%esi),%eax
403fe3:	8b ce                	mov    %esi,%ecx
403fe5:	a3 90 1a 42 00       	mov    %eax,0x421a90
403fea:	e8 da ff ff ff       	call   0x403fc9
403fef:	56                   	push   %esi
403ff0:	e8 03 0f 00 00       	call   0x404ef8
403ff5:	59                   	pop    %ecx
403ff6:	8b 35 90 1a 42 00    	mov    0x421a90,%esi
403ffc:	85 f6                	test   %esi,%esi
403ffe:	75 e1                	jne    0x403fe1
404000:	5e                   	pop    %esi
404001:	c3                   	ret
404002:	56                   	push   %esi
404003:	8b f1                	mov    %ecx,%esi
404005:	56                   	push   %esi
404006:	c7 06 40 a1 41 00    	movl   $0x41a140,(%esi)
40400c:	e8 39 01 00 00       	call   0x40414a
404011:	83 7e 18 00          	cmpl   $0x0,0x18(%esi)
404015:	59                   	pop    %ecx
404016:	74 09                	je     0x404021
404018:	ff 76 18             	push   0x18(%esi)
40401b:	e8 f8 10 00 00       	call   0x405118
404020:	59                   	pop    %ecx
404021:	83 66 18 00          	andl   $0x0,0x18(%esi)
404025:	c7 06 10 a0 41 00    	movl   $0x41a010,(%esi)
40402b:	5e                   	pop    %esi
40402c:	c3                   	ret
40402d:	55                   	push   %ebp
40402e:	8b ec                	mov    %esp,%ebp
404030:	53                   	push   %ebx
404031:	57                   	push   %edi
404032:	8b 7d 08             	mov    0x8(%ebp),%edi
404035:	8b d9                	mov    %ecx,%ebx
404037:	39 3b                	cmp    %edi,(%ebx)
404039:	74 3e                	je     0x404079
40403b:	83 3b 00             	cmpl   $0x0,(%ebx)
40403e:	74 08                	je     0x404048
404040:	ff 33                	push   (%ebx)
404042:	e8 d1 10 00 00       	call   0x405118
404047:	59                   	pop    %ecx
404048:	83 23 00             	andl   $0x0,(%ebx)
40404b:	85 ff                	test   %edi,%edi
40404d:	74 2a                	je     0x404079
40404f:	80 3f 00             	cmpb   $0x0,(%edi)
404052:	56                   	push   %esi
404053:	8b f7                	mov    %edi,%esi
404055:	74 06                	je     0x40405d
404057:	46                   	inc    %esi
404058:	80 3e 00             	cmpb   $0x0,(%esi)
40405b:	75 fa                	jne    0x404057
40405d:	2b f7                	sub    %edi,%esi
40405f:	46                   	inc    %esi
404060:	56                   	push   %esi
404061:	e8 d7 41 00 00       	call   0x40823d
404066:	59                   	pop    %ecx
404067:	89 03                	mov    %eax,(%ebx)
404069:	85 c0                	test   %eax,%eax
40406b:	74 0b                	je     0x404078
40406d:	56                   	push   %esi
40406e:	57                   	push   %edi