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
4153dd:	55                   	push   %ebp
4153de:	8b ec                	mov    %esp,%ebp
4153e0:	83 ec 1c             	sub    $0x1c,%esp
4153e3:	33 d2                	xor    %edx,%edx
4153e5:	53                   	push   %ebx
4153e6:	8b 5d 18             	mov    0x18(%ebp),%ebx
4153e9:	56                   	push   %esi
4153ea:	57                   	push   %edi
4153eb:	8b 7d 0c             	mov    0xc(%ebp),%edi
4153ee:	38 53 04             	cmp    %dl,0x4(%ebx)
4153f1:	0f 94 c2             	sete   %dl
4153f4:	4a                   	dec    %edx
4153f5:	83 e2 1d             	and    $0x1d,%edx
4153f8:	83 c2 17             	add    $0x17,%edx
4153fb:	83 ff 40             	cmp    $0x40,%edi
4153fe:	77 35                	ja     0x415435
415400:	8b 75 08             	mov    0x8(%ebp),%esi
415403:	83 3e 00             	cmpl   $0x0,(%esi)
415406:	76 0d                	jbe    0x415415
415408:	83 3e 01             	cmpl   $0x1,(%esi)
41540b:	8b 4e 04             	mov    0x4(%esi),%ecx
41540e:	76 07                	jbe    0x415417
415410:	8b 76 08             	mov    0x8(%esi),%esi
415413:	eb 04                	jmp    0x415419
415415:	33 c9                	xor    %ecx,%ecx
415417:	33 f6                	xor    %esi,%esi
415419:	8a 45 14             	mov    0x14(%ebp),%al
41541c:	34 01                	xor    $0x1,%al
41541e:	53                   	push   %ebx
41541f:	0f b6 c0             	movzbl %al,%eax
415422:	50                   	push   %eax
415423:	ff 75 10             	push   0x10(%ebp)
415426:	33 c0                	xor    %eax,%eax
415428:	03 c1                	add    %ecx,%eax
41542a:	52                   	push   %edx
41542b:	83 d6 00             	adc    $0x0,%esi
41542e:	56                   	push   %esi
41542f:	50                   	push   %eax
415430:	e9 2b 01 00 00       	jmp    0x415560
415435:	8b c7                	mov    %edi,%eax
415437:	c1 ef 05             	shr    $0x5,%edi
41543a:	83 e0 1f             	and    $0x1f,%eax
41543d:	89 45 f0             	mov    %eax,-0x10(%ebp)
415440:	8d 77 fe             	lea    -0x2(%edi),%esi
415443:	8b c6                	mov    %esi,%eax
415445:	c1 e0 05             	shl    $0x5,%eax
415448:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
41544c:	89 45 f8             	mov    %eax,-0x8(%ebp)
41544f:	8b 45 08             	mov    0x8(%ebp),%eax
415452:	8b 4c b0 04          	mov    0x4(%eax,%esi,4),%ecx
415456:	89 4d e8             	mov    %ecx,-0x18(%ebp)
415459:	8b 0c b8             	mov    (%eax,%edi,4),%ecx
41545c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
41545f:	75 4a                	jne    0x4154ab
415461:	03 55 f8             	add    -0x8(%ebp),%edx
415464:	33 ff                	xor    %edi,%edi
415466:	03 7c b0 04          	add    0x4(%eax,%esi,4),%edi
41546a:	89 55 e8             	mov    %edx,-0x18(%ebp)
41546d:	83 d1 00             	adc    $0x0,%ecx
415470:	89 4d f4             	mov    %ecx,-0xc(%ebp)
415473:	8a 4d 14             	mov    0x14(%ebp),%cl
415476:	80 f1 01             	xor    $0x1,%cl
415479:	88 4d f0             	mov    %cl,-0x10(%ebp)
41547c:	85 f6                	test   %esi,%esi
41547e:	74 18                	je     0x415498
415480:	8d 50 04             	lea    0x4(%eax),%edx
415483:	83 3a 00             	cmpl   $0x0,(%edx)
415486:	8d 52 04             	lea    0x4(%edx),%edx
415489:	0f 95 c0             	setne  %al
41548c:	fe c8                	dec    %al
41548e:	22 c8                	and    %al,%cl
415490:	83 ee 01             	sub    $0x1,%esi
415493:	75 ee                	jne    0x415483
415495:	88 4d f0             	mov    %cl,-0x10(%ebp)
415498:	53                   	push   %ebx
415499:	ff 75 f0             	push   -0x10(%ebp)
41549c:	ff 75 10             	push   0x10(%ebp)
41549f:	ff 75 e8             	push   -0x18(%ebp)
4154a2:	ff 75 f4             	push   -0xc(%ebp)
4154a5:	57                   	push   %edi
4154a6:	e9 b5 00 00 00       	jmp    0x415560
4154ab:	8b 45 f0             	mov    -0x10(%ebp),%eax
4154ae:	33 db                	xor    %ebx,%ebx
4154b0:	8b c8                	mov    %eax,%ecx
4154b2:	43                   	inc    %ebx
4154b3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4154b6:	d3 65 fc             	shll   %cl,-0x4(%ebp)
4154b9:	ff 4d fc             	decl   -0x4(%ebp)
4154bc:	6a 40                	push   $0x40
4154be:	59                   	pop    %ecx
4154bf:	2b c8                	sub    %eax,%ecx
4154c1:	03 45 f8             	add    -0x8(%ebp),%eax
4154c4:	03 c2                	add    %edx,%eax
4154c6:	89 4d ec             	mov    %ecx,-0x14(%ebp)
4154c9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4154cc:	33 d2                	xor    %edx,%edx
4154ce:	8b 45 f4             	mov    -0xc(%ebp),%eax
4154d1:	8d 49 e0             	lea    -0x20(%ecx),%ecx
4154d4:	e8 67 89 01 00       	call   0x42de40
4154d9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4154dc:	89 45 f8             	mov    %eax,-0x8(%ebp)
4154df:	8b 45 fc             	mov    -0x4(%ebp),%eax
4154e2:	f7 d0                	not    %eax
4154e4:	89 55 f4             	mov    %edx,-0xc(%ebp)
4154e7:	23 45 e8             	and    -0x18(%ebp),%eax
4154ea:	33 d2                	xor    %edx,%edx
4154ec:	e8 6f 89 01 00       	call   0x42de60
4154f1:	01 45 f8             	add    %eax,-0x8(%ebp)
4154f4:	8b 45 08             	mov    0x8(%ebp),%eax
4154f7:	11 55 f4             	adc    %edx,-0xc(%ebp)
4154fa:	33 d2                	xor    %edx,%edx
4154fc:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4154ff:	8b 44 b8 04          	mov    0x4(%eax,%edi,4),%eax
415503:	8b 7d fc             	mov    -0x4(%ebp),%edi
415506:	23 c7                	and    %edi,%eax
415508:	e8 33 89 01 00       	call   0x42de40
41550d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
415510:	03 c8                	add    %eax,%ecx
415512:	8b 45 f4             	mov    -0xc(%ebp),%eax
415515:	89 4d f8             	mov    %ecx,-0x8(%ebp)
415518:	13 c2                	adc    %edx,%eax
41551a:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
41551e:	89 45 f4             	mov    %eax,-0xc(%ebp)
415521:	75 05                	jne    0x415528
415523:	85 7d e8             	test   %edi,-0x18(%ebp)
415526:	74 02                	je     0x41552a
415528:	32 db                	xor    %bl,%bl
41552a:	88 5d f0             	mov    %bl,-0x10(%ebp)
41552d:	85 f6                	test   %esi,%esi
41552f:	74 21                	je     0x415552
415531:	8b 4d 08             	mov    0x8(%ebp),%ecx
415534:	83 c1 04             	add    $0x4,%ecx
415537:	83 39 00             	cmpl   $0x0,(%ecx)
41553a:	8d 49 04             	lea    0x4(%ecx),%ecx
41553d:	0f 95 c0             	setne  %al
415540:	fe c8                	dec    %al
415542:	22 d8                	and    %al,%bl
415544:	88 5d f0             	mov    %bl,-0x10(%ebp)
415547:	83 ee 01             	sub    $0x1,%esi
41554a:	75 eb                	jne    0x415537
41554c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41554f:	8b 45 f4             	mov    -0xc(%ebp),%eax
415552:	ff 75 18             	push   0x18(%ebp)
415555:	ff 75 f0             	push   -0x10(%ebp)
415558:	ff 75 10             	push   0x10(%ebp)
41555b:	ff 75 e4             	push   -0x1c(%ebp)
41555e:	50                   	push   %eax
41555f:	51                   	push   %ecx
415560:	e8 1d fb ff ff       	call   0x415082
415565:	83 c4 18             	add    $0x18,%esp
415568:	5f                   	pop    %edi
415569:	5e                   	pop    %esi
41556a:	5b                   	pop    %ebx
41556b:	c9                   	leave
41556c:	c3                   	ret
41556d:	8b ff                	mov    %edi,%edi
41556f:	55                   	push   %ebp
415570:	8b ec                	mov    %esp,%ebp
415572:	8b 4d 0c             	mov    0xc(%ebp),%ecx
415575:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
415579:	74 17                	je     0x415592
41557b:	e8 78 fa ff ff       	call   0x414ff8
415580:	8b c8                	mov    %eax,%ecx
415582:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
415586:	99                   	cltd
415587:	c1 e0 1f             	shl    $0x1f,%eax
41558a:	83 21 00             	andl   $0x0,(%ecx)
41558d:	89 41 04             	mov    %eax,0x4(%ecx)
415590:	5d                   	pop    %ebp
415591:	c3                   	ret
415592:	e8 86 fa ff ff       	call   0x41501d
415597:	0f b6 4d 08          	movzbl 0x8(%ebp),%ecx
41559b:	c1 e1 1f             	shl    $0x1f,%ecx
41559e:	89 08                	mov    %ecx,(%eax)
4155a0:	5d                   	pop    %ebp