5643b1:	79 03                	jns    0x5643b6
5643b3:	83 c1 03             	add    $0x3,%ecx
5643b6:	c1 f9 02             	sar    $0x2,%ecx
5643b9:	eb 02                	jmp    0x5643bd
5643bb:	33 c9                	xor    %ecx,%ecx
5643bd:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
5643c0:	8b 55 08             	mov    0x8(%ebp),%edx
5643c3:	8b 42 14             	mov    0x14(%edx),%eax
5643c6:	48                   	dec    %eax
5643c7:	7e 1f                	jle    0x5643e8
5643c9:	8b 55 08             	mov    0x8(%ebp),%edx
5643cc:	8b 4a 1c             	mov    0x1c(%edx),%ecx
5643cf:	8b 55 08             	mov    0x8(%ebp),%edx
5643d2:	8b 41 04             	mov    0x4(%ecx),%eax
5643d5:	8b 4a 1c             	mov    0x1c(%edx),%ecx
5643d8:	8b 11                	mov    (%ecx),%edx
5643da:	2b c2                	sub    %edx,%eax
5643dc:	85 c0                	test   %eax,%eax
5643de:	79 03                	jns    0x5643e3
5643e0:	83 c0 03             	add    $0x3,%eax
5643e3:	c1 f8 02             	sar    $0x2,%eax
5643e6:	eb 02                	jmp    0x5643ea
5643e8:	33 c0                	xor    %eax,%eax
5643ea:	89 45 c4             	mov    %eax,-0x3c(%ebp)
5643ed:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5643f0:	c1 e1 02             	shl    $0x2,%ecx
5643f3:	89 4d d0             	mov    %ecx,-0x30(%ebp)
5643f6:	8b 45 c4             	mov    -0x3c(%ebp),%eax
5643f9:	c1 e0 02             	shl    $0x2,%eax
5643fc:	89 45 c0             	mov    %eax,-0x40(%ebp)
5643ff:	8b 4d f8             	mov    -0x8(%ebp),%ecx
564402:	ba 01 00 00 00       	mov    $0x1,%edx
564407:	d3 e2                	shl    %cl,%edx
564409:	89 55 e0             	mov    %edx,-0x20(%ebp)
56440c:	8b 45 e0             	mov    -0x20(%ebp),%eax
56440f:	d1 f8                	sar    $1,%eax
564411:	89 45 dc             	mov    %eax,-0x24(%ebp)
564414:	8b 55 f8             	mov    -0x8(%ebp),%edx
564417:	85 d2                	test   %edx,%edx
564419:	7e 07                	jle    0x564422
56441b:	8b 4d dc             	mov    -0x24(%ebp),%ecx
56441e:	f7 d9                	neg    %ecx
564420:	eb 03                	jmp    0x564425
564422:	83 c9 ff             	or     $0xffffffff,%ecx
564425:	89 4d d8             	mov    %ecx,-0x28(%ebp)
564428:	8b 45 0c             	mov    0xc(%ebp),%eax
56442b:	8b 50 1c             	mov    0x1c(%eax),%edx
56442e:	8b 42 04             	mov    0x4(%edx),%eax
564431:	83 c0 04             	add    $0x4,%eax
564434:	89 45 cc             	mov    %eax,-0x34(%ebp)
564437:	8b 55 08             	mov    0x8(%ebp),%edx
56443a:	8b 4a 1c             	mov    0x1c(%edx),%ecx
56443d:	8b 01                	mov    (%ecx),%eax
56443f:	89 45 bc             	mov    %eax,-0x44(%ebp)
564442:	8b 55 e4             	mov    -0x1c(%ebp),%edx
564445:	89 55 f4             	mov    %edx,-0xc(%ebp)
564448:	8b 4d f4             	mov    -0xc(%ebp),%ecx
56444b:	85 c9                	test   %ecx,%ecx
56444d:	0f 8e 7f 03 00 00    	jle    0x5647d2
564453:	8b 45 cc             	mov    -0x34(%ebp),%eax
564456:	89 45 c8             	mov    %eax,-0x38(%ebp)
564459:	8b 55 bc             	mov    -0x44(%ebp),%edx
56445c:	89 55 b8             	mov    %edx,-0x48(%ebp)
56445f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
564462:	83 f9 04             	cmp    $0x4,%ecx
564465:	7d 05                	jge    0x56446c
564467:	8b 45 f4             	mov    -0xc(%ebp),%eax
56446a:	eb 05                	jmp    0x564471
56446c:	b8 04 00 00 00       	mov    $0x4,%eax
564471:	89 45 ec             	mov    %eax,-0x14(%ebp)
564474:	8b 55 e8             	mov    -0x18(%ebp),%edx
564477:	89 55 f0             	mov    %edx,-0x10(%ebp)
56447a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
56447d:	85 c9                	test   %ecx,%ecx
56447f:	0f 8e 2c 03 00 00    	jle    0x5647b1
564485:	8b 75 c8             	mov    -0x38(%ebp),%esi
564488:	8b 7d b8             	mov    -0x48(%ebp),%edi
56448b:	8b 45 ec             	mov    -0x14(%ebp),%eax
56448e:	89 45 b4             	mov    %eax,-0x4c(%ebp)
564491:	8b 06                	mov    (%esi),%eax
564493:	8b d0                	mov    %eax,%edx
564495:	81 e2 00 50 00 00    	and    $0x5000,%edx
56449b:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
5644a1:	0f 85 96 00 00 00    	jne    0x56453d
5644a7:	8b c8                	mov    %eax,%ecx
5644a9:	81 e1 ff 00 00 00    	and    $0xff,%ecx
5644af:	f6 c4 20             	test   $0x20,%ah
5644b2:	0f 95 c0             	setne  %al
5644b5:	83 e0 01             	and    $0x1,%eax
5644b8:	c1 e0 0b             	shl    $0xb,%eax
5644bb:	0b c8                	or     %eax,%ecx
5644bd:	8b 14 8d 1c cc 6a 00 	mov    0x6acc1c(,%ecx,4),%edx
5644c4:	8b 4b 10             	mov    0x10(%ebx),%ecx
5644c7:	c1 e2 02             	shl    $0x2,%edx
5644ca:	03 d1                	add    %ecx,%edx
5644cc:	89 53 0c             	mov    %edx,0xc(%ebx)
5644cf:	8b 43 0c             	mov    0xc(%ebx),%eax
5644d2:	8b 10                	mov    (%eax),%edx
5644d4:	0f b7 0a             	movzwl (%edx),%ecx
5644d7:	29 4b 04             	sub    %ecx,0x4(%ebx)
5644da:	8b 53 0c             	mov    0xc(%ebx),%edx
5644dd:	8b 03                	mov    (%ebx),%eax
5644df:	c1 e8 10             	shr    $0x10,%eax
5644e2:	8b 0a                	mov    (%edx),%ecx
5644e4:	0f b7 11             	movzwl (%ecx),%edx
5644e7:	3b c2                	cmp    %edx,%eax
5644e9:	72 27                	jb     0x564512
5644eb:	8b 43 0c             	mov    0xc(%ebx),%eax
5644ee:	8b 08                	mov    (%eax),%ecx
5644f0:	0f b7 01             	movzwl (%ecx),%eax
5644f3:	c1 e0 10             	shl    $0x10,%eax
5644f6:	29 03                	sub    %eax,(%ebx)
5644f8:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
5644fc:	74 0b                	je     0x564509
5644fe:	8b 53 0c             	mov    0xc(%ebx),%edx
564501:	8b 0a                	mov    (%edx),%ecx
564503:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
564507:	eb 10                	jmp    0x564519
564509:	8b c3                	mov    %ebx,%eax
56450b:	e8 a0 d7 00 00       	call   0x571cb0
564510:	eb 07                	jmp    0x564519
564512:	8b c3                	mov    %ebx,%eax
564514:	e8 b7 d8 00 00       	call   0x571dd0
564519:	85 c0                	test   %eax,%eax
56451b:	74 05                	je     0x564522
56451d:	8b 55 dc             	mov    -0x24(%ebp),%edx
564520:	eb 03                	jmp    0x564525
564522:	8b 55 d8             	mov    -0x28(%ebp),%edx
564525:	8b c2                	mov    %edx,%eax
564527:	8b 0f                	mov    (%edi),%ecx
564529:	85 c9                	test   %ecx,%ecx
56452b:	7d 06                	jge    0x564533
56452d:	8b d0                	mov    %eax,%edx
56452f:	f7 da                	neg    %edx
564531:	eb 02                	jmp    0x564535
564533:	8b d0                	mov    %eax,%edx
564535:	01 17                	add    %edx,(%edi)
564537:	81 0e 00 20 00 00    	orl    $0x2000,(%esi)
56453d:	ff 4d b4             	decl   -0x4c(%ebp)
564540:	8b 45 b4             	mov    -0x4c(%ebp),%eax
564543:	85 c0                	test   %eax,%eax
564545:	0f 8e 50 02 00 00    	jle    0x56479b
56454b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
56454e:	8b 45 c4             	mov    -0x3c(%ebp),%eax
564551:	c1 e1 02             	shl    $0x2,%ecx
564554:	c1 e0 02             	shl    $0x2,%eax
564557:	03 f1                	add    %ecx,%esi
564559:	03 f8                	add    %eax,%edi
56455b:	8b 06                	mov    (%esi),%eax
56455d:	8b d0                	mov    %eax,%edx
56455f:	81 e2 00 50 00 00    	and    $0x5000,%edx
564565:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
56456b:	0f 85 96 00 00 00    	jne    0x564607
564571:	8b c8                	mov    %eax,%ecx
564573:	81 e1 ff 00 00 00    	and    $0xff,%ecx
564579:	f6 c4 20             	test   $0x20,%ah
56457c:	0f 95 c0             	setne  %al
56457f:	83 e0 01             	and    $0x1,%eax
564582:	c1 e0 0b             	shl    $0xb,%eax
564585:	0b c8                	or     %eax,%ecx
564587:	8b 14 8d 1c cc 6a 00 	mov    0x6acc1c(,%ecx,4),%edx
56458e:	8b 4b 10             	mov    0x10(%ebx),%ecx
564591:	c1 e2 02             	shl    $0x2,%edx
564594:	03 d1                	add    %ecx,%edx
564596:	89 53 0c             	mov    %edx,0xc(%ebx)
564599:	8b 43 0c             	mov    0xc(%ebx),%eax
56459c:	8b 10                	mov    (%eax),%edx
56459e:	0f b7 0a             	movzwl (%edx),%ecx
5645a1:	29 4b 04             	sub    %ecx,0x4(%ebx)
5645a4:	8b 53 0c             	mov    0xc(%ebx),%edx
5645a7:	8b 03                	mov    (%ebx),%eax
5645a9:	c1 e8 10             	shr    $0x10,%eax
5645ac:	8b 0a                	mov    (%edx),%ecx
5645ae:	0f b7 11             	movzwl (%ecx),%edx
5645b1:	3b c2                	cmp    %edx,%eax
5645b3:	72 27                	jb     0x5645dc
5645b5:	8b 43 0c             	mov    0xc(%ebx),%eax
5645b8:	8b 08                	mov    (%eax),%ecx
5645ba:	0f b7 01             	movzwl (%ecx),%eax
5645bd:	c1 e0 10             	shl    $0x10,%eax
5645c0:	29 03                	sub    %eax,(%ebx)
5645c2:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
5645c6:	74 0b                	je     0x5645d3
5645c8:	8b 53 0c             	mov    0xc(%ebx),%edx
5645cb:	8b 0a                	mov    (%edx),%ecx
5645cd:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
5645d1:	eb 10                	jmp    0x5645e3
5645d3:	8b c3                	mov    %ebx,%eax
5645d5:	e8 d6 d6 00 00       	call   0x571cb0
5645da:	eb 07                	jmp    0x5645e3
5645dc:	8b c3                	mov    %ebx,%eax
5645de:	e8 ed d7 00 00       	call   0x571dd0
5645e3:	85 c0                	test   %eax,%eax
5645e5:	74 05                	je     0x5645ec
5645e7:	8b 55 dc             	mov    -0x24(%ebp),%edx
5645ea:	eb 03                	jmp    0x5645ef
5645ec:	8b 55 d8             	mov    -0x28(%ebp),%edx
5645ef:	8b c2                	mov    %edx,%eax
5645f1:	8b 0f                	mov    (%edi),%ecx
5645f3:	85 c9                	test   %ecx,%ecx
5645f5:	7d 06                	jge    0x5645fd
5645f7:	8b d0                	mov    %eax,%edx
5645f9:	f7 da                	neg    %edx
5645fb:	eb 02                	jmp    0x5645ff
5645fd:	8b d0                	mov    %eax,%edx
5645ff:	01 17                	add    %edx,(%edi)
564601:	81 0e 00 20 00 00    	orl    $0x2000,(%esi)
564607:	ff 4d b4             	decl   -0x4c(%ebp)
56460a:	8b 45 b4             	mov    -0x4c(%ebp),%eax
56460d:	85 c0                	test   %eax,%eax
56460f:	0f 8e 86 01 00 00    	jle    0x56479b
564615:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
564618:	8b 45 c4             	mov    -0x3c(%ebp),%eax
56461b:	c1 e1 02             	shl    $0x2,%ecx
56461e:	c1 e0 02             	shl    $0x2,%eax
564621:	03 f1                	add    %ecx,%esi
564623:	03 f8                	add    %eax,%edi
564625:	8b 06                	mov    (%esi),%eax
564627:	8b d0                	mov    %eax,%edx
564629:	81 e2 00 50 00 00    	and    $0x5000,%edx
56462f:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
564635:	0f 85 96 00 00 00    	jne    0x5646d1
56463b:	8b c8                	mov    %eax,%ecx
56463d:	81 e1 ff 00 00 00    	and    $0xff,%ecx
564643:	f6 c4 20             	test   $0x20,%ah
564646:	0f 95 c0             	setne  %al
564649:	83 e0 01             	and    $0x1,%eax
56464c:	c1 e0 0b             	shl    $0xb,%eax
56464f:	0b c8                	or     %eax,%ecx
564651:	8b 14 8d 1c cc 6a 00 	mov    0x6acc1c(,%ecx,4),%edx
564658:	8b 4b 10             	mov    0x10(%ebx),%ecx
56465b:	c1 e2 02             	shl    $0x2,%edx
56465e:	03 d1                	add    %ecx,%edx
564660:	89 53 0c             	mov    %edx,0xc(%ebx)
564663:	8b 43 0c             	mov    0xc(%ebx),%eax
564666:	8b 10                	mov    (%eax),%edx
564668:	0f b7 0a             	movzwl (%edx),%ecx
56466b:	29 4b 04             	sub    %ecx,0x4(%ebx)
56466e:	8b 53 0c             	mov    0xc(%ebx),%edx
564671:	8b 03                	mov    (%ebx),%eax
564673:	c1 e8 10             	shr    $0x10,%eax
564676:	8b 0a                	mov    (%edx),%ecx
564678:	0f b7 11             	movzwl (%ecx),%edx
56467b:	3b c2                	cmp    %edx,%eax
56467d:	72 27                	jb     0x5646a6
56467f:	8b 43 0c             	mov    0xc(%ebx),%eax
564682:	8b 08                	mov    (%eax),%ecx
564684:	0f b7 01             	movzwl (%ecx),%eax
564687:	c1 e0 10             	shl    $0x10,%eax
56468a:	29 03                	sub    %eax,(%ebx)
56468c:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
564690:	74 0b                	je     0x56469d
564692:	8b 53 0c             	mov    0xc(%ebx),%edx
564695:	8b 0a                	mov    (%edx),%ecx
564697:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
56469b:	eb 10                	jmp    0x5646ad
56469d:	8b c3                	mov    %ebx,%eax
56469f:	e8 0c d6 00 00       	call   0x571cb0
5646a4:	eb 07                	jmp    0x5646ad
5646a6:	8b c3                	mov    %ebx,%eax
5646a8:	e8 23 d7 00 00       	call   0x571dd0
5646ad:	85 c0                	test   %eax,%eax
5646af:	74 05                	je     0x5646b6
5646b1:	8b 55 dc             	mov    -0x24(%ebp),%edx
5646b4:	eb 03                	jmp    0x5646b9
5646b6:	8b 55 d8             	mov    -0x28(%ebp),%edx
5646b9:	8b c2                	mov    %edx,%eax
5646bb:	8b 0f                	mov    (%edi),%ecx
5646bd:	85 c9                	test   %ecx,%ecx
5646bf:	7d 06                	jge    0x5646c7
5646c1:	8b d0                	mov    %eax,%edx
5646c3:	f7 da                	neg    %edx
5646c5:	eb 02                	jmp    0x5646c9
5646c7:	8b d0                	mov    %eax,%edx
5646c9:	01 17                	add    %edx,(%edi)
5646cb:	81 0e 00 20 00 00    	orl    $0x2000,(%esi)
5646d1:	ff 4d b4             	decl   -0x4c(%ebp)
5646d4:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5646d7:	85 c0                	test   %eax,%eax
5646d9:	0f 8e bc 00 00 00    	jle    0x56479b
5646df:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5646e2:	8b 45 c4             	mov    -0x3c(%ebp),%eax
5646e5:	c1 e1 02             	shl    $0x2,%ecx
5646e8:	c1 e0 02             	shl    $0x2,%eax
5646eb:	03 f1                	add    %ecx,%esi
5646ed:	03 f8                	add    %eax,%edi
5646ef:	8b 06                	mov    (%esi),%eax
5646f1:	8b d0                	mov    %eax,%edx
5646f3:	81 e2 00 50 00 00    	and    $0x5000,%edx
5646f9:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
5646ff:	0f 85 96 00 00 00    	jne    0x56479b
564705:	8b c8                	mov    %eax,%ecx
564707:	81 e1 ff 00 00 00    	and    $0xff,%ecx
56470d:	f6 c4 20             	test   $0x20,%ah
564710:	0f 95 c0             	setne  %al
564713:	83 e0 01             	and    $0x1,%eax
564716:	c1 e0 0b             	shl    $0xb,%eax
564719:	0b c8                	or     %eax,%ecx
56471b:	8b 14 8d 1c cc 6a 00 	mov    0x6acc1c(,%ecx,4),%edx
564722:	8b 4b 10             	mov    0x10(%ebx),%ecx
564725:	c1 e2 02             	shl    $0x2,%edx
564728:	03 d1                	add    %ecx,%edx
56472a:	89 53 0c             	mov    %edx,0xc(%ebx)
56472d:	8b 43 0c             	mov    0xc(%ebx),%eax
564730:	8b 10                	mov    (%eax),%edx
564732:	0f b7 0a             	movzwl (%edx),%ecx
564735:	29 4b 04             	sub    %ecx,0x4(%ebx)
564738:	8b 53 0c             	mov    0xc(%ebx),%edx
56473b:	8b 03                	mov    (%ebx),%eax
56473d:	c1 e8 10             	shr    $0x10,%eax
564740:	8b 0a                	mov    (%edx),%ecx
564742:	0f b7 11             	movzwl (%ecx),%edx
564745:	3b c2                	cmp    %edx,%eax
564747:	72 27                	jb     0x564770
564749:	8b 43 0c             	mov    0xc(%ebx),%eax
56474c:	8b 08                	mov    (%eax),%ecx
56474e:	0f b7 01             	movzwl (%ecx),%eax
564751:	c1 e0 10             	shl    $0x10,%eax
564754:	29 03                	sub    %eax,(%ebx)
564756:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
56475a:	74 0b                	je     0x564767
56475c:	8b 53 0c             	mov    0xc(%ebx),%edx
56475f:	8b 0a                	mov    (%edx),%ecx
564761:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
564765:	eb 10                	jmp    0x564777
564767:	8b c3                	mov    %ebx,%eax
564769:	e8 42 d5 00 00       	call   0x571cb0
56476e:	eb 07                	jmp    0x564777
564770:	8b c3                	mov    %ebx,%eax
564772:	e8 59 d6 00 00       	call   0x571dd0
564777:	85 c0                	test   %eax,%eax
564779:	74 05                	je     0x564780
56477b:	8b 55 dc             	mov    -0x24(%ebp),%edx
56477e:	eb 03                	jmp    0x564783
564780:	8b 55 d8             	mov    -0x28(%ebp),%edx
564783:	8b c2                	mov    %edx,%eax
564785:	8b 0f                	mov    (%edi),%ecx
564787:	85 c9                	test   %ecx,%ecx
564789:	7d 06                	jge    0x564791
56478b:	8b d0                	mov    %eax,%edx
56478d:	f7 da                	neg    %edx
56478f:	eb 02                	jmp    0x564793
564791:	8b d0                	mov    %eax,%edx
564793:	01 17                	add    %edx,(%edi)
564795:	81 0e 00 20 00 00    	orl    $0x2000,(%esi)
56479b:	ff 4d f0             	decl   -0x10(%ebp)
56479e:	83 45 c8 04          	addl   $0x4,-0x38(%ebp)
5647a2:	83 45 b8 04          	addl   $0x4,-0x48(%ebp)
5647a6:	8b 45 f0             	mov    -0x10(%ebp),%eax
5647a9:	85 c0                	test   %eax,%eax