5219f3:	8b 1f                	mov    (%edi),%ebx
5219f5:	89 7d b4             	mov    %edi,-0x4c(%ebp)
5219f8:	89 4d 88             	mov    %ecx,-0x78(%ebp)
5219fb:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
521a02:	c7 85 7c ff ff ff 00 	movl   $0x0,-0x84(%ebp)
521a09:	00 00 00
521a0c:	c7 45 8c 00 00 00 00 	movl   $0x0,-0x74(%ebp)
521a13:	c7 45 a0 00 00 00 00 	movl   $0x0,-0x60(%ebp)
521a1a:	c7 45 a8 00 00 00 00 	movl   $0x0,-0x58(%ebp)
521a21:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
521a28:	c7 45 80 00 00 00 00 	movl   $0x0,-0x80(%ebp)
521a2f:	c7 85 78 ff ff ff 00 	movl   $0x0,-0x88(%ebp)
521a36:	00 00 00
521a39:	c7 45 90 00 00 00 00 	movl   $0x0,-0x70(%ebp)
521a40:	89 45 98             	mov    %eax,-0x68(%ebp)
521a43:	66 0f d6 85 6c ff ff 	movq   %xmm0,-0x94(%ebp)
521a4a:	ff
521a4b:	89 5d c8             	mov    %ebx,-0x38(%ebp)
521a4e:	39 47 24             	cmp    %eax,0x24(%edi)
521a51:	0f 85 49 07 00 00    	jne    0x5221a0
521a57:	38 43 51             	cmp    %al,0x51(%ebx)
521a5a:	0f 85 40 07 00 00    	jne    0x5221a0
521a60:	51                   	push   %ecx
521a61:	57                   	push   %edi
521a62:	e8 19 b9 01 00       	call   0x53d380
521a67:	8b f0                	mov    %eax,%esi
521a69:	83 c4 08             	add    $0x8,%esp
521a6c:	89 b5 74 ff ff ff    	mov    %esi,-0x8c(%ebp)
521a72:	85 f6                	test   %esi,%esi
521a74:	0f 84 26 07 00 00    	je     0x5221a0
521a7a:	6a 00                	push   $0x0
521a7c:	6a 00                	push   $0x0
521a7e:	6a 7e                	push   $0x7e
521a80:	56                   	push   %esi
521a81:	57                   	push   %edi
521a82:	e8 e9 cb 01 00       	call   0x53e670
521a87:	8b c8                	mov    %eax,%ecx
521a89:	83 c4 14             	add    $0x14,%esp
521a8c:	8b 46 0c             	mov    0xc(%esi),%eax
521a8f:	89 8d 68 ff ff ff    	mov    %ecx,-0x98(%ebp)
521a95:	89 45 84             	mov    %eax,-0x7c(%ebp)
521a98:	85 c9                	test   %ecx,%ecx
521a9a:	75 17                	jne    0x521ab3
521a9c:	51                   	push   %ecx
521a9d:	51                   	push   %ecx
521a9e:	56                   	push   %esi
521a9f:	57                   	push   %edi
521aa0:	e8 bb 87 00 00       	call   0x52a260
521aa5:	83 c4 10             	add    $0x10,%esp
521aa8:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
521aaf:	85 c0                	test   %eax,%eax
521ab1:	74 07                	je     0x521aba
521ab3:	c7 45 d8 01 00 00 00 	movl   $0x1,-0x28(%ebp)
521aba:	56                   	push   %esi
521abb:	57                   	push   %edi
521abc:	e8 1f c1 02 00       	call   0x54dbe0
521ac1:	83 c4 08             	add    $0x8,%esp
521ac4:	85 c0                	test   %eax,%eax
521ac6:	0f 85 d4 06 00 00    	jne    0x5221a0
521acc:	39 85 68 ff ff ff    	cmp    %eax,-0x98(%ebp)
521ad2:	0f 95 c0             	setne  %al
521ad5:	50                   	push   %eax
521ad6:	56                   	push   %esi
521ad7:	57                   	push   %edi
521ad8:	e8 93 de 00 00       	call   0x52f970
521add:	83 c4 0c             	add    $0xc,%esp
521ae0:	85 c0                	test   %eax,%eax
521ae2:	0f 85 b8 06 00 00    	jne    0x5221a0
521ae8:	ff 76 48             	push   0x48(%esi)
521aeb:	53                   	push   %ebx
521aec:	e8 6f 7f 01 00       	call   0x539a60
521af1:	8b c8                	mov    %eax,%ecx
521af3:	89 45 cc             	mov    %eax,-0x34(%ebp)
521af6:	8b 43 10             	mov    0x10(%ebx),%eax
521af9:	03 c9                	add    %ecx,%ecx
521afb:	ff 34 c8             	push   (%eax,%ecx,8)
521afe:	6a 00                	push   $0x0
521b00:	ff 36                	push   (%esi)
521b02:	6a 09                	push   $0x9
521b04:	57                   	push   %edi
521b05:	e8 96 7c ff ff       	call   0x5197a0
521b0a:	83 c4 1c             	add    $0x1c,%esp
521b0d:	89 45 c4             	mov    %eax,-0x3c(%ebp)
521b10:	83 f8 01             	cmp    $0x1,%eax
521b13:	0f 84 87 06 00 00    	je     0x5221a0
521b19:	8b 4d 88             	mov    -0x78(%ebp),%ecx
521b1c:	33 d2                	xor    %edx,%edx
521b1e:	8b 47 28             	mov    0x28(%edi),%eax
521b21:	89 45 d0             	mov    %eax,-0x30(%ebp)
521b24:	89 55 94             	mov    %edx,-0x6c(%ebp)
521b27:	89 41 34             	mov    %eax,0x34(%ecx)
521b2a:	ff 47 28             	incl   0x28(%edi)
521b2d:	8b 46 08             	mov    0x8(%esi),%eax
521b30:	8b 4f 28             	mov    0x28(%edi),%ecx
521b33:	85 c0                	test   %eax,%eax
521b35:	74 0f                	je     0x521b46
521b37:	41                   	inc    %ecx
521b38:	42                   	inc    %edx
521b39:	89 4f 28             	mov    %ecx,0x28(%edi)
521b3c:	8b 40 14             	mov    0x14(%eax),%eax
521b3f:	85 c0                	test   %eax,%eax
521b41:	75 f4                	jne    0x521b37
521b43:	89 55 94             	mov    %edx,-0x6c(%ebp)
521b46:	83 7d 84 00          	cmpl   $0x0,-0x7c(%ebp)
521b4a:	74 16                	je     0x521b62
521b4c:	8b 87 f0 00 00 00    	mov    0xf0(%edi),%eax
521b52:	89 45 b8             	mov    %eax,-0x48(%ebp)
521b55:	8b 06                	mov    (%esi),%eax
521b57:	89 7d bc             	mov    %edi,-0x44(%ebp)
521b5a:	89 87 f0 00 00 00    	mov    %eax,0xf0(%edi)
521b60:	eb 12                	jmp    0x521b74
521b62:	8b 85 70 ff ff ff    	mov    -0x90(%ebp),%eax
521b68:	89 45 bc             	mov    %eax,-0x44(%ebp)
521b6b:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
521b71:	89 45 b8             	mov    %eax,-0x48(%ebp)
521b74:	57                   	push   %edi
521b75:	e8 56 bd 00 00       	call   0x52d8d0
521b7a:	8b d8                	mov    %eax,%ebx
521b7c:	83 c4 04             	add    $0x4,%esp
521b7f:	85 db                	test   %ebx,%ebx
521b81:	0f 84 c4 02 00 00    	je     0x521e4b
521b87:	80 7f 12 00          	cmpb   $0x0,0x12(%edi)
521b8b:	75 07                	jne    0x521b94
521b8d:	83 8b 98 00 00 00 20 	orl    $0x20,0x98(%ebx)
521b94:	ff 75 cc             	push   -0x34(%ebp)
521b97:	ff 75 d8             	push   -0x28(%ebp)
521b9a:	57                   	push   %edi
521b9b:	e8 b0 86 ff ff       	call   0x51a250
521ba0:	83 c4 0c             	add    $0xc,%esp
521ba3:	83 7d 84 00          	cmpl   $0x0,-0x7c(%ebp)
521ba7:	74 22                	je     0x521bcb
521ba9:	ff 75 d0             	push   -0x30(%ebp)
521bac:	ff 75 ac             	push   -0x54(%ebp)
521baf:	ff 75 9c             	push   -0x64(%ebp)
521bb2:	ff 75 a4             	push   -0x5c(%ebp)
521bb5:	56                   	push   %esi
521bb6:	57                   	push   %edi
521bb7:	e8 e4 f5 00 00       	call   0x5311a0
521bbc:	8b 45 d0             	mov    -0x30(%ebp),%eax
521bbf:	83 c4 18             	add    $0x18,%esp
521bc2:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
521bc8:	89 45 c0             	mov    %eax,-0x40(%ebp)
521bcb:	8b 45 88             	mov    -0x78(%ebp),%eax
521bce:	0f 57 c0             	xorps  %xmm0,%xmm0
521bd1:	ff 75 a4             	push   -0x5c(%ebp)
521bd4:	0f 11 45 dc          	movups %xmm0,-0x24(%ebp)
521bd8:	89 45 e0             	mov    %eax,-0x20(%ebp)
521bdb:	8d 45 dc             	lea    -0x24(%ebp),%eax
521bde:	50                   	push   %eax
521bdf:	0f 11 45 ec          	movups %xmm0,-0x14(%ebp)
521be3:	89 7d dc             	mov    %edi,-0x24(%ebp)
521be6:	e8 95 66 01 00       	call   0x538280
521beb:	83 c4 08             	add    $0x8,%esp
521bee:	85 c0                	test   %eax,%eax
521bf0:	0f 85 55 02 00 00    	jne    0x521e4b
521bf6:	8b 4d c8             	mov    -0x38(%ebp),%ecx
521bf9:	8b 49 24             	mov    0x24(%ecx),%ecx
521bfc:	83 e1 01             	and    $0x1,%ecx
521bff:	0b c1                	or     %ecx,%eax
521c01:	74 23                	je     0x521c26
521c03:	80 7f 12 00          	cmpb   $0x0,0x12(%edi)
521c07:	75 1d                	jne    0x521c26
521c09:	83 7f 78 00          	cmpl   $0x0,0x78(%edi)
521c0d:	75 17                	jne    0x521c26
521c0f:	ff 47 2c             	incl   0x2c(%edi)
521c12:	8b 47 2c             	mov    0x2c(%edi),%eax
521c15:	50                   	push   %eax
521c16:	6a 00                	push   $0x0
521c18:	6a 45                	push   $0x45
521c1a:	53                   	push   %ebx
521c1b:	89 45 8c             	mov    %eax,-0x74(%ebp)
521c1e:	e8 bd fe 01 00       	call   0x541ae0
521c23:	83 c4 10             	add    $0x10,%esp
521c26:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
521c2a:	0f 85 81 00 00 00    	jne    0x521cb1
521c30:	83 7d a4 00          	cmpl   $0x0,-0x5c(%ebp)
521c34:	75 7b                	jne    0x521cb1
521c36:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
521c3a:	75 75                	jne    0x521cb1
521c3c:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
521c40:	75 6f                	jne    0x521cb1
521c42:	ff 36                	push   (%esi)
521c44:	6a 01                	push   $0x1
521c46:	ff 76 1c             	push   0x1c(%esi)
521c49:	ff 75 cc             	push   -0x34(%ebp)
521c4c:	57                   	push   %edi
521c4d:	e8 7e c2 01 00       	call   0x53ded0
521c52:	83 c4 14             	add    $0x14,%esp
521c55:	f6 46 24 80          	testb  $0x80,0x24(%esi)
521c59:	75 24                	jne    0x521c7f
521c5b:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
521c5e:	83 c8 ff             	or     $0xffffffff,%eax
521c61:	6a ff                	push   $0xffffffff
521c63:	ff 36                	push   (%esi)
521c65:	85 c9                	test   %ecx,%ecx
521c67:	0f 45 c1             	cmovne %ecx,%eax
521c6a:	50                   	push   %eax
521c6b:	ff 75 cc             	push   -0x34(%ebp)
521c6e:	ff 76 1c             	push   0x1c(%esi)
521c71:	68 89 00 00 00       	push   $0x89
521c76:	53                   	push   %ebx
521c77:	e8 14 ff 01 00       	call   0x541b90
521c7c:	83 c4 1c             	add    $0x1c,%esp
521c7f:	8b 76 08             	mov    0x8(%esi),%esi
521c82:	85 f6                	test   %esi,%esi
521c84:	0f 84 ca 04 00 00    	je     0x522154
521c8a:	8b 7d cc             	mov    -0x34(%ebp),%edi
521c8d:	0f 1f 00             	nopl   (%eax)
521c90:	57                   	push   %edi
521c91:	ff 76 2c             	push   0x2c(%esi)
521c94:	68 89 00 00 00       	push   $0x89
521c99:	53                   	push   %ebx
521c9a:	e8 41 fe 01 00       	call   0x541ae0
521c9f:	8b 76 14             	mov    0x14(%esi),%esi
521ca2:	83 c4 10             	add    $0x10,%esp
521ca5:	85 f6                	test   %esi,%esi
521ca7:	75 e7                	jne    0x521c90
521ca9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
521cac:	e9 a3 04 00 00       	jmp    0x522154
521cb1:	f6 45 f4 40          	testb  $0x40,-0xc(%ebp)
521cb5:	b8 01 00 00 00       	mov    $0x1,%eax
521cba:	0f 44 45 d8          	cmove  -0x28(%ebp),%eax
521cbe:	f7 d8                	neg    %eax
521cc0:	1b c0                	sbb    %eax,%eax
521cc2:	83 e0 f8             	and    $0xfffffff8,%eax
521cc5:	05 1c 04 00 00       	add    $0x41c,%eax
521cca:	f6 46 24 80          	testb  $0x80,0x24(%esi)
521cce:	0f b7 c0             	movzwl %ax,%eax
521cd1:	89 45 ac             	mov    %eax,-0x54(%ebp)
521cd4:	75 27                	jne    0x521cfd
521cd6:	ff 47 2c             	incl   0x2c(%edi)
521cd9:	8b 47 2c             	mov    0x2c(%edi),%eax
521cdc:	50                   	push   %eax
521cdd:	6a 00                	push   $0x0
521cdf:	6a 48                	push   $0x48
521ce1:	53                   	push   %ebx
521ce2:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
521ce9:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
521cf0:	89 45 80             	mov    %eax,-0x80(%ebp)
521cf3:	e8 e8 fd 01 00       	call   0x541ae0
521cf8:	83 c4 10             	add    $0x10,%esp
521cfb:	eb 46                	jmp    0x521d43
521cfd:	56                   	push   %esi
521cfe:	e8 cd 56 01 00       	call   0x5373d0
521d03:	89 45 d8             	mov    %eax,-0x28(%ebp)
521d06:	0f b7 48 32          	movzwl 0x32(%eax),%ecx
521d0a:	8b 47 2c             	mov    0x2c(%edi),%eax
521d0d:	89 4d cc             	mov    %ecx,-0x34(%ebp)
521d10:	0f bf c9             	movswl %cx,%ecx
521d13:	51                   	push   %ecx
521d14:	8d 50 01             	lea    0x1(%eax),%edx
521d17:	03 c1                	add    %ecx,%eax
521d19:	89 55 a8             	mov    %edx,-0x58(%ebp)
521d1c:	8b 57 28             	mov    0x28(%edi),%edx
521d1f:	52                   	push   %edx
521d20:	89 47 2c             	mov    %eax,0x2c(%edi)
521d23:	6a 64                	push   $0x64
521d25:	8d 42 01             	lea    0x1(%edx),%eax
521d28:	89 55 b0             	mov    %edx,-0x50(%ebp)
521d2b:	53                   	push   %ebx
521d2c:	89 47 28             	mov    %eax,0x28(%edi)
521d2f:	e8 ac fd 01 00       	call   0x541ae0
521d34:	ff 75 d8             	push   -0x28(%ebp)
521d37:	89 45 98             	mov    %eax,-0x68(%ebp)
521d3a:	57                   	push   %edi
521d3b:	e8 10 b3 02 00       	call   0x54d050
521d40:	83 c4 1c             	add    $0x1c,%esp
521d43:	8b 45 d0             	mov    -0x30(%ebp),%eax
521d46:	40                   	inc    %eax
521d47:	50                   	push   %eax
521d48:	ff 75 ac             	push   -0x54(%ebp)
521d4b:	6a 00                	push   $0x0
521d4d:	6a 00                	push   $0x0
521d4f:	ff 75 a4             	push   -0x5c(%ebp)
521d52:	ff 75 88             	push   -0x78(%ebp)
521d55:	57                   	push   %edi
521d56:	e8 25 e2 02 00       	call   0x54ff80
521d5b:	8b c8                	mov    %eax,%ecx
521d5d:	83 c4 1c             	add    $0x1c,%esp
521d60:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
521d63:	85 c9                	test   %ecx,%ecx
521d65:	0f 84 e0 00 00 00    	je     0x521e4b
521d6b:	8b 41 14             	mov    0x14(%ecx),%eax
521d6e:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
521d74:	8b 41 18             	mov    0x18(%ecx),%eax
521d77:	89 45 ac             	mov    %eax,-0x54(%ebp)
521d7a:	0f b6 41 2e          	movzbl 0x2e(%ecx),%eax
521d7e:	89 45 c4             	mov    %eax,-0x3c(%ebp)
521d81:	83 f8 01             	cmp    $0x1,%eax
521d84:	74 0e                	je     0x521d94
521d86:	8b 47 74             	mov    0x74(%edi),%eax
521d89:	8b cf                	mov    %edi,%ecx
521d8b:	85 c0                	test   %eax,%eax
521d8d:	0f 45 c8             	cmovne %eax,%ecx
521d90:	c6 41 14 01          	movb   $0x1,0x14(%ecx)
521d94:	8b 45 8c             	mov    -0x74(%ebp),%eax
521d97:	85 c0                	test   %eax,%eax
521d99:	74 0e                	je     0x521da9
521d9b:	6a 01                	push   $0x1
521d9d:	50                   	push   %eax
521d9e:	6a 52                	push   $0x52
521da0:	53                   	push   %ebx
521da1:	e8 3a fd 01 00       	call   0x541ae0
521da6:	83 c4 10             	add    $0x10,%esp
521da9:	8b 4d d8             	mov    -0x28(%ebp),%ecx
521dac:	85 c9                	test   %ecx,%ecx
521dae:	74 44                	je     0x521df4
521db0:	8b 45 cc             	mov    -0x34(%ebp),%eax
521db3:	98                   	cwtl
521db4:	85 c0                	test   %eax,%eax
521db6:	7e 34                	jle    0x521dec
521db8:	33 ff                	xor    %edi,%edi
521dba:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
521dc0:	8b 45 a8             	mov    -0x58(%ebp),%eax
521dc3:	03 c7                	add    %edi,%eax
521dc5:	50                   	push   %eax
521dc6:	8b 41 04             	mov    0x4(%ecx),%eax
521dc9:	0f bf 04 78          	movswl (%eax,%edi,2),%eax
521dcd:	50                   	push   %eax
521dce:	ff 75 d0             	push   -0x30(%ebp)
521dd1:	56                   	push   %esi
521dd2:	53                   	push   %ebx
521dd3:	e8 e8 22 00 00       	call   0x5240c0
521dd8:	8b 4d cc             	mov    -0x34(%ebp),%ecx
521ddb:	47                   	inc    %edi
521ddc:	0f bf c1             	movswl %cx,%eax
521ddf:	83 c4 14             	add    $0x14,%esp
521de2:	8b 4d d8             	mov    -0x28(%ebp),%ecx
521de5:	3b f8                	cmp    %eax,%edi
521de7:	7c d7                	jl     0x521dc0
521de9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
521dec:	8b 45 a8             	mov    -0x58(%ebp),%eax
521def:	89 45 d4             	mov    %eax,-0x2c(%ebp)
521df2:	eb 1c                	jmp    0x521e10
521df4:	ff 47 2c             	incl   0x2c(%edi)
521df7:	8b 47 2c             	mov    0x2c(%edi),%eax
521dfa:	50                   	push   %eax
521dfb:	6a ff                	push   $0xffffffff
521dfd:	ff 75 d0             	push   -0x30(%ebp)
521e00:	89 45 d4             	mov    %eax,-0x2c(%ebp)
521e03:	56                   	push   %esi
521e04:	53                   	push   %ebx
521e05:	e8 b6 22 00 00       	call   0x5240c0
521e0a:	8b 45 d4             	mov    -0x2c(%ebp),%eax
521e0d:	83 c4 14             	add    $0x14,%esp
521e10:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
521e14:	0f 84 e0 00 00 00    	je     0x521efa
521e1a:	8b 45 cc             	mov    -0x34(%ebp),%eax
521e1d:	0f b7 c0             	movzwl %ax,%eax
521e20:	89 45 b4             	mov    %eax,-0x4c(%ebp)