40be39:	0f 8f d4 00 00 00    	jg     0x40bf13
40be3f:	50                   	push   %eax
40be40:	33 db                	xor    %ebx,%ebx
40be42:	8d 45 f0             	lea    -0x10(%ebp),%eax
40be45:	53                   	push   %ebx
40be46:	50                   	push   %eax
40be47:	8d 4f 0c             	lea    0xc(%edi),%ecx
40be4a:	e8 cc 01 00 00       	call   0x40c01b
40be4f:	53                   	push   %ebx
40be50:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40be53:	e8 b8 f1 ff ff       	call   0x40b010
40be58:	83 f8 ff             	cmp    $0xffffffff,%eax
40be5b:	75 4f                	jne    0x40beac
40be5d:	8b 55 fc             	mov    -0x4(%ebp),%edx
40be60:	33 c0                	xor    %eax,%eax
40be62:	40                   	inc    %eax
40be63:	39 45 f4             	cmp    %eax,-0xc(%ebp)
40be66:	0f 84 3c 43 01 00    	je     0x4201a8
40be6c:	8d 42 01             	lea    0x1(%edx),%eax
40be6f:	66 89 87 a2 01 00 00 	mov    %ax,0x1a2(%edi)
40be76:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40be79:	ff 35 90 8e 43 00    	push   0x438e90
40be7f:	e8 dd 00 00 00       	call   0x40bf61
40be84:	85 c0                	test   %eax,%eax
40be86:	75 29                	jne    0x40beb1
40be88:	66 89 87 a0 01 00 00 	mov    %ax,0x1a0(%edi)
40be8f:	0f b7 4f 18          	movzwl 0x18(%edi),%ecx
40be93:	83 fe ff             	cmp    $0xffffffff,%esi
40be96:	0f 85 1a 44 01 00    	jne    0x4202b6
40be9c:	33 c0                	xor    %eax,%eax
40be9e:	66 89 8f ae 01 00 00 	mov    %cx,0x1ae(%edi)
40bea5:	66 89 87 b0 01 00 00 	mov    %ax,0x1b0(%edi)
40beac:	5f                   	pop    %edi
40bead:	5e                   	pop    %esi
40beae:	5b                   	pop    %ebx
40beaf:	c9                   	leave
40beb0:	c3                   	ret
40beb1:	ff 35 70 8e 43 00    	push   0x438e70
40beb7:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40beba:	e8 a2 00 00 00       	call   0x40bf61
40bebf:	85 c0                	test   %eax,%eax
40bec1:	0f 84 61 43 01 00    	je     0x420228
40bec7:	ff 35 80 8e 43 00    	push   0x438e80
40becd:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40bed0:	e8 8c 00 00 00       	call   0x40bf61
40bed5:	85 c0                	test   %eax,%eax
40bed7:	74 4f                	je     0x40bf28
40bed9:	ff 35 60 8e 43 00    	push   0x438e60
40bedf:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40bee2:	e8 7a 00 00 00       	call   0x40bf61
40bee7:	85 c0                	test   %eax,%eax
40bee9:	0f 85 48 43 01 00    	jne    0x420237
40beef:	6a 08                	push   $0x8
40bef1:	58                   	pop    %eax
40bef2:	eb 94                	jmp    0x40be88
40bef4:	83 fe ff             	cmp    $0xffffffff,%esi
40bef7:	0f 84 04 ff ff ff    	je     0x40be01
40befd:	e9 99 42 01 00       	jmp    0x42019b
40bf02:	0f b7 c3             	movzwl %bx,%eax
40bf05:	2b d0                	sub    %eax,%edx
40bf07:	66 89 97 b0 01 00 00 	mov    %dx,0x1b0(%edi)
40bf0e:	e9 ff fe ff ff       	jmp    0x40be12
40bf13:	6a 02                	push   $0x2
40bf15:	58                   	pop    %eax
40bf16:	66 39 87 ae 01 00 00 	cmp    %ax,0x1ae(%edi)
40bf1d:	0f 82 6c ff ff ff    	jb     0x40be8f
40bf23:	e9 3b 43 01 00       	jmp    0x420263
40bf28:	6a 07                	push   $0x7
40bf2a:	eb c5                	jmp    0x40bef1
40bf2c:	8b ff                	mov    %edi,%edi
40bf2e:	55                   	push   %ebp
40bf2f:	8b ec                	mov    %esp,%ebp
40bf31:	56                   	push   %esi
40bf32:	8b f1                	mov    %ecx,%esi
40bf34:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40bf37:	3b 4e 0c             	cmp    0xc(%esi),%ecx
40bf3a:	73 16                	jae    0x40bf52
40bf3c:	8b 46 04             	mov    0x4(%esi),%eax
40bf3f:	ff 75 08             	push   0x8(%ebp)
40bf42:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40bf45:	50                   	push   %eax
40bf46:	ff 15 58 a4 43 00    	call   *0x43a458
40bf4c:	59                   	pop    %ecx
40bf4d:	59                   	pop    %ecx
40bf4e:	85 c0                	test   %eax,%eax
40bf50:	75 08                	jne    0x40bf5a
40bf52:	83 c8 ff             	or     $0xffffffff,%eax
40bf55:	5e                   	pop    %esi
40bf56:	5d                   	pop    %ebp
40bf57:	c2 08 00             	ret    $0x8
40bf5a:	2b 46 04             	sub    0x4(%esi),%eax
40bf5d:	d1 f8                	sar    $1,%eax
40bf5f:	eb f4                	jmp    0x40bf55
40bf61:	8b ff                	mov    %edi,%edi
40bf63:	55                   	push   %ebp
40bf64:	8b ec                	mov    %esp,%ebp
40bf66:	53                   	push   %ebx
40bf67:	56                   	push   %esi
40bf68:	8b 75 08             	mov    0x8(%ebp),%esi
40bf6b:	33 db                	xor    %ebx,%ebx
40bf6d:	8b d6                	mov    %esi,%edx
40bf6f:	57                   	push   %edi
40bf70:	8b f9                	mov    %ecx,%edi
40bf72:	8d 4a 02             	lea    0x2(%edx),%ecx
40bf75:	66 8b 02             	mov    (%edx),%ax
40bf78:	83 c2 02             	add    $0x2,%edx
40bf7b:	66 3b c3             	cmp    %bx,%ax
40bf7e:	75 f5                	jne    0x40bf75
40bf80:	8b 47 08             	mov    0x8(%edi),%eax
40bf83:	2b d1                	sub    %ecx,%edx
40bf85:	ff 77 04             	push   0x4(%edi)
40bf88:	d1 fa                	sar    $1,%edx
40bf8a:	52                   	push   %edx
40bf8b:	8b 48 04             	mov    0x4(%eax),%ecx
40bf8e:	8b 07                	mov    (%edi),%eax
40bf90:	56                   	push   %esi
40bf91:	ff 77 04             	push   0x4(%edi)
40bf94:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40bf97:	e8 2b 00 00 00       	call   0x40bfc7
40bf9c:	8b c8                	mov    %eax,%ecx
40bf9e:	85 c9                	test   %ecx,%ecx
40bfa0:	75 17                	jne    0x40bfb9
40bfa2:	8d 56 02             	lea    0x2(%esi),%edx
40bfa5:	66 8b 06             	mov    (%esi),%ax
40bfa8:	83 c6 02             	add    $0x2,%esi
40bfab:	66 3b c3             	cmp    %bx,%ax
40bfae:	75 f5                	jne    0x40bfa5
40bfb0:	2b f2                	sub    %edx,%esi
40bfb2:	d1 fe                	sar    $1,%esi
40bfb4:	39 77 04             	cmp    %esi,0x4(%edi)
40bfb7:	72 09                	jb     0x40bfc2
40bfb9:	5f                   	pop    %edi
40bfba:	5e                   	pop    %esi
40bfbb:	8b c1                	mov    %ecx,%eax
40bfbd:	5b                   	pop    %ebx
40bfbe:	5d                   	pop    %ebp
40bfbf:	c2 04 00             	ret    $0x4
40bfc2:	83 c9 ff             	or     $0xffffffff,%ecx
40bfc5:	eb f2                	jmp    0x40bfb9
40bfc7:	8b ff                	mov    %edi,%edi
40bfc9:	55                   	push   %ebp
40bfca:	8b ec                	mov    %esp,%ebp
40bfcc:	8b 45 14             	mov    0x14(%ebp),%eax
40bfcf:	53                   	push   %ebx
40bfd0:	56                   	push   %esi
40bfd1:	8b 75 08             	mov    0x8(%ebp),%esi
40bfd4:	8b da                	mov    %edx,%ebx
40bfd6:	57                   	push   %edi
40bfd7:	3b f0                	cmp    %eax,%esi
40bfd9:	72 02                	jb     0x40bfdd
40bfdb:	8b f0                	mov    %eax,%esi
40bfdd:	8b 7d 10             	mov    0x10(%ebp),%edi
40bfe0:	3b f8                	cmp    %eax,%edi
40bfe2:	72 02                	jb     0x40bfe6
40bfe4:	8b f8                	mov    %eax,%edi
40bfe6:	57                   	push   %edi
40bfe7:	ff 75 0c             	push   0xc(%ebp)
40bfea:	56                   	push   %esi
40bfeb:	53                   	push   %ebx
40bfec:	6a 01                	push   $0x1
40bfee:	68 00 08 00 00       	push   $0x800
40bff3:	ff 15 5c a2 43 00    	call   *0x43a25c
40bff9:	83 e8 01             	sub    $0x1,%eax
40bffc:	74 18                	je     0x40c016
40bffe:	83 e8 01             	sub    $0x1,%eax
40c001:	75 07                	jne    0x40c00a
40c003:	5f                   	pop    %edi
40c004:	5e                   	pop    %esi
40c005:	5b                   	pop    %ebx
40c006:	5d                   	pop    %ebp
40c007:	c2 10 00             	ret    $0x10
40c00a:	83 e8 01             	sub    $0x1,%eax
40c00d:	0f 85 bb 42 01 00    	jne    0x4202ce
40c013:	40                   	inc    %eax
40c014:	eb ed                	jmp    0x40c003
40c016:	83 c8 ff             	or     $0xffffffff,%eax
40c019:	eb e8                	jmp    0x40c003
40c01b:	8b ff                	mov    %edi,%edi
40c01d:	55                   	push   %ebp
40c01e:	8b ec                	mov    %esp,%ebp
40c020:	8b 55 0c             	mov    0xc(%ebp),%edx
40c023:	56                   	push   %esi
40c024:	8b 75 10             	mov    0x10(%ebp),%esi
40c027:	8d 04 32             	lea    (%edx,%esi,1),%eax
40c02a:	3b c2                	cmp    %edx,%eax
40c02c:	72 19                	jb     0x40c047
40c02e:	3b 41 0c             	cmp    0xc(%ecx),%eax
40c031:	0f 87 b0 42 01 00    	ja     0x4202e7
40c037:	8b 45 08             	mov    0x8(%ebp),%eax
40c03a:	89 70 04             	mov    %esi,0x4(%eax)
40c03d:	89 10                	mov    %edx,(%eax)
40c03f:	89 48 08             	mov    %ecx,0x8(%eax)
40c042:	5e                   	pop    %esi
40c043:	5d                   	pop    %ebp
40c044:	c2 0c 00             	ret    $0xc
40c047:	e8 87 01 02 00       	call   0x42c1d3
40c04c:	8b ff                	mov    %edi,%edi
40c04e:	55                   	push   %ebp
40c04f:	8b ec                	mov    %esp,%ebp
40c051:	8b 09                	mov    (%ecx),%ecx
40c053:	8b 55 0c             	mov    0xc(%ebp),%edx
40c056:	03 d1                	add    %ecx,%edx
40c058:	3b d1                	cmp    %ecx,%edx
40c05a:	72 09                	jb     0x40c065
40c05c:	8b 45 08             	mov    0x8(%ebp),%eax
40c05f:	89 10                	mov    %edx,(%eax)
40c061:	5d                   	pop    %ebp
40c062:	c2 08 00             	ret    $0x8
40c065:	e8 69 01 02 00       	call   0x42c1d3
40c06a:	cc                   	int3
40c06b:	cc                   	int3
40c06c:	cc                   	int3
40c06d:	cc                   	int3
40c06e:	cc                   	int3
40c06f:	cc                   	int3
40c070:	6a 0c                	push   $0xc
40c072:	b8 28 e2 41 00       	mov    $0x41e228,%eax
40c077:	e8 92 ed 00 00       	call   0x41ae0e
40c07c:	33 db                	xor    %ebx,%ebx
40c07e:	53                   	push   %ebx
40c07f:	53                   	push   %ebx
40c080:	ff 15 58 a0 43 00    	call   *0x43a058
40c086:	8b f0                	mov    %eax,%esi
40c088:	89 75 f0             	mov    %esi,-0x10(%ebp)
40c08b:	8b 7d 08             	mov    0x8(%ebp),%edi
40c08e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c091:	8b 47 0c             	mov    0xc(%edi),%eax
40c094:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c097:	a1 80 8d 43 00       	mov    0x438d80,%eax
40c09c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c09f:	83 7f 14 00          	cmpl   $0x0,0x14(%edi)
40c0a3:	0f 85 65 42 01 00    	jne    0x42030e
40c0a9:	6a ff                	push   $0xffffffff
40c0ab:	6a 00                	push   $0x0
40c0ad:	8d 45 e8             	lea    -0x18(%ebp),%eax
40c0b0:	50                   	push   %eax
40c0b1:	6a 02                	push   $0x2
40c0b3:	ff 15 fc a2 43 00    	call   *0x43a2fc
40c0b9:	83 e8 00             	sub    $0x0,%eax
40c0bc:	0f 84 3d 42 01 00    	je     0x4202ff
40c0c2:	83 e8 01             	sub    $0x1,%eax
40c0c5:	75 1d                	jne    0x40c0e4
40c0c7:	51                   	push   %ecx
40c0c8:	8d 47 24             	lea    0x24(%edi),%eax
40c0cb:	50                   	push   %eax
40c0cc:	e8 c2 01 00 00       	call   0x40c293
40c0d1:	ff 35 74 8d 43 00    	push   0x438d74
40c0d7:	83 25 38 8a 43 00 00 	andl   $0x0,0x438a38
40c0de:	ff 15 b0 a2 43 00    	call   *0x43a2b0
40c0e4:	85 db                	test   %ebx,%ebx
40c0e6:	79 b7                	jns    0x40c09f
40c0e8:	e9 21 42 01 00       	jmp    0x42030e
40c0ed:	6a 14                	push   $0x14
40c0ef:	b8 53 e2 41 00       	mov    $0x41e253,%eax
40c0f4:	e8 15 ed 00 00       	call   0x41ae0e
40c0f9:	8b da                	mov    %edx,%ebx
40c0fb:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40c0fe:	8b c1                	mov    %ecx,%eax
40c100:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40c103:	33 d2                	xor    %edx,%edx
40c105:	89 55 f0             	mov    %edx,-0x10(%ebp)
40c108:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40c10b:	89 55 fc             	mov    %edx,-0x4(%ebp)
40c10e:	51                   	push   %ecx
40c10f:	68 80 4e 40 00       	push   $0x404e80
40c114:	6a 01                	push   $0x1
40c116:	52                   	push   %edx
40c117:	50                   	push   %eax
40c118:	ff 15 48 a0 43 00    	call   *0x43a048
40c11e:	8b f8                	mov    %eax,%edi
40c120:	89 7d e8             	mov    %edi,-0x18(%ebp)
40c123:	85 ff                	test   %edi,%edi
40c125:	78 47                	js     0x40c16e
40c127:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c12a:	ff 75 08             	push   0x8(%ebp)
40c12d:	68 1c 57 40 00       	push   $0x40571c
40c132:	8b 08                	mov    (%eax),%ecx
40c134:	50                   	push   %eax
40c135:	8b 31                	mov    (%ecx),%esi
40c137:	8b ce                	mov    %esi,%ecx
40c139:	ff 15 20 a5 43 00    	call   *0x43a520
40c13f:	ff d6                	call   *%esi
40c141:	8b f8                	mov    %eax,%edi
40c143:	85 ff                	test   %edi,%edi
40c145:	0f 89 8c 00 00 00    	jns    0x40c1d7
40c14b:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c14e:	ff 75 0c             	push   0xc(%ebp)
40c151:	68 2c 57 40 00       	push   $0x40572c
40c156:	8b 08                	mov    (%eax),%ecx
40c158:	50                   	push   %eax
40c159:	8b 31                	mov    (%ecx),%esi
40c15b:	8b ce                	mov    %esi,%ecx
40c15d:	ff 15 20 a5 43 00    	call   *0x43a520
40c163:	ff d6                	call   *%esi
40c165:	8b f8                	mov    %eax,%edi
40c167:	89 7d e8             	mov    %edi,-0x18(%ebp)
40c16a:	85 ff                	test   %edi,%edi
40c16c:	79 69                	jns    0x40c1d7
40c16e:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40c172:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c175:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40c179:	e8 5f 0f 01 00       	call   0x41d0dd
40c17e:	50                   	push   %eax
40c17f:	ff 75 e4             	push   -0x1c(%ebp)
40c182:	ff 15 40 a0 43 00    	call   *0x43a040
40c188:	68 0b 0c 00 c0       	push   $0xc0000c0b
40c18d:	8b d3                	mov    %ebx,%edx
40c18f:	8b cf                	mov    %edi,%ecx
40c191:	e8 2c 3f 02 00       	call   0x4300c2
40c196:	8b 45 ec             	mov    -0x14(%ebp),%eax
40c199:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40c19c:	85 c0                	test   %eax,%eax
40c19e:	75 07                	jne    0x40c1a7
40c1a0:	c7 45 e4 cc 3f 40 00 	movl   $0x403fcc,-0x1c(%ebp)
40c1a7:	8d 45 e8             	lea    -0x18(%ebp),%eax
40c1aa:	50                   	push   %eax
40c1ab:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40c1ae:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40c1b1:	e8 f2 38 02 00       	call   0x42faa8
40c1b6:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40c1ba:	8b 45 ec             	mov    -0x14(%ebp),%eax
40c1bd:	85 c0                	test   %eax,%eax
40c1bf:	74 16                	je     0x40c1d7
40c1c1:	89 45 e0             	mov    %eax,-0x20(%ebp)
40c1c4:	8d 55 e0             	lea    -0x20(%ebp),%edx
40c1c7:	a1 64 a0 43 00       	mov    0x43a064,%eax
40c1cc:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40c1cf:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40c1d2:	e8 8d f4 00 00       	call   0x41b664
40c1d7:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
40c1de:	8b 45 f0             	mov    -0x10(%ebp),%eax
40c1e1:	85 c0                	test   %eax,%eax
40c1e3:	74 10                	je     0x40c1f5
40c1e5:	8b 08                	mov    (%eax),%ecx
40c1e7:	50                   	push   %eax
40c1e8:	8b 71 08             	mov    0x8(%ecx),%esi
40c1eb:	8b ce                	mov    %esi,%ecx
40c1ed:	ff 15 20 a5 43 00    	call   *0x43a520
40c1f3:	ff d6                	call   *%esi
40c1f5:	8b c7                	mov    %edi,%eax
40c1f7:	e8 e0 eb 00 00       	call   0x41addc
40c1fc:	c2 08 00             	ret    $0x8
40c1ff:	8b ff                	mov    %edi,%edi
40c201:	55                   	push   %ebp
40c202:	8b ec                	mov    %esp,%ebp
40c204:	6a ff                	push   $0xffffffff
40c206:	68 6e e2 41 00       	push   $0x41e26e
40c20b:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40c211:	50                   	push   %eax
40c212:	56                   	push   %esi