40dbf8:	eb 33                	jmp    0x40dc2d
40dbfa:	ff 75 20             	push   0x20(%ebp)
40dbfd:	ff 75 18             	push   0x18(%ebp)
40dc00:	ff 75 14             	push   0x14(%ebp)
40dc03:	ff 75 10             	push   0x10(%ebp)
40dc06:	57                   	push   %edi
40dc07:	ff 75 08             	push   0x8(%ebp)
40dc0a:	e8 f6 fa ff ff       	call   0x40d705
40dc0f:	83 c4 20             	add    $0x20,%esp
40dc12:	eb 1c                	jmp    0x40dc30
40dc14:	50                   	push   %eax
40dc15:	ff 75 fc             	push   -0x4(%ebp)
40dc18:	ff 75 20             	push   0x20(%ebp)
40dc1b:	ff 75 18             	push   0x18(%ebp)
40dc1e:	ff 75 14             	push   0x14(%ebp)
40dc21:	ff 75 10             	push   0x10(%ebp)
40dc24:	57                   	push   %edi
40dc25:	ff 75 08             	push   0x8(%ebp)
40dc28:	e8 e1 f8 ff ff       	call   0x40d50e
40dc2d:	83 c4 28             	add    $0x28,%esp
40dc30:	5f                   	pop    %edi
40dc31:	5e                   	pop    %esi
40dc32:	5b                   	pop    %ebx
40dc33:	c9                   	leave
40dc34:	c3                   	ret
40dc35:	8b ff                	mov    %edi,%edi
40dc37:	55                   	push   %ebp
40dc38:	8b ec                	mov    %esp,%ebp
40dc3a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40dc3d:	83 ec 0c             	sub    $0xc,%esp
40dc40:	8b 45 10             	mov    0x10(%ebp),%eax
40dc43:	53                   	push   %ebx
40dc44:	56                   	push   %esi
40dc45:	57                   	push   %edi
40dc46:	85 c9                	test   %ecx,%ecx
40dc48:	75 17                	jne    0x40dc61
40dc4a:	85 c0                	test   %eax,%eax
40dc4c:	74 13                	je     0x40dc61
40dc4e:	8b 45 08             	mov    0x8(%ebp),%eax
40dc51:	85 c0                	test   %eax,%eax
40dc53:	0f 84 ff 00 00 00    	je     0x40dd58
40dc59:	83 20 00             	andl   $0x0,(%eax)
40dc5c:	e9 f7 00 00 00       	jmp    0x40dd58
40dc61:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dc64:	85 db                	test   %ebx,%ebx
40dc66:	74 03                	je     0x40dc6b
40dc68:	83 0b ff             	orl    $0xffffffff,(%ebx)
40dc6b:	8b 75 18             	mov    0x18(%ebp),%esi
40dc6e:	33 ff                	xor    %edi,%edi
40dc70:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40dc75:	76 07                	jbe    0x40dc7e
40dc77:	6a 16                	push   $0x16
40dc79:	e9 04 01 00 00       	jmp    0x40dd82
40dc7e:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40dc82:	75 0d                	jne    0x40dc91
40dc84:	8b ce                	mov    %esi,%ecx
40dc86:	e8 15 b2 ff ff       	call   0x408ea0
40dc8b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40dc8e:	8b 45 10             	mov    0x10(%ebp),%eax
40dc91:	8b 56 0c             	mov    0xc(%esi),%edx
40dc94:	8b 5a 08             	mov    0x8(%edx),%ebx
40dc97:	81 fb e9 fd 00 00    	cmp    $0xfde9,%ebx
40dc9d:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40dca0:	8b 5d 08             	mov    0x8(%ebp),%ebx
40dca3:	75 37                	jne    0x40dcdc
40dca5:	56                   	push   %esi
40dca6:	8d 45 f4             	lea    -0xc(%ebp),%eax
40dca9:	33 ff                	xor    %edi,%edi
40dcab:	50                   	push   %eax
40dcac:	0f b7 45 14          	movzwl 0x14(%ebp),%eax
40dcb0:	50                   	push   %eax
40dcb1:	51                   	push   %ecx
40dcb2:	89 7d f4             	mov    %edi,-0xc(%ebp)
40dcb5:	89 7d f8             	mov    %edi,-0x8(%ebp)
40dcb8:	e8 73 69 00 00       	call   0x414630
40dcbd:	83 c4 10             	add    $0x10,%esp
40dcc0:	85 db                	test   %ebx,%ebx
40dcc2:	74 02                	je     0x40dcc6
40dcc4:	89 03                	mov    %eax,(%ebx)
40dcc6:	83 f8 04             	cmp    $0x4,%eax
40dcc9:	0f 8e 89 00 00 00    	jle    0x40dd58
40dccf:	80 7e 1c 00          	cmpb   $0x0,0x1c(%esi)
40dcd3:	74 03                	je     0x40dcd8
40dcd5:	8b 7e 18             	mov    0x18(%esi),%edi
40dcd8:	8b c7                	mov    %edi,%eax
40dcda:	eb 36                	jmp    0x40dd12
40dcdc:	39 ba a8 00 00 00    	cmp    %edi,0xa8(%edx)
40dce2:	75 49                	jne    0x40dd2d
40dce4:	66 8b 55 14          	mov    0x14(%ebp),%dx
40dce8:	c7 45 fc ff 00 00 00 	movl   $0xff,-0x4(%ebp)
40dcef:	66 3b 55 fc          	cmp    -0x4(%ebp),%dx
40dcf3:	76 22                	jbe    0x40dd17
40dcf5:	85 c9                	test   %ecx,%ecx
40dcf7:	74 0f                	je     0x40dd08
40dcf9:	85 c0                	test   %eax,%eax
40dcfb:	74 0b                	je     0x40dd08
40dcfd:	50                   	push   %eax
40dcfe:	57                   	push   %edi
40dcff:	51                   	push   %ecx
40dd00:	e8 6b 6d ff ff       	call   0x404a70
40dd05:	83 c4 0c             	add    $0xc,%esp
40dd08:	6a 2a                	push   $0x2a
40dd0a:	58                   	pop    %eax
40dd0b:	89 46 18             	mov    %eax,0x18(%esi)
40dd0e:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
40dd12:	5f                   	pop    %edi
40dd13:	5e                   	pop    %esi
40dd14:	5b                   	pop    %ebx
40dd15:	c9                   	leave
40dd16:	c3                   	ret
40dd17:	85 c9                	test   %ecx,%ecx
40dd19:	74 06                	je     0x40dd21
40dd1b:	85 c0                	test   %eax,%eax
40dd1d:	74 61                	je     0x40dd80
40dd1f:	88 11                	mov    %dl,(%ecx)
40dd21:	85 db                	test   %ebx,%ebx
40dd23:	74 33                	je     0x40dd58
40dd25:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
40dd2b:	eb 2b                	jmp    0x40dd58
40dd2d:	8d 55 fc             	lea    -0x4(%ebp),%edx
40dd30:	89 7d fc             	mov    %edi,-0x4(%ebp)
40dd33:	52                   	push   %edx
40dd34:	57                   	push   %edi
40dd35:	50                   	push   %eax
40dd36:	51                   	push   %ecx
40dd37:	6a 01                	push   $0x1
40dd39:	8d 45 14             	lea    0x14(%ebp),%eax
40dd3c:	50                   	push   %eax
40dd3d:	57                   	push   %edi
40dd3e:	ff 75 f8             	push   -0x8(%ebp)
40dd41:	e8 e8 12 00 00       	call   0x40f02e
40dd46:	83 c4 20             	add    $0x20,%esp
40dd49:	85 c0                	test   %eax,%eax
40dd4b:	74 0f                	je     0x40dd5c
40dd4d:	39 7d fc             	cmp    %edi,-0x4(%ebp)
40dd50:	75 b6                	jne    0x40dd08
40dd52:	85 db                	test   %ebx,%ebx
40dd54:	74 02                	je     0x40dd58
40dd56:	89 03                	mov    %eax,(%ebx)
40dd58:	33 c0                	xor    %eax,%eax
40dd5a:	eb b6                	jmp    0x40dd12
40dd5c:	ff 15 28 90 41 00    	call   *0x419028
40dd62:	83 f8 7a             	cmp    $0x7a,%eax
40dd65:	75 a1                	jne    0x40dd08
40dd67:	8b 45 0c             	mov    0xc(%ebp),%eax
40dd6a:	85 c0                	test   %eax,%eax
40dd6c:	74 12                	je     0x40dd80
40dd6e:	39 7d 10             	cmp    %edi,0x10(%ebp)
40dd71:	76 0d                	jbe    0x40dd80
40dd73:	ff 75 10             	push   0x10(%ebp)
40dd76:	57                   	push   %edi
40dd77:	50                   	push   %eax
40dd78:	e8 f3 6c ff ff       	call   0x404a70
40dd7d:	83 c4 0c             	add    $0xc,%esp
40dd80:	6a 22                	push   $0x22
40dd82:	5b                   	pop    %ebx
40dd83:	56                   	push   %esi
40dd84:	57                   	push   %edi
40dd85:	57                   	push   %edi
40dd86:	57                   	push   %edi
40dd87:	57                   	push   %edi
40dd88:	89 5e 18             	mov    %ebx,0x18(%esi)
40dd8b:	57                   	push   %edi
40dd8c:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
40dd90:	e8 b7 96 ff ff       	call   0x40744c
40dd95:	83 c4 18             	add    $0x18,%esp
40dd98:	8b c3                	mov    %ebx,%eax
40dd9a:	e9 73 ff ff ff       	jmp    0x40dd12
40dd9f:	8b ff                	mov    %edi,%edi
40dda1:	55                   	push   %ebp
40dda2:	8b ec                	mov    %esp,%ebp
40dda4:	51                   	push   %ecx
40dda5:	53                   	push   %ebx
40dda6:	56                   	push   %esi
40dda7:	57                   	push   %edi
40dda8:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ddab:	85 ff                	test   %edi,%edi
40ddad:	0f 84 0a 01 00 00    	je     0x40debd
40ddb3:	8b 5d 10             	mov    0x10(%ebp),%ebx
40ddb6:	85 db                	test   %ebx,%ebx
40ddb8:	0f 84 ff 00 00 00    	je     0x40debd
40ddbe:	80 3f 00             	cmpb   $0x0,(%edi)
40ddc1:	75 15                	jne    0x40ddd8
40ddc3:	8b 45 08             	mov    0x8(%ebp),%eax
40ddc6:	85 c0                	test   %eax,%eax
40ddc8:	0f 84 fd 00 00 00    	je     0x40decb
40ddce:	33 c9                	xor    %ecx,%ecx
40ddd0:	66 89 08             	mov    %cx,(%eax)
40ddd3:	e9 f3 00 00 00       	jmp    0x40decb
40ddd8:	8b 75 14             	mov    0x14(%ebp),%esi
40dddb:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40dddf:	75 07                	jne    0x40dde8
40dde1:	8b ce                	mov    %esi,%ecx
40dde3:	e8 b8 b0 ff ff       	call   0x408ea0
40dde8:	8b 46 0c             	mov    0xc(%esi),%eax
40ddeb:	8b 48 08             	mov    0x8(%eax),%ecx
40ddee:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ddf1:	81 f9 e9 fd 00 00    	cmp    $0xfde9,%ecx
40ddf7:	75 23                	jne    0x40de1c
40ddf9:	56                   	push   %esi
40ddfa:	68 b8 23 42 00       	push   $0x4223b8
40ddff:	53                   	push   %ebx
40de00:	57                   	push   %edi
40de01:	ff 75 08             	push   0x8(%ebp)
40de04:	e8 c0 30 00 00       	call   0x410ec9
40de09:	83 c4 14             	add    $0x14,%esp
40de0c:	85 c0                	test   %eax,%eax
40de0e:	0f 89 b9 00 00 00    	jns    0x40decd
40de14:	83 c8 ff             	or     $0xffffffff,%eax
40de17:	e9 b1 00 00 00       	jmp    0x40decd
40de1c:	33 d2                	xor    %edx,%edx
40de1e:	39 90 a8 00 00 00    	cmp    %edx,0xa8(%eax)
40de24:	75 13                	jne    0x40de39
40de26:	8b 4d 08             	mov    0x8(%ebp),%ecx
40de29:	85 c9                	test   %ecx,%ecx
40de2b:	0f 84 87 00 00 00    	je     0x40deb8
40de31:	0f b6 07             	movzbl (%edi),%eax
40de34:	66 89 01             	mov    %ax,(%ecx)
40de37:	eb 7f                	jmp    0x40deb8
40de39:	0f b6 0f             	movzbl (%edi),%ecx
40de3c:	8b 00                	mov    (%eax),%eax
40de3e:	66 39 14 48          	cmp    %dx,(%eax,%ecx,2)
40de42:	7d 54                	jge    0x40de98
40de44:	8b 46 0c             	mov    0xc(%esi),%eax
40de47:	8b 48 04             	mov    0x4(%eax),%ecx
40de4a:	83 f9 01             	cmp    $0x1,%ecx
40de4d:	7e 23                	jle    0x40de72
40de4f:	3b d9                	cmp    %ecx,%ebx
40de51:	7c 1f                	jl     0x40de72
40de53:	33 c0                	xor    %eax,%eax
40de55:	39 45 08             	cmp    %eax,0x8(%ebp)
40de58:	0f 95 c0             	setne  %al
40de5b:	50                   	push   %eax
40de5c:	ff 75 08             	push   0x8(%ebp)
40de5f:	51                   	push   %ecx
40de60:	57                   	push   %edi
40de61:	6a 09                	push   $0x9
40de63:	ff 75 fc             	push   -0x4(%ebp)
40de66:	e8 09 11 00 00       	call   0x40ef74
40de6b:	83 c4 18             	add    $0x18,%esp
40de6e:	85 c0                	test   %eax,%eax
40de70:	75 0e                	jne    0x40de80
40de72:	8b 46 0c             	mov    0xc(%esi),%eax
40de75:	3b 58 04             	cmp    0x4(%eax),%ebx
40de78:	72 0e                	jb     0x40de88
40de7a:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
40de7e:	74 08                	je     0x40de88
40de80:	8b 46 0c             	mov    0xc(%esi),%eax
40de83:	8b 40 04             	mov    0x4(%eax),%eax
40de86:	eb 45                	jmp    0x40decd
40de88:	c6 46 1c 01          	movb   $0x1,0x1c(%esi)
40de8c:	c7 46 18 2a 00 00 00 	movl   $0x2a,0x18(%esi)
40de93:	e9 7c ff ff ff       	jmp    0x40de14
40de98:	33 c0                	xor    %eax,%eax
40de9a:	39 45 08             	cmp    %eax,0x8(%ebp)
40de9d:	0f 95 c0             	setne  %al
40dea0:	50                   	push   %eax
40dea1:	ff 75 08             	push   0x8(%ebp)
40dea4:	6a 01                	push   $0x1
40dea6:	57                   	push   %edi
40dea7:	6a 09                	push   $0x9
40dea9:	ff 75 fc             	push   -0x4(%ebp)
40deac:	e8 c3 10 00 00       	call   0x40ef74
40deb1:	83 c4 18             	add    $0x18,%esp
40deb4:	85 c0                	test   %eax,%eax
40deb6:	74 d0                	je     0x40de88
40deb8:	33 c0                	xor    %eax,%eax
40deba:	40                   	inc    %eax
40debb:	eb 10                	jmp    0x40decd
40debd:	33 d2                	xor    %edx,%edx
40debf:	89 15 b8 23 42 00    	mov    %edx,0x4223b8
40dec5:	89 15 bc 23 42 00    	mov    %edx,0x4223bc
40decb:	33 c0                	xor    %eax,%eax
40decd:	5f                   	pop    %edi
40dece:	5e                   	pop    %esi
40decf:	5b                   	pop    %ebx
40ded0:	c9                   	leave
40ded1:	c3                   	ret
40ded2:	8b ff                	mov    %edi,%edi
40ded4:	55                   	push   %ebp
40ded5:	8b ec                	mov    %esp,%ebp
40ded7:	83 ec 28             	sub    $0x28,%esp
40deda:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40dedd:	56                   	push   %esi
40dede:	6a 00                	push   $0x0
40dee0:	e8 85 88 ff ff       	call   0x40676a
40dee5:	8d 45 d8             	lea    -0x28(%ebp),%eax
40dee8:	50                   	push   %eax
40dee9:	ff 75 10             	push   0x10(%ebp)
40deec:	ff 75 0c             	push   0xc(%ebp)
40deef:	ff 75 08             	push   0x8(%ebp)
40def2:	e8 a8 fe ff ff       	call   0x40dd9f
40def7:	83 c4 10             	add    $0x10,%esp
40defa:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40defd:	8b f0                	mov    %eax,%esi
40deff:	e8 ae 88 ff ff       	call   0x4067b2
40df04:	8b c6                	mov    %esi,%eax
40df06:	5e                   	pop    %esi
40df07:	c9                   	leave
40df08:	c3                   	ret
40df09:	8b 0d c0 10 42 00    	mov    0x4210c0,%ecx
40df0f:	33 c0                	xor    %eax,%eax
40df11:	83 c9 01             	or     $0x1,%ecx
40df14:	39 0d c0 23 42 00    	cmp    %ecx,0x4223c0
40df1a:	0f 94 c0             	sete   %al
40df1d:	c3                   	ret
40df1e:	8b ff                	mov    %edi,%edi
40df20:	55                   	push   %ebp
40df21:	8b ec                	mov    %esp,%ebp
40df23:	8b 55 0c             	mov    0xc(%ebp),%edx
40df26:	83 6a 08 01          	subl   $0x1,0x8(%edx)
40df2a:	79 11                	jns    0x40df3d
40df2c:	ff 75 10             	push   0x10(%ebp)
40df2f:	52                   	push   %edx
40df30:	ff 75 08             	push   0x8(%ebp)
40df33:	e8 05 e0 ff ff       	call   0x40bf3d
40df38:	83 c4 0c             	add    $0xc,%esp
40df3b:	5d                   	pop    %ebp
40df3c:	c3                   	ret
40df3d:	8b 02                	mov    (%edx),%eax
40df3f:	8a 4d 08             	mov    0x8(%ebp),%cl
40df42:	88 08                	mov    %cl,(%eax)
40df44:	ff 02                	incl   (%edx)
40df46:	0f b6 c1             	movzbl %cl,%eax
40df49:	5d                   	pop    %ebp
40df4a:	c3                   	ret
40df4b:	8b ff                	mov    %edi,%edi
40df4d:	56                   	push   %esi
40df4e:	57                   	push   %edi
40df4f:	bf c8 23 42 00       	mov    $0x4223c8,%edi
40df54:	33 f6                	xor    %esi,%esi
40df56:	6a 00                	push   $0x0
40df58:	68 a0 0f 00 00       	push   $0xfa0
40df5d:	57                   	push   %edi
40df5e:	e8 b0 cb ff ff       	call   0x40ab13
40df63:	85 c0                	test   %eax,%eax
40df65:	74 18                	je     0x40df7f
40df67:	ff 05 18 25 42 00    	incl   0x422518
40df6d:	83 c6 18             	add    $0x18,%esi
40df70:	83 c7 18             	add    $0x18,%edi
40df73:	81 fe 50 01 00 00    	cmp    $0x150,%esi
40df79:	72 db                	jb     0x40df56
40df7b:	b0 01                	mov    $0x1,%al
40df7d:	eb 0a                	jmp    0x40df89
40df7f:	6a 00                	push   $0x0
40df81:	e8 1d 00 00 00       	call   0x40dfa3
40df86:	59                   	pop    %ecx
40df87:	32 c0                	xor    %al,%al
40df89:	5f                   	pop    %edi
40df8a:	5e                   	pop    %esi