5f557f:	53                   	push   %ebx
5f5580:	52                   	push   %edx
5f5581:	57                   	push   %edi
5f5582:	e8 11 dd ff ff       	call   0x5f3298
5f5587:	83 c4 18             	add    $0x18,%esp
5f558a:	5f                   	pop    %edi
5f558b:	5e                   	pop    %esi
5f558c:	5b                   	pop    %ebx
5f558d:	c9                   	leave
5f558e:	c3                   	ret
5f558f:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
5f5593:	74 09                	je     0x5f559e
5f5595:	83 c8 ff             	or     $0xffffffff,%eax
5f5598:	ba ff ff 0f 00       	mov    $0xfffff,%edx
5f559d:	c3                   	ret
5f559e:	b8 ff ff 7f 00       	mov    $0x7fffff,%eax
5f55a3:	33 d2                	xor    %edx,%edx
5f55a5:	c3                   	ret
5f55a6:	cc                   	int3
5f55a7:	cc                   	int3
5f55a8:	cc                   	int3
5f55a9:	cc                   	int3
5f55aa:	cc                   	int3
5f55ab:	cc                   	int3
5f55ac:	cc                   	int3
5f55ad:	cc                   	int3
5f55ae:	cc                   	int3
5f55af:	cc                   	int3
5f55b0:	8b ff                	mov    %edi,%edi
5f55b2:	55                   	push   %ebp
5f55b3:	8b ec                	mov    %esp,%ebp
5f55b5:	81 ec 1c 02 00 00    	sub    $0x21c,%esp
5f55bb:	53                   	push   %ebx
5f55bc:	8b 5d 08             	mov    0x8(%ebp),%ebx
5f55bf:	56                   	push   %esi
5f55c0:	57                   	push   %edi
5f55c1:	8b 33                	mov    (%ebx),%esi
5f55c3:	85 f6                	test   %esi,%esi
5f55c5:	0f 84 72 04 00 00    	je     0x5f5a3d
5f55cb:	8b 55 0c             	mov    0xc(%ebp),%edx
5f55ce:	8b 02                	mov    (%edx),%eax
5f55d0:	89 45 cc             	mov    %eax,-0x34(%ebp)
5f55d3:	85 c0                	test   %eax,%eax
5f55d5:	0f 84 62 04 00 00    	je     0x5f5a3d
5f55db:	8d 78 ff             	lea    -0x1(%eax),%edi
5f55de:	8d 4e ff             	lea    -0x1(%esi),%ecx
5f55e1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
5f55e4:	85 ff                	test   %edi,%edi
5f55e6:	0f 85 2b 01 00 00    	jne    0x5f5717
5f55ec:	8b 52 04             	mov    0x4(%edx),%edx
5f55ef:	89 55 f8             	mov    %edx,-0x8(%ebp)
5f55f2:	83 fa 01             	cmp    $0x1,%edx
5f55f5:	75 2f                	jne    0x5f5626
5f55f7:	8b 73 04             	mov    0x4(%ebx),%esi
5f55fa:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
5f5600:	57                   	push   %edi
5f5601:	50                   	push   %eax
5f5602:	8d 4b 04             	lea    0x4(%ebx),%ecx
5f5605:	89 bd e4 fd ff ff    	mov    %edi,-0x21c(%ebp)
5f560b:	68 cc 01 00 00       	push   $0x1cc
5f5610:	51                   	push   %ecx
5f5611:	89 3b                	mov    %edi,(%ebx)
5f5613:	e8 79 8b ff ff       	call   0x5ee191
5f5618:	83 c4 10             	add    $0x10,%esp
5f561b:	8b c6                	mov    %esi,%eax
5f561d:	33 d2                	xor    %edx,%edx
5f561f:	5f                   	pop    %edi
5f5620:	5e                   	pop    %esi
5f5621:	5b                   	pop    %ebx
5f5622:	8b e5                	mov    %ebp,%esp
5f5624:	5d                   	pop    %ebp
5f5625:	c3                   	ret
5f5626:	85 c9                	test   %ecx,%ecx
5f5628:	75 40                	jne    0x5f566a
5f562a:	8b 73 04             	mov    0x4(%ebx),%esi
5f562d:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
5f5633:	51                   	push   %ecx
5f5634:	50                   	push   %eax
5f5635:	8d 7b 04             	lea    0x4(%ebx),%edi
5f5638:	89 8d e4 fd ff ff    	mov    %ecx,-0x21c(%ebp)
5f563e:	68 cc 01 00 00       	push   $0x1cc
5f5643:	57                   	push   %edi
5f5644:	89 0b                	mov    %ecx,(%ebx)
5f5646:	e8 46 8b ff ff       	call   0x5ee191
5f564b:	33 d2                	xor    %edx,%edx
5f564d:	8b c6                	mov    %esi,%eax
5f564f:	f7 75 f8             	divl   -0x8(%ebp)
5f5652:	83 c4 10             	add    $0x10,%esp
5f5655:	33 c9                	xor    %ecx,%ecx
5f5657:	3b ca                	cmp    %edx,%ecx
5f5659:	89 17                	mov    %edx,(%edi)
5f565b:	1b c9                	sbb    %ecx,%ecx
5f565d:	5f                   	pop    %edi
5f565e:	f7 d9                	neg    %ecx
5f5660:	33 d2                	xor    %edx,%edx
5f5662:	5e                   	pop    %esi
5f5663:	89 0b                	mov    %ecx,(%ebx)
5f5665:	5b                   	pop    %ebx
5f5666:	8b e5                	mov    %ebp,%esp
5f5668:	5d                   	pop    %ebp
5f5669:	c3                   	ret
5f566a:	33 ff                	xor    %edi,%edi
5f566c:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
5f5673:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
5f567a:	89 7d e8             	mov    %edi,-0x18(%ebp)
5f567d:	83 f9 ff             	cmp    $0xffffffff,%ecx
5f5680:	74 4b                	je     0x5f56cd
5f5682:	41                   	inc    %ecx
5f5683:	8d 0c 8b             	lea    (%ebx,%ecx,4),%ecx
5f5686:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5f5689:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
5f5690:	53                   	push   %ebx
5f5691:	6a 00                	push   $0x0
5f5693:	52                   	push   %edx
5f5694:	33 c0                	xor    %eax,%eax
5f5696:	0b 01                	or     (%ecx),%eax
5f5698:	57                   	push   %edi
5f5699:	50                   	push   %eax
5f569a:	e8 e1 c7 fe ff       	call   0x5e1e80
5f569f:	89 5d e8             	mov    %ebx,-0x18(%ebp)
5f56a2:	5b                   	pop    %ebx
5f56a3:	90                   	nop
5f56a4:	89 55 c0             	mov    %edx,-0x40(%ebp)
5f56a7:	8b f9                	mov    %ecx,%edi
5f56a9:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f56ac:	33 d2                	xor    %edx,%edx
5f56ae:	03 d0                	add    %eax,%edx
5f56b0:	89 55 f4             	mov    %edx,-0xc(%ebp)
5f56b3:	8b 55 f8             	mov    -0x8(%ebp),%edx
5f56b6:	83 d1 00             	adc    $0x0,%ecx
5f56b9:	89 4d dc             	mov    %ecx,-0x24(%ebp)
5f56bc:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
5f56bf:	83 e9 04             	sub    $0x4,%ecx
5f56c2:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
5f56c5:	83 ee 01             	sub    $0x1,%esi
5f56c8:	75 c6                	jne    0x5f5690
5f56ca:	8b 5d 08             	mov    0x8(%ebp),%ebx
5f56cd:	6a 00                	push   $0x0
5f56cf:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
5f56d5:	c7 85 e4 fd ff ff 00 	movl   $0x0,-0x21c(%ebp)
5f56dc:	00 00 00
5f56df:	50                   	push   %eax
5f56e0:	8d 73 04             	lea    0x4(%ebx),%esi
5f56e3:	c7 03 00 00 00 00    	movl   $0x0,(%ebx)
5f56e9:	68 cc 01 00 00       	push   $0x1cc
5f56ee:	56                   	push   %esi
5f56ef:	e8 9d 8a ff ff       	call   0x5ee191
5f56f4:	8b 45 e8             	mov    -0x18(%ebp),%eax
5f56f7:	83 c4 10             	add    $0x10,%esp
5f56fa:	8b 55 dc             	mov    -0x24(%ebp),%edx
5f56fd:	33 c9                	xor    %ecx,%ecx
5f56ff:	3b c8                	cmp    %eax,%ecx
5f5701:	89 3e                	mov    %edi,(%esi)
5f5703:	89 43 08             	mov    %eax,0x8(%ebx)
5f5706:	8b 45 f4             	mov    -0xc(%ebp),%eax
5f5709:	1b c9                	sbb    %ecx,%ecx
5f570b:	f7 d9                	neg    %ecx
5f570d:	5f                   	pop    %edi
5f570e:	41                   	inc    %ecx
5f570f:	5e                   	pop    %esi
5f5710:	89 0b                	mov    %ecx,(%ebx)
5f5712:	5b                   	pop    %ebx
5f5713:	8b e5                	mov    %ebp,%esp
5f5715:	5d                   	pop    %ebp
5f5716:	c3                   	ret
5f5717:	3b f9                	cmp    %ecx,%edi
5f5719:	0f 87 1e 03 00 00    	ja     0x5f5a3d
5f571f:	8b d1                	mov    %ecx,%edx
5f5721:	8b c1                	mov    %ecx,%eax
5f5723:	2b d7                	sub    %edi,%edx
5f5725:	3b ca                	cmp    %edx,%ecx
5f5727:	7c 22                	jl     0x5f574b
5f5729:	8b 75 0c             	mov    0xc(%ebp),%esi
5f572c:	41                   	inc    %ecx
5f572d:	8d 34 be             	lea    (%esi,%edi,4),%esi
5f5730:	8d 0c 8b             	lea    (%ebx,%ecx,4),%ecx
5f5733:	83 c6 04             	add    $0x4,%esi
5f5736:	8b 3e                	mov    (%esi),%edi
5f5738:	3b 39                	cmp    (%ecx),%edi
5f573a:	75 0d                	jne    0x5f5749
5f573c:	48                   	dec    %eax
5f573d:	83 ee 04             	sub    $0x4,%esi
5f5740:	83 e9 04             	sub    $0x4,%ecx
5f5743:	3b c2                	cmp    %edx,%eax
5f5745:	7d ef                	jge    0x5f5736
5f5747:	eb 02                	jmp    0x5f574b
5f5749:	73 01                	jae    0x5f574c
5f574b:	42                   	inc    %edx
5f574c:	85 d2                	test   %edx,%edx
5f574e:	0f 84 e9 02 00 00    	je     0x5f5a3d
5f5754:	8b 45 0c             	mov    0xc(%ebp),%eax
5f5757:	8b 5d cc             	mov    -0x34(%ebp),%ebx
5f575a:	8b 34 98             	mov    (%eax,%ebx,4),%esi
5f575d:	8b 4c 98 fc          	mov    -0x4(%eax,%ebx,4),%ecx
5f5761:	0f bd c6             	bsr    %esi,%eax
5f5764:	89 75 d0             	mov    %esi,-0x30(%ebp)
5f5767:	89 4d e0             	mov    %ecx,-0x20(%ebp)
5f576a:	74 09                	je     0x5f5775
5f576c:	bf 1f 00 00 00       	mov    $0x1f,%edi
5f5771:	2b f8                	sub    %eax,%edi
5f5773:	eb 05                	jmp    0x5f577a
5f5775:	bf 20 00 00 00       	mov    $0x20,%edi
5f577a:	b8 20 00 00 00       	mov    $0x20,%eax
5f577f:	89 7d f4             	mov    %edi,-0xc(%ebp)
5f5782:	2b c7                	sub    %edi,%eax
5f5784:	89 45 d4             	mov    %eax,-0x2c(%ebp)
5f5787:	85 ff                	test   %edi,%edi
5f5789:	74 27                	je     0x5f57b2
5f578b:	8b c1                	mov    %ecx,%eax
5f578d:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5f5790:	d3 e8                	shr    %cl,%eax
5f5792:	8b cf                	mov    %edi,%ecx
5f5794:	d3 65 e0             	shll   %cl,-0x20(%ebp)
5f5797:	d3 e6                	shl    %cl,%esi
5f5799:	0b f0                	or     %eax,%esi
5f579b:	89 75 d0             	mov    %esi,-0x30(%ebp)
5f579e:	83 fb 02             	cmp    $0x2,%ebx
5f57a1:	76 0f                	jbe    0x5f57b2
5f57a3:	8b 75 0c             	mov    0xc(%ebp),%esi
5f57a6:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5f57a9:	8b 44 9e f8          	mov    -0x8(%esi,%ebx,4),%eax
5f57ad:	d3 e8                	shr    %cl,%eax
5f57af:	09 45 e0             	or     %eax,-0x20(%ebp)
5f57b2:	33 f6                	xor    %esi,%esi
5f57b4:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
5f57bb:	83 c2 ff             	add    $0xffffffff,%edx
5f57be:	89 55 e8             	mov    %edx,-0x18(%ebp)
5f57c1:	0f 88 2e 02 00 00    	js     0x5f59f5
5f57c7:	8d 04 1a             	lea    (%edx,%ebx,1),%eax
5f57ca:	8b 5d 08             	mov    0x8(%ebp),%ebx
5f57cd:	89 45 c8             	mov    %eax,-0x38(%ebp)
5f57d0:	8d 4b 04             	lea    0x4(%ebx),%ecx
5f57d3:	8d 0c 91             	lea    (%ecx,%edx,4),%ecx
5f57d6:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
5f57d9:	8d 4b fc             	lea    -0x4(%ebx),%ecx
5f57dc:	8d 0c 81             	lea    (%ecx,%eax,4),%ecx
5f57df:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
5f57e2:	3b 45 f8             	cmp    -0x8(%ebp),%eax
5f57e5:	77 05                	ja     0x5f57ec
5f57e7:	8b 41 08             	mov    0x8(%ecx),%eax
5f57ea:	eb 02                	jmp    0x5f57ee
5f57ec:	33 c0                	xor    %eax,%eax
5f57ee:	8b 51 04             	mov    0x4(%ecx),%edx
5f57f1:	8b 09                	mov    (%ecx),%ecx
5f57f3:	89 45 b8             	mov    %eax,-0x48(%ebp)
5f57f6:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
5f57fd:	89 45 fc             	mov    %eax,-0x4(%ebp)
5f5800:	89 4d ec             	mov    %ecx,-0x14(%ebp)
5f5803:	85 ff                	test   %edi,%edi
5f5805:	74 49                	je     0x5f5850
5f5807:	8b f9                	mov    %ecx,%edi
5f5809:	8b c2                	mov    %edx,%eax
5f580b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5f580e:	33 f6                	xor    %esi,%esi
5f5810:	8b 55 fc             	mov    -0x4(%ebp),%edx
5f5813:	d3 ef                	shr    %cl,%edi
5f5815:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f5818:	e8 73 ca fe ff       	call   0x5e2290
5f581d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5f5820:	0b f2                	or     %edx,%esi
5f5822:	0b f8                	or     %eax,%edi
5f5824:	8b c6                	mov    %esi,%eax
5f5826:	8b 75 ec             	mov    -0x14(%ebp),%esi
5f5829:	8b d7                	mov    %edi,%edx
5f582b:	d3 e6                	shl    %cl,%esi
5f582d:	83 7d c8 03          	cmpl   $0x3,-0x38(%ebp)
5f5831:	89 45 fc             	mov    %eax,-0x4(%ebp)
5f5834:	89 75 ec             	mov    %esi,-0x14(%ebp)
5f5837:	72 17                	jb     0x5f5850
5f5839:	8b 45 cc             	mov    -0x34(%ebp),%eax
5f583c:	03 45 e8             	add    -0x18(%ebp),%eax
5f583f:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5f5842:	8b 44 83 f8          	mov    -0x8(%ebx,%eax,4),%eax
5f5846:	d3 e8                	shr    %cl,%eax
5f5848:	0b f0                	or     %eax,%esi
5f584a:	8b 45 fc             	mov    -0x4(%ebp),%eax
5f584d:	89 75 ec             	mov    %esi,-0x14(%ebp)
5f5850:	53                   	push   %ebx
5f5851:	6a 00                	push   $0x0
5f5853:	ff 75 d0             	push   -0x30(%ebp)
5f5856:	50                   	push   %eax
5f5857:	52                   	push   %edx
5f5858:	e8 23 c6 fe ff       	call   0x5e1e80
5f585d:	89 5d dc             	mov    %ebx,-0x24(%ebp)
5f5860:	5b                   	pop    %ebx
5f5861:	90                   	nop
5f5862:	8b d8                	mov    %eax,%ebx
5f5864:	33 f6                	xor    %esi,%esi
5f5866:	8b c2                	mov    %edx,%eax
5f5868:	89 5d fc             	mov    %ebx,-0x4(%ebp)
5f586b:	89 45 f0             	mov    %eax,-0x10(%ebp)
5f586e:	8b f9                	mov    %ecx,%edi
5f5870:	89 5d bc             	mov    %ebx,-0x44(%ebp)
5f5873:	89 45 c0             	mov    %eax,-0x40(%ebp)
5f5876:	89 75 dc             	mov    %esi,-0x24(%ebp)
5f5879:	85 c0                	test   %eax,%eax
5f587b:	75 05                	jne    0x5f5882
5f587d:	83 fb ff             	cmp    $0xffffffff,%ebx
5f5880:	76 2a                	jbe    0x5f58ac
5f5882:	6a 00                	push   $0x0
5f5884:	ff 75 d0             	push   -0x30(%ebp)
5f5887:	83 c3 01             	add    $0x1,%ebx
5f588a:	83 d0 ff             	adc    $0xffffffff,%eax
5f588d:	50                   	push   %eax
5f588e:	53                   	push   %ebx
5f588f:	e8 6c c2 fe ff       	call   0x5e1b00
5f5894:	03 f8                	add    %eax,%edi
5f5896:	13 f2                	adc    %edx,%esi
5f5898:	83 cb ff             	or     $0xffffffff,%ebx
5f589b:	33 c0                	xor    %eax,%eax
5f589d:	89 75 dc             	mov    %esi,-0x24(%ebp)
5f58a0:	89 5d fc             	mov    %ebx,-0x4(%ebp)
5f58a3:	89 5d bc             	mov    %ebx,-0x44(%ebp)
5f58a6:	89 45 f0             	mov    %eax,-0x10(%ebp)
5f58a9:	89 45 c0             	mov    %eax,-0x40(%ebp)
5f58ac:	85 f6                	test   %esi,%esi
5f58ae:	77 50                	ja     0x5f5900
5f58b0:	72 05                	jb     0x5f58b7
5f58b2:	83 ff ff             	cmp    $0xffffffff,%edi
5f58b5:	77 49                	ja     0x5f5900
5f58b7:	50                   	push   %eax
5f58b8:	53                   	push   %ebx
5f58b9:	33 c9                	xor    %ecx,%ecx
5f58bb:	8b f7                	mov    %edi,%esi
5f58bd:	0b 4d ec             	or     -0x14(%ebp),%ecx
5f58c0:	6a 00                	push   $0x0
5f58c2:	ff 75 e0             	push   -0x20(%ebp)
5f58c5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
5f58c8:	e8 33 c2 fe ff       	call   0x5e1b00
5f58cd:	3b d6                	cmp    %esi,%edx
5f58cf:	72 29                	jb     0x5f58fa
5f58d1:	77 05                	ja     0x5f58d8
5f58d3:	3b 45 fc             	cmp    -0x4(%ebp),%eax
5f58d6:	76 22                	jbe    0x5f58fa
5f58d8:	8b 45 f0             	mov    -0x10(%ebp),%eax
5f58db:	83 c3 ff             	add    $0xffffffff,%ebx
5f58de:	89 5d bc             	mov    %ebx,-0x44(%ebp)
5f58e1:	83 d0 ff             	adc    $0xffffffff,%eax
5f58e4:	03 7d d0             	add    -0x30(%ebp),%edi
5f58e7:	89 45 f0             	mov    %eax,-0x10(%ebp)
5f58ea:	83 55 dc 00          	adcl   $0x0,-0x24(%ebp)
5f58ee:	89 45 c0             	mov    %eax,-0x40(%ebp)
5f58f1:	75 0a                	jne    0x5f58fd
5f58f3:	83 ff ff             	cmp    $0xffffffff,%edi
5f58f6:	76 bf                	jbe    0x5f58b7
5f58f8:	eb 03                	jmp    0x5f58fd
5f58fa:	8b 45 f0             	mov    -0x10(%ebp),%eax
5f58fd:	89 5d fc             	mov    %ebx,-0x4(%ebp)
5f5900:	85 c0                	test   %eax,%eax
5f5902:	75 08                	jne    0x5f590c