407f6b:	0f 90 c1             	seto   %cl
407f6e:	f7 d9                	neg    %ecx
407f70:	0b c8                	or     %eax,%ecx
407f72:	51                   	push   %ecx
407f73:	e8 2d 90 01 00       	call   0x420fa5
407f78:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
407f7b:	89 06                	mov    %eax,(%esi)
407f7d:	51                   	push   %ecx
407f7e:	ff 75 08             	push   0x8(%ebp)
407f81:	50                   	push   %eax
407f82:	e8 f9 90 01 00       	call   0x421080
407f87:	6a 04                	push   $0x4
407f89:	e8 68 90 01 00       	call   0x420ff6
407f8e:	83 c4 14             	add    $0x14,%esp
407f91:	85 c0                	test   %eax,%eax
407f93:	74 16                	je     0x407fab
407f95:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
407f9b:	89 46 0c             	mov    %eax,0xc(%esi)
407f9e:	8b c6                	mov    %esi,%eax
407fa0:	5f                   	pop    %edi
407fa1:	5e                   	pop    %esi
407fa2:	5d                   	pop    %ebp
407fa3:	c2 04 00             	ret    $0x4
407fa6:	6a 08                	push   $0x8
407fa8:	58                   	pop    %eax
407fa9:	eb b6                	jmp    0x407f61
407fab:	33 c0                	xor    %eax,%eax
407fad:	eb ec                	jmp    0x407f9b
407faf:	56                   	push   %esi
407fb0:	57                   	push   %edi
407fb1:	8b f9                	mov    %ecx,%edi
407fb3:	33 f6                	xor    %esi,%esi
407fb5:	46                   	inc    %esi
407fb6:	8b 4f 0c             	mov    0xc(%edi),%ecx
407fb9:	8b 01                	mov    (%ecx),%eax
407fbb:	3b c6                	cmp    %esi,%eax
407fbd:	7f 03                	jg     0x407fc2
407fbf:	5f                   	pop    %edi
407fc0:	5e                   	pop    %esi
407fc1:	c3                   	ret
407fc2:	48                   	dec    %eax
407fc3:	6a 04                	push   $0x4
407fc5:	89 01                	mov    %eax,(%ecx)
407fc7:	e8 2a 90 01 00       	call   0x420ff6
407fcc:	59                   	pop    %ecx
407fcd:	85 c0                	test   %eax,%eax
407fcf:	74 3f                	je     0x408010
407fd1:	89 30                	mov    %esi,(%eax)
407fd3:	53                   	push   %ebx
407fd4:	8b 5f 04             	mov    0x4(%edi),%ebx
407fd7:	89 47 0c             	mov    %eax,0xc(%edi)
407fda:	43                   	inc    %ebx
407fdb:	74 37                	je     0x408014
407fdd:	8d 43 07             	lea    0x7(%ebx),%eax
407fe0:	83 e0 f8             	and    $0xfffffff8,%eax
407fe3:	33 c9                	xor    %ecx,%ecx
407fe5:	89 47 08             	mov    %eax,0x8(%edi)
407fe8:	6a 02                	push   $0x2
407fea:	5a                   	pop    %edx
407feb:	f7 e2                	mul    %edx
407fed:	0f 90 c1             	seto   %cl
407ff0:	f7 d9                	neg    %ecx
407ff2:	0b c8                	or     %eax,%ecx
407ff4:	51                   	push   %ecx
407ff5:	e8 ab 8f 01 00       	call   0x420fa5
407ffa:	8d 0c 1b             	lea    (%ebx,%ebx,1),%ecx
407ffd:	8b f0                	mov    %eax,%esi
407fff:	51                   	push   %ecx
408000:	ff 37                	push   (%edi)
408002:	56                   	push   %esi
408003:	e8 78 90 01 00       	call   0x421080
408008:	83 c4 10             	add    $0x10,%esp
40800b:	89 37                	mov    %esi,(%edi)
40800d:	5b                   	pop    %ebx
40800e:	eb af                	jmp    0x407fbf
408010:	33 c0                	xor    %eax,%eax
408012:	eb bf                	jmp    0x407fd3
408014:	6a 08                	push   $0x8
408016:	58                   	pop    %eax
408017:	eb ca                	jmp    0x407fe3
408019:	55                   	push   %ebp
40801a:	8b ec                	mov    %esp,%ebp
40801c:	8b c1                	mov    %ecx,%eax
40801e:	8b 4d 08             	mov    0x8(%ebp),%ecx
408021:	56                   	push   %esi
408022:	8b 70 04             	mov    0x4(%eax),%esi
408025:	8b 51 04             	mov    0x4(%ecx),%edx
408028:	85 f6                	test   %esi,%esi
40802a:	74 49                	je     0x408075
40802c:	85 d2                	test   %edx,%edx
40802e:	74 4e                	je     0x40807e
408030:	8b 09                	mov    (%ecx),%ecx
408032:	3b f2                	cmp    %edx,%esi
408034:	73 26                	jae    0x40805c
408036:	8b 30                	mov    (%eax),%esi
408038:	85 d2                	test   %edx,%edx
40803a:	74 11                	je     0x40804d
40803c:	66 8b 06             	mov    (%esi),%ax
40803f:	66 3b 01             	cmp    (%ecx),%ax
408042:	75 0d                	jne    0x408051
408044:	83 c6 02             	add    $0x2,%esi
408047:	83 c1 02             	add    $0x2,%ecx
40804a:	4a                   	dec    %edx
40804b:	75 ef                	jne    0x40803c
40804d:	33 c0                	xor    %eax,%eax
40804f:	eb 06                	jmp    0x408057
408051:	1b c0                	sbb    %eax,%eax
408053:	83 e0 fe             	and    $0xfffffffe,%eax
408056:	40                   	inc    %eax
408057:	5e                   	pop    %esi
408058:	5d                   	pop    %ebp
408059:	c2 04 00             	ret    $0x4
40805c:	8b 10                	mov    (%eax),%edx
40805e:	85 f6                	test   %esi,%esi
408060:	74 eb                	je     0x40804d
408062:	66 8b 02             	mov    (%edx),%ax
408065:	66 3b 01             	cmp    (%ecx),%ax
408068:	75 e7                	jne    0x408051
40806a:	83 c2 02             	add    $0x2,%edx
40806d:	83 c1 02             	add    $0x2,%ecx
408070:	4e                   	dec    %esi
408071:	75 ef                	jne    0x408062
408073:	eb d8                	jmp    0x40804d
408075:	85 d2                	test   %edx,%edx
408077:	74 05                	je     0x40807e
408079:	83 c8 ff             	or     $0xffffffff,%eax
40807c:	eb d9                	jmp    0x408057
40807e:	85 f6                	test   %esi,%esi
408080:	74 ae                	je     0x408030
408082:	33 c0                	xor    %eax,%eax
408084:	40                   	inc    %eax
408085:	eb d0                	jmp    0x408057
408087:	55                   	push   %ebp
408088:	8b ec                	mov    %esp,%ebp
40808a:	56                   	push   %esi
40808b:	57                   	push   %edi
40808c:	8b 7d 08             	mov    0x8(%ebp),%edi
40808f:	8b f1                	mov    %ecx,%esi
408091:	8d 47 01             	lea    0x1(%edi),%eax
408094:	39 46 08             	cmp    %eax,0x8(%esi)
408097:	72 06                	jb     0x40809f
408099:	5f                   	pop    %edi
40809a:	5e                   	pop    %esi
40809b:	5d                   	pop    %ebp
40809c:	c2 04 00             	ret    $0x4
40809f:	50                   	push   %eax
4080a0:	e8 cb 00 00 00       	call   0x408170
4080a5:	83 3e 00             	cmpl   $0x0,(%esi)
4080a8:	89 46 08             	mov    %eax,0x8(%esi)
4080ab:	74 08                	je     0x4080b5
4080ad:	ff 36                	push   (%esi)
4080af:	e8 b8 8f 01 00       	call   0x42106c
4080b4:	59                   	pop    %ecx
4080b5:	8b 46 08             	mov    0x8(%esi),%eax
4080b8:	33 c9                	xor    %ecx,%ecx
4080ba:	6a 02                	push   $0x2
4080bc:	5a                   	pop    %edx
4080bd:	f7 e2                	mul    %edx
4080bf:	0f 90 c1             	seto   %cl
4080c2:	f7 d9                	neg    %ecx
4080c4:	0b c8                	or     %eax,%ecx
4080c6:	51                   	push   %ecx
4080c7:	e8 2a 8f 01 00       	call   0x420ff6
4080cc:	59                   	pop    %ecx
4080cd:	33 c9                	xor    %ecx,%ecx
4080cf:	89 06                	mov    %eax,(%esi)
4080d1:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
4080d5:	eb c2                	jmp    0x408099
4080d7:	55                   	push   %ebp
4080d8:	8b ec                	mov    %esp,%ebp
4080da:	56                   	push   %esi
4080db:	8b f1                	mov    %ecx,%esi
4080dd:	8b 4e 0c             	mov    0xc(%esi),%ecx
4080e0:	8b 01                	mov    (%ecx),%eax
4080e2:	83 f8 01             	cmp    $0x1,%eax
4080e5:	7f 69                	jg     0x408150
4080e7:	53                   	push   %ebx
4080e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4080eb:	57                   	push   %edi
4080ec:	8b 7b 04             	mov    0x4(%ebx),%edi
4080ef:	89 7e 04             	mov    %edi,0x4(%esi)
4080f2:	8d 47 01             	lea    0x1(%edi),%eax
4080f5:	39 46 08             	cmp    %eax,0x8(%esi)
4080f8:	72 1e                	jb     0x408118
4080fa:	8b 46 04             	mov    0x4(%esi),%eax
4080fd:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
408104:	50                   	push   %eax
408105:	ff 33                	push   (%ebx)
408107:	ff 36                	push   (%esi)
408109:	e8 72 8f 01 00       	call   0x421080
40810e:	83 c4 0c             	add    $0xc,%esp
408111:	5f                   	pop    %edi
408112:	5b                   	pop    %ebx
408113:	5e                   	pop    %esi
408114:	5d                   	pop    %ebp
408115:	c2 04 00             	ret    $0x4
408118:	50                   	push   %eax
408119:	e8 52 00 00 00       	call   0x408170
40811e:	83 3e 00             	cmpl   $0x0,(%esi)
408121:	89 46 08             	mov    %eax,0x8(%esi)
408124:	74 08                	je     0x40812e
408126:	ff 36                	push   (%esi)
408128:	e8 3f 8f 01 00       	call   0x42106c
40812d:	59                   	pop    %ecx
40812e:	8b 46 08             	mov    0x8(%esi),%eax
408131:	33 c9                	xor    %ecx,%ecx
408133:	6a 02                	push   $0x2
408135:	5a                   	pop    %edx
408136:	f7 e2                	mul    %edx
408138:	0f 90 c1             	seto   %cl
40813b:	f7 d9                	neg    %ecx
40813d:	0b c8                	or     %eax,%ecx
40813f:	51                   	push   %ecx
408140:	e8 b1 8e 01 00       	call   0x420ff6
408145:	59                   	pop    %ecx
408146:	33 c9                	xor    %ecx,%ecx
408148:	89 06                	mov    %eax,(%esi)
40814a:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40814e:	eb aa                	jmp    0x4080fa
408150:	48                   	dec    %eax
408151:	89 01                	mov    %eax,(%ecx)
408153:	8b 4d 08             	mov    0x8(%ebp),%ecx
408156:	8b 41 04             	mov    0x4(%ecx),%eax
408159:	89 46 04             	mov    %eax,0x4(%esi)
40815c:	8b 41 08             	mov    0x8(%ecx),%eax
40815f:	89 46 08             	mov    %eax,0x8(%esi)
408162:	8b 01                	mov    (%ecx),%eax
408164:	89 06                	mov    %eax,(%esi)
408166:	8b 41 0c             	mov    0xc(%ecx),%eax
408169:	89 46 0c             	mov    %eax,0xc(%esi)
40816c:	ff 00                	incl   (%eax)
40816e:	eb a3                	jmp    0x408113
408170:	55                   	push   %ebp
408171:	8b ec                	mov    %esp,%ebp
408173:	8b 45 08             	mov    0x8(%ebp),%eax
408176:	85 c0                	test   %eax,%eax
408178:	74 0a                	je     0x408184
40817a:	83 c0 07             	add    $0x7,%eax
40817d:	83 e0 f8             	and    $0xfffffff8,%eax
408180:	5d                   	pop    %ebp
408181:	c2 04 00             	ret    $0x4
408184:	6a 08                	push   $0x8
408186:	58                   	pop    %eax
408187:	eb f7                	jmp    0x408180
408189:	56                   	push   %esi
40818a:	6a 04                	push   $0x4
40818c:	8b f1                	mov    %ecx,%esi
40818e:	e8 63 8e 01 00       	call   0x420ff6
408193:	59                   	pop    %ecx
408194:	85 c0                	test   %eax,%eax
408196:	74 0b                	je     0x4081a3
408198:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40819e:	89 46 0c             	mov    %eax,0xc(%esi)
4081a1:	5e                   	pop    %esi
4081a2:	c3                   	ret
4081a3:	33 c0                	xor    %eax,%eax
4081a5:	eb f7                	jmp    0x40819e
4081a7:	55                   	push   %ebp
4081a8:	8b ec                	mov    %esp,%ebp
4081aa:	56                   	push   %esi
4081ab:	8b f1                	mov    %ecx,%esi
4081ad:	3b 75 08             	cmp    0x8(%ebp),%esi
4081b0:	74 08                	je     0x4081ba
4081b2:	ff 75 08             	push   0x8(%ebp)
4081b5:	e8 1d ff ff ff       	call   0x4080d7
4081ba:	8b c6                	mov    %esi,%eax
4081bc:	5e                   	pop    %esi
4081bd:	5d                   	pop    %ebp
4081be:	c2 04 00             	ret    $0x4
4081c1:	55                   	push   %ebp
4081c2:	8b ec                	mov    %esp,%ebp
4081c4:	53                   	push   %ebx
4081c5:	8b 5d 08             	mov    0x8(%ebp),%ebx
4081c8:	33 c0                	xor    %eax,%eax
4081ca:	57                   	push   %edi
4081cb:	50                   	push   %eax
4081cc:	50                   	push   %eax
4081cd:	8b 7b 04             	mov    0x4(%ebx),%edi
4081d0:	47                   	inc    %edi
4081d1:	57                   	push   %edi
4081d2:	ff 33                	push   (%ebx)
4081d4:	50                   	push   %eax
4081d5:	68 e9 fd 00 00       	push   $0xfde9
4081da:	ff 15 84 f1 48 00    	call   *0x48f184
4081e0:	89 45 08             	mov    %eax,0x8(%ebp)
4081e3:	85 c0                	test   %eax,%eax
4081e5:	74 47                	je     0x40822e
4081e7:	56                   	push   %esi
4081e8:	33 c9                	xor    %ecx,%ecx
4081ea:	6a 02                	push   $0x2
4081ec:	5a                   	pop    %edx
4081ed:	f7 e2                	mul    %edx
4081ef:	0f 90 c1             	seto   %cl
4081f2:	f7 d9                	neg    %ecx
4081f4:	0b c8                	or     %eax,%ecx
4081f6:	51                   	push   %ecx
4081f7:	e8 fa 8d 01 00       	call   0x420ff6
4081fc:	59                   	pop    %ecx
4081fd:	ff 75 08             	push   0x8(%ebp)
408200:	8b f0                	mov    %eax,%esi
408202:	56                   	push   %esi
408203:	57                   	push   %edi
408204:	ff 33                	push   (%ebx)
408206:	6a 00                	push   $0x0
408208:	68 e9 fd 00 00       	push   $0xfde9
40820d:	ff 15 84 f1 48 00    	call   *0x48f184
408213:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408216:	48                   	dec    %eax
408217:	50                   	push   %eax
408218:	6a 00                	push   $0x0
40821a:	56                   	push   %esi
40821b:	e8 8d f6 ff ff       	call   0x4078ad
408220:	56                   	push   %esi
408221:	e8 46 8e 01 00       	call   0x42106c
408226:	59                   	pop    %ecx
408227:	5e                   	pop    %esi
408228:	5f                   	pop    %edi
408229:	5b                   	pop    %ebx
40822a:	5d                   	pop    %ebp
40822b:	c2 08 00             	ret    $0x8
40822e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408231:	e8 b6 fc ff ff       	call   0x407eec
408236:	eb f0                	jmp    0x408228
408238:	55                   	push   %ebp
408239:	8b ec                	mov    %esp,%ebp
40823b:	83 ec 0c             	sub    $0xc,%esp
40823e:	56                   	push   %esi
40823f:	8b f1                	mov    %ecx,%esi
408241:	8b 46 0c             	mov    0xc(%esi),%eax
408244:	83 f8 06             	cmp    $0x6,%eax
408247:	7d 05                	jge    0x40824e
408249:	5e                   	pop    %esi
40824a:	8b e5                	mov    %ebp,%esp
40824c:	5d                   	pop    %ebp
40824d:	c3                   	ret
40824e:	33 c9                	xor    %ecx,%ecx
408250:	6a 04                	push   $0x4
408252:	5a                   	pop    %edx
408253:	f7 e2                	mul    %edx
408255:	0f 90 c1             	seto   %cl
408258:	f7 d9                	neg    %ecx
40825a:	0b c8                	or     %eax,%ecx
40825c:	51                   	push   %ecx
40825d:	e8 94 8d 01 00       	call   0x420ff6
408262:	8b 16                	mov    (%esi),%edx
408264:	59                   	pop    %ecx
408265:	33 c9                	xor    %ecx,%ecx
408267:	89 46 08             	mov    %eax,0x8(%esi)
40826a:	39 4e 0c             	cmp    %ecx,0xc(%esi)
40826d:	7e 0f                	jle    0x40827e