53a1cd:	e8 9e 5a ff ff       	call   0x52fc70
53a1d2:	8b 57 28             	mov    0x28(%edi),%edx
53a1d5:	6a f7                	push   $0xfffffff7
53a1d7:	50                   	push   %eax
53a1d8:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
53a1de:	8d 4a 01             	lea    0x1(%edx),%ecx
53a1e1:	89 95 78 ff ff ff    	mov    %edx,-0x88(%ebp)
53a1e7:	89 4f 28             	mov    %ecx,0x28(%edi)
53a1ea:	8b 8d 4c ff ff ff    	mov    -0xb4(%ebp),%ecx
53a1f0:	8b 00                	mov    (%eax),%eax
53a1f2:	6a 00                	push   $0x0
53a1f4:	8b 09                	mov    (%ecx),%ecx
53a1f6:	41                   	inc    %ecx
53a1f7:	03 c1                	add    %ecx,%eax
53a1f9:	50                   	push   %eax
53a1fa:	52                   	push   %edx
53a1fb:	6a 64                	push   $0x64
53a1fd:	53                   	push   %ebx
53a1fe:	e8 8d 79 00 00       	call   0x541b90
53a203:	83 c4 2c             	add    $0x2c,%esp
53a206:	89 45 84             	mov    %eax,-0x7c(%ebp)
53a209:	eb 07                	jmp    0x53a212
53a20b:	c7 45 84 ff ff ff ff 	movl   $0xffffffff,-0x7c(%ebp)
53a212:	8b 8d f8 fe ff ff    	mov    -0x108(%ebp),%ecx
53a218:	80 39 0c             	cmpb   $0xc,(%ecx)
53a21b:	75 16                	jne    0x53a233
53a21d:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
53a223:	ff 30                	push   (%eax)
53a225:	ff 71 04             	push   0x4(%ecx)
53a228:	6a 64                	push   $0x64
53a22a:	53                   	push   %ebx
53a22b:	e8 b0 78 00 00       	call   0x541ae0
53a230:	83 c4 10             	add    $0x10,%esp
53a233:	ff 4f 38             	decl   0x38(%edi)
53a236:	f7 46 04 00 40 00 00 	testl  $0x4000,0x4(%esi)
53a23d:	8b 47 38             	mov    0x38(%edi),%eax
53a240:	89 85 e0 fe ff ff    	mov    %eax,-0x120(%ebp)
53a246:	75 09                	jne    0x53a251
53a248:	b9 40 01 00 00       	mov    $0x140,%ecx
53a24d:	66 89 4e 02          	mov    %cx,0x2(%esi)
53a251:	50                   	push   %eax
53a252:	56                   	push   %esi
53a253:	57                   	push   %edi
53a254:	e8 97 10 fc ff       	call   0x4fb2f0
53a259:	83 c4 0c             	add    $0xc,%esp
53a25c:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
53a260:	75 17                	jne    0x53a279
53a262:	8b 45 84             	mov    -0x7c(%ebp),%eax
53a265:	85 c0                	test   %eax,%eax
53a267:	78 10                	js     0x53a279
53a269:	6a 6f                	push   $0x6f
53a26b:	50                   	push   %eax
53a26c:	53                   	push   %ebx
53a26d:	e8 7e 7c 00 00       	call   0x541ef0
53a272:	83 c4 0c             	add    $0xc,%esp
53a275:	80 4d 90 01          	orb    $0x1,-0x70(%ebp)
53a279:	f6 46 04 01          	testb  $0x1,0x4(%esi)
53a27d:	74 5b                	je     0x53a2da
53a27f:	8b 77 28             	mov    0x28(%edi),%esi
53a282:	6a f7                	push   $0xfffffff7
53a284:	6a 00                	push   $0x0
53a286:	6a 00                	push   $0x0
53a288:	8d 46 01             	lea    0x1(%esi),%eax
53a28b:	89 75 f4             	mov    %esi,-0xc(%ebp)
53a28e:	89 47 28             	mov    %eax,0x28(%edi)
53a291:	8b 85 38 ff ff ff    	mov    -0xc8(%ebp),%eax
53a297:	ff 70 1c             	push   0x1c(%eax)
53a29a:	57                   	push   %edi
53a29b:	e8 d0 59 ff ff       	call   0x52fc70
53a2a0:	83 c4 10             	add    $0x10,%esp
53a2a3:	50                   	push   %eax
53a2a4:	6a 00                	push   $0x0
53a2a6:	6a 00                	push   $0x0
53a2a8:	56                   	push   %esi
53a2a9:	6a 64                	push   $0x64
53a2ab:	53                   	push   %ebx
53a2ac:	e8 df 78 00 00       	call   0x541b90
53a2b1:	89 45 f8             	mov    %eax,-0x8(%ebp)
53a2b4:	83 c4 1c             	add    $0x1c,%esp
53a2b7:	8b 43 6c             	mov    0x6c(%ebx),%eax
53a2ba:	85 c0                	test   %eax,%eax
53a2bc:	7e 10                	jle    0x53a2ce
53a2be:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
53a2c1:	ba 08 00 00 00       	mov    $0x8,%edx
53a2c6:	8b 43 68             	mov    0x68(%ebx),%eax
53a2c9:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
53a2ce:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a2d4:	c6 45 f1 03          	movb   $0x3,-0xf(%ebp)
53a2d8:	eb 04                	jmp    0x53a2de
53a2da:	c6 45 f1 00          	movb   $0x0,-0xf(%ebp)
53a2de:	83 bd 34 ff ff ff 00 	cmpl   $0x0,-0xcc(%ebp)
53a2e5:	8b 95 30 ff ff ff    	mov    -0xd0(%ebp),%edx
53a2eb:	0f 85 f9 01 00 00    	jne    0x53a4ea
53a2f1:	85 d2                	test   %edx,%edx
53a2f3:	0f 85 f1 01 00 00    	jne    0x53a4ea
53a2f9:	33 c9                	xor    %ecx,%ecx
53a2fb:	b8 00 01 00 00       	mov    $0x100,%eax
53a300:	38 8d 1f ff ff ff    	cmp    %cl,-0xe1(%ebp)
53a306:	ba 00 40 00 00       	mov    $0x4000,%edx
53a30b:	0f 45 c8             	cmovne %eax,%ecx
53a30e:	66 8b 46 04          	mov    0x4(%esi),%ax
53a312:	66 23 c2             	and    %dx,%ax
53a315:	66 0b c8             	or     %ax,%cx
53a318:	0f b7 c1             	movzwl %cx,%eax
53a31b:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
53a321:	8b 46 44             	mov    0x44(%esi),%eax
53a324:	89 85 34 ff ff ff    	mov    %eax,-0xcc(%ebp)
53a32a:	85 c0                	test   %eax,%eax
53a32c:	74 0a                	je     0x53a338
53a32e:	56                   	push   %esi
53a32f:	57                   	push   %edi
53a330:	e8 1b 9f 01 00       	call   0x554250
53a335:	83 c4 08             	add    $0x8,%esp
53a338:	0f bf 46 02          	movswl 0x2(%esi),%eax
53a33c:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
53a342:	50                   	push   %eax
53a343:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
53a349:	ff 76 1c             	push   0x1c(%esi)
53a34c:	ff b5 4c ff ff ff    	push   -0xb4(%ebp)
53a352:	ff b5 28 ff ff ff    	push   -0xd8(%ebp)
53a358:	51                   	push   %ecx
53a359:	57                   	push   %edi
53a35a:	e8 21 5c 01 00       	call   0x54ff80
53a35f:	8b c8                	mov    %eax,%ecx
53a361:	83 c4 1c             	add    $0x1c,%esp
53a364:	89 8d 24 ff ff ff    	mov    %ecx,-0xdc(%ebp)
53a36a:	85 c9                	test   %ecx,%ecx
53a36c:	0f 84 6f fa ff ff    	je     0x539de1
53a372:	0f b7 41 34          	movzwl 0x34(%ecx),%eax
53a376:	66 3b 46 02          	cmp    0x2(%esi),%ax
53a37a:	7d 04                	jge    0x53a380
53a37c:	66 89 46 02          	mov    %ax,0x2(%esi)
53a380:	80 bd 1f ff ff ff 00 	cmpb   $0x0,-0xe1(%ebp)
53a387:	74 18                	je     0x53a3a1
53a389:	8a 49 2f             	mov    0x2f(%ecx),%cl
53a38c:	0f b6 55 f1          	movzbl -0xf(%ebp),%edx
53a390:	84 c9                	test   %cl,%cl
53a392:	0f b6 c1             	movzbl %cl,%eax
53a395:	8b 8d 24 ff ff ff    	mov    -0xdc(%ebp),%ecx
53a39b:	0f 45 d0             	cmovne %eax,%edx
53a39e:	88 55 f1             	mov    %dl,-0xf(%ebp)
53a3a1:	8b 95 4c ff ff ff    	mov    -0xb4(%ebp),%edx
53a3a7:	85 d2                	test   %edx,%edx
53a3a9:	74 39                	je     0x53a3e4
53a3ab:	f6 41 30 04          	testb  $0x4,0x30(%ecx)
53a3af:	0f be 41 2d          	movsbl 0x2d(%ecx),%eax
53a3b3:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
53a3b9:	75 05                	jne    0x53a3c0
53a3bb:	8b 41 1c             	mov    0x1c(%ecx),%eax
53a3be:	eb 0e                	jmp    0x53a3ce
53a3c0:	0f b6 41 2c          	movzbl 0x2c(%ecx),%eax
53a3c4:	6b c0 58             	imul   $0x58,%eax,%eax
53a3c7:	8b 84 08 a8 02 00 00 	mov    0x2a8(%eax,%ecx,1),%eax
53a3ce:	89 45 8c             	mov    %eax,-0x74(%ebp)
53a3d1:	33 c9                	xor    %ecx,%ecx
53a3d3:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
53a3d9:	3b 02                	cmp    (%edx),%eax
53a3db:	0f 44 d1             	cmove  %ecx,%edx
53a3de:	89 95 70 ff ff ff    	mov    %edx,-0x90(%ebp)
53a3e4:	8b 45 84             	mov    -0x7c(%ebp),%eax
53a3e7:	85 c0                	test   %eax,%eax
53a3e9:	78 0e                	js     0x53a3f9
53a3eb:	85 d2                	test   %edx,%edx
53a3ed:	75 0a                	jne    0x53a3f9
53a3ef:	50                   	push   %eax
53a3f0:	53                   	push   %ebx
53a3f1:	e8 5a 7c 00 00       	call   0x542050
53a3f6:	83 c4 08             	add    $0x8,%esp
53a3f9:	83 bd 34 ff ff ff 00 	cmpl   $0x0,-0xcc(%ebp)
53a400:	0f 84 ab 00 00 00    	je     0x53a4b1
53a406:	8b 5f 38             	mov    0x38(%edi),%ebx
53a409:	ff 47 2c             	incl   0x2c(%edi)
53a40c:	8d 73 ff             	lea    -0x1(%ebx),%esi
53a40f:	83 eb 02             	sub    $0x2,%ebx
53a412:	56                   	push   %esi
53a413:	8d 43 ff             	lea    -0x1(%ebx),%eax
53a416:	89 47 38             	mov    %eax,0x38(%edi)
53a419:	8b 7f 2c             	mov    0x2c(%edi),%edi
53a41c:	57                   	push   %edi
53a41d:	ff b5 24 ff ff ff    	push   -0xdc(%ebp)
53a423:	ff b5 38 ff ff ff    	push   -0xc8(%ebp)
53a429:	ff b5 14 ff ff ff    	push   -0xec(%ebp)
53a42f:	e8 5c a3 01 00       	call   0x554790
53a434:	8d 43 ff             	lea    -0x1(%ebx),%eax
53a437:	50                   	push   %eax
53a438:	6a 00                	push   $0x0
53a43a:	6a 0b                	push   $0xb
53a43c:	ff b5 10 ff ff ff    	push   -0xf0(%ebp)
53a442:	e8 99 76 00 00       	call   0x541ae0
53a447:	56                   	push   %esi
53a448:	ff b5 10 ff ff ff    	push   -0xf0(%ebp)
53a44e:	e8 7d 28 01 00       	call   0x54ccd0
53a453:	8d 73 ff             	lea    -0x1(%ebx),%esi
53a456:	c7 45 8c 00 00 00 00 	movl   $0x0,-0x74(%ebp)
53a45d:	56                   	push   %esi
53a45e:	53                   	push   %ebx
53a45f:	ff b5 f8 fe ff ff    	push   -0x108(%ebp)
53a465:	8d 45 f0             	lea    -0x10(%ebp),%eax
53a468:	50                   	push   %eax
53a469:	8d 85 70 ff ff ff    	lea    -0x90(%ebp),%eax
53a46f:	50                   	push   %eax
53a470:	6a ff                	push   $0xffffffff
53a472:	ff b5 38 ff ff ff    	push   -0xc8(%ebp)
53a478:	ff b5 14 ff ff ff    	push   -0xec(%ebp)
53a47e:	e8 bd ba fd ff       	call   0x515f40
53a483:	83 c4 4c             	add    $0x4c,%esp
53a486:	53                   	push   %ebx
53a487:	8b 9d 10 ff ff ff    	mov    -0xf0(%ebp),%ebx
53a48d:	53                   	push   %ebx
53a48e:	e8 3d 28 01 00       	call   0x54ccd0
53a493:	57                   	push   %edi
53a494:	6a 41                	push   $0x41
53a496:	53                   	push   %ebx
53a497:	e8 e4 75 00 00       	call   0x541a80
53a49c:	56                   	push   %esi
53a49d:	53                   	push   %ebx
53a49e:	e8 2d 28 01 00       	call   0x54ccd0
53a4a3:	8b bd 14 ff ff ff    	mov    -0xec(%ebp),%edi
53a4a9:	83 c4 1c             	add    $0x1c,%esp
53a4ac:	e9 a2 18 00 00       	jmp    0x53bd53
53a4b1:	8b 85 24 ff ff ff    	mov    -0xdc(%ebp),%eax
53a4b7:	ff 70 20             	push   0x20(%eax)
53a4ba:	ff 70 1c             	push   0x1c(%eax)
53a4bd:	8d 45 f0             	lea    -0x10(%ebp),%eax
53a4c0:	ff b5 f8 fe ff ff    	push   -0x108(%ebp)
53a4c6:	50                   	push   %eax
53a4c7:	8d 85 70 ff ff ff    	lea    -0x90(%ebp),%eax
53a4cd:	50                   	push   %eax
53a4ce:	6a ff                	push   $0xffffffff
53a4d0:	56                   	push   %esi
53a4d1:	57                   	push   %edi
53a4d2:	e8 69 ba fd ff       	call   0x515f40
53a4d7:	ff b5 24 ff ff ff    	push   -0xdc(%ebp)
53a4dd:	e8 2e 89 01 00       	call   0x552e10
53a4e2:	83 c4 24             	add    $0x24,%esp
53a4e5:	e9 69 18 00 00       	jmp    0x53bd53
53a4ea:	c7 85 f4 fe ff ff 00 	movl   $0x0,-0x10c(%ebp)
53a4f1:	00 00 00
53a4f4:	c7 85 08 ff ff ff 00 	movl   $0x0,-0xf8(%ebp)
53a4fb:	00 00 00
53a4fe:	c7 85 04 ff ff ff 00 	movl   $0x0,-0xfc(%ebp)
53a505:	00 00 00
53a508:	85 d2                	test   %edx,%edx
53a50a:	0f 84 c0 00 00 00    	je     0x53a5d0
53a510:	8b 4e 1c             	mov    0x1c(%esi),%ecx
53a513:	8b 01                	mov    (%ecx),%eax
53a515:	85 c0                	test   %eax,%eax
53a517:	7e 1b                	jle    0x53a534
53a519:	83 c1 16             	add    $0x16,%ecx
53a51c:	0f 1f 40 00          	nopl   0x0(%eax)
53a520:	33 db                	xor    %ebx,%ebx
53a522:	8d 49 14             	lea    0x14(%ecx),%ecx
53a525:	48                   	dec    %eax
53a526:	66 89 59 ec          	mov    %bx,-0x14(%ecx)
53a52a:	85 c0                	test   %eax,%eax
53a52c:	7f f2                	jg     0x53a520
53a52e:	8b 9d 10 ff ff ff    	mov    -0xf0(%ebp),%ebx
53a534:	8b 02                	mov    (%edx),%eax
53a536:	85 c0                	test   %eax,%eax
53a538:	7e 1a                	jle    0x53a554
53a53a:	8d 4a 16             	lea    0x16(%edx),%ecx
53a53d:	0f 1f 00             	nopl   (%eax)
53a540:	33 ff                	xor    %edi,%edi
53a542:	8d 49 14             	lea    0x14(%ecx),%ecx
53a545:	48                   	dec    %eax
53a546:	66 89 79 ec          	mov    %di,-0x14(%ecx)
53a54a:	85 c0                	test   %eax,%eax
53a54c:	7f f2                	jg     0x53a540
53a54e:	8b bd 14 ff ff ff    	mov    -0xec(%ebp),%edi
53a554:	66 83 7e 02 42       	cmpw   $0x42,0x2(%esi)
53a559:	7e 09                	jle    0x53a564
53a55b:	b8 42 00 00 00       	mov    $0x42,%eax
53a560:	66 89 46 02          	mov    %ax,0x2(%esi)
53a564:	8b 85 4c ff ff ff    	mov    -0xb4(%ebp),%eax
53a56a:	85 c0                	test   %eax,%eax
53a56c:	74 68                	je     0x53a5d6
53a56e:	8b 0a                	mov    (%edx),%ecx
53a570:	3b 08                	cmp    (%eax),%ecx
53a572:	75 62                	jne    0x53a5d6
53a574:	33 d2                	xor    %edx,%edx
53a576:	85 c9                	test   %ecx,%ecx
53a578:	7e 2f                	jle    0x53a5a9
53a57a:	8b bd 30 ff ff ff    	mov    -0xd0(%ebp),%edi
53a580:	8b d8                	mov    %eax,%ebx
53a582:	2b df                	sub    %edi,%ebx
53a584:	8d 4f 0c             	lea    0xc(%edi),%ecx
53a587:	8a 04 0b             	mov    (%ebx,%ecx,1),%al
53a58a:	8d 49 14             	lea    0x14(%ecx),%ecx
53a58d:	24 01                	and    $0x1,%al
53a58f:	42                   	inc    %edx
53a590:	88 41 ec             	mov    %al,-0x14(%ecx)
53a593:	3b 17                	cmp    (%edi),%edx
53a595:	7c f0                	jl     0x53a587
53a597:	8b 9d 10 ff ff ff    	mov    -0xf0(%ebp),%ebx
53a59d:	8b bd 14 ff ff ff    	mov    -0xec(%ebp),%edi
53a5a3:	8b 85 4c ff ff ff    	mov    -0xb4(%ebp),%eax
53a5a9:	6a ff                	push   $0xffffffff
53a5ab:	50                   	push   %eax
53a5ac:	ff b5 30 ff ff ff    	push   -0xd0(%ebp)
53a5b2:	e8 79 d2 fe ff       	call   0x527830
53a5b7:	8b 95 30 ff ff ff    	mov    -0xd0(%ebp),%edx
53a5bd:	83 c4 0c             	add    $0xc,%esp
53a5c0:	85 c0                	test   %eax,%eax
53a5c2:	75 12                	jne    0x53a5d6
53a5c4:	c7 85 04 ff ff ff 01 	movl   $0x1,-0xfc(%ebp)
53a5cb:	00 00 00
53a5ce:	eb 06                	jmp    0x53a5d6
53a5d0:	33 c0                	xor    %eax,%eax
53a5d2:	66 89 46 02          	mov    %ax,0x2(%esi)
53a5d6:	ff 4f 38             	decl   0x38(%edi)
53a5d9:	0f 57 c0             	xorps  %xmm0,%xmm0
53a5dc:	8b 47 38             	mov    0x38(%edi),%eax
53a5df:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
53a5e5:	89 85 2c ff ff ff    	mov    %eax,-0xd4(%ebp)
53a5eb:	8d 45 b4             	lea    -0x4c(%ebp),%eax
53a5ee:	0f 11 85 50 ff ff ff 	movups %xmm0,-0xb0(%ebp)
53a5f5:	89 85 58 ff ff ff    	mov    %eax,-0xa8(%ebp)
53a5fb:	8b 47 2c             	mov    0x2c(%edi),%eax
53a5fe:	40                   	inc    %eax
53a5ff:	89 bd 50 ff ff ff    	mov    %edi,-0xb0(%ebp)
53a605:	89 8d 54 ff ff ff    	mov    %ecx,-0xac(%ebp)
53a60b:	89 45 c4             	mov    %eax,-0x3c(%ebp)
53a60e:	0f 11 85 60 ff ff ff 	movups %xmm0,-0xa0(%ebp)
53a615:	85 d2                	test   %edx,%edx
53a617:	74 07                	je     0x53a620
53a619:	8b 02                	mov    (%edx),%eax
53a61b:	89 45 c0             	mov    %eax,-0x40(%ebp)
53a61e:	eb 07                	jmp    0x53a627
53a620:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
53a627:	ff b5 20 ff ff ff    	push   -0xe0(%ebp)
53a62d:	8d 85 50 ff ff ff    	lea    -0xb0(%ebp),%eax
53a633:	89 55 cc             	mov    %edx,-0x34(%ebp)
53a636:	50                   	push   %eax
53a637:	e8 34 91 fe ff       	call   0x523770
53a63c:	ff b5 4c ff ff ff    	push   -0xb4(%ebp)
53a642:	8d 85 50 ff ff ff    	lea    -0xb0(%ebp),%eax
53a648:	50                   	push   %eax
53a649:	e8 22 91 fe ff       	call   0x523770
53a64e:	8b 8d 18 ff ff ff    	mov    -0xe8(%ebp),%ecx
53a654:	83 c4 10             	add    $0x10,%esp
53a657:	85 c9                	test   %ecx,%ecx
53a659:	0f 84 85 00 00 00    	je     0x53a6e4
53a65f:	83 bd 30 ff ff ff 00 	cmpl   $0x0,-0xd0(%ebp)
53a666:	74 43                	je     0x53a6ab
53a668:	8b 46 2c             	mov    0x2c(%esi),%eax
53a66b:	0f 57 c0             	xorps  %xmm0,%xmm0
53a66e:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
53a675:	66 0f d6 45 a8       	movq   %xmm0,-0x58(%ebp)
53a67a:	89 75 b0             	mov    %esi,-0x50(%ebp)
53a67d:	0f 11 45 98          	movups %xmm0,-0x68(%ebp)