Function at 0x439570
Capabilities:
Delete file
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x18c
mov esi, dword [ebp + 8]
movzx ecx, word [esi]
mov dword [ebp - 0x134], esi
movzx ebx, cx
cmp bx, 0x4853
sete dl
cmp bx, 0x5a53
sete al
or al, dl
jne 0x4395b1
cmp cx, 0x2442
je 0x4395b1
add esp, 0x18c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp - 0x134]
mov esi, dword [edx + 0xf8]
mov ecx, dword [esi + 8]
cmp word [ecx + 0xa], 0
je 0x4395a6
mov eax, dword [edx + 0xd8]
mov edi, edx
add edi, 0xd8
test eax, eax
jne 0x439a55
mov dword [edi + 4], 0
mov ecx, dword [ebp - 0x134]
xor edx, edx
mov dword [edi + 0xc], 0xffffffff
mov dword [ecx + 0xd8], edx
mov dword [edi + 8], 0
mov eax, dword [esi + 8]
xor ebx, ebx
mov dword [ebp - 0x138], ebx
cmp word [eax + 0xa], 0
jle 0x439699
lea esi, [esi]
lea edi, [edi]
mov ebx, dword [edi + 8]
xor eax, eax
mov dword [ebp - 0x12c], eax
inc ebx
test ebx, ebx
jle 0x4398a2
mov ecx, dword [ebp - 0x134]
mov edx, dword [ecx + 0xd8]
test edx, edx
jne 0x439820
mov esi, dword [edi + 0x10]
cmp esi, ebx
jge 0x439651
mov esi, ebx
lea eax, [esi*4]
mov dword [esp], eax
call sym.operator_new___unsigned_int_
mov dword [edi + 4], esi
mov edx, dword [ebp - 0x134]
mov esi, dword [edx + 0xf8]
mov dword [edx + 0xd8], eax
mov edx, dword [edi]
mov dword [edi + 8], ebx
mov eax, dword [ebp - 0x12c]
inc dword [ebp - 0x138]
mov dword [edx + ebx*4 - 4], eax
mov edx, dword [esi + 8]
movsx ebx, word [edx + 0xa]
cmp ebx, dword [ebp - 0x138]
jg 0x439620
mov eax, dword [esi + 8]
xor edi, edi
mov ebx, 0
mov dword [ebp - 0x13c], edi
mov ecx, dword [ebp - 0x134]
cmp word [eax + 0xa], 0
mov dword [ecx + 0xec], ebx
mov dword [ecx + 0xf0], ebx
mov dword [ecx + 0xf4], ebx
jle 0x43973e
mov edx, eax
lea esi, [esi]
movsx eax, word [edx + 0xa]
xor edx, edx
movzx ecx, word [ebp - 0x13c]
mov dword [ebp - 0x140], edx
cmp ecx, eax
jge 0x4396fa
mov ebx, ecx
shl ebx, 4
add ebx, ecx
mov ecx, dword [esi + 0xc]
lea edi, [ecx + ebx*4]
mov dword [ebp - 0x140], edi
mov edx, dword [ebp - 0x140]
mov edi, 1
movzx eax, byte [edx + 0x2d]
cmp eax, 0
jle 0x439719
mov edx, eax
lea eax, [edi + edi*4]
dec edx
lea edi, [eax + eax]
jne 0x439710
mov eax, dword [ebp - 0x140]
cmp byte [eax + 0x2c], 1
je 0x4398d7
inc dword [ebp - 0x13c]
mov edx, dword [esi + 8]
movsx edi, word [edx + 0xa]
cmp edi, dword [ebp - 0x13c]
jg 0x4396d0
mov esi, dword [ebp - 0x134]
movzx ebx, word [esi]
cmp bx, 0x4853
je 0x439a75
cmp bx, 0x5a53
je 0x439b63
jmp 0x439761
fstp st(0)
movzx esi, bx
cmp si, 0x4853
sete bl
cmp si, 0x5a53
sete dl
or dl, bl
je 0x4395a6
mov edi, dword [str.._data]
mov ebx, str.elf.log
mov eax, 0x532f88
mov dword [esp + 0xc], ebx
lea esi, [ebp - 0x128]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov dword [esp], esi
call sym._sprintf
mov dword [esp], esi
mov ecx, 0x533053
mov dword [esp + 4], ecx
call sym._fopen
test eax, eax
mov ebx, eax
je 0x4395a6
mov dword [esp + 0xc], eax
lea ecx, [ebp - 0x130]
mov eax, 4
mov dword [esp], ecx
mov edi, 1
mov dword [esp + 8], edi
mov dword [esp + 4], eax
call sym._fread
mov dword [esp], ebx
call sym._fclose
mov edx, dword [ebp - 0x134]
mov eax, dword [edx + 0xf8]
xor edx, edx
test eax, eax
jne 0x439b58
cmp edx, dword [ebp - 0x130]
je 0x4395a6
mov dword [esp], esi
call sym._remove
jmp 0x4395a6
mov eax, dword [edi + 4]
cmp eax, ebx
jge 0x439675
mov esi, dword [edi + 0x10]
add eax, esi
cmp eax, ebx
mov dword [ebp - 0x16c], eax
jge 0x439840
mov dword [ebp - 0x16c], ebx
mov edx, dword [ebp - 0x16c]
shl edx, 2
mov dword [esp], edx
call sym.operator_new___unsigned_int_
mov ecx, dword [edi + 8]
xor edx, edx
mov esi, eax
test ecx, ecx
jle 0x439a6e
mov ecx, dword [edi]
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ecx + edx*4]
mov dword [esi + edx*4], eax
inc edx
cmp dword [edi + 8], edx
jg 0x439870
test ecx, ecx
jne 0x439a48
mov dword [edi], esi
mov edx, esi
mov ecx, dword [ebp - 0x134]
mov esi, dword [ebp - 0x16c]
mov dword [edi + 4], esi
mov esi, dword [ecx + 0xf8]
jmp 0x439677
mov ecx, dword [ebp - 0x134]
mov eax, dword [ecx + 0xd8]
test eax, eax
jne 0x439a2f
mov dword [edi + 4], 0
mov ecx, dword [ebp - 0x134]
xor eax, eax
mov dword [edi + 0xc], 0xffffffff
mov dword [ecx + 0xd8], eax
jmp 0x439675
add eax, 0x34
xor esi, esi
mov dword [esp], eax
call method.MWORD.GetValue___const
mov dword [ebp - 0x180], eax
mov eax, dword [ebp - 0x140]
mov dword [ebp - 0x17c], edx
mov ebx, dword [ebp - 0x17c]
mov ecx, dword [eax + 0x38]
mov dword [ebp - 0x158], edi
mov eax, dword [ebp - 0x180]
imul ebx, ecx
mul ecx
mov dword [ebp - 0x144], edx
mov edx, dword [ebp - 0x180]
mov dword [ebp - 0x148], eax
mov eax, edi
imul edx, esi
mov esi, dword [ebp - 0x144]
sar eax, 0x1f
mov dword [ebp - 0x154], eax
add esi, edx
add esi, ebx
mov dword [ebp - 0x144], esi
mov edx, dword [ebp - 0x158]
mov ecx, dword [ebp - 0x144]
mov ebx, dword [ebp - 0x154]
mov esi, dword [ebp - 0x148]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], ebx
xor ebx, ebx
mov dword [esp], esi
mov dword [esp + 8], edx
call sym.___divdi3
push edx
mov edi, dword [ebp - 0x134]
push eax
mov eax, dword [ebp - 0x140]
fild qword [esp]
add esp, 8
add eax, 0x30
fadd dword [edi + 0xf0]
fstp dword [edi + 0xf0]
mov dword [esp], eax
call method.MWORD.GetValue___const
mov dword [ebp - 0x17c], edx
mov edx, dword [ebp - 0x140]
mov dword [ebp - 0x180], eax
mov esi, dword [ebp - 0x180]
mov ecx, dword [edx + 0x38]
imul esi, ebx
mul ecx
mov dword [ebp - 0x160], eax
mov eax, dword [ebp - 0x17c]
mov dword [ebp - 0x15c], edx
mov edi, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x158]
imul eax, ecx
mov ebx, dword [ebp - 0x160]
add edi, esi
mov dword [esp + 8], edx
mov ecx, dword [ebp - 0x154]
mov dword [esp], ebx
add eax, edi
mov dword [ebp - 0x15c], eax
mov esi, dword [ebp - 0x15c]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
call sym.___divdi3
push edx
mov edi, dword [ebp - 0x134]
push eax
fild qword [esp]
mov esi, dword [edi + 0xf8]
add esp, 8
fadd dword [edi + 0xf4]
fstp dword [edi + 0xf4]
jmp 0x439729
mov dword [esp], eax
call sym.operator_delete___void_
mov edx, dword [ebp - 0x134]
mov esi, dword [edx + 0xf8]
jmp 0x4398b6
mov dword [esp], ecx
call sym.operator_delete___void_
jmp 0x439884
mov dword [esp], eax
call sym.operator_delete___void_
mov edx, dword [ebp - 0x134]
mov esi, dword [edx + 0xf8]
jmp 0x4395dd
mov ecx, dword [edi]
jmp 0x43987c
mov dword [esp], esi
mov ebx, str.000001
mov dword [esp + 4], ebx
call method.c_Market.findDrvIDbyLabel_char_const_
movzx esi, ax
mov eax, dword [ebp - 0x134]
cmp si, 0xffff
movzx ebx, word [eax]
je 0x439761
mov eax, dword [ebp - 0x134]
mov edi, dword [eax + 0xf8]
mov edx, dword [edi + 8]
movsx ecx, word [edx + 0xa]
xor edx, edx
cmp esi, ecx
jl 0x439b46
movzx eax, byte [edx + 0x2d]
mov ecx, 1
cmp eax, 0
jle 0x439ad2
mov edx, eax
lea eax, [ecx + ecx*4]
dec edx
lea ecx, [eax + eax]
jne 0x439ac9
mov edx, dword [edi + 8]
movsx eax, word [edx + 0xa]
xor edx, edx
cmp esi, eax
jge 0x439aec
mov eax, esi
shl eax, 4
add eax, esi
mov esi, dword [edi + 0xc]
lea edx, [esi + eax*4]
mov edi, dword [edx + 0x38]
xor edx, edx
mov esi, dword [ebp - 0x134]
push edx
push edi
fild qword [esp]
add esp, 8
push ecx
fild dword [esp]
add esp, 4
cmp bx, 0x4853
fdivp st(1)
fst dword [esi + 0xec]
jne 0x43975f
fstp dword [0x5635b8]
mov edi, dword [esi + 0xf0]
mov ecx, 0
mov eax, dword [esi + 0xf4]
mov dword [0x5635c8], ecx
mov dword [0x5635a8], edi
mov dword [0x563598], eax
jmp 0x439761
mov eax, esi
mov ecx, dword [edi + 0xc]
shl eax, 4
add eax, esi
lea edx, [ecx + eax*4]
jmp 0x439ab9
mov ebx, dword [eax + 8]
mov edx, dword [ebx + 6]
jmp 0x439803
mov ecx, dword [ebp - 0x134]
mov edx, str.399106
mov dword [esp + 4], edx
mov dword [esp], ecx
jmp 0x439a81