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
56ac63:	6a 00                	push   $0x0
56ac65:	50                   	push   %eax
56ac66:	6a 13                	push   $0x13
56ac68:	57                   	push   %edi
56ac69:	e8 a2 73 fc ff       	call   0x532010
56ac6e:	83 c4 10             	add    $0x10,%esp
56ac71:	89 43 ec             	mov    %eax,-0x14(%ebx)
56ac74:	8b 43 ec             	mov    -0x14(%ebx),%eax
56ac77:	85 c0                	test   %eax,%eax
56ac79:	0f 84 3e 09 00 00    	je     0x56b5bd
56ac7f:	81 48 04 80 00 00 00 	orl    $0x80,0x4(%eax)
56ac86:	e9 32 09 00 00       	jmp    0x56b5bd
56ac8b:	ff 73 ec             	push   -0x14(%ebx)
56ac8e:	8b 73 e4             	mov    -0x1c(%ebx),%esi
56ac91:	8b c6                	mov    %esi,%eax
56ac93:	25 ff ff ff 7f       	and    $0x7fffffff,%eax
56ac98:	6a 00                	push   $0x0
56ac9a:	57                   	push   %edi
56ac9b:	89 43 e4             	mov    %eax,-0x1c(%ebx)
56ac9e:	e8 dd c8 fb ff       	call   0x527580
56aca3:	ff 73 d4             	push   -0x2c(%ebx)
56aca6:	50                   	push   %eax
56aca7:	57                   	push   %edi
56aca8:	e8 d3 c8 fb ff       	call   0x527580
56acad:	ff 73 04             	push   0x4(%ebx)
56acb0:	50                   	push   %eax
56acb1:	57                   	push   %edi
56acb2:	e8 c9 c8 fb ff       	call   0x527580
56acb7:	6a 00                	push   $0x0
56acb9:	8d 4b e0             	lea    -0x20(%ebx),%ecx
56acbc:	51                   	push   %ecx
56acbd:	50                   	push   %eax
56acbe:	57                   	push   %edi
56acbf:	e8 9c bc fb ff       	call   0x526960
56acc4:	83 c4 34             	add    $0x34,%esp
56acc7:	89 43 d4             	mov    %eax,-0x2c(%ebx)
56acca:	85 f6                	test   %esi,%esi
56accc:	79 11                	jns    0x56acdf
56acce:	6a 00                	push   $0x0
56acd0:	50                   	push   %eax
56acd1:	6a 13                	push   $0x13
56acd3:	57                   	push   %edi
56acd4:	e8 37 73 fc ff       	call   0x532010
56acd9:	83 c4 10             	add    $0x10,%esp
56acdc:	89 43 d4             	mov    %eax,-0x2c(%ebx)
56acdf:	8b 43 d4             	mov    -0x2c(%ebx),%eax
56ace2:	85 c0                	test   %eax,%eax
56ace4:	0f 84 d3 08 00 00    	je     0x56b5bd
56acea:	81 48 04 80 00 00 00 	orl    $0x80,0x4(%eax)
56acf1:	e9 c7 08 00 00       	jmp    0x56b5bd
56acf6:	0f b7 43 02          	movzwl 0x2(%ebx),%eax
56acfa:	6a 00                	push   $0x0
56acfc:	ff 73 f8             	push   -0x8(%ebx)
56acff:	50                   	push   %eax
56ad00:	57                   	push   %edi
56ad01:	e8 0a 73 fc ff       	call   0x532010
56ad06:	83 c4 10             	add    $0x10,%esp
56ad09:	89 43 f8             	mov    %eax,-0x8(%ebx)
56ad0c:	e9 ac 08 00 00       	jmp    0x56b5bd
56ad11:	6a 00                	push   $0x0
56ad13:	ff 73 ec             	push   -0x14(%ebx)
56ad16:	6a 33                	push   $0x33
56ad18:	57                   	push   %edi
56ad19:	e8 f2 72 fc ff       	call   0x532010
56ad1e:	83 c4 10             	add    $0x10,%esp
56ad21:	89 43 ec             	mov    %eax,-0x14(%ebx)
56ad24:	e9 94 08 00 00       	jmp    0x56b5bd
56ad29:	ff 73 04             	push   0x4(%ebx)
56ad2c:	ff 73 ec             	push   -0x14(%ebx)
56ad2f:	6a 2d                	push   $0x2d
56ad31:	57                   	push   %edi
56ad32:	e8 d9 72 fc ff       	call   0x532010
56ad37:	6a 32                	push   $0x32
56ad39:	50                   	push   %eax
56ad3a:	ff 73 04             	push   0x4(%ebx)
56ad3d:	89 43 ec             	mov    %eax,-0x14(%ebx)
56ad40:	57                   	push   %edi
56ad41:	e8 6a b1 f8 ff       	call   0x4f5eb0
56ad46:	83 c4 20             	add    $0x20,%esp
56ad49:	e9 6f 08 00 00       	jmp    0x56b5bd
56ad4e:	ff 73 04             	push   0x4(%ebx)
56ad51:	ff 73 e0             	push   -0x20(%ebx)
56ad54:	68 a8 00 00 00       	push   $0xa8
56ad59:	57                   	push   %edi
56ad5a:	e8 b1 72 fc ff       	call   0x532010
56ad5f:	6a 33                	push   $0x33
56ad61:	50                   	push   %eax
56ad62:	ff 73 04             	push   0x4(%ebx)
56ad65:	89 43 e0             	mov    %eax,-0x20(%ebx)
56ad68:	57                   	push   %edi
56ad69:	e8 42 b1 f8 ff       	call   0x4f5eb0
56ad6e:	83 c4 20             	add    $0x20,%esp
56ad71:	e9 47 08 00 00       	jmp    0x56b5bd
56ad76:	0f b7 43 f6          	movzwl -0xa(%ebx),%eax
56ad7a:	6a 00                	push   $0x0
56ad7c:	ff 73 04             	push   0x4(%ebx)
56ad7f:	50                   	push   %eax
56ad80:	57                   	push   %edi
56ad81:	e8 8a 72 fc ff       	call   0x532010
56ad86:	83 c4 10             	add    $0x10,%esp
56ad89:	89 43 f8             	mov    %eax,-0x8(%ebx)
56ad8c:	e9 2c 08 00 00       	jmp    0x56b5bd
56ad91:	33 c0                	xor    %eax,%eax
56ad93:	66 83 7b f6 69       	cmpw   $0x69,-0xa(%ebx)
56ad98:	6a 00                	push   $0x0
56ad9a:	ff 73 04             	push   0x4(%ebx)
56ad9d:	0f 94 c0             	sete   %al
56ada0:	05 aa 00 00 00       	add    $0xaa,%eax
56ada5:	50                   	push   %eax
56ada6:	57                   	push   %edi
56ada7:	e8 64 72 fc ff       	call   0x532010
56adac:	83 c4 10             	add    $0x10,%esp
56adaf:	89 43 f8             	mov    %eax,-0x8(%ebx)
56adb2:	e9 06 08 00 00       	jmp    0x56b5bd
56adb7:	ff 73 ec             	push   -0x14(%ebx)
56adba:	6a 00                	push   $0x0
56adbc:	57                   	push   %edi
56adbd:	e8 be c7 fb ff       	call   0x527580
56adc2:	ff 73 04             	push   0x4(%ebx)
56adc5:	50                   	push   %eax
56adc6:	57                   	push   %edi
56adc7:	e8 b4 c7 fb ff       	call   0x527580
56adcc:	6a 00                	push   $0x0
56adce:	ff 73 d4             	push   -0x2c(%ebx)
56add1:	8b f0                	mov    %eax,%esi
56add3:	6a 30                	push   $0x30
56add5:	57                   	push   %edi
56add6:	e8 35 72 fc ff       	call   0x532010
56addb:	83 c4 28             	add    $0x28,%esp
56adde:	89 43 d4             	mov    %eax,-0x2c(%ebx)
56ade1:	85 c0                	test   %eax,%eax
56ade3:	74 05                	je     0x56adea
56ade5:	89 70 14             	mov    %esi,0x14(%eax)
56ade8:	eb 0f                	jmp    0x56adf9
56adea:	85 f6                	test   %esi,%esi
56adec:	74 0b                	je     0x56adf9
56adee:	56                   	push   %esi
56adef:	ff 37                	push   (%edi)
56adf1:	e8 0a 62 f9 ff       	call   0x501000
56adf6:	83 c4 08             	add    $0x8,%esp
56adf9:	83 7b e0 00          	cmpl   $0x0,-0x20(%ebx)
56adfd:	0f 84 ba 07 00 00    	je     0x56b5bd
56ae03:	6a 00                	push   $0x0
56ae05:	ff 73 d4             	push   -0x2c(%ebx)
56ae08:	6a 13                	push   $0x13
56ae0a:	57                   	push   %edi
56ae0b:	e8 00 72 fc ff       	call   0x532010
56ae10:	83 c4 10             	add    $0x10,%esp
56ae13:	e9 a2 07 00 00       	jmp    0x56b5ba
56ae18:	83 7b f8 00          	cmpl   $0x0,-0x8(%ebx)
56ae1c:	75 2f                	jne    0x56ae4d
56ae1e:	ff 73 d4             	push   -0x2c(%ebx)
56ae21:	57                   	push   %edi
56ae22:	e8 99 cf fb ff       	call   0x527dc0
56ae27:	83 7b e0 00          	cmpl   $0x0,-0x20(%ebx)
56ae2b:	b9 9c 9b 6a 00       	mov    $0x6a9b9c,%ecx
56ae30:	b8 64 9c 6a 00       	mov    $0x6a9c64,%eax
56ae35:	0f 44 c1             	cmove  %ecx,%eax
56ae38:	50                   	push   %eax
56ae39:	68 98 00 00 00       	push   $0x98
56ae3e:	ff 37                	push   (%edi)
56ae40:	e8 7b 86 fb ff       	call   0x5234c0
56ae45:	83 c4 14             	add    $0x14,%esp
56ae48:	e9 6d 07 00 00       	jmp    0x56b5ba
56ae4d:	6a 00                	push   $0x0
56ae4f:	ff 73 d4             	push   -0x2c(%ebx)
56ae52:	6a 31                	push   $0x31
56ae54:	57                   	push   %edi
56ae55:	e8 b6 71 fc ff       	call   0x532010
56ae5a:	83 c4 10             	add    $0x10,%esp
56ae5d:	89 43 d4             	mov    %eax,-0x2c(%ebx)
56ae60:	85 c0                	test   %eax,%eax
56ae62:	74 11                	je     0x56ae75
56ae64:	8b 4b f8             	mov    -0x8(%ebx),%ecx
56ae67:	89 48 14             	mov    %ecx,0x14(%eax)