549ec1:	5f                   	pop    %edi
549ec2:	5e                   	pop    %esi
549ec3:	5b                   	pop    %ebx
549ec4:	8b e5                	mov    %ebp,%esp
549ec6:	5d                   	pop    %ebp
549ec7:	c2 08 00             	ret    $0x8
549eca:	90                   	nop
549ecb:	90                   	nop
549ecc:	53                   	push   %ebx
549ecd:	56                   	push   %esi
549ece:	57                   	push   %edi
549ecf:	55                   	push   %ebp
549ed0:	83 c4 ec             	add    $0xffffffec,%esp
549ed3:	89 4c 24 04          	mov    %ecx,0x4(%esp)
549ed7:	89 14 24             	mov    %edx,(%esp)
549eda:	8b 10                	mov    (%eax),%edx
549edc:	8a 48 08             	mov    0x8(%eax),%cl
549edf:	84 c9                	test   %cl,%cl
549ee1:	0f 85 a6 02 00 00    	jne    0x54a18d
549ee7:	8b 4c 24 04          	mov    0x4(%esp),%ecx
549eeb:	85 c9                	test   %ecx,%ecx
549eed:	74 0a                	je     0x549ef9
549eef:	8b 4c 24 04          	mov    0x4(%esp),%ecx
549ef3:	66 8b 49 08          	mov    0x8(%ecx),%cx
549ef7:	eb 02                	jmp    0x549efb
549ef9:	33 c9                	xor    %ecx,%ecx
549efb:	66 89 4c 24 10       	mov    %cx,0x10(%esp)
549f00:	8a 48 09             	mov    0x9(%eax),%cl
549f03:	80 f9 08             	cmp    $0x8,%cl
549f06:	0f 83 a8 01 00 00    	jae    0x54a0b4
549f0c:	fe c9                	dec    %cl
549f0e:	74 16                	je     0x549f26
549f10:	fe c9                	dec    %cl
549f12:	0f 84 83 00 00 00    	je     0x549f9b
549f18:	80 e9 02             	sub    $0x2,%cl
549f1b:	0f 84 0d 01 00 00    	je     0x54a02e
549f21:	e9 83 01 00 00       	jmp    0x54a0a9
549f26:	0f b7 4c 24 10       	movzwl 0x10(%esp),%ecx
549f2b:	8b d9                	mov    %ecx,%ebx
549f2d:	8b fa                	mov    %edx,%edi
549f2f:	c1 e1 08             	shl    $0x8,%ecx
549f32:	4f                   	dec    %edi
549f33:	2b cb                	sub    %ebx,%ecx
549f35:	bb 07 00 00 00       	mov    $0x7,%ebx
549f3a:	66 89 4c 24 10       	mov    %cx,0x10(%esp)
549f3f:	33 ed                	xor    %ebp,%ebp
549f41:	c1 ef 03             	shr    $0x3,%edi
549f44:	8b 0c 24             	mov    (%esp),%ecx
549f47:	03 f9                	add    %ecx,%edi
549f49:	8b 34 24             	mov    (%esp),%esi
549f4c:	8d 4a 07             	lea    0x7(%edx),%ecx
549f4f:	03 f2                	add    %edx,%esi
549f51:	83 e1 07             	and    $0x7,%ecx
549f54:	4e                   	dec    %esi
549f55:	2b d9                	sub    %ecx,%ebx
549f57:	3b d5                	cmp    %ebp,%edx
549f59:	89 5c 24 08          	mov    %ebx,0x8(%esp)
549f5d:	0f 86 46 01 00 00    	jbe    0x54a0a9
549f63:	8b 4c 24 08          	mov    0x8(%esp),%ecx
549f67:	33 db                	xor    %ebx,%ebx
549f69:	8a 1f                	mov    (%edi),%bl
549f6b:	d3 fb                	sar    %cl,%ebx
549f6d:	f6 c3 01             	test   $0x1,%bl
549f70:	74 05                	je     0x549f77
549f72:	c6 06 ff             	movb   $0xff,(%esi)
549f75:	eb 03                	jmp    0x549f7a
549f77:	c6 06 00             	movb   $0x0,(%esi)
549f7a:	8b 4c 24 08          	mov    0x8(%esp),%ecx
549f7e:	83 f9 07             	cmp    $0x7,%ecx
549f81:	75 09                	jne    0x549f8c
549f83:	33 c9                	xor    %ecx,%ecx
549f85:	4f                   	dec    %edi
549f86:	89 4c 24 08          	mov    %ecx,0x8(%esp)
549f8a:	eb 04                	jmp    0x549f90
549f8c:	ff 44 24 08          	incl   0x8(%esp)
549f90:	4e                   	dec    %esi
549f91:	45                   	inc    %ebp
549f92:	3b d5                	cmp    %ebp,%edx
549f94:	77 cd                	ja     0x549f63
549f96:	e9 0e 01 00 00       	jmp    0x54a0a9
549f9b:	0f b7 4c 24 10       	movzwl 0x10(%esp),%ecx
549fa0:	8b d9                	mov    %ecx,%ebx
549fa2:	8b fa                	mov    %edx,%edi
549fa4:	c1 e1 04             	shl    $0x4,%ecx
549fa7:	4f                   	dec    %edi
549fa8:	03 cb                	add    %ebx,%ecx
549faa:	bb 03 00 00 00       	mov    $0x3,%ebx
549faf:	c1 ef 02             	shr    $0x2,%edi
549fb2:	33 ed                	xor    %ebp,%ebp
549fb4:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
549fb7:	66 89 4c 24 10       	mov    %cx,0x10(%esp)
549fbc:	8b 0c 24             	mov    (%esp),%ecx
549fbf:	8b 34 24             	mov    (%esp),%esi
549fc2:	03 f9                	add    %ecx,%edi
549fc4:	8d 4a 03             	lea    0x3(%edx),%ecx
549fc7:	83 e1 03             	and    $0x3,%ecx
549fca:	03 f2                	add    %edx,%esi
549fcc:	2b d9                	sub    %ecx,%ebx
549fce:	4e                   	dec    %esi
549fcf:	03 db                	add    %ebx,%ebx
549fd1:	3b d5                	cmp    %ebp,%edx
549fd3:	89 5c 24 08          	mov    %ebx,0x8(%esp)
549fd7:	0f 86 cc 00 00 00    	jbe    0x54a0a9
549fdd:	8b 4c 24 08          	mov    0x8(%esp),%ecx
549fe1:	33 db                	xor    %ebx,%ebx
549fe3:	8a 1f                	mov    (%edi),%bl
549fe5:	d3 fb                	sar    %cl,%ebx
549fe7:	83 e3 03             	and    $0x3,%ebx
549fea:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
549fee:	8a 4c 24 0c          	mov    0xc(%esp),%cl
549ff2:	8a 5c 24 0c          	mov    0xc(%esp),%bl
549ff6:	c1 e3 02             	shl    $0x2,%ebx
549ff9:	0a cb                	or     %bl,%cl
549ffb:	8a 5c 24 0c          	mov    0xc(%esp),%bl
549fff:	c1 e3 04             	shl    $0x4,%ebx
54a002:	0a cb                	or     %bl,%cl
54a004:	8a 5c 24 0c          	mov    0xc(%esp),%bl
54a008:	c1 e3 06             	shl    $0x6,%ebx
54a00b:	0a cb                	or     %bl,%cl
54a00d:	88 0e                	mov    %cl,(%esi)
54a00f:	8b 4c 24 08          	mov    0x8(%esp),%ecx
54a013:	83 f9 06             	cmp    $0x6,%ecx
54a016:	75 09                	jne    0x54a021
54a018:	33 c9                	xor    %ecx,%ecx
54a01a:	4f                   	dec    %edi
54a01b:	89 4c 24 08          	mov    %ecx,0x8(%esp)
54a01f:	eb 05                	jmp    0x54a026
54a021:	83 44 24 08 02       	addl   $0x2,0x8(%esp)
54a026:	4e                   	dec    %esi
54a027:	45                   	inc    %ebp
54a028:	3b d5                	cmp    %ebp,%edx
54a02a:	77 b1                	ja     0x549fdd
54a02c:	eb 7b                	jmp    0x54a0a9
54a02e:	0f b7 4c 24 10       	movzwl 0x10(%esp),%ecx
54a033:	8b d9                	mov    %ecx,%ebx
54a035:	8b fa                	mov    %edx,%edi
54a037:	c1 e1 04             	shl    $0x4,%ecx
54a03a:	4f                   	dec    %edi
54a03b:	03 cb                	add    %ebx,%ecx
54a03d:	bb 01 00 00 00       	mov    $0x1,%ebx
54a042:	66 89 4c 24 10       	mov    %cx,0x10(%esp)
54a047:	33 ed                	xor    %ebp,%ebp
54a049:	d1 ef                	shr    $1,%edi
54a04b:	8b 0c 24             	mov    (%esp),%ecx
54a04e:	03 f9                	add    %ecx,%edi
54a050:	8d 4a 01             	lea    0x1(%edx),%ecx
54a053:	83 e1 01             	and    $0x1,%ecx
54a056:	8b 34 24             	mov    (%esp),%esi
54a059:	2b d9                	sub    %ecx,%ebx
54a05b:	03 f2                	add    %edx,%esi
54a05d:	c1 e3 02             	shl    $0x2,%ebx
54a060:	4e                   	dec    %esi
54a061:	3b d5                	cmp    %ebp,%edx
54a063:	89 5c 24 08          	mov    %ebx,0x8(%esp)
54a067:	76 40                	jbe    0x54a0a9
54a069:	8b 4c 24 08          	mov    0x8(%esp),%ecx
54a06d:	33 db                	xor    %ebx,%ebx
54a06f:	8a 1f                	mov    (%edi),%bl
54a071:	d3 fb                	sar    %cl,%ebx
54a073:	83 e3 0f             	and    $0xf,%ebx
54a076:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
54a07a:	8a 4c 24 0c          	mov    0xc(%esp),%cl
54a07e:	8a 5c 24 0c          	mov    0xc(%esp),%bl
54a082:	c1 e3 04             	shl    $0x4,%ebx
54a085:	0a cb                	or     %bl,%cl
54a087:	88 0e                	mov    %cl,(%esi)
54a089:	8b 4c 24 08          	mov    0x8(%esp),%ecx
54a08d:	83 f9 04             	cmp    $0x4,%ecx
54a090:	75 09                	jne    0x54a09b
54a092:	33 c9                	xor    %ecx,%ecx
54a094:	4f                   	dec    %edi
54a095:	89 4c 24 08          	mov    %ecx,0x8(%esp)
54a099:	eb 08                	jmp    0x54a0a3
54a09b:	c7 44 24 08 04 00 00 	movl   $0x4,0x8(%esp)
54a0a2:	00
54a0a3:	4e                   	dec    %esi
54a0a4:	45                   	inc    %ebp
54a0a5:	3b d5                	cmp    %ebp,%edx
54a0a7:	77 c0                	ja     0x54a069
54a0a9:	c6 40 09 08          	movb   $0x8,0x9(%eax)
54a0ad:	c6 40 0b 08          	movb   $0x8,0xb(%eax)
54a0b1:	89 50 04             	mov    %edx,0x4(%eax)
54a0b4:	8b 4c 24 04          	mov    0x4(%esp),%ecx
54a0b8:	85 c9                	test   %ecx,%ecx
54a0ba:	0f 84 4e 02 00 00    	je     0x54a30e
54a0c0:	8a 48 09             	mov    0x9(%eax),%cl
54a0c3:	80 f9 08             	cmp    $0x8,%cl
54a0c6:	75 3e                	jne    0x54a106
54a0c8:	8b f2                	mov    %edx,%esi
54a0ca:	8b 3c 24             	mov    (%esp),%edi
54a0cd:	03 f6                	add    %esi,%esi
54a0cf:	8b 0c 24             	mov    (%esp),%ecx
54a0d2:	03 f1                	add    %ecx,%esi
54a0d4:	03 fa                	add    %edx,%edi
54a0d6:	4f                   	dec    %edi
54a0d7:	4e                   	dec    %esi
54a0d8:	33 ed                	xor    %ebp,%ebp
54a0da:	3b d5                	cmp    %ebp,%edx
54a0dc:	0f 86 87 00 00 00    	jbe    0x54a169
54a0e2:	33 c9                	xor    %ecx,%ecx
54a0e4:	8a 0f                	mov    (%edi),%cl
54a0e6:	0f b7 5c 24 10       	movzwl 0x10(%esp),%ebx
54a0eb:	3b cb                	cmp    %ebx,%ecx
54a0ed:	75 06                	jne    0x54a0f5
54a0ef:	c6 06 00             	movb   $0x0,(%esi)
54a0f2:	4e                   	dec    %esi
54a0f3:	eb 04                	jmp    0x54a0f9
54a0f5:	c6 06 ff             	movb   $0xff,(%esi)
54a0f8:	4e                   	dec    %esi
54a0f9:	8a 0f                	mov    (%edi),%cl
54a0fb:	88 0e                	mov    %cl,(%esi)
54a0fd:	4f                   	dec    %edi
54a0fe:	4e                   	dec    %esi
54a0ff:	45                   	inc    %ebp
54a100:	3b d5                	cmp    %ebp,%edx
54a102:	77 de                	ja     0x54a0e2
54a104:	eb 63                	jmp    0x54a169
54a106:	8a 48 09             	mov    0x9(%eax),%cl
54a109:	80 f9 10             	cmp    $0x10,%cl
54a10c:	75 5b                	jne    0x54a169
54a10e:	8b 48 04             	mov    0x4(%eax),%ecx
54a111:	8b 1c 24             	mov    (%esp),%ebx
54a114:	8b f9                	mov    %ecx,%edi
54a116:	8b f1                	mov    %ecx,%esi
54a118:	8b 0c 24             	mov    (%esp),%ecx
54a11b:	03 f6                	add    %esi,%esi
54a11d:	03 f1                	add    %ecx,%esi
54a11f:	03 fb                	add    %ebx,%edi
54a121:	4f                   	dec    %edi
54a122:	4e                   	dec    %esi
54a123:	33 ed                	xor    %ebp,%ebp
54a125:	3b d5                	cmp    %ebp,%edx
54a127:	76 40                	jbe    0x54a169
54a129:	33 db                	xor    %ebx,%ebx
54a12b:	33 c9                	xor    %ecx,%ecx
54a12d:	8a 5f ff             	mov    -0x1(%edi),%bl
54a130:	8a 0f                	mov    (%edi),%cl
54a132:	0f b7 db             	movzwl %bx,%ebx
54a135:	0f b7 c9             	movzwl %cx,%ecx
54a138:	c1 e3 08             	shl    $0x8,%ebx
54a13b:	0b cb                	or     %ebx,%ecx
54a13d:	0f b7 5c 24 10       	movzwl 0x10(%esp),%ebx
54a142:	3b cb                	cmp    %ebx,%ecx
54a144:	75 0a                	jne    0x54a150
54a146:	c6 06 00             	movb   $0x0,(%esi)
54a149:	4e                   	dec    %esi
54a14a:	c6 06 00             	movb   $0x0,(%esi)
54a14d:	4e                   	dec    %esi
54a14e:	eb 08                	jmp    0x54a158
54a150:	c6 06 ff             	movb   $0xff,(%esi)
54a153:	4e                   	dec    %esi
54a154:	c6 06 ff             	movb   $0xff,(%esi)
54a157:	4e                   	dec    %esi
54a158:	8a 0f                	mov    (%edi),%cl
54a15a:	4f                   	dec    %edi
54a15b:	88 0e                	mov    %cl,(%esi)
54a15d:	4e                   	dec    %esi
54a15e:	8a 0f                	mov    (%edi),%cl
54a160:	4f                   	dec    %edi
54a161:	88 0e                	mov    %cl,(%esi)
54a163:	4e                   	dec    %esi
54a164:	45                   	inc    %ebp
54a165:	3b d5                	cmp    %ebp,%edx
54a167:	77 c0                	ja     0x54a129
54a169:	c6 40 08 04          	movb   $0x4,0x8(%eax)
54a16d:	c6 40 0a 02          	movb   $0x2,0xa(%eax)
54a171:	8a 48 09             	mov    0x9(%eax),%cl
54a174:	03 c9                	add    %ecx,%ecx
54a176:	88 48 0b             	mov    %cl,0xb(%eax)
54a179:	81 e1 ff 00 00 00    	and    $0xff,%ecx
54a17f:	0f af ca             	imul   %edx,%ecx
54a182:	c1 e9 03             	shr    $0x3,%ecx
54a185:	89 48 04             	mov    %ecx,0x4(%eax)
54a188:	e9 81 01 00 00       	jmp    0x54a30e
54a18d:	8a 48 08             	mov    0x8(%eax),%cl
54a190:	80 f9 02             	cmp    $0x2,%cl
54a193:	0f 85 75 01 00 00    	jne    0x54a30e
54a199:	8b 4c 24 04          	mov    0x4(%esp),%ecx
54a19d:	85 c9                	test   %ecx,%ecx
54a19f:	0f 84 69 01 00 00    	je     0x54a30e
54a1a5:	8a 48 09             	mov    0x9(%eax),%cl
54a1a8:	80 f9 08             	cmp    $0x8,%cl
54a1ab:	75 76                	jne    0x54a223
54a1ad:	8b 78 04             	mov    0x4(%eax),%edi
54a1b0:	8b 0c 24             	mov    (%esp),%ecx
54a1b3:	8b f2                	mov    %edx,%esi
54a1b5:	03 f9                	add    %ecx,%edi
54a1b7:	c1 e6 02             	shl    $0x2,%esi
54a1ba:	8b 0c 24             	mov    (%esp),%ecx
54a1bd:	03 f1                	add    %ecx,%esi
54a1bf:	4f                   	dec    %edi
54a1c0:	4e                   	dec    %esi
54a1c1:	33 ed                	xor    %ebp,%ebp
54a1c3:	3b d5                	cmp    %ebp,%edx
54a1c5:	0f 86 23 01 00 00    	jbe    0x54a2ee
54a1cb:	8b 5c 24 04          	mov    0x4(%esp),%ebx
54a1cf:	33 c9                	xor    %ecx,%ecx
54a1d1:	8a 4f fe             	mov    -0x2(%edi),%cl
54a1d4:	0f b7 5b 02          	movzwl 0x2(%ebx),%ebx
54a1d8:	3b cb                	cmp    %ebx,%ecx
54a1da:	75 27                	jne    0x54a203
54a1dc:	8b 5c 24 04          	mov    0x4(%esp),%ebx
54a1e0:	33 c9                	xor    %ecx,%ecx
54a1e2:	8a 4f ff             	mov    -0x1(%edi),%cl
54a1e5:	0f b7 5b 04          	movzwl 0x4(%ebx),%ebx
54a1e9:	3b cb                	cmp    %ebx,%ecx
54a1eb:	75 16                	jne    0x54a203
54a1ed:	8b 5c 24 04          	mov    0x4(%esp),%ebx
54a1f1:	33 c9                	xor    %ecx,%ecx
54a1f3:	8a 0f                	mov    (%edi),%cl
54a1f5:	0f b7 5b 06          	movzwl 0x6(%ebx),%ebx
54a1f9:	3b cb                	cmp    %ebx,%ecx
54a1fb:	75 06                	jne    0x54a203
54a1fd:	c6 06 00             	movb   $0x0,(%esi)
54a200:	4e                   	dec    %esi
54a201:	eb 04                	jmp    0x54a207
54a203:	c6 06 ff             	movb   $0xff,(%esi)
54a206:	4e                   	dec    %esi
54a207:	8a 0f                	mov    (%edi),%cl
54a209:	4f                   	dec    %edi
54a20a:	88 0e                	mov    %cl,(%esi)
54a20c:	4e                   	dec    %esi
54a20d:	8a 0f                	mov    (%edi),%cl
54a20f:	4f                   	dec    %edi
54a210:	88 0e                	mov    %cl,(%esi)
54a212:	4e                   	dec    %esi
54a213:	8a 0f                	mov    (%edi),%cl
54a215:	4f                   	dec    %edi
54a216:	88 0e                	mov    %cl,(%esi)
54a218:	4e                   	dec    %esi
54a219:	45                   	inc    %ebp
54a21a:	3b d5                	cmp    %ebp,%edx
54a21c:	77 ad                	ja     0x54a1cb
54a21e:	e9 cb 00 00 00       	jmp    0x54a2ee
54a223:	8a 48 09             	mov    0x9(%eax),%cl
54a226:	80 f9 10             	cmp    $0x10,%cl
54a229:	0f 85 bf 00 00 00    	jne    0x54a2ee
54a22f:	8b 78 04             	mov    0x4(%eax),%edi
54a232:	8b 0c 24             	mov    (%esp),%ecx
54a235:	8b f2                	mov    %edx,%esi
54a237:	03 f9                	add    %ecx,%edi
54a239:	c1 e6 03             	shl    $0x3,%esi
54a23c:	8b 0c 24             	mov    (%esp),%ecx
54a23f:	03 f1                	add    %ecx,%esi
54a241:	4f                   	dec    %edi
54a242:	4e                   	dec    %esi
54a243:	33 ed                	xor    %ebp,%ebp
54a245:	3b d5                	cmp    %ebp,%edx
54a247:	0f 86 a1 00 00 00    	jbe    0x54a2ee
54a24d:	33 db                	xor    %ebx,%ebx