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
40becf:	8b 45 08             	mov    0x8(%ebp),%eax
40bed2:	53                   	push   %ebx
40bed3:	8b 50 08             	mov    0x8(%eax),%edx
40bed6:	56                   	push   %esi
40bed7:	83 ce ff             	or     $0xffffffff,%esi
40beda:	57                   	push   %edi
40bedb:	85 d2                	test   %edx,%edx
40bedd:	74 14                	je     0x40bef3
40bedf:	8b 58 04             	mov    0x4(%eax),%ebx
40bee2:	8b 4c 93 fc          	mov    -0x4(%ebx,%edx,4),%ecx
40bee6:	e8 13 00 00 00       	call   0x40befe
40beeb:	84 c0                	test   %al,%al
40beed:	0f 84 a0 78 06 00    	je     0x473793
40bef3:	33 f6                	xor    %esi,%esi
40bef5:	5f                   	pop    %edi
40bef6:	8b c6                	mov    %esi,%eax
40bef8:	5e                   	pop    %esi
40bef9:	5b                   	pop    %ebx
40befa:	5d                   	pop    %ebp
40befb:	c2 04 00             	ret    $0x4
40befe:	0f b7 41 08          	movzwl 0x8(%ecx),%eax
40bf02:	66 83 f8 40          	cmp    $0x40,%ax
40bf06:	7c 0a                	jl     0x40bf12
40bf08:	66 83 f8 5f          	cmp    $0x5f,%ax
40bf0c:	7f 04                	jg     0x40bf12
40bf0e:	33 c0                	xor    %eax,%eax
40bf10:	40                   	inc    %eax
40bf11:	c3                   	ret
40bf12:	66 85 c0             	test   %ax,%ax
40bf15:	74 f7                	je     0x40bf0e
40bf17:	66 83 f8 30          	cmp    $0x30,%ax
40bf1b:	74 f1                	je     0x40bf0e
40bf1d:	33 c0                	xor    %eax,%eax
40bf1f:	c3                   	ret
40bf20:	55                   	push   %ebp
40bf21:	8b ec                	mov    %esp,%ebp
40bf23:	51                   	push   %ecx
40bf24:	53                   	push   %ebx
40bf25:	56                   	push   %esi
40bf26:	57                   	push   %edi
40bf27:	8b f9                	mov    %ecx,%edi
40bf29:	8b 4d 08             	mov    0x8(%ebp),%ecx
40bf2c:	e8 91 02 00 00       	call   0x40c1c2
40bf31:	8b 75 0c             	mov    0xc(%ebp),%esi
40bf34:	33 db                	xor    %ebx,%ebx
40bf36:	88 5d ff             	mov    %bl,-0x1(%ebp)
40bf39:	39 1e                	cmp    %ebx,(%esi)
40bf3b:	76 29                	jbe    0x40bf66
40bf3d:	6a 01                	push   $0x1
40bf3f:	8d 45 0c             	lea    0xc(%ebp),%eax
40bf42:	50                   	push   %eax
40bf43:	8b cf                	mov    %edi,%ecx
40bf45:	e8 96 03 00 00       	call   0x40c2e0
40bf4a:	85 c0                	test   %eax,%eax
40bf4c:	0f 84 85 7f 06 00    	je     0x473ed7
40bf52:	ff 75 0c             	push   0xc(%ebp)
40bf55:	8b 4d 08             	mov    0x8(%ebp),%ecx
40bf58:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
40bf5c:	e8 10 00 00 00       	call   0x40bf71
40bf61:	43                   	inc    %ebx
40bf62:	3b 1e                	cmp    (%esi),%ebx
40bf64:	72 d7                	jb     0x40bf3d
40bf66:	89 1e                	mov    %ebx,(%esi)
40bf68:	b0 01                	mov    $0x1,%al
40bf6a:	5f                   	pop    %edi
40bf6b:	5e                   	pop    %esi
40bf6c:	5b                   	pop    %ebx
40bf6d:	c9                   	leave
40bf6e:	c2 08 00             	ret    $0x8
40bf71:	55                   	push   %ebp
40bf72:	8b ec                	mov    %esp,%ebp
40bf74:	57                   	push   %edi
40bf75:	8b f9                	mov    %ecx,%edi
40bf77:	8b 4f 0c             	mov    0xc(%edi),%ecx
40bf7a:	8b 01                	mov    (%ecx),%eax
40bf7c:	83 f8 01             	cmp    $0x1,%eax
40bf7f:	0f 8f b0 7d 06 00    	jg     0x473d35
40bf85:	8b 47 04             	mov    0x4(%edi),%eax
40bf88:	40                   	inc    %eax
40bf89:	50                   	push   %eax
40bf8a:	8b cf                	mov    %edi,%ecx
40bf8c:	e8 28 04 00 00       	call   0x40c3b9
40bf91:	8b 57 04             	mov    0x4(%edi),%edx
40bf94:	8b 0f                	mov    (%edi),%ecx
40bf96:	8a 45 08             	mov    0x8(%ebp),%al
40bf99:	88 04 0a             	mov    %al,(%edx,%ecx,1)
40bf9c:	ff 47 04             	incl   0x4(%edi)
40bf9f:	8b 07                	mov    (%edi),%eax
40bfa1:	8b 4f 04             	mov    0x4(%edi),%ecx
40bfa4:	c6 04 01 00          	movb   $0x0,(%ecx,%eax,1)
40bfa8:	8b c7                	mov    %edi,%eax
40bfaa:	5f                   	pop    %edi
40bfab:	5d                   	pop    %ebp
40bfac:	c2 04 00             	ret    $0x4
40bfaf:	55                   	push   %ebp
40bfb0:	8b ec                	mov    %esp,%ebp
40bfb2:	83 ec 14             	sub    $0x14,%esp
40bfb5:	53                   	push   %ebx
40bfb6:	56                   	push   %esi
40bfb7:	8b f1                	mov    %ecx,%esi
40bfb9:	f6 46 2c 03          	testb  $0x3,0x2c(%esi)
40bfbd:	0f 85 83 00 00 00    	jne    0x40c046
40bfc3:	f6 46 2c 04          	testb  $0x4,0x2c(%esi)
40bfc7:	74 0a                	je     0x40bfd3
40bfc9:	ff 75 08             	push   0x8(%ebp)
40bfcc:	e8 f1 9b 03 00       	call   0x445bc2
40bfd1:	eb 7b                	jmp    0x40c04e
40bfd3:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40bfd7:	6a 10                	push   $0x10
40bfd9:	58                   	pop    %eax
40bfda:	50                   	push   %eax
40bfdb:	89 45 f4             	mov    %eax,-0xc(%ebp)
40bfde:	e8 07 35 01 00       	call   0x41f4ea
40bfe3:	59                   	pop    %ecx
40bfe4:	6a 04                	push   $0x4
40bfe6:	89 45 ec             	mov    %eax,-0x14(%ebp)
40bfe9:	c6 00 00             	movb   $0x0,(%eax)
40bfec:	e8 f9 34 01 00       	call   0x41f4ea
40bff1:	33 db                	xor    %ebx,%ebx
40bff3:	43                   	inc    %ebx
40bff4:	59                   	pop    %ecx
40bff5:	85 c0                	test   %eax,%eax
40bff7:	74 07                	je     0x40c000
40bff9:	89 18                	mov    %ebx,(%eax)
40bffb:	89 45 f8             	mov    %eax,-0x8(%ebp)
40bffe:	eb 04                	jmp    0x40c004
40c000:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40c004:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c007:	50                   	push   %eax
40c008:	8b ce                	mov    %esi,%ecx
40c00a:	e8 51 00 00 00       	call   0x40c060
40c00f:	84 c0                	test   %al,%al
40c011:	74 16                	je     0x40c029
40c013:	ff 75 08             	push   0x8(%ebp)
40c016:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c019:	50                   	push   %eax
40c01a:	e8 bf 01 00 00       	call   0x40c1de
40c01f:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c022:	e8 10 0b 00 00       	call   0x40cb37
40c027:	eb 19                	jmp    0x40c042
40c029:	8b 75 f8             	mov    -0x8(%ebp),%esi
40c02c:	ff 0e                	decl   (%esi)
40c02e:	75 10                	jne    0x40c040
40c030:	ff 75 ec             	push   -0x14(%ebp)
40c033:	e8 26 35 01 00       	call   0x41f55e
40c038:	59                   	pop    %ecx
40c039:	56                   	push   %esi
40c03a:	e8 1f 35 01 00       	call   0x41f55e
40c03f:	59                   	pop    %ecx
40c040:	32 db                	xor    %bl,%bl
40c042:	8a c3                	mov    %bl,%al
40c044:	eb 08                	jmp    0x40c04e
40c046:	ff 75 08             	push   0x8(%ebp)
40c049:	e8 76 9a 03 00       	call   0x445ac4
40c04e:	5e                   	pop    %esi
40c04f:	5b                   	pop    %ebx
40c050:	c9                   	leave
40c051:	c2 04 00             	ret    $0x4
40c054:	cc                   	int3
40c055:	cc                   	int3
40c056:	cc                   	int3
40c057:	cc                   	int3
40c058:	cc                   	int3
40c059:	cc                   	int3
40c05a:	cc                   	int3
40c05b:	cc                   	int3
40c05c:	cc                   	int3
40c05d:	cc                   	int3
40c05e:	cc                   	int3
40c05f:	cc                   	int3
40c060:	55                   	push   %ebp
40c061:	8b ec                	mov    %esp,%ebp
40c063:	83 ec 10             	sub    $0x10,%esp
40c066:	53                   	push   %ebx
40c067:	8b 5d 08             	mov    0x8(%ebp),%ebx