470ff8:	03 ce                	add    %esi,%ecx
470ffa:	0f b7 01             	movzwl (%ecx),%eax
470ffd:	66 3b c2             	cmp    %dx,%ax
471000:	73 f1                	jae    0x470ff3
471002:	33 c0                	xor    %eax,%eax
471004:	66 39 19             	cmp    %bx,(%ecx)
471007:	0f 94 c0             	sete   %al
47100a:	eb e3                	jmp    0x470fef
47100c:	55                   	push   %ebp
47100d:	8b ec                	mov    %esp,%ebp
47100f:	51                   	push   %ecx
471010:	0f b7 01             	movzwl (%ecx),%eax
471013:	53                   	push   %ebx
471014:	56                   	push   %esi
471015:	57                   	push   %edi
471016:	6a 30                	push   $0x30
471018:	5b                   	pop    %ebx
471019:	33 ff                	xor    %edi,%edi
47101b:	83 ce ff             	or     $0xffffffff,%esi
47101e:	c7 45 fc 39 00 00 00 	movl   $0x39,-0x4(%ebp)
471025:	66 3b c3             	cmp    %bx,%ax
471028:	72 33                	jb     0x47105d
47102a:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
47102e:	77 16                	ja     0x471046
471030:	6b ff 0a             	imul   $0xa,%edi,%edi
471033:	0f b7 c0             	movzwl %ax,%eax
471036:	83 c0 d0             	add    $0xffffffd0,%eax
471039:	83 c1 02             	add    $0x2,%ecx
47103c:	03 f8                	add    %eax,%edi
47103e:	0f b7 01             	movzwl (%ecx),%eax
471041:	66 3b c3             	cmp    %bx,%ax
471044:	73 e4                	jae    0x47102a
471046:	85 ff                	test   %edi,%edi
471048:	78 08                	js     0x471052
47104a:	81 ff ff ff 00 00    	cmp    $0xffff,%edi
471050:	7e 0b                	jle    0x47105d
471052:	8b 45 0c             	mov    0xc(%ebp),%eax
471055:	c7 00 05 00 00 00    	movl   $0x5,(%eax)
47105b:	eb 11                	jmp    0x47106e
47105d:	6a 7d                	push   $0x7d
47105f:	5b                   	pop    %ebx
471060:	66 39 19             	cmp    %bx,(%ecx)
471063:	75 10                	jne    0x471075
471065:	8b f7                	mov    %edi,%esi
471067:	8b 45 08             	mov    0x8(%ebp),%eax
47106a:	89 3a                	mov    %edi,(%edx)
47106c:	89 30                	mov    %esi,(%eax)
47106e:	5f                   	pop    %edi
47106f:	5e                   	pop    %esi
471070:	8b c1                	mov    %ecx,%eax
471072:	5b                   	pop    %ebx
471073:	c9                   	leave
471074:	c3                   	ret
471075:	83 c1 02             	add    $0x2,%ecx
471078:	0f b7 01             	movzwl (%ecx),%eax
47107b:	66 3b c3             	cmp    %bx,%ax
47107e:	74 e7                	je     0x471067
471080:	6a 30                	push   $0x30
471082:	5b                   	pop    %ebx
471083:	33 f6                	xor    %esi,%esi
471085:	66 3b c3             	cmp    %bx,%ax
471088:	72 28                	jb     0x4710b2
47108a:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
47108e:	77 16                	ja     0x4710a6
471090:	6b f6 0a             	imul   $0xa,%esi,%esi
471093:	0f b7 c0             	movzwl %ax,%eax
471096:	83 c0 d0             	add    $0xffffffd0,%eax
471099:	83 c1 02             	add    $0x2,%ecx
47109c:	03 f0                	add    %eax,%esi
47109e:	0f b7 01             	movzwl (%ecx),%eax
4710a1:	66 3b c3             	cmp    %bx,%ax
4710a4:	73 e4                	jae    0x47108a
4710a6:	85 f6                	test   %esi,%esi
4710a8:	78 a8                	js     0x471052
4710aa:	81 fe ff ff 00 00    	cmp    $0xffff,%esi
4710b0:	7f a0                	jg     0x471052
4710b2:	3b f7                	cmp    %edi,%esi
4710b4:	7d b1                	jge    0x471067
4710b6:	8b 45 0c             	mov    0xc(%ebp),%eax
4710b9:	c7 00 04 00 00 00    	movl   $0x4,(%eax)
4710bf:	eb ad                	jmp    0x47106e
4710c1:	55                   	push   %ebp
4710c2:	8b ec                	mov    %esp,%ebp
4710c4:	51                   	push   %ecx
4710c5:	51                   	push   %ecx
4710c6:	53                   	push   %ebx
4710c7:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4710ca:	56                   	push   %esi
4710cb:	8b 43 0c             	mov    0xc(%ebx),%eax
4710ce:	8b f2                	mov    %edx,%esi
4710d0:	8b 0c 88             	mov    (%eax,%ecx,4),%ecx
4710d3:	8b 43 78             	mov    0x78(%ebx),%eax
4710d6:	8b 55 08             	mov    0x8(%ebp),%edx
4710d9:	57                   	push   %edi
4710da:	89 75 f8             	mov    %esi,-0x8(%ebp)
4710dd:	8d 3c 48             	lea    (%eax,%ecx,2),%edi
4710e0:	85 d2                	test   %edx,%edx
4710e2:	79 08                	jns    0x4710ec
4710e4:	83 c8 ff             	or     $0xffffffff,%eax
4710e7:	e9 69 01 00 00       	jmp    0x471255
4710ec:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4710f0:	0f 84 33 01 00 00    	je     0x471229
4710f6:	83 7b 50 00          	cmpl   $0x0,0x50(%ebx)
4710fa:	0f 84 db 00 00 00    	je     0x4711db
471100:	8d 04 57             	lea    (%edi,%edx,2),%eax
471103:	89 45 08             	mov    %eax,0x8(%ebp)
471106:	3b f8                	cmp    %eax,%edi
471108:	0f 83 40 01 00 00    	jae    0x47124e
47110e:	8b 43 7c             	mov    0x7c(%ebx),%eax
471111:	89 45 fc             	mov    %eax,-0x4(%ebp)
471114:	ba ff 03 00 00       	mov    $0x3ff,%edx
471119:	3b f0                	cmp    %eax,%esi
47111b:	0f 83 b5 00 00 00    	jae    0x4711d6
471121:	0f b7 0e             	movzwl (%esi),%ecx
471124:	8b c1                	mov    %ecx,%eax
471126:	25 00 fc 00 00       	and    $0xfc00,%eax
47112b:	83 c6 02             	add    $0x2,%esi
47112e:	3d 00 d8 00 00       	cmp    $0xd800,%eax
471133:	75 15                	jne    0x47114a
471135:	0f b7 06             	movzwl (%esi),%eax
471138:	23 ca                	and    %edx,%ecx
47113a:	c1 e1 0a             	shl    $0xa,%ecx
47113d:	23 c2                	and    %edx,%eax
47113f:	0b c8                	or     %eax,%ecx
471141:	81 c1 00 00 01 00    	add    $0x10000,%ecx
471147:	83 c6 02             	add    $0x2,%esi
47114a:	0f b7 1f             	movzwl (%edi),%ebx
47114d:	8b c3                	mov    %ebx,%eax
47114f:	25 00 fc 00 00       	and    $0xfc00,%eax
471154:	83 c7 02             	add    $0x2,%edi
471157:	3d 00 d8 00 00       	cmp    $0xd800,%eax
47115c:	75 15                	jne    0x471173
47115e:	0f b7 07             	movzwl (%edi),%eax
471161:	23 da                	and    %edx,%ebx
471163:	c1 e3 0a             	shl    $0xa,%ebx
471166:	23 c2                	and    %edx,%eax
471168:	0b d8                	or     %eax,%ebx
47116a:	81 c3 00 00 01 00    	add    $0x10000,%ebx
471170:	83 c7 02             	add    $0x2,%edi
471173:	8b c3                	mov    %ebx,%eax
471175:	99                   	cltd
471176:	c7 45 0c 80 00 00 00 	movl   $0x80,0xc(%ebp)
47117d:	f7 7d 0c             	idivl  0xc(%ebp)
471180:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
471187:	c1 e0 07             	shl    $0x7,%eax
47118a:	03 c2                	add    %edx,%eax
47118c:	0f b7 14 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%edx
471193:	00
471194:	3b cb                	cmp    %ebx,%ecx
471196:	74 2d                	je     0x4711c5
471198:	8b 04 d5 0c b1 4a 00 	mov    0x4ab10c(,%edx,8),%eax
47119f:	03 c3                	add    %ebx,%eax
4711a1:	3b c8                	cmp    %eax,%ecx
4711a3:	74 20                	je     0x4711c5
4711a5:	0f b6 04 d5 0b b1 4a 	movzbl 0x4ab10b(,%edx,8),%eax
4711ac:	00
4711ad:	8d 04 85 a0 e6 4a 00 	lea    0x4ae6a0(,%eax,4),%eax
4711b4:	8b 10                	mov    (%eax),%edx
4711b6:	3b ca                	cmp    %edx,%ecx
4711b8:	0f 82 26 ff ff ff    	jb     0x4710e4
4711be:	83 c0 04             	add    $0x4,%eax
4711c1:	3b ca                	cmp    %edx,%ecx
4711c3:	75 ef                	jne    0x4711b4
4711c5:	3b 7d 08             	cmp    0x8(%ebp),%edi
4711c8:	0f 83 80 00 00 00    	jae    0x47124e
4711ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
4711d1:	e9 3e ff ff ff       	jmp    0x471114
4711d6:	6a fe                	push   $0xfffffffe
4711d8:	58                   	pop    %eax
4711d9:	eb 7a                	jmp    0x471255
4711db:	85 d2                	test   %edx,%edx
4711dd:	7e 6f                	jle    0x47124e
4711df:	2b fe                	sub    %esi,%edi
4711e1:	4a                   	dec    %edx
4711e2:	3b 73 7c             	cmp    0x7c(%ebx),%esi
4711e5:	73 ef                	jae    0x4711d6
4711e7:	0f b7 04 37          	movzwl (%edi,%esi,1),%eax
4711eb:	0f b7 0e             	movzwl (%esi),%ecx
4711ee:	89 45 08             	mov    %eax,0x8(%ebp)
4711f1:	3d ff 00 00 00       	cmp    $0xff,%eax
4711f6:	77 10                	ja     0x471208
4711f8:	8b 43 3c             	mov    0x3c(%ebx),%eax
4711fb:	8b 5d 08             	mov    0x8(%ebp),%ebx
4711fe:	0f b6 1c 18          	movzbl (%eax,%ebx,1),%ebx
471202:	89 5d 08             	mov    %ebx,0x8(%ebp)
471205:	8b 5d 0c             	mov    0xc(%ebp),%ebx
471208:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
47120e:	77 07                	ja     0x471217
471210:	8b 43 3c             	mov    0x3c(%ebx),%eax
471213:	0f b6 0c 08          	movzbl (%eax,%ecx,1),%ecx
471217:	39 4d 08             	cmp    %ecx,0x8(%ebp)
47121a:	0f 85 c4 fe ff ff    	jne    0x4710e4
471220:	83 c6 02             	add    $0x2,%esi
471223:	85 d2                	test   %edx,%edx
471225:	7f ba                	jg     0x4711e1
471227:	eb 25                	jmp    0x47124e
471229:	85 d2                	test   %edx,%edx
47122b:	7e 21                	jle    0x47124e
47122d:	8b 5b 7c             	mov    0x7c(%ebx),%ebx
471230:	4a                   	dec    %edx
471231:	3b f3                	cmp    %ebx,%esi
471233:	73 a1                	jae    0x4711d6
471235:	66 8b 0f             	mov    (%edi),%cx
471238:	66 8b 06             	mov    (%esi),%ax
47123b:	83 c6 02             	add    $0x2,%esi
47123e:	83 c7 02             	add    $0x2,%edi
471241:	66 3b c8             	cmp    %ax,%cx
471244:	0f 85 9a fe ff ff    	jne    0x4710e4
47124a:	85 d2                	test   %edx,%edx
47124c:	7f e2                	jg     0x471230
47124e:	2b 75 f8             	sub    -0x8(%ebp),%esi
471251:	d1 fe                	sar    $1,%esi
471253:	8b c6                	mov    %esi,%eax
471255:	5f                   	pop    %edi
471256:	5e                   	pop    %esi
471257:	5b                   	pop    %ebx
471258:	c9                   	leave
471259:	c3                   	ret
47125a:	55                   	push   %ebp
47125b:	8b ec                	mov    %esp,%ebp
47125d:	51                   	push   %ecx
47125e:	8b 45 0c             	mov    0xc(%ebp),%eax
471261:	53                   	push   %ebx
471262:	56                   	push   %esi
471263:	57                   	push   %edi
471264:	8b da                	mov    %edx,%ebx
471266:	89 4d fc             	mov    %ecx,-0x4(%ebp)
471269:	85 c0                	test   %eax,%eax
47126b:	78 53                	js     0x4712c0
47126d:	3b 45 08             	cmp    0x8(%ebp),%eax
471270:	7d 4e                	jge    0x4712c0
471272:	03 c0                	add    %eax,%eax
471274:	89 45 0c             	mov    %eax,0xc(%ebp)
471277:	8b 74 83 04          	mov    0x4(%ebx,%eax,4),%esi
47127b:	2b 34 83             	sub    (%ebx,%eax,4),%esi
47127e:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
471285:	50                   	push   %eax
471286:	ff 15 dc bd 4b 00    	call   *0x4bbddc
47128c:	8b f8                	mov    %eax,%edi
47128e:	59                   	pop    %ecx
47128f:	85 ff                	test   %edi,%edi
471291:	75 04                	jne    0x471297
471293:	6a fa                	push   $0xfffffffa
471295:	eb 2b                	jmp    0x4712c2
471297:	8b 4d 0c             	mov    0xc(%ebp),%ecx
47129a:	8d 04 36             	lea    (%esi,%esi,1),%eax
47129d:	8b 0c 8b             	mov    (%ebx,%ecx,4),%ecx
4712a0:	50                   	push   %eax
4712a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4712a4:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
4712a7:	51                   	push   %ecx
4712a8:	57                   	push   %edi
4712a9:	e8 d2 db fa ff       	call   0x41ee80
4712ae:	8b 4d 10             	mov    0x10(%ebp),%ecx
4712b1:	83 c4 0c             	add    $0xc,%esp
4712b4:	33 c0                	xor    %eax,%eax
4712b6:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
4712ba:	89 39                	mov    %edi,(%ecx)
4712bc:	8b c6                	mov    %esi,%eax
4712be:	eb 03                	jmp    0x4712c3
4712c0:	6a f9                	push   $0xfffffff9
4712c2:	58                   	pop    %eax
4712c3:	5f                   	pop    %edi
4712c4:	5e                   	pop    %esi
4712c5:	5b                   	pop    %ebx
4712c6:	c9                   	leave
4712c7:	c3                   	ret
4712c8:	56                   	push   %esi
4712c9:	0f b7 01             	movzwl (%ecx),%eax
4712cc:	66 85 c0             	test   %ax,%ax
4712cf:	75 04                	jne    0x4712d5
4712d1:	38 02                	cmp    %al,(%edx)
4712d3:	74 1e                	je     0x4712f3
4712d5:	8b f0                	mov    %eax,%esi
4712d7:	0f b6 02             	movzbl (%edx),%eax
4712da:	83 c1 02             	add    $0x2,%ecx
4712dd:	42                   	inc    %edx
4712de:	66 3b f0             	cmp    %ax,%si
4712e1:	74 e6                	je     0x4712c9
4712e3:	66 3b c6             	cmp    %si,%ax
4712e6:	1b c0                	sbb    %eax,%eax
4712e8:	f7 d8                	neg    %eax
4712ea:	5e                   	pop    %esi
4712eb:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
4712f2:	c3                   	ret
4712f3:	33 c0                	xor    %eax,%eax
4712f5:	5e                   	pop    %esi
4712f6:	c3                   	ret
4712f7:	2b ca                	sub    %edx,%ecx
4712f9:	56                   	push   %esi
4712fa:	0f b7 04 11          	movzwl (%ecx,%edx,1),%eax
4712fe:	66 85 c0             	test   %ax,%ax
471301:	75 05                	jne    0x471308
471303:	66 39 02             	cmp    %ax,(%edx)
471306:	74 1b                	je     0x471323
471308:	0f b7 32             	movzwl (%edx),%esi
47130b:	83 c2 02             	add    $0x2,%edx
47130e:	66 3b c6             	cmp    %si,%ax
471311:	74 e7                	je     0x4712fa
471313:	66 3b f0             	cmp    %ax,%si
471316:	1b c0                	sbb    %eax,%eax
471318:	f7 d8                	neg    %eax
47131a:	5e                   	pop    %esi
47131b:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
471322:	c3                   	ret
471323:	33 c0                	xor    %eax,%eax
471325:	5e                   	pop    %esi
471326:	c3                   	ret
471327:	55                   	push   %ebp
471328:	8b ec                	mov    %esp,%ebp
47132a:	8b 45 08             	mov    0x8(%ebp),%eax
47132d:	56                   	push   %esi
47132e:	57                   	push   %edi
47132f:	85 c0                	test   %eax,%eax
471331:	74 16                	je     0x471349
471333:	2b ca                	sub    %edx,%ecx
471335:	0f b7 34 11          	movzwl (%ecx,%edx,1),%esi
471339:	0f b7 3a             	movzwl (%edx),%edi
47133c:	48                   	dec    %eax
47133d:	8d 52 02             	lea    0x2(%edx),%edx
471340:	66 3b fe             	cmp    %si,%di
471343:	75 0a                	jne    0x47134f
471345:	85 c0                	test   %eax,%eax
471347:	75 ec                	jne    0x471335
471349:	33 c0                	xor    %eax,%eax
47134b:	5f                   	pop    %edi
47134c:	5e                   	pop    %esi
47134d:	5d                   	pop    %ebp
47134e:	c3                   	ret
47134f:	1b c0                	sbb    %eax,%eax
471351:	f7 d8                	neg    %eax
471353:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
47135a:	eb ef                	jmp    0x47134b
47135c:	55                   	push   %ebp
47135d:	8b ec                	mov    %esp,%ebp
47135f:	53                   	push   %ebx
471360:	56                   	push   %esi
471361:	57                   	push   %edi
471362:	6a 02                	push   $0x2
471364:	8b f1                	mov    %ecx,%esi
471366:	5f                   	pop    %edi
471367:	2b f7                	sub    %edi,%esi
471369:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
47136d:	74 3f                	je     0x4713ae
47136f:	66 8b 06             	mov    (%esi),%ax
471372:	bb 00 fc 00 00       	mov    $0xfc00,%ebx
471377:	66 23 c3             	and    %bx,%ax
47137a:	b9 00 dc 00 00       	mov    $0xdc00,%ecx
47137f:	66 3b c1             	cmp    %cx,%ax
471382:	75 02                	jne    0x471386