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_0006cb53
PUSH EBP
MOV EBP,ESP
PUSH EBX
PUSH ECX
PUSH ESI
PUSH EDI
SUB ESP,0x1c
MOV dword ptr [EBP + local_30],EAX
MOV dword ptr [EBP + local_2c],EDX
MOV EAX,dword ptr [EBP + local_2c]
MOV dword ptr [EBP + local_28],EAX
MOV EAX,dword ptr [EBP + local_30]
CALL FUN_0006cd6e
MOV dword ptr [EBP + local_24],EAX
CMP dword ptr [EBP + local_24],0x0
JGE LAB_0006cbac
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x2d
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
MOV EAX,s_Error_opening_the_file_%s._00175d07 = "Error opening the file %s."
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0xc
MOV EAX,DAT_001a41f4
CALL FUN_00050069
LAB_0006cbac
MOV EAX,dword ptr [EBP + local_24]
CALL filelength
MOV [DAT_000c0ba8],EAX
MOV EAX,[DAT_000c0ba8]
MOV dword ptr [EBP + local_20],EAX
CMP dword ptr [EBP + local_28],0x0
JNZ LAB_0006cbdc
MOV EBX,0x34
MOV EDX,s_disk.c_00175d00 = "disk.c"
MOV EAX,dword ptr [EBP + local_20]
CALL FUN_000a00af
MOV dword ptr [EBP + local_28],EAX
LAB_0006cbdc
CMP dword ptr [EBP + local_28],0x0
JNZ LAB_0006cc11
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x38
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
MOV EAX,s_Insufficent_memory_to_read_in_%s_00175d22 = "Insufficent memory to read in %s."
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX=>DAT_001a41f4
CALL FUN_000a0f5c
ADD ESP,0xc
MOV EAX,DAT_001a41f4
CALL FUN_00050069
LAB_0006cc11
PUSH 0x4
PUSH 0x3c
MOV ECX,s_disk.c_00175d00 = "disk.c"
MOV EBX,dword ptr [EBP + local_20]
XOR EDX,EDX
MOV EAX,dword ptr [EBP + local_28]
CALL FUN_000a0040
MOV EBX,dword ptr [EBP + local_20]
MOV EDX,dword ptr [EBP + local_28]
MOV EAX,dword ptr [EBP + local_24]
CALL read
MOV dword ptr [EBP + local_1c],EAX
MOV EAX,dword ptr [EBP + local_1c]
CMP EAX,dword ptr [EBP + local_20]
JZ LAB_0006cc6f
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x41
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
MOV EAX,s_Error_reading_%s_from_disk._00175d44 = "Error reading %s from disk."
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0xc
MOV EAX,DAT_001a41f4
CALL FUN_00050069
LAB_0006cc6f
MOV EAX,dword ptr [EBP + local_24]
CALL __close
MOV EAX,dword ptr [EBP + local_28]
MOV dword ptr [EBP + local_18],EAX
MOV EAX,dword ptr [EBP + local_18]
LEA ESP=>local_14,[EBP + -0x10]
POP EDI
POP ESI
POP ECX
POP EBX
POP EBP
RET

FUN_0006cd6e
PUSH EBP
MOV EBP,ESP
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
SUB ESP,0x8
MOV dword ptr [EBP + local_20],EAX
MOV EAX,dword ptr [EBP + local_20]
CALL FUN_0006d13e
MOV dword ptr [EBP + local_20],EAX
PUSH 0x200
MOV EAX,dword ptr [EBP + local_20]
PUSH EAX
CALL open
ADD ESP,0x8
MOV dword ptr [EBP + local_1c],EAX
MOV EAX,dword ptr [EBP + local_1c]
LEA ESP=>local_18,[EBP + -0x14]
POP EDI
POP ESI
POP EDX
POP ECX
POP EBX
POP EBP
RET

FUN_0006d13e 
PUSH EBP
MOV EBP,ESP
PUSH EBX
PUSH ECX
PUSH EDX
PUSH ESI
PUSH EDI
SUB ESP,0x78
MOV dword ptr [EBP + local_30],EAX
MOV EDX,0x5c
MOV EAX,dword ptr [EBP + local_30]
CALL strchr
TEST EAX,EAX
JZ LAB_0006d170
MOV EAX,dword ptr [EBP + local_30]
MOV AL,byte ptr [EAX + 0x1]
AND EAX,0xff
CMP EAX,0x3a
JNZ LAB_0006d172
LAB_0006d170
JMP LAB_0006d1b7
LAB_0006d172
MOV dword ptr [EBP + local_24],0x0
LAB_0006d179
MOV EAX,dword ptr [EBP + local_30]
ADD EAX,dword ptr [EBP + local_24]
MOV AL,byte ptr [EAX]
AND EAX,0xff
CMP EAX,0x5c
JZ LAB_0006d1a2
MOV EAX,dword ptr [EBP + local_30]
ADD EAX,dword ptr [EBP + local_24]
MOV DL,byte ptr [EAX]
MOV EAX,dword ptr [EBP + local_24]
MOV byte ptr [EAX + EBP*0x1 + -0x3c],DL
MOV EAX,dword ptr [EBP + local_24]
INC dword ptr [EBP + local_24]
JMP LAB_0006d179
LAB_0006d1a2
MOV EAX,dword ptr [EBP + local_24]
INC dword ptr [EBP + local_24]
MOV byte ptr [EAX + EBP*0x1 + -0x3c],0x5c
MOV EAX,dword ptr [EBP + local_24]
MOV byte ptr [EAX + EBP*0x1 + -0x3c],0x0
JMP LAB_0006d1bb
LAB_0006d1b7
MOV byte ptr [EBP + local_40],0x0
LAB_0006d1bb
MOV EAX,dword ptr [EBP + local_30]
MOV dword ptr [EBP + local_28],EAX
MOV EAX,dword ptr [EBP + local_30]
CALL strlen
DEC EAX
ADD dword ptr [EBP + local_30],EAX
LAB_0006d1cd
MOV EAX,dword ptr [EBP + local_30]
MOV AL,byte ptr [EAX]
AND EAX,0xff
CMP EAX,0x5c
JZ LAB_0006d1e4
MOV EAX,dword ptr [EBP + local_30]
CMP EAX,dword ptr [EBP + local_28]
JNZ LAB_0006d1e6
LAB_0006d1e4
JMP LAB_0006d1ee
LAB_0006d1e6
MOV EAX,dword ptr [EBP + local_30]
DEC dword ptr [EBP + local_30]
JMP LAB_0006d1cd
LAB_0006d1ee
MOV EAX,dword ptr [EBP + local_30]
MOV AL,byte ptr [EAX]
AND EAX,0xff
CMP EAX,0x5c
JNZ LAB_0006d203
MOV EAX,dword ptr [EBP + local_30]
INC dword ptr [EBP + local_30]
LAB_0006d203
MOV EBX,0x3
MOV EDX,s_atf_00175d6b = "atf"
MOV EAX,dword ptr [EBP + local_30]
CALL strlen
SUB EAX,0x3
ADD EAX,dword ptr [EBP + local_30]
CALL strnicmp
TEST EAX,EAX
JNZ LAB_0006d25e
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xf6
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
MOV EAX,DAT_001917e4
PUSH EAX
MOV EAX,s_%s%s_00175d60 = "%s%s"
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
MOV dword ptr [EBP + local_1c],DAT_001a41f4
JMP LAB_0006d423
LAB_0006d25e
MOV EBX,0x3
MOV EDX,s_amf_00175d6f = "amf"
MOV EAX,dword ptr [EBP + local_30]
CALL strlen
SUB EAX,0x3
ADD EAX,dword ptr [EBP + local_30]
CALL strnicmp
TEST EAX,EAX
JNZ LAB_0006d2b9
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0xfc
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
MOV EAX,DAT_001917e4
PUSH EAX
MOV EAX,s_%s%s_00175d60 = "%s%s"
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x10
MOV dword ptr [EBP + local_1c],DAT_001a41f4
JMP LAB_0006d423
LAB_0006d2b9
MOV EAX,[DAT_001a4a00]
MOV dword ptr [EBP + local_28],EAX
MOV dword ptr [EBP + local_24],0x0
LAB_0006d2c8
MOV EAX,dword ptr [EBP + local_24]
CMP EAX,dword ptr [DAT_001a4a08]
JL LAB_0006d2e0
JMP LAB_0006d3ea
LAB_0006d2d8
MOV EAX,dword ptr [EBP + local_24]
INC dword ptr [EBP + local_24]
JMP LAB_0006d2c8
LAB_0006d2e0
MOV EDX,dword ptr [EBP + local_28]
MOV EAX,dword ptr [EBP + local_30]
CALL stricmp
TEST EAX,EAX
 JNZ LAB_0006d3d9
MOV EAX,dword ptr [EBP + local_28]
SUB EAX,dword ptr [DAT_001a4a00]
MOV dword ptr [EBP + local_20],EAX
MOV byte ptr [EBP + local_90],0x0
MOV EAX,[DAT_001a49f8]
MOV dword ptr [EBP + local_28],EAX
LAB_0006d30e
MOV EAX,dword ptr [EBP + local_28]
CALL strlen
ADD EAX,dword ptr [EBP + local_28]
MOV EAX,dword ptr [EAX + 0x1]
MOV dword ptr [EBP + local_2c],EAX
MOV EAX,dword ptr [EBP + local_20]
CMP EAX,dword ptr [EBP + local_2c]
JGE LAB_0006d3a9
CMP byte ptr [EBP + local_90],0x0
JNZ LAB_0006d36b
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x10d
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
LEA EAX=>local_90,[EBP + 0xffffff74]
PUSH EAX
MOV EAX,DAT_001917e4
PUSH EAX
MOV EAX,s_%s%s%s_00175d73 = "%s%s%s"
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x14
JMP LAB_0006d3a0
LAB_0006d36b
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x10f
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
LEA EAX=>local_90,[EBP + 0xffffff74]
PUSH EAX
MOV EAX,DAT_001917e4
PUSH EAX
MOV EAX,s_%s%s\%s_00175d7a = "%s%s\\%s"
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x14
LAB_0006d3a0
MOV dword ptr [EBP + local_1c],DAT_001a41f4
JMP LAB_0006d423
LAB_0006d3a9
PUSH 0x112
MOV ECX,s_disk.c_00175d00 = "disk.c"
MOV EBX,0x50
MOV EDX,dword ptr [EBP + local_28]
LEA EAX=>local_90,[EBP + 0xffffff74]
CALL FUN_000a0ad9
MOV EAX,dword ptr [EBP + local_28]
CALL strlen
ADD EAX,0x5
ADD dword ptr [EBP + local_28],EAX
JMP LAB_0006d30e
LAB_0006d3d9
MOV EAX,dword ptr [EBP + local_28]
CALL strlen
INC EAX
ADD dword ptr [EBP + local_28],EAX
JMP LAB_0006d2d8
LAB_0006d3ea
MOV EAX,s_disk.c_00175d00 = "disk.c"
PUSH EAX
PUSH 0x119
CALL FUN_000a0ed9
MOV EAX,dword ptr [EBP + local_30]
PUSH EAX
LEA EAX=>local_40,[EBP + -0x3c]
PUSH EAX
MOV EAX,DAT_00191834
PUSH EAX
MOV EAX,s_%s%s%s_00175d73 = "%s%s%s"
PUSH EAX
MOV EAX,DAT_001a41f4
PUSH EAX
CALL FUN_000a0f5c
ADD ESP,0x14
MOV dword ptr [EBP + local_1c],DAT_001a41f4
LAB_0006d423
MOV EAX=>DAT_001a41f4,dword ptr [EBP + local_1c]
8d 65 ec LEA ESP=>local_18,[EBP + -0x14]
5f POP EDI
5e POP ESI
5a POP EDX
59 POP ECX
5b POP EBX
5d POP EBP
c3 RET