51e920:	8b 4e 0c             	mov    0xc(%esi),%ecx
51e923:	89 4d c0             	mov    %ecx,-0x40(%ebp)
51e926:	8a 01                	mov    (%ecx),%al
51e928:	3c ad                	cmp    $0xad,%al
51e92a:	75 03                	jne    0x51e92f
51e92c:	8a 41 02             	mov    0x2(%ecx),%al
51e92f:	3c ae                	cmp    $0xae,%al
51e931:	75 07                	jne    0x51e93a
51e933:	8b 41 14             	mov    0x14(%ecx),%eax
51e936:	8b 10                	mov    (%eax),%edx
51e938:	eb 13                	jmp    0x51e94d
51e93a:	3c 88                	cmp    $0x88,%al
51e93c:	75 0a                	jne    0x51e948
51e93e:	8b 41 14             	mov    0x14(%ecx),%eax
51e941:	8b 40 1c             	mov    0x1c(%eax),%eax
51e944:	8b 10                	mov    (%eax),%edx
51e946:	eb 05                	jmp    0x51e94d
51e948:	ba 01 00 00 00       	mov    $0x1,%edx
51e94d:	8b 45 10             	mov    0x10(%ebp),%eax
51e950:	89 46 1c             	mov    %eax,0x1c(%esi)
51e953:	8b 4b 6c             	mov    0x6c(%ebx),%ecx
51e956:	89 55 d4             	mov    %edx,-0x2c(%ebp)
51e959:	89 4d bc             	mov    %ecx,-0x44(%ebp)
51e95c:	39 4b 70             	cmp    %ecx,0x70(%ebx)
51e95f:	7f 17                	jg     0x51e978
51e961:	6a 00                	push   $0x0
51e963:	52                   	push   %edx
51e964:	50                   	push   %eax
51e965:	6a 64                	push   $0x64
51e967:	53                   	push   %ebx
51e968:	e8 93 7b fe ff       	call   0x506500
51e96d:	8b 55 d4             	mov    -0x2c(%ebp),%edx
51e970:	83 c4 14             	add    $0x14,%esp
51e973:	89 45 bc             	mov    %eax,-0x44(%ebp)
51e976:	eb 31                	jmp    0x51e9a9
51e978:	8d 41 01             	lea    0x1(%ecx),%eax
51e97b:	89 43 6c             	mov    %eax,0x6c(%ebx)
51e97e:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
51e981:	8b 43 68             	mov    0x68(%ebx),%eax
51e984:	8b 5d 10             	mov    0x10(%ebp),%ebx
51e987:	89 5c 88 04          	mov    %ebx,0x4(%eax,%ecx,4)
51e98b:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
51e98e:	c7 04 88 64 00 00 00 	movl   $0x64,(%eax,%ecx,4)
51e995:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
51e999:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
51e9a0:	00
51e9a1:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
51e9a8:	00
51e9a9:	6a 01                	push   $0x1
51e9ab:	52                   	push   %edx
51e9ac:	ff 37                	push   (%edi)
51e9ae:	e8 fd 11 01 00       	call   0x52fbb0
51e9b3:	83 c4 0c             	add    $0xc,%esp
51e9b6:	89 45 d8             	mov    %eax,-0x28(%ebp)
51e9b9:	f7 46 04 00 08 00 00 	testl  $0x800,0x4(%esi)
51e9c0:	0f 84 57 01 00 00    	je     0x51eb1d
51e9c6:	8b 46 14             	mov    0x14(%esi),%eax
51e9c9:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
51e9cd:	89 45 cc             	mov    %eax,-0x34(%ebp)
51e9d0:	ff 70 10             	push   0x10(%eax)
51e9d3:	8b 48 1c             	mov    0x1c(%eax),%ecx
51e9d6:	b8 bc 91 6b 00       	mov    $0x6b91bc,%eax
51e9db:	89 4d d0             	mov    %ecx,-0x30(%ebp)
51e9de:	b9 ad 57 6e 00       	mov    $0x6e57ad,%ecx
51e9e3:	0f 44 c8             	cmove  %eax,%ecx
51e9e6:	51                   	push   %ecx
51e9e7:	68 c8 91 6b 00       	push   $0x6b91c8
51e9ec:	6a 01                	push   $0x1
51e9ee:	57                   	push   %edi
51e9ef:	e8 ec b1 02 00       	call   0x549be0
51e9f4:	8b 4d d0             	mov    -0x30(%ebp),%ecx
51e9f7:	83 c4 14             	add    $0x14,%esp
51e9fa:	8b 45 d4             	mov    -0x2c(%ebp),%eax
51e9fd:	39 01                	cmp    %eax,(%ecx)
51e9ff:	0f 85 c9 02 00 00    	jne    0x51ecce
51ea05:	8b 45 10             	mov    0x10(%ebp),%eax
51ea08:	56                   	push   %esi
51ea09:	57                   	push   %edi
51ea0a:	c6 45 e0 0b          	movb   $0xb,-0x20(%ebp)
51ea0e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
51ea11:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
51ea18:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
51ea1f:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
51ea26:	e8 f5 20 fe ff       	call   0x500b20
51ea2b:	8d 4d e0             	lea    -0x20(%ebp),%ecx
51ea2e:	89 45 f0             	mov    %eax,-0x10(%ebp)
51ea31:	8b 45 cc             	mov    -0x34(%ebp),%eax
51ea34:	51                   	push   %ecx
51ea35:	50                   	push   %eax
51ea36:	57                   	push   %edi
51ea37:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
51ea3e:	e8 5d b0 01 00       	call   0x539aa0
51ea43:	83 c4 14             	add    $0x14,%esp
51ea46:	85 c0                	test   %eax,%eax
51ea48:	8b 45 f0             	mov    -0x10(%ebp),%eax
51ea4b:	74 40                	je     0x51ea8d
51ea4d:	85 c0                	test   %eax,%eax
51ea4f:	74 0b                	je     0x51ea5c
51ea51:	50                   	push   %eax
51ea52:	ff 37                	push   (%edi)
51ea54:	e8 17 29 00 00       	call   0x521370
51ea59:	83 c4 08             	add    $0x8,%esp
51ea5c:	8b 45 d8             	mov    -0x28(%ebp),%eax
51ea5f:	85 c0                	test   %eax,%eax
51ea61:	0f 84 6e 03 00 00    	je     0x51edd5
51ea67:	83 00 ff             	addl   $0xffffffff,(%eax)
51ea6a:	0f 85 65 03 00 00    	jne    0x51edd5
51ea70:	50                   	push   %eax
51ea71:	ff 70 0c             	push   0xc(%eax)
51ea74:	e8 f7 28 00 00       	call   0x521370
51ea79:	83 c4 08             	add    $0x8,%esp
51ea7c:	5f                   	pop    %edi
51ea7d:	5e                   	pop    %esi
51ea7e:	5b                   	pop    %ebx
51ea7f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51ea82:	33 cd                	xor    %ebp,%ecx
51ea84:	e8 51 2a 0c 00       	call   0x5e14da
51ea89:	8b e5                	mov    %ebp,%esp
51ea8b:	5d                   	pop    %ebp
51ea8c:	c3                   	ret
51ea8d:	85 c0                	test   %eax,%eax
51ea8f:	74 0b                	je     0x51ea9c
51ea91:	50                   	push   %eax
51ea92:	ff 37                	push   (%edi)
51ea94:	e8 d7 28 00 00       	call   0x521370
51ea99:	83 c4 08             	add    $0x8,%esp
51ea9c:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
51eaa0:	0f 8e 28 02 00 00    	jle    0x51ecce
51eaa6:	8b 45 d0             	mov    -0x30(%ebp),%eax
51eaa9:	8b 5d d8             	mov    -0x28(%ebp),%ebx
51eaac:	83 c0 04             	add    $0x4,%eax
51eaaf:	83 c3 14             	add    $0x14,%ebx
51eab2:	89 45 d0             	mov    %eax,-0x30(%ebp)
51eab5:	33 f6                	xor    %esi,%esi
51eab7:	56                   	push   %esi
51eab8:	ff 75 c0             	push   -0x40(%ebp)
51eabb:	e8 c0 f0 02 00       	call   0x54db80
51eac0:	8b c8                	mov    %eax,%ecx
51eac2:	83 c4 08             	add    $0x8,%esp
51eac5:	8b 45 d0             	mov    -0x30(%ebp),%eax
51eac8:	f7 41 04 00 01 00 00 	testl  $0x100,0x4(%ecx)
51eacf:	8b 00                	mov    (%eax),%eax
51ead1:	89 45 cc             	mov    %eax,-0x34(%ebp)
51ead4:	74 03                	je     0x51ead9
51ead6:	51                   	push   %ecx
51ead7:	eb 21                	jmp    0x51eafa
51ead9:	85 c0                	test   %eax,%eax
51eadb:	74 0c                	je     0x51eae9
51eadd:	f7 40 04 00 01 00 00 	testl  $0x100,0x4(%eax)
51eae4:	74 03                	je     0x51eae9
51eae6:	50                   	push   %eax
51eae7:	eb 11                	jmp    0x51eafa
51eae9:	51                   	push   %ecx
51eaea:	57                   	push   %edi
51eaeb:	e8 f0 77 00 00       	call   0x5262e0
51eaf0:	83 c4 08             	add    $0x8,%esp
51eaf3:	85 c0                	test   %eax,%eax
51eaf5:	75 0c                	jne    0x51eb03
51eaf7:	ff 75 cc             	push   -0x34(%ebp)
51eafa:	57                   	push   %edi
51eafb:	e8 e0 77 00 00       	call   0x5262e0
51eb00:	83 c4 08             	add    $0x8,%esp
51eb03:	83 45 d0 14          	addl   $0x14,-0x30(%ebp)
51eb07:	46                   	inc    %esi
51eb08:	89 03                	mov    %eax,(%ebx)
51eb0a:	83 c3 04             	add    $0x4,%ebx
51eb0d:	3b 75 d4             	cmp    -0x2c(%ebp),%esi
51eb10:	7c a5                	jl     0x51eab7
51eb12:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
51eb15:	8b 75 b8             	mov    -0x48(%ebp),%esi
51eb18:	e9 b1 01 00 00       	jmp    0x51ecce
51eb1d:	8b 4e 14             	mov    0x14(%esi),%ecx
51eb20:	89 4d cc             	mov    %ecx,-0x34(%ebp)
51eb23:	85 c9                	test   %ecx,%ecx
51eb25:	0f 84 a6 01 00 00    	je     0x51ecd1
51eb2b:	ff 75 c0             	push   -0x40(%ebp)
51eb2e:	e8 7d 4a 00 00       	call   0x5235b0
51eb33:	83 c4 04             	add    $0x4,%esp
51eb36:	0f b6 c8             	movzbl %al,%ecx
51eb39:	3c 40                	cmp    $0x40,%al
51eb3b:	ba 41 00 00 00       	mov    $0x41,%edx
51eb40:	0f 4e ca             	cmovle %edx,%ecx
51eb43:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
51eb47:	88 4d fb             	mov    %cl,-0x5(%ebp)
51eb4a:	74 12                	je     0x51eb5e
51eb4c:	ff 76 0c             	push   0xc(%esi)
51eb4f:	57                   	push   %edi
51eb50:	e8 8b 77 00 00       	call   0x5262e0
51eb55:	8b 4d d8             	mov    -0x28(%ebp),%ecx
51eb58:	83 c4 08             	add    $0x8,%esp
51eb5b:	89 41 14             	mov    %eax,0x14(%ecx)
51eb5e:	8a 47 13             	mov    0x13(%edi),%al
51eb61:	84 c0                	test   %al,%al
51eb63:	75 08                	jne    0x51eb6d
51eb65:	ff 47 2c             	incl   0x2c(%edi)
51eb68:	8b 47 2c             	mov    0x2c(%edi),%eax
51eb6b:	eb 0f                	jmp    0x51eb7c
51eb6d:	fe c8                	dec    %al
51eb6f:	88 47 13             	mov    %al,0x13(%edi)
51eb72:	0f b6 c0             	movzbl %al,%eax
51eb75:	8b 84 87 94 00 00 00 	mov    0x94(%edi,%eax,4),%eax
51eb7c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
51eb7f:	8a 47 13             	mov    0x13(%edi),%al
51eb82:	84 c0                	test   %al,%al
51eb84:	75 0b                	jne    0x51eb91
51eb86:	ff 47 2c             	incl   0x2c(%edi)
51eb89:	8b 4f 2c             	mov    0x2c(%edi),%ecx
51eb8c:	89 4d d0             	mov    %ecx,-0x30(%ebp)
51eb8f:	eb 12                	jmp    0x51eba3
51eb91:	fe c8                	dec    %al
51eb93:	88 47 13             	mov    %al,0x13(%edi)
51eb96:	0f b6 c0             	movzbl %al,%eax
51eb99:	8b 84 87 94 00 00 00 	mov    0x94(%edi,%eax,4),%eax
51eba0:	89 45 d0             	mov    %eax,-0x30(%ebp)
51eba3:	8b 45 cc             	mov    -0x34(%ebp),%eax
51eba6:	8d 50 04             	lea    0x4(%eax),%edx
51eba9:	8b 00                	mov    (%eax),%eax
51ebab:	89 55 cc             	mov    %edx,-0x34(%ebp)
51ebae:	89 45 c4             	mov    %eax,-0x3c(%ebp)
51ebb1:	85 c0                	test   %eax,%eax
51ebb3:	0f 8e df 00 00 00    	jle    0x51ec98
51ebb9:	b9 01 00 00 00       	mov    $0x1,%ecx
51ebbe:	66 90                	xchg   %ax,%ax
51ebc0:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
51ebc4:	8b 02                	mov    (%edx),%eax
51ebc6:	89 45 c0             	mov    %eax,-0x40(%ebp)
51ebc9:	74 77                	je     0x51ec42
51ebcb:	66 89 4d f0          	mov    %cx,-0x10(%ebp)
51ebcf:	c7 45 e0 c0 12 50 00 	movl   $0x5012c0,-0x20(%ebp)
51ebd6:	c7 45 e4 f0 c7 53 00 	movl   $0x53c7f0,-0x1c(%ebp)
51ebdd:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
51ebe4:	85 c0                	test   %eax,%eax
51ebe6:	74 5a                	je     0x51ec42
51ebe8:	50                   	push   %eax
51ebe9:	8d 45 dc             	lea    -0x24(%ebp),%eax
51ebec:	50                   	push   %eax
51ebed:	e8 be 13 04 00       	call   0x55ffb0
51ebf2:	83 c4 08             	add    $0x8,%esp
51ebf5:	66 83 7d f0 00       	cmpw   $0x0,-0x10(%ebp)
51ebfa:	75 43                	jne    0x51ec3f
51ebfc:	8b 13                	mov    (%ebx),%edx
51ebfe:	80 7a 51 00          	cmpb   $0x0,0x51(%edx)
51ec02:	75 2d                	jne    0x51ec31
51ec04:	8b 45 c8             	mov    -0x38(%ebp),%eax
51ec07:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51ec0a:	8b 43 68             	mov    0x68(%ebx),%eax
51ec0d:	ff 74 88 10          	push   0x10(%eax,%ecx,4)
51ec11:	8d 34 88             	lea    (%eax,%ecx,4),%esi
51ec14:	0f be 46 01          	movsbl 0x1(%esi),%eax
51ec18:	50                   	push   %eax
51ec19:	52                   	push   %edx
51ec1a:	e8 91 50 fe ff       	call   0x503cb0
51ec1f:	66 c7 06 ad 00       	movw   $0xad,(%esi)
51ec24:	83 c4 0c             	add    $0xc,%esp
51ec27:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
51ec2e:	8b 75 b8             	mov    -0x48(%ebp),%esi
51ec31:	81 66 04 ff ff ff fd 	andl   $0xfdffffff,0x4(%esi)
51ec38:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
51ec3f:	8b 45 c0             	mov    -0x40(%ebp),%eax
51ec42:	ff 75 d4             	push   -0x2c(%ebp)
51ec45:	50                   	push   %eax
51ec46:	57                   	push   %edi
51ec47:	e8 84 4f 00 00       	call   0x523bd0
51ec4c:	6a 01                	push   $0x1
51ec4e:	8d 45 fb             	lea    -0x5(%ebp),%eax
51ec51:	50                   	push   %eax
51ec52:	ff 75 d0             	push   -0x30(%ebp)
51ec55:	6a 01                	push   $0x1
51ec57:	ff 75 d4             	push   -0x2c(%ebp)
51ec5a:	6a 5b                	push   $0x5b
51ec5c:	53                   	push   %ebx
51ec5d:	e8 2e 2f 02 00       	call   0x541b90
51ec62:	6a 01                	push   $0x1
51ec64:	ff 75 d4             	push   -0x2c(%ebp)
51ec67:	ff 75 d0             	push   -0x30(%ebp)
51ec6a:	ff 75 10             	push   0x10(%ebp)
51ec6d:	68 83 00 00 00       	push   $0x83
51ec72:	53                   	push   %ebx
51ec73:	e8 98 2f 02 00       	call   0x541c10
51ec78:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
51ec7b:	83 c4 40             	add    $0x40,%esp
51ec7e:	8b 55 cc             	mov    -0x34(%ebp),%edx
51ec81:	49                   	dec    %ecx
51ec82:	83 c2 14             	add    $0x14,%edx
51ec85:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
51ec88:	85 c9                	test   %ecx,%ecx
51ec8a:	89 55 cc             	mov    %edx,-0x34(%ebp)
51ec8d:	b9 01 00 00 00       	mov    $0x1,%ecx
51ec92:	0f 8f 28 ff ff ff    	jg     0x51ebc0
51ec98:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
51ec9b:	85 c9                	test   %ecx,%ecx
51ec9d:	74 14                	je     0x51ecb3
51ec9f:	8a 47 13             	mov    0x13(%edi),%al
51eca2:	3c 08                	cmp    $0x8,%al
51eca4:	73 0d                	jae    0x51ecb3
51eca6:	0f b6 c0             	movzbl %al,%eax
51eca9:	89 8c 87 94 00 00 00 	mov    %ecx,0x94(%edi,%eax,4)
51ecb0:	fe 47 13             	incb   0x13(%edi)
51ecb3:	8b 4d d0             	mov    -0x30(%ebp),%ecx
51ecb6:	85 c9                	test   %ecx,%ecx
51ecb8:	74 14                	je     0x51ecce
51ecba:	8a 47 13             	mov    0x13(%edi),%al
51ecbd:	3c 08                	cmp    $0x8,%al
51ecbf:	73 0d                	jae    0x51ecce
51ecc1:	0f b6 c0             	movzbl %al,%eax
51ecc4:	89 8c 87 94 00 00 00 	mov    %ecx,0x94(%edi,%eax,4)
51eccb:	fe 47 13             	incb   0x13(%edi)
51ecce:	8b 45 d8             	mov    -0x28(%ebp),%eax
51ecd1:	85 c0                	test   %eax,%eax
51ecd3:	74 4c                	je     0x51ed21
51ecd5:	8b 0b                	mov    (%ebx),%ecx
51ecd7:	80 79 51 00          	cmpb   $0x0,0x51(%ecx)
51ecdb:	74 0e                	je     0x51eceb
51ecdd:	50                   	push   %eax
51ecde:	6a f7                	push   $0xfffffff7
51ece0:	51                   	push   %ecx
51ece1:	e8 ca 4f fe ff       	call   0x503cb0
51ece6:	83 c4 0c             	add    $0xc,%esp
51ece9:	eb 36                	jmp    0x51ed21
51eceb:	8b 45 bc             	mov    -0x44(%ebp),%eax
51ecee:	85 c0                	test   %eax,%eax
51ecf0:	79 04                	jns    0x51ecf6
51ecf2:	8b 43 6c             	mov    0x6c(%ebx),%eax
51ecf5:	48                   	dec    %eax
51ecf6:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51ecf9:	8b 43 68             	mov    0x68(%ebx),%eax
51ecfc:	80 7c 88 01 00       	cmpb   $0x0,0x1(%eax,%ecx,4)
51ed01:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
51ed04:	74 11                	je     0x51ed17
51ed06:	6a f7                	push   $0xfffffff7
51ed08:	ff 75 d8             	push   -0x28(%ebp)
51ed0b:	51                   	push   %ecx
51ed0c:	53                   	push   %ebx
51ed0d:	e8 2e af 03 00       	call   0x559c40
51ed12:	83 c4 10             	add    $0x10,%esp
51ed15:	eb 0a                	jmp    0x51ed21
51ed17:	8b 45 d8             	mov    -0x28(%ebp),%eax
51ed1a:	89 41 10             	mov    %eax,0x10(%ecx)
51ed1d:	c6 41 01 f7          	movb   $0xf7,0x1(%ecx)
51ed21:	8b 4d c8             	mov    -0x38(%ebp),%ecx
51ed24:	85 c9                	test   %ecx,%ecx
51ed26:	0f 84 a9 00 00 00    	je     0x51edd5
51ed2c:	8b 53 6c             	mov    0x6c(%ebx),%edx
51ed2f:	79 03                	jns    0x51ed34
51ed31:	8d 4a ff             	lea    -0x1(%edx),%ecx
51ed34:	8b 03                	mov    (%ebx),%eax
51ed36:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
51ed3a:	74 07                	je     0x51ed43
51ed3c:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
51ed41:	eb 09                	jmp    0x51ed4c