401f9a:	31 ff                	xor    %edi,%edi
401f9c:	29 d0                	sub    %edx,%eax
401f9e:	83 d7 ff             	adc    $0xffffffff,%edi
401fa1:	21 f8                	and    %edi,%eax
401fa3:	8d 84 02 d3 00 00 00 	lea    0xd3(%edx,%eax,1),%eax
401faa:	25 00 ff ff ff       	and    $0xffffff00,%eax
401faf:	83 c0 30             	add    $0x30,%eax
401fb2:	8d 55 04             	lea    0x4(%ebp),%edx
401fb5:	29 c2                	sub    %eax,%edx
401fb7:	77 0b                	ja     0x401fc4
401fb9:	83 24 2e f7          	andl   $0xfffffff7,(%esi,%ebp,1)
401fbd:	83 c5 04             	add    $0x4,%ebp
401fc0:	eb 1e                	jmp    0x401fe0
401fc2:	90                   	nop
401fc3:	90                   	nop
401fc4:	89 54 2e fc          	mov    %edx,-0x4(%esi,%ebp,1)
401fc8:	8d 7a 03             	lea    0x3(%edx),%edi
401fcb:	89 7c 30 fc          	mov    %edi,-0x4(%eax,%esi,1)
401fcf:	89 c5                	mov    %eax,%ebp
401fd1:	81 fa 30 0b 00 00    	cmp    $0xb30,%edx
401fd7:	72 07                	jb     0x401fe0
401fd9:	01 f0                	add    %esi,%eax
401fdb:	e8 0c f6 ff ff       	call   0x4015ec
401fe0:	09 dd                	or     %ebx,%ebp
401fe2:	89 6e fc             	mov    %ebp,-0x4(%esi)
401fe5:	c6 05 18 87 4a 00 00 	movb   $0x0,0x4a8718
401fec:	89 f0                	mov    %esi,%eax
401fee:	5d                   	pop    %ebp
401fef:	5f                   	pop    %edi
401ff0:	5e                   	pop    %esi
401ff1:	5b                   	pop    %ebx
401ff2:	c3                   	ret
401ff3:	90                   	nop
401ff4:	90                   	nop
401ff5:	c6 05 18 87 4a 00 00 	movb   $0x0,0x4a8718
401ffc:	89 c8                	mov    %ecx,%eax
401ffe:	c1 e8 02             	shr    $0x2,%eax
402001:	01 c8                	add    %ecx,%eax
402003:	31 ff                	xor    %edi,%edi
402005:	29 d0                	sub    %edx,%eax
402007:	83 d7 ff             	adc    $0xffffffff,%edi
40200a:	21 f8                	and    %edi,%eax
40200c:	01 d0                	add    %edx,%eax
40200e:	89 c5                	mov    %eax,%ebp
402010:	89 cf                	mov    %ecx,%edi
402012:	52                   	push   %edx
402013:	e8 f8 f7 ff ff       	call   0x401810
402018:	5a                   	pop    %edx
402019:	85 c0                	test   %eax,%eax
40201b:	74 d1                	je     0x401fee
40201d:	81 fd 2c 0a 04 00    	cmp    $0x40a2c,%ebp
402023:	76 03                	jbe    0x402028
402025:	89 50 f8             	mov    %edx,-0x8(%eax)
402028:	89 c5                	mov    %eax,%ebp
40202a:	89 c2                	mov    %eax,%edx
40202c:	89 f0                	mov    %esi,%eax
40202e:	89 f9                	mov    %edi,%ecx
402030:	e8 2b f5 ff ff       	call   0x401560
402035:	89 f0                	mov    %esi,%eax
402037:	e8 3c fb ff ff       	call   0x401b78
40203c:	89 e8                	mov    %ebp,%eax
40203e:	5d                   	pop    %ebp
40203f:	5f                   	pop    %edi
402040:	5e                   	pop    %esi
402041:	5b                   	pop    %ebx
402042:	c3                   	ret
402043:	90                   	nop
402044:	f6 c1 03             	test   $0x3,%cl
402047:	0f 85 8b 00 00 00    	jne    0x4020d8
40204d:	83 e9 18             	sub    $0x18,%ecx
402050:	39 ca                	cmp    %ecx,%edx
402052:	76 44                	jbe    0x402098
402054:	89 c8                	mov    %ecx,%eax
402056:	c1 e9 02             	shr    $0x2,%ecx
402059:	01 c1                	add    %eax,%ecx
40205b:	31 c0                	xor    %eax,%eax
40205d:	29 d1                	sub    %edx,%ecx
40205f:	83 d0 ff             	adc    $0xffffffff,%eax
402062:	21 c8                	and    %ecx,%eax
402064:	01 d0                	add    %edx,%eax
402066:	89 c3                	mov    %eax,%ebx
402068:	52                   	push   %edx
402069:	e8 a2 f7 ff ff       	call   0x401810
40206e:	5a                   	pop    %edx
40206f:	85 c0                	test   %eax,%eax
402071:	74 22                	je     0x402095
402073:	81 fb 2c 0a 04 00    	cmp    $0x40a2c,%ebx
402079:	76 03                	jbe    0x40207e
40207b:	89 50 f8             	mov    %edx,-0x8(%eax)
40207e:	8b 4e f8             	mov    -0x8(%esi),%ecx
402081:	89 c3                	mov    %eax,%ebx
402083:	89 c2                	mov    %eax,%edx
402085:	89 f0                	mov    %esi,%eax
402087:	e8 d4 f4 ff ff       	call   0x401560
40208c:	89 f0                	mov    %esi,%eax
40208e:	e8 e5 fa ff ff       	call   0x401b78
402093:	89 d8                	mov    %ebx,%eax
402095:	5e                   	pop    %esi
402096:	5b                   	pop    %ebx
402097:	c3                   	ret
402098:	d1 e9                	shr    $1,%ecx
40209a:	39 ca                	cmp    %ecx,%edx
40209c:	72 06                	jb     0x4020a4
40209e:	89 50 f8             	mov    %edx,-0x8(%eax)
4020a1:	5e                   	pop    %esi
4020a2:	5b                   	pop    %ebx
4020a3:	c3                   	ret
4020a4:	89 d3                	mov    %edx,%ebx
4020a6:	89 d0                	mov    %edx,%eax
4020a8:	e8 63 f7 ff ff       	call   0x401810
4020ad:	85 c0                	test   %eax,%eax
4020af:	74 e4                	je     0x402095
4020b1:	81 fb 2c 0a 04 00    	cmp    $0x40a2c,%ebx
4020b7:	76 03                	jbe    0x4020bc
4020b9:	89 58 f8             	mov    %ebx,-0x8(%eax)
4020bc:	89 d9                	mov    %ebx,%ecx
4020be:	89 c3                	mov    %eax,%ebx
4020c0:	89 c2                	mov    %eax,%edx
4020c2:	89 f0                	mov    %esi,%eax
4020c4:	e8 c7 f4 ff ff       	call   0x401590
4020c9:	89 f0                	mov    %esi,%eax
4020cb:	e8 a8 fa ff ff       	call   0x401b78
4020d0:	89 d8                	mov    %ebx,%eax
4020d2:	5e                   	pop    %esi
4020d3:	5b                   	pop    %ebx
4020d4:	c3                   	ret
4020d5:	90                   	nop
4020d6:	90                   	nop
4020d7:	90                   	nop
4020d8:	31 c0                	xor    %eax,%eax
4020da:	5e                   	pop    %esi
4020db:	5b                   	pop    %ebx
4020dc:	c3                   	ret
4020dd:	8d 40 00             	lea    0x0(%eax),%eax
4020e0:	53                   	push   %ebx
4020e1:	8d 58 ff             	lea    -0x1(%eax),%ebx
4020e4:	83 e3 fc             	and    $0xfffffffc,%ebx
4020e7:	e8 24 f7 ff ff       	call   0x401810
4020ec:	83 f8 01             	cmp    $0x1,%eax
4020ef:	19 c9                	sbb    %ecx,%ecx
4020f1:	8d 14 03             	lea    (%ebx,%eax,1),%edx
4020f4:	09 cb                	or     %ecx,%ebx
4020f6:	81 fb 2c 0a 04 00    	cmp    $0x40a2c,%ebx
4020fc:	73 10                	jae    0x40210e
4020fe:	f7 db                	neg    %ebx
402100:	d9 ee                	fldz
402102:	dd 14 13             	fstl   (%ebx,%edx,1)
402105:	83 c3 08             	add    $0x8,%ebx
402108:	78 f8                	js     0x402102
40210a:	89 0a                	mov    %ecx,(%edx)
40210c:	dd c0                	ffree  %st(0)
40210e:	5b                   	pop    %ebx
40210f:	c3                   	ret
402110:	8b c8                	mov    %eax,%ecx
402112:	8b d1                	mov    %ecx,%edx
402114:	83 ea 04             	sub    $0x4,%edx
402117:	8b 12                	mov    (%edx),%edx
402119:	83 e2 f0             	and    $0xfffffff0,%edx
40211c:	03 d1                	add    %ecx,%edx
40211e:	8b c2                	mov    %edx,%eax
402120:	8b d0                	mov    %eax,%edx
402122:	83 ea 04             	sub    $0x4,%edx
402125:	8b 12                	mov    (%edx),%edx
402127:	83 e2 f0             	and    $0xfffffff0,%edx
40212a:	85 d2                	test   %edx,%edx
40212c:	75 02                	jne    0x402130
40212e:	33 c0                	xor    %eax,%eax
402130:	c3                   	ret
402131:	8d 40 00             	lea    0x0(%eax),%eax
402134:	83 3d 20 87 4a 00 00 	cmpl   $0x0,0x4a8720
40213b:	74 1a                	je     0x402157
40213d:	8b 15 1c 87 4a 00    	mov    0x4a871c,%edx
402143:	3b d0                	cmp    %eax,%edx
402145:	72 10                	jb     0x402157
402147:	8b d0                	mov    %eax,%edx
402149:	81 c2 00 00 14 00    	add    $0x140000,%edx
40214f:	3b 15 1c 87 4a 00    	cmp    0x4a871c,%edx
402155:	73 04                	jae    0x40215b
402157:	83 c0 10             	add    $0x10,%eax
40215a:	c3                   	ret
40215b:	81 3d 20 87 4a 00 f0 	cmpl   $0x13fff0,0x4a8720
402162:	ff 13 00
402165:	74 07                	je     0x40216e
402167:	a1 1c 87 4a 00       	mov    0x4a871c,%eax
40216c:	eb 02                	jmp    0x402170
40216e:	33 c0                	xor    %eax,%eax
402170:	c3                   	ret
402171:	8d 40 00             	lea    0x0(%eax),%eax
402174:	53                   	push   %ebx
402175:	56                   	push   %esi
402176:	8b d8                	mov    %eax,%ebx
402178:	83 c3 20             	add    $0x20,%ebx
40217b:	89 1a                	mov    %ebx,(%edx)
40217d:	8b 10                	mov    (%eax),%edx
40217f:	3b 42 10             	cmp    0x10(%edx),%eax
402182:	75 08                	jne    0x40218c
402184:	8b 5a 08             	mov    0x8(%edx),%ebx
402187:	3b 5a 0c             	cmp    0xc(%edx),%ebx
40218a:	76 19                	jbe    0x4021a5
40218c:	8b f0                	mov    %eax,%esi
40218e:	8b de                	mov    %esi,%ebx
402190:	83 eb 04             	sub    $0x4,%ebx
402193:	8b 1b                	mov    (%ebx),%ebx
402195:	83 e3 f0             	and    $0xfffffff0,%ebx
402198:	03 de                	add    %esi,%ebx
40219a:	0f b7 42 02          	movzwl 0x2(%edx),%eax
40219e:	2b d8                	sub    %eax,%ebx
4021a0:	89 19                	mov    %ebx,(%ecx)
4021a2:	5e                   	pop    %esi
4021a3:	5b                   	pop    %ebx
4021a4:	c3                   	ret
4021a5:	8b 42 08             	mov    0x8(%edx),%eax
4021a8:	48                   	dec    %eax
4021a9:	89 01                	mov    %eax,(%ecx)
4021ab:	5e                   	pop    %esi
4021ac:	5b                   	pop    %ebx
4021ad:	c3                   	ret
4021ae:	8b c0                	mov    %eax,%eax
4021b0:	57                   	push   %edi
4021b1:	89 d7                	mov    %edx,%edi
4021b3:	83 c0 01             	add    $0x1,%eax
4021b6:	ba 41 5f 70 89       	mov    $0x89705f41,%edx
4021bb:	f7 e2                	mul    %edx
4021bd:	c1 e8 1e             	shr    $0x1e,%eax
4021c0:	89 d1                	mov    %edx,%ecx
4021c2:	81 e2 ff ff ff 1f    	and    $0x1fffffff,%edx
4021c8:	c1 e9 1d             	shr    $0x1d,%ecx
4021cb:	8d 14 92             	lea    (%edx,%edx,4),%edx
4021ce:	01 c2                	add    %eax,%edx
4021d0:	89 c8                	mov    %ecx,%eax
4021d2:	83 c8 30             	or     $0x30,%eax
4021d5:	88 07                	mov    %al,(%edi)
4021d7:	89 d0                	mov    %edx,%eax
4021d9:	83 f9 01             	cmp    $0x1,%ecx
4021dc:	83 df ff             	sbb    $0xffffffff,%edi
4021df:	c1 e8 1c             	shr    $0x1c,%eax
4021e2:	81 e2 ff ff ff 0f    	and    $0xfffffff,%edx
4021e8:	09 c1                	or     %eax,%ecx
4021ea:	83 c8 30             	or     $0x30,%eax
4021ed:	88 07                	mov    %al,(%edi)
4021ef:	8d 04 92             	lea    (%edx,%edx,4),%eax
4021f2:	8d 14 92             	lea    (%edx,%edx,4),%edx
4021f5:	83 f9 01             	cmp    $0x1,%ecx
4021f8:	83 df ff             	sbb    $0xffffffff,%edi
4021fb:	c1 e8 1b             	shr    $0x1b,%eax
4021fe:	81 e2 ff ff ff 07    	and    $0x7ffffff,%edx
402204:	09 c1                	or     %eax,%ecx
402206:	83 c8 30             	or     $0x30,%eax
402209:	88 07                	mov    %al,(%edi)
40220b:	8d 04 92             	lea    (%edx,%edx,4),%eax
40220e:	8d 14 92             	lea    (%edx,%edx,4),%edx
402211:	83 f9 01             	cmp    $0x1,%ecx
402214:	83 df ff             	sbb    $0xffffffff,%edi
402217:	c1 e8 1a             	shr    $0x1a,%eax
40221a:	81 e2 ff ff ff 03    	and    $0x3ffffff,%edx
402220:	09 c1                	or     %eax,%ecx
402222:	83 c8 30             	or     $0x30,%eax
402225:	88 07                	mov    %al,(%edi)
402227:	8d 04 92             	lea    (%edx,%edx,4),%eax
40222a:	8d 14 92             	lea    (%edx,%edx,4),%edx
40222d:	83 f9 01             	cmp    $0x1,%ecx
402230:	83 df ff             	sbb    $0xffffffff,%edi
402233:	c1 e8 19             	shr    $0x19,%eax
402236:	81 e2 ff ff ff 01    	and    $0x1ffffff,%edx
40223c:	09 c1                	or     %eax,%ecx
40223e:	83 c8 30             	or     $0x30,%eax
402241:	88 07                	mov    %al,(%edi)
402243:	8d 04 92             	lea    (%edx,%edx,4),%eax
402246:	8d 14 92             	lea    (%edx,%edx,4),%edx
402249:	83 f9 01             	cmp    $0x1,%ecx
40224c:	83 df ff             	sbb    $0xffffffff,%edi
40224f:	c1 e8 18             	shr    $0x18,%eax
402252:	81 e2 ff ff ff 00    	and    $0xffffff,%edx
402258:	09 c1                	or     %eax,%ecx
40225a:	83 c8 30             	or     $0x30,%eax
40225d:	88 07                	mov    %al,(%edi)
40225f:	8d 04 92             	lea    (%edx,%edx,4),%eax
402262:	8d 14 92             	lea    (%edx,%edx,4),%edx
402265:	83 f9 01             	cmp    $0x1,%ecx
402268:	83 df ff             	sbb    $0xffffffff,%edi
40226b:	c1 e8 17             	shr    $0x17,%eax
40226e:	81 e2 ff ff 7f 00    	and    $0x7fffff,%edx
402274:	09 c1                	or     %eax,%ecx
402276:	83 c8 30             	or     $0x30,%eax
402279:	88 07                	mov    %al,(%edi)
40227b:	8d 04 92             	lea    (%edx,%edx,4),%eax
40227e:	8d 14 92             	lea    (%edx,%edx,4),%edx
402281:	83 f9 01             	cmp    $0x1,%ecx
402284:	83 df ff             	sbb    $0xffffffff,%edi
402287:	c1 e8 16             	shr    $0x16,%eax
40228a:	81 e2 ff ff 3f 00    	and    $0x3fffff,%edx
402290:	09 c1                	or     %eax,%ecx
402292:	83 c8 30             	or     $0x30,%eax
402295:	88 07                	mov    %al,(%edi)
402297:	8d 04 92             	lea    (%edx,%edx,4),%eax
40229a:	8d 14 92             	lea    (%edx,%edx,4),%edx
40229d:	83 f9 01             	cmp    $0x1,%ecx
4022a0:	83 df ff             	sbb    $0xffffffff,%edi
4022a3:	c1 e8 15             	shr    $0x15,%eax
4022a6:	81 e2 ff ff 1f 00    	and    $0x1fffff,%edx
4022ac:	09 c1                	or     %eax,%ecx
4022ae:	83 c8 30             	or     $0x30,%eax
4022b1:	88 07                	mov    %al,(%edi)
4022b3:	8d 04 92             	lea    (%edx,%edx,4),%eax
4022b6:	83 f9 01             	cmp    $0x1,%ecx
4022b9:	83 df ff             	sbb    $0xffffffff,%edi
4022bc:	c1 e8 14             	shr    $0x14,%eax
4022bf:	83 c8 30             	or     $0x30,%eax
4022c2:	88 07                	mov    %al,(%edi)
4022c4:	8d 47 01             	lea    0x1(%edi),%eax
4022c7:	5f                   	pop    %edi
4022c8:	c3                   	ret
4022c9:	8d 40 00             	lea    0x0(%eax),%eax
4022cc:	53                   	push   %ebx
4022cd:	56                   	push   %esi
4022ce:	8b f1                	mov    %ecx,%esi
4022d0:	8b da                	mov    %edx,%ebx
4022d2:	8b d3                	mov    %ebx,%edx
4022d4:	8b ce                	mov    %esi,%ecx
4022d6:	e8 11 0c 00 00       	call   0x402eec
4022db:	8b c3                	mov    %ebx,%eax
4022dd:	03 c6                	add    %esi,%eax
4022df:	5e                   	pop    %esi
4022e0:	5b                   	pop    %ebx
4022e1:	c3                   	ret
4022e2:	8b c0                	mov    %eax,%eax
4022e4:	55                   	push   %ebp
4022e5:	8b ec                	mov    %esp,%ebp
4022e7:	53                   	push   %ebx
4022e8:	56                   	push   %esi
4022e9:	8b f2                	mov    %edx,%esi
4022eb:	8b d8                	mov    %eax,%ebx
4022ed:	8b d3                	mov    %ebx,%edx
4022ef:	8b ca                	mov    %edx,%ecx
4022f1:	83 c1 b4             	add    $0xffffffb4,%ecx
4022f4:	8b 45 08             	mov    0x8(%ebp),%eax
4022f7:	8b 40 e4             	mov    -0x1c(%eax),%eax
4022fa:	3b c8                	cmp    %eax,%ecx
4022fc:	72 10                	jb     0x40230e
4022fe:	8b 4d 08             	mov    0x8(%ebp),%ecx
402301:	8b 4d 08             	mov    0x8(%ebp),%ecx
402304:	03 41 f0             	add    -0x10(%ecx),%eax
402307:	83 c2 df             	add    $0xffffffdf,%edx
40230a:	3b c2                	cmp    %edx,%eax
40230c:	73 14                	jae    0x402322
40230e:	6a 1c                	push   $0x1c
402310:	8b 45 08             	mov    0x8(%ebp),%eax
402313:	83 c0 e4             	add    $0xffffffe4,%eax
402316:	50                   	push   %eax
402317:	8b c3                	mov    %ebx,%eax