551dda:	74 0d                	je     0x551de9
551ddc:	80 7a 2e 01          	cmpb   $0x1,0x2e(%edx)
551de0:	74 2e                	je     0x551e10
551de2:	66 83 79 28 00       	cmpw   $0x0,0x28(%ecx)
551de7:	74 27                	je     0x551e10
551de9:	8b 9d 28 ff ff ff    	mov    -0xd8(%ebp),%ebx
551def:	53                   	push   %ebx
551df0:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
551df6:	ff b5 18 ff ff ff    	push   -0xe8(%ebp)
551dfc:	52                   	push   %edx
551dfd:	e8 ce 79 fa ff       	call   0x4f97d0
551e02:	8b 8d 40 ff ff ff    	mov    -0xc0(%ebp),%ecx
551e08:	83 c4 10             	add    $0x10,%esp
551e0b:	e9 73 01 00 00       	jmp    0x551f83
551e10:	ff 43 2c             	incl   0x2c(%ebx)
551e13:	8b 73 2c             	mov    0x2c(%ebx),%esi
551e16:	8b 9d 28 ff ff ff    	mov    -0xd8(%ebp),%ebx
551e1c:	56                   	push   %esi
551e1d:	53                   	push   %ebx
551e1e:	68 86 00 00 00       	push   $0x86
551e23:	57                   	push   %edi
551e24:	e8 b7 fc fe ff       	call   0x541ae0
551e29:	56                   	push   %esi
551e2a:	6a 00                	push   $0x0
551e2c:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
551e32:	6a 20                	push   $0x20
551e34:	57                   	push   %edi
551e35:	e8 06 fd fe ff       	call   0x541b40
551e3a:	8b b5 2c ff ff ff    	mov    -0xd4(%ebp),%esi
551e40:	83 c4 24             	add    $0x24,%esp
551e43:	8b 8d 40 ff ff ff    	mov    -0xc0(%ebp),%ecx
551e49:	e9 35 01 00 00       	jmp    0x551f83
551e4e:	8b 8d 40 ff ff ff    	mov    -0xc0(%ebp),%ecx
551e54:	3b 8d 28 ff ff ff    	cmp    -0xd8(%ebp),%ecx
551e5a:	0f 84 1d 01 00 00    	je     0x551f7d
551e60:	50                   	push   %eax
551e61:	e8 6a 55 fe ff       	call   0x5373d0
551e66:	89 85 58 ff ff ff    	mov    %eax,-0xa8(%ebp)
551e6c:	0f b7 40 32          	movzwl 0x32(%eax),%eax
551e70:	50                   	push   %eax
551e71:	53                   	push   %ebx
551e72:	e8 a9 b0 fd ff       	call   0x52cf20
551e77:	8b c8                	mov    %eax,%ecx
551e79:	33 d2                	xor    %edx,%edx
551e7b:	8b 85 58 ff ff ff    	mov    -0xa8(%ebp),%eax
551e81:	83 c4 0c             	add    $0xc,%esp
551e84:	89 8d 08 ff ff ff    	mov    %ecx,-0xf8(%ebp)
551e8a:	66 3b 50 32          	cmp    0x32(%eax),%dx
551e8e:	0f 83 c6 00 00 00    	jae    0x551f5a
551e94:	89 8d 5c ff ff ff    	mov    %ecx,-0xa4(%ebp)
551e9a:	33 f6                	xor    %esi,%esi
551e9c:	0f 1f 40 00          	nopl   0x0(%eax)
551ea0:	8b 95 18 ff ff ff    	mov    -0xe8(%ebp),%edx
551ea6:	33 c9                	xor    %ecx,%ecx
551ea8:	0f b7 52 34          	movzwl 0x34(%edx),%edx
551eac:	85 d2                	test   %edx,%edx
551eae:	7e 1d                	jle    0x551ecd
551eb0:	8b 40 04             	mov    0x4(%eax),%eax
551eb3:	0f b7 1c 70          	movzwl (%eax,%esi,2),%ebx
551eb7:	8b 85 18 ff ff ff    	mov    -0xe8(%ebp),%eax
551ebd:	8b 40 04             	mov    0x4(%eax),%eax
551ec0:	66 3b 18             	cmp    (%eax),%bx
551ec3:	74 31                	je     0x551ef6
551ec5:	41                   	inc    %ecx
551ec6:	83 c0 02             	add    $0x2,%eax
551ec9:	3b ca                	cmp    %edx,%ecx
551ecb:	7c f3                	jl     0x551ec0
551ecd:	83 c8 ff             	or     $0xffffffff,%eax
551ed0:	8b 4f 6c             	mov    0x6c(%edi),%ecx
551ed3:	0f bf d0             	movswl %ax,%edx
551ed6:	39 4f 70             	cmp    %ecx,0x70(%edi)
551ed9:	7f 20                	jg     0x551efb
551edb:	8b 9d 5c ff ff ff    	mov    -0xa4(%ebp),%ebx
551ee1:	53                   	push   %ebx
551ee2:	52                   	push   %edx
551ee3:	ff b5 28 ff ff ff    	push   -0xd8(%ebp)
551ee9:	6a 59                	push   $0x59
551eeb:	57                   	push   %edi
551eec:	e8 0f 46 fb ff       	call   0x506500
551ef1:	83 c4 14             	add    $0x14,%esp
551ef4:	eb 38                	jmp    0x551f2e
551ef6:	0f b7 c1             	movzwl %cx,%eax
551ef9:	eb d5                	jmp    0x551ed0
551efb:	8b 9d 28 ff ff ff    	mov    -0xd8(%ebp),%ebx
551f01:	8d 41 01             	lea    0x1(%ecx),%eax
551f04:	89 47 6c             	mov    %eax,0x6c(%edi)
551f07:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
551f0a:	8b 47 68             	mov    0x68(%edi),%eax
551f0d:	89 5c 88 04          	mov    %ebx,0x4(%eax,%ecx,4)
551f11:	8b 9d 5c ff ff ff    	mov    -0xa4(%ebp),%ebx
551f17:	c7 04 88 59 00 00 00 	movl   $0x59,(%eax,%ecx,4)
551f1e:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
551f22:	89 5c 88 0c          	mov    %ebx,0xc(%eax,%ecx,4)
551f26:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
551f2d:	00
551f2e:	8b 85 58 ff ff ff    	mov    -0xa8(%ebp),%eax
551f34:	46                   	inc    %esi
551f35:	43                   	inc    %ebx
551f36:	89 9d 5c ff ff ff    	mov    %ebx,-0xa4(%ebp)
551f3c:	0f b7 40 32          	movzwl 0x32(%eax),%eax
551f40:	3b f0                	cmp    %eax,%esi
551f42:	8b 85 58 ff ff ff    	mov    -0xa8(%ebp),%eax
551f48:	0f 8c 52 ff ff ff    	jl     0x551ea0
551f4e:	8b b5 2c ff ff ff    	mov    -0xd4(%ebp),%esi
551f54:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
551f5a:	0f b7 40 32          	movzwl 0x32(%eax),%eax
551f5e:	50                   	push   %eax
551f5f:	51                   	push   %ecx
551f60:	ff b5 e8 fe ff ff    	push   -0x118(%ebp)
551f66:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
551f6c:	6a 1d                	push   $0x1d
551f6e:	57                   	push   %edi
551f6f:	e8 9c fc fe ff       	call   0x541c10
551f74:	83 c4 18             	add    $0x18,%esp
551f77:	8b 8d 40 ff ff ff    	mov    -0xc0(%ebp),%ecx
551f7d:	8b 9d 28 ff ff ff    	mov    -0xd8(%ebp),%ebx
551f83:	83 3e 00             	cmpl   $0x0,(%esi)
551f86:	75 3f                	jne    0x551fc7
551f88:	8b 85 1c ff ff ff    	mov    -0xe4(%ebp),%eax
551f8e:	f6 40 28 20          	testb  $0x20,0x28(%eax)
551f92:	75 11                	jne    0x551fa5
551f94:	50                   	push   %eax
551f95:	53                   	push   %ebx
551f96:	51                   	push   %ecx
551f97:	ff b5 18 ff ff ff    	push   -0xe8(%ebp)
551f9d:	e8 be e6 00 00       	call   0x560660
551fa2:	83 c4 10             	add    $0x10,%esp
551fa5:	8b 85 18 ff ff ff    	mov    -0xe8(%ebp),%eax
551fab:	8b 40 24             	mov    0x24(%eax),%eax
551fae:	85 c0                	test   %eax,%eax
551fb0:	74 15                	je     0x551fc7
551fb2:	ff b5 f0 fe ff ff    	push   -0x110(%ebp)
551fb8:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
551fbe:	50                   	push   %eax
551fbf:	e8 7c e1 00 00       	call   0x560140
551fc4:	83 c4 0c             	add    $0xc,%esp
551fc7:	8b 8d 44 ff ff ff    	mov    -0xbc(%ebp),%ecx
551fcd:	f7 41 24 00 10 00 00 	testl  $0x1000,0x24(%ecx)
551fd4:	74 06                	je     0x551fdc
551fd6:	c6 46 35 ad          	movb   $0xad,0x35(%esi)
551fda:	eb 0f                	jmp    0x551feb
551fdc:	83 bd 30 ff ff ff 00 	cmpl   $0x0,-0xd0(%ebp)
551fe3:	0f 94 c0             	sete   %al
551fe6:	04 04                	add    $0x4,%al
551fe8:	88 46 35             	mov    %al,0x35(%esi)
551feb:	89 5e 38             	mov    %ebx,0x38(%esi)
551fee:	8a 41 26             	mov    0x26(%ecx),%al
551ff1:	24 01                	and    $0x1,%al
551ff3:	88 46 36             	mov    %al,0x36(%esi)
551ff6:	f6 41 24 0f          	testb  $0xf,0x24(%ecx)
551ffa:	75 04                	jne    0x552000
551ffc:	c6 46 37 01          	movb   $0x1,0x37(%esi)
552000:	83 7d 98 00          	cmpl   $0x0,-0x68(%ebp)
552004:	0f 84 d8 09 00 00    	je     0x5529e2
55200a:	33 c9                	xor    %ecx,%ecx
55200c:	89 8d 18 ff ff ff    	mov    %ecx,-0xe8(%ebp)
552012:	e9 03 ec ff ff       	jmp    0x550c1a
552017:	f7 c2 00 20 00 00    	test   $0x2000,%edx
55201d:	0f 84 70 09 00 00    	je     0x552993
552023:	8b 43 28             	mov    0x28(%ebx),%eax
552026:	ff 4b 38             	decl   0x38(%ebx)
552029:	ff 43 2c             	incl   0x2c(%ebx)
55202c:	89 85 20 ff ff ff    	mov    %eax,-0xe0(%ebp)
552032:	40                   	inc    %eax
552033:	89 43 28             	mov    %eax,0x28(%ebx)
552036:	8b 43 38             	mov    0x38(%ebx),%eax
552039:	8b 53 2c             	mov    0x2c(%ebx),%edx
55203c:	89 85 48 ff ff ff    	mov    %eax,-0xb8(%ebp)
552042:	33 c0                	xor    %eax,%eax
552044:	89 85 3c ff ff ff    	mov    %eax,-0xc4(%ebp)
55204a:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
552050:	89 55 98             	mov    %edx,-0x68(%ebp)
552053:	c7 85 24 ff ff ff 00 	movl   $0x0,-0xdc(%ebp)
55205a:	00 00 00
55205d:	c7 85 50 ff ff ff 00 	movl   $0x0,-0xb0(%ebp)
552064:	00 00 00
552067:	8b 48 10             	mov    0x10(%eax),%ecx
55206a:	8b 85 44 ff ff ff    	mov    -0xbc(%ebp),%eax
552070:	c7 85 10 ff ff ff 00 	movl   $0x0,-0xf0(%ebp)
552077:	00 00 00
55207a:	c7 85 28 ff ff ff 00 	movl   $0x0,-0xd8(%ebp)
552081:	00 00 00
552084:	89 8d 38 ff ff ff    	mov    %ecx,-0xc8(%ebp)
55208a:	8b 40 30             	mov    0x30(%eax),%eax
55208d:	8b 00                	mov    (%eax),%eax
55208f:	89 85 44 ff ff ff    	mov    %eax,-0xbc(%ebp)
552095:	8b 40 1c             	mov    0x1c(%eax),%eax
552098:	89 56 38             	mov    %edx,0x38(%esi)
55209b:	8b 95 1c ff ff ff    	mov    -0xe4(%ebp),%edx
5520a1:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
5520a7:	c6 46 35 41          	movb   $0x41,0x35(%esi)
5520ab:	8a 42 2c             	mov    0x2c(%edx),%al
5520ae:	3c 01                	cmp    $0x1,%al
5520b0:	0f 86 3b 01 00 00    	jbe    0x5521f1
5520b6:	8b 8d f4 fe ff ff    	mov    -0x10c(%ebp),%ecx
5520bc:	0f b6 c0             	movzbl %al,%eax
5520bf:	2b 45 14             	sub    0x14(%ebp),%eax
5520c2:	48                   	dec    %eax
5520c3:	89 85 08 ff ff ff    	mov    %eax,-0xf8(%ebp)
5520c9:	6a 00                	push   $0x0
5520cb:	8d 04 c0             	lea    (%eax,%eax,8),%eax
5520ce:	8d 04 c5 50 00 00 00 	lea    0x50(,%eax,8),%eax
5520d5:	50                   	push   %eax
5520d6:	85 c9                	test   %ecx,%ecx
5520d8:	74 13                	je     0x5520ed
5520da:	51                   	push   %ecx
5520db:	e8 00 f3 fc ff       	call   0x5213e0
5520e0:	8b c8                	mov    %eax,%ecx
5520e2:	83 c4 0c             	add    $0xc,%esp
5520e5:	89 8d 14 ff ff ff    	mov    %ecx,-0xec(%ebp)
5520eb:	eb 10                	jmp    0x5520fd
5520ed:	e8 6e ee fd ff       	call   0x530f60
5520f2:	83 c4 08             	add    $0x8,%esp
5520f5:	89 85 14 ff ff ff    	mov    %eax,-0xec(%ebp)
5520fb:	8b c8                	mov    %eax,%ecx
5520fd:	85 c9                	test   %ecx,%ecx
5520ff:	75 17                	jne    0x552118
552101:	8b 45 1c             	mov    0x1c(%ebp),%eax
552104:	8b 55 20             	mov    0x20(%ebp),%edx
552107:	5f                   	pop    %edi
552108:	5e                   	pop    %esi
552109:	5b                   	pop    %ebx
55210a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
55210d:	33 cd                	xor    %ebp,%ecx
55210f:	e8 c6 f3 08 00       	call   0x5e14da
552114:	8b e5                	mov    %ebp,%esp
552116:	5d                   	pop    %ebp
552117:	c3                   	ret
552118:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
55211e:	8d 42 01             	lea    0x1(%edx),%eax
552121:	0f b6 c0             	movzbl %al,%eax
552124:	89 41 04             	mov    %eax,0x4(%ecx)
552127:	89 01                	mov    %eax,(%ecx)
552129:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
55212f:	0f 10 00             	movups (%eax),%xmm0
552132:	0f 11 41 08          	movups %xmm0,0x8(%ecx)
552136:	0f 10 40 10          	movups 0x10(%eax),%xmm0
55213a:	0f 11 41 18          	movups %xmm0,0x18(%ecx)
55213e:	0f 10 40 20          	movups 0x20(%eax),%xmm0
552142:	0f 11 41 28          	movups %xmm0,0x28(%ecx)
552146:	0f 10 40 30          	movups 0x30(%eax),%xmm0
55214a:	0f 11 41 38          	movups %xmm0,0x38(%ecx)
55214e:	f3 0f 7e 40 40       	movq   0x40(%eax),%xmm0
552153:	8b 85 1c ff ff ff    	mov    -0xe4(%ebp),%eax
552159:	66 0f d6 41 48       	movq   %xmm0,0x48(%ecx)
55215e:	8b 40 04             	mov    0x4(%eax),%eax
552161:	83 fa 01             	cmp    $0x1,%edx
552164:	7c 57                	jl     0x5521bd
552166:	83 c1 50             	add    $0x50,%ecx
552169:	8d be 8c 00 00 00    	lea    0x8c(%esi),%edi
55216f:	8b d8                	mov    %eax,%ebx
552171:	0f b6 07             	movzbl (%edi),%eax
552174:	8d 7f 58             	lea    0x58(%edi),%edi
552177:	8d 49 48             	lea    0x48(%ecx),%ecx
55217a:	8d 04 c0             	lea    (%eax,%eax,8),%eax
55217d:	0f 10 44 c3 08       	movups 0x8(%ebx,%eax,8),%xmm0
552182:	0f 11 41 b8          	movups %xmm0,-0x48(%ecx)
552186:	0f 10 44 c3 18       	movups 0x18(%ebx,%eax,8),%xmm0
55218b:	0f 11 41 c8          	movups %xmm0,-0x38(%ecx)
55218f:	0f 10 44 c3 28       	movups 0x28(%ebx,%eax,8),%xmm0
552194:	0f 11 41 d8          	movups %xmm0,-0x28(%ecx)
552198:	0f 10 44 c3 38       	movups 0x38(%ebx,%eax,8),%xmm0
55219d:	0f 11 41 e8          	movups %xmm0,-0x18(%ecx)
5521a1:	f3 0f 7e 44 c3 48    	movq   0x48(%ebx,%eax,8),%xmm0
5521a7:	66 0f d6 41 f8       	movq   %xmm0,-0x8(%ecx)
5521ac:	83 ea 01             	sub    $0x1,%edx
5521af:	75 c0                	jne    0x552171
5521b1:	8b bd fc fe ff ff    	mov    -0x104(%ebp),%edi
5521b7:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
5521bd:	8b 8d 38 ff ff ff    	mov    -0xc8(%ebp),%ecx
5521c3:	8b 85 1c ff ff ff    	mov    -0xe4(%ebp),%eax
5521c9:	f6 40 28 10          	testb  $0x10,0x28(%eax)
5521cd:	75 6e                	jne    0x55223d
5521cf:	f6 41 24 80          	testb  $0x80,0x24(%ecx)
5521d3:	75 27                	jne    0x5521fc
5521d5:	ff 43 2c             	incl   0x2c(%ebx)
5521d8:	8b 43 2c             	mov    0x2c(%ebx),%eax
5521db:	50                   	push   %eax
5521dc:	6a 00                	push   $0x0
5521de:	6a 48                	push   $0x48
5521e0:	57                   	push   %edi
5521e1:	89 85 50 ff ff ff    	mov    %eax,-0xb0(%ebp)
5521e7:	e8 f4 f8 fe ff       	call   0x541ae0
5521ec:	83 c4 10             	add    $0x10,%esp
5521ef:	eb 40                	jmp    0x552231
5521f1:	8b 42 04             	mov    0x4(%edx),%eax
5521f4:	89 85 14 ff ff ff    	mov    %eax,-0xec(%ebp)
5521fa:	eb c7                	jmp    0x5521c3
5521fc:	51                   	push   %ecx
5521fd:	e8 ce 51 fe ff       	call   0x5373d0
552202:	8b f0                	mov    %eax,%esi
552204:	8b 43 28             	mov    0x28(%ebx),%eax
552207:	89 85 50 ff ff ff    	mov    %eax,-0xb0(%ebp)
55220d:	8d 48 01             	lea    0x1(%eax),%ecx
552210:	89 4b 28             	mov    %ecx,0x28(%ebx)
552213:	0f b7 4e 32          	movzwl 0x32(%esi),%ecx
552217:	51                   	push   %ecx
552218:	50                   	push   %eax
552219:	6a 64                	push   $0x64
55221b:	57                   	push   %edi
55221c:	e8 bf f8 fe ff       	call   0x541ae0
552221:	56                   	push   %esi
552222:	53                   	push   %ebx
552223:	e8 28 ae ff ff       	call   0x54d050
552228:	8b b5 2c ff ff ff    	mov    -0xd4(%ebp),%esi
55222e:	83 c4 1c             	add    $0x1c,%esp
552231:	ff 43 2c             	incl   0x2c(%ebx)
552234:	8b 43 2c             	mov    0x2c(%ebx),%eax
552237:	89 85 10 ff ff ff    	mov    %eax,-0xf0(%ebp)
55223d:	8b 57 6c             	mov    0x6c(%edi),%edx
552240:	89 95 30 ff ff ff    	mov    %edx,-0xd0(%ebp)
552246:	39 57 70             	cmp    %edx,0x70(%edi)
552249:	7f 1a                	jg     0x552265
55224b:	6a 00                	push   $0x0
55224d:	ff 75 98             	push   -0x68(%ebp)
552250:	6a 00                	push   $0x0
552252:	6a 45                	push   $0x45
552254:	57                   	push   %edi
552255:	e8 a6 42 fb ff       	call   0x506500
55225a:	83 c4 14             	add    $0x14,%esp
55225d:	89 85 30 ff ff ff    	mov    %eax,-0xd0(%ebp)
552263:	eb 32                	jmp    0x552297
552265:	8d 42 01             	lea    0x1(%edx),%eax
552268:	89 47 6c             	mov    %eax,0x6c(%edi)
55226b:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
55226e:	8b 47 68             	mov    0x68(%edi),%eax
552271:	8b 55 98             	mov    -0x68(%ebp),%edx
552274:	c7 04 88 45 00 00 00 	movl   $0x45,(%eax,%ecx,4)
55227b:	c7 44 88 04 00 00 00 	movl   $0x0,0x4(%eax,%ecx,4)
552282:	00
552283:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
552287:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
55228e:	00
55228f:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
552296:	00
552297:	8b 8d f0 fe ff ff    	mov    -0x110(%ebp),%ecx
55229d:	8b 41 0c             	mov    0xc(%ecx),%eax
5522a0:	83 f8 01             	cmp    $0x1,%eax
5522a3:	0f 8e 28 01 00 00    	jle    0x5523d1
5522a9:	33 d2                	xor    %edx,%edx
5522ab:	89 95 5c ff ff ff    	mov    %edx,-0xa4(%ebp)
5522b1:	85 c0                	test   %eax,%eax
5522b3:	0f 8e 18 01 00 00    	jle    0x5523d1
5522b9:	33 ff                	xor    %edi,%edi
5522bb:	33 f6                	xor    %esi,%esi
5522bd:	0f 1f 00             	nopl   (%eax)
5522c0:	8b 41 14             	mov    0x14(%ecx),%eax
5522c3:	8b 0c 38             	mov    (%eax,%edi,1),%ecx
5522c6:	03 c7                	add    %edi,%eax
5522c8:	3b 85 44 ff ff ff    	cmp    -0xbc(%ebp),%eax