5f32c1:	eb 10                	jmp    0x5f32d3
5f32c3:	0f bd c6             	bsr    %esi,%eax
5f32c6:	89 5d dc             	mov    %ebx,-0x24(%ebp)
5f32c9:	74 03                	je     0x5f32ce
5f32cb:	40                   	inc    %eax
5f32cc:	eb 02                	jmp    0x5f32d0
5f32ce:	8b c3                	mov    %ebx,%eax
5f32d0:	83 c0 20             	add    $0x20,%eax
5f32d3:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5f32d6:	33 d2                	xor    %edx,%edx
5f32d8:	8a 49 04             	mov    0x4(%ecx),%cl
5f32db:	84 c9                	test   %cl,%cl
5f32dd:	88 4d ff             	mov    %cl,-0x1(%ebp)
5f32e0:	8b 4d 10             	mov    0x10(%ebp),%ecx
5f32e3:	0f 94 c2             	sete   %dl
5f32e6:	4a                   	dec    %edx
5f32e7:	83 e2 1d             	and    $0x1d,%edx
5f32ea:	83 c2 18             	add    $0x18,%edx
5f32ed:	2b d0                	sub    %eax,%edx
5f32ef:	33 c0                	xor    %eax,%eax
5f32f1:	2b ca                	sub    %edx,%ecx
5f32f3:	89 55 f4             	mov    %edx,-0xc(%ebp)
5f32f6:	38 45 ff             	cmp    %al,-0x1(%ebp)
5f32f9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
5f32fc:	0f 94 c0             	sete   %al
5f32ff:	48                   	dec    %eax
5f3300:	25 80 03 00 00       	and    $0x380,%eax
5f3305:	83 c0 7f             	add    $0x7f,%eax
5f3308:	89 45 ec             	mov    %eax,-0x14(%ebp)
5f330b:	3b c8                	cmp    %eax,%ecx
5f330d:	0f 8f 64 02 00 00    	jg     0x5f3577
5f3313:	33 c0                	xor    %eax,%eax
5f3315:	38 45 ff             	cmp    %al,-0x1(%ebp)
5f3318:	0f 94 c0             	sete   %al
5f331b:	48                   	dec    %eax
5f331c:	25 80 fc ff ff       	and    $0xfffffc80,%eax
5f3321:	83 c0 82             	add    $0xffffff82,%eax
5f3324:	3b c8                	cmp    %eax,%ecx
5f3326:	0f 8d 38 01 00 00    	jge    0x5f3464
5f332c:	8b 45 10             	mov    0x10(%ebp),%eax
5f332f:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5f3332:	48                   	dec    %eax
5f3333:	03 c1                	add    %ecx,%eax
5f3335:	f7 d9                	neg    %ecx
5f3337:	89 45 ec             	mov    %eax,-0x14(%ebp)
5f333a:	89 4d f8             	mov    %ecx,-0x8(%ebp)
5f333d:	85 c0                	test   %eax,%eax
5f333f:	0f 89 17 01 00 00    	jns    0x5f345c
5f3345:	f7 d8                	neg    %eax
5f3347:	89 45 f0             	mov    %eax,-0x10(%ebp)
5f334a:	83 f8 40             	cmp    $0x40,%eax
5f334d:	0f 83 f5 00 00 00    	jae    0x5f3448
5f3353:	8d 48 ff             	lea    -0x1(%eax),%ecx
5f3356:	33 d2                	xor    %edx,%edx
5f3358:	33 c0                	xor    %eax,%eax
5f335a:	40                   	inc    %eax
5f335b:	e8 30 ef fe ff       	call   0x5e2290
5f3360:	89 45 e8             	mov    %eax,-0x18(%ebp)
5f3363:	8b ca                	mov    %edx,%ecx
5f3365:	83 c0 ff             	add    $0xffffffff,%eax
5f3368:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5f336b:	89 45 e0             	mov    %eax,-0x20(%ebp)
5f336e:	83 d1 ff             	adc    $0xffffffff,%ecx
5f3371:	33 c0                	xor    %eax,%eax
5f3373:	89 4d dc             	mov    %ecx,-0x24(%ebp)
5f3376:	40                   	inc    %eax
5f3377:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5f337a:	33 d2                	xor    %edx,%edx
5f337c:	e8 0f ef fe ff       	call   0x5e2290
5f3381:	23 c7                	and    %edi,%eax
5f3383:	c6 45 fd 01          	movb   $0x1,-0x3(%ebp)
5f3387:	23 d6                	and    %esi,%edx
5f3389:	0b c2                	or     %edx,%eax
5f338b:	8b d7                	mov    %edi,%edx
5f338d:	8b c6                	mov    %esi,%eax
5f338f:	75 03                	jne    0x5f3394
5f3391:	88 5d fd             	mov    %bl,-0x3(%ebp)
5f3394:	23 45 e4             	and    -0x1c(%ebp),%eax
5f3397:	8b ca                	mov    %edx,%ecx
5f3399:	23 4d e8             	and    -0x18(%ebp),%ecx
5f339c:	0b c8                	or     %eax,%ecx
5f339e:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
5f33a2:	8b c6                	mov    %esi,%eax
5f33a4:	75 03                	jne    0x5f33a9
5f33a6:	88 5d ff             	mov    %bl,-0x1(%ebp)
5f33a9:	38 5d 18             	cmp    %bl,0x18(%ebp)
5f33ac:	74 10                	je     0x5f33be
5f33ae:	8b 4d e0             	mov    -0x20(%ebp),%ecx
5f33b1:	23 ca                	and    %edx,%ecx
5f33b3:	8b 55 dc             	mov    -0x24(%ebp),%edx
5f33b6:	23 d0                	and    %eax,%edx
5f33b8:	8a c3                	mov    %bl,%al
5f33ba:	0b ca                	or     %edx,%ecx
5f33bc:	74 02                	je     0x5f33c0
5f33be:	b0 01                	mov    $0x1,%al
5f33c0:	88 45 fe             	mov    %al,-0x2(%ebp)
5f33c3:	38 5d ff             	cmp    %bl,-0x1(%ebp)
5f33c6:	75 04                	jne    0x5f33cc
5f33c8:	84 c0                	test   %al,%al
5f33ca:	74 35                	je     0x5f3401
5f33cc:	e8 ce 37 01 00       	call   0x606b9f
5f33d1:	85 c0                	test   %eax,%eax
5f33d3:	74 1b                	je     0x5f33f0
5f33d5:	3d 00 01 00 00       	cmp    $0x100,%eax
5f33da:	74 0f                	je     0x5f33eb
5f33dc:	3d 00 02 00 00       	cmp    $0x200,%eax
5f33e1:	75 1e                	jne    0x5f3401
5f33e3:	8a 5d 14             	mov    0x14(%ebp),%bl
5f33e6:	80 f3 01             	xor    $0x1,%bl
5f33e9:	eb 16                	jmp    0x5f3401
5f33eb:	8a 5d 14             	mov    0x14(%ebp),%bl
5f33ee:	eb 11                	jmp    0x5f3401
5f33f0:	38 5d ff             	cmp    %bl,-0x1(%ebp)
5f33f3:	74 0c                	je     0x5f3401
5f33f5:	38 5d fe             	cmp    %bl,-0x2(%ebp)
5f33f8:	75 05                	jne    0x5f33ff
5f33fa:	38 5d fd             	cmp    %bl,-0x3(%ebp)
5f33fd:	74 02                	je     0x5f3401
5f33ff:	b3 01                	mov    $0x1,%bl
5f3401:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5f3404:	8b c7                	mov    %edi,%eax
5f3406:	8b d6                	mov    %esi,%edx
5f3408:	e8 53 ec fe ff       	call   0x5e2060
5f340d:	8b f8                	mov    %eax,%edi
5f340f:	8b f2                	mov    %edx,%esi
5f3411:	0f b6 c3             	movzbl %bl,%eax
5f3414:	99                   	cltd
5f3415:	03 f8                	add    %eax,%edi
5f3417:	8b c7                	mov    %edi,%eax
5f3419:	13 f2                	adc    %edx,%esi
5f341b:	0b c6                	or     %esi,%eax
5f341d:	74 29                	je     0x5f3448
5f341f:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5f3422:	e8 68 21 00 00       	call   0x5f558f
5f3427:	3b f2                	cmp    %edx,%esi
5f3429:	0f 82 6f 01 00 00    	jb     0x5f359e
5f342f:	77 08                	ja     0x5f3439
5f3431:	3b f8                	cmp    %eax,%edi
5f3433:	0f 86 65 01 00 00    	jbe    0x5f359e
5f3439:	8b 5d 10             	mov    0x10(%ebp),%ebx
5f343c:	2b 5d ec             	sub    -0x14(%ebp),%ebx
5f343f:	2b 5d f4             	sub    -0xc(%ebp),%ebx
5f3442:	4b                   	dec    %ebx
5f3443:	e9 59 01 00 00       	jmp    0x5f35a1
5f3448:	ff 75 1c             	push   0x1c(%ebp)
5f344b:	ff 75 14             	push   0x14(%ebp)
5f344e:	e8 22 03 00 00       	call   0x5f3775
5f3453:	59                   	pop    %ecx
5f3454:	59                   	pop    %ecx
5f3455:	6a 02                	push   $0x2
5f3457:	e9 2a 01 00 00       	jmp    0x5f3586
5f345c:	8b 4d ec             	mov    -0x14(%ebp),%ecx
5f345f:	e9 2d 01 00 00       	jmp    0x5f3591
5f3464:	85 d2                	test   %edx,%edx
5f3466:	0f 89 20 01 00 00    	jns    0x5f358c
5f346c:	f7 da                	neg    %edx
5f346e:	89 55 f4             	mov    %edx,-0xc(%ebp)
5f3471:	83 fa 40             	cmp    $0x40,%edx
5f3474:	72 09                	jb     0x5f347f
5f3476:	8b fb                	mov    %ebx,%edi
5f3478:	8b f3                	mov    %ebx,%esi
5f347a:	e9 c4 00 00 00       	jmp    0x5f3543
5f347f:	33 c0                	xor    %eax,%eax
5f3481:	8d 4a ff             	lea    -0x1(%edx),%ecx
5f3484:	40                   	inc    %eax
5f3485:	33 d2                	xor    %edx,%edx
5f3487:	e8 04 ee fe ff       	call   0x5e2290
5f348c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f348f:	89 45 dc             	mov    %eax,-0x24(%ebp)
5f3492:	83 c0 ff             	add    $0xffffffff,%eax
5f3495:	89 55 e0             	mov    %edx,-0x20(%ebp)
5f3498:	83 d2 ff             	adc    $0xffffffff,%edx
5f349b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
5f349e:	33 c0                	xor    %eax,%eax
5f34a0:	89 55 e8             	mov    %edx,-0x18(%ebp)
5f34a3:	40                   	inc    %eax
5f34a4:	33 d2                	xor    %edx,%edx
5f34a6:	e8 e5 ed fe ff       	call   0x5e2290
5f34ab:	23 c7                	and    %edi,%eax
5f34ad:	c6 45 fe 01          	movb   $0x1,-0x2(%ebp)
5f34b1:	23 d6                	and    %esi,%edx
5f34b3:	0b c2                	or     %edx,%eax
5f34b5:	8b d7                	mov    %edi,%edx
5f34b7:	8b c6                	mov    %esi,%eax
5f34b9:	75 03                	jne    0x5f34be
5f34bb:	88 5d fe             	mov    %bl,-0x2(%ebp)
5f34be:	23 45 e0             	and    -0x20(%ebp),%eax
5f34c1:	8b ca                	mov    %edx,%ecx
5f34c3:	23 4d dc             	and    -0x24(%ebp),%ecx
5f34c6:	0b c8                	or     %eax,%ecx
5f34c8:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
5f34cc:	8b c6                	mov    %esi,%eax
5f34ce:	75 03                	jne    0x5f34d3
5f34d0:	88 5d ff             	mov    %bl,-0x1(%ebp)
5f34d3:	38 5d 18             	cmp    %bl,0x18(%ebp)
5f34d6:	74 10                	je     0x5f34e8
5f34d8:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
5f34db:	23 ca                	and    %edx,%ecx
5f34dd:	8b 55 e8             	mov    -0x18(%ebp),%edx
5f34e0:	23 d0                	and    %eax,%edx
5f34e2:	8a c3                	mov    %bl,%al
5f34e4:	0b ca                	or     %edx,%ecx
5f34e6:	74 02                	je     0x5f34ea
5f34e8:	b0 01                	mov    $0x1,%al
5f34ea:	88 45 fd             	mov    %al,-0x3(%ebp)
5f34ed:	38 5d ff             	cmp    %bl,-0x1(%ebp)
5f34f0:	75 04                	jne    0x5f34f6
5f34f2:	84 c0                	test   %al,%al
5f34f4:	74 35                	je     0x5f352b
5f34f6:	e8 a4 36 01 00       	call   0x606b9f
5f34fb:	85 c0                	test   %eax,%eax
5f34fd:	74 1b                	je     0x5f351a
5f34ff:	3d 00 01 00 00       	cmp    $0x100,%eax
5f3504:	74 0f                	je     0x5f3515
5f3506:	3d 00 02 00 00       	cmp    $0x200,%eax
5f350b:	75 1e                	jne    0x5f352b
5f350d:	8a 5d 14             	mov    0x14(%ebp),%bl
5f3510:	80 f3 01             	xor    $0x1,%bl
5f3513:	eb 16                	jmp    0x5f352b
5f3515:	8a 5d 14             	mov    0x14(%ebp),%bl
5f3518:	eb 11                	jmp    0x5f352b
5f351a:	38 5d ff             	cmp    %bl,-0x1(%ebp)
5f351d:	74 0c                	je     0x5f352b
5f351f:	38 5d fd             	cmp    %bl,-0x3(%ebp)
5f3522:	75 05                	jne    0x5f3529
5f3524:	38 5d fe             	cmp    %bl,-0x2(%ebp)
5f3527:	74 02                	je     0x5f352b
5f3529:	b3 01                	mov    $0x1,%bl
5f352b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f352e:	8b c7                	mov    %edi,%eax
5f3530:	8b d6                	mov    %esi,%edx
5f3532:	e8 29 eb fe ff       	call   0x5e2060
5f3537:	8b f8                	mov    %eax,%edi
5f3539:	8b f2                	mov    %edx,%esi
5f353b:	0f b6 c3             	movzbl %bl,%eax
5f353e:	99                   	cltd
5f353f:	03 f8                	add    %eax,%edi
5f3541:	13 f2                	adc    %edx,%esi
5f3543:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5f3546:	e8 f9 25 00 00       	call   0x5f5b44
5f354b:	3b f2                	cmp    %edx,%esi
5f354d:	72 4f                	jb     0x5f359e
5f354f:	77 04                	ja     0x5f3555
5f3551:	3b f8                	cmp    %eax,%edi
5f3553:	76 49                	jbe    0x5f359e
5f3555:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5f3558:	33 c0                	xor    %eax,%eax
5f355a:	8b 5d f8             	mov    -0x8(%ebp),%ebx
5f355d:	0f ac f7 01          	shrd   $0x1,%esi,%edi
5f3561:	d1 ee                	shr    $1,%esi
5f3563:	43                   	inc    %ebx
5f3564:	38 41 04             	cmp    %al,0x4(%ecx)
5f3567:	0f 94 c0             	sete   %al
5f356a:	48                   	dec    %eax
5f356b:	25 80 03 00 00       	and    $0x380,%eax
5f3570:	83 c0 7f             	add    $0x7f,%eax
5f3573:	3b d8                	cmp    %eax,%ebx
5f3575:	7e 2a                	jle    0x5f35a1
5f3577:	ff 75 1c             	push   0x1c(%ebp)
5f357a:	ff 75 14             	push   0x14(%ebp)
5f357d:	e8 d6 fc ff ff       	call   0x5f3258
5f3582:	59                   	pop    %ecx
5f3583:	59                   	pop    %ecx
5f3584:	6a 03                	push   $0x3
5f3586:	58                   	pop    %eax
5f3587:	5f                   	pop    %edi
5f3588:	5e                   	pop    %esi
5f3589:	5b                   	pop    %ebx
5f358a:	c9                   	leave
5f358b:	c3                   	ret
5f358c:	7e 10                	jle    0x5f359e
5f358e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f3591:	8b d6                	mov    %esi,%edx
5f3593:	8b c7                	mov    %edi,%eax
5f3595:	e8 f6 ec fe ff       	call   0x5e2290
5f359a:	8b f2                	mov    %edx,%esi
5f359c:	8b f8                	mov    %eax,%edi
5f359e:	8b 5d f8             	mov    -0x8(%ebp),%ebx
5f35a1:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5f35a4:	e8 e6 1f 00 00       	call   0x5f558f
5f35a9:	23 f8                	and    %eax,%edi
5f35ab:	23 f2                	and    %edx,%esi
5f35ad:	8b 45 1c             	mov    0x1c(%ebp),%eax
5f35b0:	8b c8                	mov    %eax,%ecx
5f35b2:	80 78 04 00          	cmpb   $0x0,0x4(%eax)
5f35b6:	74 13                	je     0x5f35cb
5f35b8:	e8 51 fc ff ff       	call   0x5f320e
5f35bd:	50                   	push   %eax
5f35be:	56                   	push   %esi
5f35bf:	57                   	push   %edi
5f35c0:	53                   	push   %ebx
5f35c1:	ff 75 14             	push   0x14(%ebp)
5f35c4:	e8 94 e7 ff ff       	call   0x5f1d5d
5f35c9:	eb 11                	jmp    0x5f35dc
5f35cb:	e8 63 fc ff ff       	call   0x5f3233
5f35d0:	50                   	push   %eax
5f35d1:	56                   	push   %esi
5f35d2:	57                   	push   %edi
5f35d3:	53                   	push   %ebx
5f35d4:	ff 75 14             	push   0x14(%ebp)
5f35d7:	e8 51 e7 ff ff       	call   0x5f1d2d
5f35dc:	83 c4 14             	add    $0x14,%esp
5f35df:	eb a6                	jmp    0x5f3587
5f35e1:	8b ff                	mov    %edi,%edi
5f35e3:	55                   	push   %ebp
5f35e4:	8b ec                	mov    %esp,%ebp
5f35e6:	83 ec 20             	sub    $0x20,%esp
5f35e9:	33 d2                	xor    %edx,%edx
5f35eb:	53                   	push   %ebx
5f35ec:	8b 5d 18             	mov    0x18(%ebp),%ebx
5f35ef:	56                   	push   %esi
5f35f0:	57                   	push   %edi
5f35f1:	8b 7d 0c             	mov    0xc(%ebp),%edi
5f35f4:	38 53 04             	cmp    %dl,0x4(%ebx)
5f35f7:	0f 94 c2             	sete   %dl
5f35fa:	4a                   	dec    %edx
5f35fb:	83 e2 1d             	and    $0x1d,%edx
5f35fe:	83 c2 17             	add    $0x17,%edx
5f3601:	83 ff 40             	cmp    $0x40,%edi
5f3604:	77 37                	ja     0x5f363d
5f3606:	8b 4d 08             	mov    0x8(%ebp),%ecx
5f3609:	83 39 00             	cmpl   $0x0,(%ecx)
5f360c:	76 05                	jbe    0x5f3613
5f360e:	8b 71 04             	mov    0x4(%ecx),%esi
5f3611:	eb 02                	jmp    0x5f3615
5f3613:	33 f6                	xor    %esi,%esi
5f3615:	83 39 01             	cmpl   $0x1,(%ecx)
5f3618:	76 05                	jbe    0x5f361f
5f361a:	8b 49 08             	mov    0x8(%ecx),%ecx
5f361d:	eb 02                	jmp    0x5f3621
5f361f:	33 c9                	xor    %ecx,%ecx
5f3621:	8a 45 14             	mov    0x14(%ebp),%al
5f3624:	34 01                	xor    $0x1,%al
5f3626:	53                   	push   %ebx
5f3627:	0f b6 c0             	movzbl %al,%eax
5f362a:	50                   	push   %eax
5f362b:	ff 75 10             	push   0x10(%ebp)
5f362e:	33 c0                	xor    %eax,%eax
5f3630:	03 c6                	add    %esi,%eax
5f3632:	52                   	push   %edx
5f3633:	83 d1 00             	adc    $0x0,%ecx
5f3636:	51                   	push   %ecx
5f3637:	50                   	push   %eax
5f3638:	e9 2b 01 00 00       	jmp    0x5f3768
5f363d:	8b cf                	mov    %edi,%ecx
5f363f:	c1 ef 05             	shr    $0x5,%edi
5f3642:	83 e1 1f             	and    $0x1f,%ecx
5f3645:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5f3648:	8d 77 fe             	lea    -0x2(%edi),%esi
5f364b:	8b c6                	mov    %esi,%eax