Function at 0x7c8ec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x24], 0x9e3779b9
mov dword [esp + 0x28], 0x7f4a7c13
mov esi, ebp
mov ebx, edx
cmp eax, 0x18
jb 0x7c91e2
nop word cs:[eax + eax]
mov dword [esp + 0x10], eax
mov ecx, edi
mov dword [esp + 0x14], ecx
add esi, dword [ecx]
adc ebx, dword [ecx + 4]
add ebp, dword [ecx + 8]
adc edx, dword [ecx + 0xc]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x28]
add eax, dword [ecx + 0x10]
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x24]
adc edi, dword [ecx + 0x14]
sub esi, ebp
sbb ebx, edx
sub esi, eax
sbb ebx, edi
mov dword [esp + 4], edi
mov dword [esp], eax
mov dword [esp + 8], 0x2b
call fcn.007cbeb0
sub esp, 0xc
xor edx, ebx
mov dword [esp + 0x24], edx
mov ebx, eax
xor ebx, esi
mov dword [esp + 0x1c], ebx
sub ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
sbb ecx, edi
sub ebp, ebx
sbb ecx, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 8], 9
call fcn.007cbf30
sub esp, 0xc
mov esi, eax
xor edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
xor esi, ebp
mov eax, dword [esp + 0x28]
sub eax, ebx
sbb edi, dword [esp + 0x24]
sub eax, esi
mov dword [esp + 0x28], eax
mov ebp, edx
sbb edi, ebp
mov dword [esp + 4], ebp
mov dword [esp], esi
mov dword [esp + 8], 8
call fcn.007cbeb0
sub esp, 0xc
mov ebx, edx
xor ebx, edi
mov edi, eax
xor edi, dword [esp + 0x28]
mov dword [esp + 0x28], edi
mov ecx, dword [esp + 0x1c]
sub ecx, esi
mov edx, dword [esp + 0x24]
sbb edx, ebp
sub ecx, edi
mov dword [esp + 0x1c], ecx
sbb edx, ebx
mov dword [esp + 0x24], edx
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esp + 8], 0x26
call fcn.007cbeb0
sub esp, 0xc
mov ebp, edx
xor ebp, dword [esp + 0x24]
mov ecx, eax
xor ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], ecx
sub esi, edi
mov eax, dword [esp + 0x20]
sbb eax, ebx
sub esi, ecx
mov dword [esp + 0x20], esi
sbb eax, ebp
mov edi, eax
mov dword [esp + 4], ebp
mov dword [esp], ecx
mov dword [esp + 8], 0x17
call fcn.007cbf30
sub esp, 0xc
mov esi, edx
xor esi, edi
xor eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x28]
sub ecx, dword [esp + 0x24]
sbb ebx, ebp
sub ecx, eax
mov dword [esp + 0x28], ecx
sbb ebx, esi
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 8], 5
call fcn.007cbeb0
sub esp, 0xc
mov edi, edx
xor edi, ebx
mov ebx, eax
xor ebx, dword [esp + 0x28]
mov dword [esp + 0xc], ebx
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x20]
sbb ebp, esi
sub eax, ebx
mov dword [esp + 0x24], eax
sbb ebp, edi
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], 0x23
call fcn.007cbeb0
sub esp, 0xc
xor edx, ebp
mov dword [esp + 0x28], edx
mov ecx, eax
xor ecx, dword [esp + 0x24]
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x20]
sub eax, ebx
sbb esi, edi
sub eax, ecx
mov dword [esp + 0x20], eax
sbb esi, edx
mov dword [esp + 4], edx
mov dword [esp], ecx
mov ebx, ecx
mov dword [esp + 8], 0x31
call fcn.007cbf30
sub esp, 0xc
mov ebp, eax
xor edx, esi
mov dword [esp + 0x1c], edx
xor ebp, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
sub eax, ebx
sbb edi, dword [esp + 0x28]
sub eax, ebp
mov ebx, eax
mov esi, edx
sbb edi, esi
mov dword [esp + 4], esi
mov dword [esp], ebp
mov dword [esp + 8], 0xb
call fcn.007cbeb0
sub esp, 0xc
xor edx, edi
mov dword [esp + 0x24], edx
xor eax, ebx
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x18]
sub edi, ebp
mov ecx, dword [esp + 0x28]
sbb ecx, esi
sub edi, eax
mov dword [esp + 0x18], edi
sbb ecx, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
mov edi, eax
mov dword [esp + 8], 0xc
call fcn.007cbeb0
sub esp, 0xc
mov esi, eax
mov ebx, edx
xor ebx, dword [esp + 0x28]
xor esi, dword [esp + 0x18]
sub ebp, edi
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x24]
sub ebp, esi
mov dword [esp + 0x28], ebp
sbb eax, ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], 0x12
call fcn.007cbf30
sub esp, 0xc
mov ebp, eax
mov edi, edx
xor edi, dword [esp + 0x1c]
xor ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
sub eax, esi
mov ecx, dword [esp + 0x24]
sbb ecx, ebx
sub eax, ebp
mov dword [esp + 0x20], eax
sbb ecx, edi
mov dword [esp + 0x24], ecx
mov dword [esp + 4], edi
mov dword [esp], ebp
mov dword [esp + 8], 0x16
call fcn.007cbeb0
sub esp, 0xc
xor edx, dword [esp + 0x24]
mov dword [esp + 0x24], edx
mov edx, edi
mov edi, dword [esp + 0x14]
xor eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
add edi, 0x18
add eax, 0xffffffe8
cmp eax, 0x17
ja 0x7c8f00
mov ecx, dword [esp + 0x44]
add dword [esp + 0x28], ecx
adc dword [esp + 0x24], 0
dec eax
cmp eax, 0x16
ja case.default.0x7c91fd
mov dword [esp + 0x20], edx
jmp dword [eax*4 + 0x7f3e3c]
movzx eax, byte [edi + 0x16]
mov dword [esp], eax
mov dword [esp + 8], 0x38
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x15]
mov dword [esp], eax
mov dword [esp + 8], 0x30
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x14]
mov dword [esp], eax
mov dword [esp + 8], 0x28
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x13]
mov dword [esp], eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x12]
mov dword [esp], eax
mov dword [esp + 8], 0x18
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x11]
mov dword [esp], eax
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0x10]
mov dword [esp], eax
mov dword [esp + 8], 8
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add dword [esp + 0x28], eax
adc dword [esp + 0x24], edx
movzx eax, byte [edi + 0xf]
mov dword [esp], eax
mov dword [esp + 8], 0x38
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 0xe]
mov dword [esp], eax
mov dword [esp + 8], 0x30
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 0xd]
mov dword [esp], eax
mov dword [esp + 8], 0x28
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 0xc]
mov dword [esp], eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 0xb]
mov dword [esp], eax
mov dword [esp + 8], 0x18
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 0xa]
mov dword [esp], eax
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 9]
mov dword [esp], eax
mov dword [esp + 8], 8
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add ebp, eax
adc dword [esp + 0x20], edx
movzx eax, byte [edi + 8]
add ebp, eax
adc dword [esp + 0x20], 0
movzx eax, byte [edi + 7]
mov dword [esp], eax
mov dword [esp + 8], 0x38
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 6]
mov dword [esp], eax
mov dword [esp + 8], 0x30
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 5]
mov dword [esp], eax
mov dword [esp + 8], 0x28
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 4]
mov dword [esp], eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 3]
mov dword [esp], eax
mov dword [esp + 8], 0x18
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 2]
mov dword [esp], eax
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi + 1]
mov dword [esp], eax
mov dword [esp + 8], 8
mov dword [esp + 4], 0
call fcn.007cbf30
sub esp, 0xc
add esi, eax
adc ebx, edx
movzx eax, byte [edi]
add esi, eax
adc ebx, 0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x20], ebp
sub esi, ebp
sbb ebx, edx
mov eax, dword [esp + 0x28]
sub esi, eax
mov edi, dword [esp + 0x24]
sbb ebx, edi
mov dword [esp + 4], edi
mov dword [esp], eax
mov dword [esp + 8], 0x2b
mov ebp, edx
call fcn.007cbeb0
sub esp, 0xc
mov ecx, esi
mov esi, edx
xor esi, ebx
mov ebx, eax
xor ebx, ecx
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x28]
sbb ebp, edi
sub ecx, ebx
mov dword [esp + 0x20], ecx
sbb ebp, esi
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 8], 9
call fcn.007cbf30
sub esp, 0xc
xor edx, ebp
mov dword [esp + 0x1c], edx
xor eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x28]
sub ecx, ebx
sbb edi, esi
sub ecx, eax
mov dword [esp + 0x28], ecx
mov ebp, edx
sbb edi, ebp
mov dword [esp + 4], ebp
mov dword [esp], eax
mov dword [esp + 8], 8
call fcn.007cbeb0
sub esp, 0xc
mov ebx, edx
xor ebx, edi
mov edi, eax
xor edi, dword [esp + 0x28]
mov dword [esp + 0x28], edi
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x20]
sbb esi, ebp
sub eax, edi
mov dword [esp + 0x18], eax
sbb esi, ebx
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esp + 8], 0x26
call fcn.007cbeb0
sub esp, 0xc
mov ebp, edx
xor ebp, esi
mov edx, eax
xor edx, dword [esp + 0x18]
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x20]
sub eax, edi
mov ecx, dword [esp + 0x1c]
sbb ecx, ebx
sub eax, edx
mov dword [esp + 0x20], eax
sbb ecx, ebp
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], ebp
mov dword [esp], edx
mov edi, edx
mov dword [esp + 8], 0x17
call fcn.007cbf30
sub esp, 0xc
mov esi, edx
xor esi, dword [esp + 0x1c]
mov ecx, eax
xor ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x28]
sub eax, edi
sbb ebx, ebp
sub eax, ecx
mov dword [esp + 0x28], eax
sbb ebx, esi
mov dword [esp + 4], esi
mov dword [esp], ecx
mov dword [esp + 8], 5
call fcn.007cbeb0
sub esp, 0xc
mov edi, edx
xor edi, ebx
mov ecx, eax
xor ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x20]
sbb ebp, esi
sub eax, ecx
mov dword [esp + 0x24], eax
sbb ebp, edi
mov dword [esp + 4], edi
mov dword [esp], ecx
mov dword [esp + 8], 0x23
call fcn.007cbeb0
sub esp, 0xc
mov ebx, edx
xor ebx, ebp
mov ecx, eax
xor ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x28]
sbb esi, edi
sub eax, ecx
mov dword [esp + 0x20], eax
sbb esi, ebx
mov dword [esp + 4], ebx
mov dword [esp], ecx
mov dword [esp + 8], 0x31
call fcn.007cbf30
sub esp, 0xc
mov ebp, edx
xor ebp, esi
mov ecx, eax
xor ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x24]
sbb edi, ebx
sub eax, ecx
mov dword [esp + 0x28], eax
sbb edi, ebp
mov dword [esp + 4], ebp
mov dword [esp], ecx
mov dword [esp + 8], 0xb
call fcn.007cbeb0
sub esp, 0xc
mov esi, edx
xor esi, edi
mov ecx, eax
xor ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x20]
sbb ebx, ebp
sub eax, ecx
mov dword [esp + 0x24], eax
sbb ebx, esi
mov dword [esp + 4], esi
mov dword [esp], ecx
mov dword [esp + 8], 0xc
call fcn.007cbeb0
sub esp, 0xc
mov edi, eax
xor edx, ebx
mov dword [esp + 0x28], edx
xor edi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
sub eax, ebx
sbb ebp, esi
sub eax, edi
mov dword [esp + 0x20], eax
sbb ebp, edx
mov dword [esp + 4], edx
mov dword [esp], edi
mov dword [esp + 8], 0x12
call fcn.007cbf30
sub esp, 0xc
xor edx, ebp
xor eax, dword [esp + 0x20]
sub ebx, edi
sbb esi, dword [esp + 0x28]
sub ebx, eax
sbb esi, edx
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 8], 0x16
call fcn.007cbeb0
sub esp, 0xc
xor edx, esi
xor eax, ebx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret