40d0aa:	c3                   	ret
40d0ab:	8b ff                	mov    %edi,%edi
40d0ad:	55                   	push   %ebp
40d0ae:	8b ec                	mov    %esp,%ebp
40d0b0:	8b 45 10             	mov    0x10(%ebp),%eax
40d0b3:	56                   	push   %esi
40d0b4:	8b 75 0c             	mov    0xc(%ebp),%esi
40d0b7:	8b 0e                	mov    (%esi),%ecx
40d0b9:	3b 0c 85 24 25 42 00 	cmp    0x422524(,%eax,4),%ecx
40d0c0:	74 17                	je     0x40d0d9
40d0c2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d0c5:	a1 68 18 42 00       	mov    0x421868,%eax
40d0ca:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40d0d0:	75 07                	jne    0x40d0d9
40d0d2:	e8 6c 1b 00 00       	call   0x40ec43
40d0d7:	89 06                	mov    %eax,(%esi)
40d0d9:	5e                   	pop    %esi
40d0da:	5d                   	pop    %ebp
40d0db:	c3                   	ret
40d0dc:	8b ff                	mov    %edi,%edi
40d0de:	55                   	push   %ebp
40d0df:	8b ec                	mov    %esp,%ebp
40d0e1:	8b 45 08             	mov    0x8(%ebp),%eax
40d0e4:	33 c9                	xor    %ecx,%ecx
40d0e6:	56                   	push   %esi
40d0e7:	57                   	push   %edi
40d0e8:	be ff 07 00 00       	mov    $0x7ff,%esi
40d0ed:	8b 38                	mov    (%eax),%edi
40d0ef:	8b 50 04             	mov    0x4(%eax),%edx
40d0f2:	8b c2                	mov    %edx,%eax
40d0f4:	c1 e8 14             	shr    $0x14,%eax
40d0f7:	23 c6                	and    %esi,%eax
40d0f9:	3b c6                	cmp    %esi,%eax
40d0fb:	75 3b                	jne    0x40d138
40d0fd:	8b f2                	mov    %edx,%esi
40d0ff:	8b c7                	mov    %edi,%eax
40d101:	81 e6 ff ff 0f 00    	and    $0xfffff,%esi
40d107:	0b c6                	or     %esi,%eax
40d109:	75 03                	jne    0x40d10e
40d10b:	40                   	inc    %eax
40d10c:	eb 2c                	jmp    0x40d13a
40d10e:	b8 00 00 08 00       	mov    $0x80000,%eax
40d113:	3b d1                	cmp    %ecx,%edx
40d115:	7f 13                	jg     0x40d12a
40d117:	7c 04                	jl     0x40d11d
40d119:	3b f9                	cmp    %ecx,%edi
40d11b:	73 0d                	jae    0x40d12a
40d11d:	3b f9                	cmp    %ecx,%edi
40d11f:	75 09                	jne    0x40d12a
40d121:	3b f0                	cmp    %eax,%esi
40d123:	75 05                	jne    0x40d12a
40d125:	6a 04                	push   $0x4
40d127:	58                   	pop    %eax
40d128:	eb 10                	jmp    0x40d13a
40d12a:	23 d0                	and    %eax,%edx
40d12c:	0b ca                	or     %edx,%ecx
40d12e:	74 04                	je     0x40d134
40d130:	6a 02                	push   $0x2
40d132:	eb f3                	jmp    0x40d127
40d134:	6a 03                	push   $0x3
40d136:	eb ef                	jmp    0x40d127
40d138:	33 c0                	xor    %eax,%eax
40d13a:	5f                   	pop    %edi
40d13b:	5e                   	pop    %esi
40d13c:	5d                   	pop    %ebp
40d13d:	c3                   	ret
40d13e:	8b ff                	mov    %edi,%edi
40d140:	55                   	push   %ebp
40d141:	8b ec                	mov    %esp,%ebp
40d143:	8b 45 08             	mov    0x8(%ebp),%eax
40d146:	53                   	push   %ebx
40d147:	0f bf 5d 14          	movswl 0x14(%ebp),%ebx
40d14b:	56                   	push   %esi
40d14c:	8b 70 04             	mov    0x4(%eax),%esi
40d14f:	8b cb                	mov    %ebx,%ecx
40d151:	57                   	push   %edi
40d152:	8b 38                	mov    (%eax),%edi
40d154:	8b d6                	mov    %esi,%edx
40d156:	23 55 10             	and    0x10(%ebp),%edx
40d159:	8b c7                	mov    %edi,%eax
40d15b:	23 45 0c             	and    0xc(%ebp),%eax
40d15e:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d164:	e8 57 ab 00 00       	call   0x417cc0
40d169:	6a 08                	push   $0x8
40d16b:	0f b7 c0             	movzwl %ax,%eax
40d16e:	59                   	pop    %ecx
40d16f:	66 3b c1             	cmp    %cx,%ax
40d172:	77 66                	ja     0x40d1da
40d174:	73 04                	jae    0x40d17a
40d176:	32 c0                	xor    %al,%al
40d178:	eb 62                	jmp    0x40d1dc
40d17a:	33 c0                	xor    %eax,%eax
40d17c:	33 d2                	xor    %edx,%edx
40d17e:	40                   	inc    %eax
40d17f:	8b cb                	mov    %ebx,%ecx
40d181:	e8 1a ab 00 00       	call   0x417ca0
40d186:	83 c0 ff             	add    $0xffffffff,%eax
40d189:	83 d2 ff             	adc    $0xffffffff,%edx
40d18c:	23 c7                	and    %edi,%eax
40d18e:	23 d6                	and    %esi,%edx
40d190:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d196:	0b c2                	or     %edx,%eax
40d198:	75 40                	jne    0x40d1da
40d19a:	66 83 7d 14 30       	cmpw   $0x30,0x14(%ebp)
40d19f:	74 22                	je     0x40d1c3
40d1a1:	0f ac f7 04          	shrd   $0x4,%esi,%edi
40d1a5:	8b cb                	mov    %ebx,%ecx
40d1a7:	23 7d 0c             	and    0xc(%ebp),%edi
40d1aa:	c1 ee 04             	shr    $0x4,%esi
40d1ad:	8b c7                	mov    %edi,%eax
40d1af:	23 75 10             	and    0x10(%ebp),%esi
40d1b2:	81 e6 ff ff 00 00    	and    $0xffff,%esi
40d1b8:	8b d6                	mov    %esi,%edx
40d1ba:	e8 01 ab 00 00       	call   0x417cc0
40d1bf:	8a c8                	mov    %al,%cl
40d1c1:	eb 10                	jmp    0x40d1d3
40d1c3:	33 c9                	xor    %ecx,%ecx
40d1c5:	81 e6 00 00 f0 7f    	and    $0x7ff00000,%esi
40d1cb:	8b c1                	mov    %ecx,%eax
40d1cd:	0b c6                	or     %esi,%eax
40d1cf:	74 02                	je     0x40d1d3
40d1d1:	b1 01                	mov    $0x1,%cl
40d1d3:	80 e1 01             	and    $0x1,%cl
40d1d6:	8a c1                	mov    %cl,%al
40d1d8:	eb 02                	jmp    0x40d1dc
40d1da:	b0 01                	mov    $0x1,%al
40d1dc:	5f                   	pop    %edi
40d1dd:	5e                   	pop    %esi
40d1de:	5b                   	pop    %ebx
40d1df:	5d                   	pop    %ebp
40d1e0:	c3                   	ret
40d1e1:	8b ff                	mov    %edi,%edi
40d1e3:	55                   	push   %ebp
40d1e4:	8b ec                	mov    %esp,%ebp
40d1e6:	83 ec 2c             	sub    $0x2c,%esp
40d1e9:	33 d2                	xor    %edx,%edx
40d1eb:	56                   	push   %esi
40d1ec:	8b 75 1c             	mov    0x1c(%ebp),%esi
40d1ef:	57                   	push   %edi
40d1f0:	85 f6                	test   %esi,%esi
40d1f2:	79 02                	jns    0x40d1f6
40d1f4:	8b f2                	mov    %edx,%esi
40d1f6:	8b 7d 0c             	mov    0xc(%ebp),%edi
40d1f9:	8d 46 0b             	lea    0xb(%esi),%eax
40d1fc:	88 17                	mov    %dl,(%edi)
40d1fe:	39 45 10             	cmp    %eax,0x10(%ebp)
40d201:	77 22                	ja     0x40d225
40d203:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
40d206:	6a 22                	push   $0x22
40d208:	5e                   	pop    %esi
40d209:	51                   	push   %ecx
40d20a:	52                   	push   %edx
40d20b:	52                   	push   %edx
40d20c:	52                   	push   %edx
40d20d:	52                   	push   %edx
40d20e:	52                   	push   %edx
40d20f:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d213:	89 71 18             	mov    %esi,0x18(%ecx)
40d216:	e8 31 a2 ff ff       	call   0x40744c
40d21b:	83 c4 18             	add    $0x18,%esp
40d21e:	8b c6                	mov    %esi,%eax
40d220:	e9 e5 02 00 00       	jmp    0x40d50a
40d225:	53                   	push   %ebx
40d226:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d229:	b9 ff 07 00 00       	mov    $0x7ff,%ecx
40d22e:	8b 43 04             	mov    0x4(%ebx),%eax
40d231:	c1 e8 14             	shr    $0x14,%eax
40d234:	23 c1                	and    %ecx,%eax
40d236:	3b c1                	cmp    %ecx,%eax
40d238:	75 53                	jne    0x40d28d
40d23a:	ff 75 2c             	push   0x2c(%ebp)
40d23d:	ff 75 28             	push   0x28(%ebp)
40d240:	ff 75 24             	push   0x24(%ebp)
40d243:	52                   	push   %edx
40d244:	56                   	push   %esi
40d245:	ff 75 18             	push   0x18(%ebp)
40d248:	ff 75 14             	push   0x14(%ebp)
40d24b:	ff 75 10             	push   0x10(%ebp)
40d24e:	57                   	push   %edi
40d24f:	53                   	push   %ebx
40d250:	e8 b9 02 00 00       	call   0x40d50e
40d255:	83 c4 28             	add    $0x28,%esp
40d258:	85 c0                	test   %eax,%eax
40d25a:	74 08                	je     0x40d264
40d25c:	c6 07 00             	movb   $0x0,(%edi)
40d25f:	e9 a5 02 00 00       	jmp    0x40d509
40d264:	6a 65                	push   $0x65
40d266:	57                   	push   %edi
40d267:	e8 34 ab 00 00       	call   0x417da0
40d26c:	59                   	pop    %ecx
40d26d:	59                   	pop    %ecx
40d26e:	85 c0                	test   %eax,%eax
40d270:	0f 84 91 02 00 00    	je     0x40d507
40d276:	8a 4d 20             	mov    0x20(%ebp),%cl
40d279:	80 f1 01             	xor    $0x1,%cl
40d27c:	c0 e1 05             	shl    $0x5,%cl
40d27f:	80 c1 50             	add    $0x50,%cl
40d282:	88 08                	mov    %cl,(%eax)
40d284:	c6 40 03 00          	movb   $0x0,0x3(%eax)
40d288:	e9 7a 02 00 00       	jmp    0x40d507
40d28d:	39 53 04             	cmp    %edx,0x4(%ebx)
40d290:	7f 0a                	jg     0x40d29c
40d292:	7c 04                	jl     0x40d298
40d294:	39 13                	cmp    %edx,(%ebx)
40d296:	73 04                	jae    0x40d29c
40d298:	c6 07 2d             	movb   $0x2d,(%edi)
40d29b:	47                   	inc    %edi
40d29c:	8a 45 20             	mov    0x20(%ebp),%al
40d29f:	8d 57 01             	lea    0x1(%edi),%edx
40d2a2:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d2a5:	34 01                	xor    $0x1,%al
40d2a7:	88 45 ff             	mov    %al,-0x1(%ebp)
40d2aa:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
40d2b0:	0f b6 c0             	movzbl %al,%eax
40d2b3:	c1 e0 05             	shl    $0x5,%eax
40d2b6:	83 c0 07             	add    $0x7,%eax
40d2b9:	c7 45 f0 ff 03 00 00 	movl   $0x3ff,-0x10(%ebp)
40d2c0:	89 45 d8             	mov    %eax,-0x28(%ebp)
40d2c3:	33 c0                	xor    %eax,%eax
40d2c5:	0b c1                	or     %ecx,%eax
40d2c7:	89 55 f4             	mov    %edx,-0xc(%ebp)
40d2ca:	6a 30                	push   $0x30
40d2cc:	58                   	pop    %eax
40d2cd:	75 1e                	jne    0x40d2ed
40d2cf:	88 07                	mov    %al,(%edi)
40d2d1:	8b 43 04             	mov    0x4(%ebx),%eax
40d2d4:	8b 0b                	mov    (%ebx),%ecx
40d2d6:	25 ff ff 0f 00       	and    $0xfffff,%eax
40d2db:	0b c8                	or     %eax,%ecx
40d2dd:	75 05                	jne    0x40d2e4
40d2df:	21 4d f0             	and    %ecx,-0x10(%ebp)
40d2e2:	eb 0c                	jmp    0x40d2f0
40d2e4:	c7 45 f0 fe 03 00 00 	movl   $0x3fe,-0x10(%ebp)
40d2eb:	eb 03                	jmp    0x40d2f0
40d2ed:	c6 07 31             	movb   $0x31,(%edi)
40d2f0:	8d 7a 01             	lea    0x1(%edx),%edi
40d2f3:	85 f6                	test   %esi,%esi
40d2f5:	75 04                	jne    0x40d2fb
40d2f7:	32 c0                	xor    %al,%al
40d2f9:	eb 23                	jmp    0x40d31e
40d2fb:	8b 45 2c             	mov    0x2c(%ebp),%eax
40d2fe:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
40d302:	75 0d                	jne    0x40d311
40d304:	8b c8                	mov    %eax,%ecx
40d306:	e8 95 bb ff ff       	call   0x408ea0
40d30b:	8b 45 2c             	mov    0x2c(%ebp),%eax
40d30e:	8b 55 f4             	mov    -0xc(%ebp),%edx
40d311:	8b 40 0c             	mov    0xc(%eax),%eax
40d314:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40d31a:	8b 00                	mov    (%eax),%eax
40d31c:	8a 00                	mov    (%eax),%al
40d31e:	88 02                	mov    %al,(%edx)
40d320:	8b 43 04             	mov    0x4(%ebx),%eax
40d323:	25 ff ff 0f 00       	and    $0xfffff,%eax
40d328:	89 45 e0             	mov    %eax,-0x20(%ebp)
40d32b:	77 09                	ja     0x40d336
40d32d:	83 3b 00             	cmpl   $0x0,(%ebx)
40d330:	0f 86 bf 00 00 00    	jbe    0x40d3f5
40d336:	6a 30                	push   $0x30
40d338:	58                   	pop    %eax
40d339:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d33c:	b9 00 00 0f 00       	mov    $0xf0000,%ecx
40d341:	33 c0                	xor    %eax,%eax
40d343:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d346:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d349:	8b 55 f8             	mov    -0x8(%ebp),%edx
40d34c:	0f b7 d2             	movzwl %dx,%edx
40d34f:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40d352:	8b d7                	mov    %edi,%edx
40d354:	89 7d e0             	mov    %edi,-0x20(%ebp)
40d357:	85 f6                	test   %esi,%esi
40d359:	7e 50                	jle    0x40d3ab
40d35b:	8b 53 04             	mov    0x4(%ebx),%edx
40d35e:	23 03                	and    (%ebx),%eax
40d360:	23 d1                	and    %ecx,%edx
40d362:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40d365:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d36b:	0f b7 c9             	movzwl %cx,%ecx
40d36e:	e8 4d a9 00 00       	call   0x417cc0
40d373:	6a 30                	push   $0x30
40d375:	59                   	pop    %ecx
40d376:	66 03 c1             	add    %cx,%ax
40d379:	0f b7 c0             	movzwl %ax,%eax
40d37c:	83 f8 39             	cmp    $0x39,%eax
40d37f:	76 03                	jbe    0x40d384
40d381:	03 45 d8             	add    -0x28(%ebp),%eax
40d384:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40d387:	8b 55 f8             	mov    -0x8(%ebp),%edx
40d38a:	88 07                	mov    %al,(%edi)
40d38c:	83 ea 04             	sub    $0x4,%edx
40d38f:	8b 45 ec             	mov    -0x14(%ebp),%eax
40d392:	47                   	inc    %edi
40d393:	0f ac c8 04          	shrd   $0x4,%ecx,%eax
40d397:	89 55 f8             	mov    %edx,-0x8(%ebp)
40d39a:	c1 e9 04             	shr    $0x4,%ecx
40d39d:	4e                   	dec    %esi
40d39e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d3a1:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d3a4:	66 85 d2             	test   %dx,%dx
40d3a7:	79 a0                	jns    0x40d349
40d3a9:	eb 4a                	jmp    0x40d3f5
40d3ab:	ff 75 28             	push   0x28(%ebp)
40d3ae:	8b fa                	mov    %edx,%edi
40d3b0:	ff 75 e4             	push   -0x1c(%ebp)
40d3b3:	51                   	push   %ecx
40d3b4:	50                   	push   %eax
40d3b5:	53                   	push   %ebx
40d3b6:	e8 66 06 00 00       	call   0x40da21
40d3bb:	83 c4 14             	add    $0x14,%esp
40d3be:	84 c0                	test   %al,%al
40d3c0:	74 47                	je     0x40d409
40d3c2:	8b 7d e0             	mov    -0x20(%ebp),%edi
40d3c5:	6a 30                	push   $0x30
40d3c7:	5b                   	pop    %ebx
40d3c8:	8d 47 ff             	lea    -0x1(%edi),%eax
40d3cb:	8a 08                	mov    (%eax),%cl
40d3cd:	80 f9 66             	cmp    $0x66,%cl
40d3d0:	74 05                	je     0x40d3d7
40d3d2:	80 f9 46             	cmp    $0x46,%cl
40d3d5:	75 05                	jne    0x40d3dc
40d3d7:	88 18                	mov    %bl,(%eax)
40d3d9:	48                   	dec    %eax
40d3da:	eb ef                	jmp    0x40d3cb
40d3dc:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d3df:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40d3e2:	74 0e                	je     0x40d3f2
40d3e4:	80 f9 39             	cmp    $0x39,%cl
40d3e7:	75 03                	jne    0x40d3ec
40d3e9:	02 4d d8             	add    -0x28(%ebp),%cl
40d3ec:	fe c1                	inc    %cl
40d3ee:	88 08                	mov    %cl,(%eax)
40d3f0:	eb 03                	jmp    0x40d3f5
40d3f2:	fe 40 ff             	incb   -0x1(%eax)
40d3f5:	85 f6                	test   %esi,%esi
40d3f7:	7e 10                	jle    0x40d409
40d3f9:	56                   	push   %esi
40d3fa:	6a 30                	push   $0x30
40d3fc:	58                   	pop    %eax
40d3fd:	50                   	push   %eax
40d3fe:	57                   	push   %edi
40d3ff:	e8 6c 76 ff ff       	call   0x404a70
40d404:	83 c4 0c             	add    $0xc,%esp
40d407:	03 fe                	add    %esi,%edi
40d409:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d40c:	80 38 00             	cmpb   $0x0,(%eax)
40d40f:	75 02                	jne    0x40d413
40d411:	8b f8                	mov    %eax,%edi
40d413:	8a 45 ff             	mov    -0x1(%ebp),%al
40d416:	b1 34                	mov    $0x34,%cl
40d418:	c0 e0 05             	shl    $0x5,%al