5401dc:	33 c0                	xor    %eax,%eax
5401de:	55                   	push   %ebp
5401df:	68 bc 0d 54 00       	push   $0x540dbc
5401e4:	64 ff 30             	push   %fs:(%eax)
5401e7:	64 89 20             	mov    %esp,%fs:(%eax)
5401ea:	8b 45 f8             	mov    -0x8(%ebp),%eax
5401ed:	33 d2                	xor    %edx,%edx
5401ef:	89 10                	mov    %edx,(%eax)
5401f1:	8b 45 14             	mov    0x14(%ebp),%eax
5401f4:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5401f9:	74 10                	je     0x54020b
5401fb:	8b 5d 14             	mov    0x14(%ebp),%ebx
5401fe:	8b 55 14             	mov    0x14(%ebp),%edx
540201:	8b 52 08             	mov    0x8(%edx),%edx
540204:	33 c9                	xor    %ecx,%ecx
540206:	8b 43 04             	mov    0x4(%ebx),%eax
540209:	ff 13                	call   *(%ebx)
54020b:	8b 45 14             	mov    0x14(%ebp),%eax
54020e:	8b 40 28             	mov    0x28(%eax),%eax
540211:	80 38 00             	cmpb   $0x0,(%eax)
540214:	0f 85 89 0b 00 00    	jne    0x540da3
54021a:	8b c6                	mov    %esi,%eax
54021c:	e8 cb e4 ed ff       	call   0x41e6ec
540221:	89 45 b0             	mov    %eax,-0x50(%ebp)
540224:	89 55 b4             	mov    %edx,-0x4c(%ebp)
540227:	8d 45 e7             	lea    -0x19(%ebp),%eax
54022a:	33 c9                	xor    %ecx,%ecx
54022c:	ba 04 00 00 00       	mov    $0x4,%edx
540231:	e8 0a 30 ec ff       	call   0x403240
540236:	8b 45 18             	mov    0x18(%ebp),%eax
540239:	8b 00                	mov    (%eax),%eax
54023b:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
540241:	89 45 f4             	mov    %eax,-0xc(%ebp)
540244:	8d 55 9b             	lea    -0x65(%ebp),%edx
540247:	b9 0d 00 00 00       	mov    $0xd,%ecx
54024c:	8b c6                	mov    %esi,%eax
54024e:	8b 18                	mov    (%eax),%ebx
540250:	ff 53 08             	call   *0x8(%ebx)
540253:	80 7d 9b 47          	cmpb   $0x47,-0x65(%ebp)
540257:	75 0c                	jne    0x540265
540259:	80 7d 9c 49          	cmpb   $0x49,-0x64(%ebp)
54025d:	75 06                	jne    0x540265
54025f:	80 7d 9d 46          	cmpb   $0x46,-0x63(%ebp)
540263:	74 0e                	je     0x540273
540265:	8b 45 14             	mov    0x14(%ebp),%eax
540268:	8b 40 28             	mov    0x28(%eax),%eax
54026b:	c6 00 01             	movb   $0x1,(%eax)
54026e:	e9 30 0b 00 00       	jmp    0x540da3
540273:	8d 85 90 f9 ff ff    	lea    -0x670(%ebp),%eax
540279:	8d 55 9b             	lea    -0x65(%ebp),%edx
54027c:	b9 06 00 00 00       	mov    $0x6,%ecx
540281:	e8 8e 32 ec ff       	call   0x403514
540286:	8d 95 90 f9 ff ff    	lea    -0x670(%ebp),%edx
54028c:	8d 85 88 f9 ff ff    	lea    -0x678(%ebp),%eax
540292:	e8 8d 2e ec ff       	call   0x403124
540297:	ba cc 0d 54 00       	mov    $0x540dcc,%edx
54029c:	8d 85 88 f9 ff ff    	lea    -0x678(%ebp),%eax
5402a2:	b1 07                	mov    $0x7,%cl
5402a4:	e8 4b 2e ec ff       	call   0x4030f4
5402a9:	8d 95 88 f9 ff ff    	lea    -0x678(%ebp),%edx
5402af:	8b 45 18             	mov    0x18(%ebp),%eax
5402b2:	8b 00                	mov    (%eax),%eax
5402b4:	05 80 00 00 00       	add    $0x80,%eax
5402b9:	e8 06 48 ec ff       	call   0x404ac4
5402be:	0f b7 45 a1          	movzwl -0x5f(%ebp),%eax
5402c2:	8b 55 18             	mov    0x18(%ebp),%edx
5402c5:	8b 12                	mov    (%edx),%edx
5402c7:	89 82 9c 00 00 00    	mov    %eax,0x9c(%edx)
5402cd:	0f b7 45 a3          	movzwl -0x5d(%ebp),%eax
5402d1:	8b 55 18             	mov    0x18(%ebp),%edx
5402d4:	8b 12                	mov    (%edx),%edx
5402d6:	89 82 a0 00 00 00    	mov    %eax,0xa0(%edx)
5402dc:	33 c0                	xor    %eax,%eax
5402de:	8a 45 a7             	mov    -0x59(%ebp),%al
5402e1:	8b 55 18             	mov    0x18(%ebp),%edx
5402e4:	8b 12                	mov    (%edx),%edx
5402e6:	89 82 a8 00 00 00    	mov    %eax,0xa8(%edx)
5402ec:	8b 15 9c 71 6a 00    	mov    0x6a719c,%edx
5402f2:	8b 12                	mov    (%edx),%edx
5402f4:	8b 45 18             	mov    0x18(%ebp),%eax
5402f7:	8b 00                	mov    (%eax),%eax
5402f9:	e8 be d3 08 00       	call   0x5cd6bc
5402fe:	8b 15 00 71 6a 00    	mov    0x6a7100,%edx
540304:	8b 12                	mov    (%edx),%edx
540306:	8b 45 18             	mov    0x18(%ebp),%eax
540309:	8b 00                	mov    (%eax),%eax
54030b:	e8 dc d3 08 00       	call   0x5cd6ec
540310:	8b 45 18             	mov    0x18(%ebp),%eax
540313:	8b 00                	mov    (%eax),%eax
540315:	c7 40 10 01 00 00 00 	movl   $0x1,0x10(%eax)
54031c:	8a 45 a5             	mov    -0x5b(%ebp),%al
54031f:	8b d0                	mov    %eax,%edx
540321:	80 e2 07             	and    $0x7,%dl
540324:	81 e2 ff 00 00 00    	and    $0xff,%edx
54032a:	89 55 c4             	mov    %edx,-0x3c(%ebp)
54032d:	a8 80                	test   $0x80,%al
54032f:	0f 95 c0             	setne  %al
540332:	84 c0                	test   %al,%al
540334:	74 6e                	je     0x5403a4
540336:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
540339:	b8 02 00 00 00       	mov    $0x2,%eax
54033e:	d3 e0                	shl    %cl,%eax
540340:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
540343:	8d 95 9b fc ff ff    	lea    -0x365(%ebp),%edx
540349:	8b c6                	mov    %esi,%eax
54034b:	8b 18                	mov    (%eax),%ebx
54034d:	ff 53 08             	call   *0x8(%ebx)
540350:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
540353:	b8 02 00 00 00       	mov    $0x2,%eax
540358:	d3 e0                	shl    %cl,%eax
54035a:	48                   	dec    %eax
54035b:	85 c0                	test   %eax,%eax
54035d:	7c 1c                	jl     0x54037b
54035f:	40                   	inc    %eax
540360:	89 45 ac             	mov    %eax,-0x54(%ebp)
540363:	8d bd 9d fc ff ff    	lea    -0x363(%ebp),%edi
540369:	8d 57 fe             	lea    -0x2(%edi),%edx
54036c:	8b c7                	mov    %edi,%eax
54036e:	e8 09 91 06 00       	call   0x5a947c
540373:	83 c7 03             	add    $0x3,%edi
540376:	ff 4d ac             	decl   -0x54(%ebp)
540379:	75 ee                	jne    0x540369
54037b:	8b 45 18             	mov    0x18(%ebp),%eax
54037e:	8b 00                	mov    (%eax),%eax
540380:	33 d2                	xor    %edx,%edx
540382:	8a 55 a6             	mov    -0x5a(%ebp),%dl
540385:	8d 14 52             	lea    (%edx,%edx,2),%edx
540388:	66 8b 8c 15 9b fc ff 	mov    -0x365(%ebp,%edx,1),%cx
54038f:	ff
540390:	66 89 88 a4 00 00 00 	mov    %cx,0xa4(%eax)
540397:	8a 8c 15 9d fc ff ff 	mov    -0x363(%ebp,%edx,1),%cl
54039e:	88 88 a6 00 00 00    	mov    %cl,0xa6(%eax)
5403a4:	8b c6                	mov    %esi,%eax
5403a6:	e8 0d e3 ed ff       	call   0x41e6b8
5403ab:	3b 55 b4             	cmp    -0x4c(%ebp),%edx
5403ae:	75 07                	jne    0x5403b7
5403b0:	3b 45 b0             	cmp    -0x50(%ebp),%eax
5403b3:	72 0d                	jb     0x5403c2
5403b5:	eb 02                	jmp    0x5403b9
5403b7:	7c 09                	jl     0x5403c2
5403b9:	8b 45 14             	mov    0x14(%ebp),%eax
5403bc:	8b 40 28             	mov    0x28(%eax),%eax
5403bf:	c6 00 01             	movb   $0x1,(%eax)
5403c2:	33 c0                	xor    %eax,%eax
5403c4:	89 45 e0             	mov    %eax,-0x20(%ebp)
5403c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
5403ca:	33 d2                	xor    %edx,%edx
5403cc:	89 10                	mov    %edx,(%eax)
5403ce:	8b 45 14             	mov    0x14(%ebp),%eax
5403d1:	8b 40 28             	mov    0x28(%eax),%eax
5403d4:	80 38 00             	cmpb   $0x0,(%eax)
5403d7:	0f 85 8f 09 00 00    	jne    0x540d6c
5403dd:	8d 55 e6             	lea    -0x1a(%ebp),%edx
5403e0:	b9 01 00 00 00       	mov    $0x1,%ecx
5403e5:	8b c6                	mov    %esi,%eax
5403e7:	8b 18                	mov    (%eax),%ebx
5403e9:	ff 53 08             	call   *0x8(%ebx)
5403ec:	8b c6                	mov    %esi,%eax
5403ee:	e8 c5 e2 ed ff       	call   0x41e6b8
5403f3:	3b 55 b4             	cmp    -0x4c(%ebp),%edx
5403f6:	75 07                	jne    0x5403ff
5403f8:	3b 45 b0             	cmp    -0x50(%ebp),%eax
5403fb:	72 08                	jb     0x540405
5403fd:	eb 02                	jmp    0x540401
5403ff:	7c 04                	jl     0x540405
540401:	c6 45 e6 3b          	movb   $0x3b,-0x1a(%ebp)
540405:	8a 45 e6             	mov    -0x1a(%ebp),%al
540408:	2c 21                	sub    $0x21,%al
54040a:	0f 84 13 08 00 00    	je     0x540c23
540410:	2c 0b                	sub    $0xb,%al
540412:	74 0a                	je     0x54041e
540414:	2c 0f                	sub    $0xf,%al
540416:	0f 84 50 09 00 00    	je     0x540d6c
54041c:	eb b0                	jmp    0x5403ce
54041e:	8d 55 eb             	lea    -0x15(%ebp),%edx
540421:	b9 09 00 00 00       	mov    $0x9,%ecx
540426:	8b c6                	mov    %esi,%eax
540428:	8b 18                	mov    (%eax),%ebx
54042a:	ff 53 08             	call   *0x8(%ebx)
54042d:	8a 45 f3             	mov    -0xd(%ebp),%al
540430:	8b d0                	mov    %eax,%edx
540432:	80 e2 07             	and    $0x7,%dl
540435:	81 e2 ff 00 00 00    	and    $0xff,%edx
54043b:	89 55 c0             	mov    %edx,-0x40(%ebp)
54043e:	a8 40                	test   $0x40,%al
540440:	0f 95 45 bf          	setne  -0x41(%ebp)
540444:	a8 80                	test   $0x80,%al
540446:	0f 95 c3             	setne  %bl
540449:	84 db                	test   %bl,%bl
54044b:	74 1a                	je     0x540467
54044d:	8b 4d c0             	mov    -0x40(%ebp),%ecx
540450:	b8 02 00 00 00       	mov    $0x2,%eax
540455:	d3 e0                	shl    %cl,%eax
540457:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
54045a:	8d 95 9b f9 ff ff    	lea    -0x665(%ebp),%edx
540460:	8b c6                	mov    %esi,%eax
540462:	8b 38                	mov    (%eax),%edi
540464:	ff 57 08             	call   *0x8(%edi)
540467:	8b 45 f8             	mov    -0x8(%ebp),%eax
54046a:	8b 00                	mov    (%eax),%eax
54046c:	3b 45 f4             	cmp    -0xc(%ebp),%eax
54046f:	0f 85 5b 07 00 00    	jne    0x540bd0
540475:	8b 45 14             	mov    0x14(%ebp),%eax
540478:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
54047d:	74 13                	je     0x540492
54047f:	8b 7d 14             	mov    0x14(%ebp),%edi
540482:	8b 55 14             	mov    0x14(%ebp),%edx
540485:	8b 52 08             	mov    0x8(%edx),%edx
540488:	b9 1e 00 00 00       	mov    $0x1e,%ecx
54048d:	8b 47 04             	mov    0x4(%edi),%eax
540490:	ff 17                	call   *(%edi)
540492:	8b 45 14             	mov    0x14(%ebp),%eax
540495:	8b 40 28             	mov    0x28(%eax),%eax
540498:	80 38 00             	cmpb   $0x0,(%eax)
54049b:	0f 85 cb 08 00 00    	jne    0x540d6c
5404a1:	84 db                	test   %bl,%bl
5404a3:	74 56                	je     0x5404fb
5404a5:	8b 4d c0             	mov    -0x40(%ebp),%ecx
5404a8:	b8 02 00 00 00       	mov    $0x2,%eax
5404ad:	d3 e0                	shl    %cl,%eax
5404af:	48                   	dec    %eax
5404b0:	85 c0                	test   %eax,%eax
5404b2:	7c 1c                	jl     0x5404d0
5404b4:	40                   	inc    %eax
5404b5:	89 45 ac             	mov    %eax,-0x54(%ebp)
5404b8:	8d bd 9d f9 ff ff    	lea    -0x663(%ebp),%edi
5404be:	8d 57 fe             	lea    -0x2(%edi),%edx
5404c1:	8b c7                	mov    %edi,%eax
5404c3:	e8 b4 8f 06 00       	call   0x5a947c
5404c8:	83 c7 03             	add    $0x3,%edi
5404cb:	ff 4d ac             	decl   -0x54(%ebp)
5404ce:	75 ee                	jne    0x5404be
5404d0:	8b 45 18             	mov    0x18(%ebp),%eax
5404d3:	8b 00                	mov    (%eax),%eax
5404d5:	33 d2                	xor    %edx,%edx
5404d7:	8a 55 ea             	mov    -0x16(%ebp),%dl
5404da:	8d 14 52             	lea    (%edx,%edx,2),%edx
5404dd:	66 8b 8c 15 9b f9 ff 	mov    -0x665(%ebp,%edx,1),%cx
5404e4:	ff
5404e5:	66 89 88 95 00 00 00 	mov    %cx,0x95(%eax)
5404ec:	8a 8c 15 9d f9 ff ff 	mov    -0x663(%ebp,%edx,1),%cl
5404f3:	88 88 97 00 00 00    	mov    %cl,0x97(%eax)
5404f9:	eb 29                	jmp    0x540524
5404fb:	8b 45 18             	mov    0x18(%ebp),%eax
5404fe:	8b 00                	mov    (%eax),%eax
540500:	33 d2                	xor    %edx,%edx
540502:	8a 55 ea             	mov    -0x16(%ebp),%dl
540505:	8d 14 52             	lea    (%edx,%edx,2),%edx
540508:	66 8b 8c 15 9b fc ff 	mov    -0x365(%ebp,%edx,1),%cx
54050f:	ff
540510:	66 89 88 95 00 00 00 	mov    %cx,0x95(%eax)
540517:	8a 8c 15 9d fc ff ff 	mov    -0x363(%ebp,%edx,1),%cl
54051e:	88 88 97 00 00 00    	mov    %cl,0x97(%eax)
540524:	0f b7 45 eb          	movzwl -0x15(%ebp),%eax
540528:	8b 55 18             	mov    0x18(%ebp),%edx
54052b:	8b 12                	mov    (%edx),%edx
54052d:	89 82 88 00 00 00    	mov    %eax,0x88(%edx)
540533:	0f b7 45 ed          	movzwl -0x13(%ebp),%eax
540537:	8b 55 18             	mov    0x18(%ebp),%edx
54053a:	8b 12                	mov    (%edx),%edx
54053c:	89 82 8c 00 00 00    	mov    %eax,0x8c(%edx)
540542:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
540546:	8b 55 18             	mov    0x18(%ebp),%edx
540549:	8b 12                	mov    (%edx),%edx
54054b:	89 42 14             	mov    %eax,0x14(%edx)
54054e:	0f b7 45 f1          	movzwl -0xf(%ebp),%eax
540552:	8b 55 18             	mov    0x18(%ebp),%edx
540555:	8b 12                	mov    (%edx),%edx
540557:	89 42 18             	mov    %eax,0x18(%edx)
54055a:	0f b7 45 e8          	movzwl -0x18(%ebp),%eax
54055e:	8b 55 18             	mov    0x18(%ebp),%edx
540561:	8b 12                	mov    (%edx),%edx
540563:	89 82 90 00 00 00    	mov    %eax,0x90(%edx)
540569:	f6 45 e7 01          	testb  $0x1,-0x19(%ebp)
54056d:	0f 95 c0             	setne  %al
540570:	8b 55 18             	mov    0x18(%ebp),%edx
540573:	8b 12                	mov    (%edx),%edx
540575:	88 82 94 00 00 00    	mov    %al,0x94(%edx)
54057b:	8b 45 18             	mov    0x18(%ebp),%eax
54057e:	8b 00                	mov    (%eax),%eax
540580:	8a 55 bf             	mov    -0x41(%ebp),%dl
540583:	88 90 98 00 00 00    	mov    %dl,0x98(%eax)
540589:	8a 45 e7             	mov    -0x19(%ebp),%al
54058c:	24 1c                	and    $0x1c,%al
54058e:	25 ff 00 00 00       	and    $0xff,%eax
540593:	c1 e8 02             	shr    $0x2,%eax
540596:	8b 55 18             	mov    0x18(%ebp),%edx
540599:	8b 12                	mov    (%edx),%edx
54059b:	88 82 b0 00 00 00    	mov    %al,0xb0(%edx)
5405a1:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
5405a5:	74 55                	je     0x5405fc
5405a7:	8d 55 e6             	lea    -0x1a(%ebp),%edx
5405aa:	b9 01 00 00 00       	mov    $0x1,%ecx
5405af:	8b c6                	mov    %esi,%eax
5405b1:	8b 38                	mov    (%eax),%edi
5405b3:	ff 57 08             	call   *0x8(%edi)
5405b6:	8d 55 e6             	lea    -0x1a(%ebp),%edx
5405b9:	b9 01 00 00 00       	mov    $0x1,%ecx
5405be:	8b c6                	mov    %esi,%eax
5405c0:	8b 38                	mov    (%eax),%edi
5405c2:	ff 57 08             	call   *0x8(%edi)
5405c5:	33 d2                	xor    %edx,%edx
5405c7:	8a 55 e6             	mov    -0x1a(%ebp),%dl
5405ca:	66 b9 01 00          	mov    $0x1,%cx
5405ce:	8b c6                	mov    %esi,%eax
5405d0:	8b 38                	mov    (%eax),%edi
5405d2:	ff 57 10             	call   *0x10(%edi)
5405d5:	80 7d e6 00          	cmpb   $0x0,-0x1a(%ebp)
5405d9:	0f 84 eb 00 00 00    	je     0x5406ca
5405df:	8b c6                	mov    %esi,%eax
5405e1:	e8 d2 e0 ed ff       	call   0x41e6b8
5405e6:	3b 55 b4             	cmp    -0x4c(%ebp),%edx
5405e9:	75 0a                	jne    0x5405f5
5405eb:	3b 45 b0             	cmp    -0x50(%ebp),%eax
5405ee:	72 c6                	jb     0x5405b6
5405f0:	e9 d5 00 00 00       	jmp    0x5406ca
5405f5:	7c bf                	jl     0x5405b6
5405f7:	e9 ce 00 00 00       	jmp    0x5406ca
5405fc:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
540600:	0f b7 55 f1          	movzwl -0xf(%ebp),%edx
540604:	f7 ea                	imul   %edx
540606:	e8 a1 21 ec ff       	call   0x4027ac
54060b:	89 45 e0             	mov    %eax,-0x20(%ebp)
54060e:	8b c6                	mov    %esi,%eax
540610:	e8 a3 e0 ed ff       	call   0x41e6b8
540615:	89 45 d8             	mov    %eax,-0x28(%ebp)
540618:	89 55 dc             	mov    %edx,-0x24(%ebp)
54061b:	8b 45 18             	mov    0x18(%ebp),%eax
54061e:	8b 00                	mov    (%eax),%eax
540620:	83 b8 b4 00 00 00 00 	cmpl   $0x0,0xb4(%eax)
540627:	74 1f                	je     0x540648
540629:	8a 45 bf             	mov    -0x41(%ebp),%al
54062c:	50                   	push   %eax
54062d:	8b 45 e0             	mov    -0x20(%ebp),%eax
540630:	50                   	push   %eax
540631:	8b 7d 18             	mov    0x18(%ebp),%edi
540634:	8b 3f                	mov    (%edi),%edi
540636:	0f b7 4d ef          	movzwl -0x11(%ebp),%ecx
54063a:	0f b7 55 f1          	movzwl -0xf(%ebp),%edx
54063e:	8b c6                	mov    %esi,%eax
540640:	ff 97 b4 00 00 00    	call   *0xb4(%edi)
540646:	eb 26                	jmp    0x54066e
540648:	a1 7c 71 6a 00       	mov    0x6a717c,%eax
54064d:	83 38 00             	cmpl   $0x0,(%eax)
540650:	74 1c                	je     0x54066e
540652:	8a 45 bf             	mov    -0x41(%ebp),%al
540655:	50                   	push   %eax
540656:	8b 45 e0             	mov    -0x20(%ebp),%eax
540659:	50                   	push   %eax
54065a:	8b 3d 7c 71 6a 00    	mov    0x6a717c,%edi