40a3a7:	8b 75 c0             	mov    -0x40(%ebp),%esi
40a3aa:	8b 08                	mov    (%eax),%ecx
40a3ac:	8b 40 04             	mov    0x4(%eax),%eax
40a3af:	50                   	push   %eax
40a3b0:	51                   	push   %ecx
40a3b1:	56                   	push   %esi
40a3b2:	57                   	push   %edi
40a3b3:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40a3b6:	89 45 10             	mov    %eax,0x10(%ebp)
40a3b9:	c7 43 20 00 00 00 00 	movl   $0x0,0x20(%ebx)
40a3c0:	c7 43 24 00 00 00 00 	movl   $0x0,0x24(%ebx)
40a3c7:	e8 e4 04 00 00       	call   0x40a8b0
40a3cc:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40a3cf:	83 c4 30             	add    $0x30,%esp
40a3d2:	83 f9 08             	cmp    $0x8,%ecx
40a3d5:	72 2e                	jb     0x40a405
40a3d7:	8b 55 d8             	mov    -0x28(%ebp),%edx
40a3da:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40a3e1:	8b c2                	mov    %edx,%eax
40a3e3:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a3e9:	72 10                	jb     0x40a3fb
40a3eb:	8b 50 fc             	mov    -0x4(%eax),%edx
40a3ee:	83 c1 23             	add    $0x23,%ecx
40a3f1:	2b c2                	sub    %edx,%eax
40a3f3:	83 c0 fc             	add    $0xfffffffc,%eax
40a3f6:	83 f8 1f             	cmp    $0x1f,%eax
40a3f9:	77 2a                	ja     0x40a425
40a3fb:	51                   	push   %ecx
40a3fc:	52                   	push   %edx
40a3fd:	e8 0c 15 01 00       	call   0x41b90e
40a402:	83 c4 08             	add    $0x8,%esp
40a405:	8b c6                	mov    %esi,%eax
40a407:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a40a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a411:	59                   	pop    %ecx
40a412:	5f                   	pop    %edi
40a413:	5e                   	pop    %esi
40a414:	5b                   	pop    %ebx
40a415:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a418:	33 cd                	xor    %ebp,%ecx
40a41a:	e8 b1 14 01 00       	call   0x41b8d0
40a41f:	8b e5                	mov    %ebp,%esp
40a421:	5d                   	pop    %ebp
40a422:	c2 18 00             	ret    $0x18
40a425:	e8 55 66 01 00       	call   0x420a7f
40a42a:	cc                   	int3
40a42b:	cc                   	int3
40a42c:	cc                   	int3
40a42d:	cc                   	int3
40a42e:	cc                   	int3
40a42f:	cc                   	int3
40a430:	55                   	push   %ebp
40a431:	8b ec                	mov    %esp,%ebp
40a433:	6a ff                	push   $0xffffffff
40a435:	68 30 d6 43 00       	push   $0x43d630
40a43a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a440:	50                   	push   %eax
40a441:	56                   	push   %esi
40a442:	57                   	push   %edi
40a443:	a1 14 40 45 00       	mov    0x454014,%eax
40a448:	33 c5                	xor    %ebp,%eax
40a44a:	50                   	push   %eax
40a44b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a44e:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a454:	8b f1                	mov    %ecx,%esi
40a456:	e8 ef 0f 01 00       	call   0x41b44a
40a45b:	84 c0                	test   %al,%al
40a45d:	75 07                	jne    0x40a466
40a45f:	8b 0e                	mov    (%esi),%ecx
40a461:	e8 ca 11 00 00       	call   0x40b630
40a466:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a46d:	8b 0e                	mov    (%esi),%ecx
40a46f:	8b 01                	mov    (%ecx),%eax
40a471:	8b 40 04             	mov    0x4(%eax),%eax
40a474:	8b 7c 08 38          	mov    0x38(%eax,%ecx,1),%edi
40a478:	85 ff                	test   %edi,%edi
40a47a:	74 11                	je     0x40a48d
40a47c:	8b 07                	mov    (%edi),%eax
40a47e:	8b 70 08             	mov    0x8(%eax),%esi
40a481:	8b ce                	mov    %esi,%ecx
40a483:	ff 15 3c f2 43 00    	call   *0x43f23c
40a489:	8b cf                	mov    %edi,%ecx
40a48b:	ff d6                	call   *%esi
40a48d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a490:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a497:	59                   	pop    %ecx
40a498:	5f                   	pop    %edi
40a499:	5e                   	pop    %esi
40a49a:	8b e5                	mov    %ebp,%esp
40a49c:	5d                   	pop    %ebp
40a49d:	c3                   	ret
40a49e:	cc                   	int3
40a49f:	cc                   	int3
40a4a0:	cc                   	int3
40a4a1:	cc                   	int3
40a4a2:	cc                   	int3
40a4a3:	cc                   	int3
40a4a4:	cc                   	int3
40a4a5:	cc                   	int3
40a4a6:	cc                   	int3
40a4a7:	cc                   	int3
40a4a8:	cc                   	int3
40a4a9:	cc                   	int3
40a4aa:	cc                   	int3
40a4ab:	cc                   	int3
40a4ac:	cc                   	int3
40a4ad:	cc                   	int3
40a4ae:	cc                   	int3
40a4af:	cc                   	int3
40a4b0:	55                   	push   %ebp
40a4b1:	8b ec                	mov    %esp,%ebp
40a4b3:	6a ff                	push   $0xffffffff
40a4b5:	68 ad da 43 00       	push   $0x43daad
40a4ba:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a4c0:	50                   	push   %eax
40a4c1:	83 ec 08             	sub    $0x8,%esp
40a4c4:	53                   	push   %ebx
40a4c5:	56                   	push   %esi
40a4c6:	57                   	push   %edi
40a4c7:	a1 14 40 45 00       	mov    0x454014,%eax
40a4cc:	33 c5                	xor    %ebp,%eax
40a4ce:	50                   	push   %eax
40a4cf:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a4d2:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a4d8:	8b d9                	mov    %ecx,%ebx
40a4da:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a4dd:	8b 7d 08             	mov    0x8(%ebp),%edi
40a4e0:	89 3b                	mov    %edi,(%ebx)
40a4e2:	8b 07                	mov    (%edi),%eax
40a4e4:	8b 40 04             	mov    0x4(%eax),%eax
40a4e7:	8b 44 38 38          	mov    0x38(%eax,%edi,1),%eax
40a4eb:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a4ee:	85 c0                	test   %eax,%eax
40a4f0:	74 12                	je     0x40a504
40a4f2:	8b 00                	mov    (%eax),%eax
40a4f4:	8b 70 04             	mov    0x4(%eax),%esi
40a4f7:	8b ce                	mov    %esi,%ecx
40a4f9:	ff 15 3c f2 43 00    	call   *0x43f23c
40a4ff:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a502:	ff d6                	call   *%esi
40a504:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a50b:	8b 07                	mov    (%edi),%eax
40a50d:	8b 40 04             	mov    0x4(%eax),%eax
40a510:	83 7c 38 0c 00       	cmpl   $0x0,0xc(%eax,%edi,1)
40a515:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
40a518:	74 04                	je     0x40a51e
40a51a:	32 c0                	xor    %al,%al
40a51c:	eb 21                	jmp    0x40a53f
40a51e:	8b 49 3c             	mov    0x3c(%ecx),%ecx
40a521:	85 c9                	test   %ecx,%ecx
40a523:	74 18                	je     0x40a53d
40a525:	3b cf                	cmp    %edi,%ecx
40a527:	74 14                	je     0x40a53d
40a529:	e8 d2 0f 00 00       	call   0x40b500
40a52e:	8b 07                	mov    (%edi),%eax
40a530:	8b 40 04             	mov    0x4(%eax),%eax
40a533:	83 7c 38 0c 00       	cmpl   $0x0,0xc(%eax,%edi,1)
40a538:	0f 94 c0             	sete   %al
40a53b:	eb 02                	jmp    0x40a53f
40a53d:	b0 01                	mov    $0x1,%al
40a53f:	88 43 04             	mov    %al,0x4(%ebx)
40a542:	8b c3                	mov    %ebx,%eax
40a544:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a547:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a54e:	59                   	pop    %ecx
40a54f:	5f                   	pop    %edi
40a550:	5e                   	pop    %esi
40a551:	5b                   	pop    %ebx
40a552:	8b e5                	mov    %ebp,%esp
40a554:	5d                   	pop    %ebp
40a555:	c2 04 00             	ret    $0x4
40a558:	cc                   	int3
40a559:	cc                   	int3
40a55a:	cc                   	int3
40a55b:	cc                   	int3
40a55c:	cc                   	int3
40a55d:	cc                   	int3
40a55e:	cc                   	int3
40a55f:	cc                   	int3
40a560:	55                   	push   %ebp
40a561:	8b ec                	mov    %esp,%ebp
40a563:	6a ff                	push   $0xffffffff
40a565:	68 ee da 43 00       	push   $0x43daee
40a56a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a570:	50                   	push   %eax
40a571:	83 ec 14             	sub    $0x14,%esp
40a574:	53                   	push   %ebx
40a575:	56                   	push   %esi
40a576:	57                   	push   %edi
40a577:	a1 14 40 45 00       	mov    0x454014,%eax
40a57c:	33 c5                	xor    %ebp,%eax
40a57e:	50                   	push   %eax
40a57f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a582:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a588:	8b d1                	mov    %ecx,%edx
40a58a:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
40a591:	33 c0                	xor    %eax,%eax
40a593:	8b 7d 08             	mov    0x8(%ebp),%edi
40a596:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40a59d:	c7 47 14 00 00 00 00 	movl   $0x0,0x14(%edi)
40a5a4:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40a5aa:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
40a5b1:	c7 47 14 07 00 00 00 	movl   $0x7,0x14(%edi)
40a5b8:	66 89 07             	mov    %ax,(%edi)
40a5bb:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a5be:	0f 57 c0             	xorps  %xmm0,%xmm0
40a5c1:	8b 5a 3c             	mov    0x3c(%edx),%ebx
40a5c4:	89 45 e8             	mov    %eax,-0x18(%ebp)
40a5c7:	8b c3                	mov    %ebx,%eax
40a5c9:	24 22                	and    $0x22,%al
40a5cb:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40a5d2:	66 0f d6 45 e0       	movq   %xmm0,-0x20(%ebp)
40a5d7:	3c 02                	cmp    $0x2,%al
40a5d9:	74 19                	je     0x40a5f4
40a5db:	8b 42 20             	mov    0x20(%edx),%eax
40a5de:	8b 08                	mov    (%eax),%ecx
40a5e0:	85 c9                	test   %ecx,%ecx
40a5e2:	74 10                	je     0x40a5f4
40a5e4:	8b 42 10             	mov    0x10(%edx),%eax
40a5e7:	3b 4a 38             	cmp    0x38(%edx),%ecx
40a5ea:	0f 42 4a 38          	cmovb  0x38(%edx),%ecx
40a5ee:	8b 18                	mov    (%eax),%ebx
40a5f0:	2b cb                	sub    %ebx,%ecx
40a5f2:	eb 1e                	jmp    0x40a612
40a5f4:	f6 c3 04             	test   $0x4,%bl
40a5f7:	75 4f                	jne    0x40a648
40a5f9:	8b 42 1c             	mov    0x1c(%edx),%eax
40a5fc:	8b 30                	mov    (%eax),%esi
40a5fe:	85 f6                	test   %esi,%esi
40a600:	74 46                	je     0x40a648
40a602:	8b 42 0c             	mov    0xc(%edx),%eax
40a605:	8b 18                	mov    (%eax),%ebx
40a607:	8b 42 2c             	mov    0x2c(%edx),%eax
40a60a:	8b 08                	mov    (%eax),%ecx
40a60c:	03 c9                	add    %ecx,%ecx
40a60e:	2b cb                	sub    %ebx,%ecx
40a610:	03 ce                	add    %esi,%ecx
40a612:	8b c3                	mov    %ebx,%eax
40a614:	d1 f9                	sar    $1,%ecx
40a616:	85 c0                	test   %eax,%eax
40a618:	74 2e                	je     0x40a648
40a61a:	83 f9 07             	cmp    $0x7,%ecx
40a61d:	77 19                	ja     0x40a638
40a61f:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
40a622:	89 4f 10             	mov    %ecx,0x10(%edi)
40a625:	56                   	push   %esi
40a626:	53                   	push   %ebx
40a627:	57                   	push   %edi
40a628:	e8 23 2e 01 00       	call   0x41d450
40a62d:	83 c4 0c             	add    $0xc,%esp
40a630:	33 c0                	xor    %eax,%eax
40a632:	66 89 04 3e          	mov    %ax,(%esi,%edi,1)
40a636:	eb 10                	jmp    0x40a648
40a638:	53                   	push   %ebx
40a639:	c6 45 ec 00          	movb   $0x0,-0x14(%ebp)
40a63d:	ff 75 ec             	push   -0x14(%ebp)
40a640:	51                   	push   %ecx
40a641:	8b cf                	mov    %edi,%ecx
40a643:	e8 c8 7f ff ff       	call   0x402610
40a648:	8b c7                	mov    %edi,%eax
40a64a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a64d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a654:	59                   	pop    %ecx
40a655:	5f                   	pop    %edi
40a656:	5e                   	pop    %esi
40a657:	5b                   	pop    %ebx
40a658:	8b e5                	mov    %ebp,%esp
40a65a:	5d                   	pop    %ebp
40a65b:	c2 04 00             	ret    $0x4
40a65e:	cc                   	int3
40a65f:	cc                   	int3
40a660:	8b 41 20             	mov    0x20(%ecx),%eax
40a663:	83 38 00             	cmpl   $0x0,(%eax)
40a666:	74 07                	je     0x40a66f
40a668:	8b 41 30             	mov    0x30(%ecx),%eax
40a66b:	8b 00                	mov    (%eax),%eax
40a66d:	99                   	cltd
40a66e:	c3                   	ret
40a66f:	33 c0                	xor    %eax,%eax
40a671:	99                   	cltd
40a672:	c3                   	ret
40a673:	cc                   	int3
40a674:	cc                   	int3
40a675:	cc                   	int3
40a676:	cc                   	int3
40a677:	cc                   	int3
40a678:	cc                   	int3
40a679:	cc                   	int3
40a67a:	cc                   	int3
40a67b:	cc                   	int3
40a67c:	cc                   	int3
40a67d:	cc                   	int3
40a67e:	cc                   	int3
40a67f:	cc                   	int3
40a680:	8b 41 1c             	mov    0x1c(%ecx),%eax
40a683:	83 38 00             	cmpl   $0x0,(%eax)
40a686:	74 07                	je     0x40a68f
40a688:	8b 41 2c             	mov    0x2c(%ecx),%eax
40a68b:	8b 00                	mov    (%eax),%eax
40a68d:	99                   	cltd
40a68e:	c3                   	ret
40a68f:	33 c0                	xor    %eax,%eax
40a691:	99                   	cltd
40a692:	c3                   	ret
40a693:	cc                   	int3
40a694:	cc                   	int3
40a695:	cc                   	int3
40a696:	cc                   	int3
40a697:	cc                   	int3
40a698:	cc                   	int3
40a699:	cc                   	int3
40a69a:	cc                   	int3
40a69b:	cc                   	int3
40a69c:	cc                   	int3
40a69d:	cc                   	int3
40a69e:	cc                   	int3
40a69f:	cc                   	int3
40a6a0:	55                   	push   %ebp
40a6a1:	8b ec                	mov    %esp,%ebp
40a6a3:	ff 75 0c             	push   0xc(%ebp)
40a6a6:	33 d2                	xor    %edx,%edx
40a6a8:	b8 04 00 00 00       	mov    $0x4,%eax
40a6ad:	39 51 38             	cmp    %edx,0x38(%ecx)
40a6b0:	0f 45 c2             	cmovne %edx,%eax
40a6b3:	0b 41 0c             	or     0xc(%ecx),%eax
40a6b6:	0b 45 08             	or     0x8(%ebp),%eax
40a6b9:	50                   	push   %eax
40a6ba:	e8 71 a4 ff ff       	call   0x404b30
40a6bf:	5d                   	pop    %ebp
40a6c0:	c2 08 00             	ret    $0x8
40a6c3:	cc                   	int3
40a6c4:	cc                   	int3
40a6c5:	cc                   	int3
40a6c6:	cc                   	int3
40a6c7:	cc                   	int3
40a6c8:	cc                   	int3
40a6c9:	cc                   	int3
40a6ca:	cc                   	int3
40a6cb:	cc                   	int3
40a6cc:	cc                   	int3
40a6cd:	cc                   	int3
40a6ce:	cc                   	int3
40a6cf:	cc                   	int3
40a6d0:	68 80 dc 44 00       	push   $0x44dc80
40a6d5:	e8 80 07 01 00       	call   0x41ae5a
40a6da:	cc                   	int3
40a6db:	cc                   	int3
40a6dc:	cc                   	int3
40a6dd:	cc                   	int3
40a6de:	cc                   	int3