41c081:	c1 e9 07             	shr    $0x7,%ecx
41c084:	23 ca                	and    %edx,%ecx
41c086:	89 43 14             	mov    %eax,0x14(%ebx)
41c089:	89 4b 10             	mov    %ecx,0x10(%ebx)
41c08c:	eb 16                	jmp    0x41c0a4
41c08e:	81 fe 17 01 00 00    	cmp    $0x117,%esi
41c094:	75 0c                	jne    0x41c0a2
41c096:	8b 45 f4             	mov    -0xc(%ebp),%eax
41c099:	c1 e8 07             	shr    $0x7,%eax
41c09c:	83 e0 01             	and    $0x1,%eax
41c09f:	89 43 10             	mov    %eax,0x10(%ebx)
41c0a2:	33 d2                	xor    %edx,%edx
41c0a4:	8b 45 ec             	mov    -0x14(%ebp),%eax
41c0a7:	85 c0                	test   %eax,%eax
41c0a9:	74 0d                	je     0x41c0b8
41c0ab:	33 c9                	xor    %ecx,%ecx
41c0ad:	81 fe 22 00 00 80    	cmp    $0x80000022,%esi
41c0b3:	0f 95 c1             	setne  %cl
41c0b6:	89 08                	mov    %ecx,(%eax)
41c0b8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41c0bb:	8b c2                	mov    %edx,%eax
41c0bd:	5f                   	pop    %edi
41c0be:	5e                   	pop    %esi
41c0bf:	33 cd                	xor    %ebp,%ecx
41c0c1:	5b                   	pop    %ebx
41c0c2:	e8 f9 e6 ff ff       	call   0x41a7c0
41c0c7:	c9                   	leave
41c0c8:	c2 08 00             	ret    $0x8
41c0cb:	8b ff                	mov    %edi,%edi
41c0cd:	55                   	push   %ebp
41c0ce:	8b ec                	mov    %esp,%ebp
41c0d0:	51                   	push   %ecx
41c0d1:	51                   	push   %ecx
41c0d2:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
41c0d6:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
41c0da:	89 4d f8             	mov    %ecx,-0x8(%ebp)
41c0dd:	66 89 55 fc          	mov    %dx,-0x4(%ebp)
41c0e1:	74 05                	je     0x41c0e8
41c0e3:	66 83 4d fe 01       	orw    $0x1,-0x2(%ebp)
41c0e8:	8d 4d f8             	lea    -0x8(%ebp),%ecx
41c0eb:	e8 a5 06 00 00       	call   0x41c795
41c0f0:	c9                   	leave
41c0f1:	c2 04 00             	ret    $0x4
41c0f4:	8b ff                	mov    %edi,%edi
41c0f6:	55                   	push   %ebp
41c0f7:	8b ec                	mov    %esp,%ebp
41c0f9:	81 ec 10 01 00 00    	sub    $0x110,%esp
41c0ff:	a1 08 85 43 00       	mov    0x438508,%eax
41c104:	33 c5                	xor    %ebp,%eax
41c106:	89 45 f8             	mov    %eax,-0x8(%ebp)
41c109:	53                   	push   %ebx
41c10a:	56                   	push   %esi
41c10b:	57                   	push   %edi
41c10c:	8b 7d 10             	mov    0x10(%ebp),%edi
41c10f:	8d 85 2c ff ff ff    	lea    -0xd4(%ebp),%eax
41c115:	51                   	push   %ecx
41c116:	50                   	push   %eax
41c117:	89 95 28 ff ff ff    	mov    %edx,-0xd8(%ebp)
41c11d:	33 f6                	xor    %esi,%esi
41c11f:	51                   	push   %ecx
41c120:	8b d1                	mov    %ecx,%edx
41c122:	8b de                	mov    %esi,%ebx
41c124:	8d 8d f4 fe ff ff    	lea    -0x10c(%ebp),%ecx
41c12a:	e8 0e 0a 00 00       	call   0x41cb3d
41c12f:	85 c0                	test   %eax,%eax
41c131:	75 59                	jne    0x41c18c
41c133:	ff 75 0c             	push   0xc(%ebp)
41c136:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
41c13c:	8d 8d f4 fe ff ff    	lea    -0x10c(%ebp),%ecx
41c142:	ff 75 08             	push   0x8(%ebp)
41c145:	e8 7c 0c 00 00       	call   0x41cdc6
41c14a:	8b d8                	mov    %eax,%ebx
41c14c:	85 ff                	test   %edi,%edi
41c14e:	74 31                	je     0x41c181
41c150:	8d 85 28 ff ff ff    	lea    -0xd8(%ebp),%eax
41c156:	89 b5 28 ff ff ff    	mov    %esi,-0xd8(%ebp)
41c15c:	50                   	push   %eax
41c15d:	8d 8d f4 fe ff ff    	lea    -0x10c(%ebp),%ecx
41c163:	e8 cf 07 00 00       	call   0x41c937
41c168:	39 b5 28 ff ff ff    	cmp    %esi,-0xd8(%ebp)
41c16e:	75 0c                	jne    0x41c17c
41c170:	8b 85 08 ff ff ff    	mov    -0xf8(%ebp),%eax
41c176:	66 39 70 06          	cmp    %si,0x6(%eax)
41c17a:	76 03                	jbe    0x41c17f
41c17c:	33 f6                	xor    %esi,%esi
41c17e:	46                   	inc    %esi
41c17f:	09 37                	or     %esi,(%edi)
41c181:	8d 8d f4 fe ff ff    	lea    -0x10c(%ebp),%ecx
41c187:	e8 8a 09 00 00       	call   0x41cb16
41c18c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41c18f:	8b c3                	mov    %ebx,%eax
41c191:	5f                   	pop    %edi
41c192:	5e                   	pop    %esi
41c193:	33 cd                	xor    %ebp,%ecx
41c195:	5b                   	pop    %ebx
41c196:	e8 25 e6 ff ff       	call   0x41a7c0
41c19b:	c9                   	leave
41c19c:	c2 0c 00             	ret    $0xc
41c19f:	8b ff                	mov    %edi,%edi
41c1a1:	55                   	push   %ebp
41c1a2:	8b ec                	mov    %esp,%ebp
41c1a4:	83 e4 f8             	and    $0xfffffff8,%esp
41c1a7:	81 ec 04 01 00 00    	sub    $0x104,%esp
41c1ad:	a1 08 85 43 00       	mov    0x438508,%eax
41c1b2:	33 c4                	xor    %esp,%eax
41c1b4:	89 84 24 00 01 00 00 	mov    %eax,0x100(%esp)
41c1bb:	53                   	push   %ebx
41c1bc:	56                   	push   %esi
41c1bd:	57                   	push   %edi
41c1be:	51                   	push   %ecx
41c1bf:	8d 44 24 44          	lea    0x44(%esp),%eax
41c1c3:	8b fa                	mov    %edx,%edi
41c1c5:	50                   	push   %eax
41c1c6:	8b d9                	mov    %ecx,%ebx
41c1c8:	33 d2                	xor    %edx,%edx
41c1ca:	51                   	push   %ecx
41c1cb:	8d 4c 24 18          	lea    0x18(%esp),%ecx
41c1cf:	e8 69 09 00 00       	call   0x41cb3d
41c1d4:	8b f0                	mov    %eax,%esi
41c1d6:	85 f6                	test   %esi,%esi
41c1d8:	75 1a                	jne    0x41c1f4
41c1da:	ff 75 08             	push   0x8(%ebp)
41c1dd:	8b d3                	mov    %ebx,%edx
41c1df:	8d 4c 24 10          	lea    0x10(%esp),%ecx
41c1e3:	57                   	push   %edi
41c1e4:	e8 ac 07 00 00       	call   0x41c995
41c1e9:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
41c1ed:	8b f0                	mov    %eax,%esi
41c1ef:	e8 22 09 00 00       	call   0x41cb16
41c1f4:	8b 8c 24 0c 01 00 00 	mov    0x10c(%esp),%ecx
41c1fb:	8b c6                	mov    %esi,%eax
41c1fd:	5f                   	pop    %edi
41c1fe:	5e                   	pop    %esi
41c1ff:	5b                   	pop    %ebx
41c200:	33 cc                	xor    %esp,%ecx
41c202:	e8 b9 e5 ff ff       	call   0x41a7c0
41c207:	8b e5                	mov    %ebp,%esp
41c209:	5d                   	pop    %ebp
41c20a:	c2 04 00             	ret    $0x4
41c20d:	8b ff                	mov    %edi,%edi
41c20f:	55                   	push   %ebp
41c210:	8b ec                	mov    %esp,%ebp
41c212:	56                   	push   %esi
41c213:	8b 75 08             	mov    0x8(%ebp),%esi
41c216:	57                   	push   %edi
41c217:	8b 3a                	mov    (%edx),%edi
41c219:	8b c7                	mov    %edi,%eax
41c21b:	f0 0f b1 31          	lock cmpxchg %esi,(%ecx)
41c21f:	3b c7                	cmp    %edi,%eax
41c221:	5f                   	pop    %edi
41c222:	5e                   	pop    %esi
41c223:	75 05                	jne    0x41c22a
41c225:	33 c0                	xor    %eax,%eax
41c227:	40                   	inc    %eax
41c228:	eb 04                	jmp    0x41c22e
41c22a:	89 02                	mov    %eax,(%edx)
41c22c:	33 c0                	xor    %eax,%eax
41c22e:	5d                   	pop    %ebp
41c22f:	c2 04 00             	ret    $0x4
41c232:	8b ff                	mov    %edi,%edi
41c234:	55                   	push   %ebp
41c235:	8b ec                	mov    %esp,%ebp
41c237:	51                   	push   %ecx
41c238:	51                   	push   %ecx
41c239:	53                   	push   %ebx
41c23a:	56                   	push   %esi
41c23b:	8b 75 0c             	mov    0xc(%ebp),%esi
41c23e:	8b c1                	mov    %ecx,%eax
41c240:	57                   	push   %edi
41c241:	8b fa                	mov    %edx,%edi
41c243:	89 45 f8             	mov    %eax,-0x8(%ebp)
41c246:	33 db                	xor    %ebx,%ebx
41c248:	83 ff 05             	cmp    $0x5,%edi
41c24b:	8b 00                	mov    (%eax),%eax
41c24d:	89 45 fc             	mov    %eax,-0x4(%ebp)
41c250:	0f 94 c3             	sete   %bl
41c253:	83 66 04 00          	andl   $0x0,0x4(%esi)
41c257:	83 c8 01             	or     $0x1,%eax
41c25a:	8b c8                	mov    %eax,%ecx
41c25c:	c1 e9 16             	shr    $0x16,%ecx
41c25f:	83 e1 01             	and    $0x1,%ecx
41c262:	3b cb                	cmp    %ebx,%ecx
41c264:	74 30                	je     0x41c296
41c266:	8b d0                	mov    %eax,%edx
41c268:	c1 ea 0f             	shr    $0xf,%edx
41c26b:	83 e2 7f             	and    $0x7f,%edx
41c26e:	76 1a                	jbe    0x41c28a
41c270:	33 c9                	xor    %ecx,%ecx
41c272:	89 56 04             	mov    %edx,0x4(%esi)
41c275:	83 ff 01             	cmp    $0x1,%edi
41c278:	0f 94 c1             	sete   %cl
41c27b:	25 ff 7f c0 ff       	and    $0xffc07fff,%eax
41c280:	8d 0c 8d 01 00 00 00 	lea    0x1(,%ecx,4),%ecx
41c287:	89 4e 08             	mov    %ecx,0x8(%esi)
41c28a:	8b cb                	mov    %ebx,%ecx
41c28c:	25 ff ff bf ff       	and    $0xffbfffff,%eax
41c291:	c1 e1 16             	shl    $0x16,%ecx
41c294:	0b c1                	or     %ecx,%eax
41c296:	8b d0                	mov    %eax,%edx
41c298:	c1 ea 0f             	shr    $0xf,%edx
41c29b:	83 e2 7f             	and    $0x7f,%edx
41c29e:	8d 4a 01             	lea    0x1(%edx),%ecx
41c2a1:	83 f9 7f             	cmp    $0x7f,%ecx
41c2a4:	77 04                	ja     0x41c2aa
41c2a6:	3b ca                	cmp    %edx,%ecx
41c2a8:	73 09                	jae    0x41c2b3
41c2aa:	33 c9                	xor    %ecx,%ecx
41c2ac:	89 7e 08             	mov    %edi,0x8(%esi)
41c2af:	41                   	inc    %ecx
41c2b0:	89 56 04             	mov    %edx,0x4(%esi)
41c2b3:	c1 e1 0f             	shl    $0xf,%ecx
41c2b6:	8d 55 fc             	lea    -0x4(%ebp),%edx
41c2b9:	33 c8                	xor    %eax,%ecx
41c2bb:	81 e1 00 80 3f 00    	and    $0x3f8000,%ecx
41c2c1:	33 c8                	xor    %eax,%ecx
41c2c3:	51                   	push   %ecx
41c2c4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41c2c7:	e8 41 ff ff ff       	call   0x41c20d
41c2cc:	85 c0                	test   %eax,%eax
41c2ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
41c2d1:	74 80                	je     0x41c253
41c2d3:	f7 d0                	not    %eax
41c2d5:	83 e0 01             	and    $0x1,%eax
41c2d8:	83 66 10 00          	andl   $0x0,0x10(%esi)
41c2dc:	5f                   	pop    %edi
41c2dd:	89 06                	mov    %eax,(%esi)
41c2df:	5e                   	pop    %esi
41c2e0:	5b                   	pop    %ebx
41c2e1:	c9                   	leave
41c2e2:	c2 08 00             	ret    $0x8
41c2e5:	8b ff                	mov    %edi,%edi
41c2e7:	55                   	push   %ebp
41c2e8:	8b ec                	mov    %esp,%ebp
41c2ea:	51                   	push   %ecx
41c2eb:	51                   	push   %ecx
41c2ec:	53                   	push   %ebx
41c2ed:	56                   	push   %esi
41c2ee:	8b 75 0c             	mov    0xc(%ebp),%esi
41c2f1:	8b c1                	mov    %ecx,%eax
41c2f3:	57                   	push   %edi
41c2f4:	8b fa                	mov    %edx,%edi
41c2f6:	89 45 f8             	mov    %eax,-0x8(%ebp)
41c2f9:	33 db                	xor    %ebx,%ebx
41c2fb:	83 ff 04             	cmp    $0x4,%edi
41c2fe:	8b 00                	mov    (%eax),%eax
41c300:	89 45 fc             	mov    %eax,-0x4(%ebp)
41c303:	0f 94 c3             	sete   %bl
41c306:	83 66 04 00          	andl   $0x0,0x4(%esi)
41c30a:	83 c8 01             	or     $0x1,%eax
41c30d:	8b c8                	mov    %eax,%ecx
41c30f:	c1 e9 0e             	shr    $0xe,%ecx
41c312:	83 e1 01             	and    $0x1,%ecx
41c315:	3b cb                	cmp    %ebx,%ecx
41c317:	74 30                	je     0x41c349
41c319:	8b d0                	mov    %eax,%edx
41c31b:	c1 ea 05             	shr    $0x5,%edx
41c31e:	81 e2 ff 01 00 00    	and    $0x1ff,%edx
41c324:	76 17                	jbe    0x41c33d
41c326:	8b cf                	mov    %edi,%ecx
41c328:	89 56 04             	mov    %edx,0x4(%esi)
41c32b:	f7 d9                	neg    %ecx
41c32d:	1b c9                	sbb    %ecx,%ecx
41c32f:	83 e1 fc             	and    $0xfffffffc,%ecx
41c332:	83 c1 04             	add    $0x4,%ecx
41c335:	25 1f c0 ff ff       	and    $0xffffc01f,%eax
41c33a:	89 4e 08             	mov    %ecx,0x8(%esi)
41c33d:	8b cb                	mov    %ebx,%ecx
41c33f:	25 ff bf ff ff       	and    $0xffffbfff,%eax
41c344:	c1 e1 0e             	shl    $0xe,%ecx
41c347:	0b c1                	or     %ecx,%eax
41c349:	8b d0                	mov    %eax,%edx
41c34b:	c1 ea 05             	shr    $0x5,%edx
41c34e:	81 e2 ff 01 00 00    	and    $0x1ff,%edx
41c354:	8d 4a 01             	lea    0x1(%edx),%ecx
41c357:	81 f9 ff 01 00 00    	cmp    $0x1ff,%ecx
41c35d:	77 04                	ja     0x41c363
41c35f:	3b ca                	cmp    %edx,%ecx
41c361:	73 09                	jae    0x41c36c
41c363:	33 c9                	xor    %ecx,%ecx
41c365:	89 7e 08             	mov    %edi,0x8(%esi)
41c368:	41                   	inc    %ecx
41c369:	89 56 04             	mov    %edx,0x4(%esi)
41c36c:	c1 e1 05             	shl    $0x5,%ecx
41c36f:	8d 55 fc             	lea    -0x4(%ebp),%edx
41c372:	33 c8                	xor    %eax,%ecx
41c374:	81 e1 e0 3f 00 00    	and    $0x3fe0,%ecx
41c37a:	33 c8                	xor    %eax,%ecx
41c37c:	51                   	push   %ecx
41c37d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41c380:	e8 88 fe ff ff       	call   0x41c20d
41c385:	85 c0                	test   %eax,%eax
41c387:	8b 45 fc             	mov    -0x4(%ebp),%eax
41c38a:	0f 84 76 ff ff ff    	je     0x41c306
41c390:	f7 d0                	not    %eax
41c392:	83 e0 01             	and    $0x1,%eax
41c395:	83 66 10 00          	andl   $0x0,0x10(%esi)
41c399:	5f                   	pop    %edi
41c39a:	89 06                	mov    %eax,(%esi)
41c39c:	5e                   	pop    %esi
41c39d:	5b                   	pop    %ebx
41c39e:	c9                   	leave
41c39f:	c2 08 00             	ret    $0x8
41c3a2:	8b ff                	mov    %edi,%edi
41c3a4:	55                   	push   %ebp
41c3a5:	8b ec                	mov    %esp,%ebp
41c3a7:	83 ec 14             	sub    $0x14,%esp
41c3aa:	53                   	push   %ebx
41c3ab:	56                   	push   %esi
41c3ac:	8b 75 08             	mov    0x8(%ebp),%esi
41c3af:	8b da                	mov    %edx,%ebx
41c3b1:	57                   	push   %edi
41c3b2:	8b d1                	mov    %ecx,%edx
41c3b4:	89 5d ec             	mov    %ebx,-0x14(%ebp)
41c3b7:	6a 06                	push   $0x6
41c3b9:	33 c0                	xor    %eax,%eax
41c3bb:	89 55 f8             	mov    %edx,-0x8(%ebp)
41c3be:	8b fe                	mov    %esi,%edi
41c3c0:	59                   	pop    %ecx
41c3c1:	f3 ab                	rep stos %eax,%es:(%edi)
41c3c3:	83 fb 07             	cmp    $0x7,%ebx
41c3c6:	0f 87 a1 00 00 00    	ja     0x41c46d
41c3cc:	0f b6 83 f2 c4 41 00 	movzbl 0x41c4f2(%ebx),%eax
41c3d3:	ff 24 85 e6 c4 41 00 	jmp    *0x41c4e6(,%eax,4)
41c3da:	33 f6                	xor    %esi,%esi
41c3dc:	4b                   	dec    %ebx
41c3dd:	83 eb 01             	sub    $0x1,%ebx
41c3e0:	74 1b                	je     0x41c3fd
41c3e2:	83 eb 01             	sub    $0x1,%ebx
41c3e5:	74 12                	je     0x41c3f9
41c3e7:	83 eb 03             	sub    $0x3,%ebx
41c3ea:	74 09                	je     0x41c3f5
41c3ec:	83 eb 01             	sub    $0x1,%ebx
41c3ef:	75 0f                	jne    0x41c400
41c3f1:	6a 10                	push   $0x10
41c3f3:	eb 0a                	jmp    0x41c3ff
41c3f5:	6a 04                	push   $0x4
41c3f7:	eb 06                	jmp    0x41c3ff
41c3f9:	6a 08                	push   $0x8
41c3fb:	eb 02                	jmp    0x41c3ff
41c3fd:	6a 02                	push   $0x2
41c3ff:	5e                   	pop    %esi
41c400:	8b 0a                	mov    (%edx),%ecx
41c402:	33 db                	xor    %ebx,%ebx
41c404:	8b 7d 08             	mov    0x8(%ebp),%edi
41c407:	43                   	inc    %ebx
41c408:	89 4d fc             	mov    %ecx,-0x4(%ebp)
41c40b:	8b c6                	mov    %esi,%eax
41c40d:	33 d2                	xor    %edx,%edx
41c40f:	0b c1                	or     %ecx,%eax
41c411:	3b c1                	cmp    %ecx,%eax