4060ff:	74 16                	je     0x406117
406101:	8b 10                	mov    (%eax),%edx
406103:	3b 55 fc             	cmp    -0x4(%ebp),%edx
406106:	75 09                	jne    0x406111
406108:	8b 55 fc             	mov    -0x4(%ebp),%edx
40610b:	8b 12                	mov    (%edx),%edx
40610d:	89 10                	mov    %edx,(%eax)
40610f:	eb 06                	jmp    0x406117
406111:	8b 00                	mov    (%eax),%eax
406113:	85 c0                	test   %eax,%eax
406115:	75 ea                	jne    0x406101
406117:	c3                   	ret
406118:	e9 6b df ff ff       	jmp    0x404088
40611d:	eb c2                	jmp    0x4060e1
40611f:	59                   	pop    %ecx
406120:	5d                   	pop    %ebp
406121:	c3                   	ret
406122:	8b c0                	mov    %eax,%eax
406124:	8b 10                	mov    (%eax),%edx
406126:	85 d2                	test   %edx,%edx
406128:	74 0e                	je     0x406138
40612a:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
406130:	50                   	push   %eax
406131:	52                   	push   %edx
406132:	8b 02                	mov    (%edx),%eax
406134:	ff 50 08             	call   *0x8(%eax)
406137:	58                   	pop    %eax
406138:	c3                   	ret
406139:	8d 40 00             	lea    0x0(%eax),%eax
40613c:	85 d2                	test   %edx,%edx
40613e:	74 19                	je     0x406159
406140:	52                   	push   %edx
406141:	50                   	push   %eax
406142:	8b 02                	mov    (%edx),%eax
406144:	52                   	push   %edx
406145:	ff 50 04             	call   *0x4(%eax)
406148:	58                   	pop    %eax
406149:	8b 08                	mov    (%eax),%ecx
40614b:	8f 00                	pop    (%eax)
40614d:	85 c9                	test   %ecx,%ecx
40614f:	75 01                	jne    0x406152
406151:	c3                   	ret
406152:	8b 01                	mov    (%ecx),%eax
406154:	51                   	push   %ecx
406155:	ff 50 08             	call   *0x8(%eax)
406158:	c3                   	ret
406159:	8b 08                	mov    (%eax),%ecx
40615b:	85 c9                	test   %ecx,%ecx
40615d:	89 10                	mov    %edx,(%eax)
40615f:	74 06                	je     0x406167
406161:	8b 01                	mov    (%ecx),%eax
406163:	51                   	push   %ecx
406164:	ff 50 08             	call   *0x8(%eax)
406167:	c3                   	ret
406168:	85 d2                	test   %edx,%edx
40616a:	0f 84 b4 ff ff ff    	je     0x406124
406170:	57                   	push   %edi
406171:	89 c7                	mov    %eax,%edi
406173:	6a 00                	push   $0x0
406175:	54                   	push   %esp
406176:	51                   	push   %ecx
406177:	52                   	push   %edx
406178:	8b 02                	mov    (%edx),%eax
40617a:	ff 10                	call   *(%eax)
40617c:	85 c0                	test   %eax,%eax
40617e:	74 07                	je     0x406187
406180:	b0 17                	mov    $0x17,%al
406182:	e9 b5 cc ff ff       	jmp    0x402e3c
406187:	8b 07                	mov    (%edi),%eax
406189:	85 c0                	test   %eax,%eax
40618b:	74 06                	je     0x406193
40618d:	50                   	push   %eax
40618e:	8b 00                	mov    (%eax),%eax
406190:	ff 50 08             	call   *0x8(%eax)
406193:	58                   	pop    %eax
406194:	89 07                	mov    %eax,(%edi)
406196:	5f                   	pop    %edi
406197:	c3                   	ret
406198:	85 c0                	test   %eax,%eax
40619a:	74 06                	je     0x4061a2
40619c:	50                   	push   %eax
40619d:	8b 00                	mov    (%eax),%eax
40619f:	ff 50 04             	call   *0x4(%eax)
4061a2:	c3                   	ret
4061a3:	90                   	nop
4061a4:	83 c0 04             	add    $0x4,%eax
4061a7:	50                   	push   %eax
4061a8:	e8 9f b1 ff ff       	call   0x40134c
4061ad:	c3                   	ret
4061ae:	8b c0                	mov    %eax,%eax
4061b0:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
4061b4:	74 07                	je     0x4061bd
4061b6:	b0 02                	mov    $0x2,%al
4061b8:	e8 7f cc ff ff       	call   0x402e3c
4061bd:	c3                   	ret
4061be:	8b c0                	mov    %eax,%eax
4061c0:	e8 c7 d6 ff ff       	call   0x40388c
4061c5:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
4061cc:	c3                   	ret
4061cd:	8d 40 00             	lea    0x0(%eax),%eax
4061d0:	55                   	push   %ebp
4061d1:	8b ec                	mov    %esp,%ebp
4061d3:	53                   	push   %ebx
4061d4:	8b 5d 08             	mov    0x8(%ebp),%ebx
4061d7:	8b 4d 10             	mov    0x10(%ebp),%ecx
4061da:	8b 55 0c             	mov    0xc(%ebp),%edx
4061dd:	8b c3                	mov    %ebx,%eax
4061df:	e8 c4 d7 ff ff       	call   0x4039a8
4061e4:	84 c0                	test   %al,%al
4061e6:	74 04                	je     0x4061ec
4061e8:	33 c0                	xor    %eax,%eax
4061ea:	eb 05                	jmp    0x4061f1
4061ec:	b8 02 40 00 80       	mov    $0x80004002,%eax
4061f1:	5b                   	pop    %ebx
4061f2:	5d                   	pop    %ebp
4061f3:	c2 0c 00             	ret    $0xc
4061f6:	8b c0                	mov    %eax,%eax
4061f8:	55                   	push   %ebp
4061f9:	8b ec                	mov    %esp,%ebp
4061fb:	8b 45 08             	mov    0x8(%ebp),%eax
4061fe:	83 c0 04             	add    $0x4,%eax
406201:	50                   	push   %eax
406202:	e8 3d b1 ff ff       	call   0x401344
406207:	5d                   	pop    %ebp
406208:	c2 04 00             	ret    $0x4
40620b:	90                   	nop
40620c:	55                   	push   %ebp
40620d:	8b ec                	mov    %esp,%ebp
40620f:	53                   	push   %ebx
406210:	56                   	push   %esi
406211:	8b 5d 08             	mov    0x8(%ebp),%ebx
406214:	8d 43 04             	lea    0x4(%ebx),%eax
406217:	50                   	push   %eax
406218:	e8 2f b1 ff ff       	call   0x40134c
40621d:	8b f0                	mov    %eax,%esi
40621f:	85 f6                	test   %esi,%esi
406221:	75 09                	jne    0x40622c
406223:	b2 01                	mov    $0x1,%dl
406225:	8b c3                	mov    %ebx,%eax
406227:	8b 08                	mov    (%eax),%ecx
406229:	ff 51 fc             	call   *-0x4(%ecx)
40622c:	8b c6                	mov    %esi,%eax
40622e:	5e                   	pop    %esi
40622f:	5b                   	pop    %ebx
406230:	5d                   	pop    %ebp
406231:	c2 04 00             	ret    $0x4
406234:	55                   	push   %ebp
406235:	8b ec                	mov    %esp,%ebp
406237:	83 c4 f8             	add    $0xfffffff8,%esp
40623a:	53                   	push   %ebx
40623b:	56                   	push   %esi
40623c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40623f:	89 55 fc             	mov    %edx,-0x4(%ebp)
406242:	33 d2                	xor    %edx,%edx
406244:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
406248:	0f 84 b8 00 00 00    	je     0x406306
40624e:	33 f6                	xor    %esi,%esi
406250:	33 c9                	xor    %ecx,%ecx
406252:	85 c0                	test   %eax,%eax
406254:	0f 84 87 00 00 00    	je     0x4062e1
40625a:	eb 6c                	jmp    0x4062c8
40625c:	8b 55 f8             	mov    -0x8(%ebp),%edx
40625f:	0f b7 14 4a          	movzwl (%edx,%ecx,2),%edx
406263:	41                   	inc    %ecx
406264:	83 fa 7f             	cmp    $0x7f,%edx
406267:	77 06                	ja     0x40626f
406269:	88 14 30             	mov    %dl,(%eax,%esi,1)
40626c:	46                   	inc    %esi
40626d:	eb 59                	jmp    0x4062c8
40626f:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
406275:	76 31                	jbe    0x4062a8
406277:	8d 5e 03             	lea    0x3(%esi),%ebx
40627a:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40627d:	77 53                	ja     0x4062d2
40627f:	8b da                	mov    %edx,%ebx
406281:	c1 eb 0c             	shr    $0xc,%ebx
406284:	80 cb e0             	or     $0xe0,%bl
406287:	88 1c 30             	mov    %bl,(%eax,%esi,1)
40628a:	8b da                	mov    %edx,%ebx
40628c:	c1 eb 06             	shr    $0x6,%ebx
40628f:	80 e3 3f             	and    $0x3f,%bl
406292:	80 cb 80             	or     $0x80,%bl
406295:	88 5c 30 01          	mov    %bl,0x1(%eax,%esi,1)
406299:	80 e2 3f             	and    $0x3f,%dl
40629c:	80 ca 80             	or     $0x80,%dl
40629f:	88 54 30 02          	mov    %dl,0x2(%eax,%esi,1)
4062a3:	83 c6 03             	add    $0x3,%esi
4062a6:	eb 20                	jmp    0x4062c8
4062a8:	8d 5e 02             	lea    0x2(%esi),%ebx
4062ab:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4062ae:	77 22                	ja     0x4062d2
4062b0:	8b da                	mov    %edx,%ebx
4062b2:	c1 eb 06             	shr    $0x6,%ebx
4062b5:	80 cb c0             	or     $0xc0,%bl
4062b8:	88 1c 30             	mov    %bl,(%eax,%esi,1)
4062bb:	80 e2 3f             	and    $0x3f,%dl
4062be:	80 ca 80             	or     $0x80,%dl
4062c1:	88 54 30 01          	mov    %dl,0x1(%eax,%esi,1)
4062c5:	83 c6 02             	add    $0x2,%esi
4062c8:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4062cb:	73 05                	jae    0x4062d2
4062cd:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4062d0:	72 8a                	jb     0x40625c
4062d2:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4062d5:	72 04                	jb     0x4062db
4062d7:	8b 75 fc             	mov    -0x4(%ebp),%esi
4062da:	4e                   	dec    %esi
4062db:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
4062df:	eb 22                	jmp    0x406303
4062e1:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4062e4:	73 1d                	jae    0x406303
4062e6:	8b 45 f8             	mov    -0x8(%ebp),%eax
4062e9:	0f b7 14 48          	movzwl (%eax,%ecx,2),%edx
4062ed:	41                   	inc    %ecx
4062ee:	83 fa 7f             	cmp    $0x7f,%edx
4062f1:	76 0a                	jbe    0x4062fd
4062f3:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
4062f9:	76 01                	jbe    0x4062fc
4062fb:	46                   	inc    %esi
4062fc:	46                   	inc    %esi
4062fd:	46                   	inc    %esi
4062fe:	3b 4d 08             	cmp    0x8(%ebp),%ecx
406301:	72 e3                	jb     0x4062e6
406303:	8d 56 01             	lea    0x1(%esi),%edx
406306:	8b c2                	mov    %edx,%eax
406308:	5e                   	pop    %esi
406309:	5b                   	pop    %ebx
40630a:	59                   	pop    %ecx
40630b:	59                   	pop    %ecx
40630c:	5d                   	pop    %ebp
40630d:	c2 04 00             	ret    $0x4
406310:	55                   	push   %ebp
406311:	8b ec                	mov    %esp,%ebp
406313:	83 c4 f0             	add    $0xfffffff0,%esp
406316:	53                   	push   %ebx
406317:	56                   	push   %esi
406318:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40631b:	89 55 f8             	mov    %edx,-0x8(%ebp)
40631e:	89 45 fc             	mov    %eax,-0x4(%ebp)
406321:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
406325:	75 0a                	jne    0x406331
406327:	33 c0                	xor    %eax,%eax
406329:	89 45 f0             	mov    %eax,-0x10(%ebp)
40632c:	e9 04 01 00 00       	jmp    0x406435
406331:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
406338:	33 c0                	xor    %eax,%eax
40633a:	33 f6                	xor    %esi,%esi
40633c:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
406340:	0f 84 a1 00 00 00    	je     0x4063e7
406346:	eb 7d                	jmp    0x4063c5
406348:	8b 55 f4             	mov    -0xc(%ebp),%edx
40634b:	0f b6 0c 32          	movzbl (%edx,%esi,1),%ecx
40634f:	46                   	inc    %esi
406350:	f6 c1 80             	test   $0x80,%cl
406353:	74 68                	je     0x4063bd
406355:	3b 75 08             	cmp    0x8(%ebp),%esi
406358:	0f 83 d7 00 00 00    	jae    0x406435
40635e:	83 e1 3f             	and    $0x3f,%ecx
406361:	f6 c1 20             	test   $0x20,%cl
406364:	74 2c                	je     0x406392
406366:	8b 55 f4             	mov    -0xc(%ebp),%edx
406369:	0f b6 14 32          	movzbl (%edx,%esi,1),%edx
40636d:	46                   	inc    %esi
40636e:	8b da                	mov    %edx,%ebx
406370:	80 e3 c0             	and    $0xc0,%bl
406373:	80 fb 80             	cmp    $0x80,%bl
406376:	0f 85 b9 00 00 00    	jne    0x406435
40637c:	3b 75 08             	cmp    0x8(%ebp),%esi
40637f:	0f 83 b0 00 00 00    	jae    0x406435
406385:	80 e2 3f             	and    $0x3f,%dl
406388:	0f b6 d2             	movzbl %dl,%edx
40638b:	c1 e1 06             	shl    $0x6,%ecx
40638e:	0b d1                	or     %ecx,%edx
406390:	8b ca                	mov    %edx,%ecx
406392:	8b 55 f4             	mov    -0xc(%ebp),%edx
406395:	0f b6 14 32          	movzbl (%edx,%esi,1),%edx
406399:	46                   	inc    %esi
40639a:	8b da                	mov    %edx,%ebx
40639c:	80 e3 c0             	and    $0xc0,%bl
40639f:	80 fb 80             	cmp    $0x80,%bl
4063a2:	0f 85 8d 00 00 00    	jne    0x406435
4063a8:	80 e2 3f             	and    $0x3f,%dl
4063ab:	0f b6 d2             	movzbl %dl,%edx
4063ae:	c1 e1 06             	shl    $0x6,%ecx
4063b1:	66 0b d1             	or     %cx,%dx
4063b4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4063b7:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
4063bb:	eb 07                	jmp    0x4063c4
4063bd:	8b 55 fc             	mov    -0x4(%ebp),%edx
4063c0:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
4063c4:	40                   	inc    %eax
4063c5:	3b 75 08             	cmp    0x8(%ebp),%esi
4063c8:	73 09                	jae    0x4063d3
4063ca:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4063cd:	0f 82 75 ff ff ff    	jb     0x406348
4063d3:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4063d6:	72 04                	jb     0x4063dc
4063d8:	8b 45 f8             	mov    -0x8(%ebp),%eax
4063db:	48                   	dec    %eax
4063dc:	8b 55 fc             	mov    -0x4(%ebp),%edx
4063df:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
4063e5:	eb 4a                	jmp    0x406431
4063e7:	3b 75 08             	cmp    0x8(%ebp),%esi
4063ea:	73 45                	jae    0x406431
4063ec:	8b 55 f4             	mov    -0xc(%ebp),%edx
4063ef:	0f b6 14 32          	movzbl (%edx,%esi,1),%edx
4063f3:	46                   	inc    %esi
4063f4:	f6 c2 80             	test   $0x80,%dl
4063f7:	74 32                	je     0x40642b
4063f9:	3b 75 08             	cmp    0x8(%ebp),%esi
4063fc:	73 37                	jae    0x406435
4063fe:	80 e2 3f             	and    $0x3f,%dl
406401:	f6 c2 20             	test   $0x20,%dl
406404:	74 15                	je     0x40641b
406406:	8b 55 f4             	mov    -0xc(%ebp),%edx
406409:	0f b6 14 32          	movzbl (%edx,%esi,1),%edx
40640d:	46                   	inc    %esi
40640e:	80 e2 c0             	and    $0xc0,%dl
406411:	80 fa 80             	cmp    $0x80,%dl
406414:	75 1f                	jne    0x406435
406416:	3b 75 08             	cmp    0x8(%ebp),%esi
406419:	73 1a                	jae    0x406435
40641b:	8b 55 f4             	mov    -0xc(%ebp),%edx
40641e:	0f b6 14 32          	movzbl (%edx,%esi,1),%edx
406422:	46                   	inc    %esi
406423:	80 e2 c0             	and    $0xc0,%dl
406426:	80 fa 80             	cmp    $0x80,%dl
406429:	75 0a                	jne    0x406435
40642b:	40                   	inc    %eax
40642c:	3b 75 08             	cmp    0x8(%ebp),%esi
40642f:	72 bb                	jb     0x4063ec
406431:	40                   	inc    %eax
406432:	89 45 f0             	mov    %eax,-0x10(%ebp)
406435:	8b 45 f0             	mov    -0x10(%ebp),%eax
406438:	5e                   	pop    %esi
406439:	5b                   	pop    %ebx
40643a:	8b e5                	mov    %ebp,%esp
40643c:	5d                   	pop    %ebp
40643d:	c2 04 00             	ret    $0x4
406440:	55                   	push   %ebp
406441:	8b ec                	mov    %esp,%ebp
406443:	83 c4 f8             	add    $0xfffffff8,%esp
406446:	53                   	push   %ebx
406447:	56                   	push   %esi
406448:	33 c9                	xor    %ecx,%ecx
40644a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40644d:	89 55 f8             	mov    %edx,-0x8(%ebp)
406450:	8b f0                	mov    %eax,%esi
406452:	33 c0                	xor    %eax,%eax
406454:	55                   	push   %ebp