415050:	e8 a3 ff ff ff       	call   0x414ff8
415055:	8b c8                	mov    %eax,%ecx
415057:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
41505b:	99                   	cltd
41505c:	c1 e0 1f             	shl    $0x1f,%eax
41505f:	0d 00 00 f0 7f       	or     $0x7ff00000,%eax
415064:	83 21 00             	andl   $0x0,(%ecx)
415067:	89 41 04             	mov    %eax,0x4(%ecx)
41506a:	5d                   	pop    %ebp
41506b:	c3                   	ret
41506c:	e8 ac ff ff ff       	call   0x41501d
415071:	0f b6 4d 08          	movzbl 0x8(%ebp),%ecx
415075:	c1 e1 1f             	shl    $0x1f,%ecx
415078:	81 c9 00 00 80 7f    	or     $0x7f800000,%ecx
41507e:	89 08                	mov    %ecx,(%eax)
415080:	5d                   	pop    %ebp
415081:	c3                   	ret
415082:	8b ff                	mov    %edi,%edi
415084:	55                   	push   %ebp
415085:	8b ec                	mov    %esp,%ebp
415087:	83 ec 24             	sub    $0x24,%esp
41508a:	53                   	push   %ebx
41508b:	56                   	push   %esi
41508c:	8b 75 0c             	mov    0xc(%ebp),%esi
41508f:	33 db                	xor    %ebx,%ebx
415091:	57                   	push   %edi
415092:	8b 7d 08             	mov    0x8(%ebp),%edi
415095:	3b f3                	cmp    %ebx,%esi
415097:	77 14                	ja     0x4150ad
415099:	83 ff ff             	cmp    $0xffffffff,%edi
41509c:	77 0f                	ja     0x4150ad
41509e:	0f bd cf             	bsr    %edi,%ecx
4150a1:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4150a4:	74 03                	je     0x4150a9
4150a6:	41                   	inc    %ecx
4150a7:	eb 14                	jmp    0x4150bd
4150a9:	8b cb                	mov    %ebx,%ecx
4150ab:	eb 10                	jmp    0x4150bd
4150ad:	0f bd ce             	bsr    %esi,%ecx
4150b0:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4150b3:	74 03                	je     0x4150b8
4150b5:	41                   	inc    %ecx
4150b6:	eb 02                	jmp    0x4150ba
4150b8:	8b cb                	mov    %ebx,%ecx
4150ba:	83 c1 20             	add    $0x20,%ecx
4150bd:	8b 45 1c             	mov    0x1c(%ebp),%eax
4150c0:	8a 50 04             	mov    0x4(%eax),%dl
4150c3:	88 55 ff             	mov    %dl,-0x1(%ebp)
4150c6:	33 d2                	xor    %edx,%edx
4150c8:	38 55 ff             	cmp    %dl,-0x1(%ebp)
4150cb:	0f 94 c2             	sete   %dl
4150ce:	33 c0                	xor    %eax,%eax
4150d0:	4a                   	dec    %edx
4150d1:	83 e2 1d             	and    $0x1d,%edx
4150d4:	83 c2 18             	add    $0x18,%edx
4150d7:	2b d1                	sub    %ecx,%edx
4150d9:	8b 4d 10             	mov    0x10(%ebp),%ecx
4150dc:	2b ca                	sub    %edx,%ecx
4150de:	89 55 f4             	mov    %edx,-0xc(%ebp)
4150e1:	38 45 ff             	cmp    %al,-0x1(%ebp)
4150e4:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4150e7:	0f 94 c0             	sete   %al
4150ea:	48                   	dec    %eax
4150eb:	25 80 03 00 00       	and    $0x380,%eax
4150f0:	83 c0 7f             	add    $0x7f,%eax
4150f3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4150f6:	3b c8                	cmp    %eax,%ecx
4150f8:	8b 45 1c             	mov    0x1c(%ebp),%eax
4150fb:	0f 8f 72 02 00 00    	jg     0x415373
415101:	33 c0                	xor    %eax,%eax
415103:	38 45 ff             	cmp    %al,-0x1(%ebp)
415106:	0f 94 c0             	sete   %al
415109:	48                   	dec    %eax
41510a:	25 80 fc ff ff       	and    $0xfffffc80,%eax
41510f:	83 c0 82             	add    $0xffffff82,%eax
415112:	3b c8                	cmp    %eax,%ecx
415114:	0f 8d 3f 01 00 00    	jge    0x415259
41511a:	8b 45 ec             	mov    -0x14(%ebp),%eax
41511d:	8b c8                	mov    %eax,%ecx
41511f:	8b 55 10             	mov    0x10(%ebp),%edx
415122:	f7 d9                	neg    %ecx
415124:	4a                   	dec    %edx
415125:	89 4d f8             	mov    %ecx,-0x8(%ebp)
415128:	03 d0                	add    %eax,%edx
41512a:	89 55 ec             	mov    %edx,-0x14(%ebp)
41512d:	85 d2                	test   %edx,%edx
41512f:	0f 89 1c 01 00 00    	jns    0x415251
415135:	8b c2                	mov    %edx,%eax
415137:	f7 d8                	neg    %eax
415139:	89 45 f0             	mov    %eax,-0x10(%ebp)
41513c:	83 f8 40             	cmp    $0x40,%eax
41513f:	0f 83 f8 00 00 00    	jae    0x41523d
415145:	8d 48 ff             	lea    -0x1(%eax),%ecx
415148:	33 d2                	xor    %edx,%edx
41514a:	33 c0                	xor    %eax,%eax
41514c:	40                   	inc    %eax
41514d:	e8 ee 8c 01 00       	call   0x42de40
415152:	8b 4d f0             	mov    -0x10(%ebp),%ecx
415155:	89 45 e8             	mov    %eax,-0x18(%ebp)
415158:	83 c0 ff             	add    $0xffffffff,%eax
41515b:	89 55 e4             	mov    %edx,-0x1c(%ebp)
41515e:	83 d2 ff             	adc    $0xffffffff,%edx
415161:	89 45 e0             	mov    %eax,-0x20(%ebp)
415164:	33 c0                	xor    %eax,%eax
415166:	89 55 dc             	mov    %edx,-0x24(%ebp)
415169:	40                   	inc    %eax
41516a:	33 d2                	xor    %edx,%edx
41516c:	e8 cf 8c 01 00       	call   0x42de40
415171:	23 c7                	and    %edi,%eax
415173:	c6 45 fd 01          	movb   $0x1,-0x3(%ebp)
415177:	23 d6                	and    %esi,%edx
415179:	0b c2                	or     %edx,%eax
41517b:	75 03                	jne    0x415180
41517d:	88 5d fd             	mov    %bl,-0x3(%ebp)
415180:	8b 45 e8             	mov    -0x18(%ebp),%eax
415183:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
415186:	23 c7                	and    %edi,%eax
415188:	23 ce                	and    %esi,%ecx
41518a:	0b c1                	or     %ecx,%eax
41518c:	74 07                	je     0x415195
41518e:	b1 01                	mov    $0x1,%cl
415190:	88 4d ff             	mov    %cl,-0x1(%ebp)
415193:	eb 05                	jmp    0x41519a
415195:	8a cb                	mov    %bl,%cl
415197:	88 5d ff             	mov    %bl,-0x1(%ebp)
41519a:	38 5d 18             	cmp    %bl,0x18(%ebp)
41519d:	74 15                	je     0x4151b4
41519f:	8b 45 e0             	mov    -0x20(%ebp),%eax
4151a2:	8b 55 dc             	mov    -0x24(%ebp),%edx
4151a5:	23 c7                	and    %edi,%eax
4151a7:	23 d6                	and    %esi,%edx
4151a9:	0b c2                	or     %edx,%eax
4151ab:	75 07                	jne    0x4151b4
4151ad:	8a c3                	mov    %bl,%al
4151af:	88 5d fe             	mov    %bl,-0x2(%ebp)
4151b2:	eb 05                	jmp    0x4151b9
4151b4:	b0 01                	mov    $0x1,%al
4151b6:	88 45 fe             	mov    %al,-0x2(%ebp)
4151b9:	84 c9                	test   %cl,%cl
4151bb:	75 04                	jne    0x4151c1
4151bd:	84 c0                	test   %al,%al
4151bf:	74 35                	je     0x4151f6
4151c1:	e8 ce b3 00 00       	call   0x420594
4151c6:	85 c0                	test   %eax,%eax
4151c8:	74 1b                	je     0x4151e5
4151ca:	3d 00 01 00 00       	cmp    $0x100,%eax
4151cf:	74 0f                	je     0x4151e0
4151d1:	3d 00 02 00 00       	cmp    $0x200,%eax
4151d6:	75 1e                	jne    0x4151f6
4151d8:	8a 5d 14             	mov    0x14(%ebp),%bl
4151db:	80 f3 01             	xor    $0x1,%bl
4151de:	eb 16                	jmp    0x4151f6
4151e0:	8a 5d 14             	mov    0x14(%ebp),%bl
4151e3:	eb 11                	jmp    0x4151f6
4151e5:	38 5d ff             	cmp    %bl,-0x1(%ebp)
4151e8:	74 0c                	je     0x4151f6
4151ea:	38 5d fe             	cmp    %bl,-0x2(%ebp)
4151ed:	75 05                	jne    0x4151f4
4151ef:	38 5d fd             	cmp    %bl,-0x3(%ebp)
4151f2:	74 02                	je     0x4151f6
4151f4:	b3 01                	mov    $0x1,%bl
4151f6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4151f9:	8b c7                	mov    %edi,%eax
4151fb:	8b d6                	mov    %esi,%edx
4151fd:	e8 5e 8c 01 00       	call   0x42de60
415202:	8b f8                	mov    %eax,%edi
415204:	8b f2                	mov    %edx,%esi
415206:	0f b6 c3             	movzbl %bl,%eax
415209:	99                   	cltd
41520a:	03 f8                	add    %eax,%edi
41520c:	8b c7                	mov    %edi,%eax
41520e:	13 f2                	adc    %edx,%esi
415210:	0b c6                	or     %esi,%eax
415212:	74 29                	je     0x41523d
415214:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
415217:	e8 d2 21 00 00       	call   0x4173ee
41521c:	3b f2                	cmp    %edx,%esi
41521e:	0f 82 74 01 00 00    	jb     0x415398
415224:	77 08                	ja     0x41522e
415226:	3b f8                	cmp    %eax,%edi
415228:	0f 86 6a 01 00 00    	jbe    0x415398
41522e:	8b 5d 10             	mov    0x10(%ebp),%ebx
415231:	2b 5d ec             	sub    -0x14(%ebp),%ebx
415234:	2b 5d f4             	sub    -0xc(%ebp),%ebx
415237:	4b                   	dec    %ebx
415238:	e9 5e 01 00 00       	jmp    0x41539b
41523d:	ff 75 1c             	push   0x1c(%ebp)
415240:	ff 75 14             	push   0x14(%ebp)
415243:	e8 25 03 00 00       	call   0x41556d
415248:	59                   	pop    %ecx
415249:	59                   	pop    %ecx
41524a:	6a 02                	push   $0x2
41524c:	e9 2f 01 00 00       	jmp    0x415380
415251:	8b 4d ec             	mov    -0x14(%ebp),%ecx
415254:	e9 32 01 00 00       	jmp    0x41538b
415259:	85 d2                	test   %edx,%edx
41525b:	0f 89 25 01 00 00    	jns    0x415386
415261:	f7 da                	neg    %edx
415263:	89 55 f4             	mov    %edx,-0xc(%ebp)
415266:	83 fa 40             	cmp    $0x40,%edx
415269:	72 09                	jb     0x415274
41526b:	8b fb                	mov    %ebx,%edi
41526d:	8b f3                	mov    %ebx,%esi
41526f:	e9 c9 00 00 00       	jmp    0x41533d
415274:	33 c0                	xor    %eax,%eax
415276:	8d 4a ff             	lea    -0x1(%edx),%ecx
415279:	40                   	inc    %eax
41527a:	33 d2                	xor    %edx,%edx
41527c:	e8 bf 8b 01 00       	call   0x42de40
415281:	8b 4d f4             	mov    -0xc(%ebp),%ecx
415284:	89 45 dc             	mov    %eax,-0x24(%ebp)
415287:	83 c0 ff             	add    $0xffffffff,%eax
41528a:	89 55 e0             	mov    %edx,-0x20(%ebp)
41528d:	83 d2 ff             	adc    $0xffffffff,%edx
415290:	89 45 e4             	mov    %eax,-0x1c(%ebp)
415293:	33 c0                	xor    %eax,%eax
415295:	89 55 e8             	mov    %edx,-0x18(%ebp)
415298:	40                   	inc    %eax
415299:	33 d2                	xor    %edx,%edx
41529b:	e8 a0 8b 01 00       	call   0x42de40
4152a0:	23 c7                	and    %edi,%eax
4152a2:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
4152a6:	23 d6                	and    %esi,%edx
4152a8:	0b c2                	or     %edx,%eax
4152aa:	75 03                	jne    0x4152af
4152ac:	88 5d ff             	mov    %bl,-0x1(%ebp)
4152af:	8b 45 dc             	mov    -0x24(%ebp),%eax
4152b2:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4152b5:	23 c7                	and    %edi,%eax
4152b7:	23 ce                	and    %esi,%ecx
4152b9:	0b c1                	or     %ecx,%eax
4152bb:	74 07                	je     0x4152c4
4152bd:	b1 01                	mov    $0x1,%cl
4152bf:	88 4d fd             	mov    %cl,-0x3(%ebp)
4152c2:	eb 05                	jmp    0x4152c9
4152c4:	8a cb                	mov    %bl,%cl
4152c6:	88 5d fd             	mov    %bl,-0x3(%ebp)
4152c9:	38 5d 18             	cmp    %bl,0x18(%ebp)
4152cc:	74 15                	je     0x4152e3
4152ce:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4152d1:	8b 55 e8             	mov    -0x18(%ebp),%edx
4152d4:	23 c7                	and    %edi,%eax
4152d6:	23 d6                	and    %esi,%edx
4152d8:	0b c2                	or     %edx,%eax
4152da:	75 07                	jne    0x4152e3
4152dc:	8a c3                	mov    %bl,%al
4152de:	88 5d fe             	mov    %bl,-0x2(%ebp)
4152e1:	eb 05                	jmp    0x4152e8
4152e3:	b0 01                	mov    $0x1,%al
4152e5:	88 45 fe             	mov    %al,-0x2(%ebp)
4152e8:	84 c9                	test   %cl,%cl
4152ea:	75 04                	jne    0x4152f0
4152ec:	84 c0                	test   %al,%al
4152ee:	74 35                	je     0x415325
4152f0:	e8 9f b2 00 00       	call   0x420594
4152f5:	85 c0                	test   %eax,%eax
4152f7:	74 1b                	je     0x415314
4152f9:	3d 00 01 00 00       	cmp    $0x100,%eax
4152fe:	74 0f                	je     0x41530f
415300:	3d 00 02 00 00       	cmp    $0x200,%eax
415305:	75 1e                	jne    0x415325
415307:	8a 5d 14             	mov    0x14(%ebp),%bl
41530a:	80 f3 01             	xor    $0x1,%bl
41530d:	eb 16                	jmp    0x415325
41530f:	8a 5d 14             	mov    0x14(%ebp),%bl
415312:	eb 11                	jmp    0x415325
415314:	38 5d fd             	cmp    %bl,-0x3(%ebp)
415317:	74 0c                	je     0x415325
415319:	38 5d fe             	cmp    %bl,-0x2(%ebp)
41531c:	75 05                	jne    0x415323
41531e:	38 5d ff             	cmp    %bl,-0x1(%ebp)
415321:	74 02                	je     0x415325
415323:	b3 01                	mov    $0x1,%bl
415325:	8b 4d f4             	mov    -0xc(%ebp),%ecx
415328:	8b c7                	mov    %edi,%eax
41532a:	8b d6                	mov    %esi,%edx
41532c:	e8 2f 8b 01 00       	call   0x42de60
415331:	8b f8                	mov    %eax,%edi
415333:	8b f2                	mov    %edx,%esi
415335:	0f b6 c3             	movzbl %bl,%eax
415338:	99                   	cltd
415339:	03 f8                	add    %eax,%edi
41533b:	13 f2                	adc    %edx,%esi
41533d:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
415340:	e8 53 26 00 00       	call   0x417998
415345:	3b f2                	cmp    %edx,%esi
415347:	72 4f                	jb     0x415398
415349:	77 04                	ja     0x41534f
41534b:	3b f8                	cmp    %eax,%edi
41534d:	76 49                	jbe    0x415398
41534f:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
415352:	33 c0                	xor    %eax,%eax
415354:	8b 5d f8             	mov    -0x8(%ebp),%ebx
415357:	0f ac f7 01          	shrd   $0x1,%esi,%edi
41535b:	d1 ee                	shr    $1,%esi
41535d:	43                   	inc    %ebx
41535e:	38 41 04             	cmp    %al,0x4(%ecx)
415361:	0f 94 c0             	sete   %al
415364:	48                   	dec    %eax
415365:	25 80 03 00 00       	and    $0x380,%eax
41536a:	83 c0 7f             	add    $0x7f,%eax
41536d:	3b d8                	cmp    %eax,%ebx
41536f:	7e 2a                	jle    0x41539b
415371:	8b c1                	mov    %ecx,%eax
415373:	50                   	push   %eax
415374:	ff 75 14             	push   0x14(%ebp)
415377:	e8 c6 fc ff ff       	call   0x415042
41537c:	59                   	pop    %ecx
41537d:	59                   	pop    %ecx
41537e:	6a 03                	push   $0x3
415380:	58                   	pop    %eax
415381:	5f                   	pop    %edi
415382:	5e                   	pop    %esi
415383:	5b                   	pop    %ebx
415384:	c9                   	leave
415385:	c3                   	ret
415386:	7e 10                	jle    0x415398
415388:	8b 4d f4             	mov    -0xc(%ebp),%ecx
41538b:	8b d6                	mov    %esi,%edx
41538d:	8b c7                	mov    %edi,%eax
41538f:	e8 ac 8a 01 00       	call   0x42de40
415394:	8b f2                	mov    %edx,%esi
415396:	8b f8                	mov    %eax,%edi
415398:	8b 5d f8             	mov    -0x8(%ebp),%ebx
41539b:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
41539e:	e8 4b 20 00 00       	call   0x4173ee
4153a3:	23 f8                	and    %eax,%edi
4153a5:	23 f2                	and    %edx,%esi
4153a7:	8b 45 1c             	mov    0x1c(%ebp),%eax
4153aa:	8b c8                	mov    %eax,%ecx
4153ac:	80 78 04 00          	cmpb   $0x0,0x4(%eax)
4153b0:	74 13                	je     0x4153c5
4153b2:	e8 41 fc ff ff       	call   0x414ff8
4153b7:	50                   	push   %eax
4153b8:	56                   	push   %esi
4153b9:	57                   	push   %edi
4153ba:	53                   	push   %ebx
4153bb:	ff 75 14             	push   0x14(%ebp)
4153be:	e8 7c e6 ff ff       	call   0x413a3f
4153c3:	eb 11                	jmp    0x4153d6
4153c5:	e8 53 fc ff ff       	call   0x41501d
4153ca:	50                   	push   %eax
4153cb:	56                   	push   %esi
4153cc:	57                   	push   %edi
4153cd:	53                   	push   %ebx
4153ce:	ff 75 14             	push   0x14(%ebp)
4153d1:	e8 39 e6 ff ff       	call   0x413a0f
4153d6:	83 c4 14             	add    $0x14,%esp
4153d9:	eb a6                	jmp    0x415381
4153db:	8b ff                	mov    %edi,%edi