57797c:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
577983:	85 ff                	test   %edi,%edi
577985:	74 04                	je     0x57798b
577987:	8b c7                	mov    %edi,%eax
577989:	eb 0d                	jmp    0x577998
57798b:	6a 00                	push   $0x0
57798d:	ff 76 50             	push   0x50(%esi)
577990:	e8 eb d8 f6 ff       	call   0x4e5280
577995:	83 c4 08             	add    $0x8,%esp
577998:	89 46 64             	mov    %eax,0x64(%esi)
57799b:	8b 46 1c             	mov    0x1c(%esi),%eax
57799e:	56                   	push   %esi
57799f:	6a 00                	push   $0x0
5779a1:	89 6e 60             	mov    %ebp,0x60(%esi)
5779a4:	ff d0                	call   *%eax
5779a6:	83 c4 08             	add    $0x8,%esp
5779a9:	85 c0                	test   %eax,%eax
5779ab:	0f 84 92 00 00 00    	je     0x577a43
5779b1:	f6 43 20 01          	testb  $0x1,0x20(%ebx)
5779b5:	75 0d                	jne    0x5779c4
5779b7:	56                   	push   %esi
5779b8:	e8 c3 ec ff ff       	call   0x576680
5779bd:	83 c4 04             	add    $0x4,%esp
5779c0:	85 c0                	test   %eax,%eax
5779c2:	74 7f                	je     0x577a43
5779c4:	8b 46 1c             	mov    0x1c(%esi),%eax
5779c7:	56                   	push   %esi
5779c8:	6a 01                	push   $0x1
5779ca:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
5779d1:	89 7e 64             	mov    %edi,0x64(%esi)
5779d4:	ff d0                	call   *%eax
5779d6:	83 c4 08             	add    $0x8,%esp
5779d9:	5f                   	pop    %edi
5779da:	5e                   	pop    %esi
5779db:	5d                   	pop    %ebp
5779dc:	5b                   	pop    %ebx
5779dd:	c3                   	ret
5779de:	79 19                	jns    0x5779f9
5779e0:	89 7e 64             	mov    %edi,0x64(%esi)
5779e3:	83 c8 ff             	or     $0xffffffff,%eax
5779e6:	5f                   	pop    %edi
5779e7:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
5779ee:	c7 46 60 11 00 00 00 	movl   $0x11,0x60(%esi)
5779f5:	5e                   	pop    %esi
5779f6:	5d                   	pop    %ebp
5779f7:	5b                   	pop    %ebx
5779f8:	c3                   	ret
5779f9:	8b 46 10             	mov    0x10(%esi),%eax
5779fc:	ff 70 14             	push   0x14(%eax)
5779ff:	6a 00                	push   $0x0
577a01:	57                   	push   %edi
577a02:	6a 00                	push   $0x0
577a04:	e8 97 02 fe ff       	call   0x557ca0
577a09:	8b d8                	mov    %eax,%ebx
577a0b:	83 c4 10             	add    $0x10,%esp
577a0e:	85 db                	test   %ebx,%ebx
577a10:	74 38                	je     0x577a4a
577a12:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
577a19:	85 ff                	test   %edi,%edi
577a1b:	74 04                	je     0x577a21
577a1d:	8b c7                	mov    %edi,%eax
577a1f:	eb 0d                	jmp    0x577a2e
577a21:	6a 00                	push   $0x0
577a23:	ff 76 50             	push   0x50(%esi)
577a26:	e8 55 d8 f6 ff       	call   0x4e5280
577a2b:	83 c4 08             	add    $0x8,%esp
577a2e:	89 46 64             	mov    %eax,0x64(%esi)
577a31:	8b 46 1c             	mov    0x1c(%esi),%eax
577a34:	56                   	push   %esi
577a35:	6a 00                	push   $0x0
577a37:	89 5e 60             	mov    %ebx,0x60(%esi)
577a3a:	ff d0                	call   *%eax
577a3c:	83 c4 08             	add    $0x8,%esp
577a3f:	85 c0                	test   %eax,%eax
577a41:	75 07                	jne    0x577a4a
577a43:	5f                   	pop    %edi
577a44:	5e                   	pop    %esi
577a45:	5d                   	pop    %ebp
577a46:	33 c0                	xor    %eax,%eax
577a48:	5b                   	pop    %ebx
577a49:	c3                   	ret
577a4a:	c7 46 5c 00 00 00 00 	movl   $0x0,0x5c(%esi)
577a51:	85 ff                	test   %edi,%edi
577a53:	75 0e                	jne    0x577a63
577a55:	57                   	push   %edi
577a56:	ff 76 50             	push   0x50(%esi)
577a59:	e8 22 d8 f6 ff       	call   0x4e5280
577a5e:	83 c4 08             	add    $0x8,%esp
577a61:	8b f8                	mov    %eax,%edi
577a63:	8b 46 1c             	mov    0x1c(%esi),%eax
577a66:	56                   	push   %esi
577a67:	6a 00                	push   $0x0
577a69:	c7 46 60 41 00 00 00 	movl   $0x41,0x60(%esi)
577a70:	89 7e 64             	mov    %edi,0x64(%esi)
577a73:	ff d0                	call   *%eax
577a75:	83 c4 08             	add    $0x8,%esp
577a78:	5f                   	pop    %edi
577a79:	5e                   	pop    %esi
577a7a:	5d                   	pop    %ebp
577a7b:	5b                   	pop    %ebx
577a7c:	c3                   	ret
577a7d:	cc                   	int3
577a7e:	cc                   	int3
577a7f:	cc                   	int3
577a80:	b8 08 00 00 00       	mov    $0x8,%eax
577a85:	e8 26 9d 05 00       	call   0x5d17b0
577a8a:	55                   	push   %ebp
577a8b:	56                   	push   %esi
577a8c:	57                   	push   %edi
577a8d:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
577a91:	33 f6                	xor    %esi,%esi
577a93:	33 ed                	xor    %ebp,%ebp
577a95:	89 74 24 10          	mov    %esi,0x10(%esp)
577a99:	57                   	push   %edi
577a9a:	89 6c 24 10          	mov    %ebp,0x10(%esp)
577a9e:	e8 1d d6 f6 ff       	call   0x4e50c0
577aa3:	83 c4 04             	add    $0x4,%esp
577aa6:	85 c0                	test   %eax,%eax
577aa8:	0f 8e 14 01 00 00    	jle    0x577bc2
577aae:	8b 74 24 20          	mov    0x20(%esp),%esi
577ab2:	53                   	push   %ebx
577ab3:	55                   	push   %ebp
577ab4:	57                   	push   %edi
577ab5:	e8 c6 d7 f6 ff       	call   0x4e5280
577aba:	8b f8                	mov    %eax,%edi
577abc:	83 c4 08             	add    $0x8,%esp
577abf:	3b fe                	cmp    %esi,%edi
577ac1:	0f 84 cb 00 00 00    	je     0x577b92
577ac7:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
577acb:	57                   	push   %edi
577acc:	56                   	push   %esi
577acd:	53                   	push   %ebx
577ace:	8b 43 24             	mov    0x24(%ebx),%eax
577ad1:	ff d0                	call   *%eax
577ad3:	83 c4 0c             	add    $0xc,%esp
577ad6:	85 c0                	test   %eax,%eax
577ad8:	0f 84 b4 00 00 00    	je     0x577b92
577ade:	f6 86 80 00 00 00 20 	testb  $0x20,0x80(%esi)
577ae5:	74 10                	je     0x577af7
577ae7:	ff 73 50             	push   0x50(%ebx)
577aea:	e8 d1 d5 f6 ff       	call   0x4e50c0
577aef:	83 c4 04             	add    $0x4,%esp
577af2:	83 f8 01             	cmp    $0x1,%eax
577af5:	74 3b                	je     0x577b32
577af7:	8b 6b 50             	mov    0x50(%ebx),%ebp
577afa:	55                   	push   %ebp
577afb:	e8 c0 d5 f6 ff       	call   0x4e50c0
577b00:	8b d8                	mov    %eax,%ebx
577b02:	83 c4 04             	add    $0x4,%esp
577b05:	33 f6                	xor    %esi,%esi
577b07:	85 db                	test   %ebx,%ebx
577b09:	7e 1f                	jle    0x577b2a
577b0b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
577b10:	56                   	push   %esi
577b11:	55                   	push   %ebp
577b12:	e8 69 d7 f6 ff       	call   0x4e5280
577b17:	57                   	push   %edi
577b18:	50                   	push   %eax
577b19:	e8 f2 04 fe ff       	call   0x558010
577b1e:	83 c4 10             	add    $0x10,%esp
577b21:	85 c0                	test   %eax,%eax
577b23:	74 65                	je     0x577b8a
577b25:	46                   	inc    %esi
577b26:	3b f3                	cmp    %ebx,%esi
577b28:	7c e6                	jl     0x577b10
577b2a:	8b 6c 24 10          	mov    0x10(%esp),%ebp
577b2e:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
577b32:	8b 73 10             	mov    0x10(%ebx),%esi
577b35:	8b cf                	mov    %edi,%ecx
577b37:	89 4c 24 14          	mov    %ecx,0x14(%esp)
577b3b:	8b 46 14             	mov    0x14(%esi),%eax
577b3e:	a8 02                	test   $0x2,%al
577b40:	74 05                	je     0x577b47
577b42:	83 c6 08             	add    $0x8,%esi
577b45:	eb 09                	jmp    0x577b50
577b47:	a9 00 00 20 00       	test   $0x200000,%eax
577b4c:	75 6a                	jne    0x577bb8
577b4e:	33 f6                	xor    %esi,%esi
577b50:	56                   	push   %esi
577b51:	57                   	push   %edi
577b52:	e8 69 c1 f6 ff       	call   0x4e3cc0
577b57:	83 c4 04             	add    $0x4,%esp
577b5a:	50                   	push   %eax
577b5b:	e8 10 d7 ff ff       	call   0x575270
577b60:	83 c4 08             	add    $0x8,%esp
577b63:	85 c0                	test   %eax,%eax
577b65:	79 27                	jns    0x577b8e
577b67:	56                   	push   %esi
577b68:	57                   	push   %edi
577b69:	e8 32 8c f7 ff       	call   0x4f07a0
577b6e:	83 c4 04             	add    $0x4,%esp
577b71:	50                   	push   %eax
577b72:	e8 f9 d6 ff ff       	call   0x575270
577b77:	83 c4 08             	add    $0x8,%esp
577b7a:	85 c0                	test   %eax,%eax
577b7c:	7e 10                	jle    0x577b8e
577b7e:	8b 44 24 14          	mov    0x14(%esp),%eax
577b82:	5b                   	pop    %ebx
577b83:	5f                   	pop    %edi
577b84:	5e                   	pop    %esi
577b85:	5d                   	pop    %ebp
577b86:	83 c4 08             	add    $0x8,%esp
577b89:	c3                   	ret
577b8a:	8b 6c 24 10          	mov    0x10(%esp),%ebp
577b8e:	8b 74 24 24          	mov    0x24(%esp),%esi
577b92:	8b 7c 24 20          	mov    0x20(%esp),%edi
577b96:	45                   	inc    %ebp
577b97:	57                   	push   %edi
577b98:	89 6c 24 14          	mov    %ebp,0x14(%esp)
577b9c:	e8 1f d5 f6 ff       	call   0x4e50c0
577ba1:	83 c4 04             	add    $0x4,%esp
577ba4:	3b e8                	cmp    %eax,%ebp
577ba6:	0f 8c 07 ff ff ff    	jl     0x577ab3
577bac:	8b 44 24 14          	mov    0x14(%esp),%eax
577bb0:	5b                   	pop    %ebx
577bb1:	5f                   	pop    %edi
577bb2:	5e                   	pop    %esi
577bb3:	5d                   	pop    %ebp
577bb4:	83 c4 08             	add    $0x8,%esp
577bb7:	c3                   	ret
577bb8:	5b                   	pop    %ebx
577bb9:	5f                   	pop    %edi
577bba:	5e                   	pop    %esi
577bbb:	8b c1                	mov    %ecx,%eax
577bbd:	5d                   	pop    %ebp
577bbe:	83 c4 08             	add    $0x8,%esp
577bc1:	c3                   	ret
577bc2:	5f                   	pop    %edi
577bc3:	8b c6                	mov    %esi,%eax
577bc5:	5e                   	pop    %esi
577bc6:	5d                   	pop    %ebp
577bc7:	83 c4 08             	add    $0x8,%esp
577bca:	c3                   	ret
577bcb:	cc                   	int3
577bcc:	cc                   	int3
577bcd:	cc                   	int3
577bce:	cc                   	int3
577bcf:	cc                   	int3
577bd0:	b8 04 00 00 00       	mov    $0x4,%eax
577bd5:	e8 d6 9b 05 00       	call   0x5d17b0
577bda:	53                   	push   %ebx
577bdb:	55                   	push   %ebp
577bdc:	8b 6c 24 18          	mov    0x18(%esp),%ebp
577be0:	56                   	push   %esi
577be1:	8b 74 24 20          	mov    0x20(%esp),%esi
577be5:	57                   	push   %edi
577be6:	8b 6d 00             	mov    0x0(%ebp),%ebp
577be9:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
577bf0:	00
577bf1:	8b 4e 54             	mov    0x54(%esi),%ecx
577bf4:	f6 c1 02             	test   $0x2,%cl
577bf7:	75 15                	jne    0x577c0e
577bf9:	8b 5c 24 18          	mov    0x18(%esp),%ebx
577bfd:	8b 43 10             	mov    0x10(%ebx),%eax
577c00:	f7 40 14 00 10 00 00 	testl  $0x1000,0x14(%eax)
577c07:	75 0d                	jne    0x577c16
577c09:	f6 c1 60             	test   $0x60,%cl
577c0c:	74 24                	je     0x577c32
577c0e:	5f                   	pop    %edi
577c0f:	5e                   	pop    %esi
577c10:	5d                   	pop    %ebp
577c11:	33 c0                	xor    %eax,%eax
577c13:	5b                   	pop    %ebx
577c14:	59                   	pop    %ecx
577c15:	c3                   	ret
577c16:	f6 c1 40             	test   $0x40,%cl
577c19:	74 11                	je     0x577c2c
577c1b:	8b c5                	mov    %ebp,%eax
577c1d:	f7 d0                	not    %eax
577c1f:	85 46 58             	test   %eax,0x58(%esi)
577c22:	75 0e                	jne    0x577c32
577c24:	5f                   	pop    %edi
577c25:	5e                   	pop    %esi
577c26:	5d                   	pop    %ebp
577c27:	33 c0                	xor    %eax,%eax
577c29:	5b                   	pop    %ebx
577c2a:	59                   	pop    %ecx
577c2b:	c3                   	ret
577c2c:	83 7e 60 00          	cmpl   $0x0,0x60(%esi)
577c30:	75 dc                	jne    0x577c0e
577c32:	56                   	push   %esi
577c33:	e8 08 f6 f6 ff       	call   0x4e7240
577c38:	83 c4 04             	add    $0x4,%esp
577c3b:	50                   	push   %eax
577c3c:	ff 74 24 2c          	push   0x2c(%esp)
577c40:	e8 4b 9c f7 ff       	call   0x4f1890
577c45:	83 c4 04             	add    $0x4,%esp
577c48:	50                   	push   %eax
577c49:	e8 02 ff fd ff       	call   0x557b50
577c4e:	83 c4 08             	add    $0x8,%esp
577c51:	85 c0                	test   %eax,%eax
577c53:	74 0a                	je     0x577c5f
577c55:	f6 46 54 20          	testb  $0x20,0x54(%esi)
577c59:	74 b3                	je     0x577c0e
577c5b:	33 ff                	xor    %edi,%edi
577c5d:	eb 0d                	jmp    0x577c6c
577c5f:	c7 44 24 10 20 00 00 	movl   $0x20,0x10(%esp)
577c66:	00
577c67:	bf 20 00 00 00       	mov    $0x20,%edi
577c6c:	f7 46 48 00 02 00 00 	testl  $0x200,0x48(%esi)
577c73:	75 0a                	jne    0x577c7f
577c75:	81 cf 00 01 00 00    	or     $0x100,%edi
577c7b:	89 7c 24 10          	mov    %edi,0x10(%esp)
577c7f:	8b 5b 10             	mov    0x10(%ebx),%ebx
577c82:	8b 43 14             	mov    0x14(%ebx),%eax
577c85:	a8 02                	test   $0x2,%al
577c87:	74 05                	je     0x577c8e
577c89:	83 c3 08             	add    $0x8,%ebx
577c8c:	eb 09                	jmp    0x577c97
577c8e:	a9 00 00 20 00       	test   $0x200000,%eax
577c93:	75 54                	jne    0x577ce9
577c95:	33 db                	xor    %ebx,%ebx
577c97:	53                   	push   %ebx
577c98:	56                   	push   %esi
577c99:	e8 12 86 f7 ff       	call   0x4f02b0
577c9e:	83 c4 04             	add    $0x4,%esp
577ca1:	50                   	push   %eax
577ca2:	e8 c9 d5 ff ff       	call   0x575270
577ca7:	83 c4 08             	add    $0x8,%esp
577caa:	85 c0                	test   %eax,%eax
577cac:	74 48                	je     0x577cf6
577cae:	7f 46                	jg     0x577cf6
577cb0:	56                   	push   %esi
577cb1:	e8 aa f5 f6 ff       	call   0x4e7260
577cb6:	83 c4 04             	add    $0x4,%esp
577cb9:	85 c0                	test   %eax,%eax
577cbb:	74 2c                	je     0x577ce9
577cbd:	53                   	push   %ebx
577cbe:	56                   	push   %esi
577cbf:	e8 9c f5 f6 ff       	call   0x4e7260
577cc4:	83 c4 04             	add    $0x4,%esp
577cc7:	50                   	push   %eax
577cc8:	e8 a3 d5 ff ff       	call   0x575270
577ccd:	83 c4 08             	add    $0x8,%esp
577cd0:	85 c0                	test   %eax,%eax
577cd2:	8b 44 24 18          	mov    0x18(%esp),%eax
577cd6:	74 22                	je     0x577cfa
577cd8:	79 13                	jns    0x577ced
577cda:	f6 40 70 02          	testb  $0x2,0x70(%eax)
577cde:	74 1a                	je     0x577cfa
577ce0:	83 cf 40             	or     $0x40,%edi
577ce3:	89 7c 24 10          	mov    %edi,0x10(%esp)
577ce7:	eb 11                	jmp    0x577cfa
577ce9:	8b 44 24 18          	mov    0x18(%esp),%eax
577ced:	83 cf 40             	or     $0x40,%edi
577cf0:	89 7c 24 10          	mov    %edi,0x10(%esp)
577cf4:	eb 04                	jmp    0x577cfa
577cf6:	8b 44 24 18          	mov    0x18(%esp),%eax
577cfa:	8d 4c 24 10          	lea    0x10(%esp),%ecx
577cfe:	51                   	push   %ecx