コード:
.file "c_saitan.c"
.text
.globl _fopen_s
.def _fopen_s; .scl 2; .type 32; .endef
_fopen_s:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
movl 16(%ebp), %eax
movl %eax, 4(%esp)
movl 12(%ebp), %eax
movl %eax, (%esp)
call _fopen
movl 8(%ebp), %edx
movl %eax, (%edx)
movl 8(%ebp), %eax
movl (%eax), %eax
testl %eax, %eax
je L2
movl $0, %eax
jmp L3
L2:
movl $1, %eax
L3:
leave
ret
.globl _strtok_s
.def _strtok_s; .scl 2; .type 32; .endef
_strtok_s:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
movl 12(%ebp), %eax
movl %eax, 4(%esp)
movl 8(%ebp), %eax
movl %eax, (%esp)
call _strtok
leave
ret
.section .rdata,"dr"
LC0:
.ascii "test.txt\0"
LC1:
.ascii "r\0"
LC2:
.ascii "%s \202\252\212J\202\257\202\334\202\271\202\361\201B\12\0"
LC3:
.ascii "\12\0"
LC4:
.ascii " \12\0"
.text
.globl _readweight
.def _readweight; .scl 2; .type 32; .endef
_readweight:
pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %ebx
subl $1072, %esp
movl $LC0, -16(%ebp)
movl $LC1, 8(%esp)
movl -16(%ebp), %eax
movl %eax, 4(%esp)
leal -48(%ebp), %eax
movl %eax, (%esp)
call _fopen_s
movl %eax, -20(%ebp)
cmpl $0, -20(%ebp)
je L6
movl -16(%ebp), %eax
movl %eax, 4(%esp)
movl $LC2, (%esp)
call _printf
movl $1, (%esp)
call _exit
L6:
movl -48(%ebp), %eax
movl %eax, 8(%esp)
movl $1000, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _fgets
leal -1052(%ebp), %eax
movl %eax, 8(%esp)
movl $LC3, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _strtok_s
addl $2, %eax
movl %eax, (%esp)
call _atoi
movl 8(%ebp), %edx
movl %eax, (%edx)
movl 12(%ebp), %eax
movl $1, (%eax)
movl 16(%ebp), %eax
movl $2, (%eax)
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -24(%ebp)
movl -24(%ebp), %eax
imull -24(%ebp), %eax
movl %eax, -28(%ebp)
movl -28(%ebp), %eax
sall $2, %eax
movl %eax, (%esp)
call _malloc
movl %eax, -32(%ebp)
movl $0, -12(%ebp)
jmp L7
L8:
movl -12(%ebp), %eax
sall $2, %eax
addl -32(%ebp), %eax
movl $2147483647, (%eax)
incl -12(%ebp)
L7:
movl -12(%ebp), %eax
cmpl -28(%ebp), %eax
jl L8
movl -48(%ebp), %eax
movl %eax, 8(%esp)
movl $1000, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _fgets
leal -1052(%ebp), %eax
movl %eax, 8(%esp)
movl $LC4, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _strtok_s
addl $2, %eax
movl %eax, (%esp)
call _atoi
movl %eax, -36(%ebp)
jmp L9
L10:
leal -1052(%ebp), %eax
movl %eax, 8(%esp)
movl $LC4, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _strtok_s
movl %eax, (%esp)
call _atoi
movl %eax, -40(%ebp)
leal -1052(%ebp), %eax
movl %eax, 8(%esp)
movl $LC4, 4(%esp)
movl $0, (%esp)
call _strtok_s
movl %eax, (%esp)
call _atoi
movl %eax, -44(%ebp)
movl -40(%ebp), %eax
decl %eax
imull -24(%ebp), %eax
addl -44(%ebp), %eax
decl %eax
sall $2, %eax
movl %eax, %esi
addl -32(%ebp), %esi
movl -44(%ebp), %eax
decl %eax
imull -24(%ebp), %eax
addl -40(%ebp), %eax
decl %eax
sall $2, %eax
movl %eax, %ebx
addl -32(%ebp), %ebx
leal -1052(%ebp), %eax
movl %eax, 8(%esp)
movl $LC4, 4(%esp)
movl $0, (%esp)
call _strtok_s
movl %eax, (%esp)
call _atoi
movl %eax, (%ebx)
movl (%ebx), %eax
movl %eax, (%esi)
L9:
movl -48(%ebp), %eax
movl %eax, 8(%esp)
movl $1000, 4(%esp)
leal -1048(%ebp), %eax
movl %eax, (%esp)
call _fgets
testl %eax, %eax
jne L10
movl -48(%ebp), %eax
movl %eax, (%esp)
call _fclose
movl -32(%ebp), %eax
addl $1072, %esp
popl %ebx
popl %esi
leave
ret
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC5:
.ascii "\221\215\212\207\225\\\0"
LC6:
.ascii "\223_ \222\274\221O\202\314\223_ \215\305\222Z\213\227\227\243\0"
LC7:
.ascii "%2d%10d%10d\12\0"
LC8:
.ascii "\223_%d-\223_%d \212\324\202\314\215\305\223K\214o\230H\12\0"
LC9:
.ascii "%d\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
pushl %ebx
subl $92, %esp
call ___main
leal 28(%esp), %eax
movl %eax, 8(%esp)
leal 32(%esp), %eax
movl %eax, 4(%esp)
leal 24(%esp), %eax
movl %eax, (%esp)
call _readweight
movl %eax, 60(%esp)
movl 24(%esp), %eax
incl %eax
sall $2, %eax
movl %eax, (%esp)
call _malloc
movl %eax, 56(%esp)
movl 24(%esp), %eax
incl %eax
sall $2, %eax
movl %eax, (%esp)
call _malloc
movl %eax, 52(%esp)
movl 24(%esp), %eax
incl %eax
sall $2, %eax
movl %eax, (%esp)
call _malloc
movl %eax, 48(%esp)
movl 24(%esp), %eax
incl %eax
sall $2, %eax
movl %eax, (%esp)
call _malloc
movl %eax, 44(%esp)
movl $1, 76(%esp)
jmp L12
L13:
movl 76(%esp), %eax
sall $2, %eax
addl 52(%esp), %eax
movl $0, (%eax)
movl 76(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl $2147483647, (%eax)
incl 76(%esp)
L12:
movl 24(%esp), %eax
cmpl %eax, 76(%esp)
jle L13
movl 32(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl $0, (%eax)
movl 32(%esp), %eax
sall $2, %eax
addl 48(%esp), %eax
movl $-1, (%eax)
movl 32(%esp), %eax
movl %eax, 68(%esp)
L19:
movl 68(%esp), %eax
movl %eax, 76(%esp)
movl 76(%esp), %eax
sall $2, %eax
addl 52(%esp), %eax
movl $1, (%eax)
movl $2147483647, 64(%esp)
movl $1, 72(%esp)
jmp L14
L18:
movl 72(%esp), %eax
sall $2, %eax
addl 52(%esp), %eax
movl (%eax), %eax
testl %eax, %eax
jne L28
L15:
movl 76(%esp), %eax
leal -1(%eax), %edx
movl 24(%esp), %eax
imull %edx, %eax
addl 72(%esp), %eax
decl %eax
sall $2, %eax
addl 60(%esp), %eax
movl (%eax), %eax
cmpl $2147483647, %eax
setne %al
movzbl %al, %eax
movl %eax, 40(%esp)
movl 76(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %edx
movl 76(%esp), %eax
leal -1(%eax), %ecx
movl 24(%esp), %eax
imull %ecx, %eax
addl 72(%esp), %eax
decl %eax
sall $2, %eax
addl 60(%esp), %eax
movl (%eax), %eax
addl %eax, %edx
movl 72(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %eax
cmpl %eax, %edx
setl %al
movzbl %al, %eax
movl %eax, 36(%esp)
cmpl $0, 40(%esp)
je L17
cmpl $0, 36(%esp)
je L17
movl 76(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %eax
cmpl $2147483647, %eax
je L17
movl 72(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl 76(%esp), %edx
sall $2, %edx
addl 56(%esp), %edx
movl (%edx), %ecx
movl 76(%esp), %edx
leal -1(%edx), %ebx
movl 24(%esp), %edx
imull %ebx, %edx
addl 72(%esp), %edx
decl %edx
sall $2, %edx
addl 60(%esp), %edx
movl (%edx), %edx
leal (%ecx,%edx), %edx
movl %edx, (%eax)
movl 72(%esp), %eax
sall $2, %eax
addl 48(%esp), %eax
movl 76(%esp), %edx
movl %edx, (%eax)
L17:
movl 72(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %eax
cmpl 64(%esp), %eax
jge L16
movl 72(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %eax
movl %eax, 64(%esp)
movl 72(%esp), %eax
movl %eax, 68(%esp)
jmp L16
L28:
nop
L16:
incl 72(%esp)
L14:
movl 24(%esp), %eax
cmpl %eax, 72(%esp)
jle L18
cmpl $2147483647, 64(%esp)
jne L19
movl $LC5, (%esp)
call _puts
movl $LC6, (%esp)
call _puts
movl $1, 76(%esp)
movl 76(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %eax
movl %eax, 12(%esp)
movl 76(%esp), %eax
movl %eax, 8(%esp)
movl 76(%esp), %eax
movl %eax, 4(%esp)
movl $LC7, (%esp)
call _printf
movl $1, 76(%esp)
jmp L20
L22:
movl 32(%esp), %eax
cmpl %eax, 76(%esp)
je L21
movl 76(%esp), %eax
sall $2, %eax
addl 52(%esp), %eax
movl (%eax), %eax
testl %eax, %eax
je L21
movl 76(%esp), %eax
sall $2, %eax
addl 56(%esp), %eax
movl (%eax), %edx
movl 76(%esp), %eax
sall $2, %eax
addl 48(%esp), %eax
movl (%eax), %eax
movl %edx, 12(%esp)
movl %eax, 8(%esp)
movl 76(%esp), %eax
movl %eax, 4(%esp)
movl $LC7, (%esp)
call _printf
L21:
incl 76(%esp)
L20:
movl 24(%esp), %eax
cmpl %eax, 76(%esp)
jle L22
movl 28(%esp), %edx
movl 32(%esp), %eax
movl %edx, 8(%esp)
movl %eax, 4(%esp)
movl $LC8, (%esp)
call _printf
movl 28(%esp), %eax
movl %eax, 76(%esp)
movl $1, 72(%esp)
jmp L23
L24:
movl 72(%esp), %eax
sall $2, %eax
addl 44(%esp), %eax
movl 76(%esp), %edx
movl %edx, (%eax)
incl 72(%esp)
movl 76(%esp), %eax
sall $2, %eax
addl 48(%esp), %eax
movl (%eax), %eax
movl %eax, 76(%esp)
L23:
cmpl $0, 76(%esp)
jg L24
jmp L25
L27:
movl 72(%esp), %eax
sall $2, %eax
addl 44(%esp), %eax
movl (%eax), %eax
movl %eax, 4(%esp)
movl $LC9, (%esp)
call _printf
cmpl $1, 72(%esp)
jle L26
movl $45, (%esp)
call _putchar
jmp L25
L26:
movl $10, (%esp)
call _putchar
L25:
decl 72(%esp)
cmpl $0, 72(%esp)
jg L27
movl 60(%esp), %eax
movl %eax, (%esp)
call _free
movl 56(%esp), %eax
movl %eax, (%esp)
call _free
movl 52(%esp), %eax
movl %eax, (%esp)
call _free
movl 48(%esp), %eax
movl %eax, (%esp)
call _free
movl 44(%esp), %eax
movl %eax, (%esp)
call _free
movl $0, %eax
addl $92, %esp
popl %ebx
leave
ret
.def _fopen; .scl 2; .type 32; .endef
.def _strtok; .scl 2; .type 32; .endef
.def _printf; .scl 2; .type 32; .endef
.def _exit; .scl 2; .type 32; .endef
.def _fgets; .scl 2; .type 32; .endef
.def _atoi; .scl 2; .type 32; .endef
.def _malloc; .scl 2; .type 32; .endef
.def _fclose; .scl 2; .type 32; .endef
.def _puts; .scl 2; .type 32; .endef
.def _putchar; .scl 2; .type 32; .endef
.def _free; .scl 2; .type 32; .endef