40fe38:	74 93                	je     0x40fdcd
40fe3a:	8b 45 f4             	mov    -0xc(%ebp),%eax
40fe3d:	8b cf                	mov    %edi,%ecx
40fe3f:	2b c1                	sub    %ecx,%eax
40fe41:	50                   	push   %eax
40fe42:	51                   	push   %ecx
40fe43:	e8 de 04 00 00       	call   0x410326
40fe48:	89 45 f8             	mov    %eax,-0x8(%ebp)
40fe4b:	59                   	pop    %ecx
40fe4c:	59                   	pop    %ecx
40fe4d:	85 c0                	test   %eax,%eax
40fe4f:	78 48                	js     0x40fe99
40fe51:	39 1e                	cmp    %ebx,(%esi)
40fe53:	74 44                	je     0x40fe99
40fe55:	ff 34 86             	push   (%esi,%eax,4)
40fe58:	e8 c7 99 ff ff       	call   0x409824
40fe5d:	59                   	pop    %ecx
40fe5e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40fe61:	38 5d ff             	cmp    %bl,-0x1(%ebp)
40fe64:	75 12                	jne    0x40fe78
40fe66:	8b 45 08             	mov    0x8(%ebp),%eax
40fe69:	8b fb                	mov    %ebx,%edi
40fe6b:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
40fe6e:	eb 7f                	jmp    0x40feef
40fe70:	8b 44 8e 04          	mov    0x4(%esi,%ecx,4),%eax
40fe74:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
40fe77:	41                   	inc    %ecx
40fe78:	39 1c 8e             	cmp    %ebx,(%esi,%ecx,4)
40fe7b:	75 f3                	jne    0x40fe70
40fe7d:	6a 04                	push   $0x4
40fe7f:	51                   	push   %ecx
40fe80:	56                   	push   %esi
40fe81:	e8 89 98 ff ff       	call   0x40970f
40fe86:	53                   	push   %ebx
40fe87:	8b f0                	mov    %eax,%esi
40fe89:	e8 96 99 ff ff       	call   0x409824
40fe8e:	83 c4 10             	add    $0x10,%esp
40fe91:	8b c7                	mov    %edi,%eax
40fe93:	85 f6                	test   %esi,%esi
40fe95:	74 58                	je     0x40feef
40fe97:	eb 50                	jmp    0x40fee9
40fe99:	38 5d ff             	cmp    %bl,-0x1(%ebp)
40fe9c:	0f 85 2e ff ff ff    	jne    0x40fdd0
40fea2:	f7 d8                	neg    %eax
40fea4:	89 45 f8             	mov    %eax,-0x8(%ebp)
40fea7:	8d 48 02             	lea    0x2(%eax),%ecx
40feaa:	3b c8                	cmp    %eax,%ecx
40feac:	0f 82 1b ff ff ff    	jb     0x40fdcd
40feb2:	81 f9 ff ff ff 3f    	cmp    $0x3fffffff,%ecx
40feb8:	0f 83 0f ff ff ff    	jae    0x40fdcd
40febe:	6a 04                	push   $0x4
40fec0:	51                   	push   %ecx
40fec1:	56                   	push   %esi
40fec2:	e8 48 98 ff ff       	call   0x40970f
40fec7:	53                   	push   %ebx
40fec8:	8b f0                	mov    %eax,%esi
40feca:	e8 55 99 ff ff       	call   0x409824
40fecf:	83 c4 10             	add    $0x10,%esp
40fed2:	85 f6                	test   %esi,%esi
40fed4:	0f 84 f3 fe ff ff    	je     0x40fdcd
40feda:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40fedd:	8b fb                	mov    %ebx,%edi
40fedf:	8b 45 08             	mov    0x8(%ebp),%eax
40fee2:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
40fee5:	89 5c 8e 04          	mov    %ebx,0x4(%esi,%ecx,4)
40fee9:	89 35 4c 41 42 00    	mov    %esi,0x42414c
40feef:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40fef2:	0f 84 d8 fe ff ff    	je     0x40fdd0
40fef8:	8b c8                	mov    %eax,%ecx
40fefa:	8d 51 01             	lea    0x1(%ecx),%edx
40fefd:	8a 01                	mov    (%ecx),%al
40feff:	41                   	inc    %ecx
40ff00:	84 c0                	test   %al,%al
40ff02:	75 f9                	jne    0x40fefd
40ff04:	2b ca                	sub    %edx,%ecx
40ff06:	6a 01                	push   $0x1
40ff08:	8d 41 02             	lea    0x2(%ecx),%eax
40ff0b:	50                   	push   %eax
40ff0c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ff0f:	e8 98 99 ff ff       	call   0x4098ac
40ff14:	8b f0                	mov    %eax,%esi
40ff16:	59                   	pop    %ecx
40ff17:	59                   	pop    %ecx
40ff18:	85 f6                	test   %esi,%esi
40ff1a:	74 47                	je     0x40ff63
40ff1c:	ff 75 08             	push   0x8(%ebp)
40ff1f:	ff 75 f8             	push   -0x8(%ebp)
40ff22:	56                   	push   %esi
40ff23:	e8 5f 98 ff ff       	call   0x409787
40ff28:	83 c4 0c             	add    $0xc,%esp
40ff2b:	85 c0                	test   %eax,%eax
40ff2d:	75 40                	jne    0x40ff6f
40ff2f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40ff32:	8b c6                	mov    %esi,%eax
40ff34:	2b 45 08             	sub    0x8(%ebp),%eax
40ff37:	41                   	inc    %ecx
40ff38:	03 c8                	add    %eax,%ecx
40ff3a:	0f b6 45 ff          	movzbl -0x1(%ebp),%eax
40ff3e:	f7 d8                	neg    %eax
40ff40:	1b c0                	sbb    %eax,%eax
40ff42:	f7 d0                	not    %eax
40ff44:	88 59 ff             	mov    %bl,-0x1(%ecx)
40ff47:	23 c1                	and    %ecx,%eax
40ff49:	50                   	push   %eax
40ff4a:	56                   	push   %esi
40ff4b:	ff 15 8c b1 41 00    	call   *0x41b18c
40ff51:	85 c0                	test   %eax,%eax
40ff53:	75 0e                	jne    0x40ff63
40ff55:	e8 ad 7d ff ff       	call   0x407d07
40ff5a:	83 cb ff             	or     $0xffffffff,%ebx
40ff5d:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40ff63:	56                   	push   %esi
40ff64:	e8 bb 98 ff ff       	call   0x409824
40ff69:	59                   	pop    %ecx
40ff6a:	e9 61 fe ff ff       	jmp    0x40fdd0
40ff6f:	53                   	push   %ebx
40ff70:	53                   	push   %ebx
40ff71:	53                   	push   %ebx
40ff72:	53                   	push   %ebx
40ff73:	53                   	push   %ebx
40ff74:	e8 e2 7c ff ff       	call   0x407c5b
40ff79:	cc                   	int3
40ff7a:	8b ff                	mov    %edi,%edi
40ff7c:	55                   	push   %ebp
40ff7d:	8b ec                	mov    %esp,%ebp
40ff7f:	83 ec 0c             	sub    $0xc,%esp
40ff82:	53                   	push   %ebx
40ff83:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ff86:	85 db                	test   %ebx,%ebx
40ff88:	75 10                	jne    0x40ff9a
40ff8a:	e8 78 7d ff ff       	call   0x407d07
40ff8f:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ff95:	83 c8 ff             	or     $0xffffffff,%eax
40ff98:	eb 7d                	jmp    0x410017
40ff9a:	56                   	push   %esi
40ff9b:	57                   	push   %edi
40ff9c:	6a 3d                	push   $0x3d
40ff9e:	53                   	push   %ebx
40ff9f:	8b fb                	mov    %ebx,%edi
40ffa1:	e8 25 8d 00 00       	call   0x418ccb
40ffa6:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ffa9:	59                   	pop    %ecx
40ffaa:	59                   	pop    %ecx
40ffab:	85 c0                	test   %eax,%eax
40ffad:	74 4f                	je     0x40fffe
40ffaf:	3b c3                	cmp    %ebx,%eax
40ffb1:	74 4b                	je     0x40fffe
40ffb3:	8b 35 50 41 42 00    	mov    0x424150,%esi
40ffb9:	33 db                	xor    %ebx,%ebx
40ffbb:	66 39 58 02          	cmp    %bx,0x2(%eax)
40ffbf:	0f 94 c1             	sete   %cl
40ffc2:	88 4d ff             	mov    %cl,-0x1(%ebp)
40ffc5:	3b 35 54 41 42 00    	cmp    0x424154,%esi
40ffcb:	75 12                	jne    0x40ffdf
40ffcd:	56                   	push   %esi
40ffce:	e8 95 02 00 00       	call   0x410268
40ffd3:	59                   	pop    %ecx
40ffd4:	8a 4d ff             	mov    -0x1(%ebp),%cl
40ffd7:	8b f0                	mov    %eax,%esi
40ffd9:	89 35 50 41 42 00    	mov    %esi,0x424150
40ffdf:	85 f6                	test   %esi,%esi
40ffe1:	0f 85 87 00 00 00    	jne    0x41006e
40ffe7:	a1 4c 41 42 00       	mov    0x42414c,%eax
40ffec:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40ffef:	74 2b                	je     0x41001c
40fff1:	85 c0                	test   %eax,%eax
40fff3:	74 27                	je     0x41001c
40fff5:	e8 b8 8c ff ff       	call   0x408cb2
40fffa:	85 c0                	test   %eax,%eax
40fffc:	75 66                	jne    0x410064
40fffe:	e8 04 7d ff ff       	call   0x407d07
410003:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
410009:	83 cb ff             	or     $0xffffffff,%ebx
41000c:	57                   	push   %edi
41000d:	e8 12 98 ff ff       	call   0x409824
410012:	59                   	pop    %ecx
410013:	5f                   	pop    %edi
410014:	8b c3                	mov    %ebx,%eax
410016:	5e                   	pop    %esi
410017:	5b                   	pop    %ebx
410018:	8b e5                	mov    %ebp,%esp
41001a:	5d                   	pop    %ebp
41001b:	c3                   	ret
41001c:	84 c9                	test   %cl,%cl
41001e:	75 ec                	jne    0x41000c
410020:	85 c0                	test   %eax,%eax
410022:	75 29                	jne    0x41004d
410024:	6a 04                	push   $0x4
410026:	6a 01                	push   $0x1
410028:	e8 7f 98 ff ff       	call   0x4098ac
41002d:	53                   	push   %ebx
41002e:	a3 4c 41 42 00       	mov    %eax,0x42414c
410033:	e8 ec 97 ff ff       	call   0x409824
410038:	83 c4 0c             	add    $0xc,%esp
41003b:	39 1d 4c 41 42 00    	cmp    %ebx,0x42414c
410041:	74 c6                	je     0x410009
410043:	8b 35 50 41 42 00    	mov    0x424150,%esi
410049:	85 f6                	test   %esi,%esi
41004b:	75 21                	jne    0x41006e
41004d:	6a 04                	push   $0x4
41004f:	6a 01                	push   $0x1
410051:	e8 56 98 ff ff       	call   0x4098ac
410056:	53                   	push   %ebx
410057:	a3 50 41 42 00       	mov    %eax,0x424150
41005c:	e8 c3 97 ff ff       	call   0x409824
410061:	83 c4 0c             	add    $0xc,%esp
410064:	8b 35 50 41 42 00    	mov    0x424150,%esi
41006a:	85 f6                	test   %esi,%esi
41006c:	74 9b                	je     0x410009
41006e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
410071:	8b c7                	mov    %edi,%eax
410073:	2b c8                	sub    %eax,%ecx
410075:	d1 f9                	sar    $1,%ecx
410077:	51                   	push   %ecx
410078:	50                   	push   %eax
410079:	89 4d f4             	mov    %ecx,-0xc(%ebp)
41007c:	e8 f9 02 00 00       	call   0x41037a
410081:	89 45 f8             	mov    %eax,-0x8(%ebp)
410084:	59                   	pop    %ecx
410085:	59                   	pop    %ecx
410086:	85 c0                	test   %eax,%eax
410088:	78 48                	js     0x4100d2
41008a:	39 1e                	cmp    %ebx,(%esi)
41008c:	74 44                	je     0x4100d2
41008e:	ff 34 86             	push   (%esi,%eax,4)
410091:	e8 8e 97 ff ff       	call   0x409824
410096:	59                   	pop    %ecx
410097:	8b 4d f8             	mov    -0x8(%ebp),%ecx
41009a:	38 5d ff             	cmp    %bl,-0x1(%ebp)
41009d:	75 12                	jne    0x4100b1
41009f:	8b 45 08             	mov    0x8(%ebp),%eax
4100a2:	8b fb                	mov    %ebx,%edi
4100a4:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
4100a7:	eb 7f                	jmp    0x410128
4100a9:	8b 44 8e 04          	mov    0x4(%esi,%ecx,4),%eax
4100ad:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
4100b0:	41                   	inc    %ecx
4100b1:	39 1c 8e             	cmp    %ebx,(%esi,%ecx,4)
4100b4:	75 f3                	jne    0x4100a9
4100b6:	6a 04                	push   $0x4
4100b8:	51                   	push   %ecx
4100b9:	56                   	push   %esi
4100ba:	e8 50 96 ff ff       	call   0x40970f
4100bf:	53                   	push   %ebx
4100c0:	8b f0                	mov    %eax,%esi
4100c2:	e8 5d 97 ff ff       	call   0x409824
4100c7:	83 c4 10             	add    $0x10,%esp
4100ca:	8b c7                	mov    %edi,%eax
4100cc:	85 f6                	test   %esi,%esi
4100ce:	74 58                	je     0x410128
4100d0:	eb 50                	jmp    0x410122
4100d2:	38 5d ff             	cmp    %bl,-0x1(%ebp)
4100d5:	0f 85 31 ff ff ff    	jne    0x41000c
4100db:	f7 d8                	neg    %eax
4100dd:	89 45 f8             	mov    %eax,-0x8(%ebp)
4100e0:	8d 48 02             	lea    0x2(%eax),%ecx
4100e3:	3b c8                	cmp    %eax,%ecx
4100e5:	0f 82 1e ff ff ff    	jb     0x410009
4100eb:	81 f9 ff ff ff 3f    	cmp    $0x3fffffff,%ecx
4100f1:	0f 83 12 ff ff ff    	jae    0x410009
4100f7:	6a 04                	push   $0x4
4100f9:	51                   	push   %ecx
4100fa:	56                   	push   %esi
4100fb:	e8 0f 96 ff ff       	call   0x40970f
410100:	53                   	push   %ebx
410101:	8b f0                	mov    %eax,%esi
410103:	e8 1c 97 ff ff       	call   0x409824
410108:	83 c4 10             	add    $0x10,%esp
41010b:	85 f6                	test   %esi,%esi
41010d:	0f 84 f6 fe ff ff    	je     0x410009
410113:	8b 4d f8             	mov    -0x8(%ebp),%ecx
410116:	8b fb                	mov    %ebx,%edi
410118:	8b 45 08             	mov    0x8(%ebp),%eax
41011b:	89 04 8e             	mov    %eax,(%esi,%ecx,4)
41011e:	89 5c 8e 04          	mov    %ebx,0x4(%esi,%ecx,4)
410122:	89 35 50 41 42 00    	mov    %esi,0x424150
410128:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
41012b:	0f 84 db fe ff ff    	je     0x41000c
410131:	8b c8                	mov    %eax,%ecx
410133:	8d 51 02             	lea    0x2(%ecx),%edx
410136:	66 8b 01             	mov    (%ecx),%ax
410139:	83 c1 02             	add    $0x2,%ecx
41013c:	66 3b c3             	cmp    %bx,%ax
41013f:	75 f5                	jne    0x410136
410141:	2b ca                	sub    %edx,%ecx
410143:	d1 f9                	sar    $1,%ecx
410145:	6a 02                	push   $0x2
410147:	8d 41 02             	lea    0x2(%ecx),%eax
41014a:	50                   	push   %eax
41014b:	89 45 f8             	mov    %eax,-0x8(%ebp)
41014e:	e8 59 97 ff ff       	call   0x4098ac
410153:	8b f0                	mov    %eax,%esi
410155:	59                   	pop    %ecx
410156:	59                   	pop    %ecx
410157:	85 f6                	test   %esi,%esi
410159:	74 45                	je     0x4101a0
41015b:	8b 45 08             	mov    0x8(%ebp),%eax
41015e:	50                   	push   %eax
41015f:	ff 75 f8             	push   -0x8(%ebp)
410162:	56                   	push   %esi
410163:	e8 19 7e ff ff       	call   0x407f81
410168:	83 c4 0c             	add    $0xc,%esp
41016b:	85 c0                	test   %eax,%eax
41016d:	75 3d                	jne    0x4101ac
41016f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
410172:	41                   	inc    %ecx
410173:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
410176:	66 89 41 fe          	mov    %ax,-0x2(%ecx)
41017a:	0f b6 45 ff          	movzbl -0x1(%ebp),%eax
41017e:	f7 d8                	neg    %eax
410180:	1b c0                	sbb    %eax,%eax
410182:	f7 d0                	not    %eax
410184:	23 c1                	and    %ecx,%eax
410186:	50                   	push   %eax
410187:	56                   	push   %esi
410188:	ff 15 90 b1 41 00    	call   *0x41b190
41018e:	85 c0                	test   %eax,%eax
410190:	75 0e                	jne    0x4101a0
410192:	e8 70 7b ff ff       	call   0x407d07
410197:	83 cb ff             	or     $0xffffffff,%ebx
41019a:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
4101a0:	56                   	push   %esi
4101a1:	e8 7e 96 ff ff       	call   0x409824
4101a6:	59                   	pop    %ecx
4101a7:	e9 60 fe ff ff       	jmp    0x41000c
4101ac:	53                   	push   %ebx
4101ad:	53                   	push   %ebx
4101ae:	53                   	push   %ebx
4101af:	53                   	push   %ebx
4101b0:	53                   	push   %ebx
4101b1:	e8 a5 7a ff ff       	call   0x407c5b
4101b6:	cc                   	int3
4101b7:	8b ff                	mov    %edi,%edi
4101b9:	55                   	push   %ebp
4101ba:	8b ec                	mov    %esp,%ebp
4101bc:	51                   	push   %ecx
4101bd:	57                   	push   %edi
4101be:	8b 7d 08             	mov    0x8(%ebp),%edi
4101c1:	85 ff                	test   %edi,%edi
4101c3:	75 07                	jne    0x4101cc
4101c5:	33 c0                	xor    %eax,%eax
4101c7:	e9 85 00 00 00       	jmp    0x410251
4101cc:	33 c9                	xor    %ecx,%ecx
4101ce:	8b c7                	mov    %edi,%eax
4101d0:	39 0f                	cmp    %ecx,(%edi)
4101d2:	74 09                	je     0x4101dd
4101d4:	8d 40 04             	lea    0x4(%eax),%eax
4101d7:	41                   	inc    %ecx
4101d8:	83 38 00             	cmpl   $0x0,(%eax)
4101db:	75 f7                	jne    0x4101d4