Function at 0x58aeb0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, eax
xor eax, eax
xor edx, edx
mov ebx, eax
push edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], eax
mov edi, ecx
lea eax, [edx + 1]
xor cl, cl
mov dword [esp + 0x30], edx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x20], edx
cmp esi, eax
jbe 0x58aef8
mov edi, edi
xor cl, byte [eax + edi]
inc eax
cmp eax, esi
jb 0x58aef0
cmp esi, edx
je 0x58af40
cmp cl, byte [edi]
jne 0x58af40
push 0x30
push 1
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], 1
call fcn.00658a3b
mov ebp, eax
add esp, 8
mov dword [esp + 0x18], ebp
test ebp, ebp
je 0x58af40
push 0xc
push 1
call fcn.00658a3b
add esp, 8
mov dword [ebp], eax
test eax, eax
jne 0x58af4a
mov eax, ebp
call fcn.0058ac50
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
push esi
push edi
push 0
call fcn.00607410
xor ecx, ecx
xor edx, edx
or eax, edx
or ecx, esi
add esp, 0xc
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], ecx
cmp ebx, 1
jge 0x58af87
cmp dword [esp + 0x4c], edx
jne 0x58b020
lea edi, [edx + 1]
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
je 0x58b020
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
dec ecx
mov dword [esp + 0x48], ecx
call fcn.0065e6d0
and eax, 1
je 0x58b020
lea esi, [esp + 0x30]
call fcn.0058abc0
lea esi, [eax + 1]
push esi
mov dword [ebp + 8], esi
call fcn.00658d9b
add esp, 4
mov dword [ebp + 4], eax
test eax, eax
je 0x58af39
xor ebx, ebx
test esi, esi
je 0x58b020
jmp 0x58afd0
mov edi, 8
cmp dword [esp + 0x48], edi
jge 0x58aff3
cmp dword [esp + 0x4c], 0
jne 0x58afef
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
jne 0x58aff3
xor eax, eax
jmp 0x58b00f
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
sub ecx, edi
mov dword [esp + 0x48], ecx
call fcn.0065e6d0
and eax, 0xff
mov ecx, dword [ebp + 4]
mov byte [ebx + ecx], al
inc ebx
cmp ebx, dword [ebp + 8]
jb 0x58afd0
jmp 0x58b020
cmp dword [esp + 0x4c], 0
jne 0x58b220
mov edi, 8
cmp dword [esp + 0x48], edi
jge 0x58b047
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
je 0x58b220
mov edi, 4
cmp dword [esp + 0x48], edi
jge 0x58b06a
cmp dword [esp + 0x4c], 0
jne 0x58b066
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
jne 0x58b06a
xor ebx, ebx
jmp 0x58b086
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
sub ecx, edi
mov dword [esp + 0x48], ecx
call fcn.0065e6d0
mov ebx, eax
and ebx, 0xf
xor esi, esi
xor ebp, ebp
mov byte [esp + 0x1c], bl
mov byte [esp + 0x17], 0
mov byte [esp + 0x16], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], esi
test bl, 8
je 0x58b0ee
mov edi, 2
cmp dword [esp + 0x48], edi
jge 0x58b0c7
cmp dword [esp + 0x4c], esi
jne 0x58b0c3
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
jne 0x58b0c7
xor eax, eax
jmp 0x58b0e1
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
sub ecx, edi
mov dword [esp + 0x48], ecx
call fcn.0065e6d0
and eax, 3
add bl, bl
add bl, bl
or bl, al
sub bl, 0x18
mov byte [esp + 0x1c], bl
cmp bl, 0x28
jae 0x58b148
movzx edx, bl
mov eax, dword [edx*4 + 0x6b8ff8]
shr eax, 2
mov edi, 1
and eax, edi
je 0x58b148
cmp dword [esp + 0x48], edi
jge 0x58b126
cmp dword [esp + 0x4c], esi
jne 0x58b122
lea ecx, [esp + 0x30]
call fcn.0058ab10
test eax, eax
jne 0x58b126
xor eax, eax
jmp 0x58b13f
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
dec ecx
mov dword [esp + 0x48], ecx
call fcn.0065e6d0
and eax, 1
xor ecx, ecx
cmp eax, esi
setne cl
mov ebp, ecx
mov edx, dword [esp + 0x18]
mov esi, dword [edx]
push ebp
call fcn.0058c920
mov cl, byte [esp + 0x20]
add esp, 4
cmp cl, 0x28
jb 0x58b164
xor edi, edi
jmp 0x58b171
movzx ecx, cl
mov edi, dword [ecx*4 + 0x6b8ff8]
and edi, 3
test eax, eax
je 0x58b1f1
mov esi, dword [esp + 0x1c]
cmp edi, 1
jl 0x58b19a
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x17]
push edx
push eax
push ebp
push esi
lea ebx, [esp + 0x38]
lea eax, [esp + 0x40]
call fcn.0058aca0
add esp, 0x10
test eax, eax
je 0x58b1f1
cmp edi, 2
jne 0x58b1bc
lea ecx, [esp + 0x16]
push ecx
push 0xffffffffffffffff
push ebp
push esi
lea ebx, [esp + 0x34]
lea eax, [esp + 0x40]
call fcn.0058aca0
add esp, 0x10
test eax, eax
je 0x58b1f1
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov bl, byte [esp + 0x16]
mov ecx, dword [ecx]
push edx
mov dl, byte [esp + 0x1b]
push eax
call fcn.0058ca20
add esp, 8
test eax, eax
je 0x58b1f1
inc dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
jmp 0x58b020
push str.Invalid_RAR_program_instruction
push 0xd0
push str..extunarr_rar_filter_rar.c
push 0x9acda0
call fcn.00581520
add esp, 0x10
mov eax, dword [esp + 0x18]
call fcn.0058ac50
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov esi, dword [ebp]
mov eax, dword [esi + 4]
test eax, eax
je 0x58b24d
lea edx, [eax + eax*2]
mov eax, dword [esi]
mov al, byte [eax + edx*4 - 0xc]
cmp al, 0x28
jae 0x58b24d
movzx ecx, al
mov edx, dword [ecx*4 + 0x6b8ff8]
shr edx, 3
and edx, 1
jne 0x58b2d1
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
inc eax
cmp eax, ebx
jb 0x58b29e
lea ebp, [ebx*4]
test ebx, ebx
jne 0x58b268
mov ebp, 0x20
push 0xc
push ebp
call fcn.00658a3b
mov edi, eax
add esp, 8
test edi, edi
je 0x58b20d
mov edx, dword [esi]
lea ecx, [ebx + ebx*2]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push edi
call fcn.0065b3c0
mov eax, dword [esi]
push eax
call fcn.00658a01
mov dword [esi + 8], ebp
mov ebp, dword [esp + 0x28]
add esp, 0x10
mov dword [esi], edi
mov ecx, dword [esi + 4]
mov edx, dword [esi]
xor eax, eax
lea ecx, [ecx + ecx*2]
mov dword [edx + ecx*4], eax
mov dword [edx + ecx*4 + 4], eax
lea ecx, [edx + ecx*4]
mov dword [ecx + 8], eax
mov eax, dword [esi + 4]
mov ecx, dword [esi]
lea eax, [eax + eax*2]
mov byte [ecx + eax*4], 0x16
mov eax, dword [esi + 4]
lea edx, [eax + eax*2]
mov eax, dword [esi]
mov byte [eax + edx*4 + 1], 0
inc dword [esi + 4]
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x44
ret