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. Also suggest names for global values when you have enough context to do so. As I provide more information, please revise your explanations and suggestions as necessary.

FUN_00011a6b
PUSH EBP
MOV EBP,ESP
PUSH ESI
PUSH EDI
SUB ESP,0x8
PUSH 0x4d
MOV ECX,s_profile.c_00170129 = "profile.c"
MOV EBX,0x4
MOV EDX,dword ptr [EBP + Stack[0x8]]
MOV EAX,dword ptr [EBP + Stack[0x4]]
ADD EAX,0x4
CALL FUN_000a0ad9
PUSH 0x200
MOV EAX,dword ptr [EBP + Stack[0x8]]
PUSH EAX
CALL open
ADD ESP,0x8
MOV dword ptr [EBP + local_14],EAX
CMP dword ptr [EBP + local_14],-0x1
JNZ LAB_00011ab6
MOV dword ptr [EBP + local_10],0x0
JMP LAB_00011c1a
LAB_00011ab6
MOV EBX,0x2
XOR EDX,EDX
MOV EAX,dword ptr [EBP + local_14]
CALL lseek
MOV EDX,EAX
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x88],EDX
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EAX,dword ptr [EAX + 0x88]
ADD EAX,0x400
MOV EDX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EDX + 0x8c],EAX
XOR EBX,EBX
XOR EDX,EDX
MOV EAX,dword ptr [EBP + local_14]
CALL lseek
MOV EBX,0x5e
MOV EDX,s_profile.c_00170129 = "profile.c"
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EAX,dword ptr [EAX + 0x8c]
CALL FUN_000a00af
MOV EDX,EAX
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x84],EDX
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EAX,dword ptr [EAX + 0x84]
TEST EAX,EAX
JNZ LAB_00011b37
MOV EAX,dword ptr [EBP + local_14]
CALL __close
MOV dword ptr [EBP + local_10],0x0
JMP LAB_00011c1a
LAB_00011b37
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EBX,dword ptr [EAX + 0x88]
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EDX,dword ptr [EAX + 0x84]
MOV EAX,dword ptr [EBP + local_14]
CALL read
MOV EDX,EAX
MOV EAX,dword ptr [EBP + Stack[0x4]]
CMP EDX,dword ptr [EAX + 0x88]
JZ LAB_00011bb1
MOV EAX,dword ptr [EBP + local_14]
CALL __close
MOV EAX,dword ptr [EBP + Stack[0x4]]
CMP dword ptr [EAX + 0x84],0x0
JZ LAB_00011b81
MOV EAX,dword ptr [EBP + Stack[0x4]]
CMP dword ptr [EAX + 0x84],0x97979797
JNZ LAB_00011b83
LAB_00011b81
JMP LAB_00011ba8
LAB_00011b83
MOV EBX,0x6e
MOV EDX,s_profile.c_00170129 = "profile.c"
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EAX,dword ptr [EAX + 0x84]
CALL FUN_000a0024
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x84],0x97979797
LAB_00011ba8
MOV dword ptr [EBP + local_10],0x0
JMP LAB_00011c1a
LAB_00011bb1
MOV EAX,dword ptr [EBP + local_14]
CALL __close
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV EDX,dword ptr [EAX + 0x84]
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x90],EDX
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x94],0x0
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0xa0],0x0
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0xa4],0x0
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0x9c],0x0
MOV EAX,dword ptr [EBP + Stack[0x4]]
MOV dword ptr [EAX + 0xa8],0x0
MOV EAX,dword ptr [EBP + Stack[0x4]]
AND byte ptr [EAX + 0x1],0x7f
MOV dword ptr [EBP + local_10],0x1
LAB_00011c1a
MOV EAX,dword ptr [EBP + local_10]
LEA ESP=>local_c,[EBP + -0x8]
POP EDI
POP ESI
POP EBP
RET