412d86:	51                   	push   %ecx
412d87:	57                   	push   %edi
412d88:	50                   	push   %eax
412d89:	89 46 14             	mov    %eax,0x14(%esi)
412d8c:	e8 af 54 00 00       	call   0x418240
412d91:	8b 4e 50             	mov    0x50(%esi),%ecx
412d94:	83 c4 0c             	add    $0xc,%esp
412d97:	e8 aa f7 ff ff       	call   0x412546
412d9c:	8b 4e 50             	mov    0x50(%esi),%ecx
412d9f:	e8 c0 cb ff ff       	call   0x40f964
412da4:	e9 25 01 00 00       	jmp    0x412ece
412da9:	8b 46 08             	mov    0x8(%esi),%eax
412dac:	3b c7                	cmp    %edi,%eax
412dae:	75 07                	jne    0x412db7
412db0:	33 c0                	xor    %eax,%eax
412db2:	e9 e4 01 00 00       	jmp    0x412f9b
412db7:	8b 08                	mov    (%eax),%ecx
412db9:	8d 55 84             	lea    -0x7c(%ebp),%edx
412dbc:	52                   	push   %edx
412dbd:	8d 55 88             	lea    -0x78(%ebp),%edx
412dc0:	52                   	push   %edx
412dc1:	68 9c 46 49 00       	push   $0x49469c
412dc6:	50                   	push   %eax
412dc7:	ff 51 0c             	call   *0xc(%ecx)
412dca:	3b c7                	cmp    %edi,%eax
412dcc:	0f 8c c9 01 00 00    	jl     0x412f9b
412dd2:	68 e0 6c 49 00       	push   $0x496ce0
412dd7:	8d 45 90             	lea    -0x70(%ebp),%eax
412dda:	50                   	push   %eax
412ddb:	8b ce                	mov    %esi,%ecx
412ddd:	e8 dc c8 ff ff       	call   0x40f6be
412de2:	83 4d b0 ff          	orl    $0xffffffff,-0x50(%ebp)
412de6:	68 08 6c 49 00       	push   $0x496c08
412deb:	8d 45 c0             	lea    -0x40(%ebp),%eax
412dee:	50                   	push   %eax
412def:	8b ce                	mov    %esi,%ecx
412df1:	89 7d a8             	mov    %edi,-0x58(%ebp)
412df4:	89 7d ac             	mov    %edi,-0x54(%ebp)
412df7:	c7 45 b4 18 00 00 00 	movl   $0x18,-0x4c(%ebp)
412dfe:	89 7d b8             	mov    %edi,-0x48(%ebp)
412e01:	c7 45 bc fb 01 00 00 	movl   $0x1fb,-0x44(%ebp)
412e08:	e8 b1 c8 ff ff       	call   0x40f6be
412e0d:	8b 45 88             	mov    -0x78(%ebp),%eax
412e10:	83 4d e0 ff          	orl    $0xffffffff,-0x20(%ebp)
412e14:	57                   	push   %edi
412e15:	6a 28                	push   $0x28
412e17:	8d 55 90             	lea    -0x70(%ebp),%edx
412e1a:	52                   	push   %edx
412e1b:	6a 02                	push   $0x2
412e1d:	c7 45 d8 1c 00 00 00 	movl   $0x1c,-0x28(%ebp)
412e24:	89 7d dc             	mov    %edi,-0x24(%ebp)
412e27:	c7 45 e4 20 00 00 00 	movl   $0x20,-0x1c(%ebp)
412e2e:	89 7d e8             	mov    %edi,-0x18(%ebp)
412e31:	c7 45 ec 1e 00 00 00 	movl   $0x1e,-0x14(%ebp)
412e38:	8b 08                	mov    (%eax),%ecx
412e3a:	50                   	push   %eax
412e3b:	ff 51 10             	call   *0x10(%ecx)
412e3e:	8b d8                	mov    %eax,%ebx
412e40:	3b df                	cmp    %edi,%ebx
412e42:	7d 10                	jge    0x412e54
412e44:	8b 45 88             	mov    -0x78(%ebp),%eax
412e47:	8b 08                	mov    (%eax),%ecx
412e49:	50                   	push   %eax
412e4a:	ff 51 08             	call   *0x8(%ecx)
412e4d:	8b c3                	mov    %ebx,%eax
412e4f:	e9 47 01 00 00       	jmp    0x412f9b
412e54:	8b 45 84             	mov    -0x7c(%ebp),%eax
412e57:	8d 95 60 ff ff ff    	lea    -0xa0(%ebp),%edx
412e5d:	52                   	push   %edx
412e5e:	33 d2                	xor    %edx,%edx
412e60:	52                   	push   %edx
412e61:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
412e67:	8b 45 88             	mov    -0x78(%ebp),%eax
412e6a:	33 c9                	xor    %ecx,%ecx
412e6c:	51                   	push   %ecx
412e6d:	c7 85 64 ff ff ff 01 	movl   $0x1,-0x9c(%ebp)
412e74:	00 00 00
412e77:	89 bd 68 ff ff ff    	mov    %edi,-0x98(%ebp)
412e7d:	89 bd 6c ff ff ff    	mov    %edi,-0x94(%ebp)
412e83:	89 bd 70 ff ff ff    	mov    %edi,-0x90(%ebp)
412e89:	8b 18                	mov    (%eax),%ebx
412e8b:	50                   	push   %eax
412e8c:	ff 53 18             	call   *0x18(%ebx)
412e8f:	3b c7                	cmp    %edi,%eax
412e91:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
412e97:	7d 0e                	jge    0x412ea7
412e99:	8b 45 88             	mov    -0x78(%ebp),%eax
412e9c:	8b 08                	mov    (%eax),%ecx
412e9e:	50                   	push   %eax
412e9f:	ff 51 08             	call   *0x8(%ecx)
412ea2:	e9 ee 00 00 00       	jmp    0x412f95
412ea7:	8b 85 68 ff ff ff    	mov    -0x98(%ebp),%eax
412ead:	8b 8d 6c ff ff ff    	mov    -0x94(%ebp),%ecx
412eb3:	89 46 14             	mov    %eax,0x14(%esi)
412eb6:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
412ebc:	89 45 84             	mov    %eax,-0x7c(%ebp)
412ebf:	89 46 10             	mov    %eax,0x10(%esi)
412ec2:	8b 45 88             	mov    -0x78(%ebp),%eax
412ec5:	89 4e 34             	mov    %ecx,0x34(%esi)
412ec8:	8b 08                	mov    (%eax),%ecx
412eca:	50                   	push   %eax
412ecb:	ff 51 08             	call   *0x8(%ecx)
412ece:	39 7e 10             	cmp    %edi,0x10(%esi)
412ed1:	89 7d 8c             	mov    %edi,-0x74(%ebp)
412ed4:	7e 3a                	jle    0x412f10
412ed6:	33 db                	xor    %ebx,%ebx
412ed8:	6a 1c                	push   $0x1c
412eda:	e8 76 d1 02 00       	call   0x440055
412edf:	59                   	pop    %ecx
412ee0:	89 45 84             	mov    %eax,-0x7c(%ebp)
412ee3:	3b c7                	cmp    %edi,%eax
412ee5:	89 7d fc             	mov    %edi,-0x4(%ebp)
412ee8:	74 0b                	je     0x412ef5
412eea:	6a 0a                	push   $0xa
412eec:	8b c8                	mov    %eax,%ecx
412eee:	e8 90 97 02 00       	call   0x43c683
412ef3:	eb 02                	jmp    0x412ef7
412ef5:	33 c0                	xor    %eax,%eax
412ef7:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
412efb:	8b 4e 14             	mov    0x14(%esi),%ecx
412efe:	ff 45 8c             	incl   -0x74(%ebp)
412f01:	89 44 0b 24          	mov    %eax,0x24(%ebx,%ecx,1)
412f05:	8b 45 8c             	mov    -0x74(%ebp),%eax
412f08:	83 c3 28             	add    $0x28,%ebx
412f0b:	3b 46 10             	cmp    0x10(%esi),%eax
412f0e:	7c c8                	jl     0x412ed8
412f10:	8b 9d 78 ff ff ff    	mov    -0x88(%ebp),%ebx
412f16:	3b df                	cmp    %edi,%ebx
412f18:	74 7b                	je     0x412f95
412f1a:	39 7d 80             	cmp    %edi,-0x80(%ebp)
412f1d:	7e 6a                	jle    0x412f89
412f1f:	8b 4d 80             	mov    -0x80(%ebp),%ecx
412f22:	6a dc                	push   $0xffffffdc
412f24:	58                   	pop    %eax
412f25:	83 c3 24             	add    $0x24,%ebx
412f28:	2b 85 78 ff ff ff    	sub    -0x88(%ebp),%eax
412f2e:	89 4d 8c             	mov    %ecx,-0x74(%ebp)
412f31:	89 45 84             	mov    %eax,-0x7c(%ebp)
412f34:	eb 03                	jmp    0x412f39
412f36:	8b 45 84             	mov    -0x7c(%ebp),%eax
412f39:	8b 0b                	mov    (%ebx),%ecx
412f3b:	8b 49 04             	mov    0x4(%ecx),%ecx
412f3e:	3b cf                	cmp    %edi,%ecx
412f40:	89 4d 80             	mov    %ecx,-0x80(%ebp)
412f43:	74 28                	je     0x412f6d
412f45:	eb 03                	jmp    0x412f4a
412f47:	8b 45 84             	mov    -0x7c(%ebp),%eax
412f4a:	8d 4d 80             	lea    -0x80(%ebp),%ecx
412f4d:	51                   	push   %ecx
412f4e:	8b 4e 14             	mov    0x14(%esi),%ecx
412f51:	03 c3                	add    %ebx,%eax
412f53:	8b 4c 08 24          	mov    0x24(%eax,%ecx,1),%ecx
412f57:	e8 06 45 ff ff       	call   0x407462
412f5c:	8b 00                	mov    (%eax),%eax
412f5e:	8b 16                	mov    (%esi),%edx
412f60:	6a 01                	push   $0x1
412f62:	50                   	push   %eax
412f63:	8b ce                	mov    %esi,%ecx
412f65:	ff 52 08             	call   *0x8(%edx)
412f68:	39 7d 80             	cmp    %edi,-0x80(%ebp)
412f6b:	75 da                	jne    0x412f47
412f6d:	8b 0b                	mov    (%ebx),%ecx
412f6f:	e8 08 96 02 00       	call   0x43c57c
412f74:	8b 0b                	mov    (%ebx),%ecx
412f76:	3b cf                	cmp    %edi,%ecx
412f78:	74 07                	je     0x412f81
412f7a:	8b 01                	mov    (%ecx),%eax
412f7c:	6a 01                	push   $0x1
412f7e:	ff 50 04             	call   *0x4(%eax)
412f81:	83 c3 28             	add    $0x28,%ebx
412f84:	ff 4d 8c             	decl   -0x74(%ebp)
412f87:	75 ad                	jne    0x412f36
412f89:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
412f8f:	ff 15 f0 0a 4b 00    	call   *0x4b0af0
412f95:	8b 85 7c ff ff ff    	mov    -0x84(%ebp),%eax
412f9b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
412f9e:	5f                   	pop    %edi
412f9f:	5e                   	pop    %esi
412fa0:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
412fa7:	8b 4d f0             	mov    -0x10(%ebp),%ecx
412faa:	5b                   	pop    %ebx
412fab:	e8 2e 4c 00 00       	call   0x417bde
412fb0:	c9                   	leave
412fb1:	c3                   	ret
412fb2:	83 7c 24 0c 0e       	cmpl   $0xe,0xc(%esp)
412fb7:	56                   	push   %esi
412fb8:	75 6c                	jne    0x413026
412fba:	8b 44 24 08          	mov    0x8(%esp),%eax
412fbe:	8b 70 a8             	mov    -0x58(%eax),%esi
412fc1:	85 f6                	test   %esi,%esi
412fc3:	74 61                	je     0x413026
412fc5:	8b 46 50             	mov    0x50(%esi),%eax
412fc8:	ff 30                	push   (%eax)
412fca:	8b 4e 54             	mov    0x54(%esi),%ecx
412fcd:	e8 b3 f5 ff ff       	call   0x412585
412fd2:	8b 4e 54             	mov    0x54(%esi),%ecx
412fd5:	e8 7b b2 ff ff       	call   0x40e255
412fda:	8b 46 50             	mov    0x50(%esi),%eax
412fdd:	ff 30                	push   (%eax)
412fdf:	8b 4e 54             	mov    0x54(%esi),%ecx
412fe2:	e8 91 f6 ff ff       	call   0x412678
412fe7:	8b 46 54             	mov    0x54(%esi),%eax
412fea:	8b 40 0c             	mov    0xc(%eax),%eax
412fed:	39 46 10             	cmp    %eax,0x10(%esi)
412ff0:	74 34                	je     0x413026
412ff2:	ff 76 14             	push   0x14(%esi)
412ff5:	89 46 10             	mov    %eax,0x10(%esi)
412ff8:	ff 15 f0 0a 4b 00    	call   *0x4b0af0
412ffe:	8b 46 10             	mov    0x10(%esi),%eax
413001:	8d 04 80             	lea    (%eax,%eax,4),%eax
413004:	c1 e0 03             	shl    $0x3,%eax
413007:	50                   	push   %eax
413008:	ff 15 18 0b 4b 00    	call   *0x4b0b18
41300e:	89 46 14             	mov    %eax,0x14(%esi)
413011:	8b 76 10             	mov    0x10(%esi),%esi
413014:	8d 0c b6             	lea    (%esi,%esi,4),%ecx
413017:	c1 e1 03             	shl    $0x3,%ecx
41301a:	51                   	push   %ecx
41301b:	6a 00                	push   $0x0
41301d:	50                   	push   %eax
41301e:	e8 1d 52 00 00       	call   0x418240
413023:	83 c4 0c             	add    $0xc,%esp
413026:	33 c0                	xor    %eax,%eax
413028:	5e                   	pop    %esi
413029:	c2 14 00             	ret    $0x14
41302c:	56                   	push   %esi
41302d:	8b f1                	mov    %ecx,%esi
41302f:	8b 4e 10             	mov    0x10(%esi),%ecx
413032:	85 c9                	test   %ecx,%ecx
413034:	74 27                	je     0x41305d
413036:	8b 06                	mov    (%esi),%eax
413038:	85 c0                	test   %eax,%eax
41303a:	74 06                	je     0x413042
41303c:	50                   	push   %eax
41303d:	e8 43 f5 ff ff       	call   0x412585
413042:	57                   	push   %edi
413043:	8b 7e 10             	mov    0x10(%esi),%edi
413046:	85 ff                	test   %edi,%edi
413048:	74 0e                	je     0x413058
41304a:	8b cf                	mov    %edi,%ecx
41304c:	e8 3d eb ff ff       	call   0x411b8e
413051:	57                   	push   %edi
413052:	e8 29 d0 02 00       	call   0x440080
413057:	59                   	pop    %ecx
413058:	83 66 10 00          	andl   $0x0,0x10(%esi)
41305c:	5f                   	pop    %edi
41305d:	83 3e 00             	cmpl   $0x0,(%esi)
413060:	74 27                	je     0x413089
413062:	8b ce                	mov    %esi,%ecx
413064:	e8 fb c8 ff ff       	call   0x40f964
413069:	8b 06                	mov    (%esi),%eax
41306b:	85 c0                	test   %eax,%eax
41306d:	74 09                	je     0x413078
41306f:	83 26 00             	andl   $0x0,(%esi)
413072:	8b 08                	mov    (%eax),%ecx
413074:	50                   	push   %eax
413075:	ff 51 08             	call   *0x8(%ecx)
413078:	8b 46 04             	mov    0x4(%esi),%eax
41307b:	85 c0                	test   %eax,%eax
41307d:	74 0a                	je     0x413089
41307f:	83 66 04 00          	andl   $0x0,0x4(%esi)
413083:	8b 08                	mov    (%eax),%ecx
413085:	50                   	push   %eax
413086:	ff 51 08             	call   *0x8(%ecx)
413089:	5e                   	pop    %esi
41308a:	c3                   	ret
41308b:	8b c1                	mov    %ecx,%eax
41308d:	c7 00 7c c7 48 00    	movl   $0x48c77c,(%eax)
413093:	c3                   	ret
413094:	55                   	push   %ebp
413095:	8b ec                	mov    %esp,%ebp
413097:	83 ec 34             	sub    $0x34,%esp
41309a:	53                   	push   %ebx
41309b:	56                   	push   %esi
41309c:	8b f1                	mov    %ecx,%esi
41309e:	8b 46 04             	mov    0x4(%esi),%eax
4130a1:	8b 48 24             	mov    0x24(%eax),%ecx
4130a4:	57                   	push   %edi
4130a5:	e8 63 2e 03 00       	call   0x445f0d
4130aa:	8b f8                	mov    %eax,%edi
4130ac:	ff 77 1c             	push   0x1c(%edi)
4130af:	89 7d f8             	mov    %edi,-0x8(%ebp)
4130b2:	ff 15 a0 07 4b 00    	call   *0x4b07a0
4130b8:	f7 d8                	neg    %eax
4130ba:	1b c0                	sbb    %eax,%eax
4130bc:	40                   	inc    %eax
4130bd:	6a 00                	push   $0x0
4130bf:	89 45 ec             	mov    %eax,-0x14(%ebp)
4130c2:	5b                   	pop    %ebx
4130c3:	74 51                	je     0x413116
4130c5:	ff 15 60 08 4b 00    	call   *0x4b0860
4130cb:	50                   	push   %eax
4130cc:	e8 d1 1b 03 00       	call   0x444ca2
4130d1:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4130d4:	51                   	push   %ecx
4130d5:	ff 70 1c             	push   0x1c(%eax)
4130d8:	ff 15 40 07 4b 00    	call   *0x4b0740
4130de:	8d 45 dc             	lea    -0x24(%ebp),%eax
4130e1:	50                   	push   %eax
4130e2:	ff 77 1c             	push   0x1c(%edi)
4130e5:	ff 15 40 07 4b 00    	call   *0x4b0740
4130eb:	8b 45 d8             	mov    -0x28(%ebp),%eax
4130ee:	2b 45 d0             	sub    -0x30(%ebp),%eax
4130f1:	53                   	push   %ebx
4130f2:	99                   	cltd
4130f3:	2b c2                	sub    %edx,%eax
4130f5:	d1 f8                	sar    $1,%eax
4130f7:	53                   	push   %ebx
4130f8:	53                   	push   %ebx
4130f9:	50                   	push   %eax
4130fa:	8b 45 d4             	mov    -0x2c(%ebp),%eax
4130fd:	2b 45 cc             	sub    -0x34(%ebp),%eax
413100:	8b cf                	mov    %edi,%ecx
413102:	99                   	cltd
413103:	2b c2                	sub    %edx,%eax
413105:	d1 f8                	sar    $1,%eax
413107:	50                   	push   %eax
413108:	e8 20 dc 02 00       	call   0x440d2d
41310d:	6a 01                	push   $0x1
41310f:	8b cf                	mov    %edi,%ecx
413111:	e8 55 dc 02 00       	call   0x440d6b
413116:	8b 46 04             	mov    0x4(%esi),%eax
413119:	8b 40 4c             	mov    0x4c(%eax),%eax
41311c:	8b 08                	mov    (%eax),%ecx
41311e:	8d 7e 48             	lea    0x48(%esi),%edi
413121:	57                   	push   %edi
413122:	68 58 c5 48 00       	push   $0x48c558
413127:	50                   	push   %eax
413128:	ff 11                	call   *(%ecx)
41312a:	85 c0                	test   %eax,%eax
41312c:	7c 5c                	jl     0x41318a
41312e:	8b 07                	mov    (%edi),%eax
413130:	8b 08                	mov    (%eax),%ecx
413132:	8d 7e 4c             	lea    0x4c(%esi),%edi
413135:	57                   	push   %edi
413136:	68 ac 65 49 00       	push   $0x4965ac
41313b:	53                   	push   %ebx
41313c:	50                   	push   %eax
41313d:	ff 51 0c             	call   *0xc(%ecx)
413140:	39 1f                	cmp    %ebx,(%edi)
413142:	89 45 fc             	mov    %eax,-0x4(%ebp)
413145:	75 07                	jne    0x41314e
413147:	c7 45 fc 03 40 00 80 	movl   $0x80004003,-0x4(%ebp)
41314e:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
413151:	0f 8d a4 00 00 00    	jge    0x4131fb
413157:	39 5d ec             	cmp    %ebx,-0x14(%ebp)
41315a:	74 26                	je     0x413182
41315c:	8b 45 e8             	mov    -0x18(%ebp),%eax
41315f:	2b 45 e0             	sub    -0x20(%ebp),%eax
413162:	8b 4d f8             	mov    -0x8(%ebp),%ecx