40b792:	56                   	push   %esi
40b793:	33 f6                	xor    %esi,%esi
40b795:	8b d9                	mov    %ecx,%ebx
40b797:	57                   	push   %edi
40b798:	56                   	push   %esi
40b799:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40b79c:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b79f:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b7a2:	89 75 ec             	mov    %esi,-0x14(%ebp)
40b7a5:	ff 15 74 20 41 00    	call   *0x412074
40b7ab:	8b c6                	mov    %esi,%eax
40b7ad:	ba 04 01 00 00       	mov    $0x104,%edx
40b7b2:	f7 d8                	neg    %eax
40b7b4:	6a 01                	push   $0x1
40b7b6:	1b c0                	sbb    %eax,%eax
40b7b8:	25 04 01 00 00       	and    $0x104,%eax
40b7bd:	03 d0                	add    %eax,%edx
40b7bf:	52                   	push   %edx
40b7c0:	6a 07                	push   $0x7
40b7c2:	89 55 f8             	mov    %edx,-0x8(%ebp)
40b7c5:	33 d2                	xor    %edx,%edx
40b7c7:	59                   	pop    %ecx
40b7c8:	e8 d6 dd ff ff       	call   0x4095a3
40b7cd:	8b f8                	mov    %eax,%edi
40b7cf:	85 ff                	test   %edi,%edi
40b7d1:	0f 84 a9 01 00 00    	je     0x40b980
40b7d7:	ff 75 f8             	push   -0x8(%ebp)
40b7da:	57                   	push   %edi
40b7db:	56                   	push   %esi
40b7dc:	ff 15 e8 20 41 00    	call   *0x4120e8
40b7e2:	85 c0                	test   %eax,%eax
40b7e4:	0f 84 a8 01 00 00    	je     0x40b992
40b7ea:	8b 55 f8             	mov    -0x8(%ebp),%edx
40b7ed:	8d 4a ff             	lea    -0x1(%edx),%ecx
40b7f0:	3b c1                	cmp    %ecx,%eax
40b7f2:	73 be                	jae    0x40b7b2
40b7f4:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40b7f7:	50                   	push   %eax
40b7f8:	57                   	push   %edi
40b7f9:	6a 01                	push   $0x1
40b7fb:	ff 15 b0 21 41 00    	call   *0x4121b0
40b801:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b804:	85 c0                	test   %eax,%eax
40b806:	75 23                	jne    0x40b82b
40b808:	ff 15 48 20 41 00    	call   *0x412048
40b80e:	85 c0                	test   %eax,%eax
40b810:	0f 85 7c 01 00 00    	jne    0x40b992
40b816:	ff 15 48 20 41 00    	call   *0x412048
40b81c:	85 c0                	test   %eax,%eax
40b81e:	0f 85 6e 01 00 00    	jne    0x40b992
40b824:	6a 57                	push   $0x57
40b826:	e9 61 01 00 00       	jmp    0x40b98c
40b82b:	83 c0 0a             	add    $0xa,%eax
40b82e:	8b c8                	mov    %eax,%ecx
40b830:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b833:	e8 32 f4 ff ff       	call   0x40ac6a
40b838:	8b f0                	mov    %eax,%esi
40b83a:	89 75 f4             	mov    %esi,-0xc(%ebp)
40b83d:	85 f6                	test   %esi,%esi
40b83f:	0f 84 4d 01 00 00    	je     0x40b992
40b845:	56                   	push   %esi
40b846:	ff 75 f8             	push   -0x8(%ebp)
40b849:	6a 00                	push   $0x0
40b84b:	57                   	push   %edi
40b84c:	6a 03                	push   $0x3
40b84e:	ff 15 a8 21 41 00    	call   *0x4121a8
40b854:	85 c0                	test   %eax,%eax
40b856:	0f 84 bd 01 00 00    	je     0x40ba19
40b85c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b85f:	50                   	push   %eax
40b860:	8d 45 ec             	lea    -0x14(%ebp),%eax
40b863:	50                   	push   %eax
40b864:	68 f8 18 40 00       	push   $0x4018f8
40b869:	56                   	push   %esi
40b86a:	ff 15 ac 21 41 00    	call   *0x4121ac
40b870:	85 c0                	test   %eax,%eax
40b872:	0f 84 a1 01 00 00    	je     0x40ba19
40b878:	6a 01                	push   $0x1
40b87a:	6a 40                	push   $0x40
40b87c:	6a 07                	push   $0x7
40b87e:	33 d2                	xor    %edx,%edx
40b880:	59                   	pop    %ecx
40b881:	e8 1d dd ff ff       	call   0x4095a3
40b886:	33 ff                	xor    %edi,%edi
40b888:	89 45 e8             	mov    %eax,-0x18(%ebp)
40b88b:	f7 45 f0 fc ff ff ff 	testl  $0xfffffffc,-0x10(%ebp)
40b892:	0f 86 81 01 00 00    	jbe    0x40ba19
40b898:	8b 55 ec             	mov    -0x14(%ebp),%edx
40b89b:	0f b7 4c ba 02       	movzwl 0x2(%edx,%edi,4),%ecx
40b8a0:	0f b7 04 ba          	movzwl (%edx,%edi,4),%eax
40b8a4:	51                   	push   %ecx
40b8a5:	50                   	push   %eax
40b8a6:	68 30 19 40 00       	push   $0x401930
40b8ab:	6a 40                	push   $0x40
40b8ad:	ff 75 e8             	push   -0x18(%ebp)
40b8b0:	e8 6f db ff ff       	call   0x409424
40b8b5:	83 c4 14             	add    $0x14,%esp
40b8b8:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b8bb:	50                   	push   %eax
40b8bc:	8d 45 fc             	lea    -0x4(%ebp),%eax
40b8bf:	50                   	push   %eax
40b8c0:	ff 75 e8             	push   -0x18(%ebp)
40b8c3:	56                   	push   %esi
40b8c4:	ff 15 ac 21 41 00    	call   *0x4121ac
40b8ca:	85 c0                	test   %eax,%eax
40b8cc:	75 12                	jne    0x40b8e0
40b8ce:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b8d1:	33 c9                	xor    %ecx,%ecx
40b8d3:	47                   	inc    %edi
40b8d4:	c1 e8 02             	shr    $0x2,%eax
40b8d7:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40b8da:	3b f8                	cmp    %eax,%edi
40b8dc:	72 ba                	jb     0x40b898
40b8de:	eb 03                	jmp    0x40b8e3
40b8e0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b8e3:	85 c9                	test   %ecx,%ecx
40b8e5:	0f 84 2e 01 00 00    	je     0x40ba19
40b8eb:	e8 9b eb ff ff       	call   0x40a48b
40b8f0:	83 f8 04             	cmp    $0x4,%eax
40b8f3:	77 1d                	ja     0x40b912
40b8f5:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b8f8:	e8 c9 f2 ff ff       	call   0x40abc6
40b8fd:	ff 15 48 20 41 00    	call   *0x412048
40b903:	85 c0                	test   %eax,%eax
40b905:	0f 85 87 00 00 00    	jne    0x40b992
40b90b:	68 2b 04 00 00       	push   $0x42b
40b910:	eb 7a                	jmp    0x40b98c
40b912:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b915:	bf 7c 19 40 00       	mov    $0x40197c,%edi
40b91a:	6a 00                	push   $0x0
40b91c:	6a 01                	push   $0x1
40b91e:	8b d7                	mov    %edi,%edx
40b920:	e8 1b e6 ff ff       	call   0x409f40
40b925:	83 f8 ff             	cmp    $0xffffffff,%eax
40b928:	74 1d                	je     0x40b947
40b92a:	ff 75 fc             	push   -0x4(%ebp)
40b92d:	ff 15 d4 20 41 00    	call   *0x4120d4
40b933:	57                   	push   %edi
40b934:	8b f0                	mov    %eax,%esi
40b936:	ff 15 d4 20 41 00    	call   *0x4120d4
40b93c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b93f:	2b f0                	sub    %eax,%esi
40b941:	33 c0                	xor    %eax,%eax
40b943:	66 89 04 71          	mov    %ax,(%ecx,%esi,2)
40b947:	85 db                	test   %ebx,%ebx
40b949:	74 65                	je     0x40b9b0
40b94b:	ff 75 fc             	push   -0x4(%ebp)
40b94e:	ff 15 d4 20 41 00    	call   *0x4120d4
40b954:	53                   	push   %ebx
40b955:	8b f0                	mov    %eax,%esi
40b957:	ff 15 d4 20 41 00    	call   *0x4120d4
40b95d:	6a 01                	push   $0x1
40b95f:	83 c6 0b             	add    $0xb,%esi
40b962:	33 d2                	xor    %edx,%edx
40b964:	03 c6                	add    %esi,%eax
40b966:	50                   	push   %eax
40b967:	6a 07                	push   $0x7
40b969:	59                   	pop    %ecx
40b96a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b96d:	e8 31 dc ff ff       	call   0x4095a3
40b972:	8b f0                	mov    %eax,%esi
40b974:	85 f6                	test   %esi,%esi
40b976:	75 21                	jne    0x40b999
40b978:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b97b:	e8 46 f2 ff ff       	call   0x40abc6
40b980:	ff 15 48 20 41 00    	call   *0x412048
40b986:	85 c0                	test   %eax,%eax
40b988:	75 08                	jne    0x40b992
40b98a:	6a 08                	push   $0x8
40b98c:	ff 15 74 20 41 00    	call   *0x412074
40b992:	33 c0                	xor    %eax,%eax
40b994:	5f                   	pop    %edi
40b995:	5e                   	pop    %esi
40b996:	5b                   	pop    %ebx
40b997:	c9                   	leave
40b998:	c3                   	ret
40b999:	53                   	push   %ebx
40b99a:	ff 75 fc             	push   -0x4(%ebp)
40b99d:	68 88 19 40 00       	push   $0x401988
40b9a2:	ff 75 f8             	push   -0x8(%ebp)
40b9a5:	56                   	push   %esi
40b9a6:	e8 79 da ff ff       	call   0x409424
40b9ab:	83 c4 14             	add    $0x14,%esp
40b9ae:	eb 23                	jmp    0x40b9d3
40b9b0:	8b 55 fc             	mov    -0x4(%ebp),%edx
40b9b3:	85 d2                	test   %edx,%edx
40b9b5:	75 0a                	jne    0x40b9c1
40b9b7:	6a 07                	push   $0x7
40b9b9:	59                   	pop    %ecx
40b9ba:	e8 98 db ff ff       	call   0x409557
40b9bf:	eb 0c                	jmp    0x40b9cd
40b9c1:	6a 00                	push   $0x0
40b9c3:	6a 00                	push   $0x0
40b9c5:	6a 07                	push   $0x7
40b9c7:	59                   	pop    %ecx
40b9c8:	e8 d6 db ff ff       	call   0x4095a3
40b9cd:	8b f0                	mov    %eax,%esi
40b9cf:	85 f6                	test   %esi,%esi
40b9d1:	74 a5                	je     0x40b978
40b9d3:	56                   	push   %esi
40b9d4:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b9d7:	ff 15 80 21 41 00    	call   *0x412180
40b9dd:	6a 01                	push   $0x1
40b9df:	6a 50                	push   $0x50
40b9e1:	6a 0b                	push   $0xb
40b9e3:	33 d2                	xor    %edx,%edx
40b9e5:	59                   	pop    %ecx
40b9e6:	e8 b8 db ff ff       	call   0x4095a3
40b9eb:	8b f0                	mov    %eax,%esi
40b9ed:	85 f6                	test   %esi,%esi
40b9ef:	74 87                	je     0x40b978
40b9f1:	ff 75 fc             	push   -0x4(%ebp)
40b9f4:	b9 ed 15 00 00       	mov    $0x15ed,%ecx
40b9f9:	e8 53 e0 ff ff       	call   0x409a51
40b9fe:	50                   	push   %eax
40b9ff:	6a 50                	push   $0x50
40ba01:	56                   	push   %esi
40ba02:	e8 1d da ff ff       	call   0x409424
40ba07:	83 c4 10             	add    $0x10,%esp
40ba0a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40ba0d:	e8 b4 f1 ff ff       	call   0x40abc6
40ba12:	8b c6                	mov    %esi,%eax
40ba14:	e9 7b ff ff ff       	jmp    0x40b994
40ba19:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40ba1c:	e8 a5 f1 ff ff       	call   0x40abc6
40ba21:	e9 6c ff ff ff       	jmp    0x40b992
40ba26:	8b ff                	mov    %edi,%edi
40ba28:	53                   	push   %ebx
40ba29:	56                   	push   %esi
40ba2a:	57                   	push   %edi
40ba2b:	6a 00                	push   $0x0
40ba2d:	8b f1                	mov    %ecx,%esi
40ba2f:	ff 15 74 20 41 00    	call   *0x412074
40ba35:	85 f6                	test   %esi,%esi
40ba37:	74 69                	je     0x40baa2
40ba39:	51                   	push   %ecx
40ba3a:	51                   	push   %ecx
40ba3b:	6a 7c                	push   $0x7c
40ba3d:	5a                   	pop    %edx
40ba3e:	8b ce                	mov    %esi,%ecx
40ba40:	e8 5b e3 ff ff       	call   0x409da0
40ba45:	8b f8                	mov    %eax,%edi
40ba47:	83 ff ff             	cmp    $0xffffffff,%edi
40ba4a:	75 11                	jne    0x40ba5d
40ba4c:	6a 00                	push   $0x0
40ba4e:	ff 15 74 20 41 00    	call   *0x412074
40ba54:	8b ce                	mov    %esi,%ecx
40ba56:	e8 30 ea ff ff       	call   0x40a48b
40ba5b:	8b f8                	mov    %eax,%edi
40ba5d:	6a 01                	push   $0x1
40ba5f:	8d 47 05             	lea    0x5(%edi),%eax
40ba62:	33 d2                	xor    %edx,%edx
40ba64:	50                   	push   %eax
40ba65:	6a 0c                	push   $0xc
40ba67:	59                   	pop    %ecx
40ba68:	e8 36 db ff ff       	call   0x4095a3
40ba6d:	8b d8                	mov    %eax,%ebx
40ba6f:	85 db                	test   %ebx,%ebx
40ba71:	75 0e                	jne    0x40ba81
40ba73:	ff 15 48 20 41 00    	call   *0x412048
40ba79:	85 c0                	test   %eax,%eax
40ba7b:	75 37                	jne    0x40bab4
40ba7d:	6a 08                	push   $0x8
40ba7f:	eb 2d                	jmp    0x40baae
40ba81:	8d 47 01             	lea    0x1(%edi),%eax
40ba84:	ba 54 11 40 00       	mov    $0x401154,%edx
40ba89:	50                   	push   %eax
40ba8a:	8b cb                	mov    %ebx,%ecx
40ba8c:	e8 65 e9 ff ff       	call   0x40a3f6
40ba91:	8d 47 02             	lea    0x2(%edi),%eax
40ba94:	8b d6                	mov    %esi,%edx
40ba96:	50                   	push   %eax
40ba97:	8b cb                	mov    %ebx,%ecx
40ba99:	e8 b8 e9 ff ff       	call   0x40a456
40ba9e:	8b c3                	mov    %ebx,%eax
40baa0:	eb 14                	jmp    0x40bab6
40baa2:	ff 15 48 20 41 00    	call   *0x412048
40baa8:	85 c0                	test   %eax,%eax
40baaa:	75 08                	jne    0x40bab4
40baac:	6a 57                	push   $0x57
40baae:	ff 15 74 20 41 00    	call   *0x412074
40bab4:	33 c0                	xor    %eax,%eax
40bab6:	5f                   	pop    %edi
40bab7:	5e                   	pop    %esi
40bab8:	5b                   	pop    %ebx
40bab9:	c3                   	ret
40baba:	8b ff                	mov    %edi,%edi
40babc:	55                   	push   %ebp
40babd:	8b ec                	mov    %esp,%ebp
40babf:	83 ec 10             	sub    $0x10,%esp
40bac2:	53                   	push   %ebx
40bac3:	56                   	push   %esi
40bac4:	57                   	push   %edi
40bac5:	33 ff                	xor    %edi,%edi
40bac7:	8b d9                	mov    %ecx,%ebx
40bac9:	57                   	push   %edi
40baca:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40bacd:	89 7d f8             	mov    %edi,-0x8(%ebp)
40bad0:	ff 15 74 20 41 00    	call   *0x412074
40bad6:	8b 75 08             	mov    0x8(%ebp),%esi
40bad9:	85 f6                	test   %esi,%esi
40badb:	75 15                	jne    0x40baf2
40badd:	ff 15 48 20 41 00    	call   *0x412048
40bae3:	85 c0                	test   %eax,%eax
40bae5:	0f 85 6e 02 00 00    	jne    0x40bd59
40baeb:	6a 57                	push   $0x57
40baed:	e9 61 02 00 00       	jmp    0x40bd53
40baf2:	85 db                	test   %ebx,%ebx
40baf4:	74 e7                	je     0x40badd
40baf6:	83 0b ff             	orl    $0xffffffff,(%ebx)
40baf9:	83 c6 3c             	add    $0x3c,%esi
40bafc:	89 7d fc             	mov    %edi,-0x4(%ebp)
40baff:	8d 46 c4             	lea    -0x3c(%esi),%eax
40bb02:	85 c0                	test   %eax,%eax
40bb04:	0f 84 3a 02 00 00    	je     0x40bd44
40bb0a:	6a ff                	push   $0xffffffff
40bb0c:	68 94 19 40 00       	push   $0x401994
40bb11:	6a ff                	push   $0xffffffff
40bb13:	8d 46 c4             	lea    -0x3c(%esi),%eax
40bb16:	50                   	push   %eax
40bb17:	6a 01                	push   $0x1
40bb19:	ff 15 b0 20 41 00    	call   *0x4120b0
40bb1f:	50                   	push   %eax
40bb20:	ff 15 ac 20 41 00    	call   *0x4120ac
40bb26:	83 c0 fe             	add    $0xfffffffe,%eax
40bb29:	75 b2                	jne    0x40badd
40bb2b:	8b 4e d8             	mov    -0x28(%esi),%ecx
40bb2e:	33 d2                	xor    %edx,%edx
40bb30:	8b 7e d4             	mov    -0x2c(%esi),%edi
40bb33:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40bb36:	39 16                	cmp    %edx,(%esi)
40bb38:	75 a3                	jne    0x40badd
40bb3a:	39 56 04             	cmp    %edx,0x4(%esi)
40bb3d:	75 9e                	jne    0x40badd
40bb3f:	39 56 08             	cmp    %edx,0x8(%esi)
40bb42:	75 99                	jne    0x40badd
40bb44:	39 56 0c             	cmp    %edx,0xc(%esi)
40bb47:	75 94                	jne    0x40badd
40bb49:	8b df                	mov    %edi,%ebx
40bb4b:	81 e3 00 00 04 00    	and    $0x40000,%ebx
40bb51:	8b c3                	mov    %ebx,%eax
40bb53:	0b c2                	or     %edx,%eax
40bb55:	75 1b                	jne    0x40bb72
40bb57:	39 56 e4             	cmp    %edx,-0x1c(%esi)
40bb5a:	74 81                	je     0x40badd
40bb5c:	ff 76 e4             	push   -0x1c(%esi)
40bb5f:	ff 15 d4 20 41 00    	call   *0x4120d4
40bb65:	85 c0                	test   %eax,%eax
40bb67:	0f 84 70 ff ff ff    	je     0x40badd
40bb6d:	8b 4d f4             	mov    -0xc(%ebp),%ecx