51a956:	8b c7                	mov    %edi,%eax
51a958:	33 d2                	xor    %edx,%edx
51a95a:	f7 76 08             	divl   0x8(%esi)
51a95d:	8b fa                	mov    %edx,%edi
51a95f:	8b 74 86 0c          	mov    0xc(%esi,%eax,4),%esi
51a963:	85 f6                	test   %esi,%esi
51a965:	74 5f                	je     0x51a9c6
51a967:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
51a96b:	75 e9                	jne    0x51a956
51a96d:	81 3e a0 0f 00 00    	cmpl   $0xfa0,(%esi)
51a973:	77 1f                	ja     0x51a994
51a975:	8b cf                	mov    %edi,%ecx
51a977:	b8 01 00 00 00       	mov    $0x1,%eax
51a97c:	c1 ef 03             	shr    $0x3,%edi
51a97f:	83 e1 07             	and    $0x7,%ecx
51a982:	d3 e0                	shl    %cl,%eax
51a984:	84 44 37 0c          	test   %al,0xc(%edi,%esi,1)
51a988:	b8 00 00 00 00       	mov    $0x0,%eax
51a98d:	5f                   	pop    %edi
51a98e:	0f 95 c0             	setne  %al
51a991:	5e                   	pop    %esi
51a992:	5d                   	pop    %ebp
51a993:	c3                   	ret
51a994:	b8 d3 4d 62 10       	mov    $0x10624dd3,%eax
51a999:	f7 e7                	mul    %edi
51a99b:	c1 ea 03             	shr    $0x3,%edx
51a99e:	6b c2 7d             	imul   $0x7d,%edx,%eax
51a9a1:	8b d7                	mov    %edi,%edx
51a9a3:	47                   	inc    %edi
51a9a4:	2b d0                	sub    %eax,%edx
51a9a6:	8b 44 96 0c          	mov    0xc(%esi,%edx,4),%eax
51a9aa:	85 c0                	test   %eax,%eax
51a9ac:	74 18                	je     0x51a9c6
51a9ae:	b9 7d 00 00 00       	mov    $0x7d,%ecx
51a9b3:	3b c7                	cmp    %edi,%eax
51a9b5:	74 15                	je     0x51a9cc
51a9b7:	8d 42 01             	lea    0x1(%edx),%eax
51a9ba:	33 d2                	xor    %edx,%edx
51a9bc:	f7 f1                	div    %ecx
51a9be:	8b 44 96 0c          	mov    0xc(%esi,%edx,4),%eax
51a9c2:	85 c0                	test   %eax,%eax
51a9c4:	75 ed                	jne    0x51a9b3
51a9c6:	5f                   	pop    %edi
51a9c7:	33 c0                	xor    %eax,%eax
51a9c9:	5e                   	pop    %esi
51a9ca:	5d                   	pop    %ebp
51a9cb:	c3                   	ret
51a9cc:	5f                   	pop    %edi
51a9cd:	b8 01 00 00 00       	mov    $0x1,%eax
51a9d2:	5e                   	pop    %esi
51a9d3:	5d                   	pop    %ebp
51a9d4:	c3                   	ret
51a9d5:	cc                   	int3
51a9d6:	cc                   	int3
51a9d7:	cc                   	int3
51a9d8:	cc                   	int3
51a9d9:	cc                   	int3
51a9da:	cc                   	int3
51a9db:	cc                   	int3
51a9dc:	cc                   	int3
51a9dd:	cc                   	int3
51a9de:	cc                   	int3
51a9df:	cc                   	int3
51a9e0:	55                   	push   %ebp
51a9e1:	8b ec                	mov    %esp,%ebp
51a9e3:	51                   	push   %ecx
51a9e4:	8b 55 0c             	mov    0xc(%ebp),%edx
51a9e7:	53                   	push   %ebx
51a9e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
51a9eb:	56                   	push   %esi
51a9ec:	0f b7 4a 08          	movzwl 0x8(%edx),%ecx
51a9f0:	8b 72 0c             	mov    0xc(%edx),%esi
51a9f3:	0f b7 43 08          	movzwl 0x8(%ebx),%eax
51a9f7:	89 45 08             	mov    %eax,0x8(%ebp)
51a9fa:	8b c1                	mov    %ecx,%eax
51a9fc:	0b 45 08             	or     0x8(%ebp),%eax
51a9ff:	89 75 fc             	mov    %esi,-0x4(%ebp)
51aa02:	57                   	push   %edi
51aa03:	8b 7b 0c             	mov    0xc(%ebx),%edi
51aa06:	a9 00 40 00 00       	test   $0x4000,%eax
51aa0b:	74 6f                	je     0x51aa7c
51aa0d:	0f b7 43 08          	movzwl 0x8(%ebx),%eax
51aa11:	23 c8                	and    %eax,%ecx
51aa13:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
51aa19:	74 0b                	je     0x51aa26
51aa1b:	8b 03                	mov    (%ebx),%eax
51aa1d:	2b 02                	sub    (%edx),%eax
51aa1f:	5f                   	pop    %edi
51aa20:	5e                   	pop    %esi
51aa21:	5b                   	pop    %ebx
51aa22:	8b e5                	mov    %ebp,%esp
51aa24:	5d                   	pop    %ebp
51aa25:	c3                   	ret
51aa26:	a9 00 40 00 00       	test   $0x4000,%eax
51aa2b:	74 25                	je     0x51aa52
51aa2d:	56                   	push   %esi
51aa2e:	ff 72 10             	push   0x10(%edx)
51aa31:	e8 ea cb fe ff       	call   0x507620
51aa36:	83 c4 08             	add    $0x8,%esp
51aa39:	85 c0                	test   %eax,%eax
51aa3b:	75 0a                	jne    0x51aa47
51aa3d:	5f                   	pop    %edi
51aa3e:	5e                   	pop    %esi
51aa3f:	83 c8 ff             	or     $0xffffffff,%eax
51aa42:	5b                   	pop    %ebx
51aa43:	8b e5                	mov    %ebp,%esp
51aa45:	5d                   	pop    %ebp
51aa46:	c3                   	ret
51aa47:	8b 03                	mov    (%ebx),%eax
51aa49:	5f                   	pop    %edi
51aa4a:	2b c6                	sub    %esi,%eax
51aa4c:	5e                   	pop    %esi
51aa4d:	5b                   	pop    %ebx
51aa4e:	8b e5                	mov    %ebp,%esp
51aa50:	5d                   	pop    %ebp
51aa51:	c3                   	ret
51aa52:	57                   	push   %edi
51aa53:	ff 73 10             	push   0x10(%ebx)
51aa56:	e8 c5 cb fe ff       	call   0x507620
51aa5b:	83 c4 08             	add    $0x8,%esp
51aa5e:	85 c0                	test   %eax,%eax
51aa60:	75 0c                	jne    0x51aa6e
51aa62:	5f                   	pop    %edi
51aa63:	5e                   	pop    %esi
51aa64:	b8 01 00 00 00       	mov    $0x1,%eax
51aa69:	5b                   	pop    %ebx
51aa6a:	8b e5                	mov    %ebp,%esp
51aa6c:	5d                   	pop    %ebp
51aa6d:	c3                   	ret
51aa6e:	8b 45 0c             	mov    0xc(%ebp),%eax
51aa71:	2b 38                	sub    (%eax),%edi
51aa73:	8b c7                	mov    %edi,%eax
51aa75:	5f                   	pop    %edi
51aa76:	5e                   	pop    %esi
51aa77:	5b                   	pop    %ebx
51aa78:	8b e5                	mov    %ebp,%esp
51aa7a:	5d                   	pop    %ebp
51aa7b:	c3                   	ret
51aa7c:	3b 7a 0c             	cmp    0xc(%edx),%edi
51aa7f:	8b f7                	mov    %edi,%esi
51aa81:	8b 4b 10             	mov    0x10(%ebx),%ecx
51aa84:	0f 4f 72 0c          	cmovg  0xc(%edx),%esi
51aa88:	8b 52 10             	mov    0x10(%edx),%edx
51aa8b:	83 ee 04             	sub    $0x4,%esi
51aa8e:	72 11                	jb     0x51aaa1
51aa90:	8b 01                	mov    (%ecx),%eax
51aa92:	3b 02                	cmp    (%edx),%eax
51aa94:	75 10                	jne    0x51aaa6
51aa96:	83 c1 04             	add    $0x4,%ecx
51aa99:	83 c2 04             	add    $0x4,%edx
51aa9c:	83 ee 04             	sub    $0x4,%esi
51aa9f:	73 ef                	jae    0x51aa90
51aaa1:	83 fe fc             	cmp    $0xfffffffc,%esi
51aaa4:	74 34                	je     0x51aada
51aaa6:	8a 01                	mov    (%ecx),%al
51aaa8:	3a 02                	cmp    (%edx),%al
51aaaa:	75 27                	jne    0x51aad3
51aaac:	83 fe fd             	cmp    $0xfffffffd,%esi
51aaaf:	74 29                	je     0x51aada
51aab1:	8a 41 01             	mov    0x1(%ecx),%al
51aab4:	3a 42 01             	cmp    0x1(%edx),%al
51aab7:	75 1a                	jne    0x51aad3
51aab9:	83 fe fe             	cmp    $0xfffffffe,%esi
51aabc:	74 1c                	je     0x51aada
51aabe:	8a 41 02             	mov    0x2(%ecx),%al
51aac1:	3a 42 02             	cmp    0x2(%edx),%al
51aac4:	75 0d                	jne    0x51aad3
51aac6:	83 fe ff             	cmp    $0xffffffff,%esi
51aac9:	74 0f                	je     0x51aada
51aacb:	8a 41 03             	mov    0x3(%ecx),%al
51aace:	3a 42 03             	cmp    0x3(%edx),%al
51aad1:	74 07                	je     0x51aada
51aad3:	1b c0                	sbb    %eax,%eax
51aad5:	83 c8 01             	or     $0x1,%eax
51aad8:	eb 02                	jmp    0x51aadc
51aada:	33 c0                	xor    %eax,%eax
51aadc:	85 c0                	test   %eax,%eax
51aade:	75 05                	jne    0x51aae5
51aae0:	2b 7d fc             	sub    -0x4(%ebp),%edi
51aae3:	8b c7                	mov    %edi,%eax
51aae5:	5f                   	pop    %edi
51aae6:	5e                   	pop    %esi
51aae7:	5b                   	pop    %ebx
51aae8:	8b e5                	mov    %ebp,%esp
51aaea:	5d                   	pop    %ebp
51aaeb:	c3                   	ret
51aaec:	cc                   	int3
51aaed:	cc                   	int3
51aaee:	cc                   	int3
51aaef:	cc                   	int3
51aaf0:	55                   	push   %ebp
51aaf1:	8b ec                	mov    %esp,%ebp
51aaf3:	56                   	push   %esi
51aaf4:	8b 75 08             	mov    0x8(%ebp),%esi
51aaf7:	57                   	push   %edi
51aaf8:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51aafc:	8b 7e 04             	mov    0x4(%esi),%edi
51aaff:	74 12                	je     0x51ab13
51ab01:	ff 46 0c             	incl   0xc(%esi)
51ab04:	80 7e 0a 00          	cmpb   $0x0,0xa(%esi)
51ab08:	75 09                	jne    0x51ab13
51ab0a:	56                   	push   %esi
51ab0b:	e8 c0 c4 fd ff       	call   0x4f6fd0
51ab10:	83 c4 04             	add    $0x4,%esp
51ab13:	8b 07                	mov    (%edi),%eax
51ab15:	8b 4d 0c             	mov    0xc(%ebp),%ecx
51ab18:	3b 48 60             	cmp    0x60(%eax),%ecx
51ab1b:	7e 14                	jle    0x51ab31
51ab1d:	80 78 06 00          	cmpb   $0x0,0x6(%eax)
51ab21:	74 0e                	je     0x51ab31
51ab23:	51                   	push   %ecx
51ab24:	50                   	push   %eax
51ab25:	e8 66 21 ff ff       	call   0x50cc90
51ab2a:	83 c4 08             	add    $0x8,%esp
51ab2d:	8b f8                	mov    %eax,%edi
51ab2f:	eb 02                	jmp    0x51ab33
51ab31:	33 ff                	xor    %edi,%edi
51ab33:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51ab37:	74 0f                	je     0x51ab48
51ab39:	83 46 0c ff          	addl   $0xffffffff,0xc(%esi)
51ab3d:	75 09                	jne    0x51ab48
51ab3f:	56                   	push   %esi
51ab40:	e8 8b de 03 00       	call   0x5589d0
51ab45:	83 c4 04             	add    $0x4,%esp
51ab48:	8b c7                	mov    %edi,%eax
51ab4a:	5f                   	pop    %edi
51ab4b:	5e                   	pop    %esi
51ab4c:	5d                   	pop    %ebp
51ab4d:	c3                   	ret
51ab4e:	cc                   	int3
51ab4f:	cc                   	int3
51ab50:	55                   	push   %ebp
51ab51:	8b ec                	mov    %esp,%ebp
51ab53:	51                   	push   %ecx
51ab54:	53                   	push   %ebx
51ab55:	56                   	push   %esi
51ab56:	57                   	push   %edi
51ab57:	8b 7d 08             	mov    0x8(%ebp),%edi
51ab5a:	33 db                	xor    %ebx,%ebx
51ab5c:	8b 77 04             	mov    0x4(%edi),%esi
51ab5f:	38 5f 09             	cmp    %bl,0x9(%edi)
51ab62:	74 11                	je     0x51ab75
51ab64:	ff 47 0c             	incl   0xc(%edi)
51ab67:	38 5f 0a             	cmp    %bl,0xa(%edi)
51ab6a:	75 09                	jne    0x51ab75
51ab6c:	57                   	push   %edi
51ab6d:	e8 5e c4 fd ff       	call   0x4f6fd0
51ab72:	83 c4 04             	add    $0x4,%esp
51ab75:	8a 47 08             	mov    0x8(%edi),%al
51ab78:	8b 55 0c             	mov    0xc(%ebp),%edx
51ab7b:	3c 02                	cmp    $0x2,%al
51ab7d:	0f 84 5d 02 00 00    	je     0x51ade0
51ab83:	3c 01                	cmp    $0x1,%al
51ab85:	75 08                	jne    0x51ab8f
51ab87:	85 d2                	test   %edx,%edx
51ab89:	0f 84 51 02 00 00    	je     0x51ade0
51ab8f:	8b 07                	mov    (%edi),%eax
51ab91:	8b 40 20             	mov    0x20(%eax),%eax
51ab94:	25 00 00 00 02       	and    $0x2000000,%eax
51ab99:	83 c8 00             	or     $0x0,%eax
51ab9c:	74 10                	je     0x51abae
51ab9e:	8b 06                	mov    (%esi),%eax
51aba0:	38 58 0e             	cmp    %bl,0xe(%eax)
51aba3:	75 09                	jne    0x51abae
51aba5:	b8 fe ff 00 00       	mov    $0xfffe,%eax
51abaa:	66 21 46 16          	and    %ax,0x16(%esi)
51abae:	0f b7 46 16          	movzwl 0x16(%esi),%eax
51abb2:	a8 01                	test   $0x1,%al
51abb4:	74 0e                	je     0x51abc4
51abb6:	85 d2                	test   %edx,%edx
51abb8:	74 14                	je     0x51abce
51abba:	bb 08 00 00 00       	mov    $0x8,%ebx
51abbf:	e9 59 02 00 00       	jmp    0x51ae1d
51abc4:	85 d2                	test   %edx,%edx
51abc6:	74 06                	je     0x51abce
51abc8:	80 7e 14 02          	cmpb   $0x2,0x14(%esi)
51abcc:	74 04                	je     0x51abd2
51abce:	84 c0                	test   %al,%al
51abd0:	79 05                	jns    0x51abd7
51abd2:	8b 46 4c             	mov    0x4c(%esi),%eax
51abd5:	eb 62                	jmp    0x51ac39
51abd7:	83 fa 01             	cmp    $0x1,%edx
51abda:	7e 12                	jle    0x51abee
51abdc:	8b 46 48             	mov    0x48(%esi),%eax
51abdf:	85 c0                	test   %eax,%eax
51abe1:	74 0b                	je     0x51abee
51abe3:	39 38                	cmp    %edi,(%eax)
51abe5:	75 50                	jne    0x51ac37
51abe7:	8b 40 0c             	mov    0xc(%eax),%eax
51abea:	85 c0                	test   %eax,%eax
51abec:	75 f5                	jne    0x51abe3
51abee:	6a 01                	push   $0x1
51abf0:	6a 01                	push   $0x1
51abf2:	57                   	push   %edi
51abf3:	e8 38 67 ff ff       	call   0x511330
51abf8:	8b d8                	mov    %eax,%ebx
51abfa:	83 c4 0c             	add    $0xc,%esp
51abfd:	85 db                	test   %ebx,%ebx
51abff:	0f 85 18 02 00 00    	jne    0x51ae1d
51ac05:	b8 ef ff 00 00       	mov    $0xffef,%eax
51ac0a:	66 21 46 16          	and    %ax,0x16(%esi)
51ac0e:	66 8b 46 16          	mov    0x16(%esi),%ax
51ac12:	39 5e 2c             	cmp    %ebx,0x2c(%esi)
51ac15:	75 09                	jne    0x51ac20
51ac17:	83 c8 10             	or     $0x10,%eax
51ac1a:	66 89 46 16          	mov    %ax,0x16(%esi)
51ac1e:	66 90                	xchg   %ax,%ax
51ac20:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
51ac24:	75 23                	jne    0x51ac49
51ac26:	56                   	push   %esi
51ac27:	e8 34 d8 fe ff       	call   0x508460
51ac2c:	8b d8                	mov    %eax,%ebx
51ac2e:	83 c4 04             	add    $0x4,%esp
51ac31:	85 db                	test   %ebx,%ebx
51ac33:	74 eb                	je     0x51ac20
51ac35:	eb 66                	jmp    0x51ac9d
51ac37:	8b 00                	mov    (%eax),%eax
51ac39:	8b 00                	mov    (%eax),%eax
51ac3b:	85 c0                	test   %eax,%eax
51ac3d:	74 af                	je     0x51abee
51ac3f:	bb 06 01 00 00       	mov    $0x106,%ebx
51ac44:	e9 d4 01 00 00       	jmp    0x51ae1d
51ac49:	85 db                	test   %ebx,%ebx
51ac4b:	75 50                	jne    0x51ac9d
51ac4d:	8b 55 0c             	mov    0xc(%ebp),%edx
51ac50:	85 d2                	test   %edx,%edx
51ac52:	0f 84 83 00 00 00    	je     0x51acdb
51ac58:	f6 46 16 01          	testb  $0x1,0x16(%esi)
51ac5c:	74 07                	je     0x51ac65
51ac5e:	bb 08 00 00 00       	mov    $0x8,%ebx
51ac63:	eb 38                	jmp    0x51ac9d
51ac65:	8b 07                	mov    (%edi),%eax
51ac67:	33 c9                	xor    %ecx,%ecx
51ac69:	80 78 50 02          	cmpb   $0x2,0x50(%eax)
51ac6d:	0f 94 c1             	sete   %cl
51ac70:	33 c0                	xor    %eax,%eax
51ac72:	83 fa 01             	cmp    $0x1,%edx
51ac75:	51                   	push   %ecx
51ac76:	0f 9f c0             	setg   %al
51ac79:	50                   	push   %eax
51ac7a:	ff 36                	push   (%esi)
51ac7c:	e8 7f 74 01 00       	call   0x532100
51ac81:	8b d8                	mov    %eax,%ebx
51ac83:	83 c4 0c             	add    $0xc,%esp
51ac86:	85 db                	test   %ebx,%ebx
51ac88:	0f 85 85 00 00 00    	jne    0x51ad13
51ac8e:	56                   	push   %esi
51ac8f:	e8 8c 0b ff ff       	call   0x50b820
51ac94:	83 c4 04             	add    $0x4,%esp
51ac97:	8b d8                	mov    %eax,%ebx