I will provide you disassembly from a computer game that runs in MS-DOS. The game was written in C with a Watcom compiler. Some library function calls are already identified. Explain the functions I give to you and suggest names and C-language function signatures for them, including which parameters map to which registers or stack values. Also suggest names for global values if you have enough context to do so.

FUN_0006ce7e
PUSH EBP
MOV EBP,ESP
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
SUB ESP,0x68
MOV dword ptr [EBP + local_20],EAX
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x9f
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
MOV EAX,DAT_001917e4
PUSH EAX
MOV EAX,s_%s%s_00175d60 = "%s%s"
PUSH EAX
LEA EAX=>local_80,[EBP + -0x7c]
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
PUSH 0x200
LEA EAX=>local_80,[EBP + -0x7c]
PUSH EAX
CALL open
ADD ESP,0x8
MOV dword ptr [EBP + local_1c],EAX
CMP word ptr [EBP + local_1c],0x0
JGE LAB_0006cedf
MOV dword ptr [EBP + local_24],0x0
JMP LAB_0006ceef
LAB_0006cedf
MOVSX EAX,word ptr [EBP + local_1c]
CALL __close
MOV dword ptr [EBP + local_24],0x1
LAB_0006ceef
MOV EAX,dword ptr [EBP + local_24]
LEA ESP=>local_18,[EBP + -0x14]
POP EDI
POP ESI
POP EDX
POP ECX
POP EBX
POP EBP
RET

FUN_0006cefc 
PUSH EBP
MOV EBP,ESP
PUSH ECX
PUSH ESI
PUSH EDI
SUB ESP,0x1c
MOV dword ptr [EBP + local_2c],EAX
MOV dword ptr [EBP + local_28],EDX
MOV dword ptr [EBP + local_24],EBX
MOV EBX,0xac
MOV EDX,s_disk.c_00175d00 = "disk.c"
MOV EAX,0x1000
CALL FUN_000a00af
MOV dword ptr [EBP + local_20],EAX
MOV EAX,dword ptr [EBP + local_28]
CALL strlen
ADD EAX,dword ptr [EBP + local_28]
MOV AL,byte ptr [EAX + -0x1]
AND EAX,0xff
CMP EAX,0x5c
JNZ LAB_0006cf6c
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xb0
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_2c]
PUSH EAX
MOV EAX,dword ptr [EBP + local_28]
PUSH EAX
MOV EAX,s_%s%s_00175d60 = "%s%s"
PUSH EAX
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
JMP LAB_0006cf96
LAB_0006cf6c
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xb2
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_2c]
PUSH EAX
MOV EAX,dword ptr [EBP + local_28]
PUSH EAX
MOV EAX,s_%s\%s_00175d65 = "%s\\%s"
PUSH EAX
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
LAB_0006cf96
PUSH 0x200
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL open
ADD ESP,0x8
MOV dword ptr [EBP + local_1c],EAX
CMP dword ptr [EBP + local_1c],-0x1
JNZ LAB_0006cfdf
CMP dword ptr [EBP + local_20],0x0
JZ LAB_0006cfbf
CMP dword ptr [EBP + local_20],0x97979797
JNZ LAB_0006cfc1
LAB_0006cfbf
JMP LAB_0006cfda
LAB_0006cfc1
MOV EBX,0xb8
MOV EDX,s_disk.c_00175d00 = "disk.c"
MOV EAX,dword ptr [EBP + local_20]
CALL FUN_000a0024
MOV dword ptr [EBP + local_20],0x97979797
LAB_0006cfda
JMP LAB_0006d136
LAB_0006cfdf
MOV EAX,dword ptr [EBP + local_24]
CALL strlen
ADD EAX,dword ptr [EBP + local_24]
MOV AL,byte ptr [EAX + -0x1]
AND EAX,0xff
CMP EAX,0x5c
JNZ LAB_0006d023
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xbd
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_2c]
PUSH EAX
MOV EAX,dword ptr [EBP + local_24]
PUSH EAX
MOV EAX,s_%s%s_00175d60 = "%s%s"
PUSH EAX
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
JMP LAB_0006d04d
LAB_0006d023
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xbf
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_2c]
PUSH EAX
MOV EAX,dword ptr [EBP + local_24]
PUSH EAX
MOV EAX,s_%s\%s_00175d65 = "%s\\%s"
PUSH EAX
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
LAB_0006d04d
PUSH 0x180
PUSH 0x262
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL open
ADD ESP,0xc
MOV dword ptr [EBP + local_18],EAX
CMP dword ptr [EBP + local_18],-0x1
JNZ LAB_0006d0a3
CMP dword ptr [EBP + local_20],0x0
JZ LAB_0006d07b
CMP dword ptr [EBP + local_20],0x97979797
JNZ LAB_0006d07d
LAB_0006d07b
JMP LAB_0006d096
LAB_0006d07d
MOV EBX,0xc5
MOV EDX,s_disk.c_00175d00 = "disk.c"
MOV EAX,dword ptr [EBP + local_20]
CALL FUN_000a0024
MOV dword ptr [EBP + local_20],0x97979797
LAB_0006d096
MOV EAX,dword ptr [EBP + local_1c]
CALL __close
JMP LAB_0006d136
LAB_0006d0a3
MOV EBX,LAB_00019000
MOV EDX,dword ptr [DAT_00147954]
MOV EAX,dword ptr [EBP + local_1c]
CALL read
MOV dword ptr [EBP + local_14],EAX
LAB_0006d0b9
CMP dword ptr [EBP + local_14],LAB_00019000
JNZ LAB_0006d0eb
MOV EBX,dword ptr [EBP + local_14]
MOV EDX,dword ptr [DAT_00147954]
MOV EAX,dword ptr [EBP + local_18]
CALL write
MOV EBX,LAB_00019000
MOV EDX,dword ptr [DAT_00147954]
MOV EAX,dword ptr [EBP + local_1c]
CALL read
MOV dword ptr [EBP + local_14],EAX
JMP LAB_0006d0b9
LAB_0006d0eb
MOV EBX,dword ptr [EBP + local_14]
MOV EDX,dword ptr [DAT_00147954]
MOV EAX,dword ptr [EBP + local_18]
CALL write
MOV EAX,dword ptr [EBP + local_18]
CALL __close
MOV EAX,dword ptr [EBP + local_1c]
CALL __close
CMP dword ptr [EBP + local_20],0x0
JZ LAB_0006d11b
CMP dword ptr [EBP + local_20],0x97979797
JNZ LAB_0006d11d
LAB_0006d11b
JMP LAB_0006d136
LAB_0006d11d
MOV EBX,0xd5
MOV EDX,s_disk.c_00175d00 = "disk.c"
MOV EAX,dword ptr [EBP + local_20]
CALL FUN_000a0024
MOV dword ptr [EBP + local_20],0x97979797
LAB_0006d136
LEA ESP=>local_10,[EBP + -0xc]
POP EDI
POP ESI
POP ECX
POP EBP
RET