58d812:	8b 7c 24 0c          	mov    0xc(%esp),%edi
58d816:	85 ff                	test   %edi,%edi
58d818:	74 06                	je     0x58d820
58d81a:	8b 37                	mov    (%edi),%esi
58d81c:	85 f6                	test   %esi,%esi
58d81e:	75 0b                	jne    0x58d82b
58d820:	e8 cb 48 00 00       	call   0x5920f0
58d825:	8b f0                	mov    %eax,%esi
58d827:	85 f6                	test   %esi,%esi
58d829:	74 79                	je     0x58d8a4
58d82b:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
58d830:	74 49                	je     0x58d87b
58d832:	ff 36                	push   (%esi)
58d834:	e8 c7 95 f1 ff       	call   0x4a6e00
58d839:	ff 74 24 14          	push   0x14(%esp)
58d83d:	e8 2e 4a f2 ff       	call   0x4b2270
58d842:	33 c9                	xor    %ecx,%ecx
58d844:	89 06                	mov    %eax,(%esi)
58d846:	83 c4 08             	add    $0x8,%esp
58d849:	85 c0                	test   %eax,%eax
58d84b:	0f 95 c1             	setne  %cl
58d84e:	85 c9                	test   %ecx,%ecx
58d850:	74 41                	je     0x58d893
58d852:	ff 74 24 1c          	push   0x1c(%esp)
58d856:	ff 74 24 1c          	push   0x1c(%esp)
58d85a:	ff 74 24 1c          	push   0x1c(%esp)
58d85e:	56                   	push   %esi
58d85f:	e8 cc 00 00 00       	call   0x58d930
58d864:	83 c4 10             	add    $0x10,%esp
58d867:	85 c0                	test   %eax,%eax
58d869:	74 28                	je     0x58d893
58d86b:	85 ff                	test   %edi,%edi
58d86d:	74 07                	je     0x58d876
58d86f:	83 3f 00             	cmpl   $0x0,(%edi)
58d872:	75 02                	jne    0x58d876
58d874:	89 37                	mov    %esi,(%edi)
58d876:	5f                   	pop    %edi
58d877:	8b c6                	mov    %esi,%eax
58d879:	5e                   	pop    %esi
58d87a:	c3                   	ret
58d87b:	68 60 01 00 00       	push   $0x160
58d880:	68 b8 6b 6c 00       	push   $0x6c6bb8
58d885:	6a 43                	push   $0x43
58d887:	6a 73                	push   $0x73
58d889:	6a 0b                	push   $0xb
58d88b:	e8 10 3c f1 ff       	call   0x4a14a0
58d890:	83 c4 14             	add    $0x14,%esp
58d893:	85 ff                	test   %edi,%edi
58d895:	74 04                	je     0x58d89b
58d897:	3b 37                	cmp    (%edi),%esi
58d899:	74 09                	je     0x58d8a4
58d89b:	56                   	push   %esi
58d89c:	e8 2f 48 00 00       	call   0x5920d0
58d8a1:	83 c4 04             	add    $0x4,%esp
58d8a4:	5f                   	pop    %edi
58d8a5:	33 c0                	xor    %eax,%eax
58d8a7:	5e                   	pop    %esi
58d8a8:	c3                   	ret
58d8a9:	cc                   	int3
58d8aa:	cc                   	int3
58d8ab:	cc                   	int3
58d8ac:	cc                   	int3
58d8ad:	cc                   	int3
58d8ae:	cc                   	int3
58d8af:	cc                   	int3
58d8b0:	56                   	push   %esi
58d8b1:	8b 74 24 0c          	mov    0xc(%esp),%esi
58d8b5:	57                   	push   %edi
58d8b6:	6a 00                	push   $0x0
58d8b8:	56                   	push   %esi
58d8b9:	e8 02 a6 f1 ff       	call   0x4a7ec0
58d8be:	8b f8                	mov    %eax,%edi
58d8c0:	83 c4 08             	add    $0x8,%esp
58d8c3:	85 ff                	test   %edi,%edi
58d8c5:	75 2d                	jne    0x58d8f4
58d8c7:	68 27 01 00 00       	push   $0x127
58d8cc:	68 b8 6b 6c 00       	push   $0x6c6bb8
58d8d1:	6a 77                	push   $0x77
58d8d3:	68 83 00 00 00       	push   $0x83
58d8d8:	6a 0b                	push   $0xb
58d8da:	e8 c1 3b f1 ff       	call   0x4a14a0
58d8df:	56                   	push   %esi
58d8e0:	68 bc 2e 6c 00       	push   $0x6c2ebc
58d8e5:	6a 02                	push   $0x2
58d8e7:	e8 d4 36 f1 ff       	call   0x4a0fc0
58d8ec:	83 c4 20             	add    $0x20,%esp
58d8ef:	33 c0                	xor    %eax,%eax
58d8f1:	5f                   	pop    %edi
58d8f2:	5e                   	pop    %esi
58d8f3:	c3                   	ret
58d8f4:	ff 74 24 1c          	push   0x1c(%esp)
58d8f8:	ff 74 24 1c          	push   0x1c(%esp)
58d8fc:	ff 74 24 1c          	push   0x1c(%esp)
58d900:	57                   	push   %edi
58d901:	ff 74 24 1c          	push   0x1c(%esp)
58d905:	e8 06 ff ff ff       	call   0x58d810
58d90a:	57                   	push   %edi
58d90b:	8b f0                	mov    %eax,%esi
58d90d:	e8 ee 94 f1 ff       	call   0x4a6e00
58d912:	83 c4 18             	add    $0x18,%esp
58d915:	8b c6                	mov    %esi,%eax
58d917:	5f                   	pop    %edi
58d918:	5e                   	pop    %esi
58d919:	c3                   	ret
58d91a:	cc                   	int3
58d91b:	cc                   	int3
58d91c:	cc                   	int3
58d91d:	cc                   	int3
58d91e:	cc                   	int3
58d91f:	cc                   	int3
58d920:	8b 44 24 04          	mov    0x4(%esp),%eax
58d924:	85 c0                	test   %eax,%eax
58d926:	75 01                	jne    0x58d929
58d928:	c3                   	ret
58d929:	8b 40 04             	mov    0x4(%eax),%eax
58d92c:	c3                   	ret
58d92d:	cc                   	int3
58d92e:	cc                   	int3
58d92f:	cc                   	int3
58d930:	53                   	push   %ebx
58d931:	8b 5c 24 08          	mov    0x8(%esp),%ebx
58d935:	55                   	push   %ebp
58d936:	56                   	push   %esi
58d937:	85 db                	test   %ebx,%ebx
58d939:	0f 84 a2 00 00 00    	je     0x58d9e1
58d93f:	8b 6c 24 18          	mov    0x18(%esp),%ebp
58d943:	8b 74 24 1c          	mov    0x1c(%esp),%esi
58d947:	85 ed                	test   %ebp,%ebp
58d949:	75 08                	jne    0x58d953
58d94b:	85 f6                	test   %esi,%esi
58d94d:	0f 85 8e 00 00 00    	jne    0x58d9e1
58d953:	57                   	push   %edi
58d954:	8b 7c 24 18          	mov    0x18(%esp),%edi
58d958:	85 ff                	test   %edi,%edi
58d95a:	7e 2a                	jle    0x58d986
58d95c:	f7 c7 00 10 00 00    	test   $0x1000,%edi
58d962:	74 22                	je     0x58d986
58d964:	ff 33                	push   (%ebx)
58d966:	e8 75 a0 f1 ff       	call   0x4a79e0
58d96b:	50                   	push   %eax
58d96c:	57                   	push   %edi
58d96d:	56                   	push   %esi
58d96e:	8d 43 04             	lea    0x4(%ebx),%eax
58d971:	55                   	push   %ebp
58d972:	50                   	push   %eax
58d973:	e8 e8 41 00 00       	call   0x591b60
58d978:	83 c4 18             	add    $0x18,%esp
58d97b:	f7 d8                	neg    %eax
58d97d:	1b c0                	sbb    %eax,%eax
58d97f:	f7 d8                	neg    %eax
58d981:	5f                   	pop    %edi
58d982:	5e                   	pop    %esi
58d983:	5d                   	pop    %ebp
58d984:	5b                   	pop    %ebx
58d985:	c3                   	ret
58d986:	85 f6                	test   %esi,%esi
58d988:	79 0f                	jns    0x58d999
58d98a:	8b f5                	mov    %ebp,%esi
58d98c:	8d 4e 01             	lea    0x1(%esi),%ecx
58d98f:	90                   	nop
58d990:	8a 06                	mov    (%esi),%al
58d992:	46                   	inc    %esi
58d993:	84 c0                	test   %al,%al
58d995:	75 f9                	jne    0x58d990
58d997:	2b f1                	sub    %ecx,%esi
58d999:	56                   	push   %esi
58d99a:	55                   	push   %ebp
58d99b:	ff 73 04             	push   0x4(%ebx)
58d99e:	e8 6d 40 f2 ff       	call   0x4b1a10
58d9a3:	83 c4 0c             	add    $0xc,%esp
58d9a6:	85 c0                	test   %eax,%eax
58d9a8:	75 05                	jne    0x58d9af
58d9aa:	5f                   	pop    %edi
58d9ab:	5e                   	pop    %esi
58d9ac:	5d                   	pop    %ebp
58d9ad:	5b                   	pop    %ebx
58d9ae:	c3                   	ret
58d9af:	83 ff ff             	cmp    $0xffffffff,%edi
58d9b2:	74 23                	je     0x58d9d7
58d9b4:	83 ff fe             	cmp    $0xfffffffe,%edi
58d9b7:	75 18                	jne    0x58d9d1
58d9b9:	56                   	push   %esi
58d9ba:	55                   	push   %ebp
58d9bb:	e8 a0 8c 00 00       	call   0x596660
58d9c0:	8b 4b 04             	mov    0x4(%ebx),%ecx
58d9c3:	83 c4 08             	add    $0x8,%esp
58d9c6:	89 41 04             	mov    %eax,0x4(%ecx)
58d9c9:	8d 47 03             	lea    0x3(%edi),%eax
58d9cc:	5f                   	pop    %edi
58d9cd:	5e                   	pop    %esi
58d9ce:	5d                   	pop    %ebp
58d9cf:	5b                   	pop    %ebx
58d9d0:	c3                   	ret
58d9d1:	8b 43 04             	mov    0x4(%ebx),%eax
58d9d4:	89 78 04             	mov    %edi,0x4(%eax)
58d9d7:	5f                   	pop    %edi
58d9d8:	5e                   	pop    %esi
58d9d9:	5d                   	pop    %ebp
58d9da:	b8 01 00 00 00       	mov    $0x1,%eax
58d9df:	5b                   	pop    %ebx
58d9e0:	c3                   	ret
58d9e1:	5e                   	pop    %esi
58d9e2:	5d                   	pop    %ebp
58d9e3:	33 c0                	xor    %eax,%eax
58d9e5:	5b                   	pop    %ebx
58d9e6:	c3                   	ret
58d9e7:	cc                   	int3
58d9e8:	cc                   	int3
58d9e9:	cc                   	int3
58d9ea:	cc                   	int3
58d9eb:	cc                   	int3
58d9ec:	cc                   	int3
58d9ed:	cc                   	int3
58d9ee:	cc                   	int3
58d9ef:	cc                   	int3
58d9f0:	53                   	push   %ebx
58d9f1:	8b 5c 24 08          	mov    0x8(%esp),%ebx
58d9f5:	85 db                	test   %ebx,%ebx
58d9f7:	75 04                	jne    0x58d9fd
58d9f9:	33 c0                	xor    %eax,%eax
58d9fb:	5b                   	pop    %ebx
58d9fc:	c3                   	ret
58d9fd:	56                   	push   %esi
58d9fe:	57                   	push   %edi
58d9ff:	8b 3b                	mov    (%ebx),%edi
58da01:	57                   	push   %edi
58da02:	e8 09 0c f2 ff       	call   0x4ae610
58da07:	8b 74 24 1c          	mov    0x1c(%esp),%esi
58da0b:	83 c4 04             	add    $0x4,%esp
58da0e:	3b f0                	cmp    %eax,%esi
58da10:	7e 04                	jle    0x58da16
58da12:	8b f0                	mov    %eax,%esi
58da14:	eb 05                	jmp    0x58da1b
58da16:	85 f6                	test   %esi,%esi
58da18:	0f 48 f0             	cmovs  %eax,%esi
58da1b:	83 7c 24 1c ff       	cmpl   $0xffffffff,0x1c(%esp)
58da20:	55                   	push   %ebp
58da21:	c7 43 04 01 00 00 00 	movl   $0x1,0x4(%ebx)
58da28:	75 1f                	jne    0x58da49
58da2a:	85 f6                	test   %esi,%esi
58da2c:	75 07                	jne    0x58da35
58da2e:	33 db                	xor    %ebx,%ebx
58da30:	8d 6e 01             	lea    0x1(%esi),%ebp
58da33:	eb 4d                	jmp    0x58da82
58da35:	8d 46 ff             	lea    -0x1(%esi),%eax
58da38:	50                   	push   %eax
58da39:	57                   	push   %edi
58da3a:	e8 f1 0c f2 ff       	call   0x4ae730
58da3f:	83 c4 08             	add    $0x8,%esp
58da42:	33 ed                	xor    %ebp,%ebp
58da44:	8b 58 08             	mov    0x8(%eax),%ebx
58da47:	eb 39                	jmp    0x58da82
58da49:	3b f0                	cmp    %eax,%esi
58da4b:	7c 1b                	jl     0x58da68
58da4d:	85 f6                	test   %esi,%esi
58da4f:	74 13                	je     0x58da64
58da51:	8d 46 ff             	lea    -0x1(%esi),%eax
58da54:	50                   	push   %eax
58da55:	57                   	push   %edi
58da56:	e8 d5 0c f2 ff       	call   0x4ae730
58da5b:	83 c4 08             	add    $0x8,%esp
58da5e:	8b 58 08             	mov    0x8(%eax),%ebx
58da61:	43                   	inc    %ebx
58da62:	eb 11                	jmp    0x58da75
58da64:	33 db                	xor    %ebx,%ebx
58da66:	eb 0d                	jmp    0x58da75
58da68:	56                   	push   %esi
58da69:	57                   	push   %edi
58da6a:	e8 c1 0c f2 ff       	call   0x4ae730
58da6f:	83 c4 08             	add    $0x8,%esp
58da72:	8b 58 08             	mov    0x8(%eax),%ebx
58da75:	33 c0                	xor    %eax,%eax
58da77:	85 db                	test   %ebx,%ebx
58da79:	0f 94 c0             	sete   %al
58da7c:	89 44 24 14          	mov    %eax,0x14(%esp)
58da80:	8b e8                	mov    %eax,%ebp
58da82:	ff 74 24 18          	push   0x18(%esp)
58da86:	e8 25 46 00 00       	call   0x5920b0
58da8b:	83 c4 04             	add    $0x4,%esp
58da8e:	89 44 24 14          	mov    %eax,0x14(%esp)
58da92:	85 c0                	test   %eax,%eax
58da94:	74 33                	je     0x58dac9
58da96:	56                   	push   %esi
58da97:	50                   	push   %eax
58da98:	57                   	push   %edi
58da99:	89 58 08             	mov    %ebx,0x8(%eax)
58da9c:	e8 ff 09 f2 ff       	call   0x4ae4a0
58daa1:	83 c4 0c             	add    $0xc,%esp
58daa4:	85 c0                	test   %eax,%eax
58daa6:	75 28                	jne    0x58dad0
58daa8:	68 0d 01 00 00       	push   $0x10d
58daad:	68 b8 6b 6c 00       	push   $0x6c6bb8
58dab2:	6a 41                	push   $0x41
58dab4:	6a 71                	push   $0x71
58dab6:	6a 0b                	push   $0xb
58dab8:	e8 e3 39 f1 ff       	call   0x4a14a0
58dabd:	ff 74 24 28          	push   0x28(%esp)
58dac1:	e8 0a 46 00 00       	call   0x5920d0
58dac6:	83 c4 18             	add    $0x18,%esp
58dac9:	5d                   	pop    %ebp
58daca:	5f                   	pop    %edi
58dacb:	5e                   	pop    %esi
58dacc:	33 c0                	xor    %eax,%eax
58dace:	5b                   	pop    %ebx
58dacf:	c3                   	ret
58dad0:	85 ed                	test   %ebp,%ebp
58dad2:	74 25                	je     0x58daf9
58dad4:	57                   	push   %edi
58dad5:	e8 36 0b f2 ff       	call   0x4ae610
58dada:	8b d8                	mov    %eax,%ebx
58dadc:	46                   	inc    %esi
58dadd:	83 c4 04             	add    $0x4,%esp
58dae0:	3b f3                	cmp    %ebx,%esi
58dae2:	7d 15                	jge    0x58daf9
58dae4:	8d 4e ff             	lea    -0x1(%esi),%ecx
58dae7:	51                   	push   %ecx
58dae8:	57                   	push   %edi
58dae9:	e8 42 0c f2 ff       	call   0x4ae730
58daee:	46                   	inc    %esi
58daef:	83 c4 08             	add    $0x8,%esp
58daf2:	ff 40 08             	incl   0x8(%eax)
58daf5:	3b f3                	cmp    %ebx,%esi
58daf7:	7c eb                	jl     0x58dae4
58daf9:	5d                   	pop    %ebp
58dafa:	5f                   	pop    %edi
58dafb:	5e                   	pop    %esi
58dafc:	b8 01 00 00 00       	mov    $0x1,%eax
58db01:	5b                   	pop    %ebx
58db02:	c3                   	ret
58db03:	cc                   	int3
58db04:	cc                   	int3
58db05:	cc                   	int3
58db06:	cc                   	int3
58db07:	cc                   	int3
58db08:	cc                   	int3
58db09:	cc                   	int3
58db0a:	cc                   	int3
58db0b:	cc                   	int3
58db0c:	cc                   	int3
58db0d:	cc                   	int3
58db0e:	cc                   	int3
58db0f:	cc                   	int3
58db10:	57                   	push   %edi
58db11:	ff 74 24 18          	push   0x18(%esp)
58db15:	ff 74 24 18          	push   0x18(%esp)
58db19:	ff 74 24 18          	push   0x18(%esp)
58db1d:	ff 74 24 18          	push   0x18(%esp)
58db21:	6a 00                	push   $0x0
58db23:	e8 88 fd ff ff       	call   0x58d8b0
58db28:	8b f8                	mov    %eax,%edi