5faef4:	8b 4f 04             	mov    0x4(%edi),%ecx
5faef7:	8b 07                	mov    (%edi),%eax
5faef9:	8d 7d e0             	lea    -0x20(%ebp),%edi
5faefc:	89 7d c4             	mov    %edi,-0x3c(%ebp)
5faeff:	89 45 c8             	mov    %eax,-0x38(%ebp)
5faf02:	89 4d cc             	mov    %ecx,-0x34(%ebp)
5faf05:	89 55 d0             	mov    %edx,-0x30(%ebp)
5faf08:	8b 45 e0             	mov    -0x20(%ebp),%eax
5faf0b:	89 45 dc             	mov    %eax,-0x24(%ebp)
5faf0e:	89 45 d8             	mov    %eax,-0x28(%ebp)
5faf11:	8d 45 dc             	lea    -0x24(%ebp),%eax
5faf14:	50                   	push   %eax
5faf15:	8d 45 c4             	lea    -0x3c(%ebp),%eax
5faf18:	50                   	push   %eax
5faf19:	8d 45 d8             	lea    -0x28(%ebp),%eax
5faf1c:	50                   	push   %eax
5faf1d:	8d 4d e7             	lea    -0x19(%ebp),%ecx
5faf20:	e8 fa fe ff ff       	call   0x5fae1f
5faf25:	8b 7d 0c             	mov    0xc(%ebp),%edi
5faf28:	83 c6 04             	add    $0x4,%esi
5faf2b:	eb aa                	jmp    0x5faed7
5faf2d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
5faf34:	e8 12 00 00 00       	call   0x5faf4b
5faf39:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5faf3c:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
5faf43:	59                   	pop    %ecx
5faf44:	5f                   	pop    %edi
5faf45:	5e                   	pop    %esi
5faf46:	5b                   	pop    %ebx
5faf47:	c9                   	leave
5faf48:	c2 0c 00             	ret    $0xc
5faf4b:	8b 45 10             	mov    0x10(%ebp),%eax
5faf4e:	ff 30                	push   (%eax)
5faf50:	e8 7c 57 00 00       	call   0x6006d1
5faf55:	59                   	pop    %ecx
5faf56:	c3                   	ret
5faf57:	6a 0c                	push   $0xc
5faf59:	68 10 1c 70 00       	push   $0x701c10
5faf5e:	e8 ad 75 fe ff       	call   0x5e2510
5faf63:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
5faf67:	8b 45 08             	mov    0x8(%ebp),%eax
5faf6a:	ff 30                	push   (%eax)
5faf6c:	e8 31 12 00 00       	call   0x5fc1a2
5faf71:	59                   	pop    %ecx
5faf72:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
5faf76:	8b 45 0c             	mov    0xc(%ebp),%eax
5faf79:	8b 00                	mov    (%eax),%eax
5faf7b:	ff 30                	push   (%eax)
5faf7d:	e8 3f 01 00 00       	call   0x5fb0c1
5faf82:	59                   	pop    %ecx
5faf83:	8b f0                	mov    %eax,%esi
5faf85:	89 75 e4             	mov    %esi,-0x1c(%ebp)
5faf88:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
5faf8f:	e8 17 00 00 00       	call   0x5fafab
5faf94:	8b c6                	mov    %esi,%eax
5faf96:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5faf99:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
5fafa0:	59                   	pop    %ecx
5fafa1:	5f                   	pop    %edi
5fafa2:	5e                   	pop    %esi
5fafa3:	5b                   	pop    %ebx
5fafa4:	c9                   	leave
5fafa5:	c2 0c 00             	ret    $0xc
5fafa8:	8b 75 e4             	mov    -0x1c(%ebp),%esi
5fafab:	8b 45 10             	mov    0x10(%ebp),%eax
5fafae:	ff 30                	push   (%eax)
5fafb0:	e8 01 12 00 00       	call   0x5fc1b6
5fafb5:	59                   	pop    %ecx
5fafb6:	c3                   	ret
5fafb7:	8b ff                	mov    %edi,%edi
5fafb9:	55                   	push   %ebp
5fafba:	8b ec                	mov    %esp,%ebp
5fafbc:	83 ec 20             	sub    $0x20,%esp
5fafbf:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
5fafc3:	8d 45 f8             	lea    -0x8(%ebp),%eax
5fafc6:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
5fafca:	8d 4d ff             	lea    -0x1(%ebp),%ecx
5fafcd:	89 45 e0             	mov    %eax,-0x20(%ebp)
5fafd0:	8d 45 08             	lea    0x8(%ebp),%eax
5fafd3:	89 45 e4             	mov    %eax,-0x1c(%ebp)
5fafd6:	8d 45 f4             	lea    -0xc(%ebp),%eax
5fafd9:	6a 08                	push   $0x8
5fafdb:	89 45 e8             	mov    %eax,-0x18(%ebp)
5fafde:	58                   	pop    %eax
5fafdf:	89 45 f0             	mov    %eax,-0x10(%ebp)
5fafe2:	89 45 ec             	mov    %eax,-0x14(%ebp)
5fafe5:	8d 45 f0             	lea    -0x10(%ebp),%eax
5fafe8:	50                   	push   %eax
5fafe9:	8d 45 e0             	lea    -0x20(%ebp),%eax
5fafec:	50                   	push   %eax
5fafed:	8d 45 ec             	lea    -0x14(%ebp),%eax
5faff0:	50                   	push   %eax
5faff1:	e8 b5 fe ff ff       	call   0x5faeab
5faff6:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
5faffa:	8b 45 f8             	mov    -0x8(%ebp),%eax
5faffd:	75 03                	jne    0x5fb002
5fafff:	8b 45 f4             	mov    -0xc(%ebp),%eax
5fb002:	c9                   	leave
5fb003:	c3                   	ret
5fb004:	8b ff                	mov    %edi,%edi
5fb006:	55                   	push   %ebp
5fb007:	8b ec                	mov    %esp,%ebp
5fb009:	8b 45 08             	mov    0x8(%ebp),%eax
5fb00c:	85 c0                	test   %eax,%eax
5fb00e:	74 1f                	je     0x5fb02f
5fb010:	8b 48 0c             	mov    0xc(%eax),%ecx
5fb013:	90                   	nop
5fb014:	8b c1                	mov    %ecx,%eax
5fb016:	c1 e8 0d             	shr    $0xd,%eax
5fb019:	a8 01                	test   $0x1,%al
5fb01b:	74 12                	je     0x5fb02f
5fb01d:	51                   	push   %ecx
5fb01e:	e8 14 00 00 00       	call   0x5fb037
5fb023:	83 c4 04             	add    $0x4,%esp
5fb026:	84 c0                	test   %al,%al
5fb028:	75 09                	jne    0x5fb033
5fb02a:	8b 45 0c             	mov    0xc(%ebp),%eax
5fb02d:	ff 00                	incl   (%eax)
5fb02f:	32 c0                	xor    %al,%al
5fb031:	5d                   	pop    %ebp
5fb032:	c3                   	ret
5fb033:	b0 01                	mov    $0x1,%al
5fb035:	5d                   	pop    %ebp
5fb036:	c3                   	ret
5fb037:	8b ff                	mov    %edi,%edi
5fb039:	55                   	push   %ebp
5fb03a:	8b ec                	mov    %esp,%ebp
5fb03c:	8b 45 08             	mov    0x8(%ebp),%eax
5fb03f:	24 03                	and    $0x3,%al
5fb041:	3c 02                	cmp    $0x2,%al
5fb043:	75 06                	jne    0x5fb04b
5fb045:	f6 45 08 c0          	testb  $0xc0,0x8(%ebp)
5fb049:	75 09                	jne    0x5fb054
5fb04b:	f7 45 08 00 08 00 00 	testl  $0x800,0x8(%ebp)
5fb052:	74 04                	je     0x5fb058
5fb054:	b0 01                	mov    $0x1,%al
5fb056:	5d                   	pop    %ebp
5fb057:	c3                   	ret
5fb058:	32 c0                	xor    %al,%al
5fb05a:	5d                   	pop    %ebp
5fb05b:	c3                   	ret
5fb05c:	8b ff                	mov    %edi,%edi
5fb05e:	55                   	push   %ebp
5fb05f:	8b ec                	mov    %esp,%ebp
5fb061:	8b 4d 08             	mov    0x8(%ebp),%ecx
5fb064:	56                   	push   %esi
5fb065:	57                   	push   %edi
5fb066:	8d 71 0c             	lea    0xc(%ecx),%esi
5fb069:	8b 16                	mov    (%esi),%edx
5fb06b:	90                   	nop
5fb06c:	8b c2                	mov    %edx,%eax
5fb06e:	24 03                	and    $0x3,%al
5fb070:	3c 02                	cmp    $0x2,%al
5fb072:	75 47                	jne    0x5fb0bb
5fb074:	f6 c2 c0             	test   $0xc0,%dl
5fb077:	74 42                	je     0x5fb0bb
5fb079:	8b 39                	mov    (%ecx),%edi
5fb07b:	8b 41 04             	mov    0x4(%ecx),%eax
5fb07e:	2b f8                	sub    %eax,%edi
5fb080:	89 01                	mov    %eax,(%ecx)
5fb082:	83 61 08 00          	andl   $0x0,0x8(%ecx)
5fb086:	85 ff                	test   %edi,%edi
5fb088:	7e 31                	jle    0x5fb0bb
5fb08a:	57                   	push   %edi
5fb08b:	50                   	push   %eax
5fb08c:	51                   	push   %ecx
5fb08d:	e8 16 47 00 00       	call   0x5ff7a8
5fb092:	59                   	pop    %ecx
5fb093:	50                   	push   %eax
5fb094:	e8 53 fc 00 00       	call   0x60acec
5fb099:	83 c4 0c             	add    $0xc,%esp
5fb09c:	3b f8                	cmp    %eax,%edi
5fb09e:	74 0b                	je     0x5fb0ab
5fb0a0:	6a 10                	push   $0x10
5fb0a2:	58                   	pop    %eax
5fb0a3:	f0 09 06             	lock or %eax,(%esi)
5fb0a6:	83 c8 ff             	or     $0xffffffff,%eax
5fb0a9:	eb 12                	jmp    0x5fb0bd
5fb0ab:	8b 06                	mov    (%esi),%eax
5fb0ad:	90                   	nop
5fb0ae:	c1 e8 02             	shr    $0x2,%eax
5fb0b1:	a8 01                	test   $0x1,%al
5fb0b3:	74 06                	je     0x5fb0bb
5fb0b5:	6a fd                	push   $0xfffffffd
5fb0b7:	58                   	pop    %eax
5fb0b8:	f0 21 06             	lock and %eax,(%esi)
5fb0bb:	33 c0                	xor    %eax,%eax
5fb0bd:	5f                   	pop    %edi
5fb0be:	5e                   	pop    %esi
5fb0bf:	5d                   	pop    %ebp
5fb0c0:	c3                   	ret
5fb0c1:	8b ff                	mov    %edi,%edi
5fb0c3:	55                   	push   %ebp
5fb0c4:	8b ec                	mov    %esp,%ebp
5fb0c6:	56                   	push   %esi
5fb0c7:	8b 75 08             	mov    0x8(%ebp),%esi
5fb0ca:	85 f6                	test   %esi,%esi
5fb0cc:	75 09                	jne    0x5fb0d7
5fb0ce:	56                   	push   %esi
5fb0cf:	e8 e3 fe ff ff       	call   0x5fafb7
5fb0d4:	59                   	pop    %ecx
5fb0d5:	eb 2f                	jmp    0x5fb106
5fb0d7:	56                   	push   %esi
5fb0d8:	e8 7f ff ff ff       	call   0x5fb05c
5fb0dd:	59                   	pop    %ecx
5fb0de:	85 c0                	test   %eax,%eax
5fb0e0:	75 21                	jne    0x5fb103
5fb0e2:	8b 46 0c             	mov    0xc(%esi),%eax
5fb0e5:	90                   	nop
5fb0e6:	c1 e8 0b             	shr    $0xb,%eax
5fb0e9:	a8 01                	test   $0x1,%al
5fb0eb:	74 12                	je     0x5fb0ff
5fb0ed:	56                   	push   %esi
5fb0ee:	e8 b5 46 00 00       	call   0x5ff7a8
5fb0f3:	50                   	push   %eax
5fb0f4:	e8 fd f3 00 00       	call   0x60a4f6
5fb0f9:	59                   	pop    %ecx
5fb0fa:	59                   	pop    %ecx
5fb0fb:	85 c0                	test   %eax,%eax
5fb0fd:	75 04                	jne    0x5fb103
5fb0ff:	33 c0                	xor    %eax,%eax
5fb101:	eb 03                	jmp    0x5fb106
5fb103:	83 c8 ff             	or     $0xffffffff,%eax
5fb106:	5e                   	pop    %esi
5fb107:	5d                   	pop    %ebp
5fb108:	c3                   	ret
5fb109:	6a 01                	push   $0x1
5fb10b:	e8 a7 fe ff ff       	call   0x5fafb7
5fb110:	59                   	pop    %ecx
5fb111:	c3                   	ret
5fb112:	8b ff                	mov    %edi,%edi
5fb114:	55                   	push   %ebp
5fb115:	8b ec                	mov    %esp,%ebp
5fb117:	83 ec 14             	sub    $0x14,%esp
5fb11a:	8b 45 08             	mov    0x8(%ebp),%eax
5fb11d:	89 45 f8             	mov    %eax,-0x8(%ebp)
5fb120:	85 c0                	test   %eax,%eax
5fb122:	75 09                	jne    0x5fb12d
5fb124:	50                   	push   %eax
5fb125:	e8 8d fe ff ff       	call   0x5fafb7
5fb12a:	59                   	pop    %ecx
5fb12b:	c9                   	leave
5fb12c:	c3                   	ret
5fb12d:	8b 40 0c             	mov    0xc(%eax),%eax
5fb130:	90                   	nop
5fb131:	50                   	push   %eax
5fb132:	e8 00 ff ff ff       	call   0x5fb037
5fb137:	83 c4 04             	add    $0x4,%esp
5fb13a:	84 c0                	test   %al,%al
5fb13c:	75 04                	jne    0x5fb142
5fb13e:	33 c0                	xor    %eax,%eax
5fb140:	c9                   	leave
5fb141:	c3                   	ret
5fb142:	8d 45 f8             	lea    -0x8(%ebp),%eax
5fb145:	89 45 f0             	mov    %eax,-0x10(%ebp)
5fb148:	8d 4d ff             	lea    -0x1(%ebp),%ecx
5fb14b:	8b 45 f8             	mov    -0x8(%ebp),%eax
5fb14e:	89 45 f4             	mov    %eax,-0xc(%ebp)
5fb151:	89 45 ec             	mov    %eax,-0x14(%ebp)
5fb154:	8d 45 f4             	lea    -0xc(%ebp),%eax
5fb157:	50                   	push   %eax
5fb158:	8d 45 f0             	lea    -0x10(%ebp),%eax
5fb15b:	50                   	push   %eax
5fb15c:	8d 45 ec             	lea    -0x14(%ebp),%eax
5fb15f:	50                   	push   %eax
5fb160:	e8 f2 fd ff ff       	call   0x5faf57
5fb165:	c9                   	leave
5fb166:	c3                   	ret
5fb167:	8b ff                	mov    %edi,%edi
5fb169:	55                   	push   %ebp
5fb16a:	8b ec                	mov    %esp,%ebp
5fb16c:	8b 45 10             	mov    0x10(%ebp),%eax
5fb16f:	85 c0                	test   %eax,%eax
5fb171:	75 02                	jne    0x5fb175
5fb173:	5d                   	pop    %ebp
5fb174:	c3                   	ret
5fb175:	8b 4d 0c             	mov    0xc(%ebp),%ecx
5fb178:	8b 55 08             	mov    0x8(%ebp),%edx
5fb17b:	56                   	push   %esi
5fb17c:	83 e8 01             	sub    $0x1,%eax
5fb17f:	74 15                	je     0x5fb196
5fb181:	0f b7 32             	movzwl (%edx),%esi
5fb184:	66 85 f6             	test   %si,%si
5fb187:	74 0d                	je     0x5fb196
5fb189:	66 3b 31             	cmp    (%ecx),%si
5fb18c:	75 08                	jne    0x5fb196
5fb18e:	83 c2 02             	add    $0x2,%edx
5fb191:	83 c1 02             	add    $0x2,%ecx
5fb194:	eb e6                	jmp    0x5fb17c
5fb196:	0f b7 02             	movzwl (%edx),%eax
5fb199:	0f b7 09             	movzwl (%ecx),%ecx
5fb19c:	2b c1                	sub    %ecx,%eax
5fb19e:	5e                   	pop    %esi
5fb19f:	5d                   	pop    %ebp
5fb1a0:	c3                   	ret
5fb1a1:	8b ff                	mov    %edi,%edi
5fb1a3:	55                   	push   %ebp
5fb1a4:	8b ec                	mov    %esp,%ebp
5fb1a6:	83 ec 0c             	sub    $0xc,%esp
5fb1a9:	56                   	push   %esi
5fb1aa:	57                   	push   %edi
5fb1ab:	bf ff ff 00 00       	mov    $0xffff,%edi
5fb1b0:	57                   	push   %edi
5fb1b1:	68 3f 13 00 00       	push   $0x133f
5fb1b6:	e8 df bb 00 00       	call   0x606d9a
5fb1bb:	dd 45 08             	fldl   0x8(%ebp)
5fb1be:	8b f0                	mov    %eax,%esi
5fb1c0:	59                   	pop    %ecx
5fb1c1:	59                   	pop    %ecx
5fb1c2:	0f b7 4d 0e          	movzwl 0xe(%ebp),%ecx
5fb1c6:	b8 f0 7f 00 00       	mov    $0x7ff0,%eax
5fb1cb:	23 c8                	and    %eax,%ecx
5fb1cd:	66 3b c8             	cmp    %ax,%cx
5fb1d0:	75 76                	jne    0x5fb248
5fb1d2:	51                   	push   %ecx
5fb1d3:	51                   	push   %ecx
5fb1d4:	dd 1c 24             	fstpl  (%esp)
5fb1d7:	e8 cf ba 00 00       	call   0x606cab
5fb1dc:	59                   	pop    %ecx
5fb1dd:	59                   	pop    %ecx
5fb1de:	85 c0                	test   %eax,%eax
5fb1e0:	7e 3a                	jle    0x5fb21c
5fb1e2:	83 f8 02             	cmp    $0x2,%eax
5fb1e5:	7e 6e                	jle    0x5fb255
5fb1e7:	83 f8 03             	cmp    $0x3,%eax
5fb1ea:	75 30                	jne    0x5fb21c
5fb1ec:	db 45 10             	fildl  0x10(%ebp)
5fb1ef:	83 ec 10             	sub    $0x10,%esp
5fb1f2:	dd 5d f4             	fstpl  -0xc(%ebp)
5fb1f5:	dd 45 f4             	fldl   -0xc(%ebp)
5fb1f8:	dd 5c 24 08          	fstpl  0x8(%esp)
5fb1fc:	dd 45 08             	fldl   0x8(%ebp)
5fb1ff:	dd 1c 24             	fstpl  (%esp)
5fb202:	e8 c8 71 00 00       	call   0x6023cf
5fb207:	57                   	push   %edi
5fb208:	56                   	push   %esi
5fb209:	dd 5d f4             	fstpl  -0xc(%ebp)
5fb20c:	e8 89 bb 00 00       	call   0x606d9a
5fb211:	83 c4 18             	add    $0x18,%esp
5fb214:	dd 45 f4             	fldl   -0xc(%ebp)
5fb217:	e9 73 01 00 00       	jmp    0x5fb38f
5fb21c:	dd 45 08             	fldl   0x8(%ebp)
5fb21f:	dd 05 00 9c 6a 00    	fldl   0x6a9c00
5fb225:	d8 c1                	fadd   %st(1),%st
5fb227:	56                   	push   %esi
5fb228:	83 ec 18             	sub    $0x18,%esp
5fb22b:	dd 5c 24 10          	fstpl  0x10(%esp)
5fb22f:	db 45 10             	fildl  0x10(%ebp)
5fb232:	dd 5d f4             	fstpl  -0xc(%ebp)
5fb235:	dd 45 f4             	fldl   -0xc(%ebp)