56aa0f:	83 c3 14             	add    $0x14,%ebx
56aa12:	83 c5 3c             	add    $0x3c,%ebp
56aa15:	8b 16                	mov    (%esi),%edx
56aa17:	3b fa                	cmp    %edx,%edi
56aa19:	7c cc                	jl     0x56a9e7
56aa1b:	8b 44 24 10          	mov    0x10(%esp),%eax
56aa1f:	8b 54 24 08          	mov    0x8(%esp),%edx
56aa23:	0f b7 00             	movzwl (%eax),%eax
56aa26:	8b 4a 04             	mov    0x4(%edx),%ecx
56aa29:	3b c1                	cmp    %ecx,%eax
56aa2b:	7e 07                	jle    0x56aa34
56aa2d:	8b 54 24 08          	mov    0x8(%esp),%edx
56aa31:	89 42 04             	mov    %eax,0x4(%edx)
56aa34:	ff 44 24 0c          	incl   0xc(%esp)
56aa38:	81 44 24 10 04 02 00 	addl   $0x204,0x10(%esp)
56aa3f:	00
56aa40:	83 c6 10             	add    $0x10,%esi
56aa43:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa47:	8b 48 08             	mov    0x8(%eax),%ecx
56aa4a:	8b 44 24 0c          	mov    0xc(%esp),%eax
56aa4e:	3b c8                	cmp    %eax,%ecx
56aa50:	0f 8f 5d ff ff ff    	jg     0x56a9b3
56aa56:	8b 54 24 04          	mov    0x4(%esp),%edx
56aa5a:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa5e:	0f b7 4a 16          	movzwl 0x16(%edx),%ecx
56aa62:	89 08                	mov    %ecx,(%eax)
56aa64:	8b 54 24 04          	mov    0x4(%esp),%edx
56aa68:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa6c:	8b 4a 04             	mov    0x4(%edx),%ecx
56aa6f:	89 48 38             	mov    %ecx,0x38(%eax)
56aa72:	8b 54 24 04          	mov    0x4(%esp),%edx
56aa76:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa7a:	8b 4a 08             	mov    0x8(%edx),%ecx
56aa7d:	89 48 3c             	mov    %ecx,0x3c(%eax)
56aa80:	8b 54 24 04          	mov    0x4(%esp),%edx
56aa84:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa88:	8b 4a 0c             	mov    0xc(%edx),%ecx
56aa8b:	89 48 40             	mov    %ecx,0x40(%eax)
56aa8e:	8b 54 24 04          	mov    0x4(%esp),%edx
56aa92:	8b 44 24 08          	mov    0x8(%esp),%eax
56aa96:	8b 4a 10             	mov    0x10(%edx),%ecx
56aa99:	89 48 44             	mov    %ecx,0x44(%eax)
56aa9c:	33 c9                	xor    %ecx,%ecx
56aa9e:	8b 54 24 08          	mov    0x8(%esp),%edx
56aaa2:	89 4a 10             	mov    %ecx,0x10(%edx)
56aaa5:	33 d2                	xor    %edx,%edx
56aaa7:	8b 44 24 08          	mov    0x8(%esp),%eax
56aaab:	89 50 14             	mov    %edx,0x14(%eax)
56aaae:	33 c0                	xor    %eax,%eax
56aab0:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56aab4:	89 41 28             	mov    %eax,0x28(%ecx)
56aab7:	33 c9                	xor    %ecx,%ecx
56aab9:	8b 54 24 08          	mov    0x8(%esp),%edx
56aabd:	89 4a 2c             	mov    %ecx,0x2c(%edx)
56aac0:	33 d2                	xor    %edx,%edx
56aac2:	8b 44 24 08          	mov    0x8(%esp),%eax
56aac6:	89 50 18             	mov    %edx,0x18(%eax)
56aac9:	33 c0                	xor    %eax,%eax
56aacb:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56aacf:	89 41 1c             	mov    %eax,0x1c(%ecx)
56aad2:	33 c9                	xor    %ecx,%ecx
56aad4:	8b 54 24 08          	mov    0x8(%esp),%edx
56aad8:	89 4a 20             	mov    %ecx,0x20(%edx)
56aadb:	33 d2                	xor    %edx,%edx
56aadd:	8b 44 24 08          	mov    0x8(%esp),%eax
56aae1:	89 50 24             	mov    %edx,0x24(%eax)
56aae4:	33 c0                	xor    %eax,%eax
56aae6:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56aaea:	89 41 30             	mov    %eax,0x30(%ecx)
56aaed:	33 c9                	xor    %ecx,%ecx
56aaef:	8b 54 24 08          	mov    0x8(%esp),%edx
56aaf3:	89 4a 34             	mov    %ecx,0x34(%edx)
56aaf6:	8b 44 24 08          	mov    0x8(%esp),%eax
56aafa:	c7 40 5c ff ff ff ff 	movl   $0xffffffff,0x5c(%eax)
56ab01:	8b 54 24 04          	mov    0x4(%esp),%edx
56ab05:	8b 44 24 08          	mov    0x8(%esp),%eax
56ab09:	8a 4a 15             	mov    0x15(%edx),%cl
56ab0c:	88 48 50             	mov    %cl,0x50(%eax)
56ab0f:	8b 54 24 08          	mov    0x8(%esp),%edx
56ab13:	66 c7 42 54 00 00    	movw   $0x0,0x54(%edx)
56ab19:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56ab1d:	8b 54 24 08          	mov    0x8(%esp),%edx
56ab21:	66 8b 41 08          	mov    0x8(%ecx),%ax
56ab25:	66 89 42 56          	mov    %ax,0x56(%edx)
56ab29:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56ab2d:	c6 41 51 00          	movb   $0x0,0x51(%ecx)
56ab31:	8b 44 24 08          	mov    0x8(%esp),%eax
56ab35:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56ab39:	8a 50 04             	mov    0x4(%eax),%dl
56ab3c:	88 51 52             	mov    %dl,0x52(%ecx)
56ab3f:	8b 44 24 08          	mov    0x8(%esp),%eax
56ab43:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56ab47:	66 8b 10             	mov    (%eax),%dx
56ab4a:	66 89 51 58          	mov    %dx,0x58(%ecx)
56ab4e:	33 d2                	xor    %edx,%edx
56ab50:	8b 44 24 08          	mov    0x8(%esp),%eax
56ab54:	89 50 48             	mov    %edx,0x48(%eax)
56ab57:	33 c0                	xor    %eax,%eax
56ab59:	8b 4c 24 08          	mov    0x8(%esp),%ecx
56ab5d:	89 41 64             	mov    %eax,0x64(%ecx)
56ab60:	8b 44 24 08          	mov    0x8(%esp),%eax
56ab64:	83 c4 14             	add    $0x14,%esp
56ab67:	5d                   	pop    %ebp
56ab68:	5f                   	pop    %edi
56ab69:	5e                   	pop    %esi
56ab6a:	5b                   	pop    %ebx
56ab6b:	c3                   	ret
56ab6c:	53                   	push   %ebx
56ab6d:	56                   	push   %esi
56ab6e:	57                   	push   %edi
56ab6f:	8b d8                	mov    %eax,%ebx
56ab71:	33 ff                	xor    %edi,%edi
56ab73:	f6 43 10 01          	testb  $0x1,0x10(%ebx)
56ab77:	75 17                	jne    0x56ab90
56ab79:	68 a3 00 00 00       	push   $0xa3
56ab7e:	68 d5 fb 69 00       	push   $0x69fbd5
56ab83:	68 b0 fb 69 00       	push   $0x69fbb0
56ab88:	e8 b3 ff fe ff       	call   0x55ab40
56ab8d:	83 c4 0c             	add    $0xc,%esp
56ab90:	ff 4b 08             	decl   0x8(%ebx)
56ab93:	78 0e                	js     0x56aba3
56ab95:	8b 4b 08             	mov    0x8(%ebx),%ecx
56ab98:	0f b7 73 04          	movzwl 0x4(%ebx),%esi
56ab9c:	d3 fe                	sar    %cl,%esi
56ab9e:	83 e6 01             	and    $0x1,%esi
56aba1:	eb 09                	jmp    0x56abac
56aba3:	8b c3                	mov    %ebx,%eax
56aba5:	e8 d2 60 00 00       	call   0x570c7c
56abaa:	8b f0                	mov    %eax,%esi
56abac:	85 f6                	test   %esi,%esi
56abae:	7d 05                	jge    0x56abb5
56abb0:	83 c8 ff             	or     $0xffffffff,%eax
56abb3:	eb 13                	jmp    0x56abc8
56abb5:	f6 03 02             	testb  $0x2,(%ebx)
56abb8:	74 05                	je     0x56abbf
56abba:	83 c8 ff             	or     $0xffffffff,%eax
56abbd:	eb 09                	jmp    0x56abc8
56abbf:	85 f6                	test   %esi,%esi
56abc1:	74 03                	je     0x56abc6
56abc3:	47                   	inc    %edi
56abc4:	eb ad                	jmp    0x56ab73
56abc6:	8b c7                	mov    %edi,%eax
56abc8:	5f                   	pop    %edi
56abc9:	5e                   	pop    %esi
56abca:	5b                   	pop    %ebx
56abcb:	c3                   	ret
56abcc:	53                   	push   %ebx
56abcd:	8b d8                	mov    %eax,%ebx
56abcf:	56                   	push   %esi
56abd0:	f6 43 10 01          	testb  $0x1,0x10(%ebx)
56abd4:	75 17                	jne    0x56abed
56abd6:	68 b6 00 00 00       	push   $0xb6
56abdb:	68 06 fc 69 00       	push   $0x69fc06
56abe0:	68 e1 fb 69 00       	push   $0x69fbe1
56abe5:	e8 56 ff fe ff       	call   0x55ab40
56abea:	83 c4 0c             	add    $0xc,%esp
56abed:	ff 4b 08             	decl   0x8(%ebx)
56abf0:	78 0e                	js     0x56ac00
56abf2:	8b 4b 08             	mov    0x8(%ebx),%ecx
56abf5:	0f b7 73 04          	movzwl 0x4(%ebx),%esi
56abf9:	d3 fe                	sar    %cl,%esi
56abfb:	83 e6 01             	and    $0x1,%esi
56abfe:	eb 09                	jmp    0x56ac09
56ac00:	8b c3                	mov    %ebx,%eax
56ac02:	e8 75 60 00 00       	call   0x570c7c
56ac07:	8b f0                	mov    %eax,%esi
56ac09:	85 f6                	test   %esi,%esi
56ac0b:	0f 8e 95 00 00 00    	jle    0x56aca6
56ac11:	f6 43 10 01          	testb  $0x1,0x10(%ebx)
56ac15:	75 17                	jne    0x56ac2e
56ac17:	68 b7 00 00 00       	push   $0xb7
56ac1c:	68 37 fc 69 00       	push   $0x69fc37
56ac21:	68 12 fc 69 00       	push   $0x69fc12
56ac26:	e8 15 ff fe ff       	call   0x55ab40
56ac2b:	83 c4 0c             	add    $0xc,%esp
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