56a836:	57                   	push   %edi
56a837:	e8 14 d6 fc ff       	call   0x537e50
56a83c:	56                   	push   %esi
56a83d:	ff 75 f0             	push   -0x10(%ebp)
56a840:	57                   	push   %edi
56a841:	e8 0a d6 fc ff       	call   0x537e50
56a846:	8b 45 ec             	mov    -0x14(%ebp),%eax
56a849:	83 c4 18             	add    $0x18,%esp
56a84c:	50                   	push   %eax
56a84d:	ff 75 f0             	push   -0x10(%ebp)
56a850:	68 8b 00 00 00       	push   $0x8b
56a855:	57                   	push   %edi
56a856:	e8 b5 77 fc ff       	call   0x532010
56a85b:	83 c4 10             	add    $0x10,%esp
56a85e:	89 06                	mov    %eax,(%esi)
56a860:	e9 58 0d 00 00       	jmp    0x56b5bd
56a865:	6a 01                	push   $0x1
56a867:	8d 73 d4             	lea    -0x2c(%ebx),%esi
56a86a:	56                   	push   %esi
56a86b:	6a 3b                	push   $0x3b
56a86d:	ff 37                	push   (%edi)
56a86f:	e8 fc 8d fb ff       	call   0x523670
56a874:	89 45 f8             	mov    %eax,-0x8(%ebp)
56a877:	8d 43 ec             	lea    -0x14(%ebx),%eax
56a87a:	6a 01                	push   $0x1
56a87c:	50                   	push   %eax
56a87d:	6a 3b                	push   $0x3b
56a87f:	ff 37                	push   (%edi)
56a881:	e8 ea 8d fb ff       	call   0x523670
56a886:	89 45 f0             	mov    %eax,-0x10(%ebp)
56a889:	8d 43 04             	lea    0x4(%ebx),%eax
56a88c:	6a 01                	push   $0x1
56a88e:	50                   	push   %eax
56a88f:	6a 3b                	push   $0x3b
56a891:	ff 37                	push   (%edi)
56a893:	e8 d8 8d fb ff       	call   0x523670
56a898:	50                   	push   %eax
56a899:	ff 75 f0             	push   -0x10(%ebp)
56a89c:	89 45 ec             	mov    %eax,-0x14(%ebp)
56a89f:	68 8b 00 00 00       	push   $0x8b
56a8a4:	57                   	push   %edi
56a8a5:	e8 66 77 fc ff       	call   0x532010
56a8aa:	83 c4 40             	add    $0x40,%esp
56a8ad:	89 45 e8             	mov    %eax,-0x18(%ebp)
56a8b0:	80 bf c8 00 00 00 02 	cmpb   $0x2,0xc8(%edi)
56a8b7:	72 20                	jb     0x56a8d9
56a8b9:	8d 4b 04             	lea    0x4(%ebx),%ecx
56a8bc:	51                   	push   %ecx
56a8bd:	ff 75 ec             	push   -0x14(%ebp)
56a8c0:	57                   	push   %edi
56a8c1:	e8 8a d5 fc ff       	call   0x537e50
56a8c6:	8d 4b ec             	lea    -0x14(%ebx),%ecx
56a8c9:	51                   	push   %ecx
56a8ca:	ff 75 f0             	push   -0x10(%ebp)
56a8cd:	57                   	push   %edi
56a8ce:	e8 7d d5 fc ff       	call   0x537e50
56a8d3:	8b 45 e8             	mov    -0x18(%ebp),%eax
56a8d6:	83 c4 18             	add    $0x18,%esp
56a8d9:	50                   	push   %eax
56a8da:	ff 75 f8             	push   -0x8(%ebp)
56a8dd:	e9 6e ff ff ff       	jmp    0x56a850
56a8e2:	ff 73 08             	push   0x8(%ebx)
56a8e5:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
56a8e9:	ff 73 04             	push   0x4(%ebx)
56a8ec:	50                   	push   %eax
56a8ed:	57                   	push   %edi
56a8ee:	e8 1d de fe ff       	call   0x558710
56a8f3:	83 c4 10             	add    $0x10,%esp
56a8f6:	89 43 04             	mov    %eax,0x4(%ebx)
56a8f9:	e9 bf 0c 00 00       	jmp    0x56b5bd
56a8fe:	6a 01                	push   $0x1
56a900:	8d 73 04             	lea    0x4(%ebx),%esi
56a903:	56                   	push   %esi
56a904:	68 98 00 00 00       	push   $0x98
56a909:	ff 37                	push   (%edi)
56a90b:	e8 60 8d fb ff       	call   0x523670
56a910:	83 c4 10             	add    $0x10,%esp
56a913:	89 06                	mov    %eax,(%esi)
56a915:	e9 a3 0c 00 00       	jmp    0x56b5bd
56a91a:	8b 43 04             	mov    0x4(%ebx),%eax
56a91d:	80 38 23             	cmpb   $0x23,(%eax)
56a920:	75 70                	jne    0x56a992
56a922:	0f b6 40 01          	movzbl 0x1(%eax),%eax
56a926:	f6 80 40 1b 6b 00 04 	testb  $0x4,0x6b1b40(%eax)
56a92d:	74 63                	je     0x56a992
56a92f:	80 7f 12 00          	cmpb   $0x0,0x12(%edi)
56a933:	8b 43 04             	mov    0x4(%ebx),%eax
56a936:	89 45 f4             	mov    %eax,-0xc(%ebp)
56a939:	8b 43 08             	mov    0x8(%ebx),%eax
56a93c:	89 45 f8             	mov    %eax,-0x8(%ebp)
56a93f:	75 1e                	jne    0x56a95f
56a941:	8d 45 f4             	lea    -0xc(%ebp),%eax
56a944:	50                   	push   %eax
56a945:	68 fc be 6b 00       	push   $0x6bbefc
56a94a:	57                   	push   %edi
56a94b:	e8 10 89 fb ff       	call   0x523260
56a950:	83 c4 0c             	add    $0xc,%esp
56a953:	c7 43 04 00 00 00 00 	movl   $0x0,0x4(%ebx)
56a95a:	e9 5e 0c 00 00       	jmp    0x56b5bd
56a95f:	6a 00                	push   $0x0
56a961:	6a 00                	push   $0x0
56a963:	68 ad 00 00 00       	push   $0xad
56a968:	57                   	push   %edi
56a969:	e8 a2 76 fc ff       	call   0x532010
56a96e:	83 c4 10             	add    $0x10,%esp
56a971:	89 43 04             	mov    %eax,0x4(%ebx)
56a974:	85 c0                	test   %eax,%eax
56a976:	0f 84 41 0c 00 00    	je     0x56b5bd
56a97c:	83 c0 1c             	add    $0x1c,%eax
56a97f:	50                   	push   %eax
56a980:	8b 45 f4             	mov    -0xc(%ebp),%eax
56a983:	40                   	inc    %eax
56a984:	50                   	push   %eax
56a985:	e8 16 24 fc ff       	call   0x52cda0
56a98a:	83 c4 08             	add    $0x8,%esp
56a98d:	e9 2b 0c 00 00       	jmp    0x56b5bd
56a992:	8b 73 08             	mov    0x8(%ebx),%esi
56a995:	56                   	push   %esi
56a996:	ff 73 04             	push   0x4(%ebx)
56a999:	68 99 00 00 00       	push   $0x99
56a99e:	57                   	push   %edi
56a99f:	e8 6c dd fe ff       	call   0x558710
56a9a4:	56                   	push   %esi
56a9a5:	50                   	push   %eax
56a9a6:	57                   	push   %edi
56a9a7:	89 43 04             	mov    %eax,0x4(%ebx)
56a9aa:	e8 e1 8e fb ff       	call   0x523890
56a9af:	83 c4 1c             	add    $0x1c,%esp
56a9b2:	e9 06 0c 00 00       	jmp    0x56b5bd
56a9b7:	6a 01                	push   $0x1
56a9b9:	8d 43 04             	lea    0x4(%ebx),%eax
56a9bc:	50                   	push   %eax
56a9bd:	ff 73 ec             	push   -0x14(%ebx)
56a9c0:	57                   	push   %edi
56a9c1:	e8 aa 8b fb ff       	call   0x523570
56a9c6:	83 c4 10             	add    $0x10,%esp
56a9c9:	89 43 ec             	mov    %eax,-0x14(%ebx)
56a9cc:	e9 ec 0b 00 00       	jmp    0x56b5bd
56a9d1:	6a 01                	push   $0x1
56a9d3:	8d 43 f8             	lea    -0x8(%ebx),%eax
56a9d6:	50                   	push   %eax
56a9d7:	6a 24                	push   $0x24
56a9d9:	ff 37                	push   (%edi)
56a9db:	e8 90 8c fb ff       	call   0x523670
56a9e0:	8b c8                	mov    %eax,%ecx
56a9e2:	83 c4 10             	add    $0x10,%esp
56a9e5:	8b 43 e0             	mov    -0x20(%ebx),%eax
56a9e8:	89 4b c8             	mov    %ecx,-0x38(%ebx)
56a9eb:	85 c9                	test   %ecx,%ecx
56a9ed:	0f 84 e2 05 00 00    	je     0x56afd5
56a9f3:	85 c0                	test   %eax,%eax
56a9f5:	74 0e                	je     0x56aa05
56a9f7:	89 41 0c             	mov    %eax,0xc(%ecx)
56a9fa:	8b 40 04             	mov    0x4(%eax),%eax
56a9fd:	25 04 01 20 00       	and    $0x200104,%eax
56aa02:	09 41 04             	or     %eax,0x4(%ecx)
56aa05:	51                   	push   %ecx
56aa06:	e8 b5 6c f9 ff       	call   0x5016c0
56aa0b:	83 c4 04             	add    $0x4,%esp
56aa0e:	e9 aa 0b 00 00       	jmp    0x56b5bd
56aa13:	ff 73 ec             	push   -0x14(%ebx)
56aa16:	8d 73 d4             	lea    -0x2c(%ebx),%esi
56aa19:	56                   	push   %esi
56aa1a:	ff 73 f8             	push   -0x8(%ebx)
56aa1d:	57                   	push   %edi
56aa1e:	e8 3d bf fb ff       	call   0x526960
56aa23:	83 c4 10             	add    $0x10,%esp
56aa26:	89 06                	mov    %eax,(%esi)
56aa28:	e9 90 0b 00 00       	jmp    0x56b5bd
56aa2d:	6a 01                	push   $0x1
56aa2f:	8d 43 e0             	lea    -0x20(%ebx),%eax
56aa32:	50                   	push   %eax
56aa33:	68 a9 00 00 00       	push   $0xa9
56aa38:	ff 37                	push   (%edi)
56aa3a:	e8 31 8c fb ff       	call   0x523670
56aa3f:	8b f0                	mov    %eax,%esi
56aa41:	83 c4 10             	add    $0x10,%esp
56aa44:	85 f6                	test   %esi,%esi
56aa46:	75 08                	jne    0x56aa50
56aa48:	89 73 e0             	mov    %esi,-0x20(%ebx)
56aa4b:	e9 6d 0b 00 00       	jmp    0x56b5bd
56aa50:	83 4e 04 04          	orl    $0x4,0x4(%esi)
56aa54:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
56aa5b:	83 7f 24 00          	cmpl   $0x0,0x24(%edi)
56aa5f:	75 22                	jne    0x56aa83
56aa61:	56                   	push   %esi
56aa62:	e8 59 6c f9 ff       	call   0x5016c0
56aa67:	8b 07                	mov    (%edi),%eax
56aa69:	83 c4 04             	add    $0x4,%esp
56aa6c:	8b 40 78             	mov    0x78(%eax),%eax
56aa6f:	39 46 18             	cmp    %eax,0x18(%esi)
56aa72:	7e 0f                	jle    0x56aa83
56aa74:	50                   	push   %eax
56aa75:	68 30 90 6b 00       	push   $0x6b9030
56aa7a:	57                   	push   %edi
56aa7b:	e8 e0 87 fb ff       	call   0x523260
56aa80:	83 c4 0c             	add    $0xc,%esp
56aa83:	89 73 e0             	mov    %esi,-0x20(%ebx)
56aa86:	e9 32 0b 00 00       	jmp    0x56b5bd
56aa8b:	ff 73 e0             	push   -0x20(%ebx)
56aa8e:	8d 7b c8             	lea    -0x38(%ebx),%edi
56aa91:	57                   	push   %edi
56aa92:	ff 73 ec             	push   -0x14(%ebx)
56aa95:	ff 75 f0             	push   -0x10(%ebp)
56aa98:	e8 c3 be fb ff       	call   0x526960
56aa9d:	ff 73 04             	push   0x4(%ebx)
56aaa0:	8b f0                	mov    %eax,%esi
56aaa2:	56                   	push   %esi
56aaa3:	ff 75 f0             	push   -0x10(%ebp)
56aaa6:	e8 95 96 fe ff       	call   0x554140
56aaab:	83 c4 1c             	add    $0x1c,%esp
56aaae:	89 37                	mov    %esi,(%edi)
56aab0:	e9 08 0b 00 00       	jmp    0x56b5bd
56aab5:	6a 01                	push   $0x1
56aab7:	8d 43 d4             	lea    -0x2c(%ebx),%eax
56aaba:	50                   	push   %eax
56aabb:	68 a9 00 00 00       	push   $0xa9
56aac0:	ff 37                	push   (%edi)
56aac2:	e8 a9 8b fb ff       	call   0x523670
56aac7:	8b f0                	mov    %eax,%esi
56aac9:	83 c4 10             	add    $0x10,%esp
56aacc:	85 f6                	test   %esi,%esi
56aace:	74 33                	je     0x56ab03
56aad0:	83 4e 04 04          	orl    $0x4,0x4(%esi)
56aad4:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
56aadb:	83 7f 24 00          	cmpl   $0x0,0x24(%edi)
56aadf:	75 22                	jne    0x56ab03
56aae1:	56                   	push   %esi
56aae2:	e8 d9 6b f9 ff       	call   0x5016c0
56aae7:	8b 07                	mov    (%edi),%eax
56aae9:	83 c4 04             	add    $0x4,%esp
56aaec:	8b 40 78             	mov    0x78(%eax),%eax
56aaef:	39 46 18             	cmp    %eax,0x18(%esi)
56aaf2:	7e 0f                	jle    0x56ab03
56aaf4:	50                   	push   %eax
56aaf5:	68 30 90 6b 00       	push   $0x6b9030
56aafa:	57                   	push   %edi
56aafb:	e8 60 87 fb ff       	call   0x523260
56ab00:	83 c4 0c             	add    $0xc,%esp
56ab03:	ff 73 04             	push   0x4(%ebx)
56ab06:	56                   	push   %esi
56ab07:	57                   	push   %edi
56ab08:	e8 33 96 fe ff       	call   0x554140
56ab0d:	83 c4 0c             	add    $0xc,%esp
56ab10:	89 73 d4             	mov    %esi,-0x2c(%ebx)
56ab13:	e9 a5 0a 00 00       	jmp    0x56b5bd
56ab18:	6a 01                	push   $0x1
56ab1a:	8d 43 04             	lea    0x4(%ebx),%eax
56ab1d:	50                   	push   %eax
56ab1e:	68 a9 00 00 00       	push   $0xa9
56ab23:	ff 37                	push   (%edi)
56ab25:	e8 46 8b fb ff       	call   0x523670
56ab2a:	8b f0                	mov    %eax,%esi
56ab2c:	83 c4 10             	add    $0x10,%esp
56ab2f:	85 f6                	test   %esi,%esi
56ab31:	75 08                	jne    0x56ab3b
56ab33:	89 73 04             	mov    %esi,0x4(%ebx)
56ab36:	e9 82 0a 00 00       	jmp    0x56b5bd
56ab3b:	83 4e 04 04          	orl    $0x4,0x4(%esi)
56ab3f:	c7 46 14 00 00 00 00 	movl   $0x0,0x14(%esi)
56ab46:	83 7f 24 00          	cmpl   $0x0,0x24(%edi)
56ab4a:	0f 85 bc f8 ff ff    	jne    0x56a40c
56ab50:	56                   	push   %esi
56ab51:	e8 6a 6b f9 ff       	call   0x5016c0
56ab56:	8b 07                	mov    (%edi),%eax
56ab58:	83 c4 04             	add    $0x4,%esp
56ab5b:	8b 40 78             	mov    0x78(%eax),%eax
56ab5e:	39 46 18             	cmp    %eax,0x18(%esi)
56ab61:	0f 8e a5 f8 ff ff    	jle    0x56a40c
56ab67:	50                   	push   %eax
56ab68:	68 30 90 6b 00       	push   $0x6b9030
56ab6d:	57                   	push   %edi
56ab6e:	e8 ed 86 fb ff       	call   0x523260
56ab73:	83 c4 0c             	add    $0xc,%esp
56ab76:	89 73 04             	mov    %esi,0x4(%ebx)
56ab79:	e9 3f 0a 00 00       	jmp    0x56b5bd
56ab7e:	ff 73 f8             	push   -0x8(%ebx)
56ab81:	ff 73 e0             	push   -0x20(%ebx)
56ab84:	57                   	push   %edi
56ab85:	e8 f6 c9 fb ff       	call   0x527580
56ab8a:	6a 00                	push   $0x0
56ab8c:	6a 00                	push   $0x0
56ab8e:	68 ae 00 00 00       	push   $0xae
56ab93:	57                   	push   %edi
56ab94:	8b f0                	mov    %eax,%esi
56ab96:	e8 75 74 fc ff       	call   0x532010
56ab9b:	83 c4 1c             	add    $0x1c,%esp
56ab9e:	89 43 d4             	mov    %eax,-0x2c(%ebx)
56aba1:	85 c0                	test   %eax,%eax
56aba3:	74 22                	je     0x56abc7
56aba5:	89 70 14             	mov    %esi,0x14(%eax)
56aba8:	83 3e 00             	cmpl   $0x0,(%esi)
56abab:	0f 84 0c 0a 00 00    	je     0x56b5bd
56abb1:	8b 46 04             	mov    0x4(%esi),%eax
56abb4:	8b 4b d4             	mov    -0x2c(%ebx),%ecx
56abb7:	8b 40 04             	mov    0x4(%eax),%eax
56abba:	25 04 01 20 00       	and    $0x200104,%eax
56abbf:	09 41 04             	or     %eax,0x4(%ecx)
56abc2:	e9 f6 09 00 00       	jmp    0x56b5bd
56abc7:	85 f6                	test   %esi,%esi
56abc9:	0f 84 ee 09 00 00    	je     0x56b5bd
56abcf:	56                   	push   %esi
56abd0:	ff 37                	push   (%edi)
56abd2:	e8 29 64 f9 ff       	call   0x501000
56abd7:	83 c4 08             	add    $0x8,%esp
56abda:	e9 de 09 00 00       	jmp    0x56b5bd
56abdf:	ff 73 04             	push   0x4(%ebx)
56abe2:	ff 73 ec             	push   -0x14(%ebx)
56abe5:	57                   	push   %edi
56abe6:	e8 15 8c fb ff       	call   0x523800
56abeb:	83 c4 0c             	add    $0xc,%esp
56abee:	89 43 ec             	mov    %eax,-0x14(%ebx)
56abf1:	e9 c7 09 00 00       	jmp    0x56b5bd
56abf6:	ff 73 04             	push   0x4(%ebx)
56abf9:	0f b7 43 f6          	movzwl -0xa(%ebx),%eax
56abfd:	ff 73 ec             	push   -0x14(%ebx)
56ac00:	50                   	push   %eax
56ac01:	57                   	push   %edi
56ac02:	e8 09 74 fc ff       	call   0x532010
56ac07:	83 c4 10             	add    $0x10,%esp
56ac0a:	89 43 ec             	mov    %eax,-0x14(%ebx)
56ac0d:	e9 ab 09 00 00       	jmp    0x56b5bd
56ac12:	8b 43 04             	mov    0x4(%ebx),%eax
56ac15:	89 43 f8             	mov    %eax,-0x8(%ebx)
56ac18:	8b 43 08             	mov    0x8(%ebx),%eax
56ac1b:	89 43 fc             	mov    %eax,-0x4(%ebx)
56ac1e:	81 4b fc 00 00 00 80 	orl    $0x80000000,-0x4(%ebx)
56ac25:	e9 93 09 00 00       	jmp    0x56b5bd
56ac2a:	ff 73 04             	push   0x4(%ebx)
56ac2d:	8b 73 fc             	mov    -0x4(%ebx),%esi
56ac30:	8b c6                	mov    %esi,%eax
56ac32:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
56ac37:	6a 00                	push   $0x0
56ac39:	57                   	push   %edi
56ac3a:	89 43 fc             	mov    %eax,-0x4(%ebx)
56ac3d:	e8 3e c9 fb ff       	call   0x527580
56ac42:	ff 73 ec             	push   -0x14(%ebx)
56ac45:	50                   	push   %eax
56ac46:	57                   	push   %edi
56ac47:	e8 34 c9 fb ff       	call   0x527580
56ac4c:	6a 00                	push   $0x0
56ac4e:	8d 4b f8             	lea    -0x8(%ebx),%ecx
56ac51:	51                   	push   %ecx
56ac52:	50                   	push   %eax
56ac53:	57                   	push   %edi
56ac54:	e8 07 bd fb ff       	call   0x526960
56ac59:	83 c4 28             	add    $0x28,%esp
56ac5c:	89 43 ec             	mov    %eax,-0x14(%ebx)
56ac5f:	85 f6                	test   %esi,%esi
56ac61:	79 11                	jns    0x56ac74