Function at 0x615552
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x34], eax
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + 0x14]
mov dword [ebp - 0x28], edx
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0x30]
mov dword [esp], eax
call fcn.005f59b9
mov ebx, eax
mov esi, edx
mov ecx, dword [edi + 0x68]
mov dword [ebp - 0x2c], ecx
inc ecx
mov dword [ebp - 0x38], ecx
cmp dword [edi + 0x48], 0x6184a2
jne 0x61559e
cmp dword [edi + 0x4c], 0
sete al
jmp 0x6155a0
mov al, 0
movzx eax, al
mov dword [ebp - 0x30], eax
mov eax, dword [edi + 0x18]
cmp dword [eax + 0x3c], 0
je 0x6155b8
cmp dword [edi + 0x38], 0x76696465
je 0x615604
mov eax, dword [edi + 0x64]
imul eax, dword [edi + 0x5c]
cmp dword [ebp - 0x30], 0
je 0x6155cd
mov edx, dword [ebp - 0x28]
add edx, 4
jmp 0x6155d0
mov edx, dword [ebp - 0x28]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 4], edx
mov dword [esp], edi
call fcn.0061497a
add eax, dword [ebp - 0x2c]
mov dword [edi + 0x68], eax
jmp 0x615760
mov eax, dword [edi + 0xcc]
test eax, eax
jne 0x61561b
cmp dword [edi + 0xd0], 0
je 0x6156e2
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 8]
sub edx, eax
mov eax, dword [ecx + 0xc]
sub eax, dword [edi + 0xd0]
fld dword [0xa1cc4c]
push eax
fidivr dword [esp]
mov dword [esp], edx
fiadd dword [esp]
lea esp, [esp + 4]
fldz
fucom st(1)
fnstsw ax
test ah, 0x45
jne 0x61564f
fstp st(1)
jmp 0x615651
fstp st(0)
fadd st(0)
mov eax, dword [edi + 0x58]
mov edx, 0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
fild qword [ebp - 0x20]
fmulp st(1)
fadd dword [0xa1cc54]
fmul dword [0xa1cc58]
fnstcw word [ebp - 0x22]
mov ax, word [ebp - 0x22]
mov ah, 0xc
mov word [ebp - 0x24], ax
fldcw word [ebp - 0x24]
fistp qword [ebp - 0x20]
fldcw word [ebp - 0x22]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x2c], edx
mov eax, dword [edi + 0xc8]
cmp dword [ebp - 0x30], 0
je 0x61569d
add eax, 4
mov edx, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [esp + 0x10], ecx
mov edx, dword [edi + 0xcc]
mov ecx, dword [edi + 0xd0]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.0061497a
add eax, dword [edi + 0x68]
mov dword [edi + 0x68], eax
inc eax
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x30], 0
je 0x615736
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0x65
jne 0x615736
mov dword [esp], 0xc
call fcn.008f47b4
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0x68]
inc eax
mov dword [esp + 4], eax
mov edx, dword [ebp - 0x2c]
mov dword [esp], edx
call fcn.00614850
mov eax, dword [edi + 0x94]
test eax, eax
jne 0x615727
mov ecx, dword [ebp - 0x2c]
mov dword [edi + 0x90], ecx
jmp 0x61572d
mov edx, dword [ebp - 0x2c]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x2c]
mov dword [edi + 0x94], ecx
mov eax, dword [ebp - 0x28]
mov dword [edi + 0xc8], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov dword [edi + 0xcc], eax
mov dword [edi + 0xd0], edx
mov dword [edi + 0xd8], ebx
mov dword [edi + 0xdc], esi
cmp dword [ebp - 0x30], 0
je 0x615778
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x18]
mov dword [esp], eax
call fcn.00614bcc
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0x30]
mov dword [esp + 0xc], eax
mov edx, dword [ebp - 0x28]
mov dword [esp + 8], edx
mov dword [esp + 4], 1
mov ecx, dword [ebp - 0x34]
mov dword [esp], ecx
call sub.msvcrt.dll_fwrite
cmp dword [edi + 8], 0
je 0x6157ea
cmp dword [edi + 0x28], 0
jne 0x6157c0
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0xe8]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x5c]
mov dword [edi + 0x28], eax
test eax, eax
je 0x6157ea
mov eax, dword [ebp - 0x38]
mov dword [esp + 0x10], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
mov eax, dword [edi + 8]
mov dword [esp], eax
call fcn.00614cf0
add esp, 0x4c
pop ebx
pop esi
pop edi
leave
ret