4515bf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4515c2:	89 08                	mov    %ecx,(%eax)
4515c4:	2b ca                	sub    %edx,%ecx
4515c6:	8b 47 20             	mov    0x20(%edi),%eax
4515c9:	03 ce                	add    %esi,%ecx
4515cb:	89 10                	mov    %edx,(%eax)
4515cd:	8b 47 30             	mov    0x30(%edi),%eax
4515d0:	89 08                	mov    %ecx,(%eax)
4515d2:	f6 47 3c 04          	testb  $0x4,0x3c(%edi)
4515d6:	74 18                	je     0x4515f0
4515d8:	8b 47 0c             	mov    0xc(%edi),%eax
4515db:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4515de:	89 08                	mov    %ecx,(%eax)
4515e0:	8b 47 1c             	mov    0x1c(%edi),%eax
4515e3:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
4515e9:	8b 47 2c             	mov    0x2c(%edi),%eax
4515ec:	89 08                	mov    %ecx,(%eax)
4515ee:	eb 21                	jmp    0x451611
4515f0:	8b 47 1c             	mov    0x1c(%edi),%eax
4515f3:	8b 57 38             	mov    0x38(%edi),%edx
4515f6:	8b 75 fc             	mov    -0x4(%ebp),%esi
4515f9:	8b 08                	mov    (%eax),%ecx
4515fb:	8b 47 0c             	mov    0xc(%edi),%eax
4515fe:	2b 4d f8             	sub    -0x8(%ebp),%ecx
451601:	03 ce                	add    %esi,%ecx
451603:	2b d1                	sub    %ecx,%edx
451605:	89 30                	mov    %esi,(%eax)
451607:	8b 47 1c             	mov    0x1c(%edi),%eax
45160a:	89 08                	mov    %ecx,(%eax)
45160c:	8b 47 2c             	mov    0x2c(%edi),%eax
45160f:	89 10                	mov    %edx,(%eax)
451611:	8b 47 3c             	mov    0x3c(%edi),%eax
451614:	a8 01                	test   $0x1,%al
451616:	74 0f                	je     0x451627
451618:	53                   	push   %ebx
451619:	ff 75 f8             	push   -0x8(%ebp)
45161c:	8d 4f 40             	lea    0x40(%edi),%ecx
45161f:	e8 5c f1 ff ff       	call   0x450780
451624:	8b 47 3c             	mov    0x3c(%edi),%eax
451627:	83 c8 01             	or     $0x1,%eax
45162a:	89 47 3c             	mov    %eax,0x3c(%edi)
45162d:	8b 47 30             	mov    0x30(%edi),%eax
451630:	ff 08                	decl   (%eax)
451632:	8b 4f 20             	mov    0x20(%edi),%ecx
451635:	5f                   	pop    %edi
451636:	5e                   	pop    %esi
451637:	5b                   	pop    %ebx
451638:	8b 11                	mov    (%ecx),%edx
45163a:	8d 42 01             	lea    0x1(%edx),%eax
45163d:	89 01                	mov    %eax,(%ecx)
45163f:	8b 45 08             	mov    0x8(%ebp),%eax
451642:	88 02                	mov    %al,(%edx)
451644:	8b e5                	mov    %ebp,%esp
451646:	5d                   	pop    %ebp
451647:	c2 04 00             	ret    $0x4
45164a:	5f                   	pop    %edi
45164b:	5e                   	pop    %esi
45164c:	83 c8 ff             	or     $0xffffffff,%eax
45164f:	5b                   	pop    %ebx
451650:	8b e5                	mov    %ebp,%esp
451652:	5d                   	pop    %ebp
451653:	c2 04 00             	ret    $0x4
451656:	cc                   	int3
451657:	cc                   	int3
451658:	cc                   	int3
451659:	cc                   	int3
45165a:	cc                   	int3
45165b:	cc                   	int3
45165c:	cc                   	int3
45165d:	cc                   	int3
45165e:	cc                   	int3
45165f:	cc                   	int3
451660:	55                   	push   %ebp
451661:	8b ec                	mov    %esp,%ebp
451663:	8b 41 1c             	mov    0x1c(%ecx),%eax
451666:	56                   	push   %esi
451667:	8b 30                	mov    (%eax),%esi
451669:	85 f6                	test   %esi,%esi
45166b:	74 3f                	je     0x4516ac
45166d:	8b 41 0c             	mov    0xc(%ecx),%eax
451670:	3b 30                	cmp    (%eax),%esi
451672:	76 38                	jbe    0x4516ac
451674:	8b 55 08             	mov    0x8(%ebp),%edx
451677:	83 fa ff             	cmp    $0xffffffff,%edx
45167a:	74 0b                	je     0x451687
45167c:	3a 56 ff             	cmp    -0x1(%esi),%dl
45167f:	74 06                	je     0x451687
451681:	f6 41 3c 02          	testb  $0x2,0x3c(%ecx)
451685:	75 25                	jne    0x4516ac
451687:	8b 41 2c             	mov    0x2c(%ecx),%eax
45168a:	ff 00                	incl   (%eax)
45168c:	8b 41 1c             	mov    0x1c(%ecx),%eax
45168f:	ff 08                	decl   (%eax)
451691:	83 fa ff             	cmp    $0xffffffff,%edx
451694:	74 07                	je     0x45169d
451696:	8b 49 1c             	mov    0x1c(%ecx),%ecx
451699:	8b 09                	mov    (%ecx),%ecx
45169b:	88 11                	mov    %dl,(%ecx)
45169d:	33 c0                	xor    %eax,%eax
45169f:	83 fa ff             	cmp    $0xffffffff,%edx
4516a2:	5e                   	pop    %esi
4516a3:	0f 44 d0             	cmove  %eax,%edx
4516a6:	8b c2                	mov    %edx,%eax
4516a8:	5d                   	pop    %ebp
4516a9:	c2 04 00             	ret    $0x4
4516ac:	83 c8 ff             	or     $0xffffffff,%eax
4516af:	5e                   	pop    %esi
4516b0:	5d                   	pop    %ebp
4516b1:	c2 04 00             	ret    $0x4
4516b4:	cc                   	int3
4516b5:	cc                   	int3
4516b6:	cc                   	int3
4516b7:	cc                   	int3
4516b8:	cc                   	int3
4516b9:	cc                   	int3
4516ba:	cc                   	int3
4516bb:	cc                   	int3
4516bc:	cc                   	int3
4516bd:	cc                   	int3
4516be:	cc                   	int3
4516bf:	cc                   	int3
4516c0:	55                   	push   %ebp
4516c1:	8b ec                	mov    %esp,%ebp
4516c3:	8b 45 08             	mov    0x8(%ebp),%eax
4516c6:	0f 57 c0             	xorps  %xmm0,%xmm0
4516c9:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
4516cf:	c7 40 04 ff ff ff ff 	movl   $0xffffffff,0x4(%eax)
4516d6:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
4516dd:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
4516e4:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
4516e9:	5d                   	pop    %ebp
4516ea:	c2 14 00             	ret    $0x14
4516ed:	cc                   	int3
4516ee:	cc                   	int3
4516ef:	cc                   	int3
4516f0:	55                   	push   %ebp
4516f1:	8b ec                	mov    %esp,%ebp
4516f3:	83 ec 1c             	sub    $0x1c,%esp
4516f6:	53                   	push   %ebx
4516f7:	56                   	push   %esi
4516f8:	8b f1                	mov    %ecx,%esi
4516fa:	57                   	push   %edi
4516fb:	8b 46 1c             	mov    0x1c(%esi),%eax
4516fe:	8b 38                	mov    (%eax),%edi
451700:	8b 46 20             	mov    0x20(%esi),%eax
451703:	89 7d fc             	mov    %edi,-0x4(%ebp)
451706:	8b 08                	mov    (%eax),%ecx
451708:	85 c9                	test   %ecx,%ecx
45170a:	74 08                	je     0x451714
45170c:	39 4e 38             	cmp    %ecx,0x38(%esi)
45170f:	73 03                	jae    0x451714
451711:	89 4e 38             	mov    %ecx,0x38(%esi)
451714:	8b 46 0c             	mov    0xc(%esi),%eax
451717:	8b 5d 18             	mov    0x18(%ebp),%ebx
45171a:	8b 10                	mov    (%eax),%edx
45171c:	8b 46 38             	mov    0x38(%esi),%eax
45171f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
451722:	2b c2                	sub    %edx,%eax
451724:	89 45 f0             	mov    %eax,-0x10(%ebp)
451727:	8b 45 14             	mov    0x14(%ebp),%eax
45172a:	89 55 ec             	mov    %edx,-0x14(%ebp)
45172d:	83 e8 00             	sub    $0x0,%eax
451730:	74 61                	je     0x451793
451732:	83 e8 01             	sub    $0x1,%eax
451735:	74 13                	je     0x45174a
451737:	83 e8 01             	sub    $0x1,%eax
45173a:	0f 85 ec 00 00 00    	jne    0x45182c
451740:	8b 45 f0             	mov    -0x10(%ebp),%eax
451743:	99                   	cltd
451744:	8b f8                	mov    %eax,%edi
451746:	8b c2                	mov    %edx,%eax
451748:	eb 57                	jmp    0x4517a1
45174a:	8b c3                	mov    %ebx,%eax
45174c:	83 e0 03             	and    $0x3,%eax
45174f:	3c 03                	cmp    $0x3,%al
451751:	0f 84 d5 00 00 00    	je     0x45182c
451757:	f6 c3 01             	test   $0x1,%bl
45175a:	74 17                	je     0x451773
45175c:	85 ff                	test   %edi,%edi
45175e:	75 08                	jne    0x451768
451760:	85 d2                	test   %edx,%edx
451762:	0f 85 c4 00 00 00    	jne    0x45182c
451768:	8b c7                	mov    %edi,%eax
45176a:	2b c2                	sub    %edx,%eax
45176c:	99                   	cltd
45176d:	8b f8                	mov    %eax,%edi
45176f:	8b c2                	mov    %edx,%eax
451771:	eb 2e                	jmp    0x4517a1
451773:	f6 c3 02             	test   $0x2,%bl
451776:	0f 84 b0 00 00 00    	je     0x45182c
45177c:	85 c9                	test   %ecx,%ecx
45177e:	75 08                	jne    0x451788
451780:	85 d2                	test   %edx,%edx
451782:	0f 85 a4 00 00 00    	jne    0x45182c
451788:	8b c1                	mov    %ecx,%eax
45178a:	2b c2                	sub    %edx,%eax
45178c:	99                   	cltd
45178d:	8b f8                	mov    %eax,%edi
45178f:	8b c2                	mov    %edx,%eax
451791:	eb 0e                	jmp    0x4517a1
451793:	0f 57 c0             	xorps  %xmm0,%xmm0
451796:	66 0f 13 45 f4       	movlpd %xmm0,-0xc(%ebp)
45179b:	8b 45 f8             	mov    -0x8(%ebp),%eax
45179e:	8b 7d f4             	mov    -0xc(%ebp),%edi
4517a1:	03 7d 0c             	add    0xc(%ebp),%edi
4517a4:	13 45 10             	adc    0x10(%ebp),%eax
4517a7:	89 45 f8             	mov    %eax,-0x8(%ebp)
4517aa:	8b 45 f0             	mov    -0x10(%ebp),%eax
4517ad:	99                   	cltd
4517ae:	39 55 f8             	cmp    %edx,-0x8(%ebp)
4517b1:	77 79                	ja     0x45182c
4517b3:	72 04                	jb     0x4517b9
4517b5:	3b f8                	cmp    %eax,%edi
4517b7:	77 73                	ja     0x45182c
4517b9:	8b 55 fc             	mov    -0x4(%ebp),%edx
4517bc:	8b c7                	mov    %edi,%eax
4517be:	0b 45 f8             	or     -0x8(%ebp),%eax
4517c1:	74 12                	je     0x4517d5
4517c3:	f6 c3 01             	test   $0x1,%bl
4517c6:	74 04                	je     0x4517cc
4517c8:	85 d2                	test   %edx,%edx
4517ca:	74 60                	je     0x45182c
4517cc:	f6 c3 02             	test   $0x2,%bl
4517cf:	74 04                	je     0x4517d5
4517d1:	85 c9                	test   %ecx,%ecx
4517d3:	74 57                	je     0x45182c
4517d5:	8b 45 ec             	mov    -0x14(%ebp),%eax
4517d8:	03 c7                	add    %edi,%eax
4517da:	89 45 f0             	mov    %eax,-0x10(%ebp)
4517dd:	f6 c3 01             	test   $0x1,%bl
4517e0:	74 13                	je     0x4517f5
4517e2:	85 d2                	test   %edx,%edx
4517e4:	74 0f                	je     0x4517f5
4517e6:	8b 56 1c             	mov    0x1c(%esi),%edx
4517e9:	89 02                	mov    %eax,(%edx)
4517eb:	8b 55 e4             	mov    -0x1c(%ebp),%edx
4517ee:	2b d0                	sub    %eax,%edx
4517f0:	8b 46 2c             	mov    0x2c(%esi),%eax
4517f3:	89 10                	mov    %edx,(%eax)
4517f5:	f6 c3 02             	test   $0x2,%bl
4517f8:	74 25                	je     0x45181f
4517fa:	85 c9                	test   %ecx,%ecx
4517fc:	74 21                	je     0x45181f
4517fe:	8b 46 30             	mov    0x30(%esi),%eax
451801:	8b 4e 20             	mov    0x20(%esi),%ecx
451804:	8b 10                	mov    (%eax),%edx
451806:	8b 46 10             	mov    0x10(%esi),%eax
451809:	03 11                	add    (%ecx),%edx
45180b:	8b 4d ec             	mov    -0x14(%ebp),%ecx
45180e:	89 08                	mov    %ecx,(%eax)
451810:	8b 46 20             	mov    0x20(%esi),%eax
451813:	8b 4d f0             	mov    -0x10(%ebp),%ecx
451816:	2b d1                	sub    %ecx,%edx
451818:	89 08                	mov    %ecx,(%eax)
45181a:	8b 46 30             	mov    0x30(%esi),%eax
45181d:	89 10                	mov    %edx,(%eax)
45181f:	8b 45 08             	mov    0x8(%ebp),%eax
451822:	8b 4d f8             	mov    -0x8(%ebp),%ecx
451825:	89 38                	mov    %edi,(%eax)
451827:	89 48 04             	mov    %ecx,0x4(%eax)
45182a:	eb 10                	jmp    0x45183c
45182c:	8b 45 08             	mov    0x8(%ebp),%eax
45182f:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
451835:	c7 40 04 ff ff ff ff 	movl   $0xffffffff,0x4(%eax)
45183c:	5f                   	pop    %edi
45183d:	0f 57 c0             	xorps  %xmm0,%xmm0
451840:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
451847:	5e                   	pop    %esi
451848:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
45184f:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
451854:	5b                   	pop    %ebx
451855:	8b e5                	mov    %ebp,%esp
451857:	5d                   	pop    %ebp
451858:	c2 14 00             	ret    $0x14
45185b:	cc                   	int3
45185c:	cc                   	int3
45185d:	cc                   	int3
45185e:	cc                   	int3
45185f:	cc                   	int3
451860:	55                   	push   %ebp
451861:	8b ec                	mov    %esp,%ebp
451863:	8b 45 08             	mov    0x8(%ebp),%eax
451866:	0f 57 c0             	xorps  %xmm0,%xmm0
451869:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
45186f:	c7 40 04 ff ff ff ff 	movl   $0xffffffff,0x4(%eax)
451876:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
45187d:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
451884:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
451889:	5d                   	pop    %ebp
45188a:	c2 20 00             	ret    $0x20
45188d:	cc                   	int3
45188e:	cc                   	int3
45188f:	cc                   	int3
451890:	55                   	push   %ebp
451891:	8b ec                	mov    %esp,%ebp
451893:	83 ec 18             	sub    $0x18,%esp
451896:	8b 45 10             	mov    0x10(%ebp),%eax
451899:	53                   	push   %ebx
45189a:	8b 5d 0c             	mov    0xc(%ebp),%ebx
45189d:	03 5d 14             	add    0x14(%ebp),%ebx
4518a0:	56                   	push   %esi
4518a1:	13 45 18             	adc    0x18(%ebp),%eax
4518a4:	8b 75 08             	mov    0x8(%ebp),%esi
4518a7:	57                   	push   %edi
4518a8:	8b f9                	mov    %ecx,%edi
4518aa:	89 45 f8             	mov    %eax,-0x8(%ebp)
4518ad:	8b 47 1c             	mov    0x1c(%edi),%eax
4518b0:	8b 00                	mov    (%eax),%eax
4518b2:	89 45 f4             	mov    %eax,-0xc(%ebp)
4518b5:	8b 47 20             	mov    0x20(%edi),%eax
4518b8:	8b 08                	mov    (%eax),%ecx
4518ba:	85 c9                	test   %ecx,%ecx
4518bc:	74 08                	je     0x4518c6
4518be:	39 4f 38             	cmp    %ecx,0x38(%edi)
4518c1:	73 03                	jae    0x4518c6
4518c3:	89 4f 38             	mov    %ecx,0x38(%edi)
4518c6:	8b 47 0c             	mov    0xc(%edi),%eax
4518c9:	8b 10                	mov    (%eax),%edx
4518cb:	8b 47 38             	mov    0x38(%edi),%eax
4518ce:	89 45 ec             	mov    %eax,-0x14(%ebp)
4518d1:	2b c2                	sub    %edx,%eax
4518d3:	89 55 fc             	mov    %edx,-0x4(%ebp)
4518d6:	99                   	cltd
4518d7:	39 55 f8             	cmp    %edx,-0x8(%ebp)
4518da:	77 79                	ja     0x451955
4518dc:	72 04                	jb     0x4518e2
4518de:	3b d8                	cmp    %eax,%ebx
4518e0:	77 73                	ja     0x451955
4518e2:	8b 55 24             	mov    0x24(%ebp),%edx
4518e5:	8b c3                	mov    %ebx,%eax
4518e7:	0b 45 f8             	or     -0x8(%ebp),%eax
4518ea:	74 14                	je     0x451900
4518ec:	f6 c2 01             	test   $0x1,%dl
4518ef:	74 06                	je     0x4518f7
4518f1:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
4518f5:	74 5e                	je     0x451955
4518f7:	f6 c2 02             	test   $0x2,%dl
4518fa:	74 04                	je     0x451900
4518fc:	85 c9                	test   %ecx,%ecx
4518fe:	74 55                	je     0x451955
451900:	8b 45 fc             	mov    -0x4(%ebp),%eax
451903:	03 c3                	add    %ebx,%eax
451905:	f6 c2 01             	test   $0x1,%dl
451908:	74 18                	je     0x451922
45190a:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
45190e:	74 12                	je     0x451922
451910:	8b 57 1c             	mov    0x1c(%edi),%edx
451913:	89 02                	mov    %eax,(%edx)
451915:	8b 55 ec             	mov    -0x14(%ebp),%edx
451918:	2b d0                	sub    %eax,%edx