40a055:	5f                   	pop    %edi
40a056:	5e                   	pop    %esi
40a057:	5b                   	pop    %ebx
40a058:	c9                   	leave
40a059:	c2 0c 00             	ret    $0xc
40a05c:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a05f:	8b 45 10             	mov    0x10(%ebp),%eax
40a062:	ff 30                	push   (%eax)
40a064:	e8 6b 3f 00 00       	call   0x40dfd4
40a069:	59                   	pop    %ecx
40a06a:	c3                   	ret
40a06b:	6a 0c                	push   $0xc
40a06d:	68 e8 ff 41 00       	push   $0x41ffe8
40a072:	e8 29 9e ff ff       	call   0x403ea0
40a077:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40a07b:	8b 45 08             	mov    0x8(%ebp),%eax
40a07e:	ff 30                	push   (%eax)
40a080:	e8 07 3f 00 00       	call   0x40df8c
40a085:	59                   	pop    %ecx
40a086:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a08a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a08d:	e8 34 00 00 00       	call   0x40a0c6
40a092:	8b f0                	mov    %eax,%esi
40a094:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40a097:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a09e:	e8 17 00 00 00       	call   0x40a0ba
40a0a3:	8b c6                	mov    %esi,%eax
40a0a5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a0a8:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a0af:	59                   	pop    %ecx
40a0b0:	5f                   	pop    %edi
40a0b1:	5e                   	pop    %esi
40a0b2:	5b                   	pop    %ebx
40a0b3:	c9                   	leave
40a0b4:	c2 0c 00             	ret    $0xc
40a0b7:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a0ba:	8b 45 10             	mov    0x10(%ebp),%eax
40a0bd:	ff 30                	push   (%eax)
40a0bf:	e8 10 3f 00 00       	call   0x40dfd4
40a0c4:	59                   	pop    %ecx
40a0c5:	c3                   	ret
40a0c6:	8b ff                	mov    %edi,%edi
40a0c8:	55                   	push   %ebp
40a0c9:	8b ec                	mov    %esp,%ebp
40a0cb:	51                   	push   %ecx
40a0cc:	51                   	push   %ecx
40a0cd:	8b c1                	mov    %ecx,%eax
40a0cf:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a0d2:	53                   	push   %ebx
40a0d3:	56                   	push   %esi
40a0d4:	8b 00                	mov    (%eax),%eax
40a0d6:	57                   	push   %edi
40a0d7:	8b 30                	mov    (%eax),%esi
40a0d9:	85 f6                	test   %esi,%esi
40a0db:	0f 84 df 00 00 00    	je     0x40a1c0
40a0e1:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40a0e6:	8b c8                	mov    %eax,%ecx
40a0e8:	8b 1e                	mov    (%esi),%ebx
40a0ea:	83 e1 1f             	and    $0x1f,%ecx
40a0ed:	8b 7e 04             	mov    0x4(%esi),%edi
40a0f0:	33 d8                	xor    %eax,%ebx
40a0f2:	8b 76 08             	mov    0x8(%esi),%esi
40a0f5:	33 f8                	xor    %eax,%edi
40a0f7:	33 f0                	xor    %eax,%esi
40a0f9:	d3 cf                	ror    %cl,%edi
40a0fb:	d3 ce                	ror    %cl,%esi
40a0fd:	d3 cb                	ror    %cl,%ebx
40a0ff:	3b fe                	cmp    %esi,%edi
40a101:	75 7b                	jne    0x40a17e
40a103:	2b f3                	sub    %ebx,%esi
40a105:	b8 00 02 00 00       	mov    $0x200,%eax
40a10a:	c1 fe 02             	sar    $0x2,%esi
40a10d:	3b f0                	cmp    %eax,%esi
40a10f:	77 02                	ja     0x40a113
40a111:	8b c6                	mov    %esi,%eax
40a113:	8d 3c 30             	lea    (%eax,%esi,1),%edi
40a116:	85 ff                	test   %edi,%edi
40a118:	75 03                	jne    0x40a11d
40a11a:	6a 20                	push   $0x20
40a11c:	5f                   	pop    %edi
40a11d:	3b fe                	cmp    %esi,%edi
40a11f:	72 1d                	jb     0x40a13e
40a121:	6a 04                	push   $0x4
40a123:	57                   	push   %edi
40a124:	53                   	push   %ebx
40a125:	e8 ee 5f 00 00       	call   0x410118
40a12a:	6a 00                	push   $0x0
40a12c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a12f:	e8 6b 06 00 00       	call   0x40a79f
40a134:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a137:	83 c4 10             	add    $0x10,%esp
40a13a:	85 c9                	test   %ecx,%ecx
40a13c:	75 20                	jne    0x40a15e
40a13e:	6a 04                	push   $0x4
40a140:	8d 7e 04             	lea    0x4(%esi),%edi
40a143:	57                   	push   %edi
40a144:	53                   	push   %ebx
40a145:	e8 ce 5f 00 00       	call   0x410118
40a14a:	6a 00                	push   $0x0
40a14c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a14f:	e8 4b 06 00 00       	call   0x40a79f
40a154:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a157:	83 c4 10             	add    $0x10,%esp
40a15a:	85 c9                	test   %ecx,%ecx
40a15c:	74 62                	je     0x40a1c0
40a15e:	8d 04 b1             	lea    (%ecx,%esi,4),%eax
40a161:	8b d9                	mov    %ecx,%ebx
40a163:	8d 34 b9             	lea    (%ecx,%edi,4),%esi
40a166:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a169:	8b 0d c0 10 42 00    	mov    0x4210c0,%ecx
40a16f:	8b f8                	mov    %eax,%edi
40a171:	3b fe                	cmp    %esi,%edi
40a173:	74 09                	je     0x40a17e
40a175:	89 08                	mov    %ecx,(%eax)
40a177:	83 c0 04             	add    $0x4,%eax
40a17a:	3b c6                	cmp    %esi,%eax
40a17c:	75 f7                	jne    0x40a175
40a17e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a181:	8b 40 04             	mov    0x4(%eax),%eax
40a184:	ff 30                	push   (%eax)
40a186:	e8 be f1 ff ff       	call   0x409349
40a18b:	53                   	push   %ebx
40a18c:	89 07                	mov    %eax,(%edi)
40a18e:	e8 b6 f1 ff ff       	call   0x409349
40a193:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40a196:	8b 0b                	mov    (%ebx),%ecx
40a198:	8b 09                	mov    (%ecx),%ecx
40a19a:	89 01                	mov    %eax,(%ecx)
40a19c:	8d 47 04             	lea    0x4(%edi),%eax
40a19f:	50                   	push   %eax
40a1a0:	e8 a4 f1 ff ff       	call   0x409349
40a1a5:	8b 0b                	mov    (%ebx),%ecx
40a1a7:	56                   	push   %esi
40a1a8:	8b 09                	mov    (%ecx),%ecx
40a1aa:	89 41 04             	mov    %eax,0x4(%ecx)
40a1ad:	e8 97 f1 ff ff       	call   0x409349
40a1b2:	8b 0b                	mov    (%ebx),%ecx
40a1b4:	83 c4 10             	add    $0x10,%esp
40a1b7:	8b 09                	mov    (%ecx),%ecx
40a1b9:	89 41 08             	mov    %eax,0x8(%ecx)
40a1bc:	33 c0                	xor    %eax,%eax
40a1be:	eb 03                	jmp    0x40a1c3
40a1c0:	83 c8 ff             	or     $0xffffffff,%eax
40a1c3:	5f                   	pop    %edi
40a1c4:	5e                   	pop    %esi
40a1c5:	5b                   	pop    %ebx
40a1c6:	c9                   	leave
40a1c7:	c3                   	ret
40a1c8:	8b ff                	mov    %edi,%edi
40a1ca:	55                   	push   %ebp
40a1cb:	8b ec                	mov    %esp,%ebp
40a1cd:	83 ec 14             	sub    $0x14,%esp
40a1d0:	53                   	push   %ebx
40a1d1:	8b d9                	mov    %ecx,%ebx
40a1d3:	57                   	push   %edi
40a1d4:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a1d7:	8b 03                	mov    (%ebx),%eax
40a1d9:	8b 38                	mov    (%eax),%edi
40a1db:	85 ff                	test   %edi,%edi
40a1dd:	75 08                	jne    0x40a1e7
40a1df:	83 c8 ff             	or     $0xffffffff,%eax
40a1e2:	e9 b7 00 00 00       	jmp    0x40a29e
40a1e7:	8b 15 c0 10 42 00    	mov    0x4210c0,%edx
40a1ed:	8b ca                	mov    %edx,%ecx
40a1ef:	56                   	push   %esi
40a1f0:	8b 37                	mov    (%edi),%esi
40a1f2:	83 e1 1f             	and    $0x1f,%ecx
40a1f5:	8b 7f 04             	mov    0x4(%edi),%edi
40a1f8:	33 f2                	xor    %edx,%esi
40a1fa:	33 fa                	xor    %edx,%edi
40a1fc:	d3 ce                	ror    %cl,%esi
40a1fe:	d3 cf                	ror    %cl,%edi
40a200:	85 f6                	test   %esi,%esi
40a202:	0f 84 93 00 00 00    	je     0x40a29b
40a208:	83 fe ff             	cmp    $0xffffffff,%esi
40a20b:	0f 84 8a 00 00 00    	je     0x40a29b
40a211:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a214:	89 7d f4             	mov    %edi,-0xc(%ebp)
40a217:	89 75 f8             	mov    %esi,-0x8(%ebp)
40a21a:	83 ef 04             	sub    $0x4,%edi
40a21d:	3b fe                	cmp    %esi,%edi
40a21f:	72 54                	jb     0x40a275
40a221:	8b 07                	mov    (%edi),%eax
40a223:	3b 45 fc             	cmp    -0x4(%ebp),%eax
40a226:	74 f2                	je     0x40a21a
40a228:	33 c2                	xor    %edx,%eax
40a22a:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a22d:	d3 c8                	ror    %cl,%eax
40a22f:	8b c8                	mov    %eax,%ecx
40a231:	89 17                	mov    %edx,(%edi)
40a233:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a236:	ff 15 54 91 41 00    	call   *0x419154
40a23c:	ff 55 f0             	call   *-0x10(%ebp)
40a23f:	8b 03                	mov    (%ebx),%eax
40a241:	8b 15 c0 10 42 00    	mov    0x4210c0,%edx
40a247:	8b ca                	mov    %edx,%ecx
40a249:	83 e1 1f             	and    $0x1f,%ecx
40a24c:	8b 00                	mov    (%eax),%eax
40a24e:	8b 18                	mov    (%eax),%ebx
40a250:	8b 40 04             	mov    0x4(%eax),%eax
40a253:	33 da                	xor    %edx,%ebx
40a255:	d3 cb                	ror    %cl,%ebx
40a257:	33 c2                	xor    %edx,%eax
40a259:	d3 c8                	ror    %cl,%eax
40a25b:	3b 5d f8             	cmp    -0x8(%ebp),%ebx
40a25e:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40a261:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a264:	75 05                	jne    0x40a26b
40a266:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40a269:	74 af                	je     0x40a21a
40a26b:	8b 75 f0             	mov    -0x10(%ebp),%esi
40a26e:	8b f8                	mov    %eax,%edi
40a270:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a273:	eb a2                	jmp    0x40a217
40a275:	83 fe ff             	cmp    $0xffffffff,%esi
40a278:	74 0d                	je     0x40a287
40a27a:	56                   	push   %esi
40a27b:	e8 1f 05 00 00       	call   0x40a79f
40a280:	8b 15 c0 10 42 00    	mov    0x4210c0,%edx
40a286:	59                   	pop    %ecx
40a287:	8b 03                	mov    (%ebx),%eax
40a289:	8b 00                	mov    (%eax),%eax
40a28b:	89 10                	mov    %edx,(%eax)
40a28d:	8b 03                	mov    (%ebx),%eax
40a28f:	8b 00                	mov    (%eax),%eax
40a291:	89 50 04             	mov    %edx,0x4(%eax)
40a294:	8b 03                	mov    (%ebx),%eax
40a296:	8b 00                	mov    (%eax),%eax
40a298:	89 50 08             	mov    %edx,0x8(%eax)
40a29b:	33 c0                	xor    %eax,%eax
40a29d:	5e                   	pop    %esi
40a29e:	5f                   	pop    %edi
40a29f:	5b                   	pop    %ebx
40a2a0:	c9                   	leave
40a2a1:	c3                   	ret
40a2a2:	8b ff                	mov    %edi,%edi
40a2a4:	55                   	push   %ebp
40a2a5:	8b ec                	mov    %esp,%ebp
40a2a7:	ff 75 08             	push   0x8(%ebp)
40a2aa:	68 a4 20 42 00       	push   $0x4220a4
40a2af:	e8 6b 00 00 00       	call   0x40a31f
40a2b4:	59                   	pop    %ecx
40a2b5:	59                   	pop    %ecx
40a2b6:	5d                   	pop    %ebp
40a2b7:	c3                   	ret
40a2b8:	6a 10                	push   $0x10
40a2ba:	b8 7b 80 41 00       	mov    $0x41807b,%eax
40a2bf:	e8 d1 d6 00 00       	call   0x417995
40a2c4:	8d 45 08             	lea    0x8(%ebp),%eax
40a2c7:	89 45 e8             	mov    %eax,-0x18(%ebp)
40a2ca:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a2ce:	8d 4d f3             	lea    -0xd(%ebp),%ecx
40a2d1:	6a 02                	push   $0x2
40a2d3:	58                   	pop    %eax
40a2d4:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a2d7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a2da:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a2dd:	50                   	push   %eax
40a2de:	8d 45 e8             	lea    -0x18(%ebp),%eax
40a2e1:	50                   	push   %eax
40a2e2:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40a2e5:	50                   	push   %eax
40a2e6:	e8 25 fd ff ff       	call   0x40a010
40a2eb:	e8 91 d6 00 00       	call   0x417981
40a2f0:	c3                   	ret
40a2f1:	cc                   	int3
40a2f2:	cc                   	int3
40a2f3:	cc                   	int3
40a2f4:	cc                   	int3
40a2f5:	cc                   	int3
40a2f6:	8b ff                	mov    %edi,%edi
40a2f8:	55                   	push   %ebp
40a2f9:	8b ec                	mov    %esp,%ebp
40a2fb:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a2fe:	85 c9                	test   %ecx,%ecx
40a300:	75 05                	jne    0x40a307
40a302:	83 c8 ff             	or     $0xffffffff,%eax
40a305:	5d                   	pop    %ebp
40a306:	c3                   	ret
40a307:	8b 01                	mov    (%ecx),%eax
40a309:	3b 41 08             	cmp    0x8(%ecx),%eax
40a30c:	75 0d                	jne    0x40a31b
40a30e:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40a313:	89 01                	mov    %eax,(%ecx)
40a315:	89 41 04             	mov    %eax,0x4(%ecx)
40a318:	89 41 08             	mov    %eax,0x8(%ecx)
40a31b:	33 c0                	xor    %eax,%eax
40a31d:	5d                   	pop    %ebp
40a31e:	c3                   	ret
40a31f:	8b ff                	mov    %edi,%edi
40a321:	55                   	push   %ebp
40a322:	8b ec                	mov    %esp,%ebp
40a324:	83 ec 14             	sub    $0x14,%esp
40a327:	8d 45 08             	lea    0x8(%ebp),%eax
40a32a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a32d:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a330:	6a 02                	push   $0x2
40a332:	8d 45 0c             	lea    0xc(%ebp),%eax
40a335:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a338:	58                   	pop    %eax
40a339:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a33c:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a33f:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a342:	50                   	push   %eax
40a343:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a346:	50                   	push   %eax
40a347:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a34a:	50                   	push   %eax
40a34b:	e8 1b fd ff ff       	call   0x40a06b
40a350:	c9                   	leave
40a351:	c3                   	ret
40a352:	c7 05 b4 23 42 00 28 	movl   $0x421228,0x4223b4
40a359:	12 42 00
40a35c:	b0 01                	mov    $0x1,%al
40a35e:	c3                   	ret
40a35f:	68 a4 20 42 00       	push   $0x4220a4
40a364:	e8 8d ff ff ff       	call   0x40a2f6
40a369:	c7 04 24 b0 20 42 00 	movl   $0x4220b0,(%esp)
40a370:	e8 81 ff ff ff       	call   0x40a2f6
40a375:	59                   	pop    %ecx
40a376:	b0 01                	mov    $0x1,%al
40a378:	c3                   	ret
40a379:	e8 1c f6 ff ff       	call   0x40999a
40a37e:	b0 01                	mov    $0x1,%al
40a380:	c3                   	ret
40a381:	8b ff                	mov    %edi,%edi
40a383:	56                   	push   %esi
40a384:	8b 35 c0 10 42 00    	mov    0x4210c0,%esi
40a38a:	56                   	push   %esi
40a38b:	e8 76 d0 ff ff       	call   0x407406
40a390:	56                   	push   %esi
40a391:	e8 a0 ed ff ff       	call   0x409136
40a396:	56                   	push   %esi
40a397:	e8 96 5f 00 00       	call   0x410332
40a39c:	56                   	push   %esi
40a39d:	e8 e3 ef ff ff       	call   0x409385
40a3a2:	56                   	push   %esi
40a3a3:	e8 4d f9 ff ff       	call   0x409cf5
40a3a8:	83 c4 14             	add    $0x14,%esp
40a3ab:	b0 01                	mov    $0x1,%al
40a3ad:	5e                   	pop    %esi
40a3ae:	c3                   	ret
40a3af:	6a 00                	push   $0x0
40a3b1:	e8 77 ae ff ff       	call   0x40522d
40a3b6:	59                   	pop    %ecx
40a3b7:	c3                   	ret
40a3b8:	8b ff                	mov    %edi,%edi
40a3ba:	55                   	push   %ebp
40a3bb:	8b ec                	mov    %esp,%ebp
40a3bd:	51                   	push   %ecx