401dba:	21 c8                	and    %ecx,%eax
401dbc:	01 d0                	add    %edx,%eax
401dbe:	e8 4d fa ff ff       	call   0x401810
401dc3:	85 c0                	test   %eax,%eax
401dc5:	74 24                	je     0x401deb
401dc7:	81 ff 2c 0a 04 00    	cmp    $0x40a2c,%edi
401dcd:	76 03                	jbe    0x401dd2
401dcf:	89 78 f8             	mov    %edi,-0x8(%eax)
401dd2:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
401dd6:	83 e9 04             	sub    $0x4,%ecx
401dd9:	89 c2                	mov    %eax,%edx
401ddb:	89 c7                	mov    %eax,%edi
401ddd:	89 f0                	mov    %esi,%eax
401ddf:	ff 53 1c             	call   *0x1c(%ebx)
401de2:	89 f0                	mov    %esi,%eax
401de4:	e8 8f fd ff ff       	call   0x401b78
401de9:	89 f8                	mov    %edi,%eax
401deb:	5f                   	pop    %edi
401dec:	5e                   	pop    %esi
401ded:	5b                   	pop    %ebx
401dee:	c3                   	ret
401def:	90                   	nop
401df0:	f6 c1 05             	test   $0x5,%cl
401df3:	0f 85 4b 02 00 00    	jne    0x402044
401df9:	89 cb                	mov    %ecx,%ebx
401dfb:	83 e1 f0             	and    $0xfffffff0,%ecx
401dfe:	57                   	push   %edi
401dff:	8d 3c 01             	lea    (%ecx,%eax,1),%edi
401e02:	83 e9 04             	sub    $0x4,%ecx
401e05:	83 e3 0f             	and    $0xf,%ebx
401e08:	39 ca                	cmp    %ecx,%edx
401e0a:	55                   	push   %ebp
401e0b:	0f 87 ff 00 00 00    	ja     0x401f10
401e11:	8d 2c 12             	lea    (%edx,%edx,1),%ebp
401e14:	39 cd                	cmp    %ecx,%ebp
401e16:	72 08                	jb     0x401e20
401e18:	5d                   	pop    %ebp
401e19:	5f                   	pop    %edi
401e1a:	5e                   	pop    %esi
401e1b:	5b                   	pop    %ebx
401e1c:	c3                   	ret
401e1d:	90                   	nop
401e1e:	90                   	nop
401e1f:	90                   	nop
401e20:	81 fa 2c 0b 00 00    	cmp    $0xb2c,%edx
401e26:	73 11                	jae    0x401e39
401e28:	81 fd 2c 0b 00 00    	cmp    $0xb2c,%ebp
401e2e:	0f 82 b4 00 00 00    	jb     0x401ee8
401e34:	ba 2c 0b 00 00       	mov    $0xb2c,%edx
401e39:	8d aa d3 00 00 00    	lea    0xd3(%edx),%ebp
401e3f:	81 e5 00 ff ff ff    	and    $0xffffff00,%ebp
401e45:	83 c5 30             	add    $0x30,%ebp
401e48:	83 c1 04             	add    $0x4,%ecx
401e4b:	29 e9                	sub    %ebp,%ecx
401e4d:	80 3d 4d 80 4a 00 00 	cmpb   $0x0,0x4a804d
401e54:	74 3a                	je     0x401e90
401e56:	b8 00 01 00 00       	mov    $0x100,%eax
401e5b:	f0 0f b0 25 18 87 4a 	lock cmpxchg %ah,0x4a8718
401e62:	00
401e63:	74 23                	je     0x401e88
401e65:	51                   	push   %ecx
401e66:	6a 00                	push   $0x0
401e68:	e8 43 f5 ff ff       	call   0x4013b0
401e6d:	59                   	pop    %ecx
401e6e:	b8 00 01 00 00       	mov    $0x100,%eax
401e73:	f0 0f b0 25 18 87 4a 	lock cmpxchg %ah,0x4a8718
401e7a:	00
401e7b:	74 0b                	je     0x401e88
401e7d:	51                   	push   %ecx
401e7e:	6a 0a                	push   $0xa
401e80:	e8 2b f5 ff ff       	call   0x4013b0
401e85:	59                   	pop    %ecx
401e86:	eb ce                	jmp    0x401e56
401e88:	bb 0f 00 00 00       	mov    $0xf,%ebx
401e8d:	23 5e fc             	and    -0x4(%esi),%ebx
401e90:	09 eb                	or     %ebp,%ebx
401e92:	89 5e fc             	mov    %ebx,-0x4(%esi)
401e95:	89 cb                	mov    %ecx,%ebx
401e97:	8b 57 fc             	mov    -0x4(%edi),%edx
401e9a:	f6 c2 01             	test   $0x1,%dl
401e9d:	75 09                	jne    0x401ea8
401e9f:	83 ca 08             	or     $0x8,%edx
401ea2:	89 57 fc             	mov    %edx,-0x4(%edi)
401ea5:	eb 17                	jmp    0x401ebe
401ea7:	90                   	nop
401ea8:	89 f8                	mov    %edi,%eax
401eaa:	83 e2 f0             	and    $0xfffffff0,%edx
401ead:	01 d3                	add    %edx,%ebx
401eaf:	01 d7                	add    %edx,%edi
401eb1:	81 fa 30 0b 00 00    	cmp    $0xb30,%edx
401eb7:	72 05                	jb     0x401ebe
401eb9:	e8 ee f6 ff ff       	call   0x4015ac
401ebe:	89 5f f8             	mov    %ebx,-0x8(%edi)
401ec1:	8d 43 03             	lea    0x3(%ebx),%eax
401ec4:	89 44 2e fc          	mov    %eax,-0x4(%esi,%ebp,1)
401ec8:	81 fb 30 0b 00 00    	cmp    $0xb30,%ebx
401ece:	72 0a                	jb     0x401eda
401ed0:	8d 04 2e             	lea    (%esi,%ebp,1),%eax
401ed3:	89 da                	mov    %ebx,%edx
401ed5:	e8 12 f7 ff ff       	call   0x4015ec
401eda:	c6 05 18 87 4a 00 00 	movb   $0x0,0x4a8718
401ee1:	89 f0                	mov    %esi,%eax
401ee3:	5d                   	pop    %ebp
401ee4:	5f                   	pop    %edi
401ee5:	5e                   	pop    %esi
401ee6:	5b                   	pop    %ebx
401ee7:	c3                   	ret
401ee8:	89 d7                	mov    %edx,%edi
401eea:	89 d0                	mov    %edx,%eax
401eec:	e8 1f f9 ff ff       	call   0x401810
401ef1:	85 c0                	test   %eax,%eax
401ef3:	74 16                	je     0x401f0b
401ef5:	89 c5                	mov    %eax,%ebp
401ef7:	89 c2                	mov    %eax,%edx
401ef9:	89 f0                	mov    %esi,%eax
401efb:	89 f9                	mov    %edi,%ecx
401efd:	e8 8e f6 ff ff       	call   0x401590
401f02:	89 f0                	mov    %esi,%eax
401f04:	e8 6f fc ff ff       	call   0x401b78
401f09:	89 e8                	mov    %ebp,%eax
401f0b:	5d                   	pop    %ebp
401f0c:	5f                   	pop    %edi
401f0d:	5e                   	pop    %esi
401f0e:	5b                   	pop    %ebx
401f0f:	c3                   	ret
401f10:	8b 47 fc             	mov    -0x4(%edi),%eax
401f13:	a8 01                	test   $0x1,%al
401f15:	0f 84 e1 00 00 00    	je     0x401ffc
401f1b:	83 e0 f0             	and    $0xfffffff0,%eax
401f1e:	8d 2c 01             	lea    (%ecx,%eax,1),%ebp
401f21:	39 ea                	cmp    %ebp,%edx
401f23:	0f 87 d3 00 00 00    	ja     0x401ffc
401f29:	80 3d 4d 80 4a 00 00 	cmpb   $0x0,0x4a804d
401f30:	74 4f                	je     0x401f81
401f32:	b8 00 01 00 00       	mov    $0x100,%eax
401f37:	f0 0f b0 25 18 87 4a 	lock cmpxchg %ah,0x4a8718
401f3e:	00
401f3f:	74 27                	je     0x401f68
401f41:	51                   	push   %ecx
401f42:	52                   	push   %edx
401f43:	6a 00                	push   $0x0
401f45:	e8 66 f4 ff ff       	call   0x4013b0
401f4a:	5a                   	pop    %edx
401f4b:	59                   	pop    %ecx
401f4c:	b8 00 01 00 00       	mov    $0x100,%eax
401f51:	f0 0f b0 25 18 87 4a 	lock cmpxchg %ah,0x4a8718
401f58:	00
401f59:	74 0d                	je     0x401f68
401f5b:	51                   	push   %ecx
401f5c:	52                   	push   %edx
401f5d:	6a 0a                	push   $0xa
401f5f:	e8 4c f4 ff ff       	call   0x4013b0
401f64:	5a                   	pop    %edx
401f65:	59                   	pop    %ecx
401f66:	eb ca                	jmp    0x401f32
401f68:	bb 0f 00 00 00       	mov    $0xf,%ebx
401f6d:	23 5e fc             	and    -0x4(%esi),%ebx
401f70:	8b 47 fc             	mov    -0x4(%edi),%eax
401f73:	a8 01                	test   $0x1,%al
401f75:	74 7e                	je     0x401ff5
401f77:	83 e0 f0             	and    $0xfffffff0,%eax
401f7a:	8d 2c 01             	lea    (%ecx,%eax,1),%ebp
401f7d:	39 ea                	cmp    %ebp,%edx
401f7f:	77 74                	ja     0x401ff5
401f81:	3d 30 0b 00 00       	cmp    $0xb30,%eax
401f86:	72 0b                	jb     0x401f93
401f88:	89 f8                	mov    %edi,%eax
401f8a:	51                   	push   %ecx
401f8b:	52                   	push   %edx
401f8c:	e8 1b f6 ff ff       	call   0x4015ac
401f91:	5a                   	pop    %edx
401f92:	59                   	pop    %ecx
401f93:	89 c8                	mov    %ecx,%eax
401f95:	c1 e8 02             	shr    $0x2,%eax
401f98:	01 c8                	add    %ecx,%eax
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