40bcc4:	33 c9                	xor    %ecx,%ecx
40bcc6:	39 4e 04             	cmp    %ecx,0x4(%esi)
40bcc9:	76 5c                	jbe    0x40bd27
40bccb:	8b 06                	mov    (%esi),%eax
40bccd:	0f b7 14 58          	movzwl (%eax,%ebx,2),%edx
40bcd1:	43                   	inc    %ebx
40bcd2:	66 85 d2             	test   %dx,%dx
40bcd5:	74 50                	je     0x40bd27
40bcd7:	66 83 fa 5c          	cmp    $0x5c,%dx
40bcdb:	75 31                	jne    0x40bd0e
40bcdd:	0f b7 3c 58          	movzwl (%eax,%ebx,2),%edi
40bce1:	83 ef 22             	sub    $0x22,%edi
40bce4:	74 23                	je     0x40bd09
40bce6:	83 ef 3a             	sub    $0x3a,%edi
40bce9:	74 1a                	je     0x40bd05
40bceb:	83 ef 12             	sub    $0x12,%edi
40bcee:	74 11                	je     0x40bd01
40bcf0:	83 ef 04             	sub    $0x4,%edi
40bcf3:	74 08                	je     0x40bcfd
40bcf5:	4f                   	dec    %edi
40bcf6:	4f                   	dec    %edi
40bcf7:	75 24                	jne    0x40bd1d
40bcf9:	6a 09                	push   $0x9
40bcfb:	eb 0e                	jmp    0x40bd0b
40bcfd:	6a 0d                	push   $0xd
40bcff:	eb 0a                	jmp    0x40bd0b
40bd01:	6a 0a                	push   $0xa
40bd03:	eb 06                	jmp    0x40bd0b
40bd05:	6a 5c                	push   $0x5c
40bd07:	eb 02                	jmp    0x40bd0b
40bd09:	6a 22                	push   $0x22
40bd0b:	43                   	inc    %ebx
40bd0c:	eb 0e                	jmp    0x40bd1c
40bd0e:	66 83 fa 0d          	cmp    $0xd,%dx
40bd12:	74 06                	je     0x40bd1a
40bd14:	66 83 fa 0a          	cmp    $0xa,%dx
40bd18:	75 03                	jne    0x40bd1d
40bd1a:	6a 0c                	push   $0xc
40bd1c:	5a                   	pop    %edx
40bd1d:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40bd21:	41                   	inc    %ecx
40bd22:	3b 5e 04             	cmp    0x4(%esi),%ebx
40bd25:	72 a4                	jb     0x40bccb
40bd27:	8b 06                	mov    (%esi),%eax
40bd29:	33 d2                	xor    %edx,%edx
40bd2b:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40bd2f:	89 4e 04             	mov    %ecx,0x4(%esi)
40bd32:	8d 8d c0 ef ff ff    	lea    -0x1040(%ebp),%ecx
40bd38:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40bd3c:	e8 c9 ce ff ff       	call   0x408c0a
40bd41:	5f                   	pop    %edi
40bd42:	5b                   	pop    %ebx
40bd43:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40bd46:	5e                   	pop    %esi
40bd47:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40bd4e:	c9                   	leave
40bd4f:	c2 04 00             	ret    $0x4
40bd52:	55                   	push   %ebp
40bd53:	8b ec                	mov    %esp,%ebp
40bd55:	b8 14 20 00 00       	mov    $0x2014,%eax
40bd5a:	e8 71 e7 00 00       	call   0x41a4d0
40bd5f:	53                   	push   %ebx
40bd60:	8b d9                	mov    %ecx,%ebx
40bd62:	83 3b 00             	cmpl   $0x0,(%ebx)
40bd65:	56                   	push   %esi
40bd66:	57                   	push   %edi
40bd67:	0f 84 1b 01 00 00    	je     0x40be88
40bd6d:	8b 45 14             	mov    0x14(%ebp),%eax
40bd70:	83 e8 00             	sub    $0x0,%eax
40bd73:	b9 06 a7 42 00       	mov    $0x42a706,%ecx
40bd78:	74 14                	je     0x40bd8e
40bd7a:	48                   	dec    %eax
40bd7b:	74 0a                	je     0x40bd87
40bd7d:	48                   	dec    %eax
40bd7e:	75 13                	jne    0x40bd93
40bd80:	b9 04 a7 42 00       	mov    $0x42a704,%ecx
40bd85:	eb 0c                	jmp    0x40bd93
40bd87:	b9 00 a7 42 00       	mov    $0x42a700,%ecx
40bd8c:	eb 05                	jmp    0x40bd93
40bd8e:	b9 fc a6 42 00       	mov    $0x42a6fc,%ecx
40bd93:	6a 01                	push   $0x1
40bd95:	51                   	push   %ecx
40bd96:	6a ff                	push   $0xffffffff
40bd98:	e8 e0 99 ff ff       	call   0x40577d
40bd9d:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40bda1:	8b f8                	mov    %eax,%edi
40bda3:	be 00 10 00 00       	mov    $0x1000,%esi
40bda8:	74 2d                	je     0x40bdd7
40bdaa:	56                   	push   %esi
40bdab:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40bdb1:	50                   	push   %eax
40bdb2:	ff 75 18             	push   0x18(%ebp)
40bdb5:	e8 7b 59 00 00       	call   0x411735
40bdba:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40bdc0:	50                   	push   %eax
40bdc1:	e8 7a e6 00 00       	call   0x41a440
40bdc6:	59                   	pop    %ecx
40bdc7:	50                   	push   %eax
40bdc8:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40bdce:	50                   	push   %eax
40bdcf:	57                   	push   %edi
40bdd0:	e8 a8 99 ff ff       	call   0x40577d
40bdd5:	8b f8                	mov    %eax,%edi
40bdd7:	56                   	push   %esi
40bdd8:	8d 85 ec ef ff ff    	lea    -0x1014(%ebp),%eax
40bdde:	50                   	push   %eax
40bddf:	ff 75 08             	push   0x8(%ebp)
40bde2:	e8 4e 59 00 00       	call   0x411735
40bde7:	8d 85 ec ef ff ff    	lea    -0x1014(%ebp),%eax
40bded:	50                   	push   %eax
40bdee:	c6 45 eb 00          	movb   $0x0,-0x15(%ebp)
40bdf2:	e8 49 e6 00 00       	call   0x41a440
40bdf7:	59                   	pop    %ecx
40bdf8:	50                   	push   %eax
40bdf9:	8d 85 ec ef ff ff    	lea    -0x1014(%ebp),%eax
40bdff:	50                   	push   %eax
40be00:	57                   	push   %edi
40be01:	e8 77 99 ff ff       	call   0x40577d
40be06:	f7 d0                	not    %eax
40be08:	50                   	push   %eax
40be09:	68 f0 a6 42 00       	push   $0x42a6f0
40be0e:	8d 45 ec             	lea    -0x14(%ebp),%eax
40be11:	6a 0a                	push   $0xa
40be13:	50                   	push   %eax
40be14:	e8 c9 17 00 00       	call   0x40d5e2
40be19:	83 c4 10             	add    $0x10,%esp
40be1c:	8d 45 ec             	lea    -0x14(%ebp),%eax
40be1f:	50                   	push   %eax
40be20:	8b cb                	mov    %ebx,%ecx
40be22:	e8 b3 fb ff ff       	call   0x40b9da
40be27:	85 c0                	test   %eax,%eax
40be29:	74 5d                	je     0x40be88
40be2b:	8d 58 14             	lea    0x14(%eax),%ebx
40be2e:	6a 0c                	push   $0xc
40be30:	53                   	push   %ebx
40be31:	e8 13 06 01 00       	call   0x41c449
40be36:	59                   	pop    %ecx
40be37:	59                   	pop    %ecx
40be38:	85 c0                	test   %eax,%eax
40be3a:	74 08                	je     0x40be44
40be3c:	2b c3                	sub    %ebx,%eax
40be3e:	d1 f8                	sar    $1,%eax
40be40:	8b f0                	mov    %eax,%esi
40be42:	eb 05                	jmp    0x40be49
40be44:	be ff 00 00 00       	mov    $0xff,%esi
40be49:	8b 45 10             	mov    0x10(%ebp),%eax
40be4c:	8d 48 ff             	lea    -0x1(%eax),%ecx
40be4f:	3b f1                	cmp    %ecx,%esi
40be51:	76 08                	jbe    0x40be5b
40be53:	f7 d8                	neg    %eax
40be55:	1b c0                	sbb    %eax,%eax
40be57:	23 c1                	and    %ecx,%eax
40be59:	8b f0                	mov    %eax,%esi
40be5b:	8b 7d 0c             	mov    0xc(%ebp),%edi
40be5e:	85 f6                	test   %esi,%esi
40be60:	76 0b                	jbe    0x40be6d
40be62:	56                   	push   %esi
40be63:	53                   	push   %ebx
40be64:	57                   	push   %edi
40be65:	e8 47 05 01 00       	call   0x41c3b1
40be6a:	83 c4 0c             	add    $0xc,%esp
40be6d:	33 c0                	xor    %eax,%eax
40be6f:	6a 22                	push   $0x22
40be71:	57                   	push   %edi
40be72:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
40be76:	e8 f4 05 01 00       	call   0x41c46f
40be7b:	59                   	pop    %ecx
40be7c:	59                   	pop    %ecx
40be7d:	85 c0                	test   %eax,%eax
40be7f:	74 1a                	je     0x40be9b
40be81:	33 c9                	xor    %ecx,%ecx
40be83:	66 89 08             	mov    %cx,(%eax)
40be86:	eb 13                	jmp    0x40be9b
40be88:	8b 45 0c             	mov    0xc(%ebp),%eax
40be8b:	39 45 08             	cmp    %eax,0x8(%ebp)
40be8e:	74 0b                	je     0x40be9b
40be90:	ff 75 08             	push   0x8(%ebp)
40be93:	50                   	push   %eax
40be94:	e8 3a e3 00 00       	call   0x41a1d3
40be99:	59                   	pop    %ecx
40be9a:	59                   	pop    %ecx
40be9b:	5f                   	pop    %edi
40be9c:	5e                   	pop    %esi
40be9d:	5b                   	pop    %ebx
40be9e:	c9                   	leave
40be9f:	c2 14 00             	ret    $0x14
40bea2:	55                   	push   %ebp
40bea3:	8b ec                	mov    %esp,%ebp
40bea5:	81 ec 00 04 00 00    	sub    $0x400,%esp
40beab:	53                   	push   %ebx
40beac:	56                   	push   %esi
40bead:	57                   	push   %edi
40beae:	ff 75 08             	push   0x8(%ebp)
40beb1:	8d 85 00 fc ff ff    	lea    -0x400(%ebp),%eax
40beb7:	6a 01                	push   $0x1
40beb9:	68 00 02 00 00       	push   $0x200
40bebe:	50                   	push   %eax
40bebf:	68 3c a5 42 00       	push   $0x42a53c
40bec4:	e8 89 fe ff ff       	call   0x40bd52
40bec9:	8d 85 00 fc ff ff    	lea    -0x400(%ebp),%eax
40becf:	6a 2a                	push   $0x2a
40bed1:	50                   	push   %eax
40bed2:	e8 72 05 01 00       	call   0x41c449
40bed7:	59                   	pop    %ecx
40bed8:	59                   	pop    %ecx
40bed9:	8b f8                	mov    %eax,%edi
40bedb:	6a 64                	push   $0x64
40bedd:	5b                   	pop    %ebx
40bede:	85 ff                	test   %edi,%edi
40bee0:	74 21                	je     0x40bf03
40bee2:	8d 85 00 fc ff ff    	lea    -0x400(%ebp),%eax
40bee8:	50                   	push   %eax
40bee9:	e8 cc 5c 00 00       	call   0x411bba
40beee:	8b 75 0c             	mov    0xc(%ebp),%esi
40bef1:	83 c7 02             	add    $0x2,%edi
40bef4:	57                   	push   %edi
40bef5:	89 06                	mov    %eax,(%esi)
40bef7:	e8 be 5c 00 00       	call   0x411bba
40befc:	8b 4d 10             	mov    0x10(%ebp),%ecx
40beff:	89 01                	mov    %eax,(%ecx)
40bf01:	eb 0a                	jmp    0x40bf0d
40bf03:	8b 4d 10             	mov    0x10(%ebp),%ecx
40bf06:	8b 75 0c             	mov    0xc(%ebp),%esi
40bf09:	89 19                	mov    %ebx,(%ecx)
40bf0b:	89 1e                	mov    %ebx,(%esi)
40bf0d:	39 1e                	cmp    %ebx,(%esi)
40bf0f:	75 08                	jne    0x40bf19
40bf11:	39 19                	cmp    %ebx,(%ecx)
40bf13:	75 04                	jne    0x40bf19
40bf15:	33 c0                	xor    %eax,%eax
40bf17:	eb 03                	jmp    0x40bf1c
40bf19:	33 c0                	xor    %eax,%eax
40bf1b:	40                   	inc    %eax
40bf1c:	5f                   	pop    %edi
40bf1d:	5e                   	pop    %esi
40bf1e:	5b                   	pop    %ebx
40bf1f:	c9                   	leave
40bf20:	c2 0c 00             	ret    $0xc
40bf23:	55                   	push   %ebp
40bf24:	8b ec                	mov    %esp,%ebp
40bf26:	81 ec 00 08 00 00    	sub    $0x800,%esp
40bf2c:	56                   	push   %esi
40bf2d:	57                   	push   %edi
40bf2e:	6a 00                	push   $0x0
40bf30:	8b f9                	mov    %ecx,%edi
40bf32:	ff 15 80 a0 42 00    	call   *0x42a080
40bf38:	6a 05                	push   $0x5
40bf3a:	be 10 a7 42 00       	mov    $0x42a710,%esi
40bf3f:	56                   	push   %esi
40bf40:	50                   	push   %eax
40bf41:	ff 15 7c a0 42 00    	call   *0x42a07c
40bf47:	85 c0                	test   %eax,%eax
40bf49:	74 06                	je     0x40bf51
40bf4b:	c6 47 10 01          	movb   $0x1,0x10(%edi)
40bf4f:	eb 34                	jmp    0x40bf85
40bf51:	b8 08 a7 42 00       	mov    $0x42a708,%eax
40bf56:	50                   	push   %eax
40bf57:	6a 01                	push   $0x1
40bf59:	68 00 04 00 00       	push   $0x400
40bf5e:	8d 8d 00 f8 ff ff    	lea    -0x800(%ebp),%ecx
40bf64:	51                   	push   %ecx
40bf65:	50                   	push   %eax
40bf66:	8b cf                	mov    %edi,%ecx
40bf68:	e8 e5 fd ff ff       	call   0x40bd52
40bf6d:	8d 85 00 f8 ff ff    	lea    -0x800(%ebp),%eax
40bf73:	56                   	push   %esi
40bf74:	50                   	push   %eax
40bf75:	e8 87 e4 00 00       	call   0x41a401
40bf7a:	f7 d8                	neg    %eax
40bf7c:	1a c0                	sbb    %al,%al
40bf7e:	59                   	pop    %ecx
40bf7f:	fe c0                	inc    %al
40bf81:	59                   	pop    %ecx
40bf82:	88 47 10             	mov    %al,0x10(%edi)
40bf85:	5f                   	pop    %edi
40bf86:	5e                   	pop    %esi
40bf87:	c9                   	leave
40bf88:	c3                   	ret
40bf89:	55                   	push   %ebp
40bf8a:	8b ec                	mov    %esp,%ebp
40bf8c:	81 ec 50 08 00 00    	sub    $0x850,%esp
40bf92:	53                   	push   %ebx
40bf93:	56                   	push   %esi
40bf94:	57                   	push   %edi
40bf95:	8d 45 f4             	lea    -0xc(%ebp),%eax
40bf98:	50                   	push   %eax
40bf99:	8d 45 f0             	lea    -0x10(%ebp),%eax
40bf9c:	50                   	push   %eax
40bf9d:	ff 75 0c             	push   0xc(%ebp)
40bfa0:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40bfa3:	e8 fa fe ff ff       	call   0x40bea2
40bfa8:	88 45 ff             	mov    %al,-0x1(%ebp)
40bfab:	8d 45 d0             	lea    -0x30(%ebp),%eax
40bfae:	50                   	push   %eax
40bfaf:	ff 75 08             	push   0x8(%ebp)
40bfb2:	ff 15 24 a3 42 00    	call   *0x42a324
40bfb8:	8d 45 b0             	lea    -0x50(%ebp),%eax
40bfbb:	50                   	push   %eax
40bfbc:	ff 75 08             	push   0x8(%ebp)
40bfbf:	ff 15 28 a3 42 00    	call   *0x42a328
40bfc5:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40bfc8:	2b 4d d0             	sub    -0x30(%ebp),%ecx
40bfcb:	8b 75 dc             	mov    -0x24(%ebp),%esi
40bfce:	2b 75 d4             	sub    -0x2c(%ebp),%esi
40bfd1:	8b 45 b8             	mov    -0x48(%ebp),%eax
40bfd4:	41                   	inc    %ecx
40bfd5:	46                   	inc    %esi
40bfd6:	8b d9                	mov    %ecx,%ebx
40bfd8:	8b fe                	mov    %esi,%edi
40bfda:	2b 7d bc             	sub    -0x44(%ebp),%edi
40bfdd:	2b d8                	sub    %eax,%ebx
40bfdf:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40bfe3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40bfe6:	0f 84 99 00 00 00    	je     0x40c085
40bfec:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
40bff0:	0f 85 d3 00 00 00    	jne    0x40c0c9
40bff6:	0f af 45 f0          	imul   -0x10(%ebp),%eax
40bffa:	99                   	cltd
40bffb:	6a 64                	push   $0x64
40bffd:	5b                   	pop    %ebx
40bffe:	f7 fb                	idiv   %ebx
40c000:	03 45 f8             	add    -0x8(%ebp),%eax
40c003:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c006:	8b 45 bc             	mov    -0x44(%ebp),%eax
40c009:	0f af 45 f4          	imul   -0xc(%ebp),%eax
40c00d:	99                   	cltd
40c00e:	f7 fb                	idiv   %ebx
40c010:	03 c7                	add    %edi,%eax
40c012:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c015:	8b c1                	mov    %ecx,%eax
40c017:	2b 45 ec             	sub    -0x14(%ebp),%eax
40c01a:	99                   	cltd
40c01b:	2b c2                	sub    %edx,%eax
40c01d:	8b d8                	mov    %eax,%ebx
40c01f:	8b c6                	mov    %esi,%eax
40c021:	2b 45 e8             	sub    -0x18(%ebp),%eax
40c024:	d1 fb                	sar    $1,%ebx
40c026:	03 5d d0             	add    -0x30(%ebp),%ebx
40c029:	99                   	cltd
40c02a:	2b c2                	sub    %edx,%eax
40c02c:	8b f0                	mov    %eax,%esi
40c02e:	d1 fe                	sar    $1,%esi
40c030:	03 75 d4             	add    -0x2c(%ebp),%esi
40c033:	85 db                	test   %ebx,%ebx
40c035:	7d 02                	jge    0x40c039
40c037:	33 db                	xor    %ebx,%ebx
40c039:	85 f6                	test   %esi,%esi
40c03b:	7d 02                	jge    0x40c03f
40c03d:	33 f6                	xor    %esi,%esi
40c03f:	6a f0                	push   $0xfffffff0