54301f:	e8 fc 8c 00 00       	call   0x54bd20
543024:	83 c4 0c             	add    $0xc,%esp
543027:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
54302d:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
543033:	83 c6 14             	add    $0x14,%esi
543036:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
54303c:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
543042:	e9 6d f8 ff ff       	jmp    0x5428b4
543047:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
54304d:	8b bd 8c fe ff ff    	mov    -0x174(%ebp),%edi
543053:	8b 42 04             	mov    0x4(%edx),%eax
543056:	8d 04 80             	lea    (%eax,%eax,4),%eax
543059:	ff 74 c7 04          	push   0x4(%edi,%eax,8)
54305d:	ff 34 c7             	push   (%edi,%eax,8)
543060:	8b 42 08             	mov    0x8(%edx),%eax
543063:	8d 04 80             	lea    (%eax,%eax,4),%eax
543066:	8d 04 c7             	lea    (%edi,%eax,8),%eax
543069:	50                   	push   %eax
54306a:	e8 a1 89 00 00       	call   0x54ba10
54306f:	83 c4 0c             	add    $0xc,%esp
543072:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543078:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54307e:	83 c6 14             	add    $0x14,%esi
543081:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543087:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54308d:	e9 22 f8 ff ff       	jmp    0x5428b4
543092:	8b 95 98 fe ff ff    	mov    -0x168(%ebp),%edx
543098:	8b 9d 8c fe ff ff    	mov    -0x174(%ebp),%ebx
54309e:	8b 42 04             	mov    0x4(%edx),%eax
5430a1:	8d 04 80             	lea    (%eax,%eax,4),%eax
5430a4:	8d 0c c3             	lea    (%ebx,%eax,8),%ecx
5430a7:	8b 42 08             	mov    0x8(%edx),%eax
5430aa:	89 8d 84 fe ff ff    	mov    %ecx,-0x17c(%ebp)
5430b0:	8d 04 80             	lea    (%eax,%eax,4),%eax
5430b3:	8d 34 c3             	lea    (%ebx,%eax,8),%esi
5430b6:	8b 42 0c             	mov    0xc(%edx),%eax
5430b9:	0f b7 51 08          	movzwl 0x8(%ecx),%edx
5430bd:	89 95 5c fe ff ff    	mov    %edx,-0x1a4(%ebp)
5430c3:	8d 04 80             	lea    (%eax,%eax,4),%eax
5430c6:	8d 1c c3             	lea    (%ebx,%eax,8),%ebx
5430c9:	8a 46 08             	mov    0x8(%esi),%al
5430cc:	0a c2                	or     %dl,%al
5430ce:	a8 01                	test   $0x1,%al
5430d0:	74 29                	je     0x5430fb
5430d2:	53                   	push   %ebx
5430d3:	e8 78 89 00 00       	call   0x54ba50
5430d8:	83 c4 04             	add    $0x4,%esp
5430db:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
5430e1:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
5430e7:	83 c6 14             	add    $0x14,%esi
5430ea:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5430f0:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5430f6:	e9 b9 f7 ff ff       	jmp    0x5428b4
5430fb:	f6 c2 12             	test   $0x12,%dl
5430fe:	75 36                	jne    0x543136
543100:	6a 00                	push   $0x0
543102:	ff b5 60 fe ff ff    	push   -0x1a0(%ebp)
543108:	51                   	push   %ecx
543109:	e8 62 8c 00 00       	call   0x54bd70
54310e:	83 c4 0c             	add    $0xc,%esp
543111:	85 c0                	test   %eax,%eax
543113:	0f 85 bb 5e 00 00    	jne    0x548fd4
543119:	8b 85 84 fe ff ff    	mov    -0x17c(%ebp),%eax
54311f:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
543124:	66 8b 40 08          	mov    0x8(%eax),%ax
543128:	66 23 c1             	and    %cx,%ax
54312b:	0f b7 c8             	movzwl %ax,%ecx
54312e:	89 8d 5c fe ff ff    	mov    %ecx,-0x1a4(%ebp)
543134:	eb 34                	jmp    0x54316a
543136:	f7 c2 00 40 00 00    	test   $0x4000,%edx
54313c:	74 2c                	je     0x54316a
54313e:	51                   	push   %ecx
54313f:	e8 3c 82 00 00       	call   0x54b380
543144:	83 c4 04             	add    $0x4,%esp
543147:	85 c0                	test   %eax,%eax
543149:	0f 85 85 5e 00 00    	jne    0x548fd4
54314f:	8b 85 84 fe ff ff    	mov    -0x17c(%ebp),%eax
543155:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
54315a:	66 8b 40 08          	mov    0x8(%eax),%ax
54315e:	66 23 c1             	and    %cx,%ax
543161:	0f b7 c0             	movzwl %ax,%eax
543164:	89 85 5c fe ff ff    	mov    %eax,-0x1a4(%ebp)
54316a:	0f b7 46 08          	movzwl 0x8(%esi),%eax
54316e:	89 85 88 fe ff ff    	mov    %eax,-0x178(%ebp)
543174:	a8 12                	test   $0x12,%al
543176:	75 13                	jne    0x54318b
543178:	6a 00                	push   $0x0
54317a:	ff b5 60 fe ff ff    	push   -0x1a0(%ebp)
543180:	56                   	push   %esi
543181:	e8 ea 8b 00 00       	call   0x54bd70
543186:	83 c4 0c             	add    $0xc,%esp
543189:	eb 10                	jmp    0x54319b
54318b:	a9 00 40 00 00       	test   $0x4000,%eax
543190:	74 26                	je     0x5431b8
543192:	56                   	push   %esi
543193:	e8 e8 81 00 00       	call   0x54b380
543198:	83 c4 04             	add    $0x4,%esp
54319b:	85 c0                	test   %eax,%eax
54319d:	0f 85 31 5e 00 00    	jne    0x548fd4
5431a3:	66 8b 46 08          	mov    0x8(%esi),%ax
5431a7:	b9 fd ff 00 00       	mov    $0xfffd,%ecx
5431ac:	66 23 c1             	and    %cx,%ax
5431af:	0f b7 c0             	movzwl %ax,%eax
5431b2:	89 85 88 fe ff ff    	mov    %eax,-0x178(%ebp)
5431b8:	8b 85 84 fe ff ff    	mov    -0x17c(%ebp),%eax
5431be:	8b 40 0c             	mov    0xc(%eax),%eax
5431c1:	03 46 0c             	add    0xc(%esi),%eax
5431c4:	99                   	cltd
5431c5:	89 85 48 fe ff ff    	mov    %eax,-0x1b8(%ebp)
5431cb:	8b ca                	mov    %edx,%ecx
5431cd:	8b 47 6c             	mov    0x6c(%edi),%eax
5431d0:	99                   	cltd
5431d1:	3b ca                	cmp    %edx,%ecx
5431d3:	0f 8f 77 4c 00 00    	jg     0x547e50
5431d9:	8b 8d 48 fe ff ff    	mov    -0x1b8(%ebp),%ecx
5431df:	7c 08                	jl     0x5431e9
5431e1:	3b c8                	cmp    %eax,%ecx
5431e3:	0f 87 67 4c 00 00    	ja     0x547e50
5431e9:	33 c0                	xor    %eax,%eax
5431eb:	3b de                	cmp    %esi,%ebx
5431ed:	0f 94 c0             	sete   %al
5431f0:	50                   	push   %eax
5431f1:	8d 41 03             	lea    0x3(%ecx),%eax
5431f4:	50                   	push   %eax
5431f5:	53                   	push   %ebx
5431f6:	e8 f5 82 00 00       	call   0x54b4f0
5431fb:	83 c4 0c             	add    $0xc,%esp
5431fe:	85 c0                	test   %eax,%eax
543200:	0f 85 ce 5d 00 00    	jne    0x548fd4
543206:	66 8b 43 08          	mov    0x8(%ebx),%ax
54320a:	b9 40 3e 00 00       	mov    $0x3e40,%ecx
54320f:	66 23 c1             	and    %cx,%ax
543212:	66 83 c8 02          	or     $0x2,%ax
543216:	66 89 43 08          	mov    %ax,0x8(%ebx)
54321a:	3b de                	cmp    %esi,%ebx
54321c:	74 1b                	je     0x543239
54321e:	ff 76 0c             	push   0xc(%esi)
543221:	ff 76 10             	push   0x10(%esi)
543224:	ff 73 10             	push   0x10(%ebx)
543227:	e8 d4 fc 09 00       	call   0x5e2f00
54322c:	8b 85 88 fe ff ff    	mov    -0x178(%ebp),%eax
543232:	83 c4 0c             	add    $0xc,%esp
543235:	66 89 46 08          	mov    %ax,0x8(%esi)
543239:	8b bd 84 fe ff ff    	mov    -0x17c(%ebp),%edi
54323f:	8b 43 10             	mov    0x10(%ebx),%eax
543242:	03 46 0c             	add    0xc(%esi),%eax
543245:	ff 77 0c             	push   0xc(%edi)
543248:	ff 77 10             	push   0x10(%edi)
54324b:	50                   	push   %eax
54324c:	e8 af fc 09 00       	call   0x5e2f00
543251:	8b 85 5c fe ff ff    	mov    -0x1a4(%ebp),%eax
543257:	83 c4 0c             	add    $0xc,%esp
54325a:	8b 8d 48 fe ff ff    	mov    -0x1b8(%ebp),%ecx
543260:	66 89 47 08          	mov    %ax,0x8(%edi)
543264:	8b 43 10             	mov    0x10(%ebx),%eax
543267:	c6 04 01 00          	movb   $0x0,(%ecx,%eax,1)
54326b:	8b 43 10             	mov    0x10(%ebx),%eax
54326e:	c6 44 01 01 00       	movb   $0x0,0x1(%ecx,%eax,1)
543273:	8b 43 10             	mov    0x10(%ebx),%eax
543276:	c6 44 01 02 00       	movb   $0x0,0x2(%ecx,%eax,1)
54327b:	b8 00 02 00 00       	mov    $0x200,%eax
543280:	66 09 43 08          	or     %ax,0x8(%ebx)
543284:	8a 85 60 fe ff ff    	mov    -0x1a0(%ebp),%al
54328a:	89 4b 0c             	mov    %ecx,0xc(%ebx)
54328d:	88 43 0a             	mov    %al,0xa(%ebx)
543290:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543296:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54329c:	83 c6 14             	add    $0x14,%esi
54329f:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
5432a5:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
5432ab:	e9 04 f6 ff ff       	jmp    0x5428b4
5432b0:	8b bd 98 fe ff ff    	mov    -0x168(%ebp),%edi
5432b6:	8b 8d 8c fe ff ff    	mov    -0x174(%ebp),%ecx
5432bc:	8b 47 04             	mov    0x4(%edi),%eax
5432bf:	8d 04 80             	lea    (%eax,%eax,4),%eax
5432c2:	8d 34 c1             	lea    (%ecx,%eax,8),%esi
5432c5:	56                   	push   %esi
5432c6:	89 b5 84 fe ff ff    	mov    %esi,-0x17c(%ebp)
5432cc:	e8 6f 86 fc ff       	call   0x50b940
5432d1:	0f b7 d8             	movzwl %ax,%ebx
5432d4:	8b 47 08             	mov    0x8(%edi),%eax
5432d7:	8b bd 8c fe ff ff    	mov    -0x174(%ebp),%edi
5432dd:	8d 04 80             	lea    (%eax,%eax,4),%eax
5432e0:	8d 04 c7             	lea    (%edi,%eax,8),%eax
5432e3:	50                   	push   %eax
5432e4:	89 85 88 fe ff ff    	mov    %eax,-0x178(%ebp)
5432ea:	e8 51 86 fc ff       	call   0x50b940
5432ef:	0f b7 c8             	movzwl %ax,%ecx
5432f2:	83 c4 08             	add    $0x8,%esp
5432f5:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5432fb:	22 cb                	and    %bl,%cl
5432fd:	8b 40 0c             	mov    0xc(%eax),%eax
543300:	8d 04 80             	lea    (%eax,%eax,4),%eax
543303:	8d 04 c7             	lea    (%edi,%eax,8),%eax
543306:	89 85 5c fe ff ff    	mov    %eax,-0x1a4(%ebp)
54330c:	8b 85 88 fe ff ff    	mov    -0x178(%ebp),%eax
543312:	66 8b 40 08          	mov    0x8(%eax),%ax
543316:	66 0b 46 08          	or     0x8(%esi),%ax
54331a:	0f b7 c0             	movzwl %ax,%eax
54331d:	f6 c1 04             	test   $0x4,%cl
543320:	0f 84 2a 01 00 00    	je     0x543450
543326:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
54332c:	8b 9d 88 fe ff ff    	mov    -0x178(%ebp),%ebx
543332:	8b 0e                	mov    (%esi),%ecx
543334:	8b 56 04             	mov    0x4(%esi),%edx
543337:	0f b6 00             	movzbl (%eax),%eax
54333a:	8b 33                	mov    (%ebx),%esi
54333c:	83 c0 97             	add    $0xffffff97,%eax
54333f:	8b 7b 04             	mov    0x4(%ebx),%edi
543342:	89 b5 24 fe ff ff    	mov    %esi,-0x1dc(%ebp)
543348:	89 bd 28 fe ff ff    	mov    %edi,-0x1d8(%ebp)
54334e:	83 f8 03             	cmp    $0x3,%eax
543351:	0f 87 83 00 00 00    	ja     0x5433da
543357:	ff 24 85 fc 96 54 00 	jmp    *0x5496fc(,%eax,4)
54335e:	52                   	push   %edx
54335f:	51                   	push   %ecx
543360:	8d 85 24 fe ff ff    	lea    -0x1dc(%ebp),%eax
543366:	50                   	push   %eax
543367:	e8 d4 49 fd ff       	call   0x517d40
54336c:	83 c4 0c             	add    $0xc,%esp
54336f:	85 c0                	test   %eax,%eax
543371:	0f 84 8e 00 00 00    	je     0x543405
543377:	8b b5 84 fe ff ff    	mov    -0x17c(%ebp),%esi
54337d:	e9 06 01 00 00       	jmp    0x543488
543382:	52                   	push   %edx
543383:	51                   	push   %ecx
543384:	8d 85 24 fe ff ff    	lea    -0x1dc(%ebp),%eax
54338a:	50                   	push   %eax
54338b:	e8 20 a9 ff ff       	call   0x53dcb0
543390:	83 c4 0c             	add    $0xc,%esp
543393:	85 c0                	test   %eax,%eax
543395:	75 e0                	jne    0x543377
543397:	eb 6c                	jmp    0x543405
543399:	52                   	push   %edx
54339a:	51                   	push   %ecx
54339b:	8d 85 24 fe ff ff    	lea    -0x1dc(%ebp),%eax
5433a1:	50                   	push   %eax
5433a2:	e8 f9 e0 fe ff       	call   0x5314a0
5433a7:	83 c4 0c             	add    $0xc,%esp
5433aa:	85 c0                	test   %eax,%eax
5433ac:	75 c9                	jne    0x543377
5433ae:	eb 55                	jmp    0x543405
5433b0:	8b c1                	mov    %ecx,%eax
5433b2:	0b c2                	or     %edx,%eax
5433b4:	0f 84 9a 00 00 00    	je     0x543454
5433ba:	8b c1                	mov    %ecx,%eax
5433bc:	23 c2                	and    %edx,%eax
5433be:	83 f8 ff             	cmp    $0xffffffff,%eax
5433c1:	75 0c                	jne    0x5433cf
5433c3:	85 f6                	test   %esi,%esi
5433c5:	75 08                	jne    0x5433cf
5433c7:	81 ff 00 00 00 80    	cmp    $0x80000000,%edi
5433cd:	74 a8                	je     0x543377
5433cf:	52                   	push   %edx
5433d0:	51                   	push   %ecx
5433d1:	57                   	push   %edi
5433d2:	56                   	push   %esi
5433d3:	e8 68 e7 09 00       	call   0x5e1b40
5433d8:	eb 1f                	jmp    0x5433f9
5433da:	8b c1                	mov    %ecx,%eax
5433dc:	0b c2                	or     %edx,%eax
5433de:	74 74                	je     0x543454
5433e0:	8b c1                	mov    %ecx,%eax
5433e2:	23 c2                	and    %edx,%eax
5433e4:	83 f8 ff             	cmp    $0xffffffff,%eax
5433e7:	75 07                	jne    0x5433f0
5433e9:	b9 01 00 00 00       	mov    $0x1,%ecx
5433ee:	33 d2                	xor    %edx,%edx
5433f0:	52                   	push   %edx
5433f1:	51                   	push   %ecx
5433f2:	57                   	push   %edi
5433f3:	56                   	push   %esi
5433f4:	e8 d7 ed 09 00       	call   0x5e21d0
5433f9:	89 95 28 fe ff ff    	mov    %edx,-0x1d8(%ebp)
5433ff:	89 85 24 fe ff ff    	mov    %eax,-0x1dc(%ebp)
543405:	8b 8d 5c fe ff ff    	mov    -0x1a4(%ebp),%ecx
54340b:	ba 40 3e 00 00       	mov    $0x3e40,%edx
543410:	8b 85 24 fe ff ff    	mov    -0x1dc(%ebp),%eax
543416:	89 01                	mov    %eax,(%ecx)
543418:	8b 85 28 fe ff ff    	mov    -0x1d8(%ebp),%eax
54341e:	89 41 04             	mov    %eax,0x4(%ecx)
543421:	66 8b 41 08          	mov    0x8(%ecx),%ax
543425:	66 23 c2             	and    %dx,%ax
543428:	66 83 c8 04          	or     $0x4,%ax
54342c:	66 89 41 08          	mov    %ax,0x8(%ecx)
543430:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543436:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54343c:	83 c6 14             	add    $0x14,%esi
54343f:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543445:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54344b:	e9 64 f4 ff ff       	jmp    0x5428b4
543450:	a8 01                	test   $0x1,%al
543452:	74 2e                	je     0x543482
543454:	ff b5 5c fe ff ff    	push   -0x1a4(%ebp)
54345a:	e8 f1 85 00 00       	call   0x54ba50
54345f:	83 c4 04             	add    $0x4,%esp
543462:	8b b5 98 fe ff ff    	mov    -0x168(%ebp),%esi
543468:	8b 8d 9c fe ff ff    	mov    -0x164(%ebp),%ecx
54346e:	83 c6 14             	add    $0x14,%esi
543471:	8b bd 4c fe ff ff    	mov    -0x1b4(%ebp),%edi
543477:	8b 9d 1c fe ff ff    	mov    -0x1e4(%ebp),%ebx
54347d:	e9 32 f4 ff ff       	jmp    0x5428b4
543482:	8b 9d 88 fe ff ff    	mov    -0x178(%ebp),%ebx
543488:	56                   	push   %esi
543489:	e8 42 90 00 00       	call   0x54c4d0
54348e:	dd 9d 74 fe ff ff    	fstpl  -0x18c(%ebp)
543494:	53                   	push   %ebx
543495:	e8 36 90 00 00       	call   0x54c4d0
54349a:	8b 85 98 fe ff ff    	mov    -0x168(%ebp),%eax
5434a0:	83 c4 08             	add    $0x8,%esp
5434a3:	dd 9d 6c fe ff ff    	fstpl  -0x194(%ebp)
5434a9:	0f b6 00             	movzbl (%eax),%eax
5434ac:	83 c0 97             	add    $0xffffff97,%eax
5434af:	83 f8 03             	cmp    $0x3,%eax
5434b2:	77 6a                	ja     0x54351e
5434b4:	ff 24 85 0c 97 54 00 	jmp    *0x54970c(,%eax,4)
5434bb:	f2 0f 10 85 6c fe ff 	movsd  -0x194(%ebp),%xmm0
5434c2:	ff
5434c3:	f2 0f 58 85 74 fe ff 	addsd  -0x18c(%ebp),%xmm0
5434ca:	ff
5434cb:	e9 99 00 00 00       	jmp    0x543569
5434d0:	f2 0f 10 85 6c fe ff 	movsd  -0x194(%ebp),%xmm0
5434d7:	ff
5434d8:	f2 0f 5c 85 74 fe ff 	subsd  -0x18c(%ebp),%xmm0
5434df:	ff
5434e0:	e9 84 00 00 00       	jmp    0x543569
5434e5:	f2 0f 10 85 6c fe ff 	movsd  -0x194(%ebp),%xmm0
5434ec:	ff
5434ed:	f2 0f 59 85 74 fe ff 	mulsd  -0x18c(%ebp),%xmm0
5434f4:	ff
5434f5:	eb 72                	jmp    0x543569
5434f7:	f2 0f 10 8d 74 fe ff 	movsd  -0x18c(%ebp),%xmm1
5434fe:	ff
5434ff:	0f 57 c0             	xorps  %xmm0,%xmm0
543502:	66 0f 2e c8          	ucomisd %xmm0,%xmm1
543506:	9f                   	lahf
543507:	f6 c4 44             	test   $0x44,%ah
54350a:	0f 8b 44 ff ff ff    	jnp    0x543454
543510:	f2 0f 10 85 6c fe ff 	movsd  -0x194(%ebp),%xmm0
543517:	ff
543518:	f2 0f 5e c1          	divsd  %xmm1,%xmm0
54351c:	eb 4b                	jmp    0x543569
54351e:	56                   	push   %esi
54351f:	e8 7c 71 00 00       	call   0x54a6a0
543524:	53                   	push   %ebx
543525:	8b f0                	mov    %eax,%esi
543527:	8b fa                	mov    %edx,%edi
543529:	e8 72 71 00 00       	call   0x54a6a0
54352e:	8b c8                	mov    %eax,%ecx
543530:	89 95 28 fe ff ff    	mov    %edx,-0x1d8(%ebp)