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)
53a681:	89 7d 98             	mov    %edi,-0x68(%ebp)
53a684:	c7 45 9c e0 68 50 00 	movl   $0x5068e0,-0x64(%ebp)
53a68b:	85 c0                	test   %eax,%eax
53a68d:	74 13                	je     0x53a6a2
53a68f:	50                   	push   %eax
53a690:	8d 45 98             	lea    -0x68(%ebp),%eax
53a693:	50                   	push   %eax
53a694:	e8 17 59 02 00       	call   0x55ffb0
53a699:	8b 8d 18 ff ff ff    	mov    -0xe8(%ebp),%ecx
53a69f:	83 c4 08             	add    $0x8,%esp
53a6a2:	8b 46 24             	mov    0x24(%esi),%eax
53a6a5:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
53a6ab:	8d 85 50 ff ff ff    	lea    -0xb0(%ebp),%eax
53a6b1:	c7 45 9c 30 30 4f 00 	movl   $0x4f3030,-0x64(%ebp)
53a6b8:	89 45 b0             	mov    %eax,-0x50(%ebp)
53a6bb:	8d 45 98             	lea    -0x68(%ebp),%eax
53a6be:	51                   	push   %ecx
53a6bf:	50                   	push   %eax
53a6c0:	c7 45 a0 b0 32 4f 00 	movl   $0x4f32b0,-0x60(%ebp)
53a6c7:	c7 45 a4 c0 32 4f 00 	movl   $0x4f32c0,-0x5c(%ebp)
53a6ce:	c7 45 a8 00 00 00 00 	movl   $0x0,-0x58(%ebp)
53a6d5:	c7 45 98 00 00 00 00 	movl   $0x0,-0x68(%ebp)
53a6dc:	e8 cf 58 02 00       	call   0x55ffb0
53a6e1:	83 c4 08             	add    $0x8,%esp
53a6e4:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
53a6e8:	8b 45 d4             	mov    -0x2c(%ebp),%eax
53a6eb:	8b 55 e0             	mov    -0x20(%ebp),%edx
53a6ee:	89 45 d8             	mov    %eax,-0x28(%ebp)
53a6f1:	75 30                	jne    0x53a723
53a6f3:	83 7e 2c 00          	cmpl   $0x0,0x2c(%esi)
53a6f7:	75 2a                	jne    0x53a723
53a6f9:	83 fa 01             	cmp    $0x1,%edx
53a6fc:	75 25                	jne    0x53a723
53a6fe:	8d 85 e4 fe ff ff    	lea    -0x11c(%ebp),%eax
53a704:	50                   	push   %eax
53a705:	8b 45 dc             	mov    -0x24(%ebp),%eax
53a708:	ff 30                	push   (%eax)
53a70a:	ff b5 3c ff ff ff    	push   -0xc4(%ebp)
53a710:	e8 2b f0 fc ff       	call   0x509740
53a715:	8b 55 e0             	mov    -0x20(%ebp),%edx
53a718:	83 c4 0c             	add    $0xc,%esp
53a71b:	88 85 ff fe ff ff    	mov    %al,-0x101(%ebp)
53a721:	eb 07                	jmp    0x53a72a
53a723:	c6 85 ff fe ff ff 00 	movb   $0x0,-0x101(%ebp)
53a72a:	85 d2                	test   %edx,%edx
53a72c:	0f 8e b7 00 00 00    	jle    0x53a7e9
53a732:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
53a738:	33 f6                	xor    %esi,%esi
53a73a:	33 db                	xor    %ebx,%ebx
53a73c:	0f 1f 40 00          	nopl   0x0(%eax)
53a740:	8b 45 dc             	mov    -0x24(%ebp),%eax
53a743:	81 c9 00 00 02 00    	or     $0x20000,%ecx
53a749:	8b 04 06             	mov    (%esi,%eax,1),%eax
53a74c:	89 8d 68 ff ff ff    	mov    %ecx,-0x98(%ebp)
53a752:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
53a758:	ff 70 14             	push   0x14(%eax)
53a75b:	8d 85 50 ff ff ff    	lea    -0xb0(%ebp),%eax
53a761:	50                   	push   %eax
53a762:	e8 09 90 fe ff       	call   0x523770
53a767:	8b 85 40 ff ff ff    	mov    -0xc0(%ebp),%eax
53a76d:	83 c4 08             	add    $0x8,%esp
53a770:	f7 40 04 00 00 00 01 	testl  $0x1000000,0x4(%eax)
53a777:	74 43                	je     0x53a7bc
53a779:	8b 40 2c             	mov    0x2c(%eax),%eax
53a77c:	8d 8d 50 ff ff ff    	lea    -0xb0(%ebp),%ecx
53a782:	c7 45 9c 30 30 4f 00 	movl   $0x4f3030,-0x64(%ebp)
53a789:	c7 45 a0 b0 32 4f 00 	movl   $0x4f32b0,-0x60(%ebp)
53a790:	c7 45 a4 c0 32 4f 00 	movl   $0x4f32c0,-0x5c(%ebp)
53a797:	8b 40 28             	mov    0x28(%eax),%eax
53a79a:	c7 45 a8 00 00 00 00 	movl   $0x0,-0x58(%ebp)
53a7a1:	89 4d b0             	mov    %ecx,-0x50(%ebp)
53a7a4:	c7 45 98 00 00 00 00 	movl   $0x0,-0x68(%ebp)
53a7ab:	85 c0                	test   %eax,%eax
53a7ad:	74 0d                	je     0x53a7bc
53a7af:	50                   	push   %eax
53a7b0:	8d 45 98             	lea    -0x68(%ebp),%eax
53a7b3:	50                   	push   %eax
53a7b4:	e8 f7 57 02 00       	call   0x55ffb0
53a7b9:	83 c4 08             	add    $0x8,%esp
53a7bc:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
53a7c2:	43                   	inc    %ebx
53a7c3:	8b 55 e0             	mov    -0x20(%ebp),%edx
53a7c6:	81 e1 ff ff fd ff    	and    $0xfffdffff,%ecx
53a7cc:	83 c6 10             	add    $0x10,%esi
53a7cf:	89 8d 68 ff ff ff    	mov    %ecx,-0x98(%ebp)
53a7d5:	3b da                	cmp    %edx,%ebx
53a7d7:	0f 8c 63 ff ff ff    	jl     0x53a740
53a7dd:	8b 9d 10 ff ff ff    	mov    -0xf0(%ebp),%ebx
53a7e3:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a7e9:	8b 47 2c             	mov    0x2c(%edi),%eax
53a7ec:	89 45 c8             	mov    %eax,-0x38(%ebp)
53a7ef:	8b 85 3c ff ff ff    	mov    -0xc4(%ebp),%eax
53a7f5:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
53a7f9:	0f 85 f5 15 00 00    	jne    0x53bdf4
53a7ff:	8b 8d 30 ff ff ff    	mov    -0xd0(%ebp),%ecx
53a805:	85 c9                	test   %ecx,%ecx
53a807:	0f 84 ff 0e 00 00    	je     0x53b70c
53a80d:	ff 75 d4             	push   -0x2c(%ebp)
53a810:	8b 47 28             	mov    0x28(%edi),%eax
53a813:	6a 00                	push   $0x0
53a815:	89 45 b8             	mov    %eax,-0x48(%ebp)
53a818:	40                   	inc    %eax
53a819:	51                   	push   %ecx
53a81a:	57                   	push   %edi
53a81b:	89 47 28             	mov    %eax,0x28(%edi)
53a81e:	e8 4d 54 ff ff       	call   0x52fc70
53a823:	8b 4b 6c             	mov    0x6c(%ebx),%ecx
53a826:	83 c4 10             	add    $0x10,%esp
53a829:	8b 55 c0             	mov    -0x40(%ebp),%edx
53a82c:	89 85 ec fe ff ff    	mov    %eax,-0x114(%ebp)
53a832:	8b 45 b8             	mov    -0x48(%ebp),%eax
53a835:	89 85 34 ff ff ff    	mov    %eax,-0xcc(%ebp)
53a83b:	89 8d 40 ff ff ff    	mov    %ecx,-0xc0(%ebp)
53a841:	39 4b 70             	cmp    %ecx,0x70(%ebx)
53a844:	7f 19                	jg     0x53a85f
53a846:	6a 00                	push   $0x0
53a848:	52                   	push   %edx
53a849:	50                   	push   %eax
53a84a:	6a 6f                	push   $0x6f
53a84c:	53                   	push   %ebx
53a84d:	e8 ae bc fc ff       	call   0x506500
53a852:	8b d0                	mov    %eax,%edx
53a854:	83 c4 14             	add    $0x14,%esp
53a857:	89 95 40 ff ff ff    	mov    %edx,-0xc0(%ebp)
53a85d:	eb 3d                	jmp    0x53a89c
53a85f:	8b b5 34 ff ff ff    	mov    -0xcc(%ebp),%esi
53a865:	8d 41 01             	lea    0x1(%ecx),%eax
53a868:	89 43 6c             	mov    %eax,0x6c(%ebx)
53a86b:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
53a86e:	8b 43 68             	mov    0x68(%ebx),%eax
53a871:	89 74 88 04          	mov    %esi,0x4(%eax,%ecx,4)
53a875:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a87b:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
53a87f:	8b 95 40 ff ff ff    	mov    -0xc0(%ebp),%edx
53a885:	c7 04 88 6f 00 00 00 	movl   $0x6f,(%eax,%ecx,4)
53a88c:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
53a893:	00
53a894:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
53a89b:	00
53a89c:	8b 0b                	mov    (%ebx),%ecx
53a89e:	8b c2                	mov    %edx,%eax
53a8a0:	80 79 51 00          	cmpb   $0x0,0x51(%ecx)
53a8a4:	74 14                	je     0x53a8ba
53a8a6:	8b 95 ec fe ff ff    	mov    -0x114(%ebp),%edx
53a8ac:	52                   	push   %edx
53a8ad:	6a f7                	push   $0xfffffff7
53a8af:	51                   	push   %ecx
53a8b0:	e8 fb 93 fc ff       	call   0x503cb0
53a8b5:	83 c4 0c             	add    $0xc,%esp
53a8b8:	eb 38                	jmp    0x53a8f2
53a8ba:	85 d2                	test   %edx,%edx
53a8bc:	79 04                	jns    0x53a8c2
53a8be:	8b 43 6c             	mov    0x6c(%ebx),%eax
53a8c1:	48                   	dec    %eax
53a8c2:	8b 95 ec fe ff ff    	mov    -0x114(%ebp),%edx
53a8c8:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
53a8cb:	8b 43 68             	mov    0x68(%ebx),%eax
53a8ce:	80 7c 88 01 00       	cmpb   $0x0,0x1(%eax,%ecx,4)
53a8d3:	8d 04 88             	lea    (%eax,%ecx,4),%eax
53a8d6:	74 0f                	je     0x53a8e7
53a8d8:	6a f7                	push   $0xfffffff7
53a8da:	52                   	push   %edx
53a8db:	50                   	push   %eax
53a8dc:	53                   	push   %ebx
53a8dd:	e8 5e f3 01 00       	call   0x559c40
53a8e2:	83 c4 10             	add    $0x10,%esp
53a8e5:	eb 0b                	jmp    0x53a8f2
53a8e7:	85 d2                	test   %edx,%edx
53a8e9:	74 07                	je     0x53a8f2
53a8eb:	89 50 10             	mov    %edx,0x10(%eax)
53a8ee:	c6 40 01 f7          	movb   $0xf7,0x1(%eax)
53a8f2:	8b 47 2c             	mov    0x2c(%edi),%eax
53a8f5:	8b 95 30 ff ff ff    	mov    -0xd0(%ebp),%edx
53a8fb:	40                   	inc    %eax
53a8fc:	89 85 24 ff ff ff    	mov    %eax,-0xdc(%ebp)