56667a:	7c 10                	jl     0x56668c
56667c:	8b cf                	mov    %edi,%ecx
56667e:	8b 45 c8             	mov    -0x38(%ebp),%eax
566681:	8b 00                	mov    (%eax),%eax
566683:	99                   	cltd
566684:	33 c2                	xor    %edx,%eax
566686:	2b c2                	sub    %edx,%eax
566688:	d3 f8                	sar    %cl,%eax
56668a:	eb 10                	jmp    0x56669c
56668c:	8b 45 c8             	mov    -0x38(%ebp),%eax
56668f:	8b cf                	mov    %edi,%ecx
566691:	f7 d9                	neg    %ecx
566693:	8b 00                	mov    (%eax),%eax
566695:	99                   	cltd
566696:	33 c2                	xor    %edx,%eax
566698:	2b c2                	sub    %edx,%eax
56669a:	d3 e0                	shl    %cl,%eax
56669c:	83 e0 7f             	and    $0x7f,%eax
56669f:	8b 0c 85 28 10 6b 00 	mov    0x6b1028(,%eax,4),%ecx
5666a6:	8b 45 08             	mov    0x8(%ebp),%eax
5666a9:	01 08                	add    %ecx,(%eax)
5666ab:	8b 55 c8             	mov    -0x38(%ebp),%edx
5666ae:	8b 0a                	mov    (%edx),%ecx
5666b0:	85 c9                	test   %ecx,%ecx
5666b2:	7d 07                	jge    0x5666bb
5666b4:	b8 01 00 00 00       	mov    $0x1,%eax
5666b9:	eb 02                	jmp    0x5666bd
5666bb:	33 c0                	xor    %eax,%eax
5666bd:	89 45 a4             	mov    %eax,-0x5c(%ebp)
5666c0:	8b 55 a8             	mov    -0x58(%ebp),%edx
5666c3:	8b 43 10             	mov    0x10(%ebx),%eax
5666c6:	81 e2 f0 0f 00 00    	and    $0xff0,%edx
5666cc:	c1 fa 04             	sar    $0x4,%edx
5666cf:	8b 0c 95 18 c8 6a 00 	mov    0x6ac818(,%edx,4),%ecx
5666d6:	c1 e1 02             	shl    $0x2,%ecx
5666d9:	03 c8                	add    %eax,%ecx
5666db:	89 4b 14             	mov    %ecx,0x14(%ebx)
5666de:	8b 53 14             	mov    0x14(%ebx),%edx
5666e1:	8b 0a                	mov    (%edx),%ecx
5666e3:	8b 55 a8             	mov    -0x58(%ebp),%edx
5666e6:	81 e2 f0 0f 00 00    	and    $0xff0,%edx
5666ec:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
5666f0:	c1 fa 04             	sar    $0x4,%edx
5666f3:	8b 0c 95 14 c4 6a 00 	mov    0x6ac414(,%edx,4),%ecx
5666fa:	8b 55 a4             	mov    -0x5c(%ebp),%edx
5666fd:	33 ca                	xor    %edx,%ecx
5666ff:	3b c1                	cmp    %ecx,%eax
566701:	75 28                	jne    0x56672b
566703:	8b 43 14             	mov    0x14(%ebx),%eax
566706:	8b 08                	mov    (%eax),%ecx
566708:	0f b7 01             	movzwl (%ecx),%eax
56670b:	29 43 04             	sub    %eax,0x4(%ebx)
56670e:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
566712:	75 09                	jne    0x56671d
566714:	8b c3                	mov    %ebx,%eax
566716:	e8 31 bd 00 00       	call   0x57244c
56671b:	eb 15                	jmp    0x566732
56671d:	8b 53 14             	mov    0x14(%ebx),%edx
566720:	8b 0a                	mov    (%edx),%ecx
566722:	0f b7 01             	movzwl (%ecx),%eax
566725:	01 03                	add    %eax,(%ebx)
566727:	8b 03                	mov    (%ebx),%eax
566729:	eb 07                	jmp    0x566732
56672b:	8b c3                	mov    %ebx,%eax
56672d:	e8 fa bf 00 00       	call   0x57272c
566732:	8b 55 e0             	mov    -0x20(%ebp),%edx
566735:	c1 e2 02             	shl    $0x2,%edx
566738:	52                   	push   %edx
566739:	8b d6                	mov    %esi,%edx
56673b:	58                   	pop    %eax
56673c:	2b d0                	sub    %eax,%edx
56673e:	8b 45 e0             	mov    -0x20(%ebp),%eax
566741:	c1 e0 02             	shl    $0x2,%eax
566744:	03 c6                	add    %esi,%eax
566746:	eb 33                	jmp    0x56677b
566748:	83 48 fc 01          	orl    $0x1,-0x4(%eax)
56674c:	83 48 04 08          	orl    $0x8,0x4(%eax)
566750:	8b 55 a4             	mov    -0x5c(%ebp),%edx
566753:	85 d2                	test   %edx,%edx
566755:	74 14                	je     0x56676b
566757:	81 08 10 01 00 00    	orl    $0x110,(%eax)
56675d:	81 4e fc 20 02 00 00 	orl    $0x220,-0x4(%esi)
566764:	81 4e 04 80 08 00 00 	orl    $0x880,0x4(%esi)
56676b:	83 08 10             	orl    $0x10,(%eax)
56676e:	83 4e fc 20          	orl    $0x20,-0x4(%esi)
566772:	81 4e 04 80 00 00 00 	orl    $0x80,0x4(%esi)
566779:	eb 44                	jmp    0x5667bf
56677b:	83 4a fc 02          	orl    $0x2,-0x4(%edx)
56677f:	83 4a 04 04          	orl    $0x4,0x4(%edx)
566783:	83 48 fc 01          	orl    $0x1,-0x4(%eax)
566787:	83 48 04 08          	orl    $0x8,0x4(%eax)
56678b:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
56678e:	85 c9                	test   %ecx,%ecx
566790:	74 1c                	je     0x5667ae
566792:	81 0a 40 04 00 00    	orl    $0x440,(%edx)
566798:	81 08 10 01 00 00    	orl    $0x110,(%eax)
56679e:	81 4e fc 20 02 00 00 	orl    $0x220,-0x4(%esi)
5667a5:	81 4e 04 80 08 00 00 	orl    $0x880,0x4(%esi)
5667ac:	eb 11                	jmp    0x5667bf
5667ae:	83 0a 40             	orl    $0x40,(%edx)
5667b1:	83 08 10             	orl    $0x10,(%eax)
5667b4:	83 4e fc 20          	orl    $0x20,-0x4(%esi)
5667b8:	81 4e 04 80 00 00 00 	orl    $0x80,0x4(%esi)
5667bf:	81 0e 00 10 00 00    	orl    $0x1000,(%esi)
5667c5:	81 0e 00 40 00 00    	orl    $0x4000,(%esi)
5667cb:	ff 4d bc             	decl   -0x44(%ebp)
5667ce:	8b 45 bc             	mov    -0x44(%ebp),%eax
5667d1:	85 c0                	test   %eax,%eax
5667d3:	0f 8e 3f 02 00 00    	jle    0x566a18
5667d9:	8b 55 e0             	mov    -0x20(%ebp),%edx
5667dc:	8b 4d dc             	mov    -0x24(%ebp),%ecx
5667df:	c1 e2 02             	shl    $0x2,%edx
5667e2:	c1 e1 02             	shl    $0x2,%ecx
5667e5:	03 f2                	add    %edx,%esi
5667e7:	01 4d c8             	add    %ecx,-0x38(%ebp)
5667ea:	8b 06                	mov    (%esi),%eax
5667ec:	89 45 a0             	mov    %eax,-0x60(%ebp)
5667ef:	f6 45 a0 ff          	testb  $0xff,-0x60(%ebp)
5667f3:	0f 84 1f 02 00 00    	je     0x566a18
5667f9:	f6 45 a1 50          	testb  $0x50,-0x5f(%ebp)
5667fd:	0f 85 15 02 00 00    	jne    0x566a18
566803:	8b 55 c8             	mov    -0x38(%ebp),%edx
566806:	8b 02                	mov    (%edx),%eax
566808:	99                   	cltd
566809:	33 c2                	xor    %edx,%eax
56680b:	2b c2                	sub    %edx,%eax
56680d:	8b 4d f0             	mov    -0x10(%ebp),%ecx
566810:	23 c1                	and    %ecx,%eax
566812:	74 07                	je     0x56681b
566814:	b8 01 00 00 00       	mov    $0x1,%eax
566819:	eb 02                	jmp    0x56681d
56681b:	33 c0                	xor    %eax,%eax
56681d:	89 45 9c             	mov    %eax,-0x64(%ebp)
566820:	8b 55 fc             	mov    -0x4(%ebp),%edx
566823:	8b 4d a0             	mov    -0x60(%ebp),%ecx
566826:	c1 e2 08             	shl    $0x8,%edx
566829:	81 e1 ff 00 00 00    	and    $0xff,%ecx
56682f:	0b d1                	or     %ecx,%edx
566831:	8b 04 95 10 b4 6a 00 	mov    0x6ab410(,%edx,4),%eax
566838:	8b 53 10             	mov    0x10(%ebx),%edx
56683b:	c1 e0 02             	shl    $0x2,%eax
56683e:	03 c2                	add    %edx,%eax
566840:	89 43 14             	mov    %eax,0x14(%ebx)
566843:	8b 4b 14             	mov    0x14(%ebx),%ecx
566846:	8b 01                	mov    (%ecx),%eax
566848:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
56684b:	0f b7 50 02          	movzwl 0x2(%eax),%edx
56684f:	3b d1                	cmp    %ecx,%edx
566851:	75 28                	jne    0x56687b
566853:	8b 43 14             	mov    0x14(%ebx),%eax
566856:	8b 10                	mov    (%eax),%edx
566858:	0f b7 0a             	movzwl (%edx),%ecx
56685b:	29 4b 04             	sub    %ecx,0x4(%ebx)
56685e:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
566862:	75 09                	jne    0x56686d
566864:	8b c3                	mov    %ebx,%eax
566866:	e8 e1 bb 00 00       	call   0x57244c
56686b:	eb 15                	jmp    0x566882
56686d:	8b 53 14             	mov    0x14(%ebx),%edx
566870:	8b 0a                	mov    (%edx),%ecx
566872:	0f b7 01             	movzwl (%ecx),%eax
566875:	01 03                	add    %eax,(%ebx)
566877:	8b 03                	mov    (%ebx),%eax
566879:	eb 07                	jmp    0x566882
56687b:	8b c3                	mov    %ebx,%eax
56687d:	e8 aa be 00 00       	call   0x57272c
566882:	8b 55 9c             	mov    -0x64(%ebp),%edx
566885:	85 d2                	test   %edx,%edx
566887:	0f 84 85 01 00 00    	je     0x566a12
56688d:	8d 4f 06             	lea    0x6(%edi),%ecx
566890:	83 f9 06             	cmp    $0x6,%ecx
566893:	7e 30                	jle    0x5668c5
566895:	85 ff                	test   %edi,%edi
566897:	7c 10                	jl     0x5668a9
566899:	8b cf                	mov    %edi,%ecx
56689b:	8b 45 c8             	mov    -0x38(%ebp),%eax
56689e:	8b 00                	mov    (%eax),%eax
5668a0:	99                   	cltd
5668a1:	33 c2                	xor    %edx,%eax
5668a3:	2b c2                	sub    %edx,%eax
5668a5:	d3 f8                	sar    %cl,%eax
5668a7:	eb 10                	jmp    0x5668b9
5668a9:	8b 45 c8             	mov    -0x38(%ebp),%eax
5668ac:	8b cf                	mov    %edi,%ecx
5668ae:	f7 d9                	neg    %ecx
5668b0:	8b 00                	mov    (%eax),%eax
5668b2:	99                   	cltd
5668b3:	33 c2                	xor    %edx,%eax
5668b5:	2b c2                	sub    %edx,%eax
5668b7:	d3 e0                	shl    %cl,%eax
5668b9:	83 e0 7f             	and    $0x7f,%eax
5668bc:	8b 0c 85 20 0c 6b 00 	mov    0x6b0c20(,%eax,4),%ecx
5668c3:	eb 2e                	jmp    0x5668f3
5668c5:	85 ff                	test   %edi,%edi
5668c7:	7c 10                	jl     0x5668d9
5668c9:	8b cf                	mov    %edi,%ecx
5668cb:	8b 45 c8             	mov    -0x38(%ebp),%eax
5668ce:	8b 00                	mov    (%eax),%eax
5668d0:	99                   	cltd
5668d1:	33 c2                	xor    %edx,%eax
5668d3:	2b c2                	sub    %edx,%eax
5668d5:	d3 f8                	sar    %cl,%eax
5668d7:	eb 10                	jmp    0x5668e9
5668d9:	8b 45 c8             	mov    -0x38(%ebp),%eax
5668dc:	8b cf                	mov    %edi,%ecx
5668de:	f7 d9                	neg    %ecx
5668e0:	8b 00                	mov    (%eax),%eax
5668e2:	99                   	cltd
5668e3:	33 c2                	xor    %edx,%eax
5668e5:	2b c2                	sub    %edx,%eax
5668e7:	d3 e0                	shl    %cl,%eax
5668e9:	83 e0 7f             	and    $0x7f,%eax
5668ec:	8b 0c 85 28 10 6b 00 	mov    0x6b1028(,%eax,4),%ecx
5668f3:	8b 45 08             	mov    0x8(%ebp),%eax
5668f6:	01 08                	add    %ecx,(%eax)
5668f8:	8b 55 c8             	mov    -0x38(%ebp),%edx
5668fb:	8b 0a                	mov    (%edx),%ecx
5668fd:	85 c9                	test   %ecx,%ecx
5668ff:	7d 07                	jge    0x566908
566901:	b8 01 00 00 00       	mov    $0x1,%eax
566906:	eb 02                	jmp    0x56690a
566908:	33 c0                	xor    %eax,%eax
56690a:	89 45 9c             	mov    %eax,-0x64(%ebp)
56690d:	8b 55 a0             	mov    -0x60(%ebp),%edx
566910:	8b 43 10             	mov    0x10(%ebx),%eax
566913:	81 e2 f0 0f 00 00    	and    $0xff0,%edx
566919:	c1 fa 04             	sar    $0x4,%edx
56691c:	8b 0c 95 18 c8 6a 00 	mov    0x6ac818(,%edx,4),%ecx
566923:	c1 e1 02             	shl    $0x2,%ecx
566926:	03 c8                	add    %eax,%ecx
566928:	89 4b 14             	mov    %ecx,0x14(%ebx)
56692b:	8b 53 14             	mov    0x14(%ebx),%edx
56692e:	8b 0a                	mov    (%edx),%ecx
566930:	8b 55 a0             	mov    -0x60(%ebp),%edx
566933:	81 e2 f0 0f 00 00    	and    $0xff0,%edx
566939:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
56693d:	c1 fa 04             	sar    $0x4,%edx
566940:	8b 0c 95 14 c4 6a 00 	mov    0x6ac414(,%edx,4),%ecx
566947:	8b 55 9c             	mov    -0x64(%ebp),%edx
56694a:	33 ca                	xor    %edx,%ecx
56694c:	3b c1                	cmp    %ecx,%eax
56694e:	75 28                	jne    0x566978
566950:	8b 43 14             	mov    0x14(%ebx),%eax
566953:	8b 08                	mov    (%eax),%ecx
566955:	0f b7 01             	movzwl (%ecx),%eax
566958:	29 43 04             	sub    %eax,0x4(%ebx)
56695b:	f6 43 05 80          	testb  $0x80,0x5(%ebx)
56695f:	75 09                	jne    0x56696a
566961:	8b c3                	mov    %ebx,%eax
566963:	e8 e4 ba 00 00       	call   0x57244c
566968:	eb 15                	jmp    0x56697f
56696a:	8b 53 14             	mov    0x14(%ebx),%edx
56696d:	8b 0a                	mov    (%edx),%ecx
56696f:	0f b7 01             	movzwl (%ecx),%eax
566972:	01 03                	add    %eax,(%ebx)
566974:	8b 03                	mov    (%ebx),%eax
566976:	eb 07                	jmp    0x56697f
566978:	8b c3                	mov    %ebx,%eax
56697a:	e8 ad bd 00 00       	call   0x57272c
56697f:	8b 55 e0             	mov    -0x20(%ebp),%edx
566982:	c1 e2 02             	shl    $0x2,%edx
566985:	52                   	push   %edx
566986:	8b d6                	mov    %esi,%edx
566988:	58                   	pop    %eax
566989:	2b d0                	sub    %eax,%edx
56698b:	8b 45 e0             	mov    -0x20(%ebp),%eax
56698e:	c1 e0 02             	shl    $0x2,%eax
566991:	03 c6                	add    %esi,%eax
566993:	eb 33                	jmp    0x5669c8
566995:	83 48 fc 01          	orl    $0x1,-0x4(%eax)
566999:	83 48 04 08          	orl    $0x8,0x4(%eax)
56699d:	8b 55 9c             	mov    -0x64(%ebp),%edx
5669a0:	85 d2                	test   %edx,%edx
5669a2:	74 14                	je     0x5669b8
5669a4:	81 08 10 01 00 00    	orl    $0x110,(%eax)
5669aa:	81 4e fc 20 02 00 00 	orl    $0x220,-0x4(%esi)
5669b1:	81 4e 04 80 08 00 00 	orl    $0x880,0x4(%esi)
5669b8:	83 08 10             	orl    $0x10,(%eax)
5669bb:	83 4e fc 20          	orl    $0x20,-0x4(%esi)
5669bf:	81 4e 04 80 00 00 00 	orl    $0x80,0x4(%esi)
5669c6:	eb 44                	jmp    0x566a0c
5669c8:	83 4a fc 02          	orl    $0x2,-0x4(%edx)
5669cc:	83 4a 04 04          	orl    $0x4,0x4(%edx)
5669d0:	83 48 fc 01          	orl    $0x1,-0x4(%eax)
5669d4:	83 48 04 08          	orl    $0x8,0x4(%eax)
5669d8:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
5669db:	85 c9                	test   %ecx,%ecx
5669dd:	74 1c                	je     0x5669fb
5669df:	81 0a 40 04 00 00    	orl    $0x440,(%edx)
5669e5:	81 08 10 01 00 00    	orl    $0x110,(%eax)
5669eb:	81 4e fc 20 02 00 00 	orl    $0x220,-0x4(%esi)
5669f2:	81 4e 04 80 08 00 00 	orl    $0x880,0x4(%esi)
5669f9:	eb 11                	jmp    0x566a0c
5669fb:	83 0a 40             	orl    $0x40,(%edx)
5669fe:	83 08 10             	orl    $0x10,(%eax)
566a01:	83 4e fc 20          	orl    $0x20,-0x4(%esi)
566a05:	81 4e 04 80 00 00 00 	orl    $0x80,0x4(%esi)
566a0c:	81 0e 00 10 00 00    	orl    $0x1000,(%esi)
566a12:	81 0e 00 40 00 00    	orl    $0x4000,(%esi)
566a18:	ff 4d f4             	decl   -0xc(%ebp)
566a1b:	83 45 c4 04          	addl   $0x4,-0x3c(%ebp)
566a1f:	83 45 c0 04          	addl   $0x4,-0x40(%ebp)
566a23:	8b 45 f4             	mov    -0xc(%ebp),%eax
566a26:	85 c0                	test   %eax,%eax
566a28:	0f 8f c5 f6 ff ff    	jg     0x5660f3
566a2e:	83 6d f8 04          	subl   $0x4,-0x8(%ebp)
566a32:	8b 55 d8             	mov    -0x28(%ebp),%edx
566a35:	c1 e2 02             	shl    $0x2,%edx
566a38:	01 55 d0             	add    %edx,-0x30(%ebp)
566a3b:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
566a3e:	c1 e1 02             	shl    $0x2,%ecx
566a41:	01 4d cc             	add    %ecx,-0x34(%ebp)
566a44:	8b 45 f8             	mov    -0x8(%ebp),%eax
566a47:	85 c0                	test   %eax,%eax
566a49:	0f 8f 72 f6 ff ff    	jg     0x5660c1
566a4f:	8b 55 0c             	mov    0xc(%ebp),%edx
566a52:	85 d2                	test   %edx,%edx
566a54:	74 0b                	je     0x566a61
566a56:	8b 55 0c             	mov    0xc(%ebp),%edx
566a59:	8b c3                	mov    %ebx,%eax
566a5b:	4a                   	dec    %edx
566a5c:	e8 af bf 00 00       	call   0x572a10
566a61:	8b 4b 20             	mov    0x20(%ebx),%ecx
566a64:	85 c9                	test   %ecx,%ecx
566a66:	74 05                	je     0x566a6d
566a68:	83 c8 ff             	or     $0xffffffff,%eax
566a6b:	eb 02                	jmp    0x566a6f
566a6d:	33 c0                	xor    %eax,%eax
566a6f:	5f                   	pop    %edi
566a70:	5e                   	pop    %esi
566a71:	5b                   	pop    %ebx
566a72:	8b e5                	mov    %ebp,%esp
566a74:	5d                   	pop    %ebp
566a75:	c2 14 00             	ret    $0x14
566a78:	55                   	push   %ebp
566a79:	8b ec                	mov    %esp,%ebp
566a7b:	83 c4 ac             	add    $0xffffffac,%esp
566a7e:	53                   	push   %ebx
566a7f:	56                   	push   %esi
566a80:	57                   	push   %edi
566a81:	89 4d f8             	mov    %ecx,-0x8(%ebp)
566a84:	89 55 fc             	mov    %edx,-0x4(%ebp)
566a87:	8b d8                	mov    %eax,%ebx
566a89:	8b 45 08             	mov    0x8(%ebp),%eax
566a8c:	33 d2                	xor    %edx,%edx
566a8e:	89 10                	mov    %edx,(%eax)
566a90:	8b 4d 10             	mov    0x10(%ebp),%ecx
566a93:	8b 41 18             	mov    0x18(%ecx),%eax
566a96:	89 45 e0             	mov    %eax,-0x20(%ebp)
566a99:	8b 55 10             	mov    0x10(%ebp),%edx