408eb0:	8b 5d 0c             	mov    0xc(%ebp),%ebx
408eb3:	8b c3                	mov    %ebx,%eax
408eb5:	2b 45 fc             	sub    -0x4(%ebp),%eax
408eb8:	3b c7                	cmp    %edi,%eax
408eba:	72 02                	jb     0x408ebe
408ebc:	8b c7                	mov    %edi,%eax
408ebe:	50                   	push   %eax
408ebf:	ff 75 08             	push   0x8(%ebp)
408ec2:	8b ce                	mov    %esi,%ecx
408ec4:	e8 64 fd ff ff       	call   0x408c2d
408ec9:	83 f8 ff             	cmp    $0xffffffff,%eax
408ecc:	75 02                	jne    0x408ed0
408ece:	8b c7                	mov    %edi,%eax
408ed0:	01 7d fc             	add    %edi,-0x4(%ebp)
408ed3:	01 45 f8             	add    %eax,-0x8(%ebp)
408ed6:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
408ed9:	72 be                	jb     0x408e99
408edb:	eb a0                	jmp    0x408e7d
408edd:	55                   	push   %ebp
408ede:	8b ec                	mov    %esp,%ebp
408ee0:	51                   	push   %ecx
408ee1:	56                   	push   %esi
408ee2:	8b f1                	mov    %ecx,%esi
408ee4:	83 7e 04 ff          	cmpl   $0xffffffff,0x4(%esi)
408ee8:	74 60                	je     0x408f4a
408eea:	57                   	push   %edi
408eeb:	8b 7d 0c             	mov    0xc(%ebp),%edi
408eee:	85 ff                	test   %edi,%edi
408ef0:	7f 29                	jg     0x408f1b
408ef2:	7c 06                	jl     0x408efa
408ef4:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
408ef8:	73 21                	jae    0x408f1b
408efa:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
408efe:	74 1b                	je     0x408f1b
408f00:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
408f04:	75 07                	jne    0x408f0d
408f06:	8b 06                	mov    (%esi),%eax
408f08:	ff 50 10             	call   *0x10(%eax)
408f0b:	eb 05                	jmp    0x408f12
408f0d:	e8 83 fe ff ff       	call   0x408d95
408f12:	01 45 08             	add    %eax,0x8(%ebp)
408f15:	13 fa                	adc    %edx,%edi
408f17:	83 65 10 00          	andl   $0x0,0x10(%ebp)
408f1b:	ff 75 10             	push   0x10(%ebp)
408f1e:	8b c7                	mov    %edi,%eax
408f20:	c1 f8 1f             	sar    $0x1f,%eax
408f23:	8d 45 fc             	lea    -0x4(%ebp),%eax
408f26:	50                   	push   %eax
408f27:	ff 75 08             	push   0x8(%ebp)
408f2a:	89 7d fc             	mov    %edi,-0x4(%ebp)
408f2d:	ff 76 04             	push   0x4(%esi)
408f30:	ff 15 e4 a1 42 00    	call   *0x42a1e4
408f36:	5f                   	pop    %edi
408f37:	83 f8 ff             	cmp    $0xffffffff,%eax
408f3a:	75 0e                	jne    0x408f4a
408f3c:	ff 15 24 a2 42 00    	call   *0x42a224
408f42:	85 c0                	test   %eax,%eax
408f44:	74 04                	je     0x408f4a
408f46:	32 c0                	xor    %al,%al
408f48:	eb 02                	jmp    0x408f4c
408f4a:	b0 01                	mov    $0x1,%al
408f4c:	5e                   	pop    %esi
408f4d:	c9                   	leave
408f4e:	c2 0c 00             	ret    $0xc
408f51:	56                   	push   %esi
408f52:	6a 00                	push   $0x0
408f54:	ff 74 24 10          	push   0x10(%esp)
408f58:	8b f1                	mov    %ecx,%esi
408f5a:	ff 74 24 10          	push   0x10(%esp)
408f5e:	e8 7a ff ff ff       	call   0x408edd
408f63:	84 c0                	test   %al,%al
408f65:	74 14                	je     0x408f7b
408f67:	8b ce                	mov    %esi,%ecx
408f69:	e8 66 fc ff ff       	call   0x408bd4
408f6e:	8b 06                	mov    (%esi),%eax
408f70:	6a 00                	push   $0x0
408f72:	6a 00                	push   $0x0
408f74:	6a 00                	push   $0x0
408f76:	8b ce                	mov    %esi,%ecx
408f78:	ff 50 0c             	call   *0xc(%eax)
408f7b:	5e                   	pop    %esi
408f7c:	c2 08 00             	ret    $0x8
408f7f:	56                   	push   %esi
408f80:	ff 74 24 10          	push   0x10(%esp)
408f84:	8b f1                	mov    %ecx,%esi
408f86:	ff 74 24 10          	push   0x10(%esp)
408f8a:	ff 74 24 10          	push   0x10(%esp)
408f8e:	e8 4a ff ff ff       	call   0x408edd
408f93:	84 c0                	test   %al,%al
408f95:	75 13                	jne    0x408faa
408f97:	38 46 14             	cmp    %al,0x14(%esi)
408f9a:	74 0e                	je     0x408faa
408f9c:	83 c6 1e             	add    $0x1e,%esi
408f9f:	56                   	push   %esi
408fa0:	b9 74 2a 43 00       	mov    $0x432a74,%ecx
408fa5:	e8 92 d5 ff ff       	call   0x40653c
408faa:	5e                   	pop    %esi
408fab:	c2 0c 00             	ret    $0xc
408fae:	83 7c 24 04 ff       	cmpl   $0xffffffff,0x4(%esp)
408fb3:	74 0c                	je     0x408fc1
408fb5:	f6 44 24 04 10       	testb  $0x10,0x4(%esp)
408fba:	74 05                	je     0x408fc1
408fbc:	33 c0                	xor    %eax,%eax
408fbe:	40                   	inc    %eax
408fbf:	eb 02                	jmp    0x408fc3
408fc1:	33 c0                	xor    %eax,%eax
408fc3:	c2 04 00             	ret    $0x4
408fc6:	8b 44 24 04          	mov    0x4(%esp),%eax
408fca:	c1 e8 0a             	shr    $0xa,%eax
408fcd:	83 e0 01             	and    $0x1,%eax
408fd0:	c2 04 00             	ret    $0x4
408fd3:	55                   	push   %ebp
408fd4:	8b ec                	mov    %esp,%ebp
408fd6:	b8 00 10 00 00       	mov    $0x1000,%eax
408fdb:	e8 f0 14 01 00       	call   0x41a4d0
408fe0:	56                   	push   %esi
408fe1:	8b 35 5c a0 42 00    	mov    0x42a05c,%esi
408fe7:	57                   	push   %edi
408fe8:	ff 75 08             	push   0x8(%ebp)
408feb:	ff d6                	call   *%esi
408fed:	8b f8                	mov    %eax,%edi
408fef:	83 ff ff             	cmp    $0xffffffff,%edi
408ff2:	75 23                	jne    0x409017
408ff4:	68 00 08 00 00       	push   $0x800
408ff9:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
408fff:	50                   	push   %eax
409000:	ff 75 08             	push   0x8(%ebp)
409003:	e8 52 17 00 00       	call   0x40a75a
409008:	84 c0                	test   %al,%al
40900a:	74 0b                	je     0x409017
40900c:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
409012:	50                   	push   %eax
409013:	ff d6                	call   *%esi
409015:	8b f8                	mov    %eax,%edi
409017:	8b c7                	mov    %edi,%eax
409019:	5f                   	pop    %edi
40901a:	5e                   	pop    %esi
40901b:	c9                   	leave
40901c:	c2 04 00             	ret    $0x4
40901f:	55                   	push   %ebp
409020:	8b ec                	mov    %esp,%ebp
409022:	b8 00 10 00 00       	mov    $0x1000,%eax
409027:	e8 a4 14 01 00       	call   0x41a4d0
40902c:	53                   	push   %ebx
40902d:	56                   	push   %esi
40902e:	ff 75 0c             	push   0xc(%ebp)
409031:	8b 35 60 a0 42 00    	mov    0x42a060,%esi
409037:	ff 75 08             	push   0x8(%ebp)
40903a:	ff d6                	call   *%esi
40903c:	85 c0                	test   %eax,%eax
40903e:	0f 95 c3             	setne  %bl
409041:	84 db                	test   %bl,%bl
409043:	75 29                	jne    0x40906e
409045:	68 00 08 00 00       	push   $0x800
40904a:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
409050:	50                   	push   %eax
409051:	ff 75 08             	push   0x8(%ebp)
409054:	e8 01 17 00 00       	call   0x40a75a
409059:	84 c0                	test   %al,%al
40905b:	74 11                	je     0x40906e
40905d:	ff 75 0c             	push   0xc(%ebp)
409060:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
409066:	50                   	push   %eax
409067:	ff d6                	call   *%esi
409069:	85 c0                	test   %eax,%eax
40906b:	0f 95 c3             	setne  %bl
40906e:	5e                   	pop    %esi
40906f:	8a c3                	mov    %bl,%al
409071:	5b                   	pop    %ebx
409072:	c9                   	leave
409073:	c2 08 00             	ret    $0x8
409076:	55                   	push   %ebp
409077:	8b ec                	mov    %esp,%ebp
409079:	b8 00 10 00 00       	mov    $0x1000,%eax
40907e:	e8 4d 14 01 00       	call   0x41a4d0
409083:	53                   	push   %ebx
409084:	56                   	push   %esi
409085:	ff 75 08             	push   0x8(%ebp)
409088:	8b 35 10 a2 42 00    	mov    0x42a210,%esi
40908e:	ff d6                	call   *%esi
409090:	85 c0                	test   %eax,%eax
409092:	0f 95 c3             	setne  %bl
409095:	84 db                	test   %bl,%bl
409097:	75 26                	jne    0x4090bf
409099:	68 00 08 00 00       	push   $0x800
40909e:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
4090a4:	50                   	push   %eax
4090a5:	ff 75 08             	push   0x8(%ebp)
4090a8:	e8 ad 16 00 00       	call   0x40a75a
4090ad:	84 c0                	test   %al,%al
4090af:	74 0e                	je     0x4090bf
4090b1:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
4090b7:	50                   	push   %eax
4090b8:	ff d6                	call   *%esi
4090ba:	85 c0                	test   %eax,%eax
4090bc:	0f 95 c3             	setne  %bl
4090bf:	5e                   	pop    %esi
4090c0:	8a c3                	mov    %bl,%al
4090c2:	5b                   	pop    %ebx
4090c3:	c9                   	leave
4090c4:	c2 04 00             	ret    $0x4
4090c7:	55                   	push   %ebp
4090c8:	8b ec                	mov    %esp,%ebp
4090ca:	b8 24 10 00 00       	mov    $0x1024,%eax
4090cf:	e8 fc 13 01 00       	call   0x41a4d0
4090d4:	8b 45 0c             	mov    0xc(%ebp),%eax
4090d7:	53                   	push   %ebx
4090d8:	56                   	push   %esi
4090d9:	33 f6                	xor    %esi,%esi
4090db:	57                   	push   %edi
4090dc:	3b c6                	cmp    %esi,%eax
4090de:	74 0b                	je     0x4090eb
4090e0:	8b 08                	mov    (%eax),%ecx
4090e2:	0b 48 04             	or     0x4(%eax),%ecx
4090e5:	c6 45 fd 01          	movb   $0x1,-0x3(%ebp)
4090e9:	75 04                	jne    0x4090ef
4090eb:	c6 45 fd 00          	movb   $0x0,-0x3(%ebp)
4090ef:	8b 45 10             	mov    0x10(%ebp),%eax
4090f2:	3b c6                	cmp    %esi,%eax
4090f4:	74 0b                	je     0x409101
4090f6:	8b 08                	mov    (%eax),%ecx
4090f8:	0b 48 04             	or     0x4(%eax),%ecx
4090fb:	c6 45 fe 01          	movb   $0x1,-0x2(%ebp)
4090ff:	75 04                	jne    0x409105
409101:	c6 45 fe 00          	movb   $0x0,-0x2(%ebp)
409105:	8b 45 14             	mov    0x14(%ebp),%eax
409108:	3b c6                	cmp    %esi,%eax
40910a:	74 0b                	je     0x409117
40910c:	8b 08                	mov    (%eax),%ecx
40910e:	0b 48 04             	or     0x4(%eax),%ecx
409111:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
409115:	75 04                	jne    0x40911b
409117:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
40911b:	ff 75 08             	push   0x8(%ebp)
40911e:	e8 b0 fe ff ff       	call   0x408fd3
409123:	89 45 f4             	mov    %eax,-0xc(%ebp)
409126:	83 f8 ff             	cmp    $0xffffffff,%eax
409129:	0f 84 ff 00 00 00    	je     0x40922e
40912f:	a8 01                	test   $0x1,%al
409131:	0f 84 f7 00 00 00    	je     0x40922e
409137:	56                   	push   %esi
409138:	ff 75 08             	push   0x8(%ebp)
40913b:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40913f:	e8 db fe ff ff       	call   0x40901f
409144:	56                   	push   %esi
409145:	bb 00 00 00 02       	mov    $0x2000000,%ebx
40914a:	53                   	push   %ebx
40914b:	6a 03                	push   $0x3
40914d:	56                   	push   %esi
40914e:	8b 35 00 a2 42 00    	mov    0x42a200,%esi
409154:	6a 03                	push   $0x3
409156:	bf 00 00 00 40       	mov    $0x40000000,%edi
40915b:	57                   	push   %edi
40915c:	ff 75 08             	push   0x8(%ebp)
40915f:	ff d6                	call   *%esi
409161:	89 45 f8             	mov    %eax,-0x8(%ebp)
409164:	83 f8 ff             	cmp    $0xffffffff,%eax
409167:	75 3b                	jne    0x4091a4
409169:	68 00 08 00 00       	push   $0x800
40916e:	8d 85 dc ef ff ff    	lea    -0x1024(%ebp),%eax
409174:	50                   	push   %eax
409175:	ff 75 08             	push   0x8(%ebp)
409178:	e8 dd 15 00 00       	call   0x40a75a
40917d:	84 c0                	test   %al,%al
40917f:	0f 84 a2 00 00 00    	je     0x409227
409185:	6a 00                	push   $0x0
409187:	53                   	push   %ebx
409188:	6a 03                	push   $0x3
40918a:	6a 00                	push   $0x0
40918c:	6a 03                	push   $0x3
40918e:	57                   	push   %edi
40918f:	8d 85 dc ef ff ff    	lea    -0x1024(%ebp),%eax
409195:	50                   	push   %eax
409196:	ff d6                	call   *%esi
409198:	89 45 f8             	mov    %eax,-0x8(%ebp)
40919b:	83 f8 ff             	cmp    $0xffffffff,%eax
40919e:	0f 84 83 00 00 00    	je     0x409227
4091a4:	80 7d fd 00          	cmpb   $0x0,-0x3(%ebp)
4091a8:	74 0c                	je     0x4091b6
4091aa:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4091ad:	8d 45 dc             	lea    -0x24(%ebp),%eax
4091b0:	50                   	push   %eax
4091b1:	e8 c4 7e 00 00       	call   0x41107a
4091b6:	80 7d fe 00          	cmpb   $0x0,-0x2(%ebp)
4091ba:	74 0c                	je     0x4091c8
4091bc:	8b 4d 10             	mov    0x10(%ebp),%ecx
4091bf:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4091c2:	50                   	push   %eax
4091c3:	e8 b2 7e 00 00       	call   0x41107a
4091c8:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
4091cc:	74 0c                	je     0x4091da
4091ce:	8b 4d 14             	mov    0x14(%ebp),%ecx
4091d1:	8d 45 ec             	lea    -0x14(%ebp),%eax
4091d4:	50                   	push   %eax
4091d5:	e8 a0 7e 00 00       	call   0x41107a
4091da:	0f b6 45 fd          	movzbl -0x3(%ebp),%eax
4091de:	f7 d8                	neg    %eax
4091e0:	1b c0                	sbb    %eax,%eax
4091e2:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4091e5:	23 c1                	and    %ecx,%eax
4091e7:	50                   	push   %eax
4091e8:	0f b6 45 ff          	movzbl -0x1(%ebp),%eax
4091ec:	f7 d8                	neg    %eax
4091ee:	1b c0                	sbb    %eax,%eax
4091f0:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4091f3:	23 c1                	and    %ecx,%eax
4091f5:	50                   	push   %eax
4091f6:	0f b6 45 fe          	movzbl -0x2(%ebp),%eax
4091fa:	f7 d8                	neg    %eax
4091fc:	1b c0                	sbb    %eax,%eax
4091fe:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
409201:	23 c1                	and    %ecx,%eax
409203:	50                   	push   %eax
409204:	ff 75 f8             	push   -0x8(%ebp)
409207:	ff 15 24 a1 42 00    	call   *0x42a124
40920d:	ff 75 f8             	push   -0x8(%ebp)
409210:	ff 15 1c a2 42 00    	call   *0x42a21c
409216:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40921a:	74 0b                	je     0x409227
40921c:	ff 75 f4             	push   -0xc(%ebp)
40921f:	ff 75 08             	push   0x8(%ebp)
409222:	e8 f8 fd ff ff       	call   0x40901f
409227:	5f                   	pop    %edi
409228:	5e                   	pop    %esi
409229:	5b                   	pop    %ebx
40922a:	c9                   	leave
40922b:	c2 10 00             	ret    $0x10
40922e:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
409232:	e9 0d ff ff ff       	jmp    0x409144
409237:	ff 74 24 04          	push   0x4(%esp)
40923b:	e8 93 fd ff ff       	call   0x408fd3
409240:	33 c9                	xor    %ecx,%ecx
409242:	83 f8 ff             	cmp    $0xffffffff,%eax
409245:	0f 95 c1             	setne  %cl
409248:	8a c1                	mov    %cl,%al
40924a:	c2 04 00             	ret    $0x4
40924d:	6a 00                	push   $0x0
40924f:	ff 74 24 08          	push   0x8(%esp)
409253:	e8 c7 fd ff ff       	call   0x40901f
409258:	c2 04 00             	ret    $0x4
40925b:	55                   	push   %ebp
40925c:	8b ec                	mov    %esp,%ebp
40925e:	b8 00 10 00 00       	mov    $0x1000,%eax
409263:	e8 68 12 01 00       	call   0x41a4d0
409268:	56                   	push   %esi
409269:	8b 35 04 a2 42 00    	mov    0x42a204,%esi
40926f:	57                   	push   %edi
409270:	8b 7d 08             	mov    0x8(%ebp),%edi
409273:	6a 00                	push   $0x0
409275:	57                   	push   %edi