406fc2:	68 a8 16 40 00       	push   $0x4016a8
406fc7:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406fca:	e8 11 17 00 00       	call   0x4086e0
406fcf:	8b 45 e8             	mov    -0x18(%ebp),%eax
406fd2:	85 c0                	test   %eax,%eax
406fd4:	74 04                	je     0x406fda
406fd6:	8b 00                	mov    (%eax),%eax
406fd8:	eb 02                	jmp    0x406fdc
406fda:	8b c3                	mov    %ebx,%eax
406fdc:	8b 4d dc             	mov    -0x24(%ebp),%ecx
406fdf:	8b 31                	mov    (%ecx),%esi
406fe1:	ff 75 d4             	push   -0x2c(%ebp)
406fe4:	53                   	push   %ebx
406fe5:	53                   	push   %ebx
406fe6:	53                   	push   %ebx
406fe7:	53                   	push   %ebx
406fe8:	53                   	push   %ebx
406fe9:	53                   	push   %ebx
406fea:	50                   	push   %eax
406feb:	51                   	push   %ecx
406fec:	8b 4e 0c             	mov    0xc(%esi),%ecx
406fef:	ff 15 20 23 41 00    	call   *0x412320
406ff5:	ff 56 0c             	call   *0xc(%esi)
406ff8:	8b d8                	mov    %eax,%ebx
406ffa:	89 5d c8             	mov    %ebx,-0x38(%ebp)
406ffd:	8b 75 e4             	mov    -0x1c(%ebp),%esi
407000:	85 db                	test   %ebx,%ebx
407002:	79 07                	jns    0x40700b
407004:	8b cb                	mov    %ebx,%ecx
407006:	e9 3f 01 00 00       	jmp    0x40714a
40700b:	68 98 16 40 00       	push   $0x401698
407010:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407013:	e8 c8 16 00 00       	call   0x4086e0
407018:	8b 7d ec             	mov    -0x14(%ebp),%edi
40701b:	85 ff                	test   %edi,%edi
40701d:	74 04                	je     0x407023
40701f:	8b 07                	mov    (%edi),%eax
407021:	eb 02                	jmp    0x407025
407023:	33 c0                	xor    %eax,%eax
407025:	85 f6                	test   %esi,%esi
407027:	74 04                	je     0x40702d
407029:	8b 16                	mov    (%esi),%edx
40702b:	eb 02                	jmp    0x40702f
40702d:	33 d2                	xor    %edx,%edx
40702f:	ff 75 14             	push   0x14(%ebp)
407032:	50                   	push   %eax
407033:	8b 45 d4             	mov    -0x2c(%ebp),%eax
407036:	8b 08                	mov    (%eax),%ecx
407038:	e8 a9 03 00 00       	call   0x4073e6
40703d:	89 45 c8             	mov    %eax,-0x38(%ebp)
407040:	85 c0                	test   %eax,%eax
407042:	79 07                	jns    0x40704b
407044:	8b c8                	mov    %eax,%ecx
407046:	e9 ff 00 00 00       	jmp    0x40714a
40704b:	8b 4d 24             	mov    0x24(%ebp),%ecx
40704e:	85 c9                	test   %ecx,%ecx
407050:	74 05                	je     0x407057
407052:	8b 45 d8             	mov    -0x28(%ebp),%eax
407055:	89 01                	mov    %eax,(%ecx)
407057:	33 f6                	xor    %esi,%esi
407059:	46                   	inc    %esi
40705a:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40705d:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
407064:	eb 65                	jmp    0x4070cb
407066:	89 65 f0             	mov    %esp,-0x10(%ebp)
407069:	c6 45 fc 10          	movb   $0x10,-0x4(%ebp)
40706d:	8b 75 a8             	mov    -0x58(%ebp),%esi
407070:	8b 4e 04             	mov    0x4(%esi),%ecx
407073:	e8 92 08 00 00       	call   0x40790a
407078:	8b 45 20             	mov    0x20(%ebp),%eax
40707b:	85 c0                	test   %eax,%eax
40707d:	74 05                	je     0x407084
40707f:	8b 4e 04             	mov    0x4(%esi),%ecx
407082:	89 08                	mov    %ecx,(%eax)
407084:	c7 45 fc 0f 00 00 00 	movl   $0xf,-0x4(%ebp)
40708b:	8b 7d d4             	mov    -0x2c(%ebp),%edi
40708e:	8b 0f                	mov    (%edi),%ecx
407090:	85 c9                	test   %ecx,%ecx
407092:	74 13                	je     0x4070a7
407094:	8b 01                	mov    (%ecx),%eax
407096:	51                   	push   %ecx
407097:	8b 70 08             	mov    0x8(%eax),%esi
40709a:	8b ce                	mov    %esi,%ecx
40709c:	ff 15 20 23 41 00    	call   *0x412320
4070a2:	ff d6                	call   *%esi
4070a4:	83 27 00             	andl   $0x0,(%edi)
4070a7:	83 65 c4 00          	andl   $0x0,-0x3c(%ebp)
4070ab:	b8 c1 70 40 00       	mov    $0x4070c1,%eax
4070b0:	c3                   	ret
4070b1:	b9 0e 00 07 80       	mov    $0x8007000e,%ecx
4070b6:	e8 4f 08 00 00       	call   0x40790a
4070bb:	b8 84 70 40 00       	mov    $0x407084,%eax
4070c0:	c3                   	ret
4070c1:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
4070c8:	8b 75 c4             	mov    -0x3c(%ebp),%esi
4070cb:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
4070cf:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4070d2:	e8 78 e8 ff ff       	call   0x40594f
4070d7:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4070db:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4070de:	e8 6c e8 ff ff       	call   0x40594f
4070e3:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
4070e7:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4070ea:	e8 60 e8 ff ff       	call   0x40594f
4070ef:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4070f3:	8d 4d d0             	lea    -0x30(%ebp),%ecx
4070f6:	e8 54 e8 ff ff       	call   0x40594f
4070fb:	8b c6                	mov    %esi,%eax
4070fd:	eb 3e                	jmp    0x40713d
4070ff:	8b 45 20             	mov    0x20(%ebp),%eax
407102:	85 c0                	test   %eax,%eax
407104:	74 06                	je     0x40710c
407106:	c7 00 08 10 04 80    	movl   $0x80041008,(%eax)
40710c:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
407110:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407113:	e8 37 e8 ff ff       	call   0x40594f
407118:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40711c:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40711f:	e8 2b e8 ff ff       	call   0x40594f
407124:	88 5d fc             	mov    %bl,-0x4(%ebp)
407127:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40712a:	e8 20 e8 ff ff       	call   0x40594f
40712f:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407133:	8d 4d d0             	lea    -0x30(%ebp),%ecx
407136:	e8 14 e8 ff ff       	call   0x40594f
40713b:	33 c0                	xor    %eax,%eax
40713d:	e8 b7 81 00 00       	call   0x40f2f9
407142:	c2 24 00             	ret    $0x24
407145:	b9 ba 06 07 80       	mov    $0x800706ba,%ecx
40714a:	e8 d2 15 00 00       	call   0x408721
40714f:	cc                   	int3
407150:	6a 1c                	push   $0x1c
407152:	b8 7c fa 40 00       	mov    $0x40fa7c,%eax
407157:	e8 f3 81 00 00       	call   0x40f34f
40715c:	89 55 e0             	mov    %edx,-0x20(%ebp)
40715f:	89 4d dc             	mov    %ecx,-0x24(%ebp)
407162:	33 db                	xor    %ebx,%ebx
407164:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
407167:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40716a:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40716d:	ff 15 f8 21 41 00    	call   *0x4121f8
407173:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407176:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40717a:	8b 75 18             	mov    0x18(%ebp),%esi
40717d:	8b 5d 10             	mov    0x10(%ebp),%ebx
407180:	83 fe 01             	cmp    $0x1,%esi
407183:	75 19                	jne    0x40719e
407185:	68 a8 12 40 00       	push   $0x4012a8
40718a:	8b cb                	mov    %ebx,%ecx
40718c:	ff 15 08 22 41 00    	call   *0x412208
407192:	85 c0                	test   %eax,%eax
407194:	75 08                	jne    0x40719e
407196:	8b 7d 0c             	mov    0xc(%ebp),%edi
407199:	e9 b4 00 00 00       	jmp    0x407252
40719e:	8b 7d 0c             	mov    0xc(%ebp),%edi
4071a1:	8b cf                	mov    %edi,%ecx
4071a3:	ff 15 38 22 41 00    	call   *0x412238
4071a9:	8b 40 04             	mov    0x4(%eax),%eax
4071ac:	85 c0                	test   %eax,%eax
4071ae:	75 13                	jne    0x4071c3
4071b0:	51                   	push   %ecx
4071b1:	ff 75 20             	push   0x20(%ebp)
4071b4:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4071b7:	50                   	push   %eax
4071b8:	51                   	push   %ecx
4071b9:	33 c0                	xor    %eax,%eax
4071bb:	50                   	push   %eax
4071bc:	ff 75 14             	push   0x14(%ebp)
4071bf:	50                   	push   %eax
4071c0:	50                   	push   %eax
4071c1:	eb 1f                	jmp    0x4071e2
4071c3:	33 c9                	xor    %ecx,%ecx
4071c5:	85 f6                	test   %esi,%esi
4071c7:	75 02                	jne    0x4071cb
4071c9:	8b 0b                	mov    (%ebx),%ecx
4071cb:	51                   	push   %ecx
4071cc:	ff 75 20             	push   0x20(%ebp)
4071cf:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4071d2:	50                   	push   %eax
4071d3:	51                   	push   %ecx
4071d4:	33 c0                	xor    %eax,%eax
4071d6:	85 f6                	test   %esi,%esi
4071d8:	0f 95 c0             	setne  %al
4071db:	50                   	push   %eax
4071dc:	ff 75 14             	push   0x14(%ebp)
4071df:	51                   	push   %ecx
4071e0:	ff 37                	push   (%edi)
4071e2:	ff 75 08             	push   0x8(%ebp)
4071e5:	8b 55 e0             	mov    -0x20(%ebp),%edx
4071e8:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4071eb:	e8 03 fa ff ff       	call   0x406bf3
4071f0:	89 45 e8             	mov    %eax,-0x18(%ebp)
4071f3:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4071f6:	56                   	push   %esi
4071f7:	ff 15 74 20 41 00    	call   *0x412074
4071fd:	83 7d e8 01          	cmpl   $0x1,-0x18(%ebp)
407201:	75 12                	jne    0x407215
407203:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407207:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40720a:	ff 15 30 22 41 00    	call   *0x412230
407210:	33 c0                	xor    %eax,%eax
407212:	40                   	inc    %eax
407213:	eb 28                	jmp    0x40723d
407215:	b8 64 10 04 80       	mov    $0x80041064,%eax
40721a:	3b f0                	cmp    %eax,%esi
40721c:	74 27                	je     0x407245
40721e:	b8 05 00 07 80       	mov    $0x80070005,%eax
407223:	3b f0                	cmp    %eax,%esi
407225:	74 1e                	je     0x407245
407227:	8b ce                	mov    %esi,%ecx
407229:	e8 dc 06 00 00       	call   0x40790a
40722e:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
407232:	8d 4d ec             	lea    -0x14(%ebp),%ecx
407235:	ff 15 30 22 41 00    	call   *0x412230
40723b:	33 c0                	xor    %eax,%eax
40723d:	e8 b7 80 00 00       	call   0x40f2f9
407242:	c2 24 00             	ret    $0x24
407245:	50                   	push   %eax
407246:	ff 15 74 20 41 00    	call   *0x412074
40724c:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
407250:	74 dc                	je     0x40722e
407252:	8b cf                	mov    %edi,%ecx
407254:	ff 15 38 22 41 00    	call   *0x412238
40725a:	8b 40 04             	mov    0x4(%eax),%eax
40725d:	85 c0                	test   %eax,%eax
40725f:	75 34                	jne    0x407295
407261:	21 45 e4             	and    %eax,-0x1c(%ebp)
407264:	8d 45 e4             	lea    -0x1c(%ebp),%eax
407267:	50                   	push   %eax
407268:	6a 00                	push   $0x0
40726a:	6a 02                	push   $0x2
40726c:	ff 15 4c 21 41 00    	call   *0x41214c
407272:	ff 75 e4             	push   -0x1c(%ebp)
407275:	8b cf                	mov    %edi,%ecx
407277:	ff 15 34 22 41 00    	call   *0x412234
40727d:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
407280:	51                   	push   %ecx
407281:	50                   	push   %eax
407282:	6a 02                	push   $0x2
407284:	ff 15 4c 21 41 00    	call   *0x41214c
40728a:	84 c0                	test   %al,%al
40728c:	75 07                	jne    0x407295
40728e:	e8 61 25 00 00       	call   0x4097f4
407293:	eb 99                	jmp    0x40722e
407295:	68 00 01 00 00       	push   $0x100
40729a:	8b cb                	mov    %ebx,%ecx
40729c:	ff 15 34 22 41 00    	call   *0x412234
4072a2:	8b f0                	mov    %eax,%esi
4072a4:	ff 37                	push   (%edi)
4072a6:	b9 7d 15 00 00       	mov    $0x157d,%ecx
4072ab:	e8 a1 27 00 00       	call   0x409a51
4072b0:	50                   	push   %eax
4072b1:	8d 45 ec             	lea    -0x14(%ebp),%eax
4072b4:	50                   	push   %eax
4072b5:	ff 15 04 22 41 00    	call   *0x412204
4072bb:	83 c4 0c             	add    $0xc,%esp
4072be:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4072c1:	ff 15 38 22 41 00    	call   *0x412238
4072c7:	8b 40 04             	mov    0x4(%eax),%eax
4072ca:	6a 00                	push   $0x0
4072cc:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4072cf:	51                   	push   %ecx
4072d0:	50                   	push   %eax
4072d1:	ff 75 ec             	push   -0x14(%ebp)
4072d4:	6a f5                	push   $0xfffffff5
4072d6:	ff 15 58 20 41 00    	call   *0x412058
4072dc:	50                   	push   %eax
4072dd:	ff 15 54 20 41 00    	call   *0x412054
4072e3:	ba 00 01 00 00       	mov    $0x100,%edx
4072e8:	8b ce                	mov    %esi,%ecx
4072ea:	e8 6a 36 00 00       	call   0x40a959
4072ef:	89 45 e8             	mov    %eax,-0x18(%ebp)
4072f2:	83 f8 01             	cmp    $0x1,%eax
4072f5:	0f 85 33 ff ff ff    	jne    0x40722e
4072fb:	6a ff                	push   $0xffffffff
4072fd:	8b cb                	mov    %ebx,%ecx
4072ff:	ff 15 40 22 41 00    	call   *0x412240
407305:	51                   	push   %ecx
407306:	ff 75 20             	push   0x20(%ebp)
407309:	6a 00                	push   $0x0
40730b:	51                   	push   %ecx
40730c:	6a 00                	push   $0x0
40730e:	ff 75 14             	push   0x14(%ebp)
407311:	ff 33                	push   (%ebx)
407313:	ff 37                	push   (%edi)
407315:	ff 75 08             	push   0x8(%ebp)
407318:	8b 55 e0             	mov    -0x20(%ebp),%edx
40731b:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40731e:	e8 d0 f8 ff ff       	call   0x406bf3
407323:	8b f0                	mov    %eax,%esi
407325:	89 75 e8             	mov    %esi,-0x18(%ebp)
407328:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40732c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40732f:	ff 15 30 22 41 00    	call   *0x412230
407335:	8b c6                	mov    %esi,%eax
407337:	e9 01 ff ff ff       	jmp    0x40723d
40733c:	b9 06 10 04 80       	mov    $0x80041006,%ecx
407341:	e8 c4 05 00 00       	call   0x40790a
407346:	b8 2e 72 40 00       	mov    $0x40722e,%eax
40734b:	c3                   	ret
40734c:	8b ff                	mov    %edi,%edi
40734e:	55                   	push   %ebp
40734f:	8b ec                	mov    %esp,%ebp
407351:	83 ec 10             	sub    $0x10,%esp
407354:	33 c0                	xor    %eax,%eax
407356:	89 55 f0             	mov    %edx,-0x10(%ebp)
407359:	57                   	push   %edi
40735a:	8b f9                	mov    %ecx,%edi
40735c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40735f:	89 45 f4             	mov    %eax,-0xc(%ebp)
407362:	89 45 fc             	mov    %eax,-0x4(%ebp)
407365:	85 ff                	test   %edi,%edi
407367:	75 07                	jne    0x407370
407369:	b8 08 10 04 80       	mov    $0x80041008,%eax
40736e:	eb 71                	jmp    0x4073e1
407370:	53                   	push   %ebx
407371:	56                   	push   %esi
407372:	8b 37                	mov    (%edi),%esi
407374:	8d 45 fc             	lea    -0x4(%ebp),%eax
407377:	50                   	push   %eax
407378:	68 30 11 40 00       	push   $0x401130
40737d:	57                   	push   %edi
40737e:	8b 0e                	mov    (%esi),%ecx
407380:	ff 15 20 23 41 00    	call   *0x412320
407386:	ff 16                	call   *(%esi)
407388:	8b d8                	mov    %eax,%ebx
40738a:	85 db                	test   %ebx,%ebx
40738c:	78 4f                	js     0x4073dd
40738e:	8b 45 fc             	mov    -0x4(%ebp),%eax
407391:	33 c9                	xor    %ecx,%ecx
407393:	51                   	push   %ecx
407394:	51                   	push   %ecx
407395:	51                   	push   %ecx
407396:	8b 30                	mov    (%eax),%esi
407398:	51                   	push   %ecx
407399:	51                   	push   %ecx
40739a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40739d:	51                   	push   %ecx
40739e:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4073a1:	51                   	push   %ecx
4073a2:	8b 4e 0c             	mov    0xc(%esi),%ecx
4073a5:	57                   	push   %edi
4073a6:	50                   	push   %eax
4073a7:	ff 15 20 23 41 00    	call   *0x412320
4073ad:	ff 56 0c             	call   *0xc(%esi)
4073b0:	8b d8                	mov    %eax,%ebx
4073b2:	85 db                	test   %ebx,%ebx
4073b4:	78 10                	js     0x4073c6
4073b6:	8b 4d 08             	mov    0x8(%ebp),%ecx
4073b9:	8b 45 f8             	mov    -0x8(%ebp),%eax