5001b2:	f7 db                	neg    %ebx
5001b4:	e8 b7 f8 ff ff       	call   0x4ffa70
5001b9:	83 c4 14             	add    $0x14,%esp
5001bc:	85 c0                	test   %eax,%eax
5001be:	0f 85 63 04 00 00    	jne    0x500627
5001c4:	33 d2                	xor    %edx,%edx
5001c6:	85 ed                	test   %ebp,%ebp
5001c8:	0f 8e da 00 00 00    	jle    0x5002a8
5001ce:	83 fd 40             	cmp    $0x40,%ebp
5001d1:	0f 82 bb 00 00 00    	jb     0x500292
5001d7:	8d 47 ff             	lea    -0x1(%edi),%eax
5001da:	8d 74 24 4c          	lea    0x4c(%esp),%esi
5001de:	03 c5                	add    %ebp,%eax
5001e0:	3b f0                	cmp    %eax,%esi
5001e2:	8d 4c 2c 4b          	lea    0x4b(%esp,%ebp,1),%ecx
5001e6:	8b 74 24 24          	mov    0x24(%esp),%esi
5001ea:	77 08                	ja     0x5001f4
5001ec:	3b cf                	cmp    %edi,%ecx
5001ee:	0f 83 9e 00 00 00    	jae    0x500292
5001f4:	8b c5                	mov    %ebp,%eax
5001f6:	25 3f 00 00 80       	and    $0x8000003f,%eax
5001fb:	79 05                	jns    0x500202
5001fd:	48                   	dec    %eax
5001fe:	83 c8 c0             	or     $0xffffffc0,%eax
500201:	40                   	inc    %eax
500202:	8b cd                	mov    %ebp,%ecx
500204:	8d 74 24 4c          	lea    0x4c(%esp),%esi
500208:	2b f7                	sub    %edi,%esi
50020a:	8d 6c 24 5c          	lea    0x5c(%esp),%ebp
50020e:	2b c8                	sub    %eax,%ecx
500210:	89 74 24 44          	mov    %esi,0x44(%esp)
500214:	8b 74 24 24          	mov    0x24(%esp),%esi
500218:	8d 47 20             	lea    0x20(%edi),%eax
50021b:	2b ef                	sub    %edi,%ebp
50021d:	89 6c 24 18          	mov    %ebp,0x18(%esp)
500221:	8b 6c 24 44          	mov    0x44(%esp),%ebp
500225:	8b 7c 24 18          	mov    0x18(%esp),%edi
500229:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
500230:	0f 10 44 14 4c       	movups 0x4c(%esp,%edx,1),%xmm0
500235:	8d 40 40             	lea    0x40(%eax),%eax
500238:	0f 10 48 a0          	movups -0x60(%eax),%xmm1
50023c:	66 0f ef c8          	pxor   %xmm0,%xmm1
500240:	0f 11 4c 14 4c       	movups %xmm1,0x4c(%esp,%edx,1)
500245:	0f 10 44 14 5c       	movups 0x5c(%esp,%edx,1),%xmm0
50024a:	0f 10 48 b0          	movups -0x50(%eax),%xmm1
50024e:	66 0f ef c8          	pxor   %xmm0,%xmm1
500252:	0f 11 4c 14 5c       	movups %xmm1,0x5c(%esp,%edx,1)
500257:	83 c2 40             	add    $0x40,%edx
50025a:	0f 10 44 28 c0       	movups -0x40(%eax,%ebp,1),%xmm0
50025f:	0f 10 48 c0          	movups -0x40(%eax),%xmm1
500263:	66 0f ef c8          	pxor   %xmm0,%xmm1
500267:	0f 11 4c 28 c0       	movups %xmm1,-0x40(%eax,%ebp,1)
50026c:	0f 10 44 07 c0       	movups -0x40(%edi,%eax,1),%xmm0
500271:	0f 10 48 d0          	movups -0x30(%eax),%xmm1
500275:	66 0f ef c8          	pxor   %xmm0,%xmm1
500279:	0f 11 4c 07 c0       	movups %xmm1,-0x40(%edi,%eax,1)
50027e:	3b d1                	cmp    %ecx,%edx
500280:	7c ae                	jl     0x500230
500282:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
500286:	8b 7c 24 10          	mov    0x10(%esp),%edi
50028a:	89 54 24 18          	mov    %edx,0x18(%esp)
50028e:	3b d5                	cmp    %ebp,%edx
500290:	7d 16                	jge    0x5002a8
500292:	8d 44 24 4c          	lea    0x4c(%esp),%eax
500296:	2b f8                	sub    %eax,%edi
500298:	8d 4c 24 4c          	lea    0x4c(%esp),%ecx
50029c:	03 ca                	add    %edx,%ecx
50029e:	42                   	inc    %edx
50029f:	8a 04 39             	mov    (%ecx,%edi,1),%al
5002a2:	30 01                	xor    %al,(%ecx)
5002a4:	3b d5                	cmp    %ebp,%edx
5002a6:	7c f0                	jl     0x500298
5002a8:	ff 74 24 28          	push   0x28(%esp)
5002ac:	8d 44 24 50          	lea    0x50(%esp),%eax
5002b0:	55                   	push   %ebp
5002b1:	50                   	push   %eax
5002b2:	56                   	push   %esi
5002b3:	ff 74 24 24          	push   0x24(%esp)
5002b7:	e8 b4 f7 ff ff       	call   0x4ffa70
5002bc:	83 c4 14             	add    $0x14,%esp
5002bf:	85 c0                	test   %eax,%eax
5002c1:	0f 85 60 03 00 00    	jne    0x500627
5002c7:	33 ff                	xor    %edi,%edi
5002c9:	85 f6                	test   %esi,%esi
5002cb:	0f 8e e1 00 00 00    	jle    0x5003b2
5002d1:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5002d5:	83 fe 40             	cmp    $0x40,%esi
5002d8:	0f 82 a8 00 00 00    	jb     0x500386
5002de:	8b 54 24 3c          	mov    0x3c(%esp),%edx
5002e2:	8d 42 ff             	lea    -0x1(%edx),%eax
5002e5:	03 c6                	add    %esi,%eax
5002e7:	3b c8                	cmp    %eax,%ecx
5002e9:	77 0d                	ja     0x5002f8
5002eb:	8d 41 ff             	lea    -0x1(%ecx),%eax
5002ee:	03 c6                	add    %esi,%eax
5002f0:	3b c2                	cmp    %edx,%eax
5002f2:	0f 83 8e 00 00 00    	jae    0x500386
5002f8:	8b c6                	mov    %esi,%eax
5002fa:	25 3f 00 00 80       	and    $0x8000003f,%eax
5002ff:	79 05                	jns    0x500306
500301:	48                   	dec    %eax
500302:	83 c8 c0             	or     $0xffffffc0,%eax
500305:	40                   	inc    %eax
500306:	8b ce                	mov    %esi,%ecx
500308:	2b c8                	sub    %eax,%ecx
50030a:	8b 44 24 14          	mov    0x14(%esp),%eax
50030e:	89 4c 24 10          	mov    %ecx,0x10(%esp)
500312:	83 c0 10             	add    $0x10,%eax
500315:	8d 4a 30             	lea    0x30(%edx),%ecx
500318:	2b 54 24 14          	sub    0x14(%esp),%edx
50031c:	89 54 24 18          	mov    %edx,0x18(%esp)
500320:	8b 54 24 10          	mov    0x10(%esp),%edx
500324:	8b 6c 24 18          	mov    0x18(%esp),%ebp
500328:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
50032f:	00
500330:	0f 10 40 f0          	movups -0x10(%eax),%xmm0
500334:	83 c7 40             	add    $0x40,%edi
500337:	8d 49 40             	lea    0x40(%ecx),%ecx
50033a:	8d 40 40             	lea    0x40(%eax),%eax
50033d:	0f 10 49 90          	movups -0x70(%ecx),%xmm1
500341:	66 0f ef c8          	pxor   %xmm0,%xmm1
500345:	0f 11 48 b0          	movups %xmm1,-0x50(%eax)
500349:	0f 10 40 c0          	movups -0x40(%eax),%xmm0
50034d:	0f 10 4c 28 c0       	movups -0x40(%eax,%ebp,1),%xmm1
500352:	66 0f ef c8          	pxor   %xmm0,%xmm1
500356:	0f 11 48 c0          	movups %xmm1,-0x40(%eax)
50035a:	0f 10 40 d0          	movups -0x30(%eax),%xmm0
50035e:	0f 10 49 b0          	movups -0x50(%ecx),%xmm1
500362:	66 0f ef c8          	pxor   %xmm0,%xmm1
500366:	0f 10 41 c0          	movups -0x40(%ecx),%xmm0
50036a:	0f 11 48 d0          	movups %xmm1,-0x30(%eax)
50036e:	0f 10 48 e0          	movups -0x20(%eax),%xmm1
500372:	66 0f ef c8          	pxor   %xmm0,%xmm1
500376:	0f 11 48 e0          	movups %xmm1,-0x20(%eax)
50037a:	3b fa                	cmp    %edx,%edi
50037c:	7c b2                	jl     0x500330
50037e:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
500382:	8b 4c 24 14          	mov    0x14(%esp),%ecx
500386:	3b fe                	cmp    %esi,%edi
500388:	7d 28                	jge    0x5003b2
50038a:	8b 6c 24 3c          	mov    0x3c(%esp),%ebp
50038e:	8b d6                	mov    %esi,%edx
500390:	2b 6c 24 14          	sub    0x14(%esp),%ebp
500394:	03 cf                	add    %edi,%ecx
500396:	2b d7                	sub    %edi,%edx
500398:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
50039f:	00
5003a0:	8a 04 29             	mov    (%ecx,%ebp,1),%al
5003a3:	8d 49 01             	lea    0x1(%ecx),%ecx
5003a6:	30 41 ff             	xor    %al,-0x1(%ecx)
5003a9:	83 ea 01             	sub    $0x1,%edx
5003ac:	75 f2                	jne    0x5003a0
5003ae:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
5003b2:	6a 00                	push   $0x0
5003b4:	ff 74 24 38          	push   0x38(%esp)
5003b8:	8d 84 24 94 00 00 00 	lea    0x94(%esp),%eax
5003bf:	6a 00                	push   $0x0
5003c1:	50                   	push   %eax
5003c2:	ff b4 24 fc 00 00 00 	push   0xfc(%esp)
5003c9:	ff 74 24 30          	push   0x30(%esp)
5003cd:	e8 0e a6 01 00       	call   0x51a9e0
5003d2:	83 c4 18             	add    $0x18,%esp
5003d5:	85 c0                	test   %eax,%eax
5003d7:	0f 84 4a 02 00 00    	je     0x500627
5003dd:	55                   	push   %ebp
5003de:	8d 84 24 90 00 00 00 	lea    0x90(%esp),%eax
5003e5:	50                   	push   %eax
5003e6:	ff 74 24 1c          	push   0x1c(%esp)
5003ea:	e8 61 16 f0 ff       	call   0x401a50
5003ef:	83 c4 0c             	add    $0xc,%esp
5003f2:	8b fd                	mov    %ebp,%edi
5003f4:	8d 48 ff             	lea    -0x1(%eax),%ecx
5003f7:	f7 d0                	not    %eax
5003f9:	c1 e9 1f             	shr    $0x1f,%ecx
5003fc:	c1 e8 1f             	shr    $0x1f,%eax
5003ff:	23 c8                	and    %eax,%ecx
500401:	f7 d9                	neg    %ecx
500403:	23 d9                	and    %ecx,%ebx
500405:	89 5c 24 28          	mov    %ebx,0x28(%esp)
500409:	33 db                	xor    %ebx,%ebx
50040b:	3b ee                	cmp    %esi,%ebp
50040d:	7d 5a                	jge    0x500469
50040f:	8b 6c 24 28          	mov    0x28(%esp),%ebp
500413:	8b 44 24 14          	mov    0x14(%esp),%eax
500417:	0f b6 34 07          	movzbl (%edi,%eax,1),%esi
50041b:	8b c3                	mov    %ebx,%eax
50041d:	8b d6                	mov    %esi,%edx
50041f:	f7 d0                	not    %eax
500421:	83 f2 01             	xor    $0x1,%edx
500424:	4a                   	dec    %edx
500425:	c1 ea 1f             	shr    $0x1f,%edx
500428:	f7 da                	neg    %edx
50042a:	23 c2                	and    %edx,%eax
50042c:	0b da                	or     %edx,%ebx
50042e:	89 44 24 1c          	mov    %eax,0x1c(%esp)
500432:	f7 d0                	not    %eax
500434:	89 44 24 10          	mov    %eax,0x10(%esp)
500438:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
50043c:	8b 44 24 10          	mov    0x10(%esp),%eax
500440:	23 cf                	and    %edi,%ecx
500442:	23 44 24 30          	and    0x30(%esp),%eax
500446:	47                   	inc    %edi
500447:	0b c1                	or     %ecx,%eax
500449:	89 44 24 30          	mov    %eax,0x30(%esp)
50044d:	8d 46 ff             	lea    -0x1(%esi),%eax
500450:	8b 74 24 24          	mov    0x24(%esp),%esi
500454:	c1 e8 1f             	shr    $0x1f,%eax
500457:	f7 d8                	neg    %eax
500459:	0b c3                	or     %ebx,%eax
50045b:	23 e8                	and    %eax,%ebp
50045d:	3b fe                	cmp    %esi,%edi
50045f:	7c b2                	jl     0x500413
500461:	89 6c 24 28          	mov    %ebp,0x28(%esp)
500465:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
500469:	8b 8c 24 d8 00 00 00 	mov    0xd8(%esp),%ecx
500470:	8b c6                	mov    %esi,%eax
500472:	2b 44 24 30          	sub    0x30(%esp),%eax
500476:	8b fe                	mov    %esi,%edi
500478:	48                   	dec    %eax
500479:	2b fd                	sub    %ebp,%edi
50047b:	2b c8                	sub    %eax,%ecx
50047d:	89 44 24 38          	mov    %eax,0x38(%esp)
500481:	33 c8                	xor    %eax,%ecx
500483:	89 7c 24 18          	mov    %edi,0x18(%esp)
500487:	33 84 24 d8 00 00 00 	xor    0xd8(%esp),%eax
50048e:	0b c8                	or     %eax,%ecx
500490:	8b 84 24 d8 00 00 00 	mov    0xd8(%esp),%eax
500497:	33 c8                	xor    %eax,%ecx
500499:	c1 e9 1f             	shr    $0x1f,%ecx
50049c:	49                   	dec    %ecx
50049d:	23 cb                	and    %ebx,%ecx
50049f:	8b 5c 24 28          	mov    0x28(%esp),%ebx
5004a3:	23 d9                	and    %ecx,%ebx
5004a5:	8d 4f ff             	lea    -0x1(%edi),%ecx
5004a8:	8b d1                	mov    %ecx,%edx
5004aa:	89 5c 24 28          	mov    %ebx,0x28(%esp)
5004ae:	2b d0                	sub    %eax,%edx
5004b0:	33 d0                	xor    %eax,%edx
5004b2:	8b c1                	mov    %ecx,%eax
5004b4:	33 84 24 d8 00 00 00 	xor    0xd8(%esp),%eax
5004bb:	0b d0                	or     %eax,%edx
5004bd:	33 d1                	xor    %ecx,%edx
5004bf:	c1 ea 1f             	shr    $0x1f,%edx
5004c2:	f7 da                	neg    %edx
5004c4:	89 54 24 1c          	mov    %edx,0x1c(%esp)
5004c8:	f7 d2                	not    %edx
5004ca:	89 54 24 10          	mov    %edx,0x10(%esp)
5004ce:	8d 57 ff             	lea    -0x1(%edi),%edx
5004d1:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5004d5:	bf 01 00 00 00       	mov    $0x1,%edi
5004da:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5004de:	23 c2                	and    %edx,%eax
5004e0:	23 8c 24 d8 00 00 00 	and    0xd8(%esp),%ecx
5004e7:	0b c8                	or     %eax,%ecx
5004e9:	89 54 24 3c          	mov    %edx,0x3c(%esp)
5004ed:	89 4c 24 34          	mov    %ecx,0x34(%esp)
5004f1:	3b d7                	cmp    %edi,%edx
5004f3:	0f 8e 95 00 00 00    	jle    0x50058e
5004f9:	8b 44 24 18          	mov    0x18(%esp),%eax
5004fd:	8d 55 01             	lea    0x1(%ebp),%edx
500500:	2b 44 24 38          	sub    0x38(%esp),%eax
500504:	48                   	dec    %eax
500505:	89 54 24 44          	mov    %edx,0x44(%esp)
500509:	89 44 24 30          	mov    %eax,0x30(%esp)
50050d:	0f 1f 00             	nopl   (%eax)
500510:	23 c7                	and    %edi,%eax
500512:	2b f7                	sub    %edi,%esi
500514:	8d 48 ff             	lea    -0x1(%eax),%ecx
500517:	f7 d0                	not    %eax
500519:	c1 e9 1f             	shr    $0x1f,%ecx
50051c:	c1 e8 1f             	shr    $0x1f,%eax
50051f:	23 c8                	and    %eax,%ecx
500521:	49                   	dec    %ecx
500522:	3b d6                	cmp    %esi,%edx
500524:	7d 4c                	jge    0x500572
500526:	8b 44 24 14          	mov    0x14(%esp),%eax
50052a:	0f b6 c9             	movzbl %cl,%ecx
50052d:	03 c2                	add    %edx,%eax
50052f:	8b e9                	mov    %ecx,%ebp
500531:	89 4c 24 18          	mov    %ecx,0x18(%esp)
500535:	f7 d5                	not    %ebp
500537:	2b f2                	sub    %edx,%esi
500539:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
500540:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
500544:	8d 40 01             	lea    0x1(%eax),%eax
500547:	0f b6 4c 38 ff       	movzbl -0x1(%eax,%edi,1),%ecx
50054c:	89 6c 24 10          	mov    %ebp,0x10(%esp)
500550:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
500554:	8b 54 24 10          	mov    0x10(%esp),%edx
500558:	22 d9                	and    %cl,%bl
50055a:	0f b6 48 ff          	movzbl -0x1(%eax),%ecx
50055e:	22 d1                	and    %cl,%dl
500560:	8b 4c 24 18          	mov    0x18(%esp),%ecx
500564:	0a d3                	or     %bl,%dl
500566:	88 50 ff             	mov    %dl,-0x1(%eax)
500569:	83 ee 01             	sub    $0x1,%esi
50056c:	75 d2                	jne    0x500540
50056e:	8b 54 24 44          	mov    0x44(%esp),%edx
500572:	8b 74 24 24          	mov    0x24(%esp),%esi
500576:	03 ff                	add    %edi,%edi
500578:	8b 44 24 30          	mov    0x30(%esp),%eax
50057c:	3b 7c 24 3c          	cmp    0x3c(%esp),%edi
500580:	7c 8e                	jl     0x500510
500582:	8b 5c 24 28          	mov    0x28(%esp),%ebx
500586:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
50058a:	8b 4c 24 34          	mov    0x34(%esp),%ecx
50058e:	33 f6                	xor    %esi,%esi
500590:	85 c9                	test   %ecx,%ecx
500592:	7e 69                	jle    0x5005fd
500594:	8b 4c 24 38          	mov    0x38(%esp),%ecx
500598:	8b 44 24 14          	mov    0x14(%esp),%eax
50059c:	8b 7c 24 38          	mov    0x38(%esp),%edi
5005a0:	40                   	inc    %eax
5005a1:	c1 e9 1f             	shr    $0x1f,%ecx
5005a4:	f7 df                	neg    %edi
5005a6:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5005aa:	03 e8                	add    %eax,%ebp
5005ac:	0f 1f 40 00          	nopl   0x0(%eax)
5005b0:	8b c7                	mov    %edi,%eax
5005b2:	8d 6d 01             	lea    0x1(%ebp),%ebp
5005b5:	c1 e8 1f             	shr    $0x1f,%eax
5005b8:	47                   	inc    %edi
5005b9:	32 c1                	xor    %cl,%al
5005bb:	0a c1                	or     %cl,%al
5005bd:	f6 d8                	neg    %al
5005bf:	0f b6 c8             	movzbl %al,%ecx
5005c2:	0f b6 c3             	movzbl %bl,%eax
5005c5:	23 c8                	and    %eax,%ecx
5005c7:	0f b6 45 ff          	movzbl -0x1(%ebp),%eax
5005cb:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5005cf:	f7 d1                	not    %ecx
5005d1:	89 4c 24 10          	mov    %ecx,0x10(%esp)
5005d5:	8b 54 24 1c          	mov    0x1c(%esp),%edx
5005d9:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5005dd:	22 d0                	and    %al,%dl
5005df:	8b 44 24 48          	mov    0x48(%esp),%eax
5005e3:	0f b6 04 30          	movzbl (%eax,%esi,1),%eax
5005e7:	22 c8                	and    %al,%cl
5005e9:	8b 44 24 48          	mov    0x48(%esp),%eax
5005ed:	0a ca                	or     %dl,%cl
5005ef:	88 0c 30             	mov    %cl,(%eax,%esi,1)
5005f2:	46                   	inc    %esi
5005f3:	8b 4c 24 18          	mov    0x18(%esp),%ecx
5005f7:	3b 74 24 34          	cmp    0x34(%esp),%esi
5005fb:	7c b3                	jl     0x5005b0
5005fd:	68 07 01 00 00       	push   $0x107
500602:	68 58 9c 62 00       	push   $0x629c58
500607:	6a 79                	push   $0x79
500609:	68 99 00 00 00       	push   $0x99
50060e:	6a 04                	push   $0x4