40bc8a:	2c 41                	sub    $0x41,%al
40bc8c:	3c 1a                	cmp    $0x1a,%al
40bc8e:	1a c9                	sbb    %cl,%cl
40bc90:	80 e1 20             	and    $0x20,%cl
40bc93:	02 c1                	add    %cl,%al
40bc95:	04 41                	add    $0x41,%al
40bc97:	86 e0                	xchg   %ah,%al
40bc99:	2c 41                	sub    $0x41,%al
40bc9b:	3c 1a                	cmp    $0x1a,%al
40bc9d:	1a c9                	sbb    %cl,%cl
40bc9f:	80 e1 20             	and    $0x20,%cl
40bca2:	02 c1                	add    %cl,%al
40bca4:	04 41                	add    $0x41,%al
40bca6:	38 e0                	cmp    %ah,%al
40bca8:	74 d2                	je     0x40bc7c
40bcaa:	1a c0                	sbb    %al,%al
40bcac:	1c ff                	sbb    $0xff,%al
40bcae:	0f be c0             	movsbl %al,%eax
40bcb1:	eb 78                	jmp    0x40bd2b
40bcb3:	f0 ff 05 dc 1e 41 00 	lock incl 0x411edc
40bcba:	83 3d d8 1e 41 00 00 	cmpl   $0x0,0x411ed8
40bcc1:	7f 04                	jg     0x40bcc7
40bcc3:	6a 00                	push   $0x0
40bcc5:	eb 15                	jmp    0x40bcdc
40bcc7:	f0 ff 0d dc 1e 41 00 	lock decl 0x411edc
40bcce:	6a 13                	push   $0x13
40bcd0:	e8 20 b3 ff ff       	call   0x406ff5
40bcd5:	c7 04 24 01 00 00 00 	movl   $0x1,(%esp)
40bcdc:	b8 ff 00 00 00       	mov    $0xff,%eax
40bce1:	33 db                	xor    %ebx,%ebx
40bce3:	90                   	nop
40bce4:	0a c0                	or     %al,%al
40bce6:	74 27                	je     0x40bd0f
40bce8:	8a 06                	mov    (%esi),%al
40bcea:	46                   	inc    %esi
40bceb:	8a 1f                	mov    (%edi),%bl
40bced:	47                   	inc    %edi
40bcee:	38 d8                	cmp    %bl,%al
40bcf0:	74 f2                	je     0x40bce4
40bcf2:	50                   	push   %eax
40bcf3:	53                   	push   %ebx
40bcf4:	e8 84 05 00 00       	call   0x40c27d
40bcf9:	8b d8                	mov    %eax,%ebx
40bcfb:	83 c4 04             	add    $0x4,%esp
40bcfe:	e8 7a 05 00 00       	call   0x40c27d
40bd03:	83 c4 04             	add    $0x4,%esp
40bd06:	38 c3                	cmp    %al,%bl
40bd08:	74 da                	je     0x40bce4
40bd0a:	1b c0                	sbb    %eax,%eax
40bd0c:	83 d8 ff             	sbb    $0xffffffff,%eax
40bd0f:	8b d8                	mov    %eax,%ebx
40bd11:	58                   	pop    %eax
40bd12:	0b c0                	or     %eax,%eax
40bd14:	75 09                	jne    0x40bd1f
40bd16:	f0 ff 0d dc 1e 41 00 	lock decl 0x411edc
40bd1d:	eb 0a                	jmp    0x40bd29
40bd1f:	6a 13                	push   $0x13
40bd21:	e8 30 b3 ff ff       	call   0x407056
40bd26:	83 c4 04             	add    $0x4,%esp
40bd29:	8b c3                	mov    %ebx,%eax
40bd2b:	5b                   	pop    %ebx
40bd2c:	5e                   	pop    %esi
40bd2d:	5f                   	pop    %edi
40bd2e:	c9                   	leave
40bd2f:	c3                   	ret
40bd30:	55                   	push   %ebp
40bd31:	8b ec                	mov    %esp,%ebp
40bd33:	57                   	push   %edi
40bd34:	56                   	push   %esi
40bd35:	53                   	push   %ebx
40bd36:	8b 4d 10             	mov    0x10(%ebp),%ecx
40bd39:	0b c9                	or     %ecx,%ecx
40bd3b:	0f 84 e9 00 00 00    	je     0x40be2a
40bd41:	8b 75 08             	mov    0x8(%ebp),%esi
40bd44:	8b 7d 0c             	mov    0xc(%ebp),%edi
40bd47:	8d 05 64 18 41 00    	lea    0x411864,%eax
40bd4d:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
40bd51:	75 4e                	jne    0x40bda1
40bd53:	b7 41                	mov    $0x41,%bh
40bd55:	b3 5a                	mov    $0x5a,%bl
40bd57:	b6 20                	mov    $0x20,%dh
40bd59:	8d 49 00             	lea    0x0(%ecx),%ecx
40bd5c:	8a 26                	mov    (%esi),%ah
40bd5e:	0a e4                	or     %ah,%ah
40bd60:	8a 07                	mov    (%edi),%al
40bd62:	74 21                	je     0x40bd85
40bd64:	0a c0                	or     %al,%al
40bd66:	74 1d                	je     0x40bd85
40bd68:	46                   	inc    %esi
40bd69:	47                   	inc    %edi
40bd6a:	38 fc                	cmp    %bh,%ah
40bd6c:	72 06                	jb     0x40bd74
40bd6e:	38 dc                	cmp    %bl,%ah
40bd70:	77 02                	ja     0x40bd74
40bd72:	02 e6                	add    %dh,%ah
40bd74:	38 f8                	cmp    %bh,%al
40bd76:	72 06                	jb     0x40bd7e
40bd78:	38 d8                	cmp    %bl,%al
40bd7a:	77 02                	ja     0x40bd7e
40bd7c:	02 c6                	add    %dh,%al
40bd7e:	38 c4                	cmp    %al,%ah
40bd80:	75 0d                	jne    0x40bd8f
40bd82:	49                   	dec    %ecx
40bd83:	75 d7                	jne    0x40bd5c
40bd85:	33 c9                	xor    %ecx,%ecx
40bd87:	38 c4                	cmp    %al,%ah
40bd89:	0f 84 9b 00 00 00    	je     0x40be2a
40bd8f:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
40bd94:	0f 82 90 00 00 00    	jb     0x40be2a
40bd9a:	f7 d9                	neg    %ecx
40bd9c:	e9 89 00 00 00       	jmp    0x40be2a
40bda1:	f0 ff 05 dc 1e 41 00 	lock incl 0x411edc
40bda8:	83 3d d8 1e 41 00 00 	cmpl   $0x0,0x411ed8
40bdaf:	7f 04                	jg     0x40bdb5
40bdb1:	6a 00                	push   $0x0
40bdb3:	eb 19                	jmp    0x40bdce
40bdb5:	f0 ff 0d dc 1e 41 00 	lock decl 0x411edc
40bdbc:	8b d9                	mov    %ecx,%ebx
40bdbe:	6a 13                	push   $0x13
40bdc0:	e8 30 b2 ff ff       	call   0x406ff5
40bdc5:	c7 04 24 01 00 00 00 	movl   $0x1,(%esp)
40bdcc:	8b cb                	mov    %ebx,%ecx
40bdce:	33 c0                	xor    %eax,%eax
40bdd0:	33 db                	xor    %ebx,%ebx
40bdd2:	8b ff                	mov    %edi,%edi
40bdd4:	8a 06                	mov    (%esi),%al
40bdd6:	0b c0                	or     %eax,%eax
40bdd8:	8a 1f                	mov    (%edi),%bl
40bdda:	74 23                	je     0x40bdff
40bddc:	0b db                	or     %ebx,%ebx
40bdde:	74 1f                	je     0x40bdff
40bde0:	46                   	inc    %esi
40bde1:	47                   	inc    %edi
40bde2:	51                   	push   %ecx
40bde3:	50                   	push   %eax
40bde4:	53                   	push   %ebx
40bde5:	e8 93 04 00 00       	call   0x40c27d
40bdea:	8b d8                	mov    %eax,%ebx
40bdec:	83 c4 04             	add    $0x4,%esp
40bdef:	e8 89 04 00 00       	call   0x40c27d
40bdf4:	83 c4 04             	add    $0x4,%esp
40bdf7:	59                   	pop    %ecx
40bdf8:	3b c3                	cmp    %ebx,%eax
40bdfa:	75 09                	jne    0x40be05
40bdfc:	49                   	dec    %ecx
40bdfd:	75 d5                	jne    0x40bdd4
40bdff:	33 c9                	xor    %ecx,%ecx
40be01:	3b c3                	cmp    %ebx,%eax
40be03:	74 09                	je     0x40be0e
40be05:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
40be0a:	72 02                	jb     0x40be0e
40be0c:	f7 d9                	neg    %ecx
40be0e:	58                   	pop    %eax
40be0f:	0b c0                	or     %eax,%eax
40be11:	75 09                	jne    0x40be1c
40be13:	f0 ff 0d dc 1e 41 00 	lock decl 0x411edc
40be1a:	eb 0e                	jmp    0x40be2a
40be1c:	8b d9                	mov    %ecx,%ebx
40be1e:	6a 13                	push   $0x13
40be20:	e8 31 b2 ff ff       	call   0x407056
40be25:	83 c4 04             	add    $0x4,%esp
40be28:	8b cb                	mov    %ebx,%ecx
40be2a:	8b c1                	mov    %ecx,%eax
40be2c:	5b                   	pop    %ebx
40be2d:	5e                   	pop    %esi
40be2e:	5f                   	pop    %edi
40be2f:	c9                   	leave
40be30:	c3                   	ret
40be31:	6a 02                	push   $0x2
40be33:	e8 44 99 ff ff       	call   0x40577c
40be38:	59                   	pop    %ecx
40be39:	c3                   	ret
40be3a:	cc                   	int3
40be3b:	cc                   	int3
40be3c:	cc                   	int3
40be3d:	cc                   	int3
40be3e:	cc                   	int3
40be3f:	cc                   	int3
40be40:	51                   	push   %ecx
40be41:	3d 00 10 00 00       	cmp    $0x1000,%eax
40be46:	8d 4c 24 08          	lea    0x8(%esp),%ecx
40be4a:	72 14                	jb     0x40be60
40be4c:	81 e9 00 10 00 00    	sub    $0x1000,%ecx
40be52:	2d 00 10 00 00       	sub    $0x1000,%eax
40be57:	85 01                	test   %eax,(%ecx)
40be59:	3d 00 10 00 00       	cmp    $0x1000,%eax
40be5e:	73 ec                	jae    0x40be4c
40be60:	2b c8                	sub    %eax,%ecx
40be62:	8b c4                	mov    %esp,%eax
40be64:	85 01                	test   %eax,(%ecx)
40be66:	8b e1                	mov    %ecx,%esp
40be68:	8b 08                	mov    (%eax),%ecx
40be6a:	8b 40 04             	mov    0x4(%eax),%eax
40be6d:	50                   	push   %eax
40be6e:	c3                   	ret
40be6f:	55                   	push   %ebp
40be70:	8b ec                	mov    %esp,%ebp
40be72:	6a ff                	push   $0xffffffff
40be74:	68 a0 d9 40 00       	push   $0x40d9a0
40be79:	68 74 87 40 00       	push   $0x408774
40be7e:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40be84:	50                   	push   %eax
40be85:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
40be8c:	83 ec 1c             	sub    $0x1c,%esp
40be8f:	53                   	push   %ebx
40be90:	56                   	push   %esi
40be91:	57                   	push   %edi
40be92:	89 65 e8             	mov    %esp,-0x18(%ebp)
40be95:	33 ff                	xor    %edi,%edi
40be97:	39 3d 70 1a 41 00    	cmp    %edi,0x411a70
40be9d:	75 46                	jne    0x40bee5
40be9f:	57                   	push   %edi
40bea0:	57                   	push   %edi
40bea1:	6a 01                	push   $0x1
40bea3:	5b                   	pop    %ebx
40bea4:	53                   	push   %ebx
40bea5:	68 2c d8 40 00       	push   $0x40d82c
40beaa:	be 00 01 00 00       	mov    $0x100,%esi
40beaf:	56                   	push   %esi
40beb0:	57                   	push   %edi
40beb1:	ff 15 34 d0 40 00    	call   *0x40d034
40beb7:	85 c0                	test   %eax,%eax
40beb9:	74 08                	je     0x40bec3
40bebb:	89 1d 70 1a 41 00    	mov    %ebx,0x411a70
40bec1:	eb 22                	jmp    0x40bee5
40bec3:	57                   	push   %edi
40bec4:	57                   	push   %edi
40bec5:	53                   	push   %ebx
40bec6:	68 28 d8 40 00       	push   $0x40d828
40becb:	56                   	push   %esi
40becc:	57                   	push   %edi
40becd:	ff 15 38 d0 40 00    	call   *0x40d038
40bed3:	85 c0                	test   %eax,%eax
40bed5:	0f 84 22 01 00 00    	je     0x40bffd
40bedb:	c7 05 70 1a 41 00 02 	movl   $0x2,0x411a70
40bee2:	00 00 00
40bee5:	39 7d 14             	cmp    %edi,0x14(%ebp)
40bee8:	7e 10                	jle    0x40befa
40beea:	ff 75 14             	push   0x14(%ebp)
40beed:	ff 75 10             	push   0x10(%ebp)
40bef0:	e8 9e 01 00 00       	call   0x40c093
40bef5:	59                   	pop    %ecx
40bef6:	59                   	pop    %ecx
40bef7:	89 45 14             	mov    %eax,0x14(%ebp)
40befa:	a1 70 1a 41 00       	mov    0x411a70,%eax
40beff:	83 f8 02             	cmp    $0x2,%eax
40bf02:	75 1d                	jne    0x40bf21
40bf04:	ff 75 1c             	push   0x1c(%ebp)
40bf07:	ff 75 18             	push   0x18(%ebp)
40bf0a:	ff 75 14             	push   0x14(%ebp)
40bf0d:	ff 75 10             	push   0x10(%ebp)
40bf10:	ff 75 0c             	push   0xc(%ebp)
40bf13:	ff 75 08             	push   0x8(%ebp)
40bf16:	ff 15 38 d0 40 00    	call   *0x40d038
40bf1c:	e9 de 00 00 00       	jmp    0x40bfff
40bf21:	83 f8 01             	cmp    $0x1,%eax
40bf24:	0f 85 d3 00 00 00    	jne    0x40bffd
40bf2a:	39 7d 20             	cmp    %edi,0x20(%ebp)
40bf2d:	75 08                	jne    0x40bf37
40bf2f:	a1 7c 18 41 00       	mov    0x41187c,%eax
40bf34:	89 45 20             	mov    %eax,0x20(%ebp)
40bf37:	57                   	push   %edi
40bf38:	57                   	push   %edi
40bf39:	ff 75 14             	push   0x14(%ebp)
40bf3c:	ff 75 10             	push   0x10(%ebp)
40bf3f:	8b 45 24             	mov    0x24(%ebp),%eax
40bf42:	f7 d8                	neg    %eax
40bf44:	1b c0                	sbb    %eax,%eax
40bf46:	83 e0 08             	and    $0x8,%eax
40bf49:	40                   	inc    %eax
40bf4a:	50                   	push   %eax
40bf4b:	ff 75 20             	push   0x20(%ebp)
40bf4e:	ff 15 d4 d0 40 00    	call   *0x40d0d4
40bf54:	8b d8                	mov    %eax,%ebx
40bf56:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40bf59:	3b df                	cmp    %edi,%ebx
40bf5b:	0f 84 9c 00 00 00    	je     0x40bffd
40bf61:	89 7d fc             	mov    %edi,-0x4(%ebp)
40bf64:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40bf67:	83 c0 03             	add    $0x3,%eax
40bf6a:	24 fc                	and    $0xfc,%al
40bf6c:	e8 cf fe ff ff       	call   0x40be40
40bf71:	89 65 e8             	mov    %esp,-0x18(%ebp)
40bf74:	8b c4                	mov    %esp,%eax
40bf76:	89 45 dc             	mov    %eax,-0x24(%ebp)
40bf79:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40bf7d:	eb 13                	jmp    0x40bf92
40bf7f:	6a 01                	push   $0x1
40bf81:	58                   	pop    %eax
40bf82:	c3                   	ret
40bf83:	8b 65 e8             	mov    -0x18(%ebp),%esp
40bf86:	33 ff                	xor    %edi,%edi
40bf88:	89 7d dc             	mov    %edi,-0x24(%ebp)
40bf8b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40bf8f:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40bf92:	39 7d dc             	cmp    %edi,-0x24(%ebp)
40bf95:	74 66                	je     0x40bffd
40bf97:	53                   	push   %ebx
40bf98:	ff 75 dc             	push   -0x24(%ebp)
40bf9b:	ff 75 14             	push   0x14(%ebp)
40bf9e:	ff 75 10             	push   0x10(%ebp)
40bfa1:	6a 01                	push   $0x1
40bfa3:	ff 75 20             	push   0x20(%ebp)
40bfa6:	ff 15 d4 d0 40 00    	call   *0x40d0d4
40bfac:	85 c0                	test   %eax,%eax
40bfae:	74 4d                	je     0x40bffd
40bfb0:	57                   	push   %edi
40bfb1:	57                   	push   %edi
40bfb2:	53                   	push   %ebx
40bfb3:	ff 75 dc             	push   -0x24(%ebp)
40bfb6:	ff 75 0c             	push   0xc(%ebp)
40bfb9:	ff 75 08             	push   0x8(%ebp)
40bfbc:	ff 15 34 d0 40 00    	call   *0x40d034
40bfc2:	8b f0                	mov    %eax,%esi
40bfc4:	89 75 d8             	mov    %esi,-0x28(%ebp)
40bfc7:	3b f7                	cmp    %edi,%esi
40bfc9:	74 32                	je     0x40bffd
40bfcb:	f6 45 0d 04          	testb  $0x4,0xd(%ebp)
40bfcf:	74 40                	je     0x40c011
40bfd1:	39 7d 1c             	cmp    %edi,0x1c(%ebp)
40bfd4:	0f 84 b2 00 00 00    	je     0x40c08c
40bfda:	3b 75 1c             	cmp    0x1c(%ebp),%esi
40bfdd:	7f 1e                	jg     0x40bffd
40bfdf:	ff 75 1c             	push   0x1c(%ebp)
40bfe2:	ff 75 18             	push   0x18(%ebp)
40bfe5:	53                   	push   %ebx
40bfe6:	ff 75 dc             	push   -0x24(%ebp)
40bfe9:	ff 75 0c             	push   0xc(%ebp)
40bfec:	ff 75 08             	push   0x8(%ebp)
40bfef:	ff 15 34 d0 40 00    	call   *0x40d034
40bff5:	85 c0                	test   %eax,%eax
40bff7:	0f 85 8f 00 00 00    	jne    0x40c08c
40bffd:	33 c0                	xor    %eax,%eax
40bfff:	8d 65 c8             	lea    -0x38(%ebp),%esp
40c002:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c005:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c00c:	5f                   	pop    %edi
40c00d:	5e                   	pop    %esi
40c00e:	5b                   	pop    %ebx
40c00f:	c9                   	leave
40c010:	c3                   	ret
40c011:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40c018:	8d 04 36             	lea    (%esi,%esi,1),%eax
40c01b:	83 c0 03             	add    $0x3,%eax
40c01e:	24 fc                	and    $0xfc,%al
40c020:	e8 1b fe ff ff       	call   0x40be40
40c025:	89 65 e8             	mov    %esp,-0x18(%ebp)
40c028:	8b dc                	mov    %esp,%ebx
40c02a:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40c02d:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)