Function at 0x59015c
Capabilities:
Encode data using xor

Disassembly:
push 0x580a7
call 0x59015c
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
imul esp, dword [ebp + 0x72], 0x6e
insb byte es:[edi], dx
xor esi, dword [edx]
insb byte es:[edi], dx
insb byte es:[edi], dx
add byte [edi + 0x65], al
je 0x590093
insd dword es:[edi], dx
jo 0x590093
popal
je 0x5900ae
inc ecx
add byte [ebx + 0x72], al
popal
je 0x5900b3
inc esi
imul ebp, dword [ebp + 0x41], 0x65724300
popal
je 0x5900bf
inc esi
imul ebp, dword [ebp + 0x4d], 0x69707061
outsb dx, byte [esi]
inc ecx
add byte [ebp + 0x61], cl
jo 0x5900c1
imul esp, dword [ebp + 0x77], 0x6946664f
insb byte es:[edi], dx
add byte gs:[ebp + 0x6e], dl
insd dword es:[edi], dx
popal
jo 0x5900d1
imul esp, dword [ebp + 0x77], 0x6946664f
insb byte es:[edi], dx
add byte gs:[ebx + 0x6c], al
outsd dx, dword [esi]
jae 0x5900ef
dec eax
popal
outsb dx, byte [esi]
insb byte es:[edi], dx
add byte gs:[edi + ebp*2 + 0x61], cl
popal
dec esp
imul esp, dword [edx + 0x72], 0x41797261
add byte [ebp + 0x78], al
imul esi, dword [eax + edx*2 + 0x72], 0x7365636f
jae 0x5900aa
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [esi + 0x32], dl
xor dh, byte [eax]
xor dword [ecx], esi
xor byte [0x452e3831], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
push esi
xor dh, byte [edx]
xor byte [ecx], dh
xor dword [eax], esi
xor eax, 0x452e3831
push eax
inc ebp
add byte [eax], al
add byte [ebp + 0x6e], al
arpl word [edx + 0x79], si
jo 0x5901bf
push eax
inc ebp
pop edi
dec ecx
outsb dx, byte [esi]
imul esi, dword [eax + eax], 0xc1000000
add dword [eax], eax
add byte [eax], al
pop ebp
pop edi
mov eax, dword [ebp]
cmp eax, 0
jne 0x5902f1
mov eax, ebp
add eax, 0x24
push eax
call dword [edi + ebp]
mov dword [ebp], eax
mov eax, ebp
add eax, 0x3e
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 8], eax
mov eax, ebp
add eax, 0x31
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 4], eax
mov eax, ebp
add eax, 0x4a
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 0xc], eax
mov eax, ebp
add eax, 0x87
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 0x1c], eax
mov eax, ebp
add eax, 0x6b
push eax
push dword [ebp]
jne 0x5901c1
call dword [edi + ebp + 4]
mov dword [ebp + 0x14], eax
mov eax, ebp
add eax, 0x5d
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 0x10], eax
mov eax, ebp
add eax, 0x94
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 0x20], eax
mov eax, ebp
add eax, 0x7b
push eax
push dword [ebp]
call dword [edi + ebp + 4]
mov dword [ebp + 0x18], eax
mov eax, ebp
add eax, 0x24
push eax
push 0x104
call dword [ebp + 4]
cmp eax, 4
jl 0x590318
add eax, ebp
add eax, 0x23
mov dl, byte [eax]
cmp dl, 0x5c
je 0x590221
inc eax
mov byte [eax], 0x5c
xor ecx, ecx
mov dl, byte [ecx + ebp + 0x129]
mov byte [ecx + eax + 1], dl
cmp dl, 0
je 0x590236
inc ecx
jmp 0x590223
mov eax, dword [ebp + 0x149]
cmp eax, 0
je 0x5902cc
push 0
push 0x80
push 4
push 0
push 0
push 0xc0000000
mov eax, ebp
add eax, 0x24
push eax
call dword [ebp + 8]
cmp eax, 0xffffffff
je 0x5902cc
push eax
push 0
mov ecx, dword [ebp + 0x149]
push ecx
push 0
push 4
push 0
push eax
call dword [ebp + 0xc]
cmp eax, 0
je 0x5902c9
push eax
mov ecx, dword [ebp + 0x149]
push ecx
push 0
push 0
push 0xf001f
push eax
call dword [ebp + 0x10]
cmp eax, 0
je 0x5902c6
push eax
mov ecx, dword [ebp + 0x14d]
mov esi, ebp
add esi, 0x152
add esi, ecx
mov ecx, dword [ebp + 0x149]
mov dh, byte [ebp + 0x151]
mov dl, byte [esi]
xor dl, dh
mov byte [eax], dl
inc esi
inc eax
dec ecx
cmp ecx, 0
jne 0x5902b5
call dword [ebp + 0x14]
call dword [ebp + 0x18]
call dword [ebp + 0x18]
mov eax, ebp
add eax, 0x24
push eax
call dword [ebp + 0x1c]
cmp eax, 0
je 0x590318
mov ebx, eax
mov eax, ebp
add eax, 0x13a
push eax
push ebx
call dword [edi + ebp + 4]
cmp eax, 0
je 0x590318
add al, 0x83
clc
add byte [edx + ebp - 0x77], dh
inc ebp
mov dword [ebp], eax
add byte [ecx + 0x52c381eb], cl
add dword [eax], eax
add byte [ebx + 0x14d8d], cl
add byte [ecx], al
retf
mov ebx, ebp
add ebx, 0x152
mov ecx, dword [ebp + 0x14d]
add ebx, ecx
mov ecx, dword [ebp + 0x149]
add ebx, ecx
push ebx
jmp 0x590316
ret
call eax
push 0
call dword [ebp + 0x20]
sbb al, byte [eax]
inc eax
add byte [ebx + 1], ch
add byte [eax], al
sti
push ecx
add eax, 0xb3841800
dec ebp
xchg esi, eax
mov byte [esp + esi*4 - 0x79ea91fc], 1
push ebx
mov edi, 0xc85de892
movsb byte es:[edi], byte [esi]
mov byte [ebx - 0x1c], al
pop ecx
or cl, 0x8c
xor al, 0xb2
mov bl, 0xf5
jo 0x5902f0
in eax, dx
int 9
sal dword [esi + 0x4ba77b0d], 0xd5
shl dword [eax - 0x4f], 0x8d
nop
inc esi
mov eax, edi
jns 0x590315
jl 0x590393
jno 0x5902e8
clc
invalid
or eax, 0x7f90ad22
lahf
sti
inc esp
inc esi
hlt
jmp 0x5e58c7
pushal
jmp 0x5e58d2
pushfd
jmp 0x5e58d5
push dword fs:[0]
jmp 0x5e58e3
jmp 0x5e58e6
jmp section.EPE1