473d25:	88 85 7b ff ff ff    	mov    %al,-0x85(%ebp)
473d2b:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
473d31:	3b 37                	cmp    (%edi),%esi
473d33:	72 39                	jb     0x473d6e
473d35:	8b c6                	mov    %esi,%eax
473d37:	2b 47 04             	sub    0x4(%edi),%eax
473d3a:	3b 47 10             	cmp    0x10(%edi),%eax
473d3d:	0f 84 55 04 00 00    	je     0x474198
473d43:	ff 77 48             	push   0x48(%edi)
473d46:	8b cf                	mov    %edi,%ecx
473d48:	50                   	push   %eax
473d49:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
473d4f:	50                   	push   %eax
473d50:	e8 db b1 fe ff       	call   0x45ef30
473d55:	80 bd 58 ff ff ff 00 	cmpb   $0x0,-0xa8(%ebp)
473d5c:	8b b5 54 ff ff ff    	mov    -0xac(%ebp),%esi
473d62:	0f 85 44 04 00 00    	jne    0x4741ac
473d68:	8b 8d 7c ff ff ff    	mov    -0x84(%ebp),%ecx
473d6e:	8a 06                	mov    (%esi),%al
473d70:	89 75 80             	mov    %esi,-0x80(%ebp)
473d73:	46                   	inc    %esi
473d74:	3c 10                	cmp    $0x10,%al
473d76:	0f 85 a6 02 00 00    	jne    0x474022
473d7c:	0f b7 16             	movzwl (%esi),%edx
473d7f:	0f be c2             	movsbl %dl,%eax
473d82:	03 d0                	add    %eax,%edx
473d84:	89 45 80             	mov    %eax,-0x80(%ebp)
473d87:	03 c0                	add    %eax,%eax
473d89:	c7 85 6c ff ff ff 00 	movl   $0x0,-0x94(%ebp)
473d90:	00 00 00
473d93:	23 c2                	and    %edx,%eax
473d95:	8b c8                	mov    %eax,%ecx
473d97:	d1 e9                	shr    $1,%ecx
473d99:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
473d9f:	66 85 c0             	test   %ax,%ax
473da2:	78 1b                	js     0x473dbf
473da4:	3b 55 80             	cmp    -0x80(%ebp),%edx
473da7:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
473dad:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
473db3:	1b c0                	sbb    %eax,%eax
473db5:	f7 d8                	neg    %eax
473db7:	40                   	inc    %eax
473db8:	03 f0                	add    %eax,%esi
473dba:	e9 a8 00 00 00       	jmp    0x473e67
473dbf:	8d 56 02             	lea    0x2(%esi),%edx
473dc2:	c7 85 64 ff ff ff 01 	movl   $0x1,-0x9c(%ebp)
473dc9:	00 00 00
473dcc:	c7 85 68 ff ff ff 0d 	movl   $0xd,-0x98(%ebp)
473dd3:	00 00 00
473dd6:	89 55 80             	mov    %edx,-0x80(%ebp)
473dd9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
473de0:	0f b7 0a             	movzwl (%edx),%ecx
473de3:	0f be c1             	movsbl %cl,%eax
473de6:	03 c8                	add    %eax,%ecx
473de8:	3b c8                	cmp    %eax,%ecx
473dea:	1b f6                	sbb    %esi,%esi
473dec:	8d 3c 00             	lea    (%eax,%eax,1),%edi
473def:	42                   	inc    %edx
473df0:	23 f9                	and    %ecx,%edi
473df2:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
473df8:	f7 de                	neg    %esi
473dfa:	03 f2                	add    %edx,%esi
473dfc:	8b c7                	mov    %edi,%eax
473dfe:	33 d2                	xor    %edx,%edx
473e00:	83 c0 fe             	add    $0xfffffffe,%eax
473e03:	83 d2 ff             	adc    $0xffffffff,%edx
473e06:	e8 a5 dd 15 00       	call   0x5d1bb0
473e0b:	8b 8d 7c ff ff ff    	mov    -0x84(%ebp),%ecx
473e11:	03 c8                	add    %eax,%ecx
473e13:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
473e19:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
473e1f:	13 c2                	adc    %edx,%eax
473e21:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
473e27:	66 85 ff             	test   %di,%di
473e2a:	79 29                	jns    0x473e55
473e2c:	8b 85 64 ff ff ff    	mov    -0x9c(%ebp),%eax
473e32:	8b 55 80             	mov    -0x80(%ebp),%edx
473e35:	40                   	inc    %eax
473e36:	83 85 68 ff ff ff 0e 	addl   $0xe,-0x98(%ebp)
473e3d:	83 c2 02             	add    $0x2,%edx
473e40:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
473e46:	89 55 80             	mov    %edx,-0x80(%ebp)
473e49:	83 f8 05             	cmp    $0x5,%eax
473e4c:	72 92                	jb     0x473de0
473e4e:	33 f6                	xor    %esi,%esi
473e50:	e9 57 03 00 00       	jmp    0x4741ac
473e55:	8b bd 70 ff ff ff    	mov    -0x90(%ebp),%edi
473e5b:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
473e61:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
473e67:	85 f6                	test   %esi,%esi
473e69:	74 e3                	je     0x473e4e
473e6b:	80 bd 7b ff ff ff 00 	cmpb   $0x0,-0x85(%ebp)
473e72:	0f 84 b9 fe ff ff    	je     0x473d31
473e78:	8b 47 4c             	mov    0x4c(%edi),%eax
473e7b:	51                   	push   %ecx
473e7c:	85 c0                	test   %eax,%eax
473e7e:	75 10                	jne    0x473e90
473e80:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
473e86:	8b 48 08             	mov    0x8(%eax),%ecx
473e89:	e8 62 04 ff ff       	call   0x4642f0
473e8e:	eb 10                	jmp    0x473ea0
473e90:	8b 8d 74 ff ff ff    	mov    -0x8c(%ebp),%ecx
473e96:	ff 71 04             	push   0x4(%ecx)
473e99:	8b c8                	mov    %eax,%ecx
473e9b:	e8 d0 c8 01 00       	call   0x490770
473ea0:	89 45 80             	mov    %eax,-0x80(%ebp)
473ea3:	85 c0                	test   %eax,%eax
473ea5:	0f 84 2a 01 00 00    	je     0x473fd5
473eab:	8b c8                	mov    %eax,%ecx
473ead:	e8 6e a7 02 00       	call   0x49e620
473eb2:	85 c0                	test   %eax,%eax
473eb4:	0f 84 1b 01 00 00    	je     0x473fd5
473eba:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
473ec0:	8b 57 50             	mov    0x50(%edi),%edx
473ec3:	52                   	push   %edx
473ec4:	8b 08                	mov    (%eax),%ecx
473ec6:	8b 45 80             	mov    -0x80(%ebp),%eax
473ec9:	50                   	push   %eax
473eca:	51                   	push   %ecx
473ecb:	83 78 20 03          	cmpl   $0x3,0x20(%eax)
473ecf:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
473ed5:	8b 48 08             	mov    0x8(%eax),%ecx
473ed8:	75 07                	jne    0x473ee1
473eda:	e8 41 f0 fe ff       	call   0x462f20
473edf:	eb 05                	jmp    0x473ee6
473ee1:	e8 6a 25 ff ff       	call   0x466450
473ee6:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
473eea:	0f 57 c0             	xorps  %xmm0,%xmm0
473eed:	89 45 80             	mov    %eax,-0x80(%ebp)
473ef0:	8b 47 44             	mov    0x44(%edi),%eax
473ef3:	8d 7d d8             	lea    -0x28(%ebp),%edi
473ef6:	0f 43 7d d8          	cmovae -0x28(%ebp),%edi
473efa:	89 45 c8             	mov    %eax,-0x38(%ebp)
473efd:	8b 45 e8             	mov    -0x18(%ebp),%eax
473f00:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
473f07:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
473f0e:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
473f15:	c7 45 cc 00 00 00 80 	movl   $0x80000000,-0x34(%ebp)
473f1c:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
473f23:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
473f2a:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
473f31:	0f 11 45 98          	movups %xmm0,-0x68(%ebp)
473f35:	0f 11 45 a8          	movups %xmm0,-0x58(%ebp)
473f39:	83 f8 10             	cmp    $0x10,%eax
473f3c:	7e 1a                	jle    0x473f58
473f3e:	83 c0 f0             	add    $0xfffffff0,%eax
473f41:	c7 45 94 10 00 00 00 	movl   $0x10,-0x6c(%ebp)
473f48:	03 c7                	add    %edi,%eax
473f4a:	89 45 88             	mov    %eax,-0x78(%ebp)
473f4d:	89 45 84             	mov    %eax,-0x7c(%ebp)
473f50:	8d 45 9c             	lea    -0x64(%ebp),%eax
473f53:	89 45 8c             	mov    %eax,-0x74(%ebp)
473f56:	eb 3d                	jmp    0x473f95
473f58:	50                   	push   %eax
473f59:	8d 45 9c             	lea    -0x64(%ebp),%eax
473f5c:	57                   	push   %edi
473f5d:	50                   	push   %eax
473f5e:	e8 6d ee 15 00       	call   0x5d2dd0
473f63:	8b 45 e8             	mov    -0x18(%ebp),%eax
473f66:	83 c4 0c             	add    $0xc,%esp
473f69:	83 7d bc 01          	cmpl   $0x1,-0x44(%ebp)
473f6d:	c7 45 94 00 00 00 00 	movl   $0x0,-0x6c(%ebp)
473f74:	c7 45 8c 00 00 00 00 	movl   $0x0,-0x74(%ebp)
473f7b:	8d 44 05 9c          	lea    -0x64(%ebp,%eax,1),%eax
473f7f:	89 45 88             	mov    %eax,-0x78(%ebp)
473f82:	89 45 84             	mov    %eax,-0x7c(%ebp)
473f85:	75 0b                	jne    0x473f92
473f87:	8d 45 84             	lea    -0x7c(%ebp),%eax
473f8a:	2b f8                	sub    %eax,%edi
473f8c:	83 ef 18             	sub    $0x18,%edi
473f8f:	89 7d bc             	mov    %edi,-0x44(%ebp)
473f92:	8d 7d 9c             	lea    -0x64(%ebp),%edi
473f95:	8b 8d 70 ff ff ff    	mov    -0x90(%ebp),%ecx
473f9b:	8d 55 84             	lea    -0x7c(%ebp),%edx
473f9e:	52                   	push   %edx
473f9f:	57                   	push   %edi
473fa0:	8b 41 4c             	mov    0x4c(%ecx),%eax
473fa3:	89 45 d0             	mov    %eax,-0x30(%ebp)
473fa6:	8b 41 50             	mov    0x50(%ecx),%eax
473fa9:	8b 4d 80             	mov    -0x80(%ebp),%ecx
473fac:	89 45 d4             	mov    %eax,-0x2c(%ebp)
473faf:	8b 01                	mov    (%ecx),%eax
473fb1:	8b 40 28             	mov    0x28(%eax),%eax
473fb4:	ff d0                	call   *%eax
473fb6:	85 c0                	test   %eax,%eax
473fb8:	0f 84 90 fe ff ff    	je     0x473e4e
473fbe:	83 7d c0 00          	cmpl   $0x0,-0x40(%ebp)
473fc2:	0f 85 86 fe ff ff    	jne    0x473e4e
473fc8:	8b bd 70 ff ff ff    	mov    -0x90(%ebp),%edi
473fce:	33 c9                	xor    %ecx,%ecx
473fd0:	e9 56 fd ff ff       	jmp    0x473d2b
473fd5:	8b 85 5c ff ff ff    	mov    -0xa4(%ebp),%eax
473fdb:	f6 00 01             	testb  $0x1,(%eax)
473fde:	74 0a                	je     0x473fea
473fe0:	8b 00                	mov    (%eax),%eax
473fe2:	83 e0 fc             	and    $0xfffffffc,%eax
473fe5:	83 c0 04             	add    $0x4,%eax
473fe8:	eb 07                	jmp    0x473ff1
473fea:	8b c8                	mov    %eax,%ecx
473fec:	e8 3f cc fd ff       	call   0x450c30
473ff1:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
473ff5:	8d 4d d8             	lea    -0x28(%ebp),%ecx
473ff8:	ff 75 e8             	push   -0x18(%ebp)
473ffb:	0f 43 4d d8          	cmovae -0x28(%ebp),%ecx
473fff:	8b bd 7c ff ff ff    	mov    -0x84(%ebp),%edi
474005:	51                   	push   %ecx
474006:	57                   	push   %edi
474007:	8b c8                	mov    %eax,%ecx
474009:	e8 92 c6 fe ff       	call   0x4606a0
47400e:	8b c8                	mov    %eax,%ecx
474010:	e8 0b 36 fd ff       	call   0x447620
474015:	8b bd 70 ff ff ff    	mov    -0x90(%ebp),%edi
47401b:	33 c9                	xor    %ecx,%ecx
47401d:	e9 09 fd ff ff       	jmp    0x473d2b
474022:	3c 1a                	cmp    $0x1a,%al
474024:	0f 85 fb 00 00 00    	jne    0x474125
47402a:	85 c9                	test   %ecx,%ecx
47402c:	75 7d                	jne    0x4740ab
47402e:	0f b6 0e             	movzbl (%esi),%ecx
474031:	89 4d 80             	mov    %ecx,-0x80(%ebp)
474034:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
47403a:	73 03                	jae    0x47403f
47403c:	46                   	inc    %esi
47403d:	eb 20                	jmp    0x47405f
47403f:	51                   	push   %ecx
474040:	8d 85 4c ff ff ff    	lea    -0xb4(%ebp),%eax
474046:	56                   	push   %esi
474047:	50                   	push   %eax
474048:	e8 23 b8 fe ff       	call   0x45f870
47404d:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
474053:	83 c4 0c             	add    $0xc,%esp
474056:	8b b5 4c ff ff ff    	mov    -0xb4(%ebp),%esi
47405c:	89 4d 80             	mov    %ecx,-0x80(%ebp)
47405f:	85 f6                	test   %esi,%esi
474061:	0f 84 e7 fd ff ff    	je     0x473e4e
474067:	8b 47 04             	mov    0x4(%edi),%eax
47406a:	2b c6                	sub    %esi,%eax
47406c:	83 c0 10             	add    $0x10,%eax
47406f:	3b c8                	cmp    %eax,%ecx
474071:	7f 0f                	jg     0x474082
474073:	51                   	push   %ecx
474074:	56                   	push   %esi
474075:	8d 4d d8             	lea    -0x28(%ebp),%ecx
474078:	e8 a3 35 fd ff       	call   0x447620
47407d:	03 75 80             	add    -0x80(%ebp),%esi
474080:	eb 0f                	jmp    0x474091
474082:	8d 45 d8             	lea    -0x28(%ebp),%eax
474085:	50                   	push   %eax
474086:	51                   	push   %ecx
474087:	56                   	push   %esi
474088:	8b cf                	mov    %edi,%ecx
47408a:	e8 61 b8 fe ff       	call   0x45f8f0
47408f:	8b f0                	mov    %eax,%esi
474091:	85 f6                	test   %esi,%esi
474093:	0f 84 b5 fd ff ff    	je     0x473e4e
474099:	8b 8d 7c ff ff ff    	mov    -0x84(%ebp),%ecx
47409f:	c6 85 7b ff ff ff 01 	movb   $0x1,-0x85(%ebp)
4740a6:	e9 86 fc ff ff       	jmp    0x473d31
4740ab:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
4740b1:	51                   	push   %ecx
4740b2:	8b 48 04             	mov    0x4(%eax),%ecx
4740b5:	e8 46 c9 01 00       	call   0x490a00
4740ba:	85 c0                	test   %eax,%eax
4740bc:	74 28                	je     0x4740e6
4740be:	8b 4f 4c             	mov    0x4c(%edi),%ecx
4740c1:	8b bd 7c ff ff ff    	mov    -0x84(%ebp),%edi
4740c7:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
4740cd:	57                   	push   %edi
4740ce:	85 c9                	test   %ecx,%ecx
4740d0:	75 0a                	jne    0x4740dc
4740d2:	8b 48 08             	mov    0x8(%eax),%ecx
4740d5:	e8 16 02 ff ff       	call   0x4642f0
4740da:	eb 12                	jmp    0x4740ee
4740dc:	ff 70 04             	push   0x4(%eax)
4740df:	e8 8c c6 01 00       	call   0x490770
4740e4:	eb 08                	jmp    0x4740ee
4740e6:	8b bd 7c ff ff ff    	mov    -0x84(%ebp),%edi
4740ec:	33 c0                	xor    %eax,%eax
4740ee:	8b 8d 74 ff ff ff    	mov    -0x8c(%ebp),%ecx
4740f4:	ba 08 00 00 00       	mov    $0x8,%edx
4740f9:	50                   	push   %eax
4740fa:	8b c7                	mov    %edi,%eax
4740fc:	8b bd 70 ff ff ff    	mov    -0x90(%ebp),%edi
474102:	f7 e2                	mul    %edx
474104:	ff 71 08             	push   0x8(%ecx)
474107:	83 c0 02             	add    $0x2,%eax
47410a:	83 d2 00             	adc    $0x0,%edx
47410d:	52                   	push   %edx
47410e:	50                   	push   %eax
47410f:	57                   	push   %edi
474110:	56                   	push   %esi
474111:	ff 31                	push   (%ecx)
474113:	e8 78 02 00 00       	call   0x474390
474118:	83 c4 1c             	add    $0x1c,%esp
47411b:	33 c9                	xor    %ecx,%ecx
47411d:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
474123:	eb 67                	jmp    0x47418c
474125:	0f b6 d0             	movzbl %al,%edx
474128:	81 fa 80 00 00 00    	cmp    $0x80,%edx
47412e:	72 3d                	jb     0x47416d
474130:	0f b6 0e             	movzbl (%esi),%ecx
474133:	83 c2 80             	add    $0xffffff80,%edx
474136:	8b c1                	mov    %ecx,%eax
474138:	c1 e0 07             	shl    $0x7,%eax
47413b:	03 d0                	add    %eax,%edx
47413d:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
474143:	73 08                	jae    0x47414d
474145:	8b 75 80             	mov    -0x80(%ebp),%esi
474148:	83 c6 02             	add    $0x2,%esi
47414b:	eb 20                	jmp    0x47416d
47414d:	8b 45 80             	mov    -0x80(%ebp),%eax
474150:	52                   	push   %edx
474151:	50                   	push   %eax
474152:	8d 85 44 ff ff ff    	lea    -0xbc(%ebp),%eax
474158:	50                   	push   %eax
474159:	e8 82 b8 fe ff       	call   0x45f9e0
47415e:	8b 95 48 ff ff ff    	mov    -0xb8(%ebp),%edx
474164:	83 c4 0c             	add    $0xc,%esp
474167:	8b b5 44 ff ff ff    	mov    -0xbc(%ebp),%esi
47416d:	85 d2                	test   %edx,%edx
47416f:	74 35                	je     0x4741a6
474171:	8b c2                	mov    %edx,%eax
474173:	24 07                	and    $0x7,%al
474175:	3c 04                	cmp    $0x4,%al
474177:	74 2d                	je     0x4741a6
474179:	57                   	push   %edi
47417a:	56                   	push   %esi
47417b:	6a 00                	push   $0x0
47417d:	52                   	push   %edx
47417e:	e8 ad b8 fe ff       	call   0x45fa30
474183:	8b 8d 7c ff ff ff    	mov    -0x84(%ebp),%ecx
474189:	83 c4 10             	add    $0x10,%esp
47418c:	8b f0                	mov    %eax,%esi
47418e:	85 f6                	test   %esi,%esi
474190:	0f 85 9b fb ff ff    	jne    0x473d31
474196:	eb 14                	jmp    0x4741ac
474198:	85 c0                	test   %eax,%eax
47419a:	7e 10                	jle    0x4741ac
47419c:	33 c0                	xor    %eax,%eax
47419e:	39 47 08             	cmp    %eax,0x8(%edi)
4741a1:	0f 44 f0             	cmove  %eax,%esi
4741a4:	eb 06                	jmp    0x4741ac
4741a6:	8d 42 ff             	lea    -0x1(%edx),%eax
4741a9:	89 47 3c             	mov    %eax,0x3c(%edi)
4741ac:	8b 55 ec             	mov    -0x14(%ebp),%edx
4741af:	83 fa 10             	cmp    $0x10,%edx
4741b2:	72 28                	jb     0x4741dc
4741b4:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4741b7:	42                   	inc    %edx
4741b8:	8b c1                	mov    %ecx,%eax