401d85:	cc                   	int3
401d86:	8b ff                	mov    %edi,%edi
401d88:	56                   	push   %esi
401d89:	8b f1                	mov    %ecx,%esi
401d8b:	85 f6                	test   %esi,%esi
401d8d:	74 17                	je     0x401da6
401d8f:	83 ee 04             	sub    $0x4,%esi
401d92:	83 3e 00             	cmpl   $0x0,(%esi)
401d95:	74 08                	je     0x401d9f
401d97:	ff 36                	push   (%esi)
401d99:	e8 4f 48 00 00       	call   0x4065ed
401d9e:	59                   	pop    %ecx
401d9f:	56                   	push   %esi
401da0:	e8 48 48 00 00       	call   0x4065ed
401da5:	59                   	pop    %ecx
401da6:	5e                   	pop    %esi
401da7:	c3                   	ret
401da8:	cc                   	int3
401da9:	cc                   	int3
401daa:	cc                   	int3
401dab:	cc                   	int3
401dac:	cc                   	int3
401dad:	cc                   	int3
401dae:	8b ff                	mov    %edi,%edi
401db0:	55                   	push   %ebp
401db1:	8b ec                	mov    %esp,%ebp
401db3:	83 ec 0c             	sub    $0xc,%esp
401db6:	53                   	push   %ebx
401db7:	56                   	push   %esi
401db8:	57                   	push   %edi
401db9:	68 04 20 00 00       	push   $0x2004
401dbe:	8b fa                	mov    %edx,%edi
401dc0:	8b d9                	mov    %ecx,%ebx
401dc2:	e8 f7 47 00 00       	call   0x4065be
401dc7:	8b f0                	mov    %eax,%esi
401dc9:	59                   	pop    %ecx
401dca:	85 f6                	test   %esi,%esi
401dcc:	0f 84 82 00 00 00    	je     0x401e54
401dd2:	8d 45 fc             	lea    -0x4(%ebp),%eax
401dd5:	50                   	push   %eax
401dd6:	68 00 20 00 00       	push   $0x2000
401ddb:	eb 47                	jmp    0x401e24
401ddd:	ff 15 38 80 40 00    	call   *0x408038
401de3:	83 f8 7a             	cmp    $0x7a,%eax
401de6:	75 65                	jne    0x401e4d
401de8:	83 7d f4 07          	cmpl   $0x7,-0xc(%ebp)
401dec:	75 5f                	jne    0x401e4d
401dee:	8b 45 fc             	mov    -0x4(%ebp),%eax
401df1:	56                   	push   %esi
401df2:	89 45 f8             	mov    %eax,-0x8(%ebp)
401df5:	e8 f3 47 00 00       	call   0x4065ed
401dfa:	8b 45 f8             	mov    -0x8(%ebp),%eax
401dfd:	33 c9                	xor    %ecx,%ecx
401dff:	6a 02                	push   $0x2
401e01:	d1 e8                	shr    $1,%eax
401e03:	5a                   	pop    %edx
401e04:	03 c2                	add    %edx,%eax
401e06:	f7 e2                	mul    %edx
401e08:	0f 90 c1             	seto   %cl
401e0b:	f7 d9                	neg    %ecx
401e0d:	0b c8                	or     %eax,%ecx
401e0f:	51                   	push   %ecx
401e10:	e8 a9 47 00 00       	call   0x4065be
401e15:	8b f0                	mov    %eax,%esi
401e17:	59                   	pop    %ecx
401e18:	59                   	pop    %ecx
401e19:	85 f6                	test   %esi,%esi
401e1b:	74 37                	je     0x401e54
401e1d:	8d 45 fc             	lea    -0x4(%ebp),%eax
401e20:	50                   	push   %eax
401e21:	ff 75 f8             	push   -0x8(%ebp)
401e24:	56                   	push   %esi
401e25:	8d 45 f4             	lea    -0xc(%ebp),%eax
401e28:	50                   	push   %eax
401e29:	ff 75 08             	push   0x8(%ebp)
401e2c:	57                   	push   %edi
401e2d:	53                   	push   %ebx
401e2e:	ff 15 18 81 40 00    	call   *0x408118
401e34:	85 c0                	test   %eax,%eax
401e36:	74 a5                	je     0x401ddd
401e38:	8b 45 fc             	mov    -0x4(%ebp),%eax
401e3b:	33 c9                	xor    %ecx,%ecx
401e3d:	d1 e8                	shr    $1,%eax
401e3f:	89 0c 46             	mov    %ecx,(%esi,%eax,2)
401e42:	8b ce                	mov    %esi,%ecx
401e44:	e8 bc fd ff ff       	call   0x401c05
401e49:	85 c0                	test   %eax,%eax
401e4b:	75 09                	jne    0x401e56
401e4d:	56                   	push   %esi
401e4e:	e8 9a 47 00 00       	call   0x4065ed
401e53:	59                   	pop    %ecx
401e54:	33 c0                	xor    %eax,%eax
401e56:	5f                   	pop    %edi
401e57:	5e                   	pop    %esi
401e58:	5b                   	pop    %ebx
401e59:	c9                   	leave
401e5a:	c2 04 00             	ret    $0x4
401e5d:	cc                   	int3
401e5e:	cc                   	int3
401e5f:	cc                   	int3
401e60:	cc                   	int3
401e61:	cc                   	int3
401e62:	cc                   	int3
401e63:	8b ff                	mov    %edi,%edi
401e65:	55                   	push   %ebp
401e66:	8b ec                	mov    %esp,%ebp
401e68:	83 ec 0c             	sub    $0xc,%esp
401e6b:	53                   	push   %ebx
401e6c:	56                   	push   %esi
401e6d:	57                   	push   %edi
401e6e:	8b f1                	mov    %ecx,%esi
401e70:	8b da                	mov    %edx,%ebx
401e72:	68 04 20 00 00       	push   $0x2004
401e77:	89 75 f4             	mov    %esi,-0xc(%ebp)
401e7a:	e8 3f 47 00 00       	call   0x4065be
401e7f:	8b f8                	mov    %eax,%edi
401e81:	59                   	pop    %ecx
401e82:	85 ff                	test   %edi,%edi
401e84:	0f 84 88 00 00 00    	je     0x401f12
401e8a:	8d 45 fc             	lea    -0x4(%ebp),%eax
401e8d:	c7 45 fc 00 20 00 00 	movl   $0x2000,-0x4(%ebp)
401e94:	50                   	push   %eax
401e95:	57                   	push   %edi
401e96:	8d 45 f8             	lea    -0x8(%ebp),%eax
401e99:	50                   	push   %eax
401e9a:	6a 00                	push   $0x0
401e9c:	53                   	push   %ebx
401e9d:	56                   	push   %esi
401e9e:	eb 4c                	jmp    0x401eec
401ea0:	ff 15 38 80 40 00    	call   *0x408038
401ea6:	3d ea 00 00 00       	cmp    $0xea,%eax
401eab:	75 5e                	jne    0x401f0b
401ead:	83 7d f8 07          	cmpl   $0x7,-0x8(%ebp)
401eb1:	75 58                	jne    0x401f0b
401eb3:	8b 75 fc             	mov    -0x4(%ebp),%esi
401eb6:	57                   	push   %edi
401eb7:	e8 31 47 00 00       	call   0x4065ed
401ebc:	6a 02                	push   $0x2
401ebe:	5a                   	pop    %edx
401ebf:	d1 ee                	shr    $1,%esi
401ec1:	33 c9                	xor    %ecx,%ecx
401ec3:	8d 04 32             	lea    (%edx,%esi,1),%eax
401ec6:	f7 e2                	mul    %edx
401ec8:	0f 90 c1             	seto   %cl
401ecb:	f7 d9                	neg    %ecx
401ecd:	0b c8                	or     %eax,%ecx
401ecf:	51                   	push   %ecx
401ed0:	e8 e9 46 00 00       	call   0x4065be
401ed5:	8b f8                	mov    %eax,%edi
401ed7:	59                   	pop    %ecx
401ed8:	59                   	pop    %ecx
401ed9:	85 ff                	test   %edi,%edi
401edb:	74 35                	je     0x401f12
401edd:	8d 45 fc             	lea    -0x4(%ebp),%eax
401ee0:	50                   	push   %eax
401ee1:	57                   	push   %edi
401ee2:	8d 45 f8             	lea    -0x8(%ebp),%eax
401ee5:	50                   	push   %eax
401ee6:	6a 00                	push   $0x0
401ee8:	53                   	push   %ebx
401ee9:	ff 75 f4             	push   -0xc(%ebp)
401eec:	ff 15 00 80 40 00    	call   *0x408000
401ef2:	85 c0                	test   %eax,%eax
401ef4:	75 aa                	jne    0x401ea0
401ef6:	8b 45 fc             	mov    -0x4(%ebp),%eax
401ef9:	33 c9                	xor    %ecx,%ecx
401efb:	d1 e8                	shr    $1,%eax
401efd:	89 0c 47             	mov    %ecx,(%edi,%eax,2)
401f00:	8b cf                	mov    %edi,%ecx
401f02:	e8 fe fc ff ff       	call   0x401c05
401f07:	85 c0                	test   %eax,%eax
401f09:	75 09                	jne    0x401f14
401f0b:	57                   	push   %edi
401f0c:	e8 dc 46 00 00       	call   0x4065ed
401f11:	59                   	pop    %ecx
401f12:	33 c0                	xor    %eax,%eax
401f14:	5f                   	pop    %edi
401f15:	5e                   	pop    %esi
401f16:	5b                   	pop    %ebx
401f17:	c9                   	leave
401f18:	c3                   	ret
401f19:	cc                   	int3
401f1a:	cc                   	int3
401f1b:	cc                   	int3
401f1c:	cc                   	int3
401f1d:	cc                   	int3
401f1e:	cc                   	int3
401f1f:	8b ff                	mov    %edi,%edi
401f21:	55                   	push   %ebp
401f22:	8b ec                	mov    %esp,%ebp
401f24:	51                   	push   %ecx
401f25:	51                   	push   %ecx
401f26:	53                   	push   %ebx
401f27:	57                   	push   %edi
401f28:	8b fa                	mov    %edx,%edi
401f2a:	8b d9                	mov    %ecx,%ebx
401f2c:	8b 47 04             	mov    0x4(%edi),%eax
401f2f:	8b 17                	mov    (%edi),%edx
401f31:	85 c0                	test   %eax,%eax
401f33:	75 14                	jne    0x401f49
401f35:	52                   	push   %edx
401f36:	53                   	push   %ebx
401f37:	ff 15 dc 81 40 00    	call   *0x4081dc
401f3d:	f7 d8                	neg    %eax
401f3f:	59                   	pop    %ecx
401f40:	1b c0                	sbb    %eax,%eax
401f42:	59                   	pop    %ecx
401f43:	40                   	inc    %eax
401f44:	e9 58 01 00 00       	jmp    0x4020a1
401f49:	2b c2                	sub    %edx,%eax
401f4b:	56                   	push   %esi
401f4c:	d1 f8                	sar    $1,%eax
401f4e:	50                   	push   %eax
401f4f:	52                   	push   %edx
401f50:	53                   	push   %ebx
401f51:	ff 15 c8 81 40 00    	call   *0x4081c8
401f57:	83 c4 0c             	add    $0xc,%esp
401f5a:	85 c0                	test   %eax,%eax
401f5c:	0f 85 3c 01 00 00    	jne    0x40209e
401f62:	8b 77 04             	mov    0x4(%edi),%esi
401f65:	8b c6                	mov    %esi,%eax
401f67:	2b 07                	sub    (%edi),%eax
401f69:	d1 f8                	sar    $1,%eax
401f6b:	8d 3c 43             	lea    (%ebx,%eax,2),%edi
401f6e:	0f b7 06             	movzwl (%esi),%eax
401f71:	66 85 c0             	test   %ax,%ax
401f74:	0f 84 d7 00 00 00    	je     0x402051
401f7a:	6a 2a                	push   $0x2a
401f7c:	8b c8                	mov    %eax,%ecx
401f7e:	58                   	pop    %eax
401f7f:	66 3b c8             	cmp    %ax,%cx
401f82:	75 0e                	jne    0x401f92
401f84:	56                   	push   %esi
401f85:	ff 15 5c 81 40 00    	call   *0x40815c
401f8b:	8b f0                	mov    %eax,%esi
401f8d:	e9 ae 00 00 00       	jmp    0x402040
401f92:	50                   	push   %eax
401f93:	56                   	push   %esi
401f94:	ff 15 d0 81 40 00    	call   *0x4081d0
401f9a:	8b d8                	mov    %eax,%ebx
401f9c:	59                   	pop    %ecx
401f9d:	59                   	pop    %ecx
401f9e:	85 db                	test   %ebx,%ebx
401fa0:	0f 84 b0 00 00 00    	je     0x402056
401fa6:	0f b7 0e             	movzwl (%esi),%ecx
401fa9:	2b de                	sub    %esi,%ebx
401fab:	51                   	push   %ecx
401fac:	d1 fb                	sar    $1,%ebx
401fae:	ff 15 d4 81 40 00    	call   *0x4081d4
401fb4:	59                   	pop    %ecx
401fb5:	0f b7 0e             	movzwl (%esi),%ecx
401fb8:	51                   	push   %ecx
401fb9:	85 c0                	test   %eax,%eax
401fbb:	74 53                	je     0x402010
401fbd:	ff 15 c0 81 40 00    	call   *0x4081c0
401fc3:	0f b7 c0             	movzwl %ax,%eax
401fc6:	89 45 fc             	mov    %eax,-0x4(%ebp)
401fc9:	0f b7 06             	movzwl (%esi),%eax
401fcc:	50                   	push   %eax
401fcd:	ff 15 ac 81 40 00    	call   *0x4081ac
401fd3:	59                   	pop    %ecx
401fd4:	59                   	pop    %ecx
401fd5:	0f b7 c8             	movzwl %ax,%ecx
401fd8:	0f b7 07             	movzwl (%edi),%eax
401fdb:	89 4d f8             	mov    %ecx,-0x8(%ebp)
401fde:	8b d0                	mov    %eax,%edx
401fe0:	66 85 c0             	test   %ax,%ax
401fe3:	74 26                	je     0x40200b
401fe5:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
401fe9:	74 34                	je     0x40201f
401feb:	0f b7 d0             	movzwl %ax,%edx
401fee:	66 3b c1             	cmp    %cx,%ax
401ff1:	74 18                	je     0x40200b
401ff3:	57                   	push   %edi
401ff4:	ff 15 5c 81 40 00    	call   *0x40815c
401ffa:	8b f8                	mov    %eax,%edi
401ffc:	0f b7 0f             	movzwl (%edi),%ecx
401fff:	8b c1                	mov    %ecx,%eax
402001:	8b d1                	mov    %ecx,%edx
402003:	66 85 c9             	test   %cx,%cx
402006:	8b 4d f8             	mov    -0x8(%ebp),%ecx
402009:	75 da                	jne    0x401fe5
40200b:	66 85 d2             	test   %dx,%dx
40200e:	eb 0d                	jmp    0x40201d
402010:	57                   	push   %edi
402011:	ff 15 d0 81 40 00    	call   *0x4081d0
402017:	59                   	pop    %ecx
402018:	8b f8                	mov    %eax,%edi
40201a:	59                   	pop    %ecx
40201b:	85 ff                	test   %edi,%edi
40201d:	74 7f                	je     0x40209e
40201f:	53                   	push   %ebx
402020:	56                   	push   %esi
402021:	57                   	push   %edi
402022:	ff 15 c8 81 40 00    	call   *0x4081c8
402028:	83 c4 0c             	add    $0xc,%esp
40202b:	85 c0                	test   %eax,%eax
40202d:	74 0b                	je     0x40203a
40202f:	57                   	push   %edi
402030:	ff 15 5c 81 40 00    	call   *0x40815c
402036:	8b f8                	mov    %eax,%edi
402038:	eb 06                	jmp    0x402040
40203a:	8d 3c 5f             	lea    (%edi,%ebx,2),%edi
40203d:	8d 34 5e             	lea    (%esi,%ebx,2),%esi
402040:	0f b7 06             	movzwl (%esi),%eax
402043:	6a 2a                	push   $0x2a
402045:	8b c8                	mov    %eax,%ecx
402047:	66 85 c0             	test   %ax,%ax
40204a:	58                   	pop    %eax
40204b:	0f 85 2e ff ff ff    	jne    0x401f7f
402051:	33 c0                	xor    %eax,%eax
402053:	40                   	inc    %eax
402054:	eb 4a                	jmp    0x4020a0
402056:	8b cf                	mov    %edi,%ecx
402058:	33 db                	xor    %ebx,%ebx
40205a:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40205d:	8d 51 02             	lea    0x2(%ecx),%edx
402060:	66 8b 01             	mov    (%ecx),%ax
402063:	83 c1 02             	add    $0x2,%ecx
402066:	66 3b c3             	cmp    %bx,%ax
402069:	75 f5                	jne    0x402060
40206b:	2b ca                	sub    %edx,%ecx
40206d:	8b d6                	mov    %esi,%edx
40206f:	d1 f9                	sar    $1,%ecx
402071:	8d 5a 02             	lea    0x2(%edx),%ebx
402074:	66 8b 02             	mov    (%edx),%ax
402077:	83 c2 02             	add    $0x2,%edx
40207a:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40207e:	75 f4                	jne    0x402074
402080:	2b d3                	sub    %ebx,%edx
402082:	d1 fa                	sar    $1,%edx
402084:	3b ca                	cmp    %edx,%ecx
402086:	72 16                	jb     0x40209e
402088:	2b ca                	sub    %edx,%ecx
40208a:	56                   	push   %esi
40208b:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
40208e:	50                   	push   %eax
40208f:	ff 15 dc 81 40 00    	call   *0x4081dc
402095:	f7 d8                	neg    %eax
402097:	59                   	pop    %ecx
402098:	1b c0                	sbb    %eax,%eax
40209a:	59                   	pop    %ecx
40209b:	40                   	inc    %eax
40209c:	eb 02                	jmp    0x4020a0
40209e:	33 c0                	xor    %eax,%eax
4020a0:	5e                   	pop    %esi
4020a1:	5f                   	pop    %edi
4020a2:	5b                   	pop    %ebx
4020a3:	c9                   	leave
4020a4:	c3                   	ret