Function at 0x4088b7
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [ebp - 0x728]
add eax, 1
mov dword [ebp - 0x728], eax
mov ecx, dword [ebp - 0x724]
mov edx, dword [ebp - 0x728]
cmp edx, dword [ecx + 0x18]
jae 0x4086e6
mov eax, dword [ebp - 0x728]
mov ecx, dword [ebp - 0x1900]
mov edx, dword [ebp - 0x304]
add edx, dword [ecx + eax*4]
mov dword [ebp - 0x72c], edx
mov eax, dword [ebp - 0x728]
mov ecx, dword [ebp - 0x1904]
movzx edx, word [ecx + eax*2]
mov eax, dword [ebp - 0x1908]
mov ecx, dword [ebp - 0x304]
add ecx, dword [eax + edx*4]
mov dword [ebp - 0x190c], ecx
mov dword [ebp - 0x18c], 0
jmp 0x40854a
mov edx, dword [ebp - 0x18c]
add edx, 1
mov dword [ebp - 0x18c], edx
mov eax, dword [ebp - 0x72c]
add eax, dword [ebp - 0x18c]
movsx ecx, byte [eax]
test ecx, ecx
je 0x4085fc
mov edx, dword [ebp - 0x18c]
movsx eax, byte [ebp + edx - 0x960]
test eax, eax
je 0x4085fc
push ebx
add ebx, 0xc6db
add ebx, 0x14a3c
add ebx, 0x7e1e
sub ebx, 0x939d
pop ebx
push edx
push ebx
add esp, 4
or edx, 0x127eb
add edx, 0x14df
xor edx, 0x8792
pop edx
mov ecx, dword [ebp - 0x72c]
add ecx, dword [ebp - 0x18c]
movsx edx, byte [ecx]
mov eax, dword [ebp - 0x18c]
movsx ecx, byte [ebp + eax - 0x960]
cmp edx, ecx
je 0x4085ee
mov edx, dword [ebp - 0x72c]
add edx, dword [ebp - 0x18c]
movsx eax, byte [edx]
xor eax, 0x20
mov ecx, dword [ebp - 0x18c]
movsx edx, byte [ebp + ecx - 0x960]
cmp eax, edx
jne 0x4085f5
jmp 0x40853b
jmp 0x4085fc
push esi
xor esi, 0x17e3e
pop esi
push ecx
push eax
add esp, 4
jmp 0x408612
and ecx, 0x14fae
or ecx, 0x1001b
call 0x40862a
add byte [ebx], bh
dec eax
cmp edx, dword [eax + 0x34]
dec edi
add esp, 4
pop ecx
mov eax, dword [ebp - 0x72c]
add eax, dword [ebp - 0x18c]
movsx ecx, byte [eax]
mov edx, dword [ebp - 0x18c]
movsx eax, byte [ebp + edx - 0x960]
cmp ecx, eax
jne 0x40865b
mov dword [ebp - 0xc6c], 0
jmp 0x4086ca
push edx
or edx, 0x137c6
add edx, 0xf3ca
jmp 0x40866e
call 0x40867b
add byte [ebp + 0x3c], cl
inc eax
dec esi
dec esp
inc ecx
add esp, 4
pop edx
push edx
sub edx, 0x135a6
or edx, 0x5821
pop edx
mov ecx, dword [ebp - 0x72c]
add ecx, dword [ebp - 0x18c]
movsx edx, byte [ecx]
or edx, 0x20
mov eax, dword [ebp - 0x18c]
movsx ecx, byte [ebp + eax - 0x960]
or ecx, 0x20
cmp edx, ecx
jge 0x4086c0
mov dword [ebp - 0xc6c], 0xffffffff
jmp 0x4086ca
mov dword [ebp - 0xc6c], 1
cmp dword [ebp - 0xc6c], 0
jne 0x4086e1
mov edx, dword [ebp - 0x190c]
mov dword [ebp - 0x4f0], edx
jmp 0x4086f2
jmp 0x4084cb
mov eax, dword [ebp - 0x730]
mov dword [ebp - 0x4f0], eax
mov ecx, dword [ebp - 0x4f0]
mov dword [ebp - 0xa58], ecx
push eax
or eax, 0x11ad6
jmp 0x40870e
or eax, 0xd981
add eax, 0x1688a
pop eax
push ebx
and ebx, 0x15169
and ebx, 0xc247
jmp 0x40872f
pop ebx
mov edx, dword [ebp - 0xa58]
mov dword [ebp - 0x1910], edx
lea eax, [ebp - 0xc70]
push eax
push 0x40
mov ecx, dword [ebp - 0x158c]
push ecx
mov edx, dword [ebp - 0x3cc]
push edx
call dword [ebp - 0x1910]
test eax, eax
jne 0x4087a3
push edi
or edi, 0x714a
pop edi
push eax
call 0x408772
add byte [esi + 0x3a], cl
inc ebp
cmp al, 0x4c
add esp, 4
xor eax, 0xf974
or eax, 0x14ee8
pop eax
push eax
push esi
add esp, 4
jmp 0x40878e
pop eax
mov eax, dword [ebp - 0x738]
mov dword [ebp - 0x1914], eax
push 0
call dword [ebp - 0x1914]
mov ecx, dword [ebp - 0x1918]
mov dword [ebp - 0x734], ecx
jmp 0x4087c0
mov eax, dword [ebp - 0x734]
cmp eax, dword [ebp - 0xa5c]
jae 0x40881c
push edx
jmp 0x4087d6
call 0x4087e5
add byte [esi], dh
cmp byte [ebx], dh
dec ebp
xor edi, dword [eax + edi]
dec eax
cmp eax, 0x8104c483
ret 0x7bd0
mov edx, dword [ebp - 0xa58]
mov dword [ebp - 0x191c], edx
lea eax, [ebp - 0xc70]
push eax
mov ecx, dword [ebp - 0xc70]
push ecx
mov edx, dword [ebp - 0x158c]
push edx
mov eax, dword [ebp - 0x3cc]
push eax
call dword [ebp - 0x191c]
test eax, eax
jne 0x408894
push esi
or esi, 0xc7f
sub esi, 0x1089e
pop esi
push esi
jmp 0x408866
call 0x408875
add byte [ecx + 0x4c], al
cmp byte [esi + 0x4c], cl
dec edi
push eax
cmp al, byte [ebx - 0x7d]
les eax, [ebx + ebp*8]
add eax, 0x414d4445
dec ecx
pop esi
mov ecx, dword [ebp - 0x738]
mov dword [ebp - 0x1920], ecx
push 0
call dword [ebp - 0x1920]
push ecx
xor ecx, 0x3056
pop ecx
push ecx
jmp 0x4088a4
xor ecx, 0xb41b
call 0x4088b7
add byte [eax], bh
xor al, 0x4e
dec edx
cmp eax, dword [eax + 0x48]
add esp, 4
pop ecx
push edx
push ecx
add esp, 4
jmp 0x4088c5
pop edx
push edx
mov ecx, 0x10101010
pop edx
push ecx
mov ecx, 0xffff01ff
pop ecx
pop eax
or al, 0xa4
cli
add dword [ecx], eax
in al, dx
pop es
inc ebx
dec esi
inc edi
cmp eax, 0xd0823537
mov esp, 0xe9010261
or dword [ecx], eax
add dword [ecx], eax
add dword [edi], esi
inc ebp
dec esp
inc ebx
cmp bh, byte [ebx]
dec ecx
test ch, al
add eax, 0x84515860
lds eax, [0x4eebc882]
add dword [ecx], eax
pushal
mov ebx, 0x101016c
mov dl, byte [bp - 0x1543]
add byte [eax], al
mov ecx, 0x1010166
mov al, byte [bp - 0x1541]
add byte [eax], al
mov edx, 0x1010173
mov cl, byte [bp - 0x153f]
add byte [eax], al
mov ebx, 0x101016f
mov dl, byte [bp - 0x153d]
add byte [eax], al
mov ecx, 0x1010166
mov al, byte [bp - 0x153b]
add byte [eax], al
mov edx, 0x101016d
mov cl, byte [bp - 0x1539]
add byte [eax], al
mov ebx, 0x1010134
mov dl, byte [bp - 0x1537]
add byte [eax], al
mov ecx, 0x1010133
mov al, byte [bp - 0x1535]
add byte [eax], al
mov edx, 0x101012f
mov cl, byte [bp - 0x1533]
add byte [eax], al
mov ebx, 0x1010165
mov dl, byte [bp - 0x1531]
add byte [eax], al
mov ecx, 0x101016d
mov al, byte [bp - 0x152f]
add byte [eax], al
mov edx, 0x101016d
mov cl, byte [bp - 0x152d]
add byte [eax], al
xor al, 0xd3
mov dl, byte [bp - 0x152b]
add byte [eax], al
mov dword [esi + 0xf06d], 0x6e86c748
lock add byte [eax], al
mov word [esi + 0xf06f], 0xc775
xchg byte [eax - 0x10], dh
add byte [eax], al
dec esi
mov dword [esi + 0xf071], 0x7286c770
lock add byte [eax], al
mov dword gs:[esi + 0xf073], 0x7486c776
lock add byte [eax], al
insd dword es:[edi], dx
mov dword [esi + 0xf075], 0x7686c766
lock add byte [eax], al
dec ecx
mov dword [esi + 0xf077], 0x7886c762
lock add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf079], 0x7a86c765
lock add byte [eax], al
insd dword es:[edi], dx
mov dword [esi + 0xf07b], 0x7c86c766
lock add byte [eax], al
pop eax
mov dword [esi + 0xf07d], 0x84515801
lds eax, [0xe429e882]
add dword [ecx], eax
adc al, 0x56
aam 1
add dword [eax + 0x53], esp
push ebx
test ch, al
add eax, 0x829cf382
add al, byte [ecx]
pop ebx
pop eax
or al, 0xc9
add dword fs:[ecx], eax
xor al, 0xe0
push ebp
add al, byte [ecx]
cmp al, 0xdb
jo 0x408a48
add dword [eax - 0x39], esp
xchg byte [ecx + 0x470000f0], bl
mov dword [esi + 0xf09a], 0x9b86c76a
lock add byte [eax], al
outsd dx, dword [esi]
mov dword [esi + 0xf099], 0x9a86c747
lock add byte [eax], al
push 0xffffffffffffffc7
xchg byte [ebx + 0x6f0000f0], bl
mov dword [esi + 0xf09b], 0x9c86c76f
lock add byte [eax], al
mov dword gs:[esi + 0xf09d], 0x9e86c753
lock add byte [eax], al
mov word [esi + 0xf09f], 0xc774
mov dword [esi + 0xf09c], 0x9d86c765
lock add byte [eax], al
push ebx
mov dword [esi + 0xf09e], 0x9f86c766
lock add byte [eax], al
je 0x408a41
xchg byte [eax + 0x700000f0], ah
mov dword [esi + 0xf0a1], 0xa286c776
lock add byte [eax], al
jae 0x408a56
xchg byte [ebx + 0x640000f0], ah
mov dword [esi + 0xf0a4], 0xa586c766
lock add byte [eax], al
pop eax
mov dword [esi + 0xf0a6], 0x84525101
lds eax, [0x1010ce9]
add dword [ecx], eax
dec ecx
inc ebx
add dword [ecx], eax
add dword [ecx + 0x43], ecx
push eax
dec esp
inc esi
dec edx
dec esi
inc ebx
dec esi
test ch, al
add eax, 0x8ec5259
inc ebx
inc eax
dec ecx
cmp al, byte [ebx + 0x40]
dec ebx
pop edx
push edi
push ecx
test ch, al
add eax, 0x4d5007ec
push eax
dec ebp
dec edi
dec eax
cmp byte [eax + 0x5f], dl
mov dword [esi + 0xf0b9], 0xba86c74d
lock add byte [eax], al
jo 0x408ab2
mov dword [esi + 0xf0ba], 0xbb86c770
lock add byte [eax], al
invalid
mov dword [esi + 0xf0bb], 0xbc86c762
lock add byte [eax], al
mov dword gs:[esi + 0xf0bd], 0xbe86c753
lock add byte [eax], al
mov word [esi + 0xf0bf], 0xc774
xchg byte [ebx + 0x620000f0], bh
mov dword [esi + 0xf0bc], 0xbd86c765
lock add byte [eax], al
push ebx
mov dword [esi + 0xf0be], 0xbf86c766
lock add byte [eax], al
je 0x408ad5
xchg al, al
lock add byte [eax], al
jo 0x408adc
xchg cl, al
lock add byte [eax], al
jbe 0x408ae3
xchg dl, al
lock add byte [eax], al
jae 0x408aea
xchg bl, al
lock add byte [eax], al
mov dword fs:[esi + 0xf0c4], 0xc586c766
lock add byte [eax], al
add dword [ebx - 0x14], edx
pop es
cmp byte [ecx], bh
cmp eax, 0x5b363648
push ebx
in al, dx
pop es
inc esi
xor eax, dword [esi + 0x47]
inc esi
inc edi
aaa
cmp byte [edx + 0x24366eb], al
add dword [edx + 0x1c0b6f3], eax
add dword [ebx + 0x51], ebx
push edx
test ch, al
add eax, 0x381c182
add dword [ecx], eax
sub cl, 0x2d
xor eax, 0xc7590102
xchg byte [ebp + 0x540000f0], al
mov dword [esi + 0xf086], 0x8786c76a
lock add byte [eax], al
jnp 0x408b46
mov dword [esi + 0xf088], 0x8986c766
lock add byte [eax], al
push eax
mov dword [esi + 0xf08a], 0x8b86c767
lock add byte [eax], al
push ebx
mov dword [esi + 0xf08c], 0x8d86c766
lock add byte [eax], al
je 0x408b70
xchg byte [eax + 0x660000f0], cl
mov dword [esi + 0xf089], 0x8a86c750
lock add byte [eax], al
mov dword [bp - 0xf75], 0xc7530000
xchg byte [eax + esi*8 - 0x389a0000], cl
xchg byte [ebp + 0x740000f0], cl
mov dword [esi + 0xf08e], 0x8f86c770
lock add byte [eax], al
jbe 0x408b7e
xchg byte [esi + 0x700000f0], cl
mov dword [esi + 0xf08f], 0x9086c776
lock add byte [eax], al
jae 0x408b85
xchg byte [eax + 0x730000f0], dl
mov dword [esi + 0xf091], 0x9286c764
lock add byte [eax], al
mov word [esi + 0xf093], 0x5201
push esp
xchg byte [ecx + 0x640000f0], dl
mov dword [esi + 0xf092], 0x9386c766
lock add byte [eax], al
add dword [edx + 0x54], edx
test ch, al
add eax, 0x3d8f282
add al, byte [ecx]
xor dl, 0x69
leave
add dword [ecx], eax
pop edx
push esp
push edx
test ch, al
add eax, 0x94eaec82
add dword [ecx], eax
sub ah, 3
add al, byte [ecx]
add dword [edx + 0x1f89dc4], eax
add dword [ebx + edx*2 - 0x7e], ebx
retf