user: 请从给定的汇编指令推导出C源代码：

```asm
<dual_simplex_method>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x88,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %esi,-0x7c(%rbp)
  mov    %edx,-0x80(%rbp)
  mov    %rcx,-0x88(%rbp)
  mov    %r8,-0x90(%rbp)
  movl   $0x0,-0x6c(%rbp)
  movl   $0x0,-0x68(%rbp)
  mov    -0x7c(%rbp),%eax
  add    $0x1,%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x30(%rbp)
  movl   $0x0,-0x64(%rbp)
  jmp    L160
L66:
  mov    -0x80(%rbp),%eax
  add    $0x1,%eax
  cltq
  shl    $0x3,%rax
  mov    -0x64(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x30(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,(%rbx)
  addl   $0x1,-0x64(%rbp)
L160:
  mov    -0x7c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jge    L66
  movsd  D71(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movl   $0x0,-0x64(%rbp)
  jmp    L444
L458:
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  -0x40(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L395
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L395
  movl   $0x1,-0x6c(%rbp)
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x64(%rbp),%eax
  mov    %eax,-0x68(%rbp)
L395:
  addl   $0x1,-0x64(%rbp)
L444:
  mov    -0x64(%rbp),%eax
  cmp    -0x7c(%rbp),%eax
  jl     L458
  mov    -0x68(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  movsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  cmpl   $0x0,-0x6c(%rbp)
  jne    L326
  mov    $0x1,%eax
  jmp    L413
L326:
  movl   $0x0,-0x60(%rbp)
  movsd  D103(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movl   $0x0,-0x6c(%rbp)
  movl   $0x0,-0x64(%rbp)
  jmp    L464
L372:
  mov    -0x7c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x64(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x64(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movq   D51(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L451
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x64(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  jbe    L451
  mov    -0x7c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x64(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x64(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  divsd  %xmm1,%xmm0
  movq   D51(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x64(%rbp),%eax
  mov    %eax,-0x60(%rbp)
L451:
  addl   $0x1,-0x64(%rbp)
L464:
  mov    -0x64(%rbp),%eax
  cmp    -0x80(%rbp),%eax
  jl     L372
  movsd  -0x38(%rbp),%xmm0
  ucomisd D103(%rip),%xmm0
  jp     L44
  movsd  -0x38(%rbp),%xmm0
  ucomisd D103(%rip),%xmm0
  jne    L44
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x2,%eax
  jmp    L413
L44:
  mov    -0x60(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x60(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x44(%rbp)
  mov    -0x60(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    -0x4c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x90(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x60(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rax,%rdx
  mov    -0x44(%rbp),%eax
  mov    %eax,(%rdx)
  movl   $0x0,-0x64(%rbp)
  jmp    L430
L396:
  movl   $0x0,-0x5c(%rbp)
  jmp    L244
L50:
  mov    -0x64(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jne    L384
  mov    -0x5c(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jne    L384
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  D161(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  jmp    L136
L384:
  mov    -0x64(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  jne    L234
  mov    -0x5c(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  je     L234
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  divsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L136
L234:
  mov    -0x5c(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jne    L398
  mov    -0x64(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  je     L398
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D11(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  divsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L136
L398:
  mov    -0x5c(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  je     L136
  mov    -0x64(%rbp),%eax
  cmp    -0x4c(%rbp),%eax
  je     L136
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x60(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x5c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  -0x18(%rbp),%xmm0
  divsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L136:
  addl   $0x1,-0x5c(%rbp)
L244:
  mov    -0x80(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jge    L50
  addl   $0x1,-0x64(%rbp)
L430:
  mov    -0x7c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jge    L396
  movl   $0x0,-0x64(%rbp)
  jmp    L280
L137:
  movl   $0x0,-0x58(%rbp)
  jmp    L376
L243:
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x58(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x78(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x58(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x58(%rbp)
L376:
  mov    -0x80(%rbp),%eax
  cmp    -0x58(%rbp),%eax
  jge    L243
  addl   $0x1,-0x64(%rbp)
L280:
  mov    -0x7c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jge    L137
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x50(%rbp)
  jmp    L440
L106:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    $0xa,%eax
  cmp    $0x9,%eax
  ja     L35
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x1(%rdx),%eax
  mov    %eax,%esi
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L22
L35:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    $0x14,%eax
  cmp    $0x9,%eax
  ja     L22
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x1(%rdx),%eax
  mov    %eax,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L22:
  addl   $0x1,-0x50(%rbp)
L440:
  mov    -0x50(%rbp),%eax
  cmp    -0x80(%rbp),%eax
  jl     L106
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x54(%rbp)
  jmp    L323
L57:
  movl   $0x0,-0x50(%rbp)
  jmp    L90
L15:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  addl   $0x1,-0x50(%rbp)
L90:
  mov    -0x80(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jge    L15
  mov    -0x54(%rbp),%eax
  cmp    -0x7c(%rbp),%eax
  jne    L445
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L289
L445:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cmp    $0x1,%eax
  je     L365
  cmp    $0x2,%eax
  je     L36
  jmp    L289
L365:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x1(%rdx),%eax
  mov    %eax,%esi
  lea    D120(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L289
L36:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x1(%rdx),%eax
  mov    %eax,%esi
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L289:
  addl   $0x1,-0x54(%rbp)
L323:
  mov    -0x7c(%rbp),%eax
  cmp    -0x54(%rbp),%eax
  jge    L57
  mov    $0x0,%eax
L413:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D71
datatype: f64
name: disassemble_data
arguments: data_tag: D103
datatype: f64
name: disassemble_data
arguments: data_tag: D51
datatype: qword
name: disassemble_data
arguments: data_tag: D97
datatype: string
name: disassemble_data
arguments: data_tag: D161
datatype: byte[8]
name: disassemble_data
arguments: data_tag: D11
datatype: byte[8]
name: disassemble_data
arguments: data_tag: D152
datatype: string
name: disassemble_data
arguments: data_tag: D45
datatype: string
name: disassemble_data
arguments: data_tag: D60
datatype: string
name: disassemble_data
arguments: data_tag: D29
datatype: string
name: disassemble_data
arguments: data_tag: D157
datatype: string
name: disassemble_data
arguments: data_tag: D55
datatype: string
name: disassemble_data
arguments: data_tag: D120
datatype: string
name: disassemble_data
arguments: data_tag: D89
datatype: string

tool: D71: 100

tool: D103: 10000

tool: D51: 9223372036854775807

tool: D97: The solution is unbounded

tool: {"D161": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D11": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

tool: D152: 
Table: 

tool: D45: X%d		

tool: D60: Z%d		

tool: D29: 1

tool: D157: %lf	

tool: D55: Z

tool: D120: X%d


tool: D89: Z%d


assistant: ```c
int dual_simplex_method(double **T, int no_of_eqns, int no_of_variables, int *column, int *row) {
  int flag = 0, mp = 0, i;
  double **A;
  A = (double **)malloc((no_of_eqns + 1) * sizeof(double *));
  for (i = 0; i < no_of_eqns + 1; i++) {
    A[i] = (double *)malloc((no_of_variables + 1) * sizeof(double));
  }
  double min = 100;
  for (i = 0; i < no_of_eqns; i++) {
    if (T[i][no_of_variables] < min && T[i][no_of_variables] < 0) {
      flag = 1;
      min = T[i][no_of_variables];
      mp = i;
    }
  }
  int most_negative_row = mp, pivot_column;
  double most_negative_value = min, pivot_value;
  if (flag == 0) {
    return 1;
  } else {
    int min_ratio_column = 0;
    double min_ratio = 10000;
    flag = 0;
    for (i = 0; i < no_of_variables; i++) {
      if (fabs(T[no_of_eqns][i] / T[most_negative_row][i]) < min_ratio && T[most_negative_row][i] < 0) {
        min_ratio = fabs(T[no_of_eqns][i] / T[most_negative_row][i]);
        min_ratio_column = i;
      }
    }
    if (min_ratio == 10000) {
      printf("The solution is unbounded\n");
      return 2;
    } else {
      pivot_column = min_ratio_column;
      pivot_value = T[most_negative_row][min_ratio_column];
      int temp1 = row[most_negative_row];
      row[most_negative_row] = column[min_ratio_column];
      column[min_ratio_column] = temp1;
      for (i = 0; i < no_of_eqns + 1; i++) {
        int j;
        for (j = 0; j < no_of_variables + 1; j++) {
          if (i == most_negative_row && j == min_ratio_column) {
            A[i][j] = 1 / T[i][j];
          } else if (i == most_negative_row && j != min_ratio_column) {
            A[i][j] = T[i][j] / pivot_value;
          } else if (j == min_ratio_column && i != most_negative_row) {
            A[i][j] = -T[i][j] / pivot_value;
          } else if (j != min_ratio_column && i != most_negative_row) {
            double temp = T[i][j] * pivot_value - T[most_negative_row][j] * T[i][min_ratio_column];
            A[i][j] = temp / ((double)pivot_value);
          }
        }
      }
    }
  }
  for (i = 0; i < no_of_eqns + 1; i++) {
    int j;
    for (j = 0; j < no_of_variables + 1; j++) {
      T[i][j] = A[i][j];
    }
  }
  printf("\nTable: \n");
  int k, l;
  for (l = 0; l < no_of_variables; l++) {
    if (column[l] / 10 == 1) {
      printf("X%d\t\t", (column[l] % 10) + 1);
    } else if (column[l] / 10 == 2) {
      printf("Z%d\t\t", (column[l] % 10) + 1);
    }
  }
  printf("1\n");
  for (k = 0; k < no_of_eqns + 1; k++) {
    for (l = 0; l < no_of_variables + 1; l++) {
      printf("%lf\t", T[k][l]);
    }
    if (k == no_of_eqns) {
      printf("Z\n");
    } else {
      switch (row[k] / 10) {
      case 1:
        printf("X%d\n", (row[k] % 10) + 1);
        break;
      case 2:
        printf("Z%d\n", (row[k] % 10) + 1);
        break;
      }
    }
  }
  return 0;
}
```