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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x508
mov eax, dword [0x5be9a0]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov ecx, dword [eax + 4]
push edi
mov edi, dword [eax + 8]
mov ebx, ecx
push str.removing_singletons_from_LP_file_n
push esi
mov dword [ebp - 0x500], esi
mov dword [ebp - 0x508], eax
mov dword [ebp - 0x4e0], ecx
mov dword [ebp - 0x4d0], ebx
mov dword [ebp - 0x4dc], edi
mov dword [ebp - 0x4f8], 0
call fcn.00410350
push edi
push ebx
push str.start_with__u_relations_and__u_ideals_n
push esi
call fcn.00410350
mov eax, dword [esi + 0x14]
push eax
lea ecx, [ebp - 0x10c]
push 0x5c0738
push ecx
call fcn.004b70c5
add esp, 0x24
lea edx, [ebp - 0x10c]
push 0x5c0740
push edx
call fcn.004b80e6
mov ebx, eax
add esp, 8
mov dword [ebp - 0x504], ebx
test ebx, ebx
jne 0x4df4e0
push str.error:_cant_open_LP_file_n
push esi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov eax, dword [esi + 0x14]
push eax
lea ecx, [ebp - 0x20c]
push str._s.lp0
push ecx
call fcn.004b70c5
add esp, 0xc
lea edx, [ebp - 0x20c]
push 0x5c0768
push edx
call fcn.004b80e6
add esp, 8
mov dword [ebp - 0x4fc], eax
test eax, eax
jne 0x4df52b
push str.error:_cant_open_LP_output_file_n
push esi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov esi, dword [ebp - 0x4d0]
add esi, esi
add esi, esi
push esi
call fcn.004b7263
add esp, 4
mov dword [ebp - 0x4d8], eax
test eax, eax
jne 0x4df55d
push esi
push 0x5c054c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
push 4
push edi
call fcn.004b9228
add esp, 8
mov dword [ebp - 0x4d4], eax
test eax, eax
jne 0x4df58e
lea eax, [edi*4]
push eax
push 0x5c056c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
xor edi, edi
xor esi, esi
cmp dword [ebp - 0x4d0], edi
jbe 0x4df608
lea ebx, [ebx]
mov ecx, dword [ebp - 0x4d8]
push ebx
push 2
lea edx, [ebp - 0x4cc]
push 4
push edx
mov dword [ecx + esi*4], esi
call fcn.004b98dd
movzx eax, byte [ebp - 0x4c8]
push ebx
push eax
lea ecx, [ebp - 0x4c4]
push 4
push ecx
call fcn.004b98dd
xor eax, eax
add esp, 0x20
cmp byte [ebp - 0x4c8], al
jbe 0x4df5ff
mov edi, edi
mov edx, dword [ebp + eax*4 - 0x4c4]
mov ecx, dword [ebp - 0x4d4]
inc dword [ecx + edx*4]
lea ecx, [ecx + edx*4]
movzx edx, byte [ebp - 0x4c8]
inc eax
cmp eax, edx
jb 0x4df5e0
inc esi
cmp esi, dword [ebp - 0x4d0]
jb 0x4df5a0
push ebx
call fcn.004ba5eb
add esp, 4
jmp 0x4df615
xor edi, edi
push ebx
mov dword [ebp - 0x4f4], edi
mov dword [ebp - 0x4f0], edi
call fcn.004ba5eb
xor esi, esi
add esp, 4
mov dword [ebp - 0x4e8], edi
mov dword [ebp - 0x4e4], esi
cmp dword [ebp - 0x4e0], esi
jbe 0x4df731
push ebx
push 2
lea eax, [ebp - 0x4cc]
push 4
push eax
call fcn.004b98dd
movzx ecx, byte [ebp - 0x4c8]
push ebx
push ecx
lea edx, [ebp - 0x4c4]
push 4
push edx
call fcn.004b98dd
mov eax, dword [ebp - 0x4d8]
mov edx, dword [eax + esi*4]
add esp, 0x20
cmp dword [ebp - 0x4e4], edx
jne 0x4df718
movzx ecx, byte [ebp - 0x4c8]
xor eax, eax
test ecx, ecx
je 0x4df6b5
mov edi, dword [ebp + eax*4 - 0x4c4]
mov ebx, dword [ebp - 0x4d4]
cmp dword [ebx + edi*4], 2
jb 0x4df6a9
inc eax
cmp eax, ecx
jb 0x4df691
mov edi, dword [ebp - 0x4e8]
mov ebx, dword [ebp - 0x504]
cmp eax, ecx
jne 0x4df6e6
mov ecx, dword [ebp - 0x4d8]
mov dword [ecx + edi*4], edx
movzx edx, byte [ebp - 0x4c8]
inc edi
lea eax, [edx*4 + 8]
add dword [ebp - 0x4f4], eax
mov dword [ebp - 0x4e8], edi
adc dword [ebp - 0x4f0], 0
jmp 0x4df70f
xor eax, eax
test ecx, ecx
je 0x4df70f
lea esp, [esp]
mov ecx, dword [ebp + eax*4 - 0x4c4]
mov edx, dword [ebp - 0x4d4]
dec dword [edx + ecx*4]
lea ecx, [edx + ecx*4]
movzx ecx, byte [ebp - 0x4c8]
inc eax
cmp eax, ecx
jb 0x4df6f0
inc esi
cmp esi, dword [ebp - 0x4d0]
je 0x4df731
mov eax, dword [ebp - 0x4e4]
inc eax
mov dword [ebp - 0x4e4], eax
cmp eax, dword [ebp - 0x4e0]
jb 0x4df644
mov eax, dword [ebp - 0x4f8]
mov edx, dword [ebp - 0x500]
sub esi, edi
inc eax
push esi
push eax
push str.pass__u:_found__u_singletons_n
push edx
mov dword [ebp - 0x4d0], edi
mov dword [ebp - 0x4f8], eax
call fcn.00410350
push ebx
call fcn.004ba5eb
add esp, 0x14
cmp edi, 0x1e8480
jbe 0x4df798
cmp esi, 0x7a120
jbe 0x4df798
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
shrd ecx, eax, 1
shr eax, 1
cmp dword [ebp - 0x4f0], eax
ja 0x4df613
jb 0x4df798
cmp dword [ebp - 0x4f4], ecx
jae 0x4df613
mov esi, dword [ebp - 0x4dc]
xor ecx, ecx
xor eax, eax
test esi, esi
je 0x4df7c5
jmp 0x4df7b0
mov edx, dword [ebp - 0x4d4]
cmp dword [edx + eax*4], 0
je 0x4df7c0
mov dword [edx + eax*4], ecx
inc ecx
inc eax
cmp eax, esi
jb 0x4df7b0
xor esi, esi
xor edi, edi
mov dword [ebp - 0x4dc], ecx
cmp dword [ebp - 0x4e0], esi
jbe 0x4df88a
jmp 0x4df7e0
push ebx
push 2
lea eax, [ebp - 0x4cc]
push 4
push eax
call fcn.004b98dd
movzx ecx, byte [ebp - 0x4c8]
push ebx
push ecx
lea edx, [ebp - 0x4c4]
push 4
push edx
call fcn.004b98dd
mov eax, dword [ebp - 0x4d8]
add esp, 0x20
cmp edi, dword [eax + esi*4]
jne 0x4df87d
mov cl, byte [ebp - 0x4c8]
xor eax, eax
test cl, cl
je 0x4df855
jmp 0x4df830
mov ecx, dword [ebp + eax*4 - 0x4c4]
mov edx, dword [ebp - 0x4d4]
mov ecx, dword [edx + ecx*4]
mov dword [ebp + eax*4 - 0x4c4], ecx
mov cl, byte [ebp - 0x4c8]
movzx edx, cl
inc eax
cmp eax, edx
jb 0x4df830
mov eax, dword [ebp - 0x4fc]
movzx ecx, cl
push eax
add ecx, 2
push ecx
lea edx, [ebp - 0x4cc]
push 4
push edx
call fcn.004b9a51
inc esi
add esp, 0x10
cmp esi, dword [ebp - 0x4d0]
je 0x4df88a
inc edi
cmp edi, dword [ebp - 0x4e0]
jb 0x4df7e0
mov eax, dword [ebp - 0x4dc]
mov ecx, dword [ebp - 0x4d0]
mov edi, dword [ebp - 0x500]
push eax
push ecx
push str.pruned_dataset_has__u_relations_and__u_large_ideals_n
push edi
call fcn.00410350
mov esi, dword [ebp - 0x508]
mov ecx, dword [ebp - 0x4d4]
mov edx, dword [ebp - 0x4d0]
mov eax, dword [ebp - 0x4dc]
push ecx
mov dword [esi + 4], edx
mov dword [esi + 8], eax
mov dword [esi], 0
call fcn.004b7229
mov edx, dword [ebp - 0x4d8]
add esp, 0x14
push edx
call fcn.004b7229
add esp, 4
push ebx
call fcn.004b8276
mov eax, dword [ebp - 0x4fc]
add esp, 4
push eax
call fcn.004b8276
lea ecx, [ebp - 0x10c]
add esp, 4
push ecx
call fcn.004b7dfa
add esp, 4
test eax, eax
je 0x4df925
push str.error:_cant_delete_LP_file_n
push edi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
lea edx, [ebp - 0x10c]
push edx
lea eax, [ebp - 0x20c]
push eax
call fcn.004ba13b
add esp, 8
test eax, eax
je 0x4df954
push str.error:_cant_rename_LP_output_file_n
push edi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesExA]
lea ecx, [ebp - 0x330]
push ecx
push 0
lea edx, [ebp - 0x10c]
push edx
call edi
test eax, eax
jne 0x4df9bf
lea eax, [ebp - 0x10c]
push eax
lea ecx, [ebp - 0x30c]
push 0x5c0ba4
push ecx
call fcn.004b70c5
add esp, 0xc
lea edx, [ebp - 0x330]
push edx
push 0
lea eax, [ebp - 0x30c]
push eax
call edi
test eax, eax
jne 0x4df9a5
xor ecx, ecx
jmp 0x4df9d1
mov ecx, dword [ebp - 0x314]
xor eax, eax
or eax, dword [ebp - 0x310]
xor edi, edi
or ecx, edi
shld ecx, eax, 1
add eax, eax
jmp 0x4df9d1
mov ecx, dword [ebp - 0x314]
xor eax, eax
or eax, dword [ebp - 0x310]
xor edi, edi
or ecx, edi
mov dword [esi + 0x24], ecx
mov ecx, dword [ebp - 8]
pop edi
mov dword [esi + 0x20], eax
pop esi
xor ecx, ebp
pop ebx
call fcn.004bc40c
mov esp, ebp
pop ebp
ret