401a2e:	89 45 08             	mov    %eax,0x8(%ebp)
401a31:	ff 15 60 81 40 00    	call   *0x408160
401a37:	85 c0                	test   %eax,%eax
401a39:	74 13                	je     0x401a4e
401a3b:	39 5d d4             	cmp    %ebx,-0x2c(%ebp)
401a3e:	74 13                	je     0x401a53
401a40:	56                   	push   %esi
401a41:	ff 75 08             	push   0x8(%ebp)
401a44:	ff 15 24 81 40 00    	call   *0x408124
401a4a:	85 c0                	test   %eax,%eax
401a4c:	75 05                	jne    0x401a53
401a4e:	89 7d fc             	mov    %edi,-0x4(%ebp)
401a51:	88 1e                	mov    %bl,(%esi)
401a53:	88 9e ff 03 00 00    	mov    %bl,0x3ff(%esi)
401a59:	e9 5a 0f 00 00       	jmp    0x4029b8
401a5e:	8b 75 e0             	mov    -0x20(%ebp),%esi
401a61:	53                   	push   %ebx
401a62:	e8 a3 10 00 00       	call   0x402b0a
401a67:	6a 01                	push   $0x1
401a69:	8b f8                	mov    %eax,%edi
401a6b:	89 55 f0             	mov    %edx,-0x10(%ebp)
401a6e:	e8 97 10 00 00       	call   0x402b0a
401a73:	59                   	pop    %ecx
401a74:	3b f3                	cmp    %ebx,%esi
401a76:	59                   	pop    %ecx
401a77:	89 55 f0             	mov    %edx,-0x10(%ebp)
401a7a:	75 08                	jne    0x401a84
401a7c:	3b f8                	cmp    %eax,%edi
401a7e:	7c 08                	jl     0x401a88
401a80:	7e 8c                	jle    0x401a0e
401a82:	eb 12                	jmp    0x401a96
401a84:	3b f8                	cmp    %eax,%edi
401a86:	73 08                	jae    0x401a90
401a88:	8b 45 d8             	mov    -0x28(%ebp),%eax
401a8b:	e9 33 0f 00 00       	jmp    0x4029c3
401a90:	0f 86 78 ff ff ff    	jbe    0x401a0e
401a96:	8b 45 dc             	mov    -0x24(%ebp),%eax
401a99:	e9 25 0f 00 00       	jmp    0x4029c3
401a9e:	6a 01                	push   $0x1
401aa0:	e8 65 10 00 00       	call   0x402b0a
401aa5:	8b f8                	mov    %eax,%edi
401aa7:	6a 02                	push   $0x2
401aa9:	89 55 f0             	mov    %edx,-0x10(%ebp)
401aac:	89 7d 08             	mov    %edi,0x8(%ebp)
401aaf:	e8 56 10 00 00       	call   0x402b0a
401ab4:	59                   	pop    %ecx
401ab5:	89 55 f0             	mov    %edx,-0x10(%ebp)
401ab8:	59                   	pop    %ecx
401ab9:	8b c8                	mov    %eax,%ecx
401abb:	8b 45 d8             	mov    -0x28(%ebp),%eax
401abe:	83 f8 0d             	cmp    $0xd,%eax
401ac1:	77 73                	ja     0x401b36
401ac3:	ff 24 85 d2 2a 40 00 	jmp    *0x402ad2(,%eax,4)
401aca:	03 f9                	add    %ecx,%edi
401acc:	eb 6b                	jmp    0x401b39
401ace:	2b f9                	sub    %ecx,%edi
401ad0:	eb 67                	jmp    0x401b39
401ad2:	0f af cf             	imul   %edi,%ecx
401ad5:	eb 17                	jmp    0x401aee
401ad7:	3b cb                	cmp    %ebx,%ecx
401ad9:	74 44                	je     0x401b1f
401adb:	8b c7                	mov    %edi,%eax
401add:	99                   	cltd
401ade:	f7 f9                	idiv   %ecx
401ae0:	8b f8                	mov    %eax,%edi
401ae2:	eb 55                	jmp    0x401b39
401ae4:	0b cf                	or     %edi,%ecx
401ae6:	eb 06                	jmp    0x401aee
401ae8:	23 cf                	and    %edi,%ecx
401aea:	eb 02                	jmp    0x401aee
401aec:	33 cf                	xor    %edi,%ecx
401aee:	8b f9                	mov    %ecx,%edi
401af0:	eb 47                	jmp    0x401b39
401af2:	33 c0                	xor    %eax,%eax
401af4:	3b fb                	cmp    %ebx,%edi
401af6:	0f 94 c0             	sete   %al
401af9:	eb e5                	jmp    0x401ae0
401afb:	3b fb                	cmp    %ebx,%edi
401afd:	75 0e                	jne    0x401b0d
401aff:	eb 08                	jmp    0x401b09
401b01:	33 ff                	xor    %edi,%edi
401b03:	eb 34                	jmp    0x401b39
401b05:	3b fb                	cmp    %ebx,%edi
401b07:	74 f8                	je     0x401b01
401b09:	3b cb                	cmp    %ebx,%ecx
401b0b:	74 f4                	je     0x401b01
401b0d:	33 ff                	xor    %edi,%edi
401b0f:	47                   	inc    %edi
401b10:	eb 27                	jmp    0x401b39
401b12:	3b cb                	cmp    %ebx,%ecx
401b14:	74 09                	je     0x401b1f
401b16:	8b c7                	mov    %edi,%eax
401b18:	99                   	cltd
401b19:	f7 f9                	idiv   %ecx
401b1b:	8b fa                	mov    %edx,%edi
401b1d:	eb 1a                	jmp    0x401b39
401b1f:	33 ff                	xor    %edi,%edi
401b21:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
401b28:	eb 0f                	jmp    0x401b39
401b2a:	d3 e7                	shl    %cl,%edi
401b2c:	eb 0b                	jmp    0x401b39
401b2e:	d3 ff                	sar    %cl,%edi
401b30:	eb 07                	jmp    0x401b39
401b32:	d3 ef                	shr    %cl,%edi
401b34:	eb 03                	jmp    0x401b39
401b36:	8b 7d 08             	mov    0x8(%ebp),%edi
401b39:	57                   	push   %edi
401b3a:	e9 2a fa ff ff       	jmp    0x401569
401b3f:	6a 01                	push   $0x1
401b41:	e8 e6 0f 00 00       	call   0x402b2c
401b46:	6a 02                	push   $0x2
401b48:	8b f8                	mov    %eax,%edi
401b4a:	e8 bb 0f 00 00       	call   0x402b0a
401b4f:	50                   	push   %eax
401b50:	57                   	push   %edi
401b51:	56                   	push   %esi
401b52:	89 55 f0             	mov    %edx,-0x10(%ebp)
401b55:	ff 15 74 82 40 00    	call   *0x408274
401b5b:	83 c4 10             	add    $0x10,%esp
401b5e:	e9 55 0e 00 00       	jmp    0x4029b8
401b63:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401b66:	8b 3d 70 b8 40 00    	mov    0x40b870,%edi
401b6c:	3b c3                	cmp    %ebx,%eax
401b6e:	74 44                	je     0x401bb4
401b70:	48                   	dec    %eax
401b71:	3b fb                	cmp    %ebx,%edi
401b73:	0f 84 c2 07 00 00    	je     0x40233b
401b79:	8b 3f                	mov    (%edi),%edi
401b7b:	3b c3                	cmp    %ebx,%eax
401b7d:	75 f1                	jne    0x401b70
401b7f:	3b fb                	cmp    %ebx,%edi
401b81:	0f 84 b4 07 00 00    	je     0x40233b
401b87:	83 c7 04             	add    $0x4,%edi
401b8a:	be 30 a4 40 00       	mov    $0x40a430,%esi
401b8f:	57                   	push   %edi
401b90:	56                   	push   %esi
401b91:	e8 d0 45 00 00       	call   0x406166
401b96:	a1 70 b8 40 00       	mov    0x40b870,%eax
401b9b:	83 c0 04             	add    $0x4,%eax
401b9e:	50                   	push   %eax
401b9f:	57                   	push   %edi
401ba0:	e8 c1 45 00 00       	call   0x406166
401ba5:	a1 70 b8 40 00       	mov    0x40b870,%eax
401baa:	56                   	push   %esi
401bab:	83 c0 04             	add    $0x4,%eax
401bae:	50                   	push   %eax
401baf:	e9 22 0d 00 00       	jmp    0x4028d6
401bb4:	3b d3                	cmp    %ebx,%edx
401bb6:	74 25                	je     0x401bdd
401bb8:	3b fb                	cmp    %ebx,%edi
401bba:	0f 84 c3 0b 00 00    	je     0x402783
401bc0:	8d 47 04             	lea    0x4(%edi),%eax
401bc3:	50                   	push   %eax
401bc4:	56                   	push   %esi
401bc5:	e8 9c 45 00 00       	call   0x406166
401bca:	8b 07                	mov    (%edi),%eax
401bcc:	57                   	push   %edi
401bcd:	a3 70 b8 40 00       	mov    %eax,0x40b870
401bd2:	ff 15 5c 81 40 00    	call   *0x40815c
401bd8:	e9 db 0d 00 00       	jmp    0x4029b8
401bdd:	68 04 04 00 00       	push   $0x404
401be2:	6a 40                	push   $0x40
401be4:	ff 15 58 81 40 00    	call   *0x408158
401bea:	ff 75 cc             	push   -0x34(%ebp)
401bed:	8b f0                	mov    %eax,%esi
401bef:	8d 46 04             	lea    0x4(%esi),%eax
401bf2:	50                   	push   %eax
401bf3:	e8 90 45 00 00       	call   0x406188
401bf8:	a1 70 b8 40 00       	mov    0x40b870,%eax
401bfd:	89 06                	mov    %eax,(%esi)
401bff:	89 35 70 b8 40 00    	mov    %esi,0x40b870
401c05:	e9 ae 0d 00 00       	jmp    0x4029b8
401c0a:	6a 03                	push   $0x3
401c0c:	e8 f9 0e 00 00       	call   0x402b0a
401c11:	6a 04                	push   $0x4
401c13:	89 55 f0             	mov    %edx,-0x10(%ebp)
401c16:	89 45 f8             	mov    %eax,-0x8(%ebp)
401c19:	e8 ec 0e 00 00       	call   0x402b0a
401c1e:	f6 45 e0 01          	testb  $0x1,-0x20(%ebp)
401c22:	59                   	pop    %ecx
401c23:	89 55 f0             	mov    %edx,-0x10(%ebp)
401c26:	59                   	pop    %ecx
401c27:	89 45 08             	mov    %eax,0x8(%ebp)
401c2a:	74 0a                	je     0x401c36
401c2c:	6a 33                	push   $0x33
401c2e:	e8 f9 0e 00 00       	call   0x402b2c
401c33:	89 45 f8             	mov    %eax,-0x8(%ebp)
401c36:	f6 45 e0 02          	testb  $0x2,-0x20(%ebp)
401c3a:	74 0a                	je     0x401c46
401c3c:	6a 44                	push   $0x44
401c3e:	e8 e9 0e 00 00       	call   0x402b2c
401c43:	89 45 08             	mov    %eax,0x8(%ebp)
401c46:	83 7d c8 21          	cmpl   $0x21,-0x38(%ebp)
401c4a:	6a 01                	push   $0x1
401c4c:	75 4c                	jne    0x401c9a
401c4e:	e8 b7 0e 00 00       	call   0x402b0a
401c53:	6a 02                	push   $0x2
401c55:	8b f8                	mov    %eax,%edi
401c57:	89 55 f0             	mov    %edx,-0x10(%ebp)
401c5a:	e8 ab 0e 00 00       	call   0x402b0a
401c5f:	59                   	pop    %ecx
401c60:	89 55 f0             	mov    %edx,-0x10(%ebp)
401c63:	59                   	pop    %ecx
401c64:	8b 4d e0             	mov    -0x20(%ebp),%ecx
401c67:	c1 f9 02             	sar    $0x2,%ecx
401c6a:	74 1e                	je     0x401c8a
401c6c:	8d 55 f4             	lea    -0xc(%ebp),%edx
401c6f:	52                   	push   %edx
401c70:	51                   	push   %ecx
401c71:	53                   	push   %ebx
401c72:	ff 75 08             	push   0x8(%ebp)
401c75:	ff 75 f8             	push   -0x8(%ebp)
401c78:	50                   	push   %eax
401c79:	57                   	push   %edi
401c7a:	ff 15 50 82 40 00    	call   *0x408250
401c80:	f7 d8                	neg    %eax
401c82:	1b c0                	sbb    %eax,%eax
401c84:	40                   	inc    %eax
401c85:	89 45 fc             	mov    %eax,-0x4(%ebp)
401c88:	eb 3f                	jmp    0x401cc9
401c8a:	ff 75 08             	push   0x8(%ebp)
401c8d:	ff 75 f8             	push   -0x8(%ebp)
401c90:	50                   	push   %eax
401c91:	57                   	push   %edi
401c92:	ff 15 00 82 40 00    	call   *0x408200
401c98:	eb 2c                	jmp    0x401cc6
401c9a:	e8 8d 0e 00 00       	call   0x402b2c
401c9f:	6a 12                	push   $0x12
401ca1:	8b f8                	mov    %eax,%edi
401ca3:	e8 84 0e 00 00       	call   0x402b2c
401ca8:	8a 08                	mov    (%eax),%cl
401caa:	f6 d9                	neg    %cl
401cac:	1b c9                	sbb    %ecx,%ecx
401cae:	23 c8                	and    %eax,%ecx
401cb0:	8a 07                	mov    (%edi),%al
401cb2:	f6 d8                	neg    %al
401cb4:	1b c0                	sbb    %eax,%eax
401cb6:	51                   	push   %ecx
401cb7:	23 c7                	and    %edi,%eax
401cb9:	50                   	push   %eax
401cba:	ff 75 08             	push   0x8(%ebp)
401cbd:	ff 75 f8             	push   -0x8(%ebp)
401cc0:	ff 15 54 82 40 00    	call   *0x408254
401cc6:	89 45 f4             	mov    %eax,-0xc(%ebp)
401cc9:	39 5d cc             	cmp    %ebx,-0x34(%ebp)
401ccc:	0f 8c e6 0c 00 00    	jl     0x4029b8
401cd2:	ff 75 f4             	push   -0xc(%ebp)
401cd5:	e9 8f f8 ff ff       	jmp    0x401569
401cda:	53                   	push   %ebx
401cdb:	e8 2a 0e 00 00       	call   0x402b0a
401ce0:	59                   	pop    %ecx
401ce1:	89 55 f0             	mov    %edx,-0x10(%ebp)
401ce4:	50                   	push   %eax
401ce5:	ff 15 58 82 40 00    	call   *0x408258
401ceb:	85 c0                	test   %eax,%eax
401ced:	0f 84 1b fd ff ff    	je     0x401a0e
401cf3:	8b 45 d0             	mov    -0x30(%ebp),%eax
401cf6:	e9 c8 0c 00 00       	jmp    0x4029c3
401cfb:	6a 02                	push   $0x2
401cfd:	e8 08 0e 00 00       	call   0x402b0a
401d02:	6a 01                	push   $0x1
401d04:	8b f8                	mov    %eax,%edi
401d06:	89 55 f0             	mov    %edx,-0x10(%ebp)
401d09:	e8 fc 0d 00 00       	call   0x402b0a
401d0e:	59                   	pop    %ecx
401d0f:	89 55 f0             	mov    %edx,-0x10(%ebp)
401d12:	59                   	pop    %ecx
401d13:	57                   	push   %edi
401d14:	50                   	push   %eax
401d15:	ff 15 d0 81 40 00    	call   *0x4081d0
401d1b:	e9 c4 08 00 00       	jmp    0x4025e4
401d20:	a1 88 f4 42 00       	mov    0x42f488,%eax
401d25:	53                   	push   %ebx
401d26:	8d 34 10             	lea    (%eax,%edx,1),%esi
401d29:	e8 dc 0d 00 00       	call   0x402b0a
401d2e:	59                   	pop    %ecx
401d2f:	89 55 f0             	mov    %edx,-0x10(%ebp)
401d32:	56                   	push   %esi
401d33:	6a eb                	push   $0xffffffeb
401d35:	50                   	push   %eax
401d36:	ff 15 4c 82 40 00    	call   *0x40824c
401d3c:	e9 77 0c 00 00       	jmp    0x4029b8
401d41:	f6 45 d5 01          	testb  $0x1,-0x2b(%ebp)
401d45:	74 0d                	je     0x401d54
401d47:	6a 01                	push   $0x1
401d49:	e8 bc 0d 00 00       	call   0x402b0a
401d4e:	59                   	pop    %ecx
401d4f:	89 55 f0             	mov    %edx,-0x10(%ebp)
401d52:	eb 0a                	jmp    0x401d5e
401d54:	52                   	push   %edx
401d55:	ff 75 f8             	push   -0x8(%ebp)
401d58:	ff 15 d0 81 40 00    	call   *0x4081d0
401d5e:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
401d61:	89 45 08             	mov    %eax,0x8(%ebp)
401d64:	8b c1                	mov    %ecx,%eax
401d66:	8b f9                	mov    %ecx,%edi
401d68:	c1 e8 1f             	shr    $0x1f,%eax
401d6b:	89 45 f8             	mov    %eax,-0x8(%ebp)
401d6e:	8b c1                	mov    %ecx,%eax
401d70:	8b f1                	mov    %ecx,%esi
401d72:	83 e7 03             	and    $0x3,%edi
401d75:	c1 e8 1e             	shr    $0x1e,%eax
401d78:	83 e6 04             	and    $0x4,%esi
401d7b:	83 e0 01             	and    $0x1,%eax
401d7e:	f7 c1 00 00 01 00    	test   $0x10000,%ecx
401d84:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401d87:	74 08                	je     0x401d91
401d89:	53                   	push   %ebx
401d8a:	e8 9d 0d 00 00       	call   0x402b2c
401d8f:	eb 04                	jmp    0x401d95
401d91:	0f b7 45 cc          	movzwl -0x34(%ebp),%eax
401d95:	89 45 f4             	mov    %eax,-0xc(%ebp)
401d98:	8d 45 a8             	lea    -0x58(%ebp),%eax
401d9b:	50                   	push   %eax
401d9c:	ff 75 08             	push   0x8(%ebp)
401d9f:	ff 15 0c 82 40 00    	call   *0x40820c
401da5:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401da8:	25 f0 fe 00 00       	and    $0xfef0,%eax
401dad:	50                   	push   %eax
401dae:	8b 45 b4             	mov    -0x4c(%ebp),%eax
401db1:	0f af 45 e4          	imul   -0x1c(%ebp),%eax
401db5:	50                   	push   %eax
401db6:	8b 45 b0             	mov    -0x50(%ebp),%eax
401db9:	0f af 45 f8          	imul   -0x8(%ebp),%eax
401dbd:	f7 de                	neg    %esi
401dbf:	50                   	push   %eax
401dc0:	57                   	push   %edi
401dc1:	ff 75 f4             	push   -0xc(%ebp)
401dc4:	1b f6                	sbb    %esi,%esi
401dc6:	23 35 20 f4 42 00    	and    0x42f420,%esi
401dcc:	56                   	push   %esi
401dcd:	ff 15 34 82 40 00    	call   *0x408234
401dd3:	50                   	push   %eax
401dd4:	57                   	push   %edi
401dd5:	68 72 01 00 00       	push   $0x172
401dda:	ff 75 08             	push   0x8(%ebp)
401ddd:	ff 15 00 82 40 00    	call   *0x408200
401de3:	3b c3                	cmp    %ebx,%eax
401de5:	0f 84 cd 0b 00 00    	je     0x4029b8
401deb:	3b fb                	cmp    %ebx,%edi
401ded:	0f 85 c5 0b 00 00    	jne    0x4029b8
401df3:	50                   	push   %eax
401df4:	ff 15 60 80 40 00    	call   *0x408060
401dfa:	e9 b9 0b 00 00       	jmp    0x4029b8
401dff:	ff 75 f8             	push   -0x8(%ebp)
401e02:	ff 15 f0 81 40 00    	call   *0x4081f0
401e08:	6a 02                	push   $0x2
401e0a:	8b f8                	mov    %eax,%edi
401e0c:	e8 f9 0c 00 00       	call   0x402b0a
401e11:	59                   	pop    %ecx