40bbd1:	8b f8                	mov    %eax,%edi
40bbd3:	74 1d                	je     0x40bbf2
40bbd5:	8b 4e 04             	mov    0x4(%esi),%ecx
40bbd8:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40bbdf:	51                   	push   %ecx
40bbe0:	ff 36                	push   (%esi)
40bbe2:	57                   	push   %edi
40bbe3:	e8 98 32 01 00       	call   0x41ee80
40bbe8:	ff 36                	push   (%esi)
40bbea:	e8 f1 51 01 00       	call   0x420de0
40bbef:	83 c4 10             	add    $0x10,%esp
40bbf2:	89 3e                	mov    %edi,(%esi)
40bbf4:	5f                   	pop    %edi
40bbf5:	eb 9f                	jmp    0x40bb96
40bbf7:	6a 08                	push   $0x8
40bbf9:	58                   	pop    %eax
40bbfa:	eb b9                	jmp    0x40bbb5
40bbfc:	55                   	push   %ebp
40bbfd:	8b ec                	mov    %esp,%ebp
40bbff:	53                   	push   %ebx
40bc00:	56                   	push   %esi
40bc01:	8b f1                	mov    %ecx,%esi
40bc03:	6a 3f                	push   $0x3f
40bc05:	0f b7 46 08          	movzwl 0x8(%esi),%eax
40bc09:	59                   	pop    %ecx
40bc0a:	33 db                	xor    %ebx,%ebx
40bc0c:	6a 30                	push   $0x30
40bc0e:	5a                   	pop    %edx
40bc0f:	66 3b c1             	cmp    %cx,%ax
40bc12:	7f 05                	jg     0x40bc19
40bc14:	66 3b c2             	cmp    %dx,%ax
40bc17:	7d 27                	jge    0x40bc40
40bc19:	8b 45 08             	mov    0x8(%ebp),%eax
40bc1c:	66 89 46 08          	mov    %ax,0x8(%esi)
40bc20:	66 3b c1             	cmp    %cx,%ax
40bc23:	7e 14                	jle    0x40bc39
40bc25:	66 83 f8 10          	cmp    $0x10,%ax
40bc29:	74 44                	je     0x40bc6f
40bc2b:	66 83 f8 20          	cmp    $0x20,%ax
40bc2f:	74 38                	je     0x40bc69
40bc31:	89 1e                	mov    %ebx,(%esi)
40bc33:	5e                   	pop    %esi
40bc34:	5b                   	pop    %ebx
40bc35:	5d                   	pop    %ebp
40bc36:	c2 04 00             	ret    $0x4
40bc39:	66 3b c2             	cmp    %dx,%ax
40bc3c:	7d f3                	jge    0x40bc31
40bc3e:	eb e5                	jmp    0x40bc25
40bc40:	57                   	push   %edi
40bc41:	8b 3e                	mov    (%esi),%edi
40bc43:	85 ff                	test   %edi,%edi
40bc45:	74 1d                	je     0x40bc64
40bc47:	8b 47 0c             	mov    0xc(%edi),%eax
40bc4a:	ff 08                	decl   (%eax)
40bc4c:	8b 47 0c             	mov    0xc(%edi),%eax
40bc4f:	39 18                	cmp    %ebx,(%eax)
40bc51:	0f 84 b1 87 06 00    	je     0x474408
40bc57:	57                   	push   %edi
40bc58:	e8 01 39 01 00       	call   0x41f55e
40bc5d:	59                   	pop    %ecx
40bc5e:	6a 3f                	push   $0x3f
40bc60:	59                   	pop    %ecx
40bc61:	6a 30                	push   $0x30
40bc63:	5a                   	pop    %edx
40bc64:	89 1e                	mov    %ebx,(%esi)
40bc66:	5f                   	pop    %edi
40bc67:	eb b0                	jmp    0x40bc19
40bc69:	d9 ee                	fldz
40bc6b:	dd 1e                	fstpl  (%esi)
40bc6d:	eb c4                	jmp    0x40bc33
40bc6f:	89 5e 04             	mov    %ebx,0x4(%esi)
40bc72:	eb bd                	jmp    0x40bc31
40bc74:	55                   	push   %ebp
40bc75:	8b ec                	mov    %esp,%ebp
40bc77:	56                   	push   %esi
40bc78:	8b f1                	mov    %ecx,%esi
40bc7a:	0f b7 46 08          	movzwl 0x8(%esi),%eax
40bc7e:	66 83 f8 30          	cmp    $0x30,%ax
40bc82:	7c 0c                	jl     0x40bc90
40bc84:	66 83 f8 3f          	cmp    $0x3f,%ax
40bc88:	7f 06                	jg     0x40bc90
40bc8a:	8b 0e                	mov    (%esi),%ecx
40bc8c:	85 c9                	test   %ecx,%ecx
40bc8e:	75 32                	jne    0x40bcc2
40bc90:	6a 10                	push   $0x10
40bc92:	e8 53 38 01 00       	call   0x41f4ea
40bc97:	8b d0                	mov    %eax,%edx
40bc99:	59                   	pop    %ecx
40bc9a:	85 d2                	test   %edx,%edx
40bc9c:	74 2c                	je     0x40bcca
40bc9e:	8b 45 08             	mov    0x8(%ebp),%eax
40bca1:	8b 08                	mov    (%eax),%ecx
40bca3:	89 0a                	mov    %ecx,(%edx)
40bca5:	8b 48 04             	mov    0x4(%eax),%ecx
40bca8:	89 4a 04             	mov    %ecx,0x4(%edx)
40bcab:	8b 48 08             	mov    0x8(%eax),%ecx
40bcae:	89 4a 08             	mov    %ecx,0x8(%edx)
40bcb1:	8b 40 0c             	mov    0xc(%eax),%eax
40bcb4:	89 42 0c             	mov    %eax,0xc(%edx)
40bcb7:	ff 00                	incl   (%eax)
40bcb9:	89 16                	mov    %edx,(%esi)
40bcbb:	8b c6                	mov    %esi,%eax
40bcbd:	5e                   	pop    %esi
40bcbe:	5d                   	pop    %ebp
40bcbf:	c2 04 00             	ret    $0x4
40bcc2:	51                   	push   %ecx
40bcc3:	e8 d1 6d ff ff       	call   0x402a99
40bcc8:	eb c6                	jmp    0x40bc90
40bcca:	33 d2                	xor    %edx,%edx
40bccc:	eb eb                	jmp    0x40bcb9
40bcce:	56                   	push   %esi
40bccf:	8b f1                	mov    %ecx,%esi
40bcd1:	8b 4e 0c             	mov    0xc(%esi),%ecx
40bcd4:	8b 01                	mov    (%ecx),%eax
40bcd6:	83 f8 01             	cmp    $0x1,%eax
40bcd9:	7f 0d                	jg     0x40bce8
40bcdb:	8b 06                	mov    (%esi),%eax
40bcdd:	83 66 04 00          	andl   $0x0,0x4(%esi)
40bce1:	33 c9                	xor    %ecx,%ecx
40bce3:	66 89 08             	mov    %cx,(%eax)
40bce6:	5e                   	pop    %esi
40bce7:	c3                   	ret
40bce8:	48                   	dec    %eax
40bce9:	6a 04                	push   $0x4
40bceb:	89 01                	mov    %eax,(%ecx)
40bced:	e8 f8 37 01 00       	call   0x41f4ea
40bcf2:	59                   	pop    %ecx
40bcf3:	85 c0                	test   %eax,%eax
40bcf5:	74 28                	je     0x40bd1f
40bcf7:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40bcfd:	6a 08                	push   $0x8
40bcff:	89 46 0c             	mov    %eax,0xc(%esi)
40bd02:	58                   	pop    %eax
40bd03:	33 c9                	xor    %ecx,%ecx
40bd05:	6a 02                	push   $0x2
40bd07:	5a                   	pop    %edx
40bd08:	89 46 08             	mov    %eax,0x8(%esi)
40bd0b:	f7 e2                	mul    %edx
40bd0d:	0f 90 c1             	seto   %cl
40bd10:	f7 d9                	neg    %ecx
40bd12:	0b c8                	or     %eax,%ecx
40bd14:	51                   	push   %ecx
40bd15:	e8 5b 31 01 00       	call   0x41ee75
40bd1a:	59                   	pop    %ecx
40bd1b:	89 06                	mov    %eax,(%esi)
40bd1d:	eb bc                	jmp    0x40bcdb
40bd1f:	33 c0                	xor    %eax,%eax
40bd21:	eb da                	jmp    0x40bcfd
40bd23:	cc                   	int3
40bd24:	cc                   	int3
40bd25:	cc                   	int3
40bd26:	cc                   	int3
40bd27:	cc                   	int3
40bd28:	cc                   	int3
40bd29:	cc                   	int3
40bd2a:	cc                   	int3
40bd2b:	cc                   	int3
40bd2c:	cc                   	int3
40bd2d:	cc                   	int3
40bd2e:	cc                   	int3
40bd2f:	cc                   	int3
40bd30:	55                   	push   %ebp
40bd31:	8b ec                	mov    %esp,%ebp
40bd33:	51                   	push   %ecx
40bd34:	53                   	push   %ebx
40bd35:	56                   	push   %esi
40bd36:	8b f1                	mov    %ecx,%esi
40bd38:	57                   	push   %edi
40bd39:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
40bd3d:	74 75                	je     0x40bdb4
40bd3f:	8d 4d 08             	lea    0x8(%ebp),%ecx
40bd42:	e8 b3 00 00 00       	call   0x40bdfa
40bd47:	ff 75 0c             	push   0xc(%ebp)
40bd4a:	ff 75 08             	push   0x8(%ebp)
40bd4d:	ff 15 60 d6 48 00    	call   *0x48d660
40bd53:	8b 7e 08             	mov    0x8(%esi),%edi
40bd56:	85 ff                	test   %edi,%edi
40bd58:	75 5e                	jne    0x40bdb8
40bd5a:	8b 3e                	mov    (%esi),%edi
40bd5c:	85 ff                	test   %edi,%edi
40bd5e:	74 54                	je     0x40bdb4
40bd60:	8b 77 04             	mov    0x4(%edi),%esi
40bd63:	3b 75 0c             	cmp    0xc(%ebp),%esi
40bd66:	75 45                	jne    0x40bdad
40bd68:	8b 55 08             	mov    0x8(%ebp),%edx
40bd6b:	8b 07                	mov    (%edi),%eax
40bd6d:	85 f6                	test   %esi,%esi
40bd6f:	74 11                	je     0x40bd82
40bd71:	66 8b 08             	mov    (%eax),%cx
40bd74:	66 3b 0a             	cmp    (%edx),%cx
40bd77:	75 34                	jne    0x40bdad
40bd79:	83 c0 02             	add    $0x2,%eax
40bd7c:	83 c2 02             	add    $0x2,%edx
40bd7f:	4e                   	dec    %esi
40bd80:	75 ef                	jne    0x40bd71
40bd82:	8b 45 14             	mov    0x14(%ebp),%eax
40bd85:	ff 08                	decl   (%eax)
40bd87:	8b 45 14             	mov    0x14(%ebp),%eax
40bd8a:	83 38 00             	cmpl   $0x0,(%eax)
40bd8d:	75 13                	jne    0x40bda2
40bd8f:	ff 75 08             	push   0x8(%ebp)
40bd92:	e8 c7 37 01 00       	call   0x41f55e
40bd97:	ff 75 14             	push   0x14(%ebp)
40bd9a:	e8 bf 37 01 00       	call   0x41f55e
40bd9f:	83 c4 08             	add    $0x8,%esp
40bda2:	8b c7                	mov    %edi,%eax
40bda4:	5f                   	pop    %edi
40bda5:	5e                   	pop    %esi
40bda6:	5b                   	pop    %ebx
40bda7:	8b e5                	mov    %ebp,%esp
40bda9:	5d                   	pop    %ebp
40bdaa:	c2 10 00             	ret    $0x10
40bdad:	8b 7f 24             	mov    0x24(%edi),%edi
40bdb0:	85 ff                	test   %edi,%edi
40bdb2:	75 ac                	jne    0x40bd60
40bdb4:	33 ff                	xor    %edi,%edi
40bdb6:	eb ca                	jmp    0x40bd82
40bdb8:	8b 76 0c             	mov    0xc(%esi),%esi
40bdbb:	33 db                	xor    %ebx,%ebx
40bdbd:	4e                   	dec    %esi
40bdbe:	78 f4                	js     0x40bdb4
40bdc0:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
40bdc3:	99                   	cltd
40bdc4:	2b c2                	sub    %edx,%eax
40bdc6:	d1 f8                	sar    $1,%eax
40bdc8:	8d 4d 08             	lea    0x8(%ebp),%ecx
40bdcb:	ff 34 87             	push   (%edi,%eax,4)
40bdce:	89 45 fc             	mov    %eax,-0x4(%ebp)
40bdd1:	e8 8e 00 00 00       	call   0x40be64
40bdd6:	85 c0                	test   %eax,%eax
40bdd8:	78 0e                	js     0x40bde8
40bdda:	7e 12                	jle    0x40bdee
40bddc:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40bddf:	43                   	inc    %ebx
40bde0:	3b de                	cmp    %esi,%ebx
40bde2:	7e dc                	jle    0x40bdc0
40bde4:	33 ff                	xor    %edi,%edi
40bde6:	eb 9a                	jmp    0x40bd82
40bde8:	8b 75 fc             	mov    -0x4(%ebp),%esi
40bdeb:	4e                   	dec    %esi
40bdec:	eb f2                	jmp    0x40bde0
40bdee:	3b de                	cmp    %esi,%ebx
40bdf0:	7f c2                	jg     0x40bdb4
40bdf2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40bdf5:	8b 3c 87             	mov    (%edi,%eax,4),%edi
40bdf8:	eb 88                	jmp    0x40bd82
40bdfa:	56                   	push   %esi
40bdfb:	57                   	push   %edi
40bdfc:	8b f9                	mov    %ecx,%edi
40bdfe:	33 f6                	xor    %esi,%esi
40be00:	8b 4f 0c             	mov    0xc(%edi),%ecx
40be03:	46                   	inc    %esi
40be04:	8b 01                	mov    (%ecx),%eax
40be06:	3b c6                	cmp    %esi,%eax
40be08:	7f 03                	jg     0x40be0d
40be0a:	5f                   	pop    %edi
40be0b:	5e                   	pop    %esi
40be0c:	c3                   	ret
40be0d:	48                   	dec    %eax
40be0e:	6a 04                	push   $0x4
40be10:	89 01                	mov    %eax,(%ecx)
40be12:	e8 d3 36 01 00       	call   0x41f4ea
40be17:	59                   	pop    %ecx
40be18:	85 c0                	test   %eax,%eax
40be1a:	74 3f                	je     0x40be5b
40be1c:	89 30                	mov    %esi,(%eax)
40be1e:	53                   	push   %ebx
40be1f:	8b 5f 04             	mov    0x4(%edi),%ebx
40be22:	89 47 0c             	mov    %eax,0xc(%edi)
40be25:	43                   	inc    %ebx
40be26:	74 37                	je     0x40be5f
40be28:	8d 43 07             	lea    0x7(%ebx),%eax
40be2b:	83 e0 f8             	and    $0xfffffff8,%eax
40be2e:	33 c9                	xor    %ecx,%ecx
40be30:	6a 02                	push   $0x2
40be32:	5a                   	pop    %edx
40be33:	89 47 08             	mov    %eax,0x8(%edi)
40be36:	f7 e2                	mul    %edx
40be38:	0f 90 c1             	seto   %cl
40be3b:	f7 d9                	neg    %ecx
40be3d:	0b c8                	or     %eax,%ecx
40be3f:	51                   	push   %ecx
40be40:	e8 30 30 01 00       	call   0x41ee75
40be45:	8d 0c 1b             	lea    (%ebx,%ebx,1),%ecx
40be48:	51                   	push   %ecx
40be49:	ff 37                	push   (%edi)
40be4b:	8b f0                	mov    %eax,%esi
40be4d:	56                   	push   %esi
40be4e:	e8 2d 30 01 00       	call   0x41ee80
40be53:	83 c4 10             	add    $0x10,%esp
40be56:	89 37                	mov    %esi,(%edi)
40be58:	5b                   	pop    %ebx
40be59:	eb af                	jmp    0x40be0a
40be5b:	33 c0                	xor    %eax,%eax
40be5d:	eb bf                	jmp    0x40be1e
40be5f:	6a 08                	push   $0x8
40be61:	58                   	pop    %eax
40be62:	eb ca                	jmp    0x40be2e
40be64:	55                   	push   %ebp
40be65:	8b ec                	mov    %esp,%ebp
40be67:	8b 51 04             	mov    0x4(%ecx),%edx
40be6a:	56                   	push   %esi
40be6b:	8b 75 08             	mov    0x8(%ebp),%esi
40be6e:	8b 46 04             	mov    0x4(%esi),%eax
40be71:	85 d2                	test   %edx,%edx
40be73:	0f 84 b8 66 06 00    	je     0x472531
40be79:	85 c0                	test   %eax,%eax
40be7b:	74 17                	je     0x40be94
40be7d:	8b 09                	mov    (%ecx),%ecx
40be7f:	3b d0                	cmp    %eax,%edx
40be81:	73 0e                	jae    0x40be91
40be83:	50                   	push   %eax
40be84:	8b 16                	mov    (%esi),%edx
40be86:	e8 12 00 00 00       	call   0x40be9d
40be8b:	59                   	pop    %ecx
40be8c:	5e                   	pop    %esi
40be8d:	5d                   	pop    %ebp
40be8e:	c2 04 00             	ret    $0x4
40be91:	52                   	push   %edx
40be92:	eb f0                	jmp    0x40be84
40be94:	85 d2                	test   %edx,%edx
40be96:	74 e5                	je     0x40be7d
40be98:	33 c0                	xor    %eax,%eax
40be9a:	40                   	inc    %eax
40be9b:	eb ef                	jmp    0x40be8c
40be9d:	55                   	push   %ebp
40be9e:	8b ec                	mov    %esp,%ebp
40bea0:	56                   	push   %esi
40bea1:	8b 75 08             	mov    0x8(%ebp),%esi
40bea4:	85 f6                	test   %esi,%esi
40bea6:	74 11                	je     0x40beb9
40bea8:	66 8b 01             	mov    (%ecx),%ax
40beab:	66 3b 02             	cmp    (%edx),%ax
40beae:	75 0d                	jne    0x40bebd
40beb0:	83 c1 02             	add    $0x2,%ecx
40beb3:	83 c2 02             	add    $0x2,%edx
40beb6:	4e                   	dec    %esi
40beb7:	75 ef                	jne    0x40bea8
40beb9:	33 c0                	xor    %eax,%eax
40bebb:	eb 0c                	jmp    0x40bec9
40bebd:	0f b7 01             	movzwl (%ecx),%eax
40bec0:	66 3b 02             	cmp    (%edx),%ax
40bec3:	1b c0                	sbb    %eax,%eax
40bec5:	83 e0 fe             	and    $0xfffffffe,%eax
40bec8:	40                   	inc    %eax
40bec9:	5e                   	pop    %esi
40beca:	5d                   	pop    %ebp
40becb:	c3                   	ret
40becc:	55                   	push   %ebp
40becd:	8b ec                	mov    %esp,%ebp