494fca:	8b c7                	mov    %edi,%eax
494fcc:	2b 45 e0             	sub    -0x20(%ebp),%eax
494fcf:	eb 25                	jmp    0x494ff6
494fd1:	8a 1f                	mov    (%edi),%bl
494fd3:	47                   	inc    %edi
494fd4:	40                   	inc    %eax
494fd5:	88 5d ee             	mov    %bl,-0x12(%ebp)
494fd8:	89 45 e0             	mov    %eax,-0x20(%ebp)
494fdb:	8a e3                	mov    %bl,%ah
494fdd:	8a 5d ef             	mov    -0x11(%ebp),%bl
494fe0:	8a c4                	mov    %ah,%al
494fe2:	24 c0                	and    $0xc0,%al
494fe4:	3c 80                	cmp    $0x80,%al
494fe6:	75 30                	jne    0x495018
494fe8:	0f b6 c4             	movzbl %ah,%eax
494feb:	83 e0 3f             	and    $0x3f,%eax
494fee:	c1 e2 06             	shl    $0x6,%edx
494ff1:	0b d0                	or     %eax,%edx
494ff3:	8b 45 e0             	mov    -0x20(%ebp),%eax
494ff6:	3b c1                	cmp    %ecx,%eax
494ff8:	72 d7                	jb     0x494fd1
494ffa:	8b 7d dc             	mov    -0x24(%ebp),%edi
494ffd:	3b cf                	cmp    %edi,%ecx
494fff:	73 1c                	jae    0x49501d
495001:	0f b6 c7             	movzbl %bh,%eax
495004:	2a d9                	sub    %cl,%bl
495006:	66 89 46 04          	mov    %ax,0x4(%esi)
49500a:	0f b6 c3             	movzbl %bl,%eax
49500d:	89 16                	mov    %edx,(%esi)
49500f:	66 89 46 06          	mov    %ax,0x6(%esi)
495013:	e9 0e ff ff ff       	jmp    0x494f26
495018:	ff 75 e4             	push   -0x1c(%ebp)
49501b:	eb 4f                	jmp    0x49506c
49501d:	81 fa 00 d8 00 00    	cmp    $0xd800,%edx
495023:	72 08                	jb     0x49502d
495025:	81 fa ff df 00 00    	cmp    $0xdfff,%edx
49502b:	76 eb                	jbe    0x495018
49502d:	81 fa ff ff 10 00    	cmp    $0x10ffff,%edx
495033:	77 e3                	ja     0x495018
495035:	0f b6 c7             	movzbl %bh,%eax
495038:	c7 45 f0 80 00 00 00 	movl   $0x80,-0x10(%ebp)
49503f:	c7 45 f4 00 08 00 00 	movl   $0x800,-0xc(%ebp)
495046:	c7 45 f8 00 00 01 00 	movl   $0x10000,-0x8(%ebp)
49504d:	3b 54 85 e8          	cmp    -0x18(%ebp,%eax,4),%edx
495051:	72 c5                	jb     0x495018
495053:	8b 4d e8             	mov    -0x18(%ebp),%ecx
495056:	85 c9                	test   %ecx,%ecx
495058:	74 02                	je     0x49505c
49505a:	89 11                	mov    %edx,(%ecx)
49505c:	f7 da                	neg    %edx
49505e:	56                   	push   %esi
49505f:	1b d2                	sbb    %edx,%edx
495061:	23 d7                	and    %edi,%edx
495063:	52                   	push   %edx
495064:	e8 33 fe ff ff       	call   0x494e9c
495069:	eb 07                	jmp    0x495072
49506b:	51                   	push   %ecx
49506c:	56                   	push   %esi
49506d:	e8 3e fe ff ff       	call   0x494eb0
495072:	59                   	pop    %ecx
495073:	59                   	pop    %ecx
495074:	8b 4d fc             	mov    -0x4(%ebp),%ecx
495077:	5f                   	pop    %edi
495078:	5e                   	pop    %esi
495079:	33 cd                	xor    %ebp,%ecx
49507b:	5b                   	pop    %ebx
49507c:	e8 49 49 fd ff       	call   0x4699ca
495081:	c9                   	leave
495082:	c3                   	ret
495083:	33 c0                	xor    %eax,%eax
495085:	50                   	push   %eax
495086:	50                   	push   %eax
495087:	6a 03                	push   $0x3
495089:	50                   	push   %eax
49508a:	6a 03                	push   $0x3
49508c:	68 00 00 00 40       	push   $0x40000000
495091:	68 c0 aa 4a 00       	push   $0x4aaac0
495096:	ff 15 48 e1 49 00    	call   *0x49e148
49509c:	a3 b0 4a 4c 00       	mov    %eax,0x4c4ab0
4950a1:	c3                   	ret
4950a2:	8b 0d b0 4a 4c 00    	mov    0x4c4ab0,%ecx
4950a8:	83 f9 fe             	cmp    $0xfffffffe,%ecx
4950ab:	75 0b                	jne    0x4950b8
4950ad:	e8 d1 ff ff ff       	call   0x495083
4950b2:	8b 0d b0 4a 4c 00    	mov    0x4c4ab0,%ecx
4950b8:	33 c0                	xor    %eax,%eax
4950ba:	83 f9 ff             	cmp    $0xffffffff,%ecx
4950bd:	0f 95 c0             	setne  %al
4950c0:	c3                   	ret
4950c1:	cc                   	int3
4950c2:	cc                   	int3
4950c3:	cc                   	int3
4950c4:	cc                   	int3
4950c5:	cc                   	int3
4950c6:	cc                   	int3
4950c7:	cc                   	int3
4950c8:	cc                   	int3
4950c9:	cc                   	int3
4950ca:	cc                   	int3
4950cb:	cc                   	int3
4950cc:	cc                   	int3
4950cd:	cc                   	int3
4950ce:	cc                   	int3
4950cf:	cc                   	int3
4950d0:	a1 b0 4a 4c 00       	mov    0x4c4ab0,%eax
4950d5:	83 f8 ff             	cmp    $0xffffffff,%eax
4950d8:	74 0c                	je     0x4950e6
4950da:	83 f8 fe             	cmp    $0xfffffffe,%eax
4950dd:	74 07                	je     0x4950e6
4950df:	50                   	push   %eax
4950e0:	ff 15 64 e0 49 00    	call   *0x49e064
4950e6:	c3                   	ret
4950e7:	8b ff                	mov    %edi,%edi
4950e9:	55                   	push   %ebp
4950ea:	8b ec                	mov    %esp,%ebp
4950ec:	56                   	push   %esi
4950ed:	6a 00                	push   $0x0
4950ef:	ff 75 10             	push   0x10(%ebp)
4950f2:	ff 75 0c             	push   0xc(%ebp)
4950f5:	ff 75 08             	push   0x8(%ebp)
4950f8:	ff 35 b0 4a 4c 00    	push   0x4c4ab0
4950fe:	ff 15 c0 e0 49 00    	call   *0x49e0c0
495104:	8b f0                	mov    %eax,%esi
495106:	85 f6                	test   %esi,%esi
495108:	75 2d                	jne    0x495137
49510a:	ff 15 30 e1 49 00    	call   *0x49e130
495110:	83 f8 06             	cmp    $0x6,%eax
495113:	75 22                	jne    0x495137
495115:	e8 b6 ff ff ff       	call   0x4950d0
49511a:	e8 64 ff ff ff       	call   0x495083
49511f:	56                   	push   %esi
495120:	ff 75 10             	push   0x10(%ebp)
495123:	ff 75 0c             	push   0xc(%ebp)
495126:	ff 75 08             	push   0x8(%ebp)
495129:	ff 35 b0 4a 4c 00    	push   0x4c4ab0
49512f:	ff 15 c0 e0 49 00    	call   *0x49e0c0
495135:	8b f0                	mov    %eax,%esi
495137:	8b c6                	mov    %esi,%eax
495139:	5e                   	pop    %esi
49513a:	5d                   	pop    %ebp
49513b:	c3                   	ret
49513c:	cc                   	int3
49513d:	cc                   	int3
49513e:	cc                   	int3
49513f:	cc                   	int3
495140:	55                   	push   %ebp
495141:	8b ec                	mov    %esp,%ebp
495143:	57                   	push   %edi
495144:	56                   	push   %esi
495145:	53                   	push   %ebx
495146:	8b 4d 10             	mov    0x10(%ebp),%ecx
495149:	0b c9                	or     %ecx,%ecx
49514b:	74 4d                	je     0x49519a
49514d:	8b 75 08             	mov    0x8(%ebp),%esi
495150:	8b 7d 0c             	mov    0xc(%ebp),%edi
495153:	b7 41                	mov    $0x41,%bh
495155:	b3 5a                	mov    $0x5a,%bl
495157:	b6 20                	mov    $0x20,%dh
495159:	8d 49 00             	lea    0x0(%ecx),%ecx
49515c:	8a 26                	mov    (%esi),%ah
49515e:	0a e4                	or     %ah,%ah
495160:	8a 07                	mov    (%edi),%al
495162:	74 27                	je     0x49518b
495164:	0a c0                	or     %al,%al
495166:	74 23                	je     0x49518b
495168:	83 c6 01             	add    $0x1,%esi
49516b:	83 c7 01             	add    $0x1,%edi
49516e:	3a e7                	cmp    %bh,%ah
495170:	72 06                	jb     0x495178
495172:	3a e3                	cmp    %bl,%ah
495174:	77 02                	ja     0x495178
495176:	02 e6                	add    %dh,%ah
495178:	3a c7                	cmp    %bh,%al
49517a:	72 06                	jb     0x495182
49517c:	3a c3                	cmp    %bl,%al
49517e:	77 02                	ja     0x495182
495180:	02 c6                	add    %dh,%al
495182:	3a e0                	cmp    %al,%ah
495184:	75 0b                	jne    0x495191
495186:	83 e9 01             	sub    $0x1,%ecx
495189:	75 d1                	jne    0x49515c
49518b:	33 c9                	xor    %ecx,%ecx
49518d:	3a e0                	cmp    %al,%ah
49518f:	74 09                	je     0x49519a
495191:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
495196:	72 02                	jb     0x49519a
495198:	f7 d9                	neg    %ecx
49519a:	8b c1                	mov    %ecx,%eax
49519c:	5b                   	pop    %ebx
49519d:	5e                   	pop    %esi
49519e:	5f                   	pop    %edi
49519f:	c9                   	leave
4951a0:	c3                   	ret
4951a1:	8b ff                	mov    %edi,%edi
4951a3:	55                   	push   %ebp
4951a4:	8b ec                	mov    %esp,%ebp
4951a6:	53                   	push   %ebx
4951a7:	56                   	push   %esi
4951a8:	8b 75 08             	mov    0x8(%ebp),%esi
4951ab:	33 db                	xor    %ebx,%ebx
4951ad:	57                   	push   %edi
4951ae:	6a 01                	push   $0x1
4951b0:	53                   	push   %ebx
4951b1:	53                   	push   %ebx
4951b2:	56                   	push   %esi
4951b3:	8b f9                	mov    %ecx,%edi
4951b5:	e8 76 45 ff ff       	call   0x489730
4951ba:	6a 02                	push   $0x2
4951bc:	53                   	push   %ebx
4951bd:	53                   	push   %ebx
4951be:	56                   	push   %esi
4951bf:	89 07                	mov    %eax,(%edi)
4951c1:	89 57 04             	mov    %edx,0x4(%edi)
4951c4:	e8 67 45 ff ff       	call   0x489730
4951c9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4951cc:	83 c4 20             	add    $0x20,%esp
4951cf:	89 47 08             	mov    %eax,0x8(%edi)
4951d2:	2b c8                	sub    %eax,%ecx
4951d4:	8b 45 10             	mov    0x10(%ebp),%eax
4951d7:	1b c2                	sbb    %edx,%eax
4951d9:	89 77 18             	mov    %esi,0x18(%edi)
4951dc:	89 47 14             	mov    %eax,0x14(%edi)
4951df:	8b c7                	mov    %edi,%eax
4951e1:	89 57 0c             	mov    %edx,0xc(%edi)
4951e4:	89 4f 10             	mov    %ecx,0x10(%edi)
4951e7:	5f                   	pop    %edi
4951e8:	5e                   	pop    %esi
4951e9:	5b                   	pop    %ebx
4951ea:	5d                   	pop    %ebp
4951eb:	c2 0c 00             	ret    $0xc
4951ee:	8b ff                	mov    %edi,%edi
4951f0:	55                   	push   %ebp
4951f1:	8b ec                	mov    %esp,%ebp
4951f3:	83 ec 28             	sub    $0x28,%esp
4951f6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4951f9:	56                   	push   %esi
4951fa:	6a 00                	push   $0x0
4951fc:	e8 df 20 fe ff       	call   0x4772e0
495201:	8d 45 d8             	lea    -0x28(%ebp),%eax
495204:	50                   	push   %eax
495205:	ff 75 10             	push   0x10(%ebp)
495208:	ff 75 0c             	push   0xc(%ebp)
49520b:	ff 75 08             	push   0x8(%ebp)
49520e:	e8 12 00 00 00       	call   0x495225
495213:	83 c4 10             	add    $0x10,%esp
495216:	8d 4d d8             	lea    -0x28(%ebp),%ecx
495219:	8b f0                	mov    %eax,%esi
49521b:	e8 20 21 fe ff       	call   0x477340
495220:	8b c6                	mov    %esi,%eax
495222:	5e                   	pop    %esi
495223:	c9                   	leave
495224:	c3                   	ret
495225:	8b ff                	mov    %edi,%edi
495227:	55                   	push   %ebp
495228:	8b ec                	mov    %esp,%ebp
49522a:	83 ec 2c             	sub    $0x2c,%esp
49522d:	53                   	push   %ebx
49522e:	8b 5d 08             	mov    0x8(%ebp),%ebx
495231:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
495234:	56                   	push   %esi
495235:	57                   	push   %edi
495236:	ff 75 10             	push   0x10(%ebp)
495239:	8b 7d 14             	mov    0x14(%ebp),%edi
49523c:	ff 75 0c             	push   0xc(%ebp)
49523f:	53                   	push   %ebx
495240:	e8 5c ff ff ff       	call   0x4951a1
495245:	8b 45 d4             	mov    -0x2c(%ebp),%eax
495248:	23 45 d8             	and    -0x28(%ebp),%eax
49524b:	83 f8 ff             	cmp    $0xffffffff,%eax
49524e:	0f 84 40 01 00 00    	je     0x495394
495254:	8b 45 dc             	mov    -0x24(%ebp),%eax
495257:	23 45 e0             	and    -0x20(%ebp),%eax
49525a:	83 f8 ff             	cmp    $0xffffffff,%eax
49525d:	0f 84 31 01 00 00    	je     0x495394
495263:	8b 4d e8             	mov    -0x18(%ebp),%ecx
495266:	8b 45 e4             	mov    -0x1c(%ebp),%eax
495269:	89 4d f8             	mov    %ecx,-0x8(%ebp)
49526c:	89 45 fc             	mov    %eax,-0x4(%ebp)
49526f:	85 c9                	test   %ecx,%ecx
495271:	0f 8c d2 00 00 00    	jl     0x495349
495277:	7f 08                	jg     0x495281
495279:	85 c0                	test   %eax,%eax
49527b:	0f 84 be 00 00 00    	je     0x49533f
495281:	6a 01                	push   $0x1
495283:	68 00 10 00 00       	push   $0x1000
495288:	e8 b0 30 ff ff       	call   0x48833d
49528d:	8b f0                	mov    %eax,%esi
49528f:	59                   	pop    %ecx
495290:	59                   	pop    %ecx
495291:	85 f6                	test   %esi,%esi
495293:	75 0f                	jne    0x4952a4
495295:	6a 0c                	push   $0xc
495297:	5b                   	pop    %ebx
495298:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
49529c:	89 5f 18             	mov    %ebx,0x18(%edi)
49529f:	e9 92 00 00 00       	jmp    0x495336
4952a4:	68 00 80 00 00       	push   $0x8000
4952a9:	53                   	push   %ebx
4952aa:	e8 36 e6 fe ff       	call   0x4838e5
4952af:	59                   	pop    %ecx
4952b0:	59                   	pop    %ecx
4952b1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4952b4:	89 45 f4             	mov    %eax,-0xc(%ebp)
4952b7:	8b 45 e8             	mov    -0x18(%ebp),%eax
4952ba:	85 c0                	test   %eax,%eax
4952bc:	7c 0f                	jl     0x4952cd
4952be:	7f 08                	jg     0x4952c8
4952c0:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4952c6:	72 05                	jb     0x4952cd
4952c8:	b9 00 10 00 00       	mov    $0x1000,%ecx
4952cd:	57                   	push   %edi
4952ce:	51                   	push   %ecx
4952cf:	56                   	push   %esi
4952d0:	53                   	push   %ebx
4952d1:	e8 cf 26 ff ff       	call   0x4879a5
4952d6:	83 c4 10             	add    $0x10,%esp
4952d9:	83 f8 ff             	cmp    $0xffffffff,%eax
4952dc:	74 34                	je     0x495312
4952de:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4952e1:	99                   	cltd
4952e2:	2b c8                	sub    %eax,%ecx
4952e4:	8b 45 f8             	mov    -0x8(%ebp),%eax
4952e7:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4952ea:	1b c2                	sbb    %edx,%eax
4952ec:	89 45 f8             	mov    %eax,-0x8(%ebp)
4952ef:	85 c0                	test   %eax,%eax
4952f1:	7f d5                	jg     0x4952c8
4952f3:	7c 04                	jl     0x4952f9
4952f5:	85 c9                	test   %ecx,%ecx
4952f7:	75 c1                	jne    0x4952ba
4952f9:	ff 75 f4             	push   -0xc(%ebp)
4952fc:	53                   	push   %ebx
4952fd:	e8 e3 e5 fe ff       	call   0x4838e5
495302:	56                   	push   %esi
495303:	e8 f0 04 ff ff       	call   0x4857f8
495308:	83 c4 0c             	add    $0xc,%esp
49530b:	33 db                	xor    %ebx,%ebx
49530d:	e9 90 00 00 00       	jmp    0x4953a2
495312:	80 7f 24 00          	cmpb   $0x0,0x24(%edi)
495316:	74 11                	je     0x495329
495318:	83 7f 20 05          	cmpl   $0x5,0x20(%edi)
49531c:	75 0b                	jne    0x495329
49531e:	c6 47 1c 01          	movb   $0x1,0x1c(%edi)
495322:	c7 47 18 0d 00 00 00 	movl   $0xd,0x18(%edi)
495329:	80 7f 1c 00          	cmpb   $0x0,0x1c(%edi)
49532d:	74 05                	je     0x495334
49532f:	8b 5f 18             	mov    0x18(%edi),%ebx
495332:	eb 02                	jmp    0x495336
495334:	33 db                	xor    %ebx,%ebx
495336:	56                   	push   %esi