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
403ec6:	ff 52 10             	call   *0x10(%edx)
403ec9:	85 c0                	test   %eax,%eax
403ecb:	7c 7a                	jl     0x403f47
403ecd:	83 f8 01             	cmp    $0x1,%eax
403ed0:	7e 38                	jle    0x403f0a
403ed2:	83 f8 03             	cmp    $0x3,%eax
403ed5:	75 70                	jne    0x403f47
403ed7:	83 7d e8 02          	cmpl   $0x2,-0x18(%ebp)
403edb:	72 58                	jb     0x403f35
403edd:	8d 45 b4             	lea    -0x4c(%ebp),%eax
403ee0:	50                   	push   %eax
403ee1:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403ee4:	e8 f3 fd ff ff       	call   0x403cdc
403ee9:	6a 02                	push   $0x2
403eeb:	8b c8                	mov    %eax,%ecx
403eed:	e8 a9 f7 ff ff       	call   0x40369b
403ef2:	50                   	push   %eax
403ef3:	8d 45 d0             	lea    -0x30(%ebp),%eax
403ef6:	6a 02                	push   $0x2
403ef8:	50                   	push   %eax
403ef9:	e8 36 1b 00 00       	call   0x405a34
403efe:	0f b7 45 d0          	movzwl -0x30(%ebp),%eax
403f02:	83 c4 10             	add    $0x10,%esp
403f05:	66 8b f0             	mov    %ax,%si
403f08:	eb 42                	jmp    0x403f4c
403f0a:	8d 45 d0             	lea    -0x30(%ebp),%eax
403f0d:	39 45 c4             	cmp    %eax,-0x3c(%ebp)
403f10:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f13:	75 4b                	jne    0x403f60
403f15:	8d 45 a4             	lea    -0x5c(%ebp),%eax
403f18:	50                   	push   %eax
403f19:	e8 be fd ff ff       	call   0x403cdc
403f1e:	8b c8                	mov    %eax,%ecx
403f20:	e8 76 f7 ff ff       	call   0x40369b
403f25:	8b 4d cc             	mov    -0x34(%ebp),%ecx
403f28:	2b c8                	sub    %eax,%ecx
403f2a:	51                   	push   %ecx
403f2b:	6a 00                	push   $0x0
403f2d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f30:	e8 fb de ff ff       	call   0x401e30
403f35:	ff 76 4c             	push   0x4c(%esi)
403f38:	e8 41 42 00 00       	call   0x40817e
403f3d:	83 f8 ff             	cmp    $0xffffffff,%eax
403f40:	59                   	pop    %ecx
403f41:	0f 85 27 ff ff ff    	jne    0x403e6e
403f47:	66 81 ce ff ff       	or     $0xffff,%si
403f4c:	6a 00                	push   $0x0
403f4e:	6a 01                	push   $0x1
403f50:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f53:	e8 88 de ff ff       	call   0x401de0
403f58:	66 8b c6             	mov    %si,%ax
403f5b:	e9 c3 fe ff ff       	jmp    0x403e23
403f60:	8d 45 ac             	lea    -0x54(%ebp),%eax
403f63:	50                   	push   %eax
403f64:	e8 73 fd ff ff       	call   0x403cdc
403f69:	8b c8                	mov    %eax,%ecx
403f6b:	e8 2b f7 ff ff       	call   0x40369b
403f70:	8b 7d e8             	mov    -0x18(%ebp),%edi
403f73:	2b 7d cc             	sub    -0x34(%ebp),%edi
403f76:	03 f8                	add    %eax,%edi
403f78:	eb 13                	jmp    0x403f8d
403f7a:	8b 45 cc             	mov    -0x34(%ebp),%eax
403f7d:	ff 76 4c             	push   0x4c(%esi)
403f80:	4f                   	dec    %edi
403f81:	0f be 04 07          	movsbl (%edi,%eax,1),%eax
403f85:	50                   	push   %eax
403f86:	e8 81 41 00 00       	call   0x40810c
403f8b:	59                   	pop    %ecx
403f8c:	59                   	pop    %ecx
403f8d:	85 ff                	test   %edi,%edi
403f8f:	7f e9                	jg     0x403f7a
403f91:	0f b7 75 d0          	movzwl -0x30(%ebp),%esi
403f95:	eb b5                	jmp    0x403f4c
403f97:	56                   	push   %esi
403f98:	8b f1                	mov    %ecx,%esi
403f9a:	6a 00                	push   $0x0
403f9c:	c7 46 18 0f 00 00 00 	movl   $0xf,0x18(%esi)
403fa3:	e8 d8 dc ff ff       	call   0x401c80
403fa8:	ff 74 24 0c          	push   0xc(%esp)
403fac:	8b ce                	mov    %esi,%ecx
403fae:	ff 74 24 0c          	push   0xc(%esp)
403fb2:	e8 f3 fd ff ff       	call   0x403daa
403fb7:	8b c6                	mov    %esi,%eax
403fb9:	5e                   	pop    %esi
403fba:	c2 08 00             	ret    $0x8
403fbd:	6a 48                	push   $0x48
403fbf:	b8 b9 5c 41 00       	mov    $0x415cb9,%eax
403fc4:	e8 8b 28 00 00       	call   0x406854
403fc9:	8b f1                	mov    %ecx,%esi
403fcb:	33 db                	xor    %ebx,%ebx
403fcd:	39 5e 3c             	cmp    %ebx,0x3c(%esi)
403fd0:	0f 84 f9 00 00 00    	je     0x4040cf
403fd6:	38 5e 42             	cmp    %bl,0x42(%esi)
403fd9:	0f 84 f0 00 00 00    	je     0x4040cf
403fdf:	8b 06                	mov    (%esi),%eax
403fe1:	bf ff ff 00 00       	mov    $0xffff,%edi
403fe6:	57                   	push   %edi
403fe7:	ff 50 04             	call   *0x4(%eax)
403fea:	0f b7 c0             	movzwl %ax,%eax
403fed:	66 3b c7             	cmp    %di,%ax
403ff0:	75 07                	jne    0x403ff9
403ff2:	32 c0                	xor    %al,%al
403ff4:	e9 d8 00 00 00       	jmp    0x4040d1
403ff9:	53                   	push   %ebx
403ffa:	6a 08                	push   $0x8
403ffc:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403fff:	e8 93 ff ff ff       	call   0x403f97
404004:	89 5d fc             	mov    %ebx,-0x4(%ebp)
404007:	8d 45 ac             	lea    -0x54(%ebp),%eax
40400a:	50                   	push   %eax
40400b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40400e:	e8 c9 fc ff ff       	call   0x403cdc
404013:	8b c8                	mov    %eax,%ecx
404015:	e8 81 f6 ff ff       	call   0x40369b
40401a:	8b 7d e8             	mov    -0x18(%ebp),%edi
40401d:	8b d8                	mov    %eax,%ebx
40401f:	8d 45 c4             	lea    -0x3c(%ebp),%eax
404022:	50                   	push   %eax
404023:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404026:	e8 b1 fc ff ff       	call   0x403cdc
40402b:	8b c8                	mov    %eax,%ecx
40402d:	e8 69 f6 ff ff       	call   0x40369b
404032:	8b 4e 3c             	mov    0x3c(%esi),%ecx
404035:	8b 11                	mov    (%ecx),%edx
404037:	89 45 cc             	mov    %eax,-0x34(%ebp)
40403a:	8d 45 d0             	lea    -0x30(%ebp),%eax
40403d:	50                   	push   %eax
40403e:	03 fb                	add    %ebx,%edi
404040:	57                   	push   %edi
404041:	ff 75 cc             	push   -0x34(%ebp)
404044:	8d 46 44             	lea    0x44(%esi),%eax
404047:	50                   	push   %eax
404048:	ff 52 18             	call   *0x18(%edx)
40404b:	83 e8 00             	sub    $0x0,%eax
40404e:	74 19                	je     0x404069
404050:	48                   	dec    %eax
404051:	74 1a                	je     0x40406d
404053:	48                   	dec    %eax
404054:	48                   	dec    %eax
404055:	74 74                	je     0x4040cb
404057:	32 db                	xor    %bl,%bl
404059:	6a 00                	push   $0x0
40405b:	6a 01                	push   $0x1
40405d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404060:	e8 7b dd ff ff       	call   0x401de0
404065:	8a c3                	mov    %bl,%al
404067:	eb 68                	jmp    0x4040d1
404069:	c6 46 42 00          	movb   $0x0,0x42(%esi)
40406d:	8d 45 b4             	lea    -0x4c(%ebp),%eax
404070:	50                   	push   %eax
404071:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404074:	e8 63 fc ff ff       	call   0x403cdc
404079:	8b c8                	mov    %eax,%ecx
40407b:	e8 1b f6 ff ff       	call   0x40369b
404080:	8b 7d d0             	mov    -0x30(%ebp),%edi
404083:	2b f8                	sub    %eax,%edi
404085:	74 26                	je     0x4040ad
404087:	8d 45 bc             	lea    -0x44(%ebp),%eax
40408a:	50                   	push   %eax
40408b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40408e:	e8 49 fc ff ff       	call   0x403cdc
404093:	8b c8                	mov    %eax,%ecx
404095:	e8 01 f6 ff ff       	call   0x40369b
40409a:	ff 76 4c             	push   0x4c(%esi)
40409d:	57                   	push   %edi
40409e:	6a 01                	push   $0x1
4040a0:	50                   	push   %eax
4040a1:	e8 29 43 00 00       	call   0x4083cf
4040a6:	83 c4 10             	add    $0x10,%esp
4040a9:	3b f8                	cmp    %eax,%edi
4040ab:	75 aa                	jne    0x404057
4040ad:	80 7e 42 00          	cmpb   $0x0,0x42(%esi)
4040b1:	74 18                	je     0x4040cb
4040b3:	85 ff                	test   %edi,%edi
4040b5:	0f 85 4c ff ff ff    	jne    0x404007