Function at 0x10c0152
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ebp, dword [esp + 0x44]
movzx edi, word [ebp]
mov dword [esp], 0x393a9d8f
mov dword [esp + 4], 0
mov ecx, 0xcb
mov edx, 0x34
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0xcb]
mov esi, edx
or esi, ebx
not ebx
or ebx, ecx
and ebx, esi
mov al, 8
sub al, bl
mov byte [esp + ecx - 0xcb], al
inc ecx
dec edx
cmp ecx, 0xd3
jne case.default.0x10bfb51
xor ecx, ecx
cmp dword [esp], edi
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x10ca554]
mov ecx, dword [ebp + 0x3c]
mov eax, dword [ebp + ecx]
mov dword [esp], 0xe3e2a450
mov byte [esp + 4], 0
xor edx, edx
nop
nop
nop
mov ebx, edx
add bl, 0xd8
xor bl, byte [esp + edx]
add bl, 0xc8
mov byte [esp + edx], bl
inc edx
cmp edx, 5
jne case.default.0x10bfb8e
xor edx, edx
cmp eax, dword [esp]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x10ca55c]
jmp dword [0x10ca56c]
mov esi, dword [ebp + ecx + 0x78]
mov ecx, dword [ebp + ecx + 0x7c]
mov dword [esp + 0x24], ecx
test ecx, ecx
sete cl
test esi, esi
sete dl
or dl, cl
movzx ecx, dl
jmp dword [ecx*4 + 0x10ca574]
mov eax, dword [ebp + esi + 0x20]
add eax, ebp
mov dword [esp + 0x28], eax
mov eax, dword [case.0x10bfb51.11]
mov ecx, dword [ebp + esi + 0x24]
add ecx, ebp
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp + esi + 0x1c]
add ecx, ebp
mov dword [esp + 0x20], ecx
nop
nop
nop
nop
nop
jmp eax
xor edx, edx
xor ecx, ecx
cmp edx, dword [ebp + esi + 0x18]
setb cl
mov dword [esp + 0x10], 1
mov dword [esp + 0x14], esi
jmp dword [ecx*4 + 0x10ca58c]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + edx*4]
add ecx, ebp
mov edx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
cmp byte [ecx + edx + 1], 0
lea edx, [edx + 1]
lea eax, [eax + 1]
jne 0x10bfc30
mov dword [esp + 0x2c], esi
mov dword [esp + 8], ecx
mov dword [esp], 0xe2e2e073
mov dword [esp + 4], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx]
mov edi, ecx
or edi, 0xeeb78ea8
and edi, ebx
mov eax, edi
and eax, 2
mov ebp, edi
or ebp, 0xfd
inc ebp
mov esi, edi
and esi, 0xffffffad
imul esi, ebp
or edi, 2
imul edi, eax
neg edi
lea eax, [ecx + edi]
add eax, 0xeeb78ea8
add eax, esi
add al, bl
add al, 0xb8
mov byte [esp + ecx], al
mov eax, ecx
xor eax, 0xfffffffe
or ecx, 1
and eax, ecx
add ecx, eax
cmp ecx, 8
jb 0x10bfc60
test edx, edx
je 0x10bfce0
mov eax, dword [esp]
mov esi, eax
not esi
cmp edx, 1
jne 0x10bfcf0
mov ecx, 0x3205b60c
mov ebp, dword [esp + 0x44]
test dl, 1
jne 0x10bfd69
jmp 0x10bfd88
mov ecx, 0x3205b60c
mov ebp, dword [esp + 0x44]
jmp 0x10bfd88
mov dword [esp + 0xc], esi
mov edi, dword [esp + 0x2c]
and edi, 0xfffffffe
mov ecx, 0x3205b60c
mov ebp, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [ebp]
xor ebx, ecx
mov ecx, ebx
and ecx, dword [esp + 0xc]
mov esi, ebx
not esi
and esi, eax
imul esi, ecx
mov ecx, ebx
and ecx, eax
or ebx, eax
imul ebx, ecx
add ebx, esi
movsx ecx, byte [ebp + 1]
add ebp, 2
xor ecx, ebx
mov esi, ecx
and esi, dword [esp + 0xc]
mov ebx, ecx
not ebx
and ebx, eax
imul ebx, esi
mov esi, ecx
and esi, eax
or ecx, eax
imul ecx, esi
add ecx, ebx
add edi, 0xfffffffe
jne 0x10bfd10
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0xc]
test dl, 1
je 0x10bfd88
mov edx, dword [esp + 8]
movsx edx, byte [edx]
xor ecx, edx
and esi, ecx
mov edx, ecx
not edx
and edx, eax
imul edx, esi
mov esi, ecx
and esi, eax
or ecx, eax
imul ecx, esi
add ecx, edx
xor eax, eax
cmp ecx, dword [esp + 0x48]
setne al
jmp dword [eax*4 + 0x10ca594]
mov edx, dword [esp + 0x18]
inc edx
xor ecx, ecx
mov esi, dword [esp + 0x14]
cmp edx, dword [ebp + esi + 0x18]
setb cl
jmp dword [ecx*4 + 0x10ca58c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
movzx eax, word [eax + ecx*2]
mov ecx, dword [case.0x10bfb51.20]
mov esi, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + eax*4]
xor eax, eax
cmp ecx, esi
setae al
jmp dword [eax*4 + 0x10ca5ac]
mov eax, ecx
not eax
and eax, esi
lea edx, [esi + esi]
not edx
add edx, esi
and edx, ecx
sub edx, eax
xor ebx, ebx
cmp edx, dword [esp + 0x24]
setb bl
jmp dword [ebx*4 + 0x10ca5b4]
add ebp, ecx
mov dword [esp + 0x10], 0
mov eax, ebp
mov ecx, dword [case.0x10bfb51.28]
nop
nop
nop
nop
nop
nop
jmp ecx
mov ecx, dword [esp + 0x10]
jmp dword [ecx*4 + 0x10ca5cc]
xor eax, eax
mov ecx, dword [case.0x10bfb51.34]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esp + 0x38]
mov ecx, dword [edx + 0x3c]
mov edx, dword [edx + ecx]
mov dword [esp + 8], edx
mov dword [esp], 0x93924c40
mov word [esp + 4], 0
mov esi, 0xe149f707
mov edi, 0xc293ee0e
nop
nop
movzx ebx, byte [esp + esi + 0x1eb608f9]
mov ebp, esi
xor ebp, 0xbf9216ab
mov edx, edi
and edx, 0x8093c208
sub edx, ebp
mov ebp, ebx
and ebp, edx
add ebp, ebp
sub edx, ebp
add dl, bl
add dl, 0x34
mov byte [esp + esi + 0x1eb608f9], dl
inc esi
add edi, 2
cmp esi, 0xe149f70d
jne 0x10bfee0
xor edx, edx
mov esi, dword [esp + 8]
cmp esi, dword [esp]
setne dl
jmp dword [edx*4 + 0x10ca5ec]
mov esi, dword [esp + 0x38]
mov edx, dword [esi + ecx + 0x80]
cmp dword [esi + ecx + 0x84], 0
sete cl
test edx, edx
sete ch
or ch, cl
movzx ecx, ch
jmp dword [ecx*4 + 0x10ca5f4]
mov ecx, dword [esp + 0x38]
mov edi, dword [ecx + edx]
add edi, ecx
mov edx, dword [ecx + edx + 0x10]
add edx, ecx
mov dword [esp + 0x14], edx
add ecx, 2
mov dword [esp + 0x20], ecx
mov ebx, dword [edi]
mov ecx, ebx
xor ecx, 0x7fffffff
mov esi, ebx
or esi, 0x80000000
xor edx, edx
test esi, ecx
mov esi, dword [case.0x10bfb51.54]
setne dl
mov dword [esp + 0x18], esi
jmp dword [edx*4 + 0x10ca60c]
jmp dword [0x10ca604]
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
add dword [esp + 0x14], 4
mov edi, dword [esp + 8]
add edi, 4
mov ecx, 1
mov eax, dword [esp + 0x1c]
jmp dword [ecx*4 + 0x10ca634]
mov ebx, dword [edi]
mov eax, ebx
xor eax, 0x7fffffff
mov ecx, ebx
or ecx, 0x80000000
xor edx, edx
test ecx, eax
setne dl
xor eax, eax
jmp dword [edx*4 + 0x10ca60c]
xor ecx, ecx
test ebx, ebx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x10ca614]
mov dword [esp + 8], edi
add ebx, dword [esp + 0x20]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
inc ecx
cmp byte [ebx + eax], 0
jne 0x10c0010
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ebx
mov dword [esp], 0xe2e2e073
mov dword [esp + 4], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx]
mov edi, edx
or edi, 0xeeb78ea8
and edi, ebx
mov ecx, edi
and ecx, 2
mov ebp, edi
or ebp, 0xfd
inc ebp
mov esi, edi
and esi, 0xffffffad
imul esi, ebp
or edi, 2
imul edi, ecx
neg edi
lea ecx, [edx + edi]
add ecx, 0xeeb78ea8
add ecx, esi
add cl, bl
add cl, 0xb8
mov byte [esp + edx], cl
mov ecx, edx
xor ecx, 0xfffffffe
or edx, 1
and ecx, edx
add edx, ecx
cmp edx, 8
jb 0x10c0040
mov edi, 0x3205b60c
mov ebp, dword [esp + 0x10]
cmp ebp, 1
mov esi, dword [esp + 0x18]
je 0x10c0134
lea ebx, [ebp - 1]
mov ecx, dword [esp]
mov edx, ecx
not edx
cmp ebp, 2
je 0x10c0110
mov dword [esp + 0x10], ebx
and eax, 0xfffffffe
mov ebp, dword [esp + 0xc]
movsx esi, byte [ebp]
xor esi, edi
mov edi, esi
and edi, edx
mov ebx, esi
not ebx
and ebx, ecx
imul ebx, edi
mov edi, esi
and edi, ecx
or esi, ecx
imul esi, edi
add esi, ebx
movsx edi, byte [ebp + 1]
add ebp, 2
xor edi, esi
mov esi, edi
and esi, edx
mov ebx, edi
not ebx
and ebx, ecx
imul ebx, esi
mov esi, edi
and esi, ecx
or edi, ecx
imul edi, esi
add edi, ebx
add eax, 0xfffffffe
jne 0x10c00c0
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
test bl, 1
je 0x10c0134
mov eax, dword [esp + 0xc]
movsx eax, byte [eax]
xor edi, eax
and edx, edi
mov eax, edi
not eax
and eax, ecx
imul eax, edx
mov edx, edi
and edx, ecx
or edi, ecx
imul edi, edx
add edi, eax
xor eax, eax
cmp edi, dword [esp + 0x3c]
sete al
jmp dword [eax*4 + 0x10ca61c]
jmp esi
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 8]
jmp dword [ecx*4 + 0x10ca634]
mov ecx, dword [ebp + 0x3c]
lea edx, [ecx + ebp]
mov ecx, dword [ebp + ecx]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], 0x191a504c
mov byte [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 4]
mov edi, ecx
xor edi, 0x7497fd46
mov ebp, eax
and ebp, 2
sub ebp, edi
mov edi, ebp
and edi, 0x240023b
xor ebp, 0xd643073b
lea edi, [edi*2 + 0x7497fd46]
add edi, ebp
xor edi, esi
mov esi, 1
sub esi, edi
not esi
or esi, edi
and esi, 1
xor edi, 1
lea ebx, [edi + esi*2]
add bl, 0xd8
mov byte [esp + ecx + 4], bl
inc ecx
add eax, 2
cmp ecx, 5
jne case.default.0x10c0250
xor ecx, ecx
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 4]
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x10ca654]
movzx eax, word [edx + 0x14]
lea ebp, [edx + eax]
add ebp, 0x18
movzx ecx, word [edx + 6]
xor esi, esi
xor eax, eax
cmp si, cx
setb al
mov dword [esp], 1
mov word [esp + 0xc], cx
jmp dword [eax*4 + 0x10ca65c]
mov ecx, 8
mov edi, dword [esp + 0x28]
mov eax, ebp
nop
nop
nop
nop
nop
sub ecx, 1
jb 0x10c02c0
movzx ebx, byte [edi]
inc edi
movzx edx, byte [eax]
inc eax
cmp bl, dl
je 0x10c02a0
sub ebx, edx
jmp 0x10c02c2
xor ebx, ebx
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x10ca664]
add ebp, 0x28
inc esi
xor eax, eax
movzx ecx, word [esp + 0xc]
cmp si, cx
setb al
jmp dword [eax*4 + 0x10ca65c]
xor eax, eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
setne al
jmp dword [eax*4 + 0x10ca66c]
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp], 0
jmp dword [eax*4 + 0x10ca684]
mov eax, dword [esp + 0x24]
add eax, dword [ebp + 0xc]
mov dword [ecx], eax
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp], 0
jmp dword [eax*4 + 0x10ca684]
mov eax, dword [ebp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x30]
mov dword [ecx], eax
mov dword [esp], 0
jmp dword [0x10ca698]
mov eax, dword [esp]
jmp dword [eax*4 + 0x10ca69c]
mov al, 1
jmp 0x10c0363
xor eax, eax
mov ecx, dword [case.0x10c0250.0]
nop
nop
nop
nop
nop
nop
nop
jmp ecx
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
sti
or eax, dword [ecx]
das
dec byte [ebx]
add dword [eax + 0x2f010bfb], esp
dec byte [ebx]
add dword [eax - 0x5ffef405], esp
sti
or eax, dword [ecx]
cmpsb byte [esi], byte es:[edi]
sti
or eax, dword [ecx]
mov al, byte [0xc8010bfb]
sti
or eax, dword [ecx]
das
dec byte [ebx]
add eax, esi
sti
or eax, dword [ecx]
invalid