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
56b040:	3b d1                	cmp    %ecx,%edx
56b042:	7d 05                	jge    0x56b049
56b044:	8b 45 d4             	mov    -0x2c(%ebp),%eax
56b047:	eb 03                	jmp    0x56b04c
56b049:	8b 45 94             	mov    -0x6c(%ebp),%eax
56b04c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
56b04f:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56b052:	01 55 c4             	add    %edx,-0x3c(%ebp)
56b055:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56b058:	29 4d d4             	sub    %ecx,-0x2c(%ebp)
56b05b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
56b05e:	e8 d1 e4 00 00       	call   0x579534
56b063:	8b d0                	mov    %eax,%edx
56b065:	8b 4e 14             	mov    0x14(%esi),%ecx
56b068:	03 d1                	add    %ecx,%edx
56b06a:	8b c7                	mov    %edi,%eax
56b06c:	e8 13 5a 00 00       	call   0x570a84
56b071:	89 45 d0             	mov    %eax,-0x30(%ebp)
56b074:	85 c0                	test   %eax,%eax
56b076:	7d 08                	jge    0x56b080
56b078:	83 c8 ff             	or     $0xffffffff,%eax
56b07b:	e9 91 02 00 00       	jmp    0x56b311
56b080:	8b 55 9c             	mov    -0x64(%ebp),%edx
56b083:	85 d2                	test   %edx,%edx
56b085:	75 14                	jne    0x56b09b
56b087:	8b 4d 08             	mov    0x8(%ebp),%ecx
56b08a:	89 4b 24             	mov    %ecx,0x24(%ebx)
56b08d:	8b 45 e4             	mov    -0x1c(%ebp),%eax
56b090:	01 43 0c             	add    %eax,0xc(%ebx)
56b093:	8b 55 d0             	mov    -0x30(%ebp),%edx
56b096:	89 53 1c             	mov    %edx,0x1c(%ebx)
56b099:	8b 1b                	mov    (%ebx),%ebx
56b09b:	8b 4d d0             	mov    -0x30(%ebp),%ecx
56b09e:	01 4d a0             	add    %ecx,-0x60(%ebp)
56b0a1:	8b 45 d4             	mov    -0x2c(%ebp),%eax
56b0a4:	85 c0                	test   %eax,%eax
56b0a6:	0f 8f f0 fe ff ff    	jg     0x56af9c
56b0ac:	8b 55 c8             	mov    -0x38(%ebp),%edx
56b0af:	01 16                	add    %edx,(%esi)
56b0b1:	ff 45 a4             	incl   -0x5c(%ebp)
56b0b4:	83 c6 2c             	add    $0x2c,%esi
56b0b7:	8b 4d ac             	mov    -0x54(%ebp),%ecx
56b0ba:	8b 41 18             	mov    0x18(%ecx),%eax
56b0bd:	8b 55 a4             	mov    -0x5c(%ebp),%edx
56b0c0:	3b c2                	cmp    %edx,%eax
56b0c2:	0f 8f a2 fd ff ff    	jg     0x56ae6a
56b0c8:	ff 45 b0             	incl   -0x50(%ebp)
56b0cb:	83 45 e8 20          	addl   $0x20,-0x18(%ebp)
56b0cf:	8b 4d ec             	mov    -0x14(%ebp),%ecx
56b0d2:	8b 01                	mov    (%ecx),%eax
56b0d4:	8b 55 b0             	mov    -0x50(%ebp),%edx
56b0d7:	3b c2                	cmp    %edx,%eax
56b0d9:	0f 8f 47 fd ff ff    	jg     0x56ae26
56b0df:	33 c9                	xor    %ecx,%ecx
56b0e1:	33 d2                	xor    %edx,%edx
56b0e3:	8b c7                	mov    %edi,%eax
56b0e5:	e8 72 5d 00 00       	call   0x570e5c
56b0ea:	eb 2c                	jmp    0x56b118
56b0ec:	33 c9                	xor    %ecx,%ecx
56b0ee:	ba 7f 00 00 00       	mov    $0x7f,%edx
56b0f3:	8b c7                	mov    %edi,%eax
56b0f5:	e8 62 5d 00 00       	call   0x570e5c
56b0fa:	85 c0                	test   %eax,%eax
56b0fc:	74 1a                	je     0x56b118
56b0fe:	68 c5 fc 69 00       	push   $0x69fcc5
56b103:	68 80 2e 6a 00       	push   $0x6a2e80
56b108:	e8 bf ef 00 00       	call   0x57a0cc
56b10d:	83 c4 08             	add    $0x8,%esp
56b110:	83 c8 ff             	or     $0xffffffff,%eax
56b113:	e9 f9 01 00 00       	jmp    0x56b311
56b118:	8b c7                	mov    %edi,%eax
56b11a:	e8 b5 57 00 00       	call   0x5708d4
56b11f:	8b 55 f8             	mov    -0x8(%ebp),%edx
56b122:	8b 4a 3c             	mov    0x3c(%edx),%ecx
56b125:	89 4d 88             	mov    %ecx,-0x78(%ebp)
56b128:	8b 45 88             	mov    -0x78(%ebp),%eax
56b12b:	8b 55 8c             	mov    -0x74(%ebp),%edx
56b12e:	2b c2                	sub    %edx,%eax
56b130:	89 45 90             	mov    %eax,-0x70(%ebp)
56b133:	e8 14 ee 00 00       	call   0x579f4c
56b138:	83 f8 05             	cmp    $0x5,%eax
56b13b:	7c 1a                	jl     0x56b157
56b13d:	8b 4d a0             	mov    -0x60(%ebp),%ecx
56b140:	51                   	push   %ecx
56b141:	8b 45 90             	mov    -0x70(%ebp),%eax
56b144:	50                   	push   %eax
56b145:	68 d7 fc 69 00       	push   $0x69fcd7
56b14a:	68 80 2e 6a 00       	push   $0x6a2e80
56b14f:	e8 78 ef 00 00       	call   0x57a0cc
56b154:	83 c4 10             	add    $0x10,%esp
56b157:	8b 55 b4             	mov    -0x4c(%ebp),%edx
56b15a:	f6 42 0d 04          	testb  $0x4,0xd(%edx)
56b15e:	74 72                	je     0x56b1d2
56b160:	8b 45 f8             	mov    -0x8(%ebp),%eax
56b163:	e8 00 07 00 00       	call   0x56b868
56b168:	3d 92 ff 00 00       	cmp    $0xff92,%eax
56b16d:	75 63                	jne    0x56b1d2
56b16f:	8b 55 fc             	mov    -0x4(%ebp),%edx
56b172:	8b 45 f8             	mov    -0x8(%ebp),%eax
56b175:	8b 52 68             	mov    0x68(%edx),%edx
56b178:	e8 bb ab 00 00       	call   0x575d38
56b17d:	89 45 c0             	mov    %eax,-0x40(%ebp)
56b180:	85 c0                	test   %eax,%eax
56b182:	75 1a                	jne    0x56b19e
56b184:	68 f0 fc 69 00       	push   $0x69fcf0
56b189:	68 80 2e 6a 00       	push   $0x6a2e80
56b18e:	e8 39 ef 00 00       	call   0x57a0cc
56b193:	83 c4 08             	add    $0x8,%esp
56b196:	83 c8 ff             	or     $0xffffffff,%eax
56b199:	e9 73 01 00 00       	jmp    0x56b311
56b19e:	8b 55 c0             	mov    -0x40(%ebp),%edx
56b1a1:	66 81 3a 92 ff       	cmpw   $0xff92,(%edx)
56b1a6:	74 22                	je     0x56b1ca
56b1a8:	8b 45 c0             	mov    -0x40(%ebp),%eax
56b1ab:	e8 78 ae 00 00       	call   0x576028
56b1b0:	68 11 fd 69 00       	push   $0x69fd11
56b1b5:	68 80 2e 6a 00       	push   $0x6a2e80
56b1ba:	e8 0d ef 00 00       	call   0x57a0cc
56b1bf:	83 c4 08             	add    $0x8,%esp
56b1c2:	83 c8 ff             	or     $0xffffffff,%eax
56b1c5:	e9 47 01 00 00       	jmp    0x56b311
56b1ca:	8b 45 c0             	mov    -0x40(%ebp),%eax
56b1cd:	e8 56 ae 00 00       	call   0x576028
56b1d2:	e8 75 ed 00 00       	call   0x579f4c
56b1d7:	48                   	dec    %eax
56b1d8:	7c 19                	jl     0x56b1f3
56b1da:	8b 55 f4             	mov    -0xc(%ebp),%edx
56b1dd:	8b 4a 3c             	mov    0x3c(%edx),%ecx
56b1e0:	51                   	push   %ecx
56b1e1:	68 2d fd 69 00       	push   $0x69fd2d
56b1e6:	68 80 2e 6a 00       	push   $0x6a2e80
56b1eb:	e8 dc ee 00 00       	call   0x57a0cc
56b1f0:	83 c4 0c             	add    $0xc,%esp
56b1f3:	8b 45 9c             	mov    -0x64(%ebp),%eax
56b1f6:	85 c0                	test   %eax,%eax
56b1f8:	0f 85 fa 00 00 00    	jne    0x56b2f8
56b1fe:	8b 55 bc             	mov    -0x44(%ebp),%edx
56b201:	8b 45 14             	mov    0x14(%ebp),%eax
56b204:	c1 e0 05             	shl    $0x5,%eax
56b207:	8b 4a 24             	mov    0x24(%edx),%ecx
56b20a:	03 c8                	add    %eax,%ecx
56b20c:	89 4d f0             	mov    %ecx,-0x10(%ebp)
56b20f:	8b 55 f0             	mov    -0x10(%ebp),%edx
56b212:	8b 45 10             	mov    0x10(%ebp),%eax
56b215:	8b 4a 18             	mov    0x18(%edx),%ecx
56b218:	8b d0                	mov    %eax,%edx
56b21a:	c1 e0 03             	shl    $0x3,%eax
56b21d:	2b c2                	sub    %edx,%eax
56b21f:	c1 e0 03             	shl    $0x3,%eax
56b222:	03 c8                	add    %eax,%ecx
56b224:	89 4d ec             	mov    %ecx,-0x14(%ebp)
56b227:	33 c9                	xor    %ecx,%ecx
56b229:	89 4d b0             	mov    %ecx,-0x50(%ebp)
56b22c:	8b 45 ec             	mov    -0x14(%ebp),%eax
56b22f:	8b 50 04             	mov    0x4(%eax),%edx
56b232:	89 55 e8             	mov    %edx,-0x18(%ebp)
56b235:	e9 ac 00 00 00       	jmp    0x56b2e6
56b23a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
56b23d:	8b 41 04             	mov    0x4(%ecx),%eax
56b240:	85 c0                	test   %eax,%eax
56b242:	0f 84 97 00 00 00    	je     0x56b2df
56b248:	8b 45 0c             	mov    0xc(%ebp),%eax
56b24b:	8b 55 e8             	mov    -0x18(%ebp),%edx
56b24e:	c1 e0 03             	shl    $0x3,%eax
56b251:	8b 0a                	mov    (%edx),%ecx
56b253:	8d 04 80             	lea    (%eax,%eax,4),%eax
56b256:	03 c8                	add    %eax,%ecx
56b258:	89 4d ac             	mov    %ecx,-0x54(%ebp)
56b25b:	8b 55 ac             	mov    -0x54(%ebp),%edx
56b25e:	8b 4a 1c             	mov    0x1c(%edx),%ecx
56b261:	85 c9                	test   %ecx,%ecx
56b263:	74 7a                	je     0x56b2df
56b265:	33 c0                	xor    %eax,%eax
56b267:	89 45 a4             	mov    %eax,-0x5c(%ebp)
56b26a:	8b 55 ac             	mov    -0x54(%ebp),%edx