404f91:	83 f8 1f             	cmp    $0x1f,%eax
404f94:	77 19                	ja     0x404faf
404f96:	8b c2                	mov    %edx,%eax
404f98:	51                   	push   %ecx
404f99:	50                   	push   %eax
404f9a:	e8 19 4c 01 00       	call   0x419bb8
404f9f:	83 c4 08             	add    $0x8,%esp
404fa2:	89 3e                	mov    %edi,(%esi)
404fa4:	8b c6                	mov    %esi,%eax
404fa6:	5f                   	pop    %edi
404fa7:	5e                   	pop    %esi
404fa8:	5b                   	pop    %ebx
404fa9:	8b e5                	mov    %ebp,%esp
404fab:	5d                   	pop    %ebp
404fac:	c2 08 00             	ret    $0x8
404faf:	e8 df a9 01 00       	call   0x41f993
404fb4:	e8 a7 c3 ff ff       	call   0x401360
404fb9:	e8 02 c3 ff ff       	call   0x4012c0
404fbe:	cc                   	int3
404fbf:	cc                   	int3
404fc0:	55                   	push   %ebp
404fc1:	8b ec                	mov    %esp,%ebp
404fc3:	8b 45 0c             	mov    0xc(%ebp),%eax
404fc6:	8b 4d 08             	mov    0x8(%ebp),%ecx
404fc9:	8d 14 40             	lea    (%eax,%eax,2),%edx
404fcc:	c1 e2 03             	shl    $0x3,%edx
404fcf:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
404fd5:	72 14                	jb     0x404feb
404fd7:	56                   	push   %esi
404fd8:	8b 71 fc             	mov    -0x4(%ecx),%esi
404fdb:	83 c2 23             	add    $0x23,%edx
404fde:	2b ce                	sub    %esi,%ecx
404fe0:	8d 41 fc             	lea    -0x4(%ecx),%eax
404fe3:	83 f8 1f             	cmp    $0x1f,%eax
404fe6:	77 11                	ja     0x404ff9
404fe8:	8b ce                	mov    %esi,%ecx
404fea:	5e                   	pop    %esi
404feb:	52                   	push   %edx
404fec:	51                   	push   %ecx
404fed:	e8 c6 4b 01 00       	call   0x419bb8
404ff2:	83 c4 08             	add    $0x8,%esp
404ff5:	5d                   	pop    %ebp
404ff6:	c2 08 00             	ret    $0x8
404ff9:	e8 95 a9 01 00       	call   0x41f993
404ffe:	cc                   	int3
404fff:	cc                   	int3
405000:	68 3c ed 44 00       	push   $0x44ed3c
405005:	e8 b0 3e 01 00       	call   0x418eba
40500a:	cc                   	int3
40500b:	cc                   	int3
40500c:	cc                   	int3
40500d:	cc                   	int3
40500e:	cc                   	int3
40500f:	cc                   	int3
405010:	55                   	push   %ebp
405011:	8b ec                	mov    %esp,%ebp
405013:	56                   	push   %esi
405014:	57                   	push   %edi
405015:	8b fa                	mov    %edx,%edi
405017:	8b f1                	mov    %ecx,%esi
405019:	3b f7                	cmp    %edi,%esi
40501b:	74 52                	je     0x40506f
40501d:	0f 1f 00             	nopl   (%eax)
405020:	8b 4e 14             	mov    0x14(%esi),%ecx
405023:	83 f9 08             	cmp    $0x8,%ecx
405026:	72 2d                	jb     0x405055
405028:	8b 06                	mov    (%esi),%eax
40502a:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
405031:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
405037:	72 12                	jb     0x40504b
405039:	8b 50 fc             	mov    -0x4(%eax),%edx
40503c:	83 c1 23             	add    $0x23,%ecx
40503f:	2b c2                	sub    %edx,%eax
405041:	83 c0 fc             	add    $0xfffffffc,%eax
405044:	83 f8 1f             	cmp    $0x1f,%eax
405047:	77 2a                	ja     0x405073
405049:	8b c2                	mov    %edx,%eax
40504b:	51                   	push   %ecx
40504c:	50                   	push   %eax
40504d:	e8 66 4b 01 00       	call   0x419bb8
405052:	83 c4 08             	add    $0x8,%esp
405055:	33 c0                	xor    %eax,%eax
405057:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
40505e:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
405065:	66 89 06             	mov    %ax,(%esi)
405068:	83 c6 18             	add    $0x18,%esi
40506b:	3b f7                	cmp    %edi,%esi
40506d:	75 b1                	jne    0x405020
40506f:	5f                   	pop    %edi
405070:	5e                   	pop    %esi
405071:	5d                   	pop    %ebp
405072:	c3                   	ret
405073:	e8 1b a9 01 00       	call   0x41f993
405078:	cc                   	int3
405079:	cc                   	int3
40507a:	cc                   	int3
40507b:	cc                   	int3
40507c:	cc                   	int3
40507d:	cc                   	int3
40507e:	cc                   	int3
40507f:	cc                   	int3
405080:	55                   	push   %ebp
405081:	8b ec                	mov    %esp,%ebp
405083:	51                   	push   %ecx
405084:	8b c2                	mov    %edx,%eax
405086:	8b d1                	mov    %ecx,%edx
405088:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40508b:	3b c8                	cmp    %eax,%ecx
40508d:	53                   	push   %ebx
40508e:	56                   	push   %esi
40508f:	8b 75 08             	mov    0x8(%ebp),%esi
405092:	57                   	push   %edi
405093:	8b f8                	mov    %eax,%edi
405095:	89 45 fc             	mov    %eax,-0x4(%ebp)
405098:	0f 42 f9             	cmovb  %ecx,%edi
40509b:	85 ff                	test   %edi,%edi
40509d:	74 1e                	je     0x4050bd
40509f:	2b d6                	sub    %esi,%edx
4050a1:	0f b7 04 32          	movzwl (%edx,%esi,1),%eax
4050a5:	0f b7 0e             	movzwl (%esi),%ecx
4050a8:	8b d8                	mov    %eax,%ebx
4050aa:	66 3b c1             	cmp    %cx,%ax
4050ad:	75 1c                	jne    0x4050cb
4050af:	83 c6 02             	add    $0x2,%esi
4050b2:	83 ef 01             	sub    $0x1,%edi
4050b5:	75 ea                	jne    0x4050a1
4050b7:	8b 45 fc             	mov    -0x4(%ebp),%eax
4050ba:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4050bd:	3b c8                	cmp    %eax,%ecx
4050bf:	76 1a                	jbe    0x4050db
4050c1:	5f                   	pop    %edi
4050c2:	5e                   	pop    %esi
4050c3:	83 c8 ff             	or     $0xffffffff,%eax
4050c6:	5b                   	pop    %ebx
4050c7:	8b e5                	mov    %ebp,%esp
4050c9:	5d                   	pop    %ebp
4050ca:	c3                   	ret
4050cb:	66 3b d9             	cmp    %cx,%bx
4050ce:	5f                   	pop    %edi
4050cf:	1b c0                	sbb    %eax,%eax
4050d1:	83 e0 fe             	and    $0xfffffffe,%eax
4050d4:	5e                   	pop    %esi
4050d5:	40                   	inc    %eax
4050d6:	5b                   	pop    %ebx
4050d7:	8b e5                	mov    %ebp,%esp
4050d9:	5d                   	pop    %ebp
4050da:	c3                   	ret
4050db:	5f                   	pop    %edi
4050dc:	1b c0                	sbb    %eax,%eax
4050de:	5e                   	pop    %esi
4050df:	f7 d8                	neg    %eax
4050e1:	5b                   	pop    %ebx
4050e2:	8b e5                	mov    %ebp,%esp
4050e4:	5d                   	pop    %ebp
4050e5:	c3                   	ret
4050e6:	cc                   	int3
4050e7:	cc                   	int3
4050e8:	cc                   	int3
4050e9:	cc                   	int3
4050ea:	cc                   	int3
4050eb:	cc                   	int3
4050ec:	cc                   	int3
4050ed:	cc                   	int3
4050ee:	cc                   	int3
4050ef:	cc                   	int3
4050f0:	55                   	push   %ebp
4050f1:	8b ec                	mov    %esp,%ebp
4050f3:	83 ec 08             	sub    $0x8,%esp
4050f6:	53                   	push   %ebx
4050f7:	56                   	push   %esi
4050f8:	57                   	push   %edi
4050f9:	8b 7d 10             	mov    0x10(%ebp),%edi
4050fc:	8b d9                	mov    %ecx,%ebx
4050fe:	89 5d f8             	mov    %ebx,-0x8(%ebp)
405101:	3b fa                	cmp    %edx,%edi
405103:	77 38                	ja     0x40513d
405105:	8b 45 08             	mov    0x8(%ebp),%eax
405108:	2b d7                	sub    %edi,%edx
40510a:	3b c2                	cmp    %edx,%eax
40510c:	77 2f                	ja     0x40513d
40510e:	85 ff                	test   %edi,%edi
405110:	74 2e                	je     0x405140
405112:	8d 4a 01             	lea    0x1(%edx),%ecx
405115:	8d 0c 4b             	lea    (%ebx,%ecx,2),%ecx
405118:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40511b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40511e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405121:	2b c8                	sub    %eax,%ecx
405123:	d1 f9                	sar    $1,%ecx
405125:	74 16                	je     0x40513d
405127:	0f b7 13             	movzwl (%ebx),%edx
40512a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
405130:	66 39 10             	cmp    %dx,(%eax)
405133:	74 12                	je     0x405147
405135:	83 c0 02             	add    $0x2,%eax
405138:	83 e9 01             	sub    $0x1,%ecx
40513b:	75 f3                	jne    0x405130
40513d:	83 c8 ff             	or     $0xffffffff,%eax
405140:	5f                   	pop    %edi
405141:	5e                   	pop    %esi
405142:	5b                   	pop    %ebx
405143:	8b e5                	mov    %ebp,%esp
405145:	5d                   	pop    %ebp
405146:	c3                   	ret
405147:	85 c0                	test   %eax,%eax
405149:	74 f2                	je     0x40513d
40514b:	8b f7                	mov    %edi,%esi
40514d:	8b d3                	mov    %ebx,%edx
40514f:	85 ff                	test   %edi,%edi
405151:	74 15                	je     0x405168
405153:	8b f8                	mov    %eax,%edi
405155:	2b fb                	sub    %ebx,%edi
405157:	66 8b 0c 17          	mov    (%edi,%edx,1),%cx
40515b:	66 3b 0a             	cmp    (%edx),%cx
40515e:	75 14                	jne    0x405174
405160:	83 c2 02             	add    $0x2,%edx
405163:	83 ee 01             	sub    $0x1,%esi
405166:	75 ef                	jne    0x405157
405168:	2b 45 f8             	sub    -0x8(%ebp),%eax
40516b:	5f                   	pop    %edi
40516c:	5e                   	pop    %esi
40516d:	d1 f8                	sar    $1,%eax
40516f:	5b                   	pop    %ebx
405170:	8b e5                	mov    %ebp,%esp
405172:	5d                   	pop    %ebp
405173:	c3                   	ret
405174:	8b 7d 10             	mov    0x10(%ebp),%edi
405177:	83 c0 02             	add    $0x2,%eax
40517a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40517d:	eb a2                	jmp    0x405121
40517f:	cc                   	int3
405180:	55                   	push   %ebp
405181:	8b ec                	mov    %esp,%ebp
405183:	83 ec 20             	sub    $0x20,%esp
405186:	8b 45 18             	mov    0x18(%ebp),%eax
405189:	53                   	push   %ebx
40518a:	56                   	push   %esi
40518b:	8b 75 08             	mov    0x8(%ebp),%esi
40518e:	57                   	push   %edi
40518f:	8b f9                	mov    %ecx,%edi
405191:	89 45 ec             	mov    %eax,-0x14(%ebp)
405194:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
405199:	8b c1                	mov    %ecx,%eax
40519b:	8b 57 10             	mov    0x10(%edi),%edx
40519e:	2b c2                	sub    %edx,%eax
4051a0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4051a3:	3b c6                	cmp    %esi,%eax
4051a5:	0f 82 31 01 00 00    	jb     0x4052dc
4051ab:	8b 5f 14             	mov    0x14(%edi),%ebx
4051ae:	8d 04 32             	lea    (%edx,%esi,1),%eax
4051b1:	8b f0                	mov    %eax,%esi
4051b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
4051b6:	83 ce 07             	or     $0x7,%esi
4051b9:	3b f1                	cmp    %ecx,%esi
4051bb:	76 04                	jbe    0x4051c1
4051bd:	8b f1                	mov    %ecx,%esi
4051bf:	eb 18                	jmp    0x4051d9
4051c1:	8b c3                	mov    %ebx,%eax
4051c3:	d1 e8                	shr    $1,%eax
4051c5:	2b c8                	sub    %eax,%ecx
4051c7:	3b d9                	cmp    %ecx,%ebx
4051c9:	76 07                	jbe    0x4051d2
4051cb:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
4051d0:	eb 07                	jmp    0x4051d9
4051d2:	03 c3                	add    %ebx,%eax
4051d4:	3b f0                	cmp    %eax,%esi
4051d6:	0f 42 f0             	cmovb  %eax,%esi
4051d9:	8d 46 01             	lea    0x1(%esi),%eax
4051dc:	8b cf                	mov    %edi,%ecx
4051de:	50                   	push   %eax
4051df:	e8 cc de ff ff       	call   0x4030b0
4051e4:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
4051e7:	8b 55 10             	mov    0x10(%ebp),%edx
4051ea:	89 45 f4             	mov    %eax,-0xc(%ebp)
4051ed:	8b 45 f8             	mov    -0x8(%ebp),%eax
4051f0:	89 47 10             	mov    %eax,0x10(%edi)
4051f3:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
4051f6:	89 77 14             	mov    %esi,0x14(%edi)
4051f9:	8d 34 12             	lea    (%edx,%edx,1),%esi
4051fc:	89 45 f0             	mov    %eax,-0x10(%ebp)
4051ff:	8b 45 f4             	mov    -0xc(%ebp),%eax
405202:	03 c6                	add    %esi,%eax
405204:	89 75 e0             	mov    %esi,-0x20(%ebp)
405207:	8b 75 fc             	mov    -0x4(%ebp),%esi
40520a:	2b f2                	sub    %edx,%esi
40520c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40520f:	8b 45 14             	mov    0x14(%ebp),%eax
405212:	2b f0                	sub    %eax,%esi
405214:	8d 34 75 02 00 00 00 	lea    0x2(,%esi,2),%esi
40521b:	89 75 fc             	mov    %esi,-0x4(%ebp)
40521e:	8d 34 02             	lea    (%edx,%eax,1),%esi
405221:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
405224:	03 f6                	add    %esi,%esi
405226:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405229:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40522c:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40522f:	89 45 f8             	mov    %eax,-0x8(%ebp)
405232:	83 fb 08             	cmp    $0x8,%ebx
405235:	72 6a                	jb     0x4052a1
405237:	8b 37                	mov    (%edi),%esi
405239:	8d 04 12             	lea    (%edx,%edx,1),%eax
40523c:	50                   	push   %eax
40523d:	56                   	push   %esi
40523e:	51                   	push   %ecx
40523f:	e8 3c 64 01 00       	call   0x41b680
405244:	ff 75 f0             	push   -0x10(%ebp)
405247:	ff 75 ec             	push   -0x14(%ebp)
40524a:	ff 75 e8             	push   -0x18(%ebp)
40524d:	e8 2e 64 01 00       	call   0x41b680
405252:	ff 75 fc             	push   -0x4(%ebp)
405255:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405258:	03 c6                	add    %esi,%eax
40525a:	50                   	push   %eax
40525b:	ff 75 f8             	push   -0x8(%ebp)
40525e:	e8 1d 64 01 00       	call   0x41b680
405263:	8d 0c 5d 02 00 00 00 	lea    0x2(,%ebx,2),%ecx
40526a:	83 c4 24             	add    $0x24,%esp
40526d:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
405273:	72 12                	jb     0x405287
405275:	8b 56 fc             	mov    -0x4(%esi),%edx
405278:	83 c1 23             	add    $0x23,%ecx
40527b:	2b f2                	sub    %edx,%esi
40527d:	8d 46 fc             	lea    -0x4(%esi),%eax
405280:	83 f8 1f             	cmp    $0x1f,%eax
405283:	77 5c                	ja     0x4052e1
405285:	8b f2                	mov    %edx,%esi
405287:	51                   	push   %ecx
405288:	56                   	push   %esi
405289:	e8 2a 49 01 00       	call   0x419bb8
40528e:	8b 45 f4             	mov    -0xc(%ebp),%eax
405291:	83 c4 08             	add    $0x8,%esp
405294:	89 07                	mov    %eax,(%edi)
405296:	8b c7                	mov    %edi,%eax
405298:	5f                   	pop    %edi
405299:	5e                   	pop    %esi
40529a:	5b                   	pop    %ebx
40529b:	8b e5                	mov    %ebp,%esp
40529d:	5d                   	pop    %ebp
40529e:	c2 18 00             	ret    $0x18
4052a1:	8b 45 e0             	mov    -0x20(%ebp),%eax
4052a4:	50                   	push   %eax
4052a5:	57                   	push   %edi
4052a6:	51                   	push   %ecx
4052a7:	e8 d4 63 01 00       	call   0x41b680
4052ac:	ff 75 f0             	push   -0x10(%ebp)
4052af:	ff 75 ec             	push   -0x14(%ebp)
4052b2:	ff 75 e8             	push   -0x18(%ebp)
4052b5:	e8 c6 63 01 00       	call   0x41b680
4052ba:	ff 75 fc             	push   -0x4(%ebp)
4052bd:	8d 0c 3e             	lea    (%esi,%edi,1),%ecx