41a240:	8b 4f 3c             	mov    0x3c(%edi),%ecx
41a243:	eb 0c                	jmp    0x41a251
41a245:	83 f8 01             	cmp    $0x1,%eax
41a248:	75 15                	jne    0x41a25f
41a24a:	f6 c3 02             	test   $0x2,%bl
41a24d:	75 14                	jne    0x41a263
41a24f:	8b ca                	mov    %edx,%ecx
41a251:	8b 47 10             	mov    0x10(%edi),%eax
41a254:	8b 75 0c             	mov    0xc(%ebp),%esi
41a257:	2b 08                	sub    (%eax),%ecx
41a259:	d1 f9                	sar    $1,%ecx
41a25b:	03 f1                	add    %ecx,%esi
41a25d:	eb 0c                	jmp    0x41a26b
41a25f:	85 c0                	test   %eax,%eax
41a261:	74 05                	je     0x41a268
41a263:	83 ce ff             	or     $0xffffffff,%esi
41a266:	eb 03                	jmp    0x41a26b
41a268:	8b 75 0c             	mov    0xc(%ebp),%esi
41a26b:	85 f6                	test   %esi,%esi
41a26d:	0f 88 bc 00 00 00    	js     0x41a32f
41a273:	8b 47 10             	mov    0x10(%edi),%eax
41a276:	8b 10                	mov    (%eax),%edx
41a278:	8b 47 3c             	mov    0x3c(%edi),%eax
41a27b:	2b c2                	sub    %edx,%eax
41a27d:	d1 f8                	sar    $1,%eax
41a27f:	3b f0                	cmp    %eax,%esi
41a281:	0f 8f a8 00 00 00    	jg     0x41a32f
41a287:	2b 55 fc             	sub    -0x4(%ebp),%edx
41a28a:	8b 47 30             	mov    0x30(%edi),%eax
41a28d:	d1 fa                	sar    $1,%edx
41a28f:	03 d6                	add    %esi,%edx
41a291:	29 10                	sub    %edx,(%eax)
41a293:	8b 4f 20             	mov    0x20(%edi),%ecx
41a296:	8d 04 12             	lea    (%edx,%edx,1),%eax
41a299:	01 01                	add    %eax,(%ecx)
41a29b:	f6 c3 02             	test   $0x2,%bl
41a29e:	0f 84 8e 00 00 00    	je     0x41a332
41a2a4:	8b 5f 24             	mov    0x24(%edi),%ebx
41a2a7:	8b 0b                	mov    (%ebx),%ecx
41a2a9:	85 c9                	test   %ecx,%ecx
41a2ab:	0f 84 81 00 00 00    	je     0x41a332
41a2b1:	8b 47 20             	mov    0x20(%edi),%eax
41a2b4:	8b 10                	mov    (%eax),%edx
41a2b6:	8b 47 34             	mov    0x34(%edi),%eax
41a2b9:	8b 00                	mov    (%eax),%eax
41a2bb:	89 13                	mov    %edx,(%ebx)
41a2bd:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
41a2c0:	8b 47 34             	mov    0x34(%edi),%eax
41a2c3:	2b ca                	sub    %edx,%ecx
41a2c5:	d1 f9                	sar    $1,%ecx
41a2c7:	89 08                	mov    %ecx,(%eax)
41a2c9:	eb 67                	jmp    0x41a332
41a2cb:	f6 c3 02             	test   $0x2,%bl
41a2ce:	74 5f                	je     0x41a32f
41a2d0:	83 39 00             	cmpl   $0x0,(%ecx)
41a2d3:	74 5a                	je     0x41a32f
41a2d5:	8b 45 10             	mov    0x10(%ebp),%eax
41a2d8:	83 f8 02             	cmp    $0x2,%eax
41a2db:	75 05                	jne    0x41a2e2
41a2dd:	8b 4f 3c             	mov    0x3c(%edi),%ecx
41a2e0:	eb 07                	jmp    0x41a2e9
41a2e2:	83 f8 01             	cmp    $0x1,%eax
41a2e5:	75 13                	jne    0x41a2fa
41a2e7:	8b 09                	mov    (%ecx),%ecx
41a2e9:	8b 47 10             	mov    0x10(%edi),%eax
41a2ec:	8b 75 0c             	mov    0xc(%ebp),%esi
41a2ef:	2b 08                	sub    (%eax),%ecx
41a2f1:	d1 f9                	sar    $1,%ecx
41a2f3:	03 f1                	add    %ecx,%esi
41a2f5:	8b 4f 24             	mov    0x24(%edi),%ecx
41a2f8:	eb 0c                	jmp    0x41a306
41a2fa:	85 c0                	test   %eax,%eax
41a2fc:	74 05                	je     0x41a303
41a2fe:	83 ce ff             	or     $0xffffffff,%esi
41a301:	eb 03                	jmp    0x41a306
41a303:	8b 75 0c             	mov    0xc(%ebp),%esi
41a306:	85 f6                	test   %esi,%esi
41a308:	78 25                	js     0x41a32f
41a30a:	8b 47 10             	mov    0x10(%edi),%eax
41a30d:	8b 10                	mov    (%eax),%edx
41a30f:	8b 47 3c             	mov    0x3c(%edi),%eax
41a312:	2b c2                	sub    %edx,%eax
41a314:	d1 f8                	sar    $1,%eax
41a316:	3b f0                	cmp    %eax,%esi
41a318:	7f 15                	jg     0x41a32f
41a31a:	2b 11                	sub    (%ecx),%edx
41a31c:	8b 47 34             	mov    0x34(%edi),%eax
41a31f:	d1 fa                	sar    $1,%edx
41a321:	03 d6                	add    %esi,%edx
41a323:	29 10                	sub    %edx,(%eax)
41a325:	8b 4f 24             	mov    0x24(%edi),%ecx
41a328:	8d 04 12             	lea    (%edx,%edx,1),%eax
41a32b:	01 01                	add    %eax,(%ecx)
41a32d:	eb 03                	jmp    0x41a332
41a32f:	83 ce ff             	or     $0xffffffff,%esi
41a332:	8b 45 08             	mov    0x8(%ebp),%eax
41a335:	33 c9                	xor    %ecx,%ecx
41a337:	5f                   	pop    %edi
41a338:	89 30                	mov    %esi,(%eax)
41a33a:	5e                   	pop    %esi
41a33b:	89 48 08             	mov    %ecx,0x8(%eax)
41a33e:	89 48 0c             	mov    %ecx,0xc(%eax)
41a341:	89 48 10             	mov    %ecx,0x10(%eax)
41a344:	5b                   	pop    %ebx
41a345:	c9                   	leave
41a346:	c2 10 00             	ret    $0x10
41a349:	cc                   	int3
41a34a:	cc                   	int3
41a34b:	cc                   	int3
41a34c:	cc                   	int3
41a34d:	cc                   	int3
41a34e:	cc                   	int3
41a34f:	cc                   	int3
41a350:	8b ff                	mov    %edi,%edi
41a352:	53                   	push   %ebx
41a353:	56                   	push   %esi
41a354:	8b f1                	mov    %ecx,%esi
41a356:	57                   	push   %edi
41a357:	8b 7e 20             	mov    0x20(%esi),%edi
41a35a:	8b 17                	mov    (%edi),%edx
41a35c:	85 d2                	test   %edx,%edx
41a35e:	74 47                	je     0x41a3a7
41a360:	8b 5e 30             	mov    0x30(%esi),%ebx
41a363:	8b 0b                	mov    (%ebx),%ecx
41a365:	8d 0c 4a             	lea    (%edx,%ecx,2),%ecx
41a368:	3b d1                	cmp    %ecx,%edx
41a36a:	73 05                	jae    0x41a371
41a36c:	66 8b 02             	mov    (%edx),%ax
41a36f:	eb 3b                	jmp    0x41a3ac
41a371:	f6 46 40 04          	testb  $0x4,0x40(%esi)
41a375:	75 30                	jne    0x41a3a7
41a377:	8b 46 24             	mov    0x24(%esi),%eax
41a37a:	8b 08                	mov    (%eax),%ecx
41a37c:	85 c9                	test   %ecx,%ecx
41a37e:	74 27                	je     0x41a3a7
41a380:	3b ca                	cmp    %edx,%ecx
41a382:	77 05                	ja     0x41a389
41a384:	39 56 3c             	cmp    %edx,0x3c(%esi)
41a387:	76 1e                	jbe    0x41a3a7
41a389:	8b 46 3c             	mov    0x3c(%esi),%eax
41a38c:	3b c1                	cmp    %ecx,%eax
41a38e:	73 07                	jae    0x41a397
41a390:	89 4e 3c             	mov    %ecx,0x3c(%esi)
41a393:	8b c1                	mov    %ecx,%eax
41a395:	8b 17                	mov    (%edi),%edx
41a397:	2b c2                	sub    %edx,%eax
41a399:	d1 f8                	sar    $1,%eax
41a39b:	89 03                	mov    %eax,(%ebx)
41a39d:	8b 46 20             	mov    0x20(%esi),%eax
41a3a0:	8b 00                	mov    (%eax),%eax
41a3a2:	66 8b 00             	mov    (%eax),%ax
41a3a5:	eb 05                	jmp    0x41a3ac
41a3a7:	b8 ff ff 00 00       	mov    $0xffff,%eax
41a3ac:	5f                   	pop    %edi
41a3ad:	5e                   	pop    %esi
41a3ae:	5b                   	pop    %ebx
41a3af:	c3                   	ret
41a3b0:	8b ff                	mov    %edi,%edi
41a3b2:	55                   	push   %ebp
41a3b3:	8b ec                	mov    %esp,%ebp
41a3b5:	8b 41 20             	mov    0x20(%ecx),%eax
41a3b8:	56                   	push   %esi
41a3b9:	57                   	push   %edi
41a3ba:	bf ff ff 00 00       	mov    $0xffff,%edi
41a3bf:	8b 30                	mov    (%eax),%esi
41a3c1:	85 f6                	test   %esi,%esi
41a3c3:	74 3d                	je     0x41a402
41a3c5:	8b 41 10             	mov    0x10(%ecx),%eax
41a3c8:	3b 30                	cmp    (%eax),%esi
41a3ca:	76 36                	jbe    0x41a402
41a3cc:	66 8b 55 08          	mov    0x8(%ebp),%dx
41a3d0:	66 3b fa             	cmp    %dx,%di
41a3d3:	74 0c                	je     0x41a3e1
41a3d5:	66 3b 56 fe          	cmp    -0x2(%esi),%dx
41a3d9:	74 06                	je     0x41a3e1
41a3db:	f6 41 40 02          	testb  $0x2,0x40(%ecx)
41a3df:	75 21                	jne    0x41a402
41a3e1:	8b 41 30             	mov    0x30(%ecx),%eax
41a3e4:	ff 00                	incl   (%eax)
41a3e6:	8b 41 20             	mov    0x20(%ecx),%eax
41a3e9:	83 00 fe             	addl   $0xfffffffe,(%eax)
41a3ec:	66 3b fa             	cmp    %dx,%di
41a3ef:	74 0d                	je     0x41a3fe
41a3f1:	8b 41 20             	mov    0x20(%ecx),%eax
41a3f4:	8b 00                	mov    (%eax),%eax
41a3f6:	66 89 10             	mov    %dx,(%eax)
41a3f9:	0f b7 c2             	movzwl %dx,%eax
41a3fc:	eb 07                	jmp    0x41a405
41a3fe:	33 c0                	xor    %eax,%eax
41a400:	eb 03                	jmp    0x41a405
41a402:	66 8b c7             	mov    %di,%ax
41a405:	5f                   	pop    %edi
41a406:	5e                   	pop    %esi
41a407:	5d                   	pop    %ebp
41a408:	c2 04 00             	ret    $0x4
41a40b:	cc                   	int3
41a40c:	cc                   	int3
41a40d:	cc                   	int3
41a40e:	cc                   	int3
41a40f:	cc                   	int3
41a410:	8b ff                	mov    %edi,%edi
41a412:	55                   	push   %ebp
41a413:	8b ec                	mov    %esp,%ebp
41a415:	51                   	push   %ecx
41a416:	53                   	push   %ebx
41a417:	56                   	push   %esi
41a418:	57                   	push   %edi
41a419:	8b f9                	mov    %ecx,%edi
41a41b:	f6 47 40 08          	testb  $0x8,0x40(%edi)
41a41f:	74 23                	je     0x41a444
41a421:	8b 77 24             	mov    0x24(%edi),%esi
41a424:	8b 0e                	mov    (%esi),%ecx
41a426:	85 c9                	test   %ecx,%ecx
41a428:	74 1a                	je     0x41a444
41a42a:	8b 57 3c             	mov    0x3c(%edi),%edx
41a42d:	3b ca                	cmp    %edx,%ecx
41a42f:	73 13                	jae    0x41a444
41a431:	8b 47 34             	mov    0x34(%edi),%eax
41a434:	8b 00                	mov    (%eax),%eax
41a436:	89 16                	mov    %edx,(%esi)
41a438:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
41a43b:	8b 47 34             	mov    0x34(%edi),%eax
41a43e:	2b ca                	sub    %edx,%ecx
41a440:	d1 f9                	sar    $1,%ecx
41a442:	89 08                	mov    %ecx,(%eax)
41a444:	66 8b 5d 08          	mov    0x8(%ebp),%bx
41a448:	ba ff ff 00 00       	mov    $0xffff,%edx
41a44d:	66 3b d3             	cmp    %bx,%dx
41a450:	75 07                	jne    0x41a459
41a452:	33 c0                	xor    %eax,%eax
41a454:	e9 9c 01 00 00       	jmp    0x41a5f5
41a459:	8b 47 24             	mov    0x24(%edi),%eax
41a45c:	8b 08                	mov    (%eax),%ecx
41a45e:	85 c9                	test   %ecx,%ecx
41a460:	74 2b                	je     0x41a48d
41a462:	8b 57 34             	mov    0x34(%edi),%edx
41a465:	8b 32                	mov    (%edx),%esi
41a467:	8d 04 71             	lea    (%ecx,%esi,2),%eax
41a46a:	3b c8                	cmp    %eax,%ecx
41a46c:	73 1a                	jae    0x41a488
41a46e:	8d 4e ff             	lea    -0x1(%esi),%ecx
41a471:	66 8b c3             	mov    %bx,%ax
41a474:	89 0a                	mov    %ecx,(%edx)
41a476:	8b 57 24             	mov    0x24(%edi),%edx
41a479:	8b 32                	mov    (%edx),%esi
41a47b:	8d 4e 02             	lea    0x2(%esi),%ecx
41a47e:	89 0a                	mov    %ecx,(%edx)
41a480:	66 89 1e             	mov    %bx,(%esi)
41a483:	e9 6d 01 00 00       	jmp    0x41a5f5
41a488:	ba ff ff 00 00       	mov    $0xffff,%edx
41a48d:	f6 47 40 02          	testb  $0x2,0x40(%edi)
41a491:	74 08                	je     0x41a49b
41a493:	66 8b c2             	mov    %dx,%ax
41a496:	e9 5a 01 00 00       	jmp    0x41a5f5
41a49b:	85 c9                	test   %ecx,%ecx
41a49d:	75 04                	jne    0x41a4a3
41a49f:	33 f6                	xor    %esi,%esi
41a4a1:	eb 10                	jmp    0x41a4b3
41a4a3:	8b 47 34             	mov    0x34(%edi),%eax
41a4a6:	8b 30                	mov    (%eax),%esi
41a4a8:	8b 47 10             	mov    0x10(%edi),%eax
41a4ab:	03 f6                	add    %esi,%esi
41a4ad:	2b 30                	sub    (%eax),%esi
41a4af:	03 f1                	add    %ecx,%esi
41a4b1:	d1 fe                	sar    $1,%esi
41a4b3:	8b c6                	mov    %esi,%eax
41a4b5:	8b d6                	mov    %esi,%edx
41a4b7:	6a 20                	push   $0x20
41a4b9:	d1 e8                	shr    $1,%eax
41a4bb:	59                   	pop    %ecx
41a4bc:	89 55 fc             	mov    %edx,-0x4(%ebp)
41a4bf:	3b c1                	cmp    %ecx,%eax
41a4c1:	72 02                	jb     0x41a4c5
41a4c3:	8b c8                	mov    %eax,%ecx
41a4c5:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
41a4ca:	2b c1                	sub    %ecx,%eax
41a4cc:	3b c6                	cmp    %esi,%eax
41a4ce:	73 04                	jae    0x41a4d4
41a4d0:	d1 e9                	shr    $1,%ecx
41a4d2:	75 f1                	jne    0x41a4c5
41a4d4:	33 db                	xor    %ebx,%ebx
41a4d6:	85 c9                	test   %ecx,%ecx
41a4d8:	74 11                	je     0x41a4eb
41a4da:	8d 04 31             	lea    (%ecx,%esi,1),%eax
41a4dd:	50                   	push   %eax
41a4de:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a4e1:	e8 8c 20 00 00       	call   0x41c572
41a4e6:	8b 55 fc             	mov    -0x4(%ebp),%edx
41a4e9:	8b d8                	mov    %eax,%ebx
41a4eb:	85 f6                	test   %esi,%esi
41a4ed:	74 17                	je     0x41a506
41a4ef:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
41a4f2:	51                   	push   %ecx
41a4f3:	8b 4f 10             	mov    0x10(%edi),%ecx
41a4f6:	8d 04 12             	lea    (%edx,%edx,1),%eax
41a4f9:	ff 31                	push   (%ecx)
41a4fb:	50                   	push   %eax
41a4fc:	53                   	push   %ebx
41a4fd:	ff 15 f0 80 4a 00    	call   *0x4a80f0
41a503:	83 c4 10             	add    $0x10,%esp
41a506:	8b 47 40             	mov    0x40(%edi),%eax
41a509:	a8 01                	test   $0x1,%al
41a50b:	74 0f                	je     0x41a51c
41a50d:	8b 47 10             	mov    0x10(%edi),%eax
41a510:	ff 30                	push   (%eax)
41a512:	ff 15 10 74 4a 00    	call   *0x4a7410
41a518:	8b 47 40             	mov    0x40(%edi),%eax
41a51b:	59                   	pop    %ecx
41a51c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41a51f:	33 d2                	xor    %edx,%edx
41a521:	42                   	inc    %edx
41a522:	0b c2                	or     %edx,%eax
41a524:	89 47 40             	mov    %eax,0x40(%edi)
41a527:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
41a52a:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a52d:	85 f6                	test   %esi,%esi
41a52f:	75 2e                	jne    0x41a55f
41a531:	8b 47 14             	mov    0x14(%edi),%eax
41a534:	89 5f 3c             	mov    %ebx,0x3c(%edi)
41a537:	89 18                	mov    %ebx,(%eax)
41a539:	8b 47 24             	mov    0x24(%edi),%eax
41a53c:	89 18                	mov    %ebx,(%eax)
41a53e:	8b 47 34             	mov    0x34(%edi),%eax
41a541:	89 08                	mov    %ecx,(%eax)
41a543:	8b 47 10             	mov    0x10(%edi),%eax
41a546:	8b 4f 40             	mov    0x40(%edi),%ecx
41a549:	89 18                	mov    %ebx,(%eax)
41a54b:	8b 47 20             	mov    0x20(%edi),%eax
41a54e:	83 e1 04             	and    $0x4,%ecx
41a551:	75 59                	jne    0x41a5ac
41a553:	89 18                	mov    %ebx,(%eax)
41a555:	8b 47 30             	mov    0x30(%edi),%eax
41a558:	89 10                	mov    %edx,(%eax)
41a55a:	e9 80 00 00 00       	jmp    0x41a5df
41a55f:	8b 4f 10             	mov    0x10(%edi),%ecx
41a562:	8b 47 3c             	mov    0x3c(%edi),%eax
41a565:	2b 01                	sub    (%ecx),%eax
41a567:	d1 f8                	sar    $1,%eax
41a569:	8d 04 43             	lea    (%ebx,%eax,2),%eax
41a56c:	89 47 3c             	mov    %eax,0x3c(%edi)
41a56f:	8b 11                	mov    (%ecx),%edx
41a571:	8b 47 24             	mov    0x24(%edi),%eax
41a574:	8b 4f 14             	mov    0x14(%edi),%ecx
41a577:	8b 00                	mov    (%eax),%eax
41a579:	2b c2                	sub    %edx,%eax
41a57b:	d1 f8                	sar    $1,%eax
41a57d:	8d 34 43             	lea    (%ebx,%eax,2),%esi
41a580:	8b 01                	mov    (%ecx),%eax
41a582:	2b c2                	sub    %edx,%eax
41a584:	d1 f8                	sar    $1,%eax