Function at 0x500a60
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x908
mov eax, dword [0x5be9a0]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, edx
xor edx, edx
cmp dword [ebp + 0x10], edx
mov dword [ebp - 0x8b8], ecx
sete dl
lea ecx, [ebp - 0x23c]
push str.commencing_singleton_removal__initial_pass_n
push eax
mov dword [ebp - 0x890], eax
mov dword [ebp - 0x89c], edi
lea ebx, [eax + 0xc]
mov dword [ebp - 0x8b0], edx
mov dword [ebp - 0x8f0], ecx
call fcn.00410350
push 1
mov esi, ebx
call fcn.004e9a40
mov edx, dword [ebx + 8]
add esp, 0xc
push edx
lea eax, [ebp - 0x13c]
push 0x5c3ea4
push eax
call fcn.004b70c5
add esp, 0xc
lea ecx, [ebp - 0x13c]
push 0x5c3eac
push ecx
call fcn.004b80e6
add esp, 8
mov dword [ebp - 0x898], eax
test eax, eax
jne 0x500b12
mov edx, dword [ebp - 0x890]
push str.error:_cant_open_dup_file_n
push edx
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov eax, dword [ebx + 8]
push eax
lea ecx, [ebp - 0x13c]
push 0x5c3ecc
push ecx
call fcn.004b70c5
add esp, 0xc
lea edx, [ebp - 0x13c]
push 0x5c3ed4
push edx
call fcn.004b80e6
add esp, 8
mov dword [ebp - 0x8ac], eax
test eax, eax
jne 0x500b63
mov eax, dword [ebp - 0x890]
push str.error:_cant_open_output_LP_file_n
push eax
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
xor eax, eax
lea ecx, [eax + 3]
lea esi, [ebp - 0x8e8]
call fcn.004e6040
or eax, 0xffffffff
lea ecx, [ebp - 0x8c4]
push ecx
mov dword [ebp - 0x8a8], eax
mov dword [ebp - 0x894], eax
mov dword [ebp - 0x8a4], 0
call fcn.004565a0
mov edx, dword [ebp - 0x898]
add esp, 4
push edx
push 4
push 1
lea eax, [ebp - 0x894]
push eax
call fcn.004b98dd
mov esi, dword [ebx]
lea ecx, [ebp - 0x13c]
push 0x12c
push ecx
call fcn.00450070
add esp, 0x18
cmp byte [ebx + 5], 0
je 0x500bdb
mov edx, dword [ebx]
push edx
call fcn.004b7149
add esp, 4
jmp 0x500bfc
mov ecx, dword [ebx]
test ecx, ecx
je 0x500c04
mov eax, dword [ecx + 0x10]
cmp eax, 0x1c4f
je 0x500bf9
cmp eax, 0x79b1
jne 0x500c04
cmp eax, 0x1c4f
jne 0x500c04
mov eax, dword [ecx + 0x44]
test eax, eax
jne 0x500db8
mov al, byte [ebp - 0x13c]
cmp al, 0x2d
je 0x500c36
movsx eax, al
push eax
call fcn.004b94b3
add esp, 4
test eax, eax
jne 0x500c36
mov esi, dword [ebx]
lea ecx, [ebp - 0x13c]
push 0x12c
push ecx
call fcn.00450070
add esp, 8
jmp 0x500bc8
mov esi, dword [ebp - 0x8a8]
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0x8a8], esi
test eax, eax
je 0x500c52
cmp esi, eax
jae 0x500db8
cmp dword [ebp - 0x8b0], 0
je 0x500c73
cmp esi, dword [ebp - 0x894]
jne 0x500cb0
mov edx, dword [ebp - 0x898]
push edx
push 1
push 4
jmp 0x500ba6
cmp esi, dword [ebp - 0x894]
jae 0x500c96
mov esi, dword [ebx]
lea edx, [ebp - 0x13c]
push 0x12c
push edx
call fcn.00450070
add esp, 8
jmp 0x500bc8
mov eax, dword [ebp - 0x898]
push eax
push 1
lea ecx, [ebp - 0x894]
push 4
push ecx
call fcn.004b98dd
add esp, 0x10
mov eax, dword [ebp - 0x8b8]
lea edx, [ebp - 0x8c4]
push edx
push 1
push eax
lea ecx, [ebp - 0x13c]
push ecx
lea edx, [ebp - 0x8b4]
lea ecx, [ebp - 0x904]
call fcn.00505b60
add esp, 0x10
test eax, eax
jne 0x500d93
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 0xc]
inc dword [ebp - 0x8a4]
push edx
push eax
lea ecx, [ebp - 0x88c]
push ecx
lea edx, [ebp - 0x904]
push edx
call fcn.005056f0
movzx eax, byte [ebp - 0x887]
mov byte [ebp - 0x3cf], al
mov al, byte [ebp - 0x888]
add esp, 0x10
xor edi, edi
mov dword [ebp - 0x3d4], esi
mov byte [ebp - 0x3d0], al
test al, al
je 0x500d6e
lea ecx, [ebp - 0x884]
mov dword [ebp - 0x8a0], ecx
lea ebx, [ebp - 0x3cc]
mov edx, dword [ebp - 0x8a0]
push 0
push ebx
push edx
lea esi, [ebp - 0x8e8]
call fcn.004e5cf0
mov al, byte [ebp - 0x888]
add dword [ebp - 0x8a0], 0xc
movzx ecx, al
inc edi
add esp, 0xc
add ebx, 4
cmp edi, ecx
jb 0x500d3e
mov edx, dword [ebp - 0x8ac]
movzx eax, al
push edx
add eax, 2
push eax
lea ecx, [ebp - 0x3d4]
push 4
push ecx
call fcn.004b9a51
mov edi, dword [ebp - 0x89c]
add esp, 0x10
mov ebx, dword [ebp - 0x890]
mov esi, dword [ebx + 0xc]
lea edx, [ebp - 0x13c]
push 0x12c
add ebx, 0xc
push edx
call fcn.00450070
add esp, 8
jmp 0x500bc8
lea eax, [ebp - 0x8c4]
push eax
call fcn.00456900
mov eax, dword [ebp - 0x8e8]
mov edx, dword [ebp - 0x8cc]
mov ecx, dword [ebp - 0x8a4]
inc eax
imul eax, dword [ebp - 0x8c8]
dec edx
mov dword [edi + 8], edx
mov dword [edi + 4], ecx
mov ecx, dword [ebp - 0x8dc]
mov edx, 4
shl edx, cl
mov dword [edi], 0
lea eax, [edx + eax*4]
mov dword [ebp - 0x8b4], eax
fild dword [ebp - 0x8b4]
test eax, eax
jns 0x500e11
fadd qword [0x5b4428]
fmul qword [0x5b4730]
push ecx
mov ecx, dword [ebp - 0x890]
fstp qword [esp]
push 0x5c3efc
push ecx
call fcn.00410350
mov edx, dword [ebp - 0x8e0]
push edx
call fcn.004b7229
mov eax, dword [ebp - 0x8d0]
add esp, 0x14
push eax
call fcn.004b7229
add esp, 4
cmp byte [ebx + 5], 0
je 0x500e5d
mov ecx, dword [ebx]
push ecx
call fcn.004b8276
add esp, 4
jmp 0x500e80
mov eax, dword [ebx]
test eax, eax
je 0x500e80
cmp dword [eax + 0x10], 0x1c4f
mov edi, eax
jne 0x500e75
call fcn.00450180
jmp 0x500e7a
call fcn.0044fa30
mov edi, dword [ebp - 0x89c]
mov edx, dword [ebp - 0x898]
push edx
mov dword [ebx], 0
call fcn.004b8276
mov eax, dword [ebp - 0x8ac]
add esp, 4
push eax
call fcn.004b8276
mov ecx, dword [ebx + 8]
add esp, 4
push ecx
lea edx, [ebp - 0x13c]
push 0x5c3f14
push edx
call fcn.004b70c5
add esp, 0xc
lea ecx, [ebp - 0x13c]
call fcn.004e12d0
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
mov eax, dword [ebx + 8]
push eax
lea ecx, [ebp - 0x13c]
push 0x5c3f1c
push ecx
call fcn.004b70c5
lea edx, [ebp - 0x13c]
add esp, 0xc
push edx
call fcn.004b7dfa
add esp, 4
test eax, eax
je 0x500f13
mov eax, dword [ebp - 0x890]
push str.error:_cant_delete_dup_file_n
push eax
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004bc40c
mov esp, ebp
pop ebp
ret