405956:	e8 89 37 00 00       	call   0x4090e4
40595b:	83 c4 0c             	add    $0xc,%esp
40595e:	83 fe 03             	cmp    $0x3,%esi
405961:	74 0a                	je     0x40596d
405963:	6a 0a                	push   $0xa
405965:	59                   	pop    %ecx
405966:	e8 f4 d0 ff ff       	call   0x402a5f
40596b:	eb 4e                	jmp    0x4059bb
40596d:	8b 4b 08             	mov    0x8(%ebx),%ecx
405970:	8d 55 a8             	lea    -0x58(%ebp),%edx
405973:	e8 1c e1 ff ff       	call   0x403a94
405978:	84 c0                	test   %al,%al
40597a:	74 0e                	je     0x40598a
40597c:	8d 45 a8             	lea    -0x58(%ebp),%eax
40597f:	50                   	push   %eax
405980:	ff 15 8c f0 40 00    	call   *0x40f08c
405986:	8b f8                	mov    %eax,%edi
405988:	eb 31                	jmp    0x4059bb
40598a:	6a 20                	push   $0x20
40598c:	8d 45 b8             	lea    -0x48(%ebp),%eax
40598f:	50                   	push   %eax
405990:	68 5e 04 00 00       	push   $0x45e
405995:	57                   	push   %edi
405996:	ff 15 20 f1 40 00    	call   *0x40f120
40599c:	85 c0                	test   %eax,%eax
40599e:	75 04                	jne    0x4059a4
4059a0:	66 89 45 b8          	mov    %ax,-0x48(%ebp)
4059a4:	ff 73 08             	push   0x8(%ebx)
4059a7:	8d 45 b8             	lea    -0x48(%ebp),%eax
4059aa:	50                   	push   %eax
4059ab:	68 a0 19 40 00       	push   $0x4019a0
4059b0:	e8 05 cf ff ff       	call   0x4028ba
4059b5:	83 c4 0c             	add    $0xc,%esp
4059b8:	6a 57                	push   $0x57
4059ba:	5f                   	pop    %edi
4059bb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4059be:	8b c7                	mov    %edi,%eax
4059c0:	5f                   	pop    %edi
4059c1:	5e                   	pop    %esi
4059c2:	33 cd                	xor    %ebp,%ecx
4059c4:	5b                   	pop    %ebx
4059c5:	e8 06 31 00 00       	call   0x408ad0
4059ca:	c9                   	leave
4059cb:	c3                   	ret
4059cc:	8b ff                	mov    %edi,%edi
4059ce:	55                   	push   %ebp
4059cf:	8b ec                	mov    %esp,%ebp
4059d1:	81 ec d8 04 00 00    	sub    $0x4d8,%esp
4059d7:	a1 04 a0 40 00       	mov    0x40a004,%eax
4059dc:	33 c5                	xor    %ebp,%eax
4059de:	89 45 f8             	mov    %eax,-0x8(%ebp)
4059e1:	53                   	push   %ebx
4059e2:	56                   	push   %esi
4059e3:	57                   	push   %edi
4059e4:	68 02 04 00 00       	push   $0x402
4059e9:	33 db                	xor    %ebx,%ebx
4059eb:	8d 85 8c fb ff ff    	lea    -0x474(%ebp),%eax
4059f1:	8b f1                	mov    %ecx,%esi
4059f3:	89 9d 80 fb ff ff    	mov    %ebx,-0x480(%ebp)
4059f9:	53                   	push   %ebx
4059fa:	50                   	push   %eax
4059fb:	8b fa                	mov    %edx,%edi
4059fd:	89 b5 84 fb ff ff    	mov    %esi,-0x47c(%ebp)
405a03:	e8 dc 36 00 00       	call   0x4090e4
405a08:	6a 40                	push   $0x40
405a0a:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405a0d:	53                   	push   %ebx
405a0e:	50                   	push   %eax
405a0f:	e8 d0 36 00 00       	call   0x4090e4
405a14:	83 c4 18             	add    $0x18,%esp
405a17:	33 c9                	xor    %ecx,%ecx
405a19:	6a 14                	push   $0x14
405a1b:	58                   	pop    %eax
405a1c:	89 85 88 fb ff ff    	mov    %eax,-0x478(%ebp)
405a22:	3b f0                	cmp    %eax,%esi
405a24:	7d 19                	jge    0x405a3f
405a26:	38 4d 08             	cmp    %cl,0x8(%ebp)
405a29:	0f 95 c1             	setne  %cl
405a2c:	8d 0c 4d 09 00 00 00 	lea    0x9(,%ecx,2),%ecx
405a33:	e8 27 d0 ff ff       	call   0x402a5f
405a38:	8b fb                	mov    %ebx,%edi
405a3a:	e9 8f 03 00 00       	jmp    0x405dce
405a3f:	8b 47 08             	mov    0x8(%edi),%eax
405a42:	89 85 60 fb ff ff    	mov    %eax,-0x4a0(%ebp)
405a48:	8b 47 0c             	mov    0xc(%edi),%eax
405a4b:	6a 2a                	push   $0x2a
405a4d:	5a                   	pop    %edx
405a4e:	89 8d 68 fb ff ff    	mov    %ecx,-0x498(%ebp)
405a54:	0f b7 00             	movzwl (%eax),%eax
405a57:	66 3b c2             	cmp    %dx,%ax
405a5a:	74 11                	je     0x405a6d
405a5c:	83 f8 74             	cmp    $0x74,%eax
405a5f:	74 0c                	je     0x405a6d
405a61:	c6 85 78 fb ff ff 01 	movb   $0x1,-0x488(%ebp)
405a68:	83 f8 54             	cmp    $0x54,%eax
405a6b:	75 06                	jne    0x405a73
405a6d:	88 8d 78 fb ff ff    	mov    %cl,-0x488(%ebp)
405a73:	8b 47 10             	mov    0x10(%edi),%eax
405a76:	66 39 10             	cmp    %dx,(%eax)
405a79:	74 6a                	je     0x405ae5
405a7b:	8b d8                	mov    %eax,%ebx
405a7d:	8b cb                	mov    %ebx,%ecx
405a7f:	8d 51 02             	lea    0x2(%ecx),%edx
405a82:	66 8b 01             	mov    (%ecx),%ax
405a85:	83 c1 02             	add    $0x2,%ecx
405a88:	66 3b 85 80 fb ff ff 	cmp    -0x480(%ebp),%ax
405a8f:	75 f1                	jne    0x405a82
405a91:	2b ca                	sub    %edx,%ecx
405a93:	d1 f9                	sar    $1,%ecx
405a95:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
405a9b:	0f 87 48 03 00 00    	ja     0x405de9
405aa1:	6a 2a                	push   $0x2a
405aa3:	5a                   	pop    %edx
405aa4:	85 db                	test   %ebx,%ebx
405aa6:	74 3d                	je     0x405ae5
405aa8:	8b 4f 14             	mov    0x14(%edi),%ecx
405aab:	66 39 11             	cmp    %dx,(%ecx)
405aae:	0f 84 1e 03 00 00    	je     0x405dd2
405ab4:	e8 bd e1 ff ff       	call   0x403c76
405ab9:	53                   	push   %ebx
405aba:	ba 00 01 00 00       	mov    $0x100,%edx
405abf:	0f b7 f0             	movzwl %ax,%esi
405ac2:	8d 8d 8c fd ff ff    	lea    -0x274(%ebp),%ecx
405ac8:	e8 93 cc ff ff       	call   0x402760
405acd:	33 c0                	xor    %eax,%eax
405acf:	66 89 75 8c          	mov    %si,-0x74(%ebp)
405ad3:	8b b5 84 fb ff ff    	mov    -0x47c(%ebp),%esi
405ad9:	6a 2a                	push   $0x2a
405adb:	66 89 85 8c fb ff ff 	mov    %ax,-0x474(%ebp)
405ae2:	5a                   	pop    %edx
405ae3:	eb 0c                	jmp    0x405af1
405ae5:	8b 47 14             	mov    0x14(%edi),%eax
405ae8:	66 39 10             	cmp    %dx,(%eax)
405aeb:	0f 85 e1 02 00 00    	jne    0x405dd2
405af1:	8b 47 18             	mov    0x18(%edi),%eax
405af4:	66 39 10             	cmp    %dx,(%eax)
405af7:	74 06                	je     0x405aff
405af9:	89 85 68 fb ff ff    	mov    %eax,-0x498(%ebp)
405aff:	8b 4f 1c             	mov    0x1c(%edi),%ecx
405b02:	66 39 11             	cmp    %dx,(%ecx)
405b05:	74 0d                	je     0x405b14
405b07:	e8 6a e1 ff ff       	call   0x403c76
405b0c:	89 85 80 fb ff ff    	mov    %eax,-0x480(%ebp)
405b12:	eb 07                	jmp    0x405b1b
405b14:	83 8d 80 fb ff ff ff 	orl    $0xffffffff,-0x480(%ebp)
405b1b:	8b 4f 20             	mov    0x20(%edi),%ecx
405b1e:	e8 53 e1 ff ff       	call   0x403c76
405b23:	6a 09                	push   $0x9
405b25:	51                   	push   %ecx
405b26:	8b d7                	mov    %edi,%edx
405b28:	89 85 64 fb ff ff    	mov    %eax,-0x49c(%ebp)
405b2e:	8d 8d 2c fb ff ff    	lea    -0x4d4(%ebp),%ecx
405b34:	e8 0d e2 ff ff       	call   0x403d46
405b39:	8b 4f 48             	mov    0x48(%edi),%ecx
405b3c:	33 c0                	xor    %eax,%eax
405b3e:	6a 2a                	push   $0x2a
405b40:	5a                   	pop    %edx
405b41:	89 85 7c fb ff ff    	mov    %eax,-0x484(%ebp)
405b47:	66 39 11             	cmp    %dx,(%ecx)
405b4a:	74 21                	je     0x405b6d
405b4c:	51                   	push   %ecx
405b4d:	8d 95 7c fb ff ff    	lea    -0x484(%ebp),%edx
405b53:	e8 7a d4 ff ff       	call   0x402fd2
405b58:	8b 8d 7c fb ff ff    	mov    -0x484(%ebp),%ecx
405b5e:	8d 51 01             	lea    0x1(%ecx),%edx
405b61:	8a 01                	mov    (%ecx),%al
405b63:	41                   	inc    %ecx
405b64:	84 c0                	test   %al,%al
405b66:	75 f9                	jne    0x405b61
405b68:	2b ca                	sub    %edx,%ecx
405b6a:	8d 41 01             	lea    0x1(%ecx),%eax
405b6d:	8b 4f 4c             	mov    0x4c(%edi),%ecx
405b70:	89 85 84 fb ff ff    	mov    %eax,-0x47c(%ebp)
405b76:	e8 fb e0 ff ff       	call   0x403c76
405b7b:	8b c8                	mov    %eax,%ecx
405b7d:	89 8d 6c fb ff ff    	mov    %ecx,-0x494(%ebp)
405b83:	8d 04 8d 14 00 00 00 	lea    0x14(,%ecx,4),%eax
405b8a:	3b f0                	cmp    %eax,%esi
405b8c:	74 1b                	je     0x405ba9
405b8e:	33 c9                	xor    %ecx,%ecx
405b90:	38 4d 08             	cmp    %cl,0x8(%ebp)
405b93:	0f 95 c1             	setne  %cl
405b96:	8d 0c 4d 09 00 00 00 	lea    0x9(,%ecx,2),%ecx
405b9d:	e8 bd ce ff ff       	call   0x402a5f
405ba2:	33 c0                	xor    %eax,%eax
405ba4:	e9 43 02 00 00       	jmp    0x405dec
405ba9:	85 c9                	test   %ecx,%ecx
405bab:	0f 84 3f 01 00 00    	je     0x405cf0
405bb1:	8b c1                	mov    %ecx,%eax
405bb3:	c1 e0 04             	shl    $0x4,%eax
405bb6:	05 e8 05 00 00       	add    $0x5e8,%eax
405bbb:	50                   	push   %eax
405bbc:	ff 15 a4 f0 40 00    	call   *0x40f0a4
405bc2:	8b f0                	mov    %eax,%esi
405bc4:	85 f6                	test   %esi,%esi
405bc6:	75 07                	jne    0x405bcf
405bc8:	6a 08                	push   $0x8
405bca:	e9 1c 02 00 00       	jmp    0x405deb
405bcf:	33 c0                	xor    %eax,%eax
405bd1:	66 89 06             	mov    %ax,(%esi)
405bd4:	66 89 86 00 02 00 00 	mov    %ax,0x200(%esi)
405bdb:	66 89 86 c0 03 00 00 	mov    %ax,0x3c0(%esi)
405be2:	8b 4f 54             	mov    0x54(%edi),%ecx
405be5:	e8 8c e0 ff ff       	call   0x403c76
405bea:	89 86 d8 05 00 00    	mov    %eax,0x5d8(%esi)
405bf0:	8b 4f 58             	mov    0x58(%edi),%ecx
405bf3:	e8 7e e0 ff ff       	call   0x403c76
405bf8:	8b 8d 6c fb ff ff    	mov    -0x494(%ebp),%ecx
405bfe:	89 86 dc 05 00 00    	mov    %eax,0x5dc(%esi)
405c04:	8d 86 e8 05 00 00    	lea    0x5e8(%esi),%eax
405c0a:	89 86 e4 05 00 00    	mov    %eax,0x5e4(%esi)
405c10:	33 c0                	xor    %eax,%eax
405c12:	89 8e e0 05 00 00    	mov    %ecx,0x5e0(%esi)
405c18:	89 85 74 fb ff ff    	mov    %eax,-0x48c(%ebp)
405c1e:	85 c9                	test   %ecx,%ecx
405c20:	0f 84 ce 00 00 00    	je     0x405cf4
405c26:	8b d0                	mov    %eax,%edx
405c28:	89 85 70 fb ff ff    	mov    %eax,-0x490(%ebp)
405c2e:	8b 86 e4 05 00 00    	mov    0x5e4(%esi),%eax
405c34:	8b 8d 88 fb ff ff    	mov    -0x478(%ebp),%ecx
405c3a:	83 c0 08             	add    $0x8,%eax
405c3d:	03 d0                	add    %eax,%edx
405c3f:	8b 0c 8f             	mov    (%edi,%ecx,4),%ecx
405c42:	e8 b9 e0 ff ff       	call   0x403d00
405c47:	84 c0                	test   %al,%al
405c49:	0f 84 97 00 00 00    	je     0x405ce6
405c4f:	8b 85 88 fb ff ff    	mov    -0x478(%ebp),%eax
405c55:	40                   	inc    %eax
405c56:	89 85 88 fb ff ff    	mov    %eax,-0x478(%ebp)
405c5c:	8b 0c 87             	mov    (%edi,%eax,4),%ecx
405c5f:	e8 12 e0 ff ff       	call   0x403c76
405c64:	3b 86 d8 05 00 00    	cmp    0x5d8(%esi),%eax
405c6a:	75 70                	jne    0x405cdc
405c6c:	8b 85 88 fb ff ff    	mov    -0x478(%ebp),%eax
405c72:	40                   	inc    %eax
405c73:	89 85 88 fb ff ff    	mov    %eax,-0x478(%ebp)
405c79:	8b 0c 87             	mov    (%edi,%eax,4),%ecx
405c7c:	e8 f5 df ff ff       	call   0x403c76
405c81:	3b 86 dc 05 00 00    	cmp    0x5dc(%esi),%eax
405c87:	75 49                	jne    0x405cd2
405c89:	8b 8d 88 fb ff ff    	mov    -0x478(%ebp),%ecx
405c8f:	8b 4c 8f 04          	mov    0x4(%edi,%ecx,4),%ecx
405c93:	e8 de df ff ff       	call   0x403c76
405c98:	8b 95 70 fb ff ff    	mov    -0x490(%ebp),%edx
405c9e:	8b 8e e4 05 00 00    	mov    0x5e4(%esi),%ecx
405ca4:	83 85 88 fb ff ff 02 	addl   $0x2,-0x478(%ebp)
405cab:	89 04 0a             	mov    %eax,(%edx,%ecx,1)
405cae:	83 c2 10             	add    $0x10,%edx
405cb1:	8b 85 74 fb ff ff    	mov    -0x48c(%ebp),%eax
405cb7:	40                   	inc    %eax
405cb8:	89 95 70 fb ff ff    	mov    %edx,-0x490(%ebp)
405cbe:	89 85 74 fb ff ff    	mov    %eax,-0x48c(%ebp)
405cc4:	3b 85 6c fb ff ff    	cmp    -0x494(%ebp),%eax
405cca:	0f 82 5e ff ff ff    	jb     0x405c2e
405cd0:	eb 22                	jmp    0x405cf4
405cd2:	68 63 04 00 00       	push   $0x463
405cd7:	e9 fb 00 00 00       	jmp    0x405dd7
405cdc:	68 62 04 00 00       	push   $0x462
405ce1:	e9 f1 00 00 00       	jmp    0x405dd7
405ce6:	68 61 04 00 00       	push   $0x461
405ceb:	e9 e7 00 00 00       	jmp    0x405dd7
405cf0:	33 c0                	xor    %eax,%eax
405cf2:	8b f0                	mov    %eax,%esi
405cf4:	8d 45 94             	lea    -0x6c(%ebp),%eax
405cf7:	50                   	push   %eax
405cf8:	8d 45 a4             	lea    -0x5c(%ebp),%eax
405cfb:	50                   	push   %eax
405cfc:	ff 75 08             	push   0x8(%ebp)
405cff:	8d 85 2c fb ff ff    	lea    -0x4d4(%ebp),%eax
405d05:	ff b5 7c fb ff ff    	push   -0x484(%ebp)
405d0b:	ff b5 84 fb ff ff    	push   -0x47c(%ebp)
405d11:	50                   	push   %eax
405d12:	56                   	push   %esi
405d13:	33 c0                	xor    %eax,%eax
405d15:	f7 db                	neg    %ebx
405d17:	50                   	push   %eax
405d18:	ff b5 64 fb ff ff    	push   -0x49c(%ebp)
405d1e:	1b db                	sbb    %ebx,%ebx
405d20:	8d 85 8c fb ff ff    	lea    -0x474(%ebp),%eax
405d26:	23 d8                	and    %eax,%ebx
405d28:	53                   	push   %ebx
405d29:	ff b5 80 fb ff ff    	push   -0x480(%ebp)
405d2f:	ff b5 68 fb ff ff    	push   -0x498(%ebp)
405d35:	ff b5 78 fb ff ff    	push   -0x488(%ebp)
405d3b:	ff b5 60 fb ff ff    	push   -0x4a0(%ebp)
405d41:	ff 15 38 f0 40 00    	call   *0x40f038
405d47:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
405d4b:	8b f8                	mov    %eax,%edi
405d4d:	75 74                	jne    0x405dc3
405d4f:	85 ff                	test   %edi,%edi
405d51:	75 70                	jne    0x405dc3
405d53:	6a 20                	push   $0x20
405d55:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405d58:	33 db                	xor    %ebx,%ebx
405d5a:	50                   	push   %eax
405d5b:	68 64 04 00 00       	push   $0x464
405d60:	53                   	push   %ebx
405d61:	ff 15 20 f1 40 00    	call   *0x40f120
405d67:	85 c0                	test   %eax,%eax
405d69:	75 04                	jne    0x405d6f
405d6b:	66 89 45 b4          	mov    %ax,-0x4c(%ebp)
405d6f:	ff 75 b0             	push   -0x50(%ebp)
405d72:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405d75:	ff 75 ac             	push   -0x54(%ebp)
405d78:	ff 75 a8             	push   -0x58(%ebp)
405d7b:	ff 75 a4             	push   -0x5c(%ebp)
405d7e:	50                   	push   %eax
405d7f:	68 b4 19 40 00       	push   $0x4019b4
405d84:	e8 31 cb ff ff       	call   0x4028ba
405d89:	83 c4 18             	add    $0x18,%esp
405d8c:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405d8f:	6a 20                	push   $0x20
405d91:	50                   	push   %eax
405d92:	68 65 04 00 00       	push   $0x465
405d97:	53                   	push   %ebx
405d98:	ff 15 20 f1 40 00    	call   *0x40f120
405d9e:	85 c0                	test   %eax,%eax
405da0:	75 04                	jne    0x405da6
405da2:	66 89 45 b4          	mov    %ax,-0x4c(%ebp)
405da6:	ff 75 a0             	push   -0x60(%ebp)
405da9:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405dac:	ff 75 9c             	push   -0x64(%ebp)
405daf:	ff 75 98             	push   -0x68(%ebp)
405db2:	ff 75 94             	push   -0x6c(%ebp)
405db5:	50                   	push   %eax
405db6:	68 b4 19 40 00       	push   $0x4019b4
405dbb:	e8 fa ca ff ff       	call   0x4028ba
405dc0:	83 c4 18             	add    $0x18,%esp
405dc3:	85 f6                	test   %esi,%esi
405dc5:	74 07                	je     0x405dce
405dc7:	56                   	push   %esi
405dc8:	ff 15 b0 f0 40 00    	call   *0x40f0b0
405dce:	8b c7                	mov    %edi,%eax
405dd0:	eb 1a                	jmp    0x405dec
405dd2:	68 60 04 00 00       	push   $0x460
405dd7:	e8 b3 cb ff ff       	call   0x40298f
405ddc:	c7 04 24 c4 13 40 00 	movl   $0x4013c4,(%esp)
405de3:	e8 d2 ca ff ff       	call   0x4028ba
405de8:	59                   	pop    %ecx
405de9:	6a 57                	push   $0x57
405deb:	58                   	pop    %eax
405dec:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405def:	5f                   	pop    %edi
405df0:	5e                   	pop    %esi
405df1:	33 cd                	xor    %ebp,%ecx
405df3:	5b                   	pop    %ebx
405df4:	e8 d7 2c 00 00       	call   0x408ad0
405df9:	c9                   	leave
405dfa:	c2 04 00             	ret    $0x4
405dfd:	8b ff                	mov    %edi,%edi