583972:	8b 74 24 0c          	mov    0xc(%esp),%esi
583976:	56                   	push   %esi
583977:	e8 f4 5a f7 ff       	call   0x4f9470
58397c:	6a 01                	push   $0x1
58397e:	56                   	push   %esi
58397f:	e8 0c 5b f7 ff       	call   0x4f9490
583984:	83 c4 10             	add    $0x10,%esp
583987:	b8 01 00 00 00       	mov    $0x1,%eax
58398c:	5e                   	pop    %esi
58398d:	c3                   	ret
58398e:	cc                   	int3
58398f:	cc                   	int3
583990:	56                   	push   %esi
583991:	8b 74 24 08          	mov    0x8(%esp),%esi
583995:	57                   	push   %edi
583996:	85 f6                	test   %esi,%esi
583998:	74 4c                	je     0x5839e6
58399a:	56                   	push   %esi
58399b:	e8 00 ce f6 ff       	call   0x4f07a0
5839a0:	8b f8                	mov    %eax,%edi
5839a2:	83 c4 04             	add    $0x4,%esp
5839a5:	85 ff                	test   %edi,%edi
5839a7:	74 3d                	je     0x5839e6
5839a9:	68 8d 00 00 00       	push   $0x8d
5839ae:	68 60 d1 65 00       	push   $0x65d160
5839b3:	ff 77 04             	push   0x4(%edi)
5839b6:	e8 c5 cd f5 ff       	call   0x4e0780
5839bb:	68 8e 00 00 00       	push   $0x8e
5839c0:	68 60 d1 65 00       	push   $0x65d160
5839c5:	57                   	push   %edi
5839c6:	e8 b5 cd f5 ff       	call   0x4e0780
5839cb:	6a 00                	push   $0x0
5839cd:	56                   	push   %esi
5839ce:	e8 9d 5a f7 ff       	call   0x4f9470
5839d3:	6a 00                	push   $0x0
5839d5:	56                   	push   %esi
5839d6:	e8 b5 5a f7 ff       	call   0x4f9490
5839db:	83 c4 28             	add    $0x28,%esp
5839de:	b8 01 00 00 00       	mov    $0x1,%eax
5839e3:	5f                   	pop    %edi
5839e4:	5e                   	pop    %esi
5839e5:	c3                   	ret
5839e6:	5f                   	pop    %edi
5839e7:	33 c0                	xor    %eax,%eax
5839e9:	5e                   	pop    %esi
5839ea:	c3                   	ret
5839eb:	cc                   	int3
5839ec:	cc                   	int3
5839ed:	cc                   	int3
5839ee:	cc                   	int3
5839ef:	cc                   	int3
5839f0:	56                   	push   %esi
5839f1:	57                   	push   %edi
5839f2:	8b 7c 24 10          	mov    0x10(%esp),%edi
5839f6:	8b 47 34             	mov    0x34(%edi),%eax
5839f9:	8d 77 34             	lea    0x34(%edi),%esi
5839fc:	85 c0                	test   %eax,%eax
5839fe:	7f 08                	jg     0x583a08
583a00:	5f                   	pop    %edi
583a01:	b8 01 00 00 00       	mov    $0x1,%eax
583a06:	5e                   	pop    %esi
583a07:	c3                   	ret
583a08:	53                   	push   %ebx
583a09:	55                   	push   %ebp
583a0a:	50                   	push   %eax
583a0b:	8b 47 30             	mov    0x30(%edi),%eax
583a0e:	8d 6f 30             	lea    0x30(%edi),%ebp
583a11:	03 47 38             	add    0x38(%edi),%eax
583a14:	50                   	push   %eax
583a15:	ff 74 24 1c          	push   0x1c(%esp)
583a19:	e8 02 58 f7 ff       	call   0x4f9220
583a1e:	83 c4 04             	add    $0x4,%esp
583a21:	50                   	push   %eax
583a22:	e8 99 5a f7 ff       	call   0x4f94c0
583a27:	8b d8                	mov    %eax,%ebx
583a29:	83 c4 0c             	add    $0xc,%esp
583a2c:	85 db                	test   %ebx,%ebx
583a2e:	7e 57                	jle    0x583a87
583a30:	29 1e                	sub    %ebx,(%esi)
583a32:	8b 06                	mov    (%esi),%eax
583a34:	85 c0                	test   %eax,%eax
583a36:	7e 2b                	jle    0x583a63
583a38:	01 5f 38             	add    %ebx,0x38(%edi)
583a3b:	50                   	push   %eax
583a3c:	8b 45 00             	mov    0x0(%ebp),%eax
583a3f:	03 47 38             	add    0x38(%edi),%eax
583a42:	50                   	push   %eax
583a43:	ff 74 24 1c          	push   0x1c(%esp)
583a47:	e8 d4 57 f7 ff       	call   0x4f9220
583a4c:	83 c4 04             	add    $0x4,%esp
583a4f:	50                   	push   %eax
583a50:	e8 6b 5a f7 ff       	call   0x4f94c0
583a55:	8b d8                	mov    %eax,%ebx
583a57:	83 c4 0c             	add    $0xc,%esp
583a5a:	85 db                	test   %ebx,%ebx
583a5c:	7f d2                	jg     0x583a30
583a5e:	5d                   	pop    %ebp
583a5f:	5b                   	pop    %ebx
583a60:	5f                   	pop    %edi
583a61:	5e                   	pop    %esi
583a62:	c3                   	ret
583a63:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
583a67:	85 c9                	test   %ecx,%ecx
583a69:	74 0f                	je     0x583a7a
583a6b:	8d 47 3c             	lea    0x3c(%edi),%eax
583a6e:	50                   	push   %eax
583a6f:	56                   	push   %esi
583a70:	55                   	push   %ebp
583a71:	ff 74 24 20          	push   0x20(%esp)
583a75:	ff d1                	call   *%ecx
583a77:	83 c4 10             	add    $0x10,%esp
583a7a:	8b 44 24 20          	mov    0x20(%esp),%eax
583a7e:	89 07                	mov    %eax,(%edi)
583a80:	c7 47 38 00 00 00 00 	movl   $0x0,0x38(%edi)
583a87:	5d                   	pop    %ebp
583a88:	8b c3                	mov    %ebx,%eax
583a8a:	5b                   	pop    %ebx
583a8b:	5f                   	pop    %edi
583a8c:	5e                   	pop    %esi
583a8d:	c3                   	ret
583a8e:	cc                   	int3
583a8f:	cc                   	int3
583a90:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
583a94:	56                   	push   %esi
583a95:	8b 74 24 0c          	mov    0xc(%esp),%esi
583a99:	85 c9                	test   %ecx,%ecx
583a9b:	74 2b                	je     0x583ac8
583a9d:	8d 46 3c             	lea    0x3c(%esi),%eax
583aa0:	50                   	push   %eax
583aa1:	8d 46 34             	lea    0x34(%esi),%eax
583aa4:	50                   	push   %eax
583aa5:	8d 46 30             	lea    0x30(%esi),%eax
583aa8:	50                   	push   %eax
583aa9:	ff 74 24 14          	push   0x14(%esp)
583aad:	ff d1                	call   *%ecx
583aaf:	83 c4 10             	add    $0x10,%esp
583ab2:	85 c0                	test   %eax,%eax
583ab4:	75 12                	jne    0x583ac8
583ab6:	6a 0f                	push   $0xf
583ab8:	ff 74 24 0c          	push   0xc(%esp)
583abc:	e8 3f 50 f7 ff       	call   0x4f8b00
583ac1:	83 c4 08             	add    $0x8,%esp
583ac4:	33 c0                	xor    %eax,%eax
583ac6:	5e                   	pop    %esi
583ac7:	c3                   	ret
583ac8:	83 7e 34 00          	cmpl   $0x0,0x34(%esi)
583acc:	8b 44 24 14          	mov    0x14(%esp),%eax
583ad0:	0f 4e 44 24 18       	cmovle 0x18(%esp),%eax
583ad5:	89 06                	mov    %eax,(%esi)
583ad7:	b8 01 00 00 00       	mov    $0x1,%eax
583adc:	5e                   	pop    %esi
583add:	c3                   	ret
583ade:	cc                   	int3
583adf:	cc                   	int3
583ae0:	b8 04 00 00 00       	mov    $0x4,%eax
583ae5:	e8 c6 dc 04 00       	call   0x5d17b0
583aea:	53                   	push   %ebx
583aeb:	55                   	push   %ebp
583aec:	56                   	push   %esi
583aed:	57                   	push   %edi
583aee:	8b 7c 24 18          	mov    0x18(%esp),%edi
583af2:	33 ed                	xor    %ebp,%ebp
583af4:	57                   	push   %edi
583af5:	e8 a6 cc f6 ff       	call   0x4f07a0
583afa:	57                   	push   %edi
583afb:	8b f0                	mov    %eax,%esi
583afd:	e8 1e 57 f7 ff       	call   0x4f9220
583b02:	83 c4 08             	add    $0x8,%esp
583b05:	8b d8                	mov    %eax,%ebx
583b07:	89 5c 24 10          	mov    %ebx,0x10(%esp)
583b0b:	85 f6                	test   %esi,%esi
583b0d:	0f 84 f8 03 00 00    	je     0x583f0b
583b13:	85 db                	test   %ebx,%ebx
583b15:	0f 84 f0 03 00 00    	je     0x583f0b
583b1b:	6a 0f                	push   $0xf
583b1d:	57                   	push   %edi
583b1e:	e8 dd 4f f7 ff       	call   0x4f8b00
583b23:	83 c4 08             	add    $0x8,%esp
583b26:	83 7e 10 01          	cmpl   $0x1,0x10(%esi)
583b2a:	74 1a                	je     0x583b46
583b2c:	ff 76 1c             	push   0x1c(%esi)
583b2f:	c7 46 10 01 00 00 00 	movl   $0x1,0x10(%esi)
583b36:	89 2e                	mov    %ebp,(%esi)
583b38:	89 6e 04             	mov    %ebp,0x4(%esi)
583b3b:	89 6e 08             	mov    %ebp,0x8(%esi)
583b3e:	e8 9d 7a fe ff       	call   0x56b5e0
583b43:	83 c4 04             	add    $0x4,%esp
583b46:	81 7e 04 de 05 00 00 	cmpl   $0x5de,0x4(%esi)
583b4d:	7c 17                	jl     0x583b66
583b4f:	68 5f 01 00 00       	push   $0x15f
583b54:	68 b8 d1 65 00       	push   $0x65d1b8
583b59:	68 3c d2 65 00       	push   $0x65d23c
583b5e:	e8 cd e9 f6 ff       	call   0x4f2530
583b63:	83 c4 0c             	add    $0xc,%esp
583b66:	8b 3e                	mov    (%esi),%edi
583b68:	81 ff de 05 00 00    	cmp    $0x5de,%edi
583b6e:	7e 19                	jle    0x583b89
583b70:	68 60 01 00 00       	push   $0x160
583b75:	68 b8 d1 65 00       	push   $0x65d1b8
583b7a:	68 74 d2 65 00       	push   $0x65d274
583b7f:	e8 ac e9 f6 ff       	call   0x4f2530
583b84:	8b 3e                	mov    (%esi),%edi
583b86:	83 c4 0c             	add    $0xc,%esp
583b89:	8b 46 04             	mov    0x4(%esi),%eax
583b8c:	3b f8                	cmp    %eax,%edi
583b8e:	7d 1c                	jge    0x583bac
583b90:	68 61 01 00 00       	push   $0x161
583b95:	68 b8 d1 65 00       	push   $0x65d1b8
583b9a:	68 d0 d1 65 00       	push   $0x65d1d0
583b9f:	e8 8c e9 f6 ff       	call   0x4f2530
583ba4:	8b 3e                	mov    (%esi),%edi
583ba6:	83 c4 0c             	add    $0xc,%esp
583ba9:	8b 46 04             	mov    0x4(%esi),%eax
583bac:	2b f8                	sub    %eax,%edi
583bae:	85 ff                	test   %edi,%edi
583bb0:	0f 8e 88 00 00 00    	jle    0x583c3e
583bb6:	8b 46 04             	mov    0x4(%esi),%eax
583bb9:	83 c0 20             	add    $0x20,%eax
583bbc:	57                   	push   %edi
583bbd:	03 c6                	add    %esi,%eax
583bbf:	50                   	push   %eax
583bc0:	53                   	push   %ebx
583bc1:	e8 fa 58 f7 ff       	call   0x4f94c0
583bc6:	8b d8                	mov    %eax,%ebx
583bc8:	83 c4 0c             	add    $0xc,%esp
583bcb:	85 db                	test   %ebx,%ebx
583bcd:	0f 8e 6a 01 00 00    	jle    0x583d3d
583bd3:	3b df                	cmp    %edi,%ebx
583bd5:	7e 17                	jle    0x583bee
583bd7:	68 69 01 00 00       	push   $0x169
583bdc:	68 b8 d1 65 00       	push   $0x65d1b8
583be1:	68 ac d2 65 00       	push   $0x65d2ac
583be6:	e8 45 e9 f6 ff       	call   0x4f2530
583beb:	83 c4 0c             	add    $0xc,%esp
583bee:	01 5e 04             	add    %ebx,0x4(%esi)
583bf1:	8b 46 04             	mov    0x4(%esi),%eax
583bf4:	3d de 05 00 00       	cmp    $0x5de,%eax
583bf9:	7e 1a                	jle    0x583c15
583bfb:	68 6b 01 00 00       	push   $0x16b
583c00:	68 b8 d1 65 00       	push   $0x65d1b8
583c05:	68 c8 d2 65 00       	push   $0x65d2c8
583c0a:	e8 21 e9 f6 ff       	call   0x4f2530
583c0f:	8b 46 04             	mov    0x4(%esi),%eax
583c12:	83 c4 0c             	add    $0xc,%esp
583c15:	39 06                	cmp    %eax,(%esi)
583c17:	7d 17                	jge    0x583c30
583c19:	68 6c 01 00 00       	push   $0x16c
583c1e:	68 b8 d1 65 00       	push   $0x65d1b8
583c23:	68 d0 d1 65 00       	push   $0x65d1d0
583c28:	e8 03 e9 f6 ff       	call   0x4f2530
583c2d:	83 c4 0c             	add    $0xc,%esp
583c30:	2b fb                	sub    %ebx,%edi
583c32:	8b 5c 24 10          	mov    0x10(%esp),%ebx
583c36:	85 ff                	test   %edi,%edi
583c38:	0f 8f 78 ff ff ff    	jg     0x583bb6
583c3e:	89 6e 04             	mov    %ebp,0x4(%esi)
583c41:	89 2e                	mov    %ebp,(%esi)
583c43:	39 6c 24 1c          	cmp    %ebp,0x1c(%esp)
583c47:	0f 84 be 02 00 00    	je     0x583f0b
583c4d:	8b 5c 24 20          	mov    0x20(%esp),%ebx
583c51:	85 db                	test   %ebx,%ebx
583c53:	0f 8e b2 02 00 00    	jle    0x583f0b
583c59:	b8 00 04 00 00       	mov    $0x400,%eax
583c5e:	8b fb                	mov    %ebx,%edi
583c60:	3b d8                	cmp    %eax,%ebx
583c62:	6a ff                	push   $0xffffffff
583c64:	ff 74 24 1c          	push   0x1c(%esp)
583c68:	0f 47 f8             	cmova  %eax,%edi
583c6b:	e8 30 58 f7 ff       	call   0x4f94a0
583c70:	83 c4 08             	add    $0x8,%esp
583c73:	a9 00 01 00 00       	test   $0x100,%eax
583c78:	0f 84 27 01 00 00    	je     0x583da5
583c7e:	8b 4e 08             	mov    0x8(%esi),%ecx
583c81:	85 c9                	test   %ecx,%ecx
583c83:	0f 8e c8 00 00 00    	jle    0x583d51
583c89:	83 f9 03             	cmp    $0x3,%ecx
583c8c:	7e 1a                	jle    0x583ca8
583c8e:	68 7b 01 00 00       	push   $0x17b
583c93:	68 b8 d1 65 00       	push   $0x65d1b8
583c98:	68 00 d3 65 00       	push   $0x65d300
583c9d:	e8 8e e8 f6 ff       	call   0x4f2530
583ca2:	8b 4e 08             	mov    0x8(%esi),%ecx
583ca5:	83 c4 0c             	add    $0xc,%esp
583ca8:	b8 03 00 00 00       	mov    $0x3,%eax
583cad:	8b fb                	mov    %ebx,%edi
583caf:	2b c1                	sub    %ecx,%eax
583cb1:	3b c3                	cmp    %ebx,%eax
583cb3:	0f 4e f8             	cmovle %eax,%edi
583cb6:	8d 86 fe 05 00 00    	lea    0x5fe(%esi),%eax
583cbc:	57                   	push   %edi
583cbd:	ff 74 24 20          	push   0x20(%esp)
583cc1:	03 c1                	add    %ecx,%eax
583cc3:	50                   	push   %eax
583cc4:	e8 07 f1 04 00       	call   0x5d2dd0
583cc9:	8b 46 08             	mov    0x8(%esi),%eax
583ccc:	83 c4 0c             	add    $0xc,%esp
583ccf:	03 c7                	add    %edi,%eax
583cd1:	03 ef                	add    %edi,%ebp
583cd3:	89 46 08             	mov    %eax,0x8(%esi)
583cd6:	83 f8 03             	cmp    $0x3,%eax
583cd9:	0f 8c 24 02 00 00    	jl     0x583f03
583cdf:	50                   	push   %eax
583ce0:	8d 86 fe 05 00 00    	lea    0x5fe(%esi),%eax
583ce6:	50                   	push   %eax
583ce7:	8d 46 20             	lea    0x20(%esi),%eax
583cea:	50                   	push   %eax
583ceb:	e8 80 78 fe ff       	call   0x56b570
583cf0:	83 c4 0c             	add    $0xc,%esp
583cf3:	89 06                	mov    %eax,(%esi)
583cf5:	3d de 05 00 00       	cmp    $0x5de,%eax
583cfa:	7e 19                	jle    0x583d15
583cfc:	68 8a 01 00 00       	push   $0x18a
583d01:	68 b8 d1 65 00       	push   $0x65d1b8
583d06:	68 74 d2 65 00       	push   $0x65d274
583d0b:	e8 20 e8 f6 ff       	call   0x4f2530
583d10:	8b 06                	mov    (%esi),%eax
583d12:	83 c4 0c             	add    $0xc,%esp
583d15:	3b 46 04             	cmp    0x4(%esi),%eax
583d18:	7d 17                	jge    0x583d31
583d1a:	68 8b 01 00 00       	push   $0x18b
583d1f:	68 b8 d1 65 00       	push   $0x65d1b8
583d24:	68 d0 d1 65 00       	push   $0x65d1d0
583d29:	e8 02 e8 f6 ff       	call   0x4f2530
583d2e:	83 c4 0c             	add    $0xc,%esp
583d31:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
583d38:	e9 c5 00 00 00       	jmp    0x583e02
583d3d:	ff 74 24 18          	push   0x18(%esp)
583d41:	e8 ca 4d f7 ff       	call   0x4f8b10
583d46:	83 c4 04             	add    $0x4,%esp
583d49:	8b c3                	mov    %ebx,%eax
583d4b:	5f                   	pop    %edi
583d4c:	5e                   	pop    %esi
583d4d:	5d                   	pop    %ebp
583d4e:	5b                   	pop    %ebx
583d4f:	59                   	pop    %ecx
583d50:	c3                   	ret
583d51:	83 ff 03             	cmp    $0x3,%edi
583d54:	0f 82 67 01 00 00    	jb     0x583ec1
583d5a:	b8 ab aa aa aa       	mov    $0xaaaaaaab,%eax
583d5f:	f7 e7                	mul    %edi
583d61:	8d 46 20             	lea    0x20(%esi),%eax
583d64:	d1 ea                	shr    $1,%edx
583d66:	8d 3c 52             	lea    (%edx,%edx,2),%edi
583d69:	57                   	push   %edi
583d6a:	ff 74 24 20          	push   0x20(%esp)
583d6e:	50                   	push   %eax
583d6f:	e8 fc 77 fe ff       	call   0x56b570
583d74:	83 c4 0c             	add    $0xc,%esp
583d77:	89 06                	mov    %eax,(%esi)
583d79:	3d de 05 00 00       	cmp    $0x5de,%eax