4150bc:	56                   	push   %esi
4150bd:	8b 75 0c             	mov    0xc(%ebp),%esi
4150c0:	57                   	push   %edi
4150c1:	8d 7e 0c             	lea    0xc(%esi),%edi
4150c4:	8b 07                	mov    (%edi),%eax
4150c6:	90                   	nop
4150c7:	c1 e8 09             	shr    $0x9,%eax
4150ca:	a8 01                	test   $0x1,%al
4150cc:	74 19                	je     0x4150e7
4150ce:	56                   	push   %esi
4150cf:	e8 fd 83 ff ff       	call   0x40d4d1
4150d4:	59                   	pop    %ecx
4150d5:	b8 7f fd ff ff       	mov    $0xfffffd7f,%eax
4150da:	f0 21 07             	lock and %eax,(%edi)
4150dd:	33 c0                	xor    %eax,%eax
4150df:	89 46 18             	mov    %eax,0x18(%esi)
4150e2:	89 46 04             	mov    %eax,0x4(%esi)
4150e5:	89 06                	mov    %eax,(%esi)
4150e7:	5f                   	pop    %edi
4150e8:	5e                   	pop    %esi
4150e9:	5d                   	pop    %ebp
4150ea:	c3                   	ret
4150eb:	8b ff                	mov    %edi,%edi
4150ed:	55                   	push   %ebp
4150ee:	8b ec                	mov    %esp,%ebp
4150f0:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
4150f4:	25 00 80 00 00       	and    $0x8000,%eax
4150f9:	5d                   	pop    %ebp
4150fa:	c3                   	ret
4150fb:	8b ff                	mov    %edi,%edi
4150fd:	55                   	push   %ebp
4150fe:	8b ec                	mov    %esp,%ebp
415100:	8b 45 08             	mov    0x8(%ebp),%eax
415103:	a8 20                	test   $0x20,%al
415105:	74 04                	je     0x41510b
415107:	6a 05                	push   $0x5
415109:	eb 17                	jmp    0x415122
41510b:	a8 08                	test   $0x8,%al
41510d:	74 05                	je     0x415114
41510f:	33 c0                	xor    %eax,%eax
415111:	40                   	inc    %eax
415112:	5d                   	pop    %ebp
415113:	c3                   	ret
415114:	a8 04                	test   $0x4,%al
415116:	74 04                	je     0x41511c
415118:	6a 02                	push   $0x2
41511a:	eb 06                	jmp    0x415122
41511c:	a8 01                	test   $0x1,%al
41511e:	74 05                	je     0x415125
415120:	6a 03                	push   $0x3
415122:	58                   	pop    %eax
415123:	5d                   	pop    %ebp
415124:	c3                   	ret
415125:	0f b6 c0             	movzbl %al,%eax
415128:	83 e0 02             	and    $0x2,%eax
41512b:	03 c0                	add    %eax,%eax
41512d:	5d                   	pop    %ebp
41512e:	c3                   	ret
41512f:	8b ff                	mov    %edi,%edi
415131:	53                   	push   %ebx
415132:	8b dc                	mov    %esp,%ebx
415134:	51                   	push   %ecx
415135:	51                   	push   %ecx
415136:	83 e4 f0             	and    $0xfffffff0,%esp
415139:	83 c4 04             	add    $0x4,%esp
41513c:	55                   	push   %ebp
41513d:	8b 6b 04             	mov    0x4(%ebx),%ebp
415140:	89 6c 24 04          	mov    %ebp,0x4(%esp)
415144:	8b ec                	mov    %esp,%ebp
415146:	81 ec 88 00 00 00    	sub    $0x88,%esp
41514c:	a1 14 30 43 00       	mov    0x433014,%eax
415151:	33 c5                	xor    %ebp,%eax
415153:	89 45 fc             	mov    %eax,-0x4(%ebp)
415156:	56                   	push   %esi
415157:	8b 73 20             	mov    0x20(%ebx),%esi
41515a:	8d 43 18             	lea    0x18(%ebx),%eax
41515d:	57                   	push   %edi
41515e:	56                   	push   %esi
41515f:	50                   	push   %eax
415160:	ff 73 08             	push   0x8(%ebx)
415163:	e8 95 00 00 00       	call   0x4151fd
415168:	83 c4 0c             	add    $0xc,%esp
41516b:	85 c0                	test   %eax,%eax
41516d:	75 26                	jne    0x415195
41516f:	83 65 c0 fe          	andl   $0xfffffffe,-0x40(%ebp)
415173:	50                   	push   %eax
415174:	8d 43 18             	lea    0x18(%ebx),%eax
415177:	50                   	push   %eax
415178:	8d 43 10             	lea    0x10(%ebx),%eax
41517b:	50                   	push   %eax
41517c:	ff 73 0c             	push   0xc(%ebx)
41517f:	8d 43 20             	lea    0x20(%ebx),%eax
415182:	ff 73 08             	push   0x8(%ebx)
415185:	50                   	push   %eax
415186:	8d 45 80             	lea    -0x80(%ebp),%eax
415189:	50                   	push   %eax
41518a:	e8 7c 02 00 00       	call   0x41540b
41518f:	8b 73 20             	mov    0x20(%ebx),%esi
415192:	83 c4 1c             	add    $0x1c,%esp
415195:	ff 73 08             	push   0x8(%ebx)
415198:	e8 5e ff ff ff       	call   0x4150fb
41519d:	59                   	pop    %ecx
41519e:	8b f8                	mov    %eax,%edi
4151a0:	e8 bd aa ff ff       	call   0x40fc62
4151a5:	84 c0                	test   %al,%al
4151a7:	74 29                	je     0x4151d2
4151a9:	85 ff                	test   %edi,%edi
4151ab:	74 25                	je     0x4151d2
4151ad:	dd 43 18             	fldl   0x18(%ebx)
4151b0:	56                   	push   %esi
4151b1:	83 ec 18             	sub    $0x18,%esp
4151b4:	dd 5c 24 10          	fstpl  0x10(%esp)
4151b8:	d9 ee                	fldz
4151ba:	dd 5c 24 08          	fstpl  0x8(%esp)
4151be:	dd 43 10             	fldl   0x10(%ebx)
4151c1:	dd 1c 24             	fstpl  (%esp)
4151c4:	ff 73 0c             	push   0xc(%ebx)
4151c7:	57                   	push   %edi
4151c8:	e8 63 05 00 00       	call   0x415730
4151cd:	83 c4 24             	add    $0x24,%esp
4151d0:	eb 18                	jmp    0x4151ea
4151d2:	57                   	push   %edi
4151d3:	e8 29 05 00 00       	call   0x415701
4151d8:	c7 04 24 ff ff 00 00 	movl   $0xffff,(%esp)
4151df:	56                   	push   %esi
4151e0:	e8 d9 07 00 00       	call   0x4159be
4151e5:	dd 43 18             	fldl   0x18(%ebx)
4151e8:	59                   	pop    %ecx
4151e9:	59                   	pop    %ecx
4151ea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4151ed:	5f                   	pop    %edi
4151ee:	33 cd                	xor    %ebp,%ecx
4151f0:	5e                   	pop    %esi
4151f1:	e8 16 22 ff ff       	call   0x40740c
4151f6:	8b e5                	mov    %ebp,%esp
4151f8:	5d                   	pop    %ebp
4151f9:	8b e3                	mov    %ebx,%esp
4151fb:	5b                   	pop    %ebx
4151fc:	c3                   	ret
4151fd:	8b ff                	mov    %edi,%edi
4151ff:	55                   	push   %ebp
415200:	8b ec                	mov    %esp,%ebp
415202:	83 ec 10             	sub    $0x10,%esp
415205:	53                   	push   %ebx
415206:	8b 5d 08             	mov    0x8(%ebp),%ebx
415209:	56                   	push   %esi
41520a:	8b f3                	mov    %ebx,%esi
41520c:	83 e6 1f             	and    $0x1f,%esi
41520f:	f6 c3 08             	test   $0x8,%bl
415212:	74 16                	je     0x41522a
415214:	f6 45 10 01          	testb  $0x1,0x10(%ebp)
415218:	74 10                	je     0x41522a
41521a:	6a 01                	push   $0x1
41521c:	e8 c7 07 00 00       	call   0x4159e8
415221:	59                   	pop    %ecx
415222:	83 e6 f7             	and    $0xfffffff7,%esi
415225:	e9 9d 01 00 00       	jmp    0x4153c7
41522a:	8b c3                	mov    %ebx,%eax
41522c:	23 45 10             	and    0x10(%ebp),%eax
41522f:	a8 04                	test   $0x4,%al
415231:	74 10                	je     0x415243
415233:	6a 04                	push   $0x4
415235:	e8 ae 07 00 00       	call   0x4159e8
41523a:	59                   	pop    %ecx
41523b:	83 e6 fb             	and    $0xfffffffb,%esi
41523e:	e9 84 01 00 00       	jmp    0x4153c7
415243:	f6 c3 01             	test   $0x1,%bl
415246:	0f 84 9a 00 00 00    	je     0x4152e6
41524c:	f6 45 10 08          	testb  $0x8,0x10(%ebp)
415250:	0f 84 90 00 00 00    	je     0x4152e6
415256:	6a 08                	push   $0x8
415258:	e8 8b 07 00 00       	call   0x4159e8
41525d:	8b 45 10             	mov    0x10(%ebp),%eax
415260:	59                   	pop    %ecx
415261:	b9 00 0c 00 00       	mov    $0xc00,%ecx
415266:	23 c1                	and    %ecx,%eax
415268:	74 54                	je     0x4152be
41526a:	3d 00 04 00 00       	cmp    $0x400,%eax
41526f:	74 37                	je     0x4152a8
415271:	3d 00 08 00 00       	cmp    $0x800,%eax
415276:	74 1a                	je     0x415292
415278:	3b c1                	cmp    %ecx,%eax
41527a:	75 62                	jne    0x4152de
41527c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
41527f:	d9 ee                	fldz
415281:	dc 19                	fcompl (%ecx)
415283:	df e0                	fnstsw %ax
415285:	dd 05 f8 83 42 00    	fldl   0x4283f8
41528b:	f6 c4 05             	test   $0x5,%ah
41528e:	7b 4c                	jnp    0x4152dc
415290:	eb 48                	jmp    0x4152da
415292:	8b 4d 0c             	mov    0xc(%ebp),%ecx
415295:	d9 ee                	fldz
415297:	dc 19                	fcompl (%ecx)
415299:	df e0                	fnstsw %ax
41529b:	f6 c4 05             	test   $0x5,%ah
41529e:	7b 2c                	jnp    0x4152cc
4152a0:	dd 05 f8 83 42 00    	fldl   0x4283f8
4152a6:	eb 32                	jmp    0x4152da
4152a8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4152ab:	d9 ee                	fldz
4152ad:	dc 19                	fcompl (%ecx)
4152af:	df e0                	fnstsw %ax
4152b1:	f6 c4 05             	test   $0x5,%ah
4152b4:	7a 1e                	jp     0x4152d4
4152b6:	dd 05 f8 83 42 00    	fldl   0x4283f8
4152bc:	eb 1e                	jmp    0x4152dc
4152be:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4152c1:	d9 ee                	fldz
4152c3:	dc 19                	fcompl (%ecx)
4152c5:	df e0                	fnstsw %ax
4152c7:	f6 c4 05             	test   $0x5,%ah
4152ca:	7a 08                	jp     0x4152d4
4152cc:	dd 05 f0 83 42 00    	fldl   0x4283f0
4152d2:	eb 08                	jmp    0x4152dc
4152d4:	dd 05 f0 83 42 00    	fldl   0x4283f0
4152da:	d9 e0                	fchs
4152dc:	dd 19                	fstpl  (%ecx)
4152de:	83 e6 fe             	and    $0xfffffffe,%esi
4152e1:	e9 e1 00 00 00       	jmp    0x4153c7
4152e6:	f6 c3 02             	test   $0x2,%bl
4152e9:	0f 84 d8 00 00 00    	je     0x4153c7
4152ef:	f6 45 10 10          	testb  $0x10,0x10(%ebp)
4152f3:	0f 84 ce 00 00 00    	je     0x4153c7
4152f9:	8b 45 0c             	mov    0xc(%ebp),%eax
4152fc:	57                   	push   %edi
4152fd:	8b fb                	mov    %ebx,%edi
4152ff:	c1 ef 04             	shr    $0x4,%edi
415302:	dd 00                	fldl   (%eax)
415304:	83 e7 01             	and    $0x1,%edi
415307:	d9 ee                	fldz
415309:	dd e9                	fucomp %st(1)
41530b:	df e0                	fnstsw %ax
41530d:	f6 c4 44             	test   $0x44,%ah
415310:	0f 8b 9c 00 00 00    	jnp    0x4153b2
415316:	8d 45 fc             	lea    -0x4(%ebp),%eax
415319:	50                   	push   %eax
41531a:	51                   	push   %ecx
41531b:	51                   	push   %ecx
41531c:	dd 1c 24             	fstpl  (%esp)
41531f:	e8 ac 04 00 00       	call   0x4157d0
415324:	8b 55 fc             	mov    -0x4(%ebp),%edx
415327:	83 c4 0c             	add    $0xc,%esp
41532a:	81 c2 00 fa ff ff    	add    $0xfffffa00,%edx
415330:	dd 55 f0             	fstl   -0x10(%ebp)
415333:	d9 ee                	fldz
415335:	81 fa ce fb ff ff    	cmp    $0xfffffbce,%edx
41533b:	7d 07                	jge    0x415344
41533d:	33 ff                	xor    %edi,%edi
41533f:	de c9                	fmulp  %st,%st(1)
415341:	47                   	inc    %edi
415342:	eb 67                	jmp    0x4153ab
415344:	de d9                	fcompp
415346:	df e0                	fnstsw %ax
415348:	f6 c4 41             	test   $0x41,%ah
41534b:	75 09                	jne    0x415356
41534d:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
415354:	eb 04                	jmp    0x41535a
415356:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
41535a:	8b 45 f6             	mov    -0xa(%ebp),%eax
41535d:	b9 03 fc ff ff       	mov    $0xfffffc03,%ecx
415362:	83 e0 0f             	and    $0xf,%eax
415365:	83 c8 10             	or     $0x10,%eax
415368:	66 89 45 f6          	mov    %ax,-0xa(%ebp)
41536c:	3b d1                	cmp    %ecx,%edx
41536e:	7d 30                	jge    0x4153a0
415370:	8b 45 f0             	mov    -0x10(%ebp),%eax
415373:	2b ca                	sub    %edx,%ecx
415375:	8b 55 f4             	mov    -0xc(%ebp),%edx
415378:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
41537c:	74 05                	je     0x415383
41537e:	85 ff                	test   %edi,%edi
415380:	75 01                	jne    0x415383
415382:	47                   	inc    %edi
415383:	d1 e8                	shr    $1,%eax
415385:	f6 45 f4 01          	testb  $0x1,-0xc(%ebp)
415389:	89 45 f0             	mov    %eax,-0x10(%ebp)
41538c:	74 08                	je     0x415396
41538e:	0d 00 00 00 80       	or     $0x80000000,%eax
415393:	89 45 f0             	mov    %eax,-0x10(%ebp)
415396:	d1 ea                	shr    $1,%edx
415398:	89 55 f4             	mov    %edx,-0xc(%ebp)
41539b:	83 e9 01             	sub    $0x1,%ecx
41539e:	75 d8                	jne    0x415378
4153a0:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4153a4:	dd 45 f0             	fldl   -0x10(%ebp)
4153a7:	74 02                	je     0x4153ab
4153a9:	d9 e0                	fchs
4153ab:	8b 45 0c             	mov    0xc(%ebp),%eax
4153ae:	dd 18                	fstpl  (%eax)
4153b0:	eb 05                	jmp    0x4153b7
4153b2:	33 ff                	xor    %edi,%edi
4153b4:	dd d8                	fstp   %st(0)
4153b6:	47                   	inc    %edi
4153b7:	85 ff                	test   %edi,%edi
4153b9:	5f                   	pop    %edi
4153ba:	74 08                	je     0x4153c4
4153bc:	6a 10                	push   $0x10
4153be:	e8 25 06 00 00       	call   0x4159e8
4153c3:	59                   	pop    %ecx
4153c4:	83 e6 fd             	and    $0xfffffffd,%esi
4153c7:	f6 c3 10             	test   $0x10,%bl
4153ca:	74 11                	je     0x4153dd
4153cc:	f6 45 10 20          	testb  $0x20,0x10(%ebp)
4153d0:	74 0b                	je     0x4153dd
4153d2:	6a 20                	push   $0x20
4153d4:	e8 0f 06 00 00       	call   0x4159e8
4153d9:	59                   	pop    %ecx
4153da:	83 e6 ef             	and    $0xffffffef,%esi
4153dd:	33 c0                	xor    %eax,%eax
4153df:	85 f6                	test   %esi,%esi
4153e1:	5e                   	pop    %esi
4153e2:	0f 94 c0             	sete   %al
4153e5:	5b                   	pop    %ebx
4153e6:	c9                   	leave
4153e7:	c3                   	ret
4153e8:	8b ff                	mov    %edi,%edi
4153ea:	55                   	push   %ebp
4153eb:	8b ec                	mov    %esp,%ebp
4153ed:	6a 00                	push   $0x0
4153ef:	ff 75 1c             	push   0x1c(%ebp)
4153f2:	ff 75 18             	push   0x18(%ebp)
4153f5:	ff 75 14             	push   0x14(%ebp)
4153f8:	ff 75 10             	push   0x10(%ebp)
4153fb:	ff 75 0c             	push   0xc(%ebp)
4153fe:	ff 75 08             	push   0x8(%ebp)
415401:	e8 05 00 00 00       	call   0x41540b
415406:	83 c4 1c             	add    $0x1c,%esp
415409:	5d                   	pop    %ebp
41540a:	c3                   	ret
41540b:	8b ff                	mov    %edi,%edi
41540d:	55                   	push   %ebp
41540e:	8b ec                	mov    %esp,%ebp
415410:	8b 45 08             	mov    0x8(%ebp),%eax
415413:	33 c9                	xor    %ecx,%ecx
415415:	53                   	push   %ebx
415416:	33 db                	xor    %ebx,%ebx
415418:	43                   	inc    %ebx
415419:	89 48 04             	mov    %ecx,0x4(%eax)
41541c:	8b 45 08             	mov    0x8(%ebp),%eax
41541f:	57                   	push   %edi
415420:	bf 0d 00 00 c0       	mov    $0xc000000d,%edi
415425:	89 48 08             	mov    %ecx,0x8(%eax)
415428:	8b 45 08             	mov    0x8(%ebp),%eax
41542b:	89 48 0c             	mov    %ecx,0xc(%eax)
41542e:	8b 4d 10             	mov    0x10(%ebp),%ecx
415431:	f6 c1 10             	test   $0x10,%cl
415434:	74 0b                	je     0x415441
415436:	8b 45 08             	mov    0x8(%ebp),%eax
415439:	bf 8f 00 00 c0       	mov    $0xc000008f,%edi