Function at 0x401cf0
Capabilities:
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x64]
lea eax, [edx*4]
mov dword [esp + 0x14], edx
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov edx, dword [esp + 0x14]
cmp edx, 1
mov dword [esp + 0x20], eax
jle 0x401e60
mov dword [esp + 0x24], 1
mov ebx, 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x28], 0x78
mov dword [esp + 0x2c], edx
jmp 0x401d65
add ebx, 1
mov dword [esp + 0x1c], 1
cmp dword [esp + 0x2c], ebx
jle 0x401e50
mov eax, dword [ebp + ebx*4]
mov edi, str._length
mov ecx, 8
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x401d86
lea ecx, [ebx + 1]
cmp dword [esp + 0x2c], ecx
jg 0x401f07
mov esi, eax
mov ecx, 9
mov edi, str._version
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
je 0x401f24
mov ecx, 3
mov esi, eax
mov edi, 0x58f267
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
je 0x401f24
mov ecx, 5
mov esi, eax
mov edi, str._raw
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
je 0x401d50
mov ecx, 6
mov esi, eax
mov edi, str._algo
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
jne 0x401ec0
lea ecx, [ebx + 1]
cmp dword [esp + 0x2c], ecx
jle 0x401f20
mov eax, dword [ebp + ecx*4]
mov edi, str.test1
mov ecx, 6
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
jne 0x401f43
add ebx, 2
cmp dword [esp + 0x2c], ebx
mov dword [esp + 0x24], 0
jg 0x401d65
lea esi, [esi]
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
test ebx, ebx
jne 0x401fc0
mov eax, dword [ebp]
mov dword [esp], str.usage:__s__OPTIONS__FILE..._n_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_printf
mov dword [esp], str.Options:
call sub.msvcrt.dll_puts
mov dword [esp], str.___version______print_version_information
call sub.msvcrt.dll_puts
mov dword [esp], str.___length_SECS__length_of_the_audio_data_used_for_fingerprint_calculation__default_120_
call sub.msvcrt.dll_puts
mov dword [esp], str.___raw__________output_the_raw_uncompressed_fingerprint
call sub.msvcrt.dll_puts
mov dword [esp], str.___algo_NAME____version_of_the_fingerprint_algorithm
call sub.msvcrt.dll_puts
add esp, 0x4c
mov eax, 2
pop ebx
pop esi
pop edi
pop ebp
ret
add ebx, 1
mov ecx, 5
mov esi, eax
mov edi, str._set
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
jne 0x401ef0
cmp dword [esp + 0x2c], ebx
jle 0x401ef0
add ebx, 1
jmp 0x401d5b
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov dword [ecx + edx*4], eax
add edx, 1
mov dword [esp + 0x18], edx
jmp 0x401d5b
mov eax, dword [ebp + ecx*4]
add ebx, 2
mov dword [esp], eax
call sub.msvcrt.dll_atoi
mov dword [esp + 0x28], eax
jmp 0x401d5b
mov ebx, ecx
jmp 0x401ec3
call fcn.004022b0
mov dword [esp], str.fpcalc_version__s_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_printf
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, 6
mov esi, eax
mov edi, str.test2
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
jne 0x401f70
add ebx, 2
mov dword [esp + 0x24], 1
jmp 0x401d5b
mov ecx, 6
mov esi, eax
mov edi, str.test3
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
je 0x401fb0
mov edi, str.test4
mov ecx, 6
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x402215
add ebx, 2
mov dword [esp + 0x24], 3
jmp 0x401d5b
add ebx, 2
mov dword [esp + 0x24], 2
jmp 0x401d5b
mov dword [esp + 0x14], edx
mov ebx, 1
call fcn.004190d0
mov dword [esp], 0x10
call fcn.00539c70
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004022c0
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], str._set
mov dword [esp + 0x24], eax
mov esi, dword [ebp + ebx*4]
mov ecx, 5
mov edi, dword [esp + 0x2c]
repe cmpsb byte [esi], byte es:[edi]
jne 0x4021a2
add ebx, 1
cmp edx, ebx
jg 0x402158
mov dword [esp + 0x2c], 0
xor edi, edi
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x34]
mov ebx, dword [eax + edi*4]
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], edx
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00401550
test eax, eax
je 0x4021b2
test edi, edi
je 0x40205f
mov dword [esp], 0xa
call sub.msvcrt.dll_putchar
mov dword [esp + 4], ebx
mov dword [esp], str.FILE_s_n
call sub.msvcrt.dll_printf
mov eax, dword [esp + 0x34]
mov dword [esp], str.DURATION_d_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_printf
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4021d8
lea eax, [esp + 0x38]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.00402ab0
test eax, eax
je 0x4021b2
mov dword [esp], str.FINGERPRINT
call sub.msvcrt.dll_printf
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x402103
xor esi, esi
xor ebx, ebx
mov ebp, 0x58f253
add ebx, 1
cmp eax, ebx
mov eax, 0x58f255
cmovg eax, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + esi]
add esi, 4
mov dword [esp], str._d_s
mov dword [esp + 4], eax
call sub.msvcrt.dll_printf
mov eax, dword [esp + 0x30]
cmp eax, ebx
jg 0x4020d0
mov dword [esp], 0xa
call sub.msvcrt.dll_putchar
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.00403270
nop
lea esi, [esi]
add edi, 1
cmp edi, dword [esp + 0x18]
jl 0x402020
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.00402480
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.0056e1a0
mov edx, dword [esp + 0x2c]
xor eax, eax
test edx, edx
setne al
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [ebp + ebx*4]
mov dword [esp + 4], 0x3d
mov dword [esp + 0x14], edx
mov dword [esp], esi
call sub.msvcrt.dll_strchr
mov edx, dword [esp + 0x14]
test eax, eax
je 0x4021a2
mov byte [eax], 0
add eax, 1
mov dword [esp + 0x14], edx
mov dword [esp], eax
call sub.msvcrt.dll_atoi
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.004024c0
mov edx, dword [esp + 0x14]
add ebx, 1
cmp edx, ebx
jg 0x401ff6
jmp 0x402016
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], ebx
mov dword [esp + 4], str.ERROR:_unable_to_calculate_fingerprint_for_file__s__skipping_n
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
add dword [esp + 0x2c], 1
jmp 0x402120
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x3c]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004027b0
test eax, eax
je 0x4021b2
mov eax, dword [esp + 0x3c]
mov dword [esp], str.FINGERPRINT_s_n
mov dword [esp + 4], eax
call sub.msvcrt.dll_printf
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.00403270
jmp 0x402120
mov eax, dword [sym.imp.msvcrt.dll__iob]
add ebx, 2
mov dword [esp + 8], 0x2e
mov dword [esp + 4], 1
mov dword [esp], str.WARNING:_unknown_algorithm__using_the_default_n
add eax, 0x40
mov dword [esp + 0xc], eax
call sub.msvcrt.dll_fwrite
jmp 0x401d5b