Function at 0x5000e0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c4
mov eax, dword [0x5be9a0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, edx
lea ebx, [edi + 0xc]
push ebx
mov dword [ebp - 0x364], edi
mov dword [ebp - 0x394], eax
mov dword [ebp - 0x384], ecx
call fcn.004ffa30
fstp qword [ebp - 0x378]
add esp, 4
lea edx, [ebp - 0x338]
push str.commencing_duplicate_removal__pass_1_n
push edi
mov dword [ebp - 0x3a4], edx
call fcn.00410350
push 1
mov esi, ebx
call fcn.004e9a40
mov eax, dword [ebx + 8]
add esp, 0xc
push eax
lea ecx, [ebp - 0x138]
push 0x5c3cf4
push ecx
call fcn.004b70c5
add esp, 0xc
lea edx, [ebp - 0x138]
push 0x5c3cfc
push edx
call fcn.004b80e6
add esp, 8
mov dword [ebp - 0x398], eax
test eax, eax
jne 0x50018d
push str.error:_dup1_cant_open_relation_file_n
push edi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov eax, dword [ebx + 8]
push eax
lea ecx, [ebp - 0x138]
push 0x5c3d28
push ecx
call fcn.004b70c5
add esp, 0xc
lea edx, [ebp - 0x138]
push 0x5c3d30
push edx
call fcn.004b80e6
add esp, 8
mov dword [ebp - 0x390], eax
test eax, eax
jne 0x5001d8
push str.error:_dup1_cant_open_collision_file_n
push edi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
fldz
mov dword [ebp - 0x348], 0x1c
fcomp qword [ebp - 0x378]
fnstsw ax
test ah, 5
jp 0x5002a9
mov ecx, dword [ebx + 8]
call fcn.004e12d0
mov dword [ebp - 0x350], eax
mov eax, edx
and edx, 0x7fffffff
mov dword [ebp - 0x34c], edx
fild qword [ebp - 0x350]
and eax, 0x80000000
mov dword [ebp - 0x34c], eax
mov dword [ebp - 0x350], 0
fild qword [ebp - 0x350]
fchs
faddp st(1)
fdiv qword [ebp - 0x378]
fmul qword [0x5b4458]
call fcn.004bdd80
fdiv qword [0x5b4420]
fadd qword [0x5b43f0]
fnstcw word [ebp - 0x33a]
movzx eax, word [ebp - 0x33a]
or eax, 0xc00
mov dword [ebp - 0x344], eax
fldcw word [ebp - 0x344]
fistp qword [ebp - 0x350]
mov eax, dword [ebp - 0x350]
mov dword [ebp - 0x348], eax
fldcw word [ebp - 0x33a]
cmp eax, 0x19
jae 0x50029a
mov dword [ebp - 0x348], 0x19
jmp 0x5002a9
cmp eax, 0x1f
jbe 0x5002a9
mov dword [ebp - 0x348], 0x1f
mov ecx, dword [ebp - 0x348]
add ecx, 0xfffffffd
mov esi, 1
shl esi, cl
push 1
push esi
call fcn.004b9228
mov edi, eax
add esp, 8
mov dword [ebp - 0x34c], edi
test edi, edi
jne 0x5002e5
push esi
push 0x5c3b7c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
push 4
push 0x8000
call fcn.004b9228
xor esi, esi
add esp, 8
mov dword [ebp - 0x36c], eax
cmp eax, esi
jne 0x500319
push 0x20000
push 0x5c3b7c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
push 1
push 0x1000000
call fcn.004b9228
add esp, 8
mov dword [ebp - 0x35c], eax
cmp eax, esi
jne 0x50034b
push 0x1000000
push 0x5c3b7c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
push 0x4e20
mov dword [ebp - 0x358], esi
mov dword [ebp - 0x39c], 0x1388
call fcn.004b7263
add esp, 4
cmp eax, esi
jne 0x500385
push 0x4e20
push 0x5c3b5c
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov dword [ebp - 0x354], eax
lea eax, [ebp - 0x3c4]
push eax
mov dword [ebp - 0x340], 0xffffffff
mov dword [ebp - 0x33c], esi
mov dword [ebp - 0x360], esi
mov dword [ebp - 0x37c], esi
call fcn.004565a0
add esp, 4
push 0x12c
lea ecx, [ebp - 0x138]
push ecx
mov esi, dword [ebx]
call fcn.00450070
add esp, 8
cmp byte [ebx + 5], 0
je 0x5003df
mov edx, dword [ebx]
push edx
call fcn.004b7149
add esp, 4
jmp 0x500400
mov ecx, dword [ebx]
test ecx, ecx
je 0x500408
mov eax, dword [ecx + 0x10]
cmp eax, 0x1c4f
je 0x5003fd
cmp eax, 0x79b1
jne 0x500408
cmp eax, 0x1c4f
jne 0x500408
mov eax, dword [ecx + 0x44]
test eax, eax
jne 0x50075d
mov al, byte [ebp - 0x138]
cmp al, 0x2d
je 0x500422
movsx eax, al
push eax
call fcn.004b94b3
add esp, 4
test eax, eax
je 0x5003b6
mov esi, dword [ebp + 0xc]
inc dword [ebp - 0x340]
test esi, esi
je 0x50043b
cmp dword [ebp - 0x340], esi
jae 0x500760
mov eax, dword [ebp - 0x394]
lea edx, [ebp - 0x3c4]
push edx
push 1
push eax
lea ecx, [ebp - 0x138]
push ecx
lea edx, [ebp - 0x344]
lea ecx, [ebp - 0x3b8]
call fcn.00505b60
mov esi, eax
add esp, 0x10
test esi, esi
je 0x5004cf
mov edx, dword [ebp - 0x398]
push edx
push 4
lea eax, [ebp - 0x340]
push 1
push eax
call fcn.004b9a51
add esp, 0x10
cmp esi, 0xffffff9d
jne 0x5004a2
inc dword [ebp - 0x37c]
push 0x12c
lea eax, [ebp - 0x138]
push eax
jmp 0x5003c2
mov ecx, dword [ebp - 0x340]
mov edx, dword [ebp - 0x364]
push ecx
push esi
push str.error__d_reading_relation__u_n
push edx
call fcn.00410350
add esp, 0x10
push 0x12c
lea eax, [ebp - 0x138]
push eax
jmp 0x5003c2
mov ecx, dword [ebp - 0x340]
test ecx, ecx
je 0x500507
mov eax, 0x6b5fca6b
mul ecx
shr edx, 0x16
imul edx, edx, 0x989680
mov eax, ecx
sub eax, edx
jne 0x500507
mov eax, 0x431bde83
mul ecx
shr edx, 0x12
push edx
push str.read__uM_relations_n
call fcn.004b7f6d
add esp, 8
mov eax, dword [ebp - 0x3b4]
mov esi, dword [ebp - 0x3b0]
mov ebx, dword [ebp - 0x3b8]
mov ecx, eax
and eax, 0x1f
sar ecx, 0x1f
inc dword [ebp - 0x33c]
mov edx, esi
shl edx, 5
or eax, edx
imul eax, eax, 0x9e375365
mov ecx, ebx
imul ecx, ecx, 0x9e3779b1
xor eax, ecx
mov ecx, 0x20
sub ecx, dword [ebp - 0x348]
shr eax, cl
mov dword [ebp - 0x38c], eax
mov ecx, eax
and eax, 7
mov al, byte [eax + 0x521df0]
shr ecx, 3
test byte [ecx + edi], al
je 0x50059f
mov eax, dword [ebp - 0x390]
push eax
push 4
lea ecx, [ebp - 0x38c]
push 1
push ecx
call fcn.004b9a51
mov eax, dword [ebp - 0x38c]
inc dword [ebp - 0x360]
mov ecx, eax
and eax, 7
mov al, byte [eax + 0x521df0]
shr ecx, 3
not al
add esp, 0x10
and byte [ecx + edi], al
jmp 0x5005a2
or byte [ecx + edi], al
xor ecx, ecx
cmp esi, ecx
jne 0x500613
mov eax, dword [ebp - 0x39c]
cmp dword [ebp - 0x358], eax
jne 0x5005e3
mov ecx, dword [ebp - 0x354]
add eax, eax
lea esi, [eax*4]
push esi
push ecx
mov dword [ebp - 0x39c], eax
call fcn.004b95e6
add esp, 8
test eax, eax
je 0x500748
mov dword [ebp - 0x354], eax
mov eax, dword [ebp - 0x358]
mov edx, dword [ebp - 0x354]
mov dword [edx + eax*4], ebx
mov ebx, dword [ebp - 0x364]
inc eax
mov dword [ebp - 0x358], eax
push 0x12c
lea eax, [ebp - 0x138]
push eax
add ebx, 0xc
jmp 0x5003c2
movzx edx, byte [ebp - 0x3a8]
movzx eax, byte [ebp - 0x3a7]
add eax, edx
mov dword [ebp - 0x344], ecx
mov dword [ebp - 0x368], ecx
mov dword [ebp - 0x374], eax
je 0x50072e
jmp 0x500640
mov eax, dword [ebp - 0x3a4]
mov bl, byte [ecx + eax]
mov dl, bl
and dl, 0x7f
movzx eax, dl
cdq
inc ecx
mov edi, eax
mov esi, edx
mov dword [ebp - 0x380], 7
test bl, bl
js 0x50069e
mov eax, dword [ebp - 0x3a4]
mov bl, byte [ecx + eax]
inc ecx
mov dword [ebp - 0x344], ecx
mov cl, bl
and cl, 0x7f
movzx eax, cl
mov ecx, dword [ebp - 0x380]
cdq
call fcn.0050dc90
add dword [ebp - 0x380], 7
mov ecx, dword [ebp - 0x344]
or edi, eax
or esi, edx
test bl, bl
jns 0x500665
mov dword [ebp - 0x344], ecx
cmp esi, 1
ja 0x50070f
jb 0x5006af
test edi, edi
jae 0x50070f
mov edx, edi
mov eax, esi
shrd edx, eax, 0x11
shr eax, 0x11
mov eax, dword [ebp - 0x36c]
inc dword [eax + edx*4]
lea eax, [eax + edx*4]
movzx eax, byte [ebp - 0x3a8]
cmp dword [ebp - 0x368], eax
jb 0x50070f
mov edx, edi
add edx, 0xffffff9e
mov eax, esi
adc eax, 0xffffffff
test eax, eax
ja 0x50070f
jb 0x5006ed
cmp edx, 0xfffff9d
ja 0x50070f
mov eax, dword [ebp - 0x35c]
shrd edi, esi, 1
shr esi, 1
mov edx, edi
shrd edx, esi, 3
and edi, 7
add eax, edx
mov dl, byte [edi + 0x521df0]
shr esi, 3
or byte [eax], dl
mov eax, dword [ebp - 0x368]
inc eax
mov dword [ebp - 0x368], eax
cmp eax, dword [ebp - 0x374]
jb 0x500640
mov edi, dword [ebp - 0x34c]
mov ebx, dword [ebp - 0x364]
push 0x12c
lea eax, [ebp - 0x138]
push eax
add ebx, 0xc
jmp 0x5003c2
push esi
push 0x5c3b98
call fcn.004b7f6d
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov esi, dword [ebp + 0xc]
lea ecx, [ebp - 0x3c4]
push ecx
call fcn.00456900
add esp, 4
push edi
call fcn.004b7229
add esp, 4
cmp byte [ebx + 5], 0
je 0x50078b
mov edx, dword [ebx]
push edx
call fcn.004b8276
add esp, 4
jmp 0x5007a8
mov eax, dword [ebx]
test eax, eax
je 0x5007a8
cmp dword [eax + 0x10], 0x1c4f
mov edi, eax
jne 0x5007a3
call fcn.00450180
jmp 0x5007a8
call fcn.0044fa30
mov eax, dword [ebp - 0x398]
push eax
mov dword [ebx], 0
call fcn.004b8276
mov ecx, dword [ebp - 0x390]
add esp, 4
push ecx
call fcn.004b8276
mov eax, dword [ebp - 0x37c]
mov edi, dword [ebp - 0x364]
add esp, 4
test eax, eax
je 0x5007eb
push eax
push str.skipped__d_relations_with_b___232_n
push edi
call fcn.00410350
add esp, 0xc
mov edx, dword [ebp - 0x33c]
mov eax, dword [ebp - 0x360]
push edx
push eax
push str.found__u_hash_collisions_in__u_relations_n
push edi
call fcn.00410350
add esp, 0x10
test esi, esi
je 0x500816
mov ecx, dword [ebp - 0x340]
inc ecx
cmp esi, ecx
jbe 0x500872
xor edx, edx
cmp dword [ebp - 0x358], edx
jbe 0x500854
mov eax, dword [ebp - 0x354]
mov eax, dword [eax + edx*4]
cmp eax, 0x10000000
jae 0x50084b
mov ebx, dword [ebp - 0x35c]
shr eax, 1
mov ecx, eax
and eax, 7
mov al, byte [eax + 0x521df0]
shr ecx, 3
not al
and byte [ecx + ebx], al
inc edx
cmp edx, dword [ebp - 0x358]
jb 0x500820
mov ecx, dword [ebp - 0x35c]
mov edx, dword [ebp - 0x394]
push ecx
push edx
mov ecx, edi
call fcn.004fb750
add esp, 8
add dword [ebp - 0x33c], eax
mov eax, dword [ebp - 0x354]
push eax
call fcn.004b7229
mov ecx, dword [ebp - 0x35c]
add esp, 4
push ecx
call fcn.004b7229
add esp, 4
cmp dword [ebp - 0x360], 0
jne 0x500923
mov edx, dword [edi + 0x14]
push edx
lea eax, [ebp - 0x138]
push str._s.hc
push eax
call fcn.004b70c5
lea ecx, [ebp - 0x138]
add esp, 0xc
push ecx
call fcn.004b7dfa
mov edx, dword [edi + 0x14]
add esp, 4
push edx
lea eax, [ebp - 0x138]
push str._s.br
push eax
call fcn.004b70c5
mov ecx, dword [edi + 0x14]
add esp, 0xc
push ecx
lea edx, [ebp - 0x238]
push 0x5c3df0
push edx
call fcn.004b70c5
add esp, 0xc
lea eax, [ebp - 0x238]
push eax
lea ecx, [ebp - 0x138]
push ecx
call fcn.004ba13b
add esp, 8
test eax, eax
je 0x50093b
push str.error:_dup1_cant_rename_outfile_n
push edi
call fcn.00410350
add esp, 8
push 0xffffffffffffffff
call fcn.004b856d
mov edx, dword [ebp - 0x348]
push esi
push edx
mov ecx, edi
call fcn.004ffbb0
add esp, 8
mov dword [ebp - 0x33c], eax
fld qword [0x5b4428]
call fcn.004bdd80
fdivr qword [0x5b4428]
mov esi, 0x7fff
fstp qword [ebp - 0x378]
mov eax, esi
mov dword [ebp - 0x34c], eax
fild dword [ebp - 0x34c]
test eax, eax
jns 0x50096f
fadd qword [0x5b4428]
fmul qword [0x5b4928]
fst qword [ebp - 0x350]
call fcn.004bdd80
mov ecx, dword [ebp - 0x36c]
fdivr qword [ebp - 0x350]
mov edx, dword [ecx + esi*4]
fild dword [ecx + esi*4]
test edx, edx
jns 0x50099c
fadd qword [0x5b4428]
fld qword [ebp - 0x378]
fsub st(2)
fdivp st(1)
fcomp qword [0x5b47c8]
fnstsw ax
test ah, 0x41
je 0x5009c1
dec esi
fstp qword [ebp - 0x378]
cmp esi, 2
ja 0x500957
jmp 0x5009c3
fstp st(0)
mov eax, dword [ebp - 0x36c]
push eax
call fcn.004b7229
mov ecx, dword [ebp - 0x384]
mov edx, dword [ebp - 0x33c]
add esp, 4
mov dword [ebp - 0x384], esi
fild dword [ebp - 0x384]
mov dword [ecx], edx
test esi, esi
jns 0x5009f6
fadd qword [0x5b4428]
fadd qword [0x5b43f0]
pop edi
fnstcw word [ebp - 0x33a]
pop esi
movzx eax, word [ebp - 0x33a]
fmul qword [0x5b4928]
or eax, 0xc00
mov dword [ebp - 0x384], eax
pop ebx
fldcw word [ebp - 0x384]
fistp qword [ebp - 0x388]
mov eax, dword [ebp - 0x388]
mov ecx, dword [ebp - 4]
xor ecx, ebp
fldcw word [ebp - 0x33a]
call fcn.004bc40c
mov esp, ebp
pop ebp
ret