550e64:	c1 e2 04             	shl    $0x4,%edx
550e67:	e8 30 0d 00 00       	call   0x551b9c
550e6c:	8b d8                	mov    %eax,%ebx
550e6e:	89 5f 38             	mov    %ebx,0x38(%edi)
550e71:	85 db                	test   %ebx,%ebx
550e73:	75 0a                	jne    0x550e7f
550e75:	b8 01 00 00 00       	mov    $0x1,%eax
550e7a:	e9 44 01 00 00       	jmp    0x550fc3
550e7f:	81 8f b8 00 00 00 00 	orl    $0x4000,0xb8(%edi)
550e86:	40 00 00
550e89:	33 d2                	xor    %edx,%edx
550e8b:	89 55 f4             	mov    %edx,-0xc(%ebp)
550e8e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
550e91:	8b 55 08             	mov    0x8(%ebp),%edx
550e94:	8b 45 f4             	mov    -0xc(%ebp),%eax
550e97:	3b c2                	cmp    %edx,%eax
550e99:	8d 59 04             	lea    0x4(%ecx),%ebx
550e9c:	0f 8d 1f 01 00 00    	jge    0x550fc1
550ea2:	8b 77 38             	mov    0x38(%edi),%esi
550ea5:	8b 47 30             	mov    0x30(%edi),%eax
550ea8:	c1 e0 04             	shl    $0x4,%eax
550eab:	03 f0                	add    %eax,%esi
550ead:	8b 03                	mov    (%ebx),%eax
550eaf:	85 c0                	test   %eax,%eax
550eb1:	0f 84 f6 00 00 00    	je     0x550fad
550eb7:	50                   	push   %eax
550eb8:	e8 73 56 fd ff       	call   0x526530
550ebd:	59                   	pop    %ecx
550ebe:	89 45 ec             	mov    %eax,-0x14(%ebp)
550ec1:	8b 53 fc             	mov    -0x4(%ebx),%edx
550ec4:	85 d2                	test   %edx,%edx
550ec6:	7f 0c                	jg     0x550ed4
550ec8:	33 c9                	xor    %ecx,%ecx
550eca:	89 4d e8             	mov    %ecx,-0x18(%ebp)
550ecd:	33 c0                	xor    %eax,%eax
550ecf:	89 45 e4             	mov    %eax,-0x1c(%ebp)
550ed2:	eb 12                	jmp    0x550ee6
550ed4:	ba 2d c4 69 00       	mov    $0x69c42d,%edx
550ed9:	8b 45 fc             	mov    -0x4(%ebp),%eax
550edc:	e8 07 0e 00 00       	call   0x551ce8
550ee1:	e9 c7 00 00 00       	jmp    0x550fad
550ee6:	8b 43 04             	mov    0x4(%ebx),%eax
550ee9:	85 c0                	test   %eax,%eax
550eeb:	74 06                	je     0x550ef3
550eed:	8a 10                	mov    (%eax),%dl
550eef:	84 d2                	test   %dl,%dl
550ef1:	75 0d                	jne    0x550f00
550ef3:	33 c9                	xor    %ecx,%ecx
550ef5:	89 4d f0             	mov    %ecx,-0x10(%ebp)
550ef8:	c7 06 ff ff ff ff    	movl   $0xffffffff,(%esi)
550efe:	eb 12                	jmp    0x550f12
550f00:	8b 43 04             	mov    0x4(%ebx),%eax
550f03:	50                   	push   %eax
550f04:	e8 27 56 fd ff       	call   0x526530
550f09:	59                   	pop    %ecx
550f0a:	89 45 f0             	mov    %eax,-0x10(%ebp)
550f0d:	8b 53 fc             	mov    -0x4(%ebx),%edx
550f10:	89 16                	mov    %edx,(%esi)
550f12:	8b 55 ec             	mov    -0x14(%ebp),%edx
550f15:	8b 45 f0             	mov    -0x10(%ebp),%eax
550f18:	03 d0                	add    %eax,%edx
550f1a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
550f1d:	03 d1                	add    %ecx,%edx
550f1f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
550f22:	03 d0                	add    %eax,%edx
550f24:	8b 45 fc             	mov    -0x4(%ebp),%eax
550f27:	83 c2 04             	add    $0x4,%edx
550f2a:	e8 6d 0c 00 00       	call   0x551b9c
550f2f:	89 46 04             	mov    %eax,0x4(%esi)
550f32:	8b 56 04             	mov    0x4(%esi),%edx
550f35:	85 d2                	test   %edx,%edx
550f37:	75 0a                	jne    0x550f43
550f39:	b8 01 00 00 00       	mov    $0x1,%eax
550f3e:	e9 80 00 00 00       	jmp    0x550fc3
550f43:	8b 55 ec             	mov    -0x14(%ebp),%edx
550f46:	52                   	push   %edx
550f47:	8b 0b                	mov    (%ebx),%ecx
550f49:	51                   	push   %ecx
550f4a:	8b 46 04             	mov    0x4(%esi),%eax
550f4d:	50                   	push   %eax
550f4e:	e8 8d 54 fd ff       	call   0x5263e0
550f53:	8b 46 04             	mov    0x4(%esi),%eax
550f56:	8b 55 ec             	mov    -0x14(%ebp),%edx
550f59:	83 c4 0c             	add    $0xc,%esp
550f5c:	c6 04 10 00          	movb   $0x0,(%eax,%edx,1)
550f60:	8b d0                	mov    %eax,%edx
550f62:	8b 45 ec             	mov    -0x14(%ebp),%eax
550f65:	03 d0                	add    %eax,%edx
550f67:	42                   	inc    %edx
550f68:	89 56 08             	mov    %edx,0x8(%esi)
550f6b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
550f6e:	85 c9                	test   %ecx,%ecx
550f70:	74 11                	je     0x550f83
550f72:	8b 45 f0             	mov    -0x10(%ebp),%eax
550f75:	50                   	push   %eax
550f76:	8b 4b 04             	mov    0x4(%ebx),%ecx
550f79:	51                   	push   %ecx
550f7a:	52                   	push   %edx
550f7b:	e8 60 54 fd ff       	call   0x5263e0
550f80:	83 c4 0c             	add    $0xc,%esp
550f83:	8b 56 08             	mov    0x8(%esi),%edx
550f86:	8b 45 f0             	mov    -0x10(%ebp),%eax
550f89:	c6 04 02 00          	movb   $0x0,(%edx,%eax,1)
550f8d:	8b 55 f0             	mov    -0x10(%ebp),%edx
550f90:	89 56 0c             	mov    %edx,0xc(%esi)
550f93:	8b 4f 30             	mov    0x30(%edi),%ecx
550f96:	c1 e1 04             	shl    $0x4,%ecx
550f99:	8b 47 38             	mov    0x38(%edi),%eax
550f9c:	56                   	push   %esi
550f9d:	57                   	push   %edi
550f9e:	8d 3c 08             	lea    (%eax,%ecx,1),%edi
550fa1:	b9 04 00 00 00       	mov    $0x4,%ecx
550fa6:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
550fa8:	5f                   	pop    %edi
550fa9:	5e                   	pop    %esi
550faa:	ff 47 30             	incl   0x30(%edi)
550fad:	ff 45 f4             	incl   -0xc(%ebp)
550fb0:	83 c3 10             	add    $0x10,%ebx
550fb3:	8b 45 f4             	mov    -0xc(%ebp),%eax
550fb6:	8b 55 08             	mov    0x8(%ebp),%edx
550fb9:	3b c2                	cmp    %edx,%eax
550fbb:	0f 8c e1 fe ff ff    	jl     0x550ea2
550fc1:	33 c0                	xor    %eax,%eax
550fc3:	5f                   	pop    %edi
550fc4:	5e                   	pop    %esi
550fc5:	5b                   	pop    %ebx
550fc6:	8b e5                	mov    %ebp,%esp
550fc8:	5d                   	pop    %ebp
550fc9:	c2 04 00             	ret    $0x4
550fcc:	53                   	push   %ebx
550fcd:	8b da                	mov    %edx,%ebx
550fcf:	85 c0                	test   %eax,%eax
550fd1:	74 20                	je     0x550ff3
550fd3:	85 db                	test   %ebx,%ebx
550fd5:	74 1c                	je     0x550ff3
550fd7:	f6 40 29 02          	testb  $0x2,0x29(%eax)
550fdb:	75 16                	jne    0x550ff3
550fdd:	6a 08                	push   $0x8
550fdf:	51                   	push   %ecx
550fe0:	8d 43 3c             	lea    0x3c(%ebx),%eax
550fe3:	50                   	push   %eax
550fe4:	e8 f7 53 fd ff       	call   0x5263e0
550fe9:	83 c4 0c             	add    $0xc,%esp
550fec:	81 4b 08 00 02 00 00 	orl    $0x200,0x8(%ebx)
550ff3:	5b                   	pop    %ebx
550ff4:	c3                   	ret
550ff5:	90                   	nop
550ff6:	90                   	nop
550ff7:	90                   	nop
550ff8:	55                   	push   %ebp
550ff9:	8b ec                	mov    %esp,%ebp
550ffb:	51                   	push   %ecx
550ffc:	53                   	push   %ebx
550ffd:	56                   	push   %esi
550ffe:	57                   	push   %edi
550fff:	89 4d fc             	mov    %ecx,-0x4(%ebp)
551002:	8b da                	mov    %edx,%ebx
551004:	8b f0                	mov    %eax,%esi
551006:	8b 7d 0c             	mov    0xc(%ebp),%edi
551009:	85 f6                	test   %esi,%esi
55100b:	74 75                	je     0x551082
55100d:	85 db                	test   %ebx,%ebx
55100f:	74 71                	je     0x551082
551011:	8b 45 fc             	mov    -0x4(%ebp),%eax
551014:	85 c0                	test   %eax,%eax
551016:	74 40                	je     0x551058
551018:	6a 00                	push   $0x0
55101a:	b9 00 20 00 00       	mov    $0x2000,%ecx
55101f:	8b d3                	mov    %ebx,%edx
551021:	8b c6                	mov    %esi,%eax
551023:	e8 f8 5d 00 00       	call   0x556e20
551028:	ba 00 01 00 00       	mov    $0x100,%edx
55102d:	8b c6                	mov    %esi,%eax
55102f:	e8 c0 0a 00 00       	call   0x551af4
551034:	89 43 4c             	mov    %eax,0x4c(%ebx)
551037:	89 86 48 01 00 00    	mov    %eax,0x148(%esi)
55103d:	57                   	push   %edi
55103e:	8b 55 fc             	mov    -0x4(%ebp),%edx
551041:	52                   	push   %edx
551042:	8b 4b 4c             	mov    0x4c(%ebx),%ecx
551045:	51                   	push   %ecx
551046:	e8 95 53 fd ff       	call   0x5263e0
55104b:	83 c4 0c             	add    $0xc,%esp
55104e:	81 8b b8 00 00 00 00 	orl    $0x2000,0xb8(%ebx)
551055:	20 00 00
551058:	8b 45 08             	mov    0x8(%ebp),%eax
55105b:	85 c0                	test   %eax,%eax
55105d:	74 1b                	je     0x55107a
55105f:	6a 0a                	push   $0xa
551061:	8b 55 08             	mov    0x8(%ebp),%edx
551064:	52                   	push   %edx
551065:	8d 4b 50             	lea    0x50(%ebx),%ecx
551068:	51                   	push   %ecx
551069:	e8 72 53 fd ff       	call   0x5263e0
55106e:	83 c4 0c             	add    $0xc,%esp
551071:	85 ff                	test   %edi,%edi
551073:	75 05                	jne    0x55107a
551075:	bf 01 00 00 00       	mov    $0x1,%edi
55107a:	66 89 7b 16          	mov    %di,0x16(%ebx)
55107e:	83 4b 08 10          	orl    $0x10,0x8(%ebx)
551082:	5f                   	pop    %edi
551083:	5e                   	pop    %esi
551084:	5b                   	pop    %ebx
551085:	59                   	pop    %ecx
551086:	5d                   	pop    %ebp
551087:	c2 08 00             	ret    $0x8
55108a:	90                   	nop
55108b:	90                   	nop
55108c:	55                   	push   %ebp
55108d:	8b ec                	mov    %esp,%ebp
55108f:	83 c4 f0             	add    $0xfffffff0,%esp
551092:	53                   	push   %ebx
551093:	56                   	push   %esi
551094:	57                   	push   %edi
551095:	89 4d f4             	mov    %ecx,-0xc(%ebp)
551098:	89 55 f8             	mov    %edx,-0x8(%ebp)
55109b:	89 45 fc             	mov    %eax,-0x4(%ebp)
55109e:	8b 45 f8             	mov    -0x8(%ebp),%eax
5510a1:	8b 4d 08             	mov    0x8(%ebp),%ecx
5510a4:	8b 90 d8 00 00 00    	mov    0xd8(%eax),%edx
5510aa:	8b 45 fc             	mov    -0x4(%ebp),%eax
5510ad:	03 d1                	add    %ecx,%edx
5510af:	c1 e2 04             	shl    $0x4,%edx
5510b2:	e8 e5 0a 00 00       	call   0x551b9c
5510b7:	89 45 f0             	mov    %eax,-0x10(%ebp)
5510ba:	8b 55 f0             	mov    -0x10(%ebp),%edx
5510bd:	85 d2                	test   %edx,%edx
5510bf:	75 12                	jne    0x5510d3
5510c1:	ba 47 c4 69 00       	mov    $0x69c447,%edx
5510c6:	8b 45 fc             	mov    -0x4(%ebp),%eax
5510c9:	e8 1a 0c 00 00       	call   0x551ce8
5510ce:	e9 16 01 00 00       	jmp    0x5511e9
5510d3:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5510d6:	8b 81 d8 00 00 00    	mov    0xd8(%ecx),%eax
5510dc:	c1 e0 04             	shl    $0x4,%eax
5510df:	50                   	push   %eax
5510e0:	8b 55 f8             	mov    -0x8(%ebp),%edx
5510e3:	8b 8a d4 00 00 00    	mov    0xd4(%edx),%ecx
5510e9:	51                   	push   %ecx
5510ea:	8b 45 f0             	mov    -0x10(%ebp),%eax
5510ed:	50                   	push   %eax
5510ee:	e8 ed 52 fd ff       	call   0x5263e0
5510f3:	83 c4 0c             	add    $0xc,%esp
5510f6:	8b 55 f8             	mov    -0x8(%ebp),%edx
5510f9:	8b 92 d4 00 00 00    	mov    0xd4(%edx),%edx
5510ff:	8b 45 fc             	mov    -0x4(%ebp),%eax
551102:	e8 61 0a 00 00       	call   0x551b68
551107:	8b 4d f8             	mov    -0x8(%ebp),%ecx
55110a:	33 c0                	xor    %eax,%eax
55110c:	89 81 d4 00 00 00    	mov    %eax,0xd4(%ecx)
551112:	33 ff                	xor    %edi,%edi
551114:	8b 45 08             	mov    0x8(%ebp),%eax
551117:	3b f8                	cmp    %eax,%edi
551119:	0f 8d 9e 00 00 00    	jge    0x5511bd
55111f:	8b 55 f8             	mov    -0x8(%ebp),%edx
551122:	8b c7                	mov    %edi,%eax
551124:	c1 e0 04             	shl    $0x4,%eax
551127:	8b d8                	mov    %eax,%ebx
551129:	8b b2 d8 00 00 00    	mov    0xd8(%edx),%esi
55112f:	c1 e6 04             	shl    $0x4,%esi
551132:	8b 55 f0             	mov    -0x10(%ebp),%edx
551135:	03 f2                	add    %edx,%esi
551137:	03 f0                	add    %eax,%esi
551139:	8b 45 f4             	mov    -0xc(%ebp),%eax
55113c:	03 d8                	add    %eax,%ebx
55113e:	8b 13                	mov    (%ebx),%edx
551140:	52                   	push   %edx
551141:	e8 ea 53 fd ff       	call   0x526530
551146:	59                   	pop    %ecx
551147:	8b d0                	mov    %eax,%edx
551149:	42                   	inc    %edx
55114a:	8b 45 fc             	mov    -0x4(%ebp),%eax
55114d:	e8 a2 09 00 00       	call   0x551af4
551152:	89 06                	mov    %eax,(%esi)
551154:	8b 03                	mov    (%ebx),%eax
551156:	8b 0e                	mov    (%esi),%ecx
551158:	56                   	push   %esi
551159:	57                   	push   %edi
55115a:	8b f8                	mov    %eax,%edi
55115c:	33 c0                	xor    %eax,%eax
55115e:	8b f1                	mov    %ecx,%esi
551160:	83 c9 ff             	or     $0xffffffff,%ecx
551163:	f2 ae                	repnz scas %es:(%edi),%al
551165:	f7 d1                	not    %ecx
551167:	2b f9                	sub    %ecx,%edi
551169:	8b d1                	mov    %ecx,%edx
55116b:	87 f7                	xchg   %esi,%edi
55116d:	c1 e9 02             	shr    $0x2,%ecx
551170:	8b c7                	mov    %edi,%eax
551172:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
551174:	8b ca                	mov    %edx,%ecx
551176:	83 e1 03             	and    $0x3,%ecx
551179:	f3 a4                	rep movsb %ds:(%esi),%es:(%edi)
55117b:	8b 53 0c             	mov    0xc(%ebx),%edx
55117e:	5f                   	pop    %edi
55117f:	c1 e2 04             	shl    $0x4,%edx
551182:	5e                   	pop    %esi
551183:	8b 45 fc             	mov    -0x4(%ebp),%eax
551186:	e8 69 09 00 00       	call   0x551af4
55118b:	89 46 08             	mov    %eax,0x8(%esi)
55118e:	8b 4b 0c             	mov    0xc(%ebx),%ecx
551191:	c1 e1 04             	shl    $0x4,%ecx
551194:	51                   	push   %ecx
551195:	8b 43 08             	mov    0x8(%ebx),%eax
551198:	50                   	push   %eax
551199:	8b 56 08             	mov    0x8(%esi),%edx
55119c:	52                   	push   %edx
55119d:	e8 3e 52 fd ff       	call   0x5263e0
5511a2:	83 c4 0c             	add    $0xc,%esp
5511a5:	8b 4b 0c             	mov    0xc(%ebx),%ecx
5511a8:	89 4e 0c             	mov    %ecx,0xc(%esi)
5511ab:	8a 43 04             	mov    0x4(%ebx),%al
5511ae:	88 46 04             	mov    %al,0x4(%esi)
5511b1:	47                   	inc    %edi
5511b2:	8b 55 08             	mov    0x8(%ebp),%edx
5511b5:	3b fa                	cmp    %edx,%edi
5511b7:	0f 8c 62 ff ff ff    	jl     0x55111f
5511bd:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5511c0:	8b 45 f0             	mov    -0x10(%ebp),%eax
5511c3:	89 81 d4 00 00 00    	mov    %eax,0xd4(%ecx)
5511c9:	8b 55 f8             	mov    -0x8(%ebp),%edx
5511cc:	8b 4d 08             	mov    0x8(%ebp),%ecx
5511cf:	01 8a d8 00 00 00    	add    %ecx,0xd8(%edx)
5511d5:	8b 45 f8             	mov    -0x8(%ebp),%eax
5511d8:	81 48 08 00 20 00 00 	orl    $0x2000,0x8(%eax)
5511df:	8b 55 f8             	mov    -0x8(%ebp),%edx
5511e2:	83 8a b8 00 00 00 20 	orl    $0x20,0xb8(%edx)
5511e9:	5f                   	pop    %edi
5511ea:	5e                   	pop    %esi
5511eb:	5b                   	pop    %ebx
5511ec:	8b e5                	mov    %ebp,%esp
5511ee:	5d                   	pop    %ebp
5511ef:	c2 04 00             	ret    $0x4
5511f2:	90                   	nop
5511f3:	90                   	nop
5511f4:	55                   	push   %ebp
5511f5:	8b ec                	mov    %esp,%ebp
5511f7:	83 c4 f0             	add    $0xfffffff0,%esp
5511fa:	53                   	push   %ebx
5511fb:	56                   	push   %esi
5511fc:	57                   	push   %edi
5511fd:	89 4d f4             	mov    %ecx,-0xc(%ebp)
551200:	89 55 f8             	mov    %edx,-0x8(%ebp)
551203:	89 45 fc             	mov    %eax,-0x4(%ebp)
551206:	8b 45 fc             	mov    -0x4(%ebp),%eax
551209:	85 c0                	test   %eax,%eax
55120b:	0f 84 62 01 00 00    	je     0x551373
551211:	8b 55 f8             	mov    -0x8(%ebp),%edx
551214:	85 d2                	test   %edx,%edx
551216:	0f 84 57 01 00 00    	je     0x551373