56ac2e:	ff 4b 08             	decl   0x8(%ebx)
56ac31:	78 0e                	js     0x56ac41
56ac33:	8b 4b 08             	mov    0x8(%ebx),%ecx
56ac36:	0f b7 73 04          	movzwl 0x4(%ebx),%esi
56ac3a:	d3 fe                	sar    %cl,%esi
56ac3c:	83 e6 01             	and    $0x1,%esi
56ac3f:	eb 09                	jmp    0x56ac4a
56ac41:	8b c3                	mov    %ebx,%eax
56ac43:	e8 34 60 00 00       	call   0x570c7c
56ac48:	8b f0                	mov    %eax,%esi
56ac4a:	85 f6                	test   %esi,%esi
56ac4c:	7e 4f                	jle    0x56ac9d
56ac4e:	ba 02 00 00 00       	mov    $0x2,%edx
56ac53:	8b c3                	mov    %ebx,%eax
56ac55:	e8 2a 5e 00 00       	call   0x570a84
56ac5a:	8b f0                	mov    %eax,%esi
56ac5c:	83 f8 03             	cmp    $0x3,%eax
56ac5f:	75 33                	jne    0x56ac94
56ac61:	ba 05 00 00 00       	mov    $0x5,%edx
56ac66:	8b c3                	mov    %ebx,%eax
56ac68:	e8 17 5e 00 00       	call   0x570a84
56ac6d:	8b f0                	mov    %eax,%esi
56ac6f:	83 f8 1f             	cmp    $0x1f,%eax
56ac72:	75 17                	jne    0x56ac8b
56ac74:	ba 07 00 00 00       	mov    $0x7,%edx
56ac79:	8b c3                	mov    %ebx,%eax
56ac7b:	e8 04 5e 00 00       	call   0x570a84
56ac80:	8b f0                	mov    %eax,%esi
56ac82:	85 c0                	test   %eax,%eax
56ac84:	7c 25                	jl     0x56acab
56ac86:	83 c6 25             	add    $0x25,%esi
56ac89:	eb 20                	jmp    0x56acab
56ac8b:	85 f6                	test   %esi,%esi
56ac8d:	7c 1c                	jl     0x56acab
56ac8f:	83 c6 06             	add    $0x6,%esi
56ac92:	eb 17                	jmp    0x56acab
56ac94:	85 f6                	test   %esi,%esi
56ac96:	7c 13                	jl     0x56acab
56ac98:	83 c6 03             	add    $0x3,%esi
56ac9b:	eb 0e                	jmp    0x56acab
56ac9d:	85 f6                	test   %esi,%esi
56ac9f:	75 0a                	jne    0x56acab
56aca1:	83 c6 02             	add    $0x2,%esi
56aca4:	eb 05                	jmp    0x56acab
56aca6:	85 f6                	test   %esi,%esi
56aca8:	75 01                	jne    0x56acab
56acaa:	46                   	inc    %esi
56acab:	8b c6                	mov    %esi,%eax
56acad:	5e                   	pop    %esi
56acae:	5b                   	pop    %ebx
56acaf:	c3                   	ret
56acb0:	55                   	push   %ebp
56acb1:	8b ec                	mov    %esp,%ebp
56acb3:	83 c4 88             	add    $0xffffff88,%esp
56acb6:	53                   	push   %ebx
56acb7:	56                   	push   %esi
56acb8:	57                   	push   %edi
56acb9:	89 4d f4             	mov    %ecx,-0xc(%ebp)
56acbc:	89 55 f8             	mov    %edx,-0x8(%ebp)
56acbf:	89 45 fc             	mov    %eax,-0x4(%ebp)
56acc2:	8b 45 fc             	mov    -0x4(%ebp),%eax
56acc5:	8b 4d 08             	mov    0x8(%ebp),%ecx
56acc8:	8b 50 44             	mov    0x44(%eax),%edx
56accb:	3b d1                	cmp    %ecx,%edx
56accd:	0f 9e c0             	setle  %al
56acd0:	83 e0 01             	and    $0x1,%eax
56acd3:	89 45 9c             	mov    %eax,-0x64(%ebp)
56acd6:	8b 55 fc             	mov    -0x4(%ebp),%edx
56acd9:	8b 4a 34             	mov    0x34(%edx),%ecx
56acdc:	89 4d bc             	mov    %ecx,-0x44(%ebp)
56acdf:	8b 45 bc             	mov    -0x44(%ebp),%eax
56ace2:	8b 50 20             	mov    0x20(%eax),%edx
56ace5:	89 55 b4             	mov    %edx,-0x4c(%ebp)
56ace8:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
56aceb:	8b 55 14             	mov    0x14(%ebp),%edx
56acee:	8b 41 10             	mov    0x10(%ecx),%eax
56acf1:	8b ca                	mov    %edx,%ecx
56acf3:	8d 14 d1             	lea    (%ecx,%edx,8),%edx
56acf6:	c1 e2 03             	shl    $0x3,%edx
56acf9:	2b d1                	sub    %ecx,%edx
56acfb:	c1 e2 02             	shl    $0x2,%edx
56acfe:	03 c2                	add    %edx,%eax
56ad00:	89 45 b8             	mov    %eax,-0x48(%ebp)
56ad03:	8b 45 b4             	mov    -0x4c(%ebp),%eax
56ad06:	f6 40 0d 02          	testb  $0x2,0xd(%eax)
56ad0a:	74 60                	je     0x56ad6c
56ad0c:	8b 45 f4             	mov    -0xc(%ebp),%eax
56ad0f:	e8 54 0b 00 00       	call   0x56b868
56ad14:	3d 91 ff 00 00       	cmp    $0xff91,%eax
56ad19:	75 51                	jne    0x56ad6c
56ad1b:	8b 55 fc             	mov    -0x4(%ebp),%edx
56ad1e:	8b 45 f4             	mov    -0xc(%ebp),%eax
56ad21:	8b 52 68             	mov    0x68(%edx),%edx
56ad24:	e8 0f b0 00 00       	call   0x575d38
56ad29:	89 45 c0             	mov    %eax,-0x40(%ebp)
56ad2c:	85 c0                	test   %eax,%eax
56ad2e:	75 08                	jne    0x56ad38
56ad30:	83 c8 ff             	or     $0xffffffff,%eax
56ad33:	e9 d9 05 00 00       	jmp    0x56b311
56ad38:	8b 55 c0             	mov    -0x40(%ebp),%edx
56ad3b:	66 81 3a 91 ff       	cmpw   $0xff91,(%edx)
56ad40:	74 22                	je     0x56ad64
56ad42:	8b 45 c0             	mov    -0x40(%ebp),%eax
56ad45:	e8 de b2 00 00       	call   0x576028
56ad4a:	68 43 fc 69 00       	push   $0x69fc43
56ad4f:	68 80 2e 6a 00       	push   $0x6a2e80
56ad54:	e8 73 f3 00 00       	call   0x57a0cc
56ad59:	83 c4 08             	add    $0x8,%esp
56ad5c:	83 c8 ff             	or     $0xffffffff,%eax
56ad5f:	e9 ad 05 00 00       	jmp    0x56b311
56ad64:	8b 45 c0             	mov    -0x40(%ebp),%eax
56ad67:	e8 bc b2 00 00       	call   0x576028
56ad6c:	8b 55 f8             	mov    -0x8(%ebp),%edx
56ad6f:	8b 4a 3c             	mov    0x3c(%edx),%ecx
56ad72:	89 4d 8c             	mov    %ecx,-0x74(%ebp)
56ad75:	ba 5f fc 69 00       	mov    $0x69fc5f,%edx
56ad7a:	8b 45 f8             	mov    -0x8(%ebp),%eax
56ad7d:	e8 4e 5a 00 00       	call   0x5707d0
56ad82:	8b f8                	mov    %eax,%edi
56ad84:	85 c0                	test   %eax,%eax
56ad86:	75 08                	jne    0x56ad90
56ad88:	83 c8 ff             	or     $0xffffffff,%eax
56ad8b:	e9 81 05 00 00       	jmp    0x56b311
56ad90:	f6 47 10 01          	testb  $0x1,0x10(%edi)
56ad94:	75 17                	jne    0x56adad
56ad96:	68 10 01 00 00       	push   $0x110
56ad9b:	68 87 fc 69 00       	push   $0x69fc87
56ada0:	68 61 fc 69 00       	push   $0x69fc61
56ada5:	e8 96 fd fe ff       	call   0x55ab40
56adaa:	83 c4 0c             	add    $0xc,%esp
56adad:	ff 4f 08             	decl   0x8(%edi)
56adb0:	78 0e                	js     0x56adc0
56adb2:	8b 4f 08             	mov    0x8(%edi),%ecx
56adb5:	0f b7 57 04          	movzwl 0x4(%edi),%edx
56adb9:	d3 fa                	sar    %cl,%edx
56adbb:	83 e2 01             	and    $0x1,%edx
56adbe:	eb 09                	jmp    0x56adc9
56adc0:	8b c7                	mov    %edi,%eax
56adc2:	e8 b5 5e 00 00       	call   0x570c7c
56adc7:	8b d0                	mov    %eax,%edx
56adc9:	89 55 cc             	mov    %edx,-0x34(%ebp)
56adcc:	85 d2                	test   %edx,%edx
56adce:	7d 0a                	jge    0x56adda
56add0:	b8 01 00 00 00       	mov    $0x1,%eax
56add5:	e9 37 05 00 00       	jmp    0x56b311
56adda:	8b 4d cc             	mov    -0x34(%ebp),%ecx
56addd:	85 c9                	test   %ecx,%ecx
56addf:	0f 84 07 03 00 00    	je     0x56b0ec
56ade5:	8b 45 bc             	mov    -0x44(%ebp),%eax
56ade8:	8b 4d 14             	mov    0x14(%ebp),%ecx
56adeb:	c1 e1 05             	shl    $0x5,%ecx
56adee:	8b 50 24             	mov    0x24(%eax),%edx
56adf1:	03 d1                	add    %ecx,%edx
56adf3:	89 55 f0             	mov    %edx,-0x10(%ebp)
56adf6:	8b 45 f0             	mov    -0x10(%ebp),%eax
56adf9:	8b 4d 10             	mov    0x10(%ebp),%ecx
56adfc:	8b 50 18             	mov    0x18(%eax),%edx
56adff:	8b c1                	mov    %ecx,%eax
56ae01:	c1 e1 03             	shl    $0x3,%ecx
56ae04:	2b c8                	sub    %eax,%ecx
56ae06:	c1 e1 03             	shl    $0x3,%ecx
56ae09:	03 d1                	add    %ecx,%edx
56ae0b:	89 55 ec             	mov    %edx,-0x14(%ebp)
56ae0e:	33 d2                	xor    %edx,%edx
56ae10:	89 55 a0             	mov    %edx,-0x60(%ebp)
56ae13:	33 c9                	xor    %ecx,%ecx
56ae15:	89 4d b0             	mov    %ecx,-0x50(%ebp)
56ae18:	8b 45 ec             	mov    -0x14(%ebp),%eax
56ae1b:	8b 50 04             	mov    0x4(%eax),%edx
56ae1e:	89 55 e8             	mov    %edx,-0x18(%ebp)
56ae21:	e9 a9 02 00 00       	jmp    0x56b0cf
56ae26:	8b 4d e8             	mov    -0x18(%ebp),%ecx
56ae29:	8b 41 04             	mov    0x4(%ecx),%eax
56ae2c:	85 c0                	test   %eax,%eax
56ae2e:	0f 84 94 02 00 00    	je     0x56b0c8
56ae34:	8b 45 0c             	mov    0xc(%ebp),%eax
56ae37:	8b 55 e8             	mov    -0x18(%ebp),%edx
56ae3a:	c1 e0 03             	shl    $0x3,%eax
56ae3d:	8b 0a                	mov    (%edx),%ecx
56ae3f:	8d 04 80             	lea    (%eax,%eax,4),%eax
56ae42:	03 c8                	add    %eax,%ecx
56ae44:	89 4d ac             	mov    %ecx,-0x54(%ebp)
56ae47:	8b 55 ac             	mov    -0x54(%ebp),%edx
56ae4a:	8b 4a 1c             	mov    0x1c(%edx),%ecx
56ae4d:	85 c9                	test   %ecx,%ecx
56ae4f:	0f 84 73 02 00 00    	je     0x56b0c8
56ae55:	33 c0                	xor    %eax,%eax
56ae57:	33 d2                	xor    %edx,%edx
56ae59:	89 45 a8             	mov    %eax,-0x58(%ebp)
56ae5c:	89 55 a4             	mov    %edx,-0x5c(%ebp)
56ae5f:	8b 4d ac             	mov    -0x54(%ebp),%ecx
56ae62:	8b 71 1c             	mov    0x1c(%ecx),%esi
56ae65:	e9 4d 02 00 00       	jmp    0x56b0b7
56ae6a:	ff 45 a8             	incl   -0x58(%ebp)
56ae6d:	8b 06                	mov    (%esi),%eax
56ae6f:	85 c0                	test   %eax,%eax
56ae71:	75 33                	jne    0x56aea6
56ae73:	8b 55 a8             	mov    -0x58(%ebp),%edx
56ae76:	4a                   	dec    %edx
56ae77:	8b 4d ac             	mov    -0x54(%ebp),%ecx
56ae7a:	8b 41 20             	mov    0x20(%ecx),%eax
56ae7d:	e8 8e ec 00 00       	call   0x579b10
56ae82:	89 45 dc             	mov    %eax,-0x24(%ebp)
56ae85:	57                   	push   %edi
56ae86:	8b 55 ac             	mov    -0x54(%ebp),%edx
56ae89:	8b 4d 08             	mov    0x8(%ebp),%ecx
56ae8c:	41                   	inc    %ecx
56ae8d:	8b 42 20             	mov    0x20(%edx),%eax
56ae90:	8b 55 dc             	mov    -0x24(%ebp),%edx
56ae93:	e8 70 ef 00 00       	call   0x579e08
56ae98:	8b d8                	mov    %eax,%ebx
56ae9a:	85 c0                	test   %eax,%eax
56ae9c:	7d 4d                	jge    0x56aeeb
56ae9e:	83 c8 ff             	or     $0xffffffff,%eax
56aea1:	e9 6b 04 00 00       	jmp    0x56b311
56aea6:	f6 47 10 01          	testb  $0x1,0x10(%edi)
56aeaa:	75 17                	jne    0x56aec3
56aeac:	68 2f 01 00 00       	push   $0x12f
56aeb1:	68 b9 fc 69 00       	push   $0x69fcb9
56aeb6:	68 93 fc 69 00       	push   $0x69fc93
56aebb:	e8 80 fc fe ff       	call   0x55ab40
56aec0:	83 c4 0c             	add    $0xc,%esp
56aec3:	ff 4f 08             	decl   0x8(%edi)
56aec6:	78 0e                	js     0x56aed6
56aec8:	8b 4f 08             	mov    0x8(%edi),%ecx
56aecb:	0f b7 5f 04          	movzwl 0x4(%edi),%ebx
56aecf:	d3 fb                	sar    %cl,%ebx
56aed1:	83 e3 01             	and    $0x1,%ebx
56aed4:	eb 09                	jmp    0x56aedf
56aed6:	8b c7                	mov    %edi,%eax
56aed8:	e8 9f 5d 00 00       	call   0x570c7c
56aedd:	8b d8                	mov    %eax,%ebx
56aedf:	85 db                	test   %ebx,%ebx
56aee1:	7d 08                	jge    0x56aeeb
56aee3:	83 c8 ff             	or     $0xffffffff,%eax
56aee6:	e9 26 04 00 00       	jmp    0x56b311
56aeeb:	85 db                	test   %ebx,%ebx
56aeed:	0f 84 be 01 00 00    	je     0x56b0b1
56aef3:	8b 16                	mov    (%esi),%edx
56aef5:	85 d2                	test   %edx,%edx
56aef7:	75 4d                	jne    0x56af46
56aef9:	8b 45 ac             	mov    -0x54(%ebp),%eax
56aefc:	8b 55 a8             	mov    -0x58(%ebp),%edx
56aeff:	4a                   	dec    %edx
56af00:	bb 01 00 00 00       	mov    $0x1,%ebx
56af05:	8b 40 24             	mov    0x24(%eax),%eax
56af08:	e8 03 ec 00 00       	call   0x579b10
56af0d:	89 45 dc             	mov    %eax,-0x24(%ebp)
56af10:	57                   	push   %edi
56af11:	8b 55 ac             	mov    -0x54(%ebp),%edx
56af14:	8b 42 24             	mov    0x24(%edx),%eax
56af17:	8b cb                	mov    %ebx,%ecx
56af19:	8b 55 dc             	mov    -0x24(%ebp),%edx
56af1c:	e8 e7 ee 00 00       	call   0x579e08
56af21:	89 45 d8             	mov    %eax,-0x28(%ebp)
56af24:	85 c0                	test   %eax,%eax
56af26:	7d 08                	jge    0x56af30
56af28:	83 c8 ff             	or     $0xffffffff,%eax
56af2b:	e9 e1 03 00 00       	jmp    0x56b311
56af30:	8b 55 d8             	mov    -0x28(%ebp),%edx
56af33:	85 d2                	test   %edx,%edx
56af35:	75 03                	jne    0x56af3a
56af37:	43                   	inc    %ebx
56af38:	eb d6                	jmp    0x56af10
56af3a:	8d 43 ff             	lea    -0x1(%ebx),%eax
56af3d:	89 46 10             	mov    %eax,0x10(%esi)
56af40:	8d 14 40             	lea    (%eax,%eax,2),%edx
56af43:	89 56 18             	mov    %edx,0x18(%esi)
56af46:	8b c7                	mov    %edi,%eax
56af48:	e8 7f fc ff ff       	call   0x56abcc
56af4d:	89 45 d4             	mov    %eax,-0x2c(%ebp)
56af50:	85 c0                	test   %eax,%eax
56af52:	7d 08                	jge    0x56af5c
56af54:	83 c8 ff             	or     $0xffffffff,%eax
56af57:	e9 b5 03 00 00       	jmp    0x56b311
56af5c:	8b 5e 0c             	mov    0xc(%esi),%ebx
56af5f:	8b 45 d4             	mov    -0x2c(%ebp),%eax
56af62:	89 45 c8             	mov    %eax,-0x38(%ebp)
56af65:	33 d2                	xor    %edx,%edx
56af67:	89 55 c4             	mov    %edx,-0x3c(%ebp)
56af6a:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
56af6d:	85 c9                	test   %ecx,%ecx
56af6f:	0f 8e 37 01 00 00    	jle    0x56b0ac
56af75:	8b c7                	mov    %edi,%eax
56af77:	e8 f0 fb ff ff       	call   0x56ab6c
56af7c:	89 45 e0             	mov    %eax,-0x20(%ebp)
56af7f:	85 c0                	test   %eax,%eax
56af81:	7d 08                	jge    0x56af8b
56af83:	83 c8 ff             	or     $0xffffffff,%eax
56af86:	e9 86 03 00 00       	jmp    0x56b311
56af8b:	8b 55 e0             	mov    -0x20(%ebp),%edx
56af8e:	01 56 14             	add    %edx,0x14(%esi)
56af91:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
56af94:	85 c9                	test   %ecx,%ecx
56af96:	0f 8e 10 01 00 00    	jle    0x56b0ac
56af9c:	8b 46 18             	mov    0x18(%esi),%eax
56af9f:	8b 0e                	mov    (%esi),%ecx
56afa1:	8b d0                	mov    %eax,%edx
56afa3:	03 d1                	add    %ecx,%edx
56afa5:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
56afa8:	03 d1                	add    %ecx,%edx
56afaa:	89 55 98             	mov    %edx,-0x68(%ebp)
56afad:	8b 55 b8             	mov    -0x48(%ebp),%edx
56afb0:	8a 92 d6 00 00 00    	mov    0xd6(%edx),%dl
56afb6:	f6 c2 01             	test   $0x1,%dl
56afb9:	0f 95 c1             	setne  %cl
56afbc:	83 e1 01             	and    $0x1,%ecx
56afbf:	f6 c2 04             	test   $0x4,%dl
56afc2:	0f 95 c2             	setne  %dl
56afc5:	83 e2 01             	and    $0x1,%edx
56afc8:	51                   	push   %ecx
56afc9:	52                   	push   %edx
56afca:	b9 10 27 00 00       	mov    $0x2710,%ecx
56afcf:	8b 55 98             	mov    -0x68(%ebp),%edx
56afd2:	92                   	xchg   %eax,%edx
56afd3:	e8 50 1f 00 00       	call   0x56cf28
56afd8:	89 45 94             	mov    %eax,-0x6c(%ebp)
56afdb:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
56afde:	85 c9                	test   %ecx,%ecx
56afe0:	75 58                	jne    0x56b03a
56afe2:	85 db                	test   %ebx,%ebx
56afe4:	75 54                	jne    0x56b03a
56afe6:	e8 41 76 ff ff       	call   0x56262c
56afeb:	8b d8                	mov    %eax,%ebx
56afed:	85 c0                	test   %eax,%eax
56afef:	75 08                	jne    0x56aff9
56aff1:	83 c8 ff             	or     $0xffffffff,%eax
56aff4:	e9 18 03 00 00       	jmp    0x56b311
56aff9:	8d 46 04             	lea    0x4(%esi),%eax
56affc:	8b cb                	mov    %ebx,%ecx
56affe:	8b 56 08             	mov    0x8(%esi),%edx
56b001:	e8 d2 75 ff ff       	call   0x5625d8
56b006:	8b 46 0c             	mov    0xc(%esi),%eax
56b009:	85 c0                	test   %eax,%eax
56b00b:	75 03                	jne    0x56b010
56b00d:	89 5e 0c             	mov    %ebx,0xc(%esi)
56b010:	8b 55 98             	mov    -0x68(%ebp),%edx
56b013:	89 53 08             	mov    %edx,0x8(%ebx)
56b016:	8b 4d b8             	mov    -0x48(%ebp),%ecx
56b019:	8b 56 18             	mov    0x18(%esi),%edx
56b01c:	8b 43 08             	mov    0x8(%ebx),%eax
56b01f:	f6 81 d6 00 00 00 01 	testb  $0x1,0xd6(%ecx)
56b026:	0f 95 c1             	setne  %cl
56b029:	83 e1 01             	and    $0x1,%ecx
56b02c:	e8 bb 1e 00 00       	call   0x56ceec
56b031:	89 43 14             	mov    %eax,0x14(%ebx)
56b034:	8b 45 94             	mov    -0x6c(%ebp),%eax
56b037:	89 43 10             	mov    %eax,0x10(%ebx)
56b03a:	8b 55 d4             	mov    -0x2c(%ebp),%edx
56b03d:	8b 4d 94             	mov    -0x6c(%ebp),%ecx