509dee:	cc                   	int3
509def:	cc                   	int3
509df0:	55                   	push   %ebp
509df1:	8b ec                	mov    %esp,%ebp
509df3:	83 ec 78             	sub    $0x78,%esp
509df6:	a1 d4 89 72 00       	mov    0x7289d4,%eax
509dfb:	33 c5                	xor    %ebp,%eax
509dfd:	89 45 fc             	mov    %eax,-0x4(%ebp)
509e00:	8b 4d 10             	mov    0x10(%ebp),%ecx
509e03:	33 c0                	xor    %eax,%eax
509e05:	53                   	push   %ebx
509e06:	8b 5d 08             	mov    0x8(%ebp),%ebx
509e09:	56                   	push   %esi
509e0a:	0f 10 01             	movups (%ecx),%xmm0
509e0d:	57                   	push   %edi
509e0e:	8b 7d 0c             	mov    0xc(%ebp),%edi
509e11:	8b 13                	mov    (%ebx),%edx
509e13:	89 45 90             	mov    %eax,-0x70(%ebp)
509e16:	0f 11 45 e0          	movups %xmm0,-0x20(%ebp)
509e1a:	8b 47 34             	mov    0x34(%edi),%eax
509e1d:	f3 0f 7e 41 10       	movq   0x10(%ecx),%xmm0
509e22:	89 4d 8c             	mov    %ecx,-0x74(%ebp)
509e25:	66 0f d6 45 f0       	movq   %xmm0,-0x10(%ebp)
509e2a:	8b 48 30             	mov    0x30(%eax),%ecx
509e2d:	89 5d f8             	mov    %ebx,-0x8(%ebp)
509e30:	89 7d 9c             	mov    %edi,-0x64(%ebp)
509e33:	89 55 98             	mov    %edx,-0x68(%ebp)
509e36:	89 45 a4             	mov    %eax,-0x5c(%ebp)
509e39:	85 c9                	test   %ecx,%ecx
509e3b:	0f 85 92 06 00 00    	jne    0x50a4d3
509e41:	39 48 3c             	cmp    %ecx,0x3c(%eax)
509e44:	0f 85 89 06 00 00    	jne    0x50a4d3
509e4a:	8b 73 08             	mov    0x8(%ebx),%esi
509e4d:	89 75 94             	mov    %esi,-0x6c(%ebp)
509e50:	85 f6                	test   %esi,%esi
509e52:	75 1d                	jne    0x509e71
509e54:	39 73 74             	cmp    %esi,0x74(%ebx)
509e57:	75 0a                	jne    0x509e63
509e59:	f6 42 4c 08          	testb  $0x8,0x4c(%edx)
509e5d:	75 04                	jne    0x509e63
509e5f:	c6 43 17 01          	movb   $0x1,0x17(%ebx)
509e63:	53                   	push   %ebx
509e64:	e8 a7 85 03 00       	call   0x542410
509e69:	83 c4 04             	add    $0x4,%esp
509e6c:	89 45 94             	mov    %eax,-0x6c(%ebp)
509e6f:	8b f0                	mov    %eax,%esi
509e71:	80 7d e0 0c          	cmpb   $0xc,-0x20(%ebp)
509e75:	75 17                	jne    0x509e8e
509e77:	8b 4f 1c             	mov    0x1c(%edi),%ecx
509e7a:	ff 31                	push   (%ecx)
509e7c:	ff 75 e4             	push   -0x1c(%ebp)
509e7f:	6a 64                	push   $0x64
509e81:	56                   	push   %esi
509e82:	e8 59 7c 03 00       	call   0x541ae0
509e87:	83 c4 10             	add    $0x10,%esp
509e8a:	c6 45 e0 0e          	movb   $0xe,-0x20(%ebp)
509e8e:	f7 47 04 00 04 00 00 	testl  $0x400,0x4(%edi)
509e95:	74 1b                	je     0x509eb2
509e97:	8d 45 e0             	lea    -0x20(%ebp),%eax
509e9a:	50                   	push   %eax
509e9b:	57                   	push   %edi
509e9c:	53                   	push   %ebx
509e9d:	e8 7e 18 00 00       	call   0x50b720
509ea2:	8b c8                	mov    %eax,%ecx
509ea4:	83 c4 0c             	add    $0xc,%esp
509ea7:	89 4d a8             	mov    %ecx,-0x58(%ebp)
509eaa:	85 c9                	test   %ecx,%ecx
509eac:	0f 89 e7 05 00 00    	jns    0x50a499
509eb2:	f7 47 04 00 20 00 00 	testl  $0x2000,0x4(%edi)
509eb9:	74 18                	je     0x509ed3
509ebb:	8d 45 e0             	lea    -0x20(%ebp),%eax
509ebe:	50                   	push   %eax
509ebf:	57                   	push   %edi
509ec0:	53                   	push   %ebx
509ec1:	e8 0a b5 ff ff       	call   0x5053d0
509ec6:	83 c4 0c             	add    $0xc,%esp
509ec9:	33 c0                	xor    %eax,%eax
509ecb:	89 45 a8             	mov    %eax,-0x58(%ebp)
509ece:	e9 a5 04 00 00       	jmp    0x50a378
509ed3:	83 7f 30 00          	cmpl   $0x0,0x30(%edi)
509ed7:	74 1f                	je     0x509ef8
509ed9:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
509edc:	51                   	push   %ecx
509edd:	57                   	push   %edi
509ede:	53                   	push   %ebx
509edf:	e8 9c 06 00 00       	call   0x50a580
509ee4:	83 c4 0c             	add    $0xc,%esp
509ee7:	5f                   	pop    %edi
509ee8:	5e                   	pop    %esi
509ee9:	5b                   	pop    %ebx
509eea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
509eed:	33 cd                	xor    %ebp,%ecx
509eef:	e8 e6 75 0d 00       	call   0x5e14da
509ef4:	8b e5                	mov    %ebp,%esp
509ef6:	5d                   	pop    %ebp
509ef7:	c3                   	ret
509ef8:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
509efb:	83 79 34 00          	cmpl   $0x0,0x34(%ecx)
509eff:	75 20                	jne    0x509f21
509f01:	68 10 b0 6b 00       	push   $0x6bb010
509f06:	6a 01                	push   $0x1
509f08:	53                   	push   %ebx
509f09:	e8 d2 fc 03 00       	call   0x549be0
509f0e:	68 20 b0 6b 00       	push   $0x6bb020
509f13:	6a 01                	push   $0x1
509f15:	53                   	push   %ebx
509f16:	e8 c5 fc 03 00       	call   0x549be0
509f1b:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
509f1e:	83 c4 18             	add    $0x18,%esp
509f21:	0f b6 07             	movzbl (%edi),%eax
509f24:	2d 84 00 00 00       	sub    $0x84,%eax
509f29:	0f 84 af 02 00 00    	je     0x50a1de
509f2f:	83 e8 01             	sub    $0x1,%eax
509f32:	0f 84 9d 01 00 00    	je     0x50a0d5
509f38:	83 e8 01             	sub    $0x1,%eax
509f3b:	0f 84 9d 02 00 00    	je     0x50a1de
509f41:	8b 4b 28             	mov    0x28(%ebx),%ecx
509f44:	6a 00                	push   $0x0
509f46:	51                   	push   %ecx
509f47:	6a 64                	push   $0x64
509f49:	8d 41 01             	lea    0x1(%ecx),%eax
509f4c:	89 4d ac             	mov    %ecx,-0x54(%ebp)
509f4f:	89 45 a0             	mov    %eax,-0x60(%ebp)
509f52:	40                   	inc    %eax
509f53:	56                   	push   %esi
509f54:	89 43 28             	mov    %eax,0x28(%ebx)
509f57:	e8 84 7b 03 00       	call   0x541ae0
509f5c:	57                   	push   %edi
509f5d:	89 47 14             	mov    %eax,0x14(%edi)
509f60:	e8 eb 81 ff ff       	call   0x502150
509f65:	83 48 04 20          	orl    $0x20,0x4(%eax)
509f69:	8b 45 ac             	mov    -0x54(%ebp),%eax
509f6c:	89 45 cc             	mov    %eax,-0x34(%ebp)
509f6f:	8d 45 c8             	lea    -0x38(%ebp),%eax
509f72:	50                   	push   %eax
509f73:	8b 45 a4             	mov    -0x5c(%ebp),%eax
509f76:	50                   	push   %eax
509f77:	53                   	push   %ebx
509f78:	c6 45 c8 01          	movb   $0x1,-0x38(%ebp)
509f7c:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
509f83:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
509f8a:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
509f91:	e8 0a fb 02 00       	call   0x539aa0
509f96:	8b c8                	mov    %eax,%ecx
509f98:	83 c4 20             	add    $0x20,%esp
509f9b:	89 4d a8             	mov    %ecx,-0x58(%ebp)
509f9e:	85 c9                	test   %ecx,%ecx
509fa0:	0f 85 f3 04 00 00    	jne    0x50a499
509fa6:	50                   	push   %eax
509fa7:	ff 75 a0             	push   -0x60(%ebp)
509faa:	6a 64                	push   $0x64
509fac:	56                   	push   %esi
509fad:	e8 2e 7b 03 00       	call   0x541ae0
509fb2:	89 47 18             	mov    %eax,0x18(%edi)
509fb5:	8b 45 a0             	mov    -0x60(%ebp),%eax
509fb8:	8b 77 3c             	mov    0x3c(%edi),%esi
509fbb:	89 45 cc             	mov    %eax,-0x34(%ebp)
509fbe:	0f b6 07             	movzbl (%edi),%eax
509fc1:	50                   	push   %eax
509fc2:	c7 47 34 00 00 00 00 	movl   $0x0,0x34(%edi)
509fc9:	c7 47 3c 00 00 00 00 	movl   $0x0,0x3c(%edi)
509fd0:	e8 1b cb 00 00       	call   0x516af0
509fd5:	50                   	push   %eax
509fd6:	68 34 b0 6b 00       	push   $0x6bb034
509fdb:	6a 01                	push   $0x1
509fdd:	53                   	push   %ebx
509fde:	e8 fd fb 03 00       	call   0x549be0
509fe3:	8d 45 c8             	lea    -0x38(%ebp),%eax
509fe6:	50                   	push   %eax
509fe7:	57                   	push   %edi
509fe8:	53                   	push   %ebx
509fe9:	e8 b2 fa 02 00       	call   0x539aa0
509fee:	89 45 a8             	mov    %eax,-0x58(%ebp)
509ff1:	83 c4 30             	add    $0x30,%esp
509ff4:	8b 47 34             	mov    0x34(%edi),%eax
509ff7:	89 45 90             	mov    %eax,-0x70(%ebp)
509ffa:	8b 45 a4             	mov    -0x5c(%ebp),%eax
509ffd:	89 47 34             	mov    %eax,0x34(%edi)
50a000:	0f b7 40 02          	movzwl 0x2(%eax),%eax
50a004:	66 39 47 02          	cmp    %ax,0x2(%edi)
50a008:	7e 04                	jle    0x50a00e
50a00a:	66 89 47 02          	mov    %ax,0x2(%edi)
50a00e:	8b 47 3c             	mov    0x3c(%edi),%eax
50a011:	85 c0                	test   %eax,%eax
50a013:	74 0c                	je     0x50a021
50a015:	50                   	push   %eax
50a016:	ff 75 98             	push   -0x68(%ebp)
50a019:	e8 92 c7 01 00       	call   0x5267b0
50a01e:	83 c4 08             	add    $0x8,%esp
50a021:	8b 45 f8             	mov    -0x8(%ebp),%eax
50a024:	89 77 3c             	mov    %esi,0x3c(%edi)
50a027:	8b 73 38             	mov    0x38(%ebx),%esi
50a02a:	4e                   	dec    %esi
50a02b:	56                   	push   %esi
50a02c:	57                   	push   %edi
50a02d:	50                   	push   %eax
50a02e:	8d 5e ff             	lea    -0x1(%esi),%ebx
50a031:	89 75 a4             	mov    %esi,-0x5c(%ebp)
50a034:	89 58 38             	mov    %ebx,0x38(%eax)
50a037:	e8 b4 12 ff ff       	call   0x4fb2f0
50a03c:	8b 7d 94             	mov    -0x6c(%ebp),%edi
50a03f:	56                   	push   %esi
50a040:	ff 75 ac             	push   -0x54(%ebp)
50a043:	6a 25                	push   $0x25
50a045:	57                   	push   %edi
50a046:	e8 95 7a 03 00       	call   0x541ae0
50a04b:	ff 75 f8             	push   -0x8(%ebp)
50a04e:	e8 2d 2f 02 00       	call   0x52cf80
50a053:	8b f0                	mov    %eax,%esi
50a055:	56                   	push   %esi
50a056:	ff 75 ac             	push   -0x54(%ebp)
50a059:	6a 7e                	push   $0x7e
50a05b:	57                   	push   %edi
50a05c:	e8 7f 7a 03 00       	call   0x541ae0
50a061:	6a 00                	push   $0x0
50a063:	56                   	push   %esi
50a064:	53                   	push   %ebx
50a065:	ff 75 a0             	push   -0x60(%ebp)
50a068:	8b f8                	mov    %eax,%edi
50a06a:	6a 1d                	push   $0x1d
50a06c:	ff 75 94             	push   -0x6c(%ebp)
50a06f:	e8 9c 7b 03 00       	call   0x541c10
50a074:	83 c4 48             	add    $0x48,%esp
50a077:	56                   	push   %esi
50a078:	ff 75 f8             	push   -0x8(%ebp)
50a07b:	e8 10 dd 02 00       	call   0x537d90
50a080:	8b 75 a4             	mov    -0x5c(%ebp),%esi
50a083:	8d 45 e0             	lea    -0x20(%ebp),%eax
50a086:	56                   	push   %esi
50a087:	53                   	push   %ebx
50a088:	50                   	push   %eax
50a089:	6a 00                	push   $0x0
50a08b:	6a 00                	push   $0x0
50a08d:	ff 75 ac             	push   -0x54(%ebp)
50a090:	ff 75 9c             	push   -0x64(%ebp)
50a093:	ff 75 f8             	push   -0x8(%ebp)
50a096:	e8 a5 be 00 00       	call   0x515f40
50a09b:	53                   	push   %ebx
50a09c:	8b 5d 94             	mov    -0x6c(%ebp),%ebx
50a09f:	53                   	push   %ebx
50a0a0:	e8 2b 2c 04 00       	call   0x54ccd0
50a0a5:	57                   	push   %edi
50a0a6:	8b 7d ac             	mov    -0x54(%ebp),%edi
50a0a9:	57                   	push   %edi
50a0aa:	6a 05                	push   $0x5
50a0ac:	53                   	push   %ebx
50a0ad:	e8 2e 7a 03 00       	call   0x541ae0
50a0b2:	83 c4 40             	add    $0x40,%esp
50a0b5:	56                   	push   %esi
50a0b6:	53                   	push   %ebx
50a0b7:	e8 14 2c 04 00       	call   0x54ccd0
50a0bc:	6a 00                	push   $0x0
50a0be:	8d 47 01             	lea    0x1(%edi),%eax
50a0c1:	50                   	push   %eax
50a0c2:	6a 74                	push   $0x74
50a0c4:	53                   	push   %ebx
50a0c5:	e8 16 7a 03 00       	call   0x541ae0
50a0ca:	6a 00                	push   $0x0
50a0cc:	57                   	push   %edi
50a0cd:	6a 74                	push   $0x74
50a0cf:	53                   	push   %ebx
50a0d0:	e9 86 02 00 00       	jmp    0x50a35b
50a0d5:	33 c0                	xor    %eax,%eax
50a0d7:	89 45 a0             	mov    %eax,-0x60(%ebp)
50a0da:	8b 47 08             	mov    0x8(%edi),%eax
50a0dd:	89 41 08             	mov    %eax,0x8(%ecx)
50a0e0:	8b 47 0c             	mov    0xc(%edi),%eax
50a0e3:	89 41 0c             	mov    %eax,0xc(%ecx)
50a0e6:	8b 47 3c             	mov    0x3c(%edi),%eax
50a0e9:	89 41 3c             	mov    %eax,0x3c(%ecx)
50a0ec:	8d 45 e0             	lea    -0x20(%ebp),%eax
50a0ef:	50                   	push   %eax
50a0f0:	51                   	push   %ecx
50a0f1:	53                   	push   %ebx
50a0f2:	e8 a9 f9 02 00       	call   0x539aa0
50a0f7:	8b c8                	mov    %eax,%ecx
50a0f9:	c7 47 3c 00 00 00 00 	movl   $0x0,0x3c(%edi)
50a100:	83 c4 0c             	add    $0xc,%esp
50a103:	89 4d a8             	mov    %ecx,-0x58(%ebp)
50a106:	85 c9                	test   %ecx,%ecx
50a108:	0f 85 8b 03 00 00    	jne    0x50a499
50a10e:	89 47 34             	mov    %eax,0x34(%edi)
50a111:	8b 45 a4             	mov    -0x5c(%ebp),%eax
50a114:	8b 48 08             	mov    0x8(%eax),%ecx
50a117:	89 4f 08             	mov    %ecx,0x8(%edi)
50a11a:	8b 40 0c             	mov    0xc(%eax),%eax
50a11d:	89 47 0c             	mov    %eax,0xc(%edi)
50a120:	85 c9                	test   %ecx,%ecx
50a122:	74 2a                	je     0x50a14e
50a124:	51                   	push   %ecx
50a125:	6a 14                	push   $0x14
50a127:	56                   	push   %esi
50a128:	e8 53 79 03 00       	call   0x541a80
50a12d:	8b 4f 0c             	mov    0xc(%edi),%ecx
50a130:	83 c4 0c             	add    $0xc,%esp
50a133:	89 45 a0             	mov    %eax,-0x60(%ebp)
50a136:	85 c9                	test   %ecx,%ecx
50a138:	74 14                	je     0x50a14e
50a13a:	51                   	push   %ecx
50a13b:	41                   	inc    %ecx
50a13c:	51                   	push   %ecx
50a13d:	ff 77 08             	push   0x8(%edi)
50a140:	68 98 00 00 00       	push   $0x98
50a145:	56                   	push   %esi
50a146:	e8 f5 79 03 00       	call   0x541b40
50a14b:	83 c4 14             	add    $0x14,%esp
50a14e:	68 e8 ae 6b 00       	push   $0x6baee8
50a153:	6a 01                	push   $0x1
50a155:	53                   	push   %ebx
50a156:	e8 85 fa 03 00       	call   0x549be0
50a15b:	8d 45 e0             	lea    -0x20(%ebp),%eax
50a15e:	50                   	push   %eax
50a15f:	57                   	push   %edi
50a160:	53                   	push   %ebx
50a161:	e8 3a f9 02 00       	call   0x539aa0
50a166:	89 45 a8             	mov    %eax,-0x58(%ebp)
50a169:	8b 47 34             	mov    0x34(%edi),%eax
50a16c:	89 45 90             	mov    %eax,-0x70(%ebp)
50a16f:	8b 45 a4             	mov    -0x5c(%ebp),%eax
50a172:	89 47 34             	mov    %eax,0x34(%edi)
50a175:	0f b7 40 02          	movzwl 0x2(%eax),%eax
50a179:	50                   	push   %eax
50a17a:	0f b7 47 02          	movzwl 0x2(%edi),%eax
50a17e:	50                   	push   %eax
50a17f:	e8 bc 6c 02 00       	call   0x530e40
50a184:	66 89 47 02          	mov    %ax,0x2(%edi)
50a188:	83 c4 20             	add    $0x20,%esp
50a18b:	8b 45 a4             	mov    -0x5c(%ebp),%eax
50a18e:	8b 40 3c             	mov    0x3c(%eax),%eax
50a191:	85 c0                	test   %eax,%eax
50a193:	74 2f                	je     0x50a1c4
50a195:	8d 4d f8             	lea    -0x8(%ebp),%ecx
50a198:	51                   	push   %ecx
50a199:	ff 70 0c             	push   0xc(%eax)
50a19c:	e8 7f d2 01 00       	call   0x527420
50a1a1:	83 c4 08             	add    $0x8,%esp
50a1a4:	85 c0                	test   %eax,%eax
50a1a6:	74 1c                	je     0x50a1c4
50a1a8:	8b 45 f8             	mov    -0x8(%ebp),%eax
50a1ab:	85 c0                	test   %eax,%eax
50a1ad:	7e 15                	jle    0x50a1c4
50a1af:	99                   	cltd
50a1b0:	52                   	push   %edx
50a1b1:	50                   	push   %eax
50a1b2:	e8 d9 6b 02 00       	call   0x530d90
50a1b7:	83 c4 08             	add    $0x8,%esp
50a1ba:	66 39 47 02          	cmp    %ax,0x2(%edi)
50a1be:	7e 04                	jle    0x50a1c4
50a1c0:	66 89 47 02          	mov    %ax,0x2(%edi)
50a1c4:	8b 45 a0             	mov    -0x60(%ebp),%eax