401c46:	52                   	push   %edx
401c47:	e8 32 0f 00 00       	call   0x402b7e
401c4c:	83 c4 08             	add    $0x8,%esp
401c4f:	be 01 00 00 00       	mov    $0x1,%esi
401c54:	39 74 24 38          	cmp    %esi,0x38(%esp)
401c58:	0f 8e d8 00 00 00    	jle    0x401d36
401c5e:	66 90                	xchg   %ax,%ax
401c60:	8b 44 24 3c          	mov    0x3c(%esp),%eax
401c64:	0f 57 c0             	xorps  %xmm0,%xmm0
401c67:	0f 29 84 24 90 00 00 	movaps %xmm0,0x90(%esp)
401c6e:	00
401c6f:	c7 84 24 a0 00 00 00 	movl   $0x0,0xa0(%esp)
401c76:	00 00 00 00
401c7a:	c7 84 24 a4 00 00 00 	movl   $0x0,0xa4(%esp)
401c81:	00 00 00 00
401c85:	8b 14 b0             	mov    (%eax,%esi,4),%edx
401c88:	8b ca                	mov    %edx,%ecx
401c8a:	8d 79 02             	lea    0x2(%ecx),%edi
401c8d:	0f 1f 00             	nopl   (%eax)
401c90:	66 8b 01             	mov    (%ecx),%ax
401c93:	83 c1 02             	add    $0x2,%ecx
401c96:	66 85 c0             	test   %ax,%ax
401c99:	75 f5                	jne    0x401c90
401c9b:	2b cf                	sub    %edi,%ecx
401c9d:	d1 f9                	sar    $1,%ecx
401c9f:	51                   	push   %ecx
401ca0:	52                   	push   %edx
401ca1:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
401ca8:	e8 63 04 00 00       	call   0x402110
401cad:	8b 44 24 58          	mov    0x58(%esp),%eax
401cb1:	3b 44 24 5c          	cmp    0x5c(%esp),%eax
401cb5:	74 20                	je     0x401cd7
401cb7:	0f 10 84 24 90 00 00 	movups 0x90(%esp),%xmm0
401cbe:	00
401cbf:	0f 11 00             	movups %xmm0,(%eax)
401cc2:	f3 0f 7e 84 24 a0 00 	movq   0xa0(%esp),%xmm0
401cc9:	00 00
401ccb:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
401cd0:	83 44 24 58 18       	addl   $0x18,0x58(%esp)
401cd5:	eb 54                	jmp    0x401d2b
401cd7:	8d 8c 24 90 00 00 00 	lea    0x90(%esp),%ecx
401cde:	51                   	push   %ecx
401cdf:	50                   	push   %eax
401ce0:	8d 4c 24 5c          	lea    0x5c(%esp),%ecx
401ce4:	e8 f7 0a 00 00       	call   0x4027e0
401ce9:	8b 8c 24 a4 00 00 00 	mov    0xa4(%esp),%ecx
401cf0:	83 f9 08             	cmp    $0x8,%ecx
401cf3:	72 36                	jb     0x401d2b
401cf5:	8b 94 24 90 00 00 00 	mov    0x90(%esp),%edx
401cfc:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401d03:	8b c2                	mov    %edx,%eax
401d05:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401d0b:	72 14                	jb     0x401d21
401d0d:	8b 50 fc             	mov    -0x4(%eax),%edx
401d10:	83 c1 23             	add    $0x23,%ecx
401d13:	2b c2                	sub    %edx,%eax
401d15:	83 c0 fc             	add    $0xfffffffc,%eax
401d18:	83 f8 1f             	cmp    $0x1f,%eax
401d1b:	0f 87 32 01 00 00    	ja     0x401e53
401d21:	51                   	push   %ecx
401d22:	52                   	push   %edx
401d23:	e8 56 0e 00 00       	call   0x402b7e
401d28:	83 c4 08             	add    $0x8,%esp
401d2b:	46                   	inc    %esi
401d2c:	3b 74 24 38          	cmp    0x38(%esp),%esi
401d30:	0f 8c 2a ff ff ff    	jl     0x401c60
401d36:	ff 74 24 3c          	push   0x3c(%esp)
401d3a:	ff 15 0c f0 40 00    	call   *0x40f00c
401d40:	8b 44 24 58          	mov    0x58(%esp),%eax
401d44:	3b 44 24 5c          	cmp    0x5c(%esp),%eax
401d48:	74 29                	je     0x401d73
401d4a:	0f 57 c0             	xorps  %xmm0,%xmm0
401d4d:	8b c8                	mov    %eax,%ecx
401d4f:	6a 0f                	push   $0xf
401d51:	0f 11 00             	movups %xmm0,(%eax)
401d54:	68 a0 3d 41 00       	push   $0x413da0
401d59:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)
401d60:	c7 40 14 00 00 00 00 	movl   $0x0,0x14(%eax)
401d67:	e8 a4 03 00 00       	call   0x402110
401d6c:	83 44 24 58 18       	addl   $0x18,0x58(%esp)
401d71:	eb 0f                	jmp    0x401d82
401d73:	68 a0 3d 41 00       	push   $0x413da0
401d78:	50                   	push   %eax
401d79:	8d 4c 24 5c          	lea    0x5c(%esp),%ecx
401d7d:	e8 1e 08 00 00       	call   0x4025a0
401d82:	8d 4c 24 54          	lea    0x54(%esp),%ecx
401d86:	e8 b5 f9 ff ff       	call   0x401740
401d8b:	8b 8c 24 8c 00 00 00 	mov    0x8c(%esp),%ecx
401d92:	83 f9 08             	cmp    $0x8,%ecx
401d95:	72 33                	jb     0x401dca
401d97:	8b 54 24 78          	mov    0x78(%esp),%edx
401d9b:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401da2:	8b c2                	mov    %edx,%eax
401da4:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401daa:	72 14                	jb     0x401dc0
401dac:	8b 50 fc             	mov    -0x4(%eax),%edx
401daf:	83 c1 23             	add    $0x23,%ecx
401db2:	2b c2                	sub    %edx,%eax
401db4:	83 c0 fc             	add    $0xfffffffc,%eax
401db7:	83 f8 1f             	cmp    $0x1f,%eax
401dba:	0f 87 93 00 00 00    	ja     0x401e53
401dc0:	51                   	push   %ecx
401dc1:	52                   	push   %edx
401dc2:	e8 b7 0d 00 00       	call   0x402b7e
401dc7:	83 c4 08             	add    $0x8,%esp
401dca:	8b 4c 24 74          	mov    0x74(%esp),%ecx
401dce:	33 c0                	xor    %eax,%eax
401dd0:	c7 84 24 88 00 00 00 	movl   $0x0,0x88(%esp)
401dd7:	00 00 00 00
401ddb:	c7 84 24 8c 00 00 00 	movl   $0x7,0x8c(%esp)
401de2:	07 00 00 00
401de6:	66 89 44 24 78       	mov    %ax,0x78(%esp)
401deb:	83 f9 08             	cmp    $0x8,%ecx
401dee:	72 2f                	jb     0x401e1f
401df0:	8b 54 24 60          	mov    0x60(%esp),%edx
401df4:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401dfb:	8b c2                	mov    %edx,%eax
401dfd:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401e03:	72 10                	jb     0x401e15
401e05:	8b 50 fc             	mov    -0x4(%eax),%edx
401e08:	83 c1 23             	add    $0x23,%ecx
401e0b:	2b c2                	sub    %edx,%eax
401e0d:	83 c0 fc             	add    $0xfffffffc,%eax
401e10:	83 f8 1f             	cmp    $0x1f,%eax
401e13:	77 3e                	ja     0x401e53
401e15:	51                   	push   %ecx
401e16:	52                   	push   %edx
401e17:	e8 62 0d 00 00       	call   0x402b7e
401e1c:	83 c4 08             	add    $0x8,%esp
401e1f:	33 c0                	xor    %eax,%eax
401e21:	c7 44 24 70 00 00 00 	movl   $0x0,0x70(%esp)
401e28:	00
401e29:	8d 4c 24 54          	lea    0x54(%esp),%ecx
401e2d:	c7 44 24 74 07 00 00 	movl   $0x7,0x74(%esp)
401e34:	00
401e35:	66 89 44 24 60       	mov    %ax,0x60(%esp)
401e3a:	e8 21 00 00 00       	call   0x401e60
401e3f:	5f                   	pop    %edi
401e40:	33 c0                	xor    %eax,%eax
401e42:	5e                   	pop    %esi
401e43:	8b e5                	mov    %ebp,%esp
401e45:	5d                   	pop    %ebp
401e46:	c2 10 00             	ret    $0x10
401e49:	e8 de 3e 00 00       	call   0x405d2c
401e4e:	e8 d9 3e 00 00       	call   0x405d2c
401e53:	e8 d4 3e 00 00       	call   0x405d2c
401e58:	cc                   	int3
401e59:	cc                   	int3
401e5a:	cc                   	int3
401e5b:	cc                   	int3
401e5c:	cc                   	int3
401e5d:	cc                   	int3
401e5e:	cc                   	int3
401e5f:	cc                   	int3
401e60:	57                   	push   %edi
401e61:	8b f9                	mov    %ecx,%edi
401e63:	8b 0f                	mov    (%edi),%ecx
401e65:	85 c9                	test   %ecx,%ecx
401e67:	74 64                	je     0x401ecd
401e69:	8b 57 04             	mov    0x4(%edi),%edx
401e6c:	56                   	push   %esi
401e6d:	51                   	push   %ecx
401e6e:	e8 9d 03 00 00       	call   0x402210
401e73:	8b 4f 08             	mov    0x8(%edi),%ecx
401e76:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
401e7b:	8b 37                	mov    (%edi),%esi
401e7d:	83 c4 04             	add    $0x4,%esp
401e80:	2b ce                	sub    %esi,%ecx
401e82:	f7 e9                	imul   %ecx
401e84:	c1 fa 02             	sar    $0x2,%edx
401e87:	8b c2                	mov    %edx,%eax
401e89:	c1 e8 1f             	shr    $0x1f,%eax
401e8c:	03 c2                	add    %edx,%eax
401e8e:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
401e91:	c1 e1 03             	shl    $0x3,%ecx
401e94:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401e9a:	72 12                	jb     0x401eae
401e9c:	8b 56 fc             	mov    -0x4(%esi),%edx
401e9f:	83 c1 23             	add    $0x23,%ecx
401ea2:	2b f2                	sub    %edx,%esi
401ea4:	8d 46 fc             	lea    -0x4(%esi),%eax
401ea7:	83 f8 1f             	cmp    $0x1f,%eax
401eaa:	77 23                	ja     0x401ecf
401eac:	8b f2                	mov    %edx,%esi
401eae:	51                   	push   %ecx
401eaf:	56                   	push   %esi
401eb0:	e8 c9 0c 00 00       	call   0x402b7e
401eb5:	83 c4 08             	add    $0x8,%esp
401eb8:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
401ebe:	c7 47 04 00 00 00 00 	movl   $0x0,0x4(%edi)
401ec5:	c7 47 08 00 00 00 00 	movl   $0x0,0x8(%edi)
401ecc:	5e                   	pop    %esi
401ecd:	5f                   	pop    %edi
401ece:	c3                   	ret
401ecf:	e8 58 3e 00 00       	call   0x405d2c
401ed4:	cc                   	int3
401ed5:	cc                   	int3
401ed6:	cc                   	int3
401ed7:	cc                   	int3
401ed8:	cc                   	int3
401ed9:	cc                   	int3
401eda:	cc                   	int3
401edb:	cc                   	int3
401edc:	cc                   	int3
401edd:	cc                   	int3
401ede:	cc                   	int3
401edf:	cc                   	int3
401ee0:	56                   	push   %esi
401ee1:	8b f1                	mov    %ecx,%esi
401ee3:	8b 4e 14             	mov    0x14(%esi),%ecx
401ee6:	83 f9 08             	cmp    $0x8,%ecx
401ee9:	72 2d                	jb     0x401f18
401eeb:	8b 06                	mov    (%esi),%eax
401eed:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401ef4:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401efa:	72 12                	jb     0x401f0e
401efc:	8b 50 fc             	mov    -0x4(%eax),%edx
401eff:	83 c1 23             	add    $0x23,%ecx
401f02:	2b c2                	sub    %edx,%eax
401f04:	83 c0 fc             	add    $0xfffffffc,%eax
401f07:	83 f8 1f             	cmp    $0x1f,%eax
401f0a:	77 21                	ja     0x401f2d
401f0c:	8b c2                	mov    %edx,%eax
401f0e:	51                   	push   %ecx
401f0f:	50                   	push   %eax
401f10:	e8 69 0c 00 00       	call   0x402b7e
401f15:	83 c4 08             	add    $0x8,%esp
401f18:	33 c0                	xor    %eax,%eax
401f1a:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
401f21:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
401f28:	66 89 06             	mov    %ax,(%esi)
401f2b:	5e                   	pop    %esi
401f2c:	c3                   	ret
401f2d:	e8 fa 3d 00 00       	call   0x405d2c
401f32:	cc                   	int3
401f33:	cc                   	int3
401f34:	cc                   	int3
401f35:	cc                   	int3
401f36:	cc                   	int3
401f37:	cc                   	int3
401f38:	cc                   	int3
401f39:	cc                   	int3
401f3a:	cc                   	int3
401f3b:	cc                   	int3
401f3c:	cc                   	int3
401f3d:	cc                   	int3
401f3e:	cc                   	int3
401f3f:	cc                   	int3
401f40:	55                   	push   %ebp
401f41:	8b ec                	mov    %esp,%ebp
401f43:	8b 45 08             	mov    0x8(%ebp),%eax
401f46:	0f 57 c0             	xorps  %xmm0,%xmm0
401f49:	53                   	push   %ebx
401f4a:	56                   	push   %esi
401f4b:	8b f1                	mov    %ecx,%esi
401f4d:	89 45 08             	mov    %eax,0x8(%ebp)
401f50:	0f 11 06             	movups %xmm0,(%esi)
401f53:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
401f5a:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
401f61:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
401f65:	8b 58 10             	mov    0x10(%eax),%ebx
401f68:	72 05                	jb     0x401f6f
401f6a:	8b 00                	mov    (%eax),%eax
401f6c:	89 45 08             	mov    %eax,0x8(%ebp)
401f6f:	81 fb fe ff ff 7f    	cmp    $0x7ffffffe,%ebx
401f75:	0f 87 b8 00 00 00    	ja     0x402033
401f7b:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
401f82:	83 fb 08             	cmp    $0x8,%ebx
401f85:	73 17                	jae    0x401f9e
401f87:	6a 10                	push   $0x10
401f89:	50                   	push   %eax
401f8a:	56                   	push   %esi
401f8b:	89 5e 10             	mov    %ebx,0x10(%esi)
401f8e:	e8 bd 34 00 00       	call   0x405450
401f93:	83 c4 0c             	add    $0xc,%esp
401f96:	8b c6                	mov    %esi,%eax
401f98:	5e                   	pop    %esi
401f99:	5b                   	pop    %ebx
401f9a:	5d                   	pop    %ebp
401f9b:	c2 04 00             	ret    $0x4
401f9e:	57                   	push   %edi
401f9f:	8b fb                	mov    %ebx,%edi
401fa1:	83 cf 07             	or     $0x7,%edi
401fa4:	81 ff fe ff ff 7f    	cmp    $0x7ffffffe,%edi
401faa:	76 0e                	jbe    0x401fba
401fac:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
401fb1:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
401fb6:	03 c0                	add    %eax,%eax
401fb8:	eb 1d                	jmp    0x401fd7
401fba:	b8 0a 00 00 00       	mov    $0xa,%eax
401fbf:	3b f8                	cmp    %eax,%edi
401fc1:	0f 42 f8             	cmovb  %eax,%edi
401fc4:	8d 47 01             	lea    0x1(%edi),%eax
401fc7:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
401fcc:	77 60                	ja     0x40202e
401fce:	03 c0                	add    %eax,%eax
401fd0:	3d 00 10 00 00       	cmp    $0x1000,%eax
401fd5:	72 1f                	jb     0x401ff6
401fd7:	8d 48 23             	lea    0x23(%eax),%ecx
401fda:	3b c8                	cmp    %eax,%ecx
401fdc:	76 50                	jbe    0x40202e
401fde:	51                   	push   %ecx
401fdf:	e8 cb 0b 00 00       	call   0x402baf
401fe4:	83 c4 04             	add    $0x4,%esp
401fe7:	85 c0                	test   %eax,%eax
401fe9:	74 4d                	je     0x402038
401feb:	8d 48 23             	lea    0x23(%eax),%ecx
401fee:	83 e1 e0             	and    $0xffffffe0,%ecx
401ff1:	89 41 fc             	mov    %eax,-0x4(%ecx)
401ff4:	eb 13                	jmp    0x402009
401ff6:	85 c0                	test   %eax,%eax
401ff8:	74 0d                	je     0x402007
401ffa:	50                   	push   %eax
401ffb:	e8 af 0b 00 00       	call   0x402baf
402000:	83 c4 04             	add    $0x4,%esp
402003:	8b c8                	mov    %eax,%ecx
402005:	eb 02                	jmp    0x402009
402007:	33 c9                	xor    %ecx,%ecx
402009:	8d 04 5d 02 00 00 00 	lea    0x2(,%ebx,2),%eax
402010:	89 0e                	mov    %ecx,(%esi)
402012:	50                   	push   %eax
402013:	ff 75 08             	push   0x8(%ebp)
402016:	89 5e 10             	mov    %ebx,0x10(%esi)
402019:	51                   	push   %ecx
40201a:	89 7e 14             	mov    %edi,0x14(%esi)
40201d:	e8 2e 34 00 00       	call   0x405450
402022:	83 c4 0c             	add    $0xc,%esp
402025:	8b c6                	mov    %esi,%eax
402027:	5f                   	pop    %edi
402028:	5e                   	pop    %esi
402029:	5b                   	pop    %ebx
40202a:	5d                   	pop    %ebp
40202b:	c2 04 00             	ret    $0x4
40202e:	e8 7d f0 ff ff       	call   0x4010b0
402033:	e8 18 f1 ff ff       	call   0x401150
402038:	e8 ef 3c 00 00       	call   0x405d2c
40203d:	cc                   	int3
40203e:	cc                   	int3
40203f:	cc                   	int3
402040:	55                   	push   %ebp
402041:	8b ec                	mov    %esp,%ebp
402043:	53                   	push   %ebx
402044:	8b 5d 08             	mov    0x8(%ebp),%ebx
402047:	56                   	push   %esi
402048:	8b f1                	mov    %ecx,%esi
40204a:	8b cb                	mov    %ebx,%ecx
40204c:	8d 51 02             	lea    0x2(%ecx),%edx
40204f:	90                   	nop
402050:	66 8b 01             	mov    (%ecx),%ax
402053:	83 c1 02             	add    $0x2,%ecx