41b0a8:	2b c1                	sub    %ecx,%eax
41b0aa:	23 c8                	and    %eax,%ecx
41b0ac:	49                   	dec    %ecx
41b0ad:	23 cb                	and    %ebx,%ecx
41b0af:	5b                   	pop    %ebx
41b0b0:	0f bd c1             	bsr    %ecx,%eax
41b0b3:	03 c7                	add    %edi,%eax
41b0b5:	85 c9                	test   %ecx,%ecx
41b0b7:	0f 44 c2             	cmove  %edx,%eax
41b0ba:	5f                   	pop    %edi
41b0bb:	c9                   	leave
41b0bc:	c3                   	ret
41b0bd:	0f b6 55 0c          	movzbl 0xc(%ebp),%edx
41b0c1:	85 d2                	test   %edx,%edx
41b0c3:	74 39                	je     0x41b0fe
41b0c5:	33 c0                	xor    %eax,%eax
41b0c7:	f7 c7 0f 00 00 00    	test   $0xf,%edi
41b0cd:	74 15                	je     0x41b0e4
41b0cf:	0f b6 0f             	movzbl (%edi),%ecx
41b0d2:	3b ca                	cmp    %edx,%ecx
41b0d4:	0f 44 c7             	cmove  %edi,%eax
41b0d7:	85 c9                	test   %ecx,%ecx
41b0d9:	74 20                	je     0x41b0fb
41b0db:	47                   	inc    %edi
41b0dc:	f7 c7 0f 00 00 00    	test   $0xf,%edi
41b0e2:	75 eb                	jne    0x41b0cf
41b0e4:	66 0f 6e c2          	movd   %edx,%xmm0
41b0e8:	83 c7 10             	add    $0x10,%edi
41b0eb:	66 0f 3a 63 47 f0 40 	pcmpistri $0x40,-0x10(%edi),%xmm0
41b0f2:	8d 4c 39 f0          	lea    -0x10(%ecx,%edi,1),%ecx
41b0f6:	0f 42 c1             	cmovb  %ecx,%eax
41b0f9:	75 ed                	jne    0x41b0e8
41b0fb:	5f                   	pop    %edi
41b0fc:	c9                   	leave
41b0fd:	c3                   	ret
41b0fe:	b8 f0 ff ff ff       	mov    $0xfffffff0,%eax
41b103:	23 c7                	and    %edi,%eax
41b105:	66 0f ef c0          	pxor   %xmm0,%xmm0
41b109:	66 0f 74 00          	pcmpeqb (%eax),%xmm0
41b10d:	b9 0f 00 00 00       	mov    $0xf,%ecx
41b112:	23 cf                	and    %edi,%ecx
41b114:	ba ff ff ff ff       	mov    $0xffffffff,%edx
41b119:	d3 e2                	shl    %cl,%edx
41b11b:	66 0f d7 f8          	pmovmskb %xmm0,%edi
41b11f:	23 fa                	and    %edx,%edi
41b121:	75 14                	jne    0x41b137
41b123:	66 0f ef c0          	pxor   %xmm0,%xmm0
41b127:	66 0f 74 40 10       	pcmpeqb 0x10(%eax),%xmm0
41b12c:	83 c0 10             	add    $0x10,%eax
41b12f:	66 0f d7 f8          	pmovmskb %xmm0,%edi
41b133:	85 ff                	test   %edi,%edi
41b135:	74 ec                	je     0x41b123
41b137:	0f bc d7             	bsf    %edi,%edx
41b13a:	03 c2                	add    %edx,%eax
41b13c:	eb bd                	jmp    0x41b0fb
41b13e:	8b 7d 08             	mov    0x8(%ebp),%edi
41b141:	33 c0                	xor    %eax,%eax
41b143:	83 c9 ff             	or     $0xffffffff,%ecx
41b146:	f2 ae                	repnz scas %es:(%edi),%al
41b148:	83 c1 01             	add    $0x1,%ecx
41b14b:	f7 d9                	neg    %ecx
41b14d:	83 ef 01             	sub    $0x1,%edi
41b150:	8a 45 0c             	mov    0xc(%ebp),%al
41b153:	fd                   	std
41b154:	f2 ae                	repnz scas %es:(%edi),%al
41b156:	83 c7 01             	add    $0x1,%edi
41b159:	38 07                	cmp    %al,(%edi)
41b15b:	74 04                	je     0x41b161
41b15d:	33 c0                	xor    %eax,%eax
41b15f:	eb 02                	jmp    0x41b163
41b161:	8b c7                	mov    %edi,%eax
41b163:	fc                   	cld
41b164:	5f                   	pop    %edi
41b165:	c9                   	leave
41b166:	c3                   	ret
41b167:	8b ff                	mov    %edi,%edi
41b169:	55                   	push   %ebp
41b16a:	8b ec                	mov    %esp,%ebp
41b16c:	56                   	push   %esi
41b16d:	8b 75 14             	mov    0x14(%ebp),%esi
41b170:	85 f6                	test   %esi,%esi
41b172:	75 04                	jne    0x41b178
41b174:	33 c0                	xor    %eax,%eax
41b176:	eb 70                	jmp    0x41b1e8
41b178:	8b 4d 08             	mov    0x8(%ebp),%ecx
41b17b:	85 c9                	test   %ecx,%ecx
41b17d:	75 13                	jne    0x41b192
41b17f:	e8 4f 3b ff ff       	call   0x40ecd3
41b184:	6a 16                	push   $0x16
41b186:	5e                   	pop    %esi
41b187:	89 30                	mov    %esi,(%eax)
41b189:	e8 88 3a ff ff       	call   0x40ec16
41b18e:	8b c6                	mov    %esi,%eax
41b190:	eb 56                	jmp    0x41b1e8
41b192:	57                   	push   %edi
41b193:	8b 7d 10             	mov    0x10(%ebp),%edi
41b196:	85 ff                	test   %edi,%edi
41b198:	74 17                	je     0x41b1b1
41b19a:	39 75 0c             	cmp    %esi,0xc(%ebp)
41b19d:	72 12                	jb     0x41b1b1
41b19f:	8d 04 36             	lea    (%esi,%esi,1),%eax
41b1a2:	50                   	push   %eax
41b1a3:	57                   	push   %edi
41b1a4:	51                   	push   %ecx
41b1a5:	e8 26 ea fe ff       	call   0x409bd0
41b1aa:	83 c4 0c             	add    $0xc,%esp
41b1ad:	33 c0                	xor    %eax,%eax
41b1af:	eb 36                	jmp    0x41b1e7
41b1b1:	ff 75 0c             	push   0xc(%ebp)
41b1b4:	6a 00                	push   $0x0
41b1b6:	51                   	push   %ecx
41b1b7:	e8 2f 00 00 00       	call   0x41b1eb
41b1bc:	83 c4 0c             	add    $0xc,%esp
41b1bf:	85 ff                	test   %edi,%edi
41b1c1:	75 09                	jne    0x41b1cc
41b1c3:	e8 0b 3b ff ff       	call   0x40ecd3
41b1c8:	6a 16                	push   $0x16
41b1ca:	eb 0c                	jmp    0x41b1d8
41b1cc:	39 75 0c             	cmp    %esi,0xc(%ebp)
41b1cf:	73 13                	jae    0x41b1e4
41b1d1:	e8 fd 3a ff ff       	call   0x40ecd3
41b1d6:	6a 22                	push   $0x22
41b1d8:	5e                   	pop    %esi
41b1d9:	89 30                	mov    %esi,(%eax)
41b1db:	e8 36 3a ff ff       	call   0x40ec16
41b1e0:	8b c6                	mov    %esi,%eax
41b1e2:	eb 03                	jmp    0x41b1e7
41b1e4:	6a 16                	push   $0x16
41b1e6:	58                   	pop    %eax
41b1e7:	5f                   	pop    %edi
41b1e8:	5e                   	pop    %esi
41b1e9:	5d                   	pop    %ebp
41b1ea:	c3                   	ret
41b1eb:	8b ff                	mov    %edi,%edi
41b1ed:	55                   	push   %ebp
41b1ee:	8b ec                	mov    %esp,%ebp
41b1f0:	8b 4d 10             	mov    0x10(%ebp),%ecx
41b1f3:	85 c9                	test   %ecx,%ecx
41b1f5:	74 1b                	je     0x41b212
41b1f7:	8b 45 0c             	mov    0xc(%ebp),%eax
41b1fa:	0f b7 d0             	movzwl %ax,%edx
41b1fd:	8b c2                	mov    %edx,%eax
41b1ff:	c1 e2 10             	shl    $0x10,%edx
41b202:	57                   	push   %edi
41b203:	8b 7d 08             	mov    0x8(%ebp),%edi
41b206:	0b c2                	or     %edx,%eax
41b208:	d1 e9                	shr    $1,%ecx
41b20a:	f3 ab                	rep stos %eax,%es:(%edi)
41b20c:	13 c9                	adc    %ecx,%ecx
41b20e:	66 f3 ab             	rep stos %ax,%es:(%edi)
41b211:	5f                   	pop    %edi
41b212:	8b 45 08             	mov    0x8(%ebp),%eax
41b215:	5d                   	pop    %ebp
41b216:	c3                   	ret
41b217:	8b ff                	mov    %edi,%edi
41b219:	55                   	push   %ebp
41b21a:	8b ec                	mov    %esp,%ebp
41b21c:	51                   	push   %ecx
41b21d:	51                   	push   %ecx
41b21e:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
41b222:	b9 f0 7f 00 00       	mov    $0x7ff0,%ecx
41b227:	25 f8 7f 00 00       	and    $0x7ff8,%eax
41b22c:	66 3b c1             	cmp    %cx,%ax
41b22f:	75 26                	jne    0x41b257
41b231:	8b 45 0c             	mov    0xc(%ebp),%eax
41b234:	8b 4d 08             	mov    0x8(%ebp),%ecx
41b237:	a9 ff ff 07 00       	test   $0x7ffff,%eax
41b23c:	75 04                	jne    0x41b242
41b23e:	85 c9                	test   %ecx,%ecx
41b240:	74 15                	je     0x41b257
41b242:	25 ff ff f7 7f       	and    $0x7ff7ffff,%eax
41b247:	89 4d f8             	mov    %ecx,-0x8(%ebp)
41b24a:	0d 00 00 08 00       	or     $0x80000,%eax
41b24f:	89 45 fc             	mov    %eax,-0x4(%ebp)
41b252:	dd 45 f8             	fldl   -0x8(%ebp)
41b255:	c9                   	leave
41b256:	c3                   	ret
41b257:	dd 45 08             	fldl   0x8(%ebp)
41b25a:	d9 e1                	fabs
41b25c:	c9                   	leave
41b25d:	c3                   	ret
41b25e:	8b ff                	mov    %edi,%edi
41b260:	55                   	push   %ebp
41b261:	8b ec                	mov    %esp,%ebp
41b263:	56                   	push   %esi
41b264:	8b 75 0c             	mov    0xc(%ebp),%esi
41b267:	57                   	push   %edi
41b268:	8b 7d 08             	mov    0x8(%ebp),%edi
41b26b:	0f b7 0e             	movzwl (%esi),%ecx
41b26e:	0f b7 17             	movzwl (%edi),%edx
41b271:	2b d1                	sub    %ecx,%edx
41b273:	75 19                	jne    0x41b28e
41b275:	8b c1                	mov    %ecx,%eax
41b277:	2b fe                	sub    %esi,%edi
41b279:	66 85 c0             	test   %ax,%ax
41b27c:	74 10                	je     0x41b28e
41b27e:	83 c6 02             	add    $0x2,%esi
41b281:	0f b7 0e             	movzwl (%esi),%ecx
41b284:	0f b7 14 37          	movzwl (%edi,%esi,1),%edx
41b288:	8b c1                	mov    %ecx,%eax
41b28a:	2b d1                	sub    %ecx,%edx
41b28c:	74 eb                	je     0x41b279
41b28e:	8b c2                	mov    %edx,%eax
41b290:	c1 ea 1f             	shr    $0x1f,%edx
41b293:	f7 d8                	neg    %eax
41b295:	c1 e8 1f             	shr    $0x1f,%eax
41b298:	5f                   	pop    %edi
41b299:	2b c2                	sub    %edx,%eax
41b29b:	5e                   	pop    %esi
41b29c:	5d                   	pop    %ebp
41b29d:	c3                   	ret
41b29e:	6a 30                	push   $0x30
41b2a0:	b8 9a be 41 00       	mov    $0x41be9a,%eax
41b2a5:	e8 cc de ff ff       	call   0x419176
41b2aa:	8b 7d 08             	mov    0x8(%ebp),%edi
41b2ad:	33 f6                	xor    %esi,%esi
41b2af:	8b 45 0c             	mov    0xc(%ebp),%eax
41b2b2:	8b 5d 10             	mov    0x10(%ebp),%ebx
41b2b5:	89 7d d8             	mov    %edi,-0x28(%ebp)
41b2b8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
41b2bb:	89 75 e0             	mov    %esi,-0x20(%ebp)
41b2be:	85 ff                	test   %edi,%edi
41b2c0:	74 0b                	je     0x41b2cd
41b2c2:	85 db                	test   %ebx,%ebx
41b2c4:	75 07                	jne    0x41b2cd
41b2c6:	33 c0                	xor    %eax,%eax
41b2c8:	e9 6a 02 00 00       	jmp    0x41b537
41b2cd:	85 c0                	test   %eax,%eax
41b2cf:	75 18                	jne    0x41b2e9
41b2d1:	e8 fd 39 ff ff       	call   0x40ecd3
41b2d6:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
41b2dc:	e8 35 39 ff ff       	call   0x40ec16
41b2e1:	83 c8 ff             	or     $0xffffffff,%eax
41b2e4:	e9 4e 02 00 00       	jmp    0x41b537
41b2e9:	ff 75 14             	push   0x14(%ebp)
41b2ec:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
41b2ef:	e8 56 17 ff ff       	call   0x40ca4a
41b2f4:	8b 45 c8             	mov    -0x38(%ebp),%eax
41b2f7:	89 75 fc             	mov    %esi,-0x4(%ebp)
41b2fa:	8b 48 08             	mov    0x8(%eax),%ecx
41b2fd:	81 f9 e9 fd 00 00    	cmp    $0xfde9,%ecx
41b303:	75 1f                	jne    0x41b324
41b305:	8d 45 d4             	lea    -0x2c(%ebp),%eax
41b308:	89 75 d4             	mov    %esi,-0x2c(%ebp)
41b30b:	50                   	push   %eax
41b30c:	53                   	push   %ebx
41b30d:	8d 45 e4             	lea    -0x1c(%ebp),%eax
41b310:	89 75 d8             	mov    %esi,-0x28(%ebp)
41b313:	50                   	push   %eax
41b314:	57                   	push   %edi
41b315:	e8 a1 03 00 00       	call   0x41b6bb
41b31a:	83 c4 10             	add    $0x10,%esp
41b31d:	8b f0                	mov    %eax,%esi
41b31f:	e9 ca 01 00 00       	jmp    0x41b4ee
41b324:	85 ff                	test   %edi,%edi
41b326:	0f 84 95 01 00 00    	je     0x41b4c1
41b32c:	39 b0 a8 00 00 00    	cmp    %esi,0xa8(%eax)
41b332:	75 3a                	jne    0x41b36e
41b334:	85 db                	test   %ebx,%ebx
41b336:	0f 84 b2 01 00 00    	je     0x41b4ee
41b33c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
41b33f:	ba ff 00 00 00       	mov    $0xff,%edx
41b344:	66 39 11             	cmp    %dx,(%ecx)
41b347:	0f 87 64 01 00 00    	ja     0x41b4b1
41b34d:	8a 01                	mov    (%ecx),%al
41b34f:	88 04 37             	mov    %al,(%edi,%esi,1)
41b352:	0f b7 01             	movzwl (%ecx),%eax
41b355:	83 c1 02             	add    $0x2,%ecx
41b358:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
41b35b:	66 85 c0             	test   %ax,%ax
41b35e:	0f 84 8a 01 00 00    	je     0x41b4ee
41b364:	46                   	inc    %esi
41b365:	3b f3                	cmp    %ebx,%esi
41b367:	72 db                	jb     0x41b344
41b369:	e9 80 01 00 00       	jmp    0x41b4ee
41b36e:	83 78 04 01          	cmpl   $0x1,0x4(%eax)
41b372:	75 61                	jne    0x41b3d5
41b374:	85 db                	test   %ebx,%ebx
41b376:	74 23                	je     0x41b39b
41b378:	8b 45 e4             	mov    -0x1c(%ebp),%eax
41b37b:	8b d3                	mov    %ebx,%edx
41b37d:	66 39 30             	cmp    %si,(%eax)
41b380:	74 08                	je     0x41b38a
41b382:	83 c0 02             	add    $0x2,%eax
41b385:	83 ea 01             	sub    $0x1,%edx
41b388:	75 f3                	jne    0x41b37d
41b38a:	85 d2                	test   %edx,%edx
41b38c:	74 0d                	je     0x41b39b
41b38e:	66 39 30             	cmp    %si,(%eax)
41b391:	75 08                	jne    0x41b39b
41b393:	8b d8                	mov    %eax,%ebx
41b395:	2b 5d e4             	sub    -0x1c(%ebp),%ebx
41b398:	d1 fb                	sar    $1,%ebx
41b39a:	43                   	inc    %ebx
41b39b:	8d 45 e0             	lea    -0x20(%ebp),%eax
41b39e:	50                   	push   %eax
41b39f:	56                   	push   %esi
41b3a0:	53                   	push   %ebx
41b3a1:	57                   	push   %edi
41b3a2:	53                   	push   %ebx
41b3a3:	ff 75 e4             	push   -0x1c(%ebp)
41b3a6:	56                   	push   %esi
41b3a7:	51                   	push   %ecx
41b3a8:	e8 98 4c ff ff       	call   0x410045
41b3ad:	8b f0                	mov    %eax,%esi
41b3af:	83 c4 20             	add    $0x20,%esp
41b3b2:	85 f6                	test   %esi,%esi
41b3b4:	0f 84 f7 00 00 00    	je     0x41b4b1
41b3ba:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
41b3be:	0f 85 ed 00 00 00    	jne    0x41b4b1
41b3c4:	80 7c 37 ff 00       	cmpb   $0x0,-0x1(%edi,%esi,1)
41b3c9:	0f 85 1f 01 00 00    	jne    0x41b4ee
41b3cf:	4e                   	dec    %esi
41b3d0:	e9 19 01 00 00       	jmp    0x41b4ee
41b3d5:	8d 45 e0             	lea    -0x20(%ebp),%eax
41b3d8:	50                   	push   %eax
41b3d9:	56                   	push   %esi
41b3da:	53                   	push   %ebx
41b3db:	57                   	push   %edi
41b3dc:	6a ff                	push   $0xffffffff
41b3de:	ff 75 e4             	push   -0x1c(%ebp)
41b3e1:	56                   	push   %esi
41b3e2:	51                   	push   %ecx
41b3e3:	e8 5d 4c ff ff       	call   0x410045
41b3e8:	83 c4 20             	add    $0x20,%esp
41b3eb:	8b f8                	mov    %eax,%edi
41b3ed:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
41b3f1:	0f 85 ba 00 00 00    	jne    0x41b4b1
41b3f7:	85 ff                	test   %edi,%edi
41b3f9:	74 08                	je     0x41b403
41b3fb:	8d 77 ff             	lea    -0x1(%edi),%esi
41b3fe:	e9 eb 00 00 00       	jmp    0x41b4ee
41b403:	ff 15 48 c1 41 00    	call   *0x41c148
41b409:	83 f8 7a             	cmp    $0x7a,%eax
41b40c:	0f 85 9f 00 00 00    	jne    0x41b4b1
41b412:	85 db                	test   %ebx,%ebx
41b414:	0f 84 0b 01 00 00    	je     0x41b525
41b41a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
41b41d:	8b 55 c8             	mov    -0x38(%ebp),%edx
41b420:	8b 4a 04             	mov    0x4(%edx),%ecx
41b423:	83 f9 05             	cmp    $0x5,%ecx
41b426:	7e 03                	jle    0x41b42b
41b428:	6a 05                	push   $0x5
41b42a:	59                   	pop    %ecx
41b42b:	8d 5d e0             	lea    -0x20(%ebp),%ebx
41b42e:	53                   	push   %ebx
41b42f:	56                   	push   %esi
41b430:	51                   	push   %ecx
41b431:	8d 4d e8             	lea    -0x18(%ebp),%ecx
41b434:	51                   	push   %ecx