591673:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
591677:	75 1b                	jne    0x591694
591679:	6a 00                	push   $0x0
59167b:	ff 74 24 44          	push   0x44(%esp)
59167f:	e8 6c 1e f2 ff       	call   0x4b34f0
591684:	83 c4 08             	add    $0x8,%esp
591687:	c7 44 24 44 01 00 00 	movl   $0x1,0x44(%esp)
59168e:	00
59168f:	e9 f6 03 00 00       	jmp    0x591a8a
591694:	8b 44 24 14          	mov    0x14(%esp),%eax
591698:	ff 74 24 10          	push   0x10(%esp)
59169c:	50                   	push   %eax
59169d:	8d 78 04             	lea    0x4(%eax),%edi
5916a0:	57                   	push   %edi
5916a1:	53                   	push   %ebx
5916a2:	55                   	push   %ebp
5916a3:	89 7c 24 3c          	mov    %edi,0x3c(%esp)
5916a7:	e8 74 f8 fd ff       	call   0x570f20
5916ac:	83 c4 14             	add    $0x14,%esp
5916af:	85 c0                	test   %eax,%eax
5916b1:	0f 84 d3 03 00 00    	je     0x591a8a
5916b7:	8b 5c 24 2c          	mov    0x2c(%esp),%ebx
5916bb:	83 fb 01             	cmp    $0x1,%ebx
5916be:	7e 79                	jle    0x591739
5916c0:	ff 74 24 10          	push   0x10(%esp)
5916c4:	ff 74 24 18          	push   0x18(%esp)
5916c8:	55                   	push   %ebp
5916c9:	55                   	push   %ebp
5916ca:	8b 6c 24 30          	mov    0x30(%esp),%ebp
5916ce:	55                   	push   %ebp
5916cf:	e8 4c f8 fd ff       	call   0x570f20
5916d4:	83 c4 14             	add    $0x14,%esp
5916d7:	85 c0                	test   %eax,%eax
5916d9:	0f 84 ab 03 00 00    	je     0x591a8a
5916df:	8d 4b ff             	lea    -0x1(%ebx),%ecx
5916e2:	bf 01 00 00 00       	mov    $0x1,%edi
5916e7:	d3 e7                	shl    %cl,%edi
5916e9:	be 01 00 00 00       	mov    $0x1,%esi
5916ee:	3b fe                	cmp    %esi,%edi
5916f0:	7e 3f                	jle    0x591731
5916f2:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5916f6:	53                   	push   %ebx
5916f7:	e8 c4 66 f4 ff       	call   0x4d7dc0
5916fc:	83 c4 04             	add    $0x4,%esp
5916ff:	89 84 b4 d8 00 00 00 	mov    %eax,0xd8(%esp,%esi,4)
591706:	85 c0                	test   %eax,%eax
591708:	0f 84 7c 03 00 00    	je     0x591a8a
59170e:	53                   	push   %ebx
59170f:	ff 74 24 18          	push   0x18(%esp)
591713:	55                   	push   %ebp
591714:	ff b4 b4 e0 00 00 00 	push   0xe0(%esp,%esi,4)
59171b:	50                   	push   %eax
59171c:	e8 ff f7 fd ff       	call   0x570f20
591721:	83 c4 14             	add    $0x14,%esp
591724:	85 c0                	test   %eax,%eax
591726:	0f 84 5e 03 00 00    	je     0x591a8a
59172c:	46                   	inc    %esi
59172d:	3b f7                	cmp    %edi,%esi
59172f:	7c c5                	jl     0x5916f6
591731:	8b 7c 24 28          	mov    0x28(%esp),%edi
591735:	8b 74 24 1c          	mov    0x1c(%esp),%esi
591739:	8b 5c 24 3c          	mov    0x3c(%esp),%ebx
59173d:	83 7b 0c 00          	cmpl   $0x0,0xc(%ebx)
591741:	75 14                	jne    0x591757
591743:	56                   	push   %esi
591744:	53                   	push   %ebx
591745:	e8 06 1e f2 ff       	call   0x4b3550
59174a:	83 c4 08             	add    $0x8,%esp
59174d:	85 c0                	test   %eax,%eax
59174f:	79 06                	jns    0x591757
591751:	8b 6c 24 58          	mov    0x58(%esp),%ebp
591755:	eb 1f                	jmp    0x591776
591757:	ff 74 24 10          	push   0x10(%esp)
59175b:	8b 6c 24 5c          	mov    0x5c(%esp),%ebp
59175f:	56                   	push   %esi
591760:	53                   	push   %ebx
591761:	55                   	push   %ebp
591762:	6a 00                	push   $0x0
591764:	e8 37 ec fd ff       	call   0x5703a0
591769:	83 c4 14             	add    $0x14,%esp
59176c:	85 c0                	test   %eax,%eax
59176e:	0f 84 16 03 00 00    	je     0x591a8a
591774:	8b dd                	mov    %ebp,%ebx
591776:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
59177a:	75 1b                	jne    0x591797
59177c:	6a 00                	push   $0x0
59177e:	ff 74 24 44          	push   0x44(%esp)
591782:	e8 69 1d f2 ff       	call   0x4b34f0
591787:	83 c4 08             	add    $0x8,%esp
59178a:	c7 44 24 44 01 00 00 	movl   $0x1,0x44(%esp)
591791:	00
591792:	e9 f3 02 00 00       	jmp    0x591a8a
591797:	ff 74 24 10          	push   0x10(%esp)
59179b:	ff 74 24 18          	push   0x18(%esp)
59179f:	57                   	push   %edi
5917a0:	53                   	push   %ebx
5917a1:	55                   	push   %ebp
5917a2:	e8 79 f7 fd ff       	call   0x570f20
5917a7:	83 c4 14             	add    $0x14,%esp
5917aa:	85 c0                	test   %eax,%eax
5917ac:	0f 84 d8 02 00 00    	je     0x591a8a
5917b2:	8b 74 24 18          	mov    0x18(%esp),%esi
5917b6:	83 fe 01             	cmp    $0x1,%esi
5917b9:	7e 6f                	jle    0x59182a
5917bb:	ff 74 24 10          	push   0x10(%esp)
5917bf:	8b 5c 24 24          	mov    0x24(%esp),%ebx
5917c3:	ff 74 24 18          	push   0x18(%esp)
5917c7:	55                   	push   %ebp
5917c8:	55                   	push   %ebp
5917c9:	53                   	push   %ebx
5917ca:	e8 51 f7 fd ff       	call   0x570f20
5917cf:	83 c4 14             	add    $0x14,%esp
5917d2:	85 c0                	test   %eax,%eax
5917d4:	0f 84 b0 02 00 00    	je     0x591a8a
5917da:	8d 4e ff             	lea    -0x1(%esi),%ecx
5917dd:	bf 01 00 00 00       	mov    $0x1,%edi
5917e2:	d3 e7                	shl    %cl,%edi
5917e4:	be 01 00 00 00       	mov    $0x1,%esi
5917e9:	3b fe                	cmp    %esi,%edi
5917eb:	7e 39                	jle    0x591826
5917ed:	8b 6c 24 10          	mov    0x10(%esp),%ebp
5917f1:	55                   	push   %ebp
5917f2:	e8 c9 65 f4 ff       	call   0x4d7dc0
5917f7:	83 c4 04             	add    $0x4,%esp
5917fa:	89 44 b4 58          	mov    %eax,0x58(%esp,%esi,4)
5917fe:	85 c0                	test   %eax,%eax
591800:	0f 84 84 02 00 00    	je     0x591a8a
591806:	55                   	push   %ebp
591807:	ff 74 24 18          	push   0x18(%esp)
59180b:	53                   	push   %ebx
59180c:	ff 74 b4 60          	push   0x60(%esp,%esi,4)
591810:	50                   	push   %eax
591811:	e8 0a f7 fd ff       	call   0x570f20
591816:	83 c4 14             	add    $0x14,%esp
591819:	85 c0                	test   %eax,%eax
59181b:	0f 84 69 02 00 00    	je     0x591a8a
591821:	46                   	inc    %esi
591822:	3b f7                	cmp    %edi,%esi
591824:	7c cb                	jl     0x5917f1
591826:	8b 74 24 18          	mov    0x18(%esp),%esi
59182a:	ff 74 24 10          	push   0x10(%esp)
59182e:	33 db                	xor    %ebx,%ebx
591830:	c7 44 24 24 01 00 00 	movl   $0x1,0x24(%esp)
591837:	00
591838:	ff 74 24 18          	push   0x18(%esp)
59183c:	33 ff                	xor    %edi,%edi
59183e:	89 5c 24 40          	mov    %ebx,0x40(%esp)
591842:	ff 74 24 30          	push   0x30(%esp)
591846:	33 ed                	xor    %ebp,%ebp
591848:	89 7c 24 40          	mov    %edi,0x40(%esp)
59184c:	89 5c 24 3c          	mov    %ebx,0x3c(%esp)
591850:	89 6c 24 48          	mov    %ebp,0x48(%esp)
591854:	e8 47 1d f2 ff       	call   0x4b35a0
591859:	50                   	push   %eax
59185a:	ff 74 24 34          	push   0x34(%esp)
59185e:	e8 bd f6 fd ff       	call   0x570f20
591863:	83 c4 14             	add    $0x14,%esp
591866:	85 c0                	test   %eax,%eax
591868:	0f 84 1c 02 00 00    	je     0x591a8a
59186e:	8b 44 24 4c          	mov    0x4c(%esp),%eax
591872:	83 c0 ff             	add    $0xffffffff,%eax
591875:	89 44 24 18          	mov    %eax,0x18(%esp)
591879:	0f 88 e3 01 00 00    	js     0x591a62
59187f:	48                   	dec    %eax
591880:	89 44 24 1c          	mov    %eax,0x1c(%esp)
591884:	8b c6                	mov    %esi,%eax
591886:	2b 44 24 2c          	sub    0x2c(%esp),%eax
59188a:	89 44 24 4c          	mov    %eax,0x4c(%esp)
59188e:	b8 02 00 00 00       	mov    $0x2,%eax
591893:	2b c6                	sub    %esi,%eax
591895:	8b 74 24 18          	mov    0x18(%esp),%esi
591899:	89 44 24 28          	mov    %eax,0x28(%esp)
59189d:	b8 01 00 00 00       	mov    $0x1,%eax
5918a2:	85 c0                	test   %eax,%eax
5918a4:	75 1f                	jne    0x5918c5
5918a6:	ff 74 24 10          	push   0x10(%esp)
5918aa:	8b 44 24 28          	mov    0x28(%esp),%eax
5918ae:	ff 74 24 18          	push   0x18(%esp)
5918b2:	50                   	push   %eax
5918b3:	50                   	push   %eax
5918b4:	50                   	push   %eax
5918b5:	e8 66 f6 fd ff       	call   0x570f20
5918ba:	83 c4 14             	add    $0x14,%esp
5918bd:	85 c0                	test   %eax,%eax
5918bf:	0f 84 c5 01 00 00    	je     0x591a8a
5918c5:	85 ff                	test   %edi,%edi
5918c7:	0f 85 8d 00 00 00    	jne    0x59195a
5918cd:	56                   	push   %esi
5918ce:	ff 74 24 4c          	push   0x4c(%esp)
5918d2:	e8 69 19 f2 ff       	call   0x4b3240
5918d7:	83 c4 08             	add    $0x8,%esp
5918da:	85 c0                	test   %eax,%eax
5918dc:	0f 84 78 00 00 00    	je     0x59195a
5918e2:	8b 74 24 28          	mov    0x28(%esp),%esi
5918e6:	03 74 24 4c          	add    0x4c(%esp),%esi
5918ea:	03 74 24 1c          	add    0x1c(%esp),%esi
5918ee:	8b 7c 24 48          	mov    0x48(%esp),%edi
5918f2:	56                   	push   %esi
5918f3:	57                   	push   %edi
5918f4:	89 74 24 38          	mov    %esi,0x38(%esp)
5918f8:	e8 43 19 f2 ff       	call   0x4b3240
5918fd:	83 c4 08             	add    $0x8,%esp
591900:	85 c0                	test   %eax,%eax
591902:	75 13                	jne    0x591917
591904:	46                   	inc    %esi
591905:	56                   	push   %esi
591906:	57                   	push   %edi
591907:	e8 34 19 f2 ff       	call   0x4b3240
59190c:	83 c4 08             	add    $0x8,%esp
59190f:	85 c0                	test   %eax,%eax
591911:	74 f1                	je     0x591904
591913:	89 74 24 30          	mov    %esi,0x30(%esp)
591917:	8b 44 24 1c          	mov    0x1c(%esp),%eax
59191b:	bf 01 00 00 00       	mov    $0x1,%edi
591920:	8b f0                	mov    %eax,%esi
591922:	89 7c 24 34          	mov    %edi,0x34(%esp)
591926:	3b 44 24 30          	cmp    0x30(%esp),%eax
59192a:	7c 2a                	jl     0x591956
59192c:	8b 6c 24 30          	mov    0x30(%esp),%ebp
591930:	8b 5c 24 48          	mov    0x48(%esp),%ebx
591934:	56                   	push   %esi
591935:	53                   	push   %ebx
591936:	03 ff                	add    %edi,%edi
591938:	e8 03 19 f2 ff       	call   0x4b3240
59193d:	83 c4 08             	add    $0x8,%esp
591940:	85 c0                	test   %eax,%eax
591942:	74 01                	je     0x591945
591944:	47                   	inc    %edi
591945:	4e                   	dec    %esi
591946:	3b f5                	cmp    %ebp,%esi
591948:	7d ea                	jge    0x591934
59194a:	8b 5c 24 38          	mov    0x38(%esp),%ebx
59194e:	8b 6c 24 3c          	mov    0x3c(%esp),%ebp
591952:	89 7c 24 34          	mov    %edi,0x34(%esp)
591956:	8b 74 24 18          	mov    0x18(%esp),%esi
59195a:	85 db                	test   %ebx,%ebx
59195c:	75 78                	jne    0x5919d6
59195e:	56                   	push   %esi
59195f:	8b 74 24 54          	mov    0x54(%esp),%esi
591963:	56                   	push   %esi
591964:	e8 d7 18 f2 ff       	call   0x4b3240
591969:	83 c4 08             	add    $0x8,%esp
59196c:	85 c0                	test   %eax,%eax
59196e:	74 66                	je     0x5919d6
591970:	8b 6c 24 28          	mov    0x28(%esp),%ebp
591974:	03 6c 24 1c          	add    0x1c(%esp),%ebp
591978:	55                   	push   %ebp
591979:	56                   	push   %esi
59197a:	89 6c 24 44          	mov    %ebp,0x44(%esp)
59197e:	e8 bd 18 f2 ff       	call   0x4b3240
591983:	83 c4 08             	add    $0x8,%esp
591986:	85 c0                	test   %eax,%eax
591988:	75 19                	jne    0x5919a3
59198a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
591990:	45                   	inc    %ebp
591991:	55                   	push   %ebp
591992:	56                   	push   %esi
591993:	e8 a8 18 f2 ff       	call   0x4b3240
591998:	83 c4 08             	add    $0x8,%esp
59199b:	85 c0                	test   %eax,%eax
59199d:	74 f1                	je     0x591990
59199f:	89 6c 24 3c          	mov    %ebp,0x3c(%esp)
5919a3:	8b 74 24 1c          	mov    0x1c(%esp),%esi
5919a7:	bb 01 00 00 00       	mov    $0x1,%ebx
5919ac:	89 5c 24 38          	mov    %ebx,0x38(%esp)
5919b0:	3b f5                	cmp    %ebp,%esi
5919b2:	7c 22                	jl     0x5919d6
5919b4:	8b 7c 24 50          	mov    0x50(%esp),%edi
5919b8:	56                   	push   %esi
5919b9:	57                   	push   %edi
5919ba:	03 db                	add    %ebx,%ebx
5919bc:	e8 7f 18 f2 ff       	call   0x4b3240
5919c1:	83 c4 08             	add    $0x8,%esp
5919c4:	85 c0                	test   %eax,%eax
5919c6:	74 01                	je     0x5919c9
5919c8:	43                   	inc    %ebx
5919c9:	4e                   	dec    %esi
5919ca:	3b f5                	cmp    %ebp,%esi
5919cc:	7d ea                	jge    0x5919b8
5919ce:	8b 7c 24 34          	mov    0x34(%esp),%edi
5919d2:	89 5c 24 38          	mov    %ebx,0x38(%esp)
5919d6:	8b 74 24 18          	mov    0x18(%esp),%esi
5919da:	85 ff                	test   %edi,%edi
5919dc:	74 3b                	je     0x591a19
5919de:	3b 74 24 30          	cmp    0x30(%esp),%esi
5919e2:	75 35                	jne    0x591a19
5919e4:	ff 74 24 10          	push   0x10(%esp)
5919e8:	8b 44 24 28          	mov    0x28(%esp),%eax
5919ec:	ff 74 24 18          	push   0x18(%esp)
5919f0:	d1 ff                	sar    $1,%edi
5919f2:	ff b4 bc e0 00 00 00 	push   0xe0(%esp,%edi,4)
5919f9:	50                   	push   %eax
5919fa:	50                   	push   %eax
5919fb:	e8 20 f5 fd ff       	call   0x570f20
591a00:	83 c4 14             	add    $0x14,%esp
591a03:	85 c0                	test   %eax,%eax
591a05:	0f 84 7f 00 00 00    	je     0x591a8a
591a0b:	33 ff                	xor    %edi,%edi
591a0d:	33 c0                	xor    %eax,%eax
591a0f:	89 7c 24 34          	mov    %edi,0x34(%esp)
591a13:	89 44 24 20          	mov    %eax,0x20(%esp)
591a17:	eb 04                	jmp    0x591a1d
591a19:	8b 44 24 20          	mov    0x20(%esp),%eax
591a1d:	85 db                	test   %ebx,%ebx
591a1f:	74 30                	je     0x591a51
591a21:	3b f5                	cmp    %ebp,%esi
591a23:	75 2c                	jne    0x591a51
591a25:	ff 74 24 10          	push   0x10(%esp)
591a29:	8b 44 24 28          	mov    0x28(%esp),%eax
591a2d:	ff 74 24 18          	push   0x18(%esp)
591a31:	d1 fb                	sar    $1,%ebx
591a33:	ff 74 9c 60          	push   0x60(%esp,%ebx,4)
591a37:	50                   	push   %eax
591a38:	50                   	push   %eax
591a39:	e8 e2 f4 fd ff       	call   0x570f20
591a3e:	83 c4 14             	add    $0x14,%esp
591a41:	85 c0                	test   %eax,%eax
591a43:	74 45                	je     0x591a8a
591a45:	33 db                	xor    %ebx,%ebx
591a47:	33 c0                	xor    %eax,%eax
591a49:	89 5c 24 38          	mov    %ebx,0x38(%esp)
591a4d:	89 44 24 20          	mov    %eax,0x20(%esp)
591a51:	ff 4c 24 1c          	decl   0x1c(%esp)
591a55:	4e                   	dec    %esi
591a56:	89 74 24 18          	mov    %esi,0x18(%esp)
591a5a:	85 f6                	test   %esi,%esi
591a5c:	0f 89 40 fe ff ff    	jns    0x5918a2
591a62:	ff 74 24 10          	push   0x10(%esp)
591a66:	ff 74 24 18          	push   0x18(%esp)
591a6a:	ff 74 24 2c          	push   0x2c(%esp)
591a6e:	ff 74 24 4c          	push   0x4c(%esp)
591a72:	e8 a9 f1 fd ff       	call   0x570c20
591a77:	33 c9                	xor    %ecx,%ecx
591a79:	83 c4 10             	add    $0x10,%esp
591a7c:	85 c0                	test   %eax,%eax
591a7e:	b8 01 00 00 00       	mov    $0x1,%eax
591a83:	0f 45 c8             	cmovne %eax,%ecx
591a86:	89 4c 24 44          	mov    %ecx,0x44(%esp)
591a8a:	83 7c 24 54 00       	cmpl   $0x0,0x54(%esp)
591a8f:	75 11                	jne    0x591aa2
591a91:	8b 44 24 14          	mov    0x14(%esp),%eax
591a95:	85 c0                	test   %eax,%eax
591a97:	74 09                	je     0x591aa2
591a99:	50                   	push   %eax
591a9a:	e8 a1 ee fd ff       	call   0x570940
591a9f:	83 c4 04             	add    $0x4,%esp
591aa2:	ff 74 24 10          	push   0x10(%esp)
591aa6:	e8 a5 62 f4 ff       	call   0x4d7d50
591aab:	8b 44 24 48          	mov    0x48(%esp),%eax
591aaf:	83 c4 04             	add    $0x4,%esp