519e4c:	89 4d c0             	mov    %ecx,-0x40(%ebp)
519e4f:	8b 4d 24             	mov    0x24(%ebp),%ecx
519e52:	57                   	push   %edi
519e53:	8b 3e                	mov    (%esi),%edi
519e55:	89 55 d4             	mov    %edx,-0x2c(%ebp)
519e58:	89 45 d0             	mov    %eax,-0x30(%ebp)
519e5b:	89 4d c8             	mov    %ecx,-0x38(%ebp)
519e5e:	39 5d 28             	cmp    %ebx,0x28(%ebp)
519e61:	74 1f                	je     0x519e82
519e63:	39 58 04             	cmp    %ebx,0x4(%eax)
519e66:	76 10                	jbe    0x519e78
519e68:	68 bc b3 6b 00       	push   $0x6bb3bc
519e6d:	56                   	push   %esi
519e6e:	e8 ed 93 00 00       	call   0x523260
519e73:	e9 c3 01 00 00       	jmp    0x51a03b
519e78:	b9 01 00 00 00       	mov    $0x1,%ecx
519e7d:	89 4d dc             	mov    %ecx,-0x24(%ebp)
519e80:	eb 22                	jmp    0x519ea4
519e82:	8d 4d d8             	lea    -0x28(%ebp),%ecx
519e85:	51                   	push   %ecx
519e86:	50                   	push   %eax
519e87:	52                   	push   %edx
519e88:	56                   	push   %esi
519e89:	e8 52 48 02 00       	call   0x53e6e0
519e8e:	8b c8                	mov    %eax,%ecx
519e90:	83 c4 10             	add    $0x10,%esp
519e93:	89 4d dc             	mov    %ecx,-0x24(%ebp)
519e96:	85 c9                	test   %ecx,%ecx
519e98:	0f 88 a0 01 00 00    	js     0x51a03e
519e9e:	8b 45 d8             	mov    -0x28(%ebp),%eax
519ea1:	89 45 d4             	mov    %eax,-0x2c(%ebp)
519ea4:	8b 45 e0             	mov    -0x20(%ebp),%eax
519ea7:	85 c0                	test   %eax,%eax
519ea9:	0f 84 92 01 00 00    	je     0x51a041
519eaf:	38 5f 51             	cmp    %bl,0x51(%edi)
519eb2:	0f 85 89 01 00 00    	jne    0x51a041
519eb8:	38 9f a5 00 00 00    	cmp    %bl,0xa5(%edi)
519ebe:	74 1c                	je     0x519edc
519ec0:	83 f9 01             	cmp    $0x1,%ecx
519ec3:	74 17                	je     0x519edc
519ec5:	8b 48 0c             	mov    0xc(%eax),%ecx
519ec8:	85 c9                	test   %ecx,%ecx
519eca:	74 0d                	je     0x519ed9
519ecc:	51                   	push   %ecx
519ecd:	57                   	push   %edi
519ece:	e8 9d 74 00 00       	call   0x521370
519ed3:	8b 45 e0             	mov    -0x20(%ebp),%eax
519ed6:	83 c4 08             	add    $0x8,%esp
519ed9:	89 58 0c             	mov    %ebx,0xc(%eax)
519edc:	50                   	push   %eax
519edd:	56                   	push   %esi
519ede:	e8 9d 34 02 00       	call   0x53d380
519ee3:	83 c4 08             	add    $0x8,%esp
519ee6:	38 9f a5 00 00 00    	cmp    %bl,0xa5(%edi)
519eec:	75 28                	jne    0x519f16
519eee:	8b 4d d0             	mov    -0x30(%ebp),%ecx
519ef1:	39 59 04             	cmp    %ebx,0x4(%ecx)
519ef4:	75 20                	jne    0x519f16
519ef6:	8b 55 dc             	mov    -0x24(%ebp),%edx
519ef9:	85 c0                	test   %eax,%eax
519efb:	74 1c                	je     0x519f19
519efd:	8b 4f 10             	mov    0x10(%edi),%ecx
519f00:	8b 40 48             	mov    0x48(%eax),%eax
519f03:	c7 45 d8 01 00 00 00 	movl   $0x1,-0x28(%ebp)
519f0a:	3b 41 1c             	cmp    0x1c(%ecx),%eax
519f0d:	0f 44 55 d8          	cmove  -0x28(%ebp),%edx
519f11:	89 55 dc             	mov    %edx,-0x24(%ebp)
519f14:	eb 03                	jmp    0x519f19
519f16:	8b 55 dc             	mov    -0x24(%ebp),%edx
519f19:	38 5f 51             	cmp    %bl,0x51(%edi)
519f1c:	0f 85 1c 01 00 00    	jne    0x51a03e
519f22:	8b 0e                	mov    (%esi),%ecx
519f24:	8b c2                	mov    %edx,%eax
519f26:	ff 75 e0             	push   -0x20(%ebp)
519f29:	c1 e0 04             	shl    $0x4,%eax
519f2c:	83 7d dc 01          	cmpl   $0x1,-0x24(%ebp)
519f30:	89 45 cc             	mov    %eax,-0x34(%ebp)
519f33:	8b d0                	mov    %eax,%edx
519f35:	89 75 e4             	mov    %esi,-0x1c(%ebp)
519f38:	8b 41 10             	mov    0x10(%ecx),%eax
519f3b:	8b 04 02             	mov    (%edx,%eax,1),%eax
519f3e:	89 45 f0             	mov    %eax,-0x10(%ebp)
519f41:	8b 41 10             	mov    0x10(%ecx),%eax
519f44:	8b ca                	mov    %edx,%ecx
519f46:	8b 44 08 0c          	mov    0xc(%eax,%ecx,1),%eax
519f4a:	0f 94 45 ec          	sete   -0x14(%ebp)
519f4e:	89 45 e8             	mov    %eax,-0x18(%ebp)
519f51:	8b 45 d4             	mov    -0x2c(%ebp),%eax
519f54:	89 45 f8             	mov    %eax,-0x8(%ebp)
519f57:	8d 45 e4             	lea    -0x1c(%ebp),%eax
519f5a:	50                   	push   %eax
519f5b:	c7 45 f4 ec b3 6b 00 	movl   $0x6bb3ec,-0xc(%ebp)
519f62:	e8 c9 f2 00 00       	call   0x529230
519f67:	83 c4 08             	add    $0x8,%esp
519f6a:	85 c0                	test   %eax,%eax
519f6c:	0f 85 cc 00 00 00    	jne    0x51a03e
519f72:	ff 75 e0             	push   -0x20(%ebp)
519f75:	56                   	push   %esi
519f76:	e8 05 34 02 00       	call   0x53d380
519f7b:	83 c4 08             	add    $0x8,%esp
519f7e:	89 45 d0             	mov    %eax,-0x30(%ebp)
519f81:	85 c0                	test   %eax,%eax
519f83:	75 1c                	jne    0x519fa1
519f85:	80 bf a4 00 00 00 01 	cmpb   $0x1,0xa4(%edi)
519f8c:	8b 45 e0             	mov    -0x20(%ebp),%eax
519f8f:	0f 85 ac 00 00 00    	jne    0x51a041
519f95:	83 8f a8 00 00 00 01 	orl    $0x1,0xa8(%edi)
519f9c:	e9 a0 00 00 00       	jmp    0x51a041
519fa1:	39 58 38             	cmp    %ebx,0x38(%eax)
519fa4:	74 10                	je     0x519fb6
519fa6:	68 f4 b3 6b 00       	push   $0x6bb3f4
519fab:	56                   	push   %esi
519fac:	e8 af 92 00 00       	call   0x523260
519fb1:	e9 85 00 00 00       	jmp    0x51a03b
519fb6:	ff 75 d4             	push   -0x2c(%ebp)
519fb9:	57                   	push   %edi
519fba:	e8 71 76 01 00       	call   0x531630
519fbf:	8b c8                	mov    %eax,%ecx
519fc1:	83 c4 08             	add    $0x8,%esp
519fc4:	89 4d d8             	mov    %ecx,-0x28(%ebp)
519fc7:	85 c9                	test   %ecx,%ecx
519fc9:	74 73                	je     0x51a03e
519fcb:	8b 45 d0             	mov    -0x30(%ebp),%eax
519fce:	ff 30                	push   (%eax)
519fd0:	68 ec b3 6b 00       	push   $0x6bb3ec
519fd5:	51                   	push   %ecx
519fd6:	56                   	push   %esi
519fd7:	e8 e4 3f 00 00       	call   0x51dfc0
519fdc:	83 c4 10             	add    $0x10,%esp
519fdf:	85 c0                	test   %eax,%eax
519fe1:	75 4f                	jne    0x51a032
519fe3:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
519fea:	0f 83 9a 00 00 00    	jae    0x51a08a
519ff0:	8b 47 10             	mov    0x10(%edi),%eax
519ff3:	8b 4d cc             	mov    -0x34(%ebp),%ecx
519ff6:	ff 75 d8             	push   -0x28(%ebp)
519ff9:	8b 44 08 0c          	mov    0xc(%eax,%ecx,1),%eax
519ffd:	83 c0 28             	add    $0x28,%eax
51a000:	50                   	push   %eax
51a001:	e8 7a 3a 01 00       	call   0x52da80
51a006:	83 c4 08             	add    $0x8,%esp
51a009:	85 c0                	test   %eax,%eax
51a00b:	74 7d                	je     0x51a08a
51a00d:	39 5d 2c             	cmp    %ebx,0x2c(%ebp)
51a010:	75 13                	jne    0x51a025
51a012:	ff 75 d4             	push   -0x2c(%ebp)
51a015:	68 20 b4 6b 00       	push   $0x6bb420
51a01a:	56                   	push   %esi
51a01b:	e8 40 92 00 00       	call   0x523260
51a020:	83 c4 0c             	add    $0xc,%esp
51a023:	eb 0d                	jmp    0x51a032
51a025:	8b 4d dc             	mov    -0x24(%ebp),%ecx
51a028:	51                   	push   %ecx
51a029:	56                   	push   %esi
51a02a:	e8 b1 52 00 00       	call   0x51f2e0
51a02f:	83 c4 08             	add    $0x8,%esp
51a032:	ff 75 d8             	push   -0x28(%ebp)
51a035:	57                   	push   %edi
51a036:	e8 35 73 00 00       	call   0x521370
51a03b:	83 c4 08             	add    $0x8,%esp
51a03e:	8b 45 e0             	mov    -0x20(%ebp),%eax
51a041:	50                   	push   %eax
51a042:	57                   	push   %edi
51a043:	e8 28 2d 02 00       	call   0x53cd70
51a048:	8b 45 c0             	mov    -0x40(%ebp),%eax
51a04b:	50                   	push   %eax
51a04c:	57                   	push   %edi
51a04d:	e8 0e 3d 01 00       	call   0x52dd60
51a052:	8b 45 c8             	mov    -0x38(%ebp),%eax
51a055:	83 c4 10             	add    $0x10,%esp
51a058:	85 c0                	test   %eax,%eax
51a05a:	74 0a                	je     0x51a066
51a05c:	50                   	push   %eax
51a05d:	57                   	push   %edi
51a05e:	e8 4d c7 00 00       	call   0x5267b0
51a063:	83 c4 08             	add    $0x8,%esp
51a066:	83 be ec 00 00 00 00 	cmpl   $0x0,0xec(%esi)
51a06d:	75 0a                	jne    0x51a079
51a06f:	53                   	push   %ebx
51a070:	57                   	push   %edi
51a071:	e8 7a 81 00 00       	call   0x5221f0
51a076:	83 c4 08             	add    $0x8,%esp
51a079:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51a07c:	5f                   	pop    %edi
51a07d:	5e                   	pop    %esi
51a07e:	33 cd                	xor    %ebp,%ecx
51a080:	5b                   	pop    %ebx
51a081:	e8 54 74 0c 00       	call   0x5e14da
51a086:	8b e5                	mov    %ebp,%esp
51a088:	5d                   	pop    %ebp
51a089:	c3                   	ret
51a08a:	8b 45 d0             	mov    -0x30(%ebp),%eax
51a08d:	6a 07                	push   $0x7
51a08f:	68 b0 92 6b 00       	push   $0x6b92b0
51a094:	8b 00                	mov    (%eax),%eax
51a096:	50                   	push   %eax
51a097:	89 45 d4             	mov    %eax,-0x2c(%ebp)
51a09a:	e8 c1 5a fc ff       	call   0x4dfb60
51a09f:	83 c4 0c             	add    $0xc,%esp
51a0a2:	85 c0                	test   %eax,%eax
51a0a4:	75 10                	jne    0x51a0b6
51a0a6:	68 3c b4 6b 00       	push   $0x6bb43c
51a0ab:	56                   	push   %esi
51a0ac:	e8 af 91 00 00       	call   0x523260
51a0b1:	e9 79 ff ff ff       	jmp    0x51a02f
51a0b6:	8b 45 d0             	mov    -0x30(%ebp),%eax
51a0b9:	8b 55 c4             	mov    -0x3c(%ebp),%edx
51a0bc:	8b 48 0c             	mov    0xc(%eax),%ecx
51a0bf:	85 c9                	test   %ecx,%ecx
51a0c1:	74 32                	je     0x51a0f5
51a0c3:	83 fa 41             	cmp    $0x41,%edx
51a0c6:	74 29                	je     0x51a0f1
51a0c8:	6a 00                	push   $0x0
51a0ca:	ff 75 e0             	push   -0x20(%ebp)
51a0cd:	83 fa 21             	cmp    $0x21,%edx
51a0d0:	b9 6c b4 6b 00       	mov    $0x6bb46c,%ecx
51a0d5:	b8 64 b4 6b 00       	mov    $0x6bb464,%eax
51a0da:	0f 45 c1             	cmovne %ecx,%eax
51a0dd:	50                   	push   %eax
51a0de:	68 74 b4 6b 00       	push   $0x6bb474
51a0e3:	56                   	push   %esi
51a0e4:	e8 77 91 00 00       	call   0x523260
51a0e9:	83 c4 14             	add    $0x14,%esp
51a0ec:	e9 41 ff ff ff       	jmp    0x51a032
51a0f1:	85 c9                	test   %ecx,%ecx
51a0f3:	75 1d                	jne    0x51a112
51a0f5:	83 fa 41             	cmp    $0x41,%edx
51a0f8:	75 18                	jne    0x51a112
51a0fa:	6a 00                	push   $0x0
51a0fc:	ff 75 e0             	push   -0x20(%ebp)
51a0ff:	68 9c b4 6b 00       	push   $0x6bb49c
51a104:	56                   	push   %esi
51a105:	e8 56 91 00 00       	call   0x523260
51a10a:	83 c4 10             	add    $0x10,%esp
51a10d:	e9 20 ff ff ff       	jmp    0x51a032
51a112:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
51a119:	73 7c                	jae    0x51a197
51a11b:	ff 70 48             	push   0x48(%eax)
51a11e:	57                   	push   %edi
51a11f:	e8 3c f9 01 00       	call   0x539a60
51a124:	8b 4f 10             	mov    0x10(%edi),%ecx
51a127:	8b d0                	mov    %eax,%edx
51a129:	03 c0                	add    %eax,%eax
51a12b:	89 55 bc             	mov    %edx,-0x44(%ebp)
51a12e:	83 c4 08             	add    $0x8,%esp
51a131:	8b 04 c1             	mov    (%ecx,%eax,8),%eax
51a134:	89 45 dc             	mov    %eax,-0x24(%ebp)
51a137:	39 5d 28             	cmp    %ebx,0x28(%ebp)
51a13a:	74 03                	je     0x51a13f
51a13c:	8b 41 10             	mov    0x10(%ecx),%eax
51a13f:	83 fa 01             	cmp    $0x1,%edx
51a142:	74 05                	je     0x51a149
51a144:	39 5d 28             	cmp    %ebx,0x28(%ebp)
51a147:	74 07                	je     0x51a150
51a149:	b9 05 00 00 00       	mov    $0x5,%ecx
51a14e:	eb 05                	jmp    0x51a155
51a150:	b9 07 00 00 00       	mov    $0x7,%ecx
51a155:	50                   	push   %eax
51a156:	ff 75 d4             	push   -0x2c(%ebp)
51a159:	ff 75 d8             	push   -0x28(%ebp)
51a15c:	51                   	push   %ecx
51a15d:	56                   	push   %esi
51a15e:	e8 3d f6 ff ff       	call   0x5197a0
51a163:	83 c4 14             	add    $0x14,%esp
51a166:	85 c0                	test   %eax,%eax
51a168:	0f 85 c4 fe ff ff    	jne    0x51a032
51a16e:	ff 75 dc             	push   -0x24(%ebp)
51a171:	83 7d bc 01          	cmpl   $0x1,-0x44(%ebp)
51a175:	b9 60 9d 6b 00       	mov    $0x6b9d60,%ecx
51a17a:	50                   	push   %eax
51a17b:	b8 24 8a 6b 00       	mov    $0x6b8a24,%eax
51a180:	0f 44 c1             	cmove  %ecx,%eax
51a183:	50                   	push   %eax
51a184:	6a 12                	push   $0x12
51a186:	56                   	push   %esi
51a187:	e8 14 f6 ff ff       	call   0x5197a0
51a18c:	83 c4 14             	add    $0x14,%esp
51a18f:	85 c0                	test   %eax,%eax
51a191:	0f 85 9b fe ff ff    	jne    0x51a032
51a197:	6a 00                	push   $0x0
51a199:	6a 24                	push   $0x24
51a19b:	57                   	push   %edi
51a19c:	e8 7f 73 00 00       	call   0x521520
51a1a1:	8b d8                	mov    %eax,%ebx
51a1a3:	83 c4 0c             	add    $0xc,%esp
51a1a6:	85 db                	test   %ebx,%ebx
51a1a8:	0f 84 84 fe ff ff    	je     0x51a032
51a1ae:	8b 45 d8             	mov    -0x28(%ebp),%eax
51a1b1:	89 03                	mov    %eax,(%ebx)
51a1b3:	8b 45 e0             	mov    -0x20(%ebp),%eax
51a1b6:	ff 70 10             	push   0x10(%eax)
51a1b9:	57                   	push   %edi
51a1ba:	e8 f1 74 00 00       	call   0x5216b0
51a1bf:	8b d0                	mov    %eax,%edx
51a1c1:	83 c4 08             	add    $0x8,%esp
51a1c4:	8b 45 cc             	mov    -0x34(%ebp),%eax
51a1c7:	83 7d c4 41          	cmpl   $0x41,-0x3c(%ebp)
51a1cb:	89 53 04             	mov    %edx,0x4(%ebx)
51a1ce:	8b 4f 10             	mov    0x10(%edi),%ecx
51a1d1:	8b 4c 01 0c          	mov    0xc(%ecx,%eax,1),%ecx
51a1d5:	8b 45 d0             	mov    -0x30(%ebp),%eax
51a1d8:	89 4b 14             	mov    %ecx,0x14(%ebx)
51a1db:	8b 48 48             	mov    0x48(%eax),%ecx
51a1de:	89 4b 18             	mov    %ecx,0x18(%ebx)
51a1e1:	8a 4d 18             	mov    0x18(%ebp),%cl
51a1e4:	88 4b 08             	mov    %cl,0x8(%ebx)
51a1e7:	b9 21 00 00 00       	mov    $0x21,%ecx
51a1ec:	0f 45 4d c4          	cmovne -0x3c(%ebp),%ecx
51a1f0:	83 f9 21             	cmp    $0x21,%ecx
51a1f3:	0f 95 c0             	setne  %al
51a1f6:	fe c0                	inc    %al
51a1f8:	88 43 09             	mov    %al,0x9(%ebx)
51a1fb:	80 be c8 00 00 00 02 	cmpb   $0x2,0xc8(%esi)
51a202:	72 19                	jb     0x51a21d
51a204:	8b 45 e0             	mov    -0x20(%ebp),%eax
51a207:	ff 70 10             	push   0x10(%eax)
51a20a:	52                   	push   %edx
51a20b:	56                   	push   %esi
51a20c:	e8 ef dc 01 00       	call   0x537f00
51a211:	8b 45 c8             	mov    -0x38(%ebp),%eax
51a214:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
51a21b:	eb 0c                	jmp    0x51a229
51a21d:	8b 45 c8             	mov    -0x38(%ebp),%eax
51a220:	6a 01                	push   $0x1
51a222:	50                   	push   %eax
51a223:	57                   	push   %edi
51a224:	e8 37 c6 00 00       	call   0x526860
51a229:	89 43 0c             	mov    %eax,0xc(%ebx)
51a22c:	83 c4 0c             	add    $0xc,%esp
51a22f:	8b 45 c0             	mov    -0x40(%ebp),%eax
51a232:	89 43 10             	mov    %eax,0x10(%ebx)
51a235:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
51a23c:	89 9e ec 00 00 00    	mov    %ebx,0xec(%esi)
51a242:	e9 f7 fd ff ff       	jmp    0x51a03e
51a247:	cc                   	int3
51a248:	cc                   	int3
51a249:	cc                   	int3
51a24a:	cc                   	int3
51a24b:	cc                   	int3
51a24c:	cc                   	int3
51a24d:	cc                   	int3
51a24e:	cc                   	int3
51a24f:	cc                   	int3
51a250:	55                   	push   %ebp
51a251:	8b ec                	mov    %esp,%ebp
51a253:	8b 55 08             	mov    0x8(%ebp),%edx
51a256:	53                   	push   %ebx
51a257:	8b 5d 10             	mov    0x10(%ebp),%ebx
51a25a:	8b cb                	mov    %ebx,%ecx
51a25c:	56                   	push   %esi