Function at 0x57671a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8c
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dl, byte [ecx]
sub dl, 2
mov dword [ebp - 0x40], eax
xor eax, eax
neg dl
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 8]
push ebx
sbb edx, edx
not edx
and edx, dword [0x46a4f8]
shl eax, 4
mov dword [ebp - 0x60], edx
mov edx, dword [ecx + 4]
mov eax, dword [eax + edx + 0xc]
push esi
push edi
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x48], 0x45a5d8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
cmp dword [eax + 8], 0x38
je 0x577d1d
push 0x10
pop eax
call fcn.005c73a6
mov esi, dword [ebp - 8]
mov ebx, esp
mov edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 8]
cmp eax, 6
jge 0x5769fe
cmp eax, 5
jne 0x577bc8
mov eax, dword [ebx + 4]
mov esi, dword [ebx]
xor edi, edi
cmp eax, edi
jne 0x5768dd
mov al, byte [esi + 0x17]
test al, al
jne 0x5767bb
mov eax, dword [esi + 0xc]
mov al, byte [eax + 0x17]
movzx eax, al
dec eax
je 0x576818
sub eax, 3
jne 0x576827
mov eax, dword [esi + 0x10]
cmp eax, 0x408ff4
jne 0x5767e5
mov eax, dword [0x465108]
mov ecx, dword [eax + 8]
mov dword [ebx], ecx
mov eax, dword [eax + 0xc]
mov dword [ebx + 4], eax
jmp 0x5770a6
cmp eax, 0x40901d
jne 0x576801
mov eax, dword [esi + 0x18]
cmp byte [eax + 4], 0
jne 0x57709d
xor eax, eax
inc eax
jmp 0x57709f
cmp eax, 0x418727
jne 0x576827
mov eax, dword [0x465108]
mov eax, dword [eax + 0x38]
mov dword [ebx + 4], edi
jmp 0x5770a4
mov ecx, esi
call fcn.005710f9
test eax, eax
jne 0x577bc1
push edi
mov ecx, esi
call fcn.0057183a
mov esi, eax
inc esi
cmp esi, 1
jne 0x576854
mov eax, dword [ebx]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x576846
mov eax, dword [eax + 0xc]
mov cl, byte [eax + 0x17]
cmp cl, 1
je 0x577bc1
jmp 0x577b28
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
sub eax, dword [ebp - 0x40]
mov ecx, dword [ebp + 0x18]
add eax, dword [ecx]
cmp esi, eax
ja 0x57686d
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x40], esi
jmp 0x5768bc
cmp esi, 0x1001
jae 0x576893
cmp dword [ebp - 0x58], 0x9c40
jae 0x576893
mov eax, esi
add eax, 3
and eax, 0xfffffffc
call fcn.005c73a6
add dword [ebp - 0x58], esi
mov dword [ebp - 0x10], esp
jmp 0x5768bf
cmp dword [ebp - 0x18], 0xc8
je 0x577c3f
push esi
call fcn.005ae7e0
cmp eax, edi
pop ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp + ecx*4 - 0x48c], eax
je 0x577c3f
inc dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x10]
mov ecx, dword [ebx]
call fcn.0057183a
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edi
mov dword [ebx + 8], 4
jmp 0x577bc8
xor edi, edi
mov dword [ebx], 0x45a5d8
mov dword [ebx + 8], edi
cmp dword [esi], edi
mov dword [ebp - 0xc], eax
je 0x576963
jmp 0x576907
cmp edi, 0xfd
jge 0x576913
mov cl, byte [eax]
mov byte [ebp + edi - 0x16c], cl
inc edi
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [esi]
jb 0x5768f1
cmp edi, 0xfd
jl 0x576917
cmp eax, dword [esi]
jb 0x57697f
mov ecx, dword [esi + 4]
push 0
call fcn.0057183a
mov ecx, 0xfd
sub ecx, edi
cmp eax, ecx
ja 0x57697f
mov ecx, dword [esi + 4]
lea eax, [ebp + edi - 0x16c]
push eax
call fcn.0057183a
add edi, eax
movzx eax, word [esi + 0xa]
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
add esi, 0xc
cmp dword [esi], 0
jne 0x576907
jmp 0x576963
cmp edi, 0xfd
jge 0x576971
mov byte [ebp + edi - 0x16c], cl
inc edi
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x576952
cmp edi, 0xfd
jl 0x576976
cmp byte [eax], 0
jne 0x57697f
test edi, edi
jne 0x576993
jmp 0x57697f
add esi, 0xc
cmp dword [esi], 0
jne 0x57697c
cmp byte [esi + 8], 0
jne 0x577d81
jmp 0x577bc8
mov byte [ebp + edi - 0x16c], 0
cmp byte [esi + 8], 0
mov ecx, 0x467ce0
lea eax, [ebp - 0x16c]
je 0x5769d0
push edi
push eax
call fcn.005bda72
test eax, eax
mov dword [esi + 4], eax
je 0x577d81
movzx ecx, byte [esi + 9]
cmp ecx, dword [eax + 0x10]
jl 0x577d81
jmp 0x577c33
push 0
push 3
push edi
push eax
call fcn.0057b24d
test eax, eax
je 0x577e6d
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x5769f0
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
cmp cl, 1
jne 0x577bc8
jmp 0x577a4d
cmp eax, 0x37
jne 0x576f3f
mov eax, dword [ebx]
movzx edi, byte [eax + 9]
cmp edi, dword [ebp - 4]
mov esi, dword [eax + 4]
mov dword [ebp - 0xc], esi
jg 0x577d81
sub dword [ebp - 4], edi
cmp byte [esi + 0x31], 0
je 0x576b6e
mov dword [ebx + 8], 1
mov eax, dword [esi]
mov dword [ebx], eax
lea eax, [ebp - 0x16c]
mov dword [ebx + 4], eax
mov eax, dword [ebx + 0xc]
and dword [ebx + 0xc], 0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 4]
lea eax, [ebp + eax*4 - 0xc8c]
push edi
push eax
push ebx
mov dword [ebp - 0x2c], eax
call dword [esi + 4]
add esp, 0xc
cmp dword [ebp - 4], 0
jne 0x576a82
mov eax, dword [ebp - 8]
cmp dword [eax + 0x18], 0x38
jne 0x576a82
cmp dword [ebp - 0x60], 0
mov dword [ebp - 0x1c], 1
je 0x576a86
mov dword [ebp - 0x64], 1
jmp 0x576a8a
and dword [ebp - 0x1c], 0
and dword [ebp - 0x64], 0
mov edx, dword [ebx + 0xc]
xor edi, edi
inc edi
test edx, edx
je 0x576b1d
cmp edx, dword [ebx]
jne 0x576b03
cmp dword [ebp - 0x64], 0
jne 0x577c4a
mov eax, dword [ebp - 8]
cmp dword [eax + 0x18], 0xc
jne 0x576b01
cmp dword [ebp - 4], 0
je 0x576b01
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax - 4]
cmp dword [eax + 8], 3
jne 0x576b01
mov eax, dword [eax]
mov cl, byte [eax + 0x17]
test cl, cl
jne 0x576ad0
mov eax, dword [eax + 0xc]
mov cl, byte [eax + 0x17]
cmp cl, 1
jne 0x576b01
dec dword [ebp - 4]
mov eax, dword [ebp - 4]
push dword [ebx + 4]
mov esi, dword [ebp + eax*4 - 0xc8c]
mov ecx, dword [esi]
push edx
call fcn.0057b87a
add dword [ebp - 8], 0x10
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [esi]
jmp 0x577a4d
xor edi, edi
cmp dword [ebp - 0x18], 0xc8
je 0x577c71
mov eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48c], edx
mov eax, dword [ebp - 0x34]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
cmp eax, 1
je 0x577bc8
cmp eax, 2
je 0x577bc8
xor ecx, ecx
cmp dword [ebp - 0x64], ecx
jne 0x577c5d
mov eax, dword [ebx]
cmp byte [eax], cl
jne 0x576b54
mov dword [ebx], 0x45a5d8
jmp 0x577bc8
cmp edi, ecx
mov dword [ebp - 0x10], eax
je 0x576e71
xor eax, eax
cmp dword [ebp - 0x1c], ecx
sete al
mov edi, eax
jmp 0x576e71
mov eax, dword [esi + 0xc]
cmp edi, eax
mov dword [ebp - 0x1c], eax
jg 0x576b7b
mov dword [ebp - 0x1c], edi
cmp dword [esi + 0x28], 0
jle 0x576bf7
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x576bde
mov ecx, dword [ebp - 4]
and dword [ebp - 0x38], 0
lea ecx, [ebp + ecx*4 - 0xc8c]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x34]
mov esi, dword [eax]
cmp dword [esi + 8], 3
jne 0x576bce
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 0x38]
cmp word [eax + ecx + 4], 0
jne 0x576bce
mov ecx, dword [esi]
push 1
call fcn.00570fb7
and dword [esi + 4], 0
mov dword [esi], eax
mov dword [esi + 8], 4
add dword [ebp - 0x34], 4
add dword [ebp - 0x38], 0x10
dec dword [ebp - 0x2c]
jne 0x576b9c
mov esi, dword [ebp - 0xc]
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x44]
push eax
push esi
call fcn.0057b764
add esp, 0xc
test eax, eax
je 0x577c71
cmp edi, dword [esi + 0xc]
mov dword [ebp - 0x24], edi
jge 0x576c63
shl edi, 4
mov eax, dword [esi + 8]
add eax, edi
cmp word [eax + 4], 0
je 0x576c18
mov ecx, dword [eax]
and dword [ecx + 0xc], 0
mov byte [ecx + 0x17], 1
movzx ecx, word [eax + 6]
dec ecx
je 0x576c45
dec ecx
je 0x576c36
dec ecx
jne 0x576c55
xor ch, bl
inc eax
or byte [ecx + 0x51], dl
fld qword [eax + 8]
push ecx
push ecx
mov ecx, dword [eax]
fstp qword [esp]
call 0x97f93382
dec eax
neg dword [edi + 0x67]
jl 0x576c24
pop edi
jl 0x576c24
sub byte ds:[edi + 0x4cd793e], ah
scasd eax, dword es:[edi]
push ebp
out dx, al
in eax, dx
dec esi
test dword [edi + edx + 0x37cf2711], edx
pop eax
xor byte [eax - 0x45], dl
sti
call 0x8a44f38a
invalid
push ss
jg 0x576c69
wait
invalid
adc eax, 0x59adf0a
mov esi, 0x4ed7425f
push 0xf67cc44e
add dword [ebx + 0x26245089], edi
jg 0x576ca0
mov dl, 0x47
inc ecx
cmc
aam 0x62
cli
in eax, 0x98
or eax, 0x277af3b0
sbb dl, byte [eax + 0x65]
push esp
inc eax
dec esi
in eax, dx
or eax, 0x18c61a53
invalid
mov eax, dword [0xff469a57]
jbe 0x576c96
push ds
stosd dword es:[edi], eax
add eax, 0xa68f218b
ljmp 0xb79e
xchg esi, esi
les ebp, [edi + 0x30af77bc]
scasb al, byte es:[edi]
or dword [edx + 0x6b], esi
mov bl, 0x4b
in al, 0xfd
pop es
in al, 0x58
ljmp 0x583a
ja 0x576f95
outsd dx, dword [esi]
popfd
pop ds
int3
test bh, 0x74
mov ch, 0xe3
int1
imul dword [ebx]
jne 0x576f25
mov esi, 0x7f2f2413
jmp 0x576fbf
imul esi, dword [eax + 0x64], 0x17028b3f
aas
mov esp, 0x9aaed070
cli
push ecx
mov dword [esi], ecx
lahf
or cl, byte [edi - 0x51b9afdb]
or dword [esp + eax], edi
dec eax
mov dword [esi - 0x6b], ebx
and ch, ah
push ds
std
fcom dword ds:[esi - 0x2cb83686]
imul dword [ecx*2 - 0x2700672b]
retf
sbb al, 0x3c
mov bh, 0xe0
imul esp, dword [eax], 0xf082cbd9
out dx, al
fxch st(3)
xor al, 0xee
inc ebx
mov dl, bl
arpl word [edx + 0x4567d26b], si
fcmovnbe st(0), st(6)
cwde
out 0x82, al
and esi, dword [esi + ecx*4 + 0x4c]
invalid
adc edi, ebp
push cs
push cs
inc esp
adc eax, 0xdaa2afba
pop ds
xchg esi, eax
lcall 0xda07, 0x88daec9c
push esp
mov eax, 0x94bc9b3c
adc ah, byte [ecx]
in al, dx
sub dword [esi + 0x1f], edx
stosb byte es:[edi], al
stosd dword es:[edi], eax
mov eax, dword [0xf4f3c4e]
inc edi
adc ebx, dword [esi]
jmp 0x881f4280
and cl, byte [eax - 0x31]
daa
xlatb
sbb cl, cl
lcall 0x1572, 0x7ef97035
invalid
mov esp, dword [esi - 0x116ad77b]
push edx
cmp dh, byte [ecx + ecx*2 - 0x3fe37f2e]
movsd dword es:[edi], dword [esi]
test al, 9
dec ebx
imul esi, dword [ebx + 0x1eedb1d6], 0x1e85fa83
push ds
hlt
pushfd
jle 0x577aab
jecxz 0x577b5f
xor dword [eax + 0x72178a72], ecx
hlt
mov dl, byte [edi]
jb 0x577b20
aas
xchg ah, ah
pop esi
cmpsd dword [esi], dword es:[edi]
xchg ebp, eax
push edx
jg 0x577b78
jb 0x577abf
jmp 0x577ada
and al, 0xde
cmpsb byte [esi], byte es:[edi]
inc ecx
shr edi, 1
invalid
dec eax
or eax, 0xa7337f30
stosd dword es:[edi], eax
lahf
dec edx
pop ds
les esp, [edi - 0x7c]
arpl cx, cx
or eax, 0x6c3cef9f
aas
lahf
iretd
add dword [0xff8d0e1e], ebx
mov ecx, 0x3fcf0608
in al, 0xd
sti
sti
invalid
or byte [esi], al
iretd
inc ecx
movsd dword es:[edi], dword [esi]
and al, 0xb5
pop edx
jle 0x577c47
lahf
aaa
push ss
int1
loope 0x577c0b
cmp eax, 0xbe930566
std
aad 0x98
sub eax, 0x6c7ddb0f
aam 0x7d
cdq
lcall 0x7817, 0x3e723f23
pop es
invalid
xchg ebx, eax
jl 0x577c37
popfd
sub byte [esi], dh
outsb dx, byte [esi]
xor ecx, dword [ebx - 0x5e]
jns 0x577c58
mov byte [0x32df1679], al
fbstp tbyte [edx]
fild qword [esi - 0x7c10bd6f]
inc edx
out dx, eax
or dword [ecx - 0x4389d8ad], 0x21
pushfd
push edi
dec edi
retf 0xf27f
mov dword [ebx + 0x27], edx
jbe 0x577c0b
and dword [edi + edx*2 - 0xd8035b1], ebx
jge 0x577c3f
or al, 0x89
sub al, 0xe7
and al, byte [esi - 0x70]
inc esi
nop
dec byte [esi + edx*4]
daa
bound ebx, qword [eax + 0xef9e196]
je 0x577ce8
push ebx
adc edx, dword [esi]
cmpsd dword [esi], dword es:[edi]
stc
rcr ebp, cl
add al, 0x20
fld qword [eax]
iretd
xor ecx, ecx
leave
cmp byte [ecx + esi*4 + 0x3520774c], bh
loopne 0x577ce7
mov esp, 0x39b837d7
xchg dword [ebx + 0x59], eax
xchg ebp, eax
imul dword [edi + 0xc]
cmpsd dword [esi], dword es:[edi]
int3
jmp 0x413755d5
fst dword [ecx - 0x50075019]
cmp dword [ecx + ecx*2 + 0x5a], ebp
xor byte [edx - 0x39], ch
inc ebp
xor eax, dword [edx - 0x4b]
push ebp
mov esp, 0x380605de
xchg ebx, eax
cmpsd dword [esi], dword es:[edi]
aas
and dword es:[edx - 0x5a4d8bd2], edi
inc edx
push es
jp 0x577dc5
inc esi
je 0x577e1d
int1
retf 0xbe34
invalid
pushal
mov ch, 0x51
or eax, ecx
ficom word [esi]
or byte [ecx*2 + 0xc0687d3], ch
aaa
fmul qword [edi + 0x2e4067e9]
ret 0x86b1
sahf
daa
out dx, al
not dword [0x3dd7b725]
xchg ecx, eax
push edx
jle 0x577ec1
xor ah, byte [ebx - 0x493b3c39]
push ecx
sbb dword [edi + 0x76d313cf], ebp
xor esi, dword [edx]
dec ebp
push eax
mov ah, 0x48
popal
lcall 0x77e2, 0xf87d20a6
and byte [ebp - 8], bh
loop 0x577ee9
inc edx
aas
push 0xffffffffffffffe2
aas
in eax, 0xd1
adc byte [ebx], cl
aam 0xbf
mov bh, 0x7d
xchg esi, eax
fist word [ebx + 0x53]
pop es
bound edx, qword [edi - 0x55]
lahf
cli
mov dl, 0xde
mov bl, 0xac
jnp 0x577eeb
out 0xac, eax
adc cl, byte [edx - 0x1a]
inc esi
out 0x46, al
sahf
scasd eax, dword es:[edi]
les edi, [edi + esi - 0x63a86427]
push dword [edi]
ror dword [eax], cl
pop edi
pop es
in al, dx
jne 0x577e4a
mov byte [edi - 0x5f48c3fc], dl
retf
push ds
push esp
inc esi
adc al, 0x76
lodsb al, byte [esi]
outsb dx, byte [esi]
mov edx, dword [edi]
jns 0x577e93
lcall 0x1709, 0x4a7fae56
or dword [edi], edx
call 0xe3107146
bound ecx, qword [edi - 0x1d2a04a2]
adc byte [esi + 0x32c40e51], cl
pushfd
je 0x577ed1
adc edi, dword [edi + 0x13]
sbb esi, dword [eax]
mov al, byte [0x5f558af3]
adc ebx, dword [ebx]
xor byte [eax + 0x5f558af3], ah
cwde
int1
mov ebp, 0xe5ff7676
adc al, 0xdf
lahf
push 0x7cb61ab7
adc edi, dword [ebp - 0x46ce0ae]
xor edi, dword [esi - 0x12c363ae]
imul edi, dword [edi + 0x75890c53], 0x7c344bc7
invalid