401c81:	e8 73 41 00 00       	call   0x405df9
401c86:	8b f9                	mov    %ecx,%edi
401c88:	89 7d f0             	mov    %edi,-0x10(%ebp)
401c8b:	8b 75 08             	mov    0x8(%ebp),%esi
401c8e:	89 37                	mov    %esi,(%edi)
401c90:	8b 06                	mov    (%esi),%eax
401c92:	8b 40 04             	mov    0x4(%eax),%eax
401c95:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
401c99:	85 c9                	test   %ecx,%ecx
401c9b:	74 05                	je     0x401ca2
401c9d:	8b 01                	mov    (%ecx),%eax
401c9f:	ff 50 04             	call   *0x4(%eax)
401ca2:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401ca6:	8b 06                	mov    (%esi),%eax
401ca8:	8b 48 04             	mov    0x4(%eax),%ecx
401cab:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
401cb0:	75 0d                	jne    0x401cbf
401cb2:	8b 4c 31 3c          	mov    0x3c(%ecx,%esi,1),%ecx
401cb6:	85 c9                	test   %ecx,%ecx
401cb8:	74 05                	je     0x401cbf
401cba:	e8 e1 fe ff ff       	call   0x401ba0
401cbf:	8b 06                	mov    (%esi),%eax
401cc1:	8b 40 04             	mov    0x4(%eax),%eax
401cc4:	83 7c 30 0c 00       	cmpl   $0x0,0xc(%eax,%esi,1)
401cc9:	0f 94 c0             	sete   %al
401ccc:	88 47 04             	mov    %al,0x4(%edi)
401ccf:	8b c7                	mov    %edi,%eax
401cd1:	e8 00 41 00 00       	call   0x405dd6
401cd6:	c2 04 00             	ret    $0x4
401cd9:	56                   	push   %esi
401cda:	8b f1                	mov    %ecx,%esi
401cdc:	e8 a6 22 00 00       	call   0x403f87
401ce1:	84 c0                	test   %al,%al
401ce3:	75 07                	jne    0x401cec
401ce5:	8b 0e                	mov    (%esi),%ecx
401ce7:	e8 17 00 00 00       	call   0x401d03
401cec:	8b 0e                	mov    (%esi),%ecx
401cee:	8b 01                	mov    (%ecx),%eax
401cf0:	8b 40 04             	mov    0x4(%eax),%eax
401cf3:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
401cf7:	85 c9                	test   %ecx,%ecx
401cf9:	74 06                	je     0x401d01
401cfb:	8b 01                	mov    (%ecx),%eax
401cfd:	5e                   	pop    %esi
401cfe:	ff 60 08             	jmp    *0x8(%eax)
401d01:	5e                   	pop    %esi
401d02:	c3                   	ret
401d03:	6a 04                	push   $0x4
401d05:	b8 fe 7c 41 00       	mov    $0x417cfe,%eax
401d0a:	e8 53 41 00 00       	call   0x405e62
401d0f:	8b f1                	mov    %ecx,%esi
401d11:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401d15:	8b 06                	mov    (%esi),%eax
401d17:	8b 48 04             	mov    0x4(%eax),%ecx
401d1a:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
401d1f:	75 36                	jne    0x401d57
401d21:	f6 44 31 14 02       	testb  $0x2,0x14(%ecx,%esi,1)
401d26:	74 2f                	je     0x401d57
401d28:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
401d2c:	8b 01                	mov    (%ecx),%eax
401d2e:	ff 50 34             	call   *0x34(%eax)
401d31:	83 f8 ff             	cmp    $0xffffffff,%eax
401d34:	75 21                	jne    0x401d57
401d36:	8b 06                	mov    (%esi),%eax
401d38:	6a 00                	push   $0x0
401d3a:	8b 48 04             	mov    0x4(%eax),%ecx
401d3d:	03 ce                	add    %esi,%ecx
401d3f:	8b 51 0c             	mov    0xc(%ecx),%edx
401d42:	83 ca 04             	or     $0x4,%edx
401d45:	8b c2                	mov    %edx,%eax
401d47:	83 c8 04             	or     $0x4,%eax
401d4a:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
401d4e:	0f 44 d0             	cmove  %eax,%edx
401d51:	52                   	push   %edx
401d52:	e8 0f f9 ff ff       	call   0x401666
401d57:	e8 7a 40 00 00       	call   0x405dd6
401d5c:	c3                   	ret
401d5d:	b8 57 1d 40 00       	mov    $0x401d57,%eax
401d62:	c3                   	ret
401d63:	8b 09                	mov    (%ecx),%ecx
401d65:	8b 01                	mov    (%ecx),%eax
401d67:	8b 40 04             	mov    0x4(%eax),%eax
401d6a:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
401d6e:	85 c9                	test   %ecx,%ecx
401d70:	74 05                	je     0x401d77
401d72:	8b 01                	mov    (%ecx),%eax
401d74:	ff 60 08             	jmp    *0x8(%eax)
401d77:	c3                   	ret
401d78:	6a 2c                	push   $0x2c
401d7a:	b8 5b 7c 41 00       	mov    $0x417c5b,%eax
401d7f:	e8 de 40 00 00       	call   0x405e62
401d84:	33 ff                	xor    %edi,%edi
401d86:	8b f7                	mov    %edi,%esi
401d88:	bb 28 1a 42 00       	mov    $0x421a28,%ebx
401d8d:	68 50 d4 41 00       	push   $0x41d450
401d92:	89 5d dc             	mov    %ebx,-0x24(%ebp)
401d95:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401d98:	89 75 d8             	mov    %esi,-0x28(%ebp)
401d9b:	e8 60 f2 ff ff       	call   0x401000
401da0:	8b d0                	mov    %eax,%edx
401da2:	a1 28 1a 42 00       	mov    0x421a28,%eax
401da7:	59                   	pop    %ecx
401da8:	8b 40 04             	mov    0x4(%eax),%eax
401dab:	89 55 e0             	mov    %edx,-0x20(%ebp)
401dae:	8b 88 48 1a 42 00    	mov    0x421a48(%eax),%ecx
401db4:	8b 80 4c 1a 42 00    	mov    0x421a4c(%eax),%eax
401dba:	3b c7                	cmp    %edi,%eax
401dbc:	7c 1c                	jl     0x401dda
401dbe:	7f 0e                	jg     0x401dce
401dc0:	3b cf                	cmp    %edi,%ecx
401dc2:	76 16                	jbe    0x401dda
401dc4:	3b c7                	cmp    %edi,%eax
401dc6:	7c 12                	jl     0x401dda
401dc8:	7f 04                	jg     0x401dce
401dca:	3b ca                	cmp    %edx,%ecx
401dcc:	76 0c                	jbe    0x401dda
401dce:	2b ca                	sub    %edx,%ecx
401dd0:	1b c7                	sbb    %edi,%eax
401dd2:	89 4d ec             	mov    %ecx,-0x14(%ebp)
401dd5:	89 45 e8             	mov    %eax,-0x18(%ebp)
401dd8:	eb 14                	jmp    0x401dee
401dda:	0f 57 c0             	xorps  %xmm0,%xmm0
401ddd:	66 0f 13 45 d0       	movlpd %xmm0,-0x30(%ebp)
401de2:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401de5:	89 45 e8             	mov    %eax,-0x18(%ebp)
401de8:	8b 45 d0             	mov    -0x30(%ebp),%eax
401deb:	89 45 ec             	mov    %eax,-0x14(%ebp)
401dee:	53                   	push   %ebx
401def:	8d 4d c8             	lea    -0x38(%ebp),%ecx
401df2:	e8 83 fe ff ff       	call   0x401c7a
401df7:	89 7d fc             	mov    %edi,-0x4(%ebp)
401dfa:	80 7d cc 00          	cmpb   $0x0,-0x34(%ebp)
401dfe:	75 08                	jne    0x401e08
401e00:	6a 04                	push   $0x4
401e02:	59                   	pop    %ecx
401e03:	e9 22 01 00 00       	jmp    0x401f2a
401e08:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401e0c:	a1 28 1a 42 00       	mov    0x421a28,%eax
401e11:	8b 40 04             	mov    0x4(%eax),%eax
401e14:	8b 80 3c 1a 42 00    	mov    0x421a3c(%eax),%eax
401e1a:	25 c0 01 00 00       	and    $0x1c0,%eax
401e1f:	83 f8 40             	cmp    $0x40,%eax
401e22:	74 3a                	je     0x401e5e
401e24:	8b 45 ec             	mov    -0x14(%ebp),%eax
401e27:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401e2a:	3b cf                	cmp    %edi,%ecx
401e2c:	7c 2c                	jl     0x401e5a
401e2e:	7f 04                	jg     0x401e34
401e30:	3b c7                	cmp    %edi,%eax
401e32:	76 26                	jbe    0x401e5a
401e34:	8b 03                	mov    (%ebx),%eax
401e36:	8b 48 04             	mov    0x4(%eax),%ecx
401e39:	8a 44 19 40          	mov    0x40(%ecx,%ebx,1),%al
401e3d:	8b 4c 19 38          	mov    0x38(%ecx,%ebx,1),%ecx
401e41:	88 45 d4             	mov    %al,-0x2c(%ebp)
401e44:	ff 75 d4             	push   -0x2c(%ebp)
401e47:	e8 f2 fd ff ff       	call   0x401c3e
401e4c:	83 f8 ff             	cmp    $0xffffffff,%eax
401e4f:	75 72                	jne    0x401ec3
401e51:	83 ce 04             	or     $0x4,%esi
401e54:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401e57:	89 75 d8             	mov    %esi,-0x28(%ebp)
401e5a:	85 f6                	test   %esi,%esi
401e5c:	75 53                	jne    0x401eb1
401e5e:	8b 03                	mov    (%ebx),%eax
401e60:	57                   	push   %edi
401e61:	8b 40 04             	mov    0x4(%eax),%eax
401e64:	ff 75 e0             	push   -0x20(%ebp)
401e67:	8b 4c 18 38          	mov    0x38(%eax,%ebx,1),%ecx
401e6b:	68 50 d4 41 00       	push   $0x41d450
401e70:	8b 01                	mov    (%ecx),%eax
401e72:	ff 50 24             	call   *0x24(%eax)
401e75:	3b 45 e0             	cmp    -0x20(%ebp),%eax
401e78:	75 74                	jne    0x401eee
401e7a:	3b d7                	cmp    %edi,%edx
401e7c:	75 70                	jne    0x401eee
401e7e:	8b 45 ec             	mov    -0x14(%ebp),%eax
401e81:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401e84:	3b cf                	cmp    %edi,%ecx
401e86:	7c 29                	jl     0x401eb1
401e88:	7f 04                	jg     0x401e8e
401e8a:	3b c7                	cmp    %edi,%eax
401e8c:	76 23                	jbe    0x401eb1
401e8e:	8b 03                	mov    (%ebx),%eax
401e90:	8b 48 04             	mov    0x4(%eax),%ecx
401e93:	8a 44 19 40          	mov    0x40(%ecx,%ebx,1),%al
401e97:	8b 4c 19 38          	mov    0x38(%ecx,%ebx,1),%ecx
401e9b:	88 45 d4             	mov    %al,-0x2c(%ebp)
401e9e:	ff 75 d4             	push   -0x2c(%ebp)
401ea1:	e8 98 fd ff ff       	call   0x401c3e
401ea6:	83 f8 ff             	cmp    $0xffffffff,%eax
401ea9:	75 2f                	jne    0x401eda
401eab:	83 ce 04             	or     $0x4,%esi
401eae:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401eb1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
401eb4:	8b 03                	mov    (%ebx),%eax
401eb6:	8b 40 04             	mov    0x4(%eax),%eax
401eb9:	89 7c 18 20          	mov    %edi,0x20(%eax,%ebx,1)
401ebd:	89 7c 18 24          	mov    %edi,0x24(%eax,%ebx,1)
401ec1:	eb 64                	jmp    0x401f27
401ec3:	8b 45 ec             	mov    -0x14(%ebp),%eax
401ec6:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401ec9:	83 c0 ff             	add    $0xffffffff,%eax
401ecc:	83 d1 ff             	adc    $0xffffffff,%ecx
401ecf:	89 45 ec             	mov    %eax,-0x14(%ebp)
401ed2:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401ed5:	e9 50 ff ff ff       	jmp    0x401e2a
401eda:	8b 45 ec             	mov    -0x14(%ebp),%eax
401edd:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401ee0:	83 c0 ff             	add    $0xffffffff,%eax
401ee3:	83 d1 ff             	adc    $0xffffffff,%ecx
401ee6:	89 45 ec             	mov    %eax,-0x14(%ebp)
401ee9:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401eec:	eb 96                	jmp    0x401e84
401eee:	6a 04                	push   $0x4
401ef0:	59                   	pop    %ecx
401ef1:	eb c1                	jmp    0x401eb4
401ef3:	8b 4d dc             	mov    -0x24(%ebp),%ecx
401ef6:	6a 01                	push   $0x1
401ef8:	8b 01                	mov    (%ecx),%eax
401efa:	8b 70 04             	mov    0x4(%eax),%esi
401efd:	03 f1                	add    %ecx,%esi
401eff:	8b ce                	mov    %esi,%ecx
401f01:	8b 56 0c             	mov    0xc(%esi),%edx
401f04:	83 ca 04             	or     $0x4,%edx
401f07:	8b c2                	mov    %edx,%eax
401f09:	83 c8 04             	or     $0x4,%eax
401f0c:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
401f10:	0f 44 d0             	cmove  %eax,%edx
401f13:	52                   	push   %edx
401f14:	e8 4d f7 ff ff       	call   0x401666
401f19:	b8 1f 1f 40 00       	mov    $0x401f1f,%eax
401f1e:	c3                   	ret
401f1f:	8b 5d dc             	mov    -0x24(%ebp),%ebx
401f22:	8b 4d d8             	mov    -0x28(%ebp),%ecx
401f25:	33 ff                	xor    %edi,%edi
401f27:	89 7d fc             	mov    %edi,-0x4(%ebp)
401f2a:	8b 03                	mov    (%ebx),%eax
401f2c:	8b 40 04             	mov    0x4(%eax),%eax
401f2f:	03 c3                	add    %ebx,%eax
401f31:	85 c9                	test   %ecx,%ecx
401f33:	74 19                	je     0x401f4e
401f35:	8b 70 0c             	mov    0xc(%eax),%esi
401f38:	0b f1                	or     %ecx,%esi
401f3a:	8b d6                	mov    %esi,%edx
401f3c:	83 ca 04             	or     $0x4,%edx
401f3f:	39 78 38             	cmp    %edi,0x38(%eax)
401f42:	57                   	push   %edi
401f43:	0f 44 f2             	cmove  %edx,%esi
401f46:	56                   	push   %esi
401f47:	8b c8                	mov    %eax,%ecx
401f49:	e8 18 f7 ff ff       	call   0x401666
401f4e:	8d 4d c8             	lea    -0x38(%ebp),%ecx
401f51:	e8 83 fd ff ff       	call   0x401cd9
401f56:	8b c3                	mov    %ebx,%eax
401f58:	e8 79 3e 00 00       	call   0x405dd6
401f5d:	c3                   	ret
401f5e:	6a 4c                	push   $0x4c
401f60:	b8 77 7d 41 00       	mov    $0x417d77,%eax
401f65:	e8 c2 3e 00 00       	call   0x405e2c
401f6a:	8b f9                	mov    %ecx,%edi
401f6c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401f70:	83 7d 1c 10          	cmpl   $0x10,0x1c(%ebp)
401f74:	8b 45 18             	mov    0x18(%ebp),%eax
401f77:	8d 55 08             	lea    0x8(%ebp),%edx
401f7a:	0f 43 55 08          	cmovae 0x8(%ebp),%edx
401f7e:	03 c2                	add    %edx,%eax
401f80:	83 7d 1c 10          	cmpl   $0x10,0x1c(%ebp)
401f84:	8d 4d 08             	lea    0x8(%ebp),%ecx
401f87:	0f 43 4d 08          	cmovae 0x8(%ebp),%ecx
401f8b:	89 7d ac             	mov    %edi,-0x54(%ebp)
401f8e:	33 d2                	xor    %edx,%edx
401f90:	eb 07                	jmp    0x401f99
401f92:	80 39 20             	cmpb   $0x20,(%ecx)
401f95:	75 01                	jne    0x401f98
401f97:	42                   	inc    %edx
401f98:	41                   	inc    %ecx
401f99:	3b c8                	cmp    %eax,%ecx
401f9b:	75 f5                	jne    0x401f92
401f9d:	68 d6 d4 41 00       	push   $0x41d4d6
401fa2:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401fa5:	8d 5a 01             	lea    0x1(%edx),%ebx
401fa8:	e8 c0 f1 ff ff       	call   0x40116d
401fad:	68 d8 d4 41 00       	push   $0x41d4d8
401fb2:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401fb5:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401fb9:	e8 af f1 ff ff       	call   0x40116d
401fbe:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
401fc2:	33 f6                	xor    %esi,%esi
401fc4:	ff 75 e8             	push   -0x18(%ebp)
401fc7:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
401fcb:	8d 45 d8             	lea    -0x28(%ebp),%eax
401fce:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
401fd2:	56                   	push   %esi
401fd3:	50                   	push   %eax
401fd4:	8d 4d 08             	lea    0x8(%ebp),%ecx
401fd7:	e8 d4 0f 00 00       	call   0x402fb0
401fdc:	8b f0                	mov    %eax,%esi
401fde:	83 fe ff             	cmp    $0xffffffff,%esi
401fe1:	74 19                	je     0x401ffc
401fe3:	6a ff                	push   $0xffffffff
401fe5:	6a 00                	push   $0x0
401fe7:	8d 45 c0             	lea    -0x40(%ebp),%eax
401fea:	50                   	push   %eax
401feb:	ff 75 e8             	push   -0x18(%ebp)
401fee:	8d 4d 08             	lea    0x8(%ebp),%ecx
401ff1:	56                   	push   %esi
401ff2:	e8 6a 0c 00 00       	call   0x402c61
401ff7:	03 75 d0             	add    -0x30(%ebp),%esi
401ffa:	eb c8                	jmp    0x401fc4
401ffc:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401fff:	e8 98 f1 ff ff       	call   0x40119c
402004:	8d 4d c0             	lea    -0x40(%ebp),%ecx
402007:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40200b:	e8 8c f1 ff ff       	call   0x40119c
402010:	8d 55 08             	lea    0x8(%ebp),%edx
402013:	8d 4d b0             	lea    -0x50(%ebp),%ecx
402016:	e8 a5 07 00 00       	call   0x4027c0
40201b:	8b 45 b0             	mov    -0x50(%ebp),%eax
40201e:	89 45 a8             	mov    %eax,-0x58(%ebp)
402021:	b8 00 f0 ff ff       	mov    $0xfffff000,%eax
402026:	23 f8                	and    %eax,%edi
402028:	8d b3 ff 0f 00 00    	lea    0xfff(%ebx),%esi
40202e:	23 f0                	and    %eax,%esi
402030:	8d 45 bc             	lea    -0x44(%ebp),%eax
402033:	50                   	push   %eax
402034:	6a 40                	push   $0x40
402036:	56                   	push   %esi
402037:	57                   	push   %edi
402038:	ff 15 1c 90 41 00    	call   *0x41901c
40203e:	85 c0                	test   %eax,%eax
402040:	74 39                	je     0x40207b
402042:	53                   	push   %ebx
402043:	ff 75 a8             	push   -0x58(%ebp)
402046:	ff 75 ac             	push   -0x54(%ebp)
402049:	e8 52 36 00 00       	call   0x4056a0
40204e:	83 c4 0c             	add    $0xc,%esp
402051:	8d 45 bc             	lea    -0x44(%ebp),%eax
402054:	50                   	push   %eax
402055:	ff 75 bc             	push   -0x44(%ebp)
402058:	56                   	push   %esi
402059:	57                   	push   %edi
40205a:	ff 15 1c 90 41 00    	call   *0x41901c
402060:	85 c0                	test   %eax,%eax
402062:	74 17                	je     0x40207b
402064:	56                   	push   %esi
402065:	57                   	push   %edi
402066:	ff 15 04 90 41 00    	call   *0x419004
40206c:	50                   	push   %eax
40206d:	ff 15 14 90 41 00    	call   *0x419014