408eb0:	8b ff                	mov    %edi,%edi
408eb2:	55                   	push   %ebp
408eb3:	8b ec                	mov    %esp,%ebp
408eb5:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
408eb9:	56                   	push   %esi
408eba:	8b f1                	mov    %ecx,%esi
408ebc:	c7 06 10 10 40 00    	movl   $0x401010,(%esi)
408ec2:	74 07                	je     0x408ecb
408ec4:	56                   	push   %esi
408ec5:	e8 80 09 00 00       	call   0x40984a
408eca:	59                   	pop    %ecx
408ecb:	8b c6                	mov    %esi,%eax
408ecd:	5e                   	pop    %esi
408ece:	5d                   	pop    %ebp
408ecf:	c2 04 00             	ret    $0x4
408ed2:	cc                   	int3
408ed3:	cc                   	int3
408ed4:	cc                   	int3
408ed5:	cc                   	int3
408ed6:	cc                   	int3
408ed7:	cc                   	int3
408ed8:	cc                   	int3
408ed9:	cc                   	int3
408eda:	cc                   	int3
408edb:	cc                   	int3
408edc:	cc                   	int3
408edd:	cc                   	int3
408ede:	cc                   	int3
408edf:	cc                   	int3
408ee0:	8b ff                	mov    %edi,%edi
408ee2:	55                   	push   %ebp
408ee3:	8b ec                	mov    %esp,%ebp
408ee5:	56                   	push   %esi
408ee6:	8b f1                	mov    %ecx,%esi
408ee8:	c7 06 00 10 40 00    	movl   $0x401000,(%esi)
408eee:	e8 93 0e 00 00       	call   0x409d86
408ef3:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
408ef7:	74 07                	je     0x408f00
408ef9:	56                   	push   %esi
408efa:	e8 4b 09 00 00       	call   0x40984a
408eff:	59                   	pop    %ecx
408f00:	8b c6                	mov    %esi,%eax
408f02:	5e                   	pop    %esi
408f03:	5d                   	pop    %ebp
408f04:	c2 04 00             	ret    $0x4
408f07:	cc                   	int3
408f08:	cc                   	int3
408f09:	cc                   	int3
408f0a:	cc                   	int3
408f0b:	cc                   	int3
408f0c:	cc                   	int3
408f0d:	cc                   	int3
408f0e:	cc                   	int3
408f0f:	cc                   	int3
408f10:	8b ff                	mov    %edi,%edi
408f12:	55                   	push   %ebp
408f13:	8b ec                	mov    %esp,%ebp
408f15:	56                   	push   %esi
408f16:	8b f1                	mov    %ecx,%esi
408f18:	e8 69 0e 00 00       	call   0x409d86
408f1d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
408f21:	74 07                	je     0x408f2a
408f23:	56                   	push   %esi
408f24:	e8 21 09 00 00       	call   0x40984a
408f29:	59                   	pop    %ecx
408f2a:	8b c6                	mov    %esi,%eax
408f2c:	5e                   	pop    %esi
408f2d:	5d                   	pop    %ebp
408f2e:	c2 04 00             	ret    $0x4
408f31:	6a 10                	push   $0x10
408f33:	b8 94 a6 40 00       	mov    $0x40a694,%eax
408f38:	e8 fa 0e 00 00       	call   0x409e37
408f3d:	8b f9                	mov    %ecx,%edi
408f3f:	89 7d e8             	mov    %edi,-0x18(%ebp)
408f42:	8b 75 08             	mov    0x8(%ebp),%esi
408f45:	83 ce 0f             	or     $0xf,%esi
408f48:	83 fe fe             	cmp    $0xfffffffe,%esi
408f4b:	76 05                	jbe    0x408f52
408f4d:	8b 75 08             	mov    0x8(%ebp),%esi
408f50:	eb 2a                	jmp    0x408f7c
408f52:	33 d2                	xor    %edx,%edx
408f54:	c7 45 ec 03 00 00 00 	movl   $0x3,-0x14(%ebp)
408f5b:	8b c6                	mov    %esi,%eax
408f5d:	8b 5f 14             	mov    0x14(%edi),%ebx
408f60:	f7 75 ec             	divl   -0x14(%ebp)
408f63:	8b cb                	mov    %ebx,%ecx
408f65:	d1 e9                	shr    $1,%ecx
408f67:	3b c8                	cmp    %eax,%ecx
408f69:	76 11                	jbe    0x408f7c
408f6b:	6a fe                	push   $0xfffffffe
408f6d:	58                   	pop    %eax
408f6e:	2b c1                	sub    %ecx,%eax
408f70:	3b d8                	cmp    %eax,%ebx
408f72:	77 05                	ja     0x408f79
408f74:	8d 34 19             	lea    (%ecx,%ebx,1),%esi
408f77:	eb 03                	jmp    0x408f7c
408f79:	6a fe                	push   $0xfffffffe
408f7b:	5e                   	pop    %esi
408f7c:	33 db                	xor    %ebx,%ebx
408f7e:	8d 46 01             	lea    0x1(%esi),%eax
408f81:	53                   	push   %ebx
408f82:	50                   	push   %eax
408f83:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408f86:	e8 f2 fd ff ff       	call   0x408d7d
408f8b:	59                   	pop    %ecx
408f8c:	59                   	pop    %ecx
408f8d:	eb 2c                	jmp    0x408fbb
408f8f:	8b 45 08             	mov    0x8(%ebp),%eax
408f92:	89 65 f0             	mov    %esp,-0x10(%ebp)
408f95:	89 45 ec             	mov    %eax,-0x14(%ebp)
408f98:	40                   	inc    %eax
408f99:	6a 00                	push   $0x0
408f9b:	50                   	push   %eax
408f9c:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
408fa0:	e8 d8 fd ff ff       	call   0x408d7d
408fa5:	59                   	pop    %ecx
408fa6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408fa9:	b8 b0 8f 40 00       	mov    $0x408fb0,%eax
408fae:	59                   	pop    %ecx
408faf:	c3                   	ret
408fb0:	8b 7d e8             	mov    -0x18(%ebp),%edi
408fb3:	33 db                	xor    %ebx,%ebx
408fb5:	8b 75 ec             	mov    -0x14(%ebp),%esi
408fb8:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408fbb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408fbe:	89 45 ec             	mov    %eax,-0x14(%ebp)
408fc1:	85 c9                	test   %ecx,%ecx
408fc3:	74 17                	je     0x408fdc
408fc5:	83 7f 14 10          	cmpl   $0x10,0x14(%edi)
408fc9:	72 04                	jb     0x408fcf
408fcb:	8b 17                	mov    (%edi),%edx
408fcd:	eb 02                	jmp    0x408fd1
408fcf:	8b d7                	mov    %edi,%edx
408fd1:	51                   	push   %ecx
408fd2:	52                   	push   %edx
408fd3:	50                   	push   %eax
408fd4:	e8 cd 0e 00 00       	call   0x409ea6
408fd9:	83 c4 0c             	add    $0xc,%esp
408fdc:	53                   	push   %ebx
408fdd:	6a 01                	push   $0x1
408fdf:	8b cf                	mov    %edi,%ecx
408fe1:	e8 d0 00 00 00       	call   0x4090b6
408fe6:	8b 45 ec             	mov    -0x14(%ebp),%eax
408fe9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408fec:	89 07                	mov    %eax,(%edi)
408fee:	89 77 14             	mov    %esi,0x14(%edi)
408ff1:	89 4f 10             	mov    %ecx,0x10(%edi)
408ff4:	83 fe 10             	cmp    $0x10,%esi
408ff7:	73 02                	jae    0x408ffb
408ff9:	8b c7                	mov    %edi,%eax
408ffb:	88 1c 08             	mov    %bl,(%eax,%ecx,1)
408ffe:	e8 99 0d 00 00       	call   0x409d9c
409003:	c2 08 00             	ret    $0x8
409006:	8b 4d e8             	mov    -0x18(%ebp),%ecx
409009:	33 db                	xor    %ebx,%ebx
40900b:	53                   	push   %ebx
40900c:	6a 01                	push   $0x1
40900e:	e8 a3 00 00 00       	call   0x4090b6
409013:	53                   	push   %ebx
409014:	53                   	push   %ebx
409015:	e8 7c 0d 00 00       	call   0x409d96
40901a:	cc                   	int3
40901b:	8b ff                	mov    %edi,%edi
40901d:	55                   	push   %ebp
40901e:	8b ec                	mov    %esp,%ebp
409020:	56                   	push   %esi
409021:	8b 75 08             	mov    0x8(%ebp),%esi
409024:	83 fe fe             	cmp    $0xfffffffe,%esi
409027:	77 4a                	ja     0x409073
409029:	39 71 14             	cmp    %esi,0x14(%ecx)
40902c:	73 0b                	jae    0x409039
40902e:	ff 71 10             	push   0x10(%ecx)
409031:	56                   	push   %esi
409032:	e8 fa fe ff ff       	call   0x408f31
409037:	eb 30                	jmp    0x409069
409039:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
40903d:	74 18                	je     0x409057
40903f:	83 fe 10             	cmp    $0x10,%esi
409042:	73 13                	jae    0x409057
409044:	8b 41 10             	mov    0x10(%ecx),%eax
409047:	3b f0                	cmp    %eax,%esi
409049:	73 02                	jae    0x40904d
40904b:	8b c6                	mov    %esi,%eax
40904d:	50                   	push   %eax
40904e:	6a 01                	push   $0x1
409050:	e8 61 00 00 00       	call   0x4090b6
409055:	eb 12                	jmp    0x409069
409057:	85 f6                	test   %esi,%esi
409059:	75 10                	jne    0x40906b
40905b:	21 71 10             	and    %esi,0x10(%ecx)
40905e:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
409062:	72 02                	jb     0x409066
409064:	8b 09                	mov    (%ecx),%ecx
409066:	c6 01 00             	movb   $0x0,(%ecx)
409069:	85 f6                	test   %esi,%esi
40906b:	0f 95 c0             	setne  %al
40906e:	5e                   	pop    %esi
40906f:	5d                   	pop    %ebp
409070:	c2 08 00             	ret    $0x8
409073:	e8 a3 00 00 00       	call   0x40911b
409078:	cc                   	int3
409079:	8b ff                	mov    %edi,%edi
40907b:	55                   	push   %ebp
40907c:	8b ec                	mov    %esp,%ebp
40907e:	8b 55 08             	mov    0x8(%ebp),%edx
409081:	85 d2                	test   %edx,%edx
409083:	74 2b                	je     0x4090b0
409085:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
409089:	72 04                	jb     0x40908f
40908b:	8b 01                	mov    (%ecx),%eax
40908d:	eb 02                	jmp    0x409091
40908f:	8b c1                	mov    %ecx,%eax
409091:	3b d0                	cmp    %eax,%edx
409093:	72 1b                	jb     0x4090b0
409095:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
409099:	56                   	push   %esi
40909a:	72 04                	jb     0x4090a0
40909c:	8b 31                	mov    (%ecx),%esi
40909e:	eb 02                	jmp    0x4090a2
4090a0:	8b f1                	mov    %ecx,%esi
4090a2:	8b 41 10             	mov    0x10(%ecx),%eax
4090a5:	03 c6                	add    %esi,%eax
4090a7:	5e                   	pop    %esi
4090a8:	3b c2                	cmp    %edx,%eax
4090aa:	76 04                	jbe    0x4090b0
4090ac:	b0 01                	mov    $0x1,%al
4090ae:	eb 02                	jmp    0x4090b2
4090b0:	32 c0                	xor    %al,%al
4090b2:	5d                   	pop    %ebp
4090b3:	c2 04 00             	ret    $0x4
4090b6:	8b ff                	mov    %edi,%edi
4090b8:	55                   	push   %ebp
4090b9:	8b ec                	mov    %esp,%ebp
4090bb:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
4090bf:	56                   	push   %esi
4090c0:	57                   	push   %edi
4090c1:	8b 7d 0c             	mov    0xc(%ebp),%edi
4090c4:	8b f1                	mov    %ecx,%esi
4090c6:	74 20                	je     0x4090e8
4090c8:	83 7e 14 10          	cmpl   $0x10,0x14(%esi)
4090cc:	72 1a                	jb     0x4090e8
4090ce:	53                   	push   %ebx
4090cf:	8b 1e                	mov    (%esi),%ebx
4090d1:	85 ff                	test   %edi,%edi
4090d3:	74 0b                	je     0x4090e0
4090d5:	57                   	push   %edi
4090d6:	53                   	push   %ebx
4090d7:	56                   	push   %esi
4090d8:	e8 c9 0d 00 00       	call   0x409ea6
4090dd:	83 c4 0c             	add    $0xc,%esp
4090e0:	53                   	push   %ebx
4090e1:	e8 64 07 00 00       	call   0x40984a
4090e6:	59                   	pop    %ecx
4090e7:	5b                   	pop    %ebx
4090e8:	89 7e 10             	mov    %edi,0x10(%esi)
4090eb:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
4090f2:	c6 04 37 00          	movb   $0x0,(%edi,%esi,1)
4090f6:	5f                   	pop    %edi
4090f7:	5e                   	pop    %esi
4090f8:	5d                   	pop    %ebp
4090f9:	c2 08 00             	ret    $0x8
4090fc:	8b ff                	mov    %edi,%edi
4090fe:	55                   	push   %ebp
4090ff:	8b ec                	mov    %esp,%ebp
409101:	83 ec 0c             	sub    $0xc,%esp
409104:	8d 4d f4             	lea    -0xc(%ebp),%ecx
409107:	e8 e5 fc ff ff       	call   0x408df1
40910c:	68 88 ad 40 00       	push   $0x40ad88
409111:	8d 45 f4             	lea    -0xc(%ebp),%eax
409114:	50                   	push   %eax
409115:	e8 7c 0c 00 00       	call   0x409d96
40911a:	cc                   	int3
40911b:	68 5c 1a 40 00       	push   $0x401a5c
409120:	e8 01 00 00 00       	call   0x409126
409125:	cc                   	int3
409126:	8b ff                	mov    %edi,%edi
409128:	55                   	push   %ebp
409129:	8b ec                	mov    %esp,%ebp
40912b:	83 ec 0c             	sub    $0xc,%esp
40912e:	8d 4d f4             	lea    -0xc(%ebp),%ecx
409131:	ff 75 08             	push   0x8(%ebp)
409134:	e8 08 fd ff ff       	call   0x408e41
409139:	68 f8 ad 40 00       	push   $0x40adf8
40913e:	8d 45 f4             	lea    -0xc(%ebp),%eax
409141:	50                   	push   %eax
409142:	e8 4f 0c 00 00       	call   0x409d96
409147:	cc                   	int3
409148:	8b ff                	mov    %edi,%edi
40914a:	55                   	push   %ebp
40914b:	8b ec                	mov    %esp,%ebp
40914d:	83 ec 0c             	sub    $0xc,%esp
409150:	8d 4d f4             	lea    -0xc(%ebp),%ecx
409153:	ff 75 08             	push   0x8(%ebp)
409156:	e8 e6 fc ff ff       	call   0x408e41
40915b:	68 34 ae 40 00       	push   $0x40ae34
409160:	8d 45 f4             	lea    -0xc(%ebp),%eax
409163:	50                   	push   %eax
409164:	e8 2d 0c 00 00       	call   0x409d96
409169:	cc                   	int3
40916a:	68 44 1a 40 00       	push   $0x401a44
40916f:	e8 d4 ff ff ff       	call   0x409148
409174:	cc                   	int3
409175:	8b ff                	mov    %edi,%edi
409177:	55                   	push   %ebp
409178:	8b ec                	mov    %esp,%ebp
40917a:	8b 45 0c             	mov    0xc(%ebp),%eax
40917d:	53                   	push   %ebx
40917e:	8b 5d 08             	mov    0x8(%ebp),%ebx
409181:	56                   	push   %esi
409182:	57                   	push   %edi
409183:	8b f1                	mov    %ecx,%esi
409185:	8b 7b 10             	mov    0x10(%ebx),%edi
409188:	3b f8                	cmp    %eax,%edi
40918a:	72 79                	jb     0x409205
40918c:	2b f8                	sub    %eax,%edi
40918e:	39 7d 10             	cmp    %edi,0x10(%ebp)
409191:	73 03                	jae    0x409196
409193:	8b 7d 10             	mov    0x10(%ebp),%edi
409196:	3b f3                	cmp    %ebx,%esi
409198:	75 17                	jne    0x4091b1
40919a:	03 c7                	add    %edi,%eax
40919c:	50                   	push   %eax
40919d:	e8 91 01 00 00       	call   0x409333
4091a2:	8b 45 0c             	mov    0xc(%ebp),%eax
4091a5:	8b ce                	mov    %esi,%ecx
4091a7:	50                   	push   %eax
4091a8:	6a 00                	push   $0x0
4091aa:	e8 b0 01 00 00       	call   0x40935f
4091af:	eb 4b                	jmp    0x4091fc
4091b1:	6a 00                	push   $0x0
4091b3:	57                   	push   %edi
4091b4:	e8 62 fe ff ff       	call   0x40901b
4091b9:	84 c0                	test   %al,%al
4091bb:	74 3f                	je     0x4091fc
4091bd:	83 7b 14 10          	cmpl   $0x10,0x14(%ebx)
4091c1:	72 02                	jb     0x4091c5
4091c3:	8b 1b                	mov    (%ebx),%ebx
4091c5:	8b 46 14             	mov    0x14(%esi),%eax
4091c8:	83 f8 10             	cmp    $0x10,%eax
4091cb:	72 04                	jb     0x4091d1
4091cd:	8b 0e                	mov    (%esi),%ecx
4091cf:	eb 02                	jmp    0x4091d3
4091d1:	8b ce                	mov    %esi,%ecx
4091d3:	85 ff                	test   %edi,%edi
4091d5:	74 13                	je     0x4091ea
4091d7:	8b 45 0c             	mov    0xc(%ebp),%eax
4091da:	57                   	push   %edi
4091db:	03 c3                	add    %ebx,%eax
4091dd:	50                   	push   %eax
4091de:	51                   	push   %ecx