40bbcc:	33 c0                	xor    %eax,%eax
40bbce:	66 3b 06             	cmp    (%esi),%ax
40bbd1:	74 6a                	je     0x40bc3d
40bbd3:	39 44 24 10          	cmp    %eax,0x10(%esp)
40bbd7:	74 64                	je     0x40bc3d
40bbd9:	f7 44 24 4c 00 04 00 	testl  $0x400,0x4c(%esp)
40bbe0:	00
40bbe1:	75 5a                	jne    0x40bc3d
40bbe3:	53                   	push   %ebx
40bbe4:	68 80 00 00 00       	push   $0x80
40bbe9:	6a 02                	push   $0x2
40bbeb:	51                   	push   %ecx
40bbec:	e8 83 bf ff ff       	call   0x407b74
40bbf1:	59                   	pop    %ecx
40bbf2:	50                   	push   %eax
40bbf3:	53                   	push   %ebx
40bbf4:	68 00 00 00 40       	push   $0x40000000
40bbf9:	ff 74 24 4c          	push   0x4c(%esp)
40bbfd:	ff 15 80 b1 41 00    	call   *0x41b180
40bc03:	8b f8                	mov    %eax,%edi
40bc05:	83 ff ff             	cmp    $0xffffffff,%edi
40bc08:	74 33                	je     0x40bc3d
40bc0a:	39 1d 48 50 41 00    	cmp    %ebx,0x415048
40bc10:	74 0e                	je     0x40bc20
40bc12:	57                   	push   %edi
40bc13:	51                   	push   %ecx
40bc14:	6a 04                	push   $0x4
40bc16:	e8 a8 72 00 00       	call   0x412ec3
40bc1b:	85 c0                	test   %eax,%eax
40bc1d:	0f 99 c3             	setns  %bl
40bc20:	85 db                	test   %ebx,%ebx
40bc22:	75 12                	jne    0x40bc36
40bc24:	6a 10                	push   $0x10
40bc26:	51                   	push   %ecx
40bc27:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40bc2b:	6a 44                	push   $0x44
40bc2d:	5a                   	pop    %edx
40bc2e:	8b 49 04             	mov    0x4(%ecx),%ecx
40bc31:	e8 b5 41 00 00       	call   0x40fdeb
40bc36:	57                   	push   %edi
40bc37:	ff 15 54 b1 41 00    	call   *0x41b154
40bc3d:	56                   	push   %esi
40bc3e:	ff 15 24 b3 41 00    	call   *0x41b324
40bc44:	59                   	pop    %ecx
40bc45:	5f                   	pop    %edi
40bc46:	5e                   	pop    %esi
40bc47:	5b                   	pop    %ebx
40bc48:	8b e5                	mov    %ebp,%esp
40bc4a:	5d                   	pop    %ebp
40bc4b:	c3                   	ret
40bc4c:	cc                   	int3
40bc4d:	cc                   	int3
40bc4e:	cc                   	int3
40bc4f:	cc                   	int3
40bc50:	8b ff                	mov    %edi,%edi
40bc52:	55                   	push   %ebp
40bc53:	8b ec                	mov    %esp,%ebp
40bc55:	56                   	push   %esi
40bc56:	8b f1                	mov    %ecx,%esi
40bc58:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
40bc5c:	c7 06 c0 16 40 00    	movl   $0x4016c0,(%esi)
40bc62:	74 0e                	je     0x40bc72
40bc64:	ff 76 10             	push   0x10(%esi)
40bc67:	ff 15 24 b3 41 00    	call   *0x41b324
40bc6d:	83 66 10 00          	andl   $0x0,0x10(%esi)
40bc71:	59                   	pop    %ecx
40bc72:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40bc76:	c7 06 90 15 40 00    	movl   $0x401590,(%esi)
40bc7c:	74 08                	je     0x40bc86
40bc7e:	56                   	push   %esi
40bc7f:	ff 15 cc b2 41 00    	call   *0x41b2cc
40bc85:	59                   	pop    %ecx
40bc86:	8b c6                	mov    %esi,%eax
40bc88:	5e                   	pop    %esi
40bc89:	5d                   	pop    %ebp
40bc8a:	c2 04 00             	ret    $0x4
40bc8d:	cc                   	int3
40bc8e:	cc                   	int3
40bc8f:	cc                   	int3
40bc90:	8b ff                	mov    %edi,%edi
40bc92:	55                   	push   %ebp
40bc93:	8b ec                	mov    %esp,%ebp
40bc95:	83 ec 7c             	sub    $0x7c,%esp
40bc98:	53                   	push   %ebx
40bc99:	8b d9                	mov    %ecx,%ebx
40bc9b:	8b 4b 04             	mov    0x4(%ebx),%ecx
40bc9e:	e8 01 40 00 00       	call   0x40fca4
40bca3:	8b 43 0c             	mov    0xc(%ebx),%eax
40bca6:	33 c9                	xor    %ecx,%ecx
40bca8:	6a 04                	push   $0x4
40bcaa:	5a                   	pop    %edx
40bcab:	0f b6 40 04          	movzbl 0x4(%eax),%eax
40bcaf:	f7 e2                	mul    %edx
40bcb1:	0f 90 c1             	seto   %cl
40bcb4:	f7 d9                	neg    %ecx
40bcb6:	0b c8                	or     %eax,%ecx
40bcb8:	51                   	push   %ecx
40bcb9:	e8 ce 78 00 00       	call   0x41358c
40bcbe:	89 43 10             	mov    %eax,0x10(%ebx)
40bcc1:	59                   	pop    %ecx
40bcc2:	85 c0                	test   %eax,%eax
40bcc4:	0f 84 64 01 00 00    	je     0x40be2e
40bcca:	8b 4b 0c             	mov    0xc(%ebx),%ecx
40bccd:	56                   	push   %esi
40bcce:	57                   	push   %edi
40bccf:	0f b6 49 04          	movzbl 0x4(%ecx),%ecx
40bcd3:	c1 e1 02             	shl    $0x2,%ecx
40bcd6:	51                   	push   %ecx
40bcd7:	6a 00                	push   $0x0
40bcd9:	50                   	push   %eax
40bcda:	e8 82 84 00 00       	call   0x414161
40bcdf:	8b 43 0c             	mov    0xc(%ebx),%eax
40bce2:	83 c4 0c             	add    $0xc,%esp
40bce5:	8b cb                	mov    %ebx,%ecx
40bce7:	8b 00                	mov    (%eax),%eax
40bce9:	50                   	push   %eax
40bcea:	68 09 04 00 00       	push   $0x409
40bcef:	a3 14 98 41 00       	mov    %eax,0x419814
40bcf4:	e8 73 0f 00 00       	call   0x40cc6c
40bcf9:	ff 35 14 98 41 00    	push   0x419814
40bcff:	8b cb                	mov    %ebx,%ecx
40bd01:	68 f1 03 00 00       	push   $0x3f1
40bd06:	e8 61 0f 00 00       	call   0x40cc6c
40bd0b:	83 65 d4 00          	andl   $0x0,-0x2c(%ebp)
40bd0f:	8d 75 c8             	lea    -0x38(%ebp),%esi
40bd12:	6a 0a                	push   $0xa
40bd14:	59                   	pop    %ecx
40bd15:	b8 00 00 ff ff       	mov    $0xffff0000,%eax
40bd1a:	c7 45 c8 01 00 00 00 	movl   $0x1,-0x38(%ebp)
40bd21:	68 09 04 00 00       	push   $0x409
40bd26:	ff 73 04             	push   0x4(%ebx)
40bd29:	89 45 84             	mov    %eax,-0x7c(%ebp)
40bd2c:	8d 7d 8c             	lea    -0x74(%ebp),%edi
40bd2f:	89 45 88             	mov    %eax,-0x78(%ebp)
40bd32:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40bd34:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40bd3a:	8b f8                	mov    %eax,%edi
40bd3c:	6a 22                	push   $0x22
40bd3e:	89 7d f0             	mov    %edi,-0x10(%ebp)
40bd41:	e8 46 78 00 00       	call   0x41358c
40bd46:	8b f0                	mov    %eax,%esi
40bd48:	89 75 f4             	mov    %esi,-0xc(%ebp)
40bd4b:	59                   	pop    %ecx
40bd4c:	85 f6                	test   %esi,%esi
40bd4e:	0f 84 a6 00 00 00    	je     0x40bdfa
40bd54:	8b 4b 0c             	mov    0xc(%ebx),%ecx
40bd57:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40bd5b:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
40bd5f:	0f 86 8d 00 00 00    	jbe    0x40bdf2
40bd65:	33 ff                	xor    %edi,%edi
40bd67:	89 7d f8             	mov    %edi,-0x8(%ebp)
40bd6a:	8b 43 0c             	mov    0xc(%ebx),%eax
40bd6d:	83 c0 08             	add    $0x8,%eax
40bd70:	6a ff                	push   $0xffffffff
40bd72:	03 c7                	add    %edi,%eax
40bd74:	50                   	push   %eax
40bd75:	6a 11                	push   $0x11
40bd77:	56                   	push   %esi
40bd78:	ff 15 e8 b2 41 00    	call   *0x41b2e8
40bd7e:	6a ff                	push   $0xffffffff
40bd80:	68 40 3b 40 00       	push   $0x403b40
40bd85:	6a 11                	push   $0x11
40bd87:	56                   	push   %esi
40bd88:	ff 15 68 b3 41 00    	call   *0x41b368
40bd8e:	8b 43 0c             	mov    0xc(%ebx),%eax
40bd91:	83 c0 2a             	add    $0x2a,%eax
40bd94:	6a ff                	push   $0xffffffff
40bd96:	03 c7                	add    %edi,%eax
40bd98:	50                   	push   %eax
40bd99:	6a 11                	push   $0x11
40bd9b:	56                   	push   %esi
40bd9c:	ff 15 68 b3 41 00    	call   *0x41b368
40bda2:	83 c4 30             	add    $0x30,%esp
40bda5:	89 75 d8             	mov    %esi,-0x28(%ebp)
40bda8:	8d 45 84             	lea    -0x7c(%ebp),%eax
40bdab:	8d 75 c8             	lea    -0x38(%ebp),%esi
40bdae:	8d 7d 8c             	lea    -0x74(%ebp),%edi
40bdb1:	6a 0a                	push   $0xa
40bdb3:	59                   	pop    %ecx
40bdb4:	50                   	push   %eax
40bdb5:	6a 00                	push   $0x0
40bdb7:	68 32 11 00 00       	push   $0x1132
40bdbc:	ff 75 f0             	push   -0x10(%ebp)
40bdbf:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40bdc1:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40bdc7:	8b 55 fc             	mov    -0x4(%ebp),%edx
40bdca:	8b 4b 10             	mov    0x10(%ebx),%ecx
40bdcd:	8b 7d f8             	mov    -0x8(%ebp),%edi
40bdd0:	8b 75 f4             	mov    -0xc(%ebp),%esi
40bdd3:	83 c7 44             	add    $0x44,%edi
40bdd6:	89 7d f8             	mov    %edi,-0x8(%ebp)
40bdd9:	89 04 91             	mov    %eax,(%ecx,%edx,4)
40bddc:	42                   	inc    %edx
40bddd:	8b 43 0c             	mov    0xc(%ebx),%eax
40bde0:	89 55 fc             	mov    %edx,-0x4(%ebp)
40bde3:	0f b6 40 04          	movzbl 0x4(%eax),%eax
40bde7:	3b d0                	cmp    %eax,%edx
40bde9:	0f 82 7b ff ff ff    	jb     0x40bd6a
40bdef:	8b 7d f0             	mov    -0x10(%ebp),%edi
40bdf2:	56                   	push   %esi
40bdf3:	ff 15 24 b3 41 00    	call   *0x41b324
40bdf9:	59                   	pop    %ecx
40bdfa:	6a 00                	push   $0x0
40bdfc:	e8 74 3f 00 00       	call   0x40fd75
40be01:	6b c0 0f             	imul   $0xf,%eax,%eax
40be04:	6a 48                	push   $0x48
40be06:	59                   	pop    %ecx
40be07:	99                   	cltd
40be08:	f7 f9                	idiv   %ecx
40be0a:	50                   	push   %eax
40be0b:	68 1b 11 00 00       	push   $0x111b
40be10:	57                   	push   %edi
40be11:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40be17:	6a 00                	push   $0x0
40be19:	6a 64                	push   $0x64
40be1b:	68 e7 03 00 00       	push   $0x3e7
40be20:	ff 73 04             	push   0x4(%ebx)
40be23:	ff 15 3c b2 41 00    	call   *0x41b23c
40be29:	5f                   	pop    %edi
40be2a:	89 43 14             	mov    %eax,0x14(%ebx)
40be2d:	5e                   	pop    %esi
40be2e:	5b                   	pop    %ebx
40be2f:	c9                   	leave
40be30:	c2 04 00             	ret    $0x4
40be33:	cc                   	int3
40be34:	cc                   	int3
40be35:	cc                   	int3
40be36:	cc                   	int3
40be37:	cc                   	int3
40be38:	cc                   	int3
40be39:	cc                   	int3
40be3a:	cc                   	int3
40be3b:	cc                   	int3
40be3c:	cc                   	int3
40be3d:	cc                   	int3
40be3e:	cc                   	int3
40be3f:	cc                   	int3
40be40:	8b ff                	mov    %edi,%edi
40be42:	55                   	push   %ebp
40be43:	8b ec                	mov    %esp,%ebp
40be45:	51                   	push   %ecx
40be46:	8b 45 08             	mov    0x8(%ebp),%eax
40be49:	53                   	push   %ebx
40be4a:	56                   	push   %esi
40be4b:	57                   	push   %edi
40be4c:	8b f9                	mov    %ecx,%edi
40be4e:	8b f0                	mov    %eax,%esi
40be50:	0f b7 c8             	movzwl %ax,%ecx
40be53:	33 db                	xor    %ebx,%ebx
40be55:	8b c1                	mov    %ecx,%eax
40be57:	c1 ee 10             	shr    $0x10,%esi
40be5a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40be5d:	83 e8 01             	sub    $0x1,%eax
40be60:	74 21                	je     0x40be83
40be62:	83 e8 01             	sub    $0x1,%eax
40be65:	74 2d                	je     0x40be94
40be67:	2d ef 03 00 00       	sub    $0x3ef,%eax
40be6c:	74 03                	je     0x40be71
40be6e:	43                   	inc    %ebx
40be6f:	eb 34                	jmp    0x40bea5
40be71:	33 c0                	xor    %eax,%eax
40be73:	66 3b c6             	cmp    %si,%ax
40be76:	75 2d                	jne    0x40bea5
40be78:	6a 01                	push   $0x1
40be7a:	8b cf                	mov    %edi,%ecx
40be7c:	e8 9d 00 00 00       	call   0x40bf1e
40be81:	eb 22                	jmp    0x40bea5
40be83:	33 c0                	xor    %eax,%eax
40be85:	66 3b c6             	cmp    %si,%ax
40be88:	75 1b                	jne    0x40bea5
40be8a:	8b cf                	mov    %edi,%ecx
40be8c:	e8 1d 00 00 00       	call   0x40beae
40be91:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40be94:	33 c0                	xor    %eax,%eax
40be96:	66 3b c6             	cmp    %si,%ax
40be99:	75 0a                	jne    0x40bea5
40be9b:	51                   	push   %ecx
40be9c:	ff 77 04             	push   0x4(%edi)
40be9f:	ff 15 b8 b2 41 00    	call   *0x41b2b8
40bea5:	5f                   	pop    %edi
40bea6:	5e                   	pop    %esi
40bea7:	8b c3                	mov    %ebx,%eax
40bea9:	5b                   	pop    %ebx
40beaa:	c9                   	leave
40beab:	c2 08 00             	ret    $0x8
40beae:	8b ff                	mov    %edi,%edi
40beb0:	53                   	push   %ebx
40beb1:	56                   	push   %esi
40beb2:	57                   	push   %edi
40beb3:	8b f9                	mov    %ecx,%edi
40beb5:	68 09 04 00 00       	push   $0x409
40beba:	ff 77 04             	push   0x4(%edi)
40bebd:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40bec3:	8b 57 0c             	mov    0xc(%edi),%edx
40bec6:	33 f6                	xor    %esi,%esi
40bec8:	8b d8                	mov    %eax,%ebx
40beca:	80 7a 04 00          	cmpb   $0x0,0x4(%edx)
40bece:	76 4a                	jbe    0x40bf1a
40bed0:	8b 4f 10             	mov    0x10(%edi),%ecx
40bed3:	8b c2                	mov    %edx,%eax
40bed5:	85 c9                	test   %ecx,%ecx
40bed7:	74 36                	je     0x40bf0f
40bed9:	83 3c b1 00          	cmpl   $0x0,(%ecx,%esi,4)
40bedd:	74 30                	je     0x40bf0f
40bedf:	68 00 f0 00 00       	push   $0xf000
40bee4:	ff 34 b1             	push   (%ecx,%esi,4)
40bee7:	68 27 11 00 00       	push   $0x1127
40beec:	53                   	push   %ebx
40beed:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40bef3:	8b 4f 0c             	mov    0xc(%edi),%ecx
40bef6:	25 00 f0 ff ff       	and    $0xfffff000,%eax
40befb:	2d 00 20 00 00       	sub    $0x2000,%eax
40bf00:	f7 d8                	neg    %eax
40bf02:	1b c0                	sbb    %eax,%eax
40bf04:	40                   	inc    %eax
40bf05:	89 84 b1 88 10 00 00 	mov    %eax,0x1088(%ecx,%esi,4)
40bf0c:	8b 47 0c             	mov    0xc(%edi),%eax
40bf0f:	8b d0                	mov    %eax,%edx
40bf11:	46                   	inc    %esi
40bf12:	0f b6 40 04          	movzbl 0x4(%eax),%eax
40bf16:	3b f0                	cmp    %eax,%esi
40bf18:	72 b6                	jb     0x40bed0
40bf1a:	5f                   	pop    %edi
40bf1b:	5e                   	pop    %esi
40bf1c:	5b                   	pop    %ebx
40bf1d:	c3                   	ret
40bf1e:	8b ff                	mov    %edi,%edi
40bf20:	55                   	push   %ebp
40bf21:	8b ec                	mov    %esp,%ebp
40bf23:	83 e4 f8             	and    $0xfffffff8,%esp
40bf26:	83 ec 2c             	sub    $0x2c,%esp
40bf29:	53                   	push   %ebx
40bf2a:	56                   	push   %esi
40bf2b:	57                   	push   %edi
40bf2c:	8b f9                	mov    %ecx,%edi
40bf2e:	68 09 04 00 00       	push   $0x409
40bf33:	ff 77 04             	push   0x4(%edi)
40bf36:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40bf3c:	8b 4f 0c             	mov    0xc(%edi),%ecx
40bf3f:	33 f6                	xor    %esi,%esi
40bf41:	8b d8                	mov    %eax,%ebx
40bf43:	80 79 04 00          	cmpb   $0x0,0x4(%ecx)
40bf47:	76 67                	jbe    0x40bfb0
40bf49:	8b 57 10             	mov    0x10(%edi),%edx
40bf4c:	8b c1                	mov    %ecx,%eax
40bf4e:	85 d2                	test   %edx,%edx
40bf50:	74 53                	je     0x40bfa5
40bf52:	8b 14 b2             	mov    (%edx,%esi,4),%edx
40bf55:	85 d2                	test   %edx,%edx
40bf57:	74 4c                	je     0x40bfa5